From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Nicolas Chauvet To: git-commits@fedoraproject.org Subject: [rpms/opencv] opencv5: Update to current fixes from branch-2.2 Date: Fri, 28 Aug 2026 13:29:59 GMT Message-ID: <178792379952.1.4019957111237693744.rpms-opencv-a4d5a5431fe4@fedoraproject.org> List-ID: X-Git-Repo: rpms/opencv X-Git-Branch: opencv5 X-Git-Rev: a4d5a5431fe443ed6aecd57260a6f7929450d294 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbmN2CkJyYW5j aCA6IG9wZW5jdjUKQ29tbWl0IDogYTRkNWE1NDMxZmU0NDNlZDZhZWNkNTcyNjBhNmY3OTI5NDUw ZDI5NApBdXRob3IgOiBOaWNvbGFzIENoYXV2ZXQgPGt3aXphcnRAZ21haWwuY29tPgpEYXRlICAg OiAyMDExLTA1LTI2VDE1OjEwOjQzKzAyOjAwClN0YXRzICA6ICsxNzA4Ly0zIGluIDIgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29wZW5jdi9jL2E0 ZDVhNTQzMWZlNDQzZWQ2YWVjZDU3MjYwYTZmNzkyOTQ1MGQyOTQ/YnJhbmNoPW9wZW5jdjUKCkxv ZzoKVXBkYXRlIHRvIGN1cnJlbnQgZml4ZXMgZnJvbSBicmFuY2gtMi4yCgotLS0KZGlmZiAtLWdp dCBhL09wZW5DVi0yLjItYjIyLWJhY2twb3J0XzIwMTEwNTI2LnBhdGNoIGIvT3BlbkNWLTIuMi1i MjItYmFja3BvcnRfMjAxMTA1MjYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNGQyYzVmMwotLS0gL2Rldi9udWxsCisrKyBiL09wZW5DVi0yLjItYjIyLWJhY2twb3J0 XzIwMTEwNTI2LnBhdGNoCkBAIC0wLDAgKzEsMTcwMiBAQAorZGlmZiAtdXIgT3BlbkNWLTIuMi4w L0NNYWtlTGlzdHMudHh0IG9wZW5jdi9DTWFrZUxpc3RzLnR4dAorLS0tIE9wZW5DVi0yLjIuMC9D TWFrZUxpc3RzLnR4dAkyMDEwLTEyLTA1IDA0OjM1OjIzLjAwMDAwMDAwMCArMDEwMAorKysrIG9w ZW5jdi9DTWFrZUxpc3RzLnR4dAkyMDExLTA1LTI2IDEyOjU3OjU2LjQ1MjA5MzAwMiArMDIwMAor QEAgLTEyMjQsNiArMTIyNCwxMSBAQAorICAgICAgICAgICAgIERFU1RJTkFUSU9OICIuIg0KKyAg ICAgICAgICAgICBDT01QT05FTlQgbWFpbg0KKyAgICAgICAgICAgICApDQorKyAgICAgICAgaW5z dGFsbChGSUxFUw0KKysgICAgICAgICAgICAiaW5jbHVkZS9DTWFrZUxpc3RzLnR4dCINCisrICAg ICAgICAgICAgREVTVElOQVRJT04gImluY2x1ZGUvIg0KKysgICAgICAgICAgICBDT01QT05FTlQg c3JjDQorKyAgICAgICAgICAgICkNCisgDQorICAgICAgICAgaWYoQ01BS0VfSU5TVEFMTF9ERUJV R19MSUJSQVJJRVMpDQorICAgICAgICAgICAgIGZvcmVhY2gobSBjYWxpYjNkIGNvcmUgY29udHJp YiBmZWF0dXJlczJkIGZmbXBlZyBmbGFubiBncHUgaGlnaGd1aSBpbWdwcm9jIGxlZ2FjeSBtbCBv YmpkZXRlY3QgdmlkZW8pDQorZGlmZiAtdXIgT3BlbkNWLTIuMi4wL2N2Y29uZmlnLmguY21ha2Ug b3BlbmN2L2N2Y29uZmlnLmguY21ha2UKKy0tLSBPcGVuQ1YtMi4yLjAvY3Zjb25maWcuaC5jbWFr ZQkyMDEwLTEyLTA1IDA0OjM1OjIzLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5jdi9jdmNvbmZp Zy5oLmNtYWtlCTIwMTEtMDUtMjYgMTI6NTc6NTYuNDQ5MDkzMDAyICswMjAwCitAQCAtMTksNiAr MTksOSBAQAorIC8qIFY0TDIgY2FwdHVyaW5nIHN1cHBvcnQgKi8KKyAjY21ha2VkZWZpbmUgSEFW RV9DQU1WNEwyCisgCisrLyogVjRML1Y0TDIgY2FwdHVyaW5nIHN1cHBvcnQgdmlhIGxpYnY0bCAq LworKyNjbWFrZWRlZmluZSBIQVZFX0xJQlY0TAorKworIC8qIENhcmJvbiB3aW5kb3dpbmcgZW52 aXJvbm1lbnQgKi8KKyAjY21ha2VkZWZpbmUgSEFWRV9DQVJCT04KKyAKK2RpZmYgLXVyIE9wZW5D Vi0yLjIuMC9tb2R1bGVzL2NhbGliM2Qvc3JjL2Z1bmRhbS5jcHAgb3BlbmN2L21vZHVsZXMvY2Fs aWIzZC9zcmMvZnVuZGFtLmNwcAorLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2NhbGliM2Qvc3Jj L2Z1bmRhbS5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVu Y3YvbW9kdWxlcy9jYWxpYjNkL3NyYy9mdW5kYW0uY3BwCTIwMTEtMDUtMjYgMTI6NTY6MzMuNDU3 MDkzMDAzICswMjAwCitAQCAtMjY5LDYgKzI2OSw4IEBACisgICAgICAgICBpY3ZDb21wcmVzc1Bv aW50cyggKEN2UG9pbnQyRDY0ZiopTS0+ZGF0YS5wdHIsIHRlbXBNYXNrLT5kYXRhLnB0ciwgMSwg Y291bnQgKTsKKyAgICAgICAgIGNvdW50ID0gaWN2Q29tcHJlc3NQb2ludHMoIChDdlBvaW50MkQ2 NGYqKW0tPmRhdGEucHRyLCB0ZW1wTWFzay0+ZGF0YS5wdHIsIDEsIGNvdW50ICk7CisgICAgICAg ICBNLT5jb2xzID0gbS0+Y29scyA9IGNvdW50OworKyAgICAgICAgaWYoIG1ldGhvZCA9PSBDVl9S QU5TQUMgKQorKyAgICAgICAgICAgIGVzdGltYXRvci5ydW5LZXJuZWwoIE0sIG0sICZtYXRIICk7 CisgICAgICAgICBlc3RpbWF0b3IucmVmaW5lKCBNLCBtLCAmbWF0SCwgMTAgKTsKKyAgICAgfQor IAorZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29y ZS9jb3JlLmhwcCBvcGVuY3YvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL2NvcmUu aHBwCistLS0gT3BlbkNWLTIuMi4wL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9j b3JlLmhwcAkyMDEwLTEyLTA1IDA0OjM1OjI0LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5jdi9t b2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY29yZS5ocHAJMjAxMS0wNS0yNiAxMjo1 NjowNi4wMjgwOTMwMDMgKzAyMDAKK0BAIC0xODE2LDcgKzE4MTYsNyBAQAorIGNsYXNzIENWX0VY UE9SVFMgUk5HCisgeworIHB1YmxpYzoKKy0gICAgZW51bSB7IEE9NDE2NDkwMzY5MFUsIFVOSUZP Uk09MCwgTk9STUFMPTEgfTsKKysgICAgZW51bSB7IFVOSUZPUk09MCwgTk9STUFMPTEgfTsKKyAK KyAgICAgUk5HKCk7CisgICAgIFJORyh1aW50NjQgX3N0YXRlKTsKK2RpZmYgLXVyIE9wZW5DVi0y LjIuMC9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvbWF0LmhwcCBvcGVuY3YvbW9k dWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL21hdC5ocHAKKy0tLSBPcGVuQ1YtMi4yLjAv bW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL21hdC5ocHAJMjAxMC0xMi0wNSAwNDoz NToyNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3Bl bmN2Mi9jb3JlL21hdC5ocHAJMjAxMS0wNS0yNiAxMjo1NjowNi4wMTkwOTMwMDMgKzAyMDAKK0BA IC04MDUsNyArODA1LDcgQEAKKyAKKyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGlu dCBuPiBpbmxpbmUKKyAgICAgTWF0XzxfVHA+OjpNYXRfKGNvbnN0IFZlYzx0eXBlbmFtZSBEYXRh VHlwZTxfVHA+OjpjaGFubmVsX3R5cGUsIG4+JiB2ZWMsIGJvb2wgY29weURhdGEpCistICAgIDog TWF0KG4vRGF0YVR5cGU8X1RwPjo6Y2hhbm5lbHMsIDEsIERhdGFUeXBlPF9UcD46OnR5cGUsICZ2 ZWMpCisrICAgIDogTWF0KG4vRGF0YVR5cGU8X1RwPjo6Y2hhbm5lbHMsIDEsIERhdGFUeXBlPF9U cD46OnR5cGUsICh2b2lkKikmdmVjKQorIHsKKyAgICAgQ1ZfQXNzZXJ0KG4lRGF0YVR5cGU8X1Rw Pjo6Y2hhbm5lbHMgPT0gMCk7CisgICAgIGlmKCBjb3B5RGF0YSApCitAQCAtODE0LDcgKzgxNCw3 IEBACisgCisgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxpbnQgbSwgaW50IG4+IGlu bGluZQorICAgICBNYXRfPF9UcD46Ok1hdF8oY29uc3QgTWF0eDx0eXBlbmFtZSBEYXRhVHlwZTxf VHA+OjpjaGFubmVsX3R5cGUsbSxuPiYgTSwgYm9vbCBjb3B5RGF0YSkKKy0gICAgOiBNYXQobSwg bi9EYXRhVHlwZTxfVHA+OjpjaGFubmVscywgRGF0YVR5cGU8X1RwPjo6dHlwZSwgJk0pCisrICAg IDogTWF0KG0sIG4vRGF0YVR5cGU8X1RwPjo6Y2hhbm5lbHMsIERhdGFUeXBlPF9UcD46OnR5cGUs ICh2b2lkKikmTSkKKyB7CisgICAgIENWX0Fzc2VydChuICUgRGF0YVR5cGU8X1RwPjo6Y2hhbm5l bHMgPT0gMCk7CisgICAgIGlmKCBjb3B5RGF0YSApCitAQCAtODIyLDcgKzgyMiw3IEBACisgfQor ICAgICAKKyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBNYXRfPF9UcD46Ok1hdF8oY29u c3QgUG9pbnRfPHR5cGVuYW1lIERhdGFUeXBlPF9UcD46OmNoYW5uZWxfdHlwZT4mIHB0LCBib29s IGNvcHlEYXRhKQorLSAgICA6IE1hdCgyL0RhdGFUeXBlPF9UcD46OmNoYW5uZWxzLCAxLCBEYXRh VHlwZTxfVHA+Ojp0eXBlLCAmcHQpCisrICAgIDogTWF0KDIvRGF0YVR5cGU8X1RwPjo6Y2hhbm5l bHMsIDEsIERhdGFUeXBlPF9UcD46OnR5cGUsICh2b2lkKikmcHQpCisgeworICAgICBDVl9Bc3Nl cnQoMiAlIERhdGFUeXBlPF9UcD46OmNoYW5uZWxzID09IDApOworICAgICBpZiggY29weURhdGEg KQorQEAgLTgzMCw3ICs4MzAsNyBAQAorIH0KKyAKKyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlu bGluZSBNYXRfPF9UcD46Ok1hdF8oY29uc3QgUG9pbnQzXzx0eXBlbmFtZSBEYXRhVHlwZTxfVHA+ OjpjaGFubmVsX3R5cGU+JiBwdCwgYm9vbCBjb3B5RGF0YSkKKy0gICAgOiBNYXQoMy9EYXRhVHlw ZTxfVHA+OjpjaGFubmVscywgMSwgRGF0YVR5cGU8X1RwPjo6dHlwZSwgJnB0KQorKyAgICA6IE1h dCgzL0RhdGFUeXBlPF9UcD46OmNoYW5uZWxzLCAxLCBEYXRhVHlwZTxfVHA+Ojp0eXBlLCAodm9p ZCopJnB0KQorIHsKKyAgICAgQ1ZfQXNzZXJ0KDMgJSBEYXRhVHlwZTxfVHA+OjpjaGFubmVscyA9 PSAwKTsKKyAgICAgaWYoIGNvcHlEYXRhICkKK2RpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVz L2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvb3BlcmF0aW9ucy5ocHAgb3BlbmN2L21vZHVsZXMv Y29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9vcGVyYXRpb25zLmhwcAorLS0tIE9wZW5DVi0yLjIu MC9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvb3BlcmF0aW9ucy5ocHAJMjAxMC0x Mi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL2lu Y2x1ZGUvb3BlbmN2Mi9jb3JlL29wZXJhdGlvbnMuaHBwCTIwMTEtMDUtMjYgMTI6NTY6MDYuMDIy MDkzMDAzICswMjAwCitAQCAtNTcyLDYgKzU3Miw3IEBACisgeworICAgICBmb3IoIGludCBpID0g MDsgaSA8IG0qbjsgaSsrICkKKyAgICAgICAgIGEudmFsW2ldID0gc2F0dXJhdGVfY2FzdDxfVHA+ KGEudmFsW2ldICogYWxwaGEpOworKyAgICByZXR1cm4gYTsKKyB9ICAgICAgICAKKyAgICAgCisg dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBpbnQgbSwgaW50IG4+IHN0YXRpYyBpbmxpbmUKK0BAIC01 NzksNiArNTgwLDcgQEAKKyB7CisgICAgIGZvciggaW50IGkgPSAwOyBpIDwgbSpuOyBpKysgKQor ICAgICAgICAgYS52YWxbaV0gPSBzYXR1cmF0ZV9jYXN0PF9UcD4oYS52YWxbaV0gKiBhbHBoYSk7 CisrICAgIHJldHVybiBhOworIH0gICAgCisgCisgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBpbnQg bSwgaW50IG4+IHN0YXRpYyBpbmxpbmUKK0BAIC01ODYsNiArNTg4LDcgQEAKKyB7CisgICAgIGZv ciggaW50IGkgPSAwOyBpIDwgbSpuOyBpKysgKQorICAgICAgICAgYS52YWxbaV0gPSBzYXR1cmF0 ZV9jYXN0PF9UcD4oYS52YWxbaV0gKiBhbHBoYSk7CisrICAgIHJldHVybiBhOworIH0gICAgICAg IAorIAorIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgaW50IG0sIGludCBuPiBzdGF0aWMgaW5saW5l CitAQCAtMjIzOSw3ICsyMjQyLDcgQEAKKyBpbmxpbmUgUk5HOjpSTkcodWludDY0IF9zdGF0ZSkg eyBzdGF0ZSA9IF9zdGF0ZSA/IF9zdGF0ZSA6IDB4ZmZmZmZmZmY7IH0KKyBpbmxpbmUgdW5zaWdu ZWQgUk5HOjpuZXh0KCkKKyB7CistICAgIHN0YXRlID0gKHVpbnQ2NCkodW5zaWduZWQpc3RhdGUq QSArICh1bnNpZ25lZCkoc3RhdGUgPj4gMzIpOworKyAgICBzdGF0ZSA9ICh1aW50NjQpKHVuc2ln bmVkKXN0YXRlKkNWX1JOR19DT0VGRiArICh1bnNpZ25lZCkoc3RhdGUgPj4gMzIpOworICAgICBy ZXR1cm4gKHVuc2lnbmVkKXN0YXRlOworIH0KKyAKK2RpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1 bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvdHlwZXNfYy5oIG9wZW5jdi9tb2R1bGVzL2Nv cmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvdHlwZXNfYy5oCistLS0gT3BlbkNWLTIuMi4wL21vZHVs ZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS90eXBlc19jLmgJMjAxMC0xMi0wNSAwNDozNToy NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2 Mi9jb3JlL3R5cGVzX2MuaAkyMDExLTA1LTI2IDEyOjU2OjA2LjAyNDA5MzAwMyArMDIwMAorQEAg LTM3NSw2ICszNzUsOCBAQAorIAorIHR5cGVkZWYgdWludDY0IEN2Uk5HOworIAorKyNkZWZpbmUg Q1ZfUk5HX0NPRUZGIDQxNjQ5MDM2OTBVCisrCisgQ1ZfSU5MSU5FIEN2Uk5HIGN2Uk5HKCBpbnQ2 NCBzZWVkIENWX0RFRkFVTFQoLTEpKQorIHsKKyAgICAgQ3ZSTkcgcm5nID0gc2VlZCA/ICh1aW50 NjQpc2VlZCA6ICh1aW50NjQpKGludDY0KS0xOworQEAgLTM4NSw3ICszODcsNyBAQAorIENWX0lO TElORSB1bnNpZ25lZCBjdlJhbmRJbnQoIEN2Uk5HKiBybmcgKQorIHsKKyAgICAgdWludDY0IHRl bXAgPSAqcm5nOworLSAgICB0ZW1wID0gKHVpbnQ2NCkodW5zaWduZWQpdGVtcCo0MTY0OTAzNjkw VSArICh0ZW1wID4+IDMyKTsKKysgICAgdGVtcCA9ICh1aW50NjQpKHVuc2lnbmVkKXRlbXAqQ1Zf Uk5HX0NPRUZGICsgKHRlbXAgPj4gMzIpOworICAgICAqcm5nID0gdGVtcDsKKyAgICAgcmV0dXJu ICh1bnNpZ25lZCl0ZW1wOworIH0KK2RpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2NvcmUv c3JjL2xhcGFjay5jcHAgb3BlbmN2L21vZHVsZXMvY29yZS9zcmMvbGFwYWNrLmNwcAorLS0tIE9w ZW5DVi0yLjIuMC9tb2R1bGVzL2NvcmUvc3JjL2xhcGFjay5jcHAJMjAxMC0xMi0wNSAwNDozNToy NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL3NyYy9sYXBhY2suY3Bw CTIwMTEtMDUtMjYgMTI6NTY6MTMuNTY3MDkzMDAzICswMjAwCitAQCAtMjE3LDEwICsyMTcsMTAg QEAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5hbnQgb2YgdGhl IG1hdHJpeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyBcKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKyAKKy0jZGVmaW5lIGRldDIobSkgICAobSgwLDApKm0oMSwxKSAt IG0oMCwxKSptKDEsMCkpCistI2RlZmluZSBkZXQzKG0pICAgKG0oMCwwKSoobSgxLDEpKm0oMiwy KSAtIG0oMSwyKSptKDIsMSkpIC0gIFwKKy0gICAgICAgICAgICAgICAgICAgbSgwLDEpKihtKDEs MCkqbSgyLDIpIC0gbSgxLDIpKm0oMiwwKSkgKyAgXAorLSAgICAgICAgICAgICAgICAgICBtKDAs MikqKG0oMSwwKSptKDIsMSkgLSBtKDEsMSkqbSgyLDApKSkKKysjZGVmaW5lIGRldDIobSkgICAo KGRvdWJsZSltKDAsMCkqbSgxLDEpIC0gKGRvdWJsZSltKDAsMSkqbSgxLDApKQorKyNkZWZpbmUg ZGV0MyhtKSAgIChtKDAsMCkqKChkb3VibGUpbSgxLDEpKm0oMiwyKSAtIChkb3VibGUpbSgxLDIp Km0oMiwxKSkgLSAgXAorKyAgICAgICAgICAgICAgICAgICBtKDAsMSkqKChkb3VibGUpbSgxLDAp Km0oMiwyKSAtIChkb3VibGUpbSgxLDIpKm0oMiwwKSkgKyAgXAorKyAgICAgICAgICAgICAgICAg ICBtKDAsMikqKChkb3VibGUpbSgxLDApKm0oMiwxKSAtIChkb3VibGUpbSgxLDEpKm0oMiwwKSkp CisgCisgZG91YmxlIGRldGVybWluYW50KCBjb25zdCBNYXQmIG1hdCApCisgeworQEAgLTQwNSwx NyArNDA1LDE3IEBACisgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBkOworICAgICAgICAg ICAgICAgICAgICAgZCA9IDEuL2Q7CisgCistICAgICAgICAgICAgICAgICAgICB0WzBdID0gKGZs b2F0KSgoU2YoMSwxKSAqIFNmKDIsMikgLSBTZigxLDIpICogU2YoMiwxKSkgKiBkKTsKKy0gICAg ICAgICAgICAgICAgICAgIHRbMV0gPSAoZmxvYXQpKChTZigwLDIpICogU2YoMiwxKSAtIFNmKDAs MSkgKiBTZigyLDIpKSAqIGQpOworLSAgICAgICAgICAgICAgICAgICAgdFsyXSA9IChmbG9hdCko KFNmKDAsMSkgKiBTZigxLDIpIC0gU2YoMCwyKSAqIFNmKDEsMSkpICogZCk7CistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLSAgICAgICAgICAgICAgICAgICAgdFszXSA9IChm bG9hdCkoKFNmKDEsMikgKiBTZigyLDApIC0gU2YoMSwwKSAqIFNmKDIsMikpICogZCk7CistICAg ICAgICAgICAgICAgICAgICB0WzRdID0gKGZsb2F0KSgoU2YoMCwwKSAqIFNmKDIsMikgLSBTZigw LDIpICogU2YoMiwwKSkgKiBkKTsKKy0gICAgICAgICAgICAgICAgICAgIHRbNV0gPSAoZmxvYXQp KChTZigwLDIpICogU2YoMSwwKSAtIFNmKDAsMCkgKiBTZigxLDIpKSAqIGQpOworLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAgICAgICAgIHRbNl0gPSAo ZmxvYXQpKChTZigxLDApICogU2YoMiwxKSAtIFNmKDEsMSkgKiBTZigyLDApKSAqIGQpOworLSAg ICAgICAgICAgICAgICAgICAgdFs3XSA9IChmbG9hdCkoKFNmKDAsMSkgKiBTZigyLDApIC0gU2Yo MCwwKSAqIFNmKDIsMSkpICogZCk7CistICAgICAgICAgICAgICAgICAgICB0WzhdID0gKGZsb2F0 KSgoU2YoMCwwKSAqIFNmKDEsMSkgLSBTZigwLDEpICogU2YoMSwwKSkgKiBkKTsKKysgICAgICAg ICAgICAgICAgICAgIHRbMF0gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDEsMSkgKiBTZigyLDIpIC0g KGRvdWJsZSlTZigxLDIpICogU2YoMiwxKSkgKiBkKTsKKysgICAgICAgICAgICAgICAgICAgIHRb MV0gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDAsMikgKiBTZigyLDEpIC0gKGRvdWJsZSlTZigwLDEp ICogU2YoMiwyKSkgKiBkKTsKKysgICAgICAgICAgICAgICAgICAgIHRbMl0gPSAoZmxvYXQpKCgo ZG91YmxlKVNmKDAsMSkgKiBTZigxLDIpIC0gKGRvdWJsZSlTZigwLDIpICogU2YoMSwxKSkgKiBk KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysgICAgICAgICAgICAgICAgICAgIHRb M10gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDEsMikgKiBTZigyLDApIC0gKGRvdWJsZSlTZigxLDAp ICogU2YoMiwyKSkgKiBkKTsKKysgICAgICAgICAgICAgICAgICAgIHRbNF0gPSAoZmxvYXQpKCgo ZG91YmxlKVNmKDAsMCkgKiBTZigyLDIpIC0gKGRvdWJsZSlTZigwLDIpICogU2YoMiwwKSkgKiBk KTsKKysgICAgICAgICAgICAgICAgICAgIHRbNV0gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDAsMikg KiBTZigxLDApIC0gKGRvdWJsZSlTZigwLDApICogU2YoMSwyKSkgKiBkKTsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKysgICAgICAgICAgICAgICAgICAgIHRbNl0gPSAoZmxvYXQpKCgo ZG91YmxlKVNmKDEsMCkgKiBTZigyLDEpIC0gKGRvdWJsZSlTZigxLDEpICogU2YoMiwwKSkgKiBk KTsKKysgICAgICAgICAgICAgICAgICAgIHRbN10gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDAsMSkg KiBTZigyLDApIC0gKGRvdWJsZSlTZigwLDApICogU2YoMiwxKSkgKiBkKTsKKysgICAgICAgICAg ICAgICAgICAgIHRbOF0gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDAsMCkgKiBTZigxLDEpIC0gKGRv dWJsZSlTZigwLDEpICogU2YoMSwwKSkgKiBkKTsKKyAKKyAgICAgICAgICAgICAgICAgICAgIERm KDAsMCkgPSB0WzBdOyBEZigwLDEpID0gdFsxXTsgRGYoMCwyKSA9IHRbMl07CisgICAgICAgICAg ICAgICAgICAgICBEZigxLDApID0gdFszXTsgRGYoMSwxKSA9IHRbNF07IERmKDEsMikgPSB0WzVd OworQEAgLTYwNywxMCArNjA3LDEwIEBACisgICAgICAgICAgICAgICAgIGRvdWJsZSBkID0gZGV0 MihTZik7CisgICAgICAgICAgICAgICAgIGlmKCBkICE9IDAuICkKKyAgICAgICAgICAgICAgICAg eworLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgdDsKKysgICAgICAgICAgICAgICAgICAgIGRv dWJsZSB0OworICAgICAgICAgICAgICAgICAgICAgZCA9IDEuL2Q7CistICAgICAgICAgICAgICAg ICAgICB0ID0gKGZsb2F0KSgoYmYoMCkqU2YoMSwxKSAtIGJmKDEpKlNmKDAsMSkpKmQpOworLSAg ICAgICAgICAgICAgICAgICAgRGYoMSwwKSA9IChmbG9hdCkoKGJmKDEpKlNmKDAsMCkgLSBiZigw KSpTZigxLDApKSpkKTsKKysgICAgICAgICAgICAgICAgICAgIHQgPSAoZmxvYXQpKCgoZG91Ymxl KWJmKDApKlNmKDEsMSkgLSAoZG91YmxlKWJmKDEpKlNmKDAsMSkpKmQpOworKyAgICAgICAgICAg ICAgICAgICAgRGYoMSwwKSA9IChmbG9hdCkoKChkb3VibGUpYmYoMSkqU2YoMCwwKSAtIChkb3Vi bGUpYmYoMCkqU2YoMSwwKSkqZCk7CisgICAgICAgICAgICAgICAgICAgICBEZigwLDApID0gdDsK KyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBlbHNlCitAQCAtNjQyLDE5ICs2 NDIsMTkgQEAKKyAgICAgICAgICAgICAgICAgICAgIGQgPSAxLi9kOworIAorICAgICAgICAgICAg ICAgICAgICAgdFswXSA9IChmbG9hdCkoZCoKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAo YmYoMCkqKFNmKDEsMSkqU2YoMiwyKSAtIFNmKDEsMikqU2YoMiwxKSkgLQorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTZigwLDEpKihiZigxKSpTZigyLDIpIC0gU2YoMSwyKSpiZigyKSkg KworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZigwLDIpKihiZigxKSpTZigyLDEpIC0g U2YoMSwxKSpiZigyKSkpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmYoMCkqKChk b3VibGUpU2YoMSwxKSpTZigyLDIpIC0gKGRvdWJsZSlTZigxLDIpKlNmKDIsMSkpIC0KKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU2YoMCwxKSooKGRvdWJsZSliZigxKSpTZigyLDIpIC0g KGRvdWJsZSlTZigxLDIpKmJmKDIpKSArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNm KDAsMikqKChkb3VibGUpYmYoMSkqU2YoMiwxKSAtIChkb3VibGUpU2YoMSwxKSpiZigyKSkpKTsK KyAKKyAgICAgICAgICAgICAgICAgICAgIHRbMV0gPSAoZmxvYXQpKGQqCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgKFNmKDAsMCkqKGJmKDEpKlNmKDIsMikgLSBTZigxLDIpKmJmKDIpKSAt CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJmKDApKihTZigxLDApKlNmKDIsMikgLSBT ZigxLDIpKlNmKDIsMCkpICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2YoMCwyKSoo U2YoMSwwKSpiZigyKSAtIGJmKDEpKlNmKDIsMCkpKSk7CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgKFNmKDAsMCkqKGRvdWJsZSkoYmYoMSkqU2YoMiwyKSAtIChkb3VibGUpU2YoMSwyKSpi ZigyKSkgLQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZigwKSooKGRvdWJsZSlTZigx LDApKlNmKDIsMikgLSAoZG91YmxlKVNmKDEsMikqU2YoMiwwKSkgKworKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTZigwLDIpKigoZG91YmxlKVNmKDEsMCkqYmYoMikgLSAoZG91YmxlKWJm KDEpKlNmKDIsMCkpKSk7CisgCisgICAgICAgICAgICAgICAgICAgICB0WzJdID0gKGZsb2F0KShk KgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChTZigwLDApKihTZigxLDEpKmJmKDIpIC0g YmYoMSkqU2YoMiwxKSkgLQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZigwLDEpKihT ZigxLDApKmJmKDIpIC0gYmYoMSkqU2YoMiwwKSkgKworLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZigwKSooU2YoMSwwKSpTZigyLDEpIC0gU2YoMSwxKSpTZigyLDApKSkpOworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIChTZigwLDApKigoZG91YmxlKVNmKDEsMSkqYmYoMikgLSAo ZG91YmxlKWJmKDEpKlNmKDIsMSkpIC0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Yo MCwxKSooKGRvdWJsZSlTZigxLDApKmJmKDIpIC0gKGRvdWJsZSliZigxKSpTZigyLDApKSArCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJmKDApKigoZG91YmxlKVNmKDEsMCkqU2YoMiwx KSAtIChkb3VibGUpU2YoMSwxKSpTZigyLDApKSkpOworIAorICAgICAgICAgICAgICAgICAgICAg RGYoMCwwKSA9IHRbMF07CisgICAgICAgICAgICAgICAgICAgICBEZigxLDApID0gdFsxXTsKK2Rp ZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2NvcmUvc3JjL21hdGhmdW5jcy5jcHAgb3BlbmN2 L21vZHVsZXMvY29yZS9zcmMvbWF0aGZ1bmNzLmNwcAorLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVz L2NvcmUvc3JjL21hdGhmdW5jcy5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAx MDAKKysrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL3NyYy9tYXRoZnVuY3MuY3BwCTIwMTEtMDUtMjYg MTI6NTY6MTMuNTY0MDkzMDAzICswMjAwCitAQCAtNzczLDcgKzc3Myw4IEBACisgCisgCisgLy8g dGhlIGNvZGUgYmVsb3cgdXNlcyBfbW1fY2FzdCogaW50cmluc2ljcywgd2hpY2ggYXJlIG5vdCBh dmlhbGFibGUgb24gVlMyMDA1CistI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPCAx NTAwCisrI2lmIChkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSIDwgMTUwMCkgfHwgXAorKyAg ICAoIWRlZmluZWQgX19BUFBMRV9fICYmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18qMTAw ICsgX19HTlVDX01JTk9SX18gPCA0MDIpCisgI3VuZGVmIENWX1NTRTIKKyAjZGVmaW5lIENWX1NT RTIgMAorICNlbmRpZiAgICAKK2RpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2NvcmUvc3Jj L3JhbmQuY3BwIG9wZW5jdi9tb2R1bGVzL2NvcmUvc3JjL3JhbmQuY3BwCistLS0gT3BlbkNWLTIu Mi4wL21vZHVsZXMvY29yZS9zcmMvcmFuZC5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAw MDAgKzAxMDAKKysrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL3NyYy9yYW5kLmNwcAkyMDExLTA1LTI2 IDEyOjU2OjEzLjU1NjA5MzAwMyArMDIwMAorQEAgLTYwLDcgKzYwLDcgQEAKKyAgICBjYXJyeSA9 IHRlbXAgLyAoMl4zMikKKyAqLworIAorLSNkZWZpbmUgIFJOR19ORVhUKHgpICAgICgodWludDY0 KSh1bnNpZ25lZCkoeCkqUk5HOjpBICsgKCh4KSA+PiAzMikpCisrI2RlZmluZSAgUk5HX05FWFQo eCkgICAgKCh1aW50NjQpKHVuc2lnbmVkKSh4KSpDVl9STkdfQ09FRkYgKyAoKHgpID4+IDMyKSkK KyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXAorICogICAgICAgICAgICAgICAg ICAgICAgICAgICBQc2V1ZG8tUmFuZG9tIE51bWJlciBHZW5lcmF0b3JzIChQUk5HcykgICAgICAg ICAgICAgICAgICAgICAqCitkaWZmIC11ciBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9mZWF0dXJlczJk L3NyYy9zaWZ0LmNwcCBvcGVuY3YvbW9kdWxlcy9mZWF0dXJlczJkL3NyYy9zaWZ0LmNwcAorLS0t IE9wZW5DVi0yLjIuMC9tb2R1bGVzL2ZlYXR1cmVzMmQvc3JjL3NpZnQuY3BwCTIwMTAtMTItMDUg MDQ6MzU6MjQuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbmN2L21vZHVsZXMvZmVhdHVyZXMyZC9z cmMvc2lmdC5jcHAJMjAxMS0wNS0yNiAxMjo1Njo0MC4zNTQwOTMwMDIgKzAyMDAKK0BAIC00OCwx NCArNDgsMTUgQEAKKyAKKyAjaW5jbHVkZSAicHJlY29tcC5ocHAiCisgCistI2lmZGVmIF9fYXJt X18KKy0jZGVmaW5lIEFSTV9OT19TSUZUCistI2VuZGlmCistCistI2lmZGVmIEFORFJPSUQKKy0j dW5kZWYgIEFSTV9OT19TSUZUCistI2VuZGlmIC8vQU5EUk9JRAorKy8vI2lmZGVmIF9fYXJtX18K KysvLyNkZWZpbmUgQVJNX05PX1NJRlQKKysvLyNlbmRpZgorKworKy8vI2lmZGVmIEFORFJPSUQK KysvLyN1bmRlZiAgQVJNX05PX1NJRlQKKysvLyNlbmRpZiAvL0FORFJPSUQKKyAKKysjdW5kZWYg QVJNX05PX1NJRlQKKyAjaWZuZGVmIEFSTV9OT19TSUZUCisgCisgI2luY2x1ZGUgPGlvc3RyZWFt PgorZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvZmZtcGVnL0NNYWtlTGlzdHMudHh0IG9w ZW5jdi9tb2R1bGVzL2ZmbXBlZy9DTWFrZUxpc3RzLnR4dAorLS0tIE9wZW5DVi0yLjIuMC9tb2R1 bGVzL2ZmbXBlZy9DTWFrZUxpc3RzLnR4dAkyMDEwLTEyLTA1IDA0OjM1OjI0LjAwMDAwMDAwMCAr MDEwMAorKysrIG9wZW5jdi9tb2R1bGVzL2ZmbXBlZy9DTWFrZUxpc3RzLnR4dAkyMDExLTA1LTI2 IDEyOjU2OjQwLjkzMjA5MzAwMyArMDIwMAorQEAgLTQ1LDYgKzQ1LDcgQEAKKyAgICAgICAgICAg ICAgICAgICAgICAgREVGSU5FX1NZTUJPTCAiQ1ZBUElfRVhQT1JUUyIKKyAgICAgICAgICAgICAg ICAgICAgICAgQVJDSElWRV9PVVRQVVRfRElSRUNUT1JZICIke0NNQUtFX0JJTkFSWV9ESVJ9L2xp Yi8iCisgICAgICAgICAgICAgICAgICAgICAgIFJVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtD TUFLRV9CSU5BUllfRElSfS9iaW4vIgorKyAgICAgICAgICAgICAgICAgICAgICBMSU5LX0ZMQUdT ICIvTk9ERUZBVUxUTElCOmxpYmMgL0RFQlVHIgorICAgICAgICAgICAgICAgICAgICAgICApCisg CisgaW5zdGFsbChUQVJHRVRTICR7dGhlX3RhcmdldH0KK2RpZmYgLXVyIE9wZW5DVi0yLjIuMC9t b2R1bGVzL2dwdS9zcmMvY3VkYS9zdGVyZW9ibS5jdSBvcGVuY3YvbW9kdWxlcy9ncHUvc3JjL2N1 ZGEvc3RlcmVvYm0uY3UKKy0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9ncHUvc3JjL2N1ZGEvc3Rl cmVvYm0uY3UJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuY3Yv bW9kdWxlcy9ncHUvc3JjL2N1ZGEvc3RlcmVvYm0uY3UJMjAxMS0wNS0yNiAxMjo1NjoxOC4zMDkw OTMwMDIgKzAyMDAKK0BAIC0yNTIsNyArMjUyLDcgQEAKKyAgICAgICAgIGZvcih1aW50ICpwdHIg PSBtaW5TU0RJbWFnZTsgcHRyICE9IG1pblNTREltYWdlX2VuZDsgcHRyICs9IG1pbnNzZF9zdGVw ICkNCisgICAgICAgICAgICAgKnB0ciA9IDB4RkZGRkZGRkY7DQorICAgICB9Ki8NCistICAgIGlu dCBlbmRfcm93ID0gbWluKFJPV1NwZXJUSFJFQUQsIGNoZWlnaHQgLSBZKTsNCisrICAgIGludCBl bmRfcm93ID0gbWluKFJPV1NwZXJUSFJFQUQsIGNoZWlnaHQgLSBZIC0gUkFESVVTKTsNCisgICAg IGludCB5X3RleDsNCisgICAgIGludCB4X3RleCA9IFggLSBSQURJVVM7DQorIA0KK2RpZmYgLXVy IE9wZW5DVi0yLjIuMC9tb2R1bGVzL2dwdS9zcmMvc3RlcmVvYm1fZ3B1LmNwcCBvcGVuY3YvbW9k dWxlcy9ncHUvc3JjL3N0ZXJlb2JtX2dwdS5jcHAKKy0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9n cHUvc3JjL3N0ZXJlb2JtX2dwdS5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAx MDAKKysrKyBvcGVuY3YvbW9kdWxlcy9ncHUvc3JjL3N0ZXJlb2JtX2dwdS5jcHAJMjAxMS0wNS0y NiAxMjo1NjoxOC40NjgwOTMwMDIgKzAyMDAKK0BAIC02Miw3ICs2Miw3IEBACisgICAgIHsNCisg ICAgICAgICAvL2V4dGVybiAiQyIgdm9pZCBzdGVyZW9CTV9HUFUoY29uc3QgRGV2TWVtMkQmIGxl ZnQsIGNvbnN0IERldk1lbTJEJiByaWdodCwgY29uc3QgRGV2TWVtMkQmIGRpc3AsIGludCBuZGlz cCwgaW50IHdpbnN6LCBjb25zdCBEZXZNZW0yRF88dWludD4mIG1pblNTRF9idWYpOw0KKyAgICAg ICAgIGV4dGVybiAiQyIgdm9pZCBzdGVyZW9CTV9HUFUoY29uc3QgRGV2TWVtMkQmIGxlZnQsIGNv bnN0IERldk1lbTJEJiByaWdodCwgY29uc3QgRGV2TWVtMkQmIGRpc3AsIGludCBuZGlzcCwgaW50 IHdpbnN6LCBjb25zdCBEZXZNZW0yRF88dWludD4mIG1pblNTRF9idWYsIGN1ZGFTdHJlYW1fdCAm IHN0cmVhbSk7DQorLSAgICAgICAgZXh0ZXJuICJDIiB2b2lkIHByZWZpbHRlcl94c29iZWwoY29u c3QgRGV2TWVtMkQmIGlucHV0LCBjb25zdCBEZXZNZW0yRCBvdXRwdXQsIGludCBwcmVmaWx0ZXJD YXAgLyo9IDMxKi8sIGN1ZGFTdHJlYW1fdCAmIHN0cmVhbSk7DQorKyAgICAgICAgZXh0ZXJuICJD IiB2b2lkIHByZWZpbHRlcl94c29iZWwoY29uc3QgRGV2TWVtMkQmIGlucHV0LCBjb25zdCBEZXZN ZW0yRCYgb3V0cHV0LCBpbnQgcHJlZmlsdGVyQ2FwIC8qPSAzMSovLCBjdWRhU3RyZWFtX3QgJiBz dHJlYW0pOw0KKyAgICAgICAgIGV4dGVybiAiQyIgdm9pZCBwb3N0ZmlsdGVyX3RleHR1cmVuZXNz KGNvbnN0IERldk1lbTJEJiBpbnB1dCwgaW50IHdpbnN6LCBmbG9hdCBhdmdUZXh0dXJlbmVzc1Ro cmVzaG9sZCwgY29uc3QgRGV2TWVtMkQmIGRpc3AsIGN1ZGFTdHJlYW1fdCAmIHN0cmVhbSk7DQor ICAgICB9DQorIH19DQorZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvaGlnaGd1aS9DTWFr ZUxpc3RzLnR4dCBvcGVuY3YvbW9kdWxlcy9oaWdoZ3VpL0NNYWtlTGlzdHMudHh0CistLS0gT3Bl bkNWLTIuMi4wL21vZHVsZXMvaGlnaGd1aS9DTWFrZUxpc3RzLnR4dAkyMDEwLTEyLTA1IDA0OjM1 OjI0LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5jdi9tb2R1bGVzL2hpZ2hndWkvQ01ha2VMaXN0 cy50eHQJMjAxMS0wNS0yNiAxMjo1NjowMi44MDcwOTMwMDMgKzAyMDAKK0BAIC0yNTcsNyArMjU3 LDcgQEAKKyAJKQorIAorIGlmKE1TVkMpCistCXNldF90YXJnZXRfcHJvcGVydGllcygke3RoZV90 YXJnZXR9IFBST1BFUlRJRVMgTElOS19GTEFHUyAiL05PREVGQVVMVExJQjphdGx0aHVuay5saWIi KQorKwlzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHt0aGVfdGFyZ2V0fSBQUk9QRVJUSUVTIExJTktf RkxBR1MgIi9OT0RFRkFVTFRMSUI6YXRsdGh1bmsubGliIC9OT0RFRkFVTFRMSUI6YXRsc2QubGli IC9ERUJVRyIpCisgZW5kaWYoTVNWQykKKyAKKyAjIERlcGVuZGVuY2llcyBvZiB0aGlzIHRhcmdl dDoKK2RpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2hpZ2hndWkvc3JjL2NhcC5jcHAgb3Bl bmN2L21vZHVsZXMvaGlnaGd1aS9zcmMvY2FwLmNwcAorLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVz L2hpZ2hndWkvc3JjL2NhcC5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAK KysrKyBvcGVuY3YvbW9kdWxlcy9oaWdoZ3VpL3NyYy9jYXAuY3BwCTIwMTEtMDUtMjYgMTI6NTY6 MDIuNzcwMDkzMDAzICswMjAwCitAQCAtNTIsMTAgKzUyLDEwIEBACisgbmFtZXNwYWNlIGN2Cisg eworIAorLXRlbXBsYXRlPD4gaW5saW5lIHZvaWQgUHRyPEN2Q2FwdHVyZT46OmRlbGV0ZV9vYmoo KQorK3RlbXBsYXRlPD4gdm9pZCBQdHI8Q3ZDYXB0dXJlPjo6ZGVsZXRlX29iaigpCisgeyBjdlJl bGVhc2VDYXB0dXJlKCZvYmopOyB9CisgCistdGVtcGxhdGU8PiBpbmxpbmUgdm9pZCBQdHI8Q3ZW aWRlb1dyaXRlcj46OmRlbGV0ZV9vYmooKQorK3RlbXBsYXRlPD4gdm9pZCBQdHI8Q3ZWaWRlb1dy aXRlcj46OmRlbGV0ZV9vYmooKQorIHsgY3ZSZWxlYXNlVmlkZW9Xcml0ZXIoJm9iaik7IH0KKyAK KyB9CitAQCAtMTcxLDcgKzE3MSw3IEBACisgICAgICAgICAgICAgaWYgKGNhcHR1cmUpCisgICAg ICAgICAgICAgICAgIHJldHVybiBjYXB0dXJlOworICAgICAgICAgI2VuZGlmCistICAgICAgICAj aWYgZGVmaW5lZCAoSEFWRV9DQU1WNEwpIHx8IGRlZmluZWQgKEhBVkVfQ0FNVjRMMikKKysgICAg ICAgICNpZiBkZWZpbmVkIEhBVkVfTElCVjRMIHx8IChkZWZpbmVkIChIQVZFX0NBTVY0TCkgJiYg ZGVmaW5lZCAoSEFWRV9DQU1WNEwyKSkKKyAgICAgICAgICAgICBjYXB0dXJlID0gY3ZDcmVhdGVD YW1lcmFDYXB0dXJlX1Y0TCAoaW5kZXgpOworICAgICAgICAgICAgIGlmIChjYXB0dXJlKQorICAg ICAgICAgICAgICAgICByZXR1cm4gY2FwdHVyZTsKK2RpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1 bGVzL2hpZ2hndWkvc3JjL2NhcF9kc2hvdy5jcHAgb3BlbmN2L21vZHVsZXMvaGlnaGd1aS9zcmMv Y2FwX2RzaG93LmNwcAorLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2hpZ2hndWkvc3JjL2NhcF9k c2hvdy5jcHAJMjAxMC0xMi0wNSAwNDozNToyNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuY3Yv bW9kdWxlcy9oaWdoZ3VpL3NyYy9jYXBfZHNob3cuY3BwCTIwMTEtMDUtMjYgMTI6NTY6MDIuNzg5 MDkzMDAzICswMjAwCitAQCAtMTg0LDYgKzE4NCw3IEBACisgfQorIAorICNpZmRlZiBfTVNDX1ZF UgorKyNwcmFnbWEgY29tbWVudChsaWIsICJzdHJtaWlkcy5saWIiKQorICNpZiBkZWZpbmVkIF9N X1g2NAorICNwcmFnbWEgY29tbWVudChsaWIsICJ2aWRlb0lucHV0NjQubGliIikKKyAjZWxzZQor ZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvaGlnaGd1aS9zcmMvY2FwX2xpYnY0bC5jcHAg b3BlbmN2L21vZHVsZXMvaGlnaGd1aS9zcmMvY2FwX2xpYnY0bC5jcHAKKy0tLSBPcGVuQ1YtMi4y LjAvbW9kdWxlcy9oaWdoZ3VpL3NyYy9jYXBfbGlidjRsLmNwcAkyMDEwLTEyLTA1IDA0OjM1OjI1 LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5jdi9tb2R1bGVzL2hpZ2hndWkvc3JjL2NhcF9saWJ2 NGwuY3BwCTIwMTEtMDUtMjYgMTI6NTY6MDIuNzk2MDkzMDAzICswMjAwCitAQCAtMjI0LDcgKzIy NCw3IEBACisgI2luY2x1ZGUgImhpZ2hndWkuaCIKKyAjaW5jbHVkZSAicHJlY29tcC5ocHAiCisg CistI2lmICFkZWZpbmVkIFdJTjMyICYmIGRlZmluZWQgSEFWRV9DQU1WNEwgJiYgZGVmaW5lZCBI QVZFX0NBTVY0TDIKKysjaWYgIWRlZmluZWQgV0lOMzIgJiYgZGVmaW5lZCBIQVZFX0xJQlY0TAor IAorICNkZWZpbmUgQ0xFQVIoeCkgbWVtc2V0ICgmKHgpLCAwLCBzaXplb2YgKHgpKQorIAorQEAg LTI0MSw4ICsyNDEsMTIgQEAKKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lz L2lvY3RsLmg+CisgCisrI2lmZGVmIEhBVkVfQ0FNVjRMCisgI2luY2x1ZGUgPGxpbnV4L3ZpZGVv ZGV2Lmg+CisrI2VuZGlmCisrI2lmZGVmIEhBVkVfQ0FNVjRMMgorICNpbmNsdWRlIDxsaW51eC92 aWRlb2RldjIuaD4KKysjZW5kaWYKKyAKKyAjaW5jbHVkZSA8bGlidjRsMS5oPgorICNpbmNsdWRl IDxsaWJ2NGwyLmg+CitkaWZmIC11ciBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9oaWdoZ3VpL3NyYy9n cmZtdF9wbmcuY3BwIG9wZW5jdi9tb2R1bGVzL2hpZ2hndWkvc3JjL2dyZm10X3BuZy5jcHAKKy0t LSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9oaWdoZ3VpL3NyYy9ncmZtdF9wbmcuY3BwCTIwMTAtMTIt MDUgMDQ6MzU6MjUuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbmN2L21vZHVsZXMvaGlnaGd1aS9z cmMvZ3JmbXRfcG5nLmNwcAkyMDExLTA1LTI2IDEyOjU2OjAyLjc5NzA5MzAwMyArMDIwMAorQEAg LTIyMyw4ICsyMjMsMTIgQEAKKyAgICAgICAgICAgICAgICAgcG5nX3NldF9wYWxldHRlX3RvX3Jn YiggcG5nX3B0ciApOworIAorICAgICAgICAgICAgIGlmKCBtX2NvbG9yX3R5cGUgPT0gUE5HX0NP TE9SX1RZUEVfR1JBWSAmJiBtX2JpdF9kZXB0aCA8IDggKQorKyNpZiBQTkdfTElCUE5HX1ZFUl9N QUpPUioxMDAgKyBQTkdfTElCUE5HX1ZFUl9NSU5PUiA+PSAxMDQKKyAgICAgICAgICAgICAgICAg cG5nX3NldF9leHBhbmRfZ3JheV8xXzJfNF90b184KCBwbmdfcHRyICk7CistCisrI2Vsc2UKKysg ICAgICAgICAgICAgICAgcG5nX3NldF9ncmF5XzFfMl80X3RvXzgoIHBuZ19wdHIgKTsKKysjZW5k aWYKKysgICAgICAgICAgICAKKyAgICAgICAgICAgICBpZiggQ1ZfTUFUX0NOKG1fdHlwZSkgPiAx ICYmIGNvbG9yICkKKyAgICAgICAgICAgICAgICAgcG5nX3NldF9iZ3IoIHBuZ19wdHIgKTsgLy8g Y29udmVydCBSR0IgdG8gQkdSCisgICAgICAgICAgICAgZWxzZSBpZiggY29sb3IgKQorZGlmZiAt dXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvaGlnaGd1aS9zcmMvcHJlY29tcC5ocHAgb3BlbmN2L21v ZHVsZXMvaGlnaGd1aS9zcmMvcHJlY29tcC5ocHAKKy0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9o aWdoZ3VpL3NyYy9wcmVjb21wLmhwcAkyMDEwLTEyLTA1IDA0OjM1OjI1LjAwMDAwMDAwMCArMDEw MAorKysrIG9wZW5jdi9tb2R1bGVzL2hpZ2hndWkvc3JjL3ByZWNvbXAuaHBwCTIwMTEtMDUtMjYg MTI6NTY6MDIuNzkzMDkzMDAzICswMjAwCitAQCAtNTgsOSArNTgsOCBAQAorICNpbmNsdWRlIDxj dHlwZS5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAKKy0jaWYgIWRlZmluZWQgV0lOMzIgJiYg IWRlZmluZWQgX1dJTjMyCisgI2luY2x1ZGUgImN2Y29uZmlnLmgiCistI2Vsc2UKKysjaWYgZGVm aW5lZCBXSU4zMiB8fCBkZWZpbmVkIF9XSU4zMgorIHZvaWQgIEZpbGxCaXRtYXBJbmZvKCBCSVRN QVBJTkZPKiBibWksIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJwcCwgaW50IG9yaWdpbiAp OworICNlbmRpZgorIAorZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvaW1ncHJvYy9pbmNs dWRlL29wZW5jdjIvaW1ncHJvYy9pbWdwcm9jLmhwcCBvcGVuY3YvbW9kdWxlcy9pbWdwcm9jL2lu Y2x1ZGUvb3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2MuaHBwCistLS0gT3BlbkNWLTIuMi4wL21vZHVs ZXMvaW1ncHJvYy9pbmNsdWRlL29wZW5jdjIvaW1ncHJvYy9pbWdwcm9jLmhwcAkyMDEwLTEyLTA1 IDA0OjM1OjI1LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5jdi9tb2R1bGVzL2ltZ3Byb2MvaW5j bHVkZS9vcGVuY3YyL2ltZ3Byb2MvaW1ncHJvYy5ocHAJMjAxMS0wNS0yNiAxMjo1NjoyMi41OTQw OTMwMDMgKzAyMDAKK0BAIC0zNDgsOCArMzQ4LDEwIEBACisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplPXRydWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBib3JkZXJUeXBlPUJPUkRF Ul9ERUZBVUxUKTsKKyAvLyEgdHlwZSBvZiBtb3JwaG9sb2dpY2FsIG9wZXJhdGlvbgorLWVudW0g eyBNT1JQSF9FUk9ERT0wLCBNT1JQSF9ESUxBVEU9MSwgTU9SUEhfT1BFTj0yLCBNT1JQSF9DTE9T RT0zLAorLSAgICAgICBNT1JQSF9HUkFESUVOVD00LCBNT1JQSF9UT1BIQVQ9NSwgTU9SUEhfQkxB Q0tIQVQ9NiB9OworK2VudW0geyBNT1JQSF9FUk9ERT1DVl9NT1BfRVJPREUsIE1PUlBIX0RJTEFU RT1DVl9NT1BfRElMQVRFLAorKyAgICAgICBNT1JQSF9PUEVOPUNWX01PUF9PUEVOLCBNT1JQSF9D TE9TRT1DVl9NT1BfQ0xPU0UsCisrICAgICAgIE1PUlBIX0dSQURJRU5UPUNWX01PUF9HUkFESUVO VCwgTU9SUEhfVE9QSEFUPUNWX01PUF9UT1BIQVQsCisrICAgICAgIE1PUlBIX0JMQUNLSEFUPUNW X01PUF9CTEFDS0hBVCB9OworIAorIC8vISByZXR1cm5zIGhvcml6b250YWwgMUQgbW9ycGhvbG9n aWNhbCBmaWx0ZXIKKyBDVl9FWFBPUlRTIFB0cjxCYXNlUm93RmlsdGVyPiBnZXRNb3JwaG9sb2d5 Um93RmlsdGVyKGludCBvcCwgaW50IHR5cGUsIGludCBrc2l6ZSwgaW50IGFuY2hvcj0tMSk7CitA QCAtNTAwLDEzICs1MDIsMTMgQEAKKyAvLyEgaW50ZXJwb2xhdGlvbiBhbGdvcml0aG0KKyBlbnVt CisgeworLSAgICBJTlRFUl9ORUFSRVNUPTAsIC8vITwgbmVhcmVzdCBuZWlnaGJvciBpbnRlcnBv bGF0aW9uCistICAgIElOVEVSX0xJTkVBUj0xLCAvLyE8IGJpbGluZWFyIGludGVycG9sYXRpb24K Ky0gICAgSU5URVJfQ1VCSUM9MiwgLy8hPCBiaWN1YmljIGludGVycG9sYXRpb24KKy0gICAgSU5U RVJfQVJFQT0zLCAvLyE8IGFyZWEtYmFzZWQgKG9yIHN1cGVyKSBpbnRlcnBvbGF0aW9uCistICAg IElOVEVSX0xBTkNaT1M0PTQsIC8vITwgTGFuY3pvcyBpbnRlcnBvbGF0aW9uIG92ZXIgOHg4IG5l aWdoYm9yaG9vZAorKyAgICBJTlRFUl9ORUFSRVNUPUNWX0lOVEVSX05OLCAvLyE8IG5lYXJlc3Qg bmVpZ2hib3IgaW50ZXJwb2xhdGlvbgorKyAgICBJTlRFUl9MSU5FQVI9Q1ZfSU5URVJfTElORUFS LCAvLyE8IGJpbGluZWFyIGludGVycG9sYXRpb24KKysgICAgSU5URVJfQ1VCSUM9Q1ZfSU5URVJf Q1VCSUMsIC8vITwgYmljdWJpYyBpbnRlcnBvbGF0aW9uCisrICAgIElOVEVSX0FSRUE9Q1ZfSU5U RVJfQVJFQSwgLy8hPCBhcmVhLWJhc2VkIChvciBzdXBlcikgaW50ZXJwb2xhdGlvbgorKyAgICBJ TlRFUl9MQU5DWk9TND1DVl9JTlRFUl9MQU5DWk9TNCwgLy8hPCBMYW5jem9zIGludGVycG9sYXRp b24gb3ZlciA4eDggbmVpZ2hib3Job29kCisgICAgIElOVEVSX01BWD03LAorLSAgICBXQVJQX0lO VkVSU0VfTUFQPTE2CisrICAgIFdBUlBfSU5WRVJTRV9NQVA9Q1ZfV0FSUF9JTlZFUlNFX01BUAor IH07CisgCisgLy8hIHJlc2l6ZXMgdGhlIGltYWdlCitAQCAtNTc0LDggKzU3NiwxMCBAQAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFscGhhLCBjb25zdCBN YXQmIG1hc2s9TWF0KCkgKTsKKyAgICAgCisgLy8hIHR5cGUgb2YgdGhlIHRocmVzaG9sZCBvcGVy YXRpb24KKy1lbnVtIHsgVEhSRVNIX0JJTkFSWT0wLCBUSFJFU0hfQklOQVJZX0lOVj0xLCBUSFJF U0hfVFJVTkM9MiwgVEhSRVNIX1RPWkVSTz0zLAorLSAgICAgICBUSFJFU0hfVE9aRVJPX0lOVj00 LCBUSFJFU0hfTUFTSz03LCBUSFJFU0hfT1RTVT04IH07CisrZW51bSB7IFRIUkVTSF9CSU5BUlk9 Q1ZfVEhSRVNIX0JJTkFSWSwgVEhSRVNIX0JJTkFSWV9JTlY9Q1ZfVEhSRVNIX0JJTkFSWV9JTlYs CisrICAgICAgIFRIUkVTSF9UUlVOQz1DVl9USFJFU0hfVFJVTkMsIFRIUkVTSF9UT1pFUk89Q1Zf VEhSRVNIX1RPWkVSTywKKysgICAgICAgVEhSRVNIX1RPWkVST19JTlY9Q1ZfVEhSRVNIX1RPWkVS T19JTlYsIFRIUkVTSF9NQVNLPUNWX1RIUkVTSF9NQVNLLAorKyAgICAgICBUSFJFU0hfT1RTVT1D Vl9USFJFU0hfT1RTVSB9OworIAorIC8vISBhcHBsaWVzIGZpeGVkIHRocmVzaG9sZCB0byB0aGUg aW1hZ2UKKyBDVl9FWFBPUlRTX1cgZG91YmxlIHRocmVzaG9sZCggY29uc3QgTWF0JiBzcmMsIENW X09VVCBNYXQmIGRzdCwgZG91YmxlIHRocmVzaCwgZG91YmxlIG1heHZhbCwgaW50IHR5cGUgKTsK K0BAIC02NzIsMTcgKzY3NiwyMSBAQAorICAgICAgICAgICAgICAgICAgICAgVGVybUNyaXRlcmlh IHRlcm1jcml0PVRlcm1Dcml0ZXJpYShUZXJtQ3JpdGVyaWE6Ok1BWF9JVEVSK1Rlcm1Dcml0ZXJp YTo6RVBTLDUsMSkgKTsKKyAKKyAvLyEgY2xhc3Mgb2YgdGhlIHBpeGVsIGluIEdyYWJDdXQgYWxn b3JpdGhtCistZW51bSB7IEdDX0JHRCAgICA9IDAsICAvLyE8IGJhY2tncm91bmQKKy0gICAgICAg R0NfRkdEICAgID0gMSwgIC8vITwgZm9yZWdyb3VuZAorLSAgICAgICBHQ19QUl9CR0QgPSAyLCAg Ly8hPCBtb3N0IHByb2JhYmx5IGJhY2tncm91bmQKKy0gICAgICAgR0NfUFJfRkdEID0gMyAgIC8v ITwgbW9zdCBwcm9iYWJseSBmb3JlZ3JvdW5kIAorLSAgICAgfTsKKytlbnVtCisreworKyAgICBH Q19CR0QgICAgPSAwLCAgLy8hPCBiYWNrZ3JvdW5kCisrICAgIEdDX0ZHRCAgICA9IDEsICAvLyE8 IGZvcmVncm91bmQKKysgICAgR0NfUFJfQkdEID0gMiwgIC8vITwgbW9zdCBwcm9iYWJseSBiYWNr Z3JvdW5kCisrICAgIEdDX1BSX0ZHRCA9IDMgICAvLyE8IG1vc3QgcHJvYmFibHkgZm9yZWdyb3Vu ZCAKKyt9OworIAorIC8vISBHcmFiQ3V0IGFsZ29yaXRobSBmbGFncworLWVudW0geyBHQ19JTklU X1dJVEhfUkVDVCAgPSAwLAorLSAgICAgICBHQ19JTklUX1dJVEhfTUFTSyAgPSAxLAorLSAgICAg ICBHQ19FVkFMICAgICAgICAgICAgPSAyCistICAgICB9OworK2VudW0KKyt7CisrICAgIEdDX0lO SVRfV0lUSF9SRUNUICA9IDAsCisrICAgIEdDX0lOSVRfV0lUSF9NQVNLICA9IDEsCisrICAgIEdD X0VWQUwgICAgICAgICAgICA9IDIKKyt9OworIAorIC8vISBzZWdtZW50cyB0aGUgaW1hZ2UgdXNp bmcgR3JhYkN1dCBhbGdvcml0aG0KKyBDVl9FWFBPUlRTX1cgdm9pZCBncmFiQ3V0KCBjb25zdCBN YXQmIGltZywgTWF0JiBtYXNrLCBSZWN0IHJlY3QsIAorQEAgLTY5Miw4ICs3MDAsOCBAQAorIC8v ISB0aGUgaW5wYWludGluZyBhbGdvcml0aG0KKyBlbnVtCisgeworLSAgICBJTlBBSU5UX05TPTAs IC8vIE5hdmllci1TdG9rZXMgYWxnb3JpdGhtCistICAgIElOUEFJTlRfVEVMRUE9MSAvLyBBLiBU ZWxlYSBhbGdvcml0aG0KKysgICAgSU5QQUlOVF9OUz1DVl9JTlBBSU5UX05TLCAvLyBOYXZpZXIt U3Rva2VzIGFsZ29yaXRobQorKyAgICBJTlBBSU5UX1RFTEVBPUNWX0lOUEFJTlRfVEVMRUEgLy8g QS4gVGVsZWEgYWxnb3JpdGhtCisgfTsKKyAKKyAvLyEgcmVzdG9yZXMgdGhlIGRhbWFnZWQgaW1h Z2UgYXJlYXMgdXNpbmcgb25lIG9mIHRoZSBhdmFpbGFibGUgaW50cGFpbnRpbmcgYWxnb3JpdGht cworQEAgLTc2NCwxOSArNzcyLDE5IEBACisgLy8hIG1vZGUgb2YgdGhlIGNvbnRvdXIgcmV0cmll dmFsIGFsZ29yaXRobQorIGVudW0KKyB7CistICAgIFJFVFJfRVhURVJOQUw9MCwgLy8hPCByZXRy aWV2ZSBvbmx5IHRoZSBtb3N0IGV4dGVybmFsICh0b3AtbGV2ZWwpIGNvbnRvdXJzCistICAgIFJF VFJfTElTVD0xLCAvLyE8IHJldHJpZXZlIGFsbCB0aGUgY29udG91cnMgd2l0aG91dCBhbnkgaGll cmFyY2hpY2FsIGluZm9ybWF0aW9uCistICAgIFJFVFJfQ0NPTVA9MiwgLy8hPCByZXRyaWV2ZSB0 aGUgY29ubmVjdGVkIGNvbXBvbmVudHMgKHRoYXQgY2FuIHBvc3NpYmx5IGJlIG5lc3RlZCkKKy0g ICAgUkVUUl9UUkVFPTMgLy8hPCByZXRyaWV2ZSBhbGwgdGhlIGNvbnRvdXJzIGFuZCB0aGUgd2hv bGUgaGllcmFyY2h5CisrICAgIFJFVFJfRVhURVJOQUw9Q1ZfUkVUUl9FWFRFUk5BTCwgLy8hPCBy ZXRyaWV2ZSBvbmx5IHRoZSBtb3N0IGV4dGVybmFsICh0b3AtbGV2ZWwpIGNvbnRvdXJzCisrICAg IFJFVFJfTElTVD1DVl9SRVRSX0xJU1QsIC8vITwgcmV0cmlldmUgYWxsIHRoZSBjb250b3VycyB3 aXRob3V0IGFueSBoaWVyYXJjaGljYWwgaW5mb3JtYXRpb24KKysgICAgUkVUUl9DQ09NUD1DVl9S RVRSX0NDT01QLCAvLyE8IHJldHJpZXZlIHRoZSBjb25uZWN0ZWQgY29tcG9uZW50cyAodGhhdCBj YW4gcG9zc2libHkgYmUgbmVzdGVkKQorKyAgICBSRVRSX1RSRUU9Q1ZfUkVUUl9UUkVFIC8vITwg cmV0cmlldmUgYWxsIHRoZSBjb250b3VycyBhbmQgdGhlIHdob2xlIGhpZXJhcmNoeQorIH07Cisg CisgLy8hIHRoZSBjb250b3VyIGFwcHJveGltYXRpb24gYWxnb3JpdGhtCisgZW51bQorIHsKKy0g ICAgQ0hBSU5fQVBQUk9YX05PTkU9MCwKKy0gICAgQ0hBSU5fQVBQUk9YX1NJTVBMRT0xLAorLSAg ICBDSEFJTl9BUFBST1hfVEM4OV9MMT0yLAorLSAgICBDSEFJTl9BUFBST1hfVEM4OV9LQ09TPTMK KysgICAgQ0hBSU5fQVBQUk9YX05PTkU9Q1ZfQ0hBSU5fQVBQUk9YX05PTkUsCisrIAlDSEFJTl9B UFBST1hfU0lNUExFPUNWX0NIQUlOX0FQUFJPWF9TSU1QTEUsCisrIAlDSEFJTl9BUFBST1hfVEM4 OV9MMT1DVl9DSEFJTl9BUFBST1hfVEM4OV9MMSwKKysgCUNIQUlOX0FQUFJPWF9UQzg5X0tDT1M9 Q1ZfQ0hBSU5fQVBQUk9YX1RDODlfS0NPUworIH07CisgCisgLy8hIHJldHJpZXZlcyBjb250b3Vy cyBhbmQgdGhlIGhpZXJhcmNoaWNhbCBpbmZvcm1hdGlvbiBmcm9tIGJsYWNrLW4td2hpdGUgaW1h Z2UuCitkaWZmIC11ciBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9pbWdwcm9jL2luY2x1ZGUvb3BlbmN2 Mi9pbWdwcm9jL3R5cGVzX2MuaCBvcGVuY3YvbW9kdWxlcy9pbWdwcm9jL2luY2x1ZGUvb3BlbmN2 Mi9pbWdwcm9jL3R5cGVzX2MuaAorLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2ltZ3Byb2MvaW5j bHVkZS9vcGVuY3YyL2ltZ3Byb2MvdHlwZXNfYy5oCTIwMTAtMTItMDUgMDQ6MzU6MjUuMDAwMDAw MDAwICswMTAwCisrKysgb3BlbmN2L21vZHVsZXMvaW1ncHJvYy9pbmNsdWRlL29wZW5jdjIvaW1n cHJvYy90eXBlc19jLmgJMjAxMS0wNS0yNiAxMjo1NjoyMi41OTUwOTMwMDMgKzAyMDAKK0BAIC0y MjEsNiArMjIxLDExIEBACisgICAgIENWX1lVVjJCR1IgICAgICA9IDg0LAorICAgICBDVl9ZVVYy UkdCICAgICAgPSA4NSwKKyAgICAgCisrICAgIENWX0JheWVyQkcyR1JBWSA9IDg2LAorKyAgICBD Vl9CYXllckdCMkdSQVkgPSA4NywKKysgICAgQ1ZfQmF5ZXJSRzJHUkFZID0gODgsCisrICAgIENW X0JheWVyR1IyR1JBWSA9IDg5LAorKyAgICAKKyAgICAgQ1ZfQ09MT1JDVlRfTUFYICA9MTAwCisg fTsKKyAKK2RpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2ltZ3Byb2Mvc3JjL2NvbG9yLmNw cCBvcGVuY3YvbW9kdWxlcy9pbWdwcm9jL3NyYy9jb2xvci5jcHAKKy0tLSBPcGVuQ1YtMi4yLjAv bW9kdWxlcy9pbWdwcm9jL3NyYy9jb2xvci5jcHAJMjAxMC0xMi0wNSAwNDozNToyNS4wMDAwMDAw MDAgKzAxMDAKKysrKyBvcGVuY3YvbW9kdWxlcy9pbWdwcm9jL3NyYy9jb2xvci5jcHAJMjAxMS0w NS0yNiAxMjo1NjozMC40NTQwOTMwMDIgKzAyMDAKK0BAIC0xNzM4LDYgKzE3MzgsMTQ3IEBACisg ICAgICAgICAKKyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIEJheWVyIFBhdHRlcm4gLT4g UkdCIGNvbnZlcnNpb24gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAKKytzdGF0aWMg dm9pZCBCYXllcjJHcmF5Xzh1KCBjb25zdCBNYXQmIHNyY21hdCwgTWF0JiBkc3RtYXQsIGludCBj b2RlICkKKyt7CisrICAgIGNvbnN0IGludCBSMlkgPSA0ODk5OworKyAgICBjb25zdCBpbnQgRzJZ ID0gOTYxNzsKKysgICAgY29uc3QgaW50IEIyWSA9IDE4Njg7CisrICAgIGNvbnN0IGludCBTSElG VCA9IDE0OworKyAgICAKKysgICAgY29uc3QgdWNoYXIqIGJheWVyMCA9IHNyY21hdC5kYXRhOwor KyAgICBpbnQgYmF5ZXJfc3RlcCA9IChpbnQpc3JjbWF0LnN0ZXA7CisrICAgIHVjaGFyKiBkc3Qw ID0gZHN0bWF0LmRhdGE7CisrICAgIGludCBkc3Rfc3RlcCA9IChpbnQpZHN0bWF0LnN0ZXA7Cisr ICAgIFNpemUgc2l6ZSA9IHNyY21hdC5zaXplKCk7CisrICAgIGludCBiY29lZmYgPSBCMlksIHJj b2VmZiA9IFIyWTsKKysgICAgaW50IHN0YXJ0X3dpdGhfZ3JlZW4gPSBjb2RlID09IENWX0JheWVy R0IyR1JBWSB8fCBjb2RlID09IENWX0JheWVyR1IyR1JBWTsKKysgICAgYm9vbCBicm93ID0gdHJ1 ZTsKKysjaWYgQ1ZfU1NFMiAgICAKKysgICAgYm9vbCBoYXZlU1NFMiA9IGNoZWNrSGFyZHdhcmVT dXBwb3J0KENWX0NQVV9TU0UyKTsKKysjZW5kaWYKKysgICAgCisrICAgIGlmKCBjb2RlICE9IENW X0JheWVyQkcyR1JBWSAmJiBjb2RlICE9IENWX0JheWVyR0IyR1JBWSApCisrICAgIHsKKysgICAg ICAgIGJyb3cgPSBmYWxzZTsKKysgICAgICAgIHN0ZDo6c3dhcChiY29lZmYsIHJjb2VmZik7Cisr ICAgIH0KKysgICAgCisrICAgIGRzdDAgKz0gZHN0X3N0ZXAgKyAxOworKyAgICBzaXplLmhlaWdo dCAtPSAyOworKyAgICBzaXplLndpZHRoIC09IDI7CisrICAgIAorKyAgICBmb3IoIDsgc2l6ZS5o ZWlnaHQtLSA+IDA7IGJheWVyMCArPSBiYXllcl9zdGVwLCBkc3QwICs9IGRzdF9zdGVwICkKKysg ICAgeworKyAgICAgICAgaW50IHQwLCB0MSwgdDI7CisrICAgICAgICBjb25zdCB1Y2hhciogYmF5 ZXIgPSBiYXllcjA7CisrICAgICAgICB1Y2hhciogZHN0ID0gZHN0MDsKKysgICAgICAgIGNvbnN0 IHVjaGFyKiBiYXllcl9lbmQgPSBiYXllciArIHNpemUud2lkdGg7CisrICAgICAgICAKKysgICAg ICAgIGlmKCBzaXplLndpZHRoIDw9IDAgKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGRzdFst MV0gPSBkc3Rbc2l6ZS53aWR0aF0gPSAwOworKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAg ICAgfQorKyAgICAgICAgCisrICAgICAgICBpZiggc3RhcnRfd2l0aF9ncmVlbiApCisrICAgICAg ICB7CisrICAgICAgICAgICAgdDAgPSAoYmF5ZXJbMV0gKyBiYXllcltiYXllcl9zdGVwKjIrMV0p KnJjb2VmZjsKKysgICAgICAgICAgICB0MSA9IChiYXllcltiYXllcl9zdGVwXSArIGJheWVyW2Jh eWVyX3N0ZXArMl0pKmJjb2VmZjsKKysgICAgICAgICAgICB0MiA9IGJheWVyW2JheWVyX3N0ZXAr MV0qKDIqRzJZKTsKKysgICAgICAgICAgICAKKysgICAgICAgICAgICBkc3RbMF0gPSAodWNoYXIp Q1ZfREVTQ0FMRSh0MCArIHQxICsgdDIsIFNISUZUKzEpOworKyAgICAgICAgICAgIGJheWVyKys7 CisrICAgICAgICAgICAgZHN0Kys7CisrICAgICAgICB9CisrICAgICAgICAKKysjaWYgQ1ZfU1NF MgorKyAgICAgICAgaWYoIGhhdmVTU0UyICkKKysgICAgICAgIHsKKysgICAgICAgICAgICBfX20x MjhpIF9iMnkgPSBfbW1fc2V0MV9lcGkxNigoc2hvcnQpKHJjb2VmZioyKSk7CisrICAgICAgICAg ICAgX19tMTI4aSBfZzJ5ID0gX21tX3NldDFfZXBpMTYoKHNob3J0KShHMlkqMikpOworKyAgICAg ICAgICAgIF9fbTEyOGkgX3IyeSA9IF9tbV9zZXQxX2VwaTE2KChzaG9ydCkoYmNvZWZmKjIpKTsK KysgICAgICAgICAgICAKKysgICAgICAgICAgICBmb3IoIDsgYmF5ZXIgPD0gYmF5ZXJfZW5kIC0g MTg7IGJheWVyICs9IDE0LCBkc3QgKz0gMTQgKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgX19tMTI4aSByMCA9IF9tbV9sb2FkdV9zaTEyOCgoY29uc3QgX19tMTI4aSopYmF5ZXIp OworKyAgICAgICAgICAgICAgICBfX20xMjhpIHIxID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBf X20xMjhpKikoYmF5ZXIrYmF5ZXJfc3RlcCkpOworKyAgICAgICAgICAgICAgICBfX20xMjhpIHIy ID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhpKikoYmF5ZXIrYmF5ZXJfc3RlcCoyKSk7 CisrICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICBfX20xMjhpIGIxID0gX21tX2Fk ZF9lcGkxNihfbW1fc3JsaV9lcGkxNihfbW1fc2xsaV9lcGkxNihyMCwgOCksIDgpLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc3JsaV9lcGkxNihfbW1f c2xsaV9lcGkxNihyMiwgOCksIDgpKTsKKysgICAgICAgICAgICAgICAgX19tMTI4aSBiMCA9IF9t bV9hZGRfZXBpMTYoYjEsIF9tbV9zcmxpX3NpMTI4KGIxLCAyKSk7CisrICAgICAgICAgICAgICAg IGIxID0gX21tX3NsbGlfZXBpMTYoX21tX3NybGlfc2kxMjgoYjEsIDIpLCAxKTsKKysgICAgICAg ICAgICAgICAgCisrICAgICAgICAgICAgICAgIF9fbTEyOGkgZzAgPSBfbW1fYWRkX2VwaTE2KF9t bV9zcmxpX2VwaTE2KHIwLCA4KSwgX21tX3NybGlfZXBpMTYocjIsIDgpKTsKKysgICAgICAgICAg ICAgICAgX19tMTI4aSBnMSA9IF9tbV9zcmxpX2VwaTE2KF9tbV9zbGxpX2VwaTE2KHIxLCA4KSwg OCk7CisrICAgICAgICAgICAgICAgIGcwID0gX21tX2FkZF9lcGkxNihnMCwgX21tX2FkZF9lcGkx NihnMSwgX21tX3NybGlfc2kxMjgoZzEsIDIpKSk7CisrICAgICAgICAgICAgICAgIGcxID0gX21t X3NsbGlfZXBpMTYoX21tX3NybGlfc2kxMjgoZzEsIDIpLCAyKTsKKysgICAgICAgICAgICAgICAg CisrICAgICAgICAgICAgICAgIHIwID0gX21tX3NybGlfZXBpMTYocjEsIDgpOworKyAgICAgICAg ICAgICAgICByMSA9IF9tbV9zbGxpX2VwaTE2KF9tbV9hZGRfZXBpMTYocjAsIF9tbV9zcmxpX3Np MTI4KHIwLCAyKSksIDEpOworKyAgICAgICAgICAgICAgICByMCA9IF9tbV9zbGxpX2VwaTE2KHIw LCAyKTsKKysgICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgICAgIGcwID0gX21tX2FkZF9l cGkxNihfbW1fbXVsaGlfZXBpMTYoYjAsIF9iMnkpLCBfbW1fbXVsaGlfZXBpMTYoZzAsIF9nMnkp KTsKKysgICAgICAgICAgICAgICAgZzEgPSBfbW1fYWRkX2VwaTE2KF9tbV9tdWxoaV9lcGkxNihi MSwgX2IyeSksIF9tbV9tdWxoaV9lcGkxNihnMSwgX2cyeSkpOworKyAgICAgICAgICAgICAgICBn MCA9IF9tbV9hZGRfZXBpMTYoZzAsIF9tbV9tdWxoaV9lcGkxNihyMCwgX3IyeSkpOworKyAgICAg ICAgICAgICAgICBnMSA9IF9tbV9hZGRfZXBpMTYoZzEsIF9tbV9tdWxoaV9lcGkxNihyMSwgX3Iy eSkpOworKyAgICAgICAgICAgICAgICBnMCA9IF9tbV9zcmxpX2VwaTE2KGcwLCAxKTsKKysgICAg ICAgICAgICAgICAgZzEgPSBfbW1fc3JsaV9lcGkxNihnMSwgMSk7CisrICAgICAgICAgICAgICAg IGcwID0gX21tX3BhY2t1c19lcGkxNihnMCwgZzApOworKyAgICAgICAgICAgICAgICBnMSA9IF9t bV9wYWNrdXNfZXBpMTYoZzEsIGcxKTsKKysgICAgICAgICAgICAgICAgZzAgPSBfbW1fdW5wYWNr bG9fZXBpOChnMCwgZzEpOworKyAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KChfX20x MjhpKilkc3QsIGcwKTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrI2VuZGlmCisrICAg ICAgICAKKysgICAgICAgIGZvciggOyBiYXllciA8PSBiYXllcl9lbmQgLSAyOyBiYXllciArPSAy LCBkc3QgKz0gMiApCisrICAgICAgICB7CisrICAgICAgICAgICAgdDAgPSAoYmF5ZXJbMF0gKyBi YXllclsyXSArIGJheWVyW2JheWVyX3N0ZXAqMl0gKyBiYXllcltiYXllcl9zdGVwKjIrMl0pKnJj b2VmZjsKKysgICAgICAgICAgICB0MSA9IChiYXllclsxXSArIGJheWVyW2JheWVyX3N0ZXBdICsg YmF5ZXJbYmF5ZXJfc3RlcCsyXSArIGJheWVyW2JheWVyX3N0ZXAqMisxXSkqRzJZOworKyAgICAg ICAgICAgIHQyID0gYmF5ZXJbYmF5ZXJfc3RlcCsxXSooNCpiY29lZmYpOworKyAgICAgICAgICAg IGRzdFswXSA9ICh1Y2hhcilDVl9ERVNDQUxFKHQwICsgdDEgKyB0MiwgU0hJRlQrMik7CisrICAg ICAgICAgICAgCisrICAgICAgICAgICAgdDAgPSAoYmF5ZXJbMl0gKyBiYXllcltiYXllcl9zdGVw KjIrMl0pKnJjb2VmZjsKKysgICAgICAgICAgICB0MSA9IChiYXllcltiYXllcl9zdGVwKzFdICsg YmF5ZXJbYmF5ZXJfc3RlcCszXSkqYmNvZWZmOworKyAgICAgICAgICAgIHQyID0gYmF5ZXJbYmF5 ZXJfc3RlcCsyXSooMipHMlkpOworKyAgICAgICAgICAgIGRzdFsxXSA9ICh1Y2hhcilDVl9ERVND QUxFKHQwICsgdDEgKyB0MiwgU0hJRlQrMSk7CisrICAgICAgICB9CisrICAgICAgICAKKysgICAg ICAgIGlmKCBiYXllciA8IGJheWVyX2VuZCApCisrICAgICAgICB7CisrICAgICAgICAgICAgdDAg PSAoYmF5ZXJbMF0gKyBiYXllclsyXSArIGJheWVyW2JheWVyX3N0ZXAqMl0gKyBiYXllcltiYXll cl9zdGVwKjIrMl0pKnJjb2VmZjsKKysgICAgICAgICAgICB0MSA9IChiYXllclsxXSArIGJheWVy W2JheWVyX3N0ZXBdICsgYmF5ZXJbYmF5ZXJfc3RlcCsyXSArIGJheWVyW2JheWVyX3N0ZXAqMisx XSkqRzJZOworKyAgICAgICAgICAgIHQyID0gYmF5ZXJbYmF5ZXJfc3RlcCsxXSooNCpiY29lZmYp OworKyAgICAgICAgICAgIGRzdFswXSA9ICh1Y2hhcilDVl9ERVNDQUxFKHQwICsgdDEgKyB0Miwg U0hJRlQrMik7CisrICAgICAgICAgICAgYmF5ZXIrKzsKKysgICAgICAgICAgICBkc3QrKzsKKysg ICAgICAgIH0KKysgICAgICAgIAorKyAgICAgICAgZHN0MFstMV0gPSBkc3QwWzBdOworKyAgICAg ICAgZHN0MFtzaXplLndpZHRoXSA9IGRzdDBbc2l6ZS53aWR0aC0xXTsKKysgICAgICAgIAorKyAg ICAgICAgYnJvdyA9ICFicm93OworKyAgICAgICAgc3RkOjpzd2FwKGJjb2VmZiwgcmNvZWZmKTsK KysgICAgICAgIHN0YXJ0X3dpdGhfZ3JlZW4gPSAhc3RhcnRfd2l0aF9ncmVlbjsKKysgICAgfQor KyAgICAKKysgICAgc2l6ZSA9IGRzdG1hdC5zaXplKCk7CisrICAgIGRzdDAgPSBkc3RtYXQuZGF0 YTsKKysgICAgaWYoIHNpemUuaGVpZ2h0ID4gMiApCisrICAgICAgICBmb3IoIGludCBpID0gMDsg aSA8IHNpemUud2lkdGg7IGkrKyApCisrICAgICAgICB7CisrICAgICAgICAgICAgZHN0MFtpXSA9 IGRzdDBbaSArIGRzdF9zdGVwXTsKKysgICAgICAgICAgICBkc3QwW2kgKyAoc2l6ZS5oZWlnaHQt MSkqZHN0X3N0ZXBdID0gZHN0MFtpICsgKHNpemUuaGVpZ2h0LTIpKmRzdF9zdGVwXTsKKysgICAg ICAgIH0KKysgICAgZWxzZQorKyAgICAgICAgZm9yKCBpbnQgaSA9IDA7IGkgPCBzaXplLndpZHRo OyBpKysgKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGRzdDBbaV0gPSBkc3QwW2kgKyAoc2l6 ZS5oZWlnaHQtMSkqZHN0X3N0ZXBdID0gMDsKKysgICAgICAgIH0KKyt9CisrCisrCisgc3RhdGlj IHZvaWQgQmF5ZXIyUkdCXzh1KCBjb25zdCBNYXQmIHNyY21hdCwgTWF0JiBkc3RtYXQsIGludCBj b2RlICkKKyB7CisgICAgIGNvbnN0IHVjaGFyKiBiYXllcjAgPSBzcmNtYXQuZGF0YTsKK0BAIC0x NzQ3LDI2ICsxODg4LDI4IEBACisgICAgIFNpemUgc2l6ZSA9IHNyY21hdC5zaXplKCk7CisgICAg IGludCBibHVlID0gY29kZSA9PSBDVl9CYXllckJHMkJHUiB8fCBjb2RlID09IENWX0JheWVyR0Iy QkdSID8gLTEgOiAxOworICAgICBpbnQgc3RhcnRfd2l0aF9ncmVlbiA9IGNvZGUgPT0gQ1ZfQmF5 ZXJHQjJCR1IgfHwgY29kZSA9PSBDVl9CYXllckdSMkJHUjsKKy0KKy0gICAgbWVtc2V0KCBkc3Qw LCAwLCBzaXplLndpZHRoKjMqc2l6ZW9mKGRzdDBbMF0pICk7CistICAgIG1lbXNldCggZHN0MCAr IChzaXplLmhlaWdodCAtIDEpKmRzdF9zdGVwLCAwLCBzaXplLndpZHRoKjMqc2l6ZW9mKGRzdDBb MF0pICk7CisrI2lmIENWX1NTRTIKKysgICAgYm9vbCBoYXZlU1NFMiA9IGNoZWNrSGFyZHdhcmVT dXBwb3J0KENWX0NQVV9TU0UyKTsKKysjZW5kaWYKKysgICAgCisgICAgIGRzdDAgKz0gZHN0X3N0 ZXAgKyAzICsgMTsKKyAgICAgc2l6ZS5oZWlnaHQgLT0gMjsKKyAgICAgc2l6ZS53aWR0aCAtPSAy OworLQorKyAgICAgICAgCisgICAgIGZvciggOyBzaXplLmhlaWdodC0tID4gMDsgYmF5ZXIwICs9 IGJheWVyX3N0ZXAsIGRzdDAgKz0gZHN0X3N0ZXAgKQorICAgICB7CisgICAgICAgICBpbnQgdDAs IHQxOworICAgICAgICAgY29uc3QgdWNoYXIqIGJheWVyID0gYmF5ZXIwOworICAgICAgICAgdWNo YXIqIGRzdCA9IGRzdDA7CisgICAgICAgICBjb25zdCB1Y2hhciogYmF5ZXJfZW5kID0gYmF5ZXIg KyBzaXplLndpZHRoOworLQorLSAgICAgICAgZHN0Wy00XSA9IGRzdFstM10gPSBkc3RbLTJdID0g ZHN0W3NpemUud2lkdGgqMy0xXSA9CistICAgICAgICAgICAgZHN0W3NpemUud2lkdGgqM10gPSBk c3Rbc2l6ZS53aWR0aCozKzFdID0gMDsKKy0KKysgICAgICAgIAorICAgICAgICAgaWYoIHNpemUu d2lkdGggPD0gMCApCisrICAgICAgICB7CisrICAgICAgICAgICAgZHN0Wy00XSA9IGRzdFstM10g PSBkc3RbLTJdID0gZHN0W3NpemUud2lkdGgqMy0xXSA9CisrICAgICAgICAgICAgZHN0W3NpemUu d2lkdGgqM10gPSBkc3Rbc2l6ZS53aWR0aCozKzFdID0gMDsKKyAgICAgICAgICAgICBjb250aW51 ZTsKKy0KKysgICAgICAgIH0KKysgICAgICAgIAorICAgICAgICAgaWYoIHN0YXJ0X3dpdGhfZ3Jl ZW4gKQorICAgICAgICAgeworICAgICAgICAgICAgIHQwID0gKGJheWVyWzFdICsgYmF5ZXJbYmF5 ZXJfc3RlcCoyKzFdICsgMSkgPj4gMTsKK0BAIC0xNzc3LDcgKzE5MjAsODcgQEAKKyAgICAgICAg ICAgICBiYXllcisrOworICAgICAgICAgICAgIGRzdCArPSAzOworICAgICAgICAgfQorLQorKyAg ICAgICAgCisrI2lmIENWX1NTRTIKKysgICAgICAgIGlmKCBoYXZlU1NFMiApCisrICAgICAgICB7 CisrICAgICAgICAgICAgLyoKKysgICAgICAgICAgICAgQiBHIEIgRyB8IEIgRyBCIEcgfCBCIEcg QiBHIHwgQiBHIEIgRworKyAgICAgICAgICAgICBHIFIgRyBSIHwgRyBSIEcgUiB8IEcgUiBHIFIg fCBHIFIgRyBSCisrICAgICAgICAgICAgIEIgRyBCIEcgfCBCIEcgQiBHIHwgQiBHIEIgRyB8IEIg RyBCIEcKKysgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICBfX20xMjhpIGRlbHRhMSA9IF9t bV9zZXQxX2VwaTE2KDEpLCBkZWx0YTIgPSBfbW1fc2V0MV9lcGkxNigyKTsKKysgICAgICAgICAg ICBfX20xMjhpIG1hc2sgPSBfbW1fc2V0MV9lcGkxNihibHVlIDwgMCA/IC0xIDogMCksIHogPSBf bW1fc2V0emVyb19zaTEyOCgpOworKyAgICAgICAgICAgIF9fbTEyOGkgbWFza2xvID0gX21tX3Nl dDFfZXBpMTYoMHgwMGZmKTsKKysgICAgICAgICAgICAKKysgICAgICAgICAgICBmb3IoIDsgYmF5 ZXIgPD0gYmF5ZXJfZW5kIC0gMTg7IGJheWVyICs9IDE0LCBkc3QgKz0gNDIgKQorKyAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgX19tMTI4aSByMCA9IF9tbV9sb2FkdV9zaTEyOCgoY29u c3QgX19tMTI4aSopYmF5ZXIpOworKyAgICAgICAgICAgICAgICBfX20xMjhpIHIxID0gX21tX2xv YWR1X3NpMTI4KChjb25zdCBfX20xMjhpKikoYmF5ZXIrYmF5ZXJfc3RlcCkpOworKyAgICAgICAg ICAgICAgICBfX20xMjhpIHIyID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhpKikoYmF5 ZXIrYmF5ZXJfc3RlcCoyKSk7CisrICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICBf X20xMjhpIGIxID0gX21tX2FkZF9lcGkxNihfbW1fYW5kX3NpMTI4KHIwLCBtYXNrbG8pLCBfbW1f YW5kX3NpMTI4KHIyLCBtYXNrbG8pKTsKKysgICAgICAgICAgICAgICAgX19tMTI4aSBiMCA9IF9t bV9hZGRfZXBpMTYoYjEsIF9tbV9zcmxpX3NpMTI4KGIxLCAyKSk7CisrICAgICAgICAgICAgICAg IGIxID0gX21tX3NybGlfc2kxMjgoYjEsIDIpOworKyAgICAgICAgICAgICAgICBiMSA9IF9tbV9z cmxpX2VwaTE2KF9tbV9hZGRfZXBpMTYoYjEsIGRlbHRhMSksIDEpOworKyAgICAgICAgICAgICAg ICBiMCA9IF9tbV9zcmxpX2VwaTE2KF9tbV9hZGRfZXBpMTYoYjAsIGRlbHRhMiksIDIpOworKyAg ICAgICAgICAgICAgICBiMCA9IF9tbV9wYWNrdXNfZXBpMTYoYjAsIGIxKTsKKysgICAgICAgICAg ICAgICAgCisrICAgICAgICAgICAgICAgIF9fbTEyOGkgZzAgPSBfbW1fYWRkX2VwaTE2KF9tbV9z cmxpX2VwaTE2KHIwLCA4KSwgX21tX3NybGlfZXBpMTYocjIsIDgpKTsKKysgICAgICAgICAgICAg ICAgX19tMTI4aSBnMSA9IF9tbV9hbmRfc2kxMjgocjEsIG1hc2tsbyk7CisrICAgICAgICAgICAg ICAgIGcwID0gX21tX2FkZF9lcGkxNihnMCwgX21tX2FkZF9lcGkxNihnMSwgX21tX3NybGlfc2kx MjgoZzEsIDIpKSk7CisrICAgICAgICAgICAgICAgIGcxID0gX21tX3NybGlfc2kxMjgoZzEsIDIp OworKyAgICAgICAgICAgICAgICBnMCA9IF9tbV9zcmxpX2VwaTE2KF9tbV9hZGRfZXBpMTYoZzAs IGRlbHRhMiksIDIpOworKyAgICAgICAgICAgICAgICBnMCA9IF9tbV9wYWNrdXNfZXBpMTYoZzAs IGcxKTsKKysgICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgICAgIHIwID0gX21tX3NybGlf ZXBpMTYocjEsIDgpOworKyAgICAgICAgICAgICAgICByMSA9IF9tbV9hZGRfZXBpMTYocjAsIF9t bV9zcmxpX3NpMTI4KHIwLCAyKSk7CisrICAgICAgICAgICAgICAgIHIxID0gX21tX3NybGlfZXBp MTYoX21tX2FkZF9lcGkxNihyMSwgZGVsdGExKSwgMSk7CisrICAgICAgICAgICAgICAgIHIwID0g X21tX3BhY2t1c19lcGkxNihyMCwgcjEpOworKyAgICAgICAgICAgICAgICAKKysgICAgICAgICAg ICAgICAgYjEgPSBfbW1fYW5kX3NpMTI4KF9tbV94b3Jfc2kxMjgoYjAsIHIwKSwgbWFzayk7Cisr ICAgICAgICAgICAgICAgIGIwID0gX21tX3hvcl9zaTEyOChiMCwgYjEpOworKyAgICAgICAgICAg ICAgICByMCA9IF9tbV94b3Jfc2kxMjgocjAsIGIxKTsKKysgICAgICAgICAgICAgICAgCisrICAg ICAgICAgICAgICAgIC8vIGIxIGcxIGIxIGcxIC4uLgorKyAgICAgICAgICAgICAgICBiMSA9IF9t bV91bnBhY2toaV9lcGk4KGIwLCBnMCk7CisrICAgICAgICAgICAgICAgIC8vIGIwIGcwIGIyIGcy IGI0IGc0IC4uLi4KKysgICAgICAgICAgICAgICAgYjAgPSBfbW1fdW5wYWNrbG9fZXBpOChiMCwg ZzApOworKyAgICAgICAgICAgICAgICAKKysgICAgICAgICAgICAgICAgLy8gcjEgMCByMyAwIC4u LgorKyAgICAgICAgICAgICAgICByMSA9IF9tbV91bnBhY2toaV9lcGk4KHIwLCB6KTsKKysgICAg ICAgICAgICAgICAgLy8gcjAgMCByMiAwIHI0IDAgLi4uCisrICAgICAgICAgICAgICAgIHIwID0g X21tX3VucGFja2xvX2VwaTgocjAsIHopOworKyAgICAgICAgICAgICAgICAKKysgICAgICAgICAg ICAgICAgLy8gMCBiMCBnMCByMCAwIGIyIGcyIHIyIDAgLi4uCisrICAgICAgICAgICAgICAgIGcw ID0gX21tX3NsbGlfc2kxMjgoX21tX3VucGFja2xvX2VwaTE2KGIwLCByMCksIDEpOworKyAgICAg ICAgICAgICAgICAvLyAwIGI4IGc4IHI4IDAgYjEwIGcxMCByMTAgMCAuLi4KKysgICAgICAgICAg ICAgICAgZzEgPSBfbW1fc2xsaV9zaTEyOChfbW1fdW5wYWNraGlfZXBpMTYoYjAsIHIwKSwgMSk7 CisrICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICAvLyBiMSBnMSByMSAwIGIzIGcz IHIzIC4uLi4KKysgICAgICAgICAgICAgICAgcjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYoYjEsIHIx KTsKKysgICAgICAgICAgICAgICAgLy8gYjkgZzkgcjkgMCAuLi4KKysgICAgICAgICAgICAgICAg cjEgPSBfbW1fdW5wYWNraGlfZXBpMTYoYjEsIHIxKTsKKysgICAgICAgICAgICAgICAgCisrICAg ICAgICAgICAgICAgIGIwID0gX21tX3NybGlfc2kxMjgoX21tX3VucGFja2xvX2VwaTMyKGcwLCBy MCksIDEpOworKyAgICAgICAgICAgICAgICBiMSA9IF9tbV9zcmxpX3NpMTI4KF9tbV91bnBhY2to aV9lcGkzMihnMCwgcjApLCAxKTsKKysgICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgICAg IF9tbV9zdG9yZWxfZXBpNjQoKF9fbTEyOGkqKShkc3QtMSswKSwgYjApOworKyAgICAgICAgICAg ICAgICBfbW1fc3RvcmVsX2VwaTY0KChfX20xMjhpKikoZHN0LTErNioxKSwgX21tX3NybGlfc2kx MjgoYjAsIDgpKTsKKysgICAgICAgICAgICAgICAgX21tX3N0b3JlbF9lcGk2NCgoX19tMTI4aSop KGRzdC0xKzYqMiksIGIxKTsKKysgICAgICAgICAgICAgICAgX21tX3N0b3JlbF9lcGk2NCgoX19t MTI4aSopKGRzdC0xKzYqMyksIF9tbV9zcmxpX3NpMTI4KGIxLCA4KSk7CisrICAgICAgICAgICAg ICAgIAorKyAgICAgICAgICAgICAgICBnMCA9IF9tbV9zcmxpX3NpMTI4KF9tbV91bnBhY2tsb19l cGkzMihnMSwgcjEpLCAxKTsKKysgICAgICAgICAgICAgICAgZzEgPSBfbW1fc3JsaV9zaTEyOChf bW1fdW5wYWNraGlfZXBpMzIoZzEsIHIxKSwgMSk7CisrICAgICAgICAgICAgICAgIAorKyAgICAg ICAgICAgICAgICBfbW1fc3RvcmVsX2VwaTY0KChfX20xMjhpKikoZHN0LTErNio0KSwgZzApOwor KyAgICAgICAgICAgICAgICBfbW1fc3RvcmVsX2VwaTY0KChfX20xMjhpKikoZHN0LTErNio1KSwg X21tX3NybGlfc2kxMjgoZzAsIDgpKTsKKysgICAgICAgICAgICAgICAgCisrICAgICAgICAgICAg ICAgIF9tbV9zdG9yZWxfZXBpNjQoKF9fbTEyOGkqKShkc3QtMSs2KjYpLCBnMSk7CisrICAgICAg ICAgICAgfQorKyAgICAgICAgfQorKyNlbmRpZgorKyAgICAgICAgCisgICAgICAgICBpZiggYmx1 ZSA+IDAgKQorICAgICAgICAgeworICAgICAgICAgICAgIGZvciggOyBiYXllciA8PSBiYXllcl9l bmQgLSAyOyBiYXllciArPSAyLCBkc3QgKz0gNiApCitAQCAtMTc4OSw3ICsyMDEyLDcgQEAKKyAg ICAgICAgICAgICAgICAgZHN0Wy0xXSA9ICh1Y2hhcil0MDsKKyAgICAgICAgICAgICAgICAgZHN0 WzBdID0gKHVjaGFyKXQxOworICAgICAgICAgICAgICAgICBkc3RbMV0gPSBiYXllcltiYXllcl9z dGVwKzFdOworLQorKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgdDAgPSAoYmF5 ZXJbMl0gKyBiYXllcltiYXllcl9zdGVwKjIrMl0gKyAxKSA+PiAxOworICAgICAgICAgICAgICAg ICB0MSA9IChiYXllcltiYXllcl9zdGVwKzFdICsgYmF5ZXJbYmF5ZXJfc3RlcCszXSArIDEpID4+ IDE7CisgICAgICAgICAgICAgICAgIGRzdFsyXSA9ICh1Y2hhcil0MDsKK0BAIC0xODA4LDcgKzIw MzEsNyBAQAorICAgICAgICAgICAgICAgICBkc3RbMV0gPSAodWNoYXIpdDA7CisgICAgICAgICAg ICAgICAgIGRzdFswXSA9ICh1Y2hhcil0MTsKKyAgICAgICAgICAgICAgICAgZHN0Wy0xXSA9IGJh eWVyW2JheWVyX3N0ZXArMV07CistCisrICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg ICB0MCA9IChiYXllclsyXSArIGJheWVyW2JheWVyX3N0ZXAqMisyXSArIDEpID4+IDE7CisgICAg ICAgICAgICAgICAgIHQxID0gKGJheWVyW2JheWVyX3N0ZXArMV0gKyBiYXllcltiYXllcl9zdGVw KzNdICsgMSkgPj4gMTsKKyAgICAgICAgICAgICAgICAgZHN0WzRdID0gKHVjaGFyKXQwOworQEAg LTE4MTYsNyArMjAzOSw3IEBACisgICAgICAgICAgICAgICAgIGRzdFsyXSA9ICh1Y2hhcil0MTsK KyAgICAgICAgICAgICB9CisgICAgICAgICB9CistCisrICAgICAgICAKKyAgICAgICAgIGlmKCBi YXllciA8IGJheWVyX2VuZCApCisgICAgICAgICB7CisgICAgICAgICAgICAgdDAgPSAoYmF5ZXJb MF0gKyBiYXllclsyXSArIGJheWVyW2JheWVyX3N0ZXAqMl0gKworQEAgLTE4MjksMTAgKzIwNTIs MzEgQEAKKyAgICAgICAgICAgICBiYXllcisrOworICAgICAgICAgICAgIGRzdCArPSAzOworICAg ICAgICAgfQorLQorKyAgICAgICAgCisrICAgICAgICBkc3QwWy00XSA9IGRzdDBbLTFdOworKyAg ICAgICAgZHN0MFstM10gPSBkc3QwWzBdOworKyAgICAgICAgZHN0MFstMl0gPSBkc3QwWzFdOwor KyAgICAgICAgZHN0MFtzaXplLndpZHRoKjMtMV0gPSBkc3QwW3NpemUud2lkdGgqMy00XTsKKysg ICAgICAgIGRzdDBbc2l6ZS53aWR0aCozXSA9IGRzdDBbc2l6ZS53aWR0aCozLTNdOworKyAgICAg ICAgZHN0MFtzaXplLndpZHRoKjMrMV0gPSBkc3QwW3NpemUud2lkdGgqMy0yXTsKKysgICAgICAg IAorICAgICAgICAgYmx1ZSA9IC1ibHVlOworICAgICAgICAgc3RhcnRfd2l0aF9ncmVlbiA9ICFz dGFydF93aXRoX2dyZWVuOworICAgICB9CisrICAgIAorKyAgICBzaXplID0gZHN0bWF0LnNpemUo KTsKKysgICAgZHN0MCA9IGRzdG1hdC5kYXRhOworKyAgICBpZiggc2l6ZS5oZWlnaHQgPiAyICkK KysgICAgICAgIGZvciggaW50IGkgPSAwOyBpIDwgc2l6ZS53aWR0aCozOyBpKysgKQorKyAgICAg ICAgeworKyAgICAgICAgICAgIGRzdDBbaV0gPSBkc3QwW2kgKyBkc3Rfc3RlcF07CisrICAgICAg ICAgICAgZHN0MFtpICsgKHNpemUuaGVpZ2h0LTEpKmRzdF9zdGVwXSA9IGRzdDBbaSArIChzaXpl LmhlaWdodC0yKSpkc3Rfc3RlcF07CisrICAgICAgICB9CisrICAgIGVsc2UKKysgICAgICAgIGZv ciggaW50IGkgPSAwOyBpIDwgc2l6ZS53aWR0aCozOyBpKysgKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGRzdDBbaV0gPSBkc3QwW2kgKyAoc2l6ZS5oZWlnaHQtMSkqZHN0X3N0ZXBdID0gMDsK KysgICAgICAgIH0KKyB9CisgCisgICAgIAorQEAgLTIxMzIsOCArMjM3Niw5IEBACisgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIAorICAgICAgICAgICAgIF9fbTEyOGkgZW1h c2sgPSBfbW1fc2V0MV9lcGkzMigweDAwMDBmZmZmKSwKKy0gICAgICAgICAgICBvbWFzayA9IF9t bV9zZXQxX2VwaTMyKDB4ZmZmZjAwMDApLAorLSAgICAgICAgICAgIHogPSBfbW1fc2V0emVyb19z aTEyOCgpOworKyAgICAgICAgICAgICAgICBvbWFzayA9IF9tbV9zZXQxX2VwaTMyKDB4ZmZmZjAw MDApLAorKyAgICAgICAgICAgICAgICBhbGxfb25lcyA9IF9tbV9zZXQxX2VwaTE2KDEpLAorKyAg ICAgICAgICAgICAgICB6ID0gX21tX3NldHplcm9fc2kxMjgoKTsKKyAgICAgICAgICAgICBfX20x MjggXzBfNSA9IF9tbV9zZXQxX3BzKDAuNWYpOworICAgICAgICAgICAgIAorICAgICAgICAgICAg ICNkZWZpbmUgX21tX21lcmdlX2VwaTE2KGEsIGIpIFwKK0BAIC0yMzA3LDcgKzI1NTIsNyBAQAor ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgLy8gZ3JhZE5XCisgICAgICAgICAg ICAgICAgIG1hc2sgPSBfbW1fY21wZ3RfZXBpMTYoVCwgZ3JhZE5XKTsKKy0gICAgICAgICAgICAg ICAgbmcgPSBfbW1fc3ViX2VwaTE2KG5nLCBtYXNrKTsKKysgICAgICAgICAgICAgICAgbmcgPSBf bW1fbWF4X2VwaTE2KF9tbV9zdWJfZXBpMTYobmcsIG1hc2spLCBhbGxfb25lcyk7CisgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICBfX20xMjggbmdmMCwgbmdmMTsKKyAgICAgICAg ICAgICAgICAgbmdmMCA9IF9tbV9kaXZfcHMoXzBfNSwgX21tX2N2dGxvZXBpMTZfcHMobmcpKTsK K0BAIC0yNjU3LDEyICsyOTAyLDE5IEBACisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICBicmVhazsKKysgICAgICAgIAorKyAgICAgICAgY2FzZSBDVl9CYXllckJH MkdSQVk6IGNhc2UgQ1ZfQmF5ZXJHQjJHUkFZOiBjYXNlIENWX0JheWVyUkcyR1JBWTogY2FzZSBD Vl9CYXllckdSMkdSQVk6CisrICAgICAgICAgICAgaWYoZGNuIDw9IDApIGRjbiA9IDE7CisrICAg ICAgICAgICAgQ1ZfQXNzZXJ0KCBzY24gPT0gMSAmJiBkY24gPT0gMSAmJiBkZXB0aCA9PSBDVl84 VSApOworKyAgICAgICAgICAgIGRzdC5jcmVhdGUoc3osIGRlcHRoKTsKKysgICAgICAgICAgICBC YXllcjJHcmF5Xzh1KHNyYywgZHN0LCBjb2RlKTsKKysgICAgICAgICAgICBicmVhazsgICAgCisg ICAgICAgICAgICAgCisgICAgICAgICBjYXNlIENWX0JheWVyQkcyQkdSOiBjYXNlIENWX0JheWVy R0IyQkdSOiBjYXNlIENWX0JheWVyUkcyQkdSOiBjYXNlIENWX0JheWVyR1IyQkdSOgorICAgICAg ICAgY2FzZSBDVl9CYXllckJHMkJHUl9WTkc6IGNhc2UgQ1ZfQmF5ZXJHQjJCR1JfVk5HOiBjYXNl IENWX0JheWVyUkcyQkdSX1ZORzogY2FzZSBDVl9CYXllckdSMkJHUl9WTkc6CisgICAgICAgICAg ICAgaWYoZGNuIDw9IDApIGRjbiA9IDM7CisgICAgICAgICAgICAgQ1ZfQXNzZXJ0KCBzY24gPT0g MSAmJiBkY24gPT0gMyAmJiBkZXB0aCA9PSBDVl84VSApOworLSAgICAgICAgICAgIGRzdC5jcmVh dGUoc3osIENWXzhVQzMpOworKyAgICAgICAgICAgIGRzdC5jcmVhdGUoc3osIENWX01BS0VUWVBF KGRlcHRoLCBkY24pKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgICBpZiggY29kZSA9PSBD Vl9CYXllckJHMkJHUiB8fCBjb2RlID09IENWX0JheWVyR0IyQkdSIHx8CisgICAgICAgICAgICAg ICAgIGNvZGUgPT0gQ1ZfQmF5ZXJSRzJCR1IgfHwgY29kZSA9PSBDVl9CYXllckdSMkJHUiApCitk aWZmIC11ciBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9pbWdwcm9jL3NyYy91dGlscy5jcHAgb3BlbmN2 L21vZHVsZXMvaW1ncHJvYy9zcmMvdXRpbHMuY3BwCistLS0gT3BlbkNWLTIuMi4wL21vZHVsZXMv aW1ncHJvYy9zcmMvdXRpbHMuY3BwCTIwMTAtMTItMDUgMDQ6MzU6MjUuMDAwMDAwMDAwICswMTAw CisrKysgb3BlbmN2L21vZHVsZXMvaW1ncHJvYy9zcmMvdXRpbHMuY3BwCTIwMTEtMDUtMjYgMTI6 NTY6MzAuNDY1MDkzMDAyICswMjAwCitAQCAtNzEsNDEzICs3MSwxNjQgQEAKKyAgICAgcmV0dXJu IChDdlNlcSopY29udG91cl9oZWFkZXI7CisgfQorIAorK25hbWVzcGFjZSBjdgorK3sKKyAKKy10 eXBlZGVmIEN2U3RhdHVzIChDVl9TVERDQUxMICogQ3ZDb3B5Tm9uQ29uc3RCb3JkZXJGdW5jKSgK Ky0gICAgY29uc3Qgdm9pZCosIGludCwgQ3ZTaXplLCB2b2lkKiwgaW50LCBDdlNpemUsIGludCwg aW50ICk7CistCistdHlwZWRlZiBDdlN0YXR1cyAoQ1ZfU1REQ0FMTCAqIEN2Q29weU5vbkNvbnN0 Qm9yZGVyRnVuY0kpKAorLSAgICBjb25zdCB2b2lkKiwgaW50LCBDdlNpemUsIEN2U2l6ZSwgaW50 LCBpbnQgKTsKKy0KKy1DdlN0YXR1cyBDVl9TVERDQUxMCistaWN2Q29weVJlcGxpY2F0ZUJvcmRl cl84dSggY29uc3QgdWNoYXIqIHNyYywgaW50IHNyY3N0ZXAsIEN2U2l6ZSBzcmNyb2ksCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWNoYXIqIGRzdCwgaW50IGRzdHN0ZXAsIEN2U2l6ZSBk c3Ryb2ksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRvcCwgaW50IGxlZnQsIGlu dCBjbiwgY29uc3QgdWNoYXIqICkKKytzdGF0aWMgdm9pZCBjb3B5TWFrZUJvcmRlcl84dSggY29u c3QgdWNoYXIqIHNyYywgc2l6ZV90IHNyY3N0ZXAsIFNpemUgc3Jjcm9pLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1Y2hhciogZHN0LCBzaXplX3QgZHN0c3RlcCwgU2l6ZSBkc3Ry b2ksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0b3AsIGludCBsZWZ0LCBp bnQgY24sIGludCBib3JkZXJUeXBlICkKKyB7CisgICAgIGNvbnN0IGludCBpc3ogPSAoaW50KXNp emVvZihpbnQpOworLSAgICBpbnQgaSwgajsKKysgICAgaW50IGksIGosIGssIGVsZW1TaXplID0g MTsKKysgICAgYm9vbCBpbnRNb2RlID0gZmFsc2U7CisgCisgICAgIGlmKCAoY24gfCBzcmNzdGVw IHwgZHN0c3RlcCB8IChzaXplX3Qpc3JjIHwgKHNpemVfdClkc3QpICUgaXN6ID09IDAgKQorICAg ICB7CistICAgICAgICBjb25zdCBpbnQqIGlzcmMgPSAoY29uc3QgaW50KilzcmM7CistICAgICAg ICBpbnQqIGlkc3QgPSAoaW50Kilkc3Q7CistICAgICAgICAKKyAgICAgICAgIGNuIC89IGlzejsK Ky0gICAgICAgIHNyY3N0ZXAgLz0gaXN6OworLSAgICAgICAgZHN0c3RlcCAvPSBpc3o7CistCist ICAgICAgICBzcmNyb2kud2lkdGggKj0gY247CistICAgICAgICBkc3Ryb2kud2lkdGggKj0gY247 CistICAgICAgICBsZWZ0ICo9IGNuOworLQorLSAgICAgICAgZm9yKCBpID0gMDsgaSA8IGRzdHJv aS5oZWlnaHQ7IGkrKywgaWRzdCArPSBkc3RzdGVwICkKKy0gICAgICAgIHsKKy0gICAgICAgICAg ICBpZiggaWRzdCArIGxlZnQgIT0gaXNyYyApCistICAgICAgICAgICAgICAgIG1lbWNweSggaWRz dCArIGxlZnQsIGlzcmMsIHNyY3JvaS53aWR0aCpzaXplb2YoaWRzdFswXSkgKTsKKy0gICAgICAg ICAgICBmb3IoIGogPSBsZWZ0IC0gMTsgaiA+PSAwOyBqLS0gKQorLSAgICAgICAgICAgICAgICBp ZHN0W2pdID0gaWRzdFtqICsgY25dOworLSAgICAgICAgICAgIGZvciggaiA9IGxlZnQrc3Jjcm9p LndpZHRoOyBqIDwgZHN0cm9pLndpZHRoOyBqKysgKQorLSAgICAgICAgICAgICAgICBpZHN0W2pd ID0gaWRzdFtqIC0gY25dOworLSAgICAgICAgICAgIGlmKCBpID49IHRvcCAmJiBpIDwgdG9wICsg c3Jjcm9pLmhlaWdodCAtIDEgKQorLSAgICAgICAgICAgICAgICBpc3JjICs9IHNyY3N0ZXA7Cist ICAgICAgICB9CisrICAgICAgICBlbGVtU2l6ZSA9IGlzejsKKysgICAgICAgIGludE1vZGUgPSB0 cnVlOworICAgICB9CistICAgIGVsc2UKKy0gICAgeworLSAgICAgICAgc3Jjcm9pLndpZHRoICo9 IGNuOworLSAgICAgICAgZHN0cm9pLndpZHRoICo9IGNuOworLSAgICAgICAgbGVmdCAqPSBjbjsK KyAKKy0gICAgICAgIGZvciggaSA9IDA7IGkgPCBkc3Ryb2kuaGVpZ2h0OyBpKyssIGRzdCArPSBk c3RzdGVwICkKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpZiggZHN0ICsgbGVmdCAhPSBzcmMg KQorLSAgICAgICAgICAgICAgICBtZW1jcHkoIGRzdCArIGxlZnQsIHNyYywgc3Jjcm9pLndpZHRo ICk7CistICAgICAgICAgICAgZm9yKCBqID0gbGVmdCAtIDE7IGogPj0gMDsgai0tICkKKy0gICAg ICAgICAgICAgICAgZHN0W2pdID0gZHN0W2ogKyBjbl07CistICAgICAgICAgICAgZm9yKCBqID0g bGVmdCtzcmNyb2kud2lkdGg7IGogPCBkc3Ryb2kud2lkdGg7IGorKyApCistICAgICAgICAgICAg ICAgIGRzdFtqXSA9IGRzdFtqIC0gY25dOworLSAgICAgICAgICAgIGlmKCBpID49IHRvcCAmJiBp IDwgdG9wICsgc3Jjcm9pLmhlaWdodCAtIDEgKQorLSAgICAgICAgICAgICAgICBzcmMgKz0gc3Jj c3RlcDsKKy0gICAgICAgIH0KKysgICAgQXV0b0J1ZmZlcjxpbnQ+IF90YWIoKGRzdHJvaS53aWR0 aCAtIHNyY3JvaS53aWR0aCkqY24pOworKyAgICBpbnQqIHRhYiA9IF90YWI7CisrICAgIGludCBy aWdodCA9IGRzdHJvaS53aWR0aCAtIHNyY3JvaS53aWR0aCAtIGxlZnQ7CisrICAgIGludCBib3R0 b20gPSBkc3Ryb2kuaGVpZ2h0IC0gc3Jjcm9pLmhlaWdodCAtIHRvcDsKKysgICAgCisrICAgIGZv ciggaSA9IDA7IGkgPCBsZWZ0OyBpKysgKQorKyAgICB7CisrICAgICAgICBqID0gYm9yZGVySW50 ZXJwb2xhdGUoaSAtIGxlZnQsIHNyY3JvaS53aWR0aCwgYm9yZGVyVHlwZSkqY247CisrICAgICAg ICBmb3IoIGsgPSAwOyBrIDwgY247IGsrKyApCisrICAgICAgICAgICAgdGFiW2kqY24gKyBrXSA9 IGogKyBrOworICAgICB9CistCistICAgIHJldHVybiBDVl9PSzsKKy19CistCistCistc3RhdGlj IEN2U3RhdHVzIENWX1NURENBTEwKKy1pY3ZDb3B5UmVmbGVjdDEwMUJvcmRlcl84dSggY29uc3Qg dWNoYXIqIHNyYywgaW50IHNyY3N0ZXAsIEN2U2l6ZSBzcmNyb2ksCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVjaGFyKiBkc3QsIGludCBkc3RzdGVwLCBDdlNpemUgZHN0cm9pLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG9wLCBpbnQgbGVmdCwgaW50IGNuICkKKy17 CistICAgIGNvbnN0IGludCBpc3ogPSAoaW50KXNpemVvZihpbnQpOworLSAgICBpbnQgaSwgaiwg aywgdCwgZGosIHRhYl9zaXplLCBpbnRfbW9kZSA9IDA7CistICAgIGNvbnN0IGludCogaXNyYyA9 IChjb25zdCBpbnQqKXNyYzsKKy0gICAgaW50KiBpZHN0ID0gKGludCopZHN0LCAqdGFiOworLQor LSAgICBpZiggKGNuIHwgc3Jjc3RlcCB8IGRzdHN0ZXAgfCAoc2l6ZV90KXNyYyB8IChzaXplX3Qp ZHN0KSAlIGlzeiA9PSAwICkKKysgICAgCisrICAgIGZvciggaSA9IDA7IGkgPCByaWdodDsgaSsr ICkKKyAgICAgeworLSAgICAgICAgY24gLz0gaXN6OworLSAgICAgICAgc3Jjc3RlcCAvPSBpc3o7 CistICAgICAgICBkc3RzdGVwIC89IGlzejsKKy0KKy0gICAgICAgIGludF9tb2RlID0gMTsKKysg ICAgICAgIGogPSBib3JkZXJJbnRlcnBvbGF0ZShzcmNyb2kud2lkdGggKyBpLCBzcmNyb2kud2lk dGgsIGJvcmRlclR5cGUpKmNuOworKyAgICAgICAgZm9yKCBrID0gMDsgayA8IGNuOyBrKysgKQor KyAgICAgICAgICAgIHRhYlsoaStsZWZ0KSpjbiArIGtdID0gaiArIGs7CisgICAgIH0KKyAKKyAg ICAgc3Jjcm9pLndpZHRoICo9IGNuOworICAgICBkc3Ryb2kud2lkdGggKj0gY247CisgICAgIGxl ZnQgKj0gY247CisrICAgIHJpZ2h0ICo9IGNuOworKyAgICAKKysgICAgdWNoYXIqIGRzdElubmVy ID0gZHN0ICsgZHN0c3RlcCp0b3AgKyBsZWZ0KmVsZW1TaXplOworIAorLSAgICB0YWJfc2l6ZSA9 IGRzdHJvaS53aWR0aCAtIHNyY3JvaS53aWR0aDsKKy0gICAgdGFiID0gKGludCopY3ZTdGFja0Fs bG9jKCB0YWJfc2l6ZSpzaXplb2YodGFiWzBdKSApOworLQorLSAgICBpZiggc3Jjcm9pLndpZHRo ID09IDEgKQorLSAgICB7CistICAgICAgICBmb3IoIGsgPSAwOyBrIDwgY247IGsrKyApCistICAg ICAgICAgICAgZm9yKCBpID0gMDsgaSA8IHRhYl9zaXplOyBpICs9IGNuICkKKy0gICAgICAgICAg ICAgICAgdGFiW2kgKyBrXSA9IGsgKyBsZWZ0OworLSAgICB9CistICAgIGVsc2UKKysgICAgZm9y KCBpID0gMDsgaSA8IHNyY3JvaS5oZWlnaHQ7IGkrKywgZHN0SW5uZXIgKz0gZHN0c3RlcCwgc3Jj ICs9IHNyY3N0ZXAgKQorICAgICB7CistICAgICAgICBqID0gZGogPSBjbjsKKy0gICAgICAgIGZv ciggaSA9IGxlZnQgLSBjbjsgaSA+PSAwOyBpIC09IGNuICkKKy0gICAgICAgIHsKKy0gICAgICAg ICAgICBmb3IoIGsgPSAwOyBrIDwgY247IGsrKyApCistICAgICAgICAgICAgICAgIHRhYltpICsg a10gPSBqICsgayArIGxlZnQ7CistICAgICAgICAgICAgaWYoICh1bnNpZ25lZCkoaiArPSBkaikg Pj0gKHVuc2lnbmVkKXNyY3JvaS53aWR0aCApCistICAgICAgICAgICAgICAgIGogLT0gMipkaiwg ZGogPSAtZGo7CistICAgICAgICB9CisrICAgICAgICBpZiggZHN0SW5uZXIgIT0gc3JjICkKKysg ICAgICAgICAgICBtZW1jcHkoZHN0SW5uZXIsIHNyYywgc3Jjcm9pLndpZHRoKmVsZW1TaXplKTsK KyAgICAgICAgIAorLSAgICAgICAgaiA9IHNyY3JvaS53aWR0aCAtIGNuKjI7CistICAgICAgICBk aiA9IC1jbjsKKy0gICAgICAgIGZvciggaSA9IGxlZnQ7IGkgPCB0YWJfc2l6ZTsgaSArPSBjbiAp CisrICAgICAgICBpZiggaW50TW9kZSApCisgICAgICAgICB7CistICAgICAgICAgICAgZm9yKCBr ID0gMDsgayA8IGNuOyBrKysgKQorLSAgICAgICAgICAgICAgICB0YWJbaSArIGtdID0gaiArIGsg KyBsZWZ0OworLSAgICAgICAgICAgIGlmKCAodW5zaWduZWQpKGogKz0gZGopID49ICh1bnNpZ25l ZClzcmNyb2kud2lkdGggKQorLSAgICAgICAgICAgICAgICBqIC09IDIqZGosIGRqID0gLWRqOwor KyAgICAgICAgICAgIGNvbnN0IGludCogaXNyYyA9IChpbnQqKXNyYzsKKysgICAgICAgICAgICBp bnQqIGlkc3RJbm5lciA9IChpbnQqKWRzdElubmVyOworKyAgICAgICAgICAgIGZvciggaiA9IDA7 IGogPCBsZWZ0OyBqKysgKQorKyAgICAgICAgICAgICAgICBpZHN0SW5uZXJbaiAtIGxlZnRdID0g aXNyY1t0YWJbal1dOworKyAgICAgICAgICAgIGZvciggaiA9IDA7IGogPCByaWdodDsgaisrICkK KysgICAgICAgICAgICAgICAgaWRzdElubmVyW2ogKyBzcmNyb2kud2lkdGhdID0gaXNyY1t0YWJb aiArIGxlZnRdXTsKKyAgICAgICAgIH0KKy0gICAgfQorLQorLSAgICBpZiggaW50X21vZGUgKQor LSAgICB7CistICAgICAgICBpZHN0ICs9IHRvcCpkc3RzdGVwOworLSAgICAgICAgZm9yKCBpID0g MDsgaSA8IHNyY3JvaS5oZWlnaHQ7IGkrKywgaXNyYyArPSBzcmNzdGVwLCBpZHN0ICs9IGRzdHN0 ZXAgKQorKyAgICAgICAgZWxzZQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmKCBpZHN0ICsg bGVmdCAhPSBpc3JjICkKKy0gICAgICAgICAgICAgICAgbWVtY3B5KCBpZHN0ICsgbGVmdCwgaXNy Yywgc3Jjcm9pLndpZHRoKnNpemVvZihpZHN0WzBdKSApOworICAgICAgICAgICAgIGZvciggaiA9 IDA7IGogPCBsZWZ0OyBqKysgKQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgayA9 IHRhYltqXTsgCistICAgICAgICAgICAgICAgIGlkc3Rbal0gPSBpZHN0W2tdOworLSAgICAgICAg ICAgIH0KKy0gICAgICAgICAgICBmb3IoIDsgaiA8IHRhYl9zaXplOyBqKysgKQorLSAgICAgICAg ICAgIHsKKy0gICAgICAgICAgICAgICAgayA9IHRhYltqXTsKKy0gICAgICAgICAgICAgICAgaWRz dFtqICsgc3Jjcm9pLndpZHRoXSA9IGlkc3Rba107CistICAgICAgICAgICAgfQorKyAgICAgICAg ICAgICAgICBkc3RJbm5lcltqIC0gbGVmdF0gPSBzcmNbdGFiW2pdXTsKKysgICAgICAgICAgICBm b3IoIGogPSAwOyBqIDwgcmlnaHQ7IGorKyApCisrICAgICAgICAgICAgICAgIGRzdElubmVyW2og KyBzcmNyb2kud2lkdGhdID0gc3JjW3RhYltqICsgbGVmdF1dOworICAgICAgICAgfQorLSAgICAg ICAgaXNyYyAtPSBzcmNyb2kuaGVpZ2h0KnNyY3N0ZXA7CistICAgICAgICBpZHN0IC09ICh0b3Ag KyBzcmNyb2kuaGVpZ2h0KSpkc3RzdGVwOworICAgICB9CistICAgIGVsc2UKKysgICAgCisrICAg IGRzdHJvaS53aWR0aCAqPSBlbGVtU2l6ZTsKKysgICAgZHN0ICs9IGRzdHN0ZXAqdG9wOworKyAg ICAKKysgICAgZm9yKCBpID0gMDsgaSA8IHRvcDsgaSsrICkKKyAgICAgeworLSAgICAgICAgZHN0 ICs9IHRvcCpkc3RzdGVwOworLSAgICAgICAgZm9yKCBpID0gMDsgaSA8IHNyY3JvaS5oZWlnaHQ7 IGkrKywgc3JjICs9IHNyY3N0ZXAsIGRzdCArPSBkc3RzdGVwICkKKy0gICAgICAgIHsKKy0gICAg ICAgICAgICBpZiggZHN0ICsgbGVmdCAhPSBzcmMgKQorLSAgICAgICAgICAgICAgICBtZW1jcHko IGRzdCArIGxlZnQsIHNyYywgc3Jjcm9pLndpZHRoICk7CistICAgICAgICAgICAgZm9yKCBqID0g MDsgaiA8IGxlZnQ7IGorKyApCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBrID0g dGFiW2pdOyAKKy0gICAgICAgICAgICAgICAgZHN0W2pdID0gZHN0W2tdOworLSAgICAgICAgICAg IH0KKy0gICAgICAgICAgICBmb3IoIDsgaiA8IHRhYl9zaXplOyBqKysgKQorLSAgICAgICAgICAg IHsKKy0gICAgICAgICAgICAgICAgayA9IHRhYltqXTsKKy0gICAgICAgICAgICAgICAgZHN0W2og KyBzcmNyb2kud2lkdGhdID0gZHN0W2tdOworLSAgICAgICAgICAgIH0KKy0gICAgICAgIH0KKy0g ICAgICAgIHNyYyAtPSBzcmNyb2kuaGVpZ2h0KnNyY3N0ZXA7CistICAgICAgICBkc3QgLT0gKHRv cCArIHNyY3JvaS5oZWlnaHQpKmRzdHN0ZXA7CisrICAgICAgICBqID0gYm9yZGVySW50ZXJwb2xh dGUoaSAtIHRvcCwgc3Jjcm9pLmhlaWdodCwgYm9yZGVyVHlwZSk7CisrICAgICAgICBtZW1jcHko ZHN0ICsgKGkgLSB0b3ApKmRzdHN0ZXAsIGRzdCArIGoqZHN0c3RlcCwgZHN0cm9pLndpZHRoKTsK KyAgICAgfQorLQorLSAgICBmb3IoIHQgPSAwOyB0IDwgMjsgdCsrICkKKysgICAgCisrICAgIGZv ciggaSA9IDA7IGkgPCBib3R0b207IGkrKyApCisgICAgIHsKKy0gICAgICAgIGludCBpMSwgaTIs IGRpOworLSAgICAgICAgaWYoIHQgPT0gMCApCistICAgICAgICAgICAgaTEgPSB0b3AtMSwgaTIg PSAwLCBkaSA9IC0xLCBqID0gMSwgZGogPSAxOworLSAgICAgICAgZWxzZQorLSAgICAgICAgICAg IGkxID0gdG9wK3NyY3JvaS5oZWlnaHQsIGkyPWRzdHJvaS5oZWlnaHQsIGRpID0gMSwgaiA9IHNy Y3JvaS5oZWlnaHQtMiwgZGogPSAtMTsKKy0gICAgICAgIAorLSAgICAgICAgZm9yKCBpID0gaTE7 IChkaSA+IDAgJiYgaSA8IGkyKSB8fCAoZGkgPCAwICYmIGkgPiBpMik7IGkgKz0gZGkgKQorLSAg ICAgICAgeworLSAgICAgICAgICAgIGlmKCBpbnRfbW9kZSApCistICAgICAgICAgICAgeworLSAg ICAgICAgICAgICAgICBjb25zdCBpbnQqIHMgPSBpZHN0ICsgaSpkc3RzdGVwOworLSAgICAgICAg ICAgICAgICBpbnQqIGQgPSBpZHN0ICsgKGordG9wKSpkc3RzdGVwOworLSAgICAgICAgICAgICAg ICBmb3IoIGsgPSAwOyBrIDwgZHN0cm9pLndpZHRoOyBrKysgKQorLSAgICAgICAgICAgICAgICAg ICAgZFtrXSA9IHNba107CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UKKy0gICAg ICAgICAgICB7CistICAgICAgICAgICAgICAgIGNvbnN0IHVjaGFyKiBzID0gZHN0ICsgaSpkc3Rz dGVwOworLSAgICAgICAgICAgICAgICB1Y2hhciogZCA9IGRzdCArIChqK3RvcCkqZHN0c3RlcDsK Ky0gICAgICAgICAgICAgICAgZm9yKCBrID0gMDsgayA8IGRzdHJvaS53aWR0aDsgaysrICkKKy0g ICAgICAgICAgICAgICAgICAgIGRba10gPSBzW2tdOworLSAgICAgICAgICAgIH0KKy0KKy0gICAg ICAgICAgICBpZiggKHVuc2lnbmVkKShqICs9IGRqKSA+PSAodW5zaWduZWQpc3Jjcm9pLmhlaWdo dCApCistICAgICAgICAgICAgICAgIGogLT0gMipkaiwgZGogPSAtZGo7CistICAgICAgICB9Cisr ICAgICAgICBqID0gYm9yZGVySW50ZXJwb2xhdGUoaSArIHNyY3JvaS5oZWlnaHQsIHNyY3JvaS5o ZWlnaHQsIGJvcmRlclR5cGUpOworKyAgICAgICAgbWVtY3B5KGRzdCArIChpICsgc3Jjcm9pLmhl aWdodCkqZHN0c3RlcCwgZHN0ICsgaipkc3RzdGVwLCBkc3Ryb2kud2lkdGgpOworICAgICB9Cist CistICAgIHJldHVybiBDVl9PSzsKKyB9CisgCisgCistc3RhdGljIEN2U3RhdHVzIENWX1NURENB TEwKKy1pY3ZDb3B5Q29uc3RCb3JkZXJfOHUoIGNvbnN0IHVjaGFyKiBzcmMsIGludCBzcmNzdGVw LCBDdlNpemUgc3Jjcm9pLAorLSAgICAgICAgICAgICAgICAgICAgICAgdWNoYXIqIGRzdCwgaW50 IGRzdHN0ZXAsIEN2U2l6ZSBkc3Ryb2ksCistICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG9w LCBpbnQgbGVmdCwgaW50IGNuLCBjb25zdCB1Y2hhciogdmFsdWUgKQorK3N0YXRpYyB2b2lkIGNv cHlNYWtlQ29uc3RCb3JkZXJfOHUoIGNvbnN0IHVjaGFyKiBzcmMsIHNpemVfdCBzcmNzdGVwLCBT aXplIHNyY3JvaSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y2hhciog ZHN0LCBzaXplX3QgZHN0c3RlcCwgU2l6ZSBkc3Ryb2ksCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHRvcCwgaW50IGxlZnQsIGludCBjbiwgY29uc3QgdWNoYXIqIHZh bHVlICkKKyB7CistICAgIGNvbnN0IGludCBpc3ogPSAoaW50KXNpemVvZihpbnQpOworLSAgICBp bnQgaSwgaiwgazsKKy0gICAgaWYoIChjbiB8IHNyY3N0ZXAgfCBkc3RzdGVwIHwgKHNpemVfdClz cmMgfCAoc2l6ZV90KWRzdCB8IChzaXplX3QpdmFsdWUpICUgaXN6ID09IDAgKQorKyAgICBpbnQg aSwgajsKKysgICAgQXV0b0J1ZmZlcjx1Y2hhcj4gX2NvbnN0QnVmKGRzdHJvaS53aWR0aCpjbik7 CisrICAgIHVjaGFyKiBjb25zdEJ1ZiA9IF9jb25zdEJ1ZjsKKysgICAgaW50IHJpZ2h0ID0gZHN0 cm9pLndpZHRoIC0gc3Jjcm9pLndpZHRoIC0gbGVmdDsKKysgICAgaW50IGJvdHRvbSA9IGRzdHJv aS5oZWlnaHQgLSBzcmNyb2kuaGVpZ2h0IC0gdG9wOworKyAgICAKKysgICAgZm9yKCBpID0gMDsg aSA8IGRzdHJvaS53aWR0aDsgaSsrICkKKyAgICAgeworLSAgICAgICAgY29uc3QgaW50KiBpc3Jj ID0gKGNvbnN0IGludCopc3JjOworLSAgICAgICAgaW50KiBpZHN0ID0gKGludCopZHN0OworLSAg ICAgICAgY29uc3QgaW50KiBpdmFsdWUgPSAoY29uc3QgaW50Kil2YWx1ZTsKKy0gICAgICAgIGlu dCB2MCA9IGl2YWx1ZVswXTsKKy0gICAgICAgIAorLSAgICAgICAgY24gLz0gaXN6OworLSAgICAg ICAgc3Jjc3RlcCAvPSBpc3o7CistICAgICAgICBkc3RzdGVwIC89IGlzejsKKy0KKy0gICAgICAg IHNyY3JvaS53aWR0aCAqPSBjbjsKKy0gICAgICAgIGRzdHJvaS53aWR0aCAqPSBjbjsKKy0gICAg ICAgIGxlZnQgKj0gY247CistCistICAgICAgICBmb3IoIGogPSAxOyBqIDwgY247IGorKyApCist ICAgICAgICAgICAgaWYoIGl2YWx1ZVtqXSAhPSBpdmFsdWVbMF0gKQorLSAgICAgICAgICAgICAg ICBicmVhazsKKy0KKy0gICAgICAgIGlmKCBqID09IGNuICkKKy0gICAgICAgICAgICBjbiA9IDE7 CistCistICAgICAgICBpZiggZHN0cm9pLndpZHRoIDw9IDAgKQorLSAgICAgICAgICAgIHJldHVy biBDVl9PSzsKKy0KKy0gICAgICAgIGZvciggaSA9IDA7IGkgPCBkc3Ryb2kuaGVpZ2h0OyBpKyss IGlkc3QgKz0gZHN0c3RlcCApCistICAgICAgICB7CistICAgICAgICAgICAgaWYoIGkgPCB0b3Ag fHwgaSA+PSB0b3AgKyBzcmNyb2kuaGVpZ2h0ICkKKy0gICAgICAgICAgICB7CistICAgICAgICAg ICAgICAgIGlmKCBjbiA9PSAxICkKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAg ICAgICAgZm9yKCBqID0gMDsgaiA8IGRzdHJvaS53aWR0aDsgaisrICkKKy0gICAgICAgICAgICAg ICAgICAgICAgICBpZHN0W2pdID0gdjA7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAg ICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBmb3Io IGogPSAwOyBqIDwgY247IGorKyApCistICAgICAgICAgICAgICAgICAgICAgICAgaWRzdFtqXSA9 IGl2YWx1ZVtqXTsKKy0gICAgICAgICAgICAgICAgICAgIGZvciggOyBqIDwgZHN0cm9pLndpZHRo OyBqKysgKQorLSAgICAgICAgICAgICAgICAgICAgICAgIGlkc3Rbal0gPSBpZHN0W2ogLSBjbl07 CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgY29udGludWU7CistICAgICAg ICAgICAgfQorLQorLSAgICAgICAgICAgIGlmKCBjbiA9PSAxICkKKy0gICAgICAgICAgICB7Cist ICAgICAgICAgICAgICAgIGZvciggaiA9IDA7IGogPCBsZWZ0OyBqKysgKQorLSAgICAgICAgICAg ICAgICAgICAgaWRzdFtqXSA9IHYwOworLSAgICAgICAgICAgICAgICBmb3IoIGogPSBzcmNyb2ku d2lkdGggKyBsZWZ0OyBqIDwgZHN0cm9pLndpZHRoOyBqKysgKQorLSAgICAgICAgICAgICAgICAg ICAgaWRzdFtqXSA9IHYwOworLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlCistICAg ICAgICAgICAgeworLSAgICAgICAgICAgICAgICBmb3IoIGsgPSAwOyBrIDwgY247IGsrKyApCist ICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIGZvciggaiA9IDA7IGogPCBs ZWZ0OyBqICs9IGNuICkKKy0gICAgICAgICAgICAgICAgICAgICAgICBpZHN0W2ora10gPSBpdmFs dWVba107CistICAgICAgICAgICAgICAgICAgICBmb3IoIGogPSBzcmNyb2kud2lkdGggKyBsZWZ0 OyBqIDwgZHN0cm9pLndpZHRoOyBqICs9IGNuICkKKy0gICAgICAgICAgICAgICAgICAgICAgICBp ZHN0W2ora10gPSBpdmFsdWVba107CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICB9 CistCistICAgICAgICAgICAgaWYoIGlkc3QgKyBsZWZ0ICE9IGlzcmMgKQorLSAgICAgICAgICAg ICAgICBmb3IoIGogPSAwOyBqIDwgc3Jjcm9pLndpZHRoOyBqKysgKQorLSAgICAgICAgICAgICAg ICAgICAgaWRzdFtqICsgbGVmdF0gPSBpc3JjW2pdOworLSAgICAgICAgICAgIGlzcmMgKz0gc3Jj c3RlcDsKKy0gICAgICAgIH0KKysgICAgICAgIGZvciggaiA9IDA7IGogPCBjbjsgaisrICkKKysg ICAgICAgICAgICBjb25zdEJ1ZltpKmNuICsgal0gPSB2YWx1ZVtqXTsKKyAgICAgfQorLSAgICBl bHNlCisrICAgIAorKyAgICBzcmNyb2kud2lkdGggKj0gY247CisrICAgIGRzdHJvaS53aWR0aCAq PSBjbjsKKysgICAgbGVmdCAqPSBjbjsKKysgICAgcmlnaHQgKj0gY247CisrICAgIAorKyAgICB1 Y2hhciogZHN0SW5uZXIgPSBkc3QgKyBkc3RzdGVwKnRvcCArIGxlZnQ7CisrICAgIAorKyAgICBm b3IoIGkgPSAwOyBpIDwgc3Jjcm9pLmhlaWdodDsgaSsrLCBkc3RJbm5lciArPSBkc3RzdGVwLCBz cmMgKz0gc3Jjc3RlcCApCisgICAgIHsKKy0gICAgICAgIHVjaGFyIHYwID0gdmFsdWVbMF07Cist ICAgICAgICAKKy0gICAgICAgIHNyY3JvaS53aWR0aCAqPSBjbjsKKy0gICAgICAgIGRzdHJvaS53 aWR0aCAqPSBjbjsKKy0gICAgICAgIGxlZnQgKj0gY247CistCistICAgICAgICBmb3IoIGogPSAx OyBqIDwgY247IGorKyApCistICAgICAgICAgICAgaWYoIHZhbHVlW2pdICE9IHZhbHVlWzBdICkK Ky0gICAgICAgICAgICAgICAgYnJlYWs7CistCistICAgICAgICBpZiggaiA9PSBjbiApCistICAg ICAgICAgICAgY24gPSAxOworLQorLSAgICAgICAgaWYoIGRzdHJvaS53aWR0aCA8PSAwICkKKy0g ICAgICAgICAgICByZXR1cm4gQ1ZfT0s7CistCistICAgICAgICBmb3IoIGkgPSAwOyBpIDwgZHN0 cm9pLmhlaWdodDsgaSsrLCBkc3QgKz0gZHN0c3RlcCApCistICAgICAgICB7CistICAgICAgICAg ICAgaWYoIGkgPCB0b3AgfHwgaSA+PSB0b3AgKyBzcmNyb2kuaGVpZ2h0ICkKKy0gICAgICAgICAg ICB7CistICAgICAgICAgICAgICAgIGlmKCBjbiA9PSAxICkKKy0gICAgICAgICAgICAgICAgewor LSAgICAgICAgICAgICAgICAgICAgZm9yKCBqID0gMDsgaiA8IGRzdHJvaS53aWR0aDsgaisrICkK Ky0gICAgICAgICAgICAgICAgICAgICAgICBkc3Rbal0gPSB2MDsKKy0gICAgICAgICAgICAgICAg fQorLSAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAg ICAgICAgICAgIGZvciggaiA9IDA7IGogPCBjbjsgaisrICkKKy0gICAgICAgICAgICAgICAgICAg ICAgICBkc3Rbal0gPSB2YWx1ZVtqXTsKKy0gICAgICAgICAgICAgICAgICAgIGZvciggOyBqIDwg ZHN0cm9pLndpZHRoOyBqKysgKQorLSAgICAgICAgICAgICAgICAgICAgICAgIGRzdFtqXSA9IGRz dFtqIC0gY25dOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGNvbnRpbnVl OworLSAgICAgICAgICAgIH0KKy0KKy0gICAgICAgICAgICBpZiggY24gPT0gMSApCistICAgICAg ICAgICAgeworLSAgICAgICAgICAgICAgICBmb3IoIGogPSAwOyBqIDwgbGVmdDsgaisrICkKKy0g ICAgICAgICAgICAgICAgICAgIGRzdFtqXSA9IHYwOworLSAgICAgICAgICAgICAgICBmb3IoIGog PSBzcmNyb2kud2lkdGggKyBsZWZ0OyBqIDwgZHN0cm9pLndpZHRoOyBqKysgKQorLSAgICAgICAg ICAgICAgICAgICAgZHN0W2pdID0gdjA7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVs c2UKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGZvciggayA9IDA7IGsgPCBjbjsg aysrICkKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgZm9yKCBqID0g MDsgaiA8IGxlZnQ7IGogKz0gY24gKQorLSAgICAgICAgICAgICAgICAgICAgICAgIGRzdFtqK2td ID0gdmFsdWVba107CistICAgICAgICAgICAgICAgICAgICBmb3IoIGogPSBzcmNyb2kud2lkdGgg KyBsZWZ0OyBqIDwgZHN0cm9pLndpZHRoOyBqICs9IGNuICkKKy0gICAgICAgICAgICAgICAgICAg ICAgICBkc3RbaitrXSA9IHZhbHVlW2tdOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAg ICAgfQorLQorLSAgICAgICAgICAgIGlmKCBkc3QgKyBsZWZ0ICE9IHNyYyApCistICAgICAgICAg ICAgICAgIGZvciggaiA9IDA7IGogPCBzcmNyb2kud2lkdGg7IGorKyApCistICAgICAgICAgICAg ICAgICAgICBkc3RbaiArIGxlZnRdID0gc3JjW2pdOworLSAgICAgICAgICAgIHNyYyArPSBzcmNz dGVwOworLSAgICAgICAgfQorKyAgICAgICAgaWYoIGRzdElubmVyICE9IHNyYyApCisrICAgICAg ICAgICAgbWVtY3B5KCBkc3RJbm5lciwgc3JjLCBzcmNyb2kud2lkdGggKTsKKysgICAgICAgIG1l bWNweSggZHN0SW5uZXIgLSBsZWZ0LCBjb25zdEJ1ZiwgbGVmdCApOworKyAgICAgICAgbWVtY3B5 KCBkc3RJbm5lciArIHNyY3JvaS53aWR0aCwgY29uc3RCdWYsIHJpZ2h0ICk7CisgICAgIH0KKy0K Ky0gICAgcmV0dXJuIENWX09LOworKyAgICAKKysgICAgZHN0ICs9IGRzdHN0ZXAqdG9wOworKyAg ICAKKysgICAgZm9yKCBpID0gMDsgaSA8IHRvcDsgaSsrICkKKysgICAgICAgIG1lbWNweShkc3Qg KyAoaSAtIHRvcCkqZHN0c3RlcCwgY29uc3RCdWYsIGRzdHJvaS53aWR0aCk7CisrICAgIAorKyAg ICBmb3IoIGkgPSAwOyBpIDwgYm90dG9tOyBpKysgKQorKyAgICAgICAgbWVtY3B5KGRzdCArIChp ICsgc3Jjcm9pLmhlaWdodCkqZHN0c3RlcCwgY29uc3RCdWYsIGRzdHJvaS53aWR0aCk7CisgfQor IAorLQorLUNWX0lNUEwgdm9pZAorLWN2Q29weU1ha2VCb3JkZXIoIGNvbnN0IEN2QXJyKiBzcmNh cnIsIEN2QXJyKiBkc3RhcnIsIEN2UG9pbnQgb2Zmc2V0LAorLSAgICAgICAgICAgICAgICAgIGlu dCBib3JkZXJ0eXBlLCBDdlNjYWxhciB2YWx1ZSApCisrICAgIAorK3ZvaWQgY29weU1ha2VCb3Jk ZXIoIGNvbnN0IE1hdCYgc3JjLCBNYXQmIGRzdCwgaW50IHRvcCwgaW50IGJvdHRvbSwKKysgICAg ICAgICAgICAgICAgICAgIGludCBsZWZ0LCBpbnQgcmlnaHQsIGludCBib3JkZXJUeXBlLCBjb25z dCBTY2FsYXImIHZhbHVlICkKKyB7CistICAgIEN2TWF0IHNyY3N0dWIsICpzcmMgPSAoQ3ZNYXQq KXNyY2FycjsKKy0gICAgQ3ZNYXQgZHN0c3R1YiwgKmRzdCA9IChDdk1hdCopZHN0YXJyOworLSAg ICBDdlNpemUgc3Jjc2l6ZSwgZHN0c2l6ZTsKKy0gICAgaW50IHNyY3N0ZXAsIGRzdHN0ZXA7Cist ICAgIGludCBwaXhfc2l6ZSwgdHlwZTsKKy0KKy0gICAgaWYoICFDVl9JU19NQVQoc3JjKSApCist ICAgICAgICBzcmMgPSBjdkdldE1hdCggc3JjLCAmc3Jjc3R1YiApOworLSAgICAKKy0gICAgaWYo ICFDVl9JU19NQVQoZHN0KSApICAgIAorLSAgICAgICAgZHN0ID0gY3ZHZXRNYXQoIGRzdCwgJmRz dHN0dWIgKTsKKy0KKy0gICAgaWYoIG9mZnNldC54IDwgMCB8fCBvZmZzZXQueSA8IDAgKQorLSAg ICAgICAgQ1ZfRXJyb3IoIENWX1N0c091dE9mUmFuZ2UsICJPZmZzZXQgKGxlZnQvdG9wIGJvcmRl ciB3aWR0aCkgaXMgbmVnYXRpdmUiICk7CistCistICAgIGlmKCBzcmMtPnJvd3MgKyBvZmZzZXQu eSA+IGRzdC0+cm93cyB8fCBzcmMtPmNvbHMgKyBvZmZzZXQueCA+IGRzdC0+Y29scyApCistICAg ICAgICBDVl9FcnJvciggQ1ZfU3RzQmFkU2l6ZSwgIlNvdXJjZSBhcnJheSBpcyB0b28gYmlnIG9y IGRlc3RpbmF0aW9uIGFycmF5IGlzIHRvbyBzbWFsbCIgKTsKKy0KKy0gICAgaWYoICFDVl9BUkVf VFlQRVNfRVEoIHNyYywgZHN0ICkpCistICAgICAgICBDVl9FcnJvciggQ1ZfU3RzVW5tYXRjaGVk Rm9ybWF0cywgIiIgKTsKKy0KKy0gICAgdHlwZSA9IENWX01BVF9UWVBFKHNyYy0+dHlwZSk7Cist ICAgIHBpeF9zaXplID0gQ1ZfRUxFTV9TSVpFKHR5cGUpOworLSAgICBzcmNzaXplID0gY3ZHZXRN YXRTaXplKHNyYyk7CistICAgIGRzdHNpemUgPSBjdkdldE1hdFNpemUoZHN0KTsKKy0gICAgc3Jj c3RlcCA9IHNyYy0+c3RlcDsKKy0gICAgZHN0c3RlcCA9IGRzdC0+c3RlcDsKKy0gICAgaWYoIHNy Y3N0ZXAgPT0gMCApCistICAgICAgICBzcmNzdGVwID0gQ1ZfU1RVQl9TVEVQOworLSAgICBpZigg ZHN0c3RlcCA9PSAwICkKKy0gICAgICAgIGRzdHN0ZXAgPSBDVl9TVFVCX1NURVA7CistCistICAg IGJvcmRlcnR5cGUgJj0gMTU7CistICAgIGlmKCBib3JkZXJ0eXBlID09IElQTF9CT1JERVJfUkVQ TElDQVRFICkKKy0gICAgeworLSAgICAgICAgaWN2Q29weVJlcGxpY2F0ZUJvcmRlcl84dSggc3Jj LT5kYXRhLnB0ciwgc3Jjc3RlcCwgc3Jjc2l6ZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRzdC0+ZGF0YS5wdHIsIGRzdHN0ZXAsIGRzdHNpemUsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSwgb2Zmc2V0LngsIHBpeF9zaXplICk7Cist ICAgIH0KKy0gICAgZWxzZSBpZiggYm9yZGVydHlwZSA9PSBJUExfQk9SREVSX1JFRkxFQ1RfMTAx ICkKKy0gICAgeworLSAgICAgICAgaWN2Q29weVJlZmxlY3QxMDFCb3JkZXJfOHUoIHNyYy0+ZGF0 YS5wdHIsIHNyY3N0ZXAsIHNyY3NpemUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkc3QtPmRhdGEucHRyLCBkc3RzdGVwLCBkc3RzaXplLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2Zmc2V0LnksIG9mZnNldC54LCBwaXhfc2l6ZSApOworLSAgICB9 CistICAgIGVsc2UgaWYoIGJvcmRlcnR5cGUgPT0gSVBMX0JPUkRFUl9DT05TVEFOVCApCisrICAg IENWX0Fzc2VydCggdG9wID49IDAgJiYgYm90dG9tID49IDAgJiYgbGVmdCA+PSAwICYmIHJpZ2h0 ID49IDAgKTsKKysgICAgCisrICAgIGRzdC5jcmVhdGUoIHNyYy5yb3dzICsgdG9wICsgYm90dG9t LCBzcmMuY29scyArIGxlZnQgKyByaWdodCwgc3JjLnR5cGUoKSApOworKyAgICBpZiggYm9yZGVy VHlwZSAhPSBCT1JERVJfQ09OU1RBTlQgKQorKyAgICAgICAgY29weU1ha2VCb3JkZXJfOHUoIHNy Yy5kYXRhLCBzcmMuc3RlcCwgc3JjLnNpemUoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICBkc3QuZGF0YSwgZHN0LnN0ZXAsIGRzdC5zaXplKCksCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG9wLCBsZWZ0LCAoaW50KXNyYy5lbGVtU2l6ZSgpLCBib3JkZXJUeXBlICk7CisrICAg IGVsc2UKKyAgICAgeworICAgICAgICAgZG91YmxlIGJ1Zls0XTsKKy0gICAgICAgIGN2U2NhbGFy VG9SYXdEYXRhKCAmdmFsdWUsIGJ1Ziwgc3JjLT50eXBlLCAwICk7CistICAgICAgICBpY3ZDb3B5 Q29uc3RCb3JkZXJfOHUoIHNyYy0+ZGF0YS5wdHIsIHNyY3N0ZXAsIHNyY3NpemUsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRzdC0+ZGF0YS5wdHIsIGRzdHN0ZXAsIGRzdHNpemUs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldC55LCBvZmZzZXQueCwgcGl4 X3NpemUsICh1Y2hhciopYnVmICk7CisrICAgICAgICBzY2FsYXJUb1Jhd0RhdGEodmFsdWUsIGJ1 Ziwgc3JjLnR5cGUoKSk7CisrICAgICAgICBjb3B5TWFrZUNvbnN0Qm9yZGVyXzh1KCBzcmMuZGF0 YSwgc3JjLnN0ZXAsIHNyYy5zaXplKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkc3QuZGF0YSwgZHN0LnN0ZXAsIGRzdC5zaXplKCksCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0b3AsIGxlZnQsIChpbnQpc3JjLmVsZW1TaXplKCksICh1Y2hhciopYnVmICk7 CisgICAgIH0KKy0gICAgZWxzZQorLSAgICAgICAgQ1ZfRXJyb3IoIENWX1N0c0JhZEZsYWcsICJV bmtub3duL3Vuc3VwcG9ydGVkIGJvcmRlciB0eXBlIiApOworK30KKysgICAgCisgfQorIAorLW5h bWVzcGFjZSBjdgorLXsKKyAKKy12b2lkIGNvcHlNYWtlQm9yZGVyKCBjb25zdCBNYXQmIHNyYywg TWF0JiBkc3QsIGludCB0b3AsIGludCBib3R0b20sCistICAgICAgICAgICAgICAgICAgICAgaW50 IGxlZnQsIGludCByaWdodCwgaW50IGJvcmRlclR5cGUsIGNvbnN0IFNjYWxhciYgdmFsdWUgKQor K0NWX0lNUEwgdm9pZAorK2N2Q29weU1ha2VCb3JkZXIoIGNvbnN0IEN2QXJyKiBzcmNhcnIsIEN2 QXJyKiBkc3RhcnIsIEN2UG9pbnQgb2Zmc2V0LAorKyAgICAgICAgICAgICAgICAgIGludCBib3Jk ZXJUeXBlLCBDdlNjYWxhciB2YWx1ZSApCisgeworLSAgICBkc3QuY3JlYXRlKCBzcmMucm93cyAr IHRvcCArIGJvdHRvbSwgc3JjLmNvbHMgKyBsZWZ0ICsgcmlnaHQsIHNyYy50eXBlKCkgKTsKKy0g ICAgQ3ZNYXQgX3NyYyA9IHNyYywgX2RzdCA9IGRzdDsKKy0gICAgY3ZDb3B5TWFrZUJvcmRlcigg Jl9zcmMsICZfZHN0LCBQb2ludChsZWZ0LCB0b3ApLCBib3JkZXJUeXBlLCB2YWx1ZSApOworLX0K Ky0KKysgICAgY3Y6Ok1hdCBzcmMgPSBjdjo6Y3ZhcnJUb01hdChzcmNhcnIpLCBkc3QgPSBjdjo6 Y3ZhcnJUb01hdChkc3RhcnIpOworKyAgICBpbnQgbGVmdCA9IG9mZnNldC54LCByaWdodCA9IGRz dC5jb2xzIC0gc3JjLmNvbHMgLSBsZWZ0OworKyAgICBpbnQgdG9wID0gb2Zmc2V0LnksIGJvdHRv bSA9IGRzdC5yb3dzIC0gc3JjLnJvd3MgLSB0b3A7CisrICAgIAorKyAgICBDVl9Bc3NlcnQoIGRz dC50eXBlKCkgPT0gc3JjLnR5cGUoKSApOworKyAgICBjdjo6Y29weU1ha2VCb3JkZXIoIHNyYywg ZHN0LCB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQsIGJvcmRlclR5cGUsIHZhbHVlICk7CisgfQor IAorIC8qIEVuZCBvZiBmaWxlLiAqLworZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvbWwv c3JjL2VtLmNwcCBvcGVuY3YvbW9kdWxlcy9tbC9zcmMvZW0uY3BwCistLS0gT3BlbkNWLTIuMi4w L21vZHVsZXMvbWwvc3JjL2VtLmNwcAkyMDEwLTEyLTA1IDA0OjM1OjI1LjAwMDAwMDAwMCArMDEw MAorKysrIG9wZW5jdi9tb2R1bGVzL21sL3NyYy9lbS5jcHAJMjAxMS0wNS0yNiAxMjo1NzowMC43 MTkwOTMwMDIgKzAyMDAKK0BAIC01ODEsNyArNTgxLDcgQEAKKyAKKyAgICAgX19CRUdJTl9fOwor IAorLSAgICBjdjo6Uk5HKiBybmcgPSAmY3Y6OnRoZVJORygpOworKyAgICBjdjo6Uk5HIHJuZygw eEZGRkZGRkZGKTsKKyAgICAgaW50IGksIGosIGssIG5zYW1wbGVzLCBkaW1zOworICAgICBpbnQg aXRlciA9IDA7CisgICAgIGRvdWJsZSBtYXhfZGlzdCA9IERCTF9NQVg7CitAQCAtNjA1LDcgKzYw NSw3IEBACisgICAgIHsKKyAgICAgICAgIGZvciggaSA9IDA7IGkgPCBuc2FtcGxlczsgaSsrICkK KyAgICAgICAgICAgICBsYWJlbHMtPmRhdGEuaVtpXSA9IGkqbmNsdXN0ZXJzL25zYW1wbGVzOwor LSAgICAgICAgY3ZSYW5kU2h1ZmZsZSggbGFiZWxzLCAmcm5nLT5zdGF0ZSApOworKyAgICAgICAg Y3ZSYW5kU2h1ZmZsZSggbGFiZWxzLCAmcm5nLnN0YXRlICk7CisgICAgIH0KKyAKKyAgICAgZm9y KCA7OyApCitAQCAtNzAyLDcgKzcwMiw3IEBACisgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0 KiBzOworICAgICAgICAgICAgICAgICBmb3IoIGogPSAwOyBqIDwgMTA7IGorKyApCisgICAgICAg ICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIGkgPSAoKnJuZykobnNhbXBsZXMpOwor KyAgICAgICAgICAgICAgICAgICAgaSA9IHJuZyhuc2FtcGxlcyk7CisgICAgICAgICAgICAgICAg ICAgICBpZiggY291bnRlcnMtPmRhdGEuaVtsYWJlbHMtPmRhdGEuaVtpXV0gPiAxICkKKyAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorQEAgLTczOCw3 ICs3MzgsNyBAQAorICAgICAgICAgaWYoIGNvdW50ZXJzLT5kYXRhLmlba10gPT0gMCApCisgICAg ICAgICAgICAgZm9yKDs7KQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgaSA9ICgq cm5nKShuc2FtcGxlcyk7CisrICAgICAgICAgICAgICAgIGkgPSBybmcobnNhbXBsZXMpOworICAg ICAgICAgICAgICAgICBqID0gbGFiZWxzLT5kYXRhLmlbaV07CisgICAgICAgICAgICAgICAgIGlm KCBjb3VudGVycy0+ZGF0YS5pW2pdID4gMSApCisgICAgICAgICAgICAgICAgIHsKK2RpZmYgLXVy IE9wZW5DVi0yLjIuMC9tb2R1bGVzL21sL3NyYy9nYnQuY3BwIG9wZW5jdi9tb2R1bGVzL21sL3Ny Yy9nYnQuY3BwCistLS0gT3BlbkNWLTIuMi4wL21vZHVsZXMvbWwvc3JjL2didC5jcHAJMjAxMC0x Mi0wNSAwNDozNToyNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuY3YvbW9kdWxlcy9tbC9zcmMv Z2J0LmNwcAkyMDExLTA1LTI2IDEyOjU3OjAwLjcyOTA5MzAwMiArMDIwMAorQEAgLTExLDEwICsx MSw2IEBACisgI2RlZmluZSBDVl9DTVBfRkxPQVQoYSxiKSAoKGEpIDwgKGIpKQ0KKyBzdGF0aWMg Q1ZfSU1QTEVNRU5UX1FTT1JUX0VYKCBpY3ZTb3J0RmxvYXQsIGZsb2F0LCBDVl9DTVBfRkxPQVQs IGZsb2F0KQ0KKyANCistI2lmIEFORFJPSUQNCistI2RlZmluZSBleHBsKHgpIGV4cCh4KQ0KKy0j ZW5kaWYNCistDQorIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIHN0cmluZyBUb1N0cmluZyhpbnQg aSkNCisgew0KK0BAIC00NjEsMTcgKzQ1NywxNyBAQAorICAgICAgICAgew0KKyAgICAgICAgICAg ICBmb3IgKGludCBpPTA7IGk8Z2V0X2xlbihzdWJzYW1wbGVfdHJhaW4pOyArK2kpDQorICAgICAg ICAgICAgIHsNCistICAgICAgICAgICAgICAgIGxvbmcgZG91YmxlIGV4cF9mayA9IDA7DQorLSAg ICAgICAgICAgICAgICBsb25nIGRvdWJsZSBleHBfc2ZpID0gMDsNCisrICAgICAgICAgICAgICAg IGRvdWJsZSBleHBfZmsgPSAwOw0KKysgICAgICAgICAgICAgICAgZG91YmxlIGV4cF9zZmkgPSAw Ow0KKyAgICAgICAgICAgICAgICAgaW50IHNfc3RlcCA9IChzYW1wbGVfaWR4LT5jb2xzID4gc2Ft cGxlX2lkeC0+cm93cykgPyAxDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzYW1w bGVfaWR4LT5zdGVwL0NWX0VMRU1fU0laRShzYW1wbGVfaWR4LT50eXBlKTsNCisgICAgICAgICAg ICAgICAgIGludCBpZHggPSAqKHNhbXBsZV9kYXRhICsgc3Vic2FtcGxlX2RhdGFbaV0qc19zdGVw KTsNCisgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8Y2xh c3NfY291bnQ7ICsraikNCisgICAgICAgICAgICAgICAgIHsNCistICAgICAgICAgICAgICAgICAg ICBsb25nIGRvdWJsZSByZXM7DQorKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlczsNCisg ICAgICAgICAgICAgICAgICAgICByZXMgPSBjdXJyZW50X2RhdGFbaWR4ICsgaipzdW1fcmVzcG9u c2UtPmNvbHNdOw0KKy0gICAgICAgICAgICAgICAgICAgIHJlcyA9IGV4cGwocmVzKTsNCisrICAg ICAgICAgICAgICAgICAgICByZXMgPSBleHAocmVzKTsNCisgICAgICAgICAgICAgICAgICAgICBp ZiAoaiA9PSBrKSBleHBfZmsgPSByZXM7DQorICAgICAgICAgICAgICAgICAgICAgZXhwX3NmaSAr PSByZXM7DQorICAgICAgICAgICAgICAgICB9DQorQEAgLTYyNSw3ICs2MjEsNyBAQAorIGZsb2F0 IEN2R0JUcmVlczo6ZmluZF9vcHRpbWFsX3ZhbHVlKCBjb25zdCBDdk1hdCogX0lkeCApDQorIHsN CisgDQorLSAgICBsb25nIGRvdWJsZSBnYW1tYSA9IChsb25nIGRvdWJsZSkwLjA7DQorKyAgICBk b3VibGUgZ2FtbWEgPSAoZG91YmxlKTAuMDsNCisgDQorICAgICBpbnQqIGlkeCA9IF9JZHgtPmRh dGEuaTsNCisgICAgIGZsb2F0KiByZXNwX2RhdGEgPSBvcmlnX3Jlc3BvbnNlLT5kYXRhLmZsOw0K K0BAIC02MzksNyArNjM1LDcgQEAKKyAgICAgICAgIHsNCisgICAgICAgICAgICAgZm9yIChpbnQg aT0wOyBpPG47ICsraSkNCisgICAgICAgICAgICAgICAgIGdhbW1hICs9IHJlc3BfZGF0YVtpZHhb aV1dIC0gY3VyX2RhdGFbaWR4W2ldXTsNCistICAgICAgICAgICAgZ2FtbWEgLz0gKGxvbmcgZG91 YmxlKW47DQorKyAgICAgICAgICAgIGdhbW1hIC89IChkb3VibGUpbjsNCisgICAgICAgICB9OyBi cmVhazsNCisgDQorICAgICBjYXNlIEFCU09MVVRFX0xPU1M6DQorQEAgLTY3MSw3ICs2NjcsNyBA QAorICAgICAgICAgICAgICAgICBmbG9hdCBkaWYgPSByZXNpZHVhbHNbaV0gLSByX21lZGlhbjsN CisgICAgICAgICAgICAgICAgIGdhbW1hICs9IChkZWx0YSA8IGZhYnMoZGlmKSkgPyBTaWduKGRp ZikqZGVsdGEgOiBkaWY7DQorICAgICAgICAgICAgIH0NCistICAgICAgICAgICAgZ2FtbWEgLz0g KGxvbmcgZG91YmxlKW47DQorKyAgICAgICAgICAgIGdhbW1hIC89IChkb3VibGUpbjsNCisgICAg ICAgICAgICAgZ2FtbWEgKz0gcl9tZWRpYW47DQorICAgICAgICAgICAgIGRlbGV0ZVtdIHJlc2lk dWFsczsNCisgDQorQEAgLTY4MCw5ICs2NzYsOSBAQAorICAgICBjYXNlIERFVklBTkNFX0xPU1M6 DQorICAgICAgICAgew0KKyAgICAgICAgICAgICBmbG9hdCogZ3JhZF9kYXRhID0gZGF0YS0+cmVz cG9uc2VzLT5kYXRhLmZsOw0KKy0gICAgICAgICAgICBsb25nIGRvdWJsZSB0bXAxID0gMDsNCist ICAgICAgICAgICAgbG9uZyBkb3VibGUgdG1wMiA9IDA7DQorLSAgICAgICAgICAgIGxvbmcgZG91 YmxlIHRtcCAgPSAwOw0KKysgICAgICAgICAgICBkb3VibGUgdG1wMSA9IDA7DQorKyAgICAgICAg ICAgIGRvdWJsZSB0bXAyID0gMDsNCisrICAgICAgICAgICAgZG91YmxlIHRtcCAgPSAwOw0KKyAg ICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKQ0KKyAgICAgICAgICAgICB7DQorICAg ICAgICAgICAgICAgICB0bXAgPSBncmFkX2RhdGFbaWR4W2ldXTsNCitAQCAtNjk0LDcgKzY5MCw3 IEBACisgICAgICAgICAgICAgICAgIHRtcDIgPSAxOw0KKyAgICAgICAgICAgICB9DQorIA0KKy0g ICAgICAgICAgICBnYW1tYSA9ICgobG9uZyBkb3VibGUpKGNsYXNzX2NvdW50LTEpKSAvIChsb25n IGRvdWJsZSljbGFzc19jb3VudCAqICh0bXAxL3RtcDIpOw0KKysgICAgICAgICAgICBnYW1tYSA9 ICgoZG91YmxlKShjbGFzc19jb3VudC0xKSkgLyAoZG91YmxlKWNsYXNzX2NvdW50ICogKHRtcDEv dG1wMik7DQorICAgICAgICAgfTsgYnJlYWs7DQorIA0KKyAgICAgZGVmYXVsdDogYnJlYWs7DQor ZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvbWwvc3JjL25iYXllcy5jcHAgb3BlbmN2L21v ZHVsZXMvbWwvc3JjL25iYXllcy5jcHAKKy0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9tbC9zcmMv bmJheWVzLmNwcAkyMDEwLTEyLTA1IDA0OjM1OjI1LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5j di9tb2R1bGVzL21sL3NyYy9uYmF5ZXMuY3BwCTIwMTEtMDUtMjYgMTI6NTc6MDAuNzMyMDkzMDAy ICswMjAwCitAQCAtMjU5LDcgKzI1OSw3IEBACisgICAgICAgICAgICAgZGV0ICo9IHctPmRhdGEu ZGJbal07CisgCisgICAgICAgICBDVl9DQUxMKCBjdkRpdiggTlVMTCwgdywgdyApKTsKKy0gICAg ICAgIGMtPmRhdGEuZGJbY2xzXSA9IGxvZyggZGV0ICk7CisrICAgICAgICBjLT5kYXRhLmRiW2Ns c10gPSBkZXQgPiAwID8gbG9nKGRldCkgOiAtNzAwOworICAgICB9CisgCisgICAgIHJlc3VsdCA9 IHRydWU7CitkaWZmIC11ciBPcGVuQ1YtMi4yLjAvT3BlbkNWTW9kdWxlLmNtYWtlIG9wZW5jdi9P cGVuQ1ZNb2R1bGUuY21ha2UKKy0tLSBPcGVuQ1YtMi4yLjAvT3BlbkNWTW9kdWxlLmNtYWtlCTIw MTAtMTItMDUgMDQ6MzU6MjUuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbmN2L09wZW5DVk1vZHVs ZS5jbWFrZQkyMDExLTA1LTI2IDEyOjU3OjU2LjQ0NjA5MzAwMiArMDIwMAorQEAgLTY2LDcgKzY2 LDcgQEAKKyAJICAgICAgICAgICAgKQorIAkgICAgZW5kaWYoKQorIAkgICAgc2V0X3RhcmdldF9w cm9wZXJ0aWVzKCR7dGhlX3RhcmdldH0gUFJPUEVSVElFUworLQkgICAgICAgIExJTktfRkxBR1Mg Ii9OT0RFRkFVTFRMSUI6bGliYyIKKysJICAgICAgICBMSU5LX0ZMQUdTICIvTk9ERUZBVUxUTElC OmxpYmMgL0RFQlVHIgorIAkgICAgICAgICkKKyAJZW5kaWYoKQorIAorZGlmZiAtdXIgT3BlbkNW LTIuMi4wL3Rlc3RzL2N2L3NyYy9hY29sb3IuY3BwIG9wZW5jdi90ZXN0cy9jdi9zcmMvYWNvbG9y LmNwcAorLS0tIE9wZW5DVi0yLjIuMC90ZXN0cy9jdi9zcmMvYWNvbG9yLmNwcAkyMDEwLTEyLTA1 IDA0OjM1OjI1LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5jdi90ZXN0cy9jdi9zcmMvYWNvbG9y LmNwcAkyMDExLTA1LTI2IDEyOjQ2OjA2LjgzNzA5MzAwMyArMDIwMAorQEAgLTE3MzQsOSArMTcz NCw2IEBACisgICAgIGludCBiaSA9IDA7CisgICAgIGludCBzdGVwID0gc3JjLT5zdGVwOworIAor LSAgICBtZW1zZXQoIGRzdC0+ZGF0YS5wdHIsIDAsIGRzdC0+Y29scyozICk7CistICAgIG1lbXNl dCggZHN0LT5kYXRhLnB0ciArIChkc3QtPnJvd3MtMSkqZHN0LT5zdGVwLCAwLCBkc3QtPmNvbHMq MyApOworLQorICAgICBpZiggZndkX2NvZGUgPT0gQ1ZfQmF5ZXJSRzJCR1IgfHwgZndkX2NvZGUg PT0gQ1ZfQmF5ZXJHUjJCR1IgKQorICAgICAgICAgYmkgXj0gMjsKKyAKK0BAIC0xNzQ1LDggKzE3 NDIsMTIgQEAKKyAgICAgICAgIGNvbnN0IHVjaGFyKiBwdHIgPSBzcmMtPmRhdGEucHRyICsgaSpz dGVwICsgMTsKKyAgICAgICAgIHVjaGFyKiBkc3Rfcm93ID0gZHN0LT5kYXRhLnB0ciArIGkqZHN0 LT5zdGVwICsgMzsKKyAgICAgICAgIGludCBzYXZlX2NvZGUgPSBjb2RlOworLSAgICAgICAgZHN0 X3Jvd1stM10gPSBkc3Rfcm93Wy0yXSA9IGRzdF9yb3dbLTFdID0gMDsKKy0gICAgICAgIGRzdF9y b3dbY29scyozXSA9IGRzdF9yb3dbY29scyozKzFdID0gZHN0X3Jvd1tjb2xzKjMrMl0gPSAwOwor KyAgICAgICAgaWYoIGNvbHMgPD0gMCApCisrICAgICAgICB7CisrICAgICAgICAgICAgZHN0X3Jv d1stM10gPSBkc3Rfcm93Wy0yXSA9IGRzdF9yb3dbLTFdID0gMDsKKysgICAgICAgICAgICBkc3Rf cm93W2NvbHMqM10gPSBkc3Rfcm93W2NvbHMqMysxXSA9IGRzdF9yb3dbY29scyozKzJdID0gMDsK KysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIGZvciggaiA9 IDA7IGogPCBjb2xzOyBqKysgKQorICAgICAgICAgeworQEAgLTE3NjgsOSArMTc2OSwzNSBAQAor ICAgICAgICAgICAgIGRzdF9yb3dbaiozICsgMV0gPSAodWNoYXIpZzsKKyAgICAgICAgICAgICBk c3Rfcm93W2oqMyArIChiaV4yKV0gPSAodWNoYXIpcjsKKyAgICAgICAgIH0KKysgICAgICAgIAor KyAgICAgICAgZHN0X3Jvd1stM10gPSBkc3Rfcm93WzBdOworKyAgICAgICAgZHN0X3Jvd1stMl0g PSBkc3Rfcm93WzFdOworKyAgICAgICAgZHN0X3Jvd1stMV0gPSBkc3Rfcm93WzJdOworKyAgICAg ICAgZHN0X3Jvd1tjb2xzKjNdID0gZHN0X3Jvd1tjb2xzKjMtM107CisrICAgICAgICBkc3Rfcm93 W2NvbHMqMysxXSA9IGRzdF9yb3dbY29scyozLTJdOworKyAgICAgICAgZHN0X3Jvd1tjb2xzKjMr Ml0gPSBkc3Rfcm93W2NvbHMqMy0xXTsKKysgICAgICAgIAorICAgICAgICAgY29kZSA9IHNhdmVf Y29kZSBeIDE7CisgICAgICAgICBiaSBePSAyOworICAgICB9CisrICAgIAorKyAgICBpZiggc3Jj LT5yb3dzIDw9IDIgKQorKyAgICB7CisrICAgICAgICBtZW1zZXQoIGRzdC0+ZGF0YS5wdHIsIDAs IChjb2xzKzIpKjMgKTsKKysgICAgICAgIG1lbXNldCggZHN0LT5kYXRhLnB0ciArIChkc3QtPnJv d3MtMSkqZHN0LT5zdGVwLCAwLCAoY29scysyKSozICk7CisrICAgIH0KKysgICAgZWxzZQorKyAg ICB7CisrICAgICAgICB1Y2hhciogdG9wX3JvdyA9IGRzdC0+ZGF0YS5wdHI7CisrICAgICAgICB1 Y2hhciogYm90dG9tX3JvdyA9IGRzdC0+ZGF0YS5wdHIgKyBkc3QtPnN0ZXAqKGRzdC0+cm93cy0x KTsKKysgICAgICAgIGludCBkc3RlcCA9IGRzdC0+c3RlcDsKKysgICAgICAgIAorKyAgICAgICAg Zm9yKCBqID0gMDsgaiA8IChjb2xzKzIpKjM7IGorKyApCisrICAgICAgICB7CisrICAgICAgICAg ICAgdG9wX3Jvd1tqXSA9IHRvcF9yb3dbaiArIGRzdGVwXTsKKysgICAgICAgICAgICBib3R0b21f cm93W2pdID0gYm90dG9tX3Jvd1tqIC0gZHN0ZXBdOworKyAgICAgICAgfQorKyAgICB9CisgfQor IAorIENWX0NvbG9yQmF5ZXJUZXN0IGNvbG9yX2JheWVyX3Rlc3Q7CitkaWZmIC11ciBPcGVuQ1Yt Mi4yLjAvdGVzdHMvY3Yvc3JjL2FmbG9vZGZpbGwuY3BwIG9wZW5jdi90ZXN0cy9jdi9zcmMvYWZs b29kZmlsbC5jcHAKKy0tLSBPcGVuQ1YtMi4yLjAvdGVzdHMvY3Yvc3JjL2FmbG9vZGZpbGwuY3Bw CTIwMTAtMTItMDUgMDQ6MzU6MjUuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbmN2L3Rlc3RzL2N2 L3NyYy9hZmxvb2RmaWxsLmNwcAkyMDExLTA1LTI2IDEyOjQ2OjA2Ljg1MzA5MzAwMyArMDIwMAor QEAgLTEzOCwxMiArMTM4LDEyIEBACisgICAgICAgICBsX2RpZmYgPSB1X2RpZmYgPSBjdlNjYWxh ckFsbCgwLik7CisgICAgIGVsc2UKKyAgICAgeworLSAgICAgICAgQ3ZNYXQgbSA9IGN2TWF0KCAx LCA4LCBDVl82NEYsIGJ1ZiApOworLSAgICAgICAgY3ZSYW5kQXJyKCBybmcsICZtLCBDVl9SQU5E X05PUk1BTCwgY3ZTY2FsYXJBbGwoMCksIGN2U2NhbGFyQWxsKDQpICk7CisrICAgICAgICBDdk1h dCBtID0gY3ZNYXQoIDEsIDgsIENWXzE2UywgYnVmICk7CisrICAgICAgICBjdlJhbmRBcnIoIHJu ZywgJm0sIENWX1JBTkRfTk9STUFMLCBjdlNjYWxhckFsbCgwKSwgY3ZTY2FsYXJBbGwoMzIpICk7 CisgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgNDsgaSsrICkKKyAgICAgICAgIHsKKy0gICAgICAg ICAgICBsX2RpZmYudmFsW2ldID0gZmFicyhtLmRhdGEuZGJbaV0pOworLSAgICAgICAgICAgIHVf ZGlmZi52YWxbaV0gPSBmYWJzKG0uZGF0YS5kYltpKzRdKTsKKysgICAgICAgICAgICBsX2RpZmYu dmFsW2ldID0gZmFicyhtLmRhdGEuc1tpXS8xNi4pOworKyAgICAgICAgICAgIHVfZGlmZi52YWxb aV0gPSBmYWJzKG0uZGF0YS5zW2krNF0vMTYuKTsKKyAgICAgICAgIH0KKyAgICAgfQorIAoKZGlm ZiAtLWdpdCBhL29wZW5jdi5zcGVjIGIvb3BlbmN2LnNwZWMKaW5kZXggMDUwMjljZC4uY2M0YTY2 YiAxMDA2NDQKLS0tIGEvb3BlbmN2LnNwZWMKKysrIGIvb3BlbmN2LnNwZWMKQEAgLTQsNyArNCw3 IEBACiAKIE5hbWU6ICAgICAgICAgICBvcGVuY3YKIFZlcnNpb246ICAgICAgICAyLjIuMAotUmVs ZWFzZTogICAgICAgIDUlez9kaXN0fQorUmVsZWFzZTogICAgICAgIDYlez9kaXN0fQogU3VtbWFy eTogICAgICAgIENvbGxlY3Rpb24gb2YgYWxnb3JpdGhtcyBmb3IgY29tcHV0ZXIgdmlzaW9uCiAK IEdyb3VwOiAgICAgICAgICBEZXZlbG9wbWVudC9MaWJyYXJpZXMKQEAgLTIzLDcgKzIzLDcgQEAg UGF0Y2gzOiAgICAgICAgIE9wZW5DVi0yLjItZml4cGMucGF0Y2gKIFBhdGNoNDogICAgICAgICBv cGVuY3YtMi4xLjAtb3BlbmN2Y29uZmlnLnBhdGNoCiBQYXRjaDU6ICAgICAgICAgT3BlbkNWLTIu Mi1udW1weS5wYXRjaAogUGF0Y2g2OiAgICAgICAgIE9wZW5DVi0yLjItZ2NjNDYucGF0Y2gKLVBh dGNoNzogICAgICAgICBPcGVuQ1YtMi4yLWJhY2twb3J0LXY0bC5wYXRjaAorUGF0Y2g3OiAgICAg ICAgIE9wZW5DVi0yLjItYjIyLWJhY2twb3J0XzIwMTEwNTI2LnBhdGNoCiBCdWlsZFJvb3Q6ICAg ICAgJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0tcm9vdC0lKCV7X19p ZF91fSAtbikKIAogQnVpbGRSZXF1aXJlczogIGxpYnRvb2wKQEAgLTEwNSw3ICsxMDUsNyBAQCBU aGlzIHBhY2thZ2UgY29udGFpbnMgUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgT3BlbkNWIGxpYnJh cnkuCiAlcGF0Y2g0IC1wMSAtYiAub3BlbmN2Y29uZmlnCiAlcGF0Y2g1IC1wMSAtYiAubnVtcHkK ICVwYXRjaDYgLXAxIC1iIC5nY2M0NgotJXBhdGNoNyAtcDAKKyVwYXRjaDcgLXAxCiAKICNTYXZl IHNvbWUgY29udmFudCBoZWFkZXJzIGZvciBub3c6CiBjcCAtcCAzcmRwYXJ0eS9pbmNsdWRlL2Ni bGFzLmggM3JkcGFydHkKQEAgLTI0Miw2ICsyNDIsOSBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09U CiAKIAogJWNoYW5nZWxvZworKiBUaHUgTWF5IDI2IDIwMTEgTmljb2xhcyBDaGF1dmV0IDxrd2l6 YXJ0QGdtYWlsLmNvbT4gLSAyLjIuMC02CistIEJhY2twb3J0IGZpeGVzIGZyb20gYnJhbmNoIDIu MiB0byBkYXRlCisKICogVHVlIE1heSAxNyAyMDExIE5pY29sYXMgQ2hhdXZldCA8a3dpemFydEBn bWFpbC5jb20+IC0gMi4yLjAtNQogLSBSZS1lbmFibGUgdjRsIG9uIGYxNQogLSBSZW1vdmUgdW51 c2VkIGNtYWtlIG9wdGlvbnMK