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 10E86CCA476 for ; Tue, 7 Oct 2025 08:28:56 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:From: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=v4Q+n/aeWnA44rn3ElP4jfZBspbAvamnim1WnttDWQM=; b=LuDFAf+Abi6m1q cWju/qwVE69C/ZY83GqIROiSQOdTUlBCLeBrFrwGAVIWXMKVjFmW0lA8foTG+wnDSRSpAdyl2x4S7 HjYVCxAfMS9WWGz/p1pXkp/YTRMjHGG+QG/D3rel6LlVbwSLa+WOrLVGobhD46dSjwOfrQxgV5RIL clORpAPqLSCs29GN5wV0BfbRJnATAB68vQqQ39tg6ryugeH89JkN7ZNryZjPxeghscU47D/Q+iZOz CJEwzcWV2RXY3UP3IMgY4edTdRQCKeGJi9i7UH9RCnAfrILPVt/bxY5IQVV32AQ/UpJZEWMpzxVYp cGm/eCd7fREJJsf96vtA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1v6340-00000001Xu3-3oKv; Tue, 07 Oct 2025 08:28:52 +0000 Received: from mout-p-102.mailbox.org ([80.241.56.152]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1v633y-00000001XsF-0Z0e for linux-mtd@lists.infradead.org; Tue, 07 Oct 2025 08:28:51 +0000 Received: from smtp2.mailbox.org (smtp2.mailbox.org [IPv6:2001:67c:2050:b231:465::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4cgq6H47Btz9tTm; Tue, 7 Oct 2025 10:28:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org; s=mail20150812; t=1759825719; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1CvfjdAxf1Zb7xPifTEPcCYNscx+NlmdYgAIwvjb1t4=; b=EUU4cr1/vhkGBHNEluFakdSW7kx5VAHL8Cp38E02+xWMyusx0ZRk5ARFYR4W/cLdPCeMZ4 gn0pSEBt4drecN2EyQ1rZILMLvZAdXbayMMUgp45Su+jLgdEc4/gU5YAwZpr5uDJoA4WNW /WK7X5SbWOcdmY6dwkbVyd3W7PNHlxKS1l5LFysAD2V1omersLudakaApaGcwpBbCh6POp EKLYYUyX0i/ihs8DsYAsQ2dKsAjAaYc8wAXlXS9h217GXHl+kPyGl9UmVbzDe5953HrUQ7 fnqTDQ1s0a5TV9pS3sLxin06HJ8pyEB7PX6pq7Il7dfyBrUSJy/OtrBJbVvBCA== Message-ID: <6625e755-bae5-4a07-b3ce-f5feaf24d5e7@mailbox.org> Date: Tue, 7 Oct 2025 10:28:36 +0200 MIME-Version: 1.0 Subject: Re: [PATCH] mtd: spi-nor: spansion: Add SMPT fixup for S25FS512S From: Marek Vasut To: Tudor Ambarus , linux-mtd@lists.infradead.org, Miquel Raynal Cc: Geert Uytterhoeven , Michael Walle , Pratyush Yadav , Richard Weinberger , Vignesh Raghavendra , linux-renesas-soc@vger.kernel.org References: <20240914220859.128540-1-marek.vasut+renesas@mailbox.org> <0e0f1195-fd08-4d8b-a247-3c94b5628081@linaro.org> Content-Language: en-US In-Reply-To: X-MBO-RS-META: 54dzejkit638pahr5asg1adyu7j8kmg5 X-MBO-RS-ID: 3704253ed54bb6e38e4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251007_012850_340042_C9244086 X-CRM114-Status: GOOD ( 34.59 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGVsbG8gYWdhaW4sCgo+Pj4gVGhlIFMyNUZTNTEyUyBjaGlwIGRhdGFzaGVldCByZXYuTyBUYWJs ZSA3MSBvbiBwYWdlIDE1MyBKRURFQyBTZWN0b3IgTWFwCj4+PiBQYXJhbWV0ZXIgRHdvcmQtNiBD b25maWcuIERldGVjdC0zIGRvZXMgdXNlIENSM05WIGJpdCAxIHRvIGRpc2Nlcm4gNjRraUIKPj4+ IGFuZCAyNTZraUIgdW5pZm9ybSBzZWN0b3JzIGRldmljZSBjb25maWd1cmF0aW9uLCBob3dldmVy IGFjY29yZGluZyB0bwo+Pj4gc2VjdGlvbiA3LjUuNS4xIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIg MyBOb24tdm9sYXRpbGUgKENSM05WKSBwYWdlIDYxLAo+Pj4gdGhlIENSM05WIGJpdCAxIGlzIFJG VSBSZXNlcnZlZCBmb3IgRnV0dXJlIFVzZSwgYW5kIGlzIHNldCB0byAwIG9uIG5ld2x5Cj4+PiBt YW51ZmFjdHVyZWQgZGV2aWNlcywgd2hpY2ggbWVhbnMgNjRraUIgc2VjdG9ycy4gU2luY2UgdGhl IGRldmljZSAKPj4+IGRvZXMgbm90Cj4+PiBzdXBwb3J0IDY0a2lCIHVuaWZvcm0gc2VjdG9ycyBp biBhbnkgY29uZmlndXJhdGlvbiwgcGFyc2luZyBTTVBUIHRhYmxlCj4+PiBjYW5ub3QgZmluZCBh IHZhbGlkIHNlY3RvciBtYXAgZW50cnkgYW5kIGZhaWxzLgo+Pj4KPj4+IEZpeCB0aGlzIHVwIGJ5 IHNldHRpbmcgU01QVCBjb25maWd1cmF0aW9uIGluZGV4IGJpdCAwLCB3aGljaCBpcyAKPj4+IHBv cHVsYXRlZAo+Pj4gZXhhY3RseSBieSB0aGUgQ1IzTlYgYml0IDEgYmVpbmcgMS4gVGhpcyBpcyBp bXBsZW1lbnRlZCB2aWEgCj4+PiBuZXcgLnBvc3Rfc21wdAo+Pj4gZml4dXAgaG9vayBhbmQgYSB3 cmFwcGVyIGZ1bmN0aW9uLiBUaGUgb25seSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgCj4+PiBob29r IGlzCj4+PiBjdXJyZW50bHkgc3BlY2lmaWMgdG8gUzI1RlM1MTJTLgo+Pj4KPj4+IFRoaXMgZml4 ZXMgdGhlIGZvbGxvd2luZyBmYWlsdXJlIG9uIFMyNUZTNTEyUzoKPj4+IHNwaS1ub3Igc3BpMC4w OiBGYWlsZWQgdG8gcGFyc2Ugb3B0aW9uYWwgcGFyYW1ldGVyIHRhYmxlOiBmZjgxIChlcnI9LTIy KQo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJlay52YXN1dCtyZW5lc2Fz QG1haWxib3gub3JnPgo+Pj4gLS0tCj4+PiBDYzogR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydCty ZW5lc2FzQGdsaWRlci5iZT4KPj4+IENjOiBNaWNoYWVsIFdhbGxlIDxtd2FsbGVAa2VybmVsLm9y Zz4KPj4+IENjOiBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgo+Pj4g Q2M6IFByYXR5dXNoIFlhZGF2IDxwcmF0eXVzaEBrZXJuZWwub3JnPgo+Pj4gQ2M6IFJpY2hhcmQg V2VpbmJlcmdlciA8cmljaGFyZEBub2QuYXQ+Cj4+PiBDYzogVHVkb3IgQW1iYXJ1cyA8dHVkb3Iu YW1iYXJ1c0BsaW5hcm8ub3JnPgo+Pj4gQ2M6IFZpZ25lc2ggUmFnaGF2ZW5kcmEgPHZpZ25lc2hy QHRpLmNvbT4KPj4+IENjOiBsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZwo+Pj4gQ2M6IGxp bnV4LXJlbmVzYXMtc29jQHZnZXIua2VybmVsLm9yZwo+Pj4gLS0tCj4+PiDCoCBkcml2ZXJzL210 ZC9zcGktbm9yL2NvcmUuY8KgwqDCoMKgIHwgMTcgKysrKysrKysrKysrKysrKysKPj4+IMKgIGRy aXZlcnMvbXRkL3NwaS1ub3IvY29yZS5owqDCoMKgwqAgfMKgIDUgKysrKysKPj4+IMKgIGRyaXZl cnMvbXRkL3NwaS1ub3Ivc2ZkcC5jwqDCoMKgwqAgfMKgIDQgKysrKwo+Pj4gwqAgZHJpdmVycy9t dGQvc3BpLW5vci9zcGFuc2lvbi5jIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ PiDCoCA0IGZpbGVzIGNoYW5nZWQsIDUyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4+ Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvc3BpLW5vci9jb3JlLmMgYi9kcml2ZXJzL210 ZC9zcGktbm9yL2NvcmUuYwo+Pj4gaW5kZXggOWQ2ZTg1YmYyMjdiLi5jYTY1ZjM2ZTU2MzggMTAw NjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL210ZC9zcGktbm9yL2NvcmUuYwo+Pj4gKysrIGIvZHJpdmVy cy9tdGQvc3BpLW5vci9jb3JlLmMKPj4+IEBAIC0yNDA1LDYgKzI0MDUsMjMgQEAgaW50IHNwaV9u b3JfcG9zdF9iZnB0X2ZpeHVwcyhzdHJ1Y3Qgc3BpX25vciAqbm9yLAo+Pj4gwqDCoMKgwqDCoCBy ZXR1cm4gMDsKPj4+IMKgIH0KPj4+ICtpbnQgc3BpX25vcl9wb3N0X3NtcHRfZml4dXBzKHN0cnVj dCBzcGlfbm9yICpub3IsIHU4ICpzbXB0KQo+Pj4gK3sKPj4+ICvCoMKgwqAgaW50IHJldDsKPj4+ ICsKPj4+ICvCoMKgwqAgaWYgKG5vci0+bWFudWZhY3R1cmVyICYmIG5vci0+bWFudWZhY3R1cmVy LT5maXh1cHMgJiYKPj4+ICvCoMKgwqDCoMKgwqDCoCBub3ItPm1hbnVmYWN0dXJlci0+Zml4dXBz LT5wb3N0X3NtcHQpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBub3ItPm1hbnVmYWN0dXJl ci0+Zml4dXBzLT5wb3N0X3NtcHQobm9yLCBzbXB0KTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo cmV0KQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+ICvCoMKgwqAg fQo+Pj4gKwo+Pj4gK8KgwqDCoCBpZiAobm9yLT5pbmZvLT5maXh1cHMgJiYgbm9yLT5pbmZvLT5m aXh1cHMtPnBvc3Rfc21wdCkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gbm9yLT5pbmZvLT5m aXh1cHMtPnBvc3Rfc21wdChub3IsIHNtcHQpOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4gMDsK Pj4+ICt9Cj4+PiArCj4+PiDCoCBzdGF0aWMgaW50IHNwaV9ub3Jfc2VsZWN0X3JlYWQoc3RydWN0 IHNwaV9ub3IgKm5vciwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdTMyIHNoYXJlZF9od2NhcHMpCj4+PiDCoCB7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t dGQvc3BpLW5vci9jb3JlLmggYi9kcml2ZXJzL210ZC9zcGktbm9yL2NvcmUuaAo+Pj4gaW5kZXgg MTUxNmI2ZDBkYzM3Li5kNTI5NDQyNGFiOWQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL210ZC9z cGktbm9yL2NvcmUuaAo+Pj4gKysrIGIvZHJpdmVycy9tdGQvc3BpLW5vci9jb3JlLmgKPj4+IEBA IC00MTMsNiArNDEzLDggQEAgc3RydWN0IHNwaV9ub3JfZmxhc2hfcGFyYW1ldGVyIHsKPj4+IMKg wqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYXJhbWV0ZXJzIHRoYXQgY291bGQgbm90IGJl IGV4dHJhY3RlZCBieSBvdGhlciAKPj4+IG1lYW5zIChpLmUuCj4+PiDCoMKgICrCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgd2hlbiBpbmZvcm1hdGlvbiBwcm92aWRlZCBieSB0aGUgU0ZEUC9mbGFz aF9pbmZvIAo+Pj4gdGFibGVzIGFyZQo+Pj4gwqDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGluY29tcGxldGUgb3Igd3JvbmcpLgo+Pj4gKyAqIEBwb3N0X3NtcHQ6IHVwZGF0ZSBzZWN0b3Ig bWFwIGNvbmZpZ3VyYXRpb24gSUQgc2VsZWN0b3IgYWNjb3JkaW5nIHRvCj4+PiArICrCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY2hpcC1zcGVjaWZpYyBxdWlya3MuCj4+PiDCoMKgICogQGxhdGVf aW5pdDogdXNlZCB0byBpbml0aWFsaXplIGZsYXNoIHBhcmFtZXRlcnMgdGhhdCBhcmUgbm90IAo+ Pj4gZGVjbGFyZWQgaW4gdGhlCj4+PiDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSkVT RDIxNiBTRkRQIHN0YW5kYXJkLCBvciB3aGVyZSBTRkRQIHRhYmxlcyBub3QgCj4+PiBkZWZpbmVk IGF0IGFsbC4KPj4+IMKgwqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXaWxsIHJlcGxhY2Ug dGhlIGRlZmF1bHRfaW5pdCgpIGhvb2suCj4+PiBAQCAtNDI2LDYgKzQyOCw3IEBAIHN0cnVjdCBz cGlfbm9yX2ZpeHVwcyB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0 cnVjdCBzZmRwX3BhcmFtZXRlcl9oZWFkZXIgKmJmcHRfaGVhZGVyLAo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3Qgc2ZkcF9iZnB0ICpiZnB0KTsKPj4+IMKgwqDC oMKgwqAgaW50ICgqcG9zdF9zZmRwKShzdHJ1Y3Qgc3BpX25vciAqbm9yKTsKPj4+ICvCoMKgwqAg aW50ICgqcG9zdF9zbXB0KShzdHJ1Y3Qgc3BpX25vciAqbm9yLCB1OCAqc21wdCk7Cj4+PiDCoMKg wqDCoMKgIGludCAoKmxhdGVfaW5pdCkoc3RydWN0IHNwaV9ub3IgKm5vcik7Cj4+PiDCoCB9Owo+ Pj4gQEAgLTY2MCw2ICs2NjMsOCBAQCBpbnQgc3BpX25vcl9wb3N0X2JmcHRfZml4dXBzKHN0cnVj dCBzcGlfbm9yICpub3IsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29uc3Qgc3RydWN0IHNmZHBfcGFyYW1ldGVyX2hlYWRlciAqYmZwdF9oZWFkZXIsCj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IHNmZHBfYmZwdCAq YmZwdCk7Cj4+PiAraW50IHNwaV9ub3JfcG9zdF9zbXB0X2ZpeHVwcyhzdHJ1Y3Qgc3BpX25vciAq bm9yLCB1OCAqc3RtcCk7Cj4+PiArCj4+PiDCoCB2b2lkIHNwaV9ub3JfaW5pdF9kZWZhdWx0X2xv Y2tpbmdfb3BzKHN0cnVjdCBzcGlfbm9yICpub3IpOwo+Pj4gwqAgdm9pZCBzcGlfbm9yX3RyeV91 bmxvY2tfYWxsKHN0cnVjdCBzcGlfbm9yICpub3IpOwo+Pj4gwqAgdm9pZCBzcGlfbm9yX3NldF9t dGRfbG9ja2luZ19vcHMoc3RydWN0IHNwaV9ub3IgKm5vcik7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tdGQvc3BpLW5vci9zZmRwLmMgYi9kcml2ZXJzL210ZC9zcGktbm9yL3NmZHAuYwo+Pj4g aW5kZXggNWIxMTE3MjY1YmQyLi41NDJjNzc1OTE4YWQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJz L210ZC9zcGktbm9yL3NmZHAuYwo+Pj4gKysrIGIvZHJpdmVycy9tdGQvc3BpLW5vci9zZmRwLmMK Pj4+IEBAIC03NjUsNiArNzY1LDEwIEBAIHN0YXRpYyBjb25zdCB1MzIgKnNwaV9ub3JfZ2V0X21h cF9pbl91c2Uoc3RydWN0IAo+Pj4gc3BpX25vciAqbm9yLCBjb25zdCB1MzIgKnNtcHQsCj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgbWFwX2lkID0gbWFwX2lkIDw8IDEgfCAhISgqYnVmICYgcmVhZF9k YXRhX21hc2spOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiArwqDCoMKgIGVyciA9IHNwaV9ub3JfcG9z dF9zbXB0X2ZpeHVwcyhub3IsICZtYXBfaWQpOwo+Pj4gK8KgwqDCoCBpZiAoZXJyKQo+Pj4gK8Kg wqDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKGVycik7Cj4+PiArCj4+PiDCoMKgwqDCoMKgIC8q Cj4+PiDCoMKgwqDCoMKgwqAgKiBJZiBjb21tYW5kIGRlc2NyaXB0b3JzIGFyZSBwcm92aWRlZCwg dGhleSBhbHdheXMgcHJlY2VkZSBtYXAKPj4+IMKgwqDCoMKgwqDCoCAqIGRlc2NyaXB0b3JzIGlu IHRoZSB0YWJsZS4gVGhlcmUgaXMgbm8gbmVlZCB0byBzdGFydCB0aGUgCj4+PiBpdGVyYXRpb24K Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9zcGktbm9yL3NwYW5zaW9uLmMgYi9kcml2ZXJz L210ZC9zcGktbm9yLyAKPj4+IHNwYW5zaW9uLmMKPj4+IGluZGV4IGQ2YzkyNTk1ZjZiYy4uZDQ0 NmQxMjM3MWUxIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9tdGQvc3BpLW5vci9zcGFuc2lvbi5j Cj4+PiArKysgYi9kcml2ZXJzL210ZC9zcGktbm9yL3NwYW5zaW9uLmMKPj4+IEBAIC03NTcsNiAr NzU3LDMxIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX25vcl9maXh1cHMgCj4+PiBzMjVmc19z X25vcl9maXh1cHMgPSB7Cj4+PiDCoMKgwqDCoMKgIC5wb3N0X2JmcHQgPSBzMjVmc19zX25vcl9w b3N0X2JmcHRfZml4dXBzLAo+Pj4gwqAgfTsKPj4+ICtzdGF0aWMgaW50IHMyNWZzNTEyc19ub3Jf cG9zdF9zbXB0X2ZpeHVwcyhzdHJ1Y3Qgc3BpX25vciAqbm9yLCB1OCAKPj4+ICpzbXB0KQo+Pj4g K3sKPj4+ICvCoMKgwqAgLyoKPj4+ICvCoMKgwqDCoCAqIFRoZSBTMjVGUzUxMlMgY2hpcCBkYXRh c2hlZXQgcmV2Lk8gVGFibGUgNzEgb24gcGFnZSAxNTMKPj4+ICvCoMKgwqDCoCAqIEpFREVDIFNl Y3RvciBNYXAgUGFyYW1ldGVyIER3b3JkLTYgQ29uZmlnLiBEZXRlY3QtMyBkb2VzCj4+PiArwqDC oMKgwqAgKiB1c2UgQ1IzTlYgYml0IDEgdG8gZGlzY2VybiA2NGtpQi8yNTZraUIgdW5pZm9ybSBz ZWN0b3JzCj4+PiArwqDCoMKgwqAgKiBkZXZpY2UgY29uZmlndXJhdGlvbiwgaG93ZXZlciBhY2Nv cmRpbmcgdG8gc2VjdGlvbiA3LjUuNS4xCj4+PiArwqDCoMKgwqAgKiBDb25maWd1cmF0aW9uIFJl Z2lzdGVyIDMgTm9uLXZvbGF0aWxlIChDUjNOVikgcGFnZSA2MSwgdGhlCj4+PiArwqDCoMKgwqAg KiBDUjNOViBiaXQgMSBpcyBSRlUgUmVzZXJ2ZWQgZm9yIEZ1dHVyZSBVc2UsIGFuZCBpcyBzZXQg dG8KPj4+ICvCoMKgwqDCoCAqIDAgb24gbmV3bHkgbWFudWZhY3R1cmVkIGRldmljZXMsIHdoaWNo IG1lYW5zIDY0a2lCIHNlY3RvcnMuCj4+PiArwqDCoMKgwqAgKiBTaW5jZSB0aGUgZGV2aWNlIGRv ZXMgbm90IHN1cHBvcnQgNjRraUIgdW5pZm9ybSBzZWN0b3JzIGluCj4+PiArwqDCoMKgwqAgKiBh bnkgY29uZmlndXJhdGlvbiwgcGFyc2luZyBTTVBUIHRhYmxlIGNhbm5vdCBmaW5kIGEgdmFsaWQK Pj4+ICvCoMKgwqDCoCAqIHNlY3RvciBtYXAgZW50cnkgYW5kIGZhaWxzLiBGaXggdGhpcyB1cCBi eSBzZXR0aW5nIFNNUFQKPj4+ICvCoMKgwqDCoCAqIGNvbmZpZ3VyYXRpb24gaW5kZXggYml0IDAs IHdoaWNoIGlzIHBvcHVsYXRlZCBleGFjdGx5IGJ5Cj4+PiArwqDCoMKgwqAgKiB0aGUgQ1IzTlYg Yml0IDEgYmVpbmcgMS4KPj4+ICvCoMKgwqDCoCAqLwo+Pj4gK8KgwqDCoCAqc21wdCB8PSBCSVQo MCk7Cj4+Cj4+IFBsZWFzZSBoZWxwIG1lIHVuZGVyc3RhbmQgdGhpcy4gTWF5YmUgYSBsaW5rIHRv IHlvdXIgcmV2aXNpb24gb2YKPj4gZGF0YXNoZWV0IHdvdWxkIGhlbHAgbWUuCj4gCj4gaHR0cHM6 Ly93d3cuaW5maW5lb24uY29tL2Fzc2V0cy9yb3cvcHVibGljL2RvY3VtZW50cy8xMC80OS9pbmZp bmVvbi0gCj4gczI1ZnM1MTJzLTUxMi1tYi0xLWRhdGFzaGVldC1lbi5wZGYKPiAKPiBTTVBUIHZh bHVlczoKPiAKPiBpPTAgc21wdFtpXT0wOGZmNjVmYwo+IGk9MSBzbXB0W2ldPTAwMDAwMDA0Cj4g aT0yIHNtcHRbaV09MDRmZjY1ZmMKPiBpPTMgc21wdFtpXT0wMDAwMDAwMgo+IGk9NCBzbXB0W2ld PTAyZmY2NWZkCj4gaT01IHNtcHRbaV09MDAwMDAwMDQKPiBpPTYgc21wdFtpXT1mZjAyMDFmZQo+ IGk9NyBzbXB0W2ldPTAwMDA3ZmYxCj4gaT04IHNtcHRbaV09MDAwMzdmZjQKPiBpPTkgc21wdFtp XT0wM2ZiZmZmNAo+IGk9MTAgc21wdFtpXT1mZjAyMDNmZQo+IGk9MTEgc21wdFtpXT0wM2ZiZmZm NAo+IGk9MTIgc21wdFtpXT0wMDAzN2ZmNAo+IGk9MTMgc21wdFtpXT0wMDAwN2ZmMQo+IGk9MTQg c21wdFtpXT1mZjAwMDVmZgo+IGk9MTUgc21wdFtpXT0wM2ZmZmZmNAo+IAo+PiBJbiB0aGUgZmxh c2ggZGF0YXNoZWV0cyB0aGF0IEkgc2VlLCB0aGVyZSBzaGFsbAo+PiBiZSBhICJTZWN0b3IgTWFw IFBhcmFtZXRlciBUYWJsZSBOb3RlcyIgd2hlcmUgYSAiU2VjdG9yIE1hcCBQYXJhbWV0ZXIiCj4+ IHRhYmxlIGlzIGRlc2NyaWJlZCBzaG93aW5nIGFuIEluZGV4IFZhbHVlIGNvbnN0cnVjdGVkIGJ5 IHRoZSBDUnhOVlt5XQo+PiByZXR1cm4gdmFsdWVzLiBUaGF0IGluZGV4IHZhbHVlIGlzIHRoZSBt YXBfaWQgaW4gdGhlIGNvZGUuCj4+Cj4+IEJ5IHJlYWRpbmcgeW91ciBkZXNjcmlwdGlvbiBJIHVu ZGVyc3RhbmQgQ1IzTlZbMV0gaGFzIHZhbHVlIHplcm8gYXMgaXQKPj4gaXMgbWFya2VkIGFzIFJG VSwgYnV0IGF0IHRoZSBzYW1lIHRpbWUgdGhhdCBiaXQgaXMgZXhwZWN0ZWQgaW4gU01QVCB0bwo+ PiBhbHdheXMgaGF2ZSB2YWx1ZSAxLiBUaGF0J3Mgd2h5IGRhdGFzaGVldHMgbGlrZSB0aGlzIG9u ZSBbMV0gaW4gdGhlaXIKPj4gIlRhYmxlIDcwLiBTZWN0b3IgTWFwIFBhcmFtZXRlciIgZG8gbm90 IGRlc2NyaWJlIENSM05WWzFdIGF0IGFsbCwgYW5kCj4+IGRlZmluZSB0aGUgaW5kZXggdmFsdWUg YXMgQ1IzTlZbM10gPDwgMiB8IENSMU5WWzJdIDw8IDEgfCAxLgo+IAo+IFdoZXJlIGRvZXMgdGhp cyBsYXN0IHBhcnQgImRlZmluZSB0aGUgaW5kZXggdmFsdWUgYXMgQ1IzTlZbM10gPDwgMiB8IAo+ IENSMU5WWzJdIDw8IDEgfCAxIiBjb21lIGZyb20gPwo+IAo+PiBJIGFzc3VtZSB3aGF0IHlvdSdy ZSBkb2luZyBpcyBmaW5lIGFzIGl0IHNob3VsZG4ndCBicmVhayBiYWNrd2FyZAo+PiBjb21wYXRp YmlsaXR5IHdpdGggb3RoZXIgb2xkZXIgZmxhc2hlcyBhcyB0aGVpciBDUjNOVlsxXSBoYXMgdmFs dWUgb25lCj4+IGFueXdheS4gQ29ycmVjdCBtZSBpZiBJJ20gd3JvbmcuCj4gCj4gSSBob3BlIHNv Lgo+IAo+PiBOb3cgbG9va2luZyBhdCB0aGUgY29kZSwgd2hhdCB3ZSB1c3VhbGx5IGRvIGlzIHRv IHNhdmUgdGhlIGZsYXNoCj4+IHBhcmFtZXRlcnMgZGVzY3JpYmVkIGJ5IFNGRFAgaW4gbm9yLT5w YXJhbXMsIHRoZW4gYW1lbmQgdGhvc2UgcGFyYW1ldGVycwo+PiB3aXRoIGZpeHVwIGhvb2tzIGlm IHRoYXQncyBuZWVkZWQuIEhlcmUgeW91IG1vZGlmeSB0aGUgbWFwX2lkIGFuZCB0aGVuCj4+IGxl dCB0aGUgY29kZSB1c2UgaXQgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBzZWN0b3JfbWFwLiBU aGVuIHRoYXQKPj4gc2VjdG9yX21hcCAod2hpY2ggaXMgU01QVCBkYXRhIGZyb20gdGhlIHRhYmxl IGl0c2VsZikgaXMgdXNlZCB0bwo+PiBpbml0aWFsaXplIGVyYXNlIHJlZ2lvbnMuIFRoYXQgc2Vj dG9yX21hcCBjYW4gY29udGFpbiB3cm9uZyBkYXRhIHRvby4KPiAKPiBCeSBzZWN0b3JfbWFwLCBk byB5b3UgcmVmZXIgdG8gdGhlICJzbXB0IiBhcnJheSA/Cj4gCj4+IEknZCBzdWdnZXN0IHNhdmlu ZyBhIG5vci0+cGFyYW1zLT5zZWN0b3JfbWFwIHRoZW4gY2FsbCBhCj4+IGludCBzcGlfbm9yX3Bv c3Rfc21wdF9maXh1cHMoc3RydWN0IHNwaV9ub3IgKm5vciwKPj4gwqDCoMKgwqBjb25zdCBzdHJ1 Y3Qgc2ZkcF9wYXJhbWV0ZXJfaGVhZGVyICpzbXB0X2hlYWRlciwKPj4gwqDCoMKgwqBjb25zdCB1 MzIgKnNtcHQpCj4+IGluIGNhc2Ugc3BpX25vcl9nZXRfbWFwX2luX3VzZSgpIGZhaWxzLiBUaGlz IHdheSBvdGhlcnMgY2FuIHVwZGF0ZQo+PiBzZWN0b3JfbWFwIGFzIHdlbGwgaWYgdGhhdCdzIGV2 ZXIgbmVlZGVkLiBXaGF0IGRvIHlvdSB0aGluaz8KPiAKPiBUaGlzIHdvbid0IHdvcmsgZm9yIG1l LCB3b3VsZCBpdCA/IEluIG15IGNhc2UsIEkgbmVlZCB0byBwYXRjaCBjb250ZW50IAo+IG9mIENS M05WIHJlZ2lzdGVyIHRvIGFzc3VyZSBDUjNOViBiaXQgMSBpcyB3ZWxsIGRlZmluZWQuIEkgZG9u J3QgbmVlZCB0byAKPiBwYXRjaCB0aGUgc2VjdG9yX21hcCBpdHNlbGYuCgpMZXQgbWUgYnVtcCB0 aGlzIGRpc2N1c3Npb24uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=