From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4C40AC636CC for ; Mon, 6 Feb 2023 02:04:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:CC:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=EGaWG/chosti2CfgJVJOhsM0fmNJVys619ez2Xeeqxw=; b=lZJa+/20QSXLmv qQss+feRCwEOR0rv/J5VOPjh9tQ+5olcUpOJcxp+6UmV4wulSUW4R5mkyFFS0TyAQ/d7vAaJ1O43X EbSZwoqWfTJW63nf9vI25Mi3S5LKhEUTZ0igcM28kltfldABDI5aAOmJQpuc2NhLkz5Wy698pi4ux U+3syVjq9BKWjdgiN8UHN4LTOV9eRHPzsxggTBK752PQ1B9Xtn/8fama2goPrKCpEoU20eOBBZBDc uwwaiCzmIGV4EUvncF1TWw2TjyJVjG5Ds7pttD9V0KJXDwImX41yji5+eeOCpMx+9K/hkQ9gWwyIz JwoGGnpa5Qtt/14JmwDA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pOqqw-0079e5-JA; Mon, 06 Feb 2023 02:03:30 +0000 Received: from szxga02-in.huawei.com ([45.249.212.188]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pOqqr-0079cH-NB for linux-arm-kernel@lists.infradead.org; Mon, 06 Feb 2023 02:03:29 +0000 Received: from kwepemi500008.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4P98cV35NvzRr4v; Mon, 6 Feb 2023 10:00:58 +0800 (CST) Received: from [10.67.109.254] (10.67.109.254) by kwepemi500008.china.huawei.com (7.221.188.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Mon, 6 Feb 2023 10:03:17 +0800 Message-ID: Date: Mon, 6 Feb 2023 10:03:17 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: Re: [PATCH v2 9/9] arm64: armv8_deprecated: rework deprected instruction handling Content-Language: en-US To: Mark Rutland CC: , "liaochang (A)" References: <20221019144123.612388-1-mark.rutland@arm.com> <20221019144123.612388-10-mark.rutland@arm.com> From: Ruan Jinjie In-Reply-To: X-Originating-IP: [10.67.109.254] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemi500008.china.huawei.com (7.221.188.139) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230205_180326_169853_B60215D8 X-CRM114-Status: GOOD ( 31.03 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAyMDIzLzIvNCAxOjI3LCBNYXJrIFJ1dGxhbmQgd3JvdGU6Cj4gT24gRnJpLCBGZWIgMDMs IDIwMjMgYXQgMDY6MDg6MDhQTSArMDgwMCwgUnVhbiBKaW5qaWUgd3JvdGU6Cj4+Cj4+Cj4+IE9u IDIwMjIvMTAvMTkgMjI6NDEsIE1hcmsgUnV0bGFuZCB3cm90ZToKPj4+IFN1cHBvcnQgZm9yIGRl cHJlY2F0ZWQgaW5zdHJ1Y3Rpb25zIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGF0Cj4+PiBy dW50aW1lLiBUbyBoYW5kbGUgdGhpcywgdGhlIGNvZGUgaW4gYXJtdjhfZGVwcmVjYXRlZC5jIHJl Z2lzdGVycyBhbmQKPj4+IHVucmVnaXN0ZXJzIHVuZGVmX2hvb2tzLCBhbmQgbWFrZXMgY3Jvc3Mg Q1BVIGNhbGxzIHRvIGNvbmZpZ3VyZSBIVwo+Pj4gc3VwcG9ydC4gVGhpcyBpcyByYXRoZXIgY29t cGxpY2F0ZWQsIGFuZCB0aGUgc3luY2hyb25pemF0aW9uIHJlcXVpcmVkIHRvCj4+PiBtYWtlIHRo aXMgc2FmZSBlbmRzIHVwIHNlcmlhbGl6aW5nIHRoZSBoYW5kbGluZyBvZiBpbnN0cnVjdGlvbnMg d2hpY2gKPj4+IGhhdmUgYmVlbiB0cmFwcGVkLgo+Pj4KPj4+IFRoaXMgcGF0Y2ggc2ltcGxpZmll cyB0aGUgZGVwcmVjYXRlZCBpbnN0cnVjdGlvbiBoYW5kbGluZyBieSByZW1vdmluZwo+Pj4gdGhl IGR5bmFtaWMgcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdGlvbiwgYW5kIGNoYW5naW5nIHRo ZSB0cmFwCj4+PiBoYW5kbGluZyBjb2RlIHRvIGRldGVybWluZSB3aGV0aGVyIGEgaGFuZGxlciBz aG91bGQgYmUgaW52b2tlZC4gVGhpcwo+Pj4gcmVtb3ZlcyB0aGUgbmVlZCBmb3IgZHluYW1pYyBs aXN0IG1hbmFnZW1lbnQsIGFuZCBzaW1wbGlmaWVzIHRoZSBsb2NraW5nCj4+PiByZXF1aXJlbWVu dHMsIG1ha2luZyBpdCBwb3NzaWJsZSB0byBoYW5kbGUgdHJhcHBlZCBpbnN0cnVjdGlvbnMgZW50 aXJlbHkKPj4+IGluIHBhcmFsbGVsLgo+Pj4KPj4+IFdoZXJlIGNoYW5naW5nIHRoZSBlbXVsYXRp b24gc3RhdGUgcmVxdWlyZXMgYSBjcm9zcy1jYWxsLCB0aGlzIGlzCj4+PiBzZXJpYWxpemVkIGJ5 IGxvY2FsbHkgZGlzYWJsaW5nIGludGVycnVwdHMsIGVuc3VyaW5nIHRoYXQgdGhlIENQVSBpcyBu b3QKPj4+IGxlZnQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgo+Pj4KPj4+IFRvIHNpbXBsaWZ5 IHN5c2N0bCBtYW5hZ2VtZW50LCBlYWNoIGluc25fZW11bGF0aW9uIGlzIGdpdmVuIGEgc2VwYXJh dGUKPj4+IHN5c2N0bCB0YWJsZSwgcGVybWl0dGluZyB0aGVzZSB0byBiZSByZWdpc3RlcmVkIHNl cGFyYXRlbHkuIFRoZSBjb3JlCj4+PiBzeXNjdGwgY29kZSB3aWxsIGl0ZXJhdGUgb3ZlciBhbGwg b2YgdGhlc2Ugd2hlbiB3YWxraW5nIHN5c2ZzLgo+Pj4KPj4+IEkndmUgdGVzdGVkIHRoaXMgd2l0 aCB1c2Vyc3BhY2UgcHJvZ3JhbXMgd2hpY2ggdXNlIGVhY2ggb2YgdGhlCj4+PiBkZXByZWNhdGVk IGluc3RydWN0aW9ucywgYW5kIEkndmUgY29uY3VycmVudGx5IG1vZGlmaWVkIHRoZSBzdXBwb3J0 Cj4+PiBsZXZlbCBmb3IgZWFjaCBvZiB0aGUgZmVhdHVyZXMgYmFjay1hbmQtZm9ydGggYmV0d2Vl biBIVyBhbmQgZW11bGF0ZWQgdG8KPj4+IGNoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIHNwdXJpb3Vz IFNJR0lMTHMgc2VudCB0byB1c2Vyc3BhY2Ugd2hlbiB0aGUKPj4+IHN1cHBvcnQgbGV2ZWwgaXMg Y2hhbmdlZC4KPj4KPj4gSGksIE1hcmssIEkgd2FudCB0byBtZXJnZSB0aGlzIHBhdGNoIHRvIGxp bnV4LTUuMTAueSB0byBzb2x2ZSBhIGxpc3RfYWRkCj4+IGRvdWJsZSBwcm9ibGVtLiBIb3dldmVy LCBJIGNhbiBub3QgdHJpZ2dlciB0aGUgZW11bGF0aW9uIG9mIHRoZXNlCj4+IGRlcHJlY2F0ZWQg aW5zdHJ1Y3Rpb25zIGluIHFlbXUgd2l0aCB1c2Vyc3BhY2UgcHJvZ3JhbSBhcyBiZWxvdywgYnV0 Cj4+IGNhdXNlIElBQlQgYW5kIERBQlQsCj4gCj4gV2VsbCB0aGF0IGNlcnRhaW5seSBzb3VuZHMg d3JvbmchCj4gCj4gV2hlbiB5b3Ugc2F5ICJpbiBxZW11Iiwgc28geW91IG1lYW4gaW4gYSBLVk0g Vk0sIGEgVENHIFZNLCBvciB1c2VybW9kZQo+IGVtdWxhdGlvbj8KPiAKPiBDYW4geW91IHRlbGwg bWUgZXhhY3RseSBob3cgeW91J3JlIGludm9raW5nIHFlbXU/CgpTb3JyeSwgdGhlIGluZm9ybWF0 aW9uIGdpdmVuIHdhcyBpbmNvbXBsZXRlLkkgaW52b2tlIHFlbXUgNi4xLjEgd2l0aApmb2xsb3dp bmcgY29tbWFuZHMsIHdoaWNoIGlzIGEgVENHIFZNOgoKcWVtdS1zeXN0ZW0tYWFyY2g2NAoJLU0g dmlydCBcCgktY3B1IGNvcnRleC1hNTcgXAoJLXNtcCA0IFwKCS1tIDQwOTYgXAoJLW5vZ3JhcGhp YyBcCgkta2VybmVsIGxpbnV4LXN0YWJsZS9hcmNoL2FybTY0L2Jvb3QvSW1hZ2UgXAoJLWRyaXZl IGlmPW5vbmUsZmlsZT1yb290ZnMuaW1nLGZvcm1hdD1yYXcsaWQ9aGQwIFwKCS1kZXZpY2Ugdmly dGlvLW5ldC1kZXZpY2UsbmV0ZGV2PW5ldDAgXAoJLW5ldGRldiB1c2VyLGlkPW5ldDAsaG9zdD0x MC4wLjIuMSxob3N0ZndkPXRjcDo6NTU1NS06MjIgXAoJLWRldmljZSB2aXJ0aW8tYmxrLWRldmlj ZSxkcml2ZT1oZDAgXAoJLWFwcGVuZCAicm9vdD0vZGV2L3ZkYSBjb25zb2xlPXR0eUFNQTAgcm9v dGZzdHlwZT1leHQ0IGluaXQ9L2xpbnV4cmMgcncKb29wcz1wYW5pYyBubWlfd2F0Y2hkb2c9cGFu aWMgcGFuaWM9MSIKCj4gCj4gQ2FuIHlvdSBnaXZlIGFuIGV4YW1wbGUgb2YgdGhlIElBQlQgYW5k IERBQlQgeW91IHNlZT8KCkJlY2F1c2UgdGhlIGVtdWxhdGlvbiBvZiBjcDE1IGRlcHJlY2F0ZWQg aW5zdHJ1Y3Rpb25zIGlzIG5vdCB0cmlnZ2VyZWQsSQphZGQgcHJpbnRrIG1lc3NhZ2UgaW4gZWww X3N5bmNfY29tcGF0X2hhbmRsZXIoKSBmdW5jdGlvbiB0byBjaGVjayB0aGUgRUMKY29kZSBXaGVu IHRoZSBmb2xsb3dpbmcgdXNlci1zcGFjZSBjb2RlIGlzIGV4ZWN1dGVkLlRoZSBwcmludCBpcyBh cwpmb2xsb3dzOgoKL2hvbWUgIyAuL2NwMTVfYmFycmllcl90ZXN0ClsgICA3Mi40NjkzNjZdIGVs MF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MjAKWyAgIDcyLjQ3MDQ3 N10gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgyNApbICAgNzIu NDcxMzQyXSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDI0Clsg ICA3Mi40NzIzNDFdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4 MjAKWyAgIDcyLjQ3NDAzM10gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNy KT0gMHgyNApbICAgNzIuNDc1MTQ1XSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9F Qyhlc3IpPSAweDIwClsgICA3Mi40NzYyNTVdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1Jf RUx4X0VDKGVzcik9IDB4MjAKWyAgIDcyLjQ3Nzg2MV0gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIs IEVTUl9FTHhfRUMoZXNyKT0gMHgxMQpbICAgNzIuNDc4NDI3XSBlbDBfc3luY19jb21wYXRfaGFu ZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDExClsgICA3Mi40NzkxMTFdIGVsMF9zeW5jX2NvbXBh dF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MjQKWyAgIDcyLjQ3OTkxOV0gZWwwX3N5bmNf Y29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgxMQpbICAgNzIuNDgwNDY3XSBlbDBf c3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDExClsgICA3Mi40ODE2MTZd IGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9IDB4MTEKWyAgIDcyLjQ4 MzM4Nl0gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgyMApbICAg NzIuNDg0MTg3XSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VMeF9FQyhlc3IpPSAweDEx ClsgICA3Mi40ODUyMTVdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBFU1JfRUx4X0VDKGVzcik9 IDB4MTEKWyAgIDcyLjQ4NTg4Ml0gZWwwX3N5bmNfY29tcGF0X2hhbmRsZXIsIEVTUl9FTHhfRUMo ZXNyKT0gMHgyNApbICAgNzIuNDg2NjI4XSBlbDBfc3luY19jb21wYXRfaGFuZGxlciwgRVNSX0VM eF9FQyhlc3IpPSAweDExClsgICA3Mi40ODc0OTVdIGVsMF9zeW5jX2NvbXBhdF9oYW5kbGVyLCBF U1JfRUx4X0VDKGVzcik9IDB4MjAKWyAgIDcyLjQ4ODU0OF0gZWwwX3N5bmNfY29tcGF0X2hhbmRs ZXIsIEVTUl9FTHhfRUMoZXNyKT0gMHgxMQoKSSB3ZW50IHRocm91Z2ggIkFSTcKuIEFyY2hpdGVj dHVyZSBSZWZlcmVuY2UgTWFudWFsIEFSTXY4LCBmb3IgQVJNdjgtQQphcmNoaXRlY3R1cmUgcHJv ZmlsZSIgYW5kIGNoZWNrIHRoZSBoZWFkZXIgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lc3IuaCwK ZmluZCBpdCdzIEVDIGNvZGVzIGZvciBTVkMzMiwgSUFCVCBhbmQgREFCVC4KCiAjZGVmaW5lIEVT Ul9FTHhfRUNfU1ZDMzIgICAgKDB4MTEpCiAjZGVmaW5lIEVTUl9FTHhfRUNfSUFCVF9MT1cgKDB4 MjApCiAjZGVmaW5lIEVTUl9FTHhfRUNfREFCVF9MT1cgKDB4MjQpCgpJIGFsc28gbGVhcm5lZCBm cm9tIHRoZSBtYW51YWwgdGhhdCB0aGUgU0NUTFJfRUwxLkNQMTVCRU4gaXMgY3JpdGljYWwsCndo aWNoIGNvbnRyb2wgdGhlIGJlaGF2aW9yIG9mIGFib3ZlIGRlcHJlY2F0aW5nIG1lbW9yeSBiYXJy aWVyCmluc3RydWN0aW9ucyB3aGljaCBjYW4gYmUgc2V0IGJ5IHRoZSAnZWNobyAyID4KL3Byb2Mv c3lzL2FiaS9jcDE1X2JhcnJpZXInIGNvbW1hbmQuSG93ZXZlciwgdGhlIHJlc3VsdCBpcyB0aGUg c2FtZQp3aGV0aGVyIGl0IGlzIHNldCBvciBub3QuCgpJIHRoaW5rIHRoZSBjb2RlIHdlbnQgaW50 byB0aGUgd3JvbmcgY29kZSBmbG93IGJlY2F1c2Ugb2YgdGhlIHdyb25nIEVDCmNvZGUsIGJ1dCBJ IGRvbid0IGtub3cgd2h5IHRoZSB3cm9uZyBFQyB2YWx1ZSB3YXMgcGFzc2VkIGluLgoKPiAKPj4g c28gdGhhdCBJIGNhbiBub3QgdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUKPj4gcGF0Y2gu Q2FuIHlvdSBnaXZlIG1lIHNvbWUgaGVscCB0byB0ZXN0IHRoZSBlbXVsYXRpb24gb2YgdGhlc2UK Pj4gZGVwcmVjYXRlZCBpbnN0cnVjdGlvbnM/Cj4+Cj4+ICNpbmNsdWRlPHN0ZGlvLmg+Cj4+Cj4+ ICNkZWZpbmUgaXNiKHgpIF9fYXNtX18gX192b2xhdGlsZV9fICgibWNyIHAxNSwgMCwgJTAsIGM3 LCBjNSwgNCIgXAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogInIi ICgwKSA6ICJtZW1vcnkiKQo+PiAjZGVmaW5lIGRzYih4KSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo Im1jciBwMTUsIDAsICUwLCBjNywgYzEwLCA0IiBcCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDogOiAiciIgKDApIDogIm1lbW9yeSIpCj4+ICNkZWZpbmUgZG1iKHgpIF9f YXNtX18gX192b2xhdGlsZV9fICgibWNyIHAxNSwgMCwgJTAsIGM3LCBjMTAsIDUiIFwKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICJyIiAoMCkgOiAibWVtb3J5IikK PiAKPiBGV0lXLCB0aGVzZSBlbmNvZGluZ3MgbG9vayBjb3JyZWMgdG8gbWUuCj4gCj4gVGhhbmtz LAo+IE1hcmsuCj4gCj4+Cj4+IGludCBtYWluKCl7Cj4+ICAgICAgICAgaXNiKCk7Cj4+ICAgICAg ICAgZHNiKCk7Cj4+ICAgICAgICAgZG1iKCk7Cj4+ICAgICAgICAgcmV0dXJuIDA7Cj4+IH0KPj4K Pj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBNYXJrIFJ1dGxhbmQgPG1hcmsucnV0bGFuZEBhcm0uY29t Pgo+Pj4gQ2M6IENhdGFsaW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+Cj4+PiBD YzogSmFtZXMgTW9yc2UgPGphbWVzLm1vcnNlQGFybS5jb20+Cj4+PiBDYzogSm9leSBHb3VseSA8 am9leS5nb3VseUBhcm0uY29tPgo+Pj4gQ2M6IFBldGVyIFppamxzdHJhIDxwZXRlcnpAaW5mcmFk ZWFkLm9yZz4KPj4+IENjOiBXaWxsIERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgo+Pj4gU2lnbmVk LW9mZi1ieTogTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KPj4+IC0tLQo+Pj4g IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdHJhcHMuaCAgICAgICB8ICAxOSArLQo+Pj4gIGFyY2gv YXJtNjQva2VybmVsL2FybXY4X2RlcHJlY2F0ZWQuYyB8IDI4MiArKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0KPj4+ICBhcmNoL2FybTY0L2tlcm5lbC90cmFwcy5jICAgICAgICAgICAgfCAgNDAg Ky0tLQo+Pj4gIDMgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDE5MiBkZWxldGlv bnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFwcy5o IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFwcy5oCj4+PiBpbmRleCA2ZTU4MjY0NzBiZWEu LjFmMzYxZTJkYTUxNiAxMDA2NDQKPj4+IC0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdHJh cHMuaAo+Pj4gKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFwcy5oCj4+PiBAQCAtMTMs MTcgKzEzLDE2IEBACj4+PiAgCj4+PiAgc3RydWN0IHB0X3JlZ3M7Cj4+PiAgCj4+PiAtc3RydWN0 IHVuZGVmX2hvb2sgewo+Pj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Cj4+PiAtCXUzMiBpbnN0 cl9tYXNrOwo+Pj4gLQl1MzIgaW5zdHJfdmFsOwo+Pj4gLQl1NjQgcHN0YXRlX21hc2s7Cj4+PiAt CXU2NCBwc3RhdGVfdmFsOwo+Pj4gLQlpbnQgKCpmbikoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUz MiBpbnN0cik7Cj4+PiAtfTsKPj4+ICsjaWZkZWYgQ09ORklHX0FSTVY4X0RFUFJFQ0FURUQKPj4+ ICtib29sIHRyeV9lbXVsYXRlX2FybXY4X2RlcHJlY2F0ZWQoc3RydWN0IHB0X3JlZ3MgKnJlZ3Ms IHUzMiBpbnNuKTsKPj4+ICsjZWxzZQo+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+Pj4gK3RyeV9l bXVsYXRlX2FybXY4X2RlcHJlY2F0ZWQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnNuKQo+ Pj4gK3sKPj4+ICsJcmV0dXJuIGZhbHNlOwo+Pj4gK30KPj4+ICsjZW5kaWYgLyogQ09ORklHX0FS TVY4X0RFUFJFQ0FURUQgKi8KPj4+ICAKPj4+IC12b2lkIHJlZ2lzdGVyX3VuZGVmX2hvb2soc3Ry dWN0IHVuZGVmX2hvb2sgKmhvb2spOwo+Pj4gLXZvaWQgdW5yZWdpc3Rlcl91bmRlZl9ob29rKHN0 cnVjdCB1bmRlZl9ob29rICpob29rKTsKPj4+ICB2b2lkIGZvcmNlX3NpZ25hbF9pbmplY3QoaW50 IHNpZ25hbCwgaW50IGNvZGUsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBl cnIpOwo+Pj4gIHZvaWQgYXJtNjRfbm90aWZ5X3NlZ2ZhdWx0KHVuc2lnbmVkIGxvbmcgYWRkcik7 Cj4+PiAgdm9pZCBhcm02NF9mb3JjZV9zaWdfZmF1bHQoaW50IHNpZ25vLCBpbnQgY29kZSwgdW5z aWduZWQgbG9uZyBmYXIsIGNvbnN0IGNoYXIgKnN0cik7Cj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9h cm02NC9rZXJuZWwvYXJtdjhfZGVwcmVjYXRlZC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvYXJtdjhf ZGVwcmVjYXRlZC5jCj4+PiBpbmRleCA3ZjJjZTQ5ZGJmOTcuLmVkMDc4OGNmNmJiYiAxMDA2NDQK Pj4+IC0tLSBhL2FyY2gvYXJtNjQva2VybmVsL2FybXY4X2RlcHJlY2F0ZWQuYwo+Pj4gKysrIGIv YXJjaC9hcm02NC9rZXJuZWwvYXJtdjhfZGVwcmVjYXRlZC5jCj4+PiBAQCAtMzgsMTcgKzM4LDI0 IEBAIGVudW0gaW5zbl9lbXVsYXRpb25fbW9kZSB7Cj4+PiAgZW51bSBsZWdhY3lfaW5zbl9zdGF0 dXMgewo+Pj4gIAlJTlNOX0RFUFJFQ0FURUQsCj4+PiAgCUlOU05fT0JTT0xFVEUsCj4+PiArCUlO U05fVU5BVkFJTEFCTEUsCj4+PiAgfTsKPj4+ICAKPj4+ICBzdHJ1Y3QgaW5zbl9lbXVsYXRpb24g ewo+Pj4gIAljb25zdCBjaGFyCQkJKm5hbWU7Cj4+PiAtCXN0cnVjdCBsaXN0X2hlYWQJCW5vZGU7 Cj4+PiAgCWVudW0gbGVnYWN5X2luc25fc3RhdHVzCQlzdGF0dXM7Cj4+PiAtCXN0cnVjdCB1bmRl Zl9ob29rCQkqaG9va3M7Cj4+PiArCWJvb2wJCQkJKCp0cnlfZW11bGF0ZSkoc3RydWN0IHB0X3Jl Z3MgKnJlZ3MsCj4+PiArCQkJCQkJICAgICAgIHUzMiBpbnNuKTsKPj4+ICAJaW50CQkJCSgqc2V0 X2h3X21vZGUpKGJvb2wgZW5hYmxlKTsKPj4+ICsKPj4+ICAJaW50IGN1cnJlbnRfbW9kZTsKPj4+ ICAJaW50IG1pbjsKPj4+ICAJaW50IG1heDsKPj4+ICsKPj4+ICsJLyoKPj4+ICsJICogc3lzY3Rs IGZvciB0aGlzIGVtdWxhdGlvbiArIGEgc2VudGluYWwgZW50cnkuCj4+PiArCSAqLwo+Pj4gKwlz dHJ1Y3QgY3RsX3RhYmxlIHN5c2N0bFsyXTsKPj4+ICB9Owo+Pj4gIAo+Pj4gICNkZWZpbmUgQVJN X09QQ09ERV9DT05EVEVTVF9GQUlMICAgMAo+Pj4gQEAgLTcwLDYgKzc3LDcgQEAgc3RhdGljIHVu c2lnbmVkIGludCBhYXJjaDMyX2NoZWNrX2NvbmRpdGlvbih1MzIgb3Bjb2RlLCB1MzIgcHNyKQo+ Pj4gIAlyZXR1cm4gQVJNX09QQ09ERV9DT05EVEVTVF9VTkNPTkQ7Cj4+PiAgfQo+Pj4gIAo+Pj4g KyNpZmRlZiBDT05GSUdfU1dQX0VNVUxBVElPTgo+Pj4gIC8qCj4+PiAgICogIEltcGxlbWVudCBl bXVsYXRpb24gb2YgdGhlIFNXUC9TV1BCIGluc3RydWN0aW9ucyB1c2luZyBsb2FkLWV4Y2x1c2l2 ZSBhbmQKPj4+ICAgKiAgc3RvcmUtZXhjbHVzaXZlLgo+Pj4gQEAgLTIyMiwyOCArMjMwLDI3IEBA IHN0YXRpYyBpbnQgc3dwX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnN0cikK Pj4+ICAJcmV0dXJuIDA7Cj4+PiAgfQo+Pj4gIAo+Pj4gLS8qCj4+PiAtICogT25seSBlbXVsYXRl IFNXUC9TV1BCIGV4ZWN1dGVkIGluIEFSTSBzdGF0ZS9Vc2VyIG1vZGUuCj4+PiAtICogVGhlIGtl cm5lbCBtdXN0IGJlIFNXUCBmcmVlIGFuZCBTV1B7Qn0gZG9lcyBub3QgZXhpc3QgaW4gVGh1bWIu Cj4+PiAtICovCj4+PiAtc3RhdGljIHN0cnVjdCB1bmRlZl9ob29rIHN3cF9ob29rc1tdID0gewo+ Pj4gLQl7Cj4+PiAtCQkuaW5zdHJfbWFzawk9IDB4MGZiMDBmZjAsCj4+PiAtCQkuaW5zdHJfdmFs CT0gMHgwMTAwMDA5MCwKPj4+IC0JCS5wc3RhdGVfbWFzawk9IFBTUl9BQTMyX01PREVfTUFTSywK Pj4+IC0JCS5wc3RhdGVfdmFsCT0gUFNSX0FBMzJfTU9ERV9VU1IsCj4+PiAtCQkuZm4JCT0gc3dw X2hhbmRsZXIKPj4+IC0JfSwKPj4+IC0JeyB9Cj4+PiAtfTsKPj4+ICtzdGF0aWMgYm9vbCB0cnlf ZW11bGF0ZV9zd3Aoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnNuKQo+Pj4gK3sKPj4+ICsJ LyogU1dQe0J9IG9ubHkgZXhpc3RzIGluIEFSTSBzdGF0ZSBhbmQgZG9lcyBub3QgZXhpc3QgaW4g VGh1bWIgKi8KPj4+ICsJaWYgKCFjb21wYXRfdXNlcl9tb2RlKHJlZ3MpIHx8IGNvbXBhdF90aHVt Yl9tb2RlKHJlZ3MpKQo+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4gKwo+Pj4gKwlpZiAoKGluc24g JiAweDBmYjAwZmYwKSAhPSAweDAxMDAwMDkwKQo+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4gKwo+ Pj4gKwlyZXR1cm4gc3dwX2hhbmRsZXIocmVncywgaW5zbikgPT0gMDsKPj4+ICt9Cj4+PiAgCj4+ PiAgc3RhdGljIHN0cnVjdCBpbnNuX2VtdWxhdGlvbiBpbnNuX3N3cCA9IHsKPj4+ICAJLm5hbWUg PSAic3dwIiwKPj4+ICAJLnN0YXR1cyA9IElOU05fT0JTT0xFVEUsCj4+PiAtCS5ob29rcyA9IHN3 cF9ob29rcywKPj4+ICsJLnRyeV9lbXVsYXRlID0gdHJ5X2VtdWxhdGVfc3dwLAo+Pj4gIAkuc2V0 X2h3X21vZGUgPSBOVUxMLAo+Pj4gIH07Cj4+PiArI2VuZGlmIC8qIENPTkZJR19TV1BfRU1VTEFU SU9OICovCj4+PiAgCj4+PiArI2lmZGVmIENPTkZJR19DUDE1X0JBUlJJRVJfRU1VTEFUSU9OCj4+ PiAgc3RhdGljIGludCBjcDE1YmFycmllcl9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1 MzIgaW5zdHIpCj4+PiAgewo+Pj4gIAlwZXJmX3N3X2V2ZW50KFBFUkZfQ09VTlRfU1dfRU1VTEFU SU9OX0ZBVUxUUywgMSwgcmVncywgcmVncy0+cGMpOwo+Pj4gQEAgLTMwNiwzMSArMzEzLDI5IEBA IHN0YXRpYyBpbnQgY3AxNV9iYXJyaWVyX3NldF9od19tb2RlKGJvb2wgZW5hYmxlKQo+Pj4gIAly ZXR1cm4gMDsKPj4+ICB9Cj4+PiAgCj4+PiAtc3RhdGljIHN0cnVjdCB1bmRlZl9ob29rIGNwMTVf YmFycmllcl9ob29rc1tdID0gewo+Pj4gLQl7Cj4+PiAtCQkuaW5zdHJfbWFzawk9IDB4MGZmZjBm ZGYsCj4+PiAtCQkuaW5zdHJfdmFsCT0gMHgwZTA3MGY5YSwKPj4+IC0JCS5wc3RhdGVfbWFzawk9 IFBTUl9BQTMyX01PREVfTUFTSywKPj4+IC0JCS5wc3RhdGVfdmFsCT0gUFNSX0FBMzJfTU9ERV9V U1IsCj4+PiAtCQkuZm4JCT0gY3AxNWJhcnJpZXJfaGFuZGxlciwKPj4+IC0JfSwKPj4+IC0Jewo+ Pj4gLQkJLmluc3RyX21hc2sJPSAweDBmZmYwZmZmLAo+Pj4gLQkJLmluc3RyX3ZhbAk9IDB4MGUw NzBmOTUsCj4+PiAtCQkucHN0YXRlX21hc2sJPSBQU1JfQUEzMl9NT0RFX01BU0ssCj4+PiAtCQku cHN0YXRlX3ZhbAk9IFBTUl9BQTMyX01PREVfVVNSLAo+Pj4gLQkJLmZuCQk9IGNwMTViYXJyaWVy X2hhbmRsZXIsCj4+PiAtCX0sCj4+PiAtCXsgfQo+Pj4gLX07Cj4+PiArc3RhdGljIGJvb2wgdHJ5 X2VtdWxhdGVfY3AxNV9iYXJyaWVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgaW5zbikKPj4+ ICt7Cj4+PiArCWlmICghY29tcGF0X3VzZXJfbW9kZShyZWdzKSB8fCBjb21wYXRfdGh1bWJfbW9k ZShyZWdzKSkKPj4+ICsJCXJldHVybiBmYWxzZTsKPj4+ICsKPj4+ICsJaWYgKChpbnNuICYgMHgw ZmZmMGZkZikgPT0gMHgwZTA3MGY5YSkKPj4+ICsJCXJldHVybiBjcDE1YmFycmllcl9oYW5kbGVy KHJlZ3MsIGluc24pID09IDA7Cj4+PiArCj4+PiArCWlmICgoaW5zbiAmIDB4MGZmZjBmZmYpID09 IDB4MGUwNzBmOTUpCj4+PiArCQlyZXR1cm4gY3AxNWJhcnJpZXJfaGFuZGxlcihyZWdzLCBpbnNu KSA9PSAwOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gZmFsc2U7Cj4+PiArfQo+Pj4gIAo+Pj4gIHN0YXRp YyBzdHJ1Y3QgaW5zbl9lbXVsYXRpb24gaW5zbl9jcDE1X2JhcnJpZXIgPSB7Cj4+PiAgCS5uYW1l ID0gImNwMTVfYmFycmllciIsCj4+PiAgCS5zdGF0dXMgPSBJTlNOX0RFUFJFQ0FURUQsCj4+PiAt CS5ob29rcyA9IGNwMTVfYmFycmllcl9ob29rcywKPj4+ICsJLnRyeV9lbXVsYXRlID0gdHJ5X2Vt dWxhdGVfY3AxNV9iYXJyaWVyLAo+Pj4gIAkuc2V0X2h3X21vZGUgPSBjcDE1X2JhcnJpZXJfc2V0 X2h3X21vZGUsCj4+PiAgfTsKPj4+ICsjZW5kaWYgLyogQ09ORklHX0NQMTVfQkFSUklFUl9FTVVM QVRJT04gKi8KPj4+ICAKPj4+ICsjaWZkZWYgQ09ORklHX1NFVEVORF9FTVVMQVRJT04KPj4+ICBz dGF0aWMgaW50IHNldGVuZF9zZXRfaHdfbW9kZShib29sIGVuYWJsZSkKPj4+ICB7Cj4+PiAgCWlm ICghY3B1X3N1cHBvcnRzX21peGVkX2VuZGlhbl9lbDAoKSkKPj4+IEBAIC0zNzgsNjEgKzM4Myw0 MSBAQCBzdGF0aWMgaW50IHQxNl9zZXRlbmRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywg dTMyIGluc3RyKQo+Pj4gIAlyZXR1cm4gcmM7Cj4+PiAgfQo+Pj4gIAo+Pj4gLXN0YXRpYyBzdHJ1 Y3QgdW5kZWZfaG9vayBzZXRlbmRfaG9va3NbXSA9IHsKPj4+IC0Jewo+Pj4gLQkJLmluc3RyX21h c2sJPSAweGZmZmZmZGZmLAo+Pj4gLQkJLmluc3RyX3ZhbAk9IDB4ZjEwMTAwMDAsCj4+PiAtCQku cHN0YXRlX21hc2sJPSBQU1JfQUEzMl9NT0RFX01BU0ssCj4+PiAtCQkucHN0YXRlX3ZhbAk9IFBT Ul9BQTMyX01PREVfVVNSLAo+Pj4gLQkJLmZuCQk9IGEzMl9zZXRlbmRfaGFuZGxlciwKPj4+IC0J fSwKPj4+IC0Jewo+Pj4gLQkJLyogVGh1bWIgbW9kZSAqLwo+Pj4gLQkJLmluc3RyX21hc2sJPSAw eGZmZmZmZmY3LAo+Pj4gLQkJLmluc3RyX3ZhbAk9IDB4MDAwMGI2NTAsCj4+PiAtCQkucHN0YXRl X21hc2sJPSAoUFNSX0FBMzJfVF9CSVQgfCBQU1JfQUEzMl9NT0RFX01BU0spLAo+Pj4gLQkJLnBz dGF0ZV92YWwJPSAoUFNSX0FBMzJfVF9CSVQgfCBQU1JfQUEzMl9NT0RFX1VTUiksCj4+PiAtCQku Zm4JCT0gdDE2X3NldGVuZF9oYW5kbGVyLAo+Pj4gLQl9LAo+Pj4gLQl7fQo+Pj4gLX07Cj4+PiAr c3RhdGljIGJvb2wgdHJ5X2VtdWxhdGVfc2V0ZW5kKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIg aW5zbikKPj4+ICt7Cj4+PiArCWlmIChjb21wYXRfdGh1bWJfbW9kZShyZWdzKSAmJgo+Pj4gKwkg ICAgKGluc24gJiAweGZmZmZmZmY3KSA9PSAweDAwMDBiNjUwKQo+Pj4gKwkJcmV0dXJuIHQxNl9z ZXRlbmRfaGFuZGxlcihyZWdzLCBpbnNuKSA9PSAwOwo+Pj4gKwo+Pj4gKwlpZiAoY29tcGF0X3Vz ZXJfbW9kZShyZWdzKSAmJgo+Pj4gKwkgICAgKGluc24gJiAweGZmZmZmZGZmKSA9PSAweGYxMDEw MDAwKQo+Pj4gKwkJcmV0dXJuIGEzMl9zZXRlbmRfaGFuZGxlcihyZWdzLCBpbnNuKSA9PSAwOwo+ Pj4gKwo+Pj4gKwlyZXR1cm4gZmFsc2U7Cj4+PiArfQo+Pj4gIAo+Pj4gIHN0YXRpYyBzdHJ1Y3Qg aW5zbl9lbXVsYXRpb24gaW5zbl9zZXRlbmQgPSB7Cj4+PiAgCS5uYW1lID0gInNldGVuZCIsCj4+ PiAgCS5zdGF0dXMgPSBJTlNOX0RFUFJFQ0FURUQsCj4+PiAtCS5ob29rcyA9IHNldGVuZF9ob29r cywKPj4+ICsJLnRyeV9lbXVsYXRlID0gdHJ5X2VtdWxhdGVfc2V0ZW5kLAo+Pj4gIAkuc2V0X2h3 X21vZGUgPSBzZXRlbmRfc2V0X2h3X21vZGUsCj4+PiAgfTsKPj4+ICsjZW5kaWYgLyogQ09ORklH X1NFVEVORF9FTVVMQVRJT04gKi8KPj4+ICsKPj4+ICtzdGF0aWMgc3RydWN0IGluc25fZW11bGF0 aW9uICppbnNuX2VtdWxhdGlvbnNbXSA9IHsKPj4+ICsjaWZkZWYgQ09ORklHX1NXUF9FTVVMQVRJ T04KPj4+ICsJJmluc25fc3dwLAo+Pj4gKyNlbmRpZgo+Pj4gKyNpZmRlZiBDT05GSUdfQ1AxNV9C QVJSSUVSX0VNVUxBVElPTgo+Pj4gKwkmaW5zbl9jcDE1X2JhcnJpZXIsCj4+PiArI2VuZGlmCj4+ PiArI2lmZGVmIENPTkZJR19TRVRFTkRfRU1VTEFUSU9OCj4+PiArCSZpbnNuX3NldGVuZCwKPj4+ ICsjZW5kaWYKPj4+ICt9Owo+Pj4gIAo+Pj4gLXN0YXRpYyBMSVNUX0hFQUQoaW5zbl9lbXVsYXRp b24pOwo+Pj4gLXN0YXRpYyBpbnQgbnJfaW5zbl9lbXVsYXRlZCBfX2luaXRkYXRhOwo+Pj4gLXN0 YXRpYyBERUZJTkVfUkFXX1NQSU5MT0NLKGluc25fZW11bGF0aW9uX2xvY2spOwo+Pj4gIHN0YXRp YyBERUZJTkVfTVVURVgoaW5zbl9lbXVsYXRpb25fbXV0ZXgpOwo+Pj4gIAo+Pj4gLXN0YXRpYyB2 b2lkIHJlZ2lzdGVyX2VtdWxhdGlvbl9ob29rcyhzdHJ1Y3QgaW5zbl9lbXVsYXRpb24gKmluc24p Cj4+PiAtewo+Pj4gLQlzdHJ1Y3QgdW5kZWZfaG9vayAqaG9vazsKPj4+IC0KPj4+IC0JQlVHX09O KCFpbnNuLT5ob29rcyk7Cj4+PiAtCj4+PiAtCWZvciAoaG9vayA9IGluc24tPmhvb2tzOyBob29r LT5pbnN0cl9tYXNrOyBob29rKyspCj4+PiAtCQlyZWdpc3Rlcl91bmRlZl9ob29rKGhvb2spOwo+ Pj4gLQo+Pj4gLQlwcl9ub3RpY2UoIlJlZ2lzdGVyZWQgJXMgZW11bGF0aW9uIGhhbmRsZXJcbiIs IGluc24tPm5hbWUpOwo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMgdm9pZCByZW1vdmVfZW11bGF0 aW9uX2hvb2tzKHN0cnVjdCBpbnNuX2VtdWxhdGlvbiAqaW5zbikKPj4+IC17Cj4+PiAtCXN0cnVj dCB1bmRlZl9ob29rICpob29rOwo+Pj4gLQo+Pj4gLQlCVUdfT04oIWluc24tPmhvb2tzKTsKPj4+ IC0KPj4+IC0JZm9yIChob29rID0gaW5zbi0+aG9va3M7IGhvb2stPmluc3RyX21hc2s7IGhvb2sr KykKPj4+IC0JCXVucmVnaXN0ZXJfdW5kZWZfaG9vayhob29rKTsKPj4+IC0KPj4+IC0JcHJfbm90 aWNlKCJSZW1vdmVkICVzIGVtdWxhdGlvbiBoYW5kbGVyXG4iLCBpbnNuLT5uYW1lKTsKPj4+IC19 Cj4+PiAtCj4+PiAgc3RhdGljIHZvaWQgZW5hYmxlX2luc25faHdfbW9kZSh2b2lkICpkYXRhKQo+ Pj4gIHsKPj4+ICAJc3RydWN0IGluc25fZW11bGF0aW9uICppbnNuID0gKHN0cnVjdCBpbnNuX2Vt dWxhdGlvbiAqKWRhdGE7Cj4+PiBAQCAtNDY5LDE4ICs0NTQsMjQgQEAgc3RhdGljIGludCBydW5f YWxsX2luc25fc2V0X2h3X21vZGUodW5zaWduZWQgaW50IGNwdSkKPj4+ICB7Cj4+PiAgCWludCBy YyA9IDA7Cj4+PiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+PiAtCXN0cnVjdCBpbnNuX2VtdWxh dGlvbiAqaW5zbjsKPj4+ICAKPj4+IC0JcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZpbnNuX2VtdWxh dGlvbl9sb2NrLCBmbGFncyk7Cj4+PiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoaW5zbiwgJmluc25f ZW11bGF0aW9uLCBub2RlKSB7Cj4+PiAtCQlib29sIGVuYWJsZSA9IChpbnNuLT5jdXJyZW50X21v ZGUgPT0gSU5TTl9IVyk7Cj4+PiArCS8qCj4+PiArCSAqIERpc2FibGUgSVJRcyB0byBzZXJpYWxp emUgYWdhaW5zdCBhbiBJUEkgZnJvbQo+Pj4gKwkgKiBydW5fYWxsX2NwdV9zZXRfaHdfbW9kZSgp LCBlbnN1cmluZyB0aGUgSFcgaXMgcHJvZ3JhbW1lZCB0byB0aGUgbW9zdAo+Pj4gKwkgKiByZWNl bnQgZW5hYmxlbWVudCBzdGF0ZSBpZiB0aGUgdHdvIHJhY2Ugd2l0aCBvbmUgYW5vdGhlci4KPj4+ ICsJICovCj4+PiArCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKPj4+ICsJZm9yIChpbnQgaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKGluc25fZW11bGF0aW9ucyk7IGkrKykgewo+Pj4gKwkJc3RydWN0IGlu c25fZW11bGF0aW9uICppbnNuID0gaW5zbl9lbXVsYXRpb25zW2ldOwo+Pj4gKwkJYm9vbCBlbmFi bGUgPSBSRUFEX09OQ0UoaW5zbi0+Y3VycmVudF9tb2RlKSA9PSBJTlNOX0hXOwo+Pj4gIAkJaWYg KGluc24tPnNldF9od19tb2RlICYmIGluc24tPnNldF9od19tb2RlKGVuYWJsZSkpIHsKPj4+ICAJ CQlwcl93YXJuKCJDUFVbJXVdIGNhbm5vdCBzdXBwb3J0IHRoZSBlbXVsYXRpb24gb2YgJXMiLAo+ Pj4gIAkJCQljcHUsIGluc24tPm5hbWUpOwo+Pj4gIAkJCXJjID0gLUVJTlZBTDsKPj4+ICAJCX0K Pj4+ICAJfQo+Pj4gLQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5zbl9lbXVsYXRpb25f bG9jaywgZmxhZ3MpOwo+Pj4gKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Cj4+PiArCj4+PiAg CXJldHVybiByYzsKPj4+ICB9Cj4+PiAgCj4+PiBAQCAtNDkzLDcgKzQ4NCw2IEBAIHN0YXRpYyBp bnQgdXBkYXRlX2luc25fZW11bGF0aW9uX21vZGUoc3RydWN0IGluc25fZW11bGF0aW9uICppbnNu LAo+Pj4gIAljYXNlIElOU05fVU5ERUY6IC8qIE5vdGhpbmcgdG8gYmUgZG9uZSAqLwo+Pj4gIAkJ YnJlYWs7Cj4+PiAgCWNhc2UgSU5TTl9FTVVMQVRFOgo+Pj4gLQkJcmVtb3ZlX2VtdWxhdGlvbl9o b29rcyhpbnNuKTsKPj4+ICAJCWJyZWFrOwo+Pj4gIAljYXNlIElOU05fSFc6Cj4+PiAgCQlpZiAo IXJ1bl9hbGxfY3B1X3NldF9od19tb2RlKGluc24sIGZhbHNlKSkKPj4+IEBAIC01MDUsNyArNDk1 LDYgQEAgc3RhdGljIGludCB1cGRhdGVfaW5zbl9lbXVsYXRpb25fbW9kZShzdHJ1Y3QgaW5zbl9l bXVsYXRpb24gKmluc24sCj4+PiAgCWNhc2UgSU5TTl9VTkRFRjoKPj4+ICAJCWJyZWFrOwo+Pj4g IAljYXNlIElOU05fRU1VTEFURToKPj4+IC0JCXJlZ2lzdGVyX2VtdWxhdGlvbl9ob29rcyhpbnNu KTsKPj4+ICAJCWJyZWFrOwo+Pj4gIAljYXNlIElOU05fSFc6Cj4+PiAgCQlyZXQgPSBydW5fYWxs X2NwdV9zZXRfaHdfbW9kZShpbnNuLCB0cnVlKTsKPj4+IEBAIC01MTcsMzQgKzUwNiw2IEBAIHN0 YXRpYyBpbnQgdXBkYXRlX2luc25fZW11bGF0aW9uX21vZGUoc3RydWN0IGluc25fZW11bGF0aW9u ICppbnNuLAo+Pj4gIAlyZXR1cm4gcmV0Owo+Pj4gIH0KPj4+ICAKPj4+IC1zdGF0aWMgdm9pZCBf X2luaXQgcmVnaXN0ZXJfaW5zbl9lbXVsYXRpb24oc3RydWN0IGluc25fZW11bGF0aW9uICppbnNu KQo+Pj4gLXsKPj4+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPj4+IC0KPj4+IC0JaW5zbi0+bWlu ID0gSU5TTl9VTkRFRjsKPj4+IC0KPj4+IC0Jc3dpdGNoIChpbnNuLT5zdGF0dXMpIHsKPj4+IC0J Y2FzZSBJTlNOX0RFUFJFQ0FURUQ6Cj4+PiAtCQlpbnNuLT5jdXJyZW50X21vZGUgPSBJTlNOX0VN VUxBVEU7Cj4+PiAtCQkvKiBEaXNhYmxlIHRoZSBIVyBtb2RlIGlmIGl0IHdhcyB0dXJuZWQgb24g YXQgZWFybHkgYm9vdCB0aW1lICovCj4+PiAtCQlydW5fYWxsX2NwdV9zZXRfaHdfbW9kZShpbnNu LCBmYWxzZSk7Cj4+PiAtCQlpbnNuLT5tYXggPSBJTlNOX0hXOwo+Pj4gLQkJYnJlYWs7Cj4+PiAt CWNhc2UgSU5TTl9PQlNPTEVURToKPj4+IC0JCWluc24tPmN1cnJlbnRfbW9kZSA9IElOU05fVU5E RUY7Cj4+PiAtCQlpbnNuLT5tYXggPSBJTlNOX0VNVUxBVEU7Cj4+PiAtCQlicmVhazsKPj4+IC0J fQo+Pj4gLQo+Pj4gLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmluc25fZW11bGF0aW9uX2xvY2ss IGZsYWdzKTsKPj4+IC0JbGlzdF9hZGQoJmluc24tPm5vZGUsICZpbnNuX2VtdWxhdGlvbik7Cj4+ PiAtCW5yX2luc25fZW11bGF0ZWQrKzsKPj4+IC0JcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUo Jmluc25fZW11bGF0aW9uX2xvY2ssIGZsYWdzKTsKPj4+IC0KPj4+IC0JLyogUmVnaXN0ZXIgYW55 IGhhbmRsZXJzIGlmIHJlcXVpcmVkICovCj4+PiAtCXVwZGF0ZV9pbnNuX2VtdWxhdGlvbl9tb2Rl KGluc24sIElOU05fVU5ERUYpOwo+Pj4gLX0KPj4+IC0KPj4+ICBzdGF0aWMgaW50IGVtdWxhdGlv bl9wcm9jX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSwKPj4+ICAJ CQkJICB2b2lkICpidWZmZXIsIHNpemVfdCAqbGVucCwKPj4+ICAJCQkJICBsb2ZmX3QgKnBwb3Mp Cj4+PiBAQCAtNTYyLDcgKzUyMyw3IEBAIHN0YXRpYyBpbnQgZW11bGF0aW9uX3Byb2NfaGFuZGxl cihzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLAo+Pj4gIAlyZXQgPSB1cGRhdGVf aW5zbl9lbXVsYXRpb25fbW9kZShpbnNuLCBwcmV2X21vZGUpOwo+Pj4gIAlpZiAocmV0KSB7Cj4+ PiAgCQkvKiBNb2RlIGNoYW5nZSBmYWlsZWQsIHJldmVydCB0byBwcmV2aW91cyBtb2RlLiAqLwo+ Pj4gLQkJaW5zbi0+Y3VycmVudF9tb2RlID0gcHJldl9tb2RlOwo+Pj4gKwkJV1JJVEVfT05DRShp bnNuLT5jdXJyZW50X21vZGUsIHByZXZfbW9kZSk7Cj4+PiAgCQl1cGRhdGVfaW5zbl9lbXVsYXRp b25fbW9kZShpbnNuLCBJTlNOX1VOREVGKTsKPj4+ICAJfQo+Pj4gIHJldDoKPj4+IEBAIC01NzAs MjEgKzUzMSwzNCBAQCBzdGF0aWMgaW50IGVtdWxhdGlvbl9wcm9jX2hhbmRsZXIoc3RydWN0IGN0 bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSwKPj4+ICAJcmV0dXJuIHJldDsKPj4+ICB9Cj4+PiAg Cj4+PiAtc3RhdGljIHZvaWQgX19pbml0IHJlZ2lzdGVyX2luc25fZW11bGF0aW9uX3N5c2N0bCh2 b2lkKQo+Pj4gK3N0YXRpYyB2b2lkIF9faW5pdCByZWdpc3Rlcl9pbnNuX2VtdWxhdGlvbihzdHJ1 Y3QgaW5zbl9lbXVsYXRpb24gKmluc24pCj4+PiAgewo+Pj4gLQl1bnNpZ25lZCBsb25nIGZsYWdz Owo+Pj4gLQlpbnQgaSA9IDA7Cj4+PiAtCXN0cnVjdCBpbnNuX2VtdWxhdGlvbiAqaW5zbjsKPj4+ IC0Jc3RydWN0IGN0bF90YWJsZSAqaW5zbnNfc3lzY3RsLCAqc3lzY3RsOwo+Pj4gKwlzdHJ1Y3Qg Y3RsX3RhYmxlICpzeXNjdGw7Cj4+PiAgCj4+PiAtCWluc25zX3N5c2N0bCA9IGtjYWxsb2MobnJf aW5zbl9lbXVsYXRlZCArIDEsIHNpemVvZigqc3lzY3RsKSwKPj4+IC0JCQkgICAgICAgR0ZQX0tF Uk5FTCk7Cj4+PiAtCWlmICghaW5zbnNfc3lzY3RsKQo+Pj4gLQkJcmV0dXJuOwo+Pj4gKwlpbnNu LT5taW4gPSBJTlNOX1VOREVGOwo+Pj4gIAo+Pj4gLQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmlu c25fZW11bGF0aW9uX2xvY2ssIGZsYWdzKTsKPj4+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShpbnNu LCAmaW5zbl9lbXVsYXRpb24sIG5vZGUpIHsKPj4+IC0JCXN5c2N0bCA9ICZpbnNuc19zeXNjdGxb aV07Cj4+PiArCXN3aXRjaCAoaW5zbi0+c3RhdHVzKSB7Cj4+PiArCWNhc2UgSU5TTl9ERVBSRUNB VEVEOgo+Pj4gKwkJaW5zbi0+Y3VycmVudF9tb2RlID0gSU5TTl9FTVVMQVRFOwo+Pj4gKwkJLyog RGlzYWJsZSB0aGUgSFcgbW9kZSBpZiBpdCB3YXMgdHVybmVkIG9uIGF0IGVhcmx5IGJvb3QgdGlt ZSAqLwo+Pj4gKwkJcnVuX2FsbF9jcHVfc2V0X2h3X21vZGUoaW5zbiwgZmFsc2UpOwo+Pj4gKwkJ aW5zbi0+bWF4ID0gSU5TTl9IVzsKPj4+ICsJCWJyZWFrOwo+Pj4gKwljYXNlIElOU05fT0JTT0xF VEU6Cj4+PiArCQlpbnNuLT5jdXJyZW50X21vZGUgPSBJTlNOX1VOREVGOwo+Pj4gKwkJaW5zbi0+ bWF4ID0gSU5TTl9FTVVMQVRFOwo+Pj4gKwkJYnJlYWs7Cj4+PiArCWNhc2UgSU5TTl9VTkFWQUlM QUJMRToKPj4+ICsJCWluc24tPmN1cnJlbnRfbW9kZSA9IElOU05fVU5ERUY7Cj4+PiArCQlpbnNu LT5tYXggPSBJTlNOX1VOREVGOwo+Pj4gKwkJYnJlYWs7Cj4+PiArCX0KPj4+ICsKPj4+ICsJLyog UHJvZ3JhbSB0aGUgSFcgaWYgcmVxdWlyZWQgKi8KPj4+ICsJdXBkYXRlX2luc25fZW11bGF0aW9u X21vZGUoaW5zbiwgSU5TTl9VTkRFRik7Cj4+PiArCj4+PiArCWlmIChpbnNuLT5zdGF0dXMgIT0g SU5TTl9VTkFWQUlMQUJMRSkgewo+Pj4gKwkJc3lzY3RsID0gJmluc24tPnN5c2N0bFswXTsKPj4+ ICAKPj4+ICAJCXN5c2N0bC0+bW9kZSA9IDA2NDQ7Cj4+PiAgCQlzeXNjdGwtPm1heGxlbiA9IHNp emVvZihpbnQpOwo+Pj4gQEAgLTU5NCwxMSArNTY4LDMyIEBAIHN0YXRpYyB2b2lkIF9faW5pdCBy ZWdpc3Rlcl9pbnNuX2VtdWxhdGlvbl9zeXNjdGwodm9pZCkKPj4+ICAJCXN5c2N0bC0+ZXh0cmEx ID0gJmluc24tPm1pbjsKPj4+ICAJCXN5c2N0bC0+ZXh0cmEyID0gJmluc24tPm1heDsKPj4+ICAJ CXN5c2N0bC0+cHJvY19oYW5kbGVyID0gZW11bGF0aW9uX3Byb2NfaGFuZGxlcjsKPj4+IC0JCWkr KzsKPj4+ICsKPj4+ICsJCXJlZ2lzdGVyX3N5c2N0bCgiYWJpIiwgc3lzY3RsKTsKPj4+ICsJfQo+ Pj4gK30KPj4+ICsKPj4+ICtib29sIHRyeV9lbXVsYXRlX2FybXY4X2RlcHJlY2F0ZWQoc3RydWN0 IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnNuKQo+Pj4gK3sKPj4+ICsJZm9yIChpbnQgaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGluc25fZW11bGF0aW9ucyk7IGkrKykgewo+Pj4gKwkJc3RydWN0IGluc25f ZW11bGF0aW9uICppZSA9IGluc25fZW11bGF0aW9uc1tpXTsKPj4+ICsKPj4+ICsJCWlmIChpZS0+ c3RhdHVzID09IElOU05fVU5BVkFJTEFCTEUpCj4+PiArCQkJY29udGludWU7Cj4+PiArCj4+PiAr CQkvKgo+Pj4gKwkJICogQSB0cmFwIG1heSByYWNlIHdpdGggdGhlIG1vZGUgYmVpbmcgY2hhbmdl ZAo+Pj4gKwkJICogSU5TTl9FTVVMQVRFPC0+SU5TTl9IVy4gVHJ5IHRvIGVtdWxhdGUgdGhlIGlu c3RydWN0aW9uIHRvCj4+PiArCQkgKiBhdm9pZCBhIHNwdXJpb3VzIFVOREVGLgo+Pj4gKwkJICov Cj4+PiArCQlpZiAoUkVBRF9PTkNFKGllLT5jdXJyZW50X21vZGUpID09IElOU05fVU5ERUYpCj4+ PiArCQkJY29udGludWU7Cj4+PiArCj4+PiArCQlpZiAoaWUtPnRyeV9lbXVsYXRlKHJlZ3MsIGlu c24pKQo+Pj4gKwkJCXJldHVybiB0cnVlOwo+Pj4gIAl9Cj4+PiAtCXJhd19zcGluX3VubG9ja19p cnFyZXN0b3JlKCZpbnNuX2VtdWxhdGlvbl9sb2NrLCBmbGFncyk7Cj4+PiAgCj4+PiAtCXJlZ2lz dGVyX3N5c2N0bCgiYWJpIiwgaW5zbnNfc3lzY3RsKTsKPj4+ICsJcmV0dXJuIGZhbHNlOwo+Pj4g IH0KPj4+ICAKPj4+ICAvKgo+Pj4gQEAgLTYwNywyNCArNjAyLDI1IEBAIHN0YXRpYyB2b2lkIF9f aW5pdCByZWdpc3Rlcl9pbnNuX2VtdWxhdGlvbl9zeXNjdGwodm9pZCkKPj4+ICAgKi8KPj4+ICBz dGF0aWMgaW50IF9faW5pdCBhcm12OF9kZXByZWNhdGVkX2luaXQodm9pZCkKPj4+ICB7Cj4+PiAt CWlmIChJU19FTkFCTEVEKENPTkZJR19TV1BfRU1VTEFUSU9OKSkKPj4+IC0JCXJlZ2lzdGVyX2lu c25fZW11bGF0aW9uKCZpbnNuX3N3cCk7Cj4+PiArI2lmZGVmIENPTkZJR19TRVRFTkRfRU1VTEFU SU9OCj4+PiArCWlmICghc3lzdGVtX3N1cHBvcnRzX21peGVkX2VuZGlhbl9lbDAoKSkgewo+Pj4g KwkJaW5zbl9zZXRlbmQuc3RhdHVzID0gSU5TTl9VTkFWQUlMQUJMRTsKPj4+ICsJCXByX2luZm8o InNldGVuZCBpbnN0cnVjdGlvbiBlbXVsYXRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHN5 c3RlbVxuIik7Cj4+PiArCX0KPj4+ICAKPj4+IC0JaWYgKElTX0VOQUJMRUQoQ09ORklHX0NQMTVf QkFSUklFUl9FTVVMQVRJT04pKQo+Pj4gLQkJcmVnaXN0ZXJfaW5zbl9lbXVsYXRpb24oJmluc25f Y3AxNV9iYXJyaWVyKTsKPj4+ICsjZW5kaWYKPj4+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGluc25fZW11bGF0aW9ucyk7IGkrKykgewo+Pj4gKwkJc3RydWN0IGluc25fZW11bGF0 aW9uICppZSA9IGluc25fZW11bGF0aW9uc1tpXTsKPj4+ICAKPj4+IC0JaWYgKElTX0VOQUJMRUQo Q09ORklHX1NFVEVORF9FTVVMQVRJT04pKSB7Cj4+PiAtCQlpZiAoc3lzdGVtX3N1cHBvcnRzX21p eGVkX2VuZGlhbl9lbDAoKSkKPj4+IC0JCQlyZWdpc3Rlcl9pbnNuX2VtdWxhdGlvbigmaW5zbl9z ZXRlbmQpOwo+Pj4gLQkJZWxzZQo+Pj4gLQkJCXByX2luZm8oInNldGVuZCBpbnN0cnVjdGlvbiBl bXVsYXRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbVxuIik7Cj4+PiArCQlpZiAo aWUtPnN0YXR1cyA9PSBJTlNOX1VOQVZBSUxBQkxFKQo+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4gKwo+ Pj4gKwkJcmVnaXN0ZXJfaW5zbl9lbXVsYXRpb24oaWUpOwo+Pj4gIAl9Cj4+PiAgCj4+PiAgCWNw dWhwX3NldHVwX3N0YXRlX25vY2FsbHMoQ1BVSFBfQVBfQVJNNjRfSVNOREVQX1NUQVJUSU5HLAo+ Pj4gIAkJCQkgICJhcm02NC9pc25kZXA6c3RhcnRpbmciLAo+Pj4gIAkJCQkgIHJ1bl9hbGxfaW5z bl9zZXRfaHdfbW9kZSwgTlVMTCk7Cj4+PiAtCXJlZ2lzdGVyX2luc25fZW11bGF0aW9uX3N5c2N0 bCgpOwo+Pj4gLQo+Pj4gIAlyZXR1cm4gMDsKPj4+ICB9Cj4+PiAgCj4+PiBkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvYXJtNjQva2VybmVsL3RyYXBzLmMKPj4+ IGluZGV4IDk2ZWFmMWFhZWMxMi4uNGMwY2FhNTg5ZTEyIDEwMDY0NAo+Pj4gLS0tIGEvYXJjaC9h cm02NC9rZXJuZWwvdHJhcHMuYwo+Pj4gKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvdHJhcHMuYwo+ Pj4gQEAgLTM3MywyNyArMzczLDYgQEAgdm9pZCBhcm02NF9za2lwX2ZhdWx0aW5nX2luc3RydWN0 aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIHNpemUpCj4+PiAgCQlyZWdz LT5wc3RhdGUgJj0gflBTUl9CVFlQRV9NQVNLOwo+Pj4gIH0KPj4+ICAKPj4+IC1zdGF0aWMgTElT VF9IRUFEKHVuZGVmX2hvb2spOwo+Pj4gLXN0YXRpYyBERUZJTkVfUkFXX1NQSU5MT0NLKHVuZGVm X2xvY2spOwo+Pj4gLQo+Pj4gLXZvaWQgcmVnaXN0ZXJfdW5kZWZfaG9vayhzdHJ1Y3QgdW5kZWZf aG9vayAqaG9vaykKPj4+IC17Cj4+PiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+PiAtCj4+PiAt CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmdW5kZWZfbG9jaywgZmxhZ3MpOwo+Pj4gLQlsaXN0X2Fk ZCgmaG9vay0+bm9kZSwgJnVuZGVmX2hvb2spOwo+Pj4gLQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmdW5kZWZfbG9jaywgZmxhZ3MpOwo+Pj4gLX0KPj4+IC0KPj4+IC12b2lkIHVucmVnaXN0 ZXJfdW5kZWZfaG9vayhzdHJ1Y3QgdW5kZWZfaG9vayAqaG9vaykKPj4+IC17Cj4+PiAtCXVuc2ln bmVkIGxvbmcgZmxhZ3M7Cj4+PiAtCj4+PiAtCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmdW5kZWZf bG9jaywgZmxhZ3MpOwo+Pj4gLQlsaXN0X2RlbCgmaG9vay0+bm9kZSk7Cj4+PiAtCXJhd19zcGlu X3VubG9ja19pcnFyZXN0b3JlKCZ1bmRlZl9sb2NrLCBmbGFncyk7Cj4+PiAtfQo+Pj4gLQo+Pj4g IHN0YXRpYyBpbnQgdXNlcl9pbnNuX3JlYWQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiAqaW5z bnApCj4+PiAgewo+Pj4gIAl1MzIgaW5zdHI7Cj4+PiBAQCAtNDI1LDIzICs0MDQsNiBAQCBzdGF0 aWMgaW50IHVzZXJfaW5zbl9yZWFkKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgKmluc25wKQo+ Pj4gIAlyZXR1cm4gMDsKPj4+ICB9Cj4+PiAgCj4+PiAtc3RhdGljIGludCBjYWxsX3VuZGVmX2hv b2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnN0cikKPj4+IC17Cj4+PiAtCXN0cnVjdCB1 bmRlZl9ob29rICpob29rOwo+Pj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4gLQlpbnQgKCpm bikoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBpbnN0cikgPSBOVUxMOwo+Pj4gLQo+Pj4gLQly YXdfc3Bpbl9sb2NrX2lycXNhdmUoJnVuZGVmX2xvY2ssIGZsYWdzKTsKPj4+IC0JbGlzdF9mb3Jf ZWFjaF9lbnRyeShob29rLCAmdW5kZWZfaG9vaywgbm9kZSkKPj4+IC0JCWlmICgoaW5zdHIgJiBo b29rLT5pbnN0cl9tYXNrKSA9PSBob29rLT5pbnN0cl92YWwgJiYKPj4+IC0JCQkocmVncy0+cHN0 YXRlICYgaG9vay0+cHN0YXRlX21hc2spID09IGhvb2stPnBzdGF0ZV92YWwpCj4+PiAtCQkJZm4g PSBob29rLT5mbjsKPj4+IC0KPj4+IC0JcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVuZGVm X2xvY2ssIGZsYWdzKTsKPj4+IC0KPj4+IC0JcmV0dXJuIGZuID8gZm4ocmVncywgaW5zdHIpIDog MTsKPj4+IC19Cj4+PiAtCj4+PiAgdm9pZCBmb3JjZV9zaWduYWxfaW5qZWN0KGludCBzaWduYWws IGludCBjb2RlLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgZXJyKQo+Pj4g IHsKPj4+ICAJY29uc3QgY2hhciAqZGVzYzsKPj4+IEBAIC01MDIsNyArNDY0LDcgQEAgdm9pZCBk b19lbDBfdW5kZWYoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgZXNyKQo+Pj4g IAlpZiAodHJ5X2VtdWxhdGVfbXJzKHJlZ3MsIGluc24pKQo+Pj4gIAkJcmV0dXJuOwo+Pj4gIAo+ Pj4gLQlpZiAoY2FsbF91bmRlZl9ob29rKHJlZ3MsIGluc24pID09IDApCj4+PiArCWlmICh0cnlf ZW11bGF0ZV9hcm12OF9kZXByZWNhdGVkKHJlZ3MsIGluc24pKQo+Pj4gIAkJcmV0dXJuOwo+Pj4g IAo+Pj4gIG91dF9lcnI6Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4+IGxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cj4+IGxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwo+PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwKPiAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK