From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 2820 invoked from network); 12 Oct 2022 20:36:01 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 12 Oct 2022 20:36:01 -0000 Content-Type: multipart/mixed; boundary="===============8129020023720369165==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_wire-desktop=3A_update_to_3=2E29=2E2997=2C_electron13=3A_remove_package?= To: ml@inbox.vuxu.org From: paper42 Reply-to: ml@inbox.vuxu.org Message-ID: Date: Wed, 12 Oct 2022 22:36:01 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============8129020023720369165== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IHBhcGVyNDIgYWdhaW5zdCBtYXN0ZXIgb24g dGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyNDIv dm9pZC1wYWNrYWdlcyB3aXJlLWRlc2t0b3AtZWxlY3Ryb24xOQpodHRwczovL2dpdGh1Yi5jb20v dm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzk5MjEKCndpcmUtZGVza3RvcDogdXBkYXRl IHRvIDMuMjkuMjk5NywgZWxlY3Ryb24xMzogcmVtb3ZlIHBhY2thZ2UKPCEtLSBVbmNvbW1lbnQg cmVsZXZhbnQgc2VjdGlvbnMgYW5kIGRlbGV0ZSBvcHRpb25zIHdoaWNoIGFyZSBub3QgYXBwbGlj YWJsZSAtLT4NCg0KIyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQotIEkgdGVzdGVkIHRoZSBjaGFu Z2VzIGluIHRoaXMgUFI6ICoqYnJpZWZseSoqIChJIGRvbid0IGhhdmUgYW4gYWNjb3VudCwgc28g SSBvbmx5IGdvdCB0byB0aGUgbG9naW4gc2NyZWVuKQ0KDQo8IS0tDQojIyMjIE5ldyBwYWNrYWdl DQotIFRoaXMgbmV3IHBhY2thZ2UgY29uZm9ybXMgdG8gdGhlIFtwYWNrYWdlIHJlcXVpcmVtZW50 c10oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9ibG9iL21hc3Rl ci9DT05UUklCVVRJTkcubWQjcGFja2FnZS1yZXF1aXJlbWVudHMpOiAqKllFUyoqfCoqTk8qKg0K LS0+DQoNCjwhLS0gTm90ZTogSWYgdGhlIGJ1aWxkIGlzIGxpa2VseSB0byB0YWtlIG1vcmUgdGhh biAyIGhvdXJzLCBwbGVhc2UgYWRkIGNpIHNraXAgdGFnIGFzIGRlc2NyaWJlZCBpbg0KaHR0cHM6 Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9ibG9iL21hc3Rlci9DT05UUklC VVRJTkcubWQjY29udGludW91cy1pbnRlZ3JhdGlvbg0KYW5kIHRlc3QgYXQgbGVhc3Qgb25lIG5h dGl2ZSBidWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwgYXQgbGVhc3Qgb25lIGNyb3NzIGJ1aWxkLg0K SWdub3JlIHRoaXMgc2VjdGlvbiBpZiB0aGlzIFBSIGlzIG5vdCBza2lwcGluZyBDSS4NCi0tPg0K PCEtLQ0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQotIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5 IGZvciBteSBuYXRpdmUgYXJjaGl0ZWN0dXJlLCAoQVJDSC1MSUJDKQ0KLSBJIGJ1aWx0IHRoaXMg UFIgbG9jYWxseSBmb3IgdGhlc2UgYXJjaGl0ZWN0dXJlcyAoaWYgc3VwcG9ydGVkLiBtYXJrIGNy b3NzYnVpbGRzKToNCiAgLSBhYXJjaDY0LW11c2wNCiAgLSBhcm12N2wNCiAgLSBhcm12NmwtbXVz bA0KLS0+DQoKCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4 L3ZvaWQtcGFja2FnZXMvcHVsbC8zOTkyMS5wYXRjaCBpcyBhdHRhY2hlZA== --===============8129020023720369165== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-wire-desktop-electron19-39921.patch" RnJvbSA3OTIwNjk1NDdiYzA2NTJkOTRmYjVhNTFkOGEwMDkwNzI2MmYxZTc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWwgVmFzaWxlayA8bWljaGFsQHZhc2lsZWsuY3o+CkRh dGU6IFdlZCwgMTIgT2N0IDIwMjIgMjI6MjE6MjYgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0g d2lyZS1kZXNrdG9wOiB1cGRhdGUgdG8gMy4yOS4yOTk3LgoKLS0tCiBzcmNwa2dzL3dpcmUtZGVz a3RvcC90ZW1wbGF0ZSB8IDEwICsrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlv bnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93aXJlLWRlc2t0b3Av dGVtcGxhdGUgYi9zcmNwa2dzL3dpcmUtZGVza3RvcC90ZW1wbGF0ZQppbmRleCBlMjQwMjc5NWYw NzAuLjk0YjVlODg0NjAwNCAxMDA2NDQKLS0tIGEvc3JjcGtncy93aXJlLWRlc2t0b3AvdGVtcGxh dGUKKysrIGIvc3JjcGtncy93aXJlLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsMTYgKzEsMTYgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3dpcmUtZGVza3RvcCcKIHBrZ25hbWU9d2lyZS1kZXNrdG9w Ci12ZXJzaW9uPTMuMjcuMjk0NAordmVyc2lvbj0zLjI5LjI5OTcKIHJldmlzaW9uPTEKIHdya3Ny Yz0iJHtwa2duYW1lfS1saW51eC0ke3ZlcnNpb259IgotaG9zdG1ha2VkZXBlbmRzPSJub2RlanMt bHRzIHlhcm4gZ2l0IgotZGVwZW5kcz0iZWxlY3Ryb24xMyIKK2hvc3RtYWtlZGVwZW5kcz0ibm9k ZWpzIHlhcm4gZ2l0IgorZGVwZW5kcz0iZWxlY3Ryb24xOSIKIHNob3J0X2Rlc2M9IldpcmUgZm9y IGRlc2t0b3AiCiBtYWludGFpbmVyPSJZb3VuZyBKaW4gUGFyayA8eW91bmdqaW5wYXJrMjBAZ21h aWwuY29tPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93 aXJlLmNvbSIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3dpcmVhcHAvd2lyZS1kZXNr dG9wL2FyY2hpdmUvbGludXgvJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT0zNzhjOTQ1ZTY5 MzM4NTU0MDdhYTAzZmU0OWE5MzQ0MDk2NzViZGZjMzcwMzk4YzhmMjFkYTFmZDEzODMyYWY5Citj aGVja3N1bT0wYjcxNGI2NjE4MjdhNzNiZjkxMzcxNzY2YjcwNmEwNDlhZTgzNDdjOWNmMzM3OWQ1 MGI3ZjMyM2VmYWViNDdhCiAKIGNhc2UgIiRYQlBTX01BQ0hJTkUiIGluCiAJeDg2XzY0KnxpNjg2 KikgOzsKQEAgLTMyLDcgKzMyLDcgQEAgZG9faW5zdGFsbCgpIHsKIAl2bWtkaXIgdXNyL2Jpbgog CWNhdCA8PCBFT0YgPiAid2lyZS1kZXNrdG9wLnNoIgogIyEvYmluL3NoCi1leGVjIGVsZWN0cm9u MTMgIi91c3IvbGliL3dpcmUtZGVza3RvcC9hcHAuYXNhciIgIlwkQCIKK2V4ZWMgZWxlY3Ryb24x OSAiL3Vzci9saWIvd2lyZS1kZXNrdG9wL2FwcC5hc2FyIiAiXCRAIgogRU9GCiAJdmJpbiB3aXJl LWRlc2t0b3Auc2ggd2lyZS1kZXNrdG9wCiAJdm1rZGlyIHVzci9zaGFyZS9pY29ucy9oaWNvbG9y LzI1NngyNTYvYXBwcwoKRnJvbSAyNDZkYTRiMDgzM2UyNjJhOTdlODk5ODRiYTQ5ZGIxNTg4ZDNm YjA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWwgVmFzaWxlayA8bWljaGFs QHZhc2lsZWsuY3o+CkRhdGU6IFdlZCwgMTIgT2N0IDIwMjIgMjI6MjI6NTQgKzAyMDAKU3ViamVj dDogW1BBVENIIDIvMl0gZWxlY3Ryb24xMzogcmVtb3ZlIHBhY2thZ2UKCiogdW51c2VkLCBlbGVj dHJvbjE5IGlzIHBhY2thZ2VkCi0tLQogLi4uL2Nocm9taXVtLWRlZmF1bHQtcHRocmVhZC1zdGFj a3NpemUucGF0Y2ggIHwgICAyOSAtCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtY3Jh c2hwYWQucGF0Y2ggfCAgIDIzIC0KIC4uLi9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1kbnMu cGF0Y2ggICAgICB8ICAgMzIgLQogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWZpeGVz LnBhdGNoICAgIHwgIDIxMiAtCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtaGFja3Mu cGF0Y2ggICAgfCAgIDM0IC0KIC4uLi9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1saWJjKysu cGF0Y2ggICB8ICAgNTUgLQogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXNhbmRib3gu cGF0Y2ggIHwgICA5MiAtCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtc3luYy5wYXRj aCAgICAgfCAgIDMwIC0KIC4uLi9jaHJvbWl1bS1tdXNsLXh4eC1wcGM2NGxlLnBhdGNoICAgICAg ICAgICB8ICAyMDIgLQogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1uby1tYWxsaW5mby5wYXRj aCAgIHwgICA1NCAtCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLXJlc29sdmVyLnBhdGNoICAg ICAgfCAgIDM4IC0KIC4uLi9wYXRjaGVzL2Nocm9taXVtLWJyb3dzZXItc2l6ZV90LnBhdGNoICAg ICB8ICAgMTAgLQogLi4uL3BhdGNoZXMvY2hyb21pdW0taGFyZmJ1enotMy4wLjAucGF0Y2ggICAg IHwgICAyMCAtCiAuLi4vZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1saWJjX21hbGxvYy5wYXRjaCAg fCAgIDI2IC0KIC4uLi12OC1tb25vdG9uaWMtcHRocmVhZC1jb250X3RpbWVkd2FpdC5wYXRjaCB8 ICAgMjQgLQogLi4uL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZXhlY2luZm8ucGF0Y2ggIHwg ICA3MiAtCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS1uby1nZXRjb250ZXh0LnBhdGNoICAgICAgfCAg IDI3IC0KIC4uLi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXB5dGhvbjMuMTAucGF0Y2ggICB8ICAg MTkgLQogLi4uL2Nocm9taXVtLXJldmVydC1kcm9wLW9mLXN5c3RlbS1qYXZhLnBhdGNoIHwgICAx NSAtCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2ggfCAgIDEw IC0KIC4uLi9jaHJvbWl1bS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoICAgICB8ICAgMjAg LQogLi4uL2Nocm9taXVtLXNraWEtaGFyZmJ1enotMy4wLjAucGF0Y2ggICAgICAgIHwgIDEwMCAt CiAuLi4vZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zbmRpby5wYXRjaCAgICAgICAgfCAgODg2IC0t LS0KIC4uLi9wYXRjaGVzL2Nocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2ggICAgICB8ICAgMjAg LQogLi4uL3BhdGNoZXMvY2hyb21pdW0td2VicnRjLWluY2x1ZGUucGF0Y2ggICAgIHwgICAxMCAt CiAuLi4vZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtcjAucGF0Y2ggICAgfCAgIDMzIC0K IC4uLi9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1zaXplX3QucGF0Y2ggICAgICB8ICAgMTAgLQog Li4uL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtbGlidnB4LnBhdGNoIHwgICA3MiAtCiAu Li4vY2hyb21pdW0teHh4LXBwYzY0bGUtc3VwcG9ydC5wYXRjaCAgICAgICAgfCAzNzA3IC0tLS0t LS0tLS0tLS0tLS0tCiAuLi4vY2hyb21pdW0teHh4LXBwYzY0bGUtc3dpZnRzaGFkZXIucGF0Y2gg ICAgfCAgIDE4IC0KIC4uLmEtc2NyaXB0LXRvLWxpc3QtcGF0Y2gtdGFyZ2V0cy5wYXRjaC5wYXRj aCB8ICAgNDIgLQogLi4uL3BhdGNoZXMvZWxlY3Ryb24tQnVpbGQtZml4ZXMucGF0Y2gucGF0Y2gg IHwgICA0NyAtCiAuLi5lY3Ryb24tZG9udC1hc3N1bWUtcHl0aG9uLWlzLXB5dGhvbjIucGF0Y2gg fCAgIDE3IC0KIC4uLmxlY3Ryb24tZXhjbHVkZS1jb250ZW50LXRlc3QtcGF0Y2hlcy5wYXRjaCB8 ICAgMTAgLQogLi4uL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5jYyAgICAgIHwg IDE0OCAtCiAuLi4vZmlsZXMvc25kaW8tZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmggfCAg IDY1IC0KIC4uLi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5jYyAgICAgICAgICB8ICAy MDAgLQogLi4uL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmggICAgICAgICAgIHwgICA5 MSAtCiAuLi4vZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmNjICAgICAgICAgfCAgMTgz IC0KIC4uLi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19vdXRwdXQuaCAgICAgICAgICB8ICAgODYg LQogLi4uYV9hdWRpb19saW51eF9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjLnBhdGNoIHwgICA0MyAt CiAuLi5zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfQlVJTEQuZ24ucGF0Y2ggfCAgIDEyIC0K IC4uLmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9hdWRpb19CVUlMRC5nbi5wYXRjaCB8ICAgMjMgLQog Li4udHlfY2hyb21pdW1fbWVkaWFfbWVkaWFfX29wdGlvbnMuZ25pLnBhdGNoIHwgICAxMiAtCiBz cmNwa2dzL2VsZWN0cm9uMTMvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgfCAgMzgyIC0tCiBz cmNwa2dzL2VsZWN0cm9uMTMvdXBkYXRlICAgICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIHNy Y3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZSAgICAgICAgICAgICB8ICAgIDEgKwogNDcg ZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDcyNjMgZGVsZXRpb25zKC0pCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1 bS1kZWZhdWx0LXB0aHJlYWQtc3RhY2tzaXplLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWNyYXNocGFk LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wt cGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWRucy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1maXhlcy5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNo ZXMvY2hyb21pdW0tbXVzbC1oYWNrcy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1saWJjKysucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVz L2Nocm9taXVtLW11c2wtc2FuZGJveC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zeW5jLnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9j aHJvbWl1bS1tdXNsLXh4eC1wcGM2NGxlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1uby1tYWxsaW5mby5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNo ZXMvY2hyb21pdW0tcmVzb2x2ZXIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Vs ZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1icm93c2VyLXNpemVfdC5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVt LWhhcmZidXp6LTMuMC4wLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJv bjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbGliY19tYWxsb2MucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXY4 LW1vbm90b25pYy1wdGhyZWFkLWNvbnRfdGltZWR3YWl0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZXhlY2luZm8u cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS1uby1nZXRjb250ZXh0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tcHl0aG9uMy4xMC5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVt LXJldmVydC1kcm9wLW9mLXN5c3RlbS1qYXZhLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1tZW1iYXJyaWVy LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNo ZXMvY2hyb21pdW0tc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaAogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNraWEtaGFyZmJ1 enotMy4wLjAucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmls ZXMvcGF0Y2hlcy9jaHJvbWl1bS1zbmRpby5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS13ZWJydGMtaW5jbHVkZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxl Y3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1yMC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0 Yy1zaXplX3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmls ZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1saWJ2cHgucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBj NjRsZS1zdXBwb3J0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEz L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtc3dpZnRzaGFkZXIucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9lbGVjdHJv bi1BZGQtYS1zY3JpcHQtdG8tbGlzdC1wYXRjaC10YXJnZXRzLnBhdGNoLnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQnVp bGQtZml4ZXMucGF0Y2gucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9u MTMvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1kb250LWFzc3VtZS1weXRob24taXMtcHl0aG9uMi5w YXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVz L2VsZWN0cm9uLWV4Y2x1ZGUtY29udGVudC10ZXN0LXBhdGNoZXMucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmlsZXMvYXVkaW9fbWFuYWdl cl9vcGVuYnNkLmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVz L3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmNjCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlv X2lucHV0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25k aW8tZmlsZXMvc25kaW9fb3V0cHV0LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVj dHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5oCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLXBhdGNoZXMvbWVkaWFfYXVkaW9fbGlu dXhfYXVkaW9fbWFuYWdlcl9saW51eC5jYy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9t ZWRpYV9CVUlMRC5nbi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9hdWRpb19C VUlMRC5nbi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxl cy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9tZWRpYV9fb3B0aW9u cy5nbmkucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvdGVtcGxh dGUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvdXBkYXRlCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1kZWZh dWx0LXB0aHJlYWQtc3RhY2tzaXplLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211 c2wtcGF0Y2hlcy9jaHJvbWl1bS1kZWZhdWx0LXB0aHJlYWQtc3RhY2tzaXplLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmU0ZDIxZTZlZDguLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLWRlZmF1bHQt cHRocmVhZC1zdGFja3NpemUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0t LS0gYmFzZS90aHJlYWRpbmcvcGxhdGZvcm1fdGhyZWFkX2xpbnV4LmNjLm9yaWcKLSsrKyBiYXNl L3RocmVhZGluZy9wbGF0Zm9ybV90aHJlYWRfbGludXguY2MKLUBAIC05OSArOTksMiBAQCBzaXpl X3QgR2V0RGVmYXVsdFRocmVhZFN0YWNrU2l6ZShjb25zdCBwCi0tICByZXR1cm4gMDsKLSsgIC8v IHVzZSA4bWIgbGlrZSBnbGliYyB0byBhdm9pZCBydW5uaW5nIG91dCBvZiBzcGFjZQotKyAgcmV0 dXJuICgxIDw8IDIzKTsKLS0tLSBjaHJvbWUvYXBwL3NodXRkb3duX3NpZ25hbF9oYW5kbGVyc19w b3NpeC5jYy5vcmlnCi0rKysgY2hyb21lL2FwcC9zaHV0ZG93bl9zaWduYWxfaGFuZGxlcnNfcG9z aXguY2MKLUBAIC0xODQsMTEgKzE4NCwxOSBAQAotICAgZ19zaHV0ZG93bl9waXBlX3JlYWRfZmQg PSBwaXBlZmRbMF07Ci0gICBnX3NodXRkb3duX3BpcGVfd3JpdGVfZmQgPSBwaXBlZmRbMV07Ci0g I2lmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVSKQotKyMgaWYgZGVmaW5lZChfX0dMSUJDX18p Ci0gICBjb25zdCBzaXplX3Qga1NodXRkb3duRGV0ZWN0b3JUaHJlYWRTdGFja1NpemUgPSBQVEhS RUFEX1NUQUNLX01JTiAqIDI7Ci0rIyBlbHNlCi0rICBjb25zdCBzaXplX3Qga1NodXRkb3duRGV0 ZWN0b3JUaHJlYWRTdGFja1NpemUgPSBQVEhSRUFEX1NUQUNLX01JTiAqIDIgKiA4OyAvLyBtYXRj aCB1cCBtdXNscyAyayBQVEhSRUFEX1NUQUNLX01JTiB3aXRoIGdsaWJjcyAxNmsKLSsjIGVuZGlm Ci0gI2Vsc2UKLSAgIC8vIEFTYW4gaW5zdHJ1bWVudGF0aW9uIGJsb2F0cyB0aGUgc3RhY2sgZnJh bWVzLCBzbyB3ZSBuZWVkIHRvIGluY3JlYXNlIHRoZQotICAgLy8gc3RhY2sgc2l6ZSB0byBhdm9p ZCBoaXR0aW5nIHRoZSBndWFyZCBwYWdlLgotKyMgaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gICBj b25zdCBzaXplX3Qga1NodXRkb3duRGV0ZWN0b3JUaHJlYWRTdGFja1NpemUgPSBQVEhSRUFEX1NU QUNLX01JTiAqIDQ7Ci0rIyBlbHNlCi0rICBjb25zdCBzaXplX3Qga1NodXRkb3duRGV0ZWN0b3JU aHJlYWRTdGFja1NpemUgPSBQVEhSRUFEX1NUQUNLX01JTiAqIDQgKiA4OyAvLyBtYXRjaCB1cCBt dXNscyAyayBQVEhSRUFEX1NUQUNLX01JTiB3aXRoIGdsaWJjcyAxNmsKLSsjIGVuZGlmCi0gI2Vu ZGlmCi0gICBTaHV0ZG93bkRldGVjdG9yKiBkZXRlY3RvciA9IG5ldyBTaHV0ZG93bkRldGVjdG9y KAotICAgICAgIGdfc2h1dGRvd25fcGlwZV9yZWFkX2ZkLCBzaHV0ZG93bl9jYWxsYmFjaywgdGFz a19ydW5uZXIpOwotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1w YXRjaGVzL2Nocm9taXVtLW11c2wtY3Jhc2hwYWQucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMv ZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtY3Jhc2hwYWQucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYTBjMDZmM2NhNi4uMDAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1jcmFzaHBh ZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS0tLSB0aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0cmFjZXIuY2MKLSsrKyB0aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0cmFjZXIuY2MKLUBAIC0yNiw2ICsyNiw3IEBA Ci0gCi0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkKLSAjaW5jbHVkZSA8YXNtL2xk dC5oPgotKyNpbmNsdWRlIDxhc20vcHRyYWNlLWFiaS5oPgotICNlbmRpZgotIAotIG5hbWVzcGFj ZSBjcmFzaHBhZCB7Ci0KLS0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQv bGludXgvc3lzL3B0cmFjZS5oCi0rKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29t cGF0L2xpbnV4L3N5cy9wdHJhY2UuaAotQEAgLTE3LDcgKzE3LDkgQEAKLSAKLSAjaW5jbHVkZV9u ZXh0IDxzeXMvcHRyYWNlLmg+Ci0gCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRl IDxzeXMvY2RlZnMuaD4KLSsjZW5kaWYKLSAKLSAvLyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1 Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjQzMwotICNpZiAhZGVmaW5lZChQVFJBQ0VfR0VUX1RI UkVBRF9BUkVBKSAmJiAhZGVmaW5lZChQVF9HRVRfVEhSRUFEX0FSRUEpICYmIFwKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1k bnMucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVt LW11c2wtZG5zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2NjMGFjNmMx OGEuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRj aGVzL2Nocm9taXVtLW11c2wtZG5zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBA QAotLS0tIG5ldC9mZWF0dXJlcy5nbmkJMjAyMS0wNS0yMCAwNDoxNzoxMS4wMDAwMDAwMDAgKzAy MDAKLSsrKyAtCTIwMjEtMDUtMjYgMTY6MDM6MjUuODI2MTEzNjA4ICswMjAwCi1AQCAtMjgsNiAr MjgsOSBAQAotICAgIyBSZXBvcnRpbmcgbm90IHVzZWQgb24gaU9TLgotICAgZW5hYmxlX3JlcG9y dGluZyA9ICFpc19pb3MKLSAKLSsgICMgRm9yY2UgUG9zaXggZG5zIGNvbmZpZwotKyAgZm9yY2Vf cG9zaXhfZG5zID0gdHJ1ZQotKwotICAgIyBJbmNsdWRlcyB0aGUgdHJhbnNwb3J0IHNlY3VyaXR5 IHN0YXRlIHByZWxvYWQgbGlzdC4gVGhpcyBsaXN0IGluY2x1ZGVzCi0gICAjIG1lY2hhbmlzbXMg KGUuZy4gSFNUUywgSFBLUCkgdG8gZW5mb3JjZSB0cnVzdGVkIGNvbm5lY3Rpb25zIHRvIGEgc2ln bmlmaWNhbnQKLSAgICMgc2V0IG9mIGhhcmRjb2RlZCBkb21haW5zLiBXaGlsZSB0aGlzIGxpc3Qg aGFzIGEgc2V2ZXJhbCBodW5kcmVkIEtCIG9mIGJpbmFyeQotLS0tIG5ldC9kbnMvQlVJTEQuZ24J MjAyMS0wNS0yMCAwNDoxNzoxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyAtCTIwMjEtMDUtMjYgMTY6 MDU6MDEuNTEwNjIyMTAyICswMjAwCi1AQCAtMTE0LDcgKzExNCw3IEBACi0gICAgICAgICAiZG5z X2NvbmZpZ19zZXJ2aWNlX2FuZHJvaWQuY2MiLAotICAgICAgICAgImRuc19jb25maWdfc2Vydmlj ZV9hbmRyb2lkLmgiLAotICAgICAgIF0KLS0gICAgfSBlbHNlIGlmIChpc19saW51eCkgewotKyAg ICB9IGVsc2UgaWYgKGlzX2xpbnV4ICYmICFmb3JjZV9wb3NpeF9kbnMpIHsKLSAgICAgICBzb3Vy Y2VzICs9IFsKLSAgICAgICAgICJkbnNfY29uZmlnX3NlcnZpY2VfbGludXguY2MiLAotICAgICAg ICAgImRuc19jb25maWdfc2VydmljZV9saW51eC5oIiwKLUBAIC00MzMsNyArNDMzLDcgQEAKLSAK LSAgIGlmIChpc19hbmRyb2lkKSB7Ci0gICAgIHNvdXJjZXMgKz0gWyAiZG5zX2NvbmZpZ19zZXJ2 aWNlX2FuZHJvaWRfdW5pdHRlc3QuY2MiIF0KLS0gIH0gZWxzZSBpZiAoaXNfbGludXgpIHsKLSsg IH0gZWxzZSBpZiAoaXNfbGludXggJiYgIWZvcmNlX3Bvc2l4X2RucykgewotICAgICBzb3VyY2Vz ICs9IFsgImRuc19jb25maWdfc2VydmljZV9saW51eF91bml0dGVzdC5jYyIgXQotICAgfSBlbHNl IGlmIChpc19wb3NpeCkgewotICAgICBzb3VyY2VzICs9IFsgImRuc19jb25maWdfc2VydmljZV9w b3NpeF91bml0dGVzdC5jYyIgXQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVz L211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWZpeGVzLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJv bjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWZpeGVzLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjhmMmI0NzNjZTMuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtZml4ZXMu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAsMCBAQAotLS0tIC4vdGhpcmRfcGFydHkv bHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oLm9yaWcKLSsrKyAuL3RoaXJkX3BhcnR5L2xzcy9s aW51eF9zeXNjYWxsX3N1cHBvcnQuaAotQEAgLTExMjcsNiArMTEyNywxMiBAQAotICNpZm5kZWYg X19OUl9mYWxsb2NhdGUKLSAjZGVmaW5lIF9fTlJfZmFsbG9jYXRlICAgICAgICAgIDI4NQotICNl bmRpZgotKwotKyN1bmRlZiBfX05SX3ByZWFkCi0rI2RlZmluZSBfX05SX3ByZWFkIF9fTlJfcHJl YWQ2NAotKyN1bmRlZiBfX05SX3B3cml0ZQotKyNkZWZpbmUgX19OUl9wd3JpdGUgX19OUl9wd3Jp dGU2NAotKwotIC8qIEVuZCBvZiB4ODYtNjQgZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19f KQotICNpZiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTMyCi0tLS0gLi90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29u dGV4dF9yZWFkZXIuaC5vcmlnCi0rKysgLi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAotQEAg LTM3LDYgKzM3LDEwIEBACi0gI2luY2x1ZGUgImNvbW1vbi9tZW1vcnkuaCIKLSAjaW5jbHVkZSAi Z29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9mb3JtYXQuaCIKLSAKLSsjaWYgIWRlZmlu ZWQoX19HTElCQ19fKQotKwkjZGVmaW5lIF9saWJjX2Zwc3RhdGUgX2Zwc3RhdGUKLSsjZW5kaWYK LSsKLSBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKLSAKLSAvLyBXcmFwcyBwbGF0Zm9ybS1k ZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFjY2Vzc29ycyB0byB1Y29udGV4dF90IHN0cnVj dHMuCi0tLS0gLi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4 L2VsZl9jb3JlX2R1bXAuaC5vcmlnCi0rKysgLi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaAotQEAgLTM2LDYgKzM2LDcgQEAKLSAj aW5jbHVkZSA8ZWxmLmg+Ci0gI2luY2x1ZGUgPGxpbmsuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+ Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotIAotICNpbmNsdWRlICJjb21tb24vbWVtb3J5X3Jhbmdl LmgiCi0gCi0tLS0gLi9zYW5kYm94L2xpbnV4L3N1aWQvcHJvY2Vzc191dGlsLmgub3JpZwotKysr IC4vc2FuZGJveC9saW51eC9zdWlkL3Byb2Nlc3NfdXRpbC5oCi1AQCAtMTEsNiArMTEsMTQgQEAK LSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSsvLyBT b21lIGFkZGl0aW9uYWwgZnVuY3Rpb25zCi0rIyBkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4 cHJlc3Npb24pIFwKLSsJKF9fZXh0ZW5zaW9uX18JCQlcCi0rCSAoeyBsb25nIGludCBfX3Jlc3Vs dDsJCVwKLSsJICBkbyBfX3Jlc3VsdCA9IChsb25nIGludCkgKGV4cHJlc3Npb24pOyBcCi0rCSAg d2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBlcnJubyA9PSBFSU5UUik7IFwKLSsJICBfX3Jlc3Vs dDsgfSkpCi0rCi0gLy8gVGhpcyBhZGp1c3RzIC9wcm9jL3Byb2Nlc3Mvb29tX3Njb3JlX2FkaiBz byB0aGUgTGludXggT09NIGtpbGxlcgotIC8vIHdpbGwgcHJlZmVyIGNlcnRhaW4gcHJvY2VzcyB0 eXBlcyBvdmVyIG90aGVycy4gVGhlIHJhbmdlIGZvciB0aGUKLSAvLyBhZGp1c3RtZW50IGlzIFst MTAwMCwgMTAwMF0sIHdpdGggWzAsIDEwMDBdIGJlaW5nIHVzZXIgYWNjZXNzaWJsZS4KLS0tLSAu L3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvdHJhcC5jYy5vcmlnCTIwMjAtMDQtMTIgMDg6MjY6 NDAuMTg0MTU5MjE3IC0wNDAwCi0rKysgLi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAu Y2MJMjAyMC0wNC0xMiAwODo0NjoxNi43MzcxOTEyMjIgLTA0MDAKLUBAIC0xNzQsNyArMTc0LDcg QEAKLSAgIC8vIElmIHRoZSB2ZXJzaW9uIG9mIGdsaWJjIGRvZXNuJ3QgaW5jbHVkZSB0aGlzIGlu Zm9ybWF0aW9uIGluCi0gICAvLyBzaWdpbmZvX3QgKG9sZGVyIHRoYW4gMi4xNyksIHdlIG5lZWQg dG8gZXhwbGljaXRseSBjb3B5IGl0Ci0gICAvLyBpbnRvIGFuIGFyY2hfc2lnc3lzIHN0cnVjdHVy ZS4KLS0gIG1lbWNweSgmc2lnc3lzLCAmaW5mby0+X3NpZmllbGRzLCBzaXplb2Yoc2lnc3lzKSk7 Ci0rICBtZW1jcHkoJnNpZ3N5cywgJmluZm8tPl9fc2lmaWVsZHMsIHNpemVvZihzaWdzeXMpKTsK LSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLS0tLSAuL3RoaXJkX3BhcnR5L2Zm bXBlZy9saWJhdnV0aWwvY3B1LmMub3JpZwotKysrIC4vdGhpcmRfcGFydHkvZmZtcGVnL2xpYmF2 dXRpbC9jcHUuYwotQEAgLTM4LDcgKzM4LDYgQEAKLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0g I2VuZGlmCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+ Ci0gI2VuZGlmCi0gI2lmIEhBVkVfVU5JU1REX0gKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci1kaWZm IC0tZ2l0IGEvY2hyb21lL2Jyb3dzZXIvbWV0cmljcy9jaHJvbWVfYnJvd3Nlcl9tYWluX2V4dHJh X3BhcnRzX21ldHJpY3MuY2MgYi9jaHJvbWUvYnJvd3Nlci9tZXRyaWNzL2Nocm9tZV9icm93c2Vy X21haW5fZXh0cmFfcGFydHNfbWV0cmljcy5jYwotLS0tIGNocm9tZS9icm93c2VyL21ldHJpY3Mv Y2hyb21lX2Jyb3dzZXJfbWFpbl9leHRyYV9wYXJ0c19tZXRyaWNzLmNjLm9yaWcJMjAyMS0wMy0x MCAwNzoyMzowMC4xNDU4MTAwODggLTA1MDAKLSsrKyBjaHJvbWUvYnJvd3Nlci9tZXRyaWNzL2No cm9tZV9icm93c2VyX21haW5fZXh0cmFfcGFydHNfbWV0cmljcy5jYwkyMDIxLTAzLTEwIDEwOjU3 OjE5LjQwNTk2MjY3MSAtMDUwMAotQEAgLTU1LDcgKzU1LDkgQEAKLSAvLyBUT0RPKGNyYnVnLmNv bS8xMDUyMzk3KTogUmV2aXNpdCB0aGUgbWFjcm8gZXhwcmVzc2lvbiBvbmNlIGJ1aWxkIGZsYWcg c3dpdGNoCi0gLy8gb2YgbGFjcm9zLWNocm9tZSBpcyBjb21wbGV0ZS4KLSAjaWYgZGVmaW5lZChP U19MSU5VWCkgfHwgQlVJTERGTEFHKElTX0NIUk9NRU9TX0xBQ1JPUykKLSsjaWYgZGVmaW5lZChf X0dMSUJDX18pCi0gI2luY2x1ZGUgPGdudS9saWJjLXZlcnNpb24uaD4KLSsjZW5kaWYKLSAKLSAj aW5jbHVkZSAiYmFzZS9saW51eF91dGlsLmgiCi0gI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJp bmdfc3BsaXQuaCIKLUBAIC0zMTYsNyArMzE4LDcgQEAKLSB2b2lkIFJlY29yZExpbnV4R2xpYmNW ZXJzaW9uKCkgewotIC8vIFRPRE8oY3JidWcuY29tLzEwNTIzOTcpOiBSZXZpc2l0IHRoZSBtYWNy byBleHByZXNzaW9uIG9uY2UgYnVpbGQgZmxhZyBzd2l0Y2gKLSAvLyBvZiBsYWNyb3MtY2hyb21l IGlzIGNvbXBsZXRlLgotLSNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBCVUlMREZMQUcoSVNfQ0hS T01FT1NfTEFDUk9TKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgQlVJTERGTEFHKElTX0NI Uk9NRU9TX0xBQ1JPUykKLSAgIGJhc2U6OlZlcnNpb24gdmVyc2lvbihnbnVfZ2V0X2xpYmNfdmVy c2lvbigpKTsKLSAKLSAgIFVNQUxpbnV4R2xpYmNWZXJzaW9uIGdsaWJjX3ZlcnNpb25fcmVzdWx0 ID0gVU1BX0xJTlVYX0dMSUJDX05PVF9QQVJTRUFCTEU7Ci0tLS0gc2VydmljZXMvZGV2aWNlL3Nl cmlhbC9zZXJpYWxfaW9faGFuZGxlcl9wb3NpeC5jYy5vcmlnCTIwMTktMDctMDMgMTA6NTc6MzIu NTY4MTcxODM1IC0wNDAwCi0rKysgc2VydmljZXMvZGV2aWNlL3NlcmlhbC9zZXJpYWxfaW9faGFu ZGxlcl9wb3NpeC5jYwkyMDE5LTA3LTAzIDEwOjU3OjE2Ljg2Nzk4MzAzMSAtMDQwMAotQEAgLTYs NiArNiw3IEBACi0gCi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDx0ZXJtaW9z Lmg+Ci0rI2luY2x1ZGUgPGFzbS1nZW5lcmljL2lvY3Rscy5oPgotIAotICNpbmNsdWRlIDxhbGdv cml0aG0+Ci0gI2luY2x1ZGUgPHV0aWxpdHk+Ci1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvb3Rz L2luY2x1ZGUvb3BlbnR5cGUtc2FuaXRpc2VyLmggYi90aGlyZF9wYXJ0eS9vdHMvaW5jbHVkZS9v cGVudHlwZS1zYW5pdGlzZXIuaAotLS0tIHRoaXJkX3BhcnR5L290cy9zcmMvaW5jbHVkZS9vcGVu dHlwZS1zYW5pdGlzZXIuaAotKysrIHRoaXJkX3BhcnR5L290cy9zcmMvaW5jbHVkZS9vcGVudHlw ZS1zYW5pdGlzZXIuaAotQEAgLTIwLDYgKzIwLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0 IHVpbnQ2NF90OwotICNkZWZpbmUgaHRvbmwoeCkgX2J5dGVzd2FwX3Vsb25nICh4KQotICNkZWZp bmUgaHRvbnMoeCkgX2J5dGVzd2FwX3VzaG9ydCAoeCkKLSAjZWxzZQotKyNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KLSAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgot ICNlbmRpZgotLS0tIC4vYmFzZS9sb2dnaW5nLmNjLm9yaWcJMjAyMS0wMS0yMCAxMjowOTo1NC4y MjcwMzg3NTcgLTA1MDAKLSsrKyAuL2Jhc2UvbG9nZ2luZy5jYwkyMDIxLTAxLTIwIDEyOjI0OjMy LjYwMDMwMTM1MSAtMDUwMAotQEAgLTU1Nyw4ICs1NTcsNyBAQAotIAotIExvZ01lc3NhZ2U6On5M b2dNZXNzYWdlKCkgewotICAgc2l6ZV90IHN0YWNrX3N0YXJ0ID0gc3RyZWFtXy50ZWxscCgpOwot LSNpZiAhZGVmaW5lZChPRkZJQ0lBTF9CVUlMRCkgJiYgIWRlZmluZWQoT1NfTkFDTCkgJiYgIWRl ZmluZWQoX19VQ0xJQkNfXykgJiYgXAotLSAgICAhZGVmaW5lZChPU19BSVgpCi0rI2lmICFkZWZp bmVkKE9GRklDSUFMX0JVSUxEKSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiBkZWZpbmVkKF9fR0xJ QkNfXykKLSAgIGlmIChzZXZlcml0eV8gPT0gTE9HR0lOR19GQVRBTCAmJiAhYmFzZTo6ZGVidWc6 OkJlaW5nRGVidWdnZWQoKSkgewotICAgICAvLyBJbmNsdWRlIGEgc3RhY2sgdHJhY2Ugb24gYSBm YXRhbCwgdW5sZXNzIGEgZGVidWdnZXIgaXMgYXR0YWNoZWQuCi0gICAgIGJhc2U6OmRlYnVnOjpT dGFja1RyYWNlIHN0YWNrX3RyYWNlOwotLS0tIC4vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwuY2Mub3JpZwotKysrIC4vdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwuY2MKLUBAIC0yOCw3ICsyOCw3IEBACi0g Ly8gRklYTUU6IE9uIE1hYyBPU1ggYW5kIExpbnV4LCB0aGlzIG1ldGhvZCBjYW5ub3QgZXN0aW1h dGUgc3RhY2sgc2l6ZQotIC8vIGNvcnJlY3RseSBmb3IgdGhlIG1haW4gdGhyZWFkLgotIAotLSNl bGlmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQo T1NfRlJFRUJTRCkgfHwgXAotKyNlbGlmIGRlZmluZWQoT1NfTElOVVgpIHx8IGRlZmluZWQoT1Nf QU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCi0gICAgIGRlZmluZWQoT1NfRlVD SFNJQSkKLSAgIC8vIHB0aHJlYWRfZ2V0YXR0cl9ucCgpIGNhbiBmYWlsIGlmIHRoZSB0aHJlYWQg aXMgbm90IGludm9rZWQgYnkKLSAgIC8vIHB0aHJlYWRfY3JlYXRlKCkgKGUuZy4sIHRoZSBtYWlu IHRocmVhZCBvZiBibGlua191bml0dGVzdHMpLgotQEAgLTk2LDcgKzk2LDcgQEAKLSB9Ci0gCi0g dm9pZCogR2V0U3RhY2tTdGFydCgpIHsKLS0jaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmlu ZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCi0rI2lmIGRlZmluZWQo T1NfTElOVVgpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8 fCBcCi0gICAgIGRlZmluZWQoT1NfRlVDSFNJQSkKLSAgIHB0aHJlYWRfYXR0cl90IGF0dHI7Ci0g ICBpbnQgZXJyb3I7Ci0tLS0gLi9uZXQvZG5zL2Ruc19jb25maWdfc2VydmljZV9wb3NpeC5jYy5v cmlnCi0rKysgLi9uZXQvZG5zL2Ruc19jb25maWdfc2VydmljZV9wb3NpeC5jYwotQEAgLTEyMiw3 ICsxMjIsNyBAQAotICAgQ29uZmlnUGFyc2VQb3NpeFJlc3VsdCByZXN1bHQ7Ci0gICBjb25maWct PnVuaGFuZGxlZF9vcHRpb25zID0gZmFsc2U7Ci0gLy8gVE9ETyhmdWNoc2lhKTogVXNlIHJlc19u aW5pdCgpIHdoZW4gaXQncyBpbXBsZW1lbnRlZCBvbiBGdWNoc2lhLgotLSNpZiBkZWZpbmVkKE9T X09QRU5CU0QpIHx8IGRlZmluZWQoT1NfRlVDSFNJQSkKLSsjaWYgZGVmaW5lZChPU19PUEVOQlNE KSB8fCBkZWZpbmVkKE9TX0ZVQ0hTSUEpIHx8IGRlZmluZWQoX0dOVV9TT1VSQ0UpCi0gICAvLyBO b3RlOiByZXNfbmluaXQgaW4gZ2xpYmMgYWx3YXlzIHJldHVybnMgMCBhbmQgc2V0cyBSRVNfSU5J VC4KLSAgIC8vIHJlc19pbml0IGJlaGF2ZXMgdGhlIHNhbWUgd2F5LgotICAgbWVtc2V0KCZfcmVz LCAwLCBzaXplb2YoX3JlcykpOwotLS0tIHRoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3Bh cnR5L2xsdm0tc3ViemVyby9saWIvU3VwcG9ydC9Vbml4L1NpZ25hbHMuaW5jLm9yaWcJMjAxOS0w Ni0xOCAxMTo1MToxNy4wMDAwMDAwMDAgLTA0MDAKLSsrKyB0aGlyZF9wYXJ0eS9zd2lmdHNoYWRl ci90aGlyZF9wYXJ0eS9sbHZtLXN1Ynplcm8vbGliL1N1cHBvcnQvVW5peC9TaWduYWxzLmluYwky MDE5LTA3LTAzIDEyOjMyOjUwLjkzODc1ODE4NiAtMDQwMAotQEAgLTI1LDcgKzI1LDcgQEAKLSAj aW5jbHVkZSAibGx2bS9TdXBwb3J0L3Jhd19vc3RyZWFtLmgiCi0gI2luY2x1ZGUgPGFsZ29yaXRo bT4KLSAjaW5jbHVkZSA8c3RyaW5nPgotLSNpZiBIQVZFX0VYRUNJTkZPX0gKLSsjaWYgSEFWRV9F WEVDSU5GT19IICYmIGRlZmluZWQoX19HTElCQ19fKQotICMgaW5jbHVkZSA8ZXhlY2luZm8uaD4g ICAgICAgICAvLyBGb3IgYmFja3RyYWNlKCkuCi0gI2VuZGlmCi0gI2lmIEhBVkVfU0lHTkFMX0gK LUBAIC01Miw2ICs1Miw3IEBACi0gI2luY2x1ZGUgPHVud2luZC5oPgotICNlbHNlCi0gI3VuZGVm IEhBVkVfX1VOV0lORF9CQUNLVFJBQ0UKLSsjdW5kZWYgSEFWRV9CQUNLVFJBQ0UKLSAjZW5kaWYK LSAjZW5kaWYKLSAKLS0tLSB0aGlyZF9wYXJ0eS9uYXNtL25hc21saWIvcmVhbHBhdGguYy5vcmln CTIwMTktMDctMDMgMTI6MjM6MDUuMDIxOTQ5ODk1IC0wNDAwCi0rKysgdGhpcmRfcGFydHkvbmFz bS9uYXNtbGliL3JlYWxwYXRoLmMJMjAxOS0wNy0wMyAxMjoyNDoyNC4yNDY4NjI2NjUgLTA0MDAK LUBAIC00OSw3ICs0OSw3IEBACi0gCi0gI2luY2x1ZGUgIm5hc21saWIuaCIKLSAKLS0jaWZkZWYg SEFWRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotIAot IC8qCi0gICogR05VLXNwZWNpZmljLCBidXQgYXZvaWRzIHRoZSByZWFscGF0aCguLi4sIE5VTEwp Ci0tLS0gdGhpcmRfcGFydHkvcGVyZmV0dG8vaW5jbHVkZS9wZXJmZXR0by9leHQvYmFzZS90aHJl YWRfdXRpbHMuaAotKysrIHRoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1ZGUvcGVyZmV0dG8vZXh0 L2Jhc2UvdGhyZWFkX3V0aWxzLmgKLUBAIC0yOSw3ICsyOSw3IEBACi0gI2luY2x1ZGUgPGFsZ29y aXRobT4KLSAjZW5kaWYKLSAKLS0jaWYgUEVSRkVUVE9fQlVJTERGTEFHKFBFUkZFVFRPX09TX0FO RFJPSUQpCi0rI2lmIDEKLSAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+Ci0gI2VuZGlmCi0gCi1AQCAt NTgsNyArNTgsNyBAQCBpbmxpbmUgYm9vbCBNYXliZVNldFRocmVhZE5hbWUoY29uc3Qgc3RkOjpz dHJpbmcmIG5hbWUpIHsKLSAKLSBpbmxpbmUgYm9vbCBHZXRUaHJlYWROYW1lKHN0ZDo6c3RyaW5n JiBvdXRfcmVzdWx0KSB7Ci0gICBjaGFyIGJ1ZlsxNl0gPSB7fTsKLS0jaWYgUEVSRkVUVE9fQlVJ TERGTEFHKFBFUkZFVFRPX09TX0FORFJPSUQpCi0rI2lmIDEKLSAgIGlmIChwcmN0bChQUl9HRVRf TkFNRSwgYnVmKSAhPSAwKQotICAgICByZXR1cm4gZmFsc2U7Ci0gI2Vsc2UKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1oYWNr cy5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0t bXVzbC1oYWNrcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI0ZTk2OTVh OWQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0 Y2hlcy9jaHJvbWl1bS1tdXNsLWhhY2tzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAs MCBAQAotLS0tIGJhc2UvZGVidWcvc3RhY2tfdHJhY2UuY2Mub3JpZwkyMDE4LTEyLTA4IDE0OjEx OjI1LjMwMzQ3NTExNiArMDEwMAotKysrIGJhc2UvZGVidWcvc3RhY2tfdHJhY2UuY2MJMjAxOC0x Mi0wOCAxODowMDo0My44NzQ5NDY5OTkgKzAxMDAKLUBAIC0yMjksNyArMjI5LDcgQEAKLSB9Ci0g c3RkOjpzdHJpbmcgU3RhY2tUcmFjZTo6VG9TdHJpbmdXaXRoUHJlZml4KGNvbnN0IGNoYXIqIHBy ZWZpeF9zdHJpbmcpIGNvbnN0IHsKLSAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLS0jaWYg IWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSsjaWYgZGVmaW5lZChfX0dM SUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0gICBPdXRwdXRUb1N0cmVhbVdpdGhQcmVmaXgoJnN0 cmVhbSwgcHJlZml4X3N0cmluZyk7Ci0gI2VuZGlmCi0gICByZXR1cm4gc3RyZWFtLnN0cigpOwot LS0tIG5ldC9zb2NrZXQvdWRwX3NvY2tldF9wb3NpeC5jYy5vcmlnCTIwMTktMDctMDMgMTM6MTM6 NDYuMDM0MzQyNjQ5IC0wNDAwCi0rKysgbmV0L3NvY2tldC91ZHBfc29ja2V0X3Bvc2l4LmNjCTIw MTktMDctMDMgMTM6MjM6NTMuMTE3MDgxOTA5IC0wNDAwCi1AQCAtMTE5NCw3ICsxMTk0LDcgQEAK LSAgICAgbXNnX2lvdi0+cHVzaF9iYWNrKHtjb25zdF9jYXN0PGNoYXIqPihidWZmZXItPmRhdGEo KSksIGJ1ZmZlci0+bGVuZ3RoKCl9KTsKLSAgIG1zZ3ZlYy0+cmVzZXJ2ZShidWZmZXJzLnNpemUo KSk7Ci0gICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGJ1ZmZlcnMuc2l6ZSgpOyBqKyspCi0tICAg IG1zZ3ZlYy0+cHVzaF9iYWNrKHt7bnVsbHB0ciwgMCwgJm1zZ19pb3Zbal0sIDEsIG51bGxwdHIs IDAsIDB9LCAwfSk7Ci0rICAgIG1zZ3ZlYy0+cHVzaF9iYWNrKHt7bnVsbHB0ciwgMCwgJm1zZ19p b3Zbal0sIDEsIDAsIDAsIDB9LCAwfSk7Ci0gICBpbnQgcmVzdWx0ID0gSEFORExFX0VJTlRSKFNl bmRtbXNnKGZkLCAmbXNndmVjWzBdLCBidWZmZXJzLnNpemUoKSwgMCkpOwotICAgU2VuZFJlc3Vs dCBzZW5kX3Jlc3VsdCgwLCAwLCBzdGQ6Om1vdmUoYnVmZmVycykpOwotICAgaWYgKHJlc3VsdCA8 IDApIHsKLS0tLSBiYXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNjICAgMjAyMS0wNS0yNSAwMDowNToz MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyAtICAgMjAyMS0wNS0yNyAxMzo0Njo0My43NDAzODAxNDAg KzAyMDAKLUBAIC0yMTcsNyArMjE3LDkgQEAKLSB9Ci0gCi0gdm9pZCBTdGFja1RyYWNlOjpPdXRw dXRUb1N0cmVhbShzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0rI2lmIGRlZmluZWQoX19HTElC Q19fKQotICAgT3V0cHV0VG9TdHJlYW1XaXRoUHJlZml4KG9zLCBudWxscHRyKTsKLSsjZW5kaWYK LSB9Ci0gCi0gc3RkOjpzdHJpbmcgU3RhY2tUcmFjZTo6VG9TdHJpbmcoKSBjb25zdCB7CmRpZmYg LS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11 c2wtbGliYysrLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9j aHJvbWl1bS1tdXNsLWxpYmMrKy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDg4ZDgwZmFkNTJiLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVz L211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWxpYmMrKy5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDU1ICswLDAgQEAKLWRpZmYgLS1naXQgYS9idWlsZHRvb2xzL3RoaXJkX3BhcnR5L2xpYmMr Ky90cnVuay9pbmNsdWRlL2xvY2FsZSBiL2J1aWxkdG9vbHMvdGhpcmRfcGFydHkvbGliYysrL3Ry dW5rL2luY2x1ZGUvbG9jYWxlCi1pbmRleCBkMjlhMmRjLi41Mzk5OGJjIDEwMDY0NAotLS0tIGJ1 aWxkdG9vbHMvdGhpcmRfcGFydHkvbGliYysrL3RydW5rL2luY2x1ZGUvbG9jYWxlCi0rKysgYnVp bGR0b29scy90aGlyZF9wYXJ0eS9saWJjKysvdHJ1bmsvaW5jbHVkZS9sb2NhbGUKLUBAIC0xMSw2 ICsxMSwxNSBAQAotICNpZm5kZWYgX0xJQkNQUF9MT0NBTEUKLSAjZGVmaW5lIF9MSUJDUFBfTE9D QUxFCi0gCi0rLy8gbXVzbCBkb2Vzbid0IGRlZmluZSBfbCAod2l0aCBsb2NhbGUpIHZhcmlhbnRz IG9mIGZ1bmN0aW9ucywgYXMgaXQgb25seSBzdXBwb3J0cyBVVEYtOC4KLSsvLyB3ZSBjYW4gc2lt cGx5IG1ha2UgbWFjcm9zIHRoYXQgd2lsbCBjYWxsIHRoZSBub24tbG9jYWxhdGVkIG9uZXMgaWYg d2UncmUgdXNpbmcgbXVzbCwgb3IgcmF0aGVyIG5vdC11c2luZyBzb21ldGhpbmcgdGhhdCBoYXMg dGhlIF9sIG9uZXMuCi0rLy8gY291bGRuJ3QgZmluZCBhbnl0aGluZyBnbGliYyAjZGVmaW5lcyB3 aGVuIGl0IGNyZWF0ZXMgc3RydG91bGxfbCAodGhhdCBpdCBkb2Vzbid0IHVuZGVmaW5lIGEgZmV3 IGxpbmVzIGxhdGVyKSwgc28gbGV0J3MgdGVzdCBhZ2FpbnN0IGdsaWJjIGFuZCBnbGliYy1saWtl cy4KLSsvLyBhbG1vc3QgYWxsIGdsaWJjLWxpa2VzIGRlZmluZSBfX0dOVV9MSUJSQVJZX18gZm9y IGNvbXBhdGliaWxpdHkKLSsjaWZuZGVmIF9fR05VX0xJQlJBUllfXwotKyNkZWZpbmUgc3RydG91 bGxfbChBLCBCLCBDLCBMT0MpIHN0cnRvdWxsKEEsQixDKQotKyNkZWZpbmUgc3RydG9sbF9sKEEs IEIsIEMsIExPQykgc3RydG9sbChBLEIsQykKLSsjZW5kaWYKLSsKLSAvKgotICAgICBsb2NhbGUg c3lub3BzaXMKLSAKLWRpZmYgLS1naXQgYS9idWlsZHRvb2xzL3RoaXJkX3BhcnR5L2xpYmMrKy90 cnVuay9zcmMvbG9jYWxlLmNwcCBiL2J1aWxkdG9vbHMvdGhpcmRfcGFydHkvbGliYysrL3RydW5r L3NyYy9sb2NhbGUuY3BwCi1pbmRleCA0MTYzYzJjLi4zZDE5MDJhIDEwMDY0NAotLS0tIGEvYnVp bGR0b29scy90aGlyZF9wYXJ0eS9saWJjKysvdHJ1bmsvc3JjL2xvY2FsZS5jcHAKLSsrKyBidWls ZHRvb2xzL3RoaXJkX3BhcnR5L2xpYmMrKy90cnVuay9zcmMvbG9jYWxlLmNwcAotQEAgLTEwMjgs MTEgKzEwMjgsMTEgQEAgY3R5cGU8Y2hhcj46OmRvX25hcnJvdyhjb25zdCBjaGFyX3R5cGUqIGxv dywgY29uc3QgY2hhcl90eXBlKiBoaWdoLCBjaGFyIGRmYXVsdCwKLSAgICAgcmV0dXJuIGxvdzsK LSB9Ci0gCi0tI2lmIGRlZmluZWQoX19FTVNDUklQVEVOX18pCi0rLy8jaWYgZGVmaW5lZChfX0VN U0NSSVBURU5fXykKLSBleHRlcm4gIkMiIGNvbnN0IHVuc2lnbmVkIHNob3J0ICoqIF9fY3R5cGVf Yl9sb2MoKTsKLSBleHRlcm4gIkMiIGNvbnN0IGludCAqKiBfX2N0eXBlX3RvbG93ZXJfbG9jKCk7 Ci0gZXh0ZXJuICJDIiBjb25zdCBpbnQgKiogX19jdHlwZV90b3VwcGVyX2xvYygpOwotLSNlbmRp ZgotKy8vI2VuZGlmCi0gCi0gI2lmZGVmIF9MSUJDUFBfUFJPVklERVNfREVGQVVMVF9SVU5FX1RB QkxFCi0gY29uc3QgY3R5cGU8Y2hhcj46Om1hc2sqCi1AQCAtMTEzNiwxMiArMTEzNiwxMCBAQCBj dHlwZTxjaGFyPjo6Y2xhc3NpY190YWJsZSgpICBfTk9FWENFUFQKLSAjZWxpZiBkZWZpbmVkKF9B SVgpCi0gICAgIHJldHVybiAoY29uc3QgdW5zaWduZWQgaW50ICopX19sY19jdHlwZV9wdHItPm9i ai0+bWFzazsKLSAjZWxzZQotLSAgICAvLyBQbGF0Zm9ybSBub3Qgc3VwcG9ydGVkOiBhYm9ydCBz byB0aGUgcGVyc29uIGRvaW5nIHRoZSBwb3J0IGtub3dzIHdoYXQgdG8KLS0gICAgLy8gZml4Ci0t IyB3YXJuaW5nICBjdHlwZTxjaGFyPjo6Y2xhc3NpY190YWJsZSgpIGlzIG5vdCBpbXBsZW1lbnRl ZAotLSAgICBwcmludGYoImN0eXBlPGNoYXI+OjpjbGFzc2ljX3RhYmxlKCkgaXMgbm90IGltcGxl bWVudGVkXG4iKTsKLS0gICAgYWJvcnQoKTsKLS0gICAgcmV0dXJuIE5VTEw7Ci0rLy8gbm90IHN1 cmUgYW55IG90aGVyIGxpYmMgbGlrZSB0aGlzIGV4aXN0cywgYnV0IHRoZXJlIGlzIG5vIHdheSB0 byBkaWZmZXJlbnRpYXRlIG11c2wgYXMgb2YgcmlnaHQgbm93Ci0rLy8gdG8gYmUgZmFpciwgd2l0 aCB0aGUgY2hhbmdlIGFib3ZlLCB0aGlzIHNob3VsZCBhbHdheXMgd29yawotKy8vIGFsc28sICN3 YXJuaW5nIGlzIGEgZ2NjIGV4dGVuc2lvbgotKyAgICByZXR1cm4gKGNvbnN0IHVuc2lnbmVkIGxv bmcgKikqX19jdHlwZV9iX2xvYygpOwotICNlbmRpZgotIH0KLSAjZW5kaWYKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zYW5k Ym94LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1 bS1tdXNsLXNhbmRib3gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMGJi N2JiZDI5Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNs LXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zYW5kYm94LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs OTIgKzAsMCBAQAotLS0tIC4vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2Nh bGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2Mub3JpZwkyMDE5LTA3LTAzIDExOjUzOjIxLjIx MzQ3OTczNiAtMDQwMAotKysrIC4vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5 c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MJMjAxOS0wNy0wMyAxMTo1NzowMS4zMDQ5 OTgyNTMgLTA0MDAKLUBAIC0xNDAsMzEgKzE0MCwxNCBAQAotIFJlc3VsdEV4cHIgUmVzdHJpY3RD bG9uZVRvVGhyZWFkc0FuZEVQRVJNRm9yaygpIHsKLSAgIGNvbnN0IEFyZzx1bnNpZ25lZCBsb25n PiBmbGFncygwKTsKLSAKLS0gIC8vIFRPRE8obWRlbXBza3kpOiBFeHRlbmQgRFNMIHRvIHN1cHBv cnQgKGZsYWdzICYgfm1hc2sxKSA9PSBtYXNrMi4KLS0gIGNvbnN0IHVpbnQ2NF90IGtBbmRyb2lk Q2xvbmVNYXNrID0gQ0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05FX0ZJTEVTIHwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPTkVfU0lHSEFORCB8IENMT05FX1RIUkVB RCB8Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT05FX1NZU1ZTRU07 Ci0tICBjb25zdCB1aW50NjRfdCBrT2Jzb2xldGVBbmRyb2lkQ2xvbmVNYXNrID0ga0FuZHJvaWRD bG9uZU1hc2sgfCBDTE9ORV9ERVRBQ0hFRDsKLSsgIGNvbnN0IGludCByZXF1aXJlZCA9IENMT05F X1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8IENMT05FX1NJR0hBTkQgfAotKyAgICAgICAg ICAgICAgICAgICAgICAgQ0xPTkVfVEhSRUFEIHwgQ0xPTkVfU1lTVlNFTTsKLSsgIGNvbnN0IGlu dCBzYWZlID0gQ0xPTkVfU0VUVExTIHwgQ0xPTkVfUEFSRU5UX1NFVFRJRCB8IENMT05FX0NISUxE X0NMRUFSVElEIHwgCi0rICAgICAgICAgICAgICAgICAgIENMT05FX0RFVEFDSEVEOwotKyAgY29u c3QgQm9vbEV4cHIgdGhyZWFkX2Nsb25lX29rID0gKGZsYWdzJn5zYWZlKT09cmVxdWlyZWQ7Ci0g Ci0tICBjb25zdCB1aW50NjRfdCBrR2xpYmNQdGhyZWFkRmxhZ3MgPQotLSAgICAgIENMT05FX1ZN IHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8IENMT05FX1NJR0hBTkQgfCBDTE9ORV9USFJFQUQg fAotLSAgICAgIENMT05FX1NZU1ZTRU0gfCBDTE9ORV9TRVRUTFMgfCBDTE9ORV9QQVJFTlRfU0VU VElEIHwgQ0xPTkVfQ0hJTERfQ0xFQVJUSUQ7Ci0tICBjb25zdCBCb29sRXhwciBnbGliY190ZXN0 ID0gZmxhZ3MgPT0ga0dsaWJjUHRocmVhZEZsYWdzOwotLQotLSAgY29uc3QgQm9vbEV4cHIgYW5k cm9pZF90ZXN0ID0KLS0gICAgICBBbnlPZihmbGFncyA9PSBrQW5kcm9pZENsb25lTWFzaywgZmxh Z3MgPT0ga09ic29sZXRlQW5kcm9pZENsb25lTWFzaywKLS0gICAgICAgICAgICBmbGFncyA9PSBr R2xpYmNQdGhyZWFkRmxhZ3MpOwotLQotLSAgLy8gVGhlIGZvbGxvd2luZyB0d28gZmxhZ3MgYXJl IHRoZSB0d28gaW1wb3J0YW50IGZsYWdzIGluIGFueSB2Zm9yay1lbXVsYXRpbmcKLS0gIC8vIGNs b25lIGNhbGwuIEVQRVJNIGFueSBjbG9uZSBjYWxsIHRoYXQgY29udGFpbnMgYm90aCBvZiB0aGVt LgotLSAgY29uc3QgdWludDY0X3Qga0ltcG9ydGFudENsb25lVmZvcmtGbGFncyA9IENMT05FX1ZG T1JLIHwgQ0xPTkVfVk07Ci0tCi0tICBjb25zdCBCb29sRXhwciBpc19mb3JrX29yX2Nsb25lX3Zm b3JrID0KLS0gICAgICBBbnlPZigoZmxhZ3MgJiAoQ0xPTkVfVk0gfCBDTE9ORV9USFJFQUQpKSA9 PSAwLAotLSAgICAgICAgICAgIChmbGFncyAmIGtJbXBvcnRhbnRDbG9uZVZmb3JrRmxhZ3MpID09 IGtJbXBvcnRhbnRDbG9uZVZmb3JrRmxhZ3MpOwotLQotLSAgcmV0dXJuIElmKElzQW5kcm9pZCgp ID8gYW5kcm9pZF90ZXN0IDogZ2xpYmNfdGVzdCwgQWxsb3coKSkKLS0gICAgICAuRWxzZUlmKGlz X2Zvcmtfb3JfY2xvbmVfdmZvcmssIEVycm9yKEVQRVJNKSkKLSsgIHJldHVybiBJZih0aHJlYWRf Y2xvbmVfb2ssIEFsbG93KCkpCi0rICAgICAgLkVsc2VJZigoZmxhZ3MgJiAoQ0xPTkVfVk0gfCBD TE9ORV9USFJFQUQpKSA9PSAwLCBFcnJvcihFUEVSTSkpCi0gICAgICAgLkVsc2UoQ3Jhc2hTSUdT WVNDbG9uZSgpKTsKLSB9Ci0gCi0tLS0gLi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBl cnMvc3lzY2FsbF9zZXRzLmNjLm9yaWcKLSsrKyAuL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9zeXNjYWxsX3NldHMuY2MKLUBAIC00OTQsNiArNDk0LDcgQEAKLSAgICAgY2FzZSBf X05SX21sb2NrOgotICAgICBjYXNlIF9fTlJfbXVubG9jazoKLSAgICAgY2FzZSBfX05SX211bm1h cDoKLSsgICAgY2FzZSBfX05SX21yZW1hcDoKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgY2Fz ZSBfX05SX21hZHZpc2U6Ci0gICAgIGNhc2UgX19OUl9taW5jb3JlOgotQEAgLTUwOSw3ICs1MTAs NiBAQAotICAgICBjYXNlIF9fTlJfbW9kaWZ5X2xkdDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05S X21wcm90ZWN0OgotLSAgICBjYXNlIF9fTlJfbXJlbWFwOgotICAgICBjYXNlIF9fTlJfbXN5bmM6 Ci0gICAgIGNhc2UgX19OUl9tdW5sb2NrYWxsOgotICAgICBjYXNlIF9fTlJfcmVhZGFoZWFkOgot ZGlmZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3Nl dHMuY2MgYi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNj Ci1pbmRleCA4MGYwMmMwLi4yMWZiZTIxIDEwMDY0NAotLS0tIHNhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKLSsrKyBzYW5kYm94L2xpbnV4L3NlY2NvbXAt YnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCi1AQCAtMzczLDYgKzM3Myw3IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7Ci0gI2lm IGRlZmluZWQoX19pMzg2X18pCi0gICAgIGNhc2UgX19OUl93YWl0cGlkOgotICNlbmRpZgotKyAg ICBjYXNlIF9fTlJfc2V0X3RpZF9hZGRyZXNzOgotICAgICAgIHJldHVybiB0cnVlOwotICAgICBj YXNlIF9fTlJfY2xvbmU6ICAvLyBTaG91bGQgYmUgcGFyYW1ldGVyLXJlc3RyaWN0ZWQuCi0gICAg IGNhc2UgX19OUl9zZXRuczogIC8vIFByaXZpbGVnZWQuCi1AQCAtMzg1LDcgKzM4Niw2IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7 Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX21pcHNfXykKLSAgICAgY2FzZSBfX05SX3NldF90aHJlYWRfYXJlYToKLSAjZW5kaWYKLS0g ICAgY2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKLSAgICAgY2FzZSBfX05SX3Vuc2hhcmU6Ci0g I2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICAgY2Fz ZSBfX05SX3Zmb3JrOgotLS0tIHNhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xp Y3lfbGludXguY2MKLSsrKyBzYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5 X2xpbnV4LmNjCi1AQCAtMTAwLDkgKzEwMCw5IEBACi0gICAgIGNhc2UgX19OUl91bmFtZToKLSAg ICAgY2FzZSBfX05SX3NjaGVkX2dldHBhcmFtOgotICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0c2No ZWR1bGVyOgotKyAgICBjYXNlIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyOgotICAgICAgIHJldHVy biBBbGxvdygpOwotICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0YWZmaW5pdHk6Ci0tICAgIGNhc2Ug X19OUl9zY2hlZF9zZXRzY2hlZHVsZXI6Ci0gICAgICAgcmV0dXJuIFJlc3RyaWN0U2NoZWRUYXJn ZXQoR2V0UG9saWN5UGlkKCksIHN5c25vKTsKLSAgICAgY2FzZSBfX05SX3BybGltaXQ2NDoKLSAg ICAgICAvLyBTZWUgY3JidWcuY29tLzY2MjQ1MCBhbmQgc2V0cmxpbWl0IGNvbW1lbnQgYWJvdmUu CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9t aXVtLW11c2wtc3luYy5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNo ZXMvY2hyb21pdW0tbXVzbC1zeW5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBiYzJmYTE5MzdiZDMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmls ZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtc3luYy5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDMwICswLDAgQEAKLS0tLSB0aGlyZF9wYXJ0eS9saWJzeW5jL3NyYy9pbmNsdWRlL3N5bmMv c3luYy5oLm9yaWcJMjAyMC0wMi0yMSAwNzo0MzozMy43NDgzMjUxNzUgLTA1MDAKLSsrKyB0aGly ZF9wYXJ0eS9saWJzeW5jL3NyYy9pbmNsdWRlL3N5bmMvc3luYy5oCTIwMjAtMDItMjEgMDc6NDQ6 MDcuMjg4MzI4Nzg0IC0wNTAwCi1AQCAtMTksMTIgKzE5LDE2IEBACi0gI2lmbmRlZiBfX1NZU19D T1JFX1NZTkNfSAotICNkZWZpbmUgX19TWVNfQ09SRV9TWU5DX0gKLSAKLSsjaWYgZGVmaW5lZChf X0dMSUJDX18pCi0gI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxz dGRpbnQuaD4KLSAKLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xT Ci0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0gc3RydWN0 IHN5bmNfbGVnYWN5X21lcmdlX2RhdGEgewotICBpbnQzMl90IGZkMjsKLUBAIC0xNTgsNiArMTYy LDggQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN5bmNfcHRf aW5mbyAqaXRyKTsKLSB2b2lkIHN5bmNfZmVuY2VfaW5mb19mcmVlKHN0cnVjdCBzeW5jX2ZlbmNl X2luZm9fZGF0YSAqaW5mbyk7Ci0gCi0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMK LSt9Ci0rI2VuZGlmCi0gCi0gI2VuZGlmIC8qIF9fU1lTX0NPUkVfU1lOQ19IICovCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wt eHh4LXBwYzY0bGUucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVz L2Nocm9taXVtLW11c2wteHh4LXBwYzY0bGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGJmYTk5ZDg4YTliMy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC14eHgtcHBjNjRsZS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0tLS0gYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NfY29uZmlnLmgJMjAyMS0wNS0yNSAwMDowNTozMS4w MDAwMDAwMDAgKzAyMDAKLSsrKyAtCTIwMjEtMDUtMjYgMjI6MjM6NDcuMTcyOTQwODI2ICswMjAw Ci1AQCAtNzEsNyArNzEsOCBAQAotIC8vIFJFRl9DT1VOVF9BVF9FTkRfT0ZfQUxMT0NBVElPTiBk b2VzLiBJbiB0aGlzIGNhc2UgdGhlIHJlZmNvdW50IG92ZXJsYXBzIHdpdGgKLSAvLyB0aGUgbmV4 dCBwb2ludGVyIHNoYWRvdyBmb3IgdGhlIHNtYWxsZXN0IGJ1Y2tldC4KLSAjaWYgIShkZWZpbmVk KE9TX01BQykgJiYgZGVmaW5lZChBUkNIX0NQVV9BUk02NCkpICYmIFwKLS0gICAgIUJVSUxERkxB RyhSRUZfQ09VTlRfQVRfRU5EX09GX0FMTE9DQVRJT04pCi0rICAgICFCVUlMREZMQUcoUkVGX0NP VU5UX0FUX0VORF9PRl9BTExPQ0FUSU9OKSAmJiBcCi0rICAgICFkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gI2RlZmluZSBQQV9IQVNfRlJFRUxJU1RfSEFSREVOSU5HCi0gI2VuZGlmCi0KLWRpZmYg LS1naXQgc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmggc2FuZGJveC9saW51 eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKLWluZGV4IGE2YWVjNTQ0ZS4uMmE0YTdmMWJjIDEw MDY0NAotLS0tIHNhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi0rKysgc2Fu ZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKLUBAIC0xNiw3ICsxNiw3IEBACi0g I2lmIGRlZmluZWQoX19taXBzX18pCi0gLy8gc3lzL3VzZXIuaCBpbiBlZ2xpYmMgbWlzc2VzIHNp emVfdCBkZWZpbml0aW9uCi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotLSNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIGRlZmluZWQoX19H TElCQ19fKQotIC8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qgb24gcHBjNjQKLSB0eXBlZGVmIHVu c2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7Ci0gI2VuZGlmCi1AQCAtMzYxLDExICszNjEsMTEgQEAg dHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsKLSAjZGVmaW5lIFNFQ0NPTVBfQVJD SCBBVURJVF9BUkNIX1BQQzY0Ci0gI2VuZGlmCi0gCi0tI2RlZmluZSBTRUNDT01QX1JFRyhfY3R4 LCBfcmVnKSAoKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5ncHJbX3JlZ10pCi0rI2RlZmluZSBT RUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKChzdHJ1Y3QgcHRfcmVncyAqKShfY3R4KS0+dWNfbWNv bnRleHQucmVncyktPmdwcltfcmVnXSkKLSAKLSAjZGVmaW5lIFNFQ0NPTVBfUkVTVUxUKF9jdHgp IFNFQ0NPTVBfUkVHKF9jdHgsIDMpCi0gI2RlZmluZSBTRUNDT01QX1NZU0NBTEwoX2N0eCkgU0VD Q09NUF9SRUcoX2N0eCwgMCkKLS0jZGVmaW5lIFNFQ0NPTVBfSVAoX2N0eCkgKF9jdHgpLT51Y19t Y29udGV4dC5yZWdzLT5uaXAKLSsjZGVmaW5lIFNFQ0NPTVBfSVAoX2N0eCkgKChzdHJ1Y3QgcHRf cmVncyAqKShfY3R4KS0+dWNfbWNvbnRleHQucmVncyktPm5pcAotICNkZWZpbmUgU0VDQ09NUF9Q QVJNMShfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQotICNkZWZpbmUgU0VDQ09NUF9QQVJNMihf Y3R4KSBTRUNDT01QX1JFRyhfY3R4LCA0KQotICNkZWZpbmUgU0VDQ09NUF9QQVJNMyhfY3R4KSBT RUNDT01QX1JFRyhfY3R4LCA1KQotZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBm L3N5c2NhbGwuY2Mgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCi1pbmRleCBk NTNhN2ZmNTYuLmMyOTBmMGU5MiAxMDA2NDQKLS0tLSBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBm L3N5c2NhbGwuY2MKLSsrKyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKLUBA IC00OTksOSArNDk5LDkgQEAgdm9pZCBTeXNjYWxsOjpQdXRWYWx1ZUluVWNvbnRleHQoaW50cHRy X3QgcmV0X3ZhbCwgdWNvbnRleHRfdCogY3R4KSB7Ci0gICAvLyBTYW1lIGFzIE1JUFMsIG5lZWQg dG8gaW52ZXJ0IHJldCBhbmQgc2V0IGVycm9yIHJlZ2lzdGVyIChjcjAuU08pCi0gICBpZiAocmV0 X3ZhbCA8PSAtMSAmJiByZXRfdmFsID49IC00MDk1KSB7Ci0gICAgIHJldF92YWwgPSAtcmV0X3Zh bDsKLS0gICAgY3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3IgfD0gKDEgPDwgMjgpOwotKyAgICAo KHN0cnVjdCBwdF9yZWdzICopY3R4LT51Y19tY29udGV4dC5yZWdzKS0+Y2NyIHw9ICgxIDw8IDI4 KTsKLSAgIH0gZWxzZSB7Ci0tICAgIGN0eC0+dWNfbWNvbnRleHQucmVncy0+Y2NyICY9IH4oMSA8 PCAyOCk7Ci0rICAgICgoc3RydWN0IHB0X3JlZ3MgKiljdHgtPnVjX21jb250ZXh0LnJlZ3MpLT5j Y3IgJj0gfigxIDw8IDI4KTsKLSAgIH0KLSAjZW5kaWYKLSAgIFNFQ0NPTVBfUkVTVUxUKGN0eCkg PSBzdGF0aWNfY2FzdDxncmVnX3Q+KHJldF92YWwpOwotZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9h YnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaCB0aGlyZF9w YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaAot aW5kZXggY2RjZTliZjguLjczZDc3ZGRhIDEwMDY0NAotLS0tIHRoaXJkX3BhcnR5L2Fic2VpbC1j cHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCi0rKysgdGhpcmRfcGFy dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgKLUBA IC00Niw3ICs0Niw3IEBACi0gCi0gLy8gVGhlIGZvbGxvd2luZyBwbGF0Zm9ybXMgaGF2ZSBhbiBp bXBsZW1lbnRhdGlvbiBvZiBhIGhhcmR3YXJlIGNvdW50ZXIuCi0gI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAot LSAgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBcCi0rICAoKGRl ZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNfXykpICYmIGRlZmluZWQoX19HTElC Q19fKSkgfHwgXAotICAgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9NX1g2NCkKLSAjZGVm aW5lIEFCU0xfSEFWRV9VTlNDQUxFRF9DWUNMRUNMT0NLX0lNUExFTUVOVEFUSU9OIDEKLSAjZWxz ZQotLS0tIHRoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3Rh Y2t0cmFjZV9jb25maWcuaAotKysrIHRoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dp bmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9jb25maWcuaAotQEAgLTY0LDcgKzY0LDcgQEAKLSAjZWxp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCi0gI2RlZmluZSBBQlNM X1NUQUNLVFJBQ0VfSU5MX0hFQURFUiBcCi0gICAiYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3Rh Y2t0cmFjZV94ODYtaW5sLmluYyIKLS0jZWxpZiBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQo X19QUENfXykKLSsjZWxpZiAoZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBDX18pKSAm JiBkZWZpbmVkKF9fR0xJQkNfXykKLSAjZGVmaW5lIEFCU0xfU1RBQ0tUUkFDRV9JTkxfSEVBREVS IFwKLSAgICJhYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3Bvd2VycGMtaW5sLmlu YyIKLSAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9i cmVha3BhZC9CVUlMRC5nbiB0aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbgotaW5kZXggZjlh NjBlMzcuLjI1ZjNhMGI3IDEwMDY0NAotLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL0JVSUxELmdu Ci0rKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvQlVJTEQuZ24KLUBAIC02MzcsNiArNjM3LDcgQEAg aWYgKGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQpIHsKLSAKLSAgICAgaWYgKGN1cnJlbnRfY3B1ID09 ICJwcGM2NCIpIHsKLSAgICAgICAgIGRlZmluZXMgPSBbICJIQVZFX0dFVENPTlRFWFQiIF0KLSsg ICAgICAgIGxpYnMgKz0gWyAidWNvbnRleHQiIF0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIHNv dXJjZXMgKz0gWwotICAgICAgICAgICAgICJicmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2JyZWFr cGFkX2dldGNvbnRleHQuUyIKLWRpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MgdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9j b21tb24vdGhyZWFkX2luZm8uY2MKLWluZGV4IDAzYWZlYzdhLi4wMjY0ZWNmMSAxMDA2NDQKLS0t LSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3Jp dGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYwotKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCi1A QCAtMjczLDYgKzI3Myw5IEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29u dGV4dENQVSogb3V0KSBjb25zdCB7Ci0gCi0gI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot IAotKyNpbmNsdWRlIDxhc20vZWxmLmg+Ci0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsKLSB1 aW50cHRyX3QgVGhyZWFkSW5mbzo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QgewotICAg ICByZXR1cm4gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOwotIH0KLUBAIC0yOTAsOSArMjkzLDkg QEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQpIGNv bnN0IHsKLSAgICAgb3V0LT5jdHIgPSBtY29udGV4dC5ncF9yZWdzW1BUX0NUUl07Ci0gICAgIAot ICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VO VDsgaSsrKQotLSAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IG1jb250ZXh0LmZw X3JlZ3NbaV07Ci0rICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gKCh1aW50NjRf dCAqKSZtY29udGV4dC5mcF9yZWdzKVtpXTsKLSAKLS0gICAgb3V0LT5mbG9hdF9zYXZlLmZwc2Ny ID0gbWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV07Ci0rICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNj ciA9ICgodWludDY0X3QgKikmbWNvbnRleHQuZnBfcmVncylbRUxGX05GUFJFRy0xXTsKLSAKLSAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkr KykKLSAgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9IFwKLWRpZmYgLS1naXQg dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRl cl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwot aW5kZXggMTA5MDQ3MGYuLmU1ODAyMzNkIDEwMDY0NAotLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3Jl YWRlci5jYwotKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwotQEAgLTI1Nyw2ICsyNTcs OSBAQCB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpv dXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjKSB7Ci0gCi0gI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotIAotKyNpbmNsdWRlIDxhc20vZWxmLmg+Ci0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4K LSsKLSB1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29u dGV4dF90KiB1YykgewotICAgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09O VEVYVF9QUEM2NF9SRUdfU1BdOwotIH0KLUBAIC0yODAsOSArMjgzLDkgQEAgdm9pZCBVQ29udGV4 dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0LCBjb25zdCB1Y29udGV4 dF90KiB1YywKLSAgICAgb3V0LT5jdHIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJd OwotICAgICAKLSAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQ Q19GUFJfQ09VTlQ7IGkrKykKLS0gICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSB1 Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tpXTsKLSsgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJl Z3NbaV0gPSAoKHVpbnQ2NF90ICopJnVjLT51Y19tY29udGV4dC5mcF9yZWdzKVtpXTsKLSAKLS0g ICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbTkZQUkVH LTFdOwotKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSAoKHVpbnQ2NF90ICopJnVjLT51Y19t Y29udGV4dC5mcF9yZWdzKVtFTEZfTkZQUkVHLTFdOwotIAotICAgICBmb3IgKGludCBpID0gMDsg aSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQotICAgICAgICAgb3V0LT52 ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0KLWRpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjIHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNl cHRpb25faGFuZGxlci5jYwotaW5kZXggNWE3YWI1MGMuLmVlOGI4NThjIDEwMDY0NAotLS0tIHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNl cHRpb25faGFuZGxlci5jYwotKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwotQEAgLTEwNSw2ICsxMDUs MTEgQEAKLSAjZGVmaW5lIFBSX1NFVF9QVFJBQ0VSIDB4NTk2MTZkNjEKLSAjZW5kaWYKLSAKLSsv KiBtdXNsIGhhY2ssIGNhbid0IGluY2x1ZGUgYXNtL3B0cmFjZS5oIGFzIHRoYXQgY2F1c2VzIGNv bmZsaWN0cyAqLwotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmICFkZWZpbmVkKFBUX05J UCkKLSsjZGVmaW5lIFBUX05JUCAzMgotKyNlbmRpZgotKwotIG5hbWVzcGFjZSBnb29nbGVfYnJl YWtwYWQgewotIAotIG5hbWVzcGFjZSB7Ci1kaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmggdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaAotaW5kZXggOGUz MzVhMDkuLmIyYTBmMTU1IDEwMDY0NAotLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKLSsrKyB0aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oCi1AQCAtNDY5LDcgKzQ2 OSw3IEBAIHN0cnVjdCBNQ29udGV4dDY0IHsKLSAgIFNpZ25hbFRocmVhZENvbnRleHQ2NCBncF9y ZWdzOwotICAgU2lnbmFsRmxvYXRDb250ZXh0NjQgIGZwX3JlZ3M7Ci0gICBTaWduYWxWZWN0b3JD b250ZXh0NjQgKnZfcmVnczsKLS0gIGludDY0X3Qgdm14X3Jlc2VydmVbNjldOwotKyAgaW50NjRf dCB2bXhfcmVzZXJ2ZVsxMDFdOwotIH07Ci0gCi0gc3RydWN0IENvbnRleHRUcmFpdHM2NCA6IHB1 YmxpYyBUcmFpdHM2NCB7Ci1kaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbGludXgvdGhyZWFkX2luZm8uaCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91 dGlsL2xpbnV4L3RocmVhZF9pbmZvLmgKLWluZGV4IGRlYTBkMWYzLi5iMjAzZTViMiAxMDA2NDQK LS0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3RocmVhZF9pbmZv LmgKLSsrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3RocmVhZF9p bmZvLmgKLUBAIC0zMCw2ICszMCw3IEBACi0gCi0gI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRf RkFNSUxZKQotICNpbmNsdWRlIDxzeXMvdWNvbnRleHQuaD4KLSsjaW5jbHVkZSA8YXNtL3B0cmFj ZS5oPgotICNlbmRpZgotIAotIG5hbWVzcGFjZSBjcmFzaHBhZCB7Ci1kaWZmIC0tZ2l0IHRoaXJk X3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCB0aGlyZF9wYXJ0eS9sc3MvbGludXhf c3lzY2FsbF9zdXBwb3J0LmgKLWluZGV4IDk5NTVjZTQ0Li40YzFjYzQ4OCAxMDA2NDQKLS0tLSB0 aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKLSsrKyB0aGlyZF9wYXJ0eS9s c3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKLUBAIC00MjE2LDkgKzQyMTYsMTMgQEAgc3RydWN0 IGtlcm5lbF9zdGF0ZnMgewotICAgICB9Ci0gICAjZW5kaWYKLSAgICNpZiBkZWZpbmVkKF9fTlJf ZnN0YXRhdDY0KQotKyAgICAvLyBtdXNsIGRvZXMgI2RlZmluZSBmc3RhdGF0NjQgZnN0YXRhdAot KyAgICAjdW5kZWYgZnN0YXRhdDY0Ci0gICAgIExTU19JTkxJTkUgX3N5c2NhbGw0KGludCwgICBm c3RhdGF0NjQsICAgICAgICBpbnQsICAgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqLCAgICAgIHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXJu ZWxfc3RhdDY0ICosICAgYiwgICAgaW50LCAgIGYpCi0rICAgIC8vIHNldCBpdCBiYWNrIGxpa2Ug aXQgd2FzCi0rICAgICNkZWZpbmUgZnN0YXRhdDY0IGZzdGF0YXQKLSAgICNlbmRpZgotICAgI2lm IGRlZmluZWQoX19OUl93YWl0cGlkKQotICAgICAvLyB3YWl0cGlkIGlzIHBvbHlmaWxsZWQgYmVs b3cgd2hlbiBub3QgYXZhaWxhYmxlLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2Zp bGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1uby1tYWxsaW5mby5wYXRjaCBiL3NyY3BrZ3MvZWxl Y3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbm8tbWFsbGluZm8ucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NGExZjYzMmRhNS4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbm8tbWFs bGluZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0tLS0gYmFzZS90cmFj ZV9ldmVudC9tYWxsb2NfZHVtcF9wcm92aWRlci5jYy5vcmlnCi0rKysgYmFzZS90cmFjZV9ldmVu dC9tYWxsb2NfZHVtcF9wcm92aWRlci5jYwotQEAgLTI0Myw3ICsyNDMsNyBAQAotICAgYWxsb2Nh dGVkX29iamVjdHNfY291bnQgPSBtYWluX2hlYXBfaW5mby5ibG9ja19jb3VudDsKLSAjZWxpZiBk ZWZpbmVkKE9TX0ZVQ0hTSUEpCi0gLy8gVE9ETyhmdWNoc2lhKTogUG9ydCwgc2VlIGh0dHBzOi8v Y3JidWcuY29tLzcwNjU5Mi4KLS0jZWxzZQotKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQotICAg c3RydWN0IG1hbGxpbmZvIGluZm8gPSBtYWxsaW5mbygpOwotICAgRENIRUNLX0dFKGluZm8uYXJl bmEgKyBpbmZvLmhibGtoZCwgaW5mby51b3JkYmxrcyk7Ci0gCi0tLS0gYmFzZS9wcm9jZXNzL3By b2Nlc3NfbWV0cmljc19wb3NpeC5jYy5vcmlnCTIwMjAtMTEtMTggMjM6NTA6MzMuOTU4MjIzNDk3 IC0wNTAwCi0rKysgYmFzZS9wcm9jZXNzL3Byb2Nlc3NfbWV0cmljc19wb3NpeC5jYwkyMDIwLTEx LTE4IDIzOjUzOjUyLjAyNDU4OTMxNiAtMDUwMAotQEAgLTExOSwxNCArMTE5LDE0IEBACi0gICBt YWxsb2Nfc3RhdGlzdGljc190IHN0YXRzID0gezB9OwotICAgbWFsbG9jX3pvbmVfc3RhdGlzdGlj cyhudWxscHRyLCAmc3RhdHMpOwotICAgcmV0dXJuIHN0YXRzLnNpemVfaW5fdXNlOwotLSNlbGlm IGRlZmluZWQoT1NfTElOVVgpIHx8IGRlZmluZWQoT1NfQ0hST01FT1MpIHx8IGRlZmluZWQoT1Nf QU5EUk9JRCkKLSsjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChPU19DSFJPTUVP UykgfHwgZGVmaW5lZChPU19BTkRST0lEKQotICAgc3RydWN0IG1hbGxpbmZvIG1pbmZvID0gbWFs bGluZm8oKTsKLSAjaWYgQlVJTERGTEFHKFVTRV9UQ01BTExPQykKLSAgIHJldHVybiBtaW5mby51 b3JkYmxrczsKLSAjZWxzZQotICAgcmV0dXJuIG1pbmZvLmhibGtoZCArIG1pbmZvLmFyZW5hOwot ICNlbmRpZgotLSNlbGlmIGRlZmluZWQoT1NfRlVDSFNJQSkKLSsjZWxzZQotICAgLy8gVE9ETyhm dWNoc2lhKTogTm90IGN1cnJlbnRseSBleHBvc2VkLiBodHRwczovL2NyYnVnLmNvbS83MzUwODcu Ci0gICByZXR1cm4gMDsKLSAjZW5kaWYKLS0tLSB0aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGly ZF9wYXJ0eS9sbHZtLXN1Ynplcm8vbGliL1N1cHBvcnQvVW5peC9Qcm9jZXNzLmluYwotKysrIHRo aXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tc3ViemVyby9saWIvU3VwcG9y dC9Vbml4L1Byb2Nlc3MuaW5jLm9yaWcKLUBAIC04NCw3ICs4NCw3IEBACi0gfQotIAotIHNpemVf dCBQcm9jZXNzOjpHZXRNYWxsb2NVc2FnZSgpIHsKLS0jaWYgZGVmaW5lZChIQVZFX01BTExJTkZP KQotKyNpZiBkZWZpbmVkKEhBVkVfTUFMTElORk8pICYmIGRlZmluZWQoX19HTElCQ19fKQotICAg c3RydWN0IG1hbGxpbmZvIG1pOwotICAgbWkgPSA6Om1hbGxpbmZvKCk7Ci0gICByZXR1cm4gbWku dW9yZGJsa3M7Ci0KLS0tLSB0aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGlyZF9wYXJ0eS9sbHZt LTEwLjAvY29uZmlncy9saW51eC9pbmNsdWRlL2xsdm0vQ29uZmlnL2NvbmZpZy5oLm9yaWcJMjAx OS0wOS0zMCAxMzowMzo0Mi41NTY4ODA1MzcgLTA0MDAKLSsrKyB0aGlyZF9wYXJ0eS9zd2lmdHNo YWRlci90aGlyZF9wYXJ0eS9sbHZtLTEwLjAvY29uZmlncy9saW51eC9pbmNsdWRlL2xsdm0vQ29u ZmlnL2NvbmZpZy5oCTIwMTktMDktMzAgMTM6MDc6MjcuOTg5ODIxMjI3IC0wNDAwCi1AQCAtMTIy LDcgKzEyMiw5IEBACi0gLyogI3VuZGVmIEhBVkVfTUFMTENUTCAqLwotIAotIC8qIERlZmluZSB0 byAxIGlmIHlvdSBoYXZlIHRoZSBgbWFsbGluZm8nIGZ1bmN0aW9uLiAqLwotKyNpZiBkZWZpbmVk KF9fR0xJQkNfXykKLSAjZGVmaW5lIEhBVkVfTUFMTElORk8gMQotKyNlbmRpZgotIAotIC8qIERl ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWFsbG9jLmg+IGhlYWRlciBmaWxlLiAqLwotICNk ZWZpbmUgSEFWRV9NQUxMT0NfSCAxCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmls ZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLXJlc29sdmVyLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJv bjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1yZXNvbHZlci5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMjlmZTJkMmYxZjNjLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1yZXNvbHZlci5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS0tLSBuZXQvZG5zL2hvc3RfcmVzb2x2 ZXJfbWFuYWdlci5jYy5vcmlnCTIwMjAtMTAtMDkgMTY6Mzk6MTIuMDY0MDY5ODM1IC0wNDAwCi0r KysgbmV0L2Rucy9ob3N0X3Jlc29sdmVyX21hbmFnZXIuY2MJMjAyMC0xMC0wOSAxNjo0Mjo0OS43 MzgzMDI3NzIgLTA0MDAKLUBAIC0yNzc5LDggKzI3NzksNyBAQAotICAgTmV0d29ya0NoYW5nZU5v dGlmaWVyOjpBZGRDb25uZWN0aW9uVHlwZU9ic2VydmVyKHRoaXMpOwotICAgaWYgKHN5c3RlbV9k bnNfY29uZmlnX25vdGlmaWVyXykKLSAgICAgc3lzdGVtX2Ruc19jb25maWdfbm90aWZpZXJfLT5B ZGRPYnNlcnZlcih0aGlzKTsKLS0jaWYgZGVmaW5lZChPU19QT1NJWCkgJiYgIWRlZmluZWQoT1Nf QVBQTEUpICYmICFkZWZpbmVkKE9TX09QRU5CU0QpICYmIFwKLS0gICAgIWRlZmluZWQoT1NfQU5E Uk9JRCkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gICBFbnN1cmVEbnNSZWxvYWRlckluaXQo KTsKLSAjZW5kaWYKLSAKLS0tLSBuZXQvZG5zL2Ruc19yZWxvYWRlci5jYy5vcmlnCTIwMjAtMTAt MDkgMTY6Mzk6MTIuMDY0MDY5ODM1IC0wNDAwCi0rKysgbmV0L2Rucy9kbnNfcmVsb2FkZXIuY2MJ MjAyMC0xMC0wOSAxNjo0NDozMC40NDI0MTk4MjMgLTA0MDAKLUBAIC00LDkgKzQsOCBAQAotIAot ICNpbmNsdWRlICJuZXQvZG5zL2Ruc19yZWxvYWRlci5oIgotIAotLSNpZiBkZWZpbmVkKE9TX1BP U0lYKSAmJiAhZGVmaW5lZChPU19BUFBMRSkgJiYgIWRlZmluZWQoT1NfT1BFTkJTRCkgJiYgXAot LSAgICAhZGVmaW5lZChPU19BTkRST0lEKSAmJiAhZGVmaW5lZChPU19GVUNIU0lBKQotLQotKyNp ZiBkZWZpbmVkKF9fR0xJQkNfXykKLSsgCi0gI2luY2x1ZGUgPHJlc29sdi5oPgotIAotICNpbmNs dWRlICJiYXNlL2xhenlfaW5zdGFuY2UuaCIKLS0tLSBuZXQvZG5zL2hvc3RfcmVzb2x2ZXJfcHJv Yy5jYy5vcmlnCTIwMjAtMTAtMDkgMTY6Mzk6MTIuMDY1MDY5ODM2IC0wNDAwCi0rKysgbmV0L2Ru cy9ob3N0X3Jlc29sdmVyX3Byb2MuY2MJMjAyMC0xMC0wOSAxNjo0NTowOS42NDE0NjY2NDQgLTA0 MDAKLUBAIC0xNTksOCArMTU5LDcgQEAKLSAgIGJhc2U6OlNjb3BlZEJsb2NraW5nQ2FsbCBzY29w ZWRfYmxvY2tpbmdfY2FsbChGUk9NX0hFUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmFzZTo6QmxvY2tpbmdUeXBlOjpXSUxMX0JMT0NLKTsKLSAK LS0jaWYgZGVmaW5lZChPU19QT1NJWCkgJiYgIWRlZmluZWQoT1NfQVBQTEUpICYmICFkZWZpbmVk KE9TX09QRU5CU0QpICYmIFwKLS0gICAgIWRlZmluZWQoT1NfQU5EUk9JRCkgJiYgIWRlZmluZWQo T1NfRlVDSFNJQSkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gICBEbnNSZWxvYWRlck1heWJl UmVsb2FkKCk7Ci0gI2VuZGlmCi0gICBiYXNlOjpPcHRpb25hbDxBZGRyZXNzSW5mbz4gYWk7CmRp ZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1icm93 c2VyLXNpemVfdC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9t aXVtLWJyb3dzZXItc2l6ZV90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz NmFmMGVjNmM0YTcuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS1icm93c2VyLXNpemVfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDEwICswLDAgQEAKLS0tLSBhL2Nocm9tZS9icm93c2VyL3NlYXJjaC9iYWNrZ3JvdW5kL250cF9i YWNrZ3JvdW5kcy5oCTIwMjAtMDgtMTAgMjA6Mzk6MjAuMDAwMDAwMDAwICswMjAwCi0rKysgYi9j aHJvbWUvYnJvd3Nlci9zZWFyY2gvYmFja2dyb3VuZC9udHBfYmFja2dyb3VuZHMuaAkyMDIwLTA5 LTA0IDEzOjQ4OjIyLjY0MDAyMzI1NiArMDIwMAotQEAgLTYsNiArNiw3IEBACi0gI2RlZmluZSBD SFJPTUVfQlJPV1NFUl9TRUFSQ0hfQkFDS0dST1VORF9OVFBfQkFDS0dST1VORFNfSF8KLSAKLSAj aW5jbHVkZSA8YXJyYXk+Ci0rI2luY2x1ZGUgPGNzdGRkZWY+Ci0gCi0gY2xhc3MgR1VSTDsKLSAK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWhh cmZidXp6LTMuMC4wLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hy b21pdW0taGFyZmJ1enotMy4wLjAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGM3NzI0MzM2YmZiYS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxl cy9wYXRjaGVzL2Nocm9taXVtLWhhcmZidXp6LTMuMC4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMjAgKzAsMCBAQAotIyBodHRwczovL2dpdGh1Yi5jb20vY2hyb21pdW0vY2hyb21pdW0vY29t bWl0L2IyODlmNmYzZmNiYwotCi1kaWZmIC0tZ2l0IGEvY29tcG9uZW50cy9wYWludF9wcmV2aWV3 L2NvbW1vbi9zdWJzZXRfZm9udC5jYyBiL2NvbXBvbmVudHMvcGFpbnRfcHJldmlldy9jb21tb24v c3Vic2V0X2ZvbnQuY2MKLWluZGV4IDhmZjA1NDBkOWEuLjIwYTdkMzc0NzQgMTAwNjQ0Ci0tLS0g YS9jb21wb25lbnRzL3BhaW50X3ByZXZpZXcvY29tbW9uL3N1YnNldF9mb250LmNjCi0rKysgYi9j b21wb25lbnRzL3BhaW50X3ByZXZpZXcvY29tbW9uL3N1YnNldF9mb250LmNjCi1AQCAtNzIsOSAr NzIsMTEgQEAgc2tfc3A8U2tEYXRhPiBTdWJzZXRGb250KFNrVHlwZWZhY2UqIHR5cGVmYWNlLCBj b25zdCBHbHlwaFVzYWdlJiB1c2FnZSkgewotICAgaGJfc2V0X3QqIGdseXBocyA9Ci0gICAgICAg aGJfc3Vic2V0X2lucHV0X2dseXBoX3NldChpbnB1dC5nZXQoKSk7ICAvLyBPd25lZCBieSB8aW5w dXR8LgotICAgdXNhZ2UuRm9yRWFjaChiYXNlOjpCaW5kUmVwZWF0aW5nKCZBZGRHbHlwaHMsIGJh c2U6OlVucmV0YWluZWQoZ2x5cGhzKSkpOwotLSAgaGJfc3Vic2V0X2lucHV0X3NldF9yZXRhaW5f Z2lkcyhpbnB1dC5nZXQoKSwgdHJ1ZSk7Ci0rICBoYl9zdWJzZXRfaW5wdXRfc2V0X2ZsYWdzKGlu cHV0LmdldCgpLCBIQl9TVUJTRVRfRkxBR1NfUkVUQUlOX0dJRFMpOwotIAotLSAgSGJTY29wZWQ8 aGJfZmFjZV90PiBzdWJzZXRfZmFjZShoYl9zdWJzZXQoZmFjZS5nZXQoKSwgaW5wdXQuZ2V0KCkp KTsKLSsgIEhiU2NvcGVkPGhiX2ZhY2VfdD4gc3Vic2V0X2ZhY2UoaGJfc3Vic2V0X29yX2ZhaWwo ZmFjZS5nZXQoKSwgaW5wdXQuZ2V0KCkpKTsKLSsgIGlmICghc3Vic2V0X2ZhY2UpCi0rICAgIHJl dHVybiBudWxscHRyOwotICAgSGJTY29wZWQ8aGJfYmxvYl90PiBzdWJzZXRfYmxvYihoYl9mYWNl X3JlZmVyZW5jZV9ibG9iKHN1YnNldF9mYWNlLmdldCgpKSk7Ci0gICBpZiAoIXN1YnNldF9ibG9i KQotICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9m aWxlcy9wYXRjaGVzL2Nocm9taXVtLWxpYmNfbWFsbG9jLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJv bjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbGliY19tYWxsb2MucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDM2NDY2NmNhYTc0OS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3Br Z3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWxpYmNfbWFsbG9jLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLS0tIGEvYmFzZS9wcm9jZXNzL21lbW9yeV9s aW51eC5jYy5vcmlnCTIwMTctMDktMTUgMDg6NDE6NDMuMDAwMDAwMDAwICswMDAwCi0rKysgYS9i YXNlL3Byb2Nlc3MvbWVtb3J5X2xpbnV4LmNjCTIwMTctMDktMTUgMDg6NDQ6MzkuODA0OTk1NDY5 ICswMDAwCi1AQCAtMjEsNiArMjEsMTIgQEAKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvdGNtYWxs b2MvY2hyb21pdW0vc3JjL2dwZXJmdG9vbHMvdGNtYWxsb2MuaCIKLSAjZW5kaWYKLSAKLSsjaWYg ZGVmaW5lZChMSUJDX0dMSUJDKQotK2V4dGVybiAiQyIgewotK2V4dGVybiB2b2lkICpfX2xpYmNf bWFsbG9jKHNpemVfdCBzaXplKTsKLSt9Ci0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIGJhc2Ugewot IAotIHNpemVfdCBnX29vbV9zaXplID0gMFU7Ci0tLS0gYS9iYXNlL3Byb2Nlc3MvbWVtb3J5X2xp bnV4LmNjLm9yaWcJMjAyMC0wOC0zMCAxNDoxODozNS40MDExMzI1OTMgLTA0MDAKLSsrKyBhL2Jh c2UvcHJvY2Vzcy9tZW1vcnlfbGludXguY2MJMjAyMC0wOC0zMCAxNDoxOTowOC4wMzAxOTkxODkg LTA0MDAKLUBAIC0xNDEsNyArMTQxLDcgQEAKLSAgICAgKCFkZWZpbmVkKExJQkNfR0xJQkMpICYm ICFCVUlMREZMQUcoVVNFX1RDTUFMTE9DKSkKLSAgICpyZXN1bHQgPSBtYWxsb2Moc2l6ZSk7Ci0g I2VsaWYgZGVmaW5lZChMSUJDX0dMSUJDKSAmJiAhQlVJTERGTEFHKFVTRV9UQ01BTExPQykKLS0g ICpyZXN1bHQgPSBfX2xpYmNfbWFsbG9jKHNpemUpOwotKyAgKnJlc3VsdCA9IDo6X19saWJjX21h bGxvYyhzaXplKTsKLSAjZWxpZiBCVUlMREZMQUcoVVNFX1RDTUFMTE9DKQotICAgKnJlc3VsdCA9 IHRjX21hbGxvY19za2lwX25ld19oYW5kbGVyKHNpemUpOwotICNlbmRpZgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbXVzbC12OC1tb25vdG9u aWMtcHRocmVhZC1jb250X3RpbWVkd2FpdC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxl cy9wYXRjaGVzL2Nocm9taXVtLW11c2wtdjgtbW9ub3RvbmljLXB0aHJlYWQtY29udF90aW1lZHdh aXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMmU3MTVmZTIwNi4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVt LW11c2wtdjgtbW9ub3RvbmljLXB0aHJlYWQtY29udF90aW1lZHdhaXQucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwyNCArMCwwIEBACi1Vc2UgbW9ub3RvbmljIGNsb2NrIGZvciBwdGhyZWFkX2Nv bmRfdGltZWR3YWl0IHdpdGggbXVzbCB0b28uCi0KLWRpZmYgLS1naXQgYS92OC9zcmMvYmFzZS9w bGF0Zm9ybS9jb25kaXRpb24tdmFyaWFibGUuY2MgYi92OC9zcmMvYmFzZS9wbGF0Zm9ybS9jb25k aXRpb24tdmFyaWFibGUuY2MKLWluZGV4IDVlYTcwODMuLmMxMzAyN2UgMTAwNjQ0Ci0tLS0gYS92 OC9zcmMvYmFzZS9wbGF0Zm9ybS9jb25kaXRpb24tdmFyaWFibGUuY2MKLSsrKyBhL3Y4L3NyYy9i YXNlL3BsYXRmb3JtL2NvbmRpdGlvbi12YXJpYWJsZS5jYwotQEAgLTE2LDcgKzE2LDcgQEAgbmFt ZXNwYWNlIGJhc2UgewotIAotIENvbmRpdGlvblZhcmlhYmxlOjpDb25kaXRpb25WYXJpYWJsZSgp IHsKLSAjaWYgKFY4X09TX0ZSRUVCU0QgfHwgVjhfT1NfTkVUQlNEIHx8IFY4X09TX09QRU5CU0Qg fHwgXAotLSAgICAgKFY4X09TX0xJTlVYICYmIFY4X0xJQkNfR0xJQkMpKQotKyAgICAgVjhfT1Nf TElOVVgpCi0gICAvLyBPbiBGcmVlL05ldC9PcGVuQlNEIGFuZCBMaW51eCB3aXRoIGdsaWJjIHdl IGNhbiBjaGFuZ2UgdGhlIHRpbWUKLSAgIC8vIHNvdXJjZSBmb3IgcHRocmVhZF9jb25kX3RpbWVk d2FpdCgpIHRvIHVzZSB0aGUgbW9ub3RvbmljIGNsb2NrLgotICAgcHRocmVhZF9jb25kYXR0cl90 IGF0dHI7Ci1AQCAtOTIsNyArOTIsNyBAQCBib29sIENvbmRpdGlvblZhcmlhYmxlOjpXYWl0Rm9y KE11dGV4KiBtdXRleCwgY29uc3QgVGltZURlbHRhJiByZWxfdGltZSkgewotICAgICAgICZuYXRp dmVfaGFuZGxlXywgJm11dGV4LT5uYXRpdmVfaGFuZGxlKCksICZ0cyk7Ci0gI2Vsc2UKLSAjaWYg KFY4X09TX0ZSRUVCU0QgfHwgVjhfT1NfTkVUQlNEIHx8IFY4X09TX09QRU5CU0QgfHwgXAotLSAg ICAgKFY4X09TX0xJTlVYICYmIFY4X0xJQkNfR0xJQkMpKQotKyAgICAgVjhfT1NfTElOVVgpCi0g ICAvLyBPbiBGcmVlL05ldC9PcGVuQlNEIGFuZCBMaW51eCB3aXRoIGdsaWJjIHdlIGNhbiBjaGFu Z2UgdGhlIHRpbWUKLSAgIC8vIHNvdXJjZSBmb3IgcHRocmVhZF9jb25kX3RpbWVkd2FpdCgpIHRv IHVzZSB0aGUgbW9ub3RvbmljIGNsb2NrLgotICAgcmVzdWx0ID0gY2xvY2tfZ2V0dGltZShDTE9D S19NT05PVE9OSUMsICZ0cyk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS1uby1leGVjaW5mby5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9m aWxlcy9wYXRjaGVzL2Nocm9taXVtLW5vLWV4ZWNpbmZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAzY2VkZTFiMGE1NzEuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Vs ZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1uby1leGVjaW5mby5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDcyICswLDAgQEAKLS0tLSBhL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2VfcG9z aXguY2Mub3JpZwkyMDE5LTA1LTE0IDE0OjQ5OjQ0LjAwMDAwMDAwMCAtMDQwMAotKysrIGEvYmFz ZS9kZWJ1Zy9zdGFja190cmFjZV9wb3NpeC5jYwkyMDE5LTA3LTAyIDEwOjQzOjQzLjQ5MDA0NTAx MyAtMDQwMAotQEAgLTI3LDcgKzI3LDcgQEAKLSAjaWYgIWRlZmluZWQoVVNFX1NZTUJPTElaRSkK LSAjaW5jbHVkZSA8Y3h4YWJpLmg+Ci0gI2VuZGlmCi0tI2lmICFkZWZpbmVkKF9fVUNMSUJDX18p ICYmICFkZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChf QUlYKQotICNpbmNsdWRlIDxleGVjaW5mby5oPgotICNlbmRpZgotIAotQEAgLTg2LDcgKzg2LDcg QEAKLSAgIC8vIE5vdGU6IGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpcyBOT1QgYXN5bmMtc2lnbmFs IHNhZmUgKHN0ZDo6c3RyaW5nIHVzZXMKLSAgIC8vIG1hbGxvYyBpbnRlcm5hbGx5KS4KLSAKLS0j aWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSsjaWYgZGVmaW5lZChf X0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0gICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHNl YXJjaF9mcm9tID0gMDsKLSAgIHdoaWxlIChzZWFyY2hfZnJvbSA8IHRleHQtPnNpemUoKSkgewot ICAgICAvLyBMb29rIGZvciB0aGUgc3RhcnQgb2YgYSBtYW5nbGVkIHN5bWJvbCwgZnJvbSBzZWFy Y2hfZnJvbS4KLUBAIC0xMjEsNyArMTIxLDcgQEAKLSAgICAgICBzZWFyY2hfZnJvbSA9IG1hbmds ZWRfc3RhcnQgKyAyOwotICAgICB9Ci0gICB9Ci0tI2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElC Q19fKSAmJiAhZGVmaW5lZChfQUlYKQotKyNlbmRpZiAgLy8gZGVmaW5lZChfX0dMSUJDX18pICYm ICFkZWZpbmVkKF9BSVgpCi0gfQotICNlbmRpZiAgLy8gIWRlZmluZWQoVVNFX1NZTUJPTElaRSkK LSAKLUBAIC0xMzMsNyArMTMzLDcgQEAKLSAgIHZpcnR1YWwgfkJhY2t0cmFjZU91dHB1dEhhbmRs ZXIoKSA9IGRlZmF1bHQ7Ci0gfTsKLSAKLS0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRl ZmluZWQoX0FJWCkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0g dm9pZCBPdXRwdXRQb2ludGVyKHZvaWQqIHBvaW50ZXIsIEJhY2t0cmFjZU91dHB1dEhhbmRsZXIq IGhhbmRsZXIpIHsKLSAgIC8vIFRoaXMgc2hvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2ggdG8gc3Rv cmUgYSA2NC1iaXQgbnVtYmVyIGluIGhleDoKLSAgIC8vIDE2IGhleCBkaWdpdHMgKyAxIGZvciBu dWxsLXRlcm1pbmF0b3IuCi1AQCAtMjE2LDcgKzIxNiw3IEBACi0gICB9Ci0gI2VuZGlmICAvLyBk ZWZpbmVkKFVTRV9TWU1CT0xJWkUpCi0gfQotLSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJQkNf XykgJiYgIWRlZmluZWQoX0FJWCkKLSsjZW5kaWYgIC8vIGRlZmluZWQoX19HTElCQ19fKSAmJiAh ZGVmaW5lZChfQUlYKQotIAotIHZvaWQgUHJpbnRUb1N0ZGVycihjb25zdCBjaGFyKiBvdXRwdXQp IHsKLSAgIC8vIE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdz IHVzZWQgYnkgaW4tcHJvY2VzcwotQEAgLTgxMiw3ICs4MTIsNyBAQAotICAgLy8gTk9URTogVGhp cyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNz Ci0gICAvLyBzdGFjayBkdW1waW5nIHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlv IGlzIGFsbG93ZWQgaGVyZS4KLSAKLS0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmlu ZWQoX0FJWCkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0gICAv LyBUaG91Z2ggdGhlIGJhY2t0cmFjZSBBUEkgbWFuIHBhZ2UgZG9lcyBub3QgbGlzdCBhbnkgcG9z c2libGUgbmVnYXRpdmUKLSAgIC8vIHJldHVybiB2YWx1ZXMsIHdlIHRha2Ugbm8gY2hhbmNlLgot ICAgcmV0dXJuIGJhc2U6OnNhdHVyYXRlZF9jYXN0PHNpemVfdD4oYmFja3RyYWNlKHRyYWNlLCBj b3VudCkpOwotQEAgLTgyNSwxMyArODI1LDEzIEBACi0gLy8gTk9URTogVGhpcyBjb2RlIE1VU1Qg YmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCi0gLy8gc3RhY2sg ZHVtcGluZyBzaWduYWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhl cmUuCi0gCi0tI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0rI2lm IGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotICAgUHJpbnRCYWNrdHJhY2VP dXRwdXRIYW5kbGVyIGhhbmRsZXI7Ci0gICBQcm9jZXNzQmFja3RyYWNlKHRyYWNlXywgY291bnRf LCBwcmVmaXhfc3RyaW5nLCAmaGFuZGxlcik7Ci0gI2VuZGlmCi0gfQotIAotLSNpZiAhZGVmaW5l ZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykg JiYgIWRlZmluZWQoX0FJWCkKLSB2b2lkIFN0YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtV2l0aFBy ZWZpeChzdGQ6Om9zdHJlYW0qIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKLSAgIFN0cmVhbUJh Y2t0cmFjZU91dHB1dEhhbmRsZXIgaGFuZGxlcihvcyk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1uby1nZXRjb250ZXh0LnBhdGNoIGIvc3Jj cGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZ2V0Y29udGV4dC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUwMmI1YTA2YWNiLi4wMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZ2V0 Y29udGV4dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS0tLSBhL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRp b25faGFuZGxlci5jYy5vcmlnCTIwMTUtMTItMDYgMDk6NTk6NTUuNTU0NTM2NjQ2ICswMTAwCi0r KysgYS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRs ZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MJMjAxNS0xMi0wNiAxMDowMToxNi44MTgyMzgwMzUgKzAx MDAKLUBAIC00NzcsNyArNDc3LDkgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpTaW11bGF0ZVNp Z25hbERlbAotICAgc2lnaW5mby5zaV9jb2RlID0gU0lfVVNFUjsKLSAgIHNpZ2luZm8uc2lfcGlk ID0gZ2V0cGlkKCk7Ci0gICB1Y29udGV4dF90IGNvbnRleHQ7Ci0rI2lmIGRlZmluZWQoX19HTElC Q19fKQotICAgZ2V0Y29udGV4dCgmY29udGV4dCk7Ci0rI2VuZGlmCi0gICByZXR1cm4gSGFuZGxl U2lnbmFsKHNpZywgJnNpZ2luZm8sICZjb250ZXh0KTsKLSB9Ci0gCi1AQCAtNjQ3LDkgKzY0OSwx NCBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAoKSB7Ci0gICBzeXNfcHJj dGwoUFJfU0VUX0RVTVBBQkxFLCAxLCAwLCAwLCAwKTsKLSAKLSAgIENyYXNoQ29udGV4dCBjb250 ZXh0OwotKwotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAgIGludCBnZXRjb250ZXh0X3Jlc3Vs dCA9IGdldGNvbnRleHQoJmNvbnRleHQuY29udGV4dCk7Ci0gICBpZiAoZ2V0Y29udGV4dF9yZXN1 bHQpCi0gICAgIHJldHVybiBmYWxzZTsKLSsjZWxzZQotKyAgcmV0dXJuIGZhbHNlOwotKyNlbmRp ZgotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKQotICAgLy8gSW4gQ1BVRmlsbEZyb21VQ29udGV4 dCBpbiBtaW5pZHVtcHdyaXRlci5jYyB0aGUgc3RhY2sgcG9pbnRlciBpcyByZXRyaWV2ZWQKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXB5dGhv bjMuMTAucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1w eXRob24zLjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjYxZGU5Njgy MTcuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9j aHJvbWl1bS1weXRob24zLjEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAot LS0tIGEvdGhpcmRfcGFydHkvZWxlY3Ryb25fbm9kZS9jb25maWd1cmUJMjAyMS0wMi0yMiAxOToz MzoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyAtCTIwMjEtMTEtMTEgMjI6Mjc6MjQuODk3MDcwNTEz ICswMTAwCi1AQCAtNSw2ICs1LDcgQEAKLSAjIGFzIGlzIHRoZSBmYWN0IHRoYXQgdGhlIF0gZ29l cyBvbiBhIG5ldyBsaW5lLgotIF89WyAnZXhlYycgJy9iaW4vc2gnICctYycgJycnCi0gdGVzdCAk e0ZPUkNFX1BZVEhPTjJ9ICYmIGV4ZWMgcHl0aG9uMiAiJDAiICIkQCIgICMgd29ya2Fyb3VuZCBm b3IgZ2NsaWVudAotK2NvbW1hbmQgLXYgcHl0aG9uMy4xMCA+L2Rldi9udWxsICYmIGV4ZWMgcHl0 aG9uMy4xMCAiJDAiICIkQCIKLSBjb21tYW5kIC12IHB5dGhvbjMuOSA+L2Rldi9udWxsICYmIGV4 ZWMgcHl0aG9uMy45ICIkMCIgIiRAIgotIGNvbW1hbmQgLXYgcHl0aG9uMy44ID4vZGV2L251bGwg JiYgZXhlYyBweXRob24zLjggIiQwIiAiJEAiCi0gY29tbWFuZCAtdiBweXRob24zLjcgPi9kZXYv bnVsbCAmJiBleGVjIHB5dGhvbjMuNyAiJDAiICIkQCIKLUBAIC0yMSw3ICsyMiw3IEBACi0gZnJv bSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQotIAotIHByaW50KCdOb2Rl LmpzIGNvbmZpZ3VyZTogRm91bmQgUHl0aG9uIHswfS57MX0uezJ9Li4uJy5mb3JtYXQoKnN5cy52 ZXJzaW9uX2luZm8pKQotLWFjY2VwdGFibGVfcHl0aG9ucyA9ICgoMywgOSksICgzLCA4KSwgKDMs IDcpLCAoMywgNiksICgzLCA1KSwgKDIsIDcpKQotK2FjY2VwdGFibGVfcHl0aG9ucyA9ICgoMywx MCksICgzLCA5KSwgKDMsIDgpLCAoMywgNyksICgzLCA2KSwgKDMsIDUpLCAoMiwgNykpCi0gaWYg c3lzLnZlcnNpb25faW5mb1s6Ml0gaW4gYWNjZXB0YWJsZV9weXRob25zOgotICAgaW1wb3J0IGNv bmZpZ3VyZQotIGVsc2U6CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS1yZXZlcnQtZHJvcC1vZi1zeXN0ZW0tamF2YS5wYXRjaCBiL3NyY3BrZ3Mv ZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXJldmVydC1kcm9wLW9mLXN5c3RlbS1q YXZhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Y5N2M3YzRkMWMuLjAw MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1 bS1yZXZlcnQtZHJvcC1vZi1zeXN0ZW0tamF2YS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1 ICswLDAgQEAKLVRoaXMgd2FzIGRyb3BwZWQgZm9yIHNvbWUgcmVhc29uIGluIDY5NTFjMzdjZWNk MDU5NzliMjMyYTM5ZTVjMTBlNjM0NmEwZjc0ZWYKLS0tLSBhL3RoaXJkX3BhcnR5L2Nsb3N1cmVf Y29tcGlsZXIvY29tcGlsZXIucHkJMjAyMS0wNS0yMCAwNDoxNzo1My4wMDAwMDAwMDAgKzAyMDAK LSsrKyAtCTIwMjEtMDUtMjUgMjA6MzE6MTAuMTAyOTcxNzY1ICswMjAwCi1AQCAtMTMsOCArMTMs OSBAQAotIAotIAotIF9DVVJSRU5UX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUo X19maWxlX18pKQotLV9KQVZBX1BBVEggPSBvcy5wYXRoLmpvaW4oX0NVUlJFTlRfRElSLCAiLi4i LCAiamRrIiwgImN1cnJlbnQiLCAiYmluIiwgImphdmEiKQotLWFzc2VydCBvcy5wYXRoLmlzZmls ZShfSkFWQV9QQVRIKSwgImphdmEgb25seSBhbGxvd2VkIGluIGFuZHJvaWQgYnVpbGRzIgotK19K QVZBX0JJTiA9ICJqYXZhIgotK19KREtfUEFUSCA9IG9zLnBhdGguam9pbihfQ1VSUkVOVF9ESVIs ICIuLiIsICJqZGsiLCAiY3VycmVudCIsICJiaW4iLCAiamF2YSIpCi0rX0pBVkFfUEFUSCA9IF9K REtfUEFUSCBpZiBvcy5wYXRoLmlzZmlsZShfSkRLX1BBVEgpIGVsc2UgX0pBVkFfQklOCi0gCi0g Y2xhc3MgQ29tcGlsZXIob2JqZWN0KToKLSAgICIiIlJ1bnMgdGhlIENsb3N1cmUgY29tcGlsZXIg b24gZ2l2ZW4gc291cmNlIGZpbGVzIHRvIHR5cGVjaGVjayB0aGVtCmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zYW5kYm94LW1lbWJhcnJpZXIu cGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zYW5kYm94 LW1lbWJhcnJpZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5ODU1MmMy ZjllNy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVz L2Nocm9taXVtLXNhbmRib3gtbWVtYmFycmllci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEw ICswLDAgQEAKLS0tLSBhL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxs X3NldHMuY2MKLSsrKyBhL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxs X3NldHMuY2MKLUBAIC0zNzAsNiArMzcwLDcgQEAKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAg Y2FzZSBfX05SX2V4aXQ6Ci0gICAgIGNhc2UgX19OUl9leGl0X2dyb3VwOgotKyAgICBjYXNlIF9f TlJfbWVtYmFycmllcjoKLSAgICAgY2FzZSBfX05SX3dhaXQ0OgotICAgICBjYXNlIF9fTlJfd2Fp dGlkOgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJv bjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaCBi L3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNhbmRib3gtc2NoZWRf Z2V0cGFyYW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZjExYWY0M2Mw NC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2No cm9taXVtLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwy MCArMCwwIEBACi1BbGxvdyBTWVNfc2NoZWRfZ2V0cGFyYW0gYW5kIFNZU19zY2hlZF9nZXRzY2hl ZHVsZXIKLW11c2wgdXNlcyB0aGVtIGZvciBwdGhyZWFkX2dldHNjaGVkcGFyYW0oKQotCi1zb3Vy Y2U6IGh0dHBzOi8vZ2l0LmFscGluZWxpbnV4Lm9yZy9hcG9ydHMvY29tbWl0L2NvbW11bml0eS9j aHJvbWl1bT9pZD01NGFmOWY4YWMyNGY1MmQzODJjNTc1OGUyNDQ1YmYwMjA2ZWZmNDBlCi0KLS0t LSBhL3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2Mub3Jp ZwkyMDE5LTEwLTA4IDIxOjAzOjE4LjI1MzA4MDQyNSArMDIwMAotKysrIGEvc2FuZGJveC9wb2xp Y3kvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYwkyMDE5LTEwLTA4IDIxOjA0OjE5 LjY0ODU0OTcxOCArMDIwMAotQEAgLTg4LDEwICs4OCwxMCBAQAotICAgICBjYXNlIF9fTlJfc3lz aW5mbzoKLSAgICAgY2FzZSBfX05SX3RpbWVzOgotICAgICBjYXNlIF9fTlJfdW5hbWU6Ci0tICAg ICAgcmV0dXJuIEFsbG93KCk7Ci0tICAgIGNhc2UgX19OUl9zY2hlZF9nZXRhZmZpbml0eToKLSAg ICAgY2FzZSBfX05SX3NjaGVkX2dldHBhcmFtOgotICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0c2No ZWR1bGVyOgotKyAgICAgIHJldHVybiBBbGxvdygpOwotKyAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0 YWZmaW5pdHk6Ci0gICAgIGNhc2UgX19OUl9zY2hlZF9zZXRzY2hlZHVsZXI6Ci0gICAgICAgcmV0 dXJuIHNhbmRib3g6OlJlc3RyaWN0U2NoZWRUYXJnZXQoR2V0UG9saWN5UGlkKCksIHN5c25vKTsK LSAgICAgY2FzZSBfX05SX3BybGltaXQ2NDoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNraWEtaGFyZmJ1enotMy4wLjAucGF0Y2ggYi9zcmNw a2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1za2lhLWhhcmZidXp6LTMuMC4w LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDdhZjIwMWI2ZTQuLjAwMDAw MDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1z a2lhLWhhcmZidXp6LTMuMC4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAK LSMgTWluaW1hbCBkaWZmIGZvciBoYXJmYnV6eiAzLjAuMCBzdXBwb3J0OyBiYXNlZCBvbjoKLSMg aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9za2lhL2NvbW1pdC82NjY4NGIxN2IzODIKLSMgaHR0 cHM6Ly9naXRodWIuY29tL2dvb2dsZS9za2lhL2NvbW1pdC81MWQ4M2FiY2QyNGEKLQotZGlmZiAt LWdpdCBhL2duL3NraWEuZ25pIGIvZ24vc2tpYS5nbmkKLWluZGV4IGQ5OGZkYzE5ZWUuLjE5OTMz NWQ1YzQgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9za2lhL2duL3NraWEuZ25pCi0rKysgYi90 aGlyZF9wYXJ0eS9za2lhL2duL3NraWEuZ25pCi1AQCAtMzQsOCArMzQsNiBAQCBkZWNsYXJlX2Fy Z3MoKSB7Ci0gICBza2lhX2luY2x1ZGVfbXVsdGlmcmFtZV9wcm9jcyA9IGZhbHNlCi0gICBza2lh X2xleCA9IGZhbHNlCi0gICBza2lhX2xpYmdpZmNvZGVjX3BhdGggPSAidGhpcmRfcGFydHkvZXh0 ZXJuYWxzL2xpYmdpZmNvZGVjIgotLSAgc2tpYV9wZGZfc3Vic2V0X2hhcmZidXp6ID0KLS0gICAg ICBmYWxzZSAgIyBUT0RPOiBzZXQgc2tpYV9wZGZfc3Vic2V0X2hhcmZidXp6IHRvIHNraWFfdXNl X2hhcmZidXp6LgotICAgc2tpYV9xdF9wYXRoID0gZ2V0ZW52KCJRVF9QQVRIIikKLSAgIHNraWFf c2txcF9nbG9iYWxfZXJyb3JfdG9sZXJhbmNlID0gMAotICAgc2tpYV90b29sc19yZXF1aXJlX3Jl c291cmNlcyA9IGZhbHNlCi1AQCAtOTksNiArOTcsMTAgQEAgZGVjbGFyZV9hcmdzKCkgewotICAg c2tpYV91c2VfbGliZnV6emVyX2RlZmF1bHRzID0gdHJ1ZQotIH0KLSAKLStkZWNsYXJlX2FyZ3Mo KSB7Ci0rICBza2lhX3BkZl9zdWJzZXRfaGFyZmJ1enogPSBza2lhX3VzZV9oYXJmYnV6egotK30K LSsKLSBkZWNsYXJlX2FyZ3MoKSB7Ci0gICBza2lhX2NvbXBpbGVfc2tzbF90ZXN0cyA9IHNraWFf Y29tcGlsZV9wcm9jZXNzb3JzCi0gICBza2lhX2VuYWJsZV9mb250bWdyX2FuZHJvaWQgPSBza2lh X3VzZV9leHBhdCAmJiBza2lhX3VzZV9mcmVldHlwZQotZGlmZiAtLWdpdCBhL3NyYy9wZGYvU2tQ REZTdWJzZXRGb250LmNwcCBiL3NyYy9wZGYvU2tQREZTdWJzZXRGb250LmNwcAotaW5kZXggODFj MzdlZWYzYS4uMjM0MGE3OTM3YiAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L3NraWEvc3JjL3Bk Zi9Ta1BERlN1YnNldEZvbnQuY3BwCi0rKysgYi90aGlyZF9wYXJ0eS9za2lhL3NyYy9wZGYvU2tQ REZTdWJzZXRGb250LmNwcAotQEAgLTQ5LDYgKzQ5LDM3IEBAIHN0YXRpYyBza19zcDxTa0RhdGE+ IHRvX2RhdGEoSEJCbG9iIGJsb2IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJsb2IucmVsZWFzZSgpKTsKLSB9Ci0gCi0rdGVtcGxhdGU8dHlwZW5hbWUuLi4+IHVzaW5nIHZv aWRfdCA9IHZvaWQ7Ci0rdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPgotK3N0 cnVjdCBTa1BERkhhcmZCdXp6U3Vic2V0IHsKLSsgICAgLy8gVGhpcyBpcyB0aGUgSGFyZkJ1enog My4wIGludGVyZmFjZS4KLSsgICAgLy8gaGJfc3Vic2V0X2ZsYWdzX3QgZG9lcyBub3QgZXhpc3Qg aW4gMi4wLiBJdCBpc24ndCBkZXBlbmRlbnQgb24gVCwgc28gaW5saW5lIHRoZSB2YWx1ZSBvZgot KyAgICAvLyBIQl9TVUJTRVRfRkxBR1NfUkVUQUlOX0dJRFMgdW50aWwgMi4wIGlzIG5vIGxvbmdl ciBzdXBwb3J0ZWQuCi0rICAgIHN0YXRpYyBIQkZhY2UgTWFrZShUIGlucHV0LCBoYl9mYWNlX3Qq IGZhY2UpIHsKLSsgICAgICAgIC8vIFRPRE86IFdoZW4gcG9zc2libGUsIGNoZWNrIGlmIGEgZm9u dCBpcyAndHJpY2t5JyB3aXRoIEZUX0lTX1RSSUNLWS4KLSsgICAgICAgIC8vIElmIGl0IGlzbid0 IGtub3duIGlmIGEgZm9udCBpcyAndHJpY2t5JywgcmV0YWluIHRoZSBoaW50cy4KLSsgICAgICAg IGhiX3N1YnNldF9pbnB1dF9zZXRfZmxhZ3MoaW5wdXQsIDIvKkhCX1NVQlNFVF9GTEFHU19SRVRB SU5fR0lEUyovKTsKLSsgICAgICAgIHJldHVybiBIQkZhY2UoaGJfc3Vic2V0X29yX2ZhaWwoZmFj ZSwgaW5wdXQpKTsKLSsgICAgfQotK307Ci0rdGVtcGxhdGU8dHlwZW5hbWUgVD4KLStzdHJ1Y3Qg U2tQREZIYXJmQnV6elN1YnNldDxULCB2b2lkX3Q8Ci0rICAgIGRlY2x0eXBlKGhiX3N1YnNldF9p bnB1dF9zZXRfcmV0YWluX2dpZHMoc3RkOjpkZWNsdmFsPFQ+KCksIHN0ZDo6ZGVjbHZhbDxib29s PigpKSksCi0rICAgIGRlY2x0eXBlKGhiX3N1YnNldF9pbnB1dF9zZXRfZHJvcF9oaW50cyhzdGQ6 OmRlY2x2YWw8VD4oKSwgc3RkOjpkZWNsdmFsPGJvb2w+KCkpKSwKLSsgICAgZGVjbHR5cGUoaGJf c3Vic2V0KHN0ZDo6ZGVjbHZhbDxoYl9mYWNlX3QqPigpLCBzdGQ6OmRlY2x2YWw8VD4oKSkpCi0r ICAgID4+Ci0rewotKyAgICAvLyBUaGlzIGlzIHRoZSBIYXJmQnV6eiAyLjAgKG5vbi1wdWJsaWMp IGludGVyZmFjZSwgdXNlZCBpZiBpdCBleGlzdHMuCi0rICAgIC8vIFRoaXMgY29kZSBzaG91bGQg YmUgcmVtb3ZlZCBhcyBzb29uIGFzIGFsbCB1c2VycyBhcmUgbWlncmF0ZWQgdG8gdGhlIG5ld2Vy IEFQSS4KLSsgICAgc3RhdGljIEhCRmFjZSBNYWtlKFQgaW5wdXQsIGhiX2ZhY2VfdCogZmFjZSkg ewotKyAgICAgICAgaGJfc3Vic2V0X2lucHV0X3NldF9yZXRhaW5fZ2lkcyhpbnB1dCwgdHJ1ZSk7 Ci0rICAgICAgICAvLyBUT0RPOiBXaGVuIHBvc3NpYmxlLCBjaGVjayBpZiBhIGZvbnQgaXMgJ3Ry aWNreScgd2l0aCBGVF9JU19UUklDS1kuCi0rICAgICAgICAvLyBJZiBpdCBpc24ndCBrbm93biBp ZiBhIGZvbnQgaXMgJ3RyaWNreScsIHJldGFpbiB0aGUgaGludHMuCi0rICAgICAgICBoYl9zdWJz ZXRfaW5wdXRfc2V0X2Ryb3BfaGludHMoaW5wdXQsIGZhbHNlKTsKLSsgICAgICAgIHJldHVybiBI QkZhY2UoaGJfc3Vic2V0KGZhY2UsIGlucHV0KSk7Ci0rICAgIH0KLSt9OwotKwotIHN0YXRpYyBz a19zcDxTa0RhdGE+IHN1YnNldF9oYXJmYnV6eihza19zcDxTa0RhdGE+IGZvbnREYXRhLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTa1BERkdseXBoVXNlJiBn bHlwaFVzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHRj SW5kZXgpIHsKLUBAIC03MSwxMSArMTAyLDEwIEBAIHN0YXRpYyBza19zcDxTa0RhdGE+IHN1YnNl dF9oYXJmYnV6eihza19zcDxTa0RhdGE+IGZvbnREYXRhLAotICAgICBoYl9zZXRfdCogZ2x5cGhz ID0gaGJfc3Vic2V0X2lucHV0X2dseXBoX3NldChpbnB1dC5nZXQoKSk7Ci0gICAgIGdseXBoVXNh Z2UuZ2V0U2V0VmFsdWVzKFsmZ2x5cGhzXSh1bnNpZ25lZCBnaWQpIHsgaGJfc2V0X2FkZChnbHlw aHMsIGdpZCk7fSk7Ci0gCi0tICAgIGhiX3N1YnNldF9pbnB1dF9zZXRfcmV0YWluX2dpZHMoaW5w dXQuZ2V0KCksIHRydWUpOwotLSAgICAvLyBUT0RPOiBXaGVuIHBvc3NpYmxlLCBjaGVjayBpZiBh IGZvbnQgaXMgJ3RyaWNreScgd2l0aCBGVF9JU19UUklDS1kuCi0tICAgIC8vIElmIGl0IGlzbid0 IGtub3duIGlmIGEgZm9udCBpcyAndHJpY2t5JywgcmV0YWluIHRoZSBoaW50cy4KLS0gICAgaGJf c3Vic2V0X2lucHV0X3NldF9kcm9wX2hpbnRzKGlucHV0LmdldCgpLCBmYWxzZSk7Ci0tICAgIEhC RmFjZSBzdWJzZXQoaGJfc3Vic2V0KGZhY2UuZ2V0KCksIGlucHV0LmdldCgpKSk7Ci0rICAgIEhC RmFjZSBzdWJzZXQgPSBTa1BERkhhcmZCdXp6U3Vic2V0PGhiX3N1YnNldF9pbnB1dF90Kj46Ok1h a2UoaW5wdXQuZ2V0KCksIGZhY2UuZ2V0KCkpOwotKyAgICBpZiAoIXN1YnNldCkgewotKyAgICAg ICAgcmV0dXJuIG51bGxwdHI7Ci0rICAgIH0KLSAgICAgSEJCbG9iIHJlc3VsdChoYl9mYWNlX3Jl ZmVyZW5jZV9ibG9iKHN1YnNldC5nZXQoKSkpOwotICAgICByZXR1cm4gdG9fZGF0YShzdGQ6Om1v dmUocmVzdWx0KSk7Ci0gfQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2hhcmZidXp6L0JVSUxE LmduIGIvdGhpcmRfcGFydHkvaGFyZmJ1enovQlVJTEQuZ24KLWluZGV4IDE3MzgzMGRlNjIuLjQx NTY2MDdlZjkgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L2hhcmZi dXp6L0JVSUxELmduCi0rKysgYi90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L2hhcmZidXp6 L0JVSUxELmduCi1AQCAtMTQsNiArMTQsOSBAQCBpZiAoc2tpYV91c2Vfc3lzdGVtX2hhcmZidXp6 KSB7Ci0gICAgICAgImhhcmZidXp6IiwKLSAgICAgICAiaGFyZmJ1enotaWN1IiwKLSAgICAgXQot KyAgICBpZiAoc2tpYV9wZGZfc3Vic2V0X2hhcmZidXp6KSB7Ci0rICAgICAgbGlicyArPSBbICJo YXJmYnV6ei1zdWJzZXQiIF0KLSsgICAgfQotICAgfQotIH0gZWxzZSB7Ci0gICB0aGlyZF9wYXJ0 eSgiaGFyZmJ1enoiKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS1zbmRpby5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRj aGVzL2Nocm9taXVtLXNuZGlvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0 Y2FiNDhkNTA4MjEuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS1zbmRpby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg4NiArMCww IEBACi1kaWZmIC1OYXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlhL0JVSUxELmdu IGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9CVUlMRC5nbgotLS0tIGEvbWVkaWEvQlVJTEQu Z24ub3JpZwkyMDIwLTA2LTAzIDIwOjQwOjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGEvbWVkaWEv QlVJTEQuZ24JMjAyMC0wNi0xMyAxNzozMjoyOC41MTAzOTU5NzUgKzAyMDAKLUBAIC02NSw2ICs2 NSw5IEBACi0gICAgICAgZGVmaW5lcyArPSBbICJETE9QRU5fUFVMU0VBVURJTyIgXQotICAgICB9 Ci0gICB9Ci0rICBpZiAodXNlX3NuZGlvKSB7Ci0rICAgIGRlZmluZXMgKz0gWyAiVVNFX1NORElP IiBdCi0rICB9Ci0gICBpZiAodXNlX2NyYXMpIHsKLSAgICAgZGVmaW5lcyArPSBbICJVU0VfQ1JB UyIgXQotICAgfQotZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9tZWRpYS9h dWRpby9CVUlMRC5nbiBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVkaWEvYXVkaW8vQlVJTEQuZ24K LS0tLSBhL21lZGlhL2F1ZGlvL0JVSUxELmduLm9yaWcJMjAyMC0wNi0wMyAyMDozOTozNy4wMDAw MDAwMDAgKzAyMDAKLSsrKyBhL21lZGlhL2F1ZGlvL0JVSUxELmduCTIwMjAtMDYtMTMgMTc6MzI6 MjguNTExMzk1OTY5ICswMjAwCi1AQCAtMjM2LDYgKzIzNiwxNyBAQAotICAgICBzb3VyY2VzICs9 IFsgImxpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MiIF0KLSAgIH0KLSAKLSsgIGlmICh1c2Vf c25kaW8pIHsKLSsgICAgbGlicyArPSBbICJzbmRpbyIgXQotKyAgICBzb3VyY2VzICs9IFsKLSsg ICAgICAic25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5jYyIsCi0rICAgICAgInNuZGlvL3NuZGlv X2lucHV0LmNjIiwKLSsgICAgICAic25kaW8vc25kaW9faW5wdXQuaCIsCi0rICAgICAgInNuZGlv L3NuZGlvX291dHB1dC5jYyIsCi0rICAgICAgInNuZGlvL3NuZGlvX291dHB1dC5oIgotKyAgICBd Ci0rICB9Ci0rCi0gICBpZiAodXNlX2Fsc2EpIHsKLSAgICAgbGlicyArPSBbICJhc291bmQiIF0K LSAgICAgc291cmNlcyArPSBbCi1kaWZmIC1OYXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmln L21lZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MgY2hyb21pdW0tODMuMC40 MTAzLjk3L21lZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MKLS0tLSBhL21l ZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2Mub3JpZwkyMDIwLTA2LTAzIDIw OjM5OjM3LjAwMDAwMDAwMCArMDIwMAotKysrIGEvbWVkaWEvYXVkaW8vbGludXgvYXVkaW9fbWFu YWdlcl9saW51eC5jYwkyMDIwLTA2LTEzIDE4OjA5OjQzLjYyMzMzMzE2NyArMDIwMAotQEAgLTE5 LDYgKzE5LDExIEBACi0gI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3B1bHNlL2F1ZGlvX21hbmFnZXJf cHVsc2UuaCIKLSAjaW5jbHVkZSAibWVkaWEvYXVkaW8vcHVsc2UvcHVsc2VfdXRpbC5oIgotICNl bmRpZgotKyNpZiBkZWZpbmVkKFVTRV9TTkRJTykKLSsjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25k aW8vYXVkaW9fbWFuYWdlcl9zbmRpby5oIgotKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9z bmRpb19pbnB1dC5oIgotKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQu aCIKLSsjZW5kaWYKLSAKLSBuYW1lc3BhY2UgbWVkaWEgewotIAotQEAgLTI2LDcgKzMxLDggQEAK LSAgIGtQdWxzZSwKLSAgIGtBbHNhLAotICAga0NyYXMsCi0tICBrQXVkaW9JT01heCA9IGtDcmFz ICAvLyBNdXN0IGFsd2F5cyBiZSBlcXVhbCB0byBsYXJnZXN0IGxvZ2dlZCBlbnRyeS4KLSsgIGtT bmRpbywKLSsgIGtBdWRpb0lPTWF4ID0ga1NuZGlvIC8vIE11c3QgYWx3YXlzIGJlIGVxdWFsIHRv IGxhcmdlc3QgbG9nZ2VkIGVudHJ5LgotIH07Ci0gCi0gc3RkOjp1bmlxdWVfcHRyPG1lZGlhOjpB dWRpb01hbmFnZXI+IENyZWF0ZUF1ZGlvTWFuYWdlcigKLUBAIC0zOSw2ICs0NSwxNiBAQAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19sb2dfZmFj dG9yeSk7Ci0gICB9Ci0gCi0rI2lmIGRlZmluZWQoVVNFX1NORElPKQotKyAgc3RydWN0IHNpb19o ZGwgKmhkbCA9IHNpb19vcGVuKFNJT19ERVZBTlksIFNJT19QTEFZLCAwKTsKLSsgIGlmIChoZGwg IT0gTlVMTCkgewotKyAgICBzaW9fY2xvc2UoaGRsKTsKLSsgICAgVU1BX0hJU1RPR1JBTV9FTlVN RVJBVElPTigiTWVkaWEuTGludXhBdWRpb0lPIiwga1NuZGlvLCBrQXVkaW9JT01heCArIDEpOwot KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb01hbmFnZXJTbmRpbz4oc3RkOjptb3Zl KGF1ZGlvX3RocmVhZCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhdWRpb19sb2dfZmFjdG9yeSk7Ci0rICB9Ci0rI2VuZGlmCi0rCi0gI2lmIGRl ZmluZWQoVVNFX0NSQVMpCi0gICBpZiAoYmFzZTo6Q29tbWFuZExpbmU6OkZvckN1cnJlbnRQcm9j ZXNzKCktPkhhc1N3aXRjaChzd2l0Y2hlczo6a1VzZUNyYXMpKSB7Ci0gICAgIFVNQV9ISVNUT0dS QU1fRU5VTUVSQVRJT04oIk1lZGlhLkxpbnV4QXVkaW9JTyIsIGtDcmFzLCBrQXVkaW9JT01heCAr IDEpOwotZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9tZWRpYS9hdWRpby9z bmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmNjIGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9h dWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmNjCi0tLS0gYS9tZWRpYS9hdWRpby9zbmRp by9hdWRpb19tYW5hZ2VyX3NuZGlvLmNjLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBhL21lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uY2MJ MjAyMC0wNi0xMyAxNzozMjoyOC41MTEzOTU5NjkgKzAyMDAKLUBAIC0wLDAgKzEsMTQ4IEBACi0r Ly8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl c2VydmVkLgotKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSsvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl LgotKwotKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmgi Ci0rCi0rI2luY2x1ZGUgImJhc2UvbWV0cmljcy9oaXN0b2dyYW1fbWFjcm9zLmgiCi0rI2luY2x1 ZGUgImJhc2UvbWVtb3J5L3B0cl91dGlsLmgiCi0rI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlv X2RldmljZV9kZXNjcmlwdGlvbi5oIgotKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19vdXRw dXRfZGlzcGF0Y2hlci5oIgotKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1 dC5oIgotKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaCIKLSsjaW5j bHVkZSAibWVkaWEvYmFzZS9saW1pdHMuaCIKLSsjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYV9z d2l0Y2hlcy5oIgotKwotK25hbWVzcGFjZSBtZWRpYSB7Ci0rCi0rCi0rLy8gTWF4aW11bSBudW1i ZXIgb2Ygb3V0cHV0IHN0cmVhbXMgdGhhdCBjYW4gYmUgb3BlbiBzaW11bHRhbmVvdXNseS4KLStz dGF0aWMgY29uc3QgaW50IGtNYXhPdXRwdXRTdHJlYW1zID0gNDsKLSsKLSsvLyBEZWZhdWx0IHNh bXBsZSByYXRlIGZvciBpbnB1dCBhbmQgb3V0cHV0IHN0cmVhbXMuCi0rc3RhdGljIGNvbnN0IGlu dCBrRGVmYXVsdFNhbXBsZVJhdGUgPSA0ODAwMDsKLSsKLSt2b2lkIEFkZERlZmF1bHREZXZpY2Uo QXVkaW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSB7Ci0rICBEQ0hFQ0soZGV2aWNlX25hbWVz LT5lbXB0eSgpKTsKLSsgIGRldmljZV9uYW1lcy0+cHVzaF9mcm9udChBdWRpb0RldmljZU5hbWU6 OkNyZWF0ZURlZmF1bHQoKSk7Ci0rfQotKwotK2Jvb2wgQXVkaW9NYW5hZ2VyU25kaW86Okhhc0F1 ZGlvT3V0cHV0RGV2aWNlcygpIHsKLSsgIHJldHVybiB0cnVlOwotK30KLSsKLStib29sIEF1ZGlv TWFuYWdlclNuZGlvOjpIYXNBdWRpb0lucHV0RGV2aWNlcygpIHsKLSsgIHJldHVybiB0cnVlOwot K30KLSsKLSt2b2lkIEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRBdWRpb0lucHV0RGV2aWNlTmFtZXMo Ci0rICAgIEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgewotKyAgRENIRUNLKGRldmlj ZV9uYW1lcy0+ZW1wdHkoKSk7Ci0rICBBZGREZWZhdWx0RGV2aWNlKGRldmljZV9uYW1lcyk7Ci0r fQotKwotK3ZvaWQgQXVkaW9NYW5hZ2VyU25kaW86OkdldEF1ZGlvT3V0cHV0RGV2aWNlTmFtZXMo Ci0rICAgIEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgewotKyAgQWRkRGVmYXVsdERl dmljZShkZXZpY2VfbmFtZXMpOwotK30KLSsKLStjb25zdCBjaGFyKiBBdWRpb01hbmFnZXJTbmRp bzo6R2V0TmFtZSgpIHsKLSsgIHJldHVybiAiU05ESU8iOwotK30KLSsKLStBdWRpb1BhcmFtZXRl cnMgQXVkaW9NYW5hZ2VyU25kaW86OkdldElucHV0U3RyZWFtUGFyYW1ldGVycygKLSsgICAgY29u c3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCkgewotKyAgc3RhdGljIGNvbnN0IGludCBrRGVmYXVs dElucHV0QnVmZmVyU2l6ZSA9IDEwMjQ7Ci0rCi0rICBpbnQgdXNlcl9idWZmZXJfc2l6ZSA9IEdl dFVzZXJCdWZmZXJTaXplKCk7Ci0rICBpbnQgYnVmZmVyX3NpemUgPSB1c2VyX2J1ZmZlcl9zaXpl ID8KLSsgICAgICB1c2VyX2J1ZmZlcl9zaXplIDoga0RlZmF1bHRJbnB1dEJ1ZmZlclNpemU7Ci0r Ci0rICByZXR1cm4gQXVkaW9QYXJhbWV0ZXJzKAotKyAgICAgIEF1ZGlvUGFyYW1ldGVyczo6QVVE SU9fUENNX0xPV19MQVRFTkNZLCBDSEFOTkVMX0xBWU9VVF9TVEVSRU8sCi0rICAgICAga0RlZmF1 bHRTYW1wbGVSYXRlLCBidWZmZXJfc2l6ZSk7Ci0rfQotKwotK0F1ZGlvTWFuYWdlclNuZGlvOjpB dWRpb01hbmFnZXJTbmRpbyhzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9UaHJlYWQ+IGF1ZGlvX3RocmVh ZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTG9nRmFj dG9yeSogYXVkaW9fbG9nX2ZhY3RvcnkpCi0rICAgIDogQXVkaW9NYW5hZ2VyQmFzZShzdGQ6Om1v dmUoYXVkaW9fdGhyZWFkKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2xvZ19mYWN0 b3J5KSB7Ci0rICBETE9HKFdBUk5JTkcpIDw8ICJBdWRpb01hbmFnZXJTbmRpbyI7Ci0rICBTZXRN YXhPdXRwdXRTdHJlYW1zQWxsb3dlZChrTWF4T3V0cHV0U3RyZWFtcyk7Ci0rfQotKwotK0F1ZGlv TWFuYWdlclNuZGlvOjp+QXVkaW9NYW5hZ2VyU25kaW8oKSB7Ci0rICBTaHV0ZG93bigpOwotK30K LSsKLStBdWRpb091dHB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VMaW5lYXJPdXRw dXRTdHJlYW0oCi0rICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAotKyAgICBjb25z dCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7Ci0rICBEQ0hFQ0tfRVEoQXVkaW9QYXJhbWV0 ZXJzOjpBVURJT19QQ01fTElORUFSLCBwYXJhbXMuZm9ybWF0KCkpOwotKyAgcmV0dXJuIE1ha2VP dXRwdXRTdHJlYW0ocGFyYW1zKTsKLSt9Ci0rCi0rQXVkaW9PdXRwdXRTdHJlYW0qIEF1ZGlvTWFu YWdlclNuZGlvOjpNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVhbSgKLSsgICAgY29uc3QgQXVkaW9Q YXJhbWV0ZXJzJiBwYXJhbXMsCi0rICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCi0r ICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsKLSsgIERMT0dfSUYoRVJST1Is ICFkZXZpY2VfaWQuZW1wdHkoKSkgPDwgIk5vdCBpbXBsZW1lbnRlZCEiOwotKyAgRENIRUNLX0VR KEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBwYXJhbXMuZm9ybWF0KCkp OwotKyAgcmV0dXJuIE1ha2VPdXRwdXRTdHJlYW0ocGFyYW1zKTsKLSt9Ci0rCi0rQXVkaW9JbnB1 dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VMaW5lYXJJbnB1dFN0cmVhbSgKLSsgICAg Y29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCi0rICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBk ZXZpY2VfaWQsCi0rICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsKLSsgIERD SEVDS19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIsIHBhcmFtcy5mb3JtYXQo KSk7Ci0rICByZXR1cm4gTWFrZUlucHV0U3RyZWFtKHBhcmFtcyk7Ci0rfQotKwotK0F1ZGlvSW5w dXRTdHJlYW0qIEF1ZGlvTWFuYWdlclNuZGlvOjpNYWtlTG93TGF0ZW5jeUlucHV0U3RyZWFtKAot KyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKLSsgICAgY29uc3Qgc3RkOjpzdHJp bmcmIGRldmljZV9pZCwKLSsgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgewot KyAgRENIRUNLX0VRKEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBwYXJh bXMuZm9ybWF0KCkpOwotKyAgcmV0dXJuIE1ha2VJbnB1dFN0cmVhbShwYXJhbXMpOwotK30KLSsK LStBdWRpb1BhcmFtZXRlcnMgQXVkaW9NYW5hZ2VyU25kaW86OkdldFByZWZlcnJlZE91dHB1dFN0 cmVhbVBhcmFtZXRlcnMoCi0rICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lk LAotKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIGlucHV0X3BhcmFtcykgewotKyAgLy8gVE9E Tyh0b21taSk6IFN1cHBvcnQgfG91dHB1dF9kZXZpY2VfaWR8LgotKyAgRExPR19JRihFUlJPUiwg IW91dHB1dF9kZXZpY2VfaWQuZW1wdHkoKSkgPDwgIk5vdCBpbXBsZW1lbnRlZCEiOwotKyAgc3Rh dGljIGNvbnN0IGludCBrRGVmYXVsdE91dHB1dEJ1ZmZlclNpemUgPSAyMDQ4OwotKwotKyAgQ2hh bm5lbExheW91dCBjaGFubmVsX2xheW91dCA9IENIQU5ORUxfTEFZT1VUX1NURVJFTzsKLSsgIGlu dCBzYW1wbGVfcmF0ZSA9IGtEZWZhdWx0U2FtcGxlUmF0ZTsKLSsgIGludCBidWZmZXJfc2l6ZSA9 IGtEZWZhdWx0T3V0cHV0QnVmZmVyU2l6ZTsKLSsgIGlmIChpbnB1dF9wYXJhbXMuSXNWYWxpZCgp KSB7Ci0rICAgIHNhbXBsZV9yYXRlID0gaW5wdXRfcGFyYW1zLnNhbXBsZV9yYXRlKCk7Ci0rICAg IGNoYW5uZWxfbGF5b3V0ID0gaW5wdXRfcGFyYW1zLmNoYW5uZWxfbGF5b3V0KCk7Ci0rICAgIGJ1 ZmZlcl9zaXplID0gc3RkOjptaW4oYnVmZmVyX3NpemUsIGlucHV0X3BhcmFtcy5mcmFtZXNfcGVy X2J1ZmZlcigpKTsKLSsgIH0KLSsKLSsgIGludCB1c2VyX2J1ZmZlcl9zaXplID0gR2V0VXNlckJ1 ZmZlclNpemUoKTsKLSsgIGlmICh1c2VyX2J1ZmZlcl9zaXplKQotKyAgICBidWZmZXJfc2l6ZSA9 IHVzZXJfYnVmZmVyX3NpemU7Ci0rCi0rICByZXR1cm4gQXVkaW9QYXJhbWV0ZXJzKAotKyAgICAg IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBjaGFubmVsX2xheW91dCwK LSsgICAgICBzYW1wbGVfcmF0ZSwgYnVmZmVyX3NpemUpOwotK30KLSsKLStBdWRpb0lucHV0U3Ry ZWFtKiBBdWRpb01hbmFnZXJTbmRpbzo6TWFrZUlucHV0U3RyZWFtKAotKyAgICBjb25zdCBBdWRp b1BhcmFtZXRlcnMmIHBhcmFtcykgewotKyAgRExPRyhXQVJOSU5HKSA8PCAiTWFrZUlucHV0U3Ry ZWFtIjsKLSsgIHJldHVybiBuZXcgU25kaW9BdWRpb0lucHV0U3RyZWFtKHRoaXMsCi0rICAgICAg ICAgICAgIEF1ZGlvRGV2aWNlRGVzY3JpcHRpb246OmtEZWZhdWx0RGV2aWNlSWQsIHBhcmFtcyk7 Ci0rfQotKwotK0F1ZGlvT3V0cHV0U3RyZWFtKiBBdWRpb01hbmFnZXJTbmRpbzo6TWFrZU91dHB1 dFN0cmVhbSgKLSsgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpIHsKLSsgIERMT0co V0FSTklORykgPDwgIk1ha2VPdXRwdXRTdHJlYW0iOwotKyAgcmV0dXJuIG5ldyBTbmRpb0F1ZGlv T3V0cHV0U3RyZWFtKHBhcmFtcywgdGhpcyk7Ci0rfQotKwotK30gIC8vIG5hbWVzcGFjZSBtZWRp YQotZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9tZWRpYS9hdWRpby9zbmRp by9hdWRpb19tYW5hZ2VyX3NuZGlvLmggY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL2F1ZGlv L3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaAotLS0tIGEvbWVkaWEvYXVkaW8vc25kaW8vYXVk aW9fbWFuYWdlcl9zbmRpby5oLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBhL21lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaAkyMDIwLTA2 LTEzIDE3OjMyOjI4LjUxMTM5NTk2OSArMDIwMAotQEAgLTAsMCArMSw2NSBAQAotKy8vIENvcHly aWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K LSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs aWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSsKLSsj aWZuZGVmIE1FRElBX0FVRElPX1NORElPX0FVRElPX01BTkFHRVJfU05ESU9fSF8KLSsjZGVmaW5l IE1FRElBX0FVRElPX1NORElPX0FVRElPX01BTkFHRVJfU05ESU9fSF8KLSsKLSsjaW5jbHVkZSA8 c2V0PgotKwotKyNpbmNsdWRlICJiYXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCi0rI2luY2x1ZGUg ImJhc2UvbWFjcm9zLmgiCi0rI2luY2x1ZGUgImJhc2UvbWVtb3J5L3JlZl9jb3VudGVkLmgiCi0r I2luY2x1ZGUgImJhc2UvdGhyZWFkaW5nL3RocmVhZC5oIgotKyNpbmNsdWRlICJtZWRpYS9hdWRp by9hdWRpb19tYW5hZ2VyX2Jhc2UuaCIKLSsKLStuYW1lc3BhY2UgbWVkaWEgewotKwotK2NsYXNz IE1FRElBX0VYUE9SVCBBdWRpb01hbmFnZXJTbmRpbyA6IHB1YmxpYyBBdWRpb01hbmFnZXJCYXNl IHsKLSsgcHVibGljOgotKyAgQXVkaW9NYW5hZ2VyU25kaW8oc3RkOjp1bmlxdWVfcHRyPEF1ZGlv VGhyZWFkPiBhdWRpb190aHJlYWQsCi0rICAgICAgICAgICAgICAgICAgIEF1ZGlvTG9nRmFjdG9y eSogYXVkaW9fbG9nX2ZhY3RvcnkpOwotKyAgfkF1ZGlvTWFuYWdlclNuZGlvKCkgb3ZlcnJpZGU7 Ci0rCi0rICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb01hbmFnZXIuCi0rICBib29sIEhhc0F1 ZGlvT3V0cHV0RGV2aWNlcygpIG92ZXJyaWRlOwotKyAgYm9vbCBIYXNBdWRpb0lucHV0RGV2aWNl cygpIG92ZXJyaWRlOwotKyAgdm9pZCBHZXRBdWRpb0lucHV0RGV2aWNlTmFtZXMoQXVkaW9EZXZp Y2VOYW1lcyogZGV2aWNlX25hbWVzKSBvdmVycmlkZTsKLSsgIHZvaWQgR2V0QXVkaW9PdXRwdXRE ZXZpY2VOYW1lcyhBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIG92ZXJyaWRlOwotKyAg QXVkaW9QYXJhbWV0ZXJzIEdldElucHV0U3RyZWFtUGFyYW1ldGVycygKLSsgICAgICBjb25zdCBz dGQ6OnN0cmluZyYgZGV2aWNlX2lkKSBvdmVycmlkZTsKLSsgIGNvbnN0IGNoYXIqIEdldE5hbWUo KSBvdmVycmlkZTsKLSsKLSsgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvTWFuYWdlckJhc2Uu Ci0rICBBdWRpb091dHB1dFN0cmVhbSogTWFrZUxpbmVhck91dHB1dFN0cmVhbSgKLSsgICAgICBj b25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKLSsgICAgICBjb25zdCBMb2dDYWxsYmFjayYg bG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKLSsgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlTG93TGF0 ZW5jeU91dHB1dFN0cmVhbSgKLSsgICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywK LSsgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAotKyAgICAgIGNvbnN0IExvZ0Nh bGxiYWNrJiBsb2dfY2FsbGJhY2spIG92ZXJyaWRlOwotKyAgQXVkaW9JbnB1dFN0cmVhbSogTWFr ZUxpbmVhcklucHV0U3RyZWFtKAotKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1z LAotKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCi0rICAgICAgY29uc3QgTG9n Q2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7Ci0rICBBdWRpb0lucHV0U3RyZWFtKiBN YWtlTG93TGF0ZW5jeUlucHV0U3RyZWFtKAotKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYg cGFyYW1zLAotKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCi0rICAgICAgY29u c3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7Ci0rCi0rIHByb3RlY3RlZDoK LSsgIEF1ZGlvUGFyYW1ldGVycyBHZXRQcmVmZXJyZWRPdXRwdXRTdHJlYW1QYXJhbWV0ZXJzKAot KyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkLAotKyAgICAgIGNvbnN0 IEF1ZGlvUGFyYW1ldGVycyYgaW5wdXRfcGFyYW1zKSBvdmVycmlkZTsKLSsKLSsgcHJpdmF0ZToK LSsgIC8vIENhbGxlZCBieSBNYWtlTGluZWFyT3V0cHV0U3RyZWFtIGFuZCBNYWtlTG93TGF0ZW5j eU91dHB1dFN0cmVhbS4KLSsgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlT3V0cHV0U3RyZWFtKGNv bnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsKLSsgIEF1ZGlvSW5wdXRTdHJlYW0qIE1ha2VJ bnB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcyk7Ci0rCi0rICBESVNBTExP V19DT1BZX0FORF9BU1NJR04oQXVkaW9NYW5hZ2VyU25kaW8pOwotK307Ci0rCi0rfSAgLy8gbmFt ZXNwYWNlIG1lZGlhCi0rCi0rI2VuZGlmICAvLyBNRURJQV9BVURJT19TTkRJT19BVURJT19NQU5B R0VSX1NORElPX0hfCi1kaWZmIC1OYXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlh L2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmNjIGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9h dWRpby9zbmRpby9zbmRpb19pbnB1dC5jYwotLS0tIGEvbWVkaWEvYXVkaW8vc25kaW8vc25kaW9f aW5wdXQuY2Mub3JpZwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGEv bWVkaWEvYXVkaW8vc25kaW8vc25kaW9faW5wdXQuY2MJMjAyMC0wNi0xMyAxNzozMjoyOC41MTEz OTU5NjkgKzAyMDAKLUBAIC0wLDAgKzEsMjAwIEBACi0rLy8gQ29weXJpZ2h0IDIwMTMgVGhlIENo cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rLy8gVXNlIG9mIHRoaXMgc291 cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0rCi0rI2luY2x1ZGUgImJhc2UvYmluZC5o IgotKyNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLSsjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIK LSsjaW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb190aW1lc3RhbXBfaGVscGVyLmgiCi0rI2luY2x1 ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaCIKLSsjaW5jbHVkZSAi bWVkaWEvYXVkaW8vYXVkaW9fbWFuYWdlci5oIgotKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRp by9zbmRpb19pbnB1dC5oIgotKwotK25hbWVzcGFjZSBtZWRpYSB7Ci0rCi0rc3RhdGljIGNvbnN0 IFNhbXBsZUZvcm1hdCBrU2FtcGxlRm9ybWF0ID0ga1NhbXBsZUZvcm1hdFMxNjsKLSsKLSt2b2lk IFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6T25Nb3ZlQ2FsbGJhY2sodm9pZCAqYXJnLCBpbnQgZGVs dGEpCi0rewotKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25k aW9BdWRpb0lucHV0U3RyZWFtKj4oYXJnKTsKLSsKLSsgIHNlbGYtPmh3X2RlbGF5ICs9IGRlbHRh OwotK30KLSsKLSt2b2lkICpTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlRocmVhZEVudHJ5KHZvaWQg KmFyZykgewotKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25k aW9BdWRpb0lucHV0U3RyZWFtKj4oYXJnKTsKLSsKLSsgIHNlbGYtPlRocmVhZExvb3AoKTsKLSsg IHJldHVybiBOVUxMOwotK30KLSsKLStTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlNuZGlvQXVkaW9J bnB1dFN0cmVhbShBdWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfbmFt ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBB dWRpb1BhcmFtZXRlcnMmIHBhcmFtcykKLSsgICAgOiBtYW5hZ2VyKG1hbmFnZXIpLAotKyAgICAg IHBhcmFtcyhwYXJhbXMpLAotKyAgICAgIGF1ZGlvX2J1cyhBdWRpb0J1czo6Q3JlYXRlKHBhcmFt cykpLAotKyAgICAgIHN0YXRlKGtDbG9zZWQpIHsKLSt9Ci0rCi0rU25kaW9BdWRpb0lucHV0U3Ry ZWFtOjp+U25kaW9BdWRpb0lucHV0U3RyZWFtKCkgewotKyAgaWYgKHN0YXRlICE9IGtDbG9zZWQp Ci0rICAgIENsb3NlKCk7Ci0rfQotKwotK2Jvb2wgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpPcGVu KCkgewotKyAgc3RydWN0IHNpb19wYXIgcGFyOwotKyAgaW50IHNpZzsKLSsKLSsgIGlmIChzdGF0 ZSAhPSBrQ2xvc2VkKQotKyAgICByZXR1cm4gZmFsc2U7Ci0rCi0rICBpZiAocGFyYW1zLmZvcm1h dCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiAmJgotKyAgICAgIHBhcmFt cy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSkgewot KyAgICBMT0coV0FSTklORykgPDwgIlVuc3VwcG9ydGVkIGF1ZGlvIGZvcm1hdC4iOwotKyAgICBy ZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBzaW9faW5pdHBhcigmcGFyKTsKLSsgIHBhci5yYXRl ID0gcGFyYW1zLnNhbXBsZV9yYXRlKCk7Ci0rICBwYXIucmNoYW4gPSBwYXJhbXMuY2hhbm5lbHMo KTsKLSsgIHBhci5iaXRzID0gU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9y bWF0KTsKLSsgIHBhci5icHMgPSBwYXIuYml0cyAvIDg7Ci0rICBwYXIuc2lnID0gc2lnID0gcGFy LmJpdHMgIT0gOCA/IDEgOiAwOwotKyAgcGFyLmxlID0gU0lPX0xFX05BVElWRTsKLSsgIHBhci5h cHBidWZzeiA9IHBhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpOwotKwotKyAgaGRsID0gc2lvX29w ZW4oU0lPX0RFVkFOWSwgU0lPX1JFQywgMCk7Ci0rCi0rICBpZiAoaGRsID09IE5VTEwpIHsKLSsg ICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgb3BlbiBhdWRpbyBkZXZpY2UuIjsKLSsgICAgcmV0 dXJuIGZhbHNlOwotKyAgfQotKwotKyAgaWYgKCFzaW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNp b19nZXRwYXIoaGRsLCAmcGFyKSkgewotKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCBzZXQg YXVkaW8gcGFyYW1ldGVycy4iOwotKyAgICBnb3RvIGJhZF9jbG9zZTsKLSsgIH0KLSsKLSsgIGlm IChwYXIucmF0ZSAgIT0gKHVuc2lnbmVkIGludClwYXJhbXMuc2FtcGxlX3JhdGUoKSB8fAotKyAg ICAgIHBhci5yY2hhbiAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5jaGFubmVscygpIHx8Ci0rICAg ICAgcGFyLmJpdHMgICE9ICh1bnNpZ25lZCBpbnQpU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5l bChrU2FtcGxlRm9ybWF0KSB8fAotKyAgICAgIHBhci5zaWcgICAhPSAodW5zaWduZWQgaW50KXNp ZyB8fAotKyAgICAgIChwYXIuYnBzID4gMSAmJiBwYXIubGUgIT0gU0lPX0xFX05BVElWRSkgfHwK LSsgICAgICAocGFyLmJpdHMgIT0gcGFyLmJwcyAqIDgpKSB7Ci0rICAgIExPRyhFUlJPUikgPDwg IlVuc3VwcG9ydGVkIGF1ZGlvIHBhcmFtZXRlcnMuIjsKLSsgICAgZ290byBiYWRfY2xvc2U7Ci0r ICB9Ci0rICBzdGF0ZSA9IGtTdG9wcGVkOwotKyAgYnVmZmVyID0gbmV3IGNoYXJbYXVkaW9fYnVz LT5mcmFtZXMoKSAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpXTsKLSsg IHNpb19vbm1vdmUoaGRsLCAmT25Nb3ZlQ2FsbGJhY2ssIHRoaXMpOwotKyAgcmV0dXJuIHRydWU7 Ci0rYmFkX2Nsb3NlOgotKyAgc2lvX2Nsb3NlKGhkbCk7Ci0rICByZXR1cm4gZmFsc2U7Ci0rfQot KwotK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpTdGFydChBdWRpb0lucHV0Q2FsbGJhY2sq IGNiKSB7Ci0rCi0rICBTdGFydEFnYygpOwotKwotKyAgc3RhdGUgPSBrUnVubmluZzsKLSsgIGh3 X2RlbGF5ID0gMDsKLSsgIGNhbGxiYWNrID0gY2I7Ci0rICBzaW9fc3RhcnQoaGRsKTsKLSsgIGlm IChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCAmVGhyZWFkRW50cnksIHRoaXMpICE9IDAp IHsKLSsgICAgTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSByZWFsLXRpbWUgdGhyZWFk IGZvciByZWNvcmRpbmcuIjsKLSsgICAgc2lvX3N0b3AoaGRsKTsKLSsgICAgc3RhdGUgPSBrU3Rv cHBlZDsKLSsgIH0KLSt9Ci0rCi0rdm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlN0b3AoKSB7 Ci0rCi0rICBpZiAoc3RhdGUgPT0ga1N0b3BwZWQpCi0rICAgIHJldHVybjsKLSsKLSsgIHN0YXRl ID0ga1N0b3BXYWl0OwotKyAgcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7Ci0rICBzaW9fc3Rv cChoZGwpOwotKyAgc3RhdGUgPSBrU3RvcHBlZDsKLSsKLSsgIFN0b3BBZ2MoKTsKLSt9Ci0rCi0r dm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OkNsb3NlKCkgewotKwotKyAgaWYgKHN0YXRlID09 IGtDbG9zZWQpCi0rICAgIHJldHVybjsKLSsKLSsgIGlmIChzdGF0ZSA9PSBrUnVubmluZykKLSsg ICAgU3RvcCgpOwotKwotKyAgc3RhdGUgPSBrQ2xvc2VkOwotKyAgZGVsZXRlIFtdIGJ1ZmZlcjsK LSsgIHNpb19jbG9zZShoZGwpOwotKwotKyAgbWFuYWdlci0+UmVsZWFzZUlucHV0U3RyZWFtKHRo aXMpOwotK30KLSsKLStkb3VibGUgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpHZXRNYXhWb2x1bWUo KSB7Ci0rICAvLyBOb3Qgc3VwcG9ydGVkCi0rICByZXR1cm4gMC4wOwotK30KLSsKLSt2b2lkIFNu ZGlvQXVkaW9JbnB1dFN0cmVhbTo6U2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpIHsKLSsgIC8vIE5v dCBzdXBwb3J0ZWQuIERvIG5vdGhpbmcuCi0rfQotKwotK2RvdWJsZSBTbmRpb0F1ZGlvSW5wdXRT dHJlYW06OkdldFZvbHVtZSgpIHsKLSsgIC8vIE5vdCBzdXBwb3J0ZWQuCi0rICByZXR1cm4gMC4w OwotK30KLSsKLStib29sIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6SXNNdXRlZCgpIHsKLSsgIC8v IE5vdCBzdXBwb3J0ZWQuCi0rICByZXR1cm4gZmFsc2U7Ci0rfQotKwotK3ZvaWQgU25kaW9BdWRp b0lucHV0U3RyZWFtOjpTZXRPdXRwdXREZXZpY2VGb3JBZWMoCi0rICAgIGNvbnN0IHN0ZDo6c3Ry aW5nJiBvdXRwdXRfZGV2aWNlX2lkKSB7Ci0rICAvLyBOb3Qgc3VwcG9ydGVkLgotK30KLSsKLSt2 b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6VGhyZWFkTG9vcCh2b2lkKSB7Ci0rICBzaXplX3Qg dG9kbywgbjsKLSsgIGNoYXIgKmRhdGE7Ci0rICB1bnNpZ25lZCBpbnQgbmZyYW1lczsKLSsgIGRv dWJsZSBub3JtYWxpemVkX3ZvbHVtZSA9IDAuMDsKLSsKLSsgIG5mcmFtZXMgPSBhdWRpb19idXMt PmZyYW1lcygpOwotKwotKyAgd2hpbGUgKHN0YXRlID09IGtSdW5uaW5nICYmICFzaW9fZW9mKGhk bCkpIHsKLSsKLSsgICAgR2V0QWdjVm9sdW1lKCZub3JtYWxpemVkX3ZvbHVtZSk7Ci0rCi0rICAg IC8vIHJlYWQgb25lIGJsb2NrCi0rICAgIHRvZG8gPSBuZnJhbWVzICogcGFyYW1zLkdldEJ5dGVz UGVyRnJhbWUoa1NhbXBsZUZvcm1hdCk7Ci0rICAgIGRhdGEgPSBidWZmZXI7Ci0rICAgIHdoaWxl ICh0b2RvID4gMCkgewotKyAgICAgIG4gPSBzaW9fcmVhZChoZGwsIGRhdGEsIHRvZG8pOwotKyAg ICAgIGlmIChuID09IDApCi0rICAgICAgICByZXR1cm47CS8vIHVucmVjb3ZlcmFibGUgSS9PIGVy cm9yCi0rICAgICAgdG9kbyAtPSBuOwotKyAgICAgIGRhdGEgKz0gbjsKLSsgICAgfQotKyAgICBo d19kZWxheSAtPSBuZnJhbWVzOwotKwotKyAgICAvLyBjb252ZXJ0IGZyYW1lcyBjb3VudCB0byBU aW1lRGVsdGEKLSsgICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGRlbGF5ID0gQXVkaW9UaW1lc3Rh bXBIZWxwZXI6OkZyYW1lc1RvVGltZShod19kZWxheSwKLSsgICAgICBwYXJhbXMuc2FtcGxlX3Jh dGUoKSk7Ci0rCi0rICAgIC8vIHB1c2ggaW50byBidXMKLSsgICAgYXVkaW9fYnVzLT5Gcm9tSW50 ZXJsZWF2ZWQoYnVmZmVyLCBuZnJhbWVzLCBTYW1wbGVGb3JtYXRUb0J5dGVzUGVyQ2hhbm5lbChr U2FtcGxlRm9ybWF0KSk7Ci0rCi0rICAgIC8vIGludm9rZSBjYWxsYmFjawotKyAgICBjYWxsYmFj ay0+T25EYXRhKGF1ZGlvX2J1cy5nZXQoKSwgYmFzZTo6VGltZVRpY2tzOjpOb3coKSAtIGRlbGF5 LCAxLik7Ci0rICB9Ci0rfQotKwotK30gIC8vIG5hbWVzcGFjZSBtZWRpYQotZGlmZiAtTmF1ciBj aHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9tZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1dC5o IGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1dC5oCi0t LS0gYS9tZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1dC5oLm9yaWcJMTk3MC0wMS0wMSAwMTow MDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBhL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0 LmgJMjAyMC0wNi0xMyAxNzozMjoyOC41MTEzOTU5NjkgKzAyMDAKLUBAIC0wLDAgKzEsOTEgQEAK LSsvLyBDb3B5cmlnaHQgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KLSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K LSsKLSsjaWZuZGVmIE1FRElBX0FVRElPX1NORElPX1NORElPX0lOUFVUX0hfCi0rI2RlZmluZSBN RURJQV9BVURJT19TTkRJT19TTkRJT19JTlBVVF9IXwotKwotKyNpbmNsdWRlIDxzdGRpbnQuaD4K LSsjaW5jbHVkZSA8c3RyaW5nPgotKyNpbmNsdWRlIDxzbmRpby5oPgotKwotKyNpbmNsdWRlICJi YXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCi0rI2luY2x1ZGUgImJhc2UvbWFjcm9zLmgiCi0rI2lu Y2x1ZGUgImJhc2UvbWVtb3J5L3dlYWtfcHRyLmgiCi0rI2luY2x1ZGUgImJhc2UvdGltZS90aW1l LmgiCi0rI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2FnY19hdWRpb19zdHJlYW0uaCIKLSsjaW5jbHVk ZSAibWVkaWEvYXVkaW8vYXVkaW9faW8uaCIKLSsjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9f ZGV2aWNlX2Rlc2NyaXB0aW9uLmgiCi0rI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9fcGFyYW1l dGVycy5oIgotKwotK25hbWVzcGFjZSBtZWRpYSB7Ci0rCi0rY2xhc3MgQXVkaW9NYW5hZ2VyQmFz ZTsKLSsKLSsvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb091dHB1dFN0cmVhbSB1c2luZyBzbmRp byg3KQotK2NsYXNzIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSA6IHB1YmxpYyBBZ2NBdWRpb1N0cmVh bTxBdWRpb0lucHV0U3RyZWFtPiB7Ci0rIHB1YmxpYzoKLSsgIC8vIFBhc3MgdGhpcyB0byB0aGUg Y29uc3RydWN0b3IgaWYgeW91IHdhbnQgdG8gYXR0ZW1wdCBhdXRvLXNlbGVjdGlvbgotKyAgLy8g b2YgdGhlIGF1ZGlvIHJlY29yZGluZyBkZXZpY2UuCi0rICBzdGF0aWMgY29uc3QgY2hhciBrQXV0 b1NlbGVjdERldmljZVtdOwotKwotKyAgLy8gQ3JlYXRlIGEgUENNIE91dHB1dCBzdHJlYW0gZm9y IHRoZSBTTkRJTyBkZXZpY2UgaWRlbnRpZmllZCBieQotKyAgLy8gfGRldmljZV9uYW1lfC4gSWYg dW5zdXJlIG9mIHdoYXQgdG8gdXNlIGZvciB8ZGV2aWNlX25hbWV8LCB1c2UKLSsgIC8vIHxrQXV0 b1NlbGVjdERldmljZXwuCi0rICBTbmRpb0F1ZGlvSW5wdXRTdHJlYW0oQXVkaW9NYW5hZ2VyQmFz ZSogYXVkaW9fbWFuYWdlciwKLSsgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu ZyYgZGV2aWNlX25hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9QYXJhbWV0 ZXJzJiBwYXJhbXMpOwotKwotKyAgflNuZGlvQXVkaW9JbnB1dFN0cmVhbSgpIG92ZXJyaWRlOwot KwotKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9JbnB1dFN0cmVhbS4KLSsgIGJvb2wgT3Bl bigpIG92ZXJyaWRlOwotKyAgdm9pZCBTdGFydChBdWRpb0lucHV0Q2FsbGJhY2sqIGNhbGxiYWNr KSBvdmVycmlkZTsKLSsgIHZvaWQgU3RvcCgpIG92ZXJyaWRlOwotKyAgdm9pZCBDbG9zZSgpIG92 ZXJyaWRlOwotKyAgZG91YmxlIEdldE1heFZvbHVtZSgpIG92ZXJyaWRlOwotKyAgdm9pZCBTZXRW b2x1bWUoZG91YmxlIHZvbHVtZSkgb3ZlcnJpZGU7Ci0rICBkb3VibGUgR2V0Vm9sdW1lKCkgb3Zl cnJpZGU7Ci0rICBib29sIElzTXV0ZWQoKSBvdmVycmlkZTsKLSsgIHZvaWQgU2V0T3V0cHV0RGV2 aWNlRm9yQWVjKGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkKSBvdmVycmlkZTsK LSsKLSsgcHJpdmF0ZToKLSsKLSsgIGVudW0gU3RyZWFtU3RhdGUgewotKyAgICBrQ2xvc2VkLCAg ICAgICAgICAgIC8vIE5vdCBvcGVuZWQgeWV0Ci0rICAgIGtTdG9wcGVkLCAgICAgICAgICAgLy8g RGV2aWNlIG9wZW5lZCwgYnV0IG5vdCBzdGFydGVkIHlldAotKyAgICBrUnVubmluZywgICAgICAg ICAgIC8vIFN0YXJ0ZWQsIGRldmljZSBwbGF5aW5nCi0rICAgIGtTdG9wV2FpdCAgICAgICAgICAg Ly8gU3RvcHBpbmcsIHdhaXRpbmcgZm9yIHRoZSByZWFsLXRpbWUgdGhyZWFkIHRvIGV4aXQKLSsg IH07Ci0rCi0rICAvLyBDLXN0eWxlIGNhbGwtYmFja3MKLSsgIHN0YXRpYyB2b2lkIE9uTW92ZUNh bGxiYWNrKHZvaWQgKmFyZywgaW50IGRlbHRhKTsKLSsgIHN0YXRpYyB2b2lkKiBUaHJlYWRFbnRy eSh2b2lkICphcmcpOwotKwotKyAgLy8gQ29udGludW91c2x5IG1vdmVzIGRhdGEgZnJvbSB0aGUg ZGV2aWNlIHRvIHRoZSBjb25zdW1lcgotKyAgdm9pZCBUaHJlYWRMb29wKCk7Ci0rICAvLyBPdXIg Y3JlYXRvciwgdGhlIGF1ZGlvIG1hbmFnZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiB3ZSBj bG9zZS4KLSsgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXI7Ci0rICAvLyBQYXJhbWV0ZXJzIG9m IHRoZSBzb3VyY2UKLSsgIEF1ZGlvUGFyYW1ldGVycyBwYXJhbXM7Ci0rICAvLyBXZSBzdG9yZSBk YXRhIGhlcmUgZm9yIGNvbnN1bWVyCi0rICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdXM+IGF1ZGlv X2J1czsKLSsgIC8vIENhbGwtYmFjayB0aGF0IGNvbnN1bWVzIHJlY29yZGVkIGRhdGEKLSsgIEF1 ZGlvSW5wdXRDYWxsYmFjayogY2FsbGJhY2s7ICAvLyBWYWxpZCBkdXJpbmcgYSByZWNvcmRpbmcg c2Vzc2lvbi4KLSsgIC8vIEhhbmRsZSBvZiB0aGUgYXVkaW8gZGV2aWNlCi0rICBzdHJ1Y3Qgc2lv X2hkbCogaGRsOwotKyAgLy8gQ3VycmVudCBzdGF0ZSBvZiB0aGUgc3RyZWFtCi0rICBlbnVtIFN0 cmVhbVN0YXRlIHN0YXRlOwotKyAgLy8gSGlnaCBwcmlvcml0eSB0aHJlYWQgcnVubmluZyBUaHJl YWRMb29wKCkKLSsgIHB0aHJlYWRfdCB0aHJlYWQ7Ci0rICAvLyBOdW1iZXIgb2YgZnJhbWVzIGJ1 ZmZlcmVkIGluIHRoZSBoYXJkd2FyZQotKyAgaW50IGh3X2RlbGF5OwotKyAgLy8gVGVtcG9yYXJ5 IGJ1ZmZlciB3aGVyZSBkYXRhIGlzIHN0b3JlZCBzbmRpby1jb21wYXRpYmxlIGZvcm1hdAotKyAg Y2hhciogYnVmZmVyOwotKwotKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNuZGlvQXVkaW9J bnB1dFN0cmVhbSk7Ci0rfTsKLSsKLSt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKLSsKLSsjZW5kaWYg IC8vIE1FRElBX0FVRElPX1NORElPX1NORElPX0lOUFVUX0hfCi1kaWZmIC1OYXVyIGNocm9taXVt LTgzLjAuNDEwMy45Ny5vcmlnL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5jYyBjaHJv bWl1bS04My4wLjQxMDMuOTcvbWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmNjCi0tLS0g YS9tZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuY2Mub3JpZwkxOTcwLTAxLTAxIDAxOjAw OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGEvbWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0 LmNjCTIwMjAtMDYtMTMgMTc6MzI6MjguNTExMzk1OTY5ICswMjAwCi1AQCAtMCwwICsxLDE4MyBA QAotKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KLSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug ZmlsZS4KLSsKLSsjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0rI2luY2x1ZGUgImJhc2UvdGlt ZS90aW1lLmgiCi0rI2luY2x1ZGUgImJhc2UvdGltZS9kZWZhdWx0X3RpY2tfY2xvY2suaCIKLSsj aW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9fbWFuYWdlcl9iYXNlLmgiCi0rI2luY2x1ZGUgIm1l ZGlhL2Jhc2UvYXVkaW9fdGltZXN0YW1wX2hlbHBlci5oIgotKyNpbmNsdWRlICJtZWRpYS9hdWRp by9zbmRpby9zbmRpb19vdXRwdXQuaCIKLSsKLStuYW1lc3BhY2UgbWVkaWEgewotKwotK3N0YXRp YyBjb25zdCBTYW1wbGVGb3JtYXQga1NhbXBsZUZvcm1hdCA9IGtTYW1wbGVGb3JtYXRTMTY7Ci0r Ci0rdm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpPbk1vdmVDYWxsYmFjayh2b2lkICphcmcs IGludCBkZWx0YSkgewotKyAgU25kaW9BdWRpb091dHB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19j YXN0PFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qPihhcmcpOwotKwotKyAgc2VsZi0+aHdfZGVsYXkg LT0gZGVsdGE7Ci0rfQotKwotK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6T25Wb2xDYWxs YmFjayh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wpIHsKLSsgIFNuZGlvQXVkaW9PdXRwdXRT dHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsK LSsKLSsgIHNlbGYtPnZvbCA9IHZvbDsKLSt9Ci0rCi0rdm9pZCAqU25kaW9BdWRpb091dHB1dFN0 cmVhbTo6VGhyZWFkRW50cnkodm9pZCAqYXJnKSB7Ci0rICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFt KiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRpb091dHB1dFN0cmVhbSo+KGFyZyk7Ci0rCi0r ICBzZWxmLT5UaHJlYWRMb29wKCk7Ci0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rU25kaW9BdWRp b091dHB1dFN0cmVhbTo6U25kaW9BdWRpb091dHB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRl cnMmIHBhcmFtcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXIpCi0rICAgIDogbWFuYWdlcihtYW5hZ2VyKSwK LSsgICAgICBwYXJhbXMocGFyYW1zKSwKLSsgICAgICBhdWRpb19idXMoQXVkaW9CdXM6OkNyZWF0 ZShwYXJhbXMpKSwKLSsgICAgICBzdGF0ZShrQ2xvc2VkKSwKLSsgICAgICBtdXRleChQVEhSRUFE X01VVEVYX0lOSVRJQUxJWkVSKSB7Ci0rfQotKwotK1NuZGlvQXVkaW9PdXRwdXRTdHJlYW06On5T bmRpb0F1ZGlvT3V0cHV0U3RyZWFtKCkgewotKyAgaWYgKHN0YXRlICE9IGtDbG9zZWQpCi0rICAg IENsb3NlKCk7Ci0rfQotKwotK2Jvb2wgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6T3BlbigpIHsK LSsgIHN0cnVjdCBzaW9fcGFyIHBhcjsKLSsgIGludCBzaWc7Ci0rCi0rICBpZiAocGFyYW1zLmZv cm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiAmJgotKyAgICAgIHBh cmFtcy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSkg ewotKyAgICBMT0coV0FSTklORykgPDwgIlVuc3VwcG9ydGVkIGF1ZGlvIGZvcm1hdC4iOwotKyAg ICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rICBzaW9faW5pdHBhcigmcGFyKTsKLSsgIHBhci5yYXRl ID0gcGFyYW1zLnNhbXBsZV9yYXRlKCk7Ci0rICBwYXIucGNoYW4gPSBwYXJhbXMuY2hhbm5lbHMo KTsKLSsgIHBhci5iaXRzID0gU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9y bWF0KTsKLSsgIHBhci5icHMgPSBwYXIuYml0cyAvIDg7Ci0rICBwYXIuc2lnID0gc2lnID0gcGFy LmJpdHMgIT0gOCA/IDEgOiAwOwotKyAgcGFyLmxlID0gU0lPX0xFX05BVElWRTsKLSsgIHBhci5h cHBidWZzeiA9IHBhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpOwotKwotKyAgaGRsID0gc2lvX29w ZW4oU0lPX0RFVkFOWSwgU0lPX1BMQVksIDApOwotKyAgaWYgKGhkbCA9PSBOVUxMKSB7Ci0rICAg IExPRyhFUlJPUikgPDwgIkNvdWxkbid0IG9wZW4gYXVkaW8gZGV2aWNlLiI7Ci0rICAgIHJldHVy biBmYWxzZTsKLSsgIH0KLSsgIGlmICghc2lvX3NldHBhcihoZGwsICZwYXIpIHx8ICFzaW9fZ2V0 cGFyKGhkbCwgJnBhcikpIHsKLSsgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgc2V0IGF1ZGlv IHBhcmFtZXRlcnMuIjsKLSsgICAgZ290byBiYWRfY2xvc2U7Ci0rICB9Ci0rICBpZiAocGFyLnJh dGUgICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLnNhbXBsZV9yYXRlKCkgfHwKLSsgICAgICBwYXIu cGNoYW4gIT0gKHVuc2lnbmVkIGludClwYXJhbXMuY2hhbm5lbHMoKSB8fAotKyAgICAgIHBhci5i aXRzICAhPSAodW5zaWduZWQgaW50KVNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1NhbXBs ZUZvcm1hdCkgfHwKLSsgICAgICBwYXIuc2lnICAgIT0gKHVuc2lnbmVkIGludClzaWcgfHwKLSsg ICAgICAocGFyLmJwcyA+IDEgJiYgcGFyLmxlICE9IFNJT19MRV9OQVRJVkUpIHx8Ci0rICAgICAg KHBhci5iaXRzICE9IHBhci5icHMgKiA4KSkgewotKyAgICBMT0coRVJST1IpIDw8ICJVbnN1cHBv cnRlZCBhdWRpbyBwYXJhbWV0ZXJzLiI7Ci0rICAgIGdvdG8gYmFkX2Nsb3NlOwotKyAgfQotKyAg c3RhdGUgPSBrU3RvcHBlZDsKLSsgIHZvbHBlbmRpbmcgPSAwOwotKyAgdm9sID0gMDsKLSsgIGJ1 ZmZlciA9IG5ldyBjaGFyW2F1ZGlvX2J1cy0+ZnJhbWVzKCkgKiBwYXJhbXMuR2V0Qnl0ZXNQZXJG cmFtZShrU2FtcGxlRm9ybWF0KV07Ci0rICBzaW9fb25tb3ZlKGhkbCwgJk9uTW92ZUNhbGxiYWNr LCB0aGlzKTsKLSsgIHNpb19vbnZvbChoZGwsICZPblZvbENhbGxiYWNrLCB0aGlzKTsKLSsgIHJl dHVybiB0cnVlOwotKyBiYWRfY2xvc2U6Ci0rICBzaW9fY2xvc2UoaGRsKTsKLSsgIHJldHVybiBm YWxzZTsKLSt9Ci0rCi0rdm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpDbG9zZSgpIHsKLSsg IGlmIChzdGF0ZSA9PSBrQ2xvc2VkKQotKyAgICByZXR1cm47Ci0rICBpZiAoc3RhdGUgPT0ga1J1 bm5pbmcpCi0rICAgIFN0b3AoKTsKLSsgIHN0YXRlID0ga0Nsb3NlZDsKLSsgIGRlbGV0ZSBbXSBi dWZmZXI7Ci0rICBzaW9fY2xvc2UoaGRsKTsKLSsgIG1hbmFnZXItPlJlbGVhc2VPdXRwdXRTdHJl YW0odGhpcyk7ICAvLyBDYWxscyB0aGUgZGVzdHJ1Y3RvcgotK30KLSsKLSt2b2lkIFNuZGlvQXVk aW9PdXRwdXRTdHJlYW06OlN0YXJ0KEF1ZGlvU291cmNlQ2FsbGJhY2sqIGNhbGxiYWNrKSB7Ci0r ICBzdGF0ZSA9IGtSdW5uaW5nOwotKyAgaHdfZGVsYXkgPSAwOwotKyAgc291cmNlID0gY2FsbGJh Y2s7Ci0rICBzaW9fc3RhcnQoaGRsKTsKLSsgIGlmIChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBO VUxMLCAmVGhyZWFkRW50cnksIHRoaXMpICE9IDApIHsKLSsgICAgTE9HKEVSUk9SKSA8PCAiRmFp bGVkIHRvIGNyZWF0ZSByZWFsLXRpbWUgdGhyZWFkLiI7Ci0rICAgIHNpb19zdG9wKGhkbCk7Ci0r ICAgIHN0YXRlID0ga1N0b3BwZWQ7Ci0rICB9Ci0rfQotKwotK3ZvaWQgU25kaW9BdWRpb091dHB1 dFN0cmVhbTo6U3RvcCgpIHsKLSsgIGlmIChzdGF0ZSA9PSBrU3RvcHBlZCkKLSsgICAgcmV0dXJu OwotKyAgc3RhdGUgPSBrU3RvcFdhaXQ7Ci0rICBwdGhyZWFkX2pvaW4odGhyZWFkLCBOVUxMKTsK LSsgIHNpb19zdG9wKGhkbCk7Ci0rICBzdGF0ZSA9IGtTdG9wcGVkOwotK30KLSsKLSt2b2lkIFNu ZGlvQXVkaW9PdXRwdXRTdHJlYW06OlNldFZvbHVtZShkb3VibGUgdikgewotKyAgcHRocmVhZF9t dXRleF9sb2NrKCZtdXRleCk7Ci0rICB2b2wgPSB2ICogU0lPX01BWFZPTDsKLSsgIHZvbHBlbmRp bmcgPSAxOwotKyAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKLSt9Ci0rCi0rdm9pZCBT bmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpHZXRWb2x1bWUoZG91YmxlKiB2KSB7Ci0rICBwdGhyZWFk X211dGV4X2xvY2soJm11dGV4KTsKLSsgICp2ID0gdm9sICogKDEuIC8gU0lPX01BWFZPTCk7Ci0r ICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOwotK30KLSsKLSsvLyBUaGlzIHN0cmVhbSBp cyBhbHdheXMgdXNlZCB3aXRoIHN1YiBzZWNvbmQgYnVmZmVyIHNpemVzLCB3aGVyZSBpdCdzCi0r Ly8gc3VmZmljaWVudCB0byBzaW1wbHkgYWx3YXlzIGZsdXNoIHVwb24gU3RhcnQoKS4KLSt2b2lk IFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OkZsdXNoKCkge30KLSsKLSt2b2lkIFNuZGlvQXVkaW9P dXRwdXRTdHJlYW06OlRocmVhZExvb3Aodm9pZCkgewotKyAgaW50IGF2YWlsLCBjb3VudCwgcmVz dWx0OwotKwotKyAgd2hpbGUgKHN0YXRlID09IGtSdW5uaW5nKSB7Ci0rICAgIC8vIFVwZGF0ZSB2 b2x1bWUgaWYgbmVlZGVkCi0rICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOwotKyAgICBp ZiAodm9scGVuZGluZykgewotKyAgICAgIHZvbHBlbmRpbmcgPSAwOwotKyAgICAgIHNpb19zZXR2 b2woaGRsLCB2b2wpOwotKyAgICB9Ci0rICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7 Ci0rCi0rICAgIC8vIEdldCBkYXRhIHRvIHBsYXkKLSsgICAgY29uc3QgYmFzZTo6VGltZURlbHRh IGRlbGF5ID0gQXVkaW9UaW1lc3RhbXBIZWxwZXI6OkZyYW1lc1RvVGltZShod19kZWxheSwKLSsJ cGFyYW1zLnNhbXBsZV9yYXRlKCkpOwotKyAgICBjb3VudCA9IHNvdXJjZS0+T25Nb3JlRGF0YShk ZWxheSwgYmFzZTo6VGltZVRpY2tzOjpOb3coKSwgMCwgYXVkaW9fYnVzLmdldCgpKTsKLSsgICAg YXVkaW9fYnVzLT5Ub0ludGVybGVhdmVkKGNvdW50LCBTYW1wbGVGb3JtYXRUb0J5dGVzUGVyQ2hh bm5lbChrU2FtcGxlRm9ybWF0KSwgYnVmZmVyKTsKLSsgICAgaWYgKGNvdW50ID09IDApIHsKLSsg ICAgICAvLyBXZSBoYXZlIHRvIHN1Ym1pdCBzb21ldGhpbmcgdG8gdGhlIGRldmljZQotKyAgICAg IGNvdW50ID0gYXVkaW9fYnVzLT5mcmFtZXMoKTsKLSsgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBj b3VudCAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpKTsKLSsgICAgICBM T0coV0FSTklORykgPDwgIk5vIGRhdGEgdG8gcGxheSwgcnVubmluZyBlbXB0eSBjeWNsZS4iOwot KyAgICB9Ci0rCi0rICAgIC8vIFN1Ym1pdCBkYXRhIHRvIHRoZSBkZXZpY2UKLSsgICAgYXZhaWwg PSBjb3VudCAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpOwotKyAgICBy ZXN1bHQgPSBzaW9fd3JpdGUoaGRsLCBidWZmZXIsIGF2YWlsKTsKLSsgICAgaWYgKHJlc3VsdCA9 PSAwKSB7Ci0rICAgICAgTE9HKFdBUk5JTkcpIDw8ICJBdWRpbyBkZXZpY2UgZGlzY29ubmVjdGVk LiI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgLy8gVXBkYXRlIGhhcmR3YXJlIHBv aW50ZXIKLSsgICAgaHdfZGVsYXkgKz0gY291bnQ7Ci0rICB9Ci0rfQotKwotK30gIC8vIG5hbWVz cGFjZSBtZWRpYQotZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9tZWRpYS9h dWRpby9zbmRpby9zbmRpb19vdXRwdXQuaCBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVkaWEvYXVk aW8vc25kaW8vc25kaW9fb3V0cHV0LmgKLS0tLSBhL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291 dHB1dC5oLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBhL21l ZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5oCTIwMjAtMDYtMTMgMTc6MzI6MjguNTExMzk1 OTY5ICswMjAwCi1AQCAtMCwwICsxLDg2IEBACi0rLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBD aHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKy8vIFVzZSBvZiB0aGlzIHNv dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK LSsvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotKwotKyNpZm5kZWYgTUVESUFfQVVESU9f U05ESU9fU05ESU9fT1VUUFVUX0hfCi0rI2RlZmluZSBNRURJQV9BVURJT19TTkRJT19TTkRJT19P VVRQVVRfSF8KLSsKLSsjaW5jbHVkZSA8cHRocmVhZC5oPgotKyNpbmNsdWRlIDxzbmRpby5oPgot KwotKyNpbmNsdWRlICJiYXNlL3RpbWUvdGlja19jbG9jay5oIgotKyNpbmNsdWRlICJiYXNlL3Rp bWUvdGltZS5oIgotKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19pby5oIgotKwotK25hbWVz cGFjZSBtZWRpYSB7Ci0rCi0rY2xhc3MgQXVkaW9NYW5hZ2VyQmFzZTsKLSsKLSsvLyBJbXBsZW1l bnRhdGlvbiBvZiBBdWRpb091dHB1dFN0cmVhbSB1c2luZyBzbmRpbyg3KQotK2NsYXNzIFNuZGlv QXVkaW9PdXRwdXRTdHJlYW0gOiBwdWJsaWMgQXVkaW9PdXRwdXRTdHJlYW0gewotKyBwdWJsaWM6 Ci0rICAvLyBUaGUgbWFuYWdlciBpcyBjcmVhdGluZyB0aGlzIG9iamVjdAotKyAgU25kaW9BdWRp b091dHB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlcik7Ci0rICB2aXJ0dWFsIH5T bmRpb0F1ZGlvT3V0cHV0U3RyZWFtKCk7Ci0rCi0rICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRp b091dHB1dFN0cmVhbS4KLSsgIGJvb2wgT3BlbigpIG92ZXJyaWRlOwotKyAgdm9pZCBDbG9zZSgp IG92ZXJyaWRlOwotKyAgdm9pZCBTdGFydChBdWRpb1NvdXJjZUNhbGxiYWNrKiBjYWxsYmFjaykg b3ZlcnJpZGU7Ci0rICB2b2lkIFN0b3AoKSBvdmVycmlkZTsKLSsgIHZvaWQgU2V0Vm9sdW1lKGRv dWJsZSB2b2x1bWUpIG92ZXJyaWRlOwotKyAgdm9pZCBHZXRWb2x1bWUoZG91YmxlKiB2b2x1bWUp IG92ZXJyaWRlOwotKyAgdm9pZCBGbHVzaCgpIG92ZXJyaWRlOwotKwotKyAgZnJpZW5kIHZvaWQg c25kaW9fb25tb3ZlKHZvaWQgKmFyZywgaW50IGRlbHRhKTsKLSsgIGZyaWVuZCB2b2lkIHNuZGlv X29udm9sKHZvaWQgKmFyZywgdW5zaWduZWQgaW50IHZvbCk7Ci0rICBmcmllbmQgdm9pZCAqc25k aW9fdGhyZWFkc3RhcnQodm9pZCAqYXJnKTsKLSsKLSsgcHJpdmF0ZToKLSsgIGVudW0gU3RyZWFt U3RhdGUgewotKyAgICBrQ2xvc2VkLCAgICAgICAgICAgIC8vIE5vdCBvcGVuZWQgeWV0Ci0rICAg IGtTdG9wcGVkLCAgICAgICAgICAgLy8gRGV2aWNlIG9wZW5lZCwgYnV0IG5vdCBzdGFydGVkIHll dAotKyAgICBrUnVubmluZywgICAgICAgICAgIC8vIFN0YXJ0ZWQsIGRldmljZSBwbGF5aW5nCi0r ICAgIGtTdG9wV2FpdCAgICAgICAgICAgLy8gU3RvcHBpbmcsIHdhaXRpbmcgZm9yIHRoZSByZWFs LXRpbWUgdGhyZWFkIHRvIGV4aXQKLSsgIH07Ci0rCi0rICAvLyBDLXN0eWxlIGNhbGwtYmFja3MK LSsgIHN0YXRpYyB2b2lkIE9uTW92ZUNhbGxiYWNrKHZvaWQgKmFyZywgaW50IGRlbHRhKTsKLSsg IHN0YXRpYyB2b2lkIE9uVm9sQ2FsbGJhY2sodm9pZCAqYXJnLCB1bnNpZ25lZCBpbnQgdm9sKTsK LSsgIHN0YXRpYyB2b2lkKiBUaHJlYWRFbnRyeSh2b2lkICphcmcpOwotKwotKyAgLy8gQ29udGlu dW91c2x5IG1vdmVzIGRhdGEgZnJvbSB0aGUgcHJvZHVjZXIgdG8gdGhlIGRldmljZQotKyAgdm9p ZCBUaHJlYWRMb29wKHZvaWQpOwotKwotKyAgLy8gT3VyIGNyZWF0b3IsIHRoZSBhdWRpbyBtYW5h Z2VyIG5lZWRzIHRvIGJlIG5vdGlmaWVkIHdoZW4gd2UgY2xvc2UuCi0rICBBdWRpb01hbmFnZXJC YXNlKiBtYW5hZ2VyOwotKyAgLy8gUGFyYW1ldGVycyBvZiB0aGUgc291cmNlCi0rICBBdWRpb1Bh cmFtZXRlcnMgcGFyYW1zOwotKyAgLy8gU291cmNlIHN0b3JlcyBkYXRhIGhlcmUKLSsgIHN0ZDo6 dW5pcXVlX3B0cjxBdWRpb0J1cz4gYXVkaW9fYnVzOwotKyAgLy8gQ2FsbC1iYWNrIHRoYXQgcHJv ZHVjZXMgZGF0YSB0byBwbGF5Ci0rICBBdWRpb1NvdXJjZUNhbGxiYWNrKiBzb3VyY2U7Ci0rICAv LyBIYW5kbGUgb2YgdGhlIGF1ZGlvIGRldmljZQotKyAgc3RydWN0IHNpb19oZGwqIGhkbDsKLSsg IC8vIEN1cnJlbnQgc3RhdGUgb2YgdGhlIHN0cmVhbQotKyAgZW51bSBTdHJlYW1TdGF0ZSBzdGF0 ZTsKLSsgIC8vIEhpZ2ggcHJpb3JpdHkgdGhyZWFkIHJ1bm5pbmcgVGhyZWFkTG9vcCgpCi0rICBw dGhyZWFkX3QgdGhyZWFkOwotKyAgLy8gUHJvdGVjdHMgdm9sLCB2b2xwZW5kaW5nIGFuZCBod19k ZWxheQotKyAgcHRocmVhZF9tdXRleF90IG11dGV4OwotKyAgLy8gQ3VycmVudCB2b2x1bWUgaW4g dGhlIDAuLlNJT19NQVhWT0wgcmFuZ2UKLSsgIGludCB2b2w7Ci0rICAvLyBTZXQgdG8gMSBpZiB2 b2x1bWVzIG11c3QgYmUgcmVmcmVzaGVkIGluIHRoZSByZWFsdGltZSB0aHJlYWQKLSsgIGludCB2 b2xwZW5kaW5nOwotKyAgLy8gTnVtYmVyIG9mIGZyYW1lcyBidWZmZXJlZCBpbiB0aGUgaGFyZHdh cmUKLSsgIGludCBod19kZWxheTsKLSsgIC8vIFRlbXBvcmFyeSBidWZmZXIgd2hlcmUgZGF0YSBp cyBzdG9yZWQgc25kaW8tY29tcGF0aWJsZSBmb3JtYXQKLSsgIGNoYXIqIGJ1ZmZlcjsKLSsKLSsg IERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKTsKLSt9Owot KwotK30gIC8vIG5hbWVzcGFjZSBtZWRpYQotKwotKyNlbmRpZiAgLy8gTUVESUFfQVVESU9fU05E SU9fU05ESU9fT1VUUFVUX0hfCi1kaWZmIC1OYXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmln L21lZGlhL21lZGlhX29wdGlvbnMuZ25pIGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9tZWRp YV9vcHRpb25zLmduaQotLS0tIGEvbWVkaWEvbWVkaWFfb3B0aW9ucy5nbmkub3JpZwkyMDIwLTA2 LTAzIDIwOjQwOjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGEvbWVkaWEvbWVkaWFfb3B0aW9ucy5n bmkJMjAyMC0wNi0xMyAxNzozMjoyOC41MTIzOTU5NjMgKzAyMDAKLUBAIC0xMTksNiArMTE5LDkg QEAKLSAgICMgRW5hYmxlcyBydW50aW1lIHNlbGVjdGlvbiBvZiBBTFNBIGxpYnJhcnkgZm9yIGF1 ZGlvLgotICAgdXNlX2Fsc2EgPSBmYWxzZQotIAotKyAgIyBFbmFibGUgcnVudGltZSBzZWxlY3Rp b24gb2Ygc25kaW8oNykKLSsgIHVzZV9zbmRpbyA9IGZhbHNlCi0rCi0gICAjIEFsc2Egc2hvdWxk IGJlIHVzZWQgb24gbm9uLUFuZHJvaWQsIG5vbi1NYWMgUE9TSVggc3lzdGVtcy4KLSAgICMgQWxz YSBzaG91bGQgYmUgdXNlZCBvbiBkZXNrdG9wIENocm9tZWNhc3QgYW5kIGF1ZGlvLW9ubHkgQ2hy b21lY2FzdCBidWlsZHMuCi0gICBpZiAoaXNfcG9zaXggJiYgIWlzX2FuZHJvaWQgJiYgIWlzX21h YyAmJgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tc3lzdGVtLW5vZGVqcy5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVz L2Nocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDE2MTA4ODdmNTMwOS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9m aWxlcy9wYXRjaGVzL2Nocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwyMCArMCwwIEBACi0tLS0gYS90aGlyZF9wYXJ0eS9ub2RlL25vZGUucHkJMjAyMS0wNS0y MCAwNDoxNzo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyAtCTIwMjEtMDUtMjUgMTE6NTc6MzIuODk1 MjIyNTU5ICswMjAwCi1AQCAtMTcsMTEgKzE3LDEyIEBACi0gICBpZiBwbGF0Zm9ybS5zeXN0ZW0o KSA9PSAnRGFyd2luJyBhbmQgcGxhdGZvcm0ubWFjaGluZSgpID09ICdhcm02NCc6Ci0gICAgICAg cmV0dXJuIG9zLnBhdGguam9pbihvc19wYXRoLmpvaW4ob3NfcGF0aC5kaXJuYW1lKF9fZmlsZV9f KSwgJ21hYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9kZS1kYXJ3aW4tYXJtNjQn LCAnYmluJywgJ25vZGUnKSkKLS0gIHJldHVybiBvc19wYXRoLmpvaW4ob3NfcGF0aC5kaXJuYW1l KF9fZmlsZV9fKSwgKnsKLS0gICAgJ0Rhcndpbic6ICgnbWFjJywgJ25vZGUtZGFyd2luLXg2NCcs ICdiaW4nLCAnbm9kZScpLAotLSAgICAnTGludXgnOiAoJ2xpbnV4JywgJ25vZGUtbGludXgteDY0 JywgJ2JpbicsICdub2RlJyksCi0tICAgICdXaW5kb3dzJzogKCd3aW4nLCAnbm9kZS5leGUnKSwK LS0gIH1bcGxhdGZvcm0uc3lzdGVtKCldKQotKyAgcmV0dXJuICIvdXNyL2Jpbi9ub2RlIgotKyAg I3JldHVybiBvc19wYXRoLmpvaW4ob3NfcGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgKnsKLSsgICMg ICdEYXJ3aW4nOiAoJ21hYycsICdub2RlLWRhcndpbi14NjQnLCAnYmluJywgJ25vZGUnKSwKLSsg ICMgICdMaW51eCc6ICgnbGludXgnLCAnbm9kZS1saW51eC14NjQnLCAnYmluJywgJ25vZGUnKSwK LSsgICMgICdXaW5kb3dzJzogKCd3aW4nLCAnbm9kZS5leGUnKSwKLSsgICN9W3BsYXRmb3JtLnN5 c3RlbSgpXSkKLSAKLSAKLSBkZWYgUnVuTm9kZShjbWRfcGFydHMsIHN0ZG91dD1Ob25lKToKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0 Yy1pbmNsdWRlLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0td2VicnRjLWluY2x1ZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQx YmE3ZjI4NDZjMi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9w YXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1pbmNsdWRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTAgKzAsMCBAQAotLS0tIGEvdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0 dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuY2Mub3JpZwkyMDE5LTAyLTIxIDIxOjIxOjI0 LjQ4ODA1ODk5MCArMDEwMAotKysrIGEvdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3Rv cF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuY2MJMjAxOS0wMi0yMSAyMToyMToz Ni4xNTE5NjEwNjQgKzAxMDAKLUBAIC0xNiw2ICsxNiw3IEBACi0gCi0gI2luY2x1ZGUgPG1lbW9y eT4KLSAjaW5jbHVkZSA8c3RyaW5nPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8 dXRpbGl0eT4KLSAKLSAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9m cmFtZS5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hy b21pdW0td2VicnRjLXIwLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMv Y2hyb21pdW0td2VicnRjLXIwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj OWI2ZTA4NmVmMDAuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtcjAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyAr MCwwIEBACi1VcHN0cmVhbTogWWVzLCBodHRwczovL3dlYnJ0Yy1yZXZpZXcuZ29vZ2xlc291cmNl LmNvbS85Mzg0Ci1SZWFzb246IEZpeGVzIG11c2wgYnVpbGRzIG9mIHdlYnJ0YwotCi1Gcm9tIDdm OTBlMmNjZWRhMDQ1OGNmNTYwMjZlYjZjY2ZmYjk2MWE0NzgwNGIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgPHJhcGhhZWwua3Viby5kYS5jb3N0 YUBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDEzIE9jdCAyMDE3IDE1OjQ5OjMyICswMjAwCi1TdWJq ZWN0OiBbUEFUQ0hdIElXWVU6IEluY2x1ZGUgbWF0aC5oIGZvciByb3VuZCgzKS4KLQotbWF0aC5o IHdhcyBiZWluZyBpbXBsaWNpdGx5IGluY2x1ZGVkLCB3aGljaCBjYW4gYnJlYWsgdGhlIGJ1aWxk IHdpdGgKLWFsdGVybmF0aXZlIGxpYmMgaW1wbGVtZW50YXRpb25zLgotCi1CdWc6IE5vbmUKLUNo YW5nZS1JZDogSTk2OWIzMjBiNjVkMGY0NGFiYjMzZDNlMTAzNmNmYmNiODU5YTQ5NTIKLVJldmll d2VkLW9uOiBodHRwczovL3dlYnJ0Yy1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS85Mzg0Ci1SZXZp ZXdlZC1ieTogVG9tbWkgPHRvbW1pQHdlYnJ0Yy5vcmc+Ci1Db21taXQtUXVldWU6IFJhcGhhZWwg S3VibyBkYSBDb3N0YSAocmFrdWNvKSA8cmFwaGFlbC5rdWJvLmRhLmNvc3RhQGludGVsLmNvbT4K LUNyLUNvbW1pdC1Qb3NpdGlvbjogcmVmcy9oZWFkcy9tYXN0ZXJAeyMyMDI5Mn0KLS0tLQotCi0t LS0gYS90aGlyZF9wYXJ0eS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5jYwotKysrIGEvdGhpcmRfcGFy dHkvd2VicnRjL3AycC9iYXNlL3BvcnQuY2MKLUBAIC0xMCw2ICsxMCw4IEBACi0gCi0gI2luY2x1 ZGUgInAycC9iYXNlL3BvcnQuaCIKLSAKLSsjaW5jbHVkZSA8bWF0aC5oPgotKwotICNpbmNsdWRl IDxhbGdvcml0aG0+Ci0gI2luY2x1ZGUgPHZlY3Rvcj4KLSAKLS0tIAotMi4xNS4wLnJjMgotCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJy dGMtc2l6ZV90LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0td2VicnRjLXNpemVfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFm YmQ0M2IzMDEzLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3Bh dGNoZXMvY2hyb21pdW0td2VicnRjLXNpemVfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEw ICswLDAgQEAKLS0tLSBhL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np bmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yLmgJMjAyMC0wOC0xMCAyMDo0MjoyOS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBhL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3Np bmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yLmgJMjAyMC0wOS0wNCAxMjo0NzowNy4wMTQ4MzM2 MzMgKzAyMDAKLUBAIC0xMiw2ICsxMiw3IEBACi0gI2RlZmluZSBNT0RVTEVTX0FVRElPX1BST0NF U1NJTkdfQUVDM19DTE9DS0RSSUZUX0RFVEVDVE9SX0hfCi0gCi0gI2luY2x1ZGUgPGFycmF5Pgot KyNpbmNsdWRlIDxjc3RkZGVmPgotIAotIG5hbWVzcGFjZSB3ZWJydGMgewotIApkaWZmIC0tZ2l0 IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUt bGlidnB4LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0t eHh4LXBwYzY0bGUtbGlidnB4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2 ZDQyM2Q0MDkxYzUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1saWJ2cHgucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw3MiArMCwwIEBACi1Vc2VzIGdlbmVyaWMgdGFyZ2V0IGZvciBub3cuIFRvIHVzZSBwcGM2 NGxlLCBjaGFuZ2UgLS10YXJnZXQgdG8gcHBjNjRsZS1nbnUKLWFuZCBhZGQgLS1lbmFibGUtdnN4 LCBhbmQgY2hhbmdlIGdlbmVyaWMgdG8gcHBjIGZvciB0aGUgcnRjZCBoZWFkZXIuCi0KLUZyb20g MThlNmM1YzU1Y2ZhZTBjZmI0NThkODIxMGQ3YmM3MDkzNjBhMGU5MCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IHE2NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+Ci1EYXRlOiBXZWQsIDkg U2VwIDIwMjAgMTk6MDg6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZW5hYmxlIGdlbmVyYXRp b24gb2YgcHBjNjQgbGlidnB4IGJpdHMKLQotdGhpcyBkb2Vzbid0IHVwZGF0ZSB0aGUgZ25pIGZp bGUsIHRoYXQncyBkb25lIGZyb20KLXRoZSB0ZW1wbGF0ZSBieSBydW5uaW5nIHRoZSBhcHByb3By aWF0ZSBzY3JpcHRzCi0tLS0KLSB0aGlyZF9wYXJ0eS9saWJ2cHgvQlVJTEQuZ24gICAgICAgIHwg NCArKysrCi0gdGhpcmRfcGFydHkvbGlidnB4L2dlbmVyYXRlX2duaS5zaCB8IDkgKysrKysrKysr Ci0gMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgdGhpcmRf cGFydHkvbGlidnB4L0JVSUxELmduIHRoaXJkX3BhcnR5L2xpYnZweC9CVUlMRC5nbgotaW5kZXgg NzE5OGU1OS4uMzMwMDQ4NSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2xpYnZweC9CVUlMRC5n bgotKysrIGIvdGhpcmRfcGFydHkvbGlidnB4L0JVSUxELmduCi1AQCAtMzM2LDYgKzMzNiw4IEBA IHN0YXRpY19saWJyYXJ5KCJsaWJ2cHgiKSB7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgc291cmNl cyA9IGxpYnZweF9zcmNzX2FybTY0Ci0gICAgIH0KLSsgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUg PT0gInBwYzY0IikgewotKyAgICBzb3VyY2VzID0gbGlidnB4X3NyY3NfcHBjNjQKLSAgIH0KLSAK LSAgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIg XQotZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9saWJ2cHgvZ2VuZXJhdGVfZ25pLnNoIHRoaXJkX3Bh cnR5L2xpYnZweC9nZW5lcmF0ZV9nbmkuc2gKLWluZGV4IGJjZjg0YjAuLjhhM2Y0ZjEgMTAwNzU1 Ci0tLS0gYS90aGlyZF9wYXJ0eS9saWJ2cHgvZ2VuZXJhdGVfZ25pLnNoCi0rKysgYi90aGlyZF9w YXJ0eS9saWJ2cHgvZ2VuZXJhdGVfZ25pLnNoCi1AQCAtMzYxLDYgKzM2MSw3IEBAIGdlbl9jb25m aWdfZmlsZXMgbGludXgvYXJtLW5lb24taGlnaGJkICItLXRhcmdldD1hcm12Ny1saW51eC1nY2Mg JHthbGxfcGxhdGZvcm1zCi0gZ2VuX2NvbmZpZ19maWxlcyBsaW51eC9hcm02NC1oaWdoYmQgIi0t dGFyZ2V0PWFybXY4LWxpbnV4LWdjYyAke2FsbF9wbGF0Zm9ybXN9ICR7SElHSEJEfSIKLSBnZW5f Y29uZmlnX2ZpbGVzIGxpbnV4L21pcHNlbCAiLS10YXJnZXQ9bWlwczMyLWxpbnV4LWdjYyAke2Fs bF9wbGF0Zm9ybXN9IgotIGdlbl9jb25maWdfZmlsZXMgbGludXgvbWlwczY0ZWwgIi0tdGFyZ2V0 PW1pcHM2NC1saW51eC1nY2MgJHthbGxfcGxhdGZvcm1zfSIKLStnZW5fY29uZmlnX2ZpbGVzIGxp bnV4L3BwYzY0ICItLXRhcmdldD1nZW5lcmljLWdudSAkSElHSEJEICR7YWxsX3BsYXRmb3Jtc30i Ci0gZ2VuX2NvbmZpZ19maWxlcyBsaW51eC9nZW5lcmljICItLXRhcmdldD1nZW5lcmljLWdudSAk SElHSEJEICR7YWxsX3BsYXRmb3Jtc30iCi0gZ2VuX2NvbmZpZ19maWxlcyB3aW4vYXJtNjQgIi0t dGFyZ2V0PWFybTY0LXdpbjY0LXZzMTUgJHthbGxfcGxhdGZvcm1zfSAke0hJR0hCRH0iCi0gZ2Vu X2NvbmZpZ19maWxlcyB3aW4vaWEzMiAiLS10YXJnZXQ9eDg2LXdpbjMyLXZzMTQgJHthbGxfcGxh dGZvcm1zfSAke3g4Nl9wbGF0Zm9ybXN9IgotQEAgLTM4Niw2ICszODcsNyBAQCBsaW50X2NvbmZp ZyBsaW51eC9hcm0tbmVvbi1oaWdoYmQKLSBsaW50X2NvbmZpZyBsaW51eC9hcm02NC1oaWdoYmQK LSBsaW50X2NvbmZpZyBsaW51eC9taXBzZWwKLSBsaW50X2NvbmZpZyBsaW51eC9taXBzNjRlbAot K2xpbnRfY29uZmlnIGxpbnV4L3BwYzY0Ci0gbGludF9jb25maWcgbGludXgvZ2VuZXJpYwotIGxp bnRfY29uZmlnIHdpbi9hcm02NAotIGxpbnRfY29uZmlnIHdpbi9pYTMyCi1AQCAtNDE1LDYgKzQx Nyw3IEBAIGdlbl9ydGNkX2hlYWRlciBsaW51eC9hcm0tbmVvbi1oaWdoYmQgYXJtdjcKLSBnZW5f cnRjZF9oZWFkZXIgbGludXgvYXJtNjQtaGlnaGJkIGFybXY4Ci0gZ2VuX3J0Y2RfaGVhZGVyIGxp bnV4L21pcHNlbCBtaXBzZWwKLSBnZW5fcnRjZF9oZWFkZXIgbGludXgvbWlwczY0ZWwgbWlwczY0 ZWwKLStnZW5fcnRjZF9oZWFkZXIgbGludXgvcHBjNjQgZ2VuZXJpYwotIGdlbl9ydGNkX2hlYWRl ciBsaW51eC9nZW5lcmljIGdlbmVyaWMKLSBnZW5fcnRjZF9oZWFkZXIgd2luL2FybTY0IGFybXY4 Ci0gZ2VuX3J0Y2RfaGVhZGVyIHdpbi9pYTMyIHg4NiAiJHtyZXF1aXJlX3NzZTJ9IgotQEAgLTUw MCw2ICs1MDMsMTIgQEAgaWYgWyAteiAkT05MWV9DT05GSUdTIF07IHRoZW4KLSAKLSAgIGVjaG8g Ik1JUFM2NCBzb3VyY2UgbGlzdCBpcyBpZGVudGljYWwgdG8gTUlQUyBzb3VyY2UgbGlzdC4gTm8g bmVlZCB0byBnZW5lcmF0ZSBpdC4iCi0gCi0rICBlY2hvICJHZW5lcmF0ZSBwcGM2NCBzb3VyY2Ug bGlzdC4iCi0rICBjb25maWc9JChwcmludF9jb25maWdfYmFzaWMgbGludXgvcHBjNjQpCi0rICBt YWtlX2NsZWFuCi0rICBtYWtlIGxpYnZweF9zcmNzLnR4dCB0YXJnZXQ9bGlicyAkY29uZmlnID4g L2Rldi9udWxsCi0rICBjb252ZXJ0X3NyY3NfdG9fcHJvamVjdF9maWxlcyBsaWJ2cHhfc3Jjcy50 eHQgbGlidnB4X3NyY3NfcHBjNjQKLSsKLSAgIGVjaG8gIkdlbmVyYXRlIE5hQ2wgc291cmNlIGxp c3QuIgotICAgY29uZmlnPSQocHJpbnRfY29uZmlnX2Jhc2ljIG5hY2wpCi0gICBtYWtlX2NsZWFu Ci0tLSAKLTIuMjguMAotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJv bjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtc3VwcG9ydC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQwZWQ5ZDVhYzczLi4wMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUt c3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3MDcgKzAsMCBAQAotY29tbWl0IDJj MDEzYTMxN2IxMTE0ZWY2N2NkYmJjMzA4MjRiMjg5MDdiOWVhOTQKLUF1dGhvcjogRGFuaWVsIEtv bGVzYSA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+Ci1EYXRlOiAgIFdlZCBNYXIgMyAxOTowODoyOSAy MDIxICswMTAwCi0KLSAgICBwcGM2NGxlIHN1cHBvcnQKLQotZGlmZiAtLWdpdCBhL2J1aWxkL2Rv d25sb2FkX25hY2xfdG9vbGNoYWlucy5weSBiL2J1aWxkL2Rvd25sb2FkX25hY2xfdG9vbGNoYWlu cy5weQotaW5kZXggMjg2YTkyYTI3Li5lYzM2YTg1ZDMgMTAwNzU1Ci0tLS0gYS9idWlsZC9kb3du bG9hZF9uYWNsX3Rvb2xjaGFpbnMucHkKLSsrKyBiL2J1aWxkL2Rvd25sb2FkX25hY2xfdG9vbGNo YWlucy5weQotQEAgLTEzLDYgKzEzLDEwIEBAIGltcG9ydCBzeXMKLSAKLSAKLSBkZWYgTWFpbihh cmdzKToKLSsgICMgSWYgYGRpc2FibGVfbmFjbD0xYCBpcyBpbiBHWVBfREVGSU5FUywgZXhpdAot KyAgaWYgJ2Rpc2FibGVfbmFjbD0xJyBpbiBvcy5lbnZpcm9uLmdldCgnR1lQX0RFRklORVMnLCAn Jyk6Ci0rICAgIHJldHVybiAwCi0rCi0gICBzY3JpcHRfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9z LnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCi0gICBzcmNfZGlyID0gb3MucGF0aC5kaXJuYW1lKHNj cmlwdF9kaXIpCi0gICBuYWNsX2RpciA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnbmF0aXZlX2Ns aWVudCcpCi1kaWZmIC0tZ2l0IGEvY2hyb21lL2luc3RhbGxlci9saW51eC9CVUlMRC5nbiBiL2No cm9tZS9pbnN0YWxsZXIvbGludXgvQlVJTEQuZ24KLWluZGV4IDM1ZjAxZDBhNC4uMjhmMmU3NDc1 IDEwMDY0NAotLS0tIGEvY2hyb21lL2luc3RhbGxlci9saW51eC9CVUlMRC5nbgotKysrIGIvY2hy b21lL2luc3RhbGxlci9saW51eC9CVUlMRC5nbgotQEAgLTk0LDggKzk0LDYgQEAgcGFja2FnaW5n X2ZpbGVzID0gcGFja2FnaW5nX2ZpbGVzX2JpbmFyaWVzICsgWwotICAgICAgICAgICAgICAgICAg ICAgIiRyb290X291dF9kaXIveGRnLW1pbWUiLAotICAgICAgICAgICAgICAgICAgICAgIiRyb290 X291dF9kaXIveGRnLXNldHRpbmdzIiwKLSAgICAgICAgICAgICAgICAgICAgICIkcm9vdF9vdXRf ZGlyL2xvY2FsZXMvZW4tVVMucGFrIiwKLS0gICAgICAgICAgICAgICAgICAgICIkcm9vdF9vdXRf ZGlyL01FSVByZWxvYWQvbWFuaWZlc3QuanNvbiIsCi0tICAgICAgICAgICAgICAgICAgICAiJHJv b3Rfb3V0X2Rpci9NRUlQcmVsb2FkL3ByZWxvYWRlZF9kYXRhLnBiIiwKLSAgICAgICAgICAgICAg ICAgICBdCi0gCi0gYWN0aW9uX2ZvcmVhY2goImNhbGN1bGF0ZV9kZWJfZGVwZW5kZW5jaWVzIikg ewotQEAgLTMxNSw3ICszMTMsNiBAQCBncm91cCgiaW5zdGFsbGVyX2RlcHMiKSB7Ci0gICAgICI6 dGhlbWVfZmlsZXMiLAotICAgICAiLy9jaHJvbWUiLAotICAgICAiLy9jaHJvbWU6cGFja2VkX3Jl c291cmNlcyIsCi0tICAgICIvL2Nocm9tZS9icm93c2VyL3Jlc291cmNlcy9tZWRpYS9tZWlfcHJl bG9hZDpjb21wb25lbnQiLAotICAgICAiLy9zYW5kYm94L2xpbnV4OmNocm9tZV9zYW5kYm94IiwK LSAgICAgIi8vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvaGFuZGxlcjpjcmFzaHBhZF9o YW5kbGVyIiwKLSAgIF0KLWRpZmYgLS1naXQgYS9zYW5kYm94L2ZlYXR1cmVzLmduaSBiL3NhbmRi b3gvZmVhdHVyZXMuZ25pCi1pbmRleCBkYjMwYWU2ZDYuLjlkYzA5YmY1MyAxMDA2NDQKLS0tLSBh L3NhbmRib3gvZmVhdHVyZXMuZ25pCi0rKysgYi9zYW5kYm94L2ZlYXR1cmVzLmduaQotQEAgLTEx LDcgKzExLDggQEAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9uYWNsL2NvbmZpZy5nbmkiKQotIHVz ZV9zZWNjb21wX2JwZiA9IChpc19saW51eCB8fCBpc19jaHJvbWVvcyB8fCBpc19hbmRyb2lkKSAm JgotICAgICAgICAgICAgICAgICAgIChjdXJyZW50X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2Nw dSA9PSAieDY0IiB8fAotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2NwdSA9PSAiYXJtIiB8 fCBjdXJyZW50X2NwdSA9PSAiYXJtNjQiIHx8Ci0tICAgICAgICAgICAgICAgICAgIGN1cnJlbnRf Y3B1ID09ICJtaXBzZWwiIHx8IGN1cnJlbnRfY3B1ID09ICJtaXBzNjRlbCIpCi0rICAgICAgICAg ICAgICAgICAgIGN1cnJlbnRfY3B1ID09ICJtaXBzZWwiIHx8IGN1cnJlbnRfY3B1ID09ICJtaXBz NjRlbCIgfHwKLSsgICAgICAgICAgICAgICAgICAgY3VycmVudF9jcHUgPT0gInBwYzY0IikKLSAK LSB1c2Vfc2VjY29tcF9icGYgPSB1c2Vfc2VjY29tcF9icGYgfHwgaXNfbmFjbF9ub25zZmkKLSAK LWRpZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L0JVSUxELmduIGIvc2FuZGJveC9saW51eC9CVUlM RC5nbgotaW5kZXggZTlhOTRiNDYxLi5jY2ExYTVkYTUgMTAwNjQ0Ci0tLS0gYS9zYW5kYm94L2xp bnV4L0JVSUxELmduCi0rKysgYi9zYW5kYm94L2xpbnV4L0JVSUxELmduCi1AQCAtNDI3LDYgKzQy Nyw4IEBAIGNvbXBvbmVudCgic2FuZGJveF9zZXJ2aWNlcyIpIHsKLSAKLSBzb3VyY2Vfc2V0KCJz YW5kYm94X3NlcnZpY2VzX2hlYWRlcnMiKSB7Ci0gICBzb3VyY2VzID0gWwotKyAgICAic3lzdGVt X2hlYWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMuaCIsCi0rICAgICJzeXN0ZW1faGVhZGVycy9w cGM2NF9saW51eF91Y29udGV4dC5oIiwKLSAgICAgInN5c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4 X3N5c2NhbGxzLmgiLAotICAgICAic3lzdGVtX2hlYWRlcnMvYXJtX2xpbnV4X3N5c2NhbGxzLmgi LAotICAgICAic3lzdGVtX2hlYWRlcnMvYXJtX2xpbnV4X3Vjb250ZXh0LmgiLAotZGlmZiAtLWdp dCBhL3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oIGIvc2FuZGJv eC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKLWluZGV4IDMxMzUxMWYyMi4u MGNhM2EzMjZmIDEwMDY0NAotLS0tIGEvc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2Nh bGxfcmFuZ2VzLmgKLSsrKyBiL3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jh bmdlcy5oCi1AQCAtNTYsNiArNTYsMTMgQEAKLSAjZGVmaW5lIE1BWF9QVUJMSUNfU1lTQ0FMTCBf X05SX3N5c2NhbGxzCi0gI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhfUFVCTElDX1NZU0NBTEwKLSAK LSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0rI2luY2x1ZGUgPGFzbS91bmlzdGQu aD4KLSsjZGVmaW5lIE1JTl9TWVNDQUxMIDB1Ci0rI2RlZmluZSBNQVhfUFVCTElDX1NZU0NBTEwg Mzg2dQotKyNkZWZpbmUgTUFYX1NZU0NBTEwgTUFYX1BVQkxJQ19TWVNDQUxMCi0rCi0gI2Vsc2UK LSAjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIKLSAjZW5kaWYKLWRpZmYgLS1naXQg YS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaCBiL3NhbmRib3gvbGludXgv YnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi1pbmRleCAxYTQwN2I5NTIuLmE2YWVjNTQ0ZSAxMDA2 NDQKLS0tLSBhL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi0rKysgYi9z YW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotQEAgLTE2LDYgKzE2LDkgQEAK LSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAvLyBzeXMvdXNlci5oIGluIGVnbGliYyBtaXNzZXMg c2l6ZV90IGRlZmluaXRpb24KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotKy8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qgb24gcHBjNjQKLSt0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7Ci0gI2VuZGlmCi0gI2VuZGlmCi0gCi1AQCAt MzQ2LDYgKzM0OSw1MSBAQCBzdHJ1Y3QgcmVnc19zdHJ1Y3QgewotICNkZWZpbmUgU0VDQ09NUF9Q VF9QQVJNNChfcmVncykgKF9yZWdzKS5yZWdzWzNdCi0gI2RlZmluZSBTRUNDT01QX1BUX1BBUk01 KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNF0KLSAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3JlZ3Mp IChfcmVncykucmVnc1s1XQotKwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjaW5j bHVkZSA8YXNtL3B0cmFjZS5oPgotKwotK3R5cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19zdHJ1 Y3Q7Ci0rCi0rI2lmZGVmIEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4KLSsjZGVmaW5lIFNFQ0NPTVBf QVJDSCBBVURJVF9BUkNIX1BQQzY0TEUKLSsjZWxzZQotKyNkZWZpbmUgU0VDQ09NUF9BUkNIIEFV RElUX0FSQ0hfUFBDNjQKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIFNFQ0NPTVBfUkVHKF9jdHgsIF9y ZWcpICgoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MtPmdwcltfcmVnXSkKLSsKLSsjZGVmaW5lIFNF Q0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCi0rI2RlZmluZSBTRUNDT01Q X1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKLSsjZGVmaW5lIFNFQ0NPTVBfSVAo X2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKLSsjZGVmaW5lIFNFQ0NPTVBfUEFS TTEoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTIoX2N0 eCkgU0VDQ09NUF9SRUcoX2N0eCwgNCkKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTMoX2N0eCkgU0VD Q09NUF9SRUcoX2N0eCwgNSkKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTQoX2N0eCkgU0VDQ09NUF9S RUcoX2N0eCwgNikKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTUoX2N0eCkgU0VDQ09NUF9SRUcoX2N0 eCwgNykKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTYoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgOCkK LSsKLSsjZGVmaW5lIFNFQ0NPTVBfTlJfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21w X2RhdGEsIG5yKSkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJDSF9JRFggKG9mZnNldG9mKHN0cnVjdCBh cmNoX3NlY2NvbXBfZGF0YSwgYXJjaCkpCi0rI2RlZmluZSBTRUNDT01QX0lQX01TQl9JRFggXAot KyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9pbnRl cikgKyA0KQotKyNkZWZpbmUgU0VDQ09NUF9JUF9MU0JfSURYIFwKLSsgIChvZmZzZXRvZihzdHJ1 Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgMCkKLSsjZGVmaW5l IFNFQ0NPTVBfQVJHX01TQl9JRFgobnIpIFwKLSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNj b21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyA0KQotKyNkZWZpbmUgU0VDQ09NUF9BUkdfTFNC X0lEWChucikgXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykg KyA4ICogKG5yKSArIDApCi0rCi0rI2RlZmluZSBTRUNDT01QX1BUX1JFU1VMVChfcmVncykgKF9y ZWdzKS5ncHJbM10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfU1lTQ0FMTChfcmVncykgKF9yZWdzKS5n cHJbMF0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfSVAoX3JlZ3MpIChfcmVncykubmlwCi0rI2RlZmlu ZSBTRUNDT01QX1BUX1BBUk0xKF9yZWdzKSAoX3JlZ3MpLmdwclszXQotKyNkZWZpbmUgU0VDQ09N UF9QVF9QQVJNMihfcmVncykgKF9yZWdzKS5ncHJbNF0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFS TTMoX3JlZ3MpIChfcmVncykuZ3ByWzVdCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk00KF9yZWdz KSAoX3JlZ3MpLmdwcls2XQotKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNShfcmVncykgKF9yZWdz KS5ncHJbN10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3JlZ3MpIChfcmVncykuZ3ByWzhd Ci0rCi0gI2Vsc2UKLSAjZXJyb3IgVW5zdXBwb3J0ZWQgdGFyZ2V0IHBsYXRmb3JtCi0gCi1kaWZm IC0tZ2l0IGEvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGlj eS5jYyBiL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3ku Y2MKLWluZGV4IDZhMWVjMjM4OS4uZjIwYzU4MmRkIDEwMDY0NAotLS0tIGEvc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYwotKysrIGIvc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYwotQEAgLTg4LDcgKzg4 LDggQEAgYm9vbCBJc0Jhc2VsaW5lUG9saWN5V2F0Y2hlZChpbnQgc3lzbm8pIHsKLSAgICAgICAg ICBTeXNjYWxsU2V0czo6SXNQcmN0bChzeXNubykgfHwKLSAgICAgICAgICBTeXNjYWxsU2V0czo6 SXNQcm9jZXNzR3JvdXBPclNlc3Npb24oc3lzbm8pIHx8Ci0gI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKHN5c25vKSB8fAotICNlbmRp ZgotICNpZiBkZWZpbmVkKF9fYXJtX18pCi1AQCAtMjI3LDcgKzIyOCw3IEBAIFJlc3VsdEV4cHIg RXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vycm5vLAotICAgfQotIAotICNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBz X18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNo NjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgaWYgKHN5c25vID09IF9fTlJfbW1h cCkKLSAgICAgcmV0dXJuIFJlc3RyaWN0TW1hcEZsYWdzKCk7Ci0gI2VuZGlmCi1AQCAtMjQ1LDcg KzI0Niw3IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vy cm5vLAotICAgICByZXR1cm4gUmVzdHJpY3RQcmN0bCgpOwotIAotICNpZiBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAg ICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICBpZiAoc3lzbm8gPT0gX19OUl9zb2NrZXRwYWlyKSB7Ci0g ICAgIC8vIE9ubHkgYWxsb3cgQUZfVU5JWCwgUEZfVU5JWC4gQ3Jhc2ggaWYgYW55dGhpbmcgZWxz ZSBpcyBzZWVuLgotICAgICBzdGF0aWNfYXNzZXJ0KEFGX1VOSVggPT0gUEZfVU5JWCwKLUBAIC0y ODUsNyArMjg2LDggQEAgUmVzdWx0RXhwciBFdmFsdWF0ZVN5c2NhbGxJbXBsKGludCBmc19kZW5p ZWRfZXJybm8sCi0gICB9Ci0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp Ci0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIGlmIChTeXNj YWxsU2V0czo6SXNTb2NrZXRDYWxsKHN5c25vKSkKLSAgICAgcmV0dXJuIFJlc3RyaWN0U29ja2V0 Y2FsbENvbW1hbmQoKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5X3VuaXR0ZXN0LmNjIGIvc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeV91bml0dGVzdC5jYwotaW5kZXgg MDFjMDQ2ZGRhLi43ZTVhNmJlODIgMTAwNjQ0Ci0tLS0gYS9zYW5kYm94L2xpbnV4L3NlY2NvbXAt YnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5X3VuaXR0ZXN0LmNjCTIwMjEtMDQtMTUgMTM6MTE6 MTAuNDgxNTc5NDcwIC0wNDAwCi0rKysgYi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBl cnMvYmFzZWxpbmVfcG9saWN5X3VuaXR0ZXN0LmNjCTIwMjEtMDQtMTUgMTM6MTI6NDMuNTI0ODMx Mzc2IC0wNDAwCi1AQCAtMzAyLDcgKzMwMiw3IEBACi0gVEVTVF9CQVNFTElORV9TSUdTWVMoX19O Ul9zeXNsb2cpCi0gVEVTVF9CQVNFTElORV9TSUdTWVMoX19OUl90aW1lcl9jcmVhdGUpCi0gCi0t I2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYg IWRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX2lub3Rp ZnlfaW5pdCkKLSBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3ZzZXJ2ZXIpCi0gI2VuZGlmCi1k aWZmIC0tZ2l0IGEvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFy YW1ldGVyc19yZXN0cmljdGlvbnMuY2MgYi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBl cnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYwotaW5kZXggMmE5N2QzOTE2Li44 ZTgxYWE2Y2YgMTAwNjQ0Ci0tLS0gYS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMv c3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYwkyMDIxLTA0LTE0IDE0OjQxOjA4LjAw MDAwMDAwMCAtMDQwMAotKysrIGIvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5 c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MJMjAyMS0wNC0xNSAxMzoxNzo1Ny44MDg3 MTU3MzMgLTA0MDAKLUBAIC00MCw3ICs0MCw4IEBACi0gI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4K LSAjaWYgKGRlZmluZWQoT1NfTElOVVgpIHx8IEJVSUxERkxBRyhJU19DSFJPTUVPU19MQUNST1Mp KSAmJiBcCi0gICAgICFkZWZpbmVkKF9fYXJtX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAm JiAgICAgICAgICAgXAotLSAgICAhZGVmaW5lZChQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBKQotKyAg ICAhZGVmaW5lZChQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBKSAmJgkJCSAgICBcCi0rICAgICFkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gLy8gQWxzbyBpbmNsdWRlIGFzbS9wdHJhY2UtYWJpLmggc2lu Y2UgcHRyYWNlLmggaW4gb2xkZXIgbGliYyAoZm9yIGluc3RhbmNlCi0gLy8gdGhlIG9uZSBpbiBV YnVudHUgMTYuMDQgTFRTKSBpcyBtaXNzaW5nIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEuCi0gLy8g YXNtL3B0cmFjZS1hYmkuaCBkb2Vzbid0IGV4aXN0IG9uIGFybTMyIGFuZCBQVFJBQ0VfR0VUX1RI UkVBRF9BUkVBIGlzbid0Ci1AQCAtNDksNiArNTAsMTEgQEAKLSAjZW5kaWYKLSAjZW5kaWYgIC8v ICFPU19OQUNMX05PTlNGSQotIAotKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5lZCBpbiB0 ZXJtcyBvZiBzdHJ1Y3QgdGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRlcm1pb3MuaAotKyNp ZmRlZiBfX3Bvd2VycGM2NF9fCi0rI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSsjZW5kaWYKLSsKLSAj aWYgZGVmaW5lZChPU19BTkRST0lEKQotIAotICNpZiAhZGVmaW5lZChGX0RVUEZEX0NMT0VYRUMp Ci1AQCAtOTgsNiArMTA0LDE1IEBACi0gI2VuZGlmCi0gfQotIAotK2lubGluZSBib29sIElzQXJj aGl0ZWN0dXJlUFBDNjQoKSB7Ci0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIHJldHVy biB0cnVlOwotKyNlbHNlCi0rICByZXR1cm4gZmFsc2U7Ci0rI2VuZGlmCi0rfQotKwotKwotIC8v IFVidW50dSdzIHZlcnNpb24gb2YgZ2xpYmMgaGFzIGEgcmFjZSBjb25kaXRpb24gaW4gc2VtX3Bv c3QgdGhhdCBjYW4gY2F1c2UKLSAvLyBpdCB0byBjYWxsIGZ1dGV4KDIpIHdpdGggYm9ndXMgb3Ag YXJndW1lbnRzLiBUbyB3b3JrYXJvdW5kIHRoaXMsIHdlIG5lZWQKLSAvLyB0byBhbGxvdyB0aG9z ZSBmdXRleCgyKSBjYWxscyB0byBmYWlsIHdpdGggRUlOVkFMLCBpbnN0ZWFkIG9mIGNyYXNoaW5n IHRoZQotQEAgLTIzOSw2ICsyNTQsOCBAQAotICAgdWludDY0X3Qga09MYXJnZUZpbGVGbGFnID0g T19MQVJHRUZJTEU7Ci0gICBpZiAoSXNBcmNoaXRlY3R1cmVYODZfNjQoKSB8fCBJc0FyY2hpdGVj dHVyZUkzODYoKSB8fCBJc0FyY2hpdGVjdHVyZU1pcHMoKSkKLSAgICAga09MYXJnZUZpbGVGbGFn ID0gMDEwMDAwMDsKLSsgIGVsc2UgaWYgKElzQXJjaGl0ZWN0dXJlUFBDNjQoKSkKLSsgICAga09M YXJnZUZpbGVGbGFnID0gMDIwMDAwMDsKLSAKLSAgIGNvbnN0IEFyZzxpbnQ+IGNtZCgxKTsKLSAg IGNvbnN0IEFyZzxsb25nPiBsb25nX2FyZygyKTsKLUBAIC0yNTYsNyArMjczLDE2IEBACi0gICAg ICAgICAgICAgICBGX1NFVExLVywKLSAgICAgICAgICAgICAgIEZfR0VUTEssCi0gICAgICAgICAg ICAgICBGX0RVUEZELAotLSAgICAgICAgICAgICAgRl9EVVBGRF9DTE9FWEVDKSwKLSsgICAgICAg ICAgICAgIEZfRFVQRkRfQ0xPRVhFQwotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rLy8g T24gUFBDNjQsIEZfU0VUTEssIEZfR0VUTEssIEZfU0VUTEtXIGFyZSBkZWZpbmVkIGFzIHRoZSA2 NC1iaXQgdmFyaWFudHMKLSsvLyBidXQgZ2xpYmMgd2lsbCBzb21ldGltZXMgc3RpbGwgdXNlIHRo ZSAzMi1iaXQgdmVyc2lvbnMuIEFsbG93IGJvdGguCi0rICAgICAgICAgICAgICAsCi0rICAgICAg ICAgICAgICA1LCAvKiBGX0dFVExLICgzMikgKi8KLSsgICAgICAgICAgICAgIDYsIC8qIEZfU0VU TEsgKDMyKSAqLwotKyAgICAgICAgICAgICAgNyAgLyogRl9TRVRMS1cgKDMyKSAqLwotKyNlbmRp ZgotKwkgICAgICksCi0gICAgICAgICAgICAgIEFsbG93KCkpCi0gICAgICAgLkNhc2UoRl9TRVRG TCwKLSAgICAgICAgICAgICBJZigobG9uZ19hcmcgJiB+a0FsbG93ZWRNYXNrKSA9PSAwLCBBbGxv dygpKS5FbHNlKENyYXNoU0lHU1lTKCkpKQotQEAgLTI2Niw3ICsyOTIsNyBAQAotICAgLy8gY2xh bmctZm9ybWF0IG9uCi0gfQotIAotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gUmVzdWx0RXhwciBSZXN0cmljdFNvY2tldGNhbGxDb21t YW5kKCkgewotICAgLy8gVW5mb3J0dW5hdGVseSwgd2UgYXJlIHVuYWJsZSB0byByZXN0cmljdCB0 aGUgZmlyc3QgcGFyYW1ldGVyIHRvCi0gICAvLyBzb2NrZXRwYWlyKDIpLiBXaGlsc3QgaW5pdGlh bGx5IHNvdW5kaW5nIGJhZCwgaXQncyBub3Rld29ydGh5IHRoYXQgdmVyeQotQEAgLTQxOSw3ICs0 NDUsNyBAQAotICNlbmRpZgotICAgcmV0dXJuIFN3aXRjaChyZXF1ZXN0KQotICAgICAgIC5DQVNF UygoCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRf XykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgICAgICAgICAgICAgIFBUUkFDRV9H RVRSRUdTLCBQVFJBQ0VfR0VURlBSRUdTLCBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBLAotICAgICAg ICAgICAgICAgICAgUFRSQUNFX0dFVFJFR1NFVCwKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0 aW9ucy5oIGIvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1l dGVyc19yZXN0cmljdGlvbnMuaAotaW5kZXggYmE0Mjg5ZjA1Li45YTRkNWFiMmQgMTAwNjQ0Ci0t LS0gYS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJz X3Jlc3RyaWN0aW9ucy5oCi0rKysgYi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMv c3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5oCi1AQCAtNDgsNyArNDgsNyBAQCBTQU5E Qk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0TXByb3RlY3RGbGFncygpOwot IC8vIE9fTk9OQkxPQ0sgfCBPX1NZTkMgfCBPX0xBUkdFRklMRSB8IE9fQ0xPRVhFQyB8IE9fTk9B VElNRS4KLSBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxD b21tYW5kcygpOwotIAotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19f KQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gLy8gUmVzdHJpY3Qgc29ja2V0Y2FsbCgyKSB0byBvbmx5IGFsbG93 IHNvY2tldHBhaXIoMiksIHNlbmQoMiksIHJlY3YoMiksCi0gLy8gc2VuZHRvKDIpLCByZWN2ZnJv bSgyKSwgc2h1dGRvd24oMiksIHNlbmRtc2coMikgYW5kIHJlY3Ztc2coMikuCi0gU0FOREJPWF9F WFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCk7Ci1k aWZmIC0tZ2l0IGEvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0 cy5jYyBiL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MK LWluZGV4IDY0MmRmNzIwNy4uMzRmNDdlYjczIDEwMDY0NAotLS0tIGEvc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwotKysrIGIvc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwotQEAgLTI5LDcgKzI5LDggQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0dGltZShpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAo c3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2dldHRpbWVvZmRheToKLSAjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwg XAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl90aW1lOgotICNl bmRpZgotICAgICAgIHJldHVybiB0cnVlOwotQEAgLTUyLDEyICs1MywxNCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0FsbG93ZWRHZXR0aW1lKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfY2xv Y2tfbmFub3NsZWVwX3RpbWU2NDogIC8vIFBhcmFtZXRlcnMgZmlsdGVyZWQgYnkgUmVzdHJpY3RD bG9ja0lEKCkuCi0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp Ci0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBf X05SX2Z0aW1lOiAgLy8gT2Jzb2xldGUuCi0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zZXR0aW1l b2ZkYXk6ICAvLyBQcml2aWxlZ2VkLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNh c2UgX19OUl9zdGltZToKLSAjZW5kaWYKLSAgICAgZGVmYXVsdDoKLUBAIC0xMzUsNyArMTM4LDcg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNl IF9fTlJfZmFjY2Vzc2F0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gICAgIGNhc2Ug X19OUl9mY2htb2RhdDoKLSAgICAgY2FzZSBfX05SX2ZjaG93bmF0OiAgLy8gU2hvdWxkIGJlIGNh bGxlZCBjaG93bmF0ID8KLS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFy Y2g2NF9fKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6ICAv LyBmc3RhdGF0KCkuIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNlbGlmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotICAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLUBAIC0xNTQsNyArMTU3 LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBj YXNlIF9fTlJfbWVtZmRfY3JlYXRlOgotICAgICBjYXNlIF9fTlJfbWtkaXJhdDoKLSAgICAgY2Fz ZSBfX05SX21rbm9kYXQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX29sZGxzdGF0 OgotICAgICBjYXNlIF9fTlJfb2xkc3RhdDoKLSAjZW5kaWYKLUBAIC0xNjgsNyArMTcxLDggQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICNlbmRpZgotICAg ICBjYXNlIF9fTlJfc3RhdGZzOiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc3Rh dGZzNjQ6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zeW1saW5rYXQ6Ci1AQCAtMTc4LDcgKzE4 Miw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKLSAgICAg Y2FzZSBfX05SX3RydW5jYXRlNjQ6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl91bmxpbmthdDoK LS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgICBjYXNlIF9fTlJfdXRpbWU6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl91dGltZW5zYXQ6 ICAvLyBOZXcuCi1AQCAtMjAzLDcgKzIwOCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAgICByZXR1 cm4gdHJ1ZTsKLSAvLyBUT0RPKGpsbik6IHRoZXNlIHNob3VsZCBiZSBkZW5pZWQgZ3JhY2VmdWxs eSBhcyB3ZWxsIChtb3ZlZCBiZWxvdykuCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2ZhZHZpc2U2NDogIC8vIEVQ RVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKQot QEAgLTIxNiwxMSArMjIyLDEyIEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0 ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2Zsb2NrOiAgICAgIC8v IEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICAgICBjYXNlIF9fTlJfZnN0YXRmczogICAgLy8g R2l2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd2hvbGUgZmlsZXN5c3RlbS4KLSAjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkg fHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9mc3RhdGZz NjQ6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9mc3luYzogIC8vIEVQRVJNIG5vdCBhIHZhbGlk IGVycm5vLgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9vbGRmc3RhdDoKLSAjZW5k aWYKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKSB8fCBcCi1AQCAtMjI4LDYgKzIzNSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6 OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBf X05SX3N5bmNfZmlsZV9yYW5nZTogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNlbGlm IGRlZmluZWQoX19hcm1fXykKLSAgICAgY2FzZSBfX05SX2FybV9zeW5jX2ZpbGVfcmFuZ2U6ICAv LyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0rICAgIGNhc2UgX19OUl9zeW5jX2ZpbGVfcmFuZ2UyOiAvLyBFUEVSTSBub3QgYSB2YWxpZCBl cnJuby4KLSAjZW5kaWYKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXR1cm4gZmFsc2U7Ci1AQCAt MjQ4LDcgKzI1Nyw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRGVuaWVkRmlsZVN5c3RlbUFjY2Vz c1ZpYUZkKGludCBzeXNubykgewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfZ2V0ZGVudHM2NDog IC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBc Ci0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICAgIGNhc2UgX19OUl9yZWFkZGlyOgotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotQEAg LTI4OSw3ICsyOTksNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0dldFNpbXBsZUlkKGludCBzeXNu bykgewotIGJvb2wgU3lzY2FsbFNldHM6OklzUHJvY2Vzc1ByaXZpbGVnZUNoYW5nZShpbnQgc3lz bm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2NhcHNldDoKLS0jaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQotKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgICAgY2FzZSBfX05SX2lvcGVybTogIC8vIEludGVsIHByaXZpbGVnZS4KLSAgICAgY2FzZSBf X05SX2lvcGw6ICAgIC8vIEludGVsIHByaXZpbGVnZS4KLSAjZW5kaWYKLUBAIC0zNDAsOCArMzUw LDExIEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBzeXNu bykgewotICAgICBjYXNlIF9fTlJfcnRfc2lncmV0dXJuOgotICAgICBjYXNlIF9fTlJfcnRfc2ln dGltZWR3YWl0OgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8 IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSsjaWZuZGVmIF9fcG93ZXJwYzY0X18KLSAgICAgY2FzZSBfX05SX3J0X3NpZ3RpbWVkd2FpdF90 aW1lNjQ6Ci0rI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zaWdhY3Rpb246Ci0gICAgIGNhc2UgX19O Ul9zaWdwcm9jbWFzazoKLSAgICAgY2FzZSBfX05SX3NpZ3JldHVybjoKLUBAIC0zNTcsNyArMzcw LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkU2lnbmFsSGFuZGxpbmcoaW50IHN5c25v KSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zaWduYWxmZDQ6Ci0gI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwK LSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2lncGVuZGluZzoK LSAgICAgY2FzZSBfX05SX3NpZ3N1c3BlbmQ6Ci0gI2VuZGlmCi1AQCAtMzgxLDcgKzM5NSw3IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZE9wZXJhdGlvbk9uRmQoaW50IHN5c25vKSB7Ci0g I2VuZGlmCi0gICAgIGNhc2UgX19OUl9kdXAzOgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zaHV0ZG93bjoKLSAjZW5kaWYKLSAgICAgICByZXR1 cm4gdHJ1ZTsKLUBAIC00MTQsNyArNDI4LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2Vk UHJvY2Vzc1N0YXJ0T3JEZWF0aChpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2V4aXRfZ3Jv dXA6Ci0gICAgIGNhc2UgX19OUl93YWl0NDoKLSAgICAgY2FzZSBfX05SX3dhaXRpZDoKLS0jaWYg ZGVmaW5lZChfX2kzODZfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfd2FpdHBpZDoKLSAjZW5kaWYKLSAgICAgICByZXR1 cm4gdHJ1ZTsKLUBAIC00MzEsNyArNDQ1LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2Vk UHJvY2Vzc1N0YXJ0T3JEZWF0aChpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05S X3NldF90aWRfYWRkcmVzczoKLSAgICAgY2FzZSBfX05SX3Vuc2hhcmU6Ci0tI2lmICFkZWZpbmVk KF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgIWRlZmluZWQoX19taXBz X18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICAgIGNhc2UgX19OUl92Zm9yazoKLSAjZW5kaWYKLSAgICAgZGVmYXVsdDoKLUBAIC00ODQsNyAr NDk4LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0T3JNb2RpZnlTb2NrZXQoaW50 IHN5c25vKSB7Ci0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIGRlZmF1bHQ6Ci0gI2lmIGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3NvY2tldHBhaXI6ICAv LyBXZSB3aWxsIHdhbnQgdG8gaW5zcGVjdCBpdHMgYXJndW1lbnQuCi0gI2VuZGlmCi0gICAgICAg cmV0dXJuIGZhbHNlOwotQEAgLTQ5NCw3ICs1MDgsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0Fs bG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKLSBib29sIFN5c2NhbGxTZXRzOjpJ c0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykg ewotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5l ZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9h Y2NlcHQ6Ci0gICAgIGNhc2UgX19OUl9hY2NlcHQ0OgotICAgICBjYXNlIF9fTlJfYmluZDoKLUBA IC01MDksNyArNTIzLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNEZW5pZWRHZXRPck1vZGlmeVNv Y2tldChpbnQgc3lzbm8pIHsKLSB9Ci0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0g ICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJf QklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFS Q0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAvLyBC aWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZvciBzb2NrZXRzLgotIGJvb2wgU3lzY2FsbFNl dHM6OklzU29ja2V0Q2FsbChpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLUBAIC01 MjMsNyArNTM4LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKGludCBzeXNubykg ewotIH0KLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSBib29sIFN5c2NhbGxTZXRzOjpJc05ldHdvcmtTb2NrZXRJbmZvcm1h dGlvbihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2dl dHBlZXJuYW1lOgotQEAgLTU0OCw3ICs1NjQsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93 ZWRBZGRyZXNzU3BhY2VBY2Nlc3MoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9taW5jb3Jl OgotICAgICBjYXNlIF9fTlJfbWxvY2thbGw6Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9tbWFwOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLUBAIC01NzgsNyArNTk0LDggQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGludCBzeXNubykgewotICAgc3dpdGNo IChzeXNubykgewotICAgICBjYXNlIF9fTlJfbHNlZWs6Ci0gI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfX2xsc2VlazoKLSAjZW5kaWYK LSAjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCi1AQCAtNTk4LDI2ICs2MTUsMjggQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGludCBzeXNubykgewotICAgICBjYXNlIF9f TlJfcmVhZHY6Ci0gICAgIGNhc2UgX19OUl9wcmVhZDY0OgotICNpZiBkZWZpbmVkKF9fYXJtX18p IHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgICAgY2FzZSBfX05SX3JlY3Y6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRl ZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3JlY3Zmcm9tOiAgLy8gQ291bGQgc3BlY2lm eSBzb3VyY2UuCi0gICAgIGNhc2UgX19OUl9yZWN2bXNnOiAgIC8vIENvdWxkIHNwZWNpZnkgc291 cmNlLgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2VsZWN0OgotICNlbmRpZgotLSNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBz X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5l ZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfX25l d3NlbGVjdDoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQot KyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul9zZW5kOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19h cm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9f KQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICAgIGNhc2UgX19OUl9zZW5kbXNnOiAgLy8gQ291bGQgc3BlY2lmeSBkZXN0aW5hdGlvbi4KLSAg ICAgY2FzZSBfX05SX3NlbmR0bzogICAvLyBDb3VsZCBzcGVjaWZ5IGRlc3RpbmF0aW9uLgotICNl bmRpZgotQEAgLTY3Myw3ICs2OTIsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRCYXNp Y1NjaGVkdWxlcihpbnQgc3lzbm8pIHsKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgY2FzZSBf X05SX2dldHByaW9yaXR5OgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJt X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSAgICAgY2FzZSBfX05SX25pY2U6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zZXRw cmlvcml0eToKLUBAIC02ODUsNyArNzA1LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2Vk QmFzaWNTY2hlZHVsZXIoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0czo6SXNBZG1pbk9w ZXJhdGlvbihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwg XAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9iZGZsdXNoOgot ICNlbmRpZgotICAgICBjYXNlIF9fTlJfa2V4ZWNfbG9hZDoKLUBAIC03MDEsNyArNzIyLDggQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNBZG1pbk9wZXJhdGlvbihpbnQgc3lzbm8pIHsKLSAKLSBib29s IFN5c2NhbGxTZXRzOjpJc0tlcm5lbE1vZHVsZShpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lz bm8pIHsKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfY3JlYXRlX21vZHVsZToKLSAgICAgY2FzZSBfX05SX2dldF9r ZXJuZWxfc3ltczogIC8vIFNob3VsZCBFTk9TWVMuCi0gICAgIGNhc2UgX19OUl9xdWVyeV9tb2R1 bGU6Ci1AQCAtNzM0LDcgKzc1Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRnNDb250cm9sKGlu dCBzeXNubykgewotICAgICBjYXNlIF9fTlJfc3dhcG9mZjoKLSAgICAgY2FzZSBfX05SX3N3YXBv bjoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwK LSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdW1vdW50OgotICNl bmRpZgotICAgICBjYXNlIF9fTlJfdW1vdW50MjoKLUBAIC03NTAsNyArNzczLDcgQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNOdW1hKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfZ2V0Y3B1Ogot ICAgICBjYXNlIF9fTlJfbWJpbmQ6Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFy Y2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gICAgIGNhc2UgX19OUl9taWdyYXRlX3BhZ2VzOgotICNlbmRpZgotICAgICBjYXNlIF9f TlJfbW92ZV9wYWdlczoKLUBAIC03ODUsMTQgKzgwOCwxNSBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0dsb2JhbFByb2Nlc3NFbnZpcm9ubWVudChpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8p IHsKLSAgICAgY2FzZSBfX05SX2FjY3Q6ICAvLyBQcml2aWxlZ2VkLgotICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwK LS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZ2V0cmxpbWl0OgotICNlbmRp ZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pCi0rI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgICBjYXNlIF9fTlJfdWdldHJsaW1pdDoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp ICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotICAgICBjYXNlIF9fTlJfdWxpbWl0OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJf Z2V0cnVzYWdlOgotQEAgLTgyNiw3ICs4NTAsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0dsb2Jh bFN5c3RlbVN0YXR1cyhpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3N5c2lu Zm86Ci0gICAgIGNhc2UgX19OUl91bmFtZToKLS0jaWYgZGVmaW5lZChfX2kzODZfXykKLSsjaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9f TlJfb2xkdW5hbWU6Ci0gICAgIGNhc2UgX19OUl9vbGRvbGR1bmFtZToKLSAjZW5kaWYKLUBAIC04 OTIsOCArOTE2LDE2IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzU3lzdGVtVlNlbWFwaG9yZXMoaW50 IHN5c25vKSB7Ci0gfQotICNlbmRpZgotIAotKy8qIHNoaXR0eSBoYWNrIGFyb3VuZCBWb2lkJ3Mg NC4xOSBrZXJuZWwgaGVhZGVycyBtaXNzaW5nIHRob3NlIG51bWJlcnMgKi8KLSsjaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKSAmJiAhZGVmaW5lZChfX05SX3NobWdldCkKLSsjZGVmaW5lIF9fTlJf c2htZ2V0IDM5NQotKyNkZWZpbmUgX19OUl9zaG1jdGwgMzk2Ci0rI2RlZmluZSBfX05SX3NobWF0 IDM5NwotKyNkZWZpbmUgX19OUl9zaG1kdCAzOTgKLSsjZW5kaWYKLSsKLSAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwK LS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKSB8fCBcCi0gICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzY0X0JJVFMpKQotIC8vIFRoZXNlIGdpdmUgYSBsb3Qgb2YgYW1iaWVu dCBhdXRob3JpdHkgYW5kIGJ5cGFzcyB0aGUgc2V0dWlkIHNhbmRib3guCi0gYm9vbCBTeXNjYWxs U2V0czo6SXNTeXN0ZW1WU2hhcmVkTWVtb3J5KGludCBzeXNubykgewotQEAgLTkyNSw3ICs5NTcs OCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZNZXNzYWdlUXVldWUoaW50IHN5c25vKSB7 Ci0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAvLyBCaWcgc3lzdGVtIFYg bXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsLgotIGJvb2wgU3lzY2FsbFNldHM6OklzU3lzdGVtVklw YyhpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLUBAIC05NDUsNyArOTc4LDggQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNBbnlTeXN0ZW1WKGludCBzeXNubykgewotICAgcmV0dXJuIElz U3lzdGVtVk1lc3NhZ2VRdWV1ZShzeXNubykgfHwgSXNTeXN0ZW1WU2VtYXBob3JlcyhzeXNubykg fHwKLSAgICAgICAgICBJc1N5c3RlbVZTaGFyZWRNZW1vcnkoc3lzbm8pOwotICNlbGlmIGRlZmlu ZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSAgIHJldHVybiBJc1N5c3RlbVZJcGMoc3lzbm8pOwotICNlbmRpZgot IH0KLUBAIC0xMDAyLDcgKzEwMzYsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZhTm90aWZ5KGlu dCBzeXNubykgewotIGJvb2wgU3lzY2FsbFNldHM6OklzVGltZXIoaW50IHN5c25vKSB7Ci0gICBz d2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9nZXRpdGltZXI6Ci0tI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05S X2FsYXJtOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc2V0aXRpbWVyOgotQEAgLTEwODQsMTgg KzExMTksMjIgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNNaXNjKGludCBzeXNubykgewotICAgICBj YXNlIF9fTlJfc3luY2ZzOgotICAgICBjYXNlIF9fTlJfdmhhbmd1cDoKLSAvLyBUaGUgc3lzdGVt IGNhbGxzIGJlbG93IGFyZSBub3QgaW1wbGVtZW50ZWQuCi0tI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2Fmc19zeXNj YWxsOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9i cmVhazoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZ2V0cG1zZzoKLSAjZW5kaWYKLSAjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZ3R0eToKLSAgICAgY2FzZSBfX05SX2lk bGU6Ci0gICAgIGNhc2UgX19OUl9sb2NrOgotQEAgLTExMDMsMjAgKzExNDIsMjIgQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNNaXNjKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfcHJvZjoKLSAg ICAgY2FzZSBfX05SX3Byb2ZpbDoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwK LSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfcHV0cG1zZzoKLSAj ZW5kaWYKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQotICAgICBjYXNlIF9fTlJfc2VjdXJpdHk6 Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3N0dHk6 Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl90dXhjYWxsOgot ICNlbmRpZgotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgIWRlZmluZWQoX19hYXJj aDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl92c2VydmVy OgotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotZGlmZiAtLWdpdCBhL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaCBiL3NhbmRib3gvbGludXgvc2Vj Y29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaAotaW5kZXggOTIzNTMzZWM5Li40MTFmNzJh Y2QgMTAwNjQ0Ci0tLS0gYS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2Fs bF9zZXRzLmgKLSsrKyBiL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxs X3NldHMuaAotQEAgLTQzLDEzICs0MywxNCBAQCBjbGFzcyBTQU5EQk9YX0VYUE9SVCBTeXNjYWxs U2V0cyB7Ci0gICBzdGF0aWMgYm9vbCBJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNu byk7Ci0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8 fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIC8vIEJpZyBtdWx0aXBsZXhpbmcg c3lzdGVtIGNhbGwgZm9yIHNvY2tldHMuCi0gICBzdGF0aWMgYm9vbCBJc1NvY2tldENhbGwoaW50 IHN5c25vKTsKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNo NjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgc3RhdGljIGJvb2wgSXNOZXR3b3JrU29ja2V0SW5mb3JtYXRpb24oaW50IHN5c25vKTsK LSAjZW5kaWYKLSAKLUBAIC03Niw3ICs3Nyw3IEBAIGNsYXNzIFNBTkRCT1hfRVhQT1JUIFN5c2Nh bGxTZXRzIHsKLSAgIHN0YXRpYyBib29sIElzU3lzdGVtVlNlbWFwaG9yZXMoaW50IHN5c25vKTsK LSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgZGVmaW5lZChfX2Fh cmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8fCBcCi0gICAgIChkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzY0X0JJVFMpKQotICAgLy8g VGhlc2UgZ2l2ZSBhIGxvdCBvZiBhbWJpZW50IGF1dGhvcml0eSBhbmQgYnlwYXNzIHRoZSBzZXR1 aWQgc2FuZGJveC4KLSAgIHN0YXRpYyBib29sIElzU3lzdGVtVlNoYXJlZE1lbW9yeShpbnQgc3lz bm8pOwotQEAgLTg4LDcgKzg5LDggQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2FsbFNldHMg ewotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAvLyBCaWcgc3lzdGVt IFYgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsLgotICAgc3RhdGljIGJvb2wgSXNTeXN0ZW1WSXBj KGludCBzeXNubyk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi9zeXNjYWxsLmNjIGIvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCi1p bmRleCBlNDdlOThiZjUuLmQ1M2E3ZmY1NiAxMDA2NDQKLS0tLSBhL3NhbmRib3gvbGludXgvc2Vj Y29tcC1icGYvc3lzY2FsbC5jYwotKysrIGIvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNj YWxsLmNjCi1AQCAtMTgsNyArMTgsNyBAQCBuYW1lc3BhY2Ugc2FuZGJveCB7Ci0gbmFtZXNwYWNl IHsKLSAKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hf Q1BVX0FSTV9GQU1JTFkpIHx8IFwKLS0gICAgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkK LSsgICAgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgfHwgZGVmaW5lZCAoQVJDSF9DUFVf UFBDNjRfRkFNSUxZKQotIC8vIE51bWJlciB0aGF0J3Mgbm90IGN1cnJlbnRseSB1c2VkIGJ5IGFu eSBMaW51eCBrZXJuZWwgQUJJcy4KLSBjb25zdCBpbnQga0ludmFsaWRTeXNjYWxsTnVtYmVyID0g MHgzNTFkMzsKLSAjZWxzZQotQEAgLTMxMCwxMiArMzEwLDU2IEBAIGFzbSgvLyBXZSBuZWVkIHRv IGJlIGFibGUgdG8gdGVsbCB0aGUga2VybmVsIGV4YWN0bHkgd2hlcmUgd2UgbWFkZSBhCi0gICAg IC8vIEVudGVyIHRoZSBrZXJuZWwKLSAgICAgInN2YyAwXG4iCi0gICAgICIyOnJldFxuIgotKyAg ICAiLmNmaV9lbmRwcm9jXG4iCi0rICAgICIuc2l6ZSBTeXNjYWxsQXNtLCAuLVN5c2NhbGxBc21c biIKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgICIudGV4dFxuIgotKyAgICAi LmFsaWduIDRcbiIKLSsgICAgIi50eXBlIFN5c2NhbGxBc20gQGZ1bmN0aW9uXG4iCi0rICAgICJT eXNjYWxsQXNtOlxuIgotKyAgICAiLmNmaV9zdGFydHByb2NcbiIKLSsKLSsgICAgLy8gQ2hlY2sg aWYgcjMgaXMgbmVnYXRpdmUKLSsgICAgImNtcGRpIDMsIDBcbiIKLSsgICAgImJndCAyZlxuIgot KwotKyAgICAvLyBMb2FkIGFkZHJlc3Mgb2YgM2YgaW50byByMyBhbmQgcmV0dXJuCi0rICAgICJt ZmxyIDEwXG4iCi0rICAgICJibCAxZlxuIgotKyAgICAiMTogbWZsciAzXG4iCi0rICAgICJtdGxy IDEwXG4iCi0rICAgICJhZGRpIDMsIDMsIDQqMTNcbiIKLSsgICAgImJsclxuIgotKwotKyAgICAv LyBMb2FkIGFyZ3VtZW50cyBmcm9tIGFycmF5IGludG8gcjMtOAotKyAgICAvLyBzYXZlIHBhcmFt IDMgaW4gcjEwCi0rICAgICIyOlxuIgotKyAgICAibXIgMCwgM1xuIgotKyAgICAibGQgMywgMCg0 KVxuIgotKyAgICAibGQgNSwgMTYoNClcbiIKLSsgICAgImxkIDYsIDI0KDQpXG4iCi0rICAgICJs ZCA3LCAzMig0KVxuIgotKyAgICAibGQgOCwgNDAoNClcbiIKLSsgICAgImxkIDQsIDgoNClcbiIK LSsgICAgImxpIDksIDBcbiIKLSsKLSsgICAgLy8gRW50ZXIga2VybmVsCi0rICAgICJzY1xuIgot KwotKyAgICAvLyBNYWdpYyByZXR1cm4gYWRkcmVzcwotKyAgICAiMzpcbiIKLSsgICAgLy8gTGlr ZSBNSVBTLCBwcGM2NCByZXR1cm4gdmFsdWVzIGFyZSBhbHdheXMgcG9zaXRpdmUuCi0rICAgIC8v IENoZWNrIGZvciBlcnJvciBpbiBjcjAuU08gYW5kIG5lZ2F0ZSB1cG9uIGVycm9yCi0rICAgICJi YyA0LCAzLCA0ZlxuIgotKyAgICAibmVnIDMsIDNcbiIKLSsgICAgIjQ6IGJsclxuIgotKwotICAg ICAiLmNmaV9lbmRwcm9jXG4iCi0gICAgICIuc2l6ZSBTeXNjYWxsQXNtLCAuLVN5c2NhbGxBc21c biIKLSAjZW5kaWYKLSAgICAgKTsgIC8vIGFzbQotIAotLSNpZiBkZWZpbmVkKF9feDg2XzY0X18p Ci0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIGV4 dGVybiAiQyIgewotIGludHB0cl90IFN5c2NhbGxBc20oaW50cHRyX3QgbnIsIGNvbnN0IGludHB0 cl90IGFyZ3NbNl0pOwotIH0KLUBAIC00MjksNiArNDczLDggQEAgaW50cHRyX3QgU3lzY2FsbDo6 Q2FsbChpbnQgbnIsCi0gICAgIHJldCA9IGlub3V0OwotICAgfQotIAotKyNlbGlmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSsgIGludHB0cl90IHJldCA9IFN5c2NhbGxBc20obnIsIGFyZ3MpOwot ICNlbHNlCi0gI2Vycm9yICJVbmltcGxlbWVudGVkIGFyY2hpdGVjdHVyZSIKLSAjZW5kaWYKLUBA IC00NDUsOCArNDkxLDE4IEBAIHZvaWQgU3lzY2FsbDo6UHV0VmFsdWVJblVjb250ZXh0KGludHB0 cl90IHJldF92YWwsIHVjb250ZXh0X3QqIGN0eCkgewotICAgICAvLyBuZWVkcyB0byBiZSBjaGFu Z2VkIGJhY2suCi0gICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKLSAgICAgU0VDQ09NUF9QQVJNNChj dHgpID0gMTsKLS0gIH0gZWxzZQotKyAgfSBlbHNlIHsKLSAgICAgU0VDQ09NUF9QQVJNNChjdHgp ID0gMDsKLSsgIH0KLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8g U2FtZSBhcyBNSVBTLCBuZWVkIHRvIGludmVydCByZXQgYW5kIHNldCBlcnJvciByZWdpc3RlciAo Y3IwLlNPKQotKyAgaWYgKHJldF92YWwgPD0gLTEgJiYgcmV0X3ZhbCA+PSAtNDA5NSkgewotKyAg ICByZXRfdmFsID0gLXJldF92YWw7Ci0rICAgIGN0eC0+dWNfbWNvbnRleHQucmVncy0+Y2NyIHw9 ICgxIDw8IDI4KTsKLSsgIH0gZWxzZSB7Ci0rICAgIGN0eC0+dWNfbWNvbnRleHQucmVncy0+Y2Ny ICY9IH4oMSA8PCAyOCk7Ci0rICB9Ci0gI2VuZGlmCi0gICBTRUNDT01QX1JFU1VMVChjdHgpID0g c3RhdGljX2Nhc3Q8Z3JlZ190PihyZXRfdmFsKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi90cmFwLmNjIGIvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFw LmNjCi1pbmRleCBmNWI4NmE3M2EuLjVlNmM0YTA2OCAxMDA2NDQKLS0tLSBhL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYvdHJhcC5jYwotKysrIGIvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90 cmFwLmNjCi1AQCAtMjMyLDYgKzIzMiwyMCBAQCB2b2lkIFRyYXA6OlNpZ1N5cyhpbnQgbnIsIExp bnV4U2lnSW5mbyogaW5mbywgdWNvbnRleHRfdCogY3R4KSB7Ci0gICAgICAgU2V0SXNJblNpZ0hh bmRsZXIoKTsKLSAgICAgfQotIAotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIC8v IE9uIHBwYzY0K2dsaWJjLCBzb21lIHN5c2NhbGxzIHNlZW0gdG8gYWNjaWRlbnRhbGx5IG5lZ2F0 ZSB0aGUgZmlyc3QKLSsgICAgLy8gcGFyYW1ldGVyIHdoaWNoIGNhdXNlcyBjaGVja3MgYWdhaW5z dCBpdCB0byBmYWlsLiBGb3Igbm93LCBtYW51YWxseQotKyAgICAvLyBuZWdhdGUgdGhlbSBiYWNr LgotKyAgICAvLyBUT0RPKHNoYXduQGFuYXN0YXMuaW8pOiBpbnZlc3RpZ2F0ZSB0aGlzIGlzc3Vl IGZ1cnRoZXIKLSsgICAgYXV0byBuciA9IFNFQ0NPTVBfU1lTQ0FMTChjdHgpOwotKyAgICBpZiAo bnIgPT0gX19OUl9vcGVuYXQgfHwgbnIgPT0gX19OUl9ta2RpcmF0IHx8IG5yID09IF9fTlJfZmFj Y2Vzc2F0IHx8IG5yID09IF9fTlJfcmVhZGxpbmthdCB8fAotKyAgICAgICAgbnIgPT0gX19OUl9y ZW5hbWVhdCB8fCBuciA9PSBfX05SX3JlbmFtZWF0MiB8fCBuciA9PSBfX05SX25ld2ZzdGF0YXQg fHwgbnIgPT0gX19OUl91bmxpbmthdCkgewotKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4o U0VDQ09NUF9QQVJNMShjdHgpKSA+IDApIHsKLSsgICAgICAgICAgICBTRUNDT01QX1BBUk0xKGN0 eCkgPSAtU0VDQ09NUF9QQVJNMShjdHgpOwotKyAgICAgICAgfQotKyAgICB9Ci0rI2VuZGlmCi0r Ci0gICAgIC8vIENvcHkgdGhlIHNlY2NvbXAtc3BlY2lmaWMgZGF0YSBpbnRvIGEgYXJjaF9zZWNj b21wX2RhdGEgc3RydWN0dXJlLiBUaGlzCi0gICAgIC8vIGlzIHdoYXQgd2UgYXJlIHNob3dpbmcg dG8gVHJhcEZuYyBjYWxsYmFja3MgdGhhdCB0aGUgc3lzdGVtIGNhbGwKLSAgICAgLy8gZXZhbHVh dG9yIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2FuZGJveC4KLWRpZmYgLS1naXQgYS9zYW5kYm94L2xp bnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjIGIvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVk ZW50aWFscy5jYwotaW5kZXggZDdiNWQ4YzQ0Li40YWRjNmQwZDQgMTAwNjQ0Ci0tLS0gYS9zYW5k Ym94L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCi0rKysgYi9zYW5kYm94L2xpbnV4L3Nl cnZpY2VzL2NyZWRlbnRpYWxzLmNjCi1AQCAtODEsNyArODEsNyBAQCBib29sIENocm9vdFRvU2Fm ZUVtcHR5RGlyKCkgewotICAgcGlkX3QgcGlkID0gLTE7Ci0gICBhbGlnbmFzKDE2KSBjaGFyIHN0 YWNrX2J1ZltQVEhSRUFEX1NUQUNLX01JTl07Ci0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZB TUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCi0tICAgIGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpCi0rICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp IHx8IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotICAgLy8gVGhlIHN0YWNrIGdyb3dz IGRvd253YXJkLgotICAgdm9pZCogc3RhY2sgPSBzdGFja19idWYgKyBzaXplb2Yoc3RhY2tfYnVm KTsKLSAjZWxzZQotZGlmZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93 cmFwcGVycy5jYyBiL3NhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93cmFwcGVycy5jYwot aW5kZXggZmNmZDJhYTEyLi5mNmViMzJmYjcgMTAwNjQ0Ci0tLS0gYS9zYW5kYm94L2xpbnV4L3Nl cnZpY2VzL3N5c2NhbGxfd3JhcHBlcnMuY2MKLSsrKyBiL3NhbmRib3gvbGludXgvc2VydmljZXMv c3lzY2FsbF93cmFwcGVycy5jYwotQEAgLTU4LDcgKzU4LDcgQEAgbG9uZyBzeXNfY2xvbmUodW5z aWduZWQgbG9uZyBmbGFncywKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfNjQpCi0gICByZXR1 cm4gc3lzY2FsbChfX05SX2Nsb25lLCBmbGFncywgY2hpbGRfc3RhY2ssIHB0aWQsIGN0aWQsIHRs cyk7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9YODYpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJN X0ZBTUlMWSkgfHwgXAotLSAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotKyAgICBk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZB TUlMWSkKLSAgIC8vIENPTkZJR19DTE9ORV9CQUNLV0FSRFMgZGVmaW5lZC4KLSAgIHJldHVybiBz eXNjYWxsKF9fTlJfY2xvbmUsIGZsYWdzLCBjaGlsZF9zdGFjaywgcHRpZCwgdGxzLCBjdGlkKTsK LSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tl cl9wcm9jZXNzLmNjIGIvc2FuZGJveC9saW51eC9zeXNjYWxsX2Jyb2tlci9icm9rZXJfcHJvY2Vz cy5jYwotaW5kZXggZDcyYzlkMjM4Li43N2YxZDk1ZjUgMTAwNjQ0Ci0tLS0gYS9zYW5kYm94L2xp bnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCi0rKysgYi9zYW5kYm94L2xpbnV4 L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCi1AQCAtMTY5LDcgKzE2OSw3IEBAIGJv b2wgQnJva2VyUHJvY2Vzczo6SXNTeXNjYWxsQnJva2VyYWJsZShpbnQgc3lzbm8sIGJvb2wgZmFz dF9jaGVjaykgY29uc3QgewotICNpZiBkZWZpbmVkKF9fTlJfZnN0YXRhdDY0KQotICAgICBjYXNl IF9fTlJfZnN0YXRhdDY0OgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19hYXJjaDY0X18pCi0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfbmV3 ZnN0YXRhdDoKLSAjZW5kaWYKLSAgICAgICByZXR1cm4gIWZhc3RfY2hlY2sgfHwgYWxsb3dlZF9j b21tYW5kX3NldF8udGVzdChDT01NQU5EX1NUQVQpOwotZGlmZiAtLWdpdCBhL3NhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oIGIvc2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9saW51eF9zZWNjb21wLmgKLWluZGV4IDFmYTQ3ZWQwOS4uMzljYzlhYjUzIDEwMDY0 NAotLS0tIGEvc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKLSsr KyBiL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oCi1AQCAtNDEs NiArNDEsOSBAQAotICNpZm5kZWYgRU1fQUFSQ0g2NAotICNkZWZpbmUgRU1fQUFSQ0g2NCAxODMK LSAjZW5kaWYKLSsjaWZuZGVmIEVNX1BQQzY0Ci0rI2RlZmluZSBFTV9QUEM2NCAyMQotKyNlbmRp ZgotIAotICNpZm5kZWYgX19BVURJVF9BUkNIXzY0QklUCi0gI2RlZmluZSBfX0FVRElUX0FSQ0hf NjRCSVQgMHg4MDAwMDAwMAotQEAgLTczLDYgKzc2LDEyIEBACi0gI2lmbmRlZiBBVURJVF9BUkNI X0FBUkNINjQKLSAjZGVmaW5lIEFVRElUX0FSQ0hfQUFSQ0g2NCAoRU1fQUFSQ0g2NCB8IF9fQVVE SVRfQVJDSF82NEJJVCB8IF9fQVVESVRfQVJDSF9MRSkKLSAjZW5kaWYKLSsjaWZuZGVmIEFVRElU X0FSQ0hfUFBDNjQKLSsjZGVmaW5lIEFVRElUX0FSQ0hfUFBDNjQgKEVNX1BQQzY0IHwgX19BVURJ VF9BUkNIXzY0QklUKQotKyNlbmRpZgotKyNpZm5kZWYgQVVESVRfQVJDSF9QUEM2NExFCi0rI2Rl ZmluZSBBVURJVF9BUkNIX1BQQzY0TEUgKEVNX1BQQzY0IHwgX19BVURJVF9BUkNIXzY0QklUIHwg X19BVURJVF9BUkNIX0xFKQotKyNlbmRpZgotIAotIC8vIEZvciBwcmN0bC5oCi0gI2lmbmRlZiBQ Ul9TRVRfU0VDQ09NUAotZGlmZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMv bGludXhfc2lnbmFsLmggYi9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NpZ25h bC5oCi1pbmRleCBmNWE3MzY3NjEuLjUxNWIyMWE1ZiAxMDA2NDQKLS0tLSBhL3NhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKLSsrKyBiL3NhbmRib3gvbGludXgvc3lz dGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKLUBAIC0xMyw3ICsxMyw3IEBACi0gLy8gKG5vdCB1 bmRlZmluZWQsIGJ1dCBkZWZpbmVkIGRpZmZlcmVudCB2YWx1ZXMgYW5kIGluIGRpZmZlcmVudCBt ZW1vcnkKLSAvLyBsYXlvdXRzKS4gU28sIGZpbGwgdGhlIGdhcCBoZXJlLgotICNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg XAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gCi0gI2RlZmluZSBMSU5VWF9TSUdIVVAgMQotICNk ZWZpbmUgTElOVVhfU0lHSU5UIDIKLWRpZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmggYi9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xp bnV4X3N5c2NhbGxzLmgKLWluZGV4IDJiNzhhMGNjMy4uMGE3MGY1ZWE1IDEwMDY0NAotLS0tIGEv c2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oCi0rKysgYi9zYW5k Ym94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKLUBAIC0zNSw1ICszNSw5 IEBACi0gI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhf c3lzY2FsbHMuaCIKLSAjZW5kaWYKLSAKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyNp bmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxz LmgiCi0rI2VuZGlmCi0rCi0gI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJT X0xJTlVYX1NZU0NBTExTX0hfCi0gCi1kaWZmIC0tZ2l0IGEvc2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9saW51eF91Y29udGV4dC5oIGIvc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9s aW51eF91Y29udGV4dC5oCi1pbmRleCAyMmNlNzgwMjcuLmE2OWIwMjRjMiAxMDA2NDQKLS0tLSBh L3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaAotKysrIGIvc2Fu ZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF91Y29udGV4dC5oCi1AQCAtMTEsNiArMTEs OCBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF91 Y29udGV4dC5oIgotICNlbGlmIGRlZmluZWQoX19pMzg2X18pCi0gI2luY2x1ZGUgInNhbmRib3gv bGludXgvc3lzdGVtX2hlYWRlcnMvaTM4Nl9saW51eF91Y29udGV4dC5oIgotKyNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSsjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVy cy9wcGM2NF9saW51eF91Y29udGV4dC5oIgotICNlbHNlCi0gI2Vycm9yICJObyBzdXBwb3J0IGZv ciB5b3VyIGFyY2hpdGVjdHVyZSBpbiBQTmFDbCBoZWFkZXIiCi0gI2VuZGlmCi1kaWZmIC0tZ2l0 IGEvc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oIGIv c2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi5jY2FjZmZlMjIKLS0tLSAvZGV2L251 bGwKLSsrKyBiL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfc3lzY2Fs bHMuaAotQEAgLTAsMCArMSwxMiBAQAotKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBB dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSsvLyBmb3Vu ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotKwotKyNpZm5kZWYgU0FOREJPWF9MSU5VWF9TWVNURU1f SEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19IXwotKyNkZWZpbmUgU0FOREJPWF9MSU5VWF9T WVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19IXwotKwotKyNpbmNsdWRlIDxhc20v dW5pc3RkLmg+Ci0rCi0rLy9UT0RPOiBpcyBpdCBuZWNlc3NhcnkgdG8gcmVkZWZpbmUgc3lzY2Fs bCBudW1iZXJzIGZvciBQUEM2ND8KLSsKLSsjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVN X0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KLWRpZmYgLS1naXQgYS9zYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmggYi9zYW5kYm94L2xpbnV4 L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjA3NzI4ZTA4NwotLS0tIC9kZXYvbnVsbAotKysrIGIvc2Fu ZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5oCi1AQCAtMCww ICsxLDEyIEBACi0rLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCi0rLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotKy8vIGZvdW5kIGluIHRoZSBMSUNF TlNFIGZpbGUuCi0rCi0rI2lmbmRlZiBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0 X0xJTlVYX1VDT05URVhUX0hfCi0rI2RlZmluZSBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJT X1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCi0rCi0rI2luY2x1ZGUgPHN5cy91Y29udGV4dC5oPgot KwotKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVmaW5lIHVjb250ZXh0IG9uIFBQQzY0 PwotKwotKyNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5V WF9VQ09OVEVYVF9IXwotZGlmZiAtLWdpdCBhL3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5k ZXJlcl9wb2xpY3lfbGludXguY2MgYi9zYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVuZGVyZXJf cG9saWN5X2xpbnV4LmNjCi1pbmRleCAyNTg4ZmM3OTIuLmQ0NTVjNDYwMSAxMDA2NDQKLS0tLSBh L3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKLSsrKyBi L3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKLUBAIC0x NSw2ICsxNSwxMSBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xp bnV4X3N5c2NhbGxzLmgiCi0gI2luY2x1ZGUgInNhbmRib3gvcG9saWN5L2xpbnV4L3NhbmRib3hf bGludXguaCIKLSAKLSsvLyBPbiBQUEM2NCwgVENHRVRTIGlzIGRlZmluZWQgaW4gdGVybXMgb2Yg c3RydWN0IHRlcm1pb3MsIHNvIHdlIG11c3QgaW5jbHVkZSB0ZXJtaW9zLmgKLSsjaWZkZWYgX19w b3dlcnBjNjRfXwotKyNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0rI2VuZGlmCi0rCi0gLy8gVE9ETyh2 aWduYXR0aSk6IHJlcGxhY2UgdGhlIGxvY2FsIGRlZmluaXRpb25zIGJlbG93IHdpdGggI2luY2x1 ZGUKLSAvLyA8bGludXgvZG1hLWJ1Zi5oPiBvbmNlIGtlcm5lbCB2ZXJzaW9uIDQuNiBiZWNvbWVz IHdpZGVseSB1c2VkLgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotZGlmZiAtLWdpdCBhL3Ro aXJkX3BhcnR5L2FuZ2xlL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmggYi90aGly ZF9wYXJ0eS9hbmdsZS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oCi1pbmRleCAz YTgwN2UxZTMuLjUyNTg2MTdhNyAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy9j b21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgKLSsrKyBiL3RoaXJkX3BhcnR5L2FuZ2xlL3Ny Yy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgKLUBAIC05Miw3ICs5MiwxNiBAQCBjbGFz cyBUSW5mb1NpbmtCYXNlCi0gICAgICAgICAgICAgc3RyZWFtLnByZWNpc2lvbig4KTsKLSAgICAg ICAgICAgICBzdHJlYW0gPDwgZjsKLSAgICAgICAgIH0KLS0gICAgICAgIHNpbmsuYXBwZW5kKHN0 cmVhbS5zdHIoKSk7Ci0rCi0rICAgICAgICAvLyBIYWNrIHRvIHdvcmsgYXJvdW5kIGEgYnVnIHdo ZXJlIG5lZ2F0aXZlIGZsb2F0aW5nIHBvaW50IHZhbHVlcwotKyAgICAgICAgLy8gYXJlIHJlbmRl cmVkIGxpa2UgJy4wLjUnIGluc3RlYWQgb2YgJy0wLjUnCi0rICAgICAgICBzdGQ6OnN0cmluZyBy ZXMoc3RyZWFtLnN0cigpKTsKLSsKLSsgICAgICAgIGlmIChzaWduYml0KGYpKSB7IC8vIHRlc3Qg aWYgZiBpcyBuZWdhdGl2ZQotKyAgICAgICAgICAgIHJlc1swXSA9ICctJzsKLSsgICAgICAgIH0K LSsKLSsgICAgICAgIHNpbmsuYXBwZW5kKHJlcyk7Ci0gICAgICAgICByZXR1cm4gKnRoaXM7Ci0g ICAgIH0KLSAgICAgLy8gV3JpdGUgYm9vbGVhbiB2YWx1ZXMgYXMgdGhlaXIgbmFtZXMgaW5zdGVh ZCBvZiBpbnRlZ3JhbCB2YWx1ZS4KLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMv bGliQU5HTEUvQ29uc3RhbnRzLmggYi90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29u c3RhbnRzLmgKLWluZGV4IGZjYmM5MjQ2YS4uMzlhZTY2MTQ4IDEwMDY0NAotLS0tIGEvdGhpcmRf cGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0NvbnN0YW50cy5oCi0rKysgYi90aGlyZF9wYXJ0eS9h bmdsZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKLUBAIC05LDYgKzksNyBAQAotICNpZm5kZWYg TElCQU5HTEVfQ09OU1RBTlRTX0hfCi0gI2RlZmluZSBMSUJBTkdMRV9DT05TVEFOVFNfSF8KLSAK LSsjaW5jbHVkZSA8Y3N0ZGRlZj4KLSAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCi0gCi0g I2luY2x1ZGUgPHN0ZGludC5oPgotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9C VUlMRC5nbiBiL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9CVUlMRC5nbgotaW5kZXggMTdjZjljZGE5 Li44Y2U5NmJkMzIgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvQlVJTEQuZ24K LSsrKyBiL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9CVUlMRC5nbgotQEAgLTEwMyw2ICsxMDMsMTMg QEAgaWYgKGlzX3dpbiAmJiAhaXNfbXNhbiAmJiBjdXJyZW50X2NwdSAhPSAiYXJtNjQiKSB7Ci0g ICAgICAgfSBlbHNlIHsKLSAgICAgICAgIHB1YmxpY19jb25maWdzID0gWyAiOm5vX2FzbV9jb25m aWciIF0KLSAgICAgICB9Ci0rICAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0Iikg ewotKyAgICAgIGlmIChpc19saW51eCkgewotKyAgICAgICAgIyBUT0RPOiBwcGM2NCAoYmUpIGNo ZWNrCi0rICAgICAgICBzb3VyY2VzICs9IGNyeXB0b19zb3VyY2VzX2xpbnV4X3BwYzY0bGUKLSsg ICAgICB9IGVsc2UgewotKyAgICAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2NvbmZp ZyIgXQotKyAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICBwdWJsaWNfY29uZmlncyA9IFsg Ijpub19hc21fY29uZmlnIiBdCi0gICAgIH0KLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icmVh a3BhZC9CVUlMRC5nbiBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL0JVSUxELmduCi1pbmRleCA0YWYz ZDdiYmYuLmFkYmY1NDE1OSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL0JVSUxE LmduCi0rKysgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbgotQEAgLTU5Niw3ICs1OTYs NiBAQCBpZiAoaXNfbGludXggfHwgaXNfY2hyb21lb3MgfHwgaXNfYW5kcm9pZCkgewotICAgICAg ICJicmVha3BhZC9zcmMvY2xpZW50L21pbmlkdW1wX2ZpbGVfd3JpdGVyLmgiLAotICAgICAgICJi cmVha3BhZC9zcmMvY29tbW9uL2NvbnZlcnRfVVRGLmNjIiwKLSAgICAgICAiYnJlYWtwYWQvc3Jj L2NvbW1vbi9jb252ZXJ0X1VURi5oIiwKLS0gICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51 eC9icmVha3BhZF9nZXRjb250ZXh0LlMiLAotICAgICAgICJicmVha3BhZC9zcmMvY29tbW9uL2xp bnV4L2VsZl9jb3JlX2R1bXAuY2MiLAotICAgICAgICJicmVha3BhZC9zcmMvY29tbW9uL2xpbnV4 L2VsZl9jb3JlX2R1bXAuaCIsCi0gICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxm dXRpbHMuY2MiLAotQEAgLTYzNCw2ICs2MzMsMTQgQEAgaWYgKGlzX2xpbnV4IHx8IGlzX2Nocm9t ZW9zIHx8IGlzX2FuZHJvaWQpIHsKLSAKLSAgICAgbGlicyA9IFsgImRsIiBdCi0gCi0rICAgIGlm IChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Ci0rICAgICAgICBkZWZpbmVzID0gWyAiSEFWRV9H RVRDT05URVhUIiBdCi0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBzb3VyY2VzICs9IFsKLSsgICAg ICAgICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9icmVha3BhZF9nZXRjb250ZXh0LlMi Ci0rICAgICAgICBdCi0rICAgIH0KLSsKLSAgICAgaW5jbHVkZV9kaXJzID0gWwotICAgICAgICIu IiwKLSAgICAgICAiYnJlYWtwYWQvc3JjIiwKLUBAIC02ODIsNyArNjg5LDYgQEAgaWYgKGlzX2xp bnV4IHx8IGlzX2Nocm9tZW9zIHx8IGlzX2FuZHJvaWQpIHsKLSAgICAgICAiYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNj IiwKLSAgICAgICAiYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWlu aWR1bXBfd3JpdGVyX3VuaXR0ZXN0X3V0aWxzLmNjIiwKLSAgICAgICAiYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvcHJvY19jcHVpbmZvX3JlYWRlcl91bml0dGVzdC5j YyIsCi0tICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvYnJlYWtwYWRfZ2V0Y29udGV4 dF91bml0dGVzdC5jYyIsCi0gICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2Nv cmVfZHVtcF91bml0dGVzdC5jYyIsCi0gICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgv ZmlsZV9pZF91bml0dGVzdC5jYyIsCi0gICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgv bGludXhfbGliY19zdXBwb3J0X3VuaXR0ZXN0LmNjIiwKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9y YXdfY29udGV4dF9jcHUuaCBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Jhd19jb250ZXh0X2NwdS5oCi1pbmRleCAwN2Q5 MTcxYTAuLjlhZWQ0Y2IzNiAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Jhd19jb250ZXh0X2NwdS5o Ci0rKysgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1 bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaAotQEAgLTQ0LDYgKzQ0LDggQEAgdHlw ZWRlZiBNRFJhd0NvbnRleHRBUk0gUmF3Q29udGV4dENQVTsKLSB0eXBlZGVmIE1EUmF3Q29udGV4 dEFSTTY0X09sZCBSYXdDb250ZXh0Q1BVOwotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gdHlw ZWRlZiBNRFJhd0NvbnRleHRNSVBTIFJhd0NvbnRleHRDUFU7Ci0rI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotK3R5cGVkZWYgTURSYXdDb250ZXh0UFBDNjQgUmF3Q29udGV4dENQVTsKLSAj ZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0 Zm9ybSB5ZXQuIgotICNlbmRpZgotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNj IGIvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dy aXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLWluZGV4IGFhZTFkYzEzYi4uMDNhZmVjN2E1IDEw MDY0NAotLS0tIGEvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVh ZF9pbmZvLmNjCi1AQCAtMjcwLDcgKzI3MCw0MiBAQCB2b2lkIFRocmVhZEluZm86OkZpbGxDUFVD b250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgewotICAgb3V0LT5mbG9hdF9zYXZlLmZp ciA9IG1jb250ZXh0LmZwY19laXI7Ci0gI2VuZGlmCi0gfQotLSNlbmRpZiAgLy8gX19taXBzX18K LSsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0rdWludHB0cl90IFRocmVhZElu Zm86OkdldEluc3RydWN0aW9uUG9pbnRlcigpIGNvbnN0IHsKLSsgICAgcmV0dXJuIG1jb250ZXh0 LmdwX3JlZ3NbUFRfTklQXTsKLSt9Ci0rCi0rdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4 dChSYXdDb250ZXh0Q1BVKiBvdXQpIGNvbnN0IHsKLSsgICAgb3V0LT5jb250ZXh0X2ZsYWdzID0g TURfQ09OVEVYVF9QUEM2NF9GVUxMOwotKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRF WFRfUFBDNjRfR1BSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPmdwcltpXSA9IG1jb250ZXh0 LmdwX3JlZ3NbaV07Ci0rCi0rICAgIG91dC0+bHIgPSBtY29udGV4dC5ncF9yZWdzW1BUX0xOS107 Ci0rICAgIG91dC0+c3JyMCA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKLSsgICAgb3V0LT5z cnIxID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdOwotKyAgICBvdXQtPmNyID0gbWNvbnRleHQu Z3BfcmVnc1tQVF9DQ1JdOwotKyAgICBvdXQtPnhlciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfWEVS XTsKLSsgICAgb3V0LT5jdHIgPSBtY29udGV4dC5ncF9yZWdzW1BUX0NUUl07Ci0rICAgIAotKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsg aSsrKQotKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IG1jb250ZXh0LmZwX3Jl Z3NbaV07Ci0rCi0rICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9IG1jb250ZXh0LmZwX3JlZ3Nb TkZQUkVHLTFdOwotKwotKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVB X1BQQ19WUl9DT1VOVDsgaSsrKQotKyAgICAgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ld ID0gXAotKyAgICAgICAgICAgIHsoKCh1aW50NjRfdCl2cmVncy52cnJlZ3NbaV1bMF0pIDw8IDMy KSAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MudnJyZWdzW2ldWzFdLCAKLSsg ICAgICAgICAgICAoKCh1aW50NjRfdCl2cmVncy52cnJlZ3NbaV1bMl0pIDw8IDMyKQotKyAgICAg ICAgICAgICAgICAgICAgICAgICB8IHZyZWdzLnZycmVnc1tpXVszXX07Ci0rCi0rICAgIG91dC0+ dnJzYXZlID0gdnJlZ3MudnJzYXZlOwotKyAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnNjciA9 IHswLCB2cmVncy52c2NyLnZzY3Jfd29yZH07Ci0rICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92 cnZhbGlkID0gMHhGRkZGRkZGRjsgCi0rfQotKyNlbmRpZiAgLy8gX19wb3dlcnBjNjRfXwotIAot IHZvaWQgVGhyZWFkSW5mbzo6R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnModm9pZCoqIGdwX3Jl Z3MsIHNpemVfdCogc2l6ZSkgewotICAgYXNzZXJ0KGdwX3JlZ3MgfHwgc2l6ZSk7Ci1AQCAtMjc5 LDYgKzMxNCwxMSBAQCB2b2lkIFRocmVhZEluZm86OkdldEdlbmVyYWxQdXJwb3NlUmVnaXN0ZXJz KHZvaWQqKiBncF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAgICAgKmdwX3JlZ3MgPSBtY29udGV4 dC5ncmVnczsKLSAgIGlmIChzaXplKQotICAgICAqc2l6ZSA9IHNpemVvZihtY29udGV4dC5ncmVn cyk7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgaWYgKGdwX3JlZ3MpCi0rICAg ICpncF9yZWdzID0gbWNvbnRleHQuZ3BfcmVnczsKLSsgIGlmIChzaXplKQotKyAgICAqc2l6ZSA9 IHNpemVvZihtY29udGV4dC5ncF9yZWdzKTsKLSAjZWxzZQotICAgaWYgKGdwX3JlZ3MpCi0gICAg ICpncF9yZWdzID0gJnJlZ3M7Ci1AQCAtMjk0LDYgKzMzNCwxMSBAQCB2b2lkIFRocmVhZEluZm86 OkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVfdCogc2l6ZSkg ewotICAgICAqZnBfcmVncyA9ICZtY29udGV4dC5mcHJlZ3M7Ci0gICBpZiAoc2l6ZSkKLSAgICAg KnNpemUgPSBzaXplb2YobWNvbnRleHQuZnByZWdzKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0rICBpZiAoZnBfcmVncykKLSsgICAgKmZwX3JlZ3MgPSAmbWNvbnRleHQuZnBfcmVn czsKLSsgIGlmIChzaXplKQotKyAgICAqc2l6ZSA9IHNpemVvZihtY29udGV4dC5mcF9yZWdzKTsK LSAjZWxzZQotICAgaWYgKGZwX3JlZ3MpCi0gICAgICpmcF9yZWdzID0gJmZwcmVnczsKLUBAIC0z MDIsNCArMzQ3LDEzIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVy cyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKSB7Ci0gI2VuZGlmCi0gfQotIAotKyNpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rdm9pZCBUaHJlYWRJbmZvOjpHZXRWZWN0b3JSZWdpc3Rl cnModm9pZCoqIHZfcmVncywgc2l6ZV90KiBzaXplKSB7Ci0rICAgIGlmICh2X3JlZ3MpCi0rICAg ICAgICAqdl9yZWdzID0gJnZyZWdzOwotKyAgICBpZiAoc2l6ZSkKLSsgICAgICAgICpzaXplID0g c2l6ZW9mKHZyZWdzKTsKLSt9Ci0rI2VuZGlmCi0rCi0gfSAgLy8gbmFtZXNwYWNlIGdvb2dsZV9i cmVha3BhZAotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmggYi90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90 aHJlYWRfaW5mby5oCi1pbmRleCBmYjIxNmZhNmQuLjU5M2FhYzgyMiAxMDA2NDQKLS0tLSBhL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJf Y29tbW9uL3RocmVhZF9pbmZvLmgKLSsrKyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmgKLUBAIC02 OCw2ICs2OCwxMCBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7Ci0gICAvLyBVc2UgdGhlIHN0cnVjdHVy ZXMgZGVmaW5lZCBpbiA8c3lzL3VzZXIuaD4KLSAgIHN0cnVjdCB1c2VyX3JlZ3Nfc3RydWN0IHJl Z3M7Ci0gICBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RydWN0IGZwcmVnczsKLSsjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICAvLyBVc2UgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiA8c3lz L3Vjb250ZXh0Lmg+LgotKyAgbWNvbnRleHRfdCBtY29udGV4dDsKLSsgIHZycmVnc2V0X3QgdnJl Z3M7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIC8vIFVzZSB0aGUgc3RydWN0dXJlIGRl ZmluZWQgaW4gPHN5cy91Y29udGV4dC5oPi4KLSAgIG1jb250ZXh0X3QgbWNvbnRleHQ7Ci1AQCAt ODQsNiArODgsMTEgQEAgc3RydWN0IFRocmVhZEluZm8gewotIAotICAgLy8gUmV0dXJucyB0aGUg cG9pbnRlciBhbmQgc2l6ZSBvZiBmbG9hdCBwb2ludCByZWdpc3RlciBhcmVhLgotICAgdm9pZCBH ZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpOwot KwotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBSZXR1cm5zIHRoZSBwb2ludGVy IGFuZCBzaXplIG9mIHRoZSB2ZWN0b3IgcmVnaXN0ZXIgYXJlYS4gKFBQQzY0IG9ubHkpCi0rICB2 b2lkIEdldFZlY3RvclJlZ2lzdGVycyh2b2lkKiogdl9yZWdzLCBzaXplX3QqIHNpemUpOwotKyNl bmRpZgotIH07Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZAotZGlmZiAtLWdp dCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93 cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRl ci5jYwotaW5kZXggNmVlYzFiZTI0Li43NDE5ODNhMWEgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91 Y29udGV4dF9yZWFkZXIuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwotQEAg LTI1NCw2ICsyNTQsNDggQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3 Q29udGV4dENQVSogb3V0LCBjb25zdCB1Y29udGV4dF90KiB1YykgewotICAgb3V0LT5mbG9hdF9z YXZlLmZpciA9IHVjLT51Y19tY29udGV4dC5mcGNfZWlyOyAgLy8gVW51c2VkLgotICNlbmRpZgot IH0KLSsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0rdWludHB0cl90IFVDb250 ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKLSsgICAg cmV0dXJuIHVjLT51Y19tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXTsK LSt9Ci0rCi0rdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIo Y29uc3QgdWNvbnRleHRfdCogdWMpIHsKLSsgICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncF9y ZWdzW1BUX05JUF07Ci0rfQotKwotK3ZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0 KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCogdWMsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRfdCogdnJlZ3MpIHsKLSsgICAg b3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9QUEM2NF9GVUxMOwotKwotKyAgICBmb3Ig KGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BSX0NPVU5UOyBpKyspCi0rICAgICAg ICBvdXQtPmdwcltpXSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW2ldOwotKwotKyAgICBvdXQt PmxyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsgICAgCi0rICAgIG91dC0+c3Jy MCA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rICAgIG91dC0+c3JyMSA9IHVj LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01TUl07Ci0rICAgIG91dC0+Y3IgPSB1Yy0+dWNfbWNv bnRleHQuZ3BfcmVnc1tQVF9DQ1JdOwotKyAgICBvdXQtPnhlciA9IHVjLT51Y19tY29udGV4dC5n cF9yZWdzW1BUX1hFUl07Ci0rICAgIG91dC0+Y3RyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3Nb UFRfQ1RSXTsKLSsgICAgCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZF QVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdz W2ldID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbaV07Ci0rCi0rICAgIG91dC0+ZmxvYXRfc2F2 ZS5mcHNjciA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKLSsKLSsgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykKLSsg ICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9Ci0rICAgICAgICAgICAgeygoKHVp bnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMF0pIDw8IDMyKSAKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgfCB2cmVncy0+dnJyZWdzW2ldWzFdLCAKLSsgICAgICAgICAgICAgKCgodWludDY0X3Qp dnJlZ3MtPnZycmVnc1tpXVsyXSkgPDwgMzIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHwg dnJlZ3MtPnZycmVnc1tpXVszXX07Ci0rCi0rICAgIG91dC0+dnJzYXZlID0gdnJlZ3MtPnZyc2F2 ZTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3MtPnZzY3IudnNj cl93b3JkfTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZydmFsaWQgPSAweEZGRkZGRkZG OyAKLSt9Ci0rCi0gI2VuZGlmCi0gCi0gfSAgLy8gbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZAot ZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oIGIvdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRl eHRfcmVhZGVyLmgKLWluZGV4IDdkNDEwMDg4MS4uYzEyMmFjOTJlIDEwMDY0NAotLS0tIGEvdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9j b21tb24vdWNvbnRleHRfcmVhZGVyLmgKLSsrKyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5o Ci1AQCAtNTUsNiArNTUsOSBAQCBzdHJ1Y3QgVUNvbnRleHRSZWFkZXIgewotICNlbGlmIGRlZmlu ZWQoX19hYXJjaDY0X18pCi0gICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0 Q1BVKiBvdXQsIGNvbnN0IHVjb250ZXh0X3QqIHVjLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBmcHJlZ3MpOwotKyNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSsgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRl eHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB2cnJlZ3NldF90KiB2cmVncyk7Ci0gI2Vsc2UKLSAgIHN0YXRpYyB2b2lk IEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCogdWMp OwotICNlbmRpZgotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYyBiL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFu ZGxlci5jYwotaW5kZXggYTZjYjVmOTg0Li5hZTE2YjY0ZDkgMTAwNjQ0Ci0tLS0gYS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9u X2hhbmRsZXIuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwotQEAgLTQ2MSw5ICs0NjEsMTYg QEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpIYW5kbGVTaWduYWwoaW50IC8qc2lnKi8sIHNpZ2lu Zm9fdCogaW5mbywgdm9pZCogdWMpIHsKLSAgICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRfLmZs b2F0X3N0YXRlLCBmcF9wdHIsCi0gICAgICAgICAgICBzaXplb2YoZ19jcmFzaF9jb250ZXh0Xy5m bG9hdF9zdGF0ZSkpOwotICAgfQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8v IE9uIFBQQzY0LCB3ZSBtdXN0IGNvcHkgVlIgc3RhdGUKLSsgIHVjb250ZXh0X3QqIHVjX3B0ciA9 ICh1Y29udGV4dF90Kil1YzsKLSsgIGlmICh1Y19wdHItPnVjX21jb250ZXh0LnZfcmVncykgewot KyAgICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0YXRlLCB1Y19wdHItPnVjX21j b250ZXh0LnZfcmVncywKLSsgICAgICAgICAgIHNpemVvZihnX2NyYXNoX2NvbnRleHRfLnZlY3Rv cl9zdGF0ZSkpOwotKyAgfQotICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmlu ZWQoX19taXBzX18pCi0gICAvLyBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBvbiBB Uk0gTGludXguCi0tICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFk eSBwYXJ0IG9mIHVjb250ZXh0X3QKLSsgIC8vIEluIGNhc2Ugb2YgTUlQUywgTGludXggRlAgc3Rh dGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKLSAgIC8vIGFuZCAnZmxvYXRfc3RhdGUn IGlzIG5vdCBhIG1lbWJlciBvZiBDcmFzaENvbnRleHQuCi0gICB1Y29udGV4dF90KiB1Y19wdHIg PSAodWNvbnRleHRfdCopdWM7Ci0gICBpZiAodWNfcHRyLT51Y19tY29udGV4dC5mcHJlZ3MpIHsK LUBAIC03MDgsMTEgKzcxNSwxOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWluaWR1 bXAoKSB7Ci0gICB9Ci0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYg IWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiAhZGVmaW5l ZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX21p cHNfXykgXAotKyAgICAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgLy8gRlBVIHN0YXRl IGlzIG5vdCBwYXJ0IG9mIEFSTSBFQUJJIHVjb250ZXh0X3QuCi0gICBtZW1jcHkoJmNvbnRleHQu ZmxvYXRfc3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5mcHJlZ3MsCi0gICAgICAg ICAgc2l6ZW9mKGNvbnRleHQuZmxvYXRfc3RhdGUpKTsKLSAjZW5kaWYKLSsKLSsjaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gVmVjdG9yIHJlZ2lzdGVycyBtdXN0IGJlIGNvcGllZCBv biBQUEM2NAotKyAgbWVtY3B5KCZjb250ZXh0LnZlY3Rvcl9zdGF0ZSwgY29udGV4dC5jb250ZXh0 LnVjX21jb250ZXh0LnZfcmVncywKLSsgICAgICAgICBzaXplb2YoY29udGV4dC52ZWN0b3Jfc3Rh dGUpKTsKLSsjZW5kaWYKLSsKLSAgIGNvbnRleHQudGlkID0gc3lzX2dldHRpZCgpOwotIAotICAg Ly8gQWRkIGFuIGV4Y2VwdGlvbiBzdHJlYW0gdG8gdGhlIG1pbmlkdW1wIGZvciBiZXR0ZXIgcmVw b3J0aW5nLgotQEAgLTczMyw2ICs3NDgsOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRl TWluaWR1bXAoKSB7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnRleHQuc2lnaW5m by5zaV9hZGRyID0KLSAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LmNvbnRl eHQudWNfbWNvbnRleHQucGMpOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGNv bnRleHQuc2lnaW5mby5zaV9hZGRyID0KLSsgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihj b250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdKTsKLSAjZWxzZQotICNl cnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQu IgotICNlbmRpZgotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oIGIvdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5k bGVyLmgKLWluZGV4IGY4MDg0M2VhNy4uMjYwZGQxMGY3IDEwMDY0NAotLS0tIGEvdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9o YW5kbGVyLmgKLSsrKyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oCi1AQCAtMTkyLDcgKzE5MiwxMSBAQCBj bGFzcyBFeGNlcHRpb25IYW5kbGVyIHsKLSAgICAgc2lnaW5mb190IHNpZ2luZm87Ci0gICAgIHBp ZF90IHRpZDsgIC8vIHRoZSBjcmFzaGluZyB0aHJlYWQuCi0gICAgIHVjb250ZXh0X3QgY29udGV4 dDsKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsj aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAvLyBQUEM2NCdzIEZQIHN0YXRlIGlzIGEg cGFydCBvZiB1Y29udGV4dF90IGxpa2UgTUlQUyBidXQgdGhlIHZlY3RvcgotKyAgICAvLyBzdGF0 ZSBpcyBub3QsIHNvIGEgc3RydWN0IGlzIG5lZWRlZC4KLSsgICAgdnN0YXRlX3QgdmVjdG9yX3N0 YXRlOwotKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18p Ci0gICAgIC8vICNpZmRlZiB0aGlzIG91dCBiZWNhdXNlIEZQIHN0YXRlIGlzIG5vdCBwYXJ0IG9m IHVzZXIgQUJJIGZvciBMaW51eCBBUk0uCi0gICAgIC8vIEluIGNhc2Ugb2YgTUlQUyBMaW51eCBG UCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2YgdWNvbnRleHRfdCBzbwotICAgICAvLyAnZmxvYXRf c3RhdGUnIGlzIG5vdCByZXF1aXJlZC4KLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXJfdW5p dHRlc3QuY2MgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXJfdW5pdHRlc3QuY2MKLWluZGV4IDM1ZGNiZmQ0ZC4u NzkzNDM3MGZkIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyX3VuaXR0ZXN0LmNjCi0rKysg Yi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIv ZXhjZXB0aW9uX2hhbmRsZXJfdW5pdHRlc3QuY2MKLUBAIC0zMDcsNyArMzA3LDcgQEAgVEVTVChF eGNlcHRpb25IYW5kbGVyVGVzdCwgUGFyYWxsZWxDaGlsZENyYXNoZXNEb250SGFuZykgewotICAg fQotIAotICAgLy8gV2FpdCBhIHdoaWxlIHVudGlsIHRoZSBjaGlsZCBzaG91bGQgaGF2ZSBjcmFz aGVkLgotLSAgdXNsZWVwKDEwMDAwMDApOwotKyAgdXNsZWVwKDIwMDAwMDApOwotICAgLy8gS2ls bCB0aGUgY2hpbGQgaWYgaXQgaXMgc3RpbGwgcnVubmluZy4KLSAgIGtpbGwoY2hpbGQsIFNJR0tJ TEwpOwotIAotQEAgLTU1OSw2ICs1NTksOCBAQCBjb25zdCB1bnNpZ25lZCBjaGFyIGtJbGxlZ2Fs SW5zdHJ1Y3Rpb25bXSA9IHsKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIC8vIG1mYzIgemVy byxJbXBsIC0gdXN1YWxseSBpbGxlZ2FsIGluIHVzZXJzcGFjZS4KLSAgIDB4NDgsIDB4MDAsIDB4 MDAsIDB4NDgKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAweDAxLCAweDAxLCAw eDAxLCAweDAxIC8vIENyYXNoZXMgb24gYSB0ZXN0ZWQgUE9XRVI5IGNwdQotICNlbHNlCi0gICAv LyBUaGlzIGNyYXNoZXMgd2l0aCBTSUdJTEwgb24geDg2L3g4Ni02NC9hcm0uCi0gICAweGZmLCAw eGZmLCAweGZmLCAweGZmCi1AQCAtNzU0LDEwICs3NTYsMTAgQEAgVEVTVChFeGNlcHRpb25IYW5k bGVyVGVzdCwgSW5zdHJ1Y3Rpb25Qb2ludGVyTWVtb3J5TWF4Qm91bmQpIHsKLSAKLSAgIC8vIFRo ZXNlIGFyZSBkZWZpbmVkIGhlcmUgc28gdGhlIHBhcmVudCBjYW4gdXNlIHRoZW0gdG8gY2hlY2sg dGhlCi0gICAvLyBkYXRhIGZyb20gdGhlIG1pbmlkdW1wIGFmdGVyd2FyZHMuCi0tICAvLyBVc2Ug NGsgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEgc2luZ2xlIHBhZ2UgZXZlbgot KyAgLy8gVXNlIHRoZSBwYWdlIHNpemUgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0 IGEgc2luZ2xlIHBhZ2UgZXZlbgotICAgLy8gaWYgYSBzbWFsbGVyIHNpemUgaXMgcmVxdWVzdGVk LCBhbmQgdGhpcyB0ZXN0IHdhbnRzIHRvCi0gICAvLyB0ZXN0IHRoZSB1cHBlciBib3VuZCBvZiB0 aGUgbWVtb3J5IHJhbmdlLgotLSAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUgPSA0MDk2OyAg Ly8gYnl0ZXMKLSsgIGNvbnN0IHVpbnQzMl90IGtNZW1vcnlTaXplID0gZ2V0cGFnZXNpemUoKTsg IC8vIGJ5dGVzCi0gICBjb25zdCBpbnQga09mZnNldCA9IGtNZW1vcnlTaXplIC0gc2l6ZW9mKGtJ bGxlZ2FsSW5zdHJ1Y3Rpb24pOwotIAotICAgY29uc3QgcGlkX3QgY2hpbGQgPSBmb3JrKCk7Ci1k aWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MgYi90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1w X3dyaXRlci5jYwotaW5kZXggZmEzYzE3MTNhLi42Y2U3MDllMmYgMTAwNjQ0Ci0tLS0gYS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0 ZXIvbWljcm9kdW1wX3dyaXRlci5jYwotKysrIGIvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MK LUBAIC0xMzgsNyArMTM4LDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKLSAgICAgICAgICAg ICAgICAgICBjb25zdCBNaWNyb2R1bXBFeHRyYUluZm8mIG1pY3JvZHVtcF9leHRyYV9pbmZvLAot ICAgICAgICAgICAgICAgICAgIExpbnV4RHVtcGVyKiBkdW1wZXIpCi0gICAgICAgOiB1Y29udGV4 dF8oY29udGV4dCA/ICZjb250ZXh0LT5jb250ZXh0IDogTlVMTCksCi0tI2lmICFkZWZpbmVkKF9f QVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSsgICAgICAgIHZlY3Rvcl9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jf c3RhdGUgOiBOVUxMKSwKLSsjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVk KF9fbWlwc19fKQotICAgICAgICAgZmxvYXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+Zmxv YXRfc3RhdGUgOiBOVUxMKSwKLSAjZW5kaWYKLSAgICAgICAgIGR1bXBlcl8oZHVtcGVyKSwKLUBA IC0zMzcsNiArMzM5LDggQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKLSAjIGVsc2UKLSAjICBl cnJvciAiVGhpcyBtaXBzIEFCSSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCAobjMyKSIKLSAj ZW5kaWYKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIGNvbnN0IGNoYXIga0Fy Y2hbXSA9ICJwcGM2NCI7Ci0gI2Vsc2UKLSAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4g cG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0IgotICNlbmRpZgotQEAgLTQwOSw3ICs0MTMsOSBA QCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgewotICAgdm9pZCBEdW1wQ1BVU3RhdGUoKSB7Ci0gICAg IFJhd0NvbnRleHRDUFUgY3B1OwotICAgICBteV9tZW1zZXQoJmNwdSwgMCwgc2l6ZW9mKFJhd0Nv bnRleHRDUFUpKTsKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21p cHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBVQ29udGV4dFJlYWRlcjo6 RmlsbENQVUNvbnRleHQoJmNwdSwgdWNvbnRleHRfLCB2ZWN0b3Jfc3RhdGVfKTsKLSsjZWxpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICBVQ29udGV4 dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoJmNwdSwgdWNvbnRleHRfLCBmbG9hdF9zdGF0ZV8pOwot ICNlbHNlCi0gICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4 dF8pOwotQEAgLTYwNSw3ICs2MTEsOSBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgewotICAgdm9p ZCogQWxsb2ModW5zaWduZWQgYnl0ZXMpIHsgcmV0dXJuIGR1bXBlcl8tPmFsbG9jYXRvcigpLT5B bGxvYyhieXRlcyk7IH0KLSAKLSAgIGNvbnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsK LS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsjaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjp2c3RhdGVf dCogY29uc3QgdmVjdG9yX3N0YXRlXzsKLSsjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQotICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpmcHN0YXRlX3Qq IGNvbnN0IGZsb2F0X3N0YXRlXzsKLSAjZW5kaWYKLSAgIExpbnV4RHVtcGVyKiBkdW1wZXJfOwot ZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjIGIvdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVy L21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLWluZGV4IDYzMzlhYzBjZC4uMjkxYWYxMDZi IDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLSsrKyBi L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1w X3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCi1AQCAtMjc5LDEwICsyNzksMTkg QEAgVEVTVChNaWNyb2R1bXBXcml0ZXJUZXN0LCBCYXNpY1dpdGhNYXBwaW5ncykgewotICAgQ3Jh c2hBbmRHZXRNaWNyb2R1bXAobWFwcGluZ3MsIE1pY3JvZHVtcEV4dHJhSW5mbygpLCAmYnVmKTsK LSAgIEFTU0VSVF9UUlVFKENvbnRhaW5zTWljcm9kdW1wKGJ1ZikpOwotIAotKyAgaW50IHBhZ2Vf c2l6ZSA9IGdldHBhZ2VzaXplKCk7Ci0gI2lmZGVmIF9fTFA2NF9fCi0tICBBU1NFUlRfTkUoc3Rk OjpzdHJpbmc6Om5wb3MsCi0tICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAwMTAw MCAwMDAwMDAwMDAwMDAwMDJBIDAwMDAwMDAwMDAwMDEwMDAgIgotLSAgICAgICAgICAgICAgICAg ICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9vLnNvIikpOwotKyAg Ly8gVGhpcyB0ZXN0IGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgZm9sbG93aW5nIHBhZ2Ugc2l6 ZXMKLSsgIEFTU0VSVF9UUlVFKChwYWdlX3NpemUgPT0gNDA5NikgfHwgKHBhZ2Vfc2l6ZSA9PSA2 NTUzNikpOwotKyAgaWYgKHBhZ2Vfc2l6ZSA9PSA0MDk2KSB7IAotKyAgICBBU1NFUlRfTkUoc3Rk OjpzdHJpbmc6Om5wb3MsCi0rICAgICAgICAgICAgICBidWYuZmluZCgiTSAwMDAwMDAwMDAwMDAx MDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAwMTAwMCAiCi0rICAgICAgICAgICAgICAg ICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsK LSsgIH0gZWxzZSB7Ci0rICAgIEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKLSsgICAgICAg ICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAwMTAwMDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAw MDAwMDAwMDEwMDAwICIKLSsgICAgICAgICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2 ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9vLnNvIikpOwotKyAgfQotICNlbHNlCi0gICBBU1NFUlRf TkUoc3RkOjpzdHJpbmc6Om5wb3MsCi0gICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDEwMDAg MDAwMDAwMkEgMDAwMDEwMDAgIgotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVy LmNjIGIvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MKLWluZGV4IDQxNTA2ODk4My4uYjkzZTRh ZmNmIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MKLSsrKyBiL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVy L2xpbnV4X2NvcmVfZHVtcGVyLmNjCi1AQCAtMTEyLDYgKzExMiw5IEBAIGJvb2wgTGludXhDb3Jl RHVtcGVyOjpHZXRUaHJlYWRJbmZvQnlJbmRleChzaXplX3QgaW5kZXgsIFRocmVhZEluZm8qIGlu Zm8pIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgc3RhY2tfcG9pbnRlciA9Ci0gICAg ICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3JlZ3NbTURfQ09O VEVYVF9NSVBTX1JFR19TUF0pOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIHN0 YWNrX3BvaW50ZXIgPQotKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1j b250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdKTsKLSAjZWxzZQotICNlcnJv ciAiVGhpcyBjb2RlIGhhc24ndCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0g I2VuZGlmCi1AQCAtMTk3LDcgKzIwMCwxMCBAQCBib29sIExpbnV4Q29yZUR1bXBlcjo6RW51bWVy YXRlVGhyZWFkcygpIHsKLSAgICAgICAgIG1lbXNldCgmaW5mbywgMCwgc2l6ZW9mKFRocmVhZElu Zm8pKTsKLSAgICAgICAgIGluZm8udGdpZCA9IHN0YXR1cy0+cHJfcGdycDsKLSAgICAgICAgIGlu Zm8ucHBpZCA9IHN0YXR1cy0+cHJfcHBpZDsKLS0jaWYgZGVmaW5lZChfX21pcHNfXykKLSsjaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMTsg aSsrKQotKyAgICAgICAgICAgIGluZm8ubWNvbnRleHQuZ3BfcmVnc1tpXSA9IHN0YXR1cy0+cHJf cmVnW2ldOwotKyNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gI2lmIGRlZmluZWQoX19BTkRST0lE X18pCi0gICAgICAgICBmb3IgKGludCBpID0gRUZfUjA7IGkgPD0gRUZfUjMxOyBpKyspCi0gICAg ICAgICAgIGluZm8ubWNvbnRleHQuZ3JlZ3NbaSAtIEVGX1IwXSA9IHN0YXR1cy0+cHJfcmVnW2ld OwotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYyBiL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBl ci5jYwotaW5kZXggN2ZkNjUzMmFkLi4xOTljYmZmZmQgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51 eF9kdW1wZXIuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYwotQEAgLTc2NSw3ICs3NjUs OSBAQCBib29sIExpbnV4RHVtcGVyOjpHZXRTdGFja0luZm8oY29uc3Qgdm9pZCoqIHN0YWNrLCBz aXplX3QqIHN0YWNrX2xlbiwKLSAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnRf c3RhY2tfcG9pbnRlciAmIH4ocGFnZV9zaXplIC0gMSkpOwotIAotICAgLy8gVGhlIG51bWJlciBv ZiBieXRlcyBvZiBzdGFjayB3aGljaCB3ZSB0cnkgdG8gY2FwdHVyZS4KLS0gIHN0YXRpYyBjb25z dCBwdHJkaWZmX3Qga1N0YWNrVG9DYXB0dXJlID0gMzIgKiAxMDI0OwotKyAgLy8gVGhpcyBub3cg ZGVwZW5kcyBvbiBwYWdlX3NpemUgdG8gYXZvaWQgbWlzc2luZyBkYXRhCi0rICAvLyBvbiBzeXN0 ZW1zIHdpdGggbGFyZ2VyIHBhZ2Ugc2l6ZXMuCi0rICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IGtT dGFja1RvQ2FwdHVyZSA9IDggKiBwYWdlX3NpemU7Ci0gCi0gICBjb25zdCBNYXBwaW5nSW5mbyog bWFwcGluZyA9IEZpbmRNYXBwaW5nKHN0YWNrX3BvaW50ZXIpOwotICAgaWYgKCFtYXBwaW5nKQot ZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oIGIvdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmgK LWluZGV4IDdiZWUxNjBmMS4uMDdiYjJiODFhIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVt cGVyLmgKLSsrKyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oCi1AQCAtNjMsNyArNjMsOCBAQCBuYW1l c3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKLSAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJ TSA9PSBfQUJJTzMyKQotIHR5cGVkZWYgRWxmMzJfYXV4dl90IGVsZl9hdXhfZW50cnk7Ci0gI2Vs aWYgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAotLSAgICAg KGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBfQUJJTzMyKQotKyAgICAgKGRlZmlu ZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBfQUJJTzMyKSB8fCBcCi0rICAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gdHlwZWRlZiBFbGY2NF9hdXh2X3QgZWxmX2F1eF9lbnRyeTsKLSAj ZW5kaWYKLSAKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5pdHRlc3RfaGVscGVy LmNjIGIvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYwotaW5kZXggMzMxZjRi YjM0Li4zZjcyMjk0N2YgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5pdHRlc3Rf aGVscGVyLmNjCi0rKysgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5pdHRlc3RfaGVscGVyLmNjCi1A QCAtNTEsNiArNTEsOCBAQAotICNkZWZpbmUgVElEX1BUUl9SRUdJU1RFUiAicmN4IgotICNlbGlm IGRlZmluZWQoX19taXBzX18pCi0gI2RlZmluZSBUSURfUFRSX1JFR0lTVEVSICIkMSIKLSsjZWxp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2RlZmluZSBUSURfUFRSX1JFR0lTVEVSICJyOCIK LSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3QgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB0aGlzIHBs YXRmb3JtLgotICNlbmRpZgotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIu Y2MgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlk dW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCi1pbmRleCBlM2RkYjgxYTYuLmZhMjg1 NzVlZiAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MKLSsrKyBiL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MKLUBAIC0xNDksMTkgKzE0OSwyNyBAQCBib29sIExp bnV4UHRyYWNlRHVtcGVyOjpDb3B5RnJvbVByb2Nlc3Modm9pZCogZGVzdCwgcGlkX3QgY2hpbGQs Ci0gICByZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0tYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6UmVhZFJl Z2lzdGVyU2V0KFRocmVhZEluZm8qIGluZm8sIHBpZF90IHRpZCkKLS17Ci0rYm9vbCBMaW51eFB0 cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8qIGluZm8sIHBpZF90IHRpZCkg ewotICNpZmRlZiBQVFJBQ0VfR0VUUkVHU0VUCi0gICBzdHJ1Y3QgaW92ZWMgaW87Ci0gICBpbmZv LT5HZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsK LS0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BSU1RB VFVTLCAodm9pZCopJmlvKSA9PSAtMSkgewotKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VU LCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywgKHZvaWQqKSZpbykgPT0gLTEpIHsKLSAgICAgcmV0 dXJuIGZhbHNlOwotICAgfQotIAotICAgaW5mby0+R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycygm aW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKLS0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9HRVRS RUdTRVQsIHRpZCwgKHZvaWQqKU5UX0ZQUkVHU0VULCAodm9pZCopJmlvKSA9PSAtMSkgewotKyAg aWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9GUFJFR1NFVCwgKHZv aWQqKSZpbykgPT0gLTEpIHsKLSAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotKwotKyNpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBHcmFiIHRoZSB2ZWN0b3IgcmVnaXN0ZXJzIG9uIFBQ QzY0IHRvbwotKyAgaW5mby0+R2V0VmVjdG9yUmVnaXN0ZXJzKCZpby5pb3ZfYmFzZSwgJmlvLmlv dl9sZW4pOwotKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9Q UENfVk1YLCAodm9pZCopJmlvKSA9PSAtMSkgewotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0r I2VuZGlmIC8vIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsKLSAgIHJldHVybiB0cnVlOwotICNl bHNlCi0gICByZXR1cm4gZmFsc2U7Ci1AQCAtMjk4LDYgKzMwNiw5IEBAIGJvb2wgTGludXhQdHJh Y2VEdW1wZXI6OkdldFRocmVhZEluZm9CeUluZGV4KHNpemVfdCBpbmRleCwgVGhyZWFkSW5mbyog aW5mbykgewotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gICBzdGFja19wb2ludGVyID0KLSAg ICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncmVnc1tNRF9D T05URVhUX01JUFNfUkVHX1NQXSk7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAg c3RhY2tfcG9pbnRlciA9Ci0rICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+ bWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF0pOwotICNlbHNlCi0gI2Vy cm9yICJUaGlzIGNvZGUgaGFzbid0IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIK LSAjZW5kaWYKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0ZXN0 LmNjIGIvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5jYwotaW5kZXggZGE3MWUx NWRjLi4xMmJmYjMxN2EgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3Vu aXR0ZXN0LmNjCi0rKysgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0ZXN0LmNjCi1A QCAtNDYyLDYgKzQ2Miw5IEBAIFRFU1QoTGludXhQdHJhY2VEdW1wZXJUZXN0LCBWZXJpZnlTdGFj a1JlYWRXaXRoTXVsdGlwbGVUaHJlYWRzKSB7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAg ICAgcGlkX3QqIHByb2Nlc3NfdGlkX2xvY2F0aW9uID0KLSAgICAgICAgIHJlaW50ZXJwcmV0X2Nh c3Q8cGlkX3QqPihvbmVfdGhyZWFkLm1jb250ZXh0LmdyZWdzWzFdKTsKLSsjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICAgIHBpZF90KiBwcm9jZXNzX3RpZF9sb2NhdGlvbiA9Ci0rICAg ICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4ob25lX3RocmVhZC5tY29udGV4dC5ncF9yZWdz WzhdKTsKLSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3QgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB0 aGlzIHBsYXRmb3JtLgotICNlbmRpZgotQEAgLTU1OSw2ICs1NjIsOCBAQCBURVNUX0YoTGludXhQ dHJhY2VEdW1wZXJUZXN0LCBTYW5pdGl6ZVN0YWNrQ29weSkgewotICAgdWludHB0cl90IGhlYXBf YWRkciA9IHRocmVhZF9pbmZvLnJlZ3MucmN4OwotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0g ICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhyZWFkX2luZm8ubWNvbnRleHQuZ3JlZ3NbMV07Ci0r I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgdWludHB0cl90IGhlYXBfYWRkciA9IHRo cmVhZF9pbmZvLm1jb250ZXh0LmdwX3JlZ3NbOF07Ci0gI2Vsc2UKLSAjZXJyb3IgVGhpcyB0ZXN0 IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KLSAjZW5kaWYKLWRpZmYgLS1n aXQgYS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlk dW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MK LWluZGV4IDMyNjM0ZWYwMC4uMmE1Njk0OGRlIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBf d3JpdGVyLmNjCi0rKysgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MKLUBAIC0xMzYsNyArMTM2 LDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewotICAgICAgIDogZmRfKG1pbmlkdW1wX2ZkKSwK LSAgICAgICAgIHBhdGhfKG1pbmlkdW1wX3BhdGgpLAotICAgICAgICAgdWNvbnRleHRfKGNvbnRl eHQgPyAmY29udGV4dC0+Y29udGV4dCA6IE5VTEwpLAotLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJ X18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0r ICAgICAgICB2ZWN0b3Jfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+dmVjdG9yX3N0YXRlIDog TlVMTCksCi0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNf XykKLSAgICAgICAgIGZsb2F0X3N0YXRlXyhjb250ZXh0ID8gJmNvbnRleHQtPmZsb2F0X3N0YXRl IDogTlVMTCksCi0gI2VuZGlmCi0gICAgICAgICBkdW1wZXJfKGR1bXBlciksCi1AQCAtNDY4LDcg KzQ3MCw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAgICAgICAgIGlmICghY3B1LkFsbG9j YXRlKCkpCi0gICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIG15X21lbXNldChjcHUu Z2V0KCksIDAsIHNpemVvZihSYXdDb250ZXh0Q1BVKSk7Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VB QklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSsgICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChjcHUuZ2V0KCksIHVjb250 ZXh0XywgdmVjdG9yX3N0YXRlXyk7Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAh ZGVmaW5lZChfX21pcHNfXykKLSAgICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4 dChjcHUuZ2V0KCksIHVjb250ZXh0XywgZmxvYXRfc3RhdGVfKTsKLSAjZWxzZQotICAgICAgICAg VUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfKTsKLUBA IC04OTcsNyArOTAxLDcgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewotICAgICBkaXJlbnQtPmxv Y2F0aW9uLnJ2YSA9IDA7Ci0gICB9Ci0gCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gICBib29sIFdyaXRlQ1BVSW5mb3JtYXRpb24oTURSYXdTeXN0ZW1J bmZvKiBzeXNfaW5mbykgewotICAgICBjaGFyIHZlbmRvcl9pZFtzaXplb2Yoc3lzX2luZm8tPmNw dS54ODZfY3B1X2luZm8udmVuZG9yX2lkKSArIDFdID0gezB9OwotICAgICBzdGF0aWMgY29uc3Qg Y2hhciB2ZW5kb3JfaWRfbmFtZVtdID0gInZlbmRvcl9pZCI7Ci1AQCAtOTE3LDcgKzkyMSw5IEBA IGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAKLSAgICAgLy8gcHJvY2Vzc29yX2FyY2hpdGVjdHVy ZSBzaG91bGQgYWx3YXlzIGJlIHNldCwgZG8gdGhpcyBmaXJzdAotICAgICBzeXNfaW5mby0+cHJv Y2Vzc29yX2FyY2hpdGVjdHVyZSA9Ci0tI2lmIGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIE1EX0NQVV9BUkNISVRFQ1RVUkVfUFBDNjQ7Ci0r I2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAjIGlmIF9NSVBTX1NJTSA9PSBfQUJJTzMyCi0gICAg ICAgICBNRF9DUFVfQVJDSElURUNUVVJFX01JUFM7Ci0gIyBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJ NjQKLUBAIC0xMzMzLDcgKzEzMzksOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7Ci0gICBjb25z dCBjaGFyKiBwYXRoXzsgIC8vIFBhdGggdG8gdGhlIGZpbGUgd2hlcmUgdGhlIG1pbmlkdW0gc2hv dWxkIGJlIHdyaXR0ZW4uCi0gCi0gICBjb25zdCB1Y29udGV4dF90KiBjb25zdCB1Y29udGV4dF87 ICAvLyBhbHNvIGZyb20gdGhlIHNpZ25hbCBoYW5kbGVyCi0tI2lmICFkZWZpbmVkKF9fQVJNX0VB QklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSsgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6dnN0YXRlX3QqIGNvbnN0IHZlY3Rvcl9zdGF0ZV87 Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAg IGNvbnN0IGdvb2dsZV9icmVha3BhZDo6ZnBzdGF0ZV90KiBjb25zdCBmbG9hdF9zdGF0ZV87ICAv LyBkaXR0bwotICNlbmRpZgotICAgTGludXhEdW1wZXIqIGR1bXBlcl87Ci1kaWZmIC0tZ2l0IGEv dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbWluaWR1bXBfd3JpdGVyLmggYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuaAotaW5kZXgg ZTNiMGIxNmRhLi5jY2Q4YWEwYTQgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIu aAotKysrIGIvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKLUBAIC00OCw2ICs0OCw4IEBAIGNsYXNz IEV4Y2VwdGlvbkhhbmRsZXI7Ci0gCi0gI2lmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gdHlwZWRl ZiBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90OwotKyNlbGlmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSt0eXBlZGVmIHZycmVnc2V0X3QgdnN0YXRlX3Q7Ci0gI2VsaWYgIWRlZmluZWQo X19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSB0eXBlZGVmIHN0ZDo6cmVtb3Zl X3BvaW50ZXI8ZnByZWdzZXRfdD46OnR5cGUgZnBzdGF0ZV90OwotICNlbmRpZgotZGlmZiAtLWdp dCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYyBiL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dy aXRlcl91bml0dGVzdC5jYwotaW5kZXggZDE5MmU1Y2JiLi5mYzFiZmE4ZDcgMTAwNjQ0Ci0tLS0g YS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1w X3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1w X3dyaXRlcl91bml0dGVzdC5jYwotQEAgLTcxNSw2ICs3MTUsOSBAQCBURVNUKE1pbmlkdW1wV3Jp dGVyVGVzdCwgSW52YWxpZFN0YWNrUG9pbnRlcikgewotICNlbGlmIGRlZmluZWQoX19taXBzX18p Ci0gICBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JF R19TUF0gPQotICAgICAgIGludmFsaWRfc3RhY2tfcG9pbnRlcjsKLSsjZWxpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0rICBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tNRF9D T05URVhUX1BQQzY0X1JFR19TUF0gPQotKyAgICAgIGludmFsaWRfc3RhY2tfcG9pbnRlcjsKLSAj ZWxzZQotICMgZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxh dGZvcm0geWV0LiIKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZS5jYyBiL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxl LmNjCi1pbmRleCA5OTM2Mjk0NWMuLmM1NGJhNzE0NSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNj Ci0rKysgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21l bW9yeV9tYXBwZWRfZmlsZS5jYwotQEAgLTY1LDggKzY1LDcgQEAgYm9vbCBNZW1vcnlNYXBwZWRG aWxlOjpNYXAoY29uc3QgY2hhciogcGF0aCwgc2l6ZV90IG9mZnNldCkgewotICAgfQotIAotICNp ZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKLS0gICAo ZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9BQkk2NCkKLS0KLSsgICAoZGVmaW5l ZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9BQkk2NCkgfHwgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgc3RydWN0IGtlcm5lbF9zdGF0IHN0OwotICAgaWYgKHN5c19mc3RhdChmZCwgJnN0 KSA9PSAtMSB8fCBzdC5zdF9zaXplIDwgMCkgewotICNlbHNlCi1kaWZmIC0tZ2l0IGEvdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2Zp bGVfdW5pdHRlc3QuY2MgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9u L2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVzdC5jYwotaW5kZXggZmFkNTlmNDBjLi42 MTY0OTZkNjcgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVzdC5jYwotKysrIGIvdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2Zp bGVfdW5pdHRlc3QuY2MKLUBAIC0xNzYsOSArMTc2LDEwIEBAIFRFU1RfRihNZW1vcnlNYXBwZWRG aWxlVGVzdCwgUmVtYXBBZnRlck1hcCkgewotIFRFU1RfRihNZW1vcnlNYXBwZWRGaWxlVGVzdCwg TWFwV2l0aE9mZnNldCkgewotICAgLy8gUHV0IG1vcmUgZGF0YSBpbiB0aGUgdGVzdCBmaWxlIHRo aXMgdGltZS4gT2Zmc2V0cyBjYW4gb25seSBiZQotICAgLy8gZG9uZSBvbiBwYWdlIGJvdW5kYXJp ZXMsIHNvIHdlIG5lZWQgYSB0d28gcGFnZSBmaWxlIHRvIHRlc3QgdGhpcy4KLS0gIGNvbnN0IGlu dCBwYWdlX3NpemUgPSA0MDk2OwotLSAgY2hhciBkYXRhMVsyICogcGFnZV9zaXplXTsKLS0gIHNp emVfdCBkYXRhMV9zaXplID0gc2l6ZW9mKGRhdGExKTsKLSsgIGNvbnN0IGludCBwYWdlX3NpemUg PSBnZXRwYWdlc2l6ZSgpOwotKyAgY2hhciAqZGF0YTEgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFs bG9jKDIgKiBwYWdlX3NpemUpKTsKLSsgIEVYUEVDVF9UUlVFKGRhdGExICE9IE5VTEwpOwotKyAg c2l6ZV90IGRhdGExX3NpemUgPSAoMiAqIHBhZ2Vfc2l6ZSk7Ci0gICBmb3IgKHNpemVfdCBpID0g MDsgaSA8IGRhdGExX3NpemU7ICsraSkgewotICAgICBkYXRhMVtpXSA9IGkgJiAweDdmOwotICAg fQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24v bWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5jYyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5jYwotaW5kZXggNTgwM2I5 MGQ1Li4yYTFjZjE0ZjAgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKLSsrKyBiL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVz dC5jYwotQEAgLTU3LDggKzU3LDkgQEAgVEVTVChQYWdlQWxsb2NhdG9yVGVzdCwgTGFyZ2VPYmpl Y3QpIHsKLSAKLSAgIEVYUEVDVF9FUSgwVSwgYWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsK LSAgIHVpbnQ4X3QqIHAgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihhbGxvY2F0b3IuQWxs b2MoMTAwMDApKTsKLSsgIHVpbnQ2NF90IGV4cGVjdGVkX3BhZ2VzID0gMSArICgoMTAwMDAgLSAx KSAvIGdldHBhZ2VzaXplKCkpOwotICAgQVNTRVJUX0ZBTFNFKHAgPT0gTlVMTCk7Ci0tICBFWFBF Q1RfRVEoM1UsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQoKSk7Ci0rICBFWFBFQ1RfRVEoZXhw ZWN0ZWRfcGFnZXMsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQoKSk7Ci0gICBmb3IgKHVuc2ln bmVkIGkgPSAxOyBpIDwgMTA7ICsraSkgewotICAgICB1aW50OF90KiBwID0gcmVpbnRlcnByZXRf Y2FzdDx1aW50OF90Kj4oYWxsb2NhdG9yLkFsbG9jKGkpKTsKLSAgICAgQVNTRVJUX0ZBTFNFKHAg PT0gTlVMTCk7Ci1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGludXguY2MKLWluZGV4IDc5 ODA1NmRmYS4uMjJiZDgxZmZmIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYwotKysrIGIvdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51 eC5jYwotQEAgLTIwMiwxMiArMjAyLDE0IEBAIGJvb2wgRXhwbG9pdGFiaWxpdHlMaW51eDo6RW5k ZWRPbklsbGVnYWxXcml0ZSh1aW50NjRfdCBpbnN0cnVjdGlvbl9wdHIpIHsKLSAgIC8vIENoZWNr IGFyY2hpdGVjdHVyZSBhbmQgc2V0IGFyY2hpdGVjdHVyZSB2YXJpYWJsZSB0byBjb3JyZXNwb25k aW5nIGZsYWcKLSAgIC8vIGluIG9iamR1bXAuCi0gICBzd2l0Y2ggKGNvbnRleHQtPkdldENvbnRl eHRDUFUoKSkgewotKyNpZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKLSAg ICAgY2FzZSBNRF9DT05URVhUX1g4NjoKLSAgICAgICBhcmNoaXRlY3R1cmUgPSAiaTM4NiI7Ci0g ICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgTURfQ09OVEVYVF9BTUQ2NDoKLSAgICAgICBhcmNoaXRl Y3R1cmUgPSAiaTM4Njp4ODYtNjQiOwotICAgICAgIGJyZWFrOwotKyNlbmRpZgotICAgICBkZWZh dWx0OgotICAgICAgIC8vIFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZS4gTm90ZSB0aGF0IEFSTSBh cmNoaXRlY3R1cmVzIGFyZSBub3QKLSAgICAgICAvLyBzdXBwb3J0ZWQgYmVjYXVzZSBvYmpkdW1w IGRvZXMgbm90IHN1cHBvcnQgQVJNLgotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3QuY2MgYi90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X3Vu aXR0ZXN0LmNjCi1pbmRleCA1MjhlZTVmMjEuLjcyNzY0ZDZjMSAxMDA2NDQKLS0tLSBhL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5p dHRlc3QuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNz b3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3QuY2MKLUBAIC0xMDQsNiArMTA0LDggQEAgRXhwbG9p dGFiaWxpdHlGb3IoY29uc3Qgc3RyaW5nJiBmaWxlbmFtZSkgewotIH0KLSAKLSBURVNUKEV4cGxv aXRhYmlsaXR5VGVzdCwgVGVzdFdpbmRvd3NFbmdpbmUpIHsKLSsvLyBUaGUgZm9sbG93aW5nIHRl c3RzIGFyZSBvbmx5IGV4ZWN1dGFibGUgb24gYW4geDg2LWNsYXNzIGxpbnV4IG1hY2hpbmUuCi0r I2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2 XzY0KSkKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gs Ci0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImFzY2lpX3JlYWRfYXYuZG1wIikpOwot ICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLUBAIC0x MzYsOSArMTM4LDEyIEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0VuZ2lu ZSkgewotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2Nsb2JiZXJfd3Jp dGUuZG1wIikpOwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlf TE9XLAotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2NvbmRpdGlvbmFs LmRtcCIpKTsKLSsjZW5kaWYKLSB9Ci0gCi0gVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RM aW51eEVuZ2luZSkgewotKy8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0YWJs ZSBvbiBhbiB4ODYtY2xhc3MgbGludXggbWFjaGluZS4KLSsjaWYgZGVmaW5lZChfX2kzODYpIHx8 IGRlZmluZWQoX194ODZfNjQpCi0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lU QUJJTElUWV9JTlRFUkVTVElORywKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGlu dXhfbnVsbF9yZWFkX2F2LmRtcCIpKTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVY UExPSVRBQklMSVRZX0hJR0gsCi1AQCAtMTcxLDcgKzE3Niw4IEBAIFRFU1QoRXhwbG9pdGFiaWxp dHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZv cigibGludXhfZXhlY3V0YWJsZV9oZWFwLmRtcCIpKTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJl YWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlG b3IoImxpbnV4X2ptcF90b19tb2R1bGVfbm90X2V4ZV9yZWdpb24uZG1wIikpOwotLSNpZm5kZWYg X1dJTjMyCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2 KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVY UExPSVRBQklMSVRZX0hJR0gsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4 X3dyaXRlX3RvX25vbndyaXRhYmxlX21vZHVsZS5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xl X2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAotQEAgLTE4MiwxMCArMTg4LDEwIEBAIFRF U1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKLSAgICAgICAgICAgICBF eHBsb2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fb3V0c2lkZV9tb2R1bGVfdmlhX21hdGgu ZG1wIikpOwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSU5U RVJFU1RJTkcsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dyaXRlX3Rv X3VuZGVyXzRrLmRtcCIpKTsKLS0jZW5kaWYgIC8vIF9XSU4zMgotKyNlbmRpZiAgLy8gIWRlZmlu ZWQoX1dJTjMyKSAmJiAoIWRlZmluZWQoX19pMzg2KSAmJiAhZGVmaW5lZChfX3g4Nl82NCkpCi0g fQotIAotLSNpZm5kZWYgX1dJTjMyCi0rI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQo X19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKLSBURVNUKEV4cGxvaXRhYmlsaXR5TGludXhV dGlsc1Rlc3QsIERpc2Fzc2VtYmxlQnl0ZXNUZXN0KSB7Ci0gICBBU1NFUlRfRkFMU0UoRXhwbG9p dGFiaWxpdHlMaW51eFRlc3Q6OkRpc2Fzc2VtYmxlQnl0ZXMoIiIsIE5VTEwsIDUsIE5VTEwpKTsK LSAgIHVpbnQ4X3QgYnl0ZXNbNl0gPSB7MHhjNywgMHgwLCAweDUsIDB4MCwgMHgwLCAweDB9Owot QEAgLTMwMSw2ICszMDcsNyBAQCBURVNUKEV4cGxvaXRhYmlsaXR5TGludXhVdGlsc1Rlc3QsIENh bGN1bGF0ZUFkZHJlc3NUZXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVfYWRkcmVzcykpOwotIH0K LS0jZW5kaWYgIC8vIF9XSU4zMgotKyNlbmRpZiAgLy8gIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVm aW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQotKwotIAotIH0gIC8vIG5hbWVzcGFj ZQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9s aW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYwotaW5kZXgg YWFkZTgyYzk5Li4xOTVhYTczZjMgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKLSsrKyBi L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9tZDJjb3JlL21p bmlkdW1wLTItY29yZS5jYwotQEAgLTc3LDYgKzc3LDggQEAKLSAgICNkZWZpbmUgRUxGX0FSQ0gg IEVNX01JUFMKLSAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotICAgI2RlZmluZSBFTEZfQVJD SCAgRU1fQUFSQ0g2NAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICNkZWZpbmUg RUxGX0FSQ0ggIEVNX1BQQzY0Ci0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX19hcm1fXykKLUBA IC04Nyw2ICs4OSw4IEBAIHR5cGVkZWYgdXNlcl9yZWdzIHVzZXJfcmVnc19zdHJ1Y3Q7Ci0gI2Vs aWYgZGVmaW5lZCAoX19taXBzX18pCi0gLy8gVGhpcyBmaWxlLWxvY2FsIHR5cGVkZWYgc2ltcGxp ZmllcyB0aGUgc291cmNlIGNvZGUuCi0gdHlwZWRlZiBncmVnc2V0X3QgdXNlcl9yZWdzX3N0cnVj dDsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rdHlwZWRlZiBzdHJ1Y3QgcHRfcmVn cyB1c2VyX3JlZ3Nfc3RydWN0OwotICNlbmRpZgotIAotIHVzaW5nIGdvb2dsZV9icmVha3BhZDo6 TURUeXBlSGVscGVyOwotQEAgLTMyMSw2ICszMjUsOSBAQCBzdHJ1Y3QgQ3Jhc2hlZFByb2Nlc3Mg ewotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotICAgICB1c2VyX2Zwc2ltZF9z dHJ1Y3QgZnByZWdzOwotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAg IG1jb250ZXh0X3QgbWNvbnRleHQ7Ci0gI2VuZGlmCi0gICAgIHVpbnRwdHJfdCBzdGFja19hZGRy OwotICAgICBjb25zdCB1aW50OF90KiBzdGFjazsKLUBAIC01MzUsNiArNTQyLDM4IEBAIFBhcnNl VGhyZWFkUmVnaXN0ZXJzKENyYXNoZWRQcm9jZXNzOjpUaHJlYWQqIHRocmVhZCwKLSAgIHRocmVh ZC0+bWNvbnRleHQuZnBjX2VpciA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZmlyOwotICNlbmRpZgot IH0KLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rc3RhdGljIHZvaWQKLStQYXJzZVRo cmVhZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQsCi0rICAgICAgICAg ICAgICAgICAgICAgY29uc3QgTWluaWR1bXBNZW1vcnlSYW5nZSYgcmFuZ2UpIHsKLSsgIGNvbnN0 IE1EUmF3Q29udGV4dFBQQzY0KiByYXdyZWdzID0gcmFuZ2UuR2V0RGF0YTxNRFJhd0NvbnRleHRQ UEM2ND4oMCk7Ci0rCi0rICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BS X0NPVU5UOyBpKyspCi0rICAgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tpXSA9IHJhd3JlZ3Mt PmdwcltpXTsKLSsKLSsgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdID0gcmF3cmVn cy0+bHI7Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTklQXSA9IHJhd3JlZ3MtPnNy cjA7Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTVNSXSA9IHJhd3JlZ3MtPnNycjE7 Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXSA9IHJhd3JlZ3MtPmNyOwotKyAg dGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX1hFUl0gPSByYXdyZWdzLT54ZXI7Ci0rICB0aHJl YWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXSA9IHJhd3JlZ3MtPmN0cjsKLSsgIHRocmVhZC0+ bWNvbnRleHQudl9yZWdzLT52cnNhdmUgPSByYXdyZWdzLT52cnNhdmU7Ci0rCi0rICBmb3IgKGlu dCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQotKyAg ICAgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tpXSA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZnBy ZWdzW2ldOwotKwotKyAgdGhyZWFkLT5tY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXSA9IHJhd3Jl Z3MtPmZsb2F0X3NhdmUuZnBzY3I7Ci0rCi0rICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZFQ1RP UlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKSB7Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52 X3JlZ3MtPnZycmVnc1tpXVswXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0uaGln aCA+PiAzMjsKLSsgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzFdID0g cmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5oaWdoOwotKyAgICAgIHRocmVhZC0+bWNv bnRleHQudl9yZWdzLT52cnJlZ3NbaV1bMl0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3Zy W2ldLmxvdyA+PiAzMjsKLSsgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdzW2ld WzNdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5sb3c7Ci0rICB9Ci0rCi0rICB0 aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnNjci52c2NyX3dvcmQgPSByYXdyZWdzLT52ZWN0b3Jf c2F2ZS5zYXZlX3ZzY3IubG93ICYgMHhGRkZGRkZGRjsKLSt9Ci0rCi0gI2Vsc2UKLSAjZXJyb3Ig IlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0IgotICNl bmRpZgotQEAgLTYyMyw2ICs2NjIsMTIgQEAgUGFyc2VTeXN0ZW1JbmZvKGNvbnN0IE9wdGlvbnMm IG9wdGlvbnMsIENyYXNoZWRQcm9jZXNzKiBjcmFzaGluZm8sCi0gIyBlbHNlCi0gIyAgZXJyb3Ig IlRoaXMgbWlwcyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgKG4zMikiCi0gIyBlbmRp ZgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGlmIChzeXNpbmZvLT5wcm9jZXNz b3JfYXJjaGl0ZWN0dXJlICE9IE1EX0NQVV9BUkNISVRFQ1RVUkVfUFBDNjQpIHsKLSsgICAgZnBy aW50ZihzdGRlcnIsCi0rICAgICAgICAgICAgIlRoaXMgdmVyc2lvbiBvZiBtaW5pZHVtcC0yLWNv cmUgb25seSBzdXBwb3J0cyBQUEM2NC5cbiIpOwotKyAgICBleGl0KDEpOwotKyAgfQotICNlbHNl Ci0gI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3Jt IHlldCIKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9DT05UUklCVVRPUlMgYi90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9DT05UUklCVVRP UlMKLWluZGV4IDg3MjRiN2YzMi4uOGUyOTQyNGVmIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvQ09OVFJJQlVUT1JTCi0rKysgYi90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9DT05UUklCVVRPUlMKLUBAIC0xMywzICsxMyw0IEBAIE1hcmsgTWVudG92YWkg PG1hcmtAY2hyb21pdW0ub3JnPgotIFJvYmVydCBTZXNlayA8cnNlc2VrQGNocm9taXVtLm9yZz4K LSBTY290dCBHcmFoYW0gPHNjb3R0bWdAY2hyb21pdW0ub3JnPgotIEpvc2h1YSBQZXJhemEgPGpw ZXJhemFAY2hyb21pdW0ub3JnPgotK1NoYXduIEFuYXN0YXNpbyA8c2hhd25AYW5hc3Rhcy5pbz4K LWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgv c3lzL3VzZXIuaCBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9z eXMvdXNlci5oCi1pbmRleCA2ZWQ3N2E5OGUuLjFmZDgzNDY5YSAxMDA2NDQKLS0tLSBhL3RoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9zeXMvdXNlci5oCi0rKysgYi90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaAotQEAg LTE1LDYgKzE1LDcgQEAKLSAjaWZuZGVmIENSQVNIUEFEX0NPTVBBVF9MSU5VWF9TWVNfVVNFUl9I XwotICNkZWZpbmUgQ1JBU0hQQURfQ09NUEFUX0xJTlVYX1NZU19VU0VSX0hfCi0gCi0rI2luY2x1 ZGUgPGNzdGRkZWY+Ci0gI2luY2x1ZGVfbmV4dCA8c3lzL3VzZXIuaD4KLSAKLSAjaW5jbHVkZSA8 ZmVhdHVyZXMuaD4KLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9t aW5pZHVtcC9taW5pZHVtcF9jb250ZXh0LmggYi90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0LmgKLWluZGV4IDNhM2U2MDNjYi4uMzExOGQ5ZTlm IDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWlu aWR1bXBfY29udGV4dC5oCi0rKysgYi90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5p ZHVtcC9taW5pZHVtcF9jb250ZXh0LmgKLUBAIC01OTIsNiArNTkyLDcwIEBAIHN0cnVjdCBNaW5p ZHVtcENvbnRleHRNSVBTNjQgewotICAgdWludDY0X3QgZmlyOwotIH07Ci0gCi0rLy8hIFxicmll ZiBwcGM2NC1zcGVjaWZpYyBmbGFncyBmb3IgTWluaWR1bXBQUEM2NDo6Y29udGV4dF9mbGFncwot Ky8vISBCYXNlZCBvbiBtaW5pZHVtcF9jcHVfcHBjNjQuaCBmcm9tIGJyZWFrcGFkCi0rZW51bSBN aW5pZHVtcENvbnRleHRQUEM2NEZsYWdzIDogdWludDMyX3QgewotKyAgLy8hIFxicmllZiBJZGVu dGlmaWVzIHRoZSBjb250ZXh0IGFzIFBQQzY0LgotKyAga01pbmlkdW1wQ29udGV4dFBQQzY0ID0g MHgwMTAwMDAwMCwKLSsKLSsgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBn ZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLgotKyAgLy8hCi0rICAvLyEgUmVnaXN0ZXJzIGByMGAt YHIzMWAsIGBuaXBgLCBgbXNyYCwgYGxyYCwgZXRjLiBhcmUgdmFsaWQuCi0rICBrTWluaWR1bXBD b250ZXh0UFBDNjRCYXNlID0ga01pbmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAwMDAwMSwKLSsK LSsgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBmbG9hdGluZyBwb2ludCBy ZWdpc3RlcnMuCi0rICAvLyEKLSsgIC8vISBSZWdpc3RlcnMgYGZwMGAtYGZwMzFgLCBgZnBzY3Jg IGFyZSB2YWxpZC4KLSsgIGtNaW5pZHVtcENvbnRleHRQUEM2NEZsb2F0aW5nID0ga01pbmlkdW1w Q29udGV4dFBQQzY0IHwgMHgwMDAwMDAwOCwKLSsKLSsgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRo ZSB2YWxpZGl0eSBvZiBBbHRpdmVjL1ZNWCByZWdpc3RlcnMuCi0rICAvLyEKLSsgIC8vISBSZWdp c3RlcnMgYHYwYC1gdjMxYCwgYHZzY3JgLCBgdnJzYXZlYC4KLSsgIGtNaW5pZHVtcENvbnRleHRQ UEM2NFZlY3RvciA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8IDB4MDAwMDAwMjAsCi0rCi0rICAv LyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgYWxsIHJlZ2lzdGVycwotKyAga01p bmlkdW1wQ29udGV4dFBQQzY0QWxsID0ga01pbmlkdW1wQ29udGV4dFBQQzY0QmFzZSAgICAgfAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01pbmlkdW1wQ29udGV4dFBQQzY0RmxvYXRp bmcgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01pbmlkdW1wQ29udGV4dFBQQzY0 VmVjdG9yCi0rfTsKLSsKLSsvLyEgXGJyaWVmIEEgUFBDNjQgQ1BVIGNvbnRleHQgY2FycmllZCBp biBhIG1pbmlkdW1wIGZpbGUuCi0rLy8hIEJhc2VkIG9uIG1pbmlkdW1wX2NwdV9wcGM2NC5oIGZy b20gYnJlYWtwYWQuCi0rc3RydWN0IE1pbmlkdW1wQ29udGV4dFBQQzY0IHsKLSsgIHVpbnQ2NF90 IGNvbnRleHRfZmxhZ3M7Ci0rCi0rICAvLyEgXGJyaWVmIEdlbmVyYWwgcHVycG9zZSByZWdpc3Rl cnMuCi0rICB1aW50NjRfdCBuaXA7Ci0rICB1aW50NjRfdCBtc3I7Ci0rICB1aW50NjRfdCByZWdz WzMyXTsKLSsgIHVpbnQ2NF90IGNjcjsKLSsgIHVpbnQ2NF90IHhlcjsKLSsgIHVpbnQ2NF90IGxu azsKLSsgIHVpbnQ2NF90IGN0cjsKLSsKLSsgIC8vISBcYnJpZWYgRmxvYXRpbmcgcG9pbnQgcmVn aXN0ZXJzLgotKyAgZG91YmxlIGZwcmVnc1szMl07Ci0rCi0rICAvLyEgXGJyaWVmIEZQVSBzdGF0 dXMgcmVnaXN0ZXIuCi0rICBkb3VibGUgZnBzY3I7Ci0rCi0rICAvLyEgXGJyaWVmIEFsdGl2ZWMv Vk1YIHZlY3RvciByZWdpc3RlcnMuCi0rICBzdHJ1Y3QgewotKyAgICAgIC8vISBcYnJpZWYgVmVj dG9yIHJlZ2lzdGVycyBhcmUgMTI4Yml0cy4KLSsgICAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3Zy WzMyXTsKLSsgICAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZzY3I7Ci0rCi0rICAgICAgLy8hIFxi cmllZiBQYWRkaW5nIGluY2x1ZGVkIGZvciBicmVha3BhZCBjb21wYXRpYmlsdGl5LgotKyAgICAg IHVpbnQzMl90IHNhdmVfcGFkNVs0XTsKLSsKLSsgICAgICAvLyEgXGJyaWVmIFZSU0FWRSByZWdp c3Rlci4KLSsgICAgICB1aW50MzJfdCBzYXZlX3Zyc2F2ZTsKLSsKLSsgICAgICAvLyEgXGJyaWVm IFBhZGRpbmcgaW5jbHVkZWQgZm9yIGJyZWFrcGFkIGNvbXBhdGliaWx0aXkuCi0rICAgICAgdWlu dDMyX3Qgc2F2ZV9wYWQ2WzddOwotKyAgfSB2cmVnczsKLSt9OwotKwotIH0gIC8vIG5hbWVzcGFj ZSBjcmFzaHBhZAotIAotICNlbmRpZiAgLy8gQ1JBU0hQQURfTUlOSURVTVBfTUlOSURVTVBfQ09O VEVYVF9IXwotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlk dW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmNjIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuY2MKLWluZGV4IGQ3ZTUzYTQ5 My4uZDg5ZWI5ZTAxIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv bWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmNjCi1AQCAt MTAxLDYgKzEwMSwxMyBAQCBNaW5pZHVtcENvbnRleHRXcml0ZXI6OkNyZWF0ZUZyb21TbmFwc2hv dChjb25zdCBDUFVDb250ZXh0KiBjb250ZXh0X3NuYXBzaG90KSB7Ci0gICAgICAgYnJlYWs7Ci0g ICAgIH0KLSAKLSsgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6IHsKLSsgICAgICBjb250 ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcj4oKTsKLSsg ICAgICByZWludGVycHJldF9jYXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKj4oY29udGV4 dC5nZXQoKSkKLSsgICAgICAgICAgLT5Jbml0YWxpemVGcm9tU25hcHNob3QoY29udGV4dF9zbmFw c2hvdC0+cHBjNjQpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0gICAgIGRlZmF1bHQ6IHsK LSAgICAgICBMT0coRVJST1IpIDw8ICJ1bmtub3duIGNvbnRleHQgYXJjaGl0ZWN0dXJlICIKLSAg ICAgICAgICAgICAgICAgIDw8IGNvbnRleHRfc25hcHNob3QtPmFyY2hpdGVjdHVyZTsKLUBAIC00 NTMsNCArNDYwLDQ3IEBAIHNpemVfdCBNaW5pZHVtcENvbnRleHRNSVBTNjRXcml0ZXI6OkNvbnRl eHRTaXplKCkgY29uc3QgewotICAgcmV0dXJuIHNpemVvZihjb250ZXh0Xyk7Ci0gfQotIAotK01p bmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigpCi0r ICA6IE1pbmlkdW1wQ29udGV4dFdyaXRlcigpLCBjb250ZXh0XygpIHsKLSsgICAgY29udGV4dF8u Y29udGV4dF9mbGFncyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NDsKLSt9Ci0rCi0rTWluaWR1bXBD b250ZXh0UFBDNjRXcml0ZXI6On5NaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigpID0gZGVmYXVs dDsKLSsKLSt2b2lkIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpJbml0YWxpemVGcm9tU25h cHNob3QoCi0rICAgIGNvbnN0IENQVUNvbnRleHRQUEM2NCogY29udGV4dF9zbmFwc2hvdCkgewot KyAgRENIRUNLX0VRKHN0YXRlKCksIGtTdGF0ZU11dGFibGUpOwotKyAgRENIRUNLX0VRKGNvbnRl eHRfLmNvbnRleHRfZmxhZ3MsIGtNaW5pZHVtcENvbnRleHRQUEM2NCk7Ci0rCi0rICBjb250ZXh0 Xy5jb250ZXh0X2ZsYWdzID0ga01pbmlkdW1wQ29udGV4dFBQQzY0QWxsOwotKwotKyAgbWVtY3B5 KGNvbnRleHRfLnJlZ3MsIGNvbnRleHRfc25hcHNob3QtPnJlZ3MsIHNpemVvZihjb250ZXh0Xy5y ZWdzKSk7Ci0rICBjb250ZXh0Xy5uaXAgPSBjb250ZXh0X3NuYXBzaG90LT5uaXA7Ci0rICBjb250 ZXh0Xy5tc3IgPSBjb250ZXh0X3NuYXBzaG90LT5tc3I7Ci0rICBjb250ZXh0Xy5jY3IgPSBjb250 ZXh0X3NuYXBzaG90LT5jY3I7Ci0rICBjb250ZXh0Xy54ZXIgPSBjb250ZXh0X3NuYXBzaG90LT54 ZXI7Ci0rICBjb250ZXh0Xy5sbmsgPSBjb250ZXh0X3NuYXBzaG90LT5sbms7Ci0rICBjb250ZXh0 Xy5jdHIgPSBjb250ZXh0X3NuYXBzaG90LT5jdHI7Ci0rCi0rICBtZW1jcHkoY29udGV4dF8uZnBy ZWdzLCBjb250ZXh0X3NuYXBzaG90LT5mcHJlZ3MsIHNpemVvZihjb250ZXh0Xy5mcHJlZ3MpKTsK LSsgIGNvbnRleHRfLmZwc2NyID0gY29udGV4dF9zbmFwc2hvdC0+ZnBzY3I7Ci0rCi0rICBtZW1j cHkoY29udGV4dF8udnJlZ3Muc2F2ZV92ciwgY29udGV4dF9zbmFwc2hvdC0+dnJlZ3Muc2F2ZV92 ciwKLSsgICAgICAgICBzaXplb2YoY29udGV4dF8udnJlZ3Muc2F2ZV92cikpOwotKyAgbWVtY3B5 KCZjb250ZXh0Xy52cmVncy5zYXZlX3ZzY3IsICZjb250ZXh0X3NuYXBzaG90LT52cmVncy5zYXZl X3ZzY3IsCi0rICAgICAgICAgc2l6ZW9mKGNvbnRleHRfLnZyZWdzLnNhdmVfdnNjcikpOwotKyAg Y29udGV4dF8udnJlZ3Muc2F2ZV92cnNhdmUgPSBjb250ZXh0X3NuYXBzaG90LT52cmVncy5zYXZl X3Zyc2F2ZTsKLSt9Ci0rCi0rYm9vbCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6V3JpdGVP YmplY3QoCi0rICAgIEZpbGVXcml0ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSB7Ci0rICBEQ0hF Q0tfRVEoc3RhdGUoKSwga1N0YXRlV3JpdGFibGUpOwotKyAgcmV0dXJuIGZpbGVfd3JpdGVyLT5X cml0ZSgmY29udGV4dF8sIHNpemVvZihjb250ZXh0XykpOwotK30KLSsKLStzaXplX3QgTWluaWR1 bXBDb250ZXh0UFBDNjRXcml0ZXI6OkNvbnRleHRTaXplKCkgY29uc3QgewotKyAgRENIRUNLX0dF KHN0YXRlKCksIGtTdGF0ZUZyb3plbik7Ci0rICByZXR1cm4gc2l6ZW9mKGNvbnRleHRfKTsKLSt9 Ci0rCi0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuaCBiL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3Jp dGVyLmgKLWluZGV4IGQ0YWI5MzZlZS4uMWQyMmZjNTljIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuaAot KysrIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29u dGV4dF93cml0ZXIuaAotQEAgLTMxNSw2ICszMTUsNDUgQEAgY2xhc3MgTWluaWR1bXBDb250ZXh0 TUlQUzY0V3JpdGVyIGZpbmFsIDogcHVibGljIE1pbmlkdW1wQ29udGV4dFdyaXRlciB7Ci0gICBE SVNBTExPV19DT1BZX0FORF9BU1NJR04oTWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyKTsKLSB9 OwotIAotK2NsYXNzIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyIGZpbmFsIDogcHVibGljIE1p bmlkdW1wQ29udGV4dFdyaXRlciB7Ci0rIHB1YmxpYzoKLSsgIE1pbmlkdW1wQ29udGV4dFBQQzY0 V3JpdGVyKCk7Ci0rICB+TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIoKSBvdmVycmlkZTsKLSsK LSsgIC8vISBcYnJpZWYgSW5pdGFsaXplcyB0aGUgTWluaWR1bXBDb250ZXh0UFBDNjQgYmFzZWQg b24gXGEgY29udGV4dF9zbmFwc2hvdC4KLSsgIC8vIQotKyAgLy8hIFxwYXJhbVtpbl0gY29udGV4 dF9zbmFwc2hvdCBUaGUgY29udGV4dCBzbmFwc2hvdCB0byB1c2UgYXMgc291cmNlIGRhdGEuCi0r ICAvLyEKLSsgIC8vISBcbm90ZSBWYWxpZCBpbiAja1N0YXRlTXV0YWJsZS4gTm8gbXV0YXRpb24g b2YgY29udGV4dCgpIG1heSBiZSBkb25lIGJlZm9yZQotKyAgLy8hICAgICBjYWxsaW5nIHRoaXMg bWV0aG9kLCBhbmQgaXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBhbHRlcgotKyAgLy8h ICAgICBjb250ZXh0KCkgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZC4KLSsgIHZvaWQgSW5pdGFs aXplRnJvbVNuYXBzaG90KGNvbnN0IENQVUNvbnRleHRQUEM2NCogY29udGV4dF9zbmFwc2hvdCk7 Ci0rCi0rICAvLyEgXGJyaWVmIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHN0cnVj dHVyZSB0aGF0IHRoaXMgb2JqZWN0IHdpbGwKLSsgIC8vISAgICAgd3JpdGUuCi0rICAvLyEKLSsg IC8vISBcYXR0ZW50aW9uIFRoaXMgcmV0dXJucyBhIG5vbi1gY29uc3RgIHBvaW50ZXIgdG8gdGhp cyBvYmplY3TigJlzIHByaXZhdGUKLSsgIC8vISAgICAgZGF0YSBzbyB0aGF0IGEgY2FsbGVyIGNh biBwb3B1bGF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgZGlyZWN0bHkuCi0rICAvLyEgICAgIFRo aXMgaXMgZG9uZSBiZWNhdXNlIHByb3ZpZGluZyBzZXR0ZXIgaW50ZXJmYWNlcyB0byBlYWNoIGZp ZWxkIGluIHRoZQotKyAgLy8hICAgICBjb250ZXh0IHN0cnVjdHVyZSB3b3VsZCBiZSB1bndpZWxk eSBhbmQgY3VtYmVyc29tZS4gQ2FyZSBtdXN0IGJlIHRha2VuCi0rICAvLyEgICAgIHRvIHBvcHVs YXRlIHRoZSBjb250ZXh0IHN0cnVjdHVyZSBjb3JyZWN0bHkuIFRoZSBjb250ZXh0IHN0cnVjdHVy ZQotKyAgLy8hICAgICBtdXN0IG9ubHkgYmUgbW9kaWZpZWQgd2hpbGUgdGhpcyBvYmplY3QgaXMg aW4gdGhlICNrU3RhdGVNdXRhYmxlCi0rICAvLyEgICAgIHN0YXRlLgotKyAgTWluaWR1bXBDb250 ZXh0UFBDNjQqIGNvbnRleHQoKSB7IHJldHVybiAmY29udGV4dF87IH0KLSsKLSsgcHJvdGVjdGVk OgotKyAgLy8gTWluaWR1bXBXcml0YWJsZToKLSsgIGJvb2wgV3JpdGVPYmplY3QoRmlsZVdyaXRl ckludGVyZmFjZSogZmlsZV93cml0ZXIpIG92ZXJyaWRlOwotKwotKyAgLy8gTWluaWR1bXBDb250 ZXh0V3JpdGVyOgotKyAgc2l6ZV90IENvbnRleHRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0rCi0r IHByaXZhdGU6Ci0rICBNaW5pZHVtcENvbnRleHRQUEM2NCBjb250ZXh0XzsKLSsKLSsgIERJU0FM TE9XX0NPUFlfQU5EX0FTU0lHTihNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcik7Ci0rfTsKLSsK LSB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKLSAKLSAjZW5kaWYgIC8vIENSQVNIUEFEX01JTklE VU1QX01JTklEVU1QX0NPTlRFWFRfV1JJVEVSX0hfCi1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXJfdGVzdC5j YyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRl eHRfd3JpdGVyX3Rlc3QuY2MKLWluZGV4IDMyMTZhOTA2Yi4uYTlmY2JlOWQ4IDEwMDY0NAotLS0t IGEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4 dF93cml0ZXJfdGVzdC5jYwotKysrIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWlu aWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXJfdGVzdC5jYwotQEAgLTIxMyw2ICsyMTMsMjEg QEAgVEVTVChNaW5pZHVtcENvbnRleHRXcml0ZXIsIE1JUFM2NF9Gcm9tU25hcHNob3QpIHsKLSAg ICAgICBjb250ZXh0LCBFeHBlY3RNaW5pZHVtcENvbnRleHRNSVBTNjQsIGtTZWVkKTsKLSB9Ci0g Ci0rVEVTVChNaW5pZHVtcENvbnRleHRXcml0ZXIsIFBQQzY0X1plcm9zKSB7Ci0rICBFbXB0eUNv bnRleHRUZXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyLCBNaW5pZHVtcENvbnRleHRQUEM2 ND4oCi0rICAgIEV4cGVjdE1pbmlkdW1wQ29udGV4dFBQQzY0KTsKLSt9Ci0rCi0rVEVTVChNaW5p ZHVtcENvbnRleHRXcml0ZXIsIFBQQzY0X0Zyb21TbmFwc2hvdCkgewotKyAgY29uc3RleHByIHVp bnQzMl90IGtTZWVkID0gNjQ7Ci0rICBDUFVDb250ZXh0UFBDNjQgY29udGV4dF9wcGM2NDsKLSsg IENQVUNvbnRleHQgY29udGV4dDsKLSsgIGNvbnRleHQucHBjNjQgPSAmY29udGV4dF9wcGM2NDsK LSsgIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQoJmNvbnRleHQsIGtTZWVkKTsKLSsgIEZyb21T bmFwc2hvdFRlc3Q8TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIsIE1pbmlkdW1wQ29udGV4dFBQ QzY0PigKLSsgICAgICBjb250ZXh0LCBFeHBlY3RNaW5pZHVtcENvbnRleHRQUEM2NCwga1NlZWQp OwotK30KLSsKLSB9ICAvLyBuYW1lc3BhY2UKLSB9ICAvLyBuYW1lc3BhY2UgdGVzdAotIH0gIC8v IG5hbWVzcGFjZSBjcmFzaHBhZAotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2NfaW5mb193cml0ZXIuY2MgYi90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNj Ci1pbmRleCAwOTc0ZTNkZGYuLmI3MWVjNTg4MCAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2NfaW5mb193cml0ZXIuY2MKLSsr KyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2Nf aW5mb193cml0ZXIuY2MKLUBAIC0xMzUsNiArMTM1LDggQEAgc3RkOjpzdHJpbmcgTWluaWR1bXBN aXNjSW5mb0RlYnVnQnVpbGRTdHJpbmcoKSB7Ci0gICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQ VVtdID0gIm1pcHMiOwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQUzY0RUwpCi0gICBzdGF0 aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0gIm1pcHM2NCI7Ci0rI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NCkKLSsgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10gPSAicHBjNjQiOwot ICNlbHNlCi0gI2Vycm9yIGRlZmluZSBrQ1BVIGZvciB0aGlzIENQVQotICNlbmRpZgotZGlmZiAt LWdpdCBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVt b3J5LmNjIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2FwdHVyZV9t ZW1vcnkuY2MKLWluZGV4IDdhMWIyNzYzYy4uYmVkYThkYTllIDEwMDY0NAotLS0tIGEvdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2FwdHVyZV9tZW1vcnkuY2MKLSsrKyBi L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNj Ci1AQCAtMTEyLDYgKzExMiwxMSBAQCB2b2lkIENhcHR1cmVNZW1vcnk6OlBvaW50ZWRUb0J5Q29u dGV4dChjb25zdCBDUFVDb250ZXh0JiBjb250ZXh0LAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkg PCBiYXNlOjpzaXplKGNvbnRleHQubWlwc2VsLT5yZWdzKTsgKytpKSB7Ci0gICAgIE1heWJlQ2Fw dHVyZU1lbW9yeUFyb3VuZChkZWxlZ2F0ZSwgY29udGV4dC5taXBzZWwtPnJlZ3NbaV0pOwotICAg fQotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgTWF5YmVDYXB0dXJl TWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0LnBwYzY0LT5uaXApOwotKyAgZm9yIChzaXpl X3QgaSA9IDA7IGkgPCBiYXNlOjpzaXplKGNvbnRleHQucHBjNjQtPnJlZ3MpOyArK2kpIHsKLSsg ICAgTWF5YmVDYXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0LnBwYzY0LT5yZWdz W2ldKTsKLSsgIH0KLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZgotZGlmZiAtLWdpdCBh L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUu aCBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1 cmUuaAotaW5kZXggODExYTcyMDk1Li5mNGY4Mzk4MWQgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJlLmgKLSsrKyBiL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUuaAot QEAgLTQzLDcgKzQzLDEwIEBAIGVudW0gQ1BVQXJjaGl0ZWN0dXJlIHsKLSAgIGtDUFVBcmNoaXRl Y3R1cmVNSVBTRUwsCi0gCi0gICAvLyEgXGJyaWVmIDY0LWJpdCBNSVBTRUwuCi0tICBrQ1BVQXJj aGl0ZWN0dXJlTUlQUzY0RUwKLSsgIGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRFTCwKLSsKLSsgIC8v ISBcYnJpZWYgNjQtYml0IFBQQzY0LgotKyAga0NQVUFyY2hpdGVjdHVyZVBQQzY0Ci0gfTsKLSAK LSB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5jYyBiL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNjCi1pbmRleCBjNzViNTU1NWUuLmFl YWRlNTc3YSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBz aG90L2NwdV9jb250ZXh0LmNjCi0rKysgYi90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9jcHVfY29udGV4dC5jYwotQEAgLTE2OSw2ICsxNjksOCBAQCB1aW50NjRfdCBDUFVD b250ZXh0OjpJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7Ci0gICAgICAgcmV0dXJuIGFybS0+ cGM7Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgotICAgICAgIHJldHVybiBhcm02 NC0+cGM7Ci0rICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0OgotKyAgICAgIHJldHVybiBw cGM2NC0+bmlwOwotICAgICBkZWZhdWx0OgotICAgICAgIE5PVFJFQUNIRUQoKTsKLSAgICAgICBy ZXR1cm4gfjB1bGw7Ci1AQCAtMTg1LDYgKzE4Nyw4IEBAIHVpbnQ2NF90IENQVUNvbnRleHQ6OlN0 YWNrUG9pbnRlcigpIGNvbnN0IHsKLSAgICAgICByZXR1cm4gYXJtLT5zcDsKLSAgICAgY2FzZSBr Q1BVQXJjaGl0ZWN0dXJlQVJNNjQ6Ci0gICAgICAgcmV0dXJuIGFybTY0LT5zcDsKLSsgICAgY2Fz ZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6Ci0rICAgICAgcmV0dXJuIHBwYzY0LT5yZWdzWzFdOwot ICAgICBkZWZhdWx0OgotICAgICAgIE5PVFJFQUNIRUQoKTsKLSAgICAgICByZXR1cm4gfjB1bGw7 Ci1AQCAtMTk2LDYgKzIwMCw3IEBAIGJvb2wgQ1BVQ29udGV4dDo6SXM2NEJpdCgpIGNvbnN0IHsK LSAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlWDg2XzY0OgotICAgICBjYXNlIGtDUFVBcmNoaXRl Y3R1cmVBUk02NDoKLSAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUw6Ci0rICAgIGNh c2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0OgotICAgICAgIHJldHVybiB0cnVlOwotICAgICBjYXNl IGtDUFVBcmNoaXRlY3R1cmVYODY6Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTToKLWRp ZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29u dGV4dC5oIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2NvbnRl eHQuaAotaW5kZXggZmIyM2M0Njc5Li5lZWJlZGU2M2MgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5oCi0rKysgYi90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5oCi1AQCAtMzUyLDYg KzM1MiwyNCBAQCBzdHJ1Y3QgQ1BVQ29udGV4dE1JUFM2NCB7Ci0gICB1aW50NjRfdCBmaXI7Ci0g fTsKLSAKLSsvLyEgXGJyaWVmIEEgY29udGV4dCBzdHJ1Y3R1cmUgY2FycnlpbmcgUFBDNjQgQ1BV IHN0YXRlLgotK3N0cnVjdCBDUFVDb250ZXh0UFBDNjQgewotKyAgdWludDY0X3QgbmlwOwotKyAg dWludDY0X3QgbXNyOwotKyAgdWludDY0X3QgcmVnc1szMl07Ci0rICB1aW50NjRfdCBjY3I7Ci0r ICB1aW50NjRfdCB4ZXI7Ci0rICB1aW50NjRfdCBsbms7Ci0rICB1aW50NjRfdCBjdHI7Ci0rICBk b3VibGUgZnByZWdzWzMyXTsKLSsgIGRvdWJsZSBmcHNjcjsKLSsgIHN0cnVjdCB7Ci0rICAgIHVp bnQxMjhfc3RydWN0IHNhdmVfdnJbMzJdOwotKyAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZzY3I7 Ci0rICAgIHVpbnQzMl90IHNhdmVfdnJzYXZlOwotKyAgfSB2cmVnczsKLSt9OwotKwotIC8vISBc YnJpZWYgQSBjb250ZXh0IHN0cnVjdHVyZSBjYXBhYmxlIG9mIGNhcnJ5aW5nIHRoZSBjb250ZXh0 IG9mIGFueSBzdXBwb3J0ZWQKLSAvLyEgICAgIENQVSBhcmNoaXRlY3R1cmUuCi0gc3RydWN0IENQ VUNvbnRleHQgewotQEAgLTM4Miw2ICs0MDAsNyBAQCBzdHJ1Y3QgQ1BVQ29udGV4dCB7Ci0gICAg IENQVUNvbnRleHRBUk02NCogYXJtNjQ7Ci0gICAgIENQVUNvbnRleHRNSVBTKiBtaXBzZWw7Ci0g ICAgIENQVUNvbnRleHRNSVBTNjQqIG1pcHM2NDsKLSsgICAgQ1BVQ29udGV4dFBQQzY0KiBwcGM2 NDsKLSAgIH07Ci0gfTsKLSAKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5oIGIvdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvY3B1X2NvbnRleHRfbGludXguaAotaW5kZXgg OWY0NmE0ODk3Li5hYTY3N2M0ZWIgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5oCi0rKysgYi90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5o Ci1AQCAtMTUsNiArMTUsNyBAQAotICNpZm5kZWYgQ1JBU0hQQURfU05BUFNIT1RfTElOVVhfQ1BV X0NPTlRFWFRfTElOVVhfSF8KLSAjZGVmaW5lIENSQVNIUEFEX1NOQVBTSE9UX0xJTlVYX0NQVV9D T05URVhUX0xJTlVYX0hfCi0gCi0rI2luY2x1ZGUgPGNzdHJpbmc+Ci0gI2luY2x1ZGUgImJ1aWxk L2J1aWxkX2NvbmZpZy5oIgotICNpbmNsdWRlICJzbmFwc2hvdC9jcHVfY29udGV4dC5oIgotICNp bmNsdWRlICJzbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oIgotQEAgLTE3NCw2ICsxNzUs NzggQEAgdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dE1JUFMoCi0gCi0gI2VuZGlmICAvLyBBUkNI X0NQVV9NSVBTX0ZBTUlMWSB8fCBET1hZR0VOCi0gCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjRfRkFNSUxZKSB8fCBET1hZR0VOCi0rCi0rLy8hIFxicmllZiBJbml0YWxpemVzIGEgQ1BVQ29u dGV4dFBQQzY0IHN0cnVjdHVyZSBmcm9tIG5hdGl2ZSBjb250ZXh0Ci0rLy8hICAgICBzdHJ1Y3R1 cmVzIG9uIExpbnV4LgotKy8vIQotKy8vISBccGFyYW1baW5dIHRocmVhZF9jb250ZXh0IFRoZSBu YXRpdmUgdGhyZWFkIGNvbnRleHQuCi0rLy8hIFxwYXJhbVtpbl0gZmxvYXRfY29udGV4dCBUaGUg bmF0aXZlIGZsb2F0IGNvbnRleHQuCi0rLy8hIFxwYXJhbVtpbl0gdmVjdG9yX2NvbnRleHQgVGhl IG5hdGl2ZSB2ZWN0b3IgY29udGV4dC4KLSsvLyEgXHBhcmFtW291dF0gY29udGV4dCBUaGUgQ1BV Q29udGV4dFBQQzY0IHN0cnVjdHVyZSB0byBpbml0YWxpemUuCi0rdGVtcGxhdGUgPHR5cGVuYW1l IFRyYWl0cz4KLSt2b2lkIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQoCi0rICAgIGNvbnN0IFRo cmVhZENvbnRleHQ6OnQ2NF90JiB0aHJlYWRfY29udGV4dCwKLSsgICAgY29uc3QgRmxvYXRDb250 ZXh0OjpmNjRfdCYgZmxvYXRfY29udGV4dCwKLSsgICAgY29uc3QgVmVjdG9yQ29udGV4dDo6djY0 X3QmIHZlY3Rvcl9jb250ZXh0LAotKyAgICB0eXBlbmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGNv bnRleHQpIHsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5yZWdzLCB0aHJlYWRfY29udGV4dC5ncHIs IHNpemVvZihjb250ZXh0LT5yZWdzKSk7Ci0rICBjb250ZXh0LT5uaXAgPSB0aHJlYWRfY29udGV4 dC5uaXA7Ci0rICBjb250ZXh0LT5tc3IgPSB0aHJlYWRfY29udGV4dC5tc3I7Ci0rICBjb250ZXh0 LT5jY3IgPSB0aHJlYWRfY29udGV4dC5jY3I7Ci0rICBjb250ZXh0LT54ZXIgPSB0aHJlYWRfY29u dGV4dC54ZXI7Ci0rICBjb250ZXh0LT5sbmsgPSB0aHJlYWRfY29udGV4dC5sbms7Ci0rICBjb250 ZXh0LT5jdHIgPSB0aHJlYWRfY29udGV4dC5jdHI7Ci0rCi0rICBtZW1jcHkoY29udGV4dC0+ZnBy ZWdzLCBmbG9hdF9jb250ZXh0LmZwcmVncywgc2l6ZW9mKGNvbnRleHQtPmZwcmVncykpOwotKyAg Y29udGV4dC0+ZnBzY3IgPSBmbG9hdF9jb250ZXh0LmZwc2NyOwotKwotKyAgZm9yICh1aW50OF90 IGkgPSAwOyBpIDwgMzI7IGkrKykgewotKyAgICBjb250ZXh0LT52cmVncy5zYXZlX3ZyW2ldID0g ewotKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVswXSkgPDwgMzIp IHwKLSsgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsxXSwKLSsgICAgICAoKCh1aW50 NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMl0pIDw8IDMyKSB8Ci0rICAgICAgICB2ZWN0 b3JfY29udGV4dC52cnJlZ3NbaV1bM10KLSsgICAgfTsKLSsgIH0KLSsgIGNvbnRleHQtPnZyZWdz LnNhdmVfdnJzYXZlID0gdmVjdG9yX2NvbnRleHQudnJzYXZlOwotKyAgY29udGV4dC0+dnJlZ3Mu c2F2ZV92c2NyID0gezAsICh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52c2NyLnZzY3Jfd29yZH07 Ci0rfQotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmFpdHM+Ci0rdm9pZCBJbml0aWFsaXplQ1BV Q29udGV4dFBQQzY0KAotKyAgICBjb25zdCBTaWduYWxUaHJlYWRDb250ZXh0NjQgJnRocmVhZF9j b250ZXh0LAotKyAgICBjb25zdCBTaWduYWxGbG9hdENvbnRleHQ2NCAmZmxvYXRfY29udGV4dCwK LSsgICAgY29uc3QgU2lnbmFsVmVjdG9yQ29udGV4dDY0ICZ2ZWN0b3JfY29udGV4dCwKLSsgICAg dHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBjb250ZXh0KSB7Ci0rCi0rICBtZW1jcHkoY29u dGV4dC0+cmVncywgdGhyZWFkX2NvbnRleHQucmVncywgc2l6ZW9mKGNvbnRleHQtPnJlZ3MpKTsK LSsgIGNvbnRleHQtPm5pcCA9IHRocmVhZF9jb250ZXh0Lm5pcDsKLSsgIGNvbnRleHQtPm1zciA9 IHRocmVhZF9jb250ZXh0Lm1zcjsKLSsgIGNvbnRleHQtPmNjciA9IHRocmVhZF9jb250ZXh0LmNj cjsKLSsgIGNvbnRleHQtPnhlciA9IHRocmVhZF9jb250ZXh0LnhlcjsKLSsgIGNvbnRleHQtPmxu ayA9IHRocmVhZF9jb250ZXh0LmxuazsKLSsgIGNvbnRleHQtPmN0ciA9IHRocmVhZF9jb250ZXh0 LmN0cjsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5mcHJlZ3MsIGZsb2F0X2NvbnRleHQucmVncywg c2l6ZW9mKGNvbnRleHQtPmZwcmVncykpOwotKyAgY29udGV4dC0+ZnBzY3IgPSBmbG9hdF9jb250 ZXh0LmZwc2NyOwotKwotKyAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgMzI7IGkrKykgewotKyAg ICBjb250ZXh0LT52cmVncy5zYXZlX3ZyW2ldID0gewotKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rv cl9jb250ZXh0LnZycmVnc1tpXVswXSkgPDwgMzIpIHwKLSsgICAgICAgIHZlY3Rvcl9jb250ZXh0 LnZycmVnc1tpXVsxXSwKLSsgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3Nb aV1bMl0pIDw8IDMyKSB8Ci0rICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bM10KLSsg ICAgfTsKLSsgIH0KLSsgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnJzYXZlID0gdmVjdG9yX2NvbnRl eHQudnJzYXZlOwotKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92c2NyID0gezAsICh1aW50NjRfdCl2 ZWN0b3JfY29udGV4dC52c2NyLnZzY3Jfd29yZH07Ci0rfQotKwotKwotKyNlbmRpZgotKwotIH0g IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAotIAotZGlm ZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2Rl YnVnX3JlbmRlenZvdXNfdGVzdC5jYyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYwotaW5kZXggZDMyYmQxOTM3Li4y ZGQ1MzhjMmIgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9kZWJ1Z19yZW5kZXp2b3VzX3Rlc3QuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYwot QEAgLTE5Miw2ICsxOTIsOCBAQCB2b2lkIFRlc3RBZ2FpbnN0VGFyZ2V0KFB0cmFjZUNvbm5lY3Rp b24qIGNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgICAgIGRldmljZSA9PSAwICYmIGlub2RlID09 IDAgJiYgbWFwcGluZ19uYW1lID09ICJbdmRzb10iOwotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4 NikKLSAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtQcmVmaXhbXSA9ICJsaW51eC1n YXRlLnNvLiI7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSsgICAgICAgICAgc3Rh dGljIGNvbnN0ZXhwciBjaGFyIGtQcmVmaXhbXSA9ICJsaW51eC12ZHNvNjQuc28uIjsKLSAjZWxz ZQotICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIga1ByZWZpeFtdID0gImxpbnV4LXZk c28uc28uIjsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguY2MgYi90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3Rf bGludXguY2MKLWluZGV4IGNkNDBiM2IxMi4uNmJjZjIzYjZmIDEwMDY0NAotLS0tIGEvdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90 X2xpbnV4LmNjCi0rKysgYi90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9s aW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguY2MKLUBAIC0zMjMsNiArMzIzLDY5IEBAIGJv b2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigK LSAgICAgICByZWFkZXIsIGNvbnRleHRfYWRkcmVzcywgY29udGV4dF8ubWlwczY0KTsKLSB9Ci0g Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rCi0rdGVtcGxhdGUgPHR5 cGVuYW1lIFRyYWl0cz4KLStzdGF0aWMgYm9vbCBSZWFkQ29udGV4dChQcm9jZXNzUmVhZGVyTGlu dXgqIHJlYWRlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVzcyBjb250 ZXh0X2FkZHJlc3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHJhaXRzOjpD UFVDb250ZXh0KiBkZXN0X2NvbnRleHQpIHsKLSsgIGNvbnN0IFByb2Nlc3NNZW1vcnkqIG1lbW9y eSA9IHJlYWRlci0+TWVtb3J5KCk7Ci0rCi0rICBMaW51eFZNQWRkcmVzcyBncF9yZWdzX2FkZHJl c3MgPSBjb250ZXh0X2FkZHJlc3MgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBncF9yZWdz KTsKLSsKLSsgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVGhyZWFkQ29udGV4dCB0aHJlYWRfY29u dGV4dDsKLSsgIGlmICghbWVtb3J5LT5SZWFkKGdwX3JlZ3NfYWRkcmVzcywgc2l6ZW9mKHRocmVh ZF9jb250ZXh0KSwgJnRocmVhZF9jb250ZXh0KSkgewotKyAgICBMT0coRVJST1IpIDw8ICJDb3Vs ZG4ndCByZWFkIGdwX3JlZ3MhIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKwotKyAgTGlu dXhWTUFkZHJlc3MgZnBfcmVnc19hZGRyZXNzID0gY29udGV4dF9hZGRyZXNzICsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkg KwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUg VHJhaXRzOjpNQ29udGV4dCwgZnBfcmVncyk7Ci0rCi0rICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25h bEZsb2F0Q29udGV4dCBmcF9jb250ZXh0OwotKyAgaWYgKCFtZW1vcnktPlJlYWQoZnBfcmVnc19h ZGRyZXNzLCBzaXplb2YoZnBfY29udGV4dCksICZmcF9jb250ZXh0KSkgewotKyAgICBMT0coRVJS T1IpIDw8ICJDb3VsZG4ndCByZWFkIGZwX3JlZ3MhIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAg fQotKwotKyAgTGludXhWTUFkZHJlc3Mgdl9yZWdzX3B0cl9hZGRyZXNzID0gY29udGV4dF9hZGRy ZXNzICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRl eHQsIG1jb250ZXh0KSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dG9mKHR5cGVuYW1lIFRyYWl0czo6TUNvbnRleHQsIHZteF9yZXNlcnZlKSArIDg7Ci0rCi0rICB0 eXBlbmFtZSBUcmFpdHM6OlNpZ25hbFZlY3RvckNvbnRleHQgdl9jb250ZXh0OwotKyAgaWYgKCFt ZW1vcnktPlJlYWQodl9yZWdzX3B0cl9hZGRyZXNzLCBzaXplb2Yodl9jb250ZXh0KSwgJnZfY29u dGV4dCkpIHsKLSsgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3QgcmVhZCB2X3JlZ3MhIjsKLSsg ICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKwotKyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NDxD b250ZXh0VHJhaXRzNjQ+KHRocmVhZF9jb250ZXh0LCBmcF9jb250ZXh0LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2X2NvbnRleHQsIGRlc3RfY29udGV4dCk7Ci0rCi0rICByZXR1cm4g dHJ1ZTsKLSt9Ci0rCi0rdGVtcGxhdGU8PgotK2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6 UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKLSsgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiBy ZWFkZXIsCi0rICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgewotKyAgY29udGV4 dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVjdHVyZVBQQzY0OwotKyAgY29udGV4dF8ucHBj NjQgPSAmY29udGV4dF91bmlvbl8ucHBjNjQ7Ci0rCi0rICByZXR1cm4gaW50ZXJuYWw6OlJlYWRD b250ZXh0PENvbnRleHRUcmFpdHM2ND4oCi0rICAgICAgcmVhZGVyLCBjb250ZXh0X2FkZHJlc3Ms IGNvbnRleHRfLnBwYzY0KTsKLSt9Ci0rCi0rdGVtcGxhdGU8PgotK2Jvb2wgRXhjZXB0aW9uU25h cHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czMyPigKLSsgICAgUHJvY2Vzc1Jl YWRlckxpbnV4KiByZWFkZXIsCi0rICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykg ewotKyAgLy8gUFBDNjQgaXMgNjQtYml0Ci0rICByZXR1cm4gZmFsc2U7Ci0rfQotKwotICNlbmRp ZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotIAotIGJvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51 eDo6SW5pdGlhbGl6ZShQcm9jZXNzUmVhZGVyTGludXgqIHByb2Nlc3NfcmVhZGVyLAotZGlmZiAt LWdpdCBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2Vw dGlvbl9zbmFwc2hvdF9saW51eC5oIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25h cHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmgKLWluZGV4IGVhMGNkMjEwNi4u ZTQyZGY1MjBmIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25h cHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmgKLSsrKyBiL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51 eC5oCi1AQCAtODQsNiArODQsOCBAQCBjbGFzcyBFeGNlcHRpb25TbmFwc2hvdExpbnV4IGZpbmFs IDogcHVibGljIEV4Y2VwdGlvblNuYXBzaG90IHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKQotICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7Ci0gICAgIENQVUNvbnRleHRN SVBTNjQgbWlwczY0OwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAg ICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7Ci0gI2VuZGlmCi0gICB9IGNvbnRleHRfdW5pb25fOwot ICAgQ1BVQ29udGV4dCBjb250ZXh0XzsKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXhfdGVzdC5j YyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlv bl9zbmFwc2hvdF9saW51eF90ZXN0LmNjCi1pbmRleCBjMTcxNzBiNDMuLmI2YTcxNGNjNiAxMDA2 NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4 Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNjCi0rKysgYi90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXhfdGVzdC5j YwotQEAgLTI5Niw3ICsyOTYsMjggQEAgdm9pZCBFeHBlY3RDb250ZXh0KGNvbnN0IENQVUNvbnRl eHQmIGFjdHVhbCwgY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgZXhwZWN0ZWQpIHsKLSAgICAgICAg ICAgICAwKTsKLSAjdW5kZWYgQ1BVX0FSQ0hfTkFNRQotIH0KLSsjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX1BQQzY0X0ZBTUlMWSkKLSt1c2luZyBOYXRpdmVDUFVDb250ZXh0ID0gdWNvbnRleHRfdDsK LSsKLSt2b2lkIEluaXRpYWxpemVDb250ZXh0KE5hdGl2ZUNQVUNvbnRleHQqIGNvbnRleHQpIHsK LSsgIGZvciAoc2l6ZV90IHJlZyA9IDA7IHJlZyA8IDMyOyArK3JlZykgewotKyAgICBjb250ZXh0 LT51Y19tY29udGV4dC5ncF9yZWdzW3JlZ10gPSByZWc7Ci0rICB9Ci0rCi0rICBtZW1zZXQoJmNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3MsIDQ0LAotKyAgICAgIHNpemVvZihjb250ZXh0LT51 Y19tY29udGV4dC5mcF9yZWdzKSk7Ci0rfQotIAotK3ZvaWQgRXhwZWN0Q29udGV4dChjb25zdCBD UFVDb250ZXh0JiBhY3R1YWwsIGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGV4cGVjdGVkKSB7Ci0r ICBFWFBFQ1RfRVEoYWN0dWFsLmFyY2hpdGVjdHVyZSwga0NQVUFyY2hpdGVjdHVyZVBQQzY0KTsK LSsKLSsgIGZvciAoc2l6ZV90IHJlZyA9IDA7IHJlZyA8IDMyOyArK3JlZykgewotKyAgICBFWFBF Q1RfRVEoYWN0dWFsLnBwYzY0LT5yZWdzW3JlZ10sIGV4cGVjdGVkLnVjX21jb250ZXh0LmdwX3Jl Z3NbcmVnXSk7Ci0rICB9Ci0rCi0rICBFWFBFQ1RfRVEobWVtY21wKGFjdHVhbC5wcGM2NC0+ZnBy ZWdzLCBleHBlY3RlZC51Y19tY29udGV4dC5mcF9yZWdzLAotKyAgICAgICAgICAgIHNpemVvZihh Y3R1YWwucHBjNjQtPmZwcmVncykpLCAwKTsKLSt9Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAj ZW5kaWYKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCi1pbmRleCBlZTI0 NmU4YmMuLjk1NTVkY2UwNCAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCi0rKysgYi90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51 eC5jYwotQEAgLTEwOCw2ICsxMDgsOCBAQCB2b2lkIFByb2Nlc3NSZWFkZXJMaW51eDo6VGhyZWFk OjpJbml0aWFsaXplU3RhY2soUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIpIHsKLSAjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgc3RhY2tfcG9pbnRlciA9IHJlYWRlci0+ SXM2NEJpdCgpID8gdGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0LnJlZ3NbMjldCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aHJlYWRfaW5mby50aHJlYWRfY29u dGV4dC50MzIucmVnc1syOV07Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp Ci0rICBzdGFja19wb2ludGVyID0gdGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0Lmdwclsx XTsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZgotZGlmZiAtLWdpdCBhL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmggYi90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4 dC5oCi1pbmRleCAxMTAwMjQ2ODAuLmExZjJkYTI1OSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKLSsrKyBi L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250 ZXh0LmgKLUBAIC00MjIsNiArNDIyLDg5IEBAIHN0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNvbnRl eHQ8Q29udGV4dFRyYWl0czY0PiwgbWNvbnRleHQuZnByZWdzKSA9PQotICAgICAgICAgICAgICAg ImNvbnRleHQgb2Zmc2V0IG1pc21hdGNoIik7Ci0gI2VuZGlmCi0gCi0rI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rCi0rc3RydWN0IFNpZ25hbFRocmVhZENvbnRleHQ2NCB7 Ci0rICB1aW50NjRfdCByZWdzWzMyXTsKLSsgIHVpbnQ2NF90IG5pcDsKLSsgIHVpbnQ2NF90IG1z cjsKLSsgIHVpbnQ2NF90IG9yaWdfcjM7Ci0rICB1aW50NjRfdCBjdHI7Ci0rICB1aW50NjRfdCBs bms7Ci0rICB1aW50NjRfdCB4ZXI7Ci0rICB1aW50NjRfdCBjY3I7Ci0rICB1aW50NjRfdCBzb2Z0 ZTsKLSsgIHVpbnQ2NF90IHRyYXA7Ci0rICB1aW50NjRfdCBkYXI7Ci0rICB1aW50NjRfdCBkc2lz cjsKLSsgIHVpbnQ2NF90IHJlc3VsdDsKLSsgIHVpbnQ2NF90IGRzY3I7Ci0rICB1aW50NjRfdCBm cHIwWzNdOwotK307Ci0rCi0rc3RydWN0IFNpZ25hbEZsb2F0Q29udGV4dDY0IHsKLSsgIGRvdWJs ZSByZWdzWzMyXTsKLSsgIGRvdWJsZSBmcHNjcjsKLSt9OwotKwotK3N0cnVjdCBTaWduYWxWZWN0 b3JDb250ZXh0NjQgewotKyAgaW50MzJfdCB2cnJlZ3NbMzJdWzRdOwotKyAgc3RydWN0IHsKLSsg ICAgaW50MzJfdCBfX3BhZFszXTsKLSsgICAgaW50MzJfdCB2c2NyX3dvcmQ7Ci0rICB9IHZzY3I7 Ci0rICBpbnQzMl90IHZyc2F2ZTsKLSsgIGludDMyX3QgX19wYWRbM107Ci0rfSBfX2F0dHJpYnV0 ZV9fKChfX2FsaWduZWRfXygxNikpKTsKLSsKLSsKLSsjcHJhZ21hIHBhY2socG9wKQotK3N0cnVj dCBNQ29udGV4dDY0IHsKLSsgIHVpbnQ2NF90IHJlc2VydmVkWzRdOwotKyAgaW50MzJfdCBzaWdu YWw7Ci0rICBpbnQzMl90IF9fcGFkMDsKLSsgIHVpbnQ2NF90IGhhbmRsZXI7Ci0rICB1aW50NjRf dCBvbGRtYXNrOwotKyAgdWludDY0X3QgcHRfcmVnc19wdHI7Ci0rICBTaWduYWxUaHJlYWRDb250 ZXh0NjQgZ3BfcmVnczsKLSsgIFNpZ25hbEZsb2F0Q29udGV4dDY0ICBmcF9yZWdzOwotKyAgU2ln bmFsVmVjdG9yQ29udGV4dDY0ICp2X3JlZ3M7Ci0rICBpbnQ2NF90IHZteF9yZXNlcnZlWzY5XTsK LSt9OwotKwotK3N0cnVjdCBDb250ZXh0VHJhaXRzNjQgOiBwdWJsaWMgVHJhaXRzNjQgewotKyAg dXNpbmcgTUNvbnRleHQgPSBNQ29udGV4dDY0OwotKyAgdXNpbmcgU2lnbmFsVGhyZWFkQ29udGV4 dCA9IFNpZ25hbFRocmVhZENvbnRleHQ2NDsKLSsgIHVzaW5nIFNpZ25hbEZsb2F0Q29udGV4dCA9 IFNpZ25hbEZsb2F0Q29udGV4dDY0OwotKyAgdXNpbmcgU2lnbmFsVmVjdG9yQ29udGV4dCA9IFNp Z25hbFZlY3RvckNvbnRleHQ2NDsKLSsgIHVzaW5nIENQVUNvbnRleHQgPSBDUFVDb250ZXh0UFBD NjQ7Ci0rfTsKLSsKLStzdHJ1Y3QgQ29udGV4dFRyYWl0czMyIDogcHVibGljIFRyYWl0czMyIHt9 OwotKwotK3N0cnVjdCBVQ29udGV4dCB7Ci0rICB1aW50NjRfdCBmbGFnczsKLSsgIHVpbnQ2NF90 IGxpbms7Ci0rICBTaWduYWxTdGFjazxDb250ZXh0VHJhaXRzNjQ+IHN0YWNrOwotKyAgU2lnc2V0 PENvbnRleHRUcmFpdHM2ND4gc2lnbWFzazsKLSsgIE1Db250ZXh0NjQgbWNvbnRleHQ7Ci0rfTsK LSsjcHJhZ21hIHBhY2socHVzaCwgMSkKLSsKLStzdGF0aWNfYXNzZXJ0KHNpemVvZihVQ29udGV4 dCkgPT0gc2l6ZW9mKHVjb250ZXh0X3QpLAotKyAgICAgICAgICAgICAgInVjb250ZXh0X3Qgc2l6 ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQoc2l6ZW9mKE1Db250ZXh0NjQpID09IHNpemVv ZihtY29udGV4dF90KSwKLSsgICAgICAgICAgICAgICJtY29udGV4dF90IHNpemUgbWlzbWF0Y2gi KTsKLStzdGF0aWNfYXNzZXJ0KHNpemVvZihTaWduYWxUaHJlYWRDb250ZXh0NjQpID09IHNpemVv ZihncmVnc2V0X3QpLAotKyAgICAgICAgICAgICAgImdyZWdzZXRfdCBzaXplIG1pc21hdGNoIik7 Ci0rc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmFsRmxvYXRDb250ZXh0NjQpID09IHNpemVvZihm cHJlZ3NldF90KSwKLSsgICAgICAgICAgICAgICJmcHJlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsK LStzdGF0aWNfYXNzZXJ0KHNpemVvZihTaWduYWxWZWN0b3JDb250ZXh0NjQpID09IHNpemVvZih2 cnJlZ3NldF90KSwKLSsgICAgICAgICAgICAgICJ2cnJlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsK LStzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgPT0KLSsgICAgICAg ICAgICAgIG9mZnNldG9mKHVjb250ZXh0X3QsIHVjX21jb250ZXh0KSwgIm1jb250ZXh0IG9mZnNl dCBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQob2Zmc2V0b2YoTUNvbnRleHQ2NCwgZ3BfcmVn cykgPT0KLSsgICAgICAgICAgICAgIG9mZnNldG9mKG1jb250ZXh0X3QsIGdwX3JlZ3MpLCAiZ3Bf cmVncyBvZmZzZXQgbWlzbWF0Y2giKTsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAg Ly8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3N5c3RlbV9zbmFwc2hvdF9saW51eC5jYyBiL3RoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3N5c3RlbV9zbmFwc2hvdF9s aW51eC5jYwotaW5kZXggYTk5ZGEzZTRiLi4wM2I5NzMwODMgMTAwNjQ0Ci0tLS0gYS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zeXN0ZW1fc25hcHNob3RfbGlu dXguY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4 L3N5c3RlbV9zbmFwc2hvdF9saW51eC5jYwotQEAgLTIwNCw2ICsyMDQsOCBAQCBDUFVBcmNoaXRl Y3R1cmUgU3lzdGVtU25hcHNob3RMaW51eDo6R2V0Q1BVQXJjaGl0ZWN0dXJlKCkgY29uc3Qgewot ICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICByZXR1cm4gcHJvY2Vzc19y ZWFkZXJfLT5JczY0Qml0KCkgPyBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGtDUFVBcmNoaXRlY3R1cmVNSVBTRUw7Ci0rI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICByZXR1cm4ga0NQVUFyY2hpdGVj dHVyZVBQQzY0OwotICNlbHNlCi0gI2Vycm9yIHBvcnQgdG8geW91ciBhcmNoaXRlY3R1cmUKLSAj ZW5kaWYKLUBAIC0yMTksNiArMjIxLDkgQEAgdWludDMyX3QgU3lzdGVtU25hcHNob3RMaW51eDo6 Q1BVUmV2aXNpb24oKSBjb25zdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkKLSAgIC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKLSAgIHJldHVybiAwOwotKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgLy8gTm90IHlldCBpbXBsZW1lbnRl ZCBvbiBQUEM2NAotKyAgcmV0dXJuIDA7Ci0gI2Vsc2UKLSAjZXJyb3IgcG9ydCB0byB5b3VyIGFy Y2hpdGVjdHVyZQotICNlbmRpZgotQEAgLTIzOSw2ICsyNDQsOSBAQCBzdGQ6OnN0cmluZyBTeXN0 ZW1TbmFwc2hvdExpbnV4OjpDUFVWZW5kb3IoKSBjb25zdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkKLSAgIC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKLSAgIHJl dHVybiBzdGQ6OnN0cmluZygpOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQotKyAgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBvbiBQUEM2NAotKyAgcmV0dXJuIHN0ZDo6c3Ry aW5nKCk7Ci0gI2Vsc2UKLSAjZXJyb3IgcG9ydCB0byB5b3VyIGFyY2hpdGVjdHVyZQotICNlbmRp ZgotQEAgLTM3Miw2ICszODAsOSBAQCBib29sIFN5c3RlbVNuYXBzaG90TGludXg6Ok5YRW5hYmxl ZCgpIGNvbnN0IHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgLy8g Tm90IGltcGxlbWVudGFibGUgb24gTUlQUwotICAgcmV0dXJuIGZhbHNlOwotKyNlbGlmIGRlZmlu ZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBvbiBQ UEM2NAotKyAgcmV0dXJuIGZhbHNlOwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAv LyBBUkNIX0NQVV9YODZfRkFNSUxZCi1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGVzdF9tb2R1bGVzLmNjIGIvdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGVzdF9tb2R1bGVzLmNjCi1pbmRleCBiMjQ1 MGMyMDYuLjdiYTc4YjJhZSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3Rlc3RfbW9kdWxlcy5jYwotKysrIGIvdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGVzdF9tb2R1bGVzLmNjCi1AQCAtMTEwLDYg KzExMCw4IEBAIGJvb2wgV3JpdGVUZXN0TW9kdWxlKGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBtb2R1 bGVfcGF0aCwKLSAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVNX0FBUkNINjQ7Ci0gI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9NSVBTRUwpIHx8IGRlZmluZWQoQVJDSF9DUFVfTUlQUzY0RUwpCi0g ICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9NSVBTOwotKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjQpCi0rICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9QUEM2NDsKLSAjZW5kaWYK LSAKLSAgIG1vZHVsZS5laGRyLmVfdmVyc2lvbiA9IEVWX0NVUlJFTlQ7Ci1kaWZmIC0tZ2l0IGEv dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBz aG90X2xpbnV4LmNjIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGlu dXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjCi1pbmRleCBlM2UyYmViZGQuLjhlZjQzNzUyZSAx MDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4 L3RocmVhZF9zbmFwc2hvdF9saW51eC5jYwotKysrIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjCi1AQCAtMTg2LDYg KzE4NiwxNCBAQCBib29sIFRocmVhZFNuYXBzaG90TGludXg6OkluaXRpYWxpemUoUHJvY2Vzc1Jl YWRlckxpbnV4KiBwcm9jZXNzX3JlYWRlciwKLSAgICAgICAgIHRocmVhZC50aHJlYWRfaW5mby5m bG9hdF9jb250ZXh0LmYzMiwKLSAgICAgICAgIGNvbnRleHRfLm1pcHNlbCk7Ci0gICB9Ci0rI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICBjb250ZXh0Xy5hcmNoaXRlY3R1 cmUgPSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ7Ci0rICBjb250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0 X3VuaW9uXy5wcGM2NDsKLSsgIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQ8Q29udGV4dFRyYWl0 czY0PigKLSsgICAgICB0aHJlYWQudGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0LAotKyAg ICAgIHRocmVhZC50aHJlYWRfaW5mby5mbG9hdF9jb250ZXh0LmY2NCwKLSsgICAgICB0aHJlYWQu dGhyZWFkX2luZm8udmVjdG9yX2NvbnRleHQudjY0LAotKyAgICAgIGNvbnRleHRfLnBwYzY0KTsK LSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZgotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5o IGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3Nu YXBzaG90X2xpbnV4LmgKLWluZGV4IDQ0Y2M2ZjZkOS4uZDQxMzY0NjFlIDEwMDY0NAotLS0tIGEv dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBz aG90X2xpbnV4LmgKLSsrKyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5oCi1AQCAtNjgsNiArNjgsOCBAQCBjbGFzcyBU aHJlYWRTbmFwc2hvdExpbnV4IGZpbmFsIDogcHVibGljIFRocmVhZFNuYXBzaG90IHsKLSAjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgICBDUFVDb250ZXh0TUlQUyBtaXBz ZWw7Ci0gICAgIENQVUNvbnRleHRNSVBTNjQgbWlwczY0OwotKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQotKyAgICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7Ci0gI2Vsc2UKLSAj ZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLS0tLSBhL3RoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbmV0L2h0dHBfdHJhbnNwb3J0X2xpYmN1cmwu Y2MKLSsrKyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbmV0L2h0dHBfdHJh bnNwb3J0X2xpYmN1cmwuY2MKLUBAIC0yMzYsNiArMjM2LDEyIEBACi0gI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9CSUdfRU5ESUFOKQotICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIgYXJjaFtdID0g ImFhcmNoNjRfYmUiOwotICNlbmRpZgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsj aWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotKyAgICBzdGF0aWMgY29uc3RleHBy IGNoYXIgYXJjaFtdID0gInBwYzY0bGUiOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfQklHX0VO RElBTikKLSsgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGFyY2hbXSA9ICJwcGM2NCI7Ci0rI2Vu ZGlmCi0gI2Vsc2UKLSAjZXJyb3IgUG9ydAotICNlbmRpZgotZGlmZiAtLWdpdCBhL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3ZlY3Rvci5jYyBiL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3ZlY3Rvci5j YwotaW5kZXggZDNkNWViZGZiLi4zZmQ3MzBjYjUgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKLSsrKyBiL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3ZlY3Rvci5j YwotQEAgLTU2LDYgKzU2LDExIEBAIGJvb2wgQXV4aWxpYXJ5VmVjdG9yOjpSZWFkKFB0cmFjZUNv bm5lY3Rpb24qIGNvbm5lY3Rpb24pIHsKLSAgICAgaWYgKHR5cGUgPT0gQVRfSUdOT1JFKSB7Ci0g ICAgICAgY29udGludWU7Ci0gICAgIH0KLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCi0rICAgIGlmICh0eXBlID09IEFUX0lHTk9SRVBQQykgewotKyAgICAgIGNvbnRpbnVlOwot KyAgICB9Ci0rI2VuZGlmCi0gICAgIGlmICghTWFwSW5zZXJ0T3JSZXBsYWNlKCZ2YWx1ZXNfLCB0 eXBlLCB2YWx1ZSwgbnVsbHB0cikpIHsKLSAgICAgICBMT0coRVJST1IpIDw8ICJkdXBsaWNhdGUg YXV4diBlbnRyeSI7Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotZGlmZiAtLWdpdCBhL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlci5jYyBiL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlci5jYwotaW5kZXggNTU3ZTBkMzYz Li4wOGFlNDM0YjggMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91 dGlsL2xpbnV4L3B0cmFjZXIuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbGludXgvcHRyYWNlci5jYwotQEAgLTM5OCw2ICszOTgsNjQgQEAgYm9vbCBHZXRUaHJl YWRBcmVhNjQocGlkX3QgdGlkLAotICAgcmV0dXJuIHRydWU7Ci0gfQotIAotKyNlbGlmIGRlZmlu ZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKy8vIFBQQzY0IGhhcyBoYWQgSEFWRV9BUkNIX1RS QUNFSE9PSyBzZXQgc2luY2UgMi42LjI3IChldmVuIGJlZm9yZSB4ODYgaGFkIGl0KS4KLSsvLyBU aGF0IG1lYW5zIHdlIGNhbiBzaW1wbHkgdXNlIFBUUkFDRV9HRVRSRUdFU0VULgotKwotK3RlbXBs YXRlIDx0eXBlbmFtZSBEZXN0aW5hdGlvbj4KLStib29sIEdldFJlZ2lzdGVyU2V0KHBpZF90IHRp ZCwgaW50IHNldCwgRGVzdGluYXRpb24qIGRlc3QsIGJvb2wgY2FuX2xvZykgewotKyAgaW92ZWMg aW92OwotKyAgaW92Lmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZGVzdCk7Ci0r ICBpb3YuaW92X2xlbiA9IHNpemVvZigqZGVzdCk7Ci0rICBpZiAocHRyYWNlKFBUUkFDRV9HRVRS RUdTRVQsIHRpZCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2V0KSwgJmlvdikgIT0gMCkgewot KyAgICBQTE9HX0lGKEVSUk9SLCBjYW5fbG9nKSA8PCAicHRyYWNlIjsKLSsgICAgcmV0dXJuIGZh bHNlOwotKyAgfQotKyAgaWYgKGlvdi5pb3ZfbGVuICE9IHNpemVvZigqZGVzdCkpIHsKLSsgICAg TE9HX0lGKEVSUk9SLCBjYW5fbG9nKSA8PCAiVW5leHBlY3RlZCByZWdpc3RlcnMgc2l6ZSI7Ci0r ICAgIHJldHVybiBmYWxzZTsKLSsgIH0KLSsgIHJldHVybiB0cnVlOwotK30KLSsKLStib29sIEdl dFZlY3RvclJlZ2lzdGVyczY0KHBpZF90IHRpZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg IFZlY3RvckNvbnRleHQqIGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBib29s IGNhbl9sb2cpIHsKLSsgIHJldHVybiBHZXRSZWdpc3RlclNldCh0aWQsIE5UX1BQQ19WTVgsICZj b250ZXh0LT52NjQsIGNhbl9sb2cpOwotK30KLSsKLStib29sIEdldEZsb2F0aW5nUG9pbnRSZWdp c3RlcnM2NChwaWRfdCB0aWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxv YXRDb250ZXh0KiBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv b2wgY2FuX2xvZykgewotKyAgcmV0dXJuIEdldFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFJGUFJFRywg JmNvbnRleHQtPmY2NCwgY2FuX2xvZyk7Ci0rfQotKwotK2Jvb2wgR2V0VGhyZWFkQXJlYTY0KHBp ZF90IHRpZCwKLSsgICAgICAgICAgICAgICAgICAgICBjb25zdCBUaHJlYWRDb250ZXh0JiBjb250 ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgIExpbnV4Vk1BZGRyZXNzKiBhZGRyZXNzLAotKyAg ICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgewotKyAgLy8gUFBDNjQgZG9lc24ndCBo YXZlIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgc2luY2UgdGhlIHRocmVhZCBwb2ludGVyCi0rICAv LyBpcyBzdG9yZWQgaW4gR1BSIDEzLgotKyAgVGhyZWFkQ29udGV4dDo6dDY0X3QgdGM7Ci0rICBp ZiAoIUdldFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFJTVEFUVVMsICZ0YywgY2FuX2xvZykpIHsKLSsg ICAgTE9HX0lGKEVSUk9SLCBjYW5fbG9nKSA8PCAiVW5hYmxlIHRvIGdldCB0aHJlYWQgcG9pbnRl ciEiOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICAqYWRkcmVzcyA9IHRjLmdwclsx M107Ci0rCi0rICByZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0rLy8gU3R1YnMgZm9yIDMyLWJpdCBmdW5j dGlvbnMgbm90IGFwcGxpY2FibGUgb24gUFBDNjQKLStib29sIEdldEZsb2F0aW5nUG9pbnRSZWdp c3RlcnMzMihwaWRfdCB0aWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxv YXRDb250ZXh0KiBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv b2wgY2FuX2xvZykgeyByZXR1cm4gZmFsc2U7IH0KLStib29sIEdldFRocmVhZEFyZWEzMihwaWRf dCB0aWQsCi0rICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGhyZWFkQ29udGV4dCAmY29udGV4 dCwKLSsgICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVzcyAqYWRkcmVzcywKLSsgICAg ICAgICAgICAgICAgICAgICBib29sIGNhbl9sb2cpIHsgcmV0dXJuIGZhbHNlOyB9Ci0rCi0gI2Vs c2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLUBAIC00 OTQsNiArNTUyLDkgQEAgYm9vbCBQdHJhY2VyOjpHZXRUaHJlYWRJbmZvKHBpZF90IHRpZCwgVGhy ZWFkSW5mbyogaW5mbykgewotICAgaWYgKGlzXzY0X2JpdF8pIHsKLSAgICAgcmV0dXJuIEdldEdl bmVyYWxQdXJwb3NlUmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+dGhyZWFkX2NvbnRleHQsIGNhbl9s b2dfKSAmJgotICAgICAgICAgICAgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHRpZCwgJmlu Zm8tPmZsb2F0X2NvbnRleHQsIGNhbl9sb2dfKSAmJgotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQ QzY0X0ZBTUlMWSkKLSsgICAgICAgICAgIEdldFZlY3RvclJlZ2lzdGVyczY0KHRpZCwgJmluZm8t PnZlY3Rvcl9jb250ZXh0LCBjYW5fbG9nXykgJiYKLSsjZW5kaWYKLSAgICAgICAgICAgIEdldFRo cmVhZEFyZWE2NCh0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGhyZWFk X2NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZm8tPnRocmVhZF9zcGVj aWZpY19kYXRhX2FkZHJlc3MsCi1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCi1pbmRleCA1YjU1YzI0YTcuLmRlYTBkMWYz OSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgv dGhyZWFkX2luZm8uaAotKysrIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9s aW51eC90aHJlYWRfaW5mby5oCi1AQCAtMjgsNiArMjgsMTAgQEAKLSAjaW5jbHVkZSA8YW5kcm9p ZC9hcGktbGV2ZWwuaD4KLSAjZW5kaWYKLSAKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9G QU1JTFkpCi0rI2luY2x1ZGUgPHN5cy91Y29udGV4dC5oPgotKyNlbmRpZgotKwotIG5hbWVzcGFj ZSBjcmFzaHBhZCB7Ci0gCi0gLy8hIFxicmllZiBUaGUgc2V0IG9mIGdlbmVyYWwgcHVycG9zZSBy ZWdpc3RlcnMgZm9yIGFuIGFyY2hpdGVjdHVyZSBmYW1pbHkuCi1AQCAtNzksNiArODMsOCBAQCB1 bmlvbiBUaHJlYWRDb250ZXh0IHsKLSAgICAgdWludDMyX3QgY3AwX3N0YXR1czsKLSAgICAgdWlu dDMyX3QgY3AwX2NhdXNlOwotICAgICB1aW50MzJfdCBwYWRkaW5nMV87Ci0rI2VsaWYgZGVmaW5l ZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIC8vIFBQQzY0IGlzIDY0LWJpdAotICNlbHNl Ci0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi1AQCAtMTMy LDYgKzEzOCwyMSBAQCB1bmlvbiBUaHJlYWRDb250ZXh0IHsKLSAgICAgdWludDY0X3QgY3AwX2Jh ZHZhZGRyOwotICAgICB1aW50NjRfdCBjcDBfc3RhdHVzOwotICAgICB1aW50NjRfdCBjcDBfY2F1 c2U7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIC8vIFJlZmxl Y3RzIHN0cnVjdCBwdF9yZWdzIGluIGFzbS9wdHJhY2UuaC4KLSsgICAgdWludDY0X3QgZ3ByWzMy XTsKLSsgICAgdWludDY0X3QgbmlwOwotKyAgICB1aW50NjRfdCBtc3I7Ci0rICAgIHVpbnQ2NF90 IG9yaWdfZ3ByMzsKLSsgICAgdWludDY0X3QgY3RyOwotKyAgICB1aW50NjRfdCBsbms7Ci0rICAg IHVpbnQ2NF90IHhlcjsKLSsgICAgdWludDY0X3QgY2NyOwotKyAgICB1aW50NjRfdCBzb2Z0ZTsK LSsgICAgdWludDY0X3QgdHJhcDsKLSsgICAgdWludDY0X3QgZGFyOwotKyAgICB1aW50NjRfdCBk c2lzcjsKLSsgICAgdWludDY0X3QgcmVzdWx0OwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2Vu ZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi1AQCAtMTQzLDYgKzE2NCw4IEBAIHVuaW9uIFRo cmVhZENvbnRleHQgewotICAgdXNpbmcgTmF0aXZlVGhyZWFkQ29udGV4dCA9IHVzZXJfcmVnczsK LSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotIC8vIE5vIGFwcHJvcHJpYXRl IE5hdGl2ZVRocmVhZHNDb250ZXh0IHR5cGUgYXZhaWxhYmxlIGZvciBNSVBTCi0rI2VsaWYgZGVm aW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICB1c2luZyBOYXRpdmVUaHJlYWRDb250ZXh0 ID0gc3RydWN0IHB0X3JlZ3M7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFS Q0hfQ1BVX1g4Nl9GQU1JTFkgfHwgQVJDSF9DUFVfQVJNNjQKLUBAIC0yMTgsNiArMjQxLDkgQEAg dW5pb24gRmxvYXRDb250ZXh0IHsKLSAgICAgfSBmcHJlZ3NbMzJdOwotICAgICB1aW50MzJfdCBm cGNzcjsKLSAgICAgdWludDMyX3QgZnB1X2lkOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjRfRkFNSUxZKQotKyAgICAvLyBDcmFzaHBhZCdzIFBQQyBzdXBwb3J0IGlzIDY0LWJpdCBvbmx5 LCBzbyB0aGlzCi0rICAgIC8vIDMyYml0LW9ubHkgc3RydWN0IGlzIGRlY2xhcmVkIGFzIGVtcHR5 LgotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZ Ci1AQCAtMjUyLDYgKzI3OCwxMCBAQCB1bmlvbiBGbG9hdENvbnRleHQgewotICAgICBkb3VibGUg ZnByZWdzWzMyXTsKLSAgICAgdWludDMyX3QgZnBjc3I7Ci0gICAgIHVpbnQzMl90IGZwdV9pZDsK LSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgLy8gUmVmbGVjdHMg ZnByZWdzZXRfdCBpbiBzeXMvdWNvbnRleHQuaAotKyAgICBkb3VibGUgZnByZWdzWzMyXTsKLSsg ICAgZG91YmxlIGZwc2NyOwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNI X0NQVV9YODZfRkFNSUxZCi1AQCAtMjgwLDYgKzMxMCw4IEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7 Ci0gICBzdGF0aWNfYXNzZXJ0KHNpemVvZihmNjQpID09IHNpemVvZih1c2VyX2Zwc2ltZF9zdHJ1 Y3QpLCAiU2l6ZSBtaXNtYXRjaCIpOwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpCi0gLy8gTm8gYXBwcm9wcmlhdGUgZmxvYXRpbmcgcG9pbnQgY29udGV4dCBuYXRpdmUgdHlw ZSBmb3IgYXZhaWxhYmxlIE1JUFMuCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCi0rICBzdGF0aWNfYXNzZXJ0KHNpemVvZihmNjQpID09IHNpemVvZihmcHJlZ3NldF90KSwg IlNpemUgbWlzbWF0Y2giKTsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJD SF9DUFVfWDg2Ci1AQCAtMjg3LDYgKzMxOSwyNiBAQCB1bmlvbiBGbG9hdENvbnRleHQgewotIHN0 YXRpY19hc3NlcnQoc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8RmxvYXRDb250ZXh0Pjo6dmFsdWUs Ci0gICAgICAgICAgICAgICAiTm90IHN0YW5kYXJkIGxheW91dCIpOwotIAotKy8vISBcYnJpZWYg VGhlIHZlY3RvciByZWdpc3RlcnMgdXNlZCBmb3IgYW4gYXJjaGl0ZWN0dXJlIGZhbWlseQotK3Vu aW9uIFZlY3RvckNvbnRleHQgewotKyAgc3RydWN0IHYzMl90IHt9IHYzMjsKLSsjaWYgZGVmaW5l ZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygx NikpKSAvLyBWZWN0b3IgY29udGV4dCBtdXN0IGJlIGRvdWJsZXdvcmQgYWxpZ25lZC4KLSsjZW5k aWYKLSsgIHN0cnVjdCB2NjRfdCB7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQotKyAgICAvLyBSZWZsZWN0cyB2cnJlZ3NldF90IGluIHN5cy91Y29udGV4dC5oCi0rICAgIHVp bnQzMl90IHZycmVnc1szMl1bNF07Ci0rICAgIHN0cnVjdCB7Ci0rICAgICAgdWludDMyX3QgX19w YWRbM107Ci0rICAgICAgdWludDMyX3QgdnNjcl93b3JkOwotKyAgICB9IHZzY3I7Ci0rICAgIHVp bnQzMl90IHZyc2F2ZTsKLSsgICAgdWludDMyX3QgX19wYWRbM107Ci0rI2VuZGlmCi0rICB9IHY2 NDsKLSt9OwotKwotIC8vISBcYnJpZWYgQSBjb2xsZWN0aW9uIG9mIGBwdHJhY2VgLWFibGUgaW5m b3JtYXRpb24gYWJvdXQgYSB0aHJlYWQuCi0gc3RydWN0IFRocmVhZEluZm8gewotICAgVGhyZWFk SW5mbygpOwotQEAgLTI5OCw2ICszNTAsOSBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7Ci0gICAvLyEg XGJyaWVmIFRoZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgZm9yIHRoZSB0aHJlYWQuCi0gICBG bG9hdENvbnRleHQgZmxvYXRfY29udGV4dDsKLSAKLSsgIC8vISBcYnJpZWYgKE9wdGlvbmFsKSBU aGUgdmVjdG9yIHJlZ2lzdGVycyB1c2VkIGZvciB0aGUgdGhyZWFkLgotKyAgVmVjdG9yQ29udGV4 dCB2ZWN0b3JfY29udGV4dDsKLSsKLSAgIC8vISBcYnJpZWYgVGhlIHRocmVhZC1sb2NhbCBzdG9y YWdlIGFkZHJlc3MgZm9yIHRoZSB0aHJlYWQuCi0gICBMaW51eFZNQWRkcmVzcyB0aHJlYWRfc3Bl Y2lmaWNfZGF0YV9hZGRyZXNzOwotIH07Ci1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5oIGIvdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5oCi1pbmRleCBkMjFhMjRm MTkuLmFjYzMyNTM0OSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAotKysrIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5oCi1AQCAtNjksNiArNjksNyBAQCB1 c2luZyBOYXRpdmVDUFVDb250ZXh0ID0gdWNvbnRleHRfdDsKLSAvLyEgICAgIG1hY09TL0xpbnV4 L0Z1Y2hzaWEgfCB4ODZfNjQgICAgICAgfCBgJSVyZGlgCi0gLy8hICAgICBMaW51eCAgICAgICAg ICAgICAgIHwgQVJNL0FSTTY0ICAgIHwgYHIwYC9geDBgCi0gLy8hICAgICBMaW51eCAgICAgICAg ICAgICAgIHwgTUlQUy9NSVBTNjQgIHwgYCRhMGAKLSsvLyEgICAgIExpbnV4ICAgICAgICAgICAg ICAgfCBQUEM2NCAgICAgICAgfCBgcjNgCi0gLy8hCi0gLy8hICAgICBBZGRpdGlvbmFsbHksIHRo ZSB2YWx1ZSBgTFJgIG9uIEFSTS9BUk02NCB3aWxsIGJlIHRoZSByZXR1cm4gYWRkcmVzcyBvZgot IC8vISAgICAgdGhpcyBmdW5jdGlvbi4KLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X2xpbnV4LlMgYi90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X2xpbnV4LlMKLWlu ZGV4IDUyMjE1ZWU1ZC4uYjNlNGEzZWM3IDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF9saW51eC5TCi0rKysgYi90aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X2xpbnV4 LlMKLUBAIC0zMiw3ICszMiw3IEBACi0gICAuYmFsaWduIDQsIDB4MAotICAgLnR5cGUgQ0FQVFVS RUNPTlRFWFRfU1lNQk9MLCAlZnVuY3Rpb24KLSAgIC50eXBlIENBUFRVUkVDT05URVhUX1NZTUJP TDIsICVmdW5jdGlvbgotLSNlbGlmIGRlZmluZWQoX19taXBzX18pCi0rI2VsaWYgZGVmaW5lZChf X21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgLmJhbGlnbiA0LCAweDAKLSAj ZW5kaWYKLSAKLUBAIC00MjMsNCArNDIzLDIxNCBAQCBDQVBUVVJFQ09OVEVYVF9TWU1CT0wyOgot ICAganIgJHJhCi0gCi0gICAuc2V0IGF0Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyAgLy8gU3RvcmUgcjAtcjMxCi0rICBzdGQgMCwgMHhlOCgzKSAgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LmdwX3JlZ3NbMF0KLSsgIHN0ZCAxLCAweGYwKDMpICAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuZ3BfcmVnc1sxXQotKyAgc3RkIDIsIDB4ZjgoMykgICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzWzJdCi0rICAvLyBub3RlIHRoYXQgcjMncyBvcmlnaW5hbCB2YWx1ZSB3YXMg bG9zdAotKyAgc3RkIDMsIDB4MTAwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdz WzNdCi0rICBzdGQgNCwgMHgxMDgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3Nb NF0KLSsgIHN0ZCA1LCAweDExMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s1 XQotKyAgc3RkIDYsIDB4MTE4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzZd Ci0rICBzdGQgNywgMHgxMjAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbN10K LSsgIHN0ZCA4LCAweDEyOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s4XQot KyAgc3RkIDksIDB4MTMwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzldCi0r ICBzdGQgMTAsIDB4MTM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTBdCi0r ICBzdGQgMTEsIDB4MTQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTFdCi0r ICBzdGQgMTIsIDB4MTQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTJdCi0r ICBzdGQgMTMsIDB4MTUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTNdCi0r ICBzdGQgMTQsIDB4MTU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTRdCi0r ICBzdGQgMTUsIDB4MTYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTVdCi0r ICBzdGQgMTYsIDB4MTY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTZdCi0r ICBzdGQgMTcsIDB4MTcwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTddCi0r ICBzdGQgMTgsIDB4MTc4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMThdCi0r ICBzdGQgMTksIDB4MTgwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTldCi0r ICBzdGQgMjAsIDB4MTg4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjBdCi0r ICBzdGQgMjEsIDB4MTkwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjFdCi0r ICBzdGQgMjIsIDB4MTk4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjJdCi0r ICBzdGQgMjMsIDB4MWEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjNdCi0r ICBzdGQgMjQsIDB4MWE4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjRdCi0r ICBzdGQgMjUsIDB4MWIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjVdCi0r ICBzdGQgMjYsIDB4MWI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjZdCi0r ICBzdGQgMjcsIDB4MWMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjddCi0r ICBzdGQgMjgsIDB4MWM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjhdCi0r ICBzdGQgMjksIDB4MWQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjldCi0r ICBzdGQgMzAsIDB4MWQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMzBdCi0r ICBzdGQgMzEsIDB4MWUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMzFdCi0r Ci0rICAvLyBGb3IgTklQLCB3ZSBjYW4gdXNlIHRoZSB2YWx1ZSBpbiB0aGUgbGluayByZWdpc3Rl cgotKyAgbWZsciAwCi0rICBzdGQgMCwgMHgxZTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1tQVF9OSVBdCi0rCi0rICAvLyBDVFIKLSsgIG1mY3RyIDAKLSsgIHN0ZCAwLCAweDIw MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NUUl0KLSsKLSsgIC8vIEZv ciBMTkssIHdlJ2xsIHVzZSB0aGUgY2FsbGVyJ3MgTFIgc2F2ZSBhcmVhICgyIHN0YWNrIGZyYW1l cyB1cCkuCi0rICAvLyByNCBjYW4gYmUgdXNlZCBhcyBhIHNjcmF0Y2ggcmVnaXN0ZXIgc2luY2Ug aXQgaGFzIGFscmVhZHkgYmVlbiBzYXZlZC4KLSsgIGxkIDQsIDAoMSkKLSsgIGxkIDQsIDE2KDQp Ci0rICBzdGQgNCwgMHgyMDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9M TktdCi0rCi0rICAvLyBYRVIKLSsgIG1meGVyIDAKLSsgIHN0ZCAwLCAweDIxMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1hFUl0KLSsKLSsgIC8vIENDUgotKyAgbWZjciAw Ci0rICBzdGQgMCwgMHgyMTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9D Q1JdCi0rCi0rICAvLyBNU1IsIG9yaWdfcjMsIE1RLCBUUkFQLCBEQVIsIERTSVNSLCBSRVNVTFQs IERTQ1IsCi0rICAvLyBub3QgdXNlZCBvciBub3QgcmVsZXZhbnQsICB6ZXJvIHRoZW0gb3V0Lgot KyAgbGkgNCwgMAotKyAgc3RkIDQsIDB4MWYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbUFRfTVNSXQotKyAgc3RkIDQsIDB4MWY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmdwX3JlZ3NbUFRfT1JJR19SM10KLSsgIHN0ZCA0LCAweDIyMCgzKSAvLyBjb250ZXh0LT51Y19t Y29udGV4dC5ncF9yZWdzW1BUX01RXQotKyAgc3RkIDQsIDB4MjI4KDMpIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmdwX3JlZ3NbUFRfVFJBUF0KLSsgIHN0ZCA0LCAweDIzMCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0RBUl0KLSsgIHN0ZCA0LCAweDIzOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0RTSVNSXQotKyAgc3RkIDQsIDB4MjQwKDMpIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfUkVTVUxUXQotKyAgc3RkIDQsIDB4MjQ4 KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfRFNDUl0KLSsKLSsgIC8vIFVw ZGF0ZSBjb250ZXh0LT51Y19tY29udGV4dC5yZWdzIHRvIHBvaW50IHRvIGdwX3JlZ3MKLSsgIGFk ZGkgMCwgMywgMHhlOAotKyAgc3RkIDAsIDB4ZTAoMykKLSsKLSsgIC8vIFNhdmUgZmxvYXRpbmcg cG9pbnQgcmVnaXN0ZXJzIDAtMzEKLSsgIHN0ZmQgMCwgMHgyNjgoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbMF0KLSsgIHN0ZmQgMSwgMHgyNzAoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbMV0KLSsgIHN0ZmQgMiwgMHgyNzgoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbMl0KLSsgIHN0ZmQgMywgMHgyODAoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbM10KLSsgIHN0ZmQgNCwgMHgyODgoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbNF0KLSsgIHN0ZmQgNSwgMHgyOTAoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbNV0KLSsgIHN0ZmQgNiwgMHgyOTgoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbNl0KLSsgIHN0ZmQgNywgMHgyYTAoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbN10KLSsgIHN0ZmQgOCwgMHgyYTgoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbOF0KLSsgIHN0ZmQgOSwgMHgyYjAoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbOV0KLSsgIHN0ZmQgMTAsIDB4MmI4KDMpIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbMTBdCi0rICBzdGZkIDExLCAweDJjMCgzKSAvLyBjb250ZXh0LT51 Y19tY29udGV4dC5mcF9yZWdzWzExXQotKyAgc3RmZCAxMiwgMHgyYzgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1sxMl0KLSsgIHN0ZmQgMTMsIDB4MmQwKDMpIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LmZwX3JlZ3NbMTNdCi0rICBzdGZkIDE0LCAweDJkOCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5mcF9yZWdzWzE0XQotKyAgc3RmZCAxNSwgMHgyZTAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNV0KLSsgIHN0ZmQgMTYsIDB4MmU4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTZdCi0rICBzdGZkIDE3LCAweDJmMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE3XQotKyAgc3RmZCAxOCwgMHgyZjgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxOF0KLSsgIHN0ZmQgMTksIDB4MzAwKDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTldCi0rICBzdGZkIDIwLCAweDMwOCgzKSAvLyBj b250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIwXQotKyAgc3RmZCAyMSwgMHgzMTAoMykgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syMV0KLSsgIHN0ZmQgMjIsIDB4MzE4KDMpIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjJdCi0rICBzdGZkIDIzLCAweDMyMCgzKSAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIzXQotKyAgc3RmZCAyNCwgMHgzMjgoMykg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syNF0KLSsgIHN0ZmQgMjUsIDB4MzMwKDMp IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjVdCi0rICBzdGZkIDI2LCAweDMzOCgz KSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI2XQotKyAgc3RmZCAyNywgMHgzNDAo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syN10KLSsgIHN0ZmQgMjgsIDB4MzQ4 KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjhdCi0rICBzdGZkIDI5LCAweDM1 MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI5XQotKyAgc3RmZCAzMCwgMHgz NTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMF0KLSsgIHN0ZmQgMzEsIDB4 MzYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMzFdCi0rCi0rICAvLyBGUFND UgotKyAgbWZmcyAwCi0rICBzdGZkIDAsIDB4MzY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmZwX3JlZ3NbMzJdCi0rCi0rICAvLyBTYXZlIFZNWCBWZWN0b3IgcmVnaXN0ZXJzCi0rICAvLyBV cGRhdGUgcjQgdG8gY29udGFpbiB0aGUgYmFzZSBhZGRyZXNzIG9mIHZteF9yZXNlcnZlCi0rICBh ZGRpIDQsIDMsIDB4Mzc4Ci0rICAvLyBFbnN1cmUgdGhhdCBpdCBpcyBxdWFkd29yZCBhbGlnbmVk Ci0rICBhbmRpLiA1LCA0LCAweEYKLSsgIGJlcSAxZiAvLyBObyBhbGlnbm1lbnQgaXMgbmVjZXNz YXJ5Ci0rICAvLyBBZGRyZXNzIGlzIGRvdWJsZXdvcmQgYWxpZ25lZCBhbmQgbm90IHF1YWR3b3Jk IGFsaWduZWQsIGFkZCA4Ci0rICBhZGRpIDQsIDQsIDgKLSsKLSsxOgotKyAgLy8gU3RvcmUgVk1Y IHJlZ2lzdGVycyAwLTMxCi0rICAvLyByNCB3aWxsIGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcwot KyAgLy8gcjUgd2lsbCBjb250YWluIHRoZSBpbmRleAotKyAgbGkgNSwgMAotKyAgc3R2eCAwLCA0 LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDBdCi0r ICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDEsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMiwg NCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyXQot KyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAzLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQudm14X3Jlc2VydmVbKGFsaWduKSArIDNdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDQs IDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgNF0K LSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggNSwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA1XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA2 LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDZd Ci0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDcsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgN10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dngg OCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA4 XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA5LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDldCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4 IDEwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg MTBdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDExLCA0LCA1ICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTFdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBz dHZ4IDEyLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24p ICsgMTJdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDEzLCA0LCA1ICAvLyBjb250ZXh0LT51 Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTNdCi0rICBhZGRpIDUsIDUsIDE2Ci0r ICBzdHZ4IDE0LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxp Z24pICsgMTRdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE1LCA0LCA1ICAvLyBjb250ZXh0 LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTVdCi0rICBhZGRpIDUsIDUsIDE2 Ci0rICBzdHZ4IDE2LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVso YWxpZ24pICsgMTZdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE3LCA0LCA1ICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTddCi0rICBhZGRpIDUsIDUs IDE2Ci0rICBzdHZ4IDE4LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMThdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE5LCA0LCA1ICAvLyBj b250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTldCi0rICBhZGRpIDUs IDUsIDE2Ci0rICBzdHZ4IDIwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVz ZXJ2ZVsoYWxpZ24pICsgMjBdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDIxLCA0LCA1ICAv LyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjFdCi0rICBhZGRp IDUsIDUsIDE2Ci0rICBzdHZ4IDIyLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhf cmVzZXJ2ZVsoYWxpZ24pICsgMjJdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDIzLCA0LCA1 ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjNdCi0rICBh ZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI0LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52 bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjRdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI1LCA0 LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjVdCi0r ICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI2LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjZdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI3 LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjdd Ci0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI4LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjhdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4 IDI5LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg MjldCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDMwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMzBdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBz dHZ4IDMxLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24p ICsgMzFdCi0rICBhZGRpIDUsIDUsIDE2Ci0rCi0rICAvLyBWU0NSCi0rICBtZnZzY3IgMAotKyAg c3R2eCAwLCA0LCA1Ci0rICBhZGRpIDUsIDUsIDE2Ci0rCi0rICAvLyBWUlNBVkUKLSsgIG1mdnJz YXZlIDAKLSsgIHN0d3ggMCwgNCwgNQotKwotKyAgLy8gVXBkYXRlIGNvbnRleHQtPnVjX21jb250 ZXh0LnZfcmVncyB0byBwb2ludCB0byB2bXhfcmVzZXJ2ZSArIGFsaWdubWVudC4KLSsgIHN0ZCA0 LCAweDM3MCgzKQotKwotKyAgLy8gWmVybyBvdXQgYWxsIHVudXNlZCBmaWVsZHMKLSsgIGxpIDQs IDAKLSsgIHN0ZCA0LCAweGM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnNpZ25hbAotKyAg c3RkIDQsIDB4ZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuaGFuZGxlcgotKyAgc3RkIDQs IDB4ZDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQub2xkbWFzawotKwotKyAgYmxyCi0gI2Vu ZGlmICAvLyBfX2kzODZfXwotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYyBiL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYwotaW5kZXggY2Yy M2MyZGVmLi41ZjI2NGJjOTIgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rlc3QuY2MKLSsrKyBiL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYwotQEAg LTU3LDcgKzU3LDcgQEAgdm9pZCBUZXN0Q2FwdHVyZUNvbnRleHQoKSB7Ci0gICB1aW50cHRyX3Qg cGMgPSBQcm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnRleHRfMSk7Ci0gCi0gI2lmICFkZWZp bmVkKEFERFJFU1NfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgXAotLSAgICAhZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKQotKyAgICAhZGVmaW5lZChNRU1P UllfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0gICAvLyBT YW5pdGl6ZXJzIGNhbiBjYXVzZSBlbm91Z2ggY29kZSBibG9hdCB0aGF0IHRoZSDigJxuZWFyYnni gJ0gY2hlY2sgd291bGQKLSAgIC8vIGxpa2VseSBmYWlsLgotICAgY29uc3QgdWludHB0cl90IGtS ZWZlcmVuY2VQQyA9Ci1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0X3V0aWxfbGludXguY2MgYi90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rlc3RfdXRpbF9s aW51eC5jYwotaW5kZXggMzBhMmFiMjFkLi42MDUwOWYyMWQgMTAwNjQ0Ci0tLS0gYS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rlc3RfdXRp bF9saW51eC5jYwotKysrIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNj L2NhcHR1cmVfY29udGV4dF90ZXN0X3V0aWxfbGludXguY2MKLUBAIC0zNSw2ICszNSw4IEBAIHZv aWQgU2FuaXR5Q2hlY2tDb250ZXh0KGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGNvbnRleHQpIHsK LSAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LnJlZ3NbMF0sIEZyb21Qb2ludGVyQ2Fz dDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkKLSAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LmdyZWdzWzRdLCBGcm9tUG9p bnRlckNhc3Q8dWludHB0cl90PigmY29udGV4dCkpOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVf UFBDNjRfRkFNSUxZKQotKyAgRVhQRUNUX0VRKGNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1sz XSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRwdHJfdD4oJmNvbnRleHQpKTsKLSAjZW5kaWYKLSB9Ci0g Ci1AQCAtNDksNiArNTEsOCBAQCB1aW50cHRyX3QgUHJvZ3JhbUNvdW50ZXJGcm9tQ29udGV4dChj b25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7Ci0gICByZXR1cm4gY29udGV4dC51Y19t Y29udGV4dC5wYzsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgcmV0 dXJuIGNvbnRleHQudWNfbWNvbnRleHQucGM7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NF9GQU1JTFkpCi0rICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07 Ci0gI2VuZGlmCi0gfQotIAotQEAgLTYzLDYgKzY3LDggQEAgdWludHB0cl90IFN0YWNrUG9pbnRl ckZyb21Db250ZXh0KGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGNvbnRleHQpIHsKLSAgIHJldHVy biBjb250ZXh0LnVjX21jb250ZXh0LnNwOwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpCi0gICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5ncmVnc1syOV07Ci0rI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICByZXR1cm4gY29udGV4dC51Y19tY29u dGV4dC5ncF9yZWdzWzFdOwotICNlbmRpZgotIH0KLSAKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25hbHNfdGVzdC5jYyBiL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjCi1pbmRleCA1 NGNjMmYxOWYuLjI5OGI1Yzk5MyAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjCi0rKysgYi90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25hbHNfdGVzdC5jYwotQEAgLTQ2LDkgKzQ2LDkg QEAgYm9vbCBDYW5DYXVzZVNpZ25hbChpbnQgc2lnKSB7Ci0gICByZXR1cm4gc2lnID09IFNJR0FC UlQgfHwKLSAgICAgICAgICBzaWcgPT0gU0lHQUxSTSB8fAotICAgICAgICAgIHNpZyA9PSBTSUdC VVMgfHwKLS0jaWYgIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpCi0rI2lmICFkZWZpbmVkKEFSQ0hf Q1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSAgICAgICAgICBzaWcgPT0g U0lHRlBFIHx8Ci0tI2VuZGlmICAvLyAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKLSsjZW5kaWYg IC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkK LSAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FS TUVMKQotICAgICAgICAgIHNpZyA9PSBTSUdJTEwgfHwKLSAjZW5kaWYgIC8vIGRlZmluZWQoQVJD SF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1FTCkKLUBAIC0xMTcsOSAr MTE3LDExIEBAIHZvaWQgQ2F1c2VTaWduYWwoaW50IHNpZykgewotICAgICAgIGJyZWFrOwotICAg ICB9Ci0gCi0tI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQotKyNpZiAhZGVmaW5lZChBUkNI X0NQVV9BUk02NCkgJiYgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0gICAgIC8vIEFSTTY0IGhh cyBoYXJkd2FyZSBpbnRlZ2VyIGRpdmlzaW9uIGluc3RydWN0aW9ucyB0aGF0IGRvbuKAmXQgZ2Vu ZXJhdGUgYQotICAgICAvLyB0cmFwIGZvciBkaXZpZGUtYnktemVybywgc28gdGhpcyBkb2VzbuKA mXQgcHJvZHVjZSBTSUdGUEUuCi0rICAgIC8vCi0rICAgIC8vIFBQQzY0IGZpeGVkLXBvaW50IGRp dmlzaW9uIGJ5IHplcm8gYWxzbyBkb2Vzbid0IHByb2R1Y2UgYSBTSUdGUEUuCi0gICAgIGNhc2Ug U0lHRlBFOiB7Ci0gICAgICAgLy8gT3B0aW1pemF0aW9uIG1ha2VzIHRoaXMgdHJpY2t5LCBzbyBn ZXQgemVybyBmcm9tIGEgc3lzdGVtIGNhbGwgbGlrZWx5Ci0gICAgICAgLy8gdG8gc3VjY2VlZCwg YW5kIHRyeSB0byBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0LgotQEAgLTEzNyw3ICsxMzks NyBAQCB2b2lkIENhdXNlU2lnbmFsKGludCBzaWcpIHsKLSAgICAgICBmc3RhdChxdW90aWVudCwg JnN0YXRfYnVmKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotLSNlbmRpZiAgLy8gQVJDSF9DUFVf QVJNNjQKLSsjZW5kaWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChB UkNIX0NQVV9QUEM2NCkKLSAKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBk ZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMKQotICAgICBjYXNlIFNJR0lMTDogewotZGlmZiAtLWdpdCBh L3RoaXJkX3BhcnR5L2RhdjFkL0JVSUxELmduIGIvdGhpcmRfcGFydHkvZGF2MWQvQlVJTEQuZ24K LWluZGV4IDZiNDU2NmZjMy4uYzA3ZjczMmFkIDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvZGF2 MWQvQlVJTEQuZ24KLSsrKyBiL3RoaXJkX3BhcnR5L2RhdjFkL0JVSUxELmduCi1AQCAtMTg0LDYg KzE4NCw4IEBAIHN0YXRpY19saWJyYXJ5KCJkYXYxZF84Yml0IikgewotICAgICBzb3VyY2VzICs9 IGFybV90ZW1wbGF0ZV9zb3VyY2VzCi0gICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02 NCIpIHsKLSAgICAgc291cmNlcyArPSBhcm1fdGVtcGxhdGVfc291cmNlcwotKyAgfSBlbHNlIGlm IChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Ci0rICAgIHNvdXJjZXMgKz0gcHBjNjRfdGVtcGxh dGVfc291cmNlcwotICAgfQotIAotICAgY2ZsYWdzID0gZGF2MWRfY29wdHMKLUBAIC0yMTIsNiAr MjE0LDggQEAgc3RhdGljX2xpYnJhcnkoImRhdjFkXzEwYml0IikgewotICAgICBzb3VyY2VzICs9 IGFybV90ZW1wbGF0ZV9zb3VyY2VzCi0gICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02 NCIpIHsKLSAgICAgc291cmNlcyArPSBhcm1fdGVtcGxhdGVfc291cmNlcwotKyAgfSBlbHNlIGlm IChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Ci0rICAgIHNvdXJjZXMgKz0gcHBjNjRfdGVtcGxh dGVfc291cmNlcwotICAgfQotIAotICAgY2ZsYWdzID0gZGF2MWRfY29wdHMKLUBAIC0yNjMsNiAr MjY3LDIxIEBAIGlmIChjdXJyZW50X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2NwdSA9PSAieDY0 IikgewotICAgICAgIGRlZmluZXMgPSBbICJQUkVGSVgiIF0KLSAgICAgfQotIAotKyAgICBjZmxh Z3MgPSBkYXYxZF9jb3B0cwotKyAgfQotK30gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0 IikgewotKyAgc3RhdGljX2xpYnJhcnkoImRhdjFkX3BwYyIpIHsKLSsgICAgc291cmNlcyA9IFsK LSsgICAgICAibGliZGF2MWQvc3JjL3BwYy9jcHUuYyIsCi0rICAgICAgImxpYmRhdjFkL3NyYy9w cGMvY3B1LmgiLAotKyAgICBdCi0rCi0rICAgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv Y29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQotKyAgICBjb25maWdzICs9IFsKLSsgICAgICAiLy9i dWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCi0rICAgICAgIjpkYXYxZF9j b25maWciLAotKyAgICBdCi0rCi0gICAgIGNmbGFncyA9IGRhdjFkX2NvcHRzCi0gICB9Ci0gfQot QEAgLTI5Miw1ICszMTEsNyBAQCBzdGF0aWNfbGlicmFyeSgiZGF2MWQiKSB7Ci0gICAgIH0KLSAg IH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gImFybSIgfHwgY3VycmVudF9jcHUgPT0gImFybTY0 IikgewotICAgICBkZXBzICs9IFsgIjpkYXYxZF9hcm0iIF0KLSsgIH0gZWxzZSBpZiAoY3VycmVu dF9jcHUgPT0gInBwYzY0IikgewotKyAgICBkZXBzICs9IFsgIjpkYXYxZF9wcGMiIF0KLSAgIH0K LSB9Ci1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvZGF2MWQvY29uZmlnL2xpbnV4L3BwYzY0L2Nv bmZpZy5oIGIvdGhpcmRfcGFydHkvZGF2MWQvY29uZmlnL2xpbnV4L3BwYzY0L2NvbmZpZy5oCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi45ZmJiZjc1Y2MKLS0tLSAvZGV2 L251bGwKLSsrKyBiL3RoaXJkX3BhcnR5L2RhdjFkL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcu aAotQEAgLTAsMCArMSwzOSBAQAotKy8qCi0rICogQXV0b2dlbmVyYXRlZCBieSB0aGUgTWVzb24g YnVpbGQgc3lzdGVtLgotKyAqIERvIG5vdCBlZGl0LCB5b3VyIGNoYW5nZXMgd2lsbCBiZSBsb3N0 LgotKyAqLwotKwotKyNwcmFnbWEgb25jZQotKwotKyNkZWZpbmUgQVJDSF9BQVJDSDY0IDAKLSsK LSsjZGVmaW5lIEFSQ0hfQVJNIDAKLSsKLSsjZGVmaW5lIEFSQ0hfUFBDNjRMRSAxCi0rCi0rI2Rl ZmluZSBBUkNIX1g4NiAwCi0rCi0rI2RlZmluZSBBUkNIX1g4Nl8zMiAwCi0rCi0rI2RlZmluZSBB UkNIX1g4Nl82NCAwCi0rCi0rI2RlZmluZSBDT05GSUdfMTZCUEMgMQotKwotKyNkZWZpbmUgQ09O RklHXzhCUEMgMQotKwotKy8vICNkZWZpbmUgQ09ORklHX0xPRyAxIC0tIExvZ2dpbmcgaXMgY29u dHJvbGxlZCBieSBDaHJvbWl1bQotKwotKyNkZWZpbmUgRU5ESUFOTkVTU19CSUcgMAotKwotKyNk ZWZpbmUgSEFWRV9BU00gMQotKwotKyNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEKLSsKLSsj ZGVmaW5lIEhBVkVfRExTWU0gMQotKwotKyNkZWZpbmUgSEFWRV9HRVRBVVhWQUwgMQotKwotKyNk ZWZpbmUgSEFWRV9QT1NJWF9NRU1BTElHTiAxCi0rCi0rI2RlZmluZSBIQVZFX1VOSVNURF9IIDEK LSsKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9kYXYxZC9kYXYxZF9nZW5lcmF0ZWQuZ25pIGIv dGhpcmRfcGFydHkvZGF2MWQvZGF2MWRfZ2VuZXJhdGVkLmduaQotaW5kZXggYzU5Y2IwODIxLi4z MDYwMjg0YTggMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9kYXYxZC9kYXYxZF9nZW5lcmF0ZWQu Z25pCi0rKysgYi90aGlyZF9wYXJ0eS9kYXYxZC9kYXYxZF9nZW5lcmF0ZWQuZ25pCi1AQCAtODIs NiArODIsMTEgQEAgYXJtX3RlbXBsYXRlX3NvdXJjZXMgPSBbCi0gICAibGliZGF2MWQvc3JjL2Fy bS9tY19pbml0X3RtcGwuYyIsCi0gXQotIAotK3BwYzY0X3RlbXBsYXRlX3NvdXJjZXMgPSBbCi0r ICAibGliZGF2MWQvc3JjL3BwYy9jZGVmX2luaXRfdG1wbC5jIiwKLSsgICJsaWJkYXYxZC9zcmMv cHBjL2xvb3ByZXN0b3JhdGlvbl9pbml0X3RtcGwuYyIsCi0rXQotKwotIHRlbXBsYXRlX3NvdXJj ZXMgPSBbCi0gICAibGliZGF2MWQvc3JjL2NkZWZfYXBwbHlfdG1wbC5jIiwKLSAgICJsaWJkYXYx ZC9zcmMvY2RlZl90bXBsLmMiLAotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2RhdjFkL2dlbmVy YXRlX3NvdXJjZS5weSBiL3RoaXJkX3BhcnR5L2RhdjFkL2dlbmVyYXRlX3NvdXJjZS5weQotaW5k ZXggOWFiNWUwMGI4Li5hZDNmZWZmZWUgMTAwNzU1Ci0tLS0gYS90aGlyZF9wYXJ0eS9kYXYxZC9n ZW5lcmF0ZV9zb3VyY2UucHkJMjAyMS0wNC0xNSAxMzoxMToxMC40ODk1Nzk0OTAgLTA0MDAKLSsr KyBiL3RoaXJkX3BhcnR5L2RhdjFkL2dlbmVyYXRlX3NvdXJjZS5weQkyMDIxLTA0LTE1IDEzOjE5 OjA4LjIyOTkxMzg5MiAtMDQwMAotQEAgLTU3LDYgKzU3LDggQEAKLSAgIF9Xcml0ZUFycmF5KGZk LCAiYXJtNjRfYXNtX3NvdXJjZXMiLCBfR2xvYigibGliZGF2MWQvc3JjL2FybS82NC8qLlMiKSkK LSAgIF9Xcml0ZUFycmF5KGZkLCAiYXJtX3RlbXBsYXRlX3NvdXJjZXMiLCBfR2xvYigibGliZGF2 MWQvc3JjL2FybS8qX3RtcGwuYyIpKQotIAotKyAgX1dyaXRlQXJyYXkoZmQsICJwcGM2NF90ZW1w bGF0ZV9zb3VyY2VzIiwgX0dsb2IoImxpYmRhdjFkL3NyYy9wcGMvKl90bXBsLmMiKSkKLSsKLSAg IHRlbXBsYXRlX3NvdXJjZXMgPSBfR2xvYigibGliZGF2MWQvc3JjLypfdG1wbC5jIikKLSAgIF9X cml0ZUFycmF5KGZkLCAidGVtcGxhdGVfc291cmNlcyIsIHRlbXBsYXRlX3NvdXJjZXMpCi0gCi1k aWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90eXBlcy5oIGIv dGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90eXBlcy5oCi1pbmRleCAwYjRiZDcy ZjAuLmEwY2FhNWU3MSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2RhdjFkL2xpYmRhdjFkL3Ny Yy9wcGMvdHlwZXMuaAotKysrIGIvdGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90 eXBlcy5oCi1AQCAtNTEsNCArNTEsMTkgQEAKLSAjZGVmaW5lIHUxNmxfdG9faTMyKHYpICgoaTMy eDQpIHZlY19tZXJnZWwoKHUxNng4KSB2LCB2ZWNfc3BsYXRfdTE2KDApKSkKLSAjZGVmaW5lIGkx NmxfdG9faTMyKHYpICgoaTMyeDQpIHZlY191bnBhY2tsKChpMTZ4OCl2KSkKLSAKLSsjaWYgZGVm aW5lZChfX2NsYW5nX18pCi0rI3VuZGVmIHZlY19zcGxhdHMKLSsjZGVmaW5lIHZlY19zcGxhdHMo TikgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIF9HZW5lcmljKChOKSwgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICAgICAgdW5zaWduZWQgY2hhcjogICAgICAoKHU4eDE2KShOKSks IFwKLSsgICAgICAgIHNpZ25lZCBjaGFyOiAgICAgICAgKChpOHgxNikoTikpLCBcCi0rICAgICAg ICB1bnNpZ25lZCBzaG9ydDogICAgICgodTE2eDgpKE4pKSwgXAotKyAgICAgICAgc2lnbmVkIHNo b3J0OiAgICAgICAoKGkxNng4KShOKSksIFwKLSsgICAgICAgIHVuc2lnbmVkIGludDogICAgICAg KCh1MzJ4NCkoTikpLCBcCi0rICAgICAgICBzaWduZWQgaW50OiAgICAgICAgICgoaTMyeDQpKE4p KSwgXAotKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nOiAoKHU2NHgyKShOKSksIFwKLSsgICAg ICAgIHNpZ25lZCBsb25nIGxvbmc6ICAgKChpNjR4MikoTikpICBcCi0rICAgICkKLSsjZW5kaWYK LSsKLSAjZW5kaWYgLyogREFWMURfU1JDX1BQQ19UWVBFU19IICovCi1kaWZmIC0tZ2l0IGEvdGhp cmRfcGFydHkvZWlnZW4zL0JVSUxELmduIGIvdGhpcmRfcGFydHkvZWlnZW4zL0JVSUxELmduCi1p bmRleCAwZDRlMTg0Li5mMmNlNDg0IDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvZWlnZW4zL0JV SUxELmduCi0rKysgYi90aGlyZF9wYXJ0eS9laWdlbjMvQlVJTEQuZ24KLUBAIC0yMiw0ICsyMiw4 IEBAIGNvbmZpZygiZWlnZW5faW5jbHVkZXMiKSB7Ci0gICAgICMgZm9yIHRoaXMgY29tcG9uZW50 IG9uIFdpbmRvd3Mgb24gQXJtIGR1ZSB0byBjb21waWxhdGlvbiBlcnJvcnMuCi0gICAgIGRlZmlu ZXMgKz0gWyAiRUlHRU5fRE9OVF9WRUNUT1JJWkUiIF0KLSAgIH0KLSsKLSsgIGlmICh0YXJnZXRf Y3B1ID09ICJwcGM2NCIpIHsKLSsgICAgZGVmaW5lcyArPSBbICJFSUdFTl9ET05UX1ZFQ1RPUkla RSIgXQotKyAgfQotIH0KLQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2xpYmFvbS9CVUlMRC5n biBiL3RoaXJkX3BhcnR5L2xpYmFvbS9CVUlMRC5nbgotaW5kZXggOWIwNjViZC4uZGYzYWYwMiAx MDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L2xpYmFvbS9CVUlMRC5nbgotKysrIGIvdGhpcmRfcGFy dHkvbGliYW9tL0JVSUxELmduCi1AQCAtMzYsNiArMzYsOCBAQCBpZiAoZW5hYmxlX2xpYmFvbSkg ewotICAgICB9IGVsc2UgewotICAgICAgIGNwdV9hcmNoX2Z1bGwgPSAiYXJtIgotICAgICB9Ci0r ICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpIHsKLSsgICAgY3B1X2FyY2hfZnVs bCA9ICJnZW5lcmljIgotICAgfSBlbHNlIHsKLSAgICAgY3B1X2FyY2hfZnVsbCA9IGN1cnJlbnRf Y3B1Ci0gICB9Ci1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvbGliZ2F2MS9vcHRpb25zLmduaSBi L3RoaXJkX3BhcnR5L2xpYmdhdjEvb3B0aW9ucy5nbmkKLWluZGV4IDExYWY4MDEuLjRiMTNkMDUg MTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9saWJnYXYxL29wdGlvbnMuZ25pCi0rKysgYi90aGly ZF9wYXJ0eS9saWJnYXYxL29wdGlvbnMuZ25pCi1AQCAtMTIsNSArMTIsNSBAQCBkZWNsYXJlX2Fy Z3MoKSB7Ci0gICAgICAgaXNfY2hyb21lb3NfYXNoICYmICh0YXJnZXRfY3B1ID09ICJhcm0iIHx8 IHRhcmdldF9jcHUgPT0gImFybTY0IikKLSAgIHVzZV9saWJnYXYxX3BhcnNlciA9Ci0gICAgICAg KGlzX2Nocm9tZW9zIHx8IGlzX2xpbnV4IHx8IGlzX3dpbikgJiYKLS0gICAgICAodGFyZ2V0X2Nw dSA9PSAieDg2IiB8fCB0YXJnZXRfY3B1ID09ICJ4NjQiIHx8IHRhcmdldF9jcHUgPT0gImFybTY0 IikKLSsgICAgICAodGFyZ2V0X2NwdSA9PSAieDg2IiB8fCB0YXJnZXRfY3B1ID09ICJ4NjQiIHx8 IHRhcmdldF9jcHUgPT0gImFybTY0IiB8fCB0YXJnZXRfY3B1ID09ICJwcGM2NCIpCi0gfQotZGlm ZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBiL3RoaXJk X3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAotaW5kZXggZTRhYzIyNjQ0Li4xYzU3 MDE1ZGIgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0 LmgKLSsrKyBiL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAotQEAgLTM5 NDcsNyArMzk0Nyw3IEBAIHN0cnVjdCBrZXJuZWxfc3RhdGZzIHsKLSAgICAgICBMU1NfUkVHKDIs IGJ1Zik7Ci0gICAgICAgTFNTX0JPRFkodm9pZCosIG1tYXAyLCAiMCIoX19yMikpOwotICAgICB9 Ci0tI2Vsc2UKLSsjZWxpZiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAvKiBwcGM2NCBkb2Vzbid0 IGhhdmUgbW1hcDIgKi8KLSAgICAgI2RlZmluZSBfX05SX19tbWFwMiBfX05SX21tYXAyCi0gICAg IExTU19JTkxJTkUgX3N5c2NhbGw2KHZvaWQqLCBfbW1hcDIsICAgICAgICAgICAgdm9pZCosIHMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgICAgICAgICAgICAgICAgICAgbCwg aW50LCAgICAgICAgICAgICAgIHAsCi1AQCAtNDA1OCw3ICs0MDU4LDcgQEAgc3RydWN0IGtlcm5l bF9zdGF0ZnMgewotICAgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICBkZWZpbmVkKF9fQVJN X0FSQ0hfM19fKSB8fCBkZWZpbmVkKF9fQVJNX0VBQklfXykgfHwgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9B QkkzMikgfHwgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIGRlZmluZWQoX19QUENfXykgfHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgIChkZWZpbmVkKF9fUFBDX18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pKSB8fCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg KGRlZmluZWQoX19zMzkwX18pICYmICFkZWZpbmVkKF9fczM5MHhfXykpCi0gICAgIC8qIE9uIHRo ZXNlIGFyY2hpdGVjdHVyZXMsIGltcGxlbWVudCBtbWFwKCkgd2l0aCBtbWFwMigpLiAqLwotICAg ICBMU1NfSU5MSU5FIHZvaWQqIExTU19OQU1FKG1tYXApKHZvaWQgKnMsIHNpemVfdCBsLCBpbnQg cCwgaW50IGYsIGludCBkLAotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9w YXJ0eS9saWJwbmcxNi9wbmdwcml2LmggYi90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkv bGlicG5nMTYvcG5ncHJpdi5oCi1pbmRleCA1ODNjMjZmLi5lMDNkNjk3IDEwMDY0NAotLS0tIGEv dGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2xpYnBuZzE2L3BuZ3ByaXYuaAotKysrIGIv dGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2xpYnBuZzE2L3BuZ3ByaXYuaAotQEAgLTE5 NiwxMSArMTk2LDcgQEAKLSAjZW5kaWYKLSAKLSAjaWZuZGVmIFBOR19QT1dFUlBDX1ZTWF9PUFQK LS0jICBpZiBkZWZpbmVkKF9fUFBDNjRfXykgJiYgZGVmaW5lZChfX0FMVElWRUNfXykgJiYgZGVm aW5lZChfX1ZTWF9fKQotLSMgICAgIGRlZmluZSBQTkdfUE9XRVJQQ19WU1hfT1BUIDIKLS0jICBl bHNlCi0tIyAgICAgZGVmaW5lIFBOR19QT1dFUlBDX1ZTWF9PUFQgMAotLSMgIGVuZGlmCi0rIyAg ZGVmaW5lIFBOR19QT1dFUlBDX1ZTWF9PUFQgMAotICNlbmRpZgotIAotICNpZm5kZWYgUE5HX0lO VEVMX1NTRV9PUFQKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYyBi L3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9wZmZmdC5jCi1pbmRleCBiZGFjNGQ3ODQuLjUxZTBmMmNh YyAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L3BmZmZ0L3NyYy9wZmZmdC5jCi0rKysgYi90aGly ZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYwotQEAgLTEwMCw2ICsxMDAsNyBAQAotICAgIEFsdGl2 ZWMgc3VwcG9ydCBtYWNyb3MgCi0gKi8KLSAjaWYgIWRlZmluZWQoUEZGRlRfU0lNRF9ESVNBQkxF KSAmJiAoZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fcHBjNjRfXykpCi0rI2luY2x1ZGUg PGFsdGl2ZWMuaD4KLSB0eXBlZGVmIHZlY3RvciBmbG9hdCB2NHNmOwotICMgIGRlZmluZSBTSU1E X1NaIDQKLSAjICBkZWZpbmUgVlpFUk8oKSAoKHZlY3RvciBmbG9hdCkgdmVjX3NwbGF0X3U4KDAp KQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3NraWEvc3JjL3Nrc2wvU2tTTFN0cmluZy5jcHAg Yi90aGlyZF9wYXJ0eS9za2lhL3NyYy9za3NsL1NrU0xTdHJpbmcuY3BwCi1pbmRleCBlYzNlNTY5 NjQuLjRjZjg5OTlhMiAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L3NraWEvc3JjL3Nrc2wvU2tT TFN0cmluZy5jcHAKLSsrKyBiL3RoaXJkX3BhcnR5L3NraWEvc3JjL3Nrc2wvU2tTTFN0cmluZy5j cHAKLUBAIC0yMzQsNyArMjM0LDEyIEBAIFN0cmluZyB0b19zdHJpbmcoZG91YmxlIHZhbHVlKSB7 Ci0gICAgIGlmIChuZWVkc0RvdFplcm8pIHsKLSAgICAgICAgIGJ1ZmZlciA8PCAiLjAiOwotICAg ICB9Ci0tICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLnN0cigpLmNfc3RyKCkpOwotKwotKyAgICBz dGQ6OnN0cmluZyByZXQoYnVmZmVyLnN0cigpKTsKLSsgICAgaWYgKHNpZ25iaXQodmFsdWUpICYm IHJldFswXSA9PSAnLicpIHsKLSsgICAgICAgIHJldFswXSA9ICctJzsKLSsgICAgfQotKyAgICBy ZXR1cm4gU3RyaW5nKHJldC5jX3N0cigpKTsKLSB9Ci0gCi0gYm9vbCBzdG9kKGNvbnN0IFN0cmlu Z0ZyYWdtZW50JiBzLCBTS1NMX0ZMT0FUKiB2YWx1ZSkgewotZGlmZiAtLWdpdCBhL3RoaXJkX3Bh cnR5L3NxbGl0ZS9zcmMvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYyBiL3RoaXJkX3BhcnR5L3NxbGl0 ZS9zcmMvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYwotaW5kZXggNmI0YTc4OTlkLi5iOGM3ZmU0MTQg MTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2FtYWxnYW1hdGlvbi9zcWxpdGUz LmMKLSsrKyBiL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYwot QEAgLTE0NDc0LDcgKzE0NDc0LDggQEAgdHlwZWRlZiBJTlQxNl9UWVBFIExvZ0VzdDsKLSAjIGlm IGRlZmluZWQoaTM4NikgICAgICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgICAgIHx8IGRlZmluZWQo X01fSVg4NikgfHwgICAgXAotICAgICAgZGVmaW5lZChfX3g4Nl82NCkgIHx8IGRlZmluZWQoX194 ODZfNjRfXykgICAgfHwgZGVmaW5lZChfTV9YNjQpICB8fCAgICBcCi0gICAgICBkZWZpbmVkKF9N X0FNRDY0KSAgfHwgZGVmaW5lZChfTV9BUk0pICAgICAgICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8 ICAgIFwKLS0gICAgIGRlZmluZWQoX19BUk1FTF9fKSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVMX18p IHx8IGRlZmluZWQoX01fQVJNNjQpCi0rICAgICBkZWZpbmVkKF9fQVJNRUxfXykgfHwgZGVmaW5l ZChfX0FBUkNINjRFTF9fKSB8fCBkZWZpbmVkKF9NX0FSTTY0KSB8fCAgIFwKLSsgICAgIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykgJiYgKF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VO RElBTl9fKQotICMgICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICAxMjM0Ci0gIyBlbGlmIGRl ZmluZWQoc3BhcmMpICAgICB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IFwKLSAgICAgICAgZGVmaW5l ZChfX0FSTUVCX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUJfXykKLWRpZmYgLS1naXQgYS90aGly ZF9wYXJ0eS9zcWxpdGUvc3JjL2FtYWxnYW1hdGlvbl9kZXYvc3FsaXRlMy5jIGIvdGhpcmRfcGFy dHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb25fZGV2L3NxbGl0ZTMuYwotaW5kZXggZDMwYzliN2Rl Li5jZjc1YTY5ZDkgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2FtYWxnYW1h dGlvbl9kZXYvc3FsaXRlMy5jCi0rKysgYi90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2FtYWxnYW1h dGlvbl9kZXYvc3FsaXRlMy5jCi1AQCAtMTQ0ODcsNyArMTQ0ODcsOCBAQCB0eXBlZGVmIElOVDE2 X1RZUEUgTG9nRXN0OwotICMgaWYgZGVmaW5lZChpMzg2KSAgICAgIHx8IGRlZmluZWQoX19pMzg2 X18pICAgICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCi0gICAgICBkZWZpbmVkKF9feDg2 XzY0KSAgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSAgICB8fCBkZWZpbmVkKF9NX1g2NCkgIHx8ICAg IFwKLSAgICAgIGRlZmluZWQoX01fQU1ENjQpICB8fCBkZWZpbmVkKF9NX0FSTSkgICAgICAgIHx8 IGRlZmluZWQoX194ODYpICAgfHwgICAgXAotLSAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRl ZmluZWQoX19BQVJDSDY0RUxfXykgfHwgZGVmaW5lZChfTV9BUk02NCkKLSsgICAgIGRlZmluZWQo X19BUk1FTF9fKSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQp IHx8ICAgXAotKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAoX19CWVRFX09SREVSX18g PT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCi0gIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVS ICAgIDEyMzQKLSAjIGVsaWYgZGVmaW5lZChzcGFyYykgICAgIHx8IGRlZmluZWQoX19wcGNfXykg fHwgXAotICAgICAgICBkZWZpbmVkKF9fQVJNRUJfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFQl9f KQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvZXh0L3J0cmVlL3J0cmVlLmMg Yi90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2V4dC9ydHJlZS9ydHJlZS5jCi1pbmRleCBmNWI1N2E1 ZTIuLjgwYTJkMGFkOCAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvZXh0L3J0 cmVlL3J0cmVlLmMKLSsrKyBiL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvZXh0L3J0cmVlL3J0cmVl LmMKLUBAIC00NTAsNyArNDUwLDcgQEAgc3RydWN0IFJ0cmVlTWF0Y2hBcmcgewotICNpZiBkZWZp bmVkKGkzODYpICAgICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgIHx8IGRlZmluZWQoX01fSVg4Nikg fHwgICAgXAotICAgICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX01fWDY0KSAgfHwgICAgXAotICAgICBkZWZpbmVkKF9NX0FNRDY0KSB8fCBkZWZp bmVkKF9NX0FSTSkgICAgIHx8IGRlZmluZWQoX194ODYpICAgfHwgICAgXAotLSAgICBkZWZpbmVk KF9fYXJtX18pCi0rICAgIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9f KSAmJiAoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCi0gIyBkZWZp bmUgU1FMSVRFX0JZVEVPUkRFUiAgICAxMjM0Ci0gI2VsaWYgZGVmaW5lZChzcGFyYykgICAgfHwg ZGVmaW5lZChfX3BwY19fKQotICMgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMyMQotZGlm ZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oIGIvdGhpcmRf cGFydHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmgKLWluZGV4IDI0NTA3MGQ0Zi4uYjI1MTY0 ZTk1IDEwMDY0NAotLS0tIGEvdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmgK LSsrKyBiL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oCi1AQCAtODc3LDcg Kzg3Nyw4IEBAIHR5cGVkZWYgSU5UMTZfVFlQRSBMb2dFc3Q7Ci0gIyBpZiBkZWZpbmVkKGkzODYp ICAgICAgfHwgZGVmaW5lZChfX2kzODZfXykgICAgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAg IFwKLSAgICAgIGRlZmluZWQoX194ODZfNjQpICB8fCBkZWZpbmVkKF9feDg2XzY0X18pICAgIHx8 IGRlZmluZWQoX01fWDY0KSAgfHwgICAgXAotICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgIHx8IGRl ZmluZWQoX01fQVJNKSAgICAgICAgfHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCi0tICAgICBk ZWZpbmVkKF9fQVJNRUxfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFTF9fKSB8fCBkZWZpbmVkKF9N X0FSTTY0KQotKyAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUxf XykgfHwgZGVmaW5lZChfTV9BUk02NCkgfHwgXAotKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KSAmJiAoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCi0gIyAgIGRl ZmluZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQKLSAjIGVsaWYgZGVmaW5lZChzcGFyYykgICAg IHx8IGRlZmluZWQoX19wcGNfXykgfHwgXAotICAgICAgICBkZWZpbmVkKF9fQVJNRUJfXykgfHwg ZGVmaW5lZChfX0FBUkNINjRFQl9fKQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3dlYnJ0Yy9t b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxvY2suY2MgYi90aGlyZF9wYXJ0eS93ZWJy dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGlmZmVyX2Jsb2NrLmNjCi1pbmRleCA0ZjBjNTQz MGMuLjU0ZWUwODI5ZSAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rl c2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxvY2suY2MKLSsrKyBiL3RoaXJkX3BhcnR5L3dlYnJ0Yy9t b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxvY2suY2MKLUBAIC0zMCwxMSArMzAsNyBA QCBib29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWludDhfdCogaW1hZ2UxLCBjb25zdCB1aW50 OF90KiBpbWFnZTIpIHsKLSAgIHN0YXRpYyBib29sICgqZGlmZl9wcm9jKShjb25zdCB1aW50OF90 KiwgY29uc3QgdWludDhfdCopID0gbnVsbHB0cjsKLSAKLSAgIGlmICghZGlmZl9wcm9jKSB7Ci0t I2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNX0ZBTUlMWSkgfHwgZGVmaW5lZChXRUJSVENfQVJD SF9NSVBTX0ZBTUlMWSkKLS0gICAgLy8gRm9yIEFSTSBhbmQgTUlQUyBwcm9jZXNzb3JzLCBhbHdh eXMgdXNlIEMgdmVyc2lvbi4KLS0gICAgLy8gVE9ETyhoY2xhbSk6IEltcGxlbWVudCBhIE5FT04g dmVyc2lvbi4KLS0gICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVuY2VfQzsKLS0jZWxzZQot KyNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9GQU1JTFkpCi0gICAgIGJvb2wgaGF2ZV9zc2Uy ID0gR2V0Q1BVSW5mbyhrU1NFMikgIT0gMDsKLSAgICAgLy8gRm9yIHg4NiBwcm9jZXNzb3JzLCBj aGVjayBpZiBTU0UyIGlzIHN1cHBvcnRlZC4KLSAgICAgaWYgKGhhdmVfc3NlMiAmJiBrQmxvY2tT aXplID09IDMyKSB7Ci1AQCAtNDQsNiArNDAsMTAgQEAgYm9vbCBWZWN0b3JEaWZmZXJlbmNlKGNv bnN0IHVpbnQ4X3QqIGltYWdlMSwgY29uc3QgdWludDhfdCogaW1hZ2UyKSB7Ci0gICAgIH0gZWxz ZSB7Ci0gICAgICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVuY2VfQzsKLSAgICAgfQotKyNl bHNlCi0rICAgIC8vIEZvciBvdGhlciBwcm9jZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4K LSsgICAgLy8gVE9ETyhoY2xhbSk6IEltcGxlbWVudCBhIE5FT04gdmVyc2lvbi4KLSsgICAgZGlm Zl9wcm9jID0gJlZlY3RvckRpZmZlcmVuY2VfQzsKLSAjZW5kaWYKLSAgIH0KLSAKLWRpZmYgLS1n aXQgYS90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCBiL3RoaXJkX3Bh cnR5L3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vYXJjaC5oCi1pbmRleCBiZTIzNjdiODUuLmJlNGVl NDIzMyAxMDA2NDQKLS0tLSBhL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vYXJj aC5oCi0rKysgYi90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2FyY2guaAotQEAg LTc5LDYgKzc5LDE4IEBACi0gI2VsaWYgZGVmaW5lZChfX0VNU0NSSVBURU5fXykKLSAjZGVmaW5l IFdFQlJUQ19BUkNIXzMyX0JJVFMKLSAjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4K LSsjZWxpZiBkZWZpbmVkKF9fUFBDX18pCi0rI2RlZmluZSBXRUJSVENfQVJDSF9QUENfRkFNSUxZ Ci0rI2lmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fCi0rI2RlZmlu ZSBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCi0rI2Vsc2UKLSsjZGVmaW5lIFdFQlJUQ19BUkNI X0JJR19FTkRJQU4KLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX0xQNjRfXykKLSsjZGVmaW5lIFdF QlJUQ19BUkNIXzY0X0JJVFMKLSsjZWxzZQotKyNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUwot KyNlbmRpZgotICNlbHNlCi0gI2Vycm9yIFBsZWFzZSBhZGQgc3VwcG9ydCBmb3IgeW91ciBhcmNo aXRlY3R1cmUgaW4gcnRjX2Jhc2Uvc3lzdGVtL2FyY2guaAotICNlbmRpZgotZGlmZiAtLWdpdCBh L3Y4L0JVSUxELmduIGIvdjgvQlVJTEQuZ24KLWluZGV4IGYzOTUyOWEzYS4uZTg0ZmM0NDllIDEw MDY0NAotLS0tIGEvdjgvQlVJTEQuZ24KLSsrKyBiL3Y4L0JVSUxELmduCi1AQCAtODUwLDYgKzg1 MCwxMiBAQCBjb25maWcoInRvb2xjaGFpbiIpIHsKLSAgICAgfQotICAgICBpZiAoaG9zdF9ieXRl b3JkZXIgPT0gImxpdHRsZSIpIHsKLSAgICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNI X1BQQ19MRSIgXQotKyAgICAgIGNmbGFncyArPSBbCi0rICAgICAgICAjIEVuYWJsZSB1c2FnZSBv ZiBBbHRpVmVjLCBWU1gsIGFuZCBvdGhlciBQT1dFUjggYW5kIGhpZ2hlciBmZWF0dXJlcwotKyAg ICAgICAgIi1tY3B1PXBvd2VyOCIsCi0rICAgICAgICAiLW1hbHRpdmVjIiwKLSsgICAgICAgICIt bXZzeCIsCi0rICAgICAgXQotICAgICB9IGVsc2UgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJiaWci KSB7Ci0gICAgICAgZGVmaW5lcyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENfQkUiIF0KLSAgICAg ICBpZiAoY3VycmVudF9vcyA9PSAiYWl4IikgewotZGlmZiAtLWdpdCBhL3VpL2dsL2ZlYXR1cmVz LmduaSBiL3VpL2dsL2ZlYXR1cmVzLmduaQotaW5kZXggNWZkYTliNi4uM2QyZGQ4YiAxMDA2NDQK LS0tLSBhL3VpL2dsL2ZlYXR1cmVzLmduaQotKysrIGIvdWkvZ2wvZmVhdHVyZXMuZ25pCi1AQCAt MzIsNSArMzIsNiBAQCBkZWNsYXJlX2FyZ3MoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg KGlzX21hYyAmJiB1c2VfZWdsKSB8fCBpc19jaHJvbWVvc19hc2ggfHwgaXNfZnVjaHNpYSkgJiYK LSAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXRfY3B1ID09ICJ4ODYiIHx8IHRhcmdldF9j cHUgPT0gIng2NCIgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfY3B1ID09ICJh cm0iIHx8IHRhcmdldF9jcHUgPT0gImFybTY0IiB8fAotLSAgICAgICAgICAgICAgICAgICAgICAg IHRhcmdldF9jcHUgPT0gIm1pcHNlbCIgfHwgdGFyZ2V0X2NwdSA9PSAibWlwczY0ZWwiKQotKyAg ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9jcHUgPT0gIm1pcHNlbCIgfHwgdGFyZ2V0X2Nw dSA9PSAibWlwczY0ZWwiIHx8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2NwdSA9 PSAicHBjNjQiKQotIH0KLWRpZmYgLS1naXQgYS92OC90ZXN0L0JVSUxELmduIGIvdjgvdGVzdC9C VUlMRC5nbgotaW5kZXggZmI4NzJhZDM5Li40NWZjNTg1ZGQgMTAwNjQ0Ci0tLS0gYS92OC90ZXN0 L0JVSUxELmduCi0rKysgYi92OC90ZXN0L0JVSUxELmduCi1AQCAtMzYsNyArMzYsNyBAQCBncm91 cCgiZ25fYWxsIikgewotICAgICAgICJiZW5jaG1hcmtzL2NwcDpnbl9hbGwiLAotICAgICAgICJj Y3Rlc3Q6Y2N0ZXN0IiwKLSAgICAgICAiY2N0ZXN0OmdlbmVyYXRlLWJ5dGVjb2RlLWV4cGVjdGF0 aW9ucyIsCi0tICAgICAgInVuaXR0ZXN0czp1bml0dGVzdHMiLAotKyAgICAgICMidW5pdHRlc3Rz OnVuaXR0ZXN0cyIsCi0gICAgIF0KLSAgIH0KLSB9Ci1AQCAtODMsNyArODMsNyBAQAotICAgICAi bWVzc2FnZTp2OF9tZXNzYWdlIiwKLSAgICAgIm1qc3VuaXQ6djhfbWpzdW5pdCIsCi0gICAgICJt a2dyb2tkdW1wOm1rZ3Jva2R1bXAiLAotLSAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0rICAg ICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0gICAgICJ3ZWJraXQ6djhfd2Via2l0IiwKLSAgIF0K LSAKLUBAIC0xMDgsNyArMTA4LDcgQEAKLSAgICAgIm1lc3NhZ2U6djhfbWVzc2FnZSIsCi0gICAg ICJtanN1bml0OnY4X21qc3VuaXQiLAotICAgICAibWtncm9rZHVtcDpta2dyb2tkdW1wIiwKLS0g ICAgInVuaXR0ZXN0czp1bml0dGVzdHMiLAotKyAgICAjInVuaXR0ZXN0czp1bml0dGVzdHMiLAot ICAgXQotIAotICAgaWYgKHY4X2VuYWJsZV93ZWJhc3NlbWJseSkgewpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtc3dpZnRz aGFkZXIucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14 eHgtcHBjNjRsZS1zd2lmdHNoYWRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggZGY0NTNmNDkxZDhjLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtc3dpZnRzaGFkZXIucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0tLS0gYS90aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90 aGlyZF9wYXJ0eS9sbHZtLTEwLjAvQlVJTEQuZ24KLSsrKyBiL3RoaXJkX3BhcnR5L3N3aWZ0c2hh ZGVyL3RoaXJkX3BhcnR5L2xsdm0tMTAuMC9CVUlMRC5nbgotQEAgLTU3NCw2ICs1NzQsNyBAQCBz d2lmdHNoYWRlcl9sbHZtX3NvdXJjZV9zZXQoInN3aWZ0c2hhZGVyCi0gICAgICJsbHZtL2xpYi9N Qy9NQ0FzbUluZm9DT0ZGLmNwcCIsCi0gICAgICJsbHZtL2xpYi9NQy9NQ0FzbUluZm9EYXJ3aW4u Y3BwIiwKLSAgICAgImxsdm0vbGliL01DL01DQXNtSW5mb0VMRi5jcHAiLAotKyAgICAibGx2bS9s aWIvTUMvTUNBc21JbmZvWENPRkYuY3BwIiwKLSAgICAgImxsdm0vbGliL01DL01DQXNtTWFjcm8u Y3BwIiwKLSAgICAgImxsdm0vbGliL01DL01DQXNtU3RyZWFtZXIuY3BwIiwKLSAgICAgImxsdm0v bGliL01DL01DQXNzZW1ibGVyLmNwcCIsCi1AQCAtNjI5LDYgKzYzMCw3IEBAIHN3aWZ0c2hhZGVy X2xsdm1fc291cmNlX3NldCgic3dpZnRzaGFkZXIKLSAgICAgImxsdm0vbGliL01DL01DV2luQ09G RlN0cmVhbWVyLmNwcCIsCi0gICAgICJsbHZtL2xpYi9NQy9NQ1dpbkVILmNwcCIsCi0gICAgICJs bHZtL2xpYi9NQy9NQ1hDT0ZGU3RyZWFtZXIuY3BwIiwKLSsgICAgImxsdm0vbGliL01DL01DWENP RkZPYmplY3RUYXJnZXRXcml0ZXIuY3BwIiwKLSAgICAgImxsdm0vbGliL01DL01hY2hPYmplY3RX cml0ZXIuY3BwIiwKLSAgICAgImxsdm0vbGliL01DL1N0cmluZ1RhYmxlQnVpbGRlci5jcHAiLAot ICAgICAibGx2bS9saWIvTUMvU3VidGFyZ2V0RmVhdHVyZS5jcHAiLApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQWRkLWEtc2NyaXB0LXRvLWxp c3QtcGF0Y2gtdGFyZ2V0cy5wYXRjaC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9w YXRjaGVzL2VsZWN0cm9uLUFkZC1hLXNjcmlwdC10by1saXN0LXBhdGNoLXRhcmdldHMucGF0Y2gu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNmRiYTlkYzNiYy4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLUFk ZC1hLXNjcmlwdC10by1saXN0LXBhdGNoLXRhcmdldHMucGF0Y2gucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGZmNDEyMmYyMzZiNzBjMjcyYzc0NmQwYzMzNmNkYmQ1 ODhkNzhjZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFbHZpcyBQcmFuc2tldmlj aHVzIDxlbHZpc0BtYWdpYy5pbz4KLURhdGU6IFRodSwgMTIgRGVjIDIwMTkgMTY6MTI6MTggLTA1 MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIGEgc2NyaXB0IHRvIGxpc3QgcGF0Y2ggdGFyZ2V0cwot Ci0tLS0KLSBzY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5IHwgMjMgKysrKysrKysrKysrKysr KysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2Rl IDEwMDc1NSBzY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5Ci0KLWRpZmYgLS1naXQgYS9zY3Jp cHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5IGIvc2NyaXB0L2xpc3RfcGF0Y2hfdGFyZ2V0cy5weQot bmV3IGZpbGUgbW9kZSAxMDA3NTUKLWluZGV4IDAwMDAwMDAwMC4uNTUxNzNiYWM5Ci0tLS0gL2Rl di9udWxsCi0rKysgYi9zY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5Ci1AQCAtMCwwICsxLDIz IEBACi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rCi0raW1wb3J0IGFyZ3BhcnNlCi0raW1wb3J0 IGpzb24KLSsKLSsKLStkZWYgcGFyc2VfYXJncygpOgotKyAgcGFyc2VyID0gYXJncGFyc2UuQXJn dW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0FwcGx5IEVsZWN0cm9uIHBhdGNoZXMnKQotKyAgcGFy c2VyLmFkZF9hcmd1bWVudCgnY29uZmlnJywgbmFyZ3M9JysnLAotKyAgICAgICAgICAgICAgICAg ICAgICB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCdyJyksCi0rICAgICAgICAgICAgICAgICAgICAg IGhlbHA9J3BhdGNoZXNcJyBjb25maWcocykgaW4gdGhlIEpTT04gZm9ybWF0JykKLSsgIHJldHVy biBwYXJzZXIucGFyc2VfYXJncygpCi0rCi0rCi0rZGVmIG1haW4oKToKLSsgIGNvbmZpZ3MgPSBw YXJzZV9hcmdzKCkuY29uZmlnCi0rICBmb3IgY29uZmlnX2pzb24gaW4gY29uZmlnczoKLSsgICAg Zm9yIHBhdGNoX2RpciwgcmVwbyBpbiBqc29uLmxvYWQoY29uZmlnX2pzb24pLml0ZXJpdGVtcygp OgotKyAgICAgIHByaW50KHJlcG8pCi0rCi0rCi0raWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK LSsgIG1haW4oKQotLS0gCi0yLjIzLjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEz L2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQnVpbGQtZml4ZXMucGF0Y2gucGF0Y2ggYi9zcmNwa2dz L2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1CdWlsZC1maXhlcy5wYXRjaC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk4YmZhOWJjYjJiLi4wMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQnVpbGQt Zml4ZXMucGF0Y2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1kaWZmIC0t Z2l0IGEvYnVpbGQvYXJncy9yZWxlYXNlLmduIGIvYnVpbGQvYXJncy9yZWxlYXNlLmduCi1pbmRl eCBlNTAxN2Y2ZTEuLjU5MjA3YjM4OSAxMDA2NDQKLS0tLSBhL2J1aWxkL2FyZ3MvcmVsZWFzZS5n bgotKysrIGIvYnVpbGQvYXJncy9yZWxlYXNlLmduCi1AQCAtMSw2ICsxLDQgQEAKLSBpbXBvcnQo ImFsbC5nbiIpCi0taXNfY29tcG9uZW50X2J1aWxkID0gZmFsc2UKLS1pc19vZmZpY2lhbF9idWls ZCA9IHRydWUKLSAKLSAjIFRoaXMgbWF5IGJlIGd1YXJkZWQgYmVoaW5kIGlzX2Nocm9tZV9icmFu ZGVkIGFsb25nc2lkZQotICMgcHJvcHJpZXRhcnlfY29kZWNzIGh0dHBzOi8vd2VicnRjLXJldmll dy5nb29nbGVzb3VyY2UuY29tL2Mvc3JjLysvMzYzMjEsCi1AQCAtOCw5ICs2LDMgQEAgaXNfb2Zm aWNpYWxfYnVpbGQgPSB0cnVlCi0gIyBUaGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRlY29kZXIg ZGVwZW5kcyBvbiB3aGV0aGVyIGZmbXBlZyBoYXMKLSAjIGJlZW4gYnVpbHQgd2l0aCBILjI2NCBz dXBwb3J0LgotIHJ0Y191c2VfaDI2NCA9IHByb3ByaWV0YXJ5X2NvZGVjcwotLQotLSMgQnkgZGVm YXVsdCwgRWxlY3Ryb24gYnVpbGRzIGZmbXBlZyB3aXRoIHByb3ByaWV0YXJ5IGNvZGVjcyBlbmFi bGVkLiBJbiBvcmRlcgotLSMgdG8gZmFjaWxpdGF0ZSB1c2VycyB3aG8gZG9uJ3Qgd2FudCB0byBz aGlwIHByb3ByaWV0YXJ5IGNvZGVjcyBpbiBmZm1wZWcsIG9yCi0tIyB3aG8gaGF2ZSBhbiBMR1BM IHJlcXVpcmVtZW50IHRvIHNoaXAgZmZtcGVnIGFzIGEgZHluYW1pY2FsbHkgbGlua2VkIGxpYnJh cnksCi0tIyB3ZSBidWlsZCBmZm1wZWcgYXMgYSBzaGFyZWQgbGlicmFyeS4KLS1pc19jb21wb25l bnRfZmZtcGVnID0gdHJ1ZQotZGlmZiAtLWdpdCBhL2J1aWxkL25wbS5nbmkgYi9idWlsZC9ucG0u Z25pCi1pbmRleCBhMTk4N2QwOTUuLmZiMzNhMTRjMyAxMDA2NDQKLS0tLSBhL2J1aWxkL25wbS5n bmkKLSsrKyBiL2J1aWxkL25wbS5nbmkKLUBAIC0zNSw3ICszNSw2IEBAIHRlbXBsYXRlKCJucG1f YWN0aW9uIikgewotICAgICBpZiAoIWRlZmluZWQoZGVwcykpIHsKLSAgICAgICBkZXBzID0gW10K LSAgICAgfQotLSAgICBkZXBzICs9IFsgIjpucG1fcHJlX2ZsaWdodF8iICsgdGFyZ2V0X25hbWUg XQotIAotICAgICBzY3JpcHQgPSAiLy9lbGVjdHJvbi9idWlsZC9ucG0tcnVuLnB5IgotICAgICBh cmdzID0gWwotZGlmZiAtLWdpdCBhL3BhdGNoZXMvbm9kZS9maXhfYWRkX2RlZmF1bHRfdmFsdWVz X2Zvcl9lbmFibGVfbHRvX2FuZF9idWlsZF92OF93aXRoX2duX2luLnBhdGNoIGIvcGF0Y2hlcy9u b2RlL2ZpeF9hZGRfZGVmYXVsdF92YWx1ZXNfZm9yX2VuYWJsZV9sdG9fYW5kX2J1aWxkX3Y4X3dp dGhfZ25faW4ucGF0Y2gKLWluZGV4IDBkYzk5MTZiZS4uN2VhYTQ2YmY1IDEwMDY0NAotLS0tIGEv cGF0Y2hlcy9ub2RlL2ZpeF9hZGRfZGVmYXVsdF92YWx1ZXNfZm9yX2VuYWJsZV9sdG9fYW5kX2J1 aWxkX3Y4X3dpdGhfZ25faW4ucGF0Y2gKLSsrKyBiL3BhdGNoZXMvbm9kZS9maXhfYWRkX2RlZmF1 bHRfdmFsdWVzX2Zvcl9lbmFibGVfbHRvX2FuZF9idWlsZF92OF93aXRoX2duX2luLnBhdGNoCi1A QCAtMzAsNyArMzAsNyBAQAotICsgICAgIyB0aGVzZSB2YWx1ZXMgYmVpbmcgYWNjdXJhdGUuCi0g KyAgICAnYnVpbGRfdjhfd2l0aF9nbic6ICdmYWxzZScsCi0gKyAgICAnZW5hYmxlX2x0byUnOiAn ZmFsc2UnLAotLSsKLSsrICAgICdvcGVuc3NsX2ZpcHMnOiAnJywKLSAgICAgICdjb25kaXRpb25z JzogWwotICAgICAgICBbJ3RhcmdldF9hcmNoPT0iYXJtNjQiJywgewotICAgICAgICAgICMgRGlz YWJsZWQgcGVuZGluZyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzIzOTEz LgotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9lbGVjdHJv bi1kb250LWFzc3VtZS1weXRob24taXMtcHl0aG9uMi5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLWRvbnQtYXNzdW1lLXB5dGhvbi1pcy1weXRob24yLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjEzNDc0ODAyNWIuLjAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1kb250 LWFzc3VtZS1weXRob24taXMtcHl0aG9uMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICsw LDAgQEAKLS0tLSBhL2J1aWxkL3ppcC5weS5vcmlnCTIwMjAtMDQtMjcgMTc6NTk6NTMuNDk5Mjgx NjY3ICswMjAwCi0rKysgYi9idWlsZC96aXAucHkJMjAyMC0wNC0yNyAxNzo1OTo1Ny42NTU4Mzkx NDMgKzAyMDAKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vz ci9iaW4vZW52IHB5dGhvbjIKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u Ci0gaW1wb3J0IG9zCi0gaW1wb3J0IHN1YnByb2Nlc3MKLQotLS0tIGEvYnVpbGQvbnBtLXJ1bi5w eS5vcmlnCTIwMjAtMDQtMjcgMTc6NTk6NTAuODI5MzUxODA3ICswMjAwCi0rKysgYi9idWlsZC9u cG0tcnVuLnB5CTIwMjAtMDQtMjcgMTg6MDA6MDIuNzAyMzczMjU2ICswMjAwCi1AQCAtMSw0ICsx LDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24yCi0g ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotIGltcG9ydCBvcwotIGltcG9y dCBzdWJwcm9jZXNzCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hl cy9lbGVjdHJvbi1leGNsdWRlLWNvbnRlbnQtdGVzdC1wYXRjaGVzLnBhdGNoIGIvc3JjcGtncy9l bGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tZXhjbHVkZS1jb250ZW50LXRlc3QtcGF0 Y2hlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY2ZTU5NDUzZjljLi4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvZWxlY3Ry b24tZXhjbHVkZS1jb250ZW50LXRlc3QtcGF0Y2hlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDEwICswLDAgQEAKLS0tLSBhL3NjcmlwdC9hcHBseV9hbGxfcGF0Y2hlcy5weQkyMDIwLTA4LTIy IDE3OjQ2OjQxLjc5NjcwNzUwNiArMDIwMAotKysrIC0JMjAyMC0wOC0yMiAxNzo0NzowNS44ODc4 MTM1MTIgKzAyMDAKLUBAIC0xNCw2ICsxNCw3IEBACi0gICBmb3IgcGF0Y2hfZGlyLCByZXBvIGlu IGRpcnMuaXRlbXMoKToKLSAgICAgZ2l0LmltcG9ydF9wYXRjaGVzKHJlcG89cmVwbywgcGF0Y2hf ZGF0YT1wYXRjaF9mcm9tX2RpcihwYXRjaF9kaXIpLAotICAgICAgIHRocmVld2F5PXRocmVld2F5 IGlzIG5vdCBOb25lLAotKyAgICAgIGV4Y2x1ZGU9Wyd0aGlyZF9wYXJ0eS9ibGluay90b29scy9i bGlua3B5L3ByZXN1Ym1pdC8qKicsICd0ZXN0L21qc3VuaXQvKionLCAnY29udGVudC90ZXN0Lyoq JywgJ3Rlc3QvY2N0ZXN0LyoqJywgJ3Rlc3QvdW5pdHRlc3RzLyoqJywgJ3RoaXJkX3BhcnR5L2Js aW5rL3dlYl90ZXN0cy8qKiddLAotICAgICAgIGNvbW1pdHRlcl9uYW1lPSJFbGVjdHJvbiBTY3Jp cHRzIiwgY29tbWl0dGVyX2VtYWlsPSJzY3JpcHRzQGVsZWN0cm9uIikKLSAKLSAKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29w ZW5ic2QuY2MgYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmlsZXMvYXVkaW9fbWFu YWdlcl9vcGVuYnNkLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzdhYThlZmE2 NmYuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmls ZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAg QEAKLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp bGUuCi0KLSNpbmNsdWRlICJiYXNlL21ldHJpY3MvaGlzdG9ncmFtX21hY3Jvcy5oIgotI2luY2x1 ZGUgImJhc2UvbWVtb3J5L3B0cl91dGlsLmgiCi0KLSNpbmNsdWRlICJtZWRpYS9hdWRpby9vcGVu YnNkL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oIgotCi0jaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVk aW9fZGV2aWNlX2Rlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9fb3V0 cHV0X2Rpc3BhdGNoZXIuaCIKLSNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1 dC5oIgotI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5oIgotI2luY2x1 ZGUgIm1lZGlhL2Jhc2UvbGltaXRzLmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYV9zd2l0 Y2hlcy5oIgotCi1uYW1lc3BhY2UgbWVkaWEgewotCi0vLyBNYXhpbXVtIG51bWJlciBvZiBvdXRw dXQgc3RyZWFtcyB0aGF0IGNhbiBiZSBvcGVuIHNpbXVsdGFuZW91c2x5Lgotc3RhdGljIGNvbnN0 IGludCBrTWF4T3V0cHV0U3RyZWFtcyA9IDQ7Ci0KLS8vIERlZmF1bHQgc2FtcGxlIHJhdGUgZm9y IGlucHV0IGFuZCBvdXRwdXQgc3RyZWFtcy4KLXN0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRTYW1w bGVSYXRlID0gNDgwMDA7Ci0KLXZvaWQgQWRkRGVmYXVsdERldmljZShBdWRpb0RldmljZU5hbWVz KiBkZXZpY2VfbmFtZXMpIHsKLSAgRENIRUNLKGRldmljZV9uYW1lcy0+ZW1wdHkoKSk7Ci0gIGRl dmljZV9uYW1lcy0+cHVzaF9mcm9udChBdWRpb0RldmljZU5hbWU6OkNyZWF0ZURlZmF1bHQoKSk7 Ci19Ci0KLWJvb2wgQXVkaW9NYW5hZ2VyT3BlbkJTRDo6SGFzQXVkaW9PdXRwdXREZXZpY2VzKCkg ewotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBBdWRpb01hbmFnZXJPcGVuQlNEOjpIYXNBdWRp b0lucHV0RGV2aWNlcygpIHsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgQXVkaW9NYW5hZ2Vy T3BlbkJTRDo6R2V0QXVkaW9JbnB1dERldmljZU5hbWVzKAotICAgIEF1ZGlvRGV2aWNlTmFtZXMq IGRldmljZV9uYW1lcykgewotICBEQ0hFQ0soZGV2aWNlX25hbWVzLT5lbXB0eSgpKTsKLSAgQWRk RGVmYXVsdERldmljZShkZXZpY2VfbmFtZXMpOwotfQotCi12b2lkIEF1ZGlvTWFuYWdlck9wZW5C U0Q6OkdldEF1ZGlvT3V0cHV0RGV2aWNlTmFtZXMoCi0gICAgQXVkaW9EZXZpY2VOYW1lcyogZGV2 aWNlX25hbWVzKSB7Ci0gIEFkZERlZmF1bHREZXZpY2UoZGV2aWNlX25hbWVzKTsKLX0KLQotY29u c3QgY2hhciogQXVkaW9NYW5hZ2VyT3BlbkJTRDo6R2V0TmFtZSgpIHsKLSAgcmV0dXJuICJTTkRJ TyI7Ci19Ci0KLUF1ZGlvUGFyYW1ldGVycyBBdWRpb01hbmFnZXJPcGVuQlNEOjpHZXRJbnB1dFN0 cmVhbVBhcmFtZXRlcnMoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCkgewotICBz dGF0aWMgY29uc3QgaW50IGtEZWZhdWx0SW5wdXRCdWZmZXJTaXplID0gMTAyNDsKLQotICBpbnQg dXNlcl9idWZmZXJfc2l6ZSA9IEdldFVzZXJCdWZmZXJTaXplKCk7Ci0gIGludCBidWZmZXJfc2l6 ZSA9IHVzZXJfYnVmZmVyX3NpemUgPwotICAgICAgdXNlcl9idWZmZXJfc2l6ZSA6IGtEZWZhdWx0 SW5wdXRCdWZmZXJTaXplOwotCi0gIHJldHVybiBBdWRpb1BhcmFtZXRlcnMoCi0gICAgICBBdWRp b1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgQ0hBTk5FTF9MQVlPVVRfU1RFUkVP LAotICAgICAga0RlZmF1bHRTYW1wbGVSYXRlLCBidWZmZXJfc2l6ZSk7Ci19Ci0KLUF1ZGlvTWFu YWdlck9wZW5CU0Q6OkF1ZGlvTWFuYWdlck9wZW5CU0Qoc3RkOjp1bmlxdWVfcHRyPEF1ZGlvVGhy ZWFkPiBhdWRpb190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEF1ZGlvTG9nRmFjdG9yeSogYXVkaW9fbG9nX2ZhY3RvcnkpCi0gICAgOiBBdWRpb01hbmFn ZXJCYXNlKHN0ZDo6bW92ZShhdWRpb190aHJlYWQpLAotICAgICAgICAgICAgICAgICAgICAgICBh dWRpb19sb2dfZmFjdG9yeSkgewotICBETE9HKFdBUk5JTkcpIDw8ICJBdWRpb01hbmFnZXJPcGVu QlNEIjsKLSAgU2V0TWF4T3V0cHV0U3RyZWFtc0FsbG93ZWQoa01heE91dHB1dFN0cmVhbXMpOwot fQotCi1BdWRpb01hbmFnZXJPcGVuQlNEOjp+QXVkaW9NYW5hZ2VyT3BlbkJTRCgpIHsKLSAgU2h1 dGRvd24oKTsKLX0KLQotQXVkaW9PdXRwdXRTdHJlYW0qIEF1ZGlvTWFuYWdlck9wZW5CU0Q6Ok1h a2VMaW5lYXJPdXRwdXRTdHJlYW0oCi0gICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMs Ci0gICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgewotICBEQ0hFQ0tfRVEoQXVk aW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTElORUFSLCBwYXJhbXMuZm9ybWF0KCkpOwotICByZXR1 cm4gTWFrZU91dHB1dFN0cmVhbShwYXJhbXMpOwotfQotCi1BdWRpb091dHB1dFN0cmVhbSogQXVk aW9NYW5hZ2VyT3BlbkJTRDo6TWFrZUxvd0xhdGVuY3lPdXRwdXRTdHJlYW0oCi0gICAgY29uc3Qg QXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9p ZCwKLSAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7Ci0gIERMT0dfSUYoRVJS T1IsICFkZXZpY2VfaWQuZW1wdHkoKSkgPDwgIk5vdCBpbXBsZW1lbnRlZCEiOwotICBEQ0hFQ0tf RVEoQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTE9XX0xBVEVOQ1ksIHBhcmFtcy5mb3JtYXQo KSk7Ci0gIHJldHVybiBNYWtlT3V0cHV0U3RyZWFtKHBhcmFtcyk7Ci19Ci0KLUF1ZGlvSW5wdXRT dHJlYW0qIEF1ZGlvTWFuYWdlck9wZW5CU0Q6Ok1ha2VMaW5lYXJJbnB1dFN0cmVhbSgKLSAgICBj b25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2 aWNlX2lkLAotICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsKLSAgRENIRUNL X0VRKEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiwgcGFyYW1zLmZvcm1hdCgpKTsK LSAgcmV0dXJuIE1ha2VJbnB1dFN0cmVhbShwYXJhbXMpOwotfQotCi1BdWRpb0lucHV0U3RyZWFt KiBBdWRpb01hbmFnZXJPcGVuQlNEOjpNYWtlTG93TGF0ZW5jeUlucHV0U3RyZWFtKAotICAgIGNv bnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZp Y2VfaWQsCi0gICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgewotICBEQ0hFQ0tf RVEoQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTE9XX0xBVEVOQ1ksIHBhcmFtcy5mb3JtYXQo KSk7Ci0gIHJldHVybiBNYWtlSW5wdXRTdHJlYW0ocGFyYW1zKTsKLX0KLQotQXVkaW9QYXJhbWV0 ZXJzIEF1ZGlvTWFuYWdlck9wZW5CU0Q6OkdldFByZWZlcnJlZE91dHB1dFN0cmVhbVBhcmFtZXRl cnMoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9kZXZpY2VfaWQsCi0gICAgY29uc3Qg QXVkaW9QYXJhbWV0ZXJzJiBpbnB1dF9wYXJhbXMpIHsKLSAgLy8gVE9ETyh0b21taSk6IFN1cHBv cnQgfG91dHB1dF9kZXZpY2VfaWR8LgotICBETE9HX0lGKEVSUk9SLCAhb3V0cHV0X2RldmljZV9p ZC5lbXB0eSgpKSA8PCAiTm90IGltcGxlbWVudGVkISI7Ci0gIHN0YXRpYyBjb25zdCBpbnQga0Rl ZmF1bHRPdXRwdXRCdWZmZXJTaXplID0gMjA0ODsKLQotICBDaGFubmVsTGF5b3V0IGNoYW5uZWxf bGF5b3V0ID0gQ0hBTk5FTF9MQVlPVVRfU1RFUkVPOwotICBpbnQgc2FtcGxlX3JhdGUgPSBrRGVm YXVsdFNhbXBsZVJhdGU7Ci0gIGludCBidWZmZXJfc2l6ZSA9IGtEZWZhdWx0T3V0cHV0QnVmZmVy U2l6ZTsKLSAgaWYgKGlucHV0X3BhcmFtcy5Jc1ZhbGlkKCkpIHsKLSAgICBzYW1wbGVfcmF0ZSA9 IGlucHV0X3BhcmFtcy5zYW1wbGVfcmF0ZSgpOwotICAgIGNoYW5uZWxfbGF5b3V0ID0gaW5wdXRf cGFyYW1zLmNoYW5uZWxfbGF5b3V0KCk7Ci0gICAgYnVmZmVyX3NpemUgPSBzdGQ6Om1pbihidWZm ZXJfc2l6ZSwgaW5wdXRfcGFyYW1zLmZyYW1lc19wZXJfYnVmZmVyKCkpOwotICB9Ci0KLSAgaW50 IHVzZXJfYnVmZmVyX3NpemUgPSBHZXRVc2VyQnVmZmVyU2l6ZSgpOwotICBpZiAodXNlcl9idWZm ZXJfc2l6ZSkKLSAgICBidWZmZXJfc2l6ZSA9IHVzZXJfYnVmZmVyX3NpemU7Ci0KLSAgcmV0dXJu IEF1ZGlvUGFyYW1ldGVycygKLSAgICAgIEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19M QVRFTkNZLCBjaGFubmVsX2xheW91dCwKLSAgICAgIHNhbXBsZV9yYXRlLCBidWZmZXJfc2l6ZSk7 Ci19Ci0KLUF1ZGlvSW5wdXRTdHJlYW0qIEF1ZGlvTWFuYWdlck9wZW5CU0Q6Ok1ha2VJbnB1dFN0 cmVhbSgKLSAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcykgewotICBETE9HKFdBUk5J TkcpIDw8ICJNYWtlSW5wdXRTdHJlYW0iOwotICByZXR1cm4gbmV3IFNuZGlvQXVkaW9JbnB1dFN0 cmVhbSh0aGlzLAotICAgICAgICAgICAgIEF1ZGlvRGV2aWNlRGVzY3JpcHRpb246OmtEZWZhdWx0 RGV2aWNlSWQsIHBhcmFtcyk7Ci19Ci0KLUF1ZGlvT3V0cHV0U3RyZWFtKiBBdWRpb01hbmFnZXJP cGVuQlNEOjpNYWtlT3V0cHV0U3RyZWFtKAotICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFy YW1zKSB7Ci0gIERMT0coV0FSTklORykgPDwgIk1ha2VPdXRwdXRTdHJlYW0iOwotICByZXR1cm4g bmV3IFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0ocGFyYW1zLCB0aGlzKTsKLX0KLQotfSAgLy8gbmFt ZXNwYWNlIG1lZGlhCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8t ZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMv c25kaW8tZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDhjOTlkYjk2NmQ2NS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZWxlY3Ry b24xMy9maWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuaAorKysgL2Rldi9u dWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0g QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSNpZm5kZWYgTUVESUFfQVVESU9fT1BFTkJTRF9BVURJ T19NQU5BR0VSX09QRU5CU0RfSF8KLSNkZWZpbmUgTUVESUFfQVVESU9fT1BFTkJTRF9BVURJT19N QU5BR0VSX09QRU5CU0RfSF8KLQotI2luY2x1ZGUgPHNldD4KLQotI2luY2x1ZGUgImJhc2UvY29t cGlsZXJfc3BlY2lmaWMuaCIKLSNpbmNsdWRlICJiYXNlL21hY3Jvcy5oIgotI2luY2x1ZGUgImJh c2UvbWVtb3J5L3JlZl9jb3VudGVkLmgiCi0jaW5jbHVkZSAiYmFzZS90aHJlYWRpbmcvdGhyZWFk LmgiCi0jaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9fbWFuYWdlcl9iYXNlLmgiCi0KLW5hbWVz cGFjZSBtZWRpYSB7Ci0KLWNsYXNzIE1FRElBX0VYUE9SVCBBdWRpb01hbmFnZXJPcGVuQlNEIDog cHVibGljIEF1ZGlvTWFuYWdlckJhc2UgewotIHB1YmxpYzoKLSAgQXVkaW9NYW5hZ2VyT3BlbkJT RChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9UaHJlYWQ+IGF1ZGlvX3RocmVhZCwKLSAgICAgICAgICAg ICAgICAgICBBdWRpb0xvZ0ZhY3RvcnkqIGF1ZGlvX2xvZ19mYWN0b3J5KTsKLSAgfkF1ZGlvTWFu YWdlck9wZW5CU0QoKSBvdmVycmlkZTsKLQotICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb01h bmFnZXIuCi0gIGJvb2wgSGFzQXVkaW9PdXRwdXREZXZpY2VzKCkgb3ZlcnJpZGU7Ci0gIGJvb2wg SGFzQXVkaW9JbnB1dERldmljZXMoKSBvdmVycmlkZTsKLSAgdm9pZCBHZXRBdWRpb0lucHV0RGV2 aWNlTmFtZXMoQXVkaW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSBvdmVycmlkZTsKLSAgdm9p ZCBHZXRBdWRpb091dHB1dERldmljZU5hbWVzKEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1l cykgb3ZlcnJpZGU7Ci0gIEF1ZGlvUGFyYW1ldGVycyBHZXRJbnB1dFN0cmVhbVBhcmFtZXRlcnMo Ci0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkKSBvdmVycmlkZTsKLSAgY29uc3Qg Y2hhciogR2V0TmFtZSgpIG92ZXJyaWRlOwotCi0gIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlv TWFuYWdlckJhc2UuCi0gIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlTGluZWFyT3V0cHV0U3RyZWFt KAotICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCi0gICAgICBjb25zdCBMb2dD YWxsYmFjayYgbG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKLSAgQXVkaW9PdXRwdXRTdHJlYW0qIE1h a2VMb3dMYXRlbmN5T3V0cHV0U3RyZWFtKAotICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBw YXJhbXMsCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAotICAgICAgY29uc3Qg TG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7Ci0gIEF1ZGlvSW5wdXRTdHJlYW0q IE1ha2VMaW5lYXJJbnB1dFN0cmVhbSgKLSAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFy YW1zLAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKLSAgICAgIGNvbnN0IExv Z0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIG92ZXJyaWRlOwotICBBdWRpb0lucHV0U3RyZWFtKiBN YWtlTG93TGF0ZW5jeUlucHV0U3RyZWFtKAotICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBw YXJhbXMsCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAotICAgICAgY29uc3Qg TG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIEF1 ZGlvUGFyYW1ldGVycyBHZXRQcmVmZXJyZWRPdXRwdXRTdHJlYW1QYXJhbWV0ZXJzKAotICAgICAg Y29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9kZXZpY2VfaWQsCi0gICAgICBjb25zdCBBdWRpb1Bh cmFtZXRlcnMmIGlucHV0X3BhcmFtcykgb3ZlcnJpZGU7Ci0KLSBwcml2YXRlOgotICAvLyBDYWxs ZWQgYnkgTWFrZUxpbmVhck91dHB1dFN0cmVhbSBhbmQgTWFrZUxvd0xhdGVuY3lPdXRwdXRTdHJl YW0uCi0gIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlT3V0cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFy YW1ldGVycyYgcGFyYW1zKTsKLSAgQXVkaW9JbnB1dFN0cmVhbSogTWFrZUlucHV0U3RyZWFtKGNv bnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsKLQotICBESVNBTExPV19DT1BZX0FORF9BU1NJ R04oQXVkaW9NYW5hZ2VyT3BlbkJTRCk7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgbWVkaWEKLQot I2VuZGlmICAvLyBNRURJQV9BVURJT19PUEVOQlNEX0FVRElPX01BTkFHRVJfT1BFTkJTRF9IXwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lu cHV0LmNjIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0 LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjU0MzliNDlhMDcuLjAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9faW5w dXQuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTMg VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0jaW5jbHVkZSAiYmFzZS9iaW5k LmgiCi0jaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIK LSNpbmNsdWRlICJtZWRpYS9iYXNlL2F1ZGlvX3RpbWVzdGFtcF9oZWxwZXIuaCIKLSNpbmNsdWRl ICJtZWRpYS9hdWRpby9vcGVuYnNkL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oIgotI2luY2x1ZGUg Im1lZGlhL2F1ZGlvL2F1ZGlvX21hbmFnZXIuaCIKLSNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRp by9zbmRpb19pbnB1dC5oIgotCi1uYW1lc3BhY2UgbWVkaWEgewotCi1zdGF0aWMgY29uc3QgU2Ft cGxlRm9ybWF0IGtTYW1wbGVGb3JtYXQgPSBrU2FtcGxlRm9ybWF0UzE2OwotCi12b2lkIFNuZGlv QXVkaW9JbnB1dFN0cmVhbTo6T25Nb3ZlQ2FsbGJhY2sodm9pZCAqYXJnLCBpbnQgZGVsdGEpCi17 Ci0gIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9J bnB1dFN0cmVhbSo+KGFyZyk7Ci0KLSAgc2VsZi0+aHdfZGVsYXkgKz0gZGVsdGE7Ci19Ci0KLXZv aWQgKlNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6VGhyZWFkRW50cnkodm9pZCAqYXJnKSB7Ci0gIFNu ZGlvQXVkaW9JbnB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9JbnB1dFN0 cmVhbSo+KGFyZyk7Ci0KLSAgc2VsZi0+VGhyZWFkTG9vcCgpOwotICByZXR1cm4gTlVMTDsKLX0K LQotU25kaW9BdWRpb0lucHV0U3RyZWFtOjpTbmRpb0F1ZGlvSW5wdXRTdHJlYW0oQXVkaW9NYW5h Z2VyQmFzZSogbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfbmFtZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1z KQotICAgIDogbWFuYWdlcihtYW5hZ2VyKSwKLSAgICAgIHBhcmFtcyhwYXJhbXMpLAotICAgICAg YXVkaW9fYnVzKEF1ZGlvQnVzOjpDcmVhdGUocGFyYW1zKSksCi0gICAgICBzdGF0ZShrQ2xvc2Vk KSB7Ci19Ci0KLVNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6flNuZGlvQXVkaW9JbnB1dFN0cmVhbSgp IHsKLSAgaWYgKHN0YXRlICE9IGtDbG9zZWQpCi0gICAgQ2xvc2UoKTsKLX0KLQotYm9vbCBTbmRp b0F1ZGlvSW5wdXRTdHJlYW06Ok9wZW4oKSB7Ci0gIHN0cnVjdCBzaW9fcGFyIHBhcjsKLSAgaW50 IHNpZzsKLQotICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAg aWYgKHBhcmFtcy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIg JiYKLSAgICAgIHBhcmFtcy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9M T1dfTEFURU5DWSkgewotICAgIExPRyhXQVJOSU5HKSA8PCAiVW5zdXBwb3J0ZWQgYXVkaW8gZm9y bWF0LiI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgc2lvX2luaXRwYXIoJnBhcik7Ci0g IHBhci5yYXRlID0gcGFyYW1zLnNhbXBsZV9yYXRlKCk7Ci0gIHBhci5yY2hhbiA9IHBhcmFtcy5j aGFubmVscygpOwotICBwYXIuYml0cyA9IFNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1Nh bXBsZUZvcm1hdCk7Ci0gIHBhci5icHMgPSBwYXIuYml0cyAvIDg7Ci0gIHBhci5zaWcgPSBzaWcg PSBwYXIuYml0cyAhPSA4ID8gMSA6IDA7Ci0gIHBhci5sZSA9IFNJT19MRV9OQVRJVkU7Ci0gIHBh ci5hcHBidWZzeiA9IHBhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpOwotCi0gIGhkbCA9IHNpb19v cGVuKFNJT19ERVZBTlksIFNJT19SRUMsIDApOwotCi0gIGlmIChoZGwgPT0gTlVMTCkgewotICAg IExPRyhFUlJPUikgPDwgIkNvdWxkbid0IG9wZW4gYXVkaW8gZGV2aWNlLiI7Ci0gICAgcmV0dXJu IGZhbHNlOwotICB9Ci0KLSAgaWYgKCFzaW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNpb19nZXRw YXIoaGRsLCAmcGFyKSkgewotICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHNldCBhdWRpbyBw YXJhbWV0ZXJzLiI7Ci0gICAgZ290byBiYWRfY2xvc2U7Ci0gIH0KLQotICBpZiAocGFyLnJhdGUg ICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLnNhbXBsZV9yYXRlKCkgfHwKLSAgICAgIHBhci5yY2hh biAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5jaGFubmVscygpIHx8Ci0gICAgICBwYXIuYml0cyAg IT0gKHVuc2lnbmVkIGludClTYW1wbGVGb3JtYXRUb0JpdHNQZXJDaGFubmVsKGtTYW1wbGVGb3Jt YXQpIHx8Ci0gICAgICBwYXIuc2lnICAgIT0gKHVuc2lnbmVkIGludClzaWcgfHwKLSAgICAgIChw YXIuYnBzID4gMSAmJiBwYXIubGUgIT0gU0lPX0xFX05BVElWRSkgfHwKLSAgICAgIChwYXIuYml0 cyAhPSBwYXIuYnBzICogOCkpIHsKLSAgICBMT0coRVJST1IpIDw8ICJVbnN1cHBvcnRlZCBhdWRp byBwYXJhbWV0ZXJzLiI7Ci0gICAgZ290byBiYWRfY2xvc2U7Ci0gIH0KLSAgc3RhdGUgPSBrU3Rv cHBlZDsKLSAgYnVmZmVyID0gbmV3IGNoYXJbYXVkaW9fYnVzLT5mcmFtZXMoKSAqIHBhcmFtcy5H ZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpXTsKLSAgc2lvX29ubW92ZShoZGwsICZPbk1v dmVDYWxsYmFjaywgdGhpcyk7Ci0gIHJldHVybiB0cnVlOwotYmFkX2Nsb3NlOgotICBzaW9fY2xv c2UoaGRsKTsKLSAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVh bTo6U3RhcnQoQXVkaW9JbnB1dENhbGxiYWNrKiBjYikgewotCi0gIFN0YXJ0QWdjKCk7Ci0KLSAg c3RhdGUgPSBrUnVubmluZzsKLSAgaHdfZGVsYXkgPSAwOwotICBjYWxsYmFjayA9IGNiOwotICBz aW9fc3RhcnQoaGRsKTsKLSAgaWYgKHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWQsIE5VTEwsICZUaHJl YWRFbnRyeSwgdGhpcykgIT0gMCkgewotICAgIExPRyhFUlJPUikgPDwgIkZhaWxlZCB0byBjcmVh dGUgcmVhbC10aW1lIHRocmVhZCBmb3IgcmVjb3JkaW5nLiI7Ci0gICAgc2lvX3N0b3AoaGRsKTsK LSAgICBzdGF0ZSA9IGtTdG9wcGVkOwotICB9Ci19Ci0KLXZvaWQgU25kaW9BdWRpb0lucHV0U3Ry ZWFtOjpTdG9wKCkgewotCi0gIGlmIChzdGF0ZSA9PSBrU3RvcHBlZCkKLSAgICByZXR1cm47Ci0K LSAgc3RhdGUgPSBrU3RvcFdhaXQ7Ci0gIHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpOwotICBz aW9fc3RvcChoZGwpOwotICBzdGF0ZSA9IGtTdG9wcGVkOwotCi0gIFN0b3BBZ2MoKTsKLX0KLQot dm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OkNsb3NlKCkgewotCi0gIGlmIChzdGF0ZSA9PSBr Q2xvc2VkKQotICAgIHJldHVybjsKLQotICBpZiAoc3RhdGUgPT0ga1J1bm5pbmcpCi0gICAgU3Rv cCgpOwotCi0gIHN0YXRlID0ga0Nsb3NlZDsKLSAgZGVsZXRlIFtdIGJ1ZmZlcjsKLSAgc2lvX2Ns b3NlKGhkbCk7Ci0KLSAgbWFuYWdlci0+UmVsZWFzZUlucHV0U3RyZWFtKHRoaXMpOwotfQotCi1k b3VibGUgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpHZXRNYXhWb2x1bWUoKSB7Ci0gIC8vIE5vdCBz dXBwb3J0ZWQKLSAgcmV0dXJuIDAuMDsKLX0KLQotdm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06 OlNldFZvbHVtZShkb3VibGUgdm9sdW1lKSB7Ci0gIC8vIE5vdCBzdXBwb3J0ZWQuIERvIG5vdGhp bmcuCi19Ci0KLWRvdWJsZSBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OkdldFZvbHVtZSgpIHsKLSAg Ly8gTm90IHN1cHBvcnRlZC4KLSAgcmV0dXJuIDAuMDsKLX0KLQotYm9vbCBTbmRpb0F1ZGlvSW5w dXRTdHJlYW06OklzTXV0ZWQoKSB7Ci0gIC8vIE5vdCBzdXBwb3J0ZWQuCi0gIHJldHVybiBmYWxz ZTsKLX0KLQotdm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlNldE91dHB1dERldmljZUZvckFl YygKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2RldmljZV9pZCkgewotICAvLyBOb3Qg c3VwcG9ydGVkLgotfQotCi12b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6VGhyZWFkTG9vcCh2 b2lkKSB7Ci0gIHNpemVfdCB0b2RvLCBuOwotICBjaGFyICpkYXRhOwotICB1bnNpZ25lZCBpbnQg bmZyYW1lczsKLSAgZG91YmxlIG5vcm1hbGl6ZWRfdm9sdW1lID0gMC4wOwotCi0gIG5mcmFtZXMg PSBhdWRpb19idXMtPmZyYW1lcygpOwotCi0gIHdoaWxlIChzdGF0ZSA9PSBrUnVubmluZyAmJiAh c2lvX2VvZihoZGwpKSB7Ci0KLSAgICBHZXRBZ2NWb2x1bWUoJm5vcm1hbGl6ZWRfdm9sdW1lKTsK LQotICAgIC8vIHJlYWQgb25lIGJsb2NrCi0gICAgdG9kbyA9IG5mcmFtZXMgKiBwYXJhbXMuR2V0 Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9ybWF0KTsKLSAgICBkYXRhID0gYnVmZmVyOwotICAgIHdo aWxlICh0b2RvID4gMCkgewotICAgICAgbiA9IHNpb19yZWFkKGhkbCwgZGF0YSwgdG9kbyk7Ci0g ICAgICBpZiAobiA9PSAwKQotICAgICAgICByZXR1cm47CS8vIHVucmVjb3ZlcmFibGUgSS9PIGVy cm9yCi0gICAgICB0b2RvIC09IG47Ci0gICAgICBkYXRhICs9IG47Ci0gICAgfQotICAgIGh3X2Rl bGF5IC09IG5mcmFtZXM7Ci0KLSAgICAvLyBjb252ZXJ0IGZyYW1lcyBjb3VudCB0byBUaW1lRGVs dGEKLSAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFtcEhlbHBl cjo6RnJhbWVzVG9UaW1lKGh3X2RlbGF5LAotICAgICAgcGFyYW1zLnNhbXBsZV9yYXRlKCkpOwot Ci0gICAgLy8gcHVzaCBpbnRvIGJ1cwotICAgIGF1ZGlvX2J1cy0+RnJvbUludGVybGVhdmVkKGJ1 ZmZlciwgbmZyYW1lcywgU2FtcGxlRm9ybWF0VG9CeXRlc1BlckNoYW5uZWwoa1NhbXBsZUZvcm1h dCkpOwotCi0gICAgLy8gaW52b2tlIGNhbGxiYWNrCi0gICAgY2FsbGJhY2stPk9uRGF0YShhdWRp b19idXMuZ2V0KCksIGJhc2U6OlRpbWVUaWNrczo6Tm93KCkgLSBkZWxheSwgMS4pOwotICB9Ci19 Ci0KLX0gIC8vIG5hbWVzcGFjZSBtZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEz L2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmls ZXMvc25kaW8tZmlsZXMvc25kaW9faW5wdXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggZDg2OGUwNDY5ZGI1Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2Zp bGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCww IEBACi0vLyBDb3B5cmlnaHQgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu Ci0KLSNpZm5kZWYgTUVESUFfQVVESU9fU05ESU9fU05ESU9fSU5QVVRfSF8KLSNkZWZpbmUgTUVE SUFfQVVESU9fU05ESU9fU05ESU9fSU5QVVRfSF8KLQotI2luY2x1ZGUgPHN0ZGludC5oPgotI2lu Y2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxzbmRpby5oPgotCi0jaW5jbHVkZSAiYmFzZS9jb21w aWxlcl9zcGVjaWZpYy5oIgotI2luY2x1ZGUgImJhc2UvbWFjcm9zLmgiCi0jaW5jbHVkZSAiYmFz ZS9tZW1vcnkvd2Vha19wdHIuaCIKLSNpbmNsdWRlICJiYXNlL3RpbWUvdGltZS5oIgotI2luY2x1 ZGUgIm1lZGlhL2F1ZGlvL2FnY19hdWRpb19zdHJlYW0uaCIKLSNpbmNsdWRlICJtZWRpYS9hdWRp by9hdWRpb19pby5oIgotI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX2RldmljZV9kZXNjcmlw dGlvbi5oIgotI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9fcGFyYW1ldGVycy5oIgotCi1uYW1l c3BhY2UgbWVkaWEgewotCi1jbGFzcyBBdWRpb01hbmFnZXJCYXNlOwotCi0vLyBJbXBsZW1lbnRh dGlvbiBvZiBBdWRpb091dHB1dFN0cmVhbSB1c2luZyBzbmRpbyg3KQotY2xhc3MgU25kaW9BdWRp b0lucHV0U3RyZWFtIDogcHVibGljIEFnY0F1ZGlvU3RyZWFtPEF1ZGlvSW5wdXRTdHJlYW0+IHsK LSBwdWJsaWM6Ci0gIC8vIFBhc3MgdGhpcyB0byB0aGUgY29uc3RydWN0b3IgaWYgeW91IHdhbnQg dG8gYXR0ZW1wdCBhdXRvLXNlbGVjdGlvbgotICAvLyBvZiB0aGUgYXVkaW8gcmVjb3JkaW5nIGRl dmljZS4KLSAgc3RhdGljIGNvbnN0IGNoYXIga0F1dG9TZWxlY3REZXZpY2VbXTsKLQotICAvLyBD cmVhdGUgYSBQQ00gT3V0cHV0IHN0cmVhbSBmb3IgdGhlIFNORElPIGRldmljZSBpZGVudGlmaWVk IGJ5Ci0gIC8vIHxkZXZpY2VfbmFtZXwuIElmIHVuc3VyZSBvZiB3aGF0IHRvIHVzZSBmb3IgfGRl dmljZV9uYW1lfCwgdXNlCi0gIC8vIHxrQXV0b1NlbGVjdERldmljZXwuCi0gIFNuZGlvQXVkaW9J bnB1dFN0cmVhbShBdWRpb01hbmFnZXJCYXNlKiBhdWRpb19tYW5hZ2VyLAotICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9uYW1lLAotICAgICAgICAgICAgICAg ICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpOwotCi0gIH5TbmRpb0F1ZGlvSW5w dXRTdHJlYW0oKSBvdmVycmlkZTsKLQotICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb0lucHV0 U3RyZWFtLgotICBib29sIE9wZW4oKSBvdmVycmlkZTsKLSAgdm9pZCBTdGFydChBdWRpb0lucHV0 Q2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKLSAgdm9pZCBTdG9wKCkgb3ZlcnJpZGU7Ci0g IHZvaWQgQ2xvc2UoKSBvdmVycmlkZTsKLSAgZG91YmxlIEdldE1heFZvbHVtZSgpIG92ZXJyaWRl OwotICB2b2lkIFNldFZvbHVtZShkb3VibGUgdm9sdW1lKSBvdmVycmlkZTsKLSAgZG91YmxlIEdl dFZvbHVtZSgpIG92ZXJyaWRlOwotICBib29sIElzTXV0ZWQoKSBvdmVycmlkZTsKLSAgdm9pZCBT ZXRPdXRwdXREZXZpY2VGb3JBZWMoY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9kZXZpY2VfaWQp IG92ZXJyaWRlOwotCi0gcHJpdmF0ZToKLQotICBlbnVtIFN0cmVhbVN0YXRlIHsKLSAgICBrQ2xv c2VkLCAgICAgICAgICAgIC8vIE5vdCBvcGVuZWQgeWV0Ci0gICAga1N0b3BwZWQsICAgICAgICAg ICAvLyBEZXZpY2Ugb3BlbmVkLCBidXQgbm90IHN0YXJ0ZWQgeWV0Ci0gICAga1J1bm5pbmcsICAg ICAgICAgICAvLyBTdGFydGVkLCBkZXZpY2UgcGxheWluZwotICAgIGtTdG9wV2FpdCAgICAgICAg ICAgLy8gU3RvcHBpbmcsIHdhaXRpbmcgZm9yIHRoZSByZWFsLXRpbWUgdGhyZWFkIHRvIGV4aXQK LSAgfTsKLQotICAvLyBDLXN0eWxlIGNhbGwtYmFja3MKLSAgc3RhdGljIHZvaWQgT25Nb3ZlQ2Fs bGJhY2sodm9pZCAqYXJnLCBpbnQgZGVsdGEpOwotICBzdGF0aWMgdm9pZCogVGhyZWFkRW50cnko dm9pZCAqYXJnKTsKLQotICAvLyBDb250aW51b3VzbHkgbW92ZXMgZGF0YSBmcm9tIHRoZSBkZXZp Y2UgdG8gdGhlIGNvbnN1bWVyCi0gIHZvaWQgVGhyZWFkTG9vcCgpOwotICAvLyBPdXIgY3JlYXRv ciwgdGhlIGF1ZGlvIG1hbmFnZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiB3ZSBjbG9zZS4K LSAgQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlcjsKLSAgLy8gUGFyYW1ldGVycyBvZiB0aGUgc291 cmNlCi0gIEF1ZGlvUGFyYW1ldGVycyBwYXJhbXM7Ci0gIC8vIFdlIHN0b3JlIGRhdGEgaGVyZSBm b3IgY29uc3VtZXIKLSAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVzPiBhdWRpb19idXM7Ci0gIC8v IENhbGwtYmFjayB0aGF0IGNvbnN1bWVzIHJlY29yZGVkIGRhdGEKLSAgQXVkaW9JbnB1dENhbGxi YWNrKiBjYWxsYmFjazsgIC8vIFZhbGlkIGR1cmluZyBhIHJlY29yZGluZyBzZXNzaW9uLgotICAv LyBIYW5kbGUgb2YgdGhlIGF1ZGlvIGRldmljZQotICBzdHJ1Y3Qgc2lvX2hkbCogaGRsOwotICAv LyBDdXJyZW50IHN0YXRlIG9mIHRoZSBzdHJlYW0KLSAgZW51bSBTdHJlYW1TdGF0ZSBzdGF0ZTsK LSAgLy8gSGlnaCBwcmlvcml0eSB0aHJlYWQgcnVubmluZyBUaHJlYWRMb29wKCkKLSAgcHRocmVh ZF90IHRocmVhZDsKLSAgLy8gTnVtYmVyIG9mIGZyYW1lcyBidWZmZXJlZCBpbiB0aGUgaGFyZHdh cmUKLSAgaW50IGh3X2RlbGF5OwotICAvLyBUZW1wb3JhcnkgYnVmZmVyIHdoZXJlIGRhdGEgaXMg c3RvcmVkIHNuZGlvLWNvbXBhdGlibGUgZm9ybWF0Ci0gIGNoYXIqIGJ1ZmZlcjsKLQotICBESVNB TExPV19DT1BZX0FORF9BU1NJR04oU25kaW9BdWRpb0lucHV0U3RyZWFtKTsKLX07Ci0KLX0gIC8v IG5hbWVzcGFjZSBtZWRpYQotCi0jZW5kaWYgIC8vIE1FRElBX0FVRElPX1NORElPX1NORElPX0lO UFVUX0hfCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmlsZXMv c25kaW9fb3V0cHV0LmNjIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3Nu ZGlvX291dHB1dC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY3MTlmOWFhYzhk Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVz L3NuZGlvX291dHB1dC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0vLyBDb3B5 cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0jaW5j bHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0jaW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKLSNpbmNs dWRlICJiYXNlL3RpbWUvZGVmYXVsdF90aWNrX2Nsb2NrLmgiCi0jaW5jbHVkZSAibWVkaWEvYXVk aW8vYXVkaW9fbWFuYWdlcl9iYXNlLmgiCi0jaW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb190aW1l c3RhbXBfaGVscGVyLmgiCi0jaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0 LmgiCi0KLW5hbWVzcGFjZSBtZWRpYSB7Ci0KLXN0YXRpYyBjb25zdCBTYW1wbGVGb3JtYXQga1Nh bXBsZUZvcm1hdCA9IGtTYW1wbGVGb3JtYXRTMTY7Ci0KLXZvaWQgU25kaW9BdWRpb091dHB1dFN0 cmVhbTo6T25Nb3ZlQ2FsbGJhY2sodm9pZCAqYXJnLCBpbnQgZGVsdGEpIHsKLSAgU25kaW9BdWRp b091dHB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0q PihhcmcpOwotCi0gIHNlbGYtPmh3X2RlbGF5IC09IGRlbHRhOwotfQotCi12b2lkIFNuZGlvQXVk aW9PdXRwdXRTdHJlYW06Ok9uVm9sQ2FsbGJhY2sodm9pZCAqYXJnLCB1bnNpZ25lZCBpbnQgdm9s KSB7Ci0gIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1 ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsKLQotICBzZWxmLT52b2wgPSB2b2w7Ci19Ci0KLXZvaWQg KlNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlRocmVhZEVudHJ5KHZvaWQgKmFyZykgewotICBTbmRp b0F1ZGlvT3V0cHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRpb091dHB1dFN0 cmVhbSo+KGFyZyk7Ci0KLSAgc2VsZi0+VGhyZWFkTG9vcCgpOwotICByZXR1cm4gTlVMTDsKLX0K LQotU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U25kaW9BdWRpb091dHB1dFN0cmVhbShjb25zdCBB dWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlcikKLSAgICA6IG1hbmFnZXIo bWFuYWdlciksCi0gICAgICBwYXJhbXMocGFyYW1zKSwKLSAgICAgIGF1ZGlvX2J1cyhBdWRpb0J1 czo6Q3JlYXRlKHBhcmFtcykpLAotICAgICAgc3RhdGUoa0Nsb3NlZCksCi0gICAgICBtdXRleChQ VEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSKSB7Ci19Ci0KLVNuZGlvQXVkaW9PdXRwdXRTdHJlYW06 On5TbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKCkgewotICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKLSAg ICBDbG9zZSgpOwotfQotCi1ib29sIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06Ok9wZW4oKSB7Ci0g IHN0cnVjdCBzaW9fcGFyIHBhcjsKLSAgaW50IHNpZzsKLQotICBpZiAocGFyYW1zLmZvcm1hdCgp ICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiAmJgotICAgICAgcGFyYW1zLmZv cm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZKSB7Ci0gICAg TE9HKFdBUk5JTkcpIDw8ICJVbnN1cHBvcnRlZCBhdWRpbyBmb3JtYXQuIjsKLSAgICByZXR1cm4g ZmFsc2U7Ci0gIH0KLSAgc2lvX2luaXRwYXIoJnBhcik7Ci0gIHBhci5yYXRlID0gcGFyYW1zLnNh bXBsZV9yYXRlKCk7Ci0gIHBhci5wY2hhbiA9IHBhcmFtcy5jaGFubmVscygpOwotICBwYXIuYml0 cyA9IFNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCk7Ci0gIHBhci5i cHMgPSBwYXIuYml0cyAvIDg7Ci0gIHBhci5zaWcgPSBzaWcgPSBwYXIuYml0cyAhPSA4ID8gMSA6 IDA7Ci0gIHBhci5sZSA9IFNJT19MRV9OQVRJVkU7Ci0gIHBhci5hcHBidWZzeiA9IHBhcmFtcy5m cmFtZXNfcGVyX2J1ZmZlcigpOwotCi0gIGhkbCA9IHNpb19vcGVuKFNJT19ERVZBTlksIFNJT19Q TEFZLCAwKTsKLSAgaWYgKGhkbCA9PSBOVUxMKSB7Ci0gICAgTE9HKEVSUk9SKSA8PCAiQ291bGRu J3Qgb3BlbiBhdWRpbyBkZXZpY2UuIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgaWYgKCFz aW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNpb19nZXRwYXIoaGRsLCAmcGFyKSkgewotICAgIExP RyhFUlJPUikgPDwgIkNvdWxkbid0IHNldCBhdWRpbyBwYXJhbWV0ZXJzLiI7Ci0gICAgZ290byBi YWRfY2xvc2U7Ci0gIH0KLSAgaWYgKHBhci5yYXRlICAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5z YW1wbGVfcmF0ZSgpIHx8Ci0gICAgICBwYXIucGNoYW4gIT0gKHVuc2lnbmVkIGludClwYXJhbXMu Y2hhbm5lbHMoKSB8fAotICAgICAgcGFyLmJpdHMgICE9ICh1bnNpZ25lZCBpbnQpU2FtcGxlRm9y bWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KSB8fAotICAgICAgcGFyLnNpZyAgICE9 ICh1bnNpZ25lZCBpbnQpc2lnIHx8Ci0gICAgICAocGFyLmJwcyA+IDEgJiYgcGFyLmxlICE9IFNJ T19MRV9OQVRJVkUpIHx8Ci0gICAgICAocGFyLmJpdHMgIT0gcGFyLmJwcyAqIDgpKSB7Ci0gICAg TE9HKEVSUk9SKSA8PCAiVW5zdXBwb3J0ZWQgYXVkaW8gcGFyYW1ldGVycy4iOwotICAgIGdvdG8g YmFkX2Nsb3NlOwotICB9Ci0gIHN0YXRlID0ga1N0b3BwZWQ7Ci0gIHZvbHBlbmRpbmcgPSAwOwot ICB2b2wgPSAwOwotICBidWZmZXIgPSBuZXcgY2hhclthdWRpb19idXMtPmZyYW1lcygpICogcGFy YW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCldOwotICBzaW9fb25tb3ZlKGhkbCwg Jk9uTW92ZUNhbGxiYWNrLCB0aGlzKTsKLSAgc2lvX29udm9sKGhkbCwgJk9uVm9sQ2FsbGJhY2ss IHRoaXMpOwotICByZXR1cm4gdHJ1ZTsKLSBiYWRfY2xvc2U6Ci0gIHNpb19jbG9zZShoZGwpOwot ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6Q2xvc2Uo KSB7Ci0gIGlmIChzdGF0ZSA9PSBrQ2xvc2VkKQotICAgIHJldHVybjsKLSAgaWYgKHN0YXRlID09 IGtSdW5uaW5nKQotICAgIFN0b3AoKTsKLSAgc3RhdGUgPSBrQ2xvc2VkOwotICBkZWxldGUgW10g YnVmZmVyOwotICBzaW9fY2xvc2UoaGRsKTsKLSAgbWFuYWdlci0+UmVsZWFzZU91dHB1dFN0cmVh bSh0aGlzKTsgIC8vIENhbGxzIHRoZSBkZXN0cnVjdG9yCi19Ci0KLXZvaWQgU25kaW9BdWRpb091 dHB1dFN0cmVhbTo6U3RhcnQoQXVkaW9Tb3VyY2VDYWxsYmFjayogY2FsbGJhY2spIHsKLSAgc3Rh dGUgPSBrUnVubmluZzsKLSAgaHdfZGVsYXkgPSAwOwotICBzb3VyY2UgPSBjYWxsYmFjazsKLSAg c2lvX3N0YXJ0KGhkbCk7Ci0gIGlmIChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCAmVGhy ZWFkRW50cnksIHRoaXMpICE9IDApIHsKLSAgICBMT0coRVJST1IpIDw8ICJGYWlsZWQgdG8gY3Jl YXRlIHJlYWwtdGltZSB0aHJlYWQuIjsKLSAgICBzaW9fc3RvcChoZGwpOwotICAgIHN0YXRlID0g a1N0b3BwZWQ7Ci0gIH0KLX0KLQotdm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpTdG9wKCkg ewotICBpZiAoc3RhdGUgPT0ga1N0b3BwZWQpCi0gICAgcmV0dXJuOwotICBzdGF0ZSA9IGtTdG9w V2FpdDsKLSAgcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7Ci0gIHNpb19zdG9wKGhkbCk7Ci0g IHN0YXRlID0ga1N0b3BwZWQ7Ci19Ci0KLXZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U2V0 Vm9sdW1lKGRvdWJsZSB2KSB7Ci0gIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOwotICB2b2wg PSB2ICogU0lPX01BWFZPTDsKLSAgdm9scGVuZGluZyA9IDE7Ci0gIHB0aHJlYWRfbXV0ZXhfdW5s b2NrKCZtdXRleCk7Ci19Ci0KLXZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6R2V0Vm9sdW1l KGRvdWJsZSogdikgewotICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKLSAgKnYgPSB2b2wg KiAoMS4gLyBTSU9fTUFYVk9MKTsKLSAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKLX0K LQotLy8gVGhpcyBzdHJlYW0gaXMgYWx3YXlzIHVzZWQgd2l0aCBzdWIgc2Vjb25kIGJ1ZmZlciBz aXplcywgd2hlcmUgaXQncwotLy8gc3VmZmljaWVudCB0byBzaW1wbHkgYWx3YXlzIGZsdXNoIHVw b24gU3RhcnQoKS4KLXZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6Rmx1c2goKSB7fQotCi12 b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlRocmVhZExvb3Aodm9pZCkgewotICBpbnQgYXZh aWwsIGNvdW50LCByZXN1bHQ7Ci0KLSAgd2hpbGUgKHN0YXRlID09IGtSdW5uaW5nKSB7Ci0gICAg Ly8gVXBkYXRlIHZvbHVtZSBpZiBuZWVkZWQKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4 KTsKLSAgICBpZiAodm9scGVuZGluZykgewotICAgICAgdm9scGVuZGluZyA9IDA7Ci0gICAgICBz aW9fc2V0dm9sKGhkbCwgdm9sKTsKLSAgICB9Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11 dGV4KTsKLQotICAgIC8vIEdldCBkYXRhIHRvIHBsYXkKLSAgICBjb25zdCBiYXNlOjpUaW1lRGVs dGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFtcEhlbHBlcjo6RnJhbWVzVG9UaW1lKGh3X2RlbGF5LAot CXBhcmFtcy5zYW1wbGVfcmF0ZSgpKTsKLSAgICBjb3VudCA9IHNvdXJjZS0+T25Nb3JlRGF0YShk ZWxheSwgYmFzZTo6VGltZVRpY2tzOjpOb3coKSwgMCwgYXVkaW9fYnVzLmdldCgpKTsKLSAgICBh dWRpb19idXMtPlRvSW50ZXJsZWF2ZWQoY291bnQsIFNhbXBsZUZvcm1hdFRvQnl0ZXNQZXJDaGFu bmVsKGtTYW1wbGVGb3JtYXQpLCBidWZmZXIpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAg ICAvLyBXZSBoYXZlIHRvIHN1Ym1pdCBzb21ldGhpbmcgdG8gdGhlIGRldmljZQotICAgICAgY291 bnQgPSBhdWRpb19idXMtPmZyYW1lcygpOwotICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgY291bnQg KiBwYXJhbXMuR2V0Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9ybWF0KSk7Ci0gICAgICBMT0coV0FS TklORykgPDwgIk5vIGRhdGEgdG8gcGxheSwgcnVubmluZyBlbXB0eSBjeWNsZS4iOwotICAgIH0K LQotICAgIC8vIFN1Ym1pdCBkYXRhIHRvIHRoZSBkZXZpY2UKLSAgICBhdmFpbCA9IGNvdW50ICog cGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCk7Ci0gICAgcmVzdWx0ID0gc2lv X3dyaXRlKGhkbCwgYnVmZmVyLCBhdmFpbCk7Ci0gICAgaWYgKHJlc3VsdCA9PSAwKSB7Ci0gICAg ICBMT0coV0FSTklORykgPDwgIkF1ZGlvIGRldmljZSBkaXNjb25uZWN0ZWQuIjsKLSAgICAgIGJy ZWFrOwotICAgIH0KLQotICAgIC8vIFVwZGF0ZSBoYXJkd2FyZSBwb2ludGVyCi0gICAgaHdfZGVs YXkgKz0gY291bnQ7Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlIG1lZGlhCmRpZmYgLS1naXQg YS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmggYi9z cmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmgKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZDIyMGNhOTZlNy4uMDAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1maWxlcy9zbmRpb19vdXRwdXQuaAorKysg L2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hy b21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSNpZm5kZWYgTUVESUFfQVVESU9fU05ESU9f U05ESU9fT1VUUFVUX0hfCi0jZGVmaW5lIE1FRElBX0FVRElPX1NORElPX1NORElPX09VVFBVVF9I XwotCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotI2luY2x1ZGUgPHNuZGlvLmg+Ci0KLSNpbmNsdWRl ICJiYXNlL3RpbWUvdGlja19jbG9jay5oIgotI2luY2x1ZGUgImJhc2UvdGltZS90aW1lLmgiCi0j aW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9faW8uaCIKLQotbmFtZXNwYWNlIG1lZGlhIHsKLQot Y2xhc3MgQXVkaW9NYW5hZ2VyQmFzZTsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9PdXRw dXRTdHJlYW0gdXNpbmcgc25kaW8oNykKLWNsYXNzIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0gOiBw dWJsaWMgQXVkaW9PdXRwdXRTdHJlYW0gewotIHB1YmxpYzoKLSAgLy8gVGhlIG1hbmFnZXIgaXMg Y3JlYXRpbmcgdGhpcyBvYmplY3QKLSAgU25kaW9BdWRpb091dHB1dFN0cmVhbShjb25zdCBBdWRp b1BhcmFtZXRlcnMmIHBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb01hbmFn ZXJCYXNlKiBtYW5hZ2VyKTsKLSAgdmlydHVhbCB+U25kaW9BdWRpb091dHB1dFN0cmVhbSgpOwot Ci0gIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvT3V0cHV0U3RyZWFtLgotICBib29sIE9wZW4o KSBvdmVycmlkZTsKLSAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOwotICB2b2lkIFN0YXJ0KEF1ZGlv U291cmNlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKLSAgdm9pZCBTdG9wKCkgb3ZlcnJp ZGU7Ci0gIHZvaWQgU2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpIG92ZXJyaWRlOwotICB2b2lkIEdl dFZvbHVtZShkb3VibGUqIHZvbHVtZSkgb3ZlcnJpZGU7Ci0gIHZvaWQgRmx1c2goKSBvdmVycmlk ZTsKLQotICBmcmllbmQgdm9pZCBzbmRpb19vbm1vdmUodm9pZCAqYXJnLCBpbnQgZGVsdGEpOwot ICBmcmllbmQgdm9pZCBzbmRpb19vbnZvbCh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wpOwot ICBmcmllbmQgdm9pZCAqc25kaW9fdGhyZWFkc3RhcnQodm9pZCAqYXJnKTsKLQotIHByaXZhdGU6 Ci0gIGVudW0gU3RyZWFtU3RhdGUgewotICAgIGtDbG9zZWQsICAgICAgICAgICAgLy8gTm90IG9w ZW5lZCB5ZXQKLSAgICBrU3RvcHBlZCwgICAgICAgICAgIC8vIERldmljZSBvcGVuZWQsIGJ1dCBu b3Qgc3RhcnRlZCB5ZXQKLSAgICBrUnVubmluZywgICAgICAgICAgIC8vIFN0YXJ0ZWQsIGRldmlj ZSBwbGF5aW5nCi0gICAga1N0b3BXYWl0ICAgICAgICAgICAvLyBTdG9wcGluZywgd2FpdGluZyBm b3IgdGhlIHJlYWwtdGltZSB0aHJlYWQgdG8gZXhpdAotICB9OwotCi0gIC8vIEMtc3R5bGUgY2Fs bC1iYWNrcwotICBzdGF0aWMgdm9pZCBPbk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0 YSk7Ci0gIHN0YXRpYyB2b2lkIE9uVm9sQ2FsbGJhY2sodm9pZCAqYXJnLCB1bnNpZ25lZCBpbnQg dm9sKTsKLSAgc3RhdGljIHZvaWQqIFRocmVhZEVudHJ5KHZvaWQgKmFyZyk7Ci0KLSAgLy8gQ29u dGludW91c2x5IG1vdmVzIGRhdGEgZnJvbSB0aGUgcHJvZHVjZXIgdG8gdGhlIGRldmljZQotICB2 b2lkIFRocmVhZExvb3Aodm9pZCk7Ci0KLSAgLy8gT3VyIGNyZWF0b3IsIHRoZSBhdWRpbyBtYW5h Z2VyIG5lZWRzIHRvIGJlIG5vdGlmaWVkIHdoZW4gd2UgY2xvc2UuCi0gIEF1ZGlvTWFuYWdlckJh c2UqIG1hbmFnZXI7Ci0gIC8vIFBhcmFtZXRlcnMgb2YgdGhlIHNvdXJjZQotICBBdWRpb1BhcmFt ZXRlcnMgcGFyYW1zOwotICAvLyBTb3VyY2Ugc3RvcmVzIGRhdGEgaGVyZQotICBzdGQ6OnVuaXF1 ZV9wdHI8QXVkaW9CdXM+IGF1ZGlvX2J1czsKLSAgLy8gQ2FsbC1iYWNrIHRoYXQgcHJvZHVjZXMg ZGF0YSB0byBwbGF5Ci0gIEF1ZGlvU291cmNlQ2FsbGJhY2sqIHNvdXJjZTsKLSAgLy8gSGFuZGxl IG9mIHRoZSBhdWRpbyBkZXZpY2UKLSAgc3RydWN0IHNpb19oZGwqIGhkbDsKLSAgLy8gQ3VycmVu dCBzdGF0ZSBvZiB0aGUgc3RyZWFtCi0gIGVudW0gU3RyZWFtU3RhdGUgc3RhdGU7Ci0gIC8vIEhp Z2ggcHJpb3JpdHkgdGhyZWFkIHJ1bm5pbmcgVGhyZWFkTG9vcCgpCi0gIHB0aHJlYWRfdCB0aHJl YWQ7Ci0gIC8vIFByb3RlY3RzIHZvbCwgdm9scGVuZGluZyBhbmQgaHdfZGVsYXkKLSAgcHRocmVh ZF9tdXRleF90IG11dGV4OwotICAvLyBDdXJyZW50IHZvbHVtZSBpbiB0aGUgMC4uU0lPX01BWFZP TCByYW5nZQotICBpbnQgdm9sOwotICAvLyBTZXQgdG8gMSBpZiB2b2x1bWVzIG11c3QgYmUgcmVm cmVzaGVkIGluIHRoZSByZWFsdGltZSB0aHJlYWQKLSAgaW50IHZvbHBlbmRpbmc7Ci0gIC8vIE51 bWJlciBvZiBmcmFtZXMgYnVmZmVyZWQgaW4gdGhlIGhhcmR3YXJlCi0gIGludCBod19kZWxheTsK LSAgLy8gVGVtcG9yYXJ5IGJ1ZmZlciB3aGVyZSBkYXRhIGlzIHN0b3JlZCBzbmRpby1jb21wYXRp YmxlIGZvcm1hdAotICBjaGFyKiBidWZmZXI7Ci0KLSAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO KFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0pOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIG1lZGlhCi0K LSNlbmRpZiAgLy8gTUVESUFfQVVESU9fU05ESU9fU05ESU9fT1VUUFVUX0hfCmRpZmYgLS1naXQg YS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hlcy9tZWRpYV9hdWRpb19saW51 eF9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVz L3NuZGlvLXBhdGNoZXMvbWVkaWFfYXVkaW9fbGludXhfYXVkaW9fbWFuYWdlcl9saW51eC5jYy5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y4ZTgxYjExZDY3Li4wMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLXBhdGNoZXMvbWVkaWFf YXVkaW9fbGludXhfYXVkaW9fbWFuYWdlcl9saW51eC5jYy5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDQzICswLDAgQEAKLWRpZmYgLS1naXQgYS9jaHJvbWl1bS9tZWRpYS9hdWRpby9saW51eC9h dWRpb19tYW5hZ2VyX2xpbnV4LmNjIGIvY2hyb21pdW0vbWVkaWEvYXVkaW8vbGludXgvYXVkaW9f bWFuYWdlcl9saW51eC5jYwotaW5kZXggNWQ3MDM1NDkzNzIuLjllNjBiNDBjNzQ5IDEwMDY0NAot LS0tIG1lZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MKLSsrKyBtZWRpYS9h dWRpby9saW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjCi1AQCAtMjAsNiArMjAsMTAgQEAKLSAj aW5jbHVkZSAibWVkaWEvYXVkaW8vcHVsc2UvYXVkaW9fbWFuYWdlcl9wdWxzZS5oIgotICNpbmNs dWRlICJtZWRpYS9hdWRpby9wdWxzZS9wdWxzZV91dGlsLmgiCi0gI2VuZGlmCi0rI2lmIGRlZmlu ZWQoVVNFX1NORElPKQotKyNpbmNsdWRlIDxzbmRpby5oPgotKyNpbmNsdWRlICJtZWRpYS9hdWRp by9vcGVuYnNkL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oIgotKyNlbmRpZgotIAotIG5hbWVzcGFj ZSBtZWRpYSB7Ci0gCi1AQCAtMjcsNyArMzEsOCBAQCBlbnVtIExpbnV4QXVkaW9JTyB7Ci0gICBr UHVsc2UsCi0gICBrQWxzYSwKLSAgIGtDcmFzLAotLSAga0F1ZGlvSU9NYXggPSBrQ3JhcyAgLy8g TXVzdCBhbHdheXMgYmUgZXF1YWwgdG8gbGFyZ2VzdCBsb2dnZWQgZW50cnkuCi0rICBrU25kaW8s Ci0rICBrQXVkaW9JT01heCA9IGtTbmRpbyAgLy8gTXVzdCBhbHdheXMgYmUgZXF1YWwgdG8gbGFy Z2VzdCBsb2dnZWQgZW50cnkuCi0gfTsKLSAKLSBzdGQ6OnVuaXF1ZV9wdHI8bWVkaWE6OkF1ZGlv TWFuYWdlcj4gQ3JlYXRlQXVkaW9NYW5hZ2VyKAotQEAgLTQxLDYgKzQ2LDE3IEBAIHN0ZDo6dW5p cXVlX3B0cjxtZWRpYTo6QXVkaW9NYW5hZ2VyPiBDcmVhdGVBdWRpb01hbmFnZXIoCi0gICB9Ci0g I2VuZGlmCi0gCi0rI2lmIGRlZmluZWQoVVNFX1NORElPKQotKyAgc3RydWN0IHNpb19oZGwgKiBo ZGwgPSBOVUxMOwotKyAgaWYgKChoZGw9c2lvX29wZW4oU0lPX0RFVkFOWSwgU0lPX1BMQVksIDEp KSAhPSBOVUxMKSB7Ci0rICAgIHNpb19jbG9zZShoZGwpOwotKyAgICBVTUFfSElTVE9HUkFNX0VO VU1FUkFUSU9OKCJNZWRpYS5MaW51eEF1ZGlvSU8iLCBrU25kaW8sIGtBdWRpb0lPTWF4ICsxKTsK LSsgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9NYW5hZ2VyT3BlbkJTRD4oc3RkOjpt b3ZlKGF1ZGlvX3RocmVhZCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhdWRpb19sb2dfZmFjdG9yeSk7Ci0rICB9Ci0rICBEVkxPRygxKSA8PCAiU25k aW8gaXMgbm90IGF2YWlsYWJsZSBvbiB0aGUgT1MiOwotKyNlbmRpZgotKwotICNpZiBkZWZpbmVk KFVTRV9QVUxTRUFVRElPKQotICAgcGFfdGhyZWFkZWRfbWFpbmxvb3AqIHBhX21haW5sb29wID0g bnVsbHB0cjsKLSAgIHBhX2NvbnRleHQqIHBhX2NvbnRleHQgPSBudWxscHRyOwpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLXBhdGNoZXMvc3JjXzNyZHBhcnR5X2No cm9taXVtX21lZGlhX0JVSUxELmduLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3Nu ZGlvLXBhdGNoZXMvc3JjXzNyZHBhcnR5X2Nocm9taXVtX21lZGlhX0JVSUxELmduLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzYwNDAwMjY2ODguLjAwMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlf Y2hyb21pdW1fbWVkaWFfQlVJTEQuZ24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCww IEBACi0tLS0gbWVkaWEvQlVJTEQuZ24JMjAyMC0wMy0yNCAxMDoxNjozMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyAtCTIwMjAtMDQtMDYgMTQ6MzI6MjcuOTYwODE3NTEzICswMjAwCi1AQCAtNjUsNiAr NjUsOSBAQAotICAgaWYgKHVzZV9jcmFzKSB7Ci0gICAgIGRlZmluZXMgKz0gWyAiVVNFX0NSQVMi IF0KLSAgIH0KLSsgIGlmICh1c2Vfc25kaW8pIHsKLSsgICAgZGVmaW5lcyArPSBbICJVU0VfU05E SU8iIF0KLSsgIH0KLSB9Ci0gCi0gIyBJbnRlcm5hbCBncm91cGluZyBvZiB0aGUgY29uZmlncyBu ZWNlc3NhcnkgdG8gc3VwcG9ydCBzdWItZm9sZGVycyBoYXZpbmcgdGhlaXIKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJv bWl1bV9tZWRpYV9hdWRpb19CVUlMRC5nbi5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxl cy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9hdWRpb19CVUlMRC5n bi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg1NmRlMGJmMmVjLi4wMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLXBhdGNoZXMvc3Jj XzNyZHBhcnR5X2Nocm9taXVtX21lZGlhX2F1ZGlvX0JVSUxELmduLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMjMgKzAsMCBAQAotLS0tIG1lZGlhL2F1ZGlvL0JVSUxELmduCTIwMjAtMDMtMjQg MTA6MTY6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgLQkyMDIwLTA0LTA2IDE0OjMxOjI4Ljg3MTQ1 MDIxNyArMDIwMAotQEAgLTIzMiw5ICsyMzIsMTkgQEAKLSAgICAgZGVwcyArPSBbICIvL21lZGlh L2Jhc2UvYW5kcm9pZDptZWRpYV9qbmlfaGVhZGVycyIgXQotICAgfQotIAotLSAgaWYgKGlzX2xp bnV4KSB7Ci0rICBpZiAoaXNfbGludXgpIHsKLSAgICAgc291cmNlcyArPSBbICJsaW51eC9hdWRp b19tYW5hZ2VyX2xpbnV4LmNjIiBdCi0gICB9Ci0rICBpZiAodXNlX3NuZGlvKSB7Ci0rICAgIGxp YnMgKz0gWyAic25kaW8iIF0KLSsgICAgc291cmNlcyArPSBbCi0rICAgICAgIm9wZW5ic2QvYXVk aW9fbWFuYWdlcl9vcGVuYnNkLmNjIiwKLSsgICAgICAic25kaW8vc25kaW9faW5wdXQuY2MiLAot KyAgICAgICJzbmRpby9zbmRpb19pbnB1dC5oIiwKLSsgICAgICAic25kaW8vc25kaW9fb3V0cHV0 LmNjIiwKLSsgICAgICAic25kaW8vc25kaW9fb3V0cHV0LmgiCi0rICAgXQotKyB9Ci0gCi0gICBp ZiAodXNlX2Fsc2EpIHsKLSAgICAgbGlicyArPSBbICJhc291bmQiIF0KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1 bV9tZWRpYV9tZWRpYV9fb3B0aW9ucy5nbmkucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmls ZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfbWVkaWFfX29wdGlv bnMuZ25pLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDgwN2Q4ZTFkMzYu LjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hl cy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfbWVkaWFfX29wdGlvbnMuZ25pLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLS0tIG1lZGlhL21lZGlhX29wdGlvbnMuZ25p CTIwMjAtMDMtMjQgMTA6MTY6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgLQkyMDIwLTA0LTA2IDE0 OjI5OjIyLjk1ODYzMDc4MyArMDIwMAotQEAgLTExNCw2ICsxMTQsOSBAQAotICAgIyBFbmFibGVz IHJ1bnRpbWUgc2VsZWN0aW9uIG9mIEFMU0EgbGlicmFyeSBmb3IgYXVkaW8uCi0gICB1c2VfYWxz YSA9IGZhbHNlCi0gCi0rICAjIEVuYWJsZXMgcnVudGltZSBzZWxlY3Rpb24gb2Ygc25kaW8gbGli cmFyeSBmb3IgYXVkaW8uCi0rICB1c2Vfc25kaW8gPSBmYWxzZQotKwotICAgIyBBbHNhIHNob3Vs ZCBiZSB1c2VkIG9uIG5vbi1BbmRyb2lkLCBub24tTWFjIFBPU0lYIHN5c3RlbXMuCi0gICAjIEFs c2Egc2hvdWxkIGJlIHVzZWQgb24gZGVza3RvcCBDaHJvbWVjYXN0IGFuZCBhdWRpby1vbmx5IENo cm9tZWNhc3QgYnVpbGRzLgotICAgaWYgKGlzX3Bvc2l4ICYmICFpc19hbmRyb2lkICYmICFpc19t YWMgJiYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv ZWxlY3Ryb24xMy90ZW1wbGF0ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNlYjZm Nzg4YTYyLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjEzL3RlbXBsYXRlCisr KyAvZGV2L251bGwKQEAgLTEsMzgyICswLDAgQEAKLSMgVGVtcGxhdGUgZmlsZSBmb3IgJ2VsZWN0 cm9uMTMnCi1wa2duYW1lPWVsZWN0cm9uMTMKLXZlcnNpb249MTMuNi43Ci1yZXZpc2lvbj0xCi1f bm9kZXZlcj0xNC4xNi4wCi1fY2hyb21pdW12ZXI9OTEuMC40NDcyLjE2NAotYXJjaHM9Ing4Nl82 NCogaTY4NiogYWFyY2g2NCogcHBjNjRsZSoiCi1jcmVhdGVfd3Jrc3JjPXllcwotYnVpbGRfd3Jr c3JjPSJzcmMiCi1ob3N0bWFrZWRlcGVuZHM9IiQodm9wdF9pZiBjbGFuZyBjbGFuZykgcHl0aG9u IHBrZ2NvbmYgcGVybCBncGVyZiBiaXNvbiBuaW5qYSBub2RlanMgaHdpZHMKLSBsaWJ3ZWJwLWRl dmVsIGZyZWV0eXBlLWRldmVsIGhhcmZidXp6LWRldmVsIGxpYnBuZy1kZXZlbCBuc3MtZGV2ZWwg d2hpY2ggZ2l0IGxpYmV2ZW50LWRldmVsCi0gcGNpdXRpbHMtZGV2ZWwgbGliYXRvbWljLWRldmVs IGZmbXBlZy1kZXZlbCBsaWJ4bWwyLWRldmVsIGxpYmdsaWItZGV2ZWwgeWFybiBvcGVuamRrIGxp YnhzbHQtZGV2ZWwKLSBvcHVzLWRldmVsIGxpYlhjdXJzb3ItZGV2ZWwgbGliWGNvbXBvc2l0ZS1k ZXZlbCBsaWJYdHN0LWRldmVsIGxpYlhyYW5kci1kZXZlbCBsaWJYU2NyblNhdmVyLWRldmVsCi0g YWxzYS1saWItZGV2ZWwgcmUyLWRldmVsIHNuYXBweS1kZXZlbCBtaXQta3JiNS1kZXZlbCAkKHZv cHRfaWYgcHVsc2VhdWRpbyBwdWxzZWF1ZGlvLWRldmVsKQotICQodm9wdF9pZiBzbmRpbyBzbmRp by1kZXZlbCkganEiCi1tYWtlZGVwZW5kcz0ibGlicG5nLWRldmVsIGd0aystZGV2ZWwgZ3RrKzMt ZGV2ZWwgbnNzLWRldmVsIHBjaXV0aWxzLWRldmVsCi0gbGliWGktZGV2ZWwgbGliZ2NyeXB0LWRl dmVsIGxpYmdub21lLWtleXJpbmctZGV2ZWwgY3Vwcy1kZXZlbCBlbGZ1dGlscy1kZXZlbAotIGxp Ylhjb21wb3NpdGUtZGV2ZWwgc3BlZWNoLWRpc3BhdGNoZXItZGV2ZWwgbGliWHJhbmRyLWRldmVs IG1pdC1rcmI1LWRldmVsCi0gbGliWFNjcm5TYXZlci1kZXZlbCBhbHNhLWxpYi1kZXZlbCBzbmFw cHktZGV2ZWwgbGliZHJtLWRldmVsCi0gbGlieG1sMi1kZXZlbCBsaWJ4c2x0LWRldmVsICQodm9w dF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8tZGV2ZWwpIGxpYmV4aWYtZGV2ZWwKLSBsaWJYY3Vy c29yLWRldmVsIGxpYmZsYWMtZGV2ZWwgc3BlZXgtZGV2ZWwgbGlibXRwLWRldmVsIGxpYndlYnAt ZGV2ZWwKLSBsaWJqcGVnLXR1cmJvLWRldmVsIGxpYmV2ZW50LWRldmVsIGpzb24tYy1kZXZlbCBo YXJmYnV6ei1kZXZlbAotIG1pbml6aXAtZGV2ZWwganNvbmNwcC1kZXZlbCB6bGliLWRldmVsIGxp YmNhcC1kZXZlbCBsaWJYZGFtYWdlLWRldmVsCi0gcmUyLWRldmVsIGZvbnRjb25maWctZGV2ZWwg ZnJlZXR5cGUtZGV2ZWwgb3B1cy1kZXZlbCBsaWJhdG9taWMtZGV2ZWwKLSAkKHZvcHRfaWYgc25k aW8gc25kaW8tZGV2ZWwpIGZmbXBlZy1kZXZlbCBsaWJ2YS1kZXZlbCBsaWJ1di1kZXZlbCBjLWFy ZXMtZGV2ZWwgbGlibm90aWZ5LWRldmVsCi0gJCh2b3B0X2lmIHBpcGV3aXJlIHBpcGV3aXJlLWRl dmVsKSB3YXlsYW5kLWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlieHNobWZlbmNlLWRldmVsIgotc2hv cnRfZGVzYz0iQ3Jvc3MgcGxhdGZvcm0gYXBwbGljYXRpb24gZnJhbWV3b3JrIGJhc2VkIG9uIHdl YiB0ZWNobm9sb2dpZXMiCi1tYWludGFpbmVyPSJKb2huIDxtZUBqb2hubnluYXRvci5kZXY+Igot bGljZW5zZT0iQlNELTMtQ2xhdXNlIgotaG9tZXBhZ2U9Imh0dHBzOi8vZWxlY3Ryb25qcy5vcmci Ci1kaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9lbGVjdHJvbi9lbGVjdHJvbi9hcmNoaXZl L3YkdmVyc2lvbi50YXIuZ3o+ZWxlY3Ryb24tJHt2ZXJzaW9ufS50YXIuZ3oKLSBodHRwczovL2Nv bW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Nocm9taXVtLWJyb3dzZXItb2ZmaWNpYWwv Y2hyb21pdW0tJF9jaHJvbWl1bXZlci50YXIueHoKLSBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpz L25vZGUvYXJjaGl2ZS92JF9ub2RldmVyLnRhci5nej5ub2RlLSRfbm9kZXZlci50YXIuZ3oiCi1j aGVja3N1bT0iMjkzMWUwYWRjOTVhZDkzYTZmMTYzYzY5YzQ1ODhiMDMyYWI2OGM0NWRlZGIyOTM3 YmYwZDA1MzNlYzRkNDRkYwotIDg0ZTU2ZmEyYWQ5NmQ5MTBjYWI0MjljNTEzZWVhY2E3YmZhOTQw OTZmZWYwNTdiZDAyNGJlODI2Y2U4NDI2YmQKLSBiY2RmODY5YjA3NDM0MDU1MTVlZTg5N2IxMDQ3 YjVlODUxYTcxN2U0MjZiNDk3NGQyNjUzN2M5YjEwZGZkNTNhIgotCi1jYXNlICIkWEJQU19UQVJH RVRfTUFDSElORSIgaW4KLQlwcGM2NCotbXVzbCkgbWFrZWRlcGVuZHMrPSIgbGlidWNvbnRleHQt ZGV2ZWwiIDs7Ci1lc2FjCi0KLW5vX2dlbmVyaWNfcGtnY29uZmlnX2xpbms9eWVzCi1saWIzMmRp c2FibGVkPXllcwotbm9waWU9eWVzICAjIGNvbnRhaW5zIHRvb2xzIHRoYXQgYXJlIG5vdCBQSUUs IGVuYWJsZXMgUElFIGl0c2VsZgotCi1idWlsZF9vcHRpb25zPSJwdWxzZWF1ZGlvIHNuZGlvIGNs YW5nIHBpcGV3aXJlIgotYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJwdWxzZWF1ZGlvIGNsYW5nIHBp cGV3aXJlIgotCi1pZiBbICIkYnVpbGRfb3B0aW9uX2NsYW5nIiBdOyB0aGVuCi0Jbm9jcm9zcz0i Tm8gcHJvcGVyIHNldHVwIGZvciB1c2luZyBjbGFuZyBhcyBjcm9zcyBjb21waWxlciBpbiB2b2lk IHlldCIKLWVsaWYgWyAiJHtYQlBTX1RBUkdFVF9NQUNISU5FJSUtbXVzbH0iID0gImFhcmNoNjQi IF07IHRoZW4KLQlicm9rZW49IkZhbGxzIGFwYXJ0IGF0IHJ1bnRpbWUgd2hlbiBjb21waWxlZCB3 aXRoIGdjYyIKLWZpCi0KLV9idWlsZHR5cGU9UmVsZWFzZQotX2lzX2RlYnVnPWZhbHNlCi0KLUNG TEFHUz0iLVduby11bmtub3duLXdhcm5pbmctb3B0aW9uIC1mUElDIgotQ1hYRkxBR1M9Ii1Xbm8t dW5rbm93bi13YXJuaW5nLW9wdGlvbiAtZlBJQyIKLQotX2FwcGx5X3BhdGNoKCkgewotCWxvY2Fs IGFyZ3M9IiQxIiBwbmFtZT0iJChiYXNlbmFtZSAkMikiCi0KLQlpZiBbICEgLWYgIi4ke3BuYW1l fV9kb25lIiBdOyB0aGVuCi0JCW1zZ19ub3JtYWwgIiRwa2d2ZXI6IHBhdGNoaW5nOiAke3BuYW1l fS5cbiIKLQkJcGF0Y2ggLU4gJGFyZ3MgLWkgJDIKLQkJdG91Y2ggLiR7cG5hbWV9X2RvbmUKLQlm aQotfQotCi1fZ2V0X2Nocm9taXVtX2FyY2goKSB7Ci0JY2FzZSAiJDEiIGluCi0JCXg4Nl82NCop IGVjaG8geDY0IDs7Ci0JCWk2ODYqKSBlY2hvIHg4NiA7OwotCQlhcm0qKSBlY2hvIGFybSA7Owot CQlhYXJjaDY0KikgZWNobyBhcm02NCA7OwotCQlwcGM2NCopIGVjaG8gcHBjNjQgOzsKLQkJcHBj KikgZWNobyBwcGMgOzsKLQkJbWlwc2VsKikgZWNobyBtaXBzZWwgOzsKLQkJbWlwcyopIGVjaG8g bWlwcyA7OwotCQkqKSBtc2dfZXJyb3IgIiRwa2d2ZXI6IGNhbm5vdCBiZSBjb21waWxlZCBmb3Ig JHtYQlBTX1RBUkdFVF9NQUNISU5FfS5cbiIgOzsKLQllc2FjCi19Ci0KLXBvc3RfZXh0cmFjdCgp IHsKLQltdiBjaHJvbWl1bS0ke19jaHJvbWl1bXZlcn0gc3JjCi0JbWtkaXIgLXAgc3JjL3RoaXJk X3BhcnR5LwotCW12IG5vZGUtJF9ub2RldmVyIHNyYy90aGlyZF9wYXJ0eS9lbGVjdHJvbl9ub2Rl Ci0JbXYgZWxlY3Ryb24tJHt2ZXJzaW9ufSBzcmMvZWxlY3Ryb24KLX0KLXBvc3RfcGF0Y2goKSB7 Ci0JY2QgJHdya3NyYwotCWZvciB4IGluICRGSUxFU0RJUi9wYXRjaGVzLyo7IGRvCi0JCWNhc2Ug IiR7eCMjKi99IiBpbgotCQkJZWxlY3Ryb24qLnBhdGNoKQotCQkJCWNkIHNyYy9lbGVjdHJvbgot CQkJCV9hcHBseV9wYXRjaCAtcDEgIiR4IgotCQkJCWNkICIkd3Jrc3JjIjs7Ci0JCWVzYWMKLQlk b25lCi0KLQkjIFNpZ2gsIGVsZWN0cm9uIHVzZXMgZ2l0IGFtLi4uCi0JaWYgWyAhIC1mICIuZWxl Y3Ryb25fcGF0Y2hlc19kb25lIiBdOyB0aGVuCi0JbXYgc3JjL2VsZWN0cm9uL3BhdGNoZXMvY29u ZmlnLmpzb24gY29uZmlnLmpzb24ub2xkCi0JanEgJ2RlbCguInNyYy9lbGVjdHJvbi9wYXRjaGVz L01hbnRsZSIsIC4ic3JjL2VsZWN0cm9uL3BhdGNoZXMvUmVhY3RpdmVPYmpDIiwKLQkJLiJzcmMv ZWxlY3Ryb24vcGF0Y2hlcy9zcXVpcnJlbC5tYWMiLCAuInNyYy9lbGVjdHJvbi9wYXRjaGVzL25h biIpJyBcCi0JCWNvbmZpZy5qc29uLm9sZCA+IHNyYy9lbGVjdHJvbi9wYXRjaGVzL2NvbmZpZy5q c29uCi0KLQlweXRob24yIHNyYy9lbGVjdHJvbi9zY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5 IHNyYy9lbGVjdHJvbi9wYXRjaGVzL2NvbmZpZy5qc29uIHwgd2hpbGUgcmVhZCAtciByZXBvcGF0 aDsgZG8KLQkJY2QgIiR3cmtzcmMiLyIkcmVwb3BhdGgiCi0JCWdpdCBpbml0IC1xCi0JCWdpdCBj b25maWcgImdjLmF1dG8iIDAKLQkJaWYgWyAiJHJlcG9wYXRoIiAhPSAic3JjIiBdOyB0aGVuCi0J CQllY2hvICIvJHtyZXBvcGF0aCNzcmMvfSIgPj4gIiR3cmtzcmMvJGJ1aWxkX3dya3NyYy8uZ2l0 aWdub3JlIgotCQlmaQotCQlnaXQgYWRkIC4KLQkJZ2l0IC1jICd1c2VyLm5hbWU9RWxlY3Ryb24g YnVpbGQnIC1jICd1c2VyLmVtYWlsPWVsZWN0cm9uQGVidWlsZCcgXAotCQkJY29tbWl0IC1xIC1t ICIuIiB8fCB0cnVlCi0JZG9uZQotCWNkICR3cmtzcmMKLQlweXRob24yIHNyYy9lbGVjdHJvbi9z Y3JpcHQvYXBwbHlfYWxsX3BhdGNoZXMucHkgc3JjL2VsZWN0cm9uL3BhdGNoZXMvY29uZmlnLmpz b24KLQl0b3VjaCAuZWxlY3Ryb25fcGF0Y2hlc19kb25lCi0JZmkKLQotCWZvciB4IGluICRGSUxF U0RJUi9wYXRjaGVzLyo7IGRvCi0JCWNhc2UgIiR7eCMjKi99IiBpbgotCQkJY2hyb21pdW0qLnBh dGNoKQotCQkJCWNkIHNyYwotCQkJCV9hcHBseV9wYXRjaCAtcDEgIiR4IgotCQkJCWNkICIkd3Jr c3JjIjs7Ci0JCWVzYWMKLQlkb25lCi0KLQlpZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVz bCIgXTsgdGhlbgotCWZvciB4IGluICRGSUxFU0RJUi9tdXNsLXBhdGNoZXMvKjsgZG8KLQkJY2Fz ZSAiJHt4IyMqL30iIGluCi0JCQljaHJvbWl1bSoucGF0Y2gpCi0JCQkJY2Qgc3JjCi0JCQkJX2Fw cGx5X3BhdGNoIC1wMCAiJHgiCi0JCQkJY2QgIiR3cmtzcmMiOzsKLQkJCWVsZWN0cm9uKi5wYXRj aCkKLQkJCQljZCBzcmMvZWxlY3Ryb24KLQkJCQlfYXBwbHlfcGF0Y2ggLXAxICIkeCIKLQkJCQlj ZCAiJHdya3NyYyI7OwotCQllc2FjCi0JZG9uZQotCWZpCi0JaWYgWyAiJGJ1aWxkX29wdGlvbl9z bmRpbyIgXTsgdGhlbgotCQlta2RpciAtcCAke3dya3NyY30vJHtidWlsZF93cmtzcmN9L21lZGlh L2F1ZGlvL3tzbmRpbyxvcGVuYnNkfQotCQljcCAke0ZJTEVTRElSfS9zbmRpby1maWxlcy9zbmRp b18qcHV0LiogXAotCQkJJHt3cmtzcmN9LyR7YnVpbGRfd3Jrc3JjfS9tZWRpYS9hdWRpby9zbmRp bwotCQljcCAke0ZJTEVTRElSfS9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuKiBc Ci0JCQkke3dya3NyY30vJHtidWlsZF93cmtzcmN9L21lZGlhL2F1ZGlvL29wZW5ic2QKLQkJZm9y IGYgaW4gIiR7RklMRVNESVJ9Ii9zbmRpby1wYXRjaGVzLyoucGF0Y2g7IGRvCi0JCQljZCBzcmMK LQkJCV9hcHBseV9wYXRjaCAtcDAgIiRmIgotCQkJY2QgIiR3cmtzcmMiCi0JCWRvbmUKLQlmaQot fQotCi1wcmVfY29uZmlndXJlKCkgewotCWNkICIkd3Jrc3JjLyRidWlsZF93cmtzcmMiCi0KLQkj IGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZC90b3BpYy9jaHJvbWl1 bS1wYWNrYWdlcnMvOUpYMU4ybmY0UFUvZGlzY3Vzc2lvbgotCXRvdWNoIGNocm9tZS90ZXN0L2Rh dGEvd2VidWkvaTE4bl9wcm9jZXNzX2Nzc190ZXN0Lmh0bWwKLQkjIFVzZSB0aGUgZmlsZSBhdCBy dW4gdGltZSBpbnN0ZWFkIG9mIGVmZmVjdGl2ZWx5IGNvbXBpbGluZyBpdCBpbgotCXNlZCAnc3wv L3RoaXJkX3BhcnR5L3VzYl9pZHMvdXNiLmlkc3wvdXNyL3NoYXJlL2h3ZGF0YS91c2IuaWRzfGcn IFwKLQkJLWkgc2VydmljZXMvZGV2aWNlL3B1YmxpYy9jcHAvdXNiL0JVSUxELmduCi0KLQlta2Rp ciAtcCB0aGlyZF9wYXJ0eS9ub2RlL2xpbnV4L25vZGUtbGludXgteDY0L2JpbgotCWxuIC1zIC91 c3IvYmluL25vZGUgdGhpcmRfcGFydHkvbm9kZS9saW51eC9ub2RlLWxpbnV4LXg2NC9iaW4vCi0K LQkjIGNvbXBpbGUgZ24gZWFybHksIHNvIGl0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIGduaSBz dHVmZgotCW1zZ19ub3JtYWwgIkJvb3RzdHJhcHBpbmcgR05cbiIKLQlDQz0iJHtDQ19GT1JfQlVJ TEQ6LSRDQ30iIENYWD0iJHtDWFhfRk9SX0JVSUxEOi0kQ1hYfSIgTEQ9IiR7TERfRk9SX0JVSUxE Oi0kTER9IiBcCi0JQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTEQ6LSRDRkxBR1N9IiBDWFhGTEFH Uz0iJHtDWFhGTEFHU19GT1JfQlVJTEQ6LSRDWFhGTEFHU30iIFwKLQlMREZMQUdTPSIke1hCUFNf TERGTEFHU30iIFwKLQkJcHl0aG9uMiB0b29scy9nbi9ib290c3RyYXAvYm9vdHN0cmFwLnB5IC1z IC12IC0tc2tpcC1nZW5lcmF0ZS1idWlsZGZpbGVzCi0KLQkjIHdlIG5lZWQgdG8gZ2VuZXJhdGUg cHBjNjQgc3R1ZmYgZm9yIGxpYnZweCBhcyBpdCdzIG5vdCBzaGlwcGVkCi0JIyB0aGlzIGhhcyB0 byBiZSBkb25lIGJlZm9yZSB1bmJ1bmRsaW5nLCBidXQgYWZ0ZXIgZ24gaXMgYnVpbHQKLQkjIGNv bW1lbnQgb3V0IGlmIHdlIHN3aXRjaCBiYWNrIHRvIHN5c3RlbSBsaWJ2cHggYWdhaW4gbGF0ZXIK LQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJcHBjNjQqKQotCQkJcHVzaGQgdGhp cmRfcGFydHkvbGlidnB4Ci0JCQlta2RpciAtcCBzb3VyY2UvY29uZmlnL2xpbnV4L3BwYzY0Ci0J CQkjIG5lZWQgUEFUSCB0byBmaW5kIGduCi0JCQlQQVRIPSIke3dya3NyY30vJHtidWlsZF93cmtz cmN9L291dC9SZWxlYXNlOiRQQVRIIiBcCi0JCQkJLi9nZW5lcmF0ZV9nbmkuc2ggfHwgXAotCQkJ CQltc2dfZXJyb3IgImZhaWxlZCB0byBnZW5lcmF0ZSBsaWJ2cHggZ25pIgotCQkJcG9wZAotCQkJ OzsKLQllc2FjCi0KLQkjIHJldXNhYmxlIHN5c3RlbSBsaWJyYXJ5IHNldHRpbmdzCi0JbG9jYWwg dXNlX3N5c3RlbT0iCi0JCWZmbXBlZwotCQlmbGFjCi0JCWZvbnRjb25maWcKLQkJZnJlZXR5cGUK LQkJaGFyZmJ1enotbmcKLQkJbGliZHJtCi0JCWxpYmV2ZW50Ci0JCWxpYmpwZWcKLQkJbGlicG5n Ci0JCWxpYndlYnAKLQkJbGlieG1sCi0JCWxpYnhzbHQKLQkJb3B1cwotCQlyZTIKLQkJc25hcHB5 Ci0JCSIKLQlmb3IgX2xpYiBpbiAkdXNlX3N5c3RlbSBsaWJqcGVnX3R1cmJvOyBkbwotCQltc2df bm9ybWFsICJSZW1vdmluZyBidWlsZHNjcmlwdHMgZm9yIHN5c3RlbSBwcm92aWRlZCAkX2xpYlxu IgotCQlmaW5kIC10eXBlIGYgLXBhdGggIip0aGlyZF9wYXJ0eS8kX2xpYi8qIiBcCi0JCQlcISAt cGF0aCAiKnRoaXJkX3BhcnR5LyRfbGliL2Nocm9taXVtLyoiIFwKLQkJCVwhIC1wYXRoICIqdGhp cmRfcGFydHkvJF9saWIvZ29vZ2xlLyoiIFwKLQkJCVwhIC1wYXRoICcuL2Jhc2UvdGhpcmRfcGFy dHkvaWN1LyonIFwKLQkJCVwhIC1wYXRoICcuL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0 eS9mcmVldHlwZS9pbmNsdWRlL3BzdGFibGVzLmgnIFwKLQkJCVwhIC1wYXRoICcuL3RoaXJkX3Bh cnR5L2hhcmZidXp6LW5nL3V0aWxzL2hiX3Njb3BlZC5oJyBcCi0JCQlcISAtcmVnZXggJy4qXC5c KGduXHxnbmlcfGlzb2xhdGVcfHB5XCknIFwKLQkJCS1kZWxldGUKLQlkb25lCi0KLQotCW1zZ19u b3JtYWwgIlJlcGxhY2luZyBnbiBmaWxlc1xuIgotCXB5dGhvbjIgYnVpbGQvbGludXgvdW5idW5k bGUvcmVwbGFjZV9nbl9maWxlcy5weSAtLXN5c3RlbS1saWJyYXJpZXMgXAotCQkkdXNlX3N5c3Rl bQotCXRoaXJkX3BhcnR5L2xpYmFkZHJlc3NpbnB1dC9jaHJvbWl1bS90b29scy91cGRhdGUtc3Ry aW5ncy5weQotfQotCi1kb19jb25maWd1cmUoKSB7Ci0JbG9jYWwgdGFyZ2V0X2FyY2g9IiQoX2dl dF9jaHJvbWl1bV9hcmNoICR7WEJQU19UQVJHRVRfTUFDSElORX0pIgotCWxvY2FsIGhvc3RfYXJj aD0iJChfZ2V0X2Nocm9taXVtX2FyY2ggJHtYQlBTX01BQ0hJTkV9KSIKLQkjIHRoZSBidWlsZCBz eXN0ZW0gd2lsbCBzZXQgbWFyY2ggZm9yIHVzZSwgYWRkaW5nIGl0IHRvIGNmbGFncyB3aWxsIGJy ZWFrIGJ1aWxkcwotCWV4cG9ydCBDWFhGTEFHUz0kKCBzaG9wdCAtcyBleHRnbG9iOyBlY2hvICR7 Q1hYRkxBR1MvLW1hcmNoPSooW14gXSl9ICkKLQlleHBvcnQgQ0ZMQUdTPSQoIHNob3B0IC1zIGV4 dGdsb2I7IGVjaG8gJHtDRkxBR1MvLW1hcmNoPSooW14gXSl9ICkKLQlleHBvcnQgQ0ZMQUdTPSR7 Q0ZMQUdTLy1nL30KLQlleHBvcnQgQ1hYRkxBR1M9JHtDWFhGTEFHUy8tZy99Ci0JbG9jYWwgY29u Zj0oKQotCWNkIHRoaXJkX3BhcnR5L2VsZWN0cm9uX25vZGUKLQlpZiBbICIkQ1JPU1NfQlVJTEQi IF07IHRoZW4KLQkJY29uZl9hcmdzPSIgLS1kZXN0LWNwdT0ke3RhcmdldF9hcmNofSAtLWNyb3Nz LWNvbXBpbGluZyIKLQlmaQotCS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgXAotCQktLXNoYXJl ZC16bGliIFwKLQkJLS1zaGFyZWQtbGlidXYgXAotCQktLXNoYXJlZC1vcGVuc3NsIFwKLQkJLS1z aGFyZWQtY2FyZXMgXAotCQktLW9wZW5zc2wtdXNlLWRlZi1jYS1zdG9yZSBcCi0JCS0td2l0aG91 dC1ucG0gXAotCQktLXdpdGhvdXQtZHRyYWNlIFwKLQkJLS13aXRob3V0LWJ1bmRsZWQtdjggXAot CQkke2NvbmZfYXJnc30KLQotCWNkICIkd3Jrc3JjLyRidWlsZF93cmtzcmMiL2VsZWN0cm9uCi0J eWFybiBpbnN0YWxsCi0JY2QgIiR3cmtzcmMvJGJ1aWxkX3dya3NyYyIKLQotCWlmIFsgIiRidWls ZF9vcHRpb25fY2xhbmciIF07IHRoZW4KLQkJZXhwb3J0IENDPWNsYW5nCi0JCWV4cG9ydCBDWFg9 Y2xhbmcrKwotCQlleHBvcnQgSE9TVF9DQz1jbGFuZwotCQlleHBvcnQgSE9TVF9DWFg9Y2xhbmcr KwotCWVsc2UKLQkJZXhwb3J0IENYWEZMQUdTPSIkQ1hYRkxBR1MgLWZwZXJtaXNzaXZlIgotCQll eHBvcnQgQlVJTERfQ1hYRkxBR1M9IiRCVUlMRF9DWFhGTEFHUyAtZnBlcm1pc3NpdmUiCi0JCWV4 cG9ydCBCVUlMRF9BUj0iJEFSX2hvc3QiCi0JCWV4cG9ydCBCVUlMRF9OTT0iJE5NX2hvc3QiCi0J ZmkKLQotCWNvbmYrPSgKLQkJJ2JsaW5rX3N5bWJvbF9sZXZlbD0wJwotCQknY2xhbmdfdXNlX2No cm9tZV9wbHVnaW5zPWZhbHNlJwotCQknY3VzdG9tX3Rvb2xjaGFpbj0iLy9idWlsZC90b29sY2hh aW4vbGludXgvdW5idW5kbGU6ZGVmYXVsdCInCi0JKQotCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsg dGhlbgotCQljb25mKz0oCi0JCQknaG9zdF90b29sY2hhaW49Ii8vYnVpbGQvdG9vbGNoYWluL2xp bnV4L3VuYnVuZGxlOmhvc3QiJwotCQkJJ3Y4X3NuYXBzaG90X3Rvb2xjaGFpbj0iLy9idWlsZC90 b29sY2hhaW4vbGludXgvdW5idW5kbGU6aG9zdCInCi0JCQkiaG9zdF9wa2dfY29uZmlnPVwiJFBL R19DT05GSUdfRk9SX0JVSUxEXCIiCi0JCQkicGtnX2NvbmZpZz1cIiRQS0dfQ09ORklHXCIiCi0J CSkKLQllbHNlCi0JCWNvbmYrPSgKLQkJCSdob3N0X3Rvb2xjaGFpbj0iLy9idWlsZC90b29sY2hh aW4vbGludXgvdW5idW5kbGU6ZGVmYXVsdCInCi0JCQkndjhfc25hcHNob3RfdG9vbGNoYWluPSIv L2J1aWxkL3Rvb2xjaGFpbi9saW51eC91bmJ1bmRsZTpkZWZhdWx0IicKLQkJKQotCWZpCi0JaWYg WyAiJGJ1aWxkX29wdGlvbl9zbmRpbyIgXTsgdGhlbgotCQljb25mKz0oCi0JCQkndXNlX3NuZGlv PXRydWUnCi0JCSkKLQlmaQotCWlmIFsgLW4gIiRYQlBTX0RFQlVHX1BLR1MiIF07IHRoZW4KLQkJ Y29uZis9KCdzeW1ib2xfbGV2ZWw9MScpCi0JZWxzZQotCQljb25mKz0oJ3N5bWJvbF9sZXZlbD0w JykKLQlmaQotCi0gICAgICAgICMgdGhpcyBkb2VzIG5vdCB3b3JrIG9uIHBwYzY0IHlldAotICAg ICAgICBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLSAgICAgICAgICAgICAgICBwcGM2 NCopIGNvbmYrPSggImVuYWJsZV9qeGxfZGVjb2Rlcj1mYWxzZSIgKTs7Ci0gICAgICAgIGVzYWMK LQotCWNvbmYrPSgKLQkJJ2VuYWJsZV9oYW5nb3V0X3NlcnZpY2VzX2V4dGVuc2lvbj10cnVlJwot CQknZW5hYmxlX25hY2xfbm9uc2ZpPWZhbHNlJwotCQknZW5hYmxlX25hY2w9ZmFsc2UnCi0JCSdl bmFibGVfcHJlY29tcGlsZWRfaGVhZGVycz1mYWxzZScKLQkJJ2ZhdGFsX2xpbmtlcl93YXJuaW5n cz1mYWxzZScKLQkJJ2ZmbXBlZ19icmFuZGluZz0iQ2hyb21lIicKLQkJJ2ZpZWxkdHJpYWxfdGVz dGluZ19saWtlX29mZmljaWFsX2J1aWxkPXRydWUnCi0JCSdnb2xkX3BhdGg9Ii91c3IvYmluL2xk LmdvbGQiJwotCQknaWN1X3VzZV9kYXRhX2ZpbGU9dHJ1ZScKLQkJImlzX2NsYW5nPSQodm9wdF9p ZiBjbGFuZyB0cnVlIGZhbHNlKSIKLQkJJ2lzX2NvbXBvbmVudF9idWlsZD1mYWxzZScKLQkJImlz X2RlYnVnPSRfaXNfZGVidWciCi0JCSdwcm9wcmlldGFyeV9jb2RlY3M9dHJ1ZScKLQkJJ3RyZWF0 X3dhcm5pbmdzX2FzX2Vycm9ycz1mYWxzZScKLQkJJ3VzZV9hbGxvY2F0b3Jfc2hpbT1mYWxzZScK LQkJJ3VzZV9hbGxvY2F0b3I9Im5vbmUiJwotCQkndXNlX2N1cHM9dHJ1ZScKLQkJJ3VzZV9jdXN0 b21fbGliY3h4PWZhbHNlJwotCQkndXNlX2dub21lX2tleXJpbmc9ZmFsc2UnCi0JCSd1c2VfZ29s ZD1mYWxzZScKLQkJJ3VzZV9sbGQ9ZmFsc2UnCi0JCSd1c2Vfc3lzdGVtX2xpYndheWxhbmQ9dHJ1 ZScKLQkJInVzZV9wdWxzZWF1ZGlvPSQodm9wdF9pZiBwdWxzZWF1ZGlvICd0cnVlJyAnZmFsc2Un KSIKLQkJInJ0Y191c2VfcGlwZXdpcmU9JCh2b3B0X2lmIHBpcGV3aXJlIHRydWUgZmFsc2UpIgot CQkncnRjX3BpcGV3aXJlX3ZlcnNpb249IjAuMyInCi0JCSd1c2Vfc3lzcm9vdD1mYWxzZScKLQkJ J3VzZV9zeXN0ZW1faGFyZmJ1eno9dHJ1ZScKLQkJInRhcmdldF9jcHU9XCIkdGFyZ2V0X2FyY2hc IiIKLQkJImhvc3RfY3B1PVwiJGhvc3RfYXJjaFwiIgotCQknaW1wb3J0KCIvL2VsZWN0cm9uL2J1 aWxkL2FyZ3MvcmVsZWFzZS5nbiIpJwotCSkKLQotCW1zZ19ub3JtYWwgIkNvbmZpZ3VyaW5nIGJ1 aWxkXG4iCi0Jb3V0L1JlbGVhc2UvZ24gZ2VuIG91dC8kX2J1aWxkdHlwZSAtLWFyZ3M9IiR7Y29u ZlsqXX0iCi19Ci0KLWRvX2J1aWxkKCkgewotCWV4cG9ydCBDWFhGTEFHUz0kKCBzaG9wdCAtcyBl eHRnbG9iOyBlY2hvICR7Q1hYRkxBR1MvLW1hcmNoPSooW14gXSl9ICkKLQlleHBvcnQgQ0ZMQUdT PSQoIHNob3B0IC1zIGV4dGdsb2I7IGVjaG8gJHtDRkxBR1MvLW1hcmNoPSooW14gXSl9ICkKLQll eHBvcnQgQ0ZMQUdTPSR7Q0ZMQUdTLy1nL30KLQlleHBvcnQgQ1hYRkxBR1M9JHtDWFhGTEFHUy8t Zy99Ci0JaWYgWyAiJGJ1aWxkX29wdGlvbl9jbGFuZyIgXTsgdGhlbgotCQlleHBvcnQgQ0M9Y2xh bmcKLQkJZXhwb3J0IENYWD1jbGFuZysrCi0JCWV4cG9ydCBIT1NUX0NDPWNsYW5nCi0JCWV4cG9y dCBIT1NUX0NYWD1jbGFuZysrCi0JZWxzZQotCQlleHBvcnQgQlVJTERfQ1hYRkxBR1M9IiRCVUlM RF9DWFhGTEFHUyAtZnBlcm1pc3NpdmUiCi0JCWV4cG9ydCBDWFhGTEFHUz0iJENYWEZMQUdTIC1m cGVybWlzc2l2ZSIKLQkJZXhwb3J0IEJVSUxEX0FSPSIkQVJfaG9zdCIKLQkJZXhwb3J0IEJVSUxE X05NPSIkTk1faG9zdCIKLQlmaQotCW1zZ19ub3JtYWwgIk5pbmphIHR1cnRsZXMgR08hXG4iCi0J bmluamEgJHttYWtlam9ic30gLUMgb3V0LyRfYnVpbGR0eXBlIGVsZWN0cm9uIHRoaXJkX3BhcnR5 L2VsZWN0cm9uX25vZGU6aGVhZGVycwotCSMgZmluaXNoIHJlc3Qgb2YgdGhlIGJ1aWxkCi0Jc3Ry aXAgLXMgb3V0LyRfYnVpbGR0eXBlL2VsZWN0cm9uCi0JbmluamEgJHttYWtlam9ic30gLUMgb3V0 LyRfYnVpbGR0eXBlIGVsZWN0cm9uX2Rpc3RfemlwCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jdm1r ZGlyIC91c3IvbGliLyRwa2duYW1lCi0Jdm1rZGlyIC91c3IvaW5jbHVkZS8kcGtnbmFtZQotCWJz ZHRhciAteGYgb3V0LyRfYnVpbGR0eXBlL2Rpc3QuemlwIC1DICIkREVTVERJUi91c3IvbGliLyRw a2duYW1lIgotCi0JY2htb2QgdStzICIkREVTVERJUi91c3IvbGliLyRwa2duYW1lL2Nocm9tZS1z YW5kYm94IgotCi0JY3Agb3V0LyRfYnVpbGR0eXBlL2dlbi9ub2RlX2hlYWRlcnMudGFyLmd6ICIk REVTVERJUiIvdXNyL2luY2x1ZGUvJHBrZ25hbWUKLQotCXZsaWNlbnNlICR7d3Jrc3JjfS9zcmMv TElDRU5TRSBjaHJvbWl1bS5MSUNFTlNFCi0JdmxpY2Vuc2UgJHt3cmtzcmN9L3NyYy9lbGVjdHJv bi9MSUNFTlNFIGVsZWN0cm9uLkxJQ0VOU0UKLQl2bGljZW5zZSAke3dya3NyY30vc3JjL3RoaXJk X3BhcnR5L2VsZWN0cm9uX25vZGUvTElDRU5TRSBub2RlLkxJQ0VOU0UKLQotCXZta2RpciAvdXNy L2JpbgotCWxuIC1zIC4uL2xpYi8kcGtnbmFtZS9lbGVjdHJvbiAiJERFU1RESVIiL3Vzci9iaW4v JHBrZ25hbWUKLX0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy91cGRhdGUgYi9zcmNw a2dzL2VsZWN0cm9uMTMvdXBkYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWY4 ZTU4YjUzNTguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTMvdXBkYXRlCisr KyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1zaXRlPWh0dHBzOi8vd3d3LmVsZWN0cm9uanMu b3JnL3JlbGVhc2VzL3N0YWJsZT92ZXJzaW9uPSR7dmVyc2lvbiUlLip9Ci1wYXR0ZXJuPSd0YWcv dlxLW1xkXC5dKyg/PSIpJwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZW1vdmVkLXBhY2thZ2VzL3Rl bXBsYXRlIGIvc3JjcGtncy9yZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlCmluZGV4IDk1ZWZkM2Rm NDVjOC4uNTlmYWU3MDYyMGYzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9yZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlCkBAIC04Myw2 ICs4Myw3IEBAIHJlcGxhY2VzPSIKICBlY2xpcHNlLWVjajw9NC45XzMKICBlbGFzdGljc2VhcmNo PD01LjEuMl8yCiAgZWxlY3Ryb24xMDw9MTAuNC43XzIKKyBlbGVjdHJvbjEzPD0xMy42LjdfMQog IGVsZWN0cm9uNzw9Ny4zLjNfMQogIGVsZWN0cm9uOTw9OS40LjFfMQogIGVtYWNzLWd0azI8PTI3 LjJfMQo= --===============8129020023720369165==--