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 9204 invoked from network); 25 Jul 2022 01:31:15 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 25 Jul 2022 01:31:15 -0000 Content-Type: multipart/mixed; boundary="===============7078250294348291478==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_=5BWIP=5D_occt=3A_update_to_7=2E6=2E2?= To: ml@inbox.vuxu.org From: karl-nilsson Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Mon, 25 Jul 2022 03:31:15 +0200 List-Id: Message-ID: <20220725013115.2WmDyYjMU2vjYlZ8EFwfg9tS2dTd_HHUXZySCOttKaE@z> GitHub notification mails are now in MIME to allow UTF8. --===============7078250294348291478== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkga2FybC1uaWxzc29uIGFnYWluc3Qg bWFzdGVyIG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNv bS9rYXJsLW5pbHNzb24vdm9pZC1wYWNrYWdlcyBvY2N0XzcuNgpodHRwczovL2dpdGh1Yi5jb20v dm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzYzNTYKCltXSVBdIG9jY3Q6IHVwZGF0ZSB0 byA3LjYuMgoNCg0KIyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQotIEkgdGVzdGVkIHRoZSBjaGFu Z2VzIGluIHRoaXMgUFI6ICoqYnJpZWZseSoqDQoNCg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5n DQotIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZvciBteSBuYXRpdmUgYXJjaGl0ZWN0dXJlLCB4 NjQtZ2xpYmMNCg0KDQpMaWtlIHByZXZpb3VzbHksIGJyb2tlbiBBQkkNCmBgYGNvbnNvbGUNCkR1 cmluZyBpbml0aWFsaXphdGlvbiB0aGUgZXJyb3IgIi91c3IvbGliL2ZyZWVjYWQvbGliNjQvUGFy dC5zbzogdW5kZWZpbmVkIHN5bWJvbDogX1pOMjRCUmVwQnVpbGRlckFQSV9NYWtlU2hhcGU1QnVp bGRFdiIgb2NjdXJyZWQgaW4gL2hvbWUvbmlsc3Nvbi8uRnJlZUNBRC9Nb2QvQTJwbHVzL0luaXRH dWkucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICANClBsZWFzZSBsb29rIGludG8gdGhlIGxvZyBmaWxlIGZvciBmdXJ0aGVyIGlu Zm9ybWF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpXaXphcmQg c2hhZnQgbW9kdWxlIGNhbm5vdCBiZSBsb2FkZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KL3Vzci9saWIvZnJlZWNhZC9saWI2NC9QYXJ0 LnNvOiB1bmRlZmluZWQgc3ltYm9sOiBfWk4yNEJSZXBCdWlsZGVyQVBJX01ha2VTaGFwZTVCdWls ZEV2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICANCmNvbm5lY3QgZmFpbGVkOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICAgICAg DQpgYGANCg0KTG9va3MgbGlrZSB3ZSdsbCBoYXZlIHRvIHVwZGF0ZSBvciBwYXRjaCBmcmVlY2Fk DQpgYGBjb25zb2xlDQpJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL29wZW5jYXNj YWRlL0V4dHJlbWFfUE9uU3VyZi5seHg6MTUsDQogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9p bmNsdWRlL29wZW5jYXNjYWRlL0V4dHJlbWFfUE9uU3VyZi5oeHg6NzUsDQogICAgICAgICAgICAg ICAgIGZyb20gL3Vzci9pbmNsdWRlL29wZW5jYXNjYWRlL0V4dHJlbWFfRXh0UEVsUy5oeHg6Mjcs DQogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL29wZW5jYXNjYWRlL0V4dHJlbWFf RXh0UFMuaHh4OjI0LA0KICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9vcGVuY2Fz Y2FkZS9TaGFwZUFuYWx5c2lzX1N1cmZhY2UuaHh4OjIwLA0KICAgICAgICAgICAgICAgICBmcm9t IC4uL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01FU0hfTWVzaGVySGVscGVyLmh4eDoz NywNCiAgICAgICAgICAgICAgICAgZnJvbSAuLi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3Jj L1NNRVNIL1NNRVNIX01lc2guY3BwOjM0Og0KL3Vzci9pbmNsdWRlL29wZW5jYXNjYWRlL1ByZWNp c2lvbi5oeHg6OTg6Nzogbm90ZTogcHJldmlvdXMgZGVmaW5pdGlvbiBvZiAnY2xhc3MgUHJlY2lz aW9uJw0KICAgOTggfCBjbGFzcyBQcmVjaXNpb24NCiAgICAgIHwgICAgICAgXn5+fn5+fn5+DQoN CmBgYA0KDQpwaW5nIEBQaXJhdHkgCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5j b20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzYzNTYucGF0Y2ggaXMgYXR0YWNoZWQ= --===============7078250294348291478== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-occt_7.6-36356.patch" RnJvbSA3ZjFjN2I3NTI0NDJhYmMzMTYxYTVlN2Y0NDgwODAwNTZmOTYxMDM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLYXJsIE5pbHNzb24gPGthcmwucm9iZXJ0Lm5pbHNzb25AZ21h aWwuY29tPgpEYXRlOiBGcmksIDI1IE1hciAyMDIyIDIwOjI0OjQ5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAxLzZdIHB5dGhvbjMtb2NjOiByZW1vdmUgcGFja2FnZQoKKiB1cHN0cmVhbSBpcyB3ZWxs IGJlaGluZCBvY2N0Ci0tLQogc3JjcGtncy9weXRob24zLW9jYy9wYXRjaGVzL3B5dGhvbjMuMTAu cGF0Y2ggfCAxNSAtLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvcHl0aG9uMy1vY2MvdGVtcGxhdGUg ICAgICAgICAgICAgICAgIHwgMTcgLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvcmVtb3ZlZC1w YWNrYWdlcy90ZW1wbGF0ZSAgICAgICAgICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMzIgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9w eXRob24zLW9jYy9wYXRjaGVzL3B5dGhvbjMuMTAucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3B5dGhvbjMtb2NjL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24z LW9jYy9wYXRjaGVzL3B5dGhvbjMuMTAucGF0Y2ggYi9zcmNwa2dzL3B5dGhvbjMtb2NjL3BhdGNo ZXMvcHl0aG9uMy4xMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE5MjYw OGZkM2IzLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9weXRob24zLW9jYy9wYXRjaGVzL3B5 dGhvbjMuMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1kaWZmIC0tZ2l0 IGEvc3JjL0Rpc3BsYXkvU2ltcGxlR3VpLnB5IGIvc3JjL0Rpc3BsYXkvU2ltcGxlR3VpLnB5Ci1p bmRleCA0MjcwNWE4Mi4uNmEyNzRjMTYgMTAwNjQ0Ci0tLS0gYS9zcmMvRGlzcGxheS9TaW1wbGVH dWkucHkKLSsrKyBiL3NyYy9EaXNwbGF5L1NpbXBsZUd1aS5weQotQEAgLTE2MSw4ICsxNjEsOCBA QCBkZWYgaW5pdF9kaXNwbGF5KGJhY2tlbmRfc3RyOiBPcHRpb25hbFtzdHJdPU5vbmUsCi0gICAg ICAgICAgICAgZGVmIGNlbnRlck9uU2NyZWVuKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICAgICAg ICAgICcnJ0NlbnRlcnMgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLicnJwotICAgICAgICAgICAg ICAgICByZXNvbHV0aW9uID0gUXRXaWRnZXRzLlFBcHBsaWNhdGlvbi5kZXNrdG9wKCkuc2NyZWVu R2VvbWV0cnkoKQotLSAgICAgICAgICAgICAgICB4ID0gKHJlc29sdXRpb24ud2lkdGgoKSAtIHNl bGYuZnJhbWVTaXplKCkud2lkdGgoKSkgLyAyCi0tICAgICAgICAgICAgICAgIHkgPSAocmVzb2x1 dGlvbi5oZWlnaHQoKSAtIHNlbGYuZnJhbWVTaXplKCkuaGVpZ2h0KCkpIC8gMgotKyAgICAgICAg ICAgICAgICB4ID0gKHJlc29sdXRpb24ud2lkdGgoKSAtIHNlbGYuZnJhbWVTaXplKCkud2lkdGgo KSkgLy8gMgotKyAgICAgICAgICAgICAgICB5ID0gKHJlc29sdXRpb24uaGVpZ2h0KCkgLSBzZWxm LmZyYW1lU2l6ZSgpLmhlaWdodCgpKSAvLyAyCi0gICAgICAgICAgICAgICAgIHNlbGYubW92ZSh4 LCB5KQotIAotICAgICAgICAgICAgIGRlZiBhZGRfbWVudShzZWxmLCBtZW51X25hbWU6IHN0cikg LT4gTm9uZToKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1vY2MvdGVtcGxhdGUgYi9zcmNw a2dzL3B5dGhvbjMtb2NjL3RlbXBsYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi ZWUwMzM3M2EzZDEuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3B5dGhvbjMtb2NjL3RlbXBs YXRlCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyBUZW1wbGF0ZSBmaWxlIGZvciAn cHl0aG9uMy1vY2MnCi1wa2duYW1lPXB5dGhvbjMtb2NjCi12ZXJzaW9uPTcuNC4xCi1yZXZpc2lv bj0zCi1hcmNocz0iaTY4NiogeDg2XzY0KiBhcm12N2wqIGFhcmNoNjQqIHBwYyoiCi13cmtzcmM9 InB5dGhvbm9jYy1jb3JlLSR7dmVyc2lvbn0iCi1idWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJl X2FyZ3M9Ii1EUFlUSE9OT0NDX0JVSUxEX1RZUEU9Tm9uZSAtRENNQUtFX0JVSUxEX1RZUEU9Tm9u ZSIKLWhvc3RtYWtlZGVwZW5kcz0icHl0aG9uMyBzd2lnIgotbWFrZWRlcGVuZHM9InB5dGhvbjMt ZGV2ZWwgb2NjdC1kZXZlbCBmcmVldHlwZS1kZXZlbCBzd2lnIgotZGVwZW5kcz0icHl0aG9uMyBv Y2N0IGZyZWV0eXBlIgotc2hvcnRfZGVzYz0iSW5kdXN0cmlhbCBzdHJlbmd0aCAzRCBDQUQgUHl0 aG9uMyBwYWNrYWdlIgotbWFpbnRhaW5lcj0iS2FybCBOaWxzc29uIDxrYXJsLnJvYmVydC5uaWxz c29uQGdtYWlsLmNvbT4iCi1saWNlbnNlPSJMR1BMLTMuMC1vci1sYXRlciIKLWhvbWVwYWdlPSJo dHRwOi8vcHl0aG9ub2NjLm9yZyIKLWRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3RwYXZp b3QvcHl0aG9ub2NjLWNvcmUvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTZk NjIwMDIyNDRhMGU3ZjRlNWMxYWQ1OTBkMzMyYTYwNjAxYzQ0YjI1MDFhZDAxNzM2MTQ0M2I1NDM3 MWU2NjcKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZQppbmRleCA4NDU2Y2I5NTlkMzUuLjQ4OGU2 MmVjMTA1YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9yZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZQpAQCAtMzQzLDYgKzM0Myw3IEBA IHJlcGxhY2VzPSIKICBweXRob24zLWtlZXBhbGl2ZTw9MC41XzYKICBweXRob24zLXBncGR1bXA8 PTEuNV8xMAogIHB5dGhvbjMtbG9ja2ZpbGU8PTAuMTIuMl83CisgcHl0aG9uMy1vY2M8PTcuNC4x XzMKICBweXRob24zLXB5UEVHMjw9Mi4xNS4yXzcKICBweXRob24zLXB5ZW5ldDw9NS4xNS4wXzIK ICBweXRob24zLXB5c2lkZS1waG9ub248PTUuMTUuMF8yCgpGcm9tIDlkYWI3NGRjNmI1YWNlYzA2 NTQ1Mzk2ZTNjYmRkM2M1ZTJmOWU5ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEth cmwgTmlsc3NvbiA8a2FybC5yb2JlcnQubmlsc3NvbkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjUg TWFyIDIwMjIgMTk6Mjk6MDAgLTA0MDAKU3ViamVjdDogW1BBVENIIDIvNl0gb2NjdDogdXBkYXRl IHRvIDcuNi4yLgoKLS0tCiAuLi4vb2NjdC9wYXRjaGVzL2NtYWtlLWJ1aWxkLXR5cGUtbm9uZS5w YXRjaCAgfCAgNiArLS0KIHNyY3BrZ3Mvb2NjdC9wYXRjaGVzL211c2wtZmVudi5wYXRjaCAgICAg ICAgICB8IDE4ICsrKystLS0tCiBzcmNwa2dzL29jY3QvcGF0Y2hlcy9tdXNsLW1hbGxpbmZvLnBh dGNoICAgICAgfCA0NSArKysrKysrKysrKysrKy0tLS0tCiBzcmNwa2dzL29jY3QvdGVtcGxhdGUg ICAgICAgICAgICAgICAgICAgICAgICAgfCAyNyArKysrKy0tLS0tLQogc3JjcGtncy9vY2N0L3Vw ZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgLQogNSBmaWxlcyBjaGFuZ2VkLCA2 MCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL29jY3QvdXBkYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vY2N0L3BhdGNoZXMvY21ha2Ut YnVpbGQtdHlwZS1ub25lLnBhdGNoIGIvc3JjcGtncy9vY2N0L3BhdGNoZXMvY21ha2UtYnVpbGQt dHlwZS1ub25lLnBhdGNoCmluZGV4IGVjYjBlM2RhMzkyOS4uZDJjYWVjOGM0ZTg3IDEwMDY0NAot LS0gYS9zcmNwa2dzL29jY3QvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2gKKysr IGIvc3JjcGtncy9vY2N0L3BhdGNoZXMvY21ha2UtYnVpbGQtdHlwZS1ub25lLnBhdGNoCkBAIC0x LDggKzEsOCBAQAotSW5kZXg6IENNYWtlTGlzdHMudHh0Ci09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitkaWZmIC0tZ2l0 IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggZjRlYzg3MWY1Li45YjA2 NDRlOTQgMTAwNjQ0CiAtLS0gYS9DTWFrZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQK LUBAIC00LDcgKzQsNyBAQCBzZXQgKENNQUtFX01PRFVMRV9QQVRIICIke0NNQUtFX1NPVVJDRV9E CitAQCAtNCw3ICs0LDcgQEAgc2V0IChDTUFLRV9NT0RVTEVfUEFUSCAiJHtDTUFLRV9TT1VSQ0Vf RElSfS9hZG0vY21ha2UiKQogIAogIHNldCAoQ01BS0VfU1VQUFJFU1NfUkVHRU5FUkFUSU9OIFRS VUUpCiAgCmRpZmYgLS1naXQgYS9zcmNwa2dzL29jY3QvcGF0Y2hlcy9tdXNsLWZlbnYucGF0Y2gg Yi9zcmNwa2dzL29jY3QvcGF0Y2hlcy9tdXNsLWZlbnYucGF0Y2gKaW5kZXggMDlkYThkMGFmZWFl Li4wNmE4ZTNhODljZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb2NjdC9wYXRjaGVzL211c2wtZmVu di5wYXRjaAorKysgYi9zcmNwa2dzL29jY3QvcGF0Y2hlcy9tdXNsLWZlbnYucGF0Y2gKQEAgLTUs MTggKzUsMjAgQEAgaXMgcHJvYmFibHkgd3JvbmcsIGJ1dCBJIGRvbid0IGhhdmUgYSByZXBsYWNl bWVudCBmb3IgdGhlCiBub24tcG9zaXggZnVuY3Rpb25zIGZlZ2V0ZXhjZXB0KDMpIGFuZCBmZWVu YWJsZWV4Y2VwdCgzKS4KICIiIgogCitkaWZmIC0tZ2l0IGEvc3JjL09TRC9PU0Rfc2lnbmFsLmN4 eCBiL3NyYy9PU0QvT1NEX3NpZ25hbC5jeHgKK2luZGV4IDAwN2Y1Y2NhYS4uZmUzOWUwN2FjIDEw MDY0NAogLS0tIGEvc3JjL09TRC9PU0Rfc2lnbmFsLmN4eAogKysrIGIvc3JjL09TRC9PU0Rfc2ln bmFsLmN4eAotQEAgLTcwMyw3ICs3MDMsNyBAQAotIAorQEAgLTc2MSw3ICs3NjEsNyBAQCB0eXBl ZGVmIHZvaWQgKCogU0lHX1BGVikgKGludCk7CisKICAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gCi0t I2lmICFkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotKyNpZiAhZGVm aW5lZChfX0FORFJPSURfXykgJiYgIWRlZmluZWQoX19RTlhfXykgJiYgZGVmaW5lZChfX0dMSUJD X18pCisKKy0jaWYgIWRlZmluZWQoX19BTkRST0lEX18pICYmICFkZWZpbmVkKF9fUU5YX18pICYm ICFkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQorKyNpZiAhZGVmaW5lZChfX0FORFJPSURfXykgJiYg IWRlZmluZWQoX19RTlhfXykgJiYgIWRlZmluZWQoX19FTVNDUklQVEVOX18pICYmIGRlZmluZWQo X19HTElCQ19fKQogICAgI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KICAjZW5kaWYKLSAKLUBAIC05 MTQsNyArOTE0LDcgQEAKKworQEAgLTk3Nyw3ICs5NzcsNyBAQCBzdGF0aWMgdm9pZCBTZWd2SGFu ZGxlcihjb25zdCBpbnQgdGhlU2lnbmFsLAogIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICB2b2lkIE9TRDo6 U2V0RmxvYXRpbmdTaWduYWwgKFN0YW5kYXJkX0Jvb2xlYW4gdGhlRmxvYXRpbmdTaWduYWwpCiAg ewpAQCAtMjUsNyArMjcsNyBAQCBub24tcG9zaXggZnVuY3Rpb25zIGZlZ2V0ZXhjZXB0KDMpIGFu ZCBmZWVuYWJsZWV4Y2VwdCgzKS4KICAgIGZlY2xlYXJleGNlcHQgKEZFX0FMTF9FWENFUFQpOwog ICAgaWYgKHRoZUZsb2F0aW5nU2lnbmFsKQogICAgewotQEAgLTk0Nyw3ICs5NDcsNyBAQAorQEAg LTEwMTAsNyArMTAxMCw3IEBAIHZvaWQgT1NEOjpTZXRGbG9hdGluZ1NpZ25hbCAoU3RhbmRhcmRf Qm9vbGVhbiB0aGVGbG9hdGluZ1NpZ25hbCkKICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgU3RhbmRhcmRf Qm9vbGVhbiBPU0Q6OlRvQ2F0Y2hGbG9hdGluZ1NpZ25hbHMoKQogIHsKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3Mvb2NjdC9wYXRjaGVzL211c2wtbWFsbGluZm8ucGF0Y2ggYi9zcmNwa2dzL29jY3QvcGF0 Y2hlcy9tdXNsLW1hbGxpbmZvLnBhdGNoCmluZGV4IDRlNTgyNWJmMWNiMC4uNmFlOTQ5OTJlYWY4 IDEwMDY0NAotLS0gYS9zcmNwa2dzL29jY3QvcGF0Y2hlcy9tdXNsLW1hbGxpbmZvLnBhdGNoCisr KyBiL3NyY3BrZ3Mvb2NjdC9wYXRjaGVzL211c2wtbWFsbGluZm8ucGF0Y2gKQEAgLTEsMTcgKzEs MzggQEAKLUluIG11c2wgbGliYyB0aGVyZSBpcyBubyBzdHJ1Y3QgbWFsbGluZm8gYW5kIG5vIGZ1 bmN0aW9uIG1hbGxpbmYoKQorQWRhcHRlZCBmcm9tIGFscGluZSdzIHBhdGNoCiAKK2RpZmYgLS1n aXQgYS9zcmMvT1NEL09TRF9NZW1JbmZvLmN4eCBiL3NyYy9PU0QvT1NEX01lbUluZm8uY3h4Citp bmRleCBkOWJiOTEzOTguLmQ2MDhlMDRmYyAxMDA2NDQKIC0tLSBhL3NyYy9PU0QvT1NEX01lbUlu Zm8uY3h4CiArKysgYi9zcmMvT1NEL09TRF9NZW1JbmZvLmN4eAotQEAgLTE0Nyw4ICsxNDcsMTIg QEAKLSAgIH0KLSAgIGFGaWxlLmNsb3NlKCk7CitAQCAtMzUsNiArMzUsOSBAQAorICNpbmNsdWRl IDxzc3RyZWFtPgorICNpbmNsdWRlIDxmc3RyZWFtPgorIAorKyNpbmNsdWRlIDxzeXMvdGltZS5o PgorKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKysKKyAjaW5jbHVkZSA8T1NEX01lbUluZm8u aHh4PgogIAotKyAgI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgc3RydWN0IG1hbGxpbmZvIGFN SSA9IG1hbGxpbmZvKCk7Ci0gICBteUNvdW50ZXJzW01lbUhlYXBVc2FnZV0gPSBhTUkudW9yZGJs a3M7Ci0rICAjZWxzZSAvKiBYWFggbm90IHlldCBjb2RlZCAqLwotKyAgbXlDb3VudGVyc1tNZW1I ZWFwVXNhZ2VdID0gMDsKLSsgICNlbmRpZgorICNpZiBkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQor QEAgLTE4MiwxOCArMTg1LDkgQEAgdm9pZCBPU0RfTWVtSW5mbzo6VXBkYXRlKCkKKyAjZWxpZiAo ZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19saW51eCkpCisgICBpZiAoSXNBY3RpdmUg KE1lbUhlYXBVc2FnZSkpCisgICB7CistICAjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmlu ZWQoX19HTElCQ19QUkVSRVEpCistICAgICNpZiBfX0dMSUJDX1BSRVJFUSgyLDMzKQorLSAgICAg ICNkZWZpbmUgSEFTX01BTExJTkZPMgorLSAgICAjZW5kaWYKKy0gICNlbmRpZgorLQorLSAgI2lm ZGVmIEhBU19NQUxMSU5GTzIKKy0gICAgY29uc3Qgc3RydWN0IG1hbGxpbmZvMiBhTUkgPSBtYWxs aW5mbzIoKTsKKy0gICNlbHNlCistICAgIGNvbnN0IHN0cnVjdCBtYWxsaW5mbyBhTUkgPSBtYWxs aW5mbygpOworLSAgI2VuZGlmCistICAgIG15Q291bnRlcnNbTWVtSGVhcFVzYWdlXSA9IGFNSS51 b3JkYmxrczsKKysgICAgc3RydWN0IHJ1c2FnZSBydSA9IHsgLnJ1X21heHJzcyA9IDAgfTsKKysg ICAgZ2V0cnVzYWdlKFJVU0FHRV9TRUxGLCAmcnUpOworKyAgICBteUNvdW50ZXJzW01lbUhlYXBV c2FnZV0gPSBydS5ydV9tYXhyc3M7CisgICB9CiAgCi0gI2VsaWYgKGRlZmluZWQoX19BUFBMRV9f KSkKLSAgIHN0cnVjdCB0YXNrX2Jhc2ljX2luZm8gYVRhc2tJbmZvOworICAgaWYgKCFJc0FjdGl2 ZSAoTWVtVmlydHVhbCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb2NjdC90ZW1wbGF0ZSBiL3NyY3Br Z3Mvb2NjdC90ZW1wbGF0ZQppbmRleCA2NjI0ZmVhOGI1M2YuLmIxN2M5MWIwMDU4YiAxMDA2NDQK LS0tIGEvc3JjcGtncy9vY2N0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2NjdC90ZW1wbGF0ZQpA QCAtMSwyNiArMSwyNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb2NjdCcKIHBrZ25hbWU9b2Nj dAotcmV2ZXJ0cz03LjUuMF8xCi12ZXJzaW9uPTcuNC4wcDEKLXJldmlzaW9uPTUKLV9naXR0YWc9 IlYke3ZlcnNpb24vLy4vX30iCi13cmtzcmM9b2NjdC0ke19naXR0YWd9Cit2ZXJzaW9uPTcuNi4y CityZXZpc2lvbj0xCitfdmVyPSIke3ZlcnNpb24vLy4vX30iCit3cmtzcmM9T0NDVC0ke192ZXJ9 CiBidWlsZF9zdHlsZT1jbWFrZQotIyBYWFg6IHJlLWVuYWJsZSAtRFVTRV9UQkI9T04gaWYgcG9z c2libGUgd2hlbiB1cGRhdGluZwotY29uZmlndXJlX2FyZ3M9Ii1EVVNFX0ZSRUVJTUFHRT1PTiAt RFVTRV9HTDJQUz1PTiAtRFVTRV9WVEs9T0ZGCitjb25maWd1cmVfYXJncz0iLURVU0VfRlJFRUlN QUdFPU9OIC1EVVNFX1RCQj1PTiAtRFVTRV9HTDJQUz1PTiAtRFVTRV9WVEs9T0ZGCiAgLURJTlNU QUxMX1NBTVBMRVM9T04iCi1tYWtlZGVwZW5kcz0iZnJlZXR5cGUtZGV2ZWwgZ2x1LWRldmVsIGZy ZWVpbWFnZS1kZXZlbCBnbDJwcy1kZXZlbCB0Y2wtZGV2ZWwKLSB0ay1kZXZlbCIKK21ha2VkZXBl bmRzPSJmcmVldHlwZS1kZXZlbCBnbHUtZGV2ZWwgZnJlZWltYWdlLWRldmVsIGdsMnBzLWRldmVs IHRiYi1kZXZlbAorIHRjbC1kZXZlbCB0ay1kZXZlbCIKIHNob3J0X2Rlc2M9Ik9wZW5DQVNDQURF IFRlY2hub2xvZ3kgLSBsaWJyYXJ5IGZvciBDQUQvQ0FNL0NBRSBhcHBsaWNhdGlvbnMiCiBtYWlu dGFpbmVyPSJQaXJhdHkgPHBpcmF0eTFAaW5ib3gucnU+IgogbGljZW5zZT0iY3VzdG9tOkxHUEwt Mi4xLW9ubHktd2l0aC1leGNlcHRpb25zIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3Lm9wZW5jYXNj YWRlLmNvbSIKLSMgZGlzdGZpbGU6IHVzZSBnaXQgaW5zdGVhZCBvZiBvZmZpY2lhbCB0YXJiYWxs LCB3aGljaCByZXF1aXJlcyByZWdpc3RyYXRpb24KLSMgc2VlIGh0dHBzOi8vd3d3Lm9wZW5jYXNj YWRlLmNvbS9jb250ZW50L3BhY2thZ2luZy1hZ2Fpbi1kZWJpYW4KLWRpc3RmaWxlcz0iaHR0cHM6 Ly9naXQuZGV2Lm9wZW5jYXNjYWRlLm9yZy9naXR3ZWIvP3A9b2NjdC5naXQ7YT1zbmFwc2hvdDto PXJlZnMvdGFncy8ke19naXR0YWd9O3NmPXRnej5vY2N0LSR7X2dpdHRhZ30udGFyLmd6IgotY2hl Y2tzdW09ZTAwZmVkYzIyMTU2MGZkYTMxNjUzYzIzYThmM2QwZWRhNzgwOTVjODc1MTlmMzM4ZDRm NDA4OGUyZWU5YTljMAorZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vT3Blbi1DYXNjYWRl LVNBUy9PQ0NUL2FyY2hpdmUvViR7X3Zlcn0udGFyLmd6IgorY2hlY2tzdW09ZGVhMDQwNzdkNzE1 MDdjNjY2YWFhN2NjYWVhY2M3M2FiNTgwZDY1NzJkN2Y3NWU5MGExOTg0YzRjMDMwMmE3YQogY29u ZmxpY3RzPSJvY2U+PTAiCiAKK2lmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9IG11c2wgXTsgdGhl bgorCW1ha2VkZXBlbmRzKz0iIGxpYmV4ZWNpbmZvLWRldmVsIgorCUxERkxBR1M9Ii1sZXhlY2lu Zm8iCitmaQorCiBwb3N0X2luc3RhbGwoKSB7CiAJcm0gJHtQS0dERVNURElSfS91c3Ivc2hhcmUv ZG9jL29wZW5jYXNjYWRlLypfTEdQTF8qLnR4dAogCXZsaWNlbnNlIE9DQ1RfTEdQTF9FWENFUFRJ T04udHh0CmRpZmYgLS1naXQgYS9zcmNwa2dzL29jY3QvdXBkYXRlIGIvc3JjcGtncy9vY2N0L3Vw ZGF0ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzEyOGVlYzZkOWM5Li4wMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9vY2N0L3VwZGF0ZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAs MCBAQAotc2l0ZT0iaHR0cHM6Ly9naXQuZGV2Lm9wZW5jYXNjYWRlLm9yZy9naXR3ZWIvP3A9b2Nj dC5naXQ7YT10YWdzIgotcGF0dGVybj0iPlZcS1tcZF9wXSsoPz08L2E+KSIKCkZyb20gNTczYWY0 ODdmM2YwODUwMzAxMWYwZmY3MDhkMDQ5ODI1MDM4MDYzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogS2FybCBOaWxzc29uIDxrYXJsLnJvYmVydC5uaWxzc29uQGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNiBNYXIgMjAyMiAxMToyNToxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMy82XSBm cmVlY2FkOiB1cGRhdGUgdG8gMC4yMC4wLgoKLS0tCiBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8w NTAtb2NjdDc2LnBhdGNoIHwgMTQwICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2Zy ZWVjYWQvdGVtcGxhdGUgICAgICAgICAgICAgICAgIHwgICA0ICstCiAyIGZpbGVzIGNoYW5nZWQs IDE0MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzA1MC1vY2N0NzYucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2ZyZWVjYWQvcGF0Y2hlcy8wNTAtb2NjdDc2LnBhdGNoIGIvc3JjcGtncy9mcmVlY2FkL3Bh dGNoZXMvMDUwLW9jY3Q3Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjc4NjVhNTliY2VlZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZnJlZWNhZC9w YXRjaGVzLzA1MC1vY2N0NzYucGF0Y2gKQEAgLTAsMCArMSwxNDAgQEAKK0Zyb20gNmYzYjAwZDY3 ZWMwYmQwMDcyYjdiNDkzZTJhMzhkMmEyZTNhZjI3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IHdtYXllciA8d21heWVyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6IE1vbiwg MTEgT2N0IDIwMjEgMDA6MzA6MjIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gU01FU0g6IHBvcnQg dG8gT0NDVCA3LjYKKworLS0tCisgLi4uL3NyYy9ORVRHRU5QbHVnaW4vTkVUR0VOUGx1Z2luX01l c2hlci5jcHAgICAgICAgfCAgNyArKysrKysrCisgLi4uL3NhbG9tZXNtZXNoL3NyYy9TTUVTSC9T TUVTSF9NZXNoQWxnb3MuY3BwICAgICAgfCAgNyArKysrKy0tCisgLi4uL3NyYy9TdGRNZXNoZXJz L1N0ZE1lc2hlcnNfQWRhcHRpdmUxRC5jcHAgICAgICAgfCAxNCArKysrKysrKysrKysrKworIC4u Li9zcmMvU3RkTWVzaGVycy9TdGRNZXNoZXJzX1F1YWRyYW5nbGVfMkQuY3BwICAgIHwgIDIgKy0K KyAuLi4vc3JjL1N0ZE1lc2hlcnMvU3RkTWVzaGVyc19WaXNjb3VzTGF5ZXJzLmNwcCAgICB8ICA4 ICsrKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9ORVRHRU5Q bHVnaW4vTkVUR0VOUGx1Z2luX01lc2hlci5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gv c3JjL05FVEdFTlBsdWdpbi9ORVRHRU5QbHVnaW5fTWVzaGVyLmNwcAoraW5kZXggY2Q2ZjBiMmIw NzU4Li5lYTgzOTg0Yjk3NjggMTAwNjQ0CistLS0gYS9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gv c3JjL05FVEdFTlBsdWdpbi9ORVRHRU5QbHVnaW5fTWVzaGVyLmNwcAorKysrIGIvc3JjLzNyZFBh cnR5L3NhbG9tZXNtZXNoL3NyYy9ORVRHRU5QbHVnaW4vTkVUR0VOUGx1Z2luX01lc2hlci5jcHAK K0BAIC01Niw2ICs1Niw3IEBACisgI2luY2x1ZGUgPE5Db2xsZWN0aW9uX01hcC5oeHg+CisgI2lu Y2x1ZGUgPFN0YW5kYXJkX0Vycm9ySGFuZGxlci5oeHg+CisgI2luY2x1ZGUgPFN0YW5kYXJkX1By b2dyYW1FcnJvci5oeHg+CisrI2luY2x1ZGUgPFN0YW5kYXJkX1ZlcnNpb24uaHh4PgorICNpbmNs dWRlIDxUQ29sU3RkX01hcE9mSW50ZWdlci5oeHg+CisgI2luY2x1ZGUgPFRvcEV4cC5oeHg+Cisg I2luY2x1ZGUgPFRvcEV4cF9FeHBsb3Jlci5oeHg+CitAQCAtNzAwLDcgKzcwMSwxMyBAQCBkb3Vi bGUgTkVUR0VOUGx1Z2luX01lc2hlcjo6R2V0RGVmYXVsdE1pblNpemUoY29uc3QgVG9wb0RTX1No YXBlJiBnZW9tLAorICAgICAgIEJSZXBfVG9vbDo6VHJpYW5ndWxhdGlvbiAoIFRvcG9EUzo6RmFj ZSggZkV4cC5DdXJyZW50KCkgKSwgbG9jKTsKKyAgICAgaWYgKCB0cmlhbmd1bGF0aW9uLklzTnVs bCgpICkgY29udGludWU7CisgICAgIGNvbnN0IGRvdWJsZSBmVG9sID0gQlJlcF9Ub29sOjpUb2xl cmFuY2UoIFRvcG9EUzo6RmFjZSggZkV4cC5DdXJyZW50KCkgKSk7CisrI2lmIE9DQ19WRVJTSU9O X0hFWCA8IDB4MDcwNjAwCisgICAgIGNvbnN0IFRDb2xncF9BcnJheTFPZlBudCYgICBwb2ludHMg PSB0cmlhbmd1bGF0aW9uLT5Ob2RlcygpOworKyNlbHNlCisrICAgIGF1dG8gcG9pbnRzID0gWyZ0 cmlhbmd1bGF0aW9uXShTdGFuZGFyZF9JbnRlZ2VyIGluZGV4KSB7CisrICAgICAgICByZXR1cm4g dHJpYW5ndWxhdGlvbi0+Tm9kZShpbmRleCk7CisrICAgIH07CisrI2VuZGlmCisgICAgIGNvbnN0 IFBvbHlfQXJyYXkxT2ZUcmlhbmdsZSYgdHJpYXMgPSB0cmlhbmd1bGF0aW9uLT5UcmlhbmdsZXMo KTsKKyAgICAgZm9yICggaW50IGlUID0gdHJpYXMuTG93ZXIoKTsgaVQgPD0gdHJpYXMuVXBwZXIo KTsgKytpVCApCisgICAgIHsKK2RpZmYgLS1naXQgYS9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gv c3JjL1NNRVNIL1NNRVNIX01lc2hBbGdvcy5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gv c3JjL1NNRVNIL1NNRVNIX01lc2hBbGdvcy5jcHAKK2luZGV4IDVhMDczMDgzMTBlYS4uZmJiMWIy NTAwODdmIDEwMDY0NAorLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTUVTSC9T TUVTSF9NZXNoQWxnb3MuY3BwCisrKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NN RVNIL1NNRVNIX01lc2hBbGdvcy5jcHAKK0BAIC0zOCwxMCArMzgsMTMgQEAKKyAjaW5jbHVkZSA8 R0NfTWFrZVNlZ21lbnQuaHh4PgorICNpbmNsdWRlIDxHZW9tQVBJX0V4dHJlbWFDdXJ2ZUN1cnZl Lmh4eD4KKyAjaW5jbHVkZSA8R2VvbV9MaW5lLmh4eD4KKy0jaW5jbHVkZSA8SW50QW5hX0ludENv bmljUXVhZC5oeHg+CistI2luY2x1ZGUgPEludEFuYV9RdWFkcmljLmh4eD4KKysjaW5jbHVkZSA8 Z3BfQ29uZS5oeHg+CisrI2luY2x1ZGUgPGdwX0N5bGluZGVyLmh4eD4KKyAjaW5jbHVkZSA8Z3Bf TGluLmh4eD4KKyAjaW5jbHVkZSA8Z3BfUGxuLmh4eD4KKysjaW5jbHVkZSA8Z3BfU3BoZXJlLmh4 eD4KKysjaW5jbHVkZSA8SW50QW5hX0ludENvbmljUXVhZC5oeHg+CisrI2luY2x1ZGUgPEludEFu YV9RdWFkcmljLmh4eD4KKyAKKyAjaW5jbHVkZSA8bGltaXRzPgorICNpbmNsdWRlIDxudW1lcmlj PgorZGlmZiAtLWdpdCBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9T dGRNZXNoZXJzX0FkYXB0aXZlMUQuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9T dGRNZXNoZXJzL1N0ZE1lc2hlcnNfQWRhcHRpdmUxRC5jcHAKK2luZGV4IDg4OTcwZjM2YjU1Ny4u N2M1MTYwMWM3YmJlIDEwMDY0NAorLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9T dGRNZXNoZXJzL1N0ZE1lc2hlcnNfQWRhcHRpdmUxRC5jcHAKKysrKyBiL3NyYy8zcmRQYXJ0eS9z YWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9TdGRNZXNoZXJzX0FkYXB0aXZlMUQuY3BwCitAQCAt NDYsNiArNDYsNyBAQAorICNpbmNsdWRlIDxQb2x5X0FycmF5MU9mVHJpYW5nbGUuaHh4PgorICNp bmNsdWRlIDxQb2x5X1BvbHlnb25PblRyaWFuZ3VsYXRpb24uaHh4PgorICNpbmNsdWRlIDxQb2x5 X1RyaWFuZ3VsYXRpb24uaHh4PgorKyNpbmNsdWRlIDxTdGFuZGFyZF9WZXJzaW9uLmh4eD4KKyAj aW5jbHVkZSA8VENvbGdwX0FycmF5MU9mUG50Lmh4eD4KKyAjaW5jbHVkZSA8VG9wRXhwLmh4eD4K KyAjaW5jbHVkZSA8VG9wRXhwX0V4cGxvcmVyLmh4eD4KK0BAIC0zMTgsMTMgKzMxOSwyNiBAQCBu YW1lc3BhY2UgLy8gaW50ZXJuYWwgdXRpbHMKKyAgICAgeworICAgICAgIG15RmFjZVRvbCAgICAg ICAgID0gU01FU0hfTWVzaGVySGVscGVyOjpNYXhUb2xlcmFuY2UoIGZhY2UgKTsKKyAgICAgICBt eVRyZWUgICAgICAgICAgICA9IHRyaWFUcmVlOworKyNpZiBPQ0NfVkVSU0lPTl9IRVggPCAweDA3 MDYwMAorICAgICAgIG15Tm9kZXMgICAgICAgICAgID0gJiB0ci0+Tm9kZXMoKTsKKysjZWxzZQor KyAgICAgIFRDb2xncF9BcnJheTFPZlBudCogdHJOb2RlcyA9IG5ldyBUQ29sZ3BfQXJyYXkxT2ZQ bnQoIDEsIHRyLT5OYk5vZGVzKCkgKTsKKysgICAgICBmb3IgKFN0YW5kYXJkX0ludGVnZXIgaSA9 IG15Tm9kZXMtPkxvd2VyKCk7IGkgPD0gbXlOb2Rlcy0+VXBwZXIoKTsgaSsrKQorKyAgICAgIHsK KysgICAgICAgIHRyTm9kZXMtPlNldFZhbHVlKGksIHRyLT5Ob2RlKGkpKTsKKysgICAgICB9Cisr ICAgICAgbXlOb2RlcyA9IHRyTm9kZXM7CisrICAgICAgbXlPd25Ob2RlcyA9IHRydWU7CisrI2Vu ZGlmCisgICAgICAgbXlQb2x5VHJpYXMgICAgICAgPSAmIHRyLT5UcmlhbmdsZXMoKTsKKyAgICAg ICBteVRyaWFzRGVmbGVjdGlvbiA9IHRyLT5EZWZsZWN0aW9uKCk7CisgICAgICAgaWYgKCAhbG9j LklzSWRlbnRpdHkoKSApIC8vIHRyYW5zZm9ybSBub2RlcyBpZiBuZWNlc3NhcnkKKyAgICAgICB7 CisgICAgICAgICBUQ29sZ3BfQXJyYXkxT2ZQbnQqIHRyc2ZOb2RlcyA9IG5ldyBUQ29sZ3BfQXJy YXkxT2ZQbnQoIG15Tm9kZXMtPkxvd2VyKCksIG15Tm9kZXMtPlVwcGVyKCkgKTsKKyAgICAgICAg IHRyc2ZOb2Rlcy0+QXNzaWduKCAqbXlOb2RlcyApOworKyNpZiBPQ0NfVkVSU0lPTl9IRVggPj0g MHgwNzA2MDAKKysgICAgICAgIGRlbGV0ZSBteU5vZGVzOyAvLyBpdCdzIGFscmVhZHkgYSBjb3B5 CisrI2VuZGlmCisgICAgICAgICBteU5vZGVzICAgID0gdHJzZk5vZGVzOworICAgICAgICAgbXlP d25Ob2RlcyA9IHRydWU7CisgICAgICAgICBjb25zdCBncF9UcnNmJiB0cnNmID0gbG9jOworZGlm ZiAtLWdpdCBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9TdGRNZXNo ZXJzX1F1YWRyYW5nbGVfMkQuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TdGRN ZXNoZXJzL1N0ZE1lc2hlcnNfUXVhZHJhbmdsZV8yRC5jcHAKK2luZGV4IGY3YWM0MTFkOWE1NS4u NWQ1YzE1YzM2NjEyIDEwMDY0NAorLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9T dGRNZXNoZXJzL1N0ZE1lc2hlcnNfUXVhZHJhbmdsZV8yRC5jcHAKKysrKyBiL3NyYy8zcmRQYXJ0 eS9zYWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9TdGRNZXNoZXJzX1F1YWRyYW5nbGVfMkQuY3Bw CitAQCAtNTAsNyArNTAsNyBAQAorICNpbmNsdWRlIDxHZW9tX1N1cmZhY2UuaHh4PgorICNpbmNs dWRlIDxOQ29sbGVjdGlvbl9EZWZpbmVBcnJheTIuaHh4PgorICNpbmNsdWRlIDxQcmVjaXNpb24u aHh4PgorLSNpbmNsdWRlIDxRdWFudGl0eV9QYXJhbWV0ZXIuaHh4PgorKyNpbmNsdWRlIDxTdGFu ZGFyZF9SZWFsLmh4eD4KKyAjaW5jbHVkZSA8VENvbFN0ZF9TZXF1ZW5jZU9mSW50ZWdlci5oeHg+ CisgI2luY2x1ZGUgPFRDb2xTdGRfU2VxdWVuY2VPZlJlYWwuaHh4PgorICNpbmNsdWRlIDxUQ29s Z3BfU2VxdWVuY2VPZlhZLmh4eD4KK2RpZmYgLS1naXQgYS9zcmMvM3JkUGFydHkvc2Fsb21lc21l c2gvc3JjL1N0ZE1lc2hlcnMvU3RkTWVzaGVyc19WaXNjb3VzTGF5ZXJzLmNwcCBiL3NyYy8zcmRQ YXJ0eS9zYWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9TdGRNZXNoZXJzX1Zpc2NvdXNMYXllcnMu Y3BwCitpbmRleCA4ZWUwZTI2ODMyNTkuLmU5ZjQ2MTgzMDU5ZSAxMDA2NDQKKy0tLSBhL3NyYy8z cmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9TdGRNZXNoZXJzX1Zpc2NvdXNMYXll cnMuY3BwCisrKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1N0ZE1lc2hlcnMvU3Rk TWVzaGVyc19WaXNjb3VzTGF5ZXJzLmNwcAorQEAgLTQ0LDcgKzQ0LDEwIEBACisgI2luY2x1ZGUg IlNNRVNIX3N1Yk1lc2hFdmVudExpc3RlbmVyLmh4eCIKKyAjaW5jbHVkZSAiU3RkTWVzaGVyc19G YWNlU2lkZS5oeHgiCisgCisrI2luY2x1ZGUgPFN0YW5kYXJkX1ZlcnNpb24uaHh4PgorKyNpZiBP Q0NfVkVSU0lPTl9IRVggPCAweDA3MDYwMAorICNpbmNsdWRlIDxBZGFwdG9yM2RfSFN1cmZhY2Uu aHh4PgorKyNlbmRpZgorICNpbmNsdWRlIDxCUmVwQWRhcHRvcl9DdXJ2ZTJkLmh4eD4KKyAjaW5j bHVkZSA8QlJlcEFkYXB0b3JfU3VyZmFjZS5oeHg+CisgI2luY2x1ZGUgPEJSZXBMUHJvcF9TTFBy b3BzLmh4eD4KK0BAIC0xMzQwLDggKzEzNDMsMTMgQEAgbmFtZXNwYWNlIFZJU0NPVVNfM0QKKyAg ICAgLy9jYXNlIEdlb21BYnNfU3VyZmFjZU9mRXh0cnVzaW9uOgorICAgICBjYXNlIEdlb21BYnNf T2Zmc2V0U3VyZmFjZToKKyAgICAgeworKyNpZiBPQ0NfVkVSU0lPTl9IRVggPCAweDA3MDYwMAor ICAgICAgIEhhbmRsZShBZGFwdG9yM2RfSFN1cmZhY2UpIGJhc2UgPSBzdXJmYWNlLkJhc2lzU3Vy ZmFjZSgpOworICAgICAgIHJldHVybiBnZXRSb3ZvbHV0aW9uQXhpcyggYmFzZS0+U3VyZmFjZSgp LCBheGlzICk7CisrI2Vsc2UKKysgICAgICBIYW5kbGUoQWRhcHRvcjNkX1N1cmZhY2UpIGJhc2Ug PSBzdXJmYWNlLkJhc2lzU3VyZmFjZSgpOworKyAgICAgIHJldHVybiBnZXRSb3ZvbHV0aW9uQXhp cyggKmJhc2UsIGF4aXMgKTsKKysjZW5kaWYKKyAgICAgfQorICAgICBkZWZhdWx0OiByZXR1cm4g ZmFsc2U7CisgICAgIH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZQppbmRleCAxZTJhZWMwMjRmZDcuLmM2NTg3YWU4MDlhYyAx MDA2NDQKLS0tIGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZnJlZWNh ZC90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZyZWVjYWQn CiBwa2duYW1lPWZyZWVjYWQKLXZlcnNpb249MC4xOS40Cit2ZXJzaW9uPTAuMjAKIHJldmlzaW9u PTEKIHdya3NyYz0iRnJlZUNBRC0ke3ZlcnNpb259IgogYnVpbGRfc3R5bGU9Y21ha2UKQEAgLTM2 LDcgKzM2LDcgQEAgbWFpbnRhaW5lcj0ieW9waXRvIDxwaWVycmUuYm91cmdpbkBmcmVlLmZyPiIK IGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZnJlZWNhZHdl Yi5vcmcvIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vRnJlZUNBRC9GcmVlQ0FEL2Fy Y2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT1lNDBhMWMzNDM5NTZlMTNjNTZjYzg1 NzhkMDI1YWU4M2Q2OGQ5ZDIwYWNkYTE3MzI5NTNiYzhhMzg4M2U5NzIyCitjaGVja3N1bT1jNGQ5 Y2U3ODJkM2RhMGVkZmExNmQ2MjE4ZGI0Y2U4NjEzZTM0NjEyNGVlNDdiM2ZlNmE2ZGFlNDBjMGE2 MWQ5CiAKIGlmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9IG11c2wgXTsgdGhlbgogCW1ha2VkZXBl bmRzKz0iIGxpYmV4ZWNpbmZvLWRldmVsIgoKRnJvbSA1NThiODAzYWY2MWJiYTJlYjBmOWMxNWI5 MGI0NjE1OThmMTM1MWZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLYXJsIE5pbHNz b24gPGthcmwucm9iZXJ0Lm5pbHNzb25AZ21haWwuY29tPgpEYXRlOiBTYXQsIDIzIEp1bCAyMDIy IDIzOjAxOjM5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCA0LzZdIGZyZWVjYWQ6IGZpeCBwYXRjaGVz CgotLS0KIHNyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAwMi1leGVjaW5mby5wYXRjaCAgICB8IDMw IC0tLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9wYXRjaGVzLzAxMC1zYWxvbWVzbWVzaC1leGVjaW5m by5wYXRjaCAgICB8IDE1ICsrKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25z KCspLCAzNiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVjYWQv cGF0Y2hlcy8wMDItZXhlY2luZm8ucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQv cGF0Y2hlcy8wMDItZXhlY2luZm8ucGF0Y2ggYi9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMDIt ZXhlY2luZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZGNhNzdhNzJh NC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAwMi1leGVjaW5m by5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS0tLSBhL3NyYy9BcHAvQXBw bGljYXRpb24uY3BwCTIwMjAtMDEtMjIgMjM6Mjc6NDIuNzA5MjczMDg3ICswMTAwCi0rKysgYi9z cmMvQXBwL0FwcGxpY2F0aW9uLmNwcAkyMDIwLTAxLTIyIDIzOjUwOjUzLjkxNTA3NTk1NSArMDEw MAotQEAgLTE0ODUsNyArMTQ4NSw5IEBACi0gI2VuZGlmDQotIA0KLSAjaWYgZGVmaW5lZChGQ19P U19MSU5VWCkNCi0rI2lmZGVmIF9fR0xJQkNfXw0KLSAjaW5jbHVkZSA8ZXhlY2luZm8uaD4NCi0r I2VuZGlmDQotICNpbmNsdWRlIDxkbGZjbi5oPg0KLSAjaW5jbHVkZSA8Y3h4YWJpLmg+DQotIA0K LUBAIC0xNDk3LDYgKzE0OTksNyBAQAotIC8vIFRoaXMgZnVuY3Rpb24gcHJvZHVjZXMgYSBzdGFj ayBiYWNrdHJhY2Ugd2l0aCBkZW1hbmdsZWQgZnVuY3Rpb24gJiBtZXRob2QgbmFtZXMuDQotIHZv aWQgcHJpbnRCYWNrdHJhY2Uoc2l6ZV90IHNraXA9MCkNCi0gew0KLSsjaWZkZWYgX19HTElCQ19f DQotICAgICB2b2lkICpjYWxsc3RhY2tbMTI4XTsNCi0gICAgIHNpemVfdCBuTWF4RnJhbWVzID0g c2l6ZW9mKGNhbGxzdGFjaykgLyBzaXplb2YoY2FsbHN0YWNrWzBdKTsNCi0gICAgIHNpemVfdCBu RnJhbWVzID0gYmFja3RyYWNlKGNhbGxzdGFjaywgbk1heEZyYW1lcyk7DQotQEAgLTE1MjcsNiAr MTUzMCw5IEBACi0gICAgIH0NCi0gDQotICAgICBmcmVlKHN5bWJvbHMpOw0KLSsjZWxzZQ0KLSsg ICAgc3RkOjpjZXJyIDw8ICJzb3JyeSwgbm8gYmFja3RyYWNlIG9uIG11c2wgbGliYyI7DQotKyNl bmRpZg0KLSB9DQotICNlbmRpZg0KLSANCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvcGF0 Y2hlcy8wMTAtc2Fsb21lc21lc2gtZXhlY2luZm8ucGF0Y2ggYi9zcmNwa2dzL2ZyZWVjYWQvcGF0 Y2hlcy8wMTAtc2Fsb21lc21lc2gtZXhlY2luZm8ucGF0Y2gKaW5kZXggY2M2YmRjOWZmNDg1Li5m MGFhNTE4NTJjMzYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAxMC1zYWxv bWVzbWVzaC1leGVjaW5mby5wYXRjaAorKysgYi9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMTAt c2Fsb21lc21lc2gtZXhlY2luZm8ucGF0Y2gKQEAgLTEsMTYgKzEsMTkgQEAKK2RpZmYgLS1naXQg YS9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL0RyaXZlclNUTC9CYXNpY3NfVXRpbHMuY3Bw IGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9Ecml2ZXJTVEwvQmFzaWNzX1V0aWxzLmNw cAoraW5kZXggMjNjNTA4M2ZkZi4uNDU0N2Q3MTRkNCAxMDA2NDQKIC0tLSBhL3NyYy8zcmRQYXJ0 eS9zYWxvbWVzbWVzaC9zcmMvRHJpdmVyU1RML0Jhc2ljc19VdGlscy5jcHAKICsrKyBiL3NyYy8z cmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvRHJpdmVyU1RML0Jhc2ljc19VdGlscy5jcHAKLUBAIC0y OSw3ICsyOSw5IEBACitAQCAtMjksOCArMjksMTAgQEAKICAjaWZuZGVmIFdJTjMyCiAgI2luY2x1 ZGUgPHVuaXN0ZC5oPgogICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogKyNpZmRlZiBfX0dMSUJDX18K ICAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KLSsjZW5kaWYKICAjZW5kaWYKKysjZW5kaWYKICAKICAK LUBAIC0xMDksNiArMTExLDcgQEAKKyBuYW1lc3BhY2UgS2VybmVsX1V0aWxzCitAQCAtMTA5LDYg KzExMSw3IEBAIG5hbWVzcGFjZSBLZXJuZWxfVXRpbHMKICAjaWZuZGVmIFdJTjMyCiAgICB2b2lk IHByaW50X3RyYWNlYmFjaygpCiAgICB7CkBAIC0xOCwxMiArMjEsMTIgQEAKICAgICAgdm9pZCAq YXJyYXlbNTBdOwogICAgICBzaXplX3Qgc2l6ZTsKICAgICAgY2hhciAqKnN0cmluZ3M7Ci1AQCAt MTIzLDYgKzEyNiw5IEBACitAQCAtMTIzLDYgKzEyNiw5IEBAIG5hbWVzcGFjZSBLZXJuZWxfVXRp bHMKICAgICAgICB9CiAgCiAgICAgIGZyZWUgKHN0cmluZ3MpOwotKyNlbHNlICAgICAKLSsgICBz dGQ6OmNlcnIgPDwgInNvcnJ5LCBubyBiYWNrdHJhY2Ugb24gbXVzbCBsaWJjIjsKKysjZWxzZQor KyAgICBzdGQ6OmNlcnIgPDwgInNvcnJ5LCBubyBiYWNrdHJhY2Ugb24gbXVzbCBsaWJjIjsKICsj ZW5kaWYKICAgIH0KICAjZWxzZQoKRnJvbSBhNGFlMmY0ZDhkNWQ4NDAxOTU4ZmQ0ZmVhYjZlZTRj OGM5ZTYxMDVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLYXJsIE5pbHNzb24gPGth cmwucm9iZXJ0Lm5pbHNzb25AZ21haWwuY29tPgpEYXRlOiBTdW4sIDI0IEp1bCAyMDIyIDIxOjA5 OjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCA1LzZdIGZyZWVjYWQ6IGZpeCBwYXRjaGVzCgotLS0K IC4uLi9wYXRjaGVzLzAxMC1zYWxvbWVzbWVzaC1leGVjaW5mby5wYXRjaCAgICB8ICA1MiArKyst LS0tCiBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wNTAtb2NjdDc2LnBhdGNoICAgICAgfCAxNDAg LS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDE2 NiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hl cy8wNTAtb2NjdDc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMv MDEwLXNhbG9tZXNtZXNoLWV4ZWNpbmZvLnBhdGNoIGIvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMv MDEwLXNhbG9tZXNtZXNoLWV4ZWNpbmZvLnBhdGNoCmluZGV4IGYwYWE1MTg1MmMzNi4uZmM4YTdl ZjExZGFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMTAtc2Fsb21lc21l c2gtZXhlY2luZm8ucGF0Y2gKKysrIGIvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDEwLXNhbG9t ZXNtZXNoLWV4ZWNpbmZvLnBhdGNoCkBAIC0zLDMxICszLDMxIEBAIGluZGV4IDIzYzUwODNmZGYu LjQ1NDdkNzE0ZDQgMTAwNjQ0CiAtLS0gYS9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL0Ry aXZlclNUTC9CYXNpY3NfVXRpbHMuY3BwCiArKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gv c3JjL0RyaXZlclNUTC9CYXNpY3NfVXRpbHMuY3BwCiBAQCAtMjksOCArMjksMTAgQEAKLSAjaWZu ZGVmIFdJTjMyCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgot KyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KLSAjZW5kaWYKLSsjZW5k aWYKLSAKLSAKLSBuYW1lc3BhY2UgS2VybmVsX1V0aWxzCisgI2lmbmRlZiBXSU4zMg0KKyAjaW5j bHVkZSA8dW5pc3RkLmg+DQorICNpbmNsdWRlIDxzeXMvc3RhdC5oPg0KKysjaWZkZWYgX19HTElC Q19fDQorICNpbmNsdWRlIDxleGVjaW5mby5oPg0KKyAjZW5kaWYNCisrI2VuZGlmDQorIA0KKyAN CisgbmFtZXNwYWNlIEtlcm5lbF9VdGlscw0KIEBAIC0xMDksNiArMTExLDcgQEAgbmFtZXNwYWNl IEtlcm5lbF9VdGlscwotICNpZm5kZWYgV0lOMzIKLSAgIHZvaWQgcHJpbnRfdHJhY2ViYWNrKCkK LSAgIHsKLSsjaWZkZWYgX19HTElCQ19fCi0gICAgIHZvaWQgKmFycmF5WzUwXTsKLSAgICAgc2l6 ZV90IHNpemU7Ci0gICAgIGNoYXIgKipzdHJpbmdzOworICNpZm5kZWYgV0lOMzINCisgICB2b2lk IHByaW50X3RyYWNlYmFjaygpDQorICAgew0KKysjaWZkZWYgX19HTElCQ19fDQorICAgICB2b2lk ICphcnJheVs1MF07DQorICAgICBzaXplX3Qgc2l6ZTsNCisgICAgIGNoYXIgKipzdHJpbmdzOw0K IEBAIC0xMjMsNiArMTI2LDkgQEAgbmFtZXNwYWNlIEtlcm5lbF9VdGlscwotICAgICAgIH0KLSAK LSAgICAgZnJlZSAoc3RyaW5ncyk7Ci0rI2Vsc2UKLSsgICAgc3RkOjpjZXJyIDw8ICJzb3JyeSwg bm8gYmFja3RyYWNlIG9uIG11c2wgbGliYyI7Ci0rI2VuZGlmCi0gICB9Ci0gI2Vsc2UKLSAgICNp ZiAoX01TQ19WRVIgPj0gMTQwMCkgLy8gVmlzdWFsIFN0dWRpbyAyMDA1CisgICAgICAgfQ0KKyAN CisgICAgIGZyZWUgKHN0cmluZ3MpOw0KKysjZWxzZQ0KKysgICAgc3RkOjpjZXJyIDw8ICJzb3Jy eSwgbm8gYmFja3RyYWNlIG9uIG11c2wgbGliYyI7DQorKyNlbmRpZg0KKyAgIH0NCisgI2Vsc2UN CisgICAjaWYgKF9NU0NfVkVSID49IDE0MDApIC8vIFZpc3VhbCBTdHVkaW8gMjAwNQ0KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzA1MC1vY2N0NzYucGF0Y2ggYi9zcmNwa2dz L2ZyZWVjYWQvcGF0Y2hlcy8wNTAtb2NjdDc2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA3ODY1YTU5YmNlZWYuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQv cGF0Y2hlcy8wNTAtb2NjdDc2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAK LUZyb20gNmYzYjAwZDY3ZWMwYmQwMDcyYjdiNDkzZTJhMzhkMmEyZTNhZjI3ZCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IHdtYXllciA8d21heWVyQHVzZXJzLnNvdXJjZWZvcmdlLm5l dD4KLURhdGU6IE1vbiwgMTEgT2N0IDIwMjEgMDA6MzA6MjIgKzAyMDAKLVN1YmplY3Q6IFtQQVRD SF0gU01FU0g6IHBvcnQgdG8gT0NDVCA3LjYKLQotLS0tCi0gLi4uL3NyYy9ORVRHRU5QbHVnaW4v TkVUR0VOUGx1Z2luX01lc2hlci5jcHAgICAgICAgfCAgNyArKysrKysrCi0gLi4uL3NhbG9tZXNt ZXNoL3NyYy9TTUVTSC9TTUVTSF9NZXNoQWxnb3MuY3BwICAgICAgfCAgNyArKysrKy0tCi0gLi4u L3NyYy9TdGRNZXNoZXJzL1N0ZE1lc2hlcnNfQWRhcHRpdmUxRC5jcHAgICAgICAgfCAxNCArKysr KysrKysrKysrKwotIC4uLi9zcmMvU3RkTWVzaGVycy9TdGRNZXNoZXJzX1F1YWRyYW5nbGVfMkQu Y3BwICAgIHwgIDIgKy0KLSAuLi4vc3JjL1N0ZE1lc2hlcnMvU3RkTWVzaGVyc19WaXNjb3VzTGF5 ZXJzLmNwcCAgICB8ICA4ICsrKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNt ZXNoL3NyYy9ORVRHRU5QbHVnaW4vTkVUR0VOUGx1Z2luX01lc2hlci5jcHAgYi9zcmMvM3JkUGFy dHkvc2Fsb21lc21lc2gvc3JjL05FVEdFTlBsdWdpbi9ORVRHRU5QbHVnaW5fTWVzaGVyLmNwcAot aW5kZXggY2Q2ZjBiMmIwNzU4Li5lYTgzOTg0Yjk3NjggMTAwNjQ0Ci0tLS0gYS9zcmMvM3JkUGFy dHkvc2Fsb21lc21lc2gvc3JjL05FVEdFTlBsdWdpbi9ORVRHRU5QbHVnaW5fTWVzaGVyLmNwcAot KysrIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9ORVRHRU5QbHVnaW4vTkVUR0VOUGx1 Z2luX01lc2hlci5jcHAKLUBAIC01Niw2ICs1Niw3IEBACi0gI2luY2x1ZGUgPE5Db2xsZWN0aW9u X01hcC5oeHg+Ci0gI2luY2x1ZGUgPFN0YW5kYXJkX0Vycm9ySGFuZGxlci5oeHg+Ci0gI2luY2x1 ZGUgPFN0YW5kYXJkX1Byb2dyYW1FcnJvci5oeHg+Ci0rI2luY2x1ZGUgPFN0YW5kYXJkX1ZlcnNp b24uaHh4PgotICNpbmNsdWRlIDxUQ29sU3RkX01hcE9mSW50ZWdlci5oeHg+Ci0gI2luY2x1ZGUg PFRvcEV4cC5oeHg+Ci0gI2luY2x1ZGUgPFRvcEV4cF9FeHBsb3Jlci5oeHg+Ci1AQCAtNzAwLDcg KzcwMSwxMyBAQCBkb3VibGUgTkVUR0VOUGx1Z2luX01lc2hlcjo6R2V0RGVmYXVsdE1pblNpemUo Y29uc3QgVG9wb0RTX1NoYXBlJiBnZW9tLAotICAgICAgIEJSZXBfVG9vbDo6VHJpYW5ndWxhdGlv biAoIFRvcG9EUzo6RmFjZSggZkV4cC5DdXJyZW50KCkgKSwgbG9jKTsKLSAgICAgaWYgKCB0cmlh bmd1bGF0aW9uLklzTnVsbCgpICkgY29udGludWU7Ci0gICAgIGNvbnN0IGRvdWJsZSBmVG9sID0g QlJlcF9Ub29sOjpUb2xlcmFuY2UoIFRvcG9EUzo6RmFjZSggZkV4cC5DdXJyZW50KCkgKSk7Ci0r I2lmIE9DQ19WRVJTSU9OX0hFWCA8IDB4MDcwNjAwCi0gICAgIGNvbnN0IFRDb2xncF9BcnJheTFP ZlBudCYgICBwb2ludHMgPSB0cmlhbmd1bGF0aW9uLT5Ob2RlcygpOwotKyNlbHNlCi0rICAgIGF1 dG8gcG9pbnRzID0gWyZ0cmlhbmd1bGF0aW9uXShTdGFuZGFyZF9JbnRlZ2VyIGluZGV4KSB7Ci0r ICAgICAgICByZXR1cm4gdHJpYW5ndWxhdGlvbi0+Tm9kZShpbmRleCk7Ci0rICAgIH07Ci0rI2Vu ZGlmCi0gICAgIGNvbnN0IFBvbHlfQXJyYXkxT2ZUcmlhbmdsZSYgdHJpYXMgPSB0cmlhbmd1bGF0 aW9uLT5UcmlhbmdsZXMoKTsKLSAgICAgZm9yICggaW50IGlUID0gdHJpYXMuTG93ZXIoKTsgaVQg PD0gdHJpYXMuVXBwZXIoKTsgKytpVCApCi0gICAgIHsKLWRpZmYgLS1naXQgYS9zcmMvM3JkUGFy dHkvc2Fsb21lc21lc2gvc3JjL1NNRVNIL1NNRVNIX01lc2hBbGdvcy5jcHAgYi9zcmMvM3JkUGFy dHkvc2Fsb21lc21lc2gvc3JjL1NNRVNIL1NNRVNIX01lc2hBbGdvcy5jcHAKLWluZGV4IDVhMDcz MDgzMTBlYS4uZmJiMWIyNTAwODdmIDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNt ZXNoL3NyYy9TTUVTSC9TTUVTSF9NZXNoQWxnb3MuY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fs b21lc21lc2gvc3JjL1NNRVNIL1NNRVNIX01lc2hBbGdvcy5jcHAKLUBAIC0zOCwxMCArMzgsMTMg QEAKLSAjaW5jbHVkZSA8R0NfTWFrZVNlZ21lbnQuaHh4PgotICNpbmNsdWRlIDxHZW9tQVBJX0V4 dHJlbWFDdXJ2ZUN1cnZlLmh4eD4KLSAjaW5jbHVkZSA8R2VvbV9MaW5lLmh4eD4KLS0jaW5jbHVk ZSA8SW50QW5hX0ludENvbmljUXVhZC5oeHg+Ci0tI2luY2x1ZGUgPEludEFuYV9RdWFkcmljLmh4 eD4KLSsjaW5jbHVkZSA8Z3BfQ29uZS5oeHg+Ci0rI2luY2x1ZGUgPGdwX0N5bGluZGVyLmh4eD4K LSAjaW5jbHVkZSA8Z3BfTGluLmh4eD4KLSAjaW5jbHVkZSA8Z3BfUGxuLmh4eD4KLSsjaW5jbHVk ZSA8Z3BfU3BoZXJlLmh4eD4KLSsjaW5jbHVkZSA8SW50QW5hX0ludENvbmljUXVhZC5oeHg+Ci0r I2luY2x1ZGUgPEludEFuYV9RdWFkcmljLmh4eD4KLSAKLSAjaW5jbHVkZSA8bGltaXRzPgotICNp bmNsdWRlIDxudW1lcmljPgotZGlmZiAtLWdpdCBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9z cmMvU3RkTWVzaGVycy9TdGRNZXNoZXJzX0FkYXB0aXZlMUQuY3BwIGIvc3JjLzNyZFBhcnR5L3Nh bG9tZXNtZXNoL3NyYy9TdGRNZXNoZXJzL1N0ZE1lc2hlcnNfQWRhcHRpdmUxRC5jcHAKLWluZGV4 IDg4OTcwZjM2YjU1Ny4uN2M1MTYwMWM3YmJlIDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3Nh bG9tZXNtZXNoL3NyYy9TdGRNZXNoZXJzL1N0ZE1lc2hlcnNfQWRhcHRpdmUxRC5jcHAKLSsrKyBi L3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9TdGRNZXNoZXJzX0FkYXB0 aXZlMUQuY3BwCi1AQCAtNDYsNiArNDYsNyBAQAotICNpbmNsdWRlIDxQb2x5X0FycmF5MU9mVHJp YW5nbGUuaHh4PgotICNpbmNsdWRlIDxQb2x5X1BvbHlnb25PblRyaWFuZ3VsYXRpb24uaHh4Pgot ICNpbmNsdWRlIDxQb2x5X1RyaWFuZ3VsYXRpb24uaHh4PgotKyNpbmNsdWRlIDxTdGFuZGFyZF9W ZXJzaW9uLmh4eD4KLSAjaW5jbHVkZSA8VENvbGdwX0FycmF5MU9mUG50Lmh4eD4KLSAjaW5jbHVk ZSA8VG9wRXhwLmh4eD4KLSAjaW5jbHVkZSA8VG9wRXhwX0V4cGxvcmVyLmh4eD4KLUBAIC0zMTgs MTMgKzMxOSwyNiBAQCBuYW1lc3BhY2UgLy8gaW50ZXJuYWwgdXRpbHMKLSAgICAgewotICAgICAg IG15RmFjZVRvbCAgICAgICAgID0gU01FU0hfTWVzaGVySGVscGVyOjpNYXhUb2xlcmFuY2UoIGZh Y2UgKTsKLSAgICAgICBteVRyZWUgICAgICAgICAgICA9IHRyaWFUcmVlOwotKyNpZiBPQ0NfVkVS U0lPTl9IRVggPCAweDA3MDYwMAotICAgICAgIG15Tm9kZXMgICAgICAgICAgID0gJiB0ci0+Tm9k ZXMoKTsKLSsjZWxzZQotKyAgICAgIFRDb2xncF9BcnJheTFPZlBudCogdHJOb2RlcyA9IG5ldyBU Q29sZ3BfQXJyYXkxT2ZQbnQoIDEsIHRyLT5OYk5vZGVzKCkgKTsKLSsgICAgICBmb3IgKFN0YW5k YXJkX0ludGVnZXIgaSA9IG15Tm9kZXMtPkxvd2VyKCk7IGkgPD0gbXlOb2Rlcy0+VXBwZXIoKTsg aSsrKQotKyAgICAgIHsKLSsgICAgICAgIHRyTm9kZXMtPlNldFZhbHVlKGksIHRyLT5Ob2RlKGkp KTsKLSsgICAgICB9Ci0rICAgICAgbXlOb2RlcyA9IHRyTm9kZXM7Ci0rICAgICAgbXlPd25Ob2Rl cyA9IHRydWU7Ci0rI2VuZGlmCi0gICAgICAgbXlQb2x5VHJpYXMgICAgICAgPSAmIHRyLT5Ucmlh bmdsZXMoKTsKLSAgICAgICBteVRyaWFzRGVmbGVjdGlvbiA9IHRyLT5EZWZsZWN0aW9uKCk7Ci0g ICAgICAgaWYgKCAhbG9jLklzSWRlbnRpdHkoKSApIC8vIHRyYW5zZm9ybSBub2RlcyBpZiBuZWNl c3NhcnkKLSAgICAgICB7Ci0gICAgICAgICBUQ29sZ3BfQXJyYXkxT2ZQbnQqIHRyc2ZOb2RlcyA9 IG5ldyBUQ29sZ3BfQXJyYXkxT2ZQbnQoIG15Tm9kZXMtPkxvd2VyKCksIG15Tm9kZXMtPlVwcGVy KCkgKTsKLSAgICAgICAgIHRyc2ZOb2Rlcy0+QXNzaWduKCAqbXlOb2RlcyApOwotKyNpZiBPQ0Nf VkVSU0lPTl9IRVggPj0gMHgwNzA2MDAKLSsgICAgICAgIGRlbGV0ZSBteU5vZGVzOyAvLyBpdCdz IGFscmVhZHkgYSBjb3B5Ci0rI2VuZGlmCi0gICAgICAgICBteU5vZGVzICAgID0gdHJzZk5vZGVz OwotICAgICAgICAgbXlPd25Ob2RlcyA9IHRydWU7Ci0gICAgICAgICBjb25zdCBncF9UcnNmJiB0 cnNmID0gbG9jOwotZGlmZiAtLWdpdCBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU3Rk TWVzaGVycy9TdGRNZXNoZXJzX1F1YWRyYW5nbGVfMkQuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9t ZXNtZXNoL3NyYy9TdGRNZXNoZXJzL1N0ZE1lc2hlcnNfUXVhZHJhbmdsZV8yRC5jcHAKLWluZGV4 IGY3YWM0MTFkOWE1NS4uNWQ1YzE1YzM2NjEyIDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3Nh bG9tZXNtZXNoL3NyYy9TdGRNZXNoZXJzL1N0ZE1lc2hlcnNfUXVhZHJhbmdsZV8yRC5jcHAKLSsr KyBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9TdGRNZXNoZXJzX1F1 YWRyYW5nbGVfMkQuY3BwCi1AQCAtNTAsNyArNTAsNyBAQAotICNpbmNsdWRlIDxHZW9tX1N1cmZh Y2UuaHh4PgotICNpbmNsdWRlIDxOQ29sbGVjdGlvbl9EZWZpbmVBcnJheTIuaHh4PgotICNpbmNs dWRlIDxQcmVjaXNpb24uaHh4PgotLSNpbmNsdWRlIDxRdWFudGl0eV9QYXJhbWV0ZXIuaHh4Pgot KyNpbmNsdWRlIDxTdGFuZGFyZF9SZWFsLmh4eD4KLSAjaW5jbHVkZSA8VENvbFN0ZF9TZXF1ZW5j ZU9mSW50ZWdlci5oeHg+Ci0gI2luY2x1ZGUgPFRDb2xTdGRfU2VxdWVuY2VPZlJlYWwuaHh4Pgot ICNpbmNsdWRlIDxUQ29sZ3BfU2VxdWVuY2VPZlhZLmh4eD4KLWRpZmYgLS1naXQgYS9zcmMvM3Jk UGFydHkvc2Fsb21lc21lc2gvc3JjL1N0ZE1lc2hlcnMvU3RkTWVzaGVyc19WaXNjb3VzTGF5ZXJz LmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9TdGRNZXNoZXJz X1Zpc2NvdXNMYXllcnMuY3BwCi1pbmRleCA4ZWUwZTI2ODMyNTkuLmU5ZjQ2MTgzMDU5ZSAxMDA2 NDQKLS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU3RkTWVzaGVycy9TdGRNZXNo ZXJzX1Zpc2NvdXNMYXllcnMuY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3Jj L1N0ZE1lc2hlcnMvU3RkTWVzaGVyc19WaXNjb3VzTGF5ZXJzLmNwcAotQEAgLTQ0LDcgKzQ0LDEw IEBACi0gI2luY2x1ZGUgIlNNRVNIX3N1Yk1lc2hFdmVudExpc3RlbmVyLmh4eCIKLSAjaW5jbHVk ZSAiU3RkTWVzaGVyc19GYWNlU2lkZS5oeHgiCi0gCi0rI2luY2x1ZGUgPFN0YW5kYXJkX1ZlcnNp b24uaHh4PgotKyNpZiBPQ0NfVkVSU0lPTl9IRVggPCAweDA3MDYwMAotICNpbmNsdWRlIDxBZGFw dG9yM2RfSFN1cmZhY2UuaHh4PgotKyNlbmRpZgotICNpbmNsdWRlIDxCUmVwQWRhcHRvcl9DdXJ2 ZTJkLmh4eD4KLSAjaW5jbHVkZSA8QlJlcEFkYXB0b3JfU3VyZmFjZS5oeHg+Ci0gI2luY2x1ZGUg PEJSZXBMUHJvcF9TTFByb3BzLmh4eD4KLUBAIC0xMzQwLDggKzEzNDMsMTMgQEAgbmFtZXNwYWNl IFZJU0NPVVNfM0QKLSAgICAgLy9jYXNlIEdlb21BYnNfU3VyZmFjZU9mRXh0cnVzaW9uOgotICAg ICBjYXNlIEdlb21BYnNfT2Zmc2V0U3VyZmFjZToKLSAgICAgewotKyNpZiBPQ0NfVkVSU0lPTl9I RVggPCAweDA3MDYwMAotICAgICAgIEhhbmRsZShBZGFwdG9yM2RfSFN1cmZhY2UpIGJhc2UgPSBz dXJmYWNlLkJhc2lzU3VyZmFjZSgpOwotICAgICAgIHJldHVybiBnZXRSb3ZvbHV0aW9uQXhpcygg YmFzZS0+U3VyZmFjZSgpLCBheGlzICk7Ci0rI2Vsc2UKLSsgICAgICBIYW5kbGUoQWRhcHRvcjNk X1N1cmZhY2UpIGJhc2UgPSBzdXJmYWNlLkJhc2lzU3VyZmFjZSgpOwotKyAgICAgIHJldHVybiBn ZXRSb3ZvbHV0aW9uQXhpcyggKmJhc2UsIGF4aXMgKTsKLSsjZW5kaWYKLSAgICAgfQotICAgICBk ZWZhdWx0OiByZXR1cm4gZmFsc2U7Ci0gICAgIH0KCkZyb20gNmY5NGU4MzEwYjhkNTI3YTA0Yzcw YWY4NjBlMzYxNmNjNWYxNzA0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS2FybCBO aWxzc29uIDxrYXJsLnJvYmVydC5uaWxzc29uQGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAyNCBKdWwg MjAyMiAyMTozMToxMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggNi82XSBjbGVhbnVwIGZyZWVjYWQg cGF0Y2hlcwoKLS0tCiBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTAtdnRrOS5wYXRjaCAgICAg ICB8IDc5NiAtLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTIt Y21ha2UtdnRrOS5wYXRjaCB8ICA1MyAtLQogMiBmaWxlcyBjaGFuZ2VkLCA4NDkgZGVsZXRpb25z KC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTUwLXZ0azku cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTItY21h a2UtdnRrOS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1MC12 dGs5LnBhdGNoIGIvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTUwLXZ0azkucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNjczZTdjOWI5Zi4uMDAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1MC12dGs5LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNzk2ICswLDAgQEAKLVRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3d3bWF5ZXIvRnJl ZUNBRC9jb21taXQvYmI5YmNiZDUxZGY3YzNjYjc2YzU4MjMwMzhlNGVhMGY3ZTI1YTlmZgotYnV0 IHJlbW92ZWQgcGF0Y2ggb24gZmlsZSBzcmMvTW9kL0ZlbS9HdWkvVmlld1Byb3ZpZGVyRmVtUG9z dE9iamVjdC5jcHAgOiBhbHJlYWR5IGFwcGxpZWQgKDIwMjEtMDEtMjApCi0KLWRpZmYgLS1naXQg c3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2luYy9TTURTX01lc2hFbGVtZW50Lmh4eCBiL3NyYy8z cmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19NZXNoRWxlbWVudC5oeHgKLWluZGV4IDE0YTZk OWE3NjNmLi4wZTliOWU2YzkwNSAxMDA2NDQKLS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVz aC9pbmMvU01EU19NZXNoRWxlbWVudC5oeHgKLSsrKyBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVz aC9pbmMvU01EU19NZXNoRWxlbWVudC5oeHgKLUBAIC00MCwxMSArNDAsMTYgQEAKLSAKLSAjaW5j bHVkZSA8dnRrVHlwZS5oPgotICNpbmNsdWRlIDx2dGtDZWxsVHlwZS5oPgotKyNpbmNsdWRlIDx2 dGtDZWxsQXJyYXkuaD4KLSAKLSAvL3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgVVNob3J0VHlwZTsK LSB0eXBlZGVmIHNob3J0IFNob3J0VHlwZTsKLSB0eXBlZGVmIGludCAgIExvbmdUeXBlOwotLQot KyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotK3R5cGVkZWYgY29uc3QgdnRrSWRUeXBlKiB2dGtJ ZFR5cGVQdHI7Ci0rI2Vsc2UKLSt0eXBlZGVmIHZ0a0lkVHlwZSogdnRrSWRUeXBlUHRyOwotKyNl bmRpZgotIGNsYXNzIFNNRFNfTWVzaE5vZGU7Ci0gY2xhc3MgU01EU19NZXNoRWRnZTsKLSBjbGFz cyBTTURTX01lc2hGYWNlOwotQEAgLTE5Miw3ICsxOTcsNyBAQCBwcm90ZWN0ZWQ6Ci0gICAvLyEg RWxlbWVudCBpbmRleCBpbiB2ZWN0b3IgU01EU19NZXNoOjpteU5vZGVzIG9yIFNNRFNfTWVzaDo6 bXlDZWxscwotICAgaW50IG15SUQ7Ci0gICAvLyEgaW5kZXggaW4gdnRrVW5zdHJ1Y3R1cmVkR3Jp ZAotLSAgaW50IG15VnRrSUQ7Ci0rICB2dGtJZFR5cGUgbXlWdGtJRDsKLSAgIC8vISBTTURTX01l c2ggaWRlbnRpZmljYXRpb24gaW4gU01FU0gKLSAgIFNob3J0VHlwZSBteU1lc2hJZDsKLSAgIC8v ISBTdWJTaGFwZSBhbmQgU3ViTWVzaCBpZGVudGlmaWNhdGlvbiBpbiBTTUVTSERTCi1kaWZmIC0t Z2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19VbnN0cnVjdHVyZWRHcmlkLmh4 eCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19VbnN0cnVjdHVyZWRHcmlkLmh4 eAotaW5kZXggOWU0YTIzZWRkZmIuLjc3NDY1ODE0NTQxIDEwMDY0NAotLS0tIGEvc3JjLzNyZFBh cnR5L3NhbG9tZXNtZXNoL2luYy9TTURTX1Vuc3RydWN0dXJlZEdyaWQuaHh4Ci0rKysgYi9zcmMv M3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfVW5zdHJ1Y3R1cmVkR3JpZC5oeHgKLUBAIC05 NSw3ICs5NSwxMSBAQCBwdWJsaWM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RkOjptYXA8aW50LCBzdGQ6Om1hcDxsb25nLGludD4gPiYgbm9kZVF1YWREb21haW5z KTsKLSAgIHZ0a0NlbGxMaW5rcyogR2V0TGlua3MoKQotICAgewotKyNpZmRlZiBWVEtfQ0VMTF9B UlJBWV9WMgotKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dnRrQ2VsbExpbmtzKj4oR2V0Q2VsbExp bmtzKCkpOwotKyNlbHNlCi0gICAgIHJldHVybiBMaW5rczsKLSsjZW5kaWYKLSAgIH0KLSAgIFNN RFNfRG93bndhcmQqIGdldERvd25BcnJheSh1bnNpZ25lZCBjaGFyIHZ0a1R5cGUpCi0gICB7Ci1k aWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0JhbGxFbGVt ZW50LmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0JhbGxFbGVt ZW50LmNwcAotaW5kZXggMjk5MDkzYzk0ZjYuLjI2ODBjMjE3MzA1IDEwMDY0NAotLS0tIGEvc3Jj LzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfQmFsbEVsZW1lbnQuY3BwCi0rKysg Yi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19CYWxsRWxlbWVudC5jcHAK LUBAIC02NywxMCArNjcsMTYgQEAgdm9pZCBTTURTX0JhbGxFbGVtZW50OjpTZXREaWFtZXRlcihk b3VibGUgZGlhbWV0ZXIpCi0gYm9vbCBTTURTX0JhbGxFbGVtZW50OjpDaGFuZ2VOb2RlIChjb25z dCBTTURTX01lc2hOb2RlICogbm9kZSkKLSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlk ID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0rI2lmZGVmIFZU S19DRUxMX0FSUkFZX1YyCi0rICB2dGtOZXc8dnRrSWRMaXN0PiBjZWxsUG9pbnRzOwotKyAgZ3Jp ZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBjZWxsUG9pbnRzLkdldFBvaW50ZXIoKSk7Ci0rICBj ZWxsUG9pbnRzLT5TZXRJZCgwLCBub2RlLT5nZXRWdGtJZCgpKTsKLSsjZWxzZQotICAgdnRrSWRU eXBlIG5wdHMgPSAwOwotICAgdnRrSWRUeXBlKiBwdHMgPSAwOwotICAgZ3JpZC0+R2V0Q2VsbFBv aW50cyhteVZ0a0lELCBucHRzLCBwdHMpOwotICAgcHRzWzBdID0gbm9kZS0+Z2V0VnRrSWQoKTsK LSsjZW5kaWYKLSAgIFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+c2V0TXlNb2RpZmll ZCgpOwotICAgcmV0dXJuIHRydWU7Ci0gfQotQEAgLTgzLDcgKzg5LDggQEAgdm9pZCBTTURTX0Jh bGxFbGVtZW50OjpQcmludCAoc3RkOjpvc3RyZWFtICYgT1MpIGNvbnN0Ci0gY29uc3QgU01EU19N ZXNoTm9kZSogU01EU19CYWxsRWxlbWVudDo6R2V0Tm9kZSAoY29uc3QgaW50IGluZCkgY29uc3QK LSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3Rb bXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0tICB2dGtJZFR5cGUgbnB0cywgKnB0czsKLSsgIHZ0a0lk VHlwZSBucHRzOwotKyAgdnRrSWRUeXBlUHRyIHB0czsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMo IG15VnRrSUQsIG5wdHMsIHB0cyApOwotICAgcmV0dXJuIFNNRFNfTWVzaDo6X21lc2hMaXN0W215 TWVzaElkXS0+RmluZE5vZGVWdGsoIHB0c1sgMCBdKTsKLSB9Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQ YXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0Rvd253YXJkLmNwcCBiL3NyYy8zcmRQYXJ0 eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0Rvd253YXJkLmNwcAotaW5kZXggZDYwNDljMGJk MTkuLmE0MWY1YzE4ZTc4IDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3Ny Yy9TTURTL1NNRFNfRG93bndhcmQuY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gv c3JjL1NNRFMvU01EU19Eb3dud2FyZC5jcHAKLUBAIC0zMDMsNyArMzAzLDcgQEAgaW50IFNNRFNf RG93bjFEOjpnZXROb2RlU2V0KGludCBjZWxsSWQsIGludCogbm9kZVNldCkKLSB2b2lkIFNNRFNf RG93bjFEOjpzZXROb2RlcyhpbnQgY2VsbElkLCBpbnQgdnRrSWQpCi0gewotICAgdnRrSWRUeXBl IG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpwdHM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50 IGlkJ3Mgb2YgdGhlIGZhY2UKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7IC8vIHdpbGwgcmVmZXIgdG8g dGhlIHBvaW50IGlkJ3Mgb2YgdGhlIGZhY2UKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKHZ0a0lk LCBucHRzLCBwdHMpOwotICAgLy8gTUVTU0FHRSh2dGtJZCA8PCAiICIgPDwgbnB0cyA8PCAiICAi IDw8IF9uYkRvd25DZWxscyk7Ci0gICAvL0FTU0VSVChucHRzID09IF9uYkRvd25DZWxscyk7Ci1A QCAtMzU3LDcgKzM1Nyw3IEBAIGludCBTTURTX0Rvd24xRDo6Y29tcHV0ZVZ0a0NlbGxzKGludCAq cHRzLCBzdGQ6OnZlY3RvcjxpbnQ+JiB2dGtJZHMpCi0gICAgIHsKLSAgICAgICB2dGtJZFR5cGUg cG9pbnQgPSBwdHNbaV07Ci0gICAgICAgaW50IG51bUNlbGxzID0gX2dyaWQtPkdldExpbmtzKCkt PkdldE5jZWxscyhwb2ludCk7Ci0tICAgICAgdnRrSWRUeXBlICpjZWxscyA9IF9ncmlkLT5HZXRM aW5rcygpLT5HZXRDZWxscyhwb2ludCk7Ci0rICAgICAgdnRrSWRUeXBlUHRyIGNlbGxzID0gX2dy aWQtPkdldExpbmtzKCktPkdldENlbGxzKHBvaW50KTsKLSAgICAgICBmb3IgKGludCBqID0gMDsg aiA8IG51bUNlbGxzOyBqKyspCi0gICAgICAgICB7Ci0gICAgICAgICAgIGludCB2dGtDZWxsSWQg PSBjZWxsc1tqXTsKLUBAIC01MzIsNyArNTMyLDcgQEAgaW50IFNNRFNfRG93bjJEOjpjb21wdXRl Vm9sdW1lSWRzKGludCBjZWxsSWQsIGludCogaWRzKQotICAgLy8gLS0tIGZpbmQgcG9pbnQgaWQn cyBvZiB0aGUgZmFjZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpw dHM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIGZhY2UKLSsgIHZ0a0lk VHlwZVB0ciBwdHM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIGZhY2UK LSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywgcHRzKTsKLSAgIHZlY3Rvcjxp bnQ+IG5vZGVzOwotICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucHRzOyBpKyspCi1AQCAtNTc3LDcg KzU3Nyw3IEBAIGludCBTTURTX0Rvd24yRDo6Y29tcHV0ZVZvbHVtZUlkc0Zyb21Ob2Rlc0ZhY2Uo aW50KiBwdHMsIGludCBucHRzLCBpbnQqIGlkcykKLSAgICAgICB2dGtJZFR5cGUgcG9pbnQgPSBw dHNbaV07Ci0gICAgICAgaW50IG51bUNlbGxzID0gX2dyaWQtPkdldExpbmtzKCktPkdldE5jZWxs cyhwb2ludCk7Ci0gICAgICAgLy9NRVNTQUdFKCJjZWxscyBwb3VyICIgPDwgaSA8PCAiICIgPDwg bnVtQ2VsbHMpOwotLSAgICAgIHZ0a0lkVHlwZSAqY2VsbHMgPSBfZ3JpZC0+R2V0TGlua3MoKS0+ R2V0Q2VsbHMocG9pbnQpOwotKyAgICAgIHZ0a0lkVHlwZVB0ciBjZWxscyA9IF9ncmlkLT5HZXRM aW5rcygpLT5HZXRDZWxscyhwb2ludCk7Ci0gICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1D ZWxsczsgaisrKQotICAgICAgICAgewotICAgICAgICAgICBpbnQgdnRrQ2VsbElkID0gY2VsbHNb al07Ci1AQCAtNjI3LDcgKzYyNyw3IEBAIGludCBTTURTX0Rvd24yRDo6Y29tcHV0ZVZvbHVtZUlk c0Zyb21Ob2Rlc0ZhY2UoaW50KiBwdHMsIGludCBucHRzLCBpbnQqIGlkcykKLSB2b2lkIFNNRFNf RG93bjJEOjpzZXRUZW1wTm9kZXMoaW50IGNlbGxJZCwgaW50IHZ0a0lkKQotIHsKLSAgIHZ0a0lk VHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBw b2ludCBpZCdzIG9mIHRoZSBmYWNlCi0rICB2dGtJZFR5cGVQdHIgcHRzOyAvLyB3aWxsIHJlZmVy IHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh2 dGtJZCwgbnB0cywgcHRzKTsKLSAgIC8vIE1FU1NBR0UodnRrSWQgPDwgIiAiIDw8IG5wdHMgPDwg IiAgIiA8PCBfbmJOb2Rlcyk7Ci0gICAvL0FTU0VSVChucHRzID09IF9uYk5vZGVzKTsKLUBAIC03 OTUsNyArNzk1LDcgQEAgdm9pZCBTTURTX0Rvd24zRDo6Z2V0Tm9kZUlkcyhpbnQgY2VsbElkLCBz dGQ6OnNldDxpbnQ+JiBub2RlU2V0KQotIHsKLSAgIGludCB2dGtJZCA9IHRoaXMtPl92dGtDZWxs SWRzW2NlbGxJZF07Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVz OyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lk VHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9s dW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh2dGtJZCwgbnB0cywgbm9kZXMpOwotICAgZm9y IChpbnQgaSA9IDA7IGkgPCBucHRzOyBpKyspCi0gICAgIG5vZGVTZXQuaW5zZXJ0KG5vZGVzW2ld KTsKLUBAIC0xMTI2LDcgKzExMjYsNyBAQCB2b2lkIFNNRFNfRG93blRldHJhOjpnZXRPcmRlcmVk Tm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYgbwotICAgLy9N RVNTQUdFKCJjZWxsSWQgPSAiIDw8IGNlbGxJZCk7Ci0gCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7 Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9m IHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUg cG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh0aGlzLT5f dnRrQ2VsbElkc1tjZWxsSWRdLCBucHRzLCBub2Rlcyk7Ci0gCi0gICBzZXQ8aW50PiB0b2ZpbmQ7 Ci1AQCAtMTE3OCw3ICsxMTc4LDcgQEAgdm9pZCBTTURTX0Rvd25UZXRyYTo6Y29tcHV0ZUZhY2Vz V2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZhY2UKLSAgIC8vIC0t LSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAw OwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBv ZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhl IHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElk LCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0 IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1AQCAtMTIzNCw3ICsxMjM0LDcgQEAgdm9pZCBT TURTX0Rvd25RdWFkVGV0cmE6OmdldE9yZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6 OnZlY3Rvcjx2dGtJZFR5cGUKLSAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOwot IAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCBy ZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9k ZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dy aWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMp OwotIAotICAgc2V0PGludD4gdG9maW5kOwotQEAgLTEyODgsNyArMTI4OCw3IEBAIHZvaWQgU01E U19Eb3duUXVhZFRldHJhOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVs ZW1CeU5vZGVzVHlwZSYKLSAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQot IAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCBy ZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9k ZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dy aWQtPkdldENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0gY3Jl YXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1AQCAt MTM1Nyw3ICsxMzU3LDcgQEAgdm9pZCBTTURTX0Rvd25QeXJhbWlkOjpnZXRPcmRlcmVkTm9kZXNP ZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYKLSAgIC8vTUVTU0FHRSgi Y2VsbElkID0gIiA8PCBjZWxsSWQpOwotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRr SWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9s dW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlk J3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJ ZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOwotIAotICAgc2V0PGludD4gdG9maW5kOwotQEAgLTE0 MzUsNyArMTQzNSw3IEBAIHZvaWQgU01EU19Eb3duUHlyYW1pZDo6Y29tcHV0ZUZhY2VzV2l0aE5v ZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZhCi0gICAvLyAtLS0gZmluZCBw b2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0 a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZv bHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBp ZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywg bm9kZXMpOwotIAotICAgLy8gLS0tIGNyZWF0ZSBhbGwgdGhlIG9yZGVyZWQgbGlzdCBvZiBub2Rl IGlkJ3MgZm9yIGVhY2ggZmFjZQotQEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgU01EU19Eb3du UXVhZFB5cmFtaWQ6OmdldE9yZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rv cjx2dGtJZFR5Ci0gICAvL01FU1NBR0UoImNlbGxJZCA9ICIgPDwgY2VsbElkKTsKLSAKLSAgIHZ0 a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8g dGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3 aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRD ZWxsUG9pbnRzKHRoaXMtPl92dGtDZWxsSWRzW2NlbGxJZF0sIG5wdHMsIG5vZGVzKTsKLSAKLSAg IHNldDxpbnQ+IHRvZmluZDsKLUBAIC0xNTgwLDcgKzE1ODAsNyBAQCB2b2lkIFNNRFNfRG93blF1 YWRQeXJhbWlkOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5v ZGVzVHlwZQotICAgLy8gLS0tIGZpbmQgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gCi0gICB2 dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRv IHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8g d2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0 Q2VsbFBvaW50cyhjZWxsSWQsIG5wdHMsIG5vZGVzKTsKLSAKLSAgIC8vIC0tLSBjcmVhdGUgYWxs IHRoZSBvcmRlcmVkIGxpc3Qgb2Ygbm9kZSBpZCdzIGZvciBlYWNoIGZhY2UKLUBAIC0xNjYwLDcg KzE2NjAsNyBAQCB2b2lkIFNNRFNfRG93blBlbnRhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50 IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYgbwotICAgLy9NRVNTQUdFKCJjZWxsSWQg PSAiIDw8IGNlbGxJZCk7Ci0gCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUg Km5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsg IHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0 aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh0aGlzLT5fdnRrQ2VsbElkc1tjZWxs SWRdLCBucHRzLCBub2Rlcyk7Ci0gCi0gICBzZXQ8aW50PiB0b2ZpbmQ7Ci1AQCAtMTc0NCw3ICsx NzQ0LDcgQEAgdm9pZCBTTURTX0Rvd25QZW50YTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBj ZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZhY2UKLSAgIC8vIC0tLSBmaW5kIHBvaW50IGlk J3Mgb2YgdGhlIHZvbHVtZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBl ICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0r ICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2Yg dGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7 Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBm b3IgZWFjaCBmYWNlCi1AQCAtMTgxMCw3ICsxODEwLDcgQEAgdm9pZCBTTURTX0Rvd25RdWFkUGVu dGE6OmdldE9yZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5 cGUKLSAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOwotIAotICAgdnRrSWRUeXBl IG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9p bnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVm ZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2lu dHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOwotIAotICAgc2V0PGlu dD4gdG9maW5kOwotQEAgLTE4OTYsNyArMTg5Niw3IEBAIHZvaWQgU01EU19Eb3duUXVhZFBlbnRh Ojpjb21wdXRlRmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlwZSYK LSAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotIAotICAgdnRrSWRUeXBl IG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9p bnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVm ZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2lu dHMoY2VsbElkLCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3Jk ZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1AQCAtMTk4MSw3ICsxOTgxLDcg QEAgdm9pZCBTTURTX0Rvd25IZXhhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwg c3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYgb3IKLSAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBj ZWxsSWQpOwotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2Rlczsg Ly8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5 cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVt ZQotICAgX2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0 cywgbm9kZXMpOwotIAotICAgc2V0PGludD4gdG9maW5kOwotQEAgLTIwMzYsNyArMjAzNiw3IEBA IHZvaWQgU01EU19Eb3duSGV4YTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExp c3RFbGVtQnlOb2Rlc1R5cGUmIGZhY2VzCi0gICAvLyAtLS0gZmluZCBwb2ludCBpZCdzIG9mIHRo ZSB2b2x1bWUKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7 IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRU eXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1 bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywgbm9kZXMpOwotIAotICAg Ly8gLS0tIGNyZWF0ZSBhbGwgdGhlIG9yZGVyZWQgbGlzdCBvZiBub2RlIGlkJ3MgZm9yIGVhY2gg ZmFjZQotQEAgLTIxMTIsNyArMjExMiw3IEBAIHZvaWQgU01EU19Eb3duUXVhZEhleGE6OmdldE9y ZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5cGU+Ci0gICAv L01FU1NBR0UoImNlbGxJZCA9ICIgPDwgY2VsbElkKTsKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0g MDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mg b2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRo ZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKHRoaXMt Pl92dGtDZWxsSWRzW2NlbGxJZF0sIG5wdHMsIG5vZGVzKTsKLSAKLSAgIHNldDxpbnQ+IHRvZmlu ZDsKLUBAIC0yMTY3LDcgKzIxNjcsNyBAQCB2b2lkIFNNRFNfRG93blF1YWRIZXhhOjpjb21wdXRl RmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlwZSYgZgotICAgLy8g LS0tIGZpbmQgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gCi0gICB2dGtJZFR5cGUgbnB0cyA9 IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdz IG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0 aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyhjZWxs SWQsIG5wdHMsIG5vZGVzKTsKLSAKLSAgIC8vIC0tLSBjcmVhdGUgYWxsIHRoZSBvcmRlcmVkIGxp c3Qgb2Ygbm9kZSBpZCdzIGZvciBlYWNoIGZhY2UKLWRpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3Nh bG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVzaC5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21l c2gvc3JjL1NNRFMvU01EU19NZXNoLmNwcAotaW5kZXggNjFjOGU3NTFkOTQuLjFlYWMyOTA3ZDNk IDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVz aC5jcHAKLSsrKyBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2gu Y3BwCi1AQCAtNDc2OCw3ICs0NzY4LDExIEBAIHZvaWQgU01EU19NZXNoOjpkdW1wR3JpZChzdHJp bmcgZmljZHVtcCkKLSAgICAgICAgIGZpY2NvbiA8PCBlbmRsOwotICAgfQotICAgZmljY29uIDw8 ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjb25uZWN0aXZpdHkgIiA8PCAgbmJQ b2ludHMgPDwgZW5kbDsKLS0gICAgICAgIHZ0a0NlbGxMaW5rcyAqbGlua3MgPSBteUdyaWQtPkdl dENlbGxMaW5rcygpOwotKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKyAgdnRrQ2VsbExpbmtz ICpsaW5rcyA9IHN0YXRpY19jYXN0PHZ0a0NlbGxMaW5rcyo+KG15R3JpZC0+R2V0Q2VsbExpbmtz KCkpOwotKyNlbHNlCi0rICB2dGtDZWxsTGlua3MgKmxpbmtzID0gbXlHcmlkLT5HZXRDZWxsTGlu a3MoKTsKLSsjZW5kaWYKLSAgIGZvciAoaW50IGk9MDsgaTxuYlBvaW50czsgaSsrKQotICAgewot ICAgICAgICAgaW50IG5jZWxscyA9IGxpbmtzLT5HZXROY2VsbHMoaSk7Ci1kaWZmIC0tZ2l0IHNy Yy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2gwREVsZW1lbnQuY3BwIGIv c3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVzaDBERWxlbWVudC5jcHAK LWluZGV4IDk1NDM4ZWFiMDY0Li4wZGYzMmUzYjk3YyAxMDA2NDQKLS0tLSBhL3NyYy8zcmRQYXJ0 eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2gwREVsZW1lbnQuY3BwCi0rKysgYi9zcmMv M3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoMERFbGVtZW50LmNwcAotQEAg LTE0Niw2ICsxNDYsMTcgQEAgYm9vbCBTTURTX01lc2gwREVsZW1lbnQ6OkNoYW5nZU5vZGVzKGNv bnN0IFNNRFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0IGludCBuYk4KLSAgIGlmICggbmJOb2Rl cyA9PSAxICkKLSAgIHsKLSAgICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVz aDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotKyNpZmRlZiBWVEtfQ0VMTF9BUlJB WV9WMgotKyAgICB2dGtOZXc8dnRrSWRMaXN0PiBjZWxsUG9pbnRzOwotKyAgICBncmlkLT5HZXRD ZWxsUG9pbnRzKG15VnRrSUQsIGNlbGxQb2ludHMuR2V0UG9pbnRlcigpKTsKLSsgICAgaWYgKG5i Tm9kZXMgIT0gY2VsbFBvaW50cy0+R2V0TnVtYmVyT2ZJZHMoKSkKLSsgICAgewotKyAgICAgIE1F U1NBR0UoIkNoYW5nZU5vZGVzIHByb2JsZW06IG5vdCB0aGUgc2FtZSBudW1iZXIgb2Ygbm9kZXMg IiA8PCBjZWxsUG9pbnRzLT5HZXROdW1iZXJPZklkcygpIDw8ICIgLT4gIiA8PCBuYk5vZGVzKTsK LSsgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgIH0KLSsgICAgbXlOb2RlID0gbm9kZXNbMF07Ci0r ICAgIGNlbGxQb2ludHMtPlNldElkKDAsIG15Tm9kZS0+Z2V0VnRrSWQoKSk7Ci0rI2Vsc2UKLSAg ICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotICAgICB2dGtJZFR5cGUqIHB0cyA9IDA7Ci0gICAgIGdy aWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsKLUBAIC0xNTYsNiArMTY3LDcg QEAgYm9vbCBTTURTX01lc2gwREVsZW1lbnQ6OkNoYW5nZU5vZGVzKGNvbnN0IFNNRFNfTWVzaE5v ZGUqIG5vZGVzW10sIGNvbnN0IGludCBuYk4KLSAgICAgfQotICAgICBteU5vZGUgPSBub2Rlc1sw XTsKLSAgICAgcHRzWzBdID0gbXlOb2RlLT5nZXRWdGtJZCgpOwotKyNlbmRpZgotIAotICAgICBT TURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPnNldE15TW9kaWZpZWQoKTsKLSAgICAgcmV0 dXJuIHRydWU7Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9T TURTX01lc2hOb2RlLmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURT X01lc2hOb2RlLmNwcAotaW5kZXggZjY0N2E1ZjFiOGYuLjViOTAzYzhmYjU1IDEwMDY0NAotLS0t IGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVzaE5vZGUuY3BwCi0r KysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoTm9kZS5jcHAK LUBAIC0xOTEsNyArMTkxLDcgQEAgY2xhc3MgU01EU19NZXNoTm9kZV9NeUludkl0ZXJhdG9yOiBw dWJsaWMgU01EU19FbGVtSXRlcmF0b3IKLSBTTURTX0VsZW1JdGVyYXRvclB0ciBTTURTX01lc2hO b2RlOjoKLSBHZXRJbnZlcnNlRWxlbWVudEl0ZXJhdG9yKFNNRFNBYnNfRWxlbWVudFR5cGUgdHlw ZSkgY29uc3QKLSB7Ci0tICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IFNNRFNfTWVzaDo6X21lc2hM aXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRDZWxsTGlua3MoKS0+R2V0TGluayhteVZ0a0lE KTsKLSsgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gc3RhdGljX2Nhc3Q8dnRrQ2VsbExpbmtzKj4o U01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxMaW5rcygp KS0+R2V0TGluayhteVZ0a0lEKTsKLSAgIC8vTUVTU0FHRSgibXlJRCAiIDw8IG15SUQgPDwgIiBu Y2VsbHMgIiA8PCBsLm5jZWxscyk7Ci0gICByZXR1cm4gU01EU19FbGVtSXRlcmF0b3JQdHIobmV3 IFNNRFNfTWVzaE5vZGVfTXlJbnZJdGVyYXRvcihTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJ ZF0sIGwuY2VsbHMsIGwubmNlbGxzLCB0eXBlKSk7Ci0gfQotQEAgLTI1MSw3ICsyNTEsNyBAQCBl bGVtZW50c0l0ZXJhdG9yKFNNRFNBYnNfRWxlbWVudFR5cGUgdHlwZSkgY29uc3QKLSAgICAgcmV0 dXJuIFNNRFNfTWVzaEVsZW1lbnQ6OmVsZW1lbnRzSXRlcmF0b3IoU01EU0Fic19Ob2RlKTsKLSAg IGVsc2UKLSAgIHsKLS0gICAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBTTURTX01lc2g6Ol9tZXNo TGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0Q2VsbExpbmtzKCktPkdldExpbmsobXlWdGtJ RCk7Ci0rICAgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gc3RhdGljX2Nhc3Q8dnRrQ2VsbExpbmtz Kj4oU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxMaW5r cygpKS0+R2V0TGluayhteVZ0a0lEKTsKLSAgICAgcmV0dXJuIFNNRFNfRWxlbUl0ZXJhdG9yUHRy KG5ldyBTTURTX01lc2hOb2RlX015SXRlcmF0b3IoU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNo SWRdLCBsLmNlbGxzLCBsLm5jZWxscywgdHlwZSkpOwotICAgfQotIH0KLUBAIC0zNTAsNyArMzUw LDcgQEAgdm9pZCBTTURTX01lc2hOb2RlOjpBZGRJbnZlcnNlRWxlbWVudChjb25zdCBTTURTX01l c2hFbGVtZW50KiBNRSkKLSAgIGNvbnN0IFNNRFNfTWVzaENlbGwgKmNlbGwgPSBkeW5hbWljX2Nh c3Q8Y29uc3QgU01EU19NZXNoQ2VsbCo+IChNRSk7Ci0gICBhc3NlcnQoY2VsbCk7Ci0gICBTTURT X1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0t PmdldEdyaWQoKTsKLS0gIHZ0a0NlbGxMaW5rcyAqTGlua3MgPSBncmlkLT5HZXRDZWxsTGlua3Mo KTsKLSsgIHZ0a0NlbGxMaW5rcyAqTGlua3MgPSBzdGF0aWNfY2FzdDx2dGtDZWxsTGlua3MqPihn cmlkLT5HZXRDZWxsTGlua3MoKSk7Ci0gICBMaW5rcy0+UmVzaXplQ2VsbExpc3QobXlWdGtJRCwg MSk7Ci0gICBMaW5rcy0+QWRkQ2VsbFJlZmVyZW5jZShjZWxsLT5nZXRWdGtJZCgpLCBteVZ0a0lE KTsKLSB9Ci1AQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgU01EU19NZXNoTm9kZTo6Q2xlYXJJbnZl cnNlRWxlbWVudHMoKQotIAotIGJvb2wgU01EU19NZXNoTm9kZTo6ZW1wdHlJbnZlcnNlRWxlbWVu dHMoKQotIHsKLS0gIHZ0a0NlbGxMaW5rczo6TGluayBsID0gU01EU19NZXNoOjpfbWVzaExpc3Rb bXlNZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxMaW5rcygpLT5HZXRMaW5rKG15VnRrSUQpOwot KyAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBzdGF0aWNfY2FzdDx2dGtDZWxsTGlua3MqPihTTURT X01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0Q2VsbExpbmtzKCkpLT5H ZXRMaW5rKG15VnRrSUQpOwotICAgcmV0dXJuIChsLm5jZWxscyA9PSAwKTsKLSB9Ci0gCi1AQCAt Mzc4LDcgKzM3OCw3IEBAIGJvb2wgU01EU19NZXNoTm9kZTo6ZW1wdHlJbnZlcnNlRWxlbWVudHMo KQotIAotIGludCBTTURTX01lc2hOb2RlOjpOYkludmVyc2VFbGVtZW50cyhTTURTQWJzX0VsZW1l bnRUeXBlIHR5cGUpIGNvbnN0Ci0gewotLSAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBTTURTX01l c2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0Q2VsbExpbmtzKCktPkdldExp bmsobXlWdGtJRCk7Ci0rICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IHN0YXRpY19jYXN0PHZ0a0Nl bGxMaW5rcyo+KFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRD ZWxsTGlua3MoKSktPkdldExpbmsobXlWdGtJRCk7Ci0gCi0gICBpZiAoIHR5cGUgPT0gU01EU0Fi c19BbGwgKQotICAgICByZXR1cm4gbC5uY2VsbHM7Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9z YWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Vuc3RydWN0dXJlZEdyaWQuY3BwIGIvc3JjLzNyZFBh cnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVW5zdHJ1Y3R1cmVkR3JpZC5jcHAKLWluZGV4 IGZiZDkwM2IxZTc0Li5mZjJiODFlOTY5NCAxMDA2NDQKLS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxv bWVzbWVzaC9zcmMvU01EUy9TTURTX1Vuc3RydWN0dXJlZEdyaWQuY3BwCi0rKysgYi9zcmMvM3Jk UGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19VbnN0cnVjdHVyZWRHcmlkLmNwcAotQEAg LTEzOSw4ICsxMzksOCBAQCBpbnQgU01EU19VbnN0cnVjdHVyZWRHcmlkOjpJbnNlcnROZXh0TGlu a2VkQ2VsbChpbnQgdHlwZSwgaW50IG5wdHMsIHZ0a0lkVHlwZSAqcAotICAgZm9yICg7IGl0ICE9 IHNldE9mTm9kZXMuZW5kKCk7ICsraXQpCi0gICAgIHsKLSAgICAgICAvL01FU1NBR0UoInJldmVy c2UgbGluayBmb3Igbm9kZSAiIDw8ICppdCA8PCAiIGNlbGwgIiA8PCBjZWxsaWQpOwotLSAgICAg IHRoaXMtPkxpbmtzLT5SZXNpemVDZWxsTGlzdCgqaXQsIDEpOwotLSAgICAgIHRoaXMtPkxpbmtz LT5BZGRDZWxsUmVmZXJlbmNlKGNlbGxpZCwgKml0KTsKLSsgICAgICB0aGlzLT5HZXRMaW5rcygp LT5SZXNpemVDZWxsTGlzdCgqaXQsIDEpOwotKyAgICAgIHRoaXMtPkdldExpbmtzKCktPkFkZENl bGxSZWZlcmVuY2UoY2VsbGlkLCAqaXQpOwotICAgICB9Ci0gCi0gICByZXR1cm4gY2VsbGlkOwot QEAgLTMzMiw5ICszMzIsMTMgQEAgdm9pZCBTTURTX1Vuc3RydWN0dXJlZEdyaWQ6OmNvcHlCbG9j KHZ0a1Vuc2lnbmVkQ2hhckFycmF5ICpuZXdUeXBlcywKLSAgICAgewotICAgICAgIG5ld1R5cGVz LT5TZXRWYWx1ZShhbHJlYWR5Q29waWVkLCB0aGlzLT5UeXBlcy0+R2V0VmFsdWUoaikpOwotICAg ICAgIGlkQ2VsbHNPbGRUb05ld1tqXSA9IGFscmVhZHlDb3BpZWQ7IC8vIG9sZCB2dGtJZCAtLT4g bmV3IHZ0a0lkCi0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCi0rICAgICAgdnRrSWRUeXBlIG9s ZExvYyA9IHRoaXMtPkdldENlbGxMb2NhdGlvbnNBcnJheSgpLT5HZXRWYWx1ZShqKTsKLSsjZWxz ZQotICAgICAgIHZ0a0lkVHlwZSBvbGRMb2MgPSB0aGlzLT5Mb2NhdGlvbnMtPkdldFZhbHVlKGop OwotKyNlbmRpZgotICAgICAgIHZ0a0lkVHlwZSBuYnB0czsKLS0gICAgICB2dGtJZFR5cGUgKm9s ZFB0c0NlbGwgPSAwOwotKyAgICAgIHZ0a0lkVHlwZVB0ciBvbGRQdHNDZWxsID0gMDsKLSAgICAg ICB0aGlzLT5Db25uZWN0aXZpdHktPkdldENlbGwob2xkTG9jLCBuYnB0cywgb2xkUHRzQ2VsbCk7 Ci0gICAgICAgYXNzZXJ0KG5icHRzIDwgTkJNQVhOT0RFU0lOQ0VMTCk7Ci0gICAgICAgLy9NRVNT QUdFKGogPDwgIiAiIDw8IGFscmVhZHlDb3BpZWQgPDwgIiAiIDw8IChpbnQpdGhpcy0+VHlwZXMt PkdldFZhbHVlKGopIDw8ICIgIiA8PCBvbGRMb2MgPDwgIiAiIDw8IG5icHRzICk7Ci1AQCAtOTUy LDYgKzk1NiwyMSBAQCB2b2lkIFNNRFNfVW5zdHJ1Y3R1cmVkR3JpZDo6R2V0Tm9kZUlkcyhzdGQ6 OnNldDxpbnQ+JiBub2RlU2V0LCBpbnQgZG93bklkLCB1bnNpZwotICAqLwotIHZvaWQgU01EU19V bnN0cnVjdHVyZWRHcmlkOjpNb2RpZnlDZWxsTm9kZXMoaW50IHZ0a1ZvbElkLCBzdGQ6Om1hcDxp bnQsIGludD4gbG9jYWxDbG9uZWROb2RlSWRzKQotIHsKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlf VjIKLSsgIHZ0a05ldzx2dGtJZExpc3Q+IGNlbGxQb2ludHM7Ci0rICB0aGlzLT5HZXRDZWxsUG9p bnRzKHZ0a1ZvbElkLCBjZWxsUG9pbnRzLkdldFBvaW50ZXIoKSk7Ci0rICBmb3IgKHZ0a0lkVHlw ZSBpID0gMDsgaSA8IGNlbGxQb2ludHMtPkdldE51bWJlck9mSWRzKCk7IGkrKykKLSsgICAgewot KyAgICAgIGlmIChsb2NhbENsb25lZE5vZGVJZHMuY291bnQoY2VsbFBvaW50cy0+R2V0SWQoaSkp KQotKyAgICAgICAgewotKyAgICAgICAgICB2dGtJZFR5cGUgb2xkcHQgPSBjZWxsUG9pbnRzLT5H ZXRJZChpKTsKLSsgICAgICAgICAgY2VsbFBvaW50cy0+U2V0SWQoaSwgbG9jYWxDbG9uZWROb2Rl SWRzW29sZHB0XSk7Ci0rICAgICAgICAgIC8vTUVTU0FHRShvbGRwdCA8PCAiIC0tPiAiIDw8IHB0 c1tpXSk7Ci0rICAgICAgICAgIC8vdGhpcy0+UmVtb3ZlUmVmZXJlbmNlVG9DZWxsKG9sZHB0LCB2 dGtWb2xJZCk7Ci0rICAgICAgICAgIC8vdGhpcy0+QWRkUmVmZXJlbmNlVG9DZWxsKHB0c1tpXSwg dnRrVm9sSWQpOwotKyAgICAgICAgfQotKyAgICB9Ci0rI2Vsc2UKLSAgIHZ0a0lkVHlwZSBucHRz ID0gMDsKLSAgIHZ0a0lkVHlwZSAqcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdz IG9mIHRoZSBmYWNlCi0gICB0aGlzLT5HZXRDZWxsUG9pbnRzKHZ0a1ZvbElkLCBucHRzLCBwdHMp OwotQEAgLTk2Niw2ICs5ODUsNyBAQCB2b2lkIFNNRFNfVW5zdHJ1Y3R1cmVkR3JpZDo6TW9kaWZ5 Q2VsbE5vZGVzKGludCB2dGtWb2xJZCwgc3RkOjptYXA8aW50LCBpbnQ+IGxvYwotICAgICAgICAg ICAvL3RoaXMtPkFkZFJlZmVyZW5jZVRvQ2VsbChwdHNbaV0sIHZ0a1ZvbElkKTsKLSAgICAgICAg IH0KLSAgICAgfQotKyNlbmRpZgotIH0KLSAKLSAvKiEgcmVvcmRlciB0aGUgbm9kZXMgb2YgYSBm YWNlCi1AQCAtOTk1LDExICsxMDE1LDIwIEBAIHZvaWQgU01EU19VbnN0cnVjdHVyZWRHcmlkOjpC dWlsZExpbmtzKCkKLSAgICAgdGhpcy0+TGlua3MtPlVuUmVnaXN0ZXIodGhpcyk7Ci0gICAgIH0K LSAKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIHRoaXMtPkxpbmtzID0gU01EU19DZWxs TGlua3M6Ok5ldygpOwotKyAgR2V0TGlua3MoKS0+QWxsb2NhdGUodGhpcy0+R2V0TnVtYmVyT2ZQ b2ludHMoKSk7Ci0rICBHZXRMaW5rcygpLT5SZWdpc3Rlcih0aGlzKTsKLSsvL0ZJWE1FOiB2dGs5 Ci0rICBHZXRMaW5rcygpLT5CdWlsZExpbmtzKHRoaXMpOwotKyAgR2V0TGlua3MoKS0+RGVsZXRl KCk7Ci0rI2Vsc2UKLSAgIHRoaXMtPkxpbmtzID0gU01EU19DZWxsTGlua3M6Ok5ldygpOwotICAg dGhpcy0+TGlua3MtPkFsbG9jYXRlKHRoaXMtPkdldE51bWJlck9mUG9pbnRzKCkpOwotICAgdGhp cy0+TGlua3MtPlJlZ2lzdGVyKHRoaXMpOwotICAgdGhpcy0+TGlua3MtPkJ1aWxkTGlua3ModGhp cywgdGhpcy0+Q29ubmVjdGl2aXR5KTsKLSAgIHRoaXMtPkxpbmtzLT5EZWxldGUoKTsKLSsjZW5k aWYKLSB9Ci0gCi0gLyohIENyZWF0ZSBhIHZvbHVtZSAocHJpc20gb3IgaGV4YWhlZHJvbikgYnkg ZHVwbGljYXRpb24gb2YgYSBmYWNlLgotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21l c2gvc3JjL1NNRFMvU01EU19WdGtDZWxsSXRlcmF0b3IuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9t ZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrQ2VsbEl0ZXJhdG9yLmNwcAotaW5kZXggZGViMDU5ODVm MDAuLjYzYjZlYWJiNzA0IDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3Ny Yy9TTURTL1NNRFNfVnRrQ2VsbEl0ZXJhdG9yLmNwcAotKysrIGIvc3JjLzNyZFBhcnR5L3NhbG9t ZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrQ2VsbEl0ZXJhdG9yLmNwcAotQEAgLTMzLDcgKzMzLDgg QEAgU01EU19WdGtDZWxsSXRlcmF0b3I6OlNNRFNfVnRrQ2VsbEl0ZXJhdG9yKFNNRFNfTWVzaCog bWVzaCwgaW50IHZ0a0NlbGxJZCwgU01EU0EKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLS0gICAgdnRr SWRUeXBlIG5wdHMsICpwdHM7Ci0rICAgIHZ0a0lkVHlwZSBucHRzOwotKyAgICB2dGtJZFR5cGVQ dHIgcHRzOwotICAgICBncmlkLT5HZXRDZWxsUG9pbnRzKCBfY2VsbElkLCBucHRzLCBwdHMgKTsK LSAgICAgX3Z0a0lkTGlzdC0+U2V0TnVtYmVyT2ZJZHMoIF9uYk5vZGVzID0gbnB0cyApOwotICAg ICBmb3IgKGludCBpID0gMDsgaSA8IF9uYk5vZGVzOyBpKyspCi1AQCAtNjcsNyArNjgsNyBAQCBT TURTX1Z0a0NlbGxJdGVyYXRvclRvVU5WOjpTTURTX1Z0a0NlbGxJdGVyYXRvclRvVU5WKFNNRFNf TWVzaCogbWVzaCwgaW50IHZ0a0NlbAotICAgLy9NRVNTQUdFKCJTTURTX1Z0a0NlbGxJbnRlcmxh Y2VkSXRlcmF0b3IgKFVOVikiIDw8IF90eXBlKTsKLSAKLSAgIF92dGtJZExpc3QgPSB2dGtJZExp c3Q6Ok5ldygpOwotLSAgdnRrSWRUeXBlKiBwdHM7Ci0rICB2dGtJZFR5cGVQdHIgcHRzOwotICAg dnRrSWRUeXBlIG5wdHM7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gX21lc2gtPmdl dEdyaWQoKTsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMoKHZ0a0lkVHlwZSlfY2VsbElkLCBucHRz LCBwdHMpOwotQEAgLTE4Miw3ICsxODMsNyBAQCBTTURTX1Z0a0NlbGxJdGVyYXRvclBvbHlIOjpT TURTX1Z0a0NlbGxJdGVyYXRvclBvbHlIKFNNRFNfTWVzaCogbWVzaCwgaW50IHZ0a0NlbAotICAg ewotICAgICAvL01FU1NBR0UoIlNNRFNfVnRrQ2VsbEl0ZXJhdG9yIFBvbHloZWRyYSIpOwotICAg ICB2dGtJZFR5cGUgbkZhY2VzID0gMDsKLS0gICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAg IHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7Ci0gICAgIGdyaWQtPkdldEZhY2VTdHJlYW0oX2NlbGxJ ZCwgbkZhY2VzLCBwdElkcyk7Ci0gICAgIGludCBpZCA9IDA7Ci0gICAgIF9uYk5vZGVzSW5GYWNl cyA9IDA7Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURT X1Z0a0VkZ2UuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRr RWRnZS5jcHAKLWluZGV4IDk3ODZhYmY5YWFlLi42ZDc3MmEzY2Q0YSAxMDA2NDQKLS0tLSBhL3Ny Yy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0VkZ2UuY3BwCi0rKysgYi9z cmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtFZGdlLmNwcAotQEAgLTY3 LDYgKzY3LDE5IEBAIGJvb2wgU01EU19WdGtFZGdlOjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01l c2hOb2RlICogbm9kZTEsIGNvbnN0IFNNRFNfTWVzaE5vZGUKLSBib29sIFNNRFNfVnRrRWRnZTo6 Q2hhbmdlTm9kZXMoY29uc3QgU01EU19NZXNoTm9kZSogbm9kZXNbXSwgY29uc3QgaW50IG5iTm9k ZXMpCi0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hM aXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKyAg dnRrTmV3PHZ0a0lkTGlzdD4gY2VsbFBvaW50czsKLSsgIGdyaWQtPkdldENlbGxQb2ludHMobXlW dGtJRCwgY2VsbFBvaW50cy5HZXRQb2ludGVyKCkpOwotKyAgaWYgKG5iTm9kZXMgIT0gY2VsbFBv aW50cy0+R2V0TnVtYmVyT2ZJZHMoKSkKLSsgICAgewotKyAgICAgIE1FU1NBR0UoIkNoYW5nZU5v ZGVzIHByb2JsZW06IG5vdCB0aGUgc2FtZSBudW1iZXIgb2Ygbm9kZXMgIiA8PCBjZWxsUG9pbnRz LT5HZXROdW1iZXJPZklkcygpIDw8ICIgLT4gIiA8PCBuYk5vZGVzKTsKLSsgICAgICByZXR1cm4g ZmFsc2U7Ci0rICAgIH0KLSsgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJOb2RlczsgaSsrKQotKyAg ICB7Ci0rICAgICAgY2VsbFBvaW50cy0+U2V0SWQoaSwgbm9kZXNbaV0tPmdldFZ0a0lkKCkpOwot KyAgICB9Ci0rI2Vsc2UKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLSAgIHZ0a0lkVHlwZSogcHRz ID0gMDsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsKLUBAIC03 OSw2ICs5Miw3IEBAIGJvb2wgU01EU19WdGtFZGdlOjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01l c2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOb2RlcykKLSAgICAgewotICAgICAgIHB0c1tp XSA9IG5vZGVzW2ldLT5nZXRWdGtJZCgpOwotICAgICB9Ci0rI2VuZGlmCi0gICBTTURTX01lc2g6 Ol9tZXNoTGlzdFtteU1lc2hJZF0tPnNldE15TW9kaWZpZWQoKTsKLSAgIHJldHVybiB0cnVlOwot IH0KLUBAIC04Nyw3ICsxMDEsNyBAQCBib29sIFNNRFNfVnRrRWRnZTo6SXNNZWRpdW1Ob2RlKGNv bnN0IFNNRFNfTWVzaE5vZGUqIG5vZGUpIGNvbnN0Ci0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3Jp ZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotICAg dnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlKiBwdHMgPSAwOwotKyAgdnRrSWRUeXBl UHRyIHB0cyA9IDA7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7 Ci0gICAvL01FU1NBR0UoIklzTWVkaXVtTm9kZSAiIDw8IG5wdHMgIDw8ICIgIiA8PCAobm9kZS0+ Z2V0VnRrSWQoKSA9PSBwdHNbbnB0cy0xXSkpOwotICAgcmV0dXJuICgobnB0cyA9PSAzKSAmJiAo bm9kZS0+Z2V0VnRrSWQoKSA9PSBwdHNbMl0pKTsKLUBAIC0xMzcsNyArMTUxLDggQEAgY29uc3Qg U01EU19NZXNoTm9kZSoKLSBTTURTX1Z0a0VkZ2U6OkdldE5vZGUoY29uc3QgaW50IGluZCkgY29u c3QKLSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExp c3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0tICB2dGtJZFR5cGUgbnB0cywgKnB0czsKLSsgIHZ0 a0lkVHlwZSBucHRzOwotKyAgdnRrSWRUeXBlUHRyIHB0czsKLSAgIGdyaWQtPkdldENlbGxQb2lu dHMoIHRoaXMtPm15VnRrSUQsIG5wdHMsIHB0cyApOwotICAgcmV0dXJuIFNNRFNfTWVzaDo6X21l c2hMaXN0W215TWVzaElkXS0+RmluZE5vZGVWdGsoIHB0c1sgaW5kIF0pOwotIH0KLWRpZmYgLS1n aXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrRmFjZS5jcHAgYi9z cmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtGYWNlLmNwcAotaW5kZXgg MTM4OWUwZDM1ODUuLmNiOTgxYmZiMThlIDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9t ZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrRmFjZS5jcHAKLSsrKyBiL3NyYy8zcmRQYXJ0eS9zYWxv bWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0ZhY2UuY3BwCi1AQCAtMTAxLDYgKzEwMSwxOSBAQCB2 b2lkIFNNRFNfVnRrRmFjZTo6aW5pdFF1YWRQb2x5KGNvbnN0IHN0ZDo6dmVjdG9yPHZ0a0lkVHlw ZT4mIG5vZGVJZHMsIFNNRFNfTWVzaAotIGJvb2wgU01EU19WdGtGYWNlOjpDaGFuZ2VOb2Rlcyhj b25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOb2RlcykKLSB7Ci0gICB2 dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRd LT5nZXRHcmlkKCk7Ci0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCi0rICB2dGtOZXc8dnRrSWRM aXN0PiBjZWxsUG9pbnRzOwotKyAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBjZWxsUG9p bnRzLkdldFBvaW50ZXIoKSk7Ci0rICBpZiAobmJOb2RlcyAhPSBjZWxsUG9pbnRzLT5HZXROdW1i ZXJPZklkcygpKQotKyAgICB7Ci0rICAgICAgTUVTU0FHRSgiQ2hhbmdlTm9kZXMgcHJvYmxlbTog bm90IHRoZSBzYW1lIG51bWJlciBvZiBub2RlcyAiIDw8IGNlbGxQb2ludHMtPkdldE51bWJlck9m SWRzKCkgPDwgIiAtPiAiIDw8IG5iTm9kZXMpOwotKyAgICAgIHJldHVybiBmYWxzZTsKLSsgICAg fQotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYk5vZGVzOyBpKyspCi0rICAgIHsKLSsgICAgICBj ZWxsUG9pbnRzLT5TZXRJZChpLCBub2Rlc1tpXS0+Z2V0VnRrSWQoKSk7Ci0rICAgIH0KLSsjZWxz ZQotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotICAgdnRrSWRUeXBlKiBwdHMgPSAwOwotICAgZ3Jp ZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMpOwotQEAgLTExMyw2ICsxMjYsNyBA QCBib29sIFNNRFNfVnRrRmFjZTo6Q2hhbmdlTm9kZXMoY29uc3QgU01EU19NZXNoTm9kZSogbm9k ZXNbXSwgY29uc3QgaW50IG5iTm9kZXMpCi0gICAgIHsKLSAgICAgICBwdHNbaV0gPSBub2Rlc1tp XS0+Z2V0VnRrSWQoKTsKLSAgICAgfQotKyNlbmRpZgotICAgU01EU19NZXNoOjpfbWVzaExpc3Rb bXlNZXNoSWRdLT5zZXRNeU1vZGlmaWVkKCk7Ci0gICByZXR1cm4gdHJ1ZTsKLSB9Ci1AQCAtMTcz LDcgKzE4Nyw4IEBAIGNvbnN0IFNNRFNfTWVzaE5vZGUqCi0gU01EU19WdGtGYWNlOjpHZXROb2Rl KGNvbnN0IGludCBpbmQpIGNvbnN0Ci0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9 IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotLSAgdnRrSWRUeXBl IG5wdHMsICpwdHM7Ci0rICB2dGtJZFR5cGUgbnB0czsKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7Ci0g ICBncmlkLT5HZXRDZWxsUG9pbnRzKCB0aGlzLT5teVZ0a0lELCBucHRzLCBwdHMgKTsKLSAgIHJl dHVybiBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPkZpbmROb2RlVnRrKCBwdHNbIGlu ZCBdKTsKLSB9Ci1AQCAtMTg2LDcgKzIwMSw4IEBAIFNNRFNfVnRrRmFjZTo6R2V0Tm9kZShjb25z dCBpbnQgaW5kKSBjb25zdAotIGludCBTTURTX1Z0a0ZhY2U6OkdldE5vZGVJbmRleCggY29uc3Qg U01EU19NZXNoTm9kZSogbm9kZSApIGNvbnN0Ci0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCog Z3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotLSAgdnRr SWRUeXBlIG5wdHMsICpwdHM7Ci0rICB2dGtJZFR5cGUgbnB0czsKLSsgIHZ0a0lkVHlwZVB0ciBw dHM7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKCB0aGlzLT5teVZ0a0lELCBucHRzLCBwdHMgKTsK LSAgIGZvciAoIHZ0a0lkVHlwZSBpID0gMDsgaSA8IG5wdHM7ICsraSApCi0gICAgIGlmICggcHRz W2ldID09IG5vZGUtPmdldFZ0a0lkKCkgKQotQEAgLTI1MSw3ICsyNjcsNyBAQCBib29sIFNNRFNf VnRrRmFjZTo6SXNNZWRpdW1Ob2RlKGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGUpIGNvbnN0Ci0g ICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lk VHlwZSogcHRzID0gMDsKLSsgIHZ0a0lkVHlwZVB0ciBwdHMgPSAwOwotICAgZ3JpZC0+R2V0Q2Vs bFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMpOwotICAgdnRrSWRUeXBlIG5vZGVJZCA9IG5vZGUt PmdldFZ0a0lkKCk7Ci0gICBmb3IgKGludCByYW5rID0gMDsgcmFuayA8IG5wdHM7IHJhbmsrKykK LUBAIC0zNTYsMTEgKzM3MiwxOCBAQCBTTURTX05vZGVJdGVyYXRvclB0ciBTTURTX1Z0a0ZhY2U6 OmludGVybGFjZWROb2Rlc0l0ZXJhdG9yKCkgY29uc3QKLSB2b2lkIFNNRFNfVnRrRmFjZTo6Q2hh bmdlQXBleChTTURTX01lc2hOb2RlKiBub2RlKQotIHsKLSAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQq IGdyaWQgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKLSsjaWZk ZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIHZ0a05ldzx2dGtJZExpc3Q+IGNlbGxQb2ludHM7Ci0r ICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIGNlbGxQb2ludHMuR2V0UG9pbnRlcigpKTsK LSsgIGdyaWQtPlJlbW92ZVJlZmVyZW5jZVRvQ2VsbChjZWxsUG9pbnRzLT5HZXRJZCgwKSwgbXlW dGtJRCk7Ci0rICBjZWxsUG9pbnRzLT5TZXRJZCgwLCBub2RlLT5nZXRWdGtJZCgpKTsKLSsjZWxz ZQotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotICAgdnRrSWRUeXBlKiBwdHMgPSAwOwotICAgZ3Jp ZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMpOwotICAgZ3JpZC0+UmVtb3ZlUmVm ZXJlbmNlVG9DZWxsKHB0c1swXSwgbXlWdGtJRCk7Ci0gICBwdHNbMF0gPSBub2RlLT5nZXRWdGtJ ZCgpOwotKyNlbmRpZgotICAgbm9kZS0+QWRkSW52ZXJzZUVsZW1lbnQodGhpcyksCi0gICBTTURT X01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPnNldE15TW9kaWZpZWQoKTsKLSB9Ci1kaWZmIC0t Z2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a1ZvbHVtZS5jcHAg Yi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtWb2x1bWUuY3BwCi1p bmRleCAwMTVlZGY3NWZkMi4uMTllYmQwNzQ2YzggMTAwNjQ0Ci0tLS0gYS9zcmMvM3JkUGFydHkv c2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtWb2x1bWUuY3BwCi0rKysgYi9zcmMvM3JkUGFy dHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtWb2x1bWUuY3BwCi1AQCAtMTMzLDYgKzEz MywxOSBAQCB2b2lkIFNNRFNfVnRrVm9sdW1lOjppbml0UG9seShjb25zdCBzdGQ6OnZlY3Rvcjx2 dGtJZFR5cGU+JiBub2RlSWRzLAotIGJvb2wgU01EU19WdGtWb2x1bWU6OkNoYW5nZU5vZGVzKGNv bnN0IFNNRFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0IGludCBuYk5vZGVzKQotIHsKLSAgIHZ0 a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0t PmdldEdyaWQoKTsKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIHZ0a05ldzx2dGtJZExp c3Q+IGNlbGxQb2ludHM7Ci0rICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIGNlbGxQb2lu dHMuR2V0UG9pbnRlcigpKTsKLSsgIGlmIChuYk5vZGVzICE9IGNlbGxQb2ludHMtPkdldE51bWJl ck9mSWRzKCkpCi0rICAgIHsKLSsgICAgICBNRVNTQUdFKCJDaGFuZ2VOb2RlcyBwcm9ibGVtOiBu b3QgdGhlIHNhbWUgbnVtYmVyIG9mIG5vZGVzICIgPDwgY2VsbFBvaW50cy0+R2V0TnVtYmVyT2ZJ ZHMoKSA8PCAiIC0+ICIgPDwgbmJOb2Rlcyk7Ci0rICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICB9 Ci0rICBmb3IgKGludCBpID0gMDsgaSA8IG5iTm9kZXM7IGkrKykKLSsgICAgewotKyAgICAgIGNl bGxQb2ludHMtPlNldElkKGksIG5vZGVzW2ldLT5nZXRWdGtJZCgpKTsKLSsgICAgfQotKyNlbHNl Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0gICB2dGtJZFR5cGUqIHB0cyA9IDA7Ci0gICBncmlk LT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7Ci1AQCAtMTQ1LDYgKzE1OCw3IEBA IGJvb2wgU01EU19WdGtWb2x1bWU6OkNoYW5nZU5vZGVzKGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5v ZGVzW10sIGNvbnN0IGludCBuYk5vZGVzCi0gICAgIHsKLSAgICAgICBwdHNbaV0gPSBub2Rlc1tp XS0+Z2V0VnRrSWQoKTsKLSAgICAgfQotKyNlbmRpZgotICAgU01EU19NZXNoOjpfbWVzaExpc3Rb bXlNZXNoSWRdLT5zZXRNeU1vZGlmaWVkKCk7Ci0gICByZXR1cm4gdHJ1ZTsKLSB9Ci1AQCAtMjA3 LDcgKzIyMSw3IEBAIGludCBTTURTX1Z0a1ZvbHVtZTo6TmJGYWNlcygpIGNvbnN0Ci0gICAgIGNh c2UgVlRLX1BPTFlIRURST046Ci0gICAgICAgewotICAgICAgICAgdnRrSWRUeXBlIG5GYWNlcyA9 IDA7Ci0tICAgICAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKLSsgICAgICAgIHZ0a0lkVHlwZVB0 ciBwdElkcyA9IDA7Ci0gICAgICAgICBncmlkLT5HZXRGYWNlU3RyZWFtKHRoaXMtPm15VnRrSUQs IG5GYWNlcywgcHRJZHMpOwotICAgICAgICAgbmJGYWNlcyA9IG5GYWNlczsKLSAgICAgICAgIGJy ZWFrOwotQEAgLTIzNiw3ICsyNTAsNyBAQCBpbnQgU01EU19WdGtWb2x1bWU6Ok5iTm9kZXMoKSBj b25zdAotICAgZWxzZQotICAgICB7Ci0gICAgICAgdnRrSWRUeXBlIG5GYWNlcyA9IDA7Ci0tICAg ICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAgICAgdnRrSWRUeXBlUHRyIHB0SWRzID0gMDsK LSAgICAgICBncmlkLT5HZXRGYWNlU3RyZWFtKHRoaXMtPm15VnRrSUQsIG5GYWNlcywgcHRJZHMp OwotICAgICAgIGludCBpZCA9IDA7Ci0gICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuRmFjZXM7 IGkrKykKLUBAIC0yNzYsNyArMjkwLDcgQEAgaW50IFNNRFNfVnRrVm9sdW1lOjpOYkVkZ2VzKCkg Y29uc3QKLSAgICAgY2FzZSBWVEtfUE9MWUhFRFJPTjoKLSAgICAgICB7Ci0gICAgICAgICB2dGtJ ZFR5cGUgbkZhY2VzID0gMDsKLS0gICAgICAgIHZ0a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICAg ICAgdnRrSWRUeXBlUHRyIHB0SWRzID0gMDsKLSAgICAgICAgIGdyaWQtPkdldEZhY2VTdHJlYW0o dGhpcy0+bXlWdGtJRCwgbkZhY2VzLCBwdElkcyk7Ci0gICAgICAgICBuYkVkZ2VzID0gMDsKLSAg ICAgICAgIGludCBpZCA9IDA7Ci1AQCAtMzEyLDcgKzMyNiw3IEBAIGludCBTTURTX1Z0a1ZvbHVt ZTo6TmJGYWNlTm9kZXMoY29uc3QgaW50IGZhY2VfaW5kKSBjb25zdAotICAgaWYgKGFWdGtUeXBl ID09IFZUS19QT0xZSEVEUk9OKQotICAgICB7Ci0gICAgICAgdnRrSWRUeXBlIG5GYWNlcyA9IDA7 Ci0tICAgICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAgICAgdnRrSWRUeXBlUHRyIHB0SWRz ID0gMDsKLSAgICAgICBncmlkLT5HZXRGYWNlU3RyZWFtKHRoaXMtPm15VnRrSUQsIG5GYWNlcywg cHRJZHMpOwotICAgICAgIGludCBpZCA9IDA7Ci0gICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu RmFjZXM7IGkrKykKLUBAIC0zNDIsNyArMzU2LDcgQEAgY29uc3QgU01EU19NZXNoTm9kZSogU01E U19WdGtWb2x1bWU6OkdldEZhY2VOb2RlKGNvbnN0IGludCBmYWNlX2luZCwgY29uc3QgaW50IG4K LSAgIGlmIChhVnRrVHlwZSA9PSBWVEtfUE9MWUhFRFJPTikKLSAgICAgewotICAgICAgIHZ0a0lk VHlwZSBuRmFjZXMgPSAwOwotLSAgICAgIHZ0a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICAgIHZ0 a0lkVHlwZVB0ciBwdElkcyA9IDA7Ci0gICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5t eVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsKLSAgICAgICBpbnQgaWQgPSAwOwotICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgbkZhY2VzOyBpKyspCi1AQCAtMzcyLDcgKzM4Niw3IEBAIHN0ZDo6dmVj dG9yPGludD4gU01EU19WdGtWb2x1bWU6OkdldFF1YW50aXRpZXMoKSBjb25zdAotICAgaWYgKGFW dGtUeXBlID09IFZUS19QT0xZSEVEUk9OKQotICAgICB7Ci0gICAgICAgdnRrSWRUeXBlIG5GYWNl cyA9IDA7Ci0tICAgICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAgICAgdnRrSWRUeXBlUHRy IHB0SWRzID0gMDsKLSAgICAgICBncmlkLT5HZXRGYWNlU3RyZWFtKHRoaXMtPm15VnRrSUQsIG5G YWNlcywgcHRJZHMpOwotICAgICAgIGludCBpZCA9IDA7Ci0gICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBuRmFjZXM7IGkrKykKLUBAIC00MzAsNyArNDQ0LDcgQEAgY29uc3QgU01EU19NZXNoTm9k ZSogU01EU19WdGtWb2x1bWU6OkdldE5vZGUoY29uc3QgaW50IGluZCkgY29uc3QKLSAgIGlmICgg YVZ0a1R5cGUgPT0gVlRLX1BPTFlIRURST04pCi0gICB7Ci0gICAgIHZ0a0lkVHlwZSBuRmFjZXMg PSAwOwotLSAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKLSsgICAgdnRrSWRUeXBlUHRyIHB0SWRz ID0gMDsKLSAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0 SWRzKTsKLSAgICAgaW50IGlkID0gMCwgbmJQb2ludHMgPSAwOwotICAgICBmb3IgKGludCBpID0g MDsgaSA8IG5GYWNlczsgaSsrKQotQEAgLTQ0Myw3ICs0NTcsOCBAQCBjb25zdCBTTURTX01lc2hO b2RlKiBTTURTX1Z0a1ZvbHVtZTo6R2V0Tm9kZShjb25zdCBpbnQgaW5kKSBjb25zdAotICAgICB9 Ci0gICAgIHJldHVybiAwOwotICAgfQotLSAgdnRrSWRUeXBlIG5wdHMsICpwdHM7Ci0rICB2dGtJ ZFR5cGUgbnB0czsKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRz KCB0aGlzLT5teVZ0a0lELCBucHRzLCBwdHMgKTsKLSAgIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4m IGludGVybGFjZSA9IFNNRFNfTWVzaENlbGw6OmZyb21WdGtPcmRlciggVlRLQ2VsbFR5cGUoIGFW dGtUeXBlICkpOwotICAgcmV0dXJuIFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Rmlu ZE5vZGVWdGsoIHB0c1sgaW50ZXJsYWNlLmVtcHR5KCkgPyBpbmQgOiBpbnRlcmxhY2VbaW5kXV0g KTsKLUBAIC00NjAsNyArNDc1LDcgQEAgaW50IFNNRFNfVnRrVm9sdW1lOjpHZXROb2RlSW5kZXgo IGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGUgKSBjb25zdAotICAgaWYgKCBhVnRrVHlwZSA9PSBW VEtfUE9MWUhFRFJPTikKLSAgIHsKLSAgICAgdnRrSWRUeXBlIG5GYWNlcyA9IDA7Ci0tICAgIHZ0 a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICB2dGtJZFR5cGVQdHIgcHRJZHMgPSAwOwotICAgICBn cmlkLT5HZXRGYWNlU3RyZWFtKHRoaXMtPm15VnRrSUQsIG5GYWNlcywgcHRJZHMpOwotICAgICBp bnQgaWQgPSAwOwotICAgICBmb3IgKGludCBpRiA9IDA7IGlGIDwgbkZhY2VzOyBpRisrKQotQEAg LTQ3Myw3ICs0ODgsOCBAQCBpbnQgU01EU19WdGtWb2x1bWU6OkdldE5vZGVJbmRleCggY29uc3Qg U01EU19NZXNoTm9kZSogbm9kZSApIGNvbnN0Ci0gICAgIH0KLSAgICAgcmV0dXJuIC0xOwotICAg fQotLSAgdnRrSWRUeXBlIG5wdHMsICpwdHM7Ci0rICB2dGtJZFR5cGUgbnB0czsKLSsgIHZ0a0lk VHlwZVB0ciBwdHM7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKCB0aGlzLT5teVZ0a0lELCBucHRz LCBwdHMgKTsKLSAgIGZvciAoIHZ0a0lkVHlwZSBpID0gMDsgaSA8IG5wdHM7ICsraSApCi0gICAg IGlmICggcHRzW2ldID09IG5vZGUtPmdldFZ0a0lkKCkgKQotQEAgLTUzNCw3ICs1NTAsNyBAQCBi b29sIFNNRFNfVnRrVm9sdW1lOjpJc01lZGl1bU5vZGUoY29uc3QgU01EU19NZXNoTm9kZSogbm9k ZSkgY29uc3QKLSAgICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICB2dGtJZFR5cGUgbnB0cyA9 IDA7Ci0tICB2dGtJZFR5cGUqIHB0cyA9IDA7Ci0rICB2dGtJZFR5cGVQdHIgcHRzID0gMDsKLSAg IGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsKLSAgIHZ0a0lkVHlwZSBu b2RlSWQgPSBub2RlLT5nZXRWdGtJZCgpOwotICAgZm9yIChpbnQgcmFuayA9IDA7IHJhbmsgPCBu cHRzOyByYW5rKyspCi1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01F U0gvU01FU0hfTWVzaEVkaXRvci5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NN RVNIL1NNRVNIX01lc2hFZGl0b3IuY3BwCi1pbmRleCBmY2QwNDRiMDBmMi4uZjU0YzI0Zjg2MTgg MTAwNjQ0Ci0tLS0gYS9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRVNIL1NNRVNIX01l c2hFZGl0b3IuY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRVNIL1NN RVNIX01lc2hFZGl0b3IuY3BwCi1AQCAtMTEzNDgsNyArMTEzNDgsNyBAQCBib29sIFNNRVNIX01l c2hFZGl0b3I6OkRvdWJsZU5vZGVzT25Hcm91cEJvdW5kYXJpZXMoIGNvbnN0IHN0ZDo6dmVjdG9y PFRJRFNvcnRlZAotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGludCBvbGRJZCA9ICpp dG47Ci0gICAgICAgICAgICAgICAvL01FU1NBR0UoIiAgICAgbm9kZSAiIDw8IG9sZElkKTsKLS0g ICAgICAgICAgICAgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gZ3JpZC0+R2V0Q2VsbExpbmtzKCkt PkdldExpbmsob2xkSWQpOwotKyAgICAgICAgICAgICAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBz dGF0aWNfY2FzdDx2dGtDZWxsTGlua3MqPihncmlkLT5HZXRDZWxsTGlua3MoKSktPkdldExpbmso b2xkSWQpOwotICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGwubmNlbGxzOyBpKyspCi0g ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICBpbnQgdnRrSWQgPSBsLmNlbGxz W2ldOwotQEAgLTExNTI3LDcgKzExNTI3LDcgQEAgYm9vbCBTTUVTSF9NZXNoRWRpdG9yOjpEb3Vi bGVOb2Rlc09uR3JvdXBCb3VuZGFyaWVzKCBjb25zdCBzdGQ6OnZlY3RvcjxUSURTb3J0ZWQKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01FU1NBR0UoIiAgZG9t YWluICIgPDwgaWRvbSA8PCAiIHZvbHVtZSAiIDw8IGVsZW0tPkdldElEKCkpOwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWx1ZXNbM107Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnRrSWRUeXBlIG5wdHMgPSAw OwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0a0lkVHlwZSog cHRzID0gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dGtJ ZFR5cGVQdHIgcHRzID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBncmlkLT5HZXRDZWxsUG9pbnRzKHZ0a1ZvbElkc1tpdm9sXSwgbnB0cywgcHRzKTsKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTURTX1Z0a1ZvbHVtZTo6 Z3Jhdml0eUNlbnRlcihncmlkLCBwdHMsIG5wdHMsIHZhbHVlcyk7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkID09MCkKLUBAIC0xMTcwOCw3ICsxMTcw OCw3IEBAIGJvb2wgU01FU0hfTWVzaEVkaXRvcjo6RG91YmxlTm9kZXNPbkdyb3VwQm91bmRhcmll cyggY29uc3Qgc3RkOjp2ZWN0b3I8VElEU29ydGVkCi0gICAgICAgICB7Ci0gICAgICAgICAgIGlu dCBvbGRJZCA9IGl0bm9kLT5maXJzdDsKLSAgICAgICAgICAgLy9NRVNTQUdFKCIgICAgIG5vZGUg IiA8PCBvbGRJZCk7Ci0tICAgICAgICAgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gZ3JpZC0+R2V0 Q2VsbExpbmtzKCktPkdldExpbmsob2xkSWQpOwotKyAgICAgICAgICB2dGtDZWxsTGlua3M6Okxp bmsgbCA9IHN0YXRpY19jYXN0PHZ0a0NlbGxMaW5rcyo+KGdyaWQtPkdldENlbGxMaW5rcygpKS0+ R2V0TGluayhvbGRJZCk7Ci0gICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbC5uY2VsbHM7 IGkrKykKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpbnQgdnRrSWQgPSBsLmNlbGxz W2ldOwotQEAgLTEyMTY1LDcgKzEyMTY1LDcgQEAgdm9pZCBTTUVTSF9NZXNoRWRpdG9yOjpDcmVh dGVIb2xlU2tpbihkb3VibGUgcmFkaXVzLAotICAgICAgICAgICBNRVNTQUdFKCJ2b2x1bWUgdG8g Y2hlY2ssICB2dGtJZCAiIDw8IHZ0a0lkIDw8ICIgc21kc0lkICIgPDwgbWVzaERTLT5mcm9tVnRr VG9TbWRzKHZ0a0lkKSk7Ci0gICAgICAgICAgIGJvb2wgdm9sSW5zaWRlID0gZmFsc2U7Ci0gICAg ICAgICAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gICAgICAgICAgdnRrSWRUeXBlKiBwdHMgPSAw OwotKyAgICAgICAgICB2dGtJZFR5cGVQdHIgcHRzID0gMDsKLSAgICAgICAgICAgZ3JpZC0+R2V0 Q2VsbFBvaW50cyh2dGtJZCwgbnB0cywgcHRzKTsKLSAgICAgICAgICAgZm9yIChpbnQgaT0wOyBp PG5wdHM7IGkrKykKLSAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQv cGF0Y2hlcy8xNTItY21ha2UtdnRrOS5wYXRjaCBiL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1 Mi1jbWFrZS12dGs5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWJmZmNm NTdlODQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTItY21h a2UtdnRrOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS0tLSBhL2NNYWtl L0ZyZWVDQURfSGVscGVycy9TZXR1cFNhbG9tZVNNRVNILmNtYWtlCTIwMjAtMTEtMjYgMTU6NTk6 MjcuMDAwMDAwMDAwICswMTAwCi0rKysgYi9jTWFrZS9GcmVlQ0FEX0hlbHBlcnMvU2V0dXBTYWxv bWVTTUVTSC5jbWFrZQkyMDIwLTExLTI2IDIzOjA5OjEyLjc3ODI2MjYzNiArMDEwMAotQEAgLTEx LDYgKzExLDggQEAKLSAgICAgICAgIHNldChTTUVTSF9WRVJTSU9OX1RXRUFLIDApCi0gCi0gICAg ICAgICAjaWYgd2UgdXNlIHNtZXNoIHdlIGRlZmluaXRlbHkgYWxzbyBuZWVkIHZ0aywgbm8gbWF0 dGVyIG9mIGV4dGVybmFsIG9yIGludGVybmFsIHNtZXNoCi0rICAgICAgICBmaW5kX3BhY2thZ2Uo VlRLIFJFUVVJUkVEIE5PX01PRFVMRSkKLSsgICAgICAgIGlmKCR7VlRLX01BSk9SX1ZFUlNJT059 IExFU1MgOSkKLSAgICAgICAgIHNldCAoVlRLX0NPTVBPTkVOVFMKLSAgICAgICAgICAgICB2dGtD b21tb25Db3JlCi0gICAgICAgICAgICAgdnRrQ29tbW9uRGF0YU1vZGVsCi1AQCAtMjMsMTggKzI1 LDM3IEBACi0gICAgICAgICAgICAgdnRrRmlsdGVyc1NvdXJjZXMKLSAgICAgICAgICAgICB2dGtG aWx0ZXJzR2VvbWV0cnkKLSAgICAgICAgICkKLS0KLS0gICAgICAgICMgY2hlY2sgd2hpY2ggbW9k dWxlcyBhcmUgYXZhaWxhYmxlCi0tICAgICAgICBpZihVTklYIE9SIFdJTjMyKQotICAgICAgICAg ICAgIGZpbmRfcGFja2FnZShWVEsgQ09NUE9ORU5UUyB2dGtDb21tb25Db3JlIFJFUVVJUkVEIE5P X01PRFVMRSkKLSAgICAgICAgICAgICBsaXN0KEFQUEVORCBWVEtfQ09NUE9ORU5UUyB2dGtJT01Q SVBhcmFsbGVsIHZ0a1BhcmFsbGVsTVBJIHZ0a2hkZjUgdnRrRmlsdGVyc1BhcmFsbGVsRElZMiB2 dGtSZW5kZXJpbmdDb3JlIHZ0a0ludGVyYWN0aW9uU3R5bGUgdnRrUmVuZGVyaW5nRnJlZVR5cGUg dnRrUmVuZGVyaW5nT3BlbkdMMikKLSsgICAgICAgIGVsc2UoKQotKyAgICAgICAgICAgICMgVlRL IDkgY2hhbmdlZCBpdHMgY29tcG9uZW50IG5hbWVzCi0rICAgICAgICAgICAgc2V0IChWVEtfQ09N UE9ORU5UUwotKyAgICAgICAgICAgICAgICBDb21tb25Db3JlCi0rICAgICAgICAgICAgICAgIENv bW1vbkRhdGFNb2RlbAotKyAgICAgICAgICAgICAgICBGaWx0ZXJzVmVyZGljdAotKyAgICAgICAg ICAgICAgICBJT1hNTAotKyAgICAgICAgICAgICAgICBGaWx0ZXJzQ29yZQotKyAgICAgICAgICAg ICAgICBGaWx0ZXJzR2VuZXJhbAotKyAgICAgICAgICAgICAgICBJT0xlZ2FjeQotKyAgICAgICAg ICAgICAgICBGaWx0ZXJzRXh0cmFjdGlvbgotKyAgICAgICAgICAgICAgICBGaWx0ZXJzU291cmNl cwotKyAgICAgICAgICAgICAgICBGaWx0ZXJzR2VvbWV0cnkKLSsgICAgICAgICAgICApCi0rICAg ICAgICAgICAgZmluZF9wYWNrYWdlKFZUSyBDT01QT05FTlRTIENvbW1vbkNvcmUgUkVRVUlSRUQg Tk9fTU9EVUxFKQotKyAgICAgICAgICAgIGxpc3QoQVBQRU5EIFZUS19DT01QT05FTlRTIElPTVBJ UGFyYWxsZWwgUGFyYWxsZWxNUEkgaGRmNSBGaWx0ZXJzUGFyYWxsZWxESVkyIFJlbmRlcmluZ0Nv cmUgSW50ZXJhY3Rpb25TdHlsZSBSZW5kZXJpbmdGcmVlVHlwZSBSZW5kZXJpbmdPcGVuR0wyKQot KyAgICAgICAgZW5kaWYoKQotKwotKyAgICAgICAgIyBjaGVjayB3aGljaCBtb2R1bGVzIGFyZSBh dmFpbGFibGUKLSAgICAgICAgICAgICBmb3JlYWNoKF9tb2R1bGUgJHtWVEtfQ09NUE9ORU5UU30p Ci0rICAgICAgICAgICAgaWYoJHtWVEtfTUFKT1JfVkVSU0lPTn0gTEVTUyA5KQotICAgICAgICAg ICAgICAgICBsaXN0IChGSU5EIFZUS19NT0RVTEVTX0VOQUJMRUQgJHtfbW9kdWxlfSBfaW5kZXgp Ci0rICAgICAgICAgICAgZWxzZSgpCi0rICAgICAgICAgICAgICAgIGxpc3QgKEZJTkQgVlRLX0FW QUlMQUJMRV9DT01QT05FTlRTICR7X21vZHVsZX0gX2luZGV4KQotKyAgICAgICAgICAgIGVuZGlm KCkKLSAgICAgICAgICAgICAgICAgaWYgKCR7X2luZGV4fSBHUkVBVEVSIC0xKQotICAgICAgICAg ICAgICAgICAgICAgbGlzdChBUFBFTkQgQVZBSUxBQkxFX1ZUS19DT01QT05FTlRTICR7X21vZHVs ZX0pCi0gICAgICAgICAgICAgICAgIGVuZGlmKCkKLSAgICAgICAgICAgICBlbmRmb3JlYWNoKCkK LS0gICAgICAgIGVuZGlmKCkKLSAKLSAgICAgICAgICMgZG9uJ3QgY2hlY2sgVkVSU0lPTiA2IGFz IHRoaXMgd291bGQgZXhjbHVkZSBWRVJTSU9OIDcKLSAgICAgICAgIGlmKEFWQUlMQUJMRV9WVEtf Q09NUE9ORU5UUykK --===============7078250294348291478==--