From mboxrd@z Thu Jan 1 00:00:00 1970 From: Umesh Nerlige Ramappa Subject: [PATCH v2 3/3] drm/i915/tgl: Add perf support on TGL Date: Thu, 17 Oct 2019 17:50:28 -0700 Message-ID: <20191018005028.47441-3-umesh.nerlige.ramappa@intel.com> References: <20191018005028.47441-1-umesh.nerlige.ramappa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 50E706E0CA for ; Fri, 18 Oct 2019 00:50:31 +0000 (UTC) In-Reply-To: <20191018005028.47441-1-umesh.nerlige.ramappa@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Lucas De Marchi , Chris Wilson List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgoK VGhlIGRlc2lnbiBvZiB0aGUgT0EgdW5pdCBoYXMgYmVlbiBzcGxpdCBpbnRvIHNldmVyYWwgdW5p dHMuIFdlIG5vdwpoYXZlIGEgZ2xvYmFsIHVuaXQgKE9BRykgYW5kIGEgcmVuZGVyIHNwZWNpZmlj IHVuaXQgKE9BUikuIFRoaXMgbGVhZHMKdG8gc29tZSBjaGFuZ2VzIG9uIGhvdyB3ZSBwcm9ncmFt IHRoaW5ncy4gU29tZSBkZXRhaWxzIDoKCk9BUjoKICAtIGhhcyBpdHMgb3duIHNldCBvZiBjb3Vu dGVyIHJlZ2lzdGVycywgdGhleSBhcmUgcGVyLWNvbnRleHQKICAgIHNhdmVkL3Jlc3RvcmVkCiAg LSBjb3VudGVycyBhcmUgbm90IHdyaXR0ZW4gdG8gdGhlIGNpcmN1bGFyIE9BIGJ1ZmZlcgogIC0g YSBzbmFwc2hvdCBvZiB0aGUgY291bnRlcnMgY2FuIGJlIGFjcXVpcmVkIHdpdGgKICAgIE1JX1JF Q09SRF9QRVJGX0NPVU5ULCBvciBhIHNpbmdsZSBjb3VudGVyIGNhbiBiZSByZWFkIHdpdGgKICAg IE1JX1NUT1JFX1JFR0lTVEVSX01FTS4KCk9BRzoKICAtIGhhcyBnbG9iYWwgY291bnRlcnMgdGhh dCBpbmNyZW1lbnQgYWNyb3NzIGNvbnRleHQgc3dpdGNoZXMKICAtIGNvdW50ZXJzIGFyZSB3cml0 dGVuIGludG8gdGhlIGNpcmN1bGFyIE9BIGJ1ZmZlciAoaWYgcmVxdWVzdGVkKQoKdjI6IEZpeCBj aGVja3BhdGNoIHdhcm5pbmdzIG9uIGNvZGUgc3R5bGUgKEx1Y2FzKQp2MzogKFVtZXNoKQogIC0g VXBkYXRlIHJlZ2lzdGVyIGZyb20gd2hpY2ggdGFpbCwgc3RhdHVzIGFuZCBoZWFkIGFyZSByZWFk CiAgLSBVcGRhdGUgbG9naWMgdG8gc2FtcGxlIGNvbnRleHQgcmVwb3J0cwogIC0gVXBkYXRlIHdo aXRlbGlzdCBtdXggYW5kIGIgY291bnRlciByZWdzCnY0OiBGaXggYSBidWcgd2hlbiB1cGRhdGlu ZyBjb250ZXh0IGltYWdlIGZvciBuZXcgY29udGV4dHMgKFVtZXNoKQoKQlNwZWM6IDI4NzI3LCAz MDAyMQoKU2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJs aW5AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBVbWVzaCBOZXJsaWdlIFJhbWFwcGEgPHVtZXNo Lm5lcmxpZ2UucmFtYXBwYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEx1Y2FzIERlIE1hcmNo aSA8bHVjYXMuZGVtYXJjaGlAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5j ICAgICAgfCAyOTIgKysrKysrKysrKysrKysrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggICAgICAgfCAxMDMgKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9vYS9pOTE1X29hX3RnbC5jIHwgMTIxICsrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9vYS9pOTE1X29hX3RnbC5oIHwgIDE2ICsrCiA1IGZpbGVzIGNoYW5nZWQsIDUwMCBpbnNlcnRp b25zKCspLCAzNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vaTkxNS9vYS9pOTE1X29hX3RnbC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2k5MTUvb2EvaTkxNV9vYV90Z2wuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggZTc5MWQ5 MzIzYjUxLi4wZWM5ZmVlNThiYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0yNDIsNyArMjQy LDggQEAgaTkxNS15ICs9IFwKIAlvYS9pOTE1X29hX2NmbGd0Mi5vIFwKIAlvYS9pOTE1X29hX2Nm bGd0My5vIFwKIAlvYS9pOTE1X29hX2NubC5vIFwKLQlvYS9pOTE1X29hX2ljbC5vCisJb2EvaTkx NV9vYV9pY2wubyBcCisJb2EvaTkxNV9vYV90Z2wubwogaTkxNS15ICs9IGk5MTVfcGVyZi5vCiAK ICMgUG9zdC1tb3J0ZW0gZGVidWcgYW5kIEdQVSBoYW5nIHN0YXRlIGNhcHR1cmUKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wZXJmLmMKaW5kZXggY2U5N2FmNDg0YTMyLi4zY2U3YzI2MDczMTYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jCkBAIC0yMTcsNiArMjE3LDcgQEAKICNpbmNsdWRlICJvYS9pOTE1 X29hX2NmbGd0My5oIgogI2luY2x1ZGUgIm9hL2k5MTVfb2FfY25sLmgiCiAjaW5jbHVkZSAib2Ev aTkxNV9vYV9pY2wuaCIKKyNpbmNsdWRlICJvYS9pOTE1X29hX3RnbC5oIgogCiAvKiBIVyByZXF1 aXJlcyB0aGlzIHRvIGJlIGEgcG93ZXIgb2YgdHdvLCBiZXR3ZWVuIDEyOGsgYW5kIDE2TSwgdGhv dWdoIGRyaXZlcgogICogaXMgY3VycmVudGx5IGdlbmVyYWxseSBkZXNpZ25lZCBhc3N1bWluZyB0 aGUgbGFyZ2VzdCAxNk0gc2l6ZSBpcyB1c2VkIHN1Y2gKQEAgLTI5Miw3ICsyOTMsOCBAQCBzdGF0 aWMgdTMyIGk5MTVfcGVyZl9zdHJlYW1fcGFyYW5vaWQgPSB0cnVlOwogI2RlZmluZSBJTlZBTElE X0NUWF9JRCAweGZmZmZmZmZmCiAKIC8qIE9uIEdlbjgrIGF1dG9tYXRpY2FsbHkgdHJpZ2dlcmVk IE9BIHJlcG9ydHMgaW5jbHVkZSBhICdyZWFzb24nIGZpZWxkLi4uICovCi0jZGVmaW5lIE9BUkVQ T1JUX1JFQVNPTl9NQVNLICAgICAgICAgICAweDNmCisjZGVmaW5lIE9BUkVQT1JUX1JFQVNPTl9N QVNLICAgICAgICAgICAoSVNfR0VOKHN0cmVhbS0+cGVyZi0+aTkxNSwgMTIpID8gXAorCQkJCQkw eDdmIDogMHgzZikKICNkZWZpbmUgT0FSRVBPUlRfUkVBU09OX1NISUZUICAgICAgICAgIDE5CiAj ZGVmaW5lIE9BUkVQT1JUX1JFQVNPTl9USU1FUiAgICAgICAgICAoMTw8MCkKICNkZWZpbmUgT0FS RVBPUlRfUkVBU09OX0NUWF9TV0lUQ0ggICAgICgxPDwzKQpAQCAtMzM4LDYgKzM0MCwxMCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfZm9ybWF0IGdlbjhfcGx1c19vYV9mb3JtYXRzW0k5 MTVfT0FfRk9STUFUX01BWF0gPSB7CiAJW0k5MTVfT0FfRk9STUFUX0M0X0I4XQkJICAgID0geyA3 LCA2NCB9LAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX2Zvcm1hdCBnZW4xMl9v YV9mb3JtYXRzW0k5MTVfT0FfRk9STUFUX01BWF0gPSB7CisJW0k5MTVfT0FfRk9STUFUX0EzMnU0 MF9BNHUzMl9COF9DOF0gPSB7IDUsIDI1NiB9LAorfTsKKwogI2RlZmluZSBTQU1QTEVfT0FfUkVQ T1JUICAgICAgKDE8PDApCiAKIC8qKgpAQCAtNDE4LDYgKzQyNCwxNCBAQCBzdGF0aWMgdm9pZCBm cmVlX29hX2NvbmZpZ19ibyhzdHJ1Y3QgaTkxNV9vYV9jb25maWdfYm8gKm9hX2JvKQogCWtmcmVl KG9hX2JvKTsKIH0KIAorc3RhdGljIHUzMiBnZW4xMl9vYV9od190YWlsX3JlYWQoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKK3sKKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUg PSBzdHJlYW0tPnVuY29yZTsKKworCXJldHVybiBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdF TjEyX09BR19PQVRBSUxQVFIpICYKKwkgICAgICAgR0VOMTJfT0FHX09BVEFJTFBUUl9NQVNLOwor fQorCiBzdGF0aWMgdTMyIGdlbjhfb2FfaHdfdGFpbF9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0pCiB7CiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gc3RyZWFtLT51 bmNvcmU7CkBAIC01MzgsNyArNTUyLDcgQEAgc3RhdGljIGJvb2wgb2FfYnVmZmVyX2NoZWNrX3Vu bG9ja2VkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAJCQkJYWdpbmdfdGFpbCA9 IGh3X3RhaWw7CiAJCQlzdHJlYW0tPm9hX2J1ZmZlci5hZ2luZ190aW1lc3RhbXAgPSBub3c7CiAJ CX0gZWxzZSB7Ci0JCQlEUk1fRVJST1IoIklnbm9yaW5nIHNwdXJpb3VzIG91dCBvZiByYW5nZSBP QSBidWZmZXIgdGFpbCBwb2ludGVyID0gJXVcbiIsCisJCQlEUk1fRVJST1IoIklnbm9yaW5nIHNw dXJpb3VzIG91dCBvZiByYW5nZSBPQSBidWZmZXIgdGFpbCBwb2ludGVyID0gJXhcbiIsCiAJCQkJ ICBod190YWlsKTsKIAkJfQogCX0KQEAgLTc1Nyw3ICs3NzEsOCBAQCBzdGF0aWMgaW50IGdlbjhf YXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJICog Tm90ZTogdGhhdCB3ZSBkb24ndCBjbGVhciB0aGUgdmFsaWRfY3R4X2JpdCBzbyB1c2Vyc3BhY2Ug Y2FuCiAJCSAqIHVuZGVyc3RhbmQgdGhhdCB0aGUgSUQgaGFzIGJlZW4gc3F1YXNoZWQgYnkgdGhl IGtlcm5lbC4KIAkJICovCi0JCWlmICghKHJlcG9ydDMyWzBdICYgc3RyZWFtLT5wZXJmLT5nZW44 X3ZhbGlkX2N0eF9iaXQpKQorCQlpZiAoIShyZXBvcnQzMlswXSAmIHN0cmVhbS0+cGVyZi0+Z2Vu OF92YWxpZF9jdHhfYml0KSAmJgorCQkgICAgSU5URUxfR0VOKHN0cmVhbS0+cGVyZi0+aTkxNSkg PD0gMTEpCiAJCQljdHhfaWQgPSByZXBvcnQzMlsyXSA9IElOVkFMSURfQ1RYX0lEOwogCiAJCS8q CkBAIC04MjQsNiArODM5LDExIEBAIHN0YXRpYyBpbnQgZ2VuOF9hcHBlbmRfb2FfcmVwb3J0cyhz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCX0KIAogCWlmIChzdGFydF9vZmZzZXQg IT0gKm9mZnNldCkgeworCQlpOTE1X3JlZ190IG9haGVhZHB0cjsKKworCQlvYWhlYWRwdHIgPSBJ U19HRU4oc3RyZWFtLT5wZXJmLT5pOTE1LCAxMikgPworCQkJICAgIEdFTjEyX09BR19PQUhFQURQ VFIgOiBHRU44X09BSEVBRFBUUjsKKwogCQlzcGluX2xvY2tfaXJxc2F2ZSgmc3RyZWFtLT5vYV9i dWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKIAogCQkvKgpAQCAtODMxLDkgKzg1MSw4IEBAIHN0YXRp YyBpbnQgZ2VuOF9hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtLAogCQkgKiByZWxhdGl2ZSB0byBvYV9idWZfYmFzZSBzbyBwdXQgYmFjayBoZXJlLi4uCiAJ CSAqLwogCQloZWFkICs9IGd0dF9vZmZzZXQ7Ci0KLQkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29y ZSwgR0VOOF9PQUhFQURQVFIsCi0JCQkJICAgaGVhZCAmIEdFTjhfT0FIRUFEUFRSX01BU0spOwor CQlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBvYWhlYWRwdHIsCisJCQkJICAgaGVhZCAmIEdF TjEyX09BR19PQUhFQURQVFJfTUFTSyk7CiAJCXN0cmVhbS0+b2FfYnVmZmVyLmhlYWQgPSBoZWFk OwogCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2Nr LCBmbGFncyk7CkBAIC04NjksMTIgKzg4OCwxNiBAQCBzdGF0aWMgaW50IGdlbjhfb2FfcmVhZChz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogewogCXN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSA9IHN0cmVhbS0+dW5jb3JlOwogCXUzMiBvYXN0YXR1czsKKwlpOTE1X3JlZ190IG9h c3RhdHVzX3JlZzsKIAlpbnQgcmV0OwogCiAJaWYgKFdBUk5fT04oIXN0cmVhbS0+b2FfYnVmZmVy LnZhZGRyKSkKIAkJcmV0dXJuIC1FSU87CiAKLQlvYXN0YXR1cyA9IGludGVsX3VuY29yZV9yZWFk KHVuY29yZSwgR0VOOF9PQVNUQVRVUyk7CisJb2FzdGF0dXNfcmVnID0gSVNfR0VOKHN0cmVhbS0+ cGVyZi0+aTkxNSwgMTIpID8KKwkJICAgICAgIEdFTjEyX09BR19PQVNUQVRVUyA6IEdFTjhfT0FT VEFUVVM7CisKKwlvYXN0YXR1cyA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgb2FzdGF0dXNf cmVnKTsKIAogCS8qCiAJICogV2UgdHJlYXQgT0FCVUZGRVJfT1ZFUkZMT1cgYXMgYSBzaWduaWZp Y2FudCBlcnJvcjoKQEAgLTkwNiw3ICs5MjksNyBAQCBzdGF0aWMgaW50IGdlbjhfb2FfcmVhZChz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkgKiBOb3RlOiAub2FfZW5hYmxlKCkg aXMgZXhwZWN0ZWQgdG8gcmUtaW5pdCB0aGUgb2FidWZmZXIgYW5kCiAJCSAqIHJlc2V0IEdFTjhf T0FTVEFUVVMgZm9yIHVzCiAJCSAqLwotCQlvYXN0YXR1cyA9IGludGVsX3VuY29yZV9yZWFkKHVu Y29yZSwgR0VOOF9PQVNUQVRVUyk7CisJCW9hc3RhdHVzID0gaW50ZWxfdW5jb3JlX3JlYWQodW5j b3JlLCBvYXN0YXR1c19yZWcpOwogCX0KIAogCWlmIChvYXN0YXR1cyAmIEdFTjhfT0FTVEFUVVNf UkVQT1JUX0xPU1QpIHsKQEAgLTkxNCw3ICs5MzcsNyBAQCBzdGF0aWMgaW50IGdlbjhfb2FfcmVh ZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJCSAgICAgICBEUk1fSTkxNV9Q RVJGX1JFQ09SRF9PQV9SRVBPUlRfTE9TVCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0Owot CQlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBHRU44X09BU1RBVFVTLAorCQlpbnRlbF91bmNv cmVfd3JpdGUodW5jb3JlLCBvYXN0YXR1c19yZWcsCiAJCQkJICAgb2FzdGF0dXMgJiB+R0VOOF9P QVNUQVRVU19SRVBPUlRfTE9TVCk7CiAJfQogCkBAIC0xNDg4LDYgKzE1MTEsNjMgQEAgc3RhdGlj IHZvaWQgZ2VuOF9pbml0X29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt KQogCXN0cmVhbS0+cG9sbGluID0gZmFsc2U7CiB9CiAKK3N0YXRpYyB2b2lkIGdlbjEyX2luaXRf b2FfYnVmZmVyKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCit7CisJc3RydWN0IGlu dGVsX3VuY29yZSAqdW5jb3JlID0gc3RyZWFtLT51bmNvcmU7CisJdTMyIGd0dF9vZmZzZXQgPSBp OTE1X2dndHRfb2Zmc2V0KHN0cmVhbS0+b2FfYnVmZmVyLnZtYSk7CisJdW5zaWduZWQgbG9uZyBm bGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9jaywg ZmxhZ3MpOworCisJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgR0VOMTJfT0FHX09BU1RBVFVT LCAwKTsKKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBHRU4xMl9PQUdfT0FIRUFEUFRSLAor CQkJICAgZ3R0X29mZnNldCAmIEdFTjEyX09BR19PQUhFQURQVFJfTUFTSyk7CisJc3RyZWFtLT5v YV9idWZmZXIuaGVhZCA9IGd0dF9vZmZzZXQ7CisKKwkvKgorCSAqIFBSTSBzYXlzOgorCSAqCisJ ICogICJUaGlzIE1NSU8gbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBPQVRBSUxQVFIKKwkgKiAgcmVn aXN0ZXIgYW5kIGFmdGVyIHRoZSBPQUhFQURQVFIgcmVnaXN0ZXIuIFRoaXMgaXMKKwkgKiAgdG8g ZW5hYmxlIHByb3BlciBmdW5jdGlvbmFsaXR5IG9mIHRoZSBvdmVyZmxvdworCSAqICBiaXQuIgor CSAqLworCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIEdFTjEyX09BR19PQUJVRkZFUiwgZ3R0 X29mZnNldCB8CisJCQkgICBPQUJVRkZFUl9TSVpFXzE2TSB8IEdFTjhfT0FCVUZGRVJfTUVNX1NF TEVDVF9HR1RUKTsKKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBHRU4xMl9PQUdfT0FUQUlM UFRSLAorCQkJICAgZ3R0X29mZnNldCAmIEdFTjEyX09BR19PQVRBSUxQVFJfTUFTSyk7CisKKwkv KiBNYXJrIHRoYXQgd2UgbmVlZCB1cGRhdGVkIHRhaWwgcG9pbnRlcnMgdG8gcmVhZCBmcm9tLi4u ICovCisJc3RyZWFtLT5vYV9idWZmZXIudGFpbHNbMF0ub2Zmc2V0ID0gSU5WQUxJRF9UQUlMX1BU UjsKKwlzdHJlYW0tPm9hX2J1ZmZlci50YWlsc1sxXS5vZmZzZXQgPSBJTlZBTElEX1RBSUxfUFRS OworCisJLyoKKwkgKiBSZXNldCBzdGF0ZSB1c2VkIHRvIHJlY29nbmlzZSBjb250ZXh0IHN3aXRj aGVzLCBhZmZlY3Rpbmcgd2hpY2gKKwkgKiByZXBvcnRzIHdlIHdpbGwgZm9yd2FyZCB0byB1c2Vy c3BhY2Ugd2hpbGUgZmlsdGVyaW5nIGZvciBhIHNpbmdsZQorCSAqIGNvbnRleHQuCisJICovCisJ c3RyZWFtLT5vYV9idWZmZXIubGFzdF9jdHhfaWQgPSBJTlZBTElEX0NUWF9JRDsKKworCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CisK KwkvKgorCSAqIE5COiBhbHRob3VnaCB0aGUgT0EgYnVmZmVyIHdpbGwgaW5pdGlhbGx5IGJlIGFs bG9jYXRlZAorCSAqIHplcm9lZCB2aWEgc2htZnMgKGFuZCBzbyB0aGlzIG1lbXNldCBpcyByZWR1 bmRhbnQgd2hlbgorCSAqIGZpcnN0IGFsbG9jYXRpbmcpLCB3ZSBtYXkgcmUtaW5pdCB0aGUgT0Eg YnVmZmVyLCBlaXRoZXIKKwkgKiB3aGVuIHJlLWVuYWJsaW5nIGEgc3RyZWFtIG9yIGluIGVycm9y L3Jlc2V0IHBhdGhzLgorCSAqCisJICogVGhlIHJlYXNvbiB3ZSBjbGVhciB0aGUgYnVmZmVyIGZv ciBlYWNoIHJlLWluaXQgaXMgZm9yIHRoZQorCSAqIHNhbml0eSBjaGVjayBpbiBnZW44X2FwcGVu ZF9vYV9yZXBvcnRzKCkgdGhhdCBsb29rcyBhdCB0aGUKKwkgKiByZWFzb24gZmllbGQgdG8gbWFr ZSBzdXJlIGl0J3Mgbm9uLXplcm8gd2hpY2ggcmVsaWVzIG9uCisJICogdGhlIGFzc3VtcHRpb24g dGhhdCBuZXcgcmVwb3J0cyBhcmUgYmVpbmcgd3JpdHRlbiB0byB6ZXJvZWQKKwkgKiBtZW1vcnku Li4KKwkgKi8KKwltZW1zZXQoc3RyZWFtLT5vYV9idWZmZXIudmFkZHIsIDAsCisJICAgICAgIHN0 cmVhbS0+b2FfYnVmZmVyLnZtYS0+c2l6ZSk7CisKKwlzdHJlYW0tPnBvbGxpbiA9IGZhbHNlOwor fQorCiBzdGF0aWMgaW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAq c3RyZWFtKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpibzsKQEAgLTIwMjIsMTIg KzIxMDIsMjAgQEAgZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKGNvbnN0IHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSwKIAl1MzIgKnJlZ19zdGF0ZSA9IGNlLT5scmNfcmVnX3N0YXRlOwog CWludCBpOwogCi0JcmVnX3N0YXRlW2N0eF9vYWN0eGN0cmwgKyAxXSA9Ci0JCShzdHJlYW0tPnBl cmlvZF9leHBvbmVudCA8PCBHRU44X09BX1RJTUVSX1BFUklPRF9TSElGVCkgfAotCQkoc3RyZWFt LT5wZXJpb2RpYyA/IEdFTjhfT0FfVElNRVJfRU5BQkxFIDogMCkgfAotCQlHRU44X09BX0NPVU5U RVJfUkVTVU1FOworCWlmIChJU19HRU4oc3RyZWFtLT5wZXJmLT5pOTE1LCAxMikpIHsKKwkJdTMy IGZvcm1hdCA9IHN0cmVhbS0+b2FfYnVmZmVyLmZvcm1hdDsKIAotCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGZsZXhfcmVncyk7IGkrKykKKwkJcmVnX3N0YXRlW2N0eF9vYWN0eGN0cmwgKyAx XSA9CisJCQkoZm9ybWF0IDw8IEdFTjEyX09BUl9PQUNPTlRST0xfQ09VTlRFUl9GT1JNQVRfU0hJ RlQpIHwKKwkJCShzdHJlYW0tPm9hX2NvbmZpZyA/IEdFTjEyX09BUl9PQUNPTlRST0xfQ09VTlRF Ul9FTkFCTEUgOiAwKTsKKwl9IGVsc2UgeworCQlyZWdfc3RhdGVbY3R4X29hY3R4Y3RybCArIDFd ID0KKwkJCShzdHJlYW0tPnBlcmlvZF9leHBvbmVudCA8PCBHRU44X09BX1RJTUVSX1BFUklPRF9T SElGVCkgfAorCQkJKHN0cmVhbS0+cGVyaW9kaWMgPyBHRU44X09BX1RJTUVSX0VOQUJMRSA6IDAp IHwKKwkJCUdFTjhfT0FfQ09VTlRFUl9SRVNVTUU7CisJfQorCisJZm9yIChpID0gMDsgISFjdHhf ZmxleGV1MCAmJiBpIDwgQVJSQVlfU0laRShmbGV4X3JlZ3MpOyBpKyspCiAJCXJlZ19zdGF0ZVtj dHhfZmxleGV1MCArIGkgKiAyICsgMV0gPQogCQkJb2FfY29uZmlnX2ZsZXhfcmVnKHN0cmVhbS0+ b2FfY29uZmlnLCBmbGV4X3JlZ3NbaV0pOwogCkBAIC0yMTg0LDggKzIyNzIsOCBAQCBzdGF0aWMg aW50IGdlbjhfY29uZmlndXJlX2NvbnRleHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK ICAqCiAgKiBOb3RlOiBpdCdzIG9ubHkgdGhlIFJDUy9SZW5kZXIgY29udGV4dCB0aGF0IGhhcyBh bnkgT0Egc3RhdGUuCiAgKi8KLXN0YXRpYyBpbnQgZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRz KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCi0JCQkJICAgICAgIGNvbnN0IHN0cnVj dCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQorc3RhdGljIGludCBscmNfY29uZmlndXJlX2Fs bF9jb250ZXh0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAorCQkJCSAgICAgIGNv bnN0IHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gc3RyZWFtLT5wZXJmLT5pOTE1OwogCS8qIFRoZSBNTUlPIG9mZnNl dHMgZm9yIEZsZXggRVUgcmVnaXN0ZXJzIGFyZW4ndCBjb250aWd1b3VzICovCkBAIC0yMTk3LDEx ICsyMjg1LDkgQEAgc3RhdGljIGludCBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0 IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCUNUWF9SX1BXUl9DTEtfU1RBVEUsCiAJCX0s CiAJCXsKLQkJCUdFTjhfT0FDVFhDT05UUk9MLAorCQkJSVNfR0VOKGk5MTUsIDEyKSA/CisJCQlH RU4xMl9PQVJfT0FDT05UUk9MIDogR0VOOF9PQUNUWENPTlRST0wsCiAJCQlzdHJlYW0tPnBlcmYt PmN0eF9vYWN0eGN0cmxfb2Zmc2V0ICsgMSwKLQkJCSgoc3RyZWFtLT5wZXJpb2RfZXhwb25lbnQg PDwgR0VOOF9PQV9USU1FUl9QRVJJT0RfU0hJRlQpIHwKLQkJCSAoc3RyZWFtLT5wZXJpb2RpYyA/ IEdFTjhfT0FfVElNRVJfRU5BQkxFIDogMCkgfAotCQkJIEdFTjhfT0FfQ09VTlRFUl9SRVNVTUUp CiAJCX0sCiAJCXsgRVVfUEVSRl9DTlRMMCwgY3R4X2ZsZXhldU4oMCkgfSwKIAkJeyBFVV9QRVJG X0NOVEwxLCBjdHhfZmxleGV1TigxKSB9LApAQCAtMjIxNCw5ICsyMzAwLDIzIEBAIHN0YXRpYyBp bnQgZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpz dHJlYW0sCiAjdW5kZWYgY3R4X2ZsZXhldU4KIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgKmNuOworCXNpemVfdCBhcnJheV9z aXplID0gSVNfR0VOKGk5MTUsIDEyKSA/IDIgOiBBUlJBWV9TSVpFKHJlZ3MpOwogCWludCBpLCBl cnI7CiAKLQlmb3IgKGkgPSAyOyBpIDwgQVJSQVlfU0laRShyZWdzKTsgaSsrKQorCWlmIChJU19H RU4oaTkxNSwgMTIpKSB7CisJCXUzMiBmb3JtYXQgPSBzdHJlYW0tPm9hX2J1ZmZlci5mb3JtYXQ7 CisKKwkJcmVnc1sxXS52YWx1ZSA9CisJCQkoZm9ybWF0IDw8IEdFTjEyX09BUl9PQUNPTlRST0xf Q09VTlRFUl9GT1JNQVRfU0hJRlQpIHwKKwkJCShvYV9jb25maWcgPyBHRU4xMl9PQVJfT0FDT05U Uk9MX0NPVU5URVJfRU5BQkxFIDogMCk7CisJfSBlbHNlIHsKKwkJcmVnc1sxXS52YWx1ZSA9CisJ CQkoc3RyZWFtLT5wZXJpb2RfZXhwb25lbnQgPDwgR0VOOF9PQV9USU1FUl9QRVJJT0RfU0hJRlQp IHwKKwkJCShzdHJlYW0tPnBlcmlvZGljID8gR0VOOF9PQV9USU1FUl9FTkFCTEUgOiAwKSB8CisJ CQlHRU44X09BX0NPVU5URVJfUkVTVU1FOworCX0KKworCWZvciAoaSA9IDI7ICEhY3R4X2ZsZXhl dTAgJiYgaSA8IGFycmF5X3NpemU7IGkrKykKIAkJcmVnc1tpXS52YWx1ZSA9IG9hX2NvbmZpZ19m bGV4X3JlZyhvYV9jb25maWcsIHJlZ3NbaV0ucmVnKTsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JnN0cmVhbS0+cGVyZi0+bG9jayk7CkBAIC0yMjQ3LDcgKzIzNDcsNyBAQCBzdGF0aWMgaW50IGdl bjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt LAogCiAJCXNwaW5fdW5sb2NrKCZpOTE1LT5nZW0uY29udGV4dHMubG9jayk7CiAKLQkJZXJyID0g Z2VuOF9jb25maWd1cmVfY29udGV4dChjdHgsIHJlZ3MsIEFSUkFZX1NJWkUocmVncykpOworCQll cnIgPSBnZW44X2NvbmZpZ3VyZV9jb250ZXh0KGN0eCwgcmVncywgYXJyYXlfc2l6ZSk7CiAJCWlm IChlcnIpIHsKIAkJCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7CiAJCQlyZXR1cm4gZXJyOwpA QCAtMjI3Miw3ICsyMzcyLDcgQEAgc3RhdGljIGludCBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4 dHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAogCQlyZWdzWzBdLnZhbHVlID0g aW50ZWxfc3NldV9tYWtlX3JwY3MoaTkxNSwgJmNlLT5zc2V1KTsKIAotCQllcnIgPSBnZW44X21v ZGlmeV9zZWxmKGNlLCByZWdzLCBBUlJBWV9TSVpFKHJlZ3MpKTsKKwkJZXJyID0gZ2VuOF9tb2Rp Znlfc2VsZihjZSwgcmVncywgYXJyYXlfc2l6ZSk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJy OwogCX0KQEAgLTIzMjAsNyArMjQyMCw0NSBAQCBzdGF0aWMgaW50IGdlbjhfZW5hYmxlX21ldHJp Y19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAkgKiB0byBtYWtlIHN1cmUg YWxsIHNsaWNlcy9zdWJzbGljZXMgYXJlIE9OIGJlZm9yZSB3cml0aW5nIHRvIE5PQQogCSAqIHJl Z2lzdGVycy4KIAkgKi8KLQlyZXQgPSBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RyZWFt LCBvYV9jb25maWcpOworCXJldCA9IGxyY19jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0cmVhbSwg b2FfY29uZmlnKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIGVtaXRfb2Ff Y29uZmlnKHN0cmVhbSwgb2FfY29udGV4dChzdHJlYW0pKTsKK30KKworc3RhdGljIGludCBnZW4x Ml9lbmFibGVfbWV0cmljX3NldChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQorewor CXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IHN0cmVhbS0+dW5jb3JlOworCXN0cnVjdCBp OTE1X29hX2NvbmZpZyAqb2FfY29uZmlnID0gc3RyZWFtLT5vYV9jb25maWc7CisJYm9vbCBwZXJp b2RpYyA9IHN0cmVhbS0+cGVyaW9kaWM7CisJdTMyIHBlcmlvZF9leHBvbmVudCA9IHN0cmVhbS0+ cGVyaW9kX2V4cG9uZW50OworCWludCByZXQ7CisKKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3Jl LCBHRU4xMl9PQUdfT0FfREVCVUcsCisJCQkgICAvKiBEaXNhYmxlIGNsayByYXRpbyByZXBvcnRz LCBsaWtlIHByZXZpb3VzIEdlbnMuICovCisJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0VOMTJf T0FHX09BX0RFQlVHX0RJU0FCTEVfQ0xLX1JBVElPX1JFUE9SVFMgfAorCQkJCQkgICAgICBHRU4x Ml9PQUdfT0FfREVCVUdfSU5DTFVERV9DTEtfUkFUSU8pIHwKKwkJCSAgIC8qCisJCQkgICAgKiBJ ZiB0aGUgdXNlciBkaWRuJ3QgcmVxdWlyZSBPQSByZXBvcnRzLCBpbnN0cnVjdCB0aGUKKwkJCSAg ICAqIGhhcmR3YXJlIG5vdCB0byBlbWl0IGN0eCBzd2l0Y2ggcmVwb3J0cy4KKwkJCSAgICAqLwor CQkJICAgIShzdHJlYW0tPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9SRVBPUlQpID8KKwkJCSAg IF9NQVNLRURfQklUX0VOQUJMRShHRU4xMl9PQUdfT0FfREVCVUdfRElTQUJMRV9DVFhfU1dJVENI X1JFUE9SVFMpIDoKKwkJCSAgIF9NQVNLRURfQklUX0RJU0FCTEUoR0VOMTJfT0FHX09BX0RFQlVH X0RJU0FCTEVfQ1RYX1NXSVRDSF9SRVBPUlRTKSk7CisKKwlpbnRlbF91bmNvcmVfd3JpdGUodW5j b3JlLCBHRU4xMl9PQUdfT0FHTEJDVFhDVFJMLCBwZXJpb2RpYyA/CisJCQkgICAoR0VOMTJfT0FH X09BR0xCQ1RYQ1RSTF9DT1VOVEVSX1JFU1VNRSB8CisJCQkgICAgR0VOMTJfT0FHX09BR0xCQ1RY Q1RSTF9USU1FUl9FTkFCTEUgfAorCQkJICAgIChwZXJpb2RfZXhwb25lbnQgPDwgR0VOMTJfT0FH X09BR0xCQ1RYQ1RSTF9USU1FUl9QRVJJT0RfU0hJRlQpKQorCQkJICAgIDogMCk7CisKKwkvKgor CSAqIFVwZGF0ZSBhbGwgY29udGV4dHMgcHJpb3Igd3JpdGluZyB0aGUgbXV4IGNvbmZpZ3VyYXRp b25zIGFzIHdlIG5lZWQKKwkgKiB0byBtYWtlIHN1cmUgYWxsIHNsaWNlcy9zdWJzbGljZXMgYXJl IE9OIGJlZm9yZSB3cml0aW5nIHRvIE5PQQorCSAqIHJlZ2lzdGVycy4KKwkgKi8KKwlyZXQgPSBs cmNfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJlYW0sIG9hX2NvbmZpZyk7CiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIApAQCAtMjMzMiw3ICsyNDcwLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9k aXNhYmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAlzdHJ1 Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBzdHJlYW0tPnVuY29yZTsKIAogCS8qIFJlc2V0IGFs bCBjb250ZXh0cycgc2xpY2VzL3N1YnNsaWNlcyBjb25maWd1cmF0aW9ucy4gKi8KLQlnZW44X2Nv bmZpZ3VyZV9hbGxfY29udGV4dHMoc3RyZWFtLCBOVUxMKTsKKwlscmNfY29uZmlndXJlX2FsbF9j b250ZXh0cyhzdHJlYW0sIE5VTEwpOwogCiAJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIEdEVF9D SElDS0VOX0JJVFMsIEdUX05PQV9FTkFCTEUsIDApOwogfQpAQCAtMjM0Miw3ICsyNDgwLDcgQEAg c3RhdGljIHZvaWQgZ2VuMTBfZGlzYWJsZV9tZXRyaWNfc2V0KHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0pCiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gc3RyZWFtLT51bmNv cmU7CiAKIAkvKiBSZXNldCBhbGwgY29udGV4dHMnIHNsaWNlcy9zdWJzbGljZXMgY29uZmlndXJh dGlvbnMuICovCi0JZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0cmVhbSwgTlVMTCk7CisJ bHJjX2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RyZWFtLCBOVUxMKTsKIAogCS8qIE1ha2Ugc3Vy ZSB3ZSBkaXNhYmxlIG5vYSB0byBzYXZlIHBvd2VyLiAqLwogCWludGVsX3VuY29yZV9ybXcodW5j b3JlLCBSUE1fQ09ORklHMSwgR0VOMTBfR1RfTk9BX0VOQUJMRSwgMCk7CkBAIC0yNDA0LDYgKzI1 NDIsMjUgQEAgc3RhdGljIHZvaWQgZ2VuOF9vYV9lbmFibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSkKIAkJCSAgIEdFTjhfT0FfQ09VTlRFUl9FTkFCTEUpOwogfQogCitzdGF0aWMg dm9pZCBnZW4xMl9vYV9lbmFibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKK3sK KwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBzdHJlYW0tPnVuY29yZTsKKwl1MzIgcmVw b3J0X2Zvcm1hdCA9IHN0cmVhbS0+b2FfYnVmZmVyLmZvcm1hdDsKKworCS8qCisJICogSWYgd2Ug ZG9uJ3Qgd2FudCBPQSByZXBvcnRzIGZyb20gdGhlIE9BIGJ1ZmZlciwgdGhlbiB3ZSBkb24ndCBl dmVuCisJICogbmVlZCB0byBwcm9ncmFtIHRoZSBPQUcgdW5pdC4KKwkgKi8KKwlpZiAoIShzdHJl YW0tPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9SRVBPUlQpKQorCQlyZXR1cm47CisKKwlnZW4x Ml9pbml0X29hX2J1ZmZlcihzdHJlYW0pOworCisJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwg R0VOMTJfT0FHX09BQ09OVFJPTCwKKwkJCSAgIChyZXBvcnRfZm9ybWF0IDw8IEdFTjEyX09BR19P QUNPTlRST0xfT0FfQ09VTlRFUl9GT1JNQVRfU0hJRlQpIHwKKwkJCSAgIEdFTjEyX09BR19PQUNP TlRST0xfT0FfQ09VTlRFUl9FTkFCTEUpOworfQorCiAvKioKICAqIGk5MTVfb2Ffc3RyZWFtX2Vu YWJsZSAtIGhhbmRsZSBgSTkxNV9QRVJGX0lPQ1RMX0VOQUJMRWAgZm9yIE9BIHN0cmVhbQogICog QHN0cmVhbTogQW4gaTkxNSBwZXJmIHN0cmVhbSBvcGVuZWQgZm9yIE9BIG1ldHJpY3MKQEAgLTI0 NDUsNiArMjYwMiwxOCBAQCBzdGF0aWMgdm9pZCBnZW44X29hX2Rpc2FibGUoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSkKIAkJRFJNX0VSUk9SKCJ3YWl0IGZvciBPQSB0byBiZSBkaXNh YmxlZCB0aW1lZCBvdXRcbiIpOwogfQogCitzdGF0aWMgdm9pZCBnZW4xMl9vYV9kaXNhYmxlKHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCit7CisJc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlID0gc3RyZWFtLT51bmNvcmU7CisKKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBH RU4xMl9PQUdfT0FDT05UUk9MLCAwKTsKKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIodW5j b3JlLAorCQkJCSAgICBHRU4xMl9PQUdfT0FDT05UUk9MLAorCQkJCSAgICBHRU4xMl9PQUdfT0FD T05UUk9MX09BX0NPVU5URVJfRU5BQkxFLCAwLAorCQkJCSAgICA1MCkpCisJCURSTV9FUlJPUigi d2FpdCBmb3IgT0EgdG8gYmUgZGlzYWJsZWQgdGltZWQgb3V0XG4iKTsKK30KKwogLyoqCiAgKiBp OTE1X29hX3N0cmVhbV9kaXNhYmxlIC0gaGFuZGxlIGBJOTE1X1BFUkZfSU9DVExfRElTQUJMRWAg Zm9yIE9BIHN0cmVhbQogICogQHN0cmVhbTogQW4gaTkxNSBwZXJmIHN0cmVhbSBvcGVuZWQgZm9y IE9BIG1ldHJpY3MKQEAgLTI2NDYsNyArMjgxNSw3IEBAIHZvaWQgaTkxNV9vYV9pbml0X3JlZ19z dGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiB7CiAJc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbTsKIAotCS8qIHBlcmYuZXhjbHVzaXZlX3N0cmVhbSBzZXJpYWxpc2Vk IGJ5IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cygpICovCisJLyogcGVyZi5leGNsdXNpdmVf c3RyZWFtIHNlcmlhbGlzZWQgYnkgbHJjX2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoKSAqLwogCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5waW5fbXV0ZXgpOwogCiAJaWYgKGVuZ2luZS0+Y2xhc3Mg IT0gUkVOREVSX0NMQVNTKQpAQCAtMzEyNiwxNiArMzI5NSwyNCBAQCBpOTE1X3BlcmZfb3Blbl9p b2N0bF9sb2NrZWQoc3RydWN0IGk5MTVfcGVyZiAqcGVyZiwKIAkgKiByZXN0IG9mIHRoZSBzeXN0 ZW0sIHdoaWNoIHdlIGNvbnNpZGVyIGFjY2VwdGFibGUgZm9yIGEKIAkgKiBub24tcHJpdmlsZWdl ZCBjbGllbnQuCiAJICoKLQkgKiBGb3IgR2VuOCsgdGhlIE9BIHVuaXQgbm8gbG9uZ2VyIHN1cHBv cnRzIGNsb2NrIGdhdGluZyBvZmYgZm9yIGEKKwkgKiBGb3IgR2VuOC0+MTEgdGhlIE9BIHVuaXQg bm8gbG9uZ2VyIHN1cHBvcnRzIGNsb2NrIGdhdGluZyBvZmYgZm9yIGEKIAkgKiBzcGVjaWZpYyBj b250ZXh0IGFuZCB0aGUga2VybmVsIGNhbid0IHNlY3VyZWx5IHN0b3AgdGhlIGNvdW50ZXJzCiAJ ICogZnJvbSB1cGRhdGluZyBhcyBzeXN0ZW0td2lkZSAvIGdsb2JhbCB2YWx1ZXMuIEV2ZW4gdGhv dWdoIHdlIGNhbgogCSAqIGZpbHRlciByZXBvcnRzIGJhc2VkIG9uIHRoZSBpbmNsdWRlZCBjb250 ZXh0IElEIHdlIGNhbid0IGJsb2NrCiAJICogY2xpZW50cyBmcm9tIHNlZWluZyB0aGUgcmF3IC8g Z2xvYmFsIGNvdW50ZXIgdmFsdWVzIHZpYQogCSAqIE1JX1JFUE9SVF9QRVJGX0NPVU5UIGNvbW1h bmRzIGFuZCBzbyBjb25zaWRlciBpdCBhIHByaXZpbGVnZWQgb3AgdG8KIAkgKiBlbmFibGUgdGhl IE9BIHVuaXQgYnkgZGVmYXVsdC4KKwkgKgorCSAqIEZvciBHZW4xMisgd2UgZ2FpbiBhIG5ldyBP QVIgdW5pdCB0aGF0IG9ubHkgbW9uaXRvcnMgdGhlIFJDUyBvbiBhCisJICogcGVyIGNvbnRleHQg YmFzaXMuIFNvIHdlIGNhbiByZWxheCByZXF1aXJlbWVudHMgdGhlcmUgaWYgdGhlIHVzZXIKKwkg KiBkb2Vzbid0IHJlcXVlc3QgZ2xvYmFsIHN0cmVhbSBhY2Nlc3MgKGkuZS4gcXVlcnkgYmFzZWQg c2FtcGxpbmcKKwkgKiB1c2luZyBNSV9SRUNPUkRfUEVSRl9DT1VOVC4KIAkgKi8KIAlpZiAoSVNf SEFTV0VMTChwZXJmLT5pOTE1KSAmJiBzcGVjaWZpY19jdHggJiYgIXByb3BzLT5ob2xkX3ByZWVt cHRpb24pCiAJCXByaXZpbGVnZWRfb3AgPSBmYWxzZTsKKwllbHNlIGlmIChJU19HRU4ocGVyZi0+ aTkxNSwgMTIpICYmIHNwZWNpZmljX2N0eCAmJgorCQkgKHByb3BzLT5zYW1wbGVfZmxhZ3MgJiBT QU1QTEVfT0FfUkVQT1JUKSA9PSAwKQorCQlwcml2aWxlZ2VkX29wID0gZmFsc2U7CiAKIAkvKiBT aW1pbGFyIHRvIHBlcmYncyBrZXJuZWwucGVyZl9wYXJhbm9pZF9jcHUgc3lzY3RsIG9wdGlvbgog CSAqIHdlIGNoZWNrIGEgZGV2Lmk5MTUucGVyZl9zdHJlYW1fcGFyYW5vaWQgc3lzY3RsIG9wdGlv bgpAQCAtMzQ1MCw3ICszNjI3LDkgQEAgdm9pZCBpOTE1X3BlcmZfcmVnaXN0ZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIAlzeXNmc19hdHRyX2luaXQoJnBlcmYtPnRlc3RfY29u ZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyKTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEp IHsKKwlpZiAoSVNfVElHRVJMQUtFKGk5MTUpKSB7CisJCWk5MTVfcGVyZl9sb2FkX3Rlc3RfY29u ZmlnX3RnbChpOTE1KTsKKwl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgewogCQlp OTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19pY2woaTkxNSk7CiAJfSBlbHNlIGlmIChJU19DQU5O T05MQUtFKGk5MTUpKSB7CiAJCWk5MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX2NubChpOTE1KTsK QEAgLTM2MDEsNiArMzc4MCwyOCBAQCBzdGF0aWMgYm9vbCBjaHZfaXNfdmFsaWRfbXV4X2FkZHIo c3RydWN0IGk5MTVfcGVyZiAqcGVyZiwgdTMyIGFkZHIpCiAJICAgICAgIEFERFJfSU5fUkFOR0Uo YWRkciwgMHgxODIzMDAsIDB4MTgyM0E0KTsKIH0KIAorc3RhdGljIGJvb2wgZ2VuMTJfaXNfdmFs aWRfYl9jb3VudGVyX2FkZHIoc3RydWN0IGk5MTVfcGVyZiAqcGVyZiwgdTMyIGFkZHIpCit7CisJ cmV0dXJuIFJFR19JTl9SQU5HRShhZGRyLCBHRU4xMl9PQUdfT0FTVEFSVFRSSUcxLCBHRU4xMl9P QUdfT0FTVEFSVFRSSUc4KSB8fAorCSAgICAgICBSRUdfSU5fUkFOR0UoYWRkciwgR0VOMTJfT0FH X09BUkVQT1JUVFJJRzEsIEdFTjEyX09BR19PQVJFUE9SVFRSSUc4KSB8fAorCSAgICAgICBSRUdf SU5fUkFOR0UoYWRkciwgR0VOMTJfT0FHX0NFQzBfMCwgR0VOMTJfT0FHX0NFQzdfMSkgfHwKKwkg ICAgICAgUkVHX0lOX1JBTkdFKGFkZHIsIEdFTjEyX09BR19TQ0VDMF8wLCBHRU4xMl9PQUdfU0NF QzdfMSkgfHwKKwkgICAgICAgUkVHX0VRVUFMKGFkZHIsIEdFTjEyX09BQV9EQkdfUkVHKSB8fAor CSAgICAgICBSRUdfRVFVQUwoYWRkciwgR0VOMTJfT0FHX09BX1BFU1MpIHx8CisJICAgICAgIFJF R19FUVVBTChhZGRyLCBHRU4xMl9PQUdfU1BDVFJfQ05GKTsKK30KKworc3RhdGljIGJvb2wgZ2Vu MTJfaXNfdmFsaWRfbXV4X2FkZHIoc3RydWN0IGk5MTVfcGVyZiAqcGVyZiwgdTMyIGFkZHIpCit7 CisJcmV0dXJuIFJFR19FUVVBTChhZGRyLCBOT0FfV1JJVEUpIHx8CisJICAgICAgIFJFR19FUVVB TChhZGRyLCBHRU4xMF9OT0FfV1JJVEVfSElHSCkgfHwKKwkgICAgICAgUkVHX0VRVUFMKGFkZHIs IEdEVF9DSElDS0VOX0JJVFMpIHx8CisJICAgICAgIFJFR19FUVVBTChhZGRyLCBXQUlUX0ZPUl9S QzZfRVhJVCkgfHwKKwkgICAgICAgUkVHX0VRVUFMKGFkZHIsIFJQTV9DT05GSUcwKSB8fAorCSAg ICAgICBSRUdfRVFVQUwoYWRkciwgUlBNX0NPTkZJRzEpIHx8CisJICAgICAgIFJFR19JTl9SQU5H RShhZGRyLCBOT0FfQ09ORklHKDApLCBOT0FfQ09ORklHKDgpKTsKK30KKwogc3RhdGljIHUzMiBt YXNrX3JlZ192YWx1ZSh1MzIgcmVnLCB1MzIgdmFsKQogewogCS8qIEhBTEZfU0xJQ0VfQ0hJQ0tF TjIgaXMgcHJvZ3JhbW1lZCB3aXRoIGEgdGhlCkBAIC0zOTkzLDE0ICs0MTk0LDExIEBAIHZvaWQg aTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCSAqIHdvcnRo IHRoZSBjb21wbGV4aXR5IHRvIG1haW50YWluIG5vdyB0aGF0IEJEVysgZW5hYmxlCiAJCSAqIGV4 ZWNsaXN0IG1vZGUgYnkgZGVmYXVsdC4KIAkJICovCi0JCXBlcmYtPm9hX2Zvcm1hdHMgPSBnZW44 X3BsdXNfb2FfZm9ybWF0czsKLQotCQlwZXJmLT5vcHMub2FfZW5hYmxlID0gZ2VuOF9vYV9lbmFi bGU7Ci0JCXBlcmYtPm9wcy5vYV9kaXNhYmxlID0gZ2VuOF9vYV9kaXNhYmxlOwogCQlwZXJmLT5v cHMucmVhZCA9IGdlbjhfb2FfcmVhZDsKLQkJcGVyZi0+b3BzLm9hX2h3X3RhaWxfcmVhZCA9IGdl bjhfb2FfaHdfdGFpbF9yZWFkOwogCiAJCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgOCwgOSkpIHsK KwkJCXBlcmYtPm9hX2Zvcm1hdHMgPSBnZW44X3BsdXNfb2FfZm9ybWF0czsKKwogCQkJcGVyZi0+ b3BzLmlzX3ZhbGlkX2JfY291bnRlcl9yZWcgPQogCQkJCWdlbjdfaXNfdmFsaWRfYl9jb3VudGVy X2FkZHI7CiAJCQlwZXJmLT5vcHMuaXNfdmFsaWRfbXV4X3JlZyA9CkBAIC00MDEzLDggKzQyMTEs MTEgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IAkJCQkJY2h2X2lzX3ZhbGlkX211eF9hZGRyOwogCQkJfQogCisJCQlwZXJmLT5vcHMub2FfZW5h YmxlID0gZ2VuOF9vYV9lbmFibGU7CisJCQlwZXJmLT5vcHMub2FfZGlzYWJsZSA9IGdlbjhfb2Ff ZGlzYWJsZTsKIAkJCXBlcmYtPm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGdlbjhfZW5hYmxlX21l dHJpY19zZXQ7CiAJCQlwZXJmLT5vcHMuZGlzYWJsZV9tZXRyaWNfc2V0ID0gZ2VuOF9kaXNhYmxl X21ldHJpY19zZXQ7CisJCQlwZXJmLT5vcHMub2FfaHdfdGFpbF9yZWFkID0gZ2VuOF9vYV9od190 YWlsX3JlYWQ7CiAKIAkJCWlmIChJU19HRU4oaTkxNSwgOCkpIHsKIAkJCQlwZXJmLT5jdHhfb2Fj dHhjdHJsX29mZnNldCA9IDB4MTIwOwpAQCAtNDAyOCw2ICs0MjI5LDggQEAgdm9pZCBpOTE1X3Bl cmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJCQlwZXJmLT5nZW44X3Zh bGlkX2N0eF9iaXQgPSBCSVQoMTYpOwogCQkJfQogCQl9IGVsc2UgaWYgKElTX0dFTl9SQU5HRShp OTE1LCAxMCwgMTEpKSB7CisJCQlwZXJmLT5vYV9mb3JtYXRzID0gZ2VuOF9wbHVzX29hX2Zvcm1h dHM7CisKIAkJCXBlcmYtPm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0KIAkJCQlnZW43X2lz X3ZhbGlkX2JfY291bnRlcl9hZGRyOwogCQkJcGVyZi0+b3BzLmlzX3ZhbGlkX211eF9yZWcgPQpA QCAtNDAzNSw4ICs0MjM4LDExIEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCiAJCQlwZXJmLT5vcHMuaXNfdmFsaWRfZmxleF9yZWcgPQogCQkJCWdl bjhfaXNfdmFsaWRfZmxleF9hZGRyOwogCisJCQlwZXJmLT5vcHMub2FfZW5hYmxlID0gZ2VuOF9v YV9lbmFibGU7CisJCQlwZXJmLT5vcHMub2FfZGlzYWJsZSA9IGdlbjhfb2FfZGlzYWJsZTsKIAkJ CXBlcmYtPm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGdlbjhfZW5hYmxlX21ldHJpY19zZXQ7CiAJ CQlwZXJmLT5vcHMuZGlzYWJsZV9tZXRyaWNfc2V0ID0gZ2VuMTBfZGlzYWJsZV9tZXRyaWNfc2V0 OworCQkJcGVyZi0+b3BzLm9hX2h3X3RhaWxfcmVhZCA9IGdlbjhfb2FfaHdfdGFpbF9yZWFkOwog CiAJCQlpZiAoSVNfR0VOKGk5MTUsIDEwKSkgewogCQkJCXBlcmYtPmN0eF9vYWN0eGN0cmxfb2Zm c2V0ID0gMHgxMjg7CkBAIC00MDQ2LDYgKzQyNTIsMjQgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJCQlwZXJmLT5jdHhfZmxleGV1MF9vZmZz ZXQgPSAweDc4ZTsKIAkJCX0KIAkJCXBlcmYtPmdlbjhfdmFsaWRfY3R4X2JpdCA9IEJJVCgxNik7 CisJCX0gZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDEyKSkgeworCQkJcGVyZi0+b2FfZm9ybWF0cyA9 IGdlbjEyX29hX2Zvcm1hdHM7CisKKwkJCXBlcmYtPm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVn ID0KKwkJCQlnZW4xMl9pc192YWxpZF9iX2NvdW50ZXJfYWRkcjsKKwkJCXBlcmYtPm9wcy5pc192 YWxpZF9tdXhfcmVnID0KKwkJCQlnZW4xMl9pc192YWxpZF9tdXhfYWRkcjsKKwkJCXBlcmYtPm9w cy5pc192YWxpZF9mbGV4X3JlZyA9CisJCQkJZ2VuOF9pc192YWxpZF9mbGV4X2FkZHI7CisKKwkJ CXBlcmYtPm9wcy5vYV9lbmFibGUgPSBnZW4xMl9vYV9lbmFibGU7CisJCQlwZXJmLT5vcHMub2Ff ZGlzYWJsZSA9IGdlbjEyX29hX2Rpc2FibGU7CisJCQlwZXJmLT5vcHMuZW5hYmxlX21ldHJpY19z ZXQgPSBnZW4xMl9lbmFibGVfbWV0cmljX3NldDsKKwkJCXBlcmYtPm9wcy5kaXNhYmxlX21ldHJp Y19zZXQgPSBnZW4xMF9kaXNhYmxlX21ldHJpY19zZXQ7CisJCQlwZXJmLT5vcHMub2FfaHdfdGFp bF9yZWFkID0gZ2VuMTJfb2FfaHdfdGFpbF9yZWFkOworCisJCQlwZXJmLT5jdHhfZmxleGV1MF9v ZmZzZXQgPSAwOworCQkJcGVyZi0+Y3R4X29hY3R4Y3RybF9vZmZzZXQgPSAweDE0NDsKIAkJfQog CX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggODU1ZGI4ODg1MTZjLi42ZWYwOWJiYTg5 YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApAQCAtNjg0LDYgKzY4NCw0NSBAQCBzdGF0aWMg aW5saW5lIGJvb2wgaTkxNV9tbWlvX3JlZ192YWxpZChpOTE1X3JlZ190IHJlZykKICNkZWZpbmUg T0FCVUZGRVJfU0laRV84TSAgICAoNiA8PCAzKQogI2RlZmluZSBPQUJVRkZFUl9TSVpFXzE2TSAg ICg3IDw8IDMpCiAKKy8qIEdlbjEyIE9BUiB1bml0ICovCisjZGVmaW5lIEdFTjEyX09BUl9PQUNP TlRST0wgX01NSU8oMHgyOTYwKQorI2RlZmluZSAgR0VOMTJfT0FSX09BQ09OVFJPTF9DT1VOVEVS X0ZPUk1BVF9TSElGVCAxCisjZGVmaW5lICBHRU4xMl9PQVJfT0FDT05UUk9MX0NPVU5URVJfRU5B QkxFICAgICAgICgxIDw8IDApCisKKyNkZWZpbmUgR0VOMTJfT0FDVFhDT05UUk9MIF9NTUlPKDB4 MjM2MCkKKyNkZWZpbmUgR0VOMTJfT0FSX09BU1RBVFVTIF9NTUlPKDB4Mjk2OCkKKworLyogR2Vu MTIgT0FHIHVuaXQgKi8KKyNkZWZpbmUgR0VOMTJfT0FHX09BSEVBRFBUUiBfTU1JTygweGRiMDAp CisjZGVmaW5lICBHRU4xMl9PQUdfT0FIRUFEUFRSX01BU0sgMHhmZmZmZmZjMAorI2RlZmluZSBH RU4xMl9PQUdfT0FUQUlMUFRSIF9NTUlPKDB4ZGIwNCkKKyNkZWZpbmUgIEdFTjEyX09BR19PQVRB SUxQVFJfTUFTSyAweGZmZmZmZmMwCisKKyNkZWZpbmUgR0VOMTJfT0FHX09BQlVGRkVSICBfTU1J TygweGRiMDgpCisjZGVmaW5lICBHRU4xMl9PQUdfT0FCVUZGRVJfQlVGRkVSX1NJWkVfTUFTSyAg KDB4NykKKyNkZWZpbmUgIEdFTjEyX09BR19PQUJVRkZFUl9CVUZGRVJfU0laRV9TSElGVCAoMykK KyNkZWZpbmUgIEdFTjEyX09BR19PQUJVRkZFUl9NRU1PUllfU0VMRUNUICAgICAoMSA8PCAwKSAv KiAwOiBQUEdUVCwgMTogR0dUVCAqLworCisjZGVmaW5lIEdFTjEyX09BR19PQUdMQkNUWENUUkwg X01NSU8oMHgyYjI4KQorI2RlZmluZSAgR0VOMTJfT0FHX09BR0xCQ1RYQ1RSTF9USU1FUl9QRVJJ T0RfU0hJRlQgMgorI2RlZmluZSAgR0VOMTJfT0FHX09BR0xCQ1RYQ1RSTF9USU1FUl9FTkFCTEUg ICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgIEdFTjEyX09BR19PQUdMQkNUWENUUkxfQ09VTlRFUl9S RVNVTUUgICAgICgxIDw8IDApCisKKyNkZWZpbmUgR0VOMTJfT0FHX09BQ09OVFJPTCBfTU1JTygw eGRhZjQpCisjZGVmaW5lICBHRU4xMl9PQUdfT0FDT05UUk9MX09BX0NPVU5URVJfRk9STUFUX1NI SUZUIDIKKyNkZWZpbmUgIEdFTjEyX09BR19PQUNPTlRST0xfT0FfQ09VTlRFUl9FTkFCTEUgICAg ICAgKDEgPDwgMCkKKworI2RlZmluZSBHRU4xMl9PQUdfT0FfREVCVUcgX01NSU8oMHhkYWY4KQor I2RlZmluZSAgR0VOMTJfT0FHX09BX0RFQlVHX0lOQ0xVREVfQ0xLX1JBVElPICAgICAgICAgICgx IDw8IDYpCisjZGVmaW5lICBHRU4xMl9PQUdfT0FfREVCVUdfRElTQUJMRV9DTEtfUkFUSU9fUkVQ T1JUUyAgKDEgPDwgNSkKKyNkZWZpbmUgIEdFTjEyX09BR19PQV9ERUJVR19ESVNBQkxFX0dPXzFf MF9SRVBPUlRTICAgICAoMSA8PCAyKQorI2RlZmluZSAgR0VOMTJfT0FHX09BX0RFQlVHX0RJU0FC TEVfQ1RYX1NXSVRDSF9SRVBPUlRTICgxIDw8IDEpCisKKyNkZWZpbmUgR0VOMTJfT0FHX09BU1RB VFVTIF9NTUlPKDB4ZGFmYykKKyNkZWZpbmUgIEdFTjEyX09BR19PQVNUQVRVU19DT1VOVEVSX09W RVJGTE9XICgxIDw8IDIpCisjZGVmaW5lICBHRU4xMl9PQUdfT0FTVEFUVVNfQlVGRkVSX09WRVJG TE9XICAoMSA8PCAxKQorI2RlZmluZSAgR0VOMTJfT0FHX09BU1RBVFVTX1JFUE9SVF9MT1NUICAg ICAgKDEgPDwgMCkKKwogLyoKICAqIEZsZXhpYmxlLCBBZ2dyZWdhdGUgRVUgQ291bnRlciBSZWdp c3RlcnMuCiAgKiBOb3RlOiB0aGVzZSBhcmVuJ3QgY29udGlndW91cwpAQCAtOTIwLDYgKzk1OSwy NiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9tbWlvX3JlZ192YWxpZChpOTE1X3JlZ190IHJl ZykKICNkZWZpbmUgT0FSRVBPUlRUUklHOF9OT0FfU0VMRUNUXzZfU0hJRlQgICAgMjQKICNkZWZp bmUgT0FSRVBPUlRUUklHOF9OT0FfU0VMRUNUXzdfU0hJRlQgICAgMjgKIAorLyogU2FtZSBsYXlv dXQgYXMgT0FTVEFSVFRSSUdYICovCisjZGVmaW5lIEdFTjEyX09BR19PQVNUQVJUVFJJRzEgX01N SU8oMHhkOTAwKQorI2RlZmluZSBHRU4xMl9PQUdfT0FTVEFSVFRSSUcyIF9NTUlPKDB4ZDkwNCkK KyNkZWZpbmUgR0VOMTJfT0FHX09BU1RBUlRUUklHMyBfTU1JTygweGQ5MDgpCisjZGVmaW5lIEdF TjEyX09BR19PQVNUQVJUVFJJRzQgX01NSU8oMHhkOTBjKQorI2RlZmluZSBHRU4xMl9PQUdfT0FT VEFSVFRSSUc1IF9NTUlPKDB4ZDkxMCkKKyNkZWZpbmUgR0VOMTJfT0FHX09BU1RBUlRUUklHNiBf TU1JTygweGQ5MTQpCisjZGVmaW5lIEdFTjEyX09BR19PQVNUQVJUVFJJRzcgX01NSU8oMHhkOTE4 KQorI2RlZmluZSBHRU4xMl9PQUdfT0FTVEFSVFRSSUc4IF9NTUlPKDB4ZDkxYykKKworLyogU2Ft ZSBsYXlvdXQgYXMgT0FSRVBPUlRUUklHWCAqLworI2RlZmluZSBHRU4xMl9PQUdfT0FSRVBPUlRU UklHMSBfTU1JTygweGQ5MjApCisjZGVmaW5lIEdFTjEyX09BR19PQVJFUE9SVFRSSUcyIF9NTUlP KDB4ZDkyNCkKKyNkZWZpbmUgR0VOMTJfT0FHX09BUkVQT1JUVFJJRzMgX01NSU8oMHhkOTI4KQor I2RlZmluZSBHRU4xMl9PQUdfT0FSRVBPUlRUUklHNCBfTU1JTygweGQ5MmMpCisjZGVmaW5lIEdF TjEyX09BR19PQVJFUE9SVFRSSUc1IF9NTUlPKDB4ZDkzMCkKKyNkZWZpbmUgR0VOMTJfT0FHX09B UkVQT1JUVFJJRzYgX01NSU8oMHhkOTM0KQorI2RlZmluZSBHRU4xMl9PQUdfT0FSRVBPUlRUUklH NyBfTU1JTygweGQ5MzgpCisjZGVmaW5lIEdFTjEyX09BR19PQVJFUE9SVFRSSUc4IF9NTUlPKDB4 ZDkzYykKKwogLyogQ0VDWF8wICovCiAjZGVmaW5lIE9BQ0VDX0NPTVBBUkVfTEVTU19PUl9FUVVB TAk2CiAjZGVmaW5lIE9BQ0VDX0NPTVBBUkVfTk9UX0VRVUFMCQk1CkBAIC05MzYsNiArOTk1LDEw IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X21taW9fcmVnX3ZhbGlkKGk5MTVfcmVnX3QgcmVn KQogI2RlZmluZSBPQUNFQ19TRUxFQ1RfUFJFVgkoMSA8PCAxOSkKICNkZWZpbmUgT0FDRUNfU0VM RUNUX0JPT0xFQU4JKDIgPDwgMTkpCiAKKy8qIDExLWJpdCBhcnJheSAwOiBwYXNzLXRocm91Z2gs IDE6IG5lZ2F0ZWQgKi8KKyNkZWZpbmUgR0VOMTJfT0FTQ0VDX05FR0FURV9NQVNLICAweDdmZgor I2RlZmluZSBHRU4xMl9PQVNDRUNfTkVHQVRFX1NISUZUIDIxCisKIC8qIENFQ1hfMSAqLwogI2Rl ZmluZSBPQUNFQ19NQVNLX01BU0sJCSAgICAweGZmZmYKICNkZWZpbmUgT0FDRUNfQ09OU0lERVJB VElPTlNfTUFTSyAgIDB4ZmZmZgpAQCAtOTU4LDYgKzEwMjEsNDIgQEAgc3RhdGljIGlubGluZSBi b29sIGk5MTVfbW1pb19yZWdfdmFsaWQoaTkxNV9yZWdfdCByZWcpCiAjZGVmaW5lIE9BQ0VDN18w IF9NTUlPKDB4MjdhOCkKICNkZWZpbmUgT0FDRUM3XzEgX01NSU8oMHgyN2FjKQogCisvKiBTYW1l IGxheW91dCBhcyBDRUNYX1kgKi8KKyNkZWZpbmUgR0VOMTJfT0FHX0NFQzBfMCBfTU1JTygweGQ5 NDApCisjZGVmaW5lIEdFTjEyX09BR19DRUMwXzEgX01NSU8oMHhkOTQ0KQorI2RlZmluZSBHRU4x Ml9PQUdfQ0VDMV8wIF9NTUlPKDB4ZDk0OCkKKyNkZWZpbmUgR0VOMTJfT0FHX0NFQzFfMSBfTU1J TygweGQ5NGMpCisjZGVmaW5lIEdFTjEyX09BR19DRUMyXzAgX01NSU8oMHhkOTUwKQorI2RlZmlu ZSBHRU4xMl9PQUdfQ0VDMl8xIF9NTUlPKDB4ZDk1NCkKKyNkZWZpbmUgR0VOMTJfT0FHX0NFQzNf MCBfTU1JTygweGQ5NTgpCisjZGVmaW5lIEdFTjEyX09BR19DRUMzXzEgX01NSU8oMHhkOTVjKQor I2RlZmluZSBHRU4xMl9PQUdfQ0VDNF8wIF9NTUlPKDB4ZDk2MCkKKyNkZWZpbmUgR0VOMTJfT0FH X0NFQzRfMSBfTU1JTygweGQ5NjQpCisjZGVmaW5lIEdFTjEyX09BR19DRUM1XzAgX01NSU8oMHhk OTY4KQorI2RlZmluZSBHRU4xMl9PQUdfQ0VDNV8xIF9NTUlPKDB4ZDk2YykKKyNkZWZpbmUgR0VO MTJfT0FHX0NFQzZfMCBfTU1JTygweGQ5NzApCisjZGVmaW5lIEdFTjEyX09BR19DRUM2XzEgX01N SU8oMHhkOTc0KQorI2RlZmluZSBHRU4xMl9PQUdfQ0VDN18wIF9NTUlPKDB4ZDk3OCkKKyNkZWZp bmUgR0VOMTJfT0FHX0NFQzdfMSBfTU1JTygweGQ5N2MpCisKKy8qIFNhbWUgbGF5b3V0IGFzIENF Q1hfWSArIG5lZ2F0ZSAxMS1iaXQgYXJyYXkgKi8KKyNkZWZpbmUgR0VOMTJfT0FHX1NDRUMwXzAg X01NSU8oMHhkYzAwKQorI2RlZmluZSBHRU4xMl9PQUdfU0NFQzBfMSBfTU1JTygweGRjMDQpCisj ZGVmaW5lIEdFTjEyX09BR19TQ0VDMV8wIF9NTUlPKDB4ZGMwOCkKKyNkZWZpbmUgR0VOMTJfT0FH X1NDRUMxXzEgX01NSU8oMHhkYzBjKQorI2RlZmluZSBHRU4xMl9PQUdfU0NFQzJfMCBfTU1JTygw eGRjMTApCisjZGVmaW5lIEdFTjEyX09BR19TQ0VDMl8xIF9NTUlPKDB4ZGMxNCkKKyNkZWZpbmUg R0VOMTJfT0FHX1NDRUMzXzAgX01NSU8oMHhkYzE4KQorI2RlZmluZSBHRU4xMl9PQUdfU0NFQzNf MSBfTU1JTygweGRjMWMpCisjZGVmaW5lIEdFTjEyX09BR19TQ0VDNF8wIF9NTUlPKDB4ZGMyMCkK KyNkZWZpbmUgR0VOMTJfT0FHX1NDRUM0XzEgX01NSU8oMHhkYzI0KQorI2RlZmluZSBHRU4xMl9P QUdfU0NFQzVfMCBfTU1JTygweGRjMjgpCisjZGVmaW5lIEdFTjEyX09BR19TQ0VDNV8xIF9NTUlP KDB4ZGMyYykKKyNkZWZpbmUgR0VOMTJfT0FHX1NDRUM2XzAgX01NSU8oMHhkYzMwKQorI2RlZmlu ZSBHRU4xMl9PQUdfU0NFQzZfMSBfTU1JTygweGRjMzQpCisjZGVmaW5lIEdFTjEyX09BR19TQ0VD N18wIF9NTUlPKDB4ZGMzOCkKKyNkZWZpbmUgR0VOMTJfT0FHX1NDRUM3XzEgX01NSU8oMHhkYzNj KQorCiAvKiBPQSBwZXJmIGNvdW50ZXJzICovCiAjZGVmaW5lIE9BX1BFUkZDTlQxX0xPICAgICAg X01NSU8oMHg5MUI4KQogI2RlZmluZSBPQV9QRVJGQ05UMV9ISSAgICAgIF9NTUlPKDB4OTFCQykK QEAgLTEwMzgsNiArMTEzNywxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9tbWlvX3JlZ192 YWxpZChpOTE1X3JlZ190IHJlZykKICNkZWZpbmUgTUlDUk9fQlAzX0NPVU5UX1NUQVRVUzIzCV9N TUlPKDB4OTgzOCkKICNkZWZpbmUgTUlDUk9fQlBfRklSRURfQVJNRUQJCV9NTUlPKDB4OTgzQykK IAorI2RlZmluZSBHRU4xMl9PQUFfREJHX1JFRyBfTU1JTygweGRjNDQpCisjZGVmaW5lIEdFTjEy X09BR19PQV9QRVNTIF9NTUlPKDB4MmIyYykKKyNkZWZpbmUgR0VOMTJfT0FHX1NQQ1RSX0NORiBf TU1JTygweGRjNDApCisKICNkZWZpbmUgR0RUX0NISUNLRU5fQklUUyAgICBfTU1JTygweDk4NDAp CiAjZGVmaW5lICAgR1RfTk9BX0VOQUJMRQkgICAgMHgwMDAwMDA4MAogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9vYS9pOTE1X29hX3RnbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvb2EvaTkxNV9vYV90Z2wuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmEyOWQ5MzcwNzM0NQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L29hL2k5MTVfb2FfdGdsLmMKQEAgLTAsMCArMSwxMjEgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgor ICoKKyAqIEF1dG9nZW5lcmF0ZWQgZmlsZSBieSBHUFUgVG9wIDogaHR0cHM6Ly9naXRodWIuY29t L3JpYi9ncHV0b3AKKyAqIERPIE5PVCBFRElUIG1hbnVhbGx5IQorICovCisKKyNpbmNsdWRlIDxs aW51eC9zeXNmcy5oPgorCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X29h X3RnbC5oIgorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25m aWdfdGVzdF9vYVtdID0geworCXsgX01NSU8oMHhEOTIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01N SU8oMHhEOTAwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHhEOTA0KSwgMHhGMDgwMDAwMCB9 LAorCXsgX01NSU8oMHhEOTEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHhEOTE0KSwgMHhG MDgwMDAwMCB9LAorCXsgX01NSU8oMHhEQzQwKSwgMHgwMEZGMDAwMCB9LAorCXsgX01NSU8oMHhE OTQwKSwgMHgwMDAwMDAwNCB9LAorCXsgX01NSU8oMHhEOTQ0KSwgMHgwMDAwRkZGRiB9LAorCXsg X01NSU8oMHhEQzAwKSwgMHgwMDAwMDAwNCB9LAorCXsgX01NSU8oMHhEQzA0KSwgMHgwMDAwRkZG RiB9LAorCXsgX01NSU8oMHhEOTQ4KSwgMHgwMDAwMDAwMyB9LAorCXsgX01NSU8oMHhEOTRDKSwg MHgwMDAwRkZGRiB9LAorCXsgX01NSU8oMHhEQzA4KSwgMHgwMDAwMDAwMyB9LAorCXsgX01NSU8o MHhEQzBDKSwgMHgwMDAwRkZGRiB9LAorCXsgX01NSU8oMHhEOTUwKSwgMHgwMDAwMDAwNyB9LAor CXsgX01NSU8oMHhEOTU0KSwgMHgwMDAwRkZGRiB9LAorCXsgX01NSU8oMHhEQzEwKSwgMHgwMDAw MDAwNyB9LAorCXsgX01NSU8oMHhEQzE0KSwgMHgwMDAwRkZGRiB9LAorCXsgX01NSU8oMHhEOTU4 KSwgMHgwMDEwMDAwMiB9LAorCXsgX01NSU8oMHhEOTVDKSwgMHgwMDAwRkZGNyB9LAorCXsgX01N SU8oMHhEQzE4KSwgMHgwMDEwMDAwMiB9LAorCXsgX01NSU8oMHhEQzFDKSwgMHgwMDAwRkZGNyB9 LAorCXsgX01NSU8oMHhEOTYwKSwgMHgwMDEwMDAwMiB9LAorCXsgX01NSU8oMHhEOTY0KSwgMHgw MDAwRkZDRiB9LAorCXsgX01NSU8oMHhEQzIwKSwgMHgwMDEwMDAwMiB9LAorCXsgX01NSU8oMHhE QzI0KSwgMHgwMDAwRkZDRiB9LAorCXsgX01NSU8oMHhEOTY4KSwgMHgwMDEwMDA4MiB9LAorCXsg X01NSU8oMHhEOTZDKSwgMHgwMDAwRkZFRiB9LAorCXsgX01NSU8oMHhEQzI4KSwgMHgwMDEwMDA4 MiB9LAorCXsgX01NSU8oMHhEQzJDKSwgMHgwMDAwRkZFRiB9LAorCXsgX01NSU8oMHhEOTcwKSwg MHgwMDEwMDBDMiB9LAorCXsgX01NSU8oMHhEOTc0KSwgMHgwMDAwRkZFNyB9LAorCXsgX01NSU8o MHhEQzMwKSwgMHgwMDEwMDBDMiB9LAorCXsgX01NSU8oMHhEQzM0KSwgMHgwMDAwRkZFNyB9LAor CXsgX01NSU8oMHhEOTc4KSwgMHgwMDEwMDAwMSB9LAorCXsgX01NSU8oMHhEOTdDKSwgMHgwMDAw RkZFNyB9LAorCXsgX01NSU8oMHhEQzM4KSwgMHgwMDEwMDAwMSB9LAorCXsgX01NSU8oMHhEQzND KSwgMHgwMDAwRkZFNyB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBm bGV4X2V1X2NvbmZpZ190ZXN0X29hW10gPSB7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIG11eF9jb25maWdfdGVzdF9vYVtdID0geworCXsgX01NSU8oMHgwRDA0KSwgMHgw MDAwMDIwMCB9LAorCXsgX01NSU8oMHg5ODQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg0KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyODBFMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxRTBFMDE0NyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxODBFMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNjBFMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxRTBGMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxRTEwNDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgyRTAyMDEwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyQzAzMDAwNCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgzODAwMzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxRTBB ODAwMCB9LAorCXsgX01NSU8oMHg5ODg0KSwgMHgwMDAwMDAwMyB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0OTExMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1RDEwMTQwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxRDE0MDAyMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxRDExMDNBMyB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMTExMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg2 MTExMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxRjEyODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxNzEwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NTEwMDYzMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHg1NzEwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMTEwMDAw MCB9LAorCXsgX01NSU8oMHg5ODg0KSwgMHgwMDAwMDAwMyB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHg2NTEwMDAwMiB9LAorCXsgX01NSU8oMHg5ODg0KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHg0MjAwMDAwMSB9LAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfdGVzdF9v YV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjFcbiIpOworfQorCit2b2lkCitp OTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ190Z2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQoreworCXN0cmxjcHkoZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcudXVpZCwKKwkJ IjgwYTgzM2YwLTI1MDQtNDMyMS04ODk0LWU5Mjc3ODQ0Y2U3YiIsCisJCXNpemVvZihkZXZfcHJp di0+cGVyZi50ZXN0X2NvbmZpZy51dWlkKSk7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcu aWQgPSAxOworCisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcubXV4X3JlZ3MgPSBtdXhfY29u ZmlnX3Rlc3Rfb2E7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcubXV4X3JlZ3NfbGVuID0g QVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCisJZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuYl9jb3VudGVyX3JlZ3MgPSBiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2E7CisJZGV2X3By aXYtPnBlcmYudGVzdF9jb25maWcuYl9jb3VudGVyX3JlZ3NfbGVuID0gQVJSQVlfU0laRShiX2Nv dW50ZXJfY29uZmlnX3Rlc3Rfb2EpOworCisJZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuZmxl eF9yZWdzID0gZmxleF9ldV9jb25maWdfdGVzdF9vYTsKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2Nv bmZpZy5mbGV4X3JlZ3NfbGVuID0gQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZXN0X29hKTsK KworCWRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYy5uYW1lID0gIjgwYTgz M2YwLTI1MDQtNDMyMS04ODk0LWU5Mjc3ODQ0Y2U3YiI7CisJZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuc3lzZnNfbWV0cmljLmF0dHJzID0gZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcuYXR0 cnM7CisKKwlkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5hdHRyc1swXSA9ICZkZXZfcHJpdi0+ cGVyZi50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWNfaWQuYXR0cjsKKworCWRldl9wcml2LT5wZXJm LnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm5hbWUgPSAiaWQiOworCWRldl9wcml2 LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5hdHRyLm1vZGUgPSAwNDQ0OworCWRl dl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpY19pZC5zaG93ID0gc2hvd190ZXN0 X29hX2lkOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvb2EvaTkxNV9vYV90 Z2wuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L29hL2k5MTVfb2FfdGdsLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40YzI1ZjBiZTgyNWMKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9vYS9pOTE1X29hX3RnbC5oCkBAIC0wLDAgKzEsMTYg QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQg wqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIEF1dG9nZW5lcmF0ZWQgZmlsZSBieSBH UFUgVG9wIDogaHR0cHM6Ly9naXRodWIuY29tL3JpYi9ncHV0b3AKKyAqIERPIE5PVCBFRElUIG1h bnVhbGx5IQorICovCisKKyNpZm5kZWYgX19JOTE1X09BX1RHTF9IX18KKyNkZWZpbmUgX19JOTE1 X09BX1RHTF9IX18KKworc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7CisKK3ZvaWQgaTkxNV9wZXJm X2xvYWRfdGVzdF9jb25maWdfdGdsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CisKKyNlbmRpZgotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZng=