From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id E49D96E3C1 for ; Tue, 23 Jun 2020 13:01:08 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 23 Jun 2020 15:00:55 +0200 Message-Id: <20200623130056.20071-4-zbigniew.kempczynski@intel.com> In-Reply-To: <20200623130056.20071-1-zbigniew.kempczynski@intel.com> References: <20200623130056.20071-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 3/4] tests/api_intel_bb: Add intel_bb API test List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: SUdUIGNvZGUgY29udGFpbnMgc29tZSBtZWNoYW5pc21zIHdoaWNoIGFyZSBxdWl0ZSBsYXJnZSBh bmQgY292ZXIKZGlmZmVyZW50IGdlbnMgc28gdGhleSBkZXNlcnZlIG93biBhcGlfKiBjaGVja3Mu CgpTdGFydGluZyB3aXRoIGFwaV9pbnRlbF9iYiB2ZXJpZnkgaW50ZWxfYmIgZnVuY3Rpb25zIHdv cmsgYXMgZXhwZWN0ZWQuCgpTaWduZWQtb2ZmLWJ5OiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpi aWduaWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgotLS0KIHRlc3RzL2k5MTUvYXBpX2ludGVsX2JiLmMgfCA1NjMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1aWxkICAg ICAgICAgfCAgIDEgKwogMiBmaWxlcyBjaGFuZ2VkLCA1NjQgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHRlc3RzL2k5MTUvYXBpX2ludGVsX2JiLmMKCmRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2FwaV9pbnRlbF9iYi5jIGIvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZWNjNWMxNTYKLS0tIC9kZXYvbnVsbAorKysg Yi90ZXN0cy9pOTE1L2FwaV9pbnRlbF9iYi5jCkBAIC0wLDAgKzEsNTYzIEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUg PHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5o PgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMv c3RhdC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgImludGVsX2J1Zm9wcy5o IgorCisjZGVmaW5lIFBBR0VfU0laRSA0MDk2CisKKyNkZWZpbmUgV0lEVEggNjQKKyNkZWZpbmUg SEVJR0hUIDY0CisjZGVmaW5lIENPTE9SXzAwCTB4MDAKKyNkZWZpbmUgQ09MT1JfMzMJMHgzMwor I2RlZmluZSBDT0xPUl83NwkweDc3CisjZGVmaW5lIENPTE9SX0NDCTB4Y2MKKworSUdUX1RFU1Rf REVTQ1JJUFRJT04oImludGVsX2JiIEFQSSBjaGVjay4iKTsKKworZW51bSByZWxvY19vYmplY3Rz IHsKKwlSRUxPQywKKwlOT1JFTE9DLAorfTsKKworZW51bSBvYmpfY2FjaGVfb3BzIHsKKwlQVVJH RV9DQUNIRSwKKwlLRUVQX0NBQ0hFLAorfTsKKworc3RhdGljIGJvb2wgZGVidWdfYmIgPSBmYWxz ZTsKK3N0YXRpYyBib29sIHdyaXRlX3BuZyA9IGZhbHNlOworc3RhdGljIGJvb2wgYnVmX2luZm8g PSBmYWxzZTsKKworc3RhdGljIHZvaWQgKmFsbG9jX2FsaWduZWQodWludDY0X3Qgc2l6ZSkKK3sK Kwl2b2lkICpwOworCisJaWd0X2Fzc2VydF9lcShwb3NpeF9tZW1hbGlnbigmcCwgMTYsIHNpemUp LCAwKTsKKworCXJldHVybiBwOworfQorCitzdGF0aWMgdm9pZCBmaWxsX2J1ZihzdHJ1Y3QgaW50 ZWxfYnVmICpidWYsIHVpbnQ4X3QgY29sb3IpCit7CisJdWludDhfdCAqcHRyOworCWludCBpOTE1 ID0gYnVmX29wc19nZXRfZmQoYnVmLT5ib3BzKTsKKwlpbnQgaTsKKworCXB0ciA9IGdlbV9tbWFw X19kZXZpY2VfY29oZXJlbnQoaTkxNSwgYnVmLT5oYW5kbGUsIDAsIGJ1Zi0+c2l6ZSwKKwkJCQkJ UFJPVF9XUklURSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgYnVmLT5zaXplOyBpKyspCisJCXB0cltp XSA9IGNvbG9yOworCisJbXVubWFwKHB0ciwgYnVmLT5zaXplKTsKK30KKworc3RhdGljIHZvaWQg Y2hlY2tfYnVmKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDhfdCBjb2xvcikKK3sKKwl1aW50 OF90ICpwdHI7CisJaW50IGk5MTUgPSBidWZfb3BzX2dldF9mZChidWYtPmJvcHMpOworCWludCBp OworCisJcHRyID0gZ2VtX21tYXBfX2RldmljZV9jb2hlcmVudChpOTE1LCBidWYtPmhhbmRsZSwg MCwgYnVmLT5zaXplLAorCQkJCQlQUk9UX1JFQUQpOworCisJZm9yIChpID0gMDsgaSA8IGJ1Zi0+ c2l6ZTsgaSsrKQorCQlpZ3RfYXNzZXJ0KHB0cltpXSA9PSBjb2xvcik7CisKKwltdW5tYXAocHRy LCBidWYtPnNpemUpOworfQorCisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKK2NyZWF0ZV9i dWYoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDhfdCBj b2xvcikKK3sKKwlzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CisKKwlidWYgPSBjYWxsb2MoMSwgc2l6 ZW9mKCpidWYpKTsKKwlpZ3RfYXNzZXJ0KGJ1Zik7CisKKwlpbnRlbF9idWZfaW5pdChib3BzLCBi dWYsIHdpZHRoLzQsIGhlaWdodCwgMzIsIDAsIEk5MTVfVElMSU5HX05PTkUsIDApOworCWZpbGxf YnVmKGJ1ZiwgY29sb3IpOworCisJcmV0dXJuIGJ1ZjsKK30KKworc3RhdGljIHZvaWQgcHJpbnRf YnVmKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwl1aW50OF90 ICpwdHI7CisJaW50IGk5MTUgPSBidWZfb3BzX2dldF9mZChidWYtPmJvcHMpOworCisJcHRyID0g Z2VtX21tYXBfX2RldmljZV9jb2hlcmVudChpOTE1LCBidWYtPmhhbmRsZSwgMCwgYnVmLT5zaXpl LAorCQkJCQlQUk9UX1JFQUQpOworCWlndF9kZWJ1ZygiWyVzXSBCdWYgaGFuZGxlOiAlZCwgc2l6 ZTogJWQsIHY6IDB4JTAyeFxuIiwgbmFtZSwKKwkJICBidWYtPmhhbmRsZSwgYnVmLT5zaXplLCBw dHJbMF0pOworCW11bm1hcChwdHIsIGJ1Zi0+c2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkIHNpbXBs ZV9iYihzdHJ1Y3QgYnVmX29wcyAqYm9wcykKK3sKKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2Zk KGJvcHMpOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCXVpbnQzMl90IGN0eDsKKworCWdlbV9y ZXF1aXJlX2NvbnRleHRzKGk5MTUpOworCisJY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUp OworCWliYiA9IGludGVsX2JiX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCWlmIChkZWJ1Z19i YikKKwkJaW50ZWxfYmJfc2V0X2RlYnVnKGliYiwgdHJ1ZSk7CisKKwlpbnRlbF9iYl9vdXQoaWJi LCBNSV9CQVRDSF9CVUZGRVJfRU5EKTsKKwlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA4KTsKKwor CWludGVsX2JiX2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwKKwkJICAgICAgSTkxNV9F WEVDX0RFRkFVTFQgfCBJOTE1X0VYRUNfTk9fUkVMT0MsIHRydWUpOworCisJLyogQ2hlY2sgd2Un cmUgc2FmZSB3aXRoIHJlc2V0IGFuZCBubyBkb3VibGUtZnJlZSB3aWxsIG9jY3VyICovCisJaW50 ZWxfYmJfcmVzZXQoaWJiLCB0cnVlKTsKKwlpbnRlbF9iYl9yZXNldChpYmIsIGZhbHNlKTsKKwlp bnRlbF9iYl9yZXNldChpYmIsIHRydWUpOworCisJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hf QlVGRkVSX0VORCk7CisJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgOCk7CisKKwlpbnRlbF9iYl9l eGVjX3dpdGhfY29udGV4dChpYmIsIGludGVsX2JiX29mZnNldChpYmIpLCBjdHgsCisJCQkJICAg STkxNV9FWEVDX0RFRkFVTFQgfCBJOTE1X0VYRUNfTk9fUkVMT0MsIHRydWUpOworCisJaW50ZWxf YmJfZGVzdHJveShpYmIpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3R4KTsKK30KKwor c3RhdGljIHZvaWQgX19lbWl0X2JsaXQoc3RydWN0IGludGVsX2JiICppYmIsCisJCQlzdHJ1Y3Qg aW50ZWxfYnVmICpzcmMsIHN0cnVjdCBpbnRlbF9idWYgKmRzdCkKK3sKKwlib29sIGhhc182NGJf cmVsb2M7CisKKwloYXNfNjRiX3JlbG9jID0gaWJiLT5nZW4gPj0gODsKKworCWludGVsX2JiX291 dChpYmIsCisJCSAgICAgWFlfU1JDX0NPUFlfQkxUX0NNRCB8CisJCSAgICAgWFlfU1JDX0NPUFlf QkxUX1dSSVRFX0FMUEhBIHwKKwkJICAgICBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfUkdCIHwKKwkJ ICAgICAoNiArIDIgKiBoYXNfNjRiX3JlbG9jKSk7CisJaW50ZWxfYmJfb3V0KGliYiwgMyA8PCAy NCB8IDB4Y2MgPDwgMTYgfCBkc3QtPnN0cmlkZSk7CisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJ aW50ZWxfYmJfb3V0KGliYiwgaW50ZWxfYnVmX2hlaWdodChkc3QpIDw8IDE2IHwgaW50ZWxfYnVm X3dpZHRoKGRzdCkpOworCWludGVsX2JiX2VtaXRfcmVsb2NfZmVuY2VkKGliYiwgZHN0LT5oYW5k bGUsCisJCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwKKwkJCQkgICBJOTE1X0dFTV9ET01B SU5fUkVOREVSLAorCQkJCSAgIDAsIDB4MCk7CisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJaW50 ZWxfYmJfb3V0KGliYiwgc3JjLT5zdHJpZGUpOworCWludGVsX2JiX2VtaXRfcmVsb2NfZmVuY2Vk KGliYiwgc3JjLT5oYW5kbGUsCisJCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCwKKwkJ CQkgICAwLCAweDApOworCisJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7 CisJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgOCk7Cit9CisKK3N0YXRpYyB2b2lkIGJsaXQoc3Ry dWN0IGJ1Zl9vcHMgKmJvcHMsCisJCSBlbnVtIHJlbG9jX29iamVjdHMgcmVsb2Nfb2JqLAorCQkg ZW51bSBvYmpfY2FjaGVfb3BzIGNhY2hlX29wKQoreworCWludCBpOTE1ID0gYnVmX29wc19nZXRf ZmQoYm9wcyk7CisJc3RydWN0IGludGVsX2JiICppYmI7CisJc3RydWN0IGludGVsX2J1ZiAqc3Jj LCAqZHN0OworCXVpbnQ2NF90IHBvZmZfYmIsIHBvZmZfc3JjLCBwb2ZmX2RzdDsKKwl1aW50NjRf dCBwb2ZmMl9iYiwgcG9mZjJfc3JjLCBwb2ZmMl9kc3Q7CisJdWludDY0X3QgZmxhZ3MgPSBJOTE1 X0VYRUNfQkxUOworCWJvb2wgcHVyZ2VfY2FjaGUgPSBjYWNoZV9vcCA9PSBQVVJHRV9DQUNIRSA/ IHRydWUgOiBmYWxzZTsKKwlib29sIGRvX3JlbG9jcyA9IHJlbG9jX29iaiA9PSBSRUxPQyA/IHRy dWUgOiBmYWxzZTsKKworCXNyYyA9IGNyZWF0ZV9idWYoYm9wcywgV0lEVEgsIEhFSUdIVCwgQ09M T1JfQ0MpOworCWRzdCA9IGNyZWF0ZV9idWYoYm9wcywgV0lEVEgsIEhFSUdIVCwgQ09MT1JfMDAp OworCisJaWYgKGJ1Zl9pbmZvKSB7CisJCXByaW50X2J1ZihzcmMsICJzcmMiKTsKKwkJcHJpbnRf YnVmKGRzdCwgImRzdCIpOworCX0KKworCWlmIChkb19yZWxvY3MpIHsKKwkJaWJiID0gaW50ZWxf YmJfY3JlYXRlX3dpdGhfcmVsb2NzKGk5MTUsIFBBR0VfU0laRSk7CisJfSBlbHNlIHsKKwkJaWJi ID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisJCWZsYWdzIHw9IEk5MTVfRVhF Q19OT19SRUxPQzsKKwl9CisKKwlpZiAoZGVidWdfYmIpCisJCWludGVsX2JiX3NldF9kZWJ1Zyhp YmIsIHRydWUpOworCisJX19lbWl0X2JsaXQoaWJiLCBzcmMsIGRzdCk7CisKKwkvKiBXZSBleHBl Y3QgaW5pdGlhbCBhZGRyZXNzZXMgYXJlIHplcm9lZCBmb3IgcmVsb2NzICovCisJaWYgKHJlbG9j X29iaiA9PSBSRUxPQykgeworCQlpZ3RfYXNzZXJ0KGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0 KGliYiwgaWJiLT5oYW5kbGUpID09IDApOworCQlpZ3RfYXNzZXJ0KGludGVsX2JiX2dldF9vYmpl Y3Rfb2Zmc2V0KGliYiwgc3JjLT5oYW5kbGUpID09IDApOworCQlpZ3RfYXNzZXJ0KGludGVsX2Ji X2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgZHN0LT5oYW5kbGUpID09IDApOworCX0KKworCWludGVs X2JiX2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwgZmxhZ3MsIHRydWUpOworCWNoZWNr X2J1Zihkc3QsIENPTE9SX0NDKTsKKworCXBvZmZfYmIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29m ZnNldChpYmIsIGliYi0+aGFuZGxlKTsKKwlwb2ZmX3NyYyA9IGludGVsX2JiX2dldF9vYmplY3Rf b2Zmc2V0KGliYiwgc3JjLT5oYW5kbGUpOworCXBvZmZfZHN0ID0gaW50ZWxfYmJfZ2V0X29iamVj dF9vZmZzZXQoaWJiLCBkc3QtPmhhbmRsZSk7CisJaWd0X2RlYnVnKCJiYiAgcHJlc3VtZWQgb2Zm c2V0OiAweCVseFxuIiwgcG9mZl9iYik7CisJaWd0X2RlYnVnKCJzcmMgcHJlc3VtZWQgb2Zmc2V0 OiAweCVseFxuIiwgcG9mZl9zcmMpOworCWlndF9kZWJ1ZygiZHN0IHByZXN1bWVkIG9mZnNldDog MHglbHhcbiIsIHBvZmZfZHN0KTsKKworCWludGVsX2JiX3Jlc2V0KGliYiwgcHVyZ2VfY2FjaGUp OworCisJZmlsbF9idWYoc3JjLCBDT0xPUl83Nyk7CisJZmlsbF9idWYoZHN0LCBDT0xPUl8wMCk7 CisKKwlfX2VtaXRfYmxpdChpYmIsIHNyYywgZHN0KTsKKworCXBvZmYyX2JiID0gaW50ZWxfYmJf Z2V0X29iamVjdF9vZmZzZXQoaWJiLCBpYmItPmhhbmRsZSk7CisJcG9mZjJfc3JjID0gaW50ZWxf YmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBzcmMtPmhhbmRsZSk7CisJcG9mZjJfZHN0ID0gaW50 ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBkc3QtPmhhbmRsZSk7CisJaWd0X2RlYnVnKCJi YjIgIHByZXN1bWVkIG9mZnNldDogMHglbHhcbiIsIHBvZmYyX2JiKTsKKwlpZ3RfZGVidWcoInNy YzIgcHJlc3VtZWQgb2Zmc2V0OiAweCVseFxuIiwgcG9mZjJfc3JjKTsKKwlpZ3RfZGVidWcoImRz dDIgcHJlc3VtZWQgb2Zmc2V0OiAweCVseFxuIiwgcG9mZjJfZHN0KTsKKwlpZiAocHVyZ2VfY2Fj aGUpIHsKKwkJaWYgKGRvX3JlbG9jcykgeworCQkJaWd0X2Fzc2VydChwb2ZmMl9iYiA9PSAwKTsK KwkJCWlndF9hc3NlcnQocG9mZjJfc3JjID09IDApOworCQkJaWd0X2Fzc2VydChwb2ZmMl9kc3Qg PT0gMCk7CisJCX0gZWxzZSB7CisJCQlpZ3RfYXNzZXJ0KHBvZmZfYmIgIT0gcG9mZjJfYmIpOwor CQkJaWd0X2Fzc2VydChwb2ZmX3NyYyAhPSBwb2ZmMl9zcmMpOworCQkJaWd0X2Fzc2VydChwb2Zm X2RzdCAhPSBwb2ZmMl9kc3QpOworCQl9CisJfSBlbHNlIHsKKwkJaWd0X2Fzc2VydChwb2ZmX2Ji ID09IHBvZmYyX2JiKTsKKwkJaWd0X2Fzc2VydChwb2ZmX3NyYyA9PSBwb2ZmMl9zcmMpOworCQlp Z3RfYXNzZXJ0KHBvZmZfZHN0ID09IHBvZmYyX2RzdCk7CisJfQorCisJaW50ZWxfYmJfZXhlYyhp YmIsIGludGVsX2JiX29mZnNldChpYmIpLCBmbGFncywgdHJ1ZSk7CisJY2hlY2tfYnVmKGRzdCwg Q09MT1JfNzcpOworCisJcG9mZjJfc3JjID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJi LCBzcmMtPmhhbmRsZSk7CisJcG9mZjJfZHN0ID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQo aWJiLCBkc3QtPmhhbmRsZSk7CisJaWd0X2Fzc2VydChwb2ZmX3NyYyA9PSBwb2ZmMl9zcmMpOwor CWlndF9hc3NlcnQocG9mZl9kc3QgPT0gcG9mZjJfZHN0KTsKKworCWludGVsX2JiX2Rlc3Ryb3ko aWJiKTsKK30KKworc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChzdHJ1Y3QgYnVmX29wcyAq Ym9wcywKKwkJCSAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAorCQkJICAgICBpbnQgd2lkdGgs IGludCBoZWlnaHQsCisJCQkgICAgIHVpbnQzMl90IHJlcV90aWxpbmcsCisJCQkgICAgIGVudW0g aTkxNV9jb21wcmVzc2lvbiBjb21wcmVzc2lvbikKK3sKKwlpbnQgYnBwID0gMzI7CisKKwlpbnRl bF9idWZfaW5pdChib3BzLCBidWYsIHdpZHRoLCBoZWlnaHQsIGJwcCwgMCwKKwkJICAgICAgIHJl cV90aWxpbmcsIGNvbXByZXNzaW9uKTsKKworCWlndF9hc3NlcnQoaW50ZWxfYnVmX3dpZHRoKGJ1 ZikgPT0gd2lkdGgpOworCWlndF9hc3NlcnQoaW50ZWxfYnVmX2hlaWdodChidWYpID09IGhlaWdo dCk7Cit9CisKK3N0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2RyYXdfcGF0dGVybihzdHJ1Y3QgYnVm X29wcyAqYm9wcywKKwkJCQkgICAgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKKwkJCQkgICAgIGlu dCB4LCBpbnQgeSwgaW50IHcsIGludCBoLAorCQkJCSAgICAgaW50IGN4LCBpbnQgY3ksIGludCBj dywgaW50IGNoLAorCQkJCSAgICAgYm9vbCB1c2VfYWx0ZXJuYXRlX2NvbG9ycykKK3sKKwljYWly b19zdXJmYWNlX3QgKnN1cmZhY2U7CisJY2Fpcm9fcGF0dGVybl90ICpwYXQ7CisJY2Fpcm9fdCAq Y3I7CisJdm9pZCAqbGluZWFyOworCisJbGluZWFyID0gYWxsb2NfYWxpZ25lZChidWYtPnNpemUp OworCisJc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGxpbmVh ciwKKwkJCQkJCSAgICAgIENBSVJPX0ZPUk1BVF9SR0IyNCwKKwkJCQkJCSAgICAgIGludGVsX2J1 Zl93aWR0aChidWYpLAorCQkJCQkJICAgICAgaW50ZWxfYnVmX2hlaWdodChidWYpLAorCQkJCQkJ ICAgICAgYnVmLT5zdHJpZGUpOworCisJY3IgPSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7CisKKwlj YWlyb19yZWN0YW5nbGUoY3IsIGN4LCBjeSwgY3csIGNoKTsKKwljYWlyb19jbGlwKGNyKTsKKwor CXBhdCA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX21lc2goKTsKKwljYWlyb19tZXNoX3BhdHRlcm5f YmVnaW5fcGF0Y2gocGF0KTsKKwljYWlyb19tZXNoX3BhdHRlcm5fbW92ZV90byhwYXQsIHgsICAg eSk7CisJY2Fpcm9fbWVzaF9wYXR0ZXJuX2xpbmVfdG8ocGF0LCB4K3csIHkpOworCWNhaXJvX21l c2hfcGF0dGVybl9saW5lX3RvKHBhdCwgeCt3LCB5K2gpOworCWNhaXJvX21lc2hfcGF0dGVybl9s aW5lX3RvKHBhdCwgeCwgICB5K2gpOworCWlmICh1c2VfYWx0ZXJuYXRlX2NvbG9ycykgeworCQlj YWlyb19tZXNoX3BhdHRlcm5fc2V0X2Nvcm5lcl9jb2xvcl9yZ2IocGF0LCAwLCAwLjAsIDEuMCwg MS4wKTsKKwkJY2Fpcm9fbWVzaF9wYXR0ZXJuX3NldF9jb3JuZXJfY29sb3JfcmdiKHBhdCwgMSwg MS4wLCAwLjAsIDEuMCk7CisJCWNhaXJvX21lc2hfcGF0dGVybl9zZXRfY29ybmVyX2NvbG9yX3Jn YihwYXQsIDIsIDEuMCwgMS4wLCAwLjApOworCQljYWlyb19tZXNoX3BhdHRlcm5fc2V0X2Nvcm5l cl9jb2xvcl9yZ2IocGF0LCAzLCAwLjAsIDAuMCwgMC4wKTsKKwl9IGVsc2UgeworCQljYWlyb19t ZXNoX3BhdHRlcm5fc2V0X2Nvcm5lcl9jb2xvcl9yZ2IocGF0LCAwLCAxLjAsIDAuMCwgMC4wKTsK KwkJY2Fpcm9fbWVzaF9wYXR0ZXJuX3NldF9jb3JuZXJfY29sb3JfcmdiKHBhdCwgMSwgMC4wLCAx LjAsIDAuMCk7CisJCWNhaXJvX21lc2hfcGF0dGVybl9zZXRfY29ybmVyX2NvbG9yX3JnYihwYXQs IDIsIDAuMCwgMC4wLCAxLjApOworCQljYWlyb19tZXNoX3BhdHRlcm5fc2V0X2Nvcm5lcl9jb2xv cl9yZ2IocGF0LCAzLCAxLjAsIDEuMCwgMS4wKTsKKwl9CisJY2Fpcm9fbWVzaF9wYXR0ZXJuX2Vu ZF9wYXRjaChwYXQpOworCisJY2Fpcm9fcmVjdGFuZ2xlKGNyLCB4LCB5LCB3LCBoKTsKKwljYWly b19zZXRfc291cmNlKGNyLCBwYXQpOworCWNhaXJvX2ZpbGwoY3IpOworCWNhaXJvX3BhdHRlcm5f ZGVzdHJveShwYXQpOworCisJY2Fpcm9fZGVzdHJveShjcik7CisKKwljYWlyb19zdXJmYWNlX2Rl c3Ryb3koc3VyZmFjZSk7CisKKwlsaW5lYXJfdG9faW50ZWxfYnVmKGJvcHMsIGJ1ZiwgbGluZWFy KTsKKworCWZyZWUobGluZWFyKTsKK30KKworc3RhdGljIGJvb2wgY29tcGFyZV9idWZzKHN0cnVj dCBpbnRlbF9idWYgKmJ1ZjEsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZjIpCit7CisJdm9pZCAqcHRy MSwgKnB0cjI7CisJaW50IGZkMSwgZmQyLCByZXQ7CisKKwlpZ3RfYXNzZXJ0KGJ1ZjEtPnNpemUg PT0gYnVmMi0+c2l6ZSk7CisKKwlmZDEgPSBidWZfb3BzX2dldF9mZChidWYxLT5ib3BzKTsKKwlm ZDIgPSBidWZfb3BzX2dldF9mZChidWYyLT5ib3BzKTsKKworCXB0cjEgPSBnZW1fbW1hcF9fZGV2 aWNlX2NvaGVyZW50KGZkMSwgYnVmMS0+aGFuZGxlLCAwLCBidWYxLT5zaXplLAorCQkJCQkgUFJP VF9SRUFEKTsKKwlwdHIyID0gZ2VtX21tYXBfX2RldmljZV9jb2hlcmVudChmZDIsIGJ1ZjItPmhh bmRsZSwgMCwgYnVmMi0+c2l6ZSwKKwkJCQkJIFBST1RfUkVBRCk7CisJcmV0ID0gbWVtY21wKHB0 cjEsIHB0cjIsIGJ1ZjEtPnNpemUpOworCisJbXVubWFwKHB0cjEsIGJ1ZjEtPnNpemUpOworCW11 bm1hcChwdHIyLCBidWYyLT5zaXplKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lk IGRvX2ludGVsX2JiX2JsaXQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMpCit7CisJc3RydWN0IGludGVs X2JiICppYmI7CisJY29uc3QgaW50IHdpZHRoID0gMTAyNDsKKwljb25zdCBpbnQgaGVpZ2h0ID0g MTAyNDsKKwlzdHJ1Y3QgaW50ZWxfYnVmIHNyYywgZHN0LCBmaW5hbDsKKwlpbnQgaTkxNSA9IGJ1 Zl9vcHNfZ2V0X2ZkKGJvcHMpOworCisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0Vf U0laRSk7CisJaWYgKGRlYnVnX2JiKQorCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJiLCB0cnVlKTsK KworCXNjcmF0Y2hfYnVmX2luaXQoYm9wcywgJnNyYywgd2lkdGgsIGhlaWdodCwgSTkxNV9USUxJ TkdfTk9ORSwKKwkJCSBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOworCXNjcmF0Y2hfYnVmX2luaXQo Ym9wcywgJmRzdCwgd2lkdGgsIGhlaWdodCwgSTkxNV9USUxJTkdfWSwKKwkJCSBJOTE1X0NPTVBS RVNTSU9OX05PTkUpOworCXNjcmF0Y2hfYnVmX2luaXQoYm9wcywgJmZpbmFsLCB3aWR0aCwgaGVp Z2h0LCBJOTE1X1RJTElOR19OT05FLAorCQkJIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CisKKwlp ZiAoYnVmX2luZm8pIHsKKwkJaW50ZWxfYnVmX3ByaW50KCZzcmMpOworCQlpbnRlbF9idWZfcHJp bnQoJmRzdCk7CisJfQorCisJc2NyYXRjaF9idWZfZHJhd19wYXR0ZXJuKGJvcHMsICZzcmMsCisJ CQkJIDAsIDAsIHdpZHRoLCBoZWlnaHQsCisJCQkJIDAsIDAsIHdpZHRoLCBoZWlnaHQsIDApOwor CisJaW50ZWxfYmJfYmx0X2NvcHkoaWJiLAorCQkJICAmc3JjLCAwLCAwLCBzcmMuc3RyaWRlLAor CQkJICAmZHN0LCAwLCAwLCBkc3Quc3RyaWRlLAorCQkJICBpbnRlbF9idWZfd2lkdGgoJmRzdCks CisJCQkgIGludGVsX2J1Zl9oZWlnaHQoJmRzdCksCisJCQkgIGRzdC5icHApOworCisJaW50ZWxf YmJfYmx0X2NvcHkoaWJiLAorCQkJICAmZHN0LCAwLCAwLCBkc3Quc3RyaWRlLAorCQkJICAmZmlu YWwsIDAsIDAsIGZpbmFsLnN0cmlkZSwKKwkJCSAgaW50ZWxfYnVmX3dpZHRoKCZkc3QpLAorCQkJ ICBpbnRlbF9idWZfaGVpZ2h0KCZkc3QpLAorCQkJICBkc3QuYnBwKTsKKworCWludGVsX2JiX2Rl c3Ryb3koaWJiKTsKKworCWlmICh3cml0ZV9wbmcpIHsKKwkJaW50ZWxfYnVmX3dyaXRlX3RvX3Bu Zygmc3JjLCAiYmJfYmxpdF9zcmNfdGlsaW5nX25vbmUucG5nIik7CisJCWludGVsX2J1Zl93cml0 ZV90b19wbmcoJmRzdCwgImJiX2JsaXRfZHN0X3RpbGluZ195LnBuZyIpOworCQlpbnRlbF9idWZf d3JpdGVfdG9fcG5nKCZmaW5hbCwgImJiX2JsaXRfZmluYWxfdGlsaW5nX25vbmUucG5nIik7CisJ fQorCisJaWd0X2Fzc2VydChjb21wYXJlX2J1ZnMoJnNyYywgJmRzdCkgIT0gMCk7CisJaWd0X2Fz c2VydChjb21wYXJlX2J1ZnMoJnNyYywgJmZpbmFsKSA9PSAwKTsKKworCWludGVsX2J1Zl9jbG9z ZShib3BzLCAmc3JjKTsKKwlpbnRlbF9idWZfY2xvc2UoYm9wcywgJmRzdCk7CisJaW50ZWxfYnVm X2Nsb3NlKGJvcHMsICZmaW5hbCk7Cit9CisKKworc3RhdGljIHZvaWQgb2Zmc2V0X2NvbnRyb2wo c3RydWN0IGJ1Zl9vcHMgKmJvcHMpCit7CisJaW50IGk5MTUgPSBidWZfb3BzX2dldF9mZChib3Bz KTsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsICpkc3Qx LCAqZHN0MiwgKmRzdDM7CisJdWludDY0X3QgcG9mZl9zcmMsIHBvZmZfZHN0MSwgcG9mZl9kc3Qy OworCisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisJaWYgKGRlYnVn X2JiKQorCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJiLCB0cnVlKTsKKworCXNyYyA9IGNyZWF0ZV9i dWYoYm9wcywgV0lEVEgsIEhFSUdIVCwgQ09MT1JfQ0MpOworCWRzdDEgPSBjcmVhdGVfYnVmKGJv cHMsIFdJRFRILCBIRUlHSFQsIENPTE9SXzAwKTsKKwlkc3QyID0gY3JlYXRlX2J1Zihib3BzLCBX SURUSCwgSEVJR0hULCBDT0xPUl83Nyk7CisKKwlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgc3Jj LT5oYW5kbGUsIHNyYy0+YWRkci5vZmZzZXQsIGZhbHNlKTsKKwlpbnRlbF9iYl9hZGRfb2JqZWN0 KGliYiwgZHN0MS0+aGFuZGxlLCBkc3QxLT5hZGRyLm9mZnNldCwgdHJ1ZSk7CisJaW50ZWxfYmJf YWRkX29iamVjdChpYmIsIGRzdDItPmhhbmRsZSwgZHN0Mi0+YWRkci5vZmZzZXQsIHRydWUpOwor CisJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7CisJaW50ZWxfYmJfcHRy X2FsaWduKGliYiwgOCk7CisKKwlpbnRlbF9iYl9leGVjKGliYiwgaW50ZWxfYmJfb2Zmc2V0KGli YiksCisJCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLCBmYWxz ZSk7CisKKwlpZiAoYnVmX2luZm8pIHsKKwkJcHJpbnRfYnVmKHNyYywgInNyYyAiKTsKKwkJcHJp bnRfYnVmKGRzdDEsICJkc3QxIik7CisJCXByaW50X2J1Zihkc3QyLCAiZHN0MiIpOworCX0KKwor CWlndF9hc3NlcnQoaW50ZWxfYmJfb2JqZWN0X29mZnNldF90b19idWYoaWJiLCBzcmMpID09IHRy dWUpOworCWlndF9hc3NlcnQoaW50ZWxfYmJfb2JqZWN0X29mZnNldF90b19idWYoaWJiLCBkc3Qx KSA9PSB0cnVlKTsKKwlpZ3RfYXNzZXJ0KGludGVsX2JiX29iamVjdF9vZmZzZXRfdG9fYnVmKGli YiwgZHN0MikgPT0gdHJ1ZSk7CisJcG9mZl9zcmMgPSBzcmMtPmFkZHIub2Zmc2V0OworCXBvZmZf ZHN0MSA9IGRzdDEtPmFkZHIub2Zmc2V0OworCXBvZmZfZHN0MiA9IGRzdDItPmFkZHIub2Zmc2V0 OworCWludGVsX2JiX3Jlc2V0KGliYiwgdHJ1ZSk7CisKKwlkc3QzID0gY3JlYXRlX2J1Zihib3Bz LCBXSURUSCwgSEVJR0hULCBDT0xPUl8zMyk7CisJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGRz dDMtPmhhbmRsZSwgZHN0My0+YWRkci5vZmZzZXQsIHRydWUpOworCWludGVsX2JiX2FkZF9vYmpl Y3QoaWJiLCBzcmMtPmhhbmRsZSwgc3JjLT5hZGRyLm9mZnNldCwgZmFsc2UpOworCWludGVsX2Ji X2FkZF9vYmplY3QoaWJiLCBkc3QxLT5oYW5kbGUsIGRzdDEtPmFkZHIub2Zmc2V0LCB0cnVlKTsK KwlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgZHN0Mi0+aGFuZGxlLCBkc3QyLT5hZGRyLm9mZnNl dCwgdHJ1ZSk7CisKKwlpbnRlbF9iYl9vdXQoaWJiLCBNSV9CQVRDSF9CVUZGRVJfRU5EKTsKKwlp bnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA4KTsKKworCWludGVsX2JiX2V4ZWMoaWJiLCBpbnRlbF9i Yl9vZmZzZXQoaWJiKSwKKwkJICAgICAgSTkxNV9FWEVDX0RFRkFVTFQgfCBJOTE1X0VYRUNfTk9f UkVMT0MsIGZhbHNlKTsKKwlpbnRlbF9iYl9zeW5jKGliYik7CisKKwlpZ3RfYXNzZXJ0KGludGVs X2JiX29iamVjdF9vZmZzZXRfdG9fYnVmKGliYiwgc3JjKSA9PSB0cnVlKTsKKwlpZ3RfYXNzZXJ0 KGludGVsX2JiX29iamVjdF9vZmZzZXRfdG9fYnVmKGliYiwgZHN0MSkgPT0gdHJ1ZSk7CisJaWd0 X2Fzc2VydChpbnRlbF9iYl9vYmplY3Rfb2Zmc2V0X3RvX2J1ZihpYmIsIGRzdDIpID09IHRydWUp OworCWlndF9hc3NlcnQoaW50ZWxfYmJfb2JqZWN0X29mZnNldF90b19idWYoaWJiLCBkc3QzKSA9 PSB0cnVlKTsKKwlpZ3RfYXNzZXJ0KHBvZmZfc3JjID09IHNyYy0+YWRkci5vZmZzZXQpOworCWln dF9hc3NlcnQocG9mZl9kc3QxID09IGRzdDEtPmFkZHIub2Zmc2V0KTsKKwlpZ3RfYXNzZXJ0KHBv ZmZfZHN0MiA9PSBkc3QyLT5hZGRyLm9mZnNldCk7CisKKwlpZiAoYnVmX2luZm8pIHsKKwkJcHJp bnRfYnVmKHNyYywgInNyYyAiKTsKKwkJcHJpbnRfYnVmKGRzdDEsICJkc3QxIik7CisJCXByaW50 X2J1Zihkc3QyLCAiZHN0MiIpOworCX0KKworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKK30KKwor c3RhdGljIGludCBvcHRfaGFuZGxlcihpbnQgb3B0LCBpbnQgb3B0X2luZGV4LCB2b2lkICpkYXRh KQoreworCXN3aXRjaCAob3B0KSB7CisJY2FzZSAnZCc6CisJCWRlYnVnX2JiID0gdHJ1ZTsKKwkJ YnJlYWs7CisJY2FzZSAncCc6CisJCXdyaXRlX3BuZyA9IHRydWU7CisJCWJyZWFrOworCWNhc2Ug J2knOgorCQlidWZfaW5mbyA9IHRydWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiBJ R1RfT1BUX0hBTkRMRVJfRVJST1I7CisJfQorCisJcmV0dXJuIElHVF9PUFRfSEFORExFUl9TVUND RVNTOworfQorCitjb25zdCBjaGFyICpoZWxwX3N0ciA9CisJIiAgLWRcdERlYnVnIGJiXG4iCisJ IiAgLXBcdFdyaXRlIHN1cmZhY2VzIHRvIHBuZ1xuIgorCSIgIC1pXHRQcmludCBidWZmZXIgaW5m b1xuIgorCTsKKworaWd0X21haW5fYXJncygiZHBpIiwgTlVMTCwgaGVscF9zdHIsIG9wdF9oYW5k bGVyLCBOVUxMKQoreworCWludCBpOTE1OworCXN0cnVjdCBidWZfb3BzICpib3BzOworCisJaWd0 X2ZpeHR1cmUgeworCQlpOTE1ID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7CisJCWJv cHMgPSBidWZfb3BzX2NyZWF0ZShpOTE1KTsKKwl9CisKKwlpZ3Rfc3VidGVzdCgic2ltcGxlLWJi IikKKwkJc2ltcGxlX2JiKGJvcHMpOworCisJaWd0X3N1YnRlc3QoImJsaXQtbm9yZWxvYy1rZWVw LWNhY2hlIikKKwkJYmxpdChib3BzLCBOT1JFTE9DLCBLRUVQX0NBQ0hFKTsKKworCWlndF9zdWJ0 ZXN0KCJibGl0LXJlbG9jLXB1cmdlLWNhY2hlIikKKwkJYmxpdChib3BzLCBSRUxPQywgUFVSR0Vf Q0FDSEUpOworCisJaWd0X3N1YnRlc3QoImJsaXQtbm9yZWxvYy1wdXJnZS1jYWNoZSIpCisJCWJs aXQoYm9wcywgTk9SRUxPQywgUFVSR0VfQ0FDSEUpOworCisJaWd0X3N1YnRlc3QoImJsaXQtcmVs b2Mta2VlcC1jYWNoZSIpCisJCWJsaXQoYm9wcywgUkVMT0MsIEtFRVBfQ0FDSEUpOworCisJaWd0 X3N1YnRlc3QoImludGVsLWJiLWJsaXQiKQorCQlkb19pbnRlbF9iYl9ibGl0KGJvcHMpOworCisJ aWd0X3N1YnRlc3QoIm9mZnNldC1jb250cm9sIikKKwkJb2Zmc2V0X2NvbnRyb2woYm9wcyk7CisK KwlpZ3RfZml4dHVyZSB7CisJCWJ1Zl9vcHNfZGVzdHJveShib3BzKTsKKwkJY2xvc2UoaTkxNSk7 CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWls ZAppbmRleCAyODA5MTc5NC4uMDZhNDdlMzcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lc29uLmJ1aWxk CisrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCkBAIC0xMDMsNiArMTAzLDcgQEAgdGVzdF9wcm9ncyA9 IFsKIF0KIAogaTkxNV9wcm9ncyA9IFsKKwknYXBpX2ludGVsX2JiJywKIAknZ2VuM19taXhlZF9i bGl0cycsCiAJJ2dlbjNfcmVuZGVyX2xpbmVhcl9ibGl0cycsCiAJJ2dlbjNfcmVuZGVyX21peGVk X2JsaXRzJywKLS0gCjIuMjYuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Qt ZGV2Cg==