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 59270c54 for ; Tue, 28 Jan 2020 17:04:45 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============0946981468310298198==" MIME-Version: 1.0 Subject: Re: [PR PATCH] [Updated] [WIP] qt5 update to 5.14.0 To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 28 Jan 2020 18:04:45 +0100 Message-ID: <20200128170445.i9SCZQLy4ipBfFkZBdedo170rOL1bbtOdlfTlem9yRs@z> GitHub notification mails are now in MIME to allow UTF8. --===============0946981468310298198== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgSm9obm55bmF0b3IgYWdhaW5zdCBt YXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29t L0pvaG5ueW5hdG9yL3ZvaWQtcGFja2FnZXMgcXQ1LjE0Cmh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8xNTMxMAoKW1dJUF0gcXQ1IHVwZGF0ZSB0byA1LjE0 LjAKIyBUZXN0ZWQgb24NCi0gWyBdIHg4Nl82NCAoY29tcGlsZWQgYW5kIHJ1bnRpbWUpDQotIFsg XSB4ODZfNjQtbXVzbCAoY29tcGlsZWQsIHdlYmVuZ2luZSBzZWVtcyB0byB3b3JrIGh0dHBzOi8v aS5pbWd1ci5jb20vMGpwT0JldC5wbmcgKHNlZ2ZhdWx0cyB3aXRoIHNuZGlvICg/KSBhbHNvIGN1 cnJlbnRseSB0cmllcyB0byBmZXRjaCByZXNvdXJjZXMgZnJvbSBgL3NoYXJlYCBpbnN0ZWFkIG9m IGAvdXNyL3NoYXJlYCwgbmVlZHMgdG8gYmUgZml4ZWQuKQ0KLSBbIF0gaTY4NiAoKQ0KLSBbIF0g YXJtdjdsLW11c2wNCi0gWyBdIGFybXY3bCANCi0gWyBdIGFybXY2bC1tdXNsDQotIFsgXSBhcm12 NmwgKGNvbXBpbGVkIHdpdGhvdXQgd2ViZW5naW5lKQ0KLSBbIF0gYWFyY2g2NC1tdXNsIChjb21w aWxlZCkNCi0gWyBdIGFhcmNoNjQNCi0gWyBdIHBwYzY0bGUNCi0gWyBdIHBwYzY0bGUtbXVzbA0K LSBbIF0gcHBjNjQNCi0gWyBdIHBwYzY0LW11c2wNCi0gWyBdIHBwYw0KLSBbIF0gcHBjLW11c2wN CiMgVE9ETzoNCg0KLSBmaXggY3Jvc3MgKGZvciBzb21lIHFtYWtlIHBhY2thZ2VzKQ0KLSByZWJh c2Ugd2ViZW5naW5lIHBwYyBwYXRjaGVzIEBxNjYgDQotIGAtbm8tZmVhdHVyZS1xZG9jYCBpbnN0 ZWFkIG9mIGN1c3RvbSBgcXR0b29scy9zcmMvc3JjLnByb2AgPw0KLSBmaXggd2ViZW5naW5lIGxv YWRpbmcgcmVzb3VyY2VzIGZyb20gYC9zaGFyZWAgaW5zdGVhZCBvZiBgL3Vzci9zaGFyZWANCg0K IyBCdWdzDQoNCi0gd2ViZW5naW5lIGN1cnJlbnRseSB0cmllcyB0byBmZXRjaCByZXNvdXJjZXMg ZnJvbSBgL3NoYXJlYCBpbnN0ZWFkIG9mIGAvdXNyL3NoYXJlDQotIFBsYXNtYXNoZWxsIHdheWxh bmQgb24gbXVzbCBjcmFzaGVzIHJlZ3VsYXJ5IAoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzE1MzEwLnBhdGNoIGlzIGF0 dGFjaGVk --===============0946981468310298198== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt5.14-15310.patch" RnJvbSBhMTYyNGM0YTFhOTcyZTNmZTE1M2UwOGU1ZTUwOTRiMmU0NzRiZmY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBGcmksIDEx IE9jdCAyMDE5IDAwOjU5OjE4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8xMF0gcXQ1OiB1cGRh dGUgdG8gNS4xNC4xCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMzMgKy0KIHNyY3BrZ3Mve3F0NS13ZWJlbmdpbmUgPT4gcXQ1LWJhc2UtZG9j c30gICAgICB8ICAgIDAKIHNyY3BrZ3MvcXQ1LWNvbmN1cnJlbnQgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDEgKwogc3JjcGtncy9xdDUtY29yZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMSArCiBzcmNwa2dzL3F0NS1kYnVzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxICsKIHNyY3BrZ3MvcXQ1LWd1aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwogc3JjcGtncy9xdDUtbmV0d29yayAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMSArCiBzcmNwa2dzL3F0NS1vcGVuZ2wgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAxICsKIHNyY3BrZ3MvcXQ1LXByaW50c3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDEgKwogc3JjcGtncy9xdDUtcXVpY2t0aW1lbGluZSAgICAgICAgICAgICAgICAgICAgIHwg ICAgMSArCiBzcmNwa2dzL3F0NS1zcWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAxICsKIHNyY3BrZ3MvcXQ1LXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDEgKwogc3JjcGtncy9xdDUtd2lkZ2V0cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MSArCiBzcmNwa2dzL3F0NS14bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAx ICsKIC4uLi8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2ggICAgICB8ICAgMTAg LQogc3JjcGtncy9xdDUvZmlsZXMvcW1sY2FjaGVnZW4ucHJvICAgICAgICAgICAgIHwgICAzOCAr CiBzcmNwa2dzL3F0NS9maWxlcy9xbWxpbXBvcnRzY2FubmVyLnBybyAgICAgICAgfCAgICAyICsK IHNyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGxpbnQucHJvICAgICAgICAgICAgICAgICB8ICAgMTcgKy0K IHNyY3BrZ3MvcXQ1L2ZpbGVzL3F0dG9vbHNfc3JjLnBybyAgICAgICAgICAgICB8ICAgMTggKy0K IHNyY3BrZ3MvcXQ1L2ZpbGVzL3Jlc29sdl9jb21wYXQuaCAgICAgICAgICAgICB8ICAgMjkgLQog c3JjcGtncy9xdDUvZmlsZXMvdWljLnBybyAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBz cmNwa2dzL3F0NS9maWxlcy91aXRvb2xzLnBybyAgICAgICAgICAgICAgICAgfCAgIDE1ICsKIHNy Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMS1tdXNsLWFkZGxyLnBhdGNoICAgICB8ICAgMjMgKwogLi4u dGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoIHwgICA0MiAtCiAuLi5y ZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2ggfCAgIDI2IC0KIC4uLi9w YXRjaGVzLzAwMDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoICB8ICAxMDMgLQogLi4uL3F0 NS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaCAgIHwgICA0MCAtCiBzcmNwa2dz L3F0NS9wYXRjaGVzLzAwMDktbXVzbC1vZmZfdC5wYXRjaCAgICAgfCAgIDEwIC0KIC4uLi9xdDUv cGF0Y2hlcy8wMDEwLW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoICB8ICAgMTggLQogLi4uL3BhdGNo ZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaCAgIHwgICAxNCAtCiBzcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMTItbXVzbC1yZXNvbHZlLnBhdGNoICAgfCAgIDI2IC0KIHNyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAxNS1tdXNsLXNpZ2luZm9fdC5wYXRjaCB8ICAgMTggLQogLi4uL3F0NS9wYXRj aGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBhdGNoICAgIHwgICAyMCAtCiBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMjAtbXVzbC1zYW5kYm94LnBhdGNoICAgfCAgIDcxIC0KIC4uLi9xdDUvcGF0Y2hl cy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaCB8ICAgNDYgLQogLi4uMDAyNS1tdXNsLWNo cm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoIHwgICAxNSAtCiBzcmNwa2dzL3F0NS9wYXRj aGVzLzAwMjYtZGF0YV9wYWNrLWJlLnBhdGNoICAgfCAgIDE1IC0KIC4uLi9xdDUvcGF0Y2hlcy8w MDI3LXJlbW92ZS1nbGliYy1jaGVjay5wYXRjaCB8ICAgMTMgLQogLi4uLzAwMzItbXVzbC1jcm9z cy1uby1hc21fcHRyYWNlX2gucGF0Y2ggICAgIHwgICAzMCAtCiBzcmNwa2dzL3F0NS9wYXRjaGVz LzAwNDAteWFzbS1ubHMucGF0Y2ggICAgICAgfCAgIDEzIC0KIC4uLi8wMDQyLWFybS12b2lkLWlz LW5vdC1hbmRyb2lkLnBhdGNoICAgICAgICB8ICAgMjEgLQogLi4uL3F0NS9wYXRjaGVzLzAwNDQt cXQtbXVzbC1leGVjaW5mby5wYXRjaCAgIHwgIDEwNyAtCiAuLi4vMDA0NS1xdC1tdXNsLXRocmVh ZC1zdGFja3NpemUucGF0Y2ggICAgICAgfCAgIDI2IC0KIC4uLi9xdDUvcGF0Y2hlcy8wMDQ2LXNh bmRib3gtbWVtYmFycmllci5wYXRjaCB8ICAgNjAgLQogLi4uL3F0NS9wYXRjaGVzLzAwNDctZ24t Y3Jvc3Mtc3lzcm9vdC5wYXRjaCAgIHwgICAyNCAtCiBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNTAt cW1ha2UtbWtzcGVjcy5wYXRjaCAgfCAgIDMzICsKIC4uLi9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVu Z2luZS1wcGM2NC5wYXRjaCAgICB8ICAgMjAgLQogLi4uL3F0NS9wYXRjaGVzLzAwOTAtY2hyb21p dW0tcHBjNjRsZS5wYXRjaCAgIHwgNDI2NyAtLS0tLS0tLS0tLS0tLS0tLQogLi4uL3BhdGNoZXMv MDA5MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBhdGNoICAgIHwgIDE0MSAtCiAuLi4vcXQ1L3BhdGNo ZXMvMDA5Mi1jaHJvbWl1bS1wcGM2NC1iZS5wYXRjaCAgfCAyOTcwIC0tLS0tLS0tLS0tLQogLi4u L3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0tdjgtZWxmdjIucGF0Y2ggIHwgICA0MyAtCiAuLi4v MDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2ggICAgICAgfCAgIDE3IC0KIC4uLi9w YXRjaGVzLzAxMDAtc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaCB8ICAgMjQgLQogc3JjcGtn cy9xdDUvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM0NyArLQogNTQgZmls ZXMgY2hhbmdlZCwgMzEyIGluc2VydGlvbnMoKyksIDg1MDYgZGVsZXRpb25zKC0pCiByZW5hbWUg c3JjcGtncy97cXQ1LXdlYmVuZ2luZSA9PiBxdDUtYmFzZS1kb2NzfSAoMTAwJSkKIGNyZWF0ZSBt b2RlIDEyMDAwMCBzcmNwa2dzL3F0NS1jb25jdXJyZW50CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3Jj cGtncy9xdDUtY29yZQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvcXQ1LWRidXMKIGNyZWF0 ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0NS1ndWkKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dz L3F0NS1uZXR3b3JrCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9xdDUtb3BlbmdsCiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9xdDUtcHJpbnRzdXBwb3J0CiBjcmVhdGUgbW9kZSAxMjAw MDAgc3JjcGtncy9xdDUtcXVpY2t0aW1lbGluZQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv cXQ1LXNxbAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvcXQ1LXRlc3QKIGNyZWF0ZSBtb2Rl IDEyMDAwMCBzcmNwa2dzL3F0NS13aWRnZXRzCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9x dDUteG1sCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRp c2FibGUtcW1sY2hhY2hlZ2VuLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUv ZmlsZXMvcW1sY2FjaGVnZW4ucHJvCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmls ZXMvcmVzb2x2X2NvbXBhdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMv dWl0b29scy5wcm8KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDEt bXVzbC1hZGRsci5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMv MDAwMi1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNo CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAzLWluY2x1ZGUtc3lz LXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaAogZGVsZXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwNC1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDgtbXVzbC1uby1t YWxsaW5mby5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAw OS1tdXNsLW9mZl90LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDEwLW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDExLW11c2wtcmVwbGFjZS1wdmFsbG9jLnBhdGNoCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEyLW11c2wtcmVzb2x2ZS5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNS1tdXNsLXNpZ2luZm9fdC5w YXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNy1tdXNsLXN0 YWNrc3RhcnQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAw MjAtbXVzbC1zYW5kYm94LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNS1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI2LWRhdGFfcGFj ay1iZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNy1y ZW1vdmUtZ2xpYmMtY2hlY2sucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMzItbXVzbC1jcm9zcy1uby1hc21fcHRyYWNlX2gucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2gKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDItYXJtLXZvaWQtaXMtbm90LWFuZHJv aWQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDQtcXQt bXVzbC1leGVjaW5mby5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDA0NS1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3LWduLWNyb3NzLXN5c3Jvb3Qu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNTAtcW1ha2Ut bWtzcGVjcy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA4 OS13ZWJlbmdpbmUtcHBjNjQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwOTAtY2hyb21pdW0tcHBjNjRsZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkyLWNocm9taXVtLXBwYzY0LWJlLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkzLWNocm9taXVt LXY4LWVsZnYyLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDk0LWJpZy1lbmRpYW4tc2tpYS1wb3J0YWJsZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoCgpkaWZm IC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggMjNkMGE2YTNjOGUu Ljk1ODM0ZTdmYjI5IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxp YnMKQEAgLTE5MTgsNiArMTkxOCw3IEBAIGxpYlF0NTNEUXVpY2tTY2VuZTJELnNvLjUgcXQ1LTNk LTUuMTAuMV8xCiBsaWJRdDUzREV4dHJhcy5zby41IHF0NS0zZC01LjYuMF8xCiBsaWJRdDUzRFF1 aWNrRXh0cmFzLnNvLjUgcXQ1LTNkLTUuNi4wXzEKIGxpYlF0NTNEUXVpY2tBbmltYXRpb24uc28u NSBxdDUtM2QtNS4xMC4xXzEKK2xpYlF0NTNEUXVpY2tJbnB1dC5zby41IHF0NS0zZC01LjEzLjBf MQogbGliUXQ1Q2hhcnRzLnNvLjUgcXQ1LWNoYXJ0cy01LjcuMV8xCiBsaWJRdDVEYXRhVmlzdWFs aXphdGlvbi5zby41IHF0NS1kYXRhdmlzM2QtNS43LjFfMQogbGliUXQ1R2FtZXBhZC5zby41IHF0 NS1nYW1lcGFkLTUuNy4xXzEKQEAgLTE5MzAsNiArMTkzMSw4IEBAIGxpYlF0NVF1aWNrVGVzdC5z by41IHF0NS1kZWNsYXJhdGl2ZS01LjYuMF8xCiBsaWJRdDVRdWlja1dpZGdldHMuc28uNSBxdDUt ZGVjbGFyYXRpdmUtNS42LjBfMQogbGliUXQ1UXVpY2tQYXJ0aWNsZXMuc28uNSBxdDUtZGVjbGFy YXRpdmUtNS42LjBfMQogbGliUXQ1UXVpY2tTaGFwZXMuc28uNSBxdDUtZGVjbGFyYXRpdmUtNS4x Mi4xXzEKK2xpYlF0NVFtbE1vZGVscy5zby41IHF0NS1kZWNsYXJhdGl2ZS01LjE0LjBfMQorbGli UXQ1UW1sV29ya2VyU2NyaXB0LnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuMTQuMF8xCiBsaWJRdDVR dWlja0NvbnRyb2xzMi5zby41IHF0NS1xdWlja2NvbnRyb2xzMi01LjcuMV8xCiBsaWJRdDVRdWlj a1RlbXBsYXRlczIuc28uNSBxdDUtcXVpY2tjb250cm9sczItNS43LjFfMQogbGliUXQ1UG9zaXRp b25pbmcuc28uNSBxdDUtbG9jYXRpb24tNS42LjBfMQpAQCAtMTk2NiwyMSArMTk2OSwyMSBAQCBs aWJRdDVXZWJFbmdpbmVXaWRnZXRzLnNvLjUgcXQ1LXdlYmVuZ2luZS01LjYuMF8xCiBsaWJRdDVX ZWJTb2NrZXRzLnNvLjUgcXQ1LXdlYnNvY2tldHMtNS42LjBfMQogbGliUXQ1WDExRXh0cmFzLnNv LjUgcXQ1LXgxMWV4dHJhcy01LjYuMF8xCiBsaWJRdDVYbWxQYXR0ZXJucy5zby41IHF0NS14bWxw YXR0ZXJucy01LjYuMF8xCi1saWJRdDVDb3JlLnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NUVnbEZT RGV2aWNlSW50ZWdyYXRpb24uc28uNSBxdDUtNS44LjBfMQotbGliUXQ1TmV0d29yay5zby41IHF0 NS01LjYuMF8xCi1saWJRdDVTcWwuc28uNSBxdDUtNS42LjBfMQotbGliUXQ1WG1sLnNvLjUgcXQ1 LTUuNi4wXzEKLWxpYlF0NUd1aS5zby41IHF0NS01LjYuMF8xCi1saWJRdDVXaWRnZXRzLnNvLjUg cXQ1LTUuNi4wXzEKLWxpYlF0NVRlc3Quc28uNSBxdDUtNS42LjBfMQotbGliUXQ1REJ1cy5zby41 IHF0NS01LjYuMF8xCi1saWJRdDVDb25jdXJyZW50LnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NU9w ZW5HTC5zby41IHF0NS01LjYuMF8xCi1saWJRdDVQcmludFN1cHBvcnQuc28uNSBxdDUtNS42LjBf MQotbGliUXQ1WGNiUXBhLnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NUVnbERldmljZUludGVncmF0 aW9uLnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NUVnbEZzS21zU3VwcG9ydC5zby41IHF0NS01Ljcu MV8xCitsaWJRdDVDb3JlLnNvLjUgcXQ1LWNvcmUtNS4xNC4wXzEKK2xpYlF0NUVnbEZTRGV2aWNl SW50ZWdyYXRpb24uc28uNSBxdDUtZ3VpLTUuMTQuMF8xCitsaWJRdDVOZXR3b3JrLnNvLjUgcXQ1 LW5ldHdvcmstNS4xNC4wXzEKK2xpYlF0NVNxbC5zby41IHF0NS1zcWwtNS4xNC4wXzEKK2xpYlF0 NVhtbC5zby41IHF0NS14bWwtNS4xNC4wXzEKK2xpYlF0NUd1aS5zby41IHF0NS1ndWktNS4xNC4w XzEKK2xpYlF0NVdpZGdldHMuc28uNSBxdDUtd2lkZ2V0cy01LjE0LjBfMQorbGliUXQ1VGVzdC5z by41IHF0NS10ZXN0LTUuMTQuMF8xCitsaWJRdDVEQnVzLnNvLjUgcXQ1LWRidXMtNS4xNC4wXzEK K2xpYlF0NUNvbmN1cnJlbnQuc28uNSBxdDUtY29uY3VycmVudC01LjE0LjBfMQorbGliUXQ1T3Bl bkdMLnNvLjUgcXQ1LW9wZW5nbC01LjE0LjBfMQorbGliUXQ1UHJpbnRTdXBwb3J0LnNvLjUgcXQ1 LXByaW50c3VwcG9ydC01LjE0LjBfMQorbGliUXQ1WGNiUXBhLnNvLjUgcXQ1LWd1aS01LjE0LjBf MQorbGliUXQ1RWdsRGV2aWNlSW50ZWdyYXRpb24uc28uNSBxdDUtZ3VpLTUuMTQuMF8xCitsaWJR dDVFZ2xGc0ttc1N1cHBvcnQuc28uNSBxdDUtZ3VpLTUuMTQuMF8xCiBsaWJRdDVXZWJLaXQuc28u NSBxdDUtd2Via2l0LTUuNi4wXzEKIGxpYlF0NVdlYktpdFdpZGdldHMuc28uNSBxdDUtd2Via2l0 LTUuNi4wXzEKIGxpYlF0NVRleHRUb1NwZWVjaC5zby41IHF0NS1zcGVlY2gtNS44LjBfMQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lIGIvc3JjcGtncy9xdDUtYmFzZS1kb2NzCnNp bWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmNwa2dzL3F0NS13ZWJlbmdpbmUKcmVu YW1lIHRvIHNyY3BrZ3MvcXQ1LWJhc2UtZG9jcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtY29u Y3VycmVudCBiL3NyY3BrZ3MvcXQ1LWNvbmN1cnJlbnQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5k ZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9x dDUtY29uY3VycmVudApAQCAtMCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1jb3JlIGIvc3JjcGtncy9xdDUtY29yZQpuZXcg ZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0NS1jb3JlCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LWRidXMgYi9zcmNwa2dz L3F0NS1kYnVzCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwLi43NTc5M2Vi NjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LWRidXMKQEAgLTAsMCArMSBAQAor cXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUt Z3VpIGIvc3JjcGtncy9xdDUtZ3VpCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwLi43NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LWd1aQpAQCAt MCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS1uZXR3b3JrIGIvc3JjcGtncy9xdDUtbmV0d29yawpuZXcgZmlsZSBtb2RlIDEy MDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL3F0NS1uZXR3b3JrCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LW9wZW5nbCBiL3NyY3BrZ3MvcXQ1LW9w ZW5nbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS1vcGVuZ2wKQEAgLTAsMCArMSBAQAorcXQ1 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtcHJp bnRzdXBwb3J0IGIvc3JjcGtncy9xdDUtcHJpbnRzdXBwb3J0Cm5ldyBmaWxlIG1vZGUgMTIwMDAw CmluZGV4IDAwMDAwMDAwMDAwLi43NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvcXQ1LXByaW50c3VwcG9ydApAQCAtMCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1xdWlja3RpbWVsaW5lIGIvc3JjcGtn cy9xdDUtcXVpY2t0aW1lbGluZQpuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAw MC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS1xdWlja3RpbWVs aW5lCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1LXNxbCBiL3NyY3BrZ3MvcXQ1LXNxbApuZXcgZmlsZSBtb2RlIDEy MDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL3F0NS1zcWwKQEAgLTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtdGVzdCBiL3NyY3BrZ3MvcXQ1LXRlc3QKbmV3 IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9xdDUtdGVzdApAQCAtMCwwICsxIEBACitxdDUKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13aWRnZXRzIGIvc3Jj cGtncy9xdDUtd2lkZ2V0cwpuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4u NzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13aWRnZXRzCkBAIC0w LDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1LXhtbCBiL3NyY3BrZ3MvcXQ1LXhtbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRl eCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0 NS14bWwKQEAgLTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2Vu LnBhdGNoIGIvc3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2Vu LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWNkZmIzMGY1Yi4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hl Z2VuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLS0tIHF0ZGVjbGFyYXRp dmUvdG9vbHMvdG9vbHMucHJvCTIwMTktMDQtMDkgMDE6MDE6MDcuMDAwMDAwMDAwICswMjAwCi0r KysgLQkyMDE5LTA0LTIxIDAwOjI0OjE2LjE5Mjk2NjM0NSArMDIwMAotQEAgLTcsNyArNyw2IEBA Ci0gICAgICAgICBxbWxtaW4gXAotICAgICAgICAgcW1saW1wb3J0c2Nhbm5lcgotIAotLSAgICBx dENvbmZpZyhjb21tYW5kbGluZXBhcnNlcik6cXRDb25maWcoeG1sc3RyZWFtd3JpdGVyKTogU1VC RElSUyArPSBxbWxjYWNoZWdlbgotIH0KLSAKLSBxdENvbmZpZyh0aHJlYWQpOiFhbmRyb2lkfGFu ZHJvaWRfYXBwOiF3YXNtIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGNhY2hl Z2VuLnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGNhY2hlZ2VuLnBybwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjU5NjNiZWNkNmMKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL3F0NS9maWxlcy9xbWxjYWNoZWdlbi5wcm8KQEAgLTAsMCArMSwzOCBAQAorUVQg PSBjb3JlIHFtbCBxbWxkZXZ0b29scy1wcml2YXRlCitERUZJTkVTICs9IFFUX05PX0NBU1RfVE9f QVNDSUkgUVRfTk9fQ0FTVF9GUk9NX0FTQ0lJCisKK1NPVVJDRVMgPSBxbWxjYWNoZWdlbi5jcHAg XAorICAgIHJlc291cmNlZmlsdGVyLmNwcCBcCisgICAgZ2VuZXJhdGVsb2FkZXIuY3BwCitUQVJH RVQgPSBxbWxjYWNoZWdlbgorCitpbmNsdWRlKC4uL3NoYXJlZC9zaGFyZWQucHJpKQorCitidWls ZF9pbnRlZ3JhdGlvbi5maWxlcyA9IHFtbGNhY2hlLnByZiBxdHF1aWNrY29tcGlsZXIucHJmCiti dWlsZF9pbnRlZ3JhdGlvbi5wYXRoID0gJCRbUVRfSE9TVF9EQVRBXS9ta3NwZWNzL2ZlYXR1cmVz CitwcmVmaXhfYnVpbGQ6IElOU1RBTExTICs9IGJ1aWxkX2ludGVncmF0aW9uCitlbHNlOiBDT1BJ RVMgKz0gYnVpbGRfaW50ZWdyYXRpb24KKworbG9hZChjbWFrZV9mdW5jdGlvbnMpCisKK0NNQUtF X0JJTl9ESVIgPSAkJGNtYWtlUmVsYXRpdmVQYXRoKCQkW1FUX0hPU1RfQklOU10sICQkW1FUX0lO U1RBTExfUFJFRklYXSkKK2NvbnRhaW5zKENNQUtFX0JJTl9ESVIsICJeXFwuXFwuLy4qIikgewor ICAgIENNQUtFX0JJTl9ESVIgPSAkJFtRVF9IT1NUX0JJTlNdLworICAgIENNQUtFX0JJTl9ESVJf SVNfQUJTT0xVVEUgPSBUcnVlCit9CisKK2xvYWQocXRfYnVpbGRfcGF0aHMpCisKK2VxdWFscyhR TUFLRV9IT1NULm9zLCBXaW5kb3dzKTogQ01BS0VfQklOX1NVRkZJWCA9ICIuZXhlIgorY21ha2Vf Y29uZmlnX2ZpbGUuaW5wdXQgPSAkJFBXRC9RdDVRdWlja0NvbXBpbGVyQ29uZmlnLmNtYWtlLmlu CitjbWFrZV9jb25maWdfZmlsZS5vdXRwdXQgPSAkJE1PRFVMRV9CQVNFX09VVERJUi9saWIvY21h a2UvUXQ1UXVpY2tDb21waWxlci9RdDVRdWlja0NvbXBpbGVyQ29uZmlnLmNtYWtlCitRTUFLRV9T VUJTVElUVVRFUyArPSBjbWFrZV9jb25maWdfZmlsZQorCitjbWFrZV9idWlsZF9pbnRlZ3JhdGlv bi5maWxlcyA9ICQkY21ha2VfY29uZmlnX2ZpbGUub3V0cHV0CitjbWFrZV9idWlsZF9pbnRlZ3Jh dGlvbi5wYXRoID0gJCRbUVRfSU5TVEFMTF9MSUJTXS9jbWFrZS9RdDVRdWlja0NvbXBpbGVyCitw cmVmaXhfYnVpbGQ6IElOU1RBTExTICs9IGNtYWtlX2J1aWxkX2ludGVncmF0aW9uCitlbHNlOiBD T1BJRVMgKz0gY21ha2VfYnVpbGRfaW50ZWdyYXRpb24KKworUU1BS0VfVEFSR0VUX0RFU0NSSVBU SU9OID0gUU1MIENhY2hlIEdlbmVyYXRvcgorCitsb2FkKHF0X3Rvb2wpCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS9maWxlcy9xbWxpbXBvcnRzY2FubmVyLnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVz L3FtbGltcG9ydHNjYW5uZXIucHJvCmluZGV4IDU3YzIyOGI4NTQwLi5hYjFlODUxMjkzYSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvcW1saW1wb3J0c2Nhbm5lci5wcm8KKysrIGIvc3Jj cGtncy9xdDUvZmlsZXMvcW1saW1wb3J0c2Nhbm5lci5wcm8KQEAgLTMsNiArMyw4IEBAIERFRklO RVMgKz0gUVRfTk9fQ0FTVF9UT19BU0NJSSBRVF9OT19DQVNUX0ZST01fQVNDSUkKIAogU09VUkNF UyArPSBtYWluLmNwcCAuLi8uLi9zcmMvcW1sL3FxbWxqc2dyYW1tYXIuY3BwCiAKK2luY2x1ZGUo Li4vc2hhcmVkL3NoYXJlZC5wcmkpCisKIFFNQUtFX1RBUkdFVF9ERVNDUklQVElPTiA9IFFNTCBJ bXBvcnQgU2Nhbm5lcgogCiBsb2FkKHF0X3Rvb2wpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9m aWxlcy9xbWxsaW50LnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGxpbnQucHJvCmluZGV4IDQw OWEzNzhiZmNiLi44Y2E2MDBjMjBlYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvcW1s bGludC5wcm8KKysrIGIvc3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8KQEAgLTEsNyArMSwy MiBAQAogUVQgPSBjb3JlIHFtbCBxbWxkZXZ0b29scy1wcml2YXRlCiAKLVNPVVJDRVMgKz0gbWFp bi5jcHAgLi4vLi4vc3JjL3FtbC9xcW1sanNncmFtbWFyLmNwcAorU09VUkNFUyArPSBtYWluLmNw cCBcCisgICAgY29tcG9uZW50dmVyc2lvbi5jcHAgXAorICAgIGZha2VtZXRhb2JqZWN0LmNwcCBc CisgICAgZmluZHVucXVhbGlmaWVkLmNwcCBcCisgICAgcW1sanN0eXBlZGVzY3JpcHRpb25yZWFk ZXIuY3BwIFwKKyAgICBxY29sb3JvdXRwdXQuY3BwIFwKKyAgICBzY29wZXRyZWUuY3BwIFwKKyAg ICAuLi8uLi9zcmMvcW1sL3FxbWxqc2dyYW1tYXIuY3BwCiAKIFFNQUtFX1RBUkdFVF9ERVNDUklQ VElPTiA9IFFNTCBTeW50YXggVmVyaWZpZXIKIAogbG9hZChxdF90b29sKQorCitIRUFERVJTICs9 IFwKKyAgICBjb21wb25lbnR2ZXJzaW9uLmggXAorICAgIGZha2VtZXRhb2JqZWN0LmggXAorICAg IGZpbmR1bnF1YWxpZmllZC5oIFwKKyAgICBxbWxqc3R5cGVkZXNjcmlwdGlvbnJlYWRlci5oIFwK KyAgICBxY29sb3JvdXRwdXRfcC5oIFwKKyAgICBzY29wZXRyZWUuaApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvcXR0b29s c19zcmMucHJvCmluZGV4IGM3MzQ0NDA0YzA1Li5hMzg3YTk5MDE2NyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3F0 dG9vbHNfc3JjLnBybwpAQCAtMSw1ICsxLDYgQEAKIFRFTVBMQVRFID0gc3ViZGlycwogCitRVF9G T1JfQ09ORklHICs9IHdpZGdldHMKIFNVQkRJUlMgPSBhc3Npc3RhbnQgXAogCXBpeGVsdG9vbCBc CiAJZGVzaWduZXIgXApAQCAtOCwzNCArOSwzMSBAQCBTVUJESVJTID0gYXNzaXN0YW50IFwKIAlx dGF0dHJpYnV0aW9uc3NjYW5uZXIKIAogbGluZ3Vpc3QuZGVwZW5kcyA9IGRlc2lnbmVyCitxdEhh dmVNb2R1bGUocXVpY2spOnF0Q29uZmlnKHRocmVhZCk6cXRDb25maWcodG9vbGJ1dHRvbik6IFNV QkRJUlMgKz0gZGlzdGFuY2VmaWVsZGdlbmVyYXRvcgorCiAKIHF0Q29uZmlnKGxpYnJhcnkpIHsK ICAgICAhYW5kcm9pZHxhbmRyb2lkX2FwcDogU1VCRElSUyArPSBxdHBsdWdpbmluZm8KIH0KIAot aWYoIWFuZHJvaWR8YW5kcm9pZF9hcHApOiF1aWtpdDogU1VCRElSUyArPSBxdHBhdGhzCishYW5k cm9pZHxhbmRyb2lkX2FwcDogU1VCRElSUyArPSBxdHBhdGhzCiAKLW1hYyB7CittYWNvcyB7CiAg ICAgU1VCRElSUyArPSBtYWNkZXBsb3lxdAogfQogCi1hbmRyb2lkIHsKLSAgICBTVUJESVJTICs9 IGFuZHJvaWRkZXBsb3lxdAotfQotCiB3aW4zMnx3aW5ydDpTVUJESVJTICs9IHdpbmRlcGxveXF0 CiB3aW5ydDpTVUJESVJTICs9IHdpbnJ0cnVubmVyCi1xdEhhdmVNb2R1bGUoZ3VpKTohYW5kcm9p ZDohdWlraXQ6IXFueDohd2lucnQ6IFNVQkRJUlMgKz0gcXRkaWFnCitxdEhhdmVNb2R1bGUoZ3Vp KTohd2FzbTohYW5kcm9pZDohdWlraXQ6IXFueDohd2lucnQ6IFNVQkRJUlMgKz0gcXRkaWFnCiAK IHF0Tm9tYWtlVG9vbHMoIFwKLSAgICBtYWNkZXBsb3lxdCBcCisgICAgZGlzdGFuY2VmaWVsZGdl bmVyYXRvciBcCisgICAgcGl4ZWx0b29sIFwKICkKIAogIyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBh dm9pZCBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdG9vbGNoYWluLnByZgogIyBpbnZvY2F0aW9u cyBpbiBhIG1vZHVsZS1ieS1tb2R1bGUgY3Jvc3MtYnVpbGQuCiBjcm9zc19jb21waWxlOmlzRW1w dHkoUU1BS0VfSE9TVF9DWFguSU5DRElSUykgewotICAgIGFuZHJvaWRkZXBsb3lxdC5kZXBlbmRz ICs9IHF0YXR0cmlidXRpb25zc2Nhbm5lcgotICAgIHFkb2MuZGVwZW5kcyArPSBxdGF0dHJpYnV0 aW9uc3NjYW5uZXIKICAgICB3aW5kZXBsb3lxdC5kZXBlbmRzICs9IHF0YXR0cmlidXRpb25zc2Nh bm5lcgogICAgIHdpbnJ0cnVubmVyLmRlcGVuZHMgKz0gcXRhdHRyaWJ1dGlvbnNzY2FubmVyCiAg ICAgbGluZ3Vpc3QuZGVwZW5kcyArPSBxdGF0dHJpYnV0aW9uc3NjYW5uZXIKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ1L2ZpbGVzL3Jlc29sdl9jb21wYXQuaCBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3Jl c29sdl9jb21wYXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYwZTg1MmExOWQu LjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3Jlc29sdl9jb21wYXQuaAorKysg L2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCi0gKiByZXNvbHZfY29tcGF0LmgKLSAqCi0gKiBNaW1pY2sgR0xJQkMn cyByZXNfbmluaXQoKSBhbmQgcmVzX25jbG9zZSgpIGZvciBtdXNsIGxpYmMKLSAqIE5vdGU6IHJl c19pbml0KCkgaXMgYWN0dWFsbHkgZGVwcmVjYXRlZCBhY2NvcmRpbmcgdG8KLSAqIGh0dHA6Ly9k b2NzLm9yYWNsZS5jb20vY2QvRTM2Nzg0XzAxL2h0bWwvRTM2ODc1L3Jlcy1uY2xvc2UtM3Jlc29s di5odG1sCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLXN0YXRp YyBpbmxpbmUgaW50IHJlc19uaW5pdChyZXNfc3RhdGUgc3RhdHApCi17Ci0JaW50IHJjID0gcmVz X2luaXQoKTsKLQlpZiAoc3RhdHAgIT0gJl9yZXMpIHsKLQkJbWVtY3B5KHN0YXRwLCAmX3Jlcywg c2l6ZW9mKCpzdGF0cCkpOwotCX0KLQlyZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50 IHJlc19uY2xvc2UocmVzX3N0YXRlIHN0YXRwKQotewotCWlmICghc3RhdHApCi0JCXJldHVybiAt MTsKLQlpZiAoc3RhdHAgIT0gJl9yZXMpIHsKLQkJbWVtc2V0KHN0YXRwLCAwLCBzaXplb2YoKnN0 YXRwKSk7Ci0JfQotCXJldHVybiAwOwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS9maWxlcy91aWMucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvdWljLnBybwppbmRleCA3NGQ3ZGJk ODc4Zi4uZGMwOGVmY2ZmMTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpYy5wcm8K KysrIGIvc3JjcGtncy9xdDUvZmlsZXMvdWljLnBybwpAQCAtNCw2ICs0LDcgQEAgREVGSU5FUyAr PSBRVF9VSUMgUVRfTk9fQ0FTVF9GUk9NX0FTQ0lJIFFUX05PX0ZPUkVBQ0gKIGluY2x1ZGUodWlj LnByaSkKIGluY2x1ZGUoc2hhcmVkL3NoYXJlZC5wcmkpCiBpbmNsdWRlKGNwcC9jcHAucHJpKQor aW5jbHVkZShweXRob24vcHl0aG9uLnByaSkKIAogSEVBREVSUyArPSB1aWMuaAogCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS9maWxlcy91aXRvb2xzLnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3Vp dG9vbHMucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MWUyMmIx NDUwNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpdG9vbHMucHJvCkBA IC0wLDAgKzEsMTUgQEAKK1RBUkdFVCA9IFF0VWlUb29scworQ09ORklHICs9IHN0YXRpYworCitp bmNsdWRlKC4uL2xpYi91aWxpYi91aWxpYi5wcmkpCisKK1FNQUtFX0RPQ1MgPSAkJFBXRC9kb2Mv cXR1aXRvb2xzLnFkb2Njb25mCisKK0hFQURFUlMgKz0gcXVpbG9hZGVyLmgKK1NPVVJDRVMgKz0g cXVpbG9hZGVyLmNwcAorCitERUZJTkVTICs9IFwKKyAgICBRRk9STUlOVEVSTkFMX05BTUVTUEFD RSBcCisgICAgUVRfREVTSUdORVJfU1RBVElDCisKK2xvYWQocXRfbW9kdWxlKQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAxLW11c2wtYWRkbHIucGF0Y2ggYi9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMDEtbXVzbC1hZGRsci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNmRkMTY5NGNkZGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMDEtbXVzbC1hZGRsci5wYXRjaApAQCAtMCwwICsxLDIzIEBACitTb3VyY2U6 IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CitVcHN0ZWFtOiBObworU3ViamVjdDogTXVzbCByZXR1 cm5zIC9saWIvbGliUXQ1Q29yZS5zby41IGZvciBEbF9pbmZvLmRsaV9mbmFtZS4gCitHTElCQydz IGRsIGJlaGF2ZXMgZGlmZmVyZW50bHkgYW5kIHRoZXJlZm9yZSB0aGUgcGF0aCBpcyBwcmVmaXhl ZCB3aXRoIC91c3IuCitUaGlzIGJyb2tlIGUuZy4gcXQ1LXdlYmVuZ2luZSBvbiBtdXNsLgorLS0t CitkaWZmIC0tZ2l0IHF0YmFzZXNyYy9jb3JlbGliL2dsb2JhbC9xbGlicmFyeWluZm8uY3BwIHF0 YmFzZXNyYy9jb3JlbGliL2dsb2JhbC9xbGlicmFyeWluZm8uY3BwCitpbmRleCA4YmNmNjdlNzNk Li4yOGQ3MzU1MzEwIDEwMDY0NAorLS0tIHF0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcWxpYnJh cnlpbmZvLmNwcAorKysrIHF0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcWxpYnJhcnlpbmZvLmNw cAorQEAgLTU1OCw2ICs1NTgsMTIgQEAgc3RhdGljIFFTdHJpbmcgZ2V0UmVsb2NhdGFibGVQcmVm aXgoKQorICAgICBpbnQgcmVzdWx0ID0gZGxhZGRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPigm UUxpYnJhcnlJbmZvOjppc0RlYnVnQnVpbGQpLCAmaW5mbyk7CisgICAgIGlmIChyZXN1bHQgPiAw ICYmIGluZm8uZGxpX2ZuYW1lKQorICAgICAgICAgcHJlZml4UGF0aCA9IHByZWZpeEZyb21RdENv cmVMaWJyYXJ5SGVscGVyKFFTdHJpbmc6OmZyb21MYXRpbjEoaW5mby5kbGlfZm5hbWUpKTsKKysj aWZuZGVmIF9fR0xJQkNfXworKyAgICBRRGlyIHByZWZpeERpcihwcmVmaXhQYXRoKTsKKysgICAg aWYgKHByZWZpeERpci5pc1Jvb3QoKSkgeworKyAgICAgICAgcHJlZml4UGF0aCA9ICIvdXNyIjsK KysgICAgfQorKyNlbmRpZgorICNlbGlmIGRlZmluZWQoUV9PU19XSU4pCisgICAgIEhNT0RVTEUg aE1vZHVsZSA9IGdldFdpbmRvd3NNb2R1bGVIYW5kbGUoKTsKKyAgICAgY29uc3QgaW50IGtCdWZm ZXJTaXplID0gNDA5NjsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMi1Vc2Ut X2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoIGIvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUt b24tbGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNzg3ZDEzNzRl Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDItVXNlLV9mcHN0YXRl LWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDQyICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9j b21tb24vdWNvbnRleHRfcmVhZGVyLmgJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRl eHRfcmVhZGVyLmgJMjAxOC0wOS0wNyAyMjoyMToyOC41MjE3NjM3MTYgKzAyMDAKLUBAIC01MCw3 ICs1MCw3IEBACi0gICAvLyAgIGluZm86IHRoZSBjb2xsZWN0aW9uIG9mIHJlZ2lzdGVyIHN0cnVj dHVyZXMuCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjQpCi0gICBz dGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250 ZXh0X3QgKnVjLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9s aWJjX2Zwc3RhdGUqIGZwKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBfZnBzdGF0ZSogZnApOwotICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gICBzdGF0 aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0 X3QgKnVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZwc2lt ZF9jb250ZXh0KiBmcHJlZ3MpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3Jp dGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24v dWNvbnRleHRfcmVhZGVyLmNjCTIwMTgtMDktMDcgMjI6MjE6NDUuNzY2NzYyNjg4ICswMjAwCi1A QCAtNDksNyArNDksNyBAQAotIH0KLSAKLSB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29u dGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBm cCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBf ZnBzdGF0ZSogZnApIHsKLSAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5n cmVnczsKLSAKLSAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfWDg2X0ZVTEwgfAot QEAgLTk3LDcgKzk3LDcgQEAKLSB9Ci0gCi0gdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNv bnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSog ZnByZWdzKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IF9mcHN0YXRlKiBmcHJlZ3MpIHsKLSAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19t Y29udGV4dC5ncmVnczsKLSAKLSAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfQU1E NjRfRlVMTDsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWlu aWR1bXBfd3JpdGVyLmgJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgJ MjAxOC0wOS0wNyAyMzozNjozMi4wNDk0OTUyODUgKzAyMDAKLUBAIC00OCw3ICs0OCw3IEBACi0g I2lmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gdHlwZWRlZiBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQg ZnBzdGF0ZV90OwotICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19t aXBzX18pCi0tdHlwZWRlZiBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSBmcHN0YXRlX3Q7Ci0rdHlwZWRl ZiBzdHJ1Y3QgX2Zwc3RhdGUgZnBzdGF0ZV90OwotICNlbmRpZgotIAotIC8vIFRoZXNlIGVudHJp ZXMgc3RvcmUgYSBsaXN0IG9mIG1lbW9yeSByZWdpb25zIHRoYXQgdGhlIGNsaWVudCB3YW50cyBp bmNsdWRlZApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAzLWluY2x1ZGUtc3lz LXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaCBiL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAwMy1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNs LWxpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNDE2MGIyMWJkLi4w MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDMtaW5jbHVkZS1zeXMtcmVn LmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMjYgKzAsMCBAQAotRnJvbSA5MDAxYzU0ZDZiOTc0NDQ5MTc0YThjZWU4ZjNmNWQ3OGE5YmQ2 YzllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4Lmph bmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1biwgMSBGZWIgMjAxNSAxNDoyNjo1MiArMDEwMAotU3Vi amVjdDogW1BBVENIIDMvNl0gaW5jbHVkZSA8c3lzL3JlZy5oPiB0byBnZXQgX19XT1JEU0laRSBv biBtdXNsIGxpYmMKLQotLS0tCi0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVt cC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQg YS9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaCBiL3NyYy9jb21tb24vbGludXgvZWxm X2NvcmVfZHVtcC5oCi1pbmRleCBkMDNjN2E4Li4wMmViMzkxIDEwMDY0NAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xp bnV4L2VsZl9jb3JlX2R1bXAuaAotQEAgLTM2LDYgKzM2LDkgQEAKLSAjaW5jbHVkZSA8ZWxmLmg+ Ci0gI2luY2x1ZGUgPGxpbmsuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2lmbmRlZiBfX0dM SUJDX18KLSsjaW5jbHVkZSA8c3lzL3JlZy5oPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJjb21t b24vbWVtb3J5X3JhbmdlLmgiCi0gCi0tLSAKLTIuMC41Ci0KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAwNC1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2ggYi9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBkZTMyYTNkYWI5NS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9x dDUvcGF0Y2hlcy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDEwMyArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9zaGltX2RlZmF1bHRfZGlzcGF0Y2hfdG9fZ2xpYmMu Y2MKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3Iv YWxsb2NhdG9yX3NoaW1fZGVmYXVsdF9kaXNwYXRjaF90b19nbGliYy5jYwotQEAgLTYsNiArNiw3 IEBACi0gCi0gI2luY2x1ZGUgPG1hbGxvYy5oPgotIAotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykK LSAvLyBUaGlzIHRyYW5zbGF0aW9uIHVuaXQgZGVmaW5lcyBhIGRlZmF1bHQgZGlzcGF0Y2ggZm9y IHRoZSBhbGxvY2F0b3Igc2hpbSB3aGljaAotIC8vIHJvdXRlcyBhbGxvY2F0aW9ucyB0byBsaWJj IGZ1bmN0aW9ucy4KLSAvLyBUaGUgY29kZSBoZXJlIGlzIHN0cm9uZ2x5IGluc3BpcmVkIGZyb20g dGNtYWxsb2MncyBsaWJjX292ZXJyaWRlX2dsaWJjLmguCi1AQCAtNzMsMyArNzQsOTIgQEAgY29u c3QgQWxsb2NhdG9yRGlzcGF0Y2ggQWxsb2NhdG9yRGlzcGF0Y2g6OmRlZmF1bHRfZGlzcGF0Y2gg PSB7Ci0gICAgIG51bGxwdHIsICAgICAgICAgICAgICAgLyogZnJlZV9kZWZpbml0ZV9zaXplX2Z1 bmN0aW9uICovCi0gICAgIG51bGxwdHIsICAgICAgICAgICAgICAgLyogbmV4dCAqLwotIH07Ci0r Ci0rI2Vsc2UgLy8gZGVmaW5lZChfX0dMSUJDX18pCi0rCi0rI2luY2x1ZGUgPGRsZmNuLmg+Ci0r Ci0rZXh0ZXJuICJDIiB7Ci0rLy8gRGVjbGFyZSBmdW5jdGlvbiBwb2ludGVycyB0byB0aGUgbWVt b3J5IGZ1bmN0aW9ucwotK3R5cGVkZWYgdm9pZCogKCp0X2xpYmNfbWFsbG9jKShzaXplX3Qgc2l6 ZSk7Ci0rdHlwZWRlZiB2b2lkKiAoKnRfbGliY19jYWxsb2MpKHNpemVfdCBuLCBzaXplX3Qgc2l6 ZSk7Ci0rdHlwZWRlZiB2b2lkKiAoKnRfbGliY19yZWFsbG9jKSh2b2lkKiBhZGRyZXNzLCBzaXpl X3Qgc2l6ZSk7Ci0rdHlwZWRlZiB2b2lkKiAoKnRfbGliY19tZW1hbGlnbikoc2l6ZV90IGFsaWdu bWVudCwgc2l6ZV90IHNpemUpOwotK3R5cGVkZWYgdm9pZCAoKnRfbGliY19mcmVlKSh2b2lkKiBw dHIpOwotK3R5cGVkZWYgc2l6ZV90ICgqdF9saWJjX21hbGxvY191c2FibGVfc2l6ZSkodm9pZCog cHRyKTsKLSsKLSsvLyBTdGF0aWMgaW5zdGFuY2VzIG9mIHBvaW50ZXJzIHRvIGxpYmMuc28gZGwg c3ltYm9scwotK3N0YXRpYyB0X2xpYmNfbWFsbG9jIGxpYmNfbWFsbG9jID0gTlVMTDsKLStzdGF0 aWMgdF9saWJjX2NhbGxvYyBsaWJjX2NhbGxvYyA9IE5VTEw7Ci0rc3RhdGljIHRfbGliY19yZWFs bG9jIGxpYmNfcmVhbGxvYyA9IE5VTEw7Ci0rc3RhdGljIHRfbGliY19tZW1hbGlnbiBsaWJjX21l bWFsaWduID0gTlVMTDsKLStzdGF0aWMgdF9saWJjX2ZyZWUgbGliY19mcmVlID0gTlVMTDsKLStz dGF0aWMgdF9saWJjX21hbGxvY191c2FibGVfc2l6ZSBsaWJjX21hbGxvY191c2FibGVfc2l6ZSA9 IE5VTEw7Ci0rCi0rLy8gcmVzb2x2ZSB0aGUgc3ltYm9scyBpbiBsaWJjLnNvCi0rdm9pZCBtdXNs X2xpYmNfbWVtb3J5X2luaXQodm9pZCkKLSt7Ci0rICBsaWJjX21hbGxvYyA9ICh0X2xpYmNfbWFs bG9jKSBkbHN5bShSVExEX05FWFQsICJtYWxsb2MiKTsKLSsgIGxpYmNfY2FsbG9jID0gKHRfbGli Y19jYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgImNhbGxvYyIpOwotKyAgbGliY19yZWFsbG9jID0g KHRfbGliY19yZWFsbG9jKSBkbHN5bShSVExEX05FWFQsICJyZWFsbG9jIik7Ci0rICBsaWJjX21l bWFsaWduID0gKHRfbGliY19tZW1hbGlnbikgZGxzeW0oUlRMRF9ORVhULCAibWVtYWxpZ24iKTsK LSsgIGxpYmNfZnJlZSA9ICh0X2xpYmNfZnJlZSkgZGxzeW0oUlRMRF9ORVhULCAiZnJlZSIpOwot KyAgbGliY19tYWxsb2NfdXNhYmxlX3NpemUgPSAodF9saWJjX21hbGxvY191c2FibGVfc2l6ZSkg ZGxzeW0oUlRMRF9ORVhULCAibWFsbG9jX3VzYWJsZV9zaXplIik7Ci0rfQotK30gIC8vIGV4dGVy biAiQyIKLSsKLStuYW1lc3BhY2UgewotKwotK3VzaW5nIGJhc2U6OmFsbG9jYXRvcjo6QWxsb2Nh dG9yRGlzcGF0Y2g7Ci0rCi0rdm9pZCogTXVzbE1hbGxvYyhjb25zdCBBbGxvY2F0b3JEaXNwYXRj aCosIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KSB7Ci0rICBpZiAoIWxpYmNfbWFsbG9jKQot KyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKLSsgIHJldHVybiAoKmxpYmNfbWFsbG9jKShz aXplKTsKLSt9Ci0rCi0rdm9pZCogTXVzbENhbGxvYyhjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCos IHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29udGV4dCkgewotKyAgaWYgKCFsaWJjX2Nh bGxvYykKLSsgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7Ci0rICByZXR1cm4gKCpsaWJjX2Nh bGxvYykobiwgc2l6ZSk7Ci0rfQotKwotK3ZvaWQqIE11c2xSZWFsbG9jKGNvbnN0IEFsbG9jYXRv ckRpc3BhdGNoKiwgdm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsK LSsgIGlmICghbGliY19yZWFsbG9jKQotKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKLSsg IHJldHVybiAoKmxpYmNfcmVhbGxvYykoYWRkcmVzcywgc2l6ZSk7Ci0rfQotKwotK3ZvaWQqIE11 c2xNZW1hbGlnbihjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCosIHNpemVfdCBhbGlnbm1lbnQsIHNp emVfdCBzaXplLCB2b2lkKiBjb250ZXh0KSB7Ci0rICBpZiAoIWxpYmNfbWVtYWxpZ24pCi0rICAg IG11c2xfbGliY19tZW1vcnlfaW5pdCgpOwotKyAgcmV0dXJuICgqbGliY19tZW1hbGlnbikoYWxp Z25tZW50LCBzaXplKTsKLSt9Ci0rCi0rdm9pZCBNdXNsRnJlZShjb25zdCBBbGxvY2F0b3JEaXNw YXRjaCosIHZvaWQqIGFkZHJlc3MsIHZvaWQqIGNvbnRleHQpIHsKLSsgIGlmICghbGliY19mcmVl KQotKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKLSsgICgqbGliY19mcmVlKShhZGRyZXNz KTsKLSt9Ci0rCi0rc2l6ZV90IE11c2xHZXRTaXplRXN0aW1hdGUoY29uc3QgQWxsb2NhdG9yRGlz cGF0Y2gqLCB2b2lkKiBhZGRyZXNzLCB2b2lkKiBjb250ZXh0KSB7Ci0rICAvLyBUT0RPKHNpZ2dp LCBwcmltaWFubyk6IG1hbGxvY191c2FibGVfc2l6ZSBtYXkgbmVlZCByZWRpcmVjdGlvbiBpbiB0 aGUKLSsgIC8vICAgICBwcmVzZW5jZSBvZiBpbnRlcnBvc2luZyBzaGltcyB0aGF0IGRpdmVydCBh bGxvY2F0aW9ucy4KLSsgIGlmICghbGliY19tYWxsb2NfdXNhYmxlX3NpemUpCi0rICAgIG11c2xf bGliY19tZW1vcnlfaW5pdCgpOwotKyAgcmV0dXJuICgqbGliY19tYWxsb2NfdXNhYmxlX3NpemUp KGFkZHJlc3MpOwotK30KLSsKLSt9ICAvLyBuYW1lc3BhY2UKLSsKLStjb25zdCBBbGxvY2F0b3JE aXNwYXRjaCBBbGxvY2F0b3JEaXNwYXRjaDo6ZGVmYXVsdF9kaXNwYXRjaCA9IHsKLSsgICAgJk11 c2xNYWxsb2MsICAgICAgICAgICAvKiBhbGxvY19mdW5jdGlvbiAqLwotKyAgICAmTXVzbENhbGxv YywgICAgICAgICAgIC8qIGFsbG9jX3plcm9faW5pdGlhbGl6ZWRfZnVuY3Rpb24gKi8KLSsgICAg Jk11c2xNZW1hbGlnbiwgICAgICAgICAvKiBhbGxvY19hbGlnbmVkX2Z1bmN0aW9uICovCi0rICAg ICZNdXNsUmVhbGxvYywgICAgICAgICAgLyogcmVhbGxvY19mdW5jdGlvbiAqLwotKyAgICAmTXVz bEZyZWUsICAgICAgICAgICAgIC8qIGZyZWVfZnVuY3Rpb24gKi8KLSsgICAgJk11c2xHZXRTaXpl RXN0aW1hdGUsICAvKiBnZXRfc2l6ZV9lc3RpbWF0ZV9mdW5jdGlvbiAqLwotKyAgICBudWxscHRy LCAgICAgICAgICAgICAgIC8qIG5leHQgKi8KLSt9OwotKwotKyNlbmRpZgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0Y2ggYi9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggYzMzMmI5MmI2OWQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NDAgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3Ry YWNlX2V2ZW50L21hbGxvY19kdW1wX3Byb3ZpZGVyLmNjCTIwMTctMTEtMjggMTQ6MDY6NTMuMDAw MDAwMDAwICswMTAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv dHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIuY2MJMjAxOC0wMS0yNyAyMDoxMzoyNi45 NjA5MzI4MDUgKzAxMDAKLUBAIC0yNDMsNyArMjQzLDcgQEAKLSAgIGFsbG9jYXRlZF9vYmplY3Rz X2NvdW50ID0gbWFpbl9oZWFwX2luZm8uYmxvY2tfY291bnQ7Ci0gI2VsaWYgZGVmaW5lZChPU19G VUNIU0lBKQotIC8vIFRPRE8oZnVjaHNpYSk6IFBvcnQsIHNlZSBodHRwczovL2NyYnVnLmNvbS83 MDY1OTIuCi0tI2Vsc2UKLSsjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAgIHN0cnVjdCBtYWxs aW5mbyBpbmZvID0gbWFsbGluZm8oKTsKLSAgIERDSEVDS19HRShpbmZvLmFyZW5hICsgaW5mby5o YmxraGQsIGluZm8udW9yZGJsa3MpOwotIAotQEAgLTI1NSw2ICsyNTUsOCBAQAotIAotICAgLy8g VG90YWwgYWxsb2NhdGVkIHNwYWNlIGlzIGdpdmVuIGJ5IHx1b3JkYmxrc3wuCi0gICBhbGxvY2F0 ZWRfb2JqZWN0c19zaXplID0gaW5mby51b3JkYmxrczsKLSsjZWxzZQotKy8vIG11c2wgbGliYyBk b2VzIG5vdCBzdXBwb3J0IG1hbGxpbmZvKCkKLSAjZW5kaWYKLSAKLSAgIE1lbW9yeUFsbG9jYXRv ckR1bXAqIG91dGVyX2R1bXAgPSBwbWQtPkNyZWF0ZUFsbG9jYXRvckR1bXAoIm1hbGxvYyIpOwot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3Byb2Nlc3MvcHJvY2Vz c19tZXRyaWNzX3Bvc2l4LmNjCTIwMTctMTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAwICswMTAwCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcHJvY2Vzcy9wcm9jZXNz X21ldHJpY3NfcG9zaXguY2MJMjAxOC0wMS0yNyAyMDo0ODoxMS41NzEwNDAzNDggKzAxMDAKLUBA IC0xMDAsMTQgKzEwMCwxNCBAQAotICAgbWFsbG9jX3N0YXRpc3RpY3NfdCBzdGF0cyA9IHswfTsK LSAgIG1hbGxvY196b25lX3N0YXRpc3RpY3MobnVsbHB0ciwgJnN0YXRzKTsKLSAgIHJldHVybiBz dGF0cy5zaXplX2luX3VzZTsKLS0jZWxpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9T X0FORFJPSUQpCi0rI2VsaWYgKGRlZmluZWQoT1NfTElOVVgpICYmIGRlZmluZWQoX19HTElCQ19f KSkgfHwgZGVmaW5lZChPU19BTkRST0lEKQotICAgc3RydWN0IG1hbGxpbmZvIG1pbmZvID0gbWFs bGluZm8oKTsKLSAjaWYgZGVmaW5lZChVU0VfVENNQUxMT0MpCi0gICByZXR1cm4gbWluZm8udW9y ZGJsa3M7Ci0gI2Vsc2UKLSAgIHJldHVybiBtaW5mby5oYmxraGQgKyBtaW5mby5hcmVuYTsKLSAj ZW5kaWYKLS0jZWxpZiBkZWZpbmVkKE9TX0ZVQ0hTSUEpCi0rI2Vsc2UgLy9pZiBkZWZpbmVkKE9T X0ZVQ0hTSUEpIC8vIGFsc28gbXVzbCBkb2Vzbid0IGRvIHRoaXMuCi0gICAvLyBUT0RPKGZ1Y2hz aWEpOiBOb3QgY3VycmVudGx5IGV4cG9zZWQuIGh0dHBzOi8vY3JidWcuY29tLzczNTA4Ny4KLSAg IHJldHVybiAwOwotICNlbmRpZgotCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAw MDktbXVzbC1vZmZfdC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOS1tdXNsLW9mZl90 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmRiM2I5ZWJmNC4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA5LW11c2wtb2ZmX3QucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L290cy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5oCTIw MTYtMDUtMjYgMTQ6NTg6NTQuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L290cy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNl ci5oCTIwMTYtMTAtMDEgMTQ6MzE6MzAuODg1MDAwMDAwICswMjAwCi1AQCAtMjEsNiArMjEsNyBA QAotICNkZWZpbmUgaHRvbnMoeCkgX2J5dGVzd2FwX3VzaG9ydCAoeCkKLSAjZWxzZQotICNpbmNs dWRlIDxhcnBhL2luZXQuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0 ZGludC5oPgotICNlbmRpZgotIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEw LW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEwLW11c2wt cHJlYWQtcHdyaXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAxN2Ji YTAxNy4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEwLW11c2wtcHJl YWQtcHdyaXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2Fs bF9zdXBwb3J0LmgJMjAxOC0wOS0wNyAyMToyNToyNi42Mzk5NjQxMDAgKzAyMDAKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2Nh bGxfc3VwcG9ydC5oCTIwMTgtMDktMDcgMjE6MjU6MTEuNjExOTY0OTk1ICswMjAwCi1AQCAtMTc5 NCw2ICsxNzk0LDE1IEBACi0gLyogRW5kIG9mIHMzOTAvczM5MHggZGVmaW5pdGlvbnMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICNlbmRpZgotIAotKyNp Zm5kZWYgX19HTElCQ19fCi0rICAvKiBGb3IgTXVzbCBsaWJjIHByZWFkL3ByZWFkIGlzIHRoZSBz YW1lIGFzIHByZWFkNjQvcHdyaXRlNjQgKi8KLSsjaWZuZGVmIF9fTlJfcHJlYWQKLSsjZGVmaW5l IF9fTlJfcHJlYWQgICAgICAgICAgICAgIF9fTlJfcHJlYWQ2NAotKyNlbmRpZgotKyNpZm5kZWYg X19OUl9wd3JpdGUKLSsjZGVmaW5lIF9fTlJfcHdyaXRlICAgICAgICAgICAgIF9fTlJfcHdyaXRl NjQKLSsjZW5kaWYKLSsjZW5kaWYgLyogaWZuZGVmIF9fR0xJQkNfXyAqLwotIAotIC8qIEFmdGVy IGZvcmtpbmcsIHdlIG11c3QgbWFrZSBzdXJlIHRvIG9ubHkgY2FsbCBzeXN0ZW0gY2FsbHMuICAg ICAgICAgICAgICAgKi8KLSAjaWYgZGVmaW5lZChfX0JPVU5ERURfUE9JTlRFUlNfXykKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRj aCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVjYWYzODM2ZDcuLjAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvY29yZS9h cGkvcXRidWctNjE1MjEuY3BwCTIwMTctMTEtMjkgMDk6NDI6MjkuMDAwMDAwMDAwICswMTAwCi0r KysgcXR3ZWJlbmdpbmUvc3JjL2NvcmUvYXBpL3F0YnVnLTYxNTIxLmNwcAkyMDE4LTAxLTI4IDA2 OjQ5OjI5LjQ1NDE3NTcyNSArMDEwMAotQEAgLTExMSw3ICsxMTEsMTEgQEAKLSB9Ci0gCi0gU0hJ TV9ISURERU4gdm9pZCogU2hpbVB2YWxsb2Moc2l6ZV90IHNpemUpIHsKLSsjaWYgZGVmaW5lZChf X0dMSUJDX18pCi0gICAgIHJldHVybiBwdmFsbG9jKHNpemUpOwotKyNlbHNlCi0rICAgIHJldHVy biB2YWxsb2MoKHNpemUrNDA5NSkmfjQwOTUpOwotKyNlbmRpZgotIH0KLSAKLSBTSElNX0hJRERF TiBpbnQgU2hpbVBvc2l4TWVtYWxpZ24odm9pZCoqIHIsIHNpemVfdCBhLCBzaXplX3Qgcykgewpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEyLW11c2wtcmVzb2x2ZS5wYXRjaCBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMi1tdXNsLXJlc29sdmUucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGVkZmNlYjc5ZjMwLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwMTItbXVzbC1yZXNvbHZlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MjYgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5z L2Ruc19yZWxvYWRlci5jYwkyMDE2LTExLTA3IDE1OjQ2OjE4LjAwMDAwMDAwMCArMDEwMAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2Ruc19yZWxvYWRlci5j YwkyMDE2LTEyLTIwIDAzOjMzOjExLjc0OTA1OTY1NiArMDEwMAotQEAgLTksNiArOSwxMCBAQAot IAotICNpbmNsdWRlIDxyZXNvbHYuaD4KLSAKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyNp bmNsdWRlICJyZXNvbHZfY29tcGF0LmgiCi0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgImJhc2UvbGF6 eV9pbnN0YW5jZS5oIgotICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLSAjaW5jbHVkZSAiYmFz ZS9tYWNyb3MuaCIKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2Ru cy9kbnNfY29uZmlnX3NlcnZpY2VfcG9zaXguY2MJMjAxNi0xMS0wNyAxNTo0NjoxOC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2Rucy9k bnNfY29uZmlnX3NlcnZpY2VfcG9zaXguY2MJMjAxNi0xMi0yMCAwMzo0MDowNy42NzE5NTMwOTgg KzAxMDAKLUBAIC02LDYgKzYsMTAgQEAKLSAKLSAjaW5jbHVkZSA8c3RyaW5nPgotIAotKyNpZiAh ZGVmaW5lZChfX0dMSUJDX18pCi0rI2luY2x1ZGUgInJlc29sdl9jb21wYXQuaCIKLSsjZW5kaWYK LSsKLSAjaW5jbHVkZSAiYmFzZS9iaW5kLmgiCi0gI2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZS5o IgotICNpbmNsdWRlICJiYXNlL2ZpbGVzL2ZpbGVfcGF0aC5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDE1LW11c2wtc2lnaW5mb190LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDE1LW11c2wtc2lnaW5mb190LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBmZTc2MGJlMTY2Ni4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDE1LW11c2wtc2lnaW5mb190LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot VGhlcmUncyBhIHN1YnRsZSBkaWZmZXJlbmNlIGluIHRoZSBpbnRlcm5hbCBuYW1lIG9mIHNpZ2lu Zm9fdCBmaWVsZHMKLWJldHdlZW4gZ2xpYmMgYW5kIG11c2wuIFRoZSBzdHJ1Y3R1cmUgaXRzZWxm IGlzIGVxdWl2YWxlbnQsIHNvIGl0Ci1zaG91bGQgc3VmZmljZSB0byBhZGQgYSBtYWNybyB0byBy ZW5hbWUgdGhlIGZpZWxkLgotCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvdHJhcC5jYwkyMDE1LTAyLTE3IDA1OjU3OjQzLjAw MDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MJMjAxNS0wNi0wMyAwODoyMDoyNS4wMzI3MTY0 MjcgKzAyMDAKLUBAIC0yMiw2ICsyMiwxMSBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3Nl cnZpY2VzL2FuZHJvaWRfdWNvbnRleHQuaCIKLSAjZW5kaWYKLQotKy8vIG11c2wgbGliYyBkZWZp bmVzIHNpZ2luZm9fdCBfX3NpX2ZpZWxkcyBpbnN0ZWFkIG9mIF9zaWZpZWxkcwotKyNpZiAhZGVm aW5lZChfX0dMSUJDX18pCi0rI2RlZmluZSBfc2lmaWVsZHMgX19zaV9maWVsZHMKLSsjZW5kaWYK LSsKLSBuYW1lc3BhY2UgewotCi0gY29uc3QgaW50IGtDYXBhY2l0eUluY3JlbWVudCA9IDIwOwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE3LW11c2wtc3RhY2tzdGFydC5wYXRj aCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MTM2YmMyYmNkLi4wMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMjAgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tfdXRpbC5jYwky MDE4LTAxLTI3IDIzOjA4OjQzLjU4NjQ3NTM0OSArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYv c3RhY2tfdXRpbC5jYwkyMDE4LTAxLTI3IDIzOjE4OjIyLjI3NDUwNTIwMyArMDEwMAotQEAgLTI4 LDcgKzI4LDcgQEAKLSAvLyBGSVhNRTogT24gTWFjIE9TWCBhbmQgTGludXgsIHRoaXMgbWV0aG9k IGNhbm5vdCBlc3RpbWF0ZSBzdGFjayBzaXplCi0gLy8gY29ycmVjdGx5IGZvciB0aGUgbWFpbiB0 aHJlYWQuCi0gCi0tI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQp IHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAotKyNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBk ZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAotICAgICBkZWZp bmVkKE9TX0ZVQ0hTSUEpCi0gICAvLyBwdGhyZWFkX2dldGF0dHJfbnAoKSBjYW4gZmFpbCBpZiB0 aGUgdGhyZWFkIGlzIG5vdCBpbnZva2VkIGJ5Ci0gICAvLyBwdGhyZWFkX2NyZWF0ZSgpIChlLmcu LCB0aGUgbWFpbiB0aHJlYWQgb2Ygd2Via2l0X3VuaXRfdGVzdHMpLgotQEAgLTk2LDcgKzk2LDcg QEAKLSB9Ci0gCi0gdm9pZCogR2V0U3RhY2tTdGFydCgpIHsKLS0jaWYgZGVmaW5lZChfX0dMSUJD X18pIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCi0r I2lmIGRlZmluZWQoT1NfTElOVVgpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChP U19GUkVFQlNEKSB8fCBcCi0gICAgIGRlZmluZWQoT1NfRlVDSFNJQSkKLSAgIHB0aHJlYWRfYXR0 cl90IGF0dHI7Ci0gICBpbnQgZXJyb3I7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMjAtbXVzbC1zYW5kYm94LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIwLW11c2wt c2FuZGJveC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNkZTFlNDExODMu LjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMC1tdXNsLXNhbmRib3gu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNj YWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAw MDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25z LmNjCTIwMTgtMDktMTMgMTk6NTM6NTMuNDUzNzgwMjUzICswMjAwCi1AQCAtMTI5LDcgKzEyOSw3 IEBACi0gLy8gQ0xPTkVfVk0sIG5vciBDTE9ORV9USFJFQUQsIHdoaWNoIGluY2x1ZGVzIGFsbCBm b3JrKCkgaW1wbGVtZW50YXRpb25zLgotIFJlc3VsdEV4cHIgUmVzdHJpY3RDbG9uZVRvVGhyZWFk c0FuZEVQRVJNRm9yaygpIHsKLSAgIGNvbnN0IEFyZzx1bnNpZ25lZCBsb25nPiBmbGFncygwKTsK LS0KLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gICAvLyBUT0RPKG1kZW1wc2t5KTogRXh0ZW5k IERTTCB0byBzdXBwb3J0IChmbGFncyAmIH5tYXNrMSkgPT0gbWFzazIuCi0gICBjb25zdCB1aW50 NjRfdCBrQW5kcm9pZENsb25lTWFzayA9IENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxF UyB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT05FX1NJR0hBTkQg fCBDTE9ORV9USFJFQUQgfAotQEAgLTE0OCw2ICsxNDgsMTcgQEAKLSAgIHJldHVybiBJZihJc0Fu ZHJvaWQoKSA/IGFuZHJvaWRfdGVzdCA6IGdsaWJjX3Rlc3QsIEFsbG93KCkpCi0gICAgICAgLkVs c2VJZigoZmxhZ3MgJiAoQ0xPTkVfVk0gfCBDTE9ORV9USFJFQUQpKSA9PSAwLCBFcnJvcihFUEVS TSkpCi0gICAgICAgLkVsc2UoQ3Jhc2hTSUdTWVNDbG9uZSgpKTsKLSsjZWxzZQotKyAgY29uc3Qg aW50IHJlcXVpcmVkID0gQ0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05FX0ZJTEVTIHwgQ0xPTkVf U0lHSEFORCB8Ci0rICAgICAgICAgICAgICAgICAgICAgICBDTE9ORV9USFJFQUQgfCBDTE9ORV9T WVNWU0VNOwotKyAgY29uc3QgaW50IHNhZmUgPSBDTE9ORV9TRVRUTFMgfCBDTE9ORV9QQVJFTlRf U0VUVElEIHwgQ0xPTkVfQ0hJTERfQ0xFQVJUSUQgfAotKyAgICAgICAgICAgICAgICAgICBDTE9O RV9ERVRBQ0hFRDsKLSsgIGNvbnN0IEJvb2xFeHByIHRocmVhZF9jbG9uZV9vayA9IChmbGFncyZ+ c2FmZSk9PXJlcXVpcmVkOwotKwotKyAgcmV0dXJuIElmKHRocmVhZF9jbG9uZV9vaywgQWxsb3co KSkKLSsgICAgICAuRWxzZUlmKChmbGFncyAmIChDTE9ORV9WTSB8IENMT05FX1RIUkVBRCkpID09 IDAsIEVycm9yKEVQRVJNKSkKLSsgICAgICAuRWxzZShDcmFzaFNJR1NZU0Nsb25lKCkpOwotKyNl bmRpZgotIH0KLSAKLSBSZXN1bHRFeHByIFJlc3RyaWN0UHJjdGwoKSB7Ci0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVy cy9zeXNjYWxsX3NldHMuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwkyMDE4LTA5LTEzIDE5OjU2OjMxLjc3OTc3Mzk0 MCArMDIwMAotQEAgLTM3NSw2ICszNzUsOSBAQAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKQotICAg ICBjYXNlIF9fTlJfd2FpdHBpZDoKLSAjZW5kaWYKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQot KyAgICBjYXNlIF9fTlJfc2V0X3RpZF9hZGRyZXNzOgotKyNlbmRpZgotICAgICAgIHJldHVybiB0 cnVlOwotICAgICBjYXNlIF9fTlJfY2xvbmU6ICAvLyBTaG91bGQgYmUgcGFyYW1ldGVyLXJlc3Ry aWN0ZWQuCi0gICAgIGNhc2UgX19OUl9zZXRuczogIC8vIFByaXZpbGVnZWQuCi1AQCAtMzg3LDcg KzM5MCw5IEBACi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX21pcHNfXykKLSAgICAgY2FzZSBfX05SX3NldF90aHJlYWRfYXJlYToKLSAj ZW5kaWYKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gICAgIGNhc2UgX19OUl9zZXRfdGlkX2Fk ZHJlc3M6Ci0rI2VuZGlmCi0gICAgIGNhc2UgX19OUl91bnNoYXJlOgotICNpZiAhZGVmaW5lZChf X21pcHNfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pCi0gICAgIGNhc2UgX19OUl92Zm9yazoK LUBAIC00OTYsNiArNTAxLDkgQEAKLSAgICAgY2FzZSBfX05SX21sb2NrOgotICAgICBjYXNlIF9f TlJfbXVubG9jazoKLSAgICAgY2FzZSBfX05SX211bm1hcDoKLSsjaWYgIWRlZmluZWQoX19HTElC Q19fKQotKyAgICBjYXNlIF9fTlJfbXJlbWFwOgotKyNlbmRpZgotICAgICAgIHJldHVybiB0cnVl OwotICAgICBjYXNlIF9fTlJfbWFkdmlzZToKLSAgICAgY2FzZSBfX05SX21pbmNvcmU6Ci1AQCAt NTExLDcgKzUxOSw5IEBACi0gICAgIGNhc2UgX19OUl9tb2RpZnlfbGR0OgotICNlbmRpZgotICAg ICBjYXNlIF9fTlJfbXByb3RlY3Q6Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICBjYXNl IF9fTlJfbXJlbWFwOgotKyNlbmRpZgotICAgICBjYXNlIF9fTlJfbXN5bmM6Ci0gICAgIGNhc2Ug X19OUl9tdW5sb2NrYWxsOgotICAgICBjYXNlIF9fTlJfcmVhZGFoZWFkOgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaCBiL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDAyMy1lbmFibGVfdG9vbHMtY3Jvc3MucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDllYWM0ZTcwZWZhLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwMjMtZW5hYmxlX3Rvb2xzLWNyb3NzLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsNDYgKzAsMCBAQAotLS0tIHF0dG9vbHMvc3JjL3NyYy5wcm8JMjAxOC0wNi0wOSAxMzox MDozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHRvb2xzL3NyYy9zcmMucHJvCTIwMTgtMDgtMTkg MDk6MzQ6MjkuODAzNjcwMjA1ICswMjAwCi1AQCAtMSwyMCArMSwxNCBAQAotIFRFTVBMQVRFID0g c3ViZGlycwotIAotLXF0SGF2ZU1vZHVsZSh3aWRnZXRzKSB7Ci0tICAgIG5vLXBuZyB7Ci0tICAg ICAgICBtZXNzYWdlKCJTb21lIGdyYXBoaWNzLXJlbGF0ZWQgdG9vbHMgYXJlIHVuYXZhaWxhYmxl IHdpdGhvdXQgUE5HIHN1cHBvcnQiKQotLSAgICB9IGVsc2UgewotLSAgICAgICAgUVRfRk9SX0NP TkZJRyArPSB3aWRnZXRzCi0tICAgICAgICBxdENvbmZpZyhwdXNoYnV0dG9uKTpxdENvbmZpZyh0 b29sYnV0dG9uKSB7Ci0tICAgICAgICAgICAgU1VCRElSUyA9IGFzc2lzdGFudCBcCi0tICAgICAg ICAgICAgICAgICAgICAgIGRlc2lnbmVyIFwKLS0gICAgICAgICAgICAgICAgICAgICAgcGl4ZWx0 b29sCi0tCi0tICAgICAgICAgICAgbGluZ3Vpc3QuZGVwZW5kcyA9IGRlc2lnbmVyCi0tICAgICAg ICB9Ci0tICAgICAgICBxdEhhdmVNb2R1bGUocXVpY2spOnF0Q29uZmlnKHRocmVhZCk6cXRDb25m aWcodG9vbGJ1dHRvbik6IFNVQkRJUlMgKz0gZGlzdGFuY2VmaWVsZGdlbmVyYXRvcgotLSAgICB9 Ci0tfQotK1FUX0ZPUl9DT05GSUcgKz0gd2lkZ2V0cwotKwotK1NVQkRJUlMgPSBhc3Npc3RhbnQg XAotKyAgICAgICAgICBkZXNpZ25lciBcCi0rICAgICAgICAgIHBpeGVsdG9vbAotKwotK2xpbmd1 aXN0LmRlcGVuZHMgPSBkZXNpZ25lcgotKwotK1NVQkRJUlMgKz0gZGlzdGFuY2VmaWVsZGdlbmVy YXRvcgotIAotIFNVQkRJUlMgKz0gbGluZ3Vpc3QgXAotICAgICBxdGF0dHJpYnV0aW9uc3NjYW5u ZXIKLUBAIC0zMSwxMSArMjUsMTEgQEAgbWFjb3MgewotICAgICBTVUJESVJTICs9IG1hY2RlcGxv eXF0Ci0gfQotIAotLXF0SGF2ZU1vZHVsZShkYnVzKTogU1VCRElSUyArPSBxZGJ1cwotK1NVQkRJ UlMgKz0gcWRidXMKLSAKLSB3aW4zMnx3aW5ydDpTVUJESVJTICs9IHdpbmRlcGxveXF0Ci0gd2lu cnQ6U1VCRElSUyArPSB3aW5ydHJ1bm5lcgotLXF0SGF2ZU1vZHVsZShndWkpOiF3YXNtOiFhbmRy b2lkOiF1aWtpdDohcW54OiF3aW5ydDogU1VCRElSUyArPSBxdGRpYWcKLStTVUJESVJTICs9IHF0 ZGlhZwotIAotIHF0Tm9tYWtlVG9vbHMoIFwKLSAgICAgZGlzdGFuY2VmaWVsZGdlbmVyYXRvciBc CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjUtbXVzbC1jaHJvbWl1bS1kZWZh dWx0LXN0YWNrc2l6ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNS1tdXNsLWNocm9t aXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA3YmY1YTIyZmJhNy4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI1 LW11c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxNSArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv dGhyZWFkaW5nL3BsYXRmb3JtX3RocmVhZF9saW51eC5jYy5vcmlnCTIwMTgtMDktMTkgMTg6MDU6 MTUuNTIzOTIzNzAzICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2Jhc2UvdGhyZWFkaW5nL3BsYXRmb3JtX3RocmVhZF9saW51eC5jYwkyMDE4LTA5LTE5IDE4OjA4 OjA1LjE1MDkzMjQ1NCArMDIwMAotQEAgLTE3Myw3ICsxNzMsMTIgQEAKLSAKLSBzaXplX3QgR2V0 RGVmYXVsdFRocmVhZFN0YWNrU2l6ZShjb25zdCBwdGhyZWFkX2F0dHJfdCYgYXR0cmlidXRlcykg ewotICNpZiAhZGVmaW5lZChUSFJFQURfU0FOSVRJWkVSKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNf XykKLSAgIHJldHVybiAwOwotKyNlbHNlIC8vIGRlZmluZWQoX19HTElCQ19fKQotKyAgLy8gRm9y IE11c2wgbGliYyB0cnkgd2l0aCBhIGRlZmF1bHQgc3RhY2sgc2l6ZSBvZiAyIE1pQgotKyAgcmV0 dXJuIDIgKiAxMDI0ICogMTAyNDsKLSsjZW5kaWYgLy8gIWRlZmluZWQoX19HTElCQ19fKQotICNl bHNlCi0gICAvLyBUaHJlYWRTYW5pdGl6ZXIgYmxvYXRzIHRoZSBzdGFjayBoZWF2aWx5LiBFdmlk ZW5jZSBoYXMgYmVlbiB0aGF0IHRoZQotICAgLy8gZGVmYXVsdCBzdGFjayBzaXplIGlzbid0IGVu b3VnaCBmb3Igc29tZSBicm93c2VyIHRlc3RzLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDI2LWRhdGFfcGFjay1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNi1k YXRhX3BhY2stYmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMTNkZGI2 NTY2Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjYtZGF0YV9wYWNr LWJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYy5vcmln CTIwMTgtMDktMTEgMTQ6MTY6NTMuMTA0ODk3Mzc5ICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNjCTIwMTgtMDkt MTEgMTQ6MTc6MTIuMDA5ODk2MjUzICswMjAwCi1AQCAtMzgzLDEyICszODMsNiBAQAotIAotIGJv b2wgRGF0YVBhY2s6OkdldFN0cmluZ1BpZWNlKHVpbnQxNl90IHJlc291cmNlX2lkLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6OlN0cmluZ1BpZWNlKiBkYXRhKSBjb25zdCB7 Ci0tICAvLyBJdCB3b24ndCBiZSBoYXJkIHRvIG1ha2UgdGhpcyBlbmRpYW4tYWdub3N0aWMsIGJ1 dCBpdCdzIG5vdCB3b3J0aAotLSAgLy8gYm90aGVyaW5nIHRvIGRvIHJpZ2h0IG5vdy4KLS0jaWYg IWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLS0jZXJyb3IgImRhdGFwYWNrIGFzc3Vt ZXMgbGl0dGxlIGVuZGlhbiIKLS0jZW5kaWYKLS0KLSAgIGNvbnN0IEVudHJ5KiB0YXJnZXQgPSBM b29rdXBFbnRyeUJ5SWQocmVzb3VyY2VfaWQpOwotICAgaWYgKCF0YXJnZXQpCi0gICAgIHJldHVy biBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNy1yZW1vdmUtZ2xp YmMtY2hlY2sucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjctcmVtb3ZlLWdsaWJjLWNo ZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDBhYjg0OWMwMS4uMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI3LXJlbW92ZS1nbGliYy1jaGVj ay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9j b25maWcudGVzdHMvZ2xpYmMvZ2xpYmMuY3BwCi0rKysgcXR3ZWJlbmdpbmUvY29uZmlnLnRlc3Rz L2dsaWJjL2dsaWJjLmNwcAotQEAgLTI4LDEwICsyOCw2IEBACi0gCi0gI2luY2x1ZGUgPGZlYXR1 cmVzLmg+Ci0gCi0tI2lmIF9fR0xJQkNfXyA8IDIgfHwgX19HTElCQ19NSU5PUl9fIDwgMTcKLS0j ZXJyb3IgZ2xpYmMgdmVyc2lvbnMgYmVsb3cgMi4xNyBhcmUgbm90IHN1cHBvcnRlZAotLSNlbmRp ZgotLQotIGludCBtYWluKGludCAsIGNoYXIgKiopIHsKLSAgIHJldHVybiAwOwotIH0KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAzMi1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2Vf aC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAzMi1tdXNsLWNyb3NzLW5vLWFzbV9wdHJh Y2VfaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQwNzQyZjcyYzIuLjAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAzMi1tdXNsLWNyb3NzLW5vLWFz bV9wdHJhY2VfaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5j YwkyMDE4LTA4LTI3IDEwOjIxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCTIwMTgtMTEt MjIgMDA6NDE6NTguNTIyNDc3NTU5ICswMTAwCi1AQCAtMzgsNyArMzgsMTIgQEAKLSAKLSAjaW5j bHVkZSAiY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmgi Ci0gCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0r I2Vsc2UKLSsvKiBGb3IgYXJtKi1tdXNsIHRoaXMgZGVmaW5pdGlvbiBpcyBtaXNzaW5nICovCi0r I2RlZmluZSBBUk1fc3AgdXJlZ3NbMTNdCi0rI2VuZGlmCi0gI2luY2x1ZGUgPGFzc2VydC5oPgot ICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYwkyMDE4LTA4 LTI3IDEwOjIxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYwkyMDE4LTExLTIyIDAwOjQ5OjM5 LjUzMzQ5MjI0NSArMDEwMAotQEAgLTMyLDcgKzMyLDEyIEBACi0gCi0gI2luY2x1ZGUgImNsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuaCIKLSAKLSsjaWYgZGVm aW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsjZWxzZQotKy8qIEZv ciBhcm0qLW11c2wgdGhpcyBkZWZpbml0aW9uIGlzIG1pc3NpbmcgKi8KLSsjZGVmaW5lIEFSTV9z cCB1cmVnc1sxM10KLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVs Zi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDQwLXlhc20tbmxzLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQwLXlhc20tbmxz LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmFjMDQyMDc2NC4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQwLXlhc20tbmxzLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotZGlmZiAtLWdpdCBzcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkveWFzbS9zb3VyY2UvY29uZmlnL2xpbnV4L2NvbmZpZy5oIHNyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmln LmgKLWluZGV4IDllMzY1MzkuLmY1ODgwODMgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtLy90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29u ZmlnLmgKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3RoaXJkX3BhcnR5 L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9jb25maWcuaAotQEAgLTUsNyArNSw3IEBACi0gI2Rl ZmluZSBDUFBfUFJPRyAiZ2NjIC1FIgotIAotIC8qICovCi0tI2RlZmluZSBFTkFCTEVfTkxTIDEK LSsvKiAjdW5kZWYgRU5BQkxFX05MUyAxICovCi0gCi0gLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh dmUgdGhlIGBhYm9ydCcgZnVuY3Rpb24uICovCi0gI2RlZmluZSBIQVZFX0FCT1JUIDEKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1pcy1ub3QtYW5kcm9pZC5w YXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1pcy1ub3QtYW5kcm9pZC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEzMjkwZDNjY2QuLjAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1pcy1ub3QtYW5kcm9p ZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vL3RoaXJkX3BhcnR5L29wZW5tYXhfZGwvZGwvQlVJTEQuZ24J MjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyAtCTIwMTktMDUtMDYgMjM6 MDg6MDkuNTM3MzQ2NTQ2ICswMjAwCi1AQCAtMjA2LDE4ICsyMDYsNiBAQAotICAgICAgICJzcC9z cmMvYXJtL2FybXY3L29teFNQX0ZGVEZ3ZF9SVG9DQ1NfRjMyX1Nmc19zLlMiLAotICAgICAgICJz cC9zcmMvYXJtL2FybXY3L29teFNQX0ZGVEludl9DQ1NUb1JfRjMyX1Nmc19zLlMiLAotICAgICBd Ci0tICAgIGlmIChhcm1fb3B0aW9uYWxseV91c2VfbmVvbikgewotLSAgICAgICMgUnVuLXRpbWUg TkVPTiBkZXRlY3Rpb24uCi0tICAgICAgZGVwcyA9IFsKLS0gICAgICAgICIvL3RoaXJkX3BhcnR5 L2FuZHJvaWRfdG9vbHM6Y3B1X2ZlYXR1cmVzIiwKLS0gICAgICBdCi0tCi0tICAgICAgIyBUbyBn ZXQgdGhlIF9fYW5kcm9pZF9sb2dfcHJpbnQgcm91dGluZQotLSAgICAgIGxpYnMgPSBbICJsb2ci IF0KLS0KLS0gICAgICAjIERldGVjdGlvbiByb3V0aW5lCi0tICAgICAgc291cmNlcyArPSBbICJz cC9zcmMvYXJtL2RldGVjdC5jIiBdCi0tICAgIH0KLSAgIH0KLSAKLSAgICMgTkVPTiBpbXBsZW1l bnRhdGlvbiBvZiBGRlQuIFRoaXMgbGlicmFyeSBpcyBOT1QKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDQ0LXF0LW11c2wtZXhlY2luZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDk4ZjNhMzg3NDVhLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCww IEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2RlYnVnL3N0 YWNrX3RyYWNlX3Bvc2l4LmNjLm9yaWcJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAy MDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2UvZGVidWcvc3Rh Y2tfdHJhY2VfcG9zaXguY2MJMjAxOS0wNS0wNiAyMzoxNjoxMy4yNDU1MDI0NjcgKzAyMDAKLUBA IC0yNyw3ICsyNyw3IEBACi0gI2lmICFkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCi0gI2luY2x1ZGUg PGN4eGFiaS5oPgotICNlbmRpZgotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5l ZChfQUlYKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSAjaW5j bHVkZSA8ZXhlY2luZm8uaD4KLSAjZW5kaWYKLSAKLUBAIC04Niw3ICs4Niw3IEBACi0gICAvLyBO b3RlOiBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgTk9UIGFzeW5jLXNpZ25hbCBzYWZlIChzdGQ6 OnN0cmluZyB1c2VzCi0gICAvLyBtYWxsb2MgaW50ZXJuYWxseSkuCi0gCi0tI2lmICFkZWZpbmVk KF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAm JiAhZGVmaW5lZChfQUlYKQotICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzZWFyY2hfZnJvbSA9 IDA7Ci0gICB3aGlsZSAoc2VhcmNoX2Zyb20gPCB0ZXh0LT5zaXplKCkpIHsKLSAgICAgLy8gTG9v ayBmb3IgdGhlIHN0YXJ0IG9mIGEgbWFuZ2xlZCBzeW1ib2wsIGZyb20gc2VhcmNoX2Zyb20uCi1A QCAtMTIxLDcgKzEyMSw3IEBACi0gICAgICAgc2VhcmNoX2Zyb20gPSBtYW5nbGVkX3N0YXJ0ICsg MjsKLSAgICAgfQotICAgfQotLSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRl ZmluZWQoX0FJWCkKLSsjZW5kaWYgIC8vICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQo X0FJWCkKLSB9Ci0gI2VuZGlmICAvLyAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQotIAotQEAgLTEz Myw3ICsxMzMsNyBAQAotICAgdmlydHVhbCB+QmFja3RyYWNlT3V0cHV0SGFuZGxlcigpID0gZGVm YXVsdDsKLSB9OwotIAotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlY KQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSB2b2lkIE91dHB1 dFBvaW50ZXIodm9pZCogcG9pbnRlciwgQmFja3RyYWNlT3V0cHV0SGFuZGxlciogaGFuZGxlcikg ewotICAgLy8gVGhpcyBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBzdG9yZSBhIDY0LWJp dCBudW1iZXIgaW4gaGV4OgotICAgLy8gMTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51bGwtdGVybWlu YXRvci4KLUBAIC0yMTYsNyArMjE2LDcgQEAKLSAgIH0KLSAjZW5kaWYgIC8vIGRlZmluZWQoVVNF X1NZTUJPTElaRSkKLSB9Ci0tI2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVm aW5lZChfQUlYKQotKyNlbmRpZiAgLy8gIWRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChf QUlYKQotIAotIHZvaWQgUHJpbnRUb1N0ZGVycihjb25zdCBjaGFyKiBvdXRwdXQpIHsKLSAgIC8v IE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkg aW4tcHJvY2VzcwotQEAgLTgxMiw3ICs4MTIsNyBAQAotICAgLy8gTk9URTogVGhpcyBjb2RlIE1V U1QgYmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCi0gICAvLyBz dGFjayBkdW1waW5nIHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlvIGlzIGFsbG93 ZWQgaGVyZS4KLSAKLS0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkK LSsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0gICAvLyBUaG91Z2gg dGhlIGJhY2t0cmFjZSBBUEkgbWFuIHBhZ2UgZG9lcyBub3QgbGlzdCBhbnkgcG9zc2libGUgbmVn YXRpdmUKLSAgIC8vIHJldHVybiB2YWx1ZXMsIHdlIHRha2Ugbm8gY2hhbmNlLgotICAgcmV0dXJu IGJhc2U6OnNhdHVyYXRlZF9jYXN0PHNpemVfdD4oYmFja3RyYWNlKHRyYWNlLCBjb3VudCkpOwot QEAgLTgyNSwxMyArODI1LDEzIEBACi0gLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMt c2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCi0gLy8gc3RhY2sgZHVtcGluZyBz aWduYWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCi0gCi0t I2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQo X19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotICAgUHJpbnRCYWNrdHJhY2VPdXRwdXRIYW5k bGVyIGhhbmRsZXI7Ci0gICBQcm9jZXNzQmFja3RyYWNlKHRyYWNlXywgY291bnRfLCBwcmVmaXhf c3RyaW5nLCAmaGFuZGxlcik7Ci0gI2VuZGlmCi0gfQotIAotLSNpZiAhZGVmaW5lZChfX1VDTElC Q19fKSAmJiAhZGVmaW5lZChfQUlYKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmlu ZWQoX0FJWCkKLSB2b2lkIFN0YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtV2l0aFByZWZpeChzdGQ6 Om9zdHJlYW0qIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKLSAgIFN0cmVhbUJhY2t0cmFjZU91 dHB1dEhhbmRsZXIgaGFuZGxlcihvcyk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2UuY2MJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAw MDAwMDAgKzAyMDAKLSsrKyAtCTIwMTktMDUtMDYgMjM6MTg6MTQuOTIzNTY2OTkyICswMjAwCi1A QCAtMjMzLDcgKzIzMyw3IEBACi0gfQotIHN0ZDo6c3RyaW5nIFN0YWNrVHJhY2U6OlRvU3RyaW5n V2l0aFByZWZpeChjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7Ci0gICBzdGQ6OnN0 cmluZ3N0cmVhbSBzdHJlYW07Ci0tI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVk KF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotICAgT3V0 cHV0VG9TdHJlYW1XaXRoUHJlZml4KCZzdHJlYW0sIHByZWZpeF9zdHJpbmcpOwotICNlbmRpZgot ICAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vL2Jhc2UvbG9nZ2luZy5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEw MAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vYmFzZS9sb2dnaW5nLmNj CTIwMTgtMDEtMjcgMjI6NDY6MzQuOTcwNDA2ODA3ICswMTAwCi1AQCAtNTQ2LDcgKzU0Niw3IEBA Ci0gCi0gTG9nTWVzc2FnZTo6fkxvZ01lc3NhZ2UoKSB7Ci0gICBzaXplX3Qgc3RhY2tfc3RhcnQg PSBzdHJlYW1fLnRlbGxwKCk7Ci0tI2lmICFkZWZpbmVkKE9GRklDSUFMX0JVSUxEKSAmJiAhZGVm aW5lZChPU19OQUNMKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiBcCi0rI2lmICFkZWZpbmVk KE9GRklDSUFMX0JVSUxEKSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiBkZWZpbmVkKF9fR0xJQkNf XykgJiYgXAotICAgICAhZGVmaW5lZChPU19BSVgpCi0gICBpZiAoc2V2ZXJpdHlfID09IExPR19G QVRBTCAmJiAhYmFzZTo6ZGVidWc6OkJlaW5nRGVidWdnZWQoKSkgewotICAgICAvLyBJbmNsdWRl IGEgc3RhY2sgdHJhY2Ugb24gYSBmYXRhbCwgdW5sZXNzIGEgZGVidWdnZXIgaXMgYXR0YWNoZWQu Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9hc3NlcnRpb25zLmNjCTIwMTktMDQtMDkgMDk6MzE6MTYu MDAwMDAwMDAwICswMjAwCi0rKysgLQkyMDE5LTA1LTA2IDIzOjEyOjA3LjA0MDk3NzI1OCArMDIw MAotQEAgLTUxLDggKzUxLDEwIEBACi0gI2lmIGRlZmluZWQoT1NfTUFDT1NYKSB8fCAoZGVmaW5l ZChPU19MSU5VWCkgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykpCi0gI2luY2x1ZGUgPGN4eGFiaS5o PgotICNpbmNsdWRlIDxkbGZjbi5oPgotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVk ZSA8ZXhlY2luZm8uaD4KLSAjZW5kaWYKLSsjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChPU19BTkRS T0lEKQotICNpbmNsdWRlIDxhbmRyb2lkL2xvZy5oPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDQ1LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDA0NS1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDQ5Njc1M2JlZjMwLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMjYgKzAsMCBAQAotZGlmZiAtLWdpdCBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9wcGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjIGIvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MKLWluZGV4 IDAyYmY0OWIuLjA1ZWUxODIgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2lt cGxlX3RocmVhZC5jYwotQEAgLTEzLDcgKzEzLDcgQEAgbmFtZXNwYWNlIHBwIHsKLSBuYW1lc3Bh Y2UgewotIAotIC8vIFVzZSAyTUIgZGVmYXVsdCBzdGFjayBzaXplIGZvciBOYXRpdmUgQ2xpZW50 LCBvdGhlcndpc2UgdXNlIHN5c3RlbSBkZWZhdWx0LgotLSNpZiBkZWZpbmVkKF9fbmF0aXZlX2Ns aWVudF9fKQotKyNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8fCAhZGVmaW5lZChfX0dM SUJDX18pCi0gY29uc3Qgc2l6ZV90IGtEZWZhdWx0U3RhY2tTaXplID0gMiAqIDEwMjQgKiAxMDI0 OwotICNlbHNlCi0gY29uc3Qgc2l6ZV90IGtEZWZhdWx0U3RhY2tTaXplID0gMDsKLWRpZmYgLS1n aXQgYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxhdGZvcm0t cG9zaXguY2MgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxh dGZvcm0tcG9zaXguY2MKLWluZGV4IGNmN2YzZWMuLmUwNmE1Y2UgMTAwNjQ0Ci0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3Jt LXBvc2l4LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9i YXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjCi1AQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQg VGhyZWFkOjpTdGFydCgpIHsKLSAjaWYgVjhfT1NfTUFDT1NYCi0gICAgIC8vIERlZmF1bHQgb24g TWFjIE9TIFggaXMgNTEya0IgLS0gYnVtcCB1cCB0byAxTUIKLSAgICAgc3RhY2tfc2l6ZSA9IDEg KiAxMDI0ICogMTAyNDsKLS0jZWxpZiBWOF9PU19BSVgKLSsjZWxpZiBWOF9PU19BSVggfHwgIWRl ZmluZWQoX19HTElCQ19fKQotICAgICAvLyBEZWZhdWx0IG9uIEFJWCBpcyA5NmtCIC0tIGJ1bXAg dXAgdG8gMk1CCi0gICAgIHN0YWNrX3NpemUgPSAyICogMTAyNCAqIDEwMjQ7Ci0gI2VuZGlmCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1iYXJyaWVyLnBh dGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVtYmFycmllci5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjczOTcxZjI0MzIuLjAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ni1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5c2Nh bGxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaAotQEAgLTEwNjMsNCArMTA2 Myw4IEBACi0gI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAyNzkKLSAjZW5kaWYKLSAKLSsjaWYg IWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQotKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIDI4Mwot KyNlbmRpZgotKwotICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19BUk02 NF9MSU5VWF9TWVNDQUxMU19IXwotCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3Rl bV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oCi1AQCAtMTM4NSw2ICsxMzg1LDEwIEBACi0g I2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAoX19OUl9TWVNDQUxMX0JBU0UrMzg1KQotICNlbmRp ZgotIAotKyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCi0rI2RlZmluZSBfX05SX21lbWJh cnJpZXIgKF9fTlJfU1lTQ0FMTF9CQVNFKzM4OSkKLSsjZW5kaWYKLSsKLSAvLyBBUk0gcHJpdmF0 ZSBzeXNjYWxscy4KLSAjaWYgIWRlZmluZWQoX19BUk1fTlJfQkFTRSkKLSAjZGVmaW5lIF9fQVJN X05SX0JBU0UgKF9fTlJfU1lTQ0FMTF9CQVNFICsgMHhGMDAwMCkKLQotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZf MzJfbGludXhfc3lzY2FsbHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfMzJfbGludXhfc3lzY2FsbHMuaAot QEAgLTE0MjIsNSArMTQyMiw5IEBACi0gI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAzNTYKLSAj ZW5kaWYKLSAKLSsjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQotKyNkZWZpbmUgX19OUl9t ZW1iYXJyaWVyIDM3NQotKyNlbmRpZgotKwotICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNU RU1fSEVBREVSU19YODZfMzJfTElOVVhfU1lTQ0FMTFNfSF8KLSAKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0 X2xpbnV4X3N5c2NhbGxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v L3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0X2xpbnV4X3N5c2NhbGxzLmgKLUBA IC0xMjkwLDUgKzEyOTAsOSBAQAotICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgMzE5Ci0gI2Vu ZGlmCi0gCi0rI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKLSsjZGVmaW5lIF9fTlJfbWVt YmFycmllciAzMjQKLSsjZW5kaWYKLSsKLSAjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVN X0hFQURFUlNfWDg2XzY0X0xJTlVYX1NZU0NBTExTX0hfCi0gCi0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lz Y2FsbF9zZXRzLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCi1AQCAtMzcwLDYg KzM3MCw3IEBACi0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9leGl0OgotICAg ICBjYXNlIF9fTlJfZXhpdF9ncm91cDoKLSsgICAgY2FzZSBfX05SX21lbWJhcnJpZXI6Ci0gICAg IGNhc2UgX19OUl93YWl0NDoKLSAgICAgY2FzZSBfX05SX3dhaXRpZDoKLSAjaWYgZGVmaW5lZChf X2kzODZfXykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ny1nbi1jcm9zcy1z eXNyb290LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3LWduLWNyb3NzLXN5c3Jvb3Qu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNjY4OWE0MTgzLi4wMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDctZ24tY3Jvc3Mtc3lzcm9vdC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZXJlIGlzIG5vIHJlYXNvbiB0byBy dW4gdGhpcyBzY3JpcHQgYW5kIHJ1bm5pbmcgaXQgZmFpbHMgb24gYXJjaGl0ZWN0dXJlcwotY2hy b21pdW0gZG9lcyBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0IChzdWNoIGFzIHBwYzY0KS4KLQotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvcG9zaXgvQlVJ TEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvY29uZmln L3Bvc2l4L0JVSUxELmduCi1AQCAtMTAyLDEyICsxMDIsMTIgQEAgY29uZmlnKCJydW50aW1lX2xp YnJhcnkiKSB7Ci0gICAgICAgIyB3aGVuIHR1cm5pbmcgdGhlIHN5c3Jvb3Qgb24gb3Igb2ZmLiAo ZGVmaW5lcyBhcmUgcGFzc2VkIHZpYSB0aGUgY29tbWFuZAotICAgICAgICMgbGluZSwgYW5kIGJ1 aWxkIHN5c3RlbSByZWJ1aWxkcyB0aGluZ3Mgd2hlbiB0aGVpciBjb21tYW5kbGluZQotICAgICAg ICMgY2hhbmdlcykuIE5vdGhpbmcgc2hvdWxkIGV2ZXIgcmVhZCB0aGlzIGRlZmluZS4KLS0gICAg ICBzeXNyb290X2hhc2ggPQotLSAgICAgICAgICBleGVjX3NjcmlwdCgiLy9idWlsZC9saW51eC9z eXNyb290X3NjcmlwdHMvaW5zdGFsbC1zeXNyb290LnB5IiwKLS0gICAgICAgICAgICAgICAgICAg ICAgWyAiLS1wcmludC1oYXNoPSRjdXJyZW50X2NwdSIgXSwKLS0gICAgICAgICAgICAgICAgICAg ICAgInRyaW0gc3RyaW5nIiwKLS0gICAgICAgICAgICAgICAgICAgICAgWyAiLy9idWlsZC9saW51 eC9zeXNyb290X3NjcmlwdHMvc3lzcm9vdHMuanNvbiIgXSkKLS0gICAgICBkZWZpbmVzICs9IFsg IkNSX1NZU1JPT1RfSEFTSD0kc3lzcm9vdF9oYXNoIiBdCi0rICAgICAgI3N5c3Jvb3RfaGFzaCA9 Ci0rICAgICAgIyAgICBleGVjX3NjcmlwdCgiLy9idWlsZC9saW51eC9zeXNyb290X3NjcmlwdHMv aW5zdGFsbC1zeXNyb290LnB5IiwKLSsgICAgICAjICAgICAgICAgICAgICAgIFsgIi0tcHJpbnQt aGFzaD0kY3VycmVudF9jcHUiIF0sCi0rICAgICAgIyAgICAgICAgICAgICAgICAidHJpbSBzdHJp bmciLAotKyAgICAgICMgICAgICAgICAgICAgICAgWyAiLy9idWlsZC9saW51eC9zeXNyb290X3Nj cmlwdHMvc3lzcm9vdHMuanNvbiIgXSkKLSsgICAgICAjZGVmaW5lcyArPSBbICJDUl9TWVNST09U X0hBU0g9JHN5c3Jvb3RfaGFzaCIgXQotICAgICB9Ci0gICAgIGFzbWZsYWdzICs9IHN5c3Jvb3Rf ZmxhZ3MKLSAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA1MC1xbWFrZS1ta3Nw ZWNzLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDUwLXFtYWtlLW1rc3BlY3MucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJlZWFlNjMyY2ZlCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDUwLXFtYWtlLW1rc3BlY3MucGF0 Y2gKQEAgLTAsMCArMSwzMyBAQAorU3VibW9kdWxlIHF0YmFzZSBjb250YWlucyB1bnRyYWNrZWQg Y29udGVudAorU3VibW9kdWxlIHF0YmFzZSBjb250YWlucyBtb2RpZmllZCBjb250ZW50CitkaWZm IC0tZ2l0IHF0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL3F0X2J1aWxkX2NvbmZpZy5wcmYgcXRiYXNl L21rc3BlY3MvZmVhdHVyZXMvcXRfYnVpbGRfY29uZmlnLnByZgoraW5kZXggODI3M2JhM2ZlMS4u YjY3NGY0MjEwOSAxMDA2NDQKKy0tLSBxdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9xdF9idWlsZF9j b25maWcucHJmCisrKysgcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvcXRfYnVpbGRfY29uZmlnLnBy ZgorQEAgLTExLDYgKzExLDEwIEBACisgCisgIWNvbnRhaW5zKFFNQUtFX0lOVEVSTkFMX0lOQ0xV REVEX0ZJTEVTLCAuKnFtb2R1bGVcXC5wcmkpIHsKKyAgICAgUU1BS0VfUVRfTU9EVUxFID0gJCRb UVRfSE9TVF9EQVRBL2dldF0vbWtzcGVjcy9xbW9kdWxlLnByaQorKyAgICBkZWZpbmVkKFFNQUtF X1RBUkdFVF9NT0RVTEUsdmFyKTpleGlzdHMoJCRRTUFLRV9UQVJHRVRfTU9EVUxFKSB7CisrICAg ICAgICBRTUFLRV9RVF9NT0RVTEUgPSAkJFFNQUtFX1RBUkdFVF9NT0RVTEUKKysgICAgICAgIG1l c3NhZ2UoIlRyeWluZyAucW1vZHVsZS5wcmkgZnJvbSAoJCRRTUFLRV9RVF9DT05GSUcpIikKKysg ICAgfQorICAgICAhZXhpc3RzKCQkUU1BS0VfUVRfTU9EVUxFKXwhaW5jbHVkZSgkJFFNQUtFX1FU X01PRFVMRSwgIiIsIHRydWUpIHsKKyAgICAgICAgIGRlYnVnKDEsICJDYW5ub3QgbG9hZCBxbW9k dWxlLnByaSEiKQorICAgICB9IGVsc2UgeworZGlmZiAtLWdpdCBxdGJhc2UvbWtzcGVjcy9mZWF0 dXJlcy9xdF9jb25maWcucHJmIHF0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL3F0X2NvbmZpZy5wcmYK K2luZGV4IDkzYzU0ZTMwMTAuLmFhZmYyNmI1MmEgMTAwNjQ0CistLS0gcXRiYXNlL21rc3BlY3Mv ZmVhdHVyZXMvcXRfY29uZmlnLnByZgorKysrIHF0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL3F0X2Nv bmZpZy5wcmYKK0BAIC0xLDYgKzEsMTAgQEAKKyAjIFRoaXMgZmlsZSBpcyBsb2FkZWQgYXMgb25l IG9mIHRoZSBsYXN0IHRoaW5ncyBieSBhbGwgcW1ha2VzcGVjcy4KKyAKKyBRTUFLRV9RVF9DT05G SUcgPSAkJFtRVF9IT1NUX0RBVEEvZ2V0XS9ta3NwZWNzL3Fjb25maWcucHJpCisrZGVmaW5lZChR TUFLRV9UQVJHRVRfQ09ORklHLHZhcik6ZXhpc3RzKCQkUU1BS0VfVEFSR0VUX0NPTkZJRykgewor KyAgIFFNQUtFX1FUX0NPTkZJRyA9ICQkUU1BS0VfVEFSR0VUX0NPTkZJRworKyAgIG1lc3NhZ2Uo IlRyeWluZyAucWNvbmZpZy5wcmkgZnJvbSAoJCRRTUFLRV9RVF9DT05GSUcpIikKKyt9CisgIWV4 aXN0cygkJFFNQUtFX1FUX0NPTkZJRyl8IWluY2x1ZGUoJCRRTUFLRV9RVF9DT05GSUcsICIiLCB0 cnVlKSB7CisgICAgZGVidWcoMSwgIkNhbm5vdCBsb2FkIHFjb25maWcucHJpISIpCisgfSBlbHNl IHsKK1N1Ym1vZHVsZSBxdHdlYmVuZ2luZSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudApkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2NC5wYXRjaCBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA4OS13ZWJlbmdpbmUtcHBjNjQucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMmQ3ZTJkNjIyLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL3F0NS9wYXRjaGVzLzAwODktd2ViZW5naW5lLXBwYzY0LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjAgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvZnVuY3Rp b25zLnByZgotKysrIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvZnVuY3Rpb25zLnByZgot QEAgLTk1LDYgKzk1LDcgQEAKLSAgICAgY29udGFpbnMocXRBcmNoLCAiYXJtNjQiKTogcmV0dXJu KGFybTY0KQotICAgICBjb250YWlucyhxdEFyY2gsICJtaXBzIik6IHJldHVybihtaXBzZWwpCi0g ICAgIGNvbnRhaW5zKHF0QXJjaCwgIm1pcHM2NCIpOiByZXR1cm4obWlwczY0ZWwpCi0rICAgIGNv bnRhaW5zKHF0QXJjaCwgInBvd2VyNjQiKTogcmV0dXJuKHBwYzY0KQotICAgICByZXR1cm4odW5r bm93bikKLSB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJlcy9wbGF0Zm9ybS5w cmYKLSsrKyBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVzL3BsYXRmb3JtLnByZgotQEAgLTgy LDYgKzgyLDcgQEAKLSAgICAgY29udGFpbnMoUVRfQVJDSCwgImFybSIpfGNvbnRhaW5zKFFUX0FS Q0gsICJhcm02NCIpOiByZXR1cm4odHJ1ZSkKLSAgICAgY29udGFpbnMoUVRfQVJDSCwgIm1pcHMi KTogcmV0dXJuKHRydWUpCi0gIyAgICAgY29udGFpbnMoUVRfQVJDSCwgIm1pcHM2NCIpOiByZXR1 cm4odHJ1ZSkKLSsgICAgY29udGFpbnMoUVRfQVJDSCwgInBvd2VyNjQiKTogcmV0dXJuKHRydWUp Ci0gCi0gICAgIHNraXBCdWlsZCgiUXRXZWJFbmdpbmUgY2FuIG9ubHkgYmUgYnVpbHQgZm9yIHg4 NiwgeDg2LTY0LCBBUk0sIEFhcmNoNjQsIGFuZCBNSVBTZWwgYXJjaGl0ZWN0dXJlcy4iKQotICAg ICByZXR1cm4oZmFsc2UpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTAtY2hy b21pdW0tcHBjNjRsZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MC1jaHJvbWl1bS1w cGM2NGxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGQ4ZDNlZmFhYy4u MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkwLWNocm9taXVtLXBwYzY0 bGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MjY3ICswLDAgQEAKLVRoaXMgaXMgYSBiYXNl IHBhdGNoIHRoYXQgYWRkcyBzdXBwb3J0IGZvciBwcGM2NGxlIGdsaWJjLiBCaWcgZW5kaWFuIGFu ZCBtdXNsCi1zdXBwb3J0IGlzIGFkZGVkIGluIGV4dHJhIHBhdGNoZXMgYWZ0ZXJ3YXJkcy4KLQot UGluZyBxNjYgaWYgeW91J3JlIHVwZGF0aW5nIHF0NSBhbmQgdGhlIHBhdGNoIGRvZXMgbm90IGFw cGx5IGFueW1vcmUuCi0KLVNvdXJjZTogaHR0cHM6Ly93aWtpLnJhcHRvcmNzLmNvbS93L2luZGV4 LnBocD90aXRsZT1Qb3J0aW5nL0Nocm9taXVtCi1VcHN0cmVhbTogQ3VycmVudGx5IGJlaW5nIHN1 Ym1pdHRlZAotCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxs b2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3JfY29uc3RhbnRzLmgKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0 aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvcl9jb25zdGFudHMuaAotQEAgLTEwLDcgKzEwLDcg QEAKLSAjaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCi0gCi0gbmFtZXNwYWNlIGJhc2Ug ewotLSNpZiBkZWZpbmVkKE9TX1dJTikKLSsjaWYgZGVmaW5lZChPU19XSU4pIHx8IGRlZmluZWQo QVJDSF9DUFVfUFBDNjQpCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9u R3JhbnVsYXJpdHlTaGlmdCA9IDE2OyAgLy8gNjRLQgotICNlbGlmIGRlZmluZWQoX01JUFNfQVJD SF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFu dWxhcml0eVNoaWZ0ID0gMTQ7ICAvLyAxNktCCi1AQCAtMjYsNiArMjYsMTAgQEAgc3RhdGljIGNv bnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlCYXNlTWFzayA9Ci0gCi0g I2lmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3RleHByIHNpemVf dCBrU3lzdGVtUGFnZVNpemUgPSAxNjM4NDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0 KQotKy8vIFRPRE86IG1vZGVybiBwcGM2NCBjYW4gZG8gNGsgYW5kIDY0ayBwYWdlIHNpemVzCi0r Ly8gZm9yIG5vdywgNjRrIGlzIGFzc3VtZWQKLStzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lz dGVtUGFnZVNpemUgPSA2NTUzNjsKLSAjZWxzZQotIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtT eXN0ZW1QYWdlU2l6ZSA9IDQwOTY7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jX2NvbnN0YW50cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0 YW50cy5oCi1AQCAtMzUsNiArMzUsOCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWNrZXRTaGlm dCA9IChrQWxsb2NhdGlvbkdyYW51bGFyaXR5ID09IDgpID8gMyA6IDI7Ci0gCi0gI2lmIGRlZmlu ZWQoX01JUFNfQVJDSF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25Q YWdlU2hpZnQgPSAxNjsgIC8vIDY0IEtpQgotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQp Ci0rc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTg7ICAvLyAyNTYg S2lCCi0gI2Vsc2UKLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAx NDsgIC8vIDE2IEtpQgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9idWlsZC9kb3dubG9hZF9uYWNsX3Rvb2xjaGFpbnMucHkKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5Ci1A QCAtMTEsNiArMTEsMTAgQEAgaW1wb3J0IHN5cwotIAotIAotIGRlZiBNYWluKGFyZ3MpOgotKyAg IyBJZiBgZGlzYWJsZV9uYWNsPTFgIGlzIGluIEdZUF9ERUZJTkVTLCBleGl0Ci0rICBpZiAnZGlz YWJsZV9uYWNsPTEnIGluIG9zLmVudmlyb24uZ2V0KCdHWVBfREVGSU5FUycsICcnKToKLSsgICAg cmV0dXJuIDAKLSsKLSAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNw YXRoKF9fZmlsZV9fKSkKLSAgIHNyY19kaXIgPSBvcy5wYXRoLmRpcm5hbWUoc2NyaXB0X2RpcikK LSAgIG5hY2xfZGlyID0gb3MucGF0aC5qb2luKHNyY19kaXIsICduYXRpdmVfY2xpZW50JykKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvdG9vbGNoYWluL2xpbnV4 L0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL3Rv b2xjaGFpbi9saW51eC9CVUlMRC5nbgotQEAgLTUsNiArNSwxNCBAQAotIGltcG9ydCgiLy9idWls ZC9jb25maWcvc3lzcm9vdC5nbmkiKQotIGltcG9ydCgiLy9idWlsZC90b29sY2hhaW4vZ2NjX3Rv b2xjaGFpbi5nbmkiKQotIAotK2NsYW5nX3Rvb2xjaGFpbigiY2xhbmdfcHBjNjQiKSB7Ci0rICBl bmFibGVfbGlua2VyX21hcCA9IHRydWUKLSsgIHRvb2xjaGFpbl9hcmdzID0gewotKyAgICBjdXJy ZW50X2NwdSA9ICJwcGM2NCIKLSsgICAgY3VycmVudF9vcyA9ICJsaW51eCIKLSsgIH0KLSt9Ci0r Ci0gY2xhbmdfdG9vbGNoYWluKCJjbGFuZ19hcm0iKSB7Ci0gICB0b29scHJlZml4ID0gImFybS1s aW51eC1nbnVlYWJpaGYtIgotICAgdG9vbGNoYWluX2FyZ3MgPSB7Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVl cnlfcGFyYW1zLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBv bmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmNjCi1AQCAtNTUsNiArNTUs OCBAQCBjb25zdCBjaGFyIGtBcmNoW10gPQotICAgICAibWlwczY0ZWwiOwotICNlbGlmIGRlZmlu ZWQoX19taXBzX18pCi0gICAgICJtaXBzZWwiOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgICAgInBwYzY0IjsKLSAjZWxzZQotICNlcnJvciAidW5rbm93biBhcmNoIgotICNlbmRp ZgotQEAgLTEyNyw2ICsxMjksOCBAQCBjb25zdCBjaGFyKiBVcGRhdGVRdWVyeVBhcmFtczo6R2V0 TmFjbEFyY2goKSB7Ci0gICByZXR1cm4gIm1pcHMzMiI7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9NSVBTNjRFTCkKLSAgIHJldHVybiAibWlwczY0IjsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0KQotKyAgcmV0dXJuICJwcGM2NCI7Ci0gI2Vsc2UKLSAvLyBOT1RFOiB3aGVuIGFkZGlu ZyBuZXcgdmFsdWVzIGhlcmUsIHBsZWFzZSByZW1lbWJlciB0byB1cGRhdGUgdGhlCi0gLy8gY29t bWVudCBpbiB0aGUgLmggZmlsZSBhYm91dCBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGZyb20gdGhp cyBmdW5jdGlvbi4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9u ZW50cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuaAotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRlX3F1 ZXJ5X3BhcmFtcy5oCi1AQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBVcGRhdGVRdWVyeVBhcmFtcyB7 Ci0gICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSB3ZSB1c2UgZm9yIHRoZSAibmFjbF9hcmNoIiBwYXJh bWV0ZXIuIE5vdGUgdGhhdCB0aGlzIG1heQotICAgLy8gYmUgZGlmZmVyZW50IGZyb20gdGhlICJh cmNoIiBwYXJhbWV0ZXIgYWJvdmUgKGUuZy4gb25lIG1heSBiZSAzMi1iaXQgYW5kCi0gICAvLyB0 aGUgb3RoZXIgNjQtYml0KS4gUG9zc2libGUgcmV0dXJuIHZhbHVlcyBpbmNsdWRlOiAieDg2LTMy IiwgIng4Ni02NCIsCi0tICAvLyAiYXJtIiwgYW5kICJtaXBzMzIiLgotKyAgLy8gImFybSIsICJt aXBzMzIiLCBhbmQgInBwYzY0Ii4KLSAgIHN0YXRpYyBjb25zdCBjaGFyKiBHZXROYWNsQXJjaCgp OwotIAotICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIENocm9tZS9DaHJvbWl1 bS4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0dXJl cy5nbmkKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0 dXJlcy5nbmkKLUBAIC0xMiw2ICsxMiw2IEBAIHVzZV9zZWNjb21wX2JwZiA9Ci0gICAgIChpc19s aW51eCB8fCBpc19hbmRyb2lkKSAmJgotICAgICAoY3VycmVudF9jcHUgPT0gIng4NiIgfHwgY3Vy cmVudF9jcHUgPT0gIng2NCIgfHwgY3VycmVudF9jcHUgPT0gImFybSIgfHwKLSAgICAgIGN1cnJl bnRfY3B1ID09ICJhcm02NCIgfHwgY3VycmVudF9jcHUgPT0gIm1pcHNlbCIgfHwKLS0gICAgIGN1 cnJlbnRfY3B1ID09ICJtaXBzNjRlbCIpCi0rICAgICBjdXJyZW50X2NwdSA9PSAibWlwczY0ZWwi IHx8IGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpCi0gCi0gdXNlX3NlY2NvbXBfYnBmID0gdXNlX3Nl Y2NvbXBfYnBmIHx8IGlzX25hY2xfbm9uc2ZpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9CVUlMRC5nbgotQEAgLTQxNiw2ICs0MTYsOCBA QCBjb21wb25lbnQoInNhbmRib3hfc2VydmljZXMiKSB7Ci0gCi0gc291cmNlX3NldCgic2FuZGJv eF9zZXJ2aWNlc19oZWFkZXJzIikgewotICAgc291cmNlcyA9IFsKLSsgICAgInN5c3RlbV9oZWFk ZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgiLAotKyAgICAic3lzdGVtX2hlYWRlcnMvcHBjNjRf bGludXhfdWNvbnRleHQuaCIsCi0gICAgICJzeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNj YWxscy5oIiwKLSAgICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oIiwKLSAg ICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29udGV4dC5oIiwKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2Nh bGxfcmFuZ2VzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKLUBAIC01NSw2ICs1NSwxMyBA QAotICNkZWZpbmUgTUFYX1BVQkxJQ19TWVNDQUxMIDI3OXUKLSAjZGVmaW5lIE1BWF9TWVNDQUxM IE1BWF9QVUJMSUNfU1lTQ0FMTAotIAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsK LSsjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgotKyNkZWZpbmUgTUlOX1NZU0NBTEwgMHUKLSsjZGVm aW5lIE1BWF9QVUJMSUNfU1lTQ0FMTCAzODZ1Ci0rI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhfUFVC TElDX1NZU0NBTEwKLSsKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJl IgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotQEAg LTE2LDYgKzE2LDkgQEAKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAvLyBzeXMvdXNlci5oIGlu IGVnbGliYyBtaXNzZXMgc2l6ZV90IGRlZmluaXRpb24KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0r I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKy8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qg b24gcHBjNjQKLSt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7Ci0gI2VuZGlmCi0g I2VuZGlmCi0gCi1AQCAtMzQ2LDYgKzM0OSw1MSBAQCBzdHJ1Y3QgcmVnc19zdHJ1Y3QgewotICNk ZWZpbmUgU0VDQ09NUF9QVF9QQVJNNChfcmVncykgKF9yZWdzKS5yZWdzWzNdCi0gI2RlZmluZSBT RUNDT01QX1BUX1BBUk01KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNF0KLSAjZGVmaW5lIFNFQ0NPTVBf UFRfUEFSTTYoX3JlZ3MpIChfcmVncykucmVnc1s1XQotKwotKyNlbGlmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKwotK3R5cGVkZWYgc3RydWN0IHB0 X3JlZ3MgcmVnc19zdHJ1Y3Q7Ci0rCi0rI2lmZGVmIEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4KLSsj ZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0TEUKLSsjZWxzZQotKyNkZWZpbmUg U0VDQ09NUF9BUkNIIEFVRElUX0FSQ0hfUFBDNjQKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIFNFQ0NP TVBfUkVHKF9jdHgsIF9yZWcpICgoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MtPmdwcltfcmVnXSkK LSsKLSsjZGVmaW5lIFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCi0r I2RlZmluZSBTRUNDT01QX1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKLSsjZGVm aW5lIFNFQ0NPTVBfSVAoX2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKLSsjZGVm aW5lIFNFQ0NPTVBfUEFSTTEoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKLSsjZGVmaW5lIFNF Q0NPTVBfUEFSTTIoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNCkKLSsjZGVmaW5lIFNFQ0NPTVBf UEFSTTMoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNSkKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTQo X2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNikKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTUoX2N0eCkg U0VDQ09NUF9SRUcoX2N0eCwgNykKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTYoX2N0eCkgU0VDQ09N UF9SRUcoX2N0eCwgOCkKLSsKLSsjZGVmaW5lIFNFQ0NPTVBfTlJfSURYIChvZmZzZXRvZihzdHJ1 Y3QgYXJjaF9zZWNjb21wX2RhdGEsIG5yKSkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJDSF9JRFggKG9m ZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJjaCkpCi0rI2RlZmluZSBTRUNDT01Q X0lQX01TQl9JRFggXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5z dHJ1Y3Rpb25fcG9pbnRlcikgKyA0KQotKyNkZWZpbmUgU0VDQ09NUF9JUF9MU0JfSURYIFwKLSsg IChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIp ICsgMCkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJHX01TQl9JRFgobnIpIFwKLSsgIChvZmZzZXRvZihz dHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyA0KQotKyNkZWZpbmUg U0VDQ09NUF9BUkdfTFNCX0lEWChucikgXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2Nv bXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDApCi0rCi0rI2RlZmluZSBTRUNDT01QX1BUX1JF U1VMVChfcmVncykgKF9yZWdzKS5ncHJbM10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfU1lTQ0FMTChf cmVncykgKF9yZWdzKS5ncHJbMF0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfSVAoX3JlZ3MpIChfcmVn cykubmlwCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk0xKF9yZWdzKSAoX3JlZ3MpLmdwclszXQot KyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMihfcmVncykgKF9yZWdzKS5ncHJbNF0KLSsjZGVmaW5l IFNFQ0NPTVBfUFRfUEFSTTMoX3JlZ3MpIChfcmVncykuZ3ByWzVdCi0rI2RlZmluZSBTRUNDT01Q X1BUX1BBUk00KF9yZWdzKSAoX3JlZ3MpLmdwcls2XQotKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJN NShfcmVncykgKF9yZWdzKS5ncHJbN10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3JlZ3Mp IChfcmVncykuZ3ByWzhdCi0rCi0gI2Vsc2UKLSAjZXJyb3IgVW5zdXBwb3J0ZWQgdGFyZ2V0IHBs YXRmb3JtCi0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxw ZXJzL2Jhc2VsaW5lX3BvbGljeS5jYwotQEAgLTg3LDcgKzg3LDggQEAgYm9vbCBJc0Jhc2VsaW5l UG9saWN5V2F0Y2hlZChpbnQgc3lzbm8pIHsKLSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcmN0 bChzeXNubykgfHwKLSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcm9jZXNzR3JvdXBPclNlc3Np b24oc3lzbm8pIHx8Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgICAgICBTeXNjYWxs U2V0czo6SXNTb2NrZXRDYWxsKHN5c25vKSB8fAotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fYXJt X18pCi1AQCAtMTkwLDcgKzE5MSw3IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChp bnQgZnNfZGVuaWVkX2Vycm5vLAotICAgfQotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5l ZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgaWYgKHN5c25vID09IF9fTlJfbW1hcCkKLSAgICAgcmV0dXJuIFJlc3Ry aWN0TW1hcEZsYWdzKCk7Ci0gI2VuZGlmCi1AQCAtMjA4LDcgKzIwOSw3IEBAIFJlc3VsdEV4cHIg RXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vycm5vLAotICAgICByZXR1cm4gUmVz dHJpY3RQcmN0bCgpOwotIAotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19h cm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9f KQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICBpZiAoc3lzbm8gPT0gX19OUl9zb2NrZXRwYWlyKSB7Ci0gICAgIC8vIE9ubHkgYWxsb3cgQUZf VU5JWCwgUEZfVU5JWC4gQ3Jhc2ggaWYgYW55dGhpbmcgZWxzZSBpcyBzZWVuLgotICAgICBzdGF0 aWNfYXNzZXJ0KEFGX1VOSVggPT0gUEZfVU5JWCwKLUBAIC0yNDgsNyArMjQ5LDggQEAgUmVzdWx0 RXhwciBFdmFsdWF0ZVN5c2NhbGxJbXBsKGludCBmc19kZW5pZWRfZXJybm8sCi0gICB9Ci0gCi0g I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIGlmIChTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxs KHN5c25vKSkKLSAgICAgcmV0dXJuIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKTsKLSAjZW5k aWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeV91bml0dGVzdC5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvYmFzZWxpbmVfcG9saWN5X3VuaXR0ZXN0LmNjCi1AQCAtMjU3LDcgKzI1Nyw3IEBAIFRF U1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfc3lzaW5mbyk7Ci0gVEVTVF9CQVNFTElORV9TSUdTWVMo X19OUl9zeXNsb2cpOwotIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfdGltZXJfY3JlYXRlKTsK LSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9f KSAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJf ZXZlbnRmZCk7Ci0gVEVTVF9CQVNFTElORV9TSUdTWVMoX19OUl9pbm90aWZ5X2luaXQpOwotIFRF U1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfdnNlcnZlcik7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxs X3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFt ZXRlcnNfcmVzdHJpY3Rpb25zLmNjCi1AQCAtMzUsNyArMzUsOCBAQAotICNpbmNsdWRlIDxzeXMv aW9jdGwuaD4KLSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotICNpZiBkZWZpbmVkKE9TX0xJTlVY KSAmJiAhZGVmaW5lZChPU19DSFJPTUVPUykgJiYgIWRlZmluZWQoX19hcm1fXykgJiYgXAotLSAg ICAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJF QSkKLSsgICAgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18p ICYmIFwKLSsgICAgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJFQSkKLSAvLyBBbHNvIGlu Y2x1ZGUgYXNtL3B0cmFjZS1hYmkuaCBzaW5jZSBwdHJhY2UuaCBpbiBvbGRlciBsaWJjIChmb3Ig aW5zdGFuY2UKLSAvLyB0aGUgb25lIGluIFVidW50dSAxNi4wNCBMVFMpIGlzIG1pc3NpbmcgUFRS QUNFX0dFVF9USFJFQURfQVJFQS4KLSAvLyBhc20vcHRyYWNlLWFiaS5oIGRvZXNuJ3QgZXhpc3Qg b24gYXJtMzIgYW5kIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgaXNuJ3QKLUBAIC00NCw2ICs0NCwx MSBAQAotICNlbmRpZgotICNlbmRpZiAgLy8gIU9TX05BQ0xfTk9OU0ZJCi0gCi0rLy8gT24gUFBD NjQsIFRDR0VUUyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHN0cnVjdCB0ZXJtaW9zLCBzbyB3ZSBt dXN0IGluY2x1ZGUgdGVybWlvcy5oCi0rI2lmZGVmIF9fcG93ZXJwYzY0X18KLSsjaW5jbHVkZSA8 dGVybWlvcy5oPgotKyNlbmRpZgotKwotICNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0gCi0gI2lm ICFkZWZpbmVkKEZfRFVQRkRfQ0xPRVhFQykKLUBAIC0xMDYsNiArMTExLDE1IEBAIGlubGluZSBi b29sIElzQXJjaGl0ZWN0dXJlTWlwcygpIHsKLSAjZW5kaWYKLSB9Ci0gCi0raW5saW5lIGJvb2wg SXNBcmNoaXRlY3R1cmVQUEM2NCgpIHsKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAg cmV0dXJuIHRydWU7Ci0rI2Vsc2UKLSsgIHJldHVybiBmYWxzZTsKLSsjZW5kaWYKLSt9Ci0rCi0r Ci0gLy8gVWJ1bnR1J3MgdmVyc2lvbiBvZiBnbGliYyBoYXMgYSByYWNlIGNvbmRpdGlvbiBpbiBz ZW1fcG9zdCB0aGF0IGNhbiBjYXVzZQotIC8vIGl0IHRvIGNhbGwgZnV0ZXgoMikgd2l0aCBib2d1 cyBvcCBhcmd1bWVudHMuIFRvIHdvcmthcm91bmQgdGhpcywgd2UgbmVlZAotIC8vIHRvIGFsbG93 IHRob3NlIGZ1dGV4KDIpIGNhbGxzIHRvIGZhaWwgd2l0aCBFSU5WQUwsIGluc3RlYWQgb2YgY3Jh c2hpbmcgdGhlCi1AQCAtMjQ3LDcgKzI2MSw4IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENv bW1hbmRzKCkgewotICAgLy8gb3BlcmF0b3IuCi0gICAvLyBHbGliYyBvdmVycmlkZXMgdGhlIGtl cm5lbCdzIE9fTEFSR0VGSUxFIHZhbHVlLiBBY2NvdW50IGZvciB0aGlzLgotICAgdWludDY0X3Qg a09MYXJnZUZpbGVGbGFnID0gT19MQVJHRUZJTEU7Ci0tICBpZiAoSXNBcmNoaXRlY3R1cmVYODZf NjQoKSB8fCBJc0FyY2hpdGVjdHVyZUkzODYoKSB8fCBJc0FyY2hpdGVjdHVyZU1pcHMoKSkKLSsg IGlmIChJc0FyY2hpdGVjdHVyZVg4Nl82NCgpIHx8IElzQXJjaGl0ZWN0dXJlSTM4NigpIHx8IElz QXJjaGl0ZWN0dXJlTWlwcygpIFwKLSsgICAgICB8fCBJc0FyY2hpdGVjdHVyZVBQQzY0KCkpCi0g ICAgIGtPTGFyZ2VGaWxlRmxhZyA9IDAxMDAwMDA7Ci0gCi0gICBjb25zdCBBcmc8aW50PiBjbWQo MSk7Ci1AQCAtMjcwLDcgKzI4NSw3IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1hbmRz KCkgewotICAgICAgIC5EZWZhdWx0KENyYXNoU0lHU1lTKCkpOwotIH0KLSAKLS0jaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIFJlc3VsdEV4 cHIgUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpIHsKLSAgIC8vIFVuZm9ydHVuYXRlbHksIHdl IGFyZSB1bmFibGUgdG8gcmVzdHJpY3QgdGhlIGZpcnN0IHBhcmFtZXRlciB0bwotICAgLy8gc29j a2V0cGFpcigyKS4gV2hpbHN0IGluaXRpYWxseSBzb3VuZGluZyBiYWQsIGl0J3Mgbm90ZXdvcnRo eSB0aGF0IHZlcnkKLUBAIC00MjEsNyArNDIyLDcgQEAgUmVzdWx0RXhwciBSZXN0cmljdFBybGlt aXQocGlkX3QgdGFyZ2V0X3BpZCkgewotIFJlc3VsdEV4cHIgUmVzdHJpY3RQdHJhY2UoKSB7Ci0g ICBjb25zdCBBcmc8aW50PiByZXF1ZXN0KDApOwotICAgcmV0dXJuIFN3aXRjaChyZXF1ZXN0KS5D QVNFUygoCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNo NjRfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgICAgIFBUUkFDRV9HRVRSRUdT LAotICAgICAgICAgUFRSQUNFX0dFVEZQUkVHUywKLSAgICAgICAgIFBUUkFDRV9HRVRfVEhSRUFE X0FSRUEsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuaAotQEAgLTQ4 LDcgKzQ4LDcgQEAgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmljdE1w cm90ZWN0RmxhZ3MoKTsKLSAvLyBPX05PTkJMT0NLIHwgT19TWU5DIHwgT19MQVJHRUZJTEUgfCBP X0NMT0VYRUMgfCBPX05PQVRJTUUuCi0gU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhw ciBSZXN0cmljdEZjbnRsQ29tbWFuZHMoKTsKLSAKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21p cHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIC8vIFJlc3RyaWN0IHNvY2tldGNhbGwo MikgdG8gb25seSBhbGxvdyBzb2NrZXRwYWlyKDIpLCBzZW5kKDIpLCByZWN2KDIpLAotIC8vIHNl bmR0bygyKSwgcmVjdmZyb20oMiksIHNodXRkb3duKDIpLCBzZW5kbXNnKDIpIGFuZCByZWN2bXNn KDIpLgotIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RTb2NrZXRj YWxsQ29tbWFuZCgpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVs cGVycy9zeXNjYWxsX3NldHMuY2MKLUBAIC0yOSw3ICsyOSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6 OklzQWxsb3dlZEdldHRpbWUoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAg IGNhc2UgX19OUl9nZXR0aW1lb2ZkYXk6Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdGltZToKLSAjZW5kaWYKLSAgICAgICBy ZXR1cm4gdHJ1ZTsKLUBAIC00NSw3ICs0Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZEdldHRpbWUoaW50IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zZXR0aW1lb2Zk YXk6ICAvLyBQcml2aWxlZ2VkLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQ VV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2Ug X19OUl9zdGltZToKLSAjZW5kaWYKLSAgICAgZGVmYXVsdDoKLUBAIC0xMTEsNyArMTEzLDcgQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNlIF9f TlJfZmFjY2Vzc2F0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gICAgIGNhc2UgX19O Ul9mY2htb2RhdDoKLSAgICAgY2FzZSBfX05SX2ZjaG93bmF0OiAgLy8gU2hvdWxkIGJlIGNhbGxl ZCBjaG93bmF0ID8KLS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2 NF9fKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6ICAvLyBm c3RhdGF0KCkuIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNlbGlmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotICAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLUBAIC0xMzAsNyArMTMyLDcg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNl IF9fTlJfbWVtZmRfY3JlYXRlOgotICAgICBjYXNlIF9fTlJfbWtkaXJhdDoKLSAgICAgY2FzZSBf X05SX21rbm9kYXQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX29sZGxzdGF0Ogot ICAgICBjYXNlIF9fTlJfb2xkc3RhdDoKLSAjZW5kaWYKLUBAIC0xNTQsNyArMTU2LDggQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJf dHJ1bmNhdGU2NDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3VubGlua2F0OgotLSNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18p Ci0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2Ug X19OUl91dGltZToKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3V0aW1lbnNhdDogIC8vIE5ldy4K LUBAIC0xNzMsNyArMTc2LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkRmlsZVN5c3Rl bUFjY2Vzc1ZpYUZkKGludCBzeXNubykgewotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwot IC8vIFRPRE8oamxuKTogdGhlc2Ugc2hvdWxkIGJlIGRlbmllZCBncmFjZWZ1bGx5IGFzIHdlbGwg KG1vdmVkIGJlbG93KS4KLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZmFkdmlzZTY0OiAgLy8gRVBFUk0gbm90IGEg dmFsaWQgZXJybm8uCi0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pCi1AQCAtMTg2LDcg KzE5MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFG ZChpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2Zsb2NrOiAgICAgIC8vIEVQRVJNIG5vdCBh IHZhbGlkIGVycm5vLgotICAgICBjYXNlIF9fTlJfZnN0YXRmczogICAgLy8gR2l2ZSBpbmZvcm1h dGlvbiBhYm91dCB0aGUgd2hvbGUgZmlsZXN5c3RlbS4KLSAjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9mc3RhdGZzNjQ6Ci0gI2VuZGlm Ci0gICAgIGNhc2UgX19OUl9mc3luYzogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotQEAg LTE5OCw2ICsyMDMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRGaWxlU3lzdGVtQWNj ZXNzVmlhRmQoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9zeW5jX2ZpbGVfcmFuZ2U6ICAv LyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAjZWxpZiBkZWZpbmVkKF9fYXJtX18pCi0gICAg IGNhc2UgX19OUl9hcm1fc3luY19maWxlX3JhbmdlOiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJy bm8uCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBjYXNlIF9fTlJfc3luY19m aWxlX3JhbmdlMjogLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gI2VuZGlmCi0gICAgIGRl ZmF1bHQ6Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTIyMyw3ICsyMzAsOCBAQCBib29sIFN5 c2NhbGxTZXRzOjpJc0RlbmllZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKLSAj ZW5kaWYKLSAgICAgY2FzZSBfX05SX2dldGRlbnRzNjQ6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBl cnJuby4KLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8 IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfcmVhZGRpcjoK LSAjZW5kaWYKLSAgICAgICByZXR1cm4gdHJ1ZTsKLUBAIC0yNjQsNyArMjcyLDcgQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNHZXRTaW1wbGVJZChpbnQgc3lzbm8pIHsKLSBib29sIFN5c2NhbGxTZXRz OjpJc1Byb2Nlc3NQcml2aWxlZ2VDaGFuZ2UoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25v KSB7Ci0gICAgIGNhc2UgX19OUl9jYXBzZXQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9pb3Blcm06 ICAvLyBJbnRlbCBwcml2aWxlZ2UuCi0gICAgIGNhc2UgX19OUl9pb3BsOiAgICAvLyBJbnRlbCBw cml2aWxlZ2UuCi0gI2VuZGlmCi1AQCAtMzE0LDcgKzMyMiw4IEBAIGJvb2wgU3lzY2FsbFNldHM6 OklzQWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfcnRf c2lncHJvY21hc2s6Ci0gICAgIGNhc2UgX19OUl9ydF9zaWdyZXR1cm46Ci0gI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8 IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2lnYWN0aW9u OgotICAgICBjYXNlIF9fTlJfc2lncHJvY21hc2s6Ci0gICAgIGNhc2UgX19OUl9zaWdyZXR1cm46 Ci1AQCAtMzMxLDcgKzM0MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNpZ25hbEhh bmRsaW5nKGludCBzeXNubykgewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc2lnbmFsZmQ0Ogot ICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp Ci0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBf X05SX3NpZ3BlbmRpbmc6Ci0gICAgIGNhc2UgX19OUl9zaWdzdXNwZW5kOgotICNlbmRpZgotQEAg LTM1NSw3ICszNjUsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRPcGVyYXRpb25PbkZk KGludCBzeXNubykgewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfZHVwMzoKLSAjaWYgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8 IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykg fHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2h1dGRvd246Ci0gI2Vu ZGlmCi0gICAgICAgcmV0dXJuIHRydWU7Ci1AQCAtMzg5LDcgKzM5OSw3IEBAIGJvb2wgU3lzY2Fs bFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7Ci0gICAgIGNh c2UgX19OUl9tZW1iYXJyaWVyOgotICAgICBjYXNlIF9fTlJfd2FpdDQ6Ci0gICAgIGNhc2UgX19O Ul93YWl0aWQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3dhaXRwaWQ6Ci0gI2Vu ZGlmCi0gI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLUBAIC00MTEsNyArNDIxLDcgQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNBbGxvd2VkUHJvY2Vzc1N0YXJ0T3JEZWF0aChpbnQgc3lzbm8pIHsKLSAg ICAgY2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3Vu c2hhcmU6Ci0tI2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykK LSsjaWYgIWRlZmluZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl92Zm9yazoKLSAjZW5kaWYKLSAgICAg ZGVmYXVsdDoKLUBAIC00NjAsNyArNDcwLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2Vk R2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7Ci0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAg IGRlZmF1bHQ6Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAg IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2Fz ZSBfX05SX3NvY2tldHBhaXI6ICAvLyBXZSB3aWxsIHdhbnQgdG8gaW5zcGVjdCBpdHMgYXJndW1l bnQuCi0gI2VuZGlmCi0gICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTQ3MCw3ICs0ODAsNyBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsK LSBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubykg ewotICAgc3dpdGNoIChzeXNubykgewotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFy Y2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gICAgIGNhc2UgX19OUl9hY2NlcHQ6Ci0gICAgIGNhc2UgX19OUl9hY2NlcHQ0OgotICAg ICBjYXNlIF9fTlJfYmluZDoKLUBAIC00ODUsNyArNDk1LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKLSB9Ci0gCi0gI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZvciBzb2Nr ZXRzLgotIGJvb2wgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChpbnQgc3lzbm8pIHsKLSAgIHN3 aXRjaCAoc3lzbm8pIHsKLUBAIC00OTksNyArNTEwLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNT b2NrZXRDYWxsKGludCBzeXNubykgewotIH0KLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19f KSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBib29sIFN5c2NhbGxTZXRzOjpJ c05ldHdvcmtTb2NrZXRJbmZvcm1hdGlvbihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8p IHsKLSAgICAgY2FzZSBfX05SX2dldHBlZXJuYW1lOgotQEAgLTUyNyw3ICs1MzksNyBAQCBib29s IFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRBZGRyZXNzU3BhY2VBY2Nlc3MoaW50IHN5c25vKSB7Ci0g ICAgIGNhc2UgX19OUl9taW5jb3JlOgotICAgICBjYXNlIF9fTlJfbWxvY2thbGw6Ci0gI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNf XykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2 NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9tbWFwOgotICNl bmRpZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLUBA IC01NTksNyArNTcxLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGlu dCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9fTlJfbHNlZWs6Ci0g I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkK LSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVf MzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9f TlJfX2xsc2VlazoKLSAjZW5kaWYKLSAjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCi1AQCAtNTcx LDI2ICs1ODQsMjggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGludCBz eXNubykgewotICAgICBjYXNlIF9fTlJfcmVhZHY6Ci0gICAgIGNhc2UgX19OUl9wcmVhZDY0Ogot ICNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3JlY3Y6Ci0gI2VuZGlmCi0g I2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19h YXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3JlY3Zm cm9tOiAgLy8gQ291bGQgc3BlY2lmeSBzb3VyY2UuCi0gICAgIGNhc2UgX19OUl9yZWN2bXNnOiAg IC8vIENvdWxkIHNwZWNpZnkgc291cmNlLgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJf c2VsZWN0OgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJt X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgICBjYXNlIF9fTlJfX25ld3NlbGVjdDoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2Fy bV9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVk KEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAgIGNhc2UgX19OUl9zZW5kOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAg ICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zZW5kbXNnOiAgLy8gQ291bGQgc3Bl Y2lmeSBkZXN0aW5hdGlvbi4KLSAgICAgY2FzZSBfX05SX3NlbmR0bzogICAvLyBDb3VsZCBzcGVj aWZ5IGRlc3RpbmF0aW9uLgotICNlbmRpZgotQEAgLTY0Nyw3ICs2NjIsOCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0FsbG93ZWRCYXNpY1NjaGVkdWxlcihpbnQgc3lzbm8pIHsKLSAgICAgICByZXR1 cm4gdHJ1ZTsKLSAgICAgY2FzZSBfX05SX2dldHByaW9yaXR5OgotICNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0r ICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX25pY2U6Ci0gI2VuZGlm Ci0gICAgIGNhc2UgX19OUl9zZXRwcmlvcml0eToKLUBAIC02NTksNyArNjc1LDggQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNBbGxvd2VkQmFzaWNTY2hlZHVsZXIoaW50IHN5c25vKSB7Ci0gYm9vbCBT eXNjYWxsU2V0czo6SXNBZG1pbk9wZXJhdGlvbihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lz bm8pIHsKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0t ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAg IGNhc2UgX19OUl9iZGZsdXNoOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfa2V4ZWNfbG9hZDoK LUBAIC02NzUsNyArNjkyLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBZG1pbk9wZXJhdGlvbihp bnQgc3lzbm8pIHsKLSAKLSBib29sIFN5c2NhbGxTZXRzOjpJc0tlcm5lbE1vZHVsZShpbnQgc3lz bm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfY3JlYXRlX21vZHVsZToK LSAgICAgY2FzZSBfX05SX2dldF9rZXJuZWxfc3ltczogIC8vIFNob3VsZCBFTk9TWVMuCi0gICAg IGNhc2UgX19OUl9xdWVyeV9tb2R1bGU6Ci1AQCAtNzA4LDcgKzcyNiw4IEBAIGJvb2wgU3lzY2Fs bFNldHM6OklzRnNDb250cm9sKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfc3dhcG9mZjoK LSAgICAgY2FzZSBfX05SX3N3YXBvbjoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBj YXNlIF9fTlJfdW1vdW50OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfdW1vdW50MjoKLUBAIC03 MjQsNyArNzQzLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNOdW1hKGludCBzeXNubykgewotICAg ICBjYXNlIF9fTlJfZ2V0Y3B1OgotICAgICBjYXNlIF9fTlJfbWJpbmQ6Ci0gI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwg XAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9taWdyYXRlX3BhZ2VzOgot ICNlbmRpZgotICAgICBjYXNlIF9fTlJfbW92ZV9wYWdlczoKLUBAIC03NTMsMTQgKzc3MiwxNSBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0dsb2JhbFByb2Nlc3NFbnZpcm9ubWVudChpbnQgc3lzbm8p IHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2FjY3Q6ICAvLyBQcml2aWxl Z2VkLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVm aW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9f TlJfZ2V0cmxpbWl0OgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9fYXJtX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdWdldHJsaW1pdDoKLSAjZW5k aWYKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwK LSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdWxpbWl0OgotICNl bmRpZgotICAgICBjYXNlIF9fTlJfZ2V0cnVzYWdlOgotQEAgLTc5NCw3ICs4MTQsNyBAQCBib29s IFN5c2NhbGxTZXRzOjpJc0dsb2JhbFN5c3RlbVN0YXR1cyhpbnQgc3lzbm8pIHsKLSAjZW5kaWYK LSAgICAgY2FzZSBfX05SX3N5c2luZm86Ci0gICAgIGNhc2UgX19OUl91bmFtZToKLS0jaWYgZGVm aW5lZChfX2kzODZfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotICAgICBjYXNlIF9fTlJfb2xkdW5hbWU6Ci0gICAgIGNhc2UgX19OUl9vbGRvbGR1 bmFtZToKLSAjZW5kaWYKLUBAIC04ODgsNyArOTA4LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNT eXN0ZW1WTWVzc2FnZVF1ZXVlKGludCBzeXNubykgewotICNlbmRpZgotIAotICNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0gLy8gQmlnIHN5c3RlbSBWIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbC4K LSBib29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZJcGMoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2gg KHN5c25vKSB7Ci1AQCAtOTA4LDcgKzkyOSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQW55U3lz dGVtVihpbnQgc3lzbm8pIHsKLSAgIHJldHVybiBJc1N5c3RlbVZNZXNzYWdlUXVldWUoc3lzbm8p IHx8IElzU3lzdGVtVlNlbWFwaG9yZXMoc3lzbm8pIHx8Ci0gICAgICAgICAgSXNTeXN0ZW1WU2hh cmVkTWVtb3J5KHN5c25vKTsKLSAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQ VV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICByZXR1cm4g SXNTeXN0ZW1WSXBjKHN5c25vKTsKLSAjZW5kaWYKLSB9Ci1AQCAtOTYxLDcgKzk4Myw4IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzRmFOb3RpZnkoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0 czo6SXNUaW1lcihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBf X05SX2dldGl0aW1lcjoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYWxhcm06Ci0gI2VuZGlmCi0gICAgIGNhc2Ug X19OUl9zZXRpdGltZXI6Ci1AQCAtMTAyMCwxOCArMTA0MywyMiBAQCBib29sIFN5c2NhbGxTZXRz OjpJc01pc2MoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9zeW5jZnM6Ci0gICAgIGNhc2Ug X19OUl92aGFuZ3VwOgotIC8vIFRoZSBzeXN0ZW0gY2FsbHMgYmVsb3cgYXJlIG5vdCBpbXBsZW1l bnRlZC4KLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfYWZzX3N5c2NhbGw6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2JyZWFrOgotICNlbmRpZgotLSNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0r I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul9nZXRwbXNnOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQ VV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2Ug X19OUl9ndHR5OgotICAgICBjYXNlIF9fTlJfaWRsZToKLSAgICAgY2FzZSBfX05SX2xvY2s6Ci1A QCAtMTAzOSwyMCArMTA2NiwyMiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc01pc2MoaW50IHN5c25v KSB7Ci0gICAgIGNhc2UgX19OUl9wcm9mOgotICAgICBjYXNlIF9fTlJfcHJvZmlsOgotICNlbmRp ZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0gICAgIGNhc2UgX19OUl9wdXRwbXNnOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2XzY0 X18pCi0gICAgIGNhc2UgX19OUl9zZWN1cml0eToKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp ICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotICAgICBjYXNlIF9fTlJfc3R0eToKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX3g4 Nl82NF9fKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgICAgY2FzZSBfX05SX3R1eGNhbGw6Ci0gI2VuZGlmCi0tI2lmICFkZWZpbmVkKF9fYWFy Y2g2NF9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19wb3dlcnBj NjRfXykKLSAgICAgY2FzZSBfX05SX3ZzZXJ2ZXI6Ci0gI2VuZGlmCi0gICAgICAgcmV0dXJuIHRy dWU7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2Fs bF9zZXRzLmgKLUBAIC00MywxMyArNDMsMTQgQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2Fs bFNldHMgewotICAgc3RhdGljIGJvb2wgSXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lz bm8pOwotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkg fHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAvLyBCaWcgbXVsdGlwbGV4aW5n IHN5c3RlbSBjYWxsIGZvciBzb2NrZXRzLgotICAgc3RhdGljIGJvb2wgSXNTb2NrZXRDYWxsKGlu dCBzeXNubyk7Ci0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJj aDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgIHN0YXRpYyBib29sIElzTmV0d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNubyk7 Ci0gI2VuZGlmCi0gCi1AQCAtODcsNyArODgsOCBAQCBjbGFzcyBTQU5EQk9YX0VYUE9SVCBTeXNj YWxsU2V0cyB7Ci0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hf Q1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIC8vIEJp ZyBzeXN0ZW0gViBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwuCi0gICBzdGF0aWMgYm9vbCBJc1N5 c3RlbVZJcGMoaW50IHN5c25vKTsKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYv c3lzY2FsbC5jYwotQEAgLTE2LDcgKzE2LDcgQEAgbmFtZXNwYWNlIHNhbmRib3ggewotIG5hbWVz cGFjZSB7Ci0gCi0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChB UkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCi0tICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpCi0rICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQgKEFSQ0hf Q1BVX1BQQzY0X0ZBTUlMWSkKLSAvLyBOdW1iZXIgdGhhdCdzIG5vdCBjdXJyZW50bHkgdXNlZCBi eSBhbnkgTGludXgga2VybmVsIEFCSXMuCi0gY29uc3QgaW50IGtJbnZhbGlkU3lzY2FsbE51bWJl ciA9IDB4MzUxZDM7Ci0gI2Vsc2UKLUBAIC0zMDgsMTIgKzMwOCw1NiBAQCBhc20oLy8gV2UgbmVl ZCB0byBiZSBhYmxlIHRvIHRlbGwgdGhlIGtlcm5lbCBleGFjdGx5IHdoZXJlIHdlIG1hZGUgYQot ICAgICAvLyBFbnRlciB0aGUga2VybmVsCi0gICAgICJzdmMgMFxuIgotICAgICAiMjpyZXRcbiIK LSsgICAgIi5jZmlfZW5kcHJvY1xuIgotKyAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNjYWxs QXNtXG4iCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAiLnRleHRcbiIKLSsg ICAgIi5hbGlnbiA0XG4iCi0rICAgICIudHlwZSBTeXNjYWxsQXNtIEBmdW5jdGlvblxuIgotKyAg ICAiU3lzY2FsbEFzbTpcbiIKLSsgICAgIi5jZmlfc3RhcnRwcm9jXG4iCi0rCi0rICAgIC8vIENo ZWNrIGlmIHIzIGlzIG5lZ2F0aXZlCi0rICAgICJjbXBkaSAzLCAwXG4iCi0rICAgICJiZ3QgMmZc biIKLSsKLSsgICAgLy8gTG9hZCBhZGRyZXNzIG9mIDNmIGludG8gcjMgYW5kIHJldHVybgotKyAg ICAibWZsciAxMFxuIgotKyAgICAiYmwgMWZcbiIKLSsgICAgIjE6IG1mbHIgM1xuIgotKyAgICAi bXRsciAxMFxuIgotKyAgICAiYWRkaSAzLCAzLCA0KjEzXG4iCi0rICAgICJibHJcbiIKLSsKLSsg ICAgLy8gTG9hZCBhcmd1bWVudHMgZnJvbSBhcnJheSBpbnRvIHIzLTgKLSsgICAgLy8gc2F2ZSBw YXJhbSAzIGluIHIxMAotKyAgICAiMjpcbiIKLSsgICAgIm1yIDAsIDNcbiIKLSsgICAgImxkIDMs IDAoNClcbiIKLSsgICAgImxkIDUsIDE2KDQpXG4iCi0rICAgICJsZCA2LCAyNCg0KVxuIgotKyAg ICAibGQgNywgMzIoNClcbiIKLSsgICAgImxkIDgsIDQwKDQpXG4iCi0rICAgICJsZCA0LCA4KDQp XG4iCi0rICAgICJsaSA5LCAwXG4iCi0rCi0rICAgIC8vIEVudGVyIGtlcm5lbAotKyAgICAic2Nc biIKLSsKLSsgICAgLy8gTWFnaWMgcmV0dXJuIGFkZHJlc3MKLSsgICAgIjM6XG4iCi0rICAgIC8v IExpa2UgTUlQUywgcHBjNjQgcmV0dXJuIHZhbHVlcyBhcmUgYWx3YXlzIHBvc2l0aXZlLgotKyAg ICAvLyBDaGVjayBmb3IgZXJyb3IgaW4gY3IwLlNPIGFuZCBuZWdhdGUgdXBvbiBlcnJvcgotKyAg ICAiYmMgNCwgMywgNGZcbiIKLSsgICAgIm5lZyAzLCAzXG4iCi0rICAgICI0OiBibHJcbiIKLSsK LSAgICAgIi5jZmlfZW5kcHJvY1xuIgotICAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNjYWxs QXNtXG4iCi0gI2VuZGlmCi0gICAgICk7ICAvLyBhc20KLSAKLS0jaWYgZGVmaW5lZChfX3g4Nl82 NF9fKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSBleHRlcm4gIkMiIHsKLSBpbnRwdHJfdCBTeXNjYWxsQXNtKGludHB0cl90IG5yLCBjb25zdCBp bnRwdHJfdCBhcmdzWzZdKTsKLSB9Ci1AQCAtNDI3LDYgKzQ3MSw4IEBAIGludHB0cl90IFN5c2Nh bGw6OkNhbGwoaW50IG5yLAotICAgICByZXQgPSBpbm91dDsKLSAgIH0KLSAKLSsjZWxpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0rICBpbnRwdHJfdCByZXQgPSBTeXNjYWxsQXNtKG5yLCBhcmdz KTsKLSAjZWxzZQotICNlcnJvciAiVW5pbXBsZW1lbnRlZCBhcmNoaXRlY3R1cmUiCi0gI2VuZGlm Ci1AQCAtNDQzLDggKzQ4OSwxOCBAQCB2b2lkIFN5c2NhbGw6OlB1dFZhbHVlSW5VY29udGV4dChp bnRwdHJfdCByZXRfdmFsLCB1Y29udGV4dF90KiBjdHgpIHsKLSAgICAgLy8gbmVlZHMgdG8gYmUg Y2hhbmdlZCBiYWNrLgotICAgICByZXRfdmFsID0gLXJldF92YWw7Ci0gICAgIFNFQ0NPTVBfUEFS TTQoY3R4KSA9IDE7Ci0tICB9IGVsc2UKLSsgIH0gZWxzZSB7Ci0gICAgIFNFQ0NPTVBfUEFSTTQo Y3R4KSA9IDA7Ci0rICB9Ci0rI2VuZGlmCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsg IC8vIFNhbWUgYXMgTUlQUywgbmVlZCB0byBpbnZlcnQgcmV0IGFuZCBzZXQgZXJyb3IgcmVnaXN0 ZXIgKGNyMC5TTykKLSsgIGlmIChyZXRfdmFsIDw9IC0xICYmIHJldF92YWwgPj0gLTQwOTUpIHsK LSsgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOwotKyAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNj ciB8PSAoMSA8PCAyOCk7Ci0rICB9IGVsc2UgewotKyAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3Mt PmNjciAmPSB+KDEgPDwgMjgpOwotKyAgfQotICNlbmRpZgotICAgU0VDQ09NUF9SRVNVTFQoY3R4 KSA9IHN0YXRpY19jYXN0PGdyZWdfdD4ocmV0X3ZhbCk7Ci0gfQotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi90cmFwLmNjCi1AQCAtMjMwLDYgKzIzMCwyMCBAQCB2b2lkIFRyYXA6OlNpZ1N5cyhpbnQg bnIsIExpbnV4U2lnSW5mbyogaW5mbywgdWNvbnRleHRfdCogY3R4KSB7Ci0gICAgICAgU2V0SXNJ blNpZ0hhbmRsZXIoKTsKLSAgICAgfQotIAotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0r ICAgIC8vIE9uIHBwYzY0K2dsaWJjLCBzb21lIHN5c2NhbGxzIHNlZW0gdG8gYWNjaWRlbnRhbGx5 IG5lZ2F0ZSB0aGUgZmlyc3QKLSsgICAgLy8gcGFyYW1ldGVyIHdoaWNoIGNhdXNlcyBjaGVja3Mg YWdhaW5zdCBpdCB0byBmYWlsLiBGb3Igbm93LCBtYW51YWxseQotKyAgICAvLyBuZWdhdGUgdGhl bSBiYWNrLgotKyAgICAvLyBUT0RPKHNoYXduQGFuYXN0YXMuaW8pOiBpbnZlc3RpZ2F0ZSB0aGlz IGlzc3VlIGZ1cnRoZXIKLSsgICAgYXV0byBuciA9IFNFQ0NPTVBfU1lTQ0FMTChjdHgpOwotKyAg ICBpZiAobnIgPT0gX19OUl9vcGVuYXQgfHwgbnIgPT0gX19OUl9ta2RpcmF0IHx8IG5yID09IF9f TlJfZmFjY2Vzc2F0IHx8IG5yID09IF9fTlJfcmVhZGxpbmthdCB8fAotKyAgICAgICAgbnIgPT0g X19OUl9yZW5hbWVhdCB8fCBuciA9PSBfX05SX3JlbmFtZWF0MiB8fCBuciA9PSBfX05SX25ld2Zz dGF0YXQgfHwgbnIgPT0gX19OUl91bmxpbmthdCkgewotKyAgICAgICAgaWYgKHN0YXRpY19jYXN0 PGludD4oU0VDQ09NUF9QQVJNMShjdHgpKSA+IDApIHsKLSsgICAgICAgICAgICBTRUNDT01QX1BB Uk0xKGN0eCkgPSAtU0VDQ09NUF9QQVJNMShjdHgpOwotKyAgICAgICAgfQotKyAgICB9Ci0rI2Vu ZGlmCi0rCi0gICAgIC8vIENvcHkgdGhlIHNlY2NvbXAtc3BlY2lmaWMgZGF0YSBpbnRvIGEgYXJj aF9zZWNjb21wX2RhdGEgc3RydWN0dXJlLiBUaGlzCi0gICAgIC8vIGlzIHdoYXQgd2UgYXJlIHNo b3dpbmcgdG8gVHJhcEZuYyBjYWxsYmFja3MgdGhhdCB0aGUgc3lzdGVtIGNhbGwKLSAgICAgLy8g ZXZhbHVhdG9yIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2FuZGJveC4KLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3Nl cnZpY2VzL2NyZWRlbnRpYWxzLmNjCi1AQCAtNzksNyArNzksNyBAQCBib29sIENocm9vdFRvU2Fm ZUVtcHR5RGlyKCkgewotICAgcGlkX3QgcGlkID0gLTE7Ci0gICBhbGlnbmFzKDE2KSBjaGFyIHN0 YWNrX2J1ZltQVEhSRUFEX1NUQUNLX01JTl07Ci0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZB TUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCi0tICAgIGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpCi0rICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp IHx8IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotICAgLy8gVGhlIHN0YWNrIGdyb3dz IGRvd253YXJkLgotICAgdm9pZCogc3RhY2sgPSBzdGFja19idWYgKyBzaXplb2Yoc3RhY2tfYnVm KTsKLSAjZWxzZQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJva2Vy X3Byb2Nlc3MuY2MKLUBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBCcm9rZXJQcm9jZXNzOjpJc1N5 c2NhbGxBbGxvd2VkKGludCBzeXNubykgY29uc3QgewotICNpZiBkZWZpbmVkKF9fTlJfZnN0YXRh dCkKLSAgICAgY2FzZSBfX05SX2ZzdGF0YXQ6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNh c2UgX19OUl9uZXdmc3RhdGF0OgotICNlbmRpZgotICAgICAgIHJldHVybiAhZmFzdF9jaGVja19p bl9jbGllbnRfIHx8IGFsbG93ZWRfY29tbWFuZF9zZXRfLnRlc3QoQ09NTUFORF9TVEFUKTsKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9saW51eF9zZWNjb21wLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKLUBAIC0y OSw2ICsyOSw5IEBACi0gI2lmbmRlZiBFTV9BQVJDSDY0Ci0gI2RlZmluZSBFTV9BQVJDSDY0IDE4 MwotICNlbmRpZgotKyNpZm5kZWYgRU1fUFBDNjQKLSsjZGVmaW5lIEVNX1BQQzY0IDIxCi0rI2Vu ZGlmCi0gCi0gI2lmbmRlZiBfX0FVRElUX0FSQ0hfNjRCSVQKLSAjZGVmaW5lIF9fQVVESVRfQVJD SF82NEJJVCAweDgwMDAwMDAwCi1AQCAtNTQsNiArNTcsMTIgQEAKLSAjaWZuZGVmIEFVRElUX0FS Q0hfQUFSQ0g2NAotICNkZWZpbmUgQVVESVRfQVJDSF9BQVJDSDY0IChFTV9BQVJDSDY0IHwgX19B VURJVF9BUkNIXzY0QklUIHwgX19BVURJVF9BUkNIX0xFKQotICNlbmRpZgotKyNpZm5kZWYgQVVE SVRfQVJDSF9QUEM2NAotKyNkZWZpbmUgQVVESVRfQVJDSF9QUEM2NCAoRU1fUFBDNjQgfCBfX0FV RElUX0FSQ0hfNjRCSVQpCi0rI2VuZGlmCi0rI2lmbmRlZiBBVURJVF9BUkNIX1BQQzY0TEUKLSsj ZGVmaW5lIEFVRElUX0FSQ0hfUFBDNjRMRSAoRU1fUFBDNjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQg fCBfX0FVRElUX0FSQ0hfTEUpCi0rI2VuZGlmCi0gCi0gLy8gRm9yIHByY3RsLmgKLSAjaWZuZGVm IFBSX1NFVF9TRUNDT01QCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nh bmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51 eF9zaWduYWwuaAotQEAgLTEzLDcgKzEzLDcgQEAKLSAvLyAobm90IHVuZGVmaW5lZCwgYnV0IGRl ZmluZWQgZGlmZmVyZW50IHZhbHVlcyBhbmQgaW4gZGlmZmVyZW50IG1lbW9yeQotIC8vIGxheW91 dHMpLiBTbywgZmlsbCB0aGUgZ2FwIGhlcmUuCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIGRlZmluZWQo X19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAKLSAjZGVmaW5lIExJTlVYX1NJR0hVUCAxCi0gI2RlZmluZSBMSU5VWF9TSUdJ TlQgMgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxs cy5oCi1AQCAtMzUsNSArMzUsOSBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL2FybTY0X2xpbnV4X3N5c2NhbGxzLmgiCi0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSsjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9w cGM2NF9saW51eF9zeXNjYWxscy5oIgotKyNlbmRpZgotKwotICNlbmRpZiAgLy8gU0FOREJPWF9M SU5VWF9TWVNURU1fSEVBREVSU19MSU5VWF9TWVNDQUxMU19IXwotIAotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4 X3Vjb250ZXh0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF91Y29udGV4dC5oCi1AQCAtMTEsNiArMTEsOCBA QAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29u dGV4dC5oIgotICNlbGlmIGRlZmluZWQoX19pMzg2X18pCi0gI2luY2x1ZGUgInNhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvaTM4Nl9saW51eF91Y29udGV4dC5oIgotKyNlbGlmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSsjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9w cGM2NF9saW51eF91Y29udGV4dC5oIgotICNlbHNlCi0gI2Vycm9yICJObyBzdXBwb3J0IGZvciB5 b3VyIGFyY2hpdGVjdHVyZSBpbiBQTmFDbCBoZWFkZXIiCi0gI2VuZGlmCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgK LUBAIC0wLDAgKzEsMTIgQEAKLSsvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9y cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4g dGhlIExJQ0VOU0UgZmlsZS4KLSsKLSsjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURF UlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KLSsjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lTVEVN X0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KLSsKLSsjaW5jbHVkZSA8YXNtL3VuaXN0 ZC5oPgotKwotKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVmaW5lIHN5c2NhbGwgbnVt YmVycyBmb3IgUFBDNjQ/Ci0rCi0rI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFE RVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9k ZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgKLUBAIC0wLDAgKzEsMTIg QEAKLSsvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KLSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls ZS4KLSsKLSsjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhf VUNPTlRFWFRfSF8KLSsjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRf TElOVVhfVUNPTlRFWFRfSF8KLSsKLSsjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+Ci0rCi0rLy9U T0RPOiBpcyBpdCBuZWNlc3NhcnkgdG8gcmVkZWZpbmUgdWNvbnRleHQgb24gUFBDNjQ/Ci0rCi0r I2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1VDT05U RVhUX0hfCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2VzL3Nl cnZpY2VfbWFuYWdlci9zYW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2VydmljZXMvc2VydmljZV9t YW5hZ2VyL3NhbmRib3gvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYwotQEAgLTE1 LDYgKzE1LDExIEBACi0gI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGlu dXhfc3lzY2FsbHMuaCIKLSAjaW5jbHVkZSAic2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRi b3gvbGludXgvc2FuZGJveF9saW51eC5oIgotIAotKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVm aW5lZCBpbiB0ZXJtcyBvZiBzdHJ1Y3QgdGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRlcm1p b3MuaAotKyNpZmRlZiBfX3Bvd2VycGM2NF9fCi0rI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSsjZW5k aWYKLSsKLSAvLyBUT0RPKHZpZ25hdHRpKTogcmVwbGFjZSB0aGUgbG9jYWwgZGVmaW5pdGlvbnMg YmVsb3cgd2l0aCAjaW5jbHVkZQotIC8vIDxsaW51eC9kbWEtYnVmLmg+IG9uY2Uga2VybmVsIHZl cnNpb24gNC42IGJlY29tZXMgd2lkZWx5IHVzZWQuCi0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZ2xl L3NyYy9saWJBTkdMRS9Db25zdGFudHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKLUBAIC05 LDYgKzksNyBAQAotICNpZm5kZWYgTElCQU5HTEVfQ09OU1RBTlRTX0hfCi0gI2RlZmluZSBMSUJB TkdMRV9DT05TVEFOVFNfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0ZGRlZj4KLSAjaW5jbHVkZSAiY29t bW9uL3BsYXRmb3JtLmgiCi0gCi0gbmFtZXNwYWNlIGdsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAv YXNtL0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvYXNtL0JVSUxELmduCi1AQCAtNDYs NiArNDYsMTAgQEAgaWYgKGN1cnJlbnRfY3B1ID09ICJ4ODYiIHx8IGN1cnJlbnRfY3B1ID09ICJ4 NjQiKSB7Ci0gICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgICJTYXZlUmVnaXN0ZXJzX21pcHM2 NC5TIiwKLSAgICAgICBdCi0rICAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0Iikg ewotKyAgICAgIHNvdXJjZXMgPSBbCi0rICAgICAgICAiU2F2ZVJlZ2lzdGVyc19wcGM2NC5TIiwK LSsgICAgICBdCi0gICAgIH0KLSAKLSAgICAgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm0iKSB7Ci1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFw L2FzbS9TYXZlUmVnaXN0ZXJzX3BwYzY0LlMKLUBAIC0wLDAgKzEsNjAgQEAKLSsvKgotKyAqIHR5 cGVkZWYgdm9pZCAoKlB1c2hBbGxSZWdpc3RlcnNDYWxsYmFjaykoU2FmZVBvaW50QmFycmllcios IFRocmVhZFN0YXRlKiwgaW50cHRyX3QqKTsKLSsgKiBleHRlcm4gIkMiIHZvaWQgUHVzaEFsbFJl Z2lzdGVycyhTYWZlUG9pbnRCYXJyaWVyKiwgVGhyZWFkU3RhdGUqLCBQdXNoQWxsUmVnaXN0ZXJz Q2FsbGJhY2spCi0rICovCi0rCi0rLnR5cGUgUHVzaEFsbFJlZ2lzdGVycywgJWZ1bmN0aW9uCi0r Lmdsb2JhbCBQdXNoQWxsUmVnaXN0ZXJzCi0rLmhpZGRlbiBQdXNoQWxsUmVnaXN0ZXJzCi0rUHVz aEFsbFJlZ2lzdGVyczoKLSsgICAgICAgIC8vIFB1c2ggYWxsIGNhbGxlZS1zYXZlcyByZWdpc3Rl cnMgdG8gZ2V0IHRoZW0KLSsgICAgICAgIC8vIG9uIHRoZSBzdGFjayBmb3IgY29uc2VydmF0aXZl IHN0YWNrIHNjYW5uaW5nLgotKyAgICAgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbGVlLXNh dmVkIHJlZ2lzdGVycyBhbmQgbWluaW1hbCBzdGFjayBmcmFtZS4KLSsgICAgICAgIG1mbHIgMCAg ICAgICAgICMgcjAgPSBMUgotKyAgICAgICAgc3RkIDAsMTYoMSkgICAgIyBzdG9yZSBMUiBhdCBh ZGRyIHNwKzE2Ci0rICAgICAgICBzdGR1IDEsLTE3NigxKSAjIGdyb3cgc3RhY2sgYnkgMTc2IGJ5 dGVzIGFuZCBzdG9yZSBuZXcgc3RhY2sgdG9wIHB0ciB0byByMQotKyAgICAgICAgICAgICMgMzIx OCo4ID0gbWluIHN0YWNrICBub24tdm9sYXRpbGUgcmVnaXN0ZXJzCi0rCi0rICAgICAgICAvLyBT YXZlIHRoZSBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzCi0rICAgICAgICBzdGQgMzEsMTY4KDEpICAj IHN0b3JlIHIzMSB0byBhZGRyIHNwKzE2OCAKLSsgICAgICAgIHN0ZCAzMCwxNjAoMSkgICMgZXRj Li4uCi0rICAgICAgICBzdGQgMjksMTUyKDEpCi0rICAgICAgICBzdGQgMjgsMTQ0KDEpCi0rICAg ICAgICBzdGQgMjcsMTM2KDEpCi0rICAgICAgICBzdGQgMjYsMTI4KDEpCi0rICAgICAgICBzdGQg MjUsMTIwKDEpCi0rICAgICAgICBzdGQgMjQsMTEyKDEpCi0rICAgICAgICBzdGQgMjMsMTA0KDEp Ci0rICAgICAgICBzdGQgMjIsOTYoMSkKLSsgICAgICAgIHN0ZCAyMSw4OCgxKQotKyAgICAgICAg c3RkIDIwLDgwKDEpCi0rICAgICAgICBzdGQgMTksNzIoMSkKLSsgICAgICAgIHN0ZCAxOCw2NCgx KQotKyAgICAgICAgc3RkIDE3LDU2KDEpCi0rICAgICAgICBzdGQgMTYsNDgoMSkKLSsgICAgICAg IHN0ZCAxNSw0MCgxKQotKyAgICAgICAgc3RkIDE0LDMyKDEpCi0rICAgICAgICAKLSsgICAgICAg IC8vIE5vdGU6IHRoZSBjYWxsZWUtc2F2ZWQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIGRvIG5v dCBuZWVkIHRvIGJlCi0rICAgICAgICAvLyBjb3BpZWQgdG8gdGhlIHN0YWNrLCBiZWNhdXNlIGZw IHJlZ2lzdGVycyBuZXZlciBob2xkIGhlYXAgcG9pbnRlcnMKLSsgICAgICAgIC8vIGFuZCBzbyBk byBub3QgbmVlZCB0byBiZSBrZXB0IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgot KyAgICAgICAgCi0rICAgICAgICAvLyBQYXNzIHRoZSB0d28gZmlyc3QgYXJndW1lbnRzIHVudG91 Y2hlZCBpbiByMyBhbmQgcjQgYW5kIHRoZQotKyAgICAgICAgLy8gc3RhY2sgcG9pbnRlciB0byB0 aGUgY2FsbGJhY2suCi0rCi0rICAgICAgICBzdGQgMiwgMjQoMSkgICAjIHNhdmUgcjIgdG8gc3Ar MjQgYWRkcgotKyAgICAgICAgbXRjdHIgNSAgICAgICAgIyBjb3B5IDNyZCBmdW5jdGlvbiBhcmcg KGNhbGxiYWNrIGZuIHBvaW50ZXIpIHRvIENUUgotKyAgICAgICAgbXIgMTIsIDUgICAgICAgIyBy MTIgbXVzdCBob2xkIGFkZHJlc3Mgb2YgY2FsbGJhY2sgd2UgYXJlIGdvaW5nIHRvIGNhbGwgCi0r ICAgICAgICAgICAgICAgICAgICAgICAjICBmb3IgcG9zaXRpb24taWRlcGVuZGVudCBmdW5jdGlv bnMgaW5zaWRlIHRoZSBjYWxsYmFjayB0byB3b3JrCi0rICAgICAgICBtciA1LCAxICAgICAgICAj IHNldCBjdXJyZW50IHNwIChzdGFjayB0b3ApIGFzIDNyZCBhcmd1bWVudCBmb3IgdGhlIGNhbGxi YWNrCi0rICAgICAgICBiY3RybCAgICAgICAgICAjIHNldCBMUiB0byBQQys0IGFuZCBjYWxsIHRo ZSBjYWxsYmFjawotKyAgICAgICAgbGQgMiwgMjQoMSkgICAgIyByZXN0b3JlIHIyIGZyb20gc3Ar MjQgYWRkcgotKwotKyAgICAgICAgLy8gQWRqdXN0IHN0YWNrLCByZXN0b3JlIHJldHVybiBhZGRy ZXNzIGFuZCByZXR1cm4uCi0rICAgICAgICAvLyBOb3RlOiB0aGUgY29waWVkIHJlZ2lzdGVycyBk byBub3QgbmVlZCB0byBiZSByZWxvYWRlZCBoZXJlLAotKyAgICAgICAgLy8gYmVjYXVzZSB0aGV5 IHdlcmUgcHJlc2VydmVkIGJ5IHRoZSBjYWxsZWQgcm91dGluZS4KLSsgICAgICAgIGFkZGkgMSwx LDE3NiAgICMgcmVzdG9yZSBvcmlnaW5hbCBTUCBieSBkb2luZyBzcCArPSAxNzYKLSsgICAgICAg IGxkIDAsMTYoMSkgICAgICMgcmVzdG9yZSBvcmlnaW5hbCBMUiBmcm9tIGFkZHIgc3ArMTYKLSsg ICAgICAgIG10bHIgMCAgICAgICAgICMgLi4uIGNvcHkgaXQgdG8gdGhlIGFjdHVhbCBMUgotKyAg ICAgICAgYmxyICAgICAgICAgICAgIyByZXR1cm4gdG8gTFIgYWRkcgotKwotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0 Zm9ybS9oZWFwL2hlYXBfcGFnZS5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvaGVhcF9wYWdlLmgK LUBAIC02NywxMSArNjcsMTIgQEAgY29uc3RleHByIHNpemVfdCBrQmxpbmtQYWdlQmFzZU1hc2sg PSB+a0JsaW5rUGFnZU9mZnNldE1hc2s7Ci0gY29uc3RleHByIHNpemVfdCBrQmxpbmtQYWdlc1Bl clJlZ2lvbiA9IDEwOwotIAotIC8vIFRPRE8obnlhKTogUmVwbGFjZSB0aGlzIHdpdGggc29tZXRo aW5nIGxpa2UgI2lmIEVOQUJMRV9OQUNMLgotLSNpZiAwCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVf UFBDNjQpCi0gLy8gTmFDbCdzIHN5c3RlbSBwYWdlIHNpemUgaXMgNjQgS2lCLiBUaGlzIGNhdXNl cyBhIHByb2JsZW0gaW4gT2lscGFuJ3MgaGVhcAotIC8vIGxheW91dCBiZWNhdXNlIE9pbHBhbiBh bGxvY2F0ZXMgdHdvIGd1YXJkIHBhZ2VzIGZvciBlYWNoIEJsaW5rIHBhZ2UgKHdob3NlCi0gLy8g c2l6ZSBpcyBrQmxpbmtQYWdlU2l6ZSA9IDJeMTcgPSAxMjggS2lCKS4gU28gd2UgZG9uJ3QgdXNl IGd1YXJkIHBhZ2VzIGluCi0gLy8gTmFDbC4KLSsvLyBUaGUgc2FtZSBpc3N1ZSBob2xkcyBmb3Ig cHBjNjQgc3lzdGVtcywgd2hpY2ggdXNlIGEgNjRrIHBhZ2Ugc2l6ZS4KLSBjb25zdGV4cHIgc2l6 ZV90IGtCbGlua0d1YXJkUGFnZVNpemUgPSAwOwotICNlbHNlCi0gY29uc3RleHByIHNpemVfdCBr QmxpbmtHdWFyZFBhZ2VTaXplID0gYmFzZTo6a1N5c3RlbVBhZ2VTaXplOwotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0 Zm9ybS93dGYvZHRvYS91dGlscy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9kdG9hL3V0aWxzLmgK LUBAIC00NSw3ICs0NSw3IEBACi0gLy8gZGlzYWJsZWQuKQotIC8vIE9uIExpbnV4LHg4NiA4OTI1 NWUtMjIgIT0gRGl2X2RvdWJsZSg4OTI1NS4wLzFlMjIpCi0gI2lmIGRlZmluZWQoX01fWDY0KSB8 fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19BUk1FTF9fKSB8fCBcCi0tICAgIGRl ZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19NSVBTRUxfXykKLSsgICAgZGVmaW5lZChf X2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gI2RlZmluZSBET1VCTEVfQ09OVkVSU0lPTl9DT1JSRUNUX0RPVUJMRV9PUEVSQVRJT05T IDEKLSAjZWxpZiBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX19pMzg2X18pCi0gI2lmIGRl ZmluZWQoX1dJTjMyKQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ib3Jpbmdzc2wvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduCi1AQCAtMTAwLDYgKzEwMCwx MyBAQCBpZiAoaXNfd2luICYmICFpc19tc2FuICYmIGN1cnJlbnRfY3B1ICE9ICJhcm02NCIpIHsK LSAgICAgICB9IGVsc2UgewotICAgICAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2Nv bmZpZyIgXQotICAgICAgIH0KLSsgICAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQi KSB7Ci0rICAgICAgaWYgKGlzX2xpbnV4KSB7Ci0rICAgICAgICAjIFRPRE86IHBwYzY0IChiZSkg Y2hlY2sKLSsgICAgICAgIHNvdXJjZXMgKz0gY3J5cHRvX3NvdXJjZXNfbGludXhfcHBjNjRsZQot KyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpub19hc21fY29u ZmlnIiBdCi0rICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgIHB1YmxpY19jb25maWdzID0g WyAiOm5vX2FzbV9jb25maWciIF0KLSAgICAgfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaAotQEAgLTQ0LDYg KzQ0LDggQEAgdHlwZWRlZiBNRFJhd0NvbnRleHRBUk0gUmF3Q29udGV4dENQVTsKLSB0eXBlZGVm IE1EUmF3Q29udGV4dEFSTTY0X09sZCBSYXdDb250ZXh0Q1BVOwotICNlbGlmIGRlZmluZWQoX19t aXBzX18pCi0gdHlwZWRlZiBNRFJhd0NvbnRleHRNSVBTIFJhd0NvbnRleHRDUFU7Ci0rI2VsaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3R5cGVkZWYgTURSYXdDb250ZXh0UFBDNjQgUmF3Q29u dGV4dENQVTsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQg dG8geW91ciBwbGF0Zm9ybSB5ZXQuIgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYwotQEAgLTI3MCw3ICsy NzAsNDIgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBv dXQpIGNvbnN0IHsKLSAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSBtY29udGV4dC5mcGNfZWlyOwot ICNlbmRpZgotIH0KLS0jZW5kaWYgIC8vIF9fbWlwc19fCi0rCi0rI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotKwotK3VpbnRwdHJfdCBUaHJlYWRJbmZvOjpHZXRJbnN0cnVjdGlvblBvaW50 ZXIoKSBjb25zdCB7Ci0rICAgIHJldHVybiBtY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rfQot KwotK3ZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0KSBj b25zdCB7Ci0rICAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfUFBDNjRfRlVMTDsK LSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsr KQotKyAgICAgICAgb3V0LT5ncHJbaV0gPSBtY29udGV4dC5ncF9yZWdzW2ldOwotKwotKyAgICBv dXQtPmxyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdOwotKyAgICBvdXQtPnNycjAgPSBtY29u dGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rICAgIG91dC0+c3JyMSA9IG1jb250ZXh0LmdwX3JlZ3Nb UFRfTVNSXTsKLSsgICAgb3V0LT5jciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXTsKLSsgICAg b3V0LT54ZXIgPSBtY29udGV4dC5ncF9yZWdzW1BUX1hFUl07Ci0rICAgIG91dC0+Y3RyID0gbWNv bnRleHQuZ3BfcmVnc1tQVF9DVFJdOwotKyAgICAKLSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBN RF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+Zmxv YXRfc2F2ZS5mcHJlZ3NbaV0gPSBtY29udGV4dC5mcF9yZWdzW2ldOwotKwotKyAgICBvdXQtPmZs b2F0X3NhdmUuZnBzY3IgPSBtY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKLSsKLSsgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykKLSsg ICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9IFwKLSsgICAgICAgICAgICB7KCgo dWludDY0X3QpdnJlZ3MudnJyZWdzW2ldWzBdKSA8PCAzMikgCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHZyZWdzLnZycmVnc1tpXVsxXSwgCi0rICAgICAgICAgICAgKCgodWludDY0X3Qp dnJlZ3MudnJyZWdzW2ldWzJdKSA8PCAzMikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgfCB2 cmVncy52cnJlZ3NbaV1bM119OwotKwotKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLnZyc2F2ZTsK LSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3MudnNjci52c2NyX3dv cmR9OwotKyAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4RkZGRkZGRkY7IAot K30KLSsjZW5kaWYgIC8vIF9fcG93ZXJwYzY0X18KLSAKLSB2b2lkIFRocmVhZEluZm86OkdldEdl bmVyYWxQdXJwb3NlUmVnaXN0ZXJzKHZvaWQqKiBncF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAg IGFzc2VydChncF9yZWdzIHx8IHNpemUpOwotQEAgLTI3OSw2ICszMTQsMTEgQEAgdm9pZCBUaHJl YWRJbmZvOjpHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3BfcmVncywgc2l6ZV90 KiBzaXplKSB7Ci0gICAgICpncF9yZWdzID0gbWNvbnRleHQuZ3JlZ3M7Ci0gICBpZiAoc2l6ZSkK LSAgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZ3JlZ3MpOwotKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIGlmIChncF9yZWdzKQotKyAgICAqZ3BfcmVncyA9IG1jb250ZXh0Lmdw X3JlZ3M7Ci0rICBpZiAoc2l6ZSkKLSsgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZ3BfcmVn cyk7Ci0gI2Vsc2UKLSAgIGlmIChncF9yZWdzKQotICAgICAqZ3BfcmVncyA9ICZyZWdzOwotQEAg LTI5NCw2ICszMzQsMTEgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50UmVnaXN0 ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAgICAgKmZwX3JlZ3MgPSAmbWNv bnRleHQuZnByZWdzOwotICAgaWYgKHNpemUpCi0gICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0 LmZwcmVncyk7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgaWYgKGZwX3JlZ3Mp Ci0rICAgICpmcF9yZWdzID0gJm1jb250ZXh0LmZwX3JlZ3M7Ci0rICBpZiAoc2l6ZSkKLSsgICAg KnNpemUgPSBzaXplb2YobWNvbnRleHQuZnBfcmVncyk7Ci0gI2Vsc2UKLSAgIGlmIChmcF9yZWdz KQotICAgICAqZnBfcmVncyA9ICZmcHJlZ3M7Ci1AQCAtMzAyLDQgKzM0NywxMyBAQCB2b2lkIFRo cmVhZEluZm86OkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVf dCogc2l6ZSkgewotICNlbmRpZgotIH0KLSAKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot K3ZvaWQgVGhyZWFkSW5mbzo6R2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2X3JlZ3MsIHNpemVf dCogc2l6ZSkgewotKyAgICBpZiAodl9yZWdzKQotKyAgICAgICAgKnZfcmVncyA9ICZ2cmVnczsK LSsgICAgaWYgKHNpemUpCi0rICAgICAgICAqc2l6ZSA9IHNpemVvZih2cmVncyk7Ci0rfQotKyNl bmRpZgotKwotIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uaAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5oCi1AQCAt NjgsNiArNjgsMTAgQEAgc3RydWN0IFRocmVhZEluZm8gewotICAgLy8gVXNlIHRoZSBzdHJ1Y3R1 cmVzIGRlZmluZWQgaW4gPHN5cy91c2VyLmg+Ci0gICBzdHJ1Y3QgdXNlcl9yZWdzX3N0cnVjdCBy ZWdzOwotICAgc3RydWN0IHVzZXJfZnBzaW1kX3N0cnVjdCBmcHJlZ3M7Ci0rI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gPHN5 cy91Y29udGV4dC5oPi4KLSsgIG1jb250ZXh0X3QgbWNvbnRleHQ7Ci0rICB2cnJlZ3NldF90IHZy ZWdzOwotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gICAvLyBVc2UgdGhlIHN0cnVjdHVyZSBk ZWZpbmVkIGluIDxzeXMvdWNvbnRleHQuaD4uCi0gICBtY29udGV4dF90IG1jb250ZXh0OwotQEAg LTg0LDYgKzg4LDExIEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKLSAKLSAgIC8vIFJldHVybnMgdGhl IHBvaW50ZXIgYW5kIHNpemUgb2YgZmxvYXQgcG9pbnQgcmVnaXN0ZXIgYXJlYS4KLSAgIHZvaWQg R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKTsK LSsKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gUmV0dXJucyB0aGUgcG9pbnRl ciBhbmQgc2l6ZSBvZiB0aGUgdmVjdG9yIHJlZ2lzdGVyIGFyZWEuIChQUEM2NCBvbmx5KQotKyAg dm9pZCBHZXRWZWN0b3JSZWdpc3RlcnModm9pZCoqIHZfcmVncywgc2l6ZV90KiBzaXplKTsKLSsj ZW5kaWYKLSB9OwotIAotIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0 X3JlYWRlci5jYwotQEAgLTI1NCw2ICsyNTQsNDggQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6Rmls bENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1Yykgewot ICAgb3V0LT5mbG9hdF9zYXZlLmZpciA9IHVjLT51Y19tY29udGV4dC5mcGNfZWlyOyAgLy8gVW51 c2VkLgotICNlbmRpZgotIH0KLSsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0r dWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRf dCogdWMpIHsKLSsgICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRf UFBDNjRfUkVHX1NQXTsKLSt9Ci0rCi0rdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0 cnVjdGlvblBvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKLSsgICAgcmV0dXJuIHVjLT51 Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rfQotKwotK3ZvaWQgVUNvbnRleHRSZWFkZXI6 OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCogdWMs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRfdCog dnJlZ3MpIHsKLSsgICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9QUEM2NF9GVUxM OwotKwotKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BSX0NPVU5U OyBpKyspCi0rICAgICAgICBvdXQtPmdwcltpXSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW2ld OwotKwotKyAgICBvdXQtPmxyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsgICAg Ci0rICAgIG91dC0+c3JyMCA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rICAg IG91dC0+c3JyMSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01TUl07Ci0rICAgIG91dC0+ Y3IgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdOwotKyAgICBvdXQtPnhlciA9IHVj LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1hFUl07Ci0rICAgIG91dC0+Y3RyID0gdWMtPnVjX21j b250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKLSsgICAgCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwg TURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPmZs b2F0X3NhdmUuZnByZWdzW2ldID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbaV07Ci0rCi0rICAg IG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW05GUFJFRy0x XTsKLSsKLSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJf Q09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9Ci0rICAg ICAgICAgICAgeygoKHVpbnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMF0pIDw8IDMyKSAKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy0+dnJyZWdzW2ldWzFdLCAKLSsgICAgICAgICAg ICAgKCgodWludDY0X3QpdnJlZ3MtPnZycmVnc1tpXVsyXSkgPDwgMzIpCi0rICAgICAgICAgICAg ICAgICAgICAgICAgIHwgdnJlZ3MtPnZycmVnc1tpXVszXX07Ci0rCi0rICAgIG91dC0+dnJzYXZl ID0gdnJlZ3MtPnZyc2F2ZTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwg dnJlZ3MtPnZzY3IudnNjcl93b3JkfTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZydmFs aWQgPSAweEZGRkZGRkZGOyAKLSt9Ci0rCi0gI2VuZGlmCi0gCi0gfSAgLy8gbmFtZXNwYWNlIGdv b2dsZV9icmVha3BhZAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2Nv bW1vbi91Y29udGV4dF9yZWFkZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBf d3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAotQEAgLTU0LDYgKzU0LDkgQEAgc3RydWN0 IFVDb250ZXh0UmVhZGVyIHsKLSAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotICAgc3RhdGlj IHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90 ICp1YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmcHNpbWRf Y29udGV4dCogZnByZWdzKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBzdGF0 aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0 X3QgKnVjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRfdCog dnJlZ3MpOwotICNlbHNlCi0gICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0 Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjKTsKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwotQEAgLTQ2Nyw5ICs0 NjcsMTYgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpIYW5kbGVTaWduYWwoaW50IC8qc2lnKi8s IHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWMpIHsKLSAgICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRl eHRfLmZsb2F0X3N0YXRlLCBmcF9wdHIsCi0gICAgICAgICAgICBzaXplb2YoZ19jcmFzaF9jb250 ZXh0Xy5mbG9hdF9zdGF0ZSkpOwotICAgfQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSsgIC8vIE9uIFBQQzY0LCB3ZSBtdXN0IGNvcHkgVlIgc3RhdGUKLSsgIHVjb250ZXh0X3QqIHVj X3B0ciA9ICh1Y29udGV4dF90Kil1YzsKLSsgIGlmICh1Y19wdHItPnVjX21jb250ZXh0LnZfcmVn cykgewotKyAgICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0YXRlLCB1Y19wdHIt PnVjX21jb250ZXh0LnZfcmVncywKLSsgICAgICAgICAgIHNpemVvZihnX2NyYXNoX2NvbnRleHRf LnZlY3Rvcl9zdGF0ZSkpOwotKyAgfQotICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYg IWRlZmluZWQoX19taXBzX18pCi0gICAvLyBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFC SSBvbiBBUk0gTGludXguCi0tICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMg YWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKLSsgIC8vIEluIGNhc2Ugb2YgTUlQUywgTGludXgg RlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKLSAgIC8vIGFuZCAnZmxvYXRf c3RhdGUnIGlzIG5vdCBhIG1lbWJlciBvZiBDcmFzaENvbnRleHQuCi0gICB1Y29udGV4dF90KiB1 Y19wdHIgPSAodWNvbnRleHRfdCopdWM7Ci0gICBpZiAodWNfcHRyLT51Y19tY29udGV4dC5mcHJl Z3MpIHsKLUBAIC03MDcsMTEgKzcxNCwxOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRl TWluaWR1bXAoKSB7Ci0gICB9Ci0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklf XykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5l ZChfX21pcHNfXykgXAotKyAgICAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgLy8gRlBV IHN0YXRlIGlzIG5vdCBwYXJ0IG9mIEFSTSBFQUJJIHVjb250ZXh0X3QuCi0gICBtZW1jcHkoJmNv bnRleHQuZmxvYXRfc3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5mcHJlZ3MsCi0g ICAgICAgICAgc2l6ZW9mKGNvbnRleHQuZmxvYXRfc3RhdGUpKTsKLSAjZW5kaWYKLSsKLSsjaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gVmVjdG9yIHJlZ2lzdGVycyBtdXN0IGJlIGNv cGllZCBvbiBQUEM2NAotKyAgbWVtY3B5KCZjb250ZXh0LnZlY3Rvcl9zdGF0ZSwgY29udGV4dC5j b250ZXh0LnVjX21jb250ZXh0LnZfcmVncywKLSsgICAgICAgICBzaXplb2YoY29udGV4dC52ZWN0 b3Jfc3RhdGUpKTsKLSsjZW5kaWYKLSsKLSAgIGNvbnRleHQudGlkID0gc3lzX2dldHRpZCgpOwot IAotICAgLy8gQWRkIGFuIGV4Y2VwdGlvbiBzdHJlYW0gdG8gdGhlIG1pbmlkdW1wIGZvciBiZXR0 ZXIgcmVwb3J0aW5nLgotQEAgLTczMiw2ICs3NDcsOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6 OldyaXRlTWluaWR1bXAoKSB7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnRleHQu c2lnaW5mby5zaV9hZGRyID0KLSAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0 LmNvbnRleHQudWNfbWNvbnRleHQucGMpOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSsgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KLSsgICAgICByZWludGVycHJldF9jYXN0PHZv aWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdKTsKLSAjZWxz ZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9y bSB5ZXQuIgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhj ZXB0aW9uX2hhbmRsZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhj ZXB0aW9uX2hhbmRsZXIuaAotQEAgLTE5Miw3ICsxOTIsMTEgQEAgY2xhc3MgRXhjZXB0aW9uSGFu ZGxlciB7Ci0gICAgIHNpZ2luZm9fdCBzaWdpbmZvOwotICAgICBwaWRfdCB0aWQ7ICAvLyB0aGUg Y3Jhc2hpbmcgdGhyZWFkLgotICAgICB1Y29udGV4dF90IGNvbnRleHQ7Ci0tI2lmICFkZWZpbmVk KF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSsgICAgLy8gUFBDNjQncyBGUCBzdGF0ZSBpcyBhIHBhcnQgb2YgdWNvbnRleHRf dCBsaWtlIE1JUFMgYnV0IHRoZSB2ZWN0b3IKLSsgICAgLy8gc3RhdGUgaXMgbm90LCBzbyBhIHN0 cnVjdCBpcyBuZWVkZWQuCi0rICAgIHZzdGF0ZV90IHZlY3Rvcl9zdGF0ZTsKLSsjZWxpZiAhZGVm aW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAvLyAjaWZkZWYg dGhpcyBvdXQgYmVjYXVzZSBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBmb3IgTGlu dXggQVJNLgotICAgICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFk eSBwYXJ0IG9mIHVjb250ZXh0X3Qgc28KLSAgICAgLy8gJ2Zsb2F0X3N0YXRlJyBpcyBub3QgcmVx dWlyZWQuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFu ZGxlcl91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhj ZXB0aW9uX2hhbmRsZXJfdW5pdHRlc3QuY2MKLUBAIC0zMDcsNyArMzA3LDcgQEAgVEVTVChFeGNl cHRpb25IYW5kbGVyVGVzdCwgUGFyYWxsZWxDaGlsZENyYXNoZXNEb250SGFuZykgewotICAgfQot IAotICAgLy8gV2FpdCBhIHdoaWxlIHVudGlsIHRoZSBjaGlsZCBzaG91bGQgaGF2ZSBjcmFzaGVk LgotLSAgdXNsZWVwKDEwMDAwMDApOwotKyAgdXNsZWVwKDIwMDAwMDApOwotICAgLy8gS2lsbCB0 aGUgY2hpbGQgaWYgaXQgaXMgc3RpbGwgcnVubmluZy4KLSAgIGtpbGwoY2hpbGQsIFNJR0tJTEwp OwotIAotQEAgLTU3Niw2ICs1NzYsOCBAQCBjb25zdCB1bnNpZ25lZCBjaGFyIGtJbGxlZ2FsSW5z dHJ1Y3Rpb25bXSA9IHsKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIC8vIG1mYzIgemVybyxJ bXBsIC0gdXN1YWxseSBpbGxlZ2FsIGluIHVzZXJzcGFjZS4KLSAgIDB4NDgsIDB4MDAsIDB4MDAs IDB4NDgKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAweDAxLCAweDAxLCAweDAx LCAweDAxIC8vIENyYXNoZXMgb24gYSB0ZXN0ZWQgUE9XRVI5IGNwdQotICNlbHNlCi0gICAvLyBU aGlzIGNyYXNoZXMgd2l0aCBTSUdJTEwgb24geDg2L3g4Ni02NC9hcm0uCi0gICAweGZmLCAweGZm LCAweGZmLCAweGZmCi1AQCAtNzcxLDEwICs3NzMsMTAgQEAgVEVTVChFeGNlcHRpb25IYW5kbGVy VGVzdCwgSW5zdHJ1Y3Rpb25Qb2ludGVyTWVtb3J5TWF4Qm91bmQpIHsKLSAKLSAgIC8vIFRoZXNl IGFyZSBkZWZpbmVkIGhlcmUgc28gdGhlIHBhcmVudCBjYW4gdXNlIHRoZW0gdG8gY2hlY2sgdGhl Ci0gICAvLyBkYXRhIGZyb20gdGhlIG1pbmlkdW1wIGFmdGVyd2FyZHMuCi0tICAvLyBVc2UgNGsg aGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEgc2luZ2xlIHBhZ2UgZXZlbgotKyAg Ly8gVXNlIHRoZSBwYWdlIHNpemUgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEg c2luZ2xlIHBhZ2UgZXZlbgotICAgLy8gaWYgYSBzbWFsbGVyIHNpemUgaXMgcmVxdWVzdGVkLCBh bmQgdGhpcyB0ZXN0IHdhbnRzIHRvCi0gICAvLyB0ZXN0IHRoZSB1cHBlciBib3VuZCBvZiB0aGUg bWVtb3J5IHJhbmdlLgotLSAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUgPSA0MDk2OyAgLy8g Ynl0ZXMKLSsgIGNvbnN0IHVpbnQzMl90IGtNZW1vcnlTaXplID0gZ2V0cGFnZXNpemUoKTsgIC8v IGJ5dGVzCi0gICBjb25zdCBpbnQga09mZnNldCA9IGtNZW1vcnlTaXplIC0gc2l6ZW9mKGtJbGxl Z2FsSW5zdHJ1Y3Rpb24pOwotIAotICAgY29uc3QgcGlkX3QgY2hpbGQgPSBmb3JrKCk7Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVy LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1 bXBfd3JpdGVyLmNjCi1AQCAtMTM4LDcgKzEzOCw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7 Ci0gICAgICAgICAgICAgICAgICAgY29uc3QgTWljcm9kdW1wRXh0cmFJbmZvJiBtaWNyb2R1bXBf ZXh0cmFfaW5mbywKLSAgICAgICAgICAgICAgICAgICBMaW51eER1bXBlciogZHVtcGVyKQotICAg ICAgIDogdWNvbnRleHRfKGNvbnRleHQgPyAmY29udGV4dC0+Y29udGV4dCA6IE5VTEwpLAotLSNp ZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0rICAgICAgICB2ZWN0b3Jfc3RhdGVfKGNvbnRleHQgPyAmY29u dGV4dC0+dmVjdG9yX3N0YXRlIDogTlVMTCksCi0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9f KSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgICAgIGZsb2F0X3N0YXRlXyhjb250ZXh0ID8g JmNvbnRleHQtPmZsb2F0X3N0YXRlIDogTlVMTCksCi0gI2VuZGlmCi0gICAgICAgICBkdW1wZXJf KGR1bXBlciksCi1AQCAtMzM3LDYgKzMzOSw4IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7Ci0g IyBlbHNlCi0gIyAgZXJyb3IgIlRoaXMgbWlwcyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0 ZWQgKG4zMikiCi0gI2VuZGlmCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBj b25zdCBjaGFyIGtBcmNoW10gPSAicHBjNjQiOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUg aGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKLSAjZW5kaWYKLUBAIC00 MDksNyArNDEzLDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKLSAgIHZvaWQgRHVtcENQVVN0 YXRlKCkgewotICAgICBSYXdDb250ZXh0Q1BVIGNwdTsKLSAgICAgbXlfbWVtc2V0KCZjcHUsIDAs IHNpemVvZihSYXdDb250ZXh0Q1BVKSk7Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYg IWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgVUNv bnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0XywgdmVjdG9yX3N0YXRl Xyk7Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykK LSAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0XywgZmxv YXRfc3RhdGVfKTsKLSAjZWxzZQotICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQo JmNwdSwgdWNvbnRleHRfKTsKLUBAIC02MDUsNyArNjExLDkgQEAgY2xhc3MgTWljcm9kdW1wV3Jp dGVyIHsKLSAgIHZvaWQqIEFsbG9jKHVuc2lnbmVkIGJ5dGVzKSB7IHJldHVybiBkdW1wZXJfLT5h bGxvY2F0b3IoKS0+QWxsb2MoYnl0ZXMpOyB9Ci0gCi0gICBjb25zdCB1Y29udGV4dF90KiBjb25z dCB1Y29udGV4dF87Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19t aXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGNvbnN0IGdvb2dsZV9icmVh a3BhZDo6dnN0YXRlX3QqIGNvbnN0IHZlY3Rvcl9zdGF0ZV87Ci0rI2VsaWYgIWRlZmluZWQoX19B Uk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnN0IGdvb2dsZV9icmVha3Bh ZDo6ZnBzdGF0ZV90KiBjb25zdCBmbG9hdF9zdGF0ZV87Ci0gI2VuZGlmCi0gICBMaW51eER1bXBl ciogZHVtcGVyXzsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVy L21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLUBAIC0yNzgs MTAgKzI3OCwxOSBAQCBURVNUKE1pY3JvZHVtcFdyaXRlclRlc3QsIEJhc2ljV2l0aE1hcHBpbmdz KSB7Ci0gICBDcmFzaEFuZEdldE1pY3JvZHVtcChtYXBwaW5ncywgTWljcm9kdW1wRXh0cmFJbmZv KCksICZidWYpOwotICAgQVNTRVJUX1RSVUUoQ29udGFpbnNNaWNyb2R1bXAoYnVmKSk7Ci0gCi0r ICBpbnQgcGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKLSAjaWZkZWYgX19MUDY0X18KLS0gIEFT U0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKLS0gICAgICAgICAgICBidWYuZmluZCgiTSAwMDAw MDAwMDAwMDAxMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAwMTAwMCAiCi0tICAgICAg ICAgICAgICAgICAgICAgIjMzMjIxMTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28u c28iKSk7Ci0rICAvLyBUaGlzIHRlc3QgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBmb2xsb3dp bmcgcGFnZSBzaXplcwotKyAgQVNTRVJUX1RSVUUoKHBhZ2Vfc2l6ZSA9PSA0MDk2KSB8fCAocGFn ZV9zaXplID09IDY1NTM2KSk7Ci0rICBpZiAocGFnZV9zaXplID09IDQwOTYpIHsgCi0rICAgIEFT U0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKLSsgICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAw MDAwMDAwMDAwMDEwMDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAwMDAwMDAwMDAxMDAwICIKLSsgICAg ICAgICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGli Zm9vLnNvIikpOwotKyAgfSBlbHNlIHsKLSsgICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9z LAotKyAgICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAxMDAwMCAwMDAwMDAwMDAw MDAwMDJBIDAwMDAwMDAwMDAwMTAwMDAgIgotKyAgICAgICAgICAgICAgICAgICAgICAgIjMzMjIx MTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7Ci0rICB9Ci0gI2Vsc2UK LSAgIEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKLSAgICAgICAgICAgICBidWYuZmluZCgi TSAwMDAwMTAwMCAwMDAwMDAyQSAwMDAwMTAwMCAiCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCi1AQCAtMTE2 LDYgKzExNiw5IEBAIGJvb2wgTGludXhDb3JlRHVtcGVyOjpHZXRUaHJlYWRJbmZvQnlJbmRleChz aXplX3QgaW5kZXgsIFRocmVhZEluZm8qIGluZm8pIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19f KQotICAgc3RhY2tfcG9pbnRlciA9Ci0gICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o aW5mby0+bWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JFR19TUF0pOwotKyNlbGlmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIHN0YWNrX3BvaW50ZXIgPQotKyAgICAgIHJlaW50ZXJw cmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2 NF9SRUdfU1BdKTsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhc24ndCBiZWVuIHBvcnRl ZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2VuZGlmCi1AQCAtMjAwLDcgKzIwMywxMCBAQCBi b29sIExpbnV4Q29yZUR1bXBlcjo6RW51bWVyYXRlVGhyZWFkcygpIHsKLSAgICAgICAgIG1lbXNl dCgmaW5mbywgMCwgc2l6ZW9mKFRocmVhZEluZm8pKTsKLSAgICAgICAgIGluZm8udGdpZCA9IHN0 YXR1cy0+cHJfcGdycDsKLSAgICAgICAgIGluZm8ucHBpZCA9IHN0YXR1cy0+cHJfcHBpZDsKLS0j aWYgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMTsgaSsrKQotKyAgICAgICAgICAgIGluZm8ubWNvbnRl eHQuZ3BfcmVnc1tpXSA9IHN0YXR1cy0+cHJfcmVnW2ldOwotKyNlbGlmIGRlZmluZWQoX19taXBz X18pCi0gI2lmIGRlZmluZWQoX19BTkRST0lEX18pCi0gICAgICAgICBmb3IgKGludCBpID0gRUZf UjA7IGkgPD0gRUZfUjMxOyBpKyspCi0gICAgICAgICAgIGluZm8ubWNvbnRleHQuZ3JlZ3NbaSAt IEVGX1IwXSA9IHN0YXR1cy0+cHJfcmVnW2ldOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmNjCi1AQCAtNzk4LDcgKzc5OCw5IEBA IGJvb2wgTGludXhEdW1wZXI6OkdldFN0YWNrSW5mbyhjb25zdCB2b2lkKiogc3RhY2ssIHNpemVf dCogc3RhY2tfbGVuLAotICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGludF9zdGFj a19wb2ludGVyICYgfihwYWdlX3NpemUgLSAxKSk7Ci0gCi0gICAvLyBUaGUgbnVtYmVyIG9mIGJ5 dGVzIG9mIHN0YWNrIHdoaWNoIHdlIHRyeSB0byBjYXB0dXJlLgotLSAgc3RhdGljIGNvbnN0IHB0 cmRpZmZfdCBrU3RhY2tUb0NhcHR1cmUgPSAzMiAqIDEwMjQ7Ci0rICAvLyBUaGlzIG5vdyBkZXBl bmRzIG9uIHBhZ2Vfc2l6ZSB0byBhdm9pZCBtaXNzaW5nIGRhdGEKLSsgIC8vIG9uIHN5c3RlbXMg d2l0aCBsYXJnZXIgcGFnZSBzaXplcy4KLSsgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0YWNr VG9DYXB0dXJlID0gOCAqIHBhZ2Vfc2l6ZTsKLSAKLSAgIGNvbnN0IE1hcHBpbmdJbmZvKiBtYXBw aW5nID0gRmluZE1hcHBpbmcoc3RhY2tfcG9pbnRlcik7Ci0gICBpZiAoIW1hcHBpbmcpCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5o Ci1AQCAtNjAsNyArNjAsOCBAQCBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKLSAgKGRlZmlu ZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJTzMyKQotIHR5cGVkZWYgRWxmMzJfYXV4 dl90IGVsZl9hdXhfZW50cnk7Ci0gI2VsaWYgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChf X2FhcmNoNjRfXykgfHwgXAotLSAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAh PSBfQUJJTzMyKQotKyAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBfQUJJ TzMyKSB8fCBcCi0rICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gdHlwZWRlZiBFbGY2NF9h dXh2X3QgZWxmX2F1eF9lbnRyeTsKLSAjZW5kaWYKLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5p dHRlc3RfaGVscGVyLmNjCi1AQCAtNTEsNiArNTEsOCBAQAotICNkZWZpbmUgVElEX1BUUl9SRUdJ U1RFUiAicmN4IgotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gI2RlZmluZSBUSURfUFRSX1JF R0lTVEVSICIkMSIKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2RlZmluZSBUSURf UFRSX1JFR0lTVEVSICJyOCIKLSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3QgaGFzIG5vdCBiZWVu IHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MK LUBAIC0xNTQsMTkgKzE1NCwyNyBAQCBib29sIExpbnV4UHRyYWNlRHVtcGVyOjpDb3B5RnJvbVBy b2Nlc3Modm9pZCogZGVzdCwgcGlkX3QgY2hpbGQsCi0gICByZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0t Ym9vbCBMaW51eFB0cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8qIGluZm8s IHBpZF90IHRpZCkKLS17Ci0rYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0 KFRocmVhZEluZm8qIGluZm8sIHBpZF90IHRpZCkgewotICNpZmRlZiBQVFJBQ0VfR0VUUkVHU0VU Ci0gICBzdHJ1Y3QgaW92ZWMgaW87Ci0gICBpbmZvLT5HZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVy cygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKLS0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9H RVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BSU1RBVFVTLCAodm9pZCopJmlvKSA9PSAtMSkgewot KyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywg KHZvaWQqKSZpbykgPT0gLTEpIHsKLSAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotIAotICAgaW5m by0+R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsK LS0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX0ZQUkVH U0VULCAodm9pZCopJmlvKSA9PSAtMSkgewotKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VU LCB0aWQsICh2b2lkKilOVF9GUFJFR1NFVCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKLSAgICAgcmV0 dXJuIGZhbHNlOwotICAgfQotKwotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBH cmFiIHRoZSB2ZWN0b3IgcmVnaXN0ZXJzIG9uIFBQQzY0IHRvbwotKyAgaW5mby0+R2V0VmVjdG9y UmVnaXN0ZXJzKCZpby5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4pOwotKyAgaWYgKHB0cmFjZShQVFJB Q0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUENfVk1YLCAodm9pZCopJmlvKSA9PSAtMSkg ewotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rI2VuZGlmIC8vIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSsKLSAgIHJldHVybiB0cnVlOwotICNlbHNlCi0gICByZXR1cm4gZmFsc2U7Ci1AQCAt MzAzLDYgKzMxMSw5IEBAIGJvb2wgTGludXhQdHJhY2VEdW1wZXI6OkdldFRocmVhZEluZm9CeUlu ZGV4KHNpemVfdCBpbmRleCwgVGhyZWFkSW5mbyogaW5mbykgewotICNlbGlmIGRlZmluZWQoX19t aXBzX18pCi0gICBzdGFja19wb2ludGVyID0KLSAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4 X3QqPihpbmZvLT5tY29udGV4dC5ncmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXSk7Ci0rI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgc3RhY2tfcG9pbnRlciA9Ci0rICAgICAgcmVp bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhU X1BQQzY0X1JFR19TUF0pOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUgaGFzbid0IGJlZW4g cG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJh Y2VfZHVtcGVyX3VuaXR0ZXN0LmNjCi1AQCAtNDU3LDYgKzQ1Nyw5IEBAIFRFU1QoTGludXhQdHJh Y2VEdW1wZXJUZXN0LCBWZXJpZnlTdGFja1JlYWRXaXRoTXVsdGlwbGVUaHJlYWRzKSB7Ci0gI2Vs aWYgZGVmaW5lZChfX21pcHNfXykKLSAgICAgcGlkX3QqIHByb2Nlc3NfdGlkX2xvY2F0aW9uID0K LSAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cGlkX3QqPihvbmVfdGhyZWFkLm1jb250ZXh0Lmdy ZWdzWzFdKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIHBpZF90KiBwcm9j ZXNzX3RpZF9sb2NhdGlvbiA9Ci0rICAgICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4ob25l X3RocmVhZC5tY29udGV4dC5ncF9yZWdzWzhdKTsKLSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3Qg aGFzIG5vdCBiZWVuIHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgotICNlbmRpZgotQEAgLTU1Myw2 ICs1NTYsOCBAQCBURVNUX0YoTGludXhQdHJhY2VEdW1wZXJUZXN0LCBTYW5pdGl6ZVN0YWNrQ29w eSkgewotICAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLnJlZ3MucmN4OwotICNl bGlmIGRlZmluZWQoX19taXBzX18pCi0gICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhyZWFkX2lu Zm8ubWNvbnRleHQuZ3JlZ3NbMV07Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAg dWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdwX3JlZ3NbOF07Ci0g I2Vsc2UKLSAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0 Zm9ybS4KLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0 ZXIvbWluaWR1bXBfd3JpdGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYwotQEAgLTEzNiw3ICsxMzYsOSBAQCBjbGFzcyBN aW5pZHVtcFdyaXRlciB7Ci0gICAgICAgOiBmZF8obWluaWR1bXBfZmQpLAotICAgICAgICAgcGF0 aF8obWluaWR1bXBfcGF0aCksCi0gICAgICAgICB1Y29udGV4dF8oY29udGV4dCA/ICZjb250ZXh0 LT5jb250ZXh0IDogTlVMTCksCi0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmlu ZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIHZlY3Rv cl9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jfc3RhdGUgOiBOVUxMKSwKLSsjZWxp ZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAgICAg ZmxvYXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+ZmxvYXRfc3RhdGUgOiBOVUxMKSwKLSAj ZW5kaWYKLSAgICAgICAgIGR1bXBlcl8oZHVtcGVyKSwKLUBAIC00NjgsNyArNDcwLDkgQEAgY2xh c3MgTWluaWR1bXBXcml0ZXIgewotICAgICAgICAgaWYgKCFjcHUuQWxsb2NhdGUoKSkKLSAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgbXlfbWVtc2V0KGNwdS5nZXQoKSwgMCwgc2l6 ZW9mKFJhd0NvbnRleHRDUFUpKTsKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVm aW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgVUNv bnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCB2ZWN0b3Jf c3RhdGVfKTsKLSsjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlw c19fKQotICAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwg dWNvbnRleHRfLCBmbG9hdF9zdGF0ZV8pOwotICNlbHNlCi0gICAgICAgICBVQ29udGV4dFJlYWRl cjo6RmlsbENQVUNvbnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8pOwotQEAgLTg5MSw3ICs4OTUs NyBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7Ci0gICAgIGRpcmVudC0+bG9jYXRpb24ucnZhID0g MDsKLSAgIH0KLSAKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgIGJvb2wgV3JpdGVDUFVJbmZvcm1hdGlvbihNRFJhd1N5c3RlbUluZm8qIHN5c19pbmZv KSB7Ci0gICAgIGNoYXIgdmVuZG9yX2lkW3NpemVvZihzeXNfaW5mby0+Y3B1Lng4Nl9jcHVfaW5m by52ZW5kb3JfaWQpICsgMV0gPSB7MH07Ci0gICAgIHN0YXRpYyBjb25zdCBjaGFyIHZlbmRvcl9p ZF9uYW1lW10gPSAidmVuZG9yX2lkIjsKLUBAIC05MTEsNyArOTE1LDkgQEAgY2xhc3MgTWluaWR1 bXBXcml0ZXIgewotIAotICAgICAvLyBwcm9jZXNzb3JfYXJjaGl0ZWN0dXJlIHNob3VsZCBhbHdh eXMgYmUgc2V0LCBkbyB0aGlzIGZpcnN0Ci0gICAgIHN5c19pbmZvLT5wcm9jZXNzb3JfYXJjaGl0 ZWN0dXJlID0KLS0jaWYgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotKyAgICAgICAgTURfQ1BVX0FSQ0hJVEVDVFVSRV9QUEM2NDsKLSsjZWxpZiBkZWZpbmVk KF9fbWlwc19fKQotICMgaWYgX01JUFNfU0lNID09IF9BQklPMzIKLSAgICAgICAgIE1EX0NQVV9B UkNISVRFQ1RVUkVfTUlQUzsKLSAjIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAotQEAgLTEzMjcs NyArMTMzMyw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAgIGNvbnN0IGNoYXIqIHBhdGhf OyAgLy8gUGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgbWluaWR1bSBzaG91bGQgYmUgd3JpdHRl bi4KLSAKLSAgIGNvbnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsgIC8vIGFsc28gZnJv bSB0aGUgc2lnbmFsIGhhbmRsZXIKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVm aW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgY29uc3QgZ29v Z2xlX2JyZWFrcGFkOjp2c3RhdGVfdCogY29uc3QgdmVjdG9yX3N0YXRlXzsKLSsjZWxpZiAhZGVm aW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgY29uc3QgZ29vZ2xl X2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsgIC8vIGRpdHRvCi0gI2Vu ZGlmCi0gICBMaW51eER1bXBlciogZHVtcGVyXzsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKLUBAIC00Nyw2ICs0Nyw4 IEBAIGNsYXNzIEV4Y2VwdGlvbkhhbmRsZXI7Ci0gCi0gI2lmIGRlZmluZWQoX19hYXJjaDY0X18p Ci0gdHlwZWRlZiBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90OwotKyNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSt0eXBlZGVmIHZycmVnc2V0X3QgdnN0YXRlX3Q7Ci0gI2VsaWYg IWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSB0eXBlZGVmIHN0 cnVjdCBfZnBzdGF0ZSBmcHN0YXRlX3Q7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5p dHRlc3QuY2MKLUBAIC03MTAsNiArNzEwLDkgQEAgVEVTVChNaW5pZHVtcFdyaXRlclRlc3QsIElu dmFsaWRTdGFja1BvaW50ZXIpIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgY29udGV4 dC5jb250ZXh0LnVjX21jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdID0KLSAg ICAgICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotKyAgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2 NF9SRUdfU1BdID0KLSsgICAgICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7Ci0gI2Vsc2UKLSAjIGVy cm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4i Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxl LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCi1A QCAtNjUsOCArNjUsNyBAQCBib29sIE1lbW9yeU1hcHBlZEZpbGU6Ok1hcChjb25zdCBjaGFyKiBw YXRoLCBzaXplX3Qgb2Zmc2V0KSB7Ci0gICB9Ci0gCi0gI2lmIGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAotLSAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBf TUlQU19TSU0gPT0gX0FCSTY0KQotLQotKyAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19T SU0gPT0gX0FCSTY0KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBzdHJ1Y3Qga2VybmVs X3N0YXQgc3Q7Ci0gICBpZiAoc3lzX2ZzdGF0KGZkLCAmc3QpID09IC0xIHx8IHN0LnN0X3NpemUg PCAwKSB7Ci0gI2Vsc2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVk X2ZpbGVfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFw cGVkX2ZpbGVfdW5pdHRlc3QuY2MKLUBAIC0xNzYsOSArMTc2LDEwIEBAIFRFU1RfRihNZW1vcnlN YXBwZWRGaWxlVGVzdCwgUmVtYXBBZnRlck1hcCkgewotIFRFU1RfRihNZW1vcnlNYXBwZWRGaWxl VGVzdCwgTWFwV2l0aE9mZnNldCkgewotICAgLy8gUHV0IG1vcmUgZGF0YSBpbiB0aGUgdGVzdCBm aWxlIHRoaXMgdGltZS4gT2Zmc2V0cyBjYW4gb25seSBiZQotICAgLy8gZG9uZSBvbiBwYWdlIGJv dW5kYXJpZXMsIHNvIHdlIG5lZWQgYSB0d28gcGFnZSBmaWxlIHRvIHRlc3QgdGhpcy4KLS0gIGNv bnN0IGludCBwYWdlX3NpemUgPSA0MDk2OwotLSAgY2hhciBkYXRhMVsyICogcGFnZV9zaXplXTsK LS0gIHNpemVfdCBkYXRhMV9zaXplID0gc2l6ZW9mKGRhdGExKTsKLSsgIGNvbnN0IGludCBwYWdl X3NpemUgPSBnZXRwYWdlc2l6ZSgpOwotKyAgY2hhciAqZGF0YTEgPSBzdGF0aWNfY2FzdDxjaGFy Kj4obWFsbG9jKDIgKiBwYWdlX3NpemUpKTsKLSsgIEVYUEVDVF9UUlVFKGRhdGExICE9IE5VTEwp OwotKyAgc2l6ZV90IGRhdGExX3NpemUgPSAoMiAqIHBhZ2Vfc2l6ZSk7Ci0gICBmb3IgKHNpemVf dCBpID0gMDsgaSA8IGRhdGExX3NpemU7ICsraSkgewotICAgICBkYXRhMVtpXSA9IGkgJiAweDdm OwotICAgfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRlc3Qu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9tZW1vcnlfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCi1A QCAtNTcsOCArNTcsOSBAQCBURVNUKFBhZ2VBbGxvY2F0b3JUZXN0LCBMYXJnZU9iamVjdCkgewot IAotICAgRVhQRUNUX0VRKDBVLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVkKCkpOwotICAgdWlu dDhfdCAqcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGFsbG9jYXRvci5BbGxvYygxMDAw MCkpOwotKyAgdWludDY0X3QgZXhwZWN0ZWRfcGFnZXMgPSAxICsgKCgxMDAwMCAtIDEpIC8gZ2V0 cGFnZXNpemUoKSk7Ci0gICBBU1NFUlRfRkFMU0UocCA9PSBOVUxMKTsKLS0gIEVYUEVDVF9FUSgz VSwgYWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKLSsgIEVYUEVDVF9FUShleHBlY3RlZF9w YWdlcywgYWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKLSAgIGZvciAodW5zaWduZWQgaSA9 IDE7IGkgPCAxMDsgKytpKSB7Ci0gICAgIHVpbnQ4X3QgKnAgPSByZWludGVycHJldF9jYXN0PHVp bnQ4X3QqPihhbGxvY2F0b3IuQWxsb2MoaSkpOwotICAgICBBU1NFUlRfRkFMU0UocCA9PSBOVUxM KTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNjCi1AQCAtMjAyLDEy ICsyMDIsMTQgQEAgYm9vbCBFeHBsb2l0YWJpbGl0eUxpbnV4OjpFbmRlZE9uSWxsZWdhbFdyaXRl KHVpbnQ2NF90IGluc3RydWN0aW9uX3B0cikgewotICAgLy8gQ2hlY2sgYXJjaGl0ZWN0dXJlIGFu ZCBzZXQgYXJjaGl0ZWN0dXJlIHZhcmlhYmxlIHRvIGNvcnJlc3BvbmRpbmcgZmxhZwotICAgLy8g aW4gb2JqZHVtcC4KLSAgIHN3aXRjaCAoY29udGV4dC0+R2V0Q29udGV4dENQVSgpKSB7Ci0rI2lm IGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KQotICAgICBjYXNlIE1EX0NPTlRF WFRfWDg2OgotICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2IjsKLSAgICAgICBicmVhazsKLSAg ICAgY2FzZSBNRF9DT05URVhUX0FNRDY0OgotICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2Ong4 Ni02NCI7Ci0gICAgICAgYnJlYWs7Ci0rI2VuZGlmCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgLy8g VW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLiBOb3RlIHRoYXQgQVJNIGFyY2hpdGVjdHVyZXMgYXJl IG5vdAotICAgICAgIC8vIHN1cHBvcnRlZCBiZWNhdXNlIG9iamR1bXAgZG9lcyBub3Qgc3VwcG9y dCBBUk0uCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3Qu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5jYwot QEAgLTEwNCw2ICsxMDQsOCBAQCBFeHBsb2l0YWJpbGl0eUZvcihjb25zdCBzdHJpbmcmIGZpbGVu YW1lKSB7Ci0gfQotIAotIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0VuZ2lu ZSkgewotKy8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0YWJsZSBvbiBhbiB4 ODYtY2xhc3MgbGludXggbWFjaGluZS4KLSsjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5l ZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVh a3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZv cigiYXNjaWlfcmVhZF9hdi5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpF WFBMT0lUQUJJTElUWV9ISUdILAotQEAgLTEzNiw5ICsxMzgsMTIgQEAgVEVTVChFeHBsb2l0YWJp bGl0eVRlc3QsIFRlc3RXaW5kb3dzRW5naW5lKSB7Ci0gICAgICAgICAgICAgRXhwbG9pdGFiaWxp dHlGb3IoInJlYWRfYXZfY2xvYmJlcl93cml0ZS5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xl X2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9MT1csCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxp dHlGb3IoInJlYWRfYXZfY29uZGl0aW9uYWwuZG1wIikpOwotKyNlbmRpZgotIH0KLSAKLSBURVNU KEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdExpbnV4RW5naW5lKSB7Ci0rLy8gVGhlIGZvbGxvd2lu ZyB0ZXN0cyBhcmUgb25seSBleGVjdXRhYmxlIG9uIGFuIHg4Ni1jbGFzcyBsaW51eCBtYWNoaW5l LgotKyNpZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKLSAgIEFTU0VSVF9F UShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0lOVEVSRVNUSU5HLAotICAgICAgICAg ICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9udWxsX3JlYWRfYXYuZG1wIikpOwotICAgQVNT RVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLUBAIC0xNzEsNyAr MTc2LDggQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkgewotICAg ICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9leGVjdXRhYmxlX2hlYXAuZG1wIikp OwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAg ICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfam1wX3RvX21vZHVsZV9ub3RfZXhl X3JlZ2lvbi5kbXAiKSk7Ci0tI2lmbmRlZiBfV0lOMzIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQo X1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQotICAgQVNT RVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAgICAgICAgICAg ICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fbm9ud3JpdGFibGVfbW9kdWxlLmRt cCIpKTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gs Ci1AQCAtMTgyLDEwICsxODgsMTAgQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51 eEVuZ2luZSkgewotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0ZV90 b19vdXRzaWRlX21vZHVsZV92aWFfbWF0aC5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2Jy ZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9JTlRFUkVTVElORywKLSAgICAgICAgICAgICBFeHBsb2l0 YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fdW5kZXJfNGsuZG1wIikpOwotLSNlbmRpZiAgLy8g X1dJTjMyCi0rI2VuZGlmICAvLyAhZGVmaW5lZChfV0lOMzIpICYmICghZGVmaW5lZChfX2kzODYp ICYmICFkZWZpbmVkKF9feDg2XzY0KSkKLSB9Ci0gCi0tI2lmbmRlZiBfV0lOMzIKLSsjaWYgIWRl ZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQot IFRFU1QoRXhwbG9pdGFiaWxpdHlMaW51eFV0aWxzVGVzdCwgRGlzYXNzZW1ibGVCeXRlc1Rlc3Qp IHsKLSAgIEFTU0VSVF9GQUxTRShFeHBsb2l0YWJpbGl0eUxpbnV4VGVzdDo6RGlzYXNzZW1ibGVC eXRlcygiIiwgTlVMTCwgNSwgTlVMTCkpOwotICAgdWludDhfdCBieXRlc1s2XSA9IHsweGM3LCAw eDAsIDB4NSwgMHgwLCAweDAsIDB4MH07Ci1AQCAtMzAxLDYgKzMwNyw3IEBAIFRFU1QoRXhwbG9p dGFiaWxpdHlMaW51eFV0aWxzVGVzdCwgQ2FsY3VsYXRlQWRkcmVzc1Rlc3QpIHsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZ3cml0ZV9hZGRyZXNzKSk7Ci0gfQotLSNlbmRpZiAgLy8gX1dJTjMyCi0rI2VuZGlmICAv LyAhZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82 NCkpCi0rCi0gCi0gfSAgLy8gbmFtZXNwYWNlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9t ZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQy Y29yZS9taW5pZHVtcC0yLWNvcmUuY2MKLUBAIC03Niw2ICs3Niw4IEBACi0gICAjZGVmaW5lIEVM Rl9BUkNIICBFTV9NSVBTCi0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICNkZWZpbmUg RUxGX0FSQ0ggIEVNX0FBUkNINjQKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAj ZGVmaW5lIEVMRl9BUkNIICBFTV9QUEM2NAotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9fYXJt X18pCi1AQCAtODYsNiArODgsOCBAQCB0eXBlZGVmIHVzZXJfcmVncyB1c2VyX3JlZ3Nfc3RydWN0 OwotICNlbGlmIGRlZmluZWQgKF9fbWlwc19fKQotIC8vIFRoaXMgZmlsZS1sb2NhbCB0eXBlZGVm IHNpbXBsaWZpZXMgdGhlIHNvdXJjZSBjb2RlLgotIHR5cGVkZWYgZ3JlZ3NldF90IHVzZXJfcmVn c19zdHJ1Y3Q7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3R5cGVkZWYgc3RydWN0 IHB0X3JlZ3MgdXNlcl9yZWdzX3N0cnVjdDsKLSAjZW5kaWYKLSAKLSB1c2luZyBnb29nbGVfYnJl YWtwYWQ6Ok1EVHlwZUhlbHBlcjsKLUBAIC0zMjAsNiArMzI0LDkgQEAgc3RydWN0IENyYXNoZWRQ cm9jZXNzIHsKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICAgdXNlcl9m cHNpbWRfc3RydWN0IGZwcmVnczsKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotKyAgICBtY29udGV4dF90IG1jb250ZXh0OwotICNlbmRpZgotICAgICB1aW50cHRyX3Qgc3Rh Y2tfYWRkcjsKLSAgICAgY29uc3QgdWludDhfdCogc3RhY2s7Ci1AQCAtNTM0LDYgKzU0MSwzOCBA 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 dCIKLSAjZW5kaWYKLUBAIC02MjIsNiArNjYxLDEyIEBAIFBhcnNlU3lzdGVtSW5mbyhjb25zdCBP cHRpb25zJiBvcHRpb25zLCBDcmFzaGVkUHJvY2VzcyogY3Jhc2hpbmZvLAotICMgZWxzZQotICMg IGVycm9yICJUaGlzIG1pcHMgQUJJIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIChuMzIpIgot ICMgZW5kaWYKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBpZiAoc3lzaW5mby0+ cHJvY2Vzc29yX2FyY2hpdGVjdHVyZSAhPSBNRF9DUFVfQVJDSElURUNUVVJFX1BQQzY0KSB7Ci0r ICAgIGZwcmludGYoc3RkZXJyLAotKyAgICAgICAgICAgICJUaGlzIHZlcnNpb24gb2YgbWluaWR1 bXAtMi1jb3JlIG9ubHkgc3VwcG9ydHMgUFBDNjQuXG4iKTsKLSsgICAgZXhpdCgxKTsKLSsgIH0K LSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBw bGF0Zm9ybSB5ZXQiCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJVVE9SUwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9DT05UUklCVVRPUlMKLUBAIC0xMywzICsxMyw0IEBAIE1hcmsgTWVudG92YWkgPG1hcmtAY2hy b21pdW0ub3JnPgotIFJvYmVydCBTZXNlayA8cnNlc2VrQGNocm9taXVtLm9yZz4KLSBTY290dCBH cmFoYW0gPHNjb3R0bWdAY2hyb21pdW0ub3JnPgotIEpvc2h1YSBQZXJhemEgPGpwZXJhemFAY2hy b21pdW0ub3JnPgotK1NoYXduIEFuYXN0YXNpbyA8c2hhd25AYW5hc3Rhcy5pbz4KLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvY29tcGF0L2xpbnV4L3N5cy91c2VyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xpbnV4L3N5cy91 c2VyLmgKLUBAIC0xNSw2ICsxNSw3IEBACi0gI2lmbmRlZiBDUkFTSFBBRF9DT01QQVRfTElOVVhf U1lTX1VTRVJfSF8KLSAjZGVmaW5lIENSQVNIUEFEX0NPTVBBVF9MSU5VWF9TWVNfVVNFUl9IXwot IAotKyNpbmNsdWRlIDxjc3RkZGVmPgotICNpbmNsdWRlX25leHQgPHN5cy91c2VyLmg+Ci0gCi0g I2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRl eHQuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0LmgKLUBAIC01OTIsNiAr NTkyLDcwIEBAIHN0cnVjdCBNaW5pZHVtcENvbnRleHRNSVBTNjQgewotICAgdWludDY0X3QgZmly OwotIH07Ci0gCi0rLy8hIFxicmllZiBwcGM2NC1zcGVjaWZpYyBmbGFncyBmb3IgTWluaWR1bXBQ UEM2NDo6Y29udGV4dF9mbGFncwotKy8vISBCYXNlZCBvbiBtaW5pZHVtcF9jcHVfcHBjNjQuaCBm cm9tIGJyZWFrcGFkCi0rZW51bSBNaW5pZHVtcENvbnRleHRQUEM2NEZsYWdzIDogdWludDMyX3Qg ewotKyAgLy8hIFxicmllZiBJZGVudGlmaWVzIHRoZSBjb250ZXh0IGFzIFBQQzY0LgotKyAga01p bmlkdW1wQ29udGV4dFBQQzY0ID0gMHgwMTAwMDAwMCwKLSsKLSsgIC8vISBcYnJpZWYgSW5kaWNh dGVzIHRoZSB2YWxpZGl0eSBvZiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLgotKyAgLy8hCi0r ICAvLyEgUmVnaXN0ZXJzIGByMGAtYHIzMWAsIGBuaXBgLCBgbXNyYCwgYGxyYCwgZXRjLiBhcmUg dmFsaWQuCi0rICBrTWluaWR1bXBDb250ZXh0UFBDNjRCYXNlID0ga01pbmlkdW1wQ29udGV4dFBQ QzY0IHwgMHgwMDAwMDAwMSwKLSsKLSsgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0 eSBvZiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMuCi0rICAvLyEKLSsgIC8vISBSZWdpc3RlcnMg YGZwMGAtYGZwMzFgLCBgZnBzY3JgIGFyZSB2YWxpZC4KLSsgIGtNaW5pZHVtcENvbnRleHRQUEM2 NEZsb2F0aW5nID0ga01pbmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAwMDAwOCwKLSsKLSsgIC8v ISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBBbHRpdmVjL1ZNWCByZWdpc3RlcnMu Ci0rICAvLyEKLSsgIC8vISBSZWdpc3RlcnMgYHYwYC1gdjMxYCwgYHZzY3JgLCBgdnJzYXZlYC4K LSsgIGtNaW5pZHVtcENvbnRleHRQUEM2NFZlY3RvciA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8 IDB4MDAwMDAwMjAsCi0rCi0rICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2Yg YWxsIHJlZ2lzdGVycwotKyAga01pbmlkdW1wQ29udGV4dFBQQzY0QWxsID0ga01pbmlkdW1wQ29u dGV4dFBQQzY0QmFzZSAgICAgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01pbmlk dW1wQ29udGV4dFBQQzY0RmxvYXRpbmcgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg a01pbmlkdW1wQ29udGV4dFBQQzY0VmVjdG9yCi0rfTsKLSsKLSsvLyEgXGJyaWVmIEEgUFBDNjQg Q1BVIGNvbnRleHQgY2FycmllZCBpbiBhIG1pbmlkdW1wIGZpbGUuCi0rLy8hIEJhc2VkIG9uIG1p bmlkdW1wX2NwdV9wcGM2NC5oIGZyb20gYnJlYWtwYWQuCi0rc3RydWN0IE1pbmlkdW1wQ29udGV4 dFBQQzY0IHsKLSsgIHVpbnQ2NF90IGNvbnRleHRfZmxhZ3M7Ci0rCi0rICAvLyEgXGJyaWVmIEdl bmVyYWwgcHVycG9zZSByZWdpc3RlcnMuCi0rICB1aW50NjRfdCBuaXA7Ci0rICB1aW50NjRfdCBt c3I7Ci0rICB1aW50NjRfdCByZWdzWzMyXTsKLSsgIHVpbnQ2NF90IGNjcjsKLSsgIHVpbnQ2NF90 IHhlcjsKLSsgIHVpbnQ2NF90IGxuazsKLSsgIHVpbnQ2NF90IGN0cjsKLSsKLSsgIC8vISBcYnJp ZWYgRmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgotKyAgZG91YmxlIGZwcmVnc1szMl07Ci0rCi0r ICAvLyEgXGJyaWVmIEZQVSBzdGF0dXMgcmVnaXN0ZXIuCi0rICBkb3VibGUgZnBzY3I7Ci0rCi0r ICAvLyEgXGJyaWVmIEFsdGl2ZWMvVk1YIHZlY3RvciByZWdpc3RlcnMuCi0rICBzdHJ1Y3Qgewot KyAgICAgIC8vISBcYnJpZWYgVmVjdG9yIHJlZ2lzdGVycyBhcmUgMTI4Yml0cy4KLSsgICAgICB1 aW50MTI4X3N0cnVjdCBzYXZlX3ZyWzMyXTsKLSsgICAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3Zz Y3I7Ci0rCi0rICAgICAgLy8hIFxicmllZiBQYWRkaW5nIGluY2x1ZGVkIGZvciBicmVha3BhZCBj b21wYXRpYmlsdGl5LgotKyAgICAgIHVpbnQzMl90IHNhdmVfcGFkNVs0XTsKLSsKLSsgICAgICAv LyEgXGJyaWVmIFZSU0FWRSByZWdpc3Rlci4KLSsgICAgICB1aW50MzJfdCBzYXZlX3Zyc2F2ZTsK LSsKLSsgICAgICAvLyEgXGJyaWVmIFBhZGRpbmcgaW5jbHVkZWQgZm9yIGJyZWFrcGFkIGNvbXBh dGliaWx0aXkuCi0rICAgICAgdWludDMyX3Qgc2F2ZV9wYWQ2WzddOwotKyAgfSB2cmVnczsKLSt9 OwotKwotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAotIAotICNlbmRpZiAgLy8gQ1JBU0hQQURf TUlOSURVTVBfTUlOSURVTVBfQ09OVEVYVF9IXwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVt cF9jb250ZXh0X3dyaXRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0 X3dyaXRlci5jYwotQEAgLTEwMSw2ICsxMDEsMTMgQEAgTWluaWR1bXBDb250ZXh0V3JpdGVyOjpD cmVhdGVGcm9tU25hcHNob3QoY29uc3QgQ1BVQ29udGV4dCogY29udGV4dF9zbmFwc2hvdCkgewot ICAgICAgIGJyZWFrOwotICAgICB9Ci0gCi0rICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0 OiB7Ci0rICAgICAgY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TWluaWR1bXBDb250ZXh0UFBD NjRXcml0ZXI+KCk7Ci0rICAgICAgcmVpbnRlcnByZXRfY2FzdDxNaW5pZHVtcENvbnRleHRQUEM2 NFdyaXRlcio+KGNvbnRleHQuZ2V0KCkpCi0rICAgICAgICAgIC0+SW5pdGFsaXplRnJvbVNuYXBz aG90KGNvbnRleHRfc25hcHNob3QtPnBwYzY0KTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKwot ICAgICBkZWZhdWx0OiB7Ci0gICAgICAgTE9HKEVSUk9SKSA8PCAidW5rbm93biBjb250ZXh0IGFy Y2hpdGVjdHVyZSAiCi0gICAgICAgICAgICAgICAgICA8PCBjb250ZXh0X3NuYXBzaG90LT5hcmNo aXRlY3R1cmU7Ci1AQCAtNDUzLDQgKzQ2MCw0NyBAQCBzaXplX3QgTWluaWR1bXBDb250ZXh0TUlQ UzY0V3JpdGVyOjpDb250ZXh0U2l6ZSgpIGNvbnN0IHsKLSAgIHJldHVybiBzaXplb2YoY29udGV4 dF8pOwotIH0KLSAKLStNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6TWluaWR1bXBDb250ZXh0 UFBDNjRXcml0ZXIoKQotKyAgOiBNaW5pZHVtcENvbnRleHRXcml0ZXIoKSwgY29udGV4dF8oKSB7 Ci0rICAgIGNvbnRleHRfLmNvbnRleHRfZmxhZ3MgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQ7Ci0r fQotKwotK01pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjp+TWluaWR1bXBDb250ZXh0UFBDNjRX cml0ZXIoKSA9IGRlZmF1bHQ7Ci0rCi0rdm9pZCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6 SW5pdGFsaXplRnJvbVNuYXBzaG90KAotKyAgICBjb25zdCBDUFVDb250ZXh0UFBDNjQqIGNvbnRl eHRfc25hcHNob3QpIHsKLSsgIERDSEVDS19FUShzdGF0ZSgpLCBrU3RhdGVNdXRhYmxlKTsKLSsg IERDSEVDS19FUShjb250ZXh0Xy5jb250ZXh0X2ZsYWdzLCBrTWluaWR1bXBDb250ZXh0UFBDNjQp OwotKwotKyAgY29udGV4dF8uY29udGV4dF9mbGFncyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NEFs bDsKLSsKLSsgIG1lbWNweShjb250ZXh0Xy5yZWdzLCBjb250ZXh0X3NuYXBzaG90LT5yZWdzLCBz aXplb2YoY29udGV4dF8ucmVncykpOwotKyAgY29udGV4dF8ubmlwID0gY29udGV4dF9zbmFwc2hv dC0+bmlwOwotKyAgY29udGV4dF8ubXNyID0gY29udGV4dF9zbmFwc2hvdC0+bXNyOwotKyAgY29u dGV4dF8uY2NyID0gY29udGV4dF9zbmFwc2hvdC0+Y2NyOwotKyAgY29udGV4dF8ueGVyID0gY29u dGV4dF9zbmFwc2hvdC0+eGVyOwotKyAgY29udGV4dF8ubG5rID0gY29udGV4dF9zbmFwc2hvdC0+ bG5rOwotKyAgY29udGV4dF8uY3RyID0gY29udGV4dF9zbmFwc2hvdC0+Y3RyOwotKwotKyAgbWVt Y3B5KGNvbnRleHRfLmZwcmVncywgY29udGV4dF9zbmFwc2hvdC0+ZnByZWdzLCBzaXplb2YoY29u dGV4dF8uZnByZWdzKSk7Ci0rICBjb250ZXh0Xy5mcHNjciA9IGNvbnRleHRfc25hcHNob3QtPmZw c2NyOwotKwotKyAgbWVtY3B5KGNvbnRleHRfLnZyZWdzLnNhdmVfdnIsIGNvbnRleHRfc25hcHNo b3QtPnZyZWdzLnNhdmVfdnIsCi0rICAgICAgICAgc2l6ZW9mKGNvbnRleHRfLnZyZWdzLnNhdmVf dnIpKTsKLSsgIG1lbWNweSgmY29udGV4dF8udnJlZ3Muc2F2ZV92c2NyLCAmY29udGV4dF9zbmFw c2hvdC0+dnJlZ3Muc2F2ZV92c2NyLAotKyAgICAgICAgIHNpemVvZihjb250ZXh0Xy52cmVncy5z YXZlX3ZzY3IpKTsKLSsgIGNvbnRleHRfLnZyZWdzLnNhdmVfdnJzYXZlID0gY29udGV4dF9zbmFw c2hvdC0+dnJlZ3Muc2F2ZV92cnNhdmU7Ci0rfQotKwotK2Jvb2wgTWluaWR1bXBDb250ZXh0UFBD NjRXcml0ZXI6OldyaXRlT2JqZWN0KAotKyAgICBGaWxlV3JpdGVySW50ZXJmYWNlKiBmaWxlX3dy aXRlcikgewotKyAgRENIRUNLX0VRKHN0YXRlKCksIGtTdGF0ZVdyaXRhYmxlKTsKLSsgIHJldHVy biBmaWxlX3dyaXRlci0+V3JpdGUoJmNvbnRleHRfLCBzaXplb2YoY29udGV4dF8pKTsKLSt9Ci0r Ci0rc2l6ZV90IE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpDb250ZXh0U2l6ZSgpIGNvbnN0 IHsKLSsgIERDSEVDS19HRShzdGF0ZSgpLCBrU3RhdGVGcm96ZW4pOwotKyAgcmV0dXJuIHNpemVv Zihjb250ZXh0Xyk7Ci0rfQotKwotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1w L21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmgKLUBAIC0zMTUsNiArMzE1LDQ1IEBAIGNsYXNzIE1p bmlkdW1wQ29udGV4dE1JUFM2NFdyaXRlciBmaW5hbCA6IHB1YmxpYyBNaW5pZHVtcENvbnRleHRX cml0ZXIgewotICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE1pbmlkdW1wQ29udGV4dE1JUFM2 NFdyaXRlcik7Ci0gfTsKLSAKLStjbGFzcyBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciBmaW5h bCA6IHB1YmxpYyBNaW5pZHVtcENvbnRleHRXcml0ZXIgewotKyBwdWJsaWM6Ci0rICBNaW5pZHVt cENvbnRleHRQUEM2NFdyaXRlcigpOwotKyAgfk1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKCkg b3ZlcnJpZGU7Ci0rCi0rICAvLyEgXGJyaWVmIEluaXRhbGl6ZXMgdGhlIE1pbmlkdW1wQ29udGV4 dFBQQzY0IGJhc2VkIG9uIFxhIGNvbnRleHRfc25hcHNob3QuCi0rICAvLyEKLSsgIC8vISBccGFy YW1baW5dIGNvbnRleHRfc25hcHNob3QgVGhlIGNvbnRleHQgc25hcHNob3QgdG8gdXNlIGFzIHNv dXJjZSBkYXRhLgotKyAgLy8hCi0rICAvLyEgXG5vdGUgVmFsaWQgaW4gI2tTdGF0ZU11dGFibGUu IE5vIG11dGF0aW9uIG9mIGNvbnRleHQoKSBtYXkgYmUgZG9uZSBiZWZvcmUKLSsgIC8vISAgICAg Y2FsbGluZyB0aGlzIG1ldGhvZCwgYW5kIGl0IGlzIG5vdCBub3JtYWxseSBuZWNlc3NhcnkgdG8g YWx0ZXIKLSsgIC8vISAgICAgY29udGV4dCgpIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuCi0r ICB2b2lkIEluaXRhbGl6ZUZyb21TbmFwc2hvdChjb25zdCBDUFVDb250ZXh0UFBDNjQqIGNvbnRl eHRfc25hcHNob3QpOwotKwotKyAgLy8hIFxicmllZiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUg Y29udGV4dCBzdHJ1Y3R1cmUgdGhhdCB0aGlzIG9iamVjdCB3aWxsCi0rICAvLyEgICAgIHdyaXRl LgotKyAgLy8hCi0rICAvLyEgXGF0dGVudGlvbiBUaGlzIHJldHVybnMgYSBub24tYGNvbnN0YCBw b2ludGVyIHRvIHRoaXMgb2JqZWN04oCZcyBwcml2YXRlCi0rICAvLyEgICAgIGRhdGEgc28gdGhh dCBhIGNhbGxlciBjYW4gcG9wdWxhdGUgdGhlIGNvbnRleHQgc3RydWN0dXJlIGRpcmVjdGx5Lgot KyAgLy8hICAgICBUaGlzIGlzIGRvbmUgYmVjYXVzZSBwcm92aWRpbmcgc2V0dGVyIGludGVyZmFj ZXMgdG8gZWFjaCBmaWVsZCBpbiB0aGUKLSsgIC8vISAgICAgY29udGV4dCBzdHJ1Y3R1cmUgd291 bGQgYmUgdW53aWVsZHkgYW5kIGN1bWJlcnNvbWUuIENhcmUgbXVzdCBiZSB0YWtlbgotKyAgLy8h ICAgICB0byBwb3B1bGF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgY29ycmVjdGx5LiBUaGUgY29u dGV4dCBzdHJ1Y3R1cmUKLSsgIC8vISAgICAgbXVzdCBvbmx5IGJlIG1vZGlmaWVkIHdoaWxlIHRo aXMgb2JqZWN0IGlzIGluIHRoZSAja1N0YXRlTXV0YWJsZQotKyAgLy8hICAgICBzdGF0ZS4KLSsg IE1pbmlkdW1wQ29udGV4dFBQQzY0KiBjb250ZXh0KCkgeyByZXR1cm4gJmNvbnRleHRfOyB9Ci0r Ci0rIHByb3RlY3RlZDoKLSsgIC8vIE1pbmlkdW1wV3JpdGFibGU6Ci0rICBib29sIFdyaXRlT2Jq ZWN0KEZpbGVXcml0ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSBvdmVycmlkZTsKLSsKLSsgIC8v IE1pbmlkdW1wQ29udGV4dFdyaXRlcjoKLSsgIHNpemVfdCBDb250ZXh0U2l6ZSgpIGNvbnN0IG92 ZXJyaWRlOwotKwotKyBwcml2YXRlOgotKyAgTWluaWR1bXBDb250ZXh0UFBDNjQgY29udGV4dF87 Ci0rCi0rICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oTWluaWR1bXBDb250ZXh0UFBDNjRXcml0 ZXIpOwotK307Ci0rCi0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0gCi0gI2VuZGlmICAvLyBD UkFTSFBBRF9NSU5JRFVNUF9NSU5JRFVNUF9DT05URVhUX1dSSVRFUl9IXwotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9t aW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlcl90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlk dW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyX3Rlc3QuY2MKLUBAIC0yMTMsNiArMjEzLDIxIEBA IFRFU1QoTWluaWR1bXBDb250ZXh0V3JpdGVyLCBNSVBTNjRfRnJvbVNuYXBzaG90KSB7Ci0gICAg ICAgY29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0TUlQUzY0LCBrU2VlZCk7Ci0gfQotIAot K1RFU1QoTWluaWR1bXBDb250ZXh0V3JpdGVyLCBQUEM2NF9aZXJvcykgewotKyAgRW1wdHlDb250 ZXh0VGVzdDxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciwgTWluaWR1bXBDb250ZXh0UFBDNjQ+ KAotKyAgICBFeHBlY3RNaW5pZHVtcENvbnRleHRQUEM2NCk7Ci0rfQotKwotK1RFU1QoTWluaWR1 bXBDb250ZXh0V3JpdGVyLCBQUEM2NF9Gcm9tU25hcHNob3QpIHsKLSsgIGNvbnN0ZXhwciB1aW50 MzJfdCBrU2VlZCA9IDY0OwotKyAgQ1BVQ29udGV4dFBQQzY0IGNvbnRleHRfcHBjNjQ7Ci0rICBD UFVDb250ZXh0IGNvbnRleHQ7Ci0rICBjb250ZXh0LnBwYzY0ID0gJmNvbnRleHRfcHBjNjQ7Ci0r ICBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0KCZjb250ZXh0LCBrU2VlZCk7Ci0rICBGcm9tU25h cHNob3RUZXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyLCBNaW5pZHVtcENvbnRleHRQUEM2 ND4oCi0rICAgICAgY29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0UFBDNjQsIGtTZWVkKTsK LSt9Ci0rCi0gfSAgLy8gbmFtZXNwYWNlCi0gfSAgLy8gbmFtZXNwYWNlIHRlc3QKLSB9ICAvLyBu YW1lc3BhY2UgY3Jhc2hwYWQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZv X3dyaXRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVy LmNjCi1AQCAtMTI2LDYgKzEyNiw4IEBAIHN0ZDo6c3RyaW5nIE1pbmlkdW1wTWlzY0luZm9EZWJ1 Z0J1aWxkU3RyaW5nKCkgewotICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJtaXBz IjsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFM2NEVMKQotICAgc3RhdGljIGNvbnN0ZXhw ciBjaGFyIGtDUFVbXSA9ICJtaXBzNjQiOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQp Ci0rICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0gInBwYzY0IjsKLSAjZWxzZQotICNl cnJvciBkZWZpbmUga0NQVSBmb3IgdGhpcyBDUFUKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvY2FwdHVyZV9tZW1vcnkuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2FwdHVyZV9tZW1vcnku Y2MKLUBAIC0xMTEsNiArMTExLDExIEBAIHZvaWQgQ2FwdHVyZU1lbW9yeTo6UG9pbnRlZFRvQnlD b250ZXh0KGNvbnN0IENQVUNvbnRleHQmIGNvbnRleHQsCi0gICBmb3IgKHNpemVfdCBpID0gMDsg aSA8IGJhc2U6OnNpemUoY29udGV4dC5taXBzZWwtPnJlZ3MpOyArK2kpIHsKLSAgICAgTWF5YmVD YXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0Lm1pcHNlbC0+cmVnc1tpXSk7Ci0g ICB9Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICBNYXliZUNhcHR1 cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQtPm5pcCk7Ci0rICBmb3IgKHNp emVfdCBpID0gMDsgaSA8IGJhc2U6OnNpemUoY29udGV4dC5wcGM2NC0+cmVncyk7ICsraSkgewot KyAgICBNYXliZUNhcHR1cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQtPnJl Z3NbaV0pOwotKyAgfQotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJj aGl0ZWN0dXJlLmgKLUBAIC00Myw3ICs0MywxMCBAQCBlbnVtIENQVUFyY2hpdGVjdHVyZSB7Ci0g ICBrQ1BVQXJjaGl0ZWN0dXJlTUlQU0VMLAotIAotICAgLy8hIFxicmllZiA2NC1iaXQgTUlQU0VM LgotLSAga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMCi0rICBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0 RUwsCi0rCi0rICAvLyEgXGJyaWVmIDY0LWJpdCBQUEM2NC4KLSsgIGtDUFVBcmNoaXRlY3R1cmVQ UEM2NAotIH07Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBz aG90L2NwdV9jb250ZXh0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNjCi1A QCAtMTY5LDYgKzE2OSw4IEBAIHVpbnQ2NF90IENQVUNvbnRleHQ6Okluc3RydWN0aW9uUG9pbnRl cigpIGNvbnN0IHsKLSAgICAgICByZXR1cm4gYXJtLT5wYzsKLSAgICAgY2FzZSBrQ1BVQXJjaGl0 ZWN0dXJlQVJNNjQ6Ci0gICAgICAgcmV0dXJuIGFybTY0LT5wYzsKLSsgICAgY2FzZSBrQ1BVQXJj aGl0ZWN0dXJlUFBDNjQ6Ci0rICAgICAgcmV0dXJuIHBwYzY0LT5uaXA7Ci0gICAgIGRlZmF1bHQ6 Ci0gICAgICAgTk9UUkVBQ0hFRCgpOwotICAgICAgIHJldHVybiB+MHVsbDsKLUBAIC0xODUsNiAr MTg3LDggQEAgdWludDY0X3QgQ1BVQ29udGV4dDo6U3RhY2tQb2ludGVyKCkgY29uc3QgewotICAg ICAgIHJldHVybiBhcm0tPnNwOwotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKLSAg ICAgICByZXR1cm4gYXJtNjQtPnNwOwotKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDoK LSsgICAgICByZXR1cm4gcHBjNjQtPnJlZ3NbMV07Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgTk9U UkVBQ0hFRCgpOwotICAgICAgIHJldHVybiB+MHVsbDsKLUBAIC0xOTYsNiArMjAwLDcgQEAgYm9v bCBDUFVDb250ZXh0OjpJczY0Qml0KCkgY29uc3QgewotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1 cmVYODZfNjQ6Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgotICAgICBjYXNlIGtD UFVBcmNoaXRlY3R1cmVNSVBTNjRFTDoKLSsgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6 Ci0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVg4NjoKLSAg ICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNOgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29u dGV4dC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmgKLUBAIC0zNTIsNiArMzUy LDI0IEBAIHN0cnVjdCBDUFVDb250ZXh0TUlQUzY0IHsKLSAgIHVpbnQ2NF90IGZpcjsKLSB9Owot IAotKy8vISBcYnJpZWYgQSBjb250ZXh0IHN0cnVjdHVyZSBjYXJyeWluZyBQUEM2NCBDUFUgc3Rh dGUuCi0rc3RydWN0IENQVUNvbnRleHRQUEM2NCB7Ci0rICB1aW50NjRfdCBuaXA7Ci0rICB1aW50 NjRfdCBtc3I7Ci0rICB1aW50NjRfdCByZWdzWzMyXTsKLSsgIHVpbnQ2NF90IGNjcjsKLSsgIHVp bnQ2NF90IHhlcjsKLSsgIHVpbnQ2NF90IGxuazsKLSsgIHVpbnQ2NF90IGN0cjsKLSsgIGRvdWJs ZSBmcHJlZ3NbMzJdOwotKyAgZG91YmxlIGZwc2NyOwotKyAgc3RydWN0IHsKLSsgICAgdWludDEy OF9zdHJ1Y3Qgc2F2ZV92clszMl07Ci0rICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnNjcjsKLSsg ICAgdWludDMyX3Qgc2F2ZV92cnNhdmU7Ci0rICB9IHZyZWdzOwotK307Ci0rCi0gLy8hIFxicmll ZiBBIGNvbnRleHQgc3RydWN0dXJlIGNhcGFibGUgb2YgY2FycnlpbmcgdGhlIGNvbnRleHQgb2Yg YW55IHN1cHBvcnRlZAotIC8vISAgICAgQ1BVIGFyY2hpdGVjdHVyZS4KLSBzdHJ1Y3QgQ1BVQ29u dGV4dCB7Ci1AQCAtMzgyLDYgKzQwMCw3IEBAIHN0cnVjdCBDUFVDb250ZXh0IHsKLSAgICAgQ1BV Q29udGV4dEFSTTY0KiBhcm02NDsKLSAgICAgQ1BVQ29udGV4dE1JUFMqIG1pcHNlbDsKLSAgICAg Q1BVQ29udGV4dE1JUFM2NCogbWlwczY0OwotKyAgICBDUFVDb250ZXh0UFBDNjQqIHBwYzY0Owot ICAgfTsKLSB9OwotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51 eC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2NwdV9jb250ZXh0X2xpbnV4LmgKLUBAIC0x NSw2ICsxNSw3IEBACi0gI2lmbmRlZiBDUkFTSFBBRF9TTkFQU0hPVF9MSU5VWF9DUFVfQ09OVEVY VF9MSU5VWF9IXwotICNkZWZpbmUgQ1JBU0hQQURfU05BUFNIT1RfTElOVVhfQ1BVX0NPTlRFWFRf TElOVVhfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0cmluZz4KLSAjaW5jbHVkZSAiYnVpbGQvYnVpbGRf Y29uZmlnLmgiCi0gI2luY2x1ZGUgInNuYXBzaG90L2NwdV9jb250ZXh0LmgiCi0gI2luY2x1ZGUg InNuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgiCi1AQCAtMTc0LDYgKzE3NSw3OCBAQCB2 b2lkIEluaXRpYWxpemVDUFVDb250ZXh0TUlQUygKLSAKLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX01J UFNfRkFNSUxZIHx8IERPWFlHRU4KLSAKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpIHx8IERPWFlHRU4KLSsKLSsvLyEgXGJyaWVmIEluaXRhbGl6ZXMgYSBDUFVDb250ZXh0UFBD NjQgc3RydWN0dXJlIGZyb20gbmF0aXZlIGNvbnRleHQKLSsvLyEgICAgIHN0cnVjdHVyZXMgb24g TGludXguCi0rLy8hCi0rLy8hIFxwYXJhbVtpbl0gdGhyZWFkX2NvbnRleHQgVGhlIG5hdGl2ZSB0 aHJlYWQgY29udGV4dC4KLSsvLyEgXHBhcmFtW2luXSBmbG9hdF9jb250ZXh0IFRoZSBuYXRpdmUg ZmxvYXQgY29udGV4dC4KLSsvLyEgXHBhcmFtW2luXSB2ZWN0b3JfY29udGV4dCBUaGUgbmF0aXZl IHZlY3RvciBjb250ZXh0LgotKy8vISBccGFyYW1bb3V0XSBjb250ZXh0IFRoZSBDUFVDb250ZXh0 UFBDNjQgc3RydWN0dXJlIHRvIGluaXRhbGl6ZS4KLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRz PgotK3ZvaWQgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgKLSsgICAgY29uc3QgVGhyZWFkQ29u dGV4dDo6dDY0X3QmIHRocmVhZF9jb250ZXh0LAotKyAgICBjb25zdCBGbG9hdENvbnRleHQ6OmY2 NF90JiBmbG9hdF9jb250ZXh0LAotKyAgICBjb25zdCBWZWN0b3JDb250ZXh0Ojp2NjRfdCYgdmVj dG9yX2NvbnRleHQsCi0rICAgIHR5cGVuYW1lIFRyYWl0czo6Q1BVQ29udGV4dCogY29udGV4dCkg ewotKwotKyAgbWVtY3B5KGNvbnRleHQtPnJlZ3MsIHRocmVhZF9jb250ZXh0Lmdwciwgc2l6ZW9m KGNvbnRleHQtPnJlZ3MpKTsKLSsgIGNvbnRleHQtPm5pcCA9IHRocmVhZF9jb250ZXh0Lm5pcDsK LSsgIGNvbnRleHQtPm1zciA9IHRocmVhZF9jb250ZXh0Lm1zcjsKLSsgIGNvbnRleHQtPmNjciA9 IHRocmVhZF9jb250ZXh0LmNjcjsKLSsgIGNvbnRleHQtPnhlciA9IHRocmVhZF9jb250ZXh0Lnhl cjsKLSsgIGNvbnRleHQtPmxuayA9IHRocmVhZF9jb250ZXh0LmxuazsKLSsgIGNvbnRleHQtPmN0 ciA9IHRocmVhZF9jb250ZXh0LmN0cjsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5mcHJlZ3MsIGZs b2F0X2NvbnRleHQuZnByZWdzLCBzaXplb2YoY29udGV4dC0+ZnByZWdzKSk7Ci0rICBjb250ZXh0 LT5mcHNjciA9IGZsb2F0X2NvbnRleHQuZnBzY3I7Ci0rCi0rICBmb3IgKHVpbnQ4X3QgaSA9IDA7 IGkgPCAzMjsgaSsrKSB7Ci0rICAgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnJbaV0gPSB7Ci0rICAg ICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzBdKSA8PCAzMikgfAotKyAg ICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzFdLAotKyAgICAgICgoKHVpbnQ2NF90KXZl Y3Rvcl9jb250ZXh0LnZycmVnc1tpXVsyXSkgPDwgMzIpIHwKLSsgICAgICAgIHZlY3Rvcl9jb250 ZXh0LnZycmVnc1tpXVszXQotKyAgICB9OwotKyAgfQotKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92 cnNhdmUgPSB2ZWN0b3JfY29udGV4dC52cnNhdmU7Ci0rICBjb250ZXh0LT52cmVncy5zYXZlX3Zz Y3IgPSB7MCwgKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZzY3IudnNjcl93b3JkfTsKLSt9Ci0r Ci0rdGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KLSt2b2lkIEluaXRpYWxpemVDUFVDb250ZXh0 UFBDNjQoCi0rICAgIGNvbnN0IFNpZ25hbFRocmVhZENvbnRleHQ2NCAmdGhyZWFkX2NvbnRleHQs Ci0rICAgIGNvbnN0IFNpZ25hbEZsb2F0Q29udGV4dDY0ICZmbG9hdF9jb250ZXh0LAotKyAgICBj b25zdCBTaWduYWxWZWN0b3JDb250ZXh0NjQgJnZlY3Rvcl9jb250ZXh0LAotKyAgICB0eXBlbmFt ZSBUcmFpdHM6OkNQVUNvbnRleHQqIGNvbnRleHQpIHsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5y ZWdzLCB0aHJlYWRfY29udGV4dC5yZWdzLCBzaXplb2YoY29udGV4dC0+cmVncykpOwotKyAgY29u dGV4dC0+bmlwID0gdGhyZWFkX2NvbnRleHQubmlwOwotKyAgY29udGV4dC0+bXNyID0gdGhyZWFk X2NvbnRleHQubXNyOwotKyAgY29udGV4dC0+Y2NyID0gdGhyZWFkX2NvbnRleHQuY2NyOwotKyAg Y29udGV4dC0+eGVyID0gdGhyZWFkX2NvbnRleHQueGVyOwotKyAgY29udGV4dC0+bG5rID0gdGhy ZWFkX2NvbnRleHQubG5rOwotKyAgY29udGV4dC0+Y3RyID0gdGhyZWFkX2NvbnRleHQuY3RyOwot KwotKyAgbWVtY3B5KGNvbnRleHQtPmZwcmVncywgZmxvYXRfY29udGV4dC5yZWdzLCBzaXplb2Yo Y29udGV4dC0+ZnByZWdzKSk7Ci0rICBjb250ZXh0LT5mcHNjciA9IGZsb2F0X2NvbnRleHQuZnBz Y3I7Ci0rCi0rICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkgPCAzMjsgaSsrKSB7Ci0rICAgIGNvbnRl eHQtPnZyZWdzLnNhdmVfdnJbaV0gPSB7Ci0rICAgICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRl eHQudnJyZWdzW2ldWzBdKSA8PCAzMikgfAotKyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdz W2ldWzFdLAotKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsyXSkg PDwgMzIpIHwKLSsgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVszXQotKyAgICB9Owot KyAgfQotKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cnNhdmUgPSB2ZWN0b3JfY29udGV4dC52cnNh dmU7Ci0rICBjb250ZXh0LT52cmVncy5zYXZlX3ZzY3IgPSB7MCwgKHVpbnQ2NF90KXZlY3Rvcl9j b250ZXh0LnZzY3IudnNjcl93b3JkfTsKLSt9Ci0rCi0rCi0rI2VuZGlmCi0rCi0gfSAgLy8gbmFt ZXNwYWNlIGludGVybmFsCi0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0gCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9kZWJ1Z19yZW5kZXp2b3VzX3Rlc3QuY2MKLUBAIC0xNTksOSArMTU5LDExIEBA IHZvaWQgVGVzdEFnYWluc3RUYXJnZXQoUHRyYWNlQ29ubmVjdGlvbiogY29ubmVjdGlvbikgewot ICAgICAgICAgICBjb25zdCBib29sIGlzX3Zkc29fbWFwcGluZyA9Ci0gICAgICAgICAgICAgICBk ZXZpY2UgPT0gMCAmJiBpbm9kZSA9PSAwICYmIG1hcHBpbmdfbmFtZSA9PSAiW3Zkc29dIjsKLSAg ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtQcmVmaXhbXSA9ICJsaW51eC12ZHNvLnNv LiI7Ci0rICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4NjRbXSA9ICJsaW51 eC12ZHNvNjQuc28uIjsKLSAgICAgICAgICAgcmV0dXJuIGlzX3Zkc29fbWFwcGluZyA9PQotICAg ICAgICAgICAgICAgICAgKG1vZHVsZV9uYW1lLmVtcHR5KCkgfHwKLS0gICAgICAgICAgICAgICAg ICBtb2R1bGVfbmFtZS5jb21wYXJlKDAsIHN0cmxlbihrUHJlZml4KSwga1ByZWZpeCkgPT0gMCk7 Ci0rICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUuY29tcGFyZSgwLCBzdHJsZW4oa1ByZWZp eCksIGtQcmVmaXgpID09IDAgfHwKLSsgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZS5jb21w YXJlKDAsIHN0cmxlbihrUHJlZml4NjQpLCBrUHJlZml4NjQpID09IDApOwotICAgICAgICAgfSwK LSAgICAgICAgIG1vZHVsZV9tYXBwaW5nLT5uYW1lLAotICAgICAgICAgbW9kdWxlX21hcHBpbmct PmRldmljZSwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xp bnV4LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51 eC5jYwotQEAgLTMyMyw2ICszMjMsNjkgQEAgYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpS ZWFkQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+KAotICAgICAgIHJlYWRlciwgY29udGV4dF9hZGRy ZXNzLCBjb250ZXh0Xy5taXBzNjQpOwotIH0KLSAKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQ QzY0X0ZBTUlMWSkKLSsKLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgotK3N0YXRpYyBib29s IFJlYWRDb250ZXh0KFByb2Nlc3NSZWFkZXJMaW51eCogcmVhZGVyLAotKyAgICAgICAgICAgICAg ICAgICAgICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcywKLSsgICAgICAgICAgICAg ICAgICAgICAgICB0eXBlbmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGRlc3RfY29udGV4dCkgewot KyAgY29uc3QgUHJvY2Vzc01lbW9yeSogbWVtb3J5ID0gcmVhZGVyLT5NZW1vcnkoKTsKLSsKLSsg IExpbnV4Vk1BZGRyZXNzIGdwX3JlZ3NfYWRkcmVzcyA9IGNvbnRleHRfYWRkcmVzcyArCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRl eHQpICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVu YW1lIFRyYWl0czo6TUNvbnRleHQsIGdwX3JlZ3MpOwotKwotKyAgdHlwZW5hbWUgVHJhaXRzOjpT aWduYWxUaHJlYWRDb250ZXh0IHRocmVhZF9jb250ZXh0OwotKyAgaWYgKCFtZW1vcnktPlJlYWQo Z3BfcmVnc19hZGRyZXNzLCBzaXplb2YodGhyZWFkX2NvbnRleHQpLCAmdGhyZWFkX2NvbnRleHQp KSB7Ci0rICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgZ3BfcmVncyEiOwotKyAgICBy ZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBMaW51eFZNQWRkcmVzcyBmcF9yZWdzX2FkZHJlc3Mg PSBjb250ZXh0X2FkZHJlc3MgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBmcF9yZWdzKTsK LSsKLSsgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsRmxvYXRDb250ZXh0IGZwX2NvbnRleHQ7Ci0r ICBpZiAoIW1lbW9yeS0+UmVhZChmcF9yZWdzX2FkZHJlc3MsIHNpemVvZihmcF9jb250ZXh0KSwg JmZwX2NvbnRleHQpKSB7Ci0rICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgZnBfcmVn cyEiOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBMaW51eFZNQWRkcmVzcyB2X3Jl Z3NfcHRyX2FkZHJlc3MgPSBjb250ZXh0X2FkZHJlc3MgKwotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQpICsKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4 dCwgdm14X3Jlc2VydmUpICsgODsKLSsKLSsgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVmVjdG9y Q29udGV4dCB2X2NvbnRleHQ7Ci0rICBpZiAoIW1lbW9yeS0+UmVhZCh2X3JlZ3NfcHRyX2FkZHJl c3MsIHNpemVvZih2X2NvbnRleHQpLCAmdl9jb250ZXh0KSkgewotKyAgICBMT0coRVJST1IpIDw8 ICJDb3VsZG4ndCByZWFkIHZfcmVncyEiOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0r ICBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0PENvbnRleHRUcmFpdHM2ND4odGhyZWFkX2NvbnRl eHQsIGZwX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfY29udGV4dCwg ZGVzdF9jb250ZXh0KTsKLSsKLSsgIHJldHVybiB0cnVlOwotK30KLSsKLSt0ZW1wbGF0ZTw+Ci0r Ym9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+ KAotKyAgICBQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKLSsgICAgTGludXhWTUFkZHJlc3Mg Y29udGV4dF9hZGRyZXNzKSB7Ci0rICBjb250ZXh0Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJjaGl0 ZWN0dXJlUFBDNjQ7Ci0rICBjb250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2NDsK LSsKLSsgIHJldHVybiBpbnRlcm5hbDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKLSsg ICAgICByZWFkZXIsIGNvbnRleHRfYWRkcmVzcywgY29udGV4dF8ucHBjNjQpOwotK30KLSsKLSt0 ZW1wbGF0ZTw+Ci0rYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250 ZXh0VHJhaXRzMzI+KAotKyAgICBQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKLSsgICAgTGlu dXhWTUFkZHJlc3MgY29udGV4dF9hZGRyZXNzKSB7Ci0rICAvLyBQUEM2NCBpcyA2NC1iaXQKLSsg IHJldHVybiBmYWxzZTsKLSt9Ci0rCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi0g Ci0gYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpJbml0aWFsaXplKFByb2Nlc3NSZWFkZXJM aW51eCogcHJvY2Vzc19yZWFkZXIsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlv bl9zbmFwc2hvdF9saW51eC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9z bmFwc2hvdF9saW51eC5oCi1AQCAtODQsNiArODQsOCBAQCBjbGFzcyBFeGNlcHRpb25TbmFwc2hv dExpbnV4IGZpbmFsIDogcHVibGljIEV4Y2VwdGlvblNuYXBzaG90IHsKLSAjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7Ci0gICAg IENQVUNvbnRleHRNSVBTNjQgbWlwczY0OwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRf RkFNSUxZKQotKyAgICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7Ci0gI2VuZGlmCi0gICB9IGNvbnRl eHRfdW5pb25fOwotICAgQ1BVQ29udGV4dCBjb250ZXh0XzsKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3Qv bGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKLUBAIC0yOTYsNyArMjk2 LDI4IEBAIHZvaWQgRXhwZWN0Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBhY3R1YWwsIGNvbnN0 IE5hdGl2ZUNQVUNvbnRleHQmIGV4cGVjdGVkKSB7Ci0gICAgICAgICAgICAgMCk7Ci0gI3VuZGVm IENQVV9BUkNIX05BTUUKLSB9Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp Ci0rdXNpbmcgTmF0aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0X3Q7Ci0rCi0rdm9pZCBJbml0aWFs aXplQ29udGV4dChOYXRpdmVDUFVDb250ZXh0KiBjb250ZXh0KSB7Ci0rICBmb3IgKHNpemVfdCBy ZWcgPSAwOyByZWcgPCAzMjsgKytyZWcpIHsKLSsgICAgY29udGV4dC0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tyZWddID0gcmVnOwotKyAgfQotKwotKyAgbWVtc2V0KCZjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzLCA0NCwKLSsgICAgICBzaXplb2YoY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVn cykpOwotK30KLSAKLSt2b2lkIEV4cGVjdENvbnRleHQoY29uc3QgQ1BVQ29udGV4dCYgYWN0dWFs LCBjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBleHBlY3RlZCkgewotKyAgRVhQRUNUX0VRKGFjdHVh bC5hcmNoaXRlY3R1cmUsIGtDUFVBcmNoaXRlY3R1cmVQUEM2NCk7Ci0rCi0rICBmb3IgKHNpemVf dCByZWcgPSAwOyByZWcgPCAzMjsgKytyZWcpIHsKLSsgICAgRVhQRUNUX0VRKGFjdHVhbC5wcGM2 NC0+cmVnc1tyZWddLCBleHBlY3RlZC51Y19tY29udGV4dC5ncF9yZWdzW3JlZ10pOwotKyAgfQot KwotKyAgRVhQRUNUX0VRKG1lbWNtcChhY3R1YWwucHBjNjQtPmZwcmVncywgZXhwZWN0ZWQudWNf bWNvbnRleHQuZnBfcmVncywKLSsgICAgICAgICAgICBzaXplb2YoYWN0dWFsLnBwYzY0LT5mcHJl Z3MpKSwgMCk7Ci0rfQotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBz aG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCi1AQCAtMTA4LDYgKzEwOCw4IEBAIHZv aWQgUHJvY2Vzc1JlYWRlckxpbnV4OjpUaHJlYWQ6OkluaXRpYWxpemVTdGFjayhQcm9jZXNzUmVh ZGVyTGludXgqIHJlYWRlcikgewotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp Ci0gICBzdGFja19wb2ludGVyID0gcmVhZGVyLT5JczY0Qml0KCkgPyB0aHJlYWRfaW5mby50aHJl YWRfY29udGV4dC50NjQucmVnc1syOV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6IHRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQzMi5yZWdzWzI5XTsKLSsjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIHN0YWNrX3BvaW50ZXIgPSB0aHJlYWRf aW5mby50aHJlYWRfY29udGV4dC50NjQuZ3ByWzFdOwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0g I2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4X3Rl c3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvcHJvY2Vzc19yZWFkZXJfbGludXhfdGVz dC5jYwotQEAgLTU5MSw2ICs1OTEsOCBAQCBib29sIFdyaXRlVGVzdE1vZHVsZShjb25zdCBiYXNl OjpGaWxlUGF0aCYgbW9kdWxlX3BhdGgpIHsKLSAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVN X0FBUkNINjQ7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTRUwpIHx8IGRlZmluZWQoQVJD SF9DUFVfTUlQUzY0RUwpCi0gICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9NSVBTOwotKyNl bGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBF TV9QUEM2NDsKLSAjZW5kaWYKLSAKLSAgIG1vZHVsZS5laGRyLmVfdmVyc2lvbiA9IEVWX0NVUlJF TlQ7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaAotQEAgLTQyMiw2ICs0MjIsODkgQEAg c3RhdGljX2Fzc2VydChvZmZzZXRvZihVQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+LCBtY29udGV4 dC5mcHJlZ3MpID09Ci0gICAgICAgICAgICAgICAiY29udGV4dCBvZmZzZXQgbWlzbWF0Y2giKTsK LSAjZW5kaWYKLSAKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsKLStz dHJ1Y3QgU2lnbmFsVGhyZWFkQ29udGV4dDY0IHsKLSsgIHVpbnQ2NF90IHJlZ3NbMzJdOwotKyAg dWludDY0X3QgbmlwOwotKyAgdWludDY0X3QgbXNyOwotKyAgdWludDY0X3Qgb3JpZ19yMzsKLSsg IHVpbnQ2NF90IGN0cjsKLSsgIHVpbnQ2NF90IGxuazsKLSsgIHVpbnQ2NF90IHhlcjsKLSsgIHVp bnQ2NF90IGNjcjsKLSsgIHVpbnQ2NF90IHNvZnRlOwotKyAgdWludDY0X3QgdHJhcDsKLSsgIHVp bnQ2NF90IGRhcjsKLSsgIHVpbnQ2NF90IGRzaXNyOwotKyAgdWludDY0X3QgcmVzdWx0OwotKyAg dWludDY0X3QgZHNjcjsKLSsgIHVpbnQ2NF90IGZwcjBbM107Ci0rfTsKLSsKLStzdHJ1Y3QgU2ln bmFsRmxvYXRDb250ZXh0NjQgewotKyAgZG91YmxlIHJlZ3NbMzJdOwotKyAgZG91YmxlIGZwc2Ny OwotK307Ci0rCi0rc3RydWN0IFNpZ25hbFZlY3RvckNvbnRleHQ2NCB7Ci0rICBpbnQzMl90IHZy cmVnc1szMl1bNF07Ci0rICBzdHJ1Y3QgewotKyAgICBpbnQzMl90IF9fcGFkWzNdOwotKyAgICBp bnQzMl90IHZzY3Jfd29yZDsKLSsgIH0gdnNjcjsKLSsgIGludDMyX3QgdnJzYXZlOwotKyAgaW50 MzJfdCBfX3BhZFszXTsKLSt9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDE2KSkpOwotKwot KwotKyNwcmFnbWEgcGFjayhwb3ApCi0rc3RydWN0IE1Db250ZXh0NjQgewotKyAgdWludDY0X3Qg cmVzZXJ2ZWRbNF07Ci0rICBpbnQzMl90IHNpZ25hbDsKLSsgIGludDMyX3QgX19wYWQwOwotKyAg dWludDY0X3QgaGFuZGxlcjsKLSsgIHVpbnQ2NF90IG9sZG1hc2s7Ci0rICB1aW50NjRfdCBwdF9y ZWdzX3B0cjsKLSsgIFNpZ25hbFRocmVhZENvbnRleHQ2NCBncF9yZWdzOwotKyAgU2lnbmFsRmxv YXRDb250ZXh0NjQgIGZwX3JlZ3M7Ci0rICBTaWduYWxWZWN0b3JDb250ZXh0NjQgKnZfcmVnczsK LSsgIGludDY0X3Qgdm14X3Jlc2VydmVbNjldOwotK307Ci0rCi0rc3RydWN0IENvbnRleHRUcmFp dHM2NCA6IHB1YmxpYyBUcmFpdHM2NCB7Ci0rICB1c2luZyBNQ29udGV4dCA9IE1Db250ZXh0NjQ7 Ci0rICB1c2luZyBTaWduYWxUaHJlYWRDb250ZXh0ID0gU2lnbmFsVGhyZWFkQ29udGV4dDY0Owot KyAgdXNpbmcgU2lnbmFsRmxvYXRDb250ZXh0ID0gU2lnbmFsRmxvYXRDb250ZXh0NjQ7Ci0rICB1 c2luZyBTaWduYWxWZWN0b3JDb250ZXh0ID0gU2lnbmFsVmVjdG9yQ29udGV4dDY0OwotKyAgdXNp bmcgQ1BVQ29udGV4dCA9IENQVUNvbnRleHRQUEM2NDsKLSt9OwotKwotK3N0cnVjdCBDb250ZXh0 VHJhaXRzMzIgOiBwdWJsaWMgVHJhaXRzMzIge307Ci0rCi0rc3RydWN0IFVDb250ZXh0IHsKLSsg IHVpbnQ2NF90IGZsYWdzOwotKyAgdWludDY0X3QgbGluazsKLSsgIFNpZ25hbFN0YWNrPENvbnRl eHRUcmFpdHM2ND4gc3RhY2s7Ci0rICBTaWdzZXQ8Q29udGV4dFRyYWl0czY0PiBzaWdtYXNrOwot KyAgTUNvbnRleHQ2NCBtY29udGV4dDsKLSt9OwotKyNwcmFnbWEgcGFjayhwdXNoLCAxKQotKwot K3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVDb250ZXh0KSA9PSBzaXplb2YodWNvbnRleHRfdCksCi0r ICAgICAgICAgICAgICAidWNvbnRleHRfdCBzaXplIG1pc21hdGNoIik7Ci0rc3RhdGljX2Fzc2Vy dChzaXplb2YoTUNvbnRleHQ2NCkgPT0gc2l6ZW9mKG1jb250ZXh0X3QpLAotKyAgICAgICAgICAg ICAgIm1jb250ZXh0X3Qgc2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNp Z25hbFRocmVhZENvbnRleHQ2NCkgPT0gc2l6ZW9mKGdyZWdzZXRfdCksCi0rICAgICAgICAgICAg ICAiZ3JlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsKLStzdGF0aWNfYXNzZXJ0KHNpemVvZihTaWdu YWxGbG9hdENvbnRleHQ2NCkgPT0gc2l6ZW9mKGZwcmVnc2V0X3QpLAotKyAgICAgICAgICAgICAg ImZwcmVnc2V0X3Qgc2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNpZ25h bFZlY3RvckNvbnRleHQ2NCkgPT0gc2l6ZW9mKF9saWJjX3Zyc3RhdGUpLAotKyAgICAgICAgICAg ICAgInZyc3RhdGUgc2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNv bnRleHQsIG1jb250ZXh0KSA9PQotKyAgICAgICAgICAgICAgb2Zmc2V0b2YodWNvbnRleHRfdCwg dWNfbWNvbnRleHQpLCAibWNvbnRleHQgb2Zmc2V0IG1pc21hdGNoIik7Ci0rc3RhdGljX2Fzc2Vy dChvZmZzZXRvZihNQ29udGV4dDY0LCBncF9yZWdzKSA9PQotKyAgICAgICAgICAgICAgb2Zmc2V0 b2YobWNvbnRleHRfdCwgZ3BfcmVncyksICJncF9yZWdzIG9mZnNldCBtaXNtYXRjaCIpOwotICNl bHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2xpbnV4L3N5c3RlbV9zbmFwc2hvdF9saW51eC5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9saW51eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MKLUBAIC0yMDMsNiArMjAz LDggQEAgQ1BVQXJjaGl0ZWN0dXJlIFN5c3RlbVNuYXBzaG90TGludXg6OkdldENQVUFyY2hpdGVj dHVyZSgpIGNvbnN0IHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAg cmV0dXJuIHByb2Nlc3NfcmVhZGVyXy0+SXM2NEJpdCgpID8ga0NQVUFyY2hpdGVjdHVyZU1JUFM2 NEVMCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrQ1BVQXJjaGl0ZWN0 dXJlTUlQU0VMOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgcmV0 dXJuIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDsKLSAjZWxzZQotICNlcnJvciBwb3J0IHRvIHlvdXIg YXJjaGl0ZWN0dXJlCi0gI2VuZGlmCi1AQCAtMjE4LDYgKzIyMCw5IEBAIHVpbnQzMl90IFN5c3Rl bVNuYXBzaG90TGludXg6OkNQVVJldmlzaW9uKCkgY29uc3QgewotICNlbGlmIGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpCi0gICAvLyBOb3QgaW1wbGVtZW50YWJsZSBvbiBNSVBTCi0gICBy ZXR1cm4gMDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIC8vIE5v dCB5ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQKLSsgIHJldHVybiAwOwotICNlbHNlCi0gI2Vycm9y IHBvcnQgdG8geW91ciBhcmNoaXRlY3R1cmUKLSAjZW5kaWYKLUBAIC0yMzgsNiArMjQzLDkgQEAg c3RkOjpzdHJpbmcgU3lzdGVtU25hcHNob3RMaW51eDo6Q1BVVmVuZG9yKCkgY29uc3QgewotICNl bGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICAvLyBOb3QgaW1wbGVtZW50YWJs ZSBvbiBNSVBTCi0gICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX1BQQzY0X0ZBTUlMWSkKLSsgIC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQKLSsg IHJldHVybiBzdGQ6OnN0cmluZygpOwotICNlbHNlCi0gI2Vycm9yIHBvcnQgdG8geW91ciBhcmNo aXRlY3R1cmUKLSAjZW5kaWYKLUBAIC0zNzEsNiArMzc5LDkgQEAgYm9vbCBTeXN0ZW1TbmFwc2hv dExpbnV4OjpOWEVuYWJsZWQoKSBjb25zdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkKLSAgIC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKLSAgIHJldHVybiBmYWxz ZTsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIC8vIE5vdCB5ZXQg aW1wbGVtZW50ZWQgb24gUFBDNjQKLSsgIHJldHVybiBmYWxzZTsKLSAjZWxzZQotICNlcnJvciBQ b3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGlu dXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjCi1AQCAtMTg2LDYgKzE4NiwxNCBAQCBib29sIFRo cmVhZFNuYXBzaG90TGludXg6OkluaXRpYWxpemUoUHJvY2Vzc1JlYWRlckxpbnV4KiBwcm9jZXNz X3JlYWRlciwKLSAgICAgICAgIHRocmVhZC50aHJlYWRfaW5mby5mbG9hdF9jb250ZXh0LmYzMiwK LSAgICAgICAgIGNvbnRleHRfLm1pcHNlbCk7Ci0gICB9Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9QUEM2NF9GQU1JTFkpCi0rICBjb250ZXh0Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJjaGl0ZWN0 dXJlUFBDNjQ7Ci0rICBjb250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2NDsKLSsg IEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQ8Q29udGV4dFRyYWl0czY0PigKLSsgICAgICB0aHJl YWQudGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0LAotKyAgICAgIHRocmVhZC50aHJlYWRf aW5mby5mbG9hdF9jb250ZXh0LmY2NCwKLSsgICAgICB0aHJlYWQudGhyZWFkX2luZm8udmVjdG9y X2NvbnRleHQudjY0LAotKyAgICAgIGNvbnRleHRfLnBwYzY0KTsKLSAjZWxzZQotICNlcnJvciBQ b3J0LgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3Rf bGludXguaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXgu aAotQEAgLTY4LDYgKzY4LDggQEAgY2xhc3MgVGhyZWFkU25hcHNob3RMaW51eCBmaW5hbCA6IHB1 YmxpYyBUaHJlYWRTbmFwc2hvdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkKLSAgICAgQ1BVQ29udGV4dE1JUFMgbWlwc2VsOwotICAgICBDUFVDb250ZXh0TUlQUzY0IG1p cHM2NDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgQ1BVQ29u dGV4dFBQQzY0IHBwYzY0OwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNI X0NQVV9YODZfRkFNSUxZCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3ZlY3Rvci5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKLUBAIC01Niw2ICs1 NiwxMSBAQCBib29sIEF1eGlsaWFyeVZlY3Rvcjo6UmVhZChQdHJhY2VDb25uZWN0aW9uKiBjb25u ZWN0aW9uKSB7Ci0gICAgIGlmICh0eXBlID09IEFUX0lHTk9SRSkgewotICAgICAgIGNvbnRpbnVl OwotICAgICB9Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICBpZiAo dHlwZSA9PSBBVF9JR05PUkVQUEMpIHsKLSsgICAgICBjb250aW51ZTsKLSsgICAgfQotKyNlbmRp ZgotICAgICBpZiAoIU1hcEluc2VydE9yUmVwbGFjZSgmdmFsdWVzXywgdHlwZSwgdmFsdWUsIG51 bGxwdHIpKSB7Ci0gICAgICAgTE9HKEVSUk9SKSA8PCAiZHVwbGljYXRlIGF1eHYgZW50cnkiOwot ICAgICAgIHJldHVybiBmYWxzZTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VfYnJva2Vy LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlX2Jyb2tlci5jYwotQEAgLTkzLDggKzkz LDggQEAgaW50IFB0cmFjZUJyb2tlcjo6UnVuKCkgewotIH0KLSAKLSBib29sIFB0cmFjZUJyb2tl cjo6QWxsb2NhdGVBdHRhY2htZW50cygpIHsKLS0gIGNvbnN0ZXhwciBzaXplX3QgcGFnZV9zaXpl ID0gNDA5NjsKLS0gIGNvbnN0ZXhwciBzaXplX3QgYWxsb2Nfc2l6ZSA9Ci0rICBzdGF0aWMgc2l6 ZV90IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7Ci0rICBzaXplX3QgYWxsb2Nfc2l6ZSA9Ci0g ICAgICAgKHNpemVvZihTY29wZWRQdHJhY2VBdHRhY2gpICsgcGFnZV9zaXplIC0gMSkgJiB+KHBh Z2Vfc2l6ZSAtIDEpOwotICAgdm9pZCogYWxsb2MgPSBzYnJrKGFsbG9jX3NpemUpOwotICAgaWYg KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFsbG9jKSA9PSAtMSkgewotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91 dGlsL2xpbnV4L3B0cmFjZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNjCi1A QCAtMzk0LDYgKzM5NCw2NCBAQCBib29sIEdldFRocmVhZEFyZWE2NChwaWRfdCB0aWQsCi0gICBy ZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp Ci0rLy8gUFBDNjQgaGFzIGhhZCBIQVZFX0FSQ0hfVFJBQ0VIT09LIHNldCBzaW5jZSAyLjYuMjcg KGV2ZW4gYmVmb3JlIHg4NiBoYWQgaXQpLgotKy8vIFRoYXQgbWVhbnMgd2UgY2FuIHNpbXBseSB1 c2UgUFRSQUNFX0dFVFJFR0VTRVQuCi0rCi0rdGVtcGxhdGUgPHR5cGVuYW1lIERlc3RpbmF0aW9u PgotK2Jvb2wgR2V0UmVnaXN0ZXJTZXQocGlkX3QgdGlkLCBpbnQgc2V0LCBEZXN0aW5hdGlvbiog ZGVzdCwgYm9vbCBjYW5fbG9nKSB7Ci0rICBpb3ZlYyBpb3Y7Ci0rICBpb3YuaW92X2Jhc2UgPSBy ZWludGVycHJldF9jYXN0PHZvaWQqPihkZXN0KTsKLSsgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mKCpk ZXN0KTsKLSsgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCByZWludGVycHJldF9j YXN0PHZvaWQqPihzZXQpLCAmaW92KSAhPSAwKSB7Ci0rICAgIFBMT0dfSUYoRVJST1IsIGNhbl9s b2cpIDw8ICJwdHJhY2UiOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rICBpZiAoaW92Lmlv dl9sZW4gIT0gc2l6ZW9mKCpkZXN0KSkgewotKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8 ICJVbmV4cGVjdGVkIHJlZ2lzdGVycyBzaXplIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQot KyAgcmV0dXJuIHRydWU7Ci0rfQotKwotK2Jvb2wgR2V0VmVjdG9yUmVnaXN0ZXJzNjQocGlkX3Qg dGlkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yQ29udGV4dCogY29udGV4dCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgewotKyAgcmV0dXJuIEdl dFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFBDX1ZNWCwgJmNvbnRleHQtPnY2NCwgY2FuX2xvZyk7Ci0r fQotKwotK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHBpZF90IHRpZCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7Ci0rICByZXR1cm4g R2V0UmVnaXN0ZXJTZXQodGlkLCBOVF9QUkZQUkVHLCAmY29udGV4dC0+ZjY0LCBjYW5fbG9nKTsK LSt9Ci0rCi0rYm9vbCBHZXRUaHJlYWRBcmVhNjQocGlkX3QgdGlkLAotKyAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IFRocmVhZENvbnRleHQmIGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAg ICAgTGludXhWTUFkZHJlc3MqIGFkZHJlc3MsCi0rICAgICAgICAgICAgICAgICAgICAgYm9vbCBj YW5fbG9nKSB7Ci0rICAvLyBQUEM2NCBkb2Vzbid0IGhhdmUgUFRSQUNFX0dFVF9USFJFQURfQVJF QSBzaW5jZSB0aGUgdGhyZWFkIHBvaW50ZXIKLSsgIC8vIGlzIHN0b3JlZCBpbiBHUFIgMTMuCi0r ICBUaHJlYWRDb250ZXh0Ojp0NjRfdCB0YzsKLSsgIGlmICghR2V0UmVnaXN0ZXJTZXQodGlkLCBO VF9QUlNUQVRVUywgJnRjLCBjYW5fbG9nKSkgewotKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cp IDw8ICJVbmFibGUgdG8gZ2V0IHRocmVhZCBwb2ludGVyISI7Ci0rICAgIHJldHVybiBmYWxzZTsK LSsgIH0KLSsKLSsgICphZGRyZXNzID0gdGMuZ3ByWzEzXTsKLSsKLSsgIHJldHVybiB0cnVlOwot K30KLSsKLSsvLyBTdHVicyBmb3IgMzItYml0IGZ1bmN0aW9ucyBub3QgYXBwbGljYWJsZSBvbiBQ UEM2NAotK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczMyKHBpZF90IHRpZCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJldHVybiBmYWxz ZTsgfQotK2Jvb2wgR2V0VGhyZWFkQXJlYTMyKHBpZF90IHRpZCwKLSsgICAgICAgICAgICAgICAg ICAgICBjb25zdCBUaHJlYWRDb250ZXh0ICZjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAg IExpbnV4Vk1BZGRyZXNzICphZGRyZXNzLAotKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2Fu X2xvZykgeyByZXR1cm4gZmFsc2U7IH0KLSsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRp ZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAgLTQ4Niw2ICs1NDQsOSBAQCBib29sIFB0cmFj ZXI6OkdldFRocmVhZEluZm8ocGlkX3QgdGlkLCBUaHJlYWRJbmZvKiBpbmZvKSB7Ci0gICBpZiAo aXNfNjRfYml0XykgewotICAgICByZXR1cm4gR2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnM2NCh0 aWQsICZpbmZvLT50aHJlYWRfY29udGV4dCwgY2FuX2xvZ18pICYmCi0gICAgICAgICAgICBHZXRG bG9hdGluZ1BvaW50UmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+ZmxvYXRfY29udGV4dCwgY2FuX2xv Z18pICYmCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICAgICAgICAg R2V0VmVjdG9yUmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+dmVjdG9yX2NvbnRleHQsIGNhbl9sb2df KSAmJgotKyNlbmRpZgotICAgICAgICAgICAgR2V0VGhyZWFkQXJlYTY0KHRpZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbmZvLT50aHJlYWRfY29udGV4dCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmaW5mby0+dGhyZWFkX3NwZWNpZmljX2RhdGFfYWRkcmVzcywKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhy ZWFkX2luZm8uaAotQEAgLTI4LDYgKzI4LDEwIEBACi0gI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxl dmVsLmg+Ci0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQot KyNpbmNsdWRlIDxzeXMvdWNvbnRleHQuaD4KLSsjZW5kaWYKLSsKLSBuYW1lc3BhY2UgY3Jhc2hw YWQgewotIAotIC8vISBcYnJpZWYgVGhlIHNldCBvZiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJz IGZvciBhbiBhcmNoaXRlY3R1cmUgZmFtaWx5LgotQEAgLTc5LDYgKzgzLDggQEAgdW5pb24gVGhy ZWFkQ29udGV4dCB7Ci0gICAgIHVpbnQzMl90IGNwMF9zdGF0dXM7Ci0gICAgIHVpbnQzMl90IGNw MF9jYXVzZTsKLSAgICAgdWludDMyX3QgcGFkZGluZzFfOwotKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQotKyAgICAvLyBQUEM2NCBpcyA2NC1iaXQKLSAjZWxzZQotICNlcnJv ciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAgLTEzMiw2ICsxMzgs MjEgQEAgdW5pb24gVGhyZWFkQ29udGV4dCB7Ci0gICAgIHVpbnQ2NF90IGNwMF9iYWR2YWRkcjsK LSAgICAgdWludDY0X3QgY3AwX3N0YXR1czsKLSAgICAgdWludDY0X3QgY3AwX2NhdXNlOwotKyNl bGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICAvLyBSZWZsZWN0cyBzdHJ1 Y3QgcHRfcmVncyBpbiBhc20vcHRyYWNlLmguCi0rICAgIHVpbnQ2NF90IGdwclszMl07Ci0rICAg IHVpbnQ2NF90IG5pcDsKLSsgICAgdWludDY0X3QgbXNyOwotKyAgICB1aW50NjRfdCBvcmlnX2dw cjM7Ci0rICAgIHVpbnQ2NF90IGN0cjsKLSsgICAgdWludDY0X3QgbG5rOwotKyAgICB1aW50NjRf dCB4ZXI7Ci0rICAgIHVpbnQ2NF90IGNjcjsKLSsgICAgdWludDY0X3Qgc29mdGU7Ci0rICAgIHVp bnQ2NF90IHRyYXA7Ci0rICAgIHVpbnQ2NF90IGRhcjsKLSsgICAgdWludDY0X3QgZHNpc3I7Ci0r ICAgIHVpbnQ2NF90IHJlc3VsdDsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8g QVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAgLTE0Myw2ICsxNjQsOCBAQCB1bmlvbiBUaHJlYWRDb250 ZXh0IHsKLSAgIHVzaW5nIE5hdGl2ZVRocmVhZENvbnRleHQgPSB1c2VyX3JlZ3M7Ci0gI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAvLyBObyBhcHByb3ByaWF0ZSBOYXRpdmVU aHJlYWRzQ29udGV4dCB0eXBlIGF2YWlsYWJsZSBmb3IgTUlQUwotKyNlbGlmIGRlZmluZWQoQVJD SF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgdXNpbmcgTmF0aXZlVGhyZWFkQ29udGV4dCA9IHN0cnVj dCBwdF9yZWdzOwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9Y ODZfRkFNSUxZIHx8IEFSQ0hfQ1BVX0FSTTY0Ci1AQCAtMjE4LDYgKzI0MSw5IEBAIHVuaW9uIEZs b2F0Q29udGV4dCB7Ci0gICAgIH0gZnByZWdzWzMyXTsKLSAgICAgdWludDMyX3QgZnBjc3I7Ci0g ICAgIHVpbnQzMl90IGZwdV9pZDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlM WSkKLSsgICAgLy8gQ3Jhc2hwYWQncyBQUEMgc3VwcG9ydCBpcyA2NC1iaXQgb25seSwgc28gdGhp cwotKyAgICAvLyAzMmJpdC1vbmx5IHN0cnVjdCBpcyBkZWNsYXJlZCBhcyBlbXB0eS4KLSAjZWxz ZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAgLTI1 Miw2ICsyNzgsMTAgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKLSAgICAgZG91YmxlIGZwcmVnc1sz Ml07Ci0gICAgIHVpbnQzMl90IGZwY3NyOwotICAgICB1aW50MzJfdCBmcHVfaWQ7Ci0rI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIC8vIFJlZmxlY3RzIGZwcmVnc2V0 X3QgaW4gc3lzL3Vjb250ZXh0LmgKLSsgICAgZG91YmxlIGZwcmVnc1szMl07Ci0rICAgIGRvdWJs ZSBmcHNjcjsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2 X0ZBTUlMWQotQEAgLTI4MCw2ICszMTAsOCBAQCB1bmlvbiBGbG9hdENvbnRleHQgewotICAgc3Rh dGljX2Fzc2VydChzaXplb2YoZjY0KSA9PSBzaXplb2YodXNlcl9mcHNpbWRfc3RydWN0KSwgIlNp emUgbWlzbWF0Y2giKTsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotIC8v IE5vIGFwcHJvcHJpYXRlIGZsb2F0aW5nIHBvaW50IGNvbnRleHQgbmF0aXZlIHR5cGUgZm9yIGF2 YWlsYWJsZSBNSVBTLgotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAg c3RhdGljX2Fzc2VydChzaXplb2YoZjY0KSA9PSBzaXplb2YoZnByZWdzZXRfdCksICJTaXplIG1p c21hdGNoIik7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4 NgotQEAgLTI4Nyw2ICszMTksMjYgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKLSBzdGF0aWNfYXNz ZXJ0KHN0ZDo6aXNfc3RhbmRhcmRfbGF5b3V0PEZsb2F0Q29udGV4dD46OnZhbHVlLAotICAgICAg ICAgICAgICAgIk5vdCBzdGFuZGFyZCBsYXlvdXQiKTsKLSAKLSsvLyEgXGJyaWVmIFRoZSB2ZWN0 b3IgcmVnaXN0ZXJzIHVzZWQgZm9yIGFuIGFyY2hpdGVjdHVyZSBmYW1pbHkKLSt1bmlvbiBWZWN0 b3JDb250ZXh0IHsKLSsgIHN0cnVjdCB2MzJfdCB7fSB2MzI7Ci0rI2lmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQotKyAgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSkgLy8g VmVjdG9yIGNvbnRleHQgbXVzdCBiZSBkb3VibGV3b3JkIGFsaWduZWQuCi0rI2VuZGlmCi0rICBz dHJ1Y3QgdjY0X3QgewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAg Ly8gUmVmbGVjdHMgdnJyZWdzZXRfdCBpbiBzeXMvdWNvbnRleHQuaAotKyAgICB1aW50MzJfdCB2 cnJlZ3NbMzJdWzRdOwotKyAgICBzdHJ1Y3QgewotKyAgICAgIHVpbnQzMl90IF9fcGFkWzNdOwot KyAgICAgIHVpbnQzMl90IHZzY3Jfd29yZDsKLSsgICAgfSB2c2NyOwotKyAgICB1aW50MzJfdCB2 cnNhdmU7Ci0rICAgIHVpbnQzMl90IF9fcGFkWzNdOwotKyNlbmRpZgotKyAgfSB2NjQ7Ci0rfTsK LSsKLSAvLyEgXGJyaWVmIEEgY29sbGVjdGlvbiBvZiBgcHRyYWNlYC1hYmxlIGluZm9ybWF0aW9u IGFib3V0IGEgdGhyZWFkLgotIHN0cnVjdCBUaHJlYWRJbmZvIHsKLSAgIFRocmVhZEluZm8oKTsK LUBAIC0yOTgsNiArMzUwLDkgQEAgc3RydWN0IFRocmVhZEluZm8gewotICAgLy8hIFxicmllZiBU aGUgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIGZvciB0aGUgdGhyZWFkLgotICAgRmxvYXRDb250 ZXh0IGZsb2F0X2NvbnRleHQ7Ci0gCi0rICAvLyEgXGJyaWVmIChPcHRpb25hbCkgVGhlIHZlY3Rv ciByZWdpc3RlcnMgdXNlZCBmb3IgdGhlIHRocmVhZC4KLSsgIFZlY3RvckNvbnRleHQgdmVjdG9y X2NvbnRleHQ7Ci0rCi0gICAvLyEgXGJyaWVmIFRoZSB0aHJlYWQtbG9jYWwgc3RvcmFnZSBhZGRy ZXNzIGZvciB0aGUgdGhyZWFkLgotICAgTGludXhWTUFkZHJlc3MgdGhyZWFkX3NwZWNpZmljX2Rh dGFfYWRkcmVzczsKLSB9OwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0LmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5oCi1AQCAtNjYsNiArNjYsNyBA QCB1c2luZyBOYXRpdmVDUFVDb250ZXh0ID0gdWNvbnRleHRfdDsKLSAvLyEgICAgIG1hY09TL0xp bnV4L0Z1Y2hzaWEgfCB4ODZfNjQgICAgICAgfCBgJSVyZGlgCi0gLy8hICAgICBMaW51eCAgICAg ICAgICAgICAgIHwgQVJNL0FSTTY0ICAgIHwgYHIwYC9geDBgCi0gLy8hICAgICBMaW51eCAgICAg ICAgICAgICAgIHwgTUlQUy9NSVBTNjQgIHwgYCRhMGAKLSsvLyEgICAgIExpbnV4ICAgICAgICAg ICAgICAgfCBQUEM2NCAgICAgICAgfCBgcjNgCi0gLy8hCi0gLy8hICAgICBBZGRpdGlvbmFsbHks IHRoZSB2YWx1ZSBgTFJgIG9uIEFSTS9BUk02NCB3aWxsIGJlIHRoZSByZXR1cm4gYWRkcmVzcyBv ZgotIC8vISAgICAgdGhpcyBmdW5jdGlvbi4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVf Y29udGV4dF9saW51eC5TCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfbGlu dXguUwotQEAgLTI4LDcgKzI4LDcgQEAKLSAgIC5nbG9ibCBDQVBUVVJFQ09OVEVYVF9TWU1CT0wy Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKLSAgIC5iYWxp Z24gMTYsIDB4OTAKLS0jZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0 X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZp bmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAuYmFsaWduIDQsIDB4MAotICNlbmRpZgotIAotQEAgLTQxOSw0ICs0MTksMjE0 IEBAIENBUFRVUkVDT05URVhUX1NZTUJPTDI6Ci0gICBqciAkcmEKLSAKLSAgIC5zZXQgYXQKLSsj ZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBTdG9yZSByMC1yMzEKLSsgIHN0ZCAw LCAweGU4KDMpICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1swXQotKyAgc3RkIDEs IDB4ZjAoMykgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzFdCi0rICBzdGQgMiwg MHhmOCgzKSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMl0KLSsgIC8vIG5vdGUg dGhhdCByMydzIG9yaWdpbmFsIHZhbHVlIHdhcyBsb3N0Ci0rICBzdGQgMywgMHgxMDAoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbM10KLSsgIHN0ZCA0LCAweDEwOCgzKSAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s0XQotKyAgc3RkIDUsIDB4MTEwKDMpICAvLyBj b250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzVdCi0rICBzdGQgNiwgMHgxMTgoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbNl0KLSsgIHN0ZCA3LCAweDEyMCgzKSAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s3XQotKyAgc3RkIDgsIDB4MTI4KDMpICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzhdCi0rICBzdGQgOSwgMHgxMzAoMykgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbOV0KLSsgIHN0ZCAxMCwgMHgxMzgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxMF0KLSsgIHN0ZCAxMSwgMHgxNDAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxMV0KLSsgIHN0ZCAxMiwgMHgxNDgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxMl0KLSsgIHN0ZCAxMywgMHgxNTAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxM10KLSsgIHN0ZCAxNCwgMHgxNTgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxNF0KLSsgIHN0ZCAxNSwgMHgxNjAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxNV0KLSsgIHN0ZCAxNiwgMHgxNjgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxNl0KLSsgIHN0ZCAxNywgMHgxNzAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxN10KLSsgIHN0ZCAxOCwgMHgxNzgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxOF0KLSsgIHN0ZCAxOSwgMHgxODAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxOV0KLSsgIHN0ZCAyMCwgMHgxODgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syMF0KLSsgIHN0ZCAyMSwgMHgxOTAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syMV0KLSsgIHN0ZCAyMiwgMHgxOTgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syMl0KLSsgIHN0ZCAyMywgMHgxYTAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syM10KLSsgIHN0ZCAyNCwgMHgxYTgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syNF0KLSsgIHN0ZCAyNSwgMHgxYjAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syNV0KLSsgIHN0ZCAyNiwgMHgxYjgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syNl0KLSsgIHN0ZCAyNywgMHgxYzAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syN10KLSsgIHN0ZCAyOCwgMHgxYzgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syOF0KLSsgIHN0ZCAyOSwgMHgxZDAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syOV0KLSsgIHN0ZCAzMCwgMHgxZDgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szMF0KLSsgIHN0ZCAzMSwgMHgxZTAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szMV0KLSsKLSsgIC8vIEZvciBOSVAsIHdlIGNhbiB1c2Ug dGhlIHZhbHVlIGluIHRoZSBsaW5rIHJlZ2lzdGVyCi0rICBtZmxyIDAKLSsgIHN0ZCAwLCAweDFl OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF0KLSsKLSsgIC8vIENU UgotKyAgbWZjdHIgMAotKyAgc3RkIDAsIDB4MjAwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmdwX3JlZ3NbUFRfQ1RSXQotKwotKyAgLy8gRm9yIExOSywgd2UnbGwgdXNlIHRoZSBjYWxsZXIn cyBMUiBzYXZlIGFyZWEgKDIgc3RhY2sgZnJhbWVzIHVwKS4KLSsgIC8vIHI0IGNhbiBiZSB1c2Vk IGFzIGEgc2NyYXRjaCByZWdpc3RlciBzaW5jZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNhdmVkLgot KyAgbGQgNCwgMCgxKQotKyAgbGQgNCwgMTYoNCkKLSsgIHN0ZCA0LCAweDIwOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0xOS10KLSsKLSsgIC8vIFhFUgotKyAgbWZ4ZXIg MAotKyAgc3RkIDAsIDB4MjEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRf WEVSXQotKwotKyAgLy8gQ0NSCi0rICBtZmNyIDAKLSsgIHN0ZCAwLCAweDIxOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NDUl0KLSsKLSsgIC8vIE1TUiwgb3JpZ19yMywg TVEsIFRSQVAsIERBUiwgRFNJU1IsIFJFU1VMVCwgRFNDUiwKLSsgIC8vIG5vdCB1c2VkIG9yIG5v dCByZWxldmFudCwgIHplcm8gdGhlbSBvdXQuCi0rICBsaSA0LCAwCi0rICBzdGQgNCwgMHgxZjAo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdCi0rICBzdGQgNCwgMHgx ZjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9PUklHX1IzXQotKyAgc3Rk IDQsIDB4MjIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTVFdCi0rICBz dGQgNCwgMHgyMjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9UUkFQXQot KyAgc3RkIDQsIDB4MjMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfREFS XQotKyAgc3RkIDQsIDB4MjM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRf RFNJU1JdCi0rICBzdGQgNCwgMHgyNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVn c1tQVF9SRVNVTFRdCi0rICBzdGQgNCwgMHgyNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1tQVF9EU0NSXQotKwotKyAgLy8gVXBkYXRlIGNvbnRleHQtPnVjX21jb250ZXh0LnJl Z3MgdG8gcG9pbnQgdG8gZ3BfcmVncwotKyAgYWRkaSAwLCAzLCAweGU4Ci0rICBzdGQgMCwgMHhl MCgzKQotKwotKyAgLy8gU2F2ZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgMC0zMQotKyAgc3Rm ZCAwLCAweDI2OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1swXQotKyAgc3Rm ZCAxLCAweDI3MCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxXQotKyAgc3Rm ZCAyLCAweDI3OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syXQotKyAgc3Rm ZCAzLCAweDI4MCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szXQotKyAgc3Rm ZCA0LCAweDI4OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s0XQotKyAgc3Rm ZCA1LCAweDI5MCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s1XQotKyAgc3Rm ZCA2LCAweDI5OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s2XQotKyAgc3Rm ZCA3LCAweDJhMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s3XQotKyAgc3Rm ZCA4LCAweDJhOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s4XQotKyAgc3Rm ZCA5LCAweDJiMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s5XQotKyAgc3Rm ZCAxMCwgMHgyYjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMF0KLSsgIHN0 ZmQgMTEsIDB4MmMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTFdCi0rICBz dGZkIDEyLCAweDJjOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzEyXQotKyAg c3RmZCAxMywgMHgyZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxM10KLSsg IHN0ZmQgMTQsIDB4MmQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTRdCi0r ICBzdGZkIDE1LCAweDJlMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE1XQot KyAgc3RmZCAxNiwgMHgyZTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNl0K LSsgIHN0ZmQgMTcsIDB4MmYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTdd Ci0rICBzdGZkIDE4LCAweDJmOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE4 XQotKyAgc3RmZCAxOSwgMHgzMDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sx OV0KLSsgIHN0ZmQgMjAsIDB4MzA4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3Nb MjBdCi0rICBzdGZkIDIxLCAweDMxMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdz WzIxXQotKyAgc3RmZCAyMiwgMHgzMTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVn c1syMl0KLSsgIHN0ZmQgMjMsIDB4MzIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3Jl Z3NbMjNdCi0rICBzdGZkIDI0LCAweDMyOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9y ZWdzWzI0XQotKyAgc3RmZCAyNSwgMHgzMzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBf cmVnc1syNV0KLSsgIHN0ZmQgMjYsIDB4MzM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbMjZdCi0rICBzdGZkIDI3LCAweDM0MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5m cF9yZWdzWzI3XQotKyAgc3RmZCAyOCwgMHgzNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu ZnBfcmVnc1syOF0KLSsgIHN0ZmQgMjksIDB4MzUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmZwX3JlZ3NbMjldCi0rICBzdGZkIDMwLCAweDM1OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzMwXQotKyAgc3RmZCAzMSwgMHgzNjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZnBfcmVnc1szMV0KLSsKLSsgIC8vIEZQU0NSCi0rICBtZmZzIDAKLSsgIHN0ZmQgMCwgMHgz NjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMl0KLSsKLSsgIC8vIFNhdmUg Vk1YIFZlY3RvciByZWdpc3RlcnMKLSsgIC8vIFVwZGF0ZSByNCB0byBjb250YWluIHRoZSBiYXNl IGFkZHJlc3Mgb2Ygdm14X3Jlc2VydmUKLSsgIGFkZGkgNCwgMywgMHgzNzgKLSsgIC8vIEVuc3Vy ZSB0aGF0IGl0IGlzIHF1YWR3b3JkIGFsaWduZWQKLSsgIGFuZGkuIDUsIDQsIDB4RgotKyAgYmVx IDFmIC8vIE5vIGFsaWdubWVudCBpcyBuZWNlc3NhcnkKLSsgIC8vIEFkZHJlc3MgaXMgZG91Ymxl d29yZCBhbGlnbmVkIGFuZCBub3QgcXVhZHdvcmQgYWxpZ25lZCwgYWRkIDgKLSsgIGFkZGkgNCwg NCwgOAotKwotKzE6Ci0rICAvLyBTdG9yZSBWTVggcmVnaXN0ZXJzIDAtMzEKLSsgIC8vIHI0IHdp bGwgY29udGFpbiB0aGUgYmFzZSBhZGRyZXNzCi0rICAvLyByNSB3aWxsIGNvbnRhaW4gdGhlIGlu ZGV4Ci0rICBsaSA1LCAwCi0rICBzdHZ4IDAsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMSwg NCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxXQot KyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAyLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQudm14X3Jlc2VydmVbKGFsaWduKSArIDJdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDMs IDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgM10K LSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggNCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA0XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA1 LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDVd Ci0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDYsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgNl0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dngg NywgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA3 XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA4LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDhdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4 IDksIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg OV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTAsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxMF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0 dnggMTEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyAxMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTIsIDQsIDUgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxMl0KLSsgIGFkZGkgNSwgNSwgMTYKLSsg IHN0dnggMTMsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGln bikgKyAxM10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTQsIDQsIDUgIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNF0KLSsgIGFkZGkgNSwgNSwgMTYK LSsgIHN0dnggMTUsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhh bGlnbikgKyAxNV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTYsIDQsIDUgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNl0KLSsgIGFkZGkgNSwgNSwg MTYKLSsgIHN0dnggMTcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZl WyhhbGlnbikgKyAxN10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTgsIDQsIDUgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxOF0KLSsgIGFkZGkgNSwg NSwgMTYKLSsgIHN0dnggMTksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNl cnZlWyhhbGlnbikgKyAxOV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjAsIDQsIDUgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMF0KLSsgIGFkZGkg NSwgNSwgMTYKLSsgIHN0dnggMjEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9y ZXNlcnZlWyhhbGlnbikgKyAyMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjIsIDQsIDUg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMl0KLSsgIGFk ZGkgNSwgNSwgMTYKLSsgIHN0dnggMjMsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZt eF9yZXNlcnZlWyhhbGlnbikgKyAyM10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjQsIDQs IDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNF0KLSsg IGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjUsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjYs IDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNl0K LSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyN10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dngg MjgsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAy OF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyOV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0 dnggMzAsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyAzMF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMzEsIDQsIDUgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAzMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsK LSsgIC8vIFZTQ1IKLSsgIG1mdnNjciAwCi0rICBzdHZ4IDAsIDQsIDUKLSsgIGFkZGkgNSwgNSwg MTYKLSsKLSsgIC8vIFZSU0FWRQotKyAgbWZ2cnNhdmUgMAotKyAgc3R3eCAwLCA0LCA1Ci0rCi0r ICAvLyBVcGRhdGUgY29udGV4dC0+dWNfbWNvbnRleHQudl9yZWdzIHRvIHBvaW50IHRvIHZteF9y ZXNlcnZlICsgYWxpZ25tZW50LgotKyAgc3RkIDQsIDB4MzcwKDMpCi0rCi0rICAvLyBaZXJvIG91 dCBhbGwgdW51c2VkIGZpZWxkcwotKyAgbGkgNCwgMAotKyAgc3RkIDQsIDB4YzgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuc2lnbmFsCi0rICBzdGQgNCwgMHhkMCgzKSAvLyBjb250ZXh0LT51 Y19tY29udGV4dC5oYW5kbGVyCi0rICBzdGQgNCwgMHhkOCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5vbGRtYXNrCi0rCi0rICBibHIKLSAjZW5kaWYgIC8vIF9faTM4Nl9fCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2Mv Y2FwdHVyZV9jb250ZXh0X3Rlc3QuY2MKLUBAIC00OSw3ICs0OSw4IEBAIHZvaWQgVGVzdENhcHR1 cmVDb250ZXh0KCkgewotICAgLy8gcmVmZXJlbmNlIHByb2dyYW0gY291bnRlci4KLSAgIHVpbnRw dHJfdCBwYyA9IFByb2dyYW1Db3VudGVyRnJvbUNvbnRleHQoY29udGV4dF8xKTsKLSAKLS0jaWYg IWRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKQotKyNpZiAhZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgIWRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIFwKLSsgICAgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQotICAgLy8gQWRkcmVzc1Nhbml0aXplciBjYW4gY2F1c2UgZW5vdWdoIGNvZGUgYmxvYXQgdGhh dCB0aGUg4oCcbmVhcmJ54oCdIGNoZWNrIHdvdWxkCi0gICAvLyBsaWtlbHkgZmFpbC4KLSAgIGNv bnN0IHVpbnRwdHJfdCBrUmVmZXJlbmNlUEMgPQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVy ZV9jb250ZXh0X3Rlc3RfdXRpbF9saW51eC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVy ZV9jb250ZXh0X3Rlc3RfdXRpbF9saW51eC5jYwotQEAgLTM2LDYgKzM2LDggQEAgdm9pZCBTYW5p dHlDaGVja0NvbnRleHQoY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgewotICAgRVhQ RUNUX0VRKGNvbnRleHQudWNfbWNvbnRleHQucmVnc1swXSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRw dHJfdD4oJmNvbnRleHQpKTsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQot ICAgRVhQRUNUX0VRKGNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbNF0sIEZyb21Qb2ludGVyQ2Fz dDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9G QU1JTFkpCi0rICBFWFBFQ1RfRVEoY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzWzNdLCBGcm9t UG9pbnRlckNhc3Q8dWludHB0cl90PigmY29udGV4dCkpOwotICNlbmRpZgotIH0KLSAKLUBAIC01 MCw2ICs1Miw4IEBAIHVpbnRwdHJfdCBQcm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnN0IE5h dGl2ZUNQVUNvbnRleHQmIGNvbnRleHQpIHsKLSAgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0 LnBjOwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICByZXR1cm4gY29u dGV4dC51Y19tY29udGV4dC5wYzsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlM WSkKLSsgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKLSAjZW5k aWYKLSB9Ci0gCi1AQCAtNjQsNiArNjgsOCBAQCB1aW50cHRyX3QgU3RhY2tQb2ludGVyRnJvbUNv bnRleHQoY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgewotICAgcmV0dXJuIGNvbnRl eHQudWNfbWNvbnRleHQuc3A7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkK LSAgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LmdyZWdzWzI5XTsKLSsjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0Lmdw X3JlZ3NbMV07Ci0gI2VuZGlmCi0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25hbHNf dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25hbHNfdGVzdC5jYwotQEAgLTQ2LDEy ICs0NiwxMiBAQCBib29sIENhbkNhdXNlU2lnbmFsKGludCBzaWcpIHsKLSAgIHJldHVybiBzaWcg PT0gU0lHQUJSVCB8fAotICAgICAgICAgIHNpZyA9PSBTSUdBTFJNIHx8Ci0gICAgICAgICAgc2ln ID09IFNJR0JVUyB8fAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKLSsjaWYgIWRlZmlu ZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotICAgICAgICAg IHNpZyA9PSBTSUdGUEUgfHwKLS0jZW5kaWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQot KyNlbmRpZiAgLy8gIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0KQotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJD SF9DUFVfQVJNRUwpCi0gICAgICAgICAgc2lnID09IFNJR0lMTCB8fAotLSNlbmRpZiAgLy8gZGVm aW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMCi0rI2Vu ZGlmICAvLyBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVf QVJNRUwpCi0gICAgICAgICAgc2lnID09IFNJR1BJUEUgfHwKLSAgICAgICAgICBzaWcgPT0gU0lH U0VHViB8fAotICNpZiBkZWZpbmVkKE9TX01BQ09TWCkKLUBAIC0xMTcsOSArMTE3LDExIEBAIHZv aWQgQ2F1c2VTaWduYWwoaW50IHNpZykgewotICAgICAgIGJyZWFrOwotICAgICB9Ci0gCi0tI2lm ICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQotKyNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkg JiYgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0gICAgIC8vIEFSTTY0IGhhcyBoYXJkd2FyZSBp bnRlZ2VyIGRpdmlzaW9uIGluc3RydWN0aW9ucyB0aGF0IGRvbuKAmXQgZ2VuZXJhdGUgYQotICAg ICAvLyB0cmFwIGZvciBkaXZpZGUtYnktemVybywgc28gdGhpcyBkb2VzbuKAmXQgcHJvZHVjZSBT SUdGUEUuCi0rICAgIC8vCi0rICAgIC8vIFBQQzY0IGZpeGVkLXBvaW50IGRpdmlzaW9uIGJ5IHpl cm8gYWxzbyBkb2Vzbid0IHByb2R1Y2UgYSBTSUdGUEUuCi0gICAgIGNhc2UgU0lHRlBFOiB7Ci0g ICAgICAgLy8gT3B0aW1pemF0aW9uIG1ha2VzIHRoaXMgdHJpY2t5LCBzbyBnZXQgemVybyBmcm9t IGEgc3lzdGVtIGNhbGwgbGlrZWx5Ci0gICAgICAgLy8gdG8gc3VjY2VlZCwgYW5kIHRyeSB0byBk byBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0LgotQEAgLTEzNyw3ICsxMzksNyBAQCB2b2lkIENh dXNlU2lnbmFsKGludCBzaWcpIHsKLSAgICAgICBmc3RhdChxdW90aWVudCwgJnN0YXRfYnVmKTsK LSAgICAgICBicmVhazsKLSAgICAgfQotLSNlbmRpZiAgLy8gQVJDSF9DUFVfQVJNNjQKLSsjZW5k aWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2 NCkKLSAKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hf Q1BVX0FSTUVMKQotICAgICBjYXNlIFNJR0lMTDogewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9saWJwbmcvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL0JVSUxELmduCi1AQCAt OTMsNiArOTMsMTEgQEAgc291cmNlX3NldCgibGlicG5nX3NvdXJjZXMiKSB7Ci0gICAgICAgIm1p cHMvZmlsdGVyX21zYV9pbnRyaW5zaWNzLmMiLAotICAgICAgICJtaXBzL21pcHNfaW5pdC5jIiwK LSAgICAgXQotKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Ci0rICAgIHNv dXJjZXMgKz0gWwotKyAgICAgICJwb3dlcnBjL2ZpbHRlcl92c3hfaW50cmluc2ljcy5jIiwKLSsg ICAgICAicG93ZXJwYy9wb3dlcnBjX2luaXQuYyIsCi0rICAgIF0KLSAgIH0KLSAKLSAgIGNvbmZp Z3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL3Bvd2VycGMvZmlsdGVyX3ZzeF9pbnRyaW5z aWNzLmMKLUBAIC0wLDAgKzEsNzY3IEBACi0rLyogZmlsdGVyX3ZzeF9pbnRyaW5zaWNzLmMgLSBQ b3dlclBDIG9wdGltaXNlZCBmaWx0ZXIgZnVuY3Rpb25zCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMp IDIwMTcgR2xlbm4gUmFuZGVycy1QZWhyc29uCi0rICogV3JpdHRlbiBieSBWYWRpbSBCYXJrb3Ys IDIwMTcuCi0rICogTGFzdCBjaGFuZ2VkIGluIGxpYnBuZyAxLjYuMjkgW01hcmNoIDE2LCAyMDE3 XQotKyAqCi0rICogVGhpcyBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBsaWJwbmcgbGljZW5z ZS4KLSsgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBk aXNjbGFpbWVyCi0rICogYW5kIGxpY2Vuc2UgaW4gcG5nLmgKLSsgKi8KLSsjaW5jbHVkZSA8c3Rk aW8uaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2luY2x1ZGUgIi4uL3BuZ3ByaXYuaCIKLSsK LSsjaWZkZWYgUE5HX1JFQURfU1VQUE9SVEVECi0rCi0rLyogVGhpcyBjb2RlIHJlcXVpcmVzIC1t YWx0aXZlYyBhbmQgLW12c3ggb24gdGhlIGNvbW1hbmQgbGluZTogKi8KLSsjaWYgUE5HX1BPV0VS UENfVlNYX0lNUExFTUVOVEFUSU9OID09IDEgLyogaW50cmluc2ljcyBjb2RlIGZyb20gcG5ncHJp di5oICovCi0rCi0rI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSsKLSsjaWYgUE5HX1BPV0VSUENfVlNY X09QVCA+IDAKLSsKLSsjaWZuZGVmIF9fVlNYX18KLSsjICBlcnJvciAiVGhpcyBjb2RlIHJlcXVp cmVzIFZTWCBzdXBwb3J0IChQT1dFUjcgYW5kIGxhdGVyKS4gUGxlYXNlIHByb3ZpZGUgLW12c3gg Y29tcGlsZXIgZmxhZy4iCi0rI2VuZGlmCi0rCi0rI2RlZmluZSB2ZWNfbGRfdW5hbGlnbmVkKHZl YyxkYXRhKSB2ZWMgPSB2ZWNfdnN4X2xkKDAsZGF0YSkKLSsjZGVmaW5lIHZlY19zdF91bmFsaWdu ZWQodmVjLGRhdGEpIHZlY192c3hfc3QodmVjLDAsZGF0YSkKLSsKLSsKLSsvKiBGdW5jdGlvbnMg aW4gdGhpcyBmaWxlIGxvb2sgYXQgbW9zdCAzIHBpeGVscyAoYSxiLGMpIHRvIHByZWRpY3QgdGhl IDR0aCAoZCkuCi0rICogVGhleSdyZSBwb3NpdGlvbmVkIGxpa2UgdGhpczoKLSsgKiAgICBwcmV2 OiAgYyBiCi0rICogICAgcm93OiAgIGEgZAotKyAqIFRoZSBTdWIgZmlsdGVyIHByZWRpY3RzIGQ9 YSwgQXZnIGQ9KGErYikvMiwgYW5kIFBhZXRoIHByZWRpY3RzIGQgdG8gYmUKLSsgKiB3aGljaGV2 ZXIgb2YgYSwgYiwgb3IgYyBpcyBjbG9zZXN0IHRvIHA9YStiLWMuCi0rICogKCB0aGlzIGlzIHRh a2VuIGZyb20gLi4vaW50ZWwvZmlsdGVyX3NzZTJfaW50cmluc2ljcy5jICkKLSsgKi8KLSsKLSsj ZGVmaW5lIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxvZmZz ZXQpIFwKLSsgICBwbmdfYnl0ZSBpO1wKLSsgICBwbmdfYnl0ZXAgcnAgPSByb3cgKyBvZmZzZXQ7 XAotKyAgIHBuZ19jb25zdF9ieXRlcCBwcCA9IHByZXZfcm93O1wKLSsgICBwbmdfc2l6ZV90IHVu YWxpZ25lZF90b3AgPSAxNiAtICgoKHBuZ19zaXplX3QpcnAgJSAxNikpO1wKLSsgICBwbmdfc2l6 ZV90IGlzdG9wO1wKLSsgICBpZih1bmFsaWduZWRfdG9wID09IDE2KVwKLSsgICAgICB1bmFsaWdu ZWRfdG9wID0gMDtcCi0rICAgaXN0b3AgPSByb3dfaW5mby0+cm93Ynl0ZXM7XAotKyAgIGlmKCh1 bmFsaWduZWRfdG9wIDwgaXN0b3ApKVwKLSsgICAgICBpc3RvcCAtPSB1bmFsaWduZWRfdG9wO1wK LSsgICBlbHNle1wKLSsgICAgICB1bmFsaWduZWRfdG9wID0gaXN0b3A7XAotKyAgICAgIGlzdG9w ID0gMDtcCi0rICAgfQotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd191cF92c3gocG5nX3Jv d19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7Ci0rICAgdmVjdG9yIHVuc2ln bmVkIGNoYXIgcnBfdmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3ZlYzsKLSsgICB2 c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csMCkKLSsKLSsgICAv KiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICAq IGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKLSsgICAgKiB1bmFs aWduZWQgcGFydCBhcyB1c3VhbC4KLSsgICAgKi8KLSsgICBmb3IgKGkgPSAwOyBpIDwgdW5hbGln bmVkX3RvcDsgaSsrKQotKyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnAp ICsgKGludCkoKnBwKyspKSAmIDB4ZmYpOwotKyAgICAgIHJwKys7Ci0rICAgfQotKwotKyAgIC8q IFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCi0rICAgd2hpbGUoIGlzdG9wID49IDE2ICkKLSsg ICB7Ci0rICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgIHZlY19sZF91bmFsaWdu ZWQocHBfdmVjLHBwKTsKLSsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwcF92ZWMp OwotKwotKyAgICAgIHZlY19zdChycF92ZWMsMCxycCk7Ci0rCi0rICAgICAgcHAgKz0gMTY7Ci0r ICAgICAgcnAgKz0gMTY7Ci0rICAgICAgaXN0b3AgLT0gMTY7Ci0rICAgfQotKwotKyAgIGlmKGlz dG9wID4gMCkKLSsgICB7Ci0rICAgICAgLyogSWYgYnl0ZSBjb3VudCBvZiByb3cgaXMgbm90IGRp dmlzaWJsZSBieSAxNgotKyAgICAgICAqIHdlIHdpbGwgcHJvY2VzcyByZW1haW5pbmcgcGFydCBh cyB1c3VhbAotKyAgICAgICAqLwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcDsgaSsrKQot KyAgICAgIHsKLSsgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCko KnBwKyspKSAmIDB4ZmYpOwotKyAgICAgICAgIHJwKys7Ci0rICAgICAgfQotK30KLSsKLSt9Ci0r Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDFfNCA9 IHsxNiwxNiwxNiwxNiwgMCwgMSwgMiwgMywxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3Rh dGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDJfNCA9IHsxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwgNCwgNSwgNiwgNywxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNv bnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDNfNCA9IHsxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOCwgOSwxMCwxMX07Ci0rCi0rc3RhdGljIGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDFfMyA9IHsxNiwxNiwxNiwgMCwg MSwgMiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3Rv ciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDJfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwg MywgNCwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDNfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwgNiwgNywgOCwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9MRUZUU0hJRlRFRDRfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwgOSwxMCwxMSwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy IFZTWF9OT1RfU0hJRlRFRDFfNCA9IHsxNiwxNiwxNiwxNiwgNCwgNSwgNiwgNywxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9O T1RfU0hJRlRFRDJfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOCwgOSwxMCwxMSwxNiwx NiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJ RlRFRDNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxMiwxMywxNCwx NX07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRF RDFfMyA9IHsxNiwxNiwxNiwgMywgNCwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07 Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDJfMyA9 IHsxNiwxNiwxNiwxNiwxNiwxNiwgNiwgNywgOCwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3Rh dGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDNfMyA9IHsxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOSwxMCwxMSwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNv bnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDRfMyA9IHsxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxMiwxMywxNCwxNn07Ci0rCi0rc3RhdGljIGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1pFUk8gPSB7MCwwLDAsMCwwLDAsMCwwLDAs MCwwLDAsMCwwLDAsMH07Ci0rI2lmZGVmIF9fTElUVExFX0VORElBTl9fCi0rCi0rc3RhdGljIGNv bnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMV80ID0geyA0LDE2LCA1 LDE2LCA2LDE2LCA3LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3Qg dmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQyXzQgPSB7IDgsMTYsIDksMTYs MTAsMTYsMTEsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDNfNCA9IHsxMiwxNiwxMywxNiwxNCwx NiwxNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3Rv ciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMV80ID0gezE2LDE2LDE2LDE2LCAwLCAy LCA0LCA2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVu c2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsIDAsIDIsIDQsIDYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwgMCwgMiwgNCwgNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25l ZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMV8zID0geyAzLDE2LCA0LDE2LCA1LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNo YXIgVlNYX0NIQVJfVE9fU0hPUlQyXzMgPSB7IDYsMTYsIDcsMTYsIDgsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBW U1hfQ0hBUl9UT19TSE9SVDNfMyA9IHsgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9D SEFSX1RPX1NIT1JUNF8zID0gezEyLDE2LDEzLDE2LDE0LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2fTsKLSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NI T1JUX1RPX0NIQVIxXzMgPSB7MTYsMTYsMTYsIDAsIDIsIDQsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRf VE9fQ0hBUjJfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwgMCwgMiwgNCwxNiwxNiwxNiwxNiwxNiwx NiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19D SEFSM18zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LDE2LDE2LDE2LDE2 fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVI0 XzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQsMTZ9Owot KwotKyNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX18pCi0rCi0rc3RhdGljIGNvbnN0IHZlY3Rv ciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMV80ID0gezE2LCA0LDE2LCA1LDE2LCA2 LDE2LCA3LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVu c2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQyXzQgPSB7MTYsIDgsMTYsIDksMTYsMTAsMTYs MTEsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDNfNCA9IHsxNiwxMiwxNiwxMywxNiwxNCwxNiwxNSwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25l ZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMV80ID0gezE2LDE2LDE2LDE2LCAxLCAzLCA1LCA3LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNo YXIgVlNYX1NIT1JUX1RPX0NIQVIyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMs IDUsIDcsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBW U1hfU0hPUlRfVE9fQ0hBUjNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwgMSwgMywgNSwgN307Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZT WF9DSEFSX1RPX1NIT1JUMV8zID0gezE2LCAzLDE2LCA0LDE2LCA1LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NI QVJfVE9fU0hPUlQyXzMgPSB7MTYsIDYsMTYsIDcsMTYsIDgsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9U T19TSE9SVDNfMyA9IHsxNiwgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NI T1JUNF8zID0gezE2LDEyLDE2LDEzLDE2LDE0LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 fTsKLSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NI QVIxXzMgPSB7MTYsMTYsMTYsIDEsIDMsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9 OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjJf MyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwgMSwgMywgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0r c3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSM18zID0g ezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1LDE2LDE2LDE2LDE2fTsKLStzdGF0 aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVI0XzMgPSB7MTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsMTZ9OwotKwotKyNlbmRp ZgotKwotKyNkZWZpbmUgdnN4X2NoYXJfdG9fc2hvcnQodmVjLG9mZnNldCxicHApICh2ZWN0b3Ig dW5zaWduZWQgc2hvcnQpdmVjX3Blcm0oKHZlYyksVlNYX0NIQVJfWkVSTyxWU1hfQ0hBUl9UT19T SE9SVCMjb2Zmc2V0IyNfIyNicHApCi0rI2RlZmluZSB2c3hfc2hvcnRfdG9fY2hhcih2ZWMsb2Zm c2V0LGJwcCkgdmVjX3Blcm0oKCh2ZWN0b3IgdW5zaWduZWQgY2hhcikodmVjKSksVlNYX0NIQVJf WkVSTyxWU1hfU0hPUlRfVE9fQ0hBUiMjb2Zmc2V0IyNfIyNicHApCi0rCi0rI2lmZGVmIFBOR19V U0VfQUJTCi0rIyAgZGVmaW5lIHZzeF9hYnMobnVtYmVyKSBhYnMobnVtYmVyKQotKyNlbHNlCi0r IyAgZGVmaW5lIHZzeF9hYnMobnVtYmVyKSAobnVtYmVyID4gMCkgPyAobnVtYmVyKSA6IC0obnVt YmVyKQotKyNlbmRpZgotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWI0X3ZzeChwbmdf cm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCi0rewotKyAgIGNvbnN0IHBu Z19ieXRlIGJwcCA9IDQ7Ci0rCi0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOwotKyAg IHZlY3RvciB1bnNpZ25lZCBjaGFyIHBhcnRfdmVjOwotKwotKyAgIHZzeF9kZWNsYXJlX2NvbW1v bl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCi0rCi0rICAgUE5HX1VOVVNFRChwcCkK LSsKLSsgICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0 YQotKyAgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKLSsg ICAgKiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KLSsgICAgKi8KLSsgICBmb3IgKGkgPSAwOyBp IDwgdW5hbGlnbmVkX3RvcDsgaSsrKQotKyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCgo aW50KSgqcnApICsgKGludCkoKihycC1icHApKSkgJiAweGZmKTsKLSsgICAgICBycCsrOwotKyAg IH0KLSsKLSsgICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLwotKyAgIHdoaWxlKCBpc3Rv cCA+PSAxNiApCi0rICAgewotKyAgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKLSsgICAgICB7 Ci0rICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBw KSkpICYgMHhmZik7Ci0rICAgICAgICAgcnArKzsKLSsgICAgICB9Ci0rICAgICAgcnAgLT0gYnBw OwotKwotKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKLSsgICAgICBwYXJ0X3ZlYyA9IHZl Y19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDFfNCk7Ci0rICAgICAg cnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOwotKwotKyAgICAgIHBhcnRfdmVjID0g dmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMl80KTsKLSsgICAg ICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgcGFydF92ZWMg PSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzQpOwotKyAg ICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKLSsKLSsgICAgICB2ZWNfc3Qo cnBfdmVjLDAscnApOwotKwotKyAgICAgIHJwICs9IDE2OwotKyAgICAgIGlzdG9wIC09IDE2Owot KyAgIH0KLSsKLSsgICBpZihpc3RvcCA+IDApCi0rICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9w ICUgMTY7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCko KnJwKSArIChpbnQpKCoocnAgLSBicHApKSkgJiAweGZmKTsKLSsgICAgICAgICBycCsrOwotKyAg ICAgIH0KLSsKLSt9Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjNfdnN4KHBuZ19y b3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7Ci0rICAgY29uc3QgcG5n X2J5dGUgYnBwID0gMzsKLSsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7Ci0rICAg dmVjdG9yIHVuc2lnbmVkIGNoYXIgcGFydF92ZWM7Ci0rCi0rICAgdnN4X2RlY2xhcmVfY29tbW9u X3ZhcnMocm93X2luZm8scm93LHByZXZfcm93LGJwcCkKLSsKLSsgICBQTkdfVU5VU0VEKHBwKQot KwotKyAgIC8qIEFsdGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUgYWxpZ25lZCBkYXRh Ci0rICAgICogYnV0IGlucHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQotKyAg ICAqIHVuYWxpZ25lZCBwYXJ0IGFzIHVzdWFsLgotKyAgICAqLwotKyAgIGZvciAoaSA9IDA7IGkg PCB1bmFsaWduZWRfdG9wOyBpKyspCi0rICAgewotKyAgICAgICpycCA9IChwbmdfYnl0ZSkoKChp bnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAgICAgIHJwKys7Ci0rICAg fQotKwotKyAgIC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCi0rICAgd2hpbGUoIGlzdG9w ID49IDE2ICkKLSsgICB7Ci0rICAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQotKyAgICAgIHsK LSsgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycC1icHAp KSkgJiAweGZmKTsKLSsgICAgICAgICBycCsrOwotKyAgICAgIH0KLSsgICAgICBycCAtPSBicHA7 Ci0rCi0rICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgIHBhcnRfdmVjID0gdmVj X3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMV8zKTsKLSsgICAgICBy cF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgcGFydF92ZWMgPSB2 ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQyXzMpOwotKyAgICAg IHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKLSsKLSsgICAgICBwYXJ0X3ZlYyA9 IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfMyk7Ci0rICAg ICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOwotKwotKyAgICAgIHBhcnRfdmVj ID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVENF8zKTsKLSsg ICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgdmVjX3N0 KHJwX3ZlYywwLHJwKTsKLSsgICAgICBycCArPSAxNTsKLSsgICAgICBpc3RvcCAtPSAxNjsKLSsK LSsgICAgICAvKiBTaW5jZSAxNiAlIGJwcCA9IDE2ICUgMyA9IDEsIGxhc3QgZWxlbWVudCBvZiBh cnJheSBtdXN0Ci0rICAgICAgICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5Ci0rICAgICAgICovCi0r ICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYg MHhmZik7Ci0rICAgICAgcnArKzsKLSsgICB9Ci0rCi0rICAgaWYoaXN0b3AgPiAwKQotKyAgICAg IGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpy cCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwot KyAgICAgICAgIHJwKys7Ci0rICAgICAgfQotK30KLSsKLSt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9y b3dfYXZnNF92c3gocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQot K3sKLSsgICBjb25zdCBwbmdfYnl0ZSBicHAgPSA0OwotKwotKyAgIHZlY3RvciB1bnNpZ25lZCBj aGFyIHJwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7Ci0rICAgdmVjdG9y IHVuc2lnbmVkIGNoYXIgcHBfcGFydF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBf cGFydF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgYXZnX3ZlYzsKLSsKLSsgICB2c3hf ZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQotKyAgIHJwIC09 IGJwcDsKLSsgICBpZihpc3RvcCA+PSBicHApCi0rICAgICAgaXN0b3AgLT0gYnBwOwotKwotKyAg IGZvciAoaSA9IDA7IGkgPCBicHA7IGkrKykKLSsgICB7Ci0rICAgICAgKnJwID0gKHBuZ19ieXRl KSgoKGludCkoKnJwKSArCi0rICAgICAgICAgKChpbnQpKCpwcCsrKSAvIDIgKSkgJiAweGZmKTsK LSsKLSsgICAgICBycCsrOwotKyAgIH0KLSsKLSsgICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVx dWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGln bmVkLiBTbyB3ZSBjYWxjdWxhdGUKLSsgICAgKiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KLSsg ICAgKi8KLSsgICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcDsgaSsrKQotKyAgIHsKLSsg ICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgICAoaW50KSgqcHAr KyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKLSsKLSsgICAgICBycCsrOwotKyAgIH0KLSsK LSsgICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLwotKyAgIHdoaWxlKCBpc3RvcCA+PSAx NiApCi0rICAgewotKyAgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKLSsgICAgICB7Ci0rICAg ICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAgKGludCko KnBwKysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7Ci0rCi0rICAgICAgICAgcnArKzsKLSsg ICAgICB9Ci0rICAgICAgcnAgLT0gYnBwOwotKyAgICAgIHBwIC09IGJwcDsKLSsKLSsgICAgICB2 ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnAp OwotKwotKyAgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8s VlNYX0xFRlRTSElGVEVEMV80KTsKLSsgICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3Zl YyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDFfNCk7Ci0rICAgICAgYXZnX3ZlYyA9IHZl Y19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgIGF2Z192ZWMgPSB2ZWNfc3Vi KGF2Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3Nw bGF0X3U4KDEpKSk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0r Ci0rICAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hf TEVGVFNISUZURUQyXzQpOwotKyAgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZT WF9DSEFSX1pFUk8sVlNYX05PVF9TSElGVEVEMl80KTsKLSsgICAgICBhdmdfdmVjID0gdmVjX2F2 ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0rICAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZn X3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRf dTgoMSkpKTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKLSsKLSsg ICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZU U0hJRlRFRDNfNCk7Ci0rICAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NI QVJfWkVSTyxWU1hfTk9UX1NISUZURUQzXzQpOwotKyAgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJw X3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKLSsgICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVj LCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgx KSkpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwotKwotKyAgICAg IHZlY19zdChycF92ZWMsMCxycCk7Ci0rCi0rICAgICAgcnAgKz0gMTY7Ci0rICAgICAgcHAgKz0g MTY7Ci0rICAgICAgaXN0b3AgLT0gMTY7Ci0rICAgfQotKwotKyAgIGlmKGlzdG9wICA+IDApCi0r ICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKLSsgICAgICB7Ci0rICAgICAg ICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAgKGludCkoKnBw KysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7Ci0rCi0rICAgICAgICAgcnArKzsKLSsgICAg ICB9Ci0rfQotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19hdmczX3ZzeChwbmdfcm93X2lu Zm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCi0rewotKyAgY29uc3QgcG5nX2J5dGUg YnBwID0gMzsKLSsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsgIHZlY3RvciB1 bnNpZ25lZCBjaGFyIHBwX3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3BhcnRfdmVj OwotKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfcGFydF92ZWM7Ci0rICB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBhdmdfdmVjOwotKwotKyAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8s cm93LHByZXZfcm93LGJwcCkKLSsgIHJwIC09IGJwcDsKLSsgIGlmKGlzdG9wID49IGJwcCkKLSsg ICAgIGlzdG9wIC09IGJwcDsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBicHA7IGkrKykKLSsgIHsK LSsgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwotKyAgICAgICAgKChpbnQpKCpw cCsrKSAvIDIgKSkgJiAweGZmKTsKLSsKLSsgICAgIHJwKys7Ci0rICB9Ci0rCi0rICAvKiBBbHRp dmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICogYnV0IGlu cHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQotKyAgICogdW5hbGlnbmVkIHBh cnQgYXMgdXN1YWwuCi0rICAgKi8KLSsgIGZvciAoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wOyBp KyspCi0rICB7Ci0rICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAg IChpbnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKwotKyAgICAgcnArKzsK LSsgIH0KLSsKLSsgIC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCi0rICB3aGlsZSggaXN0 b3AgPj0gMTYgKQotKyAgewotKyAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQotKyAgICAgewot KyAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAoaW50 KSgqcHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKLSsKLSsgICAgICAgIHJwKys7Ci0r ICAgICB9Ci0rICAgICBycCAtPSBicHA7Ci0rICAgICBwcCAtPSBicHA7Ci0rCi0rICAgICB2ZWNf bGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0rICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0r Ci0rICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9M RUZUU0hJRlRFRDFfMyk7Ci0rICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hf Q0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDFfMyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2Zyhy cF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVj LCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgx KSkpOwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICBy cF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRF RDJfMyk7Ci0rICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJP LFZTWF9OT1RfU0hJRlRFRDJfMyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3Zl YyxwcF9wYXJ0X3ZlYyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5k KHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAg ICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICBycF9wYXJ0X3Zl YyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfMyk7Ci0r ICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1Rf U0hJRlRFRDNfMyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0 X3ZlYyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3Io cnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAgcnBfdmVj ID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICBycF9wYXJ0X3ZlYyA9IHZlY19w ZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDRfMyk7Ci0rICAgICBwcF9w YXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDRf Myk7Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0r ICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92 ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAgcnBfdmVjID0gdmVjX2Fk ZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICB2ZWNfc3QocnBfdmVjLDAscnApOwotKwotKyAg ICAgcnAgKz0gMTU7Ci0rICAgICBwcCArPSAxNTsKLSsgICAgIGlzdG9wIC09IDE2OwotKwotKyAg ICAgLyogU2luY2UgMTYgJSBicHAgPSAxNiAlIDMgPSAxLCBsYXN0IGVsZW1lbnQgb2YgYXJyYXkg bXVzdAotKyAgICAgICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5Ci0rICAgICAgKi8KLSsgICAgICpy cCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwotKyAgICAgICAgKGludCkoKnBwKysgKyAqKHJw LWJwcCkpIC8gMiApICYgMHhmZik7Ci0rICAgICBycCsrOwotKyAgfQotKwotKyAgaWYoaXN0b3Ag ID4gMCkKLSsgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICB7Ci0r ICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgICAgIChpbnQp KCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKwotKyAgICAgICAgcnArKzsKLSsg ICAgIH0KLSt9Ci0rCi0rLyogQnl0ZXdpc2UgYyA/IHQgOiBlLiAqLwotKyNkZWZpbmUgaWZfdGhl bl9lbHNlKGMsdCxlKSB2ZWNfc2VsKGUsdCxjKQotKwotKyNkZWZpbmUgdnN4X3BhZXRoX3Byb2Nl c3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKSB7XAotKyAgICAgIGMgPSAqKHBwIC0gYnBwKTtc Ci0rICAgICAgYSA9ICoocnAgLSBicHApO1wKLSsgICAgICBiID0gKnBwKys7XAotKyAgICAgIHAg PSBiIC0gYztcCi0rICAgICAgcGMgPSBhIC0gYztcCi0rICAgICAgcGEgPSB2c3hfYWJzKHApO1wK LSsgICAgICBwYiA9IHZzeF9hYnMocGMpO1wKLSsgICAgICBwYyA9IHZzeF9hYnMocCArIHBjKTtc Ci0rICAgICAgaWYgKHBiIDwgcGEpIHBhID0gcGIsIGEgPSBiO1wKLSsgICAgICBpZiAocGMgPCBw YSkgYSA9IGM7XAotKyAgICAgIGEgKz0gKnJwO1wKLSsgICAgICAqcnArKyA9IChwbmdfYnl0ZSlh O1wKLSsgICAgICB9Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoNF92c3gocG5n X3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICBwbmdfY29uc3RfYnl0ZXAg cHJldl9yb3cpCi0rewotKyAgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDQ7Ci0rCi0rICAgaW50IGEs IGIsIGMsIHBhLCBwYiwgcGMsIHA7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOwot KyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgc2hv cnQgYV92ZWMsYl92ZWMsY192ZWMsbmVhcmVzdF92ZWM7Ci0rICAgdmVjdG9yIHNpZ25lZCBzaG9y dCBwYV92ZWMscGJfdmVjLHBjX3ZlYyxzbWFsbGVzdF92ZWM7Ci0rCi0rICAgdnN4X2RlY2xhcmVf Y29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93LGJwcCkKLSsgICBycCAtPSBicHA7Ci0r ICAgaWYoaXN0b3AgPj0gYnBwKQotKyAgICAgIGlzdG9wIC09IGJwcDsKLSsKLSsgICAvKiBQcm9j ZXNzIHRoZSBmaXJzdCBwaXhlbCBpbiB0aGUgcm93IGNvbXBsZXRlbHkgKHRoaXMgaXMgdGhlIHNh bWUgYXMgJ3VwJwotKyAgICAqIGJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUgY2FuZGlkYXRlIHBy ZWRpY3RvciBmb3IgdGhlIGZpcnN0IHJvdykuCi0rICAgICovCi0rICAgZm9yKGkgPSAwOyBpIDwg YnBwIDsgaSsrKQotKyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCAqcnAgKyAqcHApOwot KyAgICAgIHJwKys7Ci0rICAgICAgcHArKzsKLSsgICB9Ci0rCi0rICAgZm9yKGkgPSAwOyBpIDwg dW5hbGlnbmVkX3RvcCA7IGkrKykKLSsgICB7Ci0rICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAs cHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAgIH0KLSsKLSsgICB3aGlsZSggaXN0b3AgPj0gMTYp Ci0rICAgewotKyAgICAgIGZvcihpID0gMDsgaSA8IGJwcCA7IGkrKykKLSsgICAgICB7Ci0rICAg ICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAgICAg IH0KLSsKLSsgICAgICBycCAtPSBicHA7Ci0rICAgICAgcHAgLT0gYnBwOwotKyAgICAgIHJwX3Zl YyA9IHZlY19sZCgwLHJwKTsKLSsgICAgICB2ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0r Ci0rICAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hf Q0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV80KSwxLDQpOwotKyAgICAgIGJfdmVjID0gdnN4 X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1Rf U0hJRlRFRDFfNCksMSw0KTsKLSsgICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19w ZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQxXzQpLDEsNCk7Ci0r ICAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMp OwotKyAgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwg Y192ZWMpOwotKyAgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7Ci0rICAgICAg cGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVj KTsKLSsgICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7Ci0rICAgICAgc21hbGxlc3RfdmVj ID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgIG5lYXJl c3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNt YWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICAgaWZfdGhlbl9l bHNlKAotKyAgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAg ICAgICAgICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgICBjX3ZlYwotKyAgICAgICAgICAgICAg KQotKyAgICAgICAgICAgICk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9z aG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDEsNCkpKTsKLSsKLSsgICAgICBhX3ZlYyA9IHZzeF9j aGFyX3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNI SUZURUQyXzQpLDIsNCk7Ci0rICAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVy bShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEMl80KSwyLDQpOwotKyAg ICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJf WkVSTyAsIFZTWF9MRUZUU0hJRlRFRDJfNCksMiw0KTsKLSsgICAgICBwYV92ZWMgPSAodmVjdG9y IHNpZ25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7Ci0rICAgICAgcGJfdmVjID0gKHZl Y3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICAgcGNfdmVj ID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKLSsgICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3Zl Yyk7Ci0rICAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgIHBjX3ZlYyA9IHZl Y19hYnMocGNfdmVjKTsKLSsgICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVj X21pbihwYV92ZWMscGJfdmVjKSk7Ci0rICAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNl KAotKyAgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAg ICAgICBhX3ZlYywKLSsgICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgICB2 ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgICBiX3ZlYywKLSsg ICAgICAgICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICApCi0rICAgICAgICAgICAgKTsKLSsg ICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92 ZWMsMiw0KSkpOwotKwotKyAgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0o cnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDNfNCksMyw0KTsKLSsgICAg ICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pF Uk8gLCBWU1hfTk9UX1NISUZURUQzXzQpLDMsNCk7Ci0rICAgICAgY192ZWMgPSB2c3hfY2hhcl90 b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVE M180KSwzLDQpOwotKyAgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3Vi KGJfdmVjLGNfdmVjKTsKLSsgICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVj X3N1YihhX3ZlYyAsIGNfdmVjKTsKLSsgICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92 ZWMpOwotKyAgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgICBwYl92ZWMgPSB2 ZWNfYWJzKHBiX3ZlYyk7Ci0rICAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAg IHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsK LSsgICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgdmVjX2Nt cGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgIGFfdmVjLAotKyAgICAgICAg ICAgIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxl c3RfdmVjKSwKLSsgICAgICAgICAgICAgIGJfdmVjLAotKyAgICAgICAgICAgICAgY192ZWMKLSsg ICAgICAgICAgICAgICkKLSsgICAgICAgICAgICApOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQo cnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywzLDQpKSk7Ci0rCi0rICAgICAg dmVjX3N0KHJwX3ZlYywwLHJwKTsKLSsKLSsgICAgICBycCArPSAxNjsKLSsgICAgICBwcCArPSAx NjsKLSsgICAgICBpc3RvcCAtPSAxNjsKLSsgICB9Ci0rCi0rICAgaWYoaXN0b3AgPiAwKQotKyAg ICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICAgewotKyAgICAgICAg IHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKLSsgICAgICB9Ci0r fQotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDNfdnN4KHBuZ19yb3dfaW5mb3Ag cm93X2luZm8sIHBuZ19ieXRlcCByb3csCi0rICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQot K3sKLSsgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDM7Ci0rCi0rICBpbnQgYSwgYiwgYywgcGEsIHBi LCBwYywgcDsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsgIHZlY3RvciB1bnNp Z25lZCBjaGFyIHBwX3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBhX3ZlYyxiX3ZlYyxj X3ZlYyxuZWFyZXN0X3ZlYzsKLSsgIHZlY3RvciBzaWduZWQgc2hvcnQgcGFfdmVjLHBiX3ZlYyxw Y192ZWMsc21hbGxlc3RfdmVjOwotKwotKyAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2lu Zm8scm93LHByZXZfcm93LGJwcCkKLSsgIHJwIC09IGJwcDsKLSsgIGlmKGlzdG9wID49IGJwcCkK LSsgICAgIGlzdG9wIC09IGJwcDsKLSsKLSsgIC8qIFByb2Nlc3MgdGhlIGZpcnN0IHBpeGVsIGlu IHRoZSByb3cgY29tcGxldGVseSAodGhpcyBpcyB0aGUgc2FtZSBhcyAndXAnCi0rICAgKiBiZWNh dXNlIHRoZXJlIGlzIG9ubHkgb25lIGNhbmRpZGF0ZSBwcmVkaWN0b3IgZm9yIHRoZSBmaXJzdCBy b3cpLgotKyAgICovCi0rICBmb3IoaSA9IDA7IGkgPCBicHAgOyBpKyspCi0rICB7Ci0rICAgICAq cnAgPSAocG5nX2J5dGUpKCAqcnAgKyAqcHApOwotKyAgICAgcnArKzsKLSsgICAgIHBwKys7Ci0r ICB9Ci0rCi0rICBmb3IoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wIDsgaSsrKQotKyAgewotKyAg ICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAgfQotKwot KyAgd2hpbGUoIGlzdG9wID49IDE2KQotKyAgewotKyAgICAgZm9yKGkgPSAwOyBpIDwgYnBwIDsg aSsrKQotKyAgICAgewotKyAgICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEs cGIscGMsYnBwKQotKyAgICAgfQotKwotKyAgICAgcnAgLT0gYnBwOwotKyAgICAgcHAgLT0gYnBw OwotKyAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgdmVjX2xkX3VuYWxpZ25lZChw cF92ZWMscHApOwotKwotKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShy cF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV8zKSwxLDMpOwotKyAgICAg Yl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJP ICwgVlNYX05PVF9TSElGVEVEMV8zKSwxLDMpOwotKyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19z aG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV8z KSwxLDMpOwotKyAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92 ZWMsY192ZWMpOwotKyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIo YV92ZWMgLCBjX3ZlYyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwot KyAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgcGJfdmVjID0gdmVjX2Ficyhw Yl92ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAgc21hbGxlc3Rf dmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgbmVh cmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxz bWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICBpZl90aGVuX2Vs c2UoCi0rICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAg ICAgICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICkKLSsg ICAgICAgICAgICk7Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3Rv X2NoYXIobmVhcmVzdF92ZWMsMSwzKSkpOwotKwotKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19z aG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMl8z KSwyLDMpOwotKyAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMg LCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEMl8zKSwyLDMpOwotKyAgICAgY192ZWMg PSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNY X0xFRlRTSElGVEVEMl8zKSwyLDMpOwotKyAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hv cnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQg c2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWRkKHBh X3ZlYyxwYl92ZWMpOwotKyAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgcGJf dmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwot KyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3Zl YykpOwotKyAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgdmVj X2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgYV92ZWMsCi0rICAgICAg ICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxl c3RfdmVjKSwKLSsgICAgICAgICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgIGNfdmVjCi0rICAg ICAgICAgICAgICkKLSsgICAgICAgICAgICk7Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3Zl YywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMiwzKSkpOwotKwotKyAgICAgYV92ZWMg PSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNY X0xFRlRTSElGVEVEM18zKSwzLDMpOwotKyAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2 ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEM18zKSwzLDMp OwotKyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hf Q0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEM18zKSwzLDMpOwotKyAgICAgcGFfdmVjID0gKHZl Y3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAgICAgcGJfdmVjID0g KHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICBwY192 ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92 ZWMpOwotKyAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgcGNfdmVjID0gdmVj X2FicyhwY192ZWMpOwotKyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19t aW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAot KyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAg YV92ZWMsCi0rICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgIHZlY19jbXBl cShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICAgYl92ZWMsCi0rICAgICAgICAg ICAgIGNfdmVjCi0rICAgICAgICAgICAgICkKLSsgICAgICAgICAgICk7Ci0rICAgICBycF92ZWMg PSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMywzKSkpOwot KwotKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hf Q0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVENF8zKSw0LDMpOwotKyAgICAgYl92ZWMgPSB2c3hf Y2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9T SElGVEVENF8zKSw0LDMpOwotKyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVy bShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVENF8zKSw0LDMpOwotKyAg ICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwot KyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3Zl Yyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAgICAgcGFfdmVj ID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAg ICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21p bihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgbmVhcmVzdF92ZWMgPSAg aWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMp LAotKyAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAg ICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICAgYl92 ZWMsCi0rICAgICAgICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICkKLSsgICAgICAgICAgICk7 Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVz dF92ZWMsNCwzKSkpOwotKwotKyAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKLSsKLSsgICAgIHJw ICs9IDE1OwotKyAgICAgcHAgKz0gMTU7Ci0rICAgICBpc3RvcCAtPSAxNjsKLSsKLSsgICAgIC8q IFNpbmNlIDE2ICUgYnBwID0gMTYgJSAzID0gMSwgbGFzdCBlbGVtZW50IG9mIGFycmF5IG11c3QK LSsgICAgICAqIGJlIHByb2NlZWRlZCBtYW51YWxseQotKyAgICAgICovCi0rICAgICB2c3hfcGFl dGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApCi0rICB9Ci0rCi0rICBpZihpc3Rv cCA+IDApCi0rICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQotKyAgICAgewot KyAgICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAg ICAgfQotK30KLSsKLSsjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX09QVCA+IDAgKi8KLSsjZW5k aWYgLyogUE5HX1BPV0VSUENfVlNYX0lNUExFTUVOVEFUSU9OID09IDEgKGludHJpbnNpY3MpICov Ci0rI2VuZGlmIC8qIFJFQUQgKi8KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxs Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnBu Zy9wb3dlcnBjL3Bvd2VycGNfaW5pdC5jCi1AQCAtMCwwICsxLDEyNSBAQAotKwotKy8qIHBvd2Vy cGNfaW5pdC5jIC0gUE9XRVJQQyBvcHRpbWlzZWQgZmlsdGVyIGZ1bmN0aW9ucwotKyAqCi0rICog Q29weXJpZ2h0IChjKSAyMDE3IEdsZW5uIFJhbmRlcnMtUGVocnNvbgotKyAqIFdyaXR0ZW4gYnkg VmFkaW0gQmFya292LCAyMDE3LgotKyAqIExhc3QgY2hhbmdlZCBpbiBsaWJwbmcgMS42LjI5IFtN YXJjaCAxNiwgMjAxN10KLSsgKgotKyAqIFRoaXMgY29kZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg bGlicG5nIGxpY2Vuc2UuCi0rICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1 c2UsIHNlZSB0aGUgZGlzY2xhaW1lcgotKyAqIGFuZCBsaWNlbnNlIGluIHBuZy5oCi0rICovCi0r LyogQmVsb3csIGFmdGVyIGNoZWNraW5nIF9fbGludXhfXywgdmFyaW91cyBub24tQzkwIFBPU0lY IDEwMDMuMSBmdW5jdGlvbnMgYXJlCi0rICogY2FsbGVkLgotKyAqLwotKyNkZWZpbmUgX1BPU0lY X1NPVVJDRSAxCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgIi4uL3BuZ3ByaXYu aCIKLSsKLSsjaWZkZWYgUE5HX1JFQURfU1VQUE9SVEVECi0rCi0rI2lmIFBOR19QT1dFUlBDX1ZT WF9PUFQgPiAwCi0rI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JURUQgLyogRG8g cnVuLXRpbWUgY2hlY2tzICovCi0rLyogV0FSTklORzogaXQgaXMgc3Ryb25nbHkgcmVjb21tZW5k ZWQgdGhhdCB5b3UgZG8gbm90IGJ1aWxkIGxpYnBuZyB3aXRoCi0rICogcnVuLXRpbWUgY2hlY2tz IGZvciBDUFUgZmVhdHVyZXMgaWYgYXQgYWxsIHBvc3NpYmxlLiAgSW4gdGhlIGNhc2Ugb2YgdGhl IFBvd2VyUEMKLSsgKiBWU1ggaW5zdHJ1Y3Rpb25zIHRoZXJlIGlzIG5vIHByb2Nlc3Nvci1zcGVj aWZpYyB3YXkgb2YgZGV0ZWN0aW5nIHRoZQotKyAqIHByZXNlbmNlIG9mIHRoZSByZXF1aXJlZCBz dXBwb3J0LCB0aGVyZWZvcmUgcnVuLXRpbWUgZGV0ZWN0aW9uIGlzIGV4dHJlbWVseQotKyAqIE9T IHNwZWNpZmljLgotKyAqCi0rICogWW91IG1heSBzZXQgdGhlIG1hY3JvIFBOR19QT1dFUlBDX1ZT WF9GSUxFIHRvIHRoZSBmaWxlIG5hbWUgb2YgZmlsZSBjb250YWluaW5nCi0rICogYSBmcmFnbWVu dCBvZiBDIHNvdXJjZSBjb2RlIHdoaWNoIGRlZmluZXMgdGhlIHBuZ19oYXZlX3ZzeCBmdW5jdGlv bi4gIFRoZXJlCi0rICogYXJlIGEgbnVtYmVyIG9mIGltcGxlbWVudGF0aW9ucyBpbiBjb250cmli L3Bvd2VycGMtdnN4LCBidXQgdGhlIG9ubHkgb25lIHRoYXQKLSsgKiBoYXMgcGFydGlhbCBzdXBw b3J0IGlzIGNvbnRyaWIvcG93ZXJwYy12c3gvbGludXguYyAtIGEgZ2VuZXJpYyBMaW51eAotKyAq IGltcGxlbWVudGF0aW9uIHdoaWNoIHJlYWRzIC9wcm9jL2NwdWZpbm8uCi0rICovCi0rI2lmbmRl ZiBQTkdfUE9XRVJQQ19WU1hfRklMRQotKyMgIGlmZGVmIF9fbGludXhfXwotKyMgICAgIGRlZmlu ZSAgUE5HX1BPV0VSUENfVlNYX0ZJTEUgImNvbnRyaWIvcG93ZXJwYy12c3gvbGludXhfYXV4LmMi Ci0rIyAgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0ZJTEUKLSsK LSsjaW5jbHVkZSA8c2lnbmFsLmg+IC8qIGZvciBzaWdfYXRvbWljX3QgKi8KLStzdGF0aWMgaW50 IHBuZ19oYXZlX3ZzeChwbmdfc3RydWN0cCBwbmdfcHRyKTsKLSsjaW5jbHVkZSBQTkdfUE9XRVJQ Q19WU1hfRklMRQotKwotKyNlbHNlICAvKiBQTkdfUE9XRVJQQ19WU1hfRklMRSAqLwotKyMgIGVy cm9yICJQTkdfUE9XRVJQQ19WU1hfRklMRSB1bmRlZmluZWQ6IG5vIHN1cHBvcnQgZm9yIHJ1bi10 aW1lIFBPV0VSUEMgVlNYIGNoZWNrcyIKLSsjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0ZJTEUg Ki8KLSsjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0NIRUNLX1NVUFBPUlRFRCAqLwotKwotK3Zv aWQKLStwbmdfaW5pdF9maWx0ZXJfZnVuY3Rpb25zX3ZzeChwbmdfc3RydWN0cCBwcCwgdW5zaWdu ZWQgaW50IGJwcCkKLSt7Ci0rICAgLyogVGhlIHN3aXRjaCBzdGF0ZW1lbnQgaXMgY29tcGlsZWQg aW4gZm9yIFBPV0VSUENfVlNYX0FQSSwgdGhlIGNhbGwgdG8KLSsgICAgKiBwbmdfaGF2ZV92c3gg aXMgY29tcGlsZWQgaW4gZm9yIFBPV0VSUENfVlNYX0NIRUNLLiBJZiBib3RoIGFyZSBkZWZpbmVk Ci0rICAgICogdGhlIGNoZWNrIGlzIG9ubHkgcGVyZm9ybWVkIGlmIHRoZSBBUEkgaGFzIG5vdCBz ZXQgdGhlIFBvd2VyUEMgb3B0aW9uIG9uCi0rICAgICogb3Igb2ZmIGV4cGxpY2l0bHkuIEluIHRo aXMgY2FzZSB0aGUgY2hlY2sgY29udHJvbHMgd2hhdCBoYXBwZW5zLgotKyAgICAqLwotKwotKyNp ZmRlZiBQTkdfUE9XRVJQQ19WU1hfQVBJX1NVUFBPUlRFRAotKyAgIHN3aXRjaCAoKHBwLT5vcHRp b25zID4+IFBOR19QT1dFUlBDX1ZTWCkgJiAzKQotKyAgIHsKLSsgICAgICBjYXNlIFBOR19PUFRJ T05fVU5TRVQ6Ci0rICAgICAgICAgLyogQWxsb3cgdGhlIHJ1bi10aW1lIGNoZWNrIHRvIGV4ZWN1 dGUgaWYgaXQgaGFzIGJlZW4gZW5hYmxlZCAtCi0rICAgICAgICAgICogdGh1cyBib3RoIEFQSSBh bmQgQ0hFQ0sgY2FuIGJlIHR1cm5lZCBvbi4gIElmIGl0IGlzbid0IHN1cHBvcnRlZAotKyAgICAg ICAgICAqIHRoaXMgY2FzZSB3aWxsIGZhbGwgdGhyb3VnaCB0byB0aGUgJ2RlZmF1bHQnIGJlbG93 LCB3aGljaCBqdXN0Ci0rICAgICAgICAgICogcmV0dXJucy4KLSsgICAgICAgICAgKi8KLSsjZW5k aWYgLyogUE5HX1BPV0VSUENfVlNYX0FQSV9TVVBQT1JURUQgKi8KLSsjaWZkZWYgUE5HX1BPV0VS UENfVlNYX0NIRUNLX1NVUFBPUlRFRAotKyAgICAgICAgIHsKLSsgICAgICAgICAgICBzdGF0aWMg dm9sYXRpbGUgc2lnX2F0b21pY190IG5vX3ZzeCA9IC0xOyAvKiBub3QgY2hlY2tlZCAqLwotKwot KyAgICAgICAgICAgIGlmIChub192c3ggPCAwKQotKyAgICAgICAgICAgICAgIG5vX3ZzeCA9ICFw bmdfaGF2ZV92c3gocHApOwotKwotKyAgICAgICAgICAgIGlmIChub192c3gpCi0rICAgICAgICAg ICAgICAgcmV0dXJuOwotKyAgICAgICAgIH0KLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0FQSV9T VVBQT1JURUQKLSsgICAgICAgICBicmVhazsKLSsjZW5kaWYKLSsjZW5kaWYgLyogUE5HX1BPV0VS UENfVlNYX0NIRUNLX1NVUFBPUlRFRCAqLwotKwotKyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hfQVBJ X1NVUFBPUlRFRAotKyAgICAgIGRlZmF1bHQ6IC8qIE9GRiBvciBJTlZBTElEICovCi0rICAgICAg ICAgcmV0dXJuOwotKwotKyAgICAgIGNhc2UgUE5HX09QVElPTl9PTjoKLSsgICAgICAgICAvKiBP cHRpb24gdHVybmVkIG9uICovCi0rICAgICAgICAgYnJlYWs7Ci0rICAgfQotKyNlbmRpZgotKwot KyAgIC8qIElNUE9SVEFOVDogYW55IG5ldyBpbnRlcm5hbCBmdW5jdGlvbnMgdXNlZCBoZXJlIG11 c3QgYmUgZGVjbGFyZWQgdXNpbmcKLSsgICAgKiBQTkdfSU5URVJOQUxfRlVOQ1RJT04gaW4gLi4v cG5ncHJpdi5oLiAgVGhpcyBpcyByZXF1aXJlZCBzbyB0aGF0IHRoZQotKyAgICAqICdwcmVmaXgn IG9wdGlvbiB0byBjb25maWd1cmUgd29ya3M6Ci0rICAgICoKLSsgICAgKiAgICAuL2NvbmZpZ3Vy ZSAtLXdpdGgtbGlicG5nLXByZWZpeD1mb29iYXJfCi0rICAgICoKLSsgICAgKiBWZXJpZnkgeW91 IGhhdmUgZ290IHRoaXMgcmlnaHQgYnkgcnVubmluZyB0aGUgYWJvdmUgY29tbWFuZCwgZG9pbmcg YSBidWlsZAotKyAgICAqIGFuZCBleGFtaW5pbmcgcG5ncHJlZml4Lmg7IGl0IG11c3QgY29udGFp biBhICNkZWZpbmUgZm9yIGV2ZXJ5IGV4dGVybmFsCi0rICAgICogZnVuY3Rpb24geW91IGFkZC4g IChOb3RpY2UgdGhhdCB0aGlzIGhhcHBlbnMgYXV0b21hdGljYWxseSBmb3IgdGhlCi0rICAgICog aW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uKQotKyAgICAqLwotKyAgIHBwLT5yZWFkX2ZpbHRlcltQ TkdfRklMVEVSX1ZBTFVFX1VQLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd191cF92c3g7Ci0rCi0r ICAgaWYgKGJwcCA9PSAzKQotKyAgIHsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRF Ul9WQUxVRV9TVUItMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjNfdnN4OwotKyAgICAgIHBw LT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX0FWRy0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9y b3dfYXZnM192c3g7Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfUEFF VEgtMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoM192c3g7Ci0rICAgfQotKwotKyAgIGVs c2UgaWYgKGJwcCA9PSA0KQotKyAgIHsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRF Ul9WQUxVRV9TVUItMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjRfdnN4OwotKyAgICAgIHBw LT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX0FWRy0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9y b3dfYXZnNF92c3g7Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfUEFF VEgtMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoNF92c3g7Ci0rICAgfQotK30KLSsjZW5k aWYgLyogUE5HX1BPV0VSUENfVlNYX09QVCA+IDAgKi8KLSsjZW5kaWYgLyogUkVBRCAqLwotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sc3MvbGludXhf c3lzY2FsbF9zdXBwb3J0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi1AQCAtMzkxNCw3ICszOTE0 LDcgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgewotICAgICAgIExTU19SRUcoMiwgYnVmKTsKLSAg ICAgICBMU1NfQk9EWSh2b2lkKiwgbW1hcDIsICIwIihfX3IyKSk7Ci0gICAgIH0KLS0jZWxzZQot KyNlbGlmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pIC8qIHBwYzY0IGRvZXNuJ3QgaGF2ZSBtbWFw MiAqLwotICAgICAjZGVmaW5lIF9fTlJfX21tYXAyIF9fTlJfbW1hcDIKLSAgICAgTFNTX0lOTElO RSBfc3lzY2FsbDYodm9pZCosIF9tbWFwMiwgICAgICAgICAgICB2b2lkKiwgcywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90LCAgICAgICAgICAgICAgICAgICBsLCBpbnQsICAgICAg ICAgICAgICAgcCwKLUBAIC00MDQ1LDcgKzQwNDUsNyBAQCBzdHJ1Y3Qga2VybmVsX3N0YXRmcyB7 Ci0gICAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIGRlZmluZWQoX19BUk1fQVJDSF8zX18p IHx8IGRlZmluZWQoX19BUk1fRUFCSV9fKSB8fCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg IChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTMyKSB8fCAg ICAgICAgICAgICAgICAgICBcCi0tICAgICAgZGVmaW5lZChfX1BQQ19fKSB8fCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgKGRlZmlu ZWQoX19QUENfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykpIHx8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAoZGVmaW5lZChf X3MzOTBfXykgJiYgIWRlZmluZWQoX19zMzkweF9fKSkKLSAgICAgLyogT24gdGhlc2UgYXJjaGl0 ZWN0dXJlcywgaW1wbGVtZW50IG1tYXAoKSB3aXRoIG1tYXAyKCkuICovCi0gICAgIExTU19JTkxJ TkUgdm9pZCogTFNTX05BTUUobW1hcCkodm9pZCAqcywgc2l6ZV90IGwsIGludCBwLCBpbnQgZiwg aW50IGQsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L25vZGUvbm9kZS5weQotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ub2RlL25vZGUucHkKLUBAIC0xMCwxMSArMTAsMTIgQEAgaW1wb3J0IHN5cwotIAot IAotIGRlZiBHZXRCaW5hcnlQYXRoKCk6Ci0tICByZXR1cm4gb3NfcGF0aC5qb2luKG9zX3BhdGgu ZGlybmFtZShfX2ZpbGVfXyksICp7Ci0tICAgICdEYXJ3aW4nOiAoJ21hYycsICdub2RlLWRhcndp bi14NjQnLCAnYmluJywgJ25vZGUnKSwKLS0gICAgJ0xpbnV4JzogKCdsaW51eCcsICdub2RlLWxp bnV4LXg2NCcsICdiaW4nLCAnbm9kZScpLAotLSAgICAnV2luZG93cyc6ICgnd2luJywgJ25vZGUu ZXhlJyksCi0tICB9W3BsYXRmb3JtLnN5c3RlbSgpXSkKLSsgIHJldHVybiAiL3Vzci9iaW4vbm9k ZSIKLSsgICNyZXR1cm4gb3NfcGF0aC5qb2luKG9zX3BhdGguZGlybmFtZShfX2ZpbGVfXyksICp7 Ci0rICAjICAnRGFyd2luJzogKCdtYWMnLCAnbm9kZS1kYXJ3aW4teDY0JywgJ2JpbicsICdub2Rl JyksCi0rICAjICAnTGludXgnOiAoJ2xpbnV4JywgJ25vZGUtbGludXgteDY0JywgJ2JpbicsICdu b2RlJyksCi0rICAjICAnV2luZG93cyc6ICgnd2luJywgJ25vZGUuZXhlJyksCi0rICAjfVtwbGF0 Zm9ybS5zeXN0ZW0oKV0pCi0gCi0gCi0gZGVmIFJ1bk5vZGUoY21kX3BhcnRzLCBzdGRvdXQ9Tm9u ZSk6Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3Bk Zml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2Vf YWxsb2NhdG9yX2NvbnN0YW50cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRp b25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yX2NvbnN0YW50cy5oCi1AQCAtMTEsNyArMTEsNyBA QAotIAotIG5hbWVzcGFjZSBwZGZpdW0gewotIG5hbWVzcGFjZSBiYXNlIHsKLS0jaWYgZGVmaW5l ZChPU19XSU4pCi0rI2lmIGRlZmluZWQoT1NfV0lOKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0 KQotIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5U2hp ZnQgPSAxNjsgIC8vIDY0S0IKLSAjZWxpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCi0g c3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlmdCA9 IDE0OyAgLy8gMTZLQgotQEAgLTI3LDYgKzI3LDEwIEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90 IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5QmFzZU1hc2sgPQotIAotICNpZiBkZWZpbmVkKF9N SVBTX0FSQ0hfTE9PTkdTT04pCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VT aXplID0gMTYzODQ7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSsvLyBUT0RPOiBt b2Rlcm4gcHBjNjQgY2FuIGRvIDRrIGFuZCA2NGsgcGFnZSBzaXplcwotKy8vIGZvciBub3csIDY0 ayBpcyBhc3N1bWVkCi0rc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0g NjU1MzY7Ci0gI2Vsc2UKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNpemUg PSA0MDk2OwotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2Fs bG9jYXRvci9wYXJ0aXRpb25fYWxsb2NfY29uc3RhbnRzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxs b2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0YW50cy5oCi1A QCAtMzMsNiArMzMsOCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWNrZXRTaGlmdCA9IChrQWxs b2NhdGlvbkdyYW51bGFyaXR5ID09IDgpID8gMyA6IDI7Ci0gLy8gdXAgYWdhaW5zdCB0aGUgZW5k IG9mIGEgc3lzdGVtIHBhZ2UuCi0gI2lmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKLSBz dGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNjsgIC8vIDY0S0IKLSsj ZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotK3N0YXRpYyBjb25zdCBzaXplX3Qga1BhcnRp dGlvblBhZ2VTaGlmdCA9IDE4OyAgLy8gMjU2S0IKLSAjZWxzZQotIHN0YXRpYyBjb25zdCBzaXpl X3Qga1BhcnRpdGlvblBhZ2VTaGlmdCA9IDE0OyAgLy8gMTZLQgotICNlbmRpZgotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvYW1hbGdhbWF0 aW9uL3NxbGl0ZTMuYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9zcWxpdGUvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYwotQEAgLTEzOTM3LDcgKzEzOTM3 LDggQEAgdHlwZWRlZiBJTlQxNl9UWVBFIExvZ0VzdDsKLSAjIGlmIGRlZmluZWQoaTM4NikgICAg IHx8IGRlZmluZWQoX19pMzg2X18pICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCi0gICAg ICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01f WDY0KSAgfHwgICAgXAotICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9BUk0p ICAgICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKLS0gICAgIGRlZmluZWQoX19hcm1fXykg IHx8IGRlZmluZWQoX01fQVJNNjQpCi0rICAgICBkZWZpbmVkKF9fYXJtX18pICB8fCBkZWZpbmVk KF9NX0FSTTY0KSAgIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgXAotKyAgICAgKF9fQllU RV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKQotICMgICBkZWZpbmUgU1FMSVRF X0JZVEVPUkRFUiAgICAxMjM0Ci0gIyBlbGlmIGRlZmluZWQoc3BhcmMpICAgIHx8IGRlZmluZWQo X19wcGNfXykKLSAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMyMQotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL3NyYy9z cWxpdGVJbnQuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9zcWxpdGUvc3JjL3NyYy9zcWxpdGVJbnQuaAotQEAgLTgzMyw3ICs4MzMsOCBAQCB0eXBl ZGVmIElOVDE2X1RZUEUgTG9nRXN0OwotICMgaWYgZGVmaW5lZChpMzg2KSAgICAgfHwgZGVmaW5l ZChfX2kzODZfXykgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwKLSAgICAgIGRlZmluZWQo X194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpICB8fCAg ICBcCi0gICAgICBkZWZpbmVkKF9NX0FNRDY0KSB8fCBkZWZpbmVkKF9NX0FSTSkgICAgIHx8IGRl ZmluZWQoX194ODYpICAgfHwgICAgXAotLSAgICAgZGVmaW5lZChfX2FybV9fKSAgfHwgZGVmaW5l ZChfTV9BUk02NCkKLSsgICAgIGRlZmluZWQoX19hcm1fXykgIHx8IGRlZmluZWQoX01fQVJNNjQp ICAgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiBcCi0rICAgICAoX19CWVRFX09SREVSX18g PT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCi0gIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVS ICAgIDEyMzQKLSAjIGVsaWYgZGVmaW5lZChzcGFyYykgICAgfHwgZGVmaW5lZChfX3BwY19fKQot ICMgICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICA0MzIxCi0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw dHVyZS9kaWZmZXJfYmxvY2suY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2RpZmZlcl9ibG9j ay5jYwotQEAgLTMwLDExICszMCw3IEBAIGJvb2wgVmVjdG9yRGlmZmVyZW5jZShjb25zdCB1aW50 OF90KiBpbWFnZTEsIGNvbnN0IHVpbnQ4X3QqIGltYWdlMikgewotICAgc3RhdGljIGJvb2wgKCpk aWZmX3Byb2MpKGNvbnN0IHVpbnQ4X3QqLCBjb25zdCB1aW50OF90KikgPSBudWxscHRyOwotIAot ICAgaWYgKCFkaWZmX3Byb2MpIHsKLS0jaWYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZ KSB8fCBkZWZpbmVkKFdFQlJUQ19BUkNIX01JUFNfRkFNSUxZKQotLSAgICAvLyBGb3IgQVJNIGFu ZCBNSVBTIHByb2Nlc3NvcnMsIGFsd2F5cyB1c2UgQyB2ZXJzaW9uLgotLSAgICAvLyBUT0RPKGhj bGFtKTogSW1wbGVtZW50IGEgTkVPTiB2ZXJzaW9uLgotLSAgICBkaWZmX3Byb2MgPSAmVmVjdG9y RGlmZmVyZW5jZV9DOwotLSNlbHNlCi0rI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfWDg2X0ZBTUlM WSkKLSAgICAgYm9vbCBoYXZlX3NzZTIgPSBXZWJSdGNfR2V0Q1BVSW5mbyhrU1NFMikgIT0gMDsK LSAgICAgLy8gRm9yIHg4NiBwcm9jZXNzb3JzLCBjaGVjayBpZiBTU0UyIGlzIHN1cHBvcnRlZC4K LSAgICAgaWYgKGhhdmVfc3NlMiAmJiBrQmxvY2tTaXplID09IDMyKSB7Ci1AQCAtNDQsNiArNDAs MTAgQEAgYm9vbCBWZWN0b3JEaWZmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGltYWdlMSwgY29uc3Qg dWludDhfdCogaW1hZ2UyKSB7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgZGlmZl9wcm9jID0gJlZl Y3RvckRpZmZlcmVuY2VfQzsKLSAgICAgfQotKyNlbHNlCi0rICAgIC8vIEZvciBvdGhlciBwcm9j ZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KLSsgICAgLy8gVE9ETyhoY2xhbSk6IEltcGxl bWVudCBhIE5FT04gdmVyc2lvbi4KLSsgICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVuY2Vf QzsKLSAjZW5kaWYKLSAgIH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9hcmNoLmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5 c3RlbS9hcmNoLmgKLUBAIC00Nyw2ICs0NywxOCBAQAotICNlbGlmIGRlZmluZWQoX19wbmFjbF9f KQotICNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUwotICNkZWZpbmUgV0VCUlRDX0FSQ0hfTElU VExFX0VORElBTgotKyNlbGlmIGRlZmluZWQoX19QUENfXykKLSsjZGVmaW5lIFdFQlJUQ19BUkNI X1BQQ19GQU1JTFkKLSsjaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFO X18KLSsjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLSsjZWxzZQotKyNkZWZpbmUg V0VCUlRDX0FSQ0hfQklHX0VORElBTgotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9fTFA2NF9fKQot KyNkZWZpbmUgV0VCUlRDX0FSQ0hfNjRfQklUUwotKyNlbHNlCi0rI2RlZmluZSBXRUJSVENfQVJD SF8zMl9CSVRTCi0rI2VuZGlmCi0gI2Vsc2UKLSAjZXJyb3IgUGxlYXNlIGFkZCBzdXBwb3J0IGZv ciB5b3VyIGFyY2hpdGVjdHVyZSBpbiB0eXBlZGVmcy5oCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3Y4L0JVSUxELmduCi1AQCAtNTQ0LDYgKzU0NCwxMiBAQCBjb25m aWcoInRvb2xjaGFpbiIpIHsKLSAgICAgfQotICAgICBpZiAoaG9zdF9ieXRlb3JkZXIgPT0gImxp dHRsZSIpIHsKLSAgICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19MRSIgXQot KyAgICAgICAgY2ZsYWdzICs9IFsKLSsgICAgICAgICMgRW5hYmxlIHVzYWdlIG9mIEFsdGlWZWMs IFZTWCwgYW5kIG90aGVyIFBPV0VSOCBhbmQgaGlnaGVyIGZlYXR1cmVzCi0rICAgICAgICAiLW1j cHU9cG93ZXI4IiwKLSsgICAgICAgICItbWFsdGl2ZWMiLAotKyAgICAgICAgIi1tdnN4IiwKLSsg ICAgICBdCi0gICAgIH0gZWxzZSBpZiAoaG9zdF9ieXRlb3JkZXIgPT0gImJpZyIpIHsKLSAgICAg ICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19CRSIgXQotICAgICAgIGlmIChjdXJy ZW50X29zID09ICJhaXgiKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3Y4L3Rlc3QvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v djgvdGVzdC9CVUlMRC5nbgotQEAgLTMxLDcgKzMxLDcgQEAgZ3JvdXAoImduX2FsbCIpIHsKLSAg ICAgZGVwcyArPSBbCi0gICAgICAgImNjdGVzdDpjY3Rlc3QiLAotICAgICAgICJjY3Rlc3Q6Z2Vu ZXJhdGUtYnl0ZWNvZGUtZXhwZWN0YXRpb25zIiwKLS0gICAgICAidW5pdHRlc3RzOnVuaXR0ZXN0 cyIsCi0rICAgICAgIyJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKLSAgICAgXQotICAgfQotIH0KLUBA IC04MCw5ICs4MCw5IEBAIGdyb3VwKCJ2OF9ib3RfZGVmYXVsdCIpIHsKLSAgICAgIm1qc3VuaXQ6 djhfbWpzdW5pdCIsCi0gICAgICJta2dyb2tkdW1wOm1rZ3Jva2R1bXAiLAotICAgICAicHJlcGFy c2VyOnY4X3ByZXBhcnNlciIsCi0tICAgICJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKLSsgICAgIyJ1 bml0dGVzdHM6dW5pdHRlc3RzIiwKLSAgICAgIndhc20tanM6djhfd2FzbV9qcyIsCi0tICAgICJ3 YXNtLXNwZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKLSsgICAgIyJ3YXNtLXNwZWMtdGVz dHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKLSAgICAgIndlYmtpdDp2OF93ZWJraXQiLAotICAgXQot IH0KLUBAIC0xMDAsOSArMTAwLDkgQEAgZ3JvdXAoInY4X2RlZmF1bHQiKSB7Ci0gICAgICJtanN1 bml0OnY4X21qc3VuaXQiLAotICAgICAibWtncm9rZHVtcDpta2dyb2tkdW1wIiwKLSAgICAgInBy ZXBhcnNlcjp2OF9wcmVwYXJzZXIiLAotLSAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0tICAg ICJ3YXNtLWpzOnY4X3dhc21fanMiLAotLSAgICAid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3Bl Y190ZXN0cyIsCi0rICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0rICAgICMid2FzbS1qczp2 OF93YXNtX2pzIiwKLSsgICAgIyJ3YXNtLXNwZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwK LSAgIF0KLSB9Ci0gCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTEtY2hyb21p dW0tcHBjNjQtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MS1jaHJvbWl1bS1w cGM2NC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjAxNGQ4YjU5 OC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkxLWNocm9taXVtLXBw YzY0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotVGhpcyBpbmNs dWRlcyBhZGRpdGlvbmFsIGJ1aWxkIGZpeGVzIGZvciB0aGUgbXVzbCBsaWJjLgotCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNj b21wX21hY3Jvcy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi1AQCAtMTEsMTIgKzExLDE0IEBACi0g Ly8gQWxsIHg4Nl82NCBidWlsZHMgdXNlIGEgbmV3IGVub3VnaCBiaW9uaWMgdG8gaGF2ZSBzeXMv dXNlci5oLgotICNpZiAhZGVmaW5lZChfX0JJT05JQ19fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p Ci0gI2lmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9ub25zZmlfXykKLSsjaWYgIWRlZmluZWQo X19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPHN5cy91c2Vy Lmg+Ci0gI2VuZGlmCi0rI2VuZGlmCi0gI2lmIGRlZmluZWQoX19taXBzX18pCi0gLy8gc3lzL3Vz ZXIuaCBpbiBlZ2xpYmMgbWlzc2VzIHNpemVfdCBkZWZpbml0aW9uCi0gI2luY2x1ZGUgPHN0ZGRl Zi5oPgotLSNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjZWxpZiBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pICYmIGRlZmluZWQoX19HTElCQ19fKQotIC8vIE1hbnVhbGx5IGRlZmluZSBncmVn X3Qgb24gcHBjNjQKLSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7Ci0gI2VuZGlm Ci1AQCAtMzYxLDExICszNjMsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVj dDsKLSAjZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0Ci0gI2VuZGlmCi0gCi0t I2RlZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKF9jdHgpLT51Y19tY29udGV4dC5yZWdz LT5ncHJbX3JlZ10pCi0rI2RlZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKChzdHJ1Y3Qg cHRfcmVncyAqKShfY3R4KS0+dWNfbWNvbnRleHQucmVncyktPmdwcltfcmVnXSkKLSAKLSAjZGVm aW5lIFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCi0gI2RlZmluZSBT RUNDT01QX1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKLS0jZGVmaW5lIFNFQ0NP TVBfSVAoX2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKLSsjZGVmaW5lIFNFQ0NP TVBfSVAoX2N0eCkgKChzdHJ1Y3QgcHRfcmVncyAqKShfY3R4KS0+dWNfbWNvbnRleHQucmVncykt Pm5pcAotICNkZWZpbmUgU0VDQ09NUF9QQVJNMShfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQot ICNkZWZpbmUgU0VDQ09NUF9QQVJNMihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA0KQotICNkZWZp bmUgU0VDQ09NUF9QQVJNMyhfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA1KQotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2Nh bGwuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCi1AQCAtNDk3LDkgKzQ5Nyw5IEBAIHZvaWQgU3lzY2Fs bDo6UHV0VmFsdWVJblVjb250ZXh0KGludHB0cl90IHJldF92YWwsIHVjb250ZXh0X3QqIGN0eCkg ewotICAgLy8gU2FtZSBhcyBNSVBTLCBuZWVkIHRvIGludmVydCByZXQgYW5kIHNldCBlcnJvciBy ZWdpc3RlciAoY3IwLlNPKQotICAgaWYgKHJldF92YWwgPD0gLTEgJiYgcmV0X3ZhbCA+PSAtNDA5 NSkgewotICAgICByZXRfdmFsID0gLXJldF92YWw7Ci0tICAgIGN0eC0+dWNfbWNvbnRleHQucmVn cy0+Y2NyIHw9ICgxIDw8IDI4KTsKLSsgICAgKChzdHJ1Y3QgcHRfcmVncyAqKWN0eC0+dWNfbWNv bnRleHQucmVncyktPmNjciB8PSAoMSA8PCAyOCk7Ci0gICB9IGVsc2UgewotLSAgICBjdHgtPnVj X21jb250ZXh0LnJlZ3MtPmNjciAmPSB+KDEgPDwgMjgpOwotKyAgICAoKHN0cnVjdCBwdF9yZWdz ICopY3R4LT51Y19tY29udGV4dC5yZWdzKS0+Y2NyICY9IH4oMSA8PCAyOCk7Ci0gICB9Ci0gI2Vu ZGlmCi0gICBTRUNDT01QX1JFU1VMVChjdHgpID0gc3RhdGljX2Nhc3Q8Z3JlZ190PihyZXRfdmFs KTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYWJz ZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz bC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYwotQEAgLTIwLDcgKzIwLDcgQEAK LSAjaW5jbHVkZSA8aW50cmluLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19wb3dlcnBj X18pIHx8IGRlZmluZWQoX19wcGNfXykKLSsjaWYgKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRl ZmluZWQoX19wcGNfXykpICYmIGRlZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxzeXMvcGxh dGZvcm0vcHBjLmg+Ci0gI2VuZGlmCi0gCi1AQCAtNTMsNyArNTMsNyBAQCBkb3VibGUgVW5zY2Fs ZWRDeWNsZUNsb2NrOjpGcmVxdWVuY3koKSB7Ci0gICByZXR1cm4gYmFzZV9pbnRlcm5hbDo6Tm9t aW5hbENQVUZyZXF1ZW5jeSgpOwotIH0KLSAKLS0jZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8 fCBkZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmlu ZWQoX19wcGNfXykpICYmIGRlZmluZWQoX19HTElCQ19fKQotIAotIGludDY0X3QgVW5zY2FsZWRD eWNsZUNsb2NrOjpOb3coKSB7Ci0gICByZXR1cm4gX19wcGNfZ2V0X3RpbWViYXNlKCk7Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAv YWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu dGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCi1AQCAtNDYsNyArNDYsNyBAQAotIAotIC8vIFRo ZSBmb2xsb3dpbmcgcGxhdGZvcm1zIGhhdmUgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBoYXJkd2Fy ZSBjb3VudGVyLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKLS0gIGRlZmluZWQoX19wb3dlcnBjX18pIHx8 IGRlZmluZWQoX19wcGNfXykgfHwgXAotKyAgKChkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZp bmVkKF9fcHBjX18pKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykpIHx8IFwKLSAgIGRlZmluZWQoX01f SVg4NikgfHwgZGVmaW5lZChfTV9YNjQpCi0gI2RlZmluZSBBQlNMX0hBVkVfVU5TQ0FMRURfQ1lD TEVDTE9DS19JTVBMRU1FTlRBVElPTiAxCi0gI2Vsc2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLUBAIC0yNzMsNiAr MjczLDkgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBv dXQpIGNvbnN0IHsKLSAKLSAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gCi0rI2luY2x1 ZGUgPGFzbS9lbGYuaD4KLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKwotIHVpbnRwdHJfdCBU aHJlYWRJbmZvOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7Ci0gICAgIHJldHVybiBt Y29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0gfQotQEAgLTI5MCw5ICsyOTMsOSBAQCB2b2lkIFRo cmVhZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgewotICAg ICBvdXQtPmN0ciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKLSAgICAgCi0gICAgIGZvciAo aW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0t ICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tpXTsK LSsgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSAoKHVpbnQ2NF90ICopJm1jb250 ZXh0LmZwX3JlZ3MpW2ldOwotIAotLSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSBtY29udGV4 dC5mcF9yZWdzW05GUFJFRy0xXTsKLSsgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gKCh1aW50 NjRfdCAqKSZtY29udGV4dC5mcF9yZWdzKVtFTEZfTkZQUkVHLTFdOwotIAotICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQotICAgICAg ICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0gXAotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCi1A QCAtMjU3LDYgKzI1Nyw5IEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJh d0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpIHsKLSAKLSAjZWxpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gCi0rI2luY2x1ZGUgPGFzbS9lbGYuaD4KLSsjaW5jbHVkZSA8 YXNtL3B0cmFjZS5oPgotKwotIHVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2lu dGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7Ci0gICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQu Z3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF07Ci0gfQotQEAgLTI4MCw5ICsyODMsOSBA QCB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQs IGNvbnN0IHVjb250ZXh0X3QqIHVjLAotICAgICBvdXQtPmN0ciA9IHVjLT51Y19tY29udGV4dC5n cF9yZWdzW1BUX0NUUl07Ci0gICAgIAotICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FU SU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQotLSAgICAgICAgb3V0LT5mbG9hdF9zYXZl LmZwcmVnc1tpXSA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW2ldOwotKyAgICAgICAgb3V0LT5m bG9hdF9zYXZlLmZwcmVnc1tpXSA9ICgodWludDY0X3QgKikmdWMtPnVjX21jb250ZXh0LmZwX3Jl Z3MpW2ldOwotIAotLSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSB1Yy0+dWNfbWNvbnRleHQu ZnBfcmVnc1tORlBSRUctMV07Ci0rICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9ICgodWludDY0 X3QgKikmdWMtPnVjX21jb250ZXh0LmZwX3JlZ3MpW0VMRl9ORlBSRUctMV07Ci0gCi0gICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCi0g ICAgICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPQotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi1AQCAtMTA1LDYgKzEwNSwx MSBAQAotICNkZWZpbmUgUFJfU0VUX1BUUkFDRVIgMHg1OTYxNmQ2MQotICNlbmRpZgotIAotKy8q IG11c2wgaGFjaywgY2FuJ3QgaW5jbHVkZSBhc20vcHRyYWNlLmggYXMgdGhhdCBjYXVzZXMgY29u ZmxpY3RzICovCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgIWRlZmluZWQoUFRfTklQ KQotKyNkZWZpbmUgUFRfTklQIDMyCi0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIGdvb2dsZV9icmVh a3BhZCB7Ci0gCi0gbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv MDA5Mi1jaHJvbWl1bS1wcGM2NC1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1j aHJvbWl1bS1wcGM2NC1iZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U4 MzExYzliYTIuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1jaHJv bWl1bS1wcGM2NC1iZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5NzAgKzAsMCBAQAotVGhp cyBhZGRzIGJpZyBlbmRpYW4gc3VwcG9ydC9maXhlcyBpbiBhZGRpdGlvbiB0byB0aGUgYmFzZSBw cGM2NGxlIHBhdGNoLgotCi1QaW5nIHE2NiBpZiB5b3UncmUgdXBkYXRpbmcgcXQ1IGFuZCB0aGUg cGF0Y2ggZG9lcyBub3QgYXBwbHkgYW55bW9yZS4KLQotU291cmNlOiBodHRwczovL3dpa2kucmFw dG9yY3MuY29tL3cvaW5kZXgucGhwP3RpdGxlPVBvcnRpbmcvQ2hyb21pdW0vQkUKLQotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25f YWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvYy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9h bGxvYy5jYwotQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgc2l6ZV90IFBhcnRpdGlvblB1cmdl UGFnZShpbnRlcm5hbDo6UGFydGl0aW9uUGFnZSogcGFnZSwgYm9vbCBkaXNjYXJkKSB7Ci0gI2Vu ZGlmCi0gICAgICAgfQotICAgICAgIC8vIFRlcm1pbmF0ZSB0aGUgZnJlZWxpc3QgY2hhaW4uCi0t ICAgICAgKmVudHJ5X3B0ciA9IG51bGxwdHI7Ci0rICAgICAgKmVudHJ5X3B0ciA9IGludGVybmFs OjpQYXJ0aXRpb25GcmVlbGlzdEVudHJ5OjpUcmFuc2Zvcm0obnVsbHB0cik7Ci0gICAgICAgLy8g VGhlIGZyZWVsaXN0IGhlYWQgaXMgc3RvcmVkIHVubWFza2VkLgotICAgICAgIHBhZ2UtPmZyZWVs aXN0X2hlYWQgPQotICAgICAgICAgICBpbnRlcm5hbDo6UGFydGl0aW9uRnJlZWxpc3RFbnRyeTo6 VHJhbnNmb3JtKHBhZ2UtPmZyZWVsaXN0X2hlYWQpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9iYXNlL2kxOG4vaWN1X3V0aWwuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vYmFzZS9pMThuL2ljdV91dGlsLmNjCi1AQCAtNzUsNyArNzUsMTEg QEAgd2NoYXJfdCBnX2RlYnVnX2ljdV9wZl9maWxlbmFtZVtfTUFYX1BBVEhdOwotIC8vIE5vIG5l ZWQgdG8gY2hhbmdlIHRoZSBmaWxlbmFtZSBpbiBtdWx0aXBsZSBwbGFjZXMgKGd5cCBmaWxlcywg d2luZG93cwotIC8vIGJ1aWxkIHBrZyBjb25maWd1cmF0aW9ucywgZXRjKS4gJ2wnIHN0YW5kcyBm b3IgTGl0dGxlIEVuZGlhbi4KLSAvLyBUaGlzIHZhcmlhYmxlIGlzIGV4cG9ydGVkIHRocm91Z2gg dGhlIGhlYWRlciBmaWxlLgotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0g Y29uc3QgY2hhciBrSWN1RGF0YUZpbGVOYW1lW10gPSAiaWN1ZHRsLmRhdCI7Ci0rI2Vsc2UKLStj b25zdCBjaGFyIGtJY3VEYXRhRmlsZU5hbWVbXSA9ICJpY3VkdGIuZGF0IjsKLSsjZW5kaWYKLSAj aWYgZGVmaW5lZChPU19BTkRST0lEKQotIGNvbnN0IGNoYXIga0FuZHJvaWRBc3NldHNJY3VEYXRh RmlsZU5hbWVbXSA9ICJhc3NldHMvaWN1ZHRsLmRhdCI7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvbWVtb3J5L3NoYXJlZF9tZW1vcnlfbWFwcGlu Z191bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNl L21lbW9yeS9zaGFyZWRfbWVtb3J5X21hcHBpbmdfdW5pdHRlc3QuY2MKLUBAIC0xMiw2ICsxMiw3 IEBACi0gI2luY2x1ZGUgImJhc2UvY29udGFpbmVycy9zcGFuLmgiCi0gI2luY2x1ZGUgImJhc2Uv bWVtb3J5L3JlYWRfb25seV9zaGFyZWRfbWVtb3J5X3JlZ2lvbi5oIgotICNpbmNsdWRlICJ0ZXN0 aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNfYnl0 ZW9yZGVyLmgiCi0gCi0gbmFtZXNwYWNlIGJhc2UgewotIAotQEAgLTY5LDggKzcwLDggQEAgVEVT VF9GKFNoYXJlZE1lbW9yeU1hcHBpbmdUZXN0LCBTcGFuV2l0aEF1dG9EZWR1Y2VkRWxlbWVudENv dW50KSB7Ci0gCi0gICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdyaXRlX3NwYW4uc2l6ZSgpOyAr K2kpCi0gICAgIHdyaXRlX3NwYW5baV0gPSBpICsgMTsKLS0gIEVYUEVDVF9FUSgweDA0MDMwMjAx dSwgcmVhZF9zcGFuWzBdKTsKLS0gIEVYUEVDVF9FUSgweDA4MDcwNjA1dSwgcmVhZF9zcGFuWzFd KTsKLSsgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDAxMDIwMzA0dSksIHJlYWRfc3BhblswXSk7 Ci0rICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwNTA2MDcwOHUpLCByZWFkX3NwYW5bMV0pOwot IH0KLSAKLSBURVNUX0YoU2hhcmVkTWVtb3J5TWFwcGluZ1Rlc3QsIFNwYW5XaXRoRXhwbGljaXRF bGVtZW50Q291bnQpIHsKLUBAIC05NSwxMyArOTYsMTMgQEAgVEVTVF9GKFNoYXJlZE1lbW9yeU1h cHBpbmdUZXN0LCBTcGFuV2l0aEV4cGxpY2l0RWxlbWVudENvdW50KSB7Ci0gCi0gICBmb3IgKHNp emVfdCBpID0gMDsgaSA8IHdyaXRlX3NwYW4uc2l6ZSgpOyArK2kpCi0gICAgIHdyaXRlX3NwYW5b aV0gPSBpICsgMTsKLS0gIEVYUEVDVF9FUSgweDA0MDMwMjAxdSwgcmVhZF9zcGFuWzBdKTsKLS0g IEVYUEVDVF9FUSgweDA4MDcwNjA1dSwgcmVhZF9zcGFuWzFdKTsKLS0gIEVYUEVDVF9FUSgweDA0 MDMwMjAxdSwgcmVhZF9zcGFuXzJbMF0pOwotKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDEw MjAzMDR1KSwgcmVhZF9zcGFuWzBdKTsKLSsgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDA1MDYw NzA4dSksIHJlYWRfc3BhblsxXSk7Ci0rICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwMTAyMDMw NHUpLCByZWFkX3NwYW5fMlswXSk7Ci0gCi0gICBzdGQ6OmZpbGwod3JpdGVfc3Bhbl8yLmJlZ2lu KCksIHdyaXRlX3NwYW5fMi5lbmQoKSwgMCk7Ci0gICBFWFBFQ1RfRVEoMHUsIHJlYWRfc3Bhblsw XSk7Ci0tICBFWFBFQ1RfRVEoMHgwODA3MDYwNXUsIHJlYWRfc3BhblsxXSk7Ci0rICBFWFBFQ1Rf RVEoSG9zdFRvTmV0MzIoMHgwNTA2MDcwOHUpLCByZWFkX3NwYW5bMV0pOwotICAgRVhQRUNUX0VR KDB1LCByZWFkX3NwYW5fMlswXSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL21ldHJpY3MvYnVja2V0X3Jhbmdlc191bml0dGVzdC5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL21ldHJpY3MvYnVja2V0X3Jhbmdl c191bml0dGVzdC5jYwotQEAgLTcsNiArNyw3IEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAot ICNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSsjaW5jbHVk ZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCi0gCi0gbmFtZXNwYWNlIGJhc2UgewotIG5hbWVzcGFj ZSB7Ci1AQCAtNjQsMTMgKzY1LDIxIEBAIFRFU1QoQnVja2V0UmFuZ2VzVGVzdCwgQ2hlY2tzdW0p IHsKLSAgIHJhbmdlcy5zZXRfcmFuZ2UoMiwgMik7Ci0gCi0gICByYW5nZXMuUmVzZXRDaGVja3N1 bSgpOwotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICBFWFBFQ1RfRVEo Mjg5MjE3MjUzdSwgcmFuZ2VzLmNoZWNrc3VtKCkpOwotKyNlbHNlCi0rICBFWFBFQ1RfRVEoMjc2 NzIzMTU5NnUsIHJhbmdlcy5jaGVja3N1bSgpKTsKLSsjZW5kaWYKLSAKLSAgIHJhbmdlcy5zZXRf cmFuZ2UoMiwgMyk7Ci0gICBFWFBFQ1RfRkFMU0UocmFuZ2VzLkhhc1ZhbGlkQ2hlY2tzdW0oKSk7 Ci0gCi0gICByYW5nZXMuUmVzZXRDaGVja3N1bSgpOwotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJ VFRMRV9FTkRJQU4pCi0gICBFWFBFQ1RfRVEoMjg0MzgzNTc3NnUsIHJhbmdlcy5jaGVja3N1bSgp KTsKLSsjZWxzZQotKyAgRVhQRUNUX0VRKDM1NTYyMjM3Mzh1LCByYW5nZXMuY2hlY2tzdW0oKSk7 Ci0rI2VuZGlmCi0gICBFWFBFQ1RfVFJVRShyYW5nZXMuSGFzVmFsaWRDaGVja3N1bSgpKTsKLSB9 Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcGlja2xlLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcGlja2xlLmNjCi1A QCAtODIsNyArODIsMTIgQEAgaW5saW5lIGNvbnN0IGNoYXIqIFBpY2tsZUl0ZXJhdG9yOjpHZXRS ZWFkUG9pbnRlckFuZEFkdmFuY2UoCi0gfQotIAotIGJvb2wgUGlja2xlSXRlcmF0b3I6OlJlYWRC b29sKGJvb2wqIHJlc3VsdCkgewotLSAgcmV0dXJuIFJlYWRCdWlsdGluVHlwZShyZXN1bHQpOwot KyAgaW50IGludF9yZXN1bHQ7Ci0rICBpZiAoUmVhZEJ1aWx0aW5UeXBlKCZpbnRfcmVzdWx0KSkg ewotKyAgICAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oaW50X3Jlc3VsdCk7Ci0rICAgIHJl dHVybiB0cnVlOwotKyAgfSBlbHNlCi0rICAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0gYm9vbCBQ aWNrbGVJdGVyYXRvcjo6UmVhZEludChpbnQqIHJlc3VsdCkgewotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3NoYTEuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vYmFzZS9zaGExLmNjCi1AQCAtMTEwLDggKzExMCwxMCBAQCB2b2lkIFNl Y3VyZUhhc2hBbGdvcml0aG06OkZpbmFsKCkgewotICAgUGFkKCk7Ci0gICBQcm9jZXNzKCk7Ci0g Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSAgIGZvciAoYXV0byYgdCA6 IEgpCi0gICAgIHQgPSBCeXRlU3dhcCh0KTsKLSsjZW5kaWYKLSB9Ci0gCi0gdm9pZCBTZWN1cmVI YXNoQWxnb3JpdGhtOjpVcGRhdGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IG5ieXRlcykgewot QEAgLTE1Nyw4ICsxNTksMTAgQEAgdm9pZCBTZWN1cmVIYXNoQWxnb3JpdGhtOjpQcm9jZXNzKCkg ewotICAgLy8KLSAgIC8vIFcgYW5kIE0gYXJlIGluIGEgdW5pb24sIHNvIG5vIG5lZWQgdG8gbWVt Y3B5LgotICAgLy8gbWVtY3B5KFcsIE0sIHNpemVvZihNKSk7Ci0rI2lmIGRlZmluZWQoQVJDSF9D UFVfTElUVExFX0VORElBTikKLSAgIGZvciAodCA9IDA7IHQgPCAxNjsgKyt0KQotICAgICBXW3Rd ID0gQnl0ZVN3YXAoV1t0XSk7Ci0rI2VuZGlmCi0gCi0gICAvLyBiLgotICAgZm9yICh0ID0gMTY7 IHQgPCA4MDsgKyt0KQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNl L3N0cmluZ3Mvc3RyaW5nX251bWJlcl9jb252ZXJzaW9uc191bml0dGVzdC5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3N0cmluZ3Mvc3RyaW5nX251bWJlcl9j b252ZXJzaW9uc191bml0dGVzdC5jYwotQEAgLTgyOSwxMiArODI5LDIxIEBAIFRFU1QoU3RyaW5n TnVtYmVyQ29udmVyc2lvbnNUZXN0LCBEb3VibGVUb1N0cmluZykgewotICAgfQotIAotICAgLy8g VGhlIGZvbGxvd2luZyB0d28gdmFsdWVzIHdlcmUgc2VlbiBpbiBjcmFzaGVzIGluIHRoZSB3aWxk LgotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICBjb25zdCBjaGFyIGlu cHV0X2J5dGVzWzhdID0gezAsIDAsIDAsIDAsICdceGVlJywgJ1x4NmQnLCAnXHg3MycsICdceDQy J307Ci0rI2Vsc2UKLSsgIGNvbnN0IGNoYXIgaW5wdXRfYnl0ZXNbOF0gPSB7J1x4NDInLCAnXHg3 MycsICdceDZkJywgJ1x4ZWUnLCAwLCAwLCAwLCAwfTsKLSsjZW5kaWYKLSAgIGRvdWJsZSBpbnB1 dCA9IDA7Ci0gICBtZW1jcHkoJmlucHV0LCBpbnB1dF9ieXRlcywgYmFzZTo6c2l6ZShpbnB1dF9i eXRlcykpOwotICAgRVhQRUNUX0VRKCIxMzM1MTc5MDgzNzc2IiwgTnVtYmVyVG9TdHJpbmcoaW5w dXQpKTsKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgY29uc3QgY2hh ciBpbnB1dF9ieXRlczJbOF0gPQotICAgICAgIHswLCAwLCAwLCAnXHhhMCcsICdceGRhJywgJ1x4 NmMnLCAnXHg3MycsICdceDQyJ307Ci0rI2Vsc2UKLSsgIGNvbnN0IGNoYXIgaW5wdXRfYnl0ZXMy WzhdID0KLSsgICAgICB7J1x4NDInLCAnXHg3MycsICdceDZjJywgJ1x4ZGEnLCAnXHhhMCcsIDAs IDAsIDB9OwotKyNlbmRpZgotICAgaW5wdXQgPSAwOwotICAgbWVtY3B5KCZpbnB1dCwgaW5wdXRf Ynl0ZXMyLCBiYXNlOjpzaXplKGlucHV0X2J5dGVzMikpOwotICAgRVhQRUNUX0VRKCIxMzM0ODkw MzMyMTYwIiwgTnVtYmVyVG9TdHJpbmcoaW5wdXQpKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vYmFzZS90aGlyZF9wYXJ0eS9kbWdfZnAvZHRvYS5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3RoaXJkX3BhcnR5L2RtZ19mcC9kdG9h LmNjCi1AQCAtMTg2LDcgKzE4NiwxMSBAQAotICAqCXVzZWQgZm9yIGlucHV0IG1vcmUgdGhhbiBT VFJUT0RfRElHTElNIGRpZ2l0cyBsb25nIChkZWZhdWx0IDQwKS4KLSAgKi8KLSAKLSsjaWZkZWYg X19CSUdfRU5ESUFOX18KLSsjZGVmaW5lIElFRUVfTUM2OGsKLSsjZWxzZQotICNkZWZpbmUgSUVF RV84MDg3Ci0rI2VuZGlmCi0gI2RlZmluZSBOT19IRVhfRlAKLSAKLSAjaWZuZGVmIExvbmcKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy9zYWZlX2Jyb3dz aW5nL2RiL3V0aWxfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3V0aWxfdW5pdHRlc3QuY2MKLUBAIC0x Miw2ICsxMiwxMiBAQAotICNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl c3QuaCIKLSAjaW5jbHVkZSAidXJsL2d1cmwuaCIKLSAKLSsjaWYgZGVmaW5lZChPU19XSU4pCi0r I2luY2x1ZGUgPHdpbnNvY2syLmg+Ci0rI2VsaWYgZGVmaW5lZChPU19QT1NJWCkKLSsjaW5jbHVk ZSA8YXJwYS9pbmV0Lmg+Ci0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIHNhZmVfYnJvd3Npbmcgewot IAotIFRFU1QoU2FmZUJyb3dzaW5nRGJVdGlsVGVzdCwgVXJsVG9GdWxsSGFzaGVzKSB7Ci1AQCAt ODMsNyArODksNyBAQCBURVNUKFNhZmVCcm93c2luZ0RiVXRpbFRlc3QsIFN0cmluZ1RvU0JGdWxs SGFzaEFuZFNCRnVsbEhhc2hUb1N0cmluZykgewotICAgLy8gMzEgY2hhcnMgcGx1cyB0aGUgbGFz dCBcMCBhcyBmdWxsX2hhc2guCi0gICBjb25zdCBzdGQ6OnN0cmluZyBoYXNoX2luID0gIjEyMzQ1 Njc4OTAyMjM0NTY3ODkwMzIzNDU2Nzg5MDEyIjsKLSAgIFNCRnVsbEhhc2ggaGFzaF9vdXQgPSBT dHJpbmdUb1NCRnVsbEhhc2goaGFzaF9pbik7Ci0tICBFWFBFQ1RfRVEoMHgzNDMzMzIzMVUsIGhh c2hfb3V0LnByZWZpeCk7Ci0rICBFWFBFQ1RfRVEoaHRvbmwoMHgzMTMyMzMzNFUpLCBoYXNoX291 dC5wcmVmaXgpOwotICAgRVhQRUNUX0VRKDAsIG1lbWNtcChoYXNoX2luLmRhdGEoKSwgaGFzaF9v dXQuZnVsbF9oYXNoLCBzaXplb2YoU0JGdWxsSGFzaCkpKTsKLSAKLSAgIHN0ZDo6c3RyaW5nIGhh c2hfZmluYWwgPSBTQkZ1bGxIYXNoVG9TdHJpbmcoaGFzaF9vdXQpOwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdjRfcmlj ZS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3Nh ZmVfYnJvd3NpbmcvZGIvdjRfcmljZS5jYwotQEAgLTgsNiArOCw3IEBACi0gI2luY2x1ZGUgImJh c2UvbG9nZ2luZy5oIgotICNpbmNsdWRlICJiYXNlL251bWVyaWNzL3NhZmVfbWF0aC5oIgotICNp bmNsdWRlICJiYXNlL3N0cmluZ3Mvc3RyaW5ncHJpbnRmLmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lz X2J5dGVvcmRlci5oIgotICNpbmNsdWRlICJidWlsZC9idWlsZF9jb25maWcuaCIKLSAjaW5jbHVk ZSAiY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3JpY2UuaCIKLSAKLUBAIC0yMSwxMCAr MjIsNiBAQCB1c2luZyA6Omdvb2dsZTo6cHJvdG9idWY6OlJlcGVhdGVkRmllbGQ7Ci0gdXNpbmcg Ojpnb29nbGU6OnByb3RvYnVmOjppbnQzMjsKLSB1c2luZyA6Omdvb2dsZTo6cHJvdG9idWY6Omlu dDY0OwotIAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKSB8fCAoQVJDSF9D UFVfTElUVExFX0VORElBTiAhPSAxKQotLSNlcnJvciBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIGxp dHRsZS1lbmRpYW5uZXNzLgotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzYWZlX2Jyb3dzaW5nIHsK LSAKLSBuYW1lc3BhY2UgewotQEAgLTExNyw3ICsxMTQsNyBAQCBWNERlY29kZVJlc3VsdCBWNFJp Y2VEZWNvZGVyOjpEZWNvZGVQcmVmaXhlcyhjb25zdCBpbnQ2NCBmaXJzdF92YWx1ZSwKLSAgIG91 dC0+cmVzZXJ2ZSgobnVtX2VudHJpZXMgKyAxKSk7Ci0gCi0gICBiYXNlOjpDaGVja2VkTnVtZXJp Yzx1aW50MzJfdD4gbGFzdF92YWx1ZShmaXJzdF92YWx1ZSk7Ci0tICBvdXQtPnB1c2hfYmFjayho dG9ubChsYXN0X3ZhbHVlLlZhbHVlT3JEaWUoKSkpOwotKyAgb3V0LT5wdXNoX2JhY2soYmFzZTo6 Qnl0ZVN3YXAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxhc3RfdmFsdWUuVmFsdWVPckRpZSgpKSkp OwotIAotICAgaWYgKG51bV9lbnRyaWVzID4gMCkgewotICAgICBWNFJpY2VEZWNvZGVyIGRlY29k ZXIocmljZV9wYXJhbWV0ZXIsIG51bV9lbnRyaWVzLCBlbmNvZGVkX2RhdGEpOwotQEAgLTEzNiw3 ICsxMzMsNyBAQCBWNERlY29kZVJlc3VsdCBWNFJpY2VEZWNvZGVyOjpEZWNvZGVQcmVmaXhlcyhj b25zdCBpbnQ2NCBmaXJzdF92YWx1ZSwKLSAKLSAgICAgICAvLyBUaGlzIGZsaXBwaW5nIGlzIGRv bmUgc28gdGhhdCB0aGUgZGVjb2RlZCB1aW50MzIgaXMgaW50ZXJwcmV0ZWQKLSAgICAgICAvLyBj b3JyZWNseSBhcyBhIHN0cmluZyBvZiA0IGJ5dGVzLgotLSAgICAgIG91dC0+cHVzaF9iYWNrKGh0 b25sKGxhc3RfdmFsdWUuVmFsdWVPckRpZSgpKSk7Ci0rICAgICAgb3V0LT5wdXNoX2JhY2soYmFz ZTo6Qnl0ZVN3YXAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxhc3RfdmFsdWUuVmFsdWVPckRpZSgp KSkpOwotICAgICB9Ci0gICB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9kYi92NF9yaWNlX3VuaXR0ZXN0LmNjCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2FmZV9icm93c2lu Zy9kYi92NF9yaWNlX3VuaXR0ZXN0LmNjCi1AQCAtNiw2ICs2LDEyIEBACi0gI2luY2x1ZGUgImJh c2UvbG9nZ2luZy5oIgotICNpbmNsdWRlICJ0ZXN0aW5nL3BsYXRmb3JtX3Rlc3QuaCIKLSAKLSsj aWYgZGVmaW5lZChPU19XSU4pCi0rI2luY2x1ZGUgPHdpbnNvY2syLmg+Ci0rI2VsaWYgZGVmaW5l ZChPU19QT1NJWCkKLSsjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0rI2VuZGlmCi0rCi0gdXNpbmcg Ojpnb29nbGU6OnByb3RvYnVmOjpSZXBlYXRlZEZpZWxkOwotIHVzaW5nIDo6Z29vZ2xlOjpwcm90 b2J1Zjo6aW50MzI7Ci0gCi1AQCAtMjQ3LDcgKzI1Myw3IEBAIFRFU1RfRihWNFJpY2VUZXN0LCBU ZXN0RGVjb2RlclByZWZpeGVzV2l0aE9uZVZhbHVlKSB7Ci0gICBFWFBFQ1RfRVEoREVDT0RFX1NV Q0NFU1MsCi0gICAgICAgICAgICAgVjRSaWNlRGVjb2Rlcjo6RGVjb2RlUHJlZml4ZXMoMHg2OUY2 N0Y1MXUsIDIsIDAsICIiLCAmb3V0KSk7Ci0gICBFWFBFQ1RfRVEoMXUsIG91dC5zaXplKCkpOwot LSAgRVhQRUNUX0VRKDB4NjlGNjdGNTF1LCBvdXRbMF0pOwotKyAgRVhQRUNUX0VRKGh0b25sKDB4 NTE3RkY2Njl1KSwgb3V0WzBdKTsKLSB9Ci0gCi0gVEVTVF9GKFY0UmljZVRlc3QsIFRlc3REZWNv ZGVyUHJlZml4ZXNXaXRoTXVsdGlwbGVWYWx1ZXMpIHsKLUBAIC0yNTYsNyArMjYyLDcgQEAgVEVT VF9GKFY0UmljZVRlc3QsIFRlc3REZWNvZGVyUHJlZml4ZXNXaXRoTXVsdGlwbGVWYWx1ZXMpIHsK LSAgICAgICAgICAgICBWNFJpY2VEZWNvZGVyOjpEZWNvZGVQcmVmaXhlcygKLSAgICAgICAgICAg ICAgICAgNSwgMjgsIDMsICJceGJmXHhhOFx4M2ZceGZiXHhmXHhmXHg1ZVx4MjdceGU2XHhjM1x4 MWRceGM2XHgzOCIsCi0gICAgICAgICAgICAgICAgICZvdXQpKTsKLS0gIHN0ZDo6dmVjdG9yPHVp bnQzMl90PiBleHBlY3RlZCA9IHs1LCAweGFkOTM0YzBjdSwgMHg2ZmY2N2Y1NnUsIDB4ODEzMTZm Y2V1fTsKLSsgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBleHBlY3RlZCA9IHtodG9ubCgweDA1MDAw MDAwKSwgaHRvbmwoMHgwYzRjOTNhZHUpLCBodG9ubCgweDU2N2ZmNjZmdSksIGh0b25sKDB4Y2U2 ZjMxODF1KX07Ci0gICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc2l6ZSgpLCBvdXQuc2l6ZSgpKTsKLSAg IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHBlY3RlZC5zaXplKCk7IGkrKykgewotICAgICBF WFBFQ1RfRVEoZXhwZWN0ZWRbaV0sIG91dFtpXSk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmNjCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmNjCi1A QCAtNjg2LDEwICs2ODYsNiBAQCBDaGFubmVsTGF5b3V0IENoYW5uZWxMYXlvdXRUb0Nocm9tZUNo YW5uZWxMYXlvdXQoaW50NjRfdCBsYXlvdXQsIGludCBjaGFubmVscykgewotICAgfQotIH0KLSAK LS0jaWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLS0jZXJyb3IgVGhlIGNvZGUg YmVsb3cgYXNzdW1lcyBsaXR0bGUtZW5kaWFubmVzcy4KLS0jZW5kaWYKLS0KLSBWaWRlb1BpeGVs Rm9ybWF0IEFWUGl4ZWxGb3JtYXRUb1ZpZGVvUGl4ZWxGb3JtYXQoQVZQaXhlbEZvcm1hdCBwaXhl bF9mb3JtYXQpIHsKLSAgIC8vIFRoZSBZVVZKIGFsdGVybmF0aXZlcyBhcmUgRkZtcGVnJ3MgKGRl cHJlY2F0ZWQsIGJ1dCBzdGlsbCBpbiB1c2UpIHdheSB0bwotICAgLy8gc3BlY2lmeSBhIHBpeGVs IGZvcm1hdCBhbmQgZnVsbCByYW5nZSBjb2xvciBjb21iaW5hdGlvbi4KLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZm9ybWF0cy9tcDQvYm94X2RlZmluaXRpb25z LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zvcm1hdHMv bXA0L2JveF9kZWZpbml0aW9ucy5jYwotQEAgLTExMDcsMTUgKzExMDcsMTQgQEAgYm9vbCBPcHVz U3BlY2lmaWNCb3g6OlBhcnNlKEJveFJlYWRlciogcmVhZGVyKSB7Ci0gICBSQ0hFQ0socmVhZGVy LT5SZWFkNCgmc2FtcGxlX3JhdGUpKTsKLSAgIFJDSEVDSyhyZWFkZXItPlJlYWQycygmZ2Fpbl9k YikpOwotIAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotLSNlcnJvciBU aGUgY29kZSBiZWxvdyBhc3N1bWVzIGxpdHRsZS1lbmRpYW5uZXNzLgotLSNlbmRpZgotLQotLSAg bWVtY3B5KCZleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0tJUF9TQU1QTEVTX09GRlNFVF0sICZj b2RlY19kZWxheV9pbl9mcmFtZXMsCi0tICAgICAgICAgc2l6ZW9mKGNvZGVjX2RlbGF5X2luX2Zy YW1lcykpOwotLSAgbWVtY3B5KCZleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0FNUExFX1JBVEVf T0ZGU0VUXSwgJnNhbXBsZV9yYXRlLAotLSAgICAgICAgIHNpemVvZihzYW1wbGVfcmF0ZSkpOwot LSAgbWVtY3B5KCZleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfR0FJTl9PRkZTRVRdLCAmZ2Fpbl9k Yiwgc2l6ZW9mKGdhaW5fZGIpKTsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TS0lQX1NB TVBMRVNfT0ZGU0VUXSA9IChjb2RlY19kZWxheV9pbl9mcmFtZXMgPj4gMCkgJiAweGZmOwotKyAg ZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NLSVBfU0FNUExFU19PRkZTRVQrMV0gPSAoY29kZWNf ZGVsYXlfaW5fZnJhbWVzID4+IDgpICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFU QV9TQU1QTEVfUkFURV9PRkZTRVRdID0gKHNhbXBsZV9yYXRlID4+IDApICYgMHhmZjsKLSsgIGV4 dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TQU1QTEVfUkFURV9PRkZTRVQrMV0gPSAoc2FtcGxlX3Jh dGUgPj4gOCkgJiAweGZmOwotKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NBTVBMRV9SQVRF X09GRlNFVCsyXSA9IChzYW1wbGVfcmF0ZSA+PiAxNikgJiAweGZmOwotKyAgZXh0cmFkYXRhW09Q VVNfRVhUUkFEQVRBX1NBTVBMRV9SQVRFX09GRlNFVCszXSA9IChzYW1wbGVfcmF0ZSA+PiAyNCkg JiAweGZmOwotKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX0dBSU5fT0ZGU0VUXSA9IChnYWlu X2RiID4+IDApICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9HQUlOX09GRlNF VCsxXSA9IChnYWluX2RiID4+IDgpICYgMHhmZjsKLSAKLSAgIGNoYW5uZWxfY291bnQgPSBleHRy YWRhdGFbT1BVU19FWFRSQURBVEFfQ0hBTk5FTFNfT0ZGU0VUXTsKLSAKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvcmVuZGVyZXJzL3BhaW50X2NhbnZhc192aWRl b19yZW5kZXJlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRp YS9yZW5kZXJlcnMvcGFpbnRfY2FudmFzX3ZpZGVvX3JlbmRlcmVyLmNjCi1AQCAtMzEsOCArMzEs NyBAQAotIAotIC8vIFNraWEgaW50ZXJuYWwgZm9ybWF0IGRlcGVuZHMgb24gYSBwbGF0Zm9ybS4g T24gQW5kcm9pZCBpdCBpcyBBQkdSLCBvbiBvdGhlcnMKLSAvLyBpdCBpcyBBUkdCLgotLSNpZiBT S19CMzJfU0hJRlQgPT0gMCAmJiBTS19HMzJfU0hJRlQgPT0gOCAmJiBTS19SMzJfU0hJRlQgPT0g MTYgJiYgXAotLSAgICBTS19BMzJfU0hJRlQgPT0gMjQKLSsjaWYgU0tfUE1DT0xPUl9CWVRFX09S REVSKEIsRyxSLEEpCi0gI2RlZmluZSBMSUJZVVZfSTQyMF9UT19BUkdCIGxpYnl1djo6STQyMFRv QVJHQgotICNkZWZpbmUgTElCWVVWX0k0MjJfVE9fQVJHQiBsaWJ5dXY6Okk0MjJUb0FSR0IKLSAj ZGVmaW5lIExJQllVVl9JNDQ0X1RPX0FSR0IgbGlieXV2OjpJNDQ0VG9BUkdCCi1AQCAtNDIsOCAr NDEsNyBAQAotICNkZWZpbmUgTElCWVVWX0kwMTBfVE9fQVJHQiBsaWJ5dXY6OkkwMTBUb0FSR0IK LSAjZGVmaW5lIExJQllVVl9IMDEwX1RPX0FSR0IgbGlieXV2OjpIMDEwVG9BUkdCCi0gI2RlZmlu ZSBMSUJZVVZfTlYxMl9UT19BUkdCIGxpYnl1djo6TlYxMlRvQVJHQgotLSNlbGlmIFNLX1IzMl9T SElGVCA9PSAwICYmIFNLX0czMl9TSElGVCA9PSA4ICYmIFNLX0IzMl9TSElGVCA9PSAxNiAmJiBc Ci0tICAgIFNLX0EzMl9TSElGVCA9PSAyNAotKyNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihS LEcsQixBKQotICNkZWZpbmUgTElCWVVWX0k0MjBfVE9fQVJHQiBsaWJ5dXY6Okk0MjBUb0FCR1IK LSAjZGVmaW5lIExJQllVVl9JNDIyX1RPX0FSR0IgbGlieXV2OjpJNDIyVG9BQkdSCi0gI2RlZmlu ZSBMSUJZVVZfSTQ0NF9UT19BUkdCIGxpYnl1djo6STQ0NFRvQUJHUgotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvY2VydC9jcmxfc2V0LmNjCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9jZXJ0L2NybF9zZXQuY2MKLUBAIC02LDYgKzYs NyBAQAotIAotICNpbmNsdWRlICJiYXNlL2Jhc2U2NC5oIgotICNpbmNsdWRlICJiYXNlL2pzb24v anNvbl9yZWFkZXIuaCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCi0gI2luY2x1 ZGUgImJhc2UvdGltZS90aW1lLmgiCi0gI2luY2x1ZGUgImJhc2UvdHJhY2VfZXZlbnQvdHJhY2Vf ZXZlbnQuaCIKLSAjaW5jbHVkZSAiYmFzZS92YWx1ZXMuaCIKLUBAIC00NCw5ICs0NSw5IEBAIGJh c2U6OkRpY3Rpb25hcnlWYWx1ZSogUmVhZEhlYWRlcihiYXNlOjpTdHJpbmdQaWVjZSogZGF0YSkg ewotICAgdWludDE2X3QgaGVhZGVyX2xlbjsKLSAgIGlmIChkYXRhLT5zaXplKCkgPCBzaXplb2Yo aGVhZGVyX2xlbikpCi0gICAgIHJldHVybiBudWxscHRyOwotLSAgLy8gQXNzdW1lcyBsaXR0bGUt ZW5kaWFuLgotICAgbWVtY3B5KCZoZWFkZXJfbGVuLCBkYXRhLT5kYXRhKCksIHNpemVvZihoZWFk ZXJfbGVuKSk7Ci0gICBkYXRhLT5yZW1vdmVfcHJlZml4KHNpemVvZihoZWFkZXJfbGVuKSk7Ci0r ICBoZWFkZXJfbGVuID0gYmFzZTo6Qnl0ZVN3YXBUb0xFMTYoaGVhZGVyX2xlbik7Ci0gCi0gICBp ZiAoZGF0YS0+c2l6ZSgpIDwgaGVhZGVyX2xlbikKLSAgICAgcmV0dXJuIG51bGxwdHI7Ci1AQCAt NzksOSArODAsOSBAQCBib29sIFJlYWRDUkwoYmFzZTo6U3RyaW5nUGllY2UqIGRhdGEsCi0gICB1 aW50MzJfdCBudW1fc2VyaWFsczsKLSAgIGlmIChkYXRhLT5zaXplKCkgPCBzaXplb2YobnVtX3Nl cmlhbHMpKQotICAgICByZXR1cm4gZmFsc2U7Ci0tICAvLyBBc3N1bWVzIGxpdHRsZSBlbmRpYW4u Ci0gICBtZW1jcHkoJm51bV9zZXJpYWxzLCBkYXRhLT5kYXRhKCksIHNpemVvZihudW1fc2VyaWFs cykpOwotICAgZGF0YS0+cmVtb3ZlX3ByZWZpeChzaXplb2YobnVtX3NlcmlhbHMpKTsKLSsgIG51 bV9zZXJpYWxzID0gYmFzZTo6Qnl0ZVN3YXBUb0xFMzIobnVtX3NlcmlhbHMpOwotIAotICAgaWYg KG51bV9zZXJpYWxzID4gMzIgKiAxMDI0ICogMTAyNCkgIC8vIFNhbml0eSBjaGVjay4KLSAgICAg cmV0dXJuIGZhbHNlOwotQEAgLTE5MiwxNSArMTkzLDYgQEAgQ1JMU2V0Ojp+Q1JMU2V0KCkgPSBk ZWZhdWx0OwotIC8vIHN0YXRpYwotIGJvb2wgQ1JMU2V0OjpQYXJzZShiYXNlOjpTdHJpbmdQaWVj ZSBkYXRhLCBzY29wZWRfcmVmcHRyPENSTFNldD4qIG91dF9jcmxfc2V0KSB7Ci0gICBUUkFDRV9F VkVOVDAoTmV0VHJhY2luZ0NhdGVnb3J5KCksICJDUkxTZXQ6OlBhcnNlIik7Ci0tLy8gT3RoZXIg cGFydHMgb2YgQ2hyb21lIGFzc3VtZSB0aGF0IHdlJ3JlIGxpdHRsZSBlbmRpYW4sIHNvIHdlIGRv bid0IGxvc2UKLS0vLyBhbnl0aGluZyBieSBkb2luZyB0aGlzLgotLSNpZiBkZWZpbmVkKF9fQllU RV9PUkRFUikKLS0gIC8vIExpbnV4IGNoZWNrCi0tICBzdGF0aWNfYXNzZXJ0KF9fQllURV9PUkRF UiA9PSBfX0xJVFRMRV9FTkRJQU4sICJhc3N1bWVzIGxpdHRsZSBlbmRpYW4iKTsKLS0jZWxpZiBk ZWZpbmVkKF9fQklHX0VORElBTl9fKQotLS8vIE1hYyBjaGVjawotLSNlcnJvciBhc3N1bWVzIGxp dHRsZSBlbmRpYW4KLS0jZW5kaWYKLSAKLSAgIHN0ZDo6dW5pcXVlX3B0cjxiYXNlOjpEaWN0aW9u YXJ5VmFsdWU+IGhlYWRlcl9kaWN0KFJlYWRIZWFkZXIoJmRhdGEpKTsKLSAgIGlmICghaGVhZGVy X2RpY3QuZ2V0KCkpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi1A QCAtMzc3LDYgKzM3Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7Ci0g Ci0gI2RlZmluZSBTRUNDT01QX05SX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9k YXRhLCBucikpCi0gI2RlZmluZSBTRUNDT01QX0FSQ0hfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJj aF9zZWNjb21wX2RhdGEsIGFyY2gpKQotKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJ VFRMRV9FTkRJQU5fXwotICNkZWZpbmUgU0VDQ09NUF9JUF9NU0JfSURYIFwKLSAgIChvZmZzZXRv ZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgNCkKLSAj ZGVmaW5lIFNFQ0NPTVBfSVBfTFNCX0lEWCBcCi1AQCAtMzg1LDYgKzM4NiwxNiBAQCB0eXBlZGVm IHN0cnVjdCBwdF9yZWdzIHJlZ3Nfc3RydWN0OwotICAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3Nl Y2NvbXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDQpCi0gI2RlZmluZSBTRUNDT01QX0FSR19M U0JfSURYKG5yKSBcCi0gICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdz KSArIDggKiAobnIpICsgMCkKLSsjZWxzZQotKyNkZWZpbmUgU0VDQ09NUF9JUF9NU0JfSURYIFwK LSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50 ZXIpICsgMCkKLSsjZGVmaW5lIFNFQ0NPTVBfSVBfTFNCX0lEWCBcCi0rICAob2Zmc2V0b2Yoc3Ry dWN0IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDQpCi0rI2RlZmlu ZSBTRUNDT01QX0FSR19NU0JfSURYKG5yKSBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2Vj Y29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsgMCkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJHX0xT Ql9JRFgobnIpIFwKLSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3Mp ICsgOCAqIChucikgKyA0KQotKyNlbmRpZgotIAotICNkZWZpbmUgU0VDQ09NUF9QVF9SRVNVTFQo X3JlZ3MpIChfcmVncykuZ3ByWzNdCi0gI2RlZmluZSBTRUNDT01QX1BUX1NZU0NBTEwoX3JlZ3Mp IChfcmVncykuZ3ByWzBdCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nr aWEvY29uZmlnL1NrVXNlckNvbmZpZy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NraWEvY29uZmlnL1NrVXNlckNvbmZpZy5oCi1AQCAtOTAsMTEgKzkwLDE4IEBAIFNL X0FQSSB2b2lkIFNrRGVidWdmX0ZpbGVMaW5lKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBi b29sIGZhdGFsLAotICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNjb25kKTsgfSB9IHdoaWxlIChm YWxzZSkKLSAKLSAjaWYgIWRlZmluZWQoQU5EUk9JRCkgICAvLyBPbiBBbmRyb2lkLCB3ZSB1c2Ug dGhlIHNraWEgZGVmYXVsdCBzZXR0aW5ncy4KLSsjaWYgZGVmaW5lZChTS19DUFVfQkVORElBTikK LSsjZGVmaW5lIFNLX0EzMl9TSElGVCAgICAwCi0rI2RlZmluZSBTS19SMzJfU0hJRlQgICAgOAot KyNkZWZpbmUgU0tfRzMyX1NISUZUICAgIDE2Ci0rI2RlZmluZSBTS19CMzJfU0hJRlQgICAgMjQK LSsjZWxzZQotICNkZWZpbmUgU0tfQTMyX1NISUZUICAgIDI0Ci0gI2RlZmluZSBTS19SMzJfU0hJ RlQgICAgMTYKLSAjZGVmaW5lIFNLX0czMl9TSElGVCAgICA4Ci0gI2RlZmluZSBTS19CMzJfU0hJ RlQgICAgMAotICNlbmRpZgotKyNlbmRpZgotIAotICNpZiBkZWZpbmVkKFNLX0JVSUxEX0ZPUl9N QUMpCi0gCi1AQCAtMTA4LDE3ICsxMTUsNiBAQCBTS19BUEkgdm9pZCBTa0RlYnVnZl9GaWxlTGlu ZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgYm9vbCBmYXRhbCwKLSAvLyB3ZSBzaG91bGQg cmV2aXNpdCB0aGlzIGNob2ljZS4uLgotICNkZWZpbmUgU0tfVVNFX0ZSRUVUWVBFX0VNQk9MREVO Ci0gCi0tI2lmIGRlZmluZWQoU0tfQlVJTERfRk9SX1VOSVgpICYmIGRlZmluZWQoU0tfQ1BVX0JF TkRJQU4pCi0tLy8gQWJvdmUgd2Ugc2V0IHRoZSBvcmRlciBmb3IgQVJHQiBjaGFubmVscyBpbiBy ZWdpc3RlcnMuIEkgc3VzcGVjdCB0aGF0LCBvbgotLS8vIGJpZyBlbmRpYW4gbWFjaGluZXMsIHlv dSBjYW4ga2VlcCB0aGlzIHRoZSBzYW1lIGFuZCBldmVyeXRoaW5nIHdpbGwgd29yay4KLS0vLyBU aGUgaW4tbWVtb3J5IG9yZGVyIHdpbGwgYmUgZGlmZmVyZW50LCBvZiBjb3Vyc2UsIGJ1dCBhcyBs b25nIGFzIGV2ZXJ5dGhpbmcKLS0vLyBpcyByZWFkaW5nIG1lbW9yeSBhcyB3b3JkcyByYXRoZXIg dGhhbiBieXRlcywgaXQgd2lsbCBhbGwgd29yay4gSG93ZXZlciwgaWYKLS0vLyB5b3UgZmluZCB0 aGF0IGNvbG91cnMgYXJlIG1lc3NlZCB1cCBJIHRob3VnaHQgdGhhdCBJIHdvdWxkIGxlYXZlIGEg aGVscGZ1bAotLS8vIGxvY2F0b3IgZm9yIHlvdS4gQWxzbyBzZWUgdGhlIGNvbW1lbnRzIGluCi0t Ly8gYmFzZS9nZngvYml0bWFwX3BsYXRmb3JtX2RldmljZV9saW51eC5oCi0tI2Vycm9yIFJlYWQg dGhlIGNvbW1lbnQgYXQgdGhpcyBsb2NhdGlvbgotLSNlbmRpZgotLQotICNlbmRpZgotIAotIC8v IFRoZSBkZWZhdWx0IGNyYXNoIG1hY3JvIHdyaXRlcyB0byBiYWRiZWVmIHdoaWNoIGNhbiBjYXVz ZSBzb21lIHN0cmFuZ2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tp YS9leHQvaW1hZ2Vfb3BlcmF0aW9uc191bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9za2lhL2V4dC9pbWFnZV9vcGVyYXRpb25zX3VuaXR0ZXN0LmNjCi1A QCAtMTgsOSArMTgsMTEgQEAKLSAjaW5jbHVkZSAic2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9ucy5o IgotICNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSAjaW5j bHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tCaXRtYXAuaCIKLSsjaW5jbHVk ZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvclByaXYuaCIKLSAjaW5jbHVk ZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvclNwYWNlLmgiCi0gI2luY2x1 ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrSW1hZ2VJbmZvLmgiCi0gI2luY2x1 ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgotKyNpbmNsdWRlICJ0 aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1VuUHJlTXVsdGlwbHkuaCIKLSAjaW5jbHVk ZSAidWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5oIgotICNpbmNsdWRlICJ1aS9nZngvZ2VvbWV0cnkv c2l6ZS5oIgotIAotQEAgLTE1MSw3ICsxNTMsNyBAQCB2b2lkIERyYXdDaGVja2VyVG9CaXRtYXAo aW50IHcsIGludCBoLAotIAotICAgICAgIGJvb2wgdXNlX2NvbG9yMiA9ICh4X2JpdCAhPSB5X2Jp dCk7ICAvLyB4b3IKLSAKLS0gICAgICAqYm1wLT5nZXRBZGRyMzIoeCwgeSkgPSAodXNlX2NvbG9y MiA/IGNvbG9yMiA6IGNvbG9yMSk7Ci0rICAgICAgKmJtcC0+Z2V0QWRkcjMyKHgsIHkpID0gU2tQ cmVNdWx0aXBseUNvbG9yKHVzZV9jb2xvcjIgPyBjb2xvcjIgOiBjb2xvcjEpOwotICAgICB9Ci0g ICB9Ci0gfQotQEAgLTI3Myw3ICsyNzUsNyBAQCB2b2lkIENoZWNrUmVzaXplTWV0aG9kU2hvdWxk QXZlcmFnZUdyaWQoCi0gICAgICAgICBzdGQ6Om1heCh0ZXN0ZWRfcGl4ZWwubWF4X2NvbG9yX2Rp c3RhbmNlLAotICAgICAgICAgICAgICAgICAgdGVzdGVkX21ldGhvZC5tYXhfY29sb3JfZGlzdGFu Y2Vfb3ZlcnJpZGUpOwotIAotLSAgICBjb25zdCBTa0NvbG9yIGFjdHVhbF9jb2xvciA9ICpkZXN0 LmdldEFkZHIzMih4LCB5KTsKLSsgICAgY29uc3QgU2tDb2xvciBhY3R1YWxfY29sb3IgPSBTa1Vu UHJlTXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKCpkZXN0LmdldEFkZHIzMih4LCB5KSk7Ci0gCi0g ICAgIC8vIENoZWNrIHRoYXQgdGhlIHBpeGVscyBhd2F5IGZyb20gdGhlIGJvcmRlciByZWdpb24g YXJlIHZlcnkgY2xvc2UKLSAgICAgLy8gdG8gdGhlIGV4cGVjdGVkIGF2ZXJhZ2UgY29sb3IKLUBA IC01MjgsNyArNTMwLDcgQEAgVEVTVChJbWFnZU9wZXJhdGlvbnMsIFNjYWxlVXApIHsKLSAgIGZv ciAoaW50IHNyY195ID0gMDsgc3JjX3kgPCBzcmNfaDsgKytzcmNfeSkgewotICAgICBmb3IgKGlu dCBzcmNfeCA9IDA7IHNyY194IDwgc3JjX3c7ICsrc3JjX3gpIHsKLSAgICAgICAqc3JjLmdldEFk ZHIzMihzcmNfeCwgc3JjX3kpID0KLS0gICAgICAgICAgU2tDb2xvclNldEFSR0IoMjU1LCAxMCAr IHNyY194ICogMTAwLCAxMCArIHNyY195ICogMTAwLCAwKTsKLSsgICAgICAgICAgU2tQYWNrQVJH QjMyKDI1NSwgMTAgKyBzcmNfeCAqIDEwMCwgMTAgKyBzcmNfeSAqIDEwMCwgMCk7Ci0gICAgIH0K LSAgIH0KLSAKLUBAIC01NTIsNyArNTU0LDcgQEAgVEVTVChJbWFnZU9wZXJhdGlvbnMsIFNjYWxl VXApIHsKLSAgICAgICAgICAgICAgIGxhbmN6b3MzKHNyY194ICsgMC41IC0gZHN0X3hfaW5fc3Jj KSAqCi0gICAgICAgICAgICAgICBsYW5jem9zMyhzcmNfeSArIDAuNSAtIGRzdF95X2luX3NyYyk7 Ci0gICAgICAgICAgIHN1bSArPSBjb2VmZjsKLS0gICAgICAgICAgU2tDb2xvciB0bXAgPSAqc3Jj LmdldEFkZHIzMihzcmNfeCwgc3JjX3kpOwotKyAgICAgICAgICBTa0NvbG9yIHRtcCA9IFNrVW5Q cmVNdWx0aXBseTo6UE1Db2xvclRvQ29sb3IoKnNyYy5nZXRBZGRyMzIoc3JjX3gsIHNyY195KSk7 Ci0gICAgICAgICAgIGEgKz0gY29lZmYgKiBTa0NvbG9yR2V0QSh0bXApOwotICAgICAgICAgICBy ICs9IGNvZWZmICogU2tDb2xvckdldFIodG1wKTsKLSAgICAgICAgICAgZyArPSBjb2VmZiAqIFNr Q29sb3JHZXRHKHRtcCk7Ci1AQCAtNTcxLDcgKzU3Myw3IEBAIFRFU1QoSW1hZ2VPcGVyYXRpb25z LCBTY2FsZVVwKSB7Ci0gICAgICAgaWYgKHIgPiAyNTUuMGYpIHIgPSAyNTUuMGY7Ci0gICAgICAg aWYgKGcgPiAyNTUuMGYpIGcgPSAyNTUuMGY7Ci0gICAgICAgaWYgKGIgPiAyNTUuMGYpIGIgPSAy NTUuMGY7Ci0tICAgICAgU2tDb2xvciBkc3RfY29sb3IgPSAqZHN0LmdldEFkZHIzMihkc3RfeCwg ZHN0X3kpOwotKyAgICAgIFNrQ29sb3IgZHN0X2NvbG9yID0gU2tVblByZU11bHRpcGx5OjpQTUNv bG9yVG9Db2xvcigqZHN0LmdldEFkZHIzMihkc3RfeCwgZHN0X3kpKTsKLSAgICAgICBFWFBFQ1Rf TEUoZmFicyhTa0NvbG9yR2V0QShkc3RfY29sb3IpIC0gYSksIDEuNWYpOwotICAgICAgIEVYUEVD VF9MRShmYWJzKFNrQ29sb3JHZXRSKGRzdF9jb2xvcikgLSByKSwgMS41Zik7Ci0gICAgICAgRVhQ RUNUX0xFKGZhYnMoU2tDb2xvckdldEcoZHN0X2NvbG9yKSAtIGcpLCAxLjVmKTsKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3dlYmdsX2ltYWdlX2NvbnZlcnNpb24uY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3dlYmdsX2ltYWdlX2NvbnZlcnNpb24uY2MKLUBAIC00NTYs OCArNDU2LDggQEAgdm9pZCBVbnBhY2s8V2ViR0xJbWFnZUNvbnZlcnNpb246OmtEYXRhRm9ybWF0 QkdSQTgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KAotICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBp eGVsc19wZXJfcm93OyArK2kpIHsKLSAgICAgdWludDMyX3QgYmdyYSA9IHNvdXJjZTMyW2ldOwot ICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJQU4pCi0tICAgIHVpbnQzMl90IGJyTWFzayA9 IDB4ZmYwMGZmMDA7Ci0tICAgIHVpbnQzMl90IGdhTWFzayA9IDB4MDBmZjAwZmY7Ci0rICAgIHVp bnQzMl90IGJyX21hc2sgPSAweGZmMDBmZjAwOwotKyAgICB1aW50MzJfdCBnYV9tYXNrID0gMHgw MGZmMDBmZjsKLSAjZWxzZQotICAgICB1aW50MzJfdCBicl9tYXNrID0gMHgwMGZmMDBmZjsKLSAg ICAgdWludDMyX3QgZ2FfbWFzayA9IDB4ZmYwMGZmMDA7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBo aWNzL2dwdS93ZWJnbF9pbWFnZV9jb252ZXJzaW9uX3Rlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v Z3JhcGhpY3MvZ3B1L3dlYmdsX2ltYWdlX2NvbnZlcnNpb25fdGVzdC5jYwotQEAgLTc2LDkgKzc2 LDkgQEAgVEVTVF9GKFdlYkdMSW1hZ2VDb252ZXJzaW9uVGVzdCwgY29udmVydEJHUkE4dG9SR0JB OCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNDU2Nzg4OCwgMHgxMjM0NTY3 OCwgMHgzNDU2Nzg4OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIzNDU2Nzgs IDB4MzQ1Njc4ODgsIDB4MTIzNDU2Nzh9OwotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJ QU4pCi0tICB1aW50MzJfdCBleHBlY3RlZERhdGFbOV0gPSB7MHg1NjM0MTI3OCwgMHg3ODU2MzQ4 OCwgMHg1NjM0MTI3OCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4NTYzNDg4 LCAweDU2MzQxMjc4LCAweDc4NTYzNDg4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4NTYzNDEyNzgsIDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzh9OwotKyAgdWludDMyX3QgZXhwZWN0 ZWRfZGF0YVs5XSA9IHsweDU2MzQxMjc4LCAweDc4NTYzNDg4LCAweDU2MzQxMjc4LAotKwkJCSAg ICAgICAweDc4NTYzNDg4LCAweDU2MzQxMjc4LCAweDc4NTYzNDg4LAotKwkJCSAgICAgICAweDU2 MzQxMjc4LCAweDc4NTYzNDg4LCAweDU2MzQxMjc4fTsKLSAjZWxzZQotICAgdWludDMyX3QgZXhw ZWN0ZWRfZGF0YVs5XSA9IHsweDEyNzg1NjM0LCAweDM0ODg3ODU2LCAweDEyNzg1NjM0LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0ODg3ODU2LCAweDEyNzg1NjM0LCAweDM0 ODg3ODU2LAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9ncmFwaGljc19jb250ZXh0X3Rlc3Qu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvZ3JhcGhpY3NfY29udGV4dF90ZXN0LmNjCi1A QCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgYmxpbmsgewotICAgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBmb3Ig KGludCB5ID0gb3BhcXVlUmVjdC5ZKCk7IHkgPCBvcGFxdWVSZWN0Lk1heFkoKTsgKyt5KSAgICAg XAotICAgICAgIGZvciAoaW50IHggPSBvcGFxdWVSZWN0LlgoKTsgeCA8IG9wYXF1ZVJlY3QuTWF4 WCgpOyArK3gpIHsgXAotLSAgICAgICAgaW50IGFscGhhID0gKmJpdG1hcC5nZXRBZGRyMzIoeCwg eSkgPj4gMjQ7ICAgICAgICAgICAgICAgXAotKyAgICAgICAgaW50IGFscGhhID0gU2tHZXRQYWNr ZWRBMzIoKmJpdG1hcC5nZXRBZGRyMzIoeCwgeSkpOwkgXAotICAgICAgICAgRVhQRUNUX0VRKDI1 NSwgYWxwaGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgfQotQEAgLTYxLDEyICs2MSwxNiBAQCBuYW1lc3BhY2UgYmxpbmsgewotICAgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGJpdG1hcC5oZWlnaHQoKTsgKyt5KSAgICAgICAgICAg ICAgICAgXAotICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgYml0bWFwLndpZHRoKCk7ICsreCkg eyAgICAgICAgICAgICAgXAotLSAgICAgICAgaW50IGFscGhhID0gKmJpdG1hcC5nZXRBZGRyMzIo eCwgeSkgPj4gMjQ7ICAgICAgICAgICAgXAotKyAgICAgICAgaW50IGFscGhhID0gU2tHZXRQYWNr ZWRBMzIoKmJpdG1hcC5nZXRBZGRyMzIoeCwgeSkpOyAgXAotICAgICAgICAgYm9vbCBvcGFxdWUg PSBvcGFxdWVSZWN0LkNvbnRhaW5zKHgsIHkpOyAgICAgICAgICAgICAgXAotICAgICAgICAgRVhQ RUNUX0VRKG9wYXF1ZSwgYWxwaGEgPT0gMjU1KTsgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgfQotIAotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgUGFja0FSR0IzMih1aW50MzJf dCBhcmdiKSB7Ci0rICByZXR1cm4gU2tQYWNrQVJHQjMyTm9DaGVjayhhcmdiPj4yNCwgKGFyZ2I8 PDgpPj4yNCwgKGFyZ2I8PDE2KT4+MjQsIChhcmdiPDwyNCk+PjI0KTsKLSt9Ci0rCi0gVEVTVChH cmFwaGljc0NvbnRleHRUZXN0LCBSZWNvcmRpbmcpIHsKLSAgIFNrQml0bWFwIGJpdG1hcDsKLSAg IGJpdG1hcC5hbGxvY04zMlBpeGVscygxMDAsIDEwMCk7Ci1AQCAtMTg0LDEwICsxODgsMTAgQEAg Y2xhc3MgR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6 VGVzdCB7Ci0gVEVTVF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9O b0hpZ2hDb250cmFzdCkgewotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAgRVhQRUNU X0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBFQ1RfRVEo MHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZm ZmYwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmY4MDgw ODAsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigw eGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNr QVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAgRVhQRUNU X0VRKFBhY2tBUkdCMzIoMHhmZmZmMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0r ICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmODA4MDgwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMs IDApKTsKLSB9Ci0gCi0gLy8gVE9ETyhjcmJ1Zy5jb20vODUwNzgyKTogUmVlbmFibGUgdGhpcy4K LUBAIC0yMDUsMTAgKzIwOSwxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFz dFRlc3QsIE1BWUJFX0hpZ2hDb250cmFzdE9mZikgewotIAotICAgRHJhd0NvbG9yc1RvQ29udGV4 dCgpOwotIAotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigwLCAw KSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsK LS0gIEVYUEVDVF9FUSgweGZmZmYwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAg RVhQRUNUX0VRKDB4ZmY4MDgwODAsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBF Q1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsK LSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIo MSwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmMDAwMCksICpiaXRtYXBfLmdl dEFkZHIzMigyLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmODA4MDgwKSwgKmJp dG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSB9Ci0gCi0gLy8gU2ltcGxlIGludmVydCBmb3IgdGVz dGluZy4gRWFjaCBjb2xvciBjb21wb25lbnQgfGN8Ci1AQCAtMjI4LDEwICsyMzIsMTAgQEAgVEVT VF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9TaW1wbGVJbnZlcnRG b3JUZXN0aW5nKSB7Ci0gCi0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1Rf RVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgw eGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYw MGZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZjdmN2Y3 ZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4 ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tB UkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1Rf RVEoUGFja0FSR0IzMigweGZmMDBmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsg IEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmY3ZjdmN2YpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywg MCkpOwotIH0KLSAKLSAvLyBJbnZlcnQgYnJpZ2h0bmVzcyAod2l0aCBnYW1tYSBjb3JyZWN0aW9u KS4KLUBAIC0yNTAsMTAgKzI1NCwxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0 cmFzdFRlc3QsIE1BWUJFX0ludmVydEJyaWdodG5lc3MpIHsKLSAKLSAgIERyYXdDb2xvcnNUb0Nv bnRleHQoKTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIo MCwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigxLCAw KSk7Ci0tICBFWFBFQ1RfRVEoMHhmZjAwZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsK LS0gIEVYUEVDVF9FUSgweGZmZGRkZGRkLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotKyAg RVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigwLCAw KSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRk cjMyKDEsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMGZmZmYpLCAqYml0bWFw Xy5nZXRBZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmRkZGRkZCks ICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIEludmVydCBsaWdodG5lc3Mg KGluIEhTTCBzcGFjZSkuCi1AQCAtMjcyLDEwICsyNzYsMTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29u dGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9JbnZlcnRMaWdodG5lc3MpIHsKLSAKLSAgIERy YXdDb2xvcnNUb0NvbnRleHQoKTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFw Xy5nZXRBZGRyMzIoMCwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdl dEFkZHIzMigxLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmZmMDAwMCwgKmJpdG1hcF8uZ2V0QWRk cjMyKDIsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZGRkZGRkLCAqYml0bWFwXy5nZXRBZGRyMzIo MywgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdl dEFkZHIzMigwLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJp dG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZjAw MDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIo MHhmZmRkZGRkZCksICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIEludmVy dCBsaWdodG5lc3MgcGx1cyBncmF5c2NhbGUuCi1AQCAtMjg4LDEwICsyOTIsMTAgQEAgVEVTVF9G KEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBJbnZlcnRMaWdodG5lc3NQbHVzR3Jh eXNjYWxlKSB7Ci0gCi0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEo MHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZm MDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZlMmUy ZTIsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmRkZGRkZCwg KmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZm ZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdC MzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEo UGFja0FSR0IzMigweGZmZTJlMmUyKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVY UEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZkZGRkZGQpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkp OwotIH0KLSAKLSAvLyBUT0RPKGNyYnVnLmNvbS84NTA3ODIpOiBSZWVuYWJsZSB0aGlzLgotQEAg LTMwOSwxMCArMzEzLDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVz dCwgTUFZQkVfSW52ZXJ0TGlnaHRuZXNzUGx1c0NvbnRyYXN0KSB7Ci0gCi0gICBEcmF3Q29sb3Jz VG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRk cjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIo MSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZmZjAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigyLCAw KSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmVlZWVlZSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsK LSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIo MCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdl dEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmYwMDAwKSwgKmJp dG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZlZWVl ZWUpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotIH0KLSAKLSB9ICAvLyBuYW1lc3BhY2Ug YmxpbmsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvaGlnaGNvbnRyYXN0L2hpZ2hjb250cmFz dF9jbGFzc2lmaWVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2hpZ2hjb250cmFzdC9o aWdoY29udHJhc3RfY2xhc3NpZmllci5jYwotQEAgLTEwNjAsNTUgKzEwNjAsNDcgQEAgdm9pZCBE ZXF1YW50aXplTWluRmlyc3QoY29uc3QgaW50MzJfdCByYW5rLAotIAotIC8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gLy8gQ09OU1RBTlRTCi0tLy8gTm90ZSB0aGF0IGZvciBub3csIGVuZGlhbm5l c3Mgb2YgdGhlIHRhcmdldCBtYWNoaW5lIG5lZWRzIHRvIG1hdGNoIHRoYXQgb2YKLS0vLyB0aGUg b25lIHRyYWluaW5nIHdhcyBwZXJmb3JtZWQgb24uCi0gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSBjb25zdCBpbnQzMl90IGRubl9oaWRkZW5sYXllcl8wX3dlaWdodHNfcGFydF8wX3NoYXBlWzJd ID0gezQsIDEwfTsKLSBjb25zdCB1bmlvbiB7Ci0tICB1aW50OF90IGJ5dGVzWzE2MF07Ci0gICBm bG9hdCB2YWx1ZXNbNDBdOwotIH0gZG5uX2hpZGRlbmxheWVyXzBfd2VpZ2h0c19wYXJ0XzAgPSB7 ewotLSAgICAweGJjLCAweDIyLCAweDBhLCAweGJmLCAweGI0LCAweDQ2LCAweDhjLCAweDNmLCAw eGJhLCAweDMxLCAweDM0LCAweGJlLAotLSAgICAweDRjLCAweDY1LCAweGRiLCAweGJlLCAweGYw LCAweDU0LCAweDVlLCAweGJlLCAweGMxLCAweDVkLCAweGIzLCAweDNmLAotLSAgICAweGY0LCAw eGU2LCAweDE1LCAweGJmLCAweDA1LCAweGM2LCAweDM0LCAweGJmLCAweGMwLCAweDM3LCAweDdl LCAweGJkLAotLSAgICAweDZjLCAweDM1LCAweDBiLCAweGJmLCAweGNhLCAweDUzLCAweDI2LCAw eGJmLCAweDU4LCAweGI0LCAweDg3LCAweDNmLAotLSAgICAweDM3LCAweGVlLCAweDM5LCAweGJm LCAweGRhLCAweGZhLCAweGY5LCAweGJlLCAweDk3LCAweGMxLCAweDA2LCAweGJmLAotLSAgICAw eGY5LCAweDRlLCAweDgxLCAweDNmLCAweGIyLCAweDQ0LCAweDg1LCAweGJmLCAweDdmLCAweDk4 LCAweDdjLCAweDNkLAotLSAgICAweDE1LCAweDI2LCAweGJjLCAweGJlLCAweDVjLCAweDQ4LCAw eDA1LCAweDNmLCAweGM4LCAweGFhLCAweGExLCAweGJkLAotLSAgICAweDM1LCAweGIzLCAweDQz LCAweGJlLCAweGViLCAweDQ2LCAweDkxLCAweDNmLCAweDgwLCAweDcxLCAweGUzLCAweDNjLAot LSAgICAweGQxLCAweDk4LCAweDc5LCAweDNmLCAweDNjLCAweGQwLCAweDBkLCAweGJmLCAweDFl LCAweDAyLCAweGQzLCAweDNlLAotLSAgICAweDVkLCAweDRiLCAweGEyLCAweGJmLCAweDY4LCAw eGFjLCAweGFhLCAweGJkLCAweGY4LCAweGUxLCAweDc1LCAweDNlLAotLSAgICAweDRhLCAweDlj LCAweDI3LCAweGJlLCAweGY4LCAweGFlLCAweGIyLCAweGJlLCAweDdmLCAweDlkLCAweDkxLCAw eDNmLAotLSAgICAweDFlLCAweDhiLCAweGE4LCAweGJlLCAweDM1LCAweDdlLCAweGIyLCAweDNm LCAweGJlLCAweDhjLCAweGQzLCAweGJlLAotLSAgICAweGY5LCAweGNkLCAweGI1LCAweDNmLCAw eGExLCAweDUwLCAweGFhLCAweDNmLCAweGU0LCAweDZkLCAweGRkLCAweGJlLAotLSAgICAweDBk LCAweGNlLCAweGQzLCAweGJlLAotKyAgICAgLTAuNTM5NTkyNTA0NTAxMzQzLCAgIDEuMDk1OTA3 Njg4MTQwODcsIC0wLjE3NTk3MDk0MTc4MTk5OCwgLTAuNDI4NTA3MjA4ODI0MTU4LAotKyAgICAg LTAuMjE3MTIwODg1ODQ4OTk5LCAgIDEuNDAxMjk4NjQyMTU4NTEsICAgLTAuNTg1NTU1MzE1MDE3 NywgLTAuNzA2MTQ2NTM4MjU3NTk5LAotKyAgICAtMC4wNjIwNjQ4ODYwOTMxMzk2LCAtMC41NDM3 ODM5MDMxMjE5NDgsIC0wLjY0OTcxNjAxOTYzMDQzMiwgICAxLjA2MDE5MTE1NDQ3OTk4LAotKyAg ICAgLTAuNzI2MjkxMTIwMDUyMzM4LCAtMC40ODgyNDE5NzA1MzkwOTMsIC0wLjUyNjM5MTQ0NjU5 MDQyNCwgICAxLjAxMDIyMjU1NDIwNjg1LAotKyAgICAgIC0xLjA0MTE1ODkxNDU2NjA0LCAwLjA2 MTY2ODg2OTEwNzk2MTcsIC0wLjM2NzQ3ODA0Mjg0MDk1OCwgIDAuNTIwNjM1MzY2NDM5ODE5LAot KyAgICAtMC4wNzg5MzkwMjA2MzM2OTc1LCAgLTAuMTkxMTEzMzA4MDcyMDksICAgMS4xMzQ5NzY3 NDQ2NTE3OSwgMC4wMjc3NjQwODE5NTQ5NTYxLAotKyAgICAgIDAuOTc0OTg4MDQzMzA4MjU4LCAt MC41NTM5NTg2NTQ0MDM2ODcsICAwLjQxMjEyNTUyNzg1ODczNCwgICAtMS4yNjc5MjQ5MDQ4MjMz LAotKyAgICAtMC4wODMzMzY2NTEzMjUyMjU4LCAgMC4yNDAxMTk4MTQ4NzI3NDIsIC0wLjE2MzY4 MjEzMjk1OTM2NiwgIC0wLjM0ODk5MTE1NTYyNDM5LAotKyAgICAgICAgMS4xMzc2MTg4OTkzNDU0 LCAtMC4zMjkxODYzNzk5MDk1MTUsICAgIDEuMzk0NDc2NTMyOTM2MSwgLTAuNDEzMTgzMTUyNjc1 NjI5LAotKyAgICAgICAxLjQyMDM0ODI4NjYyODcyLCAgIDEuMzMwNTg1NTk4OTQ1NjIsIC0wLjQz MjQ3OTAyMzkzMzQxMSwgLTAuNDEzNjgxNDE3NzAzNjI5Ci0gfX07Ci0gY29uc3QgaW50MzJfdCBk bm5faGlkZGVubGF5ZXJfMF9iaWFzZXNfcGFydF8wX3NoYXBlWzFdID0gezEwfTsKLSBjb25zdCB1 bmlvbiB7Ci0tICB1aW50OF90IGJ5dGVzWzQwXTsKLSAgIGZsb2F0IHZhbHVlc1sxMF07Ci0gfSBk bm5faGlkZGVubGF5ZXJfMF9iaWFzZXNfcGFydF8wID0ge3sKLS0gICAgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHhiZiwgMHg2YSwgMHg1MywgMHgzZSwgMHhkMywgMHhjMSwKLS0gICAgMHhkMCwg MHgzZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNiwgMHhkOCwgMHhjMCwgMHgzZSwKLS0g ICAgMHhjYSwgMHhlNywgMHgzNSwgMHgzZSwgMHgyMywgMHhhNSwgMHg0NCwgMHgzZiwgMHg2MSwg MHhmZCwKLS0gICAgMHhkMiwgMHgzZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNiwgMHhl MCwgMHg0MywgMHgzYywKLSsgICAgICAgICAgICAgICAgICAgIDAuMCwgIDAuMjA2NDYxODkxNTMx OTQ0LAotKyAgICAgIDAuNDA3NzI4NzYxNDM0NTU1LCAgICAgICAgICAgICAgICAwLjAsCi0rICAg ICAgMC4zNzY2NTMzNzMyNDE0MjUsICAwLjE3NzY0MjAxNzYwMjkyMSwKLSsgICAgICAgMC43Njgx NDQ3ODYzNTc4OCwgIDAuNDEyMDg5Mzc3NjQxNjc4LAotKyAgICAgICAgICAgICAgICAgICAgMC4w LCAwLjAxMTk1NTQzMDczMTE3NzMKLSB9fTsKLSBjb25zdCBpbnQzMl90IGRubl9sb2dpdHNfYmlh c2VzX3BhcnRfMF9zaGFwZVsxXSA9IHsxfTsKLSBjb25zdCB1bmlvbiB7Ci0tICB1aW50OF90IGJ5 dGVzWzRdOwotICAgZmxvYXQgdmFsdWVzWzFdOwotIH0gZG5uX2xvZ2l0c19iaWFzZXNfcGFydF8w ID0ge3sKLS0gICAgMHg3NSwgMHhjYSwgMHhkNywgMHhiZSwKLSsgICAgLTAuNDIxNDY2NDk5NTY3 MDMyCi0gfX07Ci0gY29uc3QgaW50MzJfdCBkbm5fbG9naXRzX3dlaWdodHNfcGFydF8wX3NoYXBl WzJdID0gezEwLCAxfTsKLSBjb25zdCB1bmlvbiB7Ci0tICB1aW50OF90IGJ5dGVzWzQwXTsKLSAg IGZsb2F0IHZhbHVlc1sxMF07Ci0gfSBkbm5fbG9naXRzX3dlaWdodHNfcGFydF8wID0ge3sKLS0g ICAgMHgxMywgMHgxMiwgMHgzOSwgMHgzZiwgMHhmMywgMHhhNSwgMHhjMiwgMHhiZiwgMHg4MSwg MHg3ZiwKLS0gICAgMHhiZSwgMHgzZiwgMHhmOCwgMHgxNywgMHgyNiwgMHgzZSwgMHhhNCwgMHgx OSwgMHhhNiwgMHgzZiwKLS0gICAgMHhmMCwgMHhjOSwgMHhiNywgMHhiZiwgMHg2YSwgMHg5OSwg MHhkMiwgMHgzZiwgMHg4YSwgMHg3ZCwKLS0gICAgMHhlOSwgMHgzZiwgMHg4MywgMHg5YSwgMHgz YSwgMHhiZiwgMHhmMSwgMHg2YywgMHgwOCwgMHgzZSwKLSsgICAgICAwLjcyMjkzMjA0MDY5MTM3 NiwgIC0xLjUyMDY4OTM2ODI0Nzk5LAotKyAgICAgICAxLjQ4ODI2NjExMDQyMDIzLCAgMC4xNjIy MDA4MDg1MjUwODUsCi0rICAgICAgIDEuMjk3NjU3NDg5Nzc2NjEsICAtMS40MzU4NTAxNDM0MzI2 MiwKLSsgICAgICAgMS42NDUzMDY4MjU2Mzc4MiwgICAxLjgyNDE0MzY0ODE0NzU4LAotKyAgICAg LTAuNzI4OTIwMTYxNzI0MDkxLCAgMC4xMzMyMjgwNzg0ODQ1MzUKLSB9fTsKLSAKLSB9ICAvLyBh bm9ueW1vdXMgbmFtZXNwYWNlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9i bXBfaW1hZ2VfcmVhZGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL2Jt cF9pbWFnZV9yZWFkZXIuaAotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAidGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2FsbG9jYXRvci5oIgotICNpbmNsdWRlICJ0 aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvY3B1LmgiCi0gI2luY2x1ZGUg InRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9ub25jb3B5YWJsZS5oIgot KyNpbmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAKLSBuYW1lc3BhY2UgYmxpbmsgewot IAotQEAgLTUwLDExICs1MSwxMSBAQCBjbGFzcyBQTEFURk9STV9FWFBPUlQgQk1QSW1hZ2VSZWFk ZXIgZmluYWwgewotICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGJ1ZmZlcnwsIGNvbnZlcnRpbmcg dG8gYW4gaW50IGFzc3VtaW5nIGxpdHRsZQotICAgLy8gZW5kaWFubmVzcwotICAgc3RhdGljIGlu bGluZSB1aW50MTZfdCBSZWFkVWludDE2KGNvbnN0IGNoYXIqIGJ1ZmZlcikgewotLSAgICByZXR1 cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihidWZmZXIpOwotKyAgICByZXR1 cm4gYmFzZTo6Qnl0ZVN3YXBUb0xFMTYoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3Qq PihidWZmZXIpKTsKLSAgIH0KLSAKLSAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgUmVhZFVpbnQz Mihjb25zdCBjaGFyKiBidWZmZXIpIHsKLS0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNv bnN0IHVpbnQzMl90Kj4oYnVmZmVyKTsKLSsgICAgcmV0dXJuIGJhc2U6OkJ5dGVTd2FwVG9MRTMy KCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmZmVyKSk7Ci0gICB9Ci0gCi0g ICAvLyB8cGFyZW50fCBpcyB0aGUgZGVjb2RlciB0aGF0IG93bnMgdXMuCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRm b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvanBlZ19pbWFnZV9kZWNvZGVyLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3Bs YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvanBlZ19pbWFnZV9kZWNvZGVyLmNjCi1AQCAtNDks MjMgKzQ5LDMwIEBAIGV4dGVybiAiQyIgewotICNpbmNsdWRlIDxzZXRqbXAuaD4KLSB9Ci0gCi0t I2lmIGRlZmluZWQoQVJDSF9DUFVfQklHX0VORElBTikKLS0jZXJyb3IgQmxpbmsgYXNzdW1lcyBh IGxpdHRsZS1lbmRpYW4gdGFyZ2V0LgotLSNlbmRpZgotLQotICNpZiBkZWZpbmVkKEpDU19BTFBI QV9FWFRFTlNJT05TKQotICNkZWZpbmUgVFVSQk9fSlBFR19SR0JfU1dJWlpMRQotLSNpZiBTS19C MzJfU0hJRlQgIC8vIE91dHB1dCBsaXR0bGUtZW5kaWFuIFJHQkEgcGl4ZWxzIChBbmRyb2lkKS4K LSsjaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsIEcsIEIsIEEpCi0gaW5saW5lIEpfQ09MT1Jf U1BBQ0UgcmdiT3V0cHV0Q29sb3JTcGFjZSgpIHsKLSAgIHJldHVybiBKQ1NfRVhUX1JHQkE7Ci0g fQotLSNlbHNlICAvLyBPdXRwdXQgbGl0dGxlLWVuZGlhbiBCR1JBIHBpeGVscy4KLSsjZWxpZiBT S19QTUNPTE9SX0JZVEVfT1JERVIoQiwgRywgUiwgQSkKLSBpbmxpbmUgSl9DT0xPUl9TUEFDRSBy Z2JPdXRwdXRDb2xvclNwYWNlKCkgewotICAgcmV0dXJuIEpDU19FWFRfQkdSQTsKLSB9Ci0rI2Vs aWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEEsIFIsIEcsIEIpCi0raW5saW5lIEpfQ09MT1JfU1BB Q0UgcmdiT3V0cHV0Q29sb3JTcGFjZSgpIHsKLSsgIHJldHVybiBKQ1NfRVhUX0FSR0I7Ci0rfQot KyNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihBLCBCLCBHLCBSKQotK2lubGluZSBKX0NPTE9S X1NQQUNFIHJnYk91dHB1dENvbG9yU3BhY2UoKSB7Ci0rICByZXR1cm4gSkNTX0VYVF9BQkdSOwot K30KLSsjZWxzZQotKyNlcnJvciBDb21wb25lbnQgb3JkZXIgbm90IHN1cHBvcnRlZCBieSBsaWJq cGVnX3R1cmJvCi0gI2VuZGlmCi0gaW5saW5lIGJvb2wgdHVyYm9Td2l6emxlZChKX0NPTE9SX1NQ QUNFIGNvbG9yU3BhY2UpIHsKLS0gIHJldHVybiBjb2xvclNwYWNlID09IEpDU19FWFRfUkdCQSB8 fCBjb2xvclNwYWNlID09IEpDU19FWFRfQkdSQTsKLSsgIHJldHVybiBjb2xvclNwYWNlID09IEpD U19FWFRfUkdCQSB8fCBjb2xvclNwYWNlID09IEpDU19FWFRfQkdSQSB8fAotKyAgICBjb2xvclNw YWNlID09IEpDU19FWFRfQUJHUiB8fCBjb2xvclNwYWNlID09IEpDU19FWFRfQVJHQjsKLSB9Ci0g I2Vsc2UKLSBpbmxpbmUgSl9DT0xPUl9TUEFDRSByZ2JPdXRwdXRDb2xvclNwYWNlKCkgewotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL3dlYnBfaW1hZ2VfZGVjb2Rlci5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9y ZW5kZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL3dlYnBfaW1hZ2VfZGVjb2Rlci5j YwotQEAgLTMyLDE4ICszMiwyMCBAQAotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS9oaXN0b2dyYW0uaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9p bmNsdWRlL2NvcmUvU2tEYXRhLmgiCi0gCi0tI2lmIGRlZmluZWQoQVJDSF9DUFVfQklHX0VORElB TikKLS0jZXJyb3IgQmxpbmsgYXNzdW1lcyBhIGxpdHRsZS1lbmRpYW4gdGFyZ2V0LgotLSNlbmRp ZgotLQotLSNpZiBTS19CMzJfU0hJRlQgIC8vIE91dHB1dCBsaXR0bGUtZW5kaWFuIFJHQkEgcGl4 ZWxzIChBbmRyb2lkKS4KLSsjaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsIEcsIEIsIEEpCi0g aW5saW5lIFdFQlBfQ1NQX01PREUgb3V0cHV0TW9kZShib29sIGhhc0FscGhhKSB7Ci0gICByZXR1 cm4gaGFzQWxwaGEgPyBNT0RFX3JnYkEgOiBNT0RFX1JHQkE7Ci0gfQotLSNlbHNlICAvLyBPdXRw dXQgbGl0dGxlLWVuZGlhbiBCR1JBIHBpeGVscy4KLSsjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JE RVIoQiwgRywgUiwgQSkKLSBpbmxpbmUgV0VCUF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wgaGFz QWxwaGEpIHsKLSAgIHJldHVybiBoYXNBbHBoYSA/IE1PREVfYmdyQSA6IE1PREVfQkdSQTsKLSB9 Ci0rI2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEEsIFIsIEcsIEIpCi0raW5saW5lIFdFQlBf Q1NQX01PREUgb3V0cHV0TW9kZShib29sIGhhc0FscGhhKSB7Ci0rICByZXR1cm4gaGFzQWxwaGEg PyBNT0RFX0FyZ2IgOiBNT0RFX0FSR0I7Ci0rfQotKyNlbHNlCi0rI2Vycm9yIENvbXBvbmVudCBv cmRlciBub3Qgc3VwcG9ydGVkIGJ5IGxpYndlYnAKLSAjZW5kaWYKLSAKLSBuYW1lc3BhY2Ugewot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdz c2wvc3JjL2NyeXB0by9hc24xL2FfaW50LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vYXNuMS9hX2ludC5jCi1A QCAtMzY5LDcgKzM2OSw5IEBAIGludCBBU04xX0lOVEVHRVJfc2V0X3VpbnQ2NChBU04xX0lOVEVH RVIgKm91dCwgdWludDY0X3QgdikKLSAKLSAgICAgT1BFTlNTTF9mcmVlKG91dC0+ZGF0YSk7Ci0g ICAgIG91dC0+ZGF0YSA9IG5ld2RhdGE7Ci0rI2lmbmRlZiBPUEVOU1NMX0JJR0VORElBTgotICAg ICB2ID0gQ1JZUFRPX2Jzd2FwOCh2KTsKLSsjZW5kaWYKLSAgICAgbWVtY3B5KG91dC0+ZGF0YSwg JnYsIHNpemVvZih2KSk7Ci0gCi0gICAgIG91dC0+dHlwZSA9IFZfQVNOMV9JTlRFR0VSOwotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wv c3JjL2NyeXB0by9jaGFjaGEvY2hhY2hhLmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY2hhY2hhL2NoYWNoYS5j Ci1AQCAtMjksNiArMjksMTQgQEAKLSAgICgoKHVpbnQzMl90KSgocClbMF0pKSB8ICgodWludDMy X3QpKChwKVsxXSkgPDwgOCkgfCBcCi0gICAgKCh1aW50MzJfdCkoKHApWzJdKSA8PCAxNikgfCAo KHVpbnQzMl90KSgocClbM10pIDw8IDI0KSkKLSAKLSsjZGVmaW5lIFUzMlRPOF9MSVRUTEUocCwg dikgICAgXAotKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIChwKVswXSA9 ICh2ID4+IDApICYgMHhmZjsgIFwKLSsgICAgKHApWzFdID0gKHYgPj4gOCkgJiAweGZmOyAgXAot KyAgICAocClbMl0gPSAodiA+PiAxNikgJiAweGZmOyBcCi0rICAgIChwKVszXSA9ICh2ID4+IDI0 KSAmIDB4ZmY7IFwKLSsgIH0KLSsKLSAvLyBzaWdtYSBjb250YWlucyB0aGUgQ2hhQ2hhIGNvbnN0 YW50cywgd2hpY2ggaGFwcGVuIHRvIGJlIGFuIEFTQ0lJIHN0cmluZy4KLSBzdGF0aWMgY29uc3Qg dWludDhfdCBzaWdtYVsxNl0gPSB7ICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICcgJywg JzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzInLCAnLScsICdiJywg J3knLCAndCcsICdlJywgJyAnLCAnaycgfTsKLUBAIC00NSw5ICs1MywyNyBAQCBzdGF0aWMgY29u c3QgdWludDhfdCBzaWdtYVsxNl0gPSB7ICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICcg JywgJzMnLAotIHZvaWQgQ1JZUFRPX2hjaGFjaGEyMCh1aW50OF90IG91dFszMl0sIGNvbnN0IHVp bnQ4X3Qga2V5WzMyXSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBub25j ZVsxNl0pIHsKLSAgIHVpbnQzMl90IHhbMTZdOwotLSAgT1BFTlNTTF9tZW1jcHkoeCwgc2lnbWEs IHNpemVvZihzaWdtYSkpOwotLSAgT1BFTlNTTF9tZW1jcHkoJnhbNF0sIGtleSwgMzIpOwotLSAg T1BFTlNTTF9tZW1jcHkoJnhbMTJdLCBub25jZSwgMTYpOwotKyAgaW50IGk7Ci0rCi0rICB4WzBd ID0gVThUTzMyX0xJVFRMRShzaWdtYSArIDApOwotKyAgeFsxXSA9IFU4VE8zMl9MSVRUTEUoc2ln bWEgKyA0KTsKLSsgIHhbMl0gPSBVOFRPMzJfTElUVExFKHNpZ21hICsgOCk7Ci0rICB4WzNdID0g VThUTzMyX0xJVFRMRShzaWdtYSArIDEyKTsKLSsKLSsgIHhbNF0gPSBVOFRPMzJfTElUVExFKGtl eSArIDApOwotKyAgeFs1XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgNCk7Ci0rICB4WzZdID0gVThU TzMyX0xJVFRMRShrZXkgKyA4KTsKLSsgIHhbN10gPSBVOFRPMzJfTElUVExFKGtleSArIDEyKTsK LSsKLSsgIHhbOF0gPSBVOFRPMzJfTElUVExFKGtleSArIDE2KTsKLSsgIHhbOV0gPSBVOFRPMzJf TElUVExFKGtleSArIDIwKTsKLSsgIHhbMTBdID0gVThUTzMyX0xJVFRMRShrZXkgKyAyNCk7Ci0r ICB4WzExXSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMjgpOwotKwotKyAgeFsxMl0gPSBVOFRPMzJf TElUVExFKG5vbmNlICsgMCk7Ci0rICB4WzEzXSA9IFU4VE8zMl9MSVRUTEUobm9uY2UgKyA0KTsK LSsgIHhbMTRdID0gVThUTzMyX0xJVFRMRShub25jZSArIDgpOwotKyAgeFsxNV0gPSBVOFRPMzJf TElUVExFKG5vbmNlICsgMTIpOwotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyMDsgaSAr PSAyKSB7Ci0gICAgIFFVQVJURVJST1VORCgwLCA0LCA4LCAxMikKLUBAIC02MCw4ICs4NiwxMCBA QCB2b2lkIENSWVBUT19oY2hhY2hhMjAodWludDhfdCBvdXRbMzJdLCBjb25zdCB1aW50OF90IGtl eVszMl0sCi0gICAgIFFVQVJURVJST1VORCgzLCA0LCA5LCAxNCkKLSAgIH0KLSAKLS0gIE9QRU5T U0xfbWVtY3B5KG91dCwgJnhbMF0sIHNpemVvZih1aW50MzJfdCkgKiA0KTsKLS0gIE9QRU5TU0xf bWVtY3B5KCZvdXRbMTZdLCAmeFsxMl0sIHNpemVvZih1aW50MzJfdCkgKiA0KTsKLSsgIGZvciAo aSA9IDA7IGkgPCA0OyArK2kpIHsKLSsgICAgVTMyVE84X0xJVFRMRShvdXQgKyA0ICogaSwgeFtp XSk7Ci0rICAgIFUzMlRPOF9MSVRUTEUoJm91dFsxNl0gKyA0ICogaSwgeFsxMitpXSk7Ci0rICB9 Ci0gfQotIAotICNpZiAhZGVmaW5lZChPUEVOU1NMX05PX0FTTSkgJiYgICAgICAgICAgICAgICAg ICAgICAgICAgXAotQEAgLTEwNSwxNCArMTMzLDYgQEAgdm9pZCBDUllQVE9fY2hhY2hhXzIwKHVp bnQ4X3QgKm91dCwgY29uc3QgdWludDhfdCAqaW4sIHNpemVfdCBpbl9sZW4sCi0gCi0gI2Vsc2UK LSAKLS0jZGVmaW5lIFUzMlRPOF9MSVRUTEUocCwgdikgICAgXAotLSAgeyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0tICAgIChwKVswXSA9ICh2ID4+IDApICYgMHhmZjsgIFwKLS0gICAg KHApWzFdID0gKHYgPj4gOCkgJiAweGZmOyAgXAotLSAgICAocClbMl0gPSAodiA+PiAxNikgJiAw eGZmOyBcCi0tICAgIChwKVszXSA9ICh2ID4+IDI0KSAmIDB4ZmY7IFwKLS0gIH0KLS0KLSAvLyBj aGFjaGFfY29yZSBwZXJmb3JtcyAyMCByb3VuZHMgb2YgQ2hhQ2hhIG9uIHRoZSBpbnB1dCB3b3Jk cyBpbgotIC8vIHxpbnB1dHwgYW5kIHdyaXRlcyB0aGUgNjQgb3V0cHV0IGJ5dGVzIHRvIHxvdXRw dXR8LgotIHN0YXRpYyB2b2lkIGNoYWNoYV9jb3JlKHVpbnQ4X3Qgb3V0cHV0WzY0XSwgY29uc3Qg dWludDMyX3QgaW5wdXRbMTZdKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NpcGhlcl9leHRyYS9lX2Flc2dj bXNpdi5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NpcGhlcl9leHRyYS9lX2Flc2djbXNpdi5jCi1AQCAtNjI1 LDcgKzYyNSwxMSBAQCBzdGF0aWMgdm9pZCBnY21fc2l2X2NyeXB0KHVpbnQ4X3QgKm91dCwgY29u c3QgdWludDhfdCAqaW4sIHNpemVfdCBpbl9sZW4sCi0gICBmb3IgKHNpemVfdCBkb25lID0gMDsg ZG9uZSA8IGluX2xlbjspIHsKLSAgICAgdWludDhfdCBrZXlzdHJlYW1bQUVTX0JMT0NLX1NJWkVd OwotICAgICBlbmNfYmxvY2soY291bnRlci5jLCBrZXlzdHJlYW0sIGtleSk7Ci0rI2lmZGVmIE9Q RU5TU0xfQklHRU5ESUFOCi0rICAgIGNvdW50ZXIud1swXSA9IENSWVBUT19ic3dhcDQoQ1JZUFRP X2Jzd2FwNChjb3VudGVyLndbMF0pICsgMSk7Ci0rI2Vsc2UKLSAgICAgY291bnRlci53WzBdKys7 Ci0rI2VuZGlmCi0gCi0gICAgIHNpemVfdCB0b2RvID0gQUVTX0JMT0NLX1NJWkU7Ci0gICAgIGlm IChpbl9sZW4gLSBkb25lIDwgdG9kbykgewotQEAgLTY3Myw4ICs2NzcsMTMgQEAgc3RhdGljIHZv aWQgZ2NtX3Npdl9wb2x5dmFsKAotICAgICB9IGJpdGxlbnM7Ci0gICB9IGxlbmd0aF9ibG9jazsK LSAKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGxlbmd0aF9ibG9jay5iaXRsZW5zLmFk ID0gQ1JZUFRPX2Jzd2FwOChhZF9sZW4gKiA4KTsKLSsgIGxlbmd0aF9ibG9jay5iaXRsZW5zLmlu ID0gQ1JZUFRPX2Jzd2FwOChpbl9sZW4gKiA4KTsKLSsjZWxzZQotICAgbGVuZ3RoX2Jsb2NrLmJp dGxlbnMuYWQgPSBhZF9sZW4gKiA4OwotICAgbGVuZ3RoX2Jsb2NrLmJpdGxlbnMuaW4gPSBpbl9s ZW4gKiA4OwotKyNlbmRpZgotICAgQ1JZUFRPX1BPTFlWQUxfdXBkYXRlX2Jsb2NrcygmcG9seXZh bF9jdHgsIGxlbmd0aF9ibG9jay5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplb2YobGVuZ3RoX2Jsb2NrKSk7Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NvbXBpbGVyX3Rlc3QuY2MK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5n c3NsL3NyYy9jcnlwdG8vY29tcGlsZXJfdGVzdC5jYwotQEAgLTQwLDkgKzQwLDEzIEBAIHN0YXRp YyB2b2lkIENoZWNrUmVwcmVzZW50YXRpb24oVCB2YWx1ZSkgewotICAgVW5zaWduZWRUIHZhbHVl X3UgPSBzdGF0aWNfY2FzdDxVbnNpZ25lZFQ+KHZhbHVlKTsKLSAgIEVYUEVDVF9FUShzaXplb2Yo VW5zaWduZWRUKSwgc2l6ZW9mKFQpKTsKLSAKLS0gIC8vIEludGVnZXJzIG11c3QgYmUgbGl0dGxl LWVuZGlhbi4KLSsgIC8vIEludGVnZXJzIG11c3QgYmUgZWl0aGVyIGJpZy1lbmRpYW4gb3IgbGl0 dGxlLWVuZGlhbi4KLSAgIHVpbnQ4X3QgZXhwZWN0ZWRbc2l6ZW9mKFVuc2lnbmVkVCldOwotKyNp ZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgZm9yIChzaXplX3QgaSA9IHNpemVvZihVbnNpZ25l ZFQpOyBpLS0gPiAwOyApIHsKLSsjZWxzZQotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl b2YoVW5zaWduZWRUKTsgaSsrKSB7Ci0rI2VuZGlmCi0gICAgIGV4cGVjdGVkW2ldID0gc3RhdGlj X2Nhc3Q8dWludDhfdD4odmFsdWVfdSk7Ci0gICAgIC8vIERpdmlkZSBpbnN0ZWFkIG9mIHJpZ2h0 LXNoaWZ0IHRvIGFwcGVhc2UgY29tcGlsZXJzIHRoYXQgd2FybiBpZiB8VHwgaXMgYQotICAgICAv LyBjaGFyLiBUaGUgZXhwbGljaXQgY2FzdCBpcyBhbHNvIG5lZWRlZCB0byBhcHBlYXNlIE1TVkMg aWYgaW50ZWdlcgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9jdXJ2ZTI1NTE5L3NwYWtlMjU1MTkuYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3Jj L2NyeXB0by9jdXJ2ZTI1NTE5L3NwYWtlMjU1MTkuYwotQEAgLTMzOSw4ICszMzksMTcgQEAgc3Rh dGljIHZvaWQgc2NhbGFyX2RvdWJsZShzY2FsYXIgKnMpIHsKLSAgIHVpbnQzMl90IGNhcnJ5ID0g MDsKLSAKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0tICAgIGNvbnN0IHVp bnQzMl90IGNhcnJ5X291dCA9IHMtPndvcmRzW2ldID4+IDMxOwotLSAgICBzLT53b3Jkc1tpXSA9 IChzLT53b3Jkc1tpXSA8PCAxKSB8IGNhcnJ5OwotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgot KyAgICBjb25zdCB1aW50MzJfdCBzaSA9IENSWVBUT19ic3dhcDQocy0+d29yZHNbaV0pOwotKyNl bHNlCi0rICAgIGNvbnN0IHVpbnQzMl90IHNpID0gcy0+d29yZHNbaV07Ci0rI2VuZGlmCi0rICAg IGNvbnN0IHVpbnQzMl90IGNhcnJ5X291dCA9IHNpID4+IDMxOwotKyNpZmRlZiBPUEVOU1NMX0JJ R0VORElBTgotKyAgICBzLT53b3Jkc1tpXSA9IENSWVBUT19ic3dhcDQoKHNpIDw8IDEpIHwgY2Fy cnkpOwotKyNlbHNlCi0rICAgIHMtPndvcmRzW2ldID0gKHNpIDw8IDEpIHwgY2Fycnk7Ci0rI2Vu ZGlmCi0gICAgIGNhcnJ5ID0gY2Fycnlfb3V0OwotICAgfQotIH0KLUBAIC0zNTAsOCArMzU5LDEz IEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9hZGQoc2NhbGFyICpkZXN0LCBjb25zdCBzY2FsYXIgKnNy YykgewotICAgdWludDMyX3QgY2FycnkgPSAwOwotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkg PCA4OyBpKyspIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgdWludDY0X3QgdG1w ID0gKCh1aW50NjRfdClDUllQVE9fYnN3YXA0KGRlc3QtPndvcmRzW2ldKSArIENSWVBUT19ic3dh cDQoc3JjLT53b3Jkc1tpXSkpICsgY2Fycnk7Ci0rICAgIGRlc3QtPndvcmRzW2ldID0gQ1JZUFRP X2Jzd2FwNCgodWludDMyX3QpdG1wKTsKLSsjZWxzZQotICAgICB1aW50NjRfdCB0bXAgPSAoKHVp bnQ2NF90KWRlc3QtPndvcmRzW2ldICsgc3JjLT53b3Jkc1tpXSkgKyBjYXJyeTsKLSAgICAgZGVz dC0+d29yZHNbaV0gPSAodWludDMyX3QpdG1wOwotKyNlbmRpZgotICAgICBjYXJyeSA9ICh1aW50 MzJfdCkodG1wID4+IDMyKTsKLSAgIH0KLSB9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2V2cC9zY3J5cHQuYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdz c2wvc3JjL2NyeXB0by9ldnAvc2NyeXB0LmMKLUBAIC0xOTYsMTAgKzE5NiwyOCBAQCBpbnQgRVZQ X1BCRV9zY3J5cHQoY29uc3QgY2hhciAqcGFzc3dvcmQsIHNpemVfdCBwYXNzd29yZF9sZW4sCi0g ICAgIGdvdG8gZXJyOwotICAgfQotIAotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdWlu dDMyX3QgKkIzMiA9IEItPndvcmRzOwotKyAgc2l6ZV90IEJfd29yZHMgPSBCX2J5dGVzID4+IDI7 Ci0rICBkbyB7Ci0rICAgICpCMzIgPSBDUllQVE9fYnN3YXA0KCpCMzIpOwotKyAgICBCMzIrKzsK LSsgIH0gd2hpbGUoLS1CX3dvcmRzKTsKLSsjZW5kaWYKLSsKLSAgIGZvciAodWludDY0X3QgaSA9 IDA7IGkgPCBwOyBpKyspIHsKLSAgICAgc2NyeXB0Uk9NaXgoQiArIDIgKiByICogaSwgciwgTiwg VCwgVik7Ci0gICB9Ci0gCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICBCMzIgPSBCLT53 b3JkczsKLSsgIEJfd29yZHMgPSBCX2J5dGVzID4+IDI7Ci0rICBkbyB7Ci0rICAgICpCMzIgPSBD UllQVE9fYnN3YXA0KCpCMzIpOwotKyAgICBCMzIrKzsKLSsgIH0gd2hpbGUoLS1CX3dvcmRzKTsK LSsjZW5kaWYKLSsKLSAgIGlmICghUEtDUzVfUEJLREYyX0hNQUMocGFzc3dvcmQsIHBhc3N3b3Jk X2xlbiwgKGNvbnN0IHVpbnQ4X3QgKilCLCBCX2J5dGVzLCAxLAotICAgICAgICAgICAgICAgICAg ICAgICAgICBFVlBfc2hhMjU2KCksIGtleV9sZW4sIG91dF9rZXkpKSB7Ci0gICAgIGdvdG8gZXJy OwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2JuL2J5dGVzLmMKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlw c21vZHVsZS9ibi9ieXRlcy5jCi1AQCAtMTM2LDkgKzEzNiwxMyBAQCBCSUdOVU0gKkJOX2xlMmJu KGNvbnN0IHVpbnQ4X3QgKmluLCBzaXplX3QgbGVuLCBCSUdOVU0gKnJldCkgewotICAgLy8gTWFr ZSBzdXJlIHRoZSB0b3AgYnl0ZXMgd2lsbCBiZSB6ZXJvZWQuCi0gICByZXQtPmRbbnVtX3dvcmRz IC0gMV0gPSAwOwotIAotLSAgLy8gV2Ugb25seSBzdXBwb3J0IGxpdHRsZS1lbmRpYW4gcGxhdGZv cm1zLCBzbyB3ZSBjYW4gc2ltcGx5IG1lbWNweSB0aGUKLS0gIC8vIGludGVybmFsIHJlcHJlc2Vu dGF0aW9uLgotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdWludDhfdCAqb3V0ID0gKHVp bnQ4X3QgKilyZXQtPmQ7Ci0rICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotKyAg ICBvdXRbaSBeIChCTl9CWVRFUy0xKV0gPSBpbltpXTsKLSsjZWxzZQotICAgT1BFTlNTTF9tZW1j cHkocmV0LT5kLCBpbiwgbGVuKTsKLSsjZW5kaWYKLSAgIHJldHVybiByZXQ7Ci0gfQotIAotQEAg LTE1Nyw3ICsxNjEsMTEgQEAgc2l6ZV90IEJOX2JuMmJpbihjb25zdCBCSUdOVU0gKmluLCB1aW50 OF90ICpvdXQpIHsKLSBzdGF0aWMgaW50IGZpdHNfaW5fYnl0ZXMoY29uc3QgdWludDhfdCAqYnl0 ZXMsIHNpemVfdCBudW1fYnl0ZXMsIHNpemVfdCBsZW4pIHsKLSAgIHVpbnQ4X3QgbWFzayA9IDA7 Ci0gICBmb3IgKHNpemVfdCBpID0gbGVuOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKLSsjaWZkZWYg T1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgbWFzayB8PSBieXRlc1tpIF4gKEJOX0JZVEVTLTEpXTsK LSsjZWxzZQotICAgICBtYXNrIHw9IGJ5dGVzW2ldOwotKyNlbmRpZgotICAgfQotICAgcmV0dXJu IG1hc2sgPT0gMDsKLSB9Ci1AQCAtMTcyLDkgKzE4MCwxMyBAQCBpbnQgQk5fYm4ybGVfcGFkZGVk KHVpbnQ4X3QgKm91dCwgc2l6ZV90IGxlbiwgY29uc3QgQklHTlVNICppbikgewotICAgICBudW1f Ynl0ZXMgPSBsZW47Ci0gICB9Ci0gCi0tICAvLyBXZSBvbmx5IHN1cHBvcnQgbGl0dGxlLWVuZGlh biBwbGF0Zm9ybXMsIHNvIHdlIGNhbiBzaW1wbHkgbWVtY3B5IGludG8gdGhlCi0tICAvLyBpbnRl cm5hbCByZXByZXNlbnRhdGlvbi4KLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGZvciAo c2l6ZV90IGkgPSAwOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKLSsgICAgb3V0W2ldID0gYnl0ZXNb aSBeIChCTl9CWVRFUy0xKV07Ci0rICB9Ci0rI2Vsc2UKLSAgIE9QRU5TU0xfbWVtY3B5KG91dCwg Ynl0ZXMsIG51bV9ieXRlcyk7Ci0rI2VuZGlmCi0gICAvLyBQYWQgb3V0IHRoZSByZXN0IG9mIHRo ZSBidWZmZXIgd2l0aCB6ZXJvZXMuCi0gICBPUEVOU1NMX21lbXNldChvdXQgKyBudW1fYnl0ZXMs IDAsIGxlbiAtIG51bV9ieXRlcyk7Ci0gICByZXR1cm4gMTsKLUBAIC0xOTAsMTEgKzIwMiwxNSBA QCBpbnQgQk5fYm4yYmluX3BhZGRlZCh1aW50OF90ICpvdXQsIHNpemVfdCBsZW4sIGNvbnN0IEJJ R05VTSAqaW4pIHsKLSAgICAgbnVtX2J5dGVzID0gbGVuOwotICAgfQotIAotLSAgLy8gV2Ugb25s eSBzdXBwb3J0IGxpdHRsZS1lbmRpYW4gcGxhdGZvcm1zLCBzbyB3ZSBjYW4gc2ltcGx5IHdyaXRl IHRoZSBidWZmZXIKLS0gIC8vIGluIHJldmVyc2UuCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFO Ci0rICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7Ci0rICAgIG91dFts ZW4gLSBpIC0gMV0gPSBieXRlc1tpIF4gKEJOX0JZVEVTLTEpXTsKLSsgIH0KLSsjZWxzZQotICAg Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fYnl0ZXM7IGkrKykgewotICAgICBvdXRbbGVuIC0g aSAtIDFdID0gYnl0ZXNbaV07Ci0gICB9Ci0rI2VuZGlmCi0gICAvLyBQYWQgb3V0IHRoZSByZXN0 IG9mIHRoZSBidWZmZXIgd2l0aCB6ZXJvZXMuCi0gICBPUEVOU1NMX21lbXNldChvdXQsIDAsIGxl biAtIG51bV9ieXRlcyk7Ci0gICByZXR1cm4gMTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9l Y2RzYS9lY2RzYS5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvZWNkc2EvZWNkc2EuYwotQEAg LTgwLDcgKzgwLDExIEBAIHN0YXRpYyB2b2lkIGRpZ2VzdF90b19zY2FsYXIoY29uc3QgRUNfR1JP VVAgKmdyb3VwLCBFQ19TQ0FMQVIgKm91dCwKLSAgIH0KLSAgIE9QRU5TU0xfbWVtc2V0KG91dCwg MCwgc2l6ZW9mKEVDX1NDQUxBUikpOwotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWdlc3Rf bGVuOyBpKyspIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgb3V0LT5ieXRlc1tp IF4gKEJOX0JZVEVTLTEpXSA9IGRpZ2VzdFtkaWdlc3RfbGVuIC0gMSAtIGldOwotKyNlbHNlCi0g ICAgIG91dC0+Ynl0ZXNbaV0gPSBkaWdlc3RbZGlnZXN0X2xlbiAtIDEgLSBpXTsKLSsjZW5kaWYK LSAgIH0KLSAKLSAgIC8vIElmIGl0IGlzIHN0aWxsIHRvbyBsb25nLCB0cnVuY2F0ZSByZW1haW5p bmcgYml0cyB3aXRoIGEgc2hpZnQuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvZ2Nt LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9y aW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9nY20uYwotQEAgLTc4LDYgKzc4LDE0 IEBACi0gICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgIH0gd2hpbGUgKDApCi0gCi0rI2lmZGVmIE9QRU5TU0xf QklHRU5ESUFOCi0rI2RlZmluZSBHQ01fYnN3YXA0KHgpICh4KQotKyNkZWZpbmUgR0NNX2Jzd2Fw OCh4KSAoeCkKLSsjZWxzZQotKyNkZWZpbmUgR0NNX2Jzd2FwNCBDUllQVE9fYnN3YXA0Ci0rI2Rl ZmluZSBHQ01fYnN3YXA4IENSWVBUT19ic3dhcDgKLSsjZW5kaWYKLSsKLSAvLyBrU2l6ZVRXaXRo b3V0TG93ZXI0Qml0cyBpcyBhIG1hc2sgdGhhdCBjYW4gYmUgdXNlZCB0byB6ZXJvIHRoZSBsb3dl ciBmb3VyCi0gLy8gYml0cyBvZiBhIHxzaXplX3R8LgotIHN0YXRpYyBjb25zdCBzaXplX3Qga1Np emVUV2l0aG91dExvd2VyNEJpdHMgPSAoc2l6ZV90KSAtMTY7Ci1AQCAtMTczLDggKzE4MSw4IEBA IHN0YXRpYyB2b2lkIGdjbV9nbXVsdF80Yml0KHVpbnQ2NF90IFhpWzJdLCBjb25zdCB1MTI4IEh0 YWJsZVsxNl0pIHsKLSAgICAgWi5sbyBePSBIdGFibGVbbmxvXS5sbzsKLSAgIH0KLSAKLS0gIFhp WzBdID0gQ1JZUFRPX2Jzd2FwOChaLmhpKTsKLS0gIFhpWzFdID0gQ1JZUFRPX2Jzd2FwOChaLmxv KTsKLSsgIFhpWzBdID0gR0NNX2Jzd2FwOChaLmhpKTsKLSsgIFhpWzFdID0gR0NNX2Jzd2FwOCha LmxvKTsKLSB9Ci0gCi0gLy8gU3RyZWFtZWQgZ2NtX211bHRfNGJpdCwgc2VlIENSWVBUT19nY20x MjhfW2VufGRlXWNyeXB0IGZvcgotQEAgLTIzMyw4ICsyNDEsOCBAQCBzdGF0aWMgdm9pZCBnY21f Z2hhc2hfNGJpdCh1aW50NjRfdCBYaVsyXSwgY29uc3QgdTEyOCBIdGFibGVbMTZdLAotICAgICAg IFoubG8gXj0gSHRhYmxlW25sb10ubG87Ci0gICAgIH0KLSAKLS0gICAgWGlbMF0gPSBDUllQVE9f YnN3YXA4KFouaGkpOwotLSAgICBYaVsxXSA9IENSWVBUT19ic3dhcDgoWi5sbyk7Ci0rICAgIFhp WzBdID0gR0NNX2Jzd2FwOChaLmhpKTsKLSsgICAgWGlbMV0gPSBHQ01fYnN3YXA4KFoubG8pOwot ICAgfSB3aGlsZSAoaW5wICs9IDE2LCBsZW4gLT0gMTYpOwotIH0KLSAjZWxzZSAgLy8gR0hBU0hf QVNNCi1AQCAtMzYwLDggKzM2OCw4IEBAIHZvaWQgQ1JZUFRPX2doYXNoX2luaXQoZ211bHRfZnVu YyAqb3V0X211bHQsIGdoYXNoX2Z1bmMgKm91dF9oYXNoLAotICAgT1BFTlNTTF9tZW1jcHkoSC5j LCBnY21fa2V5LCAxNik7Ci0gCi0gICAvLyBIIGlzIHN0b3JlZCBpbiBob3N0IGJ5dGUgb3JkZXIK LS0gIEgudVswXSA9IENSWVBUT19ic3dhcDgoSC51WzBdKTsKLS0gIEgudVsxXSA9IENSWVBUT19i c3dhcDgoSC51WzFdKTsKLSsgIEgudVswXSA9IEdDTV9ic3dhcDgoSC51WzBdKTsKLSsgIEgudVsx XSA9IEdDTV9ic3dhcDgoSC51WzFdKTsKLSAKLSAgIE9QRU5TU0xfbWVtY3B5KG91dF9rZXksIEgu YywgMTYpOwotIAotQEAgLTQ3NCwxNSArNDgyLDE1IEBAIHZvaWQgQ1JZUFRPX2djbTEyOF9zZXRp dihHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICAgICAgR0NNX01V TChjdHgsIFlpKTsKLSAgICAgfQotICAgICBsZW4wIDw8PSAzOwotLSAgICBjdHgtPllpLnVbMV0g Xj0gQ1JZUFRPX2Jzd2FwOChsZW4wKTsKLSsgICAgY3R4LT5ZaS51WzFdIF49IEdDTV9ic3dhcDgo bGVuMCk7Ci0gCi0gICAgIEdDTV9NVUwoY3R4LCBZaSk7Ci0tICAgIGN0ciA9IENSWVBUT19ic3dh cDQoY3R4LT5ZaS5kWzNdKTsKLSsgICAgY3RyID0gR0NNX2Jzd2FwNChjdHgtPllpLmRbM10pOwot ICAgfQotIAotICAgKCpjdHgtPmdjbV9rZXkuYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FSzAuYywg a2V5KTsKLSAgICsrY3RyOwotLSAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwot KyAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotIH0KLSAKLSBpbnQgQ1JZUFRPX2dj bTEyOF9hYWQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgdWludDhfdCAqYWFkLCBzaXplX3Qg bGVuKSB7Ci1AQCAtNTgwLDcgKzU4OCw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NN MTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICBjdHgtPmFyZXMgPSAw OwotICAgfQotIAotLSAgY3RyID0gQ1JZUFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgY3Ry ID0gR0NNX2Jzd2FwNChjdHgtPllpLmRbM10pOwotIAotICAgbiA9IGN0eC0+bXJlczsKLSAgIGlm IChuKSB7Ci1AQCAtNjAyLDcgKzYxMCw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NN MTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICAgIGlmIChuID09IDAp IHsKLSAgICAgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAg ICAgICsrY3RyOwotLSAgICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwot KyAgICAgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICAgIH0KLSAgICAg ICBjdHgtPlhpLmNbbl0gXj0gb3V0W2ldID0gaW5baV0gXiBjdHgtPkVLaS5jW25dOwotICAgICAg IG4gPSAobiArIDEpICUgMTY7Ci1AQCAtNjIxLDcgKzYyOSw3IEBAIGludCBDUllQVE9fZ2NtMTI4 X2VuY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICB3 aGlsZSAoaikgewotICAgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsK LSAgICAgICArK2N0cjsKLS0gICAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7 Ci0rICAgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICAgIGZvciAoc2l6 ZV90IGkgPSAwOyBpIDwgMTY7IGkgKz0gc2l6ZW9mKHNpemVfdCkpIHsKLSAgICAgICAgIHN0b3Jl X3dvcmRfbGUob3V0ICsgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgbG9hZF93b3JkX2xlKGlu ICsgaSkgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV0pOwotQEAgLTYzOCw3ICs2NDYs NyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0 IEFFU19LRVkgKmtleSwKLSAgICAgd2hpbGUgKGxlbiA+PSAxNikgewotICAgICAgICgqYmxvY2sp KGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgICArK2N0cjsKLS0gICAgICBjdHgt PllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0rICAgICAgY3R4LT5ZaS5kWzNdID0gR0NN X2Jzd2FwNChjdHIpOwotICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkgKz0gc2l6 ZW9mKHNpemVfdCkpIHsKLSAgICAgICAgIHN0b3JlX3dvcmRfbGUob3V0ICsgaSwKLSAgICAgICAg ICAgICAgICAgICAgICAgbG9hZF93b3JkX2xlKGluICsgaSkgXiBjdHgtPkVLaS50W2kgLyBzaXpl b2Yoc2l6ZV90KV0pOwotQEAgLTY1Myw3ICs2NjEsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNy eXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIHdoaWxlIChs ZW4gPj0gMTYpIHsKLSAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwot ICAgICArK2N0cjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAg ICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIGZvciAoc2l6ZV90IGkgPSAw OyBpIDwgMTY7IGkgKz0gc2l6ZW9mKHNpemVfdCkpIHsKLSAgICAgICBzaXplX3QgdG1wID0gbG9h ZF93b3JkX2xlKGluICsgaSkgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV07Ci0gICAg ICAgc3RvcmVfd29yZF9sZShvdXQgKyBpLCB0bXApOwotQEAgLTY2OCw3ICs2NzYsNyBAQCBpbnQg Q1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkg KmtleSwKLSAgIGlmIChsZW4pIHsKLSAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5j LCBrZXkpOwotICAgICArK2N0cjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChj dHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChs ZW4tLSkgewotICAgICAgIGN0eC0+WGkuY1tuXSBePSBvdXRbbl0gPSBpbltuXSBeIGN0eC0+RUtp LmNbbl07Ci0gICAgICAgKytuOwotQEAgLTcwNyw3ICs3MTUsNyBAQCBpbnQgQ1JZUFRPX2djbTEy OF9kZWNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAg Y3R4LT5hcmVzID0gMDsKLSAgIH0KLSAKLS0gIGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5k WzNdKTsKLSsgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSAKLSAgIG4gPSBjdHgt Pm1yZXM7Ci0gICBpZiAobikgewotQEAgLTczMiw3ICs3NDAsNyBAQCBpbnQgQ1JZUFRPX2djbTEy OF9kZWNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAg ICBpZiAobiA9PSAwKSB7Ci0gICAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMs IGtleSk7Ci0gICAgICAgICArK2N0cjsKLS0gICAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19i c3dhcDQoY3RyKTsKLSsgICAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAg ICAgICB9Ci0gICAgICAgYyA9IGluW2ldOwotICAgICAgIG91dFtpXSA9IGMgXiBjdHgtPkVLaS5j W25dOwotQEAgLTc1NCw3ICs3NjIsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0KEdDTTEy OF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAgd2hpbGUgKGopIHsKLSAg ICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0gICAgICAgKytjdHI7 Ci0tICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICAgIGN0eC0+ WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8 IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7Ci0gICAgICAgICBzdG9yZV93b3JkX2xlKG91dCAr IGksCi0gICAgICAgICAgICAgICAgICAgICAgIGxvYWRfd29yZF9sZShpbiArIGkpIF4gY3R4LT5F S2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsKLUBAIC03NzEsNyArNzc5LDcgQEAgaW50IENSWVBU T19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXks Ci0gICAgIHdoaWxlIChsZW4gPj0gMTYpIHsKLSAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0 eC0+RUtpLmMsIGtleSk7Ci0gICAgICAgKytjdHI7Ci0tICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZ UFRPX2Jzd2FwNChjdHIpOwotKyAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsK LSAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7 Ci0gICAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksCi0gICAgICAgICAgICAgICAgICAgICAg IGxvYWRfd29yZF9sZShpbiArIGkpIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsK LUBAIC03ODUsNyArNzkzLDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09O VEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICB3aGlsZSAobGVuID49IDE2KSB7Ci0g ICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7Ci0t ICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNd ID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9 IHNpemVvZihzaXplX3QpKSB7Ci0gICAgICAgc2l6ZV90IGMgPSBsb2FkX3dvcmRfbGUoaW4gKyBp KTsKLSAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksIGMgXiBjdHgtPkVLaS50W2kgLyBzaXpl b2Yoc2l6ZV90KV0pOwotQEAgLTgwMCw3ICs4MDgsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNy eXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIGlmIChsZW4p IHsKLSAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0 cjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllp LmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAgICAgIHVp bnQ4X3QgYyA9IGluW25dOwotICAgICAgIGN0eC0+WGkuY1tuXSBePSBjOwotQEAgLTg2NiwxMyAr ODc0LDEzIEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQg KmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgfQotICNlbmRpZgotIAotLSAgY3RyID0gQ1JZ UFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgY3RyID0gR0NNX2Jzd2FwNChjdHgtPllpLmRb M10pOwotIAotICNpZiBkZWZpbmVkKEdIQVNIKQotICAgd2hpbGUgKGxlbiA+PSBHSEFTSF9DSFVO SykgewotICAgICAoKnN0cmVhbSkoaW4sIG91dCwgR0hBU0hfQ0hVTksgLyAxNiwga2V5LCBjdHgt PllpLmMpOwotICAgICBjdHIgKz0gR0hBU0hfQ0hVTksgLyAxNjsKLS0gICAgY3R4LT5ZaS5kWzNd ID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0 cik7Ci0gICAgIEdIQVNIKGN0eCwgb3V0LCBHSEFTSF9DSFVOSyk7Ci0gICAgIG91dCArPSBHSEFT SF9DSFVOSzsKLSAgICAgaW4gKz0gR0hBU0hfQ0hVTks7Ci1AQCAtODg1LDcgKzg5Myw3IEBAIGlu dCBDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3Qg QUVTX0tFWSAqa2V5LAotIAotICAgICAoKnN0cmVhbSkoaW4sIG91dCwgaiwga2V5LCBjdHgtPllp LmMpOwotICAgICBjdHIgKz0gKHVuc2lnbmVkIGludClqOwotLSAgICBjdHgtPllpLmRbM10gPSBD UllQVE9fYnN3YXA0KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsK LSAgICAgaW4gKz0gaTsKLSAgICAgbGVuIC09IGk7Ci0gI2lmIGRlZmluZWQoR0hBU0gpCi1AQCAt OTA0LDcgKzkxMiw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzIoR0NNMTI4X0NP TlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgaWYgKGxlbikgewotICAgICAoKmN0 eC0+Z2NtX2tleS5ibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0 cjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllp LmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAgICAgIGN0 eC0+WGkuY1tuXSBePSBvdXRbbl0gPSBpbltuXSBeIGN0eC0+RUtpLmNbbl07Ci0gICAgICAgKytu OwotQEAgLTk3MCwxNCArOTc4LDE0IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzIo R0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgfQotICNlbmRpZgot IAotLSAgY3RyID0gQ1JZUFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgY3RyID0gR0NNX2Jz d2FwNChjdHgtPllpLmRbM10pOwotIAotICNpZiBkZWZpbmVkKEdIQVNIKQotICAgd2hpbGUgKGxl biA+PSBHSEFTSF9DSFVOSykgewotICAgICBHSEFTSChjdHgsIGluLCBHSEFTSF9DSFVOSyk7Ci0g ICAgICgqc3RyZWFtKShpbiwgb3V0LCBHSEFTSF9DSFVOSyAvIDE2LCBrZXksIGN0eC0+WWkuYyk7 Ci0gICAgIGN0ciArPSBHSEFTSF9DSFVOSyAvIDE2OwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQ VE9fYnN3YXA0KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAg ICAgb3V0ICs9IEdIQVNIX0NIVU5LOwotICAgICBpbiArPSBHSEFTSF9DSFVOSzsKLSAgICAgbGVu IC09IEdIQVNIX0NIVU5LOwotQEAgLTEwMDMsNyArMTAxMSw3IEBAIGludCBDUllQVE9fZ2NtMTI4 X2RlY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAot ICNlbmRpZgotICAgICAoKnN0cmVhbSkoaW4sIG91dCwgaiwga2V5LCBjdHgtPllpLmMpOwotICAg ICBjdHIgKz0gKHVuc2lnbmVkIGludClqOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3 YXA0KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgb3V0 ICs9IGk7Ci0gICAgIGluICs9IGk7Ci0gICAgIGxlbiAtPSBpOwotQEAgLTEwMTEsNyArMTAxOSw3 IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwg Y29uc3QgQUVTX0tFWSAqa2V5LAotICAgaWYgKGxlbikgewotICAgICAoKmN0eC0+Z2NtX2tleS5i bG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0cjsKLS0gICAgY3R4 LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01f YnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAgICAgIHVpbnQ4X3QgYyA9IGlu W25dOwotICAgICAgIGN0eC0+WGkuY1tuXSBePSBjOwotQEAgLTEwMzYsOCArMTA0NCw4IEBAIGlu dCBDUllQVE9fZ2NtMTI4X2ZpbmlzaChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCB1aW50OF90 ICp0YWcsIHNpemVfdCBsZW4pIHsKLSAgICAgR0NNX01VTChjdHgsIFhpKTsKLSAgIH0KLSAKLS0g IGFsZW4gPSBDUllQVE9fYnN3YXA4KGFsZW4pOwotLSAgY2xlbiA9IENSWVBUT19ic3dhcDgoY2xl bik7Ci0rICBhbGVuID0gR0NNX2Jzd2FwOChhbGVuKTsKLSsgIGNsZW4gPSBHQ01fYnN3YXA4KGNs ZW4pOwotIAotICAgY3R4LT5YaS51WzBdIF49IGFsZW47Ci0gICBjdHgtPlhpLnVbMV0gXj0gY2xl bjsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9y aW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9pbnRlcm5hbC5oCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5 cHRvL2ZpcHNtb2R1bGUvbW9kZXMvaW50ZXJuYWwuaAotQEAgLTcwLDExICs3MCwxNyBAQCBleHRl cm4gIkMiIHsKLSBzdGF0aWMgaW5saW5lIHVpbnQzMl90IEdFVFUzMihjb25zdCB2b2lkICppbikg ewotICAgdWludDMyX3QgdjsKLSAgIE9QRU5TU0xfbWVtY3B5KCZ2LCBpbiwgc2l6ZW9mKHYpKTsK LSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIHJldHVybiB2OwotKyNlbHNlCi0gICByZXR1 cm4gQ1JZUFRPX2Jzd2FwNCh2KTsKLSsjZW5kaWYKLSB9Ci0gCi0gc3RhdGljIGlubGluZSB2b2lk IFBVVFUzMih2b2lkICpvdXQsIHVpbnQzMl90IHYpIHsKLSsjaWZuZGVmIE9QRU5TU0xfQklHRU5E SUFOCi0gICB2ID0gQ1JZUFRPX2Jzd2FwNCh2KTsKLSsjZW5kaWYKLSAgIE9QRU5TU0xfbWVtY3B5 KG91dCwgJnYsIHNpemVvZih2KSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21v ZGVzL3BvbHl2YWwuYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL3BvbHl2YWwuYwot QEAgLTMyLDE2ICszMiwyNiBAQCBzdGF0aWMgdm9pZCBieXRlX3JldmVyc2UocG9seXZhbF9ibG9j ayAqYikgewotIC8vIHRoZSBHSEFTSCBmaWVsZCwgbXVsdGlwbGllcyB0aGF0IGJ5ICd4JyBhbmQg c2VyaWFsaXNlcyB0aGUgcmVzdWx0IGJhY2sgaW50bwotIC8vIHxifCwgYnV0IHdpdGggR0hBU0gn cyBiYWNrd2FyZHMgYml0IG9yZGVyaW5nLgotIHN0YXRpYyB2b2lkIHJldmVyc2VfYW5kX211bFhf Z2hhc2gocG9seXZhbF9ibG9jayAqYikgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAg dWludDY0X3QgaGkgPSBDUllQVE9fYnN3YXA4KGItPnVbMF0pOwotKyAgdWludDY0X3QgbG8gPSBD UllQVE9fYnN3YXA4KGItPnVbMV0pOwotKyNlbHNlCi0gICB1aW50NjRfdCBoaSA9IGItPnVbMF07 Ci0gICB1aW50NjRfdCBsbyA9IGItPnVbMV07Ci0rI2VuZGlmCi0gICBjb25zdCBjcnlwdG9fd29y ZF90IGNhcnJ5ID0gY29uc3RhbnRfdGltZV9lcV93KGhpICYgMSwgMSk7Ci0gICBoaSA+Pj0gMTsK LSAgIGhpIHw9IGxvIDw8IDYzOwotICAgbG8gPj49IDE7Ci0gICBsbyBePSAoKHVpbnQ2NF90KSBj b25zdGFudF90aW1lX3NlbGVjdF93KGNhcnJ5LCAweGUxLCAwKSkgPDwgNTY7Ci0gCi0rI2lmZGVm IE9QRU5TU0xfQklHRU5ESUFOCi0rICBiLT51WzBdID0gbG87Ci0rICBiLT51WzFdID0gaGk7Ci0r I2Vsc2UKLSAgIGItPnVbMF0gPSBDUllQVE9fYnN3YXA4KGxvKTsKLSAgIGItPnVbMV0gPSBDUllQ VE9fYnN3YXA4KGhpKTsKLSsjZW5kaWYKLSB9Ci0gCi0gLy8gUE9MWVZBTChILCBYXzEsIC4uLiwg WF9uKSA9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvcmFuZC9jdHJkcmJnLmMKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9j cnlwdG8vZmlwc21vZHVsZS9yYW5kL2N0cmRyYmcuYwotQEAgLTcwLDggKzcwLDEyIEBAIE9QRU5T U0xfU1RBVElDX0FTU0VSVChDVFJfRFJCR19FTlRST1BZX0xFTiAlIEFFU19CTE9DS19TSVpFID09 IDAsCi0gLy8gY3RyX2luYyBhZGRzIHxufCB0byB0aGUgbGFzdCBmb3VyIGJ5dGVzIG9mIHxkcmJn LT5jb3VudGVyfCwgdHJlYXRlZCBhcyBhCi0gLy8gYmlnLWVuZGlhbiBudW1iZXIuCi0gc3RhdGlj IHZvaWQgY3RyMzJfYWRkKENUUl9EUkJHX1NUQVRFICpkcmJnLCB1aW50MzJfdCBuKSB7Ci0rI2lm ZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICBkcmJnLT5jb3VudGVyLndvcmRzWzNdICs9IG47Ci0r I2Vsc2UKLSAgIGRyYmctPmNvdW50ZXIud29yZHNbM10gPQotICAgICAgIENSWVBUT19ic3dhcDQo Q1JZUFRPX2Jzd2FwNChkcmJnLT5jb3VudGVyLndvcmRzWzNdKSArIG4pOwotKyNlbmRpZgotIH0K LSAKLSBzdGF0aWMgaW50IGN0cl9kcmJnX3VwZGF0ZShDVFJfRFJCR19TVEFURSAqZHJiZywgY29u c3QgdWludDhfdCAqZGF0YSwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vcG9seTEzMDUvcG9seTEzMDUuYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wv c3JjL2NyeXB0by9wb2x5MTMwNS9wb2x5MTMwNS5jCi1AQCAtMzIsMTAgKzMyLDE2IEBACi0gc3Rh dGljIHVpbnQzMl90IFU4VE8zMl9MRShjb25zdCB1aW50OF90ICptKSB7Ci0gICB1aW50MzJfdCBy OwotICAgT1BFTlNTTF9tZW1jcHkoJnIsIG0sIHNpemVvZihyKSk7Ci0rI2lmZGVmIE9QRU5TU0xf QklHRU5ESUFOCi0rICByID0gQ1JZUFRPX2Jzd2FwNChyKTsKLSsjZW5kaWYKLSAgIHJldHVybiBy OwotIH0KLSAKLSBzdGF0aWMgdm9pZCBVMzJUTzhfTEUodWludDhfdCAqbSwgdWludDMyX3Qgdikg ewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdiA9IENSWVBUT19ic3dhcDQodik7Ci0r I2VuZGlmCi0gICBPUEVOU1NMX21lbWNweShtLCAmdiwgc2l6ZW9mKHYpKTsKLSB9Ci0gCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9z cmMvaW5jbHVkZS9vcGVuc3NsL2Jhc2UuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2luY2x1ZGUvb3BlbnNzbC9iYXNlLmgK LUBAIC05OSw2ICs5OSwxMCBAQCBleHRlcm4gIkMiIHsKLSAjZWxpZiAoZGVmaW5lZChfX1BQQzY0 X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykpICYmIGRlZmluZWQoX0xJVFRMRV9FTkRJQU4p Ci0gI2RlZmluZSBPUEVOU1NMXzY0X0JJVAotICNkZWZpbmUgT1BFTlNTTF9QUEM2NExFCi0rI2Vs aWYgKGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pKQotKyNkZWZp bmUgT1BFTlNTTF82NF9CSVQKLSsjZGVmaW5lIE9QRU5TU0xfUFBDNjQKLSsjZGVmaW5lIE9QRU5T U0xfQklHRU5ESUFOCi0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19MUDY0 X18pCi0gI2RlZmluZSBPUEVOU1NMXzMyX0JJVAotICNkZWZpbmUgT1BFTlNTTF9NSVBTCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9z cmMvdGhpcmRfcGFydHkvZmlhdC9jdXJ2ZTI1NTE5LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy90aGlyZF9wYXJ0eS9maWF0 L2N1cnZlMjU1MTkuYwotQEAgLTMwMzIsOSArMzAzMiwxNCBAQCBpbnQgRUQyNTUxOV92ZXJpZnko Y29uc3QgdWludDhfdCAqbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuLAotICAgICBVSU5UNjRf QygweDEwMDAwMDAwMDAwMDAwMDApLAotICAgfTsKLSAgIGZvciAoc2l6ZV90IGkgPSAzOzsgaS0t KSB7Ci0tICAgIGlmIChzY29weS51NjRbaV0gPiBrT3JkZXJbaV0pIHsKLSsjaWZkZWYgT1BFTlNT TF9CSUdFTkRJQU4KLSsgICAgY29uc3QgdWludDY0X3QgbiA9IENSWVBUT19ic3dhcDgoc2NvcHku dTY0W2ldKTsKLSsjZWxzZQotKyAgICBjb25zdCB1aW50NjRfdCBuID0gc2NvcHkudTY0W2ldOwot KyNlbmRpZgotKyAgICBpZiAobiA+IGtPcmRlcltpXSkgewotICAgICAgIHJldHVybiAwOwotLSAg ICB9IGVsc2UgaWYgKHNjb3B5LnU2NFtpXSA8IGtPcmRlcltpXSkgewotKyAgICB9IGVsc2UgaWYg KG4gPCBrT3JkZXJbaV0pIHsKLSAgICAgICBicmVhazsKLSAgICAgfSBlbHNlIGlmIChpID09IDAp IHsKLSAgICAgICByZXR1cm4gMDsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy90aGlyZF9wYXJ0eS9maWF0L3AyNTYuYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wv c3JjL3RoaXJkX3BhcnR5L2ZpYXQvcDI1Ni5jCi1AQCAtODgyLDEyICs4ODIsMjQgQEAgc3RhdGlj IHZvaWQgZmVfdG9ieXRlcyh1aW50OF90IG91dFtOQllURVNdLCBjb25zdCBmZSBpbikgewotICAg fQotIH0KLSAKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLStzdGF0aWMgdm9pZCBmZV90b2J5 dGVzX2JlKHVpbnQ4X3Qgb3V0W05CWVRFU10sIGNvbnN0IGZlIGluKSB7Ci0rICBmb3IgKGludCBp ID0gMDsgaTxOQllURVM7IGkrKykgewotKyAgICBvdXRbaSBeIChCTl9CWVRFUy0xKV0gPSAodWlu dDhfdCkoaW5baS9zaXplb2YoaW5bMF0pXSA+PiAoOCooaSVzaXplb2YoaW5bMF0pKSkpOwotKyAg fQotK30KLSsjZW5kaWYKLSsKLSBzdGF0aWMgdm9pZCBmZV9mcm9tYnl0ZXMoZmUgb3V0LCBjb25z dCB1aW50OF90IGluW05CWVRFU10pIHsKLSAgIGZvciAoaW50IGkgPSAwOyBpPE5MSU1CUzsgaSsr KSB7Ci0gICAgIG91dFtpXSA9IDA7Ci0gICB9Ci0gICBmb3IgKGludCBpID0gMDsgaTxOQllURVM7 IGkrKykgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgICBvdXRbaS9zaXplb2Yob3V0 WzBdKV0gfD0gKChsaW1iX3QpaW5baSBeIChCTl9CWVRFUy0xKV0pIDw8ICg4KihpJXNpemVvZihv dXRbMF0pKSk7Ci0rI2Vsc2UKLSAgICAgb3V0W2kvc2l6ZW9mKG91dFswXSldIHw9ICgobGltYl90 KWluW2ldKSA8PCAoOCooaSVzaXplb2Yob3V0WzBdKSkpOwotKyNlbmRpZgotICAgfQotIH0KLSAK LUBAIC05MDYsNyArOTE4LDExIEBAIHN0YXRpYyB2b2lkIGZlX3RvX2dlbmVyaWMoRUNfRkVMRU0g Km91dCwgY29uc3QgZmUgaW4pIHsKLSAgIE9QRU5TU0xfU1RBVElDX0FTU0VSVCgKLSAgICAgICAy NTYgLyA4ID09IHNpemVvZihCTl9VTE9ORykgKiAoKDI1NiArIEJOX0JJVFMyIC0gMSkgLyBCTl9C SVRTMiksCi0gICAgICAgImZlX3RvYnl0ZXMgbGVhdmVzIGJ5dGVzIHVuaW5pdGlhbGl6ZWQiKTsK LSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGZlX3RvYnl0ZXNfYmUob3V0LT5ieXRlcywg aW4pOwotKyNlbHNlCi0gICBmZV90b2J5dGVzKG91dC0+Ynl0ZXMsIGluKTsKLSsjZW5kaWYKLSB9 Ci0gCi0gLy8gZmVfaW52IGNhbGN1bGF0ZXMgfG91dHwgPSB8aW58XnstMX0KLUBAIC0xNTI0LDcg KzE1NDAsMTEgQEAgc3RhdGljIGNoYXIgZ2V0X2JpdChjb25zdCB1aW50OF90ICppbiwgaW50IGkp IHsKLSAgIGlmIChpIDwgMCB8fCBpID49IDI1NikgewotICAgICByZXR1cm4gMDsKLSAgIH0KLSsj aWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIHJldHVybiAoaW5bKGkgPj4gMykgXiAoc2l6ZW9m KEJOX1VMT05HKS0xKV0gPj4gKGkgJiA3KSkgJiAxOwotKyNlbHNlCi0gICByZXR1cm4gKGluW2kg Pj4gM10gPj4gKGkgJiA3KSkgJiAxOwotKyNlbmRpZgotIH0KLSAKLSAvLyBJbnRlcmxlYXZlZCBw b2ludCBtdWx0aXBsaWNhdGlvbiB1c2luZyBwcmVjb21wdXRlZCBwb2ludCBtdWx0aXBsZXM6IFRo ZQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmMz MmMvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvY3JjMzJjL0JVSUxELmduCi1AQCAtMTUsMTMgKzE1LDEwIEBAIGNvbmZpZygiY3JjMzJj X2NvbmZpZyIpIHsKLSAgIF0KLSAKLSAgIGRlZmluZXMgPSBbCi0tICAgICJCWVRFX09SREVSX0JJ R19FTkRJQU49MCIsCi0rICAgICJCWVRFX09SREVSX0JJR19FTkRJQU49X19CWVRFX09SREVSX189 PV9fT1JERVJfQklHX0VORElBTl9fIiwKLSAgICAgIkNSQzMyQ19URVNUU19CVUlMVF9XSVRIX0dM T0c9MCIsCi0gICBdCi0gCi0tICAjIElmIHdlIGV2ZXIgc3VwcG9ydCBiaWctZW5kaWFuIGJ1aWxk cywgYWRkIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgZW5hYmxlCi0tICAjIEJZVEVfT1JERVJfQklH X0VORElBTi4KLS0KLSAgIGlmICh0YXJnZXRfY3B1ID09ICJ4ODYiIHx8IHRhcmdldF9jcHUgPT0g Ing2NCIpIHsKLSAgICAgZGVmaW5lcyArPSBbCi0gICAgICAgIkhBVkVfTU1fUFJFRkVUQ0g9MSIs Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRi dWZmZXJzL3NyYy9pbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9mbGF0YnVmZmVycy9zcmMvaW5jbHVkZS9m bGF0YnVmZmVycy9iYXNlLmgKLUBAIC0yMjAsMTggKzIyMCwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFt ZSBUPiBUIEVuZGlhblN3YXAoVCB0KSB7Ci0gICBpZiAoc2l6ZW9mKFQpID09IDEpIHsgICAvLyBD b21waWxlLXRpbWUgaWYtdGhlbidzLgotICAgICByZXR1cm4gdDsKLSAgIH0gZWxzZSBpZiAoc2l6 ZW9mKFQpID09IDIpIHsKLS0gICAgdW5pb24geyBUIHQ7IHVpbnQxNl90IGk7IH0gdTsKLS0gICAg dS50ID0gdDsKLSsgICAgdW5pb24gVSB7IFQgdDsgdWludDE2X3QgaTsgVShjb25zdCBUJiB0Xykg OiB0KHRfKSB7fX0gdSh0KTsKLSAgICAgdS5pID0gRkxBVEJVRkZFUlNfQllURVNXQVAxNih1Lmkp OwotICAgICByZXR1cm4gdS50OwotICAgfSBlbHNlIGlmIChzaXplb2YoVCkgPT0gNCkgewotLSAg ICB1bmlvbiB7IFQgdDsgdWludDMyX3QgaTsgfSB1OwotLSAgICB1LnQgPSB0OwotKyAgICB1bmlv biBVIHsgVCB0OyB1aW50MzJfdCBpOyBVKGNvbnN0IFQmIHRfKSA6IHQodF8pIHt9fSB1KHQpOwot ICAgICB1LmkgPSBGTEFUQlVGRkVSU19CWVRFU1dBUDMyKHUuaSk7Ci0gICAgIHJldHVybiB1LnQ7 Ci0gICB9IGVsc2UgaWYgKHNpemVvZihUKSA9PSA4KSB7Ci0tICAgIHVuaW9uIHsgVCB0OyB1aW50 NjRfdCBpOyB9IHU7Ci0tICAgIHUudCA9IHQ7Ci0rICAgIHVuaW9uIFUgeyBUIHQ7IHVpbnQ2NF90 IGk7IFUoY29uc3QgVCYgdF8pIDogdCh0Xykge319IHUodCk7Ci0gICAgIHUuaSA9IEZMQVRCVUZG RVJTX0JZVEVTV0FQNjQodS5pKTsKLSAgICAgcmV0dXJuIHUudDsKLSAgIH0gZWxzZSB7Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRidWZmZXJz L3NyYy9pbmNsdWRlL2ZsYXRidWZmZXJzL21pbmlyZWZsZWN0LmgKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvZmxhdGJ1ZmZlcnMvc3JjL2luY2x1ZGUv ZmxhdGJ1ZmZlcnMvbWluaXJlZmxlY3QuaAotQEAgLTEyMiw1OCArMTIyLDU4IEBAIGlubGluZSB2 b2lkIEl0ZXJhdGVWYWx1ZShFbGVtZW50YXJ5VHlwZSB0eXBlLCBjb25zdCB1aW50OF90ICp2YWws Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHNvZmZzZXRfdCB2ZWN0b3JfaW5kZXgsIEl0ZXJh dGlvblZpc2l0b3IgKnZpc2l0b3IpIHsKLSAgIHN3aXRjaCAodHlwZSkgewotICAgICBjYXNlIEVU X1VUWVBFOiB7Ci0tICAgICAgYXV0byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu dDhfdCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8dWludDhfdD4odmFs KTsKLSAgICAgICB2aXNpdG9yLT5VVHlwZSh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxl KSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9CT09MOiB7Ci0tICAgICAg dmlzaXRvci0+Qm9vbCgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHZhbCkgIT0g MCk7Ci0rICAgICAgdmlzaXRvci0+Qm9vbChSZWFkU2NhbGFyPHVpbnQ4X3Q+KHZhbCkgIT0gMCk7 Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9DSEFSOiB7Ci0tICAgICAgYXV0 byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90ICo+KHZhbCk7Ci0rICAgICAg YXV0byB0dmFsID0gUmVhZFNjYWxhcjxpbnQ4X3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+Q2hh cih0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAg IH0KLSAgICAgY2FzZSBFVF9VQ0hBUjogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJl dF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4odmFsKTsKLSsgICAgICBhdXRvIHR2YWwgPSBSZWFkU2Nh bGFyPHVpbnQ4X3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+VUNoYXIodHZhbCwgRW51bU5hbWUo dHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRf U0hPUlQ6IHsKLS0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQx Nl90ICo+KHZhbCk7Ci0rICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjxpbnQxNl90Pih2YWwp OwotICAgICAgIHZpc2l0b3ItPlNob3J0KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUp KTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX1VTSE9SVDogewotLSAgICAg IGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90ICo+KHZhbCk7Ci0r ICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjx1aW50MTZfdD4odmFsKTsKLSAgICAgICB2aXNp dG9yLT5VU2hvcnQodHZhbCwgRW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJy ZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfSU5UOiB7Ci0tICAgICAgYXV0byB0dmFsID0gKnJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9 IFJlYWRTY2FsYXI8aW50MzJfdD4odmFsKTsKLSAgICAgICB2aXNpdG9yLT5JbnQodHZhbCwgRW51 bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNh c2UgRVRfVUlOVDogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0 IHVpbnQzMl90ICo+KHZhbCk7Ci0rICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjx1aW50MzJf dD4odmFsKTsKLSAgICAgICB2aXNpdG9yLT5VSW50KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVf dGFibGUpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX0xPTkc6IHsKLS0g ICAgICB2aXNpdG9yLT5Mb25nKCpyZWludGVycHJldF9jYXN0PGNvbnN0IGludDY0X3QgKj4odmFs KSk7Ci0rICAgICAgdmlzaXRvci0+TG9uZyhSZWFkU2NhbGFyPGludDY0X3Q+KHZhbCkpOwotICAg ICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfVUxPTkc6IHsKLS0gICAgICB2aXNpdG9y LT5VTG9uZygqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50NjRfdCAqPih2YWwpKTsKLSsgICAg ICB2aXNpdG9yLT5VTG9uZyhSZWFkU2NhbGFyPHVpbnQ2NF90Pih2YWwpKTsKLSAgICAgICBicmVh azsKLSAgICAgfQotICAgICBjYXNlIEVUX0ZMT0FUOiB7Ci0tICAgICAgdmlzaXRvci0+RmxvYXQo KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQgKj4odmFsKSk7Ci0rICAgICAgdmlzaXRvci0+ RmxvYXQoUmVhZFNjYWxhcjxmbG9hdD4odmFsKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAg ICAgY2FzZSBFVF9ET1VCTEU6IHsKLS0gICAgICB2aXNpdG9yLT5Eb3VibGUoKnJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgZG91YmxlICo+KHZhbCkpOwotKyAgICAgIHZpc2l0b3ItPkRvdWJsZShSZWFk U2NhbGFyPGRvdWJsZT4odmFsKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBF VF9TVFJJTkc6IHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvbGV2ZWxkYXRhYmFzZS9wb3J0L3BvcnRfY2hyb21pdW0uaAotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sZXZlbGRhdGFiYXNlL3BvcnQvcG9y dF9jaHJvbWl1bS5oCi1AQCAtMjMsOCArMjMsMTEgQEAKLSBuYW1lc3BhY2UgbGV2ZWxkYiB7Ci0g bmFtZXNwYWNlIHBvcnQgewotIAotLS8vIENocm9taXVtIG9ubHkgc3VwcG9ydHMgbGl0dGxlIGVu ZGlhbi4KLSsjaWYgQVJDSF9DUFVfTElUVExFX0VORElBTgotIHN0YXRpYyBjb25zdCBib29sIGtM aXR0bGVFbmRpYW4gPSB0cnVlOwotKyNlbHNlCi0rc3RhdGljIGNvbnN0IGJvb2wga0xpdHRsZUVu ZGlhbiA9IGZhbHNlOwotKyNlbmRpZgotIAotIGNsYXNzIExPQ0tBQkxFIE11dGV4IHsKLSAgcHVi bGljOgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9t b2RwX2I2NC9CVUlMRC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9tb2RwX2I2NC9CVUlMRC5nbgotQEAgLTIsMTAgKzIsMTYgQEAKLSAjIFVzZSBv ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh dCBjYW4gYmUKLSAjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0gCi0raW1wb3J0KCIvL2J1 aWxkL2NvbmZpZy9ob3N0X2J5dGVvcmRlci5nbmkiKQotKwotIHN0YXRpY19saWJyYXJ5KCJtb2Rw X2I2NCIpIHsKLSAgIHNvdXJjZXMgPSBbCi0gICAgICJtb2RwX2I2NC5jYyIsCi0gICAgICJtb2Rw X2I2NC5oIiwKLSAgICAgIm1vZHBfYjY0X2RhdGEuaCIsCi0gICBdCi0rCi0rICBpZiAoaG9zdF9i eXRlb3JkZXIgPT0gImJpZyIpIHsKLSsgICAgZGVmaW5lcyA9IFsgIldPUkRTX0JJR0VORElBTj0x IiBdCi0rICB9Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9tb2RwX2I2NC9tb2RwX2I2NC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9tb2RwX2I2NC9tb2RwX2I2NC5jYwotQEAgLTExOCw3ICsx MTgsNyBAQCBzaXplX3QgbW9kcF9iNjRfZW5jb2RlKGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHN0 ciwgc2l6ZV90IGxlbikKLSB9Ci0gCi0gI2lmZGVmIFdPUkRTX0JJR0VORElBTiAgIC8qIEJJRyBF TkRJQU4gLS0gU1VOIC8gSUJNIC8gTU9UT1JPTEEgKi8KLS1pbnQgbW9kcF9iNjRfZGVjb2RlKGNo YXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgaW50IGxlbikKLStzaXplX3QgbW9kcF9iNjRfZGVj b2RlKGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IGxlbikKLSB7Ci0gICAgIGlm IChsZW4gPT0gMCkgcmV0dXJuIDA7Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1ZGUvcGVyZmV0dG8vYmFzZS91dGlscy5o Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZl dHRvL2luY2x1ZGUvcGVyZmV0dG8vYmFzZS91dGlscy5oCi1AQCAtMjIsNiArMjIsNyBAQAotICNp bmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGli Lmg+Ci0rI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotICNpZiAhUEVSRkVUVE9fQlVJTERGTEFHKFBF UkZFVFRPX09TX1dJTikKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2VuZGlmCi1AQCAtOTEs NyArOTIsNyBAQCBzdHJ1Y3QgRnJlZURlbGV0ZXIgewotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBU PgotIGNvbnN0ZXhwciBUIEFzc3VtZUxpdHRsZUVuZGlhbihUIHZhbHVlKSB7Ci0tICBzdGF0aWNf YXNzZXJ0KF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fLAotKyAgc3Rh dGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCxUPjo6dmFsdWUgJiYgX19CWVRFX09SREVSX18gPT0g X19PUkRFUl9MSVRUTEVfRU5ESUFOX18sCi0gICAgICAgICAgICAgICAgICJVbmltcGxlbWVudGVk IG9uIGJpZy1lbmRpYW4gYXJjaHMiKTsKLSAgIHJldHVybiB2YWx1ZTsKLSB9Ci0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1ZGUv cGVyZmV0dG8vcHJvdG96ZXJvL21lc3NhZ2UuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL3Byb3RvemVy by9tZXNzYWdlLmgKLUBAIC0xMzgsNiArMTM4LDEzIEBAIGNsYXNzIFBFUkZFVFRPX0VYUE9SVCBN ZXNzYWdlIHsKLSAKLSAgICAgcG9zID0gcHJvdG9fdXRpbHM6OldyaXRlVmFySW50KHByb3RvX3V0 aWxzOjpNYWtlVGFnRml4ZWQ8VD4oZmllbGRfaWQpLCBwb3MpOwotICAgICBtZW1jcHkocG9zLCAm dmFsdWUsIHNpemVvZihUKSk7Ci0rI2lmIF9fQllURV9PUkRFUl9fICE9IF9fT1JERVJfTElUVExF X0VORElBTl9fCi0rICAgIGZvciAoc2l6ZV90IGkgPSBzaXplb2YoVCkvMjsgaS0tOyApIHsKLSsg ICAgICB1aW50OF90IHRtcCA9IHBvc1tpXTsKLSsgICAgICBwb3NbaV0gPSBwb3Nbc2l6ZW9mKFQp LTEtaV07Ci0rICAgICAgcG9zW3NpemVvZihUKS0xLWldID0gdG1wOwotKyAgICB9Ci0rI2VuZGlm Ci0gICAgIHBvcyArPSBzaXplb2YoVCk7Ci0gICAgIC8vIFRPRE86IE9wdGltaXplIG1lbWNweSBw ZXJmb3JtYW5jZSwgc2VlIGh0dHA6Ly9jcmJ1Zy5jb20vNjI0MzExIC4KLSAgICAgV3JpdGVUb1N0 cmVhbShidWZmZXIsIHBvcyk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3BlcmZldHRvL3NyYy9wcm90b3plcm8vbWVzc2FnZS5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvcHJv dG96ZXJvL21lc3NhZ2UuY2MKLUBAIC0yMSwxMiArMjEsNiBAQAotICNpbmNsdWRlICJwZXJmZXR0 by9iYXNlL2xvZ2dpbmcuaCIKLSAjaW5jbHVkZSAicGVyZmV0dG8vcHJvdG96ZXJvL21lc3NhZ2Vf aGFuZGxlLmgiCi0gCi0tI2lmIF9fQllURV9PUkRFUl9fICE9IF9fT1JERVJfTElUVExFX0VORElB Tl9fCi0tLy8gVGhlIG1lbWNweSgpIGZvciBmbG9hdCBhbmQgZG91YmxlIGJlbG93IG5lZWRzIHRv IGJlIGFkanVzdGVkIGlmIHdlIHdhbnQgdG8KLS0vLyBzdXBwb3J0IGJpZyBlbmRpYW4gQ1BVcy4g VGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgY29tcGVsbGluZyBuZWVkIHRvZGF5LgotLSNlcnJv ciBVbmltcGxlbWVudGVkIGZvciBiaWcgZW5kaWFuIGFyY2hzLgotLSNlbmRpZgotLQotIG5hbWVz cGFjZSBwcm90b3plcm8gewotIAotIC8vIHN0YXRpYwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvcHJvdG96ZXJvL3Byb3RvX2Rl Y29kZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvcGVyZmV0dG8vc3JjL3Byb3RvemVyby9wcm90b19kZWNvZGVyLmNjCi1AQCAtMjksNyArMjks OCBAQCB1c2luZyBuYW1lc3BhY2UgcHJvdG9fdXRpbHM7Ci0gI2RlZmluZSBCWVRFX1NXQVBfVE9f TEUzMih4KSAoeCkKLSAjZGVmaW5lIEJZVEVfU1dBUF9UT19MRTY0KHgpICh4KQotICNlbHNlCi0t I2Vycm9yIFVuaW1wbGVtZW50ZWQgZm9yIGJpZyBlbmRpYW4gYXJjaHMuCi0rI2RlZmluZSBCWVRF X1NXQVBfVE9fTEUzMih4KSBfX2J1aWx0aW5fYnN3YXAzMih4KQotKyNkZWZpbmUgQllURV9TV0FQ X1RPX0xFNjQoeCkgX19idWlsdGluX2Jzd2FwNjQoeCkKLSAjZW5kaWYKLSAKLSBQcm90b0RlY29k ZXI6OkZpZWxkIFByb3RvRGVjb2Rlcjo6UmVhZEZpZWxkKCkgewotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1Bvc3RD b25maWcuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9za2lhL2luY2x1ZGUvY29yZS9Ta1Bvc3RDb25maWcuaAotQEAgLTQwLDEyICs0MCw2IEBACi0g IyAgZXJyb3IgIm11c3QgZGVmaW5lIGVpdGhlciBTS19DUFVfTEVORElBTiBvciBTS19DUFVfQkVO RElBTiIKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChTS19DUFVfQkVORElBTikgJiYgIWRlZmlu ZWQoSV9BQ0tOT1dMRURHRV9TS0lBX0RPRVNfTk9UX1NVUFBPUlRfQklHX0VORElBTikKLS0gICAg I2Vycm9yICJUaGUgU2tpYSB0ZWFtIGlzIG5vdCBlbmRpYW4tc2F2dnkgZW5vdWdoIHRvIHN1cHBv cnQgYmlnLWVuZGlhbiBDUFVzLiIKLS0gICAgI2Vycm9yICJJZiB5b3Ugc3RpbGwgd2FudCB0byB1 c2UgU2tpYSwiCi0tICAgICNlcnJvciAicGxlYXNlIGRlZmluZSBJX0FDS05PV0xFREdFX1NLSUFf RE9FU19OT1RfU1VQUE9SVF9CSUdfRU5ESUFOLiIKLS0jZW5kaWYKLS0KLSAvKioKLSAgKiBFbnN1 cmUgdGhlIHBvcnQgaGFzIGRlZmluZWQgYWxsIG9mIFNLX1gzMl9TSElGVCwgb3Igbm9uZSBvZiB0 aGVtLgotICAqLwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9za2lhL2luY2x1ZGUvcHJpdmF0ZS9HclR5cGVzUHJpdi5oCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9wcml2YXRlL0dy VHlwZXNQcml2LmgKLUBAIC02NSw5ICs2NSw2IEBAIGVudW0gR3JQaXhlbENvbmZpZyB7Ci0gc3Rh dGljIGNvbnN0IGludCBrR3JQaXhlbENvbmZpZ0NudCA9IGtMYXN0X0dyUGl4ZWxDb25maWcgKyAx OwotIAotIC8vIEFsaWFzZXMgZm9yIHBpeGVsIGNvbmZpZ3MgdGhhdCBtYXRjaCBza2lhJ3MgYnl0 ZSBvcmRlci4KLS0jaWZuZGVmIFNLX0NQVV9MRU5ESUFOCi0tI2Vycm9yICJTa2lhIGdwdSBjdXJy ZW50bHkgYXNzdW1lcyBsaXR0bGUgZW5kaWFuIgotLSNlbmRpZgotICNpZiBTS19QTUNPTE9SX0JZ VEVfT1JERVIoQixHLFIsQSkKLSBzdGF0aWMgY29uc3QgR3JQaXhlbENvbmZpZyBrU2tpYTg4ODhf R3JQaXhlbENvbmZpZyA9IGtCR1JBXzg4ODhfR3JQaXhlbENvbmZpZzsKLSAjZWxpZiBTS19QTUNP TE9SX0JZVEVfT1JERVIoUixHLEIsQSkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29kZWMvU2tDb2RlY1ByaXYuaAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb2RlYy9T a0NvZGVjUHJpdi5oCi1AQCAtMTQsNiArMTQsNyBAQAotICNpbmNsdWRlICJTa0VuY29kZWRPcmln aW4uaCIKLSAjaW5jbHVkZSAiU2tJbWFnZUluZm8uaCIKLSAjaW5jbHVkZSAiU2tUeXBlcy5oIgot KyNpbmNsdWRlICJTa0VuZGlhbi5oIgotIAotICNpZmRlZiBTS19QUklOVF9DT0RFQ19NRVNTQUdF UwotICAgICAjZGVmaW5lIFNrQ29kZWNQcmludGYgU2tEZWJ1Z2YKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0NvbG9yLmNw cAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lh L3NyYy9jb3JlL1NrQ29sb3IuY3BwCi1AQCAtMTA4LDEzICsxMDgsMjkgQEAgU2tDb2xvciBTa0hT VlRvQ29sb3IoVThDUFUgYSwgY29uc3QgU2tTY2FsYXIgaHN2WzNdKSB7Ci0gdGVtcGxhdGUgPD4K LSBTa0NvbG9yNGYgU2tDb2xvcjRmOjpGcm9tQ29sb3IoU2tDb2xvciBiZ3JhKSB7Ci0gICAgIFNr Q29sb3I0ZiByZ2JhOwotLSAgICBzd2l6emxlX3JiKFNrNGZfZnJvbUwzMihiZ3JhKSkuc3RvcmUo cmdiYS52ZWMoKSk7Ci0rICAgIFNrNGYgYzRmID0gU2s0Zl9mcm9tTDMyKGJncmEpOwotKyNpZmRl ZiBTS19DUFVfQkVORElBTgotKyAgICAvLyBBUkdCIC0+IFJHQkEKLSsgICAgYzRmID0gU2tOeF9z aHVmZmxlPDEsIDIsIDMsIDA+KGM0Zik7Ci0rI2Vsc2UKLSsgICAgLy8gQkdSQSAtPiBSR0JBCi0r ICAgIGM0ZiA9IHN3aXp6bGVfcmIoYzRmKTsKLSsjZW5kaWYKLSsgICAgYzRmLnN0b3JlKHJnYmEu dmVjKCkpOwotICAgICByZXR1cm4gcmdiYTsKLSB9Ci0gCi0gdGVtcGxhdGUgPD4KLSBTa0NvbG9y IFNrQ29sb3I0Zjo6dG9Ta0NvbG9yKCkgY29uc3QgewotLSAgICByZXR1cm4gU2s0Zl90b0wzMihz d2l6emxlX3JiKFNrNGY6OkxvYWQodGhpcy0+dmVjKCkpKSk7Ci0rICAgIFNrNGYgYzRmID0gU2s0 Zjo6TG9hZCh0aGlzLT52ZWMoKSk7Ci0rI2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgIC8vIFJH QkEgLT4gQVJHQgotKyAgICBjNGYgPSBTa054X3NodWZmbGU8MywgMCwgMSwgMj4oYzRmKTsKLSsj ZWxzZQotKyAgICAvLyBSR0JBIC0+IEJHUkEKLSsgICAgYzRmID0gc3dpenpsZV9yYihjNGYpOwot KyNlbmRpZgotKyAgICByZXR1cm4gU2s0Zl90b0wzMihjNGYpOwotIH0KLSAKLSB0ZW1wbGF0ZSA8 PgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lh L3NyYy9jb3JlL1NrUGl4bWFwLmNwcAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrUGl4bWFwLmNwcAotQEAgLTI0Niw3ICsy NDYsOCBAQCBTa0NvbG9yIFNrUGl4bWFwOjpnZXRDb2xvcihpbnQgeCwgaW50IHkpIGNvbnN0IHsK LSAgICAgY29uc3QgYm9vbCBuZWVkc1VucHJlbXVsID0gKGtQcmVtdWxfU2tBbHBoYVR5cGUgPT0g ZkluZm8uYWxwaGFUeXBlKCkpOwotICAgICBhdXRvIHRvQ29sb3IgPSBbbmVlZHNVbnByZW11bF0o dWludDMyX3QgbWF5YmVQcmVtdWxDb2xvcikgewotICAgICAgICAgcmV0dXJuIG5lZWRzVW5wcmVt dWwgPyBTa1VuUHJlTXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKG1heWJlUHJlbXVsQ29sb3IpCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNrU3dpenpsZV9CR1JBX3RvX1BNQ29sb3Io bWF5YmVQcmVtdWxDb2xvcik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNrQ29s b3JTZXRBUkdCKFNrR2V0UGFja2VkQTMyKG1heWJlUHJlbXVsQ29sb3IpLCBTa0dldFBhY2tlZFIz MihtYXliZVByZW11bENvbG9yKSwKLSsJCQkJCSAgICAgIFNrR2V0UGFja2VkRzMyKG1heWJlUHJl bXVsQ29sb3IpLCBTa0dldFBhY2tlZEIzMihtYXliZVByZW11bENvbG9yKSk7Ci0gICAgIH07Ci0g Ci0gICAgIHN3aXRjaCAodGhpcy0+Y29sb3JUeXBlKCkpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9TazRweF9ub25lLmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9z cmMvb3B0cy9TazRweF9ub25lLmgKLUBAIC0zNSw3ICszNSw2IEBAIGlubGluZSBTazRweCBTazRw eDo6V2lkZTo6ZGl2MjU1KCkgY29uc3QgewotIH0KLSAKLSBpbmxpbmUgU2s0cHggU2s0cHg6OmFs cGhhcygpIGNvbnN0IHsKLS0gICAgc3RhdGljX2Fzc2VydChTS19BMzJfU0hJRlQgPT0gMjQsICJU aGlzIG1ldGhvZCBhc3N1bWVzIGxpdHRsZS1lbmRpYW4uIik7Ci0gICAgIHJldHVybiBTazE2Yigo KnRoaXMpWyAzXSwgKCp0aGlzKVsgM10sICgqdGhpcylbIDNdLCAoKnRoaXMpWyAzXSwKLSAgICAg ICAgICAgICAgICAgICgqdGhpcylbIDddLCAoKnRoaXMpWyA3XSwgKCp0aGlzKVsgN10sICgqdGhp cylbIDddLAotICAgICAgICAgICAgICAgICAgKCp0aGlzKVsxMV0sICgqdGhpcylbMTFdLCAoKnRo aXMpWzExXSwgKCp0aGlzKVsxMV0sCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2tCbGl0Um93X29wdHMuaAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1Nr QmxpdFJvd19vcHRzLmgKLUBAIC0yMzcsOCArMjM3LDggQEAgdm9pZCBibGl0X3Jvd19zMzJhX29w YXF1ZShTa1BNQ29sb3IqIGRzdCwgY29uc3QgU2tQTUNvbG9yKiBzcmMsIGludCBsZW4sIFU4Q1BV IGEKLSAgICAgICAgIC8vIHdpdGggY2hyb21pdW06NjExMDAyIHdlIG5lZWQgdG8ga2VlcCBpdCB1 bnRpbCB3ZSBmaWd1cmUgb3V0IHdoZXJlCi0gICAgICAgICAvLyB0aGUgbm9uLXByZW11bHRpcGxp ZWQgc3JjIHZhbHVlcyAobGlrZSAweDAwRkZGRkZGKSBhcmUgY29taW5nIGZyb20uCi0gICAgICAg ICAvLyBUT0RPKG10a2xlaW4pOiBzb3J0IHRoaXMgb3V0IGFuZCBhc3NlcnQgKnNyYyBpcyBwcmVt dWwgaGVyZS4KLS0gICAgICAgIGlmICgqc3JjICYgMHhGRjAwMDAwMCkgewotLSAgICAgICAgICAg ICpkc3QgPSAoKnNyYyA+PSAweEZGMDAwMDAwKSA/ICpzcmMgOiBTa1BNU3JjT3Zlcigqc3JjLCAq ZHN0KTsKLSsgICAgICAgIGlmICgqc3JjICYgKDB4RkYgPDwgU0tfQTMyX1NISUZUKSkgewotKyAg ICAgICAgICAgICpkc3QgPSAoKCpzcmMgPDwgKDI0IC0gU0tfQTMyX1NISUZUKSkgPj0gMHhGRjAw MDAwMCkgPyAqc3JjIDogU2tQTVNyY092ZXIoKnNyYywgKmRzdCk7Ci0gICAgICAgICB9Ci0gICAg ICAgICBzcmMrKzsKLSAgICAgICAgIGRzdCsrOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrUmFzdGVyUGlwZWxpbmVfb3B0 cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3Nr aWEvc3JjL29wdHMvU2tSYXN0ZXJQaXBlbGluZV9vcHRzLmgKLUBAIC05NDgsMTAgKzk0OCwxNyBA QCBTSSB2b2lkIGZyb21fNDQ0NChVMTYgXzQ0NDQsIEYqIHIsIEYqIGcsIEYqIGIsIEYqIGEpIHsK LSAgICAgKmEgPSBjYXN0KHdpZGUgJiAoMTU8PCAwKSkgKiAoMS4wZiAvICgxNTw8IDApKTsKLSB9 Ci0gU0kgdm9pZCBmcm9tXzg4ODgoVTMyIF84ODg4LCBGKiByLCBGKiBnLCBGKiBiLCBGKiBhKSB7 Ci0rI2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgICpyID0gY2FzdCgoXzg4ODggPj4gMjQpICAg ICAgICkgKiAoMS8yNTUuMGYpOwotKyAgICAqZyA9IGNhc3QoKF84ODg4ID4+IDE2KSAmIDB4ZmYp ICogKDEvMjU1LjBmKTsKLSsgICAgKmIgPSBjYXN0KChfODg4OCA+PiAgOCkgJiAweGZmKSAqICgx LzI1NS4wZik7Ci0rICAgICphID0gY2FzdCgoXzg4ODggICAgICApICYgMHhmZikgKiAoMS8yNTUu MGYpOwotKyNlbHNlCi0gICAgICpyID0gY2FzdCgoXzg4ODggICAgICApICYgMHhmZikgKiAoMS8y NTUuMGYpOwotICAgICAqZyA9IGNhc3QoKF84ODg4ID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBm KTsKLSAgICAgKmIgPSBjYXN0KChfODg4OCA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0g ICAgICphID0gY2FzdCgoXzg4ODggPj4gMjQpICAgICAgICkgKiAoMS8yNTUuMGYpOwotKyNlbmRp ZgotIH0KLSBTSSB2b2lkIGZyb21fMTAxMDEwMihVMzIgcmdiYSwgRiogciwgRiogZywgRiogYiwg RiogYSkgewotICAgICAqciA9IGNhc3QoKHJnYmEgICAgICApICYgMHgzZmYpICogKDEvMTAyMy4w Zik7Ci1AQCAtMTI3OCwxMCArMTI4NSwxNyBAQCBTVEFHRShzcmNvdmVyX3JnYmFfODg4OCwgY29u c3QgU2tSYXN0ZXJQaXBlbGluZV9NZW1vcnlDdHgqIGN0eCkgewotICAgICBhdXRvIHB0ciA9IHB0 cl9hdF94eTx1aW50MzJfdD4oY3R4LCBkeCxkeSk7Ci0gCi0gICAgIFUzMiBkc3QgPSBsb2FkPFUz Mj4ocHRyLCB0YWlsKTsKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgZHIgPSBjYXN0KChk c3QgPj4gMjQpICAgICAgICk7Ci0rICAgIGRnID0gY2FzdCgoZHN0ID4+IDE2KSAmIDB4ZmYpOwot KyAgICBkYiA9IGNhc3QoKGRzdCA+PiAgOCkgJiAweGZmKTsKLSsgICAgZGEgPSBjYXN0KChkc3Qg ICAgICApICYgMHhmZik7Ci0rI2Vsc2UKLSAgICAgZHIgPSBjYXN0KChkc3QgICAgICApICYgMHhm Zik7Ci0gICAgIGRnID0gY2FzdCgoZHN0ID4+ICA4KSAmIDB4ZmYpOwotICAgICBkYiA9IGNhc3Qo KGRzdCA+PiAxNikgJiAweGZmKTsKLSAgICAgZGEgPSBjYXN0KChkc3QgPj4gMjQpICAgICAgICk7 Ci0rI2VuZGlmCi0gICAgIC8vIHtkcixkZyxkYixkYX0gYXJlIGluIFswLDI1NV0KLSAgICAgLy8g eyByLCBnLCBiLCBhfSBhcmUgaW4gWzAsICAxXSAoYnV0IG1heSBiZSBvdXQgb2YgZ2FtdXQpCi0g Ci1AQCAtMTI5MiwxMCArMTMwNiwxNyBAQCBTVEFHRShzcmNvdmVyX3JnYmFfODg4OCwgY29uc3Qg U2tSYXN0ZXJQaXBlbGluZV9NZW1vcnlDdHgqIGN0eCkgewotICAgICAvLyB7IHIsIGcsIGIsIGF9 IGFyZSBub3cgaW4gWzAsMjU1XSAgKGJ1dCBtYXkgYmUgb3V0IG9mIGdhbXV0KQotIAotICAgICAv LyB0b191bm9ybSgpIGNsYW1wcyBiYWNrIHRvIGdhbXV0LiAgU2NhbGluZyBieSAxIHNpbmNlIHdl J3JlIGFscmVhZHkgMjU1LWJpYXNlZC4KLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgZHN0 ID0gdG9fdW5vcm0ociwgMSwgMjU1KSA8PCAyNAotKyAgICAgICAgfCB0b191bm9ybShnLCAxLCAy NTUpIDw8IDE2Ci0rICAgICAgICB8IHRvX3Vub3JtKGIsIDEsIDI1NSkgPDwgIDgKLSsgICAgICAg IHwgdG9fdW5vcm0oYSwgMSwgMjU1KTsKLSsjZWxzZQotICAgICBkc3QgPSB0b191bm9ybShyLCAx LCAyNTUpCi0gICAgICAgICB8IHRvX3Vub3JtKGcsIDEsIDI1NSkgPDwgIDgKLSAgICAgICAgIHwg dG9fdW5vcm0oYiwgMSwgMjU1KSA8PCAxNgotICAgICAgICAgfCB0b191bm9ybShhLCAxLCAyNTUp IDw8IDI0OwotKyNlbmRpZgotICAgICBzdG9yZShwdHIsIGRzdCwgdGFpbCk7Ci0gfQotIAotQEAg LTE2OTQsMTAgKzE3MTUsMTcgQEAgU1RBR0UoZ2F0aGVyXzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlw ZWxpbmVfR2F0aGVyQ3R4KiBjdHgpIHsKLSBTVEFHRShzdG9yZV84ODg4LCBjb25zdCBTa1Jhc3Rl clBpcGVsaW5lX01lbW9yeUN0eCogY3R4KSB7Ci0gICAgIGF1dG8gcHRyID0gcHRyX2F0X3h5PHVp bnQzMl90PihjdHgsIGR4LGR5KTsKLSAKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgVTMy IHB4ID0gdG9fdW5vcm0ociwgMjU1KSA8PCAyNAotKyAgICAgICAgICAgfCB0b191bm9ybShnLCAy NTUpIDw8IDE2Ci0rICAgICAgICAgICB8IHRvX3Vub3JtKGIsIDI1NSkgPDwgIDgKLSsgICAgICAg ICAgIHwgdG9fdW5vcm0oYSwgMjU1KTsKLSsjZWxzZQotICAgICBVMzIgcHggPSB0b191bm9ybShy LCAyNTUpCi0gICAgICAgICAgICB8IHRvX3Vub3JtKGcsIDI1NSkgPDwgIDgKLSAgICAgICAgICAg IHwgdG9fdW5vcm0oYiwgMjU1KSA8PCAxNgotICAgICAgICAgICAgfCB0b191bm9ybShhLCAyNTUp IDw8IDI0OwotKyNlbmRpZgotICAgICBzdG9yZShwdHIsIHB4LCB0YWlsKTsKLSB9Ci0gCi1AQCAt Mjg1MiwxMCArMjg4MCwxNyBAQCBTSSB2b2lkIGZyb21fODg4OChVMzIgcmdiYSwgVTE2KiByLCBV MTYqIGcsIFUxNiogYiwgVTE2KiBhKSB7Ci0gICAgICAgICByZXR1cm4gY2FzdDxVMTY+KHYpOwot ICAgICB9OwotICNlbmRpZgotKyNpZmRlZiBTS19DUFVfQkVORElBTgotKyAgICAqciA9IGNhc3Rf VTE2KHJnYmEgPj4gICAxNikgPj4gIDg7Ci0rICAgICpnID0gY2FzdF9VMTYocmdiYSA+PiAgIDE2 KSAmIDI1NTsKLSsgICAgKmIgPSBjYXN0X1UxNihyZ2JhICYgNjU1MzUpID4+ICA4OwotKyAgICAq YSA9IGNhc3RfVTE2KHJnYmEgJiA2NTUzNSkgJiAyNTU7Ci0rI2Vsc2UKLSAgICAgKnIgPSBjYXN0 X1UxNihyZ2JhICYgNjU1MzUpICYgMjU1OwotICAgICAqZyA9IGNhc3RfVTE2KHJnYmEgJiA2NTUz NSkgPj4gIDg7Ci0gICAgICpiID0gY2FzdF9VMTYocmdiYSA+PiAgIDE2KSAmIDI1NTsKLSAgICAg KmEgPSBjYXN0X1UxNihyZ2JhID4+ICAgMTYpID4+ICA4OwotKyNlbmRpZgotIH0KLSAKLSBTSSB2 b2lkIGxvYWRfODg4OF8oY29uc3QgdWludDMyX3QqIHB0ciwgc2l6ZV90IHRhaWwsIFUxNiogciwg VTE2KiBnLCBVMTYqIGIsIFUxNiogYSkgewotQEAgLTI4OTcsMTAgKzI5MzIsMTUgQEAgU0kgdm9p ZCBzdG9yZV84ODg4Xyh1aW50MzJfdCogcHRyLCBzaXplX3QgdGFpbCwgVTE2IHIsIFUxNiBnLCBV MTYgYiwgVTE2IGEpIHsKLSAgICAgICAgIGNhc2UgMjogdnN0NF9sYW5lX3U4KCh1aW50OF90Kiko cHRyKzEpLCByZ2JhLCAxKTsKLSAgICAgICAgIGNhc2UgMTogdnN0NF9sYW5lX3U4KCh1aW50OF90 KikocHRyKzApLCByZ2JhLCAwKTsKLSAgICAgfQotKyNlbHNlCi0rI2lmZGVmIFNLX0NQVV9CRU5E SUFOCi0rICAgIHN0b3JlKHB0ciwgdGFpbCwgY2FzdDxVMzI+KChyPDw4KSB8IGcpIDw8IDE2Ci0r ICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+KChiPDw4KSB8IGEpIDw8IDApOwotICNlbHNl Ci0gICAgIHN0b3JlKHB0ciwgdGFpbCwgY2FzdDxVMzI+KHIgfCAoZzw8OCkpIDw8ICAwCi0gICAg ICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+KGIgfCAoYTw8OCkpIDw8IDE2KTsKLSAjZW5kaWYK LSsjZW5kaWYKLSB9Ci0gCi0gU1RBR0VfUFAobG9hZF84ODg4LCBjb25zdCBTa1Jhc3RlclBpcGVs aW5lX01lbW9yeUN0eCogY3R4KSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL3V0aWxzL1NrSlNPTi5jcHAKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRpbHMvU2tKU09O LmNwcAotQEAgLTM0LDYgKzM0LDEwIEBAIHZvaWQgVmFsdWU6OmluaXRfdGFnZ2VkKFRhZyB0KSB7 Ci0gCi0gLy8gUG9pbnRlciB2YWx1ZXMgc3RvcmUgYSB0eXBlIChpbiB0aGUgdXBwZXIga1RhZ0Jp dHMgYml0cykgYW5kIGEgcG9pbnRlci4KLSB2b2lkIFZhbHVlOjppbml0X3RhZ2dlZF9wb2ludGVy KFRhZyB0LCB2b2lkKiBwKSB7Ci0rI2lmICFkZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQotKyAgICAv LyBDaGVjayB0aGF0IGtSZWNBbGlnbiBpcyBsYXJnZSBlbm91Z2ggdG8gbGVhdmUgcm9vbSBmb3Ig dGhlIHRhZwotKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihWYWx1ZSkgPiBzaXplb2YodWludHB0 cl90KSB8fCAhKGtSZWNBbGlnbiAmIFZhbHVlOjprVGFnTWFzayksICJrUmVjQWxpZ24gaXMgbm90 IGEgbXVsdGlwbGUgb2Yga1RhZ01hc2srMSIpOwotKyNlbmRpZgotICAgICAqdGhpcy0+Y2FzdDx1 aW50cHRyX3Q+KCkgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCk7Ci0gCi0gICAgIGlm IChzaXplb2YoVmFsdWUpID09IHNpemVvZih1aW50cHRyX3QpKSB7Ci1AQCAtMTY5LDcgKzE3Myw3 IEBAIHByaXZhdGU6Ci0gI2lmIGRlZmluZWQoU0tfQ1BVX0xFTkRJQU4pCi0gICAgICAgICAqczY0 ICY9IDB4MDBmZmZmZmZmZmZmZmZmZlVMTCA+PiAoKGtNYXhJbmxpbmVTdHJpbmdTaXplIC0gc2l6 ZSkgKiA4KTsKLSAjZWxzZQotLSAgICAgICAgc3RhdGljX2Fzc2VydChmYWxzZSwgIkJpZy1lbmRp YW4gYnVpbGRzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4iKTsKLSsgICAgICAgICpz NjQgJj0gMHhmZmZmZmZmZmZmZmZmZjAwVUxMIDw8ICgoa01heElubGluZVN0cmluZ1NpemUgLSBz aXplKSAqIDgpOwotICNlbmRpZgotICAgICB9Ci0gfTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRpbHMvU2tKU09OLmgKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRp bHMvU2tKU09OLmgKLUBAIC0xMjAsNiArMTIwLDcgQEAgcHJvdGVjdGVkOgotICAgICAgICAgIC0t IGhpZ2hlc3QgMyBiaXRzIHJlc2VydmVkIGZvciB0eXBlIHN0b3JhZ2UKLSAKLSAgICAgICovCi0r I2lmIGRlZmluZWQoU0tfQ1BVX0xFTkRJQU4pCi0gICAgIGVudW0gY2xhc3MgVGFnIDogdWludDhf dCB7Ci0gICAgICAgICAvLyBXZSBwaWNrZWQga1Nob3J0U3RyaW5nID09IDAgc28gdGhhdCB0YWcg MHgwMCBhbmQgc3RvcmVkIG1heF9zaXplLXNpemUgKDctNz0wKQotICAgICAgICAgLy8gY29udmVu aWVudGx5IG92ZXJsYXAgdGhlICdcMCcgdGVybWluYXRvciwgYWxsb3dpbmcgdXMgdG8gc3RvcmUg YSA3IGNoYXJhY3RlcgotQEAgLTEzNCw2ICsxMzUsMjIgQEAgcHJvdGVjdGVkOgotICAgICAgICAg a09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgPSAwYjExMTAwMDAwLCAgLy8gcHRyIHRvIGV4 dGVybmFsIHN0b3JhZ2UKLSAgICAgfTsKLSAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtU YWdNYXNrID0gMGIxMTEwMDAwMDsKLSsjZWxzZQotKyAgICBlbnVtIGNsYXNzIFRhZyA6IHVpbnQ4 X3QgewotKyAgICAgICAgLy8gV2UgcGlja2VkIGtTaG9ydFN0cmluZyA9PSAwIHNvIHRoYXQgdGFn IDB4MDAgYW5kIHN0b3JlZCBtYXhfc2l6ZS1zaXplICg3LTc9MCkKLSsgICAgICAgIC8vIGNvbnZl bmllbnRseSBvdmVybGFwIHRoZSAnXDAnIHRlcm1pbmF0b3IsIGFsbG93aW5nIHVzIHRvIHN0b3Jl IGEgNyBjaGFyYWN0ZXIKLSsgICAgICAgIC8vIEMgc3RyaW5nIGlubGluZS4KLSsgICAgICAgIGtT aG9ydFN0cmluZyAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDAwMCwgIC8vIGlubGluZSBwYXls b2FkCi0rICAgICAgICBrTnVsbCAgICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAwMDEs ICAvLyBubyBwYXlsb2FkCi0rICAgICAgICBrQm9vbCAgICAgICAgICAgICAgICAgICAgICAgICA9 IDBiMDAwMDAwMTAsICAvLyBpbmxpbmUgcGF5bG9hZAotKyAgICAgICAga0ludCAgICAgICAgICAg ICAgICAgICAgICAgICAgPSAwYjAwMDAwMDExLCAgLy8gaW5saW5lIHBheWxvYWQKLSsgICAgICAg IGtGbG9hdCAgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDEwMCwgIC8vIGlubGluZSBw YXlsb2FkCi0rICAgICAgICBrU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAx MDEsICAvLyBwdHIgdG8gZXh0ZXJuYWwgc3RvcmFnZQotKyAgICAgICAga0FycmF5ICAgICAgICAg ICAgICAgICAgICAgICAgPSAwYjAwMDAwMTEwLCAgLy8gcHRyIHRvIGV4dGVybmFsIHN0b3JhZ2UK LSsgICAgICAgIGtPYmplY3QgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDExMSwgIC8v IHB0ciB0byBleHRlcm5hbCBzdG9yYWdlCi0rICAgIH07Ci0rICAgIHN0YXRpYyBjb25zdGV4cHIg dWludDhfdCBrVGFnTWFzayA9IDBiMDAwMDAxMTE7Ci0rI2VuZGlmCi0gCi0gICAgIHZvaWQgaW5p dF90YWdnZWQoVGFnKTsKLSAgICAgdm9pZCBpbml0X3RhZ2dlZF9wb2ludGVyKFRhZywgdm9pZCop OwotQEAgLTE5MiwxNCArMjA5LDE0IEBAIHByaXZhdGU6Ci0gCi0gICAgIHVpbnQ4X3QgZkRhdGE4 W2tWYWx1ZVNpemVdOwotIAotLSNpZiBkZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQotICAgICBzdGF0 aWMgY29uc3RleHByIHNpemVfdCBrVGFnT2Zmc2V0ID0ga1ZhbHVlU2l6ZSAtIDE7Ci0gCi0rI2lm IGRlZmluZWQoU0tfQ1BVX0xFTkRJQU4pCi0gICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90 IGtUYWdQb2ludGVyTWFzayA9Ci0gICAgICAgICAgICAgfihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+ KGtUYWdNYXNrKSA8PCAoKHNpemVvZih1aW50cHRyX3QpIC0gMSkgKiA4KSk7Ci0gI2Vsc2UKLS0g ICAgLy8gVGhlIGN1cnJlbnQgdmFsdWUgbGF5b3V0IGFzc3VtZXMgTEUgYW5kIHdpbGwgdGFrZSBz b21lIHR3ZWFraW5nIGZvciBCRS4KLS0gICAgc3RhdGljX2Fzc2VydChmYWxzZSwgIkJpZy1lbmRp YW4gYnVpbGRzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4iKTsKLSsgICAgc3RhdGlj IGNvbnN0ZXhwciB1aW50cHRyX3Qga1RhZ1BvaW50ZXJNYXNrID0KLSsgICAgICAgICAgICB+c3Rh dGljX2Nhc3Q8dWludHB0cl90PihrVGFnTWFzayk7Ci0gI2VuZGlmCi0gfTsKLSAKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0 eS9za2Ntcy9za2Ntcy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NrY21zLmNjCi1AQCAtNjYsMTAgKzY2 LDE1IEBAIHN0YXRpYyBmbG9hdCBldmFsX2N1cnZlKGNvbnN0IHNrY21zX0N1cnZlKiBjdXJ2ZSwg ZmxvYXQgeCkgewotICAgICAgICAgdWludDE2X3QgYmVfbCwgYmVfaDsKLSAgICAgICAgIG1lbWNw eSgmYmVfbCwgY3VydmUtPnRhYmxlXzE2ICsgMipsbywgMik7Ci0gICAgICAgICBtZW1jcHkoJmJl X2gsIGN1cnZlLT50YWJsZV8xNiArIDIqaGksIDIpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAg ICAgICAgbCA9IGJlX2wgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICBoID0gYmVfaCAqICgxLzY1 NTM1LjBmKTsKLSsjZWxzZQotICAgICAgICAgdWludDE2X3QgbGVfbCA9ICgoYmVfbCA8PCA4KSB8 IChiZV9sID4+IDgpKSAmIDB4ZmZmZjsKLSAgICAgICAgIHVpbnQxNl90IGxlX2ggPSAoKGJlX2gg PDwgOCkgfCAoYmVfaCA+PiA4KSkgJiAweGZmZmY7Ci0gICAgICAgICBsID0gbGVfbCAqICgxLzY1 NTM1LjBmKTsKLSAgICAgICAgIGggPSBsZV9oICogKDEvNjU1MzUuMGYpOwotKyNlbmRpZgotICAg ICB9Ci0gICAgIHJldHVybiBsICsgKGgtbCkqdDsKLSB9Ci1AQCAtMTI0LDIxICsxMjksMjkgQEAg ZW51bSB7Ci0gc3RhdGljIHVpbnQxNl90IHJlYWRfYmlnX3UxNihjb25zdCB1aW50OF90KiBwdHIp IHsKLSAgICAgdWludDE2X3QgYmU7Ci0gICAgIG1lbWNweSgmYmUsIHB0ciwgc2l6ZW9mKGJlKSk7 Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgIHJldHVybiBiZTsKLSsjZWxzZQotICNpZiBkZWZp bmVkKF9NU0NfVkVSKQotICAgICByZXR1cm4gX2J5dGVzd2FwX3VzaG9ydChiZSk7Ci0gI2Vsc2UK LSAgICAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDE2KGJlKTsKLSAjZW5kaWYKLSsjZW5kaWYKLSB9 Ci0gCi0gc3RhdGljIHVpbnQzMl90IHJlYWRfYmlnX3UzMihjb25zdCB1aW50OF90KiBwdHIpIHsK LSAgICAgdWludDMyX3QgYmU7Ci0gICAgIG1lbWNweSgmYmUsIHB0ciwgc2l6ZW9mKGJlKSk7Ci0r I2lmIF9fQklHX0VORElBTl9fCi0rICAgIHJldHVybiBiZTsKLSsjZWxzZQotICNpZiBkZWZpbmVk KF9NU0NfVkVSKQotICAgICByZXR1cm4gX2J5dGVzd2FwX3Vsb25nKGJlKTsKLSAjZWxzZQotICAg ICByZXR1cm4gX19idWlsdGluX2Jzd2FwMzIoYmUpOwotICNlbmRpZgotKyNlbmRpZgotIH0KLSAK LSBzdGF0aWMgaW50MzJfdCByZWFkX2JpZ19pMzIoY29uc3QgdWludDhfdCogcHRyKSB7Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRf cGFydHkvc2tjbXMvc3JjL1RyYW5zZm9ybV9pbmwuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NyYy9UcmFu c2Zvcm1faW5sLmgKLUBAIC0zOTIsOSArMzkyLDExIEBAIFNJIFUzMiBnYXRoZXJfMzIoY29uc3Qg dWludDhfdCogcCwgSTMyIGl4KSB7Ci0gfQotIAotIFNJIFUzMiBnYXRoZXJfMjQoY29uc3QgdWlu dDhfdCogcCwgSTMyIGl4KSB7Ci0rI2lmICFfX0JJR19FTkRJQU5fXwotICAgICAvLyBGaXJzdCwg YmFjayB1cCBhIGJ5dGUuICBBbnkgcGxhY2Ugd2UncmUgZ2F0aGVyaW5nIGZyb20gaGFzIGEgc2Fm ZSBqdW5rIGJ5dGUgdG8gcmVhZAotICAgICAvLyBpbiBmcm9udCBvZiBpdCwgZWl0aGVyIGEgcHJl dmlvdXMgdGFibGUgdmFsdWUsIG9yIHNvbWUgdGFnIG1ldGFkYXRhLgotICAgICBwIC09IDE7Ci0r I2VuZGlmCi0gCi0gICAgIC8vIExvYWQgdGhlIGkndGggMjQtYml0IHZhbHVlIGZyb20gcCwgYW5k IDEgZXh0cmEgYnl0ZS4KLSAgICAgYXV0byBsb2FkXzI0XzMyID0gW3BdKGludCBpKSB7Ci1AQCAt NDM1LDggKzQzNywxMCBAQCBTSSBVMzIgZ2F0aGVyXzI0KGNvbnN0IHVpbnQ4X3QqIHAsIEkzMiBp eCkgewotIAotICNpZiAhZGVmaW5lZChfX2FybV9fKQotICAgICBTSSB2b2lkIGdhdGhlcl80OChj b25zdCB1aW50OF90KiBwLCBJMzIgaXgsIFU2NCogdikgewotKyNpZiAhX19CSUdfRU5ESUFOX18K LSAgICAgICAgIC8vIEFzIGluIGdhdGhlcl8yNCgpLCB3aXRoIGV2ZXJ5dGhpbmcgZG91YmxlZC4K LSAgICAgICAgIHAgLT0gMjsKLSsjZW5kaWYKLSAKLSAgICAgICAgIC8vIExvYWQgdGhlIGkndGgg NDgtYml0IHZhbHVlIGZyb20gcCwgYW5kIDIgZXh0cmEgYnl0ZXMuCi0gICAgICAgICBhdXRvIGxv YWRfNDhfNjQgPSBbcF0oaW50IGkpIHsKLUBAIC00OTksNyArNTAzLDkgQEAgU0kgRiBGX2Zyb21f VTgoVTggdikgewotIFNJIEYgRl9mcm9tX1UxNl9CRShVMTYgdikgewotICAgICAvLyBBbGwgMTYt Yml0IElDQyB2YWx1ZXMgYXJlIGJpZy1lbmRpYW4sIHNvIHdlIGJ5dGUgc3dhcCBiZWZvcmUgY29u dmVydGluZyB0byBmbG9hdC4KLSAgICAgLy8gTVNWQyBjYXRjaGVzIHRoZSAibG9zcyIgb2YgZGF0 YSBoZXJlIGluIHRoZSBwb3J0YWJsZSBwYXRoLCBzbyB3ZSBhbHNvIG1ha2Ugc3VyZSB0byBtYXNr LgotKyNpZiAhX19CSUdfRU5ESUFOX18KLSAgICAgdiA9IFUxNiggMCB8ICgodiAmIDB4MDBmZikg PDwgOCkgfCAoKHYgJiAweGZmMDApID4+IDgpICk7Ci0rI2VuZGlmCi0gICAgIHJldHVybiBjYXN0 PEY+KHYpICogKDEvNjU1MzUuMGYpOwotIH0KLSAKLUBAIC01MzQsOSArNTQwLDE1IEBAIFNJIEYg dGFibGUoY29uc3Qgc2tjbXNfQ3VydmUqIGN1cnZlLCBGIHYpIHsKLSBTSSB2b2lkIHNhbXBsZV9j bHV0XzgoY29uc3Qgc2tjbXNfQTJCKiBhMmIsIEkzMiBpeCwgRiogciwgRiogZywgRiogYikgewot ICAgICBVMzIgcmdiID0gZ2F0aGVyXzI0KGEyYi0+Z3JpZF84LCBpeCk7Ci0gCi0rI2lmIF9fQklH X0VORElBTl9fCi0rICAgICpyID0gY2FzdDxGPigocmdiID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1 LjBmKTsKLSsgICAgKmcgPSBjYXN0PEY+KChyZ2IgPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYp OwotKyAgICAqYiA9IGNhc3Q8Rj4oKHJnYiA+PiAgMCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0r I2Vsc2UKLSAgICAgKnIgPSBjYXN0PEY+KChyZ2IgPj4gIDApICYgMHhmZikgKiAoMS8yNTUuMGYp OwotICAgICAqZyA9IGNhc3Q8Rj4oKHJnYiA+PiAgOCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0g ICAgICpiID0gY2FzdDxGPigocmdiID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsjZW5k aWYKLSB9Ci0gCi0gU0kgdm9pZCBzYW1wbGVfY2x1dF8xNihjb25zdCBza2Ntc19BMkIqIGEyYiwg STMyIGl4LCBGKiByLCBGKiBnLCBGKiBiKSB7Ci1AQCAtNTQ5LDEyICs1NjEsMTggQEAgU0kgdm9p ZCBzYW1wbGVfY2x1dF8xNihjb25zdCBza2Ntc19BMkIqIGEyYiwgSTMyIGl4LCBGKiByLCBGKiBn LCBGKiBiKSB7Ci0gICAgIC8vIFRoaXMgc3RyYXRlZ3kgaXMgbXVjaCBmYXN0ZXIgZm9yIDY0LWJp dCBidWlsZHMsIGFuZCBmaW5lIGZvciAzMi1iaXQgeDg2IHRvby4KLSAgICAgVTY0IHJnYjsKLSAg ICAgZ2F0aGVyXzQ4KGEyYi0+Z3JpZF8xNiwgaXgsICZyZ2IpOwotKyNpZiBfX0JJR19FTkRJQU5f XwotKyAgICAqciA9IGNhc3Q8Rj4oKHJnYiA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYp OwotKyAgICAqZyA9IGNhc3Q8Rj4oKHJnYiA+PiAxNikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYp OwotKyAgICAqYiA9IGNhc3Q8Rj4oKHJnYiA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYp OwotKyNlbHNlCi0gICAgIHJnYiA9IHN3YXBfZW5kaWFuXzE2eDQocmdiKTsKLSAKLSAgICAgKnIg PSBjYXN0PEY+KChyZ2IgPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgKmcg PSBjYXN0PEY+KChyZ2IgPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgKmIg PSBjYXN0PEY+KChyZ2IgPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAjZW5kaWYK LSsjZW5kaWYKLSB9Ci0gCi0gLy8gR0NDIDcuMi4wIGhpdHMgYW4gaW50ZXJuYWwgY29tcGlsZXIg ZXJyb3Igd2l0aCAtZmlubGluZS1mdW5jdGlvbnMgKG9yIC1PMykKLUBAIC02OTUsMTAgKzcxMywx NyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJn cywKLSAgICAgICAgICAgICBjYXNlIE9wX2xvYWRfODg4ODp7Ci0gICAgICAgICAgICAgICAgIFUz MiByZ2JhID0gbG9hZDxVMzI+KHNyYyArIDQqaSk7Ci0gCi0rI2lmIF9fQklHX0VORElBTl9fCi0r ICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChyZ2JhID4+IDI0KSAmIDB4ZmYpICogKDEvMjU1 LjBmKTsKLSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHJnYmEgPj4gMTYpICYgMHhmZikg KiAoMS8yNTUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocmdiYSA+PiAgOCkg JiAweGZmKSAqICgxLzI1NS4wZik7Ci0rICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChyZ2Jh ID4+ICAwKSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBy ID0gY2FzdDxGPigocmdiYSA+PiAgMCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICAgICAg ICAgICAgIGcgPSBjYXN0PEY+KChyZ2JhID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSAg ICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKHJnYmEgPj4gMTYpICYgMHhmZikgKiAoMS8yNTUu MGYpOwotICAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocmdiYSA+PiAyNCkgJiAweGZmKSAq ICgxLzI1NS4wZik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgfSBicmVhazsKLSAKLSAgICAgICAg ICAgICBjYXNlIE9wX2xvYWRfODg4OF9wYWxldHRlODp7Ci1AQCAtNzI3LDEzICs3NTIsMjkgQEAg c3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0g ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90KiByZ2IgPSAoY29uc3QgdWludDE2X3QqKXB0 cjsgLy8gY2FzdCB0byBjb25zdCB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAj aWYgZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3QgdiA9 IHZsZDNfdTE2KHJnYik7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHIg PSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMF0pKSAqICgxLzY1NTM1LjBmKTsK LSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsx XSkpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihzd2FwX2Vu ZGlhbl8xNigoVTE2KXYudmFsWzJdKSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAg ICAgICAgICAgciA9IGNhc3Q8Rj4oKFUxNil2LnZhbFswXSkgKiAoMS82NTUzNS4wZik7Ci0gICAg ICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChVMTYpdi52YWxbMV0pICogKDEvNjU1MzUuMGYpOwot ICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigoVTE2KXYudmFsWzJdKSAqICgxLzY1NTM1LjBm KTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAg ICAgICAgICAgICAgICBVMzIgUiA9IGxvYWRfMzxVMzI+KHJnYiswKSwKLSsgICAgICAgICAgICAg ICAgICAgIEcgPSBsb2FkXzM8VTMyPihyZ2IrMSksCi0rICAgICAgICAgICAgICAgICAgICBCID0g bG9hZF8zPFUzMj4ocmdiKzIpOwotKyAgICAgICAgICAgICAgICAvLyBSLEcsQiBhcmUgbGl0dGxl LWVuZGlhbiAxNi1iaXQsIHNvIGJ5dGUgc3dhcCB0aGVtIGJlZm9yZSBjb252ZXJ0aW5nIHRvIGZs b2F0LgotKyAgICAgICAgICAgICAgICByID0gY2FzdDxGPigoUiAmIDB4MDBmZik8PDggfCAoUiAm IDB4ZmYwMCk+PjgpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxG PigoRyAmIDB4MDBmZik8PDggfCAoRyAmIDB4ZmYwMCk+PjgpICogKDEvNjU1MzUuMGYpOwotKyAg ICAgICAgICAgICAgICBiID0gY2FzdDxGPigoQiAmIDB4MDBmZik8PDggfCAoQiAmIDB4ZmYwMCk+ PjgpICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+ KGxvYWRfMzxVMzI+KHJnYiswKSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcg PSBjYXN0PEY+KGxvYWRfMzxVMzI+KHJnYisxKSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAg ICAgICAgIGIgPSBjYXN0PEY+KGxvYWRfMzxVMzI+KHJnYisyKSkgKiAoMS82NTUzNS4wZik7Ci0r I2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgfSBicmVhazsKLSAKLUBA IC03NDMsMTcgKzc4NCwzMyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBj b25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QqIHJnYmEg PSAoY29uc3QgdWludDE2X3QqKXB0cjsgLy8gY2FzdCB0byBjb25zdCB1aW50MTZfdCogdG8gYmUg c2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAg ICAgICB1aW50MTZ4NHg0X3QgdiA9IHZsZDRfdTE2KHJnYmEpOwotKyNpZiBfX0JJR19FTkRJQU5f XwotKyAgICAgICAgICAgICAgICByID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFs WzBdKSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KHN3YXBf ZW5kaWFuXzE2KChVMTYpdi52YWxbMV0pKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAg ICAgYiA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsyXSkpICogKDEvNjU1MzUu MGYpOwotKyAgICAgICAgICAgICAgICBhID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYu dmFsWzNdKSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9IGNh c3Q8Rj4oKFUxNil2LnZhbFswXSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcg PSBjYXN0PEY+KChVMTYpdi52YWxbMV0pICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAg ICBiID0gY2FzdDxGPigoVTE2KXYudmFsWzJdKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAg ICAgICAgYSA9IGNhc3Q8Rj4oKFUxNil2LnZhbFszXSkgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlm Ci0gICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAg ICAgVTY0IHB4ID0gc3dhcF9lbmRpYW5fMTZ4NChsb2FkPFU2ND4ocmdiYSkpOwotKwotKyAgICAg ICAgICAgICAgICByID0gY2FzdDxGPigocHggPj4gNDgpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBm KTsKLSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHB4ID4+IDMyKSAmIDB4ZmZmZikgKiAo MS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChweCA+PiAxNikgJiAw eGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocHgg Pj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQotICAgICAgICAgICAgICAg ICBVNjQgcHggPSBsb2FkPFU2ND4ocmdiYSk7Ci0gCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0 PEY+KChweCA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAg ICBnID0gY2FzdDxGPigocHggPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAg ICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKHB4ID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4w Zik7Ci0gICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChweCA+PiA0OCkgJiAweGZmZmYpICog KDEvNjU1MzUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAg IH0gYnJlYWs7Ci0gCi1AQCAtNzYzLDEwICs4MjAsMjEgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMo Y29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIGNvbnN0 IHVpbnQxNl90KiByZ2IgPSAoY29uc3QgdWludDE2X3QqKXB0cjsgLy8gY2FzdCB0byBjb25zdCB1 aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9O KQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3QgdiA9IHZsZDNfdTE2KHJnYik7Ci0rI2lm IF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChVMTYpdi52YWxb MF0pICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoVTE2KXYu dmFsWzFdKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKFUx Nil2LnZhbFsyXSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9 IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFswXSkpICogKDEvNjU1MzUuMGYpOwot ICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzFd KSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KHN3YXBfZW5k aWFuXzE2KChVMTYpdi52YWxbMl0pKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAg ICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICByID0gY2Fz dDxGPihsb2FkXzM8VTMyPihyZ2IrMCkpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAg ICBnID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMSkpICogKDEvNjU1MzUuMGYpOwotKyAgICAg ICAgICAgICAgICBiID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMikpICogKDEvNjU1MzUuMGYp OwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIFUzMiBSID0gbG9hZF8zPFUzMj4ocmdiKzApLAot ICAgICAgICAgICAgICAgICAgICAgRyA9IGxvYWRfMzxVMzI+KHJnYisxKSwKLSAgICAgICAgICAg ICAgICAgICAgIEIgPSBsb2FkXzM8VTMyPihyZ2IrMik7Ci1AQCAtNzc0LDYgKzg0Miw3IEBAIHN0 YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAg ICAgICAgICAgICAgICByID0gY2FzdDxGPigoUiAmIDB4MDBmZik8PDggfCAoUiAmIDB4ZmYwMCk+ PjgpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoRyAmIDB4 MDBmZik8PDggfCAoRyAmIDB4ZmYwMCk+PjgpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAg ICAgICBiID0gY2FzdDxGPigoQiAmIDB4MDBmZik8PDggfCAoQiAmIDB4ZmYwMCk+PjgpICogKDEv NjU1MzUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgIH0g YnJlYWs7Ci0gCi1AQCAtNzgzLDE3ICs4NTIsMzMgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29u c3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHVp bnQxNl90KiByZ2JhID0gKGNvbnN0IHVpbnQxNl90KilwdHI7IC8vIGNhc3QgdG8gY29uc3QgdWlu dDE2X3QqIHRvIGJlIHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikK LSAgICAgICAgICAgICAgICAgdWludDE2eDR4NF90IHYgPSB2bGQ0X3UxNihyZ2JhKTsKLSsjaWYg X19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsw XSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChVMTYpdi52 YWxbMV0pICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigoVTE2 KXYudmFsWzJdKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4o KFUxNil2LnZhbFszXSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAg ciA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFswXSkpICogKDEvNjU1MzUuMGYp OwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFs WzFdKSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KHN3YXBf ZW5kaWFuXzE2KChVMTYpdi52YWxbMl0pKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAg ICAgYSA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFszXSkpICogKDEvNjU1MzUu MGYpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0r ICAgICAgICAgICAgICAgIFU2NCBweCA9IGxvYWQ8VTY0PihyZ2JhKTsKLSsKLSsgICAgICAgICAg ICAgICAgciA9IGNhc3Q8Rj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0r ICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1 MzUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocHggPj4gMTYpICYgMHhmZmZm KSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHB4ID4+ICAw KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgVTY0 IHB4ID0gc3dhcF9lbmRpYW5fMTZ4NChsb2FkPFU2ND4ocmdiYSkpOwotIAotICAgICAgICAgICAg ICAgICByID0gY2FzdDxGPigocHggPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAg ICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHB4ID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUz NS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZmZmYp ICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocHggPj4gNDgp ICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYK LSAgICAgICAgICAgICB9IGJyZWFrOwotIAotQEAgLTgyOCwxMCArOTEzLDE3IEBAIHN0YXRpYyB2 b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAg ICAgICAgICAgICAgQSA9IChVMTYpdi52YWxbM107Ci0gICAgICAgICAgICAgI2Vsc2UKLSAgICAg ICAgICAgICAgICAgVTY0IHB4ID0gbG9hZDxVNjQ+KHJnYmEpOwotKyNpZiBfX0JJR19FTkRJQU5f XwotKyAgICAgICAgICAgICAgICBVMTYgUiA9IGNhc3Q8VTE2PigocHggPj4gNDgpICYgMHhmZmZm KSwKLSsgICAgICAgICAgICAgICAgICAgIEcgPSBjYXN0PFUxNj4oKHB4ID4+IDMyKSAmIDB4ZmZm ZiksCi0rICAgICAgICAgICAgICAgICAgICBCID0gY2FzdDxVMTY+KChweCA+PiAxNikgJiAweGZm ZmYpLAotKyAgICAgICAgICAgICAgICAgICAgQSA9IGNhc3Q8VTE2PigocHggPj4gIDApICYgMHhm ZmZmKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBVMTYgUiA9IGNhc3Q8VTE2PigocHggPj4g IDApICYgMHhmZmZmKSwKLSAgICAgICAgICAgICAgICAgICAgIEcgPSBjYXN0PFUxNj4oKHB4ID4+ IDE2KSAmIDB4ZmZmZiksCi0gICAgICAgICAgICAgICAgICAgICBCID0gY2FzdDxVMTY+KChweCA+ PiAzMikgJiAweGZmZmYpLAotICAgICAgICAgICAgICAgICAgICAgQSA9IGNhc3Q8VTE2PigocHgg Pj4gNDgpICYgMHhmZmZmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAg ICAgICAgICAgciA9IEZfZnJvbV9IYWxmKFIpOwotICAgICAgICAgICAgICAgICBnID0gRl9mcm9t X0hhbGYoRyk7Ci1AQCAtMTAyNCwxMCArMTExNiwxNyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhj b25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICB9IHJldHVybjsK LSAKLSAgICAgICAgICAgICBjYXNlIE9wX3N0b3JlXzg4ODg6IHsKLSsjaWYgX19CSUdfRU5ESUFO X18KLSsgICAgICAgICAgICAgICAgc3RvcmUoZHN0ICsgNCppLCBjYXN0PFUzMj4odG9fZml4ZWQo ciAqIDI1NSkgPDwgMjQpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxV MzI+KHRvX2ZpeGVkKGcgKiAyNTUpIDw8IDE2KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChiICogMjU1KSA8PCAgOCkKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9fZml4ZWQoYSAqIDI1NSkgPDwgIDApKTsK LSsjZWxzZQotICAgICAgICAgICAgICAgICBzdG9yZShkc3QgKyA0KmksIGNhc3Q8VTMyPih0b19m aXhlZChyICogMjU1KSA8PCAgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBj YXN0PFUzMj4odG9fZml4ZWQoZyAqIDI1NSkgPDwgIDgpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgY2FzdDxVMzI+KHRvX2ZpeGVkKGIgKiAyNTUpIDw8IDE2KQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChhICogMjU1KSA8PCAy NCkpOwotKyNlbmRpZgotICAgICAgICAgICAgIH0gcmV0dXJuOwotIAotICAgICAgICAgICAgIGNh c2UgT3Bfc3RvcmVfMTAxMDEwMjogewotQEAgLTEwNDMsMTUgKzExNDIsMzAgQEAgc3RhdGljIHZv aWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAg ICAgICAgIHVpbnQxNl90KiByZ2IgPSAodWludDE2X3QqKXB0cjsgICAgICAgICAgLy8gZm9yIHRo aXMgY2FzdCB0byB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5l ZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3QgdiA9IHt7Ci0rI2lm IF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2Vu ZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSkpLAotKyAgICAgICAgICAgICAg ICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2 NTUzNSkpKSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2 KGNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSksCi0rI2Vsc2UKLSAgICAgICAgICAgICAg ICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSwKLSAgICAg ICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUp KSwKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChi ICogNjU1MzUpKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAgICAg ICAgIHZzdDNfdTE2KHJnYiwgdik7Ci0gICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5E SUFOX18KLSsgICAgICAgICAgICAgICAgSTMyIFIgPSB0b19maXhlZChyICogNjU1MzUpLAotKyAg ICAgICAgICAgICAgICAgICAgRyA9IHRvX2ZpeGVkKGcgKiA2NTUzNSksCi0rICAgICAgICAgICAg ICAgICAgICBCID0gdG9fZml4ZWQoYiAqIDY1NTM1KTsKLSsgICAgICAgICAgICAgICAgc3RvcmVf MyhyZ2IrMCwgY2FzdDxVMTY+KChSICYgMHgwMGZmKSA8PCA4IHwgKFIgJiAweGZmMDApID4+IDgp ICk7Ci0rICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzEsIGNhc3Q8VTE2PigoRyAmIDB4MDBm ZikgPDwgOCB8IChHICYgMHhmZjAwKSA+PiA4KSApOwotKyAgICAgICAgICAgICAgICBzdG9yZV8z KHJnYisyLCBjYXN0PFUxNj4oKEIgJiAweDAwZmYpIDw8IDggfCAoQiAmIDB4ZmYwMCkgPj4gOCkg KTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYiswLCBjYXN0PFUxNj4odG9f Zml4ZWQociAqIDY1NTM1KSkpOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisxLCBjYXN0 PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSkpOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJn YisyLCBjYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpOwotKyNlbmRpZgotICAgICAgICAg ICAgICNlbmRpZgotIAotICAgICAgICAgICAgIH0gcmV0dXJuOwotQEAgLTEwNjIsMTggKzExNzYs MzMgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFy Z3MsCi0gICAgICAgICAgICAgICAgIHVpbnQxNl90KiByZ2JhID0gKHVpbnQxNl90KilwdHI7ICAg ICAgICAvLyBmb3IgdGhpcyBjYXN0IHRvIHVpbnQxNl90KiB0byBiZSBzYWZlLgotICAgICAgICAg ICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAgICAgIHVpbnQxNng0eDRf dCB2ID0ge3sKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgICAgICh1aW50 MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSksCi0r ICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4o dG9fZml4ZWQoZyAqIDY1NTM1KSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qp c3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKSwKLSsgICAgICAg ICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhl ZChhICogNjU1MzUpKSksCi0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90 KWNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSwKLSAgICAgICAgICAgICAgICAgICAgICh1 aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSwKLSAgICAgICAgICAgICAg ICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSwKLSAgICAg ICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChhICogNjU1MzUp KSwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAgICAgICAgIHZzdDRf dTE2KHJnYmEsIHYpOwotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0r ICAgICAgICAgICAgICAgIFU2NCBweCA9IGNhc3Q8VTY0Pih0b19maXhlZChyICogNjU1MzUpKSA8 PCA0OAotKyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoZyAqIDY1 NTM1KSkgPDwgMzIKLSsgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVk KGIgKiA2NTUzNSkpIDw8IDE2Ci0rICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0 b19maXhlZChhICogNjU1MzUpKSA8PCAgMDsKLSsgICAgICAgICAgICAgICAgc3RvcmUocmdiYSwg c3dhcF9lbmRpYW5fMTZ4NChweCkpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9 IGNhc3Q8VTY0Pih0b19maXhlZChyICogNjU1MzUpKSA8PCAgMAotICAgICAgICAgICAgICAgICAg ICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoZyAqIDY1NTM1KSkgPDwgMTYKLSAgICAgICAgICAg ICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpIDw8IDMyCi0gICAg ICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChhICogNjU1MzUpKSA8PCA0 ODsKLSAgICAgICAgICAgICAgICAgc3RvcmUocmdiYSwgcHgpOwotKyNlbmRpZgotICAgICAgICAg ICAgICNlbmRpZgotICAgICAgICAgICAgIH0gcmV0dXJuOwotIAotQEAgLTEwODMsMTggKzEyMTIs MzAgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFy Z3MsCi0gICAgICAgICAgICAgICAgIHVpbnQxNl90KiByZ2IgPSAodWludDE2X3QqKXB0cjsgICAg ICAgICAgLy8gZm9yIHRoaXMgY2FzdCB0byB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAg ICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgz X3QgdiA9IHt7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgICAgICAodWlu dDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSksCi0rICAgICAgICAgICAgICAg ICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSksCi0rICAgICAg ICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSks Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2 KGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAgICAo dWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSkp LAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxV MTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07 Ci0gICAgICAgICAgICAgICAgIHZzdDNfdTE2KHJnYiwgdik7Ci0gICAgICAgICAgICAgI2Vsc2UK LSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMCwgY2Fz dDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKTsKLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhy Z2IrMSwgY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKTsKLSsgICAgICAgICAgICAgICAg c3RvcmVfMyhyZ2IrMiwgY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKTsKLSsjZWxzZQot ICAgICAgICAgICAgICAgICBJMzIgUiA9IHRvX2ZpeGVkKHIgKiA2NTUzNSksCi0gICAgICAgICAg ICAgICAgICAgICBHID0gdG9fZml4ZWQoZyAqIDY1NTM1KSwKLSAgICAgICAgICAgICAgICAgICAg IEIgPSB0b19maXhlZChiICogNjU1MzUpOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisw LCBjYXN0PFUxNj4oKFIgJiAweDAwZmYpIDw8IDggfCAoUiAmIDB4ZmYwMCkgPj4gOCkgKTsKLSAg ICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMSwgY2FzdDxVMTY+KChHICYgMHgwMGZmKSA8PCA4 IHwgKEcgJiAweGZmMDApID4+IDgpICk7Ci0gICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzIs IGNhc3Q8VTE2PigoQiAmIDB4MDBmZikgPDwgOCB8IChCICYgMHhmZjAwKSA+PiA4KSApOwotKyNl bmRpZgotICAgICAgICAgICAgICNlbmRpZgotIAotICAgICAgICAgICAgIH0gcmV0dXJuOwotQEAg LTExMDUsMTggKzEyNDYsMzMgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywg Y29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIHVpbnQxNl90KiByZ2JhID0gKHVp bnQxNl90KilwdHI7ICAgICAgICAvLyBmb3IgdGhpcyBjYXN0IHRvIHVpbnQxNl90KiB0byBiZSBz YWZlLgotICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAg ICAgIHVpbnQxNng0eDRfdCB2ID0ge3sKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAg ICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSwKLSsg ICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1 MzUpKSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhl ZChiICogNjU1MzUpKSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2 Pih0b19maXhlZChhICogNjU1MzUpKSwKLSsjZWxzZQotICAgICAgICAgICAgICAgICAgICAgKHVp bnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKSwK LSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2 Pih0b19maXhlZChnICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRf dClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpLAotICAgICAg ICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2Zp eGVkKGEgKiA2NTUzNSkpKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAg ICAgICAgICAgIHZzdDRfdTE2KHJnYmEsIHYpOwotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9f QklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIFU2NCBweCA9IGNhc3Q8VTY0Pih0b19maXhl ZChyICogNjU1MzUpKSA8PCA0OAotKyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4o dG9fZml4ZWQoZyAqIDY1NTM1KSkgPDwgMzIKLSsgICAgICAgICAgICAgICAgICAgICAgIHwgY2Fz dDxVNjQ+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpIDw8IDE2Ci0rICAgICAgICAgICAgICAgICAgICAg ICB8IGNhc3Q8VTY0Pih0b19maXhlZChhICogNjU1MzUpKSA8PCAgMDsKLSsgICAgICAgICAgICAg ICAgc3RvcmUocmdiYSwgcHgpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9IGNh c3Q8VTY0Pih0b19maXhlZChyICogNjU1MzUpKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICAg ICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoZyAqIDY1NTM1KSkgPDwgMTYKLSAgICAgICAgICAgICAg ICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpIDw8IDMyCi0gICAgICAg ICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChhICogNjU1MzUpKSA8PCA0ODsK LSAgICAgICAgICAgICAgICAgc3RvcmUocmdiYSwgc3dhcF9lbmRpYW5fMTZ4NChweCkpOwotKyNl bmRpZgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgIH0gcmV0dXJuOwotIAotQEAg LTExNjAsMTAgKzEzMTYsMTcgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywg Y29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIH19OwotICAgICAgICAgICAgICAg ICB2c3Q0X3UxNihyZ2JhLCB2KTsKLSAgICAgICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJ QU5fXwotKyAgICAgICAgICAgICAgICBzdG9yZShyZ2JhLCBjYXN0PFU2ND4oUikgPDwgNDgKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KEcpIDw8IDMyCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihCKSA8PCAxNgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBjYXN0PFU2ND4oQSkgPDwgIDApOwotKyNlbHNlCi0gICAgICAgICAgICAgICAg IHN0b3JlKHJnYmEsIGNhc3Q8VTY0PihSKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBjYXN0PFU2ND4oRykgPDwgMTYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2Fz dDxVNjQ+KEIpIDw8IDMyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihB KSA8PCA0OCk7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gCi0gICAgICAgICAgICAg fSByZXR1cm47Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmls ZS5jYwotQEAgLTkzLDEzICs5MywxNSBAQCBzaXplX3QgV2F2UmVhZGVyOjpudW1fc2FtcGxlcygp IGNvbnN0IHsKLSB9Ci0gCi0gc2l6ZV90IFdhdlJlYWRlcjo6UmVhZFNhbXBsZXMoc2l6ZV90IG51 bV9zYW1wbGVzLCBpbnQxNl90KiBzYW1wbGVzKSB7Ci0tI2lmbmRlZiBXRUJSVENfQVJDSF9MSVRU TEVfRU5ESUFOCi0tI2Vycm9yICJOZWVkIHRvIGNvbnZlcnQgc2FtcGxlcyB0byBiaWctZW5kaWFu IHdoZW4gcmVhZGluZyBmcm9tIFdBViBmaWxlIgotLSNlbmRpZgotICAgLy8gVGhlcmUgY291bGQg YmUgbWV0YWRhdGEgYWZ0ZXIgdGhlIGF1ZGlvOyBlbnN1cmUgd2UgZG9uJ3QgcmVhZCBpdC4KLSAg IG51bV9zYW1wbGVzID0gc3RkOjptaW4obnVtX3NhbXBsZXMsIG51bV9zYW1wbGVzX3JlbWFpbmlu Z18pOwotICAgY29uc3Qgc2l6ZV90IHJlYWQgPQotICAgICAgIGZyZWFkKHNhbXBsZXMsIHNpemVv Zigqc2FtcGxlcyksIG51bV9zYW1wbGVzLCBmaWxlX2hhbmRsZV8pOwotKyNpZm5kZWYgV0VCUlRD X0FSQ0hfTElUVExFX0VORElBTgotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWFkOyBpKysp IHsKLSsgICAgICBzYW1wbGVzW2ldID0gX19idWlsdGluX2Jzd2FwMTYoc2FtcGxlc1tpXSk7Ci0r ICB9Ci0rI2VuZGlmCi0gICAvLyBJZiB3ZSBkaWRuJ3QgcmVhZCB3aGF0IHdhcyByZXF1ZXN0ZWQs IGVuc3VyZSB3ZSd2ZSByZWFjaGVkIHRoZSBFT0YuCi0gICBSVENfQ0hFQ0socmVhZCA9PSBudW1f c2FtcGxlcyB8fCBmZW9mKGZpbGVfaGFuZGxlXykpOwotICAgUlRDX0NIRUNLX0xFKHJlYWQsIG51 bV9zYW1wbGVzX3JlbWFpbmluZ18pOwotQEAgLTE3OCwxMyArMTgwLDI2IEBAIHNpemVfdCBXYXZX cml0ZXI6Om51bV9zYW1wbGVzKCkgY29uc3QgewotIAotIHZvaWQgV2F2V3JpdGVyOjpXcml0ZVNh bXBsZXMoY29uc3QgaW50MTZfdCogc2FtcGxlcywgc2l6ZV90IG51bV9zYW1wbGVzKSB7Ci0gI2lm bmRlZiBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCi0tI2Vycm9yICJOZWVkIHRvIGNvbnZlcnQg c2FtcGxlcyB0byBsaXR0bGUtZW5kaWFuIHdoZW4gd3JpdGluZyB0byBXQVYgZmlsZSIKLS0jZW5k aWYKLSsgIHN0YXRpYyBjb25zdCBzaXplX3Qga0NodW5rc2l6ZSA9IDQwOTYgLyBzaXplb2YodWlu dDE2X3QpOwotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fc2FtcGxlczsgaSArPSBrQ2h1 bmtzaXplKSB7Ci0rICAgIGludDE2X3QgaXNhbXBsZXNba0NodW5rc2l6ZV07Ci0rICAgIGNvbnN0 IHNpemVfdCBjaHVuayA9IHN0ZDo6bWluKGtDaHVua3NpemUsIG51bV9zYW1wbGVzIC0gaSk7Ci0r ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgY2h1bms7IGorKykgewotKyAgICAgIGlzYW1wbGVz W2pdID0gX19idWlsdGluX2Jzd2FwMTYoc2FtcGxlc1tpICsgal0pOwotKyAgICB9Ci0rICAgIGNv bnN0IHNpemVfdCB3cml0dGVuID0KLSsgICAgICAgIGZ3cml0ZShpc2FtcGxlcywgc2l6ZW9mKCpp c2FtcGxlcyksIGNodW5rLCBmaWxlX2hhbmRsZV8pOwotKyAgICBSVENfQ0hFQ0tfRVEoY2h1bmss IHdyaXR0ZW4pOwotKyAgICBudW1fc2FtcGxlc18gKz0gd3JpdHRlbjsKLSsgICAgUlRDX0NIRUNL KG51bV9zYW1wbGVzXyA+PSB3cml0dGVuKTsgIC8vIGRldGVjdCBzaXplX3Qgb3ZlcmZsb3cKLSsg IH0KLSsjZWxzZQotICAgY29uc3Qgc2l6ZV90IHdyaXR0ZW4gPQotICAgICAgIGZ3cml0ZShzYW1w bGVzLCBzaXplb2YoKnNhbXBsZXMpLCBudW1fc2FtcGxlcywgZmlsZV9oYW5kbGVfKTsKLSAgIFJU Q19DSEVDS19FUShudW1fc2FtcGxlcywgd3JpdHRlbik7Ci0gICBudW1fc2FtcGxlc18gKz0gd3Jp dHRlbjsKLSAgIFJUQ19DSEVDSyhudW1fc2FtcGxlc18gPj0gd3JpdHRlbik7ICAvLyBkZXRlY3Qg c2l6ZV90IG92ZXJmbG93Ci0rI2VuZGlmCi0gfQotIAotIHZvaWQgV2F2V3JpdGVyOjpXcml0ZVNh bXBsZXMoY29uc3QgZmxvYXQqIHNhbXBsZXMsIHNpemVfdCBudW1fc2FtcGxlcykgewotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvY29tbW9u X2F1ZGlvL3dhdl9oZWFkZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCi1AQCAtODYs NyArODYsMjYgQEAgc3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBSZWFkRm91ckNDKHVpbnQzMl90 IHgpIHsKLSAgIHJldHVybiBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNoYXIqPigmeCks IDQpOwotIH0KLSAjZWxzZQotLSNlcnJvciAiV3JpdGUgYmUtdG8tbGUgY29udmVyc2lvbiBmdW5j dGlvbnMiCi0rc3RhdGljIGlubGluZSB2b2lkIFdyaXRlTEUxNih1aW50MTZfdCogZiwgdWludDE2 X3QgeCkgewotKyAgKmYgPSBfX2J1aWx0aW5fYnN3YXAxNih4KTsKLSt9Ci0rc3RhdGljIGlubGlu ZSB2b2lkIFdyaXRlTEUzMih1aW50MzJfdCogZiwgdWludDMyX3QgeCkgewotKyAgKmYgPSBfX2J1 aWx0aW5fYnN3YXAzMih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSB2b2lkIFdyaXRlRm91ckNDKHVp bnQzMl90KiBmLCBjaGFyIGEsIGNoYXIgYiwgY2hhciBjLCBjaGFyIGQpIHsKLSsgICpmID0gc3Rh dGljX2Nhc3Q8dWludDMyX3Q+KGQpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGMpIDw8IDggfAot KyAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikgPDwgMTYgfCBzdGF0aWNfY2FzdDx1aW50 MzJfdD4oYSkgPDwgMjQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgUmVhZExFMTYo dWludDE2X3QgeCkgewotKyAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDE2KHgpOwotK30KLStzdGF0 aWMgaW5saW5lIHVpbnQzMl90IFJlYWRMRTMyKHVpbnQzMl90IHgpIHsKLSsgIHJldHVybiBfX2J1 aWx0aW5fYnN3YXAzMih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBSZWFkRm91 ckNDKHVpbnQzMl90IHgpIHsKLSsgIHJldHVybiBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0 PGNoYXIqPigmeCksIDQpOwotK30KLSAjZW5kaWYKLSAKLSBzdGF0aWMgaW5saW5lIHVpbnQzMl90 IFJpZmZDaHVua1NpemUoc2l6ZV90IGJ5dGVzX2luX3BheWxvYWQpIHsKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYXVyYS9tdXMvb3NfZXhjaGFuZ2VfZGF0YV9wcm92 aWRlcl9tdXMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYXVy YS9tdXMvb3NfZXhjaGFuZ2VfZGF0YV9wcm92aWRlcl9tdXMuY2MKLUBAIC0xNCw2ICsxNCw3IEBA Ci0gI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJpbmdfc3BsaXQuaCIKLSAjaW5jbHVkZSAiYmFz ZS9zdHJpbmdzL3N0cmluZ191dGlsLmgiCi0gI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy91dGZfc3Ry aW5nX2NvbnZlcnNpb25zLmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgotICNp bmNsdWRlICJuZXQvYmFzZS9maWxlbmFtZV91dGlsLmgiCi0gI2luY2x1ZGUgInVpL2Jhc2UvY2xp cGJvYXJkL2NsaXBib2FyZF9jb25zdGFudHMuaCIKLSAjaW5jbHVkZSAidWkvYmFzZS9jbGlwYm9h cmQvY2xpcGJvYXJkX2Zvcm1hdF90eXBlLmgiCi1AQCAtMjc5LDggKzI4MCwxMyBAQCB2b2lkIE9T RXhjaGFuZ2VEYXRhUHJvdmlkZXJNdXM6OlNldEh0bWwoY29uc3QgYmFzZTo6c3RyaW5nMTYmIGh0 bWwsCi0gICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBieXRlczsKLSAgIC8vIE1hbnVhbGx5 IGphbSBhIFVURjE2IEJPTSBpbnRvIGJ5dGVzIGJlY2F1c2Ugb3RoZXJ3aXNlLCBvdGhlciBwcm9n cmFtcyB3aWxsCi0gICAvLyBhc3N1bWUgVVRGLTguCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElU VExFX0VORElBTikKLSAgIGJ5dGVzLnB1c2hfYmFjaygweEZGKTsKLSAgIGJ5dGVzLnB1c2hfYmFj aygweEZFKTsKLSsjZWxzZQotKyAgYnl0ZXMucHVzaF9iYWNrKDB4RkUpOwotKyAgYnl0ZXMucHVz aF9iYWNrKDB4RkYpOwotKyNlbmRpZgotICAgQWRkU3RyaW5nMTZUb1ZlY3RvcihodG1sLCAmYnl0 ZXMpOwotICAgbWltZV9kYXRhX1t1aTo6a01pbWVUeXBlSFRNTF0gPSBieXRlczsKLSB9Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9w YWNrLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVz b3VyY2UvZGF0YV9wYWNrLmNjCi1AQCAtMTU0LDE2ICsxNTQsNDIgQEAgY2xhc3MgU2NvcGVkRmls ZVdyaXRlciB7Ci0gICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2NvcGVkRmlsZVdyaXRlcik7 Ci0gfTsKLSAKLStzdGF0aWMgaW5saW5lIHVpbnQxNl90IGJ5dGVzd2FwKHVpbnQxNl90IHYpIHsg cmV0dXJuIF9fYnVpbHRpbl9ic3dhcDE2KHYpOyB9Ci0rc3RhdGljIGlubGluZSB1aW50MzJfdCBi eXRlc3dhcCh1aW50MzJfdCB2KSB7IHJldHVybiBfX2J1aWx0aW5fYnN3YXAzMih2KTsgfQotKwot K3RlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGJ5dGVzd2FwcGVkX3QgewotK3ByaXZhdGU6Ci0rICBU IHZhbHVlOwotK3B1YmxpYzoKLSsgIGlubGluZSBieXRlc3dhcHBlZF90KFQgdikgOiB2YWx1ZShi eXRlc3dhcCh2KSkgeyB9Ci0rICBpbmxpbmUgVCBvcGVyYXRvcj0oVCB2KSB7IHZhbHVlID0gYnl0 ZXN3YXAodik7IHJldHVybiB2OyB9Ci0rICBpbmxpbmUgVCBvcGVyYXRvcis9KFQgdikgeyB2ICs9 IGJ5dGVzd2FwKHZhbHVlKTsgdmFsdWUgPSBieXRlc3dhcCh2KTsgcmV0dXJuIHY7IH0KLSsgIGlu bGluZSBvcGVyYXRvciBUKCkgY29uc3QgeyByZXR1cm4gYnl0ZXN3YXAodmFsdWUpOyB9Ci0rfTsK LSsKLSsjaWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSsKLSt0eXBlZGVmIGJ5 dGVzd2FwcGVkX3Q8dWludDE2X3Q+IHVpbnQxNmxlX3Q7Ci0rdHlwZWRlZiBieXRlc3dhcHBlZF90 PHVpbnQzMl90PiB1aW50MzJsZV90OwotKwotKyNlbHNlCi0rCi0rdHlwZWRlZiB1aW50MTZfdCB1 aW50MTZsZV90OwotK3R5cGVkZWYgdWludDMyX3QgdWludDMybGVfdDsKLSsKLSsjZW5kaWYKLSsK LSB9ICAvLyBuYW1lc3BhY2UKLSAKLSBuYW1lc3BhY2UgdWkgewotIAotICNwcmFnbWEgcGFjayhw dXNoLCAyKQotIHN0cnVjdCBEYXRhUGFjazo6RW50cnkgewotLSAgdWludDE2X3QgcmVzb3VyY2Vf aWQ7Ci0tICB1aW50MzJfdCBmaWxlX29mZnNldDsKLSsgIHVpbnQxNmxlX3QgcmVzb3VyY2VfaWQ7 Ci0rICB1aW50MzJsZV90IGZpbGVfb2Zmc2V0OwotIAotICAgc3RhdGljIGludCBDb21wYXJlQnlJ ZChjb25zdCB2b2lkKiB2b2lkX2tleSwgY29uc3Qgdm9pZCogdm9pZF9lbnRyeSkgewotKyAgICAv LyBLZXkgaXMgaG9zdCBlbmRpYW4KLSAgICAgdWludDE2X3Qga2V5ID0gKnJlaW50ZXJwcmV0X2Nh c3Q8Y29uc3QgdWludDE2X3QqPih2b2lkX2tleSk7Ci0gICAgIGNvbnN0IEVudHJ5KiBlbnRyeSA9 IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRW50cnkqPih2b2lkX2VudHJ5KTsKLSAgICAgcmV0dXJu IGtleSAtIGVudHJ5LT5yZXNvdXJjZV9pZDsKLUBAIC0xNzEsMTAgKzE5NywxMSBAQCBzdHJ1Y3Qg RGF0YVBhY2s6OkVudHJ5IHsKLSB9OwotIAotIHN0cnVjdCBEYXRhUGFjazo6QWxpYXMgewotLSAg dWludDE2X3QgcmVzb3VyY2VfaWQ7Ci0tICB1aW50MTZfdCBlbnRyeV9pbmRleDsKLSsgIHVpbnQx NmxlX3QgcmVzb3VyY2VfaWQ7Ci0rICB1aW50MTZsZV90IGVudHJ5X2luZGV4OwotIAotICAgc3Rh dGljIGludCBDb21wYXJlQnlJZChjb25zdCB2b2lkKiB2b2lkX2tleSwgY29uc3Qgdm9pZCogdm9p ZF9lbnRyeSkgewotKyAgICAvLyBLZXkgaXMgaG9zdCBlbmRpYW4KLSAgICAgdWludDE2X3Qga2V5 ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPih2b2lkX2tleSk7Ci0gICAgIGNv bnN0IEFsaWFzKiBlbnRyeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQWxpYXMqPih2b2lkX2Vu dHJ5KTsKLSAgICAgcmV0dXJuIGtleSAtIGVudHJ5LT5yZXNvdXJjZV9pZDsKLUBAIC0yODQsNyAr MzExLDcgQEAgYm9vbCBEYXRhUGFjazo6TG9hZEltcGwoc3RkOjp1bmlxdWVfcHRyPERhdGFQYWNr OjpEYXRhU291cmNlPiBkYXRhX3NvdXJjZSkgewotICAgLy8gUGFyc2UgdGhlIHZlcnNpb24gYW5k IGNoZWNrIGZvciB0cnVuY2F0ZWQgaGVhZGVyLgotICAgdWludDMyX3QgdmVyc2lvbiA9IDA7Ci0g ICBpZiAoZGF0YV9sZW5ndGggPiBzaXplb2YodmVyc2lvbikpCi0tICAgIHZlcnNpb24gPSByZWlu dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YSlbMF07Ci0rICAgIHZlcnNpb24gPSBy ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMmxlX3QqPihkYXRhKVswXTsKLSAgIHNpemVfdCBo ZWFkZXJfbGVuZ3RoID0KLSAgICAgICB2ZXJzaW9uID09IGtGaWxlRm9ybWF0VjQgPyBrSGVhZGVy TGVuZ3RoVjQgOiBrSGVhZGVyTGVuZ3RoVjU7Ci0gICBpZiAodmVyc2lvbiA9PSAwIHx8IGRhdGFf bGVuZ3RoIDwgaGVhZGVyX2xlbmd0aCkgewotQEAgLTI5NSwxNCArMzIyLDE0IEBAIGJvb2wgRGF0 YVBhY2s6OkxvYWRJbXBsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhUGFjazo6RGF0YVNvdXJjZT4gZGF0 YV9zb3VyY2UpIHsKLSAKLSAgIC8vIFBhcnNlIHRoZSBoZWFkZXIgb2YgdGhlIGZpbGUuCi0gICBp ZiAodmVyc2lvbiA9PSBrRmlsZUZvcm1hdFY0KSB7Ci0tICAgIHJlc291cmNlX2NvdW50XyA9IHJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhKVsxXTsKLSsgICAgcmVzb3VyY2Vf Y291bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJsZV90Kj4oZGF0YSlbMV07Ci0g ICAgIGFsaWFzX2NvdW50XyA9IDA7Ci0gICAgIHRleHRfZW5jb2RpbmdfdHlwZV8gPSBzdGF0aWNf Y2FzdDxUZXh0RW5jb2RpbmdUeXBlPihkYXRhWzhdKTsKLSAgIH0gZWxzZSBpZiAodmVyc2lvbiA9 PSBrRmlsZUZvcm1hdFY1KSB7Ci0gICAgIC8vIFZlcnNpb24gNSBhZGRlZCB0aGUgYWxpYXMgdGFi bGUgYW5kIGNoYW5nZWQgdGhlIGhlYWRlciBmb3JtYXQuCi0gICAgIHRleHRfZW5jb2RpbmdfdHlw ZV8gPSBzdGF0aWNfY2FzdDxUZXh0RW5jb2RpbmdUeXBlPihkYXRhWzRdKTsKLS0gICAgcmVzb3Vy Y2VfY291bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGRhdGEpWzRdOwot LSAgICBhbGlhc19jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oZGF0 YSlbNV07Ci0rICAgIHJlc291cmNlX2NvdW50XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu dDE2bGVfdCo+KGRhdGEpWzRdOwotKyAgICBhbGlhc19jb3VudF8gPSByZWludGVycHJldF9jYXN0 PGNvbnN0IHVpbnQxNmxlX3QqPihkYXRhKVs1XTsKLSAgIH0gZWxzZSB7Ci0gICAgIExPRyhFUlJP UikgPDwgIkJhZCBkYXRhIHBhY2sgdmVyc2lvbjogZ290ICIgPDwgdmVyc2lvbiA8PCAiLCBleHBl Y3RlZCAiCi0gICAgICAgICAgICAgICAgPDwga0ZpbGVGb3JtYXRWNCA8PCAiIG9yICIgPDwga0Zp bGVGb3JtYXRWNTsKLUBAIC00NDcsOSArNDc0LDYgQEAgdm9pZCBEYXRhUGFjazo6Q2hlY2tGb3JE dXBsaWNhdGVSZXNvdXJjZXMoCi0gYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0IGJhc2U6 OkZpbGVQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6Om1h cDx1aW50MTZfdCwgYmFzZTo6U3RyaW5nUGllY2U+JiByZXNvdXJjZXMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIFRleHRFbmNvZGluZ1R5cGUgdGV4dF9lbmNvZGluZ190eXBlKSB7Ci0tI2lm ICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0tI2Vycm9yICJkYXRhcGFjayBhc3N1 bWVzIGxpdHRsZSBlbmRpYW4iCi0tI2VuZGlmCi0gICBpZiAodGV4dF9lbmNvZGluZ190eXBlICE9 IFVURjggJiYgdGV4dF9lbmNvZGluZ190eXBlICE9IFVURjE2ICYmCi0gICAgICAgdGV4dF9lbmNv ZGluZ190eXBlICE9IEJJTkFSWSkgewotICAgICBMT0coRVJST1IpIDw8ICJJbnZhbGlkIHRleHQg ZW5jb2RpbmcgdHlwZSwgZ290ICIgPDwgdGV4dF9lbmNvZGluZ190eXBlCi1AQCAtNDY3LDcgKzQ5 MSw3IEBAIGJvb2wgRGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0 aCwKLSAgIGlmICghZmlsZS52YWxpZCgpKQotICAgICByZXR1cm4gZmFsc2U7Ci0gCi0tICB1aW50 MzJfdCBlbmNvZGluZyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0ZXh0X2VuY29kaW5nX3R5cGUp OwotKyAgdWludDMybGVfdCBlbmNvZGluZyA9IHN0YXRpY19jYXN0PHVpbnQzMmxlX3Q+KHRleHRf ZW5jb2RpbmdfdHlwZSk7Ci0gCi0gICAvLyBCdWlsZCBhIGxpc3Qgb2YgZmluYWwgcmVzb3VyY2Ug YWxpYXNlcywgYW5kIGFuIGFsaWFzIG1hcCBhdCB0aGUgc2FtZSB0aW1lLgotICAgc3RkOjp2ZWN0 b3I8dWludDE2X3Q+IHJlc291cmNlX2lkczsKLUBAIC00OTQsMTMgKzUxOCwxNCBAQCBib29sIERh dGFQYWNrOjpXcml0ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBhdGgsCi0gCi0gICAvLyBU aGVzZSB2YWx1ZXMgYXJlIGd1YXJhbnRlZWQgdG8gZml0IGluIGEgdWludDE2X3QgZHVlIHRvIHRo ZSBlYXJsaWVyCi0gICAvLyBjaGVjayBvZiB8cmVzb3VyY2VzX2NvdW50fC4KLS0gIGNvbnN0IHVp bnQxNl90IGFsaWFzX2NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGFsaWFzZXMuc2l6ZSgp KTsKLS0gIGNvbnN0IHVpbnQxNl90IGVudHJ5X2NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+ KHJlc291cmNlX2lkcy5zaXplKCkpOwotKyAgY29uc3QgdWludDE2bGVfdCBhbGlhc19jb3VudCA9 IHN0YXRpY19jYXN0PHVpbnQxNmxlX3Q+KGFsaWFzZXMuc2l6ZSgpKTsKLSsgIGNvbnN0IHVpbnQx NmxlX3QgZW50cnlfY291bnQgPSBzdGF0aWNfY2FzdDx1aW50MTZsZV90PihyZXNvdXJjZV9pZHMu c2l6ZSgpKTsKLSAgIERDSEVDS19FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGVudHJ5X2NvdW50KSAr IHN0YXRpY19jYXN0PHNpemVfdD4oYWxpYXNfY291bnQpLAotICAgICAgICAgICAgIHJlc291cmNl c19jb3VudCk7Ci0gCi0tICBmaWxlLldyaXRlKCZrRmlsZUZvcm1hdFY1LCBzaXplb2Yoa0ZpbGVG b3JtYXRWNSkpOwotLSAgZmlsZS5Xcml0ZSgmZW5jb2RpbmcsIHNpemVvZih1aW50MzJfdCkpOwot KyAgdWludDMybGVfdCB2ZXJzaW9uID0ga0ZpbGVGb3JtYXRWNTsKLSsgIGZpbGUuV3JpdGUoJnZl cnNpb24sIHNpemVvZih2ZXJzaW9uKSk7Ci0rICBmaWxlLldyaXRlKCZlbmNvZGluZywgc2l6ZW9m KHVpbnQzMmxlX3QpKTsKLSAgIGZpbGUuV3JpdGUoJmVudHJ5X2NvdW50LCBzaXplb2YoZW50cnlf Y291bnQpKTsKLSAgIGZpbGUuV3JpdGUoJmFsaWFzX2NvdW50LCBzaXplb2YoYWxpYXNfY291bnQp KTsKLSAKLUBAIC01MDgsOCArNTMzLDggQEAgYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0 IGJhc2U6OkZpbGVQYXRoJiBwYXRoLAotICAgLy8gbGFzdCBpdGVtIHNvIHdlIGNhbiBjb21wdXRl IHRoZSBzaXplIG9mIHRoZSBsaXN0IGl0ZW0uCi0gICBjb25zdCB1aW50MzJfdCBpbmRleF9sZW5n dGggPSAoZW50cnlfY291bnQgKyAxKSAqIHNpemVvZihFbnRyeSk7Ci0gICBjb25zdCB1aW50MzJf dCBhbGlhc190YWJsZV9sZW5ndGggPSBhbGlhc19jb3VudCAqIHNpemVvZihBbGlhcyk7Ci0tICB1 aW50MzJfdCBkYXRhX29mZnNldCA9IGtIZWFkZXJMZW5ndGhWNSArIGluZGV4X2xlbmd0aCArIGFs aWFzX3RhYmxlX2xlbmd0aDsKLS0gIGZvciAoY29uc3QgdWludDE2X3QgcmVzb3VyY2VfaWQgOiBy ZXNvdXJjZV9pZHMpIHsKLSsgIHVpbnQzMmxlX3QgZGF0YV9vZmZzZXQgPSBrSGVhZGVyTGVuZ3Ro VjUgKyBpbmRleF9sZW5ndGggKyBhbGlhc190YWJsZV9sZW5ndGg7Ci0rICBmb3IgKGNvbnN0IHVp bnQxNmxlX3QgcmVzb3VyY2VfaWQgOiByZXNvdXJjZV9pZHMpIHsKLSAgICAgZmlsZS5Xcml0ZSgm cmVzb3VyY2VfaWQsIHNpemVvZihyZXNvdXJjZV9pZCkpOwotICAgICBmaWxlLldyaXRlKCZkYXRh X29mZnNldCwgc2l6ZW9mKGRhdGFfb2Zmc2V0KSk7Ci0gICAgIGRhdGFfb2Zmc2V0ICs9IHJlc291 cmNlcy5maW5kKHJlc291cmNlX2lkKS0+c2Vjb25kLmxlbmd0aCgpOwotQEAgLTUxNywxMyArNTQy LDEzIEBAIGJvb2wgRGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0 aCwKLSAKLSAgIC8vIFdlIHBsYWNlIGFuIGV4dHJhIGVudHJ5IGFmdGVyIHRoZSBsYXN0IGl0ZW0g dGhhdCBhbGxvd3MgdXMgdG8gcmVhZCB0aGUKLSAgIC8vIHNpemUgb2YgdGhlIGxhc3QgaXRlbS4K LS0gIGNvbnN0IHVpbnQxNl90IHJlc291cmNlX2lkID0gMDsKLSsgIGNvbnN0IHVpbnQxNmxlX3Qg cmVzb3VyY2VfaWQgPSAwOwotICAgZmlsZS5Xcml0ZSgmcmVzb3VyY2VfaWQsIHNpemVvZihyZXNv dXJjZV9pZCkpOwotICAgZmlsZS5Xcml0ZSgmZGF0YV9vZmZzZXQsIHNpemVvZihkYXRhX29mZnNl dCkpOwotIAotICAgLy8gV3JpdGUgdGhlIGFsaWFzZXMgdGFibGUsIGlmIGFueS4gTm90ZTogfGFs aWFzZXN8IGlzIGFuIHN0ZDo6bWFwLAotICAgLy8gZW5zdXJpbmcgdmFsdWVzIGFyZSB3cml0dGVu IGluIGluY3JlYXNpbmcgb3JkZXIuCi0tICBmb3IgKGNvbnN0IHN0ZDo6cGFpcjx1aW50MTZfdCwg dWludDE2X3Q+JiBhbGlhcyA6IGFsaWFzZXMpIHsKLSsgIGZvciAoY29uc3Qgc3RkOjpwYWlyPHVp bnQxNmxlX3QsIHVpbnQxNmxlX3Q+IGFsaWFzIDogYWxpYXNlcykgewotICAgICBmaWxlLldyaXRl KCZhbGlhcywgc2l6ZW9mKGFsaWFzKSk7Ci0gICB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNjLm9yaWcKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRhX3Bh Y2suY2Mub3JpZwotQEAgLTM4MiwxMiArMzgyLDYgQEAgYm9vbCBEYXRhUGFjazo6SGFzUmVzb3Vy Y2UodWludDE2X3QgcmVzb3VyY2VfaWQpIGNvbnN0IHsKLSAKLSBib29sIERhdGFQYWNrOjpHZXRT dHJpbmdQaWVjZSh1aW50MTZfdCByZXNvdXJjZV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBiYXNlOjpTdHJpbmdQaWVjZSogZGF0YSkgY29uc3QgewotLSAgLy8gSXQgd29uJ3Qg YmUgaGFyZCB0byBtYWtlIHRoaXMgZW5kaWFuLWFnbm9zdGljLCBidXQgaXQncyBub3Qgd29ydGgK LS0gIC8vIGJvdGhlcmluZyB0byBkbyByaWdodCBub3cuCi0tI2lmICFkZWZpbmVkKEFSQ0hfQ1BV X0xJVFRMRV9FTkRJQU4pCi0tI2Vycm9yICJkYXRhcGFjayBhc3N1bWVzIGxpdHRsZSBlbmRpYW4i Ci0tI2VuZGlmCi0tCi0gICBjb25zdCBFbnRyeSogdGFyZ2V0ID0gTG9va3VwRW50cnlCeUlkKHJl c291cmNlX2lkKTsKLSAgIGlmICghdGFyZ2V0KQotICAgICByZXR1cm4gZmFsc2U7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9qcGVnX2NvZGVjLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9qcGVn X2NvZGVjLmNjCi1AQCAtMjEyLDExICsyMTIsMTEgQEAgYm9vbCBKUEVHQ29kZWM6OkRlY29kZShj b25zdCB1bnNpZ25lZCBjaGFyKiBpbnB1dCwgc2l6ZV90IGlucHV0X3NpemUsCi0gICAgICAgLy8g dXNlZCBieSBDaHJvbWl1bSAoaS5lLiBSR0JBIGFuZCBCR1JBKSBhbmQgd2UganVzdCBtYXAgdGhl IGlucHV0Ci0gICAgICAgLy8gcGFyYW1ldGVycyB0byBhIGNvbG9yc3BhY2UuCi0gICAgICAgaWYg KGZvcm1hdCA9PSBGT1JNQVRfUkdCQSB8fAotLSAgICAgICAgICAoZm9ybWF0ID09IEZPUk1BVF9T a0JpdG1hcCAmJiBTS19SMzJfU0hJRlQgPT0gMCkpIHsKLSsgICAgICAgICAgKGZvcm1hdCA9PSBG T1JNQVRfU2tCaXRtYXAgJiYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsIEcsIEIsIEEpKSkgewot ICAgICAgICAgY2luZm8tPm91dF9jb2xvcl9zcGFjZSA9IEpDU19FWFRfUkdCWDsKLSAgICAgICAg IGNpbmZvLT5vdXRwdXRfY29tcG9uZW50cyA9IDQ7Ci0gICAgICAgfSBlbHNlIGlmIChmb3JtYXQg PT0gRk9STUFUX0JHUkEgfHwKLS0gICAgICAgICAgICAgICAgIChmb3JtYXQgPT0gRk9STUFUX1Nr Qml0bWFwICYmIFNLX0IzMl9TSElGVCA9PSAwKSkgewotKyAgICAgICAgICAgICAgICAgKGZvcm1h dCA9PSBGT1JNQVRfU2tCaXRtYXAgJiYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEIsIEcsIFIsIEEp KSkgewotICAgICAgICAgY2luZm8tPm91dF9jb2xvcl9zcGFjZSA9IEpDU19FWFRfQkdSWDsKLSAg ICAgICAgIGNpbmZvLT5vdXRwdXRfY29tcG9uZW50cyA9IDQ7Ci0gICAgICAgfSBlbHNlIHsKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2Rl Yy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMv cG5nX2NvZGVjLmNjCi1AQCAtMTY5LDYgKzE2OSwxMCBAQCB2b2lkIERlY29kZUluZm9DYWxsYmFj ayhwbmdfc3RydWN0KiBwbmdfcHRyLCBwbmdfaW5mbyogaW5mb19wdHIpIHsKLSAgICAgICAgIHBu Z19zZXRfYmdyKHBuZ19wdHIpOwotICAgICAgICAgcG5nX3NldF9hZGRfYWxwaGEocG5nX3B0ciwg MHhGRiwgUE5HX0ZJTExFUl9BRlRFUik7Ci0gICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIFBO R0NvZGVjOjpGT1JNQVRfQVJHQjoKLSsgICAgICAgIHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0 OwotKyAgICAgICAgcG5nX3NldF9hZGRfYWxwaGEocG5nX3B0ciwgMHhGRiwgUE5HX0ZJTExFUl9C RUZPUkUpOwotKyAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBQTkdDb2RlYzo6Rk9STUFUX1Nr Qml0bWFwOgotICAgICAgICAgc3RhdGUtPm91dHB1dF9jaGFubmVscyA9IDQ7Ci0gICAgICAgICBw bmdfc2V0X2FkZF9hbHBoYShwbmdfcHRyLCAweEZGLCBQTkdfRklMTEVSX0FGVEVSKTsKLUBAIC0x ODMsNiArMTg3LDEwIEBAIHZvaWQgRGVjb2RlSW5mb0NhbGxiYWNrKHBuZ19zdHJ1Y3QqIHBuZ19w dHIsIHBuZ19pbmZvKiBpbmZvX3B0cikgewotICAgICAgICAgc3RhdGUtPm91dHB1dF9jaGFubmVs cyA9IDQ7Ci0gICAgICAgICBwbmdfc2V0X2JncihwbmdfcHRyKTsKLSAgICAgICAgIGJyZWFrOwot KyAgICAgIGNhc2UgUE5HQ29kZWM6OkZPUk1BVF9BUkdCOgotKyAgICAgICAgc3RhdGUtPm91dHB1 dF9jaGFubmVscyA9IDQ7Ci0rCXBuZ19zZXRfc3dhcF9hbHBoYShwbmdfcHRyKTsKLSsgICAgICAg IGJyZWFrOwotICAgICAgIGNhc2UgUE5HQ29kZWM6OkZPUk1BVF9Ta0JpdG1hcDoKLSAgICAgICAg IHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0OwotICAgICAgICAgYnJlYWs7Ci1AQCAtNDc1LDYg KzQ4Myw4IEBAIGJvb2wgUE5HQ29kZWM6OkVuY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBpbnB1 dCwKLSAgICAgY2FzZSBGT1JNQVRfQkdSQToKLSAgICAgICBjb2xvclR5cGUgPSBrQkdSQV84ODg4 X1NrQ29sb3JUeXBlOwotICAgICAgIGJyZWFrOwotKyAgICBjYXNlIEZPUk1BVF9BUkdCOgotKyAg ICAgIHJldHVybiBmYWxzZTsKLSAgICAgY2FzZSBGT1JNQVRfU2tCaXRtYXA6Ci0gICAgICAgY29s b3JUeXBlID0ga04zMl9Ta0NvbG9yVHlwZTsKLSAgICAgICBicmVhazsKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWMuaAot QEAgLTM3LDYgKzM3LDEwIEBAIGNsYXNzIENPREVDX0VYUE9SVCBQTkdDb2RlYyB7Ci0gICAgIC8v IFRoaXMgaXMgdGhlIGRlZmF1bHQgV2luZG93cyBESUIgb3JkZXIuCi0gICAgIEZPUk1BVF9CR1JB LAotIAotKyAgICAvLyA0IGJ5dGVzIHBlciBwaXhlbCwgaW4gQVJHQiBvcmRlciBpbiBtZW1vcnkg cmVnYXJkbGVzcyBvZiBlbmRpYW5uZXNzLgotKyAgICAvLyBPbmx5IHN1cHBvcnRlZCBmb3IgZGVj b2RpbmcKLSsgICAgRk9STUFUX0FSR0IsCi0rCi0gICAgIC8vIFNrQml0bWFwIGZvcm1hdC4gRm9y IEVuY29kZSgpIGtOMzJfU2tDb2xvclR5cGUgKDQgYnl0ZXMgcGVyIHBpeGVsKSBhbmQKLSAgICAg Ly8ga0FscGhhXzhfU2tDb2xvclR5cGUgKDEgYnl0ZSBwZXIgcGl4ZWwpIGZvcm1hdHMgYXJlIHN1 cHBvcnRlZC4KLSAgICAgLy8ga0FscGhhXzhfU2tDb2xvclR5cGUgZ2V0cyBlbmNvZGVkIGludG8g YSBncmF5c2NhbGUgUE5HIHRyZWF0aW5nIGFscGhhIGFzCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWNfdW5pdHRlc3QuY2MKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlY191 bml0dGVzdC5jYwotQEAgLTg1Myw3ICs4NTMsNyBAQCBURVNUKFBOR0NvZGVjLCBFbmNvZGVBOFNr Qml0bWFwKSB7Ci0gICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7Ci0gICAgICAgdWlu dDhfdCBvcmlnaW5hbF9waXhlbCA9ICpvcmlnaW5hbF9iaXRtYXAuZ2V0QWRkcjgoeCwgeSk7Ci0g ICAgICAgdWludDMyX3QgZGVjb2RlZF9waXhlbCA9ICpkZWNvZGVkX2JpdG1hcC5nZXRBZGRyMzIo eCwgeSk7Ci0tICAgICAgRVhQRUNUX1RSVUUoQkdSQUdyYXlFcXVhbHNBOEdyYXkoZGVjb2RlZF9w aXhlbCwgb3JpZ2luYWxfcGl4ZWwpKTsKLSsgICAgICBFWFBFQ1RfVFJVRShCR1JBR3JheUVxdWFs c0E4R3JheShTa1VuUHJlTXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKGRlY29kZWRfcGl4ZWwpLCBv cmlnaW5hbF9waXhlbCkpOwotICAgICB9Ci0gICB9Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29sb3JfYW5hbHlzaXMuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvbG9yX2FuYWx5c2lzLmNjCi1AQCAtMTYs NiArMTYsNyBAQAotICNpbmNsdWRlIDx2ZWN0b3I+Ci0gCi0gI2luY2x1ZGUgImJhc2UvbG9nZ2lu Zy5oIgotKyNpbmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAjaW5jbHVkZSAidGhpcmRf cGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tCaXRtYXAuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFy dHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tVblByZU11bHRpcGx5LmgiCi0gI2luY2x1ZGUgInVpL2dm eC9jb2RlYy9wbmdfY29kZWMuaCIKLUBAIC01MDYsMTAgKzUwNywxNyBAQCBTa0NvbG9yIEZpbmRD bG9zZXN0Q29sb3IoY29uc3QgdWludDhfdCogaW1hZ2UsCi0gICBTa0NvbG9yIGJlc3RfY29sb3Ig PSBjb2xvcjsKLSAgIGNvbnN0IHVpbnQ4X3QqIGJ5dGUgPSBpbWFnZTsKLSAgIGZvciAoaW50IGkg PSAwOyBpIDwgd2lkdGggKiBoZWlnaHQ7ICsraSkgewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJ VFRMRV9FTkRJQU4pCi0gICAgIHVpbnQ4X3QgYiA9ICooYnl0ZSsrKTsKLSAgICAgdWludDhfdCBn ID0gKihieXRlKyspOwotICAgICB1aW50OF90IHIgPSAqKGJ5dGUrKyk7Ci0gICAgIHVpbnQ4X3Qg YSA9ICooYnl0ZSsrKTsKLSsjZWxzZQotKyAgICB1aW50OF90IGEgPSAqKGJ5dGUrKyk7Ci0rICAg IHVpbnQ4X3QgciA9ICooYnl0ZSsrKTsKLSsgICAgdWludDhfdCBnID0gKihieXRlKyspOwotKyAg ICB1aW50OF90IGIgPSAqKGJ5dGUrKyk7Ci0rI2VuZGlmCi0gICAgIC8vIElnbm9yZSBmdWxseSB0 cmFuc3BhcmVudCBwaXhlbHMuCi0gICAgIGlmIChhID09IDApCi0gICAgICAgY29udGludWU7Ci1A QCAtNTI3LDcgKzUzNSw2IEBAIFNrQ29sb3IgRmluZENsb3Nlc3RDb2xvcihjb25zdCB1aW50OF90 KiBpbWFnZSwKLSAKLSAvLyBGb3IgYSAxNngxNiBpY29uIG9uIGFuIEludGVsIENvcmUgaTUgdGhp cyBmdW5jdGlvbiB0YWtlcyBhcHByb3hpbWF0ZWx5Ci0gLy8gMC41IG1zIHRvIHJ1bi4KLS0vLyBU T0RPKHBvcnQpOiBUaGlzIGNvZGUgYXNzdW1lcyB0aGUgQ1BVIGFyY2hpdGVjdHVyZSBpcyBsaXR0 bGUtZW5kaWFuLgotIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xvck9mQnVmZmVyKHVpbnQ4X3Qq IGRlY29kZWRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg aW1nX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbWdf aGVpZ2h0LAotQEAgLTU1MCwxMCArNTU3LDE3IEBAIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xv ck9mQnVmZmVyKHVpbnQ4X3QqIGRlY29kZWRfZGF0YSwKLSAgICAgICAgIGludCBwaXhlbF9wb3Mg PSBzYW1wbGVyLT5HZXRTYW1wbGUoaW1nX3dpZHRoLCBpbWdfaGVpZ2h0KSAlCi0gICAgICAgICAg ICAgKGltZ193aWR0aCAqIGltZ19oZWlnaHQpOwotIAotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJ VFRMRV9FTkRJQU4pCi0gICAgICAgICB1aW50OF90IGIgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9z ICogNF07Ci0gICAgICAgICB1aW50OF90IGcgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCAr IDFdOwotICAgICAgICAgdWludDhfdCByID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAy XTsKLSAgICAgICAgIHVpbnQ4X3QgYSA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgM107 Ci0rI2Vsc2UKLSsgICAgICAgIHVpbnQ4X3QgYSA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0 XTsKLSsgICAgICAgIHVpbnQ4X3QgciA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgMV07 Ci0rICAgICAgICB1aW50OF90IGcgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDJdOwot KyAgICAgICAgdWludDhfdCBiID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAzXTsKLSsj ZW5kaWYKLSAgICAgICAgIC8vIFNraXAgZnVsbHkgdHJhbnNwYXJlbnQgcGl4ZWxzIGFzIHRoZXkg dXN1YWxseSBjb250YWluIGJsYWNrIGluIHRoZWlyCi0gICAgICAgICAvLyBSR0IgY2hhbm5lbHMg YnV0IGRvIG5vdCBjb250cmlidXRlIHRvIHRoZSB2aXN1YWwgaW1hZ2UuCi0gICAgICAgICBpZiAo YSA9PSAwKQotQEAgLTYwMiwxMCArNjE2LDE3IEBAIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xv ck9mQnVmZmVyKHVpbnQ4X3QqIGRlY29kZWRfZGF0YSwKLSAgICAgICB1aW50OF90KiBwaXhlbCA9 IGRlY29kZWRfZGF0YTsKLSAgICAgICB1aW50OF90KiBkZWNvZGVkX2RhdGFfZW5kID0gZGVjb2Rl ZF9kYXRhICsgKGltZ193aWR0aCAqIGltZ19oZWlnaHQgKiA0KTsKLSAgICAgICB3aGlsZSAocGl4 ZWwgPCBkZWNvZGVkX2RhdGFfZW5kKSB7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VO RElBTikKLSAgICAgICAgIHVpbnQ4X3QgYiA9ICoocGl4ZWwrKyk7Ci0gICAgICAgICB1aW50OF90 IGcgPSAqKHBpeGVsKyspOwotICAgICAgICAgdWludDhfdCByID0gKihwaXhlbCsrKTsKLSAgICAg ICAgIHVpbnQ4X3QgYSA9ICoocGl4ZWwrKyk7Ci0rI2Vsc2UKLSsgICAgICAgIHVpbnQ4X3QgYSA9 ICoocGl4ZWwrKyk7Ci0rICAgICAgICB1aW50OF90IHIgPSAqKHBpeGVsKyspOwotKyAgICAgICAg dWludDhfdCBnID0gKihwaXhlbCsrKTsKLSsgICAgICAgIHVpbnQ4X3QgYiA9ICoocGl4ZWwrKyk7 Ci0rI2VuZGlmCi0gICAgICAgICAvLyBTa2lwIHRyYW5zcGFyZW50IHBpeGVscywgc2VlIGFib3Zl LgotICAgICAgICAgaWYgKGEgPT0gMCkKLSAgICAgICAgICAgY29udGludWU7Ci1AQCAtNjgzLDgg KzcwNCwxMiBAQCBTa0NvbG9yIENhbGN1bGF0ZUtNZWFuQ29sb3JPZlBORyhzY29wZWRfcmVmcHRy PGJhc2U6OlJlZkNvdW50ZWRNZW1vcnk+IHBuZywKLSAKLSAgIGlmIChwbmcuZ2V0KCkgJiYgcG5n LT5zaXplKCkgJiYKLSAgICAgICBnZng6OlBOR0NvZGVjOjpEZWNvZGUocG5nLT5mcm9udCgpLCBw bmctPnNpemUoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z4OjpQTkdDb2RlYzo6 Rk9STUFUX0JHUkEsICZkZWNvZGVkX2RhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZpbWdfd2lkdGgsICZpbWdfaGVpZ2h0KSkgewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRM RV9FTkRJQU4pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmeDo6UE5HQ29kZWM6OkZP Uk1BVF9CR1JBLAotKyNlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmeDo6UE5H Q29kZWM6OkZPUk1BVF9BUkdCLAotKyNlbmRpZgotKwkJCSAgICAmZGVjb2RlZF9kYXRhLCAmaW1n X3dpZHRoLCAmaW1nX2hlaWdodCkpIHsKLSAgICAgcmV0dXJuIENhbGN1bGF0ZUtNZWFuQ29sb3JP ZkJ1ZmZlcigmZGVjb2RlZF9kYXRhWzBdLCBpbWdfd2lkdGgsIGltZ19oZWlnaHQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5k LCBzYW1wbGVyLCB0cnVlKTsKLSAgIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdWkvZ2Z4L3NrYml0bWFwX29wZXJhdGlvbnNfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L3NrYml0bWFwX29wZXJhdGlvbnNfdW5p dHRlc3QuY2MKLUBAIC0yMzgsNyArMjM4LDcgQEAgVEVTVChTa0JpdG1hcE9wZXJhdGlvbnNUZXN0 LCBDcmVhdGVIU0xTaGlmdGVkQml0bWFwSHVlT25seSkgewotIAotICAgZm9yIChpbnQgeSA9IDAs IGkgPSAwOyB5IDwgc3JjX2g7IHkrKykgewotICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHNyY193 OyB4KyspIHsKLS0gICAgICAqc3JjLmdldEFkZHIzMih4LCB5KSA9IFNrQ29sb3JTZXRBUkdCKDI1 NSwgMCwgMCwgaSAlIDI1NSk7Ci0rICAgICAgKnNyYy5nZXRBZGRyMzIoeCwgeSkgPSBTa1BhY2tB UkdCMzIoMjU1LCAwLCAwLCBpICUgMjU1KTsKLSAgICAgICBpKys7Ci0gICAgIH0KLSAgIH0KLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdXJsL3VybF9jYW5vbl9ob3N0LmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91cmxfY2Fub25faG9z dC5jYwotQEAgLTEzNSw4ICsxMzUsNyBAQCBib29sIERvU2ltcGxlSG9zdChjb25zdCBJTkNIQVIq IGhvc3QsCi0gICAgIGlmIChzb3VyY2UgPT0gJyUnKSB7Ci0gICAgICAgLy8gVW5lc2NhcGUgZmly c3QsIGlmIHBvc3NpYmxlLgotICAgICAgIC8vIFNvdXJjZSB3aWxsIGJlIHVzZWQgb25seSBpZiBk ZWNvZGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLgotLSAgICAgIGlmICghRGVjb2RlRXNjYXBl ZChob3N0LCAmaSwgaG9zdF9sZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZzb3VyY2UpKSkgewotKyAgICAgIGlmICghRGVjb2Rl RXNjYXBlZChob3N0LCAmaSwgaG9zdF9sZW4sICZzb3VyY2UpKSB7Ci0gICAgICAgICAvLyBJbnZh bGlkIGVzY2FwZWQgY2hhcmFjdGVyLiBUaGVyZSBpcyBub3RoaW5nIHRoYXQgY2FuIG1ha2UgdGhp cwotICAgICAgICAgLy8gaG9zdCB2YWxpZC4gV2UgYXBwZW5kIGFuIGVzY2FwZWQgcGVyY2VudCBz byB0aGUgVVJMIGxvb2tzIHJlYXNvbmFibGUKLSAgICAgICAgIC8vIGFuZCBtYXJrIGFzIGZhaWxl ZC4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdXJsL3VybF9jYW5vbl9p bnRlcm5hbC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91cmxf Y2Fub25faW50ZXJuYWwuaAotQEAgLTMwNSw5ICszMDUsOSBAQCBpbmxpbmUgYm9vbCBJczhCaXRD aGFyKGJhc2U6OmNoYXIxNiBjKSB7Ci0gICByZXR1cm4gYyA8PSAyNTU7Ci0gfQotIAotLXRlbXBs YXRlPHR5cGVuYW1lIENIQVI+Ci0rdGVtcGxhdGU8dHlwZW5hbWUgQ0hBUiwgdHlwZW5hbWUgRFNU PgotIGlubGluZSBib29sIERlY29kZUVzY2FwZWQoY29uc3QgQ0hBUiogc3BlYywgaW50KiBiZWdp biwgaW50IGVuZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHVu ZXNjYXBlZF92YWx1ZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFNUKiB1bmVzY2Fw ZWRfdmFsdWUpIHsKLSAgIGlmICgqYmVnaW4gKyAzID4gZW5kIHx8Ci0gICAgICAgIUlzOEJpdENo YXIoc3BlY1sqYmVnaW4gKyAxXSkgfHwgIUlzOEJpdENoYXIoc3BlY1sqYmVnaW4gKyAyXSkpIHsK LSAgICAgLy8gSW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgYmVjYXVzZSB0aGVyZSdzIG5vdCBlbm91 Z2ggcm9vbSwgb3IgdGhlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hy b21pdW0tdjgtZWxmdjIucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0t djgtZWxmdjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ODBjODE0Njk3 Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0tdjgt ZWxmdjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1UaGlzIGZpeGVzIHY4 IG9uIGJpZyBlbmRpYW4gcHBjNjQgRUxGdjIuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3Y4L3NyYy9wcGMvY29uc3RhbnRzLXBwYy5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9wcGMvY29uc3RhbnRzLXBwYy5oCi1AQCAtMjEsNyAr MjEsOCBAQAotICNlbmRpZgotIAotICNpZiBWOF9IT1NUX0FSQ0hfUFBDICYmIFwKLS0gICAgKFY4 X09TX0FJWCB8fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgVjhfVEFSR0VUX0JJR19FTkRJQU4p KQotKyAgICAoVjhfT1NfQUlYIHx8IChWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBcCi0rICAgICAg KFY4X1RBUkdFVF9CSUdfRU5ESUFOICYmICghZGVmaW5lZChfQ0FMTF9FTEYpIHx8IF9DQUxMX0VM RiA9PSAxKSkpKQotICNkZWZpbmUgQUJJX1VTRVNfRlVOQ1RJT05fREVTQ1JJUFRPUlMgMQotICNl bHNlCi0gI2RlZmluZSBBQklfVVNFU19GVU5DVElPTl9ERVNDUklQVE9SUyAwCi1AQCAtMzMsMTMg KzM0LDE1IEBACi0gI2RlZmluZSBBQklfUEFTU0VTX0hBTkRMRVNfSU5fUkVHUyAwCi0gI2VuZGlm Ci0gCi0tI2lmICFWOF9IT1NUX0FSQ0hfUFBDIHx8ICFWOF9UQVJHRVRfQVJDSF9QUEM2NCB8fCBW OF9UQVJHRVRfTElUVExFX0VORElBTgotKyNpZiAhVjhfSE9TVF9BUkNIX1BQQyB8fCAhVjhfVEFS R0VUX0FSQ0hfUFBDNjQgfHwgXAotKyAgICAoVjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4gfHwgKGRl ZmluZWQoX0NBTExfRUxGKSAmJiBfQ0FMTF9FTEYgPT0gMikpCi0gI2RlZmluZSBBQklfUkVUVVJO U19PQkpFQ1RfUEFJUlNfSU5fUkVHUyAxCi0gI2Vsc2UKLSAjZGVmaW5lIEFCSV9SRVRVUk5TX09C SkVDVF9QQUlSU19JTl9SRUdTIDAKLSAjZW5kaWYKLSAKLS0jaWYgIVY4X0hPU1RfQVJDSF9QUEMg fHwgKFY4X1RBUkdFVF9BUkNIX1BQQzY0ICYmIFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOKQotKyNp ZiAhVjhfSE9TVF9BUkNIX1BQQyB8fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgXAotKyAgICAo VjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4gfHwgKGRlZmluZWQoX0NBTExfRUxGKSAmJiBfQ0FMTF9F TEYgPT0gMikpKQotICNkZWZpbmUgQUJJX0NBTExfVklBX0lQIDEKLSAjZWxzZQotICNkZWZpbmUg QUJJX0NBTExfVklBX0lQIDAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v djgvc3JjL3BwYy9yZWdpc3Rlci1wcGMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS92OC9zcmMvcHBjL3JlZ2lzdGVyLXBwYy5oCi1AQCAtMTQ1LDcgKzE0NSw4IEBAIGNv bnN0IGludCBrTnVtU2FmZXBvaW50UmVnaXN0ZXJzID0gMzI7Ci0gLy8gVGhlIGZvbGxvd2luZyBj b25zdGFudHMgZGVzY3JpYmUgdGhlIHN0YWNrIGZyYW1lIGxpbmthZ2UgYXJlYSBhcwotIC8vIGRl ZmluZWQgYnkgdGhlIEFCSS4gIE5vdGUgdGhhdCBrTnVtUmVxdWlyZWRTdGFja0ZyYW1lU2xvdHMg bXVzdAotIC8vIHNhdGlzZnkgYWxpZ25tZW50IHJlcXVpcmVtZW50cyAocm91bmRpbmcgdXAgaWYg cmVxdWlyZWQpLgotLSNpZiBWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBWOF9UQVJHRVRfTElUVExF X0VORElBTiAgLy8gcHBjNjRsZSBsaW51eAotKyNpZiBWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiAo VjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4gfHwgXAotKyAgICBkZWZpbmVkKF9DQUxMX0VMRikgJiYg X0NBTExfRUxGID09IDIpCi0gLy8gWzBdIGJhY2sgY2hhaW4KLSAvLyBbMV0gY29uZGl0aW9uIHJl Z2lzdGVyIHNhdmUgYXJlYQotIC8vIFsyXSBsaW5rIHJlZ2lzdGVyIHNhdmUgYXJlYQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDk0LWJpZy1lbmRpYW4tc2tpYS1wb3J0YWJsZS5w YXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMjY5ZDM4M2QxLi4wMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTQtYmlnLWVuZGlhbi1za2lhLXBvcnRh YmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21z L3NrY21zLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3NraWEvdGhpcmRfcGFydHkvc2tjbXMvc2tjbXMuY2MKLUBAIC0xODI4LDYgKzE4MjgsMTQg QEAgdHlwZWRlZiBlbnVtIHsKLSAgICAgI2VuZGlmCi0gI2VuZGlmCi0gCi0rLy8gd2l0aCBjdXJy ZW50IGdjYyA4LjMuMCB3ZSBnZXQgYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3Igd2hlbiBjb21w aWxpbmcKLSsvLyBmb3IgcHBjNjQgYmlnIGVuZGlhbiAtIHNvIHN3aXRjaCB0byBwb3J0YWJsZSB1 bnRpbCB0aGlzIGlzIHJlc29sdmVkCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjICBp ZiBkZWZpbmVkKF9fQklHX0VORElBTl9fKSAmJiAhZGVmaW5lZChTS0NNU19QT1JUQUJMRSkKLSsj ICAgIGRlZmluZSBTS0NNU19QT1JUQUJMRQotKyMgIGVuZGlmCi0rI2VuZGlmCi0rCi0gI2lmIGRl ZmluZWQoX19jbGFuZ19fKQotICAgICB0ZW1wbGF0ZSA8aW50IE4sIHR5cGVuYW1lIFQ+IHVzaW5n IFZlYyA9IFQgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKE4pKSk7Ci0gI2VsaWYgZGVm aW5lZChfX0dOVUNfXykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1zYW5k Ym94LXNjaGVkX2dldHBhcmFtLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMTAwLXNhbmRi b3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1 YzMzYTU3ZjAzLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAxMDAtc2Fu ZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAK LUFsbG93IFNZU19zY2hlZF9nZXRwYXJhbSBhbmQgU1lTX3NjaGVkX2dldHNjaGVkdWxlcgotbXVz bCB1c2VzIHRoZW0gZm9yIHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSgpCi0KLXNvdXJjZTogaHR0cHM6 Ly9naXQuYWxwaW5lbGludXgub3JnL2Fwb3J0cy9jb21taXQvY29tbXVuaXR5L2Nocm9taXVtP2lk PTU0YWY5ZjhhYzI0ZjUyZDM4MmM1NzU4ZTI0NDViZjAyMDZlZmY0MGUKLQotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJv eC9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCTIwMTktMTEtMTIgMjA6NDg6MjAu MDEzNzI0NjYxICswMTAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nl cnZpY2VzL3NlcnZpY2VfbWFuYWdlci9zYW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lf bGludXguY2MucGF0Y2hlZAkyMDE5LTExLTEyIDIwOjU4OjU3LjMzMDY5NTY3NiArMDEwMAotQEAg LTkzLDEwICs5MywxNiBAQAotICAgICBjYXNlIF9fTlJfc3lzaW5mbzoKLSAgICAgY2FzZSBfX05S X3RpbWVzOgotICAgICBjYXNlIF9fTlJfdW5hbWU6Ci0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykK LSsgICAgY2FzZSBfX05SX3NjaGVkX2dldHBhcmFtOgotKyAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0 c2NoZWR1bGVyOgotKyNlbmRpZgotICAgICAgIHJldHVybiBBbGxvdygpOwotICAgICBjYXNlIF9f TlJfc2NoZWRfZ2V0YWZmaW5pdHk6Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICBjYXNl IF9fTlJfc2NoZWRfZ2V0cGFyYW06Ci0gICAgIGNhc2UgX19OUl9zY2hlZF9nZXRzY2hlZHVsZXI6 Ci0rI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zY2hlZF9zZXRzY2hlZHVsZXI6Ci0gICAgICAgcmV0 dXJuIHNhbmRib3g6OlJlc3RyaWN0U2NoZWRUYXJnZXQoR2V0UG9saWN5UGlkKCksIHN5c25vKTsK LSAgICAgY2FzZSBfX05SX3BybGltaXQ2NDoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBs YXRlIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKaW5kZXggYjAyMDU1MzBhMTMuLjIyYzA5ZDU1YjA1 IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1w bGF0ZQpAQCAtMSw5MSArMSwzMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1JwogcGtnbmFt ZT1xdDUKLXZlcnNpb249NS4xMy4yCi1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTQuMQorcmV2aXNp b249MQorYnVpbGRfc3R5bGU9bWV0YQogd3Jrc3JjPSJxdC1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNp b259IgotYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQotaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBj bGFuZyBmbGV4IGdpdCBnbGliLWRldmVsIGdwZXJmIG5pbmphIHBrZy1jb25maWcKLSBwcm90b2J1 ZiBweXRob24gcmUyYyBydWJ5IHdoaWNoIgoraG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBjbGFuZyBm bGV4IGdpdCBnbGliLWRldmVsIHBrZy1jb25maWcKKyBweXRob24gcmUyYyBydWJ5IHdoaWNoIgog bWFrZWRlcGVuZHM9IlNETDItZGV2ZWwgVnVsa2FuLUhlYWRlcnMgYWxzYS1saWItZGV2ZWwgZG91 YmxlLWNvbnZlcnNpb24tZGV2ZWwKICBldWRldi1saWJ1ZGV2LWRldmVsIGZmbXBlZy1kZXZlbCBm cmVldGRzLWRldmVsIGdsaWItZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwKLSBndGsrMy1k ZXZlbCBpY3UtZGV2ZWwganNvbmNwcC1kZXZlbCBsaWJYdi1kZXZlbCBsaWJibHVldG9vdGgtZGV2 ZWwgbGliY2FwLWRldmVsCi0gbGliZXZlbnQtZGV2ZWwgbGliaW5wdXQtZGV2ZWwgbGlibW5nLWRl dmVsIGxpYm15c3FsY2xpZW50LWRldmVsIGxpYnByb3h5LWRldmVsCi0gbGlidnB4LWRldmVsIGxp YndlYnAtZGV2ZWwgbGlieHNsdC1kZXZlbCBtaW5pemlwLWRldmVsIG5zcy1kZXZlbCBjdXBzLWRl dmVsCisgZ3RrKzMtZGV2ZWwgaWN1LWRldmVsIGxpYlh2LWRldmVsIGxpYmJsdWV0b290aC1kZXZl bCBsaWJjYXAtZGV2ZWwKKyBsaWJpbnB1dC1kZXZlbCBsaWJtbmctZGV2ZWwgbGlibXlzcWxjbGll bnQtZGV2ZWwgbGlicHJveHktZGV2ZWwKKyBsaWJ2cHgtZGV2ZWwgbGlid2VicC1kZXZlbCBsaWJ4 c2x0LWRldmVsIGN1cHMtZGV2ZWwKICBvcHVzLWRldmVsIHBjaXV0aWxzLWRldmVsIHBjcmUyLWRl dmVsIHBvc3RncmVzcWwtbGlicy1kZXZlbAotIHByb3RvYnVmLWRldmVsIHB1bHNlYXVkaW8tZGV2 ZWwgc25hcHB5LWRldmVsIHRzbGliLWRldmVsCisgcHJvdG9idWYtZGV2ZWwgcHVsc2VhdWRpby1k ZXZlbCB0c2xpYi1kZXZlbCBsaWJyZXNzbC1kZXZlbAogIHVuaXhvZGJjLWRldmVsIHhjYi11dGls LWltYWdlLWRldmVsIHhjYi11dGlsLWtleXN5bXMtZGV2ZWwKICB4Y2ItdXRpbC1yZW5kZXJ1dGls LWRldmVsIHhjYi11dGlsLXdtLWRldmVsIGxpYnpzdGQtZGV2ZWwgaGFyZmJ1enotZGV2ZWwiCi1k ZXBlbmRzPSJxdGNob29zZXIiCitkZXBlbmRzPSJxdDUtZGJ1cyBxdDUtZ3VpIHF0NS1jb3JlIHF0 NS13aWRnZXRzIHF0NS1uZXR3b3JrIHF0NS14bWwKKyBxdDUtdGVzdCBxdDUtc3FsIHF0NS1jb25j dXJyZW50IHF0NS1wcmludHN1cHBvcnQgcXQ1LW9wZW5nbCIKIHNob3J0X2Rlc2M9IkNyb3NzLXBs YXRmb3JtIGFwcGxpY2F0aW9uIGFuZCBVSSBmcmFtZXdvcmsgKFFUNSkiCiBtYWludGFpbmVyPSJK w7xyZ2VuIEJ1Y2htw7xsbGVyIDxwdWxsbW9sbEB0LW9ubGluZS5kZT4iCiBsaWNlbnNlPSJHUEwt My4wLW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3F0Lmlv LyIKIGRpc3RmaWxlcz0iaHR0cDovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL3F0 LyR7dmVyc2lvbiUuKn0vJHt2ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1zcmMtJHt2ZXJz aW9ufS50YXIueHoiCi1jaGVja3N1bT01NWU4MjczNTM2YmU0MWY0ZjYzMDY0YTc5ZTU1MmEyMjEz Mzg0OGJiNDE5NDAwYjZmYThlOWZjMGRjMDVkZTA4CitjaGVja3N1bT02ZjE3ZjQ4OGY1MTJiMzlj MmZlYjU3ZDgzYTVlMGExM2RjZWYzMjk5OWJlYTJlMmE4ZjgzMmY1NGEyOWJhZGI4CiByZXBsYWNl cz0icXQ1LWRvYzw1LjYuMCBxdDUtcXVpY2sxPDUuNi4wIHF0NS1xdWljazEtZGV2ZWw8NS42LjAg cXQ1LXdlYmtpdDw1LjYuMCBxdDUtd2Via2l0LWRldmVsPDUuNi4wCiAgcXQ1LWVuZ2luaW88NS43 LjEgcXQ1LWVuZ2luaW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1ndGs8NS43LjEgcXQ1LWNhbnZh czNkPDUuMTMuMCIKIAotYnVpbGRfb3B0aW9ucz0id2ViZW5naW5lIgotZGVzY19vcHRpb25fd2Vi ZW5naW5lPSJCdWlsZCBDaHJvbWl1bS1iYXNlZCBXZWJFbmdpbmUgY29tcG9uZW50IgotCi1tYWtl ZGVwZW5kcys9IiBoYXJmYnV6ei1kZXZlbCIKLQotaWYgWyAiJFhCUFNfTElCQyIgPSAibXVzbCIg XTsgdGhlbgotCWhvc3RtYWtlZGVwZW5kcys9IiBtdXNsLWxlZ2FjeS1jb21wYXQiCi1maQotaWYg WyAiJFhCUFNfVEFSR0VUX0xJQkMiID0gIm11c2wiIF07IHRoZW4KLQltYWtlZGVwZW5kcys9IiBt dXNsLWxlZ2FjeS1jb21wYXQiCi1maQotCi1jYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4K LQlhcm12NXRlbCopIDs7ICMgcXR3ZWJlbmdpbmUgdXNlcyBWU00gYXNzZW1ibGVyIGNvbW1hbmRz Ci0JcHBjfHBwYy1tdXNsKSA7OyAjIHF0d2ViZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgcHBjIDMy IGJpdAotCSopIGlmIFsgIiRYQlBTX1dPUkRTSVpFIiA9ICIkWEJQU19UQVJHRVRfV09SRFNJWkUi IF07IHRoZW4KLQkJIyB3ZWJlbmdpbmUgY2FuIGJlIGJ1aWx0IG9ubHkgaWYgd29yZCBzaXplIG1h dGNoZXMKLQkJYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ3ZWJlbmdpbmUiCi0JZmk7OwotZXNhYwot Ci1pZiBbICIkYnVpbGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgotCSMgdjggcmVxdWlyZXMg bGliYXRvbWljIG9uIGFybXZbNTZdKi9wcGMqL3MzOTB4L21pcHMqCi0JY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCi0JCWFybXZbNTZdKnxtaXBzKnxwcGMqKSBtYWtlZGVwZW5kcys9IiBs aWJhdG9taWMtZGV2ZWwiIDs7Ci0JCSopIDs7Ci0JZXNhYwotCSMgYWxzbyBuZWVkIGl0IG9uIGhv c3Qgd2hlbiBpdCdzIG9uZSBvZiB0aG9zZSBhcmNocwotCWNhc2UgIiRYQlBTX01BQ0hJTkUiIGlu Ci0JCWFybXZbNTZdKnxtaXBzKnxwcGMqKSBob3N0bWFrZWRlcGVuZHMrPSIgbGliYXRvbWljLWRl dmVsIiA7OwotCQkqKSA7OwotCWVzYWMKLWZpCi0KLXN1YnBhY2thZ2VzPSJxdDUtM2QgcXQ1LTNk LWRldmVsIHF0NS1jaGFydHMgcXQ1LWNoYXJ0cy1kZXZlbAotIHF0NS1jb25uZWN0aXZpdHkgcXQ1 LWNvbm5lY3Rpdml0eS1kZXZlbCBxdDUtZGF0YXZpczNkIHF0NS1kYXRhdmlzM2QtZGV2ZWwKLSBx dDUtZGVjbGFyYXRpdmUgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1kZXZlbCBxdDUtZXhhbXBs ZXMgcXQ1LWdhbWVwYWQKLSBxdDUtZ2FtZXBhZC1kZXZlbCBxdDUtZ3JhcGhpY2FsZWZmZWN0cyBx dDUtaG9zdC10b29scyBxdDUtaW1hZ2Vmb3JtYXRzCi0gcXQ1LWxvY2F0aW9uIHF0NS1sb2NhdGlv bi1kZXZlbCBxdDUtbXVsdGltZWRpYSBxdDUtbXVsdGltZWRpYS1kZXZlbAotIHF0NS1uZXR3b3Jr YXV0aCBxdDUtbmV0d29ya2F1dGgtZGV2ZWwgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcGx1Z2luLW9k YmMKLSBxdDUtcGx1Z2luLXBnc3FsIHF0NS1wbHVnaW4tc3FsaXRlIHF0NS1wbHVnaW4tdGRzIHF0 NS1wdXJjaGFzaW5nCi0gcXQ1LXB1cmNoYXNpbmctZGV2ZWwgcXQ1LXFtYWtlIHF0NS1xdWlja2Nv bnRyb2xzIHF0NS1xdWlja2NvbnRyb2xzMgotIHF0NS1xdWlja2NvbnRyb2xzMi1kZXZlbCBxdDUt cmVtb3Rlb2JqZWN0cyBxdDUtcmVtb3Rlb2JqZWN0cy1kZXZlbAotIHF0NS1zY3JpcHQgcXQ1LXNj cmlwdC1kZXZlbCBxdDUtc2N4bWwgcXQ1LXNjeG1sLWRldmVsIHF0NS1zZW5zb3JzCi0gcXQ1LXNl bnNvcnMtZGV2ZWwgcXQ1LXNlcmlhbGJ1cyBxdDUtc2VyaWFsYnVzLWRldmVsIHF0NS1zZXJpYWxw b3J0Ci0gcXQ1LXNlcmlhbHBvcnQtZGV2ZWwgcXQ1LXNwZWVjaCBxdDUtc3BlZWNoLWRldmVsIHF0 NS1zdmcgcXQ1LXN2Zy1kZXZlbAotIHF0NS10b29scyBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXRyYW5z bGF0aW9ucyBxdDUtdmlydHVhbGtleWJvYXJkCi0gcXQ1LXZpcnR1YWxrZXlib2FyZC1kZXZlbCBx dDUtd2F5bGFuZCBxdDUtd2F5bGFuZC1kZXZlbCBxdDUtd2ViY2hhbm5lbAotIHF0NS13ZWJjaGFu bmVsLWRldmVsIHF0NS13ZWJnbHBsdWdpbiBxdDUtd2ViZ2xwbHVnaW4tZGV2ZWwgcXQ1LXdlYnNv Y2tldHMKLSBxdDUtd2Vic29ja2V0cy1kZXZlbCBxdDUtd2VidmlldyBxdDUtd2Vidmlldy1kZXZl bCBxdDUteDExZXh0cmFzCi0gcXQ1LXgxMWV4dHJhcy1kZXZlbCBxdDUteG1scGF0dGVybnMgcXQ1 LXhtbHBhdHRlcm5zLWRldmVsCi0gcXQ1LWxvdHRpZSBxdDUtbG90dGllLWRldmVsIgotCi1pZiBb ICIkYnVpbGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgotCXN1YnBhY2thZ2VzKz0iIHF0NS13 ZWJlbmdpbmUgcXQ1LXdlYmVuZ2luZS1kZXZlbCIKLWZpCi0KLWlmIFsgIiRYQlBTX1dPUkRTSVpF IiAtZXEgMzIgXTsgdGhlbgotCW5vZGVidWc9eWVzICAjIHByZXZlbnQgT09NCi1maQotCiAjIFdv cmsgYXJvdW5kIFNTTHYzX3tjbGllbnQsc2VydmVyfV9tZXRob2QgbWlzc2luZyBpbiBsaWJyZXNz bC0yLjMuMwogQ0ZMQUdTPSItRE9QRU5TU0xfTk9fUFNLIC1ET1BFTlNTTF9OT19ORVhUUFJPVE9O RUciCiBDWFhGTEFHUz0iJHtDRkxBR1N9IC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVdu by1jbGFzcy1tZW1hY2Nlc3MgLVduby1wYWNrZWQtbm90LWFsaWduZWQiCkBAIC05NywyNiArMzcs OCBAQCBpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAkjIHdheWxhbmQtZGV2ZWwgY29udGFp bnMgL3Vzci9iaW4vd2F5bGFuZC1zY2FubmVyCiAJaG9zdG1ha2VkZXBlbmRzKz0iIGljdS1kZXZl bCB3YXlsYW5kLWRldmVsIHpsaWItZGV2ZWwiCiAJaG9zdG1ha2VkZXBlbmRzKz0iIHBvc3RncmVz cWwtbGlicy1kZXZlbCIKLQkjIENyb3NzIGJ1aWxkaW5nIHF0d2ViZW5naW5lIHJlcXVpcmVzIHNv bWUgbW9yZSBob3N0IHBhY2thZ2VzCi0JaWYgWyAiJGJ1aWxkX29wdGlvbl93ZWJlbmdpbmUiIF07 IHRoZW4KLQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5zcy1kZXZlbCBsaWJldmVudC1kZXZlbCIKLQlm aQogZmkKIAotX2Jvb3RzdHJhcF9nbigpIHsKLQkjIEJvb3RzdHJhcCBnbiAoZ2VuZXJhdGUgbmlu amEpCi0JZWNobyAiQm9vdHN0cmFwcGluZyAnZ24nIgotCWNkICR7d3Jrc3JjfS9xdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvZ24KLQlDRkxBR1M9IiRDRkxBR1NfaG9zdCIgQ1hYRkxBR1M9IiRDWFhG TEFHU19ob3N0IiBMREZMQUdTPSIkTERGTEFHU19ob3N0IiBcCi0JUEtHQ09ORklHPS91c3IvYmlu L3BrZ2NvbmZpZyBQS0dfQ09ORklHX1BBVEg9Ii91c3IvbGliL3BrZ2NvbmZpZzovdXNyL3NoYXJl L3BrZ2NvbmZpZyIgXAotCQlweXRob24yIGJ1aWxkL2dlbi5weSAtLW5vLWxhc3QtY29tbWl0LXBv c2l0aW9uIC0tb3V0LXBhdGggXAotCQkJJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9nbi9vdXQvUmVsZWFzZSAtLWNjICIkQ0NfaG9zdCIgXAotCQkJLS1jeHggIiRDWFhfaG9zdCIg LS1sZCAiJENYWF9ob3N0IiAtLWFyICIkQVJfaG9zdCIKLQluaW5qYSAtQyBvdXQvUmVsZWFzZSBn bgotCWNkICR7d3Jrc3JjfQotfQotCi0KIF9jbGVhbnVwX3dya3NyY19sZWFrKCkgewogCWlmIFsg LWQgIiR7UEtHREVTVERJUn0vdXNyL2xpYi9jbWFrZSIgXTsgdGhlbgogCQkjIFJlcGxhY2UgcmVm ZXJlbmNlcyB0byAke3dya3NyY30gaW4gY21ha2UgZmlsZXMKQEAgLTE3MSw2ICs5MywxMSBAQCBf aW5zdGFsbF9kZXZlbCgpIHsKIAlsb2NhbCBtb2R1bGU9JDEKIAljZCAke3dya3NyY30vJHttb2R1 bGV9CiAJbWFrZSBJTlNUQUxMX1JPT1Q9JHtQS0dERVNURElSfSBpbnN0YWxsCisJdm1rZGlyIHVz ci9saWIvcXQ1L21rc3BlY3MvbW9kdWxlcworCWlmIFsgLWQgIiR7UEtHREVTVERJUn0ke3dya3Ny Y30vaG9zdC9ta3NwZWNzL21vZHVsZXMiIF07IHRoZW4KKwkJbXYgLW52ICR7UEtHREVTVERJUn0k e3dya3NyY30vaG9zdC9ta3NwZWNzL21vZHVsZXMvKiBcCisJCQkke1BLR0RFU1RESVJ9L3Vzci9s aWIvcXQ1L21rc3BlY3MvbW9kdWxlcy8KKwlmaQogCXJtIC1yZiAke1BLR0RFU1RESVJ9L2J1aWxk ZGlyCiAJcm0gLXJmICR7UEtHREVTVERJUn0vdXNyL3NoYXJlCiAJcm0gLXJmICR7UEtHREVTVERJ Un0vdXNyL2xpYi9xdDUvYmluCkBAIC0yNDEsMzIgKzE2OCw2IEBAIF9tc2dfY3Jvc3MoKSB7CiBk b19jb25maWd1cmUoKSB7CiAJbG9jYWwgb3B0cyBzcGVjCiAKLQkjIENvbXBhdGliaWxpdHkgZnVu Y3Rpb25zIHJlc19uaW5pdCgpIGFuZCByZXNfbmNsb3NlKCkgZm9yIG11c2wgbGliYwotCWNwICR7 RklMRVNESVJ9L3Jlc29sdl9jb21wYXQuaCAke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL25ldC9kbnMKLQotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgot CWFybXY1Knxhcm12NiopCSMgRGlzYWJsZSAieWllbGQiIGFzc2VtYmxlciBpbnN0cnVjdGlvbgot CQlzZWQgLWkgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9y L3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKLQkJCXF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxv Y2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcGluX2xvY2suY2MgXAotCQkJLWUgJ3M7InlpZWxk Ijsibm9wIjsnCi0JCTs7Ci0JZXNhYwotCi0JY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGlu Ci0JKi1tdXNsKQotCQkjIFBhdGNoIC4uLi9saW51eC8qL2NvbmZpZy57aCxhc219IHRvIGRlZmlu ZSBIQVZFX1NZU0NUTCAwCi0JCWxvY2FsIGNvbmZpZyBjaHJvbWl1bT0ke3dya3NyY30vcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtCi0JCWZvciBjb25maWcgaW4gJChmaW5kICR7Y2hy b21pdW19L3RoaXJkX3BhcnR5L2ZmbXBlZy9jaHJvbWl1bS9jb25maWcgLW5hbWUgImNvbmZpZ1wu KiIgfCBncmVwIGxpbnV4KTsgZG8KLQkJCXNlZCAtaSAke2NvbmZpZ30gLWUgInM7SEFWRV9TWVND VEwgMTtIQVZFX1NZU0NUTCAwOyIKLQkJZG9uZQotCQkjIERvIG5vdCB1c2UgYWxsb2NhdG9yIHNo aW0gKGluY29tcGF0aWJsZSB3aXRoIG11c2wgbGliYykKLQkJc2VkIC1pIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvYWxsb2NhdG9yLmduaSBcCi0JCQktZSAi cztcKHVzZV9hbGxvY2F0b3Jfc2hpbVwpID0gLio7XDEgPSBmYWxzZTsiCi0JCSMgRGVmaW5lIHRv IHNldCAyIE1pQiBzdGFjayBzaXplIGZvciBxdGhyZWFkCi0JCWV4cG9ydCBDWFhGTEFHUys9IiAt RF9QT1NJWF9USFJFQURfQVRUUl9TVEFDS1NJWkU9MjA5NzE1MiIKLQkJOzsKLQllc2FjCi0KIAkj IENyb3NzIGJ1aWxkIHBhdGNoZXMKIAlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAkJIyBU aGlzIGFsc28gc2V0cyBkZWZhdWx0IHtDLENYWCxMRH1GTEFHUyBmb3IgcHJvamVjdHMgYnVpbHQg dXNpbmcgcW1ha2UKQEAgLTI3OSwyOCArMTgwLDYgQEAgZG9fY29uZmlndXJlKCkgewogCQlmb3Ig ZCBpbiAkKGxzICR7d3Jrc3JjfS9xdGJhc2UvaW5jbHVkZSk7IGRvCiAJCQlsbiAtc2Z2ICR7dmVy c2lvbn0vJHtkfS9wcml2YXRlIHF0YmFzZS9pbmNsdWRlLyR7ZH0vcHJpdmF0ZQogCQlkb25lCi0J CWlmIFsgIiRidWlsZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCQlfYm9vdHN0cmFwX2du Ci0JCWZpCi0KLQkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JCW1pcHMqKQkjIHNn aWRlZnMuaCBpcyBpbiAvdXNyL2luY2x1ZGUvYXNtCi0JCQlmb3IgZiBpbiBcCi0JCQkJcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxs X3N1cHBvcnQuaCBcCi0JCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL2FzbS1t aXBzL2ZwcmVnZGVmLmggXAotCQkJCXF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9h c20tbWlwcy9yZWdkZWYuaCBcCi0JCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRl L2FzbS1taXBzL2FzbS5oIFwKLQkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvdGNtYWxsb2MvdmVuZG9yL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9y dC5oIFwKLQkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv dGNtYWxsb2MvY2hyb21pdW0vc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmggXAotCQkJ CXF0c2NyaXB0L3NyYy8zcmRwYXJ0eS9qYXZhc2NyaXB0Y29yZS9KYXZhU2NyaXB0Q29yZS93dGYv UGxhdGZvcm0uaDsgZG8KLQkJCQlzZWQgLWkgJGYgLWUgInM7PHNnaWRlZnMuaD47PGFzbS9zZ2lk ZWZzLmg+OyIKLQkJCWRvbmUKLQkJCSMgQXNzdW1lIHRoYXQgUkdCQSBvcmRlciBpcyBjb3JyZWN0 IGZvciBiaWcgZW5kaWFuIENQVXMKLQkJCXNlZCAtaSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2tpYS9jb25maWcvU2tVc2VyQ29uZmlnLmggXAotCQkJCS1lICcvI2Vycm9yIFJl YWQgdGhlIGNvbW1lbnQgYXQgdGhpcyBsb2NhdGlvbi9kJwotCQkJOzsKLQkJZXNhYwotCQlwYXRj aCAtTnAwIDwgJHtGSUxFU0RJUn0vMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2VuLnBhdGNo CiAJZWxzZQogCQkjIHFtYWtlIHtDWFgsTH1GTEFHUyBwYXRjaGVzCiAJCXNlZCAtaSAtZSAic3xe XChDWFhGTEFHUyA9LipcKXxcMSAke0NYWEZMQUdTfXwiIFwKQEAgLTM0OCwyOSArMjI3LDEwIEBA IGRvX2NvbmZpZ3VyZSgpIHsKIAlvcHRzKz0iIC1zeXN0ZW0temxpYiIKIAlvcHRzKz0iIC1zeXN0 ZW0tc3FsaXRlIgogCW9wdHMrPSIgLXN5c3RlbS1oYXJmYnV6eiIKLQkjIFJlbHkgb24gYXV0byBk ZXRlY3Rpb24gKGZhaWxzIGlmIGZvcmNlZCBmb3IgY3Jvc3MgYnVpbGRzKQotCWlmIFsgIiRidWls ZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCSMgb3B0cys9IiAtd2ViZW5naW5lLWFsc2Ei Ci0JCW9wdHMrPSIgLW5vLXdlYmVuZ2luZS1lbWJlZGRlZC1idWlsZCIKLQkJb3B0cys9IiAtd2Vi ZW5naW5lLWljdSIKLQkJb3B0cys9IiAtd2ViZW5naW5lLWZmbXBlZyIKLQkJb3B0cys9IiAtd2Vi ZW5naW5lLW9wdXMiCi0JCW9wdHMrPSIgLXdlYmVuZ2luZS13ZWJwIgotCQlvcHRzKz0iIC13ZWJl bmdpbmUtcGVwcGVyLXBsdWdpbnMiCi0JCW9wdHMrPSIgLXdlYmVuZ2luZS1wcmludGluZy1hbmQt cGRmIgotCQlvcHRzKz0iIC13ZWJlbmdpbmUtcHJvcHJpZXRhcnktY29kZWNzIgotCQlvcHRzKz0i IC13ZWJlbmdpbmUtcHVsc2VhdWRpbyIKLQkJb3B0cys9IiAtd2ViZW5naW5lLXNwZWxsY2hlY2tl ciIKLQkJb3B0cys9IiAtd2ViZW5naW5lLXdlYnJ0YyIKLQkJb3B0cys9IiAtd2ViZW5naW5lLWdl b2xvY2F0aW9uIgotCQlvcHRzKz0iIC13ZWJlbmdpbmUtdjgtc25hcHNob3QiCi0JZmkKKwlvcHRz Kz0iIC1uby1mZWF0dXJlLWVnbGZzX2JyY20iICMgbWlzc2luZyBpbmNsdWRlIHBhdGgKIAlvcHRz Kz0iIC1zaWxlbnQiCiAJIyBvcHRzKz0iIC12IgotCSMgbWFrZSBzdXJlIHRvIGRpc2FibGUgd2Vi ZW5naW5lIG9uIHBsYXRmb3JtcyB0aGF0IHdlIGRvbid0IGJ1aWxkIGl0IGZvcgotCWlmIFsgLXog IiRidWlsZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCW9wdHMrPSIgLXNraXAgcXR3ZWJl bmdpbmUiCi0JZmkKKwlvcHRzKz0iIC1za2lwIHF0d2ViZW5naW5lIgogCUxERkxBR1MrPSIgLVds LC0tbm8ta2VlcC1tZW1vcnkiICAjIG5lZWRzIG1vcmUgdGhhbiA4R0IgUkFNIGVsc2UKIAlpZiBb ICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAkJc3BlYz12b2lkLSR7WEJQU19DUk9TU19UUklQTEVU fS1nKysKQEAgLTM4MCwzMyArMjQwLDEzIEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJb3B0cys9IiAt c3lzcm9vdCAke1hCUFNfQ1JPU1NfQkFTRX0iCiAJCW9wdHMrPSIgLWhvc3RwcmVmaXggaG9zdCIK IAkJb3B0cys9IiAtZXh0cHJlZml4IC91c3IiCi0JCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgotCQlhcm0qfG1pcHMqKQotCQkJaWYgWyAiJGJ1aWxkX29wdGlvbl93ZWJlbmdpbmUiIF07 IHRoZW4KLQkJCQkjIFY4IHNuYXBzaG90IGNhbid0IGJlIGJ1aWx0IHdpdGggYSA2NCBiaXQgaG9z dCBjb21waWxlcgotCQkJCW9wdHMrPSIgLW5vLXdlYmVuZ2luZS12OC1zbmFwc2hvdCIKLQkJCWZp Ci0JCQk7OwotCQllc2FjCi0JCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlhYXJj aDY0Knxhcm12NyopCi0JCQlzZWQgLWkgJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy9jb3JlL2Nv bmZpZy9saW51eC5wcmkgXAotCQkJCS1lICIvYXJtX3VzZV9uZW9uPS9zO2ZhbHNlO3RydWU7Igot CQkJOzsKLQkJYXJtKikKLQkJCXNlZCAtaSAke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjL2NvcmUv Y29uZmlnL2xpbnV4LnByaSBcCi0JCQkJLWUgIi9hcm1fdXNlX25lb249L3M7dHJ1ZTtmYWxzZTsi Ci0KLQkJCTs7Ci0JCWVzYWMKLQkJc2VkIC1pICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvY29y ZS9jb25maWcvbGludXgucHJpIFwKLQkJCS1lICIvZXF1YWxzKE1BUk1WL3M7dHJ1ZTtmYWxzZTsi CiAKIAkJIyBNYWtlIHN1cmUgbGliUXQ1RGVzaWduZXIgaXMgYnVpbHQKIAkJY3AgLXYgJHtGSUxF U0RJUn0vcXR0b29sc19zcmMucHJvIHF0dG9vbHMvc3JjL3NyYy5wcm8KIAkJY3AgLXYgJHtGSUxF U0RJUn0vZGVzaWduZXJfc3JjLnBybyBxdHRvb2xzL3NyYy9kZXNpZ25lci9zcmMvc3JjLnBybwog CQljcCAtdiAke0ZJTEVTRElSfS9hc3Npc3RhbnQucHJvIHF0dG9vbHMvc3JjL2Fzc2lzdGFudC9h c3Npc3RhbnQucHJvCiAJCWNwIC12ICR7RklMRVNESVJ9L2xpbmd1aXN0LnBybyBxdHRvb2xzL3Ny Yy9saW5ndWlzdC9saW5ndWlzdC5wcm8KKwkJY3AgLXYgJHtGSUxFU0RJUn0vdWl0b29scy5wcm8g cXR0b29scy9zcmMvZGVzaWduZXIvc3JjL3VpdG9vbHMvdWl0b29scy5wcm8KIAlmaQogCiAJQ0M9 ImNjIiBDWFg9ImMrKyIgQ1BQPSJjcHAiIExEPSJjKysiIEFSPSJhciIgQVM9ImFzIiBOTT0ibm0i IFwKQEAgLTQxOSwxMCArMjU5LDEwIEBAIGRvX2NvbmZpZ3VyZSgpIHsKIH0KIAogZG9fYnVpbGQo KSB7Ci0JZXhwb3J0IE5JTkpBSk9CUz0ke21ha2Vqb2JzfQogCSMgUnVuIG1ha2UgdHdpY2UgYmVj YXVzZSBzb21ldGltZXMgYSBmaWxlICJjaHJvbWUvZ3JpdC9nZW5lcmF0ZWRfcmVzb3VyY2VzLmgi CiAJIyBpcyBub3QgeWV0IHJlYWR5IHdoZW4gaXQgaXMgdG8gYmUgaW5jbHVkZWQuIFJlcGVhdGlu ZyBtYWtlIHdvcmtzIGFyb3VuZCB0aGF0CiAJIyBwcm9ibGVtIHdpdGhvdXQgaGF2aW5nIHRvIHJl c29ydCB0byBkaXNhYmxlX3BhcmFsbGVsX2J1aWxkPXllcworCSMgb3Igc29tZSBvdGhlciBmaWxl cwogCW1ha2UgJHttYWtlam9ic30gfHwgbWFrZSAke21ha2Vqb2JzfQogfQogCkBAIC00OTQsMTIg KzMzNCwxNSBAQCBkb19pbnN0YWxsKCkgewogCQkjCiAJCWRpcnMrPSIgcXRkZWNsYXJhdGl2ZS90 b29scy9xbWxtaW4iCiAJCWRpcnMrPSIgcXRkZWNsYXJhdGl2ZS90b29scy9xbWxsaW50IgorCQlk aXJzKz0iIHF0ZGVjbGFyYXRpdmUvdG9vbHMvcW1sY2FjaGVnZW4iCiAJCWRpcnMrPSIgcXRkZWNs YXJhdGl2ZS90b29scy9xbWxpbXBvcnRzY2FubmVyIgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9v bHMvbW9jIgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvcmNjIgogCQlkaXJzKz0iIHF0YmFz ZS9zcmMvdG9vbHMvdWljIgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvcWRidXNjcHAyeG1s IgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvcWRidXN4bWwyY3BwIgorCQlkaXJzKz0iIHF0 YmFzZS9zcmMvdG9vbHMvcXZrZ2VuIgorCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvdHJhY2Vn ZW4iCiAJCWRpcnMrPSIgcXRiYXNlL3NyYy90b29scy9xbGFsciIKIAkJZGlycys9IiBxdDNkL3Rv b2xzL3FnbHRmIgogCQlkaXJzKz0iIHF0cmVtb3Rlb2JqZWN0cy90b29scy9yZXBjIgpAQCAtNTcx LDYgKzQxNCwxMDIgQEAgZG9faW5zdGFsbCgpIHsKIAlybSAtcmYgJHtERVNURElSfS9idWlsZGRp cgogfQogCitxdDUtZ3VpX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEd1aSIKKwlwa2df aW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1R3VpLnNvKiIKKwkJdm1vdmUgInVz ci9saWIvbGliUXQ1WGNiUXBhLnNvKiIKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1RWdsRlNEZXZp Y2VJbnRlZ3JhdGlvbi5zbyoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NUVnbEZzS21zU3VwcG9y dC5zbyoiCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvZ2VuZXJpYworCQl2bW92ZSB1c3Iv bGliL3F0NS9wbHVnaW5zL3BsYXRmb3JtcworCQl2bW92ZSB1c3IvbGliL3F0NS9wbHVnaW5zL3hj YmdsaW50ZWdyYXRpb25zCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvaW1hZ2Vmb3JtYXRz CisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvZWdsZGV2aWNlaW50ZWdyYXRpb25zCisJCXZt b3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvcGxhdGZvcm1pbnB1dGNvbnRleHRzCisJCXZtb3ZlIHVz ci9saWIvcXQ1L3BsdWdpbnMvcGxhdGZvcm10aGVtZXMKKwl9Cit9CisKK3F0NS1kYnVzX3BhY2th Z2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIERCdXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3Zl ICJ1c3IvbGliL2xpYlF0NURCdXMuc28qIgorCX0KK30KKworcXQ1LWNvcmVfcGFja2FnZSgpIHsK KwlzaG9ydF9kZXNjKz0iIC0gQ29yZSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9s aWIvbGliUXQ1Q29yZS5zbyoiCisJfQorfQorCitxdDUtb3BlbmdsX3BhY2thZ2UoKSB7CisJc2hv cnRfZGVzYys9IiAtIE9wZW5HTCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIv bGliUXQ1T3BlbkdMLnNvKiIKKwl9Cit9CisKK3F0NS1wcmludHN1cHBvcnRfcGFja2FnZSgpIHsK KwlzaG9ydF9kZXNjKz0iIC0gUHJpbnQgU3VwcG9ydCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1v dmUgInVzci9saWIvbGliUXQ1UHJpbnRTdXBwb3J0LnNvKiIKKwkJdm1vdmUgdXNyL2xpYi9xdDUv cGx1Z2lucy9wcmludHN1cHBvcnQKKwl9Cit9CisKK3F0NS1jb25jdXJyZW50X3BhY2thZ2UoKSB7 CisJc2hvcnRfZGVzYys9IiAtIENvbmN1cnJlbmN5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92 ZSAidXNyL2xpYi9saWJRdDVDb25jdXJyZW50LnNvKiIKKwl9Cit9CisKK3F0NS13aWRnZXRzX3Bh Y2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIFdpZGdldHMiCisJcGtnX2luc3RhbGwoKSB7CisJ CXZtb3ZlICJ1c3IvbGliL2xpYlF0NVdpZGdldHMuc28qIgorCX0KK30KKworcXQ1LW5ldHdvcmtf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gTmV0d29yayIKKwlwa2dfaW5zdGFsbCgpIHsK KwkJdm1vdmUgInVzci9saWIvbGliUXQ1TmV0d29yay5zbyoiCisJCXZtb3ZlIHVzci9saWIvcXQ1 L3BsdWdpbnMvYmVhcmVyCisJfQorfQorCitxdDUtc3FsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVz Yys9IiAtIFNxbCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1U3Fs LnNvKiIKKwl9Cit9CisKK3F0NS10ZXN0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIFRl c3QiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NVRlc3Quc28qIgor CX0KK30KKworcXQ1LXhtbF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBYbWwiCisJcGtn X2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NVhtbC5zbyoiCisJfQorfQorCitx dDUtYmFzZS1kb2NzX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIERvY3VtZW50YXRpb24i CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvcXQ1CisJfQorfQorCiBx dDUtM2QtZGV2ZWxfcGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gQysrIGFuZCBRTUwgQVBJ cyBmb3IgM0QgZ3JhcGhpY3MgKGRldmVsb3BtZW50KSIKIAlkZXBlbmRzPSJxdDUtM2QtJHt2ZXJz aW9ufV8ke3JldmlzaW9ufSBxdDUtZGV2ZWwtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKQEAgLTY0 NCw3ICs1ODMsNyBAQCBxdDUtZGVjbGFyYXRpdmVfcGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0i IC0gRGVjbGFyYXRpdmUgY29tcG9uZW50IgogCXBrZ19pbnN0YWxsKCkgewogCQlfaW5zdGFsbF9z dWJwa2cgcXRkZWNsYXJhdGl2ZQotCQlfbW92ZV90YXJnZXRfYmluYXJpZXMgcW1sbWluIHFtbGxp bnQgcW1saW1wb3J0c2Nhbm5lcgorCQlfbW92ZV90YXJnZXRfYmluYXJpZXMgcW1sbWluIHFtbGxp bnQgcW1saW1wb3J0c2Nhbm5lciBxbWxjYWNoZWdlbgogCX0KIH0KIApAQCAtNzkxLDYgKzczMCwx MyBAQCBxdDUtcXVpY2tjb250cm9sczJfcGFja2FnZSgpIHsKIAl9CiB9CiAKK3F0NS1xdWlja3Rp bWVsaW5lX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEtleWZyYW1lLWJhc2VkIGFuaW1h dGlvbnMiCisJcGtnX2luc3RhbGwoKSB7CisJCV9pbnN0YWxsX3N1YnBrZyBxdHF1aWNrdGltZWxp bmUKKwl9Cit9CisKIHF0NS1yZW1vdGVvYmplY3RzLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRf ZGVzYys9IiAtIFJlbW90ZSBPYmplY3RzIChkZXZlbG9wbWVudCkiCiAJZGVwZW5kcz0icXQ1LXJl bW90ZW9iamVjdHMtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBxdDUtZGV2ZWwtJHt2ZXJzaW9ufV8k e3JldmlzaW9ufSIKQEAgLTk1OSwyMSArOTA1LDYgQEAgcXQ1LXdlYmNoYW5uZWxfcGFja2FnZSgp IHsKIAl9CiB9CiAKLXF0NS13ZWJlbmdpbmUtZGV2ZWxfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNj Kz0iIC0gV2ViRW5naW5lIGNvbXBvbmVudCAoZGV2ZWxvcG1lbnQpIgotCWRlcGVuZHM9InF0NS13 ZWJlbmdpbmUtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBxdDUtZGV2ZWwtJHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJX2luc3RhbGxfZGV2ZWwgcXR3ZWJlbmdpbmUK LQl9Ci19Ci0KLXF0NS13ZWJlbmdpbmVfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gV2Vi RW5naW5lIGNvbXBvbmVudCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJX2luc3RhbGxfc3VicGtnIHF0 d2ViZW5naW5lCi0JfQotfQotCiBxdDUtd2ViZ2xwbHVnaW4tZGV2ZWxfcGFja2FnZSgpIHsKIAlz aG9ydF9kZXNjKz0iIC0gV2ViR0wgcGx1Z2luIChkZXZlbG9wbWVudCkiCiAJZGVwZW5kcz0icXQ1 LXdlYmdscGx1Z2luLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcXQ1LWRldmVsLSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0iCkBAIC0xMDQ0LDYgKzk3NSw3IEBAIHF0NS14bWxwYXR0ZXJucy1kZXZlbF9w YWNrYWdlKCkgewogCiBxdDUteG1scGF0dGVybnNfcGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0i IC0gWE1MIGNvbXBvbmVudHMiCisJZGVwZW5kcz0icXRjaG9vc2VyIgogCXBrZ19pbnN0YWxsKCkg ewogCQlfaW5zdGFsbF9zdWJwa2cgcXR4bWxwYXR0ZXJucwogCX0KQEAgLTEwNTgsMTIgKzk5MCwx MyBAQCBxdDUtdHJhbnNsYXRpb25zX3BhY2thZ2UoKSB7CiAKIHF0NS1ob3N0LXRvb2xzX3BhY2th Z2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIFRvb2xzIHJlcXVpcmVkIHdoZW4gY3Jvc3MgY29tcGls aW5nIgorCWRlcGVuZHM9InF0Y2hvb3NlciIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJbG9jYWwgZGVz dD0ke1hCUFNfREVTVERJUn0vJHtYQlBTX0NST1NTX1RSSVBMRVR9L3F0NS10b29scy0ke3ZlcnNp b259CiAJCXZta2RpciB1c3IvbGliL3F0NS9iaW4KIAkJdm1rZGlyIHVzci9iaW4KLQkJZm9yIGYg aW4gbW9jIHJjYyB1aWMgcWxhbHIgcWRidXNjcHAyeG1sIHFkYnVzeG1sMmNwcCBcCi0JCQlsY29u dmVydCBsdXBkYXRlIGx1cGRhdGUtcHJvIGxwcm9kdW1wIGxyZWxlYXNlIGxyZWxlYXNlLXBybzsg ZG8KKwkJZm9yIGYgaW4gbW9jIHJjYyB1aWMgcWxhbHIgcWRidXNjcHAyeG1sIHFkYnVzeG1sMmNw cCBxdmtnZW4gZml4cXQ0aGVhZGVycy5wbCB0cmFjZWdlbiBcCisJCQlzeW5jcXQucGwgbGNvbnZl cnQgbHVwZGF0ZSBsdXBkYXRlLXBybyBscHJvZHVtcCBscmVsZWFzZSBscmVsZWFzZS1wcm87IGRv CiAJCQlpZiBbIC1yICR7ZGVzdH0vdXNyL2xpYi9xdDUvYmluLyR7Zn0gXTsgdGhlbgogCQkJCW12 IC12ICR7ZGVzdH0vdXNyL2xpYi9xdDUvYmluLyR7Zn0gJHtQS0dERVNURElSfS91c3IvbGliL3F0 NS9iaW4vCiAJCQlmaQpAQCAtMTA5Miw3ICsxMDI1LDcgQEAgcXQ1LXRvb2xzLWRldmVsX3BhY2th Z2UoKSB7CiAKIHF0NS10b29sc19wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBEZXZlbG9w bWVudCB0b29scyIKLQlkZXBlbmRzPSJxdDUtdHJhbnNsYXRpb25zIGRlc2t0b3AtZmlsZS11dGls cyBoaWNvbG9yLWljb24tdGhlbWUiCisJZGVwZW5kcz0icXRjaG9vc2VyIHF0NS10cmFuc2xhdGlv bnMgZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKIAlwa2dfaW5zdGFsbCgp IHsKIAkJbG9jYWwgZiBkZXN0PSR7WEJQU19ERVNURElSfS8ke1hCUFNfQ1JPU1NfVFJJUExFVH0v cXQ1LWhvc3QtdG9vbHMtJHt2ZXJzaW9ufQogCQlfaW5zdGFsbF9zdWJwa2cgcXR0b29scwpAQCAt MTEzMyw4ICsxMDY2LDE5IEBAIHF0NS10b29sc19wYWNrYWdlKCkgewogcXQ1LWRldmVsX3BhY2th Z2UoKSB7CiAJZGVwZW5kcz0iemxpYi1kZXZlbCBsaWJyZXNzbC1kZXZlbD49Mi4xLjQgbGliWGV4 dC1kZXZlbCBsaWJYcmVuZGVyLWRldmVsCiAJCWZvbnRjb25maWctZGV2ZWwgbGliZ2xpYi1kZXZl bCBNZXNhTGliLWRldmVsIG10ZGV2LWRldmVsCi0JCWRidXMtZGV2ZWwgaWN1LWRldmVsIGN1cHMt ZGV2ZWwgcXQ1LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJZGJ1cy1kZXZlbCBpY3UtZGV2ZWwg Y3Vwcy1kZXZlbAorCQlxdDUtZ3VpLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJcXQ1LWRidXMt JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlxdDUtY29yZS0ke3ZlcnNpb259XyR7cmV2aXNpb259 CisJCXF0NS13aWRnZXRzLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJcXQ1LXFtYWtlLSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0KKwkJcXQ1LW9wZW5nbC0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJ CXF0NS1wcmludHN1cHBvcnQtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlxdDUtY29uY3VycmVu dC0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCXF0NS1zcWwtJHt2ZXJzaW9ufV8ke3JldmlzaW9u fQorCQlxdDUtdGVzdC0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCXF0NS1uZXR3b3JrLSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0KKwkJcXQ1LXhtbC0ke3ZlcnNpb259XyR7cmV2aXNpb259CiAJCXF0 NS1ob3N0LXRvb2xzLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAJc2hvcnRfZGVzYys9IiAtIERl dmVsb3BtZW50IGZpbGVzIgogCSMgcXQ1LWVuZ2luaW8tZGV2ZWwgaXMgZ29uZQpAQCAtMTE4NSw2 ICsxMTI5LDcgQEAgcXQ1LXBsdWdpbi10ZHNfcGFja2FnZSgpIHsKIAogcXQ1LXFtYWtlX3BhY2th Z2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIFFtYWtlIE1ha2VmaWxlIGdlbmVyYXRvciB0b29sIgor CWRlcGVuZHM9InF0Y2hvb3NlciIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2xpYi9x dDUvYmluL3FtYWtlCiAJCXZtb3ZlIHVzci9saWIvcXQ1L21rc3BlY3MKCkZyb20gZDQ4YTFmNmE2 YTM1M2Y3OWRiZGI2M2VhNTlhMjJjYzY3ODQ4OWYzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogVHVlLCAxNSBPY3QgMjAxOSAxMzox OTo0MyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIE5ldyBwYWNrYWdlOiBxdDUtd2ViZW5n aW5lLTUuMTQuMQoKLS0tCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUtZGV2ZWwgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9maWxlcy9yZXNvbHZfY29tcGF0 LmggICB8ICAyOSArKysrCiAuLi50ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgu cGF0Y2ggfCAgNDIgKysrKysKIC4uLnJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGli Yy5wYXRjaCB8ICAyNiArKysKIC4uLi9wYXRjaGVzLzAwMDMtbXVzbC1kaXNwYXRjaC10by1tdXNs LnBhdGNoICB8IDEwMyArKysrKysrKysrKysKIC4uLi9wYXRjaGVzLzAwMDQtbXVzbC1uby1tYWxs aW5mby5wYXRjaCAgICAgICB8ICA0MCArKysrKwogLi4uL3BhdGNoZXMvMDAwNS1tdXNsLW9mZl90 LnBhdGNoICAgICAgICAgICAgIHwgIDEwICsrCiAuLi4vcGF0Y2hlcy8wMDA2LW11c2wtcHJlYWQt cHdyaXRlLnBhdGNoICAgICAgfCAgMTggKysrCiAuLi4vcGF0Y2hlcy8wMDA3LW11c2wtcmVwbGFj ZS1wdmFsbG9jLnBhdGNoICAgfCAgMTQgKysKIC4uLi9wYXRjaGVzLzAwMDgtbXVzbC1yZXNvbHZl LnBhdGNoICAgICAgICAgICB8ICAyNiArKysKIC4uLi9wYXRjaGVzLzAwMDktbXVzbC1zaWdpbmZv X3QucGF0Y2ggICAgICAgICB8ICAxOCArKysKIC4uLi9wYXRjaGVzLzAwMTAtbXVzbC1zdGFja3N0 YXJ0LnBhdGNoICAgICAgICB8ICAyMCArKysKIC4uLi9wYXRjaGVzLzAwMTEtbXVzbC1zYW5kYm94 LnBhdGNoICAgICAgICAgICB8ICA3MSArKysrKysrKwogLi4uMDAxMi1tdXNsLWNocm9taXVtLWRl ZmF1bHQtc3RhY2tzaXplLnBhdGNoIHwgIDE1ICsrCiAuLi4vcGF0Y2hlcy8wMDEzLWRhdGFfcGFj ay1iZS5wYXRjaCAgICAgICAgICAgfCAgMTUgKysKIC4uLi8wMDE0LW11c2wtY3Jvc3Mtbm8tYXNt X3B0cmFjZV9oLnBhdGNoICAgICB8ICAzMCArKysrCiAuLi4vcXQ1LXdlYmVuZ2luZS9wYXRjaGVz LzAwMTUteWFzbS1ubHMucGF0Y2ggfCAgMTMgKysKIC4uLi9wYXRjaGVzLzAwMTYtcXQtbXVzbC1l eGVjaW5mby5wYXRjaCAgICAgICB8ICA5NCArKysrKysrKysrKwogLi4uLzAwMTctcXQtbXVzbC10 aHJlYWQtc3RhY2tzaXplLnBhdGNoICAgICAgIHwgIDI2ICsrKwogLi4uL3BhdGNoZXMvMDAxOC1z YW5kYm94LW1lbWJhcnJpZXIucGF0Y2ggICAgIHwgIDYwICsrKysrKysKIC4uLi9wYXRjaGVzLzAw MTktZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaCAgICAgICB8ICAyNCArKysKIC4uLi9wYXRjaGVzLzAw MjAtbXNndmVjLXB1c2hfYmFjay5wYXRjaCAgICAgICB8ICAxNCArKwogLi4uL3BhdGNoZXMvMDAy MS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoIHwgIDI0ICsrKwogLi4uLzAwMjItY2Fub25p Y2FsaXplLWZpbGUtbmFtZS1tdXNsLnBhdGNoICAgIHwgIDExICsrCiBzcmNwa2dzL3F0NS13ZWJl bmdpbmUvdGVtcGxhdGUgICAgICAgICAgICAgICAgfCAxNTEgKysrKysrKysrKysrKysrKysrCiAy NSBmaWxlcyBjaGFuZ2VkLCA4OTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9maWxlcy9yZXNvbHZfY29tcGF0LmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAxLVVz ZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAyLWluY2x1ZGUt c3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDMtbXVzbC1kaXNwYXRj aC10by1tdXNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvMDAwNC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNS1tdXNsLW9mZl90LnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNi1tdXNsLXBy ZWFkLXB3cml0ZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMDctbXVzbC1yZXBsYWNlLXB2YWxsb2MucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA4LW11c2wtcmVzb2x2ZS5wYXRj aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDkt bXVzbC1zaWdpbmZvX3QucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy8wMDEwLW11c2wtc3RhY2tzdGFydC5wYXRjaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTEtbXVzbC1zYW5kYm94LnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMi1t dXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMy1kYXRhX3BhY2stYmUucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE0LW11c2wt Y3Jvc3Mtbm8tYXNtX3B0cmFjZV9oLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNS15YXNtLW5scy5wYXRjaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTYtcXQtbXVzbC1leGVjaW5mby5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MTctcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxOC1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE5LWdu LWNyb3NzLXN5c3Jvb3QucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy8wMDIwLW1zZ3ZlYy1wdXNoX2JhY2sucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDIxLXNhbmRib3gtc2NoZWRfZ2V0 cGFyYW0ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDIyLWNhbm9uaWNhbGl6ZS1maWxlLW5hbWUtbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS1kZXZlbCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS1kZXZlbAppbmRl eCA3NTc5M2ViNjY2NC4uMWJmZGVmMTEwOGIgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1LXdlYmVu Z2luZS1kZXZlbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUtZGV2ZWwKQEAgLTEgKzEgQEAK LXF0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3F0NS13ZWJlbmdpbmUKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvZmls ZXMvcmVzb2x2X2NvbXBhdC5oIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL2ZpbGVzL3Jlc29sdl9j b21wYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGYwZTg1MmEx OWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvZmlsZXMvcmVzb2x2 X2NvbXBhdC5oCkBAIC0wLDAgKzEsMjkgQEAKKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKiByZXNvbHZfY29tcGF0LmgKKyAqCisgKiBNaW1pY2sgR0xJQkMn cyByZXNfbmluaXQoKSBhbmQgcmVzX25jbG9zZSgpIGZvciBtdXNsIGxpYmMKKyAqIE5vdGU6IHJl c19pbml0KCkgaXMgYWN0dWFsbHkgZGVwcmVjYXRlZCBhY2NvcmRpbmcgdG8KKyAqIGh0dHA6Ly9k b2NzLm9yYWNsZS5jb20vY2QvRTM2Nzg0XzAxL2h0bWwvRTM2ODc1L3Jlcy1uY2xvc2UtM3Jlc29s di5odG1sCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3N0YXRp YyBpbmxpbmUgaW50IHJlc19uaW5pdChyZXNfc3RhdGUgc3RhdHApCit7CisJaW50IHJjID0gcmVz X2luaXQoKTsKKwlpZiAoc3RhdHAgIT0gJl9yZXMpIHsKKwkJbWVtY3B5KHN0YXRwLCAmX3Jlcywg c2l6ZW9mKCpzdGF0cCkpOworCX0KKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50 IHJlc19uY2xvc2UocmVzX3N0YXRlIHN0YXRwKQoreworCWlmICghc3RhdHApCisJCXJldHVybiAt MTsKKwlpZiAoc3RhdHAgIT0gJl9yZXMpIHsKKwkJbWVtc2V0KHN0YXRwLCAwLCBzaXplb2YoKnN0 YXRwKSk7CisJfQorCXJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAxLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zw c3RhdGUtb24tbGludXgucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAx LVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNlNzg3ZDEzNzRlCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMS1Vc2UtX2Zwc3Rh dGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoCkBAIC0wLDAgKzEsNDIg QEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRl eHRfcmVhZGVyLmgJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgJ MjAxOC0wOS0wNyAyMjoyMToyOC41MjE3NjM3MTYgKzAyMDAKK0BAIC01MCw3ICs1MCw3IEBACisg ICAvLyAgIGluZm86IHRoZSBjb2xsZWN0aW9uIG9mIHJlZ2lzdGVyIHN0cnVjdHVyZXMuCisgI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjQpCisgICBzdGF0aWMgdm9pZCBG aWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9saWJjX2Zwc3RhdGUq IGZwKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0 ZSogZnApOworICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisgICBzdGF0aWMgdm9pZCBGaWxs Q1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBm cHJlZ3MpOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91 Y29udGV4dF9yZWFkZXIuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVh ZGVyLmNjCTIwMTgtMDktMDcgMjI6MjE6NDUuNzY2NzYyNjg4ICswMjAwCitAQCAtNDksNyArNDks NyBAQAorIH0KKyAKKyB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250 ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcCkgeworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0ZSogZnAp IHsKKyAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5ncmVnczsKKyAKKyAg IG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfWDg2X0ZVTEwgfAorQEAgLTk3LDcgKzk3 LDcgQEAKKyB9CisgCisgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29u dGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSogZnByZWdzKSB7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9mcHN0YXRl KiBmcHJlZ3MpIHsKKyAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5ncmVn czsKKyAKKyAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfQU1ENjRfRlVMTDsKKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVy LmgJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgJMjAxOC0wOS0wNyAy MzozNjozMi4wNDk0OTUyODUgKzAyMDAKK0BAIC00OCw3ICs0OCw3IEBACisgI2lmIGRlZmluZWQo X19hYXJjaDY0X18pCisgdHlwZWRlZiBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90Owor ICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCistdHlw ZWRlZiBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSBmcHN0YXRlX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgX2Zw c3RhdGUgZnBzdGF0ZV90OworICNlbmRpZgorIAorIC8vIFRoZXNlIGVudHJpZXMgc3RvcmUgYSBs aXN0IG9mIG1lbW9yeSByZWdpb25zIHRoYXQgdGhlIGNsaWVudCB3YW50cyBpbmNsdWRlZApkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMi1pbmNsdWRlLXN5cy1y ZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2ggYi9zcmNwa2dzL3F0NS13 ZWJlbmdpbmUvcGF0Y2hlcy8wMDAyLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpF LW9uLW11c2wtbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZGE0MTYwYjIxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDAyLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wt bGliYy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDkwMDFjNTRkNmI5NzQ0NDkxNzRhOGNl ZThmM2Y1ZDc4YTliZDZjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGZWxpeCBK YW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDE0OjI2 OjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy82XSBpbmNsdWRlIDxzeXMvcmVnLmg+IHRvIGdl dCBfX1dPUkRTSVpFIG9uIG11c2wgbGliYworCistLS0KKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51 eC9lbGZfY29yZV9kdW1wLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykK KworZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oIGIvc3JjL2Nv bW1vbi9saW51eC9lbGZfY29yZV9kdW1wLmgKK2luZGV4IGQwM2M3YTguLjAyZWIzOTEgMTAwNjQ0 CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCitAQCAtMzYsNiArMzYsOSBAQAorICNp bmNsdWRlIDxlbGYuaD4KKyAjaW5jbHVkZSA8bGluay5oPgorICNpbmNsdWRlIDxzdGRkZWYuaD4K KysjaWZuZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxzeXMvcmVnLmg+CisrI2VuZGlmCisgCisg I2luY2x1ZGUgImNvbW1vbi9tZW1vcnlfcmFuZ2UuaCIKKyAKKy0tIAorMi4wLjUKKwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMy1tdXNsLWRpc3BhdGNoLXRv LW11c2wucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAzLW11c2wtZGlz cGF0Y2gtdG8tbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZGUzMmEzZGFiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDAzLW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaApAQCAtMCwwICsxLDEwMyBA QAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9h bGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNjCistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9zaGltX2Rl ZmF1bHRfZGlzcGF0Y2hfdG9fZ2xpYmMuY2MKK0BAIC02LDYgKzYsNyBAQAorIAorICNpbmNsdWRl IDxtYWxsb2MuaD4KKyAKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgLy8gVGhpcyB0cmFuc2xh dGlvbiB1bml0IGRlZmluZXMgYSBkZWZhdWx0IGRpc3BhdGNoIGZvciB0aGUgYWxsb2NhdG9yIHNo aW0gd2hpY2gKKyAvLyByb3V0ZXMgYWxsb2NhdGlvbnMgdG8gbGliYyBmdW5jdGlvbnMuCisgLy8g VGhlIGNvZGUgaGVyZSBpcyBzdHJvbmdseSBpbnNwaXJlZCBmcm9tIHRjbWFsbG9jJ3MgbGliY19v dmVycmlkZV9nbGliYy5oLgorQEAgLTczLDMgKzc0LDkyIEBAIGNvbnN0IEFsbG9jYXRvckRpc3Bh dGNoIEFsbG9jYXRvckRpc3BhdGNoOjpkZWZhdWx0X2Rpc3BhdGNoID0geworICAgICBudWxscHRy LCAgICAgICAgICAgICAgIC8qIGZyZWVfZGVmaW5pdGVfc2l6ZV9mdW5jdGlvbiAqLworICAgICBu dWxscHRyLCAgICAgICAgICAgICAgIC8qIG5leHQgKi8KKyB9OworKworKyNlbHNlIC8vIGRlZmlu ZWQoX19HTElCQ19fKQorKworKyNpbmNsdWRlIDxkbGZjbi5oPgorKworK2V4dGVybiAiQyIgewor Ky8vIERlY2xhcmUgZnVuY3Rpb24gcG9pbnRlcnMgdG8gdGhlIG1lbW9yeSBmdW5jdGlvbnMKKyt0 eXBlZGVmIHZvaWQqICgqdF9saWJjX21hbGxvYykoc2l6ZV90IHNpemUpOworK3R5cGVkZWYgdm9p ZCogKCp0X2xpYmNfY2FsbG9jKShzaXplX3Qgbiwgc2l6ZV90IHNpemUpOworK3R5cGVkZWYgdm9p ZCogKCp0X2xpYmNfcmVhbGxvYykodm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemUpOworK3R5cGVk ZWYgdm9pZCogKCp0X2xpYmNfbWVtYWxpZ24pKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXpl KTsKKyt0eXBlZGVmIHZvaWQgKCp0X2xpYmNfZnJlZSkodm9pZCogcHRyKTsKKyt0eXBlZGVmIHNp emVfdCAoKnRfbGliY19tYWxsb2NfdXNhYmxlX3NpemUpKHZvaWQqIHB0cik7CisrCisrLy8gU3Rh dGljIGluc3RhbmNlcyBvZiBwb2ludGVycyB0byBsaWJjLnNvIGRsIHN5bWJvbHMKKytzdGF0aWMg dF9saWJjX21hbGxvYyBsaWJjX21hbGxvYyA9IE5VTEw7Cisrc3RhdGljIHRfbGliY19jYWxsb2Mg bGliY19jYWxsb2MgPSBOVUxMOworK3N0YXRpYyB0X2xpYmNfcmVhbGxvYyBsaWJjX3JlYWxsb2Mg PSBOVUxMOworK3N0YXRpYyB0X2xpYmNfbWVtYWxpZ24gbGliY19tZW1hbGlnbiA9IE5VTEw7Cisr c3RhdGljIHRfbGliY19mcmVlIGxpYmNfZnJlZSA9IE5VTEw7Cisrc3RhdGljIHRfbGliY19tYWxs b2NfdXNhYmxlX3NpemUgbGliY19tYWxsb2NfdXNhYmxlX3NpemUgPSBOVUxMOworKworKy8vIHJl c29sdmUgdGhlIHN5bWJvbHMgaW4gbGliYy5zbworK3ZvaWQgbXVzbF9saWJjX21lbW9yeV9pbml0 KHZvaWQpCisreworKyAgbGliY19tYWxsb2MgPSAodF9saWJjX21hbGxvYykgZGxzeW0oUlRMRF9O RVhULCAibWFsbG9jIik7CisrICBsaWJjX2NhbGxvYyA9ICh0X2xpYmNfY2FsbG9jKSBkbHN5bShS VExEX05FWFQsICJjYWxsb2MiKTsKKysgIGxpYmNfcmVhbGxvYyA9ICh0X2xpYmNfcmVhbGxvYykg ZGxzeW0oUlRMRF9ORVhULCAicmVhbGxvYyIpOworKyAgbGliY19tZW1hbGlnbiA9ICh0X2xpYmNf bWVtYWxpZ24pIGRsc3ltKFJUTERfTkVYVCwgIm1lbWFsaWduIik7CisrICBsaWJjX2ZyZWUgPSAo dF9saWJjX2ZyZWUpIGRsc3ltKFJUTERfTkVYVCwgImZyZWUiKTsKKysgIGxpYmNfbWFsbG9jX3Vz YWJsZV9zaXplID0gKHRfbGliY19tYWxsb2NfdXNhYmxlX3NpemUpIGRsc3ltKFJUTERfTkVYVCwg Im1hbGxvY191c2FibGVfc2l6ZSIpOworK30KKyt9ICAvLyBleHRlcm4gIkMiCisrCisrbmFtZXNw YWNlIHsKKysKKyt1c2luZyBiYXNlOjphbGxvY2F0b3I6OkFsbG9jYXRvckRpc3BhdGNoOworKwor K3ZvaWQqIE11c2xNYWxsb2MoY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCBzaXplX3Qgc2l6ZSwg dm9pZCogY29udGV4dCkgeworKyAgaWYgKCFsaWJjX21hbGxvYykKKysgICAgbXVzbF9saWJjX21l bW9yeV9pbml0KCk7CisrICByZXR1cm4gKCpsaWJjX21hbGxvYykoc2l6ZSk7CisrfQorKworK3Zv aWQqIE11c2xDYWxsb2MoY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCBzaXplX3Qgbiwgc2l6ZV90 IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKKysgIGlmICghbGliY19jYWxsb2MpCisrICAgIG11c2xf bGliY19tZW1vcnlfaW5pdCgpOworKyAgcmV0dXJuICgqbGliY19jYWxsb2MpKG4sIHNpemUpOwor K30KKysKKyt2b2lkKiBNdXNsUmVhbGxvYyhjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCosIHZvaWQq IGFkZHJlc3MsIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KSB7CisrICBpZiAoIWxpYmNfcmVh bGxvYykKKysgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7CisrICByZXR1cm4gKCpsaWJjX3Jl YWxsb2MpKGFkZHJlc3MsIHNpemUpOworK30KKysKKyt2b2lkKiBNdXNsTWVtYWxpZ24oY29uc3Qg QWxsb2NhdG9yRGlzcGF0Y2gqLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgdm9pZCog Y29udGV4dCkgeworKyAgaWYgKCFsaWJjX21lbWFsaWduKQorKyAgICBtdXNsX2xpYmNfbWVtb3J5 X2luaXQoKTsKKysgIHJldHVybiAoKmxpYmNfbWVtYWxpZ24pKGFsaWdubWVudCwgc2l6ZSk7Cisr fQorKworK3ZvaWQgTXVzbEZyZWUoY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCB2b2lkKiBhZGRy ZXNzLCB2b2lkKiBjb250ZXh0KSB7CisrICBpZiAoIWxpYmNfZnJlZSkKKysgICAgbXVzbF9saWJj X21lbW9yeV9pbml0KCk7CisrICAoKmxpYmNfZnJlZSkoYWRkcmVzcyk7CisrfQorKworK3NpemVf dCBNdXNsR2V0U2l6ZUVzdGltYXRlKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwgdm9pZCogYWRk cmVzcywgdm9pZCogY29udGV4dCkgeworKyAgLy8gVE9ETyhzaWdnaSwgcHJpbWlhbm8pOiBtYWxs b2NfdXNhYmxlX3NpemUgbWF5IG5lZWQgcmVkaXJlY3Rpb24gaW4gdGhlCisrICAvLyAgICAgcHJl c2VuY2Ugb2YgaW50ZXJwb3Npbmcgc2hpbXMgdGhhdCBkaXZlcnQgYWxsb2NhdGlvbnMuCisrICBp ZiAoIWxpYmNfbWFsbG9jX3VzYWJsZV9zaXplKQorKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQo KTsKKysgIHJldHVybiAoKmxpYmNfbWFsbG9jX3VzYWJsZV9zaXplKShhZGRyZXNzKTsKKyt9Cisr CisrfSAgLy8gbmFtZXNwYWNlCisrCisrY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2ggQWxsb2NhdG9y RGlzcGF0Y2g6OmRlZmF1bHRfZGlzcGF0Y2ggPSB7CisrICAgICZNdXNsTWFsbG9jLCAgICAgICAg ICAgLyogYWxsb2NfZnVuY3Rpb24gKi8KKysgICAgJk11c2xDYWxsb2MsICAgICAgICAgICAvKiBh bGxvY196ZXJvX2luaXRpYWxpemVkX2Z1bmN0aW9uICovCisrICAgICZNdXNsTWVtYWxpZ24sICAg ICAgICAgLyogYWxsb2NfYWxpZ25lZF9mdW5jdGlvbiAqLworKyAgICAmTXVzbFJlYWxsb2MsICAg ICAgICAgIC8qIHJlYWxsb2NfZnVuY3Rpb24gKi8KKysgICAgJk11c2xGcmVlLCAgICAgICAgICAg ICAvKiBmcmVlX2Z1bmN0aW9uICovCisrICAgICZNdXNsR2V0U2l6ZUVzdGltYXRlLCAgLyogZ2V0 X3NpemVfZXN0aW1hdGVfZnVuY3Rpb24gKi8KKysgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAv KiBuZXh0ICovCisrfTsKKysKKysjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVu Z2luZS9wYXRjaGVzLzAwMDQtbXVzbC1uby1tYWxsaW5mby5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdl YmVuZ2luZS9wYXRjaGVzLzAwMDQtbXVzbC1uby1tYWxsaW5mby5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzMzMmI5MmI2OWQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LW11c2wtbm8tbWFsbGluZm8ucGF0 Y2gKQEAgLTAsMCArMSw0MCBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9iYXNlL3RyYWNlX2V2ZW50L21hbGxvY19kdW1wX3Byb3ZpZGVyLmNjCTIwMTctMTEtMjggMTQ6 MDY6NTMuMDAwMDAwMDAwICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2Jhc2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIuY2MJMjAxOC0wMS0yNyAy MDoxMzoyNi45NjA5MzI4MDUgKzAxMDAKK0BAIC0yNDMsNyArMjQzLDcgQEAKKyAgIGFsbG9jYXRl ZF9vYmplY3RzX2NvdW50ID0gbWFpbl9oZWFwX2luZm8uYmxvY2tfY291bnQ7CisgI2VsaWYgZGVm aW5lZChPU19GVUNIU0lBKQorIC8vIFRPRE8oZnVjaHNpYSk6IFBvcnQsIHNlZSBodHRwczovL2Ny YnVnLmNvbS83MDY1OTIuCistI2Vsc2UKKysjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIHN0 cnVjdCBtYWxsaW5mbyBpbmZvID0gbWFsbGluZm8oKTsKKyAgIERDSEVDS19HRShpbmZvLmFyZW5h ICsgaW5mby5oYmxraGQsIGluZm8udW9yZGJsa3MpOworIAorQEAgLTI1NSw2ICsyNTUsOCBAQAor IAorICAgLy8gVG90YWwgYWxsb2NhdGVkIHNwYWNlIGlzIGdpdmVuIGJ5IHx1b3JkYmxrc3wuCisg ICBhbGxvY2F0ZWRfb2JqZWN0c19zaXplID0gaW5mby51b3JkYmxrczsKKysjZWxzZQorKy8vIG11 c2wgbGliYyBkb2VzIG5vdCBzdXBwb3J0IG1hbGxpbmZvKCkKKyAjZW5kaWYKKyAKKyAgIE1lbW9y eUFsbG9jYXRvckR1bXAqIG91dGVyX2R1bXAgPSBwbWQtPkNyZWF0ZUFsbG9jYXRvckR1bXAoIm1h bGxvYyIpOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3Byb2Nl c3MvcHJvY2Vzc19tZXRyaWNzX3Bvc2l4LmNjCTIwMTctMTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAw ICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcHJvY2Vz cy9wcm9jZXNzX21ldHJpY3NfcG9zaXguY2MJMjAxOC0wMS0yNyAyMDo0ODoxMS41NzEwNDAzNDgg KzAxMDAKK0BAIC0xMDAsMTQgKzEwMCwxNCBAQAorICAgbWFsbG9jX3N0YXRpc3RpY3NfdCBzdGF0 cyA9IHswfTsKKyAgIG1hbGxvY196b25lX3N0YXRpc3RpY3MobnVsbHB0ciwgJnN0YXRzKTsKKyAg IHJldHVybiBzdGF0cy5zaXplX2luX3VzZTsKKy0jZWxpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBk ZWZpbmVkKE9TX0FORFJPSUQpCisrI2VsaWYgKGRlZmluZWQoT1NfTElOVVgpICYmIGRlZmluZWQo X19HTElCQ19fKSkgfHwgZGVmaW5lZChPU19BTkRST0lEKQorICAgc3RydWN0IG1hbGxpbmZvIG1p bmZvID0gbWFsbGluZm8oKTsKKyAjaWYgZGVmaW5lZChVU0VfVENNQUxMT0MpCisgICByZXR1cm4g bWluZm8udW9yZGJsa3M7CisgI2Vsc2UKKyAgIHJldHVybiBtaW5mby5oYmxraGQgKyBtaW5mby5h cmVuYTsKKyAjZW5kaWYKKy0jZWxpZiBkZWZpbmVkKE9TX0ZVQ0hTSUEpCisrI2Vsc2UgLy9pZiBk ZWZpbmVkKE9TX0ZVQ0hTSUEpIC8vIGFsc28gbXVzbCBkb2Vzbid0IGRvIHRoaXMuCisgICAvLyBU T0RPKGZ1Y2hzaWEpOiBOb3QgY3VycmVudGx5IGV4cG9zZWQuIGh0dHBzOi8vY3JidWcuY29tLzcz NTA4Ny4KKyAgIHJldHVybiAwOworICNlbmRpZgorCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13 ZWJlbmdpbmUvcGF0Y2hlcy8wMDA1LW11c2wtb2ZmX3QucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy8wMDA1LW11c2wtb2ZmX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjUyZGIzYjllYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNS1tdXNsLW9mZl90LnBhdGNoCkBAIC0wLDAgKzEs MTAgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv b3RzL2luY2x1ZGUvb3BlbnR5cGUtc2FuaXRpc2VyLmgJMjAxNi0wNS0yNiAxNDo1ODo1NC4wMDAw MDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvb3RzL2luY2x1ZGUvb3BlbnR5cGUtc2FuaXRpc2VyLmgJMjAxNi0xMC0wMSAxNDozMToz MC44ODUwMDAwMDAgKzAyMDAKK0BAIC0yMSw2ICsyMSw3IEBACisgI2RlZmluZSBodG9ucyh4KSBf Ynl0ZXN3YXBfdXNob3J0ICh4KQorICNlbHNlCisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorKyNp bmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2VuZGlmCisgCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA2LW11c2wtcHJlYWQt cHdyaXRlLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNi1tdXNsLXBy ZWFkLXB3cml0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MDAwMTdiYmEwMTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDA2LW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5 c2NhbGxfc3VwcG9ydC5oCTIwMTgtMDktMDcgMjE6MjU6MjYuNjM5OTY0MTAwICswMjAwCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9z eXNjYWxsX3N1cHBvcnQuaAkyMDE4LTA5LTA3IDIxOjI1OjExLjYxMTk2NDk5NSArMDIwMAorQEAg LTE3OTQsNiArMTc5NCwxNSBAQAorIC8qIEVuZCBvZiBzMzkwL3MzOTB4IGRlZmluaXRpb25zICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAjZW5kaWYKKyAK KysjaWZuZGVmIF9fR0xJQkNfXworKyAgLyogRm9yIE11c2wgbGliYyBwcmVhZC9wcmVhZCBpcyB0 aGUgc2FtZSBhcyBwcmVhZDY0L3B3cml0ZTY0ICovCisrI2lmbmRlZiBfX05SX3ByZWFkCisrI2Rl ZmluZSBfX05SX3ByZWFkICAgICAgICAgICAgICBfX05SX3ByZWFkNjQKKysjZW5kaWYKKysjaWZu ZGVmIF9fTlJfcHdyaXRlCisrI2RlZmluZSBfX05SX3B3cml0ZSAgICAgICAgICAgICBfX05SX3B3 cml0ZTY0CisrI2VuZGlmCisrI2VuZGlmIC8qIGlmbmRlZiBfX0dMSUJDX18gKi8KKyAKKyAvKiBB ZnRlciBmb3JraW5nLCB3ZSBtdXN0IG1ha2Ugc3VyZSB0byBvbmx5IGNhbGwgc3lzdGVtIGNhbGxz LiAgICAgICAgICAgICAgICovCisgI2lmIGRlZmluZWQoX19CT1VOREVEX1BPSU5URVJTX18pCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA3LW11c2wtcmVwbGFj ZS1wdmFsbG9jLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNy1tdXNs LXJlcGxhY2UtcHZhbGxvYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZDVjYWYzODM2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDA3LW11c2wtcmVwbGFjZS1wdmFsbG9jLnBhdGNoCkBAIC0wLDAgKzEsMTQg QEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvY29yZS9hcGkvcXRidWctNjE1MjEuY3BwCTIwMTctMTEt MjkgMDk6NDI6MjkuMDAwMDAwMDAwICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3JjL2NvcmUvYXBp L3F0YnVnLTYxNTIxLmNwcAkyMDE4LTAxLTI4IDA2OjQ5OjI5LjQ1NDE3NTcyNSArMDEwMAorQEAg LTExMSw3ICsxMTEsMTEgQEAKKyB9CisgCisgU0hJTV9ISURERU4gdm9pZCogU2hpbVB2YWxsb2Mo c2l6ZV90IHNpemUpIHsKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgIHJldHVybiBwdmFs bG9jKHNpemUpOworKyNlbHNlCisrICAgIHJldHVybiB2YWxsb2MoKHNpemUrNDA5NSkmfjQwOTUp OworKyNlbmRpZgorIH0KKyAKKyBTSElNX0hJRERFTiBpbnQgU2hpbVBvc2l4TWVtYWxpZ24odm9p ZCoqIHIsIHNpemVfdCBhLCBzaXplX3QgcykgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDAwOC1tdXNsLXJlc29sdmUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy8wMDA4LW11c2wtcmVzb2x2ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZWRmY2ViNzlmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA4LW11c2wtcmVzb2x2ZS5wYXRjaApAQCAtMCww ICsxLDI2IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9kbnMv ZG5zX3JlbG9hZGVyLmNjCTIwMTYtMTEtMDcgMTU6NDY6MTguMDAwMDAwMDAwICswMTAwCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9kbnMvZG5zX3JlbG9hZGVyLmNj CTIwMTYtMTItMjAgMDM6MzM6MTEuNzQ5MDU5NjU2ICswMTAwCitAQCAtOSw2ICs5LDEwIEBACisg CisgI2luY2x1ZGUgPHJlc29sdi5oPgorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2lu Y2x1ZGUgInJlc29sdl9jb21wYXQuaCIKKysjZW5kaWYKKysKKyAjaW5jbHVkZSAiYmFzZS9sYXp5 X2luc3RhbmNlLmgiCisgI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgorICNpbmNsdWRlICJiYXNl L21hY3Jvcy5oIgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5z L2Ruc19jb25maWdfc2VydmljZV9wb3NpeC5jYwkyMDE2LTExLTA3IDE1OjQ2OjE4LjAwMDAwMDAw MCArMDEwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2Ru c19jb25maWdfc2VydmljZV9wb3NpeC5jYwkyMDE2LTEyLTIwIDAzOjQwOjA3LjY3MTk1MzA5OCAr MDEwMAorQEAgLTYsNiArNiwxMCBAQAorIAorICNpbmNsdWRlIDxzdHJpbmc+CisgCisrI2lmICFk ZWZpbmVkKF9fR0xJQkNfXykKKysjaW5jbHVkZSAicmVzb2x2X2NvbXBhdC5oIgorKyNlbmRpZgor KworICNpbmNsdWRlICJiYXNlL2JpbmQuaCIKKyAjaW5jbHVkZSAiYmFzZS9maWxlcy9maWxlLmgi CisgI2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZV9wYXRoLmgiCmRpZmYgLS1naXQgYS9zcmNwa2dz L3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA5LW11c2wtc2lnaW5mb190LnBhdGNoIGIvc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOS1tdXNsLXNpZ2luZm9fdC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmU3NjBiZTE2NjYKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA5LW11c2wtc2lnaW5mb190 LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1RoZXJlJ3MgYSBzdWJ0bGUgZGlmZmVyZW5jZSBpbiB0 aGUgaW50ZXJuYWwgbmFtZSBvZiBzaWdpbmZvX3QgZmllbGRzCitiZXR3ZWVuIGdsaWJjIGFuZCBt dXNsLiBUaGUgc3RydWN0dXJlIGl0c2VsZiBpcyBlcXVpdmFsZW50LCBzbyBpdAorc2hvdWxkIHN1 ZmZpY2UgdG8gYWRkIGEgbWFjcm8gdG8gcmVuYW1lIHRoZSBmaWVsZC4KKworLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAu Y2MJMjAxNS0wMi0xNyAwNTo1Nzo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCTIw MTUtMDYtMDMgMDg6MjA6MjUuMDMyNzE2NDI3ICswMjAwCitAQCAtMjIsNiArMjIsMTEgQEAKKyAj aW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9hbmRyb2lkX3Vjb250ZXh0LmgiCisgI2Vu ZGlmCisKKysvLyBtdXNsIGxpYmMgZGVmaW5lcyBzaWdpbmZvX3QgX19zaV9maWVsZHMgaW5zdGVh ZCBvZiBfc2lmaWVsZHMKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyNkZWZpbmUgX3NpZmll bGRzIF9fc2lfZmllbGRzCisrI2VuZGlmCisrCisgbmFtZXNwYWNlIHsKKworIGNvbnN0IGludCBr Q2FwYWNpdHlJbmNyZW1lbnQgPSAyMDsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMTAtbXVzbC1zdGFja3N0YXJ0LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvMDAxMC1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU3MTM2YmMyYmNkCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMC1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKQEAg LTAsMCArMSwyMCBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tfdXRpbC5jYwkyMDE4LTAx LTI3IDIzOjA4OjQzLjU4NjQ3NTM0OSArMDEwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tf dXRpbC5jYwkyMDE4LTAxLTI3IDIzOjE4OjIyLjI3NDUwNTIwMyArMDEwMAorQEAgLTI4LDcgKzI4 LDcgQEAKKyAvLyBGSVhNRTogT24gTWFjIE9TWCBhbmQgTGludXgsIHRoaXMgbWV0aG9kIGNhbm5v dCBlc3RpbWF0ZSBzdGFjayBzaXplCisgLy8gY29ycmVjdGx5IGZvciB0aGUgbWFpbiB0aHJlYWQu CisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRl ZmluZWQoT1NfRlJFRUJTRCkgfHwgXAorKyNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVk KE9TX0FORFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAorICAgICBkZWZpbmVkKE9T X0ZVQ0hTSUEpCisgICAvLyBwdGhyZWFkX2dldGF0dHJfbnAoKSBjYW4gZmFpbCBpZiB0aGUgdGhy ZWFkIGlzIG5vdCBpbnZva2VkIGJ5CisgICAvLyBwdGhyZWFkX2NyZWF0ZSgpIChlLmcuLCB0aGUg bWFpbiB0aHJlYWQgb2Ygd2Via2l0X3VuaXRfdGVzdHMpLgorQEAgLTk2LDcgKzk2LDcgQEAKKyB9 CisgCisgdm9pZCogR2V0U3RhY2tTdGFydCgpIHsKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8 IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCisrI2lmIGRl ZmluZWQoT1NfTElOVVgpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVF QlNEKSB8fCBcCisgICAgIGRlZmluZWQoT1NfRlVDSFNJQSkKKyAgIHB0aHJlYWRfYXR0cl90IGF0 dHI7CisgICBpbnQgZXJyb3I7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDExLW11c2wtc2FuZGJveC5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMTEtbXVzbC1zYW5kYm94LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5kM2RlMWU0MTE4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdl YmVuZ2luZS9wYXRjaGVzLzAwMTEtbXVzbC1zYW5kYm94LnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MJMjAxOC0w Ni0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFy YW1ldGVyc19yZXN0cmljdGlvbnMuY2MJMjAxOC0wOS0xMyAxOTo1Mzo1My40NTM3ODAyNTMgKzAy MDAKK0BAIC0xMjksNyArMTI5LDcgQEAKKyAvLyBDTE9ORV9WTSwgbm9yIENMT05FX1RIUkVBRCwg d2hpY2ggaW5jbHVkZXMgYWxsIGZvcmsoKSBpbXBsZW1lbnRhdGlvbnMuCisgUmVzdWx0RXhwciBS ZXN0cmljdENsb25lVG9UaHJlYWRzQW5kRVBFUk1Gb3JrKCkgeworICAgY29uc3QgQXJnPHVuc2ln bmVkIGxvbmc+IGZsYWdzKDApOworLQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIC8vIFRP RE8obWRlbXBza3kpOiBFeHRlbmQgRFNMIHRvIHN1cHBvcnQgKGZsYWdzICYgfm1hc2sxKSA9PSBt YXNrMi4KKyAgIGNvbnN0IHVpbnQ2NF90IGtBbmRyb2lkQ2xvbmVNYXNrID0gQ0xPTkVfVk0gfCBD TE9ORV9GUyB8IENMT05FX0ZJTEVTIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ0xPTkVfU0lHSEFORCB8IENMT05FX1RIUkVBRCB8CitAQCAtMTQ4LDYgKzE0OCwxNyBA QAorICAgcmV0dXJuIElmKElzQW5kcm9pZCgpID8gYW5kcm9pZF90ZXN0IDogZ2xpYmNfdGVzdCwg QWxsb3coKSkKKyAgICAgICAuRWxzZUlmKChmbGFncyAmIChDTE9ORV9WTSB8IENMT05FX1RIUkVB RCkpID09IDAsIEVycm9yKEVQRVJNKSkKKyAgICAgICAuRWxzZShDcmFzaFNJR1NZU0Nsb25lKCkp OworKyNlbHNlCisrICBjb25zdCBpbnQgcmVxdWlyZWQgPSBDTE9ORV9WTSB8IENMT05FX0ZTIHwg Q0xPTkVfRklMRVMgfCBDTE9ORV9TSUdIQU5EIHwKKysgICAgICAgICAgICAgICAgICAgICAgIENM T05FX1RIUkVBRCB8IENMT05FX1NZU1ZTRU07CisrICBjb25zdCBpbnQgc2FmZSA9IENMT05FX1NF VFRMUyB8IENMT05FX1BBUkVOVF9TRVRUSUQgfCBDTE9ORV9DSElMRF9DTEVBUlRJRCB8CisrICAg ICAgICAgICAgICAgICAgIENMT05FX0RFVEFDSEVEOworKyAgY29uc3QgQm9vbEV4cHIgdGhyZWFk X2Nsb25lX29rID0gKGZsYWdzJn5zYWZlKT09cmVxdWlyZWQ7CisrCisrICByZXR1cm4gSWYodGhy ZWFkX2Nsb25lX29rLCBBbGxvdygpKQorKyAgICAgIC5FbHNlSWYoKGZsYWdzICYgKENMT05FX1ZN IHwgQ0xPTkVfVEhSRUFEKSkgPT0gMCwgRXJyb3IoRVBFUk0pKQorKyAgICAgIC5FbHNlKENyYXNo U0lHU1lTQ2xvbmUoKSk7CisrI2VuZGlmCisgfQorIAorIFJlc3VsdEV4cHIgUmVzdHJpY3RQcmN0 bCgpIHsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwkyMDE4LTA2LTE1IDA5OjQ3OjIw LjAwMDAwMDAwMCArMDIwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9z YW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCTIwMTgtMDkt MTMgMTk6NTY6MzEuNzc5NzczOTQwICswMjAwCitAQCAtMzc1LDYgKzM3NSw5IEBACisgI2lmIGRl ZmluZWQoX19pMzg2X18pCisgICAgIGNhc2UgX19OUl93YWl0cGlkOgorICNlbmRpZgorKyNpZiAh ZGVmaW5lZChfX0dMSUJDX18pCisrICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6CisrI2Vu ZGlmCisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgX19OUl9jbG9uZTogIC8vIFNob3Vs ZCBiZSBwYXJhbWV0ZXItcmVzdHJpY3RlZC4KKyAgICAgY2FzZSBfX05SX3NldG5zOiAgLy8gUHJp dmlsZWdlZC4KK0BAIC0zODcsNyArMzkwLDkgQEAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorICAgICBjYXNlIF9fTlJf c2V0X3RocmVhZF9hcmVhOgorICNlbmRpZgorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAg Y2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKKysjZW5kaWYKKyAgICAgY2FzZSBfX05SX3Vuc2hh cmU6CisgI2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykKKyAg ICAgY2FzZSBfX05SX3Zmb3JrOgorQEAgLTQ5Niw2ICs1MDEsOSBAQAorICAgICBjYXNlIF9fTlJf bWxvY2s6CisgICAgIGNhc2UgX19OUl9tdW5sb2NrOgorICAgICBjYXNlIF9fTlJfbXVubWFwOgor KyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrICAgIGNhc2UgX19OUl9tcmVtYXA6CisrI2VuZGlm CisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgX19OUl9tYWR2aXNlOgorICAgICBjYXNl IF9fTlJfbWluY29yZToKK0BAIC01MTEsNyArNTE5LDkgQEAKKyAgICAgY2FzZSBfX05SX21vZGlm eV9sZHQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9tcHJvdGVjdDoKKysjaWYgZGVmaW5lZChf X0dMSUJDX18pCisgICAgIGNhc2UgX19OUl9tcmVtYXA6CisrI2VuZGlmCisgICAgIGNhc2UgX19O Ul9tc3luYzoKKyAgICAgY2FzZSBfX05SX211bmxvY2thbGw6CisgICAgIGNhc2UgX19OUl9yZWFk YWhlYWQ6CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDEyLW11 c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDEyLW11c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdiZjVhMjJmYmE3Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMi1tdXNsLWNocm9t aXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aHJlYWRpbmcvcGxhdGZvcm1fdGhyZWFk X2xpbnV4LmNjLm9yaWcJMjAxOC0wOS0xOSAxODowNToxNS41MjM5MjM3MDMgKzAyMDAKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aHJlYWRpbmcvcGxhdGZvcm1f dGhyZWFkX2xpbnV4LmNjCTIwMTgtMDktMTkgMTg6MDg6MDUuMTUwOTMyNDU0ICswMjAwCitAQCAt MTczLDcgKzE3MywxMiBAQAorIAorIHNpemVfdCBHZXREZWZhdWx0VGhyZWFkU3RhY2tTaXplKGNv bnN0IHB0aHJlYWRfYXR0cl90JiBhdHRyaWJ1dGVzKSB7CisgI2lmICFkZWZpbmVkKFRIUkVBRF9T QU5JVElaRVIpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgcmV0dXJuIDA7CisrI2Vsc2Ug Ly8gZGVmaW5lZChfX0dMSUJDX18pCisrICAvLyBGb3IgTXVzbCBsaWJjIHRyeSB3aXRoIGEgZGVm YXVsdCBzdGFjayBzaXplIG9mIDIgTWlCCisrICByZXR1cm4gMiAqIDEwMjQgKiAxMDI0OworKyNl bmRpZiAvLyAhZGVmaW5lZChfX0dMSUJDX18pCisgI2Vsc2UKKyAgIC8vIFRocmVhZFNhbml0aXpl ciBibG9hdHMgdGhlIHN0YWNrIGhlYXZpbHkuIEV2aWRlbmNlIGhhcyBiZWVuIHRoYXQgdGhlCisg ICAvLyBkZWZhdWx0IHN0YWNrIHNpemUgaXNuJ3QgZW5vdWdoIGZvciBzb21lIGJyb3dzZXIgdGVz dHMuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDEzLWRhdGFf cGFjay1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTMtZGF0YV9w YWNrLWJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMTEz ZGRiNjU2NgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVz LzAwMTMtZGF0YV9wYWNrLWJlLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKKy0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRhX3BhY2suY2Mub3Jp ZwkyMDE4LTA5LTExIDE0OjE2OjUzLjEwNDg5NzM3OSArMDIwMAorKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYwkyMDE4LTA5 LTExIDE0OjE3OjEyLjAwOTg5NjI1MyArMDIwMAorQEAgLTM4MywxMiArMzgzLDYgQEAKKyAKKyBi b29sIERhdGFQYWNrOjpHZXRTdHJpbmdQaWVjZSh1aW50MTZfdCByZXNvdXJjZV9pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpTdHJpbmdQaWVjZSogZGF0YSkgY29uc3Qg eworLSAgLy8gSXQgd29uJ3QgYmUgaGFyZCB0byBtYWtlIHRoaXMgZW5kaWFuLWFnbm9zdGljLCBi dXQgaXQncyBub3Qgd29ydGgKKy0gIC8vIGJvdGhlcmluZyB0byBkbyByaWdodCBub3cuCistI2lm ICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCistI2Vycm9yICJkYXRhcGFjayBhc3N1 bWVzIGxpdHRsZSBlbmRpYW4iCistI2VuZGlmCistCisgICBjb25zdCBFbnRyeSogdGFyZ2V0ID0g TG9va3VwRW50cnlCeUlkKHJlc291cmNlX2lkKTsKKyAgIGlmICghdGFyZ2V0KQorICAgICByZXR1 cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE0 LW11c2wtY3Jvc3Mtbm8tYXNtX3B0cmFjZV9oLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvMDAxNC1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTQwNzQyZjcyYzIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE0LW11c2wtY3Jvc3Mtbm8tYXNt X3B0cmFjZV9oLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYwkyMDE4LTA4LTI3IDEw OjIxOjMxLjAwMDAwMDAwMCArMDIwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlk dW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCTIwMTgtMTEtMjIgMDA6NDE6NTguNTIy NDc3NTU5ICswMTAwCitAQCAtMzgsNyArMzgsMTIgQEAKKyAKKyAjaW5jbHVkZSAiY2xpZW50L2xp bnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmgiCisgCisrI2lmIGRlZmlu ZWQoX19HTElCQ19fKQorICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisrI2Vsc2UKKysvKiBGb3Ig YXJtKi1tdXNsIHRoaXMgZGVmaW5pdGlvbiBpcyBtaXNzaW5nICovCisrI2RlZmluZSBBUk1fc3Ag dXJlZ3NbMTNdCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJu by5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21p bmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYwkyMDE4LTA4LTI3IDEwOjIxOjMxLjAw MDAwMDAwMCArMDIwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9jb3JlX2R1bXBlci5jYwkyMDE4LTExLTIyIDAwOjQ5OjM5LjUzMzQ5MjI0NSArMDEw MAorQEAgLTMyLDcgKzMyLDEyIEBACisgCisgI2luY2x1ZGUgImNsaWVudC9saW51eC9taW5pZHVt cF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuaCIKKyAKKysjaWYgZGVmaW5lZChfX0dMSUJDX18p CisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjZWxzZQorKy8qIEZvciBhcm0qLW11c2wgdGhp cyBkZWZpbml0aW9uIGlzIG1pc3NpbmcgKi8KKysjZGVmaW5lIEFSTV9zcCB1cmVnc1sxM10KKysj ZW5kaWYKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVsZi5oPgorICNpbmNsdWRl IDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAx NS15YXNtLW5scy5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTUteWFz bS1ubHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIyYWMw NDIwNzY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv MDAxNS15YXNtLW5scy5wYXRjaApAQCAtMCwwICsxLDEzIEBACitkaWZmIC0tZ2l0IHNyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmln Lmggc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9s aW51eC9jb25maWcuaAoraW5kZXggOWUzNjUzOS4uZjU4ODA4MyAxMDA2NDQKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZp Zy9saW51eC9jb25maWcuaAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8v dGhpcmRfcGFydHkveWFzbS9zb3VyY2UvY29uZmlnL2xpbnV4L2NvbmZpZy5oCitAQCAtNSw3ICs1 LDcgQEAKKyAjZGVmaW5lIENQUF9QUk9HICJnY2MgLUUiCisgCisgLyogKi8KKy0jZGVmaW5lIEVO QUJMRV9OTFMgMQorKy8qICN1bmRlZiBFTkFCTEVfTkxTIDEgKi8KKyAKKyAvKiBEZWZpbmUgdG8g MSBpZiB5b3UgaGF2ZSB0aGUgYGFib3J0JyBmdW5jdGlvbi4gKi8KKyAjZGVmaW5lIEhBVkVfQUJP UlQgMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNi1xdC1t dXNsLWV4ZWNpbmZvLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNi1x dC1tdXNsLWV4ZWNpbmZvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jMWNkYjUzNzIxMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMTYtcXQtbXVzbC1leGVjaW5mby5wYXRjaApAQCAtMCwwICsxLDk0IEBACist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2RlYnVnL3N0YWNrX3Ry YWNlX3Bvc2l4LmNjLm9yaWcJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2UvZGVidWcvc3RhY2tfdHJh Y2VfcG9zaXguY2MJMjAxOS0wNS0wNiAyMzoxNjoxMy4yNDU1MDI0NjcgKzAyMDAKK0BAIC0yNyw3 ICsyNyw3IEBACisgI2lmICFkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCisgI2luY2x1ZGUgPGN4eGFi aS5oPgorICNlbmRpZgorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlY KQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAjaW5jbHVkZSA8 ZXhlY2luZm8uaD4KKyAjZW5kaWYKKyAKK0BAIC04Niw3ICs4Niw3IEBACisgICAvLyBOb3RlOiBj b2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgTk9UIGFzeW5jLXNpZ25hbCBzYWZlIChzdGQ6OnN0cmlu ZyB1c2VzCisgICAvLyBtYWxsb2MgaW50ZXJuYWxseSkuCisgCistI2lmICFkZWZpbmVkKF9fVUNM SUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVm aW5lZChfQUlYKQorICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzZWFyY2hfZnJvbSA9IDA7Cisg ICB3aGlsZSAoc2VhcmNoX2Zyb20gPCB0ZXh0LT5zaXplKCkpIHsKKyAgICAgLy8gTG9vayBmb3Ig dGhlIHN0YXJ0IG9mIGEgbWFuZ2xlZCBzeW1ib2wsIGZyb20gc2VhcmNoX2Zyb20uCitAQCAtMTIx LDcgKzEyMSw3IEBACisgICAgICAgc2VhcmNoX2Zyb20gPSBtYW5nbGVkX3N0YXJ0ICsgMjsKKyAg ICAgfQorICAgfQorLSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQo X0FJWCkKKysjZW5kaWYgIC8vICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkK KyB9CisgI2VuZGlmICAvLyAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQorIAorQEAgLTEzMyw3ICsx MzMsNyBAQAorICAgdmlydHVhbCB+QmFja3RyYWNlT3V0cHV0SGFuZGxlcigpID0gZGVmYXVsdDsK KyB9OworIAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNp ZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyB2b2lkIE91dHB1dFBvaW50 ZXIodm9pZCogcG9pbnRlciwgQmFja3RyYWNlT3V0cHV0SGFuZGxlciogaGFuZGxlcikgeworICAg Ly8gVGhpcyBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBzdG9yZSBhIDY0LWJpdCBudW1i ZXIgaW4gaGV4OgorICAgLy8gMTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51bGwtdGVybWluYXRvci4K K0BAIC0yMTYsNyArMjE2LDcgQEAKKyAgIH0KKyAjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1NZTUJP TElaRSkKKyB9CistI2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChf QUlYKQorKyNlbmRpZiAgLy8gIWRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQor IAorIHZvaWQgUHJpbnRUb1N0ZGVycihjb25zdCBjaGFyKiBvdXRwdXQpIHsKKyAgIC8vIE5PVEU6 IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJv Y2VzcworQEAgLTgxMiw3ICs4MTIsNyBAQAorICAgLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUg YXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCisgICAvLyBzdGFjayBk dW1waW5nIHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlvIGlzIGFsbG93ZWQgaGVy ZS4KKyAKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjaWYg ZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgICAvLyBUaG91Z2ggdGhlIGJh Y2t0cmFjZSBBUEkgbWFuIHBhZ2UgZG9lcyBub3QgbGlzdCBhbnkgcG9zc2libGUgbmVnYXRpdmUK KyAgIC8vIHJldHVybiB2YWx1ZXMsIHdlIHRha2Ugbm8gY2hhbmNlLgorICAgcmV0dXJuIGJhc2U6 OnNhdHVyYXRlZF9jYXN0PHNpemVfdD4oYmFja3RyYWNlKHRyYWNlLCBjb3VudCkpOworQEAgLTgy NSwxMyArODI1LDEzIEBACisgLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFs IHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCisgLy8gc3RhY2sgZHVtcGluZyBzaWduYWwg aGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCisgCistI2lmICFk ZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElC Q19fKSAmJiAhZGVmaW5lZChfQUlYKQorICAgUHJpbnRCYWNrdHJhY2VPdXRwdXRIYW5kbGVyIGhh bmRsZXI7CisgICBQcm9jZXNzQmFja3RyYWNlKHRyYWNlXywgY291bnRfLCBwcmVmaXhfc3RyaW5n LCAmaGFuZGxlcik7CisgI2VuZGlmCisgfQorIAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAm JiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJ WCkKKyB2b2lkIFN0YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtV2l0aFByZWZpeChzdGQ6Om9zdHJl YW0qIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKKyAgIFN0cmVhbUJhY2t0cmFjZU91dHB1dEhh bmRsZXIgaGFuZGxlcihvcyk7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2Jhc2UvZGVidWcvc3RhY2tfdHJhY2UuY2MJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAg KzAyMDAKKysrKyAtCTIwMTktMDUtMDYgMjM6MTg6MTQuOTIzNTY2OTkyICswMjAwCitAQCAtMjMz LDcgKzIzMyw3IEBACisgfQorIHN0ZDo6c3RyaW5nIFN0YWNrVHJhY2U6OlRvU3RyaW5nV2l0aFBy ZWZpeChjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7CisgICBzdGQ6OnN0cmluZ3N0 cmVhbSBzdHJlYW07CistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgp CisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorICAgT3V0cHV0VG9T dHJlYW1XaXRoUHJlZml4KCZzdHJlYW0sIHByZWZpeF9zdHJpbmcpOworICNlbmRpZgorICAgcmV0 dXJuIHN0cmVhbS5zdHIoKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v L2Jhc2UvbG9nZ2luZy5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAorLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vYmFzZS9sb2dnaW5nLmNjCTIwMTgt MDEtMjcgMjI6NDY6MzQuOTcwNDA2ODA3ICswMTAwCitAQCAtNTQ2LDcgKzU0Niw3IEBACisgCisg TG9nTWVzc2FnZTo6fkxvZ01lc3NhZ2UoKSB7CisgICBzaXplX3Qgc3RhY2tfc3RhcnQgPSBzdHJl YW1fLnRlbGxwKCk7CistI2lmICFkZWZpbmVkKE9GRklDSUFMX0JVSUxEKSAmJiAhZGVmaW5lZChP U19OQUNMKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiBcCisrI2lmICFkZWZpbmVkKE9GRklD SUFMX0JVSUxEKSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYg XAorICAgICAhZGVmaW5lZChPU19BSVgpCisgICBpZiAoc2V2ZXJpdHlfID09IExPR19GQVRBTCAm JiAhYmFzZTo6ZGVidWc6OkJlaW5nRGVidWdnZWQoKSkgeworICAgICAvLyBJbmNsdWRlIGEgc3Rh Y2sgdHJhY2Ugb24gYSBmYXRhbCwgdW5sZXNzIGEgZGVidWdnZXIgaXMgYXR0YWNoZWQuCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE3LXF0LW11c2wtdGhyZWFk LXN0YWNrc2l6ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTctcXQt bXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi40OTY3NTNiZWYzMAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdl YmVuZ2luZS9wYXRjaGVzLzAwMTctcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCkBAIC0w LDAgKzEsMjYgQEAKK2RpZmYgLS1naXQgYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vcHBhcGkvdXRp bGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5jYyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9w cGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjCitpbmRleCAwMmJmNDliLi4w NWVlMTgyIDEwMDY0NAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFw aS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQu Y2MKK0BAIC0xMyw3ICsxMyw3IEBAIG5hbWVzcGFjZSBwcCB7CisgbmFtZXNwYWNlIHsKKyAKKyAv LyBVc2UgMk1CIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3IgTmF0aXZlIENsaWVudCwgb3RoZXJ3aXNl IHVzZSBzeXN0ZW0gZGVmYXVsdC4KKy0jaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKKysj aWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgIWRlZmluZWQoX19HTElCQ19fKQorIGNv bnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrU2l6ZSA9IDIgKiAxMDI0ICogMTAyNDsKKyAjZWxzZQor IGNvbnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrU2l6ZSA9IDA7CitkaWZmIC0tZ2l0IGEvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjIGIv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4 LmNjCitpbmRleCBjZjdmM2VjLi5lMDZhNWNlIDEwMDY0NAorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYwor KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9y bS9wbGF0Zm9ybS1wb3NpeC5jYworQEAgLTc2MSw3ICs3NjEsNyBAQCB2b2lkIFRocmVhZDo6U3Rh cnQoKSB7CisgI2lmIFY4X09TX01BQ09TWAorICAgICAvLyBEZWZhdWx0IG9uIE1hYyBPUyBYIGlz IDUxMmtCIC0tIGJ1bXAgdXAgdG8gMU1CCisgICAgIHN0YWNrX3NpemUgPSAxICogMTAyNCAqIDEw MjQ7CistI2VsaWYgVjhfT1NfQUlYCisrI2VsaWYgVjhfT1NfQUlYIHx8ICFkZWZpbmVkKF9fR0xJ QkNfXykKKyAgICAgLy8gRGVmYXVsdCBvbiBBSVggaXMgOTZrQiAtLSBidW1wIHVwIHRvIDJNQgor ICAgICBzdGFja19zaXplID0gMiAqIDEwMjQgKiAxMDI0OworICNlbmRpZgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxOC1zYW5kYm94LW1lbWJhcnJpZXIucGF0 Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE4LXNhbmRib3gtbWVtYmFycmll ci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjczOTcxZjI0 MzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE4 LXNhbmRib3gtbWVtYmFycmllci5wYXRjaApAQCAtMCwwICsxLDYwIEBACistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2Fy bTY0X2xpbnV4X3N5c2NhbGxzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaAor QEAgLTEwNjMsNCArMTA2Myw4IEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAyNzkKKyAj ZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9t ZW1iYXJyaWVyIDI4MworKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNU RU1fSEVBREVSU19BUk02NF9MSU5VWF9TWVNDQUxMU19IXworCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51 eF9zeXNjYWxscy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5k Ym94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oCitAQCAtMTM4NSw2 ICsxMzg1LDEwIEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAoX19OUl9TWVNDQUxMX0JB U0UrMzg1KQorICNlbmRpZgorIAorKyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCisrI2Rl ZmluZSBfX05SX21lbWJhcnJpZXIgKF9fTlJfU1lTQ0FMTF9CQVNFKzM4OSkKKysjZW5kaWYKKysK KyAvLyBBUk0gcHJpdmF0ZSBzeXNjYWxscy4KKyAjaWYgIWRlZmluZWQoX19BUk1fTlJfQkFTRSkK KyAjZGVmaW5lIF9fQVJNX05SX0JBU0UgKF9fTlJfU1lTQ0FMTF9CQVNFICsgMHhGMDAwMCkKKwor LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0 ZW1faGVhZGVycy94ODZfMzJfbGludXhfc3lzY2FsbHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfMzJfbGlu dXhfc3lzY2FsbHMuaAorQEAgLTE0MjIsNSArMTQyMiw5IEBACisgI2RlZmluZSBfX05SX21lbWZk X2NyZWF0ZSAzNTYKKyAjZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQor KyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIDM3NQorKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FO REJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19YODZfMzJfTElOVVhfU1lTQ0FMTFNfSF8KKyAKKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVt X2hlYWRlcnMveDg2XzY0X2xpbnV4X3N5c2NhbGxzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0X2xpbnV4 X3N5c2NhbGxzLmgKK0BAIC0xMjkwLDUgKzEyOTAsOSBAQAorICNkZWZpbmUgX19OUl9tZW1mZF9j cmVhdGUgMzE5CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKKysj ZGVmaW5lIF9fTlJfbWVtYmFycmllciAzMjQKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8vIFNBTkRC T1hfTElOVVhfU1lTVEVNX0hFQURFUlNfWDg2XzY0X0xJTlVYX1NZU0NBTExTX0hfCisgCistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3NlY2NvbXAt YnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRz LmNjCitAQCAtMzcwLDYgKzM3MCw3IEBACisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2Ug X19OUl9leGl0OgorICAgICBjYXNlIF9fTlJfZXhpdF9ncm91cDoKKysgICAgY2FzZSBfX05SX21l bWJhcnJpZXI6CisgICAgIGNhc2UgX19OUl93YWl0NDoKKyAgICAgY2FzZSBfX05SX3dhaXRpZDoK KyAjaWYgZGVmaW5lZChfX2kzODZfXykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMTktZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVu Z2luZS9wYXRjaGVzLzAwMTktZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWU2Njg5YTQxODMKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE5LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2gK QEAgLTAsMCArMSwyNCBAQAorVGhlcmUgaXMgbm8gcmVhc29uIHRvIHJ1biB0aGlzIHNjcmlwdCBh bmQgcnVubmluZyBpdCBmYWlscyBvbiBhcmNoaXRlY3R1cmVzCitjaHJvbWl1bSBkb2VzIG5vdCBv ZmZpY2lhbGx5IHN1cHBvcnQgKHN1Y2ggYXMgcHBjNjQpLgorCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2NvbmZpZy9wb3NpeC9CVUlMRC5nbgorKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvcG9zaXgvQlVJTEQuZ24K K0BAIC0xMDIsMTIgKzEwMiwxMiBAQCBjb25maWcoInJ1bnRpbWVfbGlicmFyeSIpIHsKKyAgICAg ICAjIHdoZW4gdHVybmluZyB0aGUgc3lzcm9vdCBvbiBvciBvZmYuIChkZWZpbmVzIGFyZSBwYXNz ZWQgdmlhIHRoZSBjb21tYW5kCisgICAgICAgIyBsaW5lLCBhbmQgYnVpbGQgc3lzdGVtIHJlYnVp bGRzIHRoaW5ncyB3aGVuIHRoZWlyIGNvbW1hbmRsaW5lCisgICAgICAgIyBjaGFuZ2VzKS4gTm90 aGluZyBzaG91bGQgZXZlciByZWFkIHRoaXMgZGVmaW5lLgorLSAgICAgIHN5c3Jvb3RfaGFzaCA9 CistICAgICAgICAgIGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9p bnN0YWxsLXN5c3Jvb3QucHkiLAorLSAgICAgICAgICAgICAgICAgICAgICBbICItLXByaW50LWhh c2g9JGN1cnJlbnRfY3B1IiBdLAorLSAgICAgICAgICAgICAgICAgICAgICAidHJpbSBzdHJpbmci LAorLSAgICAgICAgICAgICAgICAgICAgICBbICIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0 cy9zeXNyb290cy5qc29uIiBdKQorLSAgICAgIGRlZmluZXMgKz0gWyAiQ1JfU1lTUk9PVF9IQVNI PSRzeXNyb290X2hhc2giIF0KKysgICAgICAjc3lzcm9vdF9oYXNoID0KKysgICAgICAjICAgIGV4 ZWNfc2NyaXB0KCIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9pbnN0YWxsLXN5c3Jvb3Qu cHkiLAorKyAgICAgICMgICAgICAgICAgICAgICAgWyAiLS1wcmludC1oYXNoPSRjdXJyZW50X2Nw dSIgXSwKKysgICAgICAjICAgICAgICAgICAgICAgICJ0cmltIHN0cmluZyIsCisrICAgICAgIyAg ICAgICAgICAgICAgICBbICIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9zeXNyb290cy5q c29uIiBdKQorKyAgICAgICNkZWZpbmVzICs9IFsgIkNSX1NZU1JPT1RfSEFTSD0kc3lzcm9vdF9o YXNoIiBdCisgICAgIH0KKyAgICAgYXNtZmxhZ3MgKz0gc3lzcm9vdF9mbGFncworIApkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMC1tc2d2ZWMtcHVzaF9iYWNr LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMC1tc2d2ZWMtcHVzaF9i YWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTQ4MWEy ODg5ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MjAtbXNndmVjLXB1c2hfYmFjay5wYXRjaApAQCAtMCwwICsxLDE0IEBACistLS0gcXR3ZWJlbmdp bmUtZXZlcnl3aGVyZS1zcmMtNS4xNC4wLWJldGEyL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQv c29ja2V0L3VkcF9zb2NrZXRfcG9zaXguY2MJMjAxOS0xMC0wOCAwODoyNzo0My4wMDAwMDAwMDAg KzAyMDAKKysrKyAtCTIwMTktMTEtMTEgMjI6NDE6NDYuNjk5MDY4ODg5ICswMTAwCitAQCAtMTE5 MSw3ICsxMTkxLDExIEBACisgICAgIG1zZ19pb3YtPnB1c2hfYmFjayh7Y29uc3RfY2FzdDxjaGFy Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmxlbmd0aCgpfSk7CisgICBtc2d2ZWMtPnJlc2Vy dmUoYnVmZmVycy5zaXplKCkpOworICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBidWZmZXJzLnNp emUoKTsgaisrKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgbXNndmVjLT5wdXNoX2Jh Y2soe3tudWxscHRyLCAwLCAmbXNnX2lvdltqXSwgMSwgbnVsbHB0ciwgMCwgMH0sIDB9KTsKKysj ZWxzZQorKyAgICBtc2d2ZWMtPnB1c2hfYmFjayh7e251bGxwdHIsIDAsICZtc2dfaW92W2pdLCAx LCAwLCAwLCAwfSwgMH0pOworKyNlbmRpZgorICAgaW50IHJlc3VsdCA9IEhBTkRMRV9FSU5UUihT ZW5kbW1zZyhmZCwgJm1zZ3ZlY1swXSwgYnVmZmVycy5zaXplKCksIDApKTsKKyAgIFNlbmRSZXN1 bHQgc2VuZF9yZXN1bHQoMCwgMCwgc3RkOjptb3ZlKGJ1ZmZlcnMpKTsKKyAgIGlmIChyZXN1bHQg PCAwKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDIxLXNh bmRib3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy8wMDIxLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmE5MWU4NWVjYTNjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNo CkBAIC0wLDAgKzEsMjQgQEAKK0FsbG93IFNZU19zY2hlZF9nZXRwYXJhbSBhbmQgU1lTX3NjaGVk X2dldHNjaGVkdWxlcgorbXVzbCB1c2VzIHRoZW0gZm9yIHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSgp CisKK3NvdXJjZTogaHR0cHM6Ly9naXQuYWxwaW5lbGludXgub3JnL2Fwb3J0cy9jb21taXQvY29t bXVuaXR5L2Nocm9taXVtP2lkPTU0YWY5ZjhhYzI0ZjUyZDM4MmM1NzU4ZTI0NDViZjAyMDZlZmY0 MGUKKworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2VzL3NlcnZpY2VfbWFuYWdl ci9zYW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MJMjAxOS0xMC0wOCAw ODoyNzo0My4wMDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMTktMTEtMTEgMjI6MzM6NTEuODY1MTUz Njg0ICswMTAwCitAQCAtODgsMTAgKzg4LDE2IEBACisgICAgIGNhc2UgX19OUl9zeXNpbmZvOgor ICAgICBjYXNlIF9fTlJfdGltZXM6CisgICAgIGNhc2UgX19OUl91bmFtZToKKysjaWYgIWRlZmlu ZWQoX19HTElCQ19fKQorKyAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0cGFyYW06CisrICAgIGNhc2Ug X19OUl9zY2hlZF9nZXRzY2hlZHVsZXI6CisrI2VuZGlmCisgICAgICAgcmV0dXJuIEFsbG93KCk7 CisgICAgIGNhc2UgX19OUl9zY2hlZF9nZXRhZmZpbml0eToKKysjaWYgZGVmaW5lZChfX0dMSUJD X18pCisgICAgIGNhc2UgX19OUl9zY2hlZF9nZXRwYXJhbToKKyAgICAgY2FzZSBfX05SX3NjaGVk X2dldHNjaGVkdWxlcjoKKysjZW5kaWYKKyAgICAgY2FzZSBfX05SX3NjaGVkX3NldHNjaGVkdWxl cjoKKyAgICAgICByZXR1cm4gc2FuZGJveDo6UmVzdHJpY3RTY2hlZFRhcmdldChHZXRQb2xpY3lQ aWQoKSwgc3lzbm8pOworICAgICBjYXNlIF9fTlJfcHJsaW1pdDY0OgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMi1jYW5vbmljYWxpemUtZmlsZS1uYW1lLW11 c2wucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDIyLWNhbm9uaWNhbGl6 ZS1maWxlLW5hbWUtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uODkzZWQyZDQxYmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDIyLWNhbm9uaWNhbGl6ZS1maWxlLW5hbWUtbXVzbC5wYXRjaApAQCAtMCww ICsxLDExIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L25hc20vbmFzbWxpYi9yZWFscGF0aC5jCTIwMTktMDktMjMgMTQ6MjQ6MjAuMDAwMDAwMDAw ICswMjAwCisrKysgLQkyMDE5LTEwLTExIDA2OjI3OjI4LjQ1MDMyOTk4NiArMDIwMAorQEAgLTU3 LDcgKzU3LDcgQEAKKyAgKi8KKyBjaGFyICpuYXNtX3JlYWxwYXRoKGNvbnN0IGNoYXIgKnJlbF9w YXRoKQorIHsKKy0gICAgY2hhciAqcnAgPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lKHJlbF9wYXRo KTsKKysgICAgY2hhciAqcnAgPSByZWFscGF0aChyZWxfcGF0aCwgTlVMTCk7CisgICAgIHJldHVy biBycCA/IHJwIDogbmFzbV9zdHJkdXAocmVsX3BhdGgpOworIH0KKyAKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1w bGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODRmNzUzMGFjYTcK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKQEAgLTAs MCArMSwxNTEgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS13ZWJlbmdpbmUnCitwa2duYW1l PXF0NS13ZWJlbmdpbmUKK3ZlcnNpb249NS4xNC4xCityZXZpc2lvbj0xCit3cmtzcmM9InF0d2Vi ZW5naW5lLWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lvbn0iCithcmNocz0ieDg2XzY0KiBpNjg2KiBh cm12WzY3XSogcHBjNjQqIGFhcmNoNjQqIgorYnVpbGRfc3R5bGU9cW1ha2UKK2NvbmZpZ3VyZV9h cmdzPSItLQorIC13ZWJlbmdpbmUtaWN1IC13ZWJlbmdpbmUtZmZtcGVnIC13ZWJlbmdpbmUtb3B1 cyAtd2ViZW5naW5lLXdlYnAKKyAtd2ViZW5naW5lLXBlcHBlci1wbHVnaW5zIC13ZWJlbmdpbmUt cHJpbnRpbmctYW5kLXBkZiAtd2ViZW5naW5lLXByb3ByaWV0YXJ5LWNvZGVjcworIC13ZWJlbmdp bmUtcHVsc2VhdWRpbyAtd2ViZW5naW5lLXNwZWxsY2hlY2tlciAtd2ViZW5naW5lLXdlYnJ0YyAt d2ViZW5naW5lLWdlb2xvY2F0aW9uCisgJCh2b3B0X2lmIHNuYXBzaG90ICcnICctbm8nKS13ZWJl bmdpbmUtdjgtc25hcHNob3QiCisjIFJlbHkgb24gYXV0byBkZXRlY3Rpb24gKGZhaWxzIGlmIGZv cmNlZCBmb3IgY3Jvc3MgYnVpbGRzKSAtd2ViZW5naW5lLWFsc2EKK2hvc3RtYWtlZGVwZW5kcz0i cXQ1LXFtYWtlIGdwZXJmIG5pbmphIHF0NS1ob3N0LXRvb2xzIGZsZXggcGtnLWNvbmZpZworIHBl cmwgcHl0aG9uIHByb3RvYnVmIgorbWFrZWRlcGVuZHM9InF0NS13ZWJjaGFubmVsLWRldmVsIHF0 NS1sb2NhdGlvbi1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwKKyBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwg bGliZXZlbnQtZGV2ZWwgc25hcHB5LWRldmVsIGljdS1kZXZlbCBmZm1wZWctZGV2ZWwKKyBsaWJ3 ZWJwLWRldmVsIG9wdXMtZGV2ZWwgY3Vwcy1kZXZlbCBuc3MtZGV2ZWwgbWluaXppcC1kZXZlbCBs aWJ4c2x0LWRldmVsCisgbGlidnB4LWRldmVsIHJlMi1kZXZlbCBsaWJYdHN0LWRldmVsIGxpYlhj dXJzb3ItZGV2ZWwgbGliWGNvbXBvc2l0ZS1kZXZlbAorIGpzb25jcHAtZGV2ZWwgaGFyZmJ1enot ZGV2ZWwgbGNtczItZGV2ZWwgcHJvdG9idWYtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAorIGxpYlhy YW5kci1kZXZlbCBNZXNhTGliLWRldmVsIG11c2wtbGVnYWN5LWNvbXBhdCIKK3Nob3J0X2Rlc2M9 IkNyb3NzLXBsYXRmb3JtIGFwcGxpY2F0aW9uIGFuZCBVSSBmcmFtZXdvcmsgKFFUNSkgLSBXZWJF bmdpbmUgY29tcG9uZW50IgorbWFpbnRhaW5lcj0iSm9obiA8am9obnpAcG9zdGVvLm5ldD4iCits aWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJo dHRwczovL3F0LmlvLyIKK2Rpc3RmaWxlcz0iaHR0cDovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFs X3JlbGVhc2VzL3F0LyR7dmVyc2lvbiUuKn0vJHt2ZXJzaW9ufS9zdWJtb2R1bGVzL3F0d2ViZW5n aW5lLWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tzdW09NGVjNzcwNDBh ODc2YTgzYWEyYTgzM2ViZmU3YjNlODhkY2MxNjdjZWIzMTcwOTVlYjIyNmEwYjhkNDU1ZTg4Nwor cGF0Y2hfYXJncz0iLU5wMSIKKworYnVpbGRfb3B0aW9ucz0ic25hcHNob3QiCisKK2lmIFsgIiRD Uk9TU19CVUlMRCIgXTsgdGhlbgorCWhvc3RtYWtlZGVwZW5kcys9IiBuc3MtZGV2ZWwgbGliZXZl bnQtZGV2ZWwgcXQ1LWxvY2F0aW9uLWRldmVsCisJIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCIKK2Zp CisKK2lmIFsgIiRYQlBTX1dPUkRTSVpFIiAtZXEgMzIgXTsgdGhlbgorCW5vZGVidWc9eWVzICAj IHByZXZlbnQgT09NCitmaQorCitpZiBbICEgIiRYQlBTX1dPUkRTSVpFIiA9ICIkWEJQU19UQVJH RVRfV09SRFNJWkUiIF07IHRoZW4KKwlicm9rZW49IndlYmVuZ2luZSBjYW4gYmUgYnVpbHQgb25s eSBpZiB3b3JkIHNpemUgbWF0Y2hlcyIKKwkjVE9ETzogbG9vayBpbnRvIHdvcmtpbmcgYXJvdW5k IHRoaXMgd2l0aCAtMzJiaXQgcGFja2FnZXMKK2ZpCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiBpbgorCW1pcHMqfHBwYyopIG1ha2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZlbCIgOzsK KwkqKSA7OworZXNhYworCisjIFRPRE86IGxpa2VseSByZWxhdGVkIHRvIG5vdCBtYXRjaGluZyB3 b3Jkc2l6ZQorY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJYXJtKnxtaXBzKik7Owor CSopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ic25hcHNob3QiOzsKK2VzYWMKKworX2Jvb3RzdHJh cF9nbigpIHsKKwkjIEJvb3RzdHJhcCBnbiAoZ2VuZXJhdGUgbmluamEpCisJZWNobyAiQm9vdHN0 cmFwcGluZyAnZ24nIgorCWNkICR7d3Jrc3JjfS9zcmMvM3JkcGFydHkvZ24KKwlDRkxBR1M9IiRD RkxBR1NfaG9zdCIgQ1hYRkxBR1M9IiRDWFhGTEFHU19ob3N0IiBMREZMQUdTPSIkTERGTEFHU19o b3N0IiBcCisJUEtHQ09ORklHPS91c3IvYmluL3BrZ2NvbmZpZyBQS0dfQ09ORklHX1BBVEg9Ii91 c3IvbGliL3BrZ2NvbmZpZzovdXNyL3NoYXJlL3BrZ2NvbmZpZyIgXAorCQlweXRob24yIGJ1aWxk L2dlbi5weSAtLW5vLWxhc3QtY29tbWl0LXBvc2l0aW9uIC0tb3V0LXBhdGggXAorCQkJJHt3cmtz cmN9L3NyYy8zcmRwYXJ0eS9nbi9vdXQvUmVsZWFzZSAtLWNjICIkQ0NfaG9zdCIgXAorICAgICAg ICAgICAgICAgICAgICAgICAgLS1jeHggIiRDWFhfaG9zdCIgLS1sZCAiJENYWF9ob3N0IiAtLWFy ICIkQVJfaG9zdCIKKwluaW5qYSAtQyBvdXQvUmVsZWFzZSBnbgorCWNkICR7d3Jrc3JjfQorfQor CitfY2xlYW51cF93cmtzcmNfbGVhaygpIHsKKwlpZiBbIC1kICIke1BLR0RFU1RESVJ9L3Vzci9s aWIvY21ha2UiIF07IHRoZW4KKwkJIyBSZXBsYWNlIHJlZmVyZW5jZXMgdG8gJHt3cmtzcmN9IGlu IGNtYWtlIGZpbGVzCisJCXNlZCAtaSAke1BLR0RFU1RESVJ9L3Vzci9saWIvY21ha2UvKi8qLmNt YWtlIFwKKwkJCS1lICJzOyR7d3Jrc3JjfS9ob3N0Oy91c3IvbGliL3F0NTtnIiBcCisJCQktZSAi cztkZXZpY2VzL3ZvaWQtJHtYQlBTX0NST1NTX1RSSVBMRVR9LWcrKztsaW51eC1nKys7ZyIKKwlm aQorCWlmIFsgLWQgIiR7UEtHREVTVERJUn0vdXNyL2xpYi9wa2djb25maWciIF07IHRoZW4KKwkJ IyBSZXBsYWNlIHJlZmVyZW5jZXMgdG8gJHt3cmtzcmN9IGluIHBrZ2NvbmZpZyBmaWxlcworCQlz ZWQgLWkgJHtQS0dERVNURElSfS91c3IvbGliL3BrZ2NvbmZpZy8qLnBjIFwKKwkJCS1lICJzOyR7 d3Jrc3JjfS9ob3N0Oy91c3IvbGliL3F0NTtnIiBcCisJCQktZSAicztkZXZpY2VzL3ZvaWQtJHtY QlBTX0NST1NTX1RSSVBMRVR9LWcrKztsaW51eC1nKys7ZyIKKwlmaQorCSMgUmVtb3ZlIFFNQUtF X1BSTF9CVUlMRF9ESVIgZnJvbSBoaW50IGZpbGVzIGZvciBzdGF0aWMgbGlicmFyaWVzCisJIyBh bmQgcmVwbGFjZSByZWZlcmVuY2VzIHRvICR7d3Jrc3JjfQorCWZpbmQgJHtQS0dERVNURElSfSAt aW5hbWUgIioucHJsIiAtZXhlYyBzZWQgLWkgInt9IiBcCisJCS1lICIvXlFNQUtFX1BSTF9CVUlM RF9ESVIvZCIgXAorCQktZSAiczstTCR7d3Jrc3JjfS9xdGJhc2UvbGliOy1ML3Vzci9saWI7ZyIg XDsKKwkjIFJlcGxhY2UgJHt3cmtzcmN9IGluIHByb2plY3QgaW5jbHVkZSBmaWxlcworCWZpbmQg JHtQS0dERVNURElSfSAtaW5hbWUgIioucHJpIiAtZXhlYyBzZWQgLWkgInt9IiBcCisJCS1lICJz OyR7d3Jrc3JjfS9xdGJhc2U7L3Vzci9saWIvcXQ1O2ciIFw7Cit9CisKK3ByZV9jb25maWd1cmUo KSB7CisJZXhwb3J0IFBBVEg9JHtQQVRIL1wvYnVpbGRkaXJcLy54YnBzLXF0NS13ZWJlbmdpbmVc L3dyYXBwZXJzOi99CisJY3AgJHtGSUxFU0RJUn0vcmVzb2x2X2NvbXBhdC5oICR7d3Jrc3JjfS9z cmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2RucworCQorCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiBpbgorCQlhcm12NSp8YXJtdjYqKSAgIyBEaXNhYmxlICJ5aWVsZCIgYXNzZW1ibGVyIGlu c3RydWN0aW9uCisJCQlzZWQgLWkgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jh c2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKKwkJCQlxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3Bh cnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKKwkJ CQktZSAnczsieWllbGQiOyJub3AiOycKKwkJCTs7CisJZXNhYworCWNhc2UgIiRYQlBTX1RBUkdF VF9NQUNISU5FIiBpbgorCQkqLW11c2wpIGV4cG9ydCBDWFhGTEFHUys9IiAtRF9QT1NJWF9USFJF QURfQVRUUl9TVEFDS1NJWkU9MjA5NzE1MiI7OworCWVzYWMKKwljYXNlICIkWEJQU19UQVJHRVRf TUFDSElORSIgaW4KKwkJbWlwcyopICAjIHNnaWRlZnMuaCBpcyBpbiAvdXNyL2luY2x1ZGUvYXNt CisJCQlmb3IgZiBpbiBcCisJCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBcCisJCQkJcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j b21tb24vYW5kcm9pZC9pbmNsdWRlL2FzbS1taXBzL2ZwcmVnZGVmLmggXAorCQkJCXF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9hc20tbWlwcy9yZWdkZWYuaCBcCisJCQkJcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL2FzbS1taXBzL2FzbS5oIFwKKwkJCQlxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvdGNtYWxsb2MvdmVuZG9yL3Ny Yy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIFwKKwkJCQlxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvdGNtYWxsb2MvY2hyb21pdW0vc3JjL2Jhc2UvbGlu dXhfc3lzY2FsbF9zdXBwb3J0LmggXAorCQkJCXF0c2NyaXB0L3NyYy8zcmRwYXJ0eS9qYXZhc2Ny aXB0Y29yZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaDsgZG8KKwkJCQkJc2VkIC1pICRm IC1lICJzOzxzZ2lkZWZzLmg+Ozxhc20vc2dpZGVmcy5oPjsiCisJCQlkb25lCisJCQkjIEFzc3Vt ZSB0aGF0IFJHQkEgb3JkZXIgaXMgY29ycmVjdCBmb3IgYmlnIGVuZGlhbiBDUFVzCisJCQlzZWQg LWkgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEvY29uZmlnL1NrVXNlckNv bmZpZy5oIFwKKwkJCQktZSAnLyNlcnJvciBSZWFkIHRoZSBjb21tZW50IGF0IHRoaXMgbG9jYXRp b24vZCcKKwkJCTs7CisJZXNhYworCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCV9i b290c3RyYXBfZ24KKwlmaQorfQorCitwcmVfYnVpbGQoKSB7CisJZXhwb3J0IE5JTkpBSk9CUz0k e21ha2Vqb2JzfQorfQorCitxdDUtd2ViZW5naW5lLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5k cz0iJHtzb3VyY2Vwa2d9Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIg LSBkZXZlbG9wbWVudCBmaWxlcyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1 ZGUKKwkJdm1vdmUgdXNyL2xpYi9jbWFrZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2 bW92ZSB1c3IvbGliL3F0NS9ta3NwZWNzCisJCSNUT0RPOiBGSVghISEKKwkJaWYgWyAteiAiJENS T1NTX0JVSUxEIiBdOyB0aGVuCisJCQl2bW92ZSB1c3IvbGliL3F0NS9wbHVnaW5zL2Rlc2lnbmVy CisJCWZpCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJCXZtb3ZlICJ1c3IvbGliLyoucHJsIgor CQl2bW92ZSAidXNyL2xpYi8qLmxhIgorCQlfY2xlYW51cF93cmtzcmNfbGVhaworCX0KK30KCkZy b20gYWZmZDk1M2I4YWQ5ZTA0YWUyZmZlOTUyNWU3NGNhNWM5Y2VmMTk3NCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogTW9uLCAxMSBO b3YgMjAxOSAyMDoyMjo0MyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDMvMTBdIGNvbW1vbi9xbWFr ZS5zaDogcmVvcmRlciBhcmdzCgpbY2kgc2tpcF0KLS0tCiBjb21tb24vYnVpbGQtc3R5bGUvcW1h a2Uuc2ggfCA5OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv Y29tbW9uL2J1aWxkLXN0eWxlL3FtYWtlLnNoIGIvY29tbW9uL2J1aWxkLXN0eWxlL3FtYWtlLnNo CmluZGV4IDYzYmU1YTNhNTY4Li5kMDI0YThhNjc3MCAxMDA2NDQKLS0tIGEvY29tbW9uL2J1aWxk LXN0eWxlL3FtYWtlLnNoCisrKyBiL2NvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaApAQCAtMTYs MTAgKzE2LDc2IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJbXNnX2Vycm9yICIke3BrZ3Zlcn06IENv dWxkIG5vdCBmaW5kIHFtYWtlIC0gbWlzc2luZyBpbiBob3N0ZGVwZW5kcz9cbiIKIAlmaQogCWlm IFsgIiRDUk9TU19CVUlMRCIgXSAmJiBbICIkcW1ha2UiID09ICIvdXNyL2xpYi9xdDUvYmluL3Ft YWtlIiBdOyB0aGVuCisJCWNhc2UgJFhCUFNfVEFSR0VUX01BQ0hJTkUgaW4KKwkJCWk2ODYqKSBf cXRfYXJjaD1pMzg2OzsKKwkJCXg4Nl82NCopIF9xdF9hcmNoPXg4Nl82NDs7CisJCQlhYXJjaDY0 KikgX3F0X2FyY2g9YXJtNjQ7OworCQkJYXJtKikgX3F0X2FyY2g9YXJtOzsKKwkJCW1pcHMqKSBf cXRfYXJjaD1taXBzOzsKKwkJZXNhYworCQlta2RpciAtcCAiJHt3cmtzcmN9Ly50YXJnZXQtc3Bl Yy9saW51eC1nKysiCisJCWNhdCA+ICIke3dya3NyY30vLnRhcmdldC1zcGVjL2xpbnV4LWcrKy9x bWFrZS5jb25mIiA8PF9FT0YKK01BS0VGSUxFX0dFTkVSQVRPUiAgICAgID0gVU5JWAorQ09ORklH ICAgICAgICAgICAgICAgICArPSBpbmNyZW1lbnRhbAorUU1BS0VfSU5DUkVNRU5UQUxfU1RZTEUg PSBzdWJsaWIKKworaW5jbHVkZSgvdXNyL2xpYi9xdDUvbWtzcGVjcy9jb21tb24vbGludXguY29u ZikKK2luY2x1ZGUoL3Vzci9saWIvcXQ1L21rc3BlY3MvY29tbW9uL2djYy1iYXNlLXVuaXguY29u ZikKK2luY2x1ZGUoL3Vzci9saWIvcXQ1L21rc3BlY3MvY29tbW9uL2crKy11bml4LmNvbmYpCisK K1FNQUtFX1RBUkdFVF9DT05GSUcgICAgID0gJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9saWIvcXQ1 L21rc3BlY3MvcWNvbmZpZy5wcmkKK1FNQUtFX1RBUkdFVF9NT0RVTEUgICAgID0gJHtYQlBTX0NS T1NTX0JBU0V9L3Vzci9saWIvcXQ1L21rc3BlY3MvcW1vZHVsZS5wcmkKK1FNQUtFX0NDICAgICAg ICAgICAgICAgID0gJHtDQ30KK1FNQUtFX0NYWCAgICAgICAgICAgICAgID0gJHtDWFh9CitRTUFL RV9MSU5LICAgICAgICAgICAgICA9ICR7Q1hYfQorUU1BS0VfTElOS19DICAgICAgICAgICAgPSAk e0NDfQorUU1BS0VfTElOS19TSExJQiAgICAgICAgPSAke0NYWH0KKworUU1BS0VfQVIgICAgICAg ICAgICAgICAgPSAke1hCUFNfQ1JPU1NfVFJJUExFVH0tZ2NjLWFyIGNxcworUU1BS0VfT0JKQ09Q WSAgICAgICAgICAgPSAke09CSkNPUFl9CitRTUFLRV9OTSAgICAgICAgICAgICAgICA9ICR7Tk19 IC1QCitRTUFLRV9TVFJJUCAgICAgICAgICAgICA9ICR7U1RSSVB9CisKK1FNQUtFX0NGTEFHUyAg ICAgICAgICAgID0gJHtDRkxBR1N9CitRTUFLRV9DWFhGTEFHUyAgICAgICAgICA9ICR7Q1hYRkxB R1N9CitRTUFLRV9MRkxBR1MgICAgICAgICAgICA9ICR7TERGTEFHU30KK2xvYWQocXRfY29uZmln KQorX0VPRgorCQllY2hvICIjaW5jbHVkZSBcIiR7WEJQU19DUk9TU19CQVNFfS91c3IvbGliL3F0 NS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmhcIiIgPiAiJHt3cmtzcmN9Ly50YXJn ZXQtc3BlYy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oIgorCisJCW1rZGlyIC1wICIke3dya3Ny Y30vLmhvc3Qtc3BlYy9saW51eC1nKysiCisJCWNhdCA+ICIke3dya3NyY30vLmhvc3Qtc3BlYy9s aW51eC1nKysvcW1ha2UuY29uZiIgPDxfRU9GCitNQUtFRklMRV9HRU5FUkFUT1IgICAgICA9IFVO SVgKK0NPTkZJRyAgICAgICAgICAgICAgICAgKz0gaW5jcmVtZW50YWwKK1FNQUtFX0lOQ1JFTUVO VEFMX1NUWUxFID0gc3VibGliCisKK2luY2x1ZGUoL3Vzci9saWIvcXQ1L21rc3BlY3MvY29tbW9u L2xpbnV4LmNvbmYpCitpbmNsdWRlKC91c3IvbGliL3F0NS9ta3NwZWNzL2NvbW1vbi9nY2MtYmFz ZS11bml4LmNvbmYpCitpbmNsdWRlKC91c3IvbGliL3F0NS9ta3NwZWNzL2NvbW1vbi9nKystdW5p eC5jb25mKQorCitRTUFLRV9UQVJHRVRfQ09ORklHICAgICA9ICR7WEJQU19DUk9TU19CQVNFfS91 c3IvbGliL3F0NS9ta3NwZWNzL3Fjb25maWcucHJpCitRTUFLRV9UQVJHRVRfTU9EVUxFICAgICA9 ICR7WEJQU19DUk9TU19CQVNFfS91c3IvbGliL3F0NS9ta3NwZWNzL3Ftb2R1bGUucHJpCitRTUFL RV9DQyAgICAgICAgICAgICAgICA9ICR7Q0NfaG9zdH0KK1FNQUtFX0NYWCAgICAgICAgICAgICAg ID0gJHtDWFhfaG9zdH0KK1FNQUtFX0xJTksgICAgICAgICAgICAgID0gJHtDWFhfaG9zdH0KK1FN QUtFX0xJTktfQyAgICAgICAgICAgID0gJHtDQ19ob3N0fQorUU1BS0VfTElOS19TSExJQiAgICAg ICAgPSAke0NYWF9ob3N0fQorCitRTUFLRV9BUiAgICAgICAgICAgICAgICA9IGdjYy1hciBjcXMK K1FNQUtFX09CSkNPUFkgICAgICAgICAgID0gJHtPQkpDT1BZX2hvc3R9CitRTUFLRV9OTSAgICAg ICAgICAgICAgICA9ICR7Tk1faG9zdH0gLVAKK1FNQUtFX1NUUklQICAgICAgICAgICAgID0gJHtT VFJJUF9ob3N0fQorCitRTUFLRV9DRkxBR1MgICAgICAgICAgICA9ICR7Q0ZMQUdTX2hvc3R9CitR TUFLRV9DWFhGTEFHUyAgICAgICAgICA9ICR7Q1hYRkxBR1NfaG9zdH0KK1FNQUtFX0xGTEFHUyAg ICAgICAgICAgID0gJHtMREZMQUdTX2hvc3R9Citsb2FkKHF0X2NvbmZpZykKK19FT0YKK2VjaG8g JyNpbmNsdWRlICIvdXNyL2xpYi9xdDUvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5o IicgPiAiJHt3cmtzcmN9Ly5ob3N0LXNwZWMvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaCIKIAkJ Y2F0ID4gIiR7d3Jrc3JjfS9xdC5jb25mIiA8PF9FT0YKIFtQYXRoc10KIFN5c3Jvb3Q9JHtYQlBT X0NST1NTX0JBU0V9Ci1QcmVmaXg9JHtYQlBTX0NST1NTX0JBU0V9L3VzcgorUHJlZml4PS91c3IK IEFyY2hEYXRhPSR7WEJQU19DUk9TU19CQVNFfS91c3IvbGliL3F0NQogRGF0YT0ke1hCUFNfQ1JP U1NfQkFTRX0vdXNyL3NoYXJlL3F0NQogRG9jdW1lbnRhdGlvbj0ke1hCUFNfQ1JPU1NfQkFTRX0v dXNyL3NoYXJlL2RvYy9xdDUKQEAgLTM4LDE4ICsxMDQsMjkgQEAgSG9zdFByZWZpeD0vdXNyCiBI b3N0RGF0YT0vdXNyL2xpYi9xdDUKIEhvc3RCaW5hcmllcz0vdXNyL2xpYi9xdDUvYmluCiBIb3N0 TGlicmFyaWVzPS91c3IvbGliCi1TcGVjPWxpbnV4LWcrKwotVGFyZ2V0U3BlYz1saW51eC1nKysK K1NwZWM9JHt3cmtzcmN9Ly5ob3N0LXNwZWMvbGludXgtZysrCitUYXJnZXRTcGVjPSR7d3Jrc3Jj fS8udGFyZ2V0LXNwZWMvbGludXgtZysrCiBfRU9GCi0JCXFtYWtlX2FyZ3M9Ii1xdGNvbmYgJHt3 cmtzcmN9L3F0LmNvbmYiCisJCXFtYWtlX2FyZ3M9Ii1xdGNvbmYgJHt3cmtzcmN9L3F0LmNvbmYg UEtHX0NPTkZJR19FWEVDVVRBQkxFPSR7WEJQU19XUkFQUEVSRElSfS9wa2ctY29uZmlnIgorCQkk e3FtYWtlfSAke3FtYWtlX2FyZ3N9IFwKKwkJCVBSRUZJWD0vdXNyIFwKKwkJCVFUX0lOU1RBTExf UFJFRklYPS91c3IgXAorCQkJTElCPS91c3IvbGliIFwKKwkJCVFUX1RBUkdFVF9BUkNIPSRfcXRf YXJjaCBcCisJCQkke2NvbmZpZ3VyZV9hcmdzfQorCWVsc2UKKwkJJHtxbWFrZX0gJHtxbWFrZV9h cmdzfSBcCisJCQlQUkVGSVg9L3VzciBcCisJCQlRVF9JTlNUQUxMX1BSRUZJWD0vdXNyIFwKKwkJ CUxJQj0vdXNyL2xpYiBcCisJCQlRVF9UQVJHRVRfQVJDSD0kX3F0X2FyY2ggXAorCQkJUU1BS0Vf Q0M9JENDIFFNQUtFX0NYWD0kQ1hYIFwKKwkJCVFNQUtFX0xJTks9JENYWCBRTUFLRV9MSU5LX0M9 JENDIFwKKwkJCVFNQUtFX0NGTEFHUz0iJHtDRkxBR1N9IiBcCisJCQlRTUFLRV9DWFhGTEFHUz0i JHtDWFhGTEFHU30iIFwKKwkJCVFNQUtFX0xGTEFHUz0iJHtMREZMQUdTfSIgXAorCQkJJHtjb25m aWd1cmVfYXJnc30KIAlmaQotCSR7cW1ha2V9ICR7cW1ha2VfYXJnc30gJHtjb25maWd1cmVfYXJn c30gXAotCQlQUkVGSVg9L3VzciBcCi0JCUxJQj0vdXNyL2xpYiBcCi0JCVFNQUtFX0NDPSRDQyBR TUFLRV9DWFg9JENYWCBRTUFLRV9MSU5LPSRDWFggUU1BS0VfTElOS19DPSRDQyBcCi0JCVFNQUtF X0NGTEFHUz0iJHtDRkxBR1N9IiBcCi0JCVFNQUtFX0NYWEZMQUdTPSIke0NYWEZMQUdTfSIgXAot CQlRTUFLRV9MRkxBR1M9IiR7TERGTEFHU30iCiB9CiAKIGRvX2J1aWxkKCkgewoKRnJvbSAzMzhi Yjc4ZWVlZjIzYWFiY2M5Y2UwMjYxYTZjY2RkYzA3MWUyMzhhIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBGcmksIDExIE9jdCAyMDE5 IDAxOjE1OjQ4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwNC8xMF0gdGVsZWdyYW0tZGVza3RvcDog cmVidWlsZCBmb3IgcXQ1LjE0LjAKCltjaSBza2lwXQotLS0KIHNyY3BrZ3MvdGVsZWdyYW0tZGVz a3RvcC90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90 ZW1wbGF0ZSBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQppbmRleCAzN2FiNTgw MWQ4NC4uNWRhY2IwMjZkNGEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10 ZWxlZ3JhbS1kZXNrdG9wCiB2ZXJzaW9uPTEuOS44Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiB3 cmtzcmM9InRkZXNrdG9wLSR7dmVyc2lvbn0tZnVsbCIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWls ZF9oZWxwZXI9InFlbXUiCkBAIC0xNyw3ICsxNyw3IEBAIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1k ZXZlbCBmZm1wZWctZGV2ZWwgbGliZGJ1c21lbnUtZ2xpYi1kZXZlbCBsaWJvcGVuYWwtZGV2ZWwK ICBtaW5pemlwLWRldmVsIG9wdXMtZGV2ZWwgeHhIYXNoLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwg cXQ1LWRldmVsIHJhbmdlLXYzCiAgbGlidmEtZGV2ZWwgZW5jaGFudDItZGV2ZWwgcmFwaWRqc29u IGxpYmx6NC1kZXZlbCBsaWJsem1hLWRldmVsIHJsb3R0aWUtZGV2ZWwKICBNZXNhTGliLWRldmVs IgotZGVwZW5kcz0icXQ1LWltYWdlZm9ybWF0cyBxdDU+PTUuMTMuMjw1LjEzLjMiCitkZXBlbmRz PSJxdDUtaW1hZ2Vmb3JtYXRzIHF0NS1jb3JlPj01LjE0LjE8NS4xNC4yIgogc2hvcnRfZGVzYz0i VGVsZWdyYW0gRGVza3RvcCBtZXNzYWdpbmcgYXBwIgogbWFpbnRhaW5lcj0iSm9obiA8am9obnpA cG9zdGVvLm5ldD4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIFdJVEggT3BlblNTTCIKQEAg LTQ5LDcgKzQ5LDcgQEAgZmkKIHBvc3RfZXh0cmFjdCgpIHsKIAlfcXQ1X2RlcF92ZXI9IiR7ZGVw ZW5kcyMqPj19IgogCV9xdDVfZGVwX3Zlcj0iJHtfcXQ1X2RlcF92ZXIlPCp9IgotCV9xdDVfdmVy c2lvbj0iJCh4YnBzLXVoZWxwZXIgdmVyc2lvbiBxdDUpIgorCV9xdDVfdmVyc2lvbj0iJCh4YnBz LXVoZWxwZXIgdmVyc2lvbiBxdDUtY29yZSkiCiAKIAlpZiBbWyAiJHtfcXQ1X3ZlcnNpb24lXyp9 IiAhPSAiJHtfcXQ1X2RlcF92ZXJ9IiBdXTsgdGhlbgogCQllY2hvCgpGcm9tIDc1MDdhMTQzNzg0 ZDM3OGM5Mzc3NDlhZGZmMmFhNTQxMWEwZjFkYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IE1vbiwgMTggTm92IDIwMTkgMDM6MDU6 MjggKzAxMDAKU3ViamVjdDogW1BBVENIIDA1LzEwXSBxdDUtc3R5bGVwbHVnaW5zOiByZWJ1aWxk IGFnYWluc3QgcXQ1LjE0CgotLS0KIHNyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSB8 IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dz L3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggZjZjNTExY2FkNGMuLjEwZmM2ZTRmYTI2 IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdxdDUtc3R5bGVwbHVnaW5zJwogcGtnbmFtZT1xdDUtc3R5bGVwbHVnaW5z CiB2ZXJzaW9uPTUuMC4wCi1yZXZpc2lvbj0xMQorcmV2aXNpb249MTIKIF9naXRyZXY9MzM1ZGJl Y2UxMDNlMmNiZjZjN2NmODE5YWI2NjcyYzI5NTZiMTdiMwogd3Jrc3JjPSJxdHN0eWxlcGx1Z2lu cy0ke19naXRyZXZ9IgogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBxdDUtaG9zdC10b29scyBxdDUtZGV2ZWwiCiBtYWtlZGVwZW5kcz0ibGlieGNiLWRldmVs IGxpYnhrYmNvbW1vbi1kZXZlbCBsaWJpbnB1dC1kZXZlbCB0c2xpYi1kZXZlbCBndGsrLWRldmVs IHF0NS1kZXZlbCIKLWRlcGVuZHM9InF0NT49NS4xMy4yPDUuMTMuMyIKK2RlcGVuZHM9InF0NT49 NS4xNC4xPDUuMTQuMiIKIHNob3J0X2Rlc2M9IkFkZGl0aW9uYWwgc3R5bGUgcGx1Z2lucyBmb3Ig UXQ1IgogbWFpbnRhaW5lcj0iSsO8cmdlbiBCdWNobcO8bGxlciA8cHVsbG1vbGxAdC1vbmxpbmUu ZGU+IgogbGljZW5zZT0iTEdQTC0yLjEtb25seSwgTEdQTC0zLjAtb25seSIKCkZyb20gM2YyNjg5 MDU2MmJmNjk1OTNkYjFlOTRiMzU5MTM0MjFiOTY1N2UxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogTW9uLCAxOCBOb3YgMjAxOSAw MzoyNzozMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDYvMTBdIHF0NWR4Y2ItcGx1Z2luOiByZWJ1 aWxkIGFnYWluc3QgcXQ1LjE0CgpbY2kgc2tpcF0KLS0tCiBzcmNwa2dzL3F0NWR4Y2ItcGx1Z2lu L3RlbXBsYXRlIHwgOCArKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NWR4Y2ItcGx1Z2luL3RlbXBs YXRlIGIvc3JjcGtncy9xdDVkeGNiLXBsdWdpbi90ZW1wbGF0ZQppbmRleCBiNTQwOGVkODlmYi4u YjQ4YTlmYjE2NTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1ZHhjYi1wbHVnaW4vdGVtcGxhdGUK KysrIGIvc3JjcGtncy9xdDVkeGNiLXBsdWdpbi90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1ZHhjYi1wbHVnaW4nCiBwa2duYW1lPXF0NWR4Y2ItcGx1 Z2luCiB2ZXJzaW9uPTUuMC4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1x bWFrZQogbWFrZV9idWlsZF9hcmdzPSJWRVJTSU9OPSR7dmVyc2lvbn0iCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWcgcXQ1LXFtYWtlIgogbWFrZWRlcGVuZHM9ImNhaXJvLWRldmVsIGxpYlNN LWRldmVsIGxpYlhpLWRldmVsIGxpYnhrYmNvbW1vbi1kZXZlbAogIHF0NS14MTFleHRyYXMtZGV2 ZWwgeGNiLXV0aWwtaW1hZ2UtZGV2ZWwgeGNiLXV0aWwta2V5c3ltcy1kZXZlbAogIHhjYi11dGls LXJlbmRlcnV0aWwtZGV2ZWwgeGNiLXV0aWwtd20tZGV2ZWwiCi1kZXBlbmRzPSJxdDU+PTUuMTMu Mjw1LjEzLjMiCitkZXBlbmRzPSJxdDUtY29yZT49NS4xNC4xPDUuMTQuMiIKIHNob3J0X2Rlc2M9 IlF0IHBsYXRmb3JtIHBsdWdpbnMgZm9yIERERSIKIG1haW50YWluZXI9IkpvaG4gPGpvaG56QHBv c3Rlby5uZXQ+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKQEAgLTE4LDYgKzE4LDggQEAg ZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vbGludXhkZWVwaW4vcXQ1ZHhjYi1wbHVnaW4v YXJjaGl2ZS8ke3ZlcnNpb259LnRhci4KIGNoZWNrc3VtPWIxOTI1M2Y5ZjU3N2IyYTlkODY3NzRi YTk1ZDI1MjMxOGYzZDY5MmFiOTJkMmU2MmZiZjA1NzhkNTZkYjQ1M2QKIHBhdGNoX2FyZ3M9Ii1O cDEiCiAKK2Jyb2tlbj0iVE9ETzogVVNFIFRIRSBDT1JSRUNUIEhFQURFUlMiCisKIHByZV9jb25m aWd1cmUoKSB7CiAJX3F0NV9kZXBfdmVyPSIke2RlcGVuZHMjKj49fSIKIAlfcXQ1X2RlcF92ZXI9 IiR7X3F0NV9kZXBfdmVyJTwqfSIKQEAgLTMzLDcgKzM1LDcgQEAgcHJlX2NvbmZpZ3VyZSgpIHsK IAkjIG5vIGhlYWRlcnMgZm9yIDUuMTMuMSB5ZXQ7IDUuMTMuMCBoZWFkZXJzIGFyZSB0aGUgc2Ft ZSBmb3IgdGhpcwogCSMgcmVtb3ZlIG9uIG5leHQgdmVyc2lvbiB1cGdyYWRlIChhZnRlciB1cHN0 cmVhbSBoYXMgYWRkZWQgdGhlbSkKIAlsbiAtcyAke3dya3NyY30vcGxhdGZvcm1wbHVnaW4vbGli cXQ1eGNicXBhLWRldi81LjEzLjAgXAotCQkke3dya3NyY30vcGxhdGZvcm1wbHVnaW4vbGlicXQ1 eGNicXBhLWRldi81LjEzLjIKKwkJJHt3cmtzcmN9L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFw YS1kZXYvNS4xNC4wCiB9CiAKIGlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgoKRnJvbSA5M2M4 YTM1NTAzNWE3YjNkZTdmMWNhNDA1OTM5ZDUxNjZlMjU3NDM1IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUaHUsIDUgRGVjIDIwMTkg MDg6NDI6NDEgKzAxMDAKU3ViamVjdDogW1BBVENIIDA3LzEwXSBrd2luOiByZWJ1aWxkIGFnYWlu c3QgcXQ1LjE0LjAKCltjaSBza2lwXQotLS0KIHNyY3BrZ3Mva3dpbi90ZW1wbGF0ZSB8IDYgKysr LS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mva3dpbi90ZW1wbGF0ZSBiL3NyY3BrZ3Mva3dpbi90ZW1wbGF0ZQpp bmRleCA4ZjhiMDRiNDMxNy4uNDJmZmU4OTMxOTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva3dpbi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2t3aW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdrd2luJwogcGtnbmFtZT1rd2luCiB2ZXJzaW9uPTUuMTcuNQotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIt REJVSUxEX1RFU1RJTkc9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVz IGdldHRleHQgYnJlZXplIHBrZy1jb25maWciCkBAIC05LDcgKzksNyBAQCBtYWtlZGVwZW5kcz0i cGxhc21hLWZyYW1ld29yay1kZXZlbCBrY211dGlscy1kZXZlbCBrbmV3c3R1ZmYtZGV2ZWwKICBr c2NyZWVubG9ja2VyLWRldmVsIGtpbml0LWRldmVsIHhjYi11dGlsLWN1cnNvci1kZXZlbCBxdDUt bXVsdGltZWRpYS1kZXZlbAogIGtkZWNvcmF0aW9uLWRldmVsIGxpYnhrYmNvbW1vbi1kZXZlbCBs aWJpbnB1dC1kZXZlbCBsaWJTTS1kZXZlbAogIGxpYklDRS1kZXZlbCB4Y2ItdXRpbC13bS1kZXZl bCBxdDUtc2Vuc29ycy1kZXZlbCBsaWJjYXAtZGV2ZWwiCi1kZXBlbmRzPSJicmVlemUgaGljb2xv ci1pY29uLXRoZW1lIGtpbml0IHF0NT49NS4xMy4yPDUuMTMuMyIKK2RlcGVuZHM9ImJyZWV6ZSBo aWNvbG9yLWljb24tdGhlbWUga2luaXQgcXQ1LWNvcmU+PTUuMTQuMTw1LjE0LjIiCiBzaG9ydF9k ZXNjPSJLREUgV2luZG93IG1hbmFnZXIiCiBtYWludGFpbmVyPSJKb2huIDxqb2huekBwb3N0ZW8u bmV0PiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCkBAIC0yOSw3ICsyOSw3IEBAIGVzYWMK IHBvc3RfZXh0cmFjdCgpIHsKIAlfcXQ1X2RlcF92ZXI9IiR7ZGVwZW5kcyMqPj19IgogCV9xdDVf ZGVwX3Zlcj0iJHtfcXQ1X2RlcF92ZXIlPCp9IgotCV9xdDVfdmVyc2lvbj0iJCh4YnBzLXVoZWxw ZXIgdmVyc2lvbiBxdDUpIgorCV9xdDVfdmVyc2lvbj0iJCh4YnBzLXVoZWxwZXIgdmVyc2lvbiBx dDUtY29yZSkiCiAKIAlpZiBbWyAiJHtfcXQ1X3ZlcnNpb24lXyp9IiAhPSAiJHtfcXQ1X2RlcF92 ZXJ9IiBdXTsgdGhlbgogCQllY2hvCgpGcm9tIDI1NjhmMjU0MTM3MjI5MDAxMzVjMmI3YmRhYTcz MWM3NjExZTg4ZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBv c3Rlby5uZXQ+CkRhdGU6IFNhdCwgMTQgRGVjIDIwMTkgMTM6MzE6MTQgKzAxMDAKU3ViamVjdDog W1BBVENIIDA4LzEwXSBwbGFzbWEtZnJhbWV3b3JrOiBhZGQgcGF0Y2ggZm9yIHF0NS4xNAoKLS0t CiBzcmNwa2dzL3BsYXNtYS1mcmFtZXdvcmsvcGF0Y2hlcy9xdDUuMTQucGF0Y2ggfCAxOCArKysr KysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9wbGFzbWEtZnJhbWV3b3JrL3BhdGNoZXMvcXQ1LjE0LnBhdGNo CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wbGFzbWEtZnJhbWV3b3JrL3BhdGNoZXMvcXQ1LjE0LnBh dGNoIGIvc3JjcGtncy9wbGFzbWEtZnJhbWV3b3JrL3BhdGNoZXMvcXQ1LjE0LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jOGIwOGJhMDRiYQotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvcGxhc21hLWZyYW1ld29yay9wYXRjaGVzL3F0NS4xNC5wYXRjaApA QCAtMCwwICsxLDE4IEBACitTb3VyY2U6IEBKb2hubnluYXRvcgorVXBzdHJlYW06IG5vIChOZWVk IHRvIHZlcmlmeSBpZiB0aGlzIGlzbid0IGEgcXQ1IGJ1ZykKK1JlYXNvbjogUUxvY2FsZSgpLnVp TGFuZ3VhZ2VzKCkgaW4gUXQ1LjE0IGNhbiByZXR1cm4gYW4gZW1wdHkgbGlzdCwKKwlpbiBwcmV2 aW91cyBRdCB2ZXJzaW9ucyBpdCBoYWQgYSBtaW5pbXVtIHNpemUgb2Ygb25lIHdpdGgKKwlsb2Nh bGUiQyIgYXMgY29udGVudC4KKworLS0tIHNyYy9kZWNsYXJhdGl2ZWltcG9ydHMvY2FsZW5kYXIv Y2FsZW5kYXIuY3BwCTIwMTktMTEtMDIgMTQ6MDI6MjMuMDAwMDAwMDAwICswMTAwCisrKysgLQky MDE5LTEyLTEzIDE5OjIyOjA5LjE3ODIzNDczMSArMDEwMAorQEAgLTE5OSw3ICsxOTksOCBAQAor ICAgICAvLyBsb2NhbGUgYW5kIHRha2UgdGhlIG1vbnRoIG5hbWUgZnJvbSB0aGF0LgorICAgICAv LworICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTM1Mzcx NQorLSAgICBjb25zdCBRU3RyaW5nIGxhbmcgPSBRTG9jYWxlKCkudWlMYW5ndWFnZXMoKS5hdCgw KTsKKysgICAgY29uc3QgUVN0cmluZ0xpc3QgbGFuZ3VhZ2VzID0gUUxvY2FsZSgpLnVpTGFuZ3Vh Z2VzKCk7CisrICAgIGNvbnN0IFFTdHJpbmcgbGFuZyA9IGxhbmd1YWdlcy5zaXplKCkgPiAwID8g bGFuZ3VhZ2VzLmF0KDApIDogUVN0cmluZygpOworICAgICAvLyBJZiBsYW5nIGlzIGVtcHR5LCBp dCB3aWxsIGNyZWF0ZSBqdXN0IGEgc3lzdGVtIGxvY2FsZQorICAgICBRTG9jYWxlIGxhbmdMb2Nh bGUobGFuZyk7CisgICAgIHJldHVybiBsYW5nTG9jYWxlLnN0YW5kYWxvbmVNb250aE5hbWUobV9k aXNwbGF5ZWREYXRlLm1vbnRoKCkpOwoKRnJvbSAxZTg5MTZhOWI5OWRjOGM5YjZkODdjODc0ZjRi ODlmNzM2MDJiMDIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBw b3N0ZW8ubmV0PgpEYXRlOiBUdWUsIDI4IEphbiAyMDIwIDE4OjAzOjQ3ICswMTAwClN1YmplY3Q6 IFtQQVRDSCAwOS8xMF0gcGxhc21hLWludGVncmF0aW9uOiByZWJ1aWxkIGZvciBxdDUtNS4xNC4x CgotLS0KIHNyY3BrZ3MvcGxhc21hLWludGVncmF0aW9uL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9wbGFzbWEtaW50ZWdyYXRpb24vdGVtcGxhdGUgYi9zcmNwa2dzL3BsYXNtYS1pbnRlZ3Jh dGlvbi90ZW1wbGF0ZQppbmRleCA1YTEwNTlmYmY3NS4uNTU5YTlhYmY1ZmYgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvcGxhc21hLWludGVncmF0aW9uL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcGxhc21h LWludGVncmF0aW9uL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAncGxhc21hLWludGVncmF0aW9uJwogcGtnbmFtZT1wbGFzbWEtaW50ZWdyYXRpb24KIHZlcnNp b249NS4xNy41Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29u ZmlndXJlX2FyZ3M9Ii1EQlVJTERfVEVTVElORz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJh LWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMKCkZyb20g ZDg1OWYzOTU2OWZkMDM4MDMzMTExYzI5ZTQ1Y2I5YThmZDc0ODljMCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogU2F0LCAxNCBEZWMg MjAxOSAxNToxMzozNSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMTBdIHF0NS13ZWJraXQ6IHJl YnVpbGQgYWdhaW5zdCBxdDUuMTQKCltjaSBza2lwXQotLS0KIHNyY3BrZ3MvcXQ1LXdlYmtpdC9w YXRjaGVzL3F0NS4xNC5wYXRjaCAgICAgIHwgOTMgKysrKysrKysrKysrKysrKysrKysKIHNyY3Br Z3MvcXQ1LXdlYmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaC5hcmdzIHwgIDEgKwogc3JjcGtncy9x dDUtd2Via2l0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAgMiArLQogMyBmaWxlcyBjaGFu Z2VkLCA5NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoLmFyZ3MKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2ggYi9zcmNwa2dzL3F0 NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjc5OWQ1M2YxZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUt d2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoCkBAIC0wLDAgKzEsOTMgQEAKK0Zyb20gYzM0NDE4 N2EwOTlmOGZkNzQ5ZGM4NGZmY2MxMjVjMDkyNTEwMzgxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IEtvbnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CitEYXRlOiBU dWUsIDEwIFNlcCAyMDE5IDAzOjUxOjQyICswMzAwCitTdWJqZWN0OiBGaXggY29tcGlsYXRpb24g b2YgSFRUUDIgc2V0dGluZ3Mgd2l0aCBRdCA+PSA1LjE0CisKK1B1YmxpYyBBUEkgUUh0dHAyQ29u ZmlndXJhdGlvbiB3YXMgYWRkZWQsIHNvIHdlIHVzZSBpdCBub3cgaW5zdGVhZCBvZgordWdseSBo YWNrIHJlcXVpcmVkIGZvciBwcmV2aW91cyB2ZXJzaW9ucy4gV29ya2Fyb3VuZCBmb3IgUVRCVUct NzczMDggaXMKK25vIGxvZ2VyIG5lZWRlZCBpbiA1LjE0LCBzbyB3ZSBvbmx5IGVuYWJsZSBzZXJ2 ZXIgcHVzaC4KKworQ2hhbmdlLUlkOiBJM2U2ODE3ZDhmYTI3NGMzYTg0OWYwOWIyM2NhNThmOTMz MThiZTZjNAorLS0tCisgLi4uL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwICAg ICAgIHwgIDYgKysrLS0tCisgLi4uL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0 UXQuY3BwIHwgMjAgKysrKysrKysrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl L3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvU291cmNlL1dl YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKK2luZGV4 IDBkYTQ1ZmJjNzlhNS4uNzkyNDU5NTU4MmFjIDEwMDY0NAorLS0tIGEvU291cmNlL1dlYkNvcmUv cGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKKysrKyBiL1NvdXJj ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCitA QCAtNDEsNyArNDEsNyBAQAorIAorICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorIAorLSNp ZiBVU0UoSFRUUDIpCisrI2lmIFVTRShIVFRQMikgJiYgUVRfVkVSU0lPTiA8IFFUX1ZFUlNJT05f Q0hFQ0soNSwgMTQsIDApCisgCisgI2luY2x1ZGUgPHByaXZhdGUvaHR0cDJwcm90b2NvbF9wLmg+ CisgI2luY2x1ZGUgPGNzdGRsaWI+CitAQCAtNjIsNyArNjIsNyBAQCBQcm90b2NvbFBhcmFtZXRl cnM6OlByb3RvY29sUGFyYW1ldGVycygpCisgCisgUVRfRU5EX05BTUVTUEFDRQorIAorLSNlbmRp ZiAvLyBVU0UoSFRUUDIpCisrI2VuZGlmIC8vIFVTRShIVFRQMikgJiYgUVRfVkVSU0lPTiA8IFFU X1ZFUlNJT05fQ0hFQ0soNSwgMTQsIDApCisgCisgc3RhdGljIGNvbnN0IGludCBnTWF4UmVkaXJl Y3Rpb25zID0gMTA7CisgCitAQCAtNzk3LDcgKzc5Nyw3IEBAIFFOZXR3b3JrUmVwbHkqIFFOZXR3 b3JrUmVwbHlIYW5kbGVyOjpzZW5kTmV0d29ya1JlcXVlc3QoUU5ldHdvcmtBY2Nlc3NNYW5hZ2Vy KiBtCisgICAgIGlmICghbWFuYWdlcikKKyAgICAgICAgIHJldHVybiAwOworIAorLSNpZiBVU0Uo SFRUUDIpCisrI2lmIFVTRShIVFRQMikgJiYgUVRfVkVSU0lPTiA8IFFUX1ZFUlNJT05fQ0hFQ0so NSwgMTQsIDApCisgICAgIHN0YXRpYyBjb25zdCBib29sIGFscG5Jc1N1cHBvcnRlZCA9IFJlc291 cmNlUmVxdWVzdDo6YWxwbklzU3VwcG9ydGVkKCk7CisgICAgIGlmIChhbHBuSXNTdXBwb3J0ZWQg JiYgIW1hbmFnZXItPnByb3BlcnR5KEh0dHAyOjpodHRwMlBhcmFtZXRlcnNQcm9wZXJ0eU5hbWUp LmlzVmFsaWQoKSkgeworICAgICAgICAgSHR0cDI6OlByb3RvY29sUGFyYW1ldGVycyBwYXJhbXM7 CitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJj ZVJlcXVlc3RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291 cmNlUmVxdWVzdFF0LmNwcAoraW5kZXggMmNmMmU3NzUwZGRlLi4zMTA3Mzg0NDliNzUgMTAwNjQ0 CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVz dFF0LmNwcAorKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJj ZVJlcXVlc3RRdC5jcHAKK0BAIC0yOSw3ICsyOSwxMCBAQAorIAorICNpZiBVU0UoSFRUUDIpCisg I2luY2x1ZGUgPFFTc2xTb2NrZXQ+CisrI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVD Syg1LCAxNCwgMCkKKysjaW5jbHVkZSA8UUh0dHAyQ29uZmlndXJhdGlvbj4KKyAjZW5kaWYKKysj ZW5kaWYgLy8gVVNFKEhUVFAyKQorIAorIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAKK0BAIC02NSw2 ICs2OCwxNiBAQCBib29sIFJlc291cmNlUmVxdWVzdDo6YWxwbklzU3VwcG9ydGVkKCkKKyAgICAg cmV0dXJuIFFTc2xTb2NrZXQ6OnNzbExpYnJhcnlWZXJzaW9uTnVtYmVyKCkgPiAweDEwMDAyMDAw TCAmJgorICAgICAgICAgUVNzbFNvY2tldDo6c3NsTGlicmFyeVZlcnNpb25TdHJpbmcoKS5zdGFy dHNXaXRoKFFMYXRpbjFTdHJpbmcoIk9wZW5TU0wiKSk7CisgfQorKworKyNpZiBRVF9WRVJTSU9O ID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMTQsIDApCisrc3RhdGljIFFIdHRwMkNvbmZpZ3VyYXRp b24gY3JlYXRlSHR0cDJDb25maWd1cmF0aW9uKCkKKyt7CisrICAgIFFIdHRwMkNvbmZpZ3VyYXRp b24gcGFyYW1zOworKyAgICBwYXJhbXMuc2V0U2VydmVyUHVzaEVuYWJsZWQodHJ1ZSk7CisrICAg IHJldHVybiBwYXJhbXM7CisrfQorKyNlbmRpZgorKworICNlbmRpZgorIAorIFFOZXR3b3JrUmVx dWVzdCBSZXNvdXJjZVJlcXVlc3Q6OnRvTmV0d29ya1JlcXVlc3QoTmV0d29ya2luZ0NvbnRleHQg KmNvbnRleHQpIGNvbnN0CitAQCAtNzYsOCArODksMTMgQEAgUU5ldHdvcmtSZXF1ZXN0IFJlc291 cmNlUmVxdWVzdDo6dG9OZXR3b3JrUmVxdWVzdChOZXR3b3JraW5nQ29udGV4dCAqY29udGV4dCkg Y28KKyAKKyAjaWYgVVNFKEhUVFAyKQorICAgICBzdGF0aWMgY29uc3QgYm9vbCBOZWdvdGlhdGVI dHRwMkZvckh0dHBzID0gYWxwbklzU3VwcG9ydGVkKCk7CistICAgIGlmIChvcmlnaW5hbFVybC5w cm90b2NvbElzKCJodHRwcyIpICYmIE5lZ290aWF0ZUh0dHAyRm9ySHR0cHMpCisrICAgIGlmIChv cmlnaW5hbFVybC5wcm90b2NvbElzKCJodHRwcyIpICYmIE5lZ290aWF0ZUh0dHAyRm9ySHR0cHMp IHsKKysjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDE0LCAwKQorKyAgICAg ICAgc3RhdGljIGNvbnN0IGF1dG8gcGFyYW1zID0gY3JlYXRlSHR0cDJDb25maWd1cmF0aW9uKCk7 CisrICAgICAgICByZXF1ZXN0LnNldEh0dHAyQ29uZmlndXJhdGlvbihwYXJhbXMpOworKyNlbmRp ZgorICAgICAgICAgcmVxdWVzdC5zZXRBdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpIVFRQMkFs bG93ZWRBdHRyaWJ1dGUsIHRydWUpOworKyAgICB9CisgI2VuZGlmIC8vIFVTRShIVFRQMikKKyAK KyAgICAgY29uc3QgSFRUUEhlYWRlck1hcCAmaGVhZGVycyA9IGh0dHBIZWFkZXJGaWVsZHMoKTsK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaC5hcmdz IGIvc3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoLmFyZ3MKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJlYmExY2IzYzVjCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoLmFyZ3MKQEAgLTAs MCArMSBAQAorLU5wMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Via2l0L3RlbXBsYXRlIGIv c3JjcGtncy9xdDUtd2Via2l0L3RlbXBsYXRlCmluZGV4IGM3YzA5YzEzNzZlLi40YzhiM2Y2NDE0 ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtd2Via2l0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv cXQ1LXdlYmtpdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3F0NS13ZWJraXQnCiBwa2duYW1lPXF0NS13ZWJraXQKIHZlcnNpb249NS4yMTIuMAotcmV2aXNp b249NgorcmV2aXNpb249NwogX3NuYXA9MTU2NTg5NTQ2OQogX3Y9JHt2ZXJzaW9uJS4qfQogd3Jr c3JjPSJxdHdlYmtpdC1ldmVyeXdoZXJlLXNyYy0ke192fSIK --===============0946981468310298198==--