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 X-Spam-Level: X-Spam-Status: No, score=-16.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E5E58C41604 for ; Sat, 3 Oct 2020 13:01:25 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3B69D206CD for ; Sat, 3 Oct 2020 13:01:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="iEe2fd/L"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="r6h8WpIJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3B69D206CD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=pfhKgLVaHz3IgmpGF6L/7ykV3tC1qJYC4WML1BxPpZA=; b=iEe2fd/LzLXq+hapoaIh0mDBp 8DBl7QGVF4TDjrX1xhLCoRuDZ/ZHoJ9r8dBJVCUHpVqPVfG4M9PJcSfc2lf+FSuBreunYtG6E6eEB cVc1spt+qFMkewYr+wlfBdq8Wckfg+p7BfDvl8TkX/sZiWEren/Nw5tjipCTl/5RENG3YuYgLiHcE HAPCVcCJ9G7BaLrM5fgLYhqOx3VoQL685lVDavsubw9bqEDrHSi79/ALAIsathFwJ1M8Sk6xejdJu uM3EyoCVSXcWTX9CZf6xgYxlPEc8Rg6U+6HAc5d/61kfCVJ1t6w59yPpMQgyVE9uFGAWMXu6ajpyb Ek4CFMHIQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kOh88-0007FH-4f; Sat, 03 Oct 2020 12:59:16 +0000 Received: from mail-ed1-x541.google.com ([2a00:1450:4864:20::541]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kOh84-0007Es-8R for linux-arm-kernel@lists.infradead.org; Sat, 03 Oct 2020 12:59:14 +0000 Received: by mail-ed1-x541.google.com with SMTP id j2so4749790eds.9 for ; Sat, 03 Oct 2020 05:59:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=oeEyOjvVwfvU9yq8EUZDGTDfOeWsWUA3Vks2DRTYsfA=; b=r6h8WpIJHNAmjKr2n4Cgtg+MRbp/kdNijAY2BBHhte9YXp8cjB/2jSYs0rC5m+90l/ E4D9MMvvUN+Pp+h14w1qIkRpu51VBy/yRht7JunQlEvl1KxlMFG5bBJ4gQxBsJ+3lTom V2j7ArG17j7fYmaSFymgeLOIN6PBz9GWvhJOtDoStgIHH+yZ5Y3cOtp98B45ac5oP1Za hJlobUIosJ3Wb9+liON8waRuwHJy1RnwRwTK9BpW/8XNYeu1wAaj8wNcyMnKujpb0VSN wNhmD8ed0DMUee6IWMNqU1Ea1o+nY3ytd/Mupt6IsjVl0jml4fKQdx+IiyHzOoiv0OXW rJRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=oeEyOjvVwfvU9yq8EUZDGTDfOeWsWUA3Vks2DRTYsfA=; b=XFNa7un5uI6HOz3EQLGIOEJielBiy7qDq6NDTWmQTsQiYCHhgAiPsdMrmGMARNKEWY W5YIJg9BCxKFPi4yrflO0KsCBUDtm4d9/V/kfuLH19LnKAcFRCjRhqUXHJKtxWqNy1bf 6SBPk73jMgtg5TlBOvKiXpGhCMZ75+IUJQ/83UBafjiynu3gqhnT9f/fvCM8hXtIW5Ro xWDB1RqpVMZGH2MSSe8zbJtSGcc/ng2V9wIC+Vng+WiHcw9BE9LEHv2QPcAoGvOwh8jh SzrEGcBLqiXvhXVWhAT3y+9lyhp4pk1jOTUnFuQgX0opwOW03UoUIsq47vp0/V0fOsPN gXAg== X-Gm-Message-State: AOAM533+FCgIe2CIGCzIpSWZacgm39vxTJipfEKGwHXLAqoJvxcZacHN TlJPxIB7xzRL/nfBN5Xj/kc= X-Google-Smtp-Source: ABdhPJyoW0rF5p6aRVqFaoPswesq2IHLra3dRZ2GpPEjTWvpkehyr3eT6ej9vYUyMI1cM1UID/q/Kw== X-Received: by 2002:a05:6402:21f3:: with SMTP id ce19mr8410594edb.23.1601729949950; Sat, 03 Oct 2020 05:59:09 -0700 (PDT) Received: from ?IPv6:2003:ea:8f00:6a00:448d:4471:2352:a435? (p200300ea8f006a00448d44712352a435.dip0.t-ipconnect.de. [2003:ea:8f00:6a00:448d:4471:2352:a435]) by smtp.googlemail.com with ESMTPSA id m7sm4709627edv.88.2020.10.03.05.59.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 03 Oct 2020 05:59:09 -0700 (PDT) Subject: Re: [PATCH v2 2/4] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver To: =?UTF-8?Q?=c5=81ukasz_Stelmach?= , "David S. Miller" , Jakub Kicinski , Krzysztof Kozlowski , Kukjin Kim , Rob Herring , Russell King , Andrew Lunn , jim.cromie@gmail.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org References: <20201002192210.19967-1-l.stelmach@samsung.com> <20201002192210.19967-3-l.stelmach@samsung.com> From: Heiner Kallweit Message-ID: <2e7d2325-66ce-3f18-ddcb-628c999b34ed@gmail.com> Date: Sat, 3 Oct 2020 14:59:05 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <20201002192210.19967-3-l.stelmach@samsung.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201003_085912_411667_C1C9AC04 X-CRM114-Status: GOOD ( 36.47 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marek Szyprowski , =?UTF-8?Q?Bart=c5=82omiej_=c5=bbolnierkiewicz?= 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 T24gMDIuMTAuMjAyMCAyMToyMiwgxYF1a2FzeiBTdGVsbWFjaCB3cm90ZToKPiBBU0lYIEFYODg3 OTZbMV0gaXMgYSB2ZXJzYXRpbGUgZXRoZXJuZXQgYWRhcHRlciBjaGlwLCB0aGF0IGNhbiBiZQo+ IGNvbm5lY3RlZCB0byBhIENQVSB3aXRoIGEgOC8xNi1iaXQgYnVzIG9yIHdpdGggYW4gU1BJLiBU aGlzIGRyaXZlcgo+IHN1cHBvcnRzIFNQSSBjb25uZWN0aW9uLgo+IAo+IFRoZSBkcml2ZXIgaGFz IGJlZW4gcG9ydGVkIGZyb20gdGhlIHZlbmRvciBrZXJuZWwgZm9yIEFSVElLNVsyXQo+IGJvYXJk cy4gU2V2ZXJhbCBjaGFuZ2VzIHdlcmUgbWFkZSB0byBhZGFwdCBpdCB0byB0aGUgY3VycmVudCBr ZXJuZWwKPiB3aGljaCBpbmNsdWRlOgo+IAo+ICsgdXBkYXRlZCBEVCBjb25maWd1cmF0aW9uLAo+ ICsgY2xvY2sgY29uZmlndXJhdGlvbiBtb3ZlZCB0byBEVCwKPiArIG5ldyB0aW1lciwgZXRodG9v bCBhbmQgZ3BpbyBBUElzLAo+ICsgZGV2XyogaW5zdGVhZCBvZiBwcl8qIGFuZCBjdXN0b20gcHJp bnRrKCkgd3JhcHBlcnMsCj4gKyByZW1vdmVkIGF3a3dhcmQgdmVuZG9yIHBvd2VyIG1hbmFnZW10 bi4KPiAKPiBbMV0gaHR0cHM6Ly93d3cuYXNpeC5jb20udHcvcHJvZHVjdHMucGhwP29wPXBJdGVt ZGV0YWlsJlBJdGVtSUQ9MTA0OzY1Ozg2JlBMaW5lPTY1Cj4gWzJdIGh0dHBzOi8vZ2l0LnRpemVu Lm9yZy9jZ2l0L3Byb2ZpbGUvY29tbW9uL3BsYXRmb3JtL2tlcm5lbC9saW51eC0zLjEwLWFydGlr Lwo+IAo+IFRoZSBvdGhlciBheDg4Nzk2IGRyaXZlciBpcyBmb3IgTkUyMDAwIGNvbXBhdGlibGUg QVg4ODc5NkwgY2hpcC4gVGhlc2UKPiBjaGlwcyBhcmUgbm90IGNvbXBhdGlibGUuIEhlbmNlLCB0 d28gc2VwYXJhdGUgZHJpdmVycyBhcmUgcmVxdWlyZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogxYF1 a2FzeiBTdGVsbWFjaCA8bC5zdGVsbWFjaEBzYW1zdW5nLmNvbT4KPiAtLS0KPiAgTUFJTlRBSU5F UlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArCj4gIGRyaXZlcnMvbmV0 L2V0aGVybmV0L0tjb25maWcgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBkcml2ZXJzL25ldC9l dGhlcm5ldC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgICAxICsKPiAgZHJpdmVycy9uZXQvZXRo ZXJuZXQvYXNpeC9LY29uZmlnICAgICAgICAgIHwgICAyMSArCj4gIGRyaXZlcnMvbmV0L2V0aGVy bmV0L2FzaXgvTWFrZWZpbGUgICAgICAgICB8ICAgIDYgKwo+ICBkcml2ZXJzL25ldC9ldGhlcm5l dC9hc2l4L2F4ODg3OTZjX2lvY3RsLmMgfCAgMjQxICsrKysrCj4gIGRyaXZlcnMvbmV0L2V0aGVy bmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuaCB8ICAgMjcgKwo+ICBkcml2ZXJzL25ldC9ldGhlcm5l dC9hc2l4L2F4ODg3OTZjX21haW4uYyAgfCAxMDQxICsrKysrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5oICB8ICA1NjggKysrKysrKysr KysKPiAgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19zcGkuYyAgIHwgIDExMSAr KysKPiAgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19zcGkuaCAgIHwgICA2OSAr Kwo+ICAxMSBmaWxlcyBjaGFuZ2VkLCAyMDkyIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvS2NvbmZpZwo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9NYWtlZmlsZQo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19pb2N0bC5jCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmgK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNf bWFpbi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4 ODg3OTZjX21haW4uaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQv YXNpeC9heDg4Nzk2Y19zcGkuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRo ZXJuZXQvYXNpeC9heDg4Nzk2Y19zcGkuaAo+IAo+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBi L01BSU5UQUlORVJTCj4gaW5kZXggZGVhYWZiNjE3MzYxLi42NTRlYjAxMjc0NzkgMTAwNjQ0Cj4g LS0tIGEvTUFJTlRBSU5FUlMKPiArKysgYi9NQUlOVEFJTkVSUwo+IEBAIC0yODIyLDYgKzI4MjIs MTIgQEAgUzoJTWFpbnRhaW5lZAo+ICBGOglEb2N1bWVudGF0aW9uL2h3bW9uL2FzYzc2MjEucnN0 Cj4gIEY6CWRyaXZlcnMvaHdtb24vYXNjNzYyMS5jCj4gIAo+ICtBU0lYIEFYODg3OTZDIFNQSSBF VEhFUk5FVCBBREFQVEVSCj4gK006CcWBdWthc3ogU3RlbG1hY2ggPGwuc3RlbG1hY2hAc2Ftc3Vu Zy5jb20+Cj4gK1M6CU1haW50YWluZWQKPiArRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp bmRpbmdzL25ldC9hc2l4LGF4OTk3MDZjLXNwaS55YW1sCj4gK0Y6CWRyaXZlcnMvbmV0L2V0aGVy bmV0L2FzaXgvYXg4ODc5NmNfKgo+ICsKPiAgQVNQRUVEIFBJTkNUUkwgRFJJVkVSUwo+ICBNOglB bmRyZXcgSmVmZmVyeSA8YW5kcmV3QGFqLmlkLmF1Pgo+ICBMOglsaW51eC1hc3BlZWRAbGlzdHMu b3psYWJzLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29u ZmlnCj4gaW5kZXggZGU1MGU4YjllNjU2Li5mM2IyMThlNDVlYTUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L0tj b25maWcKPiBAQCAtMzIsNiArMzIsNyBAQCBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fw bS9LY29uZmlnIgo+ICBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L2FwcGxlL0tjb25maWci Cj4gIHNvdXJjZSAiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvS2NvbmZpZyIKPiAgc291 cmNlICJkcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvS2NvbmZpZyIKPiArc291cmNlICJkcml2ZXJz L25ldC9ldGhlcm5ldC9hc2l4L0tjb25maWciCj4gIHNvdXJjZSAiZHJpdmVycy9uZXQvZXRoZXJu ZXQvYXRoZXJvcy9LY29uZmlnIgo+ICBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L2F1cm9y YS9LY29uZmlnIgo+ICBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25m aWciCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxlIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvTWFrZWZpbGUKPiBpbmRleCBmOGYzOGRjYjVmOGEuLjllYjM2OGQ5MzYw NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZQo+ICsrKyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxlCj4gQEAgLTE4LDYgKzE4LDcgQEAgb2JqLSQoQ09O RklHX05FVF9YR0VORSkgKz0gYXBtLwo+ICBvYmotJChDT05GSUdfTkVUX1ZFTkRPUl9BUFBMRSkg Kz0gYXBwbGUvCj4gIG9iai0kKENPTkZJR19ORVRfVkVORE9SX0FRVUFOVElBKSArPSBhcXVhbnRp YS8KPiAgb2JqLSQoQ09ORklHX05FVF9WRU5ET1JfQVJDKSArPSBhcmMvCj4gK29iai0kKENPTkZJ R19ORVRfVkVORE9SX0FTSVgpICs9IGFzaXgvCj4gIG9iai0kKENPTkZJR19ORVRfVkVORE9SX0FU SEVST1MpICs9IGF0aGVyb3MvCj4gIG9iai0kKENPTkZJR19ORVRfVkVORE9SX0FVUk9SQSkgKz0g YXVyb3JhLwo+ICBvYmotJChDT05GSUdfTkVUX1ZFTkRPUl9DQURFTkNFKSArPSBjYWRlbmNlLwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L0tjb25maWcgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9hc2l4L0tjb25maWcKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAwMDAwMC4uN2NhYTQ1NjA3NDUwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L2FzaXgvS2NvbmZpZwo+IEBAIC0wLDAgKzEsMjEgQEAKPiArIwo+ICsj IEFzaXggbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbgo+ICsjCj4gKwo+ICtjb25maWcgTkVU X1ZFTkRPUl9BU0lYCj4gKwlib29sICJBc2l4IGRldmljZXMiCj4gKwlkZWZhdWx0IHkKPiArCWhl bHAKPiArCSAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCwgbm9uLVVTQiwgbm90IE5F MjAwMCBjb21wYXRpYmxlKQo+ICsJICBpbnRlcmZhY2UgYmFzZWQgb24gYSBjaGlwIGZyb20gQVNJ WCwgc2F5IFkuCj4gKwo+ICtpZiBORVRfVkVORE9SX0FTSVgKPiArCj4gK2NvbmZpZyBTUElfQVg4 ODc5NkMKPiArCXRyaXN0YXRlICJBc2l4IEFYODg3OTZDLVNQSSBzdXBwb3J0Igo+ICsJZGVwZW5k cyBvbiBTUEkKPiArCWRlcGVuZHMgb24gR1BJT0xJQgo+ICsJaGVscAo+ICsJICBTYXkgWSBoZXJl IGlmIHlvdSBpbnRlbmQgdG8gdXNlIEFTSVggQVg4ODc5NkMgYXR0YWNoZWQgaW4gU1BJIG1vZGUu Cj4gKwo+ICtlbmRpZiAjIE5FVF9WRU5ET1JfQVNJWAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9hc2l4L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9NYWtl ZmlsZQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wYmZiYmIw NDI2MzQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9N YWtlZmlsZQo+IEBAIC0wLDAgKzEsNiBAQAo+ICsjCj4gKyMgTWFrZWZpbGUgZm9yIHRoZSBBc2l4 IG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuCj4gKyMKPiArCj4gK29iai0kKENPTkZJR19TUElfQVg4 ODc5NkMpICs9IGF4ODg3OTZjLm8KPiArYXg4ODc5NmMteSA6PSBheDg4Nzk2Y19tYWluLm8gYXg4 ODc5NmNfaW9jdGwubyBheDg4Nzk2Y19zcGkubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9l dGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4 L2F4ODg3OTZjX2lvY3RsLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MDAwMC4uYjNlM2FjOTY3OTBkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYwo+IEBAIC0wLDAgKzEsMjQxIEBACj4gKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiArLyoKPiArICogQ29weXJpZ2h0 IChjKSAyMDEwIEFTSVggRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KPiArICogQ29weXJpZ2h0IChj KSAyMDIwIFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCj4gKyAqCj4gKyAqIEFTSVggQVg4 ODc5NkMgU1BJIEZhc3QgRXRoZXJuZXQgTGludXggZHJpdmVyCj4gKyAqLwo+ICsKPiArI2RlZmlu ZSBwcl9mbXQoZm10KQkiYXg4ODc5NmM6ICIgZm10Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvYml0 bWFwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Bo eS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+Cj4gKwo+ICsjaW5jbHVkZSAiYXg4 ODc5NmNfbWFpbi5oIgo+ICsjaW5jbHVkZSAiYXg4ODc5NmNfaW9jdGwuaCIKPiArCj4gK3N0YXRp YyB2b2lkIGF4ODg3OTZjX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAo+ICsJ CQkJIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pCj4gK3sKPiArCS8qIEluaGVyaXQgc3Rh bmRhcmQgZGV2aWNlIGluZm8gKi8KPiArCXN0cm5jcHkoaW5mby0+ZHJpdmVyLCBEUlZfTkFNRSwg c2l6ZW9mKGluZm8tPmRyaXZlcikpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMyIGF4ODg3OTZjX2dl dF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoKV2h5IG5vdCB1c2luZyBldGh0b29sX29w X2dldF9saW5rID8KCj4gK3sKPiArCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0g dG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOwo+ICsKPiArCW11dGV4X2xvY2soJmF4X2xvY2FsLT5z cGlfbG9jayk7Cj4gKwo+ICsJcGh5X3JlYWRfc3RhdHVzKG5kZXYtPnBoeWRldik7Cj4gKwo+ICsJ bXV0ZXhfdW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOwo+ICsKPiArCXJldHVybiBuZGV2LT5w aHlkZXYtPmxpbms7Cj4gK30KPiArCj4gK3N0YXRpYyB1MzIgYXg4ODc5NmNfZ2V0X21zZ2xldmVs KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNl ICpheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2KTsKPiArCj4gKwlyZXR1cm4gYXhf bG9jYWwtPm1zZ19lbmFibGU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGF4ODg3OTZjX3NldF9t c2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGxldmVsKQo+ICt7Cj4gKwlzdHJ1 Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2KTsK PiArCj4gKwlheF9sb2NhbC0+bXNnX2VuYWJsZSA9IGxldmVsOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50Cj4gK2F4ODg3OTZjX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRl diwKPiArCQkJICAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpCj4gK3sKPiAr CXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5k ZXYpOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2sp Owo+ICsKPiArCXJldCA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyhuZGV2LCBjbWQp Owo+ICsKPiArCW11dGV4X3VubG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKPiArCj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2F4ODg3OTZjX3NldF9saW5rX2tzZXR0 aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKPiArCQkJICAgIGNvbnN0IHN0cnVjdCBldGh0 b29sX2xpbmtfa3NldHRpbmdzICpjbWQpCj4gK3sKPiArCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2Ug KmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOwo+ICsJaW50IHJldDsKPiArCj4g KwltdXRleF9sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOwo+ICsKPiArCXJldCA9IHBoeV9ldGh0 b29sX3NldF9saW5rX2tzZXR0aW5ncyhuZGV2LCBjbWQpOwo+ICsKPiArCW11dGV4X3VubG9jaygm YXhfbG9jYWwtPnNwaV9sb2NrKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IGF4ODg3OTZjX253YXlfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCj4gK3sK PiArCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNl KG5kZXYpOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZheF9sb2NhbC0+c3BpX2xv Y2spOwo+ICsKPiArCXJldCA9IHBoeV9ldGh0b29sX253YXlfcmVzZXQobmRldik7Cj4gKwo+ICsJ bXV0ZXhfdW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOwo+ICsKPiArCXJldHVybiByZXQ7Cj4g K30KPiArCj4gK3N0YXRpYyB1MzIgYXg4ODc5NmNfZXRodG9vbF9nZXRtc2dsZXZlbChzdHJ1Y3Qg bmV0X2RldmljZSAqbmRldikKPiArewo+ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9j YWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7Cj4gKwo+ICsJcmV0dXJuIGF4X2xvY2FsLT5t c2dfZW5hYmxlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBheDg4Nzk2Y19ldGh0b29sX3NldG1z Z2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgbGV2ZWwpCj4gK3sKPiArCXN0cnVj dCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOwo+ ICsKPiArCWF4X2xvY2FsLT5tc2dfZW5hYmxlID0gbGV2ZWw7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgYXg4ODc5NmNfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQo+ICt7Cj4g KwlyZXR1cm4gQVg4ODc5NkNfUkVHRFVNUF9MRU4gKyBBWDg4Nzk2Q19QSFlfUkVHRFVNUF9MRU47 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK2F4ODg3OTZjX2dldF9yZWdzKHN0cnVjdCBuZXRf ZGV2aWNlICpuZGV2LCBzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLCB2b2lkICpfcCkKPiArewo+ ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2Uo bmRldik7Cj4gKwl1MTYgKnAgPSBfcDsKPiArCWludCBvZmZzZXQsIGk7Cj4gKwo+ICsJbWVtc2V0 KHAsIDAsIEFYODg3OTZDX1JFR0RVTVBfTEVOKTsKPiArCj4gKwlmb3IgKG9mZnNldCA9IDA7IG9m ZnNldCA8IEFYODg3OTZDX1JFR0RVTVBfTEVOOyBvZmZzZXQgKz0gMikgewo+ICsJCWlmICghdGVz dF9iaXQob2Zmc2V0IC8gMiwgYXg4ODc5NmNfbm9fcmVnc19tYXNrKSkKPiArCQkJKnAgPSBBWF9S RUFEKCZheF9sb2NhbC0+YXhfc3BpLCBvZmZzZXQpOwo+ICsJCXArKzsKPiArCX0KPiArCj4gKwlm b3IgKGkgPSAwOyBpIDwgQVg4ODc5NkNfUEhZX1JFR0RVTVBfTEVOIC8gMjsgaSsrKSB7Cj4gKwkJ KnAgPSBwaHlfcmVhZChheF9sb2NhbC0+cGh5ZGV2LCBpKTsKPiArCQlwKys7Cj4gKwl9Cj4gK30K PiArCj4gK2ludCBheDg4Nzk2Y19tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKm1kaW9idXMsIGlu dCBwaHlfaWQsIGludCBsb2MpCj4gK3sKPiArCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xv Y2FsID0gbWRpb2J1cy0+cHJpdjsKPiArCWludCByZXQ7Cj4gKwo+ICsJQVhfV1JJVEUoJmF4X2xv Y2FsLT5heF9zcGksIE1ESU9DUl9SQUREUihsb2MpCj4gKwkJCXwgTURJT0NSX0ZBRERSKHBoeV9p ZCkgfCBNRElPQ1JfUkVBRCwgUDJfTURJT0NSKTsKPiArCj4gKwlyZXQgPSByZWFkX3BvbGxfdGlt ZW91dChBWF9SRUFELCByZXQsCj4gKwkJCQkocmV0ICE9IDApLAo+ICsJCQkJMCwgamlmZmllc190 b191c2VjcyhIWiAvIDEwMCksIGZhbHNlLAo+ICsJCQkJJmF4X2xvY2FsLT5heF9zcGksIFAyX01E SU9DUik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiAtRUJVU1k7Cj4gKwo+ICsJcmV0dXJuIEFY X1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAyX01ESU9EUik7Cj4gK30KPiArCj4gK2ludAo+ICth eDg4Nzk2Y19tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICptZGlvYnVzLCBpbnQgcGh5X2lkLCBp bnQgbG9jLCB1MTYgdmFsKQo+ICt7Cj4gKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2Nh bCA9IG1kaW9idXMtPnByaXY7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCUFYX1dSSVRFKCZheF9sb2Nh bC0+YXhfc3BpLCB2YWwsIFAyX01ESU9EUik7Cj4gKwo+ICsJQVhfV1JJVEUoJmF4X2xvY2FsLT5h eF9zcGksCj4gKwkJIE1ESU9DUl9SQUREUihsb2MpIHwgTURJT0NSX0ZBRERSKHBoeV9pZCkKPiAr CQkgfCBNRElPQ1JfV1JJVEUsIFAyX01ESU9DUik7Cj4gKwo+ICsJcmV0ID0gcmVhZF9wb2xsX3Rp bWVvdXQoQVhfUkVBRCwgcmV0LAo+ICsJCQkJKChyZXQgJiBNRElPQ1JfVkFMSUQpICE9IDApLCAw LAo+ICsJCQkJamlmZmllc190b191c2VjcyhIWiAvIDEwMCksIGZhbHNlLAo+ICsJCQkJJmF4X2xv Y2FsLT5heF9zcGksIFAyX01ESU9DUik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiAtRUlPOwo+ ICsKPiArCWlmIChsb2MgPT0gTUlJX0FEVkVSVElTRSkgewo+ICsJCUFYX1dSSVRFKCZheF9sb2Nh bC0+YXhfc3BpLCAoQk1DUl9GVUxMRFBMWCB8IEJNQ1JfQU5SRVNUQVJUIHwKPiArCQkJICBCTUNS X0FORU5BQkxFIHwgQk1DUl9TUEVFRDEwMCksIFAyX01ESU9EUik7CgpUaGlzIGxvb2tzIHZlcnkg aGFja3kuIFdoeSBkbyB5b3UgZG8gdGhpcz8KV2hhdCBpZiB0aGUgdXNlciB3YW50cyB0byBzd2l0 Y2ggdG8gZml4ZWQgbW9kZT8KCj4gKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIChNRElP Q1JfUkFERFIoTUlJX0JNQ1IpIHwKPiArCQkJICBNRElPQ1JfRkFERFIocGh5X2lkKSB8IE1ESU9D Ul9XUklURSksCj4gKwkJCSAgUDJfTURJT0NSKTsKPiArCj4gKwkJcmV0ID0gcmVhZF9wb2xsX3Rp bWVvdXQoQVhfUkVBRCwgcmV0LAo+ICsJCQkJCSgocmV0ICYgTURJT0NSX1ZBTElEKSAhPSAwKSwg MCwKPiArCQkJCQlqaWZmaWVzX3RvX3VzZWNzKEhaIC8gMTAwKSwgZmFsc2UsCj4gKwkJCQkJJmF4 X2xvY2FsLT5heF9zcGksIFAyX01ESU9DUik7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIC1F SU87Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgYXg4ODc5NmNfc2V0 X2NzdW1zKHN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsKQo+ICt7Cj4gKwlzdHJ1Y3Qg bmV0X2RldmljZSAqbmRldiA9IGF4X2xvY2FsLT5uZGV2Owo+ICsKPiArCWlmIChuZGV2LT5mZWF0 dXJlcyAmIE5FVElGX0ZfUlhDU1VNKSB7Cj4gKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGks IENPRVJDUjBfREVGQVVMVCwgUDRfQ09FUkNSMCk7Cj4gKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5h eF9zcGksIENPRVJDUjFfREVGQVVMVCwgUDRfQ09FUkNSMSk7Cj4gKwl9IGVsc2Ugewo+ICsJCUFY X1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCAwLCBQNF9DT0VSQ1IwKTsKPiArCQlBWF9XUklURSgm YXhfbG9jYWwtPmF4X3NwaSwgMCwgUDRfQ09FUkNSMSk7Cj4gKwl9Cj4gKwo+ICsJaWYgKG5kZXYt PmZlYXR1cmVzICYgTkVUSUZfRl9IV19DU1VNKSB7Cj4gKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5h eF9zcGksIENPRVRDUjBfREVGQVVMVCwgUDRfQ09FVENSMCk7Cj4gKwkJQVhfV1JJVEUoJmF4X2xv Y2FsLT5heF9zcGksIENPRVRDUjFfVFhQUFBFLCBQNF9DT0VUQ1IxKTsKPiArCX0gZWxzZSB7Cj4g KwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIDAsIFA0X0NPRVRDUjApOwo+ICsJCUFYX1dS SVRFKCZheF9sb2NhbC0+YXhfc3BpLCAwLCBQNF9DT0VUQ1IxKTsKPiArCX0KPiArfQo+ICsKPiAr Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF4ODg3OTZjX2V0aHRvb2xfb3BzID0gewo+ICsJLmdl dF9kcnZpbmZvCQk9IGF4ODg3OTZjX2dldF9kcnZpbmZvLAo+ICsJLmdldF9saW5rCQk9IGF4ODg3 OTZjX2dldF9saW5rLAo+ICsJLmdldF9tc2dsZXZlbAkJPSBheDg4Nzk2Y19nZXRfbXNnbGV2ZWws Cj4gKwkuc2V0X21zZ2xldmVsCQk9IGF4ODg3OTZjX3NldF9tc2dsZXZlbCwKPiArCS5nZXRfbGlu a19rc2V0dGluZ3MJPSBheDg4Nzk2Y19nZXRfbGlua19rc2V0dGluZ3MsCj4gKwkuc2V0X2xpbmtf a3NldHRpbmdzCT0gYXg4ODc5NmNfc2V0X2xpbmtfa3NldHRpbmdzLAo+ICsJLm53YXlfcmVzZXQJ CT0gYXg4ODc5NmNfbndheV9yZXNldCwKPiArCS5nZXRfbXNnbGV2ZWwJCT0gYXg4ODc5NmNfZXRo dG9vbF9nZXRtc2dsZXZlbCwKPiArCS5zZXRfbXNnbGV2ZWwJCT0gYXg4ODc5NmNfZXRodG9vbF9z ZXRtc2dsZXZlbCwKPiArCS5nZXRfcmVnc19sZW4JCT0gYXg4ODc5NmNfZ2V0X3JlZ3NfbGVuLAo+ ICsJLmdldF9yZWdzCQk9IGF4ODg3OTZjX2dldF9yZWdzLAo+ICt9Owo+ICsKPiAraW50IGF4ODg3 OTZjX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50 IGNtZCkKPiArewo+ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4 Nzk2Y19kZXZpY2UobmRldik7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmF4X2xv Y2FsLT5zcGlfbG9jayk7Cj4gKwo+ICsJcmV0ID0gcGh5X21paV9pb2N0bChuZGV2LT5waHlkZXYs IGlmciwgY21kKTsKPiArCj4gKwltdXRleF91bmxvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7Cj4g Kwo+ICsJcmV0dXJuIHJldDsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9hc2l4L2F4ODg3OTZjX2lvY3RsLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3 OTZjX2lvY3RsLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4u ZDQ3ODk4MWJmOTk1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2FzaXgvYXg4ODc5NmNfaW9jdGwuaAo+IEBAIC0wLDAgKzEsMjcgQEAKPiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMp IDIwMTAgQVNJWCBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIw MjAgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KPiArICoKPiArICogQVNJWCBBWDg4Nzk2 QyBTUEkgRmFzdCBFdGhlcm5ldCBMaW51eCBkcml2ZXIKPiArICovCj4gKwo+ICsjaWZuZGVmIF9B WDg4Nzk2Q19JT0NUTF9ICj4gKyNkZWZpbmUgX0FYODg3OTZDX0lPQ1RMX0gKPiArCj4gKyNpbmNs dWRlIDxsaW51eC9ldGh0b29sLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KPiAr Cj4gKyNpbmNsdWRlICJheDg4Nzk2Y19tYWluLmgiCj4gKwo+ICtleHRlcm4gY29uc3Qgc3RydWN0 IGV0aHRvb2xfb3BzIGF4ODg3OTZjX2V0aHRvb2xfb3BzOwo+ICsKPiArYm9vbCBheDg4Nzk2Y19j aGVja19wb3dlcihjb25zdCBzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCk7Cj4gK2Jv b2wgYXg4ODc5NmNfY2hlY2tfcG93ZXJfYW5kX3dha2Uoc3RydWN0IGF4ODg3OTZjX2RldmljZSAq YXhfbG9jYWwpOwo+ICt2b2lkIGF4ODg3OTZjX3NldF9wb3dlcl9zYXZpbmcoc3RydWN0IGF4ODg3 OTZjX2RldmljZSAqYXhfbG9jYWwsIHU4IHBzX2xldmVsKTsKPiAraW50IGF4ODg3OTZjX21kaW9f cmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1cywgaW50IHBoeV9pZCwgaW50IGxvYyk7Cj4gK2lu dCBheDg4Nzk2Y19tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICptZGlvYnVzLCBpbnQgcGh5X2lk LCBpbnQgbG9jLCB1MTYgdmFsKTsKPiArdm9pZCBheDg4Nzk2Y19zZXRfY3N1bXMoc3RydWN0IGF4 ODg3OTZjX2RldmljZSAqYXhfbG9jYWwpOwo+ICtpbnQgYXg4ODc5NmNfaW9jdGwoc3RydWN0IG5l dF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpOwo+ICsKPiArI2VuZGlm Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5j IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMjE0OGVhMDEzNjJhCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jCj4g QEAgLTAsMCArMSwxMDQxIEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9ubHkKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDEwIEFTSVggRWxlY3Ryb25pY3MgQ29y cG9yYXRpb24KPiArICogQ29weXJpZ2h0IChjKSAyMDIwIFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28u LCBMdGQuCj4gKyAqCj4gKyAqIEFTSVggQVg4ODc5NkMgU1BJIEZhc3QgRXRoZXJuZXQgTGludXgg ZHJpdmVyCj4gKyAqLwo+ICsKPiArI2RlZmluZSBwcl9mbXQoZm10KQkiYXg4ODc5NmM6ICIgZm10 Cj4gKwo+ICsjaW5jbHVkZSAiYXg4ODc5NmNfbWFpbi5oIgo+ICsjaW5jbHVkZSAiYXg4ODc5NmNf aW9jdGwuaCIKPiArCj4gKyNpbmNsdWRlIDxsaW51eC9iaXRtYXAuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2V0aGVyZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KPiArI2luY2x1 ZGUgPGxpbnV4L21kaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVk ZSA8bGludXgvbmV0ZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ICsjaW5jbHVk ZSA8bGludXgvcGh5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zcGkvc3BpLmg+Cj4gKwo+ICtzdGF0 aWMgaW50IGNvbXA7Cj4gK3N0YXRpYyBpbnQgbXNnX2VuYWJsZSA9IE5FVElGX01TR19QUk9CRSB8 Cj4gKwkJCU5FVElGX01TR19MSU5LIHwKPiArCQkJLyogTkVUSUZfTVNHX1RJTUVSIHwgKi8KPiAr CQkJLyogTkVUSUZfTVNHX0lGRE9XTiB8ICovCj4gKwkJCS8qIE5FVElGX01TR19JRlVQIHwgKi8K PiArCQkJTkVUSUZfTVNHX1JYX0VSUiB8Cj4gKwkJCU5FVElGX01TR19UWF9FUlIgfAo+ICsJCQkv KiBORVRJRl9NU0dfVFhfUVVFVUVEIHwgKi8KPiArCQkJLyogTkVUSUZfTVNHX0lOVFIgfCAqLwo+ ICsJCQkvKiBORVRJRl9NU0dfVFhfRE9ORSB8ICovCj4gKwkJCS8qIE5FVElGX01TR19SWF9TVEFU VVMgfCAqLwo+ICsJCQkvKiBORVRJRl9NU0dfUEtUREFUQSB8ICovCj4gKwkJCS8qIE5FVElGX01T R19IVyB8ICovCj4gKwkJCS8qIE5FVElGX01TR19XT0wgfCAqLwo+ICsJCQkwOwo+ICsKPiArc3Rh dGljIGNoYXIgKm5vX3JlZ3NfbGlzdCA9ICI4MDAxODAwMSxlMTkxODAwMSw4MDAxYTAwMSxmYzBk MDAwMCI7Cj4gK3Vuc2lnbmVkIGxvbmcgYXg4ODc5NmNfbm9fcmVnc19tYXNrW0FYODg3OTZDX1JF R0RVTVBfTEVOIC8gKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDgpXTsKPiArCj4gK21vZHVsZV9w YXJhbShjb21wLCBpbnQsIDA0NDQpOwo+ICtNT0RVTEVfUEFSTV9ERVNDKGNvbXAsICIwPU5vbi1D b21wcmVzc2lvbiBNb2RlLCAxPUNvbXByZXNzaW9uIE1vZGUiKTsKPiArCj4gK21vZHVsZV9wYXJh bShtc2dfZW5hYmxlLCBpbnQsIDA0NDQpOwo+ICtNT0RVTEVfUEFSTV9ERVNDKG1zZ19lbmFibGUs ICJNZXNzYWdlIG1hc2sgKHNlZSBsaW51eC9uZXRkZXZpY2UuaCBmb3IgYml0bWFwKSIpOwo+ICsK PiArc3RhdGljIGludCBheDg4Nzk2Y19zb2Z0X3Jlc2V0KHN0cnVjdCBheDg4Nzk2Y19kZXZpY2Ug KmF4X2xvY2FsKQo+ICt7Cj4gKwl1MTYgdGVtcDsKPiArCWludCByZXQ7Cj4gKwo+ICsJQVhfV1JJ VEUoJmF4X2xvY2FsLT5heF9zcGksIFBTUl9SRVNFVCwgUDBfUFNSKTsKPiArCUFYX1dSSVRFKCZh eF9sb2NhbC0+YXhfc3BpLCBQU1JfUkVTRVRfQ0xSLCBQMF9QU1IpOwo+ICsKPiArCXJldCA9IHJl YWRfcG9sbF90aW1lb3V0KEFYX1JFQUQsIHJldCwKPiArCQkJCShyZXQgJiBQU1JfREVWX1JFQURZ KSwKPiArCQkJCTAsIGppZmZpZXNfdG9fdXNlY3MoMTYwICogSFogLyAxMDAwKSwgZmFsc2UsCj4g KwkJCQkmYXhfbG9jYWwtPmF4X3NwaSwgUDBfUFNSKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJu IC0xOwo+ICsKPiArCXRlbXAgPSBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQNF9TUElDUik7 Cj4gKwlpZiAoYXhfbG9jYWwtPmNhcGFiaWxpdGllcyAmIEFYX0NBUF9DT01QKSB7Cj4gKwkJQVhf V1JJVEUoJmF4X2xvY2FsLT5heF9zcGksCj4gKwkJCSAodGVtcCB8IFNQSUNSX1JDRU4gfCBTUElD Ul9RQ0VOKSwgUDRfU1BJQ1IpOwo+ICsJCWF4X2xvY2FsLT5heF9zcGkuY29tcCA9IDE7Cj4gKwl9 IGVsc2Ugewo+ICsJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLAo+ICsJCQkgKHRlbXAgJiB+ KFNQSUNSX1JDRU4gfCBTUElDUl9RQ0VOKSksIFA0X1NQSUNSKTsKPiArCQlheF9sb2NhbC0+YXhf c3BpLmNvbXAgPSAwOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGF4ODg3OTZjX3JlbG9hZF9lZXByb20oc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9j YWwpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGks IEVFQ1JfUkVMT0FELCBQM19FRUNSKTsKPiArCj4gKwlyZXQgPSByZWFkX3BvbGxfdGltZW91dChB WF9SRUFELCByZXQsCj4gKwkJCQkocmV0ICYgUFNSX0RFVl9SRUFEWSksCj4gKwkJCQkwLCBqaWZm aWVzX3RvX3VzZWNzKDIgKiBIWiAvIDEwMDApLCBmYWxzZSwKPiArCQkJCSZheF9sb2NhbC0+YXhf c3BpLCBQMF9QU1IpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoJmF4X2xvY2FsLT5zcGkt PmRldiwKPiArCQkJInRpbWVvdXQgd2FpdGluZyBmb3IgcmVsb2FkIGVlcHJvbVxuIik7Cj4gKwkJ cmV0dXJuIC0xOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBheDg4Nzk2Y19zZXRfaHdfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQo+ICt7 Cj4gKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2Rldmlj ZShuZGV2KTsKPiArCXUxNiByeF9jdGwgPSBSWENSX0FCOwo+ICsJaW50IG1jX2NvdW50ID0gbmV0 ZGV2X21jX2NvdW50KG5kZXYpOwo+ICsKPiArCW1lbXNldChheF9sb2NhbC0+bXVsdGlfZmlsdGVy LCAwLCBBWF9NQ0FTVF9GSUxURVJfU0laRSk7Cj4gKwo+ICsJaWYgKG5kZXYtPmZsYWdzICYgSUZG X1BST01JU0MpIHsKPiArCQlyeF9jdGwgfD0gUlhDUl9QUk87Cj4gKwo+ICsJfSBlbHNlIGlmIChu ZGV2LT5mbGFncyAmIElGRl9BTExNVUxUSSB8fCBtY19jb3VudCA+IEFYX01BWF9NQ0FTVCkgewo+ ICsJCXJ4X2N0bCB8PSBSWENSX0FNQUxMOwo+ICsKPiArCX0gZWxzZSBpZiAobWNfY291bnQgPT0g MCkgewo+ICsJCS8qIGp1c3QgYnJvYWRjYXN0IGFuZCBkaXJlY3RlZCAqLwo+ICsJfSBlbHNlIHsK PiArCQl1MzIgY3JjX2JpdHM7Cj4gKwkJaW50IGk7Cj4gKwkJc3RydWN0IG5ldGRldl9od19hZGRy ICpoYTsKPiArCj4gKwkJbmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIG5kZXYpIHsKPiArCQkJ Y3JjX2JpdHMgPSBldGhlcl9jcmMoRVRIX0FMRU4sIGhhLT5hZGRyKTsKPiArCQkJYXhfbG9jYWwt Pm11bHRpX2ZpbHRlcltjcmNfYml0cyA+PiAyOV0gfD0KPiArCQkJCQkJKDEgPDwgKChjcmNfYml0 cyA+PiAyNikgJiA3KSk7Cj4gKwkJfQo+ICsKPiArCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7 Cj4gKwkJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLAo+ICsJCQkJICgoYXhfbG9jYWwtPm11 bHRpX2ZpbHRlcltpICogMiArIDFdIDw8IDgpIHwKPiArCQkJCSAgYXhfbG9jYWwtPm11bHRpX2Zp bHRlcltpICogMl0pLCBQM19NRkFSKGkpKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJQVhfV1JJVEUo JmF4X2xvY2FsLT5heF9zcGksIHJ4X2N0bCwgUDJfUlhDUik7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIGF4ODg3OTZjX3NldF9tYWNfYWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiArewo+ ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2Uo bmRldik7Cj4gKwo+ICsJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksICgodTE2KShuZGV2LT5k ZXZfYWRkcls0XSA8PCA4KSB8Cj4gKwkJCSh1MTYpbmRldi0+ZGV2X2FkZHJbNV0pLCBQM19NQUNB U1IwKTsKPiArCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCAoKHUxNikobmRldi0+ZGV2X2Fk ZHJbMl0gPDwgOCkgfAo+ICsJCQkodTE2KW5kZXYtPmRldl9hZGRyWzNdKSwgUDNfTUFDQVNSMSk7 Cj4gKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgKCh1MTYpKG5kZXYtPmRldl9hZGRyWzBd IDw8IDgpIHwKPiArCQkJKHUxNiluZGV2LT5kZXZfYWRkclsxXSksIFAzX01BQ0FTUjIpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGF4ODg3OTZjX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2Rl dmljZSAqbmRldiwgdm9pZCAqcCkKPiArewo+ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhf bG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7Cj4gKwlzdHJ1Y3Qgc29ja2FkZHIgKmFk ZHIgPSBwOwo+ICsKPiArCWlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihhZGRyLT5zYV9kYXRhKSkK PiArCQlyZXR1cm4gLUVBRERSTk9UQVZBSUw7Cj4gKwo+ICsJbWVtY3B5KG5kZXYtPmRldl9hZGRy LCBhZGRyLT5zYV9kYXRhLCBuZGV2LT5hZGRyX2xlbik7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmYXhf bG9jYWwtPnNwaV9sb2NrKTsKPiArCj4gKwlheDg4Nzk2Y19zZXRfbWFjX2FkZHIobmRldik7Cj4g Kwo+ICsJbXV0ZXhfdW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOwo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBheDg4Nzk2Y19sb2FkX21hY19hZGRyKHN0cnVjdCBu ZXRfZGV2aWNlICpuZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2Nh bCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2KTsKPiArCXUxNiB0ZW1wOwo+ICsKPiArCS8qIFRy eSB0aGUgZGV2aWNlIHRyZWUgZmlyc3QgKi8KPiArCWlmICghZXRoX3BsYXRmb3JtX2dldF9tYWNf YWRkcmVzcygmYXhfbG9jYWwtPnNwaS0+ZGV2LCBuZGV2LT5kZXZfYWRkcikgJiYKPiArCSAgICBp c192YWxpZF9ldGhlcl9hZGRyKG5kZXYtPmRldl9hZGRyKSkgewo+ICsJCWlmIChuZXRpZl9tc2df cHJvYmUoYXhfbG9jYWwpKQo+ICsJCQlkZXZfaW5mbygmYXhfbG9jYWwtPnNwaS0+ZGV2LAo+ICsJ CQkJICJNQUMgYWRkcmVzcyByZWFkIGZyb20gZGV2aWNlIHRyZWVcbiIpOwo+ICsJCXJldHVybjsK PiArCX0KPiArCj4gKwkvKiBSZWFkIHRoZSBNQUMgYWRkcmVzcyBmcm9tIEFYODg3OTZDICovCj4g Kwl0ZW1wID0gQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDNfTUFDQVNSMCk7Cj4gKwluZGV2 LT5kZXZfYWRkcls1XSA9ICh1OCl0ZW1wOwo+ICsJbmRldi0+ZGV2X2FkZHJbNF0gPSAodTgpKHRl bXAgPj4gOCk7Cj4gKwo+ICsJdGVtcCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAzX01B Q0FTUjEpOwo+ICsJbmRldi0+ZGV2X2FkZHJbM10gPSAodTgpdGVtcDsKPiArCW5kZXYtPmRldl9h ZGRyWzJdID0gKHU4KSh0ZW1wID4+IDgpOwo+ICsKPiArCXRlbXAgPSBBWF9SRUFEKCZheF9sb2Nh bC0+YXhfc3BpLCBQM19NQUNBU1IyKTsKPiArCW5kZXYtPmRldl9hZGRyWzFdID0gKHU4KXRlbXA7 Cj4gKwluZGV2LT5kZXZfYWRkclswXSA9ICh1OCkodGVtcCA+PiA4KTsKPiArCj4gKwlpZiAoaXNf dmFsaWRfZXRoZXJfYWRkcihuZGV2LT5kZXZfYWRkcikpIHsKPiArCQlpZiAobmV0aWZfbXNnX3By b2JlKGF4X2xvY2FsKSkKPiArCQkJZGV2X2luZm8oJmF4X2xvY2FsLT5zcGktPmRldiwKPiArCQkJ CSAiTUFDIGFkZHJlc3MgcmVhZCBmcm9tIEFTSVggY2hpcFxuIik7Cj4gKwkJcmV0dXJuOwo+ICsJ fQo+ICsKPiArCS8qIFVzZSByYW5kb20gYWRkcmVzcyBpZiBub25lIGZvdW5kICovCj4gKwlpZiAo bmV0aWZfbXNnX3Byb2JlKGF4X2xvY2FsKSkKPiArCQlkZXZfaW5mbygmYXhfbG9jYWwtPnNwaS0+ ZGV2LCAiVXNlIHJhbmRvbSBNQUMgYWRkcmVzc1xuIik7Cj4gKwlldGhfaHdfYWRkcl9yYW5kb20o bmRldik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGF4ODg3OTZjX3Byb2NfdHhfaGRyKHN0cnVj dCB0eF9wa3RfaW5mbyAqaW5mbywgdTggaXBfc3VtbWVkKQo+ICt7Cj4gKwl1MTYgcGt0X2xlbl9i YXIgPSAofmluZm8tPnBrdF9sZW4gJiBUWF9IRFJfU09QX1BLVExFTkJBUik7Cj4gKwo+ICsJLyog UHJlcGFyZSBTT1AgaGVhZGVyICovCj4gKwlpbmZvLT5zb3AuZmxhZ3NfbGVuID0gaW5mby0+cGt0 X2xlbiB8Cj4gKwkJKChpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fTk9ORSkgfHwKPiArCQkgKGlwX3N1 bW1lZCA9PSBDSEVDS1NVTV9VTk5FQ0VTU0FSWSkgPyBUWF9IRFJfU09QX0RJQ0YgOiAwKTsKPiAr Cj4gKwlpbmZvLT5zb3Auc2VxX2xlbmJhciA9ICgoaW5mby0+c2VxX251bSA8PCAxMSkgJiBUWF9I RFJfU09QX1NFUU5VTSkKPiArCQkJCXwgcGt0X2xlbl9iYXI7Cj4gKwljcHVfdG9fYmUxNnMoJmlu Zm8tPnNvcC5mbGFnc19sZW4pOwo+ICsJY3B1X3RvX2JlMTZzKCZpbmZvLT5zb3Auc2VxX2xlbmJh cik7Cj4gKwo+ICsJLyogUHJlcGFyZSBTZWdtZW50IGhlYWRlciAqLwo+ICsJaW5mby0+c2VnLmZs YWdzX3NlcW51bV9zZWdsZW4gPSBUWF9IRFJfU0VHX0ZTIHwgVFhfSERSX1NFR19MUwo+ICsJCQkJ CQl8IGluZm8tPnBrdF9sZW47Cj4gKwo+ICsJaW5mby0+c2VnLmVvX3NvX3NlZ2xlbmJhciA9IHBr dF9sZW5fYmFyOwo+ICsKPiArCWNwdV90b19iZTE2cygmaW5mby0+c2VnLmZsYWdzX3NlcW51bV9z ZWdsZW4pOwo+ICsJY3B1X3RvX2JlMTZzKCZpbmZvLT5zZWcuZW9fc29fc2VnbGVuYmFyKTsKPiAr Cj4gKwkvKiBQcmVwYXJlIEVPUCBoZWFkZXIgKi8KPiArCWluZm8tPmVvcC5zZXFfbGVuID0gKChp bmZvLT5zZXFfbnVtIDw8IDExKSAmCj4gKwkJCSAgICAgVFhfSERSX0VPUF9TRVFOVU0pIHwgaW5m by0+cGt0X2xlbjsKPiArCWluZm8tPmVvcC5zZXFiYXJfbGVuYmFyID0gKCh+aW5mby0+c2VxX251 bSA8PCAxMSkgJgo+ICsJCQkJICAgVFhfSERSX0VPUF9TRVFOVU1CQVIpIHwgcGt0X2xlbl9iYXI7 Cj4gKwo+ICsJY3B1X3RvX2JlMTZzKCZpbmZvLT5lb3Auc2VxX2xlbik7Cj4gKwljcHVfdG9fYmUx NnMoJmluZm8tPmVvcC5zZXFiYXJfbGVuYmFyKTsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICth eDg4Nzk2Y19jaGVja19mcmVlX3BhZ2VzKHN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2Fs LCB1OCBuZWVkX3BhZ2VzKQo+ICt7Cj4gKwl1OCBmcmVlX3BhZ2VzOwo+ICsJdTE2IHRtcDsKPiAr Cj4gKwlmcmVlX3BhZ2VzID0gQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDBfVEZCRkNSKSAm IFRYX0ZSRUVCVUZfTUFTSzsKPiArCWlmIChmcmVlX3BhZ2VzIDwgbmVlZF9wYWdlcykgewo+ICsJ CS8qIHNjaGVkdWxlIGZyZWUgcGFnZSBpbnRlcnJ1cHQgKi8KPiArCQl0bXAgPSBBWF9SRUFEKCZh eF9sb2NhbC0+YXhfc3BpLCBQMF9URkJGQ1IpCj4gKwkJCQkmIFRGQkZDUl9TQ0hFX0ZSRUVfUEFH RTsKPiArCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgdG1wIHwgVEZCRkNSX1RYX1BBR0Vf U0VUIHwKPiArCQkJCVRGQkZDUl9TRVRfRlJFRV9QQUdFKG5lZWRfcGFnZXMpLAo+ICsJCQkJUDBf VEZCRkNSKTsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsKPiArc3RhdGljIHN0cnVjdCBza19idWZmICoKPiArYXg4ODc5NmNfdHhfZml4dXAoc3Ry dWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBza19idWZmX2hlYWQgKnEpCj4gK3sKPiArCXN0 cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYp Owo+ICsJc3RydWN0IHNrX2J1ZmYgKnNrYiwgKnR4X3NrYjsKPiArCXN0cnVjdCB0eF9wa3RfaW5m byAqaW5mbzsKPiArCXN0cnVjdCBza2JfZGF0YSAqZW50cnk7Cj4gKwlpbnQgaGVhZHJvb207Cj4g KwlpbnQgdGFpbHJvb207Cj4gKwl1OCBuZWVkX3BhZ2VzOwo+ICsJdTE2IHRvbF9sZW4sIHBrdF9s ZW47Cj4gKwl1OCBwYWRsZW4sIHNlcV9udW07Cj4gKwl1OCBzcGlfbGVuID0gYXhfbG9jYWwtPmF4 X3NwaS5jb21wID8gMSA6IDQ7Cj4gKwo+ICsJaWYgKHNrYl9xdWV1ZV9lbXB0eShxKSkKPiArCQly ZXR1cm4gTlVMTDsKPiArCj4gKwlza2IgPSBza2JfcGVlayhxKTsKPiArCXBrdF9sZW4gPSBza2It PmxlbjsKPiArCW5lZWRfcGFnZXMgPSAocGt0X2xlbiArIFRYX09WRVJIRUFEICsgMTI3KSA+PiA3 Owo+ICsJaWYgKGF4ODg3OTZjX2NoZWNrX2ZyZWVfcGFnZXMoYXhfbG9jYWwsIG5lZWRfcGFnZXMp ICE9IDApCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJaGVhZHJvb20gPSBza2JfaGVhZHJvb20o c2tiKTsKPiArCXRhaWxyb29tID0gc2tiX3RhaWxyb29tKHNrYik7Cj4gKwlwYWRsZW4gPSAoKHBr dF9sZW4gKyAzKSAmIDB4N0ZDKSAtIHBrdF9sZW47Cj4gKwl0b2xfbGVuID0gKChwa3RfbGVuICsg MykgJiAweDdGQykgKwo+ICsJCQlUWF9PVkVSSEVBRCArIFRYX0VPUF9TSVpFICsgc3BpX2xlbjsK PiArCXNlcV9udW0gPSArK2F4X2xvY2FsLT5zZXFfbnVtICYgMHgxRjsKPiArCj4gKwlpbmZvID0g KHN0cnVjdCB0eF9wa3RfaW5mbyAqKXNrYi0+Y2I7Cj4gKwlpbmZvLT5wa3RfbGVuID0gcGt0X2xl bjsKPiArCj4gKwlpZiAoKCFza2JfY2xvbmVkKHNrYikpICYmCj4gKwkgICAgKGhlYWRyb29tID49 IChUWF9PVkVSSEVBRCArIHNwaV9sZW4pKSAmJgo+ICsJICAgICh0YWlscm9vbSA+PSAocGFkbGVu ICsgVFhfRU9QX1NJWkUpKSkgewo+ICsJCWluZm8tPnNlcV9udW0gPSBzZXFfbnVtOwo+ICsJCWF4 ODg3OTZjX3Byb2NfdHhfaGRyKGluZm8sIHNrYi0+aXBfc3VtbWVkKTsKPiArCj4gKwkJLyogU09Q IGFuZCBTRUcgaGVhZGVyICovCj4gKwkJbWVtY3B5KHNrYl9wdXNoKHNrYiwgVFhfT1ZFUkhFQUQp LCAmaW5mby0+c29wLCBUWF9PVkVSSEVBRCk7Cj4gKwo+ICsJCS8qIFdyaXRlIFNQSSBUWFEgaGVh ZGVyICovCj4gKwkJbWVtY3B5KHNrYl9wdXNoKHNrYiwgc3BpX2xlbiksIHR4X2NtZF9idWYsIHNw aV9sZW4pOwo+ICsKPiArCQkvKiBNYWtlIDMyLWJpdCBhbGlnbm1lbnQgKi8KPiArCQlza2JfcHV0 KHNrYiwgcGFkbGVuKTsKPiArCj4gKwkJLyogRU9QIGhlYWRlciAqLwo+ICsJCW1lbWNweShza2Jf cHV0KHNrYiwgVFhfRU9QX1NJWkUpLCAmaW5mby0+ZW9wLCBUWF9FT1BfU0laRSk7Cj4gKwo+ICsJ CXR4X3NrYiA9IHNrYjsKPiArCQlza2JfdW5saW5rKHNrYiwgcSk7Cj4gKwl9IGVsc2Ugewo+ICsJ CXR4X3NrYiA9IGFsbG9jX3NrYih0b2xfbGVuLCBHRlBfS0VSTkVMKTsKCkFyZSB5b3Ugc3VyZSBH RlBfS0VSTkVMIGlzIGFwcHJvcHJpYXRlIGhlcmUgYW5kIHlvdSBkb24ndCBoYXZlCnRvIHVzZSBH RlBfQVRPTUlDPwoKPiArCQlpZiAoIXR4X3NrYikKPiArCQkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJ CS8qIFdyaXRlIFNQSSBUWFEgaGVhZGVyICovCj4gKwkJbWVtY3B5KHNrYl9wdXQodHhfc2tiLCBz cGlfbGVuKSwgdHhfY21kX2J1Ziwgc3BpX2xlbik7Cj4gKwo+ICsJCWluZm8tPnNlcV9udW0gPSBz ZXFfbnVtOwo+ICsJCWF4ODg3OTZjX3Byb2NfdHhfaGRyKGluZm8sIHNrYi0+aXBfc3VtbWVkKTsK PiArCj4gKwkJLyogU09QIGFuZCBTRUcgaGVhZGVyICovCj4gKwkJbWVtY3B5KHNrYl9wdXQodHhf c2tiLCBUWF9PVkVSSEVBRCksCj4gKwkJICAgICAgICZpbmZvLT5zb3AsIFRYX09WRVJIRUFEKTsK PiArCj4gKwkJLyogUGFja2V0ICovCj4gKwkJbWVtY3B5KHNrYl9wdXQodHhfc2tiLCAoKHBrdF9s ZW4gKyAzKSAmIDB4RkZGQykpLAo+ICsJCSAgICAgICBza2ItPmRhdGEsIHBrdF9sZW4pOwo+ICsK PiArCQkvKiBFT1AgaGVhZGVyICovCj4gKwkJbWVtY3B5KHNrYl9wdXQodHhfc2tiLCBUWF9FT1Bf U0laRSksCj4gKwkJICAgICAgICZpbmZvLT5lb3AsIFRYX0VPUF9TSVpFKTsKPiArCj4gKwkJc2ti X3VubGluayhza2IsIHEpOwo+ICsJCWRldl9rZnJlZV9za2Ioc2tiKTsKPiArCX0KPiArCj4gKwll bnRyeSA9IChzdHJ1Y3Qgc2tiX2RhdGEgKil0eF9za2ItPmNiOwo+ICsJbWVtc2V0KGVudHJ5LCAw LCBzaXplb2YoKmVudHJ5KSk7Cj4gKwllbnRyeS0+bGVuID0gcGt0X2xlbjsKPiArCj4gKwlpZiAo bmV0aWZfbXNnX3BrdGRhdGEoYXhfbG9jYWwpKSB7Cj4gKwkJY2hhciBwZnhbSUZOQU1TSVogKyA3 XTsKPiArCj4gKwkJc25wcmludGYocGZ4LCBzaXplb2YocGZ4KSwgIiVzOiAgICAgIiwgbmRldi0+ bmFtZSk7Cj4gKwo+ICsJCW5ldGRldl9pbmZvKG5kZXYsICJUWCBwYWNrZXQgbGVuICVkLCB0b3Rh bCBsZW4gJWQsIHNlcSAlZFxuIiwKPiArCQkJICAgIHBrdF9sZW4sIHR4X3NrYi0+bGVuLCBzZXFf bnVtKTsKPiArCj4gKwkJbmV0ZGV2X2luZm8obmRldiwgIiAgU1BJIEhlYWRlcjpcbiIpOwo+ICsJ CXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgcGZ4LCBEVU1QX1BSRUZJWF9PRkZTRVQsIDE2LCAx LAo+ICsJCQkgICAgICAgdHhfc2tiLT5kYXRhLCA0LCAwKTsKPiArCj4gKwkJbmV0ZGV2X2luZm8o bmRldiwgIiAgVFggU09QOlxuIik7Cj4gKwkJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCBwZngs IERVTVBfUFJFRklYX09GRlNFVCwgMTYsIDEsCj4gKwkJCSAgICAgICB0eF9za2ItPmRhdGEgKyA0 LCBUWF9PVkVSSEVBRCwgMCk7Cj4gKwo+ICsJCW5ldGRldl9pbmZvKG5kZXYsICIgIFRYIHBhY2tl dDpcbiIpOwo+ICsJCXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgcGZ4LCBEVU1QX1BSRUZJWF9P RkZTRVQsIDE2LCAxLAo+ICsJCQkgICAgICAgdHhfc2tiLT5kYXRhICsgNCArIFRYX09WRVJIRUFE LAo+ICsJCQkgICAgICAgdHhfc2tiLT5sZW4gLSBUWF9FT1BfU0laRSAtIDQgLSBUWF9PVkVSSEVB RCwgMCk7Cj4gKwo+ICsJCW5ldGRldl9pbmZvKG5kZXYsICIgIFRYIEVPUDpcbiIpOwo+ICsJCXBy aW50X2hleF9kdW1wKEtFUk5fSU5GTywgcGZ4LCBEVU1QX1BSRUZJWF9PRkZTRVQsIDE2LCAxLAo+ ICsJCQkgICAgICAgdHhfc2tiLT5kYXRhICsgdHhfc2tiLT5sZW4gLSA0LCA0LCAwKTsKPiArCX0K PiArCj4gKwlyZXR1cm4gdHhfc2tiOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGF4ODg3OTZjX2hh cmRfeG1pdChzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCkKPiArewo+ICsJc3RydWN0 IHNrX2J1ZmYgKnR4X3NrYjsKPiArCXN0cnVjdCBza2JfZGF0YSAqZW50cnk7Cj4gKwo+ICsJdHhf c2tiID0gYXg4ODc5NmNfdHhfZml4dXAoYXhfbG9jYWwtPm5kZXYsICZheF9sb2NhbC0+dHhfd2Fp dF9xKTsKPiArCj4gKwlpZiAoIXR4X3NrYikKPiArCQlyZXR1cm4gMDsKPiArCj4gKwllbnRyeSA9 IChzdHJ1Y3Qgc2tiX2RhdGEgKil0eF9za2ItPmNiOwo+ICsKPiArCUFYX1dSSVRFKCZheF9sb2Nh bC0+YXhfc3BpLAo+ICsJCSAoVFNOUl9UWEJfU1RBUlQgfCBUU05SX1BLVF9DTlQoMSkpLCBQMF9U U05SKTsKPiArCj4gKwlheHNwaV93cml0ZV90eHEoJmF4X2xvY2FsLT5heF9zcGksIHR4X3NrYi0+ ZGF0YSwgdHhfc2tiLT5sZW4pOwo+ICsKPiArCWlmICgoKEFYX1JFQUQoJmF4X2xvY2FsLT5heF9z cGksIFAwX1RTTlIpICYgVFhOUl9UWEJfSURMRSkgPT0gMCkgfHwKPiArCSAgICAoKElTUl9UWEVS UiAmIEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAwX0lTUikpICE9IDApKSB7Cj4gKwkJLyog QWNrIHR4IGVycm9yIGludCAqLwo+ICsJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJU1Jf VFhFUlIsIFAwX0lTUik7Cj4gKwo+ICsJCWF4X2xvY2FsLT5zdGF0cy50eF9kcm9wcGVkKys7Cj4g Kwo+ICsJCW5ldGlmX2VycihheF9sb2NhbCwgdHhfZXJyLCBheF9sb2NhbC0+bmRldiwKPiArCQkJ ICAiVFggRklGTyBlcnJvciwgcmUtaW5pdGlhbGl6ZSB0aGUgVFggYnJpZGdlXG4iKTsKPiArCj4g KwkJLyogUmVpbml0aWFsIHR4IGJyaWRnZSAqLwo+ICsJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhf c3BpLCBUWE5SX1RYQl9SRUlOSVQgfAo+ICsJCQlBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQ MF9UU05SKSwgUDBfVFNOUik7Cj4gKwkJYXhfbG9jYWwtPnNlcV9udW0gPSAwOwo+ICsJfSBlbHNl IHsKPiArCQlheF9sb2NhbC0+c3RhdHMudHhfcGFja2V0cysrOwo+ICsJCWF4X2xvY2FsLT5zdGF0 cy50eF9ieXRlcyArPSBlbnRyeS0+bGVuOwo+ICsJfQo+ICsKPiArCWVudHJ5LT5zdGF0ZSA9IHR4 X2RvbmU7Cj4gKwlkZXZfa2ZyZWVfc2tiKHR4X3NrYik7Cj4gKwo+ICsJcmV0dXJuIDE7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQKPiArYXg4ODc5NmNfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAq c2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiArewo+ICsJc3RydWN0IGF4ODg3OTZjX2Rl dmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7Cj4gKwo+ICsJc2tiX3F1 ZXVlX3RhaWwoJmF4X2xvY2FsLT50eF93YWl0X3EsIHNrYik7Cj4gKwlpZiAoc2tiX3F1ZXVlX2xl bigmYXhfbG9jYWwtPnR4X3dhaXRfcSkgPiBUWF9RVUVVRV9ISUdIX1dBVEVSKSB7Cj4gKwkJbmV0 aWZfZXJyKGF4X2xvY2FsLCB0eF9xdWV1ZWQsIG5kZXYsCj4gKwkJCSAgIlRvbyBtdWNoIFRYIHBh Y2tldHMgaW4gcXVldWUgJWRcbiIsCj4gKwkJCSAgc2tiX3F1ZXVlX2xlbigmYXhfbG9jYWwtPnR4 X3dhaXRfcSkpOwo+ICsKPiArCQluZXRpZl9zdG9wX3F1ZXVlKG5kZXYpOwo+ICsJfQo+ICsKPiAr CXNldF9iaXQoRVZFTlRfVFgsICZheF9sb2NhbC0+ZmxhZ3MpOwo+ICsJcXVldWVfd29yayhheF9s b2NhbC0+YXhfd29ya19xdWV1ZSwgJmF4X2xvY2FsLT5heF93b3JrKTsKPiArCj4gKwlyZXR1cm4g TkVUREVWX1RYX09LOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtheDg4Nzk2Y19za2JfcmV0 dXJuKHN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti LAo+ICsJCSAgICBzdHJ1Y3QgcnhfaGVhZGVyICpyeGhkcikKPiArewo+ICsJc3RydWN0IG5ldF9k ZXZpY2UgKm5kZXYgPSBheF9sb2NhbC0+bmRldjsKPiArCWludCBzdGF0dXM7Cj4gKwo+ICsJZG8g ewo+ICsJCWlmICghKG5kZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9SWENTVU0pKQo+ICsJCQlicmVh azsKPiArCj4gKwkJLyogY2hlY2tzdW0gZXJyb3IgYml0IGlzIHNldCAqLwo+ICsJCWlmICgocnho ZHItPmZsYWdzICYgUlhfSERSM19MM19FUlIpIHx8Cj4gKwkJICAgIChyeGhkci0+ZmxhZ3MgJiBS WF9IRFIzX0w0X0VSUikpCj4gKwkJCWJyZWFrOwo+ICsKPiArCQkvKiBPdGhlciB0eXBlcyBtYXkg YmUgaW5kaWNhdGVkIGJ5IG1vcmUgdGhhbiBvbmUgYml0LiAqLwo+ICsJCWlmICgocnhoZHItPmZs YWdzICYgUlhfSERSM19MNF9UWVBFX1RDUCkgfHwKPiArCQkgICAgKHJ4aGRyLT5mbGFncyAmIFJY X0hEUjNfTDRfVFlQRV9VRFApKQo+ICsJCQlza2ItPmlwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVD RVNTQVJZOwo+ICsJfSB3aGlsZSAoMCk7CgpXaHkgdGhpcyBkbyB7fSB3aGlsZSgwKSBjb25zdHJ1 Y3Q/IElmIHlvdSB3YW50IHRvIHNlcGFyYXRlIHRoaXMgY29kZSwKdGhlbiBwdXQgaXQgaW50byBp dHMgb3duIGZ1bmN0aW9uLgoKPiArCj4gKwlheF9sb2NhbC0+c3RhdHMucnhfcGFja2V0cysrOwo+ ICsJYXhfbG9jYWwtPnN0YXRzLnJ4X2J5dGVzICs9IHNrYi0+bGVuOwo+ICsJc2tiLT5kZXYgPSBu ZGV2Owo+ICsKPiArCXNrYi0+dHJ1ZXNpemUgPSBza2ItPmxlbiArIHNpemVvZihzdHJ1Y3Qgc2tf YnVmZik7Cj4gKwlza2ItPnByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBheF9sb2NhbC0+ bmRldik7Cj4gKwo+ICsJbmV0aWZfaW5mbyhheF9sb2NhbCwgcnhfc3RhdHVzLCBuZGV2LCAiPCBy eCwgbGVuICV6dSwgdHlwZSAweCV4XG4iLAo+ICsJCSAgIHNrYi0+bGVuICsgc2l6ZW9mKHN0cnVj dCBldGhoZHIpLCBza2ItPnByb3RvY29sKTsKPiArCj4gKwlzdGF0dXMgPSBuZXRpZl9yeChza2Ip Owo+ICsJaWYgKHN0YXR1cyAhPSBORVRfUlhfU1VDQ0VTUykKPiArCQluZXRpZl9pbmZvKGF4X2xv Y2FsLCByeF9lcnIsIG5kZXYsCj4gKwkJCSAgICJuZXRpZl9yeCBzdGF0dXMgJWRcbiIsIHN0YXR1 cyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK2F4ODg3OTZjX3J4X2ZpeHVwKHN0cnVjdCBh eDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqcnhfc2tiKQo+ICt7Cj4g KwlzdHJ1Y3QgcnhfaGVhZGVyICpyeGhkciA9IChzdHJ1Y3QgcnhfaGVhZGVyICopcnhfc2tiLT5k YXRhOwo+ICsJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBheF9sb2NhbC0+bmRldjsKPiArCXUx NiBsZW47Cj4gKwo+ICsJYmUxNl90b19jcHVzKCZyeGhkci0+ZmxhZ3NfbGVuKTsKPiArCWJlMTZf dG9fY3B1cygmcnhoZHItPnNlcV9sZW5iYXIpOwo+ICsJYmUxNl90b19jcHVzKCZyeGhkci0+Zmxh Z3MpOwo+ICsKPiArCWlmICgoKChzaG9ydClyeGhkci0+ZmxhZ3NfbGVuKSAmIFJYX0hEUjFfUEtU X0xFTikgIT0KPiArCQkJICh+KChzaG9ydClyeGhkci0+c2VxX2xlbmJhcikgJiAweDdGRikpIHsK PiArCQluZXRpZl9lcnIoYXhfbG9jYWwsIHJ4X2VyciwgbmRldiwgIkhlYWRlciBlcnJvclxuIik7 Cj4gKwo+ICsJCWF4X2xvY2FsLT5zdGF0cy5yeF9mcmFtZV9lcnJvcnMrKzsKPiArCQlrZnJlZV9z a2Iocnhfc2tiKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJaWYgKChyeGhkci0+ZmxhZ3Nf bGVuICYgUlhfSERSMV9NSUlfRVJSKSB8fAo+ICsJICAgIChyeGhkci0+ZmxhZ3NfbGVuICYgUlhf SERSMV9DUkNfRVJSKSkgewo+ICsJCW5ldGlmX2VycihheF9sb2NhbCwgcnhfZXJyLCBuZGV2LCAi Q1JDIG9yIE1JSSBlcnJvclxuIik7Cj4gKwo+ICsJCWF4X2xvY2FsLT5zdGF0cy5yeF9jcmNfZXJy b3JzKys7Cj4gKwkJa2ZyZWVfc2tiKHJ4X3NrYik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiAr CWxlbiA9IHJ4aGRyLT5mbGFnc19sZW4gJiBSWF9IRFIxX1BLVF9MRU47Cj4gKwlpZiAobmV0aWZf bXNnX3BrdGRhdGEoYXhfbG9jYWwpKSB7Cj4gKwkJY2hhciBwZnhbSUZOQU1TSVogKyA3XTsKPiAr Cj4gKwkJc25wcmludGYocGZ4LCBzaXplb2YocGZ4KSwgIiVzOiAgICAgIiwgbmRldi0+bmFtZSk7 Cj4gKwkJbmV0ZGV2X2luZm8obmRldiwgIlJYIGRhdGEsIHRvdGFsIGxlbiAlZCwgcGFja2V0IGxl biAlZFxuIiwKPiArCQkJICAgIHJ4X3NrYi0+bGVuLCBsZW4pOwo+ICsKPiArCQluZXRkZXZfaW5m byhuZGV2LCAiICBEdW1wIFJYIHBhY2tldCBoZWFkZXI6Iik7Cj4gKwkJcHJpbnRfaGV4X2R1bXAo S0VSTl9JTkZPLCBwZngsIERVTVBfUFJFRklYX09GRlNFVCwgMTYsIDEsCj4gKwkJCSAgICAgICBy eF9za2ItPmRhdGEsIHNpemVvZigqcnhoZHIpLCAwKTsKPiArCj4gKwkJbmV0ZGV2X2luZm8obmRl diwgIiAgRHVtcCBSWCBwYWNrZXQ6Iik7Cj4gKwkJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCBw ZngsIERVTVBfUFJFRklYX09GRlNFVCwgMTYsIDEsCj4gKwkJCSAgICAgICByeF9za2ItPmRhdGEg KyBzaXplb2YoKnJ4aGRyKSwgbGVuLCAwKTsKPiArCX0KPiArCj4gKwlza2JfcHVsbChyeF9za2Is IHNpemVvZigqcnhoZHIpKTsKPiArCV9fcHNrYl90cmltKHJ4X3NrYiwgbGVuKTsKPiArCj4gKwly ZXR1cm4gYXg4ODc5NmNfc2tiX3JldHVybihheF9sb2NhbCwgcnhfc2tiLCByeGhkcik7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgYXg4ODc5NmNfcmVjZWl2ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRl dikKPiArewo+ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2 Y19kZXZpY2UobmRldik7Cj4gKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwo+ICsJc3RydWN0IHNrYl9k YXRhICplbnRyeTsKPiArCXUxNiB3X2NvdW50LCBwa3RfbGVuOwo+ICsJdTggcGt0X2NudDsKPiAr Cj4gKwkvKiBjaGVjayByeCBwYWNrZXQgYW5kIHRvdGFsIHdvcmQgY291bnQgKi8KPiArCUFYX1dS SVRFKCZheF9sb2NhbC0+YXhfc3BpLCBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMF9SVFdD UikKPiArCQkgIHwgUlRXQ1JfUlhfTEFUQ0gsIFAwX1JUV0NSKTsKPiArCj4gKwlwa3RfY250ID0g QVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDBfUlhCQ1IyKSAmIFJYQkNSMl9QS1RfTUFTSzsK PiArCWlmICghcGt0X2NudCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlwa3RfbGVuID0gQVhfUkVB RCgmYXhfbG9jYWwtPmF4X3NwaSwgUDBfUkNQSFIpICYgMHg3RkY7Cj4gKwo+ICsJd19jb3VudCA9 ICgocGt0X2xlbiArIDYgKyAzKSAmIDB4RkZGQykgPj4gMTsKPiArCj4gKwlza2IgPSBhbGxvY19z a2IoKHdfY291bnQgKiAyKSwgR0ZQX0tFUk5FTCk7CgpBbHNvIGhlcmUsIHN1cmUgeW91IGRvbid0 IGhhdmUgdG8gdXNlIEdGUF9BVE9NSUM/Cgo+ICsJaWYgKCFza2IpIHsKPiArCQlBWF9XUklURSgm YXhfbG9jYWwtPmF4X3NwaSwgUlhCQ1IxX1JYQl9ESVNDQVJELCBQMF9SWEJDUjEpOwo+ICsJCXJl dHVybiAwOwo+ICsJfQo+ICsJZW50cnkgPSAoc3RydWN0IHNrYl9kYXRhICopc2tiLT5jYjsKPiAr Cj4gKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgUlhCQ1IxX1JYQl9TVEFSVCB8IHdfY291 bnQsIFAwX1JYQkNSMSk7Cj4gKwo+ICsJYXhzcGlfcmVhZF9yeHEoJmF4X2xvY2FsLT5heF9zcGks Cj4gKwkJICAgICAgIHNrYl9wdXQoc2tiLCB3X2NvdW50ICogMiksIHNrYi0+bGVuKTsKPiArCj4g KwkvKiBDaGVjayBpZiByeCBicmlkZ2UgaXMgaWRsZSAqLwo+ICsJaWYgKChBWF9SRUFEKCZheF9s b2NhbC0+YXhfc3BpLCBQMF9SWEJDUjIpICYgUlhCQ1IyX1JYQl9JRExFKSA9PSAwKSB7Cj4gKwkJ bmV0aWZfZXJyKGF4X2xvY2FsLCByeF9lcnIsIG5kZXYsCj4gKwkJCSAgIlJ4IEJyaWRnZSBpcyBu b3QgaWRsZVxuIik7Cj4gKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIFJYQkNSMl9SWEJf UkVJTklULCBQMF9SWEJDUjIpOwo+ICsKPiArCQllbnRyeS0+c3RhdGUgPSByeF9lcnI7Cj4gKwl9 IGVsc2Ugewo+ICsJCWVudHJ5LT5zdGF0ZSA9IHJ4X2RvbmU7Cj4gKwl9Cj4gKwo+ICsJQVhfV1JJ VEUoJmF4X2xvY2FsLT5heF9zcGksIElTUl9SWFBLVCwgUDBfSVNSKTsKPiArCj4gKwlheDg4Nzk2 Y19yeF9maXh1cChheF9sb2NhbCwgc2tiKTsKPiArCj4gKwlyZXR1cm4gMTsKPiArfQo+ICsKPiAr c3RhdGljIGludCBheDg4Nzk2Y19wcm9jZXNzX2lzcihzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICph eF9sb2NhbCkKPiArewo+ICsJdTE2IGlzcjsKPiArCXU4IGRvbmUgPSAwOwo+ICsJc3RydWN0IG5l dF9kZXZpY2UgKm5kZXYgPSBheF9sb2NhbC0+bmRldjsKPiArCj4gKwlpc3IgPSBBWF9SRUFEKCZh eF9sb2NhbC0+YXhfc3BpLCBQMF9JU1IpOwo+ICsJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGks IGlzciwgUDBfSVNSKTsKPiArCj4gKwluZXRpZl9kYmcoYXhfbG9jYWwsIGludHIsIG5kZXYsICIg IElTUiAweCUwNHhcbiIsIGlzcik7Cj4gKwo+ICsJaWYgKGlzciAmIElTUl9UWEVSUikgewo+ICsJ CW5ldGlmX2RiZyhheF9sb2NhbCwgaW50ciwgbmRldiwgIiAgVFhFUlIgaW50ZXJydXB0XG4iKTsK PiArCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgVFhOUl9UWEJfUkVJTklULCBQMF9UU05S KTsKPiArCQlheF9sb2NhbC0+c2VxX251bSA9IDB4MWY7Cj4gKwl9Cj4gKwo+ICsJaWYgKGlzciAm IElTUl9UWFBBR0VTKSB7Cj4gKwkJbmV0aWZfZGJnKGF4X2xvY2FsLCBpbnRyLCBuZGV2LCAiICBU WFBBR0VTIGludGVycnVwdFxuIik7Cj4gKwkJc2V0X2JpdChFVkVOVF9UWCwgJmF4X2xvY2FsLT5m bGFncyk7Cj4gKwl9Cj4gKwo+ICsJaWYgKGlzciAmIElTUl9MSU5LKSB7Cj4gKwkJbmV0aWZfZGJn KGF4X2xvY2FsLCBpbnRyLCBuZGV2LCAiICBMaW5rIGNoYW5nZSBpbnRlcnJ1cHRcbiIpOwo+ICsJ CXBoeV9tYWNfaW50ZXJydXB0KGF4X2xvY2FsLT5uZGV2LT5waHlkZXYpOwo+ICsJfQo+ICsKPiAr CWlmIChpc3IgJiBJU1JfUlhQS1QpIHsKPiArCQluZXRpZl9kYmcoYXhfbG9jYWwsIGludHIsIG5k ZXYsICIgIFJYIGludGVycnVwdFxuIik7Cj4gKwkJZG9uZSA9IGF4ODg3OTZjX3JlY2VpdmUoYXhf bG9jYWwtPm5kZXYpOwo+ICsJfQo+ICsKPiArCXJldHVybiBkb25lOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaXJxcmV0dXJuX3QgYXg4ODc5NmNfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0 YW5jZSkKPiArewo+ICsJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBkZXZfaW5zdGFuY2U7Cj4g KwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2RldmljZShu ZGV2KTsKPiArCj4gKwlpZiAoIW5kZXYpIHsKPiArCQlwcl9lcnIoImlycSAlZCBmb3IgdW5rbm93 biBkZXZpY2UuXG4iLCBpcnEpOwo+ICsJCXJldHVybiBJUlFfUkVUVkFMKDApOwo+ICsJfQo+ICsK PiArCWRpc2FibGVfaXJxX25vc3luYyhpcnEpOwo+ICsKPiArCW5ldGlmX2RiZyhheF9sb2NhbCwg aW50ciwgbmRldiwgIkludGVycnVwdCBvY2N1cnJlZFxuIik7Cj4gKwo+ICsJc2V0X2JpdChFVkVO VF9JTlRSLCAmYXhfbG9jYWwtPmZsYWdzKTsKPiArCXF1ZXVlX3dvcmsoYXhfbG9jYWwtPmF4X3dv cmtfcXVldWUsICZheF9sb2NhbC0+YXhfd29yayk7Cj4gKwoKV2h5IG5vdCBzaW1weSB1c2luZyBh IHRocmVhZGVkIGludGVycnVwdD8KQW5kIGluIGdlbmVyYWw6IFdoeSBkb24ndCB5b3UgdXNlIE5B UEkgaW4gdGhlIGRyaXZlcj8KCgo+ICsJcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBheDg4Nzk2Y193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiArewo+ ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPQo+ICsJCQljb250YWluZXJfb2Yo d29yaywgc3RydWN0IGF4ODg3OTZjX2RldmljZSwgYXhfd29yayk7Cj4gKwo+ICsJbXV0ZXhfbG9j aygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKPiArCj4gKwlpZiAodGVzdF9iaXQoRVZFTlRfU0VUX01V TFRJLCAmYXhfbG9jYWwtPmZsYWdzKSkgewo+ICsJCWF4ODg3OTZjX3NldF9od19tdWx0aWNhc3Qo YXhfbG9jYWwtPm5kZXYpOwo+ICsJCWNsZWFyX2JpdChFVkVOVF9TRVRfTVVMVEksICZheF9sb2Nh bC0+ZmxhZ3MpOwo+ICsJfQo+ICsKPiArCWlmICh0ZXN0X2JpdChFVkVOVF9JTlRSLCAmYXhfbG9j YWwtPmZsYWdzKSkgewo+ICsJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJTVJfTUFTS0FM TCwgUDBfSU1SKTsKPiArCj4gKwkJd2hpbGUgKDEpIHsKPiArCQkJaWYgKCFheDg4Nzk2Y19wcm9j ZXNzX2lzcihheF9sb2NhbCkpCj4gKwkJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCWNsZWFyX2Jp dChFVkVOVF9JTlRSLCAmYXhfbG9jYWwtPmZsYWdzKTsKPiArCj4gKwkJQVhfV1JJVEUoJmF4X2xv Y2FsLT5heF9zcGksIElNUl9ERUZBVUxULCBQMF9JTVIpOwo+ICsKPiArCQllbmFibGVfaXJxKGF4 X2xvY2FsLT5uZGV2LT5pcnEpOwo+ICsJfQo+ICsKPiArCWlmICh0ZXN0X2JpdChFVkVOVF9UWCwg JmF4X2xvY2FsLT5mbGFncykpIHsKPiArCQl3aGlsZSAoc2tiX3F1ZXVlX2xlbigmYXhfbG9jYWwt PnR4X3dhaXRfcSkpIHsKPiArCQkJaWYgKCFheDg4Nzk2Y19oYXJkX3htaXQoYXhfbG9jYWwpKQo+ ICsJCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQljbGVhcl9iaXQoRVZFTlRfVFgsICZheF9sb2Nh bC0+ZmxhZ3MpOwo+ICsKPiArCQlpZiAobmV0aWZfcXVldWVfc3RvcHBlZChheF9sb2NhbC0+bmRl dikgJiYKPiArCQkgICAgKHNrYl9xdWV1ZV9sZW4oJmF4X2xvY2FsLT50eF93YWl0X3EpIDwgVFhf UVVFVUVfTE9XX1dBVEVSKSkKPiArCQkJbmV0aWZfd2FrZV9xdWV1ZShheF9sb2NhbC0+bmRldik7 Cj4gKwl9Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKmF4ODg3OTZjX2dldF9zdGF0cyhz dHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiArewo+ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAq YXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7Cj4gKwo+ICsJcmV0dXJuICZheF9s b2NhbC0+c3RhdHM7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGF4ODg3OTZjX2hhbmRsZV9saW5r X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiArewo+ICsJaWYgKG5ldF9yYXRlbGlt aXQoKSkKPiArCQlwaHlfcHJpbnRfc3RhdHVzKG5kZXYtPnBoeWRldik7Cj4gK30KPiArCj4gK3Zv aWQgYXg4ODc5NmNfcGh5X2luaXQoc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwpCj4g K3sKPiArCS8qIEVuYWJsZSBQSFkgYXV0by1wb2xsaW5nICovCj4gKwlBWF9XUklURSgmYXhfbG9j YWwtPmF4X3NwaSwKPiArCQkgUENSX1BIWUlEKDB4MTApIHwgUENSX1BPTExfRU4gfAo+ICsJCSBQ Q1JfUE9MTF9GTE9XQ1RSTCB8IFBDUl9QT0xMX0JNQ1IsIFAyX1BDUik7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQKPiArYXg4ODc5NmNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiArewo+ ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2Uo bmRldik7Cj4gKwlpbnQgcmV0Owo+ICsJdW5zaWduZWQgbG9uZyBpcnFfZmxhZyA9IElSUUZfU0hB UkVEOwo+ICsKPiArCW11dGV4X2xvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7Cj4gKwo+ICsJcmV0 ID0gYXg4ODc5NmNfc29mdF9yZXNldChheF9sb2NhbCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlyZXQgPSByZXF1ZXN0X2lycShuZGV2LT5pcnEsIGF4ODg3 OTZjX2ludGVycnVwdCwKPiArCQkJICBpcnFfZmxhZywgbmRldi0+bmFtZSwgbmRldik7Cj4gKwlp ZiAocmV0KSB7Cj4gKwkJbmV0ZGV2X2VycihuZGV2LCAidW5hYmxlIHRvIGdldCBJUlEgJWQgKGVy cm5vPSVkKS5cbiIsCj4gKwkJCSAgIG5kZXYtPmlycSwgcmV0KTsKPiArCQlyZXR1cm4gLUVOWElP Owo+ICsJfQo+ICsKPiArCWF4X2xvY2FsLT5zZXFfbnVtID0gMHgxZjsKPiArCj4gKwlheDg4Nzk2 Y19zZXRfbWFjX2FkZHIobmRldik7Cj4gKwlheDg4Nzk2Y19zZXRfY3N1bXMoYXhfbG9jYWwpOwo+ ICsKPiArCS8qIERpc2FibGUgc3R1ZmZpbmcgcGFja2V0ICovCj4gKwlBWF9XUklURSgmYXhfbG9j YWwtPmF4X3NwaSwKPiArCQkgQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDFfUlhCU1BDUikK PiArCQkgJiB+UlhCU1BDUl9TVFVGX0VOQUJMRSwgUDFfUlhCU1BDUik7Cj4gKwo+ICsJLyogRW5h YmxlIFJYIHBhY2tldCBwcm9jZXNzICovCj4gKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwg UlBQRVJfUlhFTiwgUDFfUlBQRVIpOwo+ICsKPiArCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3Bp LCBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMF9GRVIpCj4gKwkJIHwgRkVSX1JYRU4gfCBG RVJfVFhFTiB8IEZFUl9CU1dBUCB8IEZFUl9JUlFfUFVMTCwgUDBfRkVSKTsKPiArCj4gKwkvKiBT ZXR1cCBMRUQgbW9kZSAqLwo+ICsJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksCj4gKwkJIChM Q1JfTEVEMF9FTiB8IExDUl9MRUQwX0RVUExFWCB8IExDUl9MRUQxX0VOIHwKPiArCQkgTENSX0xF RDFfMTAwTU9ERSksIFAyX0xDUjApOwo+ICsJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksCj4g KwkJIChBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMl9MQ1IxKSAmIExDUl9MRUQyX01BU0sp IHwKPiArCQkgTENSX0xFRDJfRU4gfCBMQ1JfTEVEMl9MSU5LLCBQMl9MQ1IxKTsKPiArCj4gKwlh eDg4Nzk2Y19waHlfaW5pdChheF9sb2NhbCk7Cj4gKwo+ICsJcGh5X3N0YXJ0KGF4X2xvY2FsLT5u ZGV2LT5waHlkZXYpOwo+ICsKPiArCW5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpOwo+ICsKPiArCUFY X1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJTVJfREVGQVVMVCwgUDBfSU1SKTsKPiArCj4gKwlz cGlfbWVzc2FnZV9pbml0KCZheF9sb2NhbC0+YXhfc3BpLnJ4X21zZyk7Cj4gKwo+ICsJbXV0ZXhf dW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBheDg4Nzk2Y19mcmVlX3NrYl9xdWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFk ICpxKQo+ICt7Cj4gKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwo+ICsKPiArCXdoaWxlIChxLT5xbGVu KSB7Cj4gKwkJc2tiID0gc2tiX2RlcXVldWUocSk7Cj4gKwkJa2ZyZWVfc2tiKHNrYik7Cj4gKwl9 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiArYXg4ODc5NmNfY2xvc2Uoc3RydWN0IG5ldF9kZXZp Y2UgKm5kZXYpCj4gK3sKPiArCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9f YXg4ODc5NmNfZGV2aWNlKG5kZXYpOwo+ICsKPiArCW5ldGlmX3N0b3BfcXVldWUobmRldik7Cj4g Kwo+ICsJZnJlZV9pcnEobmRldi0+aXJxLCBuZGV2KTsKClRoaXMgbG9va3MgcmFjeS4gSSB0aGlu ayBlLmcuIHlvdSBjYW4gc3RpbGwgZ2V0IGUuZy4gcnggaW50ZXJydXB0cy4KCj4gKwo+ICsJcGh5 X3N0b3AobmRldi0+cGh5ZGV2KTsKPiArCj4gKwltdXRleF9sb2NrKCZheF9sb2NhbC0+c3BpX2xv Y2spOwo+ICsKPiArCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJTVJfTUFTS0FMTCwgUDBf SU1SKTsKPiArCWF4ODg3OTZjX2ZyZWVfc2tiX3F1ZXVlKCZheF9sb2NhbC0+dHhfd2FpdF9xKTsK PiArCj4gKwlheDg4Nzk2Y19zb2Z0X3Jlc2V0KGF4X2xvY2FsKTsKPiArCj4gKwltdXRleF91bmxv Y2soJmF4X2xvY2FsLT5zcGlfbG9jayk7Cj4gKwluZXRpZl9jYXJyaWVyX29mZihuZGV2KTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtheDg4Nzk2Y19zZXRfZmVh dHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVz KQo+ICt7Cj4gKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZj X2RldmljZShuZGV2KTsKPiArCW5ldGRldl9mZWF0dXJlc190IGNoYW5nZWQgPSBmZWF0dXJlcyBe IG5kZXYtPmZlYXR1cmVzOwo+ICsKPiArCWlmICghKGNoYW5nZWQgJiAoTkVUSUZfRl9SWENTVU0g fCBORVRJRl9GX0hXX0NTVU0pKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwluZGV2LT5mZWF0dXJl cyA9IGZlYXR1cmVzOwo+ICsKPiArCWlmIChjaGFuZ2VkICYgKE5FVElGX0ZfUlhDU1VNIHwgTkVU SUZfRl9IV19DU1VNKSkKPiArCQlheDg4Nzk2Y19zZXRfY3N1bXMoYXhfbG9jYWwpOwo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3Bz IGF4ODg3OTZjX25ldGRldl9vcHMgPSB7Cj4gKwkubmRvX29wZW4JCT0gYXg4ODc5NmNfb3BlbiwK PiArCS5uZG9fc3RvcAkJPSBheDg4Nzk2Y19jbG9zZSwKPiArCS5uZG9fc3RhcnRfeG1pdAkJPSBh eDg4Nzk2Y19zdGFydF94bWl0LAo+ICsJLm5kb19nZXRfc3RhdHMJCT0gYXg4ODc5NmNfZ2V0X3N0 YXRzLAo+ICsJLm5kb19kb19pb2N0bAkJPSBheDg4Nzk2Y19pb2N0bCwKPiArCS5uZG9fc2V0X21h Y19hZGRyZXNzCT0gYXg4ODc5NmNfc2V0X21hY19hZGRyZXNzLAo+ICsJLm5kb19zZXRfZmVhdHVy ZXMJPSBheDg4Nzk2Y19zZXRfZmVhdHVyZXMsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGF4ODg3 OTZjX2hhcmRfcmVzZXQoc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwpCj4gK3sKPiAr CXN0cnVjdCBkZXZpY2UgKmRldiA9IChzdHJ1Y3QgZGV2aWNlICopJmF4X2xvY2FsLT5zcGktPmRl djsKPiArCXN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0X2dwaW87Cj4gKwo+ICsJLyogcmVzZXQgaW5m byAqLwo+ICsJcmVzZXRfZ3BpbyA9IGdwaW9kX2dldChkZXYsICJyZXNldCIsIDApOwo+ICsJaWYg KElTX0VSUihyZXNldF9ncGlvKSkgewo+ICsJCWRldl9lcnIoZGV2LCAiQ291bGQgbm90IGdldCAn cmVzZXQnIEdQSU86ICVsZCIsIFBUUl9FUlIocmVzZXRfZ3BpbykpOwo+ICsJCXJldHVybiBQVFJf RVJSKHJlc2V0X2dwaW8pOwo+ICsJfQo+ICsKPiArCS8qIHNldCByZXNldCAqLwo+ICsJZ3Bpb2Rf ZGlyZWN0aW9uX291dHB1dChyZXNldF9ncGlvLCAxKTsKPiArCW1zbGVlcCgxMDApOwo+ICsJZ3Bp b2RfZGlyZWN0aW9uX291dHB1dChyZXNldF9ncGlvLCAwKTsKPiArCWdwaW9kX3B1dChyZXNldF9n cGlvKTsKPiArCW1zbGVlcCgyMCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgYXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKPiArewo+ICsJc3Ry dWN0IG5ldF9kZXZpY2UgKm5kZXY7Cj4gKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2Nh bDsKPiArCWludCByZXQ7Cj4gKwl1MTYgdGVtcDsKPiArCj4gKwluZGV2ID0gZGV2bV9hbGxvY19l dGhlcmRldigmc3BpLT5kZXYsIHNpemVvZigqYXhfbG9jYWwpKTsKPiArCWlmICghbmRldikgewo+ ICsJCWRldl9lcnIoJnNwaS0+ZGV2LCAiQVg4ODc5NkMgU1BJOiBDb3VsZCBub3QgYWxsb2NhdGUg ZXRoZXJuZXQgZGV2aWNlXG4iKTsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCVNFVF9O RVRERVZfREVWKG5kZXYsICZzcGktPmRldik7Cj4gKwo+ICsJYXhfbG9jYWwgPSB0b19heDg4Nzk2 Y19kZXZpY2UobmRldik7Cj4gKwltZW1zZXQoYXhfbG9jYWwsIDAsIHNpemVvZigqYXhfbG9jYWwp KTsKPiArCj4gKwlkZXZfc2V0X2RydmRhdGEoJnNwaS0+ZGV2LCBheF9sb2NhbCk7Cj4gKwlheF9s b2NhbC0+c3BpID0gc3BpOwo+ICsJYXhfbG9jYWwtPmF4X3NwaS5zcGkgPSBzcGk7Cj4gKwo+ICsJ YXhfbG9jYWwtPm5kZXYgPSBuZGV2Owo+ICsJYXhfbG9jYWwtPmNhcGFiaWxpdGllcyB8PSBjb21w ID8gQVhfQ0FQX0NPTVAgOiAwOwo+ICsJYXhfbG9jYWwtPm1zZ19lbmFibGUgPSBtc2dfZW5hYmxl Owo+ICsKPiArCWF4X2xvY2FsLT5tZGlvYnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jKCZzcGktPmRl dik7Cj4gKwlpZiAoIWF4X2xvY2FsLT5tZGlvYnVzKSB7Cj4gKwkJZGV2X2Vycigmc3BpLT5kZXYs ICJDb3VsZCBub3QgYWxsb2NhdGUgTURJTyBidXNcbiIpOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ ICsJfQo+ICsKPiArCWF4X2xvY2FsLT5tZGlvYnVzLT5wcml2ID0gYXhfbG9jYWw7Cj4gKwlheF9s b2NhbC0+bWRpb2J1cy0+cmVhZCA9IGF4ODg3OTZjX21kaW9fcmVhZDsKPiArCWF4X2xvY2FsLT5t ZGlvYnVzLT53cml0ZSA9IGF4ODg3OTZjX21kaW9fd3JpdGU7Cj4gKwlheF9sb2NhbC0+bWRpb2J1 cy0+bmFtZSA9ICJheDg4OTc2Yy1tZGlvYnVzIjsKPiArCWF4X2xvY2FsLT5tZGlvYnVzLT5waHlf bWFzayA9IH4oMSA8PCAweDEwKTsKPiArCWF4X2xvY2FsLT5tZGlvYnVzLT5wYXJlbnQgPSAmc3Bp LT5kZXY7Cj4gKwo+ICsJc25wcmludGYoYXhfbG9jYWwtPm1kaW9idXMtPmlkLCBBUlJBWV9TSVpF KGF4X2xvY2FsLT5tZGlvYnVzLT5pZCksCj4gKwkJICJheDg4Nzk2Yy1zcGktJXMuJXUiLCBkZXZf bmFtZSgmc3BpLT5kZXYpLCBzcGktPmNoaXBfc2VsZWN0KTsKPiArCj4gKwlyZXQgPSBkZXZtX21k aW9idXNfcmVnaXN0ZXIoJnNwaS0+ZGV2LCBheF9sb2NhbC0+bWRpb2J1cyk7Cj4gKwlpZiAocmV0 IDwgMCkgewo+ICsJCWRldl9lcnIoJnNwaS0+ZGV2LCAiQ291bGQgbm90IHJlZ2lzdGVyIE1ESU8g YnVzXG4iKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWlmIChuZXRpZl9tc2dfcHJv YmUoYXhfbG9jYWwpKSB7Cj4gKwkJZGV2X2luZm8oJnNwaS0+ZGV2LCAiQVg4ODc5NkMtU1BJIENv bmZpZ3VyYXRpb246XG4iKTsKPiArCQlkZXZfaW5mbygmc3BpLT5kZXYsICIgICAgQ29tcHJlc3Np b24gOiAlc1xuIiwKPiArCQkJIGF4X2xvY2FsLT5jYXBhYmlsaXRpZXMgJiBBWF9DQVBfQ09NUCA/ ICJPTiIgOiAiT0ZGIik7Cj4gKwl9Cj4gKwo+ICsJbmRldi0+aXJxID0gc3BpLT5pcnE7Cj4gKwlu ZGV2LT5uZXRkZXZfb3BzID0gJmF4ODg3OTZjX25ldGRldl9vcHM7Cj4gKwluZGV2LT5ldGh0b29s X29wcyA9ICZheDg4Nzk2Y19ldGh0b29sX29wczsKPiArCW5kZXYtPmh3X2ZlYXR1cmVzIHw9IE5F VElGX0ZfSFdfQ1NVTSB8IE5FVElGX0ZfUlhDU1VNOwo+ICsJbmRldi0+ZmVhdHVyZXMgfD0gTkVU SUZfRl9IV19DU1VNIHwgTkVUSUZfRl9SWENTVU07Cj4gKwluZGV2LT5oYXJkX2hlYWRlcl9sZW4g Kz0gKFRYX09WRVJIRUFEICsgNCk7Cj4gKwo+ICsJLyogYXg4ODc5NmMgZ3BpbyByZXNldCAqLwo+ ICsJYXg4ODc5NmNfaGFyZF9yZXNldChheF9sb2NhbCk7Cj4gKwo+ICsJLyogUmVzZXQgQVg4ODc5 NkMgKi8KPiArCXJldCA9IGF4ODg3OTZjX3NvZnRfcmVzZXQoYXhfbG9jYWwpOwo+ICsJaWYgKHJl dCA8IDApIHsKPiArCQlyZXQgPSAtRU5PREVWOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsJLyog Q2hlY2sgYm9hcmQgcmV2aXNpb24gKi8KPiArCXRlbXAgPSBBWF9SRUFEKCZheF9sb2NhbC0+YXhf c3BpLCBQMl9DUklSKTsKPiArCWlmICgodGVtcCAmIDB4RikgIT0gMHgwKSB7Cj4gKwkJZGV2X2Vy cigmc3BpLT5kZXYsICJzcGkgcmVhZCBmYWlsZWQ6ICVkXG4iLCB0ZW1wKTsKPiArCQlyZXQgPSAt RU5PREVWOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsKPiArCXRlbXAgPSBBWF9SRUFEKCZheF9s b2NhbC0+YXhfc3BpLCBQMF9CT1IpOwo+ICsJaWYgKHRlbXAgPT0gMHgxMjM0KSB7Cj4gKwkJYXhf bG9jYWwtPnBsYXRfZW5kaWFuID0gUExBVF9MSVRUTEVfRU5ESUFOOwo+ICsJfSBlbHNlIHsKPiAr CQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgMHhGRkZGLCBQMF9CT1IpOwo+ICsJCWF4X2xv Y2FsLT5wbGF0X2VuZGlhbiA9IFBMQVRfQklHX0VORElBTjsKPiArCX0KPiArCj4gKwkvKlJlbG9h ZCBFRVBST00qLwo+ICsJYXg4ODc5NmNfcmVsb2FkX2VlcHJvbShheF9sb2NhbCk7Cj4gKwo+ICsJ YXg4ODc5NmNfbG9hZF9tYWNfYWRkcihuZGV2KTsKPiArCj4gKwlpZiAobmV0aWZfbXNnX3Byb2Jl KGF4X2xvY2FsKSkKPiArCQlkZXZfaW5mbygmc3BpLT5kZXYsCj4gKwkJCSAiaXJxICVkLCBNQUMg YWRkciAlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWFxuIiwKPiArCQkJIG5kZXYtPmlycSwK PiArCQkJIG5kZXYtPmRldl9hZGRyWzBdLCBuZGV2LT5kZXZfYWRkclsxXSwKPiArCQkJIG5kZXYt PmRldl9hZGRyWzJdLCBuZGV2LT5kZXZfYWRkclszXSwKPiArCQkJIG5kZXYtPmRldl9hZGRyWzRd LCBuZGV2LT5kZXZfYWRkcls1XSk7Cj4gKwo+ICsJLyogRGlzYWJsZSBwb3dlciBzYXZpbmcgKi8K PiArCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCAoQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3Nw aSwgUDBfUFNDUikKPiArCQkJCSAgICAgJiBQU0NSX1BTX01BU0spIHwgUFNDUl9QU19EMCwgUDBf UFNDUik7Cj4gKwo+ICsJSU5JVF9XT1JLKCZheF9sb2NhbC0+YXhfd29yaywgYXg4ODc5NmNfd29y ayk7Cj4gKwo+ICsJYXhfbG9jYWwtPmF4X3dvcmtfcXVldWUgPQo+ICsJCQljcmVhdGVfc2luZ2xl dGhyZWFkX3dvcmtxdWV1ZSgiYXg4ODc5NmNfd29yayIpOwo+ICsKPiArCW11dGV4X2luaXQoJmF4 X2xvY2FsLT5zcGlfbG9jayk7Cj4gKwo+ICsJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYXhfbG9jYWwt PnR4X3dhaXRfcSk7Cj4gKwo+ICsJcmV0ID0gZGV2bV9yZWdpc3Rlcl9uZXRkZXYoJnNwaS0+ZGV2 LCBuZGV2KTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKCZzcGktPmRldiwgImZhaWxlZCB0 byByZWdpc3RlciBhIG5ldHdvcmsgZGV2aWNlXG4iKTsKPiArCQlkZXN0cm95X3dvcmtxdWV1ZShh eF9sb2NhbC0+YXhfd29ya19xdWV1ZSk7Cj4gKwkJZ290byBlcnI7Cj4gKwl9Cj4gKwo+ICsJYXhf bG9jYWwtPnBoeWRldiA9IHBoeV9maW5kX2ZpcnN0KGF4X2xvY2FsLT5tZGlvYnVzKTsKPiArCWlm ICghYXhfbG9jYWwtPnBoeWRldikgewo+ICsJCWRldl9lcnIoJnNwaS0+ZGV2LCAibm8gUEhZIGZv dW5kXG4iKTsKPiArCQlyZXQgPSAtRU5PREVWOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsKPiAr CWF4X2xvY2FsLT5waHlkZXYtPmlycSA9IFBIWV9JR05PUkVfSU5URVJSVVBUOwo+ICsJcGh5X2Nv bm5lY3RfZGlyZWN0KGF4X2xvY2FsLT5uZGV2LCBheF9sb2NhbC0+cGh5ZGV2LAo+ICsJCQkgICBh eDg4Nzk2Y19oYW5kbGVfbGlua19jaGFuZ2UsCj4gKwkJCSAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9N SUkpOwo+ICsKPiArCW5ldGlmX2luZm8oYXhfbG9jYWwsIHByb2JlLCBuZGV2LCAiJXMgJXMgcmVn aXN0ZXJlZFxuIiwKPiArCQkgICBkZXZfZHJpdmVyX3N0cmluZygmc3BpLT5kZXYpLAo+ICsJCSAg IGRldl9uYW1lKCZzcGktPmRldikpOwo+ICsJcGh5X2F0dGFjaGVkX2luZm8oYXhfbG9jYWwtPnBo eWRldik7CgpEb2VzIHRoZSBpbnRlZ3JhdGVkIFBIWSBwcm92aWRlIGEgcHJvcGVyIFBIWSBJRD8K SXMgdGhlcmUgYSBQSFkgZHJpdmVyIGZvciBpdCBvciBkbyB5b3UgcmVseSBvbiB0aGUgZ2VucGh5 IGRyaXZlcj8KCj4gKwo+ICsJcmV0ID0gMDsKPiArZXJyOgo+ICsJcmV0dXJuIHJldDsKPiArfQo+ ICsKPiArc3RhdGljIGludCBheDg4Nzk2Y19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK PiArewo+ICsJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSBkZXZfZ2V0X2RydmRh dGEoJnNwaS0+ZGV2KTsKPiArCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gYXhfbG9jYWwtPm5k ZXY7Cj4gKwo+ICsJbmV0aWZfaW5mbyhheF9sb2NhbCwgcHJvYmUsIG5kZXYsICJyZW1vdmluZyBu ZXR3b3JrIGRldmljZSAlcyAlc1xuIiwKPiArCQkgICBkZXZfZHJpdmVyX3N0cmluZygmc3BpLT5k ZXYpLAo+ICsJCSAgIGRldl9uYW1lKCZzcGktPmRldikpOwo+ICsKPiArCWRlc3Ryb3lfd29ya3F1 ZXVlKGF4X2xvY2FsLT5heF93b3JrX3F1ZXVlKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXg4ODc5NmNfZHRfaWRzW10gPSB7 Cj4gKwl7IC5jb21wYXRpYmxlID0gImFzaXgsYXg4ODc5NmMiIH0sCj4gKwl7fSwKPiArfTsKPiAr TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXg4ODc5NmNfZHRfaWRzKTsKPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBhc2l4X2lkW10gPSB7Cj4gKwl7ICJheDg4Nzk2YyIs IDAgfSwKPiArCXsgfQo+ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgYXNpeF9pZCk7 Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgYXg4ODc5NmNfc3BpX2RyaXZlciA9IHsK PiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSBEUlZfTkFNRSwKPiArI2lmZGVmIENPTkZJR19V U0VfT0YKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIoYXg4ODc5NmNfZHRfaWRz KSwKPiArI2VuZGlmCj4gKwl9LAo+ICsJLnByb2JlID0gYXg4ODc5NmNfcHJvYmUsCj4gKwkucmVt b3ZlID0gYXg4ODc5NmNfcmVtb3ZlLAo+ICsJLmlkX3RhYmxlID0gYXNpeF9pZCwKPiArfTsKPiAr Cj4gK3N0YXRpYyBfX2luaXQgaW50IGF4ODg3OTZjX3NwaV9pbml0KHZvaWQpCj4gK3sKPiArCWlu dCByZXQ7Cj4gKwo+ICsJYml0bWFwX3plcm8oYXg4ODc5NmNfbm9fcmVnc19tYXNrLCBBWDg4Nzk2 Q19SRUdEVU1QX0xFTik7Cj4gKwlyZXQgPSBiaXRtYXBfcGFyc2Uobm9fcmVnc19saXN0LCAzNSwK PiArCQkJICAgYXg4ODc5NmNfbm9fcmVnc19tYXNrLCBBWDg4Nzk2Q19SRUdEVU1QX0xFTik7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJYml0bWFwX2ZpbGwoYXg4ODc5NmNfbm9fcmVnc19tYXNrLCBBWDg4 Nzk2Q19SRUdEVU1QX0xFTik7Cj4gKwkJcHJfZXJyKCJJbnZhbGlkIGJpdG1hcCBkZXNjcmlwdGlv biwgbWFza2luZyBhbGwgcmVnaXN0ZXJzXG4iKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gc3BpX3Jl Z2lzdGVyX2RyaXZlcigmYXg4ODc5NmNfc3BpX2RyaXZlcik7Cj4gK30KPiArCj4gK3N0YXRpYyBf X2V4aXQgdm9pZCBheDg4Nzk2Y19zcGlfZXhpdCh2b2lkKQo+ICt7Cj4gKwlzcGlfdW5yZWdpc3Rl cl9kcml2ZXIoJmF4ODg3OTZjX3NwaV9kcml2ZXIpOwo+ICt9Cj4gKwo+ICttb2R1bGVfaW5pdChh eDg4Nzk2Y19zcGlfaW5pdCk7Cj4gK21vZHVsZV9leGl0KGF4ODg3OTZjX3NwaV9leGl0KTsKPiAr Cj4gK01PRFVMRV9BVVRIT1IoIkFTSVgiKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJBU0lYIEFY ODg3OTZDIFNQSSBFdGhlcm5ldCBkcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+ ICsKPiArLyogYXg4ODc5NmNfcGh5ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4 Nzk2Y19tYWluLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4u NDI4ODMzOTc4ZmJmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2FzaXgvYXg4ODc5NmNfbWFpbi5oCj4gQEAgLTAsMCArMSw1NjggQEAKPiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMp IDIwMTAgQVNJWCBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIw MjAgU2Ftc3VuZyBFbGVjdHJvbmljcwo+ICsgKgo+ICsgKiBBU0lYIEFYODg3OTZDIFNQSSBGYXN0 IEV0aGVybmV0IExpbnV4IGRyaXZlcgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX0FYODg3OTZDX01B SU5fSAo+ICsjZGVmaW5lIF9BWDg4Nzk2Q19NQUlOX0gKPiArCj4gKyNpbmNsdWRlIDxsaW51eC9u ZXRkZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21paS5oPgo+ICsKPiArI2luY2x1ZGUgImF4 ODg3OTZjX3NwaS5oIgo+ICsKPiArLyogVGhlc2UgaWRlbnRpZnkgdGhlIGRyaXZlciBiYXNlIHZl cnNpb24gYW5kIG1heSBub3QgYmUgcmVtb3ZlZC4gKi8KPiArI2RlZmluZSBEUlZfTkFNRQkiYXg4 ODc5NmMiCj4gKyNkZWZpbmUgQURQX05BTUUJIkFTSVggQVg4ODc5NkMgU1BJIEV0aGVybmV0IEFk YXB0ZXIiCj4gKyNkZWZpbmUgRFJWX1ZFUlNJT04JIjEuMi4wIgo+ICsKQW4gYmVuZWZpdCBpbiB1 c2luZyBhIHNlcGFyYXRlIGRyaXZlciB2ZXJzaW9uPyBUeXBpY2FsbHkgdGhlCmtlcm5lbCB2ZXJz aW9uIGlzIHN1ZmZpY2llbnQuCgo+ICsjZGVmaW5lIFRYX1FVRVVFX0hJR0hfV0FURVIJCTQ1CS8q IFR4IHF1ZXVlIGhpZ2ggd2F0ZXIgbWFyayAqLwo+ICsjZGVmaW5lIFRYX1FVRVVFX0xPV19XQVRF UgkJMjAJLyogVHggcXVldWUgbG93IHdhdGVyIG1hcmsgKi8KPiArCj4gKyNkZWZpbmUgQVg4ODc5 NkNfUkVHRFVNUF9MRU4JCTI1Ngo+ICsjZGVmaW5lIEFYODg3OTZDX1BIWV9SRUdEVU1QX0xFTgkx Mgo+ICsKPiArI2RlZmluZSBUWF9PVkVSSEVBRAkJCTgKPiArI2RlZmluZSBUWF9FT1BfU0laRQkJ CTQKPiArCj4gKyNkZWZpbmUgQVhfTUNBU1RfRklMVEVSX1NJWkUJCTgKPiArI2RlZmluZSBBWF9N QVhfTUNBU1QJCQk2NAo+ICsjZGVmaW5lIEFYX01BWF9DTEsgICAgICAgICAgICAgICAgICAgICAg ODAwMDAwMDAKPiArI2RlZmluZSBUWF9IRFJfU09QX0RJQ0YJCQkweDgwMDAKPiArI2RlZmluZSBU WF9IRFJfU09QX0NQSEkJCQkweDQwMDAKPiArI2RlZmluZSBUWF9IRFJfU09QX0lOVAkJCTB4MjAw MAo+ICsjZGVmaW5lIFRYX0hEUl9TT1BfTURFUQkJCTB4MTAwMAo+ICsjZGVmaW5lIFRYX0hEUl9T T1BfUEtUTEVOCQkweDA3RkYKPiArI2RlZmluZSBUWF9IRFJfU09QX1NFUU5VTQkJMHhGODAwCj4g KyNkZWZpbmUgVFhfSERSX1NPUF9QS1RMRU5CQVIJCTB4MDdGRgo+ICsKPiArI2RlZmluZSBUWF9I RFJfU0VHX0ZTCQkJMHg4MDAwCj4gKyNkZWZpbmUgVFhfSERSX1NFR19MUwkJCTB4NDAwMAo+ICsj ZGVmaW5lIFRYX0hEUl9TRUdfU0VHTlVNCQkweDM4MDAKPiArI2RlZmluZSBUWF9IRFJfU0VHX1NF R0xFTgkJMHgwNzAwCj4gKyNkZWZpbmUgVFhfSERSX1NFR19FT0ZTVAkJMHhDMDAwCj4gKyNkZWZp bmUgVFhfSERSX1NFR19TT0ZTVAkJMHgzODAwCj4gKyNkZWZpbmUgVFhfSERSX1NFR19TRUdMRU5C QVIJCTB4MDdGRgo+ICsKPiArI2RlZmluZSBUWF9IRFJfRU9QX1NFUU5VTQkJMHhGODAwCj4gKyNk ZWZpbmUgVFhfSERSX0VPUF9QS1RMRU4JCTB4MDdGRgo+ICsjZGVmaW5lIFRYX0hEUl9FT1BfU0VR TlVNQkFSCQkweEY4MDAKPiArI2RlZmluZSBUWF9IRFJfRU9QX1BLVExFTkJBUgkJMHgwN0ZGCj4g Kwo+ICsvKiBSeCBoZWFkZXIgZmllbGRzIG1hc2sgKi8KPiArI2RlZmluZSBSWF9IRFIxX01DQkMJ CQkweDgwMDAKPiArI2RlZmluZSBSWF9IRFIxX1NUVUZGX1BLVAkJMHg0MDAwCj4gKyNkZWZpbmUg UlhfSERSMV9NSUlfRVJSCQkJMHgyMDAwCj4gKyNkZWZpbmUgUlhfSERSMV9DUkNfRVJSCQkJMHgx MDAwCj4gKyNkZWZpbmUgUlhfSERSMV9QS1RfTEVOCQkJMHgwN0ZGCj4gKwo+ICsjZGVmaW5lIFJY X0hEUjJfU0VRX05VTQkJCTB4RjgwMAo+ICsjZGVmaW5lIFJYX0hEUjJfUEtUX0xFTl9CQVIJCTB4 N0ZGRgo+ICsKPiArI2RlZmluZSBSWF9IRFIzX1BFCQkJMHg4MDAwCj4gKyNkZWZpbmUgUlhfSERS M19MM19UWVBFX0lQVjRWNgkJMHg2MDAwCj4gKyNkZWZpbmUgUlhfSERSM19MM19UWVBFX0lQCQkw eDQwMDAKPiArI2RlZmluZSBSWF9IRFIzX0wzX1RZUEVfSVBWNgkJMHgyMDAwCj4gKyNkZWZpbmUg UlhfSERSM19MNF9UWVBFX0lDTVBWNgkJMHgxNDAwCj4gKyNkZWZpbmUgUlhfSERSM19MNF9UWVBF X1RDUAkJMHgxMDAwCj4gKyNkZWZpbmUgUlhfSERSM19MNF9UWVBFX0lHTVAJCTB4MGMwMAo+ICsj ZGVmaW5lIFJYX0hEUjNfTDRfVFlQRV9JQ01QCQkweDA4MDAKPiArI2RlZmluZSBSWF9IRFIzX0w0 X1RZUEVfVURQCQkweDA0MDAKPiArI2RlZmluZSBSWF9IRFIzX0wzX0VSUgkJCTB4MDIwMAo+ICsj ZGVmaW5lIFJYX0hEUjNfTDRfRVJSCQkJMHgwMTAwCj4gKyNkZWZpbmUgUlhfSERSM19QUklPUklU WSh4KQkJKCh4KSA8PCA0KQo+ICsjZGVmaW5lIFJYX0hEUjNfU1RSSVAJCQkweDAwMDgKPiArI2Rl ZmluZSBSWF9IRFIzX1ZMQU5fSUQJCQkweDAwMDcKPiArCj4gK2VudW0gd2F0Y2hkb2dfc3RhdGUg ewo+ICsJY2hrX2xpbmsgPSAwLAo+ICsJY2hrX2NhYmxlLAo+ICsJYXhfbm9wLAo+ICt9Owo+ICsK PiArc3RydWN0IGF4ODg3OTZjX2RldmljZSB7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UJCSphZGRyX3Jl czsgICAvKiByZXNvdXJjZXMgZm91bmQgKi8KPiArCXN0cnVjdCByZXNvdXJjZQkJKmFkZHJfcmVx OyAgIC8qIHJlc291cmNlcyByZXF1ZXN0ZWQgKi8KPiArCXN0cnVjdCByZXNvdXJjZQkJKmlycV9y ZXM7Cj4gKwo+ICsJc3RydWN0IHNwaV9kZXZpY2UJKnNwaTsKPiArCXN0cnVjdCBuZXRfZGV2aWNl CSpuZGV2Owo+ICsJc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMJc3RhdHM7Cj4gKwo+ICsJc3RydWN0 IHRpbWVyX2xpc3QJd2F0Y2hkb2c7Cj4gKwllbnVtIHdhdGNoZG9nX3N0YXRlCXdfc3RhdGU7Cj4g KwlzaXplX3QJCQl3X3RpY2tzOwo+ICsKPiArCXN0cnVjdCB3b3JrX3N0cnVjdAlheF93b3JrOwo+ ICsJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmF4X3dvcmtfcXVldWU7Cj4gKwlzdHJ1Y3QgdGFz a2xldF9zdHJ1Y3QJYmg7Cj4gKwo+ICsJc3RydWN0IG11dGV4CQlzcGlfbG9jazsgLyogZGV2aWNl IGFjY2VzcyAqLwo+ICsKPiArCXN0cnVjdCBza19idWZmX2hlYWQJdHhfd2FpdF9xOwo+ICsKPiAr CXN0cnVjdCBheHNwaV9kYXRhCWF4X3NwaTsKPiArCj4gKwlzdHJ1Y3QgbWlpX2J1cwkJKm1kaW9i dXM7Cj4gKwlzdHJ1Y3QgcGh5X2RldmljZQkqcGh5ZGV2Owo+ICsKPiArCWludAkJCW1zZ19lbmFi bGU7Cj4gKwo+ICsJdTE2CQkJc2VxX251bTsKPiArCj4gKwl1OAkJCW11bHRpX2ZpbHRlcltBWF9N Q0FTVF9GSUxURVJfU0laRV07Cj4gKwo+ICsJdW5zaWduZWQgbG9uZwkJY2FwYWJpbGl0aWVzOwo+ ICsJCSNkZWZpbmUgQVhfQ0FQX0RNQQkJMQo+ICsJCSNkZWZpbmUgQVhfQ0FQX0NPTVAJCTIKPiAr CQkjZGVmaW5lIEFYX0NBUF9CSURJUgkJNAo+ICsKPiArCXU4CQkJcGxhdF9lbmRpYW47Cj4gKwkJ I2RlZmluZSBQTEFUX0xJVFRMRV9FTkRJQU4JMAo+ICsJCSNkZWZpbmUgUExBVF9CSUdfRU5ESUFO CQkxCj4gKwo+ICsJdW5zaWduZWQgbG9uZwkJZmxhZ3M7Cj4gKwkJI2RlZmluZSBFVkVOVF9JTlRS CQkxCj4gKwkJI2RlZmluZSBFVkVOVF9UWAkJMgo+ICsJCSNkZWZpbmUgRVZFTlRfU0VUX01VTFRJ CQk0Cj4gKwo+ICt9Owo+ICsKPiArI2RlZmluZSB0b19heDg4Nzk2Y19kZXZpY2UobmRldikgKChz dHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICopbmV0ZGV2X3ByaXYobmRldikpCj4gKwpJcyB0aGlzIGhl bHBlciByZWFsbHkgbmVlZGVkPyBpbiBUaGUgcGxhY2VzIEkndmUgc2VlbiB5b3UgY2FuIGFzc2ln bgp0aGUgdm9pZCogcG9pbnRlciByZXR1cm5lZCBuZXRkZXZfcHJpdigpLgoKPiArZW51bSBza2Jf c3RhdGUgewo+ICsJaWxsZWdhbCA9IDAsCj4gKwl0eF9kb25lLAo+ICsJcnhfZG9uZSwKPiArCXJ4 X2VyciwKPiArfTsKPiArCj4gK3N0cnVjdCBza2JfZGF0YTsKPiArCj4gK3N0cnVjdCBza2JfZGF0 YSB7Cj4gKwllbnVtIHNrYl9zdGF0ZSBzdGF0ZTsKPiArCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2 Owo+ICsJc3RydWN0IHNrX2J1ZmYgKnNrYjsKPiArCXNpemVfdCBsZW47Cj4gKwlkbWFfYWRkcl90 IHBoeV9hZGRyOwo+ICt9Owo+ICsKPiArLyogQTg4Nzk2QyByZWdpc3RlciBkZWZpbml0aW9uICov Cj4gKwkvKiBEZWZpbml0aW9uIG9mIFBBR0UwICovCj4gKyNkZWZpbmUgUDBfUFNSCQkoMHgwMCkK PiArCSNkZWZpbmUgUFNSX0RFVl9SRUFEWQkJKDEgPDwgNykKPiArCSNkZWZpbmUgUFNSX1JFU0VU CQkoMCA8PCAxNSkKPiArCSNkZWZpbmUgUFNSX1JFU0VUX0NMUgkJKDEgPDwgMTUpCj4gKyNkZWZp bmUgUDBfQk9SCQkoMHgwMikKPiArI2RlZmluZSBQMF9GRVIJCSgweDA0KQo+ICsJI2RlZmluZSBG RVJfSVBBTE0JCSgxIDw8IDApCj4gKwkjZGVmaW5lIEZFUl9EQ1JDCQkoMSA8PCAxKQo+ICsJI2Rl ZmluZSBGRVJfUkgzTQkJKDEgPDwgMikKPiArCSNkZWZpbmUgRkVSX0hFQURFUlNXQVAJCSgxIDw8 IDcpCj4gKwkjZGVmaW5lIEZFUl9XU1dBUAkJKDEgPDwgOCkKPiArCSNkZWZpbmUgRkVSX0JTV0FQ CQkoMSA8PCA5KQo+ICsJI2RlZmluZSBGRVJfSU5USEkJCSgxIDw8IDEwKQo+ICsJI2RlZmluZSBG RVJfSU5UTE8JCSgwIDw8IDEwKQo+ICsJI2RlZmluZSBGRVJfSVJRX1BVTEwJCSgxIDw8IDExKQo+ ICsJI2RlZmluZSBGRVJfUlhFTgkJKDEgPDwgMTQpCj4gKwkjZGVmaW5lIEZFUl9UWEVOCQkoMSA8 PCAxNSkKPiArI2RlZmluZSBQMF9JU1IJCSgweDA2KQo+ICsJI2RlZmluZSBJU1JfUlhQS1QJCSgx IDw8IDApCj4gKwkjZGVmaW5lIElTUl9NRFEJCQkoMSA8PCA0KQo+ICsJI2RlZmluZSBJU1JfVFhU CQkJKDEgPDwgNSkKPiArCSNkZWZpbmUgSVNSX1RYUEFHRVMJCSgxIDw8IDYpCj4gKwkjZGVmaW5l IElTUl9UWEVSUgkJKDEgPDwgOCkKPiArCSNkZWZpbmUgSVNSX0xJTksJCSgxIDw8IDkpCj4gKyNk ZWZpbmUgUDBfSU1SCQkoMHgwOCkKPiArCSNkZWZpbmUgSU1SX1JYUEtUCQkoMSA8PCAwKQo+ICsJ I2RlZmluZSBJTVJfTURRCQkJKDEgPDwgNCkKPiArCSNkZWZpbmUgSU1SX1RYVAkJCSgxIDw8IDUp Cj4gKwkjZGVmaW5lIElNUl9UWFBBR0VTCQkoMSA8PCA2KQo+ICsJI2RlZmluZSBJTVJfVFhFUlIJ CSgxIDw8IDgpCj4gKwkjZGVmaW5lIElNUl9MSU5LCQkoMSA8PCA5KQo+ICsJI2RlZmluZSBJTVJf TUFTS0FMTAkJKDB4RkZGRikKPiArCSNkZWZpbmUgSU1SX0RFRkFVTFQJCShJTVJfVFhFUlIpCj4g KyNkZWZpbmUgUDBfV0ZDUgkJKDB4MEEpCj4gKwkjZGVmaW5lIFdGQ1JfUE1FSU5ECQkoMSA8PCAw KSAvKiBQTUUgaW5kaWNhdGlvbiAqLwo+ICsJI2RlZmluZSBXRkNSX1BNRVRZUEUJCSgxIDw8IDEp IC8qIFBNRSBJL08gdHlwZSAqLwo+ICsJI2RlZmluZSBXRkNSX1BNRVBPTAkJKDEgPDwgMikgLyog UE1FIHBvbGFyaXR5ICovCj4gKwkjZGVmaW5lIFdGQ1JfUE1FUlNUCQkoMSA8PCAzKSAvKiBSZXNl dCBQTUUgKi8KPiArCSNkZWZpbmUgV0ZDUl9TTEVFUAkJKDEgPDwgNCkgLyogRW5hYmxlIHNsZWVw IG1vZGUgKi8KPiArCSNkZWZpbmUgV0ZDUl9XQUtFVVAJCSgxIDw8IDUpIC8qIEVuYWJsZSB3YWtl dXAgbW9kZSAqLwo+ICsJI2RlZmluZSBXRkNSX1dBSVRFVkVOVAkJKDEgPDwgNikgLyogUmVzZXJ2 ZWQgKi8KPiArCSNkZWZpbmUgV0ZDUl9DTFJXQUtFCQkoMSA8PCA3KSAvKiBDbGVhciB3YWtldXAg Ki8KPiArCSNkZWZpbmUgV0ZDUl9MSU5LQ0gJCSgxIDw8IDgpIC8qIEVuYWJsZSBsaW5rIGNoYW5n ZSAqLwo+ICsJI2RlZmluZSBXRkNSX01BR0lDUAkJKDEgPDwgOSkgLyogRW5hYmxlIG1hZ2ljIHBh Y2tldCAqLwo+ICsJI2RlZmluZSBXRkNSX1dBS0VGCQkoMSA8PCAxMCkgLyogRW5hYmxlIHdha2V1 cCBmcmFtZSAqLwo+ICsJI2RlZmluZSBXRkNSX1BNRUVOCQkoMSA8PCAxMSkgLyogRW5hYmxlIFBN RSBwaW4gKi8KPiArCSNkZWZpbmUgV0ZDUl9MSU5LQ0hTCQkoMSA8PCAxMikgLyogTGluayBjaGFu Z2Ugc3RhdHVzICovCj4gKwkjZGVmaW5lIFdGQ1JfTUFHSUNQUwkJKDEgPDwgMTMpIC8qIE1hZ2lj IHBhY2tldCBzdGF0dXMgKi8KPiArCSNkZWZpbmUgV0ZDUl9XQUtFRlMJCSgxIDw8IDE0KSAvKiBX YWtldXAgZnJhbWUgc3RhdHVzICovCj4gKwkjZGVmaW5lIFdGQ1JfUE1FUwkJKDEgPDwgMTUpIC8q IFBNRSBwaW4gc3RhdHVzICovCj4gKyNkZWZpbmUgUDBfUFNDUgkJKDB4MEMpCj4gKwkjZGVmaW5l IFBTQ1JfUFNfTUFTSwkJKDB4RkZGMCkKPiArCSNkZWZpbmUgUFNDUl9QU19EMAkJKDApCj4gKwkj ZGVmaW5lIFBTQ1JfUFNfRDEJCSgxIDw8IDApCj4gKwkjZGVmaW5lIFBTQ1JfUFNfRDIJCSgxIDw8 IDEpCj4gKwkjZGVmaW5lIFBTQ1JfRlBTCQkoMSA8PCAzKSAvKiBFbmFibGUgZmliZXIgbW9kZSBQ UyAqLwo+ICsJI2RlZmluZSBQU0NSX1NXUFMJCSgxIDw8IDQpIC8qIEVuYWJsZSBzb2Z0d2FyZSAq Lwo+ICsJCQkJCQkgLyogUFMgY29udHJvbCAqLwo+ICsJI2RlZmluZSBQU0NSX1dPTFBTCQkoMSA8 PCA1KSAvKiBFbmFibGUgV09MIFBTICovCj4gKwkjZGVmaW5lIFBTQ1JfU1dXT0wJCSgxIDw8IDYp IC8qIEVuYWJsZSBzb2Z0d2FyZSBzZWxlY3QgKi8KPiArCQkJCQkJIC8qIFdPTCBQUyAqLwo+ICsJ I2RlZmluZSBQU0NSX1BIWU9TQwkJKDEgPDwgNykgLyogSW50ZXJuYWwgUEhZIE9TQyBjb250cm9s ICovCj4gKwkjZGVmaW5lIFBTQ1JfRk9GRUYJCSgxIDw8IDgpIC8qIEZvcmNlIFBIWSBnZW5lcmF0 ZSBGRUYgKi8KPiArCSNkZWZpbmUgUFNDUl9GT0YJCSgxIDw8IDkpIC8qIEZvcmNlIFBIWSBpbiBm aWJlciBtb2RlICovCj4gKwkjZGVmaW5lIFBTQ1JfUEhZUEQJCSgxIDw8IDEwKSAvKiBQSFkgcG93 ZXIgZG93bi4gKi8KPiArCQkJCQkJICAvKiBBY3RpdmUgaGlnaCAqLwo+ICsJI2RlZmluZSBQU0NS X1BIWVJTVAkJKDEgPDwgMTEpIC8qIFBIWSByZXNldCBzaWduYWwuICovCj4gKwkJCQkJCSAgLyog QWN0aXZlIGxvdyAqLwo+ICsJI2RlZmluZSBQU0NSX1BIWUNTSUwJCSgxIDw8IDEyKSAvKiBQSFkg Y2FibGUgZW5lcmd5IGRldGVjdCAqLwo+ICsJI2RlZmluZSBQU0NSX1BIWUNPRkYJCSgxIDw8IDEz KSAvKiBQSFkgY2FibGUgb2ZmICovCj4gKwkjZGVmaW5lIFBTQ1JfUEhZTElOSwkJKDEgPDwgMTQp IC8qIFBIWSBsaW5rIHN0YXR1cyAqLwo+ICsJI2RlZmluZSBQU0NSX0VFUE9LCQkoMSA8PCAxNSkg LyogRUVQUk9NIGxvYWQgY29tcGxldGUgKi8KPiArI2RlZmluZSBQMF9NQUNDUgkoMHgwRSkKPiAr CSNkZWZpbmUgTUFDQ1JfUlhGQ19FTkFCTEUJKDEgPDwgMykKPiArCSNkZWZpbmUgTUFDQ1JfUlhG Q19NQVNLCQkweEZGRjcKPiArCSNkZWZpbmUgTUFDQ1JfVFhGQ19FTkFCTEUJKDEgPDwgNCkKPiAr CSNkZWZpbmUgTUFDQ1JfVFhGQ19NQVNLCQkweEZGRUYKPiArCSNkZWZpbmUgTUFDQ1JfUFNJCQko MSA8PCA2KSAvKiBTb2Z0d2FyZSBDYWJsZS1PZmYgKi8KPiArCQkJCQkJIC8qIFBvd2VyIFNhdmlu ZyBJbnRlcnJ1cHQgKi8KPiArCSNkZWZpbmUgTUFDQ1JfUEYJCSgxIDw8IDcpCj4gKwkjZGVmaW5l IE1BQ0NSX1BNTV9CSVRTCQk4Cj4gKwkjZGVmaW5lIE1BQ0NSX1BNTV9NQVNLCQkoMHgxRjAwKQo+ ICsJI2RlZmluZSBNQUNDUl9QTU1fUkVTRVQJCSgxIDw8IDgpCj4gKwkjZGVmaW5lIE1BQ0NSX1BN TV9XQUlUCQkoMiA8PCA4KQo+ICsJI2RlZmluZSBNQUNDUl9QTU1fUkVBRFkJCSgzIDw8IDgpCj4g KwkjZGVmaW5lIE1BQ0NSX1BNTV9EMQkJKDQgPDwgOCkKPiArCSNkZWZpbmUgTUFDQ1JfUE1NX0Qy CQkoNSA8PCA4KQo+ICsJI2RlZmluZSBNQUNDUl9QTU1fV0FLRQkJKDcgPDwgOCkKPiArCSNkZWZp bmUgTUFDQ1JfUE1NX0QxX1dBS0UJKDggPDwgOCkKPiArCSNkZWZpbmUgTUFDQ1JfUE1NX0QyX1dB S0UJKDkgPDwgOCkKPiArCSNkZWZpbmUgTUFDQ1JfUE1NX1NMRUVQCQkoMTAgPDwgOCkKPiArCSNk ZWZpbmUgTUFDQ1JfUE1NX1BIWV9SRVNFVAkoMTEgPDwgOCkKPiArCSNkZWZpbmUgTUFDQ1JfUE1N X1NPRlRfRDEJKDE2IDw8IDgpCj4gKwkjZGVmaW5lIE1BQ0NSX1BNTV9TT0ZUX0QyCSgxNyA8PCA4 KQo+ICsjZGVmaW5lIFAwX1RGQkZDUgkoMHgxMCkKPiArCSNkZWZpbmUgVEZCRkNSX1NDSEVfRlJF RV9QQUdFCTB4RTA3Rgo+ICsJI2RlZmluZSBURkJGQ1JfRlJFRV9QQUdFX0JJVFMJMHgwNwo+ICsJ I2RlZmluZSBURkJGQ1JfRlJFRV9QQUdFX0xBVENICSgxIDw8IDYpCj4gKwkjZGVmaW5lIFRGQkZD Ul9TRVRfRlJFRV9QQUdFKHgpCSgoKHgpICYgMHgzRikgPDwgVEZCRkNSX0ZSRUVfUEFHRV9CSVRT KQo+ICsJI2RlZmluZSBURkJGQ1JfVFhfUEFHRV9TRVQJKDEgPDwgMTMpCj4gKwkjZGVmaW5lIFRG QkZDUl9NQU5VX0VOVFgJKDEgPDwgMTUpCj4gKwkjZGVmaW5lIFRYX0ZSRUVCVUZfTUFTSwkJMHgw MDNGCj4gKwkjZGVmaW5lIFRYX0RQVFNUQVJUCQkweDQwMDAKPiArCj4gKyNkZWZpbmUgUDBfVFNO UgkJKDB4MTIpCj4gKwkjZGVmaW5lIFRYTlJfVFhCX0VSUgkJKDEgPDwgNSkKPiArCSNkZWZpbmUg VFhOUl9UWEJfSURMRQkJKDEgPDwgNikKPiArCSNkZWZpbmUgVFNOUl9QS1RfQ05UKHgpCQkoKCh4 KSAmIDB4M0YpIDw8IDgpCj4gKwkjZGVmaW5lIFRYTlJfVFhCX1JFSU5JVAkJKDEgPDwgMTQpCj4g KwkjZGVmaW5lIFRTTlJfVFhCX1NUQVJUCQkoMSA8PCAxNSkKPiArI2RlZmluZSBQMF9SVERQUgko MHgxNCkKPiArI2RlZmluZSBQMF9SWEJDUjEJKDB4MTYpCj4gKwkjZGVmaW5lIFJYQkNSMV9SWEJf RElTQ0FSRAkoMSA8PCAxNCkKPiArCSNkZWZpbmUgUlhCQ1IxX1JYQl9TVEFSVAkoMSA8PCAxNSkK PiArI2RlZmluZSBQMF9SWEJDUjIJKDB4MTgpCj4gKwkjZGVmaW5lIFJYQkNSMl9QS1RfTUFTSwkJ KDB4RkYpCj4gKwkjZGVmaW5lIFJYQkNSMl9SWFBDX01BU0sJKDB4N0YpCj4gKwkjZGVmaW5lIFJY QkNSMl9SWEJfUkVBRFkJKDEgPDwgMTMpCj4gKwkjZGVmaW5lIFJYQkNSMl9SWEJfSURMRQkJKDEg PDwgMTQpCj4gKwkjZGVmaW5lIFJYQkNSMl9SWEJfUkVJTklUCSgxIDw8IDE1KQo+ICsjZGVmaW5l IFAwX1JUV0NSCSgweDFBKQo+ICsJI2RlZmluZSBSVFdDUl9SWFdDX01BU0sJCSgweDNGRkYpCj4g KwkjZGVmaW5lIFJUV0NSX1JYX0xBVENICQkoMSA8PCAxNSkKPiArI2RlZmluZSBQMF9SQ1BIUgko MHgxQykKPiArCj4gKwkvKiBEZWZpbml0aW9uIG9mIFBBR0UxICovCj4gKyNkZWZpbmUgUDFfUlBQ RVIJKDB4MjIpCj4gKwkjZGVmaW5lIFJQUEVSX1JYRU4JCSgxIDw8IDApCj4gKyNkZWZpbmUgUDFf TVJDUgkJKDB4MjgpCj4gKyNkZWZpbmUgUDFfTURSCQkoMHgyQSkKPiArI2RlZmluZSBQMV9STVBS CQkoMHgyQykKPiArI2RlZmluZSBQMV9UTVBSCQkoMHgyRSkKPiArI2RlZmluZSBQMV9SWEJTUENS CSgweDMwKQo+ICsJI2RlZmluZSBSWEJTUENSX1NUVUZfV09SRF9DTlQoeCkJKCgoeCkgJiAweDcw MDApID4+IDEyKQo+ICsJI2RlZmluZSBSWEJTUENSX1NUVUZfRU5BQkxFCQkoMSA8PCAxNSkKPiAr I2RlZmluZSBQMV9NQ1IJCSgweDMyKQo+ICsJI2RlZmluZSBNQ1JfU0JQCQkJKDEgPDwgOCkKPiAr CSNkZWZpbmUgTUNSX1NNCQkJKDEgPDwgOSkKPiArCSNkZWZpbmUgTUNSX0NSQ0VOTEFOCQkoMSA8 PCAxMSkKPiArCSNkZWZpbmUgTUNSX1NUUAkJCSgxIDw8IDEyKQo+ICsJLyogRGVmaW5pdGlvbiBv ZiBQQUdFMiAqLwo+ICsjZGVmaW5lIFAyX0NJUgkJKDB4NDIpCj4gKyNkZWZpbmUgUDJfUENSCQko MHg0NCkKPiArCSNkZWZpbmUgUENSX1BPTExfRU4JCSgxIDw8IDApCj4gKwkjZGVmaW5lIFBDUl9Q T0xMX0ZMT1dDVFJMCSgxIDw8IDEpCj4gKwkjZGVmaW5lIFBDUl9QT0xMX0JNQ1IJCSgxIDw8IDIp Cj4gKwkjZGVmaW5lIFBDUl9QSFlJRCh4KQkJKCh4KSA8PCA4KQo+ICsjZGVmaW5lIFAyX1BIWVNS CSgweDQ2KQo+ICsjZGVmaW5lIFAyX01ESU9EUgkoMHg0OCkKPiArI2RlZmluZSBQMl9NRElPQ1IJ KDB4NEEpCj4gKwkjZGVmaW5lIE1ESU9DUl9SQUREUih4KQkJKCh4KSAmIDB4MUYpCj4gKwkjZGVm aW5lIE1ESU9DUl9GQUREUih4KQkJKCgoeCkgJiAweDFGKSA8PCA4KQo+ICsJI2RlZmluZSBNRElP Q1JfVkFMSUQJCSgxIDw8IDEzKQo+ICsJI2RlZmluZSBNRElPQ1JfUkVBRAkJKDEgPDwgMTQpCj4g KwkjZGVmaW5lIE1ESU9DUl9XUklURQkJKDEgPDwgMTUpCj4gKyNkZWZpbmUgUDJfTENSMAkJKDB4 NEMpCj4gKwkjZGVmaW5lIExDUl9MRUQwX0VOCQkoMSA8PCAwKQo+ICsJI2RlZmluZSBMQ1JfTEVE MF8xMDBNT0RFCSgxIDw8IDEpCj4gKwkjZGVmaW5lIExDUl9MRUQwX0RVUExFWAkJKDEgPDwgMikK PiArCSNkZWZpbmUgTENSX0xFRDBfTElOSwkJKDEgPDwgMykKPiArCSNkZWZpbmUgTENSX0xFRDBf QUNUCQkoMSA8PCA0KQo+ICsJI2RlZmluZSBMQ1JfTEVEMF9DT0wJCSgxIDw8IDUpCj4gKwkjZGVm aW5lIExDUl9MRUQwXzEwTU9ERQkJKDEgPDwgNikKPiArCSNkZWZpbmUgTENSX0xFRDBfRFVQQ09M CQkoMSA8PCA3KQo+ICsJI2RlZmluZSBMQ1JfTEVEMV9FTgkJKDEgPDwgOCkKPiArCSNkZWZpbmUg TENSX0xFRDFfMTAwTU9ERQkoMSA8PCA5KQo+ICsJI2RlZmluZSBMQ1JfTEVEMV9EVVBMRVgJCSgx IDw8IDEwKQo+ICsJI2RlZmluZSBMQ1JfTEVEMV9MSU5LCQkoMSA8PCAxMSkKPiArCSNkZWZpbmUg TENSX0xFRDFfQUNUCQkoMSA8PCAxMikKPiArCSNkZWZpbmUgTENSX0xFRDFfQ09MCQkoMSA8PCAx MykKPiArCSNkZWZpbmUgTENSX0xFRDFfMTBNT0RFCQkoMSA8PCAxNCkKPiArCSNkZWZpbmUgTENS X0xFRDFfRFVQQ09MCQkoMSA8PCAxNSkKPiArI2RlZmluZSBQMl9MQ1IxCQkoMHg0RSkKPiArCSNk ZWZpbmUgTENSX0xFRDJfTUFTSwkJKDB4RkYwMCkKPiArCSNkZWZpbmUgTENSX0xFRDJfRU4JCSgx IDw8IDApCj4gKwkjZGVmaW5lIExDUl9MRUQyXzEwME1PREUJKDEgPDwgMSkKPiArCSNkZWZpbmUg TENSX0xFRDJfRFVQTEVYCQkoMSA8PCAyKQo+ICsJI2RlZmluZSBMQ1JfTEVEMl9MSU5LCQkoMSA8 PCAzKQo+ICsJI2RlZmluZSBMQ1JfTEVEMl9BQ1QJCSgxIDw8IDQpCj4gKwkjZGVmaW5lIExDUl9M RUQyX0NPTAkJKDEgPDwgNSkKPiArCSNkZWZpbmUgTENSX0xFRDJfMTBNT0RFCQkoMSA8PCA2KQo+ ICsJI2RlZmluZSBMQ1JfTEVEMl9EVVBDT0wJCSgxIDw8IDcpCj4gKyNkZWZpbmUgUDJfSVBHQ1IJ KDB4NTApCj4gKyNkZWZpbmUgUDJfQ1JJUgkJKDB4NTIpCj4gKyNkZWZpbmUgUDJfRkxIV0NSCSgw eDU0KQo+ICsjZGVmaW5lIFAyX1JYQ1IJCSgweDU2KQo+ICsJI2RlZmluZSBSWENSX1BSTwkJKDEg PDwgMCkKPiArCSNkZWZpbmUgUlhDUl9BTUFMTAkJKDEgPDwgMSkKPiArCSNkZWZpbmUgUlhDUl9T RVAJCSgxIDw8IDIpCj4gKwkjZGVmaW5lIFJYQ1JfQUIJCQkoMSA8PCAzKQo+ICsJI2RlZmluZSBS WENSX0FNCQkJKDEgPDwgNCkKPiArCSNkZWZpbmUgUlhDUl9BUAkJCSgxIDw8IDUpCj4gKwkjZGVm aW5lIFJYQ1JfQVJQCQkoMSA8PCA2KQo+ICsjZGVmaW5lIFAyX0pMQ1IJCSgweDU4KQo+ICsjZGVm aW5lIFAyX01QTFIJCSgweDVDKQo+ICsKPiArCS8qIERlZmluaXRpb24gb2YgUEFHRTMgKi8KPiAr I2RlZmluZSBQM19NQUNBU1IwCSgweDYyKQo+ICsJI2RlZmluZSBQM19NQUNBU1IoeCkJCShQM19N QUNBU1IwICsgMiAqICh4KSkKPiArCSNkZWZpbmUgTUFDQVNSX0xPV0JZVEVfTUFTSwkweDAwRkYK PiArCSNkZWZpbmUgTUFDQVNSX0hJR0hfQklUUwkweDA4Cj4gKyNkZWZpbmUgUDNfTUFDQVNSMQko MHg2NCkKPiArI2RlZmluZSBQM19NQUNBU1IyCSgweDY2KQo+ICsjZGVmaW5lIFAzX01GQVIwMQko MHg2OCkKPiArI2RlZmluZSBQM19NRkFSX0JBU0UJKDB4NjgpCj4gKwkjZGVmaW5lIFAzX01GQVIo eCkJCShQM19NRkFSX0JBU0UgKyAyICogKHgpKQo+ICsKPiArI2RlZmluZSBQM19NRkFSMjMJKDB4 NkEpCj4gKyNkZWZpbmUgUDNfTUZBUjQ1CSgweDZDKQo+ICsjZGVmaW5lIFAzX01GQVI2NwkoMHg2 RSkKPiArI2RlZmluZSBQM19WSUQwRlIJKDB4NzApCj4gKyNkZWZpbmUgUDNfVklEMUZSCSgweDcy KQo+ICsjZGVmaW5lIFAzX0VFQ1NSCSgweDc0KQo+ICsjZGVmaW5lIFAzX0VFRFIJCSgweDc2KQo+ ICsjZGVmaW5lIFAzX0VFQ1IJCSgweDc4KQo+ICsJI2RlZmluZSBFRUNSX0FERFJfTUFTSwkJKDB4 MDBGRikKPiArCSNkZWZpbmUgRUVDUl9SRUFEX0FDVAkJKDEgPDwgOCkKPiArCSNkZWZpbmUgRUVD Ul9XUklURV9BQ1QJCSgxIDw8IDkpCj4gKwkjZGVmaW5lIEVFQ1JfV1JJVEVfRElTQUJMRQkoMSA8 PCAxMCkKPiArCSNkZWZpbmUgRUVDUl9XUklURV9FTkFCTEUJKDEgPDwgMTEpCj4gKwkjZGVmaW5l IEVFQ1JfRUVfUkVBRFkJCSgxIDw8IDEzKQo+ICsJI2RlZmluZSBFRUNSX1JFTE9BRAkJKDEgPDwg MTQpCj4gKwkjZGVmaW5lIEVFQ1JfUkVTRVQJCSgxIDw8IDE1KQo+ICsjZGVmaW5lIFAzX1RQQ1IJ CSgweDdBKQo+ICsJI2RlZmluZSBUUENSX1BBVFRfTUFTSwkJKDB4RkYpCj4gKwkjZGVmaW5lIFRQ Q1JfUkFORF9QS1RfRU4JKDEgPDwgMTQpCj4gKwkjZGVmaW5lIFRQQ1JfRklYRURfUEtUX0VOCSgx IDw8IDE1KQo+ICsjZGVmaW5lIFAzX1RQTFIJCSgweDdDKQo+ICsJLyogRGVmaW5pdGlvbiBvZiBQ QUdFNCAqLwo+ICsjZGVmaW5lIFA0X1NQSUNSCSgweDhBKQo+ICsJI2RlZmluZSBTUElDUl9SQ0VO CQkoMSA8PCAwKQo+ICsJI2RlZmluZSBTUElDUl9RQ0VOCQkoMSA8PCAxKQo+ICsJI2RlZmluZSBT UElDUl9SQlJFCQkoMSA8PCAzKQo+ICsJI2RlZmluZSBTUElDUl9QTU0JCSgxIDw8IDQpCj4gKwkj ZGVmaW5lIFNQSUNSX0xPT1BCQUNLCQkoMSA8PCA4KQo+ICsJI2RlZmluZSBTUElDUl9DT1JFX1JF U19DTFIJKDEgPDwgMTApCj4gKwkjZGVmaW5lIFNQSUNSX1NQSV9SRVNfQ0xSCSgxIDw8IDExKQo+ ICsjZGVmaW5lIFA0X1NQSUlTTVIJKDB4OEMpCj4gKwo+ICsjZGVmaW5lIFA0X0NPRVJDUjAJKDB4 OTIpCj4gKwkjZGVmaW5lIENPRVJDUjBfUlhJUENFCQkoMSA8PCAwKQo+ICsJI2RlZmluZSBDT0VS Q1IwX1JYSVBWRQkJKDEgPDwgMSkKPiArCSNkZWZpbmUgQ09FUkNSMF9SWFY2UEUJCSgxIDw8IDIp Cj4gKwkjZGVmaW5lIENPRVJDUjBfUlhUQ1BFCQkoMSA8PCAzKQo+ICsJI2RlZmluZSBDT0VSQ1Iw X1JYVURQRQkJKDEgPDwgNCkKPiArCSNkZWZpbmUgQ09FUkNSMF9SWElDTVAJCSgxIDw8IDUpCj4g KwkjZGVmaW5lIENPRVJDUjBfUlhJR01QCQkoMSA8PCA2KQo+ICsJI2RlZmluZSBDT0VSQ1IwX1JY SUNWNgkJKDEgPDwgNykKPiArCj4gKwkjZGVmaW5lIENPRVJDUjBfUlhUQ1BWNgkJKDEgPDwgOCkK PiArCSNkZWZpbmUgQ09FUkNSMF9SWFVEUFY2CQkoMSA8PCA5KQo+ICsJI2RlZmluZSBDT0VSQ1Iw X1JYSUNNVjYJCSgxIDw8IDEwKQo+ICsJI2RlZmluZSBDT0VSQ1IwX1JYSUdNVjYJCSgxIDw8IDEx KQo+ICsJI2RlZmluZSBDT0VSQ1IwX1JYSUNWNlY2CSgxIDw8IDEyKQo+ICsKPiArCSNkZWZpbmUg Q09FUkNSMF9ERUZBVUxUCQkoQ09FUkNSMF9SWElQQ0UgfCBDT0VSQ1IwX1JYVjZQRSB8IFwKPiAr CQkJCQkgQ09FUkNSMF9SWFRDUEUgfCBDT0VSQ1IwX1JYVURQRSB8IFwKPiArCQkJCQkgQ09FUkNS MF9SWFRDUFY2IHwgQ09FUkNSMF9SWFVEUFY2KQo+ICsjZGVmaW5lIFA0X0NPRVJDUjEJKDB4OTQp Cj4gKwkjZGVmaW5lIENPRVJDUjFfSVBDRURQCQkoMSA8PCAwKQo+ICsJI2RlZmluZSBDT0VSQ1Ix X0lQVkVEUAkJKDEgPDwgMSkKPiArCSNkZWZpbmUgQ09FUkNSMV9WNlZFRFAJCSgxIDw8IDIpCj4g KwkjZGVmaW5lIENPRVJDUjFfVENQRURQCQkoMSA8PCAzKQo+ICsJI2RlZmluZSBDT0VSQ1IxX1VE UEVEUAkJKDEgPDwgNCkKPiArCSNkZWZpbmUgQ09FUkNSMV9JQ01QRFAJCSgxIDw8IDUpCj4gKwkj ZGVmaW5lIENPRVJDUjFfSUdNUERQCQkoMSA8PCA2KQo+ICsJI2RlZmluZSBDT0VSQ1IxX0lDVjZE UAkJKDEgPDwgNykKPiArCSNkZWZpbmUgQ09FUkNSMV9SWDY0VEUJCSgxIDw8IDgpCj4gKwkjZGVm aW5lIENPRVJDUjFfUlhQUFBFCQkoMSA8PCA5KQo+ICsJI2RlZmluZSBDT0VSQ1IxX1RDUDZEUAkJ KDEgPDwgMTApCj4gKwkjZGVmaW5lIENPRVJDUjFfVURQNkRQCQkoMSA8PCAxMSkKPiArCSNkZWZp bmUgQ09FUkNSMV9JQzZEUAkJKDEgPDwgMTIpCj4gKwkjZGVmaW5lIENPRVJDUjFfSUc2RFAJCSgx IDw8IDEzKQo+ICsJI2RlZmluZSBDT0VSQ1IxX0lDVjY2RFAJCSgxIDw8IDE0KQo+ICsJI2RlZmlu ZSBDT0VSQ1IxX1JQQ0UJCSgxIDw8IDE1KQo+ICsKPiArCSNkZWZpbmUgQ09FUkNSMV9ERUZBVUxU CQkoQ09FUkNSMV9SWFBQUEUpCj4gKwo+ICsjZGVmaW5lIFA0X0NPRVRDUjAJKDB4OTYpCj4gKwkj ZGVmaW5lIENPRVRDUjBfVFhJUAkJKDEgPDwgMCkKPiArCSNkZWZpbmUgQ09FVENSMF9UWFRDUAkJ KDEgPDwgMSkKPiArCSNkZWZpbmUgQ09FVENSMF9UWFVEUAkJKDEgPDwgMikKPiArCSNkZWZpbmUg Q09FVENSMF9UWElDTVAJCSgxIDw8IDMpCj4gKwkjZGVmaW5lIENPRVRDUjBfVFhJR01QCQkoMSA8 PCA0KQo+ICsJI2RlZmluZSBDT0VUQ1IwX1RYSUNWNgkJKDEgPDwgNSkKPiArCSNkZWZpbmUgQ09F VENSMF9UWFRDUFY2CQkoMSA8PCA4KQo+ICsJI2RlZmluZSBDT0VUQ1IwX1RYVURQVjYJCSgxIDw8 IDkpCj4gKwkjZGVmaW5lIENPRVRDUjBfVFhJQ01WNgkJKDEgPDwgMTApCj4gKwkjZGVmaW5lIENP RVRDUjBfVFhJR01WNgkJKDEgPDwgMTEpCj4gKwkjZGVmaW5lIENPRVRDUjBfVFhJQ1Y2VjYJKDEg PDwgMTIpCj4gKwo+ICsJI2RlZmluZSBDT0VUQ1IwX0RFRkFVTFQJCShDT0VUQ1IwX1RYSVAgfCBD T0VUQ1IwX1RYVENQIHwgXAo+ICsJCQkJCSBDT0VUQ1IwX1RYVURQIHwgQ09FVENSMF9UWFRDUFY2 IHwgXAo+ICsJCQkJCSBDT0VUQ1IwX1RYVURQVjYpCj4gKyNkZWZpbmUgUDRfQ09FVENSMQkoMHg5 OCkKPiArCSNkZWZpbmUgQ09FVENSMV9UWDY0VEUJCSgxIDw8IDApCj4gKwkjZGVmaW5lIENPRVRD UjFfVFhQUFBFCQkoMSA8PCAxKQo+ICsKPiArI2RlZmluZSBQNF9DT0VDRURSCSgweDlBKQo+ICsj ZGVmaW5lIFA0X0wyQ0VDUgkoMHg5QykKPiArCj4gKwkvKiBEZWZpbml0aW9uIG9mIFBBR0U1ICov Cj4gKyNkZWZpbmUgUDVfV0ZUUgkJKDB4QTIpCj4gKwkjZGVmaW5lIFdGVFJfMk1TCQkoMHgwMSkK PiArCSNkZWZpbmUgV0ZUUl80TVMJCSgweDAyKQo+ICsJI2RlZmluZSBXRlRSXzhNUwkJKDB4MDMp Cj4gKwkjZGVmaW5lIFdGVFJfMTZNUwkJKDB4MDQpCj4gKwkjZGVmaW5lIFdGVFJfMzJNUwkJKDB4 MDUpCj4gKwkjZGVmaW5lIFdGVFJfNjRNUwkJKDB4MDYpCj4gKwkjZGVmaW5lIFdGVFJfMTI4TVMJ CSgweDA3KQo+ICsJI2RlZmluZSBXRlRSXzI1Nk1TCQkoMHgwOCkKPiArCSNkZWZpbmUgV0ZUUl81 MTJNUwkJKDB4MDkpCj4gKwkjZGVmaW5lIFdGVFJfMTAyNE1TCQkoMHgwQSkKPiArCSNkZWZpbmUg V0ZUUl8yMDQ4TVMJCSgweDBCKQo+ICsJI2RlZmluZSBXRlRSXzQwOTZNUwkJKDB4MEMpCj4gKwkj ZGVmaW5lIFdGVFJfODE5Mk1TCQkoMHgwRCkKPiArCSNkZWZpbmUgV0ZUUl8xNjM4NE1TCQkoMHgw RSkKPiArCSNkZWZpbmUgV0ZUUl8zMjc2OE1TCQkoMHgwRikKPiArI2RlZmluZSBQNV9XRkNDUgko MHhBNCkKPiArI2RlZmluZSBQNV9XRkNSMDMJKDB4QTYpCj4gKwkjZGVmaW5lIFdGQ1IwM19GMF9F TgkJKDEgPDwgMCkKPiArCSNkZWZpbmUgV0ZDUjAzX0YxX0VOCQkoMSA8PCA0KQo+ICsJI2RlZmlu ZSBXRkNSMDNfRjJfRU4JCSgxIDw8IDgpCj4gKwkjZGVmaW5lIFdGQ1IwM19GM19FTgkJKDEgPDwg MTIpCj4gKyNkZWZpbmUgUDVfV0ZDUjQ3CSgweEE4KQo+ICsJI2RlZmluZSBXRkNSNDdfRjRfRU4J CSgxIDw8IDApCj4gKwkjZGVmaW5lIFdGQ1I0N19GNV9FTgkJKDEgPDwgNCkKPiArCSNkZWZpbmUg V0ZDUjQ3X0Y2X0VOCQkoMSA8PCA4KQo+ICsJI2RlZmluZSBXRkNSNDdfRjdfRU4JCSgxIDw8IDEy KQo+ICsjZGVmaW5lIFA1X1dGMEJNUjAJKDB4QUEpCj4gKyNkZWZpbmUgUDVfV0YwQk1SMQkoMHhB QykKPiArI2RlZmluZSBQNV9XRjBDUgkoMHhBRSkKPiArI2RlZmluZSBQNV9XRjBPQlIJKDB4QjAp Cj4gKyNkZWZpbmUgUDVfV0YxQk1SMAkoMHhCMikKPiArI2RlZmluZSBQNV9XRjFCTVIxCSgweEI0 KQo+ICsjZGVmaW5lIFA1X1dGMUNSCSgweEI2KQo+ICsjZGVmaW5lIFA1X1dGMU9CUgkoMHhCOCkK PiArI2RlZmluZSBQNV9XRjJCTVIwCSgweEJBKQo+ICsjZGVmaW5lIFA1X1dGMkJNUjEJKDB4QkMp Cj4gKwo+ICsJLyogRGVmaW5pdGlvbiBvZiBQQUdFNiAqLwo+ICsjZGVmaW5lIFA2X1dGMkNSCSgw eEMyKQo+ICsjZGVmaW5lIFA2X1dGMk9CUgkoMHhDNCkKPiArI2RlZmluZSBQNl9XRjNCTVIwCSgw eEM2KQo+ICsjZGVmaW5lIFA2X1dGM0JNUjEJKDB4QzgpCj4gKyNkZWZpbmUgUDZfV0YzQ1IJKDB4 Q0EpCj4gKyNkZWZpbmUgUDZfV0YzT0JSCSgweENDKQo+ICsjZGVmaW5lIFA2X1dGNEJNUjAJKDB4 Q0UpCj4gKyNkZWZpbmUgUDZfV0Y0Qk1SMQkoMHhEMCkKPiArI2RlZmluZSBQNl9XRjRDUgkoMHhE MikKPiArI2RlZmluZSBQNl9XRjRPQlIJKDB4RDQpCj4gKyNkZWZpbmUgUDZfV0Y1Qk1SMAkoMHhE NikKPiArI2RlZmluZSBQNl9XRjVCTVIxCSgweEQ4KQo+ICsjZGVmaW5lIFA2X1dGNUNSCSgweERB KQo+ICsjZGVmaW5lIFA2X1dGNU9CUgkoMHhEQykKPiArCj4gKy8qIERlZmluaXRpb24gb2YgUEFH RTcgKi8KPiArI2RlZmluZSBQN19XRjZCTVIwCSgweEUyKQo+ICsjZGVmaW5lIFA3X1dGNkJNUjEJ KDB4RTQpCj4gKyNkZWZpbmUgUDdfV0Y2Q1IJKDB4RTYpCj4gKyNkZWZpbmUgUDdfV0Y2T0JSCSgw eEU4KQo+ICsjZGVmaW5lIFA3X1dGN0JNUjAJKDB4RUEpCj4gKyNkZWZpbmUgUDdfV0Y3Qk1SMQko MHhFQykKPiArI2RlZmluZSBQN19XRjdDUgkoMHhFRSkKPiArI2RlZmluZSBQN19XRjdPQlIJKDB4 RjApCj4gKyNkZWZpbmUgUDdfV0ZSMDEJKDB4RjIpCj4gKyNkZWZpbmUgUDdfV0ZSMjMJKDB4RjQp Cj4gKyNkZWZpbmUgUDdfV0ZSNDUJKDB4RjYpCj4gKyNkZWZpbmUgUDdfV0ZSNjcJKDB4RjgpCj4g KyNkZWZpbmUgUDdfV0ZQQzAJKDB4RkEpCj4gKyNkZWZpbmUgUDdfV0ZQQzEJKDB4RkMpCj4gKwo+ ICsvKiBUeCBoZWFkZXJzIHN0cnVjdHVyZSAqLwo+ICtzdHJ1Y3QgdHhfc29wX2hlYWRlciB7Cj4g KwkvKiBiaXQgMTUtMTE6IGZsYWdzLCBiaXQgMTAtMDogcGFja2V0IGxlbmd0aCAqLwo+ICsJdTE2 IGZsYWdzX2xlbjsKPiArCS8qIGJpdCAxNS0xMTogc2VxdWVuY2UgbnVtYmVyLCBiaXQgMTEtMDog cGFja2V0IGxlbmd0aCBiYXIgKi8KPiArCXUxNiBzZXFfbGVuYmFyOwo+ICt9IF9fcGFja2VkOwo+ ICsKPiArc3RydWN0IHR4X3NlZ21lbnRfaGVhZGVyIHsKPiArCS8qIGJpdCAxNS0xNDogZmxhZ3Ms IGJpdCAxMy0xMTogc2VnbWVudCBudW1iZXIgKi8KPiArCS8qIGJpdCAxMC0wOiBzZWdtZW50IGxl bmd0aCAqLwo+ICsJdTE2IGZsYWdzX3NlcW51bV9zZWdsZW47Cj4gKwkvKiBiaXQgMTUtMTQ6IGVu ZCBvZmZzZXQsIGJpdCAxMy0xMTogc3RhcnQgb2Zmc2V0ICovCj4gKwkvKiBiaXQgMTAtMDogc2Vn bWVudCBsZW5ndGggYmFyICovCj4gKwl1MTYgZW9fc29fc2VnbGVuYmFyOwo+ICt9IF9fcGFja2Vk Owo+ICsKPiArc3RydWN0IHR4X2VvcF9oZWFkZXIgewo+ICsJLyogYml0IDE1LTExOiBzZXF1ZW5j ZSBudW1iZXIsIGJpdCAxMC0wOiBwYWNrZXQgbGVuZ3RoICovCj4gKwl1MTYgc2VxX2xlbjsKPiAr CS8qIGJpdCAxNS0xMTogc2VxdWVuY2UgbnVtYmVyIGJhciwgYml0IDEwLTA6IHBhY2tldCBsZW5n dGggYmFyICovCj4gKwl1MTYgc2VxYmFyX2xlbmJhcjsKPiArfSBfX3BhY2tlZDsKPiArCj4gK3N0 cnVjdCB0eF9wa3RfaW5mbyB7Cj4gKwlzdHJ1Y3QgdHhfc29wX2hlYWRlciBzb3A7Cj4gKwlzdHJ1 Y3QgdHhfc2VnbWVudF9oZWFkZXIgc2VnOwo+ICsJc3RydWN0IHR4X2VvcF9oZWFkZXIgZW9wOwo+ ICsJdTE2IHBrdF9sZW47Cj4gKwl1MTYgc2VxX251bTsKPiArfSBfX3BhY2tlZDsKPiArCj4gKy8q IFJ4IGhlYWRlcnMgc3RydWN0dXJlICovCj4gK3N0cnVjdCByeF9oZWFkZXIgewo+ICsJdTE2IGZs YWdzX2xlbjsKPiArCXUxNiBzZXFfbGVuYmFyOwo+ICsJdTE2IGZsYWdzOwo+ICt9IF9fcGFja2Vk Owo+ICsKPiArZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXg4ODc5NmNfbm9fcmVnc19tYXNrW107Cj4g Kwo+ICsjZW5kaWYgLyogI2lmbmRlZiBfQVg4ODc5NkNfTUFJTl9IICovCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfc3BpLmMgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9hc2l4L2F4ODg3OTZjX3NwaS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjFhMjBiYmViNGRjMQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX3NwaS5jCj4gQEAgLTAsMCArMSwxMTEgQEAK PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ICsvKgo+ICsgKiBD b3B5cmlnaHQgKGMpIDIwMTAgQVNJWCBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgo+ICsgKiBDb3B5 cmlnaHQgKGMpIDIwMjAgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KPiArICoKPiArICog QVNJWCBBWDg4Nzk2QyBTUEkgRmFzdCBFdGhlcm5ldCBMaW51eCBkcml2ZXIKPiArICovCj4gKwo+ ICsjZGVmaW5lIHByX2ZtdChmbXQpCSJheDg4Nzk2YzogIiBmbXQKPiArCj4gKyNpbmNsdWRlIDxs aW51eC9zdHJpbmcuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4KPiArCj4gKyNpbmNs dWRlICJheDg4Nzk2Y19zcGkuaCIKPiArCj4gKy8qIGRyaXZlciBidXMgbWFuYWdlbWVudCBmdW5j dGlvbnMgKi8KPiAraW50IGF4c3BpX3dha2V1cChjb25zdCBzdHJ1Y3QgYXhzcGlfZGF0YSAqYXhf c3BpKQo+ICt7Cj4gKwl1OCB0eF9idWY7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXR4X2J1ZiA9IEFY X1NQSUNNRF9FWElUX1BXRDsJLyogT1AgKi8KPiArCXJldCA9IHNwaV93cml0ZShheF9zcGktPnNw aSwgJnR4X2J1ZiwgMSk7Cj4gKwlpZiAocmV0KQo+ICsJCWRldl9lcnIoJmF4X3NwaS0+c3BpLT5k ZXYsICIlcygpIGZhaWxlZDogcmV0ID0gJWRcbiIsIF9fZnVuY19fLCByZXQpOwo+ICsJcmV0dXJu IHJldDsKPiArfQo+ICsKPiAraW50IGF4c3BpX3JlYWRfc3RhdHVzKGNvbnN0IHN0cnVjdCBheHNw aV9kYXRhICpheF9zcGksIHN0cnVjdCBzcGlfc3RhdHVzICpzdGF0dXMpCj4gK3sKPiArCXU4IHR4 X2J1ZjsKPiArCWludCByZXQ7Cj4gKwo+ICsJLyogT1AgKi8KPiArCXR4X2J1ZiA9IEFYX1NQSUNN RF9SRUFEX1NUQVRVUzsKPiArCXJldCA9IHNwaV93cml0ZV90aGVuX3JlYWQoYXhfc3BpLT5zcGks ICZ0eF9idWYsIDEsICh1OCAqKSZzdGF0dXMsIDMpOwo+ICsJaWYgKHJldCkKPiArCQlkZXZfZXJy KCZheF9zcGktPnNwaS0+ZGV2LCAiJXMoKSBmYWlsZWQ6IHJldCA9ICVkXG4iLCBfX2Z1bmNfXywg cmV0KTsKPiArCWVsc2UKPiArCQlsZTE2X3RvX2NwdXMoJnN0YXR1cy0+aXNyKTsKPiArCj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtpbnQgYXhzcGlfcmVhZF9yeHEoc3RydWN0IGF4c3BpX2Rh dGEgKmF4X3NwaSwgdm9pZCAqZGF0YSwgaW50IGxlbikKPiArewo+ICsJc3RydWN0IHNwaV90cmFu c2ZlciAqeGZlciA9IGF4X3NwaS0+c3BpX3J4X3hmZXI7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW1l bWNweShheF9zcGktPmNtZF9idWYsIHJ4X2NtZF9idWYsIDUpOwo+ICsKPiArCXhmZXItPnR4X2J1 ZiA9IGF4X3NwaS0+Y21kX2J1ZjsKPiArCXhmZXItPnJ4X2J1ZiA9IE5VTEw7Cj4gKwl4ZmVyLT5s ZW4gPSBheF9zcGktPmNvbXAgPyAyIDogNTsKPiArCXhmZXItPmJpdHNfcGVyX3dvcmQgPSA4Owo+ ICsJc3BpX21lc3NhZ2VfYWRkX3RhaWwoeGZlciwgJmF4X3NwaS0+cnhfbXNnKTsKPiArCj4gKwl4 ZmVyKys7Cj4gKwl4ZmVyLT5yeF9idWYgPSBkYXRhOwo+ICsJeGZlci0+dHhfYnVmID0gTlVMTDsK PiArCXhmZXItPmxlbiA9IGxlbjsKPiArCXhmZXItPmJpdHNfcGVyX3dvcmQgPSA4Owo+ICsJc3Bp X21lc3NhZ2VfYWRkX3RhaWwoeGZlciwgJmF4X3NwaS0+cnhfbXNnKTsKPiArCXJldCA9IHNwaV9z eW5jKGF4X3NwaS0+c3BpLCAmYXhfc3BpLT5yeF9tc2cpOwo+ICsJaWYgKHJldCkKPiArCQlkZXZf ZXJyKCZheF9zcGktPnNwaS0+ZGV2LCAiJXMoKSBmYWlsZWQ6IHJldCA9ICVkXG4iLCBfX2Z1bmNf XywgcmV0KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtpbnQgYXhzcGlfd3JpdGVf dHhxKGNvbnN0IHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHZvaWQgKmRhdGEsIGludCBsZW4p Cj4gK3sKPiArCXJldHVybiBzcGlfd3JpdGUoYXhfc3BpLT5zcGksIGRhdGEsIGxlbik7Cj4gK30K PiArCj4gK3UxNiBheHNwaV9yZWFkX3JlZyhjb25zdCBzdHJ1Y3QgYXhzcGlfZGF0YSAqYXhfc3Bp LCB1OCByZWcpCj4gK3sKPiArCXU4IHR4X2J1Zls0XTsKPiArCXUxNiByeF9idWYgPSAwOwo+ICsJ aW50IHJldDsKPiArCWludCBsZW4gPSBheF9zcGktPmNvbXAgPyAzIDogNDsKPiArCj4gKwl0eF9i dWZbMF0gPSAweDAzOwkvKiBPUCBjb2RlIHJlYWQgcmVnaXN0ZXIgKi8KPiArCXR4X2J1ZlsxXSA9 IHJlZzsJLyogcmVnaXN0ZXIgYWRkcmVzcyAqLwo+ICsJdHhfYnVmWzJdID0gMHhGRjsJLyogZHVt eSBjeWNsZSAqLwo+ICsJdHhfYnVmWzNdID0gMHhGRjsJLyogZHVteSBjeWNsZSAqLwo+ICsJcmV0 ID0gc3BpX3dyaXRlX3RoZW5fcmVhZChheF9zcGktPnNwaSwgdHhfYnVmLCBsZW4sICh1OCAqKSZy eF9idWYsIDIpOwo+ICsJaWYgKHJldCkKPiArCQlkZXZfZXJyKCZheF9zcGktPnNwaS0+ZGV2LCAi JXMoKSBmYWlsZWQ6IHJldCA9ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKPiArCWVsc2UKPiArCQls ZTE2X3RvX2NwdXMoJnJ4X2J1Zik7Cj4gKwo+ICsJcmV0dXJuIHJ4X2J1ZjsKPiArfQo+ICsKPiAr aW50IGF4c3BpX3dyaXRlX3JlZyhjb25zdCBzdHJ1Y3QgYXhzcGlfZGF0YSAqYXhfc3BpLCB1OCBy ZWcsIHUxNiB2YWx1ZSkKPiArewo+ICsJdTggdHhfYnVmWzRdOwo+ICsJaW50IHJldDsKPiArCj4g Kwl0eF9idWZbMF0gPSBBWF9TUElDTURfV1JJVEVfUkVHOwkvKiBPUCBjb2RlIHJlYWQgcmVnaXN0 ZXIgKi8KPiArCXR4X2J1ZlsxXSA9IHJlZzsJCQkvKiByZWdpc3RlciBhZGRyZXNzICovCj4gKwl0 eF9idWZbMl0gPSB2YWx1ZTsKPiArCXR4X2J1ZlszXSA9IHZhbHVlID4+IDg7Cj4gKwo+ICsJcmV0 ID0gc3BpX3dyaXRlKGF4X3NwaS0+c3BpLCB0eF9idWYsIDQpOwo+ICsJaWYgKHJldCkKPiArCQlk ZXZfZXJyKCZheF9zcGktPnNwaS0+ZGV2LCAiJXMoKSBmYWlsZWQ6IHJldCA9ICVkXG4iLCBfX2Z1 bmNfXywgcmV0KTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfc3BpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9hc2l4L2F4ODg3OTZjX3NwaS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjdhNDkyMDVjMmNmYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX3NwaS5oCj4gQEAgLTAsMCArMSw2OSBAQAo+ICsvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCj4gKy8qCj4gKyAqIENvcHly aWdodCAoYykgMjAxMCBBU0lYIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCj4gKyAqIENvcHlyaWdo dCAoYykgMjAyMCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgo+ICsgKgo+ICsgKiBBU0lY IEFYODg3OTZDIFNQSSBGYXN0IEV0aGVybmV0IExpbnV4IGRyaXZlcgo+ICsgKi8KPiArCj4gKyNp Zm5kZWYgX0FYODg3OTZDX1NQSV9ICj4gKyNkZWZpbmUgX0FYODg3OTZDX1NQSV9ICj4gKwo+ICsj aW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgo+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiAr Cj4gKy8qIERlZmluaXRpb24gb2YgU1BJIGNvbW1hbmQgKi8KPiArI2RlZmluZSBBWF9TUElDTURf V1JJVEVfVFhRCQkweDAyCj4gKyNkZWZpbmUgQVhfU1BJQ01EX1JFQURfUkVHCQkweDAzCj4gKyNk ZWZpbmUgQVhfU1BJQ01EX1JFQURfU1RBVFVTCQkweDA1Cj4gKyNkZWZpbmUgQVhfU1BJQ01EX1JF QURfUlhRCQkweDBCCj4gKyNkZWZpbmUgQVhfU1BJQ01EX0JJRElSX1dSUQkJMHhCMgo+ICsjZGVm aW5lIEFYX1NQSUNNRF9XUklURV9SRUcJCTB4RDgKPiArI2RlZmluZSBBWF9TUElDTURfRVhJVF9Q V0QJCTB4QUIKPiArCj4gK3N0YXRpYyBjb25zdCB1OCByeF9jbWRfYnVmWzVdID0ge0FYX1NQSUNN RF9SRUFEX1JYUSwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRn07Cj4gK3N0YXRpYyBjb25zdCB1OCB0 eF9jbWRfYnVmWzRdID0ge0FYX1NQSUNNRF9XUklURV9UWFEsIDB4RkYsIDB4RkYsIDB4RkZ9Owo+ ICsKPiArc3RydWN0IGF4c3BpX2RhdGEgewo+ICsJc3RydWN0IHNwaV9kZXZpY2UJKnNwaTsKPiAr CXN0cnVjdCBzcGlfbWVzc2FnZQlyeF9tc2c7Cj4gKwlzdHJ1Y3Qgc3BpX3RyYW5zZmVyCXNwaV9y eF94ZmVyWzJdOwo+ICsJdTgJCQljbWRfYnVmWzZdOwo+ICsJdTgJCQljb21wOwo+ICt9Owo+ICsK PiArc3RydWN0IHNwaV9zdGF0dXMgewo+ICsJdTE2IGlzcjsKPiArCXU4IHN0YXR1czsKPiArIwlk ZWZpbmUgQVhfU1RBVFVTX1JFQURZCQkweDgwCj4gK307Cj4gKwo+ICtpbnQgYXhzcGlfcmVhZF9y eHEoc3RydWN0IGF4c3BpX2RhdGEgKmF4X3NwaSwgdm9pZCAqZGF0YSwgaW50IGxlbik7Cj4gK2lu dCBheHNwaV93cml0ZV90eHEoY29uc3Qgc3RydWN0IGF4c3BpX2RhdGEgKmF4X3NwaSwgdm9pZCAq ZGF0YSwgaW50IGxlbik7Cj4gK3UxNiBheHNwaV9yZWFkX3JlZyhjb25zdCBzdHJ1Y3QgYXhzcGlf ZGF0YSAqYXhfc3BpLCB1OCByZWcpOwo+ICtpbnQgYXhzcGlfd3JpdGVfcmVnKGNvbnN0IHN0cnVj dCBheHNwaV9kYXRhICpheF9zcGksIHU4IHJlZywgdTE2IHZhbHVlKTsKPiAraW50IGF4c3BpX3Jl YWRfc3RhdHVzKGNvbnN0IHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHN0cnVjdCBzcGlfc3Rh dHVzICpzdGF0dXMpOwo+ICtpbnQgYXhzcGlfd2FrZXVwKGNvbnN0IHN0cnVjdCBheHNwaV9kYXRh ICpheF9zcGkpOwo+ICsKPiArc3RhdGljIGlubGluZSB1MTYgQVhfUkVBRChjb25zdCBzdHJ1Y3Qg YXhzcGlfZGF0YSAqYXhfc3BpLCB1OCBvZmZzZXQpCj4gK3sKPiArCXJldHVybiBheHNwaV9yZWFk X3JlZyhheF9zcGksIG9mZnNldCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IEFYX1dS SVRFKGNvbnN0IHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHUxNiB2YWx1ZSwgdTggb2Zmc2V0 KQo+ICt7Cj4gKwlyZXR1cm4gYXhzcGlfd3JpdGVfcmVnKGF4X3NwaSwgb2Zmc2V0LCB2YWx1ZSk7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IEFYX1JFQURfU1RBVFVTKGNvbnN0IHN0cnVj dCBheHNwaV9kYXRhICpheF9zcGksCj4gKwkJCQkgc3RydWN0IHNwaV9zdGF0dXMgKnN0YXR1cykK PiArewo+ICsJcmV0dXJuIGF4c3BpX3JlYWRfc3RhdHVzKGF4X3NwaSwgc3RhdHVzKTsKPiArfQo+ ICsKPiArc3RhdGljIGlubGluZSBpbnQgQVhfV0FLRVVQKHN0cnVjdCBheHNwaV9kYXRhICpheF9z cGkpCj4gK3sKPiArCXJldHVybiBheHNwaV93YWtldXAoYXhfc3BpKTsKPiArfQo+ICsjZW5kaWYK PiArCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=