From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 1/1] xen/arm: Add pl011 uart support in Xen for guest domains Date: Mon, 6 Feb 2017 23:39:08 +0530 Message-ID: <1486404548-15062-2-git-send-email-bhupinder.thakur@linaro.org> References: <1486404548-15062-1-git-send-email-bhupinder.thakur@linaro.org> 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 1canjD-0007fs-My for xen-devel@lists.xenproject.org; Mon, 06 Feb 2017 18:09:27 +0000 Received: by mail-pg0-f47.google.com with SMTP id 14so30453622pgg.1 for ; Mon, 06 Feb 2017 10:09:24 -0800 (PST) In-Reply-To: <1486404548-15062-1-git-send-email-bhupinder.thakur@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org QXMgcGVyICJWTSBTeXN0ZW0gU3BlY2lmaWNhdGlvbiBmb3IgIEFSTSBQcm9jZXNzb3JzIiwgdGhl cmUgaXMgYSByZXF1aXJlbWVudCBmb3IgWGVuIHRvIHN1cHBvcnQgZ3Vlc3QgY29uc29sZQpvdmVy IHBsMDExIFVBUlQsIHdoaWNoIGlzIFNCU0EgY29tcGxpYW50LiBUaGUgY2hhbmdlcyBpbiB0aGlz IHBhdGNoIGltcGxlbWVudCB0aGUgcGwwMTEgZW11bGF0aW9uIGluIFhlbgphbmQgYSBuZXcgcGww MTEgY29uc29sZSBzdXBwb3J0IGluIHhlbmNvbnNvbGVkLgoKU2lnbmVkLW9mZi1ieTogQmh1cGlu ZGVyIFRoYWt1ciA8Ymh1cGluZGVyLnRoYWt1ckBsaW5hcm8ub3JnPgotLS0KIHRvb2xzL2NvbnNv bGUvZGFlbW9uL2lvLmMgICAgICAgfCAxNzAgKysrKysrKysrKysrKystLS0KIHRvb2xzL2NvbnNv bGUvZGFlbW9uL21haW4uYyAgICAgfCAgMTAgKwogdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20u aCAgICB8ICAgMyArCiB0b29scy9saWJ4Yy94Y19kb21fYXJtLmMgICAgICAgIHwgICA3ICstCiB0 b29scy9saWJ4Yy94Y19kb21fYm9vdC5jICAgICAgIHwgICAzICsKIHRvb2xzL2xpYnhjL3hjX2Rv bWFpbi5jICAgICAgICAgfCAgIDMgLQogdG9vbHMvbGlieGwvbGlieGwuYyAgICAgICAgICAgICB8 ICAgNCArCiB0b29scy9saWJ4bC9saWJ4bF9hcm0uYyAgICAgICAgIHwgIDUwICsrKystCiB0b29s cy9saWJ4bC9saWJ4bF9kb20uYyAgICAgICAgIHwgICA5ICstCiB0b29scy9saWJ4bC9saWJ4bF9p bnRlcm5hbC5oICAgIHwgICAyICsKIHhlbi9hcmNoL2FybS9NYWtlZmlsZSAgICAgICAgICAgfCAg IDEgKwogeGVuL2FyY2gvYXJtL2RvbWFpbi5jICAgICAgICAgICB8ICAgNyArCiB4ZW4vYXJjaC9h cm0vaHZtLmMgICAgICAgICAgICAgIHwgIDIyICsrLQogeGVuL2FyY2gvYXJtL3NldHVwLmMgICAg ICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC9hcm0vdmdpYy5jICAgICAgICAgICAgIHwgICA3ICsK IHhlbi9hcmNoL2FybS92cGwwMTEuYyAgICAgICAgICAgfCAzOTEgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi9ldmVudF9jaGFubmVsLmMgICAgICB8 ICAxMSArLQogeGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCAgICB8ICAxNCArKwogeGVuL2lu Y2x1ZGUvcHVibGljL2FyY2gtYXJtLmggICB8ICAgNSArCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZt L3BhcmFtcy5oIHwgIDEwICstCiB4ZW4vaW5jbHVkZS94ZW4vdnBsMDExLmggICAgICAgIHwgMTQ2 ICsrKysrKysrKysrKysrKwogMjEgZmlsZXMgY2hhbmdlZCwgODMyIGluc2VydGlvbnMoKyksIDQ0 IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS92cGwwMTEuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi92cGwwMTEuaAoKZGlmZiAtLWdpdCBh L3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMgYi90b29scy9jb25zb2xlL2RhZW1vbi9pby5jCmlu ZGV4IDdlNmE4ODYuLjhlYTFjMTMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lv LmMKKysrIGIvdG9vbHMvY29uc29sZS9kYWVtb24vaW8uYwpAQCAtNjgsNiArNjgsOCBAQCBleHRl cm4gaW50IGxvZ190aW1lX2h2OwogZXh0ZXJuIGludCBsb2dfdGltZV9ndWVzdDsKIGV4dGVybiBj aGFyICpsb2dfZGlyOwogZXh0ZXJuIGludCBkaXNjYXJkX292ZXJmbG93ZWRfZGF0YTsKK2V4dGVy biBpbnQgZGVidWdfZmQ7CitleHRlcm4gYm9vbCB2cGwwMTFfY29uc29sZTsKIAogc3RhdGljIGlu dCBsb2dfdGltZV9odl9uZWVkdHMgPSAxOwogc3RhdGljIGludCBsb2dfdGltZV9ndWVzdF9uZWVk dHMgPSAxOwpAQCAtMTAxLDExICsxMDMsMTUgQEAgc3RydWN0IGRvbWFpbiB7CiAJc3RydWN0IGRv bWFpbiAqbmV4dDsKIAljaGFyICpjb25zcGF0aDsKIAlpbnQgcmluZ19yZWY7CisJaW50IHZwbDAx MV9yaW5nX3JlZjsKIAl4ZW5ldnRjaG5fcG9ydF9vcl9lcnJvcl90IGxvY2FsX3BvcnQ7CiAJeGVu ZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCByZW1vdGVfcG9ydDsKKwl4ZW5ldnRjaG5fcG9ydF9vcl9l cnJvcl90IHZwbDAxMV9sb2NhbF9wb3J0OworCXhlbmV2dGNobl9wb3J0X29yX2Vycm9yX3QgdnBs MDExX3JlbW90ZV9wb3J0OwogCXhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGU7CiAJaW50IHhj ZV9wb2xsZmRfaWR4OwogCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZXJmYWNlOworCXN0 cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqdnBsMDExX2ludGVyZmFjZTsKIAlpbnQgZXZlbnRfY291 bnQ7CiAJbG9uZyBsb25nIG5leHRfcGVyaW9kOwogfTsKQEAgLTE1OCwxMSArMTY0LDExIEBAIHN0 YXRpYyBpbnQgd3JpdGVfd2l0aF90aW1lc3RhbXAoaW50IGZkLCBjb25zdCBjaGFyICpkYXRhLCBz aXplX3Qgc3osCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1ZmZlcl9hcHBlbmQoc3Ry dWN0IGRvbWFpbiAqZG9tKQorc3RhdGljIHZvaWQgYnVmZmVyX2FwcGVuZChzdHJ1Y3QgZG9tYWlu ICpkb20sIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiwgaW50IHBvcnQpCiB7CiAJc3Ry dWN0IGJ1ZmZlciAqYnVmZmVyID0gJmRvbS0+YnVmZmVyOwogCVhFTkNPTlNfUklOR19JRFggY29u cywgcHJvZCwgc2l6ZTsKLQlzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGYgPSBkb20tPmlu dGVyZmFjZTsKKyAgICBjaGFyIGRlYnVnX2J1Zls4MF07CiAKIAljb25zID0gaW50Zi0+b3V0X2Nv bnM7CiAJcHJvZCA9IGludGYtPm91dF9wcm9kOwpAQCAtMTg3LDcgKzE5MywxMCBAQCBzdGF0aWMg dm9pZCBidWZmZXJfYXBwZW5kKHN0cnVjdCBkb21haW4gKmRvbSkKIAogCXhlbl9tYigpOwogCWlu dGYtPm91dF9jb25zID0gY29uczsKLQl4ZW5ldnRjaG5fbm90aWZ5KGRvbS0+eGNlX2hhbmRsZSwg ZG9tLT5sb2NhbF9wb3J0KTsKKyAgICBzbnByaW50ZihkZWJ1Z19idWYsIDc5LCAiY29ucz0lZCwg cHJvZD0lZFxuIiwgY29ucywgcHJvZCk7CisgICAgd3JpdGUgKGRlYnVnX2ZkLCBkZWJ1Z19idWYs IHN0cmxlbihkZWJ1Z19idWYpKTsKKworCXhlbmV2dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxl LCBwb3J0KTsKIAogCS8qIEdldCB0aGUgZGF0YSB0byB0aGUgbG9nZmlsZSBhcyBlYXJseSBhcyBw b3NzaWJsZSBiZWNhdXNlIGlmCiAJICogbm8gb25lIGlzIGxpc3RlbmluZyBvbiB0aGUgY29uc29s ZSBwdHkgdGhlbiBpdCB3aWxsIGZpbGwgdXAKQEAgLTUyOSwxNCArNTM4LDY1IEBAIHN0YXRpYyB2 b2lkIGRvbWFpbl91bm1hcF9pbnRlcmZhY2Uoc3RydWN0IGRvbWFpbiAqZG9tKQogCWRvbS0+cmlu Z19yZWYgPSAtMTsKIH0KICAKK3N0YXRpYyB2b2lkIGRvbWFpbl91bm1hcF92cGwwMTFfaW50ZXJm YWNlKHN0cnVjdCBkb21haW4gKmRvbSkKK3sKKwlpZiAoIGRvbS0+dnBsMDExX2ludGVyZmFjZSA9 PSBOVUxMICkKKwkJcmV0dXJuOworCWlmICggeGd0X2hhbmRsZSAmJiBkb20tPnZwbDAxMV9yaW5n X3JlZiA9PSAtMSApCisJCXhlbmdudHRhYl91bm1hcCh4Z3RfaGFuZGxlLCBkb20tPnZwbDAxMV9p bnRlcmZhY2UsIDEpOworCWVsc2UKKwkJbXVubWFwKGRvbS0+dnBsMDExX2ludGVyZmFjZSwgWENf UEFHRV9TSVpFKTsKKwlkb20tPnZwbDAxMV9pbnRlcmZhY2UgPSBOVUxMOworCWRvbS0+dnBsMDEx X3JpbmdfcmVmID0gLTE7Cit9CisKK2ludCBiaW5kX2V2ZW50X2NoYW5uZWwoc3RydWN0IGRvbWFp biAqZG9tLCBpbnQgbmV3X3Jwb3J0LCBpbnQgKmxwb3J0LCBpbnQgKnJwb3J0KQoreworICAgIGlu dCBlcnIgPSAwLCByYzsKKworCS8qIEdvIG5vIGZ1cnRoZXIgaWYgcG9ydCBoYXMgbm90IGNoYW5n ZWQgYW5kIHdlIGFyZSBzdGlsbCBib3VuZC4gKi8KKwlpZiAoIG5ld19ycG9ydCA9PSAqcnBvcnQg KSB7CisJCXhjX2V2dGNobl9zdGF0dXNfdCBzdGF0dXMgPSB7CisJCQkuZG9tID0gRE9NSURfU0VM RiwKKwkJCS5wb3J0ID0gKmxwb3J0IH07CisJCWlmICgoeGNfZXZ0Y2huX3N0YXR1cyh4YywgJnN0 YXR1cykgPT0gMCkgJiYKKwkJICAgIChzdGF0dXMuc3RhdHVzID09IEVWVENITlNUQVRfaW50ZXJk b21haW4pKQorICAgICAgICAgICAgZ290byBvdXQ7CisJfQorCisgICAgLyogaW5pdGlhbGl6ZSB0 aGUgcG9ydHMgKi8KKwkqbHBvcnQgPSAtMTsKKwkqcnBvcnQgPSAtMTsKKyAKKyAgICAvKiBiaW5k IHRvIG5ldyByZW1vdGUgcG9ydCAqLworCXJjID0geGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4o ZG9tLT54Y2VfaGFuZGxlLAorCQlkb20tPmRvbWlkLCBuZXdfcnBvcnQpOworCisJaWYgKCByYyA9 PSAtMSApIHsKKwkJZXJyID0gZXJybm87CisJCXhlbmV2dGNobl9jbG9zZShkb20tPnhjZV9oYW5k bGUpOworCQlkb20tPnhjZV9oYW5kbGUgPSBOVUxMOworCQlnb3RvIG91dDsKKwl9CisKKyAgICAv KiBzdG9yZSBuZXcgbG9jYWwgYW5kIHJlbW90ZSBldmVudCBjaGFubmVsIHBvcnRzICovCisJKmxw b3J0ID0gcmM7CisJKnJwb3J0ID0gbmV3X3Jwb3J0OworCitvdXQ6CisgICAgcmV0dXJuIGVycjsK K30KKwogc3RhdGljIGludCBkb21haW5fY3JlYXRlX3Jpbmcoc3RydWN0IGRvbWFpbiAqZG9tKQog ewotCWludCBlcnIsIHJlbW90ZV9wb3J0LCByaW5nX3JlZiwgcmM7CisJaW50IGVyciwgcmVtb3Rl X3BvcnQsIHJpbmdfcmVmLCB2cGwwMTFfcmVtb3RlX3BvcnQsIHZwbDAxMV9yaW5nX3JlZjsKIAlj aGFyICp0eXBlLCBwYXRoW1BBVEhfTUFYXTsKIAogCWVyciA9IHhzX2dhdGhlcih4cywgZG9tLT5j b25zcGF0aCwKIAkJCSJyaW5nLXJlZiIsICIldSIsICZyaW5nX3JlZiwKIAkJCSJwb3J0IiwgIiVp IiwgJnJlbW90ZV9wb3J0LAorCQkJInZwbDAxMS1yaW5nLXJlZiIsICIldSIsICZ2cGwwMTFfcmlu Z19yZWYsCisgICAgICAgICAgICAidnBsMDExLXBvcnQiLCAiJWkiLCAmdnBsMDExX3JlbW90ZV9w b3J0LAogCQkJTlVMTCk7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CkBAIC01NTMsNiArNjEzLDEw IEBAIHN0YXRpYyBpbnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21haW4gKmRvbSkKIAlp ZiAocmluZ19yZWYgIT0gZG9tLT5yaW5nX3JlZiAmJiBkb20tPnJpbmdfcmVmICE9IC0xKQogCQlk b21haW5fdW5tYXBfaW50ZXJmYWNlKGRvbSk7CiAKKwkvKiBJZiB1c2luZyB2cGwwMTEgcmluZ19y ZWYgYW5kIGl0IGhhcyBjaGFuZ2VkLCByZW1hcCAqLworCWlmICggdnBsMDExX3JpbmdfcmVmICE9 IGRvbS0+dnBsMDExX3JpbmdfcmVmICYmIGRvbS0+dnBsMDExX3JpbmdfcmVmICE9IC0xICkKKwkJ ZG9tYWluX3VubWFwX3ZwbDAxMV9pbnRlcmZhY2UoZG9tKTsKKwogCWlmICghZG9tLT5pbnRlcmZh Y2UgJiYgeGd0X2hhbmRsZSkgewogCQkvKiBQcmVmZXIgdXNpbmcgZ3JhbnQgdGFibGUgKi8KIAkJ ZG9tLT5pbnRlcmZhY2UgPSB4ZW5nbnR0YWJfbWFwX2dyYW50X3JlZih4Z3RfaGFuZGxlLApAQCAt NTYwLDYgKzYyNCw4IEBAIHN0YXRpYyBpbnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21h aW4gKmRvbSkKIAkJCVBST1RfUkVBRHxQUk9UX1dSSVRFKTsKIAkJZG9tLT5yaW5nX3JlZiA9IC0x OwogCX0KKworICAgIC8qIG1hcCBQViBjb25zb2xlIHJpbmcgYnVmZmVyICovCiAJaWYgKCFkb20t PmludGVyZmFjZSkgewogCQkvKiBGYWxsIGJhY2sgdG8geGNfbWFwX2ZvcmVpZ25fcmFuZ2UgKi8K IAkJZG9tLT5pbnRlcmZhY2UgPSB4Y19tYXBfZm9yZWlnbl9yYW5nZSgKQEAgLTU3MywxOCArNjM5 LDIwIEBAIHN0YXRpYyBpbnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21haW4gKmRvbSkK IAkJZG9tLT5yaW5nX3JlZiA9IHJpbmdfcmVmOwogCX0KIAotCS8qIEdvIG5vIGZ1cnRoZXIgaWYg cG9ydCBoYXMgbm90IGNoYW5nZWQgYW5kIHdlIGFyZSBzdGlsbCBib3VuZC4gKi8KLQlpZiAocmVt b3RlX3BvcnQgPT0gZG9tLT5yZW1vdGVfcG9ydCkgewotCQl4Y19ldnRjaG5fc3RhdHVzX3Qgc3Rh dHVzID0gewotCQkJLmRvbSA9IERPTUlEX1NFTEYsCi0JCQkucG9ydCA9IGRvbS0+bG9jYWxfcG9y dCB9OwotCQlpZiAoKHhjX2V2dGNobl9zdGF0dXMoeGMsICZzdGF0dXMpID09IDApICYmCi0JCSAg ICAoc3RhdHVzLnN0YXR1cyA9PSBFVlRDSE5TVEFUX2ludGVyZG9tYWluKSkKKyAgICAvKiBtYXAg dnBsMDExIGNvbnNvbGUgcmluZyBidWZmZXIgKi8KKwlpZiAoICFkb20tPnZwbDAxMV9pbnRlcmZh Y2UgKSB7CisJCS8qIEZhbGwgYmFjayB0byB4Y19tYXBfZm9yZWlnbl9yYW5nZSAqLworCQlkb20t PnZwbDAxMV9pbnRlcmZhY2UgPSB4Y19tYXBfZm9yZWlnbl9yYW5nZSgKKwkJCXhjLCBkb20tPmRv bWlkLCBYQ19QQUdFX1NJWkUsCisJCQlQUk9UX1JFQUR8UFJPVF9XUklURSwKKwkJCSh1bnNpZ25l ZCBsb25nKXZwbDAxMV9yaW5nX3JlZik7CisJCWlmICggZG9tLT52cGwwMTFfaW50ZXJmYWNlID09 IE5VTEwgKSB7CisJCQllcnIgPSBFSU5WQUw7CiAJCQlnb3RvIG91dDsKKwkJfQorCQlkb20tPnZw bDAxMV9yaW5nX3JlZiA9IHZwbDAxMV9yaW5nX3JlZjsKIAl9CiAKLQlkb20tPmxvY2FsX3BvcnQg PSAtMTsKLQlkb20tPnJlbW90ZV9wb3J0ID0gLTE7CiAJaWYgKGRvbS0+eGNlX2hhbmRsZSAhPSBO VUxMKQogCQl4ZW5ldnRjaG5fY2xvc2UoZG9tLT54Y2VfaGFuZGxlKTsKIApAQCAtNTk1LDE4ICs2 NjMsMjIgQEAgc3RhdGljIGludCBkb21haW5fY3JlYXRlX3Jpbmcoc3RydWN0IGRvbWFpbiAqZG9t KQogCQllcnIgPSBlcnJubzsKIAkJZ290byBvdXQ7CiAJfQotIAotCXJjID0geGVuZXZ0Y2huX2Jp bmRfaW50ZXJkb21haW4oZG9tLT54Y2VfaGFuZGxlLAotCQlkb20tPmRvbWlkLCByZW1vdGVfcG9y dCk7CiAKLQlpZiAocmMgPT0gLTEpIHsKLQkJZXJyID0gZXJybm87CisgICAgLyogYmluZCBQViBj b25zb2xlIGNoYW5uZWwgKi8KKyAgICBlcnIgPSBiaW5kX2V2ZW50X2NoYW5uZWwoZG9tLCByZW1v dGVfcG9ydCwgJmRvbS0+bG9jYWxfcG9ydCwgJmRvbS0+cmVtb3RlX3BvcnQpOworICAgIGlmIChl cnIpCisgICAgewogCQl4ZW5ldnRjaG5fY2xvc2UoZG9tLT54Y2VfaGFuZGxlKTsKLQkJZG9tLT54 Y2VfaGFuZGxlID0gTlVMTDsKLQkJZ290byBvdXQ7Ci0JfQotCWRvbS0+bG9jYWxfcG9ydCA9IHJj OwotCWRvbS0+cmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKKyAgICAgICAgZ290byBvdXQ7Cisg ICAgfQorCisgICAgLyogYmluZCB2cGwwMTEgY29uc29sZSBjaGFubmVsICovCisgICAgZXJyID0g YmluZF9ldmVudF9jaGFubmVsKGRvbSwgdnBsMDExX3JlbW90ZV9wb3J0LCAmZG9tLT52cGwwMTFf bG9jYWxfcG9ydCwgJmRvbS0+dnBsMDExX3JlbW90ZV9wb3J0KTsKKyAgICBpZiAoZXJyKQorICAg IHsKKwkJeGVuZXZ0Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7CisgICAgICAgIGdvdG8gb3V0 OworICAgIH0KIAogCWlmIChkb20tPm1hc3Rlcl9mZCA9PSAtMSkgewogCQlpZiAoIWRvbWFpbl9j cmVhdGVfdHR5KGRvbSkpIHsKQEAgLTYxNSw2ICs2ODcsOCBAQCBzdGF0aWMgaW50IGRvbWFpbl9j cmVhdGVfcmluZyhzdHJ1Y3QgZG9tYWluICpkb20pCiAJCQlkb20tPnhjZV9oYW5kbGUgPSBOVUxM OwogCQkJZG9tLT5sb2NhbF9wb3J0ID0gLTE7CiAJCQlkb20tPnJlbW90ZV9wb3J0ID0gLTE7CisJ CQlkb20tPnZwbDAxMV9sb2NhbF9wb3J0ID0gLTE7CisJCQlkb20tPnZwbDAxMV9yZW1vdGVfcG9y dCA9IC0xOwogCQkJZ290byBvdXQ7CiAJCX0KIAl9CkBAIC04MTIsOCArODg2LDkgQEAgc3RhdGlj IHZvaWQgaGFuZGxlX3R0eV9yZWFkKHN0cnVjdCBkb21haW4gKmRvbSkKIAlzc2l6ZV90IGxlbiA9 IDA7CiAJY2hhciBtc2dbODBdOwogCWludCBpOwotCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAq aW50ZiA9IGRvbS0+aW50ZXJmYWNlOworCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZjsK IAlYRU5DT05TX1JJTkdfSURYIHByb2Q7CisgICAgeGVuZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCBw b3J0OwogCiAJaWYgKGRvbS0+aXNfZGVhZCkKIAkJcmV0dXJuOwpAQCAtODI2LDYgKzkwMSwyMSBA QCBzdGF0aWMgdm9pZCBoYW5kbGVfdHR5X3JlYWQoc3RydWN0IGRvbWFpbiAqZG9tKQogCQlsZW4g PSBzaXplb2YobXNnKTsKIAogCWxlbiA9IHJlYWQoZG9tLT5tYXN0ZXJfZmQsIG1zZywgbGVuKTsK KworICAgIC8qIHNlbGVjdCB0aGUgaW50ZXJmYWNlIGJhc2VkIG9uIHdoZXRoZXIgdnBsMDExIGNv bnNvbGUgaXMgCisgICAgICogZW5hYmxlZCBvciBub3QKKyAgICAgKi8KKyAgICBpZiAoIHZwbDAx MV9jb25zb2xlICkKKyAgICB7CisgICAgICAgIGludGYgPSBkb20tPnZwbDAxMV9pbnRlcmZhY2U7 CisgICAgICAgIHBvcnQgPSBkb20tPnZwbDAxMV9sb2NhbF9wb3J0OworICAgIH0KKyAgICBlbHNl CisgICAgeworICAgICAgICBpbnRmID0gZG9tLT5pbnRlcmZhY2U7CisgICAgICAgIHBvcnQgPSBk b20tPmxvY2FsX3BvcnQ7CisgICAgfQorCiAJLyoKIAkgKiBOb3RlOiBvbiBTb2xhcmlzLCBsZW4g PT0gMCBtZWFucyB0aGUgc2xhdmUgY2xvc2VkLCBhbmQgdGhpcwogCSAqIGlzIG5vIHByb2JsZW0s IGJ1dCBMaW51eCBjYW4ndCBoYW5kbGUgdGhpcyB1c2VmdWxseSwgc28gd2UKQEAgLTgzNSwxMyAr OTI1LDE0IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV90dHlfcmVhZChzdHJ1Y3QgZG9tYWluICpkb20p CiAJCWRvbWFpbl9oYW5kbGVfYnJva2VuX3R0eShkb20sIGRvbWFpbl9pc192YWxpZChkb20tPmRv bWlkKSk7CiAJfSBlbHNlIGlmIChkb21haW5faXNfdmFsaWQoZG9tLT5kb21pZCkpIHsKIAkJcHJv ZCA9IGludGYtPmluX3Byb2Q7CisKIAkJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAJCQlp bnRmLT5pbltNQVNLX1hFTkNPTlNfSURYKHByb2QrKywgaW50Zi0+aW4pXSA9CiAJCQkJbXNnW2ld OwogCQl9CiAJCXhlbl93bWIoKTsKIAkJaW50Zi0+aW5fcHJvZCA9IHByb2Q7Ci0JCXhlbmV2dGNo bl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBkb20tPmxvY2FsX3BvcnQpOworCQl4ZW5ldnRjaG5f bm90aWZ5KGRvbS0+eGNlX2hhbmRsZSwgcG9ydCk7CiAJfSBlbHNlIHsKIAkJZG9tYWluX2Nsb3Nl X3R0eShkb20pOwogCQlzaHV0ZG93bl9kb21haW4oZG9tKTsKQEAgLTg2OSw2ICs5NjAsOCBAQCBz dGF0aWMgdm9pZCBoYW5kbGVfdHR5X3dyaXRlKHN0cnVjdCBkb21haW4gKmRvbSkKIHN0YXRpYyB2 b2lkIGhhbmRsZV9yaW5nX3JlYWQoc3RydWN0IGRvbWFpbiAqZG9tKQogewogCXhlbmV2dGNobl9w b3J0X29yX2Vycm9yX3QgcG9ydDsKKyAgICBjaGFyIGRlYnVnX2J1Zls4MF07CisgICAgc3RydWN0 IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmOwogCiAJaWYgKGRvbS0+aXNfZGVhZCkKIAkJcmV0dXJu OwpAQCAtODc2LDEyICs5NjksMjggQEAgc3RhdGljIHZvaWQgaGFuZGxlX3JpbmdfcmVhZChzdHJ1 Y3QgZG9tYWluICpkb20pCiAJaWYgKChwb3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoZG9tLT54Y2Vf aGFuZGxlKSkgPT0gLTEpCiAJCXJldHVybjsKIAotCWRvbS0+ZXZlbnRfY291bnQrKzsKIAotCWJ1 ZmZlcl9hcHBlbmQoZG9tKTsKKyAgICBkb20tPmV2ZW50X2NvdW50Kys7CisKKyAgICAvKgorICAg ICAqIHNlbGVjdCB0aGUgaW50ZXJmYWNlIGJhc2VkIG9uIHRoZSBwb3J0IHdoaWNoIHRoZSBldmVu dCByZWNlaXZlZAorICAgICAqLworICAgIGlmICggcG9ydCA9PSBkb20tPnZwbDAxMV9sb2NhbF9w b3J0ICkKKyAgICB7CisgICAgICAgIGludGYgPSBkb20tPnZwbDAxMV9pbnRlcmZhY2U7CisgICAg fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGludGYgPSBkb20tPmludGVyZmFjZTsKKyAgICB9 CisKKyAgICBzbnByaW50ZiAoZGVidWdfYnVmLCA3OSwgInBvcnQ9JWRcbiIsIHBvcnQpOworICAg IHdyaXRlIChkZWJ1Z19mZCwgZGVidWdfYnVmLCBzdHJsZW4oZGVidWdfYnVmKSk7CisKKyAgICBi dWZmZXJfYXBwZW5kKGRvbSwgaW50ZiwgcG9ydCk7CiAKLQlpZiAoZG9tLT5ldmVudF9jb3VudCA8 IFJBVEVfTElNSVRfQUxMT1dBTkNFKQotCQkodm9pZCl4ZW5ldnRjaG5fdW5tYXNrKGRvbS0+eGNl X2hhbmRsZSwgcG9ydCk7CisgICAgaWYgKGRvbS0+ZXZlbnRfY291bnQgPCBSQVRFX0xJTUlUX0FM TE9XQU5DRSkKKyAgICAgICAgKHZvaWQpeGVuZXZ0Y2huX3VubWFzayhkb20tPnhjZV9oYW5kbGUs IHBvcnQpOwogfQogCiBzdGF0aWMgdm9pZCBoYW5kbGVfeHModm9pZCkKQEAgLTEwNjgsNyArMTE3 Nyw4IEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJCQlpZiAoKG5vdys1KSA+IGQtPm5leHRfcGVy aW9kKSB7CiAJCQkJZC0+bmV4dF9wZXJpb2QgPSBub3cgKyBSQVRFX0xJTUlUX1BFUklPRDsKIAkJ CQlpZiAoZC0+ZXZlbnRfY291bnQgPj0gUkFURV9MSU1JVF9BTExPV0FOQ0UpIHsKLQkJCQkJKHZv aWQpeGVuZXZ0Y2huX3VubWFzayhkLT54Y2VfaGFuZGxlLCBkLT5sb2NhbF9wb3J0KTsKKwkJCQkJ ICAgICh2b2lkKXhlbmV2dGNobl91bm1hc2soZC0+eGNlX2hhbmRsZSwgZC0+bG9jYWxfcG9ydCk7 CisJCQkJCSAgICAodm9pZCl4ZW5ldnRjaG5fdW5tYXNrKGQtPnhjZV9oYW5kbGUsIGQtPnZwbDAx MV9sb2NhbF9wb3J0KTsKIAkJCQl9CiAJCQkJZC0+ZXZlbnRfY291bnQgPSAwOwogCQkJfQpkaWZm IC0tZ2l0IGEvdG9vbHMvY29uc29sZS9kYWVtb24vbWFpbi5jIGIvdG9vbHMvY29uc29sZS9kYWVt b24vbWFpbi5jCmluZGV4IDgwNmQyZmQuLjNkM2UwNjEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2NvbnNv bGUvZGFlbW9uL21haW4uYworKysgYi90b29scy9jb25zb2xlL2RhZW1vbi9tYWluLmMKQEAgLTIx LDYgKzIxLDcgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2lu Y2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4K ICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KQEAgLTQxLDYgKzQyLDEz IEBAIGludCBsb2dfdGltZV9ndWVzdCA9IDA7CiBjaGFyICpsb2dfZGlyID0gTlVMTDsKIGludCBk aXNjYXJkX292ZXJmbG93ZWRfZGF0YSA9IDE7CiAKK2ludCBkZWJ1Z19mZDsKKy8qCisgKiBGb3Ig bm93IHBsMDExIGNvbnNvbGUgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICogTGF0ZXIgaXQgd291 bGQgYmUgZXhwb3J0ZWQgb3V0IGFzIGEgdXNlciBjb25maWd1cmFibGUgb3B0aW9uCisgKi8KK2Jv b2wgdnBsMDExX2NvbnNvbGU9dHJ1ZTsKKwogc3RhdGljIHZvaWQgaGFuZGxlX2h1cChpbnQgc2ln KQogewogICAgICAgICBsb2dfcmVsb2FkID0gMTsKQEAgLTE5MCw2ICsxOTgsOCBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJb3BlbmxvZygieGVuY29uc29sZWQiLCBzeXNsb2df b3B0aW9uLCBMT0dfREFFTU9OKTsKIAlzZXRsb2dtYXNrKHN5c2xvZ19tYXNrKTsKIAorCWRlYnVn X2ZkID0gb3BlbigiL3Zhci9sb2cveGVuL2RlYnVnLmxvZyIsIE9fV1JPTkxZfE9fQ1JFQVR8T19B UFBFTkQsIDA2NDQpOworCiAJaW5jcmVhc2VfZmRfbGltaXQoKTsKIAogCWlmICghaXNfaW50ZXJh Y3RpdmUpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmggYi90b29s cy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oCmluZGV4IDYwOGNiYzIuLjc0NTRiYTkgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVk ZS94Y19kb20uaApAQCAtMjE4LDYgKzIxOCw5IEBAIHN0cnVjdCB4Y19kb21faW1hZ2UgewogCiAg ICAgLyogRXh0cmEgU01CSU9TIHN0cnVjdHVyZXMgcGFzc2VkIHRvIEhWTUxPQURFUiAqLwogICAg IHN0cnVjdCB4Y19odm1fZmlybXdhcmVfbW9kdWxlIHNtYmlvc19tb2R1bGU7CisKKyAgICB4ZW5f cGZuX3QgdnBsMDExX2NvbnNvbGVfcGZuOworICAgIHVuc2lnbmVkIGludCB2cGwwMTFfY29uc29s ZV9ldnRjaG47CiB9OwogCiAvKiAtLS0gcGx1Z2dhYmxlIGtlcm5lbCBsb2FkZXIgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMv eGNfZG9tX2FybS5jIGIvdG9vbHMvbGlieGMveGNfZG9tX2FybS5jCmluZGV4IGE3ZTgzOWUuLjcw NjBhMjIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9hcm0uYworKysgYi90b29scy9s aWJ4Yy94Y19kb21fYXJtLmMKQEAgLTI2LDEwICsyNiwxMSBAQAogI2luY2x1ZGUgInhnX3ByaXZh dGUuaCIKICNpbmNsdWRlICJ4Y19kb20uaCIKIAotI2RlZmluZSBOUl9NQUdJQ19QQUdFUyAzCisj ZGVmaW5lIE5SX01BR0lDX1BBR0VTIDQKICNkZWZpbmUgQ09OU09MRV9QRk5fT0ZGU0VUIDAKICNk ZWZpbmUgWEVOU1RPUkVfUEZOX09GRlNFVCAxCiAjZGVmaW5lIE1FTUFDQ0VTU19QRk5fT0ZGU0VU IDIKKyNkZWZpbmUgVlBMMDExX0NPTlNPTEVfUEZOX09GRlNFVCAzCiAKICNkZWZpbmUgTFBBRV9T SElGVCA5CiAKQEAgLTg1LDYgKzg2LDcgQEAgc3RhdGljIGludCBhbGxvY19tYWdpY19wYWdlcyhz dHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiAKICAgICBkb20tPmNvbnNvbGVfcGZuID0gYmFzZSAr IENPTlNPTEVfUEZOX09GRlNFVDsKICAgICBkb20tPnhlbnN0b3JlX3BmbiA9IGJhc2UgKyBYRU5T VE9SRV9QRk5fT0ZGU0VUOworICAgIGRvbS0+dnBsMDExX2NvbnNvbGVfcGZuID0gYmFzZSArIFZQ TDAxMV9DT05TT0xFX1BGTl9PRkZTRVQ7CiAKICAgICB4Y19jbGVhcl9kb21haW5fcGFnZShkb20t PnhjaCwgZG9tLT5ndWVzdF9kb21pZCwgZG9tLT5jb25zb2xlX3Bmbik7CiAgICAgeGNfY2xlYXJf ZG9tYWluX3BhZ2UoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIGRvbS0+eGVuc3RvcmVfcGZu KTsKQEAgLTk1LDYgKzk3LDkgQEAgc3RhdGljIGludCBhbGxvY19tYWdpY19wYWdlcyhzdHJ1Y3Qg eGNfZG9tX2ltYWdlICpkb20pCiAgICAgICAgICAgICBkb20tPnhlbnN0b3JlX3Bmbik7CiAgICAg eGNfaHZtX3BhcmFtX3NldChkb20tPnhjaCwgZG9tLT5ndWVzdF9kb21pZCwgSFZNX1BBUkFNX01P TklUT1JfUklOR19QRk4sCiAgICAgICAgICAgICBiYXNlICsgTUVNQUNDRVNTX1BGTl9PRkZTRVQp OworICAgIHhjX2h2bV9wYXJhbV9zZXQoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIEhWTV9Q QVJBTV9WUEwwMTFfQ09OU09MRV9QRk4sCisgICAgICAgICAgICBiYXNlICsgVlBMMDExX0NPTlNP TEVfUEZOX09GRlNFVCk7CisKICAgICAvKiBhbGxvY2F0ZWQgYnkgdG9vbHN0YWNrICovCiAgICAg eGNfaHZtX3BhcmFtX3NldChkb20tPnhjaCwgZG9tLT5ndWVzdF9kb21pZCwgSFZNX1BBUkFNX0NP TlNPTEVfRVZUQ0hOLAogICAgICAgICAgICAgZG9tLT5jb25zb2xlX2V2dGNobik7CmRpZmYgLS1n aXQgYS90b29scy9saWJ4Yy94Y19kb21fYm9vdC5jIGIvdG9vbHMvbGlieGMveGNfZG9tX2Jvb3Qu YwppbmRleCA3OTEwNDFiLi4zNDIwYTA4IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19kb21f Ym9vdC5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV9ib290LmMKQEAgLTIyNyw2ICsyMjcsOSBA QCBpbnQgeGNfZG9tX2Jvb3RfaW1hZ2Uoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogICAgIGlm ICggKHJjID0gY2xlYXJfcGFnZShkb20sIGRvbS0+eGVuc3RvcmVfcGZuKSkgIT0gMCApCiAgICAg ICAgIHJldHVybiByYzsKIAorICAgIGlmICggKHJjID0gY2xlYXJfcGFnZShkb20sIGRvbS0+dnBs MDExX2NvbnNvbGVfcGZuKSkgIT0gMCApCisgICAgICAgIHJldHVybiByYzsKKwogICAgIC8qIHN0 YXJ0IGluZm8gcGFnZSAqLwogICAgIGlmICggZG9tLT5hcmNoX2hvb2tzLT5zdGFydF9pbmZvICkK ICAgICAgICAgZG9tLT5hcmNoX2hvb2tzLT5zdGFydF9pbmZvKGRvbSk7CmRpZmYgLS1naXQgYS90 b29scy9saWJ4Yy94Y19kb21haW4uYyBiL3Rvb2xzL2xpYnhjL3hjX2RvbWFpbi5jCmluZGV4IGZh MWRhZWIuLmUzMzA3MzggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX2RvbWFpbi5jCisrKyBi L3Rvb2xzL2xpYnhjL3hjX2RvbWFpbi5jCkBAIC0xMzM3LDkgKzEzMzcsNiBAQCBzdGF0aWMgaW5s aW5lIGludCB4Y19odm1fcGFyYW1fZGVwcmVjYXRlZF9jaGVjayh1aW50MzJfdCBwYXJhbSkKIHsK ICAgICBzd2l0Y2ggKCBwYXJhbSApCiAgICAgewotICAgICAgICBjYXNlIEhWTV9QQVJBTV9NRU1P UllfRVZFTlRfQ1IwOgotICAgICAgICBjYXNlIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfQ1IzOgot ICAgICAgICBjYXNlIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRfQ1I0OgogICAgICAgICBjYXNlIEhW TV9QQVJBTV9NRU1PUllfRVZFTlRfSU5UMzoKICAgICAgICAgY2FzZSBIVk1fUEFSQU1fTUVNT1JZ X0VWRU5UX1NJTkdMRV9TVEVQOgogICAgICAgICBjYXNlIEhWTV9QQVJBTV9NRU1PUllfRVZFTlRf TVNSOgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuYyBiL3Rvb2xzL2xpYnhsL2xpYnhs LmMKaW5kZXggZDQwMGZhMi4uNGFjZDhjNSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGwu YworKysgYi90b29scy9saWJ4bC9saWJ4bC5jCkBAIC0zMTU5LDYgKzMxNTksMTAgQEAgaW50IGxp YnhsX19kZXZpY2VfY29uc29sZV9hZGQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAg ICAgICAgIGZsZXhhcnJheV9hcHBlbmQocm9fZnJvbnQsIEdDU1BSSU5URigiJSJQUkl1MzIsIHN0 YXRlLT5jb25zb2xlX3BvcnQpKTsKICAgICAgICAgZmxleGFycmF5X2FwcGVuZChyb19mcm9udCwg InJpbmctcmVmIik7CiAgICAgICAgIGZsZXhhcnJheV9hcHBlbmQocm9fZnJvbnQsIEdDU1BSSU5U RigiJWx1Iiwgc3RhdGUtPmNvbnNvbGVfbWZuKSk7CisgICAgICAgIGZsZXhhcnJheV9hcHBlbmQo cm9fZnJvbnQsICJ2cGwwMTEtcG9ydCIpOworICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKHJvX2Zy b250LCBHQ1NQUklOVEYoIiUiUFJJdTMyLCBzdGF0ZS0+dnBsMDExX2NvbnNvbGVfcG9ydCkpOwor ICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKHJvX2Zyb250LCAidnBsMDExLXJpbmctcmVmIik7Cisg ICAgICAgIGZsZXhhcnJheV9hcHBlbmQocm9fZnJvbnQsIEdDU1BSSU5URigiJWx1Iiwgc3RhdGUt PnZwbDAxMV9jb25zb2xlX21mbikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZsZXhhcnJheV9h cHBlbmQoZnJvbnQsICJzdGF0ZSIpOwogICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKGZyb250LCBH Q1NQUklOVEYoIiVkIiwgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcpKTsKZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL2xpYnhsX2FybS5jIGIvdG9vbHMvbGlieGwvbGlieGxfYXJtLmMKaW5kZXggZDg0 MmQ4OC4uMTJlYjJiMiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfYXJtLmMKKysrIGIv dG9vbHMvbGlieGwvbGlieGxfYXJtLmMKQEAgLTEzMCw5ICsxMzAsMTAgQEAgc3RhdGljIHN0cnVj dCBhcmNoX2luZm8gewogICAgIGNvbnN0IGNoYXIgKmd1ZXN0X3R5cGU7CiAgICAgY29uc3QgY2hh ciAqdGltZXJfY29tcGF0OwogICAgIGNvbnN0IGNoYXIgKmNwdV9jb21wYXQ7CisgICAgY29uc3Qg Y2hhciAqdWFydF9jb21wYXQ7CiB9IGFyY2hfaW5mb1tdID0gewotICAgIHsieGVuLTMuMC1hcm12 N2wiLCAgImFybSxhcm12Ny10aW1lciIsICJhcm0sY29ydGV4LWExNSIgfSwKLSAgICB7Inhlbi0z LjAtYWFyY2g2NCIsICJhcm0sYXJtdjgtdGltZXIiLCAiYXJtLGFybXY4IiB9LAorICAgIHsieGVu LTMuMC1hcm12N2wiLCAgImFybSxhcm12Ny10aW1lciIsICJhcm0sY29ydGV4LWExNSIsICJhcm0s c2JzYS11YXJ0IiB9LAorICAgIHsieGVuLTMuMC1hYXJjaDY0IiwgImFybSxhcm12OC10aW1lciIs ICJhcm0sYXJtdjgiLCAiYXJtLHNic2EtdWFydCIgfSwKIH07CiAKIC8qCkBAIC01OTAsNiArNTkx LDQ4IEBAIHN0YXRpYyBpbnQgbWFrZV9oeXBlcnZpc29yX25vZGUobGlieGxfX2djICpnYywgdm9p ZCAqZmR0LAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG1ha2VfdnBsMDExX3VhcnRf bm9kZShsaWJ4bF9fZ2MgKmdjLCB2b2lkICpmZHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgYXJjaF9pbmZvICphaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKK3sKKyAgICBpbnQgcmVzOworICAgIGdpY19p bnRlcnJ1cHQgaW50cjsKKyAgICB1aW50NjRfdCAgICB2cGwwMTFfaXJxOworCisgICAgcmVzID0g ZmR0X2JlZ2luX25vZGUoZmR0LCAic2JzYS1wbDAxMSIpOworICAgIGlmIChyZXMpIHJldHVybiBy ZXM7CisKKyAgICByZXMgPSBmZHRfcHJvcGVydHlfY29tcGF0KGdjLCBmZHQsIDEsIGFpbmZvLT51 YXJ0X2NvbXBhdCk7CisgICAgaWYgKHJlcykgcmV0dXJuIHJlczsKKworICAgIHJlcyA9IGZkdF9w cm9wZXJ0eV9yZWdzKGdjLCBmZHQsIFJPT1RfQUREUkVTU19DRUxMUywgUk9PVF9TSVpFX0NFTExT LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR1VFU1RfUEwwMTFfQkFTRSwgR1VFU1RfUEwwMTFfU0laRSk7CisgICAgaWYgKHJlcykg CisgICAgICAgIHJldHVybiByZXM7CisKKyAgICAvKgorICAgICAqIEdldCB0aGUgU1BJIFZJUlEg YXNzaWduZWQgdG8gdnBsMDExLgorICAgICAqIFRoZSBTUEkgVklSUSBpcyBhc3NpZ25lZCBieSBY ZW4KKyAgICAgKi8KKyAgICByZXMgPSB4Y19odm1fcGFyYW1fZ2V0KGRvbS0+eGNoLCBkb20tPmd1 ZXN0X2RvbWlkLCBIVk1fUEFSQU1fVlBMMDExX1ZJUlEsIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnBsMDExX2ly cSk7CisgICAgaWYgKHJlcykKKyAgICAgICAgcmV0dXJuIHJlczsKKworICAgIHNldF9pbnRlcnJ1 cHQoaW50ciwgdnBsMDExX2lycSwgMHhmLCBEVF9JUlFfVFlQRV9MRVZFTF9ISUdIKTsKKworICAg IHJlcyA9IGZkdF9wcm9wZXJ0eV9pbnRlcnJ1cHRzKGdjLCBmZHQsICZpbnRyLCAxKTsKKyAgICBp ZiAocmVzKSByZXR1cm4gcmVzOworCisgICAgZmR0X3Byb3BlcnR5X3UzMihmZHQsICJjdXJyZW50 LXNwZWVkIiwgMTE1MjAwKTsKKworICAgIHJlcyA9IGZkdF9lbmRfbm9kZShmZHQpOworICAgIGlm IChyZXMpIHJldHVybiByZXM7CisKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGNvbnN0IHN0 cnVjdCBhcmNoX2luZm8gKmdldF9hcmNoX2luZm8obGlieGxfX2djICpnYywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4Y19kb21faW1h Z2UgKmRvbSkKIHsKQEAgLTg4OCw2ICs5MzEsNyBAQCBuZXh0X3Jlc2l6ZToKIAogICAgICAgICBG RFQoIG1ha2VfdGltZXJfbm9kZShnYywgZmR0LCBhaW5mbywgeGNfY29uZmlnLT5jbG9ja19mcmVx dWVuY3kpICk7CiAgICAgICAgIEZEVCggbWFrZV9oeXBlcnZpc29yX25vZGUoZ2MsIGZkdCwgdmVy cykgKTsKKyAgICAgICAgRkRUKCBtYWtlX3ZwbDAxMV91YXJ0X25vZGUoZ2MsIGZkdCwgYWluZm8s IGRvbSkgKTsKIAogICAgICAgICBpZiAocGZkdCkKICAgICAgICAgICAgIEZEVCggY29weV9wYXJ0 aWFsX2ZkdChnYywgZmR0LCBwZmR0KSApOwpAQCAtOTMzLDkgKzk3NywxMSBAQCBpbnQgbGlieGxf X2FyY2hfZG9tYWluX2luaXRfaHdfZGVzY3JpcHRpb24obGlieGxfX2djICpnYywKICAgICB2YWwg fD0gR1VFU1RfRVZUQ0hOX1BQSTsKICAgICByYyA9IHhjX2h2bV9wYXJhbV9zZXQoZG9tLT54Y2gs IGRvbS0+Z3Vlc3RfZG9taWQsIEhWTV9QQVJBTV9DQUxMQkFDS19JUlEsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZhbCk7CisKICAgICBpZiAocmMpCiAgICAgICAgIHJldHVybiByYzsKIAor CiAgICAgcmMgPSBsaWJ4bF9fcHJlcGFyZV9kdGIoZ2MsIGluZm8sIHN0YXRlLCBkb20pOwogICAg IGlmIChyYykgZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5j IGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKaW5kZXggZDUxOWM4ZC4uNDVmOTljMiAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG9t LmMKQEAgLTMwMiw3ICszMDIsNyBAQCBpbnQgbGlieGxfX2J1aWxkX3ByZShsaWJ4bF9fZ2MgKmdj LCB1aW50MzJfdCBkb21pZCwKICAgICBsaWJ4bF9jdHggKmN0eCA9IGxpYnhsX19nY19vd25lcihn Yyk7CiAgICAgY2hhciAqeHNfZG9taWQsICpjb25fZG9taWQ7CiAgICAgaW50IHJjOwotICAgIHVp bnQ2NF90IHNpemU7CisgICAgdWludDY0X3Qgc2l6ZSwgdmFsOwogCiAgICAgaWYgKHhjX2RvbWFp bl9tYXhfdmNwdXMoY3R4LT54Y2gsIGRvbWlkLCBpbmZvLT5tYXhfdmNwdXMpICE9IDApIHsKICAg ICAgICAgTE9HKEVSUk9SLCAiQ291bGRuJ3Qgc2V0IG1heCB2Y3B1IGNvdW50Iik7CkBAIC00MzIs NiArNDMyLDExIEBAIGludCBsaWJ4bF9fYnVpbGRfcHJlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90 IGRvbWlkLAogICAgIHN0YXRlLT5zdG9yZV9wb3J0ID0geGNfZXZ0Y2huX2FsbG9jX3VuYm91bmQo Y3R4LT54Y2gsIGRvbWlkLCBzdGF0ZS0+c3RvcmVfZG9taWQpOwogICAgIHN0YXRlLT5jb25zb2xl X3BvcnQgPSB4Y19ldnRjaG5fYWxsb2NfdW5ib3VuZChjdHgtPnhjaCwgZG9taWQsIHN0YXRlLT5j b25zb2xlX2RvbWlkKTsKIAorICAgIC8qIGdldCB0aGUgdnBsMDExIGV2ZW50IGNoYW5uZWwgZnJv bSBYZW4gKi8KKyAgICB4Y19odm1fcGFyYW1fZ2V0KGN0eC0+eGNoLCBkb21pZCwgSFZNX1BBUkFN X1ZQTDAxMV9DT05TT0xFX0VWVENITiwKKyAgICAgICAgICAgICZ2YWwpOworICAgIHN0YXRlLT52 cGwwMTFfY29uc29sZV9wb3J0ID0gKGludCl2YWw7CisKICAgICBpZiAoaW5mby0+dHlwZSA9PSBM SUJYTF9ET01BSU5fVFlQRV9IVk0pIHsKICAgICAgICAgaHZtX3NldF9jb25mX3BhcmFtcyhjdHgt PnhjaCwgZG9taWQsIGluZm8pOwogI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194 ODZfNjRfXykKQEAgLTcyNyw2ICs3MzIsNyBAQCBpbnQgbGlieGxfX2J1aWxkX3B2KGxpYnhsX19n YyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogCiAgICAgZG9tLT5mbGFncyA9IGZsYWdzOwogICAgIGRv bS0+Y29uc29sZV9ldnRjaG4gPSBzdGF0ZS0+Y29uc29sZV9wb3J0OworICAgIGRvbS0+dnBsMDEx X2NvbnNvbGVfZXZ0Y2huID0gc3RhdGUtPnZwbDAxMV9jb25zb2xlX3BvcnQ7CiAgICAgZG9tLT5j b25zb2xlX2RvbWlkID0gc3RhdGUtPmNvbnNvbGVfZG9taWQ7CiAgICAgZG9tLT54ZW5zdG9yZV9l dnRjaG4gPSBzdGF0ZS0+c3RvcmVfcG9ydDsKICAgICBkb20tPnhlbnN0b3JlX2RvbWlkID0gc3Rh dGUtPnN0b3JlX2RvbWlkOwpAQCAtNzcxLDYgKzc3Nyw3IEBAIGludCBsaWJ4bF9fYnVpbGRfcHYo bGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgaWYgKHhjX2RvbV9mZWF0dXJlX3Ry YW5zbGF0ZWQoZG9tKSkgewogICAgICAgICBzdGF0ZS0+Y29uc29sZV9tZm4gPSBkb20tPmNvbnNv bGVfcGZuOwogICAgICAgICBzdGF0ZS0+c3RvcmVfbWZuID0gZG9tLT54ZW5zdG9yZV9wZm47Cisg ICAgICAgIHN0YXRlLT52cGwwMTFfY29uc29sZV9tZm4gPSBkb20tPnZwbDAxMV9jb25zb2xlX3Bm bjsKICAgICB9IGVsc2UgewogICAgICAgICBzdGF0ZS0+Y29uc29sZV9tZm4gPSB4Y19kb21fcDJt KGRvbSwgZG9tLT5jb25zb2xlX3Bmbik7CiAgICAgICAgIHN0YXRlLT5zdG9yZV9tZm4gPSB4Y19k b21fcDJtKGRvbSwgZG9tLT54ZW5zdG9yZV9wZm4pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwv bGlieGxfaW50ZXJuYWwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggNWY0 NjU3OC4uNjEwMzAzNiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAor KysgYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCkBAIC0xMTI4LDYgKzExMjgsOCBAQCB0 eXBlZGVmIHN0cnVjdCB7CiAgICAgdWludDMyX3QgbnVtX3ZtZW1yYW5nZXM7CiAKICAgICB4Y19k b21haW5fY29uZmlndXJhdGlvbl90IGNvbmZpZzsKKyAgICB1bnNpZ25lZCBsb25nIHZwbDAxMV9j b25zb2xlX21mbjsKKyAgICB1aW50MzJfdCAgICB2cGwwMTFfY29uc29sZV9wb3J0OwogfSBsaWJ4 bF9fZG9tYWluX2J1aWxkX3N0YXRlOwogCiBfaGlkZGVuIGludCBsaWJ4bF9fYnVpbGRfcHJlKGxp YnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLApkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL01h a2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IDdhZmI4YTMuLmJhOTQ4NTIgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC9hcm0vTWFrZWZp bGUKQEAgLTQ5LDYgKzQ5LDcgQEAgb2JqLXkgKz0gdm1fZXZlbnQubwogb2JqLXkgKz0gdnRpbWVy Lm8KIG9iai15ICs9IHZwc2NpLm8KIG9iai15ICs9IHZ1YXJ0Lm8KK29iai15ICs9IHZwbDAxMS5v CiAKICNvYmotYmluLXkgKz0gLi4uLm8KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2RvbWFp bi5jIGIveGVuL2FyY2gvYXJtL2RvbWFpbi5jCmluZGV4IDdlNDM2OTEuLmEwZDk2YjkgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL2FybS9kb21haW4uYworKysgYi94ZW4vYXJjaC9hcm0vZG9tYWluLmMK QEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KICNpbmNsdWRlIDx4ZW4v Yml0b3BzLmg+CiAjaW5jbHVkZSA8eGVuL2dyYW50X3RhYmxlLmg+CisjaW5jbHVkZSA8eGVuL3Zw bDAxMS5oPgogCiAjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KICNpbmNsdWRlIDxhc20vZXZlbnQu aD4KQEAgLTYyNiw2ICs2MjcsMTIgQEAgaW50IGFyY2hfZG9tYWluX2NyZWF0ZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3MsCiAgICAgaWYgKCAocmMgPSBkb21haW5f dnRpbWVyX2luaXQoZCwgY29uZmlnKSkgIT0gMCApCiAgICAgICAgIGdvdG8gZmFpbDsKIAorICAg IC8qCisgICAgICogY2FsbCB2cGwwMTEgaW5pdCBvbmx5IGZvciBndWVzdCBkb21haW5zCisgICAg ICovCisgICAgaWYgKCBkLT5kb21haW5faWQgJiYgKChyYyA9IGRvbWFpbl92cGwwMTFfaW5pdChk KSkgIT0gMCkgKQorICAgICAgICBnb3RvIGZhaWw7CisKICAgICB1cGRhdGVfZG9tYWluX3dhbGxj bG9ja190aW1lKGQpOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9odm0uYyBi L3hlbi9hcmNoL2FybS9odm0uYwppbmRleCBkOTk5YmRlLi5hNDg0ZWExIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC9hcm0vaHZtLmMKKysrIGIveGVuL2FyY2gvYXJtL2h2bS5jCkBAIC0yMyw4ICsyMywx MSBAQAogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KICNpbmNsdWRlIDx4ZW4vc2NoZWQu aD4KICNpbmNsdWRlIDx4ZW4vbW9uaXRvci5oPgorI2luY2x1ZGUgPHhlbi9ldmVudC5oPgorI2lu Y2x1ZGUgPHhlbi92bWFwLmg+CiAKICNpbmNsdWRlIDx4c20veHNtLmg+CisjaW5jbHVkZSA8eGVu L3ZwbDAxMS5oPgogCiAjaW5jbHVkZSA8cHVibGljL3hlbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9o dm0vcGFyYW1zLmg+CkBAIC02MSwxMCArNjQsMjcgQEAgbG9uZyBkb19odm1fb3AodW5zaWduZWQg bG9uZyBvcCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgICAgIGlmICgg b3AgPT0gSFZNT1Bfc2V0X3BhcmFtICkKICAgICAgICAgewogICAgICAgICAgICAgZC0+YXJjaC5o dm1fZG9tYWluLnBhcmFtc1thLmluZGV4XSA9IGEudmFsdWU7CisKKyAgICAgICAgICAgIGlmICgg YS5pbmRleCA9PSBIVk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfUEZOICkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICB2cGwwMTFfbWFwX2d1ZXN0X3BhZ2UoZCk7CisgICAgICAgICAgICAg ICAgcHJpbnRrKCJIVk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfUEZOIHBhcmFtIHNldCB2YWw9MHgl bHhcbiIsIGEudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIGEu aW5kZXggPT0gSFZNX1BBUkFNX1ZQTDAxMV9NTUlPX0FERFIgKQorICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIHByaW50aygiSFZNX1BBUkFNX1ZQTDAxMV9NTUlPX0FERFIgcGFyYW0gc2V0 IHZhbD0weCVseFxuIiwgYS52YWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg ICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBhLnZhbHVlID0gZC0+YXJjaC5odm1fZG9t YWluLnBhcmFtc1thLmluZGV4XTsKKyAgICAgICAgICAgIGlmICggYS5pbmRleCA9PSBIVk1fUEFS QU1fVlBMMDExX01NSU9fQUREUiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYS52 YWx1ZSA9IGQtPmFyY2guaHZtX2RvbWFpbi5wYXJhbXNbYS5pbmRleF07CisgICAgICAgICAgICAg ICAgcHJpbnRrKCJIVk1fUEFSQU1fUEwwMTFfTU1JT19BRERSIHBhcmFtIGdldCB2YWw9MHglbHhc biIsIGEudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg ICAgICAgIGEudmFsdWUgPSBkLT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW2EuaW5kZXhdOworCiAg ICAgICAgICAgICByYyA9IGNvcHlfdG9fZ3Vlc3QoYXJnLCAmYSwgMSkgPyAtRUZBVUxUIDogMDsK ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vc2V0dXAuYyBiL3hlbi9hcmNo L2FybS9zZXR1cC5jCmluZGV4IDA0OWU0NDkuLmUzNDdjYTAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L2FybS9zZXR1cC5jCisrKyBiL3hlbi9hcmNoL2FybS9zZXR1cC5jCkBAIC0zNyw2ICszNyw3IEBA CiAjaW5jbHVkZSA8eGVuL3ZpcnR1YWxfcmVnaW9uLmg+CiAjaW5jbHVkZSA8eGVuL3ZtYXAuaD4K ICNpbmNsdWRlIDx4ZW4vbGliZmR0L2xpYmZkdC5oPgorI2luY2x1ZGUgPHhlbi92cGwwMTEuaD4K ICNpbmNsdWRlIDx4ZW4vYWNwaS5oPgogI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS5oPgogI2lu Y2x1ZGUgPGFzbS9wYWdlLmg+CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy5jIGIveGVu L2FyY2gvYXJtL3ZnaWMuYwppbmRleCAzNjRkNWYwLi5mNmFlN2UyIDEwMDY0NAotLS0gYS94ZW4v YXJjaC9hcm0vdmdpYy5jCisrKyBiL3hlbi9hcmNoL2FybS92Z2ljLmMKQEAgLTExOCw2ICsxMTgs MTIgQEAgaW50IGRvbWFpbl92Z2ljX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50 IG5yX3NwaXMpCiAKICAgICBkLT5hcmNoLnZnaWMuY3RsciA9IDA7CiAKKyAgICAvKgorICAgICAq IEFsbG9jYXRlIGF0bGVhc3QgMSBmb3IgdnBsMDExIFNQSSB0byBndWVzdCAKKyAgICAgKi8KKyAg ICBpZiAoICFucl9zcGlzICkKKyAgICAgICAgbnJfc3BpcyA9IDE7CisKICAgICAvKiBMaW1pdCB0 aGUgbnVtYmVyIG9mIHZpcnR1YWwgU1BJcyBzdXBwb3J0ZWQgdG8gKDEwMjAgLSAzMikgPSA5ODgg ICovCiAgICAgaWYgKCBucl9zcGlzID4gKDEwMjAgLSBOUl9MT0NBTF9JUlFTKSApCiAgICAgICAg IHJldHVybiAtRUlOVkFMOwpAQCAtNTg2LDYgKzU5Miw3IEBAIGludCB2Z2ljX2FsbG9jYXRlX3Zp cnEoc3RydWN0IGRvbWFpbiAqZCwgYm9vbCBzcGkpCiAgICAgICovCiAgICAgZG8KICAgICB7Cisg ICAgICAgIHByaW50aygic2VhcmNoaW5nIHZpcnEgaW4gPCAlZCwgJWQgPlxuIiwgZmlyc3QsIGVu ZCk7CiAgICAgICAgIHZpcnEgPSBmaW5kX25leHRfemVyb19iaXQoZC0+YXJjaC52Z2ljLmFsbG9j YXRlZF9pcnFzLCBlbmQsIGZpcnN0KTsKICAgICAgICAgaWYgKCB2aXJxID49IGVuZCApCiAgICAg ICAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMgYi94 ZW4vYXJjaC9hcm0vdnBsMDExLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NWM0NTA3ZQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwpAQCAtMCww ICsxLDM5MSBAQAorLyoKKyAqIGFyY2gvYXJtL3ZwbDAxMS5jCisgKgorICogVmlydHVhbCBQTDAx MSBVQVJUIAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAy LCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1v cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW07 IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5j bHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8eGVu L2xpYi5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nl c3MuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDx4ZW4vbW9uaXRvci5oPgor I2luY2x1ZGUgPHhlbi9ldmVudC5oPgorI2luY2x1ZGUgPHhlbi92bWFwLmg+CisKKyNpbmNsdWRl IDx4c20veHNtLmg+CisjaW5jbHVkZSA8eGVuL3ZwbDAxMS5oPgorCisjaW5jbHVkZSA8cHVibGlj L3hlbi5oPgorI2luY2x1ZGUgPHB1YmxpYy9odm0vcGFyYW1zLmg+CisjaW5jbHVkZSA8cHVibGlj L2h2bS9odm1fb3AuaD4KKworI2luY2x1ZGUgPGFzbS9oeXBlcmNhbGwuaD4KKworc3RhdGljIGlu dCB2cGwwMTFfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5mbywgcmVn aXN0ZXJfdCAqciwgdm9pZCAqcHJpdikKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGNoOworCisgICAg c3dpdGNoIChpbmZvLT5ncGEgLSBHVUVTVF9QTDAxMV9CQVNFKQorICAgIHsKKyAgICAgICAgY2Fz ZSBWUEwwMTFfVUFSVENSX09GRlNFVDoKKyAgICAgICAgICAgICpyID0gdi0+ZG9tYWluLT5hcmNo LnZwbDAxMS5jb250cm9sOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVlBMMDEx X1VBUlREUl9PRkZTRVQ6CisgICAgICAgICAgICB2cGwwMTFfcmVhZF9kYXRhKHYtPmRvbWFpbiwg JmNoKTsKKyAgICAgICAgICAgICpyID0gY2g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg Y2FzZSBWUEwwMTFfVUFSVEZSX09GRlNFVDoKKyAgICAgICAgICAgICpyID0gdi0+ZG9tYWluLT5h cmNoLnZwbDAxMS5mbGFnOworICAgICAgICAgICAgaWYgKCAqciAmICgxPDxWUEwwMTFfVUFSVEZS X1RYRkZfQklUKSApCisgICAgICAgICAgICAgICAgcHJpbnRrICgiVFhGRiBpbiBGUlxuIik7Cisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWUEwwMTFfVUFSVElNU0NfT0ZGU0VUOgor ICAgICAgICAgICAgKnIgPSB2LT5kb21haW4tPmFyY2gudnBsMDExLmludHJfbWFzazsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZQTDAxMV9VQVJUSUNSX09GRlNFVDogCisgICAg ICAgICAgICAqciA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWUEwwMTFf VUFSVFJJU19PRkZTRVQ6CisgICAgICAgICAgICAqciA9IHYtPmRvbWFpbi0+YXJjaC52cGwwMTEu cmF3X2ludHJfc3RhdHVzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVlBMMDEx X1VBUlRNSVNfT0ZGU0VUOgorICAgICAgICAgICAgKnIgPSB2LT5kb21haW4tPmFyY2gudnBsMDEx LnJhd19pbnRyX3N0YXR1cyAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmRv bWFpbi0+YXJjaC52cGwwMTEuaW50cl9tYXNrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg IGNhc2UgVlBMMDExX1VBUlRETUFDUl9PRkZTRVQ6CisgICAgICAgICAgICAqciA9IDA7IC8qIHVh cnQgRE1BIGlzIG5vdCBzdXBwb3J0ZWQuIEhlcmUgaXQgYWx3YXlzIHJldHVybnMgMCAqLworICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVlBMMDExX1VBUlRSU1JfT0ZGU0VUOiAKKyAg ICAgICAgICAgICpyID0gMDsgLyogaXQgYWx3YXlzIHJldHVybnMgMCBhcyB0aGVyZSBhcmUgbm8g cGh5c2ljYWwgZXJyb3JzICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK KyAgICAgICAgICAgIHByaW50ayAoInZwbDAxMV9tbWlvX3JlYWQ6IGludmFsaWQgc3dpdGNoIGNh c2UgJWRcbiIsIChpbnQpKGluZm8tPmdwYSAtIEdVRVNUX1BMMDExX0JBU0UpKTsKKyAgICAgICAg ICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IHZwbDAx MV9tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5mbywgcmVnaXN0ZXJf dCByLCB2b2lkICpwcml2KQoreworICAgIHVuc2lnbmVkIGNoYXIgY2ggPSByOworCisgICAgc3dp dGNoIChpbmZvLT5ncGEgLSBHVUVTVF9QTDAxMV9CQVNFKQorICAgIHsKKyAgICAgICAgY2FzZSBW UEwwMTFfVUFSVENSX09GRlNFVDoKKyAgICAgICAgICAgIHYtPmRvbWFpbi0+YXJjaC52cGwwMTEu Y29udHJvbCA9IHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWUEwwMTFfVUFS VERSX09GRlNFVDoKKyAgICAgICAgICAgIHZwbDAxMV93cml0ZV9kYXRhKHYtPmRvbWFpbiwgY2gp OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVlBMMDExX1VBUlRJTVNDX09GRlNF VDoKKyAgICAgICAgICAgIHYtPmRvbWFpbi0+YXJjaC52cGwwMTEuaW50cl9tYXNrID0gcjsKKyAg ICAgICAgICAgIHByaW50ayAoInNldCBpbnRyIG1hc2s9MHgleFxuIiwgdi0+ZG9tYWluLT5hcmNo LnZwbDAxMS5pbnRyX21hc2spOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVlBM MDExX1VBUlRJQ1JfT0ZGU0VUOiAKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBjbGVh ciBhbGwgYml0cyB3aGljaCBhcmUgc2V0IGluIHRoZSBpbnB1dAorICAgICAgICAgICAgICovCisg ICAgICAgICAgICB2LT5kb21haW4tPmFyY2gudnBsMDExLnJhd19pbnRyX3N0YXR1cyAmPSB+cjsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZQTDAxMV9VQVJUUlNSX09GRlNFVDog Ly8gbm90aGluZyB0byBjbGVhcgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVlBM MDExX1VBUlRGUl9PRkZTRVQ6IC8vIHRoZXNlIGFyZSBhbGwgUk8gcmVnaXN0ZXJzCisgICAgICAg IGNhc2UgVlBMMDExX1VBUlRSSVNfT0ZGU0VUOgorICAgICAgICBjYXNlIFZQTDAxMV9VQVJUTUlT X09GRlNFVDoKKyAgICAgICAgY2FzZSBWUEwwMTFfVUFSVERNQUNSX09GRlNFVDoKKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcHJpbnRrICgidnBsMDEx X21taW9fd3JpdGU6IHN3aXRjaCBjYXNlIG5vdCBoYW5kbGVkICVkXG4iLCAoaW50KShpbmZvLT5n cGEgLSBHVUVTVF9QTDAxMV9CQVNFKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAg ICByZXR1cm4gMTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBtbWlvX2hhbmRsZXJfb3BzIHZw bDAxMV9tbWlvX2hhbmRsZXIgPSB7CisgICAgLnJlYWQgPSB2cGwwMTFfbW1pb19yZWFkLAorICAg IC53cml0ZSA9IHZwbDAxMV9tbWlvX3dyaXRlLAorfTsKKworCisKK2ludCB2cGwwMTFfbWFwX2d1 ZXN0X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBpbnQgcmM9MDsKKworICAgIHByaW50 ayAoIkhWTV9QQVJBTV9WUEwwMTFfQ09OU09MRV9QRk4gPSAweCVseFxuIiwgZC0+YXJjaC5odm1f ZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfUEZOXSk7CisKKyAgICAvKgor ICAgICAqIG1hcCB0aGUgZ3Vlc3QgUEZOIHRvIFhlbiBhZGRyZXNzIHNwYWNlCisgICAgICovCisg ICAgcmMgPSBwcmVwYXJlX3JpbmdfZm9yX2hlbHBlcihkLCBkLT5hcmNoLmh2bV9kb21haW4ucGFy YW1zW0hWTV9QQVJBTV9WUEwwMTFfQ09OU09MRV9QRk5dLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLnZwbDAxMS5yaW5nX3BhZ2UsICh2b2lkICoqKSZk LT5hcmNoLnZwbDAxMS52cGwwMTFfY29uc19pbnRmKTsKKyAgICBpZiAoIHJjIDwgMCApCisgICAg eworICAgICAgICBwcmludGsoIkZhaWxlZCB0byBtYXAgdnBsMDExIGd1ZXN0IFBGTlxuIik7Cisg ICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IHZwbDAxMV9kYXRhX2F2YWls KHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgaW50IHJjPTA7CisgICAgdW5zaWduZWQgbG9uZyBm bGFnczsKKworICAgIHN0cnVjdCB2cGwwMTFfY29uc19pbnRmX3MgKmludGYgPSBkLT5hcmNoLnZw bDAxMS52cGwwMTFfY29uc19pbnRmOworCisgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3MpOworCisg ICAgLypgCisgICAgICogY2hlY2sgSU4gcmluZyBidWZmZXIKKyAgICAgKi8KKyAgICBpZiAoICFW UEwwMTFfSU5fUklOR19FTVBUWShpbnRmKSApCisgICAgeworICAgICAgICAvKgorICAgICAgICAg KiBjbGVhciB0aGUgUlggRklGTyBlbXB0eSBmbGFnIGFzIHRoZSByaW5nIGlzIG5vdCBlbXB0eQor ICAgICAgICAgKi8KKyAgICAgICAgZC0+YXJjaC52cGwwMTEuZmxhZyAmPSB+KDE8PFZQTDAxMV9V QVJURlJfUlhGRV9CSVQpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlmIHRoZSBidWZmZXIg aXMgZnVsbCB0aGVuIHNldCB0aGUgUlggRklGTyBGVUxMIGZsYWcKKyAgICAgICAgICovCisgICAg ICAgIGlmICggVlBMMDExX0lOX1JJTkdfRlVMTChpbnRmKSApCisgICAgICAgICAgICBkLT5hcmNo LnZwbDAxMS5mbGFnIHw9ICgxPDxWUEwwMTFfVUFSVEZSX1JYRkZfQklUKTsKKworICAgICAgICAv KgorICAgICAgICAgKiBzZXQgdGhlIFJYIGludGVycnVwdCBzdGF0dXMKKyAgICAgICAgICovCisg ICAgICAgIGQtPmFyY2gudnBsMDExLnJhd19pbnRyX3N0YXR1cyB8PSAoMTw8VlBMMDExX1VBUlRS SVNfUlhSSVNfQklUKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNoZWNrIE9VVCByaW5nIGJ1 ZmZlcgorICAgICAqLworICAgIGlmICggIVZQTDAxMV9PVVRfUklOR19GVUxMKGludGYpICkKKyAg ICB7CisgICAgICAgIC8qCisgICAgICAgICAqIGlmIHRoZSBidWZmZXIgaXMgbm90IGZ1bGwgdGhl biBjbGVhciB0aGUgVFggRklGTyBmdWxsIGZsYWcKKyAgICAgICAgICovCisgICAgICAgIGQtPmFy Y2gudnBsMDExLmZsYWcgJj0gfigxPDxWUEwwMTFfVUFSVEZSX1RYRkZfQklUKTsKKworICAgICAg ICAvKgorICAgICAgICAgKiBzZXQgdGhlIFRYIGludGVycnVwdCBzdGF0dXMKKyAgICAgICAgICov CisgICAgICAgIGQtPmFyY2gudnBsMDExLnJhd19pbnRyX3N0YXR1cyB8PSAoMTw8VlBMMDExX1VB UlRSSVNfVFhSSVNfQklUKTsKKworICAgICAgICBpZiAoIFZQTDAxMV9PVVRfUklOR19FTVBUWShp bnRmKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBjbGVhciB0 aGUgdWFydCBidXN5IGZsYWcgYW5kIHNldCB0aGUgVFggRklGTyBlbXB0eSBmbGFnCisgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgIGQtPmFyY2gudnBsMDExLmZsYWcgJj0gfigxPDxWUEwwMTFf VUFSVEZSX0JVU1lfQklUKTsKKyAgICAgICAgICAgIGQtPmFyY2gudnBsMDExLmZsYWcgfD0gKDE8 PFZQTDAxMV9VQVJURlJfVFhGRV9CSVQpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAg ICAgICAgcHJpbnRrKCJPVVQgcmluZyBidWZmZXIgRlVMTFxuIik7CisKKyAgICBWUEwwMTFfVU5M T0NLKGQsIGZsYWdzKTsKKworI2lmIDAKKyAgICBwcmludGsgKCJmbGFncz0weCV4LCBpbnRyPTB4 JXgsIG1hc2s9MHgleCwgaW5fY29ucz0lZCwgaW5fcHJvZD0lZCwgb3V0X2NvbnM9JWQsIG91dF9w cm9kPSVkXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC52cGww MTEuZmxhZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gudnBsMDEx LnJhd19pbnRyX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJj aC52cGwwMTEuaW50cl9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRm LT5pbl9jb25zLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Zi0+aW5fcHJv ZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGYtPm91dF9jb25zLCAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Zi0+b3V0X3Byb2QpOworI2VuZGlmCisK KyAgICAvKgorICAgICAqIHNlbmQgYW4gaW50ZXJydXB0IGlmIGl0IGlzIG5vdCBtYXNrZWQKKyAg ICAgKi8KKyAgICBpZiAoIGQtPmFyY2gudnBsMDExLnJhd19pbnRyX3N0YXR1cyAmIGQtPmFyY2gu dnBsMDExLmludHJfbWFzayApCisgICAgeworI2lmIDAKKyAgICAgICAgcHJpbnRrKCJTRU5kaW5n IGd1ZXN0IHBsMDExIGludHIgJWQgd2l0aCBtYXNrPTB4JXgsIGZsYWc9MHgleCwgb3V0X2NvbnM9 JWQsIG91dF9wcm9kPSVkLCBpbl9jb25zPSVkLCBpbl9wcm9kPSVkLi4uXG4iLCAKKyAgICAgICAg ICAgICAgICAoaW50KWQtPmFyY2guaHZtX2RvbWFpbi5wYXJhbXNbSFZNX1BBUkFNX1ZQTDAxMV9W SVJRXSwKKyAgICAgICAgICAgICAgICBkLT5hcmNoLnZwbDAxMS5yYXdfaW50cl9zdGF0dXMsCisg ICAgICAgICAgICAgICAgZC0+YXJjaC52cGwwMTEuZmxhZywKKyAgICAgICAgICAgICAgICBpbnRm LT5vdXRfY29ucywKKyAgICAgICAgICAgICAgICBpbnRmLT5vdXRfcHJvZCwKKyAgICAgICAgICAg ICAgICBpbnRmLT5pbl9jb25zLAorICAgICAgICAgICAgICAgIGludGYtPmluX3Byb2QpOworI2Vu ZGlmCisKKyAgICAgICAgdmdpY192Y3B1X2luamVjdF9zcGkoZCwgKGludClkLT5hcmNoLmh2bV9k b21haW4ucGFyYW1zW0hWTV9QQVJBTV9WUEwwMTFfVklSUV0pOworICAgIH0KKworICAgIGlmICgg IVZQTDAxMV9PVVRfUklOR19FTVBUWShpbnRmKSApCisgICAgeworICAgICAgICAvKgorICAgICAg ICAgKiByYWlzZSBhbiBpbnRlcnJ1cHQgdG8gZG9tMAorICAgICAgICAgKi8KKyAgICAgICAgLy9w cmludGsoInNlbmRpbmcgRG9tMCBldmVudCAweCVseFxuIiwgZC0+YXJjaC5odm1fZG9tYWluLnBh cmFtc1tIVk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfRVZUQ0hOXSk7CisgICAgICAgIHJjID0gZXZ0 Y2huX3NlbmQoZCwgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fVlBMMDExX0NP TlNPTEVfRVZUQ0hOXSk7IAorCisgICAgICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgICAgIHBy aW50aygiRmFpbGVkIHRvIHNlbmQgdnBsMDExIGludGVycnVwdCB0byBkb20wXG4iKTsKKyAgICB9 CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCB2cGwwMTFfcmVhZF9kYXRhKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGNoYXIgKmRhdGEpCit7CisgICAgaW50IHJjPTA7CisgICAgdW5zaWdu ZWQgbG9uZyBmbGFnczsKKyAgICBzdHJ1Y3QgdnBsMDExX2NvbnNfaW50Zl9zICppbnRmID0gZC0+ YXJjaC52cGwwMTEudnBsMDExX2NvbnNfaW50ZjsKKworICAgICpkYXRhID0gMDsKKworICAgIFZQ TDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIC8qCisgICAgICogaWYgdGhlcmUgaXMgZGF0YSBp biB0aGUgcmluZyBidWZmZXIgdGhlbiBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgYnVmZmVyCisgICAg ICovCisgICAgaWYgKCAhVlBMMDExX0lOX1JJTkdfRU1QVFkoaW50ZikgKQorICAgIHsKKyAgICAg ICAgKmRhdGEgPSBpbnRmLT5pbltNQVNLX1ZQTDAxMUNPTlNfSURYKGludGYtPmluX2NvbnMrKywg aW50Zi0+aW4pXTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGlmIHRoZSByaW5nIGJ1ZmZlciBp cyBlbXB0eSB0aGVuIHNldCB0aGUgUlggRklGTyBlbXB0eSBmbGFnCisgICAgICovCisgICAgaWYg KCBWUEwwMTFfSU5fUklOR19FTVBUWShpbnRmKSApCisgICAgeworICAgICAgICBkLT5hcmNoLnZw bDAxMS5mbGFnIHw9ICgxPDxWUEwwMTFfVUFSVEZSX1JYRkVfQklUKTsKKyAgICAgICAgZC0+YXJj aC52cGwwMTEucmF3X2ludHJfc3RhdHVzICY9IH4oMTw8VlBMMDExX1VBUlRSSVNfUlhSSVNfQklU KTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNsZWFyIHRoZSBSWCBGSUZPIGZ1bGwgZmxhZwor ICAgICAqLworICAgIGQtPmFyY2gudnBsMDExLmZsYWcgJj0gfigxPDxWUEwwMTFfVUFSVEZSX1JY RkZfQklUKTsKKworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAgcmV0dXJuIHJj OworfQorCitpbnQgdnBsMDExX3dyaXRlX2RhdGEoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg Y2hhciBkYXRhKQoreworICAgIGludCByYz0wOworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cisg ICAgc3RydWN0IHZwbDAxMV9jb25zX2ludGZfcyAqaW50ZiA9IGQtPmFyY2gudnBsMDExLnZwbDAx MV9jb25zX2ludGY7CisKKyAgICAvL3ByaW50ayAoInZwbDAxMV93cml0ZV9kYXRhWyVkXVslZF09 JWMsIGZ1bGw9JWQuLi5cbiIsIGludGYtPm91dF9jb25zLCBpbnRmLT5vdXRfcHJvZCwgZGF0YSwg VlBMMDExX09VVF9SSU5HX0ZVTEwoaW50ZikpOworCisgICAgVlBMMDExX0xPQ0soZCwgZmxhZ3Mp OworCisgICAgLyoKKyAgICAgKiBpZiB0aGVyZSBpcyBzcGFjZSBpbiB0aGUgcmluZyBidWZmZXIg dGhlbiB3cml0ZSB0aGUgZGF0YQorICAgICAqLworICAgIGlmICggIVZQTDAxMV9PVVRfUklOR19G VUxMKGludGYpICkKKyAgICB7CisgICAgICAgIGludGYtPm91dFtNQVNLX1ZQTDAxMUNPTlNfSURY KGludGYtPm91dF9wcm9kKyssIGludGYtPm91dCldID0gZGF0YTsKKyAgICAgICAgc21wX3dtYigp OworICAgIH0KKworICAgIC8qCisgICAgICogaWYgdGhlcmUgaXMgbm8gc3BhY2UgaW4gdGhlIHJp bmcgYnVmZmVyIHRoZW4gc2V0IHRoZSAKKyAgICAgKiBUWCBGSUZPIEZVTEwgZmxhZworICAgICAq LworICAgIGlmICggVlBMMDExX09VVF9SSU5HX0ZVTEwoaW50ZikgKQorICAgIHsKKyAgICAgICAg ZC0+YXJjaC52cGwwMTEuZmxhZyB8PSAoMTw8VlBMMDExX1VBUlRGUl9UWEZGX0JJVCk7CisgICAg fQorCisgICAgLyoKKyAgICAgKiBzZXQgdGhlIHVhcnQgYnVzeSBzdGF0dXMKKyAgICAgKi8KKyAg ICBkLT5hcmNoLnZwbDAxMS5mbGFnIHw9ICgxPDxWUEwwMTFfVUFSVEZSX0JVU1lfQklUKTsKKwor ICAgIC8qCisgICAgICogY2xlYXIgdGhlIFRYIEZJRk8gZW1wdHkgZmxhZworICAgICAqLworICAg IGQtPmFyY2gudnBsMDExLmZsYWcgJj0gfigxPDxWUEwwMTFfVUFSVEZSX1RYRkVfQklUKTsKKwor ICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAgLyoKKyAgICAgKiByYWlzZSBhbiBl dmVudCB0byBkb20wIG9ubHkgaWYgaXQgaXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgYnVm ZmVyCisgICAgICovCisgICAgaWYgKCBWUEwwMTFfUklOR19ERVBUSChpbnRmLCBvdXQpID09IDEg KQorICAgIHsKKyAgICAgICAgLy9wcmludGsoInNlbmRpbmcgZG9tMCBldmVudCAweCVseFxuIiwg ZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfRVZUQ0hO XSk7CisKKyAgICAgICAgcmMgPSBldnRjaG5fc2VuZChkLCBkLT5hcmNoLmh2bV9kb21haW4ucGFy YW1zW0hWTV9QQVJBTV9WUEwwMTFfQ09OU09MRV9FVlRDSE5dKTsgCisKKyAgICAgICAgaWYgKCBy YyA8IDAgKQorICAgICAgICAgICAgcHJpbnRrKCJGYWlsZWQgdG8gc2VuZCB2cGwwMTEgaW50ZXJy dXB0IHRvIGRvbTBcbiIpOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIHZv aWQgdnBsMDExX25vdGlmaWNhdGlvbihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHBvcnQp Cit7CisgICAgdnBsMDExX2RhdGFfYXZhaWwodi0+ZG9tYWluKTsKK30KKworaW50IGRvbWFpbl92 cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIGludCByYz0wOworCisgICAgLyoK KyAgICAgKiByZWdpc3RlciB4ZW4gZXZlbnQgY2hhbm5lbAorICAgICAqLworICAgIHJjID0gYWxs b2NfdW5ib3VuZF94ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBjdXJyZW50LT5kb21haW4tPmRvbWFp bl9pZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZwbDAxMV9ub3RpZmljYXRpb24pOworICAgIGlmIChyYyA8IDApCisgICAgeworICAg ICAgICBwcmludGsgKCJGYWlsZWQgdG8gYWxsb2NhdGUgdnBsMDExIGV2ZW50IGNoYW5uZWxcbiIp OworICAgICAgICByZXR1cm4gcmM7CisgICAgfQorICAgIGQtPmFyY2guaHZtX2RvbWFpbi5wYXJh bXNbSFZNX1BBUkFNX1ZQTDAxMV9DT05TT0xFX0VWVENITl0gPSByYzsKKyAgICAKKyAgICAvKgor ICAgICAqIGFsbG9jYXRlIGFuIFNQSSBWSVJRIGZvciB0aGUgZ3Vlc3QKKyAgICAgKi8KKyAgICBk LT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9WUEwwMTFfVklSUV0gPSB2Z2ljX2Fs bG9jYXRlX3NwaShkKTsKKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgbW1pbyBoYW5kbGVyIAor ICAgICAqLworICAgIHJlZ2lzdGVyX21taW9faGFuZGxlciAoZCwgJnZwbDAxMV9tbWlvX2hhbmRs ZXIsIEdVRVNUX1BMMDExX0JBU0UsIEdVRVNUX1BMMDExX1NJWkUsIE5VTEwpOworCisgICAgLyog CisgICAgICogaW5pdGlhbGl6ZSB0aGUgbG9jaworICAgICAqLworICAgIHNwaW5fbG9ja19pbml0 KCZkLT5hcmNoLnZwbDAxMS5sb2NrKTsKKworICAgIC8qIAorICAgICAqIGNsZWFyIHRoZSBmbGFn LCBjb250cm9sIGFuZCBpbnRlcnJ1cHRzIHJlZ2lzdGVycworICAgICAqLworICAgIGQtPmFyY2gu dnBsMDExLmNvbnRyb2wgPSAwOworICAgIGQtPmFyY2gudnBsMDExLmZsYWcgPSAwOworICAgIGQt PmFyY2gudnBsMDExLmludHJfbWFzayA9IDA7CisgICAgZC0+YXJjaC52cGwwMTEuaW50cl9jbGVh ciA9IDA7CisgICAgZC0+YXJjaC52cGwwMTEucmF3X2ludHJfc3RhdHVzID0gMDsKKyAgICBkLT5h cmNoLnZwbDAxMS5tYXNrZWRfaW50cl9zdGF0dXMgPSAwOworCisgICAgcmV0dXJuIDA7Cit9CmRp ZmYgLS1naXQgYS94ZW4vY29tbW9uL2V2ZW50X2NoYW5uZWwuYyBiL3hlbi9jb21tb24vZXZlbnRf Y2hhbm5lbC5jCmluZGV4IDYzOGRjNWUuLjA3YTA5YzIgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24v ZXZlbnRfY2hhbm5lbC5jCisrKyBiL3hlbi9jb21tb24vZXZlbnRfY2hhbm5lbC5jCkBAIC0yNyw2 ICsyNyw3IEBACiAjaW5jbHVkZSA8eGVuL2tleWhhbmRsZXIuaD4KICNpbmNsdWRlIDx4ZW4vZXZl bnRfZmlmby5oPgogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CisjaW5jbHVkZSA8eGVuL2RvbWFp bl9wYWdlLmg+CiAKICNpbmNsdWRlIDxwdWJsaWMveGVuLmg+CiAjaW5jbHVkZSA8cHVibGljL2V2 ZW50X2NoYW5uZWwuaD4KQEAgLTY2Myw5ICs2NjQsMTEgQEAgaW50IGV2dGNobl9zZW5kKHN0cnVj dCBkb21haW4gKmxkLCB1bnNpZ25lZCBpbnQgbHBvcnQpCiAKICAgICBzcGluX2xvY2soJmxjaG4t PmxvY2spOwogCi0gICAgLyogR3Vlc3QgY2Fubm90IHNlbmQgdmlhIGEgWGVuLWF0dGFjaGVkIGV2 ZW50IGNoYW5uZWwuICovCi0gICAgaWYgKCB1bmxpa2VseShjb25zdW1lcl9pc194ZW4obGNobikp ICkKKyAgICAvKiBHdWVzdCBjYW5ub3Qgc2VuZCB2aWEgYSBYZW4tYXR0YWNoZWQgZXZlbnQgY2hh bm5lbCB1bmxlc3MgaXQgaXMgdnBsMDExIGNoYW5uZWwgKi8KKyAgICBpZiAoIHVubGlrZWx5KGNv bnN1bWVyX2lzX3hlbihsY2huKSAmJiAKKyAgICAgICAgICAgICAgICAobHBvcnQgIT0gbGQtPmFy Y2guaHZtX2RvbWFpbi5wYXJhbXNbSFZNX1BBUkFNX1ZQTDAxMV9DT05TT0xFX0VWVENITl0pKSAp CiAgICAgeworICAgICAgICBwcmludGsoImV2dGNobl9zZW5kIGZhaWxlZCB0byBzZW5kIHZpYSB4 ZW4gZXZlbnQgY2hhbm5lbFxuIik7CiAgICAgICAgIHJldCA9IC1FSU5WQUw7CiAgICAgICAgIGdv dG8gb3V0OwogICAgIH0KQEAgLTY4MSw3ICs2ODQsOSBAQCBpbnQgZXZ0Y2huX3NlbmQoc3RydWN0 IGRvbWFpbiAqbGQsIHVuc2lnbmVkIGludCBscG9ydCkKICAgICAgICAgcnBvcnQgPSBsY2huLT51 LmludGVyZG9tYWluLnJlbW90ZV9wb3J0OwogICAgICAgICByY2huICA9IGV2dGNobl9mcm9tX3Bv cnQocmQsIHJwb3J0KTsKICAgICAgICAgaWYgKCBjb25zdW1lcl9pc194ZW4ocmNobikgKQorICAg ICAgICB7CiAgICAgICAgICAgICB4ZW5fbm90aWZpY2F0aW9uX2ZuKHJjaG4pKHJkLT52Y3B1W3Jj aG4tPm5vdGlmeV92Y3B1X2lkXSwgcnBvcnQpOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAg ICAgICAgICAgIGV2dGNobl9wb3J0X3NldF9wZW5kaW5nKHJkLCByY2huLT5ub3RpZnlfdmNwdV9p ZCwgcmNobik7CiAgICAgICAgIGJyZWFrOwpAQCAtMTIwMiw2ICsxMjA3LDcgQEAgaW50IGFsbG9j X3VuYm91bmRfeGVuX2V2ZW50X2NoYW5uZWwoCiAKICAgICBjaG4tPnN0YXRlID0gRUNTX1VOQk9V TkQ7CiAgICAgY2huLT54ZW5fY29uc3VtZXIgPSBnZXRfeGVuX2NvbnN1bWVyKG5vdGlmaWNhdGlv bl9mbik7CisgICAgcHJpbnRrICgiYWxsb2NhdGVkIHhlbl9jb25zdW1lciA9ICVkIGZvciBwb3J0 ID0gJWQsIHJlbW90ZSBkb209JWRcbiIsIGNobi0+eGVuX2NvbnN1bWVyLCBwb3J0LCByZW1vdGVf ZG9taWQpOwogICAgIGNobi0+bm90aWZ5X3ZjcHVfaWQgPSBsdmNwdTsKICAgICBjaG4tPnUudW5i b3VuZC5yZW1vdGVfZG9taWQgPSByZW1vdGVfZG9taWQ7CiAKQEAgLTEyMTcsNiArMTIyMyw3IEBA IHZvaWQgZnJlZV94ZW5fZXZlbnRfY2hhbm5lbChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgcG9ydCkK IHsKICAgICBCVUdfT04oIXBvcnRfaXNfdmFsaWQoZCwgcG9ydCkpOwogCisgICAgcHJpbnRrICgi ZXZlbnQgY2hhbm5lbCBmcmVlZCBmb3IgZG9tPSVkLCBwb3J0PSVkXG4iLCBkLT5kb21haW5faWQs IHBvcnQpOyAKICAgICBldnRjaG5fY2xvc2UoZCwgcG9ydCwgMCk7CiB9CiAKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFp bi5oCmluZGV4IDJkNmZiYjEuLmY0OTYwNmUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaApAQCAtMTEsNiAr MTEsNyBAQAogI2luY2x1ZGUgPGFzbS9naWMuaD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL3BhcmFt cy5oPgogI2luY2x1ZGUgPHhlbi9zZXJpYWwuaD4KKyNpbmNsdWRlIDx4ZW4vdnBsMDExLmg+CiAK IHN0cnVjdCBodm1fZG9tYWluCiB7CkBAIC00MCw2ICs0MSw3IEBAIHN0cnVjdCB2dGltZXIgewog ICAgICAgICB1aW50NjRfdCBjdmFsOwogfTsKIAorCiBzdHJ1Y3QgYXJjaF9kb21haW4KIHsKICNp ZmRlZiBDT05GSUdfQVJNXzY0CkBAIC0xMzEsNiArMTMzLDE4IEBAIHN0cnVjdCBhcmNoX2RvbWFp bgogICAgIHN0cnVjdCB7CiAgICAgICAgIHVpbnQ4X3QgcHJpdmlsZWdlZF9jYWxsX2VuYWJsZWQg OiAxOwogICAgIH0gbW9uaXRvcjsKKworICAgIHN0cnVjdCB2cGwwMTEgeworICAgICAgICBzdHJ1 Y3QgdnBsMDExX2NvbnNfaW50Zl9zICp2cGwwMTFfY29uc19pbnRmOworICAgICAgICBzdHJ1Y3Qg cGFnZV9pbmZvICpyaW5nX3BhZ2U7CisgICAgICAgIHVpbnQzMl90ICAgIGZsYWc7ICAgICAgICAg ICAgICAgLyogZmxhZyByZWdpc3RlciAqLworICAgICAgICB1aW50MzJfdCAgICBjb250cm9sOyAg ICAgICAgICAgIC8qIGNvbnRyb2wgcmVnaXN0ZXIgKi8KKyAgICAgICAgdWludDMyX3QgICAgaW50 cl9tYXNrOyAgICAgICAgICAvKiBpbnRlcnJ1cHQgbWFzayByZWdpc3RlciovCisgICAgICAgIHVp bnQzMl90ICAgIGludHJfY2xlYXI7ICAgICAgICAgLyogaW50ZXJydXB0IGNsZWFyIHJlZ2lzdGVy ICovCisgICAgICAgIHVpbnQzMl90ICAgIHJhd19pbnRyX3N0YXR1czsgICAgLyogcmF3IGludGVy cnVwdCBzdGF0dXMgcmVnaXN0ZXIgKi8KKyAgICAgICAgdWludDMyX3QgICAgbWFza2VkX2ludHJf c3RhdHVzOyAvKiBtYXNrZWQgaW50ZXJydXB0IHJlZ2lzdGVyICovCisgICAgICAgIHNwaW5sb2Nr X3QgIGxvY2s7CisgICAgfSB2cGwwMTE7CiB9ICBfX2NhY2hlbGluZV9hbGlnbmVkOwogCiBzdHJ1 Y3QgYXJjaF92Y3B1CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaCBi L3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oCmluZGV4IGJkOTc0ZmIuLmQxZDAzMWIgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oCisrKyBiL3hlbi9pbmNsdWRl L3B1YmxpYy9hcmNoLWFybS5oCkBAIC00MDYsNiArNDA2LDEwIEBAIHR5cGVkZWYgdWludDY0X3Qg eGVuX2NhbGxiYWNrX3Q7CiAjZGVmaW5lIEdVRVNUX0dJQ1YzX0dJQ1IwX0JBU0UgICAgIHhlbl9t a191bGxvbmcoMHgwMzAyMDAwMCkgLyogdkNQVTAuLjEyNyAqLwogI2RlZmluZSBHVUVTVF9HSUNW M19HSUNSMF9TSVpFICAgICB4ZW5fbWtfdWxsb25nKDB4MDEwMDAwMDApCiAKKy8qIFBMMDExIG1h cHBpbmdzICovCisjZGVmaW5lIEdVRVNUX1BMMDExX0JBU0UgIHhlbl9ta191bGxvbmcoMHgwNDAy MDAwMCkKKyNkZWZpbmUgR1VFU1RfUEwwMTFfU0laRSAgeGVuX21rX3VsbG9uZygweDAwMDAxMDAw KQorCiAvKiBBQ1BJIHRhYmxlcyBwaHlzaWNhbCBhZGRyZXNzICovCiAjZGVmaW5lIEdVRVNUX0FD UElfQkFTRSAweDIwMDAwMDAwVUxMCiAjZGVmaW5lIEdVRVNUX0FDUElfU0laRSAweDAyMDAwMDAw VUxMCkBAIC00MjAsNiArNDI0LDcgQEAgdHlwZWRlZiB1aW50NjRfdCB4ZW5fY2FsbGJhY2tfdDsK ICNkZWZpbmUgR1VFU1RfTUFHSUNfQkFTRSAgeGVuX21rX3VsbG9uZygweDM5MDAwMDAwKQogI2Rl ZmluZSBHVUVTVF9NQUdJQ19TSVpFICB4ZW5fbWtfdWxsb25nKDB4MDEwMDAwMDApCiAKKwogI2Rl ZmluZSBHVUVTVF9SQU1fQkFOS1MgICAyCiAKICNkZWZpbmUgR1VFU1RfUkFNMF9CQVNFICAgeGVu X21rX3VsbG9uZygweDQwMDAwMDAwKSAvKiAzR0Igb2YgbG93IFJBTSBAIDFHQiAqLwpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaCBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9odm0vcGFyYW1zLmgKaW5kZXggM2Y1NGE0OS4uYTlhYTFkOSAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3Bh cmFtcy5oCkBAIC0yMDIsMTEgKzIwMiwxMiBAQAogICogWW91IGNhbiBmaW5kIHRoZXNlIGFkZHJl c3MgZGVmaW5pdGlvbnMgaW4gPGh2bS9pb3JlcS5oPgogICovCiAjZGVmaW5lIEhWTV9QQVJBTV9B Q1BJX0lPUE9SVFNfTE9DQVRJT04gMTkKKyNkZWZpbmUgSFZNX1BBUkFNX1ZQTDAxMV9DT05TT0xF X1BGTiAxOQorI2RlZmluZSBIVk1fUEFSQU1fVlBMMDExX0NPTlNPTEVfRVZUQ0hOIDIwCisjZGVm aW5lIEhWTV9QQVJBTV9WUEwwMTFfVklSUSAgICAgICAgICAgMjEKKyNkZWZpbmUgSFZNX1BBUkFN X1ZQTDAxMV9NTUlPX0FERFIgMjIKIAogLyogRGVwcmVjYXRlZCAqLwotI2RlZmluZSBIVk1fUEFS QU1fTUVNT1JZX0VWRU5UX0NSMCAgICAgICAgICAyMAotI2RlZmluZSBIVk1fUEFSQU1fTUVNT1JZ X0VWRU5UX0NSMyAgICAgICAgICAyMQotI2RlZmluZSBIVk1fUEFSQU1fTUVNT1JZX0VWRU5UX0NS NCAgICAgICAgICAyMgogI2RlZmluZSBIVk1fUEFSQU1fTUVNT1JZX0VWRU5UX0lOVDMgICAgICAg ICAyMwogI2RlZmluZSBIVk1fUEFSQU1fTUVNT1JZX0VWRU5UX1NJTkdMRV9TVEVQICAyNQogI2Rl ZmluZSBIVk1fUEFSQU1fTUVNT1JZX0VWRU5UX01TUiAgICAgICAgICAzMApAQCAtMjUzLDYgKzI1 NCw3IEBACiAgKi8KICNkZWZpbmUgSFZNX1BBUkFNX1g4N19GSVBfV0lEVEggMzYKIAotI2RlZmlu ZSBIVk1fTlJfUEFSQU1TIDM3CisKKyNkZWZpbmUgSFZNX05SX1BBUkFNUyAzOAogCiAjZW5kaWYg LyogX19YRU5fUFVCTElDX0hWTV9QQVJBTVNfSF9fICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS94ZW4vdnBsMDExLmggYi94ZW4vaW5jbHVkZS94ZW4vdnBsMDExLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZGQwOWQ0MQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNs dWRlL3hlbi92cGwwMTEuaApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIGluY2x1ZGUveGVuL3Zw bDAxMS5oCisgKgorICogVmlydHVhbCBQTDAxMSBVQVJUIAorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh bG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIF9WUEwwMTFfSF8KKworI2RlZmluZSBfVlBM MDExX0hfCisKKy8qCisgKiByZWdpc3RlciBvZmZzZXRzCisgKi8KKyNkZWZpbmUgVlBMMDExX1VB UlREUl9PRkZTRVQgICAgMHgwIC8vIGRhdGEgcmVnaXN0ZXIgKFJXKQorI2RlZmluZSBWUEwwMTFf VUFSVFJTUl9PRkZTRVQgICAweDQgLy8gcmVjZWl2ZSBzdGF0dXMgYW5kIGVycm9yIGNsZWFyIHJl Z2lzdGVyIChSVykKKyNkZWZpbmUgVlBMMDExX1VBUlRGUl9PRkZTRVQgICAgMHgxOCAvLyBmbGFn IHJlZ2lzdGVyIChSTykKKyNkZWZpbmUgVlBMMDExX1VBUlRSSVNfT0ZGU0VUICAgMHgzYyAvLyBy YXcgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciAoUk8pCisjZGVmaW5lIFZQTDAxMV9VQVJUTUlT X09GRlNFVCAgIDB4NDAgLy8gbWFza2VkIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIgKFJPKQor I2RlZmluZSBWUEwwMTFfVUFSVElNU0NfT0ZGU0VUICAweDM4IC8vIGludGVycnVwdCBtYXNrIHNl dC9jbGVhciByZWdpc3RlciAoUlcpCisjZGVmaW5lIFZQTDAxMV9VQVJUSUNSX09GRlNFVCAgIDB4 NDQgLy8gaW50ZXJydXB0IGNsZWFyIHJlZ2lzdGVyIChXTykKKyNkZWZpbmUgVlBMMDExX1VBUlRD Ul9PRkZTRVQgICAgMHgzMCAvLyB1YXJ0IGNvbnRyb2wgcmVnaXN0ZXIKKyNkZWZpbmUgVlBMMDEx X1VBUlRETUFDUl9PRkZTRVQgMHg0OCAvLyB1YXJ0IGRtYSBjb250cm9sIHJlZ2lzdGVyCisKKy8q CisgKiBjb250cm9sIHJlZ2lzdGVyIGJpdHMgLSBSVworICovCisjZGVmaW5lIFZQTDAxMV9VQVJU Q1JfVUFSVEVOX0JJVCAwCisjZGVmaW5lIFZQTDAxMV9VQVJUQ1JfVFhFX0JJVCAgICA4CisjZGVm aW5lIFZQTDAxMV9VQVJUQ1JfUlhFX0JJVCAgICA5CisKKy8qCisgKiBGbGFnIHJlZ2lzdGVyIGJp dHMgLSBSTworICovCisjZGVmaW5lIFZQTDAxMV9VQVJURlJfQ1RTX0JJVCAgIDAgICAvLyBjbGVh ciB0byBzZW5kCisjZGVmaW5lIFZQTDAxMV9VQVJURlJfRFNSX0JJVCAgIDEgICAvLyBkYXRhIHNl dCByZWFkeQorI2RlZmluZSBWUEwwMTFfVUFSVEZSX0RDRF9CSVQgICAyICAgLy8gZGF0YSBjYXJy aWVyIGRldGVjdAorI2RlZmluZSBWUEwwMTFfVUFSVEZSX0JVU1lfQklUICAzICAgLy8gdWFydCBi dXN5CisjZGVmaW5lIFZQTDAxMV9VQVJURlJfUlhGRV9CSVQgIDQgICAvLyByZWNlaXZlIGZpZm8g ZW1wdHkKKyNkZWZpbmUgVlBMMDExX1VBUlRGUl9UWEZGX0JJVCAgNSAgIC8vIHRyYW5zbWl0IGZp Zm8gZnVsbAorI2RlZmluZSBWUEwwMTFfVUFSVEZSX1JYRkZfQklUICA2ICAgLy8gcmVjZWl2ZSBm aWZvIGZ1bGwKKyNkZWZpbmUgVlBMMDExX1VBUlRGUl9UWEZFX0JJVCAgNyAgIC8vIHRyYW5zbWl0 IGZpZm8gZW1wdHkKKyNkZWZpbmUgVlBMMDExX1VBUlRGUl9SSV9CSVQgICAgOCAgIC8vIHJpbmcg aW5kaWNhdG9yCisKKy8qCisgKiBVQVJUIHJhdyBpbnRlcnJ1cHQgc3RhdHVzIGJpdHMgLSBSTwor ICovCisjZGVmaW5lIFZQTDAxMV9VQVJUUklTX1JJUk1JU19CSVQgIDAKKyNkZWZpbmUgVlBMMDEx X1VBUlRSSVNfQ1RTUk1JU19CSVQgMQorI2RlZmluZSBWUEwwMTFfVUFSVFJJU19EQ0RSTUlTX0JJ VCAyCisjZGVmaW5lIFZQTDAxMV9VQVJUUklTX0RTUlJNSVNfQklUIDMKKyNkZWZpbmUgVlBMMDEx X1VBUlRSSVNfUlhSSVNfQklUICAgNAorI2RlZmluZSBWUEwwMTFfVUFSVFJJU19UWFJJU19CSVQg ICA1CisjZGVmaW5lIFZQTDAxMV9VQVJUUklTX1JUUklTX0JJVCAgIDYKKyNkZWZpbmUgVlBMMDEx X1VBUlRSSVNfRkVSSVNfQklUICAgNworI2RlZmluZSBWUEwwMTFfVUFSVFJJU19QRVJJU19CSVQg ICA4CisjZGVmaW5lIFZQTDAxMV9VQVJUUklTX0JFUklTX0JJVCAgIDkKKyNkZWZpbmUgVlBMMDEx X1VBUlRSSVNfT0VSSVNfQklUICAgMTAKKworLyoKKyAqIFVBUlQgbWFza2VkIGludGVycnVwdCBz dGF0dXMgYml0cyAtIFJPCisgKi8KKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfUklNTUlTX0JJVCAg MAorI2RlZmluZSBWUEwwMTFfVUFSVE1JU19DVFNNTUlTX0JJVCAxCisjZGVmaW5lIFZQTDAxMV9V QVJUTUlTX0RDRE1NSVNfQklUIDIKKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfRFNSTU1JU19CSVQg MworI2RlZmluZSBWUEwwMTFfVUFSVE1JU19SWE1JU19CSVQgICA0CisjZGVmaW5lIFZQTDAxMV9V QVJUTUlTX1RYTUlTX0JJVCAgIDUKKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfUlRNSVNfQklUICAg NgorI2RlZmluZSBWUEwwMTFfVUFSVE1JU19GRU1JU19CSVQgICA3CisjZGVmaW5lIFZQTDAxMV9V QVJUTUlTX1BFTUlTX0JJVCAgIDgKKyNkZWZpbmUgVlBMMDExX1VBUlRNSVNfQkVNSVNfQklUICAg OQorI2RlZmluZSBWUEwwMTFfVUFSVE1JU19PRU1JU19CSVQgICAxMAorCisvKgorICogVUFSVCAg aW50ZXJydXB0IGNsZWFyIGJpdHMgLSBXTworICovCisjZGVmaW5lIFZQTDAxMV9VQVJUSUNSX1JJ TUlDX0JJVCAgIDAKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfQ1RTTUlDX0JJVCAgIDEKKyNkZWZp bmUgVlBMMDExX1VBUlRJQ1JfRENETUlDX0JJVCAgIDIKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1Jf RFNSTUlDX0JJVCAgIDMKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfUlhJQ19CSVQgICA0CisjZGVm aW5lIFZQTDAxMV9VQVJUSUNSX1RYSUNfQklUICAgNQorI2RlZmluZSBWUEwwMTFfVUFSVElDUl9S VElDX0JJVCAgIDYKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfRkVJQ19CSVQgICA3CisjZGVmaW5l IFZQTDAxMV9VQVJUSUNSX1BFSUNfQklUICAgOAorI2RlZmluZSBWUEwwMTFfVUFSVElDUl9CRUlD X0JJVCAgIDkKKyNkZWZpbmUgVlBMMDExX1VBUlRJQ1JfT0VJQ19CSVQgICAxMAorCisvKgorICog VUFSVCBpbnRlcnJ1cHQgbWFzayBzZXQvY2xlYXIgYml0cyAtIFJXCisgKi8KKyNkZWZpbmUgVlBM MDExX1VBUlRJTVNDX1JJTUlNX0JJVCAgIDAKKyNkZWZpbmUgVlBMMDExX1VBUlRJTVNDX0NUU01J TV9CSVQgICAxCisjZGVmaW5lIFZQTDAxMV9VQVJUSU1TQ19EQ0RNSU1fQklUICAgMgorI2RlZmlu ZSBWUEwwMTFfVUFSVElNU0NfRFNSTUlNX0JJVCAgIDMKKyNkZWZpbmUgVlBMMDExX1VBUlRJTVND X1JYSU1fQklUICAgNAorI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfVFhJTV9CSVQgICA1CisjZGVm aW5lIFZQTDAxMV9VQVJUSU1TQ19SVElNX0JJVCAgIDYKKyNkZWZpbmUgVlBMMDExX1VBUlRJTVND X0ZFSU1fQklUICAgNworI2RlZmluZSBWUEwwMTFfVUFSVElNU0NfUEVJTV9CSVQgICA4CisjZGVm aW5lIFZQTDAxMV9VQVJUSU1TQ19CRUlNX0JJVCAgIDkKKyNkZWZpbmUgVlBMMDExX1VBUlRJTVND X09FSU1fQklUICAgMTAKKworCisvKgorICogaGVscGVyIG1hY3JvcworICovCisjZGVmaW5lIFZQ TDAxMV9SSU5HX0RFUFRIKGludGYsZGlyKSAoKChpbnRmKS0+ZGlyICMjIF9wcm9kIC0gKGludGYp LT5kaXIgIyMgX2NvbnMpKQorI2RlZmluZSBWUEwwMTFfUklOR19NQVhfREVQVEgoaW50ZixkaXIp IChzaXplb2YoKGludGYpLT5kaXIpLTEpCisKKyNkZWZpbmUgVlBMMDExX0lOX1JJTkdfRU1QVFko aW50ZikgKFZQTDAxMV9SSU5HX0RFUFRIKGludGYsIGluKSA9PSAwKQorCisjZGVmaW5lIFZQTDAx MV9PVVRfUklOR19FTVBUWShpbnRmKSAoVlBMMDExX1JJTkdfREVQVEgoaW50Ziwgb3V0KSA9PSAw KQorCisjZGVmaW5lIFZQTDAxMV9JTl9SSU5HX0ZVTEwoaW50ZikgKFZQTDAxMV9SSU5HX0RFUFRI KGludGYsIGluKSA9PSBWUEwwMTFfUklOR19NQVhfREVQVEgoaW50ZiwgaW4pKQorCisjZGVmaW5l IFZQTDAxMV9PVVRfUklOR19GVUxMKGludGYpIChWUEwwMTFfUklOR19ERVBUSChpbnRmLCBvdXQp ID09IFZQTDAxMV9SSU5HX01BWF9ERVBUSChpbnRmLG91dCkpCisKKyNkZWZpbmUgVlBMMDExX0xP Q0soZCxmbGFncykgc3Bpbl9sb2NrX2lycXNhdmUoJihkKS0+YXJjaC52cGwwMTEubG9jaywgZmxh Z3MpCisjZGVmaW5lIFZQTDAxMV9VTkxPQ0soZCxmbGFncykgc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmKGQpLT5hcmNoLnZwbDAxMS5sb2NrLCBmbGFncykKKworaW50IGRvbWFpbl92cGwwMTFfaW5p dChzdHJ1Y3QgZG9tYWluICpkKTsKK2ludCB2cGwwMTFfbWFwX2d1ZXN0X3BhZ2Uoc3RydWN0IGRv bWFpbiAqZCk7CitpbnQgdnBsMDExX3JlYWRfZGF0YShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBjaGFyICpkYXRhKTsKK2ludCB2cGwwMTFfd3JpdGVfZGF0YShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBjaGFyIGRhdGEpOworCisjZGVmaW5lIE1BU0tfVlBMMDExQ09OU19JRFgoaWR4LCBy aW5nKSAoKGlkeCkgJiAoc2l6ZW9mKHJpbmcpLTEpKSAKK3N0cnVjdCB2cGwwMTFfY29uc19pbnRm X3MgeworICAgIGNoYXIgaW5bMTAyNF07CisgICAgY2hhciBvdXRbMjA0OF07CisgICAgdWludDMy X3QgaW5fY29ucywgaW5fcHJvZDsKKyAgICB1aW50MzJfdCBvdXRfY29ucywgb3V0X3Byb2Q7Cit9 OworI2VuZGlmCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=