From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marius Vlad Subject: [PATCH i-g-t 3/4 v4] tests/drv_module_reload: Convert sh script to C version. Date: Fri, 28 Oct 2016 12:31:28 +0300 Message-ID: <20161028093129.13275-4-marius.c.vlad@intel.com> References: <20161028093129.13275-1-marius.c.vlad@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 565106EAD2 for ; Fri, 28 Oct 2016 09:25:22 +0000 (UTC) In-Reply-To: <20161028093129.13275-1-marius.c.vlad@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org djQ6Ci0gYWRqdXN0IHRlc3QgdG8gbWFrZSB1c2Ugb2YgbGliL2lndF9rbW9kCi0gcmVwbGFjZWQg U1dfRklOSVNIIHdpdGggU0VUX0NBQ0hFSU5HIChDaHJpcyBXaWxzb24pCgp2MzoKLSBmaXggcGFz c2luZyBib29sZWFuIHZhbHVlIGFzIGZsYWdzIHRvIGlndF9rbW9kX3VubG9hZCgpLgoKdjI6Ci0g ZW1iZWRkZWQgZ2VtX2FsaXZlIGFuZCBnZW1fZXhlY19zdG9yZSBpbnRvIHRlc3QgKENocmlzIFdp bHNvbikKLSBpbnQgbWFpbigpIHRvIGlndF9tYWluIChDaHJpcyBXaWxzb24pCi0gbW92ZWQgdGVz dHMvZ2VtX2FsaXZlIC0+IHRvb2xzL2dlbV9pbmZvIChDaHJpcyBXaWxzb24pCi0gYWRkZWQgdG8g aW50ZWwtY2kvZmFzdC1mZWVkYmFjay50ZXN0bGlzdCAoUGV0cmkgTGF0dmFsYSkKLSBhZGRlZCBo ZGFfZHluYW1pY19kZWJ1ZygpIChQZXRyaSBMYXR2YWxhKQotIHJlbmFtZWQgZnJvbSB0ZXN0cy9k cnZfbW9kdWxlX3JlbG9hZF9iYXNpYyB0byB0ZXN0cy9kcnZfbW9kdWxlX3JlbG9hZAooYWxsIHN1 YnRlc3RzIGFyZSBiYXNpYyBhbmQgaGF2ZSBiZWVuIGFkZGVkIHRvIGZhc3QtZmVlZGJhY2sudGVz dGxpc3QpCgpTaWduZWQtb2ZmLWJ5OiBNYXJpdXMgVmxhZCA8bWFyaXVzLmMudmxhZEBpbnRlbC5j b20+Ci0tLQogdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiB0 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgICAgICAgICAgICAgIHwgICAyICstCiB0ZXN0cy9kcnZf bW9kdWxlX3JlbG9hZC5jICAgICAgICAgICAgIHwgNDE1ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHRlc3RzL2Rydl9tb2R1bGVfcmVsb2FkX2Jhc2ljICAgICAgICAgfCAxMDUg LS0tLS0tLS0tCiB0ZXN0cy9nZW1fYWxpdmUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDM1IC0t LQogdGVzdHMvaW50ZWwtY2kvZmFzdC1mZWVkYmFjay50ZXN0bGlzdCB8ICAxMyArLQogdG9vbHMv TWFrZWZpbGUuc291cmNlcyAgICAgICAgICAgICAgICB8ICAgMSArCiB0b29scy9pbnRlbF9nZW1f aW5mby5jICAgICAgICAgICAgICAgIHwgIDM1ICsrKwogOCBmaWxlcyBjaGFuZ2VkLCA0NjQgaW5z ZXJ0aW9ucygrKSwgMTQzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2Ry dl9tb2R1bGVfcmVsb2FkLmMKIGRlbGV0ZSBtb2RlIDEwMDc1NSB0ZXN0cy9kcnZfbW9kdWxlX3Jl bG9hZF9iYXNpYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2dlbV9hbGl2ZS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgdG9vbHMvaW50ZWxfZ2VtX2luZm8uYwoKZGlmZiAtLWdpdCBhL3Rlc3RzL01h a2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KaW5kZXggYTQwODEyNi4uMTRhNDFhZSAxMDA2 NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KQEAgLTI2 LDcgKzI2LDYgQEAgbm9pbnN0X1BST0dSQU1TID0gXAogCSQoTlVMTCkKIAogcGtnbGliZXhlY19Q Uk9HUkFNUyA9IFwKLQlnZW1fYWxpdmUgXAogCWdlbV9zdHJlc3MgXAogCSQoVEVTVFNfcHJvZ3Mp IFwKIAkkKFRFU1RTX3Byb2dzX00pIFwKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDZkMDgxYzMuLmIxNTExYzYgMTAwNjQ0 Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwpAQCAtMjExLDYgKzIxMSw3IEBAIFRFU1RTX3Byb2dzID0gXAogCWttc19wd3JpdGVfY3JjIFwK IAlrbXNfc2lua19jcmNfYmFzaWMgXAogCXByaW1lX3VkbCBcCisJZHJ2X21vZHVsZV9yZWxvYWQg XAogCSQoTlVMTCkKIAogIyBJTVBPUlRBTlQ6IFRoZSBaWl8gdGVzdHMgbmVlZCB0byBiZSBydW4g bGFzdCEKQEAgLTIyMSw3ICsyMjIsNiBAQCBURVNUU19zY3JpcHRzX00gPSBcCiBURVNUU19zY3Jp cHRzID0gXAogCWRlYnVnZnNfZW1vbl9jcmFzaCBcCiAJZHJ2X2RlYnVnZnNfcmVhZGVyIFwKLQlk cnZfbW9kdWxlX3JlbG9hZF9iYXNpYyBcCiAJa21zX3N5c2ZzX2VkaWRfdGltaW5nIFwKIAlzeXNm c19sM19wYXJpdHkgXAogCXRlc3RfcnRlX2NoZWNrIFwKZGlmZiAtLWdpdCBhL3Rlc3RzL2Rydl9t b2R1bGVfcmVsb2FkLmMgYi90ZXN0cy9kcnZfbW9kdWxlX3JlbG9hZC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmYyZjcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9k cnZfbW9kdWxlX3JlbG9hZC5jCkBAIC0wLDAgKzEsNDE1IEBACisvKgorICogQ29weXJpZ2h0IMKp IDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAq IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBU SEUgU09GVFdBUkUuCisgKi8KKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlICJpZ3RfZGVidWdm cy5oIgorI2luY2x1ZGUgImlndF9hdXguaCIKKyNpbmNsdWRlICJpZ3Rfa21vZC5oIgorI2luY2x1 ZGUgImlndF9zeXNmcy5oIgorI2luY2x1ZGUgImlndF9jb3JlLmgiCisKKyNpbmNsdWRlIDxkaXJl bnQuaD4KKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2luY2x1ZGUgPGxpbnV4L2xpbWl0cy5o PgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPGxpYmdlbi5oPgorI2luY2x1ZGUgPHNp Z25hbC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKwor I2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX1NISUZUICAgICAgKDEzKQorI2RlZmluZSBMT0NB TF9JOTE1X0VYRUNfQlNEX01BU0sgICAgICAgKDMgPDwgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElG VCkKKworI2RlZmluZSBFTkdJTkVfTUFTSyAgKEk5MTVfRVhFQ19SSU5HX01BU0sgfCBMT0NBTF9J OTE1X0VYRUNfQlNEX01BU0spCisKK3N0YXRpYyB2b2lkIHN0b3JlX2R3b3JkKGludCBmZCwgdW5z aWduZWQgcmluZykKK3sKKwljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1f ZGV2aWQoZmQpKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07CisJ c3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jOworCXN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwl1aW50MzJfdCBiYXRjaFsxNl07CisJaW50 IGk7CisKKwlnZW1fcmVxdWlyZV9yaW5nKGZkLCByaW5nKTsKKwlpZ3Rfc2tpcF9vbl9mKGdlbiA9 PSA2ICYmIChyaW5nICYgfigzPDwxMykpID09IEk5MTVfRVhFQ19CU0QsCisJCSAgICAgICJNSV9T VE9SRV9EQVRBIGJyb2tlbiBvbiBnZW42IGJzZFxuIik7CisKKwlpbnRlbF9kZXRlY3RfYW5kX2Ns ZWFyX21pc3NlZF9pbnRlcnJ1cHRzKGZkKTsKKwltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihl eGVjYnVmKSk7CisJZXhlY2J1Zi5idWZmZXJzX3B0ciA9ICh1aW50cHRyX3Qpb2JqOworCWV4ZWNi dWYuYnVmZmVyX2NvdW50ID0gMjsKKwlleGVjYnVmLmZsYWdzID0gcmluZzsKKwlpZiAoZ2VuIDwg NikKKwkJZXhlY2J1Zi5mbGFncyB8PSBJOTE1X0VYRUNfU0VDVVJFOworCisJbWVtc2V0KG9iaiwg MCwgc2l6ZW9mKG9iaikpOworCW9ialswXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK KwlvYmpbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisKKwltZW1zZXQoJnJlbG9j LCAwLCBzaXplb2YocmVsb2MpKTsKKwlyZWxvYy50YXJnZXRfaGFuZGxlID0gb2JqWzBdLmhhbmRs ZTsKKwlyZWxvYy5wcmVzdW1lZF9vZmZzZXQgPSAwOworCXJlbG9jLm9mZnNldCA9IHNpemVvZih1 aW50MzJfdCk7CisJcmVsb2MuZGVsdGEgPSAwOworCXJlbG9jLnJlYWRfZG9tYWlucyA9IEk5MTVf R0VNX0RPTUFJTl9JTlNUUlVDVElPTjsKKwlyZWxvYy53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9E T01BSU5fSU5TVFJVQ1RJT047CisJb2JqWzFdLnJlbG9jc19wdHIgPSAodWludHB0cl90KSZyZWxv YzsKKwlvYmpbMV0ucmVsb2NhdGlvbl9jb3VudCA9IDE7CisKKwlpID0gMDsKKwliYXRjaFtpXSA9 IE1JX1NUT1JFX0RXT1JEX0lNTSB8IChnZW4gPCA2ID8gMSA8PCAyMiA6IDApOworCWlmIChnZW4g Pj0gOCkgeworCQliYXRjaFsrK2ldID0gMDsKKwkJYmF0Y2hbKytpXSA9IDA7CisJfSBlbHNlIGlm IChnZW4gPj0gNCkgeworCQliYXRjaFsrK2ldID0gMDsKKwkJYmF0Y2hbKytpXSA9IDA7CisJCXJl bG9jLm9mZnNldCArPSBzaXplb2YodWludDMyX3QpOworCX0gZWxzZSB7CisJCWJhdGNoW2ldLS07 CisJCWJhdGNoWysraV0gPSAwOworCX0KKwliYXRjaFsrK2ldID0gMHhjMGZmZWU7CisJYmF0Y2hb KytpXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJZ2VtX3dyaXRlKGZkLCBvYmpbMV0uaGFuZGxl LCAwLCBiYXRjaCwgc2l6ZW9mKGJhdGNoKSk7CisJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsK KwlnZW1fY2xvc2UoZmQsIG9ialsxXS5oYW5kbGUpOworCisJZ2VtX3JlYWQoZmQsIG9ialswXS5o YW5kbGUsIDAsIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsKKwlnZW1fY2xvc2UoZmQsIG9ialswXS5o YW5kbGUpOworCWlndF9hc3NlcnRfZXEoKmJhdGNoLCAweGMwZmZlZSk7CisJaWd0X2Fzc2VydF9l cShpbnRlbF9kZXRlY3RfYW5kX2NsZWFyX21pc3NlZF9pbnRlcnJ1cHRzKGZkKSwgMCk7Cit9CisK K3N0YXRpYyB2b2lkIHN0b3JlX2FsbChpbnQgZmQpCit7CisJY29uc3QgaW50IGdlbiA9IGludGVs X2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj X29iamVjdDIgb2JqWzJdOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSBy ZWxvY1szMl07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOworCXVu c2lnbmVkIGVuZ2luZXNbMTZdLCBwZXJtdXRlZFsxNl07CisJdWludDMyX3QgYmF0Y2hbMTZdOwor CXVpbnQ2NF90IG9mZnNldDsKKwl1bnNpZ25lZCBlbmdpbmUsIG5lbmdpbmU7CisJaW50IHZhbHVl OworCWludCBpLCBqOworCisJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwor CWV4ZWNidWYuYnVmZmVyc19wdHIgPSAodWludHB0cl90KW9iajsKKwlleGVjYnVmLmJ1ZmZlcl9j b3VudCA9IDI7CisJaWYgKGdlbiA8IDYpCisJCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX1NF Q1VSRTsKKworCW1lbXNldChyZWxvYywgMCwgc2l6ZW9mKHJlbG9jKSk7CisJbWVtc2V0KG9iaiwg MCwgc2l6ZW9mKG9iaikpOworCW9ialswXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK KwlvYmpbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisJb2JqWzFdLnJlbG9jYXRp b25fY291bnQgPSAxOworCisJb2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKKwlpID0gMDsKKwli YXRjaFtpXSA9IE1JX1NUT1JFX0RXT1JEX0lNTSB8IChnZW4gPCA2ID8gMSA8PCAyMiA6IDApOwor CWlmIChnZW4gPj0gOCkgeworCQliYXRjaFsrK2ldID0gMDsKKwkJYmF0Y2hbKytpXSA9IDA7CisJ fSBlbHNlIGlmIChnZW4gPj0gNCkgeworCQliYXRjaFsrK2ldID0gMDsKKwkJYmF0Y2hbKytpXSA9 IDA7CisJCW9mZnNldCArPSBzaXplb2YodWludDMyX3QpOworCX0gZWxzZSB7CisJCWJhdGNoW2ld LS07CisJCWJhdGNoWysraV0gPSAwOworCX0KKwliYXRjaFt2YWx1ZSA9ICsraV0gPSAweGMwZmZl ZTsKKwliYXRjaFsrK2ldID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKworCW5lbmdpbmUgPSAwOwor CWludGVsX2RldGVjdF9hbmRfY2xlYXJfbWlzc2VkX2ludGVycnVwdHMoZmQpOworCWZvcl9lYWNo X2VuZ2luZShmZCwgZW5naW5lKSB7CisJCWlmIChnZW4gPT0gNiAmJiAoZW5naW5lICYgfigzPDwx MykpID09IEk5MTVfRVhFQ19CU0QpCisJCQljb250aW51ZTsKKworCQlpZ3RfYXNzZXJ0KDIqKG5l bmdpbmUrMSkqc2l6ZW9mKGJhdGNoKSA8PSA0MDk2KTsKKworCQlleGVjYnVmLmZsYWdzICY9IH5F TkdJTkVfTUFTSzsKKwkJZXhlY2J1Zi5mbGFncyB8PSBlbmdpbmU7CisKKwkJaiA9IDIqbmVuZ2lu ZTsKKwkJcmVsb2Nbal0udGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7CisJCXJlbG9jW2pd LnByZXN1bWVkX29mZnNldCA9IH4wOworCQlyZWxvY1tqXS5vZmZzZXQgPSBqKnNpemVvZihiYXRj aCkgKyBvZmZzZXQ7CisJCXJlbG9jW2pdLmRlbHRhID0gbmVuZ2luZSpzaXplb2YodWludDMyX3Qp OworCQlyZWxvY1tqXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047 CisJCXJlbG9jW2pdLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTjsK KwkJb2JqWzFdLnJlbG9jc19wdHIgPSAodWludHB0cl90KSZyZWxvY1tqXTsKKworCQliYXRjaFt2 YWx1ZV0gPSAweGRlYWRiZWVmOworCQlnZW1fd3JpdGUoZmQsIG9ialsxXS5oYW5kbGUsIGoqc2l6 ZW9mKGJhdGNoKSwKKwkJCSAgYmF0Y2gsIHNpemVvZihiYXRjaCkpOworCQlleGVjYnVmLmJhdGNo X3N0YXJ0X29mZnNldCA9IGoqc2l6ZW9mKGJhdGNoKTsKKwkJZ2VtX2V4ZWNidWYoZmQsICZleGVj YnVmKTsKKworCQlqID0gMipuZW5naW5lICsgMTsKKwkJcmVsb2Nbal0udGFyZ2V0X2hhbmRsZSA9 IG9ialswXS5oYW5kbGU7CisJCXJlbG9jW2pdLnByZXN1bWVkX29mZnNldCA9IH4wOworCQlyZWxv Y1tqXS5vZmZzZXQgPSBqKnNpemVvZihiYXRjaCkgKyBvZmZzZXQ7CisJCXJlbG9jW2pdLmRlbHRh ID0gbmVuZ2luZSpzaXplb2YodWludDMyX3QpOworCQlyZWxvY1tqXS5yZWFkX2RvbWFpbnMgPSBJ OTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047CisJCXJlbG9jW2pdLndyaXRlX2RvbWFpbiA9IEk5 MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTjsKKwkJb2JqWzFdLnJlbG9jc19wdHIgPSAodWludHB0 cl90KSZyZWxvY1tqXTsKKworCQliYXRjaFt2YWx1ZV0gPSBuZW5naW5lOworCQlnZW1fd3JpdGUo ZmQsIG9ialsxXS5oYW5kbGUsIGoqc2l6ZW9mKGJhdGNoKSwKKwkJCSAgYmF0Y2gsIHNpemVvZihi YXRjaCkpOworCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9IGoqc2l6ZW9mKGJhdGNoKTsK KwkJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKKworCQllbmdpbmVzW25lbmdpbmUrK10gPSBl bmdpbmU7CisJfQorCWdlbV9zeW5jKGZkLCBvYmpbMV0uaGFuZGxlKTsKKworCWZvciAoaSA9IDA7 IGkgPCBuZW5naW5lOyBpKyspIHsKKwkJb2JqWzFdLnJlbG9jc19wdHIgPSAodWludHB0cl90KSZy ZWxvY1syKmldOworCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9IDIqaSpzaXplb2YoYmF0 Y2gpOworCQltZW1jcHkocGVybXV0ZWQsIGVuZ2luZXMsIG5lbmdpbmUqc2l6ZW9mKGVuZ2luZXNb MF0pKTsKKwkJaWd0X3Blcm11dGVfYXJyYXkocGVybXV0ZWQsIG5lbmdpbmUsIGlndF9leGNoYW5n ZV9pbnQpOworCQlmb3IgKGogPSAwOyBqIDwgbmVuZ2luZTsgaisrKSB7CisJCQlleGVjYnVmLmZs YWdzICY9IH5FTkdJTkVfTUFTSzsKKwkJCWV4ZWNidWYuZmxhZ3MgfD0gcGVybXV0ZWRbal07CisJ CQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOworCQl9CisJCW9ialsxXS5yZWxvY3NfcHRyID0g KHVpbnRwdHJfdCkmcmVsb2NbMippKzFdOworCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9 ICgyKmkrMSkqc2l6ZW9mKGJhdGNoKTsKKwkJZXhlY2J1Zi5mbGFncyAmPSB+RU5HSU5FX01BU0s7 CisJCWV4ZWNidWYuZmxhZ3MgfD0gZW5naW5lc1tpXTsKKwkJZ2VtX2V4ZWNidWYoZmQsICZleGVj YnVmKTsKKwl9CisJZ2VtX2Nsb3NlKGZkLCBvYmpbMV0uaGFuZGxlKTsKKworCWdlbV9yZWFkKGZk LCBvYmpbMF0uaGFuZGxlLCAwLCBlbmdpbmVzLCBzaXplb2YoZW5naW5lcykpOworCWdlbV9jbG9z ZShmZCwgb2JqWzBdLmhhbmRsZSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZTsgaSsrKQor CQlpZ3RfYXNzZXJ0X2VxX3UzMihlbmdpbmVzW2ldLCBpKTsKKwlpZ3RfYXNzZXJ0X2VxKGludGVs X2RldGVjdF9hbmRfY2xlYXJfbWlzc2VkX2ludGVycnVwdHMoZmQpLCAwKTsKK30KKworc3RhdGlj IGludAordW5sb2FkKHZvaWQpCit7CisJa2lja19mYmNvbihmYWxzZSk7CisKKwlpZiAoaWd0X2tt b2RfaXNfbG9hZGVkKCJzbmRfaGRhX2ludGVsIikpIHsKKwkJaWd0X2Fzc2VydCghaWd0X3BraWxs KFNJR1RFUk0sICJhbHNhY3RsIikpOworCisJCWlmIChpZ3Rfa21vZF91bmxvYWQoInNuZF9oZGFf aW50ZWwiLCAwKSkgeworCQkJaWd0X2luZm8oIkNvdWxkIG5vdCB1bmxvYWQgc25kX2hkYV9pbnRl bFxuIik7CisJCQlyZXR1cm4gSUdUX0VYSVRfRkFJTFVSRTsKKwkJfQorCX0KKworCS8qIGdlbjUg Ki8KKwlpZiAoaWd0X2ttb2RfaXNfbG9hZGVkKCJpbnRlbF9pcHMiKSkgeworCQlpZ3Rfa21vZF91 bmxvYWQoImludGVsX2lwcyIsIDApOworCX0KKworCWlmIChpZ3Rfa21vZF9pc19sb2FkZWQoImk5 MTUiKSkgeworCQlpZiAoaWd0X2ttb2RfdW5sb2FkKCJpOTE1IiwgMCkpIHsKKwkJCWlndF9pbmZv KCJDb3VsZCBub3QgdW5sb2FkIGk5MTVcbiIpOworCQkJcmV0dXJuIElHVF9FWElUX1NLSVA7CisJ CX0gZWxzZSB7CisJCQlpZ3RfaW5mbygiaTkxNS5rbyBoYXMgYmVlbiB1bmxvYWRlZCFcbiIpOwor CQl9CisJfQorCisJaWYgKGlndF9rbW9kX2lzX2xvYWRlZCgiaW50ZWwtZ3R0IikpIHsKKwkJaWd0 X2ttb2RfdW5sb2FkKCJpbnRlbC1ndHQiLCAwKTsKKwl9CisKKwlpZ3RfYXNzZXJ0KCFpZ3Rfa21v ZF91bmxvYWQoImRybV9rbXNfaGVscGVyIiwgMCkpOworCWlndF9hc3NlcnQoIWlndF9rbW9kX3Vu bG9hZCgiZHJtIiwgMCkpOworCisJaWYgKGlndF9rbW9kX2lzX2xvYWRlZCgiaTkxNSIpKSB7CisJ CWlndF9pbmZvKCJXQVJOSU5HOiBpOTE1LmtvIHN0aWxsIGxvYWRlZCFcbiIpOworCQlyZXR1cm4g SUdUX0VYSVRfRkFJTFVSRTsKKwl9IGVsc2UgeworCQlpZ3RfaW5mbygibW9kdWxlIHN1Y2Nlc3Nm dWxseSB1bmxvYWRlZFxuIik7CisJfQorCisJcmV0dXJuIElHVF9FWElUX1NVQ0NFU1M7Cit9CisK K3N0YXRpYyBpbnQKK2xvYWQoY29uc3QgY2hhciAqb3B0c19pOTE1KQoreworCWlmIChvcHRzX2k5 MTUpCisJCWlndF9pbmZvKCJSZWxvYWRpbmcgaTkxNSB3aXRoICVzXG5cbiIsIG9wdHNfaTkxNSk7 CisKKwkvKiB3ZSBkbyBub3QgaGF2ZSBhdXRvbWF0aWMgbG9hZGluZyBvZiBkZXBlbmRlbmNpZXMg Ki8KKwlpZ3RfYXNzZXJ0KCFpZ3Rfa21vZF9sb2FkKCJkcm0iLCBOVUxMKSk7CisJaWd0X2Fzc2Vy dCghaWd0X2ttb2RfbG9hZCgiZHJtX2ttc19oZWxwZXIiLCBOVUxMKSk7CisKKwlpZiAoaWd0X2tt b2RfbG9hZCgiaTkxNSIsIG9wdHNfaTkxNSkpIHsKKwkJaWd0X2luZm8oIkNvdWxkIG5vdCBsb2Fk IGk5MTVcbiIpOworCQlyZXR1cm4gSUdUX0VYSVRfRkFJTFVSRTsKKwl9CisKKwlraWNrX2ZiY29u KHRydWUpOworCWlndF9hc3NlcnQoIWlndF9rbW9kX2xvYWQoInNuZF9oZGFfaW50ZWwiLCBOVUxM KSk7CisKKwlyZXR1cm4gSUdUX0VYSVRfU1VDQ0VTUzsKK30KKworc3RhdGljIGludAorcmVsb2Fk KGNvbnN0IGNoYXIgKm9wdHNfaTkxNSkKK3sKKwlpbnQgZXJyID0gSUdUX0VYSVRfU1VDQ0VTUzsK KworCWlmICgoZXJyID0gdW5sb2FkKCkpKQorCQlyZXR1cm4gZXJyOworCisJaWYgKChlcnIgPSBs b2FkKG9wdHNfaTkxNSkpKQorCQlyZXR1cm4gZXJyOworCisJcmV0dXJuIGVycjsKK30KKworc3Rh dGljIGludAorZ2VtX2luZm8oaW50IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fc3dfZmlu aXNoIGFyZyA9IHsgMCB9OworCisJc2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOworCisJYWxhcm0o MSk7CisJaWYgKGlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fU1dfRklOSVNILCAmYXJnKSA9 PSAwKSB7CisJCXJldHVybiBJR1RfRVhJVF9TS0lQOworCX0KKworCXN3aXRjaCAoZXJybm8pIHsK KwljYXNlIEVOT0VOVDoKKwkJcmV0dXJuIDA7CisJY2FzZSBFSU86CisJCXJldHVybiAxOworCWNh c2UgRUlOVFI6CisJCXJldHVybiAyOworCWRlZmF1bHQ6CisJCXJldHVybiAzOworCX0KK30KKwor c3RhdGljIGludAorZ2VtX2V4ZWNfc3RvcmUoaW50IGZkKQoreworCWNvbnN0IHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lICplOworCWlndF9maXh0dXJlIHsKKwkJaWd0X2ZvcmtfaGFuZ19k ZXRlY3RvcihmZCk7CisJfQorCisJZm9yIChlID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXM7IGUt Pm5hbWU7IGUrKykgeworCQlpZ3Rfc3VidGVzdF9mKCJiYXNpYy1leGVjLXN0b3JlLSVzIiwgZS0+ bmFtZSkKKwkJCXN0b3JlX2R3b3JkKGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MpOworCX0KKwor CWlndF9zdWJ0ZXN0KCJiYXNpYy1leGVjLXN0b3JlLWFsbCIpCisJCXN0b3JlX2FsbChmZCk7CisK KwlpZ3RfZml4dHVyZQorCQlpZ3Rfc3RvcF9oYW5nX2RldGVjdG9yKCk7CisKKwlyZXR1cm4gSUdU X0VYSVRfU1VDQ0VTUzsKK30KKworc3RhdGljIHZvaWQKK2hkYV9keW5hbWljX2RlYnVnKGJvb2wg ZW5hYmxlKQoreworCUZJTEUgKmZwOworCWNvbnN0IGNoYXIgc25kX2hkYV9pbnRlbF9vbltdID0g Im1vZHVsZSBzbmRfaGRhX2ludGVsICtwZiI7CisJY29uc3QgY2hhciBzbmRfaGRhX2NvcmVfb25b XSA9ICJtb2R1bGUgc25kX2hkYV9jb3JlICtwZiI7CisKKwljb25zdCBjaGFyIHNuZF9oZGFfaW50 ZWxfb2ZmW10gPSAibW9kdWxlIHNuZF9oZGFfY29yZSA9XyI7CisJY29uc3QgY2hhciBzbmRfaGRh X2NvcmVfb2ZmW10gPSAibW9kdWxlIHNuZF9oZGFfaW50ZWwgPV8iOworCisJZnAgPSBmb3Blbigi L3N5cy9rZXJuZWwvZGVidWcvZHluYW1pY19kZWJ1Zy9jb250cm9sIiwgInciKTsKKwlpZ3RfYXNz ZXJ0KGZwICE9IE5VTEwpOworCisJaWYgKGVuYWJsZSkgeworCQlmd3JpdGUoc25kX2hkYV9pbnRl bF9vbiwgMSwgc2l6ZW9mKHNuZF9oZGFfaW50ZWxfb24pLCBmcCk7CisJCWZ3cml0ZShzbmRfaGRh X2NvcmVfb24sIDEsIHNpemVvZihzbmRfaGRhX2NvcmVfb24pLCBmcCk7CisJfSBlbHNlIHsKKwkJ ZndyaXRlKHNuZF9oZGFfaW50ZWxfb2ZmLCAxLCBzaXplb2Yoc25kX2hkYV9pbnRlbF9vZmYpLCBm cCk7CisJCWZ3cml0ZShzbmRfaGRhX2NvcmVfb2ZmLCAxLCBzaXplb2Yoc25kX2hkYV9jb3JlX29m ZiksIGZwKTsKKwl9CisKKwlmY2xvc2UoZnApOworfQorCisKK2lndF9tYWluCit7CisJaW50IGks IGVycjsKKwljaGFyIGJ1Zls2NF07CisKKwlpZ3RfZml4dHVyZQorCQloZGFfZHluYW1pY19kZWJ1 Zyh0cnVlKTsKKworCWlndF9zdWJ0ZXN0KCJiYXNpYy1yZWxvYWQiKSB7CisJCWlmICgoZXJyID0g cmVsb2FkKE5VTEwpKSkKKwkJCWlndF9mYWlsKGVycik7CisJfQorCisJaWd0X3N1YnRlc3RfZ3Jv dXAgeworCQlpbnQgZmQ7CisKKwkJaWd0X2ZpeHR1cmUKKwkJCWZkID0gX19kcm1fb3Blbl9kcml2 ZXIoRFJJVkVSX0lOVEVMKTsKKworCQlpZ3Rfc3VidGVzdF9ncm91cCB7CisJCQlpZ3Rfc3VidGVz dCgiYmFzaWMtZ2VtLWluZm8iKQorCQkJCWlmICgoZXJyID0gZ2VtX2luZm8oZmQpKSkKKwkJCQkJ aWd0X2ZhaWwoZXJyKTsKKwkJCWlndF9zdWJ0ZXN0X2dyb3VwCisJCQkJaWYgKChlcnIgPSBnZW1f ZXhlY19zdG9yZShmZCkpKQorCQkJCQlpZ3RfZmFpbChlcnIpOworCQl9CisKKwkJaWd0X2ZpeHR1 cmUKKwkJCWNsb3NlKGZkKTsKKwl9CisKKwlpZ3Rfc3VidGVzdCgiYmFzaWMtcmVsb2FkLWluamVj dCIpIHsKKwkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQkJbWVtc2V0KGJ1ZiwgMCwgc2l6 ZW9mKGJ1ZikpOworCQkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgImluamVjdF9sb2FkX2Zh aWx1cmU9JWQiLCBpKTsKKwkJCXJlbG9hZChidWYpOworCQl9CisJfQorCisJaWd0X3N1YnRlc3Qo ImJhc2ljLXJlbG9hZC1maW5hbCIpCisJCWlmICgoZXJyID0gcmVsb2FkKE5VTEwpKSkKKwkJCWln dF9mYWlsKGVycik7CisKKwlpZ3RfZml4dHVyZQorCQloZGFfZHluYW1pY19kZWJ1ZyhmYWxzZSk7 Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9kcnZfbW9kdWxlX3JlbG9hZF9iYXNpYyBiL3Rlc3RzL2Ry dl9tb2R1bGVfcmVsb2FkX2Jhc2ljCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiOGNh ZDg4Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL2Rydl9tb2R1bGVfcmVsb2FkX2Jhc2ljCisrKyAvZGV2 L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0jCi0jIFRlc3RjYXNlOiBSZWxv YWQgdGhlIGRybSBtb2R1bGUKLSMKLSMgLi4uIHdlJ3ZlIGJyb2tlbiB0aGlzIHdheSB0b28gb2Z0 ZW4gOigKLSMKLQotU09VUkNFX0RJUj0iJCggZGlybmFtZSAiJHtCQVNIX1NPVVJDRVswXX0iICki Ci0uICRTT1VSQ0VfRElSL2RybV9saWIuc2gKLQotIyBubyBvdGhlciBkcm0gc2VydmljZSBzaG91 bGQgYmUgcnVubmluZywgc28gd2UgY2FuIGp1c3QgdW5iaW5kCi0KLSMgcmV0dXJuIDAgaWYgbW9k dWxlIGJ5IG5hbWUgJDEgaXMgbG9hZGVkIGFjY29yZGluZyB0byBsc21vZAotZnVuY3Rpb24gbW9k X2xvYWRlZCgpCi17Ci0JbHNtb2QgfCBncmVwIC13ICJeJDEiICY+IC9kZXYvbnVsbAotfQotCi1m dW5jdGlvbiByZWxvYWQoKSB7Ci0JbG9jYWwgc25kX2hkYV9pbnRlbF91bmxvYWRlZAotCi0JZWNo byBSZWxvYWRpbmcgaTkxNS5rbyB3aXRoICQqCi0KLQkjIHdlIG11c3Qga2ljayBhd2F5IGZiY29u IChidXQgb25seSBmYmNvbikKLQlmb3IgdnRjb24gaW4gL3N5cy9jbGFzcy92dGNvbnNvbGUvdnRj b24qLyA7IGRvCi0JCWlmIGdyZXAgImZyYW1lIGJ1ZmZlciBkZXZpY2UiICR2dGNvbi9uYW1lID4g L2Rldi9udWxsIDsgdGhlbgotCQkJZWNobyB1bmJpbmRpbmcgJHZ0Y29uOiBgY2F0ICR2dGNvbi9u YW1lYAotCQkJZWNobyAwID4gJHZ0Y29uL2JpbmQKLQkJZmkKLQlkb25lCi0KLQkjIFRoZSBzb3Vu ZCBkcml2ZXIgdXNlcyBvdXIgcG93ZXIgd2VsbAotCXBraWxsIGFsc2FjdGwKLQlzbmRfaGRhX2lu dGVsX3VubG9hZGVkPTAKLQlpZiBtb2RfbG9hZGVkIHNuZF9oZGFfaW50ZWw7IHRoZW4KLQkJaWYg cm1tb2Qgc25kX2hkYV9pbnRlbDsgdGhlbgotCQkJc25kX2hkYV9pbnRlbF91bmxvYWRlZD0xCi0J CWVsc2UKLQkJCWxzbW9kID4mMgotCQlmaQotCWZpCi0KLQkjIGdlbjUgb25seQotCWlmIG1vZF9s b2FkZWQgaW50ZWxfaXBzOyB0aGVuCi0JCXJtbW9kIGludGVsX2lwcwotCWZpCi0KLQlpZiAhIHJt bW9kIGk5MTU7IHRoZW4KLQkJbHNtb2QgPiYyCi0JCXJldHVybiAkSUdUX0VYSVRfU0tJUAotCWZp Ci0JI2lnbm9yZSBlcnJvcnMgaW4gaW50ZWwtZ3R0LCBvZnRlbiBidWlsdC1pbgotCXJtbW9kIGlu dGVsLWd0dCAmPiAvZGV2L251bGwKLQkjIGRybSBtYXkgYmUgdXNlZCBieSBvdGhlciBkZXZpY2Vz IChub3V2ZWF1LCByYWRlb24sIHVkbCwgZXRjKQotCXJtbW9kIGRybV9rbXNfaGVscGVyICY+IC9k ZXYvbnVsbAotCXJtbW9kIGRybSAmPiAvZGV2L251bGwKLQotCWlmIG1vZF9sb2FkZWQgaTkxNTsg dGhlbgotCQllY2hvIFdBUk5JTkc6IGk5MTUua28gc3RpbGwgbG9hZGVkIQotCQlyZXR1cm4gJElH VF9FWElUX0ZBSUxVUkUKLQllbHNlCi0JCWVjaG8gbW9kdWxlIHN1Y2Nlc3NmdWxseSB1bmxvYWRl ZAotCWZpCi0KLQltb2Rwcm9iZSBpOTE1ICQqCi0KLQlpZiBbIC1mIC9zeXMvY2xhc3MvdnRjb25z b2xlL3Z0Y29uMS9iaW5kIF07IHRoZW4KLQkJZWNobyAxID4gL3N5cy9jbGFzcy92dGNvbnNvbGUv dnRjb24xL2JpbmQKLQlmaQotCi0JbW9kcHJvYmUgLXEgc25kX2hkYV9pbnRlbCB8fCByZXR1cm4g JHNuZF9oZGFfaW50ZWxfdW5sb2FkZWQKLX0KLQotZnVuY3Rpb24gZmluaXNoX2xvYWQoKSB7Ci0J IyBkb2VzIHRoZSBkZXZpY2UgZXhpc3Q/Ci0JaWYgJFNPVVJDRV9ESVIvZ2VtX2FsaXZlID4gL2Rl di9udWxsIDsgdGhlbgotCQllY2hvICJtb2R1bGUgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhZ2FpbiIK LQllbHNlCi0JCWVjaG8gImZhaWxlZCB0byByZWxvYWQgbW9kdWxlIHN1Y2Nlc3NmdWxseSIKLQkJ cmV0dXJuICRJR1RfRVhJVF9GQUlMVVJFCi0JZmkKLQotCSMgdGhlbiB0cnkgdG8gcnVuIHNvbWV0 aGluZwotCWlmICEgJFNPVVJDRV9ESVIvZ2VtX2V4ZWNfc3RvcmUgPiAvZGV2L251bGwgOyB0aGVu Ci0JCWVjaG8gImZhaWxlZCB0byBleGVjdXRlIGEgc2ltcGxlIGJhdGNoIGFmdGVyIHJlbG9hZCIK LQkJcmV0dXJuICRJR1RfRVhJVF9GQUlMVVJFCi0JZmkKLQotCXJldHVybiAkSUdUX0VYSVRfU1VD Q0VTUwotfQotCi1oZGFfZHluYW1pY19kZWJ1Z19lbmFibGUKLQotcmVsb2FkIHx8IGV4aXQgJD8K LWZpbmlzaF9sb2FkIHx8IGV4aXQgJD8KLQotIyBSZXBlYXQgdGhlIG1vZHVsZSByZWxvYWQgdHJ5 aW5nIHRvIHRvIGdlbmVyYXRlIGZhdWx0cwotZm9yIGkgaW4gJChzZXEgMSA0KTsgZG8KLQlyZWxv YWQgaW5qZWN0X2xvYWRfZmFpbHVyZT0kaQotZG9uZQotCi1yZWxvYWQgfHwgZXhpdCAkPwotZmlu aXNoX2xvYWQKLQotZXhpdCAkPwpkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VtX2FsaXZlLmMgYi90ZXN0 cy9nZW1fYWxpdmUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU0NDQ0My4uMDAw MDAwMAotLS0gYS90ZXN0cy9nZW1fYWxpdmUuYworKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAg QEAKLSNpbmNsdWRlICJpZ3QuaCIKLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSNpbmNsdWRlIDxm Y250bC5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVk ZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8aTkxNV9kcm0uaD4KLQotCi1pbnQgbWFpbih2b2lkKQot ewotCXN0cnVjdCBkcm1faTkxNV9nZW1fc3dfZmluaXNoIGFyZyA9IHsgMCB9OwotCWludCBmZDsK LQotCXNpZ25hbChTSUdBTFJNLCBTSUdfSUdOKTsKLQotCWZkID0gX19kcm1fb3Blbl9kcml2ZXIo RFJJVkVSX0lOVEVMKTsKLQlpZiAoZmQgPCAwKQotCQlyZXR1cm4gSUdUX0VYSVRfU0tJUDsKLQot CWFsYXJtKDEpOwotCWlmIChpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX1NXX0ZJTklTSCwg JmFyZykgPT0gMCkKLQkJcmV0dXJuIElHVF9FWElUX1NLSVA7Ci0KLQlzd2l0Y2ggKGVycm5vKSB7 Ci0JY2FzZSBFTk9FTlQ6Ci0JCXJldHVybiAwOwotCWNhc2UgRUlPOgotCQlyZXR1cm4gMTsKLQlj YXNlIEVJTlRSOgotCQlyZXR1cm4gMjsKLQlkZWZhdWx0OgotCQlyZXR1cm4gMzsKLQl9Ci19CmRp ZmYgLS1naXQgYS90ZXN0cy9pbnRlbC1jaS9mYXN0LWZlZWRiYWNrLnRlc3RsaXN0IGIvdGVzdHMv aW50ZWwtY2kvZmFzdC1mZWVkYmFjay50ZXN0bGlzdAppbmRleCBmNTllYzk4Li4zYzUxNmVkIDEw MDY0NAotLS0gYS90ZXN0cy9pbnRlbC1jaS9mYXN0LWZlZWRiYWNrLnRlc3RsaXN0CisrKyBiL3Rl c3RzL2ludGVsLWNpL2Zhc3QtZmVlZGJhY2sudGVzdGxpc3QKQEAgLTMsNyArMywxOCBAQCBpZ3RA Y29yZV9wcm9wX2Jsb2JAYmFzaWMKIGlndEBkcnZfZ2V0cGFyYW1zX2Jhc2ljQGJhc2ljLWV1LXRv dGFsCiBpZ3RAZHJ2X2dldHBhcmFtc19iYXNpY0BiYXNpYy1zdWJzbGljZS10b3RhbAogaWd0QGRy dl9oYW5nbWFuQGVycm9yLXN0YXRlLWJhc2ljCi1pZ3RAZHJ2X21vZHVsZV9yZWxvYWRfYmFzaWMK K2lndEBkcnZfbW9kdWxlX3JlbG9hZEBiYXNpYy1yZWxvYWQKK2lndEBkcnZfbW9kdWxlX3JlbG9h ZEBiYXNpYy1nZW0taW5mbworaWd0QGRydl9tb2R1bGVfcmVsb2FkQGJhc2ljLWV4ZWMtc3RvcmUt ZGVmYXVsdAoraWd0QGRydl9tb2R1bGVfcmVsb2FkQGJhc2ljLWV4ZWMtc3RvcmUtcmVuZGVyCitp Z3RAZHJ2X21vZHVsZV9yZWxvYWRAYmFzaWMtZXhlYy1zdG9yZS1ic2QKK2lndEBkcnZfbW9kdWxl X3JlbG9hZEBiYXNpYy1leGVjLXN0b3JlLWJzZDEKK2lndEBkcnZfbW9kdWxlX3JlbG9hZEBiYXNp Yy1leGVjLXN0b3JlLWJzZDIKK2lndEBkcnZfbW9kdWxlX3JlbG9hZEBiYXNpYy1leGVjLXN0b3Jl LWJsdAoraWd0QGRydl9tb2R1bGVfcmVsb2FkQGJhc2ljLWV4ZWMtc3RvcmUtdmVib3gKK2lndEBk cnZfbW9kdWxlX3JlbG9hZEBiYXNpYy1leGVjLXN0b3JlLWFsbAoraWd0QGRydl9tb2R1bGVfcmVs b2FkQGJhc2ljLXJlbG9hZC1pbmplY3QKK2lndEBkcnZfbW9kdWxlX3JlbG9hZEBiYXNpYy1yZWxv YWQtZmluYWwKIGlndEBnZW1fYmFzaWNAYmFkLWNsb3NlCiBpZ3RAZ2VtX2Jhc2ljQGNyZWF0ZS1j bG9zZQogaWd0QGdlbV9iYXNpY0BjcmVhdGUtZmQtY2xvc2UKZGlmZiAtLWdpdCBhL3Rvb2xzL01h a2VmaWxlLnNvdXJjZXMgYi90b29scy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IGJlNTg4NzEuLmUy NDUxZWEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvdG9vbHMvTWFr ZWZpbGUuc291cmNlcwpAQCAtMjksNiArMjksNyBAQCB0b29sc19wcm9nX2xpc3RzID0JCVwKIAlp bnRlbF9yZXNpZGVuY3kJCVwKIAlpbnRlbF9zdGVwcGluZwkJXAogCWludGVsX3dhdGVybWFyawkJ XAorCWludGVsX2dlbV9pbmZvCQlcCiAJJChOVUxMKQogCiBkaXN0X2Jpbl9TQ1JJUFRTID0gaW50 ZWxfZ3B1X2FicnQKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2dlbV9pbmZvLmMgYi90b29scy9p bnRlbF9nZW1faW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NDQ0 NDMKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9pbnRlbF9nZW1faW5mby5jCkBAIC0wLDAgKzEs MzUgQEAKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRl IDxmY250bC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j bHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8aTkxNV9kcm0uaD4KKworCitpbnQgbWFpbih2b2lk KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fc3dfZmluaXNoIGFyZyA9IHsgMCB9OworCWludCBm ZDsKKworCXNpZ25hbChTSUdBTFJNLCBTSUdfSUdOKTsKKworCWZkID0gX19kcm1fb3Blbl9kcml2 ZXIoRFJJVkVSX0lOVEVMKTsKKwlpZiAoZmQgPCAwKQorCQlyZXR1cm4gSUdUX0VYSVRfU0tJUDsK KworCWFsYXJtKDEpOworCWlmIChpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX1NXX0ZJTklT SCwgJmFyZykgPT0gMCkKKwkJcmV0dXJuIElHVF9FWElUX1NLSVA7CisKKwlzd2l0Y2ggKGVycm5v KSB7CisJY2FzZSBFTk9FTlQ6CisJCXJldHVybiAwOworCWNhc2UgRUlPOgorCQlyZXR1cm4gMTsK KwljYXNlIEVJTlRSOgorCQlyZXR1cm4gMjsKKwlkZWZhdWx0OgorCQlyZXR1cm4gMzsKKwl9Cit9 Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==