From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9C8766E1F6 for ; Tue, 6 Mar 2018 16:52:22 +0000 (UTC) From: Imre Deak Date: Tue, 6 Mar 2018 18:52:15 +0200 Message-Id: <20180306165215.16490-5-imre.deak@intel.com> In-Reply-To: <20180306165215.16490-1-imre.deak@intel.com> References: <20180306165215.16490-1-imre.deak@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v2 4/4] kms_plane: Add clipping subtests 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: =?UTF-8?q?Juha-Pekka=20Heikkil=C3=A4?= List-ID: QWRkIHBsYW5lIGNsaXBwaW5nIHN1YnRlc3RzIGRpc3BsYXlpbmcgYSBzaW5nbGUgY2xpcHBlZCBw bGFuZSwgd2l0aCB0aGUKZm9sbG93aW5nIHRlc3QgY2FzZXM6CmEpIHBsYW5lIGNvdmVyaW5nIHRo ZSB3aG9sZSBzY3JlZW4sIHNvIHRoYXQgY2xpcHBpbmcgaXMgZG9uZSBhdCBhbGwgNAogICBzY3Jl ZW4gZWRnZXMKYikgcGxhbmUgYXQgZWl0aGVyIG9mIHRoZSA0IGNvcm5lcnMgb2YgdGhlIHNjcmVl biBjbGlwcGVkLCBzbyB0aGF0IGEKICAgNHg0IHBpeGVsIHBhcnQgb2YgdGhlIHBsYW5lIGlzIHZp c2libGUKYykgcGxhbmUgYXQgZWl0aGVyIG9mIHRoZSA0IGNvcm5lcnMgb2YgdGhlIHNjcmVlbiBj bGlwcGVkLCBzbyB0aGF0IGEKICAgMngyIHBpeGVsIHBhcnQgb2YgdGhlIHBsYW5lIGlzIHZpc2li bGUKCkVhY2ggb2YgdGhlIGFib3ZlIGNhc2VzIGFyZSB0ZXN0ZWQgd2l0aCBhbGwgc3VwcG9ydGVk IHBsYW5lcywgdGlsaW5nCm1vZGVzLCByb3RhdGlvbiBkZWdyZWVzIGFuZCBkaWZmZXJpbmcgcGl4 ZWwgZm9ybWF0IHNpemVzIChvbmx5IDE2IGJwcAphbmQgMzIgYnBwIGZvciBub3cpLiBXaGlsZSB0 aGUgYSkgYW5kIGIpIGNhc2VzIGFib3ZlIGFyZSBzdXBwb3J0ZWQgb24KYWxsIHBsYXRmb3JtcyBj KSBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIG9uIEdMSyBhbmQgQ05MICh3aGljaCB3YXMgdGhlCnBy aW1hcnkgbW90aXZhdGlvbiBmb3IgdGhpcyB0ZXN0Y2FzZSkuCgp2MjoKLSBBZGQgbWlzc2luZyBy ZXNldCBmb3IgdGhlIG91dHB1dCBwaXBlIGFmdGVyIGZpbmlzaGluZyB0aGUgdGVzdCBmb3IgYQog IGdpdmVuIG91dHB1dCwgZml4aW5nIHRoZQogICJEUC0xIGFuZCBlRFAtMSBhcmUgYm90aCB0cnlp bmcgdG8gdXNlIHBpcGUgQSIgdHlwZSBvZiBlcnJvcnMuCi0gVXNlIC1FUkFOR0UgaW5zdGVhZCBv ZiAtRUlOVkFMIHRvIGNoZWNrIHRoZSByZXR1cm4gY29kZSBmb3IKICB1bnN1cHBvcnRlZCBwbGFu ZSBYIHBvc2l0aW9ucywgYmFzZWQgb24gdGhlIGxhdGVzdCBrZXJuZWwgY29kZS4KLSBBZGQgY29t bWVudCBleHBsYWluaW5nIHRoZSBkZXBlbmRlbmNpZXMgd2hlbiBkb2luZyBhIHVuaXZlcnNhbAog IGNvbW1pdC4KClNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4K Q2M6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+CkNjOiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgpDYzogSnVoYS1QZWtrYSBI ZWlra2lsw6QgPGp1aGEtcGVra2EuaGVpa2tpbGFAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQXJr YWRpdXN6IEhpbGVyIDxhcmthZGl1c3ouaGlsZXJAaW50ZWwuY29tPiAodjEpCi0tLQogdGVzdHMv a21zX3BsYW5lLmMgfCA0NTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNDUxIGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS90ZXN0cy9rbXNfcGxhbmUuYyBiL3Rlc3RzL2ttc19wbGFuZS5jCmluZGV4IDViZDMy NDlhLi4xMjI2YzAwOCAxMDA2NDQKLS0tIGEvdGVzdHMva21zX3BsYW5lLmMKKysrIGIvdGVzdHMv a21zX3BsYW5lLmMKQEAgLTQxLDExICs0MSwzNCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAJaW50IGRy bV9mZDsKIAlpZ3RfZGlzcGxheV90IGRpc3BsYXk7CiAJaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3Jj OworCXVpbnQzMl90IGRldmlkOworCXVpbnQ2NF90IG1heF9jdXJ3OworCXVpbnQ2NF90IG1heF9j dXJoOwogfSBkYXRhX3Q7CiAKIHN0YXRpYyBjb2xvcl90IHJlZCAgID0geyAxLjBmLCAwLjBmLCAw LjBmIH07CiBzdGF0aWMgY29sb3JfdCBncmVlbiA9IHsgMC4wZiwgMS4wZiwgMC4wZiB9Oworc3Rh dGljIGNvbG9yX3QgeWVsbG93ID0geyAxLjBmLCAxLjBmLCAwLjBmIH07CiBzdGF0aWMgY29sb3Jf dCBibHVlICA9IHsgMC4wZiwgMC4wZiwgMS4wZiB9Oworc3RhdGljIGNvbG9yX3Qgd2hpdGUgPSB7 IDEuMGYsIDEuMGYsIDEuMGYgfTsKKworCisvKgorICogU2l6ZSBvZiBhIHNxdWFyZSBwbGFuZSB1 c2VkIHRvIHRlc3QgY2xpcHBpbmcgYXQgdGhlIDQgY291cm5lcnMgb2YgdGhlCisgKiBkaXNwbGF5 LgorICovCisjZGVmaW5lIENMSVBQRURfUExBTkVfU01BTExfU0laRQk2NAorCisvKgorICogVmlz aWJsZSBwbGFuZSBzaXplIGFmdGVyIGNsaXBwaW5nIHRoYXQgd29ya3Mgb24gYWxsIHBsYXRmb3Jt cyBmb3IgYWxsIHBsYW5lCisgKiBwb3NpdGlvbnMuCisgKiBUaGUgZXhjZXB0aW9ucyBhcmUgR0xL L0NOTCB3aGVyZSB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IHRoaXMgbWFueSBwaXhlbHMKKyAqIHZp c2libGUgZnJvbSB0aGUgcGxhbmUgYWZ0ZXIgaXQncyBjbGlwcGVkIHRvIHRoZSBsZWZ0L3JpZ2h0 IGVkZ2Ugb2YgdGhlCisgKiBzY3JlZW4uIE5vdCBtZWV0aW5nIHRoaXMgY29uZGl0aW9uIG1heSB0 cmlnZ2VyIEZJRk8gdW5kZXJmbG93cyBhbmQgc2NyZWVuCisgKiBjb3JydXB0aW9uLiBUaGUgY3Vy c29yIHBsYW5lIGlzIGFuIGV4Y2VwdGlvbiB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGlzIHByb2JsZW0K KyAqIGV2ZW4gb24gR0xLL0NOTC4KKyAqLworI2RlZmluZSBDTElQUEVEX1BMQU5FX01JTl9WQUxJ RAkJNAogCiAvKgogICogQ29tbW9uIGNvZGUgYWNyb3NzIGFsbCB0ZXN0cywgYWN0aW5nIG9uIGRh dGFfdApAQCAtMTQyLDYgKzE2NSwxMTEgQEAgY3JlYXRlX2ZiX2Zvcl9tb2RlX19wb3NpdGlvbihk YXRhX3QgKmRhdGEsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKIAlpZ3RfcHV0X2NhaXJvX2N0eChk YXRhLT5kcm1fZmQsIGZiLCBjcik7CiB9CiAKKy8qCisgKiBDcmVhdGUgYSBzcXVhcmUgRkIgZm9y IHRoZSBwbGFuZSBpbiB0aGUgY2xpcHBpbmcgdGVzdCwgZGl2aWRlZCBpbnRvIDQKKyAqIHF1YXJ0 ZXJzIHNvbGlkIGZpbGxlZCB3aXRoIGRpZmZlcmVudCBjb2xvcnMuIFVzZSB0aGUgZ2l2ZW4gdGls aW5nLCBmb3JtYXQKKyAqIGFuZCBzaXplIGFuZCByb3RhdGUgdGhlIEZCIGNsb2Nrd2lzZSB3aXRo IHRoZSBnaXZlbiByb3RhdGlvbiBkZWdyZWVzLCBzbworICogdGhhdCB0aGUgY291bnRlcmNsb2Nr d2lzZSByb3RhdGlvbiB3aXRoIHRoZSBzYW1lIGRlZ3JlZXMgZG9uZSBieSB0aGUgSFcKKyAqIHdp bGwgYWx3YXlzIHJlc3VsdCBpbiB0aGUgc2FtZSByZWZlcmVuY2UgRkIgaW1hZ2UuCisgKi8KK3N0 YXRpYyB2b2lkCitjcmVhdGVfZmJfZm9yX21vZGVfX2NsaXBwaW5nX3BsYW5lKGRhdGFfdCAqZGF0 YSwgaWd0X3JvdGF0aW9uX3Qgcm90YXRpb24sCisJCQkJICAgdWludDY0X3QgdGlsaW5nLAorCQkJ CSAgIHVpbnQzMl90IGZvcm1hdCwKKwkJCQkgICBpbnQgc2l6ZSwKKwkJCQkgICBzdHJ1Y3QgaWd0 X2ZiICpmYiAvKiBvdXQgKi8pCit7CisJY29sb3JfdCBjb3JuZXJzW10gPSB7IHJlZCwgd2hpdGUs IHllbGxvdywgYmx1ZSB9OworCWNvbG9yX3QgY29sb3I7CisJdW5zaWduZWQgaW50IGZiX2lkOwor CWNhaXJvX3QgKmNyOworCWNvbnN0IGludCBxc2l6ZSA9IHNpemUgLyAyOworCWludCBpZHg7CisK KwlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLCBzaXplLCBzaXplLCBmb3JtYXQs IHRpbGluZywgZmIpOworCWlndF9hc3NlcnQoZmJfaWQpOworCisJY3IgPSBpZ3RfZ2V0X2NhaXJv X2N0eChkYXRhLT5kcm1fZmQsIGZiKTsKKworCXN3aXRjaCAocm90YXRpb24pIHsKKwljYXNlIElH VF9ST1RBVElPTl8wOgorCQlpZHggPSAwOworCQlicmVhazsKKwljYXNlIElHVF9ST1RBVElPTl85 MDoKKwkJaWR4ID0gMzsKKwkJYnJlYWs7CisJY2FzZSBJR1RfUk9UQVRJT05fMTgwOgorCQlpZHgg PSAyOworCQlicmVhazsKKwljYXNlIElHVF9ST1RBVElPTl8yNzA6CisJCWlkeCA9IDE7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCWlndF9hc3NlcnQoMCk7CisJfQorCisJY29sb3IgPSBjb3JuZXJz W2lkeF07CisJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCAwLCBxc2l6ZSwgcXNpemUsCisJCQljb2xv ci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlKTsKKworCWNvbG9yID0gY29ybmVyc1soKytp ZHgpICUgNF07CisJaWd0X3BhaW50X2NvbG9yKGNyLCBxc2l6ZSwgMCwgcXNpemUsIHFzaXplLAor CQkJY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZSk7CisKKwljb2xvciA9IGNvcm5l cnNbKCsraWR4KSAlIDRdOworCWlndF9wYWludF9jb2xvcihjciwgcXNpemUsIHFzaXplLCBxc2l6 ZSwgcXNpemUsCisJCQljb2xvci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlKTsKKworCWNv bG9yID0gY29ybmVyc1soKytpZHgpICUgNF07CisJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCBxc2l6 ZSwgcXNpemUsIHFzaXplLAorCQkJY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZSk7 CisKKwlpZ3RfYXNzZXJ0KGNhaXJvX3N0YXR1cyhjcikgPT0gMCk7CisJY2Fpcm9fZGVzdHJveShj cik7Cit9CisKKy8qCisgKiBDcmVhdGUgYSBzcXVhcmUgcmVmZXJlbmNlIEZCIGZvciB0aGUgd2hv bGUgc2NyZWVuIGluIHRoZSBjbGlwcGluZyB0ZXN0LAorICogd2l0aCB0aGUgZ2l2ZW4gdGVzdCBw bGFuZSBwb3NpdGlvbiBhbmQgc2l6ZS4gU2VlCisgKiBjcmVhdGVfZmJfZm9yX21vZGVfX2NsaXBw aW5nX3BsYW5lKCkgZm9yIHRoZSBsYXlvdXQgb2YgdGhlIHRlc3QgcGxhbmUuCisgKi8KK3N0YXRp YyB2b2lkCitjcmVhdGVfZmJfZm9yX21vZGVfX2NsaXBwaW5nX2Rpc3BsYXkoZGF0YV90ICpkYXRh LCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsCisJCQkJICAgICBpbnQgcGxhbmVfeCwgaW50IHBsYW5l X3ksCisJCQkJICAgICBpbnQgcGxhbmVfc2l6ZSwKKwkJCQkgICAgIHN0cnVjdCBpZ3RfZmIgKmZi IC8qIG91dCAqLykKK3sKKwlzdHJ1Y3QgaWd0X2ZiIHBsYW5lX2ZiOworCXVuc2lnbmVkIGludCBm Yl9pZDsKKwljYWlyb190ICpjcjsKKwljYWlyb19zdXJmYWNlX3QgKnNyYzsKKworCWZiX2lkID0g aWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsCisJCQkJICBtb2RlLT5oZGlzcGxheSwgbW9kZS0+ dmRpc3BsYXksCisJCQkJICBEUk1fRk9STUFUX1hSR0I4ODg4LAorCQkJCSAgTE9DQUxfRFJNX0ZP Uk1BVF9NT0RfTk9ORSwKKwkJCQkgIGZiKTsKKwlpZ3RfYXNzZXJ0KGZiX2lkKTsKKworCWNyZWF0 ZV9mYl9mb3JfbW9kZV9fY2xpcHBpbmdfcGxhbmUoZGF0YSwgSUdUX1JPVEFUSU9OXzAsCisJCQkJ CSAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCQkJCSAgIERSTV9GT1JNQVRfWFJHQjg4 ODgsCisJCQkJCSAgIHBsYW5lX3NpemUsICZwbGFuZV9mYik7CisKKwlzcmMgPSBpZ3RfZ2V0X2Nh aXJvX3N1cmZhY2UoZGF0YS0+ZHJtX2ZkLCAmcGxhbmVfZmIpOworCisJY3IgPSBpZ3RfZ2V0X2Nh aXJvX2N0eChkYXRhLT5kcm1fZmQsIGZiKTsKKwlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIDAsIG1v ZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJCTAsIDAsIDApOworCisJY2Fpcm9fc2V0 X3NvdXJjZV9zdXJmYWNlKGNyLCBzcmMsIHBsYW5lX3gsIHBsYW5lX3kpOworCWNhaXJvX3JlY3Rh bmdsZShjciwgcGxhbmVfeCwgcGxhbmVfeSwKKwkJCXBsYW5lX3NpemUsIHBsYW5lX3NpemUpOwor CWNhaXJvX2ZpbGwoY3IpOworCWlndF9hc3NlcnQoY2Fpcm9fc3RhdHVzKGNyKSA9PSAwKTsKKwlj YWlyb19kZXN0cm95KGNyKTsKK30KKwogZW51bSB7CiAJVEVTVF9QT1NJVElPTl9GVUxMWV9DT1ZF UkVEID0gMSA8PCAwLAogCVRFU1RfRFBNUyA9IDEgPDwgMSwKQEAgLTQ2Myw2ICs1OTEsMzEzIEBA IHRlc3RfcGl4ZWxfZm9ybWF0cyhkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlKQogCX0KIH0K IAorc3RhdGljIGJvb2wKK2JvZ3VzX3BsYW5lX2NvbmYodWludDMyX3QgZGV2aWQsIGlndF9wbGFu ZV90ICpwbGFuZV9vYmosCisJCSBpbnQgaGRpc3BsYXksIGludCBwbGFuZV94LCBpbnQgcGxhbmVf d2lkdGgpCit7CisJaWYgKCEoSVNfR0VNSU5JTEFLRShkZXZpZCkgfHwgSVNfQ0FOTk9OTEFLRShk ZXZpZCkpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAocGxhbmVfb2JqLT50eXBlID09IERSTV9Q TEFORV9UWVBFX0NVUlNPUikKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKHBsYW5lX3ggKyBwbGFu ZV93aWR0aCA+PSBDTElQUEVEX1BMQU5FX01JTl9WQUxJRCAmJgorCSAgICBwbGFuZV94IDw9IGhk aXNwbGF5IC0gQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQpCisJCXJldHVybiBmYWxzZTsKKworCXJl dHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbAorc3VwcG9ydGVkX3BsYW5lX2NvbmYoZGF0YV90 ICpkYXRhLCBpbnQgcGxhbmVfdHlwZSwgdWludDY0X3QgdGlsaW5nLAorCQkgICAgIHVpbnQzMl90 IGZvcm1hdCwgaWd0X3JvdGF0aW9uX3Qgcm90YXRpb24sCisJCSAgICAgZHJtTW9kZU1vZGVJbmZv ICptb2RlLAorCQkgICAgIGludCBwbGFuZV94LCBpbnQgcGxhbmVfeSwgaW50IHBsYW5lX3NpemUp Cit7CisJaWYgKGludGVsX2dlbihkYXRhLT5kZXZpZCkgPCA5ICYmCisJICAgIHRpbGluZyAhPSBM T0NBTF9EUk1fRk9STUFUX01PRF9OT05FKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBPbiBHRU48 OSB0aGUgcHJpbWFyeSBwbGFuZSBtdXN0IGNvdmVyIHRoZSBmdWxsIHNjcmVlbi4gKi8KKwlpZiAo aW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA8IDkgJiYKKwkgICAgcGxhbmVfdHlwZSA9PSBEUk1fUExB TkVfVFlQRV9QUklNQVJZICYmCisJICAgIChwbGFuZV94ID4gMCB8fCBwbGFuZV95ID4gMCB8fAor CSAgICAgKHBsYW5lX3ggKyBwbGFuZV9zaXplIDwgbW9kZS0+aGRpc3BsYXkpIHx8CisJICAgICAo cGxhbmVfeSArIHBsYW5lX3NpemUgPCBtb2RlLT52ZGlzcGxheSkpKQorCQlyZXR1cm4gZmFsc2U7 CisKKwlpZiAocGxhbmVfdHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsKKwkJLyogRm9y IGN1cnNvciBwbGFuZXMgb25seSBsaW5lYXIvYWxwaGEgZm9ybWF0IGlzIHN1cHBvcnRlZC4gKi8K KwkJaWYgKHRpbGluZyAhPSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FIHx8CisJCSAgICBmb3Jt YXQgIT0gRFJNX0ZPUk1BVF9BUkdCODg4OCkKKwkJCXJldHVybiBmYWxzZTsKKworCQlpZiAocGxh bmVfc2l6ZSA+IGRhdGEtPm1heF9jdXJ3IHx8IHBsYW5lX3NpemUgPiBkYXRhLT5tYXhfY3VyaCkK KwkJCXJldHVybiBmYWxzZTsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBGb3Igbm9uLWN1cnNvciBw bGFuZXMgZm9ybWF0cyB3aXRoIGFscGhhIG1heSByZXN1bHQgaW4KKwkJICogdW5kZXRlcm1pbmlz dGljIENSQ3MsIHdlIHVzZSB0aGUgc2FtZSBzaXplZAorCQkgKiBub24tYWxwaGEgWFJHQjg4ODgg Zm9ybWF0IGluc3RlYWQuCisJCSAqLworCQlpZiAoZm9ybWF0ID09IERSTV9GT1JNQVRfQVJHQjg4 ODgpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJaWYgKGZvcm1hdCA9PSBEUk1fRk9STUFUX1JHQjU2 NSAmJgorCQkgICAgaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA8IDkgJiYKKwkJICAgICFJU19WQUxM RVlWSUVXKGRhdGEtPmRldmlkKSAmJiAhSVNfQ0hFUlJZVklFVyhkYXRhLT5kZXZpZCkpCisJCQly ZXR1cm4gZmFsc2U7CisJfQorCisJLyogUkdCNTY1IHdpdGggcm90YXRpb24gaXMgbm90IHN1cHBv cnRlZCBmb3Igbm93LiAqLworCWlmIChmb3JtYXQgPT0gRFJNX0ZPUk1BVF9SR0I1NjUgJiYgcm90 YXRpb24gIT0gSUdUX1JPVEFUSU9OXzApCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVl OworfQorCitzdGF0aWMgdm9pZAordGVzdF9wbGFuZV9jbGlwcGluZ19mb3JtYXQoZGF0YV90ICpk YXRhLAorCQkJICAgIGVudW0gcGlwZSBwaXBlLAorCQkJICAgIGludCBwbGFuZSwKKwkJCSAgICBp Z3Rfb3V0cHV0X3QgKm91dHB1dCwKKwkJCSAgICBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsCisJCQkg ICAgaW50IHBsYW5lX3gsIGludCBwbGFuZV95LAorCQkJICAgIGludCBwbGFuZV9zaXplLAorCQkJ ICAgIHVpbnQ2NF90IHRpbGluZywKKwkJCSAgICBpZ3Rfcm90YXRpb25fdCByb3RhdGlvbiwKKwkJ CSAgICB1aW50MzJfdCBmb3JtYXQsCisJCQkgICAgaWd0X2NyY190ICpyZWZlcmVuY2VfY3JjKQor eworCWlndF9wbGFuZV90ICpwbGFuZV9vYmo7CisJc3RydWN0IGlndF9mYiByZWZlcmVuY2VfZmI7 CisJaWd0X2NyY190IGNyYzsKKwlpbnQgcmV0OworCisJaWd0X2RlYnVnKCIgIHBsYW5lICVkIHJv dGF0aW9uICVzIHRpbGluZyAlcyBmb3JtYXQgJXNcbiIsCisJCSAgcGxhbmUsCisJCSAgaWd0X3Jv dGF0aW9uX2RlZ3JlZXNfc3RyKHJvdGF0aW9uKSwKKwkJICBpZ3RfdGlsaW5nX3N0cih0aWxpbmcp LAorCQkgIGlndF9mb3JtYXRfc3RyKGZvcm1hdCkpOworCisJaWd0X291dHB1dF9zZXRfcGlwZShv dXRwdXQsIHBpcGUpOworCXBsYW5lX29iaiA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwg cGxhbmUpOworCisJaWYgKCFzdXBwb3J0ZWRfcGxhbmVfY29uZihkYXRhLCBwbGFuZV9vYmotPnR5 cGUsCisJCQkJICB0aWxpbmcsIGZvcm1hdCwgcm90YXRpb24sCisJCQkJICBtb2RlLAorCQkJCSAg cGxhbmVfeCwgcGxhbmVfeSwKKwkJCQkgIHBsYW5lX3NpemUpKQorCQlnb3RvIG91dDsKKworCWln dF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKKworCWNyZWF0ZV9mYl9mb3JfbW9kZV9f Y2xpcHBpbmdfcGxhbmUoZGF0YSwgcm90YXRpb24sIHRpbGluZywgZm9ybWF0LAorCQkJCQkgICBw bGFuZV9zaXplLCAmcmVmZXJlbmNlX2ZiKTsKKworCWlndF9wbGFuZV9zZXRfZmIocGxhbmVfb2Jq LCAmcmVmZXJlbmNlX2ZiKTsKKwlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZyZWZlcmVuY2VfZmIsIHBs YW5lX29iaiwgMCwgMCk7CisKKwlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmVfb2JqLCBwbGFuZV9z aXplLCBwbGFuZV9zaXplKTsKKwlpZ3RfcGxhbmVfc2V0X3JvdGF0aW9uKHBsYW5lX29iaiwgcm90 YXRpb24pOworCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmVfb2JqLCBwbGFuZV94LCBwbGFu ZV95KTsKKworCS8qCisJICogTm90ZSB0aGF0IGEgdW5pdmVyc2FsIGNvbW1pdCBkb2Vzbid0IHN1 cHBvcnQgZnVsbCBtb2Rlc2V0cywgc28gd2UKKwkgKiBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRo ZSBmb2xsb3dpbmcgb25seSBuZWVkcyB0byBjb21taXQgY2hhbmdlcworCSAqIHRoYXQgYXJlIGNv bXBhdGlibGUgd2l0aCBhIGZhc3RzZXQuIFRoaXMgc2hvdWxkIGJlIGd1YXJhbnRlZWQsCisJICog c2luY2UgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3ZSB0b29rIHRoZSByZWZlcmVuY2Ug Q1JDIHdoaWNoCisJICogbGVmdCB0aGUgZGlzcGxheSBlbmFibGVkIHdpdGggdGhlIG1vZGUgd2Ug cmVxdWlyZSBoZXJlIGFuZAorCSAqIGFmdGVyd2FyZHMgd2Ugb25seSBjaGFuZ2UgcGxhbmUgcGFy YW1ldGVycyAoRkIsIHBvc2l0aW9uLCByb3RhdGlvbgorCSAqIGV0Yy4pLgorCSAqLworCXJldCA9 IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FM KTsKKworCWlmICghYm9ndXNfcGxhbmVfY29uZihkYXRhLT5kZXZpZCwgcGxhbmVfb2JqLCBtb2Rl LT5oZGlzcGxheSwKKwkJCSAgICAgIHBsYW5lX3gsIHBsYW5lX3NpemUpKSB7CisJCWlndF9hc3Nl cnQocmV0ID09IDApOworCQlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMs ICZjcmMpOworCQlpZ3RfYXNzZXJ0X2NyY19lcXVhbChyZWZlcmVuY2VfY3JjLCAmY3JjKTsKKwl9 IGVsc2UgeworCQlpZ3RfYXNzZXJ0KHJldCA9PSAtRVJBTkdFKTsKKwl9CisKKwlpZ3RfcGxhbmVf c2V0X2ZiKHBsYW5lX29iaiwgTlVMTCk7CisJaWd0X3BsYW5lX3NldF9yb3RhdGlvbihwbGFuZV9v YmosIElHVF9ST1RBVElPTl8wKTsKKwlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lX29iaiwg MCwgMCk7CisKKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJnJlZmVyZW5jZV9mYik7CisK K291dDoKKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkpOworfQorCitzdGF0 aWMgdm9pZAordGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmUoZGF0YV90ICpkYXRhLCBlbnVtIHBp cGUgcGlwZSwKKwkJCSAgIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBkcm1Nb2RlTW9kZUluZm8gKm1v ZGUsCisJCQkgICBpbnQgcGxhbmVfeCwgaW50IHBsYW5lX3ksIGludCBwbGFuZV9zaXplKQorewor CWNvbnN0IHN0cnVjdCB7CisJCXVpbnQ2NF90IHRpbGluZzsKKwkJaWd0X3JvdGF0aW9uX3Qgcm90 YXRpb247CisJfSByb3RhdGlvbnNbXSA9IHsKKwkJeyBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05F LAkJSUdUX1JPVEFUSU9OXzAgfSwKKworCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVE LAlJR1RfUk9UQVRJT05fMCB9LAorCisJCXsgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQs CUlHVF9ST1RBVElPTl8wIH0sCisJCXsgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCUlH VF9ST1RBVElPTl85MCB9LAorCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVELAlJR1Rf Uk9UQVRJT05fMTgwIH0sCisJCXsgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCUlHVF9S T1RBVElPTl8yNzAgfSwKKworCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwJSUdU X1JPVEFUSU9OXzAgfSwKKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQsCUlHVF9S T1RBVElPTl85MCB9LAorCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwJSUdUX1JP VEFUSU9OXzE4MCB9LAorCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwJSUdUX1JP VEFUSU9OXzI3MCB9LAorCX07CisJY29uc3QgdWludDMyX3QgZm9ybWF0c1tdID0geworCQlEUk1f Rk9STUFUX1JHQjU2NSwKKwkJRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJRFJNX0ZPUk1BVF9BUkdC ODg4OCwKKwl9OworCWludCBuX3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9w bGFuZXM7CisJaWd0X2ZiX3QgcmVmZXJlbmNlX2ZiOworCWlndF9jcmNfdCByZWZlcmVuY2VfY3Jj OworCisJaWd0X2luZm8oIlRlc3RpbmcgY29ubmVjdG9yICVzIG1vZGUgJWR4JWQgdXNpbmcgcGlw ZSAlczogJWQsJWRAJWQsJWRcbiIsCisJCSBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKKwkJIG1v ZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUp LAorCQkgcGxhbmVfc2l6ZSwgcGxhbmVfc2l6ZSwKKwkJIHBsYW5lX3gsIHBsYW5lX3kpOworCisJ dGVzdF9pbml0KGRhdGEsIHBpcGUpOworCisJY3JlYXRlX2ZiX2Zvcl9tb2RlX19jbGlwcGluZ19k aXNwbGF5KGRhdGEsIG1vZGUsCisJCQkJCSAgICAgcGxhbmVfeCwgcGxhbmVfeSwKKwkJCQkJICAg ICBwbGFuZV9zaXplLAorCQkJCQkgICAgICZyZWZlcmVuY2VfZmIpOworCisJdGVzdF9ncmFiX2Ny Y19mb3JfZmIoZGF0YSwgb3V0cHV0LCBwaXBlLCAmcmVmZXJlbmNlX2ZiLAorCQkJICAgICAmcmVm ZXJlbmNlX2NyYyk7CisKKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJnJlZmVyZW5jZV9m Yik7CisKKwlmb3IgKGludCBwbGFuZSA9IDA7IHBsYW5lIDwgbl9wbGFuZXM7IHBsYW5lKyspCisJ CWZvciAoaW50IHJvdGF0aW9uID0gMDsgcm90YXRpb24gPCBBUlJBWV9TSVpFKHJvdGF0aW9ucyk7 CisJCSAgICAgcm90YXRpb24rKykKKwkJCWZvciAoaW50IGZvcm1hdCA9IDA7IGZvcm1hdCA8IEFS UkFZX1NJWkUoZm9ybWF0cyk7CisJCQkgICAgIGZvcm1hdCsrKQorCQkJCXRlc3RfcGxhbmVfY2xp cHBpbmdfZm9ybWF0KGRhdGEsIHBpcGUsIHBsYW5lLAorCQkJCQkJCSAgICBvdXRwdXQsCisJCQkJ CQkJICAgIG1vZGUsCisJCQkJCQkJICAgIHBsYW5lX3gsIHBsYW5lX3ksCisJCQkJCQkJICAgIHBs YW5lX3NpemUsCisJCQkJCQkJICAgIHJvdGF0aW9uc1tyb3RhdGlvbl0udGlsaW5nLAorCQkJCQkJ CSAgICByb3RhdGlvbnNbcm90YXRpb25dLnJvdGF0aW9uLAorCQkJCQkJCSAgICBmb3JtYXRzW2Zv cm1hdF0sCisJCQkJCQkJICAgICZyZWZlcmVuY2VfY3JjKTsKKworCXRlc3RfZmluaShkYXRhKTsK K30KKworc3RhdGljIHZvaWQKK3Rlc3RfcGxhbmVfY2xpcHBpbmcoZGF0YV90ICpkYXRhLCBlbnVt IHBpcGUgcGlwZSkKK3sKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlpbnQgY29ubmVjdGVkX291 dHMgPSAwOworCisJZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUoJmRhdGEtPmRpc3BsYXks IHBpcGUsIG91dHB1dCkgeworCQlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisJCWludCBzcV9zaXpl OworCisJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKKwkJbW9kZSA9IGlndF9v dXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKKworCQkvKgorCQkgKiBUZXN0IHdpdGggYSBzcXVhcmUg cGxhbmUgYmlnZ2VyIHRoYW4gZWl0aGVyIHRoZSB3aWR0aCBvcgorCQkgKiBoZWlnaHQgb2YgdGhl IG1vZGUuIFRoaXMgc2hvdWxkIHBhc3Mgb24gYWxsIHBsYXRmb3Jtcy4KKwkJICovCisJCXNxX3Np emUgPSBtb2RlLT5oZGlzcGxheSA+IG1vZGUtPnZkaXNwbGF5ID8KKwkJCSAgbW9kZS0+aGRpc3Bs YXkgOiBtb2RlLT52ZGlzcGxheTsKKwkJdGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmUoZGF0YSwg cGlwZSwgb3V0cHV0LCBtb2RlLAorCQkJCQkgICAtMiwKKwkJCQkJICAgLTIsCisJCQkJCSAgIHNx X3NpemUgKyA0KTsKKworCQkvKgorCQkgKiBUZXN0IHBvc2l0aW9ucyBpbiB0aGUgNCBjb3JuZXJz IG9mIHRoZSBzY3JlZW4gd2l0aCBhCisJCSAqIENMSVBQRURfUExBTkVfTUlOX1ZBTElEIHggQ0xJ UFBFRF9QTEFORV9NSU5fVkFMSUQgc3F1YXJlCisJCSAqIHZpc2libGUgZnJvbSB0aGUgcGxhbmUu IFRoZXNlIHNob3VsZCBwYXNzIG9uIGFsbCBwbGF0Zm9ybXMuCisJCSAqLworCQl0ZXN0X3BsYW5l X2NsaXBwaW5nX3NxdWFyZShkYXRhLCBwaXBlLCBvdXRwdXQsIG1vZGUsCisJCQkJCSAgIC1DTElQ UEVEX1BMQU5FX1NNQUxMX1NJWkUgKworCQkJCQkgICAgQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQs CisJCQkJCSAgIC1DTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUgKworCQkJCQkgICAgQ0xJUFBFRF9Q TEFORV9NSU5fVkFMSUQsCisJCQkJCSAgIENMSVBQRURfUExBTkVfU01BTExfU0laRSk7CisKKwkJ dGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmUoZGF0YSwgcGlwZSwgb3V0cHV0LCBtb2RlLAorCQkJ CQkgICAtQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFICsKKwkJCQkJICAgIENMSVBQRURfUExBTkVf TUlOX1ZBTElELAorCQkJCQkgICBtb2RlLT52ZGlzcGxheSAtCisJCQkJCSAgICBDTElQUEVEX1BM QU5FX01JTl9WQUxJRCwKKwkJCQkJICAgQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFKTsKKworCQl0 ZXN0X3BsYW5lX2NsaXBwaW5nX3NxdWFyZShkYXRhLCBwaXBlLCBvdXRwdXQsIG1vZGUsCisJCQkJ CSAgIG1vZGUtPmhkaXNwbGF5IC0KKwkJCQkJICAgIENMSVBQRURfUExBTkVfTUlOX1ZBTElELAor CQkJCQkgICAtQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFICsKKwkJCQkJICAgIENMSVBQRURfUExB TkVfTUlOX1ZBTElELAorCQkJCQkgICBDTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUpOworCisJCXRl c3RfcGxhbmVfY2xpcHBpbmdfc3F1YXJlKGRhdGEsIHBpcGUsIG91dHB1dCwgbW9kZSwKKwkJCQkJ ICAgbW9kZS0+aGRpc3BsYXkgLQorCQkJCQkgICAgQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQsCisJ CQkJCSAgIG1vZGUtPnZkaXNwbGF5IC0KKwkJCQkJICAgIENMSVBQRURfUExBTkVfTUlOX1ZBTElE LAorCQkJCQkgICBDTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUpOworCisJCS8qCisJCSAqIFRlc3Qg cG9zaXRpb25zIGluIHRoZSA0IGNvcm5lcnMgb2YgdGhlIHNjcmVlbiB3aXRoIGEKKwkJICogMiB4 IDIgc3F1YXJlIHZpc2libGUgZnJvbSB0aGUgcGxhbmUuIFRoZXNlIGFyZSB2YWxpZCBvbiBhbGwK KwkJICogcGxhdGZvcm1zIGV4Y2VwdCBvbiBHTEsvQ05MIHdoZXJlIGxlc3MgdGhhbgorCQkgKiBD TElQUEVEX1BMQU5FX01JTl9WQUxJRCBwaXhlbHMgdmlzaWJsZSBvbiB0aGUgbGVmdC9yaWdodAor CQkgKiBlZGdlcyBvZiB0aGUgc2NyZWVuIG1heSBjYXVzZSBGSUZPIHVuZGVyZmxvdyBhbmQgZGlz cGxheQorCQkgKiBjb3JydXB0aW9uLgorCQkgKgorCQkgKiBUaGUgY3Vyc29yIHBsYW5lIGlzIGFu IGV4Y2VwdGlvbiB3aXRob3V0IHRoaXMgcHJvYmxlbS4KKwkJICoKKwkJICogVXNlIDIgeCAyIHNp emUgYXMgb3RoZXIgKG9kZCkgc2l6ZXMgbWF5IHJlc3VsdCBpbiBhbgorCQkgKiBpbmNvcnJlY3Qg Q1JDIGZvciB0aGUgY3Vyc29yIHBsYW5lIGV2ZW4gdGhvdWdoIGl0IGRpc3BsYXlzCisJCSAqIGNv cnJlY3RseSBhbmQgY2F1c2VzIG5vIHVuZGVyZmxvdy4KKwkJICovCisJCXRlc3RfcGxhbmVfY2xp cHBpbmdfc3F1YXJlKGRhdGEsIHBpcGUsIG91dHB1dCwgbW9kZSwKKwkJCQkJICAgLUNMSVBQRURf UExBTkVfU01BTExfU0laRSArIDIsCisJCQkJCSAgIC1DTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUg KyAyLAorCQkJCQkgICBDTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUpOworCisJCXRlc3RfcGxhbmVf Y2xpcHBpbmdfc3F1YXJlKGRhdGEsIHBpcGUsIG91dHB1dCwgbW9kZSwKKwkJCQkJICAgLUNMSVBQ RURfUExBTkVfU01BTExfU0laRSArIDIsCisJCQkJCSAgIG1vZGUtPnZkaXNwbGF5IC0gMiwKKwkJ CQkJICAgQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFKTsKKworCQl0ZXN0X3BsYW5lX2NsaXBwaW5n X3NxdWFyZShkYXRhLCBwaXBlLCBvdXRwdXQsIG1vZGUsCisJCQkJCSAgIG1vZGUtPmhkaXNwbGF5 IC0gMiwKKwkJCQkJICAgLUNMSVBQRURfUExBTkVfU01BTExfU0laRSArIDIsCisJCQkJCSAgIENM SVBQRURfUExBTkVfU01BTExfU0laRSk7CisKKwkJdGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmUo ZGF0YSwgcGlwZSwgb3V0cHV0LCBtb2RlLAorCQkJCQkgICBtb2RlLT5oZGlzcGxheSAtIDIsCisJ CQkJCSAgIG1vZGUtPnZkaXNwbGF5IC0gMiwKKwkJCQkJICAgQ0xJUFBFRF9QTEFORV9TTUFMTF9T SVpFKTsKKworCQljb25uZWN0ZWRfb3V0cysrOworCX0KKworCWlndF9za2lwX29uKGNvbm5lY3Rl ZF9vdXRzID09IDApOworfQorCiBzdGF0aWMgdm9pZAogcnVuX3Rlc3RzX2Zvcl9waXBlX3BsYW5l KGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpCiB7CkBAIC00OTksNiArOTM0LDkgQEAgcnVu X3Rlc3RzX2Zvcl9waXBlX3BsYW5lKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpCiAJCSAg ICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQogCQl0ZXN0X3BsYW5lX3Bhbm5pbmcoZGF0YSwg cGlwZSwgVEVTVF9QQU5OSU5HX0JPVFRPTV9SSUdIVCB8CiAJCQkJCSAgICAgICBURVNUX1NVU1BF TkRfUkVTVU1FKTsKKwlpZ3Rfc3VidGVzdF9mKCJwbGFuZS1jbGlwcGluZy1waXBlLSVzLXBsYW5l cyIsCisJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQorCQl0ZXN0X3BsYW5lX2NsaXBw aW5nKGRhdGEsIHBpcGUpOwogfQogCiAKQEAgLTUxMSw4ICs5NDksMjEgQEAgaWd0X21haW4KIAlp Z3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7CiAKIAlpZ3RfZml4dHVyZSB7CisJCWludCByZXQ7CisK IAkJZGF0YS5kcm1fZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7CiAK KwkJZGF0YS5kZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5kcm1fZmQpOworCisJCWRh dGEubWF4X2N1cncgPSA2NDsKKwkJZGF0YS5tYXhfY3VyaCA9IDY0OworCQlyZXQgPSBkcm1HZXRD YXAoZGF0YS5kcm1fZmQsIERSTV9DQVBfQ1VSU09SX1dJRFRILAorCQkJCSZkYXRhLm1heF9jdXJ3 KTsKKwkJaWd0X2Fzc2VydChyZXQgPT0gMCB8fCBlcnJubyA9PSBFSU5WQUwpOworCQlyZXQgPSBk cm1HZXRDYXAoZGF0YS5kcm1fZmQsIERSTV9DQVBfQ1VSU09SX0hFSUdIVCwKKwkJCQkmZGF0YS5t YXhfY3VyaCk7CisJCWlndF9hc3NlcnQocmV0ID09IDAgfHwgZXJybm8gPT0gRUlOVkFMKTsKKwog CQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7CiAKIAkJaWd0X3JlcXVpcmVfcGlwZV9j cmMoZGF0YS5kcm1fZmQpOwotLSAKMi4xMy4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXYK