From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH RFC 55/55] x86/mm: drop _new suffix from page table APIs Date: Thu, 7 Feb 2019 16:44:56 +0000 Message-ID: <20190207164456.9260-56-wei.liu2@citrix.com> References: <20190207164456.9260-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1grn0v-0000j2-7W for xen-devel@lists.xenproject.org; Thu, 07 Feb 2019 16:59:01 +0000 In-Reply-To: <20190207164456.9260-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org U2lnbmVkLW9mZi1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tClBhdGNoIGdl bmVyYXRlZCB3aXRoCgpmaW5kIC1uYW1lICcqLltjaF0nIC1leGVjIHNlZCAtaSAncy8kT0xELyRO RVcvZycKLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgIHwgICA0ICstCiB4ZW4vYXJj aC94ODYvZG9tYWluX3BhZ2UuYyAgIHwgICAyICstCiB4ZW4vYXJjaC94ODYvZWZpL3J1bnRpbWUu aCAgIHwgICA0ICstCiB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgIHwgMTY0ICsrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9wdi9kb20w X2J1aWxkLmMgfCAgMjggKysrKy0tLS0KIHhlbi9hcmNoL3g4Ni9wdi9zaGltLmMgICAgICAgfCAg MTIgKystLQogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICB8ICAgOCArLS0KIHhlbi9hcmNo L3g4Ni9zbXBib290LmMgICAgICAgfCAgNzQgKysrKysrKysrLS0tLS0tLS0tLQogeGVuL2FyY2gv eDg2L3g4Nl82NC9tbS5jICAgICB8IDEzNiArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLQogeGVuL2NvbW1vbi9lZmkvYm9vdC5jICAgICAgICB8ICA0MiArKysrKy0tLS0tLQogeGVu L2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAgICB8ICAxOCArKy0tLQogMTEgZmlsZXMgY2hhbmdlZCwg MjQ2IGluc2VydGlvbnMoKyksIDI0NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKaW5kZXggNjAzNDk1ZTU1YS4u ZTBhYzc0YTkxNCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCisrKyBiL3hlbi9h cmNoL3g4Ni9kb21haW4uYwpAQCAtMTU5NywxMSArMTU5NywxMSBAQCB2b2lkIHBhcmF2aXJ0X2N0 eHRfc3dpdGNoX3RvKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICByb290X3BnZW50cnlfdCAqcnB0 OwogCiAgICAgICAgIG1hcGNhY2hlX292ZXJyaWRlX2N1cnJlbnQoSU5WQUxJRF9WQ1BVKTsKLSAg ICAgICAgcnB0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KHJwdF9tZm4pOworICAgICAgICBycHQg PSBtYXBfeGVuX3BhZ2V0YWJsZShycHRfbWZuKTsKICAgICAgICAgcnB0W3Jvb3RfdGFibGVfb2Zm c2V0KFBFUkRPTUFJTl9WSVJUX1NUQVJUKV0gPQogICAgICAgICAgICAgbDRlX2Zyb21fcGFnZSh2 LT5kb21haW4tPmFyY2gucGVyZG9tYWluX2wzX3BnLAogICAgICAgICAgICAgICAgICAgICAgICAg ICBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7Ci0gICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVX KHJwdCk7CisgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUocnB0KTsKICAgICAgICAgbWFwY2Fj aGVfb3ZlcnJpZGVfY3VycmVudChOVUxMKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9kb21haW5fcGFnZS5jIGIveGVuL2FyY2gveDg2L2RvbWFpbl9wYWdlLmMKaW5kZXggY2Zj ZmZkMzVmMy4uOWVhNzRiNDU2YyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbl9wYWdl LmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbl9wYWdlLmMKQEAgLTM0Myw3ICszNDMsNyBAQCBt Zm5fdCBkb21haW5fcGFnZV9tYXBfdG9fbWZuKGNvbnN0IHZvaWQgKnB0cikKICAgICAgICAgbDFf cGdlbnRyeV90ICpwbDFlID0gdmlydF90b194ZW5fbDFlKHZhKTsKICAgICAgICAgQlVHX09OKCFw bDFlKTsKICAgICAgICAgbDFlID0gKnBsMWU7Ci0gICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVf TkVXKHBsMWUpOworICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKHBsMWUpOwogICAgIH0KICAg ICBlbHNlCiAgICAgewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2VmaS9ydW50aW1lLmggYi94 ZW4vYXJjaC94ODYvZWZpL3J1bnRpbWUuaAppbmRleCAyNzdkMjM3OTUzLi5jYTE1YzVhYWI3IDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZWZpL3J1bnRpbWUuaAorKysgYi94ZW4vYXJjaC94ODYv ZWZpL3J1bnRpbWUuaApAQCAtMTAsOSArMTAsOSBAQCB2b2lkIGVmaV91cGRhdGVfbDRfcGd0YWJs ZSh1bnNpZ25lZCBpbnQgbDRpZHgsIGw0X3BnZW50cnlfdCBsNGUpCiAgICAgewogICAgICAgICBs NF9wZ2VudHJ5X3QgKmw0dDsKIAotICAgICAgICBsNHQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXco ZWZpX2w0X21mbik7CisgICAgICAgIGw0dCA9IG1hcF94ZW5fcGFnZXRhYmxlKGVmaV9sNF9tZm4p OwogICAgICAgICBsNGVfd3JpdGUobDR0ICsgbDRpZHgsIGw0ZSk7Ci0gICAgICAgIFVOTUFQX1hF Tl9QQUdFVEFCTEVfTkVXKGw0dCk7CisgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDR0KTsK ICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2Fy Y2gveDg2L21tLmMKaW5kZXggOTdkZDZhN2Y2My4uOTQxNDYwYTk0ZSAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAgLTM2NiwyMiArMzY2LDIy IEBAIHZvaWQgX19pbml0IGFyY2hfaW5pdF9tZW1vcnkodm9pZCkKICAgICAgICAgICAgIEFTU0VS VChyb290X3BndF9wdl94ZW5fc2xvdHMgPCBST09UX1BBR0VUQUJMRV9QVl9YRU5fU0xPVFMpOwog ICAgICAgICAgICAgaWYgKCBsNF90YWJsZV9vZmZzZXQoc3BsaXRfdmEpID09IGw0X3RhYmxlX29m ZnNldChzcGxpdF92YSAtIDEpICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtZm5f dCBsM3RhYl9tZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlX25ldygpOworICAgICAgICAgICAgICAg IG1mbl90IGwzdGFiX21mbiA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKIAogICAgICAgICAgICAg ICAgIGlmICggIW1mbl9lcShsM3RhYl9tZm4sIElOVkFMSURfTUZOKSApCiAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICBsM19wZ2VudHJ5X3QgKmwzaWRsZSA9Ci0gICAgICAg ICAgICAgICAgICAgICAgICBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisgICAgICAgICAgICAgICAg ICAgICAgICBtYXBfeGVuX3BhZ2V0YWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs NGVfZ2V0X21mbihpZGxlX3BnX3RhYmxlW2w0X3RhYmxlX29mZnNldChzcGxpdF92YSldKSk7Ci0g ICAgICAgICAgICAgICAgICAgIGwzX3BnZW50cnlfdCAqbDN0YWIgPSBtYXBfeGVuX3BhZ2V0YWJs ZV9uZXcobDN0YWJfbWZuKTsKKyAgICAgICAgICAgICAgICAgICAgbDNfcGdlbnRyeV90ICpsM3Rh YiA9IG1hcF94ZW5fcGFnZXRhYmxlKGwzdGFiX21mbik7CiAKICAgICAgICAgICAgICAgICAgICAg Zm9yICggaSA9IDA7IGkgPCBsM190YWJsZV9vZmZzZXQoc3BsaXRfdmEpOyArK2kgKQogICAgICAg ICAgICAgICAgICAgICAgICAgbDN0YWJbaV0gPSBsM2lkbGVbaV07CiAgICAgICAgICAgICAgICAg ICAgIGZvciAoIDsgaSA8IEwzX1BBR0VUQUJMRV9FTlRSSUVTOyArK2kgKQogICAgICAgICAgICAg ICAgICAgICAgICAgbDN0YWJbaV0gPSBsM2VfZW1wdHkoKTsKICAgICAgICAgICAgICAgICAgICAg c3BsaXRfbDRlID0gbDRlX2Zyb21fbWZuKGwzdGFiX21mbiwgX19QQUdFX0hZUEVSVklTT1JfUlcp OwotICAgICAgICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsM2lkbGUpOwot ICAgICAgICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsM3RhYik7CisgICAg ICAgICAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDNpZGxlKTsKKyAgICAgICAgICAg ICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsM3RhYik7CiAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgKytyb290X3BndF9wdl94 ZW5fc2xvdHM7CkBAIC00NzIzLDcgKzQ3MjMsNyBAQCBpbnQgbW1jZmdfaW50ZXJjZXB0X3dyaXRl KAogICAgIHJldHVybiBYODZFTVVMX09LQVk7CiB9CiAKLW1mbl90IGFsbG9jX3hlbl9wYWdldGFi bGVfbmV3KHZvaWQpCittZm5fdCBhbGxvY194ZW5fcGFnZXRhYmxlKHZvaWQpCiB7CiAgICAgaWYg KCBzeXN0ZW1fc3RhdGUgIT0gU1lTX1NUQVRFX2Vhcmx5X2Jvb3QgKQogICAgIHsKQEAgLTQ3MzYs MjAgKzQ3MzYsMjAgQEAgbWZuX3QgYWxsb2NfeGVuX3BhZ2V0YWJsZV9uZXcodm9pZCkKICAgICBy ZXR1cm4gYWxsb2NfYm9vdF9wYWdlcygxLCAxKTsKIH0KIAotdm9pZCAqbWFwX3hlbl9wYWdldGFi bGVfbmV3KG1mbl90IG1mbikKK3ZvaWQgKm1hcF94ZW5fcGFnZXRhYmxlKG1mbl90IG1mbikKIHsK ICAgICByZXR1cm4gbWFwX2RvbWFpbl9wYWdlKG1mbik7CiB9CiAKIC8qIHYgY2FuIHBvaW50IHRv IGFuIGVudHJ5IHdpdGhpbiBhIHRhYmxlIG9yIGJlIE5VTEwgKi8KLXZvaWQgdW5tYXBfeGVuX3Bh Z2V0YWJsZV9uZXcodm9pZCAqdikKK3ZvaWQgdW5tYXBfeGVuX3BhZ2V0YWJsZSh2b2lkICp2KQog ewogICAgIGlmICggdiApCiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKChjb25zdCB2b2lkICop KCh1bnNpZ25lZCBsb25nKXYgJiBQQUdFX01BU0spKTsKIH0KIAogLyogbWZuIGNhbiBiZSBJTlZB TElEX01GTiAqLwotdm9pZCBmcmVlX3hlbl9wYWdldGFibGVfbmV3KG1mbl90IG1mbikKK3ZvaWQg ZnJlZV94ZW5fcGFnZXRhYmxlKG1mbl90IG1mbikKIHsKICAgICBpZiAoIHN5c3RlbV9zdGF0ZSAh PSBTWVNfU1RBVEVfZWFybHlfYm9vdCAmJiAhbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAg ICAgICAgZnJlZV9kb21oZWFwX3BhZ2UobWZuX3RvX3BhZ2UobWZuKSk7CkBAIC00NzczLDExICs0 NzczLDExIEBAIHN0YXRpYyBsM19wZ2VudHJ5X3QgKnZpcnRfdG9feGVuX2wzZSh1bnNpZ25lZCBs b25nIHYpCiAgICAgICAgIGwzX3BnZW50cnlfdCAqbDN0OwogICAgICAgICBtZm5fdCBtZm47CiAK LSAgICAgICAgbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZV9uZXcoKTsKKyAgICAgICAgbWZuID0g YWxsb2NfeGVuX3BhZ2V0YWJsZSgpOwogICAgICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURf TUZOKSApCiAgICAgICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICBsM3QgPSBtYXBfeGVuX3Bh Z2V0YWJsZV9uZXcobWZuKTsKKyAgICAgICAgbDN0ID0gbWFwX3hlbl9wYWdldGFibGUobWZuKTsK IAogICAgICAgICBpZiAoIGxvY2tpbmcgKQogICAgICAgICAgICAgc3Bpbl9sb2NrKCZtYXBfcGdk aXJfbG9jayk7CkBAIC00Nzk3LDE1ICs0Nzk3LDE1IEBAIHN0YXRpYyBsM19wZ2VudHJ5X3QgKnZp cnRfdG9feGVuX2wzZSh1bnNpZ25lZCBsb25nIHYpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT U0VSVCghcGwzZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1mbl9lcShtZm4sIElOVkFMSURfTUZO KSk7Ci0gICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsM3QpOwotICAgICAgICAg ICAgZnJlZV94ZW5fcGFnZXRhYmxlX25ldyhtZm4pOworICAgICAgICAgICAgVU5NQVBfWEVOX1BB R0VUQUJMRShsM3QpOworICAgICAgICAgICAgZnJlZV94ZW5fcGFnZXRhYmxlKG1mbik7CiAgICAg ICAgIH0KICAgICB9CiAKICAgICBpZiAoICFwbDNlICkKICAgICB7CiAgICAgICAgIEFTU0VSVChs NGVfZ2V0X2ZsYWdzKCpwbDRlKSAmIF9QQUdFX1BSRVNFTlQpOwotICAgICAgICBwbDNlID0gKGwz X3BnZW50cnlfdCAqKW1hcF94ZW5fcGFnZXRhYmxlX25ldyhsNGVfZ2V0X21mbigqcGw0ZSkpCisg ICAgICAgIHBsM2UgPSAobDNfcGdlbnRyeV90ICopbWFwX3hlbl9wYWdldGFibGUobDRlX2dldF9t Zm4oKnBsNGUpKQogICAgICAgICAgICAgKyBsM190YWJsZV9vZmZzZXQodik7CiAgICAgfQogCkBA IC00ODMyLDExICs0ODMyLDExIEBAIHN0YXRpYyBsMl9wZ2VudHJ5X3QgKnZpcnRfdG9feGVuX2wy ZSh1bnNpZ25lZCBsb25nIHYpCiAgICAgICAgIGwyX3BnZW50cnlfdCAqbDJ0OwogICAgICAgICBt Zm5fdCBtZm47CiAKLSAgICAgICAgbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZV9uZXcoKTsKKyAg ICAgICAgbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgpOwogICAgICAgICBpZiAoIG1mbl9lcSht Zm4sIElOVkFMSURfTUZOKSApCiAgICAgICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICBsMnQg PSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobWZuKTsKKyAgICAgICAgbDJ0ID0gbWFwX3hlbl9wYWdl dGFibGUobWZuKTsKIAogICAgICAgICBpZiAoIGxvY2tpbmcgKQogICAgICAgICAgICAgc3Bpbl9s b2NrKCZtYXBfcGdkaXJfbG9jayk7CkBAIC00ODU0LDggKzQ4NTQsOCBAQCBzdGF0aWMgbDJfcGdl bnRyeV90ICp2aXJ0X3RvX3hlbl9sMmUodW5zaWduZWQgbG9uZyB2KQogICAgICAgICB7CiAgICAg ICAgICAgICBBU1NFUlQoIXBsMmUpOwogICAgICAgICAgICAgQVNTRVJUKCFtZm5fZXEobWZuLCBJ TlZBTElEX01GTikpOwotICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDJ0KTsK LSAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJsZV9uZXcobWZuKTsKKyAgICAgICAgICAgIFVO TUFQX1hFTl9QQUdFVEFCTEUobDJ0KTsKKyAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJsZSht Zm4pOwogICAgICAgICB9CiAgICAgfQogCkBAIC00ODY0LDEyICs0ODY0LDEyIEBAIHN0YXRpYyBs Ml9wZ2VudHJ5X3QgKnZpcnRfdG9feGVuX2wyZSh1bnNpZ25lZCBsb25nIHYpCiAgICAgaWYgKCAh cGwyZSApCiAgICAgewogICAgICAgICBBU1NFUlQobDNlX2dldF9mbGFncygqcGwzZSkgJiBfUEFH RV9QUkVTRU5UKTsKLSAgICAgICAgcGwyZSA9IChsMl9wZ2VudHJ5X3QgKiltYXBfeGVuX3BhZ2V0 YWJsZV9uZXcobDNlX2dldF9tZm4oKnBsM2UpKQorICAgICAgICBwbDJlID0gKGwyX3BnZW50cnlf dCAqKW1hcF94ZW5fcGFnZXRhYmxlKGwzZV9nZXRfbWZuKCpwbDNlKSkKICAgICAgICAgICAgICsg bDJfdGFibGVfb2Zmc2V0KHYpOwogICAgIH0KIAogIG91dDoKLSAgICBVTk1BUF9YRU5fUEFHRVRB QkxFX05FVyhwbDNlKTsKKyAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKHBsM2UpOwogICAgIHJldHVy biBwbDJlOwogfQogCkBAIC00ODg4LDExICs0ODg4LDExIEBAIGwxX3BnZW50cnlfdCAqdmlydF90 b194ZW5fbDFlKHVuc2lnbmVkIGxvbmcgdikKICAgICAgICAgbDFfcGdlbnRyeV90ICpsMXQ7CiAg ICAgICAgIG1mbl90IG1mbjsKIAotICAgICAgICBtZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlX25l dygpOworICAgICAgICBtZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlKCk7CiAgICAgICAgIGlmICgg bWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgICAgIGdvdG8gb3V0OwogCi0gICAg ICAgIGwxdCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhtZm4pOworICAgICAgICBsMXQgPSBtYXBf eGVuX3BhZ2V0YWJsZShtZm4pOwogCiAgICAgICAgIGlmICggbG9ja2luZyApCiAgICAgICAgICAg ICBzcGluX2xvY2soJm1hcF9wZ2Rpcl9sb2NrKTsKQEAgLTQ5MTAsOCArNDkxMCw4IEBAIGwxX3Bn ZW50cnlfdCAqdmlydF90b194ZW5fbDFlKHVuc2lnbmVkIGxvbmcgdikKICAgICAgICAgewogICAg ICAgICAgICAgQVNTRVJUKCFwbDFlKTsKICAgICAgICAgICAgIEFTU0VSVCghbWZuX2VxKG1mbiwg SU5WQUxJRF9NRk4pKTsKLSAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKGwxdCk7 Ci0gICAgICAgICAgICBmcmVlX3hlbl9wYWdldGFibGVfbmV3KG1mbik7CisgICAgICAgICAgICBV Tk1BUF9YRU5fUEFHRVRBQkxFKGwxdCk7CisgICAgICAgICAgICBmcmVlX3hlbl9wYWdldGFibGUo bWZuKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDkyMCwxMiArNDkyMCwxMiBAQCBsMV9wZ2Vu dHJ5X3QgKnZpcnRfdG9feGVuX2wxZSh1bnNpZ25lZCBsb25nIHYpCiAgICAgaWYgKCAhcGwxZSAp CiAgICAgewogICAgICAgICBBU1NFUlQobDJlX2dldF9mbGFncygqcGwyZSkgJiBfUEFHRV9QUkVT RU5UKTsKLSAgICAgICAgcGwxZSA9IChsMV9wZ2VudHJ5X3QgKiltYXBfeGVuX3BhZ2V0YWJsZV9u ZXcobDJlX2dldF9tZm4oKnBsMmUpKQorICAgICAgICBwbDFlID0gKGwxX3BnZW50cnlfdCAqKW1h cF94ZW5fcGFnZXRhYmxlKGwyZV9nZXRfbWZuKCpwbDJlKSkKICAgICAgICAgICAgICsgbDFfdGFi bGVfb2Zmc2V0KHYpOwogICAgIH0KIAogIG91dDoKLSAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05F VyhwbDJlKTsKKyAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKHBsMmUpOwogICAgIHJldHVybiBwbDFl OwogfQogCkBAIC01MDA0LDcgKzUwMDQsNyBAQCBpbnQgbWFwX3BhZ2VzX3RvX3hlbigKICAgICAg ICAgICAgICAgICAgICAgbDJfcGdlbnRyeV90ICpsMnQ7CiAgICAgICAgICAgICAgICAgICAgIG1m bl90IGwydF9tZm4gPSBsM2VfZ2V0X21mbihvbDNlKTsKIAotICAgICAgICAgICAgICAgICAgICBs MnQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDJ0X21mbik7CisgICAgICAgICAgICAgICAgICAg IGwydCA9IG1hcF94ZW5fcGFnZXRhYmxlKGwydF9tZm4pOwogCiAgICAgICAgICAgICAgICAgICAg IGZvciAoIGkgPSAwOyBpIDwgTDJfUEFHRVRBQkxFX0VOVFJJRVM7IGkrKyApCiAgICAgICAgICAg ICAgICAgICAgIHsKQEAgLTUwMTksMTAgKzUwMTksMTAgQEAgaW50IG1hcF9wYWdlc190b194ZW4o CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDFfcGdlbnRyeV90ICpsMXQ7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbDF0X21mbiA9IGwyZV9nZXRfbWZuKG9sMmUpOwog Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbDF0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3 KGwxdF9tZm4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwxdCA9IG1hcF94ZW5fcGFn ZXRhYmxlKGwxdF9tZm4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGogPSAw OyBqIDwgTDFfUEFHRVRBQkxFX0VOVFJJRVM7IGorKyApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZsdXNoX2ZsYWdzKGwxZV9nZXRfZmxhZ3MobDF0W2pdKSk7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDF0KTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwxdCk7CiAgICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg ICAgZmx1c2hfYXJlYSh2aXJ0LCBmbHVzaF9mbGFncyk7CkBAIC01MDMxLDkgKzUwMzEsOSBAQCBp bnQgbWFwX3BhZ2VzX3RvX3hlbigKICAgICAgICAgICAgICAgICAgICAgICAgIG9sMmUgPSBsMnRb aV07CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIChsMmVfZ2V0X2ZsYWdzKG9sMmUpICYg X1BBR0VfUFJFU0VOVCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShsMmVfZ2V0 X2ZsYWdzKG9sMmUpICYgX1BBR0VfUFNFKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnJlZV94ZW5fcGFnZXRhYmxlX25ldyhsMmVfZ2V0X21mbihvbDJlKSk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZnJlZV94ZW5fcGFnZXRhYmxlKGwyZV9nZXRfbWZuKG9sMmUpKTsKICAg ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBmcmVlX3hlbl9wYWdldGFi bGVfbmV3KGwydF9tZm4pOworICAgICAgICAgICAgICAgICAgICBmcmVlX3hlbl9wYWdldGFibGUo bDJ0X21mbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC01MDcyLDE0 ICs1MDcyLDE0IEBAIGludCBtYXBfcGFnZXNfdG9feGVuKAogICAgICAgICAgICAgICAgIGdvdG8g ZW5kX29mX2xvb3A7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1mbiA9IGFsbG9jX3hl bl9wYWdldGFibGVfbmV3KCk7CisgICAgICAgICAgICBtZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxl KCk7CiAgICAgICAgICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCiAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJjID09IC1FTk9NRU0pOwogICAgICAgICAg ICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBsMnQgPSBtYXBf eGVuX3BhZ2V0YWJsZV9uZXcobWZuKTsKKyAgICAgICAgICAgIGwydCA9IG1hcF94ZW5fcGFnZXRh YmxlKG1mbik7CiAKICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTDJfUEFHRVRBQkxFX0VO VFJJRVM7IGkrKyApCiAgICAgICAgICAgICAgICAgbDJlX3dyaXRlKGwydCArIGksCkBAIC01MDk2 LDcgKzUwOTYsNyBAQCBpbnQgbWFwX3BhZ2VzX3RvX3hlbigKICAgICAgICAgICAgICAgICAgKGwz ZV9nZXRfZmxhZ3MoKnBsM2UpICYgX1BBR0VfUFNFKSApCiAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgbDNlX3dyaXRlX2F0b21pYyhwbDNlLCBsM2VfZnJvbV9tZm4obWZuLCBfX1BBR0Vf SFlQRVJWSVNPUikpOwotICAgICAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKGwy dCk7CisgICAgICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsMnQpOwogICAgICAgICAg ICAgICAgIGwydCA9IE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIGxvY2tp bmcgKQpAQCAtNTEwNCw4ICs1MTA0LDggQEAgaW50IG1hcF9wYWdlc190b194ZW4oCiAgICAgICAg ICAgICBmbHVzaF9hcmVhKHZpcnQsIGZsdXNoX2ZsYWdzKTsKICAgICAgICAgICAgIGlmICggbDJ0 ICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05F VyhsMnQpOwotICAgICAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJsZV9uZXcobWZuKTsKKyAg ICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwydCk7CisgICAgICAgICAgICAgICAg ZnJlZV94ZW5fcGFnZXRhYmxlKG1mbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAt NTE0MCwxMiArNTE0MCwxMiBAQCBpbnQgbWFwX3BhZ2VzX3RvX3hlbigKICAgICAgICAgICAgICAg ICAgICAgbDFfcGdlbnRyeV90ICpsMXQ7CiAgICAgICAgICAgICAgICAgICAgIG1mbl90IGwxdF9t Zm4gPSBsMmVfZ2V0X21mbihvbDJlKTsKIAotICAgICAgICAgICAgICAgICAgICBsMXQgPSBtYXBf eGVuX3BhZ2V0YWJsZV9uZXcobDF0X21mbik7CisgICAgICAgICAgICAgICAgICAgIGwxdCA9IG1h cF94ZW5fcGFnZXRhYmxlKGwxdF9tZm4pOwogICAgICAgICAgICAgICAgICAgICBmb3IgKCBpID0g MDsgaSA8IEwxX1BBR0VUQUJMRV9FTlRSSUVTOyBpKysgKQogICAgICAgICAgICAgICAgICAgICAg ICAgZmx1c2hfZmxhZ3MobDFlX2dldF9mbGFncyhsMXRbaV0pKTsKICAgICAgICAgICAgICAgICAg ICAgZmx1c2hfYXJlYSh2aXJ0LCBmbHVzaF9mbGFncyk7Ci0gICAgICAgICAgICAgICAgICAgIFVO TUFQX1hFTl9QQUdFVEFCTEVfTkVXKGwxdCk7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWVfeGVu X3BhZ2V0YWJsZV9uZXcobDF0X21mbik7CisgICAgICAgICAgICAgICAgICAgIFVOTUFQX1hFTl9Q QUdFVEFCTEUobDF0KTsKKyAgICAgICAgICAgICAgICAgICAgZnJlZV94ZW5fcGFnZXRhYmxlKGwx dF9tZm4pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtNTE2Niw3ICs1 MTY2LDcgQEAgaW50IG1hcF9wYWdlc190b194ZW4oCiAgICAgICAgICAgICAgICAgICAgIEFTU0VS VChyYyA9PSAtRU5PTUVNKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKHBsMWUp OworICAgICAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUocGwxZSk7CiAgICAgICAgICAg ICB9CiAgICAgICAgICAgICBlbHNlIGlmICggbDJlX2dldF9mbGFncygqcGwyZSkgJiBfUEFHRV9Q U0UgKQogICAgICAgICAgICAgewpAQCAtNTE5MywxNCArNTE5MywxNCBAQCBpbnQgbWFwX3BhZ2Vz X3RvX3hlbigKICAgICAgICAgICAgICAgICAgICAgZ290byBjaGVja19sMzsKICAgICAgICAgICAg ICAgICB9CiAKLSAgICAgICAgICAgICAgICBtZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlX25ldygp OworICAgICAgICAgICAgICAgIG1mbiA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKICAgICAgICAg ICAgICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCiAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmMgPT0gLUVOT01FTSk7CiAgICAgICAgICAg ICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg IGwxdCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhtZm4pOworICAgICAgICAgICAgICAgIGwxdCA9 IG1hcF94ZW5fcGFnZXRhYmxlKG1mbik7CiAKICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsg aSA8IEwxX1BBR0VUQUJMRV9FTlRSSUVTOyBpKysgKQogICAgICAgICAgICAgICAgICAgICBsMWVf d3JpdGUoJmwxdFtpXSwKQEAgLTUyMTcsNyArNTIxNyw3IEBAIGludCBtYXBfcGFnZXNfdG9feGVu KAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbDJlX3dyaXRlX2F0b21p YyhwbDJlLCBsMmVfZnJvbV9tZm4obWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfX1BBR0VfSFlQRVJWSVNPUikpOwotICAgICAgICAg ICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsMXQpOworICAgICAgICAgICAgICAg ICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwxdCk7CiAgICAgICAgICAgICAgICAgICAgIGwxdCA9 IE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICggbG9ja2luZyAp CkBAIC01MjI1LDE2ICs1MjI1LDE2IEBAIGludCBtYXBfcGFnZXNfdG9feGVuKAogICAgICAgICAg ICAgICAgIGZsdXNoX2FyZWEodmlydCwgZmx1c2hfZmxhZ3MpOwogICAgICAgICAgICAgICAgIGlm ICggbDF0ICkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIFVOTUFQX1hF Tl9QQUdFVEFCTEVfTkVXKGwxdCk7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0 YWJsZV9uZXcobWZuKTsKKyAgICAgICAgICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShs MXQpOworICAgICAgICAgICAgICAgICAgICBmcmVlX3hlbl9wYWdldGFibGUobWZuKTsKICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBsMWUgID0gbWFwX3hl bl9wYWdldGFibGVfbmV3KGwyZV9nZXRfbWZuKCgqcGwyZSkpKTsKKyAgICAgICAgICAgIHBsMWUg ID0gbWFwX3hlbl9wYWdldGFibGUobDJlX2dldF9tZm4oKCpwbDJlKSkpOwogICAgICAgICAgICAg cGwxZSArPSBsMV90YWJsZV9vZmZzZXQodmlydCk7CiAgICAgICAgICAgICBvbDFlICA9ICpwbDFl OwogICAgICAgICAgICAgbDFlX3dyaXRlX2F0b21pYyhwbDFlLCBsMWVfZnJvbV9tZm4obWZuLCBm bGFncykpOwotICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcocGwxZSk7CisgICAg ICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKHBsMWUpOwogICAgICAgICAgICAgaWYgKCAobDFl X2dldF9mbGFncyhvbDFlKSAmIF9QQUdFX1BSRVNFTlQpICkKICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmx1c2hfZmxhZ3MgPSBGTFVTSF9UTEIgfCBGTFVTSF9P UkRFUigwKTsKQEAgLTUyODAsMTQgKzUyODAsMTQgQEAgaW50IG1hcF9wYWdlc190b194ZW4oCiAg ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbDF0X21mbiA9IGwyZV9nZXRfbWZu KG9sMmUpOwotICAgICAgICAgICAgICAgIGwxdCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsMXRf bWZuKTsKKyAgICAgICAgICAgICAgICBsMXQgPSBtYXBfeGVuX3BhZ2V0YWJsZShsMXRfbWZuKTsK IAogICAgICAgICAgICAgICAgIGJhc2VfbWZuID0gbDFlX2dldF9wZm4obDF0WzBdKSAmIH4oTDFf UEFHRVRBQkxFX0VOVFJJRVMgLSAxKTsKICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8 IEwxX1BBR0VUQUJMRV9FTlRSSUVTOyBpKysgKQogICAgICAgICAgICAgICAgICAgICBpZiAoIChs MWVfZ2V0X3BmbihsMXRbaV0pICE9IChiYXNlX21mbiArIGkpKSB8fAogICAgICAgICAgICAgICAg ICAgICAgICAgIChsMWVfZ2V0X2ZsYWdzKGwxdFtpXSkgIT0gZmxhZ3MpICkKICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVf TkVXKGwxdCk7CisgICAgICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsMXQpOwogICAg ICAgICAgICAgICAgIGlmICggaSA9PSBMMV9QQUdFVEFCTEVfRU5UUklFUyApCiAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICBsMmVfd3JpdGVfYXRvbWljKHBsMmUsIGwyZV9m cm9tX3BmbihiYXNlX21mbiwKQEAgLTUyOTcsNyArNTI5Nyw3IEBAIGludCBtYXBfcGFnZXNfdG9f eGVuKAogICAgICAgICAgICAgICAgICAgICBmbHVzaF9hcmVhKHZpcnQgLSBQQUdFX1NJWkUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxVU0hfVExCX0dMT0JBTCB8CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRkxVU0hfT1JERVIoUEFHRVRBQkxFX09SREVSKSk7Ci0g ICAgICAgICAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJsZV9uZXcobDF0X21mbik7CisgICAg ICAgICAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJsZShsMXRfbWZuKTsKICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIGxvY2tpbmcgKQogICAgICAgICAgICAg ICAgICAgICBzcGluX3VubG9jaygmbWFwX3BnZGlyX2xvY2spOwpAQCAtNTMzMiw3ICs1MzMyLDcg QEAgaW50IG1hcF9wYWdlc190b194ZW4oCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGwy dF9tZm4gPSBsM2VfZ2V0X21mbihvbDNlKTsKLSAgICAgICAgICAgIGwydCA9IG1hcF94ZW5fcGFn ZXRhYmxlX25ldyhsMnRfbWZuKTsKKyAgICAgICAgICAgIGwydCA9IG1hcF94ZW5fcGFnZXRhYmxl KGwydF9tZm4pOwogCiAgICAgICAgICAgICBiYXNlX21mbiA9IGwyZV9nZXRfcGZuKGwydFswXSkg JiB+KEwyX1BBR0VUQUJMRV9FTlRSSUVTICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMMV9QQUdFVEFCTEVfRU5UUklFUyAtIDEpOwpAQCAtNTM0MSw3ICs1 MzQxLDcgQEAgaW50IG1hcF9wYWdlc190b194ZW4oCiAgICAgICAgICAgICAgICAgICAgICAgKGJh c2VfbWZuICsgKGkgPDwgUEFHRVRBQkxFX09SREVSKSkpIHx8CiAgICAgICAgICAgICAgICAgICAg ICAobDJlX2dldF9mbGFncyhsMnRbaV0pICE9IGwxZl90b19sTmYoZmxhZ3MpKSApCiAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVco bDJ0KTsKKyAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDJ0KTsKICAgICAgICAgICAg IGlmICggaSA9PSBMMl9QQUdFVEFCTEVfRU5UUklFUyApCiAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgbDNlX3dyaXRlX2F0b21pYyhwbDNlLCBsM2VfZnJvbV9wZm4oYmFzZV9tZm4sCkBA IC01MzUxLDE1ICs1MzUxLDE1IEBAIGludCBtYXBfcGFnZXNfdG9feGVuKAogICAgICAgICAgICAg ICAgIGZsdXNoX2FyZWEodmlydCAtIFBBR0VfU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZMVVNIX1RMQl9HTE9CQUwgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxVU0hf T1JERVIoMipQQUdFVEFCTEVfT1JERVIpKTsKLSAgICAgICAgICAgICAgICBmcmVlX3hlbl9wYWdl dGFibGVfbmV3KGwydF9tZm4pOworICAgICAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJsZShs MnRfbWZuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKCBsb2NraW5nICkK ICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmbWFwX3BnZGlyX2xvY2spOwogICAgICAgICB9 CiAgICAgZW5kX29mX2xvb3A6Ci0gICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKHBsMWUp OwotICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhwbDJlKTsKLSAgICAgICAgVU5NQVBf WEVOX1BBR0VUQUJMRV9ORVcocGwzZSk7CisgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUocGwx ZSk7CisgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUocGwyZSk7CisgICAgICAgIFVOTUFQX1hF Tl9QQUdFVEFCTEUocGwzZSk7CiAgICAgfQogCiAjdW5kZWYgZmx1c2hfZmxhZ3MKQEAgLTUzNjcs OSArNTM2Nyw5IEBAIGludCBtYXBfcGFnZXNfdG9feGVuKAogICAgIHJjID0gMDsKIAogIG91dDoK LSAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhwbDFlKTsKLSAgICBVTk1BUF9YRU5fUEFHRVRB QkxFX05FVyhwbDJlKTsKLSAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhwbDNlKTsKKyAgICBV Tk1BUF9YRU5fUEFHRVRBQkxFKHBsMWUpOworICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUocGwyZSk7 CisgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShwbDNlKTsKICAgICByZXR1cm4gcmM7CiB9CiAKQEAg LTU0NDAsMTQgKzU0NDAsMTQgQEAgaW50IG1vZGlmeV94ZW5fbWFwcGluZ3ModW5zaWduZWQgbG9u ZyBzLCB1bnNpZ25lZCBsb25nIGUsIHVuc2lnbmVkIGludCBuZikKICAgICAgICAgICAgIH0KIAog ICAgICAgICAgICAgLyogUEFHRTFHQjogc2hhdHRlciB0aGUgc3VwZXJwYWdlIGFuZCBmYWxsIHRo cm91Z2guICovCi0gICAgICAgICAgICBtZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlX25ldygpOwor ICAgICAgICAgICAgbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgpOwogICAgICAgICAgICAgaWYg KCBtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQogICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgIEFTU0VSVChyYyA9PSAtRU5PTUVNKTsKICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAg ICAgICAgICAgIH0KIAotICAgICAgICAgICAgbDJ0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KG1m bik7CisgICAgICAgICAgICBsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZShtZm4pOwogCiAgICAgICAg ICAgICBmb3IgKCBpID0gMDsgaSA8IEwyX1BBR0VUQUJMRV9FTlRSSUVTOyBpKysgKQogICAgICAg ICAgICAgICAgIGwyZV93cml0ZShsMnQgKyBpLApAQCAtNTQ2MCwxNSArNTQ2MCwxNSBAQCBpbnQg bW9kaWZ5X3hlbl9tYXBwaW5ncyh1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSwgdW5z aWduZWQgaW50IG5mKQogICAgICAgICAgICAgICAgICAobDNlX2dldF9mbGFncygqcGwzZSkgJiBf UEFHRV9QU0UpICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBsM2Vfd3JpdGVfYXRv bWljKHBsM2UsIGwzZV9mcm9tX21mbihtZm4sIF9fUEFHRV9IWVBFUlZJU09SKSk7Ci0gICAgICAg ICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDJ0KTsKKyAgICAgICAgICAgICAgICBV Tk1BUF9YRU5fUEFHRVRBQkxFKGwydCk7CiAgICAgICAgICAgICAgICAgbDJ0ID0gTlVMTDsKICAg ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICggbG9ja2luZyApCiAgICAgICAgICAgICAgICAg c3Bpbl91bmxvY2soJm1hcF9wZ2Rpcl9sb2NrKTsKICAgICAgICAgICAgIGlmICggbDJ0ICkKICAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsMnQp OwotICAgICAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJsZV9uZXcobWZuKTsKKyAgICAgICAg ICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwydCk7CisgICAgICAgICAgICAgICAgZnJlZV94 ZW5fcGFnZXRhYmxlKG1mbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTQ3Niw3 ICs1NDc2LDcgQEAgaW50IG1vZGlmeV94ZW5fbWFwcGluZ3ModW5zaWduZWQgbG9uZyBzLCB1bnNp Z25lZCBsb25nIGUsIHVuc2lnbmVkIGludCBuZikKICAgICAgICAgICogVGhlIEwzIGVudHJ5IGhh cyBiZWVuIHZlcmlmaWVkIHRvIGJlIHByZXNlbnQsIGFuZCB3ZSd2ZSBkZWFsdCB3aXRoCiAgICAg ICAgICAqIDFHIHBhZ2VzIGFzIHdlbGwsIHNvIHRoZSBMMiB0YWJsZSBjYW5ub3QgcmVxdWlyZSBh bGxvY2F0aW9uLgogICAgICAgICAgKi8KLSAgICAgICAgcGwyZSA9IG1hcF94ZW5fcGFnZXRhYmxl X25ldyhsM2VfZ2V0X21mbigqcGwzZSkpOworICAgICAgICBwbDJlID0gbWFwX3hlbl9wYWdldGFi bGUobDNlX2dldF9tZm4oKnBsM2UpKTsKICAgICAgICAgcGwyZSArPSBsMl90YWJsZV9vZmZzZXQo dik7CiAKICAgICAgICAgaWYgKCAhKGwyZV9nZXRfZmxhZ3MoKnBsMmUpICYgX1BBR0VfUFJFU0VO VCkgKQpAQCAtNTUwOCwxNCArNTUwOCwxNCBAQCBpbnQgbW9kaWZ5X3hlbl9tYXBwaW5ncyh1bnNp Z25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSwgdW5zaWduZWQgaW50IG5mKQogICAgICAgICAg ICAgICAgIG1mbl90IG1mbjsKIAogICAgICAgICAgICAgICAgIC8qIFBTRTogc2hhdHRlciB0aGUg c3VwZXJwYWdlIGFuZCB0cnkgYWdhaW4uICovCi0gICAgICAgICAgICAgICAgbWZuID0gYWxsb2Nf eGVuX3BhZ2V0YWJsZV9uZXcoKTsKKyAgICAgICAgICAgICAgICBtZm4gPSBhbGxvY194ZW5fcGFn ZXRhYmxlKCk7CiAgICAgICAgICAgICAgICAgaWYgKCBtZm5fZXEobWZuLCBJTlZBTElEX01GTikg KQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJjID09IC1F Tk9NRU0pOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICB9 CiAKLSAgICAgICAgICAgICAgICBsMXQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobWZuKTsKKyAg ICAgICAgICAgICAgICBsMXQgPSBtYXBfeGVuX3BhZ2V0YWJsZShtZm4pOwogCiAgICAgICAgICAg ICAgICAgZm9yICggaSA9IDA7IGkgPCBMMV9QQUdFVEFCTEVfRU5UUklFUzsgaSsrICkKICAgICAg ICAgICAgICAgICAgICAgbDFlX3dyaXRlKCZsMXRbaV0sCkBAIC01NTI4LDE1ICs1NTI4LDE1IEBA IGludCBtb2RpZnlfeGVuX21hcHBpbmdzKHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBl LCB1bnNpZ25lZCBpbnQgbmYpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICBsMmVfd3JpdGVfYXRvbWljKHBsMmUsIGwyZV9mcm9tX21mbihtZm4sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fUEFHRV9IWVBFUlZJ U09SKSk7Ci0gICAgICAgICAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKGwxdCk7 CisgICAgICAgICAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDF0KTsKICAgICAgICAg ICAgICAgICAgICAgbDF0ID0gTlVMTDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgaWYgKCBsb2NraW5nICkKICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJm1hcF9w Z2Rpcl9sb2NrKTsKICAgICAgICAgICAgICAgICBpZiAoIGwxdCApCiAgICAgICAgICAgICAgICAg ewotICAgICAgICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsMXQpOwotICAg ICAgICAgICAgICAgICAgICBmcmVlX3hlbl9wYWdldGFibGVfbmV3KG1mbik7CisgICAgICAgICAg ICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDF0KTsKKyAgICAgICAgICAgICAgICAgICAg ZnJlZV94ZW5fcGFnZXRhYmxlKG1mbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg fQogICAgICAgICB9CkBAIC01NTUwLDcgKzU1NTAsNyBAQCBpbnQgbW9kaWZ5X3hlbl9tYXBwaW5n cyh1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSwgdW5zaWduZWQgaW50IG5mKQogICAg ICAgICAgICAgICogcHJlc2VudCwgYW5kIHdlJ3ZlIGRlYWx0IHdpdGggMk0gcGFnZXMgYXMgd2Vs bCwgc28gdGhlIEwxIHRhYmxlCiAgICAgICAgICAgICAgKiBjYW5ub3QgcmVxdWlyZSBhbGxvY2F0 aW9uLgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBwbDFlID0gbWFwX3hlbl9wYWdldGFi bGVfbmV3KGwyZV9nZXRfbWZuKCpwbDJlKSk7CisgICAgICAgICAgICBwbDFlID0gbWFwX3hlbl9w YWdldGFibGUobDJlX2dldF9tZm4oKnBsMmUpKTsKICAgICAgICAgICAgIHBsMWUgKz0gbDFfdGFi bGVfb2Zmc2V0KHYpOwogCiAgICAgICAgICAgICAvKiBDb25maXJtIHRoZSBjYWxsZXIgaXNuJ3Qg dHJ5aW5nIHRvIGNyZWF0ZSBuZXcgbWFwcGluZ3MuICovCkBAIC01NTYyLDcgKzU1NjIsNyBAQCBp bnQgbW9kaWZ5X3hlbl9tYXBwaW5ncyh1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSwg dW5zaWduZWQgaW50IG5mKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsMWVfZ2V0 X2ZsYWdzKCpwbDFlKSAmIH5GTEFHU19NQVNLKSB8IG5mKTsKIAogICAgICAgICAgICAgbDFlX3dy aXRlX2F0b21pYyhwbDFlLCBubDFlKTsKLSAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVf TkVXKHBsMWUpOworICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShwbDFlKTsKICAgICAg ICAgICAgIHYgKz0gUEFHRV9TSVpFOwogCiAgICAgICAgICAgICAvKgpAQCAtNTU5MywxMSArNTU5 MywxMSBAQCBpbnQgbW9kaWZ5X3hlbl9tYXBwaW5ncyh1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVk IGxvbmcgZSwgdW5zaWduZWQgaW50IG5mKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBs MXRfbWZuID0gbDJlX2dldF9tZm4oKnBsMmUpOwotICAgICAgICAgICAgbDF0ID0gbWFwX3hlbl9w YWdldGFibGVfbmV3KGwxdF9tZm4pOworICAgICAgICAgICAgbDF0ID0gbWFwX3hlbl9wYWdldGFi bGUobDF0X21mbik7CiAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEwxX1BBR0VUQUJMRV9F TlRSSUVTOyBpKysgKQogICAgICAgICAgICAgICAgIGlmICggbDFlX2dldF9pbnRwdGUobDF0W2ld KSAhPSAwICkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBVTk1BUF9Y RU5fUEFHRVRBQkxFX05FVyhsMXQpOworICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShs MXQpOwogICAgICAgICAgICAgaWYgKCBpID09IEwxX1BBR0VUQUJMRV9FTlRSSUVTICkKICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiBFbXB0eTogemFwIHRoZSBMMkUgYW5kIGZyZWUg dGhlIEwxIHBhZ2UuICovCkBAIC01NjA1LDcgKzU2MDUsNyBAQCBpbnQgbW9kaWZ5X3hlbl9tYXBw aW5ncyh1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSwgdW5zaWduZWQgaW50IG5mKQog ICAgICAgICAgICAgICAgIGlmICggbG9ja2luZyApCiAgICAgICAgICAgICAgICAgICAgIHNwaW5f dW5sb2NrKCZtYXBfcGdkaXJfbG9jayk7CiAgICAgICAgICAgICAgICAgZmx1c2hfYXJlYShOVUxM LCBGTFVTSF9UTEJfR0xPQkFMKTsgLyogZmx1c2ggYmVmb3JlIGZyZWUgKi8KLSAgICAgICAgICAg ICAgICBmcmVlX3hlbl9wYWdldGFibGVfbmV3KGwxdF9tZm4pOworICAgICAgICAgICAgICAgIGZy ZWVfeGVuX3BhZ2V0YWJsZShsMXRfbWZuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVs c2UgaWYgKCBsb2NraW5nICkKICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmbWFwX3BnZGly X2xvY2spOwpAQCAtNTYzOSwxMSArNTYzOSwxMSBAQCBpbnQgbW9kaWZ5X3hlbl9tYXBwaW5ncyh1 bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSwgdW5zaWduZWQgaW50IG5mKQogICAgICAg ICAgICAgbWZuX3QgbDJ0X21mbjsKIAogICAgICAgICAgICAgbDJ0X21mbiA9IGwzZV9nZXRfbWZu KCpwbDNlKTsKLSAgICAgICAgICAgIGwydCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsMnRfbWZu KTsKKyAgICAgICAgICAgIGwydCA9IG1hcF94ZW5fcGFnZXRhYmxlKGwydF9tZm4pOwogICAgICAg ICAgICAgZm9yICggaSA9IDA7IGkgPCBMMl9QQUdFVEFCTEVfRU5UUklFUzsgaSsrICkKICAgICAg ICAgICAgICAgICBpZiAoIGwyZV9nZXRfaW50cHRlKGwydFtpXSkgIT0gMCApCiAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDJ0 KTsKKyAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDJ0KTsKICAgICAgICAgICAgIGlm ICggaSA9PSBMMl9QQUdFVEFCTEVfRU5UUklFUyApCiAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgLyogRW1wdHk6IHphcCB0aGUgTDNFIGFuZCBmcmVlIHRoZSBMMiBwYWdlLiAqLwpAQCAt NTY1MSwxNCArNTY1MSwxNCBAQCBpbnQgbW9kaWZ5X3hlbl9tYXBwaW5ncyh1bnNpZ25lZCBsb25n IHMsIHVuc2lnbmVkIGxvbmcgZSwgdW5zaWduZWQgaW50IG5mKQogICAgICAgICAgICAgICAgIGlm ICggbG9ja2luZyApCiAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZtYXBfcGdkaXJf bG9jayk7CiAgICAgICAgICAgICAgICAgZmx1c2hfYXJlYShOVUxMLCBGTFVTSF9UTEJfR0xPQkFM KTsgLyogZmx1c2ggYmVmb3JlIGZyZWUgKi8KLSAgICAgICAgICAgICAgICBmcmVlX3hlbl9wYWdl dGFibGVfbmV3KGwydF9tZm4pOworICAgICAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJsZShs MnRfbWZuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKCBsb2NraW5nICkK ICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmbWFwX3BnZGlyX2xvY2spOwogICAgICAgICB9 CiAgICAgZW5kX29mX2xvb3A6Ci0gICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKHBsMmUp OwotICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhwbDNlKTsKKyAgICAgICAgVU5NQVBf WEVOX1BBR0VUQUJMRShwbDJlKTsKKyAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShwbDNlKTsK ICAgICB9CiAKICAgICBmbHVzaF9hcmVhKE5VTEwsIEZMVVNIX1RMQl9HTE9CQUwpOwpAQCAtNTY2 Nyw4ICs1NjY3LDggQEAgaW50IG1vZGlmeV94ZW5fbWFwcGluZ3ModW5zaWduZWQgbG9uZyBzLCB1 bnNpZ25lZCBsb25nIGUsIHVuc2lnbmVkIGludCBuZikKICAgICByYyA9IDA7CiAKICBvdXQ6Ci0g ICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcocGwyZSk7Ci0gICAgVU5NQVBfWEVOX1BBR0VUQUJM RV9ORVcocGwzZSk7CisgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShwbDJlKTsKKyAgICBVTk1BUF9Y RU5fUEFHRVRBQkxFKHBsM2UpOwogICAgIHJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYyBiL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMK aW5kZXggYTA3ZDIxMzhhMi4uNGQ0NmQ3NzNjMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2 L2RvbTBfYnVpbGQuYworKysgYi94ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jCkBAIC01NSwx MSArNTUsMTEgQEAgc3RhdGljIF9faW5pdCB2b2lkIG1hcmtfcHZfcHRfcGFnZXNfcmRvbmx5KHN0 cnVjdCBkb21haW4gKmQsCiAgICAgbDFfcGdlbnRyeV90ICpwbDFlLCAqbDF0OwogCiAgICAgcGw0 ZSA9IGw0c3RhcnQgKyBsNF90YWJsZV9vZmZzZXQodnB0X3N0YXJ0KTsKLSAgICBsM3QgPSBtYXBf eGVuX3BhZ2V0YWJsZV9uZXcobDRlX2dldF9tZm4oKnBsNGUpKTsKKyAgICBsM3QgPSBtYXBfeGVu X3BhZ2V0YWJsZShsNGVfZ2V0X21mbigqcGw0ZSkpOwogICAgIHBsM2UgPSBsM3QgKyBsM190YWJs ZV9vZmZzZXQodnB0X3N0YXJ0KTsKLSAgICBsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDNl X2dldF9tZm4oKnBsM2UpKTsKKyAgICBsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZShsM2VfZ2V0X21m bigqcGwzZSkpOwogICAgIHBsMmUgPSBsMnQgKyBsMl90YWJsZV9vZmZzZXQodnB0X3N0YXJ0KTsK LSAgICBsMXQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDJlX2dldF9tZm4oKnBsMmUpKTsKKyAg ICBsMXQgPSBtYXBfeGVuX3BhZ2V0YWJsZShsMmVfZ2V0X21mbigqcGwyZSkpOwogICAgIHBsMWUg PSBsMXQgKyBsMV90YWJsZV9vZmZzZXQodnB0X3N0YXJ0KTsKICAgICBmb3IgKCBjb3VudCA9IDA7 IGNvdW50IDwgbnJfcHRfcGFnZXM7IGNvdW50KysgKQogICAgIHsKQEAgLTg2LDIyICs4NiwyMiBA QCBzdGF0aWMgX19pbml0IHZvaWQgbWFya19wdl9wdF9wYWdlc19yZG9ubHkoc3RydWN0IGRvbWFp biAqZCwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoICEoKHVuc2lnbmVkIGxv bmcpKytwbDNlICYgKFBBR0VfU0laRSAtIDEpKSApCiAgICAgICAgICAgICAgICAgewotICAgICAg ICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsM3QpOwotICAgICAgICAgICAg ICAgICAgICBsM3QgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDRlX2dldF9tZm4oKisrcGw0ZSkp OworICAgICAgICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwzdCk7CisgICAgICAg ICAgICAgICAgICAgIGwzdCA9IG1hcF94ZW5fcGFnZXRhYmxlKGw0ZV9nZXRfbWZuKCorK3BsNGUp KTsKICAgICAgICAgICAgICAgICAgICAgcGwzZSA9IGwzdDsKICAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDJ0KTsKLSAgICAgICAgICAg ICAgICBsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDNlX2dldF9tZm4oKnBsM2UpKTsKKyAg ICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwydCk7CisgICAgICAgICAgICAgICAg bDJ0ID0gbWFwX3hlbl9wYWdldGFibGUobDNlX2dldF9tZm4oKnBsM2UpKTsKICAgICAgICAgICAg ICAgICBwbDJlID0gbDJ0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgVU5NQVBfWEVOX1BB R0VUQUJMRV9ORVcobDF0KTsKLSAgICAgICAgICAgIGwxdCA9IG1hcF94ZW5fcGFnZXRhYmxlX25l dyhsMmVfZ2V0X21mbigqcGwyZSkpOworICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShs MXQpOworICAgICAgICAgICAgbDF0ID0gbWFwX3hlbl9wYWdldGFibGUobDJlX2dldF9tZm4oKnBs MmUpKTsKICAgICAgICAgICAgIHBsMWUgPSBsMXQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgVU5N QVBfWEVOX1BBR0VUQUJMRV9ORVcobDF0KTsKLSAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhs MnQpOwotICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKGwzdCk7CisgICAgVU5NQVBfWEVOX1BB R0VUQUJMRShsMXQpOworICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDJ0KTsKKyAgICBVTk1BUF9Y RU5fUEFHRVRBQkxFKGwzdCk7CiB9CiAKIHN0YXRpYyBfX2luaXQgdm9pZCBzZXR1cF9wdl9waHlz bWFwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGd0YmxfcGZuLApAQCAtNzA2LDkg KzcwNiw5IEBAIGludCBfX2luaXQgZG9tMF9jb25zdHJ1Y3RfcHYoc3RydWN0IGRvbWFpbiAqZCwK ICAgICAgICAgICAgICAgICBsM2VfZ2V0X3BhZ2UoKmwzdGFiKS0+dS5pbnVzZS50eXBlX2luZm8g fD0gUEdUX3BhZV94ZW5fbDI7CiAgICAgICAgIH0KIAotICAgICAgICBsMnQgPSBtYXBfeGVuX3Bh Z2V0YWJsZV9uZXcobDNlX2dldF9tZm4obDNzdGFydFszXSkpOworICAgICAgICBsMnQgPSBtYXBf eGVuX3BhZ2V0YWJsZShsM2VfZ2V0X21mbihsM3N0YXJ0WzNdKSk7CiAgICAgICAgIGluaXRfeGVu X3BhZV9sMl9zbG90cyhsMnQsIGQpOwotICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhs MnQpOworICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwydCk7CiAgICAgfQogCiAgICAgLyog UGFnZXMgdGhhdCBhcmUgcGFydCBvZiBwYWdlIHRhYmxlcyBtdXN0IGJlIHJlYWQgb25seS4gKi8K ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9zaGltLmMgYi94ZW4vYXJjaC94ODYvcHYvc2hp bS5jCmluZGV4IGNmNjM4ZmE5NjUuLjA5Yzc3NjZlYzUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9wdi9zaGltLmMKKysrIGIveGVuL2FyY2gveDg2L3B2L3NoaW0uYwpAQCAtMTcxLDExICsxNzEs MTEgQEAgc3RhdGljIHZvaWQgX19pbml0IHJlcGxhY2VfdmFfbWFwcGluZyhzdHJ1Y3QgZG9tYWlu ICpkLCBsNF9wZ2VudHJ5X3QgKmw0c3RhcnQsCiAgICAgbDJfcGdlbnRyeV90ICpwbDJlOwogICAg IGwxX3BnZW50cnlfdCAqcGwxZTsKIAotICAgIHBsM2UgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXco bDRlX2dldF9tZm4oKnBsNGUpKTsKKyAgICBwbDNlID0gbWFwX3hlbl9wYWdldGFibGUobDRlX2dl dF9tZm4oKnBsNGUpKTsKICAgICBwbDNlICs9IGwzX3RhYmxlX29mZnNldCh2YSk7Ci0gICAgcGwy ZSA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsM2VfZ2V0X21mbigqcGwzZSkpOworICAgIHBsMmUg PSBtYXBfeGVuX3BhZ2V0YWJsZShsM2VfZ2V0X21mbigqcGwzZSkpOwogICAgIHBsMmUgKz0gbDJf dGFibGVfb2Zmc2V0KHZhKTsKLSAgICBwbDFlID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KGwyZV9n ZXRfbWZuKCpwbDJlKSk7CisgICAgcGwxZSA9IG1hcF94ZW5fcGFnZXRhYmxlKGwyZV9nZXRfbWZu KCpwbDJlKSk7CiAgICAgcGwxZSArPSBsMV90YWJsZV9vZmZzZXQodmEpOwogCiAgICAgcHV0X3Bh Z2VfYW5kX3R5cGUobWZuX3RvX3BhZ2UobDFlX2dldF9tZm4oKnBsMWUpKSk7CkBAIC0xODMsOSAr MTgzLDkgQEAgc3RhdGljIHZvaWQgX19pbml0IHJlcGxhY2VfdmFfbWFwcGluZyhzdHJ1Y3QgZG9t YWluICpkLCBsNF9wZ2VudHJ5X3QgKmw0c3RhcnQsCiAgICAgKnBsMWUgPSBsMWVfZnJvbV9tZm4o bWZuLCAoIWlzX3B2XzMyYml0X2RvbWFpbihkKSA/IEwxX1BST1QKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQ09NUEFUX0wxX1BST1QpKTsK IAotICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKHBsMWUpOwotICAgIFVOTUFQX1hFTl9QQUdF VEFCTEVfTkVXKHBsMmUpOwotICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKHBsM2UpOworICAg IFVOTUFQX1hFTl9QQUdFVEFCTEUocGwxZSk7CisgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShwbDJl KTsKKyAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKHBsM2UpOwogfQogCiBzdGF0aWMgdm9pZCBldnRj aG5fcmVzZXJ2ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgcG9ydCkKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMKaW5kZXggN2I2 NDIwZjk1YS4uOTMzOWUyODVlZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMKKysr IGIveGVuL2FyY2gveDg2L3NldHVwLmMKQEAgLTEwODUsNyArMTA4NSw3IEBAIHZvaWQgX19pbml0 IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICpwbDRlID0gbDRlX2Zyb21faW50cHRl KGw0ZV9nZXRfaW50cHRlKCpwbDRlKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeGVuX3BoeXNfc3RhcnQpOwotICAgICAgICAgICAgICAgIHBsM2UgPSBsM3QgPSBt YXBfeGVuX3BhZ2V0YWJsZV9uZXcobDRlX2dldF9tZm4oKnBsNGUpKTsKKyAgICAgICAgICAgICAg ICBwbDNlID0gbDN0ID0gbWFwX3hlbl9wYWdldGFibGUobDRlX2dldF9tZm4oKnBsNGUpKTsKICAg ICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IEwzX1BBR0VUQUJMRV9FTlRSSUVTOyBqKyss IHBsM2UrKyApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBsMl9wZ2Vu dHJ5X3QgKmwydDsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9f c3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAgICAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgKnBsM2UgPSBsM2VfZnJvbV9pbnRwdGUobDNl X2dldF9pbnRwdGUoKnBsM2UpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeGVuX3BoeXNfc3RhcnQpOwotICAgICAgICAgICAgICAgICAgICBwbDJlID0gbDJ0 ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KGwzZV9nZXRfbWZuKCpwbDNlKSk7CisgICAgICAgICAg ICAgICAgICAgIHBsMmUgPSBsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZShsM2VfZ2V0X21mbigqcGwz ZSkpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKCBrID0gMDsgayA8IEwyX1BBR0VUQUJMRV9F TlRSSUVTOyBrKyssIHBsMmUrKyApCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIE5vdCBwcmVzZW50LCBQU0UsIG9yIGFscmVhZHkgcmVsb2NhdGVkPyAq LwpAQCAtMTEwOCw5ICsxMTA4LDkgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4o dW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICAgICAgICAgICAgICAgICAgICAgICpwbDJlID0gbDJl X2Zyb21faW50cHRlKGwyZV9nZXRfaW50cHRlKCpwbDJlKSArCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5fcGh5c19zdGFydCk7CiAgICAgICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVco bDJ0KTsKKyAgICAgICAgICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsMnQpOwogICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhs M3QpOworICAgICAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDN0KTsKICAgICAgICAg ICAgIH0KIAogICAgICAgICAgICAgLyogVGhlIG9ubHkgZGF0YSBtYXBwaW5ncyB0byBiZSByZWxv Y2F0ZWQgYXJlIGluIHRoZSBYZW4gYXJlYS4gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9z bXBib290LmMgYi94ZW4vYXJjaC94ODYvc21wYm9vdC5jCmluZGV4IDNhYzE5MjQzOTEuLmUyNDVi NDJjZjcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zbXBib290LmMKKysrIGIveGVuL2FyY2gv eDg2L3NtcGJvb3QuYwpAQCAtNjk1LDcgKzY5NSw3IEBAIHN0YXRpYyBpbnQgY2xvbmVfbWFwcGlu Zyhjb25zdCB2b2lkICpwdHIsIHJvb3RfcGdlbnRyeV90ICpycHQpCiAgICAgICAgIGdvdG8gb3V0 OwogICAgIH0KIAotICAgIHBsM2UgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisgICAgcGwzZSA9 IG1hcF94ZW5fcGFnZXRhYmxlKAogICAgICAgICBsNGVfZ2V0X21mbihpZGxlX3BnX3RhYmxlW3Jv b3RfdGFibGVfb2Zmc2V0KGxpbmVhcildKSk7CiAgICAgcGwzZSArPSBsM190YWJsZV9vZmZzZXQo bGluZWFyKTsKIApAQCAtNzA5LDcgKzcwOSw3IEBAIHN0YXRpYyBpbnQgY2xvbmVfbWFwcGluZyhj b25zdCB2b2lkICpwdHIsIHJvb3RfcGdlbnRyeV90ICpycHQpCiAgICAgfQogICAgIGVsc2UKICAg ICB7Ci0gICAgICAgIHBsMmUgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDNlX2dldF9tZm4oKnBs M2UpKTsKKyAgICAgICAgcGwyZSA9IG1hcF94ZW5fcGFnZXRhYmxlKGwzZV9nZXRfbWZuKCpwbDNl KSk7CiAgICAgICAgIHBsMmUgKz0gbDJfdGFibGVfb2Zmc2V0KGxpbmVhcik7CiAgICAgICAgIGZs YWdzID0gbDJlX2dldF9mbGFncygqcGwyZSk7CiAgICAgICAgIEFTU0VSVChmbGFncyAmIF9QQUdF X1BSRVNFTlQpOwpAQCAtNzIxLDcgKzcyMSw3IEBAIHN0YXRpYyBpbnQgY2xvbmVfbWFwcGluZyhj b25zdCB2b2lkICpwdHIsIHJvb3RfcGdlbnRyeV90ICpycHQpCiAgICAgICAgIH0KICAgICAgICAg ZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBwbDFlID0gbWFwX3hlbl9wYWdldGFibGVfbmV3 KGwyZV9nZXRfbWZuKCpwbDJlKSk7CisgICAgICAgICAgICBwbDFlID0gbWFwX3hlbl9wYWdldGFi bGUobDJlX2dldF9tZm4oKnBsMmUpKTsKICAgICAgICAgICAgIHBsMWUgKz0gbDFfdGFibGVfb2Zm c2V0KGxpbmVhcik7CiAgICAgICAgICAgICBmbGFncyA9IGwxZV9nZXRfZmxhZ3MoKnBsMWUpOwog ICAgICAgICAgICAgaWYgKCAhKGZsYWdzICYgX1BBR0VfUFJFU0VOVCkgKQpAQCAtNzMzLDEzICs3 MzMsMTMgQEAgc3RhdGljIGludCBjbG9uZV9tYXBwaW5nKGNvbnN0IHZvaWQgKnB0ciwgcm9vdF9w Z2VudHJ5X3QgKnJwdCkKICAgICAgICAgfQogICAgIH0KIAotICAgIFVOTUFQX1hFTl9QQUdFVEFC TEVfTkVXKHBsMWUpOwotICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKHBsMmUpOwotICAgIFVO TUFQX1hFTl9QQUdFVEFCTEVfTkVXKHBsM2UpOworICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUocGwx ZSk7CisgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShwbDJlKTsKKyAgICBVTk1BUF9YRU5fUEFHRVRB QkxFKHBsM2UpOwogCiAgICAgaWYgKCAhKHJvb3RfZ2V0X2ZsYWdzKHJwdFtyb290X3RhYmxlX29m ZnNldChsaW5lYXIpXSkgJiBfUEFHRV9QUkVTRU5UKSApCiAgICAgewotICAgICAgICBtZm5fdCBs M3RfbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZV9uZXcoKTsKKyAgICAgICAgbWZuX3QgbDN0X21m biA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKIAogICAgICAgICBpZiAoIG1mbl9lcShsM3RfbWZu LCBJTlZBTElEX01GTikgKQogICAgICAgICB7CkBAIC03NDcsMjAgKzc0NywyMCBAQCBzdGF0aWMg aW50IGNsb25lX21hcHBpbmcoY29uc3Qgdm9pZCAqcHRyLCByb290X3BnZW50cnlfdCAqcnB0KQog ICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KIAotICAgICAgICBwbDNlID0gbWFwX3hl bl9wYWdldGFibGVfbmV3KGwzdF9tZm4pOworICAgICAgICBwbDNlID0gbWFwX3hlbl9wYWdldGFi bGUobDN0X21mbik7CiAgICAgICAgIGNsZWFyX3BhZ2UocGwzZSk7CiAgICAgICAgIGw0ZV93cml0 ZSgmcnB0W3Jvb3RfdGFibGVfb2Zmc2V0KGxpbmVhcildLAogICAgICAgICAgICAgICAgICAgbDRl X2Zyb21fbWZuKGwzdF9tZm4sIF9fUEFHRV9IWVBFUlZJU09SKSk7CiAgICAgfQogICAgIGVsc2UK LSAgICAgICAgcGwzZSA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldygKKyAgICAgICAgcGwzZSA9IG1h cF94ZW5fcGFnZXRhYmxlKAogICAgICAgICAgICAgbDRlX2dldF9tZm4ocnB0W3Jvb3RfdGFibGVf b2Zmc2V0KGxpbmVhcildKSk7CiAKICAgICBwbDNlICs9IGwzX3RhYmxlX29mZnNldChsaW5lYXIp OwogCiAgICAgaWYgKCAhKGwzZV9nZXRfZmxhZ3MoKnBsM2UpICYgX1BBR0VfUFJFU0VOVCkgKQog ICAgIHsKLSAgICAgICAgbWZuX3QgbDJ0X21mbiA9IGFsbG9jX3hlbl9wYWdldGFibGVfbmV3KCk7 CisgICAgICAgIG1mbl90IGwydF9tZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlKCk7CiAKICAgICAg ICAgaWYgKCBtZm5fZXEobDJ0X21mbiwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgewpAQCAtNzY4 LDIxICs3NjgsMjEgQEAgc3RhdGljIGludCBjbG9uZV9tYXBwaW5nKGNvbnN0IHZvaWQgKnB0ciwg cm9vdF9wZ2VudHJ5X3QgKnJwdCkKICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICB9CiAK LSAgICAgICAgcGwyZSA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsMnRfbWZuKTsKKyAgICAgICAg cGwyZSA9IG1hcF94ZW5fcGFnZXRhYmxlKGwydF9tZm4pOwogICAgICAgICBjbGVhcl9wYWdlKHBs MmUpOwogICAgICAgICBsM2Vfd3JpdGUocGwzZSwgbDNlX2Zyb21fbWZuKGwydF9tZm4sIF9fUEFH RV9IWVBFUlZJU09SKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIEFTU0VSVCgh KGwzZV9nZXRfZmxhZ3MoKnBsM2UpICYgX1BBR0VfUFNFKSk7Ci0gICAgICAgIHBsMmUgPSBtYXBf eGVuX3BhZ2V0YWJsZV9uZXcobDNlX2dldF9tZm4oKnBsM2UpKTsKKyAgICAgICAgcGwyZSA9IG1h cF94ZW5fcGFnZXRhYmxlKGwzZV9nZXRfbWZuKCpwbDNlKSk7CiAgICAgfQogCiAgICAgcGwyZSAr PSBsMl90YWJsZV9vZmZzZXQobGluZWFyKTsKIAogICAgIGlmICggIShsMmVfZ2V0X2ZsYWdzKCpw bDJlKSAmIF9QQUdFX1BSRVNFTlQpICkKICAgICB7Ci0gICAgICAgIG1mbl90IGwxdF9tZm4gPSBh bGxvY194ZW5fcGFnZXRhYmxlX25ldygpOworICAgICAgICBtZm5fdCBsMXRfbWZuID0gYWxsb2Nf eGVuX3BhZ2V0YWJsZSgpOwogCiAgICAgICAgIGlmICggbWZuX2VxKGwxdF9tZm4sIElOVkFMSURf TUZOKSApCiAgICAgICAgIHsKQEAgLTc5MCwxNCArNzkwLDE0IEBAIHN0YXRpYyBpbnQgY2xvbmVf bWFwcGluZyhjb25zdCB2b2lkICpwdHIsIHJvb3RfcGdlbnRyeV90ICpycHQpCiAgICAgICAgICAg ICBnb3RvIG91dDsKICAgICAgICAgfQogCi0gICAgICAgIHBsMWUgPSBtYXBfeGVuX3BhZ2V0YWJs ZV9uZXcobDF0X21mbik7CisgICAgICAgIHBsMWUgPSBtYXBfeGVuX3BhZ2V0YWJsZShsMXRfbWZu KTsKICAgICAgICAgY2xlYXJfcGFnZShwbDFlKTsKICAgICAgICAgbDJlX3dyaXRlKHBsMmUsIGwy ZV9mcm9tX21mbihsMXRfbWZuLCBfX1BBR0VfSFlQRVJWSVNPUikpOwogICAgIH0KICAgICBlbHNl CiAgICAgewogICAgICAgICBBU1NFUlQoIShsMmVfZ2V0X2ZsYWdzKCpwbDJlKSAmIF9QQUdFX1BT RSkpOwotICAgICAgICBwbDFlID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KGwyZV9nZXRfbWZuKCpw bDJlKSk7CisgICAgICAgIHBsMWUgPSBtYXBfeGVuX3BhZ2V0YWJsZShsMmVfZ2V0X21mbigqcGwy ZSkpOwogICAgIH0KIAogICAgIHBsMWUgKz0gbDFfdGFibGVfb2Zmc2V0KGxpbmVhcik7CkBAIC04 MTMsOSArODEzLDkgQEAgc3RhdGljIGludCBjbG9uZV9tYXBwaW5nKGNvbnN0IHZvaWQgKnB0ciwg cm9vdF9wZ2VudHJ5X3QgKnJwdCkKIAogICAgIHJjID0gMDsKICBvdXQ6Ci0gICAgVU5NQVBfWEVO X1BBR0VUQUJMRV9ORVcocGwxZSk7Ci0gICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcocGwyZSk7 Ci0gICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcocGwzZSk7CisgICAgVU5NQVBfWEVOX1BBR0VU QUJMRShwbDFlKTsKKyAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKHBsMmUpOworICAgIFVOTUFQX1hF Tl9QQUdFVEFCTEUocGwzZSk7CiAgICAgcmV0dXJuIHJjOwogfQogCkBAIC04MzgsMTQgKzgzOCwx NCBAQCBzdGF0aWMgaW50IHNldHVwX2NwdV9yb290X3BndCh1bnNpZ25lZCBpbnQgY3B1KQogICAg ICAgICBnb3RvIG91dDsKICAgICB9CiAKLSAgICBycHRfbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJs ZV9uZXcoKTsKKyAgICBycHRfbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgpOwogICAgIGlmICgg bWZuX2VxKHJwdF9tZm4sIElOVkFMSURfTUZOKSApCiAgICAgewogICAgICAgICByYyA9IC1FTk9N RU07CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIHJwdCA9IG1hcF94ZW5fcGFnZXRh YmxlX25ldyhycHRfbWZuKTsKKyAgICBycHQgPSBtYXBfeGVuX3BhZ2V0YWJsZShycHRfbWZuKTsK ICAgICBjbGVhcl9wYWdlKHJwdCk7CiAgICAgcGVyX2NwdShyb290X3BndF9tZm4sIGNwdSkgPSBy cHRfbWZuOwogCkBAIC04ODQsNyArODg0LDcgQEAgc3RhdGljIGludCBzZXR1cF9jcHVfcm9vdF9w Z3QodW5zaWduZWQgaW50IGNwdSkKICAgICAgICAgcmMgPSBjbG9uZV9tYXBwaW5nKCh2b2lkICop cGVyX2NwdShzdHVicy5hZGRyLCBjcHUpLCBycHQpOwogCiAgb3V0OgotICAgIFVOTUFQX1hFTl9Q QUdFVEFCTEVfTkVXKHJwdCk7CisgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShycHQpOwogICAgIHJl dHVybiByYzsKIH0KIApAQCAtOTAwLDcgKzkwMCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfY3B1 X3Jvb3RfcGd0KHVuc2lnbmVkIGludCBjcHUpCiAKICAgICBwZXJfY3B1KHJvb3RfcGd0X21mbiwg Y3B1KSA9IElOVkFMSURfTUZOOwogCi0gICAgcnB0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KHJw dF9tZm4pOworICAgIHJwdCA9IG1hcF94ZW5fcGFnZXRhYmxlKHJwdF9tZm4pOwogCiAgICAgZm9y ICggciA9IHJvb3RfdGFibGVfb2Zmc2V0KERJUkVDVE1BUF9WSVJUX1NUQVJUKTsKICAgICAgICAg ICByIDwgcm9vdF90YWJsZV9vZmZzZXQoSFlQRVJWSVNPUl9WSVJUX0VORCk7ICsrciApCkBAIC05 MTMsNyArOTEzLDcgQEAgc3RhdGljIHZvaWQgY2xlYW51cF9jcHVfcm9vdF9wZ3QodW5zaWduZWQg aW50IGNwdSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGwzdF9tZm4gPSBsNGVf Z2V0X21mbihycHRbcl0pOwotICAgICAgICBsM3QgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDN0 X21mbik7CisgICAgICAgIGwzdCA9IG1hcF94ZW5fcGFnZXRhYmxlKGwzdF9tZm4pOwogCiAgICAg ICAgIGZvciAoIGkzID0gMDsgaTMgPCBMM19QQUdFVEFCTEVfRU5UUklFUzsgKytpMyApCiAgICAg ICAgIHsKQEAgLTkyNiw3ICs5MjYsNyBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2NwdV9yb290X3Bn dCh1bnNpZ25lZCBpbnQgY3B1KQogCiAgICAgICAgICAgICBBU1NFUlQoIShsM2VfZ2V0X2ZsYWdz KGwzdFtpM10pICYgX1BBR0VfUFNFKSk7CiAgICAgICAgICAgICBsMnRfbWZuID0gbDNlX2dldF9t Zm4obDN0W2kzXSk7Ci0gICAgICAgICAgICBsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDJ0 X21mbik7CisgICAgICAgICAgICBsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZShsMnRfbWZuKTsKIAog ICAgICAgICAgICAgZm9yICggaTIgPSAwOyBpMiA8IEwyX1BBR0VUQUJMRV9FTlRSSUVTOyArK2ky ICkKICAgICAgICAgICAgIHsKQEAgLTkzNCwzNCArOTM0LDM0IEBAIHN0YXRpYyB2b2lkIGNsZWFu dXBfY3B1X3Jvb3RfcGd0KHVuc2lnbmVkIGludCBjcHUpCiAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwogCiAgICAgICAgICAgICAgICAgQVNTRVJUKCEobDJlX2dldF9mbGFncyhsMnRbaTJd KSAmIF9QQUdFX1BTRSkpOwotICAgICAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJsZV9uZXco bDJlX2dldF9tZm4obDJ0W2kyXSkpOworICAgICAgICAgICAgICAgIGZyZWVfeGVuX3BhZ2V0YWJs ZShsMmVfZ2V0X21mbihsMnRbaTJdKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFVO TUFQX1hFTl9QQUdFVEFCTEVfTkVXKGwydCk7Ci0gICAgICAgICAgICBmcmVlX3hlbl9wYWdldGFi bGVfbmV3KGwydF9tZm4pOworICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsMnQpOwor ICAgICAgICAgICAgZnJlZV94ZW5fcGFnZXRhYmxlKGwydF9tZm4pOwogICAgICAgICB9CiAKLSAg ICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDN0KTsKLSAgICAgICAgZnJlZV94ZW5fcGFn ZXRhYmxlX25ldyhsM3RfbWZuKTsKKyAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsM3QpOwor ICAgICAgICBmcmVlX3hlbl9wYWdldGFibGUobDN0X21mbik7CiAgICAgfQogCi0gICAgVU5NQVBf WEVOX1BBR0VUQUJMRV9ORVcocnB0KTsKLSAgICBmcmVlX3hlbl9wYWdldGFibGVfbmV3KHJwdF9t Zm4pOworICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUocnB0KTsKKyAgICBmcmVlX3hlbl9wYWdldGFi bGUocnB0X21mbik7CiAKICAgICAvKiBBbHNvIHphcCB0aGUgc3R1YiBtYXBwaW5nIGZvciB0aGlz IENQVS4gKi8KICAgICBpZiAoIHN0dWJfbGluZWFyICkKICAgICB7Ci0gICAgICAgIGwzX3BnZW50 cnlfdCAqbDN0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KGw0ZV9nZXRfbWZuKGNvbW1vbl9wZ3Qp KTsKLSAgICAgICAgbDJfcGdlbnRyeV90ICpsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisg ICAgICAgIGwzX3BnZW50cnlfdCAqbDN0ID0gbWFwX3hlbl9wYWdldGFibGUobDRlX2dldF9tZm4o Y29tbW9uX3BndCkpOworICAgICAgICBsMl9wZ2VudHJ5X3QgKmwydCA9IG1hcF94ZW5fcGFnZXRh YmxlKAogICAgICAgICAgICAgbDNlX2dldF9tZm4obDN0W2wzX3RhYmxlX29mZnNldChzdHViX2xp bmVhcildKSk7Ci0gICAgICAgIGwxX3BnZW50cnlfdCAqbDF0ID0gbWFwX3hlbl9wYWdldGFibGVf bmV3KAorICAgICAgICBsMV9wZ2VudHJ5X3QgKmwxdCA9IG1hcF94ZW5fcGFnZXRhYmxlKAogICAg ICAgICAgICAgbDJlX2dldF9tZm4obDJ0W2wyX3RhYmxlX29mZnNldChzdHViX2xpbmVhcildKSk7 CiAKICAgICAgICAgbDF0W2wxX3RhYmxlX29mZnNldChzdHViX2xpbmVhcildID0gbDFlX2VtcHR5 KCk7CiAKLSAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDF0KTsKLSAgICAgICAgVU5N QVBfWEVOX1BBR0VUQUJMRV9ORVcobDJ0KTsKLSAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9O RVcobDN0KTsKKyAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsMXQpOworICAgICAgICBVTk1B UF9YRU5fUEFHRVRBQkxFKGwydCk7CisgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDN0KTsK ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYyBiL3hlbi9h cmNoL3g4Ni94ODZfNjQvbW0uYwppbmRleCBjYWMwNmI3ODJkLi42MGNmYzk2MmMzIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9t bS5jCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIGludCBtMnBfbWFwcGVkKHVuc2lnbmVkIGxv bmcgc3BmbikKICAgICBpbnQgcmMgPSBNMlBfTk9fTUFQUEVEOwogCiAgICAgdmEgPSBST19NUFRf VklSVF9TVEFSVCArIHNwZm4gKiBzaXplb2YoKm1hY2hpbmVfdG9fcGh5c19tYXBwaW5nKTsKLSAg ICBsM19yb19tcHQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisgICAgbDNfcm9fbXB0ID0gbWFw X3hlbl9wYWdldGFibGUoCiAgICAgICAgIGw0ZV9nZXRfbWZuKGlkbGVfcGdfdGFibGVbbDRfdGFi bGVfb2Zmc2V0KHZhKV0pKTsKIAogICAgIHN3aXRjaCAoIGwzZV9nZXRfZmxhZ3MobDNfcm9fbXB0 W2wzX3RhYmxlX29mZnNldCh2YSldKSAmCkBAIC0xNTAsMTUgKzE1MCwxNSBAQCBzdGF0aWMgaW50 IG0ycF9tYXBwZWQodW5zaWduZWQgbG9uZyBzcGZuKQogICAgICAgICAgICAgcmMgPSBNMlBfTk9f TUFQUEVEOwogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgfQotICAgIGwyX3JvX21wdCA9IG1h cF94ZW5fcGFnZXRhYmxlX25ldygKKyAgICBsMl9yb19tcHQgPSBtYXBfeGVuX3BhZ2V0YWJsZSgK ICAgICAgICAgbDNlX2dldF9tZm4obDNfcm9fbXB0W2wzX3RhYmxlX29mZnNldCh2YSldKSk7CiAK ICAgICBpZiAobDJlX2dldF9mbGFncyhsMl9yb19tcHRbbDJfdGFibGVfb2Zmc2V0KHZhKV0pICYg X1BBR0VfUFJFU0VOVCkKICAgICAgICAgcmMgPSBNMlBfMk1fTUFQUEVEOwogCiAgb3V0OgotICAg IFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKGwyX3JvX21wdCk7Ci0gICAgVU5NQVBfWEVOX1BBR0VU QUJMRV9ORVcobDNfcm9fbXB0KTsKKyAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwyX3JvX21wdCk7 CisgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsM19yb19tcHQpOwogICAgIHJldHVybiByYzsKIH0K IApAQCAtMTc2LDEwICsxNzYsMTAgQEAgc3RhdGljIGludCBzaGFyZV9ob3RhZGRfbTJwX3RhYmxl KHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmluZm8pCiAgICAgewogICAgICAgICBuID0gTDJfUEFH RVRBQkxFX0VOVFJJRVMgKiBMMV9QQUdFVEFCTEVfRU5UUklFUzsKIAotICAgICAgICBsM3QgPSBt YXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisgICAgICAgIGwzdCA9IG1hcF94ZW5fcGFnZXRhYmxlKAog ICAgICAgICAgICAgbDRlX2dldF9tZm4oaWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQodild KSk7CiAgICAgICAgIGwzZSA9IGwzdFtsM190YWJsZV9vZmZzZXQodildOwotICAgICAgICBVTk1B UF9YRU5fUEFHRVRBQkxFX05FVyhsM3QpOworICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwz dCk7CiAKICAgICAgICAgaWYgKCAhKGwzZV9nZXRfZmxhZ3MobDNlKSAmIF9QQUdFX1BSRVNFTlQp ICkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg3LDkgKzE4Nyw5IEBAIHN0YXRpYyBpbnQg c2hhcmVfaG90YWRkX20ycF90YWJsZShzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvICppbmZvKQogICAg ICAgICB7CiAgICAgICAgICAgICBuID0gTDFfUEFHRVRBQkxFX0VOVFJJRVM7CiAKLSAgICAgICAg ICAgIGwydCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsM2VfZ2V0X21mbihsM2UpKTsKKyAgICAg ICAgICAgIGwydCA9IG1hcF94ZW5fcGFnZXRhYmxlKGwzZV9nZXRfbWZuKGwzZSkpOwogICAgICAg ICAgICAgbDJlID0gbDJ0W2wyX3RhYmxlX29mZnNldCh2KV07Ci0gICAgICAgICAgICBVTk1BUF9Y RU5fUEFHRVRBQkxFX05FVyhsMnQpOworICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShs MnQpOwogCiAgICAgICAgICAgICBpZiAoICEobDJlX2dldF9mbGFncyhsMmUpICYgX1BBR0VfUFJF U0VOVCkgKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjExLDE3ICsyMTEsMTcgQEAg c3RhdGljIGludCBzaGFyZV9ob3RhZGRfbTJwX3RhYmxlKHN0cnVjdCBtZW1faG90YWRkX2luZm8g KmluZm8pCiAgICAgICAgICAgdiAhPSBSRFdSX0NPTVBBVF9NUFRfVklSVF9FTkQ7CiAgICAgICAg ICAgdiArPSAxIDw8IEwyX1BBR0VUQUJMRV9TSElGVCApCiAgICAgewotICAgICAgICBsM3QgPSBt YXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisgICAgICAgIGwzdCA9IG1hcF94ZW5fcGFnZXRhYmxlKAog ICAgICAgICAgICAgbDRlX2dldF9tZm4oaWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQodild KSk7CiAgICAgICAgIGwzZSA9IGwzdFtsM190YWJsZV9vZmZzZXQodildOwotICAgICAgICBVTk1B UF9YRU5fUEFHRVRBQkxFX05FVyhsM3QpOworICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwz dCk7CiAKICAgICAgICAgaWYgKCAhKGwzZV9nZXRfZmxhZ3MobDNlKSAmIF9QQUdFX1BSRVNFTlQp ICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGwydCA9IG1hcF94ZW5fcGFnZXRh YmxlX25ldyhsM2VfZ2V0X21mbihsM2UpKTsKKyAgICAgICAgbDJ0ID0gbWFwX3hlbl9wYWdldGFi bGUobDNlX2dldF9tZm4obDNlKSk7CiAgICAgICAgIGwyZSA9IGwydFtsMl90YWJsZV9vZmZzZXQo dildOwotICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsMnQpOworICAgICAgICBVTk1B UF9YRU5fUEFHRVRBQkxFKGwydCk7CiAKICAgICAgICAgaWYgKCAhKGwyZV9nZXRfZmxhZ3MobDJl KSAmIF9QQUdFX1BSRVNFTlQpICkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjUyLDEyICsy NTIsMTIgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9jb21wYXRfbTJwX21hcHBpbmcoc3RydWN0IG1l bV9ob3RhZGRfaW5mbyAqaW5mbykKICAgICBpZiAoIGVtYXAgPiAoKFJEV1JfQ09NUEFUX01QVF9W SVJUX0VORCAtIFJEV1JfQ09NUEFUX01QVF9WSVJUX1NUQVJUKSA+PiAyKSApCiAgICAgICAgIGVt YXAgPSAoUkRXUl9DT01QQVRfTVBUX1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RB UlQpID4+IDI7CiAKLSAgICBsM19yb19tcHQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisgICAg bDNfcm9fbXB0ID0gbWFwX3hlbl9wYWdldGFibGUoCiAgICAgICAgIGw0ZV9nZXRfbWZuKGlkbGVf cGdfdGFibGVbbDRfdGFibGVfb2Zmc2V0KEhJUk9fQ09NUEFUX01QVF9WSVJUX1NUQVJUKV0pKTsK IAogICAgIEFTU0VSVChsM2VfZ2V0X2ZsYWdzKGwzX3JvX21wdFtsM190YWJsZV9vZmZzZXQoSElS T19DT01QQVRfTVBUX1ZJUlRfU1RBUlQpXSkgJiBfUEFHRV9QUkVTRU5UKTsKIAotICAgIGwyX3Jv X21wdCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldygKKyAgICBsMl9yb19tcHQgPSBtYXBfeGVuX3Bh Z2V0YWJsZSgKICAgICAgICAgbDNlX2dldF9tZm4obDNfcm9fbXB0W2wzX3RhYmxlX29mZnNldChI SVJPX0NPTVBBVF9NUFRfVklSVF9TVEFSVCldKSk7CiAKICAgICBmb3IgKCBpID0gc21hcDsgaSA8 IGVtYXA7ICkKQEAgLTI4MCw4ICsyODAsOCBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2NvbXBhdF9t MnBfbWFwcGluZyhzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvICppbmZvKQogICAgICAgICBpICs9IDFV TCA8PCAoTDJfUEFHRVRBQkxFX1NISUZUIC0gMik7CiAgICAgfQogCi0gICAgVU5NQVBfWEVOX1BB R0VUQUJMRV9ORVcobDJfcm9fbXB0KTsKLSAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsM19y b19tcHQpOworICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDJfcm9fbXB0KTsKKyAgICBVTk1BUF9Y RU5fUEFHRVRBQkxFKGwzX3JvX21wdCk7CiAKICAgICByZXR1cm47CiB9CkBAIC0yOTIsNyArMjky LDcgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9tMnBfbWFwcGluZyhzdHJ1Y3QgbWVtX2hvdGFkZF9p bmZvICppbmZvKQogICAgIHVuc2lnbmVkIGxvbmcgaSwgdmEsIHJ3dmE7CiAgICAgdW5zaWduZWQg bG9uZyBzbWFwID0gaW5mby0+c3BmbiwgZW1hcCA9IGluZm8tPmVwZm47CiAKLSAgICBsM19yb19t cHQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisgICAgbDNfcm9fbXB0ID0gbWFwX3hlbl9wYWdl dGFibGUoCiAgICAgICAgIGw0ZV9nZXRfbWZuKGlkbGVfcGdfdGFibGVbbDRfdGFibGVfb2Zmc2V0 KFJPX01QVF9WSVJUX1NUQVJUKV0pKTsKIAogICAgIC8qCkBAIC0zMTUsMTMgKzMxNSwxMyBAQCBz dGF0aWMgdm9pZCBkZXN0cm95X20ycF9tYXBwaW5nKHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmlu Zm8pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGwyX3JvX21w dCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldygKKyAgICAgICAgbDJfcm9fbXB0ID0gbWFwX3hlbl9w YWdldGFibGUoCiAgICAgICAgICAgICBsM2VfZ2V0X21mbihsM19yb19tcHRbbDNfdGFibGVfb2Zm c2V0KHZhKV0pKTsKICAgICAgICAgaWYgKCEobDJlX2dldF9mbGFncyhsMl9yb19tcHRbbDJfdGFi bGVfb2Zmc2V0KHZhKV0pICYgX1BBR0VfUFJFU0VOVCkpCiAgICAgICAgIHsKICAgICAgICAgICAg IGkgPSAoIGkgJiB+KCgxVUwgPDwgKEwyX1BBR0VUQUJMRV9TSElGVCAtIDMpKSAtIDEpKSArCiAg ICAgICAgICAgICAgICAgICAgICgxVUwgPDwgKEwyX1BBR0VUQUJMRV9TSElGVCAtIDMpKSA7Ci0g ICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsMl9yb19tcHQpOworICAgICAgICAg ICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsMl9yb19tcHQpOwogICAgICAgICAgICAgY29udGludWU7 CiAgICAgICAgIH0KIApAQCAtMzMyLDE3ICszMzIsMTcgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9t MnBfbWFwcGluZyhzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvICppbmZvKQogCiAgICAgICAgICAgICBk ZXN0cm95X3hlbl9tYXBwaW5ncyhyd3ZhLCByd3ZhICsgKDFVTCA8PCBMMl9QQUdFVEFCTEVfU0hJ RlQpKTsKIAotICAgICAgICAgICAgbDJ0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KAorICAgICAg ICAgICAgbDJ0ID0gbWFwX3hlbl9wYWdldGFibGUoCiAgICAgICAgICAgICAgICAgbDNlX2dldF9t Zm4obDNfcm9fbXB0W2wzX3RhYmxlX29mZnNldCh2YSldKSk7CiAgICAgICAgICAgICBsMmVfd3Jp dGUoJmwydFtsMl90YWJsZV9vZmZzZXQodmEpXSwgbDJlX2VtcHR5KCkpOwotICAgICAgICAgICAg VU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDJ0KTsKKyAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdF VEFCTEUobDJ0KTsKICAgICAgICAgfQogICAgICAgICBpID0gKCBpICYgfigoMVVMIDw8IChMMl9Q QUdFVEFCTEVfU0hJRlQgLSAzKSkgLSAxKSkgKwogICAgICAgICAgICAgICAoMVVMIDw8IChMMl9Q QUdFVEFCTEVfU0hJRlQgLSAzKSk7Ci0gICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKGwy X3JvX21wdCk7CisgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDJfcm9fbXB0KTsKICAgICB9 CiAKLSAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsM19yb19tcHQpOworICAgIFVOTUFQX1hF Tl9QQUdFVEFCTEUobDNfcm9fbXB0KTsKIAogICAgIGRlc3Ryb3lfY29tcGF0X20ycF9tYXBwaW5n KGluZm8pOwogCkBAIC0zODIsMTIgKzM4MiwxMiBAQCBzdGF0aWMgaW50IHNldHVwX2NvbXBhdF9t MnBfdGFibGUoc3RydWN0IG1lbV9ob3RhZGRfaW5mbyAqaW5mbykKIAogICAgIHZhID0gSElST19D T01QQVRfTVBUX1ZJUlRfU1RBUlQgKwogICAgICAgICAgc21hcCAqIHNpemVvZigqY29tcGF0X21h Y2hpbmVfdG9fcGh5c19tYXBwaW5nKTsKLSAgICBsM19yb19tcHQgPSBtYXBfeGVuX3BhZ2V0YWJs ZV9uZXcoCisgICAgbDNfcm9fbXB0ID0gbWFwX3hlbl9wYWdldGFibGUoCiAgICAgICAgIGw0ZV9n ZXRfbWZuKGlkbGVfcGdfdGFibGVbbDRfdGFibGVfb2Zmc2V0KHZhKV0pKTsKIAogICAgIEFTU0VS VChsM2VfZ2V0X2ZsYWdzKGwzX3JvX21wdFtsM190YWJsZV9vZmZzZXQodmEpXSkgJiBfUEFHRV9Q UkVTRU5UKTsKIAotICAgIGwyX3JvX21wdCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldygKKyAgICBs Ml9yb19tcHQgPSBtYXBfeGVuX3BhZ2V0YWJsZSgKICAgICAgICAgbDNlX2dldF9tZm4obDNfcm9f bXB0W2wzX3RhYmxlX29mZnNldCh2YSldKSk7CiAKICNkZWZpbmUgTUZOKHgpICgoKHgpIDw8IEwy X1BBR0VUQUJMRV9TSElGVCkgLyBzaXplb2YodW5zaWduZWQgaW50KSkKQEAgLTQyNyw4ICs0Mjcs OCBAQCBzdGF0aWMgaW50IHNldHVwX2NvbXBhdF9tMnBfdGFibGUoc3RydWN0IG1lbV9ob3RhZGRf aW5mbyAqaW5mbykKICN1bmRlZiBDTlQKICN1bmRlZiBNRk4KIAotICAgIFVOTUFQX1hFTl9QQUdF VEFCTEVfTkVXKGwyX3JvX21wdCk7Ci0gICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDNfcm9f bXB0KTsKKyAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwyX3JvX21wdCk7CisgICAgVU5NQVBfWEVO X1BBR0VUQUJMRShsM19yb19tcHQpOwogICAgIHJldHVybiBlcnI7CiB9CiAKQEAgLTQ0OSw3ICs0 NDksNyBAQCBzdGF0aWMgaW50IHNldHVwX20ycF90YWJsZShzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZv ICppbmZvKQogICAgICAgICAgICAgJiBfUEFHRV9QUkVTRU5UKTsKICAgICBsM19yb19tcHRfbWZu ID0gbDRlX2dldF9tZm4oaWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9fTVBUX1ZJUlRfU1RBUlQpXSk7Ci0gICAg bDNfcm9fbXB0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KGwzX3JvX21wdF9tZm4pOworICAgIGwz X3JvX21wdCA9IG1hcF94ZW5fcGFnZXRhYmxlKGwzX3JvX21wdF9tZm4pOwogCiAgICAgc21hcCA9 IChpbmZvLT5zcGZuICYgKH4oKDFVTCA8PCAoTDJfUEFHRVRBQkxFX1NISUZUIC0gMykpIC0xKSkp OwogICAgIGVtYXAgPSAoKGluZm8tPmVwZm4gKyAoKDFVTCA8PCAoTDJfUEFHRVRBQkxFX1NISUZU IC0gMykpIC0gMSApKSAmCkBAIC01MDUsMjMgKzUwNSwyMyBAQCBzdGF0aWMgaW50IHNldHVwX20y cF90YWJsZShzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvICppbmZvKQogICAgICAgICAgICAgaWYgKCBs M2VfZ2V0X2ZsYWdzKGwzX3JvX21wdFtsM190YWJsZV9vZmZzZXQodmEpXSkgJgogICAgICAgICAg ICAgICBfUEFHRV9QUkVTRU5UICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBVTk1B UF9YRU5fUEFHRVRBQkxFX05FVyhsMl9yb19tcHQpOworICAgICAgICAgICAgICAgIFVOTUFQX1hF Tl9QQUdFVEFCTEUobDJfcm9fbXB0KTsKICAgICAgICAgICAgICAgICBsMl9yb19tcHRfbWZuID0g bDNlX2dldF9tZm4obDNfcm9fbXB0W2wzX3RhYmxlX29mZnNldCh2YSldKTsKLSAgICAgICAgICAg ICAgICBsMl9yb19tcHQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDJfcm9fbXB0X21mbik7Cisg ICAgICAgICAgICAgICAgbDJfcm9fbXB0ID0gbWFwX3hlbl9wYWdldGFibGUobDJfcm9fbXB0X21m bik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGwyX3JvX21wdCk7CiAgICAgICAgICAgICAgICAg cGwyZSA9IGwyX3JvX21wdCArIGwyX3RhYmxlX29mZnNldCh2YSk7CiAgICAgICAgICAgICB9CiAg ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVU5NQVBfWEVO X1BBR0VUQUJMRV9ORVcobDJfcm9fbXB0KTsKLSAgICAgICAgICAgICAgICBsMl9yb19tcHRfbWZu ID0gYWxsb2NfeGVuX3BhZ2V0YWJsZV9uZXcoKTsKKyAgICAgICAgICAgICAgICBVTk1BUF9YRU5f UEFHRVRBQkxFKGwyX3JvX21wdCk7CisgICAgICAgICAgICAgICAgbDJfcm9fbXB0X21mbiA9IGFs bG9jX3hlbl9wYWdldGFibGUoKTsKICAgICAgICAgICAgICAgICBpZiAoIG1mbl9lcShsMl9yb19t cHRfbWZuLCBJTlZBTElEX01GTikgKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgcmV0ID0gLUVOT01FTTsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAg ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBsMl9yb19tcHQgPSBtYXBfeGVuX3Bh Z2V0YWJsZV9uZXcobDJfcm9fbXB0X21mbik7CisgICAgICAgICAgICAgICAgbDJfcm9fbXB0ID0g bWFwX3hlbl9wYWdldGFibGUobDJfcm9fbXB0X21mbik7CiAgICAgICAgICAgICAgICAgY2xlYXJf cGFnZShsMl9yb19tcHQpOwogICAgICAgICAgICAgICAgIGwzZV93cml0ZSgmbDNfcm9fbXB0W2wz X3RhYmxlX29mZnNldCh2YSldLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsM2VfZnJvbV9t Zm4obDJfcm9fbXB0X21mbiwKQEAgLTU0MSw4ICs1NDEsOCBAQCBzdGF0aWMgaW50IHNldHVwX20y cF90YWJsZShzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvICppbmZvKQogCiAgICAgcmV0ID0gc2V0dXBf Y29tcGF0X20ycF90YWJsZShpbmZvKTsKIGVycm9yOgotICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVf TkVXKGwyX3JvX21wdCk7Ci0gICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDNfcm9fbXB0KTsK KyAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwyX3JvX21wdCk7CisgICAgVU5NQVBfWEVOX1BBR0VU QUJMRShsM19yb19tcHQpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTU2OSwyMyArNTY5LDIz IEBAIHZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQpCiAgICAgICAgICAgICBsM19wZ2VudHJ5 X3QgKnBsM3Q7CiAgICAgICAgICAgICBtZm5fdCBtZm47CiAKLSAgICAgICAgICAgIG1mbiA9IGFs bG9jX3hlbl9wYWdldGFibGVfbmV3KCk7CisgICAgICAgICAgICBtZm4gPSBhbGxvY194ZW5fcGFn ZXRhYmxlKCk7CiAgICAgICAgICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCiAg ICAgICAgICAgICAgICAgZ290byBub21lbTsKIAotICAgICAgICAgICAgcGwzdCA9IG1hcF94ZW5f cGFnZXRhYmxlX25ldyhtZm4pOworICAgICAgICAgICAgcGwzdCA9IG1hcF94ZW5fcGFnZXRhYmxl KG1mbik7CiAgICAgICAgICAgICBjbGVhcl9wYWdlKHBsM3QpOwogICAgICAgICAgICAgbDRlX3dy aXRlKCZpZGxlX3BnX3RhYmxlW2w0X3RhYmxlX29mZnNldCh2YSldLAogICAgICAgICAgICAgICAg ICAgICAgIGw0ZV9mcm9tX21mbihtZm4sIF9fUEFHRV9IWVBFUlZJU09SX1JXKSk7Ci0gICAgICAg ICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhwbDN0KTsKKyAgICAgICAgICAgIFVOTUFQX1hF Tl9QQUdFVEFCTEUocGwzdCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBDcmVhdGUgdXNl ci1hY2Nlc3NpYmxlIEwyIGRpcmVjdG9yeSB0byBtYXAgdGhlIE1QVCBmb3IgZ3Vlc3RzLiAqLwot ICAgIGwzX3JvX21wdF9tZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlX25ldygpOworICAgIGwzX3Jv X21wdF9tZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlKCk7CiAgICAgaWYgKCBtZm5fZXEobDNfcm9f bXB0X21mbiwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgZ290byBub21lbTsKLSAgICBsM19yb19t cHQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDNfcm9fbXB0X21mbik7CisgICAgbDNfcm9fbXB0 ID0gbWFwX3hlbl9wYWdldGFibGUobDNfcm9fbXB0X21mbik7CiAgICAgY2xlYXJfcGFnZShsM19y b19tcHQpOwogICAgIGw0ZV93cml0ZSgmaWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQoUk9f TVBUX1ZJUlRfU1RBUlQpXSwKICAgICAgICAgICAgICAgbDRlX2Zyb21fbWZuKGwzX3JvX21wdF9t Zm4sIF9fUEFHRV9IWVBFUlZJU09SX1JPIHwgX1BBR0VfVVNFUikpOwpAQCAtNjc0LDEzICs2NzQs MTMgQEAgdm9pZCBfX2luaXQgcGFnaW5nX2luaXQodm9pZCkKICAgICAgICAgICAgICAqIFVubWFw IGwyX3JvX21wdCwgd2hpY2ggY291bGQndmUgYmVlbiBtYXBwZWQgaW4gcHJldmlvdXMKICAgICAg ICAgICAgICAqIGl0ZXJhdGlvbi4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgdW5tYXBf eGVuX3BhZ2V0YWJsZV9uZXcobDJfcm9fbXB0KTsKKyAgICAgICAgICAgIHVubWFwX3hlbl9wYWdl dGFibGUobDJfcm9fbXB0KTsKIAotICAgICAgICAgICAgbDJfcm9fbXB0X21mbiA9IGFsbG9jX3hl bl9wYWdldGFibGVfbmV3KCk7CisgICAgICAgICAgICBsMl9yb19tcHRfbWZuID0gYWxsb2NfeGVu X3BhZ2V0YWJsZSgpOwogICAgICAgICAgICAgaWYgKCBtZm5fZXEobDJfcm9fbXB0X21mbiwgSU5W QUxJRF9NRk4pICkKICAgICAgICAgICAgICAgICBnb3RvIG5vbWVtOwogCi0gICAgICAgICAgICBs Ml9yb19tcHQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDJfcm9fbXB0X21mbik7CisgICAgICAg ICAgICBsMl9yb19tcHQgPSBtYXBfeGVuX3BhZ2V0YWJsZShsMl9yb19tcHRfbWZuKTsKICAgICAg ICAgICAgIGNsZWFyX3BhZ2UobDJfcm9fbXB0KTsKICAgICAgICAgICAgIGwzZV93cml0ZSgmbDNf cm9fbXB0W2wzX3RhYmxlX29mZnNldCh2YSldLAogICAgICAgICAgICAgICAgICAgICAgIGwzZV9m cm9tX21mbihsMl9yb19tcHRfbWZuLApAQCAtNjk2LDggKzY5Niw4IEBAIHZvaWQgX19pbml0IHBh Z2luZ19pbml0KHZvaWQpCiAgICAgfQogI3VuZGVmIENOVAogI3VuZGVmIE1GTgotICAgIFVOTUFQ X1hFTl9QQUdFVEFCTEVfTkVXKGwyX3JvX21wdCk7Ci0gICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9O RVcobDNfcm9fbXB0KTsKKyAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGwyX3JvX21wdCk7CisgICAg VU5NQVBfWEVOX1BBR0VUQUJMRShsM19yb19tcHQpOwogCiAgICAgLyogQ3JlYXRlIHVzZXItYWNj ZXNzaWJsZSBMMiBkaXJlY3RvcnkgdG8gbWFwIHRoZSBNUFQgZm9yIGNvbXBhdCBndWVzdHMuICov CiAgICAgQlVJTERfQlVHX09OKGw0X3RhYmxlX29mZnNldChSRFdSX01QVF9WSVJUX1NUQVJUKSAh PQpAQCAtNzA1LDEyICs3MDUsMTIgQEAgdm9pZCBfX2luaXQgcGFnaW5nX2luaXQodm9pZCkKIAog ICAgIGwzX3JvX21wdF9tZm4gPSBsNGVfZ2V0X21mbihpZGxlX3BnX3RhYmxlW2w0X3RhYmxlX29m ZnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBISVJPX0NPTVBB VF9NUFRfVklSVF9TVEFSVCldKTsKLSAgICBsM19yb19tcHQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9u ZXcobDNfcm9fbXB0X21mbik7CisgICAgbDNfcm9fbXB0ID0gbWFwX3hlbl9wYWdldGFibGUobDNf cm9fbXB0X21mbik7CiAKLSAgICBsMl9yb19tcHRfbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZV9u ZXcoKTsKKyAgICBsMl9yb19tcHRfbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgpOwogICAgIGlm ICggbWZuX2VxKGwyX3JvX21wdF9tZm4sIElOVkFMSURfTUZOKSApCiAgICAgICAgIGdvdG8gbm9t ZW07Ci0gICAgbDJfcm9fbXB0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KGwyX3JvX21wdF9tZm4p OworICAgIGwyX3JvX21wdCA9IG1hcF94ZW5fcGFnZXRhYmxlKGwyX3JvX21wdF9tZm4pOwogICAg IGNvbXBhdF9pZGxlX3BnX3RhYmxlX2wyID0gbDJfcm9fbXB0OwogICAgIGNsZWFyX3BhZ2UobDJf cm9fbXB0KTsKICAgICBsM2Vfd3JpdGUoJmwzX3JvX21wdFtsM190YWJsZV9vZmZzZXQoSElST19D T01QQVRfTVBUX1ZJUlRfU1RBUlQpXSwKQEAgLTc1Niw4ICs3NTYsOCBAQCB2b2lkIF9faW5pdCBw YWdpbmdfaW5pdCh2b2lkKQogI3VuZGVmIENOVAogI3VuZGVmIE1GTgogCi0gICAgVU5NQVBfWEVO X1BBR0VUQUJMRV9ORVcobDJfcm9fbXB0KTsKLSAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhs M19yb19tcHQpOworICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDJfcm9fbXB0KTsKKyAgICBVTk1B UF9YRU5fUEFHRVRBQkxFKGwzX3JvX21wdCk7CiAKICAgICBtYWNoaW5lX3RvX3BoeXNfbWFwcGlu Z192YWxpZCA9IDE7CiAKQEAgLTgxNSwxMCArODE1LDEwIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBf ZnJhbWVfdGFibGUoc3RydWN0IG1lbV9ob3RhZGRfaW5mbyAqaW5mbykKIAogICAgIHdoaWxlIChz dmEgPCBldmEpCiAgICAgewotICAgICAgICBsM3QgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisg ICAgICAgIGwzdCA9IG1hcF94ZW5fcGFnZXRhYmxlKAogICAgICAgICAgICAgbDRlX2dldF9tZm4o aWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQoc3ZhKV0pKTsKICAgICAgICAgbDNlID0gbDN0 W2wzX3RhYmxlX29mZnNldChzdmEpXTsKLSAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVco bDN0KTsKKyAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsM3QpOwogICAgICAgICBpZiAoICEo bDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFJFU0VOVCkgfHwKICAgICAgICAgICAgICAobDNl X2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFNFKSApCiAgICAgICAgIHsKQEAgLTgyNyw5ICs4Mjcs OSBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2ZyYW1lX3RhYmxlKHN0cnVjdCBtZW1faG90YWRkX2lu Zm8gKmluZm8pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGwy dCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsM2VfZ2V0X21mbihsM2UpKTsKKyAgICAgICAgbDJ0 ID0gbWFwX3hlbl9wYWdldGFibGUobDNlX2dldF9tZm4obDNlKSk7CiAgICAgICAgIGwyZSA9IGwy dFtsMl90YWJsZV9vZmZzZXQoc3ZhKV07Ci0gICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVX KGwydCk7CisgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDJ0KTsKICAgICAgICAgQVNTRVJU KGwyZV9nZXRfZmxhZ3MobDJlKSAmIF9QQUdFX1BSRVNFTlQpOwogCiAgICAgICAgIGlmICggKGwy ZV9nZXRfZmxhZ3MobDJlKSAmIChfUEFHRV9QUkVTRU5UIHwgX1BBR0VfUFNFKSkgPT0KQEAgLTg0 NywxMCArODQ3LDEwIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfZnJhbWVfdGFibGUoc3RydWN0IG1l bV9ob3RhZGRfaW5mbyAqaW5mbykKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgewotICAgICAg ICAgICAgbDFfcGdlbnRyeV90ICpsMXQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDJlX2dldF9t Zm4obDJlKSk7CisgICAgICAgICAgICBsMV9wZ2VudHJ5X3QgKmwxdCA9IG1hcF94ZW5fcGFnZXRh YmxlKGwyZV9nZXRfbWZuKGwyZSkpOwogICAgICAgICAgICAgQVNTRVJUKGwxZV9nZXRfZmxhZ3Mo bDF0W2wxX3RhYmxlX29mZnNldChzdmEpXSkgJgogICAgICAgICAgICAgICAgICAgIF9QQUdFX1BS RVNFTlQpOwotICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDF0KTsKKyAgICAg ICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDF0KTsKICAgICAgICAgfQogI2VuZGlmCiAgICAg ICAgICBzdmEgPSAoc3ZhICYgfigoMVVMIDw8IFBBR0VfU0hJRlQpIC0gMSkpICsKQEAgLTk0MSwx MCArOTQxLDEwIEBAIHZvaWQgX19pbml0IHN1YmFyY2hfaW5pdF9tZW1vcnkodm9pZCkKICAgICB7 CiAgICAgICAgIG4gPSBMMl9QQUdFVEFCTEVfRU5UUklFUyAqIEwxX1BBR0VUQUJMRV9FTlRSSUVT OwogCi0gICAgICAgIGwzdCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldygKKyAgICAgICAgbDN0ID0g bWFwX3hlbl9wYWdldGFibGUoCiAgICAgICAgICAgICBsNGVfZ2V0X21mbihpZGxlX3BnX3RhYmxl W2w0X3RhYmxlX29mZnNldCh2KV0pKTsKICAgICAgICAgbDNlID0gbDN0W2wzX3RhYmxlX29mZnNl dCh2KV07Ci0gICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKGwzdCk7CisgICAgICAgIFVO TUFQX1hFTl9QQUdFVEFCTEUobDN0KTsKIAogICAgICAgICBpZiAoICEobDNlX2dldF9mbGFncyhs M2UpICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICAgICAgY29udGludWU7CkBAIC05NTIsOSAr OTUyLDkgQEAgdm9pZCBfX2luaXQgc3ViYXJjaF9pbml0X21lbW9yeSh2b2lkKQogICAgICAgICB7 CiAgICAgICAgICAgICBuID0gTDFfUEFHRVRBQkxFX0VOVFJJRVM7CiAKLSAgICAgICAgICAgIGwy dCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsM2VfZ2V0X21mbihsM2UpKTsKKyAgICAgICAgICAg IGwydCA9IG1hcF94ZW5fcGFnZXRhYmxlKGwzZV9nZXRfbWZuKGwzZSkpOwogICAgICAgICAgICAg bDJlID0gbDJ0W2wyX3RhYmxlX29mZnNldCh2KV07Ci0gICAgICAgICAgICBVTk1BUF9YRU5fUEFH RVRBQkxFX05FVyhsMnQpOworICAgICAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsMnQpOwog CiAgICAgICAgICAgICBpZiAoICEobDJlX2dldF9mbGFncyhsMmUpICYgX1BBR0VfUFJFU0VOVCkg KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTc0LDE3ICs5NzQsMTcgQEAgdm9pZCBf X2luaXQgc3ViYXJjaF9pbml0X21lbW9yeSh2b2lkKQogICAgICAgICAgIHYgIT0gUkRXUl9DT01Q QVRfTVBUX1ZJUlRfRU5EOwogICAgICAgICAgIHYgKz0gMSA8PCBMMl9QQUdFVEFCTEVfU0hJRlQg KQogICAgIHsKLSAgICAgICAgbDN0ID0gbWFwX3hlbl9wYWdldGFibGVfbmV3KAorICAgICAgICBs M3QgPSBtYXBfeGVuX3BhZ2V0YWJsZSgKICAgICAgICAgICAgIGw0ZV9nZXRfbWZuKGlkbGVfcGdf dGFibGVbbDRfdGFibGVfb2Zmc2V0KHYpXSkpOwogICAgICAgICBsM2UgPSBsM3RbbDNfdGFibGVf b2Zmc2V0KHYpXTsKLSAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcobDN0KTsKKyAgICAg ICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsM3QpOwogCiAgICAgICAgIGlmICggIShsM2VfZ2V0X2Zs YWdzKGwzZSkgJiBfUEFHRV9QUkVTRU5UKSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg ICAgICBsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDNlX2dldF9tZm4obDNlKSk7CisgICAg ICAgIGwydCA9IG1hcF94ZW5fcGFnZXRhYmxlKGwzZV9nZXRfbWZuKGwzZSkpOwogICAgICAgICBs MmUgPSBsMnRbbDJfdGFibGVfb2Zmc2V0KHYpXTsKLSAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJM RV9ORVcobDJ0KTsKKyAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsMnQpOwogCiAgICAgICAg IGlmICggIShsMmVfZ2V0X2ZsYWdzKGwyZSkgJiBfUEFHRV9QUkVTRU5UKSApCiAgICAgICAgICAg ICBjb250aW51ZTsKQEAgLTEwMzUsMTggKzEwMzUsMTggQEAgbG9uZyBzdWJhcmNoX21lbW9yeV9v cCh1bnNpZ25lZCBsb25nIGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAg ICAgICAgICAgICAgICh2IDwgKHVuc2lnbmVkIGxvbmcpKG1hY2hpbmVfdG9fcGh5c19tYXBwaW5n ICsgbWF4X3BhZ2UpKTsKICAgICAgICAgICAgICAgaSsrLCB2ICs9IDFVTCA8PCBMMl9QQUdFVEFC TEVfU0hJRlQgKQogICAgICAgICB7Ci0gICAgICAgICAgICBsM3QgPSBtYXBfeGVuX3BhZ2V0YWJs ZV9uZXcoCisgICAgICAgICAgICBsM3QgPSBtYXBfeGVuX3BhZ2V0YWJsZSgKICAgICAgICAgICAg ICAgICBsNGVfZ2V0X21mbihpZGxlX3BnX3RhYmxlW2w0X3RhYmxlX29mZnNldCh2KV0pKTsKICAg ICAgICAgICAgIGwzZSA9IGwzdFtsM190YWJsZV9vZmZzZXQodildOwotICAgICAgICAgICAgVU5N QVBfWEVOX1BBR0VUQUJMRV9ORVcobDN0KTsKKyAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFC TEUobDN0KTsKIAogICAgICAgICAgICAgaWYgKCAhKGwzZV9nZXRfZmxhZ3MobDNlKSAmIF9QQUdF X1BSRVNFTlQpICkKICAgICAgICAgICAgICAgICBtZm4gPSBsYXN0X21mbjsKICAgICAgICAgICAg IGVsc2UgaWYgKCAhKGwzZV9nZXRfZmxhZ3MobDNlKSAmIF9QQUdFX1BTRSkgKQogICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgIGwydCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsM2VfZ2V0 X21mbihsM2UpKTsKKyAgICAgICAgICAgICAgICBsMnQgPSBtYXBfeGVuX3BhZ2V0YWJsZShsM2Vf Z2V0X21mbihsM2UpKTsKICAgICAgICAgICAgICAgICBsMmUgPSBsMnRbbDJfdGFibGVfb2Zmc2V0 KHYpXTsKLSAgICAgICAgICAgICAgICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsMnQpOworICAg ICAgICAgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDJ0KTsKICAgICAgICAgICAgICAgICBp ZiAoIGwyZV9nZXRfZmxhZ3MobDJlKSAmIF9QQUdFX1BSRVNFTlQgKQogICAgICAgICAgICAgICAg ICAgICBtZm4gPSBsMmVfZ2V0X3BmbihsMmUpOwogICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vZWZpL2Jvb3QuYyBiL3hlbi9jb21tb24vZWZpL2Jvb3QuYwppbmRl eCBmNTVkNmE2ZDc2Li5kNDcwNjdjOTk4IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2VmaS9ib290 LmMKKysrIGIveGVuL2NvbW1vbi9lZmkvYm9vdC5jCkBAIC0xNDQzLDIwICsxNDQzLDIwIEBAIHN0 YXRpYyBfX2luaXQgdm9pZCBjb3B5X21hcHBpbmcobDRfcGdlbnRyeV90ICpsNCwKICAgICAgICAg ewogICAgICAgICAgICAgbWZuX3QgbDN0X21mbjsKIAotICAgICAgICAgICAgbDN0X21mbiA9IGFs bG9jX3hlbl9wYWdldGFibGVfbmV3KCk7CisgICAgICAgICAgICBsM3RfbWZuID0gYWxsb2NfeGVu X3BhZ2V0YWJsZSgpOwogICAgICAgICAgICAgQlVHX09OKG1mbl9lcShsM3RfbWZuLCBJTlZBTElE X01GTikpOwotICAgICAgICAgICAgbDNkc3QgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcobDN0X21m bik7CisgICAgICAgICAgICBsM2RzdCA9IG1hcF94ZW5fcGFnZXRhYmxlKGwzdF9tZm4pOwogICAg ICAgICAgICAgY2xlYXJfcGFnZShsM2RzdCk7CiAgICAgICAgICAgICBsNFtsNF90YWJsZV9vZmZz ZXQobWZuIDw8IFBBR0VfU0hJRlQpXSA9CiAgICAgICAgICAgICAgICAgbDRlX2Zyb21fbWZuKGwz dF9tZm4sIF9fUEFHRV9IWVBFUlZJU09SKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAg ICAgICAgICBsM2RzdCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsNGVfZ2V0X21mbihsNGUpKTsK LSAgICAgICAgbDNzcmMgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXcoCisgICAgICAgICAgICBsM2Rz dCA9IG1hcF94ZW5fcGFnZXRhYmxlKGw0ZV9nZXRfbWZuKGw0ZSkpOworICAgICAgICBsM3NyYyA9 IG1hcF94ZW5fcGFnZXRhYmxlKAogICAgICAgICAgICAgbDRlX2dldF9tZm4oaWRsZV9wZ190YWJs ZVtsNF90YWJsZV9vZmZzZXQodmEpXSkpOwogICAgICAgICBsM2RzdFtsM190YWJsZV9vZmZzZXQo bWZuIDw8IFBBR0VfU0hJRlQpXSA9IGwzc3JjW2wzX3RhYmxlX29mZnNldCh2YSldOwotICAgICAg ICBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhsM3NyYyk7Ci0gICAgICAgIFVOTUFQX1hFTl9QQUdF VEFCTEVfTkVXKGwzZHN0KTsKKyAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRShsM3NyYyk7Cisg ICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUobDNkc3QpOwogICAgIH0KIH0KIApAQCAtMTYwNCw5 ICsxNjA0LDkgQEAgdm9pZCBfX2luaXQgZWZpX2luaXRfbWVtb3J5KHZvaWQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtZGVzY192ZXIsIGVmaV9tZW1tYXApOwogI2Vsc2UKICAg ICAvKiBTZXQgdXAgMToxIHBhZ2UgdGFibGVzIHRvIGRvIHJ1bnRpbWUgY2FsbHMgaW4gInBoeXNp Y2FsIiBtb2RlLiAqLwotICAgIGVmaV9sNF9tZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlX25ldygp OworICAgIGVmaV9sNF9tZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlKCk7CiAgICAgQlVHX09OKG1m bl9lcShlZmlfbDRfbWZuLCBJTlZBTElEX01GTikpOwotICAgIGVmaV9sNF9wZ3RhYmxlID0gbWFw X3hlbl9wYWdldGFibGVfbmV3KGVmaV9sNF9tZm4pOworICAgIGVmaV9sNF9wZ3RhYmxlID0gbWFw X3hlbl9wYWdldGFibGUoZWZpX2w0X21mbik7CiAgICAgY2xlYXJfcGFnZShlZmlfbDRfcGd0YWJs ZSk7CiAKICAgICBjb3B5X21hcHBpbmcoZWZpX2w0X3BndGFibGUsIDAsIG1heF9wYWdlLCByYW1f cmFuZ2VfdmFsaWQpOwpAQCAtMTY0MSwzMSArMTY0MSwzMSBAQCB2b2lkIF9faW5pdCBlZmlfaW5p dF9tZW1vcnkodm9pZCkKICAgICAgICAgewogICAgICAgICAgICAgbWZuX3QgbDN0X21mbjsKIAot ICAgICAgICAgICAgbDN0X21mbiA9IGFsbG9jX3hlbl9wYWdldGFibGVfbmV3KCk7CisgICAgICAg ICAgICBsM3RfbWZuID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgpOwogICAgICAgICAgICAgQlVHX09O KG1mbl9lcShsM3RfbWZuLCBJTlZBTElEX01GTikpOwotICAgICAgICAgICAgcGwzZSA9IG1hcF94 ZW5fcGFnZXRhYmxlX25ldyhsM3RfbWZuKTsKKyAgICAgICAgICAgIHBsM2UgPSBtYXBfeGVuX3Bh Z2V0YWJsZShsM3RfbWZuKTsKICAgICAgICAgICAgIGNsZWFyX3BhZ2UocGwzZSk7CiAgICAgICAg ICAgICBlZmlfbDRfcGd0YWJsZVtsNF90YWJsZV9vZmZzZXQoYWRkcildID0KICAgICAgICAgICAg ICAgICBsNGVfZnJvbV9tZm4obDN0X21mbiwgX19QQUdFX0hZUEVSVklTT1IpOwogICAgICAgICB9 CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBsM2UgPSBtYXBfeGVuX3BhZ2V0YWJsZV9uZXco bDRlX2dldF9tZm4obDRlKSk7CisgICAgICAgICAgICBwbDNlID0gbWFwX3hlbl9wYWdldGFibGUo bDRlX2dldF9tZm4obDRlKSk7CiAgICAgICAgIHBsM2UgKz0gbDNfdGFibGVfb2Zmc2V0KGFkZHIp OwogCiAgICAgICAgIGlmICggIShsM2VfZ2V0X2ZsYWdzKCpwbDNlKSAmIF9QQUdFX1BSRVNFTlQp ICkKICAgICAgICAgewogICAgICAgICAgICAgbWZuX3QgbDJ0X21mbjsKIAotICAgICAgICAgICAg bDJ0X21mbiA9IGFsbG9jX3hlbl9wYWdldGFibGVfbmV3KCk7CisgICAgICAgICAgICBsMnRfbWZu ID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgpOwogICAgICAgICAgICAgQlVHX09OKG1mbl9lcShsMnRf bWZuLCBJTlZBTElEX01GTikpOwotICAgICAgICAgICAgcGwyZSA9IG1hcF94ZW5fcGFnZXRhYmxl X25ldyhsMnRfbWZuKTsKKyAgICAgICAgICAgIHBsMmUgPSBtYXBfeGVuX3BhZ2V0YWJsZShsMnRf bWZuKTsKICAgICAgICAgICAgIGNsZWFyX3BhZ2UocGwyZSk7CiAgICAgICAgICAgICAqcGwzZSA9 IGwzZV9mcm9tX21mbihsMnRfbWZuLCBfX1BBR0VfSFlQRVJWSVNPUik7CiAgICAgICAgIH0KICAg ICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBCVUdfT04obDNlX2dldF9mbGFncygq cGwzZSkgJiBfUEFHRV9QU0UpOwotICAgICAgICAgICAgcGwyZSA9IG1hcF94ZW5fcGFnZXRhYmxl X25ldyhsM2VfZ2V0X21mbigqcGwzZSkpOworICAgICAgICAgICAgcGwyZSA9IG1hcF94ZW5fcGFn ZXRhYmxlKGwzZV9nZXRfbWZuKCpwbDNlKSk7CiAgICAgICAgIH0KICAgICAgICAgcGwyZSArPSBs Ml90YWJsZV9vZmZzZXQoYWRkcik7CiAKQEAgLTE2NzMsMTYgKzE2NzMsMTYgQEAgdm9pZCBfX2lu aXQgZWZpX2luaXRfbWVtb3J5KHZvaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1mbl90IGwx dF9tZm47CiAKLSAgICAgICAgICAgIGwxdF9tZm4gPSBhbGxvY194ZW5fcGFnZXRhYmxlX25ldygp OworICAgICAgICAgICAgbDF0X21mbiA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKICAgICAgICAg ICAgIEJVR19PTihtZm5fZXEobDF0X21mbiwgSU5WQUxJRF9NRk4pKTsKLSAgICAgICAgICAgIGwx dCA9IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsMXRfbWZuKTsKKyAgICAgICAgICAgIGwxdCA9IG1h cF94ZW5fcGFnZXRhYmxlKGwxdF9tZm4pOwogICAgICAgICAgICAgY2xlYXJfcGFnZShsMXQpOwog ICAgICAgICAgICAgKnBsMmUgPSBsMmVfZnJvbV9tZm4obDF0X21mbiwgX19QQUdFX0hZUEVSVklT T1IpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgQlVH X09OKGwyZV9nZXRfZmxhZ3MoKnBsMmUpICYgX1BBR0VfUFNFKTsKLSAgICAgICAgICAgIGwxdCA9 IG1hcF94ZW5fcGFnZXRhYmxlX25ldyhsMmVfZ2V0X21mbigqcGwyZSkpOworICAgICAgICAgICAg bDF0ID0gbWFwX3hlbl9wYWdldGFibGUobDJlX2dldF9tZm4oKnBsMmUpKTsKICAgICAgICAgfQog ICAgICAgICBmb3IgKCBpID0gbDFfdGFibGVfb2Zmc2V0KGFkZHIpOwogICAgICAgICAgICAgICBp IDwgTDFfUEFHRVRBQkxFX0VOVFJJRVMgJiYgZXh0cmEtPnNtZm4gPCBleHRyYS0+ZW1mbjsKQEAg LTE2OTUsOSArMTY5NSw5IEBAIHZvaWQgX19pbml0IGVmaV9pbml0X21lbW9yeSh2b2lkKQogICAg ICAgICAgICAgeGZyZWUoZXh0cmEpOwogICAgICAgICB9CiAKLSAgICAgICAgVU5NQVBfWEVOX1BB R0VUQUJMRV9ORVcobDF0KTsKLSAgICAgICAgVU5NQVBfWEVOX1BBR0VUQUJMRV9ORVcocGwyZSk7 Ci0gICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKHBsM2UpOworICAgICAgICBVTk1BUF9Y RU5fUEFHRVRBQkxFKGwxdCk7CisgICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUocGwyZSk7Cisg ICAgICAgIFVOTUFQX1hFTl9QQUdFVEFCTEUocGwzZSk7CiAgICAgfQogCiAgICAgLyogSW5zZXJ0 IFhlbiBtYXBwaW5ncy4gKi8KQEAgLTE3MDYsNyArMTcwNiw3IEBAIHZvaWQgX19pbml0IGVmaV9p bml0X21lbW9yeSh2b2lkKQogICAgICAgICBlZmlfbDRfcGd0YWJsZVtpXSA9IGlkbGVfcGdfdGFi bGVbaV07CiAjZW5kaWYKIAotICAgIFVOTUFQX1hFTl9QQUdFVEFCTEVfTkVXKGVmaV9sNF9wZ3Rh YmxlKTsKKyAgICBVTk1BUF9YRU5fUEFHRVRBQkxFKGVmaV9sNF9wZ3RhYmxlKTsKIH0KICNlbmRp ZgogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94ZW4vaW5jbHVkZS9h c20teDg2L21tLmgKaW5kZXggN2ZhZTRiYjMxMS4uZWM1ZjU1NzNhOSAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaApAQCAt NjQyLDE1ICs2NDIsMTUgQEAgaW50IGFyY2hfYWNxdWlyZV9yZXNvdXJjZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBpbnQgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50ICpmbGFncyk7CiAKIC8qIEFsbG9jYXRvciBmdW5jdGlvbnMgZm9yIFhlbiBwYWdldGFi bGVzLiAqLwotbWZuX3QgYWxsb2NfeGVuX3BhZ2V0YWJsZV9uZXcodm9pZCk7Ci12b2lkICptYXBf eGVuX3BhZ2V0YWJsZV9uZXcobWZuX3QgbWZuKTsKLXZvaWQgdW5tYXBfeGVuX3BhZ2V0YWJsZV9u ZXcodm9pZCAqdik7Ci12b2lkIGZyZWVfeGVuX3BhZ2V0YWJsZV9uZXcobWZuX3QgbWZuKTsKLQot I2RlZmluZSBVTk1BUF9YRU5fUEFHRVRBQkxFX05FVyhwdHIpICAgIFwKLSAgICBkbyB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHVubWFwX3hlbl9wYWdldGFibGVf bmV3KChwdHIpKTsgXAotICAgICAgICAocHRyKSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgIFwK K21mbl90IGFsbG9jX3hlbl9wYWdldGFibGUodm9pZCk7Cit2b2lkICptYXBfeGVuX3BhZ2V0YWJs ZShtZm5fdCBtZm4pOwordm9pZCB1bm1hcF94ZW5fcGFnZXRhYmxlKHZvaWQgKnYpOwordm9pZCBm cmVlX3hlbl9wYWdldGFibGUobWZuX3QgbWZuKTsKKworI2RlZmluZSBVTk1BUF9YRU5fUEFHRVRB QkxFKHB0cikgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICB1bm1hcF94ZW5fcGFnZXRhYmxlKChwdHIpKTsgXAorICAgICAgICAocHRyKSA9IE5VTEw7 ICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKIGwxX3BnZW50cnlfdCAqdmlydF90 b194ZW5fbDFlKHVuc2lnbmVkIGxvbmcgdik7Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn L21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs