From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v3 for-next 4/4] xen: Convert __page_to_mfn and __mfn_to_page to use typesafe MFN Date: Wed, 1 Nov 2017 14:03:16 +0000 Message-ID: <20171101140316.31333-5-julien.grall@linaro.org> References: <20171101140316.31333-1-julien.grall@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171101140316.31333-1-julien.grall@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Jun Nakajima , Kevin Tian , Stefano Stabellini , Wei Liu , Suravee Suthikulpanit , Razvan Cojocaru , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Julien Grall , Ian Jackson , Tim Deegan , Julien Grall , Tamas K Lengyel , Jan Beulich , Shane Wang , Boris Ostrovsky , Gang Wei , Paul Durrant List-Id: xen-devel@lists.xenproject.org TW9zdCBvZiB0aGUgdXNlcnMgb2YgcGFnZV90b19tZm4gYW5kIG1mbl90b19wYWdlIGFyZSBlaXRo ZXIgb3ZlcnJpZGluZwp0aGUgbWFjcm9zIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3Qgb3Ig dXNlIG1mbl94L19tZm4gYmVjYXVzZSB0aGUKcmVzdCBvZiB0aGUgZnVuY3Rpb24gdXNlIG1mbl90 LgoKU28gbWFrZSBfX3BhZ2VfdG9fbWZuIGFuZCBfX21mbl90b19wYWdlIHJldHVybiBtZm5fdCBi eSBkZWZhdWx0LgoKT25seSByZWFzb25hYmxlIGNsZWFuLXVwcyBhcmUgZG9uZSBpbiB0aGlzIHBh dGNoIGJlY2F1c2UgaXQgaXMKYWxyZWFkeSBxdWl0ZSBiaWcuIFNvIHNvbWUgb2YgdGhlIGZpbGVz IG5vdyBvdmVycmlkZSBwYWdlX3RvX21mbiBhbmQKbWZuX3RvX3BhZ2UgdG8gYXZvaWQgdXNpbmcg bWZuX3QuCgpMYXN0bHksIGRvbWFpbl9wYWdlX3RvX21mbiBpcyBhbHNvIGNvbnZlcnRlZCB0byB1 c2UgbWZuX3QgZ2l2ZW4gdGhhdAptb3N0IG9mIHRoZSBjYWxsZXJzIGFyZSBub3cgc3dpdGNoZWQg dG8gX21mbihkb21haW5fcGFnZV90b19tZm4oLi4uKSkuCgpTaWduZWQtb2ZmLWJ5OiBKdWxpZW4g R3JhbGwgPGp1bGllbi5ncmFsbEBsaW5hcm8ub3JnPgoKLS0tCgpBbmRyZXcgc3VnZ2VzdGVkIHRv IGRyb3AgSVNfVkFMSURfUEFHRSBpbiB4ZW4vdG1lbV94ZW4uaC4gSGlzIGNvbW1lbnQKd2FzOgoK Ii9zaWdoICBUaGlzIGlzIHRhdXRvbG9naWNhbC4gIFRoZSBkZWZpbml0aW9uIG9mIGEgInZhbGlk IG1mbiIgaW4gdGhpcwpjYXNlIGlzIG9uZSBmb3Igd2hpY2ggd2UgaGF2ZSBmcmFtZXRhYmxlIGVu dHJ5LCBhbmQgYnkgaGF2aW5nIGEgc3RydWN0CnBhZ2VfaW5mbyBpbiBvdXIgaGFuZHMsIHRoaXMg aXMgYnkgZGVmaW5pdGlvbiB0cnVlICh1bmxlc3MgeW91IGhhdmUgYQp3aWxkIHBvaW50ZXIsIGF0 IHdoaWNoIHBvaW50IHlvdXIgYnVnIGlzIGVsc2V3aGVyZSkuCgpJU19WQUxJRF9QQUdFKCkgaXMg b25seSBldmVyIHVzZWQgaW4gYXNzZXJ0aW9ucyBhbmQgbmV2ZXIgdXNlZnVsbHksIHNvCmluc3Rl YWQgSSB3b3VsZCByZW1vdmUgaXQgZW50aXJlbHkgcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGZpeCBp dCB1cC4iCgpJIGNhbiByZW1vdmUgdGhlIGZ1bmN0aW9uIGluIGEgc2VwYXJhdGUgcGF0Y2ggYXQg dGhlIGJlZ2luaW5nIG9mIHRoZQpzZXJpZXMgaWYgS29ucmFkIChUTUVNIG1haW50YWluZXIpIGlz IGhhcHB5IHdpdGggdGhhdC4KCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtl cm5lbC5vcmc+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAg PEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3Nv bkBldS5jaXRyaXguY29tPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzog S29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogVGltIERl ZWdhbiA8dGltQHhlbi5vcmc+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDYzog UmF6dmFuIENvam9jYXJ1IDxyY29qb2NhcnVAYml0ZGVmZW5kZXIuY29tPgpDYzogVGFtYXMgSyBM ZW5neWVsIDx0YW1hc0B0a2xlbmd5ZWwuY29tPgpDYzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJh bnRAY2l0cml4LmNvbT4KQ2M6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNs ZS5jb20+CkNjOiBTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5pdEBh bWQuY29tPgpDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgpDYzogS2V2 aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2Uu ZHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBHYW5nIFdlaSA8Z2FuZy53ZWlAaW50ZWwuY29tPgpD YzogU2hhbmUgV2FuZyA8c2hhbmUud2FuZ0BpbnRlbC5jb20+CgogICAgQ2hhbmdlcyBpbiB2MzoK ICAgICAgICAtIFJlYmFzZSBvbiB0aGUgbGF0ZXN0IHN0YWdpbmcgYW5kIGZpeCBzb21lIGNvbmZs aWN0cy4gVGFncwogICAgICAgIGhhdmVuJ3QgYmUgcmV0YWluZWQuCiAgICAgICAgLSBTd2l0Y2gg dGhlIHByaW50ZiBmb3JtYXQgdG8gUFJJX21mbgoKICAgIENoYW5nZXMgaW4gdjI6CiAgICAgICAg LSBTb21lIHBhcnQgaGF2ZSBiZWVuIG1vdmVkIGluIHNlcGFyYXRlIHBhdGNoCiAgICAgICAgLSBS ZW1vdmUgb25lIHNwdXJpb3VzIGNvbW1lbnQKICAgICAgICAtIENvbnZlcnQgZG9tYWluX3BhZ2Vf dG9fbWZuIHRvIHVzZSBtZm5fdAotLS0KIHhlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyAgICAg ICAgICAgICB8ICAyIC0tCiB4ZW4vYXJjaC9hcm0va2VybmVsLmMgICAgICAgICAgICAgICAgICAg fCAgMiArLQogeGVuL2FyY2gvYXJtL21lbV9hY2Nlc3MuYyAgICAgICAgICAgICAgIHwgIDIgKy0K IHhlbi9hcmNoL2FybS9tbS5jICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKystLS0tCiB4 ZW4vYXJjaC9hcm0vcDJtLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKy0tLS0tLS0tCiB4 ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiB4ZW4vYXJj aC94ODYvZG9tYWluLmMgICAgICAgICAgICAgICAgICAgfCAyMSArKysrKysrKysrKy0tLS0tLS0t LS0KIHhlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jICAgICAgICAgICAgICB8ICA2ICsrKy0tLQog eGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHhlbi9hcmNo L3g4Ni9odm0vZG0uYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiB4ZW4vYXJjaC94ODYvaHZt L2RvbTBfYnVpbGQuYyAgICAgICAgICAgfCAgNiArKystLS0KIHhlbi9hcmNoL3g4Ni9odm0vZW11 bGF0ZS5jICAgICAgICAgICAgICB8ICA2ICsrKy0tLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAg ICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKystLS0tLS0tLQogeGVuL2FyY2gveDg2L2h2bS9p b3JlcS5jICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3N0ZHZn YS5jICAgICAgICAgICAgICAgfCAgMiArLQogeGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgICAg ICAgICAgICAgIHwgIDQgKystLQogeGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jICAgICAgICAg ICAgIHwgIDYgKysrLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMgICAgICAgICAgICAg fCAgMiArLQogeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgICAgICAgICAgICAgIHwgMTAgKysr KystLS0tLQogeGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jICAgICAgICAgICAgIHwgIDYgKysr LS0tCiB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0K IHhlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMgICAgICAgICAgICB8ICA2ICsrKy0tLQogeGVu L2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMgICAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4 Ni9tbS9oYXAvaGFwLmMgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQogeGVuL2FyY2gveDg2L21t L2hhcC9uZXN0ZWRfZXB0LmMgICAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9tZW1fc2hh cmluZy5jICAgICAgICAgICB8ICA1IC0tLS0tCiB4ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jICAg ICAgICAgICAgICAgfCAgNCArKysrCiB4ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jICAgICAgICAg ICAgICAgfCAgNiAtLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAgICAg ICB8ICA2IC0tLS0tLQogeGVuL2FyY2gveDg2L21tL3BhZ2luZy5jICAgICAgICAgICAgICAgIHwg IDYgLS0tLS0tCiB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaCAgICAgICAgfCAxNiAr Ky0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvbnVtYS5jICAgICAgICAgICAgICAgICAgICAg fCAgMiArLQogeGVuL2FyY2gveDg2L3BoeXNkZXYuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IHhlbi9hcmNoL3g4Ni9wdi9jYWxsYmFjay5jICAgICAgICAgICAgICB8ICA2IC0tLS0tLQogeGVu L2FyY2gveDg2L3B2L2Rlc2NyaXB0b3ItdGFibGVzLmMgICAgIHwgMTAgLS0tLS0tLS0tLQogeGVu L2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYyAgICAgICAgICAgIHwgIDYgKysrKysrCiB4ZW4vYXJj aC94ODYvcHYvZG9tYWluLmMgICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KIHhlbi9hcmNoL3g4 Ni9wdi9lbXVsLWdhdGUtb3AuYyAgICAgICAgICB8ICA2IC0tLS0tLQogeGVuL2FyY2gveDg2L3B2 L2VtdWwtcHJpdi1vcC5jICAgICAgICAgIHwgMTAgLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L3B2 L2dyYW50X3RhYmxlLmMgICAgICAgICAgIHwgIDYgLS0tLS0tCiB4ZW4vYXJjaC94ODYvcHYvcm8t cGFnZS1mYXVsdC5jICAgICAgICAgfCAgNiAtLS0tLS0KIHhlbi9hcmNoL3g4Ni9zbXBib290LmMg ICAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQogeGVuL2FyY2gveDg2L3Rib290LmMgICAgICAg ICAgICAgICAgICAgIHwgIDQgKystLQogeGVuL2FyY2gveDg2L3RyYXBzLmMgICAgICAgICAgICAg ICAgICAgIHwgIDQgKystLQogeGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jICAgICAgICAgICAgICAg IHwgIDYgKysrKysrCiB4ZW4vY29tbW9uL2RvbWFpbi5jICAgICAgICAgICAgICAgICAgICAgfCAg NCArKy0tCiB4ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMgICAgICAgICAgICAgICAgfCAgNiArKysr KysKIHhlbi9jb21tb24va2ltYWdlLmMgICAgICAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQog eGVuL2NvbW1vbi9tZW1vcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCiB4ZW4v Y29tbW9uL3BhZ2VfYWxsb2MuYyAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKIHhlbi9jb21t b24vdG1lbS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiB4ZW4vY29tbW9uL3RtZW1f eGVuLmMgICAgICAgICAgICAgICAgICAgfCAgNCAtLS0tCiB4ZW4vY29tbW9uL3RyYWNlLmMgICAg ICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKIHhlbi9jb21tb24vdm1hcC5jICAgICAgICAg ICAgICAgICAgICAgICB8ICA5ICsrKysrLS0tLQogeGVuL2NvbW1vbi94ZW5vcHJvZi5jICAgICAg ICAgICAgICAgICAgIHwgIDIgLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9t YXAuYyB8ICA2ICsrKysrKwogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAgICAgICAg IHwgIDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jICAgICB8ICAyICst CiB4ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggICAgICAgICAgICAgICAgfCAxNiArKysrKysrKyst LS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oICAgICAgICAgICAgICAgfCAgNCArKy0t CiB4ZW4vaW5jbHVkZS9hc20teDg2L21tLmggICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0t LS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggICAgICAgICAgICAgICB8ICAyICstCiB4ZW4v aW5jbHVkZS9hc20teDg2L3BhZ2UuaCAgICAgICAgICAgICAgfCAzMiArKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUveGVuL2RvbWFpbl9wYWdlLmggICAgICAgICAg IHwgIDggKysrKy0tLS0KIHhlbi9pbmNsdWRlL3hlbi90bWVtX3hlbi5oICAgICAgICAgICAgICB8 ICAyICstCiA2NSBmaWxlcyBjaGFuZ2VkLCAxNjYgaW5zZXJ0aW9ucygrKSwgMjM5IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNo L2FybS9kb21haW5fYnVpbGQuYwppbmRleCA1NTMyMDY4YWIxLi40YjU1NGI0OWMxIDEwMDY0NAot LS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKKysrIGIveGVuL2FyY2gvYXJtL2RvbWFp bl9idWlsZC5jCkBAIC01MCw4ICs1MCw2IEBAIHN0cnVjdCBtYXBfcmFuZ2VfZGF0YQogLyogT3Zl cnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90 ICovCiAjdW5kZWYgdmlydF90b19tZm4KICNkZWZpbmUgdmlydF90b19tZm4odmEpIF9tZm4oX192 aXJ0X3RvX21mbih2YSkpCi0jdW5kZWYgcGFnZV90b19tZm4KLSNkZWZpbmUgcGFnZV90b19tZm4o cGcpIF9tZm4oX19wYWdlX3RvX21mbihwZykpCiAKIC8vI2RlZmluZSBERUJVR18xMV9BTExPQ0FU SU9OCiAjaWZkZWYgREVCVUdfMTFfQUxMT0NBVElPTgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L2tlcm5lbC5jIGIveGVuL2FyY2gvYXJtL2tlcm5lbC5jCmluZGV4IGMyNzU1YTlhYjkuLjAxOGQx YWVkMDYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9rZXJuZWwuYworKysgYi94ZW4vYXJjaC9h cm0va2VybmVsLmMKQEAgLTI5NSw3ICsyOTUsNyBAQCBzdGF0aWMgX19pbml0IGludCBrZXJuZWxf ZGVjb21wcmVzcyhzdHJ1Y3QgYm9vdG1vZHVsZSAqbW9kKQogICAgICAgICBpb3VubWFwKGlucHV0 KTsKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAgICAgfQotICAgIG1mbiA9IF9tZm4ocGFnZV90 b19tZm4ocGFnZXMpKTsKKyAgICBtZm4gPSBwYWdlX3RvX21mbihwYWdlcyk7CiAgICAgb3V0cHV0 ID0gX192bWFwKCZtZm4sIDEgPDwga2VybmVsX29yZGVyX291dCwgMSwgMSwgUEFHRV9IWVBFUlZJ U09SLCBWTUFQX0RFRkFVTFQpOwogCiAgICAgcmMgPSBwZXJmb3JtX2d1bnppcChvdXRwdXQsIGlu cHV0LCBzaXplKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9tZW1fYWNjZXNzLmMgYi94ZW4v YXJjaC9hcm0vbWVtX2FjY2Vzcy5jCmluZGV4IDBmMmNiYjgxZDMuLjExMmUyOTFjYmEgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL2FybS9tZW1fYWNjZXNzLmMKKysrIGIveGVuL2FyY2gvYXJtL21lbV9h Y2Nlc3MuYwpAQCAtMjEwLDcgKzIxMCw3IEBAIHAybV9tZW1fYWNjZXNzX2NoZWNrX2FuZF9nZXRf cGFnZSh2YWRkcl90IGd2YSwgdW5zaWduZWQgbG9uZyBmbGFnLAogICAgIGlmICggdCAhPSBwMm1f cmFtX3J3ICkKICAgICAgICAgZ290byBlcnI7CiAKLSAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZu X3gobWZuKSk7CisgICAgcGFnZSA9IG1mbl90b19wYWdlKG1mbik7CiAKICAgICBpZiAoIHVubGlr ZWx5KCFnZXRfcGFnZShwYWdlLCB2LT5kb21haW4pKSApCiAgICAgICAgIHBhZ2UgPSBOVUxMOwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL21tLmMgYi94ZW4vYXJjaC9hcm0vbW0uYwppbmRleCAz YzMyOGUyZGY1Li5iODgxOGUwM2FiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vbW0uYworKysg Yi94ZW4vYXJjaC9hcm0vbW0uYwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgdW5tYXBfZG9tYWlu X3BhZ2UoY29uc3Qgdm9pZCAqdmEpCiAgICAgbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogfQog Ci11bnNpZ25lZCBsb25nIGRvbWFpbl9wYWdlX21hcF90b19tZm4oY29uc3Qgdm9pZCAqcHRyKQor bWZuX3QgZG9tYWluX3BhZ2VfbWFwX3RvX21mbihjb25zdCB2b2lkICpwdHIpCiB7CiAgICAgdW5z aWduZWQgbG9uZyB2YSA9ICh1bnNpZ25lZCBsb25nKXB0cjsKICAgICBscGFlX3QgKm1hcCA9IHRo aXNfY3B1KHhlbl9kb21tYXApOwpAQCAtNDg1LDEyICs0ODUsMTIgQEAgdW5zaWduZWQgbG9uZyBk b21haW5fcGFnZV9tYXBfdG9fbWZuKGNvbnN0IHZvaWQgKnB0cikKICAgICB1bnNpZ25lZCBsb25n IG9mZnNldCA9ICh2YT4+VEhJUkRfU0hJRlQpICYgTFBBRV9FTlRSWV9NQVNLOwogCiAgICAgaWYg KCB2YSA+PSBWTUFQX1ZJUlRfU1RBUlQgJiYgdmEgPCBWTUFQX1ZJUlRfRU5EICkKLSAgICAgICAg cmV0dXJuIF9fdmlydF90b19tZm4odmEpOworICAgICAgICByZXR1cm4gdmlydF90b19tZm4odmEp OwogCiAgICAgQVNTRVJUKHNsb3QgPj0gMCAmJiBzbG90IDwgRE9NSEVBUF9FTlRSSUVTKTsKICAg ICBBU1NFUlQobWFwW3Nsb3RdLnB0LmF2YWlsICE9IDApOwogCi0gICAgcmV0dXJuIG1hcFtzbG90 XS5wdC5iYXNlICsgb2Zmc2V0OworICAgIHJldHVybiBfbWZuKG1hcFtzbG90XS5wdC5iYXNlICsg b2Zmc2V0KTsKIH0KICNlbmRpZgogCkBAIC0xMjg4LDcgKzEyODgsNyBAQCBpbnQgeGVubWVtX2Fk ZF90b19waHlzbWFwX29uZSgKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgICAgICB9 CiAKLSAgICAgICAgbWZuID0gX21mbihwYWdlX3RvX21mbihwYWdlKSk7CisgICAgICAgIG1mbiA9 IHBhZ2VfdG9fbWZuKHBhZ2UpOwogICAgICAgICB0ID0gcDJtX21hcF9mb3JlaWduOwogCiAgICAg ICAgIHJjdV91bmxvY2tfZG9tYWluKG9kKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9wMm0u YyBiL3hlbi9hcmNoL2FybS9wMm0uYwppbmRleCA2OGI0ODg5OTdkLi5kMWVmNTM1YTQzIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC9hcm0vcDJtLmMKKysrIGIveGVuL2FyY2gvYXJtL3AybS5jCkBAIC0z OCwxMiArMzgsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgbWF4X3ZtaWQg PSBNQVhfVk1JRF84X0JJVDsKIAogI2RlZmluZSBQMk1fUk9PVF9QQUdFUyAgICAoMTw8UDJNX1JP T1RfT1JERVIpCiAKLS8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9tbS5oIHRvIG1ha2UgdGhl bSB3b3JrIHdpdGggbWZuX3QgKi8KLSN1bmRlZiBtZm5fdG9fcGFnZQotI2RlZmluZSBtZm5fdG9f cGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKLSN1bmRlZiBwYWdlX3RvX21mbgot I2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKLQogdW5zaWdu ZWQgaW50IF9fcmVhZF9tb3N0bHkgcDJtX2lwYV9iaXRzOwogCiAvKiBIZWxwZXJzIHRvIGxvb2t1 cCB0aGUgcHJvcGVydGllcyBvZiBlYWNoIGxldmVsICovCkBAIC05Nyw4ICs5MSw4IEBAIHZvaWQg ZHVtcF9wMm1fbG9va3VwKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgYWRkcikKIAogICAgIHBy aW50aygiZG9tJWQgSVBBIDB4JSJQUklwYWRkciJcbiIsIGQtPmRvbWFpbl9pZCwgYWRkcik7CiAK LSAgICBwcmludGsoIlAyTSBAICVwIG1mbjoweCVseFxuIiwKLSAgICAgICAgICAgcDJtLT5yb290 LCBfX3BhZ2VfdG9fbWZuKHAybS0+cm9vdCkpOworICAgIHByaW50aygiUDJNIEAgJXAgbWZuOiUj IlBSSV9tZm4iXG4iLAorICAgICAgICAgICBwMm0tPnJvb3QsIG1mbl94KHBhZ2VfdG9fbWZuKHAy bS0+cm9vdCkpKTsKIAogICAgIGR1bXBfcHRfd2FsayhwYWdlX3RvX21hZGRyKHAybS0+cm9vdCks IGFkZHIsCiAgICAgICAgICAgICAgICAgIFAyTV9ST09UX0xFVkVMLCBQMk1fUk9PVF9QQUdFUyk7 CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyBiL3hlbi9hcmNoL3g4Ni9jcHUv dnBtdS5jCmluZGV4IDdiYWY0NjE0YmUuLmI5NzhlMDU2MTMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9jcHUvdnBtdS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCkBAIC02NTMsNyAr NjUzLDcgQEAgc3RhdGljIHZvaWQgcHZwbXVfZmluaXNoKHN0cnVjdCBkb21haW4gKmQsIHhlbl9w bXVfcGFyYW1zX3QgKnBhcmFtcykKIHsKICAgICBzdHJ1Y3QgdmNwdSAqdjsKICAgICBzdHJ1Y3Qg dnBtdV9zdHJ1Y3QgKnZwbXU7Ci0gICAgdWludDY0X3QgbWZuOworICAgIG1mbl90IG1mbjsKICAg ICB2b2lkICp4ZW5wbXVfZGF0YTsKIAogICAgIGlmICggKHBhcmFtcy0+dmNwdSA+PSBkLT5tYXhf dmNwdXMpIHx8IChkLT52Y3B1W3BhcmFtcy0+dmNwdV0gPT0gTlVMTCkgKQpAQCAtNjc1LDcgKzY3 NSw3IEBAIHN0YXRpYyB2b2lkIHB2cG11X2ZpbmlzaChzdHJ1Y3QgZG9tYWluICpkLCB4ZW5fcG11 X3BhcmFtc190ICpwYXJhbXMpCiAgICAgaWYgKCB4ZW5wbXVfZGF0YSApCiAgICAgewogICAgICAg ICBtZm4gPSBkb21haW5fcGFnZV9tYXBfdG9fbWZuKHhlbnBtdV9kYXRhKTsKLSAgICAgICAgQVNT RVJUKG1mbl92YWxpZChfbWZuKG1mbikpKTsKKyAgICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm4p KTsKICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHhlbnBtdV9kYXRhKTsKICAgICAg ICAgcHV0X3BhZ2VfYW5kX3R5cGUobWZuX3RvX3BhZ2UobWZuKSk7CiAgICAgfQpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IDcz NWY0NWMxMzMuLmNiNTk2YzRhMzEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYwor KysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIGR1bXBf cGFnZWZyYW1lX2luZm8oc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICB9CiAgICAgICAgICAgICBwcmludGsoIiAgICBEb21QYWdlICVwOiBjYWY9JTA4bHgs IHRhZj0lIiBQUnR5cGVfaW5mbyAiXG4iLAotICAgICAgICAgICAgICAgICAgIF9wKHBhZ2VfdG9f bWZuKHBhZ2UpKSwKKyAgICAgICAgICAgICAgICAgICBfcChtZm5feChwYWdlX3RvX21mbihwYWdl KSkpLAogICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNvdW50X2luZm8sIHBhZ2UtPnUuaW51c2Uu dHlwZV9pbmZvKTsKICAgICAgICAgfQogICAgICAgICBzcGluX3VubG9jaygmZC0+cGFnZV9hbGxv Y19sb2NrKTsKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIGR1bXBfcGFnZWZyYW1lX2luZm8oc3Ry dWN0IGRvbWFpbiAqZCkKICAgICBwYWdlX2xpc3RfZm9yX2VhY2ggKCBwYWdlLCAmZC0+eGVucGFn ZV9saXN0ICkKICAgICB7CiAgICAgICAgIHByaW50aygiICAgIFhlblBhZ2UgJXA6IGNhZj0lMDhs eCwgdGFmPSUiIFBSdHlwZV9pbmZvICJcbiIsCi0gICAgICAgICAgICAgICBfcChwYWdlX3RvX21m bihwYWdlKSksCisgICAgICAgICAgICAgICBfcChtZm5feChwYWdlX3RvX21mbihwYWdlKSkpLAog ICAgICAgICAgICAgICAgcGFnZS0+Y291bnRfaW5mbywgcGFnZS0+dS5pbnVzZS50eXBlX2luZm8p OwogICAgIH0KICAgICBzcGluX3VubG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsKQEAgLTYyMSw3 ICs2MjEsOCBAQCBpbnQgYXJjaF9kb21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQog ICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSB2aXJ0X3RvX3BhZ2UoZC0+c2hhcmVkX2luZm8p LCAqbmV3X3BhZ2U7CiAgICAgaW50IHJldCA9IDA7CiAgICAgc3RydWN0IGRvbWFpbiAqb3duZXI7 Ci0gICAgdW5zaWduZWQgbG9uZyBtZm4sIGdmbjsKKyAgICBtZm5fdCBtZm47CisgICAgdW5zaWdu ZWQgbG9uZyBnZm47CiAgICAgcDJtX3R5cGVfdCBwMm10OwogICAgIHVuc2lnbmVkIGludCBpOwog CkBAIC02NTUsNyArNjU2LDcgQEAgaW50IGFyY2hfZG9tYWluX3NvZnRfcmVzZXQoc3RydWN0IGRv bWFpbiAqZCkKICAgICBBU1NFUlQoIG93bmVyID09IGQgKTsKIAogICAgIG1mbiA9IHBhZ2VfdG9f bWZuKHBhZ2UpOwotICAgIGdmbiA9IG1mbl90b19nbWZuKGQsIG1mbik7CisgICAgZ2ZuID0gbWZu X3RvX2dtZm4oZCwgbWZuX3gobWZuKSk7CiAKICAgICAvKgogICAgICAqIGdmbiA9PSBJTlZBTElE X0dGTiBpbmRpY2F0ZXMgdGhhdCB0aGUgc2hhcmVkX2luZm8gcGFnZSB3YXMgbmV2ZXIgbWFwcGVk CkBAIC02NjQsNyArNjY1LDcgQEAgaW50IGFyY2hfZG9tYWluX3NvZnRfcmVzZXQoc3RydWN0IGRv bWFpbiAqZCkKICAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQogICAgICAgICBn b3RvIGV4aXRfcHV0X3BhZ2U7CiAKLSAgICBpZiAoIG1mbl94KGdldF9nZm5fcXVlcnkoZCwgZ2Zu LCAmcDJtdCkpICE9IG1mbiApCisgICAgaWYgKCAhbWZuX2VxKGdldF9nZm5fcXVlcnkoZCwgZ2Zu LCAmcDJtdCksIG1mbikgKQogICAgIHsKICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiRmFp bGVkIHRvIGdldCBEb20lZCdzIHNoYXJlZF9pbmZvIEdGTiAoJWx4KVxuIiwKICAgICAgICAgICAg ICAgIGQtPmRvbWFpbl9pZCwgZ2ZuKTsKQEAgLTY4MSw3ICs2ODIsNyBAQCBpbnQgYXJjaF9kb21h aW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBnb3RvIGV4aXRfcHV0X2dm bjsKICAgICB9CiAKLSAgICByZXQgPSBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4o Z2ZuKSwgX21mbihtZm4pLCBQQUdFX09SREVSXzRLKTsKKyAgICByZXQgPSBndWVzdF9waHlzbWFw X3JlbW92ZV9wYWdlKGQsIF9nZm4oZ2ZuKSwgbWZuLCBQQUdFX09SREVSXzRLKTsKICAgICBpZiAo IHJldCApCiAgICAgewogICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJGYWlsZWQgdG8gcmVt b3ZlIERvbSVkJ3Mgc2hhcmVkX2luZm8gZnJhbWUgJWx4XG4iLApAQCAtNjkwLDcgKzY5MSw3IEBA IGludCBhcmNoX2RvbWFpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgIGdv dG8gZXhpdF9wdXRfZ2ZuOwogICAgIH0KIAotICAgIHJldCA9IGd1ZXN0X3BoeXNtYXBfYWRkX3Bh Z2UoZCwgX2dmbihnZm4pLCBfbWZuKHBhZ2VfdG9fbWZuKG5ld19wYWdlKSksCisgICAgcmV0ID0g Z3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGdmbiksIHBhZ2VfdG9fbWZuKG5ld19wYWdl KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEspOwogICAg IGlmICggcmV0ICkKICAgICB7CkBAIC05ODgsNyArOTg5LDcgQEAgaW50IGFyY2hfc2V0X2luZm9f Z3Vlc3QoCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZiAoIChwYWdl LT51LmludXNlLnR5cGVfaW5mbyAmIFBHVF90eXBlX21hc2spID09CiAgICAgICAgICAgICAgICAg ICAgICAgICAgUEdUX2w0X3BhZ2VfdGFibGUgKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9u ZSA9ICFmaWxsX3JvX21wdChfbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpKSk7CisgICAgICAgICAgICAg ICAgICAgICAgICBkb25lID0gIWZpbGxfcm9fbXB0KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKIAogICAg ICAgICAgICAgICAgICAgICBwYWdlX3VubG9jayhwYWdlKTsKICAgICAgICAgICAgICAgICB9CkBA IC0xMTE1LDcgKzExMTYsNyBAQCBpbnQgYXJjaF9zZXRfaW5mb19ndWVzdCgKICAgICAgICAgbDRf cGdlbnRyeV90ICpsNHRhYjsKIAogICAgICAgICBsNHRhYiA9IG1hcF9kb21haW5fcGFnZShwYWdl dGFibGVfZ2V0X21mbih2LT5hcmNoLmd1ZXN0X3RhYmxlKSk7Ci0gICAgICAgICpsNHRhYiA9IGw0 ZV9mcm9tX3BmbihwYWdlX3RvX21mbihjcjNfcGFnZSksCisgICAgICAgICpsNHRhYiA9IGw0ZV9m cm9tX21mbihwYWdlX3RvX21mbihjcjNfcGFnZSksCiAgICAgICAgICAgICBfUEFHRV9QUkVTRU5U fF9QQUdFX1JXfF9QQUdFX1VTRVJ8X1BBR0VfQUNDRVNTRUQpOwogICAgICAgICB1bm1hcF9kb21h aW5fcGFnZShsNHRhYik7CiAgICAgfQpAQCAtMTk0NSw3ICsxOTQ2LDcgQEAgaW50IGRvbWFpbl9y ZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBpZiAoIGQtPmFy Y2gucGlycV9lb2lfbWFwICE9IE5VTEwgKQogICAgICAgICB7CiAgICAgICAgICAgICB1bm1hcF9k b21haW5fcGFnZV9nbG9iYWwoZC0+YXJjaC5waXJxX2VvaV9tYXApOwotICAgICAgICAgICAgcHV0 X3BhZ2VfYW5kX3R5cGUobWZuX3RvX3BhZ2UoZC0+YXJjaC5waXJxX2VvaV9tYXBfbWZuKSk7Cisg ICAgICAgICAgICBwdXRfcGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZShfbWZuKGQtPmFyY2gucGly cV9lb2lfbWFwX21mbikpKTsKICAgICAgICAgICAgIGQtPmFyY2gucGlycV9lb2lfbWFwID0gTlVM TDsKICAgICAgICAgICAgIGQtPmFyY2guYXV0b191bm1hc2sgPSAwOwogICAgICAgICB9CmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvZG9tYWluX3BhZ2UuYyBiL3hlbi9hcmNoL3g4Ni9kb21haW5f cGFnZS5jCmluZGV4IDM0MzJhODU0ZGQuLjg4MDQ2YjM5YzkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9kb21haW5fcGFnZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jCkBAIC0z MzEsMTMgKzMzMSwxMyBAQCB2b2lkIHVubWFwX2RvbWFpbl9wYWdlX2dsb2JhbChjb25zdCB2b2lk ICpwdHIpCiB9CiAKIC8qIFRyYW5zbGF0ZSBhIG1hcC1kb21haW4tcGFnZSdkIGFkZHJlc3MgdG8g dGhlIHVuZGVybHlpbmcgTUZOICovCi11bnNpZ25lZCBsb25nIGRvbWFpbl9wYWdlX21hcF90b19t Zm4oY29uc3Qgdm9pZCAqcHRyKQorbWZuX3QgZG9tYWluX3BhZ2VfbWFwX3RvX21mbihjb25zdCB2 b2lkICpwdHIpCiB7CiAgICAgdW5zaWduZWQgbG9uZyB2YSA9ICh1bnNpZ25lZCBsb25nKXB0cjsK ICAgICBjb25zdCBsMV9wZ2VudHJ5X3QgKnBsMWU7CiAKICAgICBpZiAoIHZhID49IERJUkVDVE1B UF9WSVJUX1NUQVJUICkKLSAgICAgICAgcmV0dXJuIHZpcnRfdG9fbWZuKHB0cik7CisgICAgICAg IHJldHVybiBfbWZuKHZpcnRfdG9fbWZuKHB0cikpOwogCiAgICAgaWYgKCB2YSA+PSBWTUFQX1ZJ UlRfU1RBUlQgJiYgdmEgPCBWTUFQX1ZJUlRfRU5EICkKICAgICB7CkBAIC0zNTAsNSArMzUwLDUg QEAgdW5zaWduZWQgbG9uZyBkb21haW5fcGFnZV9tYXBfdG9fbWZuKGNvbnN0IHZvaWQgKnB0cikK ICAgICAgICAgcGwxZSA9ICZfX2xpbmVhcl9sMV90YWJsZVtsMV9saW5lYXJfb2Zmc2V0KHZhKV07 CiAgICAgfQogCi0gICAgcmV0dXJuIGwxZV9nZXRfcGZuKCpwbDFlKTsKKyAgICByZXR1cm4gbDFl X2dldF9tZm4oKnBsMWUpOwogfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIv eGVuL2FyY2gveDg2L2RvbWN0bC5jCmluZGV4IDgwYjRkZjllYzkuLjlmNmM5MjQxMWEgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYworKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMK QEAgLTQyOSw3ICs0MjksNyBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKAogICAgICAgICB7CiAgICAg ICAgICAgICBpZiAoIGkgPj0gbWF4X3BmbnMgKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICAgICAgbWZuID0gcGFnZV90b19tZm4ocGFnZSk7CisgICAgICAgICAgICBtZm4gPSBtZm5f eChwYWdlX3RvX21mbihwYWdlKSk7CiAgICAgICAgICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3Rfb2Zm c2V0KGRvbWN0bC0+dS5nZXRtZW1saXN0LmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaSwgJm1mbiwgMSkgKQogICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS9kbS5jIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCmluZGV4IGE3ODdm NDM3MzcuLjQ3NjA4MTZlZTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZG0uYworKysg Yi94ZW4vYXJjaC94ODYvaHZtL2RtLmMKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgaW50IG1v ZGlmaWVkX21lbW9yeShzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICAgICAgcGFnZSA9IGdldF9w YWdlX2Zyb21fZ2ZuKGQsIHBmbiwgTlVMTCwgUDJNX1VOU0hBUkUpOwogICAgICAgICAgICAgaWYg KCBwYWdlICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtZm5fdCBnbWZuID0gX21m bihwYWdlX3RvX21mbihwYWdlKSk7CisgICAgICAgICAgICAgICAgbWZuX3QgZ21mbiA9IHBhZ2Vf dG9fbWZuKHBhZ2UpOwogCiAgICAgICAgICAgICAgICAgcGFnaW5nX21hcmtfZGlydHkoZCwgZ21m bik7CiAgICAgICAgICAgICAgICAgLyoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG9t MF9idWlsZC5jIGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMKaW5kZXggYTY3MDcxYzcz OS4uYjUwNTA2ZWM2MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMK KysrIGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMKQEAgLTEyMCw3ICsxMjAsNyBAQCBz dGF0aWMgaW50IF9faW5pdCBwdmhfcG9wdWxhdGVfbWVtb3J5X3JhbmdlKHN0cnVjdCBkb21haW4g KmQsCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIHJjID0gZ3Vl c3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKHN0YXJ0KSwgX21mbihwYWdlX3RvX21mbihwYWdl KSksCisgICAgICAgIHJjID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKHN0YXJ0KSwg cGFnZV90b19tZm4ocGFnZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv cmRlcik7CiAgICAgICAgIGlmICggcmMgIT0gMCApCiAgICAgICAgIHsKQEAgLTI3MCw3ICsyNzAs NyBAQCBzdGF0aWMgaW50IF9faW5pdCBwdmhfc2V0dXBfdm14X3JlYWxtb2RlX2hlbHBlcnMoc3Ry dWN0IGRvbWFpbiAqZCkKICAgICB9CiAgICAgd3JpdGVfMzJiaXRfcHNlX2lkZW50bWFwKGlkZW50 X3B0KTsKICAgICB1bm1hcF9kb21haW5fcGFnZShpZGVudF9wdCk7Ci0gICAgcHV0X3BhZ2UobWZu X3RvX3BhZ2UobWZuX3gobWZuKSkpOworICAgIHB1dF9wYWdlKG1mbl90b19wYWdlKG1mbikpOwog ICAgIGQtPmFyY2guaHZtX2RvbWFpbi5wYXJhbXNbSFZNX1BBUkFNX0lERU5UX1BUXSA9IGdhZGRy OwogICAgIGlmICggcHZoX2FkZF9tZW1fcmFuZ2UoZCwgZ2FkZHIsIGdhZGRyICsgUEFHRV9TSVpF LCBFODIwX1JFU0VSVkVEKSApCiAgICAgICAgICAgICBwcmludGsoIlVuYWJsZSB0byBzZXQgaWRl bnRpdHkgcGFnZSB0YWJsZXMgYXMgcmVzZXJ2ZWQgaW4gdGhlIG1lbW9yeSBtYXBcbiIpOwpAQCAt Mjg4LDcgKzI4OCw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwdmhfc3RlYWxfbG93X3JhbShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHN0YXJ0LAogCiAgICAgZm9yICggbWZuID0gc3Rh cnQ7IG1mbiA8IHN0YXJ0ICsgbnJfcGFnZXM7IG1mbisrICkKICAgICB7Ci0gICAgICAgIHN0cnVj dCBwYWdlX2luZm8gKnBnID0gbWZuX3RvX3BhZ2UobWZuKTsKKyAgICAgICAgc3RydWN0IHBhZ2Vf aW5mbyAqcGcgPSBtZm5fdG9fcGFnZShfbWZuKG1mbikpOwogICAgICAgICBpbnQgcmM7CiAKICAg ICAgICAgcmMgPSB1bnNoYXJlX3hlbl9wYWdlX3dpdGhfZ3Vlc3QocGcsIGRvbV9pbyk7CmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11 bGF0ZS5jCmluZGV4IGU5MjRjZTA3YzQuLjMxMmFhOTE0MTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9odm0vZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCkBAIC01 OTAsNyArNTkwLDcgQEAgc3RhdGljIHZvaWQgKmh2bWVtdWxfbWFwX2xpbmVhcl9hZGRyKAogICAg ICAgICAgICAgZ290byB1bmhhbmRsZWFibGU7CiAgICAgICAgIH0KIAotICAgICAgICAqbWZuKysg PSBfbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpKTsKKyAgICAgICAgKm1mbisrID0gcGFnZV90b19tZm4o cGFnZSk7CiAKICAgICAgICAgaWYgKCBwMm1faXNfZGlzY2FyZF93cml0ZShwMm10KSApCiAgICAg ICAgIHsKQEAgLTYyMiw3ICs2MjIsNyBAQCBzdGF0aWMgdm9pZCAqaHZtZW11bF9tYXBfbGluZWFy X2FkZHIoCiAgb3V0OgogICAgIC8qIERyb3AgYWxsIGhlbGQgcmVmZXJlbmNlcy4gKi8KICAgICB3 aGlsZSAoIG1mbi0tID4gaHZtZW11bF9jdHh0LT5tZm4gKQotICAgICAgICBwdXRfcGFnZShtZm5f dG9fcGFnZShtZm5feCgqbWZuKSkpOworICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZSgqbWZu KSk7CiAKICAgICByZXR1cm4gZXJyOwogfQpAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyB2b2lk IGh2bWVtdWxfdW5tYXBfbGluZWFyX2FkZHIoCiAgICAgewogICAgICAgICBBU1NFUlQobWZuX3Zh bGlkKCptZm4pKTsKICAgICAgICAgcGFnaW5nX21hcmtfZGlydHkoY3VycmQsICptZm4pOwotICAg ICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm5feCgqbWZuKSkpOworICAgICAgICBwdXRfcGFn ZShtZm5fdG9fcGFnZSgqbWZuKSk7CiAKICAgICAgICAgKm1mbisrID0gX21mbigwKTsgLyogQ2xl YW4gc2xvdCBmb3IgbWFwKCkncyBlcnJvciBjaGVja2luZy4gKi8KICAgICB9CmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwppbmRleCAy MDViNGNiNjg1Li40ZDc5NWVlNzAwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5j CisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTIyMTEsNyArMjIxMSw3IEBAIGludCBo dm1fc2V0X2NyMCh1bnNpZ25lZCBsb25nIHZhbHVlLCBib29sX3QgbWF5X2RlZmVyKQogICAgICAg ICAgICAgdi0+YXJjaC5ndWVzdF90YWJsZSA9IHBhZ2V0YWJsZV9mcm9tX3BhZ2UocGFnZSk7CiAK ICAgICAgICAgICAgIEhWTV9EQkdfTE9HKERCR19MRVZFTF9WTU1VLCAiVXBkYXRlIENSMyB2YWx1 ZSA9ICVseCwgbWZuID0gJWx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHYtPmFyY2guaHZt X3ZjcHUuZ3Vlc3RfY3JbM10sIHBhZ2VfdG9fbWZuKHBhZ2UpKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbM10sIG1mbl94KHBhZ2VfdG9fbWZuKHBh Z2UpKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAoICEodmFsdWUgJiBYODZfQ1Iw X1BHKSAmJiAob2xkX3ZhbHVlICYgWDg2X0NSMF9QRykgKQpAQCAtMjU0Niw3ICsyNTQ2LDcgQEAg c3RhdGljIHZvaWQgKl9odm1fbWFwX2d1ZXN0X2ZyYW1lKHVuc2lnbmVkIGxvbmcgZ2ZuLCBib29s X3QgcGVybWFuZW50LAogICAgICAgICBpZiAoIHVubGlrZWx5KHAybV9pc19kaXNjYXJkX3dyaXRl KHAybXQpKSApCiAgICAgICAgICAgICAqd3JpdGFibGUgPSAwOwogICAgICAgICBlbHNlIGlmICgg IXBlcm1hbmVudCApCi0gICAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkLCBfbWZuKHBhZ2Vf dG9fbWZuKHBhZ2UpKSk7CisgICAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkLCBwYWdlX3Rv X21mbihwYWdlKSk7CiAgICAgfQogCiAgICAgaWYgKCAhcGVybWFuZW50ICkKQEAgLTI1ODgsNyAr MjU4OCw3IEBAIHZvaWQgKmh2bV9tYXBfZ3Vlc3RfZnJhbWVfcm8odW5zaWduZWQgbG9uZyBnZm4s IGJvb2xfdCBwZXJtYW5lbnQpCiAKIHZvaWQgaHZtX3VubWFwX2d1ZXN0X2ZyYW1lKHZvaWQgKnAs IGJvb2xfdCBwZXJtYW5lbnQpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBtZm47CisgICAgbWZuX3Qg bWZuOwogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CiAKICAgICBpZiAoICFwICkKQEAgLTI2 MDksNyArMjYwOSw3IEBAIHZvaWQgaHZtX3VubWFwX2d1ZXN0X2ZyYW1lKHZvaWQgKnAsIGJvb2xf dCBwZXJtYW5lbnQpCiAgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkodHJhY2ssICZkLT5hcmNo Lmh2bV9kb21haW4ud3JpdGVfbWFwLmxpc3QsIGxpc3QpCiAgICAgICAgICAgICBpZiAoIHRyYWNr LT5wYWdlID09IHBhZ2UgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHBhZ2luZ19t YXJrX2RpcnR5KGQsIF9tZm4obWZuKSk7CisgICAgICAgICAgICAgICAgcGFnaW5nX21hcmtfZGly dHkoZCwgbWZuKTsKICAgICAgICAgICAgICAgICBsaXN0X2RlbCgmdHJhY2stPmxpc3QpOwogICAg ICAgICAgICAgICAgIHhmcmVlKHRyYWNrKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2 MjYsNyArMjYyNiw3IEBAIHZvaWQgaHZtX21hcHBlZF9ndWVzdF9mcmFtZXNfbWFya19kaXJ0eShz dHJ1Y3QgZG9tYWluICpkKQogCiAgICAgc3Bpbl9sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ud3Jp dGVfbWFwLmxvY2spOwogICAgIGxpc3RfZm9yX2VhY2hfZW50cnkodHJhY2ssICZkLT5hcmNoLmh2 bV9kb21haW4ud3JpdGVfbWFwLmxpc3QsIGxpc3QpCi0gICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5 KGQsIF9tZm4ocGFnZV90b19tZm4odHJhY2stPnBhZ2UpKSk7CisgICAgICAgIHBhZ2luZ19tYXJr X2RpcnR5KGQsIHBhZ2VfdG9fbWZuKHRyYWNrLT5wYWdlKSk7CiAgICAgc3Bpbl91bmxvY2soJmQt PmFyY2guaHZtX2RvbWFpbi53cml0ZV9tYXAubG9jayk7CiB9CiAKQEAgLTMyMDAsOCArMzIwMCw4 IEBAIHN0YXRpYyBlbnVtIGh2bV90cmFuc2xhdGlvbl9yZXN1bHQgX19odm1fY29weSgKIAogICAg ICAgICAgICAgICAgIGlmICggeGNoZygmbGFzdHBhZ2UsIGdmbl94KGdmbikpICE9IGdmbl94KGdm bikgKQogICAgICAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19HX0RFQlVHLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIlcHYgYXR0ZW1wdGVkIHdyaXRlIHRvIHJlYWQtb25seSBn Zm4gJSNseCAobWZuPSUjbHgpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsIGdm bl94KGdmbiksIHBhZ2VfdG9fbWZuKHBhZ2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiJXB2IGF0dGVtcHRlZCB3cml0ZSB0byByZWFkLW9ubHkgZ2ZuICUjbHggKG1mbj0lIyJQUklf bWZuIilcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwgZ2ZuX3goZ2ZuKSwgbWZu X3gocGFnZV90b19tZm4ocGFnZSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UK ICAgICAgICAgICAgIHsKQEAgLTMyMDksNyArMzIwOSw3IEBAIHN0YXRpYyBlbnVtIGh2bV90cmFu c2xhdGlvbl9yZXN1bHQgX19odm1fY29weSgKICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHAs IGJ1ZiwgY291bnQpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg bWVtc2V0KHAsIDAsIGNvdW50KTsKLSAgICAgICAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0eSh2 LT5kb21haW4sIF9tZm4ocGFnZV90b19tZm4ocGFnZSkpKTsKKyAgICAgICAgICAgICAgICBwYWdp bmdfbWFya19kaXJ0eSh2LT5kb21haW4sIHBhZ2VfdG9fbWZuKHBhZ2UpKTsKICAgICAgICAgICAg IH0KICAgICAgICAgfQogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L2lvcmVxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKaW5kZXggZDVhZmUyMGNjOC4uMGY4 MjNkMjAxYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9odm0vaW9yZXEuYwpAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyB2b2lkIGh2bV9y ZW1vdmVfaW9yZXFfZ2ZuKAogICAgIHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBodm1faW9yZXFf cGFnZSAqaW9ycCkKIHsKICAgICBpZiAoIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dm bihpb3JwLT5nZm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWZuKHBh Z2VfdG9fbWZuKGlvcnAtPnBhZ2UpKSwgMCkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYWdlX3RvX21mbihpb3JwLT5wYWdlKSwgMCkgKQogICAgICAgICBkb21haW5fY3Jh c2goZCk7CiAgICAgY2xlYXJfcGFnZShpb3JwLT52YSk7CiB9CkBAIC0yODEsOSArMjgxLDkgQEAg c3RhdGljIGludCBodm1fYWRkX2lvcmVxX2dmbigKICAgICBjbGVhcl9wYWdlKGlvcnAtPnZhKTsK IAogICAgIHJjID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGlvcnAtPmdmbiksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4ocGFnZV90b19tZm4oaW9ycC0+cGFn ZSkpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV90b19tZm4oaW9y cC0+cGFnZSksIDApOwogICAgIGlmICggcmMgPT0gMCApCi0gICAgICAgIHBhZ2luZ19tYXJrX2Rp cnR5KGQsIF9tZm4ocGFnZV90b19tZm4oaW9ycC0+cGFnZSkpKTsKKyAgICAgICAgcGFnaW5nX21h cmtfZGlydHkoZCwgcGFnZV90b19tZm4oaW9ycC0+cGFnZSkpOwogCiAgICAgcmV0dXJuIHJjOwog fQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdGR2Z2EuYyBiL3hlbi9hcmNoL3g4Ni9o dm0vc3RkdmdhLmMKaW5kZXggMDg4ZmJkZjhjZS4uOTI1YmFiMjQzOCAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2h2bS9zdGR2Z2EuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3N0ZHZnYS5jCkBA IC01OTAsNyArNTkwLDcgQEAgdm9pZCBzdGR2Z2FfaW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAg ICAgICBpZiAoIHBnID09IE5VTEwgKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHMtPnZy YW1fcGFnZVtpXSA9IHBnOwotICAgICAgICBjbGVhcl9kb21haW5fcGFnZShfbWZuKHBhZ2VfdG9f bWZuKHBnKSkpOworICAgICAgICBjbGVhcl9kb21haW5fcGFnZShwYWdlX3RvX21mbihwZykpOwog ICAgIH0KIAogICAgIGlmICggaSA9PSBBUlJBWV9TSVpFKHMtPnZyYW1fcGFnZSkgKQpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9z dm0uYwppbmRleCBiOWNmNDIzZmQ5Li5mNTBmOTMxNTk4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvaHZtL3N2bS9zdm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYwpAQCAtMTUy MSw3ICsxNTIxLDcgQEAgc3RhdGljIGludCBzdm1fY3B1X3VwX3ByZXBhcmUodW5zaWduZWQgaW50 IGNwdSkKICAgICAgICAgaWYgKCAhcGcgKQogICAgICAgICAgICAgZ290byBlcnI7CiAKLSAgICAg ICAgY2xlYXJfZG9tYWluX3BhZ2UoX21mbihwYWdlX3RvX21mbihwZykpKTsKKyAgICAgICAgY2xl YXJfZG9tYWluX3BhZ2UocGFnZV90b19tZm4ocGcpKTsKICAgICAgICAgKnRoaXNfaHNhID0gcGFn ZV90b19tYWRkcihwZyk7CiAgICAgfQogCkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBzdGF0aWMgaW50 IHN2bV9jcHVfdXBfcHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1KQogICAgICAgICBpZiAoICFwZyAp CiAgICAgICAgICAgICBnb3RvIGVycjsKIAotICAgICAgICBjbGVhcl9kb21haW5fcGFnZShfbWZu KHBhZ2VfdG9fbWZuKHBnKSkpOworICAgICAgICBjbGVhcl9kb21haW5fcGFnZShwYWdlX3RvX21m bihwZykpOwogICAgICAgICAqdGhpc192bWNiID0gcGFnZV90b19tYWRkcihwZyk7CiAgICAgfQog CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgYi94ZW4vYXJjaC94ODYv aHZtL3ZpcmlkaWFuLmMKaW5kZXggZjBmYTU5ZDdkNS4uMDcwNTUxZTFhYiAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRp YW4uYwpAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9oeXBlcmNhbGxfcGFn ZShzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBpZiAoIHBhZ2UgKQogICAgICAgICAgICAgcHV0 X3BhZ2UocGFnZSk7CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQmFkIEdNRk4g JSMiUFJJX2dmbiIgKE1GTiAlIyJQUklfbWZuIilcbiIsCi0gICAgICAgICAgICAgICAgIGdtZm4s IHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IG1mbl94KElOVkFMSURfTUZOKSk7CisgICAgICAg ICAgICAgICAgIGdtZm4sIG1mbl94KHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IElOVkFMSURf TUZOKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0 aWMgdm9pZCBpbml0aWFsaXplX3ZwX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKIAogIGZhaWw6CiAg ICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAlIyJQUklfZ2ZuIiAoTUZOICUj IlBSSV9tZm4iKVxuIiwgZ21mbiwKLSAgICAgICAgICAgICBwYWdlID8gcGFnZV90b19tZm4ocGFn ZSkgOiBtZm5feChJTlZBTElEX01GTikpOworICAgICAgICAgICAgIG1mbl94KHBhZ2UgPyBwYWdl X3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlYXJkb3du X3ZwX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKQEAgLTQ5NCw3ICs0OTQsNyBAQCBzdGF0aWMgdm9p ZCB1cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1Y3QgZG9tYWluICpkLCBib29sX3QgaW5pdGlhbGl6 ZSkKICAgICAgICAgaWYgKCBwYWdlICkKICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwogICAg ICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4g JSMiUFJJX21mbiIpXG4iLAotICAgICAgICAgICAgICAgICBnbWZuLCBwYWdlID8gcGFnZV90b19t Zm4ocGFnZSkgOiBtZm5feChJTlZBTElEX01GTikpOworICAgICAgICAgICAgICAgICBnbWZuLCBt Zm5feChwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBJTlZBTElEX01GTikpOwogICAgICAgICBy ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMg Yi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKaW5kZXggYjUxMDBiNTAyMS4uOGVhYTU4ZTNj MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCisrKyBiL3hlbi9hcmNo L3g4Ni9odm0vdm14L3ZtY3MuYwpAQCAtMTQzNyw3ICsxNDM3LDcgQEAgaW50IHZteF92Y3B1X2Vu YWJsZV9wbWwoc3RydWN0IHZjcHUgKnYpCiAKICAgICB2bXhfdm1jc19lbnRlcih2KTsKIAotICAg IF9fdm13cml0ZShQTUxfQUREUkVTUywgcGFnZV90b19tZm4odi0+YXJjaC5odm1fdm14LnBtbF9w ZykgPDwgUEFHRV9TSElGVCk7CisgICAgX192bXdyaXRlKFBNTF9BRERSRVNTLCBwYWdlX3RvX21h ZGRyKHYtPmFyY2guaHZtX3ZteC5wbWxfcGcpKTsKICAgICBfX3Ztd3JpdGUoR1VFU1RfUE1MX0lO REVYLCBOUl9QTUxfRU5UUklFUyAtIDEpOwogCiAgICAgdi0+YXJjaC5odm1fdm14LnNlY29uZGFy eV9leGVjX2NvbnRyb2wgfD0gU0VDT05EQVJZX0VYRUNfRU5BQkxFX1BNTDsKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMK aW5kZXggYjE4Y2NlYWI1NS4uYzY1N2JhODlmNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2 bS92bXgvdm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKQEAgLTI5NzgsNyAr Mjk3OCw3IEBAIGdwX2ZhdWx0Ogogc3RhdGljIGludCB2bXhfYWxsb2NfdmxhcGljX21hcHBpbmco c3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsKLSAgICB1bnNp Z25lZCBsb25nIG1mbjsKKyAgICBtZm5fdCBtZm47CiAKICAgICBpZiAoICFjcHVfaGFzX3ZteF92 aXJ0dWFsaXplX2FwaWNfYWNjZXNzZXMgKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI5ODcsMTAg KzI5ODcsMTAgQEAgc3RhdGljIGludCB2bXhfYWxsb2NfdmxhcGljX21hcHBpbmcoc3RydWN0IGRv bWFpbiAqZCkKICAgICBpZiAoICFwZyApCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwogICAgIG1m biA9IHBhZ2VfdG9fbWZuKHBnKTsKLSAgICBjbGVhcl9kb21haW5fcGFnZShfbWZuKG1mbikpOwor ICAgIGNsZWFyX2RvbWFpbl9wYWdlKG1mbik7CiAgICAgc2hhcmVfeGVuX3BhZ2Vfd2l0aF9ndWVz dChwZywgZCwgWEVOU0hBUkVfd3JpdGFibGUpOwotICAgIGQtPmFyY2guaHZtX2RvbWFpbi52bXgu YXBpY19hY2Nlc3NfbWZuID0gbWZuOwotICAgIHNldF9tbWlvX3AybV9lbnRyeShkLCBwYWRkcl90 b19wZm4oQVBJQ19ERUZBVUxUX1BIWVNfQkFTRSksIF9tZm4obWZuKSwKKyAgICBkLT5hcmNoLmh2 bV9kb21haW4udm14LmFwaWNfYWNjZXNzX21mbiA9IG1mbl94KG1mbik7CisgICAgc2V0X21taW9f cDJtX2VudHJ5KGQsIHBhZGRyX3RvX3BmbihBUElDX0RFRkFVTFRfUEhZU19CQVNFKSwgbWZuLAog ICAgICAgICAgICAgICAgICAgICAgICBQQUdFX09SREVSXzRLLCBwMm1fZ2V0X2hvc3RwMm0oZCkt PmRlZmF1bHRfYWNjZXNzKTsKIAogICAgIHJldHVybiAwOwpAQCAtMzAwMSw3ICszMDAxLDcgQEAg c3RhdGljIHZvaWQgdm14X2ZyZWVfdmxhcGljX21hcHBpbmcoc3RydWN0IGRvbWFpbiAqZCkKICAg ICB1bnNpZ25lZCBsb25nIG1mbiA9IGQtPmFyY2guaHZtX2RvbWFpbi52bXguYXBpY19hY2Nlc3Nf bWZuOwogCiAgICAgaWYgKCBtZm4gIT0gMCApCi0gICAgICAgIGZyZWVfc2hhcmVkX2RvbWhlYXBf cGFnZShtZm5fdG9fcGFnZShtZm4pKTsKKyAgICAgICAgZnJlZV9zaGFyZWRfZG9taGVhcF9wYWdl KG1mbl90b19wYWdlKF9tZm4obWZuKSkpOwogfQogCiBzdGF0aWMgdm9pZCB2bXhfaW5zdGFsbF92 bGFwaWNfbWFwcGluZyhzdHJ1Y3QgdmNwdSAqdikKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vdm14L3Z2bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYwppbmRleCBkZGUwMmMw NzZiLi40ODM2ZDY5YzBlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMK KysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCkBAIC04NCw3ICs4NCw3IEBAIGludCBu dm14X3ZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgfQogICAgICAgICB2 LT5hcmNoLmh2bV92bXgudm1yZWFkX2JpdG1hcCA9IHZtcmVhZF9iaXRtYXA7CiAKLSAgICAgICAg Y2xlYXJfZG9tYWluX3BhZ2UoX21mbihwYWdlX3RvX21mbih2bXJlYWRfYml0bWFwKSkpOworICAg ICAgICBjbGVhcl9kb21haW5fcGFnZShwYWdlX3RvX21mbih2bXJlYWRfYml0bWFwKSk7CiAKICAg ICAgICAgdm13cml0ZV9iaXRtYXAgPSBhbGxvY19kb21oZWFwX3BhZ2UoTlVMTCwgMCk7CiAgICAg ICAgIGlmICggIXZtd3JpdGVfYml0bWFwICkKQEAgLTE3MjksNyArMTcyOSw3IEBAIGludCBudm14 X2hhbmRsZV92bXB0cmxkKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICAgICAg ICAgIG52Y3B1LT5udl92dm1jeCA9IHZ2bWN4OwogICAgICAgICAgICAgICAgIG52Y3B1LT5udl92 dm1jeGFkZHIgPSBncGE7CiAgICAgICAgICAgICAgICAgdi0+YXJjaC5odm1fdm14LnZtY3Nfc2hh ZG93X21hZGRyID0KLSAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKGRvbWFpbl9wYWdl X21hcF90b19tZm4odnZtY3gpKTsKKyAgICAgICAgICAgICAgICAgICAgbWZuX3RvX21hZGRyKGRv bWFpbl9wYWdlX21hcF90b19tZm4odnZtY3gpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg IGVsc2UKICAgICAgICAgICAgIHsKQEAgLTE4MTUsNyArMTgxNSw3IEBAIGludCBudm14X2hhbmRs ZV92bWNsZWFyKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICB7CiAgICAgICAg ICAgICBpZiAoIHdyaXRhYmxlICkKICAgICAgICAgICAgICAgICBjbGVhcl92dm1jc19sYXVuY2hl ZCgmbnZteC0+bGF1bmNoZWRfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkb21haW5fcGFnZV9tYXBfdG9fbWZuKHZ2bWNzKSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWZuX3goZG9tYWluX3BhZ2VfbWFwX3RvX21mbih2dm1jcykpKTsK ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByYyA9IFZNRkFJTF9WQUxJRDsKICAg ICAgICAgICAgIGh2bV91bm1hcF9ndWVzdF9mcmFtZSh2dm1jcywgMCk7CmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCmluZGV4IGEyMGZkY2FlYTQuLmY2 Y2E0Zjg4NGIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9tbS5jCkBAIC0xMjgsMTIgKzEyOCw2IEBACiAKICNpbmNsdWRlICJwdi9tbS5oIgogCi0vKiBP dmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZu X3QgKi8KLSN1bmRlZiBtZm5fdG9fcGFnZQotI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZu X3RvX3BhZ2UobWZuX3gobWZuKSkKLSN1bmRlZiBwYWdlX3RvX21mbgotI2RlZmluZSBwYWdlX3Rv X21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKLQogLyogTWFwcGluZyBvZiB0aGUgZml4 bWFwIHNwYWNlIG5lZWRlZCBlYXJseS4gKi8KIGwxX3BnZW50cnlfdCBfX3NlY3Rpb24oIi5ic3Mu cGFnZV9hbGlnbmVkIikgX19hbGlnbmVkKFBBR0VfU0laRSkKICAgICBsMV9maXhtYXBbTDFfUEFH RVRBQkxFX0VOVFJJRVNdOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsu YyBiL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKaW5kZXggNjA1NWZlYzFhZC4uZjY3YWVk YTNkMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYworKysgYi94ZW4v YXJjaC94ODYvbW0vZ3Vlc3Rfd2Fsay5jCkBAIC00NjksMjAgKzQ2OSwyMCBAQCBndWVzdF93YWxr X3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHAybV9kb21haW4gKnAybSwKICAgICBpZiAo IGwzcCApCiAgICAgewogICAgICAgICB1bm1hcF9kb21haW5fcGFnZShsM3ApOwotICAgICAgICBw dXRfcGFnZShtZm5fdG9fcGFnZShtZm5feChndy0+bDNtZm4pKSk7CisgICAgICAgIHB1dF9wYWdl KG1mbl90b19wYWdlKGd3LT5sM21mbikpOwogICAgIH0KICNlbmRpZgogI2lmIEdVRVNUX1BBR0lO R19MRVZFTFMgPj0gMwogICAgIGlmICggbDJwICkKICAgICB7CiAgICAgICAgIHVubWFwX2RvbWFp bl9wYWdlKGwycCk7Ci0gICAgICAgIHB1dF9wYWdlKG1mbl90b19wYWdlKG1mbl94KGd3LT5sMm1m bikpKTsKKyAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UoZ3ctPmwybWZuKSk7CiAgICAgfQog I2VuZGlmCiAgICAgaWYgKCBsMXAgKQogICAgIHsKICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2Uo bDFwKTsKLSAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobWZuX3goZ3ctPmwxbWZuKSkpOwor ICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShndy0+bDFtZm4pKTsKICAgICB9CiAKICAgICBy ZXR1cm4gd2Fsa19vazsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fs ay5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKaW5kZXggYzU1MDAxN2JhNC4u Y2IzZjljZWJlNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMK KysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKQEAgLTgzLDcgKzgzLDcgQEAg dW5zaWduZWQgbG9uZyBoYXBfcDJtX2dhX3RvX2dmbihHVUVTVF9QQUdJTkdfTEVWRUxTKSgKICAg ICAgICAgKnBmZWMgJj0gflBGRUNfcGFnZV9wcmVzZW50OwogICAgICAgICBnb3RvIG91dF90d2Vh a19wZmVjOwogICAgIH0KLSAgICB0b3BfbWZuID0gX21mbihwYWdlX3RvX21mbih0b3BfcGFnZSkp OworICAgIHRvcF9tZm4gPSBwYWdlX3RvX21mbih0b3BfcGFnZSk7CiAKICAgICAvKiBNYXAgdGhl IHRvcC1sZXZlbCB0YWJsZSBhbmQgY2FsbCB0aGUgdHJlZS13YWxrZXIgKi8KICAgICBBU1NFUlQo bWZuX3ZhbGlkKHRvcF9tZm4pKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFw LmMgYi94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCmluZGV4IDQxZGViOTA3ODcuLjk3ZjI1MTZl Y2QgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKKysrIGIveGVuL2FyY2gv eDg2L21tL2hhcC9oYXAuYwpAQCAtNDIsMTIgKzQyLDYgQEAKIAogI2luY2x1ZGUgInByaXZhdGUu aCIKIAotLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29y ayB3aXRoIG1mbl90ICovCi0jdW5kZWYgbWZuX3RvX3BhZ2UKLSNkZWZpbmUgbWZuX3RvX3BhZ2Uo X20pIF9fbWZuX3RvX3BhZ2UobWZuX3goX20pKQotI3VuZGVmIHBhZ2VfdG9fbWZuCi0jZGVmaW5l IHBhZ2VfdG9fbWZuKF9wZykgX21mbihfX3BhZ2VfdG9fbWZuKF9wZykpCi0KIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiAgICAgICAgICBIQVAg VlJBTSBUUkFDS0lORyBTVVBQT1JUICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t bS9oYXAvbmVzdGVkX2VwdC5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMKaW5k ZXggMTRiMWJiMDFlOS4uMTczOGRmNjlmNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2hh cC9uZXN0ZWRfZXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMKQEAg LTE3Myw3ICsxNzMsNyBAQCBuZXB0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25l ZCBsb25nIGwyZ2EsIGVwdF93YWxrX3QgKmd3KQogICAgICAgICAgICAgZ290byBtYXBfZXJyOwog ICAgICAgICBndy0+bHhlW2x2bF0gPSBseHBbZXB0X2x2bF90YWJsZV9vZmZzZXQobDJnYSwgbHZs KV07CiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGx4cCk7Ci0gICAgICAgIHB1dF9wYWdlKG1m bl90b19wYWdlKG1mbl94KGx4bWZuKSkpOworICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShs eG1mbikpOwogCiAgICAgICAgIGlmICggbmVwdF9ub25fcHJlc2VudF9jaGVjayhndy0+bHhlW2x2 bF0pICkKICAgICAgICAgICAgIGdvdG8gbm9uX3ByZXNlbnQ7CmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvbW0vbWVtX3NoYXJpbmcuYyBiL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCmlu ZGV4IDZmNGJlOTU1MTUuLjZlY2YwYjI3ZDUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9t ZW1fc2hhcmluZy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCkBAIC0xNTIs MTEgKzE1Miw2IEBAIHN0YXRpYyBpbmxpbmUgc2hyX2hhbmRsZV90IGdldF9uZXh0X2hhbmRsZSh2 b2lkKQogI2RlZmluZSBtZW1fc2hhcmluZ19lbmFibGVkKGQpIFwKICAgICAoaXNfaHZtX2RvbWFp bihkKSAmJiAoZCktPmFyY2guaHZtX2RvbWFpbi5tZW1fc2hhcmluZ19lbmFibGVkKQogCi0jdW5k ZWYgbWZuX3RvX3BhZ2UKLSNkZWZpbmUgbWZuX3RvX3BhZ2UoX20pIF9fbWZuX3RvX3BhZ2UobWZu X3goX20pKQotI3VuZGVmIHBhZ2VfdG9fbWZuCi0jZGVmaW5lIHBhZ2VfdG9fbWZuKF9wZykgX21m bihfX3BhZ2VfdG9fbWZuKF9wZykpCi0KIHN0YXRpYyBhdG9taWNfdCBucl9zYXZlZF9tZm5zICAg PSBBVE9NSUNfSU5JVCgwKTsgCiBzdGF0aWMgYXRvbWljX3QgbnJfc2hhcmVkX21mbnMgID0gQVRP TUlDX0lOSVQoMCk7CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgYi94 ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCmluZGV4IGI0OTk2Y2U2NTguLjg4ODU5MTZjMGEgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21t L3AybS1lcHQuYwpAQCAtMzMsNiArMzMsMTAgQEAKIAogI2luY2x1ZGUgIm1tLWxvY2tzLmgiCiAK Ky8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gYXZvaWQgdXNpbmcgdHlwZXNh ZmUgbWZuX3QuICovCisjdW5kZWYgbWZuX3RvX3BhZ2UKKyNkZWZpbmUgbWZuX3RvX3BhZ2UobWZu KSBfX21mbl90b19wYWdlKF9tZm4obWZuKSkKKwogI2RlZmluZSBhdG9taWNfcmVhZF9lcHRfZW50 cnkoX19wZXB0ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKCAoZXB0X2Vu dHJ5X3QpIHsgLmVwdGUgPSByZWFkX2F0b21pYygmKF9fcGVwdGUpLT5lcHRlKSB9ICkKIApkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cG9kLmMKaW5kZXggMGE4MTFjY2YyOC4uN2E4ODA3NGMzMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L21tL3AybS1wb2QuYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCkBAIC0yOSwx MiArMjksNiBAQAogCiAjaW5jbHVkZSAibW0tbG9ja3MuaCIKIAotLyogT3ZlcnJpZGUgbWFjcm9z IGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCi0jdW5kZWYg bWZuX3RvX3BhZ2UKLSNkZWZpbmUgbWZuX3RvX3BhZ2UoX20pIF9fbWZuX3RvX3BhZ2UobWZuX3go X20pKQotI3VuZGVmIHBhZ2VfdG9fbWZuCi0jZGVmaW5lIHBhZ2VfdG9fbWZuKF9wZykgX21mbihf X3BhZ2VfdG9fbWZuKF9wZykpCi0KICNkZWZpbmUgc3VwZXJwYWdlX2FsaWduZWQoX3gpICAoKChf eCkmKFNVUEVSUEFHRV9QQUdFUy0xKSk9PTApCiAKIC8qIEVuZm9yY2UgbG9jayBvcmRlcmluZyB3 aGVuIGdyYWJiaW5nIHRoZSAiZXh0ZXJuYWwiIHBhZ2VfYWxsb2MgbG9jayAqLwpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jCmluZGV4IGM3 MmEzY2RlYmIuLmI3MWY1MWUwYjIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwor KysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTQ3LDEyICs0Nyw2IEBAIGJvb2xfdCBfX2lu aXRkYXRhIG9wdF9oYXBfMWdiID0gMSwgX19pbml0ZGF0YSBvcHRfaGFwXzJtYiA9IDE7CiBib29s ZWFuX3BhcmFtKCJoYXBfMWdiIiwgb3B0X2hhcF8xZ2IpOwogYm9vbGVhbl9wYXJhbSgiaGFwXzJt YiIsIG9wdF9oYXBfMm1iKTsKIAotLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0 byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCi0jdW5kZWYgbWZuX3RvX3BhZ2UKLSNkZWZp bmUgbWZuX3RvX3BhZ2UoX20pIF9fbWZuX3RvX3BhZ2UobWZuX3goX20pKQotI3VuZGVmIHBhZ2Vf dG9fbWZuCi0jZGVmaW5lIHBhZ2VfdG9fbWZuKF9wZykgX21mbihfX3BhZ2VfdG9fbWZuKF9wZykp Ci0KIERFRklORV9QRVJDUFVfUldMT0NLX0dMT0JBTChwMm1fcGVyY3B1X3J3bG9jayk7CiAKIC8q IEluaXQgdGhlIGRhdGFzdHJ1Y3R1cmVzIGZvciBsYXRlciB1c2UgYnkgdGhlIHAybSBjb2RlICov CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMgYi94ZW4vYXJjaC94ODYvbW0v cGFnaW5nLmMKaW5kZXggMWUyYzliYTRjYy4uY2I5NzY0MmNiYyAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L21tL3BhZ2luZy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYwpAQCAtNDcs MTIgKzQ3LDYgQEAKIC8qIFBlci1DUFUgdmFyaWFibGUgZm9yIGVuZm9yY2luZyB0aGUgbG9jayBv cmRlcmluZyAqLwogREVGSU5FX1BFUl9DUFUoaW50LCBtbV9sb2NrX2xldmVsKTsKIAotLyogT3Zl cnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90 ICovCi0jdW5kZWYgbWZuX3RvX3BhZ2UKLSNkZWZpbmUgbWZuX3RvX3BhZ2UoX20pIF9fbWZuX3Rv X3BhZ2UobWZuX3goX20pKQotI3VuZGVmIHBhZ2VfdG9fbWZuCi0jZGVmaW5lIHBhZ2VfdG9fbWZu KF9wZykgX21mbihfX3BhZ2VfdG9fbWZuKF9wZykpCi0KIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiAgICAgICAgICAgICAgTE9HIERJUlRZIFNV UFBPUlQgICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJp dmF0ZS5oIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKaW5kZXggNmEwMzM3MDQw Mi4uYjljYzY4MGY0ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRl LmgKKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKQEAgLTMxNSw3ICszMTUs NyBAQCBzdGF0aWMgaW5saW5lIGludCBwYWdlX2lzX291dF9vZl9zeW5jKHN0cnVjdCBwYWdlX2lu Zm8gKnApCiAKIHN0YXRpYyBpbmxpbmUgaW50IG1mbl9pc19vdXRfb2Zfc3luYyhtZm5fdCBnbWZu KQogewotICAgIHJldHVybiBwYWdlX2lzX291dF9vZl9zeW5jKG1mbl90b19wYWdlKG1mbl94KGdt Zm4pKSk7CisgICAgcmV0dXJuIHBhZ2VfaXNfb3V0X29mX3N5bmMobWZuX3RvX3BhZ2UoZ21mbikp OwogfQogCiBzdGF0aWMgaW5saW5lIGludCBwYWdlX29vc19tYXlfd3JpdGUoc3RydWN0IHBhZ2Vf aW5mbyAqcCkKQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwYWdlX29vc19t YXlfd3JpdGUoc3RydWN0IHBhZ2VfaW5mbyAqcCkKIAogc3RhdGljIGlubGluZSBpbnQgbWZuX29v c19tYXlfd3JpdGUobWZuX3QgZ21mbikKIHsKLSAgICByZXR1cm4gcGFnZV9vb3NfbWF5X3dyaXRl KG1mbl90b19wYWdlKG1mbl94KGdtZm4pKSk7CisgICAgcmV0dXJuIHBhZ2Vfb29zX21heV93cml0 ZShtZm5fdG9fcGFnZShnbWZuKSk7CiB9CiAjZW5kaWYgLyogKFNIQURPV19PUFRJTUlaQVRJT05T ICYgU0hPUFRfT1VUX09GX1NZTkMpICovCiAKQEAgLTQ2NSwxOCArNDY1LDYgQEAgdm9pZCBzaF9y ZXNldF9sM191cF9wb2ludGVycyhzdHJ1Y3QgdmNwdSAqdik7CiAgKiBNRk4vcGFnZS1pbmZvIGhh bmRsaW5nCiAgKi8KIAotLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtl IHRoZW0gd29yayB3aXRoIG1mbl90ICovCi0jdW5kZWYgbWZuX3RvX3BhZ2UKLSNkZWZpbmUgbWZu X3RvX3BhZ2UoX20pIF9fbWZuX3RvX3BhZ2UobWZuX3goX20pKQotI3VuZGVmIHBhZ2VfdG9fbWZu Ci0jZGVmaW5lIHBhZ2VfdG9fbWZuKF9wZykgX21mbihfX3BhZ2VfdG9fbWZuKF9wZykpCi0KLS8q IE92ZXJyaWRlIHBhZ2V0YWJsZV90IDwtPiBzdHJ1Y3QgcGFnZV9pbmZvIGNvbnZlcnNpb25zIHRv IHdvcmsgd2l0aCBtZm5fdCAqLwotI3VuZGVmIHBhZ2V0YWJsZV9nZXRfcGFnZQotI2RlZmluZSBw YWdldGFibGVfZ2V0X3BhZ2UoeCkgICBtZm5fdG9fcGFnZShwYWdldGFibGVfZ2V0X21mbih4KSkK LSN1bmRlZiBwYWdldGFibGVfZnJvbV9wYWdlCi0jZGVmaW5lIHBhZ2V0YWJsZV9mcm9tX3BhZ2Uo cGcpIHBhZ2V0YWJsZV9mcm9tX21mbihwYWdlX3RvX21mbihwZykpCi0KICNkZWZpbmUgYmFja3Bv aW50ZXIoc3ApIF9tZm4ocGR4X3RvX3BmbigodW5zaWduZWQgbG9uZykoc3ApLT52LnNoLmJhY2sp KQogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fYmFja3BvaW50ZXIoY29uc3Qgc3RydWN0 IHBhZ2VfaW5mbyAqc3ApCiB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbnVtYS5jIGIveGVu L2FyY2gveDg2L251bWEuYwppbmRleCA0ZmM5NjdmODkzLi5hODc5ODdkYTZmIDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvbnVtYS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9udW1hLmMKQEAgLTQzMCw3 ICs0MzAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX251bWEodW5zaWduZWQgY2hhciBrZXkpCiAgICAg ICAgIHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsKICAgICAgICAgcGFnZV9saXN0X2Zv cl9lYWNoKHBhZ2UsICZkLT5wYWdlX2xpc3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGkgPSBw aHlzX3RvX25pZCgocGFkZHJfdClwYWdlX3RvX21mbihwYWdlKSA8PCBQQUdFX1NISUZUKTsKKyAg ICAgICAgICAgIGkgPSBwaHlzX3RvX25pZChwYWdlX3RvX21hZGRyKHBhZ2UpKTsKICAgICAgICAg ICAgIHBhZ2VfbnVtX25vZGVbaV0rKzsKICAgICAgICAgfQogICAgICAgICBzcGluX3VubG9jaygm ZC0+cGFnZV9hbGxvY19sb2NrKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMg Yi94ZW4vYXJjaC94ODYvcGh5c2Rldi5jCmluZGV4IGE1ZmVkY2E2NzEuLjU0MjJmM2UzNzIgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMKKysrIGIveGVuL2FyY2gveDg2L3BoeXNk ZXYuYwpAQCAtMjQyLDcgKzI0Miw3IEBAIHJldF90IGRvX3BoeXNkZXZfb3AoaW50IGNtZCwgWEVO X0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo IGNtcHhjaGcoJmN1cnJkLT5hcmNoLnBpcnFfZW9pX21hcF9tZm4sCi0gICAgICAgICAgICAgICAg ICAgICAwLCBwYWdlX3RvX21mbihwYWdlKSkgIT0gMCApCisgICAgICAgICAgICAgICAgICAgICAw LCBtZm5feChwYWdlX3RvX21mbihwYWdlKSkpICE9IDAgKQogICAgICAgICB7CiAgICAgICAgICAg ICBwdXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKICAgICAgICAgICAgIHJldCA9IC1FQlVTWTsKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9jYWxsYmFjay5jIGIveGVuL2FyY2gveDg2L3B2L2Nh bGxiYWNrLmMKaW5kZXggOTdkODQzODYwMC4uNTk1N2NiNTA4NSAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L3B2L2NhbGxiYWNrLmMKKysrIGIveGVuL2FyY2gveDg2L3B2L2NhbGxiYWNrLmMKQEAg LTMxLDEyICszMSw2IEBACiAKICNpbmNsdWRlIDxwdWJsaWMvY2FsbGJhY2suaD4KIAotLyogT3Zl cnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90 ICovCi0jdW5kZWYgbWZuX3RvX3BhZ2UKLSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90 b19wYWdlKG1mbl94KG1mbikpCi0jdW5kZWYgcGFnZV90b19tZm4KLSNkZWZpbmUgcGFnZV90b19t Zm4ocGcpIF9tZm4oX19wYWdlX3RvX21mbihwZykpCi0KIHN0YXRpYyBpbnQgcmVnaXN0ZXJfZ3Vl c3Rfbm1pX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKIHsKICAgICBzdHJ1Y3QgdmNw dSAqY3VyciA9IGN1cnJlbnQ7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZGVzY3JpcHRv ci10YWJsZXMuYyBiL3hlbi9hcmNoL3g4Ni9wdi9kZXNjcmlwdG9yLXRhYmxlcy5jCmluZGV4IDgx OTczYWYxMjQuLmYyYjIwZjk5MTAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9kZXNjcmlw dG9yLXRhYmxlcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9kZXNjcmlwdG9yLXRhYmxlcy5jCkBA IC0yNSwxNiArMjUsNiBAQAogI2luY2x1ZGUgPGFzbS9wMm0uaD4KICNpbmNsdWRlIDxhc20vcHYv bW0uaD4KIAotLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0g d29yayB3aXRoIG1mbl90ICovCi0jdW5kZWYgbWZuX3RvX3BhZ2UKLSNkZWZpbmUgbWZuX3RvX3Bh Z2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCi0jdW5kZWYgcGFnZV90b19tZm4KLSNk ZWZpbmUgcGFnZV90b19tZm4ocGcpIF9tZm4oX19wYWdlX3RvX21mbihwZykpCi0KLS8qKioqKioq KioqKioqKioqKioqCi0gKiBEZXNjcmlwdG9yIFRhYmxlcwotICovCi0KIHZvaWQgcHZfZGVzdHJv eV9nZHQoc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgbDFfcGdlbnRyeV90ICpwbDFlOwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYyBiL3hlbi9hcmNoL3g4Ni9wdi9kb20w X2J1aWxkLmMKaW5kZXggNDQ2MDFkMDhkMy4uMWFjODQzZTYwMyAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L3B2L2RvbTBfYnVpbGQuYworKysgYi94ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5j CkBAIC0yMCw2ICsyMCwxMiBAQAogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAjaW5jbHVkZSA8YXNt L3NldHVwLmg+CiAKKy8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gYXZvaWQg dXNpbmcgdHlwZXNhZmUgbWZuX3QuICovCisjdW5kZWYgcGFnZV90b19tZm4KKyNkZWZpbmUgcGFn ZV90b19tZm4ocGcpIG1mbl94KF9fcGFnZV90b19tZm4ocGcpKQorI3VuZGVmIG1mbl90b19wYWdl CisjZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShfbWZuKG1mbikpCisKIC8q IEFsbG93IHJpbmctMyBhY2Nlc3MgaW4gbG9uZyBtb2RlIGFzIGd1ZXN0IGNhbm5vdCB1c2Ugcmlu ZyAxIC4uLiAqLwogI2RlZmluZSBCQVNFX1BST1QgKF9QQUdFX1BSRVNFTlR8X1BBR0VfUld8X1BB R0VfQUNDRVNTRUR8X1BBR0VfVVNFUikKICNkZWZpbmUgTDFfUFJPVCAoQkFTRV9QUk9UfF9QQUdF X0dVRVNUX0tFUk5FTCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYyBiL3hl bi9hcmNoL3g4Ni9wdi9kb21haW4uYwppbmRleCAyMjM0MTI4YmIzLi45M2Y4ZmE0MzIzIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKKysrIGIveGVuL2FyY2gveDg2L3B2L2Rv bWFpbi5jCkBAIC0xMSwxMiArMTEsNiBAQAogCiAjaW5jbHVkZSA8YXNtL3B2L2RvbWFpbi5oPgog Ci0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdp dGggbWZuX3QgKi8KLSN1bmRlZiBtZm5fdG9fcGFnZQotI2RlZmluZSBtZm5fdG9fcGFnZShtZm4p IF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKLSN1bmRlZiBwYWdlX3RvX21mbgotI2RlZmluZSBw YWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKLQogc3RhdGljIHZvaWQgbm9y ZXR1cm4gY29udGludWVfbm9uaWRsZV9kb21haW4oc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgY2hl Y2tfd2FrZXVwX2Zyb21fd2FpdCgpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L2VtdWwt Z2F0ZS1vcC5jIGIveGVuL2FyY2gveDg2L3B2L2VtdWwtZ2F0ZS1vcC5jCmluZGV4IDBmODljOTFk ZmYuLjVjZGI1NGM5MzcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLWdhdGUtb3Au YworKysgYi94ZW4vYXJjaC94ODYvcHYvZW11bC1nYXRlLW9wLmMKQEAgLTQxLDEyICs0MSw2IEBA CiAKICNpbmNsdWRlICJlbXVsYXRlLmgiCiAKLS8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9w YWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwotI3VuZGVmIG1mbl90b19wYWdl Ci0jZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQotI3Vu ZGVmIHBhZ2VfdG9fbWZuCi0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19t Zm4ocGcpKQotCiBzdGF0aWMgaW50IHJlYWRfZ2F0ZV9kZXNjcmlwdG9yKHVuc2lnbmVkIGludCBn YXRlX3NlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZj cHUgKnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqc2Vs LApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L2VtdWwtcHJpdi1vcC5jIGIveGVuL2FyY2gv eDg2L3B2L2VtdWwtcHJpdi1vcC5jCmluZGV4IDJmOTI2NDU0OGEuLjZlYmFmMmYxZTMgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYtb3AuYworKysgYi94ZW4vYXJjaC94ODYv cHYvZW11bC1wcml2LW9wLmMKQEAgLTQzLDE2ICs0Myw2IEBACiAjaW5jbHVkZSAiZW11bGF0ZS5o IgogI2luY2x1ZGUgIm1tLmgiCiAKLS8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmgg dG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwotI3VuZGVmIG1mbl90b19wYWdlCi0jZGVm aW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQotI3VuZGVmIHBh Z2VfdG9fbWZuCi0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcp KQotCi0vKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEkvTyBlbXVsYXRpb24gc3VwcG9ydAot ICovCi0KIHN0cnVjdCBwcml2X29wX2N0eHQgewogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0 IGN0eHQ7CiAgICAgc3RydWN0IHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9ncmFudF90 YWJsZS5jIGIveGVuL2FyY2gveDg2L3B2L2dyYW50X3RhYmxlLmMKaW5kZXggYWFjYTIyOGM2Yi4u OTczMjMzNjdjNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L2dyYW50X3RhYmxlLmMKKysr IGIveGVuL2FyY2gveDg2L3B2L2dyYW50X3RhYmxlLmMKQEAgLTI3LDEyICsyNyw2IEBACiAKICNp bmNsdWRlICJtbS5oIgogCi0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1h a2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KLSN1bmRlZiBtZm5fdG9fcGFnZQotI2RlZmluZSBt Zm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKLSN1bmRlZiBwYWdlX3Rv X21mbgotI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKLQog c3RhdGljIHVuc2lnbmVkIGludCBncmFudF90b19wdGVfZmxhZ3ModW5zaWduZWQgaW50IGdyYW50 X2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGNhY2hlX2ZsYWdzKQogewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L3JvLXBhZ2Ut ZmF1bHQuYyBiL3hlbi9hcmNoL3g4Ni9wdi9yby1wYWdlLWZhdWx0LmMKaW5kZXggNmIyOTc2ZDNk Zi4uYTdiN2ViNTExMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L3JvLXBhZ2UtZmF1bHQu YworKysgYi94ZW4vYXJjaC94ODYvcHYvcm8tcGFnZS1mYXVsdC5jCkBAIC0zMywxMiArMzMsNiBA QAogI2luY2x1ZGUgImVtdWxhdGUuaCIKICNpbmNsdWRlICJtbS5oIgogCi0vKiBPdmVycmlkZSBt YWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KLSN1 bmRlZiBtZm5fdG9fcGFnZQotI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2Uo bWZuX3gobWZuKSkKLSN1bmRlZiBwYWdlX3RvX21mbgotI2RlZmluZSBwYWdlX3RvX21mbihwZykg X21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKLQogLyoqKioqKioqKioqKioqKioqKioqKgogICogV3Jp dGFibGUgUGFnZXRhYmxlcwogICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc21wYm9vdC5j IGIveGVuL2FyY2gveDg2L3NtcGJvb3QuYwppbmRleCAxNjA5YjYyN2FlLi4wNzkxMzQ1YTQ3IDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc21wYm9vdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zbXBi b290LmMKQEAgLTQ2LDEyICs0Niw2IEBACiAjaW5jbHVkZSA8bWFjaF93YWtlY3B1Lmg+CiAjaW5j bHVkZSA8c21wYm9vdF9ob29rcy5oPgogCi0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFn ZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KLSN1bmRlZiBtZm5fdG9fcGFnZQot I2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKLSN1bmRl ZiBwYWdlX3RvX21mbgotI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZu KHBnKSkKLQogI2RlZmluZSBzZXR1cF90cmFtcG9saW5lKCkgICAgKGJvb3RzeW1fcGh5cyh0cmFt cG9saW5lX3JlYWxtb2RlX2VudHJ5KSkKIAogdW5zaWduZWQgbG9uZyBfX3JlYWRfbW9zdGx5IHRy YW1wb2xpbmVfcGh5czsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90Ym9vdC5jIGIveGVuL2Fy Y2gveDg2L3Rib290LmMKaW5kZXggNTlkN2M0NzdmNC4uZTk1MjJmMDZlYyAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L3Rib290LmMKKysrIGIveGVuL2FyY2gveDg2L3Rib290LmMKQEAgLTE4NCw3 ICsxODQsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcGFnZXRhYmxlX21hYyh2bWFjX2N0eF90ICpj dHgpCiAKICAgICBmb3IgKCBtZm4gPSAwOyBtZm4gPCBtYXhfcGFnZTsgbWZuKysgKQogICAgIHsK LSAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IG1mbl90b19wYWdlKG1mbik7CisgICAg ICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBtZm5fdG9fcGFnZShfbWZuKG1mbikpOwogCiAg ICAgICAgIGlmICggIW1mbl92YWxpZChfbWZuKG1mbikpICkKICAgICAgICAgICAgIGNvbnRpbnVl OwpAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyB2b2lkIHRib290X2dlbl94ZW5oZWFwX2ludGVn cml0eShjb25zdCB1aW50OF90IGtleVtUQl9LRVlfU0laRV0sCiAgICAgdm1hY19zZXRfa2V5KCh1 aW50OF90ICopa2V5LCAmY3R4KTsKICAgICBmb3IgKCBtZm4gPSAwOyBtZm4gPCBtYXhfcGFnZTsg bWZuKysgKQogICAgIHsKLSAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IF9fbWZuX3Rv X3BhZ2UobWZuKTsKKyAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IG1mbl90b19wYWdl KF9tZm4obWZuKSk7CiAKICAgICAgICAgaWYgKCAhbWZuX3ZhbGlkKF9tZm4obWZuKSkgKQogICAg ICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdHJhcHMuYyBiL3hl bi9hcmNoL3g4Ni90cmFwcy5jCmluZGV4IDg2NTA2ZjM3NDcuLmUyNTYyZWVlNGUgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni90cmFwcy5jCkBAIC04 MTAsOCArODEwLDggQEAgaW50IHdybXNyX2h5cGVydmlzb3JfcmVncyh1aW50MzJfdCBpZHgsIHVp bnQ2NF90IHZhbCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9H X1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAiQmFkIEdNRk4gJWx4IChNRk4gJWx4KSB0 byBNU1IgJTA4eFxuIiwKLSAgICAgICAgICAgICAgICAgICAgIGdtZm4sIHBhZ2UgPyBwYWdlX3Rv X21mbihwYWdlKSA6IC0xVUwsIGJhc2UpOworICAgICAgICAgICAgICAgICAgICAgIkJhZCBHTUZO ICVseCAoTUZOICUjIlBSSV9tZm4iKSB0byBNU1IgJTA4eFxuIiwKKyAgICAgICAgICAgICAgICAg ICAgIGdtZm4sIG1mbl94KHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKSwg YmFzZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYveDg2XzY0L21tLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKaW5kZXgg MzRjZDg0NTdjZi4uY2NhZDNkNDQ4YiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9t bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYwpAQCAtNDAsNiArNDAsMTIgQEAgYXNt KCIuZmlsZSBcIiIgX19GSUxFX18gIlwiIik7CiAjaW5jbHVkZSA8YXNtL21lbV9zaGFyaW5nLmg+ CiAjaW5jbHVkZSA8cHVibGljL21lbW9yeS5oPgogCisvKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBh c20vcGFnZS5oIHRvIGF2b2lkIHVzaW5nIHR5cGVzYWZlIG1mbl90LiAqLworI3VuZGVmIHBhZ2Vf dG9fbWZuCisjZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBtZm5feChfX3BhZ2VfdG9fbWZuKHBnKSkK KyN1bmRlZiBtZm5fdG9fcGFnZQorI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3Bh Z2UoX21mbihtZm4pKQorCiB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBtMnBfY29tcGF0X3Zz dGFydCA9IF9fSFlQRVJWSVNPUl9DT01QQVRfVklSVF9TVEFSVDsKIAogbDJfcGdlbnRyeV90ICpj b21wYXRfaWRsZV9wZ190YWJsZV9sMjsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMg Yi94ZW4vY29tbW9uL2RvbWFpbi5jCmluZGV4IDVhZWJjZjI2NWYuLmU4MzAyZThlMWIgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vZG9tYWluLmMKKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwpAQCAt MTE5Miw3ICsxMTkyLDcgQEAgaW50IG1hcF92Y3B1X2luZm8oc3RydWN0IHZjcHUgKnYsIHVuc2ln bmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBvZmZzZXQpCiAgICAgfQogCiAgICAgdi0+dmNwdV9pbmZv ID0gbmV3X2luZm87Ci0gICAgdi0+dmNwdV9pbmZvX21mbiA9IF9tZm4ocGFnZV90b19tZm4ocGFn ZSkpOworICAgIHYtPnZjcHVfaW5mb19tZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKIAogICAgIC8q IFNldCBuZXcgdmNwdV9pbmZvIHBvaW50ZXIgL2JlZm9yZS8gc2V0dGluZyBwZW5kaW5nIGZsYWdz LiAqLwogICAgIHNtcF93bWIoKTsKQEAgLTEyMjUsNyArMTIyNSw3IEBAIHZvaWQgdW5tYXBfdmNw dV9pbmZvKHN0cnVjdCB2Y3B1ICp2KQogCiAgICAgdmNwdV9pbmZvX3Jlc2V0KHYpOyAvKiBOQjog Q2xvYmJlcnMgdi0+dmNwdV9pbmZvX21mbiAqLwogCi0gICAgcHV0X3BhZ2VfYW5kX3R5cGUobWZu X3RvX3BhZ2UobWZuX3gobWZuKSkpOworICAgIHB1dF9wYWdlX2FuZF90eXBlKG1mbl90b19wYWdl KG1mbikpOwogfQogCiBpbnQgZGVmYXVsdF9pbml0aWFsaXNlX3ZjcHUoc3RydWN0IHZjcHUgKnYs IFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQpkaWZmIC0tZ2l0IGEveGVuL2NvbW1v bi9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCmluZGV4IGM1OTUwZjJi M2YuLjczYTlkMDI5M2IgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYworKysg Yi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKQEAgLTQwLDYgKzQwLDEyIEBACiAjaW5jbHVkZSA8 eHNtL3hzbS5oPgogI2luY2x1ZGUgPGFzbS9mbHVzaHRsYi5oPgogCisvKiBPdmVycmlkZSBtYWNy b3MgZnJvbSBhc20vcGFnZS5oIHRvIGF2b2lkIHVzaW5nIHR5cGVzYWZlIG1mbl90LiAqLworI3Vu ZGVmIHBhZ2VfdG9fbWZuCisjZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBtZm5feChfX3BhZ2VfdG9f bWZuKHBnKSkKKyN1bmRlZiBtZm5fdG9fcGFnZQorI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9f bWZuX3RvX3BhZ2UoX21mbihtZm4pKQorCiAvKiBQZXItZG9tYWluIGdyYW50IGluZm9ybWF0aW9u LiAqLwogc3RydWN0IGdyYW50X3RhYmxlIHsKICAgICAvKgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1v bi9raW1hZ2UuYyBiL3hlbi9jb21tb24va2ltYWdlLmMKaW5kZXggYWZkODI5MmNjMS4uMjEwMjQx ZGZiNyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9raW1hZ2UuYworKysgYi94ZW4vY29tbW9uL2tp bWFnZS5jCkBAIC0yMywxMiArMjMsNiBAQAogCiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KIAotLyog T3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1m bl90ICovCi0jdW5kZWYgbWZuX3RvX3BhZ2UKLSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21m bl90b19wYWdlKG1mbl94KG1mbikpCi0jdW5kZWYgcGFnZV90b19tZm4KLSNkZWZpbmUgcGFnZV90 b19tZm4ocGcpICBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQotCiAvKgogICogV2hlbiBrZXhlYyB0 cmFuc2l0aW9ucyB0byB0aGUgbmV3IGtlcm5lbCB0aGVyZSBpcyBhIG9uZS10by1vbmUKICAqIG1h cHBpbmcgYmV0d2VlbiBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMuICBPbiBwcm9jZXNz b3JzCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL21lbW9yeS5jIGIveGVuL2NvbW1vbi9tZW1vcnku YwppbmRleCBhZDk4N2UwZjI5Li5lNDY3ZjI3MWM3IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL21l bW9yeS5jCisrKyBiL3hlbi9jb21tb24vbWVtb3J5LmMKQEAgLTI5LDYgKzI5LDEyIEBACiAjaW5j bHVkZSA8cHVibGljL21lbW9yeS5oPgogI2luY2x1ZGUgPHhzbS94c20uaD4KIAorLyogT3ZlcnJp ZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBhdm9pZCB1c2luZyB0eXBlc2FmZSBtZm5fdC4g Ki8KKyN1bmRlZiBwYWdlX3RvX21mbgorI2RlZmluZSBwYWdlX3RvX21mbihwZykgbWZuX3goX19w YWdlX3RvX21mbihwZykpCisjdW5kZWYgbWZuX3RvX3BhZ2UKKyNkZWZpbmUgbWZuX3RvX3BhZ2Uo bWZuKSBfX21mbl90b19wYWdlKF9tZm4obWZuKSkKKwogc3RydWN0IG1lbW9wX2FyZ3MgewogICAg IC8qIElOUFVUICovCiAgICAgc3RydWN0IGRvbWFpbiAqZG9tYWluOyAgICAgLyogRG9tYWluIHRv IGJlIGFmZmVjdGVkLiAqLwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMgYi94 ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwppbmRleCA1NjE2YTgyMjYzLi4zNGMyMDg5Y2QyIDEwMDY0 NAotLS0gYS94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYworKysgYi94ZW4vY29tbW9uL3BhZ2VfYWxs b2MuYwpAQCAtMTUwLDYgKzE1MCwxMiBAQAogI2RlZmluZSBwMm1fcG9kX29mZmxpbmVfb3JfYnJv a2VuX3JlcGxhY2UocGcpIEJVR19PTihwZyAhPSBOVUxMKQogI2VuZGlmCiAKKy8qIE92ZXJyaWRl IG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gYXZvaWQgdXNpbmcgdHlwZXNhZmUgbWZuX3QuICov CisjdW5kZWYgcGFnZV90b19tZm4KKyNkZWZpbmUgcGFnZV90b19tZm4ocGcpIG1mbl94KF9fcGFn ZV90b19tZm4ocGcpKQorI3VuZGVmIG1mbl90b19wYWdlCisjZGVmaW5lIG1mbl90b19wYWdlKG1m bikgX19tZm5fdG9fcGFnZShfbWZuKG1mbikpCisKIC8qCiAgKiBDb21tYS1zZXBhcmF0ZWQgbGlz dCBvZiBoZXhhZGVjaW1hbCBwYWdlIG51bWJlcnMgY29udGFpbmluZyBiYWQgYnl0ZXMuCiAgKiBl LmcuICdiYWRwYWdlPTB4M2Y0NSwweDhhMzIxJy4KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdG1l bS5jIGIveGVuL2NvbW1vbi90bWVtLmMKaW5kZXggMzI0ZjQyYTZmOS4uYzA3N2Y4N2U3NyAxMDA2 NDQKLS0tIGEveGVuL2NvbW1vbi90bWVtLmMKKysrIGIveGVuL2NvbW1vbi90bWVtLmMKQEAgLTI0 Myw3ICsyNDMsNyBAQCBzdGF0aWMgdm9pZCB0bWVtX3BlcnNpc3RlbnRfcG9vbF9wYWdlX3B1dCh2 b2lkICpwYWdlX3ZhKQogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBpOwogCiAgICAgQVNTRVJUKElT X1BBR0VfQUxJR05FRChwYWdlX3ZhKSk7Ci0gICAgcGkgPSBtZm5fdG9fcGFnZSh2aXJ0X3RvX21m bihwYWdlX3ZhKSk7CisgICAgcGkgPSBtZm5fdG9fcGFnZShfbWZuKHZpcnRfdG9fbWZuKHBhZ2Vf dmEpKSk7CiAgICAgQVNTRVJUKElTX1ZBTElEX1BBR0UocGkpKTsKICAgICBfX3RtZW1fZnJlZV9w YWdlX3RoaXNwb29sKHBpKTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdG1lbV94ZW4uYyBi L3hlbi9jb21tb24vdG1lbV94ZW4uYwppbmRleCBiZDUyZTQ0ZmFmLi5iZjdiMTRmNzlhIDEwMDY0 NAotLS0gYS94ZW4vY29tbW9uL3RtZW1feGVuLmMKKysrIGIveGVuL2NvbW1vbi90bWVtX3hlbi5j CkBAIC0xNCwxMCArMTQsNiBAQAogI2luY2x1ZGUgPHhlbi9jcHUuaD4KICNpbmNsdWRlIDx4ZW4v aW5pdC5oPgogCi0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhl bSB3b3JrIHdpdGggbWZuX3QgKi8KLSN1bmRlZiBwYWdlX3RvX21mbgotI2RlZmluZSBwYWdlX3Rv X21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKLQogYm9vbCBfX3JlYWRfbW9zdGx5IG9w dF90bWVtOwogYm9vbGVhbl9wYXJhbSgidG1lbSIsIG9wdF90bWVtKTsKIApkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi90cmFjZS5jIGIveGVuL2NvbW1vbi90cmFjZS5jCmluZGV4IDJlMTg3MDIzMTcu LmNmOGY4YjA5OTcgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdHJhY2UuYworKysgYi94ZW4vY29t bW9uL3RyYWNlLmMKQEAgLTQyLDYgKzQyLDEyIEBAIENIRUNLX3RfYnVmOwogI2RlZmluZSBjb21w YXRfdF9yZWMgdF9yZWMKICNlbmRpZgogCisvKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFn ZS5oIHRvIGF2b2lkIHVzaW5nIHR5cGVzYWZlIG1mbl90LiAqLworI3VuZGVmIHBhZ2VfdG9fbWZu CisjZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBtZm5feChfX3BhZ2VfdG9fbWZuKHBnKSkKKyN1bmRl ZiBtZm5fdG9fcGFnZQorI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UoX21m bihtZm4pKQorCiAvKiBvcHRfdGJ1Zl9zaXplOiB0cmFjZSBidWZmZXIgc2l6ZSAoaW4gcGFnZXMp IGZvciBlYWNoIGNwdSAqLwogc3RhdGljIHVuc2lnbmVkIGludCBvcHRfdGJ1Zl9zaXplOwogc3Rh dGljIHVuc2lnbmVkIGludCBvcHRfdGV2dF9tYXNrOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi92 bWFwLmMgYi94ZW4vY29tbW9uL3ZtYXAuYwppbmRleCAwYjIzZjhmYjk3Li4xMGYzMmIyOWUwIDEw MDY0NAotLS0gYS94ZW4vY29tbW9uL3ZtYXAuYworKysgYi94ZW4vY29tbW9uL3ZtYXAuYwpAQCAt MzYsNyArMzYsNyBAQCB2b2lkIF9faW5pdCB2bV9pbml0X3R5cGUoZW51bSB2bWFwX3JlZ2lvbiB0 eXBlLCB2b2lkICpzdGFydCwgdm9pZCAqZW5kKQogICAgIHsKICAgICAgICAgc3RydWN0IHBhZ2Vf aW5mbyAqcGcgPSBhbGxvY19kb21oZWFwX3BhZ2UoTlVMTCwgMCk7CiAKLSAgICAgICAgbWFwX3Bh Z2VzX3RvX3hlbih2YSwgcGFnZV90b19tZm4ocGcpLCAxLCBQQUdFX0hZUEVSVklTT1IpOworICAg ICAgICBtYXBfcGFnZXNfdG9feGVuKHZhLCBtZm5feChwYWdlX3RvX21mbihwZykpLCAxLCBQQUdF X0hZUEVSVklTT1IpOwogICAgICAgICBjbGVhcl9wYWdlKCh2b2lkICopdmEpOwogICAgIH0KICAg ICBiaXRtYXBfZmlsbCh2bV9iaXRtYXAodHlwZSksIHZtX2xvd1t0eXBlXSk7CkBAIC0xMDcsNyAr MTA3LDggQEAgc3RhdGljIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQg aW50IGFsaWduLAogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhID0gKHVu c2lnbmVkIGxvbmcpdm1fYml0bWFwKHQpICsgdm1fdG9wW3RdIC8gODsKIAotICAgICAgICAgICAg aWYgKCAhbWFwX3BhZ2VzX3RvX3hlbih2YSwgcGFnZV90b19tZm4ocGcpLCAxLCBQQUdFX0hZUEVS VklTT1IpICkKKyAgICAgICAgICAgIGlmICggIW1hcF9wYWdlc190b194ZW4odmEsIG1mbl94KHBh Z2VfdG9fbWZuKHBnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIFBB R0VfSFlQRVJWSVNPUikgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNsZWFyX3Bh Z2UoKHZvaWQgKil2YSk7CiAgICAgICAgICAgICAgICAgdm1fdG9wW3RdICs9IFBBR0VfU0laRSAq IDg7CkBAIC0yNTgsNyArMjU5LDcgQEAgc3RhdGljIHZvaWQgKnZtYWxsb2NfdHlwZShzaXplX3Qg c2l6ZSwgZW51bSB2bWFwX3JlZ2lvbiB0eXBlKQogICAgICAgICBwZyA9IGFsbG9jX2RvbWhlYXBf cGFnZShOVUxMLCAwKTsKICAgICAgICAgaWYgKCBwZyA9PSBOVUxMICkKICAgICAgICAgICAgIGdv dG8gZXJyb3I7Ci0gICAgICAgIG1mbltpXSA9IF9tZm4ocGFnZV90b19tZm4ocGcpKTsKKyAgICAg ICAgbWZuW2ldID0gcGFnZV90b19tZm4ocGcpOwogICAgIH0KIAogICAgIHZhID0gX192bWFwKG1m biwgMSwgcGFnZXMsIDEsIFBBR0VfSFlQRVJWSVNPUiwgdHlwZSk7CkBAIC0yNzAsNyArMjcxLDcg QEAgc3RhdGljIHZvaWQgKnZtYWxsb2NfdHlwZShzaXplX3Qgc2l6ZSwgZW51bSB2bWFwX3JlZ2lv biB0eXBlKQogCiAgZXJyb3I6CiAgICAgd2hpbGUgKCBpLS0gKQotICAgICAgICBmcmVlX2RvbWhl YXBfcGFnZShtZm5fdG9fcGFnZShtZm5feChtZm5baV0pKSk7CisgICAgICAgIGZyZWVfZG9taGVh cF9wYWdlKG1mbl90b19wYWdlKG1mbltpXSkpOwogICAgIHhmcmVlKG1mbik7CiAgICAgcmV0dXJu IE5VTEw7CiB9CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hlbm9wcm9mLmMgYi94ZW4vY29tbW9u L3hlbm9wcm9mLmMKaW5kZXggNWFjZGRlNTY5MS4uZmVjZGZiMzY5NyAxMDA2NDQKLS0tIGEveGVu L2NvbW1vbi94ZW5vcHJvZi5jCisrKyBiL3hlbi9jb21tb24veGVub3Byb2YuYwpAQCAtMjIsOCAr MjIsNiBAQAogLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0g d29yayB3aXRoIG1mbl90ICovCiAjdW5kZWYgdmlydF90b19tZm4KICNkZWZpbmUgdmlydF90b19t Zm4odmEpIF9tZm4oX192aXJ0X3RvX21mbih2YSkpCi0jdW5kZWYgbWZuX3RvX3BhZ2UKLSNkZWZp bmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCiAKIC8qIExpbWl0 IGFtb3VudCBvZiBwYWdlcyB1c2VkIGZvciBzaGFyZWQgYnVmZmVyIChwZXIgZG9tYWluKSAqLwog I2RlZmluZSBNQVhfT1BST0ZfU0hBUkVEX1BBR0VTIDMyCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h bWQvaW9tbXVfbWFwLmMKaW5kZXggZmQyMzI3ZDNlNS4uYmQ2MmMyY2U5MCAxMDA2NDQKLS0tIGEv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCisrKyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYwpAQCAtMjUsNiArMjUsMTIgQEAKICNpbmNsdWRl ICIuLi9hdHMuaCIKICNpbmNsdWRlIDx4ZW4vcGNpLmg+CiAKKy8qIE92ZXJyaWRlIG1hY3JvcyBm cm9tIGFzbS9wYWdlLmggdG8gYXZvaWQgdXNpbmcgdHlwZXNhZmUgbWZuX3QuICovCisjdW5kZWYg cGFnZV90b19tZm4KKyNkZWZpbmUgcGFnZV90b19tZm4ocGcpIG1mbl94KF9fcGFnZV90b19tZm4o cGcpKQorI3VuZGVmIG1mbl90b19wYWdlCisjZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5f dG9fcGFnZShfbWZuKG1mbikpCisKIC8qIEdpdmVuIHBmbiBhbmQgcGFnZSB0YWJsZSBsZXZlbCwg cmV0dXJuIHBkZSBpbmRleCAqLwogc3RhdGljIHVuc2lnbmVkIGludCBwZm5fdG9fcGRlX2lkeCh1 bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgaW50IGxldmVsKQogewpkaWZmIC0tZ2l0IGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lv bW11LmMKaW5kZXggMWFlY2Y3Y2YzNC4uMmM0NGZhYmY5OSAxMDA2NDQKLS0tIGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21t dS5jCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdkb21faW5p dChzdHJ1Y3QgZG9tYWluICpkKQogCiAgICAgICAgIHBhZ2VfbGlzdF9mb3JfZWFjaCAoIHBhZ2Us ICZkLT5wYWdlX2xpc3QgKQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1m biA9IHBhZ2VfdG9fbWZuKHBhZ2UpOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBt Zm5feChwYWdlX3RvX21mbihwYWdlKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9 IG1mbl90b19nbWZuKGQsIG1mbik7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFwcGluZyA9 IElPTU1VRl9yZWFkYWJsZTsKICAgICAgICAgICAgIGludCByZXQ7CmRpZmYgLS1naXQgYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3g4Ni9pb21tdS5jCmluZGV4IDAyNTM4MjMxNzMuLjY4MTgyYWZkOTEgMTAwNjQ0Ci0tLSBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3g4Ni9pb21tdS5jCkBAIC01OCw3ICs1OCw3IEBAIGludCBhcmNoX2lvbW11X3BvcHVs YXRlX3BhZ2VfdGFibGUoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgaWYgKCBpc19odm1fZG9t YWluKGQpIHx8CiAgICAgICAgICAgICAocGFnZS0+dS5pbnVzZS50eXBlX2luZm8gJiBQR1RfdHlw ZV9tYXNrKSA9PSBQR1Rfd3JpdGFibGVfcGFnZSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgbWZuID0gcGFnZV90b19tZm4ocGFnZSk7CisgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIG1mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgZ2ZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKIAogICAgICAgICAgICAgaWYgKCBn Zm4gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaAppbmRleCA3MzdhNDI5NDA5Li4zZWI0 YjY4NzYxIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKKysrIGIveGVuL2lu Y2x1ZGUvYXNtLWFybS9tbS5oCkBAIC0xMzgsNyArMTM4LDcgQEAgZXh0ZXJuIHZhZGRyX3QgeGVu aGVhcF92aXJ0X3N0YXJ0OwogI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfQVJNXzMyCi0jZGVmaW5l IGlzX3hlbl9oZWFwX3BhZ2UocGFnZSkgaXNfeGVuX2hlYXBfbWZuKHBhZ2VfdG9fbWZuKHBhZ2Up KQorI2RlZmluZSBpc194ZW5faGVhcF9wYWdlKHBhZ2UpIGlzX3hlbl9oZWFwX21mbihtZm5feChf X3BhZ2VfdG9fbWZuKHBhZ2UpKSkKICNkZWZpbmUgaXNfeGVuX2hlYXBfbWZuKG1mbikgKHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdW5zaWduZWQgbG9uZyBtZm5fID0g KG1mbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIChtZm5fID49IG1m bl94KHhlbmhlYXBfbWZuX3N0YXJ0KSAmJiAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTIy MCwxMiArMjIwLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICppb3JlbWFwX3djKHBh ZGRyX3Qgc3RhcnQsIHNpemVfdCBsZW4pCiB9KQogCiAvKiBDb252ZXJ0IGJldHdlZW4gbWFjaGlu ZSBmcmFtZSBudW1iZXJzIGFuZCBwYWdlLWluZm8gc3RydWN0dXJlcy4gKi8KLSNkZWZpbmUgX19t Zm5fdG9fcGFnZShtZm4pICAoZnJhbWVfdGFibGUgKyAocGZuX3RvX3BkeChtZm4pIC0gZnJhbWV0 YWJsZV9iYXNlX3BkeCkpCi0jZGVmaW5lIF9fcGFnZV90b19tZm4ocGcpICAgcGR4X3RvX3Bmbigo dW5zaWduZWQgbG9uZykoKHBnKSAtIGZyYW1lX3RhYmxlKSArIGZyYW1ldGFibGVfYmFzZV9wZHgp CisjZGVmaW5lIF9fbWZuX3RvX3BhZ2UobWZuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAoZnJhbWVfdGFibGUgKyAocGZuX3RvX3BkeChtZm5feChtZm4p KSAtIGZyYW1ldGFibGVfYmFzZV9wZHgpKQorI2RlZmluZSBfX3BhZ2VfdG9fbWZuKHBnKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX21mbihwZHhfdG9f cGZuKCh1bnNpZ25lZCBsb25nKSgocGcpIC0gZnJhbWVfdGFibGUpICsgZnJhbWV0YWJsZV9iYXNl X3BkeCkpCiAKIC8qIENvbnZlcnQgYmV0d2VlbiBtYWNoaW5lIGFkZHJlc3NlcyBhbmQgcGFnZS1p bmZvIHN0cnVjdHVyZXMuICovCi0jZGVmaW5lIG1hZGRyX3RvX3BhZ2UobWEpIF9fbWZuX3RvX3Bh Z2UoKG1hKSA+PiBQQUdFX1NISUZUKQotI2RlZmluZSBwYWdlX3RvX21hZGRyKHBnKSAoKHBhZGRy X3QpX19wYWdlX3RvX21mbihwZykgPDwgUEFHRV9TSElGVCkKKyNkZWZpbmUgbWFkZHJfdG9fcGFn ZShtYSkgX19tZm5fdG9fcGFnZShtYWRkcl90b19tZm4obWEpKQorI2RlZmluZSBwYWdlX3RvX21h ZGRyKHBnKSAobWZuX3RvX21hZGRyKF9fcGFnZV90b19tZm4ocGcpKSkKIAogLyogQ29udmVydCBi ZXR3ZWVuIGZyYW1lIG51bWJlciBhbmQgYWRkcmVzcyBmb3JtYXRzLiAgKi8KICNkZWZpbmUgcGZu X3RvX3BhZGRyKHBmbikgKChwYWRkcl90KShwZm4pIDw8IFBBR0VfU0hJRlQpCkBAIC0yMzUsNyAr MjM3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKmlvcmVtYXBfd2MocGFkZHJfdCBz dGFydCwgc2l6ZV90IGxlbikKICNkZWZpbmUgZ2FkZHJfdG9fZ2ZuKGdhKSAgICBfZ2ZuKHBhZGRy X3RvX3BmbihnYSkpCiAjZGVmaW5lIG1mbl90b19tYWRkcihtZm4pICAgcGZuX3RvX3BhZGRyKG1m bl94KG1mbikpCiAjZGVmaW5lIG1hZGRyX3RvX21mbihtYSkgICAgX21mbihwYWRkcl90b19wZm4o bWEpKQotI2RlZmluZSB2bWFwX3RvX21mbih2YSkgICAgIHBhZGRyX3RvX3Bmbih2aXJ0X3RvX21h ZGRyKCh2YWRkcl90KXZhKSkKKyNkZWZpbmUgdm1hcF90b19tZm4odmEpICAgICBtYWRkcl90b19t Zm4odmlydF90b19tYWRkcigodmFkZHJfdCl2YSkpCiAjZGVmaW5lIHZtYXBfdG9fcGFnZSh2YSkg ICAgbWZuX3RvX3BhZ2Uodm1hcF90b19tZm4odmEpKQogCiAvKiBQYWdlLWFsaWduIGFkZHJlc3Mg YW5kIGNvbnZlcnQgdG8gZnJhbWUgbnVtYmVyIGZvcm1hdCAqLwpAQCAtMzA5LDcgKzMxMSw3IEBA IHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2VfaW5mbyAqdmlydF90b19wYWdlKGNvbnN0IHZvaWQg KnYpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCAqcGFnZV90b192aXJ0KGNvbnN0IHN0cnVjdCBwYWdl X2luZm8gKnBnKQogewotICAgIHJldHVybiBtZm5fdG9fdmlydChwYWdlX3RvX21mbihwZykpOwor ICAgIHJldHVybiBtZm5fdG9fdmlydChtZm5feChfX3BhZ2VfdG9fbWZuKHBnKSkpOwogfQogCiBz dHJ1Y3QgcGFnZV9pbmZvICpnZXRfcGFnZV9mcm9tX2d2YShzdHJ1Y3QgdmNwdSAqdiwgdmFkZHJf dCB2YSwKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmggYi94ZW4vaW5jbHVk ZS9hc20tYXJtL3AybS5oCmluZGV4IGZhYWRjZmU4ZmUuLjg3Yzk5OTQ5NzQgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0u aApAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2VfaW5mbyAqZ2V0 X3BhZ2VfZnJvbV9nZm4oCiB7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKICAgICBwMm1f dHlwZV90IHAybXQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtZm4gPSBtZm5feChwMm1fbG9va3VwKGQs IF9nZm4oZ2ZuKSwgJnAybXQpKTsKKyAgICBtZm5fdCBtZm4gPSBwMm1fbG9va3VwKGQsIF9nZm4o Z2ZuKSwgJnAybXQpOwogCiAgICAgaWYgKHQpCiAgICAgICAgICp0ID0gcDJtdDsKQEAgLTI4NCw3 ICsyODQsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21f Z2ZuKAogICAgIGlmICggIXAybV9pc19hbnlfcmFtKHAybXQpICkKICAgICAgICAgcmV0dXJuIE5V TEw7CiAKLSAgICBpZiAoICFtZm5fdmFsaWQoX21mbihtZm4pKSApCisgICAgaWYgKCAhbWZuX3Zh bGlkKG1mbikgKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwYWdlID0gbWZuX3RvX3BhZ2Uo bWZuKTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9tbS5oCmluZGV4IDgzNjI2MDg1ZTAuLmM4ZGQyNzM1MTcgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgK QEAgLTI3MCw3ICsyNzAsNyBAQCBzdHJ1Y3QgcGFnZV9pbmZvCiAKICNkZWZpbmUgaXNfeGVuX2hl YXBfcGFnZShwYWdlKSAoKHBhZ2UpLT5jb3VudF9pbmZvICYgUEdDX3hlbl9oZWFwKQogI2RlZmlu ZSBpc194ZW5faGVhcF9tZm4obWZuKSBcCi0gICAgKF9fbWZuX3ZhbGlkKG1mbikgJiYgaXNfeGVu X2hlYXBfcGFnZShfX21mbl90b19wYWdlKG1mbikpKQorICAgIChfX21mbl92YWxpZChtZm4pICYm IGlzX3hlbl9oZWFwX3BhZ2UoX19tZm5fdG9fcGFnZShfbWZuKG1mbikpKSkKICNkZWZpbmUgaXNf eGVuX2ZpeGVkX21mbihtZm4pICAgICAgICAgICAgICAgICAgICAgXAogICAgICgoKChtZm4pIDw8 IFBBR0VfU0hJRlQpID49IF9fcGEoJl9zdGV4dCkpICYmICBcCiAgICAgICgoKG1mbikgPDwgUEFH RV9TSElGVCkgPD0gX19wYSgmX18yTV9yd2RhdGFfZW5kKSkpCkBAIC0zODMsNyArMzgzLDcgQEAg dm9pZCBwdXRfcGFnZV9mcm9tX2wxZShsMV9wZ2VudHJ5X3QgbDFlLCBzdHJ1Y3QgZG9tYWluICps MWVfb3duZXIpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgZ2V0X3BhZ2VfZnJvbV9tZm4obWZuX3Qg bWZuLCBzdHJ1Y3QgZG9tYWluICpkKQogewotICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBf X21mbl90b19wYWdlKG1mbl94KG1mbikpOworICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBf X21mbl90b19wYWdlKG1mbik7CiAKICAgICBpZiAoIHVubGlrZWx5KCFtZm5fdmFsaWQobWZuKSkg fHwgdW5saWtlbHkoIWdldF9wYWdlKHBhZ2UsIGQpKSApCiAgICAgewpAQCAtNDc3LDEwICs0Nzcs MTAgQEAgZXh0ZXJuIHBhZGRyX3QgbWVtX2hvdHBsdWc7CiAjZGVmaW5lIFNIQVJFRF9NMlAoX2Up ICAgICAgICAgICAoKF9lKSA9PSBTSEFSRURfTTJQX0VOVFJZKQogCiAjZGVmaW5lIGNvbXBhdF9t YWNoaW5lX3RvX3BoeXNfbWFwcGluZyAoKHVuc2lnbmVkIGludCAqKVJEV1JfQ09NUEFUX01QVF9W SVJUX1NUQVJUKQotI2RlZmluZSBfc2V0X2dwZm5fZnJvbV9tZm4obWZuLCBwZm4pICh7ICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBkb21haW4gKmQgPSBwYWdlX2dldF9vd25l cihfX21mbl90b19wYWdlKG1mbikpOyAgICAgXAotICAgIHVuc2lnbmVkIGxvbmcgZW50cnkgPSAo ZCAmJiAoZCA9PSBkb21fY293KSkgPyAgICAgICAgICAgICAgXAotICAgICAgICBTSEFSRURfTTJQ X0VOVFJZIDogKHBmbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBf c2V0X2dwZm5fZnJvbV9tZm4obWZuLCBwZm4pICh7ICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICBzdHJ1Y3QgZG9tYWluICpkID0gcGFnZV9nZXRfb3duZXIoX19tZm5fdG9fcGFnZShfbWZu KG1mbikpKTsgICAgXAorICAgIHVuc2lnbmVkIGxvbmcgZW50cnkgPSAoZCAmJiAoZCA9PSBkb21f Y293KSkgPyAgICAgICAgICAgICAgIFwKKyAgICAgICAgU0hBUkVEX00yUF9FTlRSWSA6IChwZm4p OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKCh2b2lkKSgobWZuKSA+PSAo UkRXUl9DT01QQVRfTVBUX1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RBUlQpIC8g NCB8fCBcCiAgICAgICAgICAgICAoY29tcGF0X21hY2hpbmVfdG9fcGh5c19tYXBwaW5nWyhtZm4p XSA9ICh1bnNpZ25lZCBpbnQpKGVudHJ5KSkpLCBcCiAgICAgIG1hY2hpbmVfdG9fcGh5c19tYXBw aW5nWyhtZm4pXSA9IChlbnRyeSkpOyAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20teDg2L3AybS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAppbmRleCAx N2IxZDBjOGQzLi5hMmEyMTYwNjFmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Ay bS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBz dGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ2ZuKAogICAgIC8q IE5vbi10cmFuc2xhdGVkIGd1ZXN0cyBzZWUgMS0xIFJBTSAvIE1NSU8gbWFwcGluZ3MgZXZlcnl3 aGVyZSAqLwogICAgIGlmICggdCApCiAgICAgICAgICp0ID0gbGlrZWx5KGQgIT0gZG9tX2lvKSA/ IHAybV9yYW1fcncgOiBwMm1fbW1pb19kaXJlY3Q7Ci0gICAgcGFnZSA9IF9fbWZuX3RvX3BhZ2Uo Z2ZuKTsKKyAgICBwYWdlID0gX19tZm5fdG9fcGFnZShfbWZuKGdmbikpOwogICAgIHJldHVybiBt Zm5fdmFsaWQoX21mbihnZm4pKSAmJiBnZXRfcGFnZShwYWdlLCBkKSA/IHBhZ2UgOiBOVUxMOwog fQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvcGFnZS5oCmluZGV4IDQ1Y2E3NDI2NzguLjg3MzdlZjE2ZmYgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL2FzbS14ODYvcGFnZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcGFn ZS5oCkBAIC04OCwxMCArODgsMTAgQEAKICAgICAoKHBhZGRyX3QpKCgoeCkubDQgJiAoUEFERFJf TUFTSyZQQUdFX01BU0spKSkpCiAKIC8qIEdldCBwb2ludGVyIHRvIGluZm8gc3RydWN0dXJlIG9m IHBhZ2UgbWFwcGVkIGJ5IHB0ZSAoc3RydWN0IHBhZ2VfaW5mbyAqKS4gKi8KLSNkZWZpbmUgbDFl X2dldF9wYWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFnZShsMWVfZ2V0X3Bmbih4KSkpCi0j ZGVmaW5lIGwyZV9nZXRfcGFnZSh4KSAgICAgICAgICAgKF9fbWZuX3RvX3BhZ2UobDJlX2dldF9w Zm4oeCkpKQotI2RlZmluZSBsM2VfZ2V0X3BhZ2UoeCkgICAgICAgICAgIChfX21mbl90b19wYWdl KGwzZV9nZXRfcGZuKHgpKSkKLSNkZWZpbmUgbDRlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19t Zm5fdG9fcGFnZShsNGVfZ2V0X3Bmbih4KSkpCisjZGVmaW5lIGwxZV9nZXRfcGFnZSh4KSAgICAg ICAgICAgKF9fbWZuX3RvX3BhZ2UobDFlX2dldF9tZm4oeCkpKQorI2RlZmluZSBsMmVfZ2V0X3Bh Z2UoeCkgICAgICAgICAgIChfX21mbl90b19wYWdlKGwyZV9nZXRfbWZuKHgpKSkKKyNkZWZpbmUg bDNlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFnZShsM2VfZ2V0X21mbih4KSkp CisjZGVmaW5lIGw0ZV9nZXRfcGFnZSh4KSAgICAgICAgICAgKF9fbWZuX3RvX3BhZ2UobDRlX2dl dF9tZm4oeCkpKQogCiAvKiBHZXQgcHRlIGFjY2VzcyBmbGFncyAodW5zaWduZWQgaW50KS4gKi8K ICNkZWZpbmUgbDFlX2dldF9mbGFncyh4KSAgICAgICAgICAgKGdldF9wdGVfZmxhZ3MoKHgpLmwx KSkKQEAgLTE1NywxMCArMTU3LDEwIEBAIHN0YXRpYyBpbmxpbmUgbDRfcGdlbnRyeV90IGw0ZV9m cm9tX3BhZGRyKHBhZGRyX3QgcGEsIHVuc2lnbmVkIGludCBmbGFncykKICNkZWZpbmUgbDRlX2Zy b21faW50cHRlKGludHB0ZSkgICAgKChsNF9wZ2VudHJ5X3QpIHsgKGludHB0ZV90KShpbnRwdGUp IH0pCiAKIC8qIENvbnN0cnVjdCBhIHB0ZSBmcm9tIGEgcGFnZSBwb2ludGVyIGFuZCBhY2Nlc3Mg ZmxhZ3MuICovCi0jZGVmaW5lIGwxZV9mcm9tX3BhZ2UocGFnZSwgZmxhZ3MpIGwxZV9mcm9tX3Bm bihfX3BhZ2VfdG9fbWZuKHBhZ2UpLCAoZmxhZ3MpKQotI2RlZmluZSBsMmVfZnJvbV9wYWdlKHBh Z2UsIGZsYWdzKSBsMmVfZnJvbV9wZm4oX19wYWdlX3RvX21mbihwYWdlKSwgKGZsYWdzKSkKLSNk ZWZpbmUgbDNlX2Zyb21fcGFnZShwYWdlLCBmbGFncykgbDNlX2Zyb21fcGZuKF9fcGFnZV90b19t Zm4ocGFnZSksIChmbGFncykpCi0jZGVmaW5lIGw0ZV9mcm9tX3BhZ2UocGFnZSwgZmxhZ3MpIGw0 ZV9mcm9tX3BmbihfX3BhZ2VfdG9fbWZuKHBhZ2UpLCAoZmxhZ3MpKQorI2RlZmluZSBsMWVfZnJv bV9wYWdlKHBhZ2UsIGZsYWdzKSBsMWVfZnJvbV9tZm4oX19wYWdlX3RvX21mbihwYWdlKSwgKGZs YWdzKSkKKyNkZWZpbmUgbDJlX2Zyb21fcGFnZShwYWdlLCBmbGFncykgbDJlX2Zyb21fbWZuKF9f cGFnZV90b19tZm4ocGFnZSksIChmbGFncykpCisjZGVmaW5lIGwzZV9mcm9tX3BhZ2UocGFnZSwg ZmxhZ3MpIGwzZV9mcm9tX21mbihfX3BhZ2VfdG9fbWZuKHBhZ2UpLCAoZmxhZ3MpKQorI2RlZmlu ZSBsNGVfZnJvbV9wYWdlKHBhZ2UsIGZsYWdzKSBsNGVfZnJvbV9tZm4oX19wYWdlX3RvX21mbihw YWdlKSwgKGZsYWdzKSkKIAogLyogQWRkIGV4dHJhIGZsYWdzIHRvIGFuIGV4aXN0aW5nIHB0ZS4g Ki8KICNkZWZpbmUgbDFlX2FkZF9mbGFncyh4LCBmbGFncykgICAgKCh4KS5sMSB8PSBwdXRfcHRl X2ZsYWdzKGZsYWdzKSkKQEAgLTIxNSwxMyArMjE1LDEzIEBAIHN0YXRpYyBpbmxpbmUgbDRfcGdl bnRyeV90IGw0ZV9mcm9tX3BhZGRyKHBhZGRyX3QgcGEsIHVuc2lnbmVkIGludCBmbGFncykKIC8q IFBhZ2UtdGFibGUgdHlwZS4gKi8KIHR5cGVkZWYgc3RydWN0IHsgdTY0IHBmbjsgfSBwYWdldGFi bGVfdDsKICNkZWZpbmUgcGFnZXRhYmxlX2dldF9wYWRkcih4KSAgKChwYWRkcl90KSh4KS5wZm4g PDwgUEFHRV9TSElGVCkKLSNkZWZpbmUgcGFnZXRhYmxlX2dldF9wYWdlKHgpICAgX19tZm5fdG9f cGFnZSgoeCkucGZuKQorI2RlZmluZSBwYWdldGFibGVfZ2V0X3BhZ2UoeCkgICBfX21mbl90b19w YWdlKHBhZ2V0YWJsZV9nZXRfbWZuKHgpKQogI2RlZmluZSBwYWdldGFibGVfZ2V0X3Bmbih4KSAg ICAoKHgpLnBmbikKICNkZWZpbmUgcGFnZXRhYmxlX2dldF9tZm4oeCkgICAgX21mbigoKHgpLnBm bikpCiAjZGVmaW5lIHBhZ2V0YWJsZV9pc19udWxsKHgpICAgICgoeCkucGZuID09IDApCiAjZGVm aW5lIHBhZ2V0YWJsZV9mcm9tX3BmbihwZm4pICgocGFnZXRhYmxlX3QpIHsgKHBmbikgfSkKICNk ZWZpbmUgcGFnZXRhYmxlX2Zyb21fbWZuKG1mbikgKChwYWdldGFibGVfdCkgeyBtZm5feChtZm4p IH0pCi0jZGVmaW5lIHBhZ2V0YWJsZV9mcm9tX3BhZ2UocGcpIHBhZ2V0YWJsZV9mcm9tX3Bmbihf X3BhZ2VfdG9fbWZuKHBnKSkKKyNkZWZpbmUgcGFnZXRhYmxlX2Zyb21fcGFnZShwZykgcGFnZXRh YmxlX2Zyb21fbWZuKF9fcGFnZV90b19tZm4ocGcpKQogI2RlZmluZSBwYWdldGFibGVfZnJvbV9w YWRkcihwKSBwYWdldGFibGVfZnJvbV9wZm4oKHApPj5QQUdFX1NISUZUKQogI2RlZmluZSBwYWdl dGFibGVfbnVsbCgpICAgICAgICBwYWdldGFibGVfZnJvbV9wZm4oMCkKIApAQCAtMjQwLDEyICsy NDAsMTIgQEAgdm9pZCBjb3B5X3BhZ2Vfc3NlMih2b2lkICosIGNvbnN0IHZvaWQgKik7CiAjZGVm aW5lIF9fbWZuX3RvX3ZpcnQobWZuKSAgKG1hZGRyX3RvX3ZpcnQoKHBhZGRyX3QpKG1mbikgPDwg UEFHRV9TSElGVCkpCiAKIC8qIENvbnZlcnQgYmV0d2VlbiBtYWNoaW5lIGZyYW1lIG51bWJlcnMg YW5kIHBhZ2UtaW5mbyBzdHJ1Y3R1cmVzLiAqLwotI2RlZmluZSBfX21mbl90b19wYWdlKG1mbikg IChmcmFtZV90YWJsZSArIHBmbl90b19wZHgobWZuKSkKLSNkZWZpbmUgX19wYWdlX3RvX21mbihw ZykgICBwZHhfdG9fcGZuKCh1bnNpZ25lZCBsb25nKSgocGcpIC0gZnJhbWVfdGFibGUpKQorI2Rl ZmluZSBfX21mbl90b19wYWdlKG1mbikgIChmcmFtZV90YWJsZSArIHBmbl90b19wZHgobWZuX3go bWZuKSkpCisjZGVmaW5lIF9fcGFnZV90b19tZm4ocGcpICAgX21mbihwZHhfdG9fcGZuKCh1bnNp Z25lZCBsb25nKSgocGcpIC0gZnJhbWVfdGFibGUpKSkKIAogLyogQ29udmVydCBiZXR3ZWVuIG1h Y2hpbmUgYWRkcmVzc2VzIGFuZCBwYWdlLWluZm8gc3RydWN0dXJlcy4gKi8KLSNkZWZpbmUgX19t YWRkcl90b19wYWdlKG1hKSBfX21mbl90b19wYWdlKChtYSkgPj4gUEFHRV9TSElGVCkKLSNkZWZp bmUgX19wYWdlX3RvX21hZGRyKHBnKSAoKHBhZGRyX3QpX19wYWdlX3RvX21mbihwZykgPDwgUEFH RV9TSElGVCkKKyNkZWZpbmUgX19tYWRkcl90b19wYWdlKG1hKSBfX21mbl90b19wYWdlKG1hZGRy X3RvX21mbihtYSkpCisjZGVmaW5lIF9fcGFnZV90b19tYWRkcihwZykgKG1mbl90b19tYWRkcihf X3BhZ2VfdG9fbWZuKHBnKSkpCiAKIC8qIENvbnZlcnQgYmV0d2VlbiBmcmFtZSBudW1iZXIgYW5k IGFkZHJlc3MgZm9ybWF0cy4gICovCiAjZGVmaW5lIF9fcGZuX3RvX3BhZGRyKHBmbikgKChwYWRk cl90KShwZm4pIDw8IFBBR0VfU0hJRlQpCkBAIC0yNzMsOCArMjczLDggQEAgdm9pZCBjb3B5X3Bh Z2Vfc3NlMih2b2lkICosIGNvbnN0IHZvaWQgKik7CiAjZGVmaW5lIHBmbl90b19wYWRkcihwZm4p ICAgX19wZm5fdG9fcGFkZHIocGZuKQogI2RlZmluZSBwYWRkcl90b19wZm4ocGEpICAgIF9fcGFk ZHJfdG9fcGZuKHBhKQogI2RlZmluZSBwYWRkcl90b19wZHgocGEpICAgIHBmbl90b19wZHgocGFk ZHJfdG9fcGZuKHBhKSkKLSNkZWZpbmUgdm1hcF90b19tZm4odmEpICAgICBsMWVfZ2V0X3Bmbigq dmlydF90b194ZW5fbDFlKCh1bnNpZ25lZCBsb25nKSh2YSkpKQotI2RlZmluZSB2bWFwX3RvX3Bh Z2UodmEpICAgIG1mbl90b19wYWdlKHZtYXBfdG9fbWZuKHZhKSkKKyNkZWZpbmUgdm1hcF90b19t Zm4odmEpICAgICBfbWZuKGwxZV9nZXRfcGZuKCp2aXJ0X3RvX3hlbl9sMWUoKHVuc2lnbmVkIGxv bmcpKHZhKSkpKQorI2RlZmluZSB2bWFwX3RvX3BhZ2UodmEpICAgIF9fbWZuX3RvX3BhZ2Uodm1h cF90b19tZm4odmEpKQogCiAjZW5kaWYgLyogIWRlZmluZWQoX19BU1NFTUJMWV9fKSAqLwogCmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vZG9tYWluX3BhZ2UuaCBiL3hlbi9pbmNsdWRlL3hl bi9kb21haW5fcGFnZS5oCmluZGV4IDg5MGJhZTViOWMuLjIyYWI2NWJhMTYgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL3hlbi9kb21haW5fcGFnZS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9kb21h aW5fcGFnZS5oCkBAIC0zNCw3ICszNCw3IEBAIHZvaWQgdW5tYXBfZG9tYWluX3BhZ2UoY29uc3Qg dm9pZCAqdmEpOwogLyogCiAgKiBHaXZlbiBhIFZBIGZyb20gbWFwX2RvbWFpbl9wYWdlKCksIHJl dHVybiBpdHMgdW5kZXJseWluZyBNRk4uCiAgKi8KLXVuc2lnbmVkIGxvbmcgZG9tYWluX3BhZ2Vf bWFwX3RvX21mbihjb25zdCB2b2lkICp2YSk7CittZm5fdCBkb21haW5fcGFnZV9tYXBfdG9fbWZu KGNvbnN0IHZvaWQgKnZhKTsKIAogLyoKICAqIFNpbWlsYXIgdG8gdGhlIGFib3ZlIGNhbGxzLCBl eGNlcHQgdGhlIG1hcHBpbmcgaXMgYWNjZXNzaWJsZSBpbiBhbGwKQEAgLTQ0LDExICs0NCwxMSBA QCB1bnNpZ25lZCBsb25nIGRvbWFpbl9wYWdlX21hcF90b19tZm4oY29uc3Qgdm9pZCAqdmEpOwog dm9pZCAqbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChtZm5fdCBtZm4pOwogdm9pZCB1bm1hcF9kb21h aW5fcGFnZV9nbG9iYWwoY29uc3Qgdm9pZCAqdmEpOwogCi0jZGVmaW5lIF9fbWFwX2RvbWFpbl9w YWdlKHBnKSAgICAgICAgbWFwX2RvbWFpbl9wYWdlKF9tZm4oX19wYWdlX3RvX21mbihwZykpKQor I2RlZmluZSBfX21hcF9kb21haW5fcGFnZShwZykgICAgICAgIG1hcF9kb21haW5fcGFnZShfX3Bh Z2VfdG9fbWZuKHBnKSkKIAogc3RhdGljIGlubGluZSB2b2lkICpfX21hcF9kb21haW5fcGFnZV9n bG9iYWwoY29uc3Qgc3RydWN0IHBhZ2VfaW5mbyAqcGcpCiB7Ci0gICAgcmV0dXJuIG1hcF9kb21h aW5fcGFnZV9nbG9iYWwoX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkpOworICAgIHJldHVybiBtYXBf ZG9tYWluX3BhZ2VfZ2xvYmFsKHBhZ2VfdG9fbWZuKHBnKSk7CiB9CiAKICNlbHNlIC8qICFDT05G SUdfRE9NQUlOX1BBR0UgKi8KQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkICpf X21hcF9kb21haW5fcGFnZV9nbG9iYWwoY29uc3Qgc3RydWN0IHBhZ2VfaW5mbyAqcGcpCiAjZGVm aW5lIG1hcF9kb21haW5fcGFnZShtZm4pICAgICAgICAgICAgICAgIF9fbWZuX3RvX3ZpcnQobWZu X3gobWZuKSkKICNkZWZpbmUgX19tYXBfZG9tYWluX3BhZ2UocGcpICAgICAgICAgICAgICAgcGFn ZV90b192aXJ0KHBnKQogI2RlZmluZSB1bm1hcF9kb21haW5fcGFnZSh2YSkgICAgICAgICAgICAg ICAoKHZvaWQpKHZhKSkKLSNkZWZpbmUgZG9tYWluX3BhZ2VfbWFwX3RvX21mbih2YSkgICAgICAg ICAgdmlydF90b19tZm4oKHVuc2lnbmVkIGxvbmcpKHZhKSkKKyNkZWZpbmUgZG9tYWluX3BhZ2Vf bWFwX3RvX21mbih2YSkgICAgICAgICAgX21mbih2aXJ0X3RvX21mbigodW5zaWduZWQgbG9uZyko dmEpKSkKIAogc3RhdGljIGlubGluZSB2b2lkICptYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKG1mbl90 IG1mbikKIHsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi90bWVtX3hlbi5oIGIveGVuL2lu Y2x1ZGUveGVuL3RtZW1feGVuLmgKaW5kZXggNTQyYzBiM2YyMC4uODUxNmEwYjEzMSAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUveGVuL3RtZW1feGVuLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3Rt ZW1feGVuLmgKQEAgLTI1LDcgKzI1LDcgQEAKIHR5cGVkZWYgdWludDMyX3QgcGFnZXNpemVfdDsg IC8qIGxpa2Ugc2l6ZV90LCBtdXN0IGhhbmRsZSBsYXJnZXN0IFBBR0VfU0laRSAqLwogCiAjZGVm aW5lIElTX1BBR0VfQUxJR05FRChhZGRyKSBJU19BTElHTkVEKCh1bnNpZ25lZCBsb25nKShhZGRy KSwgUEFHRV9TSVpFKQotI2RlZmluZSBJU19WQUxJRF9QQUdFKF9waSkgICAgbWZuX3ZhbGlkKF9t Zm4ocGFnZV90b19tZm4oX3BpKSkpCisjZGVmaW5lIElTX1ZBTElEX1BBR0UoX3BpKSAgICBtZm5f dmFsaWQocGFnZV90b19tZm4oX3BpKSkKIAogZXh0ZXJuIHN0cnVjdCBwYWdlX2xpc3RfaGVhZCB0 bWVtX3BhZ2VfbGlzdDsKIGV4dGVybiBzcGlubG9ja190IHRtZW1fcGFnZV9saXN0X2xvY2s7Ci0t IAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK