From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [RFC v2 10/12] tools: implemet new get value interface suitable for all psr allocation features. Date: Thu, 20 Jul 2017 16:49:11 +0800 Message-ID: <1500540553-29199-11-git-send-email-yi.y.sun@linux.intel.com> References: <1500540553-29199-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dY7NX-0007XJ-Kp for xen-devel@lists.xenproject.org; Thu, 20 Jul 2017 09:04:15 +0000 In-Reply-To: <1500540553-29199-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 VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGdldCB2YWx1ZSBpbnRlcmZhY2UgaW4gdG9vbHMg c3VpdGFibGUgZm9yIGFsbCBwc3IKYWxsb2NhdGlvbiBmZWF0dXJlcyBhbmQgdGhlIHdob2xlIGZs b3cuIEl0IGFsc28gZW5hYmxlcyBNQkEgc3VwcG9ydCBpbiB0b29scwp0byBnZXQgTUJBIHZhbHVl LgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+Ci0tLQog dG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggfCAgMTMgKy0KIHRvb2xzL2xpYnhjL3hjX3Bz ci5jICAgICAgICAgIHwgIDExICstCiB0b29scy9saWJ4bC9saWJ4bF9wc3IuYyAgICAgICB8ICA2 MSArKysrKystLS0tCiB0b29scy94bC94bC5oICAgICAgICAgICAgICAgICB8ICAgMyArCiB0b29s cy94bC94bF9jbWR0YWJsZS5jICAgICAgICB8ICAgOSArLQogdG9vbHMveGwveGxfcHNyLmMgICAg ICAgICAgICAgfCAyNzUgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t CiA2IGZpbGVzIGNoYW5nZWQsIDIzNiBpbnNlcnRpb25zKCspLCAxMzYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaAppbmRleCAwYjBlYzMxLi5kZWYxOGY1IDEwMDY0NAotLS0gYS90b29s cy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0 cmwuaApAQCAtMjQ1MiwxMyArMjQ1MiwxNCBAQCBlbnVtIHhjX3Bzcl9jbXRfdHlwZSB7CiB9Owog dHlwZWRlZiBlbnVtIHhjX3Bzcl9jbXRfdHlwZSB4Y19wc3JfY210X3R5cGU7CiAKLWVudW0geGNf cHNyX2NhdF90eXBlIHsKK2VudW0geGNfcHNyX3ZhbF90eXBlIHsKICAgICBYQ19QU1JfQ0FUX0wz X0NCTSAgICAgID0gMSwKICAgICBYQ19QU1JfQ0FUX0wzX0NCTV9DT0RFID0gMiwKICAgICBYQ19Q U1JfQ0FUX0wzX0NCTV9EQVRBID0gMywKICAgICBYQ19QU1JfQ0FUX0wyX0NCTSAgICAgID0gNCwK KyAgICBYQ19QU1JfTUJBX1RIUlRMICAgICAgID0gNSwKIH07Ci10eXBlZGVmIGVudW0geGNfcHNy X2NhdF90eXBlIHhjX3Bzcl9jYXRfdHlwZTsKK3R5cGVkZWYgZW51bSB4Y19wc3JfdmFsX3R5cGUg eGNfcHNyX3ZhbF90eXBlOwogCiBlbnVtIHhjX3Bzcl9mZWF0X3R5cGUgewogICAgIFhDX1BTUl9G RUFUX1VOS05PV04gICAgPSAwLApAQCAtMjUwMSwxMSArMjUwMiwxMSBAQCBpbnQgeGNfcHNyX2Nt dF9nZXRfZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qgcm1pZCwgdWludDMyX3QgY3B1 LAogaW50IHhjX3Bzcl9jbXRfZW5hYmxlZCh4Y19pbnRlcmZhY2UgKnhjaCk7CiAKIGludCB4Y19w c3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX2NhdF90eXBlIHR5cGUsIHVp bnQzMl90IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfdmFs X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IGRhdGEpOwotaW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRhKHhjX2lu dGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4Y19wc3JfY2F0X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpkYXRhKTsKK2ludCB4Y19wc3JfZ2V0X2RvbWFp bl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHhjX3Bzcl92YWxfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7CiBpbnQgeGNfcHNyX2dldF9o d19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsCiAgICAgICAgICAgICAg ICAgICAgICAgIHhjX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNyX2h3X2luZm8gKmh3X2luZm8p OwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3IuYyBiL3Rvb2xzL2xpYnhjL3hjX3Bz ci5jCmluZGV4IDQ5NGQxZjAuLjgzMTMzNjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3Bz ci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0yNDksNyArMjQ5LDcgQEAgaW50IHhj X3Bzcl9jbXRfZW5hYmxlZCh4Y19pbnRlcmZhY2UgKnhjaCkKICAgICByZXR1cm4gMDsKIH0KIGlu dCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qg ZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX2NhdF90eXBlIHR5 cGUsIHVpbnQzMl90IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19w c3JfdmFsX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ2NF90IGRhdGEpCiB7CiAgICAgREVDTEFSRV9ET01DVEw7CkBAIC0yODMs OSArMjgzLDkgQEAgaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gZG9fZG9tY3RsKHhjaCwgJmRvbWN0bCk7 CiB9CiAKLWludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX2Nh dF90eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCAqZGF0YSkKK2ludCB4Y19wc3JfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHhj X3Bzcl92YWxfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCAqZGF0YSkKIHsKICAgICBpbnQgcmM7CiAgICAgREVDTEFSRV9ET01D VEw7CkBAIC0zMDUsNiArMzA1LDkgQEAgaW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRhKHhj X2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICBjYXNlIFhDX1BTUl9DQVRfTDJf Q0JNOgogICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTTsKICAg ICAgICAgYnJlYWs7CisgICAgY2FzZSBYQ19QU1JfTUJBX1RIUlRMOgorICAgICAgICBjbWQgPSBY RU5fRE9NQ1RMX1BTUl9NQkFfT1BfR0VUX1RIUlRMOworICAgICAgICBicmVhazsKICAgICBkZWZh dWx0OgogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwpp bmRleCA0M2I4NGI2Li40YjNhZmI2IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9wc3Iu YworKysgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwpAQCAtNzEsMTYgKzcxLDMwIEBAIHN0YXRp YyB2b2lkIGxpYnhsX19wc3JfY210X2xvZ19lcnJfbXNnKGxpYnhsX19nYyAqZ2MsIGludCBlcnIp CiAgICAgTE9HRShFUlJPUiwgIiVzIiwgbXNnKTsKIH0KIAotc3RhdGljIHZvaWQgbGlieGxfX3Bz cl9jYXRfbG9nX2Vycl9tc2cobGlieGxfX2djICpnYywgaW50IGVycikKK3N0YXRpYyB2b2lkIGxp YnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2cobGlieGxfX2djICpnYywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVyciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2NibV90eXBlIHR5cGUpCiB7CisgICAgLyoK KyAgICAgKiBJbmRleCBpcyAnbGlieGxfcHNyX2NibV90eXBlJyBzbyB3ZSBzZXQgdHdvICdDRFAn IHRvIGNvcnJlc3BvbmQgdG8KKyAgICAgKiBEQVRBIGFuZCBDT0RFLgorICAgICAqLworICAgIGNv bnN0IGNoYXIgKiBjb25zdCBmZWF0X25hbWVbNl0gPSB7CisgICAgICAgICJVTktOT1dOIiwKKyAg ICAgICAgIkwzIENBVCIsCisgICAgICAgICJDRFAiLAorICAgICAgICAiQ0RQIiwKKyAgICAgICAg IkwyIENBVCIsCisgICAgICAgICJNQkEiLAorICAgIH07CiAgICAgY2hhciAqbXNnOwogCiAgICAg c3dpdGNoIChlcnIpIHsKICAgICBjYXNlIEVOT0RFVjoKLSAgICAgICAgbXNnID0gIkNBVCBpcyBu b3Qgc3VwcG9ydGVkIGluIHRoaXMgc3lzdGVtIjsKKyAgICAgICAgbXNnID0gImlzIG5vdCBzdXBw b3J0ZWQgaW4gdGhpcyBzeXN0ZW0iOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEVOT0VOVDoK LSAgICAgICAgbXNnID0gIkNBVCBpcyBub3QgZW5hYmxlZCBvbiB0aGUgc29ja2V0IjsKKyAgICAg ICAgbXNnID0gImlzIG5vdCBlbmFibGVkIG9uIHRoZSBzb2NrZXQiOwogICAgICAgICBicmVhazsK ICAgICBjYXNlIEVPVkVSRkxPVzoKICAgICAgICAgbXNnID0gIm5vIGZyZWUgQ09TIGF2YWlsYWJs ZSI7CkBAIC0xMDYsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgbGlieGxfX3Bzcl9jYXRfbG9nX2Vy cl9tc2cobGlieGxfX2djICpnYywgaW50IGVycikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot ICAgIExPR0UoRVJST1IsICIlcyIsIG1zZyk7CisgICAgTE9HRShFUlJPUiwgIiVzOiAlcyIsIGZl YXRfbmFtZVt0eXBlXSwgbXNnKTsKIH0KIAogc3RhdGljIGludCBsaWJ4bF9fcGlja19zb2NrZXRf Y3B1KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IHNvY2tldGlkKQpAQCAtMzAzLDExICszMTcsMTEg QEAgb3V0OgogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIGlubGluZSB4Y19wc3JfY2F0X3R5 cGUgbGlieGxfX3Bzcl9jYm1fdHlwZV90b19saWJ4Y19wc3JfY2F0X3R5cGUoCitzdGF0aWMgaW5s aW5lIHhjX3Bzcl92YWxfdHlwZSBsaWJ4bF9fcHNyX2NibV90eXBlX3RvX2xpYnhjX3Bzcl92YWxf dHlwZSgKICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlwZSkKIHsKLSAgICBCVUlMRF9CVUdfT04o c2l6ZW9mKGxpYnhsX3Bzcl9jYm1fdHlwZSkgIT0gc2l6ZW9mKHhjX3Bzcl9jYXRfdHlwZSkpOwot ICAgIHJldHVybiAoeGNfcHNyX2NhdF90eXBlKXR5cGU7CisgICAgQlVJTERfQlVHX09OKHNpemVv ZihsaWJ4bF9wc3JfY2JtX3R5cGUpICE9IHNpemVvZih4Y19wc3JfdmFsX3R5cGUpKTsKKyAgICBy ZXR1cm4gKHhjX3Bzcl92YWxfdHlwZSl0eXBlOwogfQogCiBpbnQgbGlieGxfcHNyX2NhdF9zZXRf Y2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKQEAgLTMyNSwxNSArMzM5LDE1IEBA IGludCBsaWJ4bF9wc3JfY2F0X3NldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlk LAogICAgIH0KIAogICAgIGxpYnhsX2Zvcl9lYWNoX3NldF9iaXQoc29ja2V0aWQsICp0YXJnZXRf bWFwKSB7Ci0gICAgICAgIHhjX3Bzcl9jYXRfdHlwZSB4Y190eXBlOworICAgICAgICB4Y19wc3Jf dmFsX3R5cGUgeGNfdHlwZTsKIAogICAgICAgICBpZiAoc29ja2V0aWQgPj0gbnJfc29ja2V0cykK ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX2NibV90 eXBlX3RvX2xpYnhjX3Bzcl9jYXRfdHlwZSh0eXBlKTsKKyAgICAgICAgeGNfdHlwZSA9IGxpYnhs X19wc3JfY2JtX3R5cGVfdG9fbGlieGNfcHNyX3ZhbF90eXBlKHR5cGUpOwogICAgICAgICBpZiAo eGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoY3R4LT54Y2gsIGRvbWlkLCB4Y190eXBlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0aWQsIGNibSkpIHsKLSAg ICAgICAgICAgIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJfbXNnKGdjLCBlcnJubyk7CisgICAgICAg ICAgICBsaWJ4bF9fcHNyX2FsbG9jX2xvZ19lcnJfbXNnKGdjLCBlcnJubywgdHlwZSk7CiAgICAg ICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDcsMTggKzM2 MSw3IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlw ZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAq Y2JtX3IpCiB7Ci0gICAgR0NfSU5JVChjdHgpOwotICAgIGludCByYyA9IDA7Ci0gICAgeGNfcHNy X2NhdF90eXBlIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX2NibV90eXBlX3RvX2xpYnhjX3Bzcl9jYXRf dHlwZSh0eXBlKTsKLQotICAgIGlmICh4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YShjdHgtPnhj aCwgZG9taWQsIHhjX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh cmdldCwgY2JtX3IpKSB7Ci0gICAgICAgIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJfbXNnKGdjLCBl cnJubyk7Ci0gICAgICAgIHJjID0gRVJST1JfRkFJTDsKLSAgICB9Ci0KLSAgICBHQ19GUkVFOwot ICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gbGlieGxfcHNyX2dldF92YWwoY3R4LCBkb21pZCwg dHlwZSwgdGFyZ2V0LCBjYm1fcik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IGxpYnhsX3Bzcl9o d19pbmZvX3RvX2xpYnhsX3Bzcl9jYXRfaW5mbygKQEAgLTQzOCw3ICs0NDEsMTkgQEAgaW50IGxp YnhsX3Bzcl9nZXRfdmFsKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAg ICAgICAgICAgICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAog ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICp2YWwpCiB7Ci0gICAgcmV0dXJuIEVYSVRf RkFJTFVSRTsKKyAgICBHQ19JTklUKGN0eCk7CisgICAgaW50IHJjID0gMDsKKworICAgIHhjX3Bz cl92YWxfdHlwZSB4Y190eXBlID0gbGlieGxfX3Bzcl9jYm1fdHlwZV90b19saWJ4Y19wc3JfdmFs X3R5cGUodHlwZSk7CisKKyAgICBpZiAoeGNfcHNyX2dldF9kb21haW5fZGF0YShjdHgtPnhjaCwg ZG9taWQsIHhjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LCB2 YWwpKSB7CisgICAgICAgIGxpYnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2coZ2MsIGVycm5vLCB0 eXBlKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgIH0KKworICAgIEdDX0ZSRUU7Cisg ICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW5saW5lIHhjX3Bzcl9mZWF0X3R5cGUgbGlieGxf X3Bzcl9mZWF0X3R5cGVfdG9fbGlieGNfcHNyX2ZlYXRfdHlwZSgKZGlmZiAtLWdpdCBhL3Rvb2xz L3hsL3hsLmggYi90b29scy94bC94bC5oCmluZGV4IGFhOTViNzcuLmFkODlkZjQgMTAwNjQ0Ci0t LSBhL3Rvb2xzL3hsL3hsLmgKKysrIGIvdG9vbHMveGwveGwuaApAQCAtMjA2LDYgKzIwNiw5IEBA IGludCBtYWluX3Bzcl9jbXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogI2lmZGVmIExJ QlhMX0hBVkVfUFNSX0NBVAogaW50IG1haW5fcHNyX2NhdF9jYm1fc2V0KGludCBhcmdjLCBjaGFy ICoqYXJndik7CiBpbnQgbWFpbl9wc3JfY2F0X3Nob3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsK KyNpZmRlZiBMSUJYTF9IQVZFX1BTUl9NQkEKK2ludCBtYWluX3Bzcl9tYmFfc2hvdyhpbnQgYXJn YywgY2hhciAqKmFyZ3YpOworI2VuZGlmCiAjZW5kaWYKIGludCBtYWluX3FlbXVfbW9uaXRvcl9j b21tYW5kKGludCBhcmdjLCBjaGFyICoqYXJndik7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hs X2NtZHRhYmxlLmMgYi90b29scy94bC94bF9jbWR0YWJsZS5jCmluZGV4IDE0YTAyZDQuLjJkYzBj ZDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKKysrIGIvdG9vbHMveGwveGxf Y21kdGFibGUuYwpAQCAtNTY0LDggKzU2NCwxNSBAQCBzdHJ1Y3QgY21kX3NwZWMgY21kX3RhYmxl W10gPSB7CiAgICAgICAiW29wdGlvbnNdIDxEb21haW4+IiwKICAgICAgICItbCA8bGV2ZWw+ICAg ICAgICBTcGVjaWZ5IHRoZSBjYWNoZSBsZXZlbCB0byBwcm9jZXNzLCBvdGhlcndpc2UgTDMgY2Fj aGUgaXMgcHJvY2Vzc2VkXG4iCiAgICAgfSwKKyNpZmRlZiBMSUJYTF9IQVZFX1BTUl9NQkEKKyAg ICB7ICJwc3ItbWJhLXNob3ciLAorICAgICAgJm1haW5fcHNyX21iYV9zaG93LCAwLCAxLAorICAg ICAgIlNob3cgTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9uIGluZm9ybWF0aW9uIiwKKyAgICAg ICI8RG9tYWluPiIsCisgICAgfSwKIAotI2VuZGlmCisjZW5kaWYgLyogTElCWExfSEFWRV9QU1Jf TUJBICovCisjZW5kaWYgLyogTElCWExfSEFWRV9QU1JfQ0FUICovCiAgICAgeyAidXNiY3RybC1h dHRhY2giLAogICAgICAgJm1haW5fdXNiY3RybF9hdHRhY2gsIDAsIDEsCiAgICAgICAiQ3JlYXRl IGEgdmlydHVhbCBVU0IgY29udHJvbGxlciBmb3IgYSBkb21haW4iLApkaWZmIC0tZ2l0IGEvdG9v bHMveGwveGxfcHNyLmMgYi90b29scy94bC94bF9wc3IuYwppbmRleCAwMzdlYWIzLi40NmVmMTU5 IDEwMDY0NAotLS0gYS90b29scy94bC94bF9wc3IuYworKysgYi90b29scy94bC94bF9wc3IuYwpA QCAtMzMwLDE5ICszMzAsNzcgQEAgb3V0OgogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIHZv aWQgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKHVpbnQzMl90IGRvbWlkLCB1aW50 MzJfdCBzb2NrZXRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlwZSkKK3N0YXRpYyBpbnQgcHNyX2wyX2NhdF9od2lu Zm8odm9pZCkKIHsKLSAgICB1aW50NjRfdCBjYm07CisgICAgaW50IHJjOworICAgIHVuc2lnbmVk IGludCBpOworICAgIGludCBucjsKKyAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87CisKKyAg ICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCAyKTsKKyAgICBp ZiAocmMpCisgICAgICAgIHJldHVybiByYzsKKworICAgIHByaW50ZigiQ2FjaGUgQWxsb2NhdGlv biBUZWNobm9sb2d5IChDQVQpOiBMMlxuIik7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkr KykgeworICAgICAgICAvKiBUaGVyZSBpcyBubyBDTVQgb24gTDIgY2FjaGUgc28gZmFyLiAqLwor ICAgICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIlNvY2tldCBJRCIsIGluZm9baV0uaWQpOwor ICAgICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIk1heGltdW0gQ09TIiwgaW5mb1tpXS5jb3Nf bWF4KTsKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJDQk0gbGVuZ3RoIiwgaW5mb1tp XS5jYm1fbGVuKTsKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZhdWx0IENC TSIsCisgICAgICAgICAgICAgICAoMXVsbCA8PCBpbmZvW2ldLmNibV9sZW4pIC0gMSk7CisgICAg fQogCi0gICAgaWYgKCFsaWJ4bF9wc3JfY2F0X2dldF9jYm0oY3R4LCBkb21pZCwgdHlwZSwgc29j a2V0aWQsICZjYm0pKQotICAgICAgICBwcmludGYoIiUjMTYiUFJJeDY0LCBjYm0pOworICAgIGxp YnhsX3Bzcl9jYXRfaW5mb19saXN0X2ZyZWUoaW5mbywgbnIpOworICAgIHJldHVybiByYzsKK30K KworI2lmZGVmIExJQlhMX0hBVkVfUFNSX01CQQorc3RhdGljIHZvaWQgcHNyX3ByaW50X29uZV9k b21haW5fdmFsX3R5cGUodWludDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2NibV90eXBlIHR5 cGUpCit7CisgICAgdWludDY0X3QgdmFsOworCisgICAgaWYgKCFsaWJ4bF9wc3JfZ2V0X3ZhbChj dHgsIGRvbWlkLCB0eXBlLCBzb2NrZXRpZCwgJnZhbCkpCisgICAgICAgIHByaW50ZigiJSMxNiJQ Ukl4NjQsIHZhbCk7CiAgICAgZWxzZQogICAgICAgICBwcmludGYoIiUxNnMiLCAiZXJyb3IiKTsK IH0KIAotc3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibSh1aW50MzJfdCBk b21pZCwgdWludDMyX3Qgc29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgY2RwX2VuYWJsZWQsIHVuc2lnbmVkIGludCBsdmwpCitzdGF0aWMgaW50 IHBzcl9tYmFfaHdpbmZvKHZvaWQpCit7CisgICAgaW50IHJjOworICAgIGludCBpLCBucjsKKyAg ICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5mbzsKKworICAgIHByaW50ZigiTWVtb3J5IEJhbmR3aWR0 aCBBbGxvY2F0aW9uIChNQkEpOlxuIik7CisKKyAgICByYyA9IGxpYnhsX3Bzcl9nZXRfaHdfaW5m byhjdHgsICZpbmZvLCAmbnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExf UFNSX0ZFQVRfVFlQRV9NQkFfSU5GTywgMCk7CisgICAgaWYgKHJjKSB7CisgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBtYmEgaW5mb1xuIik7CisgICAgICAgIHJldHVybiBy YzsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgeworICAgICAgICBwcmlu dGYoIiUtMTZzOiAldVxuIiwgIlNvY2tldCBJRCIsIGluZm9baV0uaWQpOworICAgICAgICBwcmlu dGYoIiUtMTZzOiAlc1xuIiwgIkxpbmVhciBNb2RlIiwKKyAgICAgICAgICAgICAgIGluZm9baV0u dS5tYmFfaW5mby5saW5lYXIgPyAiRW5hYmxlZCIgOiAiRGlzYWJsZWQiKTsKKyAgICAgICAgcHJp bnRmKCIlLTE2czogJXVcbiIsICJNYXhpbXVtIENPUyIsIGluZm9baV0udS5tYmFfaW5mby5jb3Nf bWF4KTsKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJNYXhpbXVtIFRocm90dGxpbmcg VmFsdWUiLAorICAgICAgICAgICAgICAgaW5mb1tpXS51Lm1iYV9pbmZvLnRocnRsX21heCk7Cisg ICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiRGVmYXVsdCBUaHJvdHRsaW5nIFZhbHVlIiwg MCk7CisgICAgfQorCisgICAgbGlieGxfcHNyX2h3X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsK KyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkIHBzcl9wcmludF9vbmVfZG9tYWluX3Zh bCh1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aWJ4bF9wc3JfaHdfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9wc3JfZmVhdF90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkKIHsKICAgICBjaGFyICpkb21haW5fbmFtZTsK IApAQCAtMzUwLDE2MyArNDA4LDE3NiBAQCBzdGF0aWMgdm9pZCBwc3JfY2F0X3ByaW50X29uZV9k b21haW5fY2JtKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKICAgICBwcmludGYo IiU1ZCUyNXMiLCBkb21pZCwgZG9tYWluX25hbWUpOwogICAgIGZyZWUoZG9tYWluX25hbWUpOwog Ci0gICAgc3dpdGNoIChsdmwpIHsKLSAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghY2RwX2VuYWJs ZWQpIHsKLSAgICAgICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZShkb21p ZCwgc29ja2V0aWQsCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVB VF9UWVBFX0NBVF9JTkZPOgorICAgICAgICBzd2l0Y2ggKGx2bCkgeworICAgICAgICBjYXNlIDM6 CisgICAgICAgICAgICBpZiAoIWluZm8tPnUuY2F0X2luZm8uY2RwX2VuYWJsZWQpIHsKKyAgICAg ICAgICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZShkb21pZCwgaW5mby0+aWQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUFNS X0NCTV9UWVBFX0wzX0NCTSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwc3JfY2F0 X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNvY2tldGlkLAorICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZShk b21pZCwgaW5mby0+aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTV9DT0RFKTsKLSAgICAgICAgICAgIHBzcl9j YXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZShkb21pZCwgc29ja2V0aWQsCisgICAgICAgICAg ICAgICAgcHNyX3ByaW50X29uZV9kb21haW5fdmFsX3R5cGUoZG9taWQsIGluZm8tPmlkLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX1BTUl9DQk1f VFlQRV9MM19DQk1fREFUQSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgY2FzZSAyOgorICAgICAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5fdmFsX3R5cGUo ZG9taWQsIGluZm8tPmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTElCWExfUFNSX0NCTV9UWVBFX0wyX0NCTSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHByaW50ZigiSW5wdXQgbHZsICVkIGlzIHdyb25nISIs IGx2bCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBw c3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNvY2tldGlkLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUFNSX0NCTV9UWVBFX0wy X0NCTSk7CisKKyAgICBjYXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfTUJBX0lORk86CisgICAgICAg IHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBlKGRvbWlkLCBpbmZvLT5pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCWExfUFNSX0NCTV9UWVBFX01CQV9USFJU TCk7CiAgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCJJbnB1 dCBsdmwgJWQgaXMgd3JvbmchIiwgbHZsKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHByaW50 ZigiXG4iKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLQogICAgIHByaW50ZigiXG4iKTsKIH0K IAotc3RhdGljIGludCBwc3JfY2F0X3ByaW50X2RvbWFpbl9jYm0odWludDMyX3QgZG9taWQsIHVp bnQzMl90IHNvY2tldGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v bCBjZHBfZW5hYmxlZCwgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyBpbnQgcHNyX3ByaW50X2Rv bWFpbl92YWwodWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnhsX3Bzcl9od19pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9wc3JfZmVhdF90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBsdmwpCiB7CiAgICAgaW50IGksIG5yX2RvbWFpbnM7CiAgICAgbGli eGxfZG9taW5mbyAqbGlzdDsKIAogICAgIGlmIChkb21pZCAhPSBJTlZBTElEX0RPTUlEKSB7Ci0g ICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0oZG9taWQsIHNvY2tldGlkLCBjZHBf ZW5hYmxlZCwgbHZsKTsKKyAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5fdmFsKGRvbWlkLCBp bmZvLCB0eXBlLCBsdmwpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpZiAoIShs aXN0ID0gbGlieGxfbGlzdF9kb21haW4oY3R4LCAmbnJfZG9tYWlucykpKSB7Ci0gICAgICAgIGZw cmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBkb21haW4gbGlzdCBmb3IgY2JtIGRpc3BsYXlc biIpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVk IHRvIGdldCBkb21haW4gbGlzdCBmb3IgdmFsdWUgZGlzcGxheVxuIik7CisgICAgICAgIHJldHVy biBFWElUX0ZBSUxVUkU7CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IG5yX2RvbWFpbnM7 IGkrKykKLSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibShsaXN0W2ldLmRvbWlk LCBzb2NrZXRpZCwgY2RwX2VuYWJsZWQsIGx2bCk7CisgICAgICAgIHBzcl9wcmludF9vbmVfZG9t YWluX3ZhbChsaXN0W2ldLmRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogICAgIGxpYnhsX2RvbWlu Zm9fbGlzdF9mcmVlKGxpc3QsIG5yX2RvbWFpbnMpOwogCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBpbnQgcHNyX2NhdF9wcmludF9zb2NrZXQodWludDMyX3QgZG9taWQsIGxpYnhsX3Bzcl9j YXRfaW5mbyAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGx2bCkKK3N0YXRpYyBpbnQgcHNyX3ByaW50X3NvY2tldCh1aW50MzJfdCBkb21pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5mbywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfZmVhdF90eXBlIHR5cGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkKIHsKLSAgICBpbnQgcmM7Ci0g ICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKLQogICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAi U29ja2V0IElEIiwgaW5mby0+aWQpOwogCi0gICAgLyogU28gZmFyLCBDTVQgb25seSBzdXBwb3J0 cyBMMyBjYWNoZS4gKi8KLSAgICBpZiAobHZsID09IDMpIHsKLSAgICAgICAgcmMgPSBsaWJ4bF9w c3JfY210X2dldF9sM19jYWNoZV9zaXplKGN0eCwgaW5mby0+aWQsICZsM19jYWNoZV9zaXplKTsK LSAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0 byBnZXQgbDMgY2FjaGUgc2l6ZSBmb3Igc29ja2V0OiVkXG4iLAotICAgICAgICAgICAgICAgICAg ICBpbmZvLT5pZCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgc3dpdGNoICh0eXBlKSB7 CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVF9JTkZPOgorICAgIHsKKyAgICAgICAg aW50IHJjOworICAgICAgICB1aW50MzJfdCBsM19jYWNoZV9zaXplOworCisgICAgICAgIC8qIFNv IGZhciwgQ01UIG9ubHkgc3VwcG9ydHMgTDMgY2FjaGUuICovCisgICAgICAgIGlmIChsdmwgPT0g MykgeworICAgICAgICAgICAgcmMgPSBsaWJ4bF9wc3JfY210X2dldF9sM19jYWNoZV9zaXplKGN0 eCwgaW5mby0+aWQsICZsM19jYWNoZV9zaXplKTsKKyAgICAgICAgICAgIGlmIChyYykgeworICAg ICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBsMyBjYWNoZSBzaXpl IGZvciBzb2NrZXQ6JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT5pZCk7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJp bnRmKCIlLTE2czogJXVLQlxuIiwgIkwzIENhY2hlIiwgbDNfY2FjaGVfc2l6ZSk7CiAgICAgICAg IH0KLSAgICAgICAgcHJpbnRmKCIlLTE2czogJXVLQlxuIiwgIkwzIENhY2hlIiwgbDNfY2FjaGVf c2l6ZSk7CisKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZhdWx0IENCTSIs CisgICAgICAgICAgICAgICAoMXVsbCA8PCBpbmZvLT51LmNhdF9pbmZvLmNibV9sZW4pIC0gMSk7 CisgICAgICAgIGlmIChpbmZvLT51LmNhdF9pbmZvLmNkcF9lbmFibGVkKQorICAgICAgICAgICAg cHJpbnRmKCIlNXMlMjVzJTE2cyUxNnNcbiIsICJJRCIsICJOQU1FIiwgIkNCTSAoY29kZSkiLCAi Q0JNIChkYXRhKSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmludGYoIiU1cyUyNXMl MTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0iKTsKKworICAgICAgICBicmVhazsKICAgICB9Cisg ICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX01CQV9JTkZPOgorICAgICAgICBwcmludGYoIiUt MTZzOiAldVxuIiwgIkRlZmF1bHQgVEhSVEwiLCAwKTsKKyAgICAgICAgcHJpbnRmKCIlNXMlMjVz JTE2c1xuIiwgIklEIiwgIk5BTUUiLCAiVEhSVEwiKTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBw cmludGYoIiUtMTZzOiAlI2xseFxuIiwgIkRlZmF1bHQgQ0JNIiwgKDF1bGwgPDwgaW5mby0+Y2Jt X2xlbikgLSAxKTsKLSAgICBpZiAoaW5mby0+Y2RwX2VuYWJsZWQpCi0gICAgICAgIHByaW50Zigi JTVzJTI1cyUxNnMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0gKGNvZGUpIiwgIkNCTSAoZGF0 YSkiKTsKLSAgICBlbHNlCi0gICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnNcbiIsICJJRCIsICJO QU1FIiwgIkNCTSIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW5w dXQgZmVhdHVyZSB0eXBlICVkIGlzIHdyb25nXG4iLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIEVY SVRfRkFJTFVSRTsKKyAgICB9CiAKLSAgICByZXR1cm4gcHNyX2NhdF9wcmludF9kb21haW5fY2Jt KGRvbWlkLCBpbmZvLT5pZCwgaW5mby0+Y2RwX2VuYWJsZWQsIGx2bCk7CisgICAgcmV0dXJuIHBz cl9wcmludF9kb21haW5fdmFsKGRvbWlkLCBpbmZvLCB0eXBlLCBsdmwpOwogfQogCi1zdGF0aWMg aW50IHBzcl9jYXRfc2hvdyh1aW50MzJfdCBkb21pZCwgdW5zaWduZWQgaW50IGx2bCkKK3N0YXRp YyBpbnQgcHNyX3ZhbF9zaG93KHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgbGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IGx2bCkKIHsKICAgICBpbnQgaSwgbnI7CiAgICAgaW50IHJjOwotICAgIGxpYnhs X3Bzcl9jYXRfaW5mbyAqaW5mbzsKKyAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5mbzsKIAotICAg IGlmIChsdmwgIT0gMiAmJiBsdmwgIT0gMykgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIklu cHV0IGx2bCAlZCBpcyB3cm9uZ1xuIiwgbHZsKTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj YXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUX0lORk86CisgICAgICAgIGlmIChsdmwgIT0gMiAm JiBsdmwgIT0gMykgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnB1dCBsdmwgJWQg aXMgd3JvbmdcbiIsIGx2bCk7CisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAg ICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX01C QV9JTkZPOgorICAgICAgICBpZiAobHZsKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IklucHV0IGx2bCAlZCBpcyB3cm9uZ1xuIiwgbHZsKTsKKyAgICAgICAgICAgIHJldHVybiBFWElU X0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIklucHV0IGZlYXR1cmUgdHlwZSAlZCBpcyB3cm9uZ1xuIiwg dHlwZSk7CiAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgfQogCi0gICAgcmMgPSBs aWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0eCwgJmluZm8sICZuciwgbHZsKTsKKyAgICByYyA9IGxp YnhsX3Bzcl9nZXRfaHdfaW5mbyhjdHgsICZpbmZvLCAmbnIsIHR5cGUsIGx2bCk7CiAgICAgaWYg KHJjKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCAlcyBjYXQgaW5m b1xuIiwgKGx2bCA9PSAzKT8iTDMiOiJMMiIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZh aWxlZCB0byBnZXQgaW5mb1xuIik7CiAgICAgICAgIHJldHVybiByYzsKICAgICB9CiAKICAgICBm b3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgewotICAgICAgICByYyA9IHBzcl9jYXRfcHJpbnRfc29j a2V0KGRvbWlkLCBpbmZvICsgaSwgbHZsKTsKKyAgICAgICAgcmMgPSBwc3JfcHJpbnRfc29ja2V0 KGRvbWlkLCBpbmZvICsgaSwgdHlwZSwgbHZsKTsKICAgICAgICAgaWYgKHJjKQogICAgICAgICAg ICAgZ290byBvdXQ7CiAgICAgfQogCiBvdXQ6Ci0gICAgbGlieGxfcHNyX2NhdF9pbmZvX2xpc3Rf ZnJlZShpbmZvLCBucik7Ci0gICAgcmV0dXJuIHJjOwotfQotCi1zdGF0aWMgaW50IHBzcl9sMl9j YXRfaHdpbmZvKHZvaWQpCi17Ci0gICAgaW50IHJjOwotICAgIHVuc2lnbmVkIGludCBpOwotICAg IGludCBucjsKLSAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87Ci0KLSAgICByYyA9IGxpYnhs X3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCAyKTsKLSAgICBpZiAocmMpCi0gICAg ICAgIHJldHVybiByYzsKLQotICAgIHByaW50ZigiQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5 IChDQVQpOiBMMlxuIik7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgewotICAgICAg ICAvKiBUaGVyZSBpcyBubyBDTVQgb24gTDIgY2FjaGUgc28gZmFyLiAqLwotICAgICAgICBwcmlu dGYoIiUtMTZzOiAldVxuIiwgIlNvY2tldCBJRCIsIGluZm9baV0uaWQpOwotICAgICAgICBwcmlu dGYoIiUtMTZzOiAldVxuIiwgIk1heGltdW0gQ09TIiwgaW5mb1tpXS5jb3NfbWF4KTsKLSAgICAg ICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJDQk0gbGVuZ3RoIiwgaW5mb1tpXS5jYm1fbGVuKTsK LSAgICAgICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZhdWx0IENCTSIsCi0gICAgICAg ICAgICAgICAoMXVsbCA8PCBpbmZvW2ldLmNibV9sZW4pIC0gMSk7Ci0gICAgfQotCi0gICAgbGli eGxfcHNyX2NhdF9pbmZvX2xpc3RfZnJlZShpbmZvLCBucik7CisgICAgbGlieGxfcHNyX2h3X2lu Zm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKICAgICByZXR1cm4gcmM7CiB9CiAKLSNpZmRlZiBMSUJY TF9IQVZFX1BTUl9NQkEKLXN0YXRpYyBpbnQgcHNyX21iYV9od2luZm8odm9pZCkKK2ludCBtYWlu X3Bzcl9tYmFfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7Ci0gICAgaW50IHJjOwotICAg IGludCBpLCBucjsKLSAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5mbzsKLQotICAgIHByaW50Zigi TWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9uIChNQkEpOlxuIik7CisgICAgaW50IG9wdDsKKyAg ICB1aW50MzJfdCBkb21pZDsKIAotICAgIHJjID0gbGlieGxfcHNyX2dldF9od19pbmZvKGN0eCwg JmluZm8sICZuciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9QU1JfRkVB VF9UWVBFX01CQV9JTkZPLCAwKTsKLSAgICBpZiAocmMpIHsKLSAgICAgICAgZnByaW50ZihzdGRl cnIsICJGYWlsZWQgdG8gZ2V0IG1iYSBpbmZvXG4iKTsKLSAgICAgICAgcmV0dXJuIHJjOworICAg IFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICIiLCBOVUxMLCAicHNyLW1iYS1zaG93IiwgMCkgewor ICAgICAgICAvKiBObyBvcHRpb25zICovCiAgICAgfQogCi0gICAgZm9yIChpID0gMDsgaSA8IG5y OyBpKyspIHsKLSAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJTb2NrZXQgSUQiLCBpbmZv W2ldLmlkKTsKLSAgICAgICAgcHJpbnRmKCIlLTE2czogJXNcbiIsICJMaW5lYXIgTW9kZSIsCi0g ICAgICAgICAgICAgICBpbmZvW2ldLnUubWJhX2luZm8ubGluZWFyID8gIkVuYWJsZWQiIDogIkRp c2FibGVkIik7Ci0gICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiTWF4aW11bSBDT1MiLCBp bmZvW2ldLnUubWJhX2luZm8uY29zX21heCk7Ci0gICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4i LCAiTWF4aW11bSBUaHJvdHRsaW5nIFZhbHVlIiwKLSAgICAgICAgICAgICAgIGluZm9baV0udS5t YmFfaW5mby50aHJ0bF9tYXgpOwotICAgICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIkRlZmF1 bHQgVGhyb3R0bGluZyBWYWx1ZSIsIDApOworICAgIGlmIChvcHRpbmQgPj0gYXJnYykKKyAgICAg ICAgZG9taWQgPSBJTlZBTElEX0RPTUlEOworICAgIGVsc2UgaWYgKG9wdGluZCA9PSBhcmdjIC0g MSkKKyAgICAgICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZF0pOworICAgIGVsc2Ug eworICAgICAgICBoZWxwKCJwc3ItbWJhLXNob3ciKTsKKyAgICAgICAgcmV0dXJuIDI7CiAgICAg fQogCi0gICAgbGlieGxfcHNyX2h3X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKLSAgICByZXR1 cm4gcmM7CisgICAgcmV0dXJuIHBzcl92YWxfc2hvdyhkb21pZCwgTElCWExfUFNSX0ZFQVRfVFlQ RV9NQkFfSU5GTywgMCk7CiB9CiAjZW5kaWYKIApAQCAtNjIyLDcgKzY5Myw3IEBAIGludCBtYWlu X3Bzcl9jYXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIHJldHVybiAyOwog ICAgIH0KIAotICAgIHJldHVybiBwc3JfY2F0X3Nob3coZG9taWQsIGx2bCk7CisgICAgcmV0dXJu IHBzcl92YWxfc2hvdyhkb21pZCwgTElCWExfUFNSX0ZFQVRfVFlQRV9DQVRfSU5GTywgbHZsKTsK IH0KIAogaW50IG1haW5fcHNyX2h3aW5mbyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0tIAoxLjku MQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=