From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42365C433F5 for ; Fri, 24 Sep 2021 13:25:00 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id F2D1161050 for ; Fri, 24 Sep 2021 13:24:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org F2D1161050 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=foss.st.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:CC:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=7afxY3ydi5vs69wG3E1ZD5y44ts9bDNyzMJn/8gEg98=; b=QkTybAs9l6v5IPzb2DDX9a5HjM qVliaZXLVvBrC1aANlR71jdRwZjGp1iiWzsal0Y6u5A0Enlt+9K0d5jjQn0+ynjqFB1CIoBQTm6Ie R4T8+QI5IJ2V9gyRjZiXhpg47NXOHFX9bCuQ/KSqtRgnnOUuHVnf41Kfkz6SIJ5pnkmkAvucec3pn a+fPQaUe53aR+5n6+YWnNDqmi2oFjxevn7gjnQtCpzQ7myGAJGeLgXIP9NMbDpeTK4wp+m4sdWGHn 963VGShLNWaCbbnbA7GLVSLYaXXFOE5hoYH2q1EL2bqdf09mHF5iAkqYFhsWcDQaMJZK1UEHY+SY1 UlJ601fA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTl9z-00EXu4-QT; Fri, 24 Sep 2021 13:22:40 +0000 Received: from mx07-00178001.pphosted.com ([185.132.182.106]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTl28-00EUi7-1B for linux-arm-kernel@lists.infradead.org; Fri, 24 Sep 2021 13:14:36 +0000 Received: from pps.filterd (m0241204.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 18OAMFXY014424; Fri, 24 Sep 2021 15:14:24 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h=subject : to : cc : references : from : message-id : date : mime-version : in-reply-to : content-type : content-transfer-encoding; s=selector1; bh=kcE9ZoQyVSzStrWEB/BCe8pFq6Sny4iY1guuqpPccoo=; b=KpJ4MdzK3LIX3PzoGh+AyM9Zb2mvrlR85aeSyeubTwi4HyCFav05IPv+QhR1Vfmq2M8y dXglCRj7UBbzW9hIlYIr0+KluagyumpxxwhnGytanvNL4VFnqt9xprCuYrJcTbE4uo/E SjThiIsQvyAvH0BSKR9IFg3jVGBH7TQ4GTbeaJRWu/AOeDarV462weSXVipNi68U1+sQ Q+3m57noOlF305TSs82ks22hYxRL0/movbMD74HLqjaNrsQuv13PRuyvOZ9iZuJLIpDL CqD1JBYDpyt4OLMCMv3PcgoY5USdwJ2HNw4Hvd+aIGRVOIbFzYZjKKydFsyz1Zqre1Du hA== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 3b93fsc0a1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Sep 2021 15:14:24 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 095E610002A; Fri, 24 Sep 2021 15:14:22 +0200 (CEST) Received: from Webmail-eu.st.com (sfhdag2node2.st.com [10.75.127.5]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id C16292359AF; Fri, 24 Sep 2021 15:14:22 +0200 (CEST) Received: from lmecxl0577.lme.st.com (10.75.127.47) by SFHDAG2NODE2.st.com (10.75.127.5) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 24 Sep 2021 15:14:21 +0200 Subject: Re: [PATCH 4/4] iio: adc: stm32-dfsdm: add scale and offset support To: Jonathan Cameron CC: , , , , , , , , , , Arnaud POULIQUEN , Fabrice GASNIER References: <20200204101008.11411-1-olivier.moysan@st.com> <20200204101008.11411-5-olivier.moysan@st.com> <20200208161847.76c7d6e8@archlinux> <8400827e-5f3d-ad3f-99c8-986934b1a7b8@st.com> <20200214131113.70aa36b8@archlinux> <5b2e74a0-71bd-46d0-0096-b33ff17f780b@st.com> <20200214151011.20111e8c@archlinux> <78f4e4b9-ef4c-982f-7cd3-8d3052d99150@foss.st.com> <20210912182617.5635fa06@jic23-huawei> <20210919191414.09270f4e@jic23-huawei> From: Olivier MOYSAN Message-ID: <2ac8eafa-25fe-6640-edef-960e56733534@foss.st.com> Date: Fri, 24 Sep 2021 15:14:20 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <20210919191414.09270f4e@jic23-huawei> Content-Language: en-US X-Originating-IP: [10.75.127.47] X-ClientProxiedBy: SFHDAG2NODE2.st.com (10.75.127.5) To SFHDAG2NODE2.st.com (10.75.127.5) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-09-24_04,2021-09-24_02,2020-04-07_01 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210924_061432_632700_915372E1 X-CRM114-Status: GOOD ( 40.95 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: 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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgSm9uYXRoYW4sCgpPbiA5LzE5LzIxIDg6MTQgUE0sIEpvbmF0aGFuIENhbWVyb24gd3JvdGU6 Cj4gT24gVHVlLCAxNCBTZXAgMjAyMSAxNzo0MzoxNSArMDIwMAo+IE9saXZpZXIgTU9ZU0FOIDxv bGl2aWVyLm1veXNhbkBmb3NzLnN0LmNvbT4gd3JvdGU6Cj4gCj4+IEhpIEpvbmF0aGFuLAo+Pgo+ PiBUaGFua3MsIGZvciB5b3VyIGNvbW1lbnRzLgo+Pgo+PiBPbiA5LzEyLzIxIDc6MjYgUE0sIEpv bmF0aGFuIENhbWVyb24gd3JvdGU6Cj4+PiBPbiBGcmksIDEwIFNlcCAyMDIxIDE3OjU2OjQ1ICsw MjAwCj4+PiBPbGl2aWVyIE1PWVNBTiA8b2xpdmllci5tb3lzYW5AZm9zcy5zdC5jb20+IHdyb3Rl Ogo+Pj4gICAgCj4+Pj4gSGkgSm9uYXRoYW4sCj4+Pj4KPj4+PiBPbiA5LzEwLzIxIDQ6MDUgUE0s IE9saXZpZXIgTU9ZU0FOIHdyb3RlOgo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBTVCBSZXN0cmlj dGVkCj4+Pj4+Cj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+Pj4+IEZyb206IEpv bmF0aGFuIENhbWVyb24gPGppYzIzQGtlcm5lbC5vcmc+Cj4+Pj4+IFNlbnQ6IHZlbmRyZWRpIDE0 IGbDqXZyaWVyIDIwMjAgMTY6MTAKPj4+Pj4gVG86IE9saXZpZXIgTU9ZU0FOIDxvbGl2aWVyLm1v eXNhbkBzdC5jb20+Cj4+Pj4+IENjOiByb2JoK2R0QGtlcm5lbC5vcmc7IG1hcmsucnV0bGFuZEBh cm0uY29tOyBrbmFhY2suaEBnbXguZGU7IGxhcnNAbWV0YWZvby5kZTsgZGV2aWNldHJlZUB2Z2Vy Lmtlcm5lbC5vcmc7IGxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmc7IHBtZWVyd0BwbWVlcncubmV0OyBsaW51eC1zdG0zMkBzdC1tZC1tYWlsbWFu LnN0b3JtcmVwbHkuY29tOyBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKPj4+ Pj4gU3ViamVjdDogUmU6IFtQQVRDSCA0LzRdIGlpbzogYWRjOiBzdG0zMi1kZnNkbTogYWRkIHNj YWxlIGFuZCBvZmZzZXQgc3VwcG9ydAo+Pj4+Pgo+Pj4+PiBPbiBGcmksIDE0IEZlYiAyMDIwIDE0 OjQ5OjE4ICswMDAwCj4+Pj4+IE9saXZpZXIgTU9ZU0FOIDxvbGl2aWVyLm1veXNhbkBzdC5jb20+ IHdyb3RlOgo+Pj4+PiAgICAgICAKPj4+Pj4+IEhpIEpvbmF0aGFuLAo+Pj4+Pj4KPj4+Pj4+IE9u IDIvMTQvMjAgMjoxMSBQTSwgSm9uYXRoYW4gQ2FtZXJvbiB3cm90ZToKPj4+Pj4+PiBPbiBUdWUs IDExIEZlYiAyMDIwIDE1OjE5OjAxICswMDAwCj4+Pj4+Pj4gT2xpdmllciBNT1lTQU4gPG9saXZp ZXIubW95c2FuQHN0LmNvbT4gd3JvdGU6Cj4+Pj4+Pj4gICAgICAgICAKPj4+Pj4+Pj4gSGkgSm9u YXRoYW4sCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IE9uIDIvOC8yMCA1OjE4IFBNLCBKb25hdGhhbiBDYW1l cm9uIHdyb3RlOgo+Pj4+Pj4+Pj4gT24gVHVlLCA0IEZlYiAyMDIwIDExOjEwOjA4ICswMTAwCj4+ Pj4+Pj4+PiBPbGl2aWVyIE1veXNhbiA8b2xpdmllci5tb3lzYW5Ac3QuY29tPiB3cm90ZToKPj4+ Pj4+Pj4+ICAgICAgICAgICAgCj4+Pj4+Pj4+Pj4gQWRkIHNjYWxlIGFuZCBvZmZzZXQgYXR0cmli dXRlcyBzdXBwb3J0IHRvIFNUTTMyIERGU0RNLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gU2lnbmVk LW9mZi1ieTogT2xpdmllciBNb3lzYW4gPG9saXZpZXIubW95c2FuQHN0LmNvbT4KPj4+Pj4+Pj4+ IEhtbS4gSSBjYW4ndCByZW1lbWJlciB0aGlzIGhpc3Rvcnkgb2YgdGhpcyBidXQgd2UndmUga2lu ZCBvZiBlbmRlZAo+Pj4+Pj4+Pj4gdXAgYmFja3dhcmRzIHdydCB0byBvdGhlciBjb25zdW1lciBk cml2ZXJzLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IEluIHNvbWUgc2Vuc2UgdGhpcyBpcyBzaW1pbGFy IHRvIHRoZSBhbmFsb2cgZ3lyb3Njb3Blcy4gIEluIHRob3NlCj4+Pj4+Pj4+PiB0aGUgY29uc3Vt ZXIgZHJpdmVyIGlzIHRoZSBneXJvc2NvcGUgd2hpY2ggaXMgY29uc3VtaW5nIHRoZSByYXcKPj4+ Pj4+Pj4+IHJlYWRpbmdzIGZyb20gYW4gQURDIGNvbm5lY3RlZCB0byB0aGUgY2hhbm5lbC4gIFRo aXMgcmVzdWx0cyBpbiB1cwo+Pj4+Pj4+Pj4gZ2V0dGluZyByZWFkaW5ncyByZXBvcnRlZCBieSB0 aGUgZ3lyb3Njb3BlIGRyaXZlci4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBIZXJlIHdlIGhhdmUgYSBz aWdtYSBkZWx0YSBjb252ZXJ0b3IgY29uc3VtaW5nIHRoZSBwdWxzZSB0cmFpbgo+Pj4+Pj4+Pj4g ZnJvbSBhIHNpZ21hIGRlbHRhIGRldmljZS4gIFNvIHRoZSBjaGFubmVscyBhcmUgcmVwb3J0ZWQg YnkgdGhlCj4+Pj4+Pj4+PiBzaWdtYSBkZWx0YSByZWNlaXZlciwgd2hlcmVhcyBpIHRoaW5rIHRo ZSBuZWFyZXN0IGVxdWl2YWxlbnQgdG8KPj4+Pj4+Pj4+IHRoZSBhbmFsb2cgdm9sdGFnZSBvdXRw dXRpbmcgZ3lyb3Njb3BlcyB3b3VsZCBoYXZlIGJlZW4gaWYgd2UgaGFkCj4+Pj4+Pj4+PiByZXBv cnRlZCB0aGUgY2hhbm5lbCB2YWx1ZXMgYXQgdGhlIHNpZ21hIGRlbHRhIGNvbnZlcnRlci4KPj4+ Pj4+Pj4gVGhlIERGU0RNIGRyaXZlciBpcyBjdXJyZW50bHkgdXNlZCBhcyBhIGNvbnN1bWVyIG9m IHRoZSBzZCBtb2R1bGF0b3IuCj4+Pj4+Pj4+IFRoZSBzY2FsZSBhbmQgb2Zmc2V0IHZhbHVlcyBv ZiB0aGUgY2hhbm5lbHMgYXJlIGFscmVhZHkgY29tcHV0ZWQgYnkKPj4+Pj4+Pj4gdGhlIERGU0RN IGRyaXZlciwgYW5kIHByb3ZpZGVkIGJ5IHRoaXMgZHJpdmVyIHRvIHRoZSBJSU8gQUJJLgo+Pj4+ Pj4+PiBIb3dldmVyLCB0aGUgREZTRE0gaGFzIG5vIHZvbHRhZ2UgcmVmZXJlbmNlLCBzbyBpdCBo YXMgdG8gcmV0cmlldmUKPj4+Pj4+Pj4gaXQgZnJvbSBzZC1tb2R1bGF0b3IgY2hhbm5lbHMsIGZv ciB0aGUgc2NhbGUgZmFjdG9yIGNvbXB1dGF0aW9uLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAgICAgIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc2NhbGXCoCBvZmZzZXQKPj4+Pj4+Pj4gICAgICDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBewqDCoMKgwqDCoCBeCj4+Pj4+Pj4+ICAgICAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg wqAgfMKgwqDCoMKgwqDCoCBJSU8gQUJJCj4+Pj4+Pj4+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4+PiAgICAgIMKg wqDCoMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0t LS0tLS0tLS0rCj4+Pj4+Pj4+ICAgICAgwqDCoMKgwqDCoMKgwqDCoCB8c2QgZHJpdmVywqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIHxERlNETSBkcml2ZXIgfAo+Pj4+Pj4+PiAgICAgIMKg wqDCoMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0t LS0tLS0tLS0rCj4+Pj4+Pj4+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4+PiAgICAgIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSFcKPj4+Pj4+Pj4gICAgICDC oMKgwqDCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgICstLS0t LS0tLS0tLS0tKwo+Pj4+Pj4+PiArLS0tLS0tLT4rIHNkLW1vZHVsYXRvcsKgICstLS0tLS0tLS0+ KyBERlNETSArLS0tLS0tLS0+Cj4+Pj4+Pj4+IGFuYWxvZ8KgwqAgKy0tLS0tLSstLS0tLS0tLSvC oMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0rIG91dHB1dCBpbnB1dAo+Pj4+Pj4+PiBe Cj4+Pj4+Pj4+ICAgICAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgdnJlZgo+Pj4+ Pj4+PiAgICAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArCj4+Pj4+Pj4+Cj4+Pj4+ Pj4+Cj4+Pj4+Pj4+IElzIGl0IHRoZSB0b3BvbG9neSB5b3VyIGFyZSBleHBlY3RpbmcgPwo+Pj4+ Pj4+IEl0J3Mgbm90IHRoZSBvbmUgd2UnZCBleHBlY3QgaWYgd2UgYXJlIGFsaWduaW5nIHdpdGgg c2ltaWxhciBjYXNlcwo+Pj4+Pj4+IGVsc2V3aGVyZSBpbiBJSU8uICBGb3IgZXhhbXBsZSwgaWYg d2UgYXR0YWNoIGFuIGFuYWxvZyBhY2NlbGVyb21ldGVyCj4+Pj4+Pj4gdG8gYW4gQURDLCB3ZSBy ZXBvcnQgdGhlIGFjY2VsIGNoYW5uZWxzIG9uIHRoZSBhY2NlbGVyb21ldGVyIG5vdCB0aGUKPj4+ Pj4+PiBBREMuICBUaGUgZXF1aXZhbGVudCB3b3VsZCBiZSB0byBzZWUgdGhlIERGU0RNIGFzIHBy b3ZpZGluZyBhCj4+Pj4+Pj4gY29udmVyc2lvbiBzZXJ2aWNlIHRvIHRoZSBTRCBkZXZpY2Ugd2hp Y2ggaXMgYWN0dWFsbHkgZXhlY3V0aW5nIHRoZQo+Pj4+Pj4+IG1lYXN1cmVtZW50IGFuZCBoYXMg dGhlIGlucHV0IGNoYW5uZWxzLgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiAgICAgwqDCoMKgwqDC oMKgwqDCoCBzY2FsZcKgIG9mZnNldCAgcmF3Cj4+Pj4+Pj4gICAgIMKgwqDCoMKgwqDCoMKgwqDC oMKgIF7CoMKgwqDCoMKgIF4gICAgICBeCj4+Pj4+Pj4gICAgIMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoMKgwqDCoMKgIHzCoMKgwqDCoCAgfCAgwqDCoCAgICAgICAgICAgICAgICAgICAgICAgICAg SUlPIEFCSQo+Pj4+Pj4+ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Pj4gICAgICAgwqDCoMKgwqDCoMKgwqDC oCArLS0tLS0tLS0tLS0tLS0tK8KgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLSsKPj4+ Pj4+PiAgICAgICDCoMKgwqDCoMKgwqDCoMKgIHxzZCBkcml2ZXLCoMKgwqDCoMKgIHzCoMKgwqDC oMKgwqDCoMKgwqAgfERGU0RNIGRyaXZlciB8Cj4+Pj4+Pj4gICAgICAgwqDCoMKgwqDCoMKgwqDC oCArLS0tLS0tLS0tLS0tLS0tK8KgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLSsKPj4+ Pj4+PiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4+ICAgICAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSFcKPj4+Pj4+PiAgICAgICDCoMKgwqDCoMKg wqDCoMKgICstLS0tLS0tLS0tLS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0t Kwo+Pj4+Pj4+ICAgICAgKy0tLS0tLS0+KyBzZC1tb2R1bGF0b3LCoCArLS0tLS0tLS0tPisgREZT RE0gKy0tLS0tLS0tPgo+Pj4+Pj4+ICAgICAgYW5hbG9nwqDCoCArLS0tLS0tKy0tLS0tLS0tK8Kg wqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLSsgb3V0cHV0Cj4+Pj4+Pj4gICAgICBpbnB1 dMKgwqDCoMKgwqDCoMKgwqDCoMKgIF4KPj4+Pj4+PiAgICAgICDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCB2cmVmCj4+Pj4+Pj4+ICAgICAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICsKPj4+Pj4+Pj4gICAgICAgICAKPj4+Pj4+IFRoYW5rcyBmb3IgeW91ciBjbGFyaWZp Y2F0aW9uLgo+Pj4+Pj4gb2ssIG1vdmluZyB0byB0aGlzIGxvZ2ljIGlzIGEgc2lnbmlmaWNhbnQg Y2hhbmdlLgo+Pj4+Pj4gSSBuZWVkIHRvIGV2YWx1YXRlIGZ1cnRoZXIgdGhlIGltcGFjdCBvbiB0 aGUgZGZzZG0gZHJpdmVyLgo+Pj4+Pgo+Pj4+PiBVbmRlcnN0b29kISAgSWYgd2UgY2FuJ3QgZG8g aXQgd2l0aG91dCBwb3RlbnRpYWxseSBicmVha2luZyB1c2VycyB0aGVuIHN1Y2ggaXMgbGlmZS4K Pj4+Pj4KPj4+Pj4gSm9uYXRoYW4KPj4+Pj4gICAgICAgCj4+Pj4KPj4+PiBJIGNvbWUgYmFjayB0 byB0aGlzIG9sZCwgYnV0IHN0aWxsIHZhbGlkIHRvcGljLgo+Pj4KPj4+IEknZCBmb3Jnb3R0ZW4g YWJvdXQgdGhpcyBvbmUsIHNvIGFwb2xvZ2llcyBpZiBpdCB0YWtlcyBtZSBhIGJpdCBvZiB0aW1l IHRvCj4+PiBnZXQgYmFjayB1cCB0byBzcGVlZCEKPj4+ICAgIAo+Pj4+IFlvdSBtZW50aW9uZWQg dGhlIGV4YW1wbGUgb2YgYW5hbG9nIGd5cm9zY29wZXMgaW4gYSBwcmV2aW91cyBtZXNzYWdlLgo+ Pj4+IExvb2tpbmcgYXQgZ3lyb3Njb3BlIGRyaXZlcnMsIEkgZm91bmQgcmNhci1neXJvYWRjIGRy aXZlciB3aGljaCBzaG93cwo+Pj4KPj4+IE5vdCBhIGd5cm9zY29wZSBkcml2ZXIgZGVzcGl0ZSB0 aGUgbmFtZSA6KSAgSSB3YXMgdGhpbmtpbmcgbW9yZSBvZiB0aGUKPj4+IGNhc2Ugd2hlcmUgd2Ug aGF2ZSBhIGd5cm9zY29wZSB0aGF0IGNhbiBiZSB3aXJlZCB1cCB0byBhIGJ1bmNoIG9mIGRpZmZl cmVudAo+Pj4gQURDcy4KPj4+ICAgIAo+Pj4+IHJlcXVpcmVtZW50cyBzaW1pbGFyIHRvIGRmc2Rt IG5lZWRzOgo+Pj4+IGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL3JlbmVzYXMlMkNyY2FyLWd5cm9hZGMueWFtbAo+Pj4+ Cj4+Pj4gcmNhci1neXJvYWRjIGRyaXZlciBtYWluIGNoYXJhY3RlcmlzaXRpY3M6Cj4+Pj4gLSB0 aGUgcGFyZW50IGRldmljZSAoZ3lyb2FkYykgaXMgYSBjb25zdW1lciBvZiBzdWIgZGV2aWNlcyAo U1BJIEFEQ3MpCj4+Pj4gLSB0aGUgY2hhbm5lbHMgYXJlIHBvcHVsYXRlZCBmcm9tIHRoZSBzdWIg ZGV2aWNlcwo+Pj4+IC0gdGhlIGlpbyBkZXZpY2UgaXMgYXNzb2NpYXRlZCB0byB0aGUgcGFyZW50 IGRldmljZQo+Pj4KPj4+IEkgd291bGRuJ3QgbmVjZXNzYXJpbHkgdGFrZSB0aGF0IGFzIGEgZ29s ZGVuIGV4YW1wbGUuICBXZSB3ZXJlIHN0aWxsIGZpZ3VyaW5nCj4+PiBvdXQgaG93IHRoaXMgc3R1 ZmYgd291bGQgZml0IHRvZ2V0aGVyLgo+Pj4gICBGcm9tIHdoYXQgSSByZWNhbGwgKGFuZCBpdCdz IGJlZW4gYSBmZXcgeWVhcnMpIHRoYXQgZGV2aWNlIHByb3ZpZGVzIG5vCj4+PiBjb25maWd1cmF0 aW9uIHR5cGUgaW50ZXJmYWNlcyBmb3IgdGhlIFNQSSBBRENzIC0gdGhleSBlbmQgdXAgaGF2aW5n IG5vCj4+PiBleGlzdGVuY2UgaW4gdGhlIGRldmljZSBtb2RlbCBhcyBhIHJlc3VsdC4gIFRoZXJl IGlzIG5vIG1lYW5zIG9mCj4+PiBzaGFyaW5nIGFueXRoaW5nIGJldHdlZW4gdGhlIHdheXMgdGhp cyBkZXZpY2UgdXNlcyB0aGUgU1BJIEFEQ3MgYW5kIHRoZQo+Pj4gd2F5IGFueSBvdGhlciBkZXZp Y2UgZG9lcy4KPj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+PiBJIHRvb2sgdGhlIGV4YW1wbGUgb2YgZ3ly b2FkYyB0byByZWNvbnNpZGVyIGRmc2RtIHRvcG9sb2d5IGFuZCBleHBsb3JlCj4+Pj4gc29tZSB2 YXJpYW50cyBhY2NvcmRpbmcgdG8gSUlPIGRldmljZXMgdXNlLgo+Pj4+Cj4+Pj4gMSkgY3VycmVu dCB0b3BvbG9neTogb25lIElJTyBkZXZpY2UgcGVyIFNEIG1vZHVsYXRvciBhbmQgb25lIGlpbyBk ZXZpY2UKPj4+PiBwZXIgREZTRE0gZmlsdGVyCj4+Pj4gICAgICAgIFRoZSBERlNETSBpcyB1c2Vk IGFzIGEgY29uc3VtZXIgb2YgU0QgbW9kdWxhdG9yIHRocm91Z2ggdGhlIGh3Cj4+Pj4gICAgICAg IGNvbnN1bWVyIEFQSS4KPj4+PiAgICAgICAgKiBjb25zCj4+Pj4gICAgICAgICAgICAtIFNEIG1v ZHVsYXRvciBhbmQgREZTRE0gZmlsdGVyIGhhdmUgdGhlaXIgb3duIGNoYW5uZWwKPj4+PiAgICAg ICAgICAgIHNwZWNpZmljYXRpb24uCj4+Pj4gICAgICAgICAgICAtIERGU0RNIHJldHJpZXZlcyBj aGFubmVscyBzY2FsZSBpbmZvcm1hdGlvbiBmcm9tIFNECj4+Pj4gICAgICAgICAgICBtb2R1bGF0 b3IgdG8gaW5pdGlhbGl6ZWQgaXRzIGNoYW5uZWxzCj4+Pj4gICAgICAgICAgICAtIFNEIG1vZHVs YXRvciBJSU8gc3lzZnMgaW50ZXJmYWNlIGlzIHVzZWxlc3MKPj4+Pgo+Pj4+ICstLS0tLS0tLS0t LS0rICAgICArLS0tLS0tLSsgICAgICstLS0tLS0tLS0rICBzeXNmcwo+Pj4+IHwgc2QwIGlpb2Rl diB8IC0tPiB8IGNoYW4wIHwgLS0+IHwgZmlsdGVyMCB8IC0tLS0tLS0+Cj4+Pj4gKy0tLS0tLS0t LS0tLSsgICAgICstLS0tLS0tKyAgICAgKy0tLS0tLS0tLSsKPj4+PiAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KPj4+PiAgICAgIHwgc3lzZnMgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKPj4+PiAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKPj4+PiArLS0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0rICAg ICAgIHwKPj4+PiB8IHNkMSBpaW9kZXYgfCAtLT4gfCBjaGFuMSB8IC0tLS0tLSsKPj4+PiArLS0t LS0tLS0tLS0tKyAgICAgKy0tLS0tLS0rCj4+Pj4gICAgICB8Cj4+Pj4gICAgICB8IHN5c2ZzCj4+ Pj4gICAgICB2Cj4+Pj4KPj4+Pgo+Pj4+IDIpICJjb252ZXJzaW9uIHNlcnZpY2UiIHRvcG9sb2d5 OiBvbmUgSUlPIGRldmljZSBwZXIgU0QgbW9kdWxhdG9yCj4+Pj4gICAgICAgICogY29ucwo+Pj4+ ICAgICAgICAgICAgLSBEYXRhIHRyYW5zZmVyczogaW4gdGhpcyBjYXNlIHRoZSBjb252ZXJ0ZWQg ZGF0YSBmcm9tCj4+Pj4gICAgICAgICAgICBERlNETSBmaWx0ZXIgaGF2ZSB0byBiZSBzZW50IGJh Y2sgdG8gU0QgbW9kdWxhdG9yIHRvIGJlIAkKPj4+PiAJYXZhaWxhYmxlIG9uIHN5c2ZzIGludGVy ZmFjZS4KPj4+PiAgICAgICAgICAgIC0gU2NhbiBtb2RlOiB0aGlzIHRvcG9sb2d5IHNlZW1zIG5v dCBjb21wYXRpYmxlIHdpdGggc2Nhbgo+Pj4+ICAgICAgICAgICAgbW9kZSwgd2hlcmUgbXVsdGlw bGV4ZWQgY2hhbm5lbHMgYXJlIGV4cGVjdGVkIGFyZSBvbgo+Pj4+IAlJSU8gZGV2aWNlIGludGVy ZmFjZS4KPj4+PiAgIAo+Pj4+IAk9PiBJIGRvbid0IGZpbmQgYSBwcm9wZXIgd2F5IHRvIGFkZHJl c3Mgc2NhbiBtb2RlIHdpdGggbXVsdGkgU0QKPj4+PiAJbW9kdWxhdG9yIGNvbm5lY3RlZCB0byBv bmUgREZTTSBmaWx0ZXIKPj4+Cj4+PiBHb29kIHBvaW50LCB0aGVyZSBpc24ndCBhIG1lYW5zIG9m IGNvbWJpbmluZyB0aGUgc2NhbnMgZnJvbSBtdWx0aXBsZQo+Pj4gSUlPIGRldmljZXMgYW5kIHRo YXQgaXMgd2hhdCB3ZSBlbmQgdXAgaGF2aW5nIGluIHRoaXMgbW9kZWwuCj4+Pgo+Pj4gWW91IGNh biAnc3BsaXQnIHRoZSBjaGFubmVscyBzbyB0aGF0IGVuYWJsaW5nIHNkMCBhbmQgc2QxIGJ1ZmZl cmVkCj4+PiBtb2RlIHdpbGwgcmVzdWx0IGluIHNjYW5zIGZyb20gdGhlIGZpbHRlciBmaWxsaW5n IEZJRk9zIGZvciBlYWNoIG9mIHRoZW0KPj4+IGJ1dCB0aGF0IG1heSBub3QgZml0IHRoZSB1c2Ug bW9kZWwgeW91IGhhdmUgaW4gbWluZC4KPj4+ICAgIAo+Pgo+PiBZZXMsIHRoaXMgbW9kZWwgbWF5 IGJlIGFuIG9wdGlvbiB3aGVuIHdlIGhhdmUgaW5kZXBlbmRlbnQgZGF0YSBvbiBlYWNoCj4+IGNo YW5uZWwuIElmIHdlIHdhbnQgdG8gaGFuZGxlIGRhdGEgY29ycmVsYXRlZCBpbiB0aW1lLCB0aGlu Z3MgYmVjb21lCj4+IG1vcmUgdHJpY2t5LCB5ZXQuCj4+IFRoZSBmb2xsb3dpbmcgcHJlc2VudGF0 aW9uIHNob3dzIHNvbWUgZXhhbXBsZXMgb2YgdXNlIGNhc2VzIGZvciBTVE0zMgo+PiBERlNETSAo cGFnZSAyMCB0byAyNCk6Cj4+IGh0dHBzOi8vc3Qtb25saW5ldHJhaW5pbmcuczMuYW1hem9uYXdz LmNvbS9TVE0zMkw0X1N5c3RlbV9EaWdpdGFsX0ZpbHRlcl9mb3JfU0RfTW9kdWxhdG9yc19pbnRl cmZhY2VfKERGU0RNKS9pbmRleC5odG1sCj4+Cj4+IExvb2tpbmcgYXQgMy1waGFzZSBlbGVjdHJp Y2l0eSBtZXRlciBleGFtcGxlIChwYWdlIDIzKSwgdGhlIHZvbHRhZ2VzCj4+IGZyb20gdGhyZWUg U0QgbW9kdWxhdG9ycyBhcmUgY2FwdHVyZWQgYW5kIHByb2Nlc3NlZCBieSBvbmUgREZTRE0gZmls dGVyLgo+PiBUaGUgbXV0aXBsZXhlZCBmaWx0ZXJlZCBkYXRhIGNhbiB0aGVuIGJlIHVzZWQgZm9y IGZ1cnRoZXIgcHJvY2Vzc2luZy4KPj4gSWYgd2UgZ2V0IHRoZSBmaWx0ZXJlZCBkYXRhIGZyb20g dGhyZWUgU0QgSUlPIGRldmljZXMsIGl0IGxvb2tzCj4+IGRpZmZpY3VsdCB0byBndWFyYW50ZWUg dGltZSBhbGlnbm1lbnQgYmV0d2VlbiB0aGVzZSBkYXRhLgo+IAo+IFdlIGNhbiBjaGVhdCBhbmQg ZW5zdXJlIHRoZXkgYWxsIGhhdmUgdGhlIHNhbWUgdGltZXN0YW1wLCBidXQgSSBhZ3JlZQo+IGl0 IGlzIGxlc3MgdGhhbiBpZGVhbC4KPiAKPj4KPj4gSXQgc2VlbXMgdG8gbWUgdGhhdCB0aGUgc29s dXRpb24gMiwgbWF5IHJlZHVjZSB0aGUgZmllbGQgb2YgdXNlIGNhc2VzCj4+IHRoYXQgY291bGQg YmUgYWRkcmVzc2VkIGJ5IHRoZSBERlNETS4KPiAKPiBBZ3JlZWQsIHRoYXQncyBub3QgZ29vZC4K PiAKPj4KPj4+IFRoaXMgc29ydCBvZiBkZW11eCBpcyBtb3JlIG9mdGVuIGRvbmUgZm9yIHdoZW4g d2UgaGF2ZSBhIGNvbnN1bWVyIGluCj4+PiB0aGUgZm9ybSBvZiBzYXkgYSB0b3VjaHNjcmVlbiB0 aGF0IHVzZXMgYSBjb3VwbGUgb2YgY2hhbm5lbHMgb2ZmIGEKPj4+IGdlbmVyYWwgcHVycG9zZSBB REMuIFdlIGhhdmUgbm8gcmVhc29uIHRvIHdhbnQgdG8gZW5zdXJlIGFueSBhbGlnbm1lbnQKPj4+ IGJldHdlZW4gdGhlIGRhdGEgZ29pbmcgdG8gdGhlIHRvdWNoc2NyZWVuIGFuZCB0aGF0IGdvaW5n IHRvIHRoZQo+Pj4gd2hvIGV2ZXIgaXMgaW50ZXJlc3RlZCBpbiB0aGUgb3RoZXIgQURDIGNoYW5u ZWxzLgo+Pj4gICAgCj4+Pj4KPj4+PiArLS0tLS0tLS0tLS0tKyAgICAgICstLS0tLS0tKyAgICAg Ky0tLS0tLS0tLSsKPj4+PiB8IHNkMCBpaW9kZXYgfCA8LS0+IHwgY2hhbjAgfCA8LT4gfCBmaWx0 ZXIwIHwKPj4+PiArLS0tLS0tLS0tLS0tKyAgICAgICstLS0tLS0tKyAgICAgKy0tLS0tLS0tLSsK Pj4+PiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCj4+Pj4gICAgICB8 IHN5c2ZzICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+ICAgICAgdiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiArLS0t LS0tLS0tLS0tKyAgICAgICstLS0tLS0tKyAgICAgICB8Cj4+Pj4gfCBzZDEgaWlvZGV2IHwgPC0t PiB8IGNoYW4xIHwgPC0tLS0tKwo+Pj4+ICstLS0tLS0tLS0tLS0rICAgICAgKy0tLS0tLS0rCj4+ Pj4gICAgICB8Cj4+Pj4gICAgICB8IHN5c2ZzCj4+Pj4gICAgICB2Cj4+Pj4KPj4+Pgo+Pj4+IDMp IGd5cm9hZGMgbGlrZSB0b3BvbG9neTogb25lIGlpbyBkZXZpY2UgcGVyIERGU0RNIGZpbHRlcgo+ Pj4+IChubyBTRCBtb2R1bGF0b3IgaWlvIGRldmljZSByZWdpc3RlcmVkKQo+Pj4+ICAgICAgICBG b3IgREZTRE0gc2NhbGUgYW5kIG9mZnNldCwgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIGFyZSBT RAo+Pj4+ICAgICAgICBtb2R1bGF0b3IgcmVmZXJlbmNlIHZvbHRhZ2UgYW5kIGNoYW5uZWwgdHlw ZXMuCj4+Pj4KPj4+PiAgICAgICAgdm9sdGFnZSByZWZlcmVuY2U6IHRoZSByZWd1bGF0b3Igdm9s dGFnZSBjYW4gYmUgcmV0cmlldmVkIGFzIGl0Cj4+Pj4gICAgICAgIGlzIGRvbmUgaW4gIGd5cm9h ZGMgZHJpdmVyLgo+Pj4+ICAgICAgICBNYXliZSB3ZSBjYW4gZHJvcHBlZCBtZXJlbHkgU0QgbW9k dWxhdG9yLCBhbmQgZGVzY3JpYmUgdm9sdGFnZQo+Pj4+ICAgICAgICBhcyBhIHByb3BlcnR5IG9m IHRoZSBjaGFubmVsICh0aHJvdWdoIGdlbmVyaWMgY2hhbm5lbCBiaW5kaW5nKQo+Pj4+ICAgICAg ICBUaGlzIG1heSBiZSB0b28gcmVzdHJpY3RpdmUgaWYgbW9yZSBoYXJkd2FyZSBoYXMgdG8gYmUK Pj4+PiAgICAgICAgY29uZmlndXJlZCBpbiB0aGUgU0QgbW9kdWxhdG9yLCB5ZXQuCj4+Pgo+Pj4g VGhhdCBpcyBpbmRlZWQgdGhlIGtleSBxdWVzdGlvbi4gRG8gd2UgbmVlZCB0byBjb25maWd1cmUg dGhlIG1vZHVsYXRvcgo+Pj4gZGV2aWNlcz8gSWYgd2UgZG8gdGhlbiB0aGV5IG5lZWQgdG8gaGF2 ZSBhbiBleGlzdGVuY2UgaW4gdGhlIGRldmljZSBtb2RlbC4KPj4+IE1hcHBpbmcgdGhlbSBhcyBJ SU8gZGV2aWNlcyBwcm92aWRlcyByZXVzYWJpbGl0eSBhY3Jvc3MgbXVsdGlwbGUKPj4+IGZpbHRl ciBpbXBsZW1lbnRhdGlvbnMuCj4+PiAgICAKPj4KPj4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIG1h bmFnZSBhIHdpZGUgcmFuZ2Ugb2YgYXBwbGljYXRpb24uIFNvLCB3ZSBoYXZlIHRvCj4+IGJlIGZs ZXhpYmxlIGVub3VnaCB0byBjb25maWd1cmUgU0QgbW9kdWxhdG9yIHdoZW4gbmVjZXNzYXJ5Lgo+ PiBJIGFncmVlLCB0aGF0IHRoZSBTRCBkZXZpY2UgaGFzIHRvIGJlIGtlcHQgZnJvbSB0aGlzIHBv aW50IG9mIHZpZXcuCj4+Cj4+Pj4KPj4+PiAgICAgICAgY2hhbm5lbCB0eXBlOiBJSU8gZ2VuZXJp YyBjaGFubmVsIGJpbmRpbmcgY291bGQgYmUgdXNlZCBoZXJlCj4+Pj4gICAgICAgIGluc3RlYWQg b2YgcHJvcHJpZXRhcnkgcHJvcGVydGllcwo+Pj4+ICAgICAgICB0byBkZXNjcmliZSB0aGUgY2hh bm5lbHMKPj4+Pgo+Pj4+ICAgICAgICBiaW5kaW5nIHNhbXBsZToKPj4+PiAgICAgICAgZGZzZG1f cGRtMTogZmlsdGVyQDEgewo+Pj4+ICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJzdCxzdG0zMi1k ZnNkbS1hZGMiOwo+Pj4+ICAgICAgICAgICAgcmVnID0gPDE+Owo+Pj4+ICAgICAgICAgICAgaW50 ZXJydXB0cyA9IDxHSUNfU1BJIDExMSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPj4+PiAgICAgICAg ICAgIGRtYXMgPSA8JmRtYW11eDEgMTAyIDB4NDAwIDB4MDE+Owo+Pj4+ICAgICAgICAgICAgZG1h LW5hbWVzID0gInJ4IjsKPj4+PiAgICAgICAgICAgIHN0LGZpbHRlci1vcmRlciA9IDwxPjsKPj4+ Pgo+Pj4+ICAgICAgICAgICAgY2hhbm5lbEAyIHsKPj4+PiAgICAgICAgICAgICAgICByZWcgPSA8 Mj47Cj4+Pj4gICAgICAgICAgICAgICAgbGFiZWwgPSAiaW4yIjsKPj4+PiAgICAgICAgICAgICAg ICBzdCxhZGMtY2hhbm5lbC10eXBlcyA9ICJTUElfUiI7Cj4+Pj4gICAgICAgICAgICAgICAgc3Qs YWRjLWNoYW5uZWwtY2xrLXNyYyA9ICJDTEtPVVRfRiI7Cj4+Pj4KPj4+PiAgICAgICAgICAgICAg ICBzZEAwIHsgICAgPwo+Pj4+ICAgICAgICAgICAgICAgICAgICByZWcgPSA8MD47Cj4+Pj4gICAg ICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAic2QtbW9kIjsKPj4+PiAgICAgICAgICAgICAg ICAgICAgdnJlZi1zdXBwbHkgPSA8JnZyZWY+Owo+Pj4+ICAgICAgICAgICAgICAgIH07Cj4+Pj4g ICAgICAgICAgICB9Owo+Pj4+ICAgICAgICB9Owo+Pj4+Cj4+Pj4gICAgICAgICogY29ucwo+Pj4+ ICAgICAgICAgICAgLSBUaGUgc3ViIGRldmljZXMgYXJlIGVtYmVkZGVkIGluIHRoZSBkcml2ZXIg YW5kIGFyZSBub3QKPj4+PiAgICAgICAgICAgIGJhc2VkIG9uIGdlbmVyYWwgZGV2aWNlIEFQSS4K Pj4+PiAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIGlmIHdlIHdhbnQgdG8gdXNlIHN0YW5kYXJk IGRldmljZSBtb2RlbAo+Pj4+ICAgICAgICAgICAgYW5kIGF2b2lkIHRoZSBjcmVhdGlvbiBvZiBh biB1bnJlbGV2YW50IElJTyBkZXZpY2UgZm9yCj4+Pj4gICAgICAgICAgICBTRCBtb2R1bGF0b3Is IGEgc3BlY2lmaWMgdHlwZSBvZiBkZXZpY2UgbWF5IGJlCj4+Pj4gICAgICAgICAgICBwcm92aWRl ZCBieSBJSU8gZnJhbWV3b3JrLiBUaGlzIGNvdWxkIGJlIGEga2luZCBvZgo+Pj4+ICAgICAgICAg ICAgImJhY2tlbmQiIGRldmljZSB3aXRob3V0IElJTyBzeXNmcyBpbnRlcmZhY2UgYXR0YWNoZWQu Cj4+Pgo+Pj4gVGhhdCBtYXkgYmUgYW4gb3B0aW9uLiAgSXQgd2FzIGFsd2F5cyBvbiB0aGUgbGlz dCBvZiB0aGluZ3MgdG8gZG8KPj4+IHRvIGFsbG93IGZvciBJSU8gZGV2aWNlcyB0aGF0IGhhdmUg bm8gJ0lJTyBpbnRlcmZhY2UnIHRvIHVzZXJzcGFjZS4KPj4+IFRoZSBtYWluIHVzZWNhc2Ugd2Fz IFNvQyBBRENzIHdoZXJlIGFsbCB0aGUgY2hhbm5lbHMgYXJlIGdvaW5nIHRvCj4+PiBvdGhlciBp biBrZXJuZWwgY29uc3VtZXJzLCBidXQgaXQgbWlnaHQgYmUgYXBwbGljYWJsZSBoZXJlIGFzIHdl bGwuCj4+PiAgICAKPj4KPj4gQ2FuIHlvdSBzZWUgYW5vdGhlciBhbHRlcm5hdGl2ZSB0byBzb2x1 dGlvbiAyLCB0byBhbGxvdyBmdWxsIHN1cHBvcnQgb2YKPj4gREZTRE0gZmVhdHVyZXMgPwo+IAo+ IEFueXRoaW5nIEkgY2FuIGNvbWUgdXAgd2l0aCBhbHNvIGhhcyBpc3N1ZXMuCj4gQSkgQXNzdW1l IHRoYXQgaWYgd2UgaGF2ZSBtdWx0aXBsZSBjaGFubmVscyB0aGF0IHdlIHdhbnQgdG8gY2FwdHVy ZSB0b2dldGhlciB0aGF0Cj4gICAgIHRoZXkgYXJlIGdvaW5nIHRocm91Z2ggbWF0Y2hlZCBtb2R1 bGF0b3IgZGV2aWNlcy4gIFNvIG1ha2UgdGhlIG1vZHVsYXRvciBkcml2ZXIKPiAgICAgYWJsZSB0 byBoYW5kbGUgbXVsdGlwbGUgY2hhbm5lbHMuICBUaGF0IHdheSB3ZSBjb3VsZCB3cmFwIGl0IGFs bCB1cCB0b2dldGhlci4KPiAJQ29uczogV2hhdCBpZiB0aGV5IGFyZSB1c2luZyBkaWZmZXJlbnQg bW9kdWxhdG9ycyBidXQgc3RpbGwgd2FudCB0byBjYXB0dXJlCj4gCSAgICAgIHRoZSBkYXRhIGFz IG9uZSBzY2FuPwo+IAo+IEIpIEFkZCB0aGUgbG9naWMgdG8gbXV4IGRldmljZXMgYmFjayB0b2dl dGhlciAodGhpcyBpcyBuYXN0eSBidXQgYmVhciB3aXRoIG1lKQo+IAo+ICstLS0tLS0tLS0tLS0t LS0tLS0tLSsgICAgKy0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLS0tLSsKPiB8IENoYW5uZWwg aW50ZXJsZWF2ZXJ8LS0tLXwgU0QwICAgIHwtLS18IEZpbHRlciAwIGlpb2RldiB8Cj4gfCAgICAg ICAgICAgICAgICAgICAgfCAgICArLS0tLS0tLS0rICAgfCAgICAgICAgICAgICAgICAgfAo+IHwg ICAgICAgICAgICAgICAgICAgIHwgICAgKy0tLS0tLS0tKyAgIHwgICAgICAgICAgICAgICAgIHwK PiB8ICAgICAgICAgICAgICAgICAgICB8LS0tLXwgU0QxICAgIHwtLS18ICAgICAgICAgICAgICAg ICB8Cj4gfCAgICAgICAgICAgICAgICAgICAgfCAgICArLS0tLS0tLS0rICAgKy0tLS0tLS0tLS0t LS0tLS0tKwo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiAKPiBJIGRpZCBtZW50aW9uIHRoaXMg Z290IG5hc3R5IDopIEl0IG1pZ2h0IGJlIGEgdXNlZnVsIGNvbmNlcHQgaW4gZ2VuZXJhbCB0aG91 Z2gKPiBmb3Igb3RoZXIgdXNlY2FzZXMuCj4gCj4gV2UgaW50cm9kdWNlIGEgbmV3IGludGVybGVh dmVyIGRldmljZSB0aGF0IGlzIGEgY29uc3VtZXIgb2Ygb3RoZXIgZGV2aWNlcyB0aGF0Cj4gYXJl IGFzc3VtZWQgdG8gYWxsIHJ1biBvZiB0aGUgc2FtZSAidHJpZ2dlciIuICBJdCB3aWxsIGJlIGEg Y29uc3VtZXIgb2YKPiBib3RoIG1vZHVsYXRvciBJSU8gZGV2aWNlcyBhbmQgd2lsbCByZWNlaXZl IGRhdGEgZnJvbSB0aGUgYm90aC4KPiBJdCB3aWxsIGhhdmUgMiBjaGFubmVscyB3aGljaCBpbiB0 dXJuIHdpbGwgZ2FpbiB0aGVpciBzY2FsZSBldGMgYnkgcXVlcnlpbmcKPiB0aGUgbW9kdWxhdG9y cy4gVGhvc2UgbW9kdWxhdG9ycyB3aWxsIGdldCB0aGVpciBhY3R1YWwgZGF0YSBhcyBjb25zdW1l cnMKPiBmcm9tIHRoZSBmaWx0ZXIgZGV2aWNlLgo+IAo+IFNvIGZvciBidWZmZXJlZCB1c2UgdGhl IGZsb3cgd2lsbCBiZToKPiAic2NhbiIgY29tZXMgaW50byB0aGUgZmlsdGVyIGRyaXZlci4gIEl0 IGRlbXV4ZXMgYW5kIHBhc3NlcyB0aHJvdWdoIHRvIHRoZQo+IHR3byBzZXBhcmF0ZSBtb2R1bGF0 b3IgZHJpdmVycy4gIFRob3NlIHRoZW4gcGFzcyBpdCBvbiB0byB0aGUgY2hhbm5lbCBpbnRlcmxl YXZlci4KPiBHaXZlbiBJIHdvdWxkbid0IHdhbnQgdG8gY29uc3RyYWluIHRoZSBvcmRlciwgdGhh dCBkcml2ZXIgdGhlbiBoYXMgdG8gYnVmZmVyCj4gdGhlbSB1cCB1bnRpbCBpdCBoYXMgYSBmdWxs ICdzY2FuJyB3aGljaCBpdCBpbiB0dXJuIHB1c2hlZCBpbnRvIGl0J3Mga2ZpZm8KPiBidWZmZXIg Zm9yIHVzZXJzcGFjZSBjb25zdW1wdGlvbi4KPiAKPiBPdGhlciB0aGFuIHRoZSBob3JyaWJsZSBk YXRhIGZsb3csIHRoaXMgZG9lcyBtYXRjaCBhbGwgb3VyIHJlcXVpcmVtZW50cy4KPiBJdCByZXBy ZXNlbnRzIHRoZSBmaWx0ZXIgYW5kIGFueSBmaWx0ZXIgc3BlY2lmaWMgY29udHJvbHMgYXMgb25l IGRldmljZS4KPiBFYWNoIG1vZHVsYXRvciBoYXMgaXQncyBvd24gcmVwcmVzZW50YXRpb24gYXMg d2VsbCBhbmQgc28gc2NhbGluZyBldGMgaXMKPiBpbiBhbiBhcHByb3ByaWF0ZSBwbGFjZS4gIFRo ZSBpbnRlcmxlYXZlciBpcyB0aGVuIGEgc29mdHdhcmUgY29uc3RydWN0IHRvCj4gYWxsb3cgdXMg dG8gZ3JhYiBtdWx0aXBsZSBkYXRhIGZsb3dzIGZyb20gaW5kZXBlbmRlbnQgZGV2aWNlcyAodGhh dCB3ZQo+IGV4cGVjdCB0byAndHJpZ2dlcicgdG9nZXRoZXIpIGFuZCBjb21iaW5lIHRoZW0gaW50 byBhIHNpbmdsZSBmbG93Lgo+IEknbSBub3Qga2VlbiBvbiB0aGUgcmFjZSBjb25kaXRpb25zIHRo YXQgd291bGQgcHJvYmFibHkgb2NjdXIsIGJ1dCBpdAo+IGNvdWxkIGJlIG1hZGUgdG8gd29yay4K PiAKPiBJJ3ZlIHRob3VnaHQgYWJvdXQgZG9pbmcgdGhpcyBiZWZvcmUgdG8gYWxsb3cgY2FzZXMg bGlrZS4KPiAKPiAgICAgICAgICAgICAgICAgICAgICAgIFRyaWdnZXIKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgfAo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgICstKy0tLS0tLS0tKwo+IHwg Q2hhbm5lbCBpbnRlcmxlYXZlcnwtLWMtfCBBQ0NFTCAgfAo+IHwgICAgICAgICAgICAgICAgICAg IHwgIHwgKy0tLS0tLS0tKwo+IHwgICAgICAgICAgICAgICAgICAgIHwgICstKy0tLS0tLS0tKwo+ IHwgICAgICAgICAgICAgICAgICAgIHwtLS0tfCBHeXJvICAgfAo+IHwgICAgICAgICAgICAgICAg ICAgIHwgICAgKy0tLS0tLS0tKwo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiAKPiBUaGF0IGlz IGFuIElNVSBidWlsdCBvZiBzZXBhcmF0ZSBjb21wb25lbnRzIGJ1dCB3aXRoIGEgY29tbW9uIHRy aWdnZXIgc2lnbmFsCj4gb3Igc2F5IGEgaGlnaCByZXNvbHV0aW9uIHRpbWVyIGJhc2VkIHRyaWdn ZXIuICAgVG9kYXkgd2UgaGF2ZSB0byBmdXNlIHRoYXQKPiBkYXRhIGluIHVzZXJzcGFjZSB3aGlj aCBpcyByYXRoZXIgbWVzc3kuCj4gCgpJbiBzY2FuIG1vZGUgdGhlIERGU0RNIGFjdHMgYWN0dWFs bHkgYXMgYW4gaW50ZXJsZWF2ZXIsIHNvIGZyb20gdGhpcyAKcG9pbnQgb2YgdmlldyBpdCBjYW4g YmUgcHV0IGF0IHRoZSBpbnRlcmxlYXZlciBwbGFjZSBpbiB0aGUgZmxvdy4gCkluc3RlYWQgb2Yg YSBzb2Z0d2FyZSBibG9jaywgd2UgZ2V0IGEgZHJpdmVyIHdoaWNoIHJlcHJlc2VudHMgYSBoYXJk d2FyZSAKaW50ZXJsZWF2ZXIgZGV2aWNlLiBCdXQgaGVyZSB3ZSBjb21lIGJhY2sgdG8gdGhlIGlu aXRpYWwgdG9wb2xneSAoY2FzZSAxIAphYm92ZSkgd2l0aCB0aGUgc2NhbGluZyBwcm9ibGVtLgoK SSdhbSB3b25kZXJpbmcgaWYgd2UgY2Fubm90IG1hbmFnZSB0aGUgc2NhbGUgYSBiaXQgZGlmZmVy ZW50bHkuCkluIHRoZSBpbml0aWFsIHByb3Bvc2FsLCB0aGUgZ2xvYmFsIHNjYWxlIHdhcyBleHBv c2VkIGF0IHRoZSBERlNETSBJSU8gCmRldmljZS4gQXMgd2UgaGF2ZSB0d28gSUlPIGRldmljZXMg c2VyaWFsaXplZCwgdGhlIGdsb2JhbCBzY2FsZSBjb3VsZCBiZSAKY2FsY3VsYXRlZCBhdCBhcHBs aWNhdGlvbiBsZXZlbCBmcm9tIGJvdGggSUlPIGRldmljZXMgc3lzZnMgCmluZm9ybWF0aW9ucy4g VGhlIFNEIG1vZHVsYXRvciB3b3VsZCBwcm92aWRlIHRoZSBzY2FsZSAoaW4gbVYgdW5pdCkgYW5k IAp0aGUgREZTRE0gY291bGQgYmUgc2VlbiBoYXMgYSBkZXZpY2UgZ2l2aW5nIGEgZ2Fpbi4KCkN1 cnJlbnRseSB3ZSBoYXZlOgpkYXRhID0gKHJhdy1kZnNkbSA8PCBzaGlmdC1kZnNkbSArIG9mZnNl dC1kZnNkbSkgeCBzY2FsZS1kZnNkbQp3aGVyZSBzY2FsZS1kZnNkbSBpcyBjb21wdXRlZCBmcm9t IFNEIG1vZHVsYXRvciBzY2FsZSBpbmZvCgpUaGlzIG1heSBiZSBjaGFuZ2VkIHRvOgpkYXRhID0g KHJhdy1kZnNkbSA8PCBzaGlmdC1kZnNkbSArIG9mZnNldC1kZnNkbSkgeCBnYWluLWRmc2RtIHgg c2NhbGUtc2QKSW4gdGhpcyBjYXNlIHRoZSBERlNETSBkb2VzIG5vdCByZXRyaWV2ZSB0aGUgc2Nh bGUgZnJvbSBTRCBtb2R1bGF0b3IuClRoZSBERlNETSBkb2VzIG5vdCBwcm92aWRlIHNjYWxlIGlu Zm9ybWF0aW9uIGJ1dCBvbmx5IGEgZ2FpbiBpbmZvcm1hdGlvbgooYWN0dWFsIHJlc29sdXRpb24g LyBmdWxsIHJlc29sdXRpb24pLgpNYXkgJ2hhcmR3YXJlZ2FpbicgQUJJIGJlIGEgcmVsZXZhbnQg d2F5IHRvIGRlc2NyaWJlIHN1Y2ggZ2FpbiA/CldoYXQgbG9va3MgZmluZSBoZXJlLCBpcyB0aGF0 IHdlIHJlbW92ZSB0aGUgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBERlNETSAKYW5kIHRoZSBTRCBt b2R1bGF0b3IsIGFuZCBlYWNoIElJTyBkZXZpY2UgZXhwb3NlIGNvbnNpc3RlbnQgc3lzZnMgCmlu Zm9ybWF0aW9ucyByZWdhcmRpbmcgdGhlaXIgYWN0dWFsIGhhcmR3YXJlIHNjb3BlLgoKRG9lcyB0 aGlzIGFwcHJvYWNoIHNlZW1zIHZhbGlkIHRvIHlvdSA/Cgo+Pgo+PiBJZiAnYmFja2VuZCcgb3B0 aW9uIHR1cm5zIG91dCB0byBiZSB0aGUgbW9zdCBhcHByb3ByaWF0ZWQgdG8gbWF0Y2ggREZTRE0K Pj4gY29uc3RyYWludHMsIEkgY2FuIHByZXBhcmUgc29tZSBwYXRjaGVzIHRvIHN1cHBvcnQgaXQu Cj4+IFdvdWxkIHlvdSBoYXZlIHNvbWUgZ3VpZGVsaW5lcyBvciByZXF1aXJlbWVudHMgZm9yIHRo ZSBpbXBsZW1lbnRhdGlvbiBvZgo+PiBzdWNoIGZlYXR1cmUsIGluIHRoaXMgY2FzZSA/Cj4gCj4g Q2xvc2VzdCBleGFtcGxlIGlzIHRoYXQgcmNhci1neXJvYWRjIGJ1dCBpbiB0aGlzIGNhc2Ugd2Un ZCB3YW50IHRvIGRlZmluZQo+IHNvbWV0aGluZyBzdGFuZGFyZCB0byBzdXBwb3J0IHRoZSBtb2R1 bGF0b3JzIHNvIHRoYXQgaWYgd2UgaGF2ZSBvdGhlciBmaWx0ZXJzCj4gaW4gZnV0dXJlIHdlIGNh biByZXVzZSB0aGVtLgo+IAo+IFRoYXQgbWVhbnMgaW1wbGVtZW50aW5nIHRoZW0gYXMgY2hpbGQg ZGV2aWNlcyBvZiB0aGUgZmlsdGVyIC0gcHJvYmFibHkgcHV0Cj4gdGhlIG9uIHRoZSBJSU8gYnVz LCBidXQgYXMgZGlmZmVyZW50IGRldmljZSB0eXBlLiAgVGFrZSBhIGxvb2sgYXQgaG93Cj4gdHJp Z2dlcnMgYXJlIGRvbmUgaW4gaW5kdXN0cmlhbGlvLXRyaWdnZXIuYwo+IFlvdSBuZWVkIHN0cnVj dCBkZXZpY2VfdHlwZSBzZF9tb2R1bGF0b3IKPiBhbmQgYSBzdWl0YWJsZSBkZXZpY2Ugc3RydWN0 IChidXJyZWQgaW4gYW4gaWlvX3NkX21vZHVsYXRvciBzdHJ1Y3QgcHJvYmFibHkpLgo+IAo+IEFs c28gbmVlZGVkIHdvdWxkIGJlIGEgYnVuY2ggb2Ygc3RhbmRhcmQgY2FsbGJhY2tzIHRvIGFsbG93 IHlvdSB0byBxdWVyeSB0aGluZ3MKPiBsaWtlIHNjYWxpbmcuICAgS2VlcCB0aGF0IGludGVyZmFj ZSBzaW1wbGUuIFVudGlsIHdlIGhhdmUgYSBsb3Qgb2YgbW9kdWxhdG9yCj4gZHJpdmVycyBpdCB3 aWxsIGJlIGhhcmQgdG8ga25vdyBleGFjdGx5IHdoYXQgaXMgbmVlZGVkLiAgQWxzbyB3aGlsc3Qg d2UgZG9uJ3QKPiBoYXZlIG1hbnkgaXQgaXMgZWFzeSB0byBtb2RpZnkgdGhlIGludGVyZmFjZS4K PiAKPiBUaGVuIGhhdmUgeW91ciBmaWx0ZXIgZHJpdmVyIHdhbGsgaXQncyBvd24gZHQgY2hpbGRy ZW4gYW5kIGluc3RhbnRpYXRlCj4gYXBwcm9wcmlhdGUgbmV3IGVsZW1lbnRzIGFuZCByZWdpc3Rl ciB0aGVtIG9uIHRoZSBpaW9fYnVzLiAgVGhleSB3aWxsIGhhdmUKPiB0aGUgZmlsdGVyIGFzIHRo ZWlyIHBhcmVudC4KPiAKPiBUaGVyZSBhcmUgdmFyaW91cyBleGFtcGxlcyBvZiB0aGlzIHNvcnQg b2YgdGhpbmcgaW4gdHJlZS4KPiBJZiB5b3Ugd2FudCBhIGdvb2Qgb25lLCBkcml2ZXJzL2N4bCBk b2VzIGEgbG90IG9mIHRoaXMgc29ydCBtYWdpYyB0byBtYW5hZ2UKPiBhIGZhaXJseSBjb21wbGV4 IGdyYXBoIG9mIGRldmljZXMgaW5jbHVkaW5nIHNvbWUgbmljZSByZWdpc3RyYXRpb24gc3R1ZmYg dG8KPiBjYXVzZSB0aGUgY29ycmVjdCBkZXZpY2UgZHJpdmVycyB0byBsb2FkIGF1dG9tYXRpY2Fs bHkuCj4gCj4gSG1tLiAgVGhpbmtpbmcgbW9yZSBvbiB0aGlzLCB0aGVyZSBpcyBhbiBvcmRlcmlu ZyBpc3N1ZSBmb3IgZHJpdmVyIGxvYWQuCj4gSW5zdGVhZCBvZiBtYWtpbmcgdGhlIG1vZHVsYXRv ciBub2RlcyBjaGlsZHJlbiBvZiB0aGUgbW9kdWxhdG9yLCB5b3UgbWF5IG5lZWQKPiB0byBnaXZl IHRoZW0gdGhlaXIgb3duIGV4aXN0ZW5jZSBhbmQgdXNlIGEgcGhhbmRsZSB0byByZWZlcmVuY2Ug dGhlbS4KPiBUaGF0IHdpbGwgbGV0IHlvdSBkZWZlciBwcm9iZSBpbiB0aGUgZmlsdGVyIGRyaXZl ciB1bnRpbCB0aG9zZQo+IG1vZHVsYXRvciBkcml2ZXJzIGFyZSByZWFkeS4KPiAKPiBUaGlzIGlz bid0IGdvaW5nIHRvIGJlIHBhcnRpY3VsYXJseSBzaW1wbGUsIHNvIHlvdSBtYXkgd2FudCB0byBo YXZlIGEgbG9vawo+IGF0IGhvdyB2YXJpb3VzIG90aGVyIHN1YnN5c3RlbXMgZG8gc2ltaWxhciB0 aGluZ3MgYW5kIG1vY2sgdXAgdGhlIGRlcGVuZGVuY2llcwo+IHRvIG1ha2Ugc3VyZSB5b3UgaGF2 ZSBzb21ldGhpbmcgdGhhdCBkb2Vzbid0IGVuZCB1cCB3aXRoIGEgbG9vcCBvZiBkZXBlbmRlbmNp ZXMuCj4gSW4gc29tZSB3YXlzIHRoZSBtb2R1bGF0b3JzIGFyZSBvbiBhIGJ1cyBiZWxvdyB0aGUg ZmlsdGVyLCBidXQgdGhlIGZpbHRlciBkcml2ZXIKPiBuZWVkcyB0aGVtIHRvIGJlIGluIHBsYWNl IHRvIGRvIHRoZSByZXN0Lgo+IFlvdSBtYXkgZW5kIHVwIHdpdGggc29tZSBzb3J0IG9mIGRlbGF5 ZWQgbG9hZC4KPiAxLiBJbml0aWFsIGZpbHRlciBkcml2ZXIgbG9hZCArIHBhcnNpbmcgb2YgdGhl IG1vZHVsYXRvciBkdCBjaGlsZHJlbiAoaWYgZG9uZSB0aGF0IHdheSkuCj4gMi4gRmlsdGVyIGRy aXZlciBnb2VzIHRvIHNsZWVwIHVudGlsLi4uCj4gMy4gTW9kdWxhdG9yIGRyaXZlcnMgY2FsbCBz b21ldGhpbmcgb24gdGhlIGZpbHRlciBkcml2ZXIgdG8gc2F5IHRoZXkgYXJlIHJlYWR5Lgo+IDQu IEZpbHRlciBkcml2ZXIgZmluaXNoZXMgbG9hZGluZyBhbmQgY3JlYXRlIHRoZSBJSU8gZGV2aWNl IGV0Yy4KPiBZb3UnbGwgbmVlZCBzb21lIHJlZmVyZW5jZSBjb3VudGluZyBldGMgaW4gdGhlcmUg dG8gbWFrZSByZW1vdmFsIHNhZmUgZXRjIGJ1dCBpdAo+IHNob3VsZG4ndCBiZSAndG9vIGJhZCcu Cj4gCj4gR29vZCBsdWNrIQo+IAo+IEpvbmF0aGFuCj4gCgpUaGUgZGV2aWNlIGhpZXJhY2h5IHlv dSBoYXZlIGRldGFpbGxlZCBhYm92ZSwgaXMgcHJvYmFibHkgdGhlIG1vc3QgCmZsZXhpYmxlIG9u ZSB0byBhZGRyZXNzIGEgd2lkZSByYW5nZSBvZiB1c2UgY2FzZXMsIGJ1dCBpdCBpcyBxdWl0ZSBh IApodWdlIHdvcmsgLi4uIGVzcGVjaWFsbHkgaW4gY29tcGFyaXNvbiB0byBjdXJyZW50IG5lZWQu ClRoYW5rcyBhbnl3YXkgZm9yIGFsbCB0aGUgaGludHMgeW91IGdhdmUgaGVyZS4KClJlZ2FyZHMK T2xpdmllcgo+IAo+IAo+Pgo+PiBSZWdhcmRzCj4+IE9saXZpZXIKPj4KPj4+PiAgIAo+Pj4+ICAg ICAgICA9PiBUaGlzIHNvbHV0aW9uIGNvdWxkIGJlIGFwcGxpY2FibGUgYnV0IHNvbWUgZGV0YWls cyBpbiB0aGUKPj4+PiAgICAgICAgaW1wbGVtZW50YXRpb24gd2lsbCBoYXZlIHRvIGJlIGNsYXJp ZmllZCBmdXJ0aGVyLgo+Pj4+ICAgICAgICBNYXkgd2UgY29uc2lkZXIgYWRkaW5nIGEgImJhY2tl bmQiIGRldmljZSB3aXRob3V0IElJTyBpbnRlcmZhY2UKPj4+PiAgICAgICAgaW4gdGhlIElJTyBm cmFtZXdvcmsgPwo+Pj4+ICAgICAgICBNYXkgdGhlIFNEIG1vZHVsYXRvciBiZSBkcm9wcGVkID8K Pj4+Pgo+Pj4+ICstLS0tLSsgICAgICstLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tLS0rICBz eXNmcwo+Pj4+IHwgc2QwIHwgLS0+IHwgY2hhbjAgfCAtLT4gfCBmaWx0ZXIwIGlpb2RldiB8IC0t LS0tLS0+Cj4+Pj4gKy0tLS0tKyAgICAgKy0tLS0tLS0rICAgICArLS0tLS0tLS0tLS0tLS0tLSsK Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgo+Pj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK Pj4+PiArLS0tLS0rICAgICArLS0tLS0tLSsgICAgICAgfAo+Pj4+IHwgc2QxIHwgLS0+IHwgY2hh bjEgfCAtLS0tLS0rCj4+Pj4gKy0tLS0tKyAgICAgKy0tLS0tLS0rCj4+Pj4KPj4+Pgo+Pj4+IEhl cmUgdGhlcmUgaXMgYSBwb2ludCB0aGF0IG5lZWRzIHRvIGJlIGNsYXJpZmllZCBpbiByZWxhdGlv biB0byB0aGUKPj4+PiBwcmV2aW91cyBkaXNjdXNzaW9ucyBJIHRoaW5rLgo+Pj4+IElmIEkgcmVm ZXIgdG8gdGhlIGxhc3QgY29tbWVudCBvZiB0aGUgY3VycmVudCB0aHJlYWQsIEkgdW5kZXJzdGFu ZCB0aGF0Cj4+Pj4geW91IHdlcmUgZXhwZWN0aW5nIHRoZSBJSU8gc3lzZnMgaW50ZXJmYWNlIHRv IGJlIGF0dGFjaGVkIHRvIHRoZSBTRAo+Pj4+IG1vZHVsYXRvci4gKHNvbHV0aW9uIDIpCj4+Pgo+ Pj4gWWVzLgo+Pj4gICAgCj4+Pj4gRm9yIHRoZSBneXJvYWRjLCB0aGUgY2hhbm5lbHMgYXJlIGlu ZGVlZCBwb3B1bGF0ZWQgYnkgdGhlIHN1YiBkZXZpY2VzLgo+Pj4+IEhvd2V2ZXIgdGhlIElJTyBk ZXZpY2UgY29ycmVzcG9uZHMgdG8gdGhlIEFEQyBjb25zdW1lciBhbmQgbm90IHRoZSBBRENzCj4+ Pj4gdGhlbXNlbHZlcy4gKHNvbHV0aW9uIDMpCj4+Pgo+Pj4gVGhhdCBvbmUgaXMgYSByYXRoZXIg b2RkIGNhc2UgYmVjYXVzZSBubyBnZW5lcmljIGhhbmRsaW5nIGlzIHBvc3NpYmxlCj4+PiBvZiB0 aGUgQURDcy4gRm9yIGV4YW1wbGUgaXQgZG9lc24ndCB1c2UgdGhlIGFkNzQ3NiBkcml2ZXIgYmVj YXVzZSB3ZSBjYW4ndAo+Pj4gdGFsayB0byB0aGUgZGV2aWNlIGV2ZW4gdGhvdWdoIGl0J3MgdGhl IHNhbWUgQURDIGFzIHRoZSBhZDc0NzYgZHJpdmVyIHN1cHBvcnRzLgo+Pj4gICAgCj4+Pj4KPj4+ PiBXaGF0IGlzIHRoZSB0aGUgcHJlZmVycmVkIGFwcHJvYWNoIGZvciB5b3UgPwo+Pj4KPj4+IEkg c3RpbGwgZmF2b3VyIHNvbHV0aW9uIDIsIGJ1dCBpZiB5b3UgbmVlZCB0byBoYXZlIHRoZSBjaGFu bmVscyBjbGVhbmx5Cj4+PiBwcmVzZW50ZWQgaW4gYSBzY2FuIGRlc3BpdGUgdGhlbSBjb21pbmcg ZnJvbSBkaWZmZXJlbnQgbW9kdWxhdG9ycywgdGhlbiB0aGF0Cj4+PiBzb2x1dGlvbiBtYXkgbm90 IGJlIHN1ZmZpY2llbnQgYW5kIHdlIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IGVsc2UgdG8gZG8K Pj4+IHRoaW5ncy4KPj4+Cj4+PiBKb25hdGhhbgo+Pj4gICAgCj4+Pj4KPj4+PiBUaGFua3MgZm9y IHlvdXIgZmVlZGJhY2sKPj4+PiBCZXN0IHJlZ2FyZHMKPj4+PiBPbGl2aWVyCj4+Pj4KPj4+PiAg IAo+Pj4+Pj4KPj4+Pj4+IFJlZ2FyZHMKPj4+Pj4+IE9saXZpZXIKPj4+Pj4+Pj4gSWYgbm90LCBJ IHByb2JhYmx5IG1pc3NlZHNvbWV0aGluZy4gQ291bGQgeW91IHBsZWFzZSBjbGFyaWZ5IHRoaXMg cG9pbnQgPwo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBSZWdhcmRzCj4+Pj4+Pj4+IE9saXZpZXIKPj4+Pj4+ Pj4+IFRoaXMgd2Fzbid0IHJlYWxseSBhbiBpc3N1ZSB3aGVuIHRoZSBvbmx5IHZhbHVlcyBhdmFp bGFibGUgd2VyZQo+Pj4+Pj4+Pj4gcmF3LCBidXQgaWYgd2UgYXJlIGFkZGluZyBzY2FsZSBhbmQg b2Zmc2V0LCB0aGV5IGFyZSB0aGluZ3MgdGhhdAo+Pj4+Pj4+Pj4gYmVsb25nIHRvIHRoZSBhZDEy MDEgZm9yIGV4YW1wbGUsIG5vdCB0aGUgdXBzdHJlYW0gc3RtMzItZGZzZG0gdW5pdC4KPj4+Pj4+ Pj4+Cj4+Pj4+Pj4+PiBUaGlua2luZyBvZiBpdCBhbm90aGVyIHdheSwgd2UgZG9uJ3QgcmVwb3J0 IGFuIFNQSSBBREMgb3V0cHV0IGluCj4+Pj4+Pj4+PiB0aGUgZHJpdmVyIGZvciB0aGUgU1BJIG1h c3Rlci4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBDb3VsZCB3ZSBmbGlwIGl0IGFyb3VuZCB3aXRob3V0 IGJyZWFraW5nIGFueXRoaW5nPwo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IEpvbmF0aGFuCj4+Pj4+Pj4+ PiAgICAgICAgICAgIAo+Pj4+Pj4+Pj4+IC0tLQo+Pj4+Pj4+Pj4+ICAgICAgIGRyaXZlcnMvaWlv L2FkYy9zdG0zMi1kZnNkbS1hZGMuYyB8IDEwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KPj4+Pj4+Pj4+PiAgICAgICAxIGZpbGUgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9p aW8vYWRjL3N0bTMyLWRmc2RtLWFkYy5jCj4+Pj4+Pj4+Pj4gYi9kcml2ZXJzL2lpby9hZGMvc3Rt MzItZGZzZG0tYWRjLmMKPj4+Pj4+Pj4+PiBpbmRleCAwN2I5ZGZkZjhlNzYuLmI4NWZkM2U5MDQ5 NiAxMDA2NDQKPj4+Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2lpby9hZGMvc3RtMzItZGZzZG0tYWRj LmMKPj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2lpby9hZGMvc3RtMzItZGZzZG0tYWRjLmMKPj4+ Pj4+Pj4+PiBAQCAtMTAsNiArMTAsNyBAQAo+Pj4+Pj4+Pj4+ICAgICAgICNpbmNsdWRlIDxsaW51 eC9kbWEtbWFwcGluZy5oPgo+Pj4+Pj4+Pj4+ICAgICAgICNpbmNsdWRlIDxsaW51eC9paW8vYWRj L3N0bTMyLWRmc2RtLWFkYy5oPgo+Pj4+Pj4+Pj4+ICAgICAgICNpbmNsdWRlIDxsaW51eC9paW8v YnVmZmVyLmg+Cj4+Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9paW8vY29uc3VtZXIuaD4KPj4+ Pj4+Pj4+PiAgICAgICAjaW5jbHVkZSA8bGludXgvaWlvL2h3LWNvbnN1bWVyLmg+Cj4+Pj4+Pj4+ Pj4gICAgICAgI2luY2x1ZGUgPGxpbnV4L2lpby9zeXNmcy5oPgo+Pj4+Pj4+Pj4+ICAgICAgICNp bmNsdWRlIDxsaW51eC9paW8vdGltZXIvc3RtMzItbHB0aW0tdHJpZ2dlci5oPgo+Pj4+Pj4+Pj4+ IEBAIC02Nyw2ICs2OCwxMyBAQCBzdHJ1Y3Qgc3RtMzJfZGZzZG1fZGV2X2RhdGEgewo+Pj4+Pj4+ Pj4+ICAgICAgIAljb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyAqcmVnbWFwX2NmZzsKPj4+Pj4+ Pj4+PiAgICAgICB9Owo+Pj4+Pj4+Pj4+ICAgICAgIAo+Pj4+Pj4+Pj4+ICtzdHJ1Y3Qgc3RtMzJf ZGZzZG1fc2RfY2hhbl9pbmZvIHsKPj4+Pj4+Pj4+PiArCWludCBzY2FsZV92YWw7Cj4+Pj4+Pj4+ Pj4gKwlpbnQgc2NhbGVfdmFsMjsKPj4+Pj4+Pj4+PiArCWludCBvZmZzZXQ7Cj4+Pj4+Pj4+Pj4g Kwl1bnNpZ25lZCBpbnQgZGlmZmVyZW50aWFsOwo+Pj4+Pj4+Pj4+ICt9Owo+Pj4+Pj4+Pj4+ICsK Pj4+Pj4+Pj4+PiAgICAgICBzdHJ1Y3Qgc3RtMzJfZGZzZG1fYWRjIHsKPj4+Pj4+Pj4+PiAgICAg ICAJc3RydWN0IHN0bTMyX2Rmc2RtICpkZnNkbTsKPj4+Pj4+Pj4+PiAgICAgICAJY29uc3Qgc3Ry dWN0IHN0bTMyX2Rmc2RtX2Rldl9kYXRhICpkZXZfZGF0YTsgQEAgLTc5LDYgKzg3LDcKPj4+Pj4+ Pj4+PiBAQCBzdHJ1Y3Qgc3RtMzJfZGZzZG1fYWRjIHsKPj4+Pj4+Pj4+PiAgICAgICAJc3RydWN0 IGlpb19od19jb25zdW1lciAqaHdjOwo+Pj4+Pj4+Pj4+ICAgICAgIAlzdHJ1Y3QgY29tcGxldGlv biBjb21wbGV0aW9uOwo+Pj4+Pj4+Pj4+ICAgICAgIAl1MzIgKmJ1ZmZlcjsKPj4+Pj4+Pj4+PiAr CXN0cnVjdCBzdG0zMl9kZnNkbV9zZF9jaGFuX2luZm8gKnNkX2NoYW47Cj4+Pj4+Pj4+Pj4gICAg ICAgCj4+Pj4+Pj4+Pj4gICAgICAgCS8qIEF1ZGlvIHNwZWNpZmljICovCj4+Pj4+Pj4+Pj4gICAg ICAgCXVuc2lnbmVkIGludCBzcGlfZnJlcTsgIC8qIFNQSSBidXMgY2xvY2sgZnJlcXVlbmN5ICov IEBACj4+Pj4+Pj4+Pj4gLTEyNzEsNyArMTI4MCwxMCBAQCBzdGF0aWMgaW50IHN0bTMyX2Rmc2Rt X3JlYWRfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCj4+Pj4+Pj4+Pj4gICAgICAgCQkJ CWludCAqdmFsMiwgbG9uZyBtYXNrKQo+Pj4+Pj4+Pj4+ICAgICAgIHsKPj4+Pj4+Pj4+PiAgICAg ICAJc3RydWN0IHN0bTMyX2Rmc2RtX2FkYyAqYWRjID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPj4+ Pj4+Pj4+PiAtCWludCByZXQ7Cj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3Qgc3RtMzJfZGZzZG1fZmlsdGVy ICpmbCA9ICZhZGMtPmRmc2RtLT5mbF9saXN0W2FkYy0+ZmxfaWRdOwo+Pj4+Pj4+Pj4+ICsJc3Ry dWN0IHN0bTMyX2Rmc2RtX2ZpbHRlcl9vc3IgKmZsbyA9ICZmbC0+ZmxvW2ZsLT5mYXN0XTsKPj4+ Pj4+Pj4+PiArCXUzMiBtYXggPSBmbG8tPm1heCA8PCAoZmxvLT5sc2hpZnQgLSBjaGFuLT5zY2Fu X3R5cGUuc2hpZnQpOwo+Pj4+Pj4+Pj4+ICsJaW50IHJldCwgaWR4ID0gY2hhbi0+c2Nhbl9pbmRl eDsKPj4+Pj4+Pj4+PiAgICAgICAKPj4+Pj4+Pj4+PiAgICAgICAJc3dpdGNoIChtYXNrKSB7Cj4+ Pj4+Pj4+Pj4gICAgICAgCWNhc2UgSUlPX0NIQU5fSU5GT19SQVc6Cj4+Pj4+Pj4+Pj4gQEAgLTEz MDcsNiArMTMxOSw0MSBAQCBzdGF0aWMgaW50IHN0bTMyX2Rmc2RtX3JlYWRfcmF3KHN0cnVjdCBp aW9fZGV2ICppbmRpb19kZXYsCj4+Pj4+Pj4+Pj4gICAgICAgCQkqdmFsID0gYWRjLT5zYW1wbGVf ZnJlcTsKPj4+Pj4+Pj4+PiAgICAgICAKPj4+Pj4+Pj4+PiAgICAgICAJCXJldHVybiBJSU9fVkFM X0lOVDsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKwljYXNlIElJT19DSEFOX0lORk9fU0NBTEU6 Cj4+Pj4+Pj4+Pj4gKwkJLyoKPj4+Pj4+Pj4+PiArCQkgKiBTY2FsZSBpcyBleHByZXNzZWQgaW4g bVYuCj4+Pj4+Pj4+Pj4gKwkJICogV2hlbiBmYXN0IG1vZGUgaXMgZGlzYWJsZWQsIGFjdHVhbCBy ZXNvbHV0aW9uIG1heSBiZSBsb3dlcgo+Pj4+Pj4+Pj4+ICsJCSAqIHRoYW4gMl5uLCB3aGVyZSBu PXJlYWxiaXRzLTEuCj4+Pj4+Pj4+Pj4gKwkJICogVGhpcyBsZWFkcyB0byB1bmRlcmVzdGltYXRp bmcgaW5wdXQgdm9sdGFnZS4gVG8KPj4+Pj4+Pj4+PiArCQkgKiBjb21wZW5zYXRlIHRoaXMgZGV2 aWF0aW9uLCB0aGUgdm9sdGFnZSByZWZlcmVuY2UgY2FuIGJlCj4+Pj4+Pj4+Pj4gKwkJICogY29y cmVjdGVkIHdpdGggYSBmYWN0b3IgPSByZWFsYml0cyByZXNvbHV0aW9uIC8gYWN0dWFsIG1heAo+ Pj4+Pj4+Pj4+ICsJCSAqLwo+Pj4+Pj4+Pj4+ICsJCSp2YWwgPSBkaXZfdTY0KCh1NjQpYWRjLT5z ZF9jaGFuW2lkeF0uc2NhbGVfdmFsICoKPj4+Pj4+Pj4+PiArCQkJICAgICAgICh1NjQpQklUKERG U0RNX0RBVEFfUkVTIC0gMSksIG1heCk7Cj4+Pj4+Pj4+Pj4gKwkJKnZhbDIgPSBjaGFuLT5zY2Fu X3R5cGUucmVhbGJpdHM7Cj4+Pj4+Pj4+Pj4gKwkJaWYgKGFkYy0+c2RfY2hhbltpZHhdLmRpZmZl cmVudGlhbCkKPj4+Pj4+Pj4+PiArCQkJKnZhbCAqPSAyOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ PiArCQlyZXR1cm4gSUlPX1ZBTF9GUkFDVElPTkFMX0xPRzI7Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+ Pj4+ICsJY2FzZSBJSU9fQ0hBTl9JTkZPX09GRlNFVDoKPj4+Pj4+Pj4+PiArCQkvKgo+Pj4+Pj4+ Pj4+ICsJCSAqIERGU0RNIG91dHB1dCBkYXRhIGFyZSBpbiB0aGUgcmFuZ2UgWy0yXm4sMl5uLTFd LAo+Pj4+Pj4+Pj4+ICsJCSAqIHdpdGggbj1yZWFsYml0cy0xLgo+Pj4+Pj4+Pj4+ICsJCSAqIC0g RGlmZmVyZW50aWFsIG1vZHVsYXRvcjoKPj4+Pj4+Pj4+PiArCQkgKiBPZmZzZXQgY29ycmVzcG9u ZCB0byBTRCBtb2R1bGF0b3Igb2Zmc2V0Lgo+Pj4+Pj4+Pj4+ICsJCSAqIC0gU2luZ2xlIGVuZGVk IG1vZHVsYXRvcjoKPj4+Pj4+Pj4+PiArCQkgKiBJbnB1dCBpcyBpbiBbMFYsVnJlZl0gcmFuZ2Us IHdoZXJlIDBWIGNvcnJlc3BvbmRzIHRvIC0yXm4uCj4+Pj4+Pj4+Pj4gKwkJICogQWRkIDJebiB0 byBvZmZzZXQuIChpLmUuIG1pZGRsZSBvZiBpbnB1dCByYW5nZSkKPj4+Pj4+Pj4+PiArCQkgKiBv ZmZzZXQgPSBvZmZzZXQoc2QpICogdnJlZiAvIHJlcyhzZCkgKiBtYXggLyB2cmVmLgo+Pj4+Pj4+ Pj4+ICsJCSAqLwo+Pj4+Pj4+Pj4+ICsJCSp2YWwgPSBkaXZfdTY0KCh1NjQpbWF4ICogYWRjLT5z ZF9jaGFuW2lkeF0ub2Zmc2V0LAo+Pj4+Pj4+Pj4+ICsJCQkgICAgICAgQklUKGFkYy0+c2RfY2hh bltpZHhdLnNjYWxlX3ZhbDIgLSAxKSk7Cj4+Pj4+Pj4+Pj4gKwkJaWYgKCFhZGMtPnNkX2NoYW5b aWR4XS5kaWZmZXJlbnRpYWwpCj4+Pj4+Pj4+Pj4gKwkJCSp2YWwgKz0gbWF4Owo+Pj4+Pj4+Pj4+ ICsKPj4+Pj4+Pj4+PiArCQlyZXR1cm4gSUlPX1ZBTF9JTlQ7Cj4+Pj4+Pj4+Pj4gICAgICAgCX0K Pj4+Pj4+Pj4+PiAgICAgICAKPj4+Pj4+Pj4+PiAgICAgICAJcmV0dXJuIC1FSU5WQUw7Cj4+Pj4+ Pj4+Pj4gQEAgLTE0MzAsNyArMTQ3Nyw5IEBAIHN0YXRpYyBpbnQgc3RtMzJfZGZzZG1fYWRjX2No YW5faW5pdF9vbmUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKPj4+Pj4+Pj4+PiAgICAgICAJ ICogSUlPX0NIQU5fSU5GT19SQVc6IHVzZWQgdG8gY29tcHV0ZSByZWd1bGFyIGNvbnZlcnNpb24K Pj4+Pj4+Pj4+PiAgICAgICAJICogSUlPX0NIQU5fSU5GT19PVkVSU0FNUExJTkdfUkFUSU86IHVz ZWQgdG8gc2V0IG92ZXJzYW1wbGluZwo+Pj4+Pj4+Pj4+ICAgICAgIAkgKi8KPj4+Pj4+Pj4+PiAt CWNoLT5pbmZvX21hc2tfc2VwYXJhdGUgPSBCSVQoSUlPX0NIQU5fSU5GT19SQVcpOwo+Pj4+Pj4+ Pj4+ICsJY2gtPmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJSU9fQ0hBTl9JTkZPX1JBVykgfAo+ Pj4+Pj4+Pj4+ICsJCQkJIEJJVChJSU9fQ0hBTl9JTkZPX1NDQUxFKSB8Cj4+Pj4+Pj4+Pj4gKwkJ CQkgQklUKElJT19DSEFOX0lORk9fT0ZGU0VUKTsKPj4+Pj4+Pj4+PiAgICAgICAJY2gtPmluZm9f bWFza19zaGFyZWRfYnlfYWxsID0gQklUKElJT19DSEFOX0lORk9fT1ZFUlNBTVBMSU5HX1JBVElP KSB8Cj4+Pj4+Pj4+Pj4gICAgICAgCQkJCQlCSVQoSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVEpOwo+ Pj4+Pj4+Pj4+ICAgICAgIAo+Pj4+Pj4+Pj4+IEBAIC0xNDgxLDggKzE1MzAsMTAgQEAgc3RhdGlj IGludCBzdG0zMl9kZnNkbV9hZGNfaW5pdChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQo+Pj4+ Pj4+Pj4+ICAgICAgIHsKPj4+Pj4+Pj4+PiAgICAgICAJc3RydWN0IGlpb19jaGFuX3NwZWMgKmNo Owo+Pj4+Pj4+Pj4+ICAgICAgIAlzdHJ1Y3Qgc3RtMzJfZGZzZG1fYWRjICphZGMgPSBpaW9fcHJp dihpbmRpb19kZXYpOwo+Pj4+Pj4+Pj4+ICsJc3RydWN0IGlpb19jaGFubmVsICpjaGFubmVscywg KmNoYW47Cj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3Qgc3RtMzJfZGZzZG1fc2RfY2hhbl9pbmZvICpzZF9j aGFuOwo+Pj4+Pj4+Pj4+ICAgICAgIAlpbnQgbnVtX2NoOwo+Pj4+Pj4+Pj4+IC0JaW50IHJldCwg Y2hhbl9pZHg7Cj4+Pj4+Pj4+Pj4gKwlpbnQgcmV0LCBjaGFuX2lkeCwgdmFsMjsKPj4+Pj4+Pj4+ PiAgICAgICAKPj4+Pj4+Pj4+PiAgICAgICAJYWRjLT5vdmVyc2FtcCA9IERGU0RNX0RFRkFVTFRf T1ZFUlNBTVBMSU5HOwo+Pj4+Pj4+Pj4+ICAgICAgIAlyZXQgPSBzdG0zMl9kZnNkbV9jb21wdXRl X2FsbF9vc3JzKGluZGlvX2RldiwgYWRjLT5vdmVyc2FtcCk7Cj4+Pj4+Pj4+Pj4gQEAgLTE1MDYs NiArMTU1NywyMiBAQCBzdGF0aWMgaW50IHN0bTMyX2Rmc2RtX2FkY19pbml0KHN0cnVjdCBpaW9f ZGV2ICppbmRpb19kZXYpCj4+Pj4+Pj4+Pj4gICAgICAgCWlmICghY2gpCj4+Pj4+Pj4+Pj4gICAg ICAgCQlyZXR1cm4gLUVOT01FTTsKPj4+Pj4+Pj4+PiAgICAgICAKPj4+Pj4+Pj4+PiArCS8qIEdl dCBTRCBtb2R1bGF0b3IgY2hhbm5lbHMgKi8KPj4+Pj4+Pj4+PiArCWNoYW5uZWxzID0gaWlvX2No YW5uZWxfZ2V0X2FsbCgmaW5kaW9fZGV2LT5kZXYpOwo+Pj4+Pj4+Pj4+ICsJaWYgKElTX0VSUihj aGFubmVscykpIHsKPj4+Pj4+Pj4+PiArCQlkZXZfZXJyKCZpbmRpb19kZXYtPmRldiwgIkZhaWxl ZCB0byBnZXQgY2hhbm5lbCAlbGRcbiIsCj4+Pj4+Pj4+Pj4gKwkJCVBUUl9FUlIoY2hhbm5lbHMp KTsKPj4+Pj4+Pj4+PiArCQlyZXR1cm4gUFRSX0VSUihjaGFubmVscyk7Cj4+Pj4+Pj4+Pj4gKwl9 Cj4+Pj4+Pj4+Pj4gKwljaGFuID0gJmNoYW5uZWxzWzBdOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ PiArCWFkYy0+c2RfY2hhbiA9IGRldm1fa3phbGxvYygmaW5kaW9fZGV2LT5kZXYsCj4+Pj4+Pj4+ Pj4gKwkJCQkgICAgc2l6ZW9mKCphZGMtPnNkX2NoYW4pICogbnVtX2NoLCBHRlBfS0VSTkVMKTsK Pj4+Pj4+Pj4+PiArCWlmICghYWRjLT5zZF9jaGFuKQo+Pj4+Pj4+Pj4+ICsJCXJldHVybiAtRU5P TUVNOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArCXNkX2NoYW4gPSBhZGMtPnNkX2NoYW47Cj4+ Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICAgICAgIAlmb3IgKGNoYW5faWR4ID0gMDsgY2hhbl9pZHgg PCBudW1fY2g7IGNoYW5faWR4KyspIHsKPj4+Pj4+Pj4+PiAgICAgICAJCWNoW2NoYW5faWR4XS5z Y2FuX2luZGV4ID0gY2hhbl9pZHg7Cj4+Pj4+Pj4+Pj4gICAgICAgCQlyZXQgPSBzdG0zMl9kZnNk bV9hZGNfY2hhbl9pbml0X29uZShpbmRpb19kZXYsCj4+Pj4+Pj4+Pj4gJmNoW2NoYW5faWR4XSk7 IEBAIC0xNTEzLDYgKzE1ODAsMzggQEAgc3RhdGljIGludCBzdG0zMl9kZnNkbV9hZGNfaW5pdChz dHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQo+Pj4+Pj4+Pj4+ICAgICAgIAkJCWRldl9lcnIoJmlu ZGlvX2Rldi0+ZGV2LCAiQ2hhbm5lbHMgaW5pdCBmYWlsZWRcbiIpOwo+Pj4+Pj4+Pj4+ICAgICAg IAkJCXJldHVybiByZXQ7Cj4+Pj4+Pj4+Pj4gICAgICAgCQl9Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+ Pj4+ICsJCWlmICghY2hhbi0+aW5kaW9fZGV2KQo+Pj4+Pj4+Pj4+ICsJCQlyZXR1cm4gLUVJTlZB TDsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKwkJcmV0ID0gaWlvX3JlYWRfY2hhbm5lbF9zY2Fs ZShjaGFuLCAmc2RfY2hhbi0+c2NhbGVfdmFsLAo+Pj4+Pj4+Pj4+ICsJCQkJCSAgICAgJnNkX2No YW4tPnNjYWxlX3ZhbDIpOwo+Pj4+Pj4+Pj4+ICsJCWlmIChyZXQgPCAwKSB7Cj4+Pj4+Pj4+Pj4g KwkJCWRldl9lcnIoJmluZGlvX2Rldi0+ZGV2LAo+Pj4+Pj4+Pj4+ICsJCQkJIkZhaWxlZCB0byBn ZXQgY2hhbm5lbCAlZCBzY2FsZVxuIiwgY2hhbl9pZHgpOwo+Pj4+Pj4+Pj4+ICsJCQlyZXR1cm4g cmV0Owo+Pj4+Pj4+Pj4+ICsJCX0KPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKwkJaWYgKGlpb19j aGFubmVsX2hhc19pbmZvKGNoYW4tPmNoYW5uZWwsIElJT19DSEFOX0lORk9fT0ZGU0VUKSkgewo+ Pj4+Pj4+Pj4+ICsJCQlyZXQgPSBpaW9fcmVhZF9jaGFubmVsX29mZnNldChjaGFuLCAmc2RfY2hh bi0+b2Zmc2V0LAo+Pj4+Pj4+Pj4+ICsJCQkJCQkgICAgICAmdmFsMik7Cj4+Pj4+Pj4+Pj4gKwkJ CWlmIChyZXQgPCAwKSB7Cj4+Pj4+Pj4+Pj4gKwkJCQlkZXZfZXJyKCZpbmRpb19kZXYtPmRldiwK Pj4+Pj4+Pj4+PiArCQkJCQkiRmFpbGVkIHRvIGdldCBjaGFubmVsICVkIG9mZnNldFxuIiwKPj4+ Pj4+Pj4+PiArCQkJCQljaGFuX2lkeCk7Cj4+Pj4+Pj4+Pj4gKwkJCQlyZXR1cm4gcmV0Owo+Pj4+ Pj4+Pj4+ICsJCQl9Cj4+Pj4+Pj4+Pj4gKwkJfQo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArCQlz ZF9jaGFuLT5kaWZmZXJlbnRpYWwgPSBjaGFuLT5jaGFubmVsLT5kaWZmZXJlbnRpYWw7Cj4+Pj4+ Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICsJCWRldl9kYmcoJmluZGlvX2Rldi0+ZGV2LCAiQ2hhbm5lbCAl ZCAlcyBzY2FsZSByZWY9JWQgb2Zmc2V0PSVkIiwKPj4+Pj4+Pj4+PiArCQkJY2hhbl9pZHgsIGNo YW4tPmNoYW5uZWwtPmRpZmZlcmVudGlhbCA/Cj4+Pj4+Pj4+Pj4gKwkJCSJkaWZmZXJlbnRpYWwi IDogInNpbmdsZS1lbmRlZCIsCj4+Pj4+Pj4+Pj4gKwkJCXNkX2NoYW4tPnNjYWxlX3ZhbCwgc2Rf Y2hhbi0+b2Zmc2V0KTsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gKwkJY2hhbisrOwo+Pj4+Pj4+ Pj4+ICsJCXNkX2NoYW4rKzsKPj4+Pj4+Pj4+PiAgICAgICAJfQo+Pj4+Pj4+Pj4+ICAgICAgIAo+ Pj4+Pj4+Pj4+ICAgICAgIAlpbmRpb19kZXYtPm51bV9jaGFubmVscyA9IG51bV9jaDsKPj4+ICAg IAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=