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 160D0C43334 for ; Sat, 23 Jul 2022 20:25:46 +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:MIME-Version:References:In-Reply-To:Message-Id:Cc:To :Subject:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=hjWDrPbe8j1aDBJrMNa66TeOtu5OpXNCWUEhKn94DE8=; b=qswbH0SnJSDqjcUV3EnTw6Zs8N gL2QlLIayU7Fy3jHyo6UT+CcajXL/6Cc5vXueDbTMzvrvfjlhjA2+b8508pJaqHctc4ft4erauoPF IzGDo0spjM9sslK08Qmys/tDyR69mFkbZMsYU2sH7fa2B0cG+6tJImpMyUq7c54ZNFLcWu39F/S0A QpKZGomvyHJI2kQuvkmM6OZVFITQ1Hdk1y9h+YQUbJy7CQ9t1DD6RBAqzD72jIGcMUkQxyGJ4nifv DRolWEre1dnEx57eiNbO7ydDpN8DXFB9YCGNbLOkKUOhzdatsTGa4NJOm+Oki00+Ejx2+vsX+AO8t zR8wStEw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oFLgZ-0071FK-8z; Sat, 23 Jul 2022 20:25:15 +0000 Received: from aposti.net ([89.234.176.197]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oFLgU-0071B6-VA for linux-mtd@lists.infradead.org; Sat, 23 Jul 2022 20:25:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1658607891; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jRSr+OHXZSVB7PUnv11DwCk4z2uCsnU/n8yiRDM8jJ8=; b=2NXax8J7fIuP+C5aEFd+U2T5t8Jewts5/x2nVh7bR9E1cWkGhxR8MG6/ta1VX/w8ya4T9M dttE7+IKpsF3w7QM5w9rrvpYKuoqCqROUf2InJA7lPapd3u/JScZto8Hg00s9sg+4LoQlB L0UzvHzs+kAoJcprmbcyu7EcpSnqDoU= Date: Sat, 23 Jul 2022 21:24:38 +0100 From: Paul Cercueil Subject: Re: [PATCH 3/3] SPI: Ingenic: Add SFC support for Ingenic SoCs. To: Zhou Yanjie Cc: tudor.ambarus@microchip.com, p.yadav@ti.com, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, broonie@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, linux-mtd@lists.infradead.org, linux-spi@vger.kernel.org, linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, aidanmacdonald.0x0@gmail.com, tmn505@gmail.com, dongsheng.qiu@ingenic.com, aric.pzqi@ingenic.com, rick.tyliu@ingenic.com, jinghui.liu@ingenic.com, sernia.zhou@foxmail.com, reimu@sudomaker.com Message-Id: <21QHFR.943AANPP6PH41@crapouillou.net> In-Reply-To: References: <1658508510-15400-1-git-send-email-zhouyanjie@wanyeetech.com> <1658508510-15400-4-git-send-email-zhouyanjie@wanyeetech.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220723_132511_353033_D330DAED X-CRM114-Status: GOOD ( 26.00 ) 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 SGkgWmhvdSwKCkxlIGRpbS4sIGp1aWwuIDI0IDIwMjIgYXQgMDE6MjY6NTYgKzA4MDAsIFpob3Ug WWFuamllIAo8emhvdXlhbmppZUB3YW55ZWV0ZWNoLmNvbT4gYSDDqWNyaXQgOgo+IEhpIFBhdWws Cj4gCj4gT24gMjAyMi83LzIzIOS4iuWNiDQ6MDMsIFBhdWwgQ2VyY3VlaWwgd3JvdGU6Cj4+IEhp IFpob3UsCj4+IAo+PiAKPj4gTGUgc2FtLiwganVpbC4gMjMgMjAyMiBhdCAwMDo0ODozMCArMDgw MCwg5ZGo55Cw5p2wIChaaG91IFlhbmppZSkgCj4+IH88emhvdXlhbmppZUB3YW55ZWV0ZWNoLmNv bT4gYSDDqWNyaXQgOgo+Pj4gQWRkIFNGQyBzdXBwb3J0IGZvciB0aGUgWDEwMDAgU29DLCB0aGUg WDE2MDAgU29DLCBhbmQgdGhlIFgyMDAwIFNvQwo+Pj4gZnJvbSBJbmdlbmljLgo+Pj4gCj4+PiBT aWduZWQtb2ZmLWJ5OiDlkajnkLDmnbAgKFpob3UgWWFuamllKSA8emhvdXlhbmppZUB3YW55ZWV0 ZWNoLmNvbT4KPj4+IC0tLQo+Pj4gIGRyaXZlcnMvc3BpL0tjb25maWcgICAgICAgICAgIHwgICA5 ICsKPj4+ICBkcml2ZXJzL3NwaS9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArCj4+PiAgZHJpdmVy cy9zcGkvc3BpLWluZ2VuaWMtc2ZjLmMgfCA2NjIgCj4+PiB/fysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+Pj4gIDMgZmlsZXMgY2hhbmdlZCwgNjcyIGluc2VydGlv bnMoKykKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zcGkvc3BpLWluZ2VuaWMtc2Zj LmMKPj4+IAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL0tjb25maWcgYi9kcml2ZXJzL3Nw aS9LY29uZmlnCj4+PiBpbmRleCAzYjEwNDRlLi4xMDc3YmQzIDEwMDY0NAo+Pj4gLS0tIGEvZHJp dmVycy9zcGkvS2NvbmZpZwo+Pj4gKysrIGIvZHJpdmVycy9zcGkvS2NvbmZpZwo+Pj4gQEAgLTQz Nyw2ICs0MzcsMTUgQEAgY29uZmlnIFNQSV9JTkdFTklDCj4+PiAgICAgICAgVG8gY29tcGlsZSB0 aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQo+Pj4gICAg ICAgIHdpbGwgYmUgY2FsbGVkIHNwaS1pbmdlbmljLgo+Pj4gCj4+PiArY29uZmlnIFNQSV9JTkdF TklDX1NGQwo+Pj4gKyAgICB0cmlzdGF0ZSAiSW5nZW5pYyBTb0NzIFNQSSBGbGFzaCBDb250cm9s bGVyIgo+Pj4gKyAgICBkZXBlbmRzIG9uIE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QKPj4+ ICsgICAgaGVscAo+Pj4gKyAgICAgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgSW5nZW5p YyBTb0NzIFNQSSBmbGFzaCAKPj4+IGNvbnRyb2xsZXIuCj4+PiArCj4+PiArICAgICAgVG8gY29t cGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQo+ Pj4gKyAgICAgIHdpbGwgYmUgY2FsbGVkIGluZ2VuaWMtc2ZjLgo+Pj4gKwo+Pj4gIGNvbmZpZyBT UElfSU5URUwKPj4+ICAgICAgdHJpc3RhdGUKPj4+IAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3BpL01ha2VmaWxlIGIvZHJpdmVycy9zcGkvTWFrZWZpbGUKPj4+IGluZGV4IDBmNDRlYjYuLmYz ZTQyYzAgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL3NwaS9NYWtlZmlsZQo+Pj4gKysrIGIvZHJp dmVycy9zcGkvTWFrZWZpbGUKPj4+IEBAIC02Miw2ICs2Miw3IEBAIG9iai0kKENPTkZJR19TUElf SElTSV9TRkNfVjNYWCkgICAgICAgICs9IAo+Pj4gf39zcGktaGlzaS1zZmMtdjN4eC5vCj4+PiAg b2JqLSQoQ09ORklHX1NQSV9JTUdfU1BGSSkgICAgICAgICs9IHNwaS1pbWctc3BmaS5vCj4+PiAg b2JqLSQoQ09ORklHX1NQSV9JTVgpICAgICAgICAgICAgKz0gc3BpLWlteC5vCj4+PiAgb2JqLSQo Q09ORklHX1NQSV9JTkdFTklDKSAgICAgICAgKz0gc3BpLWluZ2VuaWMubwo+Pj4gK29iai0kKENP TkZJR19TUElfSU5HRU5JQ19TRkMpICAgICs9IHNwaS1pbmdlbmljLXNmYy5vCj4+PiAgb2JqLSQo Q09ORklHX1NQSV9JTlRFTCkgICAgICAgICAgICArPSBzcGktaW50ZWwubwo+Pj4gIG9iai0kKENP TkZJR19TUElfSU5URUxfUENJKSAgICAgICAgKz0gc3BpLWludGVsLXBjaS5vCj4+PiAgb2JqLSQo Q09ORklHX1NQSV9JTlRFTF9QTEFURk9STSkgICAgKz0gc3BpLWludGVsLXBsYXRmb3JtLm8KPj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGktaW5nZW5pYy1zZmMuYyAKPj4+IH9/Yi9kcml2 ZXJzL3NwaS9zcGktaW5nZW5pYy1zZmMuYwo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+IGlu ZGV4IDAwMDAwMDAwLi5hNTY1NTQ2Cj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysgYi9kcml2ZXJz L3NwaS9zcGktaW5nZW5pYy1zZmMuYwo+Pj4gQEAgLTAsMCArMSw2NjIgQEAKPj4+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpCj4+IAo+ PiBEdWFsLWxpY2Vuc2UgZHJpdmVyPyBUaGF0J3Mgbm90IHdoYXQgTU9EVUxFX0xJQ0VOU0UoKSBz YXlzLgo+PiAKPiAKPiBNeSBmYXVsdCwgZm9yZ290IHRvIG1vZGlmeSBNT0RVTEVfTElDRU5TRSgp LCB3aWxsIGZpeCBpdCBpbiB0aGUgbmV4dCAKPiB2ZXJzaW9uLgo+IAo+IAo+Pj4gKy8qCj4+PiAr ICogSW5nZW5pYyBTb0NzIFNQSSBGbGFzaCBDb250cm9sbGVyIERyaXZlcgo+Pj4gKyAqIENvcHly aWdodCAoYykgMjAyMiDlkajnkLDmnbAgKFpob3UgWWFuamllKSAKPj4+IDx6aG91eWFuamllQHdh bnllZXRlY2guY29tPgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVs ZC5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgv Y2xrLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2NvbXBsZXRpb24uaD4KPj4+ICsjaW5jbHVkZSA8 bGludXgvZG1hLW1hcHBpbmcuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4+ PiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KPj4+ICsjaW5jbHVkZSA8bGludXgvbXRkL210ZC5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9v Zl9kZXZpY2UuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+PiAr I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgo+ Pj4gKyNpbmNsdWRlIDxsaW51eC9zcGkvc3BpLW1lbS5oPgo+Pj4gKwo+Pj4gKy8qIFNGQyByZWdp c3RlciBvZmZzZXRzICovCj4+PiArI2RlZmluZSBTRkNfUkVHX0dMQiAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDAwMAo+Pj4gKyNkZWZpbmUgU0ZDX1JFR19ERVZfQ09ORiAgICAgICAgICAgICAg ICAweDAwMDQKPj4+ICsjZGVmaW5lIFNGQ19SRUdfREVWX1NUQV9FWFAgICAgICAgICAgICAgICAg MHgwMDA4Cj4+PiArI2RlZmluZSBTRkNfUkVHX0RFVl9TVEFfUlQgICAgICAgICAgICAgICAgMHgw MDBjCj4+PiArI2RlZmluZSBTRkNfUkVHX0RFVl9TVEFfTVNLICAgICAgICAgICAgICAgIDB4MDAx MAo+Pj4gKyNkZWZpbmUgU0ZDX1JFR19UUkFOX0NPTkYobikgICAgICAgICAgICAoMHgwMDE0ICsg biAqIDQpCj4+PiArI2RlZmluZSBTRkNfUkVHX1RSQU5fQ0ZHMChuKSAgICAgICAgICAgICgweDAw MTQgKyBuICogNCkKPj4gCj4+IFlvdSBzaG91bGQgcHJvdGVjdCB0aGUgbWFjcm8gcGFyYW1ldGVy LiBJZiB5b3UgZG8gZm9yIGluc3RhbmNlIAo+PiB/U0ZDX1JFR19UUkFOX0NPTkYoeCArIDEpIGl0 IHdvdWxkIHJlc29sdmUgdG8gKDB4MDAxNCArIHggKyAxICogNCkgCj4+IH93aGljaCBpcyBub3Qg d2hhdCB5b3UnZCB3YW50Lgo+PiAKPiAKPiBTdXJlLCB3aWxsIGZpeCBpdC4KPiAKPiAKPj4gQWxz byAtIGxvb2tzIGxpa2UgU0ZDX1JFR19UUkFOX0NPTkYoKSBhbmQgU0ZDX1JFR19UUkFOX0NGRzAo KSBhcmUgCj4+IHRoZSB/c2FtZSB0aGluZywgdGhhdCdzIG9uIHB1cnBvc2U/Cj4+IAo+Pj4gKyNk ZWZpbmUgU0ZDX1JFR19UUkFOX0xFTiAweDAwMmMKPj4+ICsjZGVmaW5lIFNGQ19SRUdfREVWX0FE RFIobikgICAgICAgICAgICAgICAgKDB4MDAzMCArIG4gKiA0KQo+Pj4gKyNkZWZpbmUgU0ZDX1JF R19ERVZfQUREUl9QTFVTKG4pICAgICAgICAoMHgwMDQ4ICsgbiAqIDQpCj4+PiArI2RlZmluZSBT RkNfUkVHX01FTV9BRERSICAgICAgICAgICAgICAgIDB4MDA2MAo+Pj4gKyNkZWZpbmUgU0ZDX1JF R19UUklHICAgICAgICAgICAgICAgICAgICAweDAwNjQKPj4+ICsjZGVmaW5lIFNGQ19SRUdfU1Ig ICAgICAgICAgICAgICAgICAgICAgICAweDAwNjgKPj4+ICsjZGVmaW5lIFNGQ19SRUdfU0NSICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMDZjCj4+PiArI2RlZmluZSBTRkNfUkVHX0lOVEMgICAg ICAgICAgICAgICAgICAgIDB4MDA3MAo+Pj4gKyNkZWZpbmUgU0ZDX1JFR19GU00gICAgICAgICAg ICAgICAgICAgICAgICAweDAwNzQKPj4+ICsjZGVmaW5lIFNGQ19SRUdfQ0dFICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMDc4Cj4+PiArI2RlZmluZSBTRkNfUkVHX1RSQU5fQ0ZHMShuKSAgICAg ICAgICAgICgweDAwOWMgKyBuICogNCkKPj4+ICsjZGVmaW5lIFNGQ19SRUdfRFIgICAgICAgICAg ICAgICAgICAgICAgICAweDEwMDAKPj4+ICsKPj4+ICsvKiBiaXRzIHdpdGhpbiB0aGUgR0xCIHJl Z2lzdGVyICovCj4+PiArI2RlZmluZSBHTEJfVFJBTl9ESVJfTUFTSyAgICAgICAgICAgICAgICBH RU5NQVNLKDEzLCAxMykKPj4+ICsjZGVmaW5lIEdMQl9UUkFOX0RJUl9XUklURSAgICAgICAgICAg ICAgICAweDEKPj4+ICsjZGVmaW5lIEdMQl9UUkFOX0RJUl9SRUFEICAgICAgICAgICAgICAgIDB4 MAo+PiAKPj4gV2hlbiBpdCdzIGEgc2luZ2xlIGJpdCAtIGp1c3QgdXNlIEJJVCgpLgo+IAo+IAo+ IFN1cmUuCj4gCj4gCj4+IAo+Pj4gKyNkZWZpbmUgR0xCX1RIUkVTSE9MRF9NQVNLIEdFTk1BU0so MTIsIDcpCj4+PiArI2RlZmluZSBHTEJfT1BfTU9ERV9NQVNLICAgICAgICAgICAgICAgIEdFTk1B U0soNiwgNikKPj4gCj4+IFNhbWUgaGVyZSwgYW5kIEkgc2VlIGl0IGEgZmV3IHRpbWVzIGJlbG93 IGFzIHdlbGwuCj4+IAo+IAo+IFN1cmUuCj4gCj4gCj4+PiArI2RlZmluZSBHTEJfT1BfTU9ERV9E TUEgICAgICAgICAgICAgICAgICAgIDB4MQo+Pj4gKyNkZWZpbmUgR0xCX09QX01PREVfU0xBVkUg ICAgICAgICAgICAgICAgMHgwCj4+PiArI2RlZmluZSBHTEJfUEhBU0VfTlVNX01BU0sgICAgICAg ICAgICAgICAgR0VOTUFTSyg1LCAzKQo+Pj4gKyNkZWZpbmUgR0xCX1dQX0VOICAgICAgICAgICAg ICAgICAgICAgICAgQklUKDIpCj4+PiArI2RlZmluZSBHTEJfQlVSU1RfTURfTUFTSyAgICAgICAg ICAgICAgICBHRU5NQVNLKDEsIDApCj4+PiArI2RlZmluZSBHTEJfQlVSU1RfTURfSU5DUjMyICAg ICAgICAgICAgICAgIDB4Mwo+Pj4gKyNkZWZpbmUgR0xCX0JVUlNUX01EX0lOQ1IxNiAgICAgICAg ICAgICAgICAweDIKPj4+ICsjZGVmaW5lIEdMQl9CVVJTVF9NRF9JTkNSOCAgICAgICAgICAgICAg ICAweDEKPj4+ICsjZGVmaW5lIEdMQl9CVVJTVF9NRF9JTkNSNCAgICAgICAgICAgICAgICAweDAK Pj4+ICsKPj4+ICsvKiBiaXRzIHdpdGhpbiB0aGUgREVWX0NPTkYgcmVnaXN0ZXIgKi8KPj4+ICsj ZGVmaW5lIERFVl9DT05GX1NNUF9ERUxBWV9NQVNLICAgICAgICAgICAgR0VOTUFTSygyMCwgMTYp Cj4+PiArI2RlZmluZSBERVZfQ09ORl9TTVBfREVMQVlfMTgwREVHICAgICAgICAweDQKPj4+ICsj ZGVmaW5lIERFVl9DT05GX1NNUF9ERUxBWV9IQUxGX0NZQ0xFICAgIDB4MQo+Pj4gKyNkZWZpbmUg REVWX0NPTkZfQ01EX1RZUEVfTUFTSyAgICAgICAgICAgIEdFTk1BU0soMTUsIDE1KQo+Pj4gKyNk ZWZpbmUgREVWX0NPTkZfQ01EX1RZUEVfMTZCSVQgICAgICAgICAgICAweDEKPj4+ICsjZGVmaW5l IERFVl9DT05GX0NNRF9UWVBFXzhCSVQgICAgICAgICAgICAweDAKPj4+ICsjZGVmaW5lIERFVl9D T05GX1NUQV9UWVBFX01BU0sgICAgICAgICAgICBHRU5NQVNLKDE0LCAxMykKPj4+ICsjZGVmaW5l IERFVl9DT05GX1RIT0xEX01BU0sgICAgICAgICAgICAgICAgR0VOTUFTSygxMiwgMTEpCj4+PiAr I2RlZmluZSBERVZfQ09ORl9UU0VUVVBfTUFTSyAgICAgICAgICAgIEdFTk1BU0soMTAsIDkpCj4+ PiArI2RlZmluZSBERVZfQ09ORl9UU0hfTUFTSyAgICAgICAgICAgICAgICBHRU5NQVNLKDgsIDUp Cj4+PiArI2RlZmluZSBERVZfQ09ORl9DUEhBICAgICAgICAgICAgICAgICAgICBCSVQoNCkKPj4+ ICsjZGVmaW5lIERFVl9DT05GX0NQT0wgICAgICAgICAgICAgICAgICAgIEJJVCgzKQo+Pj4gKyNk ZWZpbmUgREVWX0NPTkZfQ0VfREwgICAgICAgICAgICAgICAgICAgIEJJVCgyKQo+Pj4gKyNkZWZp bmUgREVWX0NPTkZfSE9MRF9ETCAgICAgICAgICAgICAgICBCSVQoMSkKPj4+ICsjZGVmaW5lIERF Vl9DT05GX1dQX0RMICAgICAgICAgICAgICAgICAgICBCSVQoMCkKPj4+ICsKPj4+ICsvKiBiaXRz IHdpdGhpbiB0aGUgVFJBTl9DT05GKG4pIHJlZ2lzdGVyICovCj4+PiArI2RlZmluZSBUUkFOX0NP TkZfVFJBTl9NT0RFX01BU0sgICAgICAgIEdFTk1BU0soMzEsIDI5KQo+Pj4gKyNkZWZpbmUgVFJB Tl9DT05GX0FERFJfV0lEVEhfTUFTSyAgICAgICAgR0VOTUFTSygyOCwgMjYpCj4+PiArI2RlZmlu ZSBUUkFOX0NPTkZfUE9MTF9FTiAgICAgICAgICAgICAgICBCSVQoMjUpCj4+PiArI2RlZmluZSBU UkFOX0NPTkZfQ01EX0VOICAgICAgICAgICAgICAgIEJJVCgyNCkKPj4+ICsjZGVmaW5lIFRSQU5f Q09ORl9QSEFTRV9GT1JNQVRfTUFTSyAgICAgICAgR0VOTUFTSygyMywgMjMpCj4+PiArI2RlZmlu ZSBUUkFOX0NPTkZfRE1ZX0JJVFNfTUFTSyAgICAgICAgICAgIEdFTk1BU0soMjIsIDE3KQo+Pj4g KyNkZWZpbmUgVFJBTl9DT05GX0RBVEFfRU4gICAgICAgICAgICAgICAgQklUKDE2KQo+Pj4gKyNk ZWZpbmUgVFJBTl9DT05GX0NNRF9NQVNLICAgICAgICAgICAgICAgIEdFTk1BU0soMTUsIDApCj4+ PiArCj4+PiArLyogYml0cyB3aXRoaW4gdGhlIFRSSUcgcmVnaXN0ZXIgKi8KPj4+ICsjZGVmaW5l IFRSSUdfRkxVU0ggICAgICAgICAgICAgICAgICAgICAgICBCSVQoMikKPj4+ICsjZGVmaW5lIFRS SUdfU1RPUCAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgxKQo+Pj4gKyNkZWZpbmUgVFJJR19T VEFSVCAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQo+Pj4gKwo+Pj4gKy8qIGJpdHMgd2l0 aGluIHRoZSBTUiByZWdpc3RlciAqLwo+Pj4gKyNkZWZpbmUgU1JfRklGT19OVU1fTUFTSyAgICAg ICAgICAgICAgICBHRU5NQVNLKDIyLCAxNikKPj4+ICsjZGVmaW5lIFNSX0VORCAgICAgICAgICAg ICAgICAgICAgICAgICAgICBCSVQoNCkKPj4+ICsjZGVmaW5lIFNSX1RSQU5fUkVRICAgICAgICAg ICAgICAgICAgICAgICAgQklUKDMpCj4+PiArI2RlZmluZSBTUl9SRUNFX1JFUSAgICAgICAgICAg ICAgICAgICAgICAgIEJJVCgyKQo+Pj4gKyNkZWZpbmUgU1JfT1ZFUiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBCSVQoMSkKPj4+ICsjZGVmaW5lIFNSX1VOREVSICAgICAgICAgICAgICAgICAg ICAgICAgQklUKDApCj4+PiArCj4+PiArLyogYml0cyB3aXRoaW4gdGhlIFNDUiByZWdpc3RlciAq Lwo+Pj4gKyNkZWZpbmUgU0NSX0NMUl9FTkQgICAgICAgICAgICAgICAgICAgICAgICBCSVQoNCkK Pj4+ICsjZGVmaW5lIFNDUl9DTFJfVFJFUSAgICAgICAgICAgICAgICAgICAgQklUKDMpCj4+PiAr I2RlZmluZSBTQ1JfQ0xSX1JSRVEgICAgICAgICAgICAgICAgICAgIEJJVCgyKQo+Pj4gKyNkZWZp bmUgU0NSX0NMUl9PVkVSICAgICAgICAgICAgICAgICAgICBCSVQoMSkKPj4+ICsjZGVmaW5lIFND Ul9DTFJfVU5ERVIgICAgICAgICAgICAgICAgICAgIEJJVCgwKQo+Pj4gKwo+Pj4gKy8qIGJpdHMg d2l0aGluIHRoZSBJTlRDIHJlZ2lzdGVyICovCj4+PiArI2RlZmluZSBJTlRDX01BU0tfRU5EICAg ICAgICAgICAgICAgICAgICBCSVQoNCkKPj4+ICsjZGVmaW5lIElOVENfTUFTS19UUkVRICAgICAg ICAgICAgICAgICAgICBCSVQoMykKPj4+ICsjZGVmaW5lIElOVENfTUFTS19SUkVRICAgICAgICAg ICAgICAgICAgICBCSVQoMikKPj4+ICsjZGVmaW5lIElOVENfTUFTS19PVkVSICAgICAgICAgICAg ICAgICAgICBCSVQoMSkKPj4+ICsjZGVmaW5lIElOVENfTUFTS19VTkRFUiAgICAgICAgICAgICAg ICAgICAgQklUKDApCj4+PiArCj4+PiArLyogYml0cyB3aXRoaW4gdGhlIFRSQU5fQ0ZHMShuKSBy ZWdpc3RlciAqLwo+Pj4gKyNkZWZpbmUgVFJBTl9DRkcxX1RSQU5fTU9ERV9NQVNLICAgICAgICBH RU5NQVNLKDcsIDQpCj4+PiArCj4+PiArI2RlZmluZSBUUkFOX01PREVfU1RBTkRBUkQgICAgICAg ICAgICAgICAgMAo+Pj4gKyNkZWZpbmUgVFJBTl9NT0RFX0RVQUxfREFUQSAgICAgICAgICAgICAg ICAxCj4+PiArI2RlZmluZSBUUkFOX01PREVfRFVBTF9JTyAgICAgICAgICAgICAgICAyCj4+PiAr I2RlZmluZSBUUkFOX01PREVfRFVBTF9GVUxMICAgICAgICAgICAgICAgIDMKPj4+ICsjZGVmaW5l IFRSQU5fTU9ERV9RVUFEX0RBVEEgICAgICAgICAgICAgICAgNQo+Pj4gKyNkZWZpbmUgVFJBTl9N T0RFX1FVQURfSU8gICAgICAgICAgICAgICAgNgo+Pj4gKyNkZWZpbmUgVFJBTl9NT0RFX1FVQURf RlVMTCAgICAgICAgICAgICAgICA3Cj4+PiArI2RlZmluZSBUUkFOX01PREVfT0NUQUxfREFUQSAg ICAgICAgICAgIDkKPj4+ICsjZGVmaW5lIFRSQU5fTU9ERV9PQ1RBTF9JTyAgICAgICAgICAgICAg ICAxMAo+Pj4gKyNkZWZpbmUgVFJBTl9NT0RFX09DVEFMX0ZVTEwgICAgICAgICAgICAxMQo+Pj4g Kwo+Pj4gKyNkZWZpbmUgSU5HRU5JQ19TRkNfRklGT19TSVpFICAgICAgICAgICAgKDY0ICogNCkK Pj4+ICsKPj4+ICsjZGVmaW5lIElOR0VOSUNfU0ZDX1RSQU5TRkVSX1RJTUVPVVQgICAgMTAwMAo+ PiAKPj4gTWF5YmUgYWRkIHRoZSB1bml0IG5hbWUgaW4gdGhlIG1hY3JvIGFzIHdlbGwgLSAKPj4g f0lOR0VOSUNfU0ZDX1RSQU5TRkVSX1RJTUVPVVRfTVMuCj4gCj4gCj4gU3VyZS4KPiAKPiAKPj4g Cj4+PiArCj4+PiArZW51bSBpbmdlbmljX3NmY192ZXJzaW9uIHsKPj4+ICsgICAgSURfWDEwMDAs Cj4+PiArICAgIElEX1gxNjAwLAo+Pj4gKyAgICBJRF9YMjAwMCwKPj4+ICt9Owo+Pj4gKwo+Pj4g K3N0cnVjdCBpbmdlbmljX3NvY19pbmZvIHsKPj4+ICsgICAgZW51bSBpbmdlbmljX3NmY192ZXJz aW9uIHZlcnNpb247Cj4+PiArCj4+PiArICAgIHVuc2lnbmVkIGludCBtYXhfYnVzX3dpZHRoOwo+ Pj4gKwo+Pj4gKyAgICBjb25zdCB1MzIgdHJhbl9tb2RlX21hc2s7Cj4+PiArfTsKPj4+ICsKPj4+ ICtzdHJ1Y3QgaW5nZW5pY19zZmMgewo+Pj4gKyAgICBjb25zdCBzdHJ1Y3QgaW5nZW5pY19zb2Nf aW5mbyAqc29jX2luZm87Cj4+PiArCj4+PiArICAgIHZvaWQgX19pb21lbSAqYmFzZTsKPj4+ICsg ICAgc3RydWN0IGRldmljZSAqZGV2Owo+Pj4gKyAgICBzdHJ1Y3QgY2xrICpjbGs7Cj4+PiArICAg IGludCBpcnE7Cj4+PiArCj4+PiArICAgIHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247Cj4+ PiArfTsKPj4+ICsKPj4+ICtzdGF0aWMgaXJxcmV0dXJuX3QgaW5nZW5pY19zZmNfaXJxX2hhbmRs ZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKPj4+ICt7Cj4+PiArICAgIHN0cnVjdCBpbmdlbmljX3Nm YyAqc2ZjID0gZGF0YTsKPj4+ICsKPj4+ICsgICAgd3JpdGVsKDB4MWYsIHNmYy0+YmFzZSArIFNG Q19SRUdfSU5UQyk7Cj4+PiArCj4+PiArICAgIGNvbXBsZXRlKCZzZmMtPmNvbXBsZXRpb24pOwo+ Pj4gKwo+Pj4gKyAgICByZXR1cm4gSVJRX0hBTkRMRUQ7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRp YyBpbnQgaW5nZW5pY19zZmNfYWRqdXN0X29wX3NpemUoc3RydWN0IHNwaV9tZW0gKm1lbSwgc3Ry dWN0IAo+Pj4gf39zcGlfbWVtX29wICpvcCkKPj4+ICt7Cj4+PiArICAgIHVpbnRwdHJfdCBhZGRy ID0gKHVpbnRwdHJfdClvcC0+ZGF0YS5idWYuaW47Cj4+PiArCj4+PiArICAgIGlmIChvcC0+ZGF0 YS5uYnl0ZXMgPiBJTkdFTklDX1NGQ19GSUZPX1NJWkUgJiYgCj4+PiAhSVNfQUxJR05FRChhZGRy LCB/fzQpKQo+Pj4gKyAgICAgICAgb3AtPmRhdGEubmJ5dGVzID0gSU5HRU5JQ19TRkNfRklGT19T SVpFOwo+Pj4gKwo+Pj4gKyAgICByZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGJv b2wgaW5nZW5pY19zZmNfc3VwcG9ydHNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3QgCj4+ PiB/f3N0cnVjdCBzcGlfbWVtX29wICpvcCkKPj4+ICt7Cj4+PiArICAgIHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkgPSBtZW0tPnNwaTsKPj4+ICsgICAgc3RydWN0IGluZ2VuaWNfc2ZjICpzZmMgPSAK Pj4+IHNwaV9jb250cm9sbGVyX2dldF9kZXZkYXRhKHNwaS0+bWFzdGVyKTsKPj4+ICsgICAgdWlu dHB0cl90IGFkZHIgPSAodWludHB0cl90KW9wLT5kYXRhLmJ1Zi5pbjsKPj4+ICsKPj4+ICsgICAg LyogVGhlIGNvbnRyb2xsZXIgb25seSBzdXBwb3J0cyBTdGFuZGFyZCBTUEkgbW9kZSwgRHVhbGwg bW9kZSwgCj4+PiB/f1F1YWQgbW9kZSBhbmQgT2N0YWwgbW9kZS4gKi8KPj4gCj4+IER1YWwqCj4g Cj4gCj4gT29wcywgd2lsbCBmaXggaXQuCj4gCj4gCj4+IAo+Pj4gKyAgICBpZiAob3AtPmNtZC5i dXN3aWR0aCA+IHNmYy0+c29jX2luZm8tPm1heF9idXNfd2lkdGggfHwKPj4+ICsgICAgICAgIG9w LT5hZGRyLmJ1c3dpZHRoID4gc2ZjLT5zb2NfaW5mby0+bWF4X2J1c193aWR0aCB8fAo+Pj4gKyAg ICAgICAgb3AtPmR1bW15LmJ1c3dpZHRoID4gc2ZjLT5zb2NfaW5mby0+bWF4X2J1c193aWR0aCB8 fAo+Pj4gKyAgICAgICAgb3AtPmRhdGEuYnVzd2lkdGggPiBzZmMtPnNvY19pbmZvLT5tYXhfYnVz X3dpZHRoKQo+Pj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4gKwo+Pj4gKyAgICAvKiBNYXgg MzIgZHVtbXkgY2xvY2sgY3ljbGVzIHN1cHBvcnRlZCAqLwo+Pj4gKyAgICBpZiAob3AtPmR1bW15 Lm5ieXRlcyAmJiBvcC0+ZHVtbXkubmJ5dGVzICogOCAvIAo+Pj4gf39vcC0+ZHVtbXkuYnVzd2lk dGggPiAzMikKPj4+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPj4+ICsKPj4+ICsgICAgLyogTWF4 IHJ4IGRhdGEgbGVuZ3RoLCBjaGVjayBjb250cm9sbGVyIGxpbWl0cyBhbmQgYWxpZ25tZW50ICov Cj4+PiArICAgIGlmIChvcC0+ZGF0YS5kaXIgPT0gU1BJX01FTV9EQVRBX0lOICYmCj4+PiArICAg ICAgICBvcC0+ZGF0YS5uYnl0ZXMgPiBJTkdFTklDX1NGQ19GSUZPX1NJWkUgJiYgCj4+PiAhSVNf QUxJR05FRChhZGRyLCB/fzQpKQo+PiAKPj4gVGhpcyBkb2VzIHRoZSBzYW1lIGNoZWNrIHRoYW4g aW4gaW5nZW5pY19zZmNfYWRqdXN0X29wX3NpemUoKSwgbWF5YmUgCj4+IH9tb3ZlIGl0IHRvIGEg bmV3IGlubGluZSBmdW5jdGlvbj8KPj4gCj4gCj4gU3VyZS4KPiAKPiAKPj4+ICsgICAgICAgIHJl dHVybiBmYWxzZTsKPj4+ICsKPj4+ICsgICAgLyogTWF4IDYgYnl0ZXMgYWRkcmVzcyB3aWR0aCBz dXBwb3J0ZWQgKi8KPj4+ICsgICAgaWYgKG9wLT5hZGRyLm5ieXRlcyA+IDYpCj4+PiArICAgICAg ICByZXR1cm4gZmFsc2U7Cj4+PiArCj4+PiArICAgIHJldHVybiBzcGlfbWVtX2RlZmF1bHRfc3Vw cG9ydHNfb3AobWVtLCBvcCk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIGluZ2VuaWNf c2ZjX3NldF90cmFuc2Zlcl9tb2RlKHN0cnVjdCBpbmdlbmljX3NmYyAqc2ZjLCAKPj4+IH9/Y29u c3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKQo+Pj4gK3sKPj4+ICsgICAgaW50IHZhbDsKPj4+ICsK Pj4+ICsgICAgdmFsID0gcmVhZGwoc2ZjLT5iYXNlICsgKHNmYy0+c29jX2luZm8tPnZlcnNpb24g Pj0gSURfWDE2MDAgPwo+Pj4gKyAgICAgICAgICAgIFNGQ19SRUdfVFJBTl9DRkcxKDApIDogU0ZD X1JFR19UUkFOX0NPTkYoMCkpKTsKPj4gCj4+IEFzIEtyenlzenRvZiBzYWlkIC0gdWdoLgo+PiAK PiAKPiBXaWxsIGZpeCBpdC4KPiAKPiAKPj4gQWxzbywgaW5zdGVhZCBvZiBoYXZpbmcgYSAidmVy c2lvbiIgZW51bSBpbiB5b3VyIHNvY19pbmZvLCB3aHkgbm90IAo+PiB/anVzdCBoYXZlIGEgInJl Z19jb25mIiBmaWVsZCB0aGF0IGdpdmVzIHlvdSBkaXJlY3RseSB0aGUgcmlnaHQgCj4+IHJlZ2lz dGVyPwo+PiAKPiAKPiBXZSBzdGlsbCBuZWVkIGEgdmVyc2lvbiB0byBkaXN0aW5ndWlzaCB0aGUg U0ZDIGJlZm9yZSBYMTYwMCBTb0MgYW5kCj4gdGhlIFNGQyBhZnRlciBYMTYwMCBTb0MsIGJlY2F1 c2UgaW4gYWRkaXRpb24gdG8gdGhlIGRpZmZlcmVuY2UgaW4gdGhlCj4gY2ZnIHJlZ2lzdGVyLCBh bm90aGVyIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgU0ZDIGJlZm9yZSBYMTYwMCBTb0MgZG9lcwo+ IG5vdCBzdXBwb3J0IGFkZHJlc3MgdW5hbGlnbmVkIFJYIERNQSB0cmFuc2Zlciwgd2hpbGUgU0ZD IGluIFgxNjAwIGFuZAo+IGxhdGVyIFNvQ3MgY2FuIHN1cHBvcnQgdGhpcyBmZWF0dXJlLgoKVGhl biBhZGQgYSAuZG1hX3N1cHBvcnRzX3VuYWxpZ25lZF9hZGRyZXNzIGZpZWxkLgoKPiAKPiAKPj4g Cj4+PiArICAgIHZhbCAmPSB+c2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2s7Cj4+PiArICAg IGlmIChvcC0+Y21kLmJ1c3dpZHRoID09IDgpCj4+PiArICAgICAgICB2YWwgfD0gKFRSQU5fTU9E RV9PQ1RBTF9GVUxMIDw8IAo+Pj4gf38oZmZzKHNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9tYXNr KSAtIDEpKSAmCj4+PiArICAgICAgICAgICAgICAgIHNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9t YXNrOwo+PiAKPj4gTG9va3MgbGlrZSB5b3UncmUgcmVhbGx5IHRyeWluZyB0byByZWludmVudCB0 aGUgd2hlZWwuCj4+IAo+PiB2YWwgfD0gRklFTERfUFJFUChzZmMtPnNvY19pbmZvLT50cmFuX21v ZGVfbWFzaywgCj4+IFRSQU5fTU9ERV9PQ1RBTF9GVUxMKTsKPj4gCj4+IHVzaW5nIDxsaW51eC9i aXRmaWVsZC5oPi4KPj4gCj4+IEFsc28sIGp1c3QgZGVmaW5lIGEgJ21vZGUnIHZhcmlhYmxlIGFu ZCBzZXQgaXQgaW4geW91ciBpZi9lbHNlIAo+PiBibG9ja3MsIH90aGF0IHdvdWxkIGxvb2sgbXVj aCBiZXR0ZXIuIFRoZW4geW91IGNhbiBzZXQgdmFsIHw9IAo+PiBGSUVMRF9QUkVQKC4uLiwgf21v ZGUpIGF0IHRoZSBlbmQuCj4gCj4gCj4gU3VyZSwgd2lsbCBjaGFuZ2UgdGhpcyBpbiB0aGUgbmV4 dCB2ZXJzaW9uLgo+IAo+IAo+PiAKPj4+ICsgICAgZWxzZSBpZiAob3AtPmNtZC5idXN3aWR0aCA9 PSA0KQo+Pj4gKyAgICAgICAgdmFsIHw9IChUUkFOX01PREVfUVVBRF9GVUxMIDw8IAo+Pj4gf38o ZmZzKHNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9tYXNrKSAtIDEpKSAmCj4+PiArICAgICAgICAg ICAgICAgIHNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9tYXNrOwo+Pj4gKyAgICBlbHNlIGlmIChv cC0+Y21kLmJ1c3dpZHRoID09IDIpCj4+PiArICAgICAgICB2YWwgfD0gKFRSQU5fTU9ERV9EVUFM X0ZVTEwgPDwgCj4+PiB/fyhmZnMoc2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2spIC0gMSkp ICYKPj4+ICsgICAgICAgICAgICAgICAgc2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2s7Cj4+ PiArICAgIGVsc2UgaWYgKG9wLT5hZGRyLmJ1c3dpZHRoID09IDgpCj4+PiArICAgICAgICB2YWwg fD0gKFRSQU5fTU9ERV9PQ1RBTF9JTyA8PCAKPj4+IH9/KGZmcyhzZmMtPnNvY19pbmZvLT50cmFu X21vZGVfbWFzaykgLSAxKSkgJgo+Pj4gKyAgICAgICAgICAgICAgICBzZmMtPnNvY19pbmZvLT50 cmFuX21vZGVfbWFzazsKPj4+ICsgICAgZWxzZSBpZiAob3AtPmFkZHIuYnVzd2lkdGggPT0gNCkK Pj4+ICsgICAgICAgIHZhbCB8PSAoVFJBTl9NT0RFX1FVQURfSU8gPDwgCj4+PiB/fyhmZnMoc2Zj LT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2spIC0gMSkpICYKPj4+ICsgICAgICAgICAgICAgICAg c2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2s7Cj4+PiArICAgIGVsc2UgaWYgKG9wLT5hZGRy LmJ1c3dpZHRoID09IDIpCj4+PiArICAgICAgICB2YWwgfD0gKFRSQU5fTU9ERV9EVUFMX0lPIDw8 IAo+Pj4gf38oZmZzKHNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9tYXNrKSAtIDEpKSAmCj4+PiAr ICAgICAgICAgICAgICAgIHNmYy0+c29jX2luZm8tPnRyYW5fbW9kZV9tYXNrOwo+Pj4gKyAgICBl bHNlIGlmIChvcC0+ZGF0YS5idXN3aWR0aCA9PSA4KQo+Pj4gKyAgICAgICAgdmFsIHw9IChUUkFO X01PREVfT0NUQUxfREFUQSA8PCAKPj4+IH9/KGZmcyhzZmMtPnNvY19pbmZvLT50cmFuX21vZGVf bWFzaykgLSAxKSkgJgo+Pj4gKyAgICAgICAgICAgICAgICBzZmMtPnNvY19pbmZvLT50cmFuX21v ZGVfbWFzazsKPj4+ICsgICAgZWxzZSBpZiAob3AtPmRhdGEuYnVzd2lkdGggPT0gNCkKPj4+ICsg ICAgICAgIHZhbCB8PSAoVFJBTl9NT0RFX1FVQURfREFUQSA8PCAKPj4+IH9/KGZmcyhzZmMtPnNv Y19pbmZvLT50cmFuX21vZGVfbWFzaykgLSAxKSkgJgo+Pj4gKyAgICAgICAgICAgICAgICBzZmMt PnNvY19pbmZvLT50cmFuX21vZGVfbWFzazsKPj4+ICsgICAgZWxzZSBpZiAob3AtPmRhdGEuYnVz d2lkdGggPT0gMikKPj4+ICsgICAgICAgIHZhbCB8PSAoVFJBTl9NT0RFX0RVQUxfREFUQSA8PCAK Pj4+IH9/KGZmcyhzZmMtPnNvY19pbmZvLT50cmFuX21vZGVfbWFzaykgLSAxKSkgJgo+Pj4gKyAg ICAgICAgICAgICAgICBzZmMtPnNvY19pbmZvLT50cmFuX21vZGVfbWFzazsKPj4+ICsgICAgZWxz ZQo+Pj4gKyAgICAgICAgdmFsIHw9IChUUkFOX01PREVfU1RBTkRBUkQgPDwgCj4+PiB/fyhmZnMo c2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2spIC0gMSkpICYKPj4+ICsgICAgICAgICAgICAg ICAgc2ZjLT5zb2NfaW5mby0+dHJhbl9tb2RlX21hc2s7Cj4+PiArICAgIHdyaXRlbCh2YWwsIHNm Yy0+YmFzZSArIChzZmMtPnNvY19pbmZvLT52ZXJzaW9uID49IElEX1gxNjAwID8KPj4+ICsgICAg ICAgICAgICBTRkNfUkVHX1RSQU5fQ0ZHMSgwKSA6IFNGQ19SRUdfVFJBTl9DT05GKDApKSk7Cj4+ PiArfQo+Pj4gKwo+Pj4gKy8qCj4+PiArICogV2Ugb25seSBuZWVkIFBJTyBtb2RlIHRvIGhhbmRs ZSB0aGUgU1BJX01FTV9OT19EQVRBIHRyYW5zZmVycywKPj4+ICsgKiBhbmQgdGhlIHVuYWxpZ25l ZCBhY2Nlc3NlcyBpbiBTUElfTUVNX0RBVEFfSU4gdHJhbnNmZXJzLgo+Pj4gKyAqLwo+Pj4gK3N0 YXRpYyB2b2lkIGluZ2VuaWNfc2ZjX3JlYWRfcnhmaWZvKHN0cnVjdCBpbmdlbmljX3NmYyAqc2Zj LCB1OCAKPj4+ICp0bywgf391bnNpZ25lZCBpbnQgbGVuKQo+Pj4gK3sKPj4+ICsgICAgdm9pZCBf X2lvbWVtICpmcm9tOwo+Pj4gKwo+Pj4gKyAgICBmcm9tID0gc2ZjLT5iYXNlICsgU0ZDX1JFR19E UjsKPj4+ICsKPj4+ICsgICAgZm9yICg7IGxlbiA+PSA0OyBsZW4gLT0gNCwgdG8gKz0gNCkgewo+ Pj4gKyAgICAgICAgdTMyIHZhbCA9IF9fcmF3X3JlYWRsKGZyb20pOwo+Pj4gKyAgICAgICAgbWVt Y3B5KHRvLCAmdmFsLCA0KTsKPj4gCj4+IE5vIG5lZWQgdG8gdXNlIG1lbWNweSBmb3IgNCBieXRl cy4gWW91IGNhbiBkbzogcHV0X3VuYWxpZ25lZCh2YWwsIAo+PiAodTMyIH8qKXRvKTsKPj4gCj4g Cj4gU3VyZS4KPiAKPiAKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICBpZiAobGVuKSB7Cj4+PiAr ICAgICAgICB1MzIgdmFsID0gX19yYXdfcmVhZGwoZnJvbSk7Cj4+PiArICAgICAgICBtZW1jcHko dG8sICZ2YWwsIGxlbik7Cj4+IAo+PiBIbW0sIEknbSBub3Qgc3VyZSB0aGF0IGlzIGVuZGlhbi1z YWZlLiBJIHdvdWxkIHByZWZlciBpZiB5b3UgY29waWVkIAo+PiB/Ynl0ZSBieSBieXRlLgo+PiAK PiAKPiBTdXJlLgo+IAo+IAo+Pj4gKyAgICB9Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQg aW5nZW5pY19zZmNfZXhlY19vcF9waW8oc3RydWN0IGluZ2VuaWNfc2ZjICpzZmMsIGNvbnN0IAo+ Pj4gf39zdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApCj4+PiArewo+Pj4gKyAgICBpbnQgcmV0LCB2YWw7 Cj4+PiArCj4+PiArICAgIHZhbCA9IHJlYWRsKHNmYy0+YmFzZSArIFNGQ19SRUdfR0xCKTsKPj4+ ICsgICAgdTMycF9yZXBsYWNlX2JpdHMoJnZhbCwgR0xCX1RSQU5fRElSX1JFQUQsIEdMQl9UUkFO X0RJUl9NQVNLKTsKPj4+ICsgICAgdTMycF9yZXBsYWNlX2JpdHMoJnZhbCwgR0xCX09QX01PREVf U0xBVkUsIEdMQl9PUF9NT0RFX01BU0spOwo+Pj4gKyAgICB3cml0ZWwodmFsLCBzZmMtPmJhc2Ug KyBTRkNfUkVHX0dMQik7Cj4+IAo+PiBCeSB0aGUgd2F5LCBoYXZlIHlvdSBjb25zaWRlcmVkIHVz aW5nIHJlZ21hcD8KPj4gCj4+IEl0IHdvdWxkIGdpdmUgeW91IHRoaW5ncyBsaWtlIHJlZ21hcF91 cGRhdGVfYml0cygpIGZvciB0aGlzIGtpbmQgb2YgCj4+IH90aGluZ3MsIGFuZCByZWdtYXBfZmll bGQoKSB0byBoYW5kbGUgeW91ciBjb25mIHJlZ2lzdGVyIGJlaW5nIGF0IGEgCj4+IH9kaWZmZXJl bnQgYWRkcmVzcyBhY3Jvc3MgU29Dcy4KPj4gCj4gCj4gSXQgc2VlbXMgdGhhdCB0aGUgb3Zlcmhl YWQgb2YgdXNpbmcgcmVnbWFwIHdpbGwgYmUgZ3JlYXRlciB0aGFuIHVzaW5nIAo+IHJlYWRsIGFu ZCB3cml0ZWwsCj4gdGhlIHB1cnBvc2Ugb2YgdXNpbmcgcmVhZGwgYW5kIHdyaXRlbCBpcyB0byBt aW5pbWl6ZSBvdmVyaGVhZCBhbmQgCj4gbWF4aW1pemUgcGVyZm9ybWFuY2UuIDopCgpJZiB5b3Ug cmVhbGx5IHRoaW5rIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHJlYXNvbiBub3QgdG8gdXNlIHJlZ21h cCwgdGhlbiAKcHJvdmUgaXQgd2l0aCBhIGJlbmNobWFyaywgYmVjYXVzZSBJJ20gKnZlcnkqIGRv dWJ0ZnVsIGFib3V0IHlvdXIgY2xhaW0uCgpDaGVlcnMsCi1QYXVsCgo+Pj4gKwo+Pj4gKyAgICB2 YWwgPSBUUkFOX0NPTkZfQ01EX0VOIHwgb3AtPmNtZC5vcGNvZGU7Cj4+PiArCj4+PiArICAgIGlm IChvcC0+YWRkci5uYnl0ZXMgPiAwKSB7Cj4+PiArICAgICAgICB2YWwgfD0gRklFTERfUFJFUChU UkFOX0NPTkZfQUREUl9XSURUSF9NQVNLLCAKPj4+IG9wLT5hZGRyLm5ieXRlcyk7Cj4+PiArCj4+ PiArICAgICAgICB3cml0ZWwob3AtPmFkZHIudmFsICYgMHhmZmZmZmZmZiwgc2ZjLT5iYXNlICsg Cj4+PiB/f1NGQ19SRUdfREVWX0FERFIoMCkpOwo+Pj4gKyAgICAgICAgd3JpdGVsKG9wLT5hZGRy LnZhbCA+PiAzMiwgc2ZjLT5iYXNlICsgCj4+PiB/f1NGQ19SRUdfREVWX0FERFJfUExVUygwKSk7 Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgaWYgKG9wLT5kdW1teS5uYnl0ZXMgPiAwKQo+Pj4g KyAgICAgICAgdmFsIHw9IEZJRUxEX1BSRVAoVFJBTl9DT05GX0RNWV9CSVRTX01BU0ssCj4+PiAr ICAgICAgICAgICAgICAgIG9wLT5kdW1teS5uYnl0ZXMgKiA4IC8gb3AtPmR1bW15LmJ1c3dpZHRo KTsKPj4+ICsKPj4+ICsgICAgaWYgKG9wLT5kYXRhLm5ieXRlcyA+IDApCj4+PiArICAgICAgICB2 YWwgfD0gVFJBTl9DT05GX0RBVEFfRU47Cj4+PiArCj4+PiArICAgIHdyaXRlbCh2YWwsIHNmYy0+ YmFzZSArIFNGQ19SRUdfVFJBTl9DT05GKDApKTsKPj4+ICsgICAgd3JpdGVsKG9wLT5kYXRhLm5i eXRlcywgc2ZjLT5iYXNlICsgU0ZDX1JFR19UUkFOX0xFTik7Cj4+PiArCj4+PiArICAgIGluZ2Vu aWNfc2ZjX3NldF90cmFuc2Zlcl9tb2RlKHNmYywgb3ApOwo+Pj4gKwo+Pj4gKyAgICB3cml0ZWwo MHgxZiwgc2ZjLT5iYXNlICsgU0ZDX1JFR19TQ1IpOwo+PiAKPj4gUmFuZG9tIDB4MWYgdmFsdWUg aGVyZSwgbWF5YmUgdXNlIGEgbWFjcm8/Cj4gCj4gCj4gU3VyZS4KPiAKPiAKPj4gCj4+PiArICAg IHdyaXRlbCh+KElOVENfTUFTS19FTkQgfCBJTlRDX01BU0tfUlJFUSksIHNmYy0+YmFzZSArIAo+ Pj4gf39TRkNfUkVHX0lOVEMpOwo+Pj4gKwo+Pj4gKyAgICB3cml0ZWwoMCwgc2ZjLT5iYXNlICsg U0ZDX1JFR19NRU1fQUREUik7Cj4+PiArCj4+PiArICAgIHdyaXRlbChUUklHX0ZMVVNILCBzZmMt PmJhc2UgKyBTRkNfUkVHX1RSSUcpOwo+Pj4gKyAgICB3cml0ZWwoVFJJR19TVEFSVCwgc2ZjLT5i YXNlICsgU0ZDX1JFR19UUklHKTsKPj4+ICsKPj4+ICsgICAgcmV0ID0gd2FpdF9mb3JfY29tcGxl dGlvbl90aW1lb3V0KCZzZmMtPmNvbXBsZXRpb24sCj4+PiArICAgICAgICAgICAgbXNlY3NfdG9f amlmZmllcyhJTkdFTklDX1NGQ19UUkFOU0ZFUl9USU1FT1VUKSk7Cj4+PiArICAgIGlmICghcmV0 KSB7Cj4+PiArICAgICAgICB3cml0ZWwoMHgxZiwgc2ZjLT5iYXNlICsgU0ZDX1JFR19JTlRDKTsK Pj4+ICsgICAgICAgIHdyaXRlbCgweDFmLCBzZmMtPmJhc2UgKyBTRkNfUkVHX1NDUik7Cj4+PiAr ICAgICAgICBkZXZfZXJyKHNmYy0+ZGV2LCAibGluZTolZCBUaW1lb3V0IGZvciBBQ0sgZnJvbSBT RkMgCj4+PiB/f2RldmljZVxuIiwgX19MSU5FX18pOwo+Pj4gKyAgICAgICAgcmV0dXJuIC1FVElN RURPVVQ7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgaW5nZW5pY19zZmNfcmVhZF9yeGZpZm8o c2ZjLCBvcC0+ZGF0YS5idWYuaW4sIG9wLT5kYXRhLm5ieXRlcyk7Cj4+PiArICAgIHJlYWRsX3Bv bGxfdGltZW91dChzZmMtPmJhc2UgKyBTRkNfUkVHX1NSLCB2YWwsIHZhbCAmIFNSX0VORCwgCj4+ PiB/fzEwLCAwKTsKPj4gCj4+IEluZmluaXRlIHRpbWVvdXQ/IElzIHRoYXQgdmVyeSB3aXNlPwo+ IAo+IAo+IFdpbGwgZml4IGl0IGluIHRoZSBuZXh0IHZlcnNpb24uCj4gCj4gCj4+IAo+Pj4gKwo+ Pj4gKyAgICB3cml0ZWwoSU5UQ19NQVNLX0VORCB8IElOVENfTUFTS19SUkVRLCBzZmMtPmJhc2Ug KyAKPj4+IFNGQ19SRUdfU0NSKTsKPj4+ICsgICAgd3JpdGVsKFRSSUdfU1RPUCwgc2ZjLT5iYXNl ICsgU0ZDX1JFR19UUklHKTsKPj4+ICsKPj4+ICsgICAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+ Pj4gK3N0YXRpYyBpbnQgaW5nZW5pY19zZmNfZXhlY19vcF9kbWEoc3RydWN0IGluZ2VuaWNfc2Zj ICpzZmMsIGNvbnN0IAo+Pj4gf39zdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApCj4+PiArewo+Pj4gKyAg ICBkbWFfYWRkcl90IGFkZHI7Cj4+PiArICAgIGludCByZXQsIHZhbDsKPj4+ICsKPj4+ICsgICAg dmFsID0gcmVhZGwoc2ZjLT5iYXNlICsgU0ZDX1JFR19HTEIpOwo+Pj4gKyAgICB1MzJwX3JlcGxh Y2VfYml0cygmdmFsLCBvcC0+ZGF0YS5kaXIgPT0gU1BJX01FTV9EQVRBX0lOID8KPj4+ICsgICAg ICAgICAgICBHTEJfVFJBTl9ESVJfUkVBRCA6IEdMQl9UUkFOX0RJUl9XUklURSwgCj4+PiBHTEJf VFJBTl9ESVJfTUFTSyk7Cj4+PiArICAgIHUzMnBfcmVwbGFjZV9iaXRzKCZ2YWwsIEdMQl9PUF9N T0RFX0RNQSwgR0xCX09QX01PREVfTUFTSyk7Cj4+PiArICAgIHdyaXRlbCh2YWwsIHNmYy0+YmFz ZSArIFNGQ19SRUdfR0xCKTsKPj4+ICsKPj4+ICsgICAgdmFsID0gVFJBTl9DT05GX0NNRF9FTiB8 IG9wLT5jbWQub3Bjb2RlOwo+Pj4gKwo+Pj4gKyAgICBpZiAob3AtPmFkZHIubmJ5dGVzID4gMCkg ewo+Pj4gKyAgICAgICAgdmFsIHw9IEZJRUxEX1BSRVAoVFJBTl9DT05GX0FERFJfV0lEVEhfTUFT SywgCj4+PiBvcC0+YWRkci5uYnl0ZXMpOwo+Pj4gKyAgICAgICAgd3JpdGVsKG9wLT5hZGRyLnZh bCAmIDB4ZmZmZmZmZmYsIHNmYy0+YmFzZSArIAo+Pj4gf39TRkNfUkVHX0RFVl9BRERSKDApKTsK Pj4+ICsgICAgICAgIHdyaXRlbChvcC0+YWRkci52YWwgPj4gMzIsIHNmYy0+YmFzZSArIAo+Pj4g f39TRkNfUkVHX0RFVl9BRERSX1BMVVMoMCkpOwo+Pj4gKyAgICB9Cj4+PiArCj4+PiArICAgIGlm IChvcC0+ZHVtbXkubmJ5dGVzID4gMCkKPj4+ICsgICAgICAgIHZhbCB8PSBGSUVMRF9QUkVQKFRS QU5fQ09ORl9ETVlfQklUU19NQVNLLAo+Pj4gKyAgICAgICAgICAgICAgICBvcC0+ZHVtbXkubmJ5 dGVzICogOCAvIG9wLT5kdW1teS5idXN3aWR0aCk7Cj4+PiArCj4+PiArICAgIGlmIChvcC0+ZGF0 YS5uYnl0ZXMgPiAwKQo+Pj4gKyAgICAgICAgdmFsIHw9IFRSQU5fQ09ORl9EQVRBX0VOOwo+PiAK Pj4gVGhlcmUncyBhIGxvdCBvZiBjb2RlIGR1cGxpY2F0aW9uIGhlcmUgd2l0aCAKPj4gaW5nZW5p Y19zZmNfZXhlY19vcF9waW8oKS4gf0EgbG90IGNhbiBiZSBmYWN0b3JpemVkLgo+IAo+IAo+IFN1 cmUsIEkgd2lsbCB0cnkgdG8gZG8gaXQuCj4gCj4gCj4+IAo+Pj4gKwo+Pj4gKyAgICB3cml0ZWwo dmFsLCBzZmMtPmJhc2UgKyBTRkNfUkVHX1RSQU5fQ09ORigwKSk7Cj4+PiArICAgIHdyaXRlbChv cC0+ZGF0YS5uYnl0ZXMsIHNmYy0+YmFzZSArIFNGQ19SRUdfVFJBTl9MRU4pOwo+Pj4gKwo+Pj4g KyAgICBpbmdlbmljX3NmY19zZXRfdHJhbnNmZXJfbW9kZShzZmMsIG9wKTsKPj4+ICsKPj4+ICsg ICAgd3JpdGVsKDB4MWYsIHNmYy0+YmFzZSArIFNGQ19SRUdfU0NSKTsKPj4+ICsgICAgd3JpdGVs KH5JTlRDX01BU0tfRU5ELCBzZmMtPmJhc2UgKyBTRkNfUkVHX0lOVEMpOwo+Pj4gKwo+Pj4gKyAg ICBzd2l0Y2ggKG9wLT5kYXRhLmRpcikgewo+Pj4gKyAgICBjYXNlIFNQSV9NRU1fREFUQV9JTjoK Pj4+ICsgICAgICAgIGFkZHIgPSBkbWFfbWFwX3NpbmdsZShzZmMtPmRldiwgb3AtPmRhdGEuYnVm LmluLCAKPj4+IH9/b3AtPmRhdGEubmJ5dGVzLCBETUFfRlJPTV9ERVZJQ0UpOwo+Pj4gKyAgICAg ICAgaWYgKGRtYV9tYXBwaW5nX2Vycm9yKHNmYy0+ZGV2LCBhZGRyKSkgewo+Pj4gKyAgICAgICAg ICAgIGRldl9lcnIoc2ZjLT5kZXYsICJSWCBETUHjgIBtZW1vcnkgbm90IG1hcHBlZFxuIik7Cj4+ PiArICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+PiArICAgICAgICB9Cj4+PiArCj4+PiAr ICAgICAgICB3cml0ZWwoYWRkciwgc2ZjLT5iYXNlICsgU0ZDX1JFR19NRU1fQUREUik7Cj4+PiAr ICAgICAgICBicmVhazsKPj4+ICsKPj4+ICsgICAgY2FzZSBTUElfTUVNX0RBVEFfT1VUOgo+Pj4g KyAgICAgICAgYWRkciA9IGRtYV9tYXBfc2luZ2xlKHNmYy0+ZGV2LCAodm9pZCAqKW9wLT5kYXRh LmJ1Zi5vdXQsCj4+PiArICAgICAgICAgICAgICAgIG9wLT5kYXRhLm5ieXRlcywgRE1BX1RPX0RF VklDRSk7Cj4+PiArICAgICAgICBpZiAoZG1hX21hcHBpbmdfZXJyb3Ioc2ZjLT5kZXYsIGFkZHIp KSB7Cj4+PiArICAgICAgICAgICAgZGV2X2VycihzZmMtPmRldiwgIlRYIERNQeOAgG1lbW9yeSBu b3QgbWFwcGVkXG4iKTsKPj4+ICsgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4+ICsgICAg ICAgIH0KPj4+ICsKPj4+ICsgICAgICAgIHdyaXRlbChhZGRyLCBzZmMtPmJhc2UgKyBTRkNfUkVH X01FTV9BRERSKTsKPj4+ICsgICAgICAgIGJyZWFrOwo+Pj4gKwo+Pj4gKyAgICBkZWZhdWx0Ogo+ Pj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgd3Jp dGVsKFRSSUdfU1RBUlQsIHNmYy0+YmFzZSArIFNGQ19SRUdfVFJJRyk7Cj4+PiArCj4+PiArICAg IHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmc2ZjLT5jb21wbGV0aW9uLAo+Pj4g KyAgICAgICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoSU5HRU5JQ19TRkNfVFJBTlNGRVJfVElNRU9V VCkpOwo+Pj4gKyAgICBpZiAoIXJldCkgewo+Pj4gKyAgICAgICAgd3JpdGVsKDB4MWYsIHNmYy0+ YmFzZSArIFNGQ19SRUdfSU5UQyk7Cj4+PiArICAgICAgICB3cml0ZWwoMHgxZiwgc2ZjLT5iYXNl ICsgU0ZDX1JFR19TQ1IpOwo+Pj4gKyAgICAgICAgZGV2X2VycihzZmMtPmRldiwgImxpbmU6JWQg VGltZW91dCBmb3IgQUNLIGZyb20gU0ZDIAo+Pj4gf39kZXZpY2VcbiIsIF9fTElORV9fKTsKPj4+ ICsgICAgICAgIHJldHVybiAtRVRJTUVET1VUOwo+Pj4gKyAgICB9Cj4+PiArCj4+PiArICAgIGRt YV91bm1hcF9zaW5nbGUoc2ZjLT5kZXYsIGFkZHIsIG9wLT5kYXRhLm5ieXRlcywKPj4+ICsgICAg ICAgICAgICBvcC0+ZGF0YS5kaXIgPT0gU1BJX01FTV9EQVRBX0lOID8gRE1BX0ZST01fREVWSUNF IDogCj4+PiB/f0RNQV9UT19ERVZJQ0UpOwo+PiAKPj4gVXNlIGEgc21hbGwgaW5saW5lIGZ1bmN0 aW9uIGZvciB0aGF0IHRvby4gTXkgcGVyc29uYWwgcnVsZSBpcyB0aGF0IAo+PiA/OiB/aXMgZmlu ZSBpZiB0aGUgbGluZSBmaXRzIGluIDgwIGNoYXJhY3RlcnMsIGJ1dCBpZiB5b3UgaGF2ZSB0byAK Pj4gYnJlYWssIH90aGVuIHlvdSByZWFsbHkgbmVlZCB0byBtb3ZlIGl0IHNvbWV3aGVyZSBlbHNl Lgo+PiAKPiAKPiBTdXJlLgo+IAo+IAo+Pj4gKwo+Pj4gKyAgICB3cml0ZWwoSU5UQ19NQVNLX0VO RCwgc2ZjLT5iYXNlICsgU0ZDX1JFR19TQ1IpOwo+Pj4gKyAgICB3cml0ZWwoVFJJR19TVE9QLCBz ZmMtPmJhc2UgKyBTRkNfUkVHX1RSSUcpOwo+Pj4gKwo+Pj4gKyAgICByZXR1cm4gMDsKPj4+ICt9 Cj4+PiArCj4+PiArc3RhdGljIGludCBpbmdlbmljX3NmY19leGVjX29wKHN0cnVjdCBzcGlfbWVt ICptZW0sIGNvbnN0IHN0cnVjdCAKPj4+IH9/c3BpX21lbV9vcCAqb3ApCj4+PiArewo+Pj4gKyAg ICBzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpID0gbWVtLT5zcGk7Cj4+PiArICAgIHN0cnVjdCBpbmdl bmljX3NmYyAqc2ZjID0gCj4+PiBzcGlfY29udHJvbGxlcl9nZXRfZGV2ZGF0YShzcGktPm1hc3Rl cik7Cj4+PiArICAgIHVpbnRwdHJfdCBhZGRyID0gKHVpbnRwdHJfdClvcC0+ZGF0YS5idWYuaW47 Cj4+PiArCj4+PiArICAgIGluaXRfY29tcGxldGlvbigmc2ZjLT5jb21wbGV0aW9uKTsKPj4+ICsK Pj4+ICsgICAgc3dpdGNoIChvcC0+ZGF0YS5kaXIpIHsKPj4+ICsgICAgY2FzZSBTUElfTUVNX0RB VEFfSU46Cj4+PiArICAgICAgICBpZiAoc2ZjLT5zb2NfaW5mby0+dmVyc2lvbiA+PSBJRF9YMTYw MCB8fCBJU19BTElHTkVEKGFkZHIsIAo+Pj4gNCkpCj4+PiArICAgICAgICAgICAgYnJlYWs7Cj4+ PiArCj4+PiArICAgICAgICBmYWxsdGhyb3VnaDsKPj4+ICsKPj4+ICsgICAgY2FzZSBTUElfTUVN X05PX0RBVEE6Cj4+PiArICAgICAgICByZXR1cm4gaW5nZW5pY19zZmNfZXhlY19vcF9waW8oc2Zj LCBvcCk7Cj4+PiArCj4+PiArICAgIGRlZmF1bHQ6Cj4+PiArICAgICAgICBicmVhazsKPj4+ICsg ICAgfQo+Pj4gKwo+Pj4gKyAgICByZXR1cm4gaW5nZW5pY19zZmNfZXhlY19vcF9kbWEoc2ZjLCBv cCk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgaW5nZW5pY19zZmNfcG9sbF9zdGF0dXMo c3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3QgCj4+PiBzdHJ1Y3Qgf39zcGlfbWVtX29wICpvcCwK Pj4+ICsgICAgICAgICAgICB1MTYgbWFzaywgdTE2IG1hdGNoLCB1bnNpZ25lZCBsb25nIGluaXRp YWxfZGVsYXlfdXMsCj4+PiArICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwb2xsaW5nX2RlbGF5 X3VzLCB1bnNpZ25lZCBsb25nIAo+Pj4gdGltZW91dF9tcykKPj4+ICt7Cj4+PiArICAgIHN0cnVj dCBzcGlfZGV2aWNlICpzcGkgPSBtZW0tPnNwaTsKPj4+ICsgICAgc3RydWN0IGluZ2VuaWNfc2Zj ICpzZmMgPSAKPj4+IHNwaV9jb250cm9sbGVyX2dldF9kZXZkYXRhKHNwaS0+bWFzdGVyKTsKPj4+ ICsgICAgaW50IHJldCwgdmFsOwo+Pj4gKwo+Pj4gKyAgICBpbml0X2NvbXBsZXRpb24oJnNmYy0+ Y29tcGxldGlvbik7Cj4+PiArCj4+PiArICAgIHZhbCA9IHJlYWRsKHNmYy0+YmFzZSArIFNGQ19S RUdfR0xCKTsKPj4+ICsgICAgdTMycF9yZXBsYWNlX2JpdHMoJnZhbCwgR0xCX1RSQU5fRElSX1JF QUQsIEdMQl9UUkFOX0RJUl9NQVNLKTsKPj4+ICsgICAgdTMycF9yZXBsYWNlX2JpdHMoJnZhbCwg R0xCX09QX01PREVfU0xBVkUsIEdMQl9PUF9NT0RFX01BU0spOwo+Pj4gKyAgICB3cml0ZWwodmFs LCBzZmMtPmJhc2UgKyBTRkNfUkVHX0dMQik7Cj4+PiArCj4+PiArICAgIHdyaXRlbChtYXRjaCwg c2ZjLT5iYXNlICsgU0ZDX1JFR19ERVZfU1RBX0VYUCk7Cj4+PiArICAgIHdyaXRlbChtYXNrLCBz ZmMtPmJhc2UgKyBTRkNfUkVHX0RFVl9TVEFfTVNLKTsKPj4+ICsKPj4+ICsgICAgdmFsID0gVFJB Tl9DT05GX1BPTExfRU4gfCBUUkFOX0NPTkZfQ01EX0VOIHwgb3AtPmNtZC5vcGNvZGU7Cj4+PiAr Cj4+PiArICAgIGlmIChvcC0+YWRkci5uYnl0ZXMgPiAwKSB7Cj4+PiArICAgICAgICB2YWwgfD0g RklFTERfUFJFUChUUkFOX0NPTkZfQUREUl9XSURUSF9NQVNLLCAKPj4+IG9wLT5hZGRyLm5ieXRl cyk7Cj4+PiArCj4+PiArICAgICAgICB3cml0ZWwob3AtPmFkZHIudmFsICYgMHhmZmZmZmZmZiwg c2ZjLT5iYXNlICsgCj4+PiB/f1NGQ19SRUdfREVWX0FERFIoMCkpOwo+Pj4gKyAgICAgICAgd3Jp dGVsKG9wLT5hZGRyLnZhbCA+PiAzMiwgc2ZjLT5iYXNlICsgCj4+PiB/f1NGQ19SRUdfREVWX0FE RFJfUExVUygwKSk7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgaWYgKG9wLT5kdW1teS5uYnl0 ZXMgPiAwKQo+Pj4gKyAgICAgICAgdmFsIHw9IEZJRUxEX1BSRVAoVFJBTl9DT05GX0RNWV9CSVRT X01BU0ssCj4+PiArICAgICAgICAgICAgICAgIG9wLT5kdW1teS5uYnl0ZXMgKiA4IC8gb3AtPmR1 bW15LmJ1c3dpZHRoKTsKPj4+ICsKPj4+ICsgICAgaWYgKG9wLT5kYXRhLm5ieXRlcyA+IDApCj4+ PiArICAgICAgICB2YWwgfD0gVFJBTl9DT05GX0RBVEFfRU47Cj4+PiArCj4+PiArICAgIHdyaXRl bCh2YWwsIHNmYy0+YmFzZSArIFNGQ19SRUdfVFJBTl9DT05GKDApKTsKPj4+ICsgICAgd3JpdGVs KG9wLT5kYXRhLm5ieXRlcywgc2ZjLT5iYXNlICsgU0ZDX1JFR19UUkFOX0xFTik7Cj4+PiArCj4+ PiArICAgIGluZ2VuaWNfc2ZjX3NldF90cmFuc2Zlcl9tb2RlKHNmYywgb3ApOwo+Pj4gKwo+Pj4g KyAgICB3cml0ZWwoMHgxZiwgc2ZjLT5iYXNlICsgU0ZDX1JFR19TQ1IpOwo+Pj4gKyAgICB3cml0 ZWwofklOVENfTUFTS19FTkQsIHNmYy0+YmFzZSArIFNGQ19SRUdfSU5UQyk7Cj4+PiArCj4+PiAr ICAgIHdyaXRlbCgwLCBzZmMtPmJhc2UgKyBTRkNfUkVHX01FTV9BRERSKTsKPj4+ICsKPj4+ICsg ICAgd3JpdGVsKFRSSUdfU1RBUlQsIHNmYy0+YmFzZSArIFNGQ19SRUdfVFJJRyk7Cj4+PiArCj4+ PiArICAgIHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmc2ZjLT5jb21wbGV0aW9u LAo+Pj4gKyAgICAgICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoSU5HRU5JQ19TRkNfVFJBTlNGRVJf VElNRU9VVCkpOwo+Pj4gKyAgICBpZiAoIXJldCkgewo+Pj4gKyAgICAgICAgd3JpdGVsKDB4MWYs IHNmYy0+YmFzZSArIFNGQ19SRUdfSU5UQyk7Cj4+PiArICAgICAgICB3cml0ZWwoMHgxZiwgc2Zj LT5iYXNlICsgU0ZDX1JFR19TQ1IpOwo+Pj4gKyAgICAgICAgZGV2X2VycihzZmMtPmRldiwgImxp bmU6JWQgVGltZW91dCBmb3IgQUNLIGZyb20gU0ZDIAo+Pj4gf39kZXZpY2VcbiIsIF9fTElORV9f KTsKPj4+ICsgICAgICAgIHJldHVybiAtRVRJTUVET1VUOwo+Pj4gKyAgICB9Cj4+PiArCj4+PiAr ICAgIHdyaXRlbChTQ1JfQ0xSX0VORCwgc2ZjLT5iYXNlICsgU0ZDX1JFR19TQ1IpOwo+Pj4gKyAg ICB3cml0ZWwoVFJJR19TVE9QLCBzZmMtPmJhc2UgKyBTRkNfUkVHX1RSSUcpOwo+Pj4gKwo+Pj4g KyAgICByZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlf Y29udHJvbGxlcl9tZW1fb3BzIGluZ2VuaWNfc2ZjX21lbV9vcHMgPSB7Cj4+PiArICAgIC5hZGp1 c3Rfb3Bfc2l6ZSA9IGluZ2VuaWNfc2ZjX2FkanVzdF9vcF9zaXplLAo+Pj4gKyAgICAuc3VwcG9y dHNfb3AgPSBpbmdlbmljX3NmY19zdXBwb3J0c19vcCwKPj4+ICsgICAgLmV4ZWNfb3AgPSBpbmdl bmljX3NmY19leGVjX29wLAo+Pj4gKyAgICAucG9sbF9zdGF0dXMgPSBpbmdlbmljX3NmY19wb2xs X3N0YXR1cywKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgaW5nZW5pY19zZmNfc2V0dXAo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKPj4+ICt7Cj4+PiArICAgIHN0cnVjdCBpbmdlbmljX3Nm YyAqc2ZjID0gCj4+PiBzcGlfY29udHJvbGxlcl9nZXRfZGV2ZGF0YShzcGktPm1hc3Rlcik7Cj4+ PiArICAgIHVuc2lnbmVkIGxvbmcgcmF0ZTsKPj4+ICsgICAgaW50IHJldCwgdmFsOwo+Pj4gKwo+ Pj4gKyAgICBpZiAoIXNwaS0+bWF4X3NwZWVkX2h6KQo+Pj4gKyAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4+IAo+PiBNYXliZSBzZXQgYSBzYW5lIGRlZmF1bHQ/Cj4gCj4gCj4gU3VyZS4KPiAKPiAK Pj4gCj4+PiArCj4+PiArICAgIHJldCA9IGNsa19zZXRfcmF0ZShzZmMtPmNsaywgc3BpLT5tYXhf c3BlZWRfaHogKiAyKTsKPj4+ICsgICAgaWYgKHJldCkKPj4+ICsgICAgICAgIHJldHVybiAtRUlO VkFMOwo+Pj4gKwo+Pj4gKyAgICB3cml0ZWwoVFJJR19TVE9QLCBzZmMtPmJhc2UgKyBTRkNfUkVH X1RSSUcpOwo+Pj4gKyAgICB3cml0ZWwoMCwgc2ZjLT5iYXNlICsgU0ZDX1JFR19ERVZfQ09ORik7 Cj4+PiArICAgIHdyaXRlbCgwLCBzZmMtPmJhc2UgKyBTRkNfUkVHX0NHRSk7Cj4+PiArCj4+PiAr ICAgIHZhbCA9IHJlYWRsKHNmYy0+YmFzZSArIFNGQ19SRUdfR0xCKTsKPj4+ICsgICAgdTMycF9y ZXBsYWNlX2JpdHMoJnZhbCwgNjQgLSAxLCBHTEJfVEhSRVNIT0xEX01BU0spOwo+Pj4gKyAgICB3 cml0ZWwodmFsLCBzZmMtPmJhc2UgKyBTRkNfUkVHX0dMQik7Cj4+PiArCj4+PiArICAgIHZhbCA9 IHJlYWRsKHNmYy0+YmFzZSArIFNGQ19SRUdfREVWX0NPTkYpOwo+Pj4gKwo+Pj4gKyAgICAvKiBj cGhhIGJpdDowICwgY3BvbCBiaXQ6MCAqLwo+Pj4gKyAgICB2YWwgJj0gfihERVZfQ09ORl9DUEhB IHwgREVWX0NPTkZfQ1BPTCk7Cj4+PiArICAgIHZhbCB8PSBzcGktPm1vZGUgJiBTUElfQ1BIQSA/ IERFVl9DT05GX0NQSEEgOiAwOwo+Pj4gKyAgICB2YWwgfD0gc3BpLT5tb2RlICYgU1BJX0NQT0wg PyBERVZfQ09ORl9DUE9MIDogMDsKPj4+ICsKPj4+ICsgICAgLyogY2VfZGwgYml0OjEsIGhvbGQg Yml0OjEsIHdwIGJpdDoxICovCj4+PiArICAgIHZhbCB8PSAoREVWX0NPTkZfQ0VfREwgfCBERVZf Q09ORl9IT0xEX0RMIHwgREVWX0NPTkZfV1BfREwpOwo+Pj4gKwo+Pj4gKyAgICB3cml0ZWwodmFs LCBzZmMtPmJhc2UgKyBTRkNfUkVHX0RFVl9DT05GKTsKPj4+ICsKPj4+ICsgICAgdmFsID0gcmVh ZGwoc2ZjLT5iYXNlICsgU0ZDX1JFR19HTEIpOwo+Pj4gKyAgICB1MzJwX3JlcGxhY2VfYml0cygm dmFsLCBHTEJfT1BfTU9ERV9TTEFWRSwgR0xCX09QX01PREVfTUFTSyk7Cj4+PiArICAgIHdyaXRl bCh2YWwsIHNmYy0+YmFzZSArIFNGQ19SRUdfR0xCKTsKPj4+ICsKPj4+ICsgICAgcmF0ZSA9IGNs a19nZXRfcmF0ZShzZmMtPmNsayk7Cj4+IAo+PiBJJ2Qgc3VnZ2VzdCB1c2luZyBjbGtfcm91bmRf cmF0ZSgpIGJlZm9yZSBjbGtfc2V0X3JhdGUoKSBiZWNhdXNlIAo+PiB0aGVuIH95b3Uga25vdyB3 aGF0IGZyZXF1ZW5jeSBpdCdzIGdvaW5nIHRvIGJlLCBhbmQgeW91IGRvbid0IGhhdmUgCj4+IHRv IGNhbGwgf2Nsa19nZXRfcmF0ZSgpIGFmdGVyd2FyZHMuCj4+IAo+IAo+IFN1cmUsIHdpbGwgdHJ5 Lgo+IAo+IAo+IFRoYW5rcyBhbmQgYmVzdCByZWdhcmRzIQo+IAo+IAo+PiBDaGVlcnMsCj4+IC1Q YXVsCj4+IAo+Pj4gKyAgICB2YWwgPSByZWFkbChzZmMtPmJhc2UgKyBTRkNfUkVHX0RFVl9DT05G KTsKPj4+ICsgICAgaWYgKHNmYy0+c29jX2luZm8tPnZlcnNpb24gPj0gSURfWDE2MDAgJiYgcmF0 ZSA+PSAyMDAwMDAwMDApCj4+PiArICAgICAgICB1MzJwX3JlcGxhY2VfYml0cygmdmFsLCBERVZf Q09ORl9TTVBfREVMQVlfMTgwREVHLCAKPj4+IH9/REVWX0NPTkZfU01QX0RFTEFZX01BU0spOwo+ Pj4gKyAgICBlbHNlIGlmIChzZmMtPnNvY19pbmZvLT52ZXJzaW9uID09IElEX1gxMDAwICYmIHJh dGUgPj0gCj4+PiAxMDAwMDAwMDApCj4+PiArICAgICAgICB1MzJwX3JlcGxhY2VfYml0cygmdmFs LCBERVZfQ09ORl9TTVBfREVMQVlfSEFMRl9DWUNMRSwgCj4+PiB/f0RFVl9DT05GX1NNUF9ERUxB WV9NQVNLKTsKPj4+ICsgICAgd3JpdGVsKHZhbCwgc2ZjLT5iYXNlICsgU0ZDX1JFR19ERVZfQ09O Rik7Cj4+PiArCj4+PiArICAgIHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50 IGluZ2VuaWNfc2ZjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+PiArewo+ Pj4gKyAgICBzdHJ1Y3QgaW5nZW5pY19zZmMgKnNmYzsKPj4+ICsgICAgc3RydWN0IHNwaV9jb250 cm9sbGVyICpjdGxyOwo+Pj4gKyAgICBpbnQgcmV0Owo+Pj4gKwo+Pj4gKyAgICBjdGxyID0gc3Bp X2FsbG9jX21hc3RlcigmcGRldi0+ZGV2LCBzaXplb2YoKnNmYykpOwo+Pj4gKyAgICBpZiAoIWN0 bHIpCj4+PiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4+ICsKPj4+ICsgICAgc2ZjID0gc3Bp X2NvbnRyb2xsZXJfZ2V0X2RldmRhdGEoY3Rscik7Cj4+PiArCj4+PiArICAgIHNmYy0+c29jX2lu Zm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoJnBkZXYtPmRldik7Cj4+PiArICAgIGlmICgh c2ZjLT5zb2NfaW5mbykgewo+Pj4gKyAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiTm8gb2Yg bWF0Y2ggZGF0YSBwcm92aWRlZFxuIik7Cj4+PiArICAgICAgICByZXQgPSAtRU5PREVWOwo+Pj4g KyAgICAgICAgZ290byBlcnJfcHV0X21hc3RlcjsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICBz ZmMtPmJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7Cj4+PiAr ICAgIGlmIChJU19FUlIoc2ZjLT5iYXNlKSkgewo+Pj4gKyAgICAgICAgcmV0ID0gUFRSX0VSUihz ZmMtPmJhc2UpOwo+Pj4gKyAgICAgICAgZ290byBlcnJfcHV0X21hc3RlcjsKPj4+ICsgICAgfQo+ Pj4gKwo+Pj4gKyAgICBzZmMtPmNsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAic2ZjIik7 Cj4+PiArICAgIGlmIChJU19FUlIoc2ZjLT5jbGspKSB7Cj4+PiArICAgICAgICByZXQgPSBJU19F UlIoc2ZjLT5jbGspOwo+Pj4gKyAgICAgICAgZ290byBlcnJfcHV0X21hc3RlcjsKPj4+ICsgICAg fQo+Pj4gKwo+Pj4gKyAgICByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoc2ZjLT5jbGspOwo+Pj4g KyAgICBpZiAocmV0KQo+Pj4gKyAgICAgICAgZ290byBlcnJfcHV0X21hc3RlcjsKPj4+ICsKPj4+ ICsgICAgc2ZjLT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOwo+Pj4gKyAgICBpZiAo c2ZjLT5pcnEgPCAwKSB7Cj4+PiArICAgICAgICByZXQgPSBzZmMtPmlycTsKPj4+ICsgICAgICAg IGdvdG8gZXJyX3B1dF9tYXN0ZXI7Cj4+PiArICAgIH0KPj4+ICsKPj4+ICsgICAgc2ZjLT5kZXYg PSAmcGRldi0+ZGV2Owo+Pj4gKwo+Pj4gKyAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBz ZmMpOwo+Pj4gKwo+Pj4gKyAgICByZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIHNm Yy0+aXJxLCAKPj4+IH9/aW5nZW5pY19zZmNfaXJxX2hhbmRsZXIsIDAsCj4+PiArICAgICAgICAg ICAgZGV2X25hbWUoJnBkZXYtPmRldiksIHNmYyk7Cj4+PiArICAgIGlmIChyZXQpIHsKPj4+ICsg ICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byByZXF1ZXN0IGlycSVkLCByZXQg PSAlZFxuIiwgCj4+PiB/f3NmYy0+aXJxLCByZXQpOwo+Pj4gKyAgICAgICAgZ290byBlcnJfcHV0 X21hc3RlcjsKPj4+ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICBjdGxyLT5idXNfbnVtID0gLTE7Cj4+ PiArICAgIGN0bHItPm51bV9jaGlwc2VsZWN0ID0gMTsKPj4+ICsgICAgY3Rsci0+bWVtX29wcyA9 ICZpbmdlbmljX3NmY19tZW1fb3BzOwo+Pj4gKyAgICBjdGxyLT5kZXYub2Zfbm9kZSA9IHBkZXYt PmRldi5vZl9ub2RlOwo+Pj4gKyAgICBjdGxyLT5zZXR1cCA9IGluZ2VuaWNfc2ZjX3NldHVwOwo+ Pj4gKyAgICBjdGxyLT5tb2RlX2JpdHMgPSBTUElfQ1BIQSB8IFNQSV9DUE9MIHwKPj4+ICsgICAg ICAgICAgICBTUElfUlhfRFVBTCB8IFNQSV9SWF9RVUFEIHwgU1BJX1RYX0RVQUwgfCBTUElfVFhf UVVBRDsKPj4+ICsgICAgaWYgKHNmYy0+c29jX2luZm8tPnZlcnNpb24gPj0gSURfWDIwMDApCj4+ PiArICAgICAgICBjdGxyLT5tb2RlX2JpdHMgfD0gU1BJX1JYX09DVEFMIHwgU1BJX1RYX09DVEFM Owo+Pj4gKwo+Pj4gKyAgICByZXQgPSBkZXZtX3NwaV9yZWdpc3Rlcl9jb250cm9sbGVyKCZwZGV2 LT5kZXYsIGN0bHIpOwo+Pj4gKyAgICBpZiAocmV0KQo+Pj4gKyAgICAgICAgZ290byBlcnJfcHV0 X21hc3RlcjsKPj4+ICsKPj4+ICsgICAgcmV0dXJuIDA7Cj4+PiArCj4+PiArZXJyX3B1dF9tYXN0 ZXI6Cj4+PiArICAgIHNwaV9tYXN0ZXJfcHV0KGN0bHIpOwo+Pj4gKwo+Pj4gKyAgICByZXR1cm4g cmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGluZ2VuaWNfc29jX2lu Zm8geDEwMDBfc29jX2luZm8gPSB7Cj4+PiArICAgIC52ZXJzaW9uID0gSURfWDEwMDAsCj4+PiAr Cj4+PiArICAgIC5tYXhfYnVzX3dpZHRoID0gNCwKPj4+ICsKPj4+ICsgICAgLnRyYW5fbW9kZV9t YXNrID0gVFJBTl9DT05GX1RSQU5fTU9ERV9NQVNLLAo+Pj4gK307Cj4+PiArCj4+PiArc3RhdGlj IGNvbnN0IHN0cnVjdCBpbmdlbmljX3NvY19pbmZvIHgxNjAwX3NvY19pbmZvID0gewo+Pj4gKyAg ICAudmVyc2lvbiA9IElEX1gxNjAwLAo+Pj4gKwo+Pj4gKyAgICAubWF4X2J1c193aWR0aCA9IDQs Cj4+PiArCj4+PiArICAgIC50cmFuX21vZGVfbWFzayA9IFRSQU5fQ09ORl9UUkFOX01PREVfTUFT SywKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW5nZW5pY19zb2NfaW5m byB4MjAwMF9zb2NfaW5mbyA9IHsKPj4+ICsgICAgLnZlcnNpb24gPSBJRF9YMjAwMCwKPj4+ICsK Pj4+ICsgICAgLm1heF9idXNfd2lkdGggPSA4LAo+Pj4gKwo+Pj4gKyAgICAudHJhbl9tb2RlX21h c2sgPSBUUkFOX0NGRzFfVFJBTl9NT0RFX01BU0ssCj4+PiArfTsKPj4+ICsKPj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbmdlbmljX3NmY19vZl9tYXRjaGVzW10gPSB7Cj4+ PiArICAgIHsgLmNvbXBhdGlibGUgPSAiaW5nZW5pYyx4MTAwMC1zZmMiLCAuZGF0YSA9ICZ4MTAw MF9zb2NfaW5mbyB9LAo+Pj4gKyAgICB7IC5jb21wYXRpYmxlID0gImluZ2VuaWMseDE2MDAtc2Zj IiwgLmRhdGEgPSAmeDE2MDBfc29jX2luZm8gfSwKPj4+ICsgICAgeyAuY29tcGF0aWJsZSA9ICJp bmdlbmljLHgyMDAwLXNmYyIsIC5kYXRhID0gJngyMDAwX3NvY19pbmZvIH0sCj4+PiArICAgIHsg Lyogc2VudGluZWwgKi8gfQo+Pj4gK307Cj4+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW5n ZW5pY19zZmNfb2ZfbWF0Y2hlcyk7Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgaW5nZW5pY19zZmNfZHJpdmVyID0gewo+Pj4gKyAgICAuZHJpdmVyID0gewo+Pj4gKyAg ICAgICAgLm5hbWUgPSAiaW5nZW5pYy1zZmMiLAo+Pj4gKyAgICAgICAgLm9mX21hdGNoX3RhYmxl ID0gaW5nZW5pY19zZmNfb2ZfbWF0Y2hlcywKPj4+ICsgICAgfSwKPj4+ICsgICAgLnByb2JlID0g aW5nZW5pY19zZmNfcHJvYmUsCj4+PiArfTsKPj4+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlu Z2VuaWNfc2ZjX2RyaXZlcik7Cj4+PiArCj4+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+Pj4g K01PRFVMRV9BVVRIT1IoIuWRqOeQsOadsCAoWmhvdSBZYW5qaWUpIAo+Pj4gPHpob3V5YW5qaWVA d2FueWVldGVjaC5jb20+Iik7Cj4+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJJbmdlbmljIFNvQ3Mg U1BJIEZsYXNoIENvbnRyb2xsZXIgRHJpdmVyIik7Cj4+PiAtLQo+Pj4gMi43LjQKPj4+IAo+PiAK CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K