Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp4030287pxb; Tue, 17 Nov 2020 09:28:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJyYpYbCpngJt29gHeIB2WHQQimagPqUU+pt20WnsrmesrGDAEPCYI/9jDIAP+5zXW8Me6or X-Received: by 2002:a17:906:8282:: with SMTP id h2mr21088716ejx.50.1605634115883; Tue, 17 Nov 2020 09:28:35 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1605634115; cv=pass; d=google.com; s=arc-20160816; b=c7aRLUMPoPVZA0sE+mqRORrvf80e9zKO4k0WnRcJHti3i1zcmbZDaGCKfc/W/0T9tP UZoaTPLs9X/m+5jidwpwJp+uvx8XitoLUlYq356XmlCE75yyalNkUO+hDtFFG9K7pVW3 FU52Q43OV5Cztv3p154dgIAIjgtPNx8qN+4BT54+VcSzZxR7fzIAqko9ANjk8EsdlW9m uq3wPdRz4X6zpl0FIaxi0j+lgdViznc8kZ4YwnXKLem2AvUwmrlCvbxdNxKziWRnYVDg mmX5wtgG49xURmtg9U4f5NPvrrunDDqG+yeIHwHxPyzhJfsnkqFLxBMrTtkGGD7oxqwU dnAg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature:ironport-sdr:dkim-signature; bh=GmALytpzEH/2mTvuxJKcopCWKpC7N5xxeNOAP9g+J0o=; b=aWDR2TouxgecPtTyyBqsGFHTsQeHfvvxXhNt21G9dO6L/Tob+52cvBd/tPNk88FnAt UKZuc+dNk3nxZfTEwXcrAN3lPO1V9B1/9wwCVHWFYrGkBo4SkDAaZBpqOzt3hA+1YP0/ kGcl9EZWTSGG2Ng35fJDDX45O5PY7JhAnNNGlWTJ/b77rT7XjHHj2RuuPO97CAcj84MC ewv53YlO2zS/vLFJ4BfB7pCZSfIhZeZac+J0AOqs1vjzMGQ5U2H10mSS70+EGRfnVQrY iQqxkEMzA5xoTIgYBjUsStTP1JQ8pl0bDqy/lm0MfmSBqPeog+KjOil3b/AF7Cnhynjz a8sA== ARC-Authentication-Results: i=2; mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=Jxrm++16; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=ngRU2dWn; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e16si1607837ejd.39.2020.11.17.09.28.11; Tue, 17 Nov 2020 09:28:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=Jxrm++16; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=ngRU2dWn; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727398AbgKQRYh (ORCPT + 99 others); Tue, 17 Nov 2020 12:24:37 -0500 Received: from esa6.microchip.iphmx.com ([216.71.154.253]:4790 "EHLO esa6.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726174AbgKQRYh (ORCPT ); Tue, 17 Nov 2020 12:24:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1605633875; x=1637169875; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=GmALytpzEH/2mTvuxJKcopCWKpC7N5xxeNOAP9g+J0o=; b=Jxrm++166YRYS0z43bpaKUEU1I69tdyrJQ0ERE4mCkGKqbq+qHpSbRqd HvV7HrOJAjD8+NvBxBFWutfxep/g2uoF2+HnGUsAL3VhazQp0YKoOpjpQ Zz6xMpvBIBRU0Omtkq471l39azPIWuTY1OEERdnzlHbTOuZAiaTnykFrn J9769qLQQyi9ctfFIWFtjWG/t+3nlL9+hE+c/uqE93sgPaU7n/NaYx3E0 V+VURgxRr3ZqxZNcmGvjFnmTCZojYrkF9/6MDUmF0lP/uoV0L/bObHxhs 2e0PUDzafOeMn89qm7APu4Vck12d+xQbst4bZkJTGgWnobptPfQmhjpgv A==; IronPort-SDR: rc1aN4dUVuwyUfkxe24jarhS2h6Bimo92MRIltW6/qXDIpHWu/Lgk0ZYHLg5aNEIz0PYS/89JI Qz0YlSTlx1b3Z+9LU11BaJK122aaCS+yjKyhSCLjKb8jLFUy/66CbmQcaqRxVydeHkxYprBOIR BYZC8bkcbGweOB+bwYEj6XK7AE9HurMQIONNAJmvbe2yCf5Oa03HVzJL5B40FELJW4l3mtKDlL 5lvHoiCREkZo/gZCwBfaTpPqr0noMl4U+Y76qMOKEXaxkHG3JEEYWI/lwa6W5D9+uLTRczLRcT VcM= X-IronPort-AV: E=Sophos;i="5.77,486,1596524400"; d="scan'208";a="34005304" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 17 Nov 2020 10:24:34 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Tue, 17 Nov 2020 10:24:34 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Tue, 17 Nov 2020 10:24:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ScbVDqv/le28+sk+8BCfrK/jaMbhErAFqcjfcvI4HYgbtwulKBYmsLKd1QLchN7FfHw38AYM0A9z3Ml6UcOdVJsj1XU1PCrYYctIJ7gyUJbUZWINyEYWyZrb9AUvNwctLItfYw60DGjtahAd60hP3AxHPHiZsyOOAyXujyvj97sr0BI06+ulO1LCuxbHg4yFirLOxq6P8WpEAucIrj/gfxL13ycLxxRJq1+buLbwuNG7aABElo8ya34DqCeuUyeDQPMzomPkcF7q+XTBtGZOSwRMt9puYAGp5TWrCbnCjBHcQz8hje4m28NyaTVcui2iAnXvCIbgfIQQG41E2252ow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GmALytpzEH/2mTvuxJKcopCWKpC7N5xxeNOAP9g+J0o=; b=VV16SL5ZnfCRqXhkWMCxf8wJA12fJKd0zAXgKuN3GmdwH6DjG6kir81LBubOyniU8IX5qFJadd1LVZCjMQ2UHrzhcGJ/4k749DsBMSGNsgYg84Htt5KfXKqsWaKV8gl7r+hcjNczRhgnDJd6jcR6cLenID7521Fd+fPpHc13EUzhyAavOwmp873fTThE9vc+KsXHAY7ZcUNnCJGL935/JZO13sqq6Cbo8R5/aYn/kIJxXmqPHEr2t6UQKfATMrhLwp9d2wkMv8VokcN/9GHV2rBZ249pipoXRzijBs1j3H6Gr1Ujvj/LE5uk4K2yEKyBcPj6iM31Nd5fAthBdlPlDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GmALytpzEH/2mTvuxJKcopCWKpC7N5xxeNOAP9g+J0o=; b=ngRU2dWnt+xWvnM6AyOjJ3wgTtpebOwzMsNjP2HsN0OxIf4pHNhIEJGFO1qEDRgtA5ijTyYOwcPdWmxUupJab8yFmA1ZLIJzix2CgKbcgSWek97auSOdo9SgII0LxcjqgxykD0UJgJ10SZSZCZiuW4OQPVNP8ko6/xmpffKzd9E= Received: from BN6PR11MB1827.namprd11.prod.outlook.com (2603:10b6:404:fb::19) by BN6PR11MB4002.namprd11.prod.outlook.com (2603:10b6:405:76::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3564.28; Tue, 17 Nov 2020 17:24:30 +0000 Received: from BN6PR11MB1827.namprd11.prod.outlook.com ([fe80::589a:5eca:a0e2:da55]) by BN6PR11MB1827.namprd11.prod.outlook.com ([fe80::589a:5eca:a0e2:da55%4]) with mapi id 15.20.3564.032; Tue, 17 Nov 2020 17:24:30 +0000 From: To: , CC: , , , , Subject: Re: [PATCH v5 2/3] media: atmel: introduce microchip csi2dc driver Thread-Topic: [PATCH v5 2/3] media: atmel: introduce microchip csi2dc driver Thread-Index: AQHWuPibaT2tWlQByU+886//p3UJRKnMQCMAgAADBYCAAFfoAA== Date: Tue, 17 Nov 2020 17:24:30 +0000 Message-ID: <3615c6eb-e475-9a2b-21e5-0b8d8f64f9c6@microchip.com> References: <20201112133437.372475-1-eugen.hristev@microchip.com> <20201112133437.372475-2-eugen.hristev@microchip.com> <20201117115902.unnrnccoj3s4gtam@uno.localdomain> <20201117120951.GC3940@pendragon.ideasonboard.com> In-Reply-To: <20201117120951.GC3940@pendragon.ideasonboard.com> Accept-Language: en-US, ro-RO Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 authentication-results: ideasonboard.com; dkim=none (message not signed) header.d=none;ideasonboard.com; dmarc=none action=none header.from=microchip.com; x-originating-ip: [86.121.125.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 323a8727-d57b-406e-37d9-08d88b1da48d x-ms-traffictypediagnostic: BN6PR11MB4002: x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:4714; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yVREEIeu5TLCUhRrdhylot18WzkmXSi2TZmmkrHCCnXNDPZgch2J+TQDcU8V92ioZy8PPxKh4g81BiuycGilZP80Jrlw68EuCp2+IRWUkD9s7/j4pkusIgfS6onZoJbeE8Viz5xA1IgcRPZrTScJ73u8dYRfRN2J3iehnTKrg6D+lerDcpy8dI3UGo30+UwGmRjp/NeS3zdcESos0ccIUPfULT9c0yG/+nI+yA06wzMIChvoy+WCLUUfE36Dhx5NJlT08KbFBxfZQYwzvCWEwBHxv79/KlGZeWPZQu/DEO3wasHyo4Dv9JFoBTX0DsqnzQ21nU/fmTHBHEpDhCuxRjtf63Dg+8WxN/NiWf7t298doix4Cvu0KiRP0bYgQGhSSoo77vi0CPjd7NuCGAGyVz4ElP0HBljvx/r9EW/70H3fwRWNb9+SRhYZi27ijXdKA6OAvEl+kJQ4sBVtJrEwHewLmuwais3uF5t5lf7ttUc= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN6PR11MB1827.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(36756003)(66476007)(64756008)(71200400001)(498600001)(6486002)(66556008)(66946007)(76116006)(86362001)(66446008)(8676002)(31696002)(6506007)(91956017)(54906003)(186003)(110136005)(53546011)(26005)(966005)(31686004)(2906002)(2616005)(4326008)(8936002)(83380400001)(30864003)(5660300002)(6512007)(461764006)(43740500002)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: 2kdDvrHB85cdgnG8UNa6XN1nhq1bO0PUDwno5VliByYCbw1BkkCiZfRTp5wG8404yEfekjpELgqQ9srnPSIZ9yF8/ihVIdbkb7sIgS+aYi2kg+CovHpmi1BsQ+Cb44vTHTgre598j4eN83ObEJVEBmzPePU211RNITL1XaK7o2YzQMunqVIsD8DHx8MFylj+viv9XNqQrWwJ1kg65RzuA7Fe2aSZZgHda4Y2MdRZOdeV7i6K8ZsWzwhMmIukkTMYTpqltScK8+y2FLUJxviA6U2l/2/aBrTjlGt4VGk2YlRldCt1x4PZ2iC/XMqnF+fOdQMkIgXwQU0uz6q6LuiJ/Y8dzG2E3hnhRo8FwbsSQZ+dOLQsep7R7B8h4TWgWzqqYwotCvTWzHAhfS8fsKzfbGZS7v/tMQ2Sg5hu7jeXf21HTQCXr+HHwx4i6Nijyd3w4DsqcFkyGRhqlzdq0NJE2yIkWRtc/tF5gitk80IPlQihFL3Wpedu724mY22v19uWlZQ2hIzz09KKD8bVWgZiQr9SnzNTkNc7OVhjBCHY+5kL4nYUdqvKDnveeXcRwSzAvFif9QsasJDFEPVeyx5qaFhQI5F7l09isLKM53+IffS1fRmxhgUT933rotYwT0HMwa7GixgwCAQfHzaDD+5lEXaYWtyIU+lxjLnowhfB+zsYEnrv9eEqFM04W+GvDiYe1NPvtVFUzgeXL1cEvxSgfdyziBtZm3aZraqd3Vpz+pVdHKiqPazqRenDB2tbLhSY3TVteinTFoODruS1oOCLqUo2sdofS3nqfgf37+EVjA/94qAWP9b7IDtebB11F8P751bxtGdTQQmdXUnfobdl/1wTTCz6Oa0L2QEvz2YlK20S+MwJmNkyCjZJe9m6UpQOtpzgQuZHndVUOj62M270dw== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <1DE254DD2DDCBB489C8AA33B9D9BFF4C@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN6PR11MB1827.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 323a8727-d57b-406e-37d9-08d88b1da48d X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Nov 2020 17:24:30.1836 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NXJjcon3HmpSFwhkBG1xZO+oRaiIXcRr78LVhJdf/msgVW42k9WT0hunarrcvKPWtqPy4cCk5TaFPnfKr0QVz3ughTqta/hOpsqJfCpBuI8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB4002 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTcuMTEuMjAyMCAxNDowOSwgTGF1cmVudCBQaW5jaGFydCB3cm90ZToNCj4gSGVsbG8gZXZl cnlib2R5LA0KPiANCj4gT24gVHVlLCBOb3YgMTcsIDIwMjAgYXQgMTI6NTk6MDJQTSArMDEwMCwg SmFjb3BvIE1vbmRpIHdyb3RlOg0KPj4gT24gVGh1LCBOb3YgMTIsIDIwMjAgYXQgMDM6MzQ6MzZQ TSArMDIwMCwgRXVnZW4gSHJpc3RldiB3cm90ZToNCj4+PiBNaWNyb2NoaXAgQ1NJMkRDIChDU0ky IERlbXVsdGlwbGV4ZXIgQ29udHJvbGxlcikgaXMgYSBtaXNjIGJyaWRnZSBkZXZpY2UNCj4+PiB0 aGF0IGNvbnZlcnRzIGEgYnl0ZSBzdHJlYW0gaW4gSURJIFN5bm9wc3lzIGZvcm1hdCAoY29taW5n IGZyb20gYSBDU0kySE9TVCkNCj4+PiB0byBhIHBpeGVsIHN0cmVhbSB0aGF0IGNhbiBiZSBjYXB0 dXJlZCBieSBhIHNlbnNvciBjb250cm9sbGVyLg0KPj4+DQo+Pj4gU2lnbmVkLW9mZi1ieTogRXVn ZW4gSHJpc3RldiA8ZXVnZW4uaHJpc3RldkBtaWNyb2NoaXAuY29tPg0KPj4+IC0tLQ0KPj4+IEhl bGxvLA0KPj4+DQo+Pj4gVGhlcmUgc3RpbGwgYXJlIHNvbWUgb3BlbiBxdWVzdGlvbnMgcmVnYXJk aW5nIHRoZSBsYXN0IHJldmlld3Mgb24gdGhlIE1MLg0KPj4+DQo+Pj4gUmVnYXJkaW5nIHRoZSBm b3JtYXQgbGlzdCB3aGljaCBpcyBub3QgY29uc3QsIEkgY2Fubm90IGhhdmUgaXQgY29uc3QgYmVj YXVzZQ0KPj4+IEkgcmVmZXJlbmNlIGVsZW1lbnRzIGZyb20gdGhpcyBsaXN0IGludG8gYSBkeW5h bWljIGxpc3Qgd2hpY2ggaXMgbm9uLWNvbnN0Lg0KPj4+DQo+Pj4gUmVnYXJkaW5nIHRoZSBwcmVz ZW5jZSBvZiB0aGUgdjRsMl9kZXYsIHdpdGhvdXQgdGhpcyBJIGNhbm5vdCBhZGQgYSBub3RpZmll cg0KPj4+IGZvciB0aGlzIGRldmljZSB0byBoYXZlIGl0IGFzeW5jIGNvbXBsZXRlZCAsIHdoZW4g dGhlIHVuZGVybHlpbmcgc3ViZGV2aWNlDQo+Pj4gZmluaXNoZXMgcHJvYmluZy4NCj4+DQo+PiBJ IHNlZSB5b3UgaGF2ZSBhIGRpc2N1c3Npb24gd2l0aCBTYWthcmkgb24tZ29pbmcgb24gdGhpcywg YW5kIEkgaGF2ZQ0KPj4gdGhlIHZlcnkgc2FtZSBjb21tZW50IGhlIGhhZC4NCj4+DQo+PiBTaG91 bGQgYSBzdWItbm90aWZpZXIgYmUgdXNlZCBhbmQgdGhpcyBkcml2ZXIgc2hvdWxkIG5vdCByZWdp c3RlciBhbnkNCj4+IHY0bDJfZGV2IGJ1dCBpbnRlZ3JhdGUgaW4gdGhlIG1lZGlhIGdyYXBoIG9m IHRoZSByZWNlaXZlciA/DQo+Pg0KPj4gRm9yIHJlZmVyZW5jZSwgcmNhci1jc2kyIHVzZXMgc3Vi LW5vdGlmaWVycyBhbmQgcmVnaXN0ZXIgaW4gdGhlDQo+PiByY2FyLXZpbiBtZWRpYSBncmFwaCwg aXQgZG9lc24ndCBuZWVkIHRvIHNldCB1cCBhIHY0bDJfZGV2Lg0KPj4NCj4+IHJjYXItdmluICh0 aGUgRE1BIGVuZ2luZSBkcml2ZXIpIHRoYXQgcmVnaXN0ZXIgdmlkZW8gbm9kZXMgYW5kIHRoZSB2 NGwyLWRldg0KPj4gYWxzbyByZWdpc3RlcnMgdGhlIGRldmljZSBub2RlcyBmb3IgYWxsIHRoZSBj b25uZWN0ZWQgc3ViZGV2aWNlcy4NCj4gDQo+IFN1Yi1ub3RpZmllcnMgd2VyZSBpbnZpdGVkIGZv ciB0aGlzIHB1cnBvc2UsIHNvIEkgdGhpbmsgdGhleSdyZSB0aGUNCj4gcmlnaHQgdG9vbC4NCj4g DQo+Pj4gUmVnYXJkaW5nIHRoZSBjYWxsYmFja3MgZm9yIHNldCBmcmFtZSBpbnRlcnZhbCwgc2V0 IGZyYW1lIHNpemUsIGV0YywgSSBjYW5ub3QNCj4+PiByZW1vdmUgdGhlbSBiZWNhdXNlIGxvc2lu ZyBmdW5jdGlvbmFsaXR5IHRvIHRoZSB1bmRlcmx5aW5nIHN1YmRldmljZSwgYXMNCj4+PiBleHBs YWluZWQgaW4gOg0KPj4+IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDIwLzEwLzEyLzQyNw0KPj4N Cj4+IFVzaW5nIHRoZSBmcmFtZSBzaXplcyBhcyBpbiB0aGUgZXhhbXBsZSB5b3UgcmVwb3J0ZWQs IGlmIHRoaXMgZGV2aWNlIGhhcw0KPj4gbGltaXRhdGlvbnMgb24gdGhlIHN1cHBvcnRlZCBzaXpl cywgKGEgbWluIGFuZCBhIG1heCBtb3N0DQo+PiBwcm9iYWJseSkgdGhhdCdzIHRoZSBvbmx5IHRo aW5nIHRoYXQgc2hvdWxkIGJlIGV4cG9zZWQgZnJvbSB0aGlzDQo+PiBkcml2ZXIgc3ViZGV2aWNl LiBUaGUgc2Vuc29yIHN1YmRldmljZSBpbnN0ZWFkIHdpbGwgcmVwb3J0IHRoZQ0KPj4gYXZhaWxh YmxlIGRpc2NyZXRlIHNpemVzIGFuZCB1c2Vyc3BhY2UgY29uZmlndXJlcyB0aGUgc2Vuc29yJ3Mg c291cmNlDQo+PiBwYWQgYW5kIHRoZSBicmlkZ2UncyBzaW5rIHBhZCB3aXRoIHRoZSBzYW1lIHNp emVzIHRvIHByb3Blcmx5IHNldCB1cCB0aGUNCj4+IGNhcHR1cmUgcGlwZWxpbmUuIHZpZGVvMCBz aG91bGQgbm90IHJlcG9ydCB0aGUgc2l6ZXMgZXhwb3NlZCBieSB0aGUgc2Vuc29yDQo+PiBub3Ig YW55IGluZm9ybWF0aW9uIHRoYXQgZGVwZW5kcyBvbiB3aGF0J3MgY29ubmVjdGVkIHRvIGl0Lg0K PiANCj4gQWdyZWVkLiBTdWJkZXYgZHJpdmVycyBzaG91bGQgcmVtYWluIHNpbXBsZSBhbmQgY292 ZXIgb25seSB0aGUgc3ViZGV2DQo+IHRoZXkgbWFuYWdlLiBCdW5kbGluZyBpdCB0b2dldGhlciBp cyB0aGUgam9iIG9mIHVzZXJzcGFjZS4gSW4gdGhlIGxlZ2FjeQ0KPiBtb2RlbCBpdCB1c2VzIHRv IGJlIHRoZSBqb2Igb2YgdGhlIHRvcC1sZXZlbCBWNEwyIGRyaXZlciAodGhlIG9uZQ0KPiBpbXBs ZW1lbnRpbmcgdjRsMl9kZXZpY2UpLCBidXQgdGhhdCdzIGxlZ2FjeSwgZXNwZWNpYWxseSBmb3Ig ZW1iZWRkZWQNCj4gY2FtZXJhIHVzZSBjYXNlcy4gSW4gYW55IGNhc2UsIHRoZSB0b3AtbGV2ZWwg bG9naWMgbXVzdCBub3QgYmUgc3ByZWFkDQo+IGFjcm9zcyBzdWJkZXZpY2VzLg0KPiANCj4+IEkg a25vdyB3aGF0IHlvdXIgbmV4dCBxdWVzdGlvbiBpczogd2hhdCBhYm91dCBleGlzdGluZyBhcHBs aWNhdGlvbg0KPj4gdGhhdCBvbmx5IGtub3cgYWJvdXQgdmlkZW8wIGFuZCB3YW50IHRvIHNldHVw IGV2ZXJ5dGhpbmcgZnJvbSB0aGVyZS4gSQ0KPj4gdW5kZXJzdGFuZCB2ZW5kb3JzIG5vdCB3YW50 aW5nIHRvIHdyYXAgZ3N0cmVhbWVyIG9yIHdoYXQgaXMgdXNlZCBpbg0KPj4gdGhlIHdpbGQgaW4g Y3VzdG9tIHNjcmlwdHMgdGhhdCBzZXRzIHVwIHRoZSBwaXBlbGluZSBvcHBvcnR1bmVseQ0KPj4g YmVmb3JlIHN0cmVhbWluZywgYW5kIEknbSBwcmV0dHkgc3VyZSB5b3Uga25vdyB3aGF0IGlzIHRo ZSBzb2x1dGlvbiBJDQo+PiB3b3VsZCBwcm9wb3NlIGZvciB0aGlzIDopDQo+Pg0KPj4gSSd2ZSBq dXN0IGdvbmUgdGhyb3VnaCB0aGUgc2FtZSBwYXRoIHdpdGggUlBpJ3MgVW5pY2FtLCB0aGF0IGRv ZXMgdGhlDQo+PiBzYW1lIHRoaW5nIGFzIHlvdXIgb25lIGRvZXM6IGl0J3MgYW4gTUMgZHJpdmVy LCBidXQgd2FudHMgdG8gY29udHJvbA0KPj4gdGhlIHNlbnNvciB0aHJvdWdoIHRoZSB2NGwyLXN1 YmRldiBrQVBJIHRvIHN1cHBvcnQgbGVnYWN5IHVzZSBjYXNlcw0KPj4gbm90IGNvdmVyZWQgYnkg bGliY2FtZXJhLiBUaGUgZmFjdCBpcyB0aGF0IHdlJ3JlIHN0dWNrIGluIHRoaXMgbGltYm8NCj4+ IHdoZXJlIE1DIHBpcGVsaW5lIHRyaWVzIHRvIGRlY291cGxlIGNvbXBvbmVudHMgb25lIGZyb20g ZWFjaCBvdGhlciBhbmQNCj4+IGRlbGVnYXRlIHRoZWlyIGNvbmZpZ3VyYXRpb24gdG8gdXNlcnNw YWNlLCBidXQgYXQgdGhlIHNhbWUgdGltZQ0KPj4gdmVuZG9ycyB3YW50IHRvIGJlIGFibGUgdG8g dXNlIHRoZSBzaW1wbGUgcGxhaW4gdmlkZW8gbm9kZSBjZW50cmljDQo+PiBpbnRlcmZhY2UgYmVj YXVzZSBvZiB0aGVpciBleGlzdGluZyB1c2VyIGJhc2UsIHNvIEkgdW5kZXJzdGFuZCB5b3VyDQo+ PiBkaXNjb21mb3J0LCBidXQgdGhlICdzaW1wbGUgcGxhaW4nIGFwcHJvYWNoIGlzIHdoYXQncyBw cmV2ZW50aW5nIExpbnV4DQo+PiBwbGF0Zm9ybXMgdG8gYmUgaW4tcGFyIHdpdGggcHJvcHJpZXRh cnkgYW5kIGN1c3RvbSBzb2x1dGlvbnMgZm9yIGFueQ0KPj4gdXNlIGNhc2UgdGhhdCBpcyBub3Qg YSBzaW1wbGUgZnJhbWUgY2FwdHVyZSwgc28gSSB0aGluayBpdCdzIGZhaXIgZm9yDQo+PiBtYWlu bGluZSB0byBwdXNoIGZvciB0aGlzIGV2b2x1dGlvbiB0byBoYXBwZW4uIEp1c3QgbXkyYyBvZiBj b3Vyc2UuDQo+IA0KPiBDb21wYXRpYmlsaXR5IHdpdGggdGhlIHVzZXJzcGFjZSBvZiBkb3duc3Ry ZWFtIGtlcm5lbHMgaXMgaW1wb3J0YW50LCBidXQNCj4gdGhhdCdzIGEgZG93bnN0cmVhbSBrZXJu ZWwgaXNzdWUuIEluIG1haW5saW5lIHdlIHdhbnQgdG8gZ28gdGhlIE1DIHdheSwNCj4gYW5kIGRv d25zdHJlYW0gY2FuIHRoZW4sIGlmIGRlc2lyZWQsIGltcGxlbWVudCB0aGUgY29uZmlndXJhdGlv biBvZiB0aGUNCj4gcGlwZWxpbmUgaW4gdGhlIHRvcC1sZXZlbCBWNEwyIGRyaXZlciBpbiB0aGUg a2VybmVsIHRvIHN1cHBvcnQgdGhlDQo+IGV4aXN0aW5nIHVzZXJiYXNlLiBGb3IgbmV3IGRyaXZl cnMgSSB3b3VsZG4ndCByZWNvbW1lbmQgdGhhdCwgZm9yDQo+IGV4aXN0aW5nIGRvd25zdHJlYW0g ZHJpdmVycyBpdCBtYXkgYmUgcmVxdWlyZWQuDQoNCkhlbGxvLA0KDQpGaXJzdCBvZiBhbGwgdGhh bmsgeW91IGZvciB0aGUgcmV2aWV3IGFuZCBleHBsYW5hdGlvbnMuDQoNCkkgYW0gc3RpbGwgY29u ZnVzZWQgYWJvdXQgaG93IGRvZXMgdGhlIHVzZXJzcGFjZSBrbm93IHdoaWNoIGVsZW1lbnRzIGFy ZSANCmluIHRoZSBwaXBlbGluZSBhbmQgaG93IHRvIGNvbm5lY3QgdGhlbSA/DQpBbmQgaWYgdGhp cyBpcyB0aGUgY2FzZSwgd2hhdCBpcyB0aGUgcHVycG9zZSBvZiB0aGUgZW5kcG9pbnRzIGluIHRo ZSBEVCA/DQoNCkF0IHRoaXMgbW9tZW50LCBJIGp1c3QgdXNlIHRoZSAvZGV2L3ZpZGVvMCwgYmVj YXVzZSB0aGUgdG9wIHY0bDIgZHJpdmVyIA0KY29uZmlndXJlcyB0aGUgc3ViZGV2aWNlLCBhbmQg dGhpcyBzdWJkZXZpY2UgY29uZmlndXJlcyBpdCdzIG93biANCnN1YmRldmljZSBhbmQgc28gb24s IHVudGlsIHRoZSBzZW5zb3IgaXRzZWxmLg0KDQpNeSB0b3AgdjRsMiBkcml2ZXIgd2lsbCBub3Qg J2NvbXBsZXRlJyB1bmxlc3MgYSBzdWJkZXZpY2UgcmVnaXN0ZXJzIA0KaXRzZWxmICwgYW5kIGlm IHRoaXMgc3ViZGV2aWNlIGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIA0KcmVnYXJk aW5nIGl0cyBmb3JtYXRzLCB0aGUgcHJvYmUgb2YgdGhlIHRvcCB2NGwyIGRyaXZlciB3aWxsIGZh aWwsIA0KYmVjYXVzZSBpdCB3aWxsIG5vdCBmaW5kIGNvbXBhdGliaWxpdHkgYmV0d2VlbiBpdCdz IHN1cHBvcnRlZCBpbnB1dCANCmZvcm1hdHMgYW5kIHdoYXQgdGhlIHN1YmRldmljZSBwcm92aWRl cy4NCg0KU28gd2hhdCB0byBkbyBpbiB0aGlzIGNhc2UgPyBMaWJjYW1lcmEgd2lsbCBjb25maWd1 cmUgdGhpcyB3aG9sZSANCnBpcGVsaW5lIGZvciBtZSAsIGlmIHRoZSBkcml2ZXJzIGp1c3QgcHJv YmUgKCBhbmQgc3RhcnQvc3RvcCBzdHJlYW1pbmcgDQpieSBzZWxlY3RpbmcgdGhlIHJlc3BlY3Rp dmUgcmVnaXN0ZXJzKSA/IG9yIGhvdyB0byBkbyB0aGlzIHdob2xlIA0KcGlwZWxpbmUgY29uZmln dXJhdGlvbiA/DQoNCg0KPiANCj4+IFNvbWUgbW9yZSBjb21tZW50cyBvbiB0aGUgaW1wbGVtZW50 YXRpb24gYmVsb3cNCj4+DQo+Pj4gQ2hhbmdlcyBpbiB2NToNCj4+PiAtIG9ubHkgaW4gYmluZGlu Z3MNCj4+Pg0KPj4+IENoYW5nZXMgaW4gdjQ6DQo+Pj4gLSBub3cgdXNpbmcgZ2V0X21idXNfY29u ZmlnIG9wcyB0byBnZXQgZGF0YSBmcm9tIHRoZSBzdWJkZXZpY2UsIGxpa2UgdGhlDQo+Pj4gdmly dHVhbCBjaGFubmVsIGlkLCBhbmQgdGhlIGNsb2NrIHR5cGUuDQo+Pj4gLSBub3cgaGF2aW5nIHBv c3NpYmlsaXR5IHRvIHNlbGVjdCBhbnkgb2YgdGhlIFJBVzEwIGRhdGEgbW9kZXMNCj4+PiAtIGF0 IGNvbXBsZXRpb24gdGltZSwgc2VsZWN0IHdoaWNoIGZvcm1hdHMgYXJlIGFsc28gYXZhaWxhYmxl IGluIHRoZSBzdWJkZXZpY2UsDQo+Pj4gYW5kIG1vdmUgdG8gdGhlIGR5bmFtaWMgbGlzdCBhY2Nv cmRpbmdseQ0KPj4+IC0gY2hhbmdlZCB0aGUgcGlwZWxpbmUgaW50ZWdyYXRpb24sIGRvIG5vdCBh ZHZlcnRpc2Ugc3ViZGV2IHJlYWR5IGF0IHByb2JlIHRpbWUuDQo+Pj4gd2FpdCB1bnRpbCBjb21w bGV0aW9uIGlzIGRvbmUsIGFuZCB0aGVuIHN0YXJ0IGEgd29ya3F1ZXVlIHRoYXQgd2lsbCByZWdp c3Rlcg0KPj4+IHRoaXMgZGV2aWNlIGFzIGEgc3ViZGV2aWNlIGZvciB0aGUgbmV4dCBlbGVtZW50 IGluIHBpcGVsaW5lLg0KPj4+IC0gbW92ZWQgdGhlIHNfcG93ZXIgY29kZSBpbnRvIGEgZGlmZmVy ZW50IGZ1bmN0aW9uIGNhbGxlZCBub3cgY3NpMmRjX3Bvd2VyDQo+Pj4gdGhhdCBpcyBjYWxsZWQg d2l0aCBDT05GSUdfUE0gZnVuY3Rpb25zLiBUaGlzIGlzIGFsc28gY2FsbGVkIGF0IGNvbXBsZXRp b24sDQo+Pj4gdG8gaGF2ZSB0aGUgZGV2aWNlIHJlYWR5IGluIGNhc2UgQ09ORklHX1BNIGlzIG5v dCBzZWxlY3RlZCBvbiB0aGUgcGxhdGZvcm0uDQo+Pj4gLSBtZXJnZWQgdHJ5X2ZtdCBpbnRvIHNl dF9mbXQNCj4+PiAtIGRyaXZlciBjbGVhbnVwLCB3cmFwcGVkIGxpbmVzIG92ZXIgODAgY2hhcmFj dGVycw0KPj4+DQo+Pj4gQ2hhbmdlcyBpbiB2MjoNCj4+PiAtIG1vdmVkIGRyaXZlciB0byBwbGF0 Zm9ybS9hdG1lbA0KPj4+IC0gZml4ZWQgbWlub3IgdGhpbmdzIGFzIHBlciBTYWthcmkncyByZXZp ZXcNCj4+PiAtIHN0aWxsIHNvbWUgdGhpbmdzIGZyb20gdjIgcmV2aWV3IGFyZSBub3QgeWV0IGFk ZHJlc3NlZCwgdG8gYmUgZm9sbG93ZWQgdXANCj4+Pg0KPj4+ICAgZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hdG1lbC9LY29uZmlnICAgICAgICAgIHwgIDEzICsNCj4+PiAgIGRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYXRtZWwvTWFrZWZpbGUgICAgICAgICB8ICAgMSArDQo+Pj4gICAuLi4vbWVkaWEv cGxhdGZvcm0vYXRtZWwvbWljcm9jaGlwLWNzaTJkYy5jICAgfCA3ODUgKysrKysrKysrKysrKysr KysrDQo+Pj4gICAzIGZpbGVzIGNoYW5nZWQsIDc5OSBpbnNlcnRpb25zKCspDQo+Pj4gICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9taWNyb2NoaXAtY3Np MmRjLmMNCj4+Pg0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVs L0tjb25maWcgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL0tjb25maWcNCj4+PiBpbmRl eCA5OWI1MTIxM2Y4NzEuLjE0N2UxYzE0MTI5YiAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL2F0bWVsL0tjb25maWcNCj4+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL2F0bWVsL0tjb25maWcNCj4+PiBAQCAtMzIsMyArMzIsMTYgQEAgY29uZmlnIFZJREVPX0FU TUVMX0lTSQ0KPj4+ICAgICAgaGVscA0KPj4+ICAgICAgICBUaGlzIG1vZHVsZSBtYWtlcyB0aGUg QVRNRUwgSW1hZ2UgU2Vuc29yIEludGVyZmFjZSBhdmFpbGFibGUNCj4+PiAgICAgICAgYXMgYSB2 NGwyIGRldmljZS4NCj4+PiArDQo+Pj4gK2NvbmZpZyBWSURFT19NSUNST0NISVBfQ1NJMkRDDQo+ Pj4gKyAgIHRyaXN0YXRlICJNaWNyb2NoaXAgQ1NJMiBEZW11eCBDb250cm9sbGVyIg0KPj4+ICsg ICBkZXBlbmRzIG9uIFZJREVPX1Y0TDIgJiYgQ09NTU9OX0NMSyAmJiBPRg0KPj4+ICsgICBkZXBl bmRzIG9uIEFSQ0hfQVQ5MSB8fCBDT01QSUxFX1RFU1QNCj4+PiArICAgc2VsZWN0IE1FRElBX0NP TlRST0xMRVINCj4+PiArICAgc2VsZWN0IFZJREVPX1Y0TDJfU1VCREVWX0FQSQ0KPj4+ICsgICBz ZWxlY3QgVjRMMl9GV05PREUNCj4+PiArICAgaGVscA0KPj4+ICsgICAgIENTSTIgRGVtdXggQ29u dHJvbGxlciBkcml2ZXIuIENTSTJEQyBpcyBhIGhlbHBlciBjaGlwDQo+Pj4gKyAgICAgdGhhdCBj b252ZXJ0cyBJREkgaW50ZXJmYWNlIGJ5dGUgc3RyZWFtIHRvIGEgcGFyYWxsZWwgcGl4ZWwgc3Ry ZWFtLg0KPj4+ICsgICAgIEl0IHN1cHBvcnRzIHZhcmlvdXMgUkFXIGZvcm1hdHMgYXMgaW5wdXQu DQo+Pj4gKyAgICAgUGVyZm9ybXMgY2xvY2sgZG9tYWluIGNyb3NzaW5nIGJldHdlZW4gaGFyZHdh cmUgYmxvY2tzLg0KPj4NCj4+IElzIHRoZSBsYXN0IHBocmFzZSBuZWNlc3NhcnkgPyBBbHNvIG1p c3NpbmcgdGhlIHVzdWFsDQo+Pg0KPj4gICAgICAgICAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBh cyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlDQo+PiAgICAgICAgICBtb2R1bGUgd2lsbCBi ZSBjYWxsZWQgLi4uDQo+Pg0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L2F0bWVsL01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9NYWtlZmlsZQ0K Pj4+IGluZGV4IGM1YzAxNTU2YzY1My4uOGU4MGFmNTAwYmY1IDEwMDY0NA0KPj4+IC0tLSBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvTWFrZWZpbGUNCj4+PiArKysgYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL2F0bWVsL01ha2VmaWxlDQo+Pj4gQEAgLTUsMyArNSw0IEBAIGF0bWVsLXhp c2Mtb2JqcyA9IGF0bWVsLXNhbWE3ZzUtaXNjLm8gYXRtZWwtaXNjLWJhc2Uubw0KPj4+ICAgb2Jq LSQoQ09ORklHX1ZJREVPX0FUTUVMX0lTSSkgKz0gYXRtZWwtaXNpLm8NCj4+PiAgIG9iai0kKENP TkZJR19WSURFT19BVE1FTF9JU0MpICs9IGF0bWVsLWlzYy5vDQo+Pj4gICBvYmotJChDT05GSUdf VklERU9fQVRNRUxfWElTQykgKz0gYXRtZWwteGlzYy5vDQo+Pj4gK29iai0kKENPTkZJR19WSURF T19NSUNST0NISVBfQ1NJMkRDKSArPSBtaWNyb2NoaXAtY3NpMmRjLm8NCj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9taWNyb2NoaXAtY3NpMmRjLmMgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL21pY3JvY2hpcC1jc2kyZGMuYw0KPj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5mZGExZDU4ODJkYmINCj4+PiAt LS0gL2Rldi9udWxsDQo+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9taWNy b2NoaXAtY3NpMmRjLmMNCj4+PiBAQCAtMCwwICsxLDc4NSBAQA0KPj4+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4NCj4+IE5pdDogSSBzZWUgR1BMLTIuMCBsaXN0ZWQg YXMgZGVwcmVjYXRlZCBieSBzcGR4Lm9yZw0KPj4gU2hvdWxkIHlvdSB1c2Ugb25lIG9mOg0KPj4g ICAgICAgICAgICAgICAgR1BMLTIuMC1vbmx5DQo+PiAgICAgICAgICAgICAgICAgICAgICAgIEdQ TC0yLjAtb3ItbGF0ZXINCj4+DQo+Pj4gKy8qDQo+Pj4gKyAqIE1pY3JvY2hpcCBDU0kyIERlbXV4 IENvbnRyb2xsZXIgKENTSTJEQykgZHJpdmVyDQo+Pj4gKyAqDQo+Pj4gKyAqIENvcHlyaWdodCAo QykgMjAxOC0yMDIwIE1pY3JvY2hpcCBUZWNobm9sb2d5LCBJbmMuDQo+Pj4gKyAqDQo+Pj4gKyAq IEF1dGhvcjogRXVnZW4gSHJpc3RldiA8ZXVnZW4uaHJpc3RldkBtaWNyb2NoaXAuY29tPg0KPj4+ ICsgKg0KPj4+ICsgKi8NCj4+PiArDQo+Pj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4+PiAr I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPj4+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4NCj4+ PiArI2luY2x1ZGUgPGxpbnV4L29mX2dyYXBoLmg+DQo+Pj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4NCj4+PiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4+PiAr I2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Mi5oPg0KPj4+ICsNCj4+PiArI2luY2x1ZGUgPG1lZGlh L3Y0bDItZGV2aWNlLmg+DQo+Pj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWZ3bm9kZS5oPg0KPj4+ ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1zdWJkZXYuaD4NCj4+PiArI2luY2x1ZGUgPG1lZGlhL3Zp ZGVvYnVmMi1kbWEtY29udGlnLmg+DQo+Pj4gKw0KPj4+ICsvKiBHbG9iYWwgY29uZmlndXJhdGlv biByZWdpc3RlciAqLw0KPj4+ICsjZGVmaW5lIENTSTJEQ19HQ0ZHICAgICAgICAgICAgICAgICAg ICAgICAgMHgwDQo+Pj4gKw0KPj4+ICsvKiBNSVBJIHNlbnNvciBwaXhlbCBjbG9jayBpcyBmcmVl IHJ1bm5pbmcgKi8NCj4+PiArI2RlZmluZSBDU0kyRENfR0NGR19NSVBJRlJOICAgICAgICAgICAg ICAgIEJJVCgwKQ0KPj4+ICsvKiBPdXRwdXQgd2F2ZWZvcm0gaW50ZXItbGluZSBtaW5pbXVtIGRl bGF5ICovDQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX0dDRkdfSExDKHYpICAgICAgICAgKCh2KSA8PCA0 KQ0KPj4+ICsjZGVmaW5lIENTSTJEQ19HQ0ZHX0hMQ19NQVNLICAgICAgICAgICAgICAgR0VOTUFT Syg3LCA0KQ0KPj4+ICsvKiBTQU1BN0c1IHJlcXVpcmVzIGEgSExDIGRlbGF5IG9mIDE1ICovDQo+ Pj4gKyNkZWZpbmUgU0FNQTdHNV9ITEMgICAgICAgICAgICAgICAgICAgICAgICAoMTUpDQo+Pj4g Kw0KPj4+ICsvKiBHbG9iYWwgY29udHJvbCByZWdpc3RlciAqLw0KPj4+ICsjZGVmaW5lIENTSTJE Q19HQ1RMUiAgICAgICAgICAgICAgICAgICAgICAgMHgwNA0KPj4+ICsjZGVmaW5lIENTSTJEQ19H Q1RMUl9TV1JTVCAgICAgICAgIEJJVCgwKQ0KPj4+ICsNCj4+PiArLyogR2xvYmFsIHN0YXR1cyBy ZWdpc3RlciAqLw0KPj4+ICsjZGVmaW5lIENTSTJEQ19HUyAgICAgICAgICAgICAgICAgIDB4MDgN Cj4+PiArDQo+Pj4gKy8qIFNTUCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyICovDQo+Pj4gKyNk ZWZpbmUgQ1NJMkRDX1NTUElTICAgICAgICAgICAgICAgICAgICAgICAweDI4DQo+Pj4gKy8qIFBp cGUgdXBkYXRlIHJlZ2lzdGVyICovDQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX1BVICAgICAgICAgICAg ICAgICAgMHhDMA0KPj4+ICsvKiBWaWRlbyBwaXBlIGF0dHJpYnV0ZXMgdXBkYXRlICovDQo+Pj4g KyNkZWZpbmUgQ1NJMkRDX1BVX1ZQICAgICAgICAgICAgICAgICAgICAgICBCSVQoMCkNCj4+PiAr DQo+Pj4gKy8qIFBpcGUgdXBkYXRlIHN0YXR1cyByZWdpc3RlciAqLw0KPj4+ICsjZGVmaW5lIENT STJEQ19QVVMgICAgICAgICAgICAgICAgIDB4QzQNCj4+PiArDQo+Pj4gKy8qIFZpZGVvIHBpcGVs aW5lIGVuYWJsZSByZWdpc3RlciAqLw0KPj4+ICsjZGVmaW5lIENTSTJEQ19WUEUgICAgICAgICAg ICAgICAgIDB4RjgNCj4+PiArI2RlZmluZSBDU0kyRENfVlBFX0VOQUJMRSAgICAgICAgICBCSVQo MCkNCj4+PiArDQo+Pj4gKy8qIFZpZGVvIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIg Ki8NCj4+PiArI2RlZmluZSBDU0kyRENfVlBDRkcgICAgICAgICAgICAgICAgICAgICAgIDB4RkMN Cj4+PiArLyogRGF0YSB0eXBlICovDQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RUKHYpICAg ICAgICAgKCh2KSA8PCAwKQ0KPj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19EVF9NQVNLICAgICAg ICAgICAgICAgR0VOTUFTSyg1LCAwKQ0KPj4+ICsvKiBWaXJ0dWFsIGNoYW5uZWwgaWRlbnRpZmll ciAqLw0KPj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19WQyh2KSAgICAgICAgICgodikgPDwgNikN Cj4+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfVkNfTUFTSyAgICAgICAgICAgICAgIEdFTk1BU0so NywgNikNCj4+PiArLyogRGVjb21wcmVzc2lvbiBlbmFibGUgKi8NCj4+PiArI2RlZmluZSBDU0ky RENfVlBDRkdfREUgICAgICAgICAgICAgICAgICAgIEJJVCg4KQ0KPj4+ICsvKiBEZWNvZGVyIG1v ZGUgKi8NCj4+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRE0odikgICAgICAgICAoKHYpIDw8IDkp DQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RNX0RFQ09ERVI4VE8xMiAgICAgICAwDQo+Pj4g Ky8qIERlY29kZXIgcHJlZGljdG9yIDIgc2VsZWN0aW9uICovDQo+Pj4gKyNkZWZpbmUgQ1NJMkRD X1ZQQ0ZHX0RQMiAgICAgICAgICAgQklUKDEyKQ0KPj4+ICsvKiBSZWNvbW1lbmRlZCBtZW1vcnkg c3RvcmFnZSAqLw0KPj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19STVMgICAgICAgICAgIEJJVCgx MykNCj4+PiArLyogUG9zdCBhZGp1c3RtZW50ICovDQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZH X1BBICAgICAgICAgICAgICAgICAgICBCSVQoMTQpDQo+Pj4gKw0KPj4+ICsvKiBWaWRlbyBwaXBl bGluZSBjb2x1bW4gcmVnaXN0ZXIgKi8NCj4+PiArI2RlZmluZSBDU0kyRENfVlBDT0wgICAgICAg ICAgICAgICAgICAgICAgIDB4MTAwDQo+Pj4gKy8qIENvbHVtbiBudW1iZXIgKi8NCj4+PiArI2Rl ZmluZSBDU0kyRENfVlBDT0xfQ09MKHYpICAgICAgICAgICAgICAgICgodikgPDwgMCkNCj4+PiAr I2RlZmluZSBDU0kyRENfVlBDT0xfQ09MX01BU0sgICAgICAgICAgICAgIEdFTk1BU0soMTUsIDAp DQo+Pj4gKw0KPj4+ICsvKiBWaWRlbyBwaXBlbGluZSByb3cgcmVnaXN0ZXIgKi8NCj4+PiArI2Rl ZmluZSBDU0kyRENfVlBST1cgICAgICAgICAgICAgICAgICAgICAgIDB4MTA0DQo+Pj4gKy8qIFJv dyBudW1iZXIgKi8NCj4+PiArI2RlZmluZSBDU0kyRENfVlBST1dfUk9XKHYpICAgICAgICAgICAg ICAgICgodikgPDwgMCkNCj4+PiArI2RlZmluZSBDU0kyRENfVlBST1dfUk9XX01BU0sgICAgICAg ICAgICAgIEdFTk1BU0soMTUsIDApDQo+Pj4gKw0KPj4+ICsvKiBWZXJzaW9uIHJlZ2lzdGVyICov DQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAweDFGQw0K Pj4+ICsNCj4+PiArLyogcmVnaXN0ZXIgcmVhZC93cml0ZSBoZWxwZXJzICovDQo+Pj4gKyNkZWZp bmUgY3NpMmRjX3JlYWRsKHN0LCByZWcpICAgICAgICAgICAgICByZWFkbF9yZWxheGVkKChzdCkt PmJhc2UgKyAocmVnKSkNCj4+PiArI2RlZmluZSBjc2kyZGNfd3JpdGVsKHN0LCByZWcsIHZhbCkg ICAgICAgIHdyaXRlbF9yZWxheGVkKCh2YWwpLCBcDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHN0KS0+YmFzZSArIChyZWcpKQ0KPj4+ICsNCj4+PiArLyogc3VwcG9y dGVkIFJBVyBkYXRhIHR5cGVzICovDQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzYgICAgICAg ICAgICAgICAgICAgICAweDI4DQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzcgICAgICAgICAg ICAgICAgICAgICAweDI5DQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzggICAgICAgICAgICAg ICAgICAgICAweDJBDQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzEwICAgICAgICAgICAgICAg ICAgICAweDJCDQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzEyICAgICAgICAgICAgICAgICAg ICAweDJDDQo+Pj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzE0ICAgICAgICAgICAgICAgICAgICAw eDJEDQo+Pj4gKw0KPj4+ICtzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCB7DQo+Pj4gKyAgIHUzMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWJ1c19jb2RlOw0KPj4+ICsgICB1MzIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGR0Ow0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArc3RhdGljIHN0cnVj dCBjc2kyZGNfZm9ybWF0IGNzaTJkY19mb3JtYXRzX2xpc3RbXSA9IHsNCj4+PiArICAgew0KPj4+ ICsgICAgICAgICAgIC5tYnVzX2NvZGUgPSAgICAgICAgICAgIE1FRElBX0JVU19GTVRfU1JHR0Ix MF8xWDEwLA0KPj4+ICsgICAgICAgICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENTSTJEQ19E VF9SQVcxMCwNCj4+PiArICAgfSwgew0KPj4+ICsgICAgICAgICAgIC5tYnVzX2NvZGUgPSAgICAg ICAgICAgIE1FRElBX0JVU19GTVRfU0JHR1IxMF8xWDEwLA0KPj4+ICsgICAgICAgICAgIC5kdCA9 ICAgICAgICAgICAgICAgICAgIENTSTJEQ19EVF9SQVcxMCwNCj4+PiArICAgfSwgew0KPj4+ICsg ICAgICAgICAgIC5tYnVzX2NvZGUgPSAgICAgICAgICAgIE1FRElBX0JVU19GTVRfU0dSQkcxMF8x WDEwLA0KPj4+ICsgICAgICAgICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENTSTJEQ19EVF9S QVcxMCwNCj4+PiArICAgfSwgew0KPj4+ICsgICAgICAgICAgIC5tYnVzX2NvZGUgPSAgICAgICAg ICAgIE1FRElBX0JVU19GTVRfU0dCUkcxMF8xWDEwLA0KPj4+ICsgICAgICAgICAgIC5kdCA9ICAg ICAgICAgICAgICAgICAgIENTSTJEQ19EVF9SQVcxMCwNCj4+PiArICAgfSwNCj4+PiArfTsNCj4+ PiArDQo+Pj4gK2VudW0gbWlwaV9jc2lfcGFkcyB7DQo+Pj4gKyAgIENTSTJEQ19QQURfU0lOSyAg ICAgICAgICAgICAgICAgPSAwLA0KPj4+ICsgICBDU0kyRENfUEFEX1NPVVJDRSAgICAgICAgICAg ICAgID0gMSwNCj4+PiArICAgQ1NJMkRDX1BBRFNfTlVNICAgICAgICAgICAgICAgICA9IDIsDQo+ Pj4gK307DQo+Pj4gKw0KPj4+ICtzdHJ1Y3QgY3NpMmRjX2RldmljZSB7DQo+Pj4gKyAgIHZvaWQg X19pb21lbSAgICAgICAgICAgICAgICAgICAgKmJhc2U7DQo+Pj4gKyAgIHN0cnVjdCB2NGwyX3N1 YmRldiAgICAgICAgICAgICAgY3NpMmRjX3NkOw0KPj4+ICsgICBzdHJ1Y3QgZGV2aWNlICAgICAg ICAgICAgICAgICAgICpkZXY7DQo+Pj4gKyAgIHN0cnVjdCB2NGwyX2RldmljZSAgICAgICAgICAg ICAgdjRsMl9kZXY7DQo+Pj4gKyAgIHN0cnVjdCBjbGsgICAgICAgICAgICAgICAgICAgICAgKnBj bGs7DQo+Pj4gKyAgIHN0cnVjdCBjbGsgICAgICAgICAgICAgICAgICAgICAgKnNjY2s7DQo+Pj4g Kw0KPj4+ICsgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvX3BpcGU7DQo+ Pj4gKw0KPj4+ICsgICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mbXRzOw0K Pj4+ICsgICBzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCAgICAgICAgICAgICoqZm9ybWF0czsNCj4+PiAr DQo+Pj4gKyAgIHN0cnVjdCBjc2kyZGNfZm9ybWF0ICAgICAgICAgICAgKmN1cl9mbXQ7DQo+Pj4g KyAgIHN0cnVjdCBjc2kyZGNfZm9ybWF0ICAgICAgICAgICAgKnRyeV9mbXQ7DQo+Pj4gKw0KPj4+ ICsgICBzdHJ1Y3QgbWVkaWFfcGFkICAgICAgICAgICAgICAgIHBhZHNbQ1NJMkRDX1BBRFNfTlVN XTsNCj4+PiArDQo+Pj4gKyAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrX2dh dGVkOw0KPj4+ICsgICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjOw0KPj4+ICsN Cj4+PiArICAgc3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2ICAgICAgICAqYXNkOw0KPj4+ICsgICBz dHJ1Y3QgdjRsMl9hc3luY19ub3RpZmllciAgICAgIG5vdGlmaWVyOw0KPj4+ICsNCj4+PiArICAg c3RydWN0IHY0bDJfc3ViZGV2ICAgICAgICAgICAgICAqaW5wdXRfc2Q7DQo+Pj4gKw0KPj4+ICsg ICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9wYWQ7DQo+Pj4gKw0KPj4+ ICsgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZDsNCj4+PiArICAg Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3dlcmVkX29uOw0KPj4+ICsNCj4+PiAr ICAgc3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICB3b3JrcTsNCj4+PiArfTsNCj4+PiAr DQo+Pj4gK3N0YXRpYyB2b2lkIGNzaTJkY192cF91cGRhdGUoc3RydWN0IGNzaTJkY19kZXZpY2Ug KmNzaTJkYykNCj4+PiArew0KPj4+ICsgICB1MzIgdnA7DQo+Pj4gKw0KPj4+ICsgICB2cCA9IENT STJEQ19WUENGR19EVChjc2kyZGMtPmN1cl9mbXQtPmR0KSAmIENTSTJEQ19WUENGR19EVF9NQVNL Ow0KPj4+ICsgICB2cCB8PSBDU0kyRENfVlBDRkdfVkMoY3NpMmRjLT52YykgJiBDU0kyRENfVlBD RkdfVkNfTUFTSzsNCj4+PiArICAgdnAgJj0gfkNTSTJEQ19WUENGR19ERTsNCj4+PiArICAgdnAg fD0gQ1NJMkRDX1ZQQ0ZHX0RNKENTSTJEQ19WUENGR19ETV9ERUNPREVSOFRPMTIpOw0KPj4+ICsg ICB2cCAmPSB+Q1NJMkRDX1ZQQ0ZHX0RQMjsNCj4+PiArICAgdnAgJj0gfkNTSTJEQ19WUENGR19S TVM7DQo+Pj4gKyAgIHZwIHw9IENTSTJEQ19WUENGR19QQTsNCj4+PiArDQo+Pj4gKyAgIGNzaTJk Y193cml0ZWwoY3NpMmRjLCBDU0kyRENfVlBDRkcsIHZwKTsNCj4+PiArICAgY3NpMmRjX3dyaXRl bChjc2kyZGMsIENTSTJEQ19WUEUsIENTSTJEQ19WUEVfRU5BQkxFKTsNCj4+PiArICAgY3NpMmRj X3dyaXRlbChjc2kyZGMsIENTSTJEQ19QVSwgQ1NJMkRDX1BVX1ZQKTsNCj4+PiArfQ0KPj4+ICsN Cj4+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqDQo+Pj4gK2NzaTJkY19z ZF90b19jc2kyZGNfZGV2aWNlKHN0cnVjdCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkKQ0KPj4+ICt7 DQo+Pj4gKyAgIHJldHVybiBjb250YWluZXJfb2YoY3NpMmRjX3NkLCBzdHJ1Y3QgY3NpMmRjX2Rl dmljZSwgY3NpMmRjX3NkKTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBjc2kyZGNf ZW51bV9tYnVzX2NvZGUoc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2NvbmZpZyAqY2Zn LA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X21i dXNfY29kZV9lbnVtICpjb2RlKQ0KPj4+ICt7DQo+Pj4gKyAgIHN0cnVjdCBjc2kyZGNfZGV2aWNl ICpjc2kyZGMgPSBjc2kyZGNfc2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4+ICsN Cj4+PiArICAgaWYgKGNvZGUtPmluZGV4ID49IGNzaTJkYy0+bnVtX2ZtdHMpDQo+Pj4gKyAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+Pj4gKw0KPj4+ICsgICBjb2RlLT5jb2RlID0gY3NpMmRj LT5mb3JtYXRzW2NvZGUtPmluZGV4XS0+bWJ1c19jb2RlOw0KPj4+ICsgICByZXR1cm4gMDsNCj4+ PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBjc2kyZGNfc2V0X2ZtdChzdHJ1Y3QgdjRsMl9z dWJkZXYgKmNzaTJkY19zZCwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJf c3ViZGV2X3BhZF9jb25maWcgKmNmZywNCj4+PiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHY0bDJfc3ViZGV2X2Zvcm1hdCAqcmVxX2ZtdCkNCj4+PiArew0KPj4+ICsgICBzdHJ1Y3QgY3Np MmRjX2RldmljZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRjX3Nk KTsNCj4+PiArICAgc3RydWN0IGNzaTJkY19mb3JtYXQgKmZtdDsNCj4+PiArICAgaW50IHJldCwg aTsNCj4+PiArDQo+Pj4gKyAgIGlmICghY3NpMmRjLT5jb21wbGV0ZWQpIHsNCj4+PiArICAgICAg ICAgICBkZXZfZGJnKChjc2kyZGMpLT5kZXYsICJzdWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4i KTsNCj4+PiArICAgICAgICAgICByZXR1cm4gMDsNCj4+PiArICAgfQ0KPj4+ICsNCj4+PiArICAg Zm9yIChmbXQgPSBjc2kyZGMtPmZvcm1hdHNbMF0sIGkgPSAwOyBpIDwgY3NpMmRjLT5udW1fZm10 czsgZm10KyssIGkrKykNCj4+PiArICAgICAgICAgICBpZiAocmVxX2ZtdC0+Zm9ybWF0LmNvZGUg PT0gZm10LT5tYnVzX2NvZGUpDQo+Pj4gKyAgICAgICAgICAgICAgICAgICBjc2kyZGMtPnRyeV9m bXQgPSBmbXQ7DQo+Pj4gKw0KPj4+ICsgICAvKiBpbiBjYXNlIHdlIGNvdWxkIG5vdCBmaW5kIHRo ZSBkZXNpcmVkIGZvcm1hdCwgZGVmYXVsdCB0byBzb21ldGhpbmcgKi8NCj4+PiArICAgaWYgKCFj c2kyZGMtPnRyeV9mbXQgIHx8DQo+Pj4gKyAgICAgICByZXFfZm10LT5mb3JtYXQuY29kZSAhPSBj c2kyZGMtPnRyeV9mbXQtPm1idXNfY29kZSkgew0KPj4+ICsgICAgICAgICAgIGNzaTJkYy0+dHJ5 X2ZtdCA9IGNzaTJkYy0+Zm9ybWF0c1swXTsNCj4+PiArDQo+Pj4gKyAgICAgICAgICAgZGV2X2Ri Zyhjc2kyZGMtPmRldiwNCj4+PiArICAgICAgICAgICAgICAgICAgICJDU0kyREMgdW5zdXBwb3J0 ZWQgZm9ybWF0IDB4JXgsIGRlZmF1bHRpbmcgdG8gMHgleFxuIiwNCj4+PiArICAgICAgICAgICAg ICAgICAgIHJlcV9mbXQtPmZvcm1hdC5jb2RlLCBjc2kyZGMtPmZvcm1hdHNbMF0tPm1idXNfY29k ZSk7DQo+Pj4gKw0KPj4+ICsgICAgICAgICAgIHJlcV9mbXQtPmZvcm1hdC5jb2RlID0gY3NpMmRj LT5mb3JtYXRzWzBdLT5tYnVzX2NvZGU7DQo+Pj4gKyAgIH0NCj4+PiArDQo+Pj4gKyAgIC8qIGlm IHdlIGFyZSBqdXN0IHRyeWluZywgd2UgYXJlIGRvbmUgKi8NCj4+PiArICAgaWYgKHJlcV9mbXQt PndoaWNoID09IFY0TDJfU1VCREVWX0ZPUk1BVF9UUlkpDQo+Pj4gKyAgICAgICAgICAgcmV0dXJu IDA7DQo+Pj4gKw0KPj4+ICsgICByZXQgPSB2NGwyX3N1YmRldl9jYWxsKGNzaTJkYy0+aW5wdXRf c2QsIHBhZCwgc2V0X2ZtdCwgY2ZnLCByZXFfZm10KTsNCj4+PiArICAgaWYgKHJldCkgew0KPj4+ ICsgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJpbnB1dCBzdWJkZXYgZmFpbGVkICVk XG4iLCByZXQpOw0KPj4+ICsgICAgICAgICAgIHJldHVybiByZXQ7DQo+Pj4gKyAgIH0NCj4+PiAr DQo+Pj4gKyAgIGNzaTJkYy0+Y3VyX2ZtdCA9IGNzaTJkYy0+dHJ5X2ZtdDsNCj4+PiArICAgLyog dXBkYXRlIHZpZGVvIHBpcGUgKi8NCj4+PiArICAgY3NpMmRjX3ZwX3VwZGF0ZShjc2kyZGMpOw0K Pj4+ICsNCj4+PiArICAgZGV2X2RiZyhjc2kyZGMtPmRldiwgIkNTSTJEQyBuZXcgZm9ybWF0OiAw eCV4XG4iLCByZXFfZm10LT5mb3JtYXQuY29kZSk7DQo+Pj4gKyAgIHJldHVybiAwOw0KPj4+ICt9 DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGNzaTJkY19mb3JtYXRzX2luaXQoc3RydWN0IGNzaTJk Y19kZXZpY2UgKmNzaTJkYykNCj4+PiArew0KPj4+ICsgICBzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCAq Zm10Ow0KPj4+ICsgICBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiA9IGNzaTJkYy0+aW5wdXRf c2Q7DQo+Pj4gKyAgIHVuc2lnbmVkIGludCBudW1fZm10cywgaTsNCj4+PiArDQo+Pj4gKyAgIHN0 cnVjdCB2NGwyX3N1YmRldl9tYnVzX2NvZGVfZW51bSBtYnVzX2NvZGUgPSB7DQo+Pj4gKyAgICAg ICAgICAgLndoaWNoID0gVjRMMl9TVUJERVZfRk9STUFUX0FDVElWRSwNCj4+PiArICAgICAgICAg ICAuaW5kZXggPSAwLA0KPj4+ICsgICB9Ow0KPj4+ICsNCj4+PiArICAgbnVtX2ZtdHMgPSAwOw0K Pj4+ICsNCj4+PiArICAgY3NpMmRjLT5mb3JtYXRzID0gZGV2bV9rY2FsbG9jKGNzaTJkYy0+ZGV2 LA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJSQVlfU0laRShjc2ky ZGNfZm9ybWF0c19saXN0KSwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVvZigqY3NpMmRjLT5mb3JtYXRzKSwgR0ZQX0tFUk5FTCk7DQo+Pj4gKyAgIGlmICghY3Np MmRjLT5mb3JtYXRzKQ0KPj4+ICsgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4+ICsNCj4+ PiArICAgd2hpbGUgKCF2NGwyX3N1YmRldl9jYWxsKHN1YmRldiwgcGFkLCBlbnVtX21idXNfY29k ZSwgTlVMTCwNCj4+PiArICAgICAgICAgICZtYnVzX2NvZGUpKSB7DQo+Pj4gKyAgICAgICAgICAg bWJ1c19jb2RlLmluZGV4Kys7DQo+Pj4gKyAgICAgICAgICAgZm9yIChmbXQgPSAmY3NpMmRjX2Zv cm1hdHNfbGlzdFswXSwgaSA9IDA7DQo+Pj4gKyAgICAgICAgICAgICAgICBpIDwgQVJSQVlfU0la RShjc2kyZGNfZm9ybWF0c19saXN0KTsgaSsrLCBmbXQrKykNCj4+PiArICAgICAgICAgICAgICAg ICAgIGlmIChmbXQtPm1idXNfY29kZSA9PSBtYnVzX2NvZGUuY29kZSkgew0KPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBjc2kyZGMtPmZvcm1hdHNbbnVtX2ZtdHNdID0gZm10Ow0KPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fZm10cysrOw0KPj4+ICsgICAgICAgICAg ICAgICAgICAgfQ0KPj4+ICsgICB9DQo+Pg0KPj4gRm9yIHRoZSByZWFzb25zIGV4cGxhaW5lZCBh Ym92ZSBhbmQgYnkgU2FrYXJpLCBJIHRoaW5rIHRoaXMgc2hvdWxkIGJlIGRyb3BwZWQNCj4+DQo+ Pj4gKw0KPj4+ICsgICBpZiAoIW51bV9mbXRzKQ0KPj4+ICsgICAgICAgICAgIHJldHVybiAtRU5Y SU87DQo+Pj4gKw0KPj4+ICsgICBjc2kyZGMtPm51bV9mbXRzID0gbnVtX2ZtdHM7DQo+Pj4gKw0K Pj4+ICsgICByZXR1cm4gMDsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBjc2kyZGNf cG93ZXIoc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYywgaW50IG9uKQ0KPj4+ICt7DQo+Pj4g KyAgIGludCByZXQgPSAwOw0KPj4+ICsNCj4+PiArICAgaWYgKCFjc2kyZGMtPmNvbXBsZXRlZCkg ew0KPj4+ICsgICAgICAgICAgIGRldl9kYmcoKGNzaTJkYyktPmRldiwgInN1YmRldiBub3QgcmVn aXN0ZXJlZCB5ZXRcbiIpOw0KPj4+ICsgICAgICAgICAgIHJldHVybiAwOw0KPj4+ICsgICB9DQo+ Pg0KPj4gQ2FuIHRoaXMgaGFwcGVuID8NCj4+DQo+Pj4gKw0KPj4+ICsgICBpZiAoY3NpMmRjLT5w b3dlcmVkX29uID09IG9uKQ0KPj4+ICsgICAgICAgICAgIHJldHVybiAwOw0KPj4NCj4+IFNhbWUg cXVlc3Rpb24NCj4+DQo+Pj4gKw0KPj4+ICsgICBpZiAob24pDQo+Pj4gKyAgICAgICAgICAgcmV0 ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNzaTJkYy0+c2Njayk7DQo+Pj4gKyAgIGVsc2UNCj4+PiAr ICAgICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoY3NpMmRjLT5zY2NrKTsNCj4+PiArICAg aWYgKHJldCkNCj4+PiArICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiZmFpbGVkIHRv IGVuYWJsZSBzY2NrOiAlZFxuIiwgcmV0KTsNCj4+PiArDQo+Pj4gKyAgIC8qIGlmIHBvd2VyaW5n IHVwLCBkZWFzc2VydCByZXNldCBsaW5lICovDQo+Pj4gKyAgIGlmIChvbikNCj4+PiArICAgICAg ICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX0dDVExSLCBDU0kyRENfR0NUTFJfU1dS U1QpOw0KPj4+ICsNCj4+PiArICAgLyogaWYgcG93ZXJpbmcgZG93biwgYXNzZXJ0IHJlc2V0IGxp bmUgKi8NCj4+PiArICAgaWYgKCFvbikNCj4+PiArICAgICAgICAgICBjc2kyZGNfd3JpdGVsKGNz aTJkYywgQ1NJMkRDX0dDVExSLCAhQ1NJMkRDX0dDVExSX1NXUlNUKTsNCj4+PiArICAgaWYgKCFy ZXQpDQo+Pj4gKyAgICAgICAgICAgY3NpMmRjLT5wb3dlcmVkX29uID0gb247DQo+Pg0KPj4gV291 bGRuJ3QgdGhpcyBiZSBiZXR0ZXIgY29kZWQgYXMNCj4+DQo+PiAgICAgICAgICBpZiAob24pIHsN Cj4+ICAgICAgICAgICAgICAgICAgY2xrX3ByZXBhcmVfZW5hYmxlDQo+PiAgICAgICAgICAgICAg ICAgIGNzaTJkY193cml0ZWwoU1dSU1QpDQo+PiAgICAgICAgICAgICAgICAgIHBvd2VyZWRfb24g PSB0cnVlDQo+PiAgICAgICAgICB9IGVsc2Ugew0KPj4gICAgICAgICAgICAgICAgICBjbGtfZGlz YWJsZV91bnJlcGFyZQ0KPj4gICAgICAgICAgICAgICAgICBjc2kyZGNfd3JpdGVsKCFTV1JTVCkN Cj4+ICAgICAgICAgICAgICAgICAgcG93ZXJlZF9vbiA9IGZhbHNlDQo+PiAgICAgICAgICB9DQo+ Pj4gKw0KPj4+ICsgICByZXR1cm4gcmV0Ow0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50 IGNzaTJkY19zX3N0cmVhbShzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwgaW50IGVuYWJs ZSkNCj4+PiArew0KPj4+ICsgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0gY3NpMmRj X3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRjX3NkKTsNCj4+PiArDQo+Pj4gKyAgIGlmICghY3Np MmRjLT5jb21wbGV0ZWQpIHsNCj4+PiArICAgICAgICAgICBkZXZfZGJnKChjc2kyZGMpLT5kZXYs ICJzdWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4iKTsNCj4+PiArICAgICAgICAgICByZXR1cm4g MDsNCj4+PiArICAgfQ0KPj4+ICsNCj4+PiArICAgcmV0dXJuIHY0bDJfc3ViZGV2X2NhbGwoY3Np MmRjLT5pbnB1dF9zZCwgdmlkZW8sIHNfc3RyZWFtLCBlbmFibGUpOw0KPj4+ICt9DQo+Pj4gKw0K Pj4+ICtzdGF0aWMgaW50IGNzaTJkY19nX2ZyYW1lX2ludGVydmFsKHN0cnVjdCB2NGwyX3N1YmRl diAqY3NpMmRjX3NkLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg djRsMl9zdWJkZXZfZnJhbWVfaW50ZXJ2YWwgKmludGVydmFsKQ0KPj4+ICt7DQo+Pj4gKyAgIHN0 cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNfc2RfdG9fY3NpMmRjX2RldmljZShj c2kyZGNfc2QpOw0KPj4+ICsNCj4+PiArICAgaWYgKCFjc2kyZGMtPmNvbXBsZXRlZCkgew0KPj4+ ICsgICAgICAgICAgIGRldl9kYmcoKGNzaTJkYyktPmRldiwgInN1YmRldiBub3QgcmVnaXN0ZXJl ZCB5ZXRcbiIpOw0KPj4+ICsgICAgICAgICAgIHJldHVybiAwOw0KPj4+ICsgICB9DQo+Pj4gKw0K Pj4+ICsgICByZXR1cm4gdjRsMl9zdWJkZXZfY2FsbChjc2kyZGMtPmlucHV0X3NkLCB2aWRlbywg Z19mcmFtZV9pbnRlcnZhbCwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJ2 YWwpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGNzaTJkY19zX2ZyYW1lX2ludGVy dmFsKHN0cnVjdCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkLA0KPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZnJhbWVfaW50ZXJ2YWwgKmludGVydmFs KQ0KPj4+ICt7DQo+Pj4gKyAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNf c2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4+ICsNCj4+PiArICAgaWYgKCFjc2ky ZGMtPmNvbXBsZXRlZCkgew0KPj4+ICsgICAgICAgICAgIGRldl9kYmcoKGNzaTJkYyktPmRldiwg InN1YmRldiBub3QgcmVnaXN0ZXJlZCB5ZXRcbiIpOw0KPj4+ICsgICAgICAgICAgIHJldHVybiAw Ow0KPj4+ICsgICB9DQo+Pj4gKw0KPj4+ICsgICByZXR1cm4gdjRsMl9zdWJkZXZfY2FsbChjc2ky ZGMtPmlucHV0X3NkLCB2aWRlbywgc19mcmFtZV9pbnRlcnZhbCwNCj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ZXJ2YWwpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50 IGNzaTJkY19lbnVtX2ZyYW1lX3NpemUoc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9j b25maWcgKmNmZywNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRs Ml9zdWJkZXZfZnJhbWVfc2l6ZV9lbnVtICpmc2UpDQo+Pj4gK3sNCj4+PiArICAgc3RydWN0IGNz aTJkY19kZXZpY2UgKmNzaTJkYyA9IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJkY19z ZCk7DQo+Pj4gKw0KPj4+ICsgICBpZiAoIWNzaTJkYy0+Y29tcGxldGVkKSB7DQo+Pj4gKyAgICAg ICAgICAgZGV2X2RiZygoY3NpMmRjKS0+ZGV2LCAic3ViZGV2IG5vdCByZWdpc3RlcmVkIHlldFxu Iik7DQo+Pj4gKyAgICAgICAgICAgcmV0dXJuIDA7DQo+Pj4gKyAgIH0NCj4+PiArDQo+Pj4gKyAg IHJldHVybiB2NGwyX3N1YmRldl9jYWxsKGNzaTJkYy0+aW5wdXRfc2QsIHBhZCwgZW51bV9mcmFt ZV9zaXplLCBjZmcsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzZSk7DQo+Pj4g K30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgY3NpMmRjX2VudW1fZnJhbWVfaW50ZXJ2YWwoc3Ry dWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2NvbmZpZyAqY2ZnLA0KPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2ZyYW1lX2ludGVydmFsX2VudW0gKmZpZSkN Cj4+PiArew0KPj4+ICsgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0gY3NpMmRjX3Nk X3RvX2NzaTJkY19kZXZpY2UoY3NpMmRjX3NkKTsNCj4+PiArDQo+Pj4gKyAgIGlmICghY3NpMmRj LT5jb21wbGV0ZWQpIHsNCj4+PiArICAgICAgICAgICBkZXZfZGJnKChjc2kyZGMpLT5kZXYsICJz dWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4iKTsNCj4+PiArICAgICAgICAgICByZXR1cm4gMDsN Cj4+PiArICAgfQ0KPj4+ICsNCj4+PiArICAgcmV0dXJuIHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRj LT5pbnB1dF9zZCwgcGFkLCBlbnVtX2ZyYW1lX2ludGVydmFsLCBjZmcsDQo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZpZSk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX29wcyBjc2kyZGNfcGFkX29wcyA9IHsNCj4+PiArICAg LmVudW1fbWJ1c19jb2RlID0gY3NpMmRjX2VudW1fbWJ1c19jb2RlLA0KPj4+ICsgICAuc2V0X2Zt dCA9IGNzaTJkY19zZXRfZm10LA0KPj4+ICsgICAuZW51bV9mcmFtZV9zaXplID0gY3NpMmRjX2Vu dW1fZnJhbWVfc2l6ZSwNCj4+PiArICAgLmVudW1fZnJhbWVfaW50ZXJ2YWwgPSBjc2kyZGNfZW51 bV9mcmFtZV9pbnRlcnZhbCwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgdjRsMl9zdWJkZXZfdmlkZW9fb3BzIGNzaTJkY192aWRlb19vcHMgPSB7DQo+Pj4gKyAgIC5z X3N0cmVhbSA9IGNzaTJkY19zX3N0cmVhbSwNCj4+PiArICAgLmdfZnJhbWVfaW50ZXJ2YWwgPSBj c2kyZGNfZ19mcmFtZV9pbnRlcnZhbCwNCj4+PiArICAgLnNfZnJhbWVfaW50ZXJ2YWwgPSBjc2ky ZGNfc19mcmFtZV9pbnRlcnZhbCwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgdjRsMl9zdWJkZXZfb3BzIGNzaTJkY19zdWJkZXZfb3BzID0gew0KPj4+ICsgICAucGFk ID0gJmNzaTJkY19wYWRfb3BzLA0KPj4+ICsgICAudmlkZW8gPSAmY3NpMmRjX3ZpZGVvX29wcywN Cj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgY3NpMmRjX2dldF9tYnVzX2NvbmZpZyhz dHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjKQ0KPj4+ICt7DQo+Pj4gKyAgIHN0cnVjdCB2NGwy X21idXNfY29uZmlnIG1idXNfY29uZmlnID0geyAwIH07DQo+Pj4gKyAgIGludCByZXQ7DQo+Pj4g Kw0KPj4+ICsgICByZXQgPSB2NGwyX3N1YmRldl9jYWxsKGNzaTJkYy0+aW5wdXRfc2QsIHBhZCwg Z2V0X21idXNfY29uZmlnLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGNzaTJkYy0+ cmVtb3RlX3BhZCwgJm1idXNfY29uZmlnKTsNCj4+PiArICAgaWYgKHJldCA9PSAtRU5PSU9DVExD TUQpIHsNCj4+PiArICAgICAgICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LA0KPj4+ICsgICAgICAg ICAgICAgICAgICAgIm5vIHJlbW90ZSBtYnVzIGNvbmZpZ3VyYXRpb24gYXZhaWxhYmxlXG4iKTsN Cj4+PiArICAgICAgICAgICBnb3RvIGNzaTJkY19nZXRfbWJ1c19jb25maWdfZGVmYXVsdHM7DQo+ Pj4gKyAgIH0NCj4+PiArDQo+Pj4gKyAgIGlmIChyZXQpIHsNCj4+PiArICAgICAgICAgICBkZXZf ZXJyKGNzaTJkYy0+ZGV2LA0KPj4+ICsgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBnZXQg cmVtb3RlIG1idXMgY29uZmlndXJhdGlvblxuIik7DQo+Pj4gKyAgICAgICAgICAgZ290byBjc2ky ZGNfZ2V0X21idXNfY29uZmlnX2RlZmF1bHRzOw0KPj4NCj4+IFRoaXMgc2hvdWxkIHByb2JhYmx5 IGJlIGFuIGVycm9yIHJlcG9ydGVkIHRvIHRoZSBjYWxsZXIuIEJ1dCB0aGlzDQo+PiBmdW5jdGlv biByZXR1cm4gdmFsdWUgaXMgbm90IGNoZWNrZWQsIHNvIGl0J3MgcHJvYmFibHkgZmluZS4NCj4+ DQo+Pj4gKyAgIH0NCj4+PiArDQo+Pj4gKyAgIGlmIChtYnVzX2NvbmZpZy5mbGFncyAmIFY0TDJf TUJVU19DU0kyX0NIQU5ORUxfMCkNCj4+PiArICAgICAgICAgICBjc2kyZGMtPnZjID0gMDsNCj4+ PiArICAgZWxzZSBpZiAobWJ1c19jb25maWcuZmxhZ3MgJiBWNEwyX01CVVNfQ1NJMl9DSEFOTkVM XzEpDQo+Pj4gKyAgICAgICAgICAgY3NpMmRjLT52YyA9IDE7DQo+Pj4gKyAgIGVsc2UgaWYgKG1i dXNfY29uZmlnLmZsYWdzICYgVjRMMl9NQlVTX0NTSTJfQ0hBTk5FTF8yKQ0KPj4+ICsgICAgICAg ICAgIGNzaTJkYy0+dmMgPSAyOw0KPj4+ICsgICBlbHNlIGlmIChtYnVzX2NvbmZpZy5mbGFncyAm IFY0TDJfTUJVU19DU0kyX0NIQU5ORUxfMykNCj4+PiArICAgICAgICAgICBjc2kyZGMtPnZjID0g MzsNCj4+PiArDQo+Pj4gKyAgIGRldl9kYmcoY3NpMmRjLT5kZXYsICJzdWJkZXYgc2VuZGluZyBv biBjaGFubmVsICVkXG4iLCBjc2kyZGMtPnZjKTsNCj4+PiArDQo+Pj4gKyAgIGNzaTJkYy0+Y2xr X2dhdGVkID0gbWJ1c19jb25maWcuZmxhZ3MgJg0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAg IFY0TDJfTUJVU19DU0kyX05PTkNPTlRJTlVPVVNfQ0xPQ0s7DQo+Pj4gKw0KPj4+ICsgICBkZXZf ZGJnKGNzaTJkYy0+ZGV2LCAiJXMgY2xvY2tcbiIsDQo+Pj4gKyAgICAgICAgICAgY3NpMmRjLT5j bGtfZ2F0ZWQgPyAiZ2F0ZWQiIDogImZyZWUgcnVubmluZyIpOw0KPj4+ICsNCj4+PiArICAgcmV0 dXJuIDA7DQo+Pj4gKw0KPj4+ICtjc2kyZGNfZ2V0X21idXNfY29uZmlnX2RlZmF1bHRzOg0KPj4+ ICsgICBjc2kyZGMtPnZjID0gMDsgLyogVmlydHVhbCBJRCAwIGJ5IGRlZmF1bHQgKi8NCj4+PiAr ICAgY3NpMmRjLT5jbGtfZ2F0ZWQgPSBmYWxzZTsgLyogRnJlZSBydW5uaW5nIGNsb2NrIGJ5IGRl ZmF1bHQgKi8NCj4+PiArDQo+Pj4gKyAgIHJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtz dGF0aWMgaW50IGNzaTJkY19hc3luY19ib3VuZChzdHJ1Y3QgdjRsMl9hc3luY19ub3RpZmllciAq bm90aWZpZXIsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJk ZXYgKnN1YmRldiwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX2Fz eW5jX3N1YmRldiAqYXNkKQ0KPj4+ICt7DQo+Pj4gKyAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpj c2kyZGMgPSBjb250YWluZXJfb2Yobm90aWZpZXItPnY0bDJfZGV2LA0KPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlLCB2NGwyX2Rldik7 DQo+Pj4gKyAgIGludCBwYWQ7DQo+Pj4gKw0KPj4+ICsgICBjc2kyZGMtPmlucHV0X3NkID0gc3Vi ZGV2Ow0KPj4+ICsNCj4+PiArICAgcGFkID0gbWVkaWFfZW50aXR5X2dldF9md25vZGVfcGFkKCZz dWJkZXYtPmVudGl0eSwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFzZC0+bWF0Y2guZndub2RlLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTUVESUFfUEFEX0ZMX1NPVVJDRSk7DQo+Pj4gKyAgIGlmIChwYWQgPCAwKSB7DQo+Pj4g KyAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgIkZhaWxlZCB0byBmaW5kIHBhZCBmb3Ig JXNcbiIsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICBzdWJkZXYtPm5hbWUpOw0KPj4+ICsgICAg ICAgICAgIHJldHVybiBwYWQ7DQo+Pj4gKyAgIH0NCj4+PiArDQo+Pj4gKyAgIGNzaTJkYy0+cmVt b3RlX3BhZCA9IHBhZDsNCj4+PiArDQo+Pj4gKyAgIGNzaTJkY19nZXRfbWJ1c19jb25maWcoY3Np MmRjKTsNCj4+DQo+PiBUaGUgY2xvc2VyIHRvIHNfc3RyZWFtIHlvdSBjYWxsIGdldF9tYnVzX2Nv bmZpZywgdGhlIGxlc3MgdGhlIGNoYW5jZXMNCj4+IG9mIHJlY2VpdmluZyBhIHN0YWxlIGNvbmZp Z3VyYXRpb24sIGlmIHRoaXMgY2FuIGhhcHBlbi4NCj4+DQo+Pj4gKw0KPj4+ICsgICByZXR1cm4g MDsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBjc2kyZGNfYXN5bmNfY29tcGxldGUo c3RydWN0IHY0bDJfYXN5bmNfbm90aWZpZXIgKm5vdGlmaWVyKQ0KPj4+ICt7DQo+Pj4gKyAgIHN0 cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPQ0KPj4+ICsgICAgICAgICAgIGNvbnRhaW5lcl9v Zihub3RpZmllci0+djRsMl9kZXYsIHN0cnVjdCBjc2kyZGNfZGV2aWNlLA0KPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICB2NGwyX2Rldik7DQo+Pj4gKyAgIGludCByZXQ7DQo+Pj4gKw0KPj4+ ICsgICByZXQgPSBjc2kyZGNfZm9ybWF0c19pbml0KGNzaTJkYyk7DQo+Pj4gKyAgIGlmIChyZXQp DQo+Pj4gKyAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+PiArDQo+Pj4gKyAgIHJldCA9IHY0bDJf ZGV2aWNlX3JlZ2lzdGVyX3N1YmRldl9ub2RlcygmY3NpMmRjLT52NGwyX2Rldik7DQo+Pj4gKyAg IGlmIChyZXQgPCAwKSB7DQo+Pj4gKyAgICAgICAgICAgdjRsMl9lcnIoJmNzaTJkYy0+djRsMl9k ZXYsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byByZWdpc3RlciBzdWJkZXYg bm9kZXNcbiIpOw0KPj4+ICsgICAgICAgICAgIHJldHVybiByZXQ7DQo+Pj4gKyAgIH0NCj4+PiAr DQo+Pj4gKyAgIGNzaTJkYy0+Y29tcGxldGVkID0gdHJ1ZTsNCj4+PiArDQo+Pj4gKyAgIGNzaTJk Y193cml0ZWwoY3NpMmRjLCBDU0kyRENfR0NGRywNCj4+PiArICAgICAgICAgICAgICAgICAoU0FN QTdHNV9ITEMgJiBDU0kyRENfR0NGR19ITENfTUFTSykgfA0KPj4+ICsgICAgICAgICAgICAgICAg IChjc2kyZGMtPmNsa19nYXRlZCA/IDAgOiBDU0kyRENfR0NGR19NSVBJRlJOKSk7DQo+Pj4gKw0K Pj4+ICsgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX1ZQQ09MLA0KPj4+ICsgICAgICAg ICAgICAgICAgIENTSTJEQ19WUENPTF9DT0woMHhGRkYpICYgQ1NJMkRDX1ZQQ09MX0NPTF9NQVNL KTsNCj4+PiArICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJEQ19WUFJPVywNCj4+PiArICAg ICAgICAgICAgICAgICBDU0kyRENfVlBST1dfUk9XKDB4RkZGKSAmIENTSTJEQ19WUFJPV19ST1df TUFTSyk7DQo+Pj4gKw0KPj4+ICsgICAvKiBvbmNlIHdlIGFyZSBjb21wbGV0ZWQsIHdlIGNhbiBy ZWdpc3RlciBvdXJzZWx2ZXMgaW4gdGhlIHBpcGVsaW5lICovDQo+Pj4gKyAgIHNjaGVkdWxlX3dv cmsoJmNzaTJkYy0+d29ya3EpOw0KPj4+ICsNCj4+PiArICAgcmV0dXJuIHJldDsNCj4+PiArfQ0K Pj4+ICsNCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2FzeW5jX25vdGlmaWVyX29wZXJh dGlvbnMgY3NpMmRjX2FzeW5jX29wcyA9IHsNCj4+PiArICAgLmJvdW5kID0gY3NpMmRjX2FzeW5j X2JvdW5kLA0KPj4+ICsgICAuY29tcGxldGUgPSBjc2kyZGNfYXN5bmNfY29tcGxldGUsDQo+Pj4g K307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgdm9pZCBjc2kyZGNfY2xlYW51cF9ub3RpZmllcihzdHJ1 Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjKQ0KPj4+ICt7DQo+Pj4gKyAgIHY0bDJfYXN5bmNfbm90 aWZpZXJfdW5yZWdpc3RlcigmY3NpMmRjLT5ub3RpZmllcik7DQo+Pj4gKyAgIHY0bDJfYXN5bmNf bm90aWZpZXJfY2xlYW51cCgmY3NpMmRjLT5ub3RpZmllcik7DQo+Pj4gK30NCj4+PiArDQo+Pj4g K3N0YXRpYyBpbnQgY3NpMmRjX3ByZXBhcmVfbm90aWZpZXIoc3RydWN0IGNzaTJkY19kZXZpY2Ug KmNzaTJkYywNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRldmlj ZV9ub2RlICppbnB1dF9wYXJlbnQpDQo+Pj4gK3sNCj4+PiArICAgaW50IHJldDsNCj4+PiArDQo+ Pj4gKyAgIHY0bDJfYXN5bmNfbm90aWZpZXJfaW5pdCgmY3NpMmRjLT5ub3RpZmllcik7DQo+Pj4g Kw0KPj4+ICsgICBjc2kyZGMtPmFzZCA9IGt6YWxsb2Moc2l6ZW9mKCpjc2kyZGMtPmFzZCksIEdG UF9LRVJORUwpOw0KPj4+ICsgICBpZiAoIWNzaTJkYy0+YXNkKQ0KPj4+ICsgICAgICAgICAgIHJl dHVybiAtRU5PTUVNOw0KPj4+ICsNCj4+PiArICAgY3NpMmRjLT5hc2QtPm1hdGNoX3R5cGUgPSBW NEwyX0FTWU5DX01BVENIX0ZXTk9ERTsNCj4+PiArICAgY3NpMmRjLT5hc2QtPm1hdGNoLmZ3bm9k ZSA9IG9mX2Z3bm9kZV9oYW5kbGUoaW5wdXRfcGFyZW50KTsNCj4+DQo+PiBJZiB5b3UgdXNlIHY0 bDJfYXN5bmNfbm90aWZpZXJfYWRkX2Z3bm9kZV9zdWJkZXYoKSB0aGUgZnJhbWV3b3JrIGRvZXMN Cj4+IHRoaXMgZm9yIHlvdS4NCj4+DQo+Pj4gKw0KPj4+ICsgICByZXQgPSB2NGwyX2FzeW5jX25v dGlmaWVyX2FkZF9zdWJkZXYoJmNzaTJkYy0+bm90aWZpZXIsIGNzaTJkYy0+YXNkKTsNCj4+PiAr ICAgaWYgKHJldCkgew0KPj4+ICsgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJmYWls ZWQgdG8gYWRkIGFzeW5jIG5vdGlmaWVyLlxuIik7DQo+Pj4gKyAgICAgICAgICAgdjRsMl9hc3lu Y19ub3RpZmllcl9jbGVhbnVwKCZjc2kyZGMtPm5vdGlmaWVyKTsNCj4+PiArICAgICAgICAgICBn b3RvIGNzaTJkY19wcmVwYXJlX25vdGlmaWVyX2VycjsNCj4+PiArICAgfQ0KPj4+ICsNCj4+PiAr ICAgY3NpMmRjLT5ub3RpZmllci5vcHMgPSAmY3NpMmRjX2FzeW5jX29wczsNCj4+PiArDQo+Pj4g KyAgIHJldCA9IHY0bDJfYXN5bmNfbm90aWZpZXJfcmVnaXN0ZXIoJmNzaTJkYy0+djRsMl9kZXYs DQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNzaTJkYy0+bm90 aWZpZXIpOw0KPj4+ICsNCj4+PiArICAgaWYgKHJldCkgew0KPj4+ICsgICAgICAgICAgIGRldl9l cnIoY3NpMmRjLT5kZXYsICJmYWlsIHRvIHJlZ2lzdGVyIGFzeW5jIG5vdGlmaWVyLlxuIik7DQo+ Pg0KPj4gU2hvdWxkbid0IHlvdSBjbGVhbnVwIHRoZSBub3RpZmllciBpZiByZWdpc3RyYXRpb24g ZmFpbHMgPw0KPj4NCj4+PiArICAgICAgICAgICBnb3RvIGNzaTJkY19wcmVwYXJlX25vdGlmaWVy X2VycjsNCj4+PiArICAgfQ0KPj4+ICsNCj4+PiArY3NpMmRjX3ByZXBhcmVfbm90aWZpZXJfZXJy Og0KPj4+ICsgICBvZl9ub2RlX3B1dChpbnB1dF9wYXJlbnQpOw0KPj4+ICsNCj4+PiArICAgcmV0 dXJuIHJldDsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBjc2kyZGNfb2ZfcGFyc2Uo c3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYywNCj4+PiArICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2Zfbm9kZSkNCj4+PiArew0KPj4+ICsgICBzdHJ1Y3QgZGV2 aWNlX25vZGUgKmlucHV0X25vZGUsICpzaW5rX25vZGUsICppbnB1dF9wYXJlbnQ7DQo+Pj4gKyAg IHN0cnVjdCB2NGwyX2Z3bm9kZV9lbmRwb2ludCBpbnB1dF9lbmRwb2ludCA9IHsgMCB9LA0KPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lua19lbmRwb2ludCA9IHsgMCB9Ow0K Pj4+ICsgICBpbnQgcmV0Ow0KPj4+ICsNCj4+PiArICAgaW5wdXRfbm9kZSA9IG9mX2dyYXBoX2dl dF9uZXh0X2VuZHBvaW50KG9mX25vZGUsIE5VTEwpOw0KPj4+ICsNCj4+PiArICAgaWYgKCFpbnB1 dF9ub2RlKSB7DQo+Pj4gKyAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwNCj4+PiArICAg ICAgICAgICAgICAgICAgICJtaXNzaW5nIHBvcnQgbm9kZSBhdCAlcywgaW5wdXQgbm9kZSBpcyBt YW5kYXRvcnkuXG4iLA0KPj4NCj4+IFBsZWFzZSB1c2UgJXBPRiB0byBwcmludCB0aGUgbm9kZSBu YW1lDQo+PiBBbHNvLCBpbnB1dF9ub2RlIHNob3VsZCBiZSBwdXQgaW4gdGhlIGVycm9yIHBhdGgN Cj4+DQo+Pj4gKyAgICAgICAgICAgICAgICAgICBvZl9ub2RlLT5mdWxsX25hbWUpOw0KPj4+ICsg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4+ICsgICB9DQo+Pj4gKw0KPj4+ICsgICByZXQg PSB2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZShvZl9md25vZGVfaGFuZGxlKGlucHV0X25vZGUp LA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdXRfZW5kcG9p bnQpOw0KPj4NCj4+IFBsZWFzZSBzZXQgaW5wdXRfZW5kcG9pbnQuYnVzX3R5cGUgaWYgeW91IGtu b3cgd2hhdCBraW5kIG9mIGJ1cyB5b3UncmUNCj4+IGRlYWxpbmcgd2l0aCAobm90IGhhdmluZyB0 aGUgYmluZGluZ3Mgb2YgdGhlIElESSB0cmFuc21pdHRlciBJJ20gbm90DQo+PiBzdXJlLiBJcyB0 aGlzIFY0TDJfTUJVU19DU0kyX0RQSFkgPykNCj4+DQo+Pj4gKw0KPj4+ICsgICBpZiAocmV0KSB7 DQo+Pj4gKyAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgImVuZHBvaW50IG5vdCBkZWZp bmVkIGF0ICVzXG4iLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgb2Zfbm9kZS0+ZnVsbF9uYW1l KTsNCj4+PiArICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4+ICsgICB9DQo+Pj4gKw0KPj4+ICsg ICBpbnB1dF9wYXJlbnQgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGlucHV0X25v ZGUpOw0KPj4+ICsgICBpZiAoIWlucHV0X3BhcmVudCkgew0KPj4NCj4+IE1pc3Npbmcgb2Zfbm9k ZV9wdXQoaW5wdXRfbm9kZSkNCj4+DQo+Pj4gKyAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRl diwNCj4+PiArICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZ2V0IGlucHV0IG5vZGUncyBw YXJlbnQgbm9kZS5cbiIpOw0KPj4+ICsgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4+ICsg ICB9DQo+Pj4gKw0KPj4+ICsgICBzaW5rX25vZGUgPSBvZl9ncmFwaF9nZXRfbmV4dF9lbmRwb2lu dChvZl9ub2RlLCBpbnB1dF9ub2RlKTsNCj4+PiArDQo+Pj4gKyAgIGlmIChzaW5rX25vZGUpDQo+ Pj4gKyAgICAgICAgICAgcmV0ID0gdjRsMl9md25vZGVfZW5kcG9pbnRfcGFyc2Uob2ZfZndub2Rl X2hhbmRsZShzaW5rX25vZGUpLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZzaW5rX2VuZHBvaW50KTsNCj4+DQo+PiBTYW1lLCBzZXQgc2lua19lbmRw b2ludC5idXNfdHlwZSBpZiB5b3Uga25vdyBpdCdzIE1CVVNfUEFSQUxMRUwNCj4+DQo+Pj4gKw0K Pj4+ICsgICBpZiAoIXNpbmtfbm9kZSB8fCByZXQpIHsNCj4+DQo+PiBJZiBwYXJzaW5nIGZhaWwg eW91IGRvbid0IHJldHVybiBhbiBlcnJvciBidXQgY29udGludWUgcmVnaXN0ZXJpbmcgdGhlDQo+ PiBub3RpZmllciBhbmQgcG90ZW50aWFsbHkgZW5kIHVwIHJlZ2lzdGVyaW5nIHRoZSBhc3luYyBz dWJkZXYgZm9yIHRoaXMNCj4+IGVudGl0eSBldmVuIGlmIHRoZSBlbmRwb2ludCBwYXJzaW5nIGZh aWxlZC4NCj4+DQo+Pj4gKyAgICAgICAgICAgZGV2X2luZm8oY3NpMmRjLT5kZXYsDQo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIm1pc3Npbmcgc2luayBub2RlIGF0ICVzLCBkYXRhIHBpcGUgYXZh aWxhYmxlIG9ubHkuXG4iLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgIG9mX25vZGUtPmZ1bGxf bmFtZSk7DQo+Pj4gKyAgIH0gZWxzZSB7DQo+Pj4gKyAgICAgICAgICAgY3NpMmRjLT52aWRlb19w aXBlID0gdHJ1ZTsNCj4+DQo+PiB2aWRlb19waXBlIGlzIHVudXNlZCBpdCBzZWVtcw0KPj4NCj4+ PiArDQo+Pj4gKyAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwgImJsb2NrICVzICVkLiVk LT4lZC4lZCB2aWRlbyBwaXBlbGluZVxuIiwNCj4+PiArICAgICAgICAgICAgICAgICAgIG9mX25v ZGUtPmZ1bGxfbmFtZSwgaW5wdXRfZW5kcG9pbnQuYmFzZS5wb3J0LA0KPj4+ICsgICAgICAgICAg ICAgICAgICAgaW5wdXRfZW5kcG9pbnQuYmFzZS5pZCwgc2lua19lbmRwb2ludC5iYXNlLnBvcnQs DQo+Pj4gKyAgICAgICAgICAgICAgICAgICBzaW5rX2VuZHBvaW50LmJhc2UuaWQpOw0KPj4+ICsg ICB9DQo+Pj4gKw0KPj4+ICsgICBvZl9ub2RlX3B1dChzaW5rX25vZGUpOw0KPj4+ICsgICBvZl9u b2RlX3B1dChpbnB1dF9ub2RlKTsNCj4+PiArDQo+Pj4gKyAgIC8qIHByZXBhcmUgYXN5bmMgbm90 aWZpZXIgZm9yIHN1YmRldmljZSBjb21wbGV0aW9uICovDQo+Pj4gKyAgIHJldHVybiBjc2kyZGNf cHJlcGFyZV9ub3RpZmllcihjc2kyZGMsIGlucHV0X3BhcmVudCk7DQo+Pj4gK30NCj4+PiArDQo+ Pj4gK3N0YXRpYyB2b2lkIGNzaTJkY193b3JrcV9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29ya3EpDQo+Pj4gK3sNCj4+PiArICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNv bnRhaW5lcl9vZih3b3JrcSwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgY3NpMmRjX2RldmljZSwgd29ya3EpOw0KPj4+ICsgICBpbnQgcmV0Ow0KPj4+ICsN Cj4+PiArICAgaWYgKHY0bDJfYXN5bmNfcmVnaXN0ZXJfc3ViZGV2KCZjc2kyZGMtPmNzaTJkY19z ZCkpDQo+Pj4gKyAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwgImZhaWxlZCB0byByZWdp c3RlciB0aGUgc3ViZGV2aWNlXG4iKTsNCj4+DQo+PiBUaGF0J3MgcGVjdWxpYXIsIHdoeSBkbyB5 b3UgaGF2ZSB0byBzY2hlZHVsZSB0aGlzIHRvIGEgd29ya3F1ZXVlDQo+PiBpbnN0ZWFkIG9mIGRv aW5nIHRoaXMgaW4gdGhlIGNvbXBsZXRlKCkgY2FsbGJhY2sgPw0KPj4NCj4+PiArDQo+Pj4gKyAg IHJldCA9IGNzaTJkY19wb3dlcihjc2kyZGMsIHRydWUpOw0KPj4+ICsgICBpZiAocmV0IDwgMCkN Cj4+PiArICAgICAgICAgICB2NGwyX2VycigmY3NpMmRjLT52NGwyX2RldiwgImZhaWxlZCB0byBw b3dlciBvblxuIik7DQo+Pg0KPj4gU2hvdWxkIHRoZSBkZXZpY2UgYmUgcG93ZXJlZCBvbiBhdCBz X3N0cmVhbSB0aW1lID8gUG9zc2libHkgd2l0aCBhDQo+PiBwbV9ydW50aW1lX2dldF9zeW5jKCkg Y2FsbCA/IEkgc2VlIHlvdSByZWdpc3RlciBwbV9ydW50aW1lIG9wZXJhdGlvbnMsDQo+PiBidXQg bmV2ZXIgY2FsbCBnZXRfc3luYygpIG9yIF9wdXQoKS4NCj4+DQo+PiBXaGF0IGlmIENPTkZJR19Q TSBub3Qgc2VsZWN0ZWQgPyBTaG91bGQgdGhpcyBkcml2ZXIgc2VsZWN0IGl0ID8gRG8geW91DQo+ PiBoYXZlIHVzZSBjYXNlcyB3aGVyZSB0aGF0J3Mgbm90IHBvc3NpYmxlID8NCj4+DQo+Pj4gK30N Cj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgY3NpMmRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQo+Pj4gK3sNCj4+PiArICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRl djsNCj4+PiArICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYzsNCj4+PiArICAgc3RydWN0 IHJlc291cmNlICpyZXMgPSBOVUxMOw0KPj4+ICsgICBpbnQgcmV0ID0gMDsNCj4+PiArDQo+Pj4g KyAgIGNzaTJkYyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY3NpMmRjKSwgR0ZQX0tFUk5F TCk7DQo+Pj4gKyAgIGlmICghY3NpMmRjKQ0KPj4+ICsgICAgICAgICAgIHJldHVybiAtRU5PTUVN Ow0KPj4+ICsNCj4+PiArICAgY3NpMmRjLT5kZXYgPSBkZXY7DQo+Pj4gKw0KPj4+ICsgICByZXMg PSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0KPj4+ICsg ICBpZiAoIXJlcykNCj4+PiArICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+DQo+PiBkZXZt X2lvcmVtYXBfcmVzb3VyY2UoKSBjaGVja3MgZm9yIHRoZSB2YWxpZGl0eSBvZiAncmVzJyBzbyB5 b3UgY2FuDQo+PiBkcm9wIHRoZSBwcmV2aW91cyB0d28gbGluZXMNCj4+DQo+Pj4gKw0KPj4+ICsg ICBjc2kyZGMtPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOw0KPj4+ICsN Cj4+DQo+PiBJcyB0aGUgZW1weSBsaW5lIGludGVudGlvbmFsLCBzb21ldGltZXMgeW91IGhhdmUg b25lLCBzb21ldGltZXMgeW91DQo+PiBkb24ndCA/DQo+Pg0KPj4+ICsgICBpZiAoSVNfRVJSKGNz aTJkYy0+YmFzZSkpIHsNCj4+PiArICAgICAgICAgICBkZXZfZXJyKGRldiwgImJhc2UgYWRkcmVz cyBub3Qgc2V0XG4iKTsNCj4+DQo+Pg0KPj4+ICsgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGNz aTJkYy0+YmFzZSk7DQo+Pj4gKyAgIH0NCj4+PiArDQo+Pj4gKyAgIGNzaTJkYy0+cGNsayA9IGRl dm1fY2xrX2dldChkZXYsICJwY2xrIik7DQo+Pj4gKyAgIGlmIChJU19FUlIoY3NpMmRjLT5wY2xr KSkgew0KPj4+ICsgICAgICAgICAgIHJldCA9IFBUUl9FUlIoY3NpMmRjLT5wY2xrKTsNCj4+PiAr ICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgcGNsazogJWRcbiIsIHJldCk7 DQo+Pj4gKyAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+DQo+PiBKdXN0IHJldHVybiBQVFJfRVJS IGluc3RlYWQgb2YgYXNzaWduaW5nIHRvIHJldA0KPj4NCj4+PiArICAgfQ0KPj4+ICsNCj4+PiAr ICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNzaTJkYy0+cGNsayk7DQo+Pj4gKyAgIGlmIChy ZXQpIHsNCj4+PiArICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgcGNs azogJWRcbiIsIHJldCk7DQo+Pj4gKyAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+PiArICAgfQ0K Pj4NCj4+IEhhcyB0aGlzIGNsb2NrIHRvIGJlIGVuYWJsZWQgaGVyZSBvciBjYW4gaXQgYmUgZG9u ZSBpbiB0aGUNCj4+IHBtX3J1bnRpbWUgY2FsbGJhY2sgPw0KPj4NCj4+PiArDQo+Pj4gKyAgIGNz aTJkYy0+c2NjayA9IGRldm1fY2xrX2dldChkZXYsICJzY2NrIik7DQo+Pj4gKyAgIGlmIChJU19F UlIoY3NpMmRjLT5zY2NrKSkgew0KPj4+ICsgICAgICAgICAgIHJldCA9IFBUUl9FUlIoY3NpMmRj LT5zY2NrKTsNCj4+PiArICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgc2Nj azogJWRcbiIsIHJldCk7DQo+Pj4gKyAgICAgICAgICAgZ290byBjc2kyZGNfY2xrX2ZhaWw7DQo+ Pj4gKyAgIH0NCj4+PiArDQo+Pj4gKyAgIHJldCA9IHY0bDJfZGV2aWNlX3JlZ2lzdGVyKGRldiwg JmNzaTJkYy0+djRsMl9kZXYpOw0KPj4+ICsgICBpZiAocmV0KSB7DQo+Pj4gKyAgICAgICAgICAg ZGV2X2VycihkZXYsICJ1bmFibGUgdG8gcmVnaXN0ZXIgdjRsMiBkZXZpY2UuXG4iKTsNCj4+PiAr ICAgICAgICAgICBnb3RvIGNzaTJkY19jbGtfZmFpbDsNCj4+PiArICAgfQ0KPj4+ICsNCj4+PiAr ICAgdjRsMl9zdWJkZXZfaW5pdCgmY3NpMmRjLT5jc2kyZGNfc2QsICZjc2kyZGNfc3ViZGV2X29w cyk7DQo+Pj4gKw0KPj4+ICsgICBjc2kyZGMtPmNzaTJkY19zZC5vd25lciA9IFRISVNfTU9EVUxF Ow0KPj4+ICsgICBjc2kyZGMtPmNzaTJkY19zZC5kZXYgPSBkZXY7DQo+Pj4gKyAgIHNucHJpbnRm KGNzaTJkYy0+Y3NpMmRjX3NkLm5hbWUsIHNpemVvZihjc2kyZGMtPmNzaTJkY19zZC5uYW1lKSwN Cj4+PiArICAgICAgICAgICAgIkNTSTJEQy4wIik7DQo+Pj4gKw0KPj4+ICsgICBjc2kyZGMtPmNz aTJkY19zZC5mbGFncyB8PSBWNEwyX1NVQkRFVl9GTF9IQVNfREVWTk9ERTsNCj4+PiArICAgY3Np MmRjLT5jc2kyZGNfc2QuZW50aXR5LmZ1bmN0aW9uID0gTUVESUFfRU5UX0ZfVklEX0lGX0JSSURH RTsNCj4+PiArICAgY3NpMmRjLT5wYWRzW0NTSTJEQ19QQURfU0lOS10uZmxhZ3MgPSBNRURJQV9Q QURfRkxfU0lOSzsNCj4+PiArICAgY3NpMmRjLT5wYWRzW0NTSTJEQ19QQURfU09VUkNFXS5mbGFn cyA9IE1FRElBX1BBRF9GTF9TT1VSQ0U7DQo+Pg0KPj4gSXNuJ3QgdGhlIHNvdXJjZSBwYWQgcHJl c2VuY2UgY29uZGl0aW9uYWwgdG8gdGhlIHByZXNlbmNlIG9mDQo+PiBwb3J0QDEgPw0KPj4NCj4+ PiArDQo+Pj4gKyAgIHJldCA9IG1lZGlhX2VudGl0eV9wYWRzX2luaXQoJmNzaTJkYy0+Y3NpMmRj X3NkLmVudGl0eSwgQ1NJMkRDX1BBRFNfTlVNLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNzaTJkYy0+cGFkcyk7DQo+Pj4gKyAgIGlmIChyZXQgPCAwKSB7DQo+Pj4gKyAg ICAgICAgICAgZGV2X2VycihkZXYsICJtZWRpYSBlbnRpdHkgaW5pdCBmYWlsZWRcbiIpOw0KPj4+ ICsgICAgICAgICAgIGdvdG8gY3NpMmRjX3Byb2JlX2VudGl0eV9lcnI7DQo+Pj4gKyAgIH0NCj4+ PiArDQo+Pj4gKyAgIHY0bDJfc2V0X3N1YmRldmRhdGEoJmNzaTJkYy0+Y3NpMmRjX3NkLCBwZGV2 KTsNCj4+PiArDQo+Pj4gKyAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsICZjc2kyZGMtPmNz aTJkY19zZCk7DQo+Pj4gKw0KPj4+ICsgICBJTklUX1dPUksoJmNzaTJkYy0+d29ya3EsIGNzaTJk Y193b3JrcV9oYW5kbGVyKTsNCj4+PiArDQo+Pj4gKyAgIHJldCA9IGNzaTJkY19vZl9wYXJzZShj c2kyZGMsIGRldi0+b2Zfbm9kZSk7DQo+Pj4gKyAgIGlmIChyZXQpDQo+Pj4gKyAgICAgICAgICAg Z290byBjc2kyZGNfcHJvYmVfZW50aXR5X2VycjsNCj4+PiArDQo+Pj4gKyAgIGRldl9pbmZvKGRl diwgIk1pY3JvY2hpcCBDU0kyREMgdmVyc2lvbiAleFxuIiwNCj4+PiArICAgICAgICAgICAgY3Np MmRjX3JlYWRsKGNzaTJkYywgQ1NJMkRDX1ZFUlNJT04pKTsNCj4+PiArDQo+Pj4gKyAgIHBtX3J1 bnRpbWVfc2V0X2FjdGl2ZShkZXYpOw0KPj4+ICsgICBwbV9ydW50aW1lX2VuYWJsZShkZXYpOw0K Pj4+ICsgICBwbV9yZXF1ZXN0X2lkbGUoZGV2KTsNCj4+PiArDQo+Pj4gKyAgIHJldHVybiAwOw0K Pj4+ICsNCj4+PiArY3NpMmRjX3Byb2JlX2VudGl0eV9lcnI6DQo+Pj4gKyAgIG1lZGlhX2VudGl0 eV9jbGVhbnVwKCZjc2kyZGMtPmNzaTJkY19zZC5lbnRpdHkpOw0KPj4+ICsgICB2NGwyX2Rldmlj ZV91bnJlZ2lzdGVyKCZjc2kyZGMtPnY0bDJfZGV2KTsNCj4+PiArY3NpMmRjX2Nsa19mYWlsOg0K Pj4+ICsgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoY3NpMmRjLT5wY2xrKTsNCj4+PiArICAgcmV0 dXJuIHJldDsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBjc2kyZGNfcmVtb3ZlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+Pj4gK3sNCj4+PiArICAgc3RydWN0IHY0bDJf c3ViZGV2ICpjc2kyZGNfc2QgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4+PiArICAg c3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNl KGNzaTJkY19zZCk7DQo+Pj4gKw0KPj4+ICsgICBwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRl dik7DQo+Pj4gKw0KPj4+ICsgICB2NGwyX2FzeW5jX3VucmVnaXN0ZXJfc3ViZGV2KCZjc2kyZGMt PmNzaTJkY19zZCk7DQo+Pj4gKyAgIGNzaTJkY19jbGVhbnVwX25vdGlmaWVyKGNzaTJkYyk7DQo+ Pj4gKyAgIG1lZGlhX2VudGl0eV9jbGVhbnVwKCZjc2kyZGMtPmNzaTJkY19zZC5lbnRpdHkpOw0K Pj4+ICsgICB2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZjc2kyZGMtPnY0bDJfZGV2KTsNCj4+PiAr ICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNzaTJkYy0+cGNsayk7DQo+Pj4gKw0KPj4+ICsgICBy ZXR1cm4gMDsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBfX21heWJlX3VudXNlZCBj c2kyZGNfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCj4+PiArew0KPj4+ICsg ICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ Pj4gKw0KPj4+ICsgICByZXR1cm4gY3NpMmRjX3Bvd2VyKGNzaTJkYywgZmFsc2UpOw0KPj4+ICt9 DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGNzaTJkY19ydW50aW1lX3Jl c3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+Pj4gK3sNCj4+PiArICAgc3RydWN0IGNzaTJkY19k ZXZpY2UgKmNzaTJkYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPj4+ICsNCj4+PiArICAgcmV0 dXJuIGNzaTJkY19wb3dlcihjc2kyZGMsIHRydWUpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgY3NpMmRjX2Rldl9wbV9vcHMgPSB7DQo+Pj4gKyAg IFNFVF9SVU5USU1FX1BNX09QUyhjc2kyZGNfcnVudGltZV9zdXNwZW5kLCBjc2kyZGNfcnVudGlt ZV9yZXN1bWUsIE5VTEwpDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBjc2kyZGNfb2ZfbWF0Y2hbXSA9IHsNCj4+PiArICAgeyAuY29tcGF0aWJs ZSA9ICJtaWNyb2NoaXAsc2FtYTdnNS1jc2kyZGMiIH0sDQo+Pj4gKyAgIHsgfQ0KPj4+ICt9Ow0K Pj4+ICsNCj4+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgY3NpMmRjX29mX21hdGNoKTsNCj4+ PiArDQo+Pj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNzaTJkY19kcml2ZXIgPSB7 DQo+Pj4gKyAgIC5wcm9iZSAgPSBjc2kyZGNfcHJvYmUsDQo+Pj4gKyAgIC5yZW1vdmUgPSBjc2ky ZGNfcmVtb3ZlLA0KPj4+ICsgICAuZHJpdmVyID0gew0KPj4+ICsgICAgICAgICAgIC5uYW1lICAg ICAgICAgICA9ICJtaWNyb2NoaXAtY3NpMmRjIiwNCj4+PiArICAgICAgICAgICAucG0gICAgICAg ICAgICAgPSAmY3NpMmRjX2Rldl9wbV9vcHMsDQo+Pj4gKyAgICAgICAgICAgLm9mX21hdGNoX3Rh YmxlID0gb2ZfbWF0Y2hfcHRyKGNzaTJkY19vZl9tYXRjaCksDQo+Pj4gKyAgIH0sDQo+Pj4gK307 DQo+Pj4gKw0KPj4+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGNzaTJkY19kcml2ZXIpOw0KPj4+ ICsNCj4+PiArTU9EVUxFX0FVVEhPUigiRXVnZW4gSHJpc3RldiA8ZXVnZW4uaHJpc3RldkBtaWNy b2NoaXAuY29tPiIpOw0KPj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1pY3JvY2hpcCBDU0kyIERl bXV4IENvbnRyb2xsZXIgZHJpdmVyIik7DQo+Pj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsN Cj4+PiArTU9EVUxFX1NVUFBPUlRFRF9ERVZJQ0UoInZpZGVvIik7DQo+Pg0KPj4gRm9yIG15IGVk dWNhdGlvbiwgd2hhdCdzIE1PRFVMRV9TVVBQT1JURURfREVWSUNFIGZvciA/DQo+IA0KPiBJdCdz ICJub3QgeWV0IGltcGxlbWVudGVkIiBzaW5jZSAyMDA1LCBJIHRoaW5rIGl0IGNhbiBiZSBkcm9w cGVkIDotKQ0KPiANCj4gLS0NCj4gUmVnYXJkcywNCj4gDQo+IExhdXJlbnQgUGluY2hhcnQNCj4g DQoNCg==