From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Kaleb S. KEITHLEY To: git-commits@fedoraproject.org Subject: [rpms/libntirpc] f43: include required fixes and updates that ntirpc never tagged or released Date: Sat, 13 Jun 2026 11:12:34 GMT Message-ID: <178134915415.1.10067496934428037410.rpms-libntirpc-261a8a189a18@fedoraproject.org> List-ID: X-Git-Repo: rpms/libntirpc X-Git-Branch: f43 X-Git-Rev: 261a8a189a1847a6317c543cd621f70f6531fbd8 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvbGlibnRpcnBjCkJy YW5jaCA6IGY0MwpDb21taXQgOiAyNjFhOGExODlhMTg0N2E2MzE3YzU0M2NkNjIxZjcwZjY1MzFm YmQ4CkF1dGhvciA6IEthbGViIFMuIEtFSVRITEVZIDxra2VpdGhsZUByZWRoYXQuY29tPgpEYXRl ICAgOiAyMDI2LTA2LTEzVDA3OjEwOjU1LTA0OjAwClN0YXRzICA6ICsyNzk4Ly00MyBpbiA0IGZp bGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9saWJudGly cGMvYy8yNjFhOGExODlhMTg0N2E2MzE3YzU0M2NkNjIxZjcwZjY1MzFmYmQ4P2JyYW5jaD1mNDMK CkxvZzoKaW5jbHVkZSByZXF1aXJlZCBmaXhlcyBhbmQgdXBkYXRlcyB0aGF0IG50aXJwYyBuZXZl ciB0YWdnZWQgb3IgcmVsZWFzZWQKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMi03LjJwbHVzLnBhdGNo IGIvMDAwMi03LjJwbHVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmQ3ZTBlN2UKLS0tIC9kZXYvbnVsbAorKysgYi8wMDAyLTcuMnBsdXMucGF0Y2gKQEAgLTAsMCAr MSwyNzkyIEBACitkaWZmIC11ciBudGlycGMtNy4yL0NNYWtlTGlzdHMudHh0IG50aXJwYy01Yzc2 MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL0NNYWtlTGlzdHMudHh0CistLS0g bnRpcnBjLTcuMi9DTWFrZUxpc3RzLnR4dAkyMDI2LTAzLTE4IDExOjQ1OjQwLjM1OTQ3MDQzNiAt MDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQx L0NNYWtlTGlzdHMudHh0CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAt MzcsMTggKzM3LDcgQEAKKyAKKyBzZXQoQ01BS0VfUE9TSVRJT05fSU5ERVBFTkRFTlRfQ09ERSBP TikKKyAKKy0jIEluc3RhbGwgZGVzdGluYXRpb24sIGlmIGJ1aWx0IHN0YW5kYWxvbmUKKy1nZXRf cHJvcGVydHkoVVNFX0xJQjY0IEdMT0JBTCBQUk9QRVJUWSBGSU5EX0xJQlJBUllfVVNFX0xJQjY0 X1BBVEhTKQorLWlmIChVU0VfTElCNjQpCistCXNldChMSUJfSU5TVEFMTF9ESVIgbGliNjQgQ0FD SEUgUEFUSAorLQkJIlNwZWNpZnkgbmFtZSBvZiBsaWJkaXIgaW5zaWRlIGluc3RhbGwgcGF0aCIp CistZWxzZSAoVVNFX0xJQjY0KQorLQlzZXQoTElCX0lOU1RBTExfRElSIGxpYiBDQUNIRSBQQVRI CistCQkiU3BlY2lmeSBuYW1lIG9mIGxpYmRpciBpbnNpZGUgaW5zdGFsbCBwYXRoIikKKy1lbmRp ZiAoVVNFX0xJQjY0KQorLQorLXNldChTWVNURU1fTElCUkFSSUVTICR7U1lTVEVNX0xJQlJBUklF U30pCistc2V0KEJJTkFSWV9MSUJSQVJJRVMgJHtCSU5BUllfTElCUkFSSUVTfSkKKytpbmNsdWRl KEdOVUluc3RhbGxEaXJzKQorIAorIGluY2x1ZGUoR2V0R2l0UmV2aXNpb25EZXNjcmlwdGlvbikK KyBnZXRfZ2l0X2hlYWRfcmV2aXNpb24oR0lUX1JFRlNQRUMgX0dJVF9IRUFEX0NPTU1JVCkKK0BA IC0zMTcsMjEgKzMwNiwxOSBAQAorIGVuZGlmIChOT1QgVEFSR0VUIGRpc3QpCisgCisgaWYgKE5P VCBUQVJHRVQgcnBtKQorLWFkZF9jdXN0b21fdGFyZ2V0KCBycG0gREVQRU5EUyBkaXN0KQorLWFk ZF9jdXN0b21fY29tbWFuZChUQVJHRVQgcnBtCisrYWRkX2N1c3RvbV90YXJnZXQoIHJwbQorICAg ICAgICAgICAgICAgICAgIENPTU1BTkQgc2ggLWMgInJwbWJ1aWxkIC10YSAke1BLR19OQU1FfSIK KyAJCSAgVkVSQkFUSU0KKyAJCSAgREVQRU5EUyBkaXN0KQorIAorIHNldChSUE1ERVNUICItLWRl ZmluZSAnX3NyY3JwbWRpciAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0nIikKKy1hZGRfY3Vz dG9tX3RhcmdldCggc3JwbSBERVBFTkRTIGRpc3QpCistYWRkX2N1c3RvbV9jb21tYW5kKFRBUkdF VCBzcnBtCisrYWRkX2N1c3RvbV90YXJnZXQoIHNycG0KKyAgICAgICAgICAgICAgICAgICBDT01N QU5EIHNoIC1jICJycG1idWlsZCAke1JQTURFU1R9IC10cyAke1BLR19OQU1FfSIKKyAJCSAgVkVS QkFUSU0KKyAJCSAgREVQRU5EUyBkaXN0KQorIGVuZGlmIChOT1QgVEFSR0VUIHJwbSkKKyAjIyMj IyMjIyMjIyBpbnN0YWxsIGZpbGVzICMjIyMjIyMjIyMjIyMjIworIAorLWluc3RhbGwoRklMRVMg ICR7UFJPSkVDVF9CSU5BUllfRElSfS9saWJudGlycGMucGMgREVTVElOQVRJT04gJHtMSUJfSU5T VEFMTF9ESVJ9L3BrZ2NvbmZpZykKKy1pbnN0YWxsKERJUkVDVE9SWSAgJHtOVElSUENfQkFTRV9E SVJ9L250aXJwYyBERVNUSU5BVElPTiBpbmNsdWRlKQorLWluc3RhbGwoRklMRVMgICR7UFJPSkVD VF9CSU5BUllfRElSfS9udGlycGMvdmVyc2lvbi5oIERFU1RJTkFUSU9OIGluY2x1ZGUvbnRpcnBj KQorK2luc3RhbGwoRklMRVMgICR7UFJPSkVDVF9CSU5BUllfRElSfS9saWJudGlycGMucGMgREVT VElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnKQorK2luc3RhbGwoRElS RUNUT1JZICAke05USVJQQ19CQVNFX0RJUn0vbnRpcnBjIERFU1RJTkFUSU9OICR7Q01BS0VfSU5T VEFMTF9JTkNMVURFRElSfSkKKytpbnN0YWxsKEZJTEVTICAke1BST0pFQ1RfQklOQVJZX0RJUn0v bnRpcnBjL3ZlcnNpb24uaCBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0v bnRpcnBjKQorT25seSBpbiBudGlycGMtNy4yOiBDTWFrZUxpc3RzLnR4dC5vcmlnCitPbmx5IGlu IG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxOiAuZ2l0aHVi CitkaWZmIC11ciBudGlycGMtNy4yL2xpYm50aXJwYy5wYy5pbi5jbWFrZSBudGlycGMtNWM3NjFi YjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9saWJudGlycGMucGMuaW4uY21ha2UK Ky0tLSBudGlycGMtNy4yL2xpYm50aXJwYy5wYy5pbi5jbWFrZQkyMDI1LTA5LTIzIDEwOjA1OjE5 LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdl ZTEyOTc4MjU2YmQxL2xpYm50aXJwYy5wYy5pbi5jbWFrZQkyMDI2LTA1LTE4IDE5OjQwOjIwLjAw MDAwMDAwMCAtMDQwMAorQEAgLTEsNiArMSw2IEBACisgcHJlZml4PUBDTUFLRV9JTlNUQUxMX1BS RUZJWEAKKyBleGVjX3ByZWZpeD0ke3ByZWZpeH0KKy1saWJkaXI9JHtwcmVmaXh9L0BMSUJfSU5T VEFMTF9ESVJACisrbGliZGlyPSR7cHJlZml4fS9AQ01BS0VfSU5TVEFMTF9MSUJESVJACisgaW5j bHVkZWRpcj0ke3ByZWZpeH0vaW5jbHVkZS9udGlycGMKKyAKKyBOYW1lOiBsaWJudGlycGMKK2Rp ZmYgLXVyIG50aXJwYy03LjIvbnRpcnBjL2x0dG5nL250aXJwY190cmFjZXMuaCBudGlycGMtNWM3 NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9udGlycGMvbHR0bmcvbnRpcnBj X3RyYWNlcy5oCistLS0gbnRpcnBjLTcuMi9udGlycGMvbHR0bmcvbnRpcnBjX3RyYWNlcy5oCTIw MjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZl OWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL2x0dG5nL250aXJwY190cmFjZXMu aAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTMyLDYgKzMyLDEyIEBA CisgI2RlZmluZSBfX1MyKHgpIF9fUzEoeCkKKyAjZGVmaW5lIExJTkVfQVNfU1RSSU5HIF9fUzIo X19MSU5FX18pCisgCisrI2lmbmRlZiBVTlVTRUQKKysjZGVmaW5lIFVOVVNFRF9BVFRSIF9fYXR0 cmlidXRlX18oKHVudXNlZCkpCisrI2RlZmluZSBVTlVTRUQoLi4uKSBVTlVTRURfKF9fVkFfQVJH U19fKQorKyNkZWZpbmUgVU5VU0VEXyhhcmcpIE5PVF9VU0VEXyMjYXJnIFVOVVNFRF9BVFRSCisr I2VuZGlmCisrCisgI2lmZGVmIFVTRV9MVFROR19OVElSUEMKKyAKKyAjaW5jbHVkZSAibHR0bmdf Z2VuZXJhdG9yLmgiCitAQCAtNTcsNyArNjMsNyBAQAorIAorIC8qIFdlIGNhbGwgdGhlIGVtcHR5 IGZ1bmN0aW9uIHdpdGggdGhlIHZhcmlhYmxlIGFyZ3MgdG8gYXZvaWQgdW51c2VkIHZhcmlhYmxl cworICAqIHdhcm5pbmcgd2hlbiBMVFRORyB0cmFjZXMgYXJlIGRpc2FibGVkICovCistc3RhdGlj IHZvaWQgaW5saW5lIG50aXJwY19lbXB0eV9mdW5jdGlvbihjb25zdCBjaGFyKiB1bnVzZWQsIC4u Likge30KKytzdGF0aWMgdm9pZCBpbmxpbmUgbnRpcnBjX2VtcHR5X2Z1bmN0aW9uKGNvbnN0IGNo YXIqIFVOVVNFRCh1bnVzZWQpLCAuLi4pIHt9CisgCisgI2RlZmluZSBOVElSUENfQVVUT19UUkFD RVBPSU5UKHByb3ZfbmFtZSwgZXZlbnRfbmFtZSwgbG9nX2xldmVsLCAuLi4pIFwKKyAJCW50aXJw Y19lbXB0eV9mdW5jdGlvbigidW51c2VkIiwgIyNfX1ZBX0FSR1NfXykKK0BAIC03NCw0ICs4MCw0 IEBACisgI2VuZGlmIC8qIFRQX0lOVF9BUlIgKi8KKyAKKyAjZW5kaWYgLy8gVVNFX0xUVE5HX05U SVJQQworLSNlbmRpZiAvLyBfX05USVJQQ19UUkFDRVNfSF9fCitcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKKysjZW5kaWYgLy8gX19OVElSUENfVFJBQ0VTX0hfXworZGlmZiAtdXIgbnRpcnBj LTcuMi9udGlycGMvcnBjL2NsbnQuaCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3 ZWUxMjk3ODI1NmJkMS9udGlycGMvcnBjL2NsbnQuaAorLS0tIG50aXJwYy03LjIvbnRpcnBjL3Jw Yy9jbG50LmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMt NWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9udGlycGMvcnBjL2NsbnQu aAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTExNSw2ICsxMTUsNyBA QAorIAltdXRleF90IGNsX2xvY2s7CS8qIHNlcmlhbGl6ZSBwcml2YXRlIGRhdGEgKi8KKyAJc3Ry dWN0IHJwY19lcnIgY2xfZXJyb3I7IC8qIHNwZWNpZmljIGVycm9yIGNvZGUgKi8KKyAJaW50MzJf dCBjbF9yZWZjbnQ7CS8qIGhhbmRsZSByZWZlcmVuY2UgY291bnQgKi8KKysJYm9vbCByZG1hX2Ns bnQ7CQkvKiB0cmFuc3BvcnQgcmRtYSAqLworIAl1aW50MTZfdCBjbF9mbGFnczsJLyogc3RhdGUg ZmxhZ3MgKi8KKyAKKyB9IENMSUVOVDsKK0BAIC00ODksNiArNDkwLDExIEBACisgCQkJCWNvbnN0 IHJwY3Byb2dfdCwgY29uc3QgcnBjdmVyc190LAorIAkJCQljb25zdCB1X2ludCwgY29uc3QgdV9p bnQsIGNvbnN0IHVpbnQzMl90KTsKKyAKKytDTElFTlQgKgorK2NsbnRfcmRtYV9jcmVhdGUoaW50 IGZkLCBjaGFyICpob3N0LCBpbnQgcG9ydCwgaW50IHJlY3Zfc3osCisrICAgIGludCBzZW5kX3N6 LCBpbnQgcGFnZV9zeiwgY29uc3QgcnBjcHJvZ190IHByb2csCisrICAgIGNvbnN0IHJwY3ZlcnNf dCB2ZXJzLCBjb25zdCB1aW50MzJfdCBmbGFncyk7CisrCisgc3RhdGljIGlubGluZSBDTElFTlQg KgorIGNsbnRfdmNfbmNyZWF0ZShjb25zdCBpbnQgZmQsIGNvbnN0IHN0cnVjdCBuZXRidWYgKnJh ZGRyLAorIAkJY29uc3QgcnBjcHJvZ190IHByb2csIGNvbnN0IHJwY3ZlcnNfdCB2ZXJzLAorQEAg LTUwMyw2ICs1MDksOSBAQAorICAqLworIGV4dGVybiBDTElFTlQgKmNsbnRfdmNfbmNyZWF0ZV9z dmMoY29uc3QgU1ZDWFBSVCAqLCBjb25zdCBycGNwcm9nX3QsCisgCQkJCSAgIGNvbnN0IHJwY3Zl cnNfdCwgY29uc3QgdWludDMyX3QpOworKworK2V4dGVybiBDTElFTlQgKmNsbnRfcmRtYV9uY3Jl YXRlZihjb25zdCBTVkNYUFJUICosIGNvbnN0IHJwY3Byb2dfdCwKKysJCQkJICBjb25zdCBycGN2 ZXJzX3QsIGNvbnN0IHVpbnQzMl90LCBib29sKTsKKyAvKgorICAqICAgICAgY29uc3QgU1ZDWFBS VCAqeHBydDsgICAgICAgICAgICAgICAgICAgIC0tIGFjdGl2ZSBzZXJ2aWNlIHhwcnQKKyAgKiAg ICAgIGNvbnN0IHJwY3Byb2dfdCBwcm9nOyAgICAgICAgICAgICAgICAgICAtLSBSUEMgcHJvZ3Jh bSBudW1iZXIKK2RpZmYgLXVyIG50aXJwYy03LjIvbnRpcnBjL3JwYy9oYXByb3h5LmggbnRpcnBj LTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy9oYXBy b3h5LmgKKy0tLSBudGlycGMtNy4yL250aXJwYy9ycGMvaGFwcm94eS5oCTIwMjUtMDktMjMgMTA6 MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3 NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy9oYXByb3h5LmgJMjAyNi0wNS0xOCAxOTo0MDoy MC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0zMCw2ICszMCwxMyBAQAorIAorICNpbmNsdWRlICJjb25m aWcuaCIKKyAKKysvKiBBZGRpbmcgbWFjcm8gZm9yIGNvbXBhdGliaWx0eSBvZiBjKysgY29tcGls YXRpb24gKi8KKysjaWZkZWYgX19jcGx1c3BsdXMKKysjaWZuZGVmIF9TdGF0aWNfYXNzZXJ0Cisr I2RlZmluZSBfU3RhdGljX2Fzc2VydCBzdGF0aWNfYXNzZXJ0CisrI2VuZGlmCisrI2VuZGlmCisr CisgI2lmbmRlZiBfTlRJUlBDX1JQQ19IQVBST1hZX0gKKyAjZGVmaW5lIF9OVElSUENfUlBDX0hB UFJPWFlfSAorIAorQEAgLTEyMiw2ICsxMjksNyBAQAorIAl1aW50MTZfdCBzcmNfcG9ydDsKKyAJ dWludDE2X3QgZHN0X3BvcnQ7CisgfTsKKysKKyBfU3RhdGljX2Fzc2VydCgKKyAJc2l6ZW9mKHN0 cnVjdCBwcm94eV9oZWFkZXJfYWRkcl9pcDRfcGFydCkgPT0gUFAyX0FERFJfTEVOX0lORVQsCisg CSJwcm94eV9oZWFkZXJfYWRkcl9pcDRfcGFydCBzaXplIGlzIG5vdCBlcXVhbCB0byBQUDJfQURE Ul9MRU5fSU5FVCIpOworQEAgLTEzMiw2ICsxNDAsNyBAQAorIAl1aW50MTZfdCBzcmNfcG9ydDsK KyAJdWludDE2X3QgZHN0X3BvcnQ7CisgfTsKKysKKyBfU3RhdGljX2Fzc2VydCgKKyAJc2l6ZW9m KHN0cnVjdCBwcm94eV9oZWFkZXJfYWRkcl9pcDZfcGFydCkgPT0gUFAyX0FERFJfTEVOX0lORVQ2 LAorIAkicHJveHlfaGVhZGVyX2FkZHJfaXA2X3BhcnQgc2l6ZSBpcyBub3QgZXF1YWwgdG8gUFAy X0FERFJfTEVOX0lORVQ2Iik7CitkaWZmIC11ciBudGlycGMtNy4yL250aXJwYy9ycGMvc3ZjLmgg bnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3Jw Yy9zdmMuaAorLS0tIG50aXJwYy03LjIvbnRpcnBjL3JwYy9zdmMuaAkyMDI1LTA5LTIzIDEwOjA1 OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzcz NDdlZTEyOTc4MjU2YmQxL250aXJwYy9ycGMvc3ZjLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAw MDAwMDAgLTA0MDAKK0BAIC0xODAsNiArMTgwLDcgQEAKKyAjZGVmaW5lIFNWQ19YUFJUX0ZMQUdf UkVNT1RFX0FERFJfU0VUCTB4MDIwMAkvKiByZW1vdGUgYWRkciB3YXMgZmluYWwgc2V0ICovCisg I2RlZmluZSBTVkNfWFBSVF9GTEFHX1JFQURZCQkweDA0MDAJLyogcmVhZHkgdG8gdXNlICovCisg I2RlZmluZSBTVkNfWFBSVF9GTEFHX0lPUV9XUklUSU5HCTB4MDgwMAkvKiB4cHJ0IGlzIHVzZWQg Ynkgc3ZjX2lvcV93cml0ZSAqLworKyNkZWZpbmUgU1ZDX1hQUlRfRkxBR19OT19TRVQJCTB4MTAw MCAgLyogZG8gbm90IHJlZ2lzdGVyIHdpdGggcnBjYmluZCAqLworIAorICNkZWZpbmUgU1ZDX1hQ UlRfRkxBR19ERVNUUk9ZRUQgKFNWQ19YUFJUX0ZMQUdfREVTVFJPWUlORyBcCisgCQkJCXwgU1ZD X1hQUlRfRkxBR19SRUxFQVNJTkcpCitAQCAtMjcyLDcgKzI3MywxMSBAQAorIAkJc3RydWN0IHsK KyAJCQlzdmNfcmVxX2Z1bl90IHByb2Nlc3NfY2I7CisgCQkJc3ZjX3hwcnRfZnVuX3QgcmVtb3Rl X2FkZHJfc2V0X2NiOworKyNpZmRlZiBfX2NwbHVzcGx1cworKwkJfWNvbm5lY3Rpb25fZGlzcGF0 Y2hfb3BzOworKyNlbHNlCisgCQl9OworKyNlbmRpZgorIAkJc3ZjX3hwcnRfZnVuX3QgcmVuZGV6 dm91c19jYjsKKyAJfSAgeHBfZGlzcGF0Y2g7CisgCVNWQ1hQUlQgKnhwX3BhcmVudDsKK0BAIC0z MTUsNiArMzIwLDggQEAKKyAJaW50IHhwX2lmaW5kZXg7CQkvKiBpbnRlcmZhY2UgaW5kZXggKi8K KyAJaW50IHhwX3NpX3R5cGU7CQkvKiBzaSB0eXBlICovCisgCWludCB4cF90eXBlOwkJLyogeHBy dCB0eXBlICovCisrCWNoYXIgKnhwX2lwOwkJLyogcmVtb3RlIGlwICovCisrCWludCB4cF9wb3J0 OwkJLyogcmVtb3RlIHBvcnQgKi8KKyAKKyAJaW50MzJfdCB4cF9yZWZjbnQ7CS8qIGhhbmRsZSBy ZWZlcmVuY2UgY291bnQgKi8KKyAJdWludDE2X3QgeHBfZmxhZ3M7CS8qIGZsYWdzICovCitAQCAt MzI3LDYgKzMzNCwxMCBAQAorIAkJc3RydWN0IGluNl9wa3RpbmZvIGluNjsKKyAjZW5kaWYKKyAJ fSB4cF9wa3RpbmZvOworKworKwkvKiBDbGllbnQgZGV0YWlscyAtIElQIEFkZHJlc3MgJiBQb3J0 ICovCisrCWNoYXIgeHBfY2xudF9hZGRyW0lORVQ2X0FERFJTVFJMRU5dOworKwl1aW50MTZfdCB4 cF9jbG50X3BvcnQ7CisgfTsKKyAKKyAjZGVmaW5lIFhQUlRfRk1UICJ4cHJ0OiBbcHRyID0ge30s ZmxhZ3MgPSB7fSxmZCA9IHt9LHR5cGUgPSB7fSxyZWZjbnQgPSB7fV0iCitkaWZmIC11ciBudGly cGMtNy4yL250aXJwYy9ycGMveGRyLmggbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0 N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy94ZHIuaAorLS0tIG50aXJwYy03LjIvbnRpcnBjL3Jw Yy94ZHIuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01 Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL250aXJwYy9ycGMveGRyLmgJ MjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0xMjMsNyArMTIzLDcgQEAK KyAJVklPX0RBVEEsICAgICAgICAgICAgICAgLyogZGF0YSBidWZmZXIgKi8KKyAJVklPX1RSQUlM RVJfTEVOLAkvKiBsZW5ndGggZmllbGQgZm9yIGZvbGxvd2luZyBUUkFJTEVSIGJ1ZmZlciAqLwor IAlWSU9fVFJBSUxFUiwgICAgICAgICAgICAvKiB0cmFpbGVyIGJ1ZmZlciBhZnRlciBkYXRhICov CistfSB2aW9fdHlwZTsKKyt9IHZpb190eXBlX3Q7CisgCisgLyogWERSIGJ1ZmZlciB2ZWN0b3Ig ZGVzY3JpcHRvcnMgKi8KKyB0eXBlZGVmIHN0cnVjdCB4ZHJfdmlvIHsKK0BAIC0xMzMsNyArMTMz LDcgQEAKKyAJdWludDhfdCAqdmlvX3dyYXA7CS8qIG1heGltdW0gdmlvX3RhaWwgKi8KKyAJdWlu dDMyX3QgdmlvX2xlbmd0aDsJLyogbGVuZ3RoIG9mIGJ1ZmZlciwgdXNlZCBmb3IgdmVjdG9yCisg CQkJCSAgIHByZS1hbGxvY2F0aW9uICovCistCXZpb190eXBlIHZpb190eXBlOwkvKiB0eXBlIG9m IGJ1ZmZlciAqLyAgIAorKwl2aW9fdHlwZV90IHZpb190eXBlOwkvKiB0eXBlIG9mIGJ1ZmZlciAq LyAgIAorIH0geGRyX3ZpbzsKKyAKKyAvKiB2aW9fd3JhcCA+PSB2aW9fdGFpbCA+PSB2aW9faGVh ZCA+PSB2aW9fYmFzZSAqLworQEAgLTE2Miw3ICsxNjIsMTEgQEAKKyAJCQkJICogMDogbm90IGFs bG9jYXRlZCAqLworIAl1X2ludAl1aW9fZmxhZ3M7CisgCWludDMyX3QgdWlvX3JlZmVyZW5jZXM7 CisrI2lmZGVmIF9fY3BsdXNwbHVzCisrCXhkcl92aW8gdWlvX3Zpb1sxXTsKKysjZWxzZQorIAl4 ZHJfdmlvCXVpb192aW9bMF07CS8qIGFwcGVuZGVkIHZlY3RvcnMgKi8KKysjZW5kaWYKKyB9IHhk cl91aW87CisgCisgLyogT3AgZmxhZ3MgKi8KK2RpZmYgLXVyIG50aXJwYy03LjIvbnRpcnBjL3Jw Yy94ZHJfaW5saW5lLmggbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5Nzgy NTZiZDEvbnRpcnBjL3JwYy94ZHJfaW5saW5lLmgKKy0tLSBudGlycGMtNy4yL250aXJwYy9ycGMv eGRyX2lubGluZS5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRp cnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy94 ZHJfaW5saW5lLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC01Miw2 ICs1MiwxNyBAQAorICNpbmNsdWRlIDxycGMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8cnBjL3hkci5o PgorIAorKyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorKworKyNp Zm5kZWYgVU5VU0VECisrI2RlZmluZSBVTlVTRURfQVRUUiBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQp KQorKyNkZWZpbmUgVU5VU0VEKC4uLikgVU5VU0VEXyhfX1ZBX0FSR1NfXykKKysjZGVmaW5lIFVO VVNFRF8oYXJnKSBOT1RfVVNFRF8jI2FyZyBVTlVTRURfQVRUUgorKyNlbmRpZgorKworKworIC8q CisgICogWERSIGludGVnZXJzCisgICovCitAQCAtNjM5LDcgKzY1MCw3IEBACisgfQorIAorIHN0 YXRpYyBpbmxpbmUgYm9vbAorLXhkcl9ieXRlc19mcmVlKFhEUiAqeGRycywgY2hhciAqKmNwcCwg c2l6ZV90IHNpemUpCisreGRyX2J5dGVzX2ZyZWUoWERSICpVTlVTRUQoeGRycyksIGNoYXIgKipj cHAsIHNpemVfdCBzaXplKQorIHsKKyAJaWYgKCpjcHApIHsKKyAJCW1lbV9mcmVlKCpjcHAsIHNp emUpOworQEAgLTg0MCw3ICs4NTEsNyBAQAorIH0KKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wKKy14 ZHJfYXJyYXlfZnJlZShYRFIgKnhkcnMsIGNoYXIgKipjcHAsIHVfaW50ICpzaXplcCwgdV9pbnQg bWF4c2l6ZSwKKyt4ZHJfYXJyYXlfZnJlZShYRFIgKnhkcnMsIGNoYXIgKipjcHAsIHVfaW50ICpz aXplcCwgdV9pbnQgVU5VU0VEKG1heHNpemUpLAorIAkgICAgICAgdV9pbnQgc2VsZW0sIHhkcnBy b2NfdCB4ZHJfZWxlbSkKKyB7CisgCWNoYXIgKnRhcmdldCA9ICpjcHA7CitAQCAtOTkzLDcgKzEw MDQsNyBAQAorIH0KKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wKKy14ZHJfc3RyaW5nX2ZyZWUoWERS ICp4ZHJzLCBjaGFyICoqY3BwKQorK3hkcl9zdHJpbmdfZnJlZShYRFIgKlVOVVNFRCh4ZHJzKSwg Y2hhciAqKmNwcCkKKyB7CisgCWlmICgqY3BwKSB7CisgCQltZW1fZnJlZSgqY3BwLCBzdHJsZW4o KmNwcCkgKyAxKTsKK0BAIC0xMDY0LDQgKzEwNzUsOCBAQAorIAlyZXR1cm4gKGlubGluZV94ZHJf dV9pbnQ2NF90KHhkcnMsICh1X2ludDY0X3QgKikgdWxscCkpOworIH0KKyAKKysjaWZkZWYgX19j cGx1c3BsdXMKKyt9CisrI2VuZGlmIC8qIGV4dGVybiAiQyIgKi8KKysKKyAjZW5kaWYJCQkJLyog X1RJUlBDX0lOTElORV9YRFJfSCAqLworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvY2xudF9nZW5l cmljLmMgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3Jj L2NsbnRfZ2VuZXJpYy5jCistLS0gbnRpcnBjLTcuMi9zcmMvY2xudF9nZW5lcmljLmMJMjAyNS0w OS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEz ZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvY2xudF9nZW5lcmljLmMJMjAyNi0wNS0xOCAx OTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC00NDcsMTAgKzQ0Nyw0MyBAQAorIAlyZXR1cm4g KDEpOworIH0KKyAKKysvKgorKyAqIEhlbHBlciBmdW5jdGlvbiB0byBpbnNlcnQgUkRNQSBjbGll bnQgcmVxdWVzdCBpbnRvIGNhbGxfZXhwaXJlcworKyAqLworK3N0YXRpYyB2b2lkCisrcmRtYV9j bG50X3JlcV9leHBpcmVfaW5zZXJ0KHN0cnVjdCBjbG50X3JlcSAqY2MpCisreworKwlzdHJ1Y3Qg Y3hfZGF0YSAqY3ggPSBDWF9EQVRBKGNjLT5jY19jbG50KTsKKysJc3RydWN0IHJwY19kcGx4X3Jl YyAqcmVjID0gY3gtPmN4X3JlYzsKKysJc3RydWN0IG9wcl9yYnRyZWVfbm9kZSAqbnY7CisrCXN0 cnVjdCB0aW1lc3BlYyB0czsKKysKKysJLyogQ2FsY3VsYXRlIGV4cGlyYXRpb24gdGltZSAqLwor Kwkodm9pZCljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQ19GQVNULCAmdHMpOworKwl0aW1l c3BlY2FkZCgmdHMsICZjYy0+Y2NfdGltZW91dCwgJnRzKTsKKysJY2MtPmNjX2V4cGlyZV9tcyA9 IHRpbWVzcGVjX21zKCZ0cyk7CisrCisrCXJwY19kcGx4X3JsaShyZWMpOworKwljYy0+Y2NfZmxh Z3MgPSBDTE5UX1JFUV9GTEFHX0VYUElSSU5HOworKyByZXBlYXQ6CisrCW52ID0gb3ByX3JidHJl ZV9pbnNlcnQoJnJlYy0+cmRtYV9jYWxsX2V4cGlyZXMsICZjYy0+Y2NfcnFzdCk7CisrCWlmIChu dikgeworKwkJLyogYWRkIHRoaXMgc2xpZ2h0bHkgbGF0ZXIgKi8KKysJCWNjLT5jY19leHBpcmVf bXMrKzsKKysJCWdvdG8gcmVwZWF0OworKwl9CisrCXJwY19kcGx4X3J1aShyZWMpOworK30KKysK KyBlbnVtIGNsbnRfc3RhdAorIGNsbnRfcmVxX2NhbGxiYWNrKHN0cnVjdCBjbG50X3JlcSAqY2Mp CisgeworLQlzdmNfcnFzdF9leHBpcmVfaW5zZXJ0KGNjKTsKKysJLyogQWRkIHRvIGFwcHJvcHJp YXRlIGNhbGxfZXhwaXJlcyBsaXN0IGJhc2VkIG9uIHRyYW5zcG9ydCB0eXBlICovCisrCWlmIChj Yy0+Y2NfY2xudC0+cmRtYV9jbG50KSB7CisrCQlyZG1hX2NsbnRfcmVxX2V4cGlyZV9pbnNlcnQo Y2MpOworKwl9IGVsc2UgeworKwkJc3ZjX3Jxc3RfZXhwaXJlX2luc2VydChjYyk7CisrCX0KKyAK KyAJcmV0dXJuIENMTlRfQ0FMTF9PTkNFKGNjKTsKKyB9CitAQCAtNDkyLDYgKzUyNSwyMCBAQAor IAlyZXR1cm4gKFJQQ19TVUNDRVNTKTsKKyB9CisgCisrLyoKKysgKiBIZWxwZXIgZnVuY3Rpb24g dG8gcmVtb3ZlIFJETUEgY2xpZW50IHJlcXVlc3QgZnJvbSBjYWxsX2V4cGlyZXMKKysgKi8KKyt2 b2lkCisrcmRtYV9jbG50X3JlcV9leHBpcmVfcmVtb3ZlKHN0cnVjdCBjbG50X3JlcSAqY2MpCisr eworKwlzdHJ1Y3QgY3hfZGF0YSAqY3ggPSBDWF9EQVRBKGNjLT5jY19jbG50KTsKKysJc3RydWN0 IHJwY19kcGx4X3JlYyAqcmVjID0gY3gtPmN4X3JlYzsKKysKKysJcnBjX2RwbHhfcmxpKHJlYyk7 CisrCW9wcl9yYnRyZWVfcmVtb3ZlKCZyZWMtPnJkbWFfY2FsbF9leHBpcmVzLCAmY2MtPmNjX3Jx c3QpOworKwlycGNfZHBseF9ydWkocmVjKTsKKyt9CisrCisgdm9pZAorIGNsbnRfcmVxX3Jlc2V0 KHN0cnVjdCBjbG50X3JlcSAqY2MpCisgeworQEAgLTUwNSw3ICs1NTIsMTIgQEAKKyAJCQkJCSAg IENMTlRfUkVRX0ZMQUdfQUNLU1lOQyB8CisgCQkJCQkgICBDTE5UX1JFUV9GTEFHX0VYUElSSU5H KQorIAkgICAgJiBDTE5UX1JFUV9GTEFHX0VYUElSSU5HKSB7CistCQlzdmNfcnFzdF9leHBpcmVf cmVtb3ZlKGNjKTsKKysJCS8qIFJlbW92ZSBmcm9tIGFwcHJvcHJpYXRlIGNhbGxfZXhwaXJlcyBs aXN0IGJhc2VkIG9uIHRyYW5zcG9ydCB0eXBlICovCisrCQlpZiAoY2MtPmNjX2NsbnQtPnJkbWFf Y2xudCkgeworKwkJCXJkbWFfY2xudF9yZXFfZXhwaXJlX3JlbW92ZShjYyk7CisrCQl9IGVsc2Ug eworKwkJCXN2Y19ycXN0X2V4cGlyZV9yZW1vdmUoY2MpOworKwkJfQorIAkJY2MtPmNjX2V4cGly ZV9tcyA9IDA7CS8qIGF0b21pYyBiYXJyaWVyKHMpICovCisgCX0KKyB9CitAQCAtNTI1LDYgKzU3 Nyw3IEBACisgCWNjLT5jY19yZWZyZXNoZXMgPSAyOworIAljYy0+Y2NfdGltZW91dCA9IHRpbWVv dXQ7CisgCisrCisgCWlmICh0aW1lb3V0LnR2X25zZWMgPCAwIHx8IHRpbWVvdXQudHZfbnNlYyA+ IDk5OTk5OTk5OQorIAkgfHwgdGltZW91dC50dl9zZWMgPCAwKSB7CisgCQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfRVJST1IsCitAQCAtNTg1LDcgKzYzOCwxMSBAQAorIAlpZiAoYXRvbWljX3Bv c3RjbGVhcl91aW50MTZfdF9iaXRzKCZjYy0+Y2NfZmxhZ3MsCisgCQkJCQkgICBDTE5UX1JFUV9G TEFHX0VYUElSSU5HKQorIAkgICAgJiBDTE5UX1JFUV9GTEFHX0VYUElSSU5HKSB7CistCQlzdmNf cnFzdF9leHBpcmVfcmVtb3ZlKGNjKTsKKysJCWlmIChjYy0+Y2NfY2xudC0+cmRtYV9jbG50KSB7 CisrCQkJcmRtYV9jbG50X3JlcV9leHBpcmVfcmVtb3ZlKGNjKTsKKysJCX0gZWxzZSB7CisrCQkJ c3ZjX3Jxc3RfZXhwaXJlX3JlbW92ZShjYyk7CisrCQl9CisgCQljYy0+Y2NfZXhwaXJlX21zID0g MDsJLyogYXRvbWljIGJhcnJpZXIocykgKi8KKyAJfQorIAorZGlmZiAtdXIgbnRpcnBjLTcuMi9z cmMvY2xudF9pbnRlcm5hbC5oIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEy OTc4MjU2YmQxL3NyYy9jbG50X2ludGVybmFsLmgKKy0tLSBudGlycGMtNy4yL3NyYy9jbG50X2lu dGVybmFsLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMt NWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvY2xudF9pbnRlcm5h bC5oCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtNjQsNSArNjQsOSBA QAorIC8qIGluIHN2Y19ycXN0LmMgKi8KKyB2b2lkIHN2Y19ycXN0X2V4cGlyZV9pbnNlcnQoc3Ry dWN0IGNsbnRfcmVxICopOworIHZvaWQgc3ZjX3Jxc3RfZXhwaXJlX3JlbW92ZShzdHJ1Y3QgY2xu dF9yZXEgKik7CistCisrdm9pZCBzdmNfcnFzdF9leHBpcmVfdGFzayhzdHJ1Y3Qgd29ya19wb29s X2VudHJ5ICopOworK2ludCBzdmNfcnFzdF9leHBpcmVfY21wZihjb25zdCBzdHJ1Y3Qgb3ByX3Ji dHJlZV9ub2RlICpsaHMsCisrCQkJIGNvbnN0IHN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgKnJocyk7 Cisrdm9pZCByZG1hX2NsbnRfcmVxX2V4cGlyZV9yZW1vdmUoc3RydWN0IGNsbnRfcmVxICopOwor K2Jvb2wgY2xudF9kYXRhX2lzdmFsaWQoc3RydWN0IHJwY19jbGllbnQgKik7CisgI2VuZGlmCQkJ CS8qIF9DTE5UX0lOVEVSTkFMX0ggKi8KK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL2NsbnRfcmRt YS5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9j bG50X3JkbWEuYworLS0tIG50aXJwYy03LjIvc3JjL2NsbnRfcmRtYS5jCTIwMjUtMDktMjMgMTA6 MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3 NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2NsbnRfcmRtYS5jCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAw MDAwMDAwIC0wNDAwCitAQCAtNTQsNiArNTQsNyBAQAorICNpbmNsdWRlIDxlcnIuaD4KKyAjaW5j bHVkZSAicnBjX2NvbS5oIgorICNpbmNsdWRlICJjbG50X2ludGVybmFsLmgiCisrI2luY2x1ZGUg InN2Y19pbnRlcm5hbC5oIgorICNpbmNsdWRlICJycGNfcmRtYS5oIgorIAorICNkZWZpbmUgTUFY X0RFRkFVTFRfRkRTCQkgMjAwMDAKK0BAIC04OCwyOSArODksMTAxIEBACisgICogZm9sbG93ZWQg YnkgQ0xOVF9ERVNUUk9ZKCkgYXMgbmVjZXNzYXJ5LgorICAqLworIENMSUVOVCAqCistY2xudF9y ZG1hX25jcmVhdGVmKFJETUFYUFJUICpyZG1hX3hwcnQsCQkvKiBpbml0IGJ1dCBOT1QgY29ubmVj dCgpZWQgKi8KKytjbG50X3JkbWFfbmNyZWF0ZWYoY29uc3QgU1ZDWFBSVCAqeHBydCwJCS8qIGlu aXQgYnV0IE5PVCBjb25uZWN0KCllZCAqLworIAkJICAgY29uc3QgcnBjcHJvZ190IHByb2dyYW0s CisgCQkgICBjb25zdCBycGN2ZXJzX3QgdmVyc2lvbiwKKy0JCSAgIGNvbnN0IHVfaW50IGZsYWdz KQorKwkJICAgY29uc3QgdV9pbnQgZmxhZ3MsIGJvb2wgY3JlYXRlKQorIHsKKyAJc3RydWN0IGNt X2RhdGEgKmNtID0gY2xudF9yZG1hX2RhdGFfemFsbG9jKCk7CisgCUNMSUVOVCAqY2wgPSAmY20t PmNtX2N4LmN4X2M7CisgCXN0cnVjdCBycGNfbXNnIGNhbGxfbXNnOworIAlYRFIgeGRyc1sxXTsJ CS8qIHRlbXAgWERSIHN0cmVhbSAqLworIAorLQljbC0+Y2xfb3BzID0gY2xudF9yZG1hX29wcygp OworLQorLQlpZiAoIXJkbWFfeHBydCB8fCByZG1hX3hwcnQtPnN0YXRlICE9IFJETUFYU19JTklU SUFMKSB7CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCistCQkJIiVzOiAlcEAl cCBjYWxsZWQgd2l0aCBpbnZhbGlkIHRyYW5zcG9ydCBhZGRyZXNzIiwKKy0JCQlfX2Z1bmNfXywg Y2wsIHJkbWFfeHBydCk7CistCQljbC0+Y2xfZXJyb3IucmVfc3RhdHVzID0gUlBDX1VOS05PV05B RERSOworLQkJcmV0dXJuIChjbCk7CisrCVJETUFYUFJUICpyZG1hX3hwcnQgPSBOVUxMOworKwlp ZiAoY3JlYXRlKSB7CisrCQlyZG1hX3hwcnQgPSBycGNfcmRtYV9hbGxvY2F0ZSgoKFJETUFYUFJU ICopeHBydCktPnhhKTsKKysJCWlmICghcmRtYV94cHJ0KSB7CisrCQkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VSUk9SLAorKwkJCQkiJXM6IHJkbWEgYWxsb2NhdGUgZmFpbGVkIiwgX19mdW5j X18pOworKwkJCWNsLT5jbF9lcnJvci5yZV9zdGF0dXMgPSBSUENfU1lTVEVNRVJST1I7CisrCQkJ cmV0dXJuIGNsOworKwkJfQorKwl9IGVsc2UgeworKwkJcmRtYV94cHJ0ID0gKFJETUFYUFJUICop eHBydDsKKysJCXJkbWFfeHBydC0+c2hhcmVkID0gdHJ1ZTsKKysJCS8qIFRha2UgcmVmIGZvciBz aGFyZWQgeHBydCAqLworKwkJU1ZDX1JFRigmcmRtYV94cHJ0LT5zbV9kci54cHJ0LCBTVkNfUkVG X0ZMQUdfTk9ORSk7CisgCX0KKysKKyAJY20tPmNtX2N4LmN4X3JlYyA9ICZyZG1hX3hwcnQtPnNt X2RyOworKwljbC0+Y2xfb3BzID0gY2xudF9yZG1hX29wcygpOworKwljbC0+cmRtYV9jbG50ID0g dHJ1ZTsKKyAKKy0JcnBjX3JkbWFfY29ubmVjdChyZG1hX3hwcnQpOworLQlycGNfcmRtYV9jb25u ZWN0X2ZpbmFsaXplKHJkbWFfeHBydCk7CisrCS8qIFRoaXMgaXMgdXNlZCB3aGVuIHdlIHdhbnQg dG8gY3JlYXRlIHNlcGVyYXRlCisrCSAqIGNvbm5lY3Rpb24gZm9yIGNhbGxiYWNrIGNoYW5uZWwu CisrCSAqIHhwcnQgd2UgYXJlIHBhc3NpbmcgaXMgZXhpc3RpbmcgY29ubmVjdGlvbiwKKysJICog c28gd2UgbmVlZCBzZXBhcmV0IGZsYWcgdG8gaW5kaWNhdGUgd2Ugd2FudCB0bworKwkgKiBjcmVh dGUgbmV3IGNvbm5lY3Rpb24gb3IgZXhpc3Rpbmcgb25lIGFzIGNhbGxiYWNrIGNoYW5uZWwuCisr CSAqIEZvciBORlN2NC4xIGl0cyBhbHdheXMgZmFsc2UsIHNpbmNlIHdlIHdhbnQgdG8gdXNlIHNh bWUgY29ubmVjdGlvbi4gKi8KKysJaWYgKGNyZWF0ZSkgeworKwkJLyogQ29weSByZW1vdGUgaXAg Ki8KKysJCXN2Y19yZG1hX29wcygmcmRtYV94cHJ0LT5zbV9kci54cHJ0KTsKKysKKysJCXJkbWFf eHBydC0+c21fZHIueHBydC54cF9pcCA9IG1lbV9hbGxvYyhTT0NLX05BTUVfTUFYKTsKKysJCW1l bWNweShyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsIHhwcnQtPnhwX2lwLCBTT0NLX05BTUVf TUFYKTsKKysJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9wb3J0ID0geHBydC0+eHBfcG9ydDsK KysKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwgIiVzOiBjcmVhdGUgcmRt YSBjbG50IGlwICVzIHBvcnQgJWQiLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQtPnNtX2RyLnhw cnQueHBfaXAsIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9wb3J0KTsKKysKKysJCS8qIFJETUFY X0NMSUVOVCBpbmRpY2F0ZSBpcyBjbGllbnQgY29ubmVjdGlvbiBmcm9tCisrCQkgKiBzZXJ2ZXIg dG8gY2xpZW50IGlmIHdlIGFyZSBjcmVhdGluZyBuZXcgY29ubmVjdGlvbgorKwkJICogZm9yIHNl cnZlciBsaXN0ZW4gY29ubmVjdGlvbiB3ZSB1c2UgeGEtPmJhY2tsb2cKKysJCSAqIGZvciBjbGll bnQgdG8gc2VydmVyIGNvbm5lY3Rpb24gd2UgdXNlIFJETUFYX1NFUlZFUl9DSElMRCAqLworKwkJ cmRtYV94cHJ0LT5zZXJ2ZXIgPSBSRE1BWF9DTElFTlQ7CisrCisrCQlpZiAoIXJkbWFfeHBydCB8 fCByZG1hX3hwcnQtPnN0YXRlICE9IFJETUFYU19JTklUSUFMKSB7CisrCQkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VSUk9SLAorKwkJCQkiJXM6ICVwQCVwIGNhbGxlZCB3aXRoIGludmFsaWQg dHJhbnNwb3J0IGFkZHJlc3MiLAorKwkJCQlfX2Z1bmNfXywgY2wsIHJkbWFfeHBydCk7CisrCQkJ Y2wtPmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19VTktOT1dOQUREUjsKKysJCQlyZXR1cm4gKGNs KTsKKysJCX0KKysKKysJCWlmIChycGNfcmRtYV9jb25uZWN0X3ByZXBhcmUocmRtYV94cHJ0KSkg eworKwkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiBmYWlsZWQiLCBfX2Z1 bmNfXyk7CisrCQkJY2wtPmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19VTktOT1dOQUREUjsKKysJ CQlyZXR1cm4gKGNsKTsKKysJCX0KKysKKysJCWlmIChycGNfcmRtYV9jb25uZWN0KHJkbWFfeHBy dCkpIHsKKysJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJCSIlczogcmRt YSBjb25uZWN0IGZhaWxlZCIsIF9fZnVuY19fKTsKKysJCQljbC0+Y2xfZXJyb3IucmVfc3RhdHVz ID0gUlBDX1VOS05PV05BRERSOworKwkJCXJldHVybiAoY2wpOworKwkJfQorKwkJaWYgKHJwY19y ZG1hX2Nvbm5lY3RfZmluYWxpemUocmRtYV94cHJ0KSkgeworKwkJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19FUlJPUiwKKysJCQkJIiVzOiByZG1hIGNvbm5lY3QgZmluYWxpemUgZmFpbGVkIiwg X19mdW5jX18pOworKwkJCWNsLT5jbF9lcnJvci5yZV9zdGF0dXMgPSBSUENfVU5LTk9XTkFERFI7 CisrCQkJcmV0dXJuIChjbCk7CisrCQl9CisrCisrCQlzdHJ1Y3QgcnBjX2RwbHhfcmVjICpyZWMg PSBSRUNfWFBSVCh4cHJ0KTsKKysJCXJkbWFfeHBydC0+c21fZHIucmVjdnN6ID0gcmVjLT5yZWN2 c3o7CisrCQlyZG1hX3hwcnQtPnNtX2RyLnNlbmRzeiA9IHJlYy0+c2VuZHN6OworKwkJcmRtYV94 cHJ0LT5zbV9kci5wYWdlc3ogPSByZWMtPnBhZ2VzejsKKysKKysJCXJkbWFfeHBydC0+c21fZHIu cmVjdl9oZHJfc3ogPSByZWMtPnJlY3ZfaGRyX3N6OworKwkJcmRtYV94cHJ0LT5zbV9kci5zZW5k X2hkcl9zeiA9IHJlYy0+c2VuZF9oZHJfc3o7CisrCisrCQlpZiAoeGRyX3JkbWFfY3JlYXRlKHJk bWFfeHBydCkpIHsKKysJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJCSIl czogYnVmZmVyIGFsbG9jYXRpb24gZmFpbGVkIiwgX19mdW5jX18pOworKwkJCWNsLT5jbF9lcnJv ci5yZV9zdGF0dXMgPSBSUENfU1lTVEVNRVJST1I7CisrCQkJcmV0dXJuIChjbCk7CisrCQl9Cisr CX0KKyAKKyAJLyoKKyAJICogaW5pdGlhbGl6ZSBjYWxsIG1lc3NhZ2UKK0BAIC0xNjIsMjMgKzIz NSw0MiBAQAorIAkJeGRyX3JkbWFfaW9xX3V2X2ZldGNoKCZyZG1hX3hwcnQtPnNtX2RyLmlvcSwg JnJkbWFfeHBydC0+Y2JxaCwKKyAJCQkJICJjYWxsIGNvbnRleHQiLCAxLCBJT1FfRkxBR19OT05F KTsKKyAJc3RydWN0IHJwY19yZG1hX2NiYyAqY2JjID0gKHN0cnVjdCBycGNfcmRtYV9jYmMgKiko X0lPUShoYXZlKSk7CisrCisrICAgICAgICBjYmMtPnJlY3ZxLnhkcnNbMF0ueF9saWJbMV0gPQor KyAgICAgICAgY2JjLT5zZW5kcS54ZHJzWzBdLnhfbGliWzFdID0KKysgICAgICAgIGNiYy0+ZGF0 YXEueGRyc1swXS54X2xpYlsxXSA9CisrICAgICAgICBjYmMtPmZyZWVxLnhkcnNbMF0ueF9saWJb MV0gPSByZG1hX3hwcnQ7CisrCisrICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJnJkbWFfeHBy dC0+Y2JjbGlzdC5xbXV0ZXgpOworKworKyAgICAgICAgY2JjLT5jYWxsX2lubGluZSA9IDE7Cisr ICAgICAgICBjYmMtPmRhdGFfY2h1bmtfdXYgPSBOVUxMOworKyAgICAgICAgY2JjLT5yZWZjbnQg PSAxOyAvLyBTZW50aW5lbCByZWYKKysJU1ZDX1JFRigmcmRtYV94cHJ0LT5zbV9kci54cHJ0LCBT VkNfUkVGX0ZMQUdfTk9ORSk7IC8vIGZvciBjYmMgcmVmCisrICAgICAgICBjYmMtPmNiY19mbGFn cyA9IENCQ19GTEFHX1JFTEVBU0U7CisrICAgICAgICBjYmMtPnJlYWRfd2FpdHMgPSAwOworKyAg ICAgICAgY2JjLT53cml0ZV93YWl0cyA9IDA7CisrICAgICAgICBjYmMtPmFjdGl2ZSA9IGZhbHNl OworKyAgICAgICAgY2JjLT5ub25fcmVnaXN0ZXJlZF9idWYgPSBOVUxMOworKyAgICAgICAgY2Jj LT5ub25fcmVnaXN0ZXJlZF9idWZfbGVuID0gMDsKKysKKysgICAgICAgIFRBSUxRX0lOU0VSVF9U QUlMKCZyZG1hX3hwcnQtPmNiY2xpc3QucWgsICZjYmMtPmNiY19saXN0LCBxKTsKKysgICAgICAg IHJkbWFfeHBydC0+Y2JjbGlzdC5xY291bnQrKzsKKysgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5s b2NrKCZyZG1hX3hwcnQtPmNiY2xpc3QucW11dGV4KTsKKysKKyAJWERSICp4ZHJzOworIAl1X2lu dDMyX3QgKnVpbnQzMnA7CisgCistCS8qIGZyZWUgb2xkIGJ1ZmZlcnMgKHNob3VsZCBkbyBub3Ro aW5nKSAqLworLQl4ZHJfaW9xX3JlbGVhc2UoJmNiYy0+cmVjdnEuaW9xX3V2LnV2cWgpOworLQl4 ZHJfaW9xX3JlbGVhc2UoJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgpOworLQl4ZHJfcmRtYV9jYWxs cShyZG1hX3hwcnQpOworLQorLQljYmMtPnJlY3ZxLnhkcnNbMF0ueF9saWJbMV0gPQorLQljYmMt PnNlbmRxLnhkcnNbMF0ueF9saWJbMV0gPSByZG1hX3hwcnQ7CisrCWNjLT5jY190aW1lb3V0LnR2 X3NlYyA9IGNjLT5jY190aW1lb3V0LnR2X25zZWMgPSAwOworIAorLQkodm9pZCkgeGRyX3JkbWFf aW9xX3V2X2ZldGNoKCZjYmMtPnNlbmRxLCAmcmRtYV94cHJ0LT5vdXRidWZzX2RhdGEudXZxaCwK KysJLyogVXNlIGhkciBidWZmZXIgc2luY2UgY2FsbGJhY2tzIGRvbid0IGNvbnRhaW4gZGF0YSAq LworKwkodm9pZCkgeGRyX3JkbWFfaW9xX3V2X2ZldGNoKCZjYmMtPnNlbmRxLCAmcmRtYV94cHJ0 LT5vdXRidWZzX2hkci51dnFoLAorIAkJCQkiY2FsbCBidWZmZXIiLCAxLCBJT1FfRkxBR19OT05F KTsKKyAJeGRyX2lvcV9yZXNldCgmY2JjLT5zZW5kcSwgMCk7CisgCisgCXhkcnMgPSBjYmMtPnNl bmRxLnhkcnM7CisgCWNjLT5jY19lcnJvci5yZV9zdGF0dXMgPSBSUENfU1VDQ0VTUzsKKysJeGRy cy0+eF9vcCA9IFhEUl9FTkNPREU7CisgCisgCW11dGV4X2xvY2soJmNsLT5jbF9sb2NrKTsKKyAJ dWludDMycCA9ICh1X2ludDMyX3QgKikmY3gtPmN4X21jYWxsY1swXTsKK0BAIC0xOTQsMTYgKzI4 NiwyMCBAQAorIAkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0NMTlRfUkRNQSwKKyAJCQkiJXM6 ICVwQCVwIGZhaWxlZCIsCisgCQkJX19mdW5jX18sIGNsLCBjeC0+Y3hfcmVjKTsKKy0JCXhkcl9p b3FfcmVsZWFzZSgmY2JjLT5zZW5kcS5pb3FfdXYudXZxaCk7CisrCQljYmNfcmVsZWFzZV9pdChj YmMpOworIAkJcmV0dXJuIChSUENfQ0FOVEVOQ09ERUFSR1MpOworIAl9CisgCW11dGV4X3VubG9j aygmY2wtPmNsX2xvY2spOworIAorKwkvKiBzZW5kIHJlcXVlc3QgYW5kIHJlY3YgcmVzcG9uc2Ug Ki8KKyAJaWYgKCF4ZHJfcmRtYV9jbG50X2ZsdXNob3V0KGNiYykpIHsKKysJCWNiY19yZWxlYXNl X2l0KGNiYyk7CisgCQljbC0+Y2xfZXJyb3IucmVfZXJybm8gPSBlcnJubzsKKyAJCXJldHVybiAo UlBDX0NBTlRTRU5EKTsKKyAJfQorIAorKwljYmNfcmVsZWFzZV9pdChjYmMpOworKworIAlyZXR1 cm4gKFJQQ19TVUNDRVNTKTsKKyB9CisgCitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9jbG50X3Zj LmMgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2Ns bnRfdmMuYworLS0tIG50aXJwYy03LjIvc3JjL2NsbnRfdmMuYwkyMDI1LTA5LTIzIDEwOjA1OjE5 LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdl ZTEyOTc4MjU2YmQxL3NyYy9jbG50X3ZjLmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAg LTA0MDAKK0BAIC03Myw2ICs3Myw5IEBACisgI2luY2x1ZGUgInN2Y19pb3EuaCIKKyAjaW5jbHVk ZSAiY2xudF9pbnRlcm5hbC5oIgorICNpbmNsdWRlICJzdmNfaW50ZXJuYWwuaCIKKysjaWZkZWYg VVNFX1JQQ19SRE1BCisrI2luY2x1ZGUgInJwY19yZG1hLmgiCisrI2VuZGlmCisgCisgc3RhdGlj IGVudW0geHBydF9zdGF0IGNsbnRfdmNfcHJvY2VzcyhzdHJ1Y3Qgc3ZjX3JlcSAqcmVxKTsKKyBz dGF0aWMgc3RydWN0IGNsbnRfb3BzICpjbG50X3ZjX29wcyh2b2lkKTsKK0BAIC0xMjQsNiArMTI3 LDQ5IEBACisgICogICAgICBzZXJ2ZXIgdHJhbnBzb3J0cyBzaGFyaW5nIGFuIHVuZGVybHlpbmcg Ynl0ZXN0cmVhbSAoTWF0dCkuCisgICovCisgCisrI2lmZGVmIFVTRV9SUENfUkRNQQorKy8qIENy ZWF0ZSBuZXcgUkRNQSBjbGllbnQgd2l0aCBzcGVjaWZpZWQgY29ubmVjdGlvbiBwYXJhbWV0ZXJz ICovCisrQ0xJRU5UICoKKytjbG50X3JkbWFfY3JlYXRlKGludCBmZCwgY2hhciAqaG9zdCwgaW50 IHBvcnQsIGludCByZWN2X3N6LCBpbnQgc2VuZF9zeiwKKysgICAgaW50IHBhZ2Vfc3osIGNvbnN0 IHJwY3Byb2dfdCBwcm9nLCBjb25zdCBycGN2ZXJzX3QgdmVycywKKysgICAgY29uc3QgdWludDMy X3QgZmxhZ3MpCisreworKwlzdHJ1Y3QgcnBjX3JkbWFfYXR0ciB0bXBfeGEgPSB7CisrCQkuc3Rh dGlzdGljc19wcmVmaXggPSBOVUxMLAorKwkJLm5vZGUgPSAiOjoiLAorKwkJLnBvcnQgPSAiMjAw NDkiLCAgICAgICAgICAgICAgICAvKiBkZWZhdWx0IHBvcnQgMjAwNDkgKi8KKysJCS5zcV9kZXB0 aCA9IDMyLCAgICAgICAgICAgICAgICAgLyogZGVmYXVsdCB3YXMgNTAgKi8KKysJCS5tYXhfc2Vu ZF9zZ2UgPSAzMiwgICAgICAgICAgICAgLyogbWluaW11bSAyICovCisrCQkucnFfZGVwdGggPSAz MiwgICAgICAgICAgICAgICAgIC8qIGRlZmF1bHQgd2FzIDUwICovCisrCQkubWF4X3JlY3Zfc2dl ID0gMzEsICAgICAgICAgICAgIC8qIG1pbmltdW0gMSAqLworKwkJLmJhY2tsb2cgPSAxMCwgICAg ICAgICAgICAgICAgICAvKiBtaW5pbXVtIDIgKi8KKysJCS5jcmVkaXRzID0gMzAsICAgICAgICAg ICAgICAgICAgLyogZGVmYXVsdCAxMCAqLworKwkJLmRlc3Ryb3lfb25fZGlzY29ubmVjdCA9IHRy dWUsCisrCQkudXNlX3NycSA9IGZhbHNlLAorKwl9OworKwlzdHJ1Y3QgcnBjX3JkbWFfYXR0ciAq dXNlX3hhID0gbWVtX2FsbG9jKHNpemVvZihzdHJ1Y3QgcnBjX3JkbWFfYXR0cikpOworKwltZW1j cHkodXNlX3hhLCAmdG1wX3hhLCBzaXplb2Yoc3RydWN0IHJwY19yZG1hX2F0dHIpKTsKKysJU1ZD WFBSVCAqeHBydCA9IHN2Y19mZF9uY3JlYXRlZihmZCwgc2VuZF9zeiwgcmVjdl9zeiwgZmxhZ3Mp OworKwlpZiAoIXhwcnQpIHsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVz OiBGYWlsZWQgdG8gY3JlYXRlIHhwcnQgZmQgJWQiLAorKwkJCV9fZnVuY19fLCBmZCk7CisrCQly ZXR1cm4gTlVMTDsKKysJfQorKwlSRE1BWFBSVCAqcmRtYV94cHJ0ID0gKFJETUFYUFJUICopeHBy dDsKKysJcmRtYV94cHJ0LT54YSA9IHVzZV94YTsKKysJc3RydWN0IHJwY19kcGx4X3JlYyAqcmVj ID0gUkVDX1hQUlQoeHBydCk7CisrCXJlYy0+cmVjdnN6ID0gUkRNQV9EQVRBX0NIVU5LX1NaOwor KwlyZWMtPnNlbmRzeiA9IFJETUFfREFUQV9DSFVOS19TWjsKKysJcmVjLT5wYWdlc3ogPSBwYWdl X3N6OworKwlyZWMtPnJlY3ZfaGRyX3N6ID0gUkRNQV9IRFJfQ0hVTktfU1o7CisrCXJlYy0+c2Vu ZF9oZHJfc3ogPSBSRE1BX0hEUl9DSFVOS19TWjsKKysJeHBydC0+eHBfaXAgPSBob3N0OworKwl4 cHJ0LT54cF9wb3J0ID0gcG9ydDsKKysJLyogY3JlYXRlIHJkbWFfeHBydCB1c2luZyB4cHJ0ICov CisrCXJldHVybiBjbG50X3JkbWFfbmNyZWF0ZWYoeHBydCwgcHJvZywgdmVycywgZmxhZ3MsIHRy dWUpOworK30KKysjZW5kaWYKKysKKyAvKgorICAqIENyZWF0ZSBhIGNsaWVudCBoYW5kbGUgZm9y IGEgY29ubmVjdGlvbi4KKyAgKiBEZWZhdWx0IG9wdGlvbnMgYXJlIHNldCwgd2hpY2ggdGhlIHVz ZXIgY2FuIGNoYW5nZSB1c2luZyBjbG50X2NvbnRyb2woKSdzLgorZGlmZiAtdXIgbnRpcnBjLTcu Mi9zcmMvQ01ha2VMaXN0cy50eHQgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2Vl MTI5NzgyNTZiZDEvc3JjL0NNYWtlTGlzdHMudHh0CistLS0gbnRpcnBjLTcuMi9zcmMvQ01ha2VM aXN0cy50eHQJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMt NWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvQ01ha2VMaXN0cy50 eHQJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC01LDkgKzUsNiBAQAor ICAgLURfR05VX1NPVVJDRQorICkKKyAKKy0jIG9rIG9uIExpbnV4IGFuZCBGcmVlQlNEIHcvR0ND IGFuZCBjbGFuZyBjb21waWxlcnMKKy1zZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdT fSAtZlBJQyIpCistCisgIyMjIyMjIyMjIyMgbmV4dCB0YXJnZXQgIyMjIyMjIyMjIyMjIyMjCisg CisgU0VUKG50aXJwY19jb21tb25fU1JDUworQEAgLTI3LDcgKzI0LDYgQEAKKyAgIGdldG5ldGNv bmZpZy5jCisgICBnZXRuZXRwYXRoLmMKKyAgIGdldHBlZXJlaWQuYworLSAgZ2V0cnBjZW50LmMK KyAgIG10X21pc2MuYworICAgcG1hcF9wcm90LmMKKyAgIHBtYXBfcHJvdDIuYworQEAgLTEzNiw3 ICsxMzIsNyBAQAorICAgU09WRVJTSU9OICIke05USVJQQ19NQUpPUl9WRVJTSU9OfSR7TlRJUlBD X01JTk9SX1ZFUlNJT059IgorICAgKQorIAorLWluc3RhbGwoVEFSR0VUUyBudGlycGMgREVTVElO QVRJT04gJHtMSUJfSU5TVEFMTF9ESVJ9KQorK2luc3RhbGwoVEFSR0VUUyBudGlycGMgREVTVElO QVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0pCisgCisgIyMjIyMjIyMjIyMgaW5zdGFsbCBm aWxlcyAjIyMjIyMjIyMjIyMjIyMKKyAKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL2xpYm50aXJw Yy5tYXAuaW4uY21ha2UgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5Nzgy NTZiZDEvc3JjL2xpYm50aXJwYy5tYXAuaW4uY21ha2UKKy0tLSBudGlycGMtNy4yL3NyYy9saWJu dGlycGMubWFwLmluLmNtYWtlCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisr KysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2xp Ym50aXJwYy5tYXAuaW4uY21ha2UJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAK K0BAIC03MCw2ICs3MCw4IEBACisgICAgIGNsbnRfdmNfZ2V0X2NsaWVudF94cHJ0OworICAgICBj bG50X3ZjX25jcmVhdGVmOworICAgICBjbG50X3ZjX25jcmVhdGVfc3ZjOworKyAgICBjbG50X3Jk bWFfY3JlYXRlOworKyAgICBjbG50X3JkbWFfbmNyZWF0ZWY7CisgCisgICAgICMgZSoKKyAgICAg ZW5kbmV0Y29uZmlnOworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvbHR0bmcvQ01ha2VMaXN0cy50 eHQgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2x0 dG5nL0NNYWtlTGlzdHMudHh0CistLS0gbnRpcnBjLTcuMi9zcmMvbHR0bmcvQ01ha2VMaXN0cy50 eHQJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFi YjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvbHR0bmcvQ01ha2VMaXN0cy50 eHQJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0yMiw3ICsyMiw3IEBA CisgICBTT1ZFUlNJT04gIiR7TlRJUlBDX01BSk9SX1ZFUlNJT059JHtOVElSUENfTUlOT1JfVkVS U0lPTn0iCisgKQorIAorLWluc3RhbGwoVEFSR0VUUyBudGlycGNfdHJhY2Vwb2ludHMgQ09NUE9O RU5UIHRyYWNpbmcgREVTVElOQVRJT04gJHtMSUJfSU5TVEFMTF9ESVJ9ICkKKytpbnN0YWxsKFRB UkdFVFMgbnRpcnBjX3RyYWNlcG9pbnRzIENPTVBPTkVOVCB0cmFjaW5nIERFU1RJTkFUSU9OICR7 Q01BS0VfSU5TVEFMTF9MSUJESVJ9ICkKKyAKKyBhZGRfbGlicmFyeShudGlycGNfbHR0bmcgU1RB VElDIGx0dG5nX2RlZmluZXMuYykKKyAjYWRkX3Nhbml0aXplcnMobnRpcnBjX2x0dG5nKQorZGlm ZiAtdXIgbnRpcnBjLTcuMi9zcmMvbWV0cmljc19saWJudGlycGMuaCBudGlycGMtNWM3NjFiYjE4 NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvbWV0cmljc19saWJudGlycGMuaAor LS0tIG50aXJwYy03LjIvc3JjL21ldHJpY3NfbGlibnRpcnBjLmgJMjAyNS0wOS0yMyAxMDowNTox OS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3 ZWUxMjk3ODI1NmJkMS9zcmMvbWV0cmljc19saWJudGlycGMuaAkyMDI2LTA1LTE4IDE5OjQwOjIw LjAwMDAwMDAwMCAtMDQwMAorQEAgLTMzLDYgKzMzLDcgQEAKKyAjaW5jbHVkZSA8cnBjL2F1dGhf Z3NzLmg+CisgI2VuZGlmCisgI2luY2x1ZGUgPHJwYy9hdXRoX3N0YXQuaD4KKysjaW5jbHVkZSA8 dGltZS5oPgorIAorIHR5cGVkZWYgZW51bSBnc3Nfc3ZjX2F1dGhfc3RlcCB7CisgCVZBTElEQVRF X0FVVEhfREFUQSA9IDAsCitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9tb25pdG9yaW5nL0NNYWtl TGlzdHMudHh0IG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQx L3NyYy9tb25pdG9yaW5nL0NNYWtlTGlzdHMudHh0CistLS0gbnRpcnBjLTcuMi9zcmMvbW9uaXRv cmluZy9DTWFrZUxpc3RzLnR4dAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAor KysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9t b25pdG9yaW5nL0NNYWtlTGlzdHMudHh0CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0w NDAwCitAQCAtOCwxMyArOCwxMyBAQAorIAorIGFkZF9saWJyYXJ5KG50aXJwY21vbml0b3Jpbmcg U0hBUkVEICR7bnRpcnBjbW9uaXRvcmluZ19TUkNTfSkKKyBhZGRfc2FuaXRpemVycyhudGlycGNt b25pdG9yaW5nKQorLXNldF90YXJnZXRfcHJvcGVydGllcyhudGlycGNtb25pdG9yaW5nIFBST1BF UlRJRVMgQ09NUElMRV9GTEFHUyAiLWZQSUMiCisrc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG50aXJw Y21vbml0b3JpbmcgUFJPUEVSVElFUworICAgVkVSU0lPTiAke05USVJQQ19WRVJTSU9OfQorICAg U09WRVJTSU9OICIke05USVJQQ19NQUpPUl9WRVJTSU9OfSR7TlRJUlBDX01JTk9SX1ZFUlNJT059 IgorICAgKQorIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKG50aXJwY21vbml0b3JpbmcgICAg IFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Byb21ldGhldXMtY3BwLWxpdGUv Y29yZS9pbmNsdWRlKQorIHNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAt cGVkYW50aWMtZXJyb3JzIC1XZXJyb3IgLVdhbGwgLVdleHRyYSIpCistaW5zdGFsbChUQVJHRVRT IG50aXJwY21vbml0b3JpbmcgREVTVElOQVRJT04gJHtMSUJfSU5TVEFMTF9ESVJ9KQorK2luc3Rh bGwoVEFSR0VUUyBudGlycGNtb25pdG9yaW5nIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9M SUJESVJ9KQorIAorICMjIyMjIyMjIyMjIGluc3RhbGwgZmlsZXMgIyMjIyMjIyMjIyMjIyMjCist aW5zdGFsbChGSUxFUyAgaW5jbHVkZS9tb25pdG9yaW5nLmggREVTVElOQVRJT04gaW5jbHVkZS9u dGlycGMpCisraW5zdGFsbChGSUxFUyAgaW5jbHVkZS9tb25pdG9yaW5nLmggREVTVElOQVRJT04g JHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9L250aXJwYykKK2RpZmYgLXVyIG50aXJwYy03LjIv c3JjL3JwY19kcGx4X2ludGVybmFsLmggbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0 N2VlMTI5NzgyNTZiZDEvc3JjL3JwY19kcGx4X2ludGVybmFsLmgKKy0tLSBudGlycGMtNy4yL3Ny Yy9ycGNfZHBseF9pbnRlcm5hbC5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAw CisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3Jj L3JwY19kcGx4X2ludGVybmFsLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAK K0BAIC01Nyw2ICs1Nyw3IEBACisgCXN0cnVjdCB4ZHJfaW9xIGlvcTsKKyAJc3RydWN0IHBvb2xx X2hlYWQgd3JpdGVxOwkvKio8IHBvb2xxIGZvciB3cml0ZSByZXF1ZXN0cyAqLworIAlzdHJ1Y3Qg b3ByX3JidHJlZSBjYWxsX3JlcGxpZXM7CisrCXN0cnVjdCBvcHJfcmJ0cmVlIHJkbWFfY2FsbF9l eHBpcmVzOwkvKio8IGNhbGwgZXhwaXJhdGlvbiB0cmVlIGZvciBSRE1BICovCisgCXN0cnVjdCBv cHJfcmJ0cmVlX25vZGUgZmRfbm9kZTsKKyAJc3RydWN0IHsKKyAJCXJwY19kcGx4X2xvY2tfdCBs b2NrOworQEAgLTExNCwxMSArMTE1LDE2IEBACisgCWNvbmRfZGVzdHJveSgmbG9jay0+d2UuY3Yp OworIH0KKyAKKysvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBjYWxsX2V4cGlyZXMgY29tcGFy aXNvbiBmdW5jdGlvbiAqLworK2ludCBzdmNfcnFzdF9leHBpcmVfY21wZihjb25zdCBzdHJ1Y3Qg b3ByX3JidHJlZV9ub2RlICpsaHMsCisrCQkJIGNvbnN0IHN0cnVjdCBvcHJfcmJ0cmVlX25vZGUg KnJocyk7CisrCisgc3RhdGljIGlubGluZSB2b2lkCisgcnBjX2RwbHhfcmVjX2luaXQoc3RydWN0 IHJwY19kcGx4X3JlYyAqcmVjKQorIHsKKyAJcnBjX2RwbHhfbG9ja19pbml0KCZyZWMtPnJlY3Yu bG9jayk7CisgCW9wcl9yYnRyZWVfaW5pdCgmcmVjLT5jYWxsX3JlcGxpZXMsIGNsbnRfcmVxX3hp ZF9jbXBmKTsKKysJb3ByX3JidHJlZV9pbml0KCZyZWMtPnJkbWFfY2FsbF9leHBpcmVzLCBzdmNf cnFzdF9leHBpcmVfY21wZik7CisgCW11dGV4X2luaXQoJnJlYy0+eHBydC54cF9sb2NrLCBOVUxM KTsKKyAJVEFJTFFfSU5JVCgmcmVjLT53cml0ZXEucWgpOworIAltdXRleF9pbml0KCZyZWMtPndy aXRlcS5xbXV0ZXgsIE5VTEwpOworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvcnBjX3JkbWEuYyBu dGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvcnBjX3Jk bWEuYworLS0tIG50aXJwYy03LjIvc3JjL3JwY19yZG1hLmMJMjAyNS0wOS0yMyAxMDowNToxOS4w MDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUx Mjk3ODI1NmJkMS9zcmMvcnBjX3JkbWEuYwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAt MDQwMAorQEAgLTc0LDYgKzc0LDcgQEAKKyAjaW5jbHVkZSAibWlzYy9hYnN0cmFjdF9hdG9taWMu aCIKKyAjaW5jbHVkZSAicnBjX3JkbWEuaCIKKyAjaW5jbHVkZSAic3ZjX2ludGVybmFsLmgiCisr I2luY2x1ZGUgImNsbnRfaW50ZXJuYWwuaCIKKyAKKyAjaWZkZWYgSEFWRV9WQUxHUklORF9NRU1D SEVDS19ICisgIyAgaW5jbHVkZSA8dmFsZ3JpbmQvbWVtY2hlY2suaD4KK0BAIC0zMjksNyArMzMw LDcgQEAKKyAJaW50IGNsZWFudXBfY291bnQgPSAwOworIAlzdHJ1Y3QgcG9vbHFfaGVhZCAqaW9x aCA9ICZyZG1hX3hwcnQtPmNiY2xpc3Q7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19F VkVOVCwgIiVzKCkgYmVmb3JlIGNsZWFudXAgIgorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsICIlcygpIGJlZm9yZSBjbGVhbnVwICIKKyAJICAgICIlcCB4cF9yZWZjbnQgJWQg YWN0aXZlIHJlcXVlc3RzICVkIHFjb3VudCAlZCIsCisgCSAgICBfX2Z1bmNfXywgJnJkbWFfeHBy dC0+c21fZHIueHBydCwKKyAJICAgIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9yZWZjbnQsIHJk bWFfeHBydC0+YWN0aXZlX3JlcXVlc3RzLAorQEAgLTM3Niw3ICszNzcsNyBAQAorIAkJCQljYmNf cmVsZWFzZSA9IHRydWU7CisgCQkJCWNiY19yZWxlYXNlX2NvdW50ID0gY2JjLT53cml0ZV93YWl0 czsKKyAKKy0JCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULCAiJXMgYWN0aXZlIGNi YyAlcCAiCisrCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwgIiVzIGFjdGl2 ZSBjYmMgJXAgIgorIAkJCQkgICAgImNiY19yZWYgJWQgcmVhZF93YWl0cyAlZCB3cml0ZV93YWl0 cyAlZCAiCisgCQkJCSAgICAiYWN0aXZlIHJlcXVlc3RzICVkIHJkbWFfeHBydCAlcCIsCisgCQkJ CSAgICBfX2Z1bmNfXywgY2JjLCBjYmMtPnJlZmNudCwgY2JjLT5yZWFkX3dhaXRzLAorQEAgLTM4 Niw3ICszODcsNyBAQAorIAorIAkJCWlmICghY2JjX3JlbGVhc2UpIHsKKyAJCQkJLyogUGVuZGlu ZyByZXF1ZXN0IHNob3VsZCBjbGVhbnVwIHRoaXMgY2JjICovCistCQkJCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FVkVOVCwgIiVzIGFjdGl2ZSBjYmMgJXAgIgorKwkJCQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfUlBDX1JETUEsICIlcyBhY3RpdmUgY2JjICVwICIKKyAJCQkJICAgICJjYmNf cmVmICVkIHJlYWRfd2FpdHMgJWQgd3JpdGVfd2FpdHMgJWQgIgorIAkJCQkgICAgImFjdGl2ZSBy ZXF1ZXN0cyAlZCByZG1hX3hwcnQgJXAiLAorIAkJCQkgICAgX19mdW5jX18sIGNiYywgY2JjLT5y ZWZjbnQsIGNiYy0+cmVhZF93YWl0cywKK0BAIC00MTcsNyArNDE4LDcgQEAKKyAKKyAJcHRocmVh ZF9tdXRleF91bmxvY2soJmlvcWgtPnFtdXRleCk7CisgCistCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FVkVOVCwgIiVzKCkgYWZ0ZXIgY2xlYW51cCAiCisrCV9fd2FybngoVElSUENfREVCVUdf RkxBR19SUENfUkRNQSwgIiVzKCkgYWZ0ZXIgY2xlYW51cCAiCisgCSAgICAiJXAgeHBfcmVmY250 ICVkIGFjdGl2ZSByZXF1ZXN0cyAlZCBjbGVhbnVwIGNvdW50ICVkICIKKyAJICAgICJxY291bnQg JWQiLAorIAkgICAgX19mdW5jX18sICZyZG1hX3hwcnQtPnNtX2RyLnhwcnQsCitAQCAtNTE1LDcg KzUxNiw3IEBACisgCisgCQlycGNfcmRtYV9zdGF0ZS5jcV90aHJlYWRfaWRzW3JwY19yZG1hX3N0 YXRlLmNxX3RocmVhZF9jb3VudF0gPSB0aHJpZDsKKyAKKy0JCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FVkVOVCwKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQki JXMoKSB0aHJlYWQgJWx4IHNwYXduZWQgZm9yIGVwb2xsICVkIiwKKyAJCQlfX2Z1bmNfXywKKyAJ CQkodW5zaWduZWQgbG9uZyl0aHJpZCwKK0BAIC02NjEsNyArNjYyLDcgQEAKKyAJCXJldHVybiBy YzsKKyAJfQorIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCSIlcDpycGNfcmRtYV9mZF9hZGQgZmQ6JWQg ZXBvbGxmZDolZCIsCisgCQlwdGhyZWFkX3NlbGYoKSwgZmQsIGVwb2xsZmQpOworIAorQEAgLTY3 MSw3ICs2NzIsNyBAQAorIGludAorIHJwY19yZG1hX2ZkX2RlbChpbnQgZmQsIGludCBlcG9sbGZk KQorIHsKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkiJXA6cnBjX3JkbWFfZmRfZGVsIGZkOiVkIGVwb2xs ZmQ6JWQiLAorIAkJcHRocmVhZF9zZWxmKCksIGZkLCBlcG9sbGZkKTsKKyAKK0BAIC04NDQsOCAr ODQ1LDggQEAKKyAgKgorICAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCB3b3JrIGNvbXBsZXRpb24g c3RhdHVzIGlmIG5vdCAwCisgICovCistc3RhdGljIGludAorLXJwY19yZG1hX2NxX2V2ZW50X2hh bmRsZXIoUkRNQVhQUlQgKnJkbWFfeHBydCkKKytpbnQKKytycGNfcmRtYV9jcV9ldmVudF9oYW5k bGVyKFJETUFYUFJUICpyZG1hX3hwcnQsIGludCBleHBlY3RlZF9wb2xsX2NvdW50KQorIHsKKyAJ c3RydWN0IGlidl93YyB3Y1tJQlZfUE9MTF9FVkVOVFNdOworIAlzdHJ1Y3QgaWJ2X2NxICpldl9j cTsKK0BAIC04NTgsNiArODU5LDkgQEAKKyAJdWludDMyX3QgbGVuOworIAlpbnQgcG9sbF9jb3Vu dCA9IElCVl9QT0xMX0NPVU5UOworIAorKwlpZiAoZXhwZWN0ZWRfcG9sbF9jb3VudCkKKysJCXBv bGxfY291bnQgPSBleHBlY3RlZF9wb2xsX2NvdW50OworKworIAlyYyA9IGlidl9nZXRfY3FfZXZl bnQocmRtYV94cHJ0LT5jb21wX2NoYW5uZWwsICZldl9jcSwgJmV2X2N0eCk7CisgCWlmIChyYykg eworIAkJcmMgPSBlcnJubzsKK0BAIC0xMDQ3LDYgKzEwNTEsNTYgQEAKKyB9CisgCisgLyoqCisr ICogcnBjX3JkbWFfcHJvY2Vzc190cmFuc3BvcnRfZXhwaXJlczogcHJvY2VzcyBleHBpcmVkIGNs aWVudCByZXF1ZXN0cyBmb3IgYSBzcGVjaWZpYyBSRE1BIHRyYW5zcG9ydAorKyAqIFNpbWlsYXIg dG8gdGhlIGNhbGxfZXhwaXJlcyBwcm9jZXNzaW5nIGluIHN2Y19ycXN0X2Vwb2xsX2xvb3AKKysg KgorKyAqIEBwYXJhbVtJTl0gcmRtYV94cHJ0IFJETUEgdHJhbnNwb3J0IHRvIHByb2Nlc3MKKysg KiBAcGFyYW1bSU5dIGV4cGlyZV9tcyBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzCisrICog QHBhcmFtW0lOT1VUXSB0aW1lb3V0X21zIHBvaW50ZXIgdG8gdGltZW91dCB2YWx1ZSB0byBiZSB1 cGRhdGVkCisrICovCisrc3RhdGljIHZvaWQKKytycGNfcmRtYV9wcm9jZXNzX3RyYW5zcG9ydF9l eHBpcmVzKFJETUFYUFJUICpyZG1hX3hwcnQsIGludCBleHBpcmVfbXMsIGludCAqdGltZW91dF9t cykKKyt7CisrCXN0cnVjdCBjbG50X3JlcSAqY2M7CisrCXN0cnVjdCBvcHJfcmJ0cmVlX25vZGUg Km5fbm9kZTsKKysJc3RydWN0IHJwY19kcGx4X3JlYyAqcmVjOworKwlpbnQgbWluX3RpbWVvdXQg PSAqdGltZW91dF9tczsKKysKKysJaWYgKCFyZG1hX3hwcnQpCisrCQlyZXR1cm47CisrCisrCXJl YyA9ICZyZG1hX3hwcnQtPnNtX2RyOworKworKwkvKiBQcm9jZXNzIHJkbWFfY2FsbF9leHBpcmVz IGZvciB0aGlzIHRyYW5zcG9ydCAtIHNpbWlsYXIgdG8gc3ZjX3Jxc3RfZXBvbGxfbG9vcCAqLwor KwlycGNfZHBseF9ybGkocmVjKTsKKysJd2hpbGUgKChuX25vZGUgPSBvcHJfcmJ0cmVlX2ZpcnN0 KCZyZWMtPnJkbWFfY2FsbF9leHBpcmVzKSkpIHsKKysJCWNjID0gb3ByX2NvbnRhaW5lcm9mKG5f bm9kZSwgc3RydWN0IGNsbnRfcmVxLCBjY19ycXN0KTsKKysKKysJCWlmIChjYy0+Y2NfZXhwaXJl X21zID4gZXhwaXJlX21zKSB7CisrCQkJaW50IHRyYW5zcG9ydF90aW1lb3V0ID0gY2MtPmNjX2V4 cGlyZV9tcyAtIGV4cGlyZV9tczsKKysJCQlpZiAodHJhbnNwb3J0X3RpbWVvdXQgPCBtaW5fdGlt ZW91dCkgeworKwkJCQltaW5fdGltZW91dCA9IHRyYW5zcG9ydF90aW1lb3V0OworKwkJCX0KKysJ CQlicmVhazsKKysJCX0KKysKKysJCS8qIG9yZGVyIGRlcGVuZGVudCAqLworKwkJYXRvbWljX2Ns ZWFyX3VpbnQxNl90X2JpdHMoJmNjLT5jY19mbGFncywKKysJCQkJCSAgIENMTlRfUkVRX0ZMQUdf RVhQSVJJTkcpOworKwkJb3ByX3JidHJlZV9yZW1vdmUoJnJlYy0+cmRtYV9jYWxsX2V4cGlyZXMs ICZjYy0+Y2NfcnFzdCk7CisrCQljYy0+Y2NfZXhwaXJlX21zID0gMDsJLyogYXRvbWljIGJhcnJp ZXIocykgKi8KKysKKysJCWF0b21pY19pbmNfdWludDMyX3QoJmNjLT5jY19yZWZjbnQpOworKwkJ Y2MtPmNjX3dwZS5mdW4gPSBzdmNfcnFzdF9leHBpcmVfdGFzazsKKysJCWNjLT5jY193cGUuYXJn ID0gTlVMTDsKKysJCXdvcmtfcG9vbF9zdWJtaXQoJnN2Y193b3JrX3Bvb2wsICZjYy0+Y2Nfd3Bl KTsKKysJfQorKwlycGNfZHBseF9ydWkocmVjKTsKKysKKysJKnRpbWVvdXRfbXMgPSBtaW5fdGlt ZW91dDsKKyt9CisrCisrLyoqCisgICogcnBjX3JkbWFfY3FfdGhyZWFkOiB0aHJlYWQgZnVuY3Rp b24gd2hpY2ggd2FpdHMgZm9yIG5ldyBjb21wbGV0aW9uIGV2ZW50cworICAqIGFuZCBnaXZlcyB0 aGVtIHRvIGhhbmRsZXIgKHRoZW4gYWNrIHRoZSBldmVudCkKKyAgKgorQEAgLTEwNTYsMjQgKzEx MTAsMzAgQEAKKyB7CisgCVJETUFYUFJUICpyZG1hX3hwcnQ7CisgCXN0cnVjdCBlcG9sbF9ldmVu dCBlcG9sbF9ldmVudHNbRVBPTExfRVZFTlRTXTsKKysJc3RydWN0IHRpbWVzcGVjIHRzOworKwlp bnQgdGltZW91dF9tczsKKysJaW50IGV4cGlyZV9tczsKKyAJaW50IGk7CisgCWludCBuOworIAlp bnQgcmM7CisgCWludCBlcG9sbGZkID0gKigoaW50ICopIGFyZyk7CisgCistCV9fd2FybngoVElS UENfREVCVUdfRkxBR19FVkVOVCwKKy0JCSIlcCwgU3RhcnRpbmcgcnBjX3JkbWFfY3FfdGhyZWFk IGVwb2xsZmQ6JWQiLAorLQkJcHRocmVhZF9zZWxmKCksIGVwb2xsZmQpOworLQorLQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENf UkRNQSwKKyAJCSIlcCwgU3RhcnRpbmcgcnBjX3JkbWFfY3FfdGhyZWFkIGVwb2xsZmQ6JWQiLAor IAkJcHRocmVhZF9zZWxmKCksIGVwb2xsZmQpOworIAorIAlyY3VfcmVnaXN0ZXJfdGhyZWFkKCk7 CisgCisgCXdoaWxlIChycGNfcmRtYV9zdGF0ZS5ydW5fY291bnQgPiAwKSB7CisrCQl0aW1lb3V0 X21zID0gRVBPTExfV0FJVF9NUzsKKysKKysJCS8qIFByb2Nlc3MgY2FsbF9leHBpcmVzIGZvciBS RE1BIHRyYW5zcG9ydHMgKi8KKysJCS8qIGNvYXJzZSBuc2VjLCBub3Qgc3lzdGVtIHRpbWUgKi8K KysJCSh2b2lkKWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDX0ZBU1QsICZ0cyk7CisrCQll eHBpcmVfbXMgPSB0aW1lc3BlY19tcygmdHMpOworKworIAkJbiA9IGVwb2xsX3dhaXQoZXBvbGxm ZCwKKy0JCQkJZXBvbGxfZXZlbnRzLCBFUE9MTF9FVkVOVFMsIEVQT0xMX1dBSVRfTVMpOworKwkJ CQllcG9sbF9ldmVudHMsIEVQT0xMX0VWRU5UUywgdGltZW91dF9tcyk7CisgCQlpZiAobiA9PSAw KQorIAkJCWNvbnRpbnVlOworIAorQEAgLTEwOTgsNiArMTE1OCw5IEBACisgCQkJCWNvbnRpbnVl OworIAkJCX0KKyAKKysJCQkvKiBQcm9jZXNzIGNhbGxfZXhwaXJlcyBmb3IgdGhpcyBSRE1BIHRy YW5zcG9ydCAqLworKwkJCXJwY19yZG1hX3Byb2Nlc3NfdHJhbnNwb3J0X2V4cGlyZXMocmRtYV94 cHJ0LCBleHBpcmVfbXMsICZ0aW1lb3V0X21zKTsKKysKKyAJCQlpZiAoZXBvbGxfZXZlbnRzW2ld LmV2ZW50cyA9PSBFUE9MTEVSUgorIAkJCSB8fCBlcG9sbF9ldmVudHNbaV0uZXZlbnRzID09IEVQ T0xMSFVQKSB7CisgCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKK0BAIC0xMTE2 LDcgKzExNzksNyBAQAorIAorIAkJCW11dGV4X2xvY2soJnJkbWFfeHBydC0+Y21fbG9jayk7Cisg CistCQkJcmMgPSBycGNfcmRtYV9jcV9ldmVudF9oYW5kbGVyKHJkbWFfeHBydCk7CisrCQkJcmMg PSBycGNfcmRtYV9jcV9ldmVudF9oYW5kbGVyKHJkbWFfeHBydCwgMCk7CisgCQkJaWYgKHJjKSB7 CisgCQkJCVNWQ19ERVNUUk9ZKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOworIAkJCX0KK0BAIC0x MTYxLDcgKzEyMjQsNyBAQAorIAorIAlzd2l0Y2ggKGV2ZW50LT5ldmVudCkgeworIAljYXNlIFJE TUFfQ01fRVZFTlRfQUREUl9SRVNPTFZFRDoKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19F VkVOVCwKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQkiJXMoKSAl cCBBRERSX1JFU09MVkVEIiwKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0KTsKKyAJCW11dGV4X2xv Y2soJnJkbWFfeHBydC0+Y21fbG9jayk7CitAQCAtMTE3MSw3ICsxMjM0LDcgQEAKKyAJCWJyZWFr OworIAorIAljYXNlIFJETUFfQ01fRVZFTlRfUk9VVEVfUkVTT0xWRUQ6CistCQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JE TUEsCisgCQkJIiVzKCkgJXAgUk9VVEVfUkVTT0xWRUQiLAorIAkJCV9fZnVuY19fLCByZG1hX3hw cnQpOworIAkJbXV0ZXhfbG9jaygmcmRtYV94cHJ0LT5jbV9sb2NrKTsKK0BAIC0xMTgxLDI2ICsx MjQ0LDI4IEBACisgCQlicmVhazsKKyAKKyAJY2FzZSBSRE1BX0NNX0VWRU5UX0VTVEFCTElTSEVE OgorLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX1JQQ19SRE1BLAorIAkJCSIlcygpICVwIEVTVEFCTElTSEVEIiwKKyAJCQlfX2Z1 bmNfXywgcmRtYV94cHJ0KTsKKyAKKyAJCXJkbWFfeHBydC0+c3RhdGUgPSBSRE1BWFNfQ09OTkVD VEVEOworIAorLQkJaW50IGNxX2ZkID0gcmRtYV94cHJ0LT5jb21wX2NoYW5uZWwtPmZkOworLQkJ aW50IGNxX3RocmVhZF9pbmRleCA9IGNxX2ZkICUgTlVNX0NRX0VQT0xMX1RIUkVBRFM7CistCQly YyA9IHJwY19yZG1hX2ZkX2FkZChyZG1hX3hwcnQsIGNxX2ZkLAorKwkJaWYgKHJkbWFfeHBydC0+ c2VydmVyKSB7CisrCQkJaW50IGNxX2ZkID0gcmRtYV94cHJ0LT5jb21wX2NoYW5uZWwtPmZkOwor KwkJCWludCBjcV90aHJlYWRfaW5kZXggPSBjcV9mZCAlIE5VTV9DUV9FUE9MTF9USFJFQURTOwor KwkJCXJjID0gcnBjX3JkbWFfZmRfYWRkKHJkbWFfeHBydCwgY3FfZmQsCisgCQkJCSAgICAgcnBj X3JkbWFfc3RhdGUuY3FfZXBvbGxmZFtjcV90aHJlYWRfaW5kZXhdKTsKKy0JCWlmIChyYykgewor LQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCQkJIiVzOiV1IEVSUk9SIChy ZXR1cm4pIiwKKy0JCQkJX19mdW5jX18sIF9fTElORV9fKTsKKysJCQlpZiAocmMpIHsKKysJCQkJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorKwkJCQkJIiVzOiV1IEVSUk9SIChyZXR1 cm4pIiwKKysJCQkJCV9fZnVuY19fLCBfX0xJTkVfXyk7CisrCQkJfQorKwkJCXJwY19yZG1hX3N0 YXRzX2FkZChyZG1hX3hwcnQpOworIAkJfQorLQkJcnBjX3JkbWFfc3RhdHNfYWRkKHJkbWFfeHBy dCk7CisgCQlicmVhazsKKyAKKyAJY2FzZSBSRE1BX0NNX0VWRU5UX0NPTk5FQ1RfUkVRVUVTVDoK Ky0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19SUENfUkRNQSwKKyAJCQkiJXMoKSAlcCBDT05ORUNUX1JFUVVFU1QiLAorIAkJCV9f ZnVuY19fLCByZG1hX3hwcnQpOworIAkJcnBjX3JkbWFfc3RhdGUuY19yLmlkX3F1ZXVlWzBdID0g Y21faWQ7CitAQCAtMTIyMyw3ICsxMjg4LDcgQEAKKyAJCWJyZWFrOworIAorIAljYXNlIFJETUFf Q01fRVZFTlRfRElTQ09OTkVDVEVEOgorLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5U LAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJCSIlcygpICVwWyV1 XSBESVNDT05ORUNUIEVWRU5ULi4uIiwKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hw cnQtPnN0YXRlKTsKKyAKK0BAIC0xMjMyLDE0ICsxMjk3LDE0IEBACisgCQlicmVhazsKKyAKKyAJ Y2FzZSBSRE1BX0NNX0VWRU5UX0RFVklDRV9SRU1PVkFMOgorLQkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VWRU5ULAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJ CSIlcygpICVwWyV1XSBjbWEgZGV0ZWN0ZWQgZGV2aWNlIHJlbW92YWwhISEhIiwKKyAJCQlfX2Z1 bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlKTsKKyAJCXJjID0gRU5PREVWOworIAkJ YnJlYWs7CisgCisgCWNhc2UgUkRNQV9DTV9FVkVOVF9USU1FV0FJVF9FWElUOgorLQkJX193YXJu eChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQ Q19SRE1BLAorIAkJICAgICIlcygpICVwWyV1XSBSRE1BX0NNX0VWRU5UX1RJTUVXQUlUX0VYSVQi LAorIAkJICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUpOworIAorQEAg LTEzNTIsNiArMTQxNyw0MSBAQAorIAlwdGhyZWFkX2V4aXQoTlVMTCk7CisgfQorIAorKy8qIEhh bmRsZSBSRE1BIGNvbm5lY3Rpb24gbWFuYWdlciBldmVudHMgc3luY2hyb25vdXNseSAqLworK2lu dAorK3JwY19yZG1hX2NtX2V2ZW50X2hhbmRsZXJfaW5saW5lKFJETUFYUFJUICpyZG1hX3hwcnQs IGludCBleHBlY3RlZF9ldmVudCkKKyt7CisrCWludCByYyA9IDA7CisrCXN0cnVjdCByZG1hX2Nt X2V2ZW50ICpldmVudCA9IE5VTEw7CisrCisrCXJjID0gcmRtYV9nZXRfY21fZXZlbnQocmRtYV94 cHJ0LT5ldmVudF9jaGFubmVsLCAmZXZlbnQpOworKwlpZiAocmMpIHsKKysJCXJjID0gZXJybm87 CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogcmRtYSBnZXQgZXZlbnQg ZmFpbGVkIHhwcnQgJXAgIgorKwkJCSJlcnIgJWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LCByYyk7 CisrCQlnb3RvIG91dDsKKysJfQorKworKwlpZiAoZXZlbnQtPmV2ZW50ICE9IGV4cGVjdGVkX2V2 ZW50KSB7CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogdW5leHBlY3Rl ZCBldmVudCAlZCwgZXhwZWN0ZWQgJWQgIgorKwkJCSJ4cHJ0ICVzIiwgX19mdW5jX18sIGV2ZW50 LT5ldmVudCwgZXhwZWN0ZWRfZXZlbnQpOworKwl9CisrCisrCVNWQ19SRUYoJnJkbWFfeHBydC0+ c21fZHIueHBydCwgU1ZDX1JFRl9GTEFHX05PTkUpOworKworKwlyYyA9IHJwY19yZG1hX2NtX2V2 ZW50X2hhbmRsZXIocmRtYV94cHJ0LCBldmVudCk7CisrCisrCXJkbWFfYWNrX2NtX2V2ZW50KGV2 ZW50KTsKKysKKysJU1ZDX1JFTEVBU0UoJnJkbWFfeHBydC0+c21fZHIueHBydCwgU1ZDX1JFRl9G TEFHX05PTkUpOworKworK291dDoKKysJaWYgKHJjKQorKwkJU1ZDX0RFU1RST1koJnJkbWFfeHBy dC0+c21fZHIueHBydCk7CisrCisrCXJldHVybiByYzsKKyt9CisrCisgLyoqCisgICogcnBjX3Jk bWFfZGVzdHJveV9zdHVmZjogZGVzdHJveXMgYWxsIHFwLXJlbGF0ZWQgc3R1ZmYgZm9yIHVzCisg ICoKK0BAIC0xMzczLDcgKzE0NzMsOCBAQAorIAl9CisgCisgCWlmIChyZG1hX3hwcnQtPmNvbXBf Y2hhbm5lbCkgeworLQkJaWYgKHJkbWFfeHBydC0+c3RhdGUgPT0gUkRNQVhTX0NPTk5FQ1RFRCkg eworKwkJaWYgKHJkbWFfeHBydC0+c2VydmVyICYmCisrCQkgICAgKHJkbWFfeHBydC0+c3RhdGUg PT0gUkRNQVhTX0NPTk5FQ1RFRCkpIHsKKyAJCQlpbnQgY3FfZmQgPSAoKFJETUFYUFJUICopcmRt YV94cHJ0KS0+Y29tcF9jaGFubmVsLT5mZDsKKyAJCQlpbnQgY3FfdGhyZWFkX2luZGV4ID0gY3Ff ZmQgJSBOVU1fQ1FfRVBPTExfVEhSRUFEUzsKKyAJCQlycGNfcmRtYV9mZF9kZWwoY3FfZmQsCitA QCAtMTM5Niw3ICsxNDk3LDcgQEAKKyBzdGF0aWMgdm9pZAorIHJkbWFfZGVzdHJveV9jYmNzKFJE TUFYUFJUICpyZG1hX3hwcnQpIHsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5U LAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCSAgICAiJXMoKSBEZXN0 cm95aW5nIHhwcnQgJXAgY2JjcyBxY291bnQgJXUgcXNpemUgJXUgdG90YWwgY2Jjc19tZW1vcnkg JXUiLAorIAkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5jYnFoLnFjb3VudCwg cmRtYV94cHJ0LT5jYnFoLnFzaXplLAorIAkgICAgcmRtYV94cHJ0LT5jYnFoLnFjb3VudCAqIHJk bWFfeHBydC0+Y2JxaC5xc2l6ZSk7CitAQCAtMTQzNiw3ICsxNTM3LDcgQEAKKyAKKyBzdGF0aWMg dm9pZAorIHJkbWFfZGVzdHJveV9pb19idWZzKFJETUFYUFJUICpyZG1hX3hwcnQpIHsKKy0JX193 YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsCisgCSAgICAiJXMoKSBEZXN0cm95aW5nIHhwcnQgJXAgaW9fYnVmcyIsCisgCSAg ICBfX2Z1bmNfXywgcmRtYV94cHJ0KTsKKyAKK0BAIC0xNDU2LDEzICsxNTU3LDEzIEBACisgCQkJ c3RydWN0IHJwY19pb19idWZzICppb19idWYgPQorIAkJCQlvcHJfY29udGFpbmVyb2YoaGF2ZSwg c3RydWN0IHJwY19pb19idWZzLCBxKTsKKyAKKy0JCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf RVZFTlQsICIlcyBEZXN0cm95IGlvX2J1ZiAlcCBpb3FoICVwIGNvdW50ICVkIiwKKysJCQlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsICIlcyBEZXN0cm95IGlvX2J1ZiAlcCBpb3Fo ICVwIGNvdW50ICVkIiwKKyAJCQkgICAgX19mdW5jX18sIGlvX2J1ZiwgaW9xaCwgaW9xaC0+cWNv dW50KTsKKyAKKyAJCQlpZiAoKGlvX2J1Zi0+dHlwZSA9PSBJT19CVUZfQUxMKSB8fAorIAkJCSAg ICAoaW9fYnVmLT50eXBlID09IElPX0lOQlVGX0hEUikpIHsKKyAJCQkJc3RydWN0IHBvb2xxX2hl YWQgKmlvcWhfYnVmcyA9ICZyZG1hX3hwcnQtPmluYnVmc19oZHIudXZxaDsKKy0JCQkJX193YXJu eChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsCisgCQkJCSAgICAiJXMoKSBEZXN0cm95aW5nICVwIGluYnVmc19oZHIgaGVhZCAl cCBjb3VudCAlZCBpb19idWYgJXAiLAorIAkJCQkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgaW9x aF9idWZzLCBpb3FoX2J1ZnMtPnFjb3VudCwgaW9fYnVmKTsKKyAJCQkJeGRyX3JkbWFfYnVmX3Bv b2xfZGVzdHJveShpb3FoX2J1ZnMsIGlvX2J1Zik7CitAQCAtMTQ3MSw3ICsxNTcyLDcgQEAKKyAJ CQlpZiAoKGlvX2J1Zi0+dHlwZSA9PSBJT19CVUZfQUxMKSB8fAorIAkJCSAgICAoaW9fYnVmLT50 eXBlID09IElPX09VVEJVRl9IRFIpKSB7CisgCQkJCXN0cnVjdCBwb29scV9oZWFkICppb3FoX2J1 ZnMgPSAmcmRtYV94cHJ0LT5vdXRidWZzX2hkci51dnFoOworLQkJCQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVZFTlQsCisrCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwK KyAJCQkJICAgICIlcygpIERlc3Ryb3lpbmcgJXAgb3V0YnVmc19oZHIgaGVhZCAlcCBjb3VudCAl ZCBpb19idWYgJXAiLAorIAkJCQkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgaW9xaF9idWZzLCBp b3FoX2J1ZnMtPnFjb3VudCwgaW9fYnVmKTsKKyAJCQkJeGRyX3JkbWFfYnVmX3Bvb2xfZGVzdHJv eShpb3FoX2J1ZnMsIGlvX2J1Zik7CitAQCAtMTQ4MCw3ICsxNTgxLDcgQEAKKyAJCQlpZiAoKGlv X2J1Zi0+dHlwZSA9PSBJT19CVUZfQUxMKSB8fAorIAkJCSAgICAoaW9fYnVmLT50eXBlID09IElP X0lOQlVGX0RBVEEpKSB7CisgCQkJCXN0cnVjdCBwb29scV9oZWFkICppb3FoX2J1ZnMgPSAmcmRt YV94cHJ0LT5pbmJ1ZnNfZGF0YS51dnFoOworLQkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf RVZFTlQsCisrCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQkJICAg ICIlcygpIERlc3Ryb3lpbmcgJXAgaW5idWZzX2RhdGEgaGVhZCAlcCBjb3VudCAlZCBpb19idWYg JXAiLAorIAkJCQkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgaW9xaF9idWZzLCBpb3FoX2J1ZnMt PnFjb3VudCwgaW9fYnVmKTsKKyAJCQkJeGRyX3JkbWFfYnVmX3Bvb2xfZGVzdHJveShpb3FoX2J1 ZnMsIGlvX2J1Zik7CitAQCAtMTQ4OSw3ICsxNTkwLDcgQEAKKyAJCQlpZiAoKGlvX2J1Zi0+dHlw ZSA9PSBJT19CVUZfQUxMKSB8fAorIAkJCSAgICAoaW9fYnVmLT50eXBlID09IElPX09VVEJVRl9E QVRBKSkgeworIAkJCQlzdHJ1Y3QgcG9vbHFfaGVhZCAqaW9xaF9idWZzID0gJnJkbWFfeHBydC0+ b3V0YnVmc19kYXRhLnV2cWg7CistCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwK KysJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJCQkgICAgIiVzKCkg RGVzdHJveWluZyAlcCBvdXRidWZzX2RhdGEgaGVhZCAlcCBjb3VudCAlZCBpb19idWYgJXAiLAor IAkJCQkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgaW9xaF9idWZzLCBpb3FoX2J1ZnMtPnFjb3Vu dCwgaW9fYnVmKTsKKyAJCQkJeGRyX3JkbWFfYnVmX3Bvb2xfZGVzdHJveShpb3FoX2J1ZnMsIGlv X2J1Zik7CitAQCAtMTU5MCw3ICsxNjkxLDcgQEAKKyAgKgorICAqIEByZXR1cm4gcmRtYV94cHJ0 IG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVyZQorICAqLworLXN0YXRpYyBSRE1BWFBSVCAqCisr UkRNQVhQUlQgKgorIHJwY19yZG1hX2FsbG9jYXRlKGNvbnN0IHN0cnVjdCBycGNfcmRtYV9hdHRy ICp4YSkKKyB7CisgCVJETUFYUFJUICpyZG1hX3hwcnQ7CitAQCAtMTczOSw5ICsxODQwLDEzIEBA CisgCQkJX19mdW5jX18pOworIAkJZ290byBmYWlsdXJlOworIAl9CistCV9fd2FybngoVElSUENf REVCVUdfRkxBR19SUENfUkRNQSwKKy0JCSIlcygpIE5GUy9SRE1BIGVuZ2luZSBib3VuZCByZWN2 c3ogJWxsdSBzZW5kc3ogJWxsdSByZG1hX3hwcnQgJXAiLAorLQkJX19mdW5jX18sIHJkbWFfeHBy dC0+c21fZHIucmVjdnN6LCByZG1hX3hwcnQtPnNtX2RyLnNlbmRzeiwgcmRtYV94cHJ0KTsKKysK KysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5UIHwgVElSUENfREVCVUdfRkxBR19SUENf UkRNQSwKKysJCSIlcygpIFJETUE6IE5GUy9SRE1BIHRyYW5zcG9ydCByZWFkeSBvbiBwb3J0ICVz IHJlY3Zzej0lbGx1IHNlbmRzej0lbGx1IHhwcnQ9JXAiLAorKwkJX19mdW5jX18sIHhhLT5wb3J0 LAorKwkJKHVuc2lnbmVkIGxvbmcgbG9uZylyZG1hX3hwcnQtPnNtX2RyLnJlY3ZzeiwKKysJCSh1 bnNpZ25lZCBsb25nIGxvbmcpcmRtYV94cHJ0LT5zbV9kci5zZW5kc3osCisrCQlyZG1hX3hwcnQp OworIAorIAlyZXR1cm4gKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOworIAorQEAgLTE3OTAsNyAr MTg5NSw3IEBACisgCSAgICBJQlZfUVBfUEFUSF9NVFUgfCBJQlZfUVBfREVTVF9RUE4gfCBJQlZf UVBfUlFfUFNOIHwKKyAJICAgIElCVl9RUF9NQVhfREVTVF9SRF9BVE9NSUMgfCBJQlZfUVBfTUlO X1JOUl9USU1FUiwgJnFwX2F0dHIpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZF TlQsCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCSIlcygpICVwWyV1 XSBpYnZfcXVlcnlfcXAgcGF0aCBtdHUgJWQgc3RhdGUgJWQgcXAgdHlwZSAlZCIsCisgCQlfX2Z1 bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBhdHRyLnFwX3N0YXRlLAorIAkJYXR0 ci5wYXRoX210dSwgcXBfYXR0ci5xcF90eXBlKTsKK0BAIC0xNzk5LDYgKzE5MDQsNDggQEAKKyAJ cmV0dXJuIDA7CisgfQorIAorKy8qIEluaXRpYWxpemUgUkRNQSBjbGllbnQgY29tcGxldGlvbiBj aGFubmVsIGFuZCBxdWV1ZSAqLworK2ludAorK3JwY19yZG1hX3NldHVwX3N0dWZmX2NsaWVudChS RE1BWFBSVCAqcmRtYV94cHJ0KQorK3sKKysJaW50IHJjID0gMDsKKysKKysJcmRtYV94cHJ0LT5j b21wX2NoYW5uZWwgPSBpYnZfY3JlYXRlX2NvbXBfY2hhbm5lbChyZG1hX3hwcnQtPmNtX2lkLT52 ZXJicyk7CisrCWlmICghcmRtYV94cHJ0LT5jb21wX2NoYW5uZWwpIHsKKysJCXJjID0gZXJybm87 CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogY3JlYXRlIGNvbXAgY2hh bm5lbCBmYWlsZWQgeHBydCAlcCAiCisrCQkJImVyciAlZCIsIF9fZnVuY19fLCByZG1hX3hwcnQs IHJjKTsKKysJCWdvdG8gb3V0OworKwl9CisrCisrCXJkbWFfeHBydC0+Y3EgPSBpYnZfY3JlYXRl X2NxKHJkbWFfeHBydC0+Y21faWQtPnZlcmJzLCBNQVhfQ1FfU0laRShyZG1hX3hwcnQtPnhhKSwK KysJICAgIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5jb21wX2NoYW5uZWwsIDApOworKwlpZiAoIXJk bWFfeHBydC0+Y3EpIHsKKysJCXJjID0gZXJybm87CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVJST1IsICIlczogY3JlYXRlIGNxIGZhaWxlZCB4cHJ0ICVwIGVyciAlZCIsCisrCQkJX19m dW5jX18sIHJkbWFfeHBydCwgcmMpOworKwkJZ290byBvdXQ7CisrCX0KKysKKysJcmMgPSBpYnZf cmVxX25vdGlmeV9jcShyZG1hX3hwcnQtPmNxLCAwKTsKKysJaWYgKHJjKSB7CisrCQlyYyA9IGVy cm5vOworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IG5vdGlmeSBjcSBm YWlsZWQgeHBydCAlcCBlcnIgJWQiLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJjKTsKKysJ CWdvdG8gb3V0OworKwl9CisrCisrCXJjID0gcnBjX3JkbWFfY3JlYXRlX3FwKHJkbWFfeHBydCwg cmRtYV94cHJ0LT5jbV9pZCk7CisrCWlmIChyYykgeworKwkJcmMgPSBlcnJubzsKKysJCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiBjcmVhdGUgcXAgZmFpbGVkIHhwcnQgJXAg ZXJyICVkIiwKKysJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByYyk7CisrCX0KKysKKytvdXQ6Cisr CXJldHVybiByYzsKKyt9CisrCisgLyoqCisgICogcnBjX3JkbWFfc2V0dXBfc3R1ZmY6IHNldHVw IHBkLCBxcCBhbicgc3R1ZmYKKyAgKgorQEAgLTE5MjEsMTAgKzIwNjgsMTQgQEAKKyAvKioKKyAg KiBycGNfcmRtYV9zZXR1cF9jYnEKKyAgKi8KKy1zdGF0aWMgaW50CisraW50CisgcnBjX3JkbWFf c2V0dXBfY2JxKFJETUFYUFJUICpyZG1hX3hwcnQsCisgICAgIHN0cnVjdCBwb29scV9oZWFkICpp b3FoLCB1X2ludCBkZXB0aCwgdV9pbnQgc2dlKQorIHsKKysJX193YXJueChUSVJQQ19ERUJVR19G TEFHX1JQQ19SRE1BLAorKwkJIiVzOiBzZXR1cCBjYnEgeHBydCAlcCBkZXB0aCAlZCBzZ2UgJWQi LAorKwkJX19mdW5jX18sIHJkbWFfeHBydCwgZGVwdGgsIHNnZSk7CisrCisgCWlmIChpb3FoLT5x c2l6ZSkgeworIAkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorIAkJCSIlcygpIGNv bnRleHRzIGFscmVhZHkgYWxsb2NhdGVkIiwKK0BAIC0xOTQ4LDcgKzIwOTksNyBAQAorIAkJcnBj X3JkbWFfYWxsb2NhdGVfY2JjX2xvY2tlZChpb3FoKTsKKyAJfQorIAorLQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfRVZFTlQsICIlcyBUb3RhbCBjYmNzX21lbW9yeSAldSAiCisrCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19SUENfUkRNQSwgIiVzIFRvdGFsIGNiY3NfbWVtb3J5ICV1ICIKKyAJ ICAgICJxY291bnQgJXUgcXNpemUgJXUgeHBydCAlcCIsCisgCSAgICBfX2Z1bmNfXywgaW9xaC0+ cWNvdW50ICogaW9xaC0+cXNpemUsCisgCSAgICBpb3FoLT5xY291bnQsIGlvcWgtPnFzaXplLCBy ZG1hX3hwcnQpOworQEAgLTIwMzUsNiArMjE4NiwxNyBAQAorIAl9CisgCisgCXJkbWFfeHBydC0+ c3RhdGUgPSBSRE1BWFNfTElTVEVOSU5HOworKworKwkvKiBMb2cgYXQgRVZFTlQgbGV2ZWwgdGhh dCBSRE1BIGxpc3RlbmVyIGlzIHVwICovCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVO VCwKKysJCSIlcygpIFJETUE6IE5GUy9SRE1BIHNlcnZlciBpcyBub3cgbGlzdGVuaW5nIG9uIG5v ZGUgJXMgcG9ydCAlcyAoYmFja2xvZz0lZCBzcV9kZXB0aD0lZCBycV9kZXB0aD0lZCkiLAorKwkJ X19mdW5jX18sCisrCQlyZG1hX3hwcnQtPnhhLT5ub2RlID8gcmRtYV94cHJ0LT54YS0+bm9kZSA6 ICIqIiwKKysJCXJkbWFfeHBydC0+eGEtPnBvcnQsCisrCQlyZG1hX3hwcnQtPnhhLT5iYWNrbG9n LAorKwkJcmRtYV94cHJ0LT54YS0+c3FfZGVwdGgsCisrCQlyZG1hX3hwcnQtPnhhLT5ycV9kZXB0 aCk7CisrCisgCWF0b21pY19pbmNfaW50MzJfdCgmcnBjX3JkbWFfc3RhdGUucnVuX2NvdW50KTsK KyAKKyAJcmMgPSBycGNfcmRtYV90aHJlYWRfY3JlYXRlX2Vwb2xsKCZycGNfcmRtYV9zdGF0ZS5j bV90aHJlYWRfaWQsCitAQCAtMjIxOCw3ICsyMzgwLDcgQEAKKyB7CisgCXN0cnVjdCByZG1hX2Nt X2lkICpjbV9pZDsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkiJXMoKSAlcFsldV0gbGlzdGVuaW5n IChhZnRlciBiaW5kX3NlcnZlcikiLAorIAkJX19mdW5jX18sIGxfcmRtYV94cHJ0LCBsX3JkbWFf eHBydC0+c3RhdGUpOworIAorQEAgLTIyODEsMjUgKzI0NDMsMjkgQEAKKyAJc3RydWN0IHJkbWFf YWRkcmluZm8gKnJlczsKKyAJaW50IHJjOworIAorLQltdXRleF9sb2NrKCZyZG1hX3hwcnQtPmNt X2xvY2spOworLQorIAlkbyB7CisgCQltZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsK KyAJCWhpbnRzLmFpX3BvcnRfc3BhY2UgPSByZG1hX3hwcnQtPmNvbm5fdHlwZTsKKyAKKy0JCXJj ID0gcmRtYV9nZXRhZGRyaW5mbyhyZG1hX3hwcnQtPnhhLT5ub2RlLCByZG1hX3hwcnQtPnhhLT5w b3J0LAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLCAiJXM6IHJlc29sdmUg JXMgcG9ydCAlZCIsIF9fZnVuY19fLAorKwkJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwg cmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3BvcnQpOworKwkJY2hhciBwb3J0X3N0cltTT0NLX05B TUVfTUFYXTsKKysJCXNucHJpbnRmKHBvcnRfc3RyLCBTT0NLX05BTUVfTUFYLCAiJWQiLCByZG1h X3hwcnQtPnNtX2RyLnhwcnQueHBfcG9ydCk7CisrCisrCQlyYyA9IHJkbWFfZ2V0YWRkcmluZm8o cmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lwLCBwb3J0X3N0ciwKKyAJCQkJCSZoaW50cywgJnJl cyk7CisgCQlpZiAocmMpIHsKKyAJCQlyYyA9IGVycm5vOworIAkJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19FUlJPUiwKKy0JCQkJIiVzKCkgJXBbJXVdIHJkbWFfZ2V0YWRkcmluZm86ICVzICgl ZCkiLAorLQkJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBzdHJlcnJv cihyYyksIHJjKTsKKysJCQkJIiVzKCkgJXBbJXVdIHJkbWFfZ2V0YWRkcmluZm86ICVzICglZCkg aXAgJXMgcG9ydCAlZCIsCisrCQkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3Rh dGUsIHN0cmVycm9yKHJjKSwgcmMsCisrCQkJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwg cmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3BvcnQpOworIAkJCWJyZWFrOworIAkJfQorIAorIAkJ cmMgPSByZG1hX3Jlc29sdmVfYWRkcihyZG1hX3hwcnQtPmNtX2lkLCByZXMtPmFpX3NyY19hZGRy LAorIAkJCQkJcmVzLT5haV9kc3RfYWRkciwKKy0JCQkJCV9fc3ZjX3BhcmFtcy0+aWRsZV90aW1l b3V0KTsKKysJCQkJCTUwMDApOworIAkJaWYgKHJjKSB7CisgCQkJcmMgPSBlcnJubzsKKyAJCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCitAQCAtMjMwOSwxNCArMjQ3NSw4IEBACisg CQl9CisgCQlyZG1hX2ZyZWVhZGRyaW5mbyhyZXMpOworIAorLQkJd2hpbGUgKHJkbWFfeHBydC0+ c3RhdGUgPT0gUkRNQVhTX0lOSVRJQUwpIHsKKy0JCQljb25kX3dhaXQoJnJkbWFfeHBydC0+Y21f Y29uZCwgJnJkbWFfeHBydC0+Y21fbG9jayk7CistCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFH X1JQQ19SRE1BLAorLQkJCQkiJXMoKSAlcFsldV0gYWZ0ZXIgY29uZF93YWl0IiwKKy0JCQkJX19m dW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSk7CistCQl9CistCistCQlpZiAocmRt YV94cHJ0LT5zdGF0ZSAhPSBSRE1BWFNfQUREUl9SRVNPTFZFRCkgeworKwkJcmMgPSBycGNfcmRt YV9jbV9ldmVudF9oYW5kbGVyX2lubGluZShyZG1hX3hwcnQsIFJETUFfQ01fRVZFTlRfQUREUl9S RVNPTFZFRCk7CisrCQlpZiAocmMpIHsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJS T1IsCisgCQkJCSIlcygpIENvdWxkIG5vdCByZXNvbHZlIGFkZHIiLAorIAkJCQlfX2Z1bmNfXyk7 CitAQCAtMjMyNSw3ICsyNDg1LDcgQEAKKyAJCX0KKyAKKyAJCXJjID0gcmRtYV9yZXNvbHZlX3Jv dXRlKHJkbWFfeHBydC0+Y21faWQsCistCQkJCQlfX3N2Y19wYXJhbXMtPmlkbGVfdGltZW91dCk7 CisrCQkJCQk1MDAwKTsKKyAJCWlmIChyYykgeworIAkJCXJkbWFfeHBydC0+c3RhdGUgPSBSRE1B WFNfRVJST1I7CisgCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorQEAgLTIzMzQs MTQgKzI0OTQsOCBAQAorIAkJCWJyZWFrOworIAkJfQorIAorLQkJd2hpbGUgKHJkbWFfeHBydC0+ c3RhdGUgPT0gUkRNQVhTX0FERFJfUkVTT0xWRUQpIHsKKy0JCQljb25kX3dhaXQoJnJkbWFfeHBy dC0+Y21fY29uZCwgJnJkbWFfeHBydC0+Y21fbG9jayk7CistCQkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX1JQQ19SRE1BLAorLQkJCQkiJXMoKSAlcFsldV0gYWZ0ZXIgY29uZF93YWl0IiwKKy0J CQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSk7CistCQl9CistCistCQlp ZiAocmRtYV94cHJ0LT5zdGF0ZSAhPSBSRE1BWFNfUk9VVEVfUkVTT0xWRUQpIHsKKysJCXJjID0g cnBjX3JkbWFfY21fZXZlbnRfaGFuZGxlcl9pbmxpbmUocmRtYV94cHJ0LCBSRE1BX0NNX0VWRU5U X1JPVVRFX1JFU09MVkVEKTsKKysJCWlmIChyYykgeworIAkJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FUlJPUiwKKyAJCQkJIiVzKCkgQ291bGQgbm90IHJlc29sdmUgcm91dGUiLAorIAkJCQlf X2Z1bmNfXyk7CitAQCAtMjM1MCw4ICsyNTA0LDYgQEAKKyAJCX0KKyAJfSB3aGlsZSAoMCk7Cisg CistCW11dGV4X3VubG9jaygmcmRtYV94cHJ0LT5jbV9sb2NrKTsKKy0KKyAJcmV0dXJuIHJjOwor IH0KKyAKK0BAIC0yMzk4LDYgKzI1NTAsMzkgQEAKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCBy ZG1hX3hwcnQtPnN0YXRlLCBzdHJlcnJvcihyYyksIHJjKTsKKyAJfQorIAorKwlyYyA9IHJwY19y ZG1hX2NtX2V2ZW50X2hhbmRsZXJfaW5saW5lKHJkbWFfeHBydCwgUkRNQV9DTV9FVkVOVF9FU1RB QkxJU0hFRCk7CisrCWlmIChyYykgeworKwkJcmMgPSBlcnJubzsKKysJCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FUlJPUiwgIiVzOiBjb25lY3QgZmFpbGVkIHhwcnQgJXAgZXJyICVkIiwKKysJ CQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByYyk7CisrCX0KKysKKysJcmV0dXJuIHJjOworK30KKysK KysvKiBQcmVwYXJlIFJETUEgY29ubmVjdGlvbiBieSBjcmVhdGluZyBldmVudCBjaGFubmVsIGFu ZCBDTSBJRCAqLworK2ludAorK3JwY19yZG1hX2Nvbm5lY3RfcHJlcGFyZShSRE1BWFBSVCAqcmRt YV94cHJ0KQorK3sKKysJaW50IHJjID0gMDsKKysKKysJcmRtYV94cHJ0LT5ldmVudF9jaGFubmVs ID0gcmRtYV9jcmVhdGVfZXZlbnRfY2hhbm5lbCgpOworKwlpZiAoIXJkbWFfeHBydC0+ZXZlbnRf Y2hhbm5lbCkgeworKwkJcmMgPSBlcnJubzsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19F UlJPUiwgIiVzOiBjcmVhdGUgZXZlbnQgY2hhbm5lbCBmYWlsZWQgIgorKwkJCSJpcCAlcyBlcnIg JWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lwLCByYyk7CisrCQlnb3Rv IG91dDsKKysJfQorKworKwlyYyA9IHJkbWFfY3JlYXRlX2lkKHJkbWFfeHBydC0+ZXZlbnRfY2hh bm5lbCwgJnJkbWFfeHBydC0+Y21faWQsIHJkbWFfeHBydCwKKysJICAgIHJkbWFfeHBydC0+Y29u bl90eXBlKTsKKysJaWYgKHJjKSB7CisrCQlyYyA9IGVycm5vOworKwkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VSUk9SLCAiJXM6IGNyZWF0ZSBpZCBmYWlsZWQgaXAgJXMgZXJyICVkIiwKKysJ CQlfX2Z1bmNfXywgcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lwLCByYyk7CisrCQlnb3RvIG91 dDsKKysJfQorK291dDoKKyAJcmV0dXJuIHJjOworIH0KKyAKK0BAIC0yNDI3LDI5ICsyNjEyLDIw IEBACisgCQlyZXR1cm4gRUlOVkFMOworIAl9CisgCistCWlmIChyZG1hX3hwcnQtPnNlcnZlcikg eworKwlpZiAocmRtYV94cHJ0LT5zZXJ2ZXIgIT0gUkRNQVhfQ0xJRU5UKSB7CisgCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisgCQkJIiVzKCkgb25seSBjYWxsZWQgZnJvbSBjbGll bnQgc2lkZSEiLAorIAkJCV9fZnVuY19fKTsKKyAJCXJldHVybiBFSU5WQUw7CisgCX0KKyAKKy0J cmMgPSBycGNfcmRtYV90aHJlYWRfY3JlYXRlX2Vwb2xsKCZycGNfcmRtYV9zdGF0ZS5jbV90aHJl YWRfaWQsCistCQlycGNfcmRtYV9jbV90aHJlYWQsIHJkbWFfeHBydCwgJnJwY19yZG1hX3N0YXRl LmNtX2Vwb2xsZmQpOworLQlpZiAocmMpIHsKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19F UlJPUiwKKy0JCQkiJXMoKSAlcFsldV0gcnBjX3JkbWFfdGhyZWFkX2NyZWF0ZV9lcG9sbCBmYWls ZWQ6ICVzICglZCkiLAorLQkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUs IHN0cmVycm9yKHJjKSwgcmMpOworLQkJcmV0dXJuIHJjOworLQl9CistCisgCXJjID0gcnBjX3Jk bWFfYmluZF9jbGllbnQocmRtYV94cHJ0KTsKKyAJaWYgKHJjKQorIAkJcmV0dXJuIHJjOworIAly YyA9IHJwY19yZG1hX3BkX2dldChyZG1hX3hwcnQpOworIAlpZiAocmMpCisgCQlyZXR1cm4gcmM7 CistCXJjID0gcnBjX3JkbWFfc2V0dXBfc3R1ZmYocmRtYV94cHJ0KTsKKysJcmMgPSBycGNfcmRt YV9zZXR1cF9zdHVmZl9jbGllbnQocmRtYV94cHJ0KTsKKyAJaWYgKHJjKSB7CisgCQlycGNfcmRt YV9kZXN0cm95X3N0dWZmKHJkbWFfeHBydCk7CisgCQlyZXR1cm4gcmM7CitAQCAtMjQ1NywxMSAr MjYzMyw3IEBACisgCXJjID0gcnBjX3JkbWFfc2V0dXBfY2JxKHJkbWFfeHBydCwgJnJkbWFfeHBy dC0+Y2JxaCwKKyAJCQkJcmRtYV94cHJ0LT54YS0+cnFfZGVwdGggKyByZG1hX3hwcnQtPnhhLT5z cV9kZXB0aCwKKyAJCQkJcmRtYV94cHJ0LT54YS0+Y3JlZGl0cyk7CistCWlmIChyYykKKy0JCXJl dHVybiByYzsKKy0KKy0JcmV0dXJuIHJwY19yZG1hX2ZkX2FkZChyZG1hX3hwcnQsIHJkbWFfeHBy dC0+ZXZlbnRfY2hhbm5lbC0+ZmQsCistCQkJCXJwY19yZG1hX3N0YXRlLmNtX2Vwb2xsZmQpOwor KwlyZXR1cm4gcmM7CisgfQorIAorIGV4dGVybiBtdXRleF90IG9wc19sb2NrOworZGlmZiAtdXIg bnRpcnBjLTcuMi9zcmMvcnBjX3JkbWEuaCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3 MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvcnBjX3JkbWEuaAorLS0tIG50aXJwYy03LjIvc3JjL3JwY19y ZG1hLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3 NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvcnBjX3JkbWEuaAkyMDI2 LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTg3LDYgKzg3LDEwIEBACisgI2Rl ZmluZSBDQkNfRkxBR19OT05FCQkweDAwMDAKKyAjZGVmaW5lIENCQ19GTEFHX1JFTEVBU0UJMHgw MDAxCisgI2RlZmluZSBDQkNfRkxBR19SRUxFQVNJTkcJMHgwMDAyCisrLyogc3ZjX3JlcXVlc3Qg cmV0dXJuZWQgWFBSVF9TVVNQRU5EIChlLmcuIFFPUywgYXN5bmMgcmVxdWVzdCBoYW5kbGluZykK KysgKiB3cmFwX2NhbGxiYWNrIGRlZmVycmVkIHRoZSBzZW50aW5lbCBjYmNfcmVsZWFzZV9pdCB0 byB4ZHJfcmRtYV9zdmNfZmx1c2hvdXQKKysgKiBzbyB0aGF0IGRhdGFxIGJ1ZmZlcnMgcmVtYWlu IHZhbGlkIGFjcm9zcyB0aGUgc3VzcGVuc2lvbiB3aW5kb3cuICovCisrI2RlZmluZSBDQkNfRkxB R19TRU5USU5FTF9QRU5ESU5HIDB4MDAwNAorIAorICNkZWZpbmUgUkRNQV9DQl9USU1FT1VUX1NF QyAxMAorIAorQEAgLTIyMiw2ICsyMjYsNyBAQAorIAkJCQkJICogLTEgKFJETUFYX1NFUlZFUl9D SElMRCk6CisgCQkJCQkgKiBzZXJ2ZXIgaGFzIGFjY2VwdGVkIGNvbm5lY3Rpb24KKyAJCQkJCSAq LworKwlib29sIHNoYXJlZDsKKyAKKyAJZW51bSByZG1hX3RyYW5zcG9ydF9zdGF0ZSB7CisgCQlS RE1BWFNfSU5JVElBTCwgCS8qIGFzc3VtZXMgemVybywgbmV2ZXIgc2V0ICovCitAQCAtMzc0LDYg KzM3OSw3IEBACisgZW51bSB4cHJ0X3N0YXQgc3ZjX3JkbWFfcmVuZGV6dm91cyhTVkNYUFJUICop OworIAorIC8qIGNsaWVudCAqLworK2ludCBycGNfcmRtYV9jb25uZWN0X3ByZXBhcmUoUkRNQVhQ UlQgKik7CisgaW50IHJwY19yZG1hX2Nvbm5lY3QoUkRNQVhQUlQgKik7CisgaW50IHJwY19yZG1h X2Nvbm5lY3RfZmluYWxpemUoUkRNQVhQUlQgKik7CisgCitAQCAtMzgzLDcgKzM4OSw3IEBACisg dm9pZCB4ZHJfcmRtYV9hZGRfb3V0YnVmc19kYXRhKFJETUFYUFJUICpyZG1hX3hwcnQpOworIHZv aWQgeGRyX3JkbWFfYWRkX2luYnVmc19oZHIoUkRNQVhQUlQgKnJkbWFfeHBydCk7Cisgdm9pZCB4 ZHJfcmRtYV9hZGRfb3V0YnVmc19oZHIoUkRNQVhQUlQgKnJkbWFfeHBydCk7Cistdm9pZCB4ZHJf cmRtYV9jYWxscShSRE1BWFBSVCAqKTsKKyt2b2lkIHhkcl9yZG1hX2NhbGxxKFJETUFYUFJUICos IGludCk7CisgCisgYm9vbCB4ZHJfcmRtYV9jbG50X3JlcGx5KFhEUiAqLCB1X2ludDMyX3QpOwor IGJvb2wgeGRyX3JkbWFfY2xudF9mbHVzaG91dChzdHJ1Y3QgcnBjX3JkbWFfY2JjICopOworQEAg LTQwNiw0ICs0MTIsMTMgQEAKKyBpbnQgeGRyX3JkbWFfZGVyZWdfbXIoUkRNQVhQUlQgKnJkbWFf eHBydCwgc3RydWN0IGlidl9tciAqbXIsCisgICAgIHVpbnQ4X3QgKmJ1ZmZlcl9hbGlnbmVkLCB1 aW50MzJfdCBidWZmZXJfdG90YWwpOworIAorK2ludCBycGNfcmRtYV9jcV9ldmVudF9oYW5kbGVy KFJETUFYUFJUICosIGludCk7CisrCisrUkRNQVhQUlQgKiBycGNfcmRtYV9hbGxvY2F0ZShjb25z dCBzdHJ1Y3QgcnBjX3JkbWFfYXR0ciAqKTsKKysKKytpbnQgcnBjX3JkbWFfc2V0dXBfY2JxKFJE TUFYUFJUICosIHN0cnVjdCBwb29scV9oZWFkICosCisrICAgIHVfaW50IGRlcHRoLCB1X2ludCBz Z2UpOworKworK3ZvaWQgc3ZjX3JkbWFfb3BzKFNWQ1hQUlQgKik7CisrCisgI2VuZGlmIC8qICFf VElSUENfUlBDX1JETUFfSCAqLworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvc3ZjLmMgbnRpcnBj LTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Yy5jCistLS0g bnRpcnBjLTcuMi9zcmMvc3ZjLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAK KysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMv c3ZjLmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0zNzgsNyArMzc4 LDcgQEAKKyAgcnBjYl9pdDoKKyAJcndsb2NrX3VubG9jaygmc3ZjX2xvY2spOworIAkvKiBub3cg cmVnaXN0ZXIgdGhlIGluZm9ybWF0aW9uIHdpdGggdGhlIGxvY2FsIGJpbmRlciBzZXJ2aWNlICov CistCWlmIChuY29uZikgeworKwlpZiAobmNvbmYgJiYgKCh4cHJ0LT54cF9mbGFncyAmIFNWQ19Y UFJUX0ZMQUdfTk9fU0VUKSA9PSAwKSkgeworIAkJLypMSU5URUQgY29uc3QgY2FzdGF3YXkgKi8K KyAJCWR1bW15ID0KKyAJCSAgICBycGNiX3NldChwcm9nLCB2ZXJzLCAoc3RydWN0IG5ldGNvbmZp ZyAqKW5jb25mLAorZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvc3ZjX2ludGVybmFsLmggbnRpcnBj LTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Y19pbnRlcm5h bC5oCistLS0gbnRpcnBjLTcuMi9zcmMvc3ZjX2ludGVybmFsLmgJMjAyNS0wOS0yMyAxMDowNTox OS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3 ZWUxMjk3ODI1NmJkMS9zcmMvc3ZjX2ludGVybmFsLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAw MDAwMDAgLTA0MDAKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4K KyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICNpbmNsdWRlIDxtaXNjL29zX2Vwb2xsLmg+Cisr I2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICNpbmNsdWRlIDxycGMvcnBjX21zZy5oPgorIAorICNp bmNsdWRlICJycGNfZHBseF9pbnRlcm5hbC5oIgorQEAgLTE5NCw3ICsxOTUsNDYgQEAKKyB2b2lk IHN2Y19ycXN0X3hwcnRfc2VuZF9jb21wbGV0ZShTVkNYUFJUICopOworIHZvaWQgc3ZjX3Jxc3Rf dW5ob29rKFNWQ1hQUlQgKik7CisgCisrLyogQWxsb3cgbXVjaCBtb3JlIHNwYWNlIHRoYW4gd2Ug cmVhbGx5IG5lZWQgZm9yIGEgc29jayBuYW1lLiBBbiBJUFY0IGFkZHJlc3MKKysgKiBlbWJlZGRl ZCBpbiBJUHY2IGNvdWxkIHVzZSA0NSBieXRlcyBhbmQgdGhlbiBpZiB3ZSBhZGQgYSBwb3J0LCB0 aGF0IHdvdWxkIGJlCisrICogYW4gYWRkaXRpb25hbCA2IGJ5dGVzICg6NjU1MzUpIGZvciBhIHRv dGFsIG9mIDUxLCBhbmQgdGhlbiBvbmUgbW9yZSBmb3IgTlVMCisrICogdGVybWluYXRpb24uIFdl IGNvdWxkIHVzZSA2NCBpbnN0ZWFkIG9mIDEyOC4KKysgKi8KKysjZGVmaW5lIFNPQ0tfTkFNRV9N QVggMTI4CisrCisgdHlwZWRlZiBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzb2NrYWRkcl90Owor IGludCBzdmNfZ2V0X3BvcnQoc29ja2FkZHJfdCAqKTsKKyAKKytzdGF0aWMgaW5saW5lIHZvaWQg KnNvY2tldF9hZGRyKHNvY2thZGRyX3QgKmFkZHIpCisreworKwlzd2l0Y2ggKGFkZHItPnNzX2Zh bWlseSkgeworKwljYXNlIEFGX0lORVQ6CisrCQlyZXR1cm4gJigoKHN0cnVjdCBzb2NrYWRkcl9p biAqKWFkZHIpLT5zaW5fYWRkcik7CisrCWNhc2UgQUZfSU5FVDY6CisrCQlyZXR1cm4gJigoKHN0 cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyKS0+c2luNl9hZGRyKTsKKysjaWZkZWYgUlBDX1ZTT0NL CisrCWNhc2UgQUZfVlNPQ0s6CisrCQlyZXR1cm4gJigoKHN0cnVjdCBzb2NrYWRkcl92bSAqKWFk ZHIpLT5zdm1fY2lkKTsKKysjZW5kaWYgLyogVlNPQ0sgKi8KKysJZGVmYXVsdDoKKysJCXJldHVy biBhZGRyOworKwl9CisrfQorKworK3N0YXRpYyBpbmxpbmUgYm9vbCBzcHJpbnRfc29ja2lwKHNv Y2thZGRyX3QgKmFkZHIsIGNoYXIgKmJ1ZiwgaW50IGxlbikKKyt7CisrI2lmZGVmIFJQQ19WU09D SworKwlpZiAoYWRkci0+c3NfZmFtaWx5ID09IEFGX1ZTT0NLKSB7CisrCQlpbnQgcmMgPSBzbnBy aW50ZihidWYsIGxlbiwgIiVkIiwKKysJCQkgKChzdHJ1Y3Qgc29ja2FkZHJfdm0gKilhZGRyKS0+ c3ZtX2NpZCkpOworKwkJcmV0dXJuIHJjID49IDAgJiYgcmMgPCBsZW47CisrCX0KKysjZW5kaWYg LyogVlNPQ0sgKi8KKysKKysJaWYgKGFkZHItPnNzX2ZhbWlseSAhPSBBRl9JTkVUICYmIGFkZHIt PnNzX2ZhbWlseSAhPSBBRl9JTkVUNikKKysJCXJldHVybiBmYWxzZTsKKysKKysJcmV0dXJuIGlu ZXRfbnRvcChhZGRyLT5zc19mYW1pbHksIHNvY2tldF9hZGRyKGFkZHIpLCBidWYsIGxlbikgIT0g TlVMTDsKKyt9CisrCisgI2VuZGlmCQkJCS8qIFRJUlBDX1NWQ19JTlRFUk5BTF9IICovCitkaWZm IC11ciBudGlycGMtNy4yL3NyYy9zdmNfcmRtYS5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1 YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfcmRtYS5jCistLS0gbnRpcnBjLTcuMi9zcmMv c3ZjX3JkbWEuYwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJw Yy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfcmRtYS5j CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtNjAsNyArNjAsNiBAQAor ICNpbmNsdWRlIDxycGMvc3ZjX3Jxc3QuaD4KKyAjaW5jbHVkZSA8cnBjL3N2Y19hdXRoLmg+Cisg Cistc3RhdGljIHZvaWQgc3ZjX3JkbWFfb3BzKFNWQ1hQUlQgKik7CisgCisgLyoKKyAgKiBzdmNf cmRtYV9yZW5kZXp2b3VzOiB3YWl0cyBmb3IgY29ubmVjdGlvbiByZXF1ZXN0CitAQCAtOTUsMTEg Kzk0LDE4IEBACisgCW1lbWNweShyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcmVtb3RlLm5iLmJ1 Ziwgc3MsCisgCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcmVtb3RlLm5iLmxlbik7CisgCist CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKy0JCSIlczoldSBsb2NhbCAlcCByZW1v dGUgJXAgeHBydCAlcCIsIF9fZnVuY19fLCBfX0xJTkVfXywKKysJcmRtYV94cHJ0LT5zbV9kci54 cHJ0LnhwX2lwID0gbWVtX2FsbG9jKFNPQ0tfTkFNRV9NQVgpOworKwlzcHJpbnRfc29ja2lwKHNz LCByZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsCisrCSAgICBTT0NLX05BTUVfTUFYKTsKKysJ cmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3BvcnQgPSBzdmNfZ2V0X3BvcnQoc3MpOworKworKwlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisrCQkiJXM6JXUgbG9jYWwgJXAgcmVt b3RlICVwIHhwcnQgJXAgcmVtb3RlIGlwICVzIiwKKysJCV9fZnVuY19fLCBfX0xJTkVfXywKKyAJ CSZyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfbG9jYWwubmIsCisgCQkmcmRtYV94cHJ0LT5zbV9k ci54cHJ0LnhwX3JlbW90ZS5uYiwKKy0JCSZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOworKwkJJnJk bWFfeHBydC0+c21fZHIueHBydCwKKysJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCk7Cisg CisgCXN2Y19yZG1hX29wcygmcmRtYV94cHJ0LT5zbV9kci54cHJ0KTsKKyAJcmRtYV94cHJ0LT5z bV9kci5yZWN2c3ogPSByZXFfcmRtYV94cHJ0LT5zbV9kci5yZWN2c3o7CitAQCAtMTU1LDcgKzE2 MSw3IEBACisgCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKyAJCSIlczoldSBOZXcg UkRNQSBjbGllbnQgY29ubmVjdGVkIHhwcnQgJXAsIHhwX2ZkICVkLCAiCisgCQkicXBfbnVtICVk LCB4cF9mZCAlZCBpc19yZG1hX2VuYWJsZWQgJWQgdG8gbG9jYWwgcG9ydCAlZCAiCistCQkiZnJv bSByZW1vdGUgcG9ydCAlZCByZWYgJWQgZXBvbGwgJSMwNHgiLAorKwkJImZyb20gcmVtb3RlIHBv cnQgJWQgcmVmICVkIGVwb2xsICUjMDR4IHJlbW90ZSBpcCAlcyIsCisgCQlfX2Z1bmNfXywgX19M SU5FX18sCisgCQkmcmRtYV94cHJ0LT5zbV9kci54cHJ0LCByZG1hX3hwcnQtPnNtX2RyLnhwcnQu eHBfZmQsCisgCQlyZG1hX3hwcnQtPnFwLT5xcF9udW0sCitAQCAtMTY1LDcgKzE3MSw4IEBACisg CQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcmVtb3RlLm5iLmJ1ZiA/CisgCQlzdmNfZ2V0X3Bv cnQocmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3JlbW90ZS5uYi5idWYpIDogMCwKKyAJCXJkbWFf eHBydC0+c21fZHIueHBydC54cF9yZWZjbnQsCistCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBf ZmxhZ3MpOworKwkJcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2ZsYWdzLAorKwkJcmRtYV94cHJ0 LT5zbV9kci54cHJ0LnhwX2lwKTsKKyAKKyAJcmV0dXJuIChYUFJUX0lETEUpOworIH0KK0BAIC0y MjEsNiArMjI4LDI3IEBACisgCQlyZXR1cm4gKFhQUlRfRElFRCk7CisgCX0KKyAKKysJLyogaW4g b3JkZXIgb2YgbGlrZWxpaG9vZCAqLworKwlpZiAocmVxLT5ycV9tc2cucm1fZGlyZWN0aW9uID09 IENBTEwpIHsKKysJCS8qIGFuIG9yZGluYXJ5IGNhbGwgaGVhZGVyICovCisrCQlnb3RvIHByb2Nl c3NfY2FsbDsKKysJfQorKworKwlpZiAocmVxLT5ycV9tc2cucm1fZGlyZWN0aW9uID09IFJFUExZ KSB7CisrCQkvKiByZXBseSBoZWFkZXIgKHhwcnQgT0spICovCisrCQljbG50X3JlcV9wcm9jZXNz X3JlcGx5KHJlcS0+cnFfeHBydCwgcmVxKTsKKysJCXJldHVybiBYUFJUX0lETEU7CisrCX0KKysK KysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1dBUk4sCisrCQkiJXM6ICVwIGZkICVkIGZhaWxl ZCBkaXJlY3Rpb24gJSIgUFJJdTMyCisrCQkiICh3aWxsIHNldCBkZWFkKSIsCisrCQlfX2Z1bmNf XywgcmVxLT5ycV94cHJ0LCByZXEtPnJxX3hwcnQtPnhwX2ZkLAorKwkJcmVxLT5ycV9tc2cucm1f ZGlyZWN0aW9uKTsKKysJcmV0dXJuIChYUFJUX0RJRUQpOworKworK3Byb2Nlc3NfY2FsbDoKKysK KyAJLyogdGhlIGNoZWNrc3VtICovCisgCXJlcS0+cnFfY2tzdW0gPSAwOworIAorQEAgLTI4OSw3 ICszMTcsNyBAQAorIAorIAlzdmNfcnFzdF94cHJ0X3VucmVnaXN0ZXJfcmRtYSh4cHJ0LCBmbGFn cyk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkgICAgIiVzKCkgJXBbJXVdIiwKKyAJICAgIF9fZnVu Y19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUpOworIAorQEAgLTMxMyw3ICszNDEsNyBA QAorIHsKKyAJUkRNQVhQUlQgKnJkbWFfeHBydCA9IFJETUFfRFIoUkVDX1hQUlQoeHBydCkpOwor IAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVC VUdfRkxBR19SUENfUkRNQSwKKyAJCSIlcygpICVwIHhwX3JlZmNudCAlIiBQUklkMzIKKyAJCSIg c2hvdWxkIGFjdHVhbGx5IGRlc3Ryb3kgdGhpbmdzIEAgJXM6JWQiLAorIAkJX19mdW5jX18sIHhw cnQsIHhwcnQtPnhwX3JlZmNudCwgdGFnLCBsaW5lKTsKK0BAIC0zNjgsNyArMzk2LDcgQEAKKyAJ cmV0dXJuIChUUlVFKTsKKyB9CisgCistc3RhdGljIHZvaWQKKyt2b2lkCisgc3ZjX3JkbWFfb3Bz KFNWQ1hQUlQgKnhwcnQpCisgeworIAlzdGF0aWMgc3RydWN0IHhwX29wcyBvcHM7CitkaWZmIC11 ciBudGlycGMtNy4yL3NyYy9zdmNfcnFzdC5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFi NzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfcnFzdC5jCistLS0gbnRpcnBjLTcuMi9zcmMvc3Zj X3Jxc3QuYwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01 Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfcnFzdC5jCTIw MjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMjk3LDcgKzI5Nyw3IEBACisg c3RhdGljIHZvaWQgc3ZjX3Jxc3RfZXBvbGxfbG9vcChzdHJ1Y3Qgd29ya19wb29sX2VudHJ5ICp3 cGUpOworIHN0YXRpYyB2b2lkIHN2Y19jb21wbGV0ZV90YXNrKHN0cnVjdCBzdmNfcnFzdF9yZWMg KnNyX3JlYywgYm9vbCBmaW5pc2hlZCk7CisgCistc3RhdGljIGludAorK2ludAorIHN2Y19ycXN0 X2V4cGlyZV9jbXBmKGNvbnN0IHN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgKmxocywKKyAJCSAgICAg Y29uc3Qgc3RydWN0IG9wcl9yYnRyZWVfbm9kZSAqcmhzKQorIHsKK0BAIC0zNzEsNyArMzcxLDcg QEAKKyAJZXZfc2lnKHNyX3JlYy0+c3ZbMF0sIDApOwkvKiBzZW5kIHdha2V1cCAqLworIH0KKyAK Ky1zdGF0aWMgdm9pZAorK3ZvaWQKKyBzdmNfcnFzdF9leHBpcmVfdGFzayhzdHJ1Y3Qgd29ya19w b29sX2VudHJ5ICp3cGUpCisgeworIAlzdHJ1Y3QgY2xudF9yZXEgKmNjID0gb3ByX2NvbnRhaW5l cm9mKHdwZSwgc3RydWN0IGNsbnRfcmVxLCBjY193cGUpOworZGlmZiAtdXIgbnRpcnBjLTcuMi9z cmMvc3ZjX3ZjLmMgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZi ZDEvc3JjL3N2Y192Yy5jCistLS0gbnRpcnBjLTcuMi9zcmMvc3ZjX3ZjLmMJMjAyNS0wOS0yMyAx MDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJh Yjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvc3ZjX3ZjLmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAw MDAwMDAgLTA0MDAKK0BAIC03NCw2ICs3NCw3IEBACisgI2luY2x1ZGUgPHJwYy9zdmNfYXV0aC5o PgorICNpbmNsdWRlIDxycGMvc3ZjX3Jxc3QuaD4KKyAjaW5jbHVkZSA8cnBjL3hkcl9pb3EuaD4K KysjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisgCisgI2luY2x1ZGUgInJwY19jb20uaCIKKyAjaW5j bHVkZSAiY2xudF9pbnRlcm5hbC5oIgorQEAgLTQzOCw2ICs0MzksNyBAQAorIAlzb2NrbGVuX3Qg bGVuOworIAlzdGF0aWMgaW50IG4gPSAxOworIAlzdHJ1Y3QgdGltZXZhbCB0aW1ldmFsOworKwlz dHJ1Y3Qgc29ja2FkZHIgKnNhOworIAorIAlYUFJUX0FVVE9fVFJBQ0VQT0lOVCh4cHJ0LCByZW5k ZXp2b3VzX3N0YXJ0LCBUUkFDRV9JTkZPLAorIAkJInJlbmRlenZvdXNfc3RhcnQiKTsKK0BAIC01 MDUsNiArNTA3LDI4IEBACisgCW5ld3hwcnQtPnhwX3JlbW90ZS5uYi5sZW4gPSBsZW47CisgCVhQ UlRfVFJBQ0UobmV3eHBydCwgX19mdW5jX18sIF9fZnVuY19fLCBfX0xJTkVfXyk7CisgCisrCXNh ID0gKHN0cnVjdCBzb2NrYWRkciAqKW5ld3hwcnQtPnhwX3JlbW90ZS5uYi5idWY7CisrCS8qIFN0 b3JlIGNsaWVudCBpbmZvcm1hdGlvbiAoSVAgJiBQb3J0KSBpbiBTVkNYUFJUICovCisrCWlmIChu ZXd4cHJ0LT54cF9yZW1vdGUubmIubGVuID4gMCAmJiBzYSAhPSBOVUxMKSB7CisrCQlpZiAoc2Et PnNhX2ZhbWlseSA9PSBBRl9JTkVUKSB7CisrCQkJc3RydWN0IHNvY2thZGRyX2luICpzaW4gPSAo c3RydWN0IHNvY2thZGRyX2luICopc2E7CisrCQkJaW5ldF9udG9wKEFGX0lORVQsICZzaW4tPnNp bl9hZGRyLCBuZXd4cHJ0LT54cF9jbG50X2FkZHIsCisrCQkJCQlzaXplb2YobmV3eHBydC0+eHBf Y2xudF9hZGRyKSk7CisrCQkJbmV3eHBydC0+eHBfY2xudF9wb3J0ID0gbnRvaHMoc2luLT5zaW5f cG9ydCk7CisrCQl9IGVsc2UgaWYgKHNhLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKysJCQlz dHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYTsKKysJ CQlpbmV0X250b3AoQUZfSU5FVDYsICZzaW42LT5zaW42X2FkZHIsIG5ld3hwcnQtPnhwX2NsbnRf YWRkciwKKysJCQkJCXNpemVvZihuZXd4cHJ0LT54cF9jbG50X2FkZHIpKTsKKysJCQluZXd4cHJ0 LT54cF9jbG50X3BvcnQgPSBudG9ocyhzaW42LT5zaW42X3BvcnQpOworKwkJfSBlbHNlIHsKKysJ CQlzbnByaW50ZihuZXd4cHJ0LT54cF9jbG50X2FkZHIsIHNpemVvZihuZXd4cHJ0LT54cF9jbG50 X2FkZHIpLCAidW5rbm93biIpOworKwkJCW5ld3hwcnQtPnhwX2NsbnRfcG9ydCA9IDA7CisrCQl9 CisrCX0gZWxzZSB7CisrCQlzbnByaW50ZihuZXd4cHJ0LT54cF9jbG50X2FkZHIsIHNpemVvZihu ZXd4cHJ0LT54cF9jbG50X2FkZHIpLCAibm9fYWRkciIpOworKwkJbmV3eHBydC0+eHBfY2xudF9w b3J0ID0gMDsKKysJfQorKworIAkvKiBYWFggZnZkbCAtIGlzIHRoaXMgdXNlZnVsPyAoWWVzLiAg TWF0dCkgKi8KKyAJaWYgKHNpLnNpX3Byb3RvID09IElQUFJPVE9fVENQKSB7CisgCQlsZW4gPSAx OworQEAgLTk3OSw3ICsxMDAzLDcgQEAKKyAJU1ZDWFBSVCAqeHBydCwgc3RydWN0IHByb3h5X2hl YWRlcl9wYXJ0ICpwcm94eV9oZWFkZXJfcGFydCkKKyB7CisgCWVudW0gaGFwcm94eV9yZXRfY29k ZSByZXQ7CistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJIiVzOiAlcCBmZCAlZCBwcm94eSBpZ25vcmVkIGZv ciBsb2NhbC4gbGVuIGlnbm9yZWQ6ICVkIiwKKyAJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9m ZCwgcHJveHlfaGVhZGVyX3BhcnQtPmxlbik7CisgCWNvbnN0IGVudW0gaGFwcm94eV9yZXRfY29k ZSBpZ25vcmVfcmVtYWluaW5nX2RhdGFfcmVzdWx0ID0KK0BAIC0xMjA1LDkgKzEyMjksOSBAQAor IAkJCQkJCXhwcnQsCisgCQkJCQkJU1ZDX1hQUlRfRkxBR19BRERFRF9SRUNWKSkpIHsKKyAJCQkJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCQkJCQkiJXM6ICVwIGZkICVkIHN2 Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0IGRlYWQpIiwKKysJCQkJCQkiJXM6 ICVwIGZkICVkIHN2Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0IGRlYWQpIC0g Y2xpZW50aXA6ICVzOiV1IiwKKyAJCQkJCQkic3ZjX3ZjX3dhaXQiLAorLQkJCQkJCXhwcnQsIHhw cnQtPnhwX2ZkKTsKKysJCQkJCQl4cHJ0LCB4cHJ0LT54cF9mZCwgeHBydC0+eHBfY2xudF9hZGRy LCB4cHJ0LT54cF9jbG50X3BvcnQpOworIAkJCQkJU1ZDX0RFU1RST1koeHBydCk7CisgCQkJCQlj b2RlID0gRUlOVkFMOworIAkJCQl9CitAQCAtMTIxNiw4ICsxMjQwLDggQEAKKyAJCQkJcmV0dXJu IFNWQ19TVEFUKHhwcnQpOworIAkJCX0KKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfV0FS TiwKKy0JCQkJIiVzOiAlcCBmZCAlZCByZWN2IGVycm5vICVkICh3aWxsIHNldCBkZWFkKSIsCist CQkJCSJzdmNfdmNfd2FpdCIsIHhwcnQsIHhwcnQtPnhwX2ZkLCBjb2RlKTsKKysJCQkJIiVzOiAl cCBmZCAlZCByZWN2IGVycm5vICVkICh3aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczoldSIs CisrCQkJCSJzdmNfdmNfd2FpdCIsIHhwcnQsIHhwcnQtPnhwX2ZkLCBjb2RlLCB4cHJ0LT54cF9j bG50X2FkZHIsIHhwcnQtPnhwX2NsbnRfcG9ydCk7CisgCQkJU1ZDX0RFU1RST1koeHBydCk7Cisg CisgCQkJWFBSVF9BVVRPX1RSQUNFUE9JTlQoeHBydCwgcmVjdl9lcnIsCitAQCAtMTIyNyw4ICsx MjUxLDggQEAKKyAKKyAJCWlmICh1bmxpa2VseSghcmxlbikpIHsKKyAJCQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfU1ZDX1ZDLAorLQkJCQkiJXM6ICVwIGZkICVkIHJlY3YgY2xvc2VkICh3aWxs IHNldCBkZWFkKSIsCistCQkJCSJzdmNfdmNfd2FpdCIsIHhwcnQsIHhwcnQtPnhwX2ZkKTsKKysJ CQkJIiVzOiAlcCBmZCAlZCByZWN2IGNsb3NlZCAod2lsbCBzZXQgZGVhZCkgLSBjbGllbnRpcDog JXM6JXUiLAorKwkJCQkic3ZjX3ZjX3dhaXQiLCB4cHJ0LCB4cHJ0LT54cF9mZCwgeHBydC0+eHBf Y2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3BvcnQpOworIAkJCVNWQ19ERVNUUk9ZKHhwcnQpOwor IAorIAkJCVhQUlRfQVVUT19UUkFDRVBPSU5UKHhwcnQsIHJlY3ZfZW1wdHksCitAQCAtMTI0Myw2 ICsxMjY3LDE2IEBACisgCQkJInN4X2ZidGJjID0gJTA4eCIsIChpbnQpeGQtPnN4X2ZidGJjKTsK KyAKKyAJCWlmICh4ZC0+c3hfZmJ0YmMgPT0gUFAyX1NJR19VSU5UMzIpIHsKKysJCQkvKiBTaW5j ZSB0aGlzIGlzIGhhcHJveHkgaGVhZGVyIGNsZWFyIG9mZiBzeF9mYnRiYworKwkJCSAqIEluIGNh c2Ugb2YgSEFQUk9YWV9SRVRfQ09ERV9fSUdOT1JFX0xPQ0FMLAorKwkJCSAqIGhhbmRsZV9oYXBy b3h5X2hlYWRlcigpIGRvIHJlYXJtIHRoZSB4cHJ0IHJlY3YgZmQuCisrCQkJICogY2F1c2luZyBh IHJhY2UgaWYgdGhlIHRocmVhZCBnZXRzIHNjaGVkdWxlZAorKwkJCSAqIG91dCBhZnRlciByZWFy bSBhbmQgZXBvbGxfd2FpdCBnZXRzIGRhdGEgYXZhaWxhYmxlCisrCQkJICogZXZlbnQsIHRoZW4g bmV3IHJlY3YgZW5kdXAgaW4gZWxzZWNhc2UKKysJCQkgKiAiaWYgKCF4ZC0+c3hfZmJ0YmMpIgor KwkJCSAqIGFuZCB3aWxsIGNhdXNlIHV2IHRvIE5VTEwgKi8KKysJCQl4ZC0+c3hfZmJ0YmMgPSAw OworKworIAkJCS8qIEhBIFByb3h5IFYyPyAqLworIAkJCWVudW0gaGFwcm94eV9yZXRfY29kZSBy ZXQgPSBoYW5kbGVfaGFwcm94eV9oZWFkZXIoeHBydCk7CisgCQkJc3dpdGNoIChyZXQpIHsKK0BA IC0xMjUyLDE3ICsxMjg2LDE1IEBACisgCQkJCQlyZXR1cm4gU1ZDX1NUQVQoeHBydCk7CisgCQkJ CX0KKyAJCQkJLyogTm93IGxvb2sgdG8gc2VlIGlmIHRoZXJlJ3MgbW9yZS4uLiAqLworLQkgICAg ICAgICAgICAgICAgICAgICAgICB4ZC0+c3hfZmJ0YmMgPSAwOworIAkJCQloYXBfYWdhaW4gPSB0 cnVlOworIAkJCQlnb3RvIGFnYWluOworIAkJCWNhc2UgSEFQUk9YWV9SRVRfQ09ERV9fRkFJTFVS RToKKyAJCQkJU1ZDX0RFU1RST1koeHBydCk7CisgCQkJCXJldHVybiBTVkNfU1RBVCh4cHJ0KTsK KyAJCQljYXNlIEhBUFJPWFlfUkVUX0NPREVfX0lHTk9SRV9MT0NBTDoKKy0JCQkJLyogY2xlYXIg b2ZmIHN4X2ZidGJjICovCistCSAgICAgICAgICAgICAgICAgICAgICAgIHhkLT5zeF9mYnRiYyA9 IDA7CisgCQkJCXJldHVybiBTVkNfU1RBVCh4cHJ0KTsKKyAJCQljYXNlIEhBUFJPWFlfUkVUX0NP REVfX05PVF9IQVBST1hZOgorKwkJCQl4ZC0+c3hfZmJ0YmMgPSBQUDJfU0lHX1VJTlQzMjsKKyAJ CQkJYnJlYWs7CisgCQkJfQorIAkJfQorQEAgLTEyNzYsOCArMTMwOCw4IEBACisgCisgCQlpZiAo dW5saWtlbHkoIXhkLT5zeF9mYnRiYykpIHsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf RVJST1IsCistCQkJCSIlczogJXAgZmQgJWQgZnJhZ21lbnQgaXMgemVybyAod2lsbCBzZXQgZGVh ZCkiLAorLQkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQpOworKwkJCQkiJXM6ICVwIGZk ICVkIGZyYWdtZW50IGlzIHplcm8gKHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwK KysJCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhw cnQtPnhwX2NsbnRfcG9ydCk7CisgCQkJU1ZDX0RFU1RST1koeHBydCk7CisgCisgCQkJWFBSVF9B VVRPX1RSQUNFUE9JTlQoeHBydCwgcmVjdl9ub19yZWNvcmQsCitAQCAtMTMwMywxNCArMTMzNSwx NCBAQAorIAorIAkJaWYgKGNvZGUgPT0gRUFHQUlOIHx8IGNvZGUgPT0gRVdPVUxEQkxPQ0spIHsK KyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfU1ZDX1ZDLAorLQkJCQkiJXM6ICVwIGZkICVk IHJlY3YgZXJybm8gJWQgKHRyeSBhZ2FpbikiLAorLQkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+ eHBfZmQsIGNvZGUpOworKwkJCQkiJXM6ICVwIGZkICVkIHJlY3YgZXJybm8gJWQgKHRyeSBhZ2Fp bikgLSBjbGllbnRpcDogJXM6JXUiLAorKwkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQs IGNvZGUsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCQlpZiAo dW5saWtlbHkoc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzKAorIAkJCQkJCXhwcnQsCisgCQkJCQkJU1ZD X1hQUlRfRkxBR19BRERFRF9SRUNWKSkpIHsKKyAJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFH X0VSUk9SLAorLQkJCQkJIiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVudHMgZmFpbGVk ICh3aWxsIHNldCBkZWFkKSIsCistCQkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQpOwor KwkJCQkJIiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVudHMgZmFpbGVkICh3aWxsIHNl dCBkZWFkKSAtIGNsaWVudGlwOiAlczoldSIsCisrCQkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+ eHBfZmQsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCQkJU1ZD X0RFU1RST1koeHBydCk7CisgCQkJCWNvZGUgPSBFSU5WQUw7CisgCQkJfQorQEAgLTEzMjEsOCAr MTM1Myw4IEBACisgCQkJcmV0dXJuIFNWQ19TVEFUKHhwcnQpOworIAkJfQorIAkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJCSIlczogJXAgZmQgJWQgcmVjdiBlcnJubyAlZCAo d2lsbCBzZXQgZGVhZCkiLAorLQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCwgY29kZSk7 CisrCQkJIiVzOiAlcCBmZCAlZCByZWN2IGVycm5vICVkICh3aWxsIHNldCBkZWFkKSAtIGNsaWVu dGlwOiAlczoldSIsCisrCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCBjb2RlLCB4cHJ0 LT54cF9jbG50X2FkZHIsIHhwcnQtPnhwX2NsbnRfcG9ydCk7CisgCQlTVkNfREVTVFJPWSh4cHJ0 KTsKKyAKKyAJCVhQUlRfQVVUT19UUkFDRVBPSU5UKHhwcnQsIHJlY3ZfZXJyb3IsCitAQCAtMTMz Myw4ICsxMzY1LDggQEAKKyAKKyAJaWYgKHVubGlrZWx5KCFybGVuKSkgeworIAkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX1NWQ19WQywKKy0JCQkiJXM6ICVwIGZkICVkIHJlY3YgY2xvc2VkICh3 aWxsIHNldCBkZWFkKSIsCistCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkKTsKKysJCQki JXM6ICVwIGZkICVkIHJlY3YgY2xvc2VkICh3aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczol dSIsCisrCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIs IHhwcnQtPnhwX2NsbnRfcG9ydCk7CisgCQlTVkNfREVTVFJPWSh4cHJ0KTsKKyAKKyAJCVhQUlRf QVVUT19UUkFDRVBPSU5UKHhwcnQsIHJlY3ZfY2xvc2VkLAorQEAgLTEzNTgsOCArMTM5MCw4IEBA CisgCQlpZiAodW5saWtlbHkoc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzKHhwcnQsCisgCQkJCQkJICAg U1ZDX1hQUlRfRkxBR19BRERFRF9SRUNWKSkpIHsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVJST1IsCistCQkJCSIlczogJXAgZmQgJWQgc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxl ZCAod2lsbCBzZXQgZGVhZCkiLAorLQkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQpOwor KwkJCQkiJXM6ICVwIGZkICVkIHN2Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0 IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwKKysJCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhw X2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQtPnhwX2NsbnRfcG9ydCk7CisgCQkJWFBSVF9V TklRVUVfQVVUT19UUkFDRVBPSU5UKHhwcnQsIHJlYXJtX2ZhaWxlZCwKKyAJCQkJVFJBQ0VfRVJS LCAiUmVhcm0gZmFpbGVkIik7CisgCQkJU1ZDX0RFU1RST1koeHBydCk7CitAQCAtMTM4NSw4ICsx NDE3LDggQEAKKyAKKyAJaWYgKHVubGlrZWx5KHN2Y19ycXN0X3JlYXJtX2V2ZW50cyh4cHJ0LCBT VkNfWFBSVF9GTEFHX0FEREVEX1JFQ1YpKSkgeworIAkJX193YXJueChUSVJQQ19ERUJVR19GTEFH X0VSUk9SLAorLQkJCSIlczogJXAgZmQgJWQgc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxlZCAo d2lsbCBzZXQgZGVhZCkiLAorLQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCk7CisrCQkJ IiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVudHMgZmFpbGVkICh3aWxsIHNldCBkZWFk KSAtIGNsaWVudGlwOiAlczoldSIsCisrCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCB4 cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQtPnhwX2NsbnRfcG9ydCk7CisgCQl4ZHJfaW9xX2Rlc3Ry b3koeGlvcSwgeGlvcS0+aW9xX3MucXNpemUpOworIAkJU1ZDX0RFU1RST1koeHBydCk7CisgCitk aWZmIC11ciBudGlycGMtNy4yL3NyYy9zdmNfeHBydC5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNm OGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfeHBydC5jCistLS0gbnRpcnBjLTcuMi9z cmMvc3ZjX3hwcnQuYwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50 aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfeHBy dC5jCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtNDE0LDExICs0MTQs MTcgQEAKKyAJCQkJCWdvdG8gcmVzdGFydDsKKyAJCQkJfQorIAkJCX0KKy0JCQkvKiBJZiBleGl0 cyBlYXJsaWVyLCBjbGVhciB0aGUgZmxhZyBleHBsaWNpdGx5ICovCisrCQkJLyoKKysJCQkgKiBH ZXQgdGhlIG5leHQgbm9kZSBCRUZPUkUgcmVsZWFzaW5nIHRoZSByZWZlcmVuY2UuCisrCQkJICog U1ZDX1JFTEVBU0UgbWF5IHRyaWdnZXIgZGVzdHJ1Y3Rpb24gaWYgcmVmY250IGRyb3BzCisrCQkJ ICogdG8gMCwgd2hpY2ggZnJlZXMgdGhlIG1lbW9yeS4gVGhlIG1lbW9yeSBjYW4gYmUKKysJCQkg KiBpbW1lZGlhdGVseSByZXVzZWQgYnkgYW5vdGhlciB4cHJ0ICh1c2UtYWZ0ZXItZnJlZSkuCisr CQkJICovCisrCQkJbiA9IG9wcl9yYnRyZWVfbmV4dChuKTsKKysJCQkvKiBOb3cgc2FmZSB0byBy ZWxlYXNlIC0gd2UgaGF2ZSB0aGUgbmV4dCBub2RlICovCisgCQkJYXRvbWljX2NsZWFyX3VpbnQx Nl90X2JpdHMoCisgCQkJCSZyZWMtPnhwcnQueHBfZmxhZ3MsIFNWQ19YUFJUX1RSRUVfTE9DS0VE KTsKKyAJCQlTVkNfUkVMRUFTRSgmcmVjLT54cHJ0LCBTVkNfUkVMRUFTRV9GTEFHX05PTkUpOwor LQkJCW4gPSBvcHJfcmJ0cmVlX25leHQobik7CisgCQl9CQkvKiBjdXJyIHBhcnRpdGlvbiAqLwor IAkJcndsb2NrX3VubG9jaygmdC0+bG9jayk7IC8qIHQgIUxPQ0tFRCAqLworIAkJcF9peCsrOwor ZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMveGRyX2lvcS5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNm OGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy94ZHJfaW9xLmMKKy0tLSBudGlycGMtNy4yL3Ny Yy94ZHJfaW9xLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGly cGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMveGRyX2lvcS5j CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMjYwLDYgKzI2MCw3IEBA CisgCQkgICAgJnJkbWFfeHBydC0+bGFzdF9leHRyYV9idWZfYWxsb2NhdGlvbl90aW1lKTsKKyAJ fQorIAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLCAiaW8gYnVmIHJlZiAlcCByZWZz ICVkIiwgaW9fYnVmLCBpb19idWYtPnJlZnMpOworIAlyZXR1cm4gYXRvbWljX2luY191aW50MzJf dCgmaW9fYnVmLT5yZWZzKTsKKyB9CisgCitAQCAtMjkxLDcgKzI5Miw3IEBACisgeworIAlzdHJ1 Y3QgcG9vbHFfaGVhZCAqaW9xaCA9IGdldF9kYXRhX3Bvb2xxX2hlYWQoaW9fYnVmLCByZG1hX3hw cnQpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlczogU3RhcnQgc2hy aW5raW5nIHhwcnQgJXAgIgorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLCAiJXM6IFN0 YXJ0IHNocmlua2luZyB4cHJ0ICVwICIKKyAJICAgICJpb19idWYgJXAgcmVmcyAlZCBpb3FoICVw IGNvdW50ICVkIiwKKyAJICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIGlvX2J1ZiwgaW9fYnVmLT5y ZWZzLCBpb3FoLAorIAkgICAgaW9xaC0+cWNvdW50KTsKK0BAIC0zODUsNyArMzg2LDcgQEAKKyAJ CQlyZG1hX3hwcnQtPmlvX2J1ZnNfY291bnQtLTsKKyAJCQlyZG1hX3hwcnQtPmlvX2J1ZnMucWNv dW50LS07CisgCistCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULCAiJXM6IHhwcnQg JXAgc2hyaW5rICIKKysJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLCAiJXM6IHhwcnQg JXAgc2hyaW5rICIKKyAJCQkgICAgImlvX2J1ZiAlcCByZWZzICVkIGlvX2J1ZnMgY291bnQgJWQg JWQiLAorIAkJCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCBpb19idWYsIGlvX2J1Zi0+cmVmcywK KyAJCQkgICAgcmRtYV94cHJ0LT5pb19idWZzX2NvdW50LAorQEAgLTQwMyw2ICs0MDQsNyBAQAor IAlzdHJ1Y3QgcnBjX2lvX2J1ZnMgKmlvX2J1ZiA9IGdldF9wYXJlbnRfY2h1bmsoaGF2ZSk7Cisg CXVpbnQzMl90IHJlZnMgPSBhdG9taWNfZGVjX3VpbnQzMl90KCZpb19idWYtPnJlZnMpOworIAlS RE1BWFBSVCAqcmRtYV94cHJ0ID0gKFJETUFYUFJUICopaW9fYnVmLT5jdHg7CisrCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19YRFIsICJpbyBidWYgdW5yZWYgJXAgcmVmcyAlZCIsIGlvX2J1Ziwg aW9fYnVmLT5yZWZzKTsKKyAKKyAJLyogQ2hlY2sgaWYgaXRzIG9uIG9uIGRlbWFuZCBhbGxvY2F0 ZWQgZGF0YSBidWYgKi8KKyAJaWYgKGlzX3Nocmlua19idWYoaW9fYnVmLCByZG1hX3hwcnQpKSB7 CitAQCAtNjQ4LDcgKzY1MCw3IEBACisgCQkJICAgIGlvX2J1Zi0+YnVmZmVyX2FsaWduZWQsIGlv X2J1Zi0+YnVmZmVyX3RvdGFsKSk7CisgCQkJaW9fYnVmLT5tciA9IE5VTEw7CisgCistCQkJX193 YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULCAiJXMoKSBGcmVlIHhwcnQgJXAgbXIgIgorKwkJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsICIlcygpIEZyZWUgeHBydCAlcCBtciAiCisg CQkJICAgICJpb19idWZzICVwIHNpemUgJXUgaW9fYnVmICVwIiwgX19mdW5jX18sIHJkbWFfeHBy dCwKKyAJCQkgICAgaW9fYnVmLT5idWZmZXJfYWxpZ25lZCwgaW9fYnVmLT5idWZmZXJfdG90YWws IGlvX2J1Zik7CisgCitAQCAtOTk4LDEyICsxMDAwLDEyIEBACisgCX0KKyAKKyAJLyoKKy0JICog U21hbGwgUkRNQSBXcml0ZXMKKy0JICogSWYgZGF0YSBpcyBpbmxpbmUsIGl0IHNob3VsZCBiZSBw YXJ0IG9mIG5mc19idWZmZXIgaXRzZWxmLgorLQkgKiBTbywgdG8gYXZvaWQgdGhlIElMTEVHQUxf T1AsIHN0YXJ0IHNob3VsZCBhZHZhbmNlIGJ5IGRhdGFsZW4KKy0JICogdG8gcGljayB0aGUgY29y cmVjdCBPUCB3aGlsZSBkZWNvZGluZyB0aGUgQ09NUE9VTkQgb3BzLgorKwkgKiBTbWFsbCBSRE1B IFdyaXRlcyAoSW5saW5lIFJETUEpCisrCSAqIFRoZSB3cml0ZSBkYXRhIGZpdHMgZW50aXJlbHkg d2l0aGluIHRoZSBjdXJyZW50IChORlMgaGVhZGVyKSBVVgorKwkgKiBhdCB0aGUgY3VycmVudCBY RFIgcG9zaXRpb24uICBSZXR1cm4gJ3N0YXJ0JyB1bmNoYW5nZWQgc28gdGhhdAorKwkgKiBYRFJf RklMTEJVRlMgcmVhZHMgdGhlIGFjdHVhbCBkYXRhIGJ5dGVzLgorIAkgKi8KKy0JcmV0dXJuIHN0 YXJ0ICsgZGF0YWxlbjsKKysJcmV0dXJuIHN0YXJ0OworIAorIH0KKyAKK0BAIC0xMDI3LDkgKzEw MjksMTUgQEAKKyAJICogbmV4dCBuZnMgaGVhZGVyIGluIGNvbXBvdW5kIG9wLiAqLworIAlpZiAo ZGF0YWxlbiA+ICgodWludHB0cl90KXhkcnMtPnhfdi52aW9fdGFpbCAtICh1aW50cHRyX3QpeGRy cy0+eF9kYXRhKSkgeworIAkJb2Zmc2V0ID0gKHVpbnRwdHJfdCl4ZHJzLT54X3YudmlvX3RhaWwg LSAodWludHB0cl90KXhkcnMtPnhfZGF0YTsKKysJCXJldHVybiBzdGFydCAtIG9mZnNldDsKKyAJ fQorIAorLQlyZXR1cm4gc3RhcnQgLSBvZmZzZXQ7CisrCS8qIElubGluZSBSRE1BOiAnc3RhcnQn IGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgZGF0YSBieXRlCisrCSAqIChnZXRzdGFydGRh dGFwb3MgcmV0dXJuZWQgaXQgdW5jaGFuZ2VkKS4gICdkYXRhbGVuJyBoZXJlIGlzCisrCSAqIFJO RFVQKGRhdGFfbGVuKSwgaS5lLiB0aGUgZGF0YSBieXRlcyBwbHVzIGFueSBYRFIgYWxpZ25tZW50 CisrCSAqIHBhZGRpbmcuICBBZHZhbmNlIHBhc3QgYm90aCBzbyB0aGUgZGVjb2RlciBpcyBwb3Np dGlvbmVkIGF0CisrCSAqIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBjb21wb3VuZCBvcC4gKi8KKysJ cmV0dXJuIHN0YXJ0ICsgZGF0YWxlbjsKKyB9CisgCisgc3RhdGljIGJvb2wKK0BAIC0xODU1LDcg KzE4NjMsNyBAQAorIAorIAl3aGlsZSAoaWR4IDwgaW92X2NvdW50KSB7CisgCQkvKiBBbm90aGVy IFRSQUlMRVIgYnVmZmVyIHRvIG1hbmFnZSAqLworLQkJdmlvX3R5cGUgdnQgPSB2ZWN0b3JbaWR4 XS52aW9fdHlwZTsKKysJCXZpb190eXBlX3QgdnQgPSB2ZWN0b3JbaWR4XS52aW9fdHlwZTsKKyAK KyAJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsCisgCQkJIkNhbGxpbmcgeGRyX2lvcV91 c2Vfb3JfYWxsb2NhdGUgZm9yIGlkeCAlZCBmb3IgJXMiLAorZGlmZiAtdXIgbnRpcnBjLTcuMi9z cmMveGRyX3JkbWEuYyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1 NmJkMS9zcmMveGRyX3JkbWEuYworLS0tIG50aXJwYy03LjIvc3JjL3hkcl9yZG1hLmMJMjAyNS0w OS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEz ZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMveGRyX3JkbWEuYwkyMDI2LTA1LTE4IDE5OjQw OjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTIxMSwxNyArMjExLDE4IEBACisgCWludCByZXQgPSAw OworIAlpbnQzMl90IHdyaXRlX3dhaXRzID0gYXRvbWljX2RlY19pbnQzMl90KCZjYmMtPndyaXRl X3dhaXRzKTsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUiwKKy0JICAgICIlcygp ICVwWyV1XSBjYmMgJXAgY2JjX3JlZiAlZCB3cml0ZV93YWl0cyAlZFxuIiwKKy0JICAgIF9fZnVu Y19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYywKKy0JICAgIGNiYy0+cmVmY250 LCB3cml0ZV93YWl0cyk7CisgCisgCWlmIChyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmxhZ3Mg JiBTVkNfWFBSVF9GTEFHX0RFU1RST1lFRCkgeworLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFH X0VSUk9SLCAiICVzIHJkbWFfeHBydCAlcCBjYmMgJXAgIgorKwkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX1hEUl9SRE1BLCAiICVzIHJkbWFfeHBydCAlcCBjYmMgJXAgIgorIAkJICAgICJjYmNf cmVmICVkIHdyaXRlX3dhaXRzICVkIGFscmVhZHkgZGVzdHJveWVkIiwKKyAJCSAgICBfX2Z1bmNf XywgcmRtYV94cHJ0LCBjYmMsIGNiYy0+cmVmY250LCB3cml0ZV93YWl0cyk7CisgCisgCQlyZXQg PSAgLTE7CisrCX0gZWxzZSB7CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLAorKwkJ CSIlcygpICVwWyV1XSBjYmMgJXAgY2JjX3JlZiAlZCB3cml0ZV93YWl0cyAlZFxuIiwKKysJCQlf X2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMsCisrCQkJY2JjLT5yZWZj bnQsIHdyaXRlX3dhaXRzKTsKKyAJfQorIAorIAljYmNfcmVsZWFzZV9pdChjYmMpOworQEAgLTIz NSwxNyArMjM2LDE4IEBACisgCWludCByZXQgPSAwOworIAlpbnQgd3JpdGVfd2FpdHMgPSBhdG9t aWNfZGVjX2ludDMyX3QoJmNiYy0+d3JpdGVfd2FpdHMpOworIAorLQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVJST1IsCistCSAgICAiJXMoKSAlcFsldV0gY2JjICVwIHJlZnMgJWQgd3JpdGVf d2FpdHMgJWRcbiIsCistCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRl LCBjYmMsCistCSAgICBjYmMtPnJlZmNudCwgd3JpdGVfd2FpdHMpOworIAorIAlpZiAocmRtYV94 cHJ0LT5zbV9kci54cHJ0LnhwX2ZsYWdzICYgU1ZDX1hQUlRfRkxBR19ERVNUUk9ZRUQpIHsKKy0J CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVw ICIKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwgIiAlcyByZG1hX3hwcnQg JXAgY2JjICVwICIKKyAJCSAgICAiY2JjX3JlZiAlZCB3cml0ZV93YWl0cyAlZCBhbHJlYWR5IGRl c3Ryb3llZCIsCisgCQkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgY2JjLCBjYmMtPnJlZmNudCwg d3JpdGVfd2FpdHMpOworIAorIAkJcmV0ID0gLTE7CisrCX0gZWxzZSB7CisrCQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJIiVzKCkgJXBbJXVdIGNiYyAlcCByZWZzICVkIHdy aXRlX3dhaXRzICVkXG4iLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3Rh dGUsIGNiYywKKysJCQljYmMtPnJlZmNudCwgd3JpdGVfd2FpdHMpOworIAl9CisgCisgCWNiY19y ZWxlYXNlX2l0KGNiYyk7CitAQCAtMjYwLDE1ICsyNjIsMTUgQEAKKyB7CisgCWludCByZXQgPSAw OworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLAorLQkJIiVzKCkgJXBbJXVdIGNi YyAlcFxuIiwKKy0JCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYyk7 CistCisgCWlmIChyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmxhZ3MgJiBTVkNfWFBSVF9GTEFH X0RFU1RST1lFRCkgeworLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiICVzIHJk bWFfeHBydCAlcCBjYmMgJXAgIgorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1B LCAiICVzIHJkbWFfeHBydCAlcCBjYmMgJXAgIgorIAkJCSJhbHJlYWR5IGRlc3Ryb3llZCIsIF9f ZnVuY19fLCByZG1hX3hwcnQsIGNiYyk7CisgCisgCQlyZXQgPSAtMTsKKysJfSBlbHNlIHsKKysJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsCisrCQkJIiVzKCkgJXBbJXVdIGNiYyAlcFxu IiwKKysJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMpOworIAl9 CisgCisgCXhkcl9yZG1hX2NhbGxiYWNrX3NpZ25hbChjYmMsIHJkbWFfeHBydCk7CitAQCAtMjgz LDE1ICsyODUsMTYgQEAKKyB7CisgCWludCByZXQgPSAwOworIAorLQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVJST1IsCistCQkiJXMoKSAlcFsldV0gY2JjICVwXG4iLAorLQkJX19mdW5jX18s IHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgY2JjKTsKKy0KKyAJaWYgKHJkbWFfeHBydC0+ c21fZHIueHBydC54cF9mbGFncyAmIFNWQ19YUFJUX0ZMQUdfREVTVFJPWUVEKSB7CistCQlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisr CQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsICIgJXMgcmRtYV94cHJ0ICVwIGNi YyAlcCAiCisgCQkJImFscmVhZHkgZGVzdHJveWVkIiwgX19mdW5jX18sIHJkbWFfeHBydCwgY2Jj KTsKKyAKKyAJCXJldCA9IC0xOworKwl9IGVsc2UgeworKwkJX193YXJueChUSVJQQ19ERUJVR19G TEFHX0VSUk9SLAorKwkJCSIlcygpICVwWyV1XSBjYmMgJXBcbiIsCisrCQkJX19mdW5jX18sIHJk bWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgY2JjKTsKKysKKyAJfQorIAorIAl4ZHJfcmRtYV9j YWxsYmFja19zaWduYWwoY2JjLCByZG1hX3hwcnQpOworQEAgLTMwOCwxNSArMzExLDE2IEBACisg eworIAlpbnQgcmV0ID0gMDsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAor LQkJIkVycm9yIGluIHJlY3YgY2FsbGJhY2sgJXMoKSAlcFsldV0gY2JjICVwXG4iLAorLQkJX19m dW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgY2JjKTsKKy0KKyAJaWYgKHJkbWFf eHBydC0+c21fZHIueHBydC54cF9mbGFncyAmIFNWQ19YUFJUX0ZMQUdfREVTVFJPWUVEKSB7Cist CQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAl cCAiCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsICIgJXMgcmRtYV94cHJ0 ICVwIGNiYyAlcCAiCisgCQkJImFscmVhZHkgZGVzdHJveWVkIiwgX19mdW5jX18sIHJkbWFfeHBy dCwgY2JjKTsKKyAKKyAJCXJldCA9IC0xOworKwl9IGVsc2UgeworKwkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VSUk9SLAorKwkJCSJFcnJvciBpbiByZWN2IGNhbGxiYWNrICVzKCkgJXBbJXVd IGNiYyAlcFxuIiwKKysJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBj YmMpOworKworIAl9CisgCisgCWNiYy0+Y2JjX2ZsYWdzID0gQ0JDX0ZMQUdfUkVMRUFTRTsKK0BA IC0zNTUsNiArMzU5LDMzIEBACisgCisgCWF0b21pY19kZWNfdWludDMyX3QoJnJkbWFfeHBydC0+ YWN0aXZlX3JlcXVlc3RzKTsKKyAKKysJaWYgKChlbnVtIHhwcnRfc3RhdClyZXQgPT0gWFBSVF9T VVNQRU5EKSB7CisrCQkvKgorKwkJICogVGhlIHJlcXVlc3Qgd2FzIHN1c3BlbmRlZCBtaWQtY29t cG91bmQKKysJCSAqIGUuZy4gUU9TIEJXIHRocm90dGxlLCBhc3luYyBJTyBiYWNrZW5kLgorKwkJ ICogTm8gUkRNQSBXUklURS9TRU5EIG9wZXJhdGlvbnMgaGF2ZSBiZWVuIHBvc3RlZAorKwkJICog eWV0LCBzbyBjYmMtPnJlZmNudCBpcyBzdGlsbCAxIChzZW50aW5lbCBvbmx5KS4gIFJlbGVhc2lu ZworKwkJICogdGhlIHNlbnRpbmVsIGhlcmUgd291bGQgZHJvcCByZWZjbnQgdG8gMCwgd2hpY2gg dHJpZ2dlcnMKKysJCSAqIHhkcl9yZG1hX2lvcV9yZWxlYXNlKCZjYmMtPmRhdGFxKSwgemVyb2lu ZyBkYXRhcS5xY291bnQgYW5kCisrCQkgKiByZXR1cm5pbmcgZGF0YV9jaHVua191diB0byB0aGUg cG9vbCB3aGlsZSB0aGUgc3VzcGVuZGVkCisrCQkgKiByZXF1ZXN0IHN0aWxsIGhvbGRzIGEgcG9p bnRlciB0byBpdC4gIFRoZSBzdWJzZXF1ZW50CisrCQkgKiB4ZHJfcmRtYV9zdmNfZmx1c2hvdXQg Y2FsbCB3b3VsZCB0aGVuIGhpdDoKKysJCSAqICAgYXNzZXJ0KGRhdGFxLnFjb3VudCA+IDApICBm aXJlcyB3aXRoIHFjb3VudCA9PSAwCisrCQkgKgorKwkJICogRml4OiBtYXJrIEZMQUdfUkVMRUFT RSAoc28gY2xlYW51cCBmaXJlcyB3aGVuIHJlZnMgZXZlbnR1YWxseQorKwkJICogcmVhY2ggMCkg YnV0IGRlZmVyIHRoZSBzZW50aW5lbCBjYmNfcmVsZWFzZV9pdCB0bworKwkJICogeGRyX3JkbWFf c3ZjX2ZsdXNob3V0LCB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgUkRNQSBvcGVyYXRpb25zCisrCQkg KiBhcmUgcG9zdGVkIG9uIHRoZSByZXN1bWUgcGF0aCBhbmQgdGhlaXIgcmVmcyBrZWVwIHRoZSBj YmMKKysJCSAqIGFsaXZlLgorKwkJICovCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERS LAorKwkJCSIlcyByZG1hX3hwcnQgJXAgY2JjICVwIHN1c3BlbmRlZCwgZGVmZXJyaW5nICIKKysJ CQkic2VudGluZWwgcmVsZWFzZSB0byBmbHVzaG91dCIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBy dCwgY2JjKTsKKysJCWNiYy0+Y2JjX2ZsYWdzID0gQ0JDX0ZMQUdfUkVMRUFTRSB8IENCQ19GTEFH X1NFTlRJTkVMX1BFTkRJTkc7CisrCQlyZXR1cm4gcmV0OworKwl9CisrCisgZXJyOgorIAljYmMt PmNiY19mbGFncyA9IENCQ19GTEFHX1JFTEVBU0U7CisgCitAQCAtNDYxLDYgKzQ5MiwzNSBAQAor IAlyZXR1cm4gMDsKKyB9CisgCisrLyogUG9zdCBzeW5jaHJvbm91cyBSRE1BIHJlY2VpdmUgb3Bl cmF0aW9uICovCisrc3RhdGljIGludAorK3hkcl9yZG1hX3Bvc3RfcmVjdl9zeW5jKFJETUFYUFJU ICpyZG1hX3hwcnQsIHN0cnVjdCBycGNfcmRtYV9jYmMgKmNiYywgaW50IHNnZSkKKyt7CisrCWNi Yy0+cG9zaXRpdmVfY2IgPSB4ZHJfcmRtYV93cmFwX2NhbGxiYWNrOworKwljYmMtPm5lZ2F0aXZl X2NiID0geGRyX3JkbWFfZGVzdHJveV9jYWxsYmFja19yZWN2OworKwljYmMtPmNhbGxiYWNrX2Fy ZyA9IE5VTEw7CisrCWNiYy0+Y2FsbF9pbmxpbmUgPSAxOworKworKwlTVkNfUkVGKCZyZG1hX3hw cnQtPnNtX2RyLnhwcnQsIFNWQ19SRUZfRkxBR19OT05FKTsKKysKKysJaW50IHJldCA9IHhkcl9y ZG1hX3Bvc3RfcmVjdl9uKHJkbWFfeHBydCwgY2JjLCBzZ2UpOworKworKwlpZiAocmV0KSB7Cisr CQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlcyBwb3N0X3JlY3YgZmFpbGVkIHJk bWFfeHBydCAlcCAiCisrCQkJImNiYyAlcCBlcnJvciAlZCIsIF9fZnVuY19fLCByZG1hX3hwcnQs IGNiYywgcmV0KTsKKysKKysJCWNiYy0+Y2JjX2ZsYWdzID0gQ0JDX0ZMQUdfUkVMRUFTRTsKKysK KysJCS8qIFJlbGVhc2Ugc2VudGluZWwgcmVmICovCisrCQljYmNfcmVsZWFzZV9pdChjYmMpOwor KworKwkJU1ZDX0RFU1RST1koJnJkbWFfeHBydC0+c21fZHIueHBydCk7CisrCX0KKysJcnBjX3Jk bWFfY3FfZXZlbnRfaGFuZGxlcihyZG1hX3hwcnQsIDEpOworKworKwlyZXR1cm4gcmV0OworK30K KysKKyAvKioKKyAgKiB4ZHJfcmRtYV9wb3N0X3JlY3ZfY2I6IFBvc3QgcmVjZWl2ZSBjaHVuayhz KSB3aXRoIHN0YW5kYXJkIGNhbGxiYWNrcy4KKyAgKgorQEAgLTY1NSw2ICs3MTUsMzkgQEAKKyAK KyB9CisgCisrLyogUG9zdCBzeW5jaHJvbm91cyBSRE1BIHNlbmQgb3BlcmF0aW9uIHdpdGggY2Fs bGJhY2sgKi8KKytzdGF0aWMgaW5saW5lIGludAorK3hkcl9yZG1hX3N5bmNfc2VuZF9jYihSRE1B WFBSVCAqcmRtYV94cHJ0LCBzdHJ1Y3QgcnBjX3JkbWFfY2JjICpjYmMsIGludCBzZ2UpCisrewor KwlpbnQgcmV0OworKworKwljYmMtPnBvc2l0aXZlX2NiID0geGRyX3JkbWFfcmVzcG9uZF9jYWxs YmFja19zZW5kOworKwljYmMtPm5lZ2F0aXZlX2NiID0geGRyX3JkbWFfZGVzdHJveV9jYWxsYmFj a19zZW5kOworKwljYmMtPmNhbGxiYWNrX2FyZyA9IE5VTEw7CisrCWNiYy0+Y2FsbF9pbmxpbmUg PSAxOworKwlpbnQzMl90IHdyaXRlX3dhaXRzID0gYXRvbWljX2luY19pbnQzMl90KCZjYmMtPndy aXRlX3dhaXRzKTsKKysKKysJY2JjX3JlZl9pdChjYmMsIHJkbWFfeHBydCk7CisrCisrCXJldCA9 IHhkcl9yZG1hX3Bvc3Rfc2VuZF9uKHJkbWFfeHBydCwgY2JjLCBzZ2UsIE5VTEwsIElCVl9XUl9T RU5EKTsKKysKKysJaWYgKHJldCkgeworKwkJd3JpdGVfd2FpdHMgPSBhdG9taWNfZGVjX2ludDMy X3QoJmNiYy0+d3JpdGVfd2FpdHMpOworKworKwkJY2JjX3JlbGVhc2VfaXQoY2JjKTsKKysKKysJ CVNWQ19ERVNUUk9ZKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOworKworKwkJLyogQXNzdW1pbmcg dGhlcmUgd29uJ3QgYmUgY2FsbGJhY2sgKi8KKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19F UlJPUiwgIiVzOiBmYWlsZWQgcmV0ICVkIGVyciAlZCIKKysJCSAgICAiIHJkbWFfeHBydCAlcCBj YmMgJXAgY2JjX3JlZiAlZCB3cml0ZV93YWl0cyAlZCIsCisrCQkgICAgX19mdW5jX18sIHJldCwg ZXJybm8sIHJkbWFfeHBydCwgY2JjLCBjYmMtPnJlZmNudCwKKysJCSAgICB3cml0ZV93YWl0cyk7 CisrCX0KKysJcnBjX3JkbWFfY3FfZXZlbnRfaGFuZGxlcihyZG1hX3hwcnQsIDIpOworKworKwly ZXR1cm4gcmV0OworK30KKyAvKioKKyAgKiBQb3N0IGEgd29yayBjaHVuayB3aXRoIHN0YW5kYXJk IGNhbGxiYWNrcy4KKyAgKgorQEAgLTg4Nyw4ICs5ODAsMTAgQEAKKyAKKyAvKiBwb3N0IHJlY3Yg YnVmZmVycyAqLworIHZvaWQKKy14ZHJfcmRtYV9jYWxscShSRE1BWFBSVCAqcmRtYV94cHJ0KQor K3hkcl9yZG1hX2NhbGxxKFJETUFYUFJUICpyZG1hX3hwcnQsIGludCBzeW5jKQorIHsKKysJaW50 IHJjID0gMDsKKysKKyAJLyogR2V0IGNvbnRleHQgYnVmIGZyb20gY2JxaCBhbmQgYWRkIHRvIHNt X2RyCisgCSAqIHJwY19yZG1hX2FsbG9jYXRlLT54ZHJfaW9xX3NldHVwKCZyZG1hX3hwcnQtPnNt X2RyLmlvcSk7CisgCSAqIENoZWNrIGlmIHdlIGhhdmUgY3JlZGl0cyBhdmFpbGFibGVkIGZyb20g Y2JxaAorQEAgLTkyNyw3ICsxMDIyLDcgQEAKKyAKKyAJcHRocmVhZF9tdXRleF9sb2NrKCZyZG1h X3hwcnQtPmNiY2xpc3QucW11dGV4KTsKKyAKKy0JY2JjLT5jYWxsX2lubGluZSA9IDA7CisrCWNi Yy0+Y2FsbF9pbmxpbmUgPSBzeW5jOworIAljYmMtPmRhdGFfY2h1bmtfdXYgPSBOVUxMOworIAlj YmMtPnJlZmNudCA9IDE7IC8vIFNlbnRpbmVsIHJlZgorIAljYmMtPmNiY19mbGFncyA9IENCQ19G TEFHX05PTkU7CitAQCAtOTQxLDggKzEwMzYsMTMgQEAKKyAJcmRtYV94cHJ0LT5jYmNsaXN0LnFj b3VudCsrOworIAlwdGhyZWFkX211dGV4X3VubG9jaygmcmRtYV94cHJ0LT5jYmNsaXN0LnFtdXRl eCk7CisgCisrCWlmIChzeW5jKQorKwkJcmMgPSB4ZHJfcmRtYV9wb3N0X3JlY3Zfc3luYyhyZG1h X3hwcnQsIGNiYywgMSk7CisrCWVsc2UKKysJCXJjID0geGRyX3JkbWFfcG9zdF9yZWN2X2NiKHJk bWFfeHBydCwgY2JjLCAxKTsKKysKKyAJLyogcmRtYV94cHJ0IHJlZiBpcyB0YWtlbiBieSB4ZHJf cmRtYV9wb3N0X3JlY3ZfY2IgKi8KKy0JaWYgKHhkcl9yZG1hX3Bvc3RfcmVjdl9jYihyZG1hX3hw cnQsIGNiYywgMSkpIHsKKysJaWYgKHJjKSB7CisgCQkgX193YXJueChUSVJQQ19ERUJVR19GTEFH X0VSUk9SLCAiJXM6IHJlY3YgZmFpbGVkICVwIiwKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0KTsK KyAJfQorQEAgLTk3Myw3ICsxMDczLDcgQEAKKyAKKyAJCWRhdGEtPnJkbWFfdXYgPSAxOworIAor LQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorKwkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX1hEUl9SRE1BLAorIAkJCSIlcygpIHJlY3ZidWYgYXQgJXAgYmFzZSAlcCIsCisg CQkJX19mdW5jX18sIGRhdGEsIGJfYWRkcik7CisgCitAQCAtMTA0Nyw3ICsxMTQ3LDcgQEAKKyAJ cmRtYV94cHJ0LT5pb19idWZzX2NvdW50Kys7CisgCXJkbWFfeHBydC0+aW9fYnVmcy5xY291bnQr KzsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfWERSX1JETUEsCisgCQkiJXMoKSBpbyBidWZzIGNvdW50ICV1IGlvX2J1ZiAl cCByZG1hX3hwcnQgJXAiLAorIAkJX19mdW5jX18sIHJkbWFfeHBydC0+aW9fYnVmc19jb3VudCwg aW9fYnVmLCByZG1hX3hwcnQpOworIAorQEAgLTEwNzEsNyArMTE3MSw3IEBACisgCWlmIChtcikg eworIAkJYXRvbWljX2FkZF91aW50NjRfdCgmdG90YWxfcmRtYV9yZWdfbWVtLCBidWZmZXJfdG90 YWwpOworIAorLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULCAiJXM6IHRvdGFsX3Jk bWFfcmVnX21lbSAlbGx1IHJlZ2lzdGVyZWQsICIKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxB R19YRFJfUkRNQSwgIiVzOiB0b3RhbF9yZG1hX3JlZ19tZW0gJWxsdSByZWdpc3RlcmVkLCAiCisg CQkgICAgInJlZ2lzdGVyaW5nIGZvciB4cHJ0ICVwIG1yICVwIGJ1ZmZlcl9hbGlnbmVkICVwIGJ1 ZmZlcl90b3RhbCAldSIsCisgCQkgICAgX19mdW5jX18sIGF0b21pY19mZXRjaF91aW50NjRfdCgm dG90YWxfcmRtYV9yZWdfbWVtKSwKKyAJCSAgICByZG1hX3hwcnQsIG1yLCBidWZmZXJfYWxpZ25l ZCwgYnVmZmVyX3RvdGFsKTsKK0BAIC0xMTA0LDcgKzEyMDQsNyBAQAorIAl9IGVsc2UgeworIAkJ YXRvbWljX3N1Yl91aW50NjRfdCgmdG90YWxfcmRtYV9yZWdfbWVtLCBidWZmZXJfdG90YWwpOwor IAorLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULCAiJXM6IHRvdGFsX3JkbWFfcmVn X21lbSAlbGx1IHJlZ2lzdGVyZWQsICIKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJf UkRNQSwgIiVzOiB0b3RhbF9yZG1hX3JlZ19tZW0gJWxsdSByZWdpc3RlcmVkLCAiCisgCQkgICAg InVucmVnaXN0ZXJpbmcgZm9yIHhwcnQgJXAgbXIgJXAgYnVmZmVyX2FsaWduZWQgJXAgYnVmZmVy X3RvdGFsICV1IiwKKyAJCSAgICBfX2Z1bmNfXywgYXRvbWljX2ZldGNoX3VpbnQ2NF90KCZ0b3Rh bF9yZG1hX3JlZ19tZW0pLAorIAkJICAgIHJkbWFfeHBydCwgbXIsIGJ1ZmZlcl9hbGlnbmVkLCBi dWZmZXJfdG90YWwpOworQEAgLTExMjEsNyArMTIyMSw3IEBACisgCXVpbnQzMl90IGJ1ZmZlcl90 b3RhbCA9IHJkbWFfeHBydC0+c21fZHIuc2VuZF9oZHJfc3ogKiBoZHJfcWRlcHRoOworIAlzdHJ1 Y3QgcnBjX2lvX2J1ZnMgKmlvX2J1ZiA9IE5VTEw7CisgCistCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVz KCkgYnVmZmVyX3RvdGFsICVsbHUsIHNlbmRzeiAlbGx1IHNxICVsbHUgcmRtYV94cHJ0ICVwIHBh Z2VzeiAlbGx1IiwKKyAJCV9fZnVuY19fLCBidWZmZXJfdG90YWwsIHJkbWFfeHBydC0+c21fZHIu c2VuZF9oZHJfc3osIGhkcl9xZGVwdGgsCisgCQlyZG1hX3hwcnQsIHJkbWFfeHBydC0+c21fZHIu cGFnZXN6KTsKK0BAIC0xMTMxLDcgKzEyMzEsNyBAQAorIAlhc3NlcnQoYnVmZmVyX2FsaWduZWQp OworIAltZW1zZXQoYnVmZmVyX2FsaWduZWQsIDAsIGJ1ZmZlcl90b3RhbCk7CisgCistCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hE Ul9SRE1BLAorIAkJIiVzKCkgYnVmZmVyX2FsaWduZWQgYXQgJXAgcHJvdGVjdGlvbiBkb21haW4g JXAgcmRtYV94cHJ0ICVwIiwKKyAJCV9fZnVuY19fLCBidWZmZXJfYWxpZ25lZCwgcmRtYV94cHJ0 LT5wZC0+cGQsIHJkbWFfeHBydCk7CisgCitAQCAtMTE1OCw3ICsxMjU4LDcgQEAKKyAJdWludDMy X3QgYnVmZmVyX3RvdGFsID0gcmRtYV94cHJ0LT5zbV9kci5zZW5kc3ogKiBkYXRhX3FkZXB0aDsK KyAJc3RydWN0IHJwY19pb19idWZzICppb19idWYgPSBOVUxMOworIAorLQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwK KyAJCSIlcygpIGJ1ZmZlcl90b3RhbCAlbGx1LCBzZW5kc3ogJWxsdSBzcSAlbGx1IHJkbWFfeHBy dCAlcCBwYWdlc3ogJWxsdSIsCisgCQlfX2Z1bmNfXywgYnVmZmVyX3RvdGFsLCByZG1hX3hwcnQt PnNtX2RyLnNlbmRzeiwgZGF0YV9xZGVwdGgsCisgCQlyZG1hX3hwcnQsIHJkbWFfeHBydC0+c21f ZHIucGFnZXN6KTsKK0BAIC0xMTY4LDcgKzEyNjgsNyBAQAorIAlhc3NlcnQoYnVmZmVyX2FsaWdu ZWQpOworIAltZW1zZXQoYnVmZmVyX2FsaWduZWQsIDAsIGJ1ZmZlcl90b3RhbCk7CisgCistCV9f d2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFH X1hEUl9SRE1BLAorIAkJIiVzKCkgYnVmZmVyX2FsaWduZWQgYXQgJXAgcHJvdGVjdGlvbiBkb21h aW4gJXAgcmRtYV94cHJ0ICVwIiwKKyAJCV9fZnVuY19fLCBidWZmZXJfYWxpZ25lZCwgcmRtYV94 cHJ0LT5wZC0+cGQsIHJkbWFfeHBydCk7CisgCitAQCAtMTE5NSw3ICsxMjk1LDcgQEAKKyAJdWlu dDMyX3QgYnVmZmVyX3RvdGFsID0gcmRtYV94cHJ0LT5zbV9kci5yZWN2X2hkcl9zeiAqIGhkcl9x ZGVwdGg7CisgCXN0cnVjdCBycGNfaW9fYnVmcyAqaW9fYnVmID0gTlVMTDsKKyAKKy0JX193YXJu eChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERS X1JETUEsCisgCQkiJXMoKSBidWZmZXJfdG90YWwgJWxsdSwgcmVjdnN6ICVsbHUgcnEgJWxsdSBy ZG1hX3hwcnQgJXAgcGFnZXN6ICVsbHUiLAorIAkJX19mdW5jX18sIGJ1ZmZlcl90b3RhbCwgcmRt YV94cHJ0LT5zbV9kci5yZWN2X2hkcl9zeiwgaGRyX3FkZXB0aCwKKyAJCXJkbWFfeHBydCwgcmRt YV94cHJ0LT5zbV9kci5wYWdlc3opOworQEAgLTEyMDUsNyArMTMwNSw3IEBACisgCWFzc2VydChi dWZmZXJfYWxpZ25lZCk7CisgCW1lbXNldChidWZmZXJfYWxpZ25lZCwgMCwgYnVmZmVyX3RvdGFs KTsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfWERSX1JETUEsCisgCQkiJXMoKSBidWZmZXJfYWxpZ25lZCBhdCAlcCBwcm90 ZWN0aW9uIGRvbWFpbiAlcCByZG1hX3hwcnQgJXAiLAorIAkJX19mdW5jX18sIGJ1ZmZlcl9hbGln bmVkLCByZG1hX3hwcnQtPnBkLT5wZCwgcmRtYV94cHJ0KTsKKyAKK0BAIC0xMjMyLDcgKzEzMzIs NyBAQAorIAl1aW50MzJfdCBidWZmZXJfdG90YWwgPSByZG1hX3hwcnQtPnNtX2RyLnJlY3ZzeiAq IGRhdGFfcWRlcHRoOworIAlzdHJ1Y3QgcnBjX2lvX2J1ZnMgKmlvX2J1ZiA9IE5VTEw7CisgCist CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19G TEFHX1hEUl9SRE1BLAorIAkJIiVzKCkgYnVmZmVyX3RvdGFsICVsbHUsIHJlY3ZzeiAlbGx1IHJx ICVsbHUgcmRtYV94cHJ0ICVwIHBhZ2VzeiAlbGx1IiwKKyAJCV9fZnVuY19fLCBidWZmZXJfdG90 YWwsIHJkbWFfeHBydC0+c21fZHIucmVjdnN6LCBkYXRhX3FkZXB0aCwKKyAJCXJkbWFfeHBydCwg cmRtYV94cHJ0LT5zbV9kci5wYWdlc3opOworQEAgLTEyNDIsNyArMTM0Miw3IEBACisgCWFzc2Vy dChidWZmZXJfYWxpZ25lZCk7CisgCW1lbXNldChidWZmZXJfYWxpZ25lZCwgMCwgYnVmZmVyX3Rv dGFsKTsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCisgCQkiJXMoKSBidWZmZXJfYWxpZ25lZCBhdCAlcCBw cm90ZWN0aW9uIGRvbWFpbiAlcCByZG1hX3hwcnQgJXAiLAorIAkJX19mdW5jX18sIGJ1ZmZlcl9h bGlnbmVkLCByZG1hX3hwcnQtPnBkLT5wZCwgcmRtYV94cHJ0KTsKKyAKK0BAIC0xMjk3LDcgKzEz OTcsNyBAQAorIAorIAlyZG1hX3hwcnQtPmJ1ZmZlcl90b3RhbCA9IHRpcnBjX2J1ZmZfdG90YWwg KyB0b3RhbF9oZHJfc3o7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkgYnVmZmVyX3RvdGFs ICVsbHUoJWxsdSArICVsbHUpLCByZG1hX3hwcnQgJXAgcGFnZXN6ICVsbHUgIgorIAkJInJlY3Zz eiBkYXRhICVsbHUgaGRyICVsbHUgcnEgJWxsdSAiCisgCQkic2VuZHN6IGRhdGEgJWxsdSBoZHIg JWxsdSBzcSAlbGx1IiwKK0BAIC0xMzExLDcgKzE0MTEsNyBAQAorIAlhc3NlcnQocmRtYV94cHJ0 LT5idWZmZXJfYWxpZ25lZCk7CisgCW1lbXNldChyZG1hX3hwcnQtPmJ1ZmZlcl9hbGlnbmVkLCAw LCByZG1hX3hwcnQtPmJ1ZmZlcl90b3RhbCk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkg YnVmZmVyX2FsaWduZWQgYXQgJXAgcHJvdGVjdGlvbiBkb21haW4gJXAgcmRtYV94cHJ0ICVwIiwK KyAJCV9fZnVuY19fLCByZG1hX3hwcnQtPmJ1ZmZlcl9hbGlnbmVkLCByZG1hX3hwcnQtPnBkLT5w ZCwgcmRtYV94cHJ0KTsKKyAKK0BAIC0xMzcwLDE4ICsxNDcwLDE4IEBACisgCSAqIHdlIGNvdWxk IGhhdmUgbWF4IGNiY3MgcmVxdWlyZWQgd2lsbCBiZSBjYWxscV9zaXplICogMiAqLworIAlpbnQg Y2FsbHFfc2l6ZSA9IE1BWF9SRUNWX09VVFNUQU5ESU5HKHJkbWFfeHBydC0+eGEpOworIAorLQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsICJjYWxscSBzaXplICVkIiwgY2FsbHFf c2l6ZSk7CisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwgImNhbGxxIHNpemUg JWQiLCBjYWxscV9zaXplKTsKKyAKKyAJcG9vbHFfaGVhZF9zZXR1cCgmcmRtYV94cHJ0LT5jYmNs aXN0KTsKKyAKKyAJd2hpbGUgKHJkbWFfeHBydC0+c21fZHIuaW9xLmlvcV91di51dnFoLnFjb3Vu dCA8IGNhbGxxX3NpemUpIHsKKyAJCS8qIFBvc3QgY2FsbHFfc2l6ZSBidWZmZXJzIHRvIGRvIGZp cnN0IHJlY3ZzCisgCQkgKiBjYWxsYmFjayB3aWxsIGJlIGRvbmUgb24gcmVjdiB3aGljaCBzaG91 bGQgcmVhcmFtIGFnYWluICovCistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEs CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCisgCQkJIiVzKCkgcWNvdW50 ICVkIGNhbGxxIHNpemUgJWQiLAorIAkJCV9fZnVuY19fLCByZG1hX3hwcnQtPnNtX2RyLmlvcS5p b3FfdXYudXZxaC5xY291bnQsCisgCQkJY2FsbHFfc2l6ZSk7CistCQl4ZHJfcmRtYV9jYWxscShy ZG1hX3hwcnQpOworKwkJeGRyX3JkbWFfY2FsbHEocmRtYV94cHJ0LCAwKTsKKyAJfQorIAorIAly ZXR1cm4gMDsKK0BAIC0xNTA1LDcgKzE2MDUsNyBAQAorIAlhc3NlcnQoY2JjLT53cml0ZV93YWl0 cyA9PSAwKTsKKyAKKyAJLyogTWFpbnRhaW4gbWF4X291dHN0YW5kaW5nICovCistCXhkcl9yZG1h X2NhbGxxKHJkbWFfeHBydCk7CisrCXhkcl9yZG1hX2NhbGxxKHJkbWFfeHBydCwgMCk7CisgCisg CS8qIEdldCBpbmJ1ZiBmcm9tIHJlY3ZxICovCisgCWNiYy0+Y2FsbF91diA9IElPUV8oVEFJTFFf RklSU1QoJmNiYy0+cmVjdnEuaW9xX3V2LnV2cWgucWgpKTsKK0BAIC0xODczLDE1ICsxOTczLDE2 IEBACisgCQlhbGxvY2F0ZV9oZWFkZXIgPSAxOworIAorIAkJaWYgKGFsbG9jYXRlX2hlYWRlcikg eworLQkJCWhhdmUgPSB4ZHJfcmRtYV9pb3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZyZG1hX3hw cnQtPm91dGJ1ZnNfaGRyLnV2cWgsCistCQkJCQkic3JlcGx5IGJ1ZmZlciIsIDEsIElPUV9GTEFH X05PTkUpOworLQorKwkJCS8qIFdpdGggQUNMIHN1cHBvcnQgd2UgY291bGQgbmVlZCBidWZmZXJz ID44ayAqLworKwkJCWhhdmUgPSB4ZHJfcmRtYV9pb3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZy ZG1hX3hwcnQtPm91dGJ1ZnNfZGF0YS51dnFoLAorKwkJCQkic3JlcGx5IGJ1ZmZlciIsIDEsIElP UV9GTEFHX05PTkUpOworIAorIAkJCS8qIGJ1ZmZlciBpcyBsaW1pdGVkIHNpemUgKi8KKyAJCQlJ T1FfKGhhdmUpLT52LnZpb19oZWFkID0KKyAJCQlJT1FfKGhhdmUpLT52LnZpb190YWlsID0gSU9R XyhoYXZlKS0+di52aW9fYmFzZTsKKyAJCQlJT1FfKGhhdmUpLT52LnZpb193cmFwID0gKGNoYXIg KilJT1FfKGhhdmUpLT52LnZpb19iYXNlCistCQkJCQkrIHJkbWFfeHBydC0+c21fZHIuc2VuZF9o ZHJfc3o7CisrCQkJCSsgcmRtYV94cHJ0LT5zbV9kci5zZW5kc3o7CisrCisgCQkJLyogbWFrZSBy b29tIGF0IGhlYWQgZm9yIFJETUEgaGVhZGVyICovCisgCQkJeGRyX2lvcV9yZXNldCgmY2JjLT5z ZW5kcSwgMCk7CisgCQl9CitAQCAtMTkwMywxNiArMjAwNCwzNSBAQAorIAkJCQlJT1FfKGhhdmUp LT52LnZpb193cmFwID0gKGNoYXIgKilJT1FfKGhhdmUpLT52LnZpb19iYXNlCisgCQkJCQkrIHJk bWFfeHBydC0+c21fZHIuc2VuZF9oZHJfc3o7CisgCQkJfSBlbHNlIHsKKy0JCQkJLyogRm9yIHJl cGx5X2xpc3Qgd2UgY29weSBmcm9tIHByb3RvY29sIGJ1ZmZlciBzbyBhbGxvY2F0ZSBiaWdnZXIK Ky0JCQkJICogY2h1bmsgKi8KKy0JCQkJYXNzZXJ0KGwgPD0gcmRtYV94cHJ0LT5zbV9kci5zZW5k c3opOworKwkJCQkvKiBGb3IgcmVwbHlfbGlzdCB3ZSBjb3B5IGZyb20gcHJvdG9jb2wgYnVmZmVy IHNvIGFsbG9jYXRlCisrCQkJCSAqIGJpZ2dlciBjaHVuay4KKysJCQkJICoKKysJCQkJICogVGhl IGNsaWVudCdzIHJlcGx5IGNodW5rIGxlbmd0aCAobCkgY2FuIGxlZ2FsbHkgZXhjZWVkCisrCQkJ CSAqIHNlbmRzejogdGhlIGNsaWVudCBwcmUtcmVnaXN0ZXJzIGEgYnVmZmVyIG9mIG1heGNvdW50 ICsKKysJCQkJICogTkZTIENPTVBPVU5EIG92ZXJoZWFkIChhIGZldyBodW5kcmVkIGJ5dGVzKSwg YW5kIHdoZW4KKysJCQkJICogbWF4Y291bnQgPT0gc2VuZHN6ICg9IFJETUFfREFUQV9DSFVOS19T WiA9IDEgTWlCKSB0aGUKKysJCQkJICogdG90YWwgbCA+IHNlbmRzei4KKysJCQkJICoKKysJCQkJ ICogdmlvX3dyYXAgaXMgc2V0IHRvIG1pbihsLCBzZW5kc3opOgorKwkJCQkgKiBsIDwgc2VuZHN6 OiBob25vdXIgdGhlIGNsaWVudCdzIGFjdHVhbCBjaHVuayBjYXBhY2l0eS4KKysJCQkJICogbCA+ PSBzZW5kc3o6IGNhcCBhdCB0aGUgcGh5c2ljYWwgYnVmZmVyIHNpemUgdG8gcHJldmVudAorKwkJ CQkgKiBhIHNlcnZlci1zaWRlIGJ1ZmZlciBvdmVyZmxvdyAodGhlIG92ZXJmbG93IGRhdGEgaXMK KysJCQkJICogb25seSBORlMgaGVhZGVyIGJ5dGVzLCBmYXIgbGVzcyB0aGFuIHNlbmRzeikuCisr CQkJCSAqCisrCQkJCSAqIFRoZSBSRE1BIFdSSVRFIHNpemUgaXMgZGVyaXZlZCBmcm9tIGlvcXV2 X2xlbmd0aCgpID0KKysJCQkJICogdmlvX3RhaWwgLSB2aW9faGVhZCAoYWN0dWFsIGJ5dGVzIHdy aXR0ZW4gYnkgWERSKSwgbmV2ZXIKKysJCQkJICogZnJvbSBsLCBzbyB0aGUgdHJhbnNmZXIgc3Rh eXMgd2l0aGluIGJvdGggdGhlIHNlcnZlciBidWZmZXIKKysJCQkJICogYW5kIHRoZSBjbGllbnQn cyBwcmUtcmVnaXN0ZXJlZCByZWdpb24uCisrCQkJCSAqLworIAkJCQloYXZlID0geGRyX3JkbWFf aW9xX3V2X2ZldGNoKCZjYmMtPnNlbmRxLCAmcmRtYV94cHJ0LT5vdXRidWZzX2RhdGEudXZxaCwK KyAJCQkJICAgICJzcmVwbHkgYnVmZmVyIiwgMSwgSU9RX0ZMQUdfTk9ORSk7CisgCistCQkJCS8q IGJ1ZmZlciBpcyBsaW1pdGVkIHNpemUgKi8KKysJCQkJLyogYnVmZmVyIGlzIGxpbWl0ZWQgdG8g bWluKGwsIHNlbmRzeikgKi8KKyAJCQkJSU9RXyhoYXZlKS0+di52aW9faGVhZCA9CisgCQkJCUlP UV8oaGF2ZSktPnYudmlvX3RhaWwgPSBJT1FfKGhhdmUpLT52LnZpb19iYXNlOworLQkJCQlJT1Ff KGhhdmUpLT52LnZpb193cmFwID0gKGNoYXIgKilJT1FfKGhhdmUpLT52LnZpb19iYXNlICsgbDsK KysJCQkJSU9RXyhoYXZlKS0+di52aW9fd3JhcCA9IChjaGFyICopSU9RXyhoYXZlKS0+di52aW9f YmFzZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAobCA8IHJkbWFfeHBy dC0+c21fZHIuc2VuZHN6CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ IGwgOiByZG1hX3hwcnQtPnNtX2RyLnNlbmRzeik7CisgCQkJfQorIAkJfQorIAkJaWYgKCFhbGxv Y2F0ZV9oZWFkZXIpCitAQCAtMTkzOCwyMSArMjA1OCwyMiBAQAorIGJvb2wKKyB4ZHJfcmRtYV9j bG50X2ZsdXNob3V0KHN0cnVjdCBycGNfcmRtYV9jYmMgKmNiYykKKyB7CistLyogRklYTUU6IGRl Y2lkZSBob3cgbWFueSBidWZmZXJzIHdlIHVzZSBpbiBhcmd1bWVudCEhISEhISAqLworLSNkZWZp bmUgbnVtX2NodW5rcyAocmRtYV94cHJ0LT54YS0+Y3JlZGl0cyAtIDEpCistCistCVJETUFYUFJU ICpyZG1hX3hwcnQgPSB4X3JkbWFfeHBydChjYmMtPnJlY3ZxLnhkcnMpOworKwlSRE1BWFBSVCAq cmRtYV94cHJ0ID0geF9yZG1hX3hwcnQoY2JjLT5zZW5kcS54ZHJzKTsKKyAJc3RydWN0IHJwY19t c2cgKm1zZzsKKyAJc3RydWN0IHJkbWFfbXNnICpybXNnOworLQlzdHJ1Y3QgeGRyX3dyaXRlX2xp c3QgKndfYXJyYXk7CisgCXN0cnVjdCB4ZHJfaW9xX3V2ICpoZWFkX3V2OworIAlzdHJ1Y3QgeGRy X2lvcV91diAqaG9sZF91djsKKy0Jc3RydWN0IHBvb2xxX2VudHJ5ICpoYXZlOworLQlpbnQgaSA9 IDA7CisgCisrCS8qIGhvbGQgTkZTIHJlcXVlc3QgKi8KKyAJaG9sZF91diA9IElPUV8oVEFJTFFf RklSU1QoJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucWgpKTsKKysKKysJcHRocmVhZF9tdXRleF9s b2NrKCZjYmMtPnNlbmRxLmlvcV91di51dnFoLnFtdXRleCk7CisrCVRBSUxRX1JFTU9WRSgmY2Jj LT5zZW5kcS5pb3FfdXYudXZxaC5xaCwgJmhvbGRfdXYtPnV2cSwgcSk7CisrCShjYmMtPnNlbmRx LmlvcV91di51dnFoLnFjb3VudCktLTsKKysJcHRocmVhZF9tdXRleF91bmxvY2soJmNiYy0+c2Vu ZHEuaW9xX3V2LnV2cWgucW11dGV4KTsKKysKKyAJbXNnID0gKHN0cnVjdCBycGNfbXNnICopKGhv bGRfdXYtPnYudmlvX2hlYWQpOworLQl4ZHJfdGFpbF91cGRhdGUoY2JjLT5yZWN2cS54ZHJzKTsK KysJeGRyX3RhaWxfdXBkYXRlKGNiYy0+c2VuZHEueGRycyk7CisgCisgCXN3aXRjaChudG9obCht c2ctPnJtX2RpcmVjdGlvbikpIHsKKyAJICAgIGNhc2UgQ0FMTDoKK0BAIC0xOTcwLDE0ICsyMDkx LDExIEBACisgCQlyZXR1cm4gKGZhbHNlKTsKKyAJfQorIAorLQljYmMtPnJlY3ZxLmlvcV91di51 dnFfZmV0Y2ggPSB4ZHJfcmRtYV9pb3FfdXZfZmV0Y2hfbm90aGluZzsKKysJY2JjLT5zZW5kcS5p b3FfdXYudXZxX2ZldGNoID0geGRyX3JkbWFfaW9xX3V2X2ZldGNoX25vdGhpbmc7CisgCistCWhl YWRfdXYgPSBJT1FfKHhkcl9yZG1hX2lvcV91dl9mZXRjaCgmY2JjLT5yZWN2cSwgJnJkbWFfeHBy dC0+b3V0YnVmc19kYXRhLnV2cWgsCisrCWhlYWRfdXYgPSBJT1FfKHhkcl9yZG1hX2lvcV91dl9m ZXRjaCgmY2JjLT5zZW5kcSwgJnJkbWFfeHBydC0+b3V0YnVmc19oZHIudXZxaCwKKyAJCQkJCSJj X2hlYWQgYnVmZmVyIiwgMSwgSU9RX0ZMQUdfTk9ORSkpOworIAorLQkodm9pZCl4ZHJfcmRtYV9p b3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZyZG1hX3hwcnQtPmluYnVmc19kYXRhLnV2cWgsCist CQkJCSJjYWxsIGJ1ZmZlcnMiLCBudW1fY2h1bmtzLCBJT1FfRkxBR19OT05FKTsKKy0KKyAJcm1z ZyA9IG1fKGhlYWRfdXYtPnYudmlvX2hlYWQpOworIAlybXNnLT5yZG1hX3hpZCA9IG1zZy0+cm1f eGlkOworIAlybXNnLT5yZG1hX3ZlcnMgPSBodG9ubChSUENSRE1BX1ZFUlNJT04pOworQEAgLTE5 ODcsMzEgKzIxMDUsMjUgQEAKKyAJLyogbm8gcmVhZCwgd3JpdGUgY2h1bmtzLiAqLworIAlybXNn LT5yZG1hX2JvZHkucmRtYV9tc2cucmRtYV9yZWFkcyA9IDA7IC8qIGh0b25sKDApOyAqLworIAly bXNnLT5yZG1hX2JvZHkucmRtYV9tc2cucmRtYV93cml0ZXMgPSAwOyAvKiBodG9ubCgwKTsgKi8K Ky0KKy0JLyogcmVwbHkgY2h1bmsgKi8KKy0Jd19hcnJheSA9ICh3bF90ICopJnJtc2ctPnJkbWFf Ym9keS5yZG1hX21zZy5yZG1hX3JlcGx5OworLQl3X2FycmF5LT5wcmVzZW50ID0gaHRvbmwoMSk7 CistCXdfYXJyYXktPmVsZW1lbnRzID0gaHRvbmwobnVtX2NodW5rcyk7CistCistCVRBSUxRX0ZP UkVBQ0goaGF2ZSwgJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucWgsIHEpIHsKKy0JCXN0cnVjdCB4 ZHJfcmRtYV9zZWdtZW50ICp3X3NlZyA9CistCQkJJndfYXJyYXktPmVudHJ5W2krK10udGFyZ2V0 OworLQkJdWludDMyX3QgbGVuZ3RoID0gaW9xdXZfbGVuZ3RoKElPUV8oaGF2ZSkpOworLQorLQkJ d19zZWctPmhhbmRsZSA9IGh0b25sKHJkbWFfeHBydC0+bXItPnJrZXkpOworLQkJd19zZWctPmxl bmd0aCA9IGh0b25sKGxlbmd0aCk7CistCQl4ZHJfZW5jb2RlX2h5cGVyKCh1aW50MzJfdCopJndf c2VnLT5vZmZzZXQsCistCQkJCSAodWludHB0cl90KUlPUV8oaGF2ZSktPnYudmlvX2hlYWQpOwor LQl9CisrCXJtc2ctPnJkbWFfYm9keS5yZG1hX21zZy5yZG1hX3JlcGx5ID0gMDsKKyAKKyAJaGVh ZF91di0+di52aW9fdGFpbCA9IGhlYWRfdXYtPnYudmlvX2hlYWQKKyAJCQkJKyB4ZHJfcmRtYV9o ZWFkZXJfbGVuZ3RoKHJtc2cpOworIAorKwlwdGhyZWFkX211dGV4X2xvY2soJmNiYy0+c2VuZHEu aW9xX3V2LnV2cWgucW11dGV4KTsKKysJVEFJTFFfSU5TRVJUX1RBSUwoJmNiYy0+c2VuZHEuaW9x X3V2LnV2cWgucWgsICZob2xkX3V2LT51dnEsIHEpOworKwkoY2JjLT5zZW5kcS5pb3FfdXYudXZx aC5xY291bnQpKys7CisrCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjYmMtPnNlbmRxLmlvcV91di51 dnFoLnFtdXRleCk7CisrCisgCXJwY3JkbWFfZHVtcF9tc2coaGVhZF91diwgImNsbnRoZWFkIiwg bXNnLT5ybV94aWQpOworIAlycGNyZG1hX2R1bXBfbXNnKGhvbGRfdXYsICJjbG50Y2FsbCIsIG1z Zy0+cm1feGlkKTsKKyAKKyAJLyogYWN0dWFsIHNlbmQsIGNhbGxiYWNrIHdpbGwgdGFrZSBjYXJl IG9mIGNsZWFudXAgKi8KKy0JeGRyX3JkbWFfYXN5bmNfc2VuZF9jYihyZG1hX3hwcnQsIGNiYywg Mik7CisrCWNiYy0+aGF2ZSA9IFRBSUxRX0ZJUlNUKCZjYmMtPnNlbmRxLmlvcV91di51dnFoLnFo KTsKKysJaWYgKHJkbWFfeHBydC0+c2hhcmVkKQorKwkJeGRyX3JkbWFfYXN5bmNfc2VuZF9jYihy ZG1hX3hwcnQsIGNiYywgMik7CisrCWVsc2UKKysJCXhkcl9yZG1hX3N5bmNfc2VuZF9jYihyZG1h X3hwcnQsIGNiYywgMik7CisgCXJldHVybiAodHJ1ZSk7CisgfQorIAorQEAgLTIyMTEsNiArMjMy Myw3IEBACisgCQkgKiBwcm90b2NvbHMgYW5kIFVJT19GTEFHX1JFRkVSIHdpbGwgYmUgc2V0Lgor IAkJICogZmlyc3RfYnVmID0gbmZzX2hlYWRlciBidWYgKyByZG1hX3dyaXRlIGJ1ZnMgKi8KKyAJ CWlmIChyZG1hX2J1Zl91c2VkKSB7CisrCQkJLyogZGF0YV9jaHVuayBidWZmZXIgd2lsbCBiZSBz ZXQgYnkgeF9wdXRidWZzIHRvIHZpb19oZWFkICovCisgCQkJcmRtYV9idWZfYWRkciA9IGZpcnN0 X3NlbmRfYnVmX3V2LT52LnZpb19oZWFkOworIAkJCXJkbWFfYnVmX2xlbiA9IGlvcXV2X2xlbmd0 aChmaXJzdF9zZW5kX2J1Zl91dik7CisgCQkJaWYgKGZpcnN0X3NlbmRfYnVmX3V2LT51LnVpb19m bGFncyAmIFVJT19GTEFHX1JFRkVSKQorQEAgLTIyNjIsOCArMjM3NSwxMyBAQAorIAkJCXVpbnQz Ml90IGxlbmd0aCA9IG50b2hsKGNfc2VnLT5sZW5ndGgpOworIAkJCXVpbnQzMl90IG5mc19oZWFk ZXJfbGVuID0gaW9xdXZfbGVuZ3RoKG5mc19oZWFkZXJfdXYpOworIAorLQkJCWFzc2VydChsZW5n dGggPD0gcmRtYV94cHJ0LT5zbV9kci5zZW5kc3opOworLQorKwkJCS8qIERvIG5vdCBhc3NlcnQs IGlmIGxlbmd0aCA+IHNlbmRzejogdGhlIGNsaWVudCBjYW4gbGVnaXRpbWF0ZWx5CisrCQkJICog cHJlLXJlZ2lzdGVyIGEgcmVwbHkgY2h1bmsgbGFyZ2VyIHRoYW4gc2VuZHN6IChlLmcuIHdoZW4K KysJCQkgKiBtYXhjb3VudCBlcXVhbHMgc2VuZHN6IHRoZSB0b3RhbCBjaHVuayBpbmNsdWRlcyBO RlMgQ09NUE9VTkQKKysJCQkgKiBvdmVyaGVhZCBwdXNoaW5nIGwgYWJvdmUgc2VuZHN6KS4gVGhl IGFjdHVhbCBSRE1BIFdSSVRFIHNpemUKKysJCQkgKiBpcyB3cml0ZV9sZW4gPSBtaW4ocmRtYV9i dWZfbGVuLCBsZW5ndGgpIDw9IHNlbmRzeiwgc28gdGhlCisrCQkJICogdHJhbnNmZXIgaXMgYWx3 YXlzIHdpdGhpbiB0aGUgc2VydmVyJ3MgcmVnaXN0ZXJlZCBidWZmZXIuCisrCQkJICovCisgCQkJ Kndfc2VnID0gKmNfc2VnOworIAorIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsCitA QCAtMjM4Myw2ICsyNTAxLDI2IEBACisgCQl1aW9fcmVmZXItPnVpb19yZWxlYXNlKHVpb19yZWZl ciwgVUlPX0ZMQUdfTk9ORSk7CisgCX0KKyAKKysJLyoKKysJICogUmVsZWFzZSB0aGUgZGVmZXJy ZWQgc2VudGluZWwgcmVmIHdoZW4gdGhlIHJlcXVlc3Qgd2FzIHN1c3BlbmRlZAorKwkgKiBieSB3 cmFwX2NhbGxiYWNrIChlLmcuIFFPUywgYXN5bmMgSU8pLiBJbiB0aGF0IHBhdGggQ0JDX0ZMQUdf UkVMRUFTRQorKwkgKiB3YXMgc2V0IGJ1dCBjYmNfcmVsZWFzZV9pdCB3YXMgaW50ZW50aW9uYWxs eSBza2lwcGVkIHRvIGtlZXAKKysJICogY2JjLT5kYXRhcSBhbGl2ZS4gIE5vdyB0aGF0IGFsbCBS RE1BIG9wZXJhdGlvbnMgaGF2ZSBiZWVuIHBvc3RlZAorKwkgKiAodGFraW5nIHRoZWlyIG93biBy ZWZzKSwgaXQgaXMgc2FmZSB0byBkcm9wIHRoZSBzZW50aW5lbC4gIFRoZQorKwkgKiBsYXN0IFJE TUEgY29tcGxldGlvbiB3aWxsIHRoZW4gc2VlIHJlZmNudD09MCB3aXRoIENCQ19GTEFHX1JFTEVB U0UKKysJICogc2V0IGFuZCB0cmlnZ2VyIHRoZSBub3JtYWwgY2JjIGNsZWFudXAuCisrCSAqCisr CSAqIEZvciB0aGUgbm9ybWFsIChub24tc3VzcGVuZGVkKSBwYXRoIENCQ19GTEFHX1NFTlRJTkVM X1BFTkRJTkcgaXMKKysJICogbmV2ZXIgc2V0LCBzbyB0aGlzIGlzIGEgbm8tb3AuCisrCSAqLwor KwlpZiAoY2JjLT5jYmNfZmxhZ3MgJiBDQkNfRkxBR19TRU5USU5FTF9QRU5ESU5HKSB7CisrCQlj YmMtPmNiY19mbGFncyAmPSB+Q0JDX0ZMQUdfU0VOVElORUxfUEVORElORzsKKysJCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19YRFIsCisrCQkJIiVzIHJkbWFfeHBydCAlcCBjYmMgJXAgcmVsZWFz aW5nIGRlZmVycmVkIHNlbnRpbmVsIiwKKysJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMpOwor KwkJY2JjX3JlbGVhc2VfaXQoY2JjKTsKKysJfQorKworIAlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfWERSLCAiJXM6IGNiYyAlcCByZWN2cSAlcCAlZCBzZW5kcSAlcCAlZCByZG1hX3hwcnQgJXAi LAorIAkJX19mdW5jX18sIGNiYywgJmNiYy0+cmVjdnEsIGNiYy0+cmVjdnEuaW9xX3V2LnV2cWgu cWNvdW50LCAmY2JjLT5zZW5kcSwKKyAJCWNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucWNvdW50LCBy ZG1hX3hwcnQpOworZGlmZiAtdXIgbnRpcnBjLTcuMi90ZXN0cy9ycGNwaW5nLmMgbnRpcnBjLTVj NzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvdGVzdHMvcnBjcGluZy5jCist LS0gbnRpcnBjLTcuMi90ZXN0cy9ycGNwaW5nLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAw MDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1 NmJkMS90ZXN0cy9ycGNwaW5nLmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAK K0BAIC0zNCw2ICszNCw3IEBACisgI2luY2x1ZGUgPHJwYy9ycGMuaD4KKyAjaW5jbHVkZSA8cnBj L3N2Y19hdXRoLmg+CisgCisrCisgI2luY2x1ZGUgImx0dG5nL250aXJwY190cmFjZXMuaCIKKyAj aWYgZGVmaW5lZChVU0VfTFRUTkdfTlRJUlBDKSAmJiAhZGVmaW5lZChMVFROR19QQVJTSU5HKQor ICNpbmNsdWRlICJsdHRuZy9nZW5lcmF0ZWRfdHJhY2VzL3JwY3BpbmcuaCIKK0BAIC00NCw2ICs0 NSwxMSBAQAorIHN0YXRpYyB1aW50MzJfdCBycGNwaW5nX3RocmVhZHM7CisgCisgc3RhdGljIHN0 cnVjdCB0aW1lc3BlYyB0byA9IHszMCwgMH07CisrdHlwZWRlZiBlbnVtIHsKKysJVENQID0gMSwK KysJUkRNQSA9IDIsCisrCVJBVyA9IDMKKyt9IHByb3RvX3Q7CisgCisgc3RydWN0IHN0YXRlIHsK KyAJQ0xJRU5UICpoYW5kbGU7CitAQCAtNTMsNiArNTksNyBAQAorIAlzdHJ1Y3QgdGltZXNwZWMg c3RvcHBpbmc7CisgCWludCBjb3VudDsKKyAJaW50IHByb2M7CisrCXByb3RvX3QgcHJvdG87Cisg CWludCBpZDsKKyAJdWludDMyX3QgZmFpbHVyZXM7CisgCXVpbnQzMl90IHJlc3BvbnNlczsKK0BA IC0xODMsOSArMTkwLDExIEBACisgCQl9CisgCX0KKyAKKy0JcHRocmVhZF9tdXRleF9sb2NrKCZz LT5zX211dGV4KTsKKy0JcHRocmVhZF9jb25kX3dhaXQoJnMtPnNfY29uZCwgJnMtPnNfbXV0ZXgp OworLQlwdGhyZWFkX211dGV4X3VubG9jaygmcy0+c19tdXRleCk7CisrCWlmIChzLT5wcm90byAh PSBSRE1BKSB7CisrCQlwdGhyZWFkX211dGV4X2xvY2soJnMtPnNfbXV0ZXgpOworKwkJcHRocmVh ZF9jb25kX3dhaXQoJnMtPnNfY29uZCwgJnMtPnNfbXV0ZXgpOworKwkJcHRocmVhZF9tdXRleF91 bmxvY2soJnMtPnNfbXV0ZXgpOworKwl9CisgCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklD LCAmcy0+c3RvcHBpbmcpOworIAorIAlpZiAoYXRvbWljX2RlY191aW50MzJfdCgmcnBjcGluZ190 aHJlYWRzKSA+IDApIHsKK0BAIC0yNTQsOSArMjYzLDEzIEBACisgCWludCBwcm9jID0gMDsKKyAJ aW50IHNlbmRfc3ogPSA4MTkyOworIAlpbnQgcmVjdl9zeiA9IDgxOTI7CisrI2lmZGVmIFVTRV9S UENfUkRNQQorKwlpbnQgcGFnZV9zeiA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKysjZW5kaWYK KyAJdW5zaWduZWQgaW50IGZhaWx1cmVzID0gMDsKKyAJdW5zaWduZWQgaW50IHRpbWVvdXRzID0g MDsKKyAJYm9vbCBycGNiaW5kID0gZmFsc2U7CisrCXByb3RvX3QgcHJvdG9fdXNlZCA9IDA7Cisg CisgCU5USVJQQ19BVVRPX1RSQUNFUE9JTlQocnBjcGluZywgdGVzdCwgVFJBQ0VfSU5GTywgIkJv byIpOworIAorQEAgLTMzNCw3ICszNDcsOCBAQAorIAkJCQkJICAgImNsbnRfbmNyZWF0ZSBmYWls ZWQiKTsKKyAJCQkJZXhpdCgyKTsKKyAJCQl9CistCQl9IGVsc2UgeworKwkJfSBlbHNlIGlmIChz dHJjbXAocHJvdG8sICJyZG1hIikpIHsKKysJCQlwcm90b191c2VkID0gVENQOworIAkJCS8qIGNv bm5lY3QgdG8gaG9zdDpwb3J0ICovCisgCQkJc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7Cisg CQkJc3RydWN0IG5ldGJ1ZiByYWRkciA9IHsKK0BAIC0zNTYsNyArMzcwLDI2IEBACisgCQkJCQkg ICAiY2xudF9uY3JlYXRlIGZhaWxlZCIpOworIAkJCQlleGl0KDQpOworIAkJCX0KKysJCX0gZWxz ZSB7CisrCQkJcHJvdG9fdXNlZCA9IFJETUE7CisrCQkJaW50IGZkID0gZ2V0X2Nvbm5fZmQoaG9z dCwgcG9ydCk7CisrCQkJaWYgKGZkIDw9IDApIHsKKysJCQkJcGVycm9yKCJnZXRfY29ubl9mZCBm YWlsZWQiKTsKKysJCQkJZXhpdCgzKTsKKysJCQl9CisrI2lmZGVmIFVTRV9SUENfUkRNQQorKwkJ CWNsbnQgPSBjbG50X3JkbWFfY3JlYXRlKGZkLCBob3N0LCAyMDA0OSwgcmVjdl9zeiwKKysJCQkg ICAgc2VuZF9zeiwgcGFnZV9zeiwgcHJvZywgdmVycywgQ0xOVF9DUkVBVEVfRkxBR19DTE9TRSk7 CisrCQkJaWYgKENMTlRfRkFJTFVSRShjbG50KSkgeworKwkJCQlycGNfcGVycm9yKCZjbG50LT5j bF9lcnJvciwgImNsbnRfcmRtYV9jcmVhdGUgZmFpbGVkIik7CisrCQkJCWV4aXQoNCk7CisrCQkJ fQorKyNlbHNlCisrCQkJcGVycm9yKCJyZG1hIG5vdCBlbmFibGVkIik7CisrCQkJZXhpdCg0KTsK KysjZW5kaWYKKyAJCX0KKysKKyAJCXMgPSAmc3RhdGVzW2ldOworIAkJY2xudC0+Y2xfdTEgPSBz OworIAorQEAgLTM2NCw2ICszOTcsNyBAQAorIAkJcy0+aWQgPSBpOworIAkJcy0+Y291bnQgPSBj b3VudDsKKyAJCXMtPnByb2MgPSBwcm9jOworKwkJcy0+cHJvdG8gPSBwcm90b191c2VkOworIAkJ cHRocmVhZF9jcmVhdGUoJnQsIE5VTEwsIHdvcmtlciwgcyk7CisgCX0KKyAKCmRpZmYgLS1naXQg YS8zNTIucGF0Y2ggYi8zNTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5 MzFkY2MuLjAwMDAwMDAKLS0tIGEvMzUyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAs MCBAQAotRnJvbSA2ZDQwNGNmYmE1YjA2ZWViNjJkOTY1YTVjNzgzMTdhYjYwMWZjYjY2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ3Jpc3RpYW4gTGUgPGdpdEBsZWNyaXMuZGV2Pgot RGF0ZTogVGh1LCAxNyBKdWwgMjAyNSAxMjo1MzoyMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBC dW1wIENNYWtlIHBvbGljaWVzCi0KLS0tLQotIENNYWtlTGlzdHMudHh0IHwgOCArKystLS0tLQot IDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAwMWZlNTNhZTEu LmU2YTFkMDNmOCAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3Rz LnR4dAotQEAgLTIsNyArMiw3IEBACi0gCi0gIyBDdXJyZW50IHZlcnNpb24gYXMgb2YgRmVkb3Jh IDE2LiAgTm90IHRlc3RlZCB3aXRoIGVhcmxpZXIuCi0gCi0tY21ha2VfbWluaW11bV9yZXF1aXJl ZChWRVJTSU9OIDIuNi4zKQotK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjYuLi40 LjApCi0gCi0gc2V0KENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfTU9EVUxFX1BBVEh9ICIke0NN QUtFX1NPVVJDRV9ESVJ9L2NtYWtlL21vZHVsZXMvIikKLSAKLUBAIC0zMTIsMTUgKzMxMiwxMyBA QCBzZXQoIFBLR19OQU1FICIke0NQQUNLX1BBQ0tBR0VfTkFNRX0tJHtDUEFDS19QQUNLQUdFX1ZF UlNJT059LnRhci5neiIpCi0gZW5kaWYgKE5PVCBUQVJHRVQgZGlzdCkKLSAKLSBpZiAoTk9UIFRB UkdFVCBycG0pCi0tYWRkX2N1c3RvbV90YXJnZXQoIHJwbSBERVBFTkRTIGRpc3QpCi0tYWRkX2N1 c3RvbV9jb21tYW5kKFRBUkdFVCBycG0KLSthZGRfY3VzdG9tX3RhcmdldCggcnBtCi0gICAgICAg ICAgICAgICAgICAgQ09NTUFORCBzaCAtYyAicnBtYnVpbGQgLXRhICR7UEtHX05BTUV9IgotIAkJ ICBWRVJCQVRJTQotIAkJICBERVBFTkRTIGRpc3QpCi0gCi0gc2V0KFJQTURFU1QgIi0tZGVmaW5l ICdfc3JjcnBtZGlyICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSciKQotLWFkZF9jdXN0b21f dGFyZ2V0KCBzcnBtIERFUEVORFMgZGlzdCkKLS1hZGRfY3VzdG9tX2NvbW1hbmQoVEFSR0VUIHNy cG0KLSthZGRfY3VzdG9tX3RhcmdldCggc3JwbQotICAgICAgICAgICAgICAgICAgIENPTU1BTkQg c2ggLWMgInJwbWJ1aWxkICR7UlBNREVTVH0gLXRzICR7UEtHX05BTUV9IgotIAkJICBWRVJCQVRJ TQotIAkJICBERVBFTkRTIGRpc3QpCgpkaWZmIC0tZ2l0IGEvbGlibnRpcnBjLnNwZWMgYi9saWJu dGlycGMuc3BlYwppbmRleCBmODM4ZDE0Li41Y2Y4OGNlIDEwMDY0NAotLS0gYS9saWJudGlycGMu c3BlYworKysgYi9saWJudGlycGMuc3BlYwpAQCAtMyw3ICszLDcgQEAKIAogTmFtZToJCWxpYm50 aXJwYwogVmVyc2lvbjoJNy4yCi1SZWxlYXNlOgkxJXs/ZGV2OiV7ZGV2fX0lez9kaXN0fQorUmVs ZWFzZToJMiV7P2Rldjole2Rldn19JXs/ZGlzdH0KIFN1bW1hcnk6CU5ldyBUcmFuc3BvcnQgSW5k ZXBlbmRlbnQgUlBDIExpYnJhcnkKIExpY2Vuc2U6CUJTRC0zLUNsYXVzZQogVXJsOgkJaHR0cHM6 Ly9naXRodWIuY29tL25mcy1nYW5lc2hhL250aXJwYwpAQCAtMTIsNyArMTIsNyBAQCBVcmw6CQlo dHRwczovL2dpdGh1Yi5jb20vbmZzLWdhbmVzaGEvbnRpcnBjCiAlZ2xvYmFsIHByb21ldGhfdmVy X3Nob3J0CTQ4ZDA5YzQ1CiBTb3VyY2UwOglodHRwczovL2dpdGh1Yi5jb20vbmZzLWdhbmVzaGEv bnRpcnBjL2FyY2hpdmUvdiV7dmVyc2lvbn0vbnRpcnBjLSV7dmVyc2lvbn0lez9kZXY6JXtkZXZ9 fS50YXIuZ3oKIFNvdXJjZTE6CWh0dHBzOi8vZ2l0aHViLmNvbS9iaWFrcy9wcm9tZXRoZXVzLWNw cC1saXRlL2FyY2hpdmUvJXtwcm9tZXRoX3Zlcl9sb25nfS9wcm9tZXRoZXVzLWNwcC1saXRlLSV7 cHJvbWV0aF92ZXJfc2hvcnR9LnRhci5negotUGF0Y2g6CQkwMDAxLUNNYWtlTGlzdHMudHh0LnBh dGNoCitQYXRjaDoJCTAwMDItNy4ycGx1cy5wYXRjaAogCiBCdWlsZFJlcXVpcmVzOgljbWFrZSBn Y2MgZ2NjLWMrKwogJWlmYXJjaCB4ODZfNjQgYWFyY2g2NApAQCAtOTUsNiArOTUsMTAgQEAgbG4g LXMgJXtuYW1lfS5zby4le3ZlcnNpb259ICV7YnVpbGRyb290fSV7X2xpYmRpcn0vJXtuYW1lfS5z by43CiAle19saWJkaXJ9L3BrZ2NvbmZpZy9saWJudGlycGMucGMKIAogJWNoYW5nZWxvZworKiBG cmkgSnVuIDEyIDIwMjYgS2FsZWIgUy4gS0VJVEhMRVkgPGtrZWl0aGxlIGF0IHJlZGhhdC5jb20+ IDcuMi0yCistIG50aXJwYy03LjIsIG50aXJwYyBkaWQgbm90IHRhZy9yZWxlYXNlIHJlcXVpcmVk IHVwZGF0ZXMgZm9yCisgIGdhbmVzaGEtOC4xIGFuZCBsYXRlcgorCiAqIFR1ZSBTZXAgMzAgMjAy NSBLYWxlYiBTLiBLRUlUSExFWSA8a2tlaXRobGUgYXQgcmVkaGF0LmNvbT4gNy4yLTEKIC0gbnRp cnBjLTcuMiBHQQogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggOWUxOTQy Ny4uYjI1NzQ1ZCAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDMgKzEs MiBAQAotU0hBNTEyIChudGlycGMtNy4wLnRhci5neikgPSBiNGU1YzY5ZTQ2OTg4Mzc0YTY2Yjg2 ZjZjMzNlMjQxYjFkNzMyNWMyN2VjY2ExNzRjN2IxNTYwZTNkOWNhMTc0YWI2MzNmNTFiM2IzZTE4 NTI4NjdjMWU2MjEwMGNmODRkYzkwMzFmNDlkMjI5MmJiMzY0ZDMxYWNmMGI1NzAzZgogU0hBNTEy IChwcm9tZXRoZXVzLWNwcC1saXRlLTQ4ZDA5YzQ1LnRhci5neikgPSBhZTcxOTljNWNjMjY1YmUx MGI4MjA0NmFjMTBmYTQzOGRiMjc5N2FkOTgyMTE2M2NlM2Y1ZTJjMjdjYzAxNjUzYjNhODIzYjUz Y2IxYWVjYjdkY2M2ZDE4YzBmMTY5MzM1MTA0NzdlOGNlZTQzN2QwYTdhMjI0ODIwY2E1ZmViYwog U0hBNTEyIChudGlycGMtNy4yLnRhci5neikgPSA5ZDQwNzVkYjcxYTk1MTE0MzA5YmRkMzNiNjAy NWEwYzliODA1YWVmYjBiOTJiODU0NDM5NTkyMGJiNDQwMmExYzViYWVlZTY3ZjM0NjZiMDZjNDRh YmIxYWZhYjI4Zjg4OWE5OWYxMDdjYTBhZDY2Nzk4YTA5NmM1NjRiZDczOAo=