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 D01D4C77B73 for ; Wed, 24 May 2023 07:18:06 +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=wdeHdk+DsmclPtYg0R7ziSlI1qXrtdSHfhk0czTntVE=; b=ejosbZsqup3BmH KxFGjoFs5too20baF/uFWWn+6Ck3mIIpTG3TEh05GH2udNzLtANZoYHXzzD3XZhjQHA14nv4+Hl/S iluCp3LdCF4Qu3yU+G6VvAqXuTkw+1aA8xlkvap00ORxqfUD1Ehoue6ob0Z1FvUk7hods3II9okL2 dkI+YqNKAt+rVNsOt8VIceRLYVrf0G0/GyDxwM2/dUOhG6Nj+QDnrW+tateggUTWDPc6fp6jmv3ij rGJS5TLgg4DpmqynByJgSA/GF5eSvmA5WtjBnODs5oEn/ENr12x/rD4SQmM6zEOZxxEttkjxFzbmk 0qxiDZUKp4FFqBjF3n6w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q1iko-00CaFm-0N; Wed, 24 May 2023 07:17:50 +0000 Received: from mx.sberdevices.ru ([45.89.227.171]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q1ikj-00CaEh-0o for linux-mtd@lists.infradead.org; Wed, 24 May 2023 07:17:48 +0000 Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id EAC145FD06; Wed, 24 May 2023 10:17:39 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1684912660; bh=9i1IJEfbwq6ZMgC9LwUZi3mYjgeGnxoyyaIpduzpRoM=; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; b=XLgsltHgzaiBdqYarDAL7bK23UIQQc7tng4xlioQISCTiGijy+fxAHTE/xB2otUi+ e3gu8EEMjrqvSfW4NFVn0CeMa2UHT6iapSKwCNutuSvovfNeKa4jG8xc6hon+PkAQz hIYS+6unZxMFdfBcW0PAJluMLJ60E3ujjNKJyUXll3qJUI9d0+zILW39gvel5V721y vBsKWNDZRciDMDW2SkBu6OHbe6oNhfmrOHCTgAJvlVeCmYWC1Qp9kaG6C55hFuhr2h zKkZFoOZZ+lkqlQMQVizcktIOsVvETS41MxAA9GxK/2EFubTid8MolrYTMbwnjiZK6 ulSyVCflGoidA== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Wed, 24 May 2023 10:17:34 +0300 (MSK) Message-ID: <038d48cc-cdc6-cdc2-69e6-7768fb965fbe@sberdevices.ru> Date: Wed, 24 May 2023 10:13:11 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [RESEND PATCH v3] mtd: rawnand: macronix: OTP access for MX30LFxG18AC Content-Language: en-US To: liao jaime , Miquel Raynal CC: Richard Weinberger , Vignesh Raghavendra , Sumit Semwal , =?UTF-8?Q?Christian_K=c3=b6nig?= , , , , , , , , Mason Yang , Boris Brezillon , Jaime Liao References: <20230511152120.3297853-1-AVKrasnov@sberdevices.ru> <20230522161446.16d1f307@xps-13> From: Arseniy Krasnov In-Reply-To: X-Originating-IP: [172.16.1.6] X-ClientProxiedBy: S-MS-EXCH01.sberdevices.ru (172.16.1.4) To S-MS-EXCH01.sberdevices.ru (172.16.1.4) X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2023/05/24 03:15:00 #21395455 X-KSMG-AntiVirus-Status: Clean, skipped X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230524_001745_995516_B021B024 X-CRM114-Status: GOOD ( 25.39 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org CgpPbiAyNC4wNS4yMDIzIDA5OjMzLCBsaWFvIGphaW1lIHdyb3RlOgo+IEhpIE1pcXVlbAo+IAo+ Pgo+PiBIaSBBcnNlbml5LAo+Pgo+PiBhdmtyYXNub3ZAc2JlcmRldmljZXMucnUgd3JvdGUgb24g TW9uLCAxNSBNYXkgMjAyMyAxMjo0OTo1MCArMDMwMDoKPj4KPj4+IEhlbGxvIEBNaXF1ZWwhCj4+ Pgo+Pj4gU29ycnksIGJ1dCB3aG8gY291bGQgcmV2aWV3IHRoaXMgcGF0Y2g/IDopIElJVUMgdGhp cyBsb2dpYyBpcyB2ZXJ5IGh3IHNwZWNpZmljIGFuZCB3ZSBuZWVkCj4+PiBzb21lb25lIHdobyBr bm93cyBpdCB3ZWxsPyBJIHRlc3RlZCB0aGlzIHBhdGNoIG9uIG91ciBkZXZpY2VzICh3aXRoIGFs cmVhZHkga25vd24gTWVzb24gTkFORAo+Pj4gY29udHJvbGxlcikuCj4+Cj4+ICsgSmFpbWUsIHdo byBtaWdodCB0ZXN0Cj4+Cj4+Pgo+Pj4gVGhhbmtzLCBBcnNlbml5Cj4+Pgo+Pj4gT24gMTEuMDUu MjAyMyAyMToyMSwgQXJzZW5peSBLcmFzbm92IHdyb3RlOgo+Pj4+IENjOiBNYXNvbiBZYW5nIDxt YXNvbmNjeWFuZ0BteGljLmNvbS50dz4gYW5kIEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemls bG9uQGNvbGxhYm9yYS5jb20+Cj4+Pj4KPj4+PiBPbiAxMS4wNS4yMDIzIDE4OjIxLCBBcnNlbml5 IEtyYXNub3Ygd3JvdGU6Cj4+Pj4+IFRoaXMgYWRkcyBzdXBwb3J0IGZvciBPVFAgYXJlYSBhY2Nl c3Mgb24gTVgzMExGeEcxOEFDIGNoaXAgc2VyaWVzLgo+Pj4+Pgo+Pj4+PiBDaGFuZ2Vsb2c6Cj4+ Pj4+ICAgdjEgLT4gdjI6Cj4+Pj4+ICAgKiBBZGQgc2xhYi5oIGluY2x1ZGUgZHVlIHRvIGtlcm5l bCB0ZXN0IHJvYm90IGVycm9yLgo+Pj4+PiAgIHYyIC0+IHYzOgo+Pj4+PiAgICogVXNlICd1aW50 NjRfdCcgYXMgaW5wdXQgYXJndW1lbnQgZm9yICdkb19kaXYoKScgaW5zdGVhZAo+Pj4+PiAgICAg b2YgJ3Vuc2lnbmVkIGxvbmcnIGR1ZSB0byBrZXJuZWwgdGVzdCByb2JvdCBlcnJvci4KPj4+Pj4K Pj4+Pj4gU2lnbmVkLW9mZi1ieTogQXJzZW5peSBLcmFzbm92IDxBVktyYXNub3ZAc2JlcmRldmlj ZXMucnU+Cj4+Pj4+IC0tLQo+Pj4+PiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF9tYWNyb25p eC5jIHwgMjEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+PiAgMSBmaWxlIGNoYW5n ZWQsIDIxMyBpbnNlcnRpb25zKCspCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210 ZC9uYW5kL3Jhdy9uYW5kX21hY3Jvbml4LmMgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX21h Y3Jvbml4LmMKPj4+Pj4gaW5kZXggMTQ3MmY5MjVmMzg2Li4yMzAxZjk5MDY3OGUgMTAwNjQ0Cj4+ Pj4+IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfbWFjcm9uaXguYwo+Pj4+PiArKysg Yi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX21hY3Jvbml4LmMKPj4+Pj4gQEAgLTYsNiArNiw3 IEBACj4+Pj4+ICAgKiBBdXRob3I6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGZy ZWUtZWxlY3Ryb25zLmNvbT4KPj4+Pj4gICAqLwo+Pj4+Pgo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4 L3NsYWIuaD4KPj4+Pj4gICNpbmNsdWRlICJsaW51eC9kZWxheS5oIgo+Pj4+PiAgI2luY2x1ZGUg ImludGVybmFscy5oIgo+Pj4+Pgo+Pj4+PiBAQCAtMzEsNiArMzIsMjAgQEAKPj4+Pj4KPj4+Pj4g ICNkZWZpbmUgTVhJQ19DTURfUE9XRVJfRE9XTiAweEI5Cj4+Pj4+Cj4+Pj4+ICsjZGVmaW5lIE9O RklfRkVBVFVSRV9BRERSXzMwTEZYRzE4QUNfT1RQICAweDkwCj4+Pj4+ICsjZGVmaW5lIE1BQ1JP TklYXzMwTEZYRzE4QUNfT1RQX1NUQVJUX1BBR0UgICAgICAgIDAKPj4+Pj4gKyNkZWZpbmUgTUFD Uk9OSVhfMzBMRlhHMThBQ19PVFBfUEFHRVMgICAgICAgICAgICAgMzAKPj4+Pj4gKyNkZWZpbmUg TUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfUEFHRV9TSVpFIDIxMTIKPj4+Pj4gKyNkZWZpbmUgTUFD Uk9OSVhfMzBMRlhHMThBQ19PVFBfU1RBUlRfQllURSAgICAgICAgXAo+Pj4+PiArICAoTUFDUk9O SVhfMzBMRlhHMThBQ19PVFBfU1RBUlRfUEFHRSAqICAgXAo+Pj4+PiArICAgTUFDUk9OSVhfMzBM RlhHMThBQ19PVFBfUEFHRV9TSVpFKQo+Pj4+PiArI2RlZmluZSBNQUNST05JWF8zMExGWEcxOEFD X09UUF9TSVpFX0JZVEVTICAgICAgICBcCj4+Pj4+ICsgIChNQUNST05JWF8zMExGWEcxOEFDX09U UF9QQUdFUyAqICAgICAgICBcCj4+Pj4+ICsgICBNQUNST05JWF8zMExGWEcxOEFDX09UUF9QQUdF X1NJWkUpCj4+Pj4+ICsKPj4+Pj4gKyNkZWZpbmUgTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfRU4g ICAgICAgICAgICAgICAgQklUKDApCj4+Pj4+ICsjZGVmaW5lIE1BQ1JPTklYXzMwTEZYRzE4QUNf T1RQX0xPQ0tFRCAgICAgICAgICAgIEJJVCgxKQo+Pj4+PiArCj4+Pj4+ICBzdHJ1Y3QgbmFuZF9v bmZpX3ZlbmRvcl9tYWNyb25peCB7Cj4+Pj4+ICAgIHU4IHJlc2VydmVkOwo+Pj4+PiAgICB1OCBy ZWxpYWJpbGl0eV9mdW5jOwo+Pj4+PiBAQCAtMzE2LDYgKzMzMSwyMDMgQEAgc3RhdGljIHZvaWQg bWFjcm9uaXhfbmFuZF9kZWVwX3Bvd2VyX2Rvd25fc3VwcG9ydChzdHJ1Y3QgbmFuZF9jaGlwICpj aGlwKQo+Pj4+PiAgICBjaGlwLT5vcHMucmVzdW1lID0gbXhpY19uYW5kX3Jlc3VtZTsKPj4+Pj4g IH0KPj4+Pj4KPj4+Pj4gK3N0YXRpYyBpbnQgbWFjcm9uaXhfMzBsZnhnMThhY19nZXRfb3RwX2lu Zm8oc3RydWN0IG10ZF9pbmZvICptdGQsIHNpemVfdCBsZW4sCj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqcmV0bGVuLAo+Pj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3RwX2luZm8gKmJ1ZikKPj4+Pj4g K3sKPj4+Pj4gKyAgaWYgKGxlbiA8IHNpemVvZigqYnVmKSkKPj4+Pj4gKyAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPj4+Pj4gKwo+Pj4+PiArICAvKiBEb24ndCBrbm93IGhvdyB0byBjaGVjayB0 aGF0IE9UUCBpcyBsb2NrZWQuICovCj4+Cj4+IEphaW1lLCBhbnkgaWRlYT8KPiAKPiBPVFAgaW5m byBjb3VsZCBiZSBjaGVjayBieSBHRVRfRkVBVFVSRSBjb21tYW5kLgo+IEdFVF9GRUFUVVJFIGNv bW1hbmQgd2l0aCBhZGRyZXNzIDkwaCBjb3VsZCByZWFkIHN1Yi1mZWF0dXJlCj4gcGFyYW1ldGVy IHRhYmxlLCBQMSBpcyAiMyIgbWVhbnMgT1RQIHByb3RlY3Rpb24uCj4gCj4gVGhhbmtzCj4gSmFp bWUKPiAKCkhlbGxvIEphaW1lLCB0aGFua3MgZm9yIHF1aWNrIHJlcGx5IQoKSSBoYXZlIHR3byBk ZXZpY2VzIC0gd2l0aCBsb2NrZWQgYW5kIHVubG9ja2VkIE9UUC4gSSBjYWxsIHRoZSBmb2xsb3dp bmcgdGhpbmcgZm9yIGVhY2ggb2YgdGhlbToKCkBAIC0zMzksNiArMzQxLDI2IEBAIHN0YXRpYyBp bnQgbWFjcm9uaXhfMzBsZnhnMThhY19nZXRfb3RwX2luZm8oc3RydWN0IG10ZF9pbmZvICptdGQs IHNpemVfdCBsZW4sCiAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAogICAgICAgIC8q IERvbid0IGtub3cgaG93IHRvIGNoZWNrIHRoYXQgT1RQIGlzIGxvY2tlZC4gKi8KKyAgICAgICB7 CisgICAgICAgICAgICAgICB1OCBmZWF0dXJlX2J1ZltPTkZJX1NVQkZFQVRVUkVfUEFSQU1fTEVO XSA9IHsgMCB9OworICAgICAgICAgICAgICAgc3RydWN0IG5hbmRfY2hpcCAqbmFuZDsKKyAgICAg ICAgICAgICAgIGludCByZXM7CisKKyAgICAgICAgICAgICAgIG5hbmQgPSBtdGRfdG9fbmFuZCht dGQpOworCisgICAgICAgICAgICAgICBuYW5kX3NlbGVjdF90YXJnZXQobmFuZCwgMCk7CisKKyAg ICAgICAgICAgICAgIHJlcyA9IG5hbmRfZ2V0X2ZlYXR1cmVzKG5hbmQsIDB4OTAsIGZlYXR1cmVf YnVmKTsKKworICAgICAgICAgICAgICAgbmFuZF9kZXNlbGVjdF90YXJnZXQobmFuZCk7CisKKyAg ICAgICAgICAgICAgIHByaW50ayhLRVJOX0VNRVJHICJcblxuUkVTICVpIE9UUCBCVUYgJWhoeCAl aGh4ICVoaHggJWhoeFxuXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJl X2J1ZlswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVf YnVmWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZV9i dWZbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlX2J1 ZlszXSk7CisgICAgICAgfQogICAgICAgIGJ1Zi0+bG9ja2VkID0gMDsKICAgICAgICBidWYtPnN0 YXJ0ID0gTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfU1RBUlRfQllURTsKICAgICAgICBidWYtPmxl bmd0aCA9IE1BQ1JPTklYXzMwTEZYRzE4QUNfT1RQX1NJWkVfQllURVM7CgpBbmQgZ2V0IGZvciBi b3RoIGRldmljZXM6CgpbICAgIDQuMjI4NzIxXSBSRVMgMCBPVFAgQlVGIDAgMCAwIDAKCk1heSBi ZSBpJ20gZG9pbmcgc29tZXRoaW5nIHdyb25nPwoKVGhhbmtzLCBBcnNlbml5Cgo+Pgo+Pj4+PiAr ICBidWYtPmxvY2tlZCA9IDA7Cj4+Pj4+ICsgIGJ1Zi0+c3RhcnQgPSBNQUNST05JWF8zMExGWEcx OEFDX09UUF9TVEFSVF9CWVRFOwo+Pj4+PiArICBidWYtPmxlbmd0aCA9IE1BQ1JPTklYXzMwTEZY RzE4QUNfT1RQX1NJWkVfQllURVM7Cj4+Pj4+ICsKPj4+Pj4gKyAgKnJldGxlbiA9IHNpemVvZigq YnVmKTsKPj4+Pj4gKwo+Pj4+PiArICByZXR1cm4gMDsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAr c3RhdGljIGludCBtYWNyb25peF8zMGxmeGcxOGFjX290cF9lbmFibGUoc3RydWN0IG5hbmRfY2hp cCAqbmFuZCkKPj4+Pj4gK3sKPj4+Pj4gKyAgdWludDhfdCBmZWF0dXJlX2J1ZltPTkZJX1NVQkZF QVRVUkVfUEFSQU1fTEVOXSA9IHsgMCB9Owo+Pj4+PiArCj4+Pj4+ICsgIGZlYXR1cmVfYnVmWzBd ID0gTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfRU47Cj4+Pj4+ICsgIHJldHVybiBuYW5kX3NldF9m ZWF0dXJlcyhuYW5kLCBPTkZJX0ZFQVRVUkVfQUREUl8zMExGWEcxOEFDX09UUCwKPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVfYnVmKTsKPj4+Pj4gK30KPj4+Pj4gKwo+ Pj4+PiArc3RhdGljIGludCBtYWNyb25peF8zMGxmeGcxOGFjX290cF9kaXNhYmxlKHN0cnVjdCBu YW5kX2NoaXAgKm5hbmQpCj4+Pj4+ICt7Cj4+Pj4+ICsgIHVpbnQ4X3QgZmVhdHVyZV9idWZbT05G SV9TVUJGRUFUVVJFX1BBUkFNX0xFTl0gPSB7IDAgfTsKPj4+Pj4gKwo+Pj4+PiArICByZXR1cm4g bmFuZF9zZXRfZmVhdHVyZXMobmFuZCwgT05GSV9GRUFUVVJFX0FERFJfMzBMRlhHMThBQ19PVFAs Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlX2J1Zik7Cj4+Pj4+ICt9 Cj4+Pj4+ICsKPj4+Pj4gK3N0YXRpYyBpbnQgX19tYWNyb25peF8zMGxmeGcxOGFjX3J3X290cChz dHJ1Y3QgbXRkX2luZm8gKm10ZCwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsb2ZmX3Qgb2Zmc19pbl9mbGFzaCwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwKPj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKmJ1ZiwgYm9vbCB3cml0ZSkKPj4+Pj4gK3sK Pj4+Pj4gKyAgc3RydWN0IG5hbmRfY2hpcCAqbmFuZDsKPj4+Pj4gKyAgc2l6ZV90IGJ5dGVzX2hh bmRsZWQ7Cj4+Pj4+ICsgIG9mZl90IG9mZnNfaW5fcGFnZTsKPj4+Pj4gKyAgdWludDY0X3QgcGFn ZTsKPj4+Pj4gKyAgdm9pZCAqZG1hX2J1ZjsKPj4+Pj4gKyAgaW50IHJldDsKPj4+Pj4gKwo+Pj4+ PiArICAvKiAnbmFuZF9wcm9nL3JlYWRfcGFnZV9vcCgpJyBtYXkgdXNlICdidWYnIGFzIERNQSBi dWZmZXIsCj4+Pj4+ICsgICAqIHNvIGFsbG9jYXRlIHByb3Blcmx5IGFsaWduZWQgbWVtb3J5IGZv ciBpdC4gVGhpcyBpcwo+Pj4+PiArICAgKiBuZWVkZWQgYmVjYXVzZSBjcm9zcyBwYWdlIGFjY2Vz c2VzIG1heSBsZWFkIHRvIHVuYWxpZ25lZAo+Pj4+PiArICAgKiBidWZmZXIgYWRkcmVzcyBmb3Ig RE1BLgo+Pj4+PiArICAgKi8KPj4+Pj4gKyAgZG1hX2J1ZiA9IGttYWxsb2MoTUFDUk9OSVhfMzBM RlhHMThBQ19PVFBfUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTsKPj4+Pj4gKyAgaWYgKCFkbWFfYnVm KQo+Pj4+PiArICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+Pj4+PiArCj4+Pj4+ICsgIG5hbmQg PSBtdGRfdG9fbmFuZChtdGQpOwo+Pj4+PiArICBuYW5kX3NlbGVjdF90YXJnZXQobmFuZCwgMCk7 Cj4+Pj4+ICsKPj4+Pj4gKyAgcmV0ID0gbWFjcm9uaXhfMzBsZnhnMThhY19vdHBfZW5hYmxlKG5h bmQpOwo+Pj4+PiArICBpZiAocmV0KQo+Pj4+PiArICAgICAgICAgIGdvdG8gb3V0X290cDsKPj4+ Pj4gKwo+Pj4+PiArICBwYWdlID0gb2Zmc19pbl9mbGFzaDsKPj4+Pj4gKyAgLyogJ3BhZ2UnIHdp bGwgYmUgcmVzdWx0IG9mIGRpdmlzaW9uLiAqLwo+Pj4+PiArICBvZmZzX2luX3BhZ2UgPSBkb19k aXYocGFnZSwgTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfUEFHRV9TSVpFKTsKPj4+Pj4gKyAgYnl0 ZXNfaGFuZGxlZCA9IDA7Cj4+Pj4+ICsKPj4+Pj4gKyAgd2hpbGUgKGJ5dGVzX2hhbmRsZWQgPCBs ZW4gJiYKPj4+Pj4gKyAgICAgICAgIHBhZ2UgPCBNQUNST05JWF8zMExGWEcxOEFDX09UUF9QQUdF Uykgewo+Pj4+PiArICAgICAgICAgIHNpemVfdCBieXRlc190b19oYW5kbGU7Cj4+Pj4+ICsKPj4+ Pj4gKyAgICAgICAgICBieXRlc190b19oYW5kbGUgPSBtaW5fdChzaXplX3QsIGxlbiAtIGJ5dGVz X2hhbmRsZWQsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFDUk9O SVhfMzBMRlhHMThBQ19PVFBfUEFHRV9TSVpFIC0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZmZzX2luX3BhZ2UpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAgaWYg KHdyaXRlKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICBtZW1jcHkoZG1hX2J1ZiwgJmJ1Zlti eXRlc19oYW5kbGVkXSwgYnl0ZXNfdG9faGFuZGxlKTsKPj4+Pj4gKyAgICAgICAgICAgICAgICAg IHJldCA9IG5hbmRfcHJvZ19wYWdlX29wKG5hbmQsIHBhZ2UsIG9mZnNfaW5fcGFnZSwKPj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9idWYsIGJ5dGVz X3RvX2hhbmRsZSk7Cj4+Pj4+ICsgICAgICAgICAgfSBlbHNlIHsKPj4+Pj4gKyAgICAgICAgICAg ICAgICAgIHJldCA9IG5hbmRfcmVhZF9wYWdlX29wKG5hbmQsIHBhZ2UsIG9mZnNfaW5fcGFnZSwK Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9idWYs IGJ5dGVzX3RvX2hhbmRsZSk7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICBpZiAoIXJldCkKPj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZidWZbYnl0ZXNfaGFuZGxlZF0s IGRtYV9idWYsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc190 b19oYW5kbGUpOwo+Pj4+PiArICAgICAgICAgIH0KPj4+Pj4gKyAgICAgICAgICBpZiAocmV0KQo+ Pj4+PiArICAgICAgICAgICAgICAgICAgZ290byBvdXRfb3RwOwo+Pj4+PiArCj4+Pj4+ICsgICAg ICAgICAgYnl0ZXNfaGFuZGxlZCArPSBieXRlc190b19oYW5kbGU7Cj4+Pj4+ICsgICAgICAgICAg b2Zmc19pbl9wYWdlID0gMDsKPj4+Pj4gKyAgICAgICAgICBwYWdlKys7Cj4+Pj4+ICsgIH0KPj4+ Pj4gKwo+Pj4+PiArICAqcmV0bGVuID0gYnl0ZXNfaGFuZGxlZDsKPj4+Pj4gKwo+Pj4+PiArb3V0 X290cDoKPj4+Pj4gKyAgaWYgKHJldCkKPj4+Pj4gKyAgICAgICAgICBkZXZfZXJyKCZtdGQtPmRl diwgImZhaWxlZCB0byBwZXJmb3JtIE9UUCBJTzogJWlcbiIsIHJldCk7Cj4+Pj4+ICsKPj4+Pj4g KyAgcmV0ID0gbWFjcm9uaXhfMzBsZnhnMThhY19vdHBfZGlzYWJsZShuYW5kKTsKPj4+Pj4gKyAg V0FSTihyZXQsICJmYWlsZWQgdG8gbGVhdmUgT1RQIG1vZGUgYWZ0ZXIgJXNcbiIsCj4+Pj4+ICsg ICAgICAgd3JpdGUgPyAid3JpdGUiIDogInJlYWQiKTsKPj4KPj4gTGV0J3MgYXZvaWQgV0FSTigp IGNhbGxzIChub25lIGluIHRoaXMgZHJpdmVyIGFyZSByZWxldmFudCBJTUhPKS4gSnVzdCBhCj4+ IGRldl9lcnIoKSBzaG91bGQgYmUgZW5vdWdoLgo+Pgo+Pj4+PiArICBuYW5kX2Rlc2VsZWN0X3Rh cmdldChuYW5kKTsKPj4+Pj4gKyAga2ZyZWUoZG1hX2J1Zik7Cj4+Pj4+ICsKPj4+Pj4gKyAgcmV0 dXJuIHJldDsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiArc3RhdGljIGludCBtYWNyb25peF8zMGxm eGcxOGFjX3dyaXRlX290cChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IHRvLAo+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLCBzaXplX3QgKnJs ZW4sCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVfY2hh ciAqYnVmKQo+Pj4+PiArewo+Pj4+PiArICByZXR1cm4gX19tYWNyb25peF8zMGxmeGcxOGFjX3J3 X290cChtdGQsIHRvLCBsZW4sIHJsZW4sICh1X2NoYXIgKilidWYsCj4+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ ICtzdGF0aWMgaW50IG1hY3Jvbml4XzMwbGZ4ZzE4YWNfcmVhZF9vdHAoc3RydWN0IG10ZF9pbmZv ICptdGQsIGxvZmZfdCBmcm9tLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBsZW4sIHNpemVfdCAqcmxlbiwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1X2NoYXIgKmJ1ZikKPj4+Pj4gK3sKPj4+Pj4gKyAgcmV0dXJuIF9fbWFj cm9uaXhfMzBsZnhnMThhY19yd19vdHAobXRkLCBmcm9tLCBsZW4sIHJsZW4sIGJ1ZiwgZmFsc2Up Owo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgaW50IG1hY3Jvbml4XzMwbGZ4ZzE4YWNf bG9ja19vdHAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLAo+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pCj4+Pj4+ICt7Cj4+Pj4+ICsg IHVpbnQ4X3QgZmVhdHVyZV9idWZbT05GSV9TVUJGRUFUVVJFX1BBUkFNX0xFTl0gPSB7IDAgfTsK Pj4+Pj4gKyAgc3RydWN0IG5hbmRfY2hpcCAqbmFuZDsKPj4+Pj4gKyAgaW50IHJldDsKPj4+Pj4g Kwo+Pj4+PiArICBpZiAoZnJvbSAhPSBNQUNST05JWF8zMExGWEcxOEFDX09UUF9TVEFSVF9CWVRF IHx8Cj4+Pj4+ICsgICAgICBsZW4gIT0gTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBfU0laRV9CWVRF UykKPj4+Pj4gKyAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+Pj4gKwo+Pj4+PiArICBkZXZf ZGJnKCZtdGQtPmRldiwgImxvY2tpbmcgT1RQXG4iKTsKPj4+Pj4gKwo+Pj4+PiArICBuYW5kID0g bXRkX3RvX25hbmQobXRkKTsKPj4+Pj4gKyAgbmFuZF9zZWxlY3RfdGFyZ2V0KG5hbmQsIDApOwo+ Pj4+PiArCj4+Pj4+ICsgIGZlYXR1cmVfYnVmWzBdID0gTUFDUk9OSVhfMzBMRlhHMThBQ19PVFBf RU4gfAo+Pj4+PiArICAgICAgICAgICAgICAgICAgIE1BQ1JPTklYXzMwTEZYRzE4QUNfT1RQX0xP Q0tFRDsKPj4+Pj4gKyAgcmV0ID0gbmFuZF9zZXRfZmVhdHVyZXMobmFuZCwgT05GSV9GRUFUVVJF X0FERFJfMzBMRlhHMThBQ19PVFAsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGZl YXR1cmVfYnVmKTsKPj4+Pj4gKyAgaWYgKHJldCkgewo+Pj4+PiArICAgICAgICAgIGRldl9lcnIo Jm10ZC0+ZGV2LAo+Pj4+PiArICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBsb2NrIE9UUCAo c2V0IGZlYXR1cmVzKTogJWlcbiIsIHJldCk7Cj4+Pj4+ICsgICAgICAgICAgbmFuZF9kZXNlbGVj dF90YXJnZXQobmFuZCk7Cj4+Pj4+ICsgICAgICAgICAgcmV0dXJuIHJldDsKPj4+Pj4gKyAgfQo+ Pj4+PiArCj4+Pj4+ICsgIC8qIERvIGR1bW15IHBhZ2UgcHJvZyB3aXRoIHplcm8gYWRkcmVzcy4g Ki8KPj4+Pj4gKyAgZmVhdHVyZV9idWZbMF0gPSAwOwo+Pj4+PiArICByZXQgPSBuYW5kX3Byb2df cGFnZV9vcChuYW5kLCAwLCAwLCBmZWF0dXJlX2J1ZiwgMSk7Cj4+Pj4+ICsgIGlmIChyZXQpCj4+ Pj4+ICsgICAgICAgICAgZGV2X2VycigmbXRkLT5kZXYsCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAiZmFpbGVkIHRvIGxvY2sgT1RQIChwYWdlIHByb2cpOiAlaVxuIiwgcmV0KTsKPj4+Pj4gKwo+ Pj4+PiArICByZXQgPSBtYWNyb25peF8zMGxmeGcxOGFjX290cF9kaXNhYmxlKG5hbmQpOwo+Pj4+ PiArICBXQVJOKHJldCwgImZhaWxlZCB0byBsZWF2ZSBPVFAgbW9kZSBhZnRlciBsb2NrXG4iKTsK Pj4+Pj4gKwo+Pj4+PiArICBuYW5kX2Rlc2VsZWN0X3RhcmdldChuYW5kKTsKPj4+Pj4gKwo+Pj4+ PiArICByZXR1cm4gcmV0Owo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgdm9pZCBtYWNy b25peF9uYW5kX3NldHVwX290cChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwKQo+Pj4+PiArewo+Pj4+ PiArICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN1cHBvcnRlZF9vdHBfbW9kZWxzW10gPSB7 Cj4+Pj4+ICsgICAgICAgICAgIk1YMzBMRjFHMThBQyIsCj4+Pj4+ICsgICAgICAgICAgIk1YMzBM RjJHMThBQyIsCj4+Pj4+ICsgICAgICAgICAgIk1YMzBMRjRHMThBQyIsCj4+Pj4+ICsgIH07Cj4+ Pj4+ICsgIHN0cnVjdCBtdGRfaW5mbyAqbXRkOwo+Pj4+PiArCj4+Pj4+ICsgIGlmICghY2hpcC0+ cGFyYW1ldGVycy5zdXBwb3J0c19zZXRfZ2V0X2ZlYXR1cmVzKQo+Pj4+PiArICAgICAgICAgIHJl dHVybjsKPj4+Pj4gKwo+Pj4+PiArICBpZiAobWF0Y2hfc3RyaW5nKHN1cHBvcnRlZF9vdHBfbW9k ZWxzLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoc3VwcG9ydGVkX290cF9t b2RlbHMpLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgIGNoaXAtPnBhcmFtZXRlcnMubW9kZWwp IDwgMCkKPj4+Pj4gKyAgICAgICAgICByZXR1cm47Cj4+Cj4+IEkgd291bGQgc3RhcnQgYnkgY2hl Y2tpbmcgdGhlIG1vZGVsLCB0aGVuIGl0J3MgbGlzdCBvZiBzdXBwb3J0ZWQgb3BzLgo+Pgo+Pj4+ PiArCj4+Pj4+ICsgIGJpdG1hcF9zZXQoY2hpcC0+cGFyYW1ldGVycy5nZXRfZmVhdHVyZV9saXN0 LAo+Pj4+PiArICAgICAgICAgICAgIE9ORklfRkVBVFVSRV9BRERSXzMwTEZYRzE4QUNfT1RQLCAx KTsKPj4+Pj4gKyAgYml0bWFwX3NldChjaGlwLT5wYXJhbWV0ZXJzLnNldF9mZWF0dXJlX2xpc3Qs Cj4+Pj4+ICsgICAgICAgICAgICAgT05GSV9GRUFUVVJFX0FERFJfMzBMRlhHMThBQ19PVFAsIDEp Owo+Pj4+PiArCj4+Pj4+ICsgIG10ZCA9IG5hbmRfdG9fbXRkKGNoaXApOwo+Pj4+PiArICBtdGQt Pl9nZXRfZmFjdF9wcm90X2luZm8gPSBtYWNyb25peF8zMGxmeGcxOGFjX2dldF9vdHBfaW5mbzsK Pj4+Pj4gKyAgbXRkLT5fcmVhZF9mYWN0X3Byb3RfcmVnID0gbWFjcm9uaXhfMzBsZnhnMThhY19y ZWFkX290cDsKPj4+Pj4gKyAgbXRkLT5fZ2V0X3VzZXJfcHJvdF9pbmZvID0gbWFjcm9uaXhfMzBs ZnhnMThhY19nZXRfb3RwX2luZm87Cj4+Pj4+ICsgIG10ZC0+X3JlYWRfdXNlcl9wcm90X3JlZyA9 IG1hY3Jvbml4XzMwbGZ4ZzE4YWNfcmVhZF9vdHA7Cj4+Pj4+ICsgIG10ZC0+X3dyaXRlX3VzZXJf cHJvdF9yZWcgPSBtYWNyb25peF8zMGxmeGcxOGFjX3dyaXRlX290cDsKPj4+Pj4gKyAgbXRkLT5f bG9ja191c2VyX3Byb3RfcmVnID0gbWFjcm9uaXhfMzBsZnhnMThhY19sb2NrX290cDsKPj4+Pj4g K30KPj4+Pj4gKwo+Pj4+PiAgc3RhdGljIGludCBtYWNyb25peF9uYW5kX2luaXQoc3RydWN0IG5h bmRfY2hpcCAqY2hpcCkKPj4+Pj4gIHsKPj4+Pj4gICAgaWYgKG5hbmRfaXNfc2xjKGNoaXApKQo+ Pj4+PiBAQCAtMzI1LDYgKzUzNyw3IEBAIHN0YXRpYyBpbnQgbWFjcm9uaXhfbmFuZF9pbml0KHN0 cnVjdCBuYW5kX2NoaXAgKmNoaXApCj4+Pj4+ICAgIG1hY3Jvbml4X25hbmRfb25maV9pbml0KGNo aXApOwo+Pj4+PiAgICBtYWNyb25peF9uYW5kX2Jsb2NrX3Byb3RlY3Rpb25fc3VwcG9ydChjaGlw KTsKPj4+Pj4gICAgbWFjcm9uaXhfbmFuZF9kZWVwX3Bvd2VyX2Rvd25fc3VwcG9ydChjaGlwKTsK Pj4+Pj4gKyAgbWFjcm9uaXhfbmFuZF9zZXR1cF9vdHAoY2hpcCk7Cj4+Pj4+Cj4+Pj4+ICAgIHJl dHVybiAwOwo+Pj4+PiAgfQo+Pgo+Pgo+PiBUaGFua3MsCj4+IE1pcXXDqGwKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlz Y3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1tdGQvCg==