From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 545DAC3ABC9 for ; Thu, 15 May 2025 07:55:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WXEnN6FDDsvS8pIUJPie3D3ij6gnWDv4OrjEuhH+cJY=; b=OpvCRRplSq50Z7 NB0qfDnbG5dE5P/ZqH8feCPuBOmc73YKC6sG5QGick0IueinLFJpJhZqHrgDL1kwSOMSPL4ZuUPN+ wuXIa6nnx7reonlocmzJNOt+zInaHdLJrbZk6nRIejDb3hdrmoeXlDnAO6fDcHt+wH7OKaojNpFK9 gLUB2dboLNwOIvuBsaidIioGOCEOixG27gym/empD+gCL3funImALUcFpcsLHKBubE3xytn0WwqqI 8wZsK1pO9rS3bpyBSwX9BXrWgxIXK3Tn62AyycCwIEv2X6DKE62dNLVwIOhC7CrerS67T0GQfU9Nb EcTKxsHny7Tsr5MalTyg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uFTQg-0000000HQAg-35Pw; Thu, 15 May 2025 07:54:58 +0000 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uFTOk-0000000HPhq-0ISa for linux-mtd@lists.infradead.org; Thu, 15 May 2025 07:52:59 +0000 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-736c277331eso1567252b3a.1 for ; Thu, 15 May 2025 00:52:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1747295577; x=1747900377; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=IvNR65OMpeku0Lr1LhMN0RPeuqeI1QVzpCtc/xjP3nc=; b=QGbcJGOfbZPFg+cUbGlCbZ5ZbFc9C6WjdC7xZfKKL21WZ3dOckigGYZFUCZx8HEtN9 wsbjj4SdRNa6m2PtpNuSo/QFAiDqh3ecFHVJzp62je7TrGYb0dkLbhlDHkRY15LPBXse m3ZoPFVUxx7J1N5rCWAyuRTPrxh0TfyhH0Jt4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747295577; x=1747900377; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=IvNR65OMpeku0Lr1LhMN0RPeuqeI1QVzpCtc/xjP3nc=; b=r7sW2d0yIEKkRbTk1/QDkNAJSwcOa+hXrbCghNVCgyqPnUVRnfqDOefXbqB/i4rUJ1 vCAO/Sh+biWlq3MHWidfoh8M6H7mFnXNL92iLagUBS+LGxnDXECM9GB1wytaDZQQM4Py sp6ObgFKo/sf032lxHMhh+nF8Lw2Jsc88O93XCa+ghxS7mvfDMBqIDQBryBf4V4uE5NR DcF8SHL/95k89zPGng11EtdoVyHSNKceXYd7ZbaphfW5H44eoob4+iNbvpC2yy/sMuSk W0GN5L9WXmZN0NjFiMEY3Wo1g/hjk9m883ULyCkNeoXe386aCQwjhzT+sa4xBr8VF9mB 0mBg== X-Gm-Message-State: AOJu0YwQM+ZjHM9qQV6U1hrXCaSuhiMd9OcyG++8SWtbLdmllikTuonI HDEwAQ9youzSIUY5z1gv9Rm4d2zzgehnElh40XLgTh8PGT+WQ0Q+3IYaq4Y6rg== X-Gm-Gg: ASbGncvQWF7Fw+Bf90ZrlM2NmVaoN6iPC6/RdPuycuTtYxV+0Skb8eI75YrgXOqjalA GoPkl7C7kfuSw7fiAd3kFo3sX5/DMrgvcE/TY0z7337uDyg6Vus1v9frg4VC7sSdgQhJtgw8ZXq dyi5zZsy09ETz8DKkl8zIgMXf5MO6f5JVtZkUL4N9YTMRepKsG2U80rGhPSFK53/6+rlQDO1+bF szynG98teGELkwqKH4gO2K5NghywaYGzPMaSlgLJWbKzkvDSr0B3Q5Yue2JOWXPtCqPleF1ROnw 7PJtfvAljDCUAuPP81Ki2fF/eZzPYCbgloxdkvEmE9MVE/rqtx0i81Js4ym6wOsIM8E75RiOOnz YIiDYv8THqhUsrVEx0l1aaJIYwyVDIguCUDW/2IaqOJ8eGoxo0A== X-Google-Smtp-Source: AGHT+IFSpZxUm3nW0rV/eSnFpka7GR4cBly2hIHCiYL6L0EnhwUuDXWXIzI5q61JAKvaPMUb4XrxJQ== X-Received: by 2002:a17:903:904:b0:215:ba2b:cd55 with SMTP id d9443c01a7336-231b3970aedmr36537915ad.2.1747295576724; Thu, 15 May 2025 00:52:56 -0700 (PDT) Received: from [192.168.48.133] (mobile-166-176-123-50.mycingular.net. [166.176.123.50]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22fc8271f61sm109996575ad.142.2025.05.15.00.52.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 15 May 2025 00:52:55 -0700 (PDT) Message-ID: <1cc01fd7-79fd-462d-923e-5ff0bf61b489@broadcom.com> Date: Thu, 15 May 2025 09:52:46 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3] mtd: rawnand: brcmnand: legacy exec_op implementation To: =?UTF-8?Q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= , William Zhang Cc: linux-mtd@lists.infradead.org, dregan@broadcom.com, miquel.raynal@bootlin.com, bcm-kernel-feedback-list@broadcom.com, rafal@milecki.pl, computersforpeace@gmail.com, Kamal Dasu , Dan Beygelman , frieder.schrempf@kontron.de, linux-kernel@vger.kernel.org, vigneshr@ti.com, richard@nod.at, bbrezillon@kernel.org, kdasu.kdev@gmail.com, jaimeliao.tw@gmail.com, kilobyte@angband.pl, jonas.gorski@gmail.com, dgcbueu@gmail.com References: <20250514062341.774919-1-noltari@gmail.com> Content-Language: en-US From: Florian Fainelli Autocrypt: addr=florian.fainelli@broadcom.com; keydata= xsBNBFPAG8ABCAC3EO02urEwipgbUNJ1r6oI2Vr/+uE389lSEShN2PmL3MVnzhViSAtrYxeT M0Txqn1tOWoIc4QUl6Ggqf5KP6FoRkCrgMMTnUAINsINYXK+3OLe7HjP10h2jDRX4Ajs4Ghs JrZOBru6rH0YrgAhr6O5gG7NE1jhly+EsOa2MpwOiXO4DE/YKZGuVe6Bh87WqmILs9KvnNrQ PcycQnYKTVpqE95d4M824M5cuRB6D1GrYovCsjA9uxo22kPdOoQRAu5gBBn3AdtALFyQj9DQ KQuc39/i/Kt6XLZ/RsBc6qLs+p+JnEuPJngTSfWvzGjpx0nkwCMi4yBb+xk7Hki4kEslABEB AAHNMEZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4uZmFpbmVsbGlAYnJvYWRjb20uY29tPsLB IQQQAQgAywUCZWl41AUJI+Jo+hcKAAG/SMv+fS3xUQWa0NryPuoRGjsA3SAUAAAAAAAWAAFr ZXktdXNhZ2UtbWFza0BwZ3AuY29tjDAUgAAAAAAgAAdwcmVmZXJyZWQtZW1haWwtZW5jb2Rp bmdAcGdwLmNvbXBncG1pbWUICwkIBwMCAQoFF4AAAAAZGGxkYXA6Ly9rZXlzLmJyb2FkY29t Lm5ldAUbAwAAAAMWAgEFHgEAAAAEFQgJChYhBNXZKpfnkVze1+R8aIExtcQpvGagAAoJEIEx tcQpvGagWPEH/2l0DNr9QkTwJUxOoP9wgHfmVhqc0ZlDsBFv91I3BbhGKI5UATbipKNqG13Z TsBrJHcrnCqnTRS+8n9/myOF0ng2A4YT0EJnayzHugXm+hrkO5O9UEPJ8a+0553VqyoFhHqA zjxj8fUu1px5cbb4R9G4UAySqyeLLeqnYLCKb4+GklGSBGsLMYvLmIDNYlkhMdnnzsSUAS61 WJYW6jjnzMwuKJ0ZHv7xZvSHyhIsFRiYiEs44kiYjbUUMcXor/uLEuTIazGrE3MahuGdjpT2 IOjoMiTsbMc0yfhHp6G/2E769oDXMVxCCbMVpA+LUtVIQEA+8Zr6mX0Yk4nDS7OiBlvOwE0E U8AbwQEIAKxr71oqe+0+MYCc7WafWEcpQHFUwvYLcdBoOnmJPxDwDRpvU5LhqSPvk/yJdh9k 4xUDQu3rm1qIW2I9Puk5n/Jz/lZsqGw8T13DKyu8eMcvaA/irm9lX9El27DPHy/0qsxmxVmU pu9y9S+BmaMb2CM9IuyxMWEl9ruWFS2jAWh/R8CrdnL6+zLk60R7XGzmSJqF09vYNlJ6Bdbs MWDXkYWWP5Ub1ZJGNJQ4qT7g8IN0qXxzLQsmz6tbgLMEHYBGx80bBF8AkdThd6SLhreCN7Uh IR/5NXGqotAZao2xlDpJLuOMQtoH9WVNuuxQQZHVd8if+yp6yRJ5DAmIUt5CCPcAEQEAAcLB gQQYAQIBKwUCU8AbwgUbDAAAAMBdIAQZAQgABgUCU8AbwQAKCRCTYAaomC8PVQ0VCACWk3n+ obFABEp5Rg6Qvspi9kWXcwCcfZV41OIYWhXMoc57ssjCand5noZi8bKg0bxw4qsg+9cNgZ3P N/DFWcNKcAT3Z2/4fTnJqdJS//YcEhlr8uGs+ZWFcqAPbteFCM4dGDRruo69IrHfyyQGx16s CcFlrN8vD066RKevFepb/ml7eYEdN5SRALyEdQMKeCSf3mectdoECEqdF/MWpfWIYQ1hEfdm C2Kztm+h3Nkt9ZQLqc3wsPJZmbD9T0c9Rphfypgw/SfTf2/CHoYVkKqwUIzI59itl5Lze+R5 wDByhWHx2Ud2R7SudmT9XK1e0x7W7a5z11Q6vrzuED5nQvkhAAoJEIExtcQpvGagugcIAJd5 EYe6KM6Y6RvI6TvHp+QgbU5dxvjqSiSvam0Ms3QrLidCtantcGT2Wz/2PlbZqkoJxMQc40rb fXa4xQSvJYj0GWpadrDJUvUu3LEsunDCxdWrmbmwGRKqZraV2oG7YEddmDqOe0Xm/NxeSobc MIlnaE6V0U8f5zNHB7Y46yJjjYT/Ds1TJo3pvwevDWPvv6rdBeV07D9s43frUS6xYd1uFxHC 7dZYWJjZmyUf5evr1W1gCgwLXG0PEi9n3qmz1lelQ8lSocmvxBKtMbX/OKhAfuP/iIwnTsww 95A2SaPiQZA51NywV8OFgsN0ITl2PlZ4Tp9hHERDe6nQCsNI/Us= In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250515_005258_154615_E0F26449 X-CRM114-Status: GOOD ( 22.15 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org CgpPbiA1LzE1LzIwMjUgNzowNiBBTSwgw4FsdmFybyBGZXJuw6FuZGV6IFJvamFzIHdyb3RlOgo+ IEhpIFdpbGxpYW0KPiAKPiBFbCBqdWUsIDE1IG1heSAyMDI1IGEgbGFzIDM6NDIsIFdpbGxpYW0g WmhhbmcKPiAoPHdpbGxpYW0uemhhbmdAYnJvYWRjb20uY29tPikgZXNjcmliacOzOgo+Pgo+PiBI aSBBbHZhcm8sCj4+Cj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+Pj4gRnJvbTogw4Fs dmFybyBGZXJuw6FuZGV6IFJvamFzIDxub2x0YXJpQGdtYWlsLmNvbT4KPj4+IFNlbnQ6IFR1ZXNk YXksIE1heSAxMywgMjAyNSAxMToyNCBQTQo+Pj4gVG86IGxpbnV4LW10ZEBsaXN0cy5pbmZyYWRl YWQub3JnOyBkcmVnYW5AYnJvYWRjb20uY29tOwo+Pj4gbWlxdWVsLnJheW5hbEBib290bGluLmNv bTsgYmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbTsKPj4+IGZsb3JpYW4uZmFp bmVsbGlAYnJvYWRjb20uY29tOyByYWZhbEBtaWxlY2tpLnBsOwo+Pj4gY29tcHV0ZXJzZm9ycGVh Y2VAZ21haWwuY29tOyBrYW1hbC5kYXN1QGJyb2FkY29tLmNvbTsKPj4+IGRhbi5iZXlnZWxtYW5A YnJvYWRjb20uY29tOyB3aWxsaWFtLnpoYW5nQGJyb2FkY29tLmNvbTsKPj4+IGZyaWVkZXIuc2No cmVtcGZAa29udHJvbi5kZTsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsKPj4+IHZpZ25l c2hyQHRpLmNvbTsKPj4+IHJpY2hhcmRAbm9kLmF0OyBiYnJlemlsbG9uQGtlcm5lbC5vcmc7IGtk YXN1LmtkZXZAZ21haWwuY29tOwo+Pj4gamFpbWVsaWFvLnR3QGdtYWlsLmNvbTsga2lsb2J5dGVA YW5nYmFuZC5wbDsgam9uYXMuZ29yc2tpQGdtYWlsLmNvbTsKPj4+IGRnY2J1ZXVAZ21haWwuY29t Cj4+PiBDYzogw4FsdmFybyBGZXJuw6FuZGV6IFJvamFzIDxub2x0YXJpQGdtYWlsLmNvbT4KPj4+ IFN1YmplY3Q6IFtQQVRDSCB2M10gbXRkOiByYXduYW5kOiBicmNtbmFuZDogbGVnYWN5IGV4ZWNf b3AgaW1wbGVtZW50YXRpb24KPj4+Cj4+PiBDb21taXQgM2M4MjYwY2U3NjYzICgibXRkOiByYXdu YW5kOiBicmNtbmFuZDogZXhlY19vcCBpbXBsZW1lbnRhdGlvbiIpCj4+PiByZW1vdmVkIGxlZ2Fj eSBpbnRlcmZhY2UgZnVuY3Rpb25zLCBicmVha2luZyA8IHY1LjAgY29udHJvbGxlcnMgc3VwcG9y dC4KPj4+IEluIG9yZGVyIHRvIGZpeCBvbGRlciBjb250cm9sbGVycyB3ZSBuZWVkIHRvIGFkZCBh biBhbHRlcm5hdGl2ZSBleGVjX29wCj4+PiBpbXBsZW1lbnRhdGlvbiB3aGljaCBkb2Vzbid0IHJl bHkgb24gbG93IGxldmVsIHJlZ2lzdGVycy4KPj4+Cj4+PiBGaXhlczogM2M4MjYwY2U3NjYzICgi bXRkOiByYXduYW5kOiBicmNtbmFuZDogZXhlY19vcCBpbXBsZW1lbnRhdGlvbiIpCj4+PiBTaWdu ZWQtb2ZmLWJ5OiDDgWx2YXJvIEZlcm7DoW5kZXogUm9qYXMgPG5vbHRhcmlAZ21haWwuY29tPgo+ Pj4gLS0tCj4+PiAgIGRyaXZlcnMvbXRkL25hbmQvcmF3L2JyY21uYW5kL2JyY21uYW5kLmMgfCAx NzgKPj4+ICsrKysrKysrKysrKysrKysrKysrKystCj4+PiAgIDEgZmlsZSBjaGFuZ2VkLCAxNzIg aW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPj4+Cj4+PiAgIHYzOiBhZGQgY2hhbmdlcyBy ZXF1ZXN0ZWQgYnkgRmxvcmlhbiBhbmQgb3RoZXIgaW1wcm92ZW1lbnRzOgo+Pj4gICAgLSBBZGQg YXNzb2NpYXRpdmUgYXJyYXkgZm9yIG5hdGl2ZSBjb21tYW5kIGNvbnZlcnNpb24uCj4+PiAgICAt IEFkZCBmdW5jdGlvbiBwb2ludGVyIHRvIGJyY21uYW5kX2NvbnRyb2xsZXIgZm9yIGV4ZWNfaW5z dHIKPj4+ICAgICAgZnVuY3Rpb25hbGl0eS4KPj4+ICAgIC0gRml4IENNRF9CTE9DS19FUkFTRSBh ZGRyZXNzLgo+Pj4gICAgLSBEcm9wIE5BTkRfQ01EX1JFQURPT0Igc3VwcG9ydC4KPj4+Cj4+PiAg IHYyOiBtdWx0aXBsZSBpbXByb3ZlbWVudHM6Cj4+PiAgICAtIFVzZSBwcm9wZXIgbmF0aXZlIGNv bW1hbmRzIGZvciBjaGVja3MuCj4+PiAgICAtIEZpeCBOQU5EX0NNRF9QQVJBTS9OQU5EX0NNRF9S TkRPVVQgYWRkciBjYWxjdWxhdGlvbi4KPj4+ICAgIC0gUmVtb3ZlIGhvc3QtPmxhc3RfYWRkciB1 c2FnZS4KPj4+ICAgIC0gUmVtb3ZlIHNlY3Rvcl9zaXplXzFrIHNpbmNlIGl0IG9ubHkgYXBwbGll cyB0byB2NS4wKyBjb250cm9sbGVycy4KPj4+ICAgIC0gUmVtb3ZlIGJyY21uYW5kX3dwIHNpbmNl IGl0IGRvZXNuJ3QgZXhpc3QgZm9yIDwgdjUuMCBjb250cm9sbGVycy4KPj4+ICAgIC0gVXNlIGog aW5zdGVhZCBvZiBpIGZvciBmbGFzaF9jYWNoZSBsb29wLgo+Pj4KPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL210ZC9uYW5kL3Jhdy9icmNtbmFuZC9icmNtbmFuZC5jCj4+PiBiL2RyaXZlcnMvbXRk L25hbmQvcmF3L2JyY21uYW5kL2JyY21uYW5kLmMKPj4+IGluZGV4IDE3ZjZkOTcyM2RmOS4uZjRm YWJlN2ZmZDlkIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvYnJjbW5hbmQv YnJjbW5hbmQuYwo+Pj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvYnJjbW5hbmQvYnJjbW5h bmQuYwo+Pj4gQEAgLTY1LDYgKzY1LDcgQEAgbW9kdWxlX3BhcmFtKHdwX29uLCBpbnQsIDA0NDQp Owo+Pj4gICAjZGVmaW5lIENNRF9QQVJBTUVURVJfUkVBRCAgICAgICAgICAgMHgwZQo+Pj4gICAj ZGVmaW5lIENNRF9QQVJBTUVURVJfQ0hBTkdFX0NPTCAgICAgMHgwZgo+Pj4gICAjZGVmaW5lIENN RF9MT1dfTEVWRUxfT1AgICAgICAgICAgICAgMHgxMAo+Pj4gKyNkZWZpbmUgQ01EX05PVF9TVVBQ T1JURUQgICAgICAgICAgICAweGZmCj4+Pgo+Pj4gICBzdHJ1Y3QgYnJjbV9uYW5kX2RtYV9kZXNj IHsKPj4+ICAgICAgICB1MzIgbmV4dF9kZXNjOwo+Pj4gQEAgLTE5OSw2ICsyMDAsMzAgQEAgc3Rh dGljIGNvbnN0IHUxNiBmbGFzaF9kbWFfcmVnc192NFtdID0gewo+Pj4gICAgICAgIFtGTEFTSF9E TUFfQ1VSUkVOVF9ERVNDX0VYVF0gICAgPSAweDM0LAo+Pj4gICB9Owo+Pj4KPj4+ICsvKiBOYXRp dmUgY29tbWFuZCBjb252ZXJzaW9uICovCj4+PiArc3RhdGljIGNvbnN0IHU4IG5hdGl2ZV9jbWRf Y29udltdID0gewo+Pj4gKyAgICAgW05BTkRfQ01EX1JFQUQwXSAgICAgICAgPSBDTURfTk9UX1NV UFBPUlRFRCwKPj4+ICsgICAgIFtOQU5EX0NNRF9SRUFEMV0gICAgICAgID0gQ01EX05PVF9TVVBQ T1JURUQsCj4+PiArICAgICBbTkFORF9DTURfUk5ET1VUXSAgICAgICA9IENNRF9QQVJBTUVURVJf Q0hBTkdFX0NPTCwKPj4+ICsgICAgIFtOQU5EX0NNRF9QQUdFUFJPR10gICAgID0gQ01EX05PVF9T VVBQT1JURUQsCj4+PiArICAgICBbTkFORF9DTURfUkVBRE9PQl0gICAgICA9IENNRF9OT1RfU1VQ UE9SVEVELAo+Pj4gKyAgICAgW05BTkRfQ01EX0VSQVNFMV0gICAgICAgPSBDTURfQkxPQ0tfRVJB U0UsCj4+PiArICAgICBbTkFORF9DTURfU1RBVFVTXSAgICAgICA9IENNRF9OT1RfU1VQUE9SVEVE LAo+PiBEbyB3ZSBub3QgbmVlZCB0byBzdXBwb3J0IG5hbmRfc3RhdHVzX29wKCk/Cj4gCj4gV2Ug ZG8sIGJ1dCBOQU5EX0NNRF9TVEFUVVMgYW5kIE5BTkRfQ01EX1JFU0VUIGFyZSBoYW5kbGVkIGlu IGJyY21uYW5kX2V4ZWNfb3AoKToKPiBodHRwczovL2dpdGh1Yi5jb20vdG9ydmFsZHMvbGludXgv YmxvYi81NDZiY2U1NzkyMDQ2ODVhMGIyMDRiZWViYWI5OGMzYWE0OTZlNjUxL2RyaXZlcnMvbXRk L25hbmQvcmF3L2JyY21uYW5kL2JyY21uYW5kLmMjTDI1MDYtTDI1MjMKPiAKPiAKPiAKPj4KPj4+ ICsgICAgIFtOQU5EX0NNRF9TRVFJTl0gICAgICAgID0gQ01EX05PVF9TVVBQT1JURUQsCj4+PiAr ICAgICBbTkFORF9DTURfUk5ESU5dICAgICAgICA9IENNRF9OT1RfU1VQUE9SVEVELAo+Pj4gKyAg ICAgW05BTkRfQ01EX1JFQURJRF0gICAgICAgPSBDTURfREVWSUNFX0lEX1JFQUQsCj4+PiArICAg ICBbTkFORF9DTURfRVJBU0UyXSAgICAgICA9IENNRF9OVUxMLAo+Pj4gKyAgICAgW05BTkRfQ01E X1BBUkFNXSAgICAgICAgPSBDTURfUEFSQU1FVEVSX1JFQUQsCj4+PiArICAgICBbTkFORF9DTURf R0VUX0ZFQVRVUkVTXSA9IENNRF9OT1RfU1VQUE9SVEVELAo+Pj4gKyAgICAgW05BTkRfQ01EX1NF VF9GRUFUVVJFU10gPSBDTURfTk9UX1NVUFBPUlRFRCwKPj4+ICsgICAgIFtOQU5EX0NNRF9SRVNF VF0gICAgICAgID0gQ01EX05PVF9TVVBQT1JURUQsCj4+PiArICAgICBbTkFORF9DTURfUkVBRFNU QVJUXSAgICA9IENNRF9OT1RfU1VQUE9SVEVELAo+Pj4gKyAgICAgW05BTkRfQ01EX1JFQURDQUNI RVNFUV0gPSBDTURfTk9UX1NVUFBPUlRFRCwKPj4+ICsgICAgIFtOQU5EX0NNRF9SRUFEQ0FDSEVF TkRdID0gQ01EX05PVF9TVVBQT1JURUQsCj4+PiArICAgICBbTkFORF9DTURfUk5ET1VUU1RBUlRd ICA9IENNRF9OVUxMLAo+Pj4gKyAgICAgW05BTkRfQ01EX0NBQ0hFRFBST0ddICAgPSBDTURfTk9U X1NVUFBPUlRFRCwKPj4+ICt9Owo+Pj4gKwo+Pj4gICAvKiBDb250cm9sbGVyIGZlYXR1cmUgZmxh Z3MgKi8KPj4+ICAgZW51bSB7Cj4+PiAgICAgICAgQlJDTU5BTkRfSEFTXzFLX1NFQ1RPUlMgICAg ICAgICAgICAgICAgID0gQklUKDApLAo+Pj4gQEAgLTIzNyw2ICsyNjIsMTAgQEAgc3RydWN0IGJy Y21uYW5kX2NvbnRyb2xsZXIgewo+Pj4gICAgICAgIC8qIExpc3Qgb2YgTkFORCBob3N0cyAob25l IGZvciBlYWNoIGNoaXAtc2VsZWN0KSAqLwo+Pj4gICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaG9z dF9saXN0Owo+Pj4KPj4+ICsgICAgIC8qIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmcm9tIGV4ZWNf b3AgKi8KPj4+ICsgICAgIGludCAoKmV4ZWNfaW5zdHIpKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAs Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbmFuZF9vcGVyYXRpb24g Km9wKTsKPj4+ICsKPj4+ICAgICAgICAvKiBFRFUgaW5mbywgcGVyLXRyYW5zYWN0aW9uICovCj4+ PiAgICAgICAgY29uc3QgdTE2ICAgICAgICAgICAgICAgKmVkdV9vZmZzZXRzOwo+Pj4gICAgICAg IHZvaWQgX19pb21lbSAgICAgICAgICAgICplZHVfYmFzZTsKPj4+IEBAIC0yNDkwLDE0ICsyNTE5 LDE0OSBAQCBzdGF0aWMgaW50IGJyY21uYW5kX29wX2lzX3Jlc2V0KGNvbnN0IHN0cnVjdAo+Pj4g bmFuZF9vcGVyYXRpb24gKm9wKQo+Pj4gICAgICAgIHJldHVybiAwOwo+Pj4gICB9Cj4+Pgo+Pj4g K3N0YXRpYyBpbnQgYnJjbW5hbmRfZXhlY19pbnN0cnVjdGlvbnMoc3RydWN0IG5hbmRfY2hpcCAq Y2hpcCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBuYW5kX29wZXJhdGlvbiAqb3ApCj4+PiArewo+Pj4gKyAgICAgc3RydWN0IGJyY21uYW5kX2hv c3QgKmhvc3QgPSBuYW5kX2dldF9jb250cm9sbGVyX2RhdGEoY2hpcCk7Cj4+PiArICAgICB1bnNp Z25lZCBpbnQgaTsKPj4+ICsgICAgIGludCByZXQgPSAwOwo+Pj4gKwo+Pj4gKyAgICAgZm9yIChp ID0gMDsgaSA8IG9wLT5uaW5zdHJzOyBpKyspIHsKPj4+ICsgICAgICAgICAgICAgcmV0ID0gYnJj bW5hbmRfZXhlY19pbnN0cihob3N0LCBpLCBvcCk7Cj4+PiArICAgICAgICAgICAgIGlmIChyZXQp Cj4+PiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+PiArICAgICB9Cj4+PiArCj4+PiAr ICAgICByZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGJyY21uYW5kX2V4 ZWNfaW5zdHJ1Y3Rpb25zX2xlZ2FjeShzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLAo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBuYW5kX29w ZXJhdGlvbiAqb3ApCj4+PiArewo+Pj4gKyAgICAgc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5k X3RvX210ZChjaGlwKTsKPj4+ICsgICAgIHN0cnVjdCBicmNtbmFuZF9ob3N0ICpob3N0ID0gbmFu ZF9nZXRfY29udHJvbGxlcl9kYXRhKGNoaXApOwo+Pj4gKyAgICAgc3RydWN0IGJyY21uYW5kX2Nv bnRyb2xsZXIgKmN0cmwgPSBob3N0LT5jdHJsOwo+Pj4gKyAgICAgY29uc3Qgc3RydWN0IG5hbmRf b3BfaW5zdHIgKmluc3RyOwo+Pj4gKyAgICAgdW5zaWduZWQgaW50IGksIGo7Cj4+PiArICAgICB1 OCBjbWQgPSBDTURfTlVMTCwgbGFzdF9jbWQgPSBDTURfTlVMTDsKPj4+ICsgICAgIGludCByZXQg PSAwOwo+Pj4gKyAgICAgdTY0IGxhc3RfYWRkcjsKPj4+ICsKPj4+ICsgICAgIGZvciAoaSA9IDA7 IGkgPCBvcC0+bmluc3RyczsgaSsrKSB7Cj4+PiArICAgICAgICAgICAgIGluc3RyID0gJm9wLT5p bnN0cnNbaV07Cj4+PiArCj4+PiArICAgICAgICAgICAgIGlmIChpbnN0ci0+dHlwZSA9PSBOQU5E X09QX0NNRF9JTlNUUikgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNtZCA9IG5hdGl2ZV9j bWRfY29udltpbnN0ci0+Y3R4LmNtZC5vcGNvZGVdOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAg IGlmIChjbWQgPT0gQ01EX05PVF9TVVBQT1JURUQpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRldl9lcnIoY3RybC0+ZGV2LCAidW5zdXBwb3J0ZWQgY21kPSVkXG4iLAo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ci0+Y3R4LmNtZC5vcGNv ZGUpOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVPUE5PVFNVUFA7 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICB9Cj4+PiArICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5zdHItPnR5cGUgPT0g TkFORF9PUF9BRERSX0lOU1RSKSB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgdTY0IGFkZHIg PSAwOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChjbWQgPT0gQ01EX05VTEwp Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4+ICsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmN0eC5hZGRyLm5hZGRycyA+IDgpIHsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoY3RybC0+ZGV2LCAidW5zdXBw b3J0ZWQgbmFkZHJzPSV1XG4iLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnN0ci0+Y3R4LmFkZHIubmFkZHJzKTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldCA9IC1FT1BOT1RTVVBQOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpbnN0ci0+Y3R4LmFkZHIubmFkZHJzOyBqKysp Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyIHw9IChpbnN0ci0+Y3R4LmFk ZHIuYWRkcnNbal0pIDw8IChqIDw8IDMpOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAg IGlmIChjbWQgPT0gQ01EX0JMT0NLX0VSQVNFKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWRkciA8PD0gY2hpcC0+cGFnZV9zaGlmdDsKPj4+ICsgICAgICAgICAgICAgICAgICAg ICBlbHNlIGlmIChjbWQgPT0gQ01EX1BBUkFNRVRFUl9DSEFOR0VfQ09MKQo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWRkciAmPSB+KCh1NjQpKEZDX0JZVEVTIC0gMSkpOwo+Pj4g Kwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGJyY21uYW5kX3NldF9jbWRfYWRkcihtdGQsIGFk ZHIpOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGJyY21uYW5kX3NlbmRfY21kKGhvc3QsIGNt ZCk7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgbGFzdF9hZGRyID0gYWRkcjsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICBsYXN0X2NtZCA9IGNtZDsKPj4+ICsgICAgICAgICAgICAgICAgICAg ICBjbWQgPSBDTURfTlVMTDsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBicmNtbmFuZF93YWl0 ZnVuYyhjaGlwKTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdF9jbWQg PT0gQ01EX1BBUkFNRVRFUl9SRUFEIHx8Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIGxh c3RfY21kID09IENNRF9QQVJBTUVURVJfQ0hBTkdFX0NPTCkgewo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogQ29weSBmbGFzaCBjYWNoZSB3b3JkLXdpc2UgKi8KPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiAqZmxhc2hfY2FjaGUgPSAodTMyICopY3RybC0+ Zmxhc2hfY2FjaGU7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmNt bmFuZF9zb2NfZGF0YV9idXNfcHJlcGFyZShjdHJsLT5zb2MsIHRydWUpOwo+Pj4gKwo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqIE11c3QgY2FjaGUgdGhlIEZMQVNIX0NBQ0hFIG5vdywgc2luY2UKPj4+IGNoYW5n ZXMgaW4KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNFQ1RPUl9TSVpFXzFL IG1heSBpbnZhbGlkYXRlIGl0Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBGQ19XT1JE UzsgaisrKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBGbGFzaCBjYWNoZSBpcyBi aWcgZW5kaWFuIGZvciBwYXJhbWV0ZXIKPj4+IHBhZ2VzLCBhdAo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKiBsZWFzdCBvbiBTVEIgU29Dcwo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmxhc2hfY2FjaGVbal0gPQo+Pj4gYmUzMl90b19jcHUoYnJjbW5h bmRfcmVhZF9mYyhjdHJsLCBqKSk7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmNtbmFuZF9zb2NfZGF0YV9idXNfdW5wcmVwYXJlKGN0cmwtPnNvYywKPj4+IHRydWUp Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH0KPj4+ICsgICAgICAgICAgICAgfSBlbHNlIGlm IChpbnN0ci0+dHlwZSA9PSBOQU5EX09QX0RBVEFfSU5fSU5TVFIpIHsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICB1OCAqaW4gPSBpbnN0ci0+Y3R4LmRhdGEuYnVmLmluOwo+Pj4gKwo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIGlmIChsYXN0X2NtZCA9PSBDTURfREVWSUNFX0lEX1JFQUQpIHsK Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiB2YWw7Cj4+PiArCj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmN0eC5kYXRhLmxlbiA+IDgpIHsK Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihjdHJsLT5k ZXYsICJ1bnN1cHBvcnRlZAo+Pj4gbGVuPSV1XG4iLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RyLT5jdHguZGF0YS5sZW4pOwo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAtRU9QTk9UU1VQUDsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgKGogPSAwOyBqIDwgaW5zdHItPmN0eC5kYXRhLmxlbjsgaisrKSB7Cj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqID09IDApCj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gYnJjbW5hbmRfcmVh ZF9yZWcoY3RybCwKPj4+IEJSQ01OQU5EX0lEKTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZWxzZSBpZiAoaiA9PSA0KQo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGJyY21uYW5kX3JlYWRfcmVnKGN0cmwsCj4+ PiBCUkNNTkFORF9JRF9FWFQpOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbltqXSA9ICh2YWwgPj4gKDI0IC0gKChqICUgNCkgPDwgMykpKSAmIDB4ZmY7 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4+PiArICAgICAgICAgICAgICAg ICAgICAgfSBlbHNlIGlmIChsYXN0X2NtZCA9PSBDTURfUEFSQU1FVEVSX1JFQUQgfHwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfY21kID09IENNRF9QQVJBTUVURVJf Q0hBTkdFX0NPTCkgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0IGFkZHI7 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgb2ZmczsKPj4+ICsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpbnN0ci0+Y3R4LmRh dGEubGVuOyBqKyspIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YWRkciA9IGxhc3RfYWRkciArIGo7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mZnMgPSBhZGRyICYgKEZDX0JZVEVTIC0gMSk7Cj4+PiArCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqID4gMCAmJiBvZmZzID09IDApCj4+PiAr Cj4+PiAgICAgICAgbmFuZF9jaGFuZ2VfcmVhZF9jb2x1bW5fb3AoY2hpcCwgYWRkciwgTlVMTCwg MCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluW2pdID0gY3RybC0+Zmxhc2hfY2FjaGVbb2Zmc107Cj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4+PiArICAgICAgICAgICAgICAgICAg ICAgfQo+Pj4gKyAgICAgICAgICAgICB9IGVsc2UgaWYgKGluc3RyLT50eXBlID09IE5BTkRfT1Bf V0FJVFJEWV9JTlNUUikgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldCA9IGJjbW5hbmRf Y3RybF9wb2xsX3N0YXR1cyhob3N0LCBOQU5EX0NUUkxfUkRZLAo+Pj4gTkFORF9DVFJMX1JEWSwg MCk7Cj4+PiArICAgICAgICAgICAgIH0gZWxzZSB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAg ZGV2X2VycihjdHJsLT5kZXYsICJ1bnN1cHBvcnRlZCBpbnN0cnVjdGlvbiB0eXBlOiAlZFxuIiwK Pj4+IGluc3RyLT50eXBlKTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXQgPSAtRUlOVkFM Owo+Pj4gKyAgICAgICAgICAgICB9Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICByZXR1cm4g cmV0Owo+Pj4gK30KPj4+ICsKPj4+ICAgc3RhdGljIGludCBicmNtbmFuZF9leGVjX29wKHN0cnVj dCBuYW5kX2NoaXAgKmNoaXAsCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgbmFuZF9vcGVyYXRpb24gKm9wLAo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg Ym9vbCBjaGVja19vbmx5KQo+Pj4gICB7Cj4+PiAgICAgICAgc3RydWN0IGJyY21uYW5kX2hvc3Qg Kmhvc3QgPSBuYW5kX2dldF9jb250cm9sbGVyX2RhdGEoY2hpcCk7Cj4+PiArICAgICBzdHJ1Y3Qg YnJjbW5hbmRfY29udHJvbGxlciAqY3RybCA9IGhvc3QtPmN0cmw7Cj4+PiAgICAgICAgc3RydWN0 IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210ZChjaGlwKTsKPj4+ICAgICAgICB1OCAqc3RhdHVz Owo+Pj4gLSAgICAgdW5zaWduZWQgaW50IGk7Cj4+PiAgICAgICAgaW50IHJldCA9IDA7Cj4+Pgo+ Pj4gICAgICAgIGlmIChjaGVja19vbmx5KQo+Pj4gQEAgLTI1MjUsMTEgKzI2ODksNyBAQCBzdGF0 aWMgaW50IGJyY21uYW5kX2V4ZWNfb3Aoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwKPj4+ICAgICAg ICBpZiAob3AtPmRlYXNzZXJ0X3dwKQo+Pj4gICAgICAgICAgICAgICAgYnJjbW5hbmRfd3AobXRk LCAwKTsKPj4+Cj4+PiAtICAgICBmb3IgKGkgPSAwOyBpIDwgb3AtPm5pbnN0cnM7IGkrKykgewo+ Pj4gLSAgICAgICAgICAgICByZXQgPSBicmNtbmFuZF9leGVjX2luc3RyKGhvc3QsIGksIG9wKTsK Pj4+IC0gICAgICAgICAgICAgaWYgKHJldCkKPj4+IC0gICAgICAgICAgICAgICAgICAgICBicmVh azsKPj4+IC0gICAgIH0KPj4+ICsgICAgIGN0cmwtPmV4ZWNfaW5zdHIoY2hpcCwgb3ApOwo+Pj4K Pj4+ICAgICAgICBpZiAob3AtPmRlYXNzZXJ0X3dwKQo+Pj4gICAgICAgICAgICAgICAgYnJjbW5h bmRfd3AobXRkLCAxKTsKPj4+IEBAIC0zMTQyLDYgKzMzMDIsMTIgQEAgaW50IGJyY21uYW5kX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4+PiBzdHJ1Y3QgYnJjbW5hbmRfc29j ICpzb2MpCj4+PiAgICAgICAgaWYgKHJldCkKPj4+ICAgICAgICAgICAgICAgIGdvdG8gZXJyOwo+ Pj4KPj4+ICsgICAgIC8qIE9ubHkgdjUuMCsgY29udHJvbGxlcnMgaGF2ZSBsb3cgbGV2ZWwgb3Bz IHN1cHBvcnQgKi8KPj4+ICsgICAgIGlmIChjdHJsLT5uYW5kX3ZlcnNpb24gPj0gMHgwNTAwKQo+ Pj4gKyAgICAgICAgICAgICBjdHJsLT5leGVjX2luc3RyID0gYnJjbW5hbmRfZXhlY19pbnN0cnVj dGlvbnM7Cj4+PiArICAgICBlbHNlCj4+PiArICAgICAgICAgICAgIGN0cmwtPmV4ZWNfaW5zdHIg PSBicmNtbmFuZF9leGVjX2luc3RydWN0aW9uc19sZWdhY3k7Cj4+PiArCj4+PiAgICAgICAgLyoK Pj4+ICAgICAgICAgKiBNb3N0IGNoaXBzIGhhdmUgdGhpcyBjYWNoZSBhdCBhIGZpeGVkIG9mZnNl dCB3aXRoaW4gJ25hbmQnIGJsb2NrLgo+Pj4gICAgICAgICAqIFNvbWUgbXVzdCBzcGVjaWZ5IHRo aXMgcmVnaW9uIHNlcGFyYXRlbHkuCj4+PiAtLQo+Pj4gMi4zOS41Cj4gCj4gQlRXLCBjYW4gYW55 b25lIGZyb20gQnJvYWRjb20gY29uZmlybSBhbnkgb2YgdGhlIGZvbGxvd2luZz8KPiAxLiBUaGVy ZSBhcmUgbm8gbG93IGxldmVsIHJlZ2lzdGVycyBvbiB2Mi4xIGFuZCB2Mi4yIGNvbnRyb2xsZXJz LgoKQ29ycmVjdC4KCj4gMi4gRG8gbG93IGxldmVsIHJlZ2lzdGVycyBleGlzdCBvbiB2NC4wIGNv bnRyb2xsZXJzPyBUaGV5IGFyZSBkZWZpbmVkCj4gb24gNjMyNjhfbWFwX3BhcnQuaCBidXQgdGhl IE5BTkQgZHJpdmVycyBJIGNvdWxkIGZpbmQgbmV2ZXIgdXNlIHRoZW0uCgpUaGV5IGV4aXN0LiBU aGUgY2hhbmdlbG9nIGZvciB0aGUgTkFORCBjb250cm9sbGVyIGluZGljYXRlcyB0aGF0IApzdGFy dGluZyBmcm9tIHY0LjAgb253YXJkcywgdGhlIE5BTkQgTEwgb3BlcmF0aW9uIGlzIHN1cHBvcnRl ZC4KCj4gMy4gQXJlIHRoZSBsb3cgbGV2ZWwgcmVnaXN0ZXJzIGJ1Z2dlZCBvbiB2NC4wIGNvbnRy b2xsZXJzPwo+IDQuIFNob3VsZCB0aGUgbG93IGxldmVsIHJlZ2lzdGVycyBiZSBoYW5kbGVkIGRp ZmZlcmVudGx5IG9uIHY0LjAgY29udHJvbGxlcnM/Cj4gVGhlIGlzc3VlIGlzIHRoYXQgdHJ5aW5n IHRvIHVzZSB0aGVtIG9uIHY0LjAgY29udHJvbGxlcnMgZm9yCj4gR0VUX0ZFQVRVUkVTIHdvdWxk IGxlYXZlIHRoZSBOQU5EIGNvbnRyb2xsZXIgaW4gYSB3ZWlyZCBzdGF0ZSB0aGF0Cj4gcmVzdWx0 cyBpbiBoYW5ncyBvciB0aW1lb3V0cyB3aGlsZSB0cnlpbmcgdG8gcmVhZCB0aGUgTkFORC4KPiBU aGlzIGhhcHBlbnMgb24gdGhlIFNlcmNvbW0gSDUwMC1zLCB3aGljaCBpcyBhIEJDTTYzMjY4IHdp dGggYQo+IE1hY3Jvbml4IE5BTkQgdGhhdCB0cmllcyB0byB1bmxvY2sgdGhyb3VnaCBPTkZJLgoK VGhhdCBJIGRvIG5vdCBrbm93IGhvd2V2ZXIsIFdpbGxpYW0gYW5kIERhdmlkIGhvcGVmdWxseSBk byBrbm93LgotLSAKRmxvcmlhbgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg==