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=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 D9195C3524F for ; Wed, 5 Feb 2020 08:12:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 94838217BA for ; Wed, 5 Feb 2020 08:12:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="7WmDCIgl" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727070AbgBEIMV (ORCPT ); Wed, 5 Feb 2020 03:12:21 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:37894 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726236AbgBEIMV (ORCPT ); Wed, 5 Feb 2020 03:12:21 -0500 Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0158BqFZ007356; Wed, 5 Feb 2020 03:11:52 -0500 Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2104.outbound.protection.outlook.com [104.47.55.104]) by mx0a-00128a01.pphosted.com with ESMTP id 2xyhnkh1nk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 05 Feb 2020 03:11:52 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N6q0MthBCB4QLvk3HXivKYLxOlWucIXG4ZmEABTXJapUqACayMOeEgZuqGO15or8Fl+++birCGbXPbKvAA8LwmsGCAvqNDY14c1yNmAqpP2ivRZFYAZiWZMA+iY/Thzqi+lbDXNfHvkeiB4wm+l3fiaQLG2gu3rI8BZCS8yd5EkyPcMZEoEmIefXR+uzr52zsdvRlxiAboy9Eg0gJ0u8dvIhS2dBOFXduht4zyRmDYH6hRggVmkkpIVG8aRvYv4poi+tTIMJIR8V7GT7INWVCPobzO/+xTYsawI5FQ11HQGywZZP7VXfdv2+gwzLVKSQBteD6eMO23B/vdhittvD2Q== 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=RRjqKEVMu7QUUgr460LEXd2rpnH6JlFG+mnvQZYmOrY=; b=ESZyXZ/21FeaQ2wqcbNMKtICMlhSXzL7zBbC88ycwlnhk9CVSQwp2HfdPeC+DopDQ09dvblXdg3LhI2Mb2oGFC5PrWL9cUVqOqf5J+Citix1mqN9HwEODOjN7i3g7u5YCqeM28Am64V3Um/906mAoy03MisWBn1E2zQXq8I3ppR3iuTPcCQyAOMyATPhCHXWfZr5vNgsv45scbtXqBnq436DwY7ZBh1vugIGIdIOJC3iyftf6RK6bPI9u9iC5c2raxZttPOS416zXvtfYWPw+nx3e/8sdLaAZnVHgoCpClhrpiWYdZIncR28cEQ8jP6AbAAqd9K1prAJtKCYKB49yQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=analog.com; dmarc=pass action=none header.from=analog.com; dkim=pass header.d=analog.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RRjqKEVMu7QUUgr460LEXd2rpnH6JlFG+mnvQZYmOrY=; b=7WmDCIglwH9K7nJK+U4bjh2DW3yh8+5sVAcjjKSUd0/StFOVrJyvCZy2q0yLlU+kA93cSykLNgqxLtmmFyJnyE27lPoRVi/39D7GCqYm594AN1z69sDHdphHKVW6djHCUnhZXW7a6SpJHTdfnNStRzxV4zAeKHBoNh7Bw6qzEzU= Received: from BN6PR03MB3347.namprd03.prod.outlook.com (10.174.94.163) by BN6PR03MB2930.namprd03.prod.outlook.com (10.175.127.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.29; Wed, 5 Feb 2020 08:11:49 +0000 Received: from BN6PR03MB3347.namprd03.prod.outlook.com ([fe80::80b6:bfbd:9b6d:710a]) by BN6PR03MB3347.namprd03.prod.outlook.com ([fe80::80b6:bfbd:9b6d:710a%4]) with mapi id 15.20.2707.020; Wed, 5 Feb 2020 08:11:49 +0000 From: "Sa, Nuno" To: "linux@roeck-us.net" CC: "linux-hwmon@vger.kernel.org" , "devicetree@vger.kernel.org" , "mark.rutland@arm.com" , "jdelvare@suse.com" , "robh+dt@kernel.org" Subject: Re: [PATCH v2 1/2] hwmon: Support ADI Fan Control IP Thread-Topic: [PATCH v2 1/2] hwmon: Support ADI Fan Control IP Thread-Index: AQHVfoxLxiRcCSnRH0C6MCDS4OOrm6djxUCAgKk1uAA= Date: Wed, 5 Feb 2020 08:11:49 +0000 Message-ID: <7755456dfbaf6ae0a45baf7b1a3ed7eb9a817d4a.camel@analog.com> References: <20191009102806.262241-1-nuno.sa@analog.com> <20191020161231.GA27783@roeck-us.net> In-Reply-To: <20191020161231.GA27783@roeck-us.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [137.71.226.54] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 185828f7-7f59-4da3-a843-08d7aa130cff x-ms-traffictypediagnostic: BN6PR03MB2930: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0304E36CA3 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(376002)(396003)(136003)(39860400002)(346002)(189003)(199004)(26005)(186003)(2906002)(30864003)(76116006)(6506007)(4326008)(2616005)(54906003)(36756003)(66574012)(71200400001)(4001150100001)(316002)(5660300002)(66946007)(478600001)(86362001)(81156014)(81166006)(66556008)(6512007)(64756008)(6486002)(66476007)(8676002)(6916009)(66446008)(8936002);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR03MB2930;H:BN6PR03MB3347.namprd03.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: analog.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /v3GUQawXDQBKh7wqfAn94JzK52gNy5nD9goaMENPinmGNVzLQiiWTHjJq5EXEXbQ9nRjgNHTUVnn+p6++KQ272+shWG7Hxpz9gylVAys0jrfa0sOAW0VQNA+gZVqePG4ScabUKhRDIB/n5L1zSTZjEc5Tgj/Yz/2IcgHkw0ejzfWkkBviSQ5iadyw5/zGrtRcdOUXlpi+xuzv5xHYH1ngLzW6NVxQ+2CxsSoT4FbFo8ufZqaHE0wj0sayXwWBjDPNou64XjFFF9I355CpzNlLlhE++7grMxpnj/EDgGsejYr9gadHo+bYvx9IKtp2z+WrAJAyfwXkeFloyrlmoQakSrD/aQU+FTD3hslim8zqTEkedmPEnz5tK8+6z7fxISacJWM+25gMvsJjHgxHg/v6joewC06FSO8dQwymVTYuPMJvYJ2KlhRtqm8IQoV3LGN2gGD5zVI5MVQCC3ye1Gi//e6YXUVRn882vWnbwFSi9o5e40FuBZJnxLPkLVYyCBt3u9gXLsi0qEJ+ickBR3ZA== x-ms-exchange-antispam-messagedata: oGC70F3uoxFkv/9FBX8oNrBUKdyqmP0rOqsDZ71HIhMJZdwZutSLWc5bC39WObwTTB6jQv4wdaM9MKY5K7PJNycA0WKKda0/7Pu5HNAJmOduf9GgVv9kKNDIQdVfqhXt/ccSJZ0SGCG+hVeCnU/9qw== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-Network-Message-Id: 185828f7-7f59-4da3-a843-08d7aa130cff X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Feb 2020 08:11:49.3127 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vVU+IrnzbEXnI34hDrvKqQ38zsUxJjq0xzKBWb+T6faICreiWuSr7vsH0Yfsxm6PmLQw7B+duhtqDQuEiUc3Fg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2930 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-02-05_02:2020-02-04,2020-02-05 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 mlxscore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1011 suspectscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2002050067 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org SGkgR3VlbnRlciwNCg0KT24gU3VuLCAyMDE5LTEwLTIwIGF0IDA5OjEyIC0wNzAwLCBHdWVudGVy IFJvZWNrIHdyb3RlOg0KPiBbRXh0ZXJuYWxdDQo+IA0KPiBPbiBXZWQsIE9jdCAwOSwgMjAxOSBh dCAxMjoyODowNVBNICswMjAwLCBOdW5vIFPDoSB3cm90ZToNCj4gPiBUaGUgcHVycG9zZSBvZiB0 aGlzIElQIENvcmUgaXMgdG8gY29udHJvbCB0aGUgZmFuIHVzZWQgZm9yIHRoZQ0KPiA+IGNvb2xp bmcgb2YgYQ0KPiA+IFhpbGlueCBaeW5xIFVsdHJhc2NhbGUrIE1QU29DIHdpdGhvdXQgdGhlIG5l ZWQgb2YgYW55IGV4dGVybmFsDQo+ID4gdGVtcGVyYXR1cmUNCj4gPiBzZW5zb3JzLiBUbyBhY2hp ZXZlIHRoaXMsIHRoZSBJUCBjb3JlIHVzZXMgdGhlIFBMIFNZU01PTkU0DQo+ID4gcHJpbWl0aXZl IHRvDQo+ID4gb2J0YWluIHRoZSBQTCB0ZW1wZXJhdHVyZSBhbmQsIGJhc2VkIG9uIHRob3NlIHJl YWRpbmdzLCBpdCB0aGVuDQo+ID4gb3V0cHV0cw0KPiA+IGEgUFdNIHNpZ25hbCB0byBjb250cm9s IHRoZSBmYW4gcm90YXRpb24gYWNjb3JkaW5nbHkuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTog TnVubyBTw6EgPG51bm8uc2FAYW5hbG9nLmNvbT4NCj4gDQo+IEFwcGxpZWQgdG8gaHdtb24tbmV4 dC4NCg0KRGlkIHlvdSBzb21laG93IGRlY2lkZWQgbm90IHRvIG1lcmdlIHRoaXMgZHJpdmVyIG9y IGRpZCB5b3UgZm9yZ2V0DQphYm91dCBpdD8gSSB3YXMgdHJ5aW5nIHRvIGZpbmQgaXQgbWFpbmxp bmUgdG8gc3luYyBvdXIgdHJlZXMgd2l0aCB0aGUNCnJldmlld2VkIHZlcnNpb24gYW5kIEkgY291 bGQgbm90IHNlZSBpdCB0aGVyZS4uLg0KDQpUaGFua3MsDQpOdW5vIFPDoQ0KDQo+IFRoYW5rcywN Cj4gR3VlbnRlcg0KPiANCj4gPiAtLS0NCj4gPiBDaGFuZ2VzIGluIHYyOg0KPiA+ICAqIGRlZmlu ZSBBWElfUENPUkUgbWFjcm9zIGluIHRoZSBkcml2ZXIgc291cmNlIGZvciBub3c7DQo+ID4gICog aW5jbHVkZSBsaW51eC9iaXRzLmg7DQo+ID4gICogYXhpX2Zhbl9jb250cm9sX2lve3JlYWQvd3Jp dGV9IHJlbmFtZWQgd2l0aCBzaG9ydGVyIG5hbWVzOw0KPiA+ICAqIE1ha2Ugc3VyZSB0YWNoIGlz ICE9IDAgd2hlbiBnZXR0aW5nIHRoZSBmYW4gcnBtOw0KPiA+ICAqIFJlYWQgb25seSBvbmNlIHRo ZSBjbGsgcmF0ZTsNCj4gPiAgKiBSZW1vdmUgdW5uZWVkZWQgc3RydWN0IGNsazsNCj4gPiAgKiBG aXhlZCB0eXBvIGluIG1pbGxpZGVncmVlczsNCj4gPiAgKiBVc2UgZGV2bV9wbGF0Zm9ybV9pb3Jl bWFwX3Jlc291cmNlKCk7DQo+ID4gICogUmVtb3ZlIHVubmVlZGVkIGVycm9yIGxvZ3M7DQo+ID4g ICogQ2hlY2sgdmFsaWQgdmFsdWVzIGZvciBwdWxzZXMgcGVyIHJldm9sdXRpb247DQo+ID4gICog Q2xlYXIgdGhlIGZhdWx0IGF0dHJpYnV0ZSBhZnRlciByZWFkaW5nIGl0Ow0KPiA+ICAqIE5vdGlm eSB1c2Vyc3BhY2UgaWYgSFcgY2hhbmdlZCB0aGUgUFdNOw0KPiA+ICAqIEFkZCBjb21tZW50cyBv biBob3cgdGhlIGNvcmUgd29ya3MgaW4gb3RoZXIgdG8gYmV0dGVyIHVuZGVyc3RhbmQNCj4gPiB0 aGUgSVJRIGhhbmRsaW5nLg0KPiA+IA0KPiA+ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAg ICAgIHwgICA3ICsNCj4gPiAgZHJpdmVycy9od21vbi9LY29uZmlnICAgICAgICAgICB8ICAgOSAr DQo+ID4gIGRyaXZlcnMvaHdtb24vTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKw0KPiA+ICBkcml2 ZXJzL2h3bW9uL2F4aS1mYW4tY29udHJvbC5jIHwgNDczDQo+ID4gKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysNCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCA0OTAgaW5zZXJ0aW9ucygrKQ0K PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9od21vbi9heGktZmFuLWNvbnRyb2wuYw0K PiA+IA0KPiA+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTDQo+ID4gaW5k ZXggMjk2ZGUyYjUxYzgzLi5jYWE4MGFlMTkyNWUgMTAwNjQ0DQo+ID4gLS0tIGEvTUFJTlRBSU5F UlMNCj4gPiArKysgYi9NQUlOVEFJTkVSUw0KPiA+IEBAIC0yODczLDYgKzI4NzMsMTMgQEAgUzoJ TWFpbnRhaW5lZA0KPiA+ICBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291 bmQvYXhlbnRpYSwqDQo+ID4gIEY6CXNvdW5kL3NvYy9hdG1lbC90c2U4NTAtcGNtNTE0Mi5jDQo+ ID4gIA0KPiA+ICtBWEktRkFOLUNPTlRST0wgSEFSRFdBUkUgTU9OSVRPUiBEUklWRVINCj4gPiAr TToJTnVubyBTw6EgPG51bm8uc2FAYW5hbG9nLmNvbT4NCj4gPiArVzoJaHR0cDovL2V6LmFuYWxv Zy5jb20vY29tbXVuaXR5L2xpbnV4LWRldmljZS1kcml2ZXJzDQo+ID4gK0w6CWxpbnV4LWh3bW9u QHZnZXIua2VybmVsLm9yZw0KPiA+ICtTOglTdXBwb3J0ZWQNCj4gPiArRjoJZHJpdmVycy9od21v bi9heGktZmFuLWNvbnRyb2wuYw0KPiA+ICsNCj4gPiAgQVhYSUEgSTJDIENPTlRST0xMRVINCj4g PiAgTToJS3J6eXN6dG9mIEFkYW1za2kgPGtyenlzenRvZi5hZGFtc2tpQG5va2lhLmNvbT4NCj4g PiAgTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2h3bW9uL0tjb25maWcgYi9kcml2ZXJzL2h3bW9uL0tjb25maWcNCj4gPiBpbmRleCA3YjZjNDAy NWI4MjcuLmNhNTNiYjMzYjk2NSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2h3bW9uL0tjb25m aWcNCj4gPiArKysgYi9kcml2ZXJzL2h3bW9uL0tjb25maWcNCj4gPiBAQCAtMjY5LDYgKzI2OSwx NSBAQCBjb25maWcgU0VOU09SU19BU0M3NjIxDQo+ID4gIAkgIFRoaXMgZHJpdmVyIGNhbiBhbHNv IGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBJZiBzbywgdGhlIG1vZHVsZQ0KPiA+ICAJICB3aWxsIGJl IGNhbGxlZCBhc2M3NjIxLg0KPiA+ICANCj4gPiArY29uZmlnIFNFTlNPUlNfQVhJX0ZBTl9DT05U Uk9MDQo+ID4gKwl0cmlzdGF0ZSAiQW5hbG9nIERldmljZXMgRkFOIENvbnRyb2wgSERMIENvcmUg ZHJpdmVyIg0KPiA+ICsJaGVscA0KPiA+ICsJICBJZiB5b3Ugc2F5IHllcyBoZXJlIHlvdSBnZXQg c3VwcG9ydCBmb3IgdGhlIEFuYWxvZyBEZXZpY2VzDQo+ID4gKwkgIEFYSSBIREwgRkFOIG1vbml0 b3JpbmcgY29yZS4NCj4gPiArDQo+ID4gKwkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0 IGFzIGEgbW9kdWxlLiBJZiBzbywgdGhlIG1vZHVsZQ0KPiA+ICsJICB3aWxsIGJlIGNhbGxlZCBh eGktZmFuLWNvbnRyb2wNCj4gPiArDQo+ID4gIGNvbmZpZyBTRU5TT1JTX0s4VEVNUA0KPiA+ICAJ dHJpc3RhdGUgIkFNRCBBdGhsb242NC9GWCBvciBPcHRlcm9uIHRlbXBlcmF0dXJlIHNlbnNvciIN Cj4gPiAgCWRlcGVuZHMgb24gWDg2ICYmIFBDSQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3 bW9uL01ha2VmaWxlIGIvZHJpdmVycy9od21vbi9NYWtlZmlsZQ0KPiA+IGluZGV4IDQwYzAzNmVh NDVlNi4uZGNiNGI2NGUxZjRkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvaHdtb24vTWFrZWZp bGUNCj4gPiArKysgYi9kcml2ZXJzL2h3bW9uL01ha2VmaWxlDQo+ID4gQEAgLTUxLDYgKzUxLDcg QEAgb2JqLSQoQ09ORklHX1NFTlNPUlNfQVMzNzApCSs9IGFzMzcwLQ0KPiA+IGh3bW9uLm8NCj4g PiAgb2JqLSQoQ09ORklHX1NFTlNPUlNfQVNDNzYyMSkJKz0gYXNjNzYyMS5vDQo+ID4gIG9iai0k KENPTkZJR19TRU5TT1JTX0FTUEVFRCkJKz0gYXNwZWVkLXB3bS10YWNoby5vDQo+ID4gIG9iai0k KENPTkZJR19TRU5TT1JTX0FUWFAxKQkrPSBhdHhwMS5vDQo+ID4gK29iai0kKENPTkZJR19TRU5T T1JTX0FYSV9GQU5fQ09OVFJPTCkgKz0gYXhpLWZhbi1jb250cm9sLm8NCj4gPiAgb2JqLSQoQ09O RklHX1NFTlNPUlNfQ09SRVRFTVApCSs9IGNvcmV0ZW1wLm8NCj4gPiAgb2JqLSQoQ09ORklHX1NF TlNPUlNfREE5MDUyX0FEQykrPSBkYTkwNTItaHdtb24ubw0KPiA+ICBvYmotJChDT05GSUdfU0VO U09SU19EQTkwNTUpKz0gZGE5MDU1LWh3bW9uLm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9o d21vbi9heGktZmFuLWNvbnRyb2wuYyBiL2RyaXZlcnMvaHdtb24vYXhpLQ0KPiA+IGZhbi1jb250 cm9sLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4u NmMxYmQzMjY5YzhjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvaHdtb24v YXhpLWZhbi1jb250cm9sLmMNCj4gPiBAQCAtMCwwICsxLDQ3MyBAQA0KPiA+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsvKg0KPiA+ICsgKiBGYW4gQ29udHJvbCBI REwgQ09SRSBkcml2ZXINCj4gPiArICoNCj4gPiArICogQ29weXJpZ2h0IDIwMTkgQW5hbG9nIERl dmljZXMgSW5jLg0KPiA+ICsgKi8NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZnBnYS9hZGktYXhp LWNvbW1vbi5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaHdtb24uaD4NCj4gPiArI2luY2x1ZGUg PGxpbnV4L2ludGVycnVwdC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ ID4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGV2aWNlLmg+DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFESV9BWElfUENPUkVfVkVSX01BSk9SKHZl cnNpb24pCSgoKHZlcnNpb24pID4+IDE2KSAmDQo+ID4gMHhmZikNCj4gPiArI2RlZmluZSBBRElf QVhJX1BDT1JFX1ZFUl9NSU5PUih2ZXJzaW9uKQkoKCh2ZXJzaW9uKSA+PiA4KSAmDQo+ID4gMHhm ZikNCj4gPiArI2RlZmluZSBBRElfQVhJX1BDT1JFX1ZFUl9QQVRDSCh2ZXJzaW9uKQkoKHZlcnNp b24pICYgMHhmZikNCj4gPiArDQo+ID4gKy8qIHJlZ2lzdGVyIG1hcCAqLw0KPiA+ICsjZGVmaW5l IEFESV9SRUdfUlNUTgkJMHgwMDgwDQo+ID4gKyNkZWZpbmUgQURJX1JFR19QV01fV0lEVEgJMHgw MDg0DQo+ID4gKyNkZWZpbmUgQURJX1JFR19UQUNIX1BFUklPRAkweDAwODgNCj4gPiArI2RlZmlu ZSBBRElfUkVHX1RBQ0hfVE9MRVJBTkNFCTB4MDA4Yw0KPiA+ICsjZGVmaW5lIEFESV9SRUdfUFdN X1BFUklPRAkweDAwYzANCj4gPiArI2RlZmluZSBBRElfUkVHX1RBQ0hfTUVBU1VSCTB4MDBjNA0K PiA+ICsjZGVmaW5lIEFESV9SRUdfVEVNUEVSQVRVUkUJMHgwMGM4DQo+ID4gKw0KPiA+ICsjZGVm aW5lIEFESV9SRUdfSVJRX01BU0sJMHgwMDQwDQo+ID4gKyNkZWZpbmUgQURJX1JFR19JUlFfUEVO RElORwkweDAwNDQNCj4gPiArI2RlZmluZSBBRElfUkVHX0lSUV9TUkMJCTB4MDA0OA0KPiA+ICsN Cj4gPiArLyogSVJRIHNvdXJjZXMgKi8NCj4gPiArI2RlZmluZSBBRElfSVJRX1NSQ19QV01fQ0hB TkdFRAkJQklUKDApDQo+ID4gKyNkZWZpbmUgQURJX0lSUV9TUkNfVEFDSF9FUlIJCUJJVCgxKQ0K PiA+ICsjZGVmaW5lIEFESV9JUlFfU1JDX1RFTVBfSU5DUkVBU0UJQklUKDIpDQo+ID4gKyNkZWZp bmUgQURJX0lSUV9TUkNfTkVXX01FQVNVUgkJQklUKDMpDQo+ID4gKyNkZWZpbmUgQURJX0lSUV9T UkNfTUFTSwkJR0VOTUFTSygzLCAwKQ0KPiA+ICsjZGVmaW5lIEFESV9JUlFfTUFTS19PVVRfQUxM CQkweEZGRkZGRkZGVQ0KPiA+ICsNCj4gPiArI2RlZmluZSBTWVNGU19QV01fTUFYCQkJMjU1DQo+ ID4gKw0KPiA+ICtzdHJ1Y3QgYXhpX2Zhbl9jb250cm9sX2RhdGEgew0KPiA+ICsJdm9pZCBfX2lv bWVtICpiYXNlOw0KPiA+ICsJc3RydWN0IGRldmljZSAqaGRldjsNCj4gPiArCXVuc2lnbmVkIGxv bmcgY2xrX3JhdGU7DQo+ID4gKwlpbnQgaXJxOw0KPiA+ICsJLyogcHVsc2VzIHBlciByZXZvbHV0 aW9uICovDQo+ID4gKwl1MzIgcHByOw0KPiA+ICsJYm9vbCBod19wd21fcmVxOw0KPiA+ICsJYm9v bCB1cGRhdGVfdGFjaG9fcGFyYW1zOw0KPiA+ICsJdTggZmFuX2ZhdWx0Ow0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArc3RhdGljIGlubGluZSB2b2lkIGF4aV9pb3dyaXRlKGNvbnN0IHUzMiB2YWwsIGNv bnN0IHUzMiByZWcsDQo+ID4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYXhpX2Zhbl9jb250cm9s X2RhdGEgKmN0bCkNCj4gPiArew0KPiA+ICsJaW93cml0ZTMyKHZhbCwgY3RsLT5iYXNlICsgcmVn KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSB1MzIgYXhpX2lvcmVhZChjb25z dCB1MzIgcmVnLA0KPiA+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBheGlfZmFuX2NvbnRyb2xfZGF0 YSAqY3RsKQ0KPiA+ICt7DQo+ID4gKwlyZXR1cm4gaW9yZWFkMzIoY3RsLT5iYXNlICsgcmVnKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGxvbmcgYXhpX2Zhbl9jb250cm9sX2dldF9wd21f ZHV0eShjb25zdCBzdHJ1Y3QNCj4gPiBheGlfZmFuX2NvbnRyb2xfZGF0YSAqY3RsKQ0KPiA+ICt7 DQo+ID4gKwl1MzIgcHdtX3dpZHRoID0gYXhpX2lvcmVhZChBRElfUkVHX1BXTV9XSURUSCwgY3Rs KTsNCj4gPiArCXUzMiBwd21fcGVyaW9kID0gYXhpX2lvcmVhZChBRElfUkVHX1BXTV9QRVJJT0Qs IGN0bCk7DQo+ID4gKwkvKg0KPiA+ICsJICogUFdNX1BFUklPRCBpcyBhIFJPIHJlZ2lzdGVyIHNl dCBieSB0aGUgY29yZS4gSXQgc2hvdWxkIG5ldmVyDQo+ID4gYmUgMC4NCj4gPiArCSAqIEZvciBu b3cgd2UgYXJlIHRydXN0aW5nIHRoZSBIVy4uLg0KPiA+ICsJICovDQo+ID4gKwlyZXR1cm4gRElW X1JPVU5EX0NMT1NFU1QocHdtX3dpZHRoICogU1lTRlNfUFdNX01BWCwNCj4gPiBwd21fcGVyaW9k KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBheGlfZmFuX2NvbnRyb2xfc2V0X3B3 bV9kdXR5KGNvbnN0IGxvbmcgdmFsLA0KPiA+ICsJCQkJCXN0cnVjdCBheGlfZmFuX2NvbnRyb2xf ZGF0YQ0KPiA+ICpjdGwpDQo+ID4gK3sNCj4gPiArCXUzMiBwd21fcGVyaW9kID0gYXhpX2lvcmVh ZChBRElfUkVHX1BXTV9QRVJJT0QsIGN0bCk7DQo+ID4gKwl1MzIgbmV3X3dpZHRoOw0KPiA+ICsJ bG9uZyBfX3ZhbCA9IGNsYW1wX3ZhbCh2YWwsIDAsIFNZU0ZTX1BXTV9NQVgpOw0KPiA+ICsNCj4g PiArCW5ld193aWR0aCA9IERJVl9ST1VORF9DTE9TRVNUKF9fdmFsICogcHdtX3BlcmlvZCwNCj4g PiBTWVNGU19QV01fTUFYKTsNCj4gPiArDQo+ID4gKwlheGlfaW93cml0ZShuZXdfd2lkdGgsIEFE SV9SRUdfUFdNX1dJRFRILCBjdGwpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgbG9uZyBheGlfZmFuX2NvbnRyb2xfZ2V0X2Zhbl9ycG0oY29uc3Qg c3RydWN0DQo+ID4gYXhpX2Zhbl9jb250cm9sX2RhdGEgKmN0bCkNCj4gPiArew0KPiA+ICsJY29u c3QgdTMyIHRhY2ggPSBheGlfaW9yZWFkKEFESV9SRUdfVEFDSF9NRUFTVVIsIGN0bCk7DQo+ID4g Kw0KPiA+ICsJaWYgKHRhY2ggPT0gMCkNCj4gPiArCQkvKiBzaG91bGQgd2UgcmV0dXJuIGVycm9y LCBFQUdBSU4gbWF5YmU/ICovDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwkvKg0KPiA+ICsJICog VGhlIHRhY2hvIHBlcmlvZCBzaG91bGQgYmU6DQo+ID4gKwkgKiAgICAgIFRBQ0ggPSA2MC8ocHBy ICogcnBtKSwgd2hlcmUgcnBtIGlzIHJldm9sdXRpb25zIHBlcg0KPiA+IHNlY29uZA0KPiA+ICsJ ICogICAgICBhbmQgcHByIGlzIHB1bHNlcyBwZXIgcmV2b2x1dGlvbi4NCj4gPiArCSAqIEdpdmVu IHRoZSB0YWNobyBwZXJpb2QsIHdlIGNhbiBtdWx0aXBseSBpdCBieSB0aGUgaW5wdXQNCj4gPiBj bG9jaw0KPiA+ICsJICogc28gdGhhdCB3ZSBrbm93IGhvdyBtYW55IGNsb2NrcyB3ZSBuZWVkIHRv IGhhdmUgdGhpcyBwZXJpb2QuDQo+ID4gKwkgKiBGcm9tIHRoaXMsIHdlIGNhbiBkZXJpdmUgdGhl IFJQTSB2YWx1ZS4NCj4gPiArCSAqLw0KPiA+ICsJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKDYw ICogY3RsLT5jbGtfcmF0ZSwgY3RsLT5wcHIgKiB0YWNoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGludCBheGlfZmFuX2NvbnRyb2xfcmVhZF90ZW1wKHN0cnVjdCBkZXZpY2UgKmRldiwg dTMyIGF0dHIsDQo+ID4gbG9uZyAqdmFsKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgYXhpX2Zhbl9j b250cm9sX2RhdGEgKmN0bCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsJbG9uZyByYXdf dGVtcDsNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKGF0dHIpIHsNCj4gPiArCWNhc2UgaHdtb25fdGVt cF9pbnB1dDoNCj4gPiArCQlyYXdfdGVtcCA9IGF4aV9pb3JlYWQoQURJX1JFR19URU1QRVJBVFVS RSwgY3RsKTsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIFRoZSBmb3JtdWxhIGZvciB0aGUgdGVtcGVy YXR1cmUgaXM6DQo+ID4gKwkJICogICAgICBUID0gKEFEQyAqIDUwMS4zNzQzIC8gMl5iaXRzKSAt IDI3My42Nzc3DQo+ID4gKwkJICogSXQncyBtdWx0aXBsaWVkIGJ5IDEwMDAgdG8gaGF2ZSBtaWxs aWRlZ3JlZXMgYXMNCj4gPiArCQkgKiBzcGVjaWZpZWQgYnkgdGhlIGh3bW9uIHN5c2ZzIGludGVy ZmFjZS4NCj4gPiArCQkgKi8NCj4gPiArCQkqdmFsID0gKChyYXdfdGVtcCAqIDUwMTM3NCkgPj4g MTYpIC0gMjczNjc3Ow0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQly ZXR1cm4gLUVOT1RTVVBQOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50 IGF4aV9mYW5fY29udHJvbF9yZWFkX2ZhbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiBhdHRyLA0K PiA+IGxvbmcgKnZhbCkNCj4gPiArew0KPiA+ICsJc3RydWN0IGF4aV9mYW5fY29udHJvbF9kYXRh ICpjdGwgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKGF0dHIp IHsNCj4gPiArCWNhc2UgaHdtb25fZmFuX2ZhdWx0Og0KPiA+ICsJCSp2YWwgPSBjdGwtPmZhbl9m YXVsdDsNCj4gPiArCQkvKiBjbGVhciBpdCBub3cgKi8NCj4gPiArCQljdGwtPmZhbl9mYXVsdCA9 IDA7DQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwljYXNlIGh3bW9uX2Zhbl9pbnB1dDoNCj4gPiAr CQkqdmFsID0gYXhpX2Zhbl9jb250cm9sX2dldF9mYW5fcnBtKGN0bCk7DQo+ID4gKwkJcmV0dXJu IDA7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJldHVybiAtRU5PVFNVUFA7DQo+ID4gKwl9DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYXhpX2Zhbl9jb250cm9sX3JlYWRfcHdtKHN0 cnVjdCBkZXZpY2UgKmRldiwgdTMyIGF0dHIsDQo+ID4gbG9uZyAqdmFsKQ0KPiA+ICt7DQo+ID4g KwlzdHJ1Y3QgYXhpX2Zhbl9jb250cm9sX2RhdGEgKmN0bCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp Ow0KPiA+ICsNCj4gPiArCXN3aXRjaCAoYXR0cikgew0KPiA+ICsJY2FzZSBod21vbl9wd21faW5w dXQ6DQo+ID4gKwkJKnZhbCA9IGF4aV9mYW5fY29udHJvbF9nZXRfcHdtX2R1dHkoY3RsKTsNCj4g PiArCQlyZXR1cm4gMDsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJcmV0dXJuIC1FTk9UU1VQUDsN Cj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBheGlfZmFuX2NvbnRyb2xf d3JpdGVfcHdtKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIGF0dHIsDQo+ID4gbG9uZyB2YWwpDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCBheGlfZmFuX2NvbnRyb2xfZGF0YSAqY3RsID0gZGV2X2dldF9k cnZkYXRhKGRldik7DQo+ID4gKw0KPiA+ICsJc3dpdGNoIChhdHRyKSB7DQo+ID4gKwljYXNlIGh3 bW9uX3B3bV9pbnB1dDoNCj4gPiArCQlyZXR1cm4gYXhpX2Zhbl9jb250cm9sX3NldF9wd21fZHV0 eSh2YWwsIGN0bCk7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJldHVybiAtRU5PVFNVUFA7DQo+ ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYXhpX2Zhbl9jb250cm9sX3Jl YWRfbGFiZWxzKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiArCQkJCSAgICAgICBlbnVtIGh3bW9u X3NlbnNvcl90eXBlcyB0eXBlLA0KPiA+ICsJCQkJICAgICAgIHUzMiBhdHRyLCBpbnQgY2hhbm5l bCwgY29uc3QNCj4gPiBjaGFyICoqc3RyKQ0KPiA+ICt7DQo+ID4gKwlzd2l0Y2ggKHR5cGUpIHsN Cj4gPiArCWNhc2UgaHdtb25fZmFuOg0KPiA+ICsJCSpzdHIgPSAiRkFOIjsNCj4gPiArCQlyZXR1 cm4gMDsNCj4gPiArCWNhc2UgaHdtb25fdGVtcDoNCj4gPiArCQkqc3RyID0gIlNZU01PTjQiOw0K PiA+ICsJCXJldHVybiAwOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXR1cm4gLUVOT1RTVVBQ Ow0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGF4aV9mYW5fY29udHJv bF9yZWFkKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiArCQkJCWVudW0gaHdtb25fc2Vuc29yX3R5 cGVzIHR5cGUsDQo+ID4gKwkJCQl1MzIgYXR0ciwgaW50IGNoYW5uZWwsIGxvbmcgKnZhbCkNCj4g PiArew0KPiA+ICsJc3dpdGNoICh0eXBlKSB7DQo+ID4gKwljYXNlIGh3bW9uX2ZhbjoNCj4gPiAr CQlyZXR1cm4gYXhpX2Zhbl9jb250cm9sX3JlYWRfZmFuKGRldiwgYXR0ciwgdmFsKTsNCj4gPiAr CWNhc2UgaHdtb25fcHdtOg0KPiA+ICsJCXJldHVybiBheGlfZmFuX2NvbnRyb2xfcmVhZF9wd20o ZGV2LCBhdHRyLCB2YWwpOw0KPiA+ICsJY2FzZSBod21vbl90ZW1wOg0KPiA+ICsJCXJldHVybiBh eGlfZmFuX2NvbnRyb2xfcmVhZF90ZW1wKGRldiwgYXR0ciwgdmFsKTsNCj4gPiArCWRlZmF1bHQ6 DQo+ID4gKwkJcmV0dXJuIC1FTk9UU1VQUDsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGludCBheGlfZmFuX2NvbnRyb2xfd3JpdGUoc3RydWN0IGRldmljZSAqZGV2LA0KPiA+ ICsJCQkJIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsDQo+ID4gKwkJCQkgdTMyIGF0dHIs IGludCBjaGFubmVsLCBsb25nIHZhbCkNCj4gPiArew0KPiA+ICsJc3dpdGNoICh0eXBlKSB7DQo+ ID4gKwljYXNlIGh3bW9uX3B3bToNCj4gPiArCQlyZXR1cm4gYXhpX2Zhbl9jb250cm9sX3dyaXRl X3B3bShkZXYsIGF0dHIsIHZhbCk7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJldHVybiAtRU5P VFNVUFA7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1bW9kZV90IGF4aV9m YW5fY29udHJvbF9mYW5faXNfdmlzaWJsZShjb25zdCB1MzIgYXR0cikNCj4gPiArew0KPiA+ICsJ c3dpdGNoIChhdHRyKSB7DQo+ID4gKwljYXNlIGh3bW9uX2Zhbl9pbnB1dDoNCj4gPiArCWNhc2Ug aHdtb25fZmFuX2ZhdWx0Og0KPiA+ICsJY2FzZSBod21vbl9mYW5fbGFiZWw6DQo+ID4gKwkJcmV0 dXJuIDA0NDQ7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdW1vZGVfdCBheGlfZmFuX2NvbnRyb2xfcHdtX2lzX3Zp c2libGUoY29uc3QgdTMyIGF0dHIpDQo+ID4gK3sNCj4gPiArCXN3aXRjaCAoYXR0cikgew0KPiA+ ICsJY2FzZSBod21vbl9wd21faW5wdXQ6DQo+ID4gKwkJcmV0dXJuIDA2NDQ7DQo+ID4gKwlkZWZh dWx0Og0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgdW1vZGVfdCBheGlfZmFuX2NvbnRyb2xfdGVtcF9pc192aXNpYmxlKGNvbnN0IHUzMiBhdHRy KQ0KPiA+ICt7DQo+ID4gKwlzd2l0Y2ggKGF0dHIpIHsNCj4gPiArCWNhc2UgaHdtb25fdGVtcF9p bnB1dDoNCj4gPiArCWNhc2UgaHdtb25fdGVtcF9sYWJlbDoNCj4gPiArCQlyZXR1cm4gMDQ0NDsN Cj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyB1bW9kZV90IGF4aV9mYW5fY29udHJvbF9pc192aXNpYmxlKGNvbnN0IHZv aWQgKmRhdGEsDQo+ID4gKwkJCQkJICBlbnVtIGh3bW9uX3NlbnNvcl90eXBlcyB0eXBlLA0KPiA+ ICsJCQkJCSAgdTMyIGF0dHIsIGludCBjaGFubmVsKQ0KPiA+ICt7DQo+ID4gKwlzd2l0Y2ggKHR5 cGUpIHsNCj4gPiArCWNhc2UgaHdtb25fZmFuOg0KPiA+ICsJCXJldHVybiBheGlfZmFuX2NvbnRy b2xfZmFuX2lzX3Zpc2libGUoYXR0cik7DQo+ID4gKwljYXNlIGh3bW9uX3B3bToNCj4gPiArCQly ZXR1cm4gYXhpX2Zhbl9jb250cm9sX3B3bV9pc192aXNpYmxlKGF0dHIpOw0KPiA+ICsJY2FzZSBo d21vbl90ZW1wOg0KPiA+ICsJCXJldHVybiBheGlfZmFuX2NvbnRyb2xfdGVtcF9pc192aXNpYmxl KGF0dHIpOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogVGhpcyBjb3JlIGhhcyB0d28gbWFpbiB3YXlzIG9m IGNoYW5naW5nIHRoZSBQV00gZHV0eSBjeWNsZS4gSXQNCj4gPiBpcyBkb25lLA0KPiA+ICsgKiBl aXRoZXIgYnkgYSByZXF1ZXN0IGZyb20gdXNlcnNwYWNlICh3cml0aW5nIG9uIHB3bTFfaW5wdXQp IG9yDQo+ID4gYnkgdGhlDQo+ID4gKyAqIGNvcmUgaXRzZWxmLiBXaGVuIHRoZSBjaGFuZ2UgaXMg ZG9uZSBieSB0aGUgY29yZSwgaXQgd2lsbCB1c2UNCj4gPiBwcmVkZWZpbmVkDQo+ID4gKyAqIHBh cmFtZXRlcnMgdG8gZXZhbHVhdGUgdGhlIHRhY2ggc2lnbmFsIGFuZCwgb24gdGhhdCBjYXNlIHdl DQo+ID4gY2Fubm90IHNldCB0aGVtLg0KPiA+ICsgKiBPbiB0aGUgb3RoZXIgaGFuZCwgd2hlbiB0 aGUgcmVxdWVzdCBpcyBkb25lIGJ5IHRoZSB1c2VyLCB3aXRoDQo+ID4gc29tZSBhcmJpdHJhcnkN Cj4gPiArICogdmFsdWUgdGhhdCB0aGUgY29yZSBkb2VzIG5vdCBub3cgYWJvdXQsIHdlIGhhdmUg dG8gcHJvdmlkZSB0aGUNCj4gPiB0YWNoDQo+ID4gKyAqIHBhcmFtZXRlcnMgc28gdGhhdCwgdGhl IGNvcmUgY2FuIGV2YWx1YXRlIHRoZSBzaWduYWwuIE9uIHRoZQ0KPiA+IElSUSBoYW5kbGVyIHdl DQo+ID4gKyAqIGRpc3Rpbmd1aXNoIHRoaXMgYnkgdXNpbmcgdGhlIEFESV9JUlFfU1JDX1RFTVBf SU5DUkVBU0UNCj4gPiBpbnRlcnJ1cHQuIFRoaXMgdGVsbA0KPiA+ICsgKiB1cyB0aGF0IHRoZSBD T1JFIHJlcXVlc3RlZCBhIG5ldyBkdXR5IGN5Y2xlLiBBZnRlciB0aGlzLCB0aGVyZQ0KPiA+IGlz IDVzIGRlbGF5DQo+ID4gKyAqIG9uIHdoaWNoIHRoZSBjb3JlIHdhaXRzIGZvciB0aGUgZmFuIHJv dGF0aW9uIHNwZWVkIHRvDQo+ID4gc3RhYmlsaXplLiBBZnRlciB0aGlzDQo+ID4gKyAqIHdlIGdl dCBBRElfSVJRX1NSQ19QV01fQ0hBTkdFRCBpcnEgd2hlcmUgd2Ugd2lsbCBkZWNpZGUgaWYgd2UN Cj4gPiBuZWVkIHRvIHNldA0KPiA+ICsgKiB0aGUgdGFjaCBwYXJhbWV0ZXJzIG9yIG5vdCBvbiB0 aGUgbmV4dCB0YWNoIG1lYXN1cmVtZW50IGN5Y2xlDQo+ID4gKGNvcnJlc3BvbmRpbmcNCj4gPiAr ICogYWxyZWFkeSB0byB0aGUgbmV5IGR1dHkgY3ljbGUpIGJhc2VkIG9uIHRoZSAlY3RsLT5od19w d21fcmVxDQo+ID4gZmxhZy4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpcnFyZXR1cm5fdCBheGlf ZmFuX2NvbnRyb2xfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZA0KPiA+ICpkYXRhKQ0KPiA+ICt7 DQo+ID4gKwlzdHJ1Y3QgYXhpX2Zhbl9jb250cm9sX2RhdGEgKmN0bCA9IChzdHJ1Y3QgYXhpX2Zh bl9jb250cm9sX2RhdGENCj4gPiAqKWRhdGE7DQo+ID4gKwl1MzIgaXJxX3BlbmRpbmcgPSBheGlf aW9yZWFkKEFESV9SRUdfSVJRX1BFTkRJTkcsIGN0bCk7DQo+ID4gKwl1MzIgY2xlYXJfbWFzazsN Cj4gPiArDQo+ID4gKwlpZiAoaXJxX3BlbmRpbmcgJiBBRElfSVJRX1NSQ19ORVdfTUVBU1VSKSB7 DQo+ID4gKwkJaWYgKGN0bC0+dXBkYXRlX3RhY2hvX3BhcmFtcykgew0KPiA+ICsJCQl1MzIgbmV3 X3RhY2ggPSBheGlfaW9yZWFkKEFESV9SRUdfVEFDSF9NRUFTVVIsDQo+ID4gY3RsKTsNCj4gPiAr DQo+ID4gKwkJCS8qIGdldCAyNSUgdG9sZXJhbmNlICovDQo+ID4gKwkJCXUzMiB0YWNoX3RvbCA9 IERJVl9ST1VORF9DTE9TRVNUKG5ld190YWNoICogMjUsDQo+ID4gMTAwKTsNCj4gPiArCQkJLyog c2V0IG5ldyB0YWNobyBwYXJhbWV0ZXJzICovDQo+ID4gKwkJCWF4aV9pb3dyaXRlKG5ld190YWNo LCBBRElfUkVHX1RBQ0hfUEVSSU9ELA0KPiA+IGN0bCk7DQo+ID4gKwkJCWF4aV9pb3dyaXRlKHRh Y2hfdG9sLCBBRElfUkVHX1RBQ0hfVE9MRVJBTkNFLA0KPiA+IGN0bCk7DQo+ID4gKwkJCWN0bC0+ dXBkYXRlX3RhY2hvX3BhcmFtcyA9IGZhbHNlOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ ID4gKwlpZiAoaXJxX3BlbmRpbmcgJiBBRElfSVJRX1NSQ19QV01fQ0hBTkdFRCkgew0KPiA+ICsJ CS8qDQo+ID4gKwkJICogaWYgdGhlIHB3bSBjaGFuZ2VzIG9uIGJlaGFsZiBvZiBzb2Z0d2FyZSwN Cj4gPiArCQkgKiB3ZSBuZWVkIHRvIHByb3ZpZGUgbmV3IHRhY2hvIHBhcmFtZXRlcnMgdG8gdGhl IGNvcmUuDQo+ID4gKwkJICogV2FpdCBmb3IgdGhlIG5leHQgbWVhc3VyZW1lbnQgZm9yIHRoYXQu Li4NCj4gPiArCQkgKi8NCj4gPiArCQlpZiAoIWN0bC0+aHdfcHdtX3JlcSkgew0KPiA+ICsJCQlj dGwtPnVwZGF0ZV90YWNob19wYXJhbXMgPSB0cnVlOw0KPiA+ICsJCX0gZWxzZSB7DQo+ID4gKwkJ CWN0bC0+aHdfcHdtX3JlcSA9IGZhbHNlOw0KPiA+ICsJCQlzeXNmc19ub3RpZnkoJmN0bC0+aGRl di0+a29iaiwgTlVMTCwgInB3bTEiKTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ aWYgKGlycV9wZW5kaW5nICYgQURJX0lSUV9TUkNfVEVNUF9JTkNSRUFTRSkNCj4gPiArCQkvKiBo YXJkd2FyZSByZXF1ZXN0ZWQgYSBuZXcgcHdtICovDQo+ID4gKwkJY3RsLT5od19wd21fcmVxID0g dHJ1ZTsNCj4gPiArDQo+ID4gKwlpZiAoaXJxX3BlbmRpbmcgJiBBRElfSVJRX1NSQ19UQUNIX0VS UikNCj4gPiArCQljdGwtPmZhbl9mYXVsdCA9IDE7DQo+ID4gKw0KPiA+ICsJLyogY2xlYXIgYWxs IGludGVycnVwdHMgKi8NCj4gPiArCWNsZWFyX21hc2sgPSBpcnFfcGVuZGluZyAmIEFESV9JUlFf U1JDX01BU0s7DQo+ID4gKwlheGlfaW93cml0ZShjbGVhcl9tYXNrLCBBRElfUkVHX0lSUV9QRU5E SU5HLCBjdGwpOw0KPiA+ICsNCj4gPiArCXJldHVybiBJUlFfSEFORExFRDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludCBheGlfZmFuX2NvbnRyb2xfaW5pdChzdHJ1Y3QgYXhpX2Zhbl9j b250cm9sX2RhdGEgKmN0bCwNCj4gPiArCQkJCWNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAp DQo+ID4gK3sNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJLyogZ2V0IGZhbiBwdWxzZXMg cGVyIHJldm9sdXRpb24gKi8NCj4gPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAi YWRpLHB1bHNlcy1wZXItcmV2b2x1dGlvbiIsDQo+ID4gJmN0bC0+cHByKTsNCj4gPiArCWlmIChy ZXQpDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwkvKiAxLCAyIGFuZCA0IGFyZSB0 aGUgdHlwaWNhbCBhbmQgYWNjZXB0ZWQgdmFsdWVzICovDQo+ID4gKwlpZiAoY3RsLT5wcHIgIT0g MSAmJiBjdGwtPnBwciAhPSAyICYmIGN0bC0+cHByICE9IDQpDQo+ID4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ID4gKwkvKg0KPiA+ICsJICogRW5hYmxlIGFsbCBJUlFzDQo+ID4gKwkgKi8NCj4gPiAr CWF4aV9pb3dyaXRlKEFESV9JUlFfTUFTS19PVVRfQUxMICYNCj4gPiArCQkgICAgfihBRElfSVJR X1NSQ19ORVdfTUVBU1VSIHwgQURJX0lSUV9TUkNfVEFDSF9FUlIgfA0KPiA+ICsJCSAgICAgIEFE SV9JUlFfU1JDX1BXTV9DSEFOR0VEIHwNCj4gPiBBRElfSVJRX1NSQ19URU1QX0lOQ1JFQVNFKSwN Cj4gPiArCQkgICAgQURJX1JFR19JUlFfTUFTSywgY3RsKTsNCj4gPiArDQo+ID4gKwkvKiBicmlu ZyB0aGUgZGV2aWNlIG91dCBvZiByZXNldCAqLw0KPiA+ICsJYXhpX2lvd3JpdGUoMHgwMSwgQURJ X1JFR19SU1ROLCBjdGwpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fY2hhbm5lbF9pbmZvICpheGlfZmFuX2Nv bnRyb2xfaW5mb1tdID0gew0KPiA+ICsJSFdNT05fQ0hBTk5FTF9JTkZPKHB3bSwgSFdNT05fUFdN X0lOUFVUKSwNCj4gPiArCUhXTU9OX0NIQU5ORUxfSU5GTyhmYW4sIEhXTU9OX0ZfSU5QVVQgfCBI V01PTl9GX0ZBVUxUIHwNCj4gPiBIV01PTl9GX0xBQkVMKSwNCj4gPiArCUhXTU9OX0NIQU5ORUxf SU5GTyh0ZW1wLCBIV01PTl9UX0lOUFVUIHwgSFdNT05fVF9MQUJFTCksDQo+ID4gKwlOVUxMDQo+ ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGh3bW9uX29wcyBheGlfZmFu X2NvbnRyb2xfaHdtb25fb3BzID0gew0KPiA+ICsJLmlzX3Zpc2libGUgPSBheGlfZmFuX2NvbnRy b2xfaXNfdmlzaWJsZSwNCj4gPiArCS5yZWFkID0gYXhpX2Zhbl9jb250cm9sX3JlYWQsDQo+ID4g Kwkud3JpdGUgPSBheGlfZmFuX2NvbnRyb2xfd3JpdGUsDQo+ID4gKwkucmVhZF9zdHJpbmcgPSBh eGlfZmFuX2NvbnRyb2xfcmVhZF9sYWJlbHMsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGh3bW9uX2NoaXBfaW5mbyBheGlfY2hpcF9pbmZvID0gew0KPiA+ICsJLm9w cyA9ICZheGlfZmFuX2NvbnRyb2xfaHdtb25fb3BzLA0KPiA+ICsJLmluZm8gPSBheGlfZmFuX2Nv bnRyb2xfaW5mbywNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCB1MzIgdmVyc2lv bl8xXzBfMCA9IEFESV9BWElfUENPUkVfVkVSKDEsIDAsICdhJyk7DQo+ID4gKw0KPiA+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBheGlfZmFuX2NvbnRyb2xfb2ZfbWF0Y2hbXSA9 IHsNCj4gPiArCXsgLmNvbXBhdGlibGUgPSAiYWRpLGF4aS1mYW4tY29udHJvbC0xLjAwLmEiLA0K PiA+ICsJCS5kYXRhID0gKHZvaWQgKikmdmVyc2lvbl8xXzBfMH0sDQo+ID4gKwl7fSwNCj4gPiAr fTsNCj4gPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXhpX2Zhbl9jb250cm9sX29mX21hdGNo KTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYXhpX2Zhbl9jb250cm9sX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBheGlfZmFuX2NvbnRy b2xfZGF0YSAqY3RsOw0KPiA+ICsJc3RydWN0IGNsayAqY2xrOw0KPiA+ICsJY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCAqaWQ7DQo+ID4gKwljb25zdCBjaGFyICpuYW1lID0gImF4aV9mYW5fY29u dHJvbCI7DQo+ID4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsNCj4gPiArCXUzMiB2ZXJzaW9uOw0K PiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlpZCA9IG9mX21hdGNoX25vZGUoYXhpX2Zhbl9j b250cm9sX29mX21hdGNoLCBwZGV2LQ0KPiA+ID5kZXYub2Zfbm9kZSk7DQo+ID4gKwlpZiAoIWlk KQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWN0bCA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LCBzaXplb2YoKmN0bCksIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKCFjdGwp DQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gKw0KPiA+ICsJY3RsLT5iYXNlID0gZGV2bV9w bGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOw0KPiA+ICsJaWYgKElTX0VSUihjdGwt PmJhc2UpKQ0KPiA+ICsJCXJldHVybiBQVFJfRVJSKGN0bC0+YmFzZSk7DQo+ID4gKw0KPiA+ICsJ Y2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsIE5VTEwpOw0KPiA+ICsJaWYgKElTX0VSUihj bGspKSB7DQo+ID4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2xrX2dldCBmYWlsZWQgd2l0aCAl bGRcbiIsDQo+ID4gUFRSX0VSUihjbGspKTsNCj4gPiArCQlyZXR1cm4gUFRSX0VSUihjbGspOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCWN0bC0+Y2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUoY2xrKTsN Cj4gPiArCWlmICghY3RsLT5jbGtfcmF0ZSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAr DQo+ID4gKwlkZXZfZGJnKCZwZGV2LT5kZXYsICJSZS1tYXBwZWQgZnJvbSAweCUwOGxsWCB0byAl cFxuIiwNCj4gPiArCQkodW5zaWduZWQgbG9uZyBsb25nKXJlcy0+c3RhcnQsIGN0bC0+YmFzZSk7 DQo+ID4gKw0KPiA+ICsJdmVyc2lvbiA9IGF4aV9pb3JlYWQoQURJX0FYSV9SRUdfVkVSU0lPTiwg Y3RsKTsNCj4gPiArCWlmIChBRElfQVhJX1BDT1JFX1ZFUl9NQUpPUih2ZXJzaW9uKSAhPQ0KPiA+ ICsJICAgIEFESV9BWElfUENPUkVfVkVSX01BSk9SKCgqKHUzMiAqKWlkLT5kYXRhKSkpIHsNCj4g PiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJNYWpvciB2ZXJzaW9uIG1pc21hdGNoLiBFeHBlY3Rl ZA0KPiA+ICVkLiUuMmQuJWMsIFJlcG9ydGVkICVkLiUuMmQuJWNcbiIsDQo+ID4gKwkJCUFESV9B WElfUENPUkVfVkVSX01BSk9SKCgqKHUzMiAqKWlkLT5kYXRhKSksDQo+ID4gKwkJCUFESV9BWElf UENPUkVfVkVSX01JTk9SKCgqKHUzMiAqKWlkLT5kYXRhKSksDQo+ID4gKwkJCUFESV9BWElfUENP UkVfVkVSX1BBVENIKCgqKHUzMiAqKWlkLT5kYXRhKSksDQo+ID4gKwkJCUFESV9BWElfUENPUkVf VkVSX01BSk9SKHZlcnNpb24pLA0KPiA+ICsJCQlBRElfQVhJX1BDT1JFX1ZFUl9NSU5PUih2ZXJz aW9uKSwNCj4gPiArCQkJQURJX0FYSV9QQ09SRV9WRVJfUEFUQ0godmVyc2lvbikpOw0KPiA+ICsJ CXJldHVybiAtRU5PREVWOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWN0bC0+aXJxID0gcGxhdGZv cm1fZ2V0X2lycShwZGV2LCAwKTsNCj4gPiArCWlmIChjdGwtPmlycSA8IDApDQo+ID4gKwkJcmV0 dXJuIGN0bC0+aXJxOw0KPiA+ICsNCj4gPiArCXJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9p cnEoJnBkZXYtPmRldiwgY3RsLT5pcnEsIE5VTEwsDQo+ID4gKwkJCQkJYXhpX2Zhbl9jb250cm9s X2lycV9oYW5kbGVyLA0KPiA+ICsJCQkJCUlSUUZfT05FU0hPVCB8DQo+ID4gSVJRRl9UUklHR0VS X0hJR0gsDQo+ID4gKwkJCQkJcGRldi0+ZHJpdmVyX292ZXJyaWRlLCBjdGwpOw0KPiA+ICsJaWYg KHJldCkgew0KPiA+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byByZXF1ZXN0IGFu IGlycSwgJWQiLA0KPiA+IHJldCk7DQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArCX0NCj4gPiAr DQo+ID4gKwlyZXQgPSBheGlfZmFuX2NvbnRyb2xfaW5pdChjdGwsIHBkZXYtPmRldi5vZl9ub2Rl KTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQg dG8gaW5pdGlhbGl6ZSBkZXZpY2VcbiIpOw0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJY3RsLT5oZGV2ID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9p bmZvKCZwZGV2LT5kZXYsDQo+ID4gKwkJCQkJCQkgbmFtZSwNCj4gPiArCQkJCQkJCSBjdGwsDQo+ ID4gKwkJCQkJCQkgJmF4aV9jaGlwX2luZm8NCj4gPiAsDQo+ID4gKwkJCQkJCQkgTlVMTCk7DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhjdGwtPmhkZXYpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBheGlfZmFuX2NvbnRyb2xf ZHJpdmVyID0gew0KPiA+ICsJLmRyaXZlciA9IHsNCj4gPiArCQkubmFtZSA9ICJheGlfZmFuX2Nv bnRyb2xfZHJpdmVyIiwNCj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBheGlfZmFuX2NvbnRyb2xf b2ZfbWF0Y2gsDQo+ID4gKwl9LA0KPiA+ICsJLnByb2JlID0gYXhpX2Zhbl9jb250cm9sX3Byb2Jl LA0KPiA+ICt9Ow0KPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aV9mYW5fY29udHJvbF9k cml2ZXIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigiTnVubyBTYSA8bnVuby5zYUBhbmFs b2cuY29tPiIpOw0KPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFuYWxvZyBEZXZpY2VzIEZhbiBD b250cm9sIEhETCBDT1JFIGRyaXZlciIpOw0KPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7DQoN Ci0tIA0KQW5hbG9nIERldmljZXMgR21iSCAgICAgIE90bC1BaWNoZXIgU3RyYXNzZSA2MC02NCAg ICAgIDgwODA3IE3DvG5jaGVuDQpTaXR6IGRlciBHZXNlbGxzY2hhZnQgTcO8bmNoZW4sIFJlZ2lz dGVyZ2VyaWNodCBNw7xuY2hlbiBIUkIgNDAzNjgsDQpHZXNjaMOkZnRzZsO8aHJlcjogU3RlZmFu IFN0ZXllcmwsIFRob21hcyBFZHdhcmQgQ3JpYmJlbiwgTWljaGFlbCBQYXVsDQpTb25kZWwNCg==