From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v2 13/15] tools: implement new generic get value interface and MBA get value command Date: Thu, 24 Aug 2017 09:14:47 +0800 Message-ID: <1503537289-56036-14-git-send-email-yi.y.sun@linux.intel.com> References: <1503537289-56036-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dkh0q-00019P-15 for xen-devel@lists.xenproject.org; Thu, 24 Aug 2017 01:32:48 +0000 In-Reply-To: <1503537289-56036-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , julien.grall@arm.com, mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGdlbmVyaWMgZ2V0IHZhbHVlIGludGVyZmFjZXMgaW4gbGli eGMgYW5kIGxpYnhsLgpJdCBhbHNvIHJlZmFjdG9ycyB0aGUgZ2V0IHZhbHVlIGZsb3cgaW4geGwg dG8gbWFrZSBpdCBiZSBzdWl0YWJsZSBmb3IgYWxsCmFsbG9jYXRpb24gZmVhdHVyZXMuIEJhc2Vk IG9uIHRoYXQsIGEgbmV3IE1CQSBnZXQgdmFsdWUgY29tbWFuZCBpcyBhZGRlZCBpbiB4bC4KClNp Z25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgpBY2tlZC1ieTog V2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCnYyOgogICAgLSBjaGFuZ2UgJ0NBVF9J TkZPJy8nTUJBX0lORk8nIHRvICdDQVQnLydNQkEnLiBUaGUgcmVsYXRlZCBzdHJ1Y3R1cmUgbmFt ZXMKICAgICAgYXJlIGNoYW5nZWQgdG9vLgogICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykK LS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICAgNyArLQogdG9vbHMvbGlieGMv eGNfcHNyLmMgICAgICAgICAgfCAgIDkgKy0KIHRvb2xzL2xpYnhsL2xpYnhsX3Bzci5jICAgICAg IHwgIDUxICsrKysrKysrLS0tLQogdG9vbHMveGwveGwuaCAgICAgICAgICAgICAgICAgfCAgIDEg KwogdG9vbHMveGwveGxfY21kdGFibGUuYyAgICAgICAgfCAgIDUgKysKIHRvb2xzL3hsL3hsX3Bz ci5jICAgICAgICAgICAgIHwgMTg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9s aWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRleCBmMWM2MjllLi5kN2VhYmZiIDEwMDY0NAotLS0g YS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRl L3hlbmN0cmwuaApAQCAtMjQ1NSw2ICsyNDU1LDcgQEAgZW51bSB4Y19wc3JfdmFsX3R5cGUgewog ICAgIFhDX1BTUl9DQVRfTDNfQ0JNX0NPREUgPSAyLAogICAgIFhDX1BTUl9DQVRfTDNfQ0JNX0RB VEEgPSAzLAogICAgIFhDX1BTUl9DQVRfTDJfQ0JNICAgICAgPSA0LAorICAgIFhDX1BTUl9NQkFf VEhSVEwgICAgICAgPSA1LAogfTsKIHR5cGVkZWYgZW51bSB4Y19wc3JfdmFsX3R5cGUgeGNfcHNy X3ZhbF90eXBlOwogCkBAIC0yNTAxLDkgKzI1MDIsOSBAQCBpbnQgeGNfcHNyX2NtdF9lbmFibGVk KHhjX2ludGVyZmFjZSAqeGNoKTsKIGludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeGNfcHNyX3ZhbF90eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdldCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhKTsKLWludCB4Y19wc3JfY2F0X2dldF9k b21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3ZhbF90eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdl dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7CitpbnQg eGNfcHNyX2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdmFsX3R5cGUgdHlwZSwgdWludDMy X3QgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKmRhdGEpOwog aW50IHhjX3Bzcl9nZXRfaHdfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qgc29ja2V0 LAogICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfZmVhdF90eXBlIHR5cGUsIHhjX3Bzcl9o d19pbmZvICpod19pbmZvKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHNyLmMgYi90 b29scy9saWJ4Yy94Y19wc3IuYwppbmRleCBjNjllOTQzLi5kZTUwMWIwIDEwMDY0NAotLS0gYS90 b29scy9saWJ4Yy94Y19wc3IuYworKysgYi90b29scy9saWJ4Yy94Y19wc3IuYwpAQCAtMjgzLDkg KzI4Myw5IEBAIGludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhj aCwgdWludDMyX3QgZG9taWQsCiAgICAgcmV0dXJuIGRvX2RvbWN0bCh4Y2gsICZkb21jdGwpOwog fQogCi1pbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVp bnQzMl90IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl92YWxf dHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDY0X3QgKmRhdGEpCitpbnQgeGNfcHNyX2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19w c3JfdmFsX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDY0X3QgKmRhdGEpCiB7CiAgICAgaW50IHJjOwogICAgIERFQ0xBUkVfRE9NQ1RM OwpAQCAtMzA1LDYgKzMwNSw5IEBAIGludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgY2FzZSBYQ19QU1JfQ0FUX0wyX0NC TToKICAgICAgICAgY21kID0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MMl9DQk07CiAgICAg ICAgIGJyZWFrOworICAgIGNhc2UgWENfUFNSX01CQV9USFJUTDoKKyAgICAgICAgY21kID0gWEVO X0RPTUNUTF9QU1JfTUJBX09QX0dFVF9USFJUTDsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs dDoKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKaW5k ZXggYzk3ZGNhNC4uMWYyZWVlMiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMK KysrIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKQEAgLTcxLDE2ICs3MSwzMCBAQCBzdGF0aWMg dm9pZCBsaWJ4bF9fcHNyX2NtdF9sb2dfZXJyX21zZyhsaWJ4bF9fZ2MgKmdjLCBpbnQgZXJyKQog ICAgIExPR0UoRVJST1IsICIlcyIsIG1zZyk7CiB9CiAKLXN0YXRpYyB2b2lkIGxpYnhsX19wc3Jf Y2F0X2xvZ19lcnJfbXNnKGxpYnhsX19nYyAqZ2MsIGludCBlcnIpCitzdGF0aWMgdm9pZCBsaWJ4 bF9fcHNyX2FsbG9jX2xvZ19lcnJfbXNnKGxpYnhsX19nYyAqZ2MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlcnIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9jYm1fdHlwZSB0eXBlKQogeworICAgIC8qCisg ICAgICogSW5kZXggaXMgJ2xpYnhsX3Bzcl9jYm1fdHlwZScgc28gd2Ugc2V0IHR3byAnQ0RQJyB0 byBjb3JyZXNwb25kIHRvCisgICAgICogREFUQSBhbmQgQ09ERS4KKyAgICAgKi8KKyAgICBjb25z dCBjaGFyICogY29uc3QgZmVhdF9uYW1lWzZdID0geworICAgICAgICAiVU5LTk9XTiIsCisgICAg ICAgICJMMyBDQVQiLAorICAgICAgICAiQ0RQIiwKKyAgICAgICAgIkNEUCIsCisgICAgICAgICJM MiBDQVQiLAorICAgICAgICAiTUJBIiwKKyAgICB9OwogICAgIGNoYXIgKm1zZzsKIAogICAgIHN3 aXRjaCAoZXJyKSB7CiAgICAgY2FzZSBFTk9ERVY6Ci0gICAgICAgIG1zZyA9ICJDQVQgaXMgbm90 IHN1cHBvcnRlZCBpbiB0aGlzIHN5c3RlbSI7CisgICAgICAgIG1zZyA9ICJpcyBub3Qgc3VwcG9y dGVkIGluIHRoaXMgc3lzdGVtIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFTk9FTlQ6Ci0g ICAgICAgIG1zZyA9ICJDQVQgaXMgbm90IGVuYWJsZWQgb24gdGhlIHNvY2tldCI7CisgICAgICAg IG1zZyA9ICJpcyBub3QgZW5hYmxlZCBvbiB0aGUgc29ja2V0IjsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSBFT1ZFUkZMT1c6CiAgICAgICAgIG1zZyA9ICJubyBmcmVlIENPUyBhdmFpbGFibGUi OwpAQCAtMTA2LDcgKzEyMCw3IEBAIHN0YXRpYyB2b2lkIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJf bXNnKGxpYnhsX19nYyAqZ2MsIGludCBlcnIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg ICBMT0dFKEVSUk9SLCAiJXMiLCBtc2cpOworICAgIExPR0UoRVJST1IsICIlczogJXMiLCBmZWF0 X25hbWVbdHlwZV0sIG1zZyk7CiB9CiAKIHN0YXRpYyBpbnQgbGlieGxfX3BpY2tfc29ja2V0X2Nw dShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBzb2NrZXRpZCkKQEAgLTMzMyw3ICszNDcsNyBAQCBp bnQgbGlieGxfcHNyX2NhdF9zZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwK ICAgICAgICAgeGNfdHlwZSA9IGxpYnhsX19wc3JfY2JtX3R5cGVfdG9fbGlieGNfcHNyX3ZhbF90 eXBlKHR5cGUpOwogICAgICAgICBpZiAoeGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoY3R4LT54 Y2gsIGRvbWlkLCB4Y190eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc29ja2V0aWQsIGNibSkpIHsKLSAgICAgICAgICAgIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJf bXNnKGdjLCBlcnJubyk7CisgICAgICAgICAgICBsaWJ4bF9fcHNyX2FsbG9jX2xvZ19lcnJfbXNn KGdjLCBlcnJubywgdHlwZSk7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAg IH0KICAgICB9CkBAIC0zNDcsMTggKzM2MSw3IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9jYm0o bGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50NjRfdCAqY2JtX3IpCiB7Ci0gICAgR0NfSU5JVChjdHgpOwotICAg IGludCByYyA9IDA7Ci0gICAgeGNfcHNyX3ZhbF90eXBlIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX2Ni bV90eXBlX3RvX2xpYnhjX3Bzcl92YWxfdHlwZSh0eXBlKTsKLQotICAgIGlmICh4Y19wc3JfY2F0 X2dldF9kb21haW5fZGF0YShjdHgtPnhjaCwgZG9taWQsIHhjX3R5cGUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCwgY2JtX3IpKSB7Ci0gICAgICAgIGxpYnhsX19w c3JfY2F0X2xvZ19lcnJfbXNnKGdjLCBlcnJubyk7Ci0gICAgICAgIHJjID0gRVJST1JfRkFJTDsK LSAgICB9Ci0KLSAgICBHQ19GUkVFOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gbGlieGxf cHNyX2dldF92YWwoY3R4LCBkb21pZCwgdHlwZSwgdGFyZ2V0LCBjYm1fcik7CiB9CiAKIHN0YXRp YyBpbmxpbmUgeGNfcHNyX2ZlYXRfdHlwZSBsaWJ4bF9fcHNyX2ZlYXRfdHlwZV90b19saWJ4Y19w c3JfZmVhdF90eXBlKApAQCAtNDYxLDcgKzQ2NCwxOSBAQCBpbnQgbGlieGxfcHNyX2dldF92YWwo bGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgIGxp YnhsX3Bzcl9jYm1fdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgdGFyZ2V0LAogICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ2NF90ICp2YWwpCiB7Ci0gICAgcmV0dXJuIEVSUk9SX0ZBSUw7CisgICAg R0NfSU5JVChjdHgpOworICAgIGludCByYyA9IDA7CisKKyAgICB4Y19wc3JfdmFsX3R5cGUgeGNf dHlwZSA9IGxpYnhsX19wc3JfY2JtX3R5cGVfdG9fbGlieGNfcHNyX3ZhbF90eXBlKHR5cGUpOwor CisgICAgaWYgKHhjX3Bzcl9nZXRfZG9tYWluX2RhdGEoY3R4LT54Y2gsIGRvbWlkLCB4Y190eXBl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCwgdmFsKSkgeworICAgICAg ICBsaWJ4bF9fcHNyX2FsbG9jX2xvZ19lcnJfbXNnKGdjLCBlcnJubywgdHlwZSk7CisgICAgICAg IHJjID0gRVJST1JfRkFJTDsKKyAgICB9CisKKyAgICBHQ19GUkVFOworICAgIHJldHVybiByYzsK IH0KIAogc3RhdGljIGlubGluZSBpbnQgbGlieGNfX3Bzcl9od19pbmZvX3RvX2xpYnhsX3Bzcl9o d19pbmZvKApkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGwuaCBiL3Rvb2xzL3hsL3hsLmgKaW5kZXgg YWE5NWI3Ny4uNTkwNjVjNCAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGwuaAorKysgYi90b29scy94 bC94bC5oCkBAIC0yMDYsNiArMjA2LDcgQEAgaW50IG1haW5fcHNyX2NtdF9zaG93KGludCBhcmdj LCBjaGFyICoqYXJndik7CiAjaWZkZWYgTElCWExfSEFWRV9QU1JfQ0FUCiBpbnQgbWFpbl9wc3Jf Y2F0X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Bzcl9jYXRfc2hv dyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1haW5fcHNyX21iYV9zaG93KGludCBhcmdj LCBjaGFyICoqYXJndik7CiAjZW5kaWYKIGludCBtYWluX3FlbXVfbW9uaXRvcl9jb21tYW5kKGlu dCBhcmdjLCBjaGFyICoqYXJndik7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxl LmMgYi90b29scy94bC94bF9jbWR0YWJsZS5jCmluZGV4IDVhYzhhN2UuLjE5ZTUwMDQgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKKysrIGIvdG9vbHMveGwveGxfY21kdGFibGUu YwpAQCAtNTYyLDYgKzU2MiwxMSBAQCBzdHJ1Y3QgY21kX3NwZWMgY21kX3RhYmxlW10gPSB7CiAg ICAgICAiW29wdGlvbnNdIDxEb21haW4+IiwKICAgICAgICItbCA8bGV2ZWw+ICAgICAgICBTcGVj aWZ5IHRoZSBjYWNoZSBsZXZlbCB0byBwcm9jZXNzLCBvdGhlcndpc2UgTDMgY2FjaGUgaXMgcHJv Y2Vzc2VkXG4iCiAgICAgfSwKKyAgICB7ICJwc3ItbWJhLXNob3ciLAorICAgICAgJm1haW5fcHNy X21iYV9zaG93LCAwLCAxLAorICAgICAgIlNob3cgTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9u IGluZm9ybWF0aW9uIiwKKyAgICAgICI8RG9tYWluPiIsCisgICAgfSwKIAogI2VuZGlmCiAgICAg eyAidXNiY3RybC1hdHRhY2giLApkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfcHNyLmMgYi90b29s cy94bC94bF9wc3IuYwppbmRleCBlYTM3OTY3Li5hOTdkYWZhIDEwMDY0NAotLS0gYS90b29scy94 bC94bF9wc3IuYworKysgYi90b29scy94bC94bF9wc3IuYwpAQCAtMzMwLDE5ICszMzAsMjcgQEAg b3V0OgogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVf ZG9tYWluX2NibV90eXBlKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfY2JtX3R5 cGUgdHlwZSkKK3N0YXRpYyB2b2lkIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBlKHVpbnQz Ml90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfcHNyX2h3X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlwZSkKIHsKLSAgICB1aW50NjRfdCBjYm07Cisg ICAgdWludDY0X3QgdmFsOwogCi0gICAgaWYgKCFsaWJ4bF9wc3JfY2F0X2dldF9jYm0oY3R4LCBk b21pZCwgdHlwZSwgc29ja2V0aWQsICZjYm0pKQotICAgICAgICBwcmludGYoIiUjMTYiUFJJeDY0 LCBjYm0pOworICAgIGlmICghbGlieGxfcHNyX2dldF92YWwoY3R4LCBkb21pZCwgdHlwZSwgaW5m by0+aWQsICZ2YWwpKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gTElCWExfUFNSX0NCTV9U WVBFX01CQV9USFJUTCAmJiBpbmZvLT51Lm1iYS5saW5lYXIpCisgICAgICAgICAgICBwcmludGYo IiUxNiJQUkl1NjQsIHZhbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW50ZigiJSMx NiJQUkl4NjQsIHZhbCk7CisgICAgfQogICAgIGVsc2UKICAgICAgICAgcHJpbnRmKCIlMTZzIiwg ImVycm9yIik7CiB9CiAKLXN0YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0o dWludDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBib29sIGNkcF9lbmFibGVkLCB1bnNpZ25lZCBpbnQgbHZsKQor c3RhdGljIHZvaWQgcHNyX3ByaW50X29uZV9kb21haW5fdmFsKHVpbnQzMl90IGRvbWlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9od19pbmZvICppbmZv LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9mZWF0X3R5 cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgbHZsKQogewogICAgIGNoYXIgKmRvbWFpbl9uYW1lOwogCkBAIC0zNTAsMTA2ICszNTgsMTUy IEBAIHN0YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0odWludDMyX3QgZG9t aWQsIHVpbnQzMl90IHNvY2tldGlkLAogICAgIHByaW50ZigiJTVkJTI1cyIsIGRvbWlkLCBkb21h aW5fbmFtZSk7CiAgICAgZnJlZShkb21haW5fbmFtZSk7CiAKLSAgICBzd2l0Y2ggKGx2bCkgewot ICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFjZHBfZW5hYmxlZCkgewotICAgICAgICAgICAgcHNy X2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKGRvbWlkLCBzb2NrZXRpZCwKKyAgICBzd2l0 Y2ggKHR5cGUpIHsKKyAgICBjYXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUOgorICAgICAgICBz d2l0Y2ggKGx2bCkgeworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoIWluZm8tPnUu Y2F0LmNkcF9lbmFibGVkKSB7CisgICAgICAgICAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5f dmFsX3R5cGUoZG9taWQsIGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTSk7Ci0gICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNv Y2tldGlkLAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwc3JfcHJpbnRf b25lX2RvbWFpbl92YWxfdHlwZShkb21pZCwgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNX0NPREUpOwot ICAgICAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKGRvbWlkLCBzb2Nr ZXRpZCwKKyAgICAgICAgICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZShkb21p ZCwgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM SUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNX0RBVEEpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFr OwotICAgIGNhc2UgMjoKLSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBl KGRvbWlkLCBzb2NrZXRpZCwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICBjYXNlIDI6CisgICAgICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZShk b21pZCwgaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJ QlhMX1BTUl9DQk1fVFlQRV9MMl9DQk0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl ZmF1bHQ6CisgICAgICAgICAgICBwcmludGYoIklucHV0IGx2bCAlZCBpcyB3cm9uZyEiLCBsdmwp OworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50 ZigiSW5wdXQgbHZsICVkIGlzIHdyb25nISIsIGx2bCk7CisKKyAgICBjYXNlIExJQlhMX1BTUl9G RUFUX1RZUEVfTUJBOgorICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZShkb21p ZCwgaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUFNS X0NCTV9UWVBFX01CQV9USFJUTCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHByaW50 ZigiXG4iKTsKIH0KIAotc3RhdGljIGludCBwc3JfY2F0X3ByaW50X2RvbWFpbl9jYm0odWludDMy X3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBjZHBfZW5hYmxlZCwgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyBpbnQg cHNyX3ByaW50X2RvbWFpbl92YWwodWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnhsX3Bzcl9od19pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9wc3JfZmVhdF90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsdmwpCiB7CiAgICAgaW50IGksIG5yX2RvbWFp bnM7CiAgICAgbGlieGxfZG9taW5mbyAqbGlzdDsKIAogICAgIGlmIChkb21pZCAhPSBJTlZBTElE X0RPTUlEKSB7Ci0gICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0oZG9taWQsIHNv Y2tldGlkLCBjZHBfZW5hYmxlZCwgbHZsKTsKKyAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5f dmFsKGRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK ICAgICBpZiAoIShsaXN0ID0gbGlieGxfbGlzdF9kb21haW4oY3R4LCAmbnJfZG9tYWlucykpKSB7 Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBkb21haW4gbGlzdCBmb3Ig Y2JtIGRpc3BsYXlcbiIpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiRmFpbGVkIHRvIGdldCBkb21haW4gbGlzdCBmb3IgdmFsdWUgZGlzcGxheVxuIik7Cisg ICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8 IG5yX2RvbWFpbnM7IGkrKykKLSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibShs aXN0W2ldLmRvbWlkLCBzb2NrZXRpZCwgY2RwX2VuYWJsZWQsIGx2bCk7CisgICAgICAgIHBzcl9w cmludF9vbmVfZG9tYWluX3ZhbChsaXN0W2ldLmRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogICAg IGxpYnhsX2RvbWluZm9fbGlzdF9mcmVlKGxpc3QsIG5yX2RvbWFpbnMpOwogCiAgICAgcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NhdF9wcmludF9zb2NrZXQodWludDMyX3QgZG9taWQs IGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyBpbnQgcHNyX3ByaW50X3NvY2tldCh1aW50MzJf dCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfaHdfaW5mbyAq aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfZmVhdF90eXBlIHR5 cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkKIHsKLSAg ICBpbnQgcmM7Ci0gICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKLQogICAgIHByaW50ZigiJS0x NnM6ICV1XG4iLCAiU29ja2V0IElEIiwgaW5mby0+aWQpOwogCi0gICAgLyogU28gZmFyLCBDTVQg b25seSBzdXBwb3J0cyBMMyBjYWNoZS4gKi8KLSAgICBpZiAobHZsID09IDMpIHsKLSAgICAgICAg cmMgPSBsaWJ4bF9wc3JfY210X2dldF9sM19jYWNoZV9zaXplKGN0eCwgaW5mby0+aWQsICZsM19j YWNoZV9zaXplKTsKLSAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgIkZhaWxlZCB0byBnZXQgbDMgY2FjaGUgc2l6ZSBmb3Igc29ja2V0OiVkXG4iLAotICAgICAg ICAgICAgICAgICAgICBpbmZvLT5pZCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgc3dp dGNoICh0eXBlKSB7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVDoKKyAgICB7Cisg ICAgICAgIGludCByYzsKKyAgICAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKKworICAgICAg ICAvKiBTbyBmYXIsIENNVCBvbmx5IHN1cHBvcnRzIEwzIGNhY2hlLiAqLworICAgICAgICBpZiAo bHZsID09IDMpIHsKKyAgICAgICAgICAgIHJjID0gbGlieGxfcHNyX2NtdF9nZXRfbDNfY2FjaGVf c2l6ZShjdHgsIGluZm8tPmlkLCAmbDNfY2FjaGVfc2l6ZSk7CisgICAgICAgICAgICBpZiAocmMp IHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbDMgY2Fj aGUgc2l6ZSBmb3Igc29ja2V0OiVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+ aWQpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIHByaW50ZigiJS0xNnM6ICV1S0JcbiIsICJMMyBDYWNoZSIsIGwzX2NhY2hlX3NpemUpOwog ICAgICAgICB9Ci0gICAgICAgIHByaW50ZigiJS0xNnM6ICV1S0JcbiIsICJMMyBDYWNoZSIsIGwz X2NhY2hlX3NpemUpOworCisgICAgICAgIHByaW50ZigiJS0xNnM6ICUjbGx4XG4iLCAiRGVmYXVs dCBDQk0iLAorICAgICAgICAgICAgICAgKDF1bGwgPDwgaW5mby0+dS5jYXQuY2JtX2xlbikgLSAx KTsKKyAgICAgICAgaWYgKGluZm8tPnUuY2F0LmNkcF9lbmFibGVkKQorICAgICAgICAgICAgcHJp bnRmKCIlNXMlMjVzJTE2cyUxNnNcbiIsICJJRCIsICJOQU1FIiwgIkNCTSAoY29kZSkiLCAiQ0JN IChkYXRhKSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmludGYoIiU1cyUyNXMlMTZz XG4iLCAiSUQiLCAiTkFNRSIsICJDQk0iKTsKKworICAgICAgICBicmVhazsKICAgICB9CiAKLSAg ICBwcmludGYoIiUtMTZzOiAlI2xseFxuIiwgIkRlZmF1bHQgQ0JNIiwgKDF1bGwgPDwgaW5mby0+ Y2JtX2xlbikgLSAxKTsKLSAgICBpZiAoaW5mby0+Y2RwX2VuYWJsZWQpCi0gICAgICAgIHByaW50 ZigiJTVzJTI1cyUxNnMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0gKGNvZGUpIiwgIkNCTSAo ZGF0YSkiKTsKLSAgICBlbHNlCi0gICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnNcbiIsICJJRCIs ICJOQU1FIiwgIkNCTSIpOworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9NQkE6CisgICAg ICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiRGVmYXVsdCBUSFJUTCIsIDApOworICAgICAgICBw cmludGYoIiU1cyUyNXMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJUSFJUTCIpOworICAgICAgICBi cmVhazsKIAotICAgIHJldHVybiBwc3JfY2F0X3ByaW50X2RvbWFpbl9jYm0oZG9taWQsIGluZm8t PmlkLCBpbmZvLT5jZHBfZW5hYmxlZCwgbHZsKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIklucHV0IGZlYXR1cmUgdHlwZSAlZCBpcyB3cm9uZ1xuIiwgdHlwZSk7Cisg ICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgfQorCisgICAgcmV0dXJuIHBzcl9wcmlu dF9kb21haW5fdmFsKGRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogfQogCi1zdGF0aWMgaW50IHBz cl9jYXRfc2hvdyh1aW50MzJfdCBkb21pZCwgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyBpbnQg cHNyX3ZhbF9zaG93KHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfcHNyX2ZlYXRfdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGx2bCkKIHsKLSAgICBpbnQgaSwgbnI7CisgICAgdW5zaWduZWQgaW50IGksIG5yOwogICAg IGludCByYzsKLSAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87CisgICAgbGlieGxfcHNyX2h3 X2luZm8gKmluZm87CiAKLSAgICBpZiAobHZsICE9IDIgJiYgbHZsICE9IDMpIHsKLSAgICAgICAg ZnByaW50ZihzdGRlcnIsICJJbnB1dCBsdmwgJWQgaXMgd3JvbmdcbiIsIGx2bCk7CisgICAgc3dp dGNoICh0eXBlKSB7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVDoKKyAgICAgICAg aWYgKGx2bCAhPSAyICYmIGx2bCAhPSAzKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IklucHV0IGx2bCAlZCBpcyB3cm9uZ1xuIiwgbHZsKTsKKyAgICAgICAgICAgIHJldHVybiBFWElU X0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIExJQlhMX1BT Ul9GRUFUX1RZUEVfTUJBOgorICAgICAgICBpZiAobHZsKSB7CisgICAgICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIklucHV0IGx2bCAlZCBpcyB3cm9uZ1xuIiwgbHZsKTsKKyAgICAgICAgICAgIHJl dHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh dWx0OgorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIklucHV0IGZlYXR1cmUgdHlwZSAlZCBpcyB3 cm9uZ1xuIiwgdHlwZSk7CiAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgfQogCi0g ICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0eCwgJmluZm8sICZuciwgbHZsKTsKKyAg ICByYyA9IGxpYnhsX3Bzcl9nZXRfaHdfaW5mbyhjdHgsICZpbmZvLCAmbnIsIHR5cGUsIGx2bCk7 CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCAl cyBjYXQgaW5mb1xuIiwgKGx2bCA9PSAzKT8iTDMiOiJMMiIpOworICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIkZhaWxlZCB0byBnZXQgaW5mb1xuIik7CiAgICAgICAgIHJldHVybiByYzsKICAgICB9 CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgewotICAgICAgICByYyA9IHBzcl9jYXRf cHJpbnRfc29ja2V0KGRvbWlkLCBpbmZvICsgaSwgbHZsKTsKKyAgICAgICAgcmMgPSBwc3JfcHJp bnRfc29ja2V0KGRvbWlkLCBpbmZvICsgaSwgdHlwZSwgbHZsKTsKICAgICAgICAgaWYgKHJjKQog ICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCiBvdXQ6Ci0gICAgbGlieGxfcHNyX2NhdF9p bmZvX2xpc3RfZnJlZShpbmZvLCBucik7CisgICAgbGlieGxfcHNyX2h3X2luZm9fbGlzdF9mcmVl KGluZm8sIG5yKTsKICAgICByZXR1cm4gcmM7CiB9CiAKQEAgLTQ3OSw2ICs1MzMsMjcgQEAgc3Rh dGljIGludCBwc3JfbDJfY2F0X2h3aW5mbyh2b2lkKQogICAgIHJldHVybiByYzsKIH0KIAoraW50 IG1haW5fcHNyX21iYV9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBpbnQgb3B0 OworICAgIHVpbnQzMl90IGRvbWlkOworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIs IE5VTEwsICJwc3ItbWJhLXNob3ciLCAwKSB7CisgICAgICAgIC8qIE5vIG9wdGlvbnMgKi8KKyAg ICB9CisKKyAgICBpZiAob3B0aW5kID49IGFyZ2MpCisgICAgICAgIGRvbWlkID0gSU5WQUxJRF9E T01JRDsKKyAgICBlbHNlIGlmIChvcHRpbmQgPT0gYXJnYyAtIDEpCisgICAgICAgIGRvbWlkID0g ZmluZF9kb21haW4oYXJndltvcHRpbmRdKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaGVscCgicHNy LW1iYS1zaG93Iik7CisgICAgICAgIHJldHVybiAyOworICAgIH0KKworICAgIHJldHVybiBwc3Jf dmFsX3Nob3coZG9taWQsIExJQlhMX1BTUl9GRUFUX1RZUEVfTUJBLCAwKTsKK30KKwogc3RhdGlj IGludCBwc3JfbWJhX2h3aW5mbyh2b2lkKQogewogICAgIGludCByYzsKQEAgLTYxOCw3ICs2OTMs NyBAQCBpbnQgbWFpbl9wc3JfY2F0X3Nob3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAg ICByZXR1cm4gMjsKICAgICB9CiAKLSAgICByZXR1cm4gcHNyX2NhdF9zaG93KGRvbWlkLCBsdmwp OworICAgIHJldHVybiBwc3JfdmFsX3Nob3coZG9taWQsIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FU LCBsdmwpOwogfQogCiBpbnQgbWFpbl9wc3JfaHdpbmZvKGludCBhcmdjLCBjaGFyICoqYXJndikK LS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==