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: Jerry James To: git-commits@fedoraproject.org Subject: [rpms/coin-or-HiGHS] rawhide: Version 1.15.1 Date: Tue, 14 Jul 2026 16:55:44 GMT Message-ID: <178404814400.1.12077965259280100057.rpms-coin-or-HiGHS-b9404b79ed48@fedoraproject.org> List-ID: X-Git-Repo: rpms/coin-or-HiGHS X-Git-Branch: rawhide X-Git-Rev: b9404b79ed484a64cfc07725dd431322453ef5d3 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvY29pbi1vci1IaUdIUwogICAgICAgICAgICBCcmFuY2ggOiByYXdoaWRlCiAg ICAgICAgICAgIENvbW1pdCA6IGI5NDA0Yjc5ZWQ0ODRhNjRjZmMwNzcyNWRkNDMxMzIyNDUzZWY1 ZDMKICAgICAgICAgICAgQXV0aG9yIDogSmVycnkgSmFtZXMgPGxvZ2FuamVycnlAZ21haWwuY29t PgogICAgICAgICAgICBEYXRlICAgOiAyMDI2LTA3LTE0VDEwOjU1OjMxLTA2OjAwCiAgICAgICAg ICAgIFN0YXRzICA6ICsxNTMvLTEwNzUgaW4gNCBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6 IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvY29pbi1vci1IaUdIUy9jL2I5NDA0 Yjc5ZWQ0ODRhNjRjZmMwNzcyNWRkNDMxMzIyNDUzZWY1ZDM/YnJhbmNoPXJhd2hpZGUKCiAgICAg ICAgICAgIExvZzoKICAgICAgICAgICAgVmVyc2lvbiAxLjE1LjEKCi0gQnVuZGxlIEFNRCBhbmQg bWV0aXMgdW50aWwgdGhleSBhcmUgdXBkYXRlZCBpbiBSYXdoaWRlCi0gUmVtb3ZlIHVudXNlZCBC dWlsZFJlcXVpcmVzCgotLS0KZGlmZiAtLWdpdCBhL2NvaW4tb3ItSGlHSFMtaXNzdWUtMjk1Ny5w YXRjaCBiL2NvaW4tb3ItSGlHSFMtaXNzdWUtMjk1Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYzk2MTZkMy4uMDAwMDAwMAotLS0gYS9jb2luLW9yLUhpR0hTLWlzc3VlLTI5 NTcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NjMgKzAsMCBAQAotRnJvbSAwMTk5Zjk1YTQ1 M2VhZGJhNmFhYjUxNjFiYjRiYjA3OGIzM2NkZmI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogZndlc3NlbG0gPGZ3ZXNzZWxtQG1hdGh3b3Jrcy5jb20+Ci1EYXRlOiBXZWQsIDggQXBy IDIwMjYgMTE6MjQ6NDUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzldIFdJUAotCi0tLS0KLSBo aWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwIHwgNDYgKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDIzIGRlbGV0 aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaGlnaHMvcHJlc29sdmUvSFByZXNvbHZlLmNwcCBiL2hp Z2hzL3ByZXNvbHZlL0hQcmVzb2x2ZS5jcHAKLWluZGV4IDhmNTViMjJiZTMuLmRhZDc4N2FlYjUg MTAwNjQ0Ci0tLS0gYS9oaWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwCi0rKysgYi9oaWdocy9w cmVzb2x2ZS9IUHJlc29sdmUuY3BwCi1AQCAtNDk4Miw3ICs0OTgyLDExIEBAIEhQcmVzb2x2ZTo6 UmVzdWx0IEhQcmVzb2x2ZTo6c2luZ2xldG9uQ29sU3R1ZmZpbmcoCi0gICAvLyBjb3VudCBudW1i ZXIgb2YgZml4ZWQgY29sdW1ucwotICAgSGlnaHNJbnQgbnVtRml4ZWRDb2xzID0gMDsKLSAKLS0g IHR5cGVkZWYgc3RkOjp0dXBsZTxIaWdoc0ludCwgZG91YmxlLCBIaWdoc0ludD4gY2FuZGlkYXRl OwotKyAgc3RydWN0IGNhbmRpZGF0ZSB7Ci0rICAgIEhpZ2hzSW50IGNvbDsKLSsgICAgZG91Ymxl IHZhbDsKLSsgICAgSGlnaHNJbnQgbXVsdGlwbGllcjsKLSsgIH07Ci0gCi0gICBhdXRvIGlzU2lu Z2xldG9uID0gWyZdKEhpZ2hzSW50IGNvbCkgewotICAgICByZXR1cm4gKCFjb2xEZWxldGVkW2Nv bF0gJiYgY29sc2l6ZVtjb2xdID09IDEgJiYKLUBAIC00OTkxLDkgKzQ5OTUsOSBAQCBIUHJlc29s dmU6OlJlc3VsdCBIUHJlc29sdmU6OnNpbmdsZXRvbkNvbFN0dWZmaW5nKAotIAotICAgYXV0byBz b3J0Q29scyA9IFsmXShzdGQ6OnZlY3RvcjxjYW5kaWRhdGU+JiB2ZWMpIHsKLSAgICAgYm9vc3Q6 OnNvcnQ6OnBkcXNvcnQodmVjLmJlZ2luKCksIHZlYy5lbmQoKSwKLS0gICAgICAgICAgICBbJl0o Y29uc3QgY2FuZGlkYXRlJiBjb2wxLCBjb25zdCBjYW5kaWRhdGUmIGNvbDIpIHsKLS0gICAgICAg ICAgICAgIHJldHVybiBtb2RlbC0+Y29sX2Nvc3RfW3N0ZDo6Z2V0PDA+KGNvbDEpXSAvIHN0ZDo6 Z2V0PDE+KGNvbDEpIDwKLS0gICAgICAgICAgICAgICAgICAgICBtb2RlbC0+Y29sX2Nvc3RfW3N0 ZDo6Z2V0PDA+KGNvbDIpXSAvIHN0ZDo6Z2V0PDE+KGNvbDIpOwotKyAgICAgICAgICAgIFsmXShj b25zdCBjYW5kaWRhdGUmIGMxLCBjb25zdCBjYW5kaWRhdGUmIGMyKSB7Ci0rICAgICAgICAgICAg ICByZXR1cm4gbW9kZWwtPmNvbF9jb3N0X1tjMS5jb2xdIC8gYzEudmFsIDwKLSsgICAgICAgICAg ICAgICAgICAgICBtb2RlbC0+Y29sX2Nvc3RfW2MyLmNvbF0gLyBjMi52YWw7Ci0gICAgICAgICAg ICAgfSk7Ci0gICB9OwotIAotQEAgLTUwMTgsNyArNTAyMiw3IEBAIEhQcmVzb2x2ZTo6UmVzdWx0 IEhQcmVzb2x2ZTo6c2luZ2xldG9uQ29sU3R1ZmZpbmcoCi0gICAgICAgICBhbGxJbnRlZ2VyICYm IG1vZGVsLT5pbnRlZ3JhbGl0eV9bY29sXSA9PSBIaWdoc1ZhclR5cGU6OmtJbnRlZ2VyOwotICAg ICBtaW5XZWlnaHQgPSBzdGQ6Om1pbihtaW5XZWlnaHQsIGRpcmVjdGlvbiAqIHZhbCk7Ci0gICAg IG1heFdlaWdodCA9IHN0ZDo6bWF4KG1heFdlaWdodCwgZGlyZWN0aW9uICogdmFsKTsKLS0gICAg Y2FuZGlkYXRlcy5wdXNoX2JhY2soc3RkOjptYWtlX3R1cGxlKGNvbCwgdmFsLCBkaXJlY3Rpb24p KTsKLSsgICAgY2FuZGlkYXRlcy5wdXNoX2JhY2soY2FuZGlkYXRle2NvbCwgdmFsLCBkaXJlY3Rp b259KTsKLSAgIH07Ci0gCi0gICAvLyBsYW1iZGEgZm9yIGZpeGluZyBhIHZhcmlhYmxlCi1AQCAt NTA4Myw0MCArNTA4NywzNiBAQCBIUHJlc29sdmU6OlJlc3VsdCBIUHJlc29sdmU6OnNpbmdsZXRv bkNvbFN0dWZmaW5nKAotIAotICAgICAvLyByZW1vdmUgaW50ZWdlciBjb2x1bW5zIGlmIHRoZXJl IGFyZSBhbHNvIGNvbnRpbnVvdXMgb25lcwotICAgICBpZiAoIWFsbEludGVnZXIpCi0tICAgICAg Y2FuZGlkYXRlcy5lcmFzZSgKLS0gICAgICAgICAgc3RkOjpyZW1vdmVfaWYoY2FuZGlkYXRlcy5i ZWdpbigpLCBjYW5kaWRhdGVzLmVuZCgpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbJl0o Y29uc3QgY2FuZGlkYXRlJiBwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG1vZGVsLT5pbnRlZ3JhbGl0eV9bc3RkOjpnZXQ8MD4ocCldID09Ci0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEhpZ2hzVmFyVHlwZTo6a0ludGVnZXI7Ci0tICAgICAgICAgICAg ICAgICAgICAgICAgIH0pLAotLSAgICAgICAgICBjYW5kaWRhdGVzLmVuZCgpKTsKLSsgICAgICBj YW5kaWRhdGVzLmVyYXNlKHN0ZDo6cmVtb3ZlX2lmKGNhbmRpZGF0ZXMuYmVnaW4oKSwgY2FuZGlk YXRlcy5lbmQoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsmXShj b25zdCBjYW5kaWRhdGUmIHApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIG1vZGVsLT5pbnRlZ3JhbGl0eV9bcC5jb2xdID09Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaWdoc1ZhclR5cGU6OmtJbnRlZ2Vy OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCi0rICAgICAgICAg ICAgICAgICAgICAgICBjYW5kaWRhdGVzLmVuZCgpKTsKLSAKLSAgICAgLy8gc29ydCBjYW5kaWRh dGVzCi0gICAgIHNvcnRDb2xzKGNhbmRpZGF0ZXMpOwotIAotICAgICAvLyBjaGVjayBjYW5kaWRh dGVzCi0gICAgIGZvciAoY29uc3QgYXV0byYgdCA6IGNhbmRpZGF0ZXMpIHsKLS0gICAgICAvLyBn ZXQgdmFyaWFibGUgaW5kZXgsIGNvZWZmaWNpZW50IGFuZCBtdWx0aXBsaWVyICgtMSBpZiBzaWdu IHdhcyBmbGlwcGVkKQotLSAgICAgIEhpZ2hzSW50IGogPSBzdGQ6OmdldDwwPih0KTsKLS0gICAg ICBkb3VibGUgYWogPSBzdGQ6OmdldDwxPih0KTsKLS0gICAgICBIaWdoc0ludCBtdWx0aXBsaWVy ID0gc3RkOjpnZXQ8Mj4odCk7Ci0gICAgICAgLy8gYm90aCBib3VuZHMgaGF2ZSB0byBiZSBmaW5p dGUKLS0gICAgICBpZiAobW9kZWwtPmNvbF9sb3dlcl9bal0gPT0gLWtIaWdoc0luZiB8fAotLSAg ICAgICAgICBtb2RlbC0+Y29sX3VwcGVyX1tqXSA9PSBrSGlnaHNJbmYpCi0rICAgICAgaWYgKG1v ZGVsLT5jb2xfbG93ZXJfW3QuY29sXSA9PSAta0hpZ2hzSW5mIHx8Ci0rICAgICAgICAgIG1vZGVs LT5jb2xfdXBwZXJfW3QuY29sXSA9PSBrSGlnaHNJbmYpCi0gICAgICAgICBicmVhazsKLSAgICAg ICAvLyBjb21wdXRlIGRlbHRhIChib3VuZCBkaWZmZXJlbmNlKQotLSAgICAgIEhpZ2hzQ0RvdWJs ZSBkZWx0YSA9IG11bHRpcGxpZXIgKiBhaiAqCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN0YXRpY19jYXN0PEhpZ2hzQ0RvdWJsZT4obW9kZWwtPmNvbF91cHBlcl9bal0pIC0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SGlnaHNDRG91YmxlPihtb2RlbC0+ Y29sX2xvd2VyX1tqXSkpOwotKyAgICAgIEhpZ2hzQ0RvdWJsZSBkZWx0YSA9Ci0rICAgICAgICAg IHQubXVsdGlwbGllciAqIHQudmFsICoKLSsgICAgICAgICAgKHN0YXRpY19jYXN0PEhpZ2hzQ0Rv dWJsZT4obW9kZWwtPmNvbF91cHBlcl9bdC5jb2xdKSAtCi0rICAgICAgICAgICBzdGF0aWNfY2Fz dDxIaWdoc0NEb3VibGU+KG1vZGVsLT5jb2xfbG93ZXJfW3QuY29sXSkpOwotICAgICAgIC8vIGNo ZWNrIGlmIHZhcmlhYmxlIGNhbiBiZSBmaXhlZAotICAgICAgIGlmIChzdW1VcHBlckZpbml0ZSAm JgotICAgICAgICAgICBkZWx0YSA8PSBkaXJlY3Rpb24gKiByaHMgLSBzdW1VcHBlciArIHByaW1h bF9mZWFzdG9sKSB7Ci0gICAgICAgICBudW1GaXhlZENvbHMrKzsKLS0gICAgICAgIEhQUkVTT0xW RV9DSEVDS0VEX0NBTEwoZml4Q29sKGosIG11bHRpcGxpZXIpKTsKLSsgICAgICAgIEhQUkVTT0xW RV9DSEVDS0VEX0NBTEwoZml4Q29sKHQuY29sLCB0Lm11bHRpcGxpZXIpKTsKLSAgICAgICB9IGVs c2UgaWYgKHN1bUxvd2VyRmluaXRlICYmCi0gICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gKiBy aHMgPD0gc3VtTG93ZXIgKyBwcmltYWxfZmVhc3RvbCkgewotICAgICAgICAgbnVtRml4ZWRDb2xz Kys7Ci0tICAgICAgICBIUFJFU09MVkVfQ0hFQ0tFRF9DQUxMKGZpeENvbChqLCAtbXVsdGlwbGll cikpOwotKyAgICAgICAgSFBSRVNPTFZFX0NIRUNLRURfQ0FMTChmaXhDb2wodC5jb2wsIC10Lm11 bHRpcGxpZXIpKTsKLSAgICAgICB9Ci0gICAgICAgLy8gdXBkYXRlIHJvdyBhY3Rpdml0aWVzCi0g ICAgICAgaWYgKHN1bUxvd2VyRmluaXRlKSBzdW1Mb3dlciArPSBkZWx0YTsKLQotRnJvbSAxOThh OGM4ZGJhNDM4OWViY2E3M2RiYWVkMDRhNzBiMzM0NTdhMjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogZndlc3NlbG0gPGZ3ZXNzZWxtQG1hdGh3b3Jrcy5jb20+Ci1EYXRlOiBUaHUs IDkgQXByIDIwMjYgMDg6NDA6NDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzldIEZpeCBjYW5k aWRhdGUgY29tcHV0YXRpb24KLQotLS0tCi0gaGlnaHMvcHJlc29sdmUvSFByZXNvbHZlLmNwcCB8 IDE0NiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2Vk LCA5MyBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2hpZ2hz L3ByZXNvbHZlL0hQcmVzb2x2ZS5jcHAgYi9oaWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwCi1p bmRleCBkYWQ3ODdhZWI1Li5mYWE1Mjk1NTc0IDEwMDY0NAotLS0tIGEvaGlnaHMvcHJlc29sdmUv SFByZXNvbHZlLmNwcAotKysrIGIvaGlnaHMvcHJlc29sdmUvSFByZXNvbHZlLmNwcAotQEAgLTUw MTcsNyArNTAxNywxMCBAQCBIUHJlc29sdmU6OlJlc3VsdCBIUHJlc29sdmU6OnNpbmdsZXRvbkNv bFN0dWZmaW5nKAotICAgLy8gbGFtYmRhIGZvciBzdG9yaW5nIGEgY2FuZGlkYXRlCi0gICBhdXRv IGFkZENhbmRpZGF0ZSA9IFsmXShzdGQ6OnZlY3RvcjxjYW5kaWRhdGU+JiBjYW5kaWRhdGVzLCBI aWdoc0ludCBjb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFsLCBIaWdo c0ludCBkaXJlY3Rpb24sIGRvdWJsZSYgbWluV2VpZ2h0LAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgZG91YmxlJiBtYXhXZWlnaHQsIGJvb2wmIGFsbEludGVnZXIpIHsKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIGRvdWJsZSYgbWF4V2VpZ2h0LCBib29sJiBoYXNJbnRlZ2VyLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgYWxsSW50ZWdlcikgewotKyAgICBoYXNJbnRl Z2VyID0KLSsgICAgICAgIGhhc0ludGVnZXIgfHwgbW9kZWwtPmludGVncmFsaXR5X1tjb2xdID09 IEhpZ2hzVmFyVHlwZTo6a0ludGVnZXI7Ci0gICAgIGFsbEludGVnZXIgPQotICAgICAgICAgYWxs SW50ZWdlciAmJiBtb2RlbC0+aW50ZWdyYWxpdHlfW2NvbF0gPT0gSGlnaHNWYXJUeXBlOjprSW50 ZWdlcjsKLSAgICAgbWluV2VpZ2h0ID0gc3RkOjptaW4obWluV2VpZ2h0LCBkaXJlY3Rpb24gKiB2 YWwpOwotQEAgLTUwMzQsNiArNTAzNyw2OCBAQCBIUHJlc29sdmU6OlJlc3VsdCBIUHJlc29sdmU6 OnNpbmdsZXRvbkNvbFN0dWZmaW5nKAotICAgICByZXR1cm4gUmVzdWx0OjprT2s7Ci0gICB9Owot IAotKyAgLy8gbGFtYmRhIGZvciBjb21wdXRpbmcgY2FuZGlkYXRlcyBmb3Igc3R1ZmZpbmcKLSsg IGF1dG8gY29tcHV0ZUNhbmRpZGF0ZXMgPQotKyAgICAgIFsmXShIaWdoc0ludCByb3csIEhpZ2hz SW50IGRpcmVjdGlvbiwgc3RkOjp2ZWN0b3I8Y2FuZGlkYXRlPiYgY2FuZGlkYXRlcywKLSsgICAg ICAgICAgSGlnaHNDRG91YmxlJiBzdW1Mb3dlciwgSGlnaHNDRG91YmxlJiBzdW1VcHBlciwgYm9v bCYgc3VtTG93ZXJGaW5pdGUsCi0rICAgICAgICAgIGJvb2wmIHN1bVVwcGVyRmluaXRlLCBib29s JiBoYXNJbnRlZ2VyLCBib29sJiBhbGxJbnRlZ2VyLAotKyAgICAgICAgICBkb3VibGUmIG1pbldl aWdodCwgZG91YmxlJiBtYXhXZWlnaHQsIGJvb2wgYWxsb3dJbnRlZ2VyQ2FuZGlkYXRlcykgewot KyAgICAgICAgLy8gdmVjdG9ycyBmb3IgY2FuZGlkYXRlcyBhbmQgYWN0aXZpdHkgYm91bmRzCi0r ICAgICAgICBjYW5kaWRhdGVzLmNsZWFyKCk7Ci0rICAgICAgICBjYW5kaWRhdGVzLnJlc2VydmUo cm93c2l6ZVtyb3ddKTsKLSsgICAgICAgIHN1bUxvd2VyID0gMC4wOwotKyAgICAgICAgc3VtVXBw ZXIgPSAwLjA7Ci0rICAgICAgICBzdW1Mb3dlckZpbml0ZSA9IHRydWU7Ci0rICAgICAgICBzdW1V cHBlckZpbml0ZSA9IHRydWU7Ci0rICAgICAgICBoYXNJbnRlZ2VyID0gZmFsc2U7Ci0rICAgICAg ICBhbGxJbnRlZ2VyID0gdHJ1ZTsKLSsgICAgICAgIG1pbldlaWdodCA9IGtIaWdoc0luZjsKLSsg ICAgICAgIG1heFdlaWdodCA9IC1rSGlnaHNJbmY7Ci0rCi0rICAgICAgICBmb3IgKGF1dG8mIG56 IDogZ2V0Um93VmVjdG9yKHJvdykpIHsKLSsgICAgICAgICAgLy8gZ2V0IGNvbHVtbiBpbmRleCwg Y29lZmZpY2llbnQsIGNvc3QgYW5kIGJvdW5kcwotKyAgICAgICAgICBIaWdoc0ludCBqID0gbnou aW5kZXgoKTsKLSsgICAgICAgICAgZG91YmxlIGFqID0gZGlyZWN0aW9uICogbnoudmFsdWUoKTsK LSsgICAgICAgICAgZG91YmxlIGNqID0gbW9kZWwtPmNvbF9jb3N0X1tqXTsKLSsgICAgICAgICAg ZG91YmxlIHN1bUxvd2VyQm91bmQgPSBtb2RlbC0+Y29sX2xvd2VyX1tqXTsKLSsgICAgICAgICAg ZG91YmxlIHN1bVVwcGVyQm91bmQgPSBtb2RlbC0+Y29sX3VwcGVyX1tqXTsKLSsgICAgICAgICAg Ym9vbCBpc0NhbmRpZGF0ZSA9IGFsbG93SW50ZWdlckNhbmRpZGF0ZXMgfHwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1vZGVsLT5pbnRlZ3JhbGl0eV9bal0gIT0gSGlnaHNWYXJUeXBl OjprSW50ZWdlcjsKLSsKLSsgICAgICAgICAgaWYgKGlzU2luZ2xldG9uKGopKSB7Ci0rICAgICAg ICAgICAgLy8gY2hlY2sgc2luZ2xldG9uCi0rICAgICAgICAgICAgaWYgKGFqID4gMCkgewotKyAg ICAgICAgICAgICAgaWYgKGNqID49IDApCi0rICAgICAgICAgICAgICAgIC8vIGR1YWwgZml4aW5n OiBmaXggdG8gbG93ZXIgYm91bmQKLSsgICAgICAgICAgICAgICAgc3VtVXBwZXJCb3VuZCA9IHN1 bUxvd2VyQm91bmQ7Ci0rICAgICAgICAgICAgICBlbHNlIGlmIChpc0NhbmRpZGF0ZSkgewotKyAg ICAgICAgICAgICAgICAvLyBjYW5kaWRhdGUgZm9yIHN0dWZmaW5nCi0rICAgICAgICAgICAgICAg IHN1bVVwcGVyQm91bmQgPSBzdW1Mb3dlckJvdW5kOwotKyAgICAgICAgICAgICAgICBhZGRDYW5k aWRhdGUoY2FuZGlkYXRlcywgaiwgYWosIEhpZ2hzSW50ezF9LCBtaW5XZWlnaHQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtYXhXZWlnaHQsIGhhc0ludGVnZXIsIGFsbEludGVnZXIp OwotKyAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAg ICBpZiAoY2ogPD0gMCkKLSsgICAgICAgICAgICAgICAgLy8gZHVhbCBmaXhpbmc6IGZpeCB0byB1 cHBlciBib3VuZAotKyAgICAgICAgICAgICAgICBzdW1Mb3dlckJvdW5kID0gc3VtVXBwZXJCb3Vu ZDsKLSsgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQ2FuZGlkYXRlKSB7Ci0rICAgICAgICAgICAg ICAgIC8vIGNhbmRpZGF0ZSBmb3Igc3R1ZmZpbmc7IG11bHRpcGx5IGNvbHVtbiB3aXRoIC0xCi0r ICAgICAgICAgICAgICAgIHN1bUxvd2VyQm91bmQgPSBzdW1VcHBlckJvdW5kOwotKyAgICAgICAg ICAgICAgICBhZGRDYW5kaWRhdGUoY2FuZGlkYXRlcywgaiwgYWosIEhpZ2hzSW50ey0xfSwgbWlu V2VpZ2h0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2VpZ2h0LCBoYXNJbnRl Z2VyLCBhbGxJbnRlZ2VyKTsKLSsgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9Ci0rICAg ICAgICAgIH0KLSsgICAgICAgICAgLy8gdXBkYXRlIGFjdGl2aXRpZXMKLSsgICAgICAgICAgaWYg KGFqIDwgMCkgc3RkOjpzd2FwKHN1bUxvd2VyQm91bmQsIHN1bVVwcGVyQm91bmQpOwotKyAgICAg ICAgICB1cGRhdGVBY3Rpdml0eUJvdW5kcyhzdW1Mb3dlciwgc3VtVXBwZXIsIHN1bUxvd2VyRmlu aXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1VcHBlckZpbml0ZSwgYWos IHN1bUxvd2VyQm91bmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bVVwcGVy Qm91bmQpOwotKyAgICAgICAgICBpZiAoIXN1bUxvd2VyRmluaXRlICYmICFzdW1VcHBlckZpbml0 ZSkgcmV0dXJuIGZhbHNlOwotKyAgICAgICAgfQotKyAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAg ICAgfTsKLSsKLSAgIC8vIGxhbWJkYSBmb3IgYWN0dWFsIHN0dWZmaW5nCi0gICBhdXRvIGNoZWNr Um93ID0gWyZdKEhpZ2hzSW50IHJvdywgZG91YmxlIHJocywgSGlnaHNJbnQgZGlyZWN0aW9uKSB7 Ci0gICAgIC8vIHNraXAgcm93IGlmIHJocyBpcyBub3QgZmluaXRlCi1AQCAtNTA0MSw1OCArNTEw NiwzMyBAQCBIUHJlc29sdmU6OlJlc3VsdCBIUHJlc29sdmU6OnNpbmdsZXRvbkNvbFN0dWZmaW5n KAotIAotICAgICAvLyB2ZWN0b3JzIGZvciBjYW5kaWRhdGVzIGFuZCBhY3Rpdml0eSBib3VuZHMK LSAgICAgc3RkOjp2ZWN0b3I8Y2FuZGlkYXRlPiBjYW5kaWRhdGVzOwotLSAgICBjYW5kaWRhdGVz LnJlc2VydmUocm93c2l6ZVtyb3ddKTsKLS0gICAgSGlnaHNDRG91YmxlIHN1bUxvd2VyID0gMC4w OwotLSAgICBIaWdoc0NEb3VibGUgc3VtVXBwZXIgPSAwLjA7Ci0tICAgIGJvb2wgc3VtTG93ZXJG aW5pdGUgPSB0cnVlOwotLSAgICBib29sIHN1bVVwcGVyRmluaXRlID0gdHJ1ZTsKLS0gICAgYm9v bCBhbGxJbnRlZ2VyID0gdHJ1ZTsKLS0gICAgZG91YmxlIG1pbldlaWdodCA9IGtIaWdoc0luZjsK LS0gICAgZG91YmxlIG1heFdlaWdodCA9IC1rSGlnaHNJbmY7Ci0tCi0tICAgIGZvciAoYXV0byYg bnogOiBnZXRSb3dWZWN0b3Iocm93KSkgewotLSAgICAgIC8vIGdldCBjb2x1bW4gaW5kZXgsIGNv ZWZmaWNpZW50LCBjb3N0IGFuZCBib3VuZHMKLS0gICAgICBIaWdoc0ludCBqID0gbnouaW5kZXgo KTsKLS0gICAgICBkb3VibGUgYWogPSBkaXJlY3Rpb24gKiBuei52YWx1ZSgpOwotLSAgICAgIGRv dWJsZSBjaiA9IG1vZGVsLT5jb2xfY29zdF9bal07Ci0tICAgICAgZG91YmxlIHN1bUxvd2VyQm91 bmQgPSBtb2RlbC0+Y29sX2xvd2VyX1tqXTsKLS0gICAgICBkb3VibGUgc3VtVXBwZXJCb3VuZCA9 IG1vZGVsLT5jb2xfdXBwZXJfW2pdOwotLSAgICAgIGlmIChpc1NpbmdsZXRvbihqKSkgewotLSAg ICAgICAgLy8gY2hlY2sgc2luZ2xldG9uCi0tICAgICAgICBpZiAoYWogPiAwKSB7Ci0tICAgICAg ICAgIC8vIHVzZSBsb3dlciBib3VuZAotLSAgICAgICAgICBzdW1VcHBlckJvdW5kID0gc3VtTG93 ZXJCb3VuZDsKLS0gICAgICAgICAgLy8gY2FuZGlkYXRlIGZvciBzdHVmZmluZz8KLS0gICAgICAg ICAgaWYgKGNqIDwgMCkKLS0gICAgICAgICAgICBhZGRDYW5kaWRhdGUoY2FuZGlkYXRlcywgaiwg YWosIEhpZ2hzSW50ezF9LCBtaW5XZWlnaHQsIG1heFdlaWdodCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgYWxsSW50ZWdlcik7Ci0tICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAvLyB1 c2UgdXBwZXIgYm91bmQKLS0gICAgICAgICAgc3VtTG93ZXJCb3VuZCA9IHN1bVVwcGVyQm91bmQ7 Ci0tICAgICAgICAgIC8vIGNhbmRpZGF0ZSBmb3Igc3R1ZmZpbmc/IG11bHRpcGx5IGNvbHVtbiB3 aXRoIC0xCi0tICAgICAgICAgIGlmIChjaiA+IDApCi0tICAgICAgICAgICAgYWRkQ2FuZGlkYXRl KGNhbmRpZGF0ZXMsIGosIGFqLCBIaWdoc0ludHstMX0sIG1pbldlaWdodCwgbWF4V2VpZ2h0LAot LSAgICAgICAgICAgICAgICAgICAgICAgICBhbGxJbnRlZ2VyKTsKLS0gICAgICAgIH0KLS0gICAg ICB9IGVsc2UgaWYgKGFqIDwgMCkKLS0gICAgICAgIHN0ZDo6c3dhcChzdW1Mb3dlckJvdW5kLCBz dW1VcHBlckJvdW5kKTsKLS0gICAgICAvLyB1cGRhdGUgYWN0aXZpdGllcwotLSAgICAgIHVwZGF0 ZUFjdGl2aXR5Qm91bmRzKHN1bUxvd2VyLCBzdW1VcHBlciwgc3VtTG93ZXJGaW5pdGUsIHN1bVVw cGVyRmluaXRlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqLCBzdW1Mb3dlckJvdW5k LCBzdW1VcHBlckJvdW5kKTsKLS0gICAgICBpZiAoIXN1bUxvd2VyRmluaXRlICYmICFzdW1VcHBl ckZpbml0ZSkgcmV0dXJuIFJlc3VsdDo6a09rOwotLSAgICB9Ci0tCi0tICAgIC8vIGFsbCBjb2x1 bW5zIG5lZWQgdG8gaGF2ZSBzYW1lIHdlaWdodHMgaWYgd2Ugb25seSBoYXZlIGludGVnZXIgY29s dW1ucwotLSAgICBpZiAoYWxsSW50ZWdlciAmJiBtaW5XZWlnaHQgIT0gbWF4V2VpZ2h0KSByZXR1 cm4gUmVzdWx0OjprT2s7Ci0tCi0tICAgIC8vIHJlbW92ZSBpbnRlZ2VyIGNvbHVtbnMgaWYgdGhl cmUgYXJlIGFsc28gY29udGludW91cyBvbmVzCi0tICAgIGlmICghYWxsSW50ZWdlcikKLS0gICAg ICBjYW5kaWRhdGVzLmVyYXNlKHN0ZDo6cmVtb3ZlX2lmKGNhbmRpZGF0ZXMuYmVnaW4oKSwgY2Fu ZGlkYXRlcy5lbmQoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsm XShjb25zdCBjYW5kaWRhdGUmIHApIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIG1vZGVsLT5pbnRlZ3JhbGl0eV9bcC5jb2xdID09Ci0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaWdoc1ZhclR5cGU6OmtJbnRl Z2VyOwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCi0tICAgICAg ICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmVuZCgpKTsKLSsgICAgSGlnaHNDRG91YmxlIHN1 bUxvd2VyOwotKyAgICBIaWdoc0NEb3VibGUgc3VtVXBwZXI7Ci0rICAgIGJvb2wgc3VtTG93ZXJG aW5pdGU7Ci0rICAgIGJvb2wgc3VtVXBwZXJGaW5pdGU7Ci0rICAgIGJvb2wgaGFzSW50ZWdlcjsK LSsgICAgYm9vbCBhbGxJbnRlZ2VyOwotKyAgICBkb3VibGUgbWluV2VpZ2h0OwotKyAgICBkb3Vi bGUgbWF4V2VpZ2h0OwotKwotKyAgICAvLyBjb21wdXRlIGNhbmRpZGF0ZXMKLSsgICAgd2hpbGUg KHRydWUpIHsKLSsgICAgICBpZiAoY29tcHV0ZUNhbmRpZGF0ZXMocm93LCBkaXJlY3Rpb24sIGNh bmRpZGF0ZXMsIHN1bUxvd2VyLCBzdW1VcHBlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3VtTG93ZXJGaW5pdGUsIHN1bVVwcGVyRmluaXRlLCBoYXNJbnRlZ2VyLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhbGxJbnRlZ2VyLCBtaW5XZWlnaHQsIG1heFdlaWdodCwgdHJ1 ZSkpIHsKLSsgICAgICAgIC8vIGFsbCBjb2x1bW5zIG5lZWQgdG8gaGF2ZSBzYW1lIHdlaWdodHMg aWYgd2Ugb25seSBoYXZlIGludGVnZXIgY29sdW1ucwotKyAgICAgICAgaWYgKCFoYXNJbnRlZ2Vy IHx8IChhbGxJbnRlZ2VyICYmIG1pbldlaWdodCA9PSBtYXhXZWlnaHQpKSBicmVhazsKLSsgICAg ICB9Ci0rCi0rICAgICAgLy8gcmVjb21wdXRlIGNhbmRpZGF0ZXMgd2l0aG91dCBpbnRlZ2VyIGNv bHVtbnMKLSsgICAgICBpZiAoaGFzSW50ZWdlciAmJgotKyAgICAgICAgICBjb21wdXRlQ2FuZGlk YXRlcyhyb3csIGRpcmVjdGlvbiwgY2FuZGlkYXRlcywgc3VtTG93ZXIsIHN1bVVwcGVyLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1Mb3dlckZpbml0ZSwgc3VtVXBwZXJGaW5pdGUs IGhhc0ludGVnZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbEludGVnZXIsIG1p bldlaWdodCwgbWF4V2VpZ2h0LCBmYWxzZSkpCi0rICAgICAgICBicmVhazsKLSsKLSsgICAgICBy ZXR1cm4gUmVzdWx0OjprT2s7Ci0rICAgIH0KLSAKLSAgICAgLy8gc29ydCBjYW5kaWRhdGVzCi0g ICAgIHNvcnRDb2xzKGNhbmRpZGF0ZXMpOwotCi1Gcm9tIDQ5MTM5MmIzMThlNDE5MTU3ZGJjZmYz NjkzYmJhMmRiYTE2YmQ5MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmd2Vzc2Vs bSA8Zndlc3NlbG1AbWF0aHdvcmtzLmNvbT4KLURhdGU6IFRodSwgOSBBcHIgMjAyNiAwODo1MTo1 NyArMDIwMAotU3ViamVjdDogW1BBVENIIDMvOV0gQWRkIHRlc3QKLQotLS0tCi0gY2hlY2svVGVz dE1pcFNvbHZlci5jcHAgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hh bmdlZCwgMjQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY2hlY2svVGVzdE1pcFNvbHZl ci5jcHAgYi9jaGVjay9UZXN0TWlwU29sdmVyLmNwcAotaW5kZXggY2YwYjI0OGM2OC4uOWQ3ZGY3 ZmFkNiAxMDA2NDQKLS0tLSBhL2NoZWNrL1Rlc3RNaXBTb2x2ZXIuY3BwCi0rKysgYi9jaGVjay9U ZXN0TWlwU29sdmVyLmNwcAotQEAgLTE0MDQsMyArMTQwNCwyNyBAQCBURVNUX0NBU0UoImlzc3Vl LTIxNzMiLCAiW2hpZ2hzX3Rlc3RfbWlwX3NvbHZlcl0iKSB7Ci0gICBjb25zdCBkb3VibGUgb3B0 aW1hbF9vYmplY3RpdmUgPSAtMjY3NzAuODA3NTQ4OTsKLSAgIHNvbHZlKGhpZ2hzLCBrSGlnaHNP blN0cmluZywgcmVxdWlyZV9tb2RlbF9zdGF0dXMsIG9wdGltYWxfb2JqZWN0aXZlKTsKLSB9Ci0r Ci0rVEVTVF9DQVNFKCJpc3N1ZS0yOTU3IiwgIltoaWdoc190ZXN0X21pcF9zb2x2ZXJdIikgewot KyAgSGlnaHNMcCBscDsKLSsgIGxwLm51bV9jb2xfID0gMjsKLSsgIGxwLm51bV9yb3dfID0gMTsK LSsgIGxwLmNvbF9jb3N0XyA9IHsxLCAyfTsKLSsgIGxwLmNvbF9sb3dlcl8gPSB7MCwgOH07Ci0r ICBscC5jb2xfdXBwZXJfID0gezIwLCAyMH07Ci0rICBscC5pbnRlZ3JhbGl0eV8gPSB7SGlnaHNW YXJUeXBlOjprSW50ZWdlciwgSGlnaHNWYXJUeXBlOjprQ29udGludW91c307Ci0rICBscC5yb3df bG93ZXJfID0gezIwLjF9OwotKyAgbHAucm93X3VwcGVyXyA9IHtrSGlnaHNJbmZ9OwotKyAgbHAu YV9tYXRyaXhfLnN0YXJ0XyA9IHswLCAxLCAyfTsKLSsgIGxwLmFfbWF0cml4Xy5pbmRleF8gPSB7 MCwgMX07Ci0rICBscC5hX21hdHJpeF8udmFsdWVfID0gezEsIDF9OwotKyAgSGlnaHMgaGlnaHM7 Ci0rICBoaWdocy5wYXNzTW9kZWwobHApOwotKyAgaGlnaHMuc2V0T3B0aW9uVmFsdWUoIm91dHB1 dF9mbGFnIiwgZGV2X3J1bik7Ci0rICBoaWdocy5zZXRPcHRpb25WYWx1ZSgibWlwX3JlbF9nYXAi LCAwKTsKLSsgIGhpZ2hzLnNldE9wdGlvblZhbHVlKCJtaXBfYWJzX2dhcCIsIDApOwotKyAgaGln aHMucmVhZE1vZGVsKGZpbGVuYW1lKTsKLSsgIGNvbnN0IEhpZ2hzTW9kZWxTdGF0dXMgcmVxdWly ZV9tb2RlbF9zdGF0dXMgPSBIaWdoc01vZGVsU3RhdHVzOjprT3B0aW1hbDsKLSsgIGNvbnN0IGRv dWJsZSBvcHRpbWFsX29iamVjdGl2ZSA9IDI4LjI7Ci0rICBzb2x2ZShoaWdocywga0hpZ2hzT25T dHJpbmcsIHJlcXVpcmVfbW9kZWxfc3RhdHVzLCBvcHRpbWFsX29iamVjdGl2ZSk7Ci0rfQotCi1G cm9tIGMwOGU0ZTEwODcyNzYxNjFjMDMxYjFjZGJmYTQwODgxNTIxZDY0OWUgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBmd2Vzc2VsbSA8Zndlc3NlbG1AbWF0aHdvcmtzLmNvbT4KLURh dGU6IFRodSwgOSBBcHIgMjAyNiAwODo1MzowNyArMDIwMAotU3ViamVjdDogW1BBVENIIDQvOV0g Rml4IHRlc3QKLQotLS0tCi0gY2hlY2svVGVzdE1pcFNvbHZlci5jcHAgfCAzICstLQotIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L2NoZWNrL1Rlc3RNaXBTb2x2ZXIuY3BwIGIvY2hlY2svVGVzdE1pcFNvbHZlci5jcHAKLWluZGV4 IDlkN2RmN2ZhZDYuLmZiZDUyYmRiNWQgMTAwNjQ0Ci0tLS0gYS9jaGVjay9UZXN0TWlwU29sdmVy LmNwcAotKysrIGIvY2hlY2svVGVzdE1pcFNvbHZlci5jcHAKLUBAIC0xNDE5LDExICsxNDE5LDEw IEBAIFRFU1RfQ0FTRSgiaXNzdWUtMjk1NyIsICJbaGlnaHNfdGVzdF9taXBfc29sdmVyXSIpIHsK LSAgIGxwLmFfbWF0cml4Xy5pbmRleF8gPSB7MCwgMX07Ci0gICBscC5hX21hdHJpeF8udmFsdWVf ID0gezEsIDF9OwotICAgSGlnaHMgaGlnaHM7Ci0tICBoaWdocy5wYXNzTW9kZWwobHApOwotICAg aGlnaHMuc2V0T3B0aW9uVmFsdWUoIm91dHB1dF9mbGFnIiwgZGV2X3J1bik7Ci0gICBoaWdocy5z ZXRPcHRpb25WYWx1ZSgibWlwX3JlbF9nYXAiLCAwKTsKLSAgIGhpZ2hzLnNldE9wdGlvblZhbHVl KCJtaXBfYWJzX2dhcCIsIDApOwotLSAgaGlnaHMucmVhZE1vZGVsKGZpbGVuYW1lKTsKLSsgIGhp Z2hzLnBhc3NNb2RlbChscCk7Ci0gICBjb25zdCBIaWdoc01vZGVsU3RhdHVzIHJlcXVpcmVfbW9k ZWxfc3RhdHVzID0gSGlnaHNNb2RlbFN0YXR1czo6a09wdGltYWw7Ci0gICBjb25zdCBkb3VibGUg b3B0aW1hbF9vYmplY3RpdmUgPSAyOC4yOwotICAgc29sdmUoaGlnaHMsIGtIaWdoc09uU3RyaW5n LCByZXF1aXJlX21vZGVsX3N0YXR1cywgb3B0aW1hbF9vYmplY3RpdmUpOwotCi1Gcm9tIDU4OTEy MzJkYmYzNTYwOTc4NDE2MjE5OWY1YjQ0NzE4ZTYwNWIyMTggTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBmd2Vzc2VsbSA8Zndlc3NlbG1AbWF0aHdvcmtzLmNvbT4KLURhdGU6IFRodSwg OSBBcHIgMjAyNiAwOToyMDowNyArMDIwMAotU3ViamVjdDogW1BBVENIIDUvOV0gRml4IGluZGV4 aW5nCi0KLS0tLQotIGNoZWNrL1Rlc3RNaXBTb2x2ZXIuY3BwIHwgMiArLQotIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY2hlY2sv VGVzdE1pcFNvbHZlci5jcHAgYi9jaGVjay9UZXN0TWlwU29sdmVyLmNwcAotaW5kZXggZmJkNTJi ZGI1ZC4uZWE5NzFmOGE5NCAxMDA2NDQKLS0tLSBhL2NoZWNrL1Rlc3RNaXBTb2x2ZXIuY3BwCi0r KysgYi9jaGVjay9UZXN0TWlwU29sdmVyLmNwcAotQEAgLTE0MTYsNyArMTQxNiw3IEBAIFRFU1Rf Q0FTRSgiaXNzdWUtMjk1NyIsICJbaGlnaHNfdGVzdF9taXBfc29sdmVyXSIpIHsKLSAgIGxwLnJv d19sb3dlcl8gPSB7MjAuMX07Ci0gICBscC5yb3dfdXBwZXJfID0ge2tIaWdoc0luZn07Ci0gICBs cC5hX21hdHJpeF8uc3RhcnRfID0gezAsIDEsIDJ9OwotLSAgbHAuYV9tYXRyaXhfLmluZGV4XyA9 IHswLCAxfTsKLSsgIGxwLmFfbWF0cml4Xy5pbmRleF8gPSB7MCwgMH07Ci0gICBscC5hX21hdHJp eF8udmFsdWVfID0gezEsIDF9OwotICAgSGlnaHMgaGlnaHM7Ci0gICBoaWdocy5zZXRPcHRpb25W YWx1ZSgib3V0cHV0X2ZsYWciLCBkZXZfcnVuKTsKLQotRnJvbSBlYWJkY2M5ZjlmMWE4YTJiOGU4 YjE1MzI0MmQxMjAzZTE1ZWY0ZjExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZndl c3NlbG0gPGZ3ZXNzZWxtQG1hdGh3b3Jrcy5jb20+Ci1EYXRlOiBUaHUsIDkgQXByIDIwMjYgMTE6 MTc6NDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA2LzldIENsZWFuIHVwCi0KLS0tLQotIGhpZ2hz L3ByZXNvbHZlL0hQcmVzb2x2ZS5jcHAgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9oaWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwIGIvaGlnaHMv cHJlc29sdmUvSFByZXNvbHZlLmNwcAotaW5kZXggZmFhNTI5NTU3NC4uN2EyMTdlNTdkMCAxMDA2 NDQKLS0tLSBhL2hpZ2hzL3ByZXNvbHZlL0hQcmVzb2x2ZS5jcHAKLSsrKyBiL2hpZ2hzL3ByZXNv bHZlL0hQcmVzb2x2ZS5jcHAKLUBAIC01MDk5LDYgKzUwOTksMzMgQEAgSFByZXNvbHZlOjpSZXN1 bHQgSFByZXNvbHZlOjpzaW5nbGV0b25Db2xTdHVmZmluZygKLSAgICAgICAgIHJldHVybiB0cnVl OwotICAgICAgIH07Ci0gCi0rICAvLyBsYW1iZGEgZm9yIGNvbXB1dGluZyBjYW5kaWRhdGVzIGZv ciBzdHVmZmluZwotKyAgYXV0byBjaGVja0NhbmRpZGF0ZXMgPQotKyAgICAgIFsmXShIaWdoc0lu dCByb3csIEhpZ2hzSW50IGRpcmVjdGlvbiwgc3RkOjp2ZWN0b3I8Y2FuZGlkYXRlPiYgY2FuZGlk YXRlcywKLSsgICAgICAgICAgSGlnaHNDRG91YmxlJiBzdW1Mb3dlciwgSGlnaHNDRG91YmxlJiBz dW1VcHBlciwgYm9vbCYgc3VtTG93ZXJGaW5pdGUsCi0rICAgICAgICAgIGJvb2wmIHN1bVVwcGVy RmluaXRlLCBib29sJiBoYXNJbnRlZ2VyLCBib29sJiBhbGxJbnRlZ2VyLAotKyAgICAgICAgICBk b3VibGUmIG1pbldlaWdodCwgZG91YmxlJiBtYXhXZWlnaHQpIHsKLSsgICAgICAgIC8vIGNvbXB1 dGUgY2FuZGlkYXRlcwotKyAgICAgICAgaWYgKGNvbXB1dGVDYW5kaWRhdGVzKHJvdywgZGlyZWN0 aW9uLCBjYW5kaWRhdGVzLCBzdW1Mb3dlciwgc3VtVXBwZXIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3VtTG93ZXJGaW5pdGUsIHN1bVVwcGVyRmluaXRlLCBoYXNJbnRlZ2VyLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbEludGVnZXIsIG1pbldlaWdodCwgbWF4 V2VpZ2h0LCB0cnVlKSkgewotKyAgICAgICAgICAvLyBhbGwgY29sdW1ucyBuZWVkIHRvIGhhdmUg c2FtZSB3ZWlnaHRzIGlmIHdlIG9ubHkgaGF2ZSBpbnRlZ2VyCi0rICAgICAgICAgIC8vIGNvbHVt bnMKLSsgICAgICAgICAgaWYgKCFoYXNJbnRlZ2VyIHx8IChhbGxJbnRlZ2VyICYmIG1pbldlaWdo dCA9PSBtYXhXZWlnaHQpKQotKyAgICAgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgICAgfSBl bHNlCi0rICAgICAgICAgIGFsbEludGVnZXIgPSBmYWxzZTsKLSsKLSsgICAgICAgIC8vIHJlY29t cHV0ZSBjYW5kaWRhdGVzIHdpdGhvdXQgaW50ZWdlciBjb2x1bW5zCi0rICAgICAgICBpZiAoaGFz SW50ZWdlciAmJiAhYWxsSW50ZWdlciAmJgotKyAgICAgICAgICAgIGNvbXB1dGVDYW5kaWRhdGVz KHJvdywgZGlyZWN0aW9uLCBjYW5kaWRhdGVzLCBzdW1Mb3dlciwgc3VtVXBwZXIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3VtTG93ZXJGaW5pdGUsIHN1bVVwcGVyRmluaXRlLCBo YXNJbnRlZ2VyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbEludGVnZXIsIG1p bldlaWdodCwgbWF4V2VpZ2h0LCBmYWxzZSkpCi0rICAgICAgICAgIHJldHVybiB0cnVlOwotKwot KyAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgIH07Ci0rCi0gICAvLyBsYW1iZGEgZm9yIGFj dHVhbCBzdHVmZmluZwotICAgYXV0byBjaGVja1JvdyA9IFsmXShIaWdoc0ludCByb3csIGRvdWJs ZSByaHMsIEhpZ2hzSW50IGRpcmVjdGlvbikgewotICAgICAvLyBza2lwIHJvdyBpZiByaHMgaXMg bm90IGZpbml0ZQotQEAgLTUxMTYsMjMgKzUxNDMsMTAgQEAgSFByZXNvbHZlOjpSZXN1bHQgSFBy ZXNvbHZlOjpzaW5nbGV0b25Db2xTdHVmZmluZygKLSAgICAgZG91YmxlIG1heFdlaWdodDsKLSAK LSAgICAgLy8gY29tcHV0ZSBjYW5kaWRhdGVzCi0tICAgIHdoaWxlICh0cnVlKSB7Ci0tICAgICAg aWYgKGNvbXB1dGVDYW5kaWRhdGVzKHJvdywgZGlyZWN0aW9uLCBjYW5kaWRhdGVzLCBzdW1Mb3dl ciwgc3VtVXBwZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bUxvd2VyRmluaXRl LCBzdW1VcHBlckZpbml0ZSwgaGFzSW50ZWdlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWxsSW50ZWdlciwgbWluV2VpZ2h0LCBtYXhXZWlnaHQsIHRydWUpKSB7Ci0tICAgICAgICAv LyBhbGwgY29sdW1ucyBuZWVkIHRvIGhhdmUgc2FtZSB3ZWlnaHRzIGlmIHdlIG9ubHkgaGF2ZSBp bnRlZ2VyIGNvbHVtbnMKLS0gICAgICAgIGlmICghaGFzSW50ZWdlciB8fCAoYWxsSW50ZWdlciAm JiBtaW5XZWlnaHQgPT0gbWF4V2VpZ2h0KSkgYnJlYWs7Ci0tICAgICAgfQotLQotLSAgICAgIC8v IHJlY29tcHV0ZSBjYW5kaWRhdGVzIHdpdGhvdXQgaW50ZWdlciBjb2x1bW5zCi0tICAgICAgaWYg KGhhc0ludGVnZXIgJiYKLS0gICAgICAgICAgY29tcHV0ZUNhbmRpZGF0ZXMocm93LCBkaXJlY3Rp b24sIGNhbmRpZGF0ZXMsIHN1bUxvd2VyLCBzdW1VcHBlciwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3VtTG93ZXJGaW5pdGUsIHN1bVVwcGVyRmluaXRlLCBoYXNJbnRlZ2VyLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxJbnRlZ2VyLCBtaW5XZWlnaHQsIG1heFdlaWdo dCwgZmFsc2UpKQotLSAgICAgICAgYnJlYWs7Ci0tCi0rICAgIGlmICghY2hlY2tDYW5kaWRhdGVz KHJvdywgZGlyZWN0aW9uLCBjYW5kaWRhdGVzLCBzdW1Mb3dlciwgc3VtVXBwZXIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgIHN1bUxvd2VyRmluaXRlLCBzdW1VcHBlckZpbml0ZSwgaGFzSW50 ZWdlciwgYWxsSW50ZWdlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2VpZ2h0LCBt YXhXZWlnaHQpKQotICAgICAgIHJldHVybiBSZXN1bHQ6OmtPazsKLS0gICAgfQotIAotICAgICAv LyBzb3J0IGNhbmRpZGF0ZXMKLSAgICAgc29ydENvbHMoY2FuZGlkYXRlcyk7Ci0KLUZyb20gNjVj ODNhZjU0NTM3YmJkYTA3ZjQ1OTExMGY0N2E5ZTU4MDRhOTAwMiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IGZ3ZXNzZWxtIDxmd2Vzc2VsbUBtYXRod29ya3MuY29tPgotRGF0ZTogVGh1 LCA5IEFwciAyMDI2IDE0OjIwOjAwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNy85XSBTaW1wbGlm eQotCi0tLS0KLSBoaWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwIHwgNjMgKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMzIGluc2VydGlvbnMo KyksIDMwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaGlnaHMvcHJlc29sdmUvSFByZXNv bHZlLmNwcCBiL2hpZ2hzL3ByZXNvbHZlL0hQcmVzb2x2ZS5jcHAKLWluZGV4IDdhMjE3ZTU3ZDAu LmU3MTA1ZjI4MjMgMTAwNjQ0Ci0tLS0gYS9oaWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwCi0r KysgYi9oaWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwCi1AQCAtNTA5OSwzMiArNTA5OSw0MCBA QCBIUHJlc29sdmU6OlJlc3VsdCBIUHJlc29sdmU6OnNpbmdsZXRvbkNvbFN0dWZmaW5nKAotICAg ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgfTsKLSAKLS0gIC8vIGxhbWJkYSBmb3IgY29tcHV0 aW5nIGNhbmRpZGF0ZXMgZm9yIHN0dWZmaW5nCi0tICBhdXRvIGNoZWNrQ2FuZGlkYXRlcyA9Ci0t ICAgICAgWyZdKEhpZ2hzSW50IHJvdywgSGlnaHNJbnQgZGlyZWN0aW9uLCBzdGQ6OnZlY3Rvcjxj YW5kaWRhdGU+JiBjYW5kaWRhdGVzLAotLSAgICAgICAgICBIaWdoc0NEb3VibGUmIHN1bUxvd2Vy LCBIaWdoc0NEb3VibGUmIHN1bVVwcGVyLCBib29sJiBzdW1Mb3dlckZpbml0ZSwKLS0gICAgICAg ICAgYm9vbCYgc3VtVXBwZXJGaW5pdGUsIGJvb2wmIGhhc0ludGVnZXIsIGJvb2wmIGFsbEludGVn ZXIsCi0tICAgICAgICAgIGRvdWJsZSYgbWluV2VpZ2h0LCBkb3VibGUmIG1heFdlaWdodCkgewot LSAgICAgICAgLy8gY29tcHV0ZSBjYW5kaWRhdGVzCi0tICAgICAgICBpZiAoY29tcHV0ZUNhbmRp ZGF0ZXMocm93LCBkaXJlY3Rpb24sIGNhbmRpZGF0ZXMsIHN1bUxvd2VyLCBzdW1VcHBlciwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1Mb3dlckZpbml0ZSwgc3VtVXBwZXJGaW5p dGUsIGhhc0ludGVnZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsSW50ZWdl ciwgbWluV2VpZ2h0LCBtYXhXZWlnaHQsIHRydWUpKSB7Ci0tICAgICAgICAgIC8vIGFsbCBjb2x1 bW5zIG5lZWQgdG8gaGF2ZSBzYW1lIHdlaWdodHMgaWYgd2Ugb25seSBoYXZlIGludGVnZXIKLS0g ICAgICAgICAgLy8gY29sdW1ucwotLSAgICAgICAgICBpZiAoIWhhc0ludGVnZXIgfHwgKGFsbElu dGVnZXIgJiYgbWluV2VpZ2h0ID09IG1heFdlaWdodCkpCi0tICAgICAgICAgICAgcmV0dXJuIHRy dWU7Ci0tICAgICAgICB9IGVsc2UKLS0gICAgICAgICAgYWxsSW50ZWdlciA9IGZhbHNlOwotKyAg Ly8gbGFtYmRhIGZvciBjb21wdXRpbmcgYW5kIGNoZWNraW5nIGNhbmRpZGF0ZXMgZm9yIHN0dWZm aW5nCi0rICBhdXRvIGNoZWNrQ2FuZGlkYXRlcyA9IFsmXShIaWdoc0ludCByb3csIEhpZ2hzSW50 IGRpcmVjdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNh bmRpZGF0ZT4mIGNhbmRpZGF0ZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaWdo c0NEb3VibGUmIHN1bUxvd2VyLCBIaWdoc0NEb3VibGUmIHN1bVVwcGVyLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYm9vbCYgc3VtTG93ZXJGaW5pdGUsIGJvb2wmIHN1bVVwcGVyRmlu aXRlKSB7Ci0rICAgIC8vIGluZGljYXRvcnMgZm9yIGludGVnZXIgY2FuZGlkYXRlcyBhbmQgd2Vp Z2h0cwotKyAgICBib29sIGhhc0ludGVnZXI7Ci0rICAgIGJvb2wgYWxsSW50ZWdlcjsKLSsgICAg ZG91YmxlIG1pbldlaWdodDsKLSsgICAgZG91YmxlIG1heFdlaWdodDsKLSAKLS0gICAgICAgIC8v IHJlY29tcHV0ZSBjYW5kaWRhdGVzIHdpdGhvdXQgaW50ZWdlciBjb2x1bW5zCi0tICAgICAgICBp ZiAoaGFzSW50ZWdlciAmJiAhYWxsSW50ZWdlciAmJgotLSAgICAgICAgICAgIGNvbXB1dGVDYW5k aWRhdGVzKHJvdywgZGlyZWN0aW9uLCBjYW5kaWRhdGVzLCBzdW1Mb3dlciwgc3VtVXBwZXIsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtTG93ZXJGaW5pdGUsIHN1bVVwcGVyRmlu aXRlLCBoYXNJbnRlZ2VyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbEludGVn ZXIsIG1pbldlaWdodCwgbWF4V2VpZ2h0LCBmYWxzZSkpCi0tICAgICAgICAgIHJldHVybiB0cnVl OwotKyAgICAvLyBjb21wdXRlIGNhbmRpZGF0ZXMKLSsgICAgaWYgKGNvbXB1dGVDYW5kaWRhdGVz KHJvdywgZGlyZWN0aW9uLCBjYW5kaWRhdGVzLCBzdW1Mb3dlciwgc3VtVXBwZXIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICBzdW1Mb3dlckZpbml0ZSwgc3VtVXBwZXJGaW5pdGUsIGhhc0lu dGVnZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxJbnRlZ2VyLCBtaW5XZWlnaHQs IG1heFdlaWdodCwgdHJ1ZSkpIHsKLSsgICAgICAvLyByZXR1cm4gaWYgdGhlcmUgYXJlIG5vIGlu dGVnZXIgY29sdW1ucwotKyAgICAgIGlmICghaGFzSW50ZWdlcikgcmV0dXJuIHRydWU7Ci0rICAg ICAgLy8gYWxsIGNvbHVtbnMgbmVlZCB0byBoYXZlIHNhbWUgd2VpZ2h0cyBpZiB3ZSBvbmx5IGhh dmUgaW50ZWdlcgotKyAgICAgIC8vIGNvbHVtbnMKLSsgICAgICBpZiAoYWxsSW50ZWdlcikgewot KyAgICAgICAgaWYgKG1pbldlaWdodCAhPSBtYXhXZWlnaHQpIHJldHVybiBmYWxzZTsKLSsgICAg ICAgIHJldHVybiB0cnVlOwotKyAgICAgIH0KLSsgICAgfQotIAotLSAgICAgICAgcmV0dXJuIGZh bHNlOwotLSAgICAgIH07Ci0rICAgIC8vIHJlY29tcHV0ZSBjYW5kaWRhdGVzIHdpdGhvdXQgaW50 ZWdlciBjb2x1bW5zCi0rICAgIGlmIChoYXNJbnRlZ2VyICYmCi0rICAgICAgICBjb21wdXRlQ2Fu ZGlkYXRlcyhyb3csIGRpcmVjdGlvbiwgY2FuZGlkYXRlcywgc3VtTG93ZXIsIHN1bVVwcGVyLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtTG93ZXJGaW5pdGUsIHN1bVVwcGVyRmluaXRl LCBoYXNJbnRlZ2VyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsSW50ZWdlciwgbWlu V2VpZ2h0LCBtYXhXZWlnaHQsIGZhbHNlKSkKLSsgICAgICByZXR1cm4gdHJ1ZTsKLSsKLSsgICAg cmV0dXJuIGZhbHNlOwotKyAgfTsKLSAKLSAgIC8vIGxhbWJkYSBmb3IgYWN0dWFsIHN0dWZmaW5n Ci0gICBhdXRvIGNoZWNrUm93ID0gWyZdKEhpZ2hzSW50IHJvdywgZG91YmxlIHJocywgSGlnaHNJ bnQgZGlyZWN0aW9uKSB7Ci1AQCAtNTEzNywxNSArNTE0NSwxMCBAQCBIUHJlc29sdmU6OlJlc3Vs dCBIUHJlc29sdmU6OnNpbmdsZXRvbkNvbFN0dWZmaW5nKAotICAgICBIaWdoc0NEb3VibGUgc3Vt VXBwZXI7Ci0gICAgIGJvb2wgc3VtTG93ZXJGaW5pdGU7Ci0gICAgIGJvb2wgc3VtVXBwZXJGaW5p dGU7Ci0tICAgIGJvb2wgaGFzSW50ZWdlcjsKLS0gICAgYm9vbCBhbGxJbnRlZ2VyOwotLSAgICBk b3VibGUgbWluV2VpZ2h0OwotLSAgICBkb3VibGUgbWF4V2VpZ2h0OwotIAotICAgICAvLyBjb21w dXRlIGNhbmRpZGF0ZXMKLSAgICAgaWYgKCFjaGVja0NhbmRpZGF0ZXMocm93LCBkaXJlY3Rpb24s IGNhbmRpZGF0ZXMsIHN1bUxvd2VyLCBzdW1VcHBlciwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgc3VtTG93ZXJGaW5pdGUsIHN1bVVwcGVyRmluaXRlLCBoYXNJbnRlZ2VyLCBhbGxJbnRlZ2Vy LAotLSAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XZWlnaHQsIG1heFdlaWdodCkpCi0rICAg ICAgICAgICAgICAgICAgICAgICAgIHN1bUxvd2VyRmluaXRlLCBzdW1VcHBlckZpbml0ZSkpCi0g ICAgICAgcmV0dXJuIFJlc3VsdDo6a09rOwotIAotICAgICAvLyBzb3J0IGNhbmRpZGF0ZXMKLQot RnJvbSAzNzNiZmM3NzA3MDdjY2VlNzZiZDZlOTY5NjQ0ZTliZGU0MGQ3YjlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogZndlc3NlbG0gPGZ3ZXNzZWxtQG1hdGh3b3Jrcy5jb20+Ci1E YXRlOiBUaHUsIDkgQXByIDIwMjYgMTQ6MzQ6MTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA4Lzld IFVzZSBjb3VudGVyIGluc3RlYWQgb2YgYm9vbGVhbiBpbmRpY2F0b3JzCi0KLS0tLQotIGhpZ2hz L3ByZXNvbHZlL0hQcmVzb2x2ZS5jcHAgfCAxNDEgKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKSwgNzMgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9oaWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwIGIvaGlnaHMv cHJlc29sdmUvSFByZXNvbHZlLmNwcAotaW5kZXggZTcxMDVmMjgyMy4uM2UzZWQ1ODhlOSAxMDA2 NDQKLS0tLSBhL2hpZ2hzL3ByZXNvbHZlL0hQcmVzb2x2ZS5jcHAKLSsrKyBiL2hpZ2hzL3ByZXNv bHZlL0hQcmVzb2x2ZS5jcHAKLUBAIC01MDE3LDEyICs1MDE3LDkgQEAgSFByZXNvbHZlOjpSZXN1 bHQgSFByZXNvbHZlOjpzaW5nbGV0b25Db2xTdHVmZmluZygKLSAgIC8vIGxhbWJkYSBmb3Igc3Rv cmluZyBhIGNhbmRpZGF0ZQotICAgYXV0byBhZGRDYW5kaWRhdGUgPSBbJl0oc3RkOjp2ZWN0b3I8 Y2FuZGlkYXRlPiYgY2FuZGlkYXRlcywgSGlnaHNJbnQgY29sLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG91YmxlIHZhbCwgSGlnaHNJbnQgZGlyZWN0aW9uLCBkb3VibGUmIG1pbldlaWdo dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSYgbWF4V2VpZ2h0LCBib29sJiBo YXNJbnRlZ2VyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgYWxsSW50ZWdlcikg ewotLSAgICBoYXNJbnRlZ2VyID0KLS0gICAgICAgIGhhc0ludGVnZXIgfHwgbW9kZWwtPmludGVn cmFsaXR5X1tjb2xdID09IEhpZ2hzVmFyVHlwZTo6a0ludGVnZXI7Ci0tICAgIGFsbEludGVnZXIg PQotLSAgICAgICAgYWxsSW50ZWdlciAmJiBtb2RlbC0+aW50ZWdyYWxpdHlfW2NvbF0gPT0gSGln aHNWYXJUeXBlOjprSW50ZWdlcjsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSYg bWF4V2VpZ2h0LCBzaXplX3QmIG51bUludGVnZXJDYW5kaWRhdGVzKSB7Ci0rICAgIGlmIChtb2Rl bC0+aW50ZWdyYWxpdHlfW2NvbF0gPT0gSGlnaHNWYXJUeXBlOjprSW50ZWdlcikKLSsgICAgICBu dW1JbnRlZ2VyQ2FuZGlkYXRlcysrOwotICAgICBtaW5XZWlnaHQgPSBzdGQ6Om1pbihtaW5XZWln aHQsIGRpcmVjdGlvbiAqIHZhbCk7Ci0gICAgIG1heFdlaWdodCA9IHN0ZDo6bWF4KG1heFdlaWdo dCwgZGlyZWN0aW9uICogdmFsKTsKLSAgICAgY2FuZGlkYXRlcy5wdXNoX2JhY2soY2FuZGlkYXRl e2NvbCwgdmFsLCBkaXJlY3Rpb259KTsKLUBAIC01MDM4LDY2ICs1MDM1LDY1IEBAIEhQcmVzb2x2 ZTo6UmVzdWx0IEhQcmVzb2x2ZTo6c2luZ2xldG9uQ29sU3R1ZmZpbmcoCi0gICB9OwotIAotICAg Ly8gbGFtYmRhIGZvciBjb21wdXRpbmcgY2FuZGlkYXRlcyBmb3Igc3R1ZmZpbmcKLS0gIGF1dG8g Y29tcHV0ZUNhbmRpZGF0ZXMgPQotLSAgICAgIFsmXShIaWdoc0ludCByb3csIEhpZ2hzSW50IGRp cmVjdGlvbiwgc3RkOjp2ZWN0b3I8Y2FuZGlkYXRlPiYgY2FuZGlkYXRlcywKLS0gICAgICAgICAg SGlnaHNDRG91YmxlJiBzdW1Mb3dlciwgSGlnaHNDRG91YmxlJiBzdW1VcHBlciwgYm9vbCYgc3Vt TG93ZXJGaW5pdGUsCi0tICAgICAgICAgIGJvb2wmIHN1bVVwcGVyRmluaXRlLCBib29sJiBoYXNJ bnRlZ2VyLCBib29sJiBhbGxJbnRlZ2VyLAotLSAgICAgICAgICBkb3VibGUmIG1pbldlaWdodCwg ZG91YmxlJiBtYXhXZWlnaHQsIGJvb2wgYWxsb3dJbnRlZ2VyQ2FuZGlkYXRlcykgewotLSAgICAg ICAgLy8gdmVjdG9ycyBmb3IgY2FuZGlkYXRlcyBhbmQgYWN0aXZpdHkgYm91bmRzCi0tICAgICAg ICBjYW5kaWRhdGVzLmNsZWFyKCk7Ci0tICAgICAgICBjYW5kaWRhdGVzLnJlc2VydmUocm93c2l6 ZVtyb3ddKTsKLS0gICAgICAgIHN1bUxvd2VyID0gMC4wOwotLSAgICAgICAgc3VtVXBwZXIgPSAw LjA7Ci0tICAgICAgICBzdW1Mb3dlckZpbml0ZSA9IHRydWU7Ci0tICAgICAgICBzdW1VcHBlckZp bml0ZSA9IHRydWU7Ci0tICAgICAgICBoYXNJbnRlZ2VyID0gZmFsc2U7Ci0tICAgICAgICBhbGxJ bnRlZ2VyID0gdHJ1ZTsKLS0gICAgICAgIG1pbldlaWdodCA9IGtIaWdoc0luZjsKLS0gICAgICAg IG1heFdlaWdodCA9IC1rSGlnaHNJbmY7Ci0tCi0tICAgICAgICBmb3IgKGF1dG8mIG56IDogZ2V0 Um93VmVjdG9yKHJvdykpIHsKLS0gICAgICAgICAgLy8gZ2V0IGNvbHVtbiBpbmRleCwgY29lZmZp Y2llbnQsIGNvc3QgYW5kIGJvdW5kcwotLSAgICAgICAgICBIaWdoc0ludCBqID0gbnouaW5kZXgo KTsKLS0gICAgICAgICAgZG91YmxlIGFqID0gZGlyZWN0aW9uICogbnoudmFsdWUoKTsKLS0gICAg ICAgICAgZG91YmxlIGNqID0gbW9kZWwtPmNvbF9jb3N0X1tqXTsKLS0gICAgICAgICAgZG91Ymxl IHN1bUxvd2VyQm91bmQgPSBtb2RlbC0+Y29sX2xvd2VyX1tqXTsKLS0gICAgICAgICAgZG91Ymxl IHN1bVVwcGVyQm91bmQgPSBtb2RlbC0+Y29sX3VwcGVyX1tqXTsKLS0gICAgICAgICAgYm9vbCBp c0NhbmRpZGF0ZSA9IGFsbG93SW50ZWdlckNhbmRpZGF0ZXMgfHwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1vZGVsLT5pbnRlZ3JhbGl0eV9bal0gIT0gSGlnaHNWYXJUeXBlOjprSW50 ZWdlcjsKLS0KLS0gICAgICAgICAgaWYgKGlzU2luZ2xldG9uKGopKSB7Ci0tICAgICAgICAgICAg Ly8gY2hlY2sgc2luZ2xldG9uCi0tICAgICAgICAgICAgaWYgKGFqID4gMCkgewotLSAgICAgICAg ICAgICAgaWYgKGNqID49IDApCi0tICAgICAgICAgICAgICAgIC8vIGR1YWwgZml4aW5nOiBmaXgg dG8gbG93ZXIgYm91bmQKLS0gICAgICAgICAgICAgICAgc3VtVXBwZXJCb3VuZCA9IHN1bUxvd2Vy Qm91bmQ7Ci0tICAgICAgICAgICAgICBlbHNlIGlmIChpc0NhbmRpZGF0ZSkgewotLSAgICAgICAg ICAgICAgICAvLyBjYW5kaWRhdGUgZm9yIHN0dWZmaW5nCi0tICAgICAgICAgICAgICAgIHN1bVVw cGVyQm91bmQgPSBzdW1Mb3dlckJvdW5kOwotLSAgICAgICAgICAgICAgICBhZGRDYW5kaWRhdGUo Y2FuZGlkYXRlcywgaiwgYWosIEhpZ2hzSW50ezF9LCBtaW5XZWlnaHQsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtYXhXZWlnaHQsIGhhc0ludGVnZXIsIGFsbEludGVnZXIpOwotLSAg ICAgICAgICAgICAgfQotLSAgICAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICBpZiAo Y2ogPD0gMCkKLS0gICAgICAgICAgICAgICAgLy8gZHVhbCBmaXhpbmc6IGZpeCB0byB1cHBlciBi b3VuZAotLSAgICAgICAgICAgICAgICBzdW1Mb3dlckJvdW5kID0gc3VtVXBwZXJCb3VuZDsKLS0g ICAgICAgICAgICAgIGVsc2UgaWYgKGlzQ2FuZGlkYXRlKSB7Ci0tICAgICAgICAgICAgICAgIC8v IGNhbmRpZGF0ZSBmb3Igc3R1ZmZpbmc7IG11bHRpcGx5IGNvbHVtbiB3aXRoIC0xCi0tICAgICAg ICAgICAgICAgIHN1bUxvd2VyQm91bmQgPSBzdW1VcHBlckJvdW5kOwotLSAgICAgICAgICAgICAg ICBhZGRDYW5kaWRhdGUoY2FuZGlkYXRlcywgaiwgYWosIEhpZ2hzSW50ey0xfSwgbWluV2VpZ2h0 LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2VpZ2h0LCBoYXNJbnRlZ2VyLCBh bGxJbnRlZ2VyKTsKLS0gICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICB9Ci0rICBhdXRvIGNv bXB1dGVDYW5kaWRhdGVzID0gWyZdKEhpZ2hzSW50IHJvdywgSGlnaHNJbnQgZGlyZWN0aW9uLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxjYW5kaWRhdGU+JiBj YW5kaWRhdGVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaWdoc0NEb3VibGUm IHN1bUxvd2VyLCBIaWdoc0NEb3VibGUmIHN1bVVwcGVyLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sJiBzdW1Mb3dlckZpbml0ZSwgYm9vbCYgc3VtVXBwZXJGaW5pdGUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCYgbnVtSW50ZWdlckNhbmRpZGF0 ZXMsIGRvdWJsZSYgbWluV2VpZ2h0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b3VibGUmIG1heFdlaWdodCwgYm9vbCBhbGxvd0ludGVnZXJDYW5kaWRhdGVzKSB7Ci0rICAgIC8v IHZlY3RvcnMgZm9yIGNhbmRpZGF0ZXMgYW5kIGFjdGl2aXR5IGJvdW5kcwotKyAgICBjYW5kaWRh dGVzLmNsZWFyKCk7Ci0rICAgIGNhbmRpZGF0ZXMucmVzZXJ2ZShyb3dzaXplW3Jvd10pOwotKyAg ICBzdW1Mb3dlciA9IDAuMDsKLSsgICAgc3VtVXBwZXIgPSAwLjA7Ci0rICAgIHN1bUxvd2VyRmlu aXRlID0gdHJ1ZTsKLSsgICAgc3VtVXBwZXJGaW5pdGUgPSB0cnVlOwotKyAgICBudW1JbnRlZ2Vy Q2FuZGlkYXRlcyA9IDA7Ci0rICAgIG1pbldlaWdodCA9IGtIaWdoc0luZjsKLSsgICAgbWF4V2Vp Z2h0ID0gLWtIaWdoc0luZjsKLSsKLSsgICAgZm9yIChhdXRvJiBueiA6IGdldFJvd1ZlY3Rvcihy b3cpKSB7Ci0rICAgICAgLy8gZ2V0IGNvbHVtbiBpbmRleCwgY29lZmZpY2llbnQsIGNvc3QgYW5k IGJvdW5kcwotKyAgICAgIEhpZ2hzSW50IGogPSBuei5pbmRleCgpOwotKyAgICAgIGRvdWJsZSBh aiA9IGRpcmVjdGlvbiAqIG56LnZhbHVlKCk7Ci0rICAgICAgZG91YmxlIGNqID0gbW9kZWwtPmNv bF9jb3N0X1tqXTsKLSsgICAgICBkb3VibGUgc3VtTG93ZXJCb3VuZCA9IG1vZGVsLT5jb2xfbG93 ZXJfW2pdOwotKyAgICAgIGRvdWJsZSBzdW1VcHBlckJvdW5kID0gbW9kZWwtPmNvbF91cHBlcl9b al07Ci0rICAgICAgYm9vbCBpc0NhbmRpZGF0ZSA9IGFsbG93SW50ZWdlckNhbmRpZGF0ZXMgfHwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwtPmludGVncmFsaXR5X1tqXSAhPSBIaWdo c1ZhclR5cGU6OmtJbnRlZ2VyOwotKwotKyAgICAgIGlmIChpc1NpbmdsZXRvbihqKSkgewotKyAg ICAgICAgLy8gY2hlY2sgc2luZ2xldG9uCi0rICAgICAgICBpZiAoYWogPiAwKSB7Ci0rICAgICAg ICAgIGlmIChjaiA+PSAwKQotKyAgICAgICAgICAgIC8vIGR1YWwgZml4aW5nOiBmaXggdG8gbG93 ZXIgYm91bmQKLSsgICAgICAgICAgICBzdW1VcHBlckJvdW5kID0gc3VtTG93ZXJCb3VuZDsKLSsg ICAgICAgICAgZWxzZSBpZiAoaXNDYW5kaWRhdGUpIHsKLSsgICAgICAgICAgICAvLyBjYW5kaWRh dGUgZm9yIHN0dWZmaW5nCi0rICAgICAgICAgICAgc3VtVXBwZXJCb3VuZCA9IHN1bUxvd2VyQm91 bmQ7Ci0rICAgICAgICAgICAgYWRkQ2FuZGlkYXRlKGNhbmRpZGF0ZXMsIGosIGFqLCBIaWdoc0lu dHsxfSwgbWluV2VpZ2h0LCBtYXhXZWlnaHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIG51 bUludGVnZXJDYW5kaWRhdGVzKTsKLSsgICAgICAgICAgfQotKyAgICAgICAgfSBlbHNlIHsKLSsg ICAgICAgICAgaWYgKGNqIDw9IDApCi0rICAgICAgICAgICAgLy8gZHVhbCBmaXhpbmc6IGZpeCB0 byB1cHBlciBib3VuZAotKyAgICAgICAgICAgIHN1bUxvd2VyQm91bmQgPSBzdW1VcHBlckJvdW5k OwotKyAgICAgICAgICBlbHNlIGlmIChpc0NhbmRpZGF0ZSkgewotKyAgICAgICAgICAgIC8vIGNh bmRpZGF0ZSBmb3Igc3R1ZmZpbmc7IG11bHRpcGx5IGNvbHVtbiB3aXRoIC0xCi0rICAgICAgICAg ICAgc3VtTG93ZXJCb3VuZCA9IHN1bVVwcGVyQm91bmQ7Ci0rICAgICAgICAgICAgYWRkQ2FuZGlk YXRlKGNhbmRpZGF0ZXMsIGosIGFqLCBIaWdoc0ludHstMX0sIG1pbldlaWdodCwgbWF4V2VpZ2h0 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICBudW1JbnRlZ2VyQ2FuZGlkYXRlcyk7Ci0gICAg ICAgICAgIH0KLS0gICAgICAgICAgLy8gdXBkYXRlIGFjdGl2aXRpZXMKLS0gICAgICAgICAgaWYg KGFqIDwgMCkgc3RkOjpzd2FwKHN1bUxvd2VyQm91bmQsIHN1bVVwcGVyQm91bmQpOwotLSAgICAg ICAgICB1cGRhdGVBY3Rpdml0eUJvdW5kcyhzdW1Mb3dlciwgc3VtVXBwZXIsIHN1bUxvd2VyRmlu aXRlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1VcHBlckZpbml0ZSwgYWos IHN1bUxvd2VyQm91bmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bVVwcGVy Qm91bmQpOwotLSAgICAgICAgICBpZiAoIXN1bUxvd2VyRmluaXRlICYmICFzdW1VcHBlckZpbml0 ZSkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotLSAgICAgICAgcmV0dXJuIHRydWU7Ci0tICAg ICAgfTsKLSsgICAgICB9Ci0rICAgICAgLy8gdXBkYXRlIGFjdGl2aXRpZXMKLSsgICAgICBpZiAo YWogPCAwKSBzdGQ6OnN3YXAoc3VtTG93ZXJCb3VuZCwgc3VtVXBwZXJCb3VuZCk7Ci0rICAgICAg dXBkYXRlQWN0aXZpdHlCb3VuZHMoc3VtTG93ZXIsIHN1bVVwcGVyLCBzdW1Mb3dlckZpbml0ZSwg c3VtVXBwZXJGaW5pdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgYWosIHN1bUxvd2Vy Qm91bmQsIHN1bVVwcGVyQm91bmQpOwotKyAgICAgIGlmICghc3VtTG93ZXJGaW5pdGUgJiYgIXN1 bVVwcGVyRmluaXRlKSByZXR1cm4gZmFsc2U7Ci0rICAgIH0KLSsgICAgcmV0dXJuIHRydWU7Ci0r ICB9OwotIAotICAgLy8gbGFtYmRhIGZvciBjb21wdXRpbmcgYW5kIGNoZWNraW5nIGNhbmRpZGF0 ZXMgZm9yIHN0dWZmaW5nCi0gICBhdXRvIGNoZWNrQ2FuZGlkYXRlcyA9IFsmXShIaWdoc0ludCBy b3csIEhpZ2hzSW50IGRpcmVjdGlvbiwKLUBAIC01MTA1LDMwICs1MTAxLDI5IEBAIEhQcmVzb2x2 ZTo6UmVzdWx0IEhQcmVzb2x2ZTo6c2luZ2xldG9uQ29sU3R1ZmZpbmcoCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBIaWdoc0NEb3VibGUmIHN1bUxvd2VyLCBIaWdoc0NEb3VibGUmIHN1 bVVwcGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgc3VtTG93ZXJGaW5p dGUsIGJvb2wmIHN1bVVwcGVyRmluaXRlKSB7Ci0gICAgIC8vIGluZGljYXRvcnMgZm9yIGludGVn ZXIgY2FuZGlkYXRlcyBhbmQgd2VpZ2h0cwotLSAgICBib29sIGhhc0ludGVnZXI7Ci0tICAgIGJv b2wgYWxsSW50ZWdlcjsKLSsgICAgc2l6ZV90IG51bUludGVnZXJDYW5kaWRhdGVzOwotICAgICBk b3VibGUgbWluV2VpZ2h0OwotICAgICBkb3VibGUgbWF4V2VpZ2h0OwotIAotICAgICAvLyBjb21w dXRlIGNhbmRpZGF0ZXMKLSAgICAgaWYgKGNvbXB1dGVDYW5kaWRhdGVzKHJvdywgZGlyZWN0aW9u LCBjYW5kaWRhdGVzLCBzdW1Mb3dlciwgc3VtVXBwZXIsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICBzdW1Mb3dlckZpbml0ZSwgc3VtVXBwZXJGaW5pdGUsIGhhc0ludGVnZXIsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICBhbGxJbnRlZ2VyLCBtaW5XZWlnaHQsIG1heFdlaWdodCwgdHJ1 ZSkpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bUxvd2VyRmluaXRlLCBzdW1VcHBl ckZpbml0ZSwgbnVtSW50ZWdlckNhbmRpZGF0ZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICBtaW5XZWlnaHQsIG1heFdlaWdodCwgdHJ1ZSkpIHsKLSAgICAgICAvLyByZXR1cm4gaWYgdGhl cmUgYXJlIG5vIGludGVnZXIgY29sdW1ucwotLSAgICAgIGlmICghaGFzSW50ZWdlcikgcmV0dXJu IHRydWU7Ci0rICAgICAgaWYgKG51bUludGVnZXJDYW5kaWRhdGVzID09IDApIHJldHVybiB0cnVl OwotICAgICAgIC8vIGFsbCBjb2x1bW5zIG5lZWQgdG8gaGF2ZSBzYW1lIHdlaWdodHMgaWYgd2Ug b25seSBoYXZlIGludGVnZXIKLSAgICAgICAvLyBjb2x1bW5zCi0tICAgICAgaWYgKGFsbEludGVn ZXIpIHsKLSsgICAgICBpZiAobnVtSW50ZWdlckNhbmRpZGF0ZXMgPT0gY2FuZGlkYXRlcy5zaXpl KCkpIHsKLSAgICAgICAgIGlmIChtaW5XZWlnaHQgIT0gbWF4V2VpZ2h0KSByZXR1cm4gZmFsc2U7 Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICB9Ci0gICAgIH0KLSAKLSAgICAgLy8gcmVj b21wdXRlIGNhbmRpZGF0ZXMgd2l0aG91dCBpbnRlZ2VyIGNvbHVtbnMKLS0gICAgaWYgKGhhc0lu dGVnZXIgJiYKLSsgICAgaWYgKG51bUludGVnZXJDYW5kaWRhdGVzID4gMCAmJgotICAgICAgICAg Y29tcHV0ZUNhbmRpZGF0ZXMocm93LCBkaXJlY3Rpb24sIGNhbmRpZGF0ZXMsIHN1bUxvd2VyLCBz dW1VcHBlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHN1bUxvd2VyRmluaXRlLCBzdW1V cHBlckZpbml0ZSwgaGFzSW50ZWdlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGFsbElu dGVnZXIsIG1pbldlaWdodCwgbWF4V2VpZ2h0LCBmYWxzZSkpCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICBzdW1Mb3dlckZpbml0ZSwgc3VtVXBwZXJGaW5pdGUsIG51bUludGVnZXJDYW5kaWRh dGVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2VpZ2h0LCBtYXhXZWlnaHQsIGZh bHNlKSkKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAKLSAgICAgcmV0dXJuIGZhbHNlOwotCi1Gcm9t IGNjMWRmMjc3MjhiYjZmNWE5YzUxNjg2OGU0NmI3ZjQzZGNjMTU2YWYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBmd2Vzc2VsbSA8Zndlc3NlbG1AbWF0aHdvcmtzLmNvbT4KLURhdGU6 IFRodSwgOSBBcHIgMjAyNiAxNDozNDo1MCArMDIwMAotU3ViamVjdDogW1BBVENIIDkvOV0gRml4 IGNvbW1lbnQKLQotLS0tCi0gaGlnaHMvcHJlc29sdmUvSFByZXNvbHZlLmNwcCB8IDIgKy0KLSAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdp dCBhL2hpZ2hzL3ByZXNvbHZlL0hQcmVzb2x2ZS5jcHAgYi9oaWdocy9wcmVzb2x2ZS9IUHJlc29s dmUuY3BwCi1pbmRleCAzZTNlZDU4OGU5Li4xZWJmNmQ5Y2E1IDEwMDY0NAotLS0tIGEvaGlnaHMv cHJlc29sdmUvSFByZXNvbHZlLmNwcAotKysrIGIvaGlnaHMvcHJlc29sdmUvSFByZXNvbHZlLmNw cAotQEAgLTUxMDAsNyArNTEwMCw3IEBAIEhQcmVzb2x2ZTo6UmVzdWx0IEhQcmVzb2x2ZTo6c2lu Z2xldG9uQ29sU3R1ZmZpbmcoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZl Y3RvcjxjYW5kaWRhdGU+JiBjYW5kaWRhdGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSGlnaHNDRG91YmxlJiBzdW1Mb3dlciwgSGlnaHNDRG91YmxlJiBzdW1VcHBlciwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIHN1bUxvd2VyRmluaXRlLCBib29sJiBzdW1V cHBlckZpbml0ZSkgewotLSAgICAvLyBpbmRpY2F0b3JzIGZvciBpbnRlZ2VyIGNhbmRpZGF0ZXMg YW5kIHdlaWdodHMKLSsgICAgLy8gbnVtYmVyIG9mIGludGVnZXIgY2FuZGlkYXRlcyBhbmQgd2Vp Z2h0cwotICAgICBzaXplX3QgbnVtSW50ZWdlckNhbmRpZGF0ZXM7Ci0gICAgIGRvdWJsZSBtaW5X ZWlnaHQ7Ci0gICAgIGRvdWJsZSBtYXhXZWlnaHQ7CgpkaWZmIC0tZ2l0IGEvY29pbi1vci1IaUdI Uy11bmJ1bmRsZS5wYXRjaCBiL2NvaW4tb3ItSGlHSFMtdW5idW5kbGUucGF0Y2gKaW5kZXggNWMy MTE5MC4uMTA0MjBkOCAxMDA2NDQKLS0tIGEvY29pbi1vci1IaUdIUy11bmJ1bmRsZS5wYXRjaAor KysgYi9jb2luLW9yLUhpR0hTLXVuYnVuZGxlLnBhdGNoCkBAIC0xLDE3ICsxLDI4IEBACi0tLS0g SGlHSFMtMS4xNC4wL2FwcC9IaWdoc1J1bnRpbWVPcHRpb25zLmgub3JpZwkyMDI2LTA0LTA2IDA4 OjM2OjMxLjAwMDAwMDAwMCAtMDYwMAotKysrIEhpR0hTLTEuMTQuMC9hcHAvSGlnaHNSdW50aW1l T3B0aW9ucy5oCTIwMjYtMDQtMDYgMTM6NTA6MTQuNzUxNTE2NDE2IC0wNjAwCi1AQCAtMTQsNyAr MTQsNyBAQAorLS0tIEhpR0hTLTEuMTUuMS9hcHAvSGlnaHNBcHBFeHRlcm5hbERlcHMuaC5vcmln CTIwMjYtMDctMDIgMDA6NDI6MzcuMDAwMDAwMDAwIC0wNjAwCisrKysgSGlHSFMtMS4xNS4xL2Fw cC9IaWdoc0FwcEV4dGVybmFsRGVwcy5oCTIwMjYtMDctMDQgMTI6MDA6MTkuNDgwOTM4MjIzIC0w NjAwCitAQCAtMTMsNyArMTMsNyBAQAorICNkZWZpbmUgSElHSFNfQVBQX0VYVEVSTkFMX0RFUFNf SF8KKyAKKyAjaW5jbHVkZSAiSGlnaHNFeHRlcm5hbEFwaS5oIgorLSNpbmNsdWRlICJjbGkxMS9D TEkxMS5ocHAiCisrI2luY2x1ZGUgPENMSS9DTEkuaHBwPgogIAorIG5hbWVzcGFjZSBIaWdoc0V4 dHJhcyB7Cisgc3RydWN0IGFwcF9mYW1pbHkge307CistLS0gSGlHSFMtMS4xNS4xL2FwcC9IaWdo c1J1bnRpbWVPcHRpb25zLmgub3JpZwkyMDI2LTA3LTAyIDAwOjQyOjM3LjAwMDAwMDAwMCAtMDYw MAorKysrIEhpR0hTLTEuMTUuMS9hcHAvSGlnaHNSdW50aW1lT3B0aW9ucy5oCTIwMjYtMDctMDQg MTE6NTk6MjkuNTI4NTQ4Nzk3IC0wNjAwCitAQCAtMTUsNyArMTUsNyBAQAogICNpbmNsdWRlIDxj YXNzZXJ0PgorICNpbmNsdWRlIDx0dXBsZT4KICAKLS0jaW5jbHVkZSAiLi4vZXh0ZXJuL0NMSTEx LmhwcCIKKy0jaW5jbHVkZSAiLi4vZXh0ZXJuL2NsaTExL0NMSTExLmhwcCIKICsjaW5jbHVkZSA8 Q0xJL0NMSS5ocHA+CiAgI2luY2x1ZGUgIkhDb25maWcuaCIKKyAjaW5jbHVkZSAiSGlnaHNBcHBF eHRlcm5hbERlcHMuaCIKICAjaW5jbHVkZSAiaW8vSGlnaHNJTy5oIgotICNpbmNsdWRlICJpby9M b2FkT3B0aW9ucy5oIgotLS0tIEhpR0hTLTEuMTQuMC9DTWFrZUxpc3RzLnR4dC5vcmlnCTIwMjYt MDUtMjcgMTY6NTE6MTQuODY5NjkzMDMyIC0wNjAwCi0rKysgSGlHSFMtMS4xNC4wL0NNYWtlTGlz dHMudHh0CTIwMjYtMDUtMjcgMTY6NTE6MzIuMjY5OTM4MDg3IC0wNjAwCi1AQCAtNTQ3LDggKzU0 Nyw5IEBAIGlmKE5PVCBGQVNUX0JVSUxEIE9SIENTSEFSUCkKKy0tLSBIaUdIUy0xLjE1LjEvQ01h a2VMaXN0cy50eHQub3JpZwkyMDI2LTA3LTEzIDA5OjU0OjEwLjQ0NzQ1MzY0MiAtMDYwMAorKysr IEhpR0hTLTEuMTUuMS9DTWFrZUxpc3RzLnR4dAkyMDI2LTA3LTEzIDA5OjU0OjI2LjA4MDEyNTE2 NCAtMDYwMAorQEAgLTU1OCw4ICs1NTgsOSBAQCBpZihOT1QgRkFTVF9CVUlMRCBPUiBDU0hBUlAp CiAgZW5kaWYoKQogIAogICMgaWYgemxpYiBpcyBmb3VuZCwgdGhlbiB3ZSBjYW4gZW5hYmxlIHJl YWRpbmcgemxpYi1jb21wcmVzc2VkIGlucHV0CkBAIC0yMiw5MCArMzMsMTAgQEAKICsgIHNldCha TElCX0ZPVU5EIE9OKQogIGVuZGlmKCkKICAKLSBpZiAoUFlUSE9OX0JVSUxEX1NFVFVQIE9SIENN QUtFX0lOU1RBTExfRE9DRElSIFNUUkVRVUFMICIiIE9SIE5PVCBCVUlMRF9DWFgpCi0tLS0gSGlH SFMtMS4xNC4wL2NtYWtlL3NvdXJjZXMuY21ha2Uub3JpZwkyMDI2LTA0LTA2IDA4OjM2OjMxLjAw MDAwMDAwMCAtMDYwMAotKysrIEhpR0hTLTEuMTQuMC9jbWFrZS9zb3VyY2VzLmNtYWtlCTIwMjYt MDQtMDYgMTM6NTA6MTQuNzUxOTkwNDc5IC0wNjAwCi1AQCAtMSw3ICsxLDUgQEAKLSBzZXQoaW5j bHVkZV9kaXJzCi0gICAkPEJVSUxEX0lOVEVSRkFDRToke1BST0pFQ1RfU09VUkNFX0RJUn0vZXh0 ZXJuPgotLSAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2V4dGVybi9w ZHFzb3J0PgotLSAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2V4dGVy bi96c3RyPgotICAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2hpZ2hz PgotICAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2hpZ2hzL2ludGVy ZmFjZXM+Ci0gICAkPEJVSUxEX0lOVEVSRkFDRToke1BST0pFQ1RfU09VUkNFX0RJUn0vaGlnaHMv aW8+Ci1AQCAtMjU5LDcxICsyNTcsOSBAQCBzZXQoaGlwb191dGlsX2hlYWRlcnMKLSAgICAgaXBt L2hpcG8vYXV4aWxpYXJ5L1ZlY3Rvck9wZXJhdGlvbnMuaCkKLSAKLSBzZXQoaGlwb19vcmRlcmlu Z3Nfc291cmNlcwotLSAgICAuLi9leHRlcm4vYW1kL2FtZF8xLmMKLS0gICAgLi4vZXh0ZXJuL2Ft ZC9hbWRfMi5jCi0tICAgIC4uL2V4dGVybi9hbWQvYW1kX2FhdC5jCi0tICAgIC4uL2V4dGVybi9h bWQvYW1kX2NvbnRyb2wuYwotLSAgICAuLi9leHRlcm4vYW1kL2FtZF9kZWZhdWx0cy5jCi0tICAg IC4uL2V4dGVybi9hbWQvYW1kX2luZm8uYwotLSAgICAuLi9leHRlcm4vYW1kL2FtZF9vcmRlci5j Ci0tICAgIC4uL2V4dGVybi9hbWQvYW1kX3Bvc3RfdHJlZS5jCi0tICAgIC4uL2V4dGVybi9hbWQv YW1kX3Bvc3RvcmRlci5jCi0tICAgIC4uL2V4dGVybi9hbWQvYW1kX3ByZXByb2Nlc3MuYwotLSAg ICAuLi9leHRlcm4vYW1kL2FtZF92YWxpZC5jCi0tICAgIC4uL2V4dGVybi9hbWQvU3VpdGVTcGFy c2VfY29uZmlnLmMKLS0gICAgLi4vZXh0ZXJuL21ldGlzL0dLbGliL2Vycm9yLmMKLS0gICAgLi4v ZXh0ZXJuL21ldGlzL0dLbGliL21jb3JlLmMKLS0gICAgLi4vZXh0ZXJuL21ldGlzL0dLbGliL21l bW9yeS5jCi0tICAgIC4uL2V4dGVybi9tZXRpcy9HS2xpYi9yYW5kb20uYwotLSAgICAuLi9leHRl cm4vbWV0aXMvbGlibWV0aXMvYXV4YXBpLmMKLS0gICAgLi4vZXh0ZXJuL21ldGlzL2xpYm1ldGlz L2JhbGFuY2UuYwotLSAgICAuLi9leHRlcm4vbWV0aXMvbGlibWV0aXMvYnVja2V0c29ydC5jCi0t ICAgIC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy9jb2Fyc2VuLmMKLS0gICAgLi4vZXh0ZXJuL21l dGlzL2xpYm1ldGlzL2NvbXByZXNzLmMKLS0gICAgLi4vZXh0ZXJuL21ldGlzL2xpYm1ldGlzL2Nv bnRpZy5jCi0tICAgIC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy9mbS5jCi0tICAgIC4uL2V4dGVy bi9tZXRpcy9saWJtZXRpcy9na2xpYi5jCi0tICAgIC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy9n cmFwaC5jCi0tICAgIC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy9pbml0cGFydC5jCi0tICAgIC4u L2V4dGVybi9tZXRpcy9saWJtZXRpcy9tY3V0aWwuYwotLSAgICAuLi9leHRlcm4vbWV0aXMvbGli bWV0aXMvbW1kLmMKLS0gICAgLi4vZXh0ZXJuL21ldGlzL2xpYm1ldGlzL29tZXRpcy5jCi0tICAg IC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy9vcHRpb25zLmMKLS0gICAgLi4vZXh0ZXJuL21ldGlz L2xpYm1ldGlzL3JlZmluZS5jCi0tICAgIC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy9zZXBhcmF0 b3IuYwotLSAgICAuLi9leHRlcm4vbWV0aXMvbGlibWV0aXMvc2ZtLmMKLS0gICAgLi4vZXh0ZXJu L21ldGlzL2xpYm1ldGlzL3NyZWZpbmUuYwotLSAgICAuLi9leHRlcm4vbWV0aXMvbGlibWV0aXMv dXRpbC5jCi0tICAgIC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy93c3BhY2UuYwotICAgICAuLi9l eHRlcm4vcmNtL3JjbS5jcHApCi0gCi0gc2V0KGhpcG9fb3JkZXJpbmdzX2hlYWRlcnMKLS0gICAg Li4vZXh0ZXJuL2FtZC9hbWRfaW50ZXJuYWwuaAotLSAgICAuLi9leHRlcm4vYW1kL2FtZC5oCi0t ICAgIC4uL2V4dGVybi9hbWQvU3VpdGVTcGFyc2VfY29uZmlnLmgKLS0gICAgLi4vZXh0ZXJuL21l dGlzL0dLbGliL2drX2FyY2guaAotLSAgICAuLi9leHRlcm4vbWV0aXMvR0tsaWIvZ2tfZGVmcy5o Ci0tICAgIC4uL2V4dGVybi9tZXRpcy9HS2xpYi9na19tYWNyb3MuaAotLSAgICAuLi9leHRlcm4v bWV0aXMvR0tsaWIvZ2tfbWtibGFzLmgKLS0gICAgLi4vZXh0ZXJuL21ldGlzL0dLbGliL2drX21r bWVtb3J5LmgKLS0gICAgLi4vZXh0ZXJuL21ldGlzL0dLbGliL2drX21rcHF1ZXVlLmgKLS0gICAg Li4vZXh0ZXJuL21ldGlzL0dLbGliL2drX21rcmFuZG9tLmgKLS0gICAgLi4vZXh0ZXJuL21ldGlz L0dLbGliL2drX21rc29ydC5oCi0tICAgIC4uL2V4dGVybi9tZXRpcy9HS2xpYi9na19tc19pbnR0 eXBlcy5oCi0tICAgIC4uL2V4dGVybi9tZXRpcy9HS2xpYi9na19tc19zdGF0LmgKLS0gICAgLi4v ZXh0ZXJuL21ldGlzL0dLbGliL2drX21zX3N0ZGludC5oCi0tICAgIC4uL2V4dGVybi9tZXRpcy9H S2xpYi9na19wcm90by5oCi0tICAgIC4uL2V4dGVybi9tZXRpcy9HS2xpYi9na19zdHJ1Y3QuaAot LSAgICAuLi9leHRlcm4vbWV0aXMvR0tsaWIvZ2tfdHlwZXMuaAotLSAgICAuLi9leHRlcm4vbWV0 aXMvR0tsaWIvR0tsaWIuaAotLSAgICAuLi9leHRlcm4vbWV0aXMvbGlibWV0aXMvZGVmcy5oCi0t ICAgIC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy9na2xpYl9kZWZzLmgKLS0gICAgLi4vZXh0ZXJu L21ldGlzL2xpYm1ldGlzL21hY3Jvcy5oCi0tICAgIC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy9t ZXRpc2xpYi5oCi0tICAgIC4uL2V4dGVybi9tZXRpcy9saWJtZXRpcy9wcm90by5oCi0tICAgIC4u L2V4dGVybi9tZXRpcy9saWJtZXRpcy9zdGRoZWFkZXJzLmgKLS0gICAgLi4vZXh0ZXJuL21ldGlz L2xpYm1ldGlzL3N0cnVjdC5oCi0tICAgIC4uL2V4dGVybi9tZXRpcy9tZXRpcy5oCi0gICAgIC4u L2V4dGVybi9yY20vcmNtLmgpCi0gCi0gIyByZWRlZmluaXRpb24gb2YgJ2tIaWdoc0luZicKLUBA IC00NDcsOSArMzgzLDYgQEAgc2V0KGhpZ2hzX3NvdXJjZXMKKyBpZiAoTk9UIENNQUtFX0lOU1RB TExfRE9DRElSIFNUUkVRVUFMICIiIEFORCBCVUlMRF9DWFgpCistLS0gSGlHSFMtMS4xNS4xL2Nt YWtlL3NvdXJjZXMuY21ha2Uub3JpZwkyMDI2LTA3LTAyIDAwOjQyOjM3LjAwMDAwMDAwMCAtMDYw MAorKysrIEhpR0hTLTEuMTUuMS9jbWFrZS9zb3VyY2VzLmNtYWtlCTIwMjYtMDctMTMgMDk6NTU6 MTYuNTMzNTM5MDA4IC0wNjAwCitAQCAtNDYzLDkgKzM5Myw2IEBAIHNldChoaWdoc19zb3VyY2Vz CiAgCiAgIyBhZGQgY2F0Y2ggaGVhZGVyPwogIHNldChoaWdoc19oZWFkZXJzCkBAIC0xMTUsMjcg KzQ2LDkgQEAKICAgICAgaW50ZXJmYWNlcy9oaWdoc19jX2FwaS5oCiAgICAgIGlvL0ZpbGVyZWFk ZXIuaAogICAgICBpby9GaWxlcmVhZGVyTHAuaAotLS0tIEhpR0hTLTEuMTQuMC9jbWFrZS9zb3Vy Y2VzLXB5dGhvbi5jbWFrZS5vcmlnCTIwMjYtMDQtMDYgMDg6MzY6MzEuMDAwMDAwMDAwIC0wNjAw Ci0rKysgSGlHSFMtMS4xNC4wL2NtYWtlL3NvdXJjZXMtcHl0aG9uLmNtYWtlCTIwMjYtMDQtMDYg MTM6NTA6MTQuNzUyMTY3MTE4IC0wNjAwCi1AQCAtMSw3ICsxLDUgQEAKLSBzZXQoaW5jbHVkZV9k aXJzX3B5dGhvbgotICAgICAkPEJVSUxEX0lOVEVSRkFDRToke1BST0pFQ1RfU09VUkNFX0RJUn0v ZXh0ZXJuPgotLSAgICAkPEJVSUxEX0lOVEVSRkFDRToke1BST0pFQ1RfU09VUkNFX0RJUn0vZXh0 ZXJuL3BkcXNvcnQ+Ci0tICAgICQ8QlVJTERfSU5URVJGQUNFOiR7UFJPSkVDVF9TT1VSQ0VfRElS fS9leHRlcm4venN0cj4KLSAgICAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtQUk9KRUNUX1NPVVJDRV9E SVJ9L2hpZ2hzPgotICAgICAkPEJVSUxEX0lOVEVSRkFDRToke1BST0pFQ1RfU09VUkNFX0RJUn0v aGlnaHMvaW50ZXJmYWNlcz4KLSAgICAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtQUk9KRUNUX1NPVVJD RV9ESVJ9L2hpZ2hzL2lvPgotQEAgLTI5Miw3ICsyOTAsNiBAQCBzZXQoaGlnaHNfc291cmNlc19w eXRob24KLSAgICAgaGlnaHMvdXRpbC9zdHJpbmd1dGlsLmNwcCkKLSAKLSBzZXQoaGlnaHNfaGVh ZGVyc19weXRob24KLS0gICAgZXh0ZXJuL3BkcXNvcnQvcGRxc29ydC5oCi0gICAgIGhpZ2hzL2lu dGVyZmFjZXMvaGlnaHNfY19hcGkuaAotICAgICBoaWdocy9pby9GaWxlcmVhZGVyLmgKLSAgICAg aGlnaHMvaW8vRmlsZXJlYWRlckxwLmgKLS0tLSBIaUdIUy0xLjE0LjAvaGlnaHMvQ01ha2VMaXN0 cy50eHQub3JpZwkyMDI2LTA1LTI3IDE2OjUxOjA5Ljk5OTAyODg3NiAtMDYwMAotKysrIEhpR0hT LTEuMTQuMC9oaWdocy9DTWFrZUxpc3RzLnR4dAkyMDI2LTA1LTI3IDE2OjUxOjMyLjI3MDc3NTUy OCAtMDYwMAotQEAgLTUxLDggKzUxLDggQEAgaWYoTk9UIEZBU1RfQlVJTEQpCistLS0gSGlHSFMt MS4xNS4xL2hpZ2hzL0NNYWtlTGlzdHMudHh0Lm9yaWcJMjAyNi0wNy0xMyAwOTo1NDowNy44NzI4 MTczMTAgLTA2MDAKKysrKyBIaUdIUy0xLjE1LjEvaGlnaHMvQ01ha2VMaXN0cy50eHQJMjAyNi0w Ny0xMyAxMDozMzo0NS4yNzY2MTQyMzkgLTA2MDAKK0BAIC01Nyw4ICs1Nyw4IEBAIGlmKE5PVCBG QVNUX0JVSUxEKQogICAgKQogIAogICAgaWYoWkxJQiBBTkQgWkxJQl9GT1VORCkKQEAgLTE0Niwy NCArNTksNyBAQAogICAgZW5kaWYoKQogIAogICAgIyBzZXQgdGhlIGluc3RhbGwgcnBhdGggdG8g dGhlIGluc3RhbGxlZCBkZXN0aW5hdGlvbgotQEAgLTE1Niw2ICsxNTYsNyBAQCBlbHNlKCkKLSAK LSAKLSAgIHRhcmdldF9zb3VyY2VzKGhpZ2hzIFBSSVZBVEUgJHtzb3VyY2VzfSAke2hlYWRlcnN9 ICR7d2luX3ZlcnNpb25fZmlsZX0pCi0rICB0YXJnZXRfbGlua19saWJyYXJpZXMoaGlnaHMgUFJJ VkFURSBtZXRpcyBhbWQpCi0gCi0gICAjIE9wdGlvbmFsIEN1ZGEKLSAgIGlmIChDVVBETFBfR1BV KQotQEAgLTI1Nyw3ICsyNTgsNyBAQCBlbHNlKCkKLSAgICAgICBlbHNlKCkKLSAgICAgICAgICAg IyBMSU5VWAotICAgICAgICAgICBpZihCTEFTX0xJQikKLS0gICAgICAgICAgICAgIHRhcmdldF9s aW5rX2xpYnJhcmllcyhoaWdocyBQUklWQVRFICIke0JMQVNfTElCfSIgY2JsYXMpCi0rICAgICAg ICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoaGlnaHMgUFJJVkFURSAiJHtCTEFTX0xJQn0i KQotICAgICAgICAgICBlbHNlaWYoT1BFTkJMQVNfTElCKQotICAgICAgICAgICAgICAgdGFyZ2V0 X2xpbmtfbGlicmFyaWVzKGhpZ2hzIFBSSVZBVEUgIiR7T1BFTkJMQVNfTElCfSIpCi0gICAgICAg ICAgICAgICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhoaWdocyBQUklWQVRFIEhJUE9fVVNF U19PUEVOQkxBUykKLUBAIC0zNDIsMTAgKzM0Myw3IEBAIGVsc2UoKQorQEAgLTMxNCwxMCArMzE1 LDcgQEAgZWxzZSgpCiAgCiAgCiAgICBpZihaTElCIEFORCBaTElCX0ZPVU5EKQpAQCAtMTc0LDkg KzcwLDI5IEBACiArICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhoaWdocyBQUklWQVRFIHpsaWIt bmc6OnpsaWIpCiAgICBlbmRpZigpCiAgCi0gICAjIGluc3RhbGwgdGhlIGhlYWRlciBmaWxlcyBv ZiBoaWdocwotLS0tIEhpR0hTLTEuMTQuMC9oaWdocy9pby9maWxlcmVhZGVybHAvcmVhZGVyLmNw cC5vcmlnCTIwMjYtMDQtMDYgMDg6MzY6MzEuMDAwMDAwMDAwIC0wNjAwCi0rKysgSGlHSFMtMS4x NC4wL2hpZ2hzL2lvL2ZpbGVyZWFkZXJscC9yZWFkZXIuY3BwCTIwMjYtMDUtMjcgMTY6NTQ6MjUu NDIzMDk3MTIxIC0wNjAwCisgICAjIGFsbG93IGNvbnN1bWVycyBvZiBoaWdocyB0byBiZSBhd2Fy ZSBvZiBwb3RlbnRpYWwgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzCistLS0gSGlHSFMtMS4xNS4xL2hp Z2hzL0hpZ2hzRXh0ZXJuYWxEZXBzLmNwcC5vcmlnCTIwMjYtMDctMDIgMDA6NDI6MzcuMDAwMDAw MDAwIC0wNjAwCisrKysgSGlHSFMtMS4xNS4xL2hpZ2hzL0hpZ2hzRXh0ZXJuYWxEZXBzLmNwcAky MDI2LTA3LTA0IDExOjU2OjQxLjU0Njk3ODY5NSAtMDYwMAorQEAgLTE1LDcgKzE1LDcgQEAgbmFt ZXNwYWNlIEhpZ2hzRXh0cmFzIHsKKyAKKyAjaWZkZWYgWkxJQl9GT1VORAorIGNvbnN0ZXhwciBi b29sIF9femxpYl9lbmFibGVkID0gdHJ1ZTsKKy0jaW5jbHVkZSAiemxpYi5oIiAgLy8gZGVmaW5l cyBaTElCX1ZFUlNJT04KKysjaW5jbHVkZSA8emxpYi1uZy5oPiAgLy8gZGVmaW5lcyBaTElCX1ZF UlNJT04KKyAjZWxzZQorIGNvbnN0ZXhwciBib29sIF9femxpYl9lbmFibGVkID0gZmFsc2U7Cisg I2RlZmluZSBaTElCX1ZFUlNJT04gInVua25vd24iCitAQCAtMzAsNyArMzAsNyBAQCBjb25zdGV4 cHIgYm9vbCBfX2N1ZGFfZW5hYmxlZCA9IGZhbHNlOworIGNvbnN0IEhpZ2hzRXh0cmFzRmVhdHVy ZUluZm8gaGlnaHNfZmFtaWx5X2luZm9fW10gPSB7CisgICAgIHsicGRxc29ydCIsICJnaXQ6YjFl ZjI2YSIsICJabGliIiwgdHJ1ZX0sCisgICAgIHsienN0ciIsICIxLjAuNiIsICJNSVQiLCBfX3ps aWJfZW5hYmxlZH0sCistICAgIHsiWkxJQiIsIFpMSUJfVkVSU0lPTiwgIlpsaWIiLCBfX3psaWJf ZW5hYmxlZH0sCisrICAgIHsiWkxJQi1ORyIsIFpMSUJOR19WRVJTSU9OLCAiWmxpYiIsIF9femxp Yl9lbmFibGVkfSwKKyAgICAgeyJOVklESUEgRHJpdmVyIEFQSSIsICJydW50aW1lIiwgIk4vQSAo bm90IHJlZGlzdHJpYnV0ZWQpIiwKKyAgICAgIF9fY3VkYV9lbmFibGVkfX07CisgCistLS0gSGlH SFMtMS4xNS4xL2hpZ2hzL2lvL2ZpbGVyZWFkZXJscC9yZWFkZXIuY3BwLm9yaWcJMjAyNi0wNy0w MiAwMDo0MjozNy4wMDAwMDAwMDAgLTA2MDAKKysrKyBIaUdIUy0xLjE1LjEvaGlnaHMvaW8vZmls ZXJlYWRlcmxwL3JlYWRlci5jcHAJMjAyNi0wNy0wNCAxMDowNjoyMC41MTQ4MzI2MTIgLTA2MDAK IEBAIC0xNyw3ICsxNyw3IEBACiAgI2luY2x1ZGUgImJ1aWxkZXIuaHBwIgogICNpbmNsdWRlICJk ZWYuaHBwIgpAQCAtMTg2LDggKzEwMiw4IEBACiAgI2VuZGlmCiAgCiAgLy8gQ3lnd2luIGRvZXNu J3QgY29tZSB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGZvciBzdHJkdXAgaWYgY29tcGlsZWQgd2l0 aAotLS0tIEhpR0hTLTEuMTQuMC9oaWdocy9pby9ITXBzRkYuY3BwLm9yaWcJMjAyNi0wNC0wNiAw ODozNjozMS4wMDAwMDAwMDAgLTA2MDAKLSsrKyBIaUdIUy0xLjE0LjAvaGlnaHMvaW8vSE1wc0ZG LmNwcAkyMDI2LTA1LTI3IDE2OjU0OjI1LjQyNTYwNDgyNiAtMDYwMAorLS0tIEhpR0hTLTEuMTUu MS9oaWdocy9pby9ITXBzRkYuY3BwLm9yaWcJMjAyNi0wNy0wMiAwMDo0MjozNy4wMDAwMDAwMDAg LTA2MDAKKysrKyBIaUdIUy0xLjE1LjEvaGlnaHMvaW8vSE1wc0ZGLmNwcAkyMDI2LTA3LTA0IDEw OjA2OjIwLjUxNTE0NDAyMiAtMDYwMAogQEAgLTExLDcgKzExLDcgQEAKICAjaW5jbHVkZSAibHBf ZGF0YS9IaWdoc01vZGVsVXRpbHMuaCIKICAKQEAgLTE5Nyw4ICsxMTMsOCBAQAogICNlbmRpZgog IAogIG5hbWVzcGFjZSBmcmVlX2Zvcm1hdF9wYXJzZXIgewotLS0tIEhpR0hTLTEuMTQuMC9oaWdo cy9pby9ITVBTSU8uY3BwLm9yaWcJMjAyNi0wNC0wNiAwODozNjozMS4wMDAwMDAwMDAgLTA2MDAK LSsrKyBIaUdIUy0xLjE0LjAvaGlnaHMvaW8vSE1QU0lPLmNwcAkyMDI2LTA1LTI3IDE2OjU0OjI1 LjQyNjAyNzIxMSAtMDYwMAorLS0tIEhpR0hTLTEuMTUuMS9oaWdocy9pby9ITVBTSU8uY3BwLm9y aWcJMjAyNi0wNy0wMiAwMDo0MjozNy4wMDAwMDAwMDAgLTA2MDAKKysrKyBIaUdIUy0xLjE1LjEv aGlnaHMvaW8vSE1QU0lPLmNwcAkyMDI2LTA3LTA0IDEwOjA2OjIwLjUxNTQ1MTU5NiAtMDYwMAog QEAgLTIxLDcgKzIxLDcgQEAKICAjaW5jbHVkZSAidXRpbC9zdHJpbmd1dGlsLmgiCiAgCkBAIC0y MDgsNzAgKzEyNCw4IEBACiAgI2VuZGlmCiAgCiAgdXNpbmcgc3RkOjptYXA7Ci0tLS0gSGlHSFMt MS4xNC4wL2hpZ2hzL2lwbS9oaXBvL2ZhY3RvcmhpZ2hzL0FuYWx5c2UuY3BwLm9yaWcJMjAyNi0w NC0wNiAwODozNjozMS4wMDAwMDAwMDAgLTA2MDAKLSsrKyBIaUdIUy0xLjE0LjAvaGlnaHMvaXBt L2hpcG8vZmFjdG9yaGlnaHMvQW5hbHlzZS5jcHAJMjAyNi0wNS0yNyAxNjo1NDoyNS40MzI3NTc1 MTEgLTA2MDAKLUBAIC0xMCwxMCArMTAsMTAgQEAKLSAjaW5jbHVkZSAiRGF0YUNvbGxlY3Rvci5o IgotICNpbmNsdWRlICJGYWN0b3JIaUdIU1NldHRpbmdzLmgiCi0gI2luY2x1ZGUgIlJldHVyblZh bHVlcy5oIgotLSNpbmNsdWRlICJhbWQvYW1kLmgiCi0rI2luY2x1ZGUgPHN1aXRlc3BhcnNlL2Ft ZC5oPgotICNpbmNsdWRlICJpcG0vaGlwby9hdXhpbGlhcnkvQXV4aWxpYXJ5LmgiCi0gI2luY2x1 ZGUgImlwbS9oaXBvL2F1eGlsaWFyeS9Mb2cuaCIKLS0jaW5jbHVkZSAibWV0aXMvbWV0aXMuaCIK LSsjaW5jbHVkZSA8bWV0aXMuaD4KLSAjaW5jbHVkZSAicmNtL3JjbS5oIgotIAotIG5hbWVzcGFj ZSBoaXBvIHsKLS0tLSBIaUdIUy0xLjE0LjAvaGlnaHMvaXBtL2hpcG8vaXBtL0ZhY3RvckhpR0hT U29sdmVyLmNwcC5vcmlnCTIwMjYtMDQtMDYgMDg6MzY6MzEuMDAwMDAwMDAwIC0wNjAwCi0rKysg SGlHSFMtMS4xNC4wL2hpZ2hzL2lwbS9oaXBvL2lwbS9GYWN0b3JIaUdIU1NvbHZlci5jcHAJMjAy Ni0wNS0yNyAxNjo1NDoyNS40MzYxODYxODMgLTA2MDAKLUBAIC0zLDEwICszLDEwIEBACi0gI2lu Y2x1ZGUgPGxpbWl0cz4KLSAKLSAjaW5jbHVkZSAiU3RhdHVzLmgiCi0tI2luY2x1ZGUgImFtZC9h bWQuaCIKLSsjaW5jbHVkZSA8c3VpdGVzcGFyc2UvYW1kLmg+Ci0gI2luY2x1ZGUgImlwbS9oaXBv L2F1eGlsaWFyeS9BdXhpbGlhcnkuaCIKLSAjaW5jbHVkZSAiaXBtL2hpcG8vYXV4aWxpYXJ5L0xv Zy5oIgotLSNpbmNsdWRlICJtZXRpcy9tZXRpcy5oIgotKyNpbmNsdWRlIDxtZXRpcy5oPgotICNp bmNsdWRlICJwYXJhbGxlbC9IaWdoc1BhcmFsbGVsLmgiCi0gI2luY2x1ZGUgInJjbS9yY20uaCIK LSAKLUBAIC01OTEsNyArNTkxLDcgQEAgSW50IEZhY3RvckhpR0hTU29sdmVyOjpjaG9vc2VPcmRl cmluZyhjbwotICAgICAvLyBjb21wdXRlIG9yZGVyaW5nCi0gICAgIGlmIChvcmRlcmluZ3NfdG9f dHJ5W2ldID09IGtIaXBvTWV0aXNTdHJpbmcpIHsKLSAgICAgICBpZHhfdCBvcHRpb25zW01FVElT X05PUFRJT05TXTsKLS0gICAgICBIaWdoc19NRVRJU19TZXREZWZhdWx0T3B0aW9ucyhvcHRpb25z KTsKLSsgICAgICBNRVRJU19TZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zKTsKLSAgICAgICBvcHRp b25zW01FVElTX09QVElPTl9TRUVEXSA9IGtNZXRpc1NlZWQ7Ci0gCi0gICAgICAgLy8gc2V0IGxv Z2dpbmcgb2YgTWV0aXMgZGVwZW5kaW5nIG9uIGRlYnVnIGxldmVsCi1AQCAtNjA2LDcgKzYwNiw3 IEBAIEludCBGYWN0b3JIaUdIU1NvbHZlcjo6Y2hvb3NlT3JkZXJpbmcoY28KLSAgICAgICBzdGQ6 OnZlY3RvcjxJbnQ+IGlwZXJtKG4pOwotIAotICAgICAgIEludCBzdGF0dXMgPQotLSAgICAgICAg ICBIaWdoc19NRVRJU19Ob2RlTkQoJm4sIGZ1bGxfcHRyLmRhdGEoKSwgZnVsbF9yb3dzLmRhdGEo KSwgTlVMTCwKLSsgICAgICAgICAgTUVUSVNfTm9kZU5EKCZuLCBmdWxsX3B0ci5kYXRhKCksIGZ1 bGxfcm93cy5kYXRhKCksIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp b25zLCBwZXJtdXRhdGlvbnNbaV0uZGF0YSgpLCBpcGVybS5kYXRhKCkpOwotIAotICAgICAgIGxv Z18ucHJpbnREZXZJbmZvKCJNZXRpcyBkb25lXG4iKTsKLUBAIC02MTYsMTEgKzYxNiwxMSBAQCBJ bnQgRmFjdG9ySGlHSFNTb2x2ZXI6OmNob29zZU9yZGVyaW5nKGNvCi0gICAgICAgfQotICAgICB9 IGVsc2UgaWYgKG9yZGVyaW5nc190b190cnlbaV0gPT0ga0hpcG9BbWRTdHJpbmcpIHsKLSAgICAg ICBkb3VibGUgY29udHJvbFtBTURfQ09OVFJPTF07Ci0tICAgICAgSGlnaHNfYW1kX2RlZmF1bHRz KGNvbnRyb2wpOwotKyAgICAgIGFtZF9kZWZhdWx0cyhjb250cm9sKTsKLSAgICAgICBkb3VibGUg aW5mb1tBTURfSU5GT107Ci0gCi0gICAgICAgbG9nXy5wcmludERldkluZm8oIlJ1bm5pbmcgQU1E XG4iKTsKLS0gICAgICBJbnQgc3RhdHVzID0gSGlnaHNfYW1kX29yZGVyKG4sIGZ1bGxfcHRyLmRh dGEoKSwgZnVsbF9yb3dzLmRhdGEoKSwKLSsgICAgICBJbnQgc3RhdHVzID0gYW1kX29yZGVyKG4s IGZ1bGxfcHRyLmRhdGEoKSwgZnVsbF9yb3dzLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBlcm11dGF0aW9uc1tpXS5kYXRhKCksIGNvbnRyb2wsIGluZm8pOwot ICAgICAgIGxvZ18ucHJpbnREZXZJbmZvKCJBTUQgZG9uZVxuIik7Ci0gCi0tLS0gSGlHSFMtMS4x NC4wL2hpZ2hzL2lwbS9pcHgvbW9kZWwuY2Mub3JpZwkyMDI2LTA0LTA2IDA4OjM2OjMxLjAwMDAw MDAwMCAtMDYwMAotKysrIEhpR0hTLTEuMTQuMC9oaWdocy9pcG0vaXB4L21vZGVsLmNjCTIwMjYt MDUtMjcgMTY6NTQ6MjUuNDQyNzkyMDk4IC0wNjAwCistLS0gSGlHSFMtMS4xNS4xL2hpZ2hzL2lw bS9pcHgvbW9kZWwuY2Mub3JpZwkyMDI2LTA3LTAyIDAwOjQyOjM3LjAwMDAwMDAwMCAtMDYwMAor KysrIEhpR0hTLTEuMTUuMS9oaWdocy9pcG0vaXB4L21vZGVsLmNjCTIwMjYtMDctMDQgMTA6MDY6 MjAuNTE2NDA2MDM1IC0wNjAwCiBAQCAtMyw3ICszLDcgQEAKICAjaW5jbHVkZSA8Y2Fzc2VydD4K ICAjaW5jbHVkZSA8Y21hdGg+CkBAIC0yOTAsOCArMTQ0LDggQEAKICAKICAgICAgZm9yIChJbnQg aiA9IDE7IGogPCBudW1fY29sc187IGorKykgewogICAgICAgICAgaWYgKGNvbGNvdW50W2pdID4g Ci0tLS0gSGlHSFMtMS4xNC4wL2hpZ2hzL2lwbS9pcHgvc3BhcnNlX21hdHJpeC5jYy5vcmlnCTIw MjYtMDQtMDYgMDg6MzY6MzEuMDAwMDAwMDAwIC0wNjAwCi0rKysgSGlHSFMtMS4xNC4wL2hpZ2hz L2lwbS9pcHgvc3BhcnNlX21hdHJpeC5jYwkyMDI2LTA1LTI3IDE2OjU0OjI1LjQ0MzAyNzAxNSAt MDYwMAorLS0tIEhpR0hTLTEuMTUuMS9oaWdocy9pcG0vaXB4L3NwYXJzZV9tYXRyaXguY2Mub3Jp ZwkyMDI2LTA3LTAyIDAwOjQyOjM3LjAwMDAwMDAwMCAtMDYwMAorKysrIEhpR0hTLTEuMTUuMS9o aWdocy9pcG0vaXB4L3NwYXJzZV9tYXRyaXguY2MJMjAyNi0wNy0wNCAxMDowNjoyMC41MTY2NjUz ODggLTA2MDAKIEBAIC00LDcgKzQsNyBAQAogICNpbmNsdWRlIDxjbWF0aD4KICAjaW5jbHVkZSA8 dXRpbGl0eT4KQEAgLTMxMCw4ICsxNjQsOCBAQAogICAgICAgICAgZm9yIChJbnQgayA9IDAsIHAg PSBiZWdpbihqKTsgcCA8IGVuZChqKTsgaysrLCBwKyspIHsKICAgICAgICAgICAgICBpbmRleChw KSA9IHdvcmtba10uZmlyc3Q7CiAgICAgICAgICAgICAgdmFsdWUocCkgPSB3b3JrW2tdLnNlY29u ZDsKLS0tLSBIaUdIUy0xLjE0LjAvaGlnaHMvaXBtL2lweC91dGlscy5jYy5vcmlnCTIwMjYtMDQt MDYgMDg6MzY6MzEuMDAwMDAwMDAwIC0wNjAwCi0rKysgSGlHSFMtMS4xNC4wL2hpZ2hzL2lwbS9p cHgvdXRpbHMuY2MJMjAyNi0wNS0yNyAxNjo1NDoyNS40NDM1MzcwMTcgLTA2MDAKKy0tLSBIaUdI Uy0xLjE1LjEvaGlnaHMvaXBtL2lweC91dGlscy5jYy5vcmlnCTIwMjYtMDctMDIgMDA6NDI6Mzcu MDAwMDAwMDAwIC0wNjAwCisrKysgSGlHSFMtMS4xNS4xL2hpZ2hzL2lwbS9pcHgvdXRpbHMuY2MJ MjAyNi0wNy0wNCAxMDowNjoyMC41MTY4MTU1NDggLTA2MDAKIEBAIC0zLDcgKzMsNyBAQAogICNp bmNsdWRlIDxjYXNzZXJ0PgogICNpbmNsdWRlIDxjbWF0aD4KQEAgLTMzNSw4ICsxODksOCBAQAog ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih2YWx1ZXNbaV0sIGkpIDwgc3RkOjpt YWtlX3BhaXIodmFsdWVzW2pdLCBqKTsKICAgICAgICAgIH0pOwogIAotLS0tIEhpR0hTLTEuMTQu MC9oaWdocy9taXAvSGlnaHNDbGlxdWVUYWJsZS5jcHAub3JpZwkyMDI2LTA0LTA2IDA4OjM2OjMx LjAwMDAwMDAwMCAtMDYwMAotKysrIEhpR0hTLTEuMTQuMC9oaWdocy9taXAvSGlnaHNDbGlxdWVU YWJsZS5jcHAJMjAyNi0wNS0yNyAxNjo1NDoyNS40NjEwNDk5MTYgLTA2MDAKKy0tLSBIaUdIUy0x LjE1LjEvaGlnaHMvbWlwL0hpZ2hzQ2xpcXVlVGFibGUuY3BwLm9yaWcJMjAyNi0wNy0wMiAwMDo0 MjozNy4wMDAwMDAwMDAgLTA2MDAKKysrKyBIaUdIUy0xLjE1LjEvaGlnaHMvbWlwL0hpZ2hzQ2xp cXVlVGFibGUuY3BwCTIwMjYtMDctMDQgMTA6MDY6MjAuNTE3MDM4MjkzIC0wNjAwCiBAQCAtMTIs NyArMTIsNyBAQAogICNpbmNsdWRlIDxjc3RkaW8+CiAgI2luY2x1ZGUgPG51bWVyaWM+CkBAIC0z NTUsNyArMjA5LDcgQEAKICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGEud2VpZ2h0KGRhdGEu c29sKSwgYS5pbmRleCgpKSA+CiAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihiLndlaWdodChk YXRhLnNvbCksIGIuaW5kZXgoKSk7CiAgICB9KTsKLUBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBI aWdoc0NsaXF1ZVRhYmxlOjpxdWVyeU5laWdoYm91cmhvbworQEAgLTUxNCw3ICs1MTQsNyBAQCB2 b2lkIEhpZ2hzQ2xpcXVlVGFibGU6OnF1ZXJ5TmVpZ2hib3VyaG9vCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGQubmVpZ2hib3VyaG9vZEluZHMuZW5kKCkpOwogICAgICAgIG51bVF1 ZXJpZXMgKz0gZC5udW1RdWVyaWVzOwogICAgICB9KTsKQEAgLTM2NCw3ICsyMTgsNyBAQAogICAg fQogIH0KICAKLUBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBIaWdoc0NsaXF1ZVRhYmxlOjpleHRy YWN0Q2xpcXVlcygKK0BAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBIaWdoc0NsaXF1ZVRhYmxlOjpl eHRyYWN0Q2xpcXVlcygKICAgIC8vIG9ubHkgb25lIGJpbmFyeSBtZWFucyB3ZSBkbyBoYXZlIG5v IGNsaXF1ZXMKICAgIGlmIChuYmluIDw9IDEpIHJldHVybjsKICAKQEAgLTM3Myw3ICsyMjcsNyBA QAogICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodmFsc1twMV0sIHAxKSA+IHN0ZDo6bWFrZV9w YWlyKHZhbHNbcDJdLCBwMik7CiAgICB9KTsKICAgIC8vIGNoZWNrIGlmIGFueSBjbGlxdWVzIGV4 aXN0cwotQEAgLTEwMDksNyArMTAwOSw3IEBAIHZvaWQgSGlnaHNDbGlxdWVUYWJsZTo6Y2xpcXVl UGFydGl0aW9uKGMKK0BAIC0xMDEwLDcgKzEwMTAsNyBAQCB2b2lkIEhpZ2hzQ2xpcXVlVGFibGU6 OmNsaXF1ZVBhcnRpdGlvbihjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RkOjp2ZWN0b3I8SGlnaHNJbnQ+JiBwYXJ0aXRpb25TdGFydCkgewogICAgcmFuZGdlbi5z aHVmZmxlKGNscVZhcnMuZGF0YSgpLCBjbHFWYXJzLnNpemUoKSk7CiAgCkBAIC0zODIsNyArMjM2 LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBbJl0oQ2xpcXVlVmFyIHYxLCBDbGlxdWVWYXIg djIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMiAqIHYxLnZhbCAtIDEpICog b2JqZWN0aXZlW3YxLmNvbF0gPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgyICog djIudmFsIC0gMSkgKiBvYmplY3RpdmVbdjIuY29sXTsKLUBAIC0xMDI5LDcgKzEwMjksNyBAQCB2 b2lkIEhpZ2hzQ2xpcXVlVGFibGU6OmNsaXF1ZVBhcnRpdGlvbihjCitAQCAtMTAzMCw3ICsxMDMw LDcgQEAgdm9pZCBIaWdoc0NsaXF1ZVRhYmxlOjpjbGlxdWVQYXJ0aXRpb24oYwogICAgICAgIHBh cnRpdGlvblN0YXJ0LnB1c2hfYmFjayhpKTsKICAgICAgICBleHRlbnNpb25FbmQgPSBudW1DbHFW YXJzOwogICAgICAgIGlmIChsYXN0U3dhcHBlZEluZGV4ID49IGkpCkBAIC0zOTEsNyArMjQ1LDcg QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHFWYXJzLmJlZ2luKCkgKyBsYXN0U3dh cHBlZEluZGV4ICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0oQ2xpcXVlVmFy IHYxLCBDbGlxdWVWYXIgdjIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biAoMiAqIHYxLnZhbCAtIDEpICogb2JqZWN0aXZlW3YxLmNvbF0gPgotQEAgLTEyMTAsNyArMTIx MCw3IEBAIHZvaWQgSGlnaHNDbGlxdWVUYWJsZTo6ZXh0cmFjdENsaXF1ZXNGcm8KK0BAIC0xMjEx LDcgKzEyMTEsNyBAQCB2b2lkIEhpZ2hzQ2xpcXVlVGFibGU6OmV4dHJhY3RDbGlxdWVzRnJvCiAg ICBzdGQ6OnZlY3RvcjxDbGlxdWVWYXI+IGNsaXF1ZTsKICAgIGNsaXF1ZS5yZXNlcnZlKG5iaW4p OwogIApAQCAtNDAwLDcgKzI1NCw3IEBACiAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6 OmFicyh2YWxzW3AxXSksIHAxKSA+CiAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihzdGQ6OmFi cyh2YWxzW3AyXSksIHAyKTsKICAgIH0pOwotQEAgLTE0MDUsNyArMTQwNSw3IEBAIHZvaWQgSGln aHNDbGlxdWVUYWJsZTo6ZXh0cmFjdE9iakNsaXF1ZXMKK0BAIC0xNDA2LDcgKzE0MDYsNyBAQCB2 b2lkIEhpZ2hzQ2xpcXVlVGFibGU6OmV4dHJhY3RPYmpDbGlxdWVzCiAgICBzdGQ6OnZlY3RvcjxD bGlxdWVWYXI+IGNsaXF1ZTsKICAgIGNsaXF1ZS5yZXNlcnZlKG5iaW4pOwogIApAQCAtNDA5LDE4 ICsyNjMsMTggQEAKICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6ZmFicyh2YWxzW3Ax XSksIHAxKSA+CiAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihzdGQ6OmZhYnModmFsc1twMl0p LCBwMik7CiAgICB9KTsKLS0tLSBIaUdIUy0xLjE0LjAvaGlnaHMvbWlwL0hpZ2hzQ3V0R2VuZXJh dGlvbi5jcHAub3JpZwkyMDI2LTA0LTA2IDA4OjM2OjMxLjAwMDAwMDAwMCAtMDYwMAotKysrIEhp R0hTLTEuMTQuMC9oaWdocy9taXAvSGlnaHNDdXRHZW5lcmF0aW9uLmNwcAkyMDI2LTA1LTI3IDE2 OjU0OjI1LjQ2MTgzMTc1NCAtMDYwMAorLS0tIEhpR0hTLTEuMTUuMS9oaWdocy9taXAvSGlnaHND dXRHZW5lcmF0aW9uLmNwcC5vcmlnCTIwMjYtMDctMDIgMDA6NDI6MzcuMDAwMDAwMDAwIC0wNjAw CisrKysgSGlHSFMtMS4xNS4xL2hpZ2hzL21pcC9IaWdoc0N1dEdlbmVyYXRpb24uY3BwCTIwMjYt MDctMDQgMTA6MTk6MjAuNjE3ODU1Njc1IC0wNjAwCiBAQCAtNyw3ICs3LDcgQEAKICAvKiAqICog KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq ICogKiAqICogKi8KICAjaW5jbHVkZSAibWlwL0hpZ2hzQ3V0R2VuZXJhdGlvbi5oIgogIAogLSNp bmNsdWRlICIuLi9leHRlcm4vcGRxc29ydC9wZHFzb3J0LmgiCiArI2luY2x1ZGUgPGJvb3N0L3Nv cnQvcGRxc29ydC9wZHFzb3J0LmhwcD4KKyAjaW5jbHVkZSAibWlwL0hpZ2hzRG9tYWluLmgiCiAg I2luY2x1ZGUgIm1pcC9IaWdoc01pcFNvbHZlckRhdGEuaCIKICAjaW5jbHVkZSAibWlwL0hpZ2hz VHJhbnNmb3JtZWRMcC5oIgotICNpbmNsdWRlICJ1dGlsL0hpZ2hzSW50ZWdlcnMuaCIKLUBAIC01 Nyw3ICs1Nyw3IEBAIGJvb2wgSGlnaHNDdXRHZW5lcmF0aW9uOjpkZXRlcm1pbmVDb3ZlcigKK0BA IC01OCw3ICs1OCw3IEBAIGJvb2wgSGlnaHNDdXRHZW5lcmF0aW9uOjpkZXRlcm1pbmVDb3ZlcigK ICAKICAgICAgLy8gc29ydCB0aGUgcmVtYWluaW5nIHZhcmlhYmxlcyBieSB0aGUgY29udHJpYnV0 aW9uIHRvIHRoZSByb3dzIGFjdGl2aXR5IGluCiAgICAgIC8vIHRoZSBjdXJyZW50IHNvbHV0aW9u CkBAIC00MjksNyArMjgzLDcgQEAKICAgICAgICAgICAgICBbJl0oSGlnaHNJbnQgaSwgSGlnaHNJ bnQgaikgewogICAgICAgICAgICAgICAgaWYgKHVwcGVyW2ldIDwgMS41ICYmIHVwcGVyW2pdID4g MS41KSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIGlmICh1cHBlcltpXSA+IDEuNSAmJiB1 cHBlcltqXSA8IDEuNSkgcmV0dXJuIGZhbHNlOwotQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBIaWdo c0N1dEdlbmVyYXRpb246OmRldGVybWluZUNvdmVyKAorQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBI aWdoc0N1dEdlbmVyYXRpb246OmRldGVybWluZUNvdmVyKAogICAgICAvLyB0aGUgY3VycmVudCBz b2x1dGlvbgogICAgICBjb25zdCBhdXRvJiBub2RlcXVldWUgPSBscFJlbGF4YXRpb24uZ2V0TWlw U29sdmVyKCkubWlwZGF0YV8tPm5vZGVxdWV1ZTsKICAKQEAgLTQzOCw3ICsyOTIsNyBAQAogICAg ICAgICAgICAgIFsmXShIaWdoc0ludCBpLCBIaWdoc0ludCBqKSB7CiAgICAgICAgICAgICAgICBp ZiAoc29sdmFsW2ldID4gZmVhc3RvbCAmJiBzb2x2YWxbal0gPD0gZmVhc3RvbCkgcmV0dXJuIHRy dWU7CiAgICAgICAgICAgICAgICBpZiAoc29sdmFsW2ldIDw9IGZlYXN0b2wgJiYgc29sdmFsW2pd ID4gZmVhc3RvbCkgcmV0dXJuIGZhbHNlOwotQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEhpZ2hz Q3V0R2VuZXJhdGlvbjo6c2VwYXJhdGVMaWZ0ZWRLCitAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQg SGlnaHNDdXRHZW5lcmF0aW9uOjpzZXBhcmF0ZUxpZnRlZEsKICAgIFMucmVzaXplKGNvdmVyc2l6 ZSk7CiAgICBzdGQ6OnZlY3RvcjxpbnQ4X3Q+IGNvdmVyZmxhZzsKICAgIGNvdmVyZmxhZy5yZXNp emUocm93bGVuKTsKQEAgLTQ0Nyw3ICszMDEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIFsm XShIaWdoc0ludCBhLCBIaWdoc0ludCBiKSB7IHJldHVybiB2YWxzW2FdID4gdmFsc1tiXTsgfSk7 CiAgCiAgICBIaWdoc0NEb3VibGUgYWJhcnRtcCA9IHZhbHNbY292ZXJbMF1dOwotQEAgLTIyOSw3 ICsyMjksNyBAQCBib29sIEhpZ2hzQ3V0R2VuZXJhdGlvbjo6c2VwYXJhdGVMaWZ0ZWRNCitAQCAt MjI4LDcgKzIyOCw3IEBAIGJvb2wgSGlnaHNDdXRHZW5lcmF0aW9uOjpzZXBhcmF0ZUxpZnRlZE0K ICAKICAgIGZvciAoSGlnaHNJbnQgaSA9IDA7IGkgIT0gY292ZXJzaXplOyArK2kpIGNvdmVyZmxh Z1tjb3ZlcltpXV0gPSAxOwogIApAQCAtNDU2LDcgKzMxMCw3IEBACiAgICAgICAgICAgICAgICAg ICAgICAgWyZdKEhpZ2hzSW50IGEsIEhpZ2hzSW50IGIpIHsgcmV0dXJuIHZhbHNbYV0gPiB2YWxz W2JdOyB9KTsKICAgIEhpZ2hzQ0RvdWJsZSBzdW0gPSAwOwogIAotQEAgLTI5Miw3ICsyOTIsNyBA QCBib29sIEhpZ2hzQ3V0R2VuZXJhdGlvbjo6c2VwYXJhdGVMaWZ0ZWRNCitAQCAtMjkxLDcgKzI5 MSw3IEBAIGJvb2wgSGlnaHNDdXRHZW5lcmF0aW9uOjpzZXBhcmF0ZUxpZnRlZE0KICAgIGZvciAo SGlnaHNJbnQgaSA6IGNvdmVyKSBjb3ZlcmZsYWdbaV0gPSAxOwogIAogICAgYXV0byBjb21wID0g WyZdKEhpZ2hzSW50IGEsIEhpZ2hzSW50IGIpIHsgcmV0dXJuIHZhbHNbYV0gPiB2YWxzW2JdOyB9 OwpAQCAtNDY1LDcgKzMxOSw3IEBACiAgCiAgICBzdGQ6OnZlY3RvcjxIaWdoc0NEb3VibGU+IGE7 CiAgICBzdGQ6OnZlY3RvcjxIaWdoc0NEb3VibGU+IHU7Ci1AQCAtNTY2LDcgKzU2Niw3IEBAIGJv b2wgSGlnaHNDdXRHZW5lcmF0aW9uOjpjbWlyQ3V0R2VuZXJhdGkKK0BAIC01NjUsNyArNTY1LDcg QEAgYm9vbCBIaWdoc0N1dEdlbmVyYXRpb246OmNtaXJDdXRHZW5lcmF0aQogIAogICAgaWYgKGRl bHRhcy5lbXB0eSgpKSByZXR1cm4gZmFsc2U7CiAgCkBAIC00NzQsOCArMzI4LDggQEAKICAgIGRv dWJsZSBjdXJkZWx0YSA9IGRlbHRhc1swXTsKICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgZGVs dGFzLnNpemUoKTsgKytpKSB7CiAgICAgIGlmIChkZWx0YXNbaV0gLSBjdXJkZWx0YSA8PSAxMCAq IGZlYXN0b2wpCi0tLS0gSGlHSFMtMS4xNC4wL2hpZ2hzL21pcC9IaWdoc0N1dFBvb2wuY3BwLm9y aWcJMjAyNi0wNC0wNiAwODozNjozMS4wMDAwMDAwMDAgLTA2MDAKLSsrKyBIaUdIUy0xLjE0LjAv aGlnaHMvbWlwL0hpZ2hzQ3V0UG9vbC5jcHAJMjAyNi0wNS0yNyAxNjo1NDoyNS40NjIzNDI1MjYg LTA2MDAKKy0tLSBIaUdIUy0xLjE1LjEvaGlnaHMvbWlwL0hpZ2hzQ3V0UG9vbC5jcHAub3JpZwky MDI2LTA3LTAyIDAwOjQyOjM3LjAwMDAwMDAwMCAtMDYwMAorKysrIEhpR0hTLTEuMTUuMS9oaWdo cy9taXAvSGlnaHNDdXRQb29sLmNwcAkyMDI2LTA3LTA0IDEwOjA2OjIwLjUxNzcyNjE2NSAtMDYw MAogQEAgLTExLDcgKzExLDcgQEAKICAjaW5jbHVkZSA8Y2Fzc2VydD4KICAjaW5jbHVkZSA8bnVt ZXJpYz4KQEAgLTQ4NSw3ICszMzksNyBAQAogICNpbmNsdWRlICJtaXAvSGlnaHNEb21haW4uaCIK ICAjaW5jbHVkZSAibWlwL0hpZ2hzTHBSZWxheGF0aW9uLmgiCiAgI2luY2x1ZGUgIm1pcC9IaWdo c01pcFNvbHZlckRhdGEuaCIKLUBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBIaWdoc0N1dFBvb2w6 OnNlcGFyYXRlKGNvbnN0IHN0ZDo6dgorQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEhpZ2hzQ3V0 UG9vbDo6c2VwYXJhdGUoY29uc3Qgc3RkOjp2CiAgICBhc3NlcnQoKEhpZ2hzSW50KXByb3BSb3dz LnNpemUoKSA9PSBudW1Qcm9wUm93cyk7CiAgICBpZiAoZWZmaWNhY2lvdXNfY3V0cy5lbXB0eSgp KSByZXR1cm47CiAgCkBAIC00OTQsNyArMzQ4LDcgQEAKICAgICAgICAgICAgWyZlZmZpY2FjaW91 c19jdXRzXShjb25zdCBzdGQ6OnBhaXI8ZG91YmxlLCBIaWdoc0ludD4mIGEsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpwYWlyPGRvdWJsZSwgSGlnaHNJbnQ+JiBi KSB7CiAgICAgICAgICAgICAgaWYgKGEuZmlyc3QgPiBiLmZpcnN0KSByZXR1cm4gdHJ1ZTsKLUBA IC00MjAsNyArNDIwLDcgQEAgSGlnaHNJbnQgSGlnaHNDdXRQb29sOjphZGRDdXQoY29uc3QgSGln aAorQEAgLTUxOCw3ICs1MTgsNyBAQCBIaWdoc0ludCBIaWdoc0N1dFBvb2w6OmFkZEN1dChjb25z dCBIaWdoCiAgICAgIHNvcnRCdWZmZXJbaV0uZmlyc3QgPSBSaW5kZXhbaV07CiAgICAgIHNvcnRC dWZmZXJbaV0uc2Vjb25kID0gUnZhbHVlW2ldOwogICAgfQpAQCAtNTAzLDggKzM1Nyw4IEBACiAg ICAgICAgc29ydEJ1ZmZlci5iZWdpbigpLCBzb3J0QnVmZmVyLmVuZCgpLAogICAgICAgIFtdKGNv bnN0IHN0ZDo6cGFpcjxIaWdoc0ludCwgZG91YmxlPiYgYSwKICAgICAgICAgICBjb25zdCBzdGQ6 OnBhaXI8SGlnaHNJbnQsIGRvdWJsZT4mIGIpIHsgcmV0dXJuIGEuZmlyc3QgPCBiLmZpcnN0OyB9 KTsKLS0tLSBIaUdIUy0xLjE0LjAvaGlnaHMvbWlwL0hpZ2hzRG9tYWluLmNwcC5vcmlnCTIwMjYt MDQtMDYgMDg6MzY6MzEuMDAwMDAwMDAwIC0wNjAwCi0rKysgSGlHSFMtMS4xNC4wL2hpZ2hzL21p cC9IaWdoc0RvbWFpbi5jcHAJMjAyNi0wNS0yNyAxNjo1NDoyNS40NjI2NDE5NzQgLTA2MDAKKy0t LSBIaUdIUy0xLjE1LjEvaGlnaHMvbWlwL0hpZ2hzRG9tYWluLmNwcC5vcmlnCTIwMjYtMDctMDIg MDA6NDI6MzcuMDAwMDAwMDAwIC0wNjAwCisrKysgSGlHSFMtMS4xNS4xL2hpZ2hzL21pcC9IaWdo c0RvbWFpbi5jcHAJMjAyNi0wNy0wNCAxMDowNjoyMC41MTgwNzE5NjkgLTA2MDAKIEBAIC0xMiw3 ICsxMiw3IEBACiAgI2luY2x1ZGUgPG51bWVyaWM+CiAgI2luY2x1ZGUgPHF1ZXVlPgpAQCAtNTE0 LDcgKzM2OCw3IEBACiAgI2luY2x1ZGUgIm1pcC9IaWdoc0NvbmZsaWN0UG9vbC5oIgogICNpbmNs dWRlICJtaXAvSGlnaHNDdXRQb29sLmgiCiAgI2luY2x1ZGUgIm1pcC9IaWdoc01pcFNvbHZlckRh dGEuaCIKLUBAIC0yNzMxLDcgKzI3MzEsNyBAQCBib29sIEhpZ2hzRG9tYWluOjpDb25mbGljdFNl dDo6ZXhwbGFpbkJvCitAQCAtMjgzMiw3ICsyODMyLDcgQEAgYm9vbCBIaWdoc0RvbWFpbjo6Q29u ZmxpY3RTZXQ6OmV4cGxhaW5CbwogIAogICAgaWYgKGRvbWNoZ1ZhbCA9PSAwKSByZXR1cm4gZmFs c2U7CiAgCkBAIC01MjMsNyArMzc3LDcgQEAKICAKICAgIC8vIHRvIGV4cGxhaW4gdGhlIGJvdW5k IGNoYW5nZSB3ZSBzdGFydCBmcm9tIHRoZSBib3VuZCBjb25zdHJhaW50LAogICAgLy8gbXVsdGlw bHkgaXQgYnkgdGhlIGNvbHVtbnMgY29lZmZpY2llbnQgaW4gdGhlIGNvbnN0cmFpbnQuIFRoZW4g dGhlCi1AQCAtMjgzOCw3ICsyODM4LDcgQEAgYm9vbCBIaWdoc0RvbWFpbjo6Q29uZmxpY3RTZXQ6 OmV4cGxhaW5CbworQEAgLTI5MzksNyArMjkzOSw3IEBAIGJvb2wgSGlnaHNEb21haW46OkNvbmZs aWN0U2V0OjpleHBsYWluQm8KICAKICAgIGlmIChkb21jaGdWYWwgPT0gMCkgcmV0dXJuIGZhbHNl OwogIApAQCAtNTMyLDcgKzM4Niw3IEBACiAgCiAgICBhc3NlcnQoZG9tY2hnVmFsICE9IDApOwog IAotQEAgLTMzMDksNyArMzMwOSw3IEBAIGJvb2wgSGlnaHNEb21haW46OkNvbmZsaWN0U2V0Ojpl eHBsYWluSW4KK0BAIC0zNDEwLDcgKzM0MTAsNyBAQCBib29sIEhpZ2hzRG9tYWluOjpDb25mbGlj dFNldDo6ZXhwbGFpbkluCiAgICAgIHJlc29sdmVCdWZmZXIucHVzaF9iYWNrKGNhbmQpOwogICAg fQogIApAQCAtNTQxLDcgKzM5NSw3IEBACiAgCiAgICAvLyBjb21wdXRlIHRoZSBsb3dlciBib3Vu ZCBvZiBNIHRoYXQgaXMgbmVjZXNzYXJ5CiAgICBkb3VibGUgTXVwcGVyID0gcmhzIC0gc3RkOjpt YXgoMTAuMCwgc3RkOjpmYWJzKHJocykpICoKLUBAIC0zMzU2LDcgKzMzNTYsNyBAQCBib29sIEhp Z2hzRG9tYWluOjpDb25mbGljdFNldDo6ZXhwbGFpbkluCitAQCAtMzQ1Nyw3ICszNDU3LDcgQEAg Ym9vbCBIaWdoc0RvbWFpbjo6Q29uZmxpY3RTZXQ6OmV4cGxhaW5JbgogICAgICByZXNvbHZlQnVm ZmVyLnB1c2hfYmFjayhjYW5kKTsKICAgIH0KICAKQEAgLTU1MCw4ICs0MDQsOCBAQAogIAogICAg Ly8gY29tcHV0ZSB0aGUgbG93ZXIgYm91bmQgb2YgTSB0aGF0IGlzIG5lY2Vzc2FyeQogICAgZG91 YmxlIE1sb3dlciA9IHJocyArIHN0ZDo6bWF4KDEwLjAsIHN0ZDo6ZmFicyhyaHMpKSAqCi0tLS0g SGlHSFMtMS4xNC4wL2hpZ2hzL21pcC9IaWdoc0ltcGxpY2F0aW9ucy5jcHAub3JpZwkyMDI2LTA0 LTA2IDA4OjM2OjMxLjAwMDAwMDAwMCAtMDYwMAotKysrIEhpR0hTLTEuMTQuMC9oaWdocy9taXAv SGlnaHNJbXBsaWNhdGlvbnMuY3BwCTIwMjYtMDUtMjcgMTY6NTQ6MjUuNDYzNjk4MzgzIC0wNjAw CistLS0gSGlHSFMtMS4xNS4xL2hpZ2hzL21pcC9IaWdoc0ltcGxpY2F0aW9ucy5jcHAub3JpZwky MDI2LTA3LTAyIDAwOjQyOjM3LjAwMDAwMDAwMCAtMDYwMAorKysrIEhpR0hTLTEuMTUuMS9oaWdo cy9taXAvSGlnaHNJbXBsaWNhdGlvbnMuY3BwCTIwMjYtMDctMDQgMTA6MDY6MjAuNTE4NDYxNjg2 IC0wNjAwCiBAQCAtNyw3ICs3LDcgQEAKICAvKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKi8KICAjaW5jbHVkZSAi bWlwL0hpZ2hzSW1wbGljYXRpb25zLmgiCkBAIC01NzAsOCArNDI0LDggQEAKICAKICAgIHN0ZDo6 YXJyYXk8SGlnaHNDbGlxdWVUYWJsZTo6Q2xpcXVlVmFyLCAyPiBjbGlxdWU7CiAgICBjbGlxdWVb MF0gPSBIaWdoc0NsaXF1ZVRhYmxlOjpDbGlxdWVWYXIoY29sLCB2YWwpOwotLS0tIEhpR0hTLTEu MTQuMC9oaWdocy9taXAvSGlnaHNNaXBTb2x2ZXJEYXRhLmNwcC5vcmlnCTIwMjYtMDQtMDYgMDg6 MzY6MzEuMDAwMDAwMDAwIC0wNjAwCi0rKysgSGlHSFMtMS4xNC4wL2hpZ2hzL21pcC9IaWdoc01p cFNvbHZlckRhdGEuY3BwCTIwMjYtMDUtMjcgMTY6NTQ6MjUuNDY0MDY2MDY5IC0wNjAwCistLS0g SGlHSFMtMS4xNS4xL2hpZ2hzL21pcC9IaWdoc01pcFNvbHZlckRhdGEuY3BwLm9yaWcJMjAyNi0w Ny0wMiAwMDo0MjozNy4wMDAwMDAwMDAgLTA2MDAKKysrKyBIaUdIUy0xLjE1LjEvaGlnaHMvbWlw L0hpZ2hzTWlwU29sdmVyRGF0YS5jcHAJMjAyNi0wNy0wNCAxMDowNjoyMC41MTg3MDk0NDggLTA2 MDAKIEBAIC0xMCw3ICsxMCw3IEBACiAgI2luY2x1ZGUgPHJhbmRvbT4KICAjaW5jbHVkZSA8c3N0 cmVhbT4KQEAgLTU4MSw4ICs0MzUsOCBAQAogICNpbmNsdWRlICJscF9kYXRhL0hpZ2hzTW9kZWxV dGlscy5oIgogICNpbmNsdWRlICJtaXAvSGlnaHNQc2V1ZG9jb3N0LmgiCiAgI2luY2x1ZGUgIm1p cC9IaWdoc1JlZGNvc3RGaXhpbmcuaCIKLS0tLSBIaUdIUy0xLjE0LjAvaGlnaHMvbWlwL0hpZ2hz TW9ka1NlcGFyYXRvci5jcHAub3JpZwkyMDI2LTA0LTA2IDA4OjM2OjMxLjAwMDAwMDAwMCAtMDYw MAotKysrIEhpR0hTLTEuMTQuMC9oaWdocy9taXAvSGlnaHNNb2RrU2VwYXJhdG9yLmNwcAkyMDI2 LTA1LTI3IDE2OjU0OjI1LjQ2NTAxMDk2MCAtMDYwMAorLS0tIEhpR0hTLTEuMTUuMS9oaWdocy9t aXAvSGlnaHNNb2RrU2VwYXJhdG9yLmNwcC5vcmlnCTIwMjYtMDctMDIgMDA6NDI6MzcuMDAwMDAw MDAwIC0wNjAwCisrKysgSGlHSFMtMS4xNS4xL2hpZ2hzL21pcC9IaWdoc01vZGtTZXBhcmF0b3Iu Y3BwCTIwMjYtMDctMDQgMTA6MDY6MjAuNTE4OTgxNjA1IC0wNjAwCiBAQCAtMTIsNyArMTIsNyBA QAogIAogICNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgpAQCAtNjAxLDggKzQ1NSw4IEBACiAgICAg IGlmICghdXNlZFdlaWdodHMuaW5zZXJ0KHdlaWdodHMpKSByZXR1cm47CiAgCiAgICAgIGFzc2Vy dChscEFnZ3JlZ2F0b3IuaXNFbXB0eSgpKTsKLS0tLSBIaUdIUy0xLjE0LjAvaGlnaHMvbWlwL0hp Z2hzT2JqZWN0aXZlRnVuY3Rpb24uY3BwLm9yaWcJMjAyNi0wNC0wNiAwODozNjozMS4wMDAwMDAw MDAgLTA2MDAKLSsrKyBIaUdIUy0xLjE0LjAvaGlnaHMvbWlwL0hpZ2hzT2JqZWN0aXZlRnVuY3Rp b24uY3BwCTIwMjYtMDUtMjcgMTY6NTQ6MjUuNDY1MjI0ODA5IC0wNjAwCistLS0gSGlHSFMtMS4x NS4xL2hpZ2hzL21pcC9IaWdoc09iamVjdGl2ZUZ1bmN0aW9uLmNwcC5vcmlnCTIwMjYtMDctMDIg MDA6NDI6MzcuMDAwMDAwMDAwIC0wNjAwCisrKysgSGlHSFMtMS4xNS4xL2hpZ2hzL21pcC9IaWdo c09iamVjdGl2ZUZ1bmN0aW9uLmNwcAkyMDI2LTA3LTA0IDEwOjA2OjIwLjUxOTE5NDQ1MiAtMDYw MAogQEAgLTEwLDcgKzEwLDcgQEAKICAKICAjaW5jbHVkZSA8bnVtZXJpYz4KQEAgLTYyMSw4ICs0 NzUsOCBAQAogICAgICAgICAgICAgIFsmXShIaWdoc0ludCBpLCBIaWdoc0ludCBqKSB7CiAgICAg ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoKEhpZ2hzVUludCljb2xUb1BhcnRpdGlv bltpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaWdoc0hhc2hIZWxw ZXJzOjpoYXNoKGkpKSA8Ci0tLS0gSGlHSFMtMS4xNC4wL2hpZ2hzL21pcC9IaWdoc1ByaW1hbEhl dXJpc3RpY3MuY3BwLm9yaWcJMjAyNi0wNC0wNiAwODozNjozMS4wMDAwMDAwMDAgLTA2MDAKLSsr KyBIaUdIUy0xLjE0LjAvaGlnaHMvbWlwL0hpZ2hzUHJpbWFsSGV1cmlzdGljcy5jcHAJMjAyNi0w NS0yNyAxNjo1NDoyNS40NjU0NzM4ODMgLTA2MDAKKy0tLSBIaUdIUy0xLjE1LjEvaGlnaHMvbWlw L0hpZ2hzUHJpbWFsSGV1cmlzdGljcy5jcHAub3JpZwkyMDI2LTA3LTAyIDAwOjQyOjM3LjAwMDAw MDAwMCAtMDYwMAorKysrIEhpR0hTLTEuMTUuMS9oaWdocy9taXAvSGlnaHNQcmltYWxIZXVyaXN0 aWNzLmNwcAkyMDI2LTA3LTA0IDEwOjA2OjIwLjUxOTQyOTQwOSAtMDYwMAogQEAgLTEwLDcgKzEw LDcgQEAKICAjaW5jbHVkZSA8bnVtZXJpYz4KICAjaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KQEAg LTYzMiw3ICs0ODYsNyBAQAogICNpbmNsdWRlICJpby9IaWdoc0lPLmgiCiAgI2luY2x1ZGUgImxw X2RhdGEvSENvbnN0LmgiCiAgI2luY2x1ZGUgImxwX2RhdGEvSGlnaHNMcFV0aWxzLmgiCi1AQCAt NDgsNyArNDgsNyBAQCBIaWdoc1ByaW1hbEhldXJpc3RpY3M6OkhpZ2hzUHJpbWFsSGV1cmlzCitA QCAtNDMsNyArNDMsNyBAQCBIaWdoc1ByaW1hbEhldXJpc3RpY3M6OkhpZ2hzUHJpbWFsSGV1cmlz CiAgdm9pZCBIaWdoc1ByaW1hbEhldXJpc3RpY3M6OnNldHVwSW50Q29scygpIHsKICAgIGludGNv bHMgPSBtaXBzb2x2ZXIubWlwZGF0YV8tPmludGVnZXJfY29sczsKICAKQEAgLTY0MSw4ICs0OTUs OCBAQAogICAgICBjb25zdCBGUF8zMkJJVF9WT0xBVElMRSBkb3VibGUgbG9ja1Njb3JlMSA9CiAg ICAgICAgICAobWlwc29sdmVyLm1pcGRhdGFfLT5mZWFzdG9sICsgbWlwc29sdmVyLm1pcGRhdGFf LT51cGxvY2tzW2MxXSkgKgogICAgICAgICAgKG1pcHNvbHZlci5taXBkYXRhXy0+ZmVhc3RvbCAr IG1pcHNvbHZlci5taXBkYXRhXy0+ZG93bmxvY2tzW2MxXSk7Ci1AQCAtMjg2LDcgKzI4Niw3IEBA IHZvaWQgSGlnaHNQcmltYWxIZXVyaXN0aWNzOjpyb290UmVkdWNlZEMKLSAgICAgICBtaXBzb2x2 ZXIubWlwZGF0YV8tPnJlZGNvc3RmaXhpbmcuZ2V0THVya2luZ0JvdW5kcyhtaXBzb2x2ZXIpOwor QEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIEhpZ2hzUHJpbWFsSGV1cmlzdGljczo6cm9vdFJlZHVj ZWRDCisgICAgICAgICAgIG1pcHNvbHZlciwgd29ya2VyLmdldEdsb2JhbERvbWFpbigpKTsKICAg IGlmICgxMCAqIGx1cmtpbmdCb3VuZHMuc2l6ZSgpIDwgbWlwc29sdmVyLm1pcGRhdGFfLT5pbnRl Z3JhbF9jb2xzLnNpemUoKSkKICAgICAgcmV0dXJuOwogLSAgcGRxc29ydChsdXJraW5nQm91bmRz LmJlZ2luKCksIGx1cmtpbmdCb3VuZHMuZW5kKCksCkBAIC02NTAsNyArNTA0LDcgQEAKICAgICAg ICAgICAgW10oY29uc3Qgc3RkOjpwYWlyPGRvdWJsZSwgSGlnaHNEb21haW5DaGFuZ2U+JiBhLAog ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnBhaXI8ZG91YmxlLCBIaWdoc0RvbWFpbkNoYW5nZT4m IGIpIHsKICAgICAgICAgICAgICByZXR1cm4gYS5maXJzdCA+IGIuZmlyc3Q7Ci1AQCAtNDg1LDcg KzQ4NSw3IEBAIHJldHJ5OgorQEAgLTUzMyw3ICs1MzMsNyBAQCByZXRyeToKICAgICAgICAgIHJl dHVybiBmaXh2YWw7CiAgICAgICAgfTsKICAKQEAgLTY1OSw3ICs1MTMsNyBAQAogICAgICAgICAg ICAgICAgaGV1cmxwLmdldEZyYWN0aW9uYWxJbnRlZ2VycygpLmVuZCgpLAogICAgICAgICAgICAg ICAgWyZdKGNvbnN0IHN0ZDo6cGFpcjxIaWdoc0ludCwgZG91YmxlPiYgYSwKICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdGQ6OnBhaXI8SGlnaHNJbnQsIGRvdWJsZT4mIGIpIHsKLUBAIC03Njks NyArNzY5LDcgQEAgcmV0cnk6CitAQCAtODQ0LDcgKzg0NCw3IEBAIHJldHJ5OgogIAogICAgICAv LyBub3cgc29ydCB0aGUgdmFyaWFibGVzIGJ5IHRoZWlyIGRpc3RhbmNlIHRvd2FyZHMgdGhlIHZh bHVlIHRoZXkgd2lsbCBiZQogICAgICAvLyBmaXhlZCB0bwpAQCAtNjY4LDggKzUyMiw4IEBACiAg ICAgICAgICAgICAgWyZdKGNvbnN0IHN0ZDo6cGFpcjxIaWdoc0ludCwgZG91YmxlPiYgYSwKICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpwYWlyPEhpZ2hzSW50LCBkb3VibGU+JiBiKSB7CiAg ICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoCi0tLS0gSGlHSFMtMS4xNC4wL2hp Z2hzL21pcC9IaWdoc1RhYmxlYXVTZXBhcmF0b3IuY3BwLm9yaWcJMjAyNi0wNC0wNiAwODozNjoz MS4wMDAwMDAwMDAgLTA2MDAKLSsrKyBIaUdIUy0xLjE0LjAvaGlnaHMvbWlwL0hpZ2hzVGFibGVh dVNlcGFyYXRvci5jcHAJMjAyNi0wNS0yNyAxNjo1NDoyNS40NjYxNDg4MTIgLTA2MDAKKy0tLSBI aUdIUy0xLjE1LjEvaGlnaHMvbWlwL0hpZ2hzVGFibGVhdVNlcGFyYXRvci5jcHAub3JpZwkyMDI2 LTA3LTAyIDAwOjQyOjM3LjAwMDAwMDAwMCAtMDYwMAorKysrIEhpR0hTLTEuMTUuMS9oaWdocy9t aXAvSGlnaHNUYWJsZWF1U2VwYXJhdG9yLmNwcAkyMDI2LTA3LTA0IDEwOjA2OjIwLjUxOTY2OTgz OCAtMDYwMAogQEAgLTEyLDcgKzEyLDcgQEAKICAKICAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAt NzA2LDggKzU2MCw4IEBACiAgICBkb3VibGUgYmVzdFNjb3JlID0gLTEuMDsKICAKICAgIEhpZ2hz SW50IG51bUN1dHMgPSBjdXRwb29sLmdldE51bUN1dHMoKTsKLS0tLSBIaUdIUy0xLjE0LjAvaGln aHMvcHJlc29sdmUvSGlnaHNTeW1tZXRyeS5jcHAub3JpZwkyMDI2LTA0LTA2IDA4OjM2OjMxLjAw MDAwMDAwMCAtMDYwMAotKysrIEhpR0hTLTEuMTQuMC9oaWdocy9wcmVzb2x2ZS9IaWdoc1N5bW1l dHJ5LmNwcAkyMDI2LTA1LTI3IDE2OjU0OjI1LjQ3NzAzMjE0MSAtMDYwMAorLS0tIEhpR0hTLTEu MTUuMS9oaWdocy9wcmVzb2x2ZS9IaWdoc1N5bW1ldHJ5LmNwcC5vcmlnCTIwMjYtMDctMDIgMDA6 NDI6MzcuMDAwMDAwMDAwIC0wNjAwCisrKysgSGlHSFMtMS4xNS4xL2hpZ2hzL3ByZXNvbHZlL0hp Z2hzU3ltbWV0cnkuY3BwCTIwMjYtMDctMDQgMTA6MDY6MjAuNTE5ODgxODIzIC0wNjAwCiBAQCAt MTUsNyArMTUsNyBAQAogICNpbmNsdWRlIDxhbGdvcml0aG0+CiAgI2luY2x1ZGUgPG51bWVyaWM+ CkBAIC03MTcsNyArNTcxLDcgQEAKICAjaW5jbHVkZSAibWlwL0hpZ2hzQ2xpcXVlVGFibGUuaCIK ICAjaW5jbHVkZSAibWlwL0hpZ2hzRG9tYWluLmgiCiAgI2luY2x1ZGUgInBhcmFsbGVsL0hpZ2hz UGFyYWxsZWwuaCIKLUBAIC0yMzEsMTAgKzIzMSwxMCBAQCBIaWdoc1N5bW1ldHJpZXM6OmNvbXB1 dGVTdGFiaWxpemVyT3JiaXRzCitAQCAtMjQwLDEwICsyNDAsMTAgQEAgSGlnaHNTeW1tZXRyaWVz Ojpjb21wdXRlU3RhYmlsaXplck9yYml0cwogICAgICAgIHN0YWJpbGl6ZXJPcmJpdHMub3JiaXRD b2xzLnB1c2hfYmFjayhwZXJtdXRhdGlvbkNvbHVtbnNbaV0pOwogICAgfQogICAgc3RhYmlsaXpl ck9yYml0cy5zeW1tZXRyaWVzID0gdGhpczsKQEAgLTcyOSw4ICs1ODMsOCBAQAogKyAgICBib29z dDo6c29ydDo6cGRxc29ydChzdGFiaWxpemVyT3JiaXRzLm9yYml0Q29scy5iZWdpbigpLAogICAg ICAgICAgICAgIHN0YWJpbGl6ZXJPcmJpdHMub3JiaXRDb2xzLmVuZCgpLAogICAgICAgICAgICAg IFsmXShIaWdoc0ludCBjb2wxLCBIaWdoc0ludCBjb2wyKSB7Ci0gICAgICAgICAgICAgICByZXR1 cm4gZ2V0T3JiaXQoY29sMSkgPCBnZXRPcmJpdChjb2wyKTsKLUBAIC03NDAsNyArNzQwLDcgQEAg SGlnaHNJbnQgSGlnaHNPcmJpdG9wZU1hdHJpeDo6b3JiaXRhbEZpeAorICAgICAgICAgICAgICAg cmV0dXJuIGdldE9yYml0KGNvbDEsIHdvcmtzcGFjZS5vcmJpdFBhcnRpdGlvbiwKK0BAIC03NTUs NyArNzU1LDcgQEAgSGlnaHNJbnQgSGlnaHNPcmJpdG9wZU1hdHJpeDo6b3JiaXRhbEZpeAogIAog IHZvaWQgSGlnaHNTeW1tZXRyeURldGVjdGlvbjo6aW5pdGlhbGl6ZUdyb3VuZFNldCgpIHsKICAg IHZlcnRleEdyb3VuZFNldCA9IGN1cnJlbnRQYXJ0aXRpb247CkBAIC03MzksNyArNTkzLDcgQEAK ICAgIHZlcnRleFBvc2l0aW9uLnJlc2l6ZSh2ZXJ0ZXhUb0NlbGwuc2l6ZSgpLCAtMSk7CiAgICBm b3IgKEhpZ2hzSW50IGkgPSAwOyBpIDwgbnVtVmVydGljZXM7ICsraSkKICAgICAgdmVydGV4UG9z aXRpb25bdmVydGV4R3JvdW5kU2V0W2ldXSA9IGk7Ci1AQCAtOTExLDcgKzkxMSw3IEBAIGJvb2wg SGlnaHNTeW1tZXRyeURldGVjdGlvbjo6cGFydGl0aW9uUmUKK0BAIC05MjYsNyArOTI2LDcgQEAg Ym9vbCBIaWdoc1N5bW1ldHJ5RGV0ZWN0aW9uOjpwYXJ0aXRpb25SZQogICAgICBpZiAocmVmaW5l U3RhcnQgPT0gY2VsbEVuZCkgY29udGludWU7CiAgCiAgICAgIC8vIHNvcnQgdGhlIHZlcnRpY2Vz IHRoYXQgaGF2ZSB1cGRhdGVkIGhhc2ggdmFsdWVzIGJ5IHRoZWlyIGhhc2ggdmFsdWVzCkBAIC03 NDgsNyArNjAyLDcgQEAKICAgICAgICAgICAgICBjdXJyZW50UGFydGl0aW9uLmJlZ2luKCkgKyBj ZWxsRW5kLCBbJl0oSGlnaHNJbnQgdjEsIEhpZ2hzSW50IHYyKSB7CiAgICAgICAgICAgICAgICBy ZXR1cm4gdmVydGV4SGFzaFt2MV0gPCB2ZXJ0ZXhIYXNoW3YyXTsKICAgICAgICAgICAgICB9KTsK LUBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2b2lkIEhpZ2hzU3ltbWV0cnlEZXRlY3Rpb246OmxvYWRN b2RlbEFzCitAQCAtMTI4Miw3ICsxMjgyLDcgQEAgdm9pZCBIaWdoc1N5bW1ldHJ5RGV0ZWN0aW9u Ojpsb2FkTW9kZWxBcwogICAgLy8gYXNzaWduZWQgYWJvdmUKICAgIGN1cnJlbnRQYXJ0aXRpb24u cmVzaXplKG51bVZlcnRpY2VzKTsKICAgIHN0ZDo6aW90YShjdXJyZW50UGFydGl0aW9uLmJlZ2lu KCksIGN1cnJlbnRQYXJ0aXRpb24uZW5kKCksIDApOwpAQCAtNzU3LDcgKzYxMSw3IEBACiAgICAg ICAgICAgIFsmXShIaWdoc0ludCB2MSwgSGlnaHNJbnQgdjIpIHsKICAgICAgICAgICAgICByZXR1 cm4gdmVydGV4VG9DZWxsW3YxXSA8IHZlcnRleFRvQ2VsbFt2Ml07CiAgICAgICAgICAgIH0pOwot QEAgLTE0MjgsNyArMTQyOCw3IEBAIEhpZ2hzU3ltbWV0cnlEZXRlY3Rpb246OmNvbXB1dGVDb21w b25lbnQKK0BAIC0xNDQzLDcgKzE0NDMsNyBAQCBIaWdoc1N5bW1ldHJ5RGV0ZWN0aW9uOjpjb21w dXRlQ29tcG9uZW50CiAgCiAgICBjb21wb25lbnREYXRhLmNvbXBvbmVudFNldHMuYXNzaWduKHZl cnRleEdyb3VuZFNldC5iZWdpbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2ZXJ0ZXhHcm91bmRTZXQuYmVnaW4oKSArIG51bUFjdGl2ZUNvbHMpOwpAQCAtNzY2LDcg KzYyMCw3IEBACiAgICAgICAgICAgIGNvbXBvbmVudERhdGEuY29tcG9uZW50U2V0cy5lbmQoKSwg WyZdKEhpZ2hzSW50IHUsIEhpZ2hzSW50IHYpIHsKICAgICAgICAgICAgICBIaWdoc0ludCB1Q29t cCA9IGNvbXBvbmVudERhdGEuY29tcG9uZW50cy5nZXRTZXQodmVydGV4UG9zaXRpb25bdV0pOwog ICAgICAgICAgICAgIEhpZ2hzSW50IHZDb21wID0gY29tcG9uZW50RGF0YS5jb21wb25lbnRzLmdl dFNldCh2ZXJ0ZXhQb3NpdGlvblt2XSk7Ci1AQCAtMTQ2Niw3ICsxNDY2LDcgQEAgSGlnaHNTeW1t ZXRyeURldGVjdGlvbjo6Y29tcHV0ZUNvbXBvbmVudAorQEAgLTE0ODEsNyArMTQ4MSw3IEBAIEhp Z2hzU3ltbWV0cnlEZXRlY3Rpb246OmNvbXB1dGVDb21wb25lbnQKICAgICAgY29tcG9uZW50RGF0 YS5wZXJtQ29tcG9uZW50cy5wdXNoX2JhY2soaSk7CiAgICB9CiAgCkBAIC03NzUsOCArNjI5LDgg QEAKICAgICAgICAgICAgY29tcG9uZW50RGF0YS5wZXJtQ29tcG9uZW50cy5lbmQoKSwgWyZdKEhp Z2hzSW50IGksIEhpZ2hzSW50IGopIHsKICAgICAgICAgICAgICBIaWdoc0ludCBzZXRpID0KICAg ICAgICAgICAgICAgICAgY29tcG9uZW50RGF0YS5jb21wb25lbnRzLmdldFNldChjb21wb25lbnRE YXRhLmZpcnN0VW5maXhlZFtpXSk7Ci0tLS0gSGlHSFMtMS4xNC4wL2hpZ2hzL3ByZXNvbHZlL0hQ cmVzb2x2ZS5jcHAub3JpZwkyMDI2LTA0LTA2IDA4OjM2OjMxLjAwMDAwMDAwMCAtMDYwMAotKysr IEhpR0hTLTEuMTQuMC9oaWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwCTIwMjYtMDUtMjcgMTY6 NTQ6MjUuNDc4MDI2NjExIC0wNjAwCistLS0gSGlHSFMtMS4xNS4xL2hpZ2hzL3ByZXNvbHZlL0hQ cmVzb2x2ZS5jcHAub3JpZwkyMDI2LTA3LTAyIDAwOjQyOjM3LjAwMDAwMDAwMCAtMDYwMAorKysr IEhpR0hTLTEuMTUuMS9oaWdocy9wcmVzb2x2ZS9IUHJlc29sdmUuY3BwCTIwMjYtMDctMDQgMTA6 MjA6NTAuNzEzMDI2NTQ0IC0wNjAwCiBAQCAtMTIsNyArMTIsNyBAQAogICNpbmNsdWRlIDxjbWF0 aD4KICAjaW5jbHVkZSA8bGltaXRzPgpAQCAtNzg2LDcgKzY0MCw3IEBACiAgI2luY2x1ZGUgIkhp Z2hzLmgiCiAgI2luY2x1ZGUgImlvL0hpZ2hzSU8uaCIKICAjaW5jbHVkZSAibHBfZGF0YS9IQ29u c3QuaCIKLUBAIC0xNjIzLDcgKzE2MjMsNyBAQCBIUHJlc29sdmU6OlJlc3VsdCBIUHJlc29sdmU6 OnJ1blByb2JpbmcoCitAQCAtMTYzMyw3ICsxNjMzLDcgQEAgSFByZXNvbHZlOjpSZXN1bHQgSFBy ZXNvbHZlOjpydW5Qcm9iaW5nKAogICAgfQogICAgaWYgKCFiaW5hcmllcy5lbXB0eSgpKSB7CiAg ICAgIC8vIHNvcnQgdmFyaWFibGVzIHdpdGggbWFueSBpbXBsaWNhdGlvbnMgb24gb3RoZXIgYmlu YXJpZXMgZmlyc3QKQEAgLTc5NSw3ICs2NDksNyBAQAogIAogICAgICBzaXplX3QgbnVtQ2hhbmdl ZENvbHMgPSAwOwogICAgICB3aGlsZSAoZG9tYWluLmdldENoYW5nZWRDb2xzKCkuc2l6ZSgpICE9 IG51bUNoYW5nZWRDb2xzKSB7Ci1AQCAtMTk5Niw3ICsxOTk2LDcgQEAgSFByZXNvbHZlOjpSZXN1 bHQgSFByZXNvbHZlOjpsaWZ0aW5nRm9yUAorQEAgLTIwMDYsNyArMjAwNiw3IEBAIEhQcmVzb2x2 ZTo6UmVzdWx0IEhQcmVzb2x2ZTo6bGlmdGluZ0ZvclAKICAgIH07CiAgCiAgICAvLyBzb3J0IGFj Y29yZGluZyB0byBzY29yZQpAQCAtODA0LDE2ICs2NTgsMTYgQEAKICAgICAgICBsaWZ0aW5ndGFi bGUuYmVnaW4oKSwgbGlmdGluZ3RhYmxlLmVuZCgpLAogICAgICAgIFsmXShjb25zdCBsaWZ0aW5n ZGF0YSYgb3BwMSwgY29uc3QgbGlmdGluZ2RhdGEmIG9wcDIpIHsKICAgICAgICAgIGRvdWJsZSBz Y29yZTEgPSBjb21wdXRlT3ZlcmFsbFNjb3JlKAotQEAgLTQ5OTAsNyArNDk5MCw3IEBAIEhQcmVz b2x2ZTo6UmVzdWx0IEhQcmVzb2x2ZTo6c2luZ2xldG9uQ28KK0BAIC01MDA1LDcgKzUwMDUsNyBA QCBIUHJlc29sdmU6OlJlc3VsdCBIUHJlc29sdmU6OnNpbmdsZXRvbkNvCiAgICB9OwogIAogICAg YXV0byBzb3J0Q29scyA9IFsmXShzdGQ6OnZlY3RvcjxjYW5kaWRhdGU+JiB2ZWMpIHsKIC0gICAg cGRxc29ydCh2ZWMuYmVnaW4oKSwgdmVjLmVuZCgpLAogKyAgICBib29zdDo6c29ydDo6cGRxc29y dCh2ZWMuYmVnaW4oKSwgdmVjLmVuZCgpLAotICAgICAgICAgICAgIFsmXShjb25zdCBjYW5kaWRh dGUmIGNvbDEsIGNvbnN0IGNhbmRpZGF0ZSYgY29sMikgewotICAgICAgICAgICAgICAgcmV0dXJu IG1vZGVsLT5jb2xfY29zdF9bc3RkOjpnZXQ8MD4oY29sMSldIC8gc3RkOjpnZXQ8MT4oY29sMSkg PAotICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLT5jb2xfY29zdF9bc3RkOjpnZXQ8MD4oY29s MildIC8gc3RkOjpnZXQ8MT4oY29sMik7Ci1AQCAtNTE5Miw3ICs1MTkyLDcgQEAgSFByZXNvbHZl OjpSZXN1bHQgSFByZXNvbHZlOjplbnVtZXJhdGVTbworICAgICAgICAgICAgIFsmXShjb25zdCBj YW5kaWRhdGUmIGMxLCBjb25zdCBjYW5kaWRhdGUmIGMyKSB7CisgICAgICAgICAgICAgICByZXR1 cm4gbW9kZWwtPmNvbF9jb3N0X1tjMS5jb2xdIC8gYzEudmFsIDwKKyAgICAgICAgICAgICAgICAg ICAgICBtb2RlbC0+Y29sX2Nvc3RfW2MyLmNvbF0gLyBjMi52YWw7CitAQCAtNTI2NSw3ICs1MjY1 LDcgQEAgSFByZXNvbHZlOjpSZXN1bHQgSFByZXNvbHZlOjplbnVtZXJhdGVTbwogICAgICAgIGJp bnZhcnNbbnVtbnpzKytdID0gY29sOwogICAgICB9CiAgICAgIGlmIChudW1uenMgPT0gMCkgcmV0 dXJuIGZhbHNlOwpAQCAtODIyLDcgKzY3Niw3IEBACiAgICAgIHJldHVybiB0cnVlOwogICAgfTsK ICAKLUBAIC01MzIxLDcgKzUzMjEsNyBAQCBIUHJlc29sdmU6OlJlc3VsdCBIUHJlc29sdmU6OmVu dW1lcmF0ZVNvCitAQCAtNTM5NCw3ICs1Mzk0LDcgQEAgSFByZXNvbHZlOjpSZXN1bHQgSFByZXNv bHZlOjplbnVtZXJhdGVTbwogIAogICAgLy8gY29tcGlsZSByb3dzIGFuZCBzb3J0IHRoZW0KICAg IGNvbXBpbGVSb3dzKHJvd3MpOwpAQCAtODMxLDcgKzY4NSw3IEBACiAgCiAgICAvLyByZW1vdmUg c2ltaWxhciByb3dzCiAgICByZW1vdmVTaW1pbGFyUm93cyhyb3dzKTsKLUBAIC02NjE4LDcgKzY2 MTgsNyBAQCBIUHJlc29sdmU6OlJlc3VsdCBIUHJlc29sdmU6OmFnZ3JlZ2F0b3IoCitAQCAtNjcw MCw3ICs2NzAwLDcgQEAgSFByZXNvbHZlOjpSZXN1bHQgSFByZXNvbHZlOjphZ2dyZWdhdG9yKAog ICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgIHN1YnN0aXR1dGlvbk9wcG9ydHVuaXRp ZXMuZW5kKCkpOwogIApAQCAtODQwLDcgKzY5NCw3IEBACiAgICAgICAgc3Vic3RpdHV0aW9uT3Bw b3J0dW5pdGllcy5iZWdpbigpLCBzdWJzdGl0dXRpb25PcHBvcnR1bml0aWVzLmVuZCgpLAogICAg ICAgIFsmXShjb25zdCBzdGQ6OnBhaXI8SGlnaHNJbnQsIEhpZ2hzSW50PiYgbnoxLAogICAgICAg ICAgICBjb25zdCBzdGQ6OnBhaXI8SGlnaHNJbnQsIEhpZ2hzSW50PiYgbnoyKSB7Ci1AQCAtNzA2 OCw3ICs3MDY4LDcgQEAgSFByZXNvbHZlOjpSZXN1bHQgSFByZXNvbHZlOjpzdHJlbmd0aGVuSQor QEAgLTcxNTAsNyArNzE1MCw3IEBAIEhQcmVzb2x2ZTo6UmVzdWx0IEhQcmVzb2x2ZTo6c3RyZW5n dGhlbkkKICAgICAgICBpZiAobWF4dmlvbGF0aW9uIC0gY29udGludW91c2NvbnRyaWJ1dGlvbiA8 PSBzbWFsbFZhbCB8fCBpbmRpY2VzLmVtcHR5KCkpCiAgICAgICAgICBicmVhazsKICAKQEAgLTg0 OSw4ICs3MDMsOCBAQAogICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHJlZHVjZWRjb3N0 W2kxXSwgaTEpID4KICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihyZWR1Y2VkY29zdFtp Ml0sIGkyKTsKICAgICAgICB9KTsKLS0tLSBIaUdIUy0xLjE0LjAvaGlnaHMvc2ltcGxleC9IRWtr RHVhbFJIUy5jcHAub3JpZwkyMDI2LTA0LTA2IDA4OjM2OjMxLjAwMDAwMDAwMCAtMDYwMAotKysr IEhpR0hTLTEuMTQuMC9oaWdocy9zaW1wbGV4L0hFa2tEdWFsUkhTLmNwcAkyMDI2LTA1LTI3IDE2 OjU0OjI1LjQ4OTgxOTQzMSAtMDYwMAorLS0tIEhpR0hTLTEuMTUuMS9oaWdocy9zaW1wbGV4L0hF a2tEdWFsUkhTLmNwcC5vcmlnCTIwMjYtMDctMDIgMDA6NDI6MzcuMDAwMDAwMDAwIC0wNjAwCisr KysgSGlHSFMtMS4xNS4xL2hpZ2hzL3NpbXBsZXgvSEVra0R1YWxSSFMuY3BwCTIwMjYtMDctMDQg MTA6MDY6MjAuNTIxMjY4MzI2IC0wNjAwCiBAQCAtMTUsNyArMTUsNyBAQAogICNpbmNsdWRlIDxp b3N0cmVhbT4KICAjaW5jbHVkZSA8c2V0PgpAQCAtODg3LDggKzc0MSw4IEBACiAgICBpZiAoKEhp Z2hzSW50KShzZXRQLnNpemUoKSkgPiBjaExpbWl0KSBzZXRQLnJlc2l6ZShjaExpbWl0KTsKICAg ICpjaENvdW50ID0gc3RhdGljX2Nhc3Q8SGlnaHNJbnQ+KHNldFAuc2l6ZSgpKTsKICAgIGZvciAo c2l6ZV90IGkgPSAwOyBpIDwgc2V0UC5zaXplKCk7IGkrKykgY2hJbmRleFtpXSA9IHNldFBbaV0u c2Vjb25kOwotLS0tIEhpR0hTLTEuMTQuMC9oaWdocy9zaW1wbGV4L0hFa2tEdWFsUm93LmNwcC5v cmlnCTIwMjYtMDQtMDYgMDg6MzY6MzEuMDAwMDAwMDAwIC0wNjAwCi0rKysgSGlHSFMtMS4xNC4w L2hpZ2hzL3NpbXBsZXgvSEVra0R1YWxSb3cuY3BwCTIwMjYtMDUtMjcgMTY6NTQ6MjUuNDkwMTE0 OTMyIC0wNjAwCistLS0gSGlHSFMtMS4xNS4xL2hpZ2hzL3NpbXBsZXgvSEVra0R1YWxSb3cuY3Bw Lm9yaWcJMjAyNi0wNy0wMiAwMDo0MjozNy4wMDAwMDAwMDAgLTA2MDAKKysrKyBIaUdIUy0xLjE1 LjEvaGlnaHMvc2ltcGxleC9IRWtrRHVhbFJvdy5jcHAJMjAyNi0wNy0wNCAxMDowNjoyMC41MjE0 NTIyNjkgLTA2MDAKIEBAIC0xMyw3ICsxMyw3IEBACiAgI2luY2x1ZGUgPGNhc3NlcnQ+CiAgI2lu Y2x1ZGUgPGlvc3RyZWFtPgpAQCAtOTA3LDggKzc2MSw4IEBACiAgICBhbmFseXNpcy0+c2ltcGxl eFRpbWVyU3RvcChDaHV6YzRlQ2xvY2spOwogICAgYW5hbHlzaXMtPnNpbXBsZXhUaW1lclN0b3Ao Q2h1emM0Q2xvY2spOwogIAotLS0tIEhpR0hTLTEuMTQuMC9oaWdocy9zaW1wbGV4L0hFa2tQcmlt YWwuY3BwLm9yaWcJMjAyNi0wNC0wNiAwODozNjozMS4wMDAwMDAwMDAgLTA2MDAKLSsrKyBIaUdI Uy0xLjE0LjAvaGlnaHMvc2ltcGxleC9IRWtrUHJpbWFsLmNwcAkyMDI2LTA1LTI3IDE2OjU0OjI1 LjQ5MDQzNzk0NCAtMDYwMAorLS0tIEhpR0hTLTEuMTUuMS9oaWdocy9zaW1wbGV4L0hFa2tQcmlt YWwuY3BwLm9yaWcJMjAyNi0wNy0wMiAwMDo0MjozNy4wMDAwMDAwMDAgLTA2MDAKKysrKyBIaUdI Uy0xLjE1LjEvaGlnaHMvc2ltcGxleC9IRWtrUHJpbWFsLmNwcAkyMDI2LTA3LTA0IDEwOjA2OjIw LjUyMTY5OTU4MCAtMDYwMAogQEAgLTEwLDcgKzEwLDcgQEAKICAgKi8KICAjaW5jbHVkZSAic2lt cGxleC9IRWtrUHJpbWFsLmgiCkBAIC05MzYsOCArNzkwLDggQEAKICAgIGRvdWJsZSBkTWF4QWxw aGEgPSAwLjA7CiAgICBzaXplX3QgaUxhc3QgPSBwaDFTb3J0ZXJULnNpemUoKTsKICAgIGZvciAo c2l6ZV90IGkgPSAwOyBpIDwgcGgxU29ydGVyVC5zaXplKCk7IGkrKykgewotLS0tIEhpR0hTLTEu MTQuMC9oaWdocy9zaW1wbGV4L0hTaW1wbGV4TmxhLmNwcC5vcmlnCTIwMjYtMDQtMDYgMDg6MzY6 MzEuMDAwMDAwMDAwIC0wNjAwCi0rKysgSGlHSFMtMS4xNC4wL2hpZ2hzL3NpbXBsZXgvSFNpbXBs ZXhObGEuY3BwCTIwMjYtMDUtMjcgMTY6NTQ6MjUuNDkxMzk0ODY4IC0wNjAwCistLS0gSGlHSFMt MS4xNS4xL2hpZ2hzL3NpbXBsZXgvSFNpbXBsZXhObGEuY3BwLm9yaWcJMjAyNi0wNy0wMiAwMDo0 MjozNy4wMDAwMDAwMDAgLTA2MDAKKysrKyBIaUdIUy0xLjE1LjEvaGlnaHMvc2ltcGxleC9IU2lt cGxleE5sYS5jcHAJMjAyNi0wNy0wNCAxMDowNjoyMC41MjE5Njk2NDMgLTA2MDAKIEBAIC0xNCw3 ICsxNCw3IEBACiAgCiAgI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC05NjUsOCArODE5LDggQEAKICAg IGZvciAoSGlnaHNJbnQgZW4gPSAwOyBlbiA8IHZlY3Rvci0+cGFja0NvdW50OyBlbisrKSB7CiAg ICAgIEhpZ2hzSW50IGlSb3cgPSBzb3J0ZWRfaW5kZXhbZW5dOwogICAgICBpZiAoZW4gJSA1ID09 IDApIHByaW50ZigiXG4iKTsKLS0tLSBIaUdIUy0xLjE0LjAvaGlnaHMvdXRpbC9IRmFjdG9yLmNw cC5vcmlnCTIwMjYtMDUtMjcgMTY6NTE6MTcuMTY1MTk2MzM4IC0wNjAwCi0rKysgSGlHSFMtMS4x NC4wL2hpZ2hzL3V0aWwvSEZhY3Rvci5jcHAJMjAyNi0wNS0yNyAxNjo1NDoyNS40OTgxMDgyNTQg LTA2MDAKKy0tLSBIaUdIUy0xLjE1LjEvaGlnaHMvdXRpbC9IRmFjdG9yLmNwcC5vcmlnCTIwMjYt MDctMTMgMDk6NTQ6MTUuNjQ2NjkwNzY4IC0wNjAwCisrKysgSGlHSFMtMS4xNS4xL2hpZ2hzL3V0 aWwvSEZhY3Rvci5jcHAJMjAyNi0wNy0xMyAwOTo1NDoyNi4wODgyMDM2NzMgLTA2MDAKIEBAIC0x Myw3ICsxMyw3IEBACiAgI2luY2x1ZGUgPGNhc3NlcnQ+CiAgI2luY2x1ZGUgPGlvc3RyZWFtPgoK ZGlmZiAtLWdpdCBhL2NvaW4tb3ItSGlHSFMuc3BlYyBiL2NvaW4tb3ItSGlHSFMuc3BlYwppbmRl eCAxNzI3NjI4Li5lYTlkNGIxIDEwMDY0NAotLS0gYS9jb2luLW9yLUhpR0hTLnNwZWMKKysrIGIv Y29pbi1vci1IaUdIUy5zcGVjCkBAIC01LDEyICs1LDEyIEBACiAlYmNvbmQgY3Rlc3QgMQogCiAj IFRoZSBidWlsZCBydW5zIGdpdCB0byBnZXQgYSBjb21taXQsIGJ1dCB3ZSBkb24ndCBoYXZlIGEg Z2l0IGNoZWNrb3V0Ci0lZ2xvYmFsIGNvbW1pdCAgN2RmMDc4NmRlCislZ2xvYmFsIGNvbW1pdCAg MDQwMjRkNzAxCiAKICVnbG9iYWwgZ2l0dXJsICBodHRwczovL2dpdGh1Yi5jb20vRVJHTy1Db2Rl L0hpR0hTCiAKIE5hbWU6ICAgICAgICAgICBjb2luLW9yLUhpR0hTCi1WZXJzaW9uOiAgICAgICAg MS4xNC4wCitWZXJzaW9uOiAgICAgICAgMS4xNS4xCiBSZWxlYXNlOiAgICAgICAgJWF1dG9yZWxl YXNlCiBTdW1tYXJ5OiAgICAgICAgTGluZWFyIG9wdGltaXphdGlvbiBzb2Z0d2FyZQogCkBAIC0y NCwyMyArMjQsOCBAQCBQYXRjaDogICAgICAgICAgJXtuYW1lfS1ycGF0aC5wYXRjaAogUGF0Y2g6 ICAgICAgICAgICV7bmFtZX0tcG9wY291bnQucGF0Y2gKICMgRml4IG91dC1vZi1ib3VuZHMgdmVj dG9yIGFjY2Vzc2VzCiBQYXRjaDogICAgICAgICAgJXtuYW1lfS12ZWN0b3IucGF0Y2gKLSMgVW5i dW5kbGUgYW1kLCBjbGkxMSwgbWV0aXMsIHBkcXNvcnQsIGFuZCB6c3RyCisjIFVuYnVuZGxlIGNs aTExLCBwZHFzb3J0LCBhbmQgenN0cgogUGF0Y2g6ICAgICAgICAgICV7bmFtZX0tdW5idW5kbGUu cGF0Y2gKLSMgRml4IDI5NTcKLSMgaHR0cHM6Ly9naXRodWIuY29tL0VSR08tQ29kZS9IaUdIUy9w dWxsLzI5NjEKLSMKLSMgRml4ZXM6Ci0jCi0jIC0gTUlQIGluY29ycmVjdCBzb2x1dGlvbiBpbiBI aUdIUyAxLjE0OgotIyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9FUkdPLUNvZGUvSGlHSFMvaXNzdWVz LzI5NTcKLSMgLSBoaWdoc3B5IHYxLjE0IHJlZ3Jlc3Npb246IHByZXNvbHZlIGluIHRveSBleGFt cGxlIGlzIHJlYWNoaW5nIG5vbi1vcHRpbWFsCi0jICAgc29sdXRpb246IGh0dHBzOi8vZ2l0aHVi LmNvbS9FUkdPLUNvZGUvSGlHSFMvaXNzdWVzLzMwMDIKLSMgLSBUZXN0IHJlZ3Jlc3Npb25zIGlu IDMuMy4wIHdpdGggSGlHSFMgMS4xNDoKLSMgICBodHRwczovL2dpdGh1Yi5jb20vY29pbi1vci9w dWxwL2lzc3Vlcy85MDQKLSMgLSBweXRob24tcHVscDogRlRCRlMgaW4gRmVkb3JhIFJhd2hpZGU6 IHB1bHAuY29uc3RhbnRzLlB1bHBFcnJvcjogVGVzdHMKLSMgICBmYWlsZWQgZm9yIHNvbHZlciA8 cHVscC5hcGlzLmhpZ2hzX2FwaS5IaUdIU19DTUQgb2JqZWN0IGF0IDB4N2YzOWYyODNjYjAwPjoK LSMgICB2YXIgeCA9PSAyLjAgIT0gMzogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3df YnVnLmNnaT9pZD0yNDY2NjYxCi1QYXRjaDogICAgICAgICAgJXtuYW1lfS1pc3N1ZS0yOTU3LnBh dGNoCiAjIFBhdGNoIGNvdXJ0ZXN5IG9mIEdlbnRvbyB0byBmaXggdGhlIHRlc3RzIG9uIHNvbWUg YXJjaGVzCiBQYXRjaDogICAgICAgICAgJXtuYW1lfS1pZ25vcmUtdGVzdC1pdGVyYXRpb25zLnBh dGNoCiAKQEAgLTYwLDE1ICs0NSwxMCBAQCBCdWlsZFJlcXVpcmVzOiAgYm9vc3QtZGV2ZWwKIEJ1 aWxkUmVxdWlyZXM6ICBjYXRjaDItZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICBjbGkxMS1zdGF0aWMK IEJ1aWxkUmVxdWlyZXM6ICBjbWFrZQotQnVpbGRSZXF1aXJlczogIGNtYWtlKEFNRCkKLUJ1aWxk UmVxdWlyZXM6ICBkb2N0ZXN0LXN0YXRpYwogQnVpbGRSZXF1aXJlczogIGdjYy1jKysKIEJ1aWxk UmVxdWlyZXM6ICBoZWxwMm1hbgogQnVpbGRSZXF1aXJlczogIGxpYmF0b21pYwotQnVpbGRSZXF1 aXJlczogIG1ldGlzLWRldmVsCiBCdWlsZFJlcXVpcmVzOiAgbmluamEtYnVpbGQKLUJ1aWxkUmVx dWlyZXM6ICBwa2djb25maWcoY29pbmRhdGFuZXRsaWIpCi1CdWlsZFJlcXVpcmVzOiAgcGtnY29u ZmlnKGNvaW5kYXRhc2FtcGxlKQogQnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyhmbGV4aWJsYXMp CiBCdWlsZFJlcXVpcmVzOiAgcHl0aG9uMy1kZXZlbAogQnVpbGRSZXF1aXJlczogIHpzdHItc3Rh dGljCkBAIC04Myw2ICs2MywxMyBAQCBQcm92aWRlczogICAgICAgYnVuZGxlZChGaWxlcmVhZGVy TFApCiAjIGh0dHBzOi8vcGVvcGxlLnNjLmZzdS5lZHUvfmpidXJrYXJkdC9mNzdfc3JjL3NwYXJz ZXBhay9zcGFyc2VwYWsuaHRtbAogUHJvdmlkZXM6ICAgICAgIGJ1bmRsZWQocmNtKQogCisjIElu IHRoZSBwYXN0LCB3ZSB1bmJ1bmRsZWQgYm90aCBBTUQgKHBhcnQgb2Ygc3VpdGVzcGFyc2UpIGFu ZCBtZXRpcy4gIEhvd2V2ZXIsCisjIHdpdGggdmVyc2lvbiAxLjE1LjEsIHdlIHNlZSBtdWx0aXBs ZSB0ZXN0IGZhaWx1cmVzIHdoZW4gdW5idW5kbGluZyBlaXRoZXIuCisjIFRoZSBidW5kbGVkIHZl cnNpb25zIGFyZSBuZXdlciB0aGFuIHRob3NlIGF2YWlsYWJsZSBpbiBSYXdoaWRlLiAgSWYgZWl0 aGVyCisjIHBhY2thZ2UgaXMgdXBkYXRlZCBpbiBSYXdoaWRlLCBzZWUgaWYgd2UgY2FuIHVuYnVu ZGxlIGFnYWluLgorUHJvdmlkZXM6ICAgICAgIGJ1bmRsZWQobWV0aXMpID0gNS4yLjEKK1Byb3Zp ZGVzOiAgICAgICBidW5kbGVkKHN1aXRlc3BhcnNlKSA9IDcuMTIuMQorCiAlZGVzY3JpcHRpb24K IEhpR0hTIGlzIGEgaGlnaCBwZXJmb3JtYW5jZSBzZXJpYWwgYW5kIHBhcmFsbGVsIHNvbHZlciBm b3IgbGFyZ2Ugc2NhbGUgc3BhcnNlCiBsaW5lYXIgb3B0aW1pemF0aW9uIHByb2JsZW1zIG9mIHRo ZSBmb3JtCkBAIC0xMjcsMTEgKzExNCwxMSBAQCBUaGlzIHBhY2thZ2UgY29udGFpbnMgYSBQeXRo b24gMyBpbnRlcmZhY2UgdG8gY29pbi1vci1IaUdIUy4KIHNlZCAtaSAncyxuL2EsJXtjb21taXR9 LCcgQ01ha2VMaXN0cy50eHQKIAogIyBVbmJ1bmRsZSBjYXRjaAotcm0gZXh0ZXJuL2NhdGNoLmhw cAotbG4gLXMgJXtfaW5jbHVkZWRpcn0vY2F0Y2gyL2NhdGNoLmhwcCBleHRlcm4vY2F0Y2guaHBw CitybSBleHRlcm4vY2F0Y2gvY2F0Y2guaHBwCitsbiAtcyAle19pbmNsdWRlZGlyfS9jYXRjaDIv Y2F0Y2guaHBwIGV4dGVybi9jYXRjaC9jYXRjaC5ocHAKIAotIyBFbnN1cmUgdGhlIGJ1bmRsZWQg YW1kLCBjbGkxMSwgbWV0aXMsIHBkcXNvcnQsIGFuZCB6c3RyIGFyZSBub3QgdXNlZAotcm0gLWZy IGV4dGVybi97Q0xJMTEuaHBwLGFtZCxtZXRpcyxwZHFzb3J0LHpzdHJ9CisjIEVuc3VyZSB0aGUg YnVuZGxlZCBjbGkxMSwgcGRxc29ydCwgYW5kIHpzdHIgYXJlIG5vdCB1c2VkCitybSAtZnIgZXh0 ZXJuL3tjbGkxMSxwZHFzb3J0LHpzdHJ9CiAKICVnZW5lcmF0ZV9idWlsZHJlcXVpcmVzCiAlcHlw cm9qZWN0X2J1aWxkcmVxdWlyZXMgLXggdGVzdApAQCAtMTU3LDkgKzE0NCw5IEBAIHJtIC1mciAl e2J1aWxkcm9vdH0le19kb2NkaXJ9CiAKICMgSW5zdGVhZCBvZiBsaW5raW5nIHdpdGggYW5kIGlu c3RhbGxpbmcgYSBwcml2YXRlIGNvcHkgb2YgdGhlIGxpYnJhcnksCiAjIGZpeCB1cCB0aGUgaW5z dGFsbGVkIHB5dGhvbiB0cmVlIHRvIHVzZSB0aGUgaW5zdGFsbGVkIGxpYnJhcnkKLWNkIGhpZ2hz Ci1nKysgJXtidWlsZF9jeHhmbGFnc30gLWZQSUMgLXNoYXJlZCAtSSAuIC1JIC4uLyV7X3ZwYXRo X2J1aWxkZGlyfSBcCi0gIC1JICV7X2luY2x1ZGVkaXJ9L3B5dGhvbiV7cHl0aG9uM192ZXJzaW9u fSBoaWdoc19iaW5kaW5ncy5jcHAgXAorY2QgaGlnaHNweQorZysrICV7YnVpbGRfY3h4ZmxhZ3N9 IC1mUElDIC1zaGFyZWQgLUkgLi4vaGlnaHMgLUkgLi4vJXtfdnBhdGhfYnVpbGRkaXJ9IFwKKyAg LUkgLi4vZXh0ZXJuIC1JICV7X2luY2x1ZGVkaXJ9L3B5dGhvbiV7cHl0aG9uM192ZXJzaW9ufSBo aWdoc19iaW5kaW5ncy5jcHAgXAogICAtbyAle2J1aWxkcm9vdH0le3B5dGhvbjNfc2l0ZWFyY2h9 L2hpZ2hzcHkvX2NvcmUle3B5dGhvbjNfZXh0X3N1ZmZpeH0gXAogICAle2J1aWxkX2xkZmxhZ3N9 IC1MICV7YnVpbGRyb290fSV7X2xpYmRpcn0gLWxoaWdocwogY2QgLQoKZGlmZiAtLWdpdCBhL3Nv dXJjZXMgYi9zb3VyY2VzCmluZGV4IGZlYmI4N2IuLmUyODk1YWEgMTAwNjQ0Ci0tLSBhL3NvdXJj ZXMKKysrIGIvc291cmNlcwpAQCAtMSArMSBAQAotU0hBNTEyIChIaUdIUy0xLjE0LjAudGFyLmd6 KSA9IGQ0YzJkMDliZjQxMzg0YTU4YTA0NTI4ZmZhYWMyMjNlZWU0MGRlYTRhMWNhZGFlYTM2OTc5 MWY2ZThkMWFhNjFmZjNmY2U1N2U3Yzk3Y2I1ZjRiZWYwZjEzMDU2ODEwNjZlOGVmNzQ4M2Y0NDcx NzcwMjk1Zjk1YjllYzMzN2Y3CitTSEE1MTIgKEhpR0hTLTEuMTUuMS50YXIuZ3opID0gMGVhNDA3 Nzg0YmM2YzhlMzFjNzJmYmNkY2FiMjAxZThhN2NjN2RlYmJjYTU3NTA0ZTc0MTc3NjU4MjA4MTUx ZTkwNjM3ZTVmYjFlMGNkZjFiMWFlNmI2NzdlNzg2NWU3Nzc3MWVjMDI1YjE3ZjgyMjNmNzRkMDBm YzY0MjA1NDYK