From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 81BC6C71133 for ; Fri, 25 Aug 2023 09:41:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235767AbjHYJko (ORCPT ); Fri, 25 Aug 2023 05:40:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233726AbjHYJk1 (ORCPT ); Fri, 25 Aug 2023 05:40:27 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id F3BE21FD5; Fri, 25 Aug 2023 02:40:21 -0700 (PDT) Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.77 with qID 37P9dZgwD031842, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36505.realtek.com.tw[172.21.6.25]) by rtits2.realtek.com.tw (8.15.2/2.81/5.90) with ESMTPS id 37P9dZgwD031842 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 25 Aug 2023 17:39:35 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) by RTEXH36505.realtek.com.tw (172.21.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.32; Fri, 25 Aug 2023 17:39:58 +0800 Received: from RTEXMBS04.realtek.com.tw (172.21.6.97) by RTEXMBS01.realtek.com.tw (172.21.6.94) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Fri, 25 Aug 2023 17:39:58 +0800 Received: from RTEXMBS04.realtek.com.tw ([fe80::e138:e7f1:4709:ff4d]) by RTEXMBS04.realtek.com.tw ([fe80::e138:e7f1:4709:ff4d%5]) with mapi id 15.01.2375.007; Fri, 25 Aug 2023 17:39:58 +0800 From: =?utf-8?B?U3RhbmxleSBDaGFuZ1vmmIzogrLlvrdd?= To: Chanwoo Choi , MyungJoo Ham CC: Chanwoo Choi , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" Subject: RE: [PATCH v1 1/2] extcon: add Realtek DHC RTD SoC Type-C driver Thread-Topic: [PATCH v1 1/2] extcon: add Realtek DHC RTD SoC Type-C driver Thread-Index: AQHZ1ONvA6JhKCipAECuqR11IG4J/a/5VrCAgAFhXIA= Date: Fri, 25 Aug 2023 09:39:58 +0000 Message-ID: <46e3793f6c594b98ac71dbe4b7d75463@realtek.com> References: <20230822102846.4683-1-stanley_chang@realtek.com> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.21.190.159] x-kse-serverinfo: RTEXMBS01.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-ServerInfo: RTEXH36505.realtek.com.tw, 9 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-Antivirus-Interceptor-Info: fallback X-KSE-AntiSpam-Interceptor-Info: fallback Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQ2hhbndvbywNCg0KPiANCj4gQWxtb3N0IGNvZGUgbG9va3MgZ29vZCB0byBtZS4gSSBhZGQg c29tZSBjb21tZW50IGJlbG93LiBQbGVhc2UgY2hlY2sNCj4gdGhlbS4NCj4gDQpUaGFua3MgZm9y IHlvdXIgcmV2aWV3Lg0KPiANCj4gT24gMjMuIDguIDIyLiAxOToyOCwgU3RhbmxleSBDaGFuZyB3 cm90ZToNCj4gPiBUaGlzIHBhdGNoIGFkZHMgdGhlIGV4dGNvbiBkcml2ZXIgZm9yIFJlYWx0ZWsg REhDIChkaWdpdGFsIGhvbWUgY2VudGVyKQ0KPiA+IFJURCBTb0NzIHR5cGUtYyBtb2R1bGUuIFRo aXMgY2FuIGJlIHVzZWQgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlIHBvcnQgaXMNCj4gPiBjb25maWd1 cmVkIGFzIGEgZG93bnN0cmVhbSBvciB1cHN0cmVhbSBmYWNpbmcgcG9ydC4gQW5kIG5vdGlmeSB0 aGUgc3RhdHVzDQo+ID4gb2YgZXh0Y29uIHRvIGxpc3RlbmVycy4NCj4gPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IFN0YW5sZXkgQ2hhbmcgPHN0YW5sZXlfY2hhbmdAcmVhbHRlay5jb20+DQo+ID4gLS0t DQo+ID4gIGRyaXZlcnMvZXh0Y29uL0tjb25maWcgICAgICAgICAgICAgfCAgICA5ICsNCj4gPiAg ZHJpdmVycy9leHRjb24vTWFrZWZpbGUgICAgICAgICAgICB8ICAgIDEgKw0KPiA+ICBkcml2ZXJz L2V4dGNvbi9leHRjb24tcnRrLXR5cGUtYy5jIHwgMTc5OQ0KPiArKysrKysrKysrKysrKysrKysr KysrKysrKysrDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMTgwOSBpbnNlcnRpb25zKCspDQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2V4dGNvbi9leHRjb24tcnRrLXR5cGUtYy5jDQo+ ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9leHRjb24vS2NvbmZpZyBiL2RyaXZlcnMvZXh0 Y29uL0tjb25maWcNCj4gPiBpbmRleCAwZWYxOTcxZDIyYmIuLmQ2NzA0MzQzMjFmMiAxMDA2NDQN Cj4gPiAtLS0gYS9kcml2ZXJzL2V4dGNvbi9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVycy9leHRj b24vS2NvbmZpZw0KPiA+IEBAIC0xOTAsNCArMTkwLDEzIEBAIGNvbmZpZyBFWFRDT05fVVNCQ19U VVNCMzIwDQo+ID4gICAgICAgICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBVU0Ig VHlwZSBDIGNhYmxlIGRldGVjdGlvbg0KPiBleHRjb24NCj4gPiAgICAgICAgIHN1cHBvcnQgdXNp bmcgYSBUVVNCMzIwLg0KPiA+DQo+ID4gK2NvbmZpZyBFWFRDT05fUlRLX1RZUEVfQw0KPiA+ICsg ICAgIHRyaXN0YXRlICJSZWFsdGVrIFJURCBTb0MgZXh0Y29uIFR5cGUtQyBEcml2ZXIiDQo+ID4g KyAgICAgZGVwZW5kcyBvbiBBUkNIX1JFQUxURUsgfHwgQ09NUElMRV9URVNUDQo+ID4gKyAgICAg aGVscA0KPiA+ICsgICAgICAgU2F5IFkgaGVyZSB0byBlbmFibGUgZXh0Y29uIHN1cHBvcnQgZm9y IFVTQiBUeXBlIEMgY2FibGUgZGV0ZWN0aW9uDQo+ID4gKyAgICAgICB3aGVuIHVzaW5nIHRoZSBS ZWFsdGVrIFJURCBTb0MgVVNCIFR5cGUtQyBwb3J0Lg0KPiA+ICsgICAgICAgVGhlIERIQyAoRGln aXRhbCBIb21lIEh1YikgUlREIHNlcmllcyBTb0MgY29udGFpbnMgYSB0eXBlIGMNCj4gbW9kdWxl Lg0KPiA+ICsgICAgICAgVGhpcyBkcml2ZXIgd2lsbCBkZXRlY3QgdGhlIHN0YXR1cyBvZiB0aGUg dHlwZS1jIHBvcnQuDQo+ID4gKw0KPiA+ICBlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2V4dGNvbi9NYWtlZmlsZSBiL2RyaXZlcnMvZXh0Y29uL01ha2VmaWxlDQo+ID4gaW5kZXggMWIz OTBkOTM0Y2E5Li5mNzc5YWRiNWU0YzcgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9leHRjb24v TWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL2V4dGNvbi9NYWtlZmlsZQ0KPiA+IEBAIC0yNSwz ICsyNSw0IEBAIG9iai0kKENPTkZJR19FWFRDT05fU001NTAyKSArPSBleHRjb24tc201NTAyLm8N Cj4gPiAgb2JqLSQoQ09ORklHX0VYVENPTl9VU0JfR1BJTykgICAgICAgICs9IGV4dGNvbi11c2It Z3Bpby5vDQo+ID4gIG9iai0kKENPTkZJR19FWFRDT05fVVNCQ19DUk9TX0VDKSArPSBleHRjb24t dXNiYy1jcm9zLWVjLm8NCj4gPiAgb2JqLSQoQ09ORklHX0VYVENPTl9VU0JDX1RVU0IzMjApICs9 IGV4dGNvbi11c2JjLXR1c2IzMjAubw0KPiA+ICtvYmotJChDT05GSUdfRVhUQ09OX1JUS19UWVBF X0MpICs9IGV4dGNvbi1ydGstdHlwZS1jLm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9leHRj b24vZXh0Y29uLXJ0ay10eXBlLWMuYw0KPiBiL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1ydGstdHlw ZS1jLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4u MDRkNGQ1MTI4YmRiDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZXh0Y29u L2V4dGNvbi1ydGstdHlwZS1jLmMNCj4gPiBAQCAtMCwwICsxLDE3OTkgQEANCj4gPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiArLyoNCj4gPiArICogICogZXh0Y29u LXJ0ay10eXBlLWMuYyAtIFJlYWx0ZWsgRXh0Y29uIFR5cGUgQyBkcml2ZXINCj4gPiArICoNCj4g PiArICogQ29weXJpZ2h0IChDKSAyMDIzIFJlYWx0ZWsgU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlv bg0KPiA+ICsgKg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgv c2xhYi5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gKyNp bmNsdWRlIDxsaW51eC9vZi5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0K PiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9n cGlvLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pby5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgv aW50ZXJydXB0Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPg0KPiA+ICsjaW5j bHVkZSA8bGludXgvc3VzcGVuZC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPg0K PiA+ICsjaW5jbHVkZSA8bGludXgvZXh0Y29uLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9leHRj b24tcHJvdmlkZXIuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3N5c19zb2MuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L252bWVtLWNvbnN1bWVyLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC91c2Iv b3RnLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC91c2IvdHlwZWMuaD4NCj4gPiArDQo+ID4gK3N0 cnVjdCBjY19wYXJhbSB7DQo+ID4gKyAgICAgdTMyIHJwXzRwN2tfY29kZTsNCj4gPiArICAgICB1 MzIgcnBfMzZrX2NvZGU7DQo+ID4gKyAgICAgdTMyIHJwXzEya19jb2RlOw0KPiA+ICsgICAgIHUz MiByZF9jb2RlOw0KPiA+ICsgICAgIHUzMiByYV9jb2RlOw0KPiA+ICsgICAgIHUzMiB2cmVmXzJw NnY7DQo+ID4gKyAgICAgdTMyIHZyZWZfMXAyM3Y7DQo+ID4gKyAgICAgdTMyIHZyZWZfMHA4djsN Cj4gPiArICAgICB1MzIgdnJlZl8wcDY2djsNCj4gPiArICAgICB1MzIgdnJlZl8wcDR2Ow0KPiA+ ICsgICAgIHUzMiB2cmVmXzBwMnY7DQo+ID4gKyAgICAgdTMyIHZyZWZfMV8xcDZ2Ow0KPiA+ICsg ICAgIHUzMiB2cmVmXzBfMXA2djsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCB0eXBlX2Nf Y2ZnIHsNCj4gPiArICAgICBpbnQgcGFyYW1ldGVyX3ZlcjsgLyogUGFyYW1ldGVyIHZlcnNpb24g Ki8NCj4gPiArICAgICBpbnQgY2NfZGZwX21vZGU7DQo+ID4gKyAgICAgc3RydWN0IGNjX3BhcmFt IGNjMV9wYXJhbTsNCj4gPiArICAgICBzdHJ1Y3QgY2NfcGFyYW0gY2MyX3BhcmFtOw0KPiA+ICsN Cj4gPiArICAgICB1MzIgZGVib3VuY2VfdmFsOw0KPiA+ICsgICAgIGJvb2wgdXNlX2RlZmFsdXRf cGFyYW1ldGVyOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IHR5cGVfY19kYXRhIHsNCj4g PiArICAgICB2b2lkIF9faW9tZW0gKnJlZ19iYXNlOw0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2Ug KmRldjsNCj4gPiArICAgICBzdHJ1Y3QgZXh0Y29uX2RldiAqZWRldjsNCj4gPiArDQo+ID4gKyAg ICAgdTMyIGlycTsNCj4gPiArDQo+ID4gKyAgICAgLyogcmQgY29udHJvbCBHUElPIG9ubHkgZm9y IHJ0ZDEyOTUgKi8NCj4gPiArICAgICB1bnNpZ25lZCBpbnQgcmRfY3RybF9ncGlvOw0KPiA+ICsN Cj4gPiArICAgICAvKiBQYXJhbWV0ZXJzICovDQo+ID4gKyAgICAgc3RydWN0IHR5cGVfY19jZmcg KnR5cGVfY19jZmc7DQo+ID4gKyAgICAgdTMyIGRmcF9tb2RlX3JwX2VuOw0KPiA+ICsgICAgIHUz MiB1ZnBfbW9kZV9yZF9lbjsNCj4gPiArICAgICB1MzIgY2MxX2NvZGU7DQo+ID4gKyAgICAgdTMy IGNjMl9jb2RlOw0KPiA+ICsgICAgIHUzMiBjYzFfdnJlZjsNCj4gPiArICAgICB1MzIgY2MyX3Zy ZWY7DQo+ID4gKyAgICAgdTMyIGRlYm91bmNlOyAvKiAxYiwxdXMgN2YsNC43dXMgKi8NCj4gPiAr DQo+ID4gKyAgICAgLyogdHlwZV9jIHN0YXRlICovDQo+ID4gKyAgICAgaW50IGNvbm5lY3RfY2hh bmdlOw0KPiA+ICsjZGVmaW5lIENPTk5FQ1RfQ0hBTkdFIDENCj4gPiArI2RlZmluZSBDT05ORUNU X05PX0NIQU5HRSAwDQo+ID4gKyAgICAgaW50IGNjX21vZGU7IC8qIGNjIGlzIGhvc3Qgb3IgZGV2 aWNlICovDQo+ID4gKyNkZWZpbmUgSU5fSE9TVF9NT0RFIDB4MTANCj4gPiArI2RlZmluZSBJTl9E RVZJQ0VfTU9ERSAweDIwDQo+ID4gKyAgICAgaW50IGlzX2F0dGFjaDsNCj4gPiArI2RlZmluZSBJ Tl9BVFRBQ0ggMQ0KPiA+ICsjZGVmaW5lIFRPX0FUVEFDSCAxDQo+ID4gKyNkZWZpbmUgSU5fREVU QUNIIDANCj4gPiArI2RlZmluZSBUT19ERVRBQ0ggMA0KPiA+ICsgICAgIGludCBhdF9jYzE7DQo+ ID4gKyNkZWZpbmUgQVRfQ0MxIDENCj4gPiArI2RlZmluZSBBVF9DQzIgMA0KPiA+ICsNCj4gPiAr ICAgICB1MzIgaW50X3N0YXR1czsNCj4gPiArICAgICB1MzIgY2Nfc3RhdHVzOw0KPiA+ICsgICAg IC8qIHByb3RlY3QgdGhlIGRhdGEgbWVtYmVyICovDQo+ID4gKyAgICAgc3BpbmxvY2tfdCBsb2Nr Ow0KPiA+ICsgICAgIHN0cnVjdCBkZWxheWVkX3dvcmsgZGVsYXllZF93b3JrOw0KPiA+ICsNCj4g PiArICAgICBib29sIHJkX2VuX2F0X2ZpcnN0Ow0KPiA+ICsNCj4gPiArICAgICBzdHJ1Y3QgZGVu dHJ5ICpkZWJ1Z19kaXI7DQo+ID4gKw0KPiA+ICsjaWZkZWYgQ09ORklHX1RZUEVDDQo+ID4gKyAg ICAgc3RydWN0IHR5cGVjX3BvcnQgKnBvcnQ7DQo+ID4gKyNlbmRpZiAvKiBDT05GSUdfVFlQRUMg Ki8NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qIFR5cGUgQyByZWdpc3RlciBvZmZzZXQgKi8NCj4g PiArI2RlZmluZSBVU0JfVFlQRUNfQ1RSTF9DQzFfMCAweDANCj4gPiArI2RlZmluZSBVU0JfVFlQ RUNfQ1RSTF9DQzFfMSAweDQNCj4gPiArI2RlZmluZSBVU0JfVFlQRUNfQ1RSTF9DQzJfMCAweDgN Cj4gPiArI2RlZmluZSBVU0JfVFlQRUNfQ1RSTF9DQzJfMSAweEMNCj4gPiArI2RlZmluZSBVU0Jf VFlQRUNfU1RTICAgICAgICAweDEwDQo+ID4gKyNkZWZpbmUgVVNCX1RZUEVDX0NUUkwgICAgICAg MHgxNA0KPiA+ICsjZGVmaW5lIFVTQl9EQlVTX1BXUl9DVFJMICAgIDB4MTgNCj4gDQo+IG5pdHBp Y2suDQo+IEFib3ZlIGRlZmludGlvbnMgdXNlcyAnc3BhY2UnIHRvIGtlZXAgdGhlIGxlZnQtYWxp Z25lZCBvZiB2YWx1ZS4NCj4gQnV0LCBiZWxvdyBkZWZpbnRpb25zIGRvZXNuJ3Qga2VlcCB0aGUg bGVmdC1hbGlnbmVkIG9mIHZhbHVlLg0KPiANCj4gSSByZWNvbW1lbmQgdGhhdCB5b3UgYmV0dGVy IHRvIHVzZSB0aGUgc2FtZSBzdHlsZSBmb3IgdGhlIHJlYWRhYmlsaXR5Lg0KDQpPaywgSSB3aWxs IHJldmlzZS4NCg0KPiA+ICsNCj4gPiArI2RlZmluZSBFTkFCTEVfQ0MxIDB4MQ0KPiA+ICsjZGVm aW5lIEVOQUJMRV9DQzIgMHgyDQo+ID4gKyNkZWZpbmUgRElTQUJMRV9DQyAweDANCj4gPiArDQo+ ID4gKy8qIEJpdCBtYXBwaW5nIFVTQl9UWVBFQ19DVFJMX0NDMV8wIGFuZCBVU0JfVFlQRUNfQ1RS TF9DQzJfMCAqLw0KPiA+ICsjZGVmaW5lIFBMUl9FTiBCSVQoMjkpDQo+ID4gKyNkZWZpbmUgQ0Nf U1dJVENIX01BU0sgKEJJVCgyOSkgfCBCSVQoMjgpIHwgQklUKDI3KSkNCj4gPiArI2RlZmluZSBD Q19DT0RFX01BU0sgKDB4ZmZmZmYgPDwgNykNCj4gPiArI2RlZmluZSBycDRwa19jb2RlKHZhbCkg KCgweDFmICYgKHZhbCkpIDw8IDIyKQ0KPiA+ICsjZGVmaW5lIGNvZGVfcnA0cGsodmFsKSAoKCh2 YWwpID4+IDIyKSAmIDB4MWYpDQo+ID4gKyNkZWZpbmUgcnAzNmtfY29kZSh2YWwpICgoMHgxZiAm ICh2YWwpKSA8PCAxNykNCj4gPiArI2RlZmluZSBjb2RlX3JwMzZrKHZhbCkgKCgodmFsKSA+PiAx NykgJiAweDFmKQ0KPiA+ICsjZGVmaW5lIHJwMTJrX2NvZGUodmFsKSAoKDB4MWYgJiAodmFsKSkg PDwgMTIpDQo+ID4gKyNkZWZpbmUgY29kZV9ycDEyayh2YWwpICgoKHZhbCkgPj4gMTIpICYgMHgx ZikNCj4gPiArI2RlZmluZSByZF9jb2RlKHZhbCkgKCgweDFmICYgKHZhbCkpIDw8IDcpDQo+ID4g KyNkZWZpbmUgY29kZV9yZCh2YWwpICgoKHZhbCkgPj4gNykgJiAweDFmKQ0KPiA+ICsjZGVmaW5l IGRmcF9tb2RlKHZhbCkgKCgweDMgJiAodmFsKSkgPDwgNSkNCj4gPiArI2RlZmluZSBFTl9SUDRQ N0sgQklUKDQpDQo+ID4gKyNkZWZpbmUgRU5fUlAzNksgQklUKDMpDQo+ID4gKyNkZWZpbmUgRU5f UlAxMksgQklUKDIpDQo+ID4gKyNkZWZpbmUgRU5fUkQgQklUKDEpDQo+ID4gKyNkZWZpbmUgRU5f Q0NfREVUIEJJVCgwKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBDQ19NT0RFX1VGUCAweDANCj4gPiAr I2RlZmluZSBDQ19NT0RFX0RGUF9VU0IgMHgxDQo+ID4gKyNkZWZpbmUgQ0NfTU9ERV9ERlBfMV81 IDB4Mg0KPiA+ICsjZGVmaW5lIENDX01PREVfREZQXzNfMCAweDMNCj4gPiArDQo+ID4gKy8qDQo+ ID4gKyAqIFBBUkFNRVRFUl9WMDoNCj4gPiArICogIFJlYWx0ZWsgS3lsaW4gICAgcnRkMTI5NQ0K PiA+ICsgKiAgUmVhbHRlayBIZXJjdWxlcyBydGQxMzk1DQo+ID4gKyAqICBSZWFsdGVrIFRob3Ig ICAgIHJ0ZDE2MTkNCj4gPiArICogIFJlYWx0ZWsgSGFuayAgICAgcnRkMTMxOQ0KPiA+ICsgKiAg UmVhbHRlayBHcm9vdCAgICBydGQxMzEyYw0KPiA+ICsgKiBQQVJBTUVURVJfVjE6DQo+ID4gKyAq ICBSZWFsdGVrIFN0YXJrICAgIHJ0ZDE2MTliDQo+ID4gKyAqICBSZWFsdGVrIFBhcmtlciAgIHJ0 ZDEzMTlkDQo+ID4gKyAqICBSZWFsdGVrIERhbnZlcnMgIHJ0ZDEzMTVlDQo+ID4gKyAqLw0KPiA+ ICtlbnVtIHBhcmFtZXRlcl92ZXJzaW9uIHsNCj4gPiArICAgICBQQVJBTUVURVJfVjAgPSAwLA0K PiA+ICsgICAgIFBBUkFNRVRFUl9WMSA9IDEsDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiBCaXQg bWFwcGluZyBVU0JfVFlQRUNfQ1RSTF9DQzFfMSBhbmQgVVNCX1RZUEVDX0NUUkxfQ0MyXzEgKi8N Cj4gPiArI2RlZmluZSBWMF92cmVmXzJwNnYodmFsKSAoKDB4ZiAmICh2YWwpKSA8PCAyNikgLyog Qml0IDI5IGZvciBncm9vdCAqLw0KPiA+ICsjZGVmaW5lIFYwX3ZyZWZfMXAyM3YodmFsKSAoKDB4 ZiAmICh2YWwpKSA8PCAyMikNCj4gPiArI2RlZmluZSBWMF92cmVmXzBwOHYodmFsKSAoKDB4ZiAm ICh2YWwpKSA8PCAxOCkNCj4gPiArI2RlZmluZSBWMF92cmVmXzBwNjZ2KHZhbCkgKCgweGYgJiAo dmFsKSkgPDwgMTQpDQo+ID4gKyNkZWZpbmUgVjBfdnJlZl8wcDR2KHZhbCkgKCgweDcgJiAodmFs KSkgPDwgMTEpDQo+ID4gKyNkZWZpbmUgVjBfdnJlZl8wcDJ2KHZhbCkgKCgweDcgJiAodmFsKSkg PDwgOCkNCj4gPiArI2RlZmluZSBWMF92cmVmXzFfMXA2dih2YWwpICgoMHhmICYgKHZhbCkpIDw8 IDQpDQo+ID4gKyNkZWZpbmUgVjBfdnJlZl8wXzFwNnYodmFsKSAoKDB4ZiAmICh2YWwpKSA8PCAw KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBWMF9kZWNvZGVfMnA2dih2YWwpICgoKHZhbCkgPj4gMjYp ICYgMHhmKSAvKiBCaXQgMjkgZm9yIGdyb290ICovDQo+ID4gKyNkZWZpbmUgVjBfZGVjb2RlXzFw MjN2KHZhbCkgKCgodmFsKSA+PiAyMikgJiAweGYpDQo+ID4gKyNkZWZpbmUgVjBfZGVjb2RlXzBw OHYodmFsKSAoKCh2YWwpID4+IDE4KSAmIDB4ZikNCj4gPiArI2RlZmluZSBWMF9kZWNvZGVfMHA2 NnYodmFsKSAoKCh2YWwpID4+IDE0KSAmIDB4ZikNCj4gPiArI2RlZmluZSBWMF9kZWNvZGVfMHA0 dih2YWwpICgoKHZhbCkgPj4gMTEpICYgMHg3KQ0KPiA+ICsjZGVmaW5lIFYwX2RlY29kZV8wcDJ2 KHZhbCkgKCgodmFsKSA+PiA4KSAmIDB4NykNCj4gPiArI2RlZmluZSBWMF9kZWNvZGVfMV8xcDZ2 KHZhbCkgKCgodmFsKSA+PiA0KSAmIDB4ZikNCj4gPiArI2RlZmluZSBWMF9kZWNvZGVfMF8xcDZ2 KHZhbCkgKCgodmFsKSA+PiAwKSAmIDB4ZikNCj4gPiArDQo+ID4gKy8qIG5ldyBCaXQgbWFwcGlu ZyBVU0JfVFlQRUNfQ1RSTF9DQzFfMSBhbmQNCj4gVVNCX1RZUEVDX0NUUkxfQ0MyXzEgKi8NCj4g PiArI2RlZmluZSBWMV92cmVmXzJwNnYodmFsKSAoKDB4ZiAmICh2YWwpKSA8PCAyOCkNCj4gPiAr I2RlZmluZSBWMV92cmVmXzFwMjN2KHZhbCkgKCgweGYgJiAodmFsKSkgPDwgMjQpDQo+ID4gKyNk ZWZpbmUgVjFfdnJlZl8wcDh2KHZhbCkgKCgweGYgJiAodmFsKSkgPDwgMjApDQo+ID4gKyNkZWZp bmUgVjFfdnJlZl8wcDY2dih2YWwpICgoMHhmICYgKHZhbCkpIDw8IDE2KQ0KPiA+ICsjZGVmaW5l IFYxX3ZyZWZfMHA0dih2YWwpICgoMHhmICYgKHZhbCkpIDw8IDEyKQ0KPiA+ICsjZGVmaW5lIFYx X3ZyZWZfMHAydih2YWwpICgoMHhmICYgKHZhbCkpIDw8IDgpDQo+ID4gKyNkZWZpbmUgVjFfdnJl Zl8xXzFwNnYodmFsKSAoKDB4ZiAmICh2YWwpKSA8PCA0KQ0KPiA+ICsjZGVmaW5lIFYxX3ZyZWZf MF8xcDZ2KHZhbCkgKCgweGYgJiAodmFsKSkgPDwgMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgVjFf ZGVjb2RlXzJwNnYodmFsKSAoKCh2YWwpID4+IDI4KSAmIDB4ZikNCj4gPiArI2RlZmluZSBWMV9k ZWNvZGVfMXAyM3YodmFsKSAoKCh2YWwpID4+IDI0KSAmIDB4ZikNCj4gPiArI2RlZmluZSBWMV9k ZWNvZGVfMHA4dih2YWwpICgoKHZhbCkgPj4gMjApICYgMHhmKQ0KPiA+ICsjZGVmaW5lIFYxX2Rl Y29kZV8wcDY2dih2YWwpICgoKHZhbCkgPj4gMTYpICYgMHhmKQ0KPiA+ICsjZGVmaW5lIFYxX2Rl Y29kZV8wcDR2KHZhbCkgKCgodmFsKSA+PiAxMikgJiAweGYpDQo+ID4gKyNkZWZpbmUgVjFfZGVj b2RlXzBwMnYodmFsKSAoKCh2YWwpID4+IDgpICYgMHhmKQ0KPiA+ICsjZGVmaW5lIFYxX2RlY29k ZV8xXzFwNnYodmFsKSAoKCh2YWwpID4+IDQpICYgMHhmKQ0KPiA+ICsjZGVmaW5lIFYxX2RlY29k ZV8wXzFwNnYodmFsKSAoKCh2YWwpID4+IDApICYgMHhmKQ0KPiA+ICsNCj4gPiArLyogQml0IG1h cHBpbmcgVVNCX1RZUEVDX1NUUyAqLw0KPiA+ICsjZGVmaW5lIERFVF9TVFMgMHg3DQo+ID4gKyNk ZWZpbmUgQ0MxX0RFVF9TVFMgKERFVF9TVFMpDQo+ID4gKyNkZWZpbmUgQ0MyX0RFVF9TVFMgKERF VF9TVFMgPDwgMykNCj4gPiArI2RlZmluZSBERVRfU1RTX1JBIDB4MQ0KPiA+ICsjZGVmaW5lIERF VF9TVFNfUkQgMHgzDQo+ID4gKyNkZWZpbmUgREVUX1NUU19SUCAweDENCj4gPiArI2RlZmluZSBD QzFfREVUX1NUU19SQSAoREVUX1NUU19SQSkNCj4gPiArI2RlZmluZSBDQzFfREVUX1NUU19SRCAo REVUX1NUU19SRCkNCj4gPiArI2RlZmluZSBDQzFfREVUX1NUU19SUCAoREVUX1NUU19SUCkNCj4g PiArI2RlZmluZSBDQzJfREVUX1NUU19SQSAoREVUX1NUU19SQSA8PCAzKQ0KPiA+ICsjZGVmaW5l IENDMl9ERVRfU1RTX1JEIChERVRfU1RTX1JEIDw8IDMpDQo+ID4gKyNkZWZpbmUgQ0MyX0RFVF9T VFNfUlAgKERFVF9TVFNfUlAgPDwgMykNCj4gPiArDQo+ID4gKy8qIEJpdCBtYXBwaW5nIFVTQl9U WVBFQ19DVFJMICovDQo+ID4gKyNkZWZpbmUgQ0MyX0lOVF9FTiBCSVQoMTEpDQo+ID4gKyNkZWZp bmUgQ0MxX0lOVF9FTiBCSVQoMTApDQo+ID4gKyNkZWZpbmUgQ0MyX0lOVF9TVFMgQklUKDkpDQo+ ID4gKyNkZWZpbmUgQ0MxX0lOVF9TVFMgQklUKDgpDQo+ID4gKyNkZWZpbmUgREVCT1VOQ0VfVElN RV9NQVNLIDB4ZmYNCj4gPiArI2RlZmluZSBERUJPVU5DRV9FTiBCSVQoMCkNCj4gPiArI2RlZmlu ZSBFTkFCTEVfVFlQRV9DX0RFVEVDVCAoQ0MxX0lOVF9FTiB8IENDMl9JTlRfRU4pDQo+ID4gKyNk ZWZpbmUgQUxMX0NDX0lOVF9TVFMgKENDMV9JTlRfU1RTIHwgQ0MyX0lOVF9TVFMpDQo+ID4gKw0K PiA+ICsvKiBQYXJhbWV0ZXIgKi8NCj4gPiArI2RlZmluZSBERVRFQ1RfVElNRSA1MCAvKiBtcyAq Lw0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCB1c2JfdHlwZV9jX2NhYmxl W10gPSB7DQo+ID4gKyAgICAgRVhUQ09OX1VTQiwNCj4gPiArICAgICBFWFRDT05fVVNCX0hPU1Qs DQo+ID4gKyAgICAgRVhUQ09OX05PTkUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIHVzYl9k YXRhX3JvbGVzIHsNCj4gPiArICAgICBEUl9OT05FLA0KPiA+ICsgICAgIERSX0hPU1QsDQo+ID4g KyAgICAgRFJfREVWSUNFLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVj dCBzb2NfZGV2aWNlX2F0dHJpYnV0ZSBydGtfc29jX2t5bGluW10gPSB7DQo+ID4gKyAgICAgeyAu ZmFtaWx5ID0gIlJlYWx0ZWsgS3lsaW4iLCB9LA0KPiA+ICsgICAgIHsgLyogZW1wdHkgKi8gfQ0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGludCBydGQxMjl4X3N3aXRjaF90eXBlX2NfcGx1 Z19jb25maWcoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkcl9tb2RlLCBpbnQgY2MpDQo+ID4gK3sN Cj4gPiArICAgICB2b2lkIF9faW9tZW0gKnJlZyA9IHR5cGVfYy0+cmVnX2Jhc2UgKyBVU0JfVFlQ RUNfQ1RSTF9DQzFfMDsNCj4gPiArICAgICBpbnQgdmFsX2NjOw0KPiA+ICsNCj4gPiArI2RlZmlu ZSBUWVBFX0NfRU5fU1dJVENIIEJJVCgyOSkNCj4gPiArI2RlZmluZSBUWVBFX0NfVFhSWF9TRUwg KEJJVCgyOCkgfCBCSVQoMjcpKQ0KPiA+ICsjZGVmaW5lIFRZUEVfQ19TV0lUQ0hfTUFTSyAoVFlQ RV9DX0VOX1NXSVRDSCB8IFRZUEVfQ19UWFJYX1NFTCkNCj4gPiArI2RlZmluZSBUWVBFX0NfRU5B QkxFX0NDMSBUWVBFX0NfRU5fU1dJVENIDQo+ID4gKyNkZWZpbmUgVFlQRV9DX0VOQUJMRV9DQzIg KFRZUEVfQ19FTl9TV0lUQ0ggfCBUWVBFX0NfVFhSWF9TRUwpDQo+ID4gKyNkZWZpbmUgVFlQRV9D X0RJU0FCTEVfQ0MgflRZUEVfQ19TV0lUQ0hfTUFTSw0KPiA+ICsNCj4gPiArICAgICB2YWxfY2Mg PSByZWFkbChyZWcpOw0KPiANCj4gSSdkIGxpa2UgeW91IHRvIHVzZSByZWdtYXAgaW50ZXJmYWNl IHRvIGFjY2VzcyB0aGUgcmVnaXN0ZXINCj4gYnkgdXNpbmcgcmVnbWFwX3JlYWQsIHJlZ21hcF93 cml0ZS4gWW91IGNhbiBjcmVhdGUgdGhlIHJlZ21hcCBpbnN0YW5jZQ0KPiB2aWEgZGV2bV9yZWdt YXBfaW5pdF9tbWlvKCkgb24gcHJvYmUgaW5zdGVhZCBvZiB1c2luZyAndHlwZV9jLT5yZWdfYmFz ZScNCj4gYXQgdGhlIG11bHRpcGUgcG9pbnQuDQo+IA0KPiBGb3IgZXhhbXBsZSwNCj4gICAgICAg ICBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBydGtfcmVnbWFwX2NvbmZpZyA9IHsNCj4gICAgICAgICAg ICAgICAgIC5yZWdfYml0cyA9IDMyLA0KPiAgICAgICAgICAgICAgICAgLnZhbF9iaXRzID0gMzIs DQo+ICAgICAgICAgfTsNCj4gDQo+ICAgICAgICAgdm9pZCBfX2lvbWVtICpiYXNlOw0KPiANCj4g ICAgICAgICBiYXNlID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRl diwgMCwgJnJlcyk7DQo+ICAgICAgICAgaWYgKElTX0VSUihiYXNlKSkNCj4gICAgICAgICAgICAg ICAgIHJldHVybiBQVFJfRVJSKGJhc2UpOw0KPiANCj4gICAgICAgICByZWdtYXAgPSBkZXZtX3Jl Z21hcF9pbml0X21taW8oZGV2LCBiYXNlLA0KPiAmcnRrX3JlZ21hcF9jb25maWcpOw0KPiANCj4g ICAgICAgICAtLS0NCj4gDQo+ICAgICAgICAgQW5kIHRoZW4ganVzdCBjYWxsIHJlZ21hcF9yZWFk IHdpdGhvdXQgYW55IGNhbGN1bGF0aW9uIGJldHdlZW4NCj4gICAgICAgICBiYXNlIGFkZHJlc3Mg YW5kIHNwZWNpZmljIHJlZ2lzdGVyLg0KPiANCj4gICAgICAgICByZWdtYXBfcmVhZChyZWdtYXAs IFVTQl9UWVBFQ19DVFJMX0NDMV8wKQ0KDQpJIHdpbGwgc3R1ZHkgdGhpcyBtZXRob2QuDQoNCj4g DQo+ID4gKyAgICAgdmFsX2NjICY9IH5UWVBFX0NfU1dJVENIX01BU0s7DQo+ID4gKw0KPiA+ICsg ICAgIGlmIChjYyA9PSBESVNBQkxFX0NDKSB7DQo+ID4gKyAgICAgICAgICAgICB2YWxfY2MgJj0g VFlQRV9DX0RJU0FCTEVfQ0M7DQo+ID4gKyAgICAgfSBlbHNlIGlmIChjYyA9PSBFTkFCTEVfQ0Mx KSB7DQo+ID4gKyAgICAgICAgICAgICB2YWxfY2MgfD0gVFlQRV9DX0VOQUJMRV9DQzE7DQo+ID4g KyAgICAgfSBlbHNlIGlmIChjYyA9PSBFTkFCTEVfQ0MyKSB7DQo+ID4gKyAgICAgICAgICAgICB2 YWxfY2MgfD0gVFlQRV9DX0VOQUJMRV9DQzI7DQo+ID4gKyAgICAgfSBlbHNlIHsNCj4gPiArICAg ICAgICAgICAgIGRldl9lcnIodHlwZV9jLT5kZXYsICIlczogRXJyb3IgY2Mgc2V0dGluZyBjYz0w eCV4XG4iLA0KPiBfX2Z1bmNfXywgY2MpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgIHdyaXRlbCh2YWxfY2MsIHJlZyk7DQo+ID4gKw0K PiA+ICsgICAgIG1kZWxheSgxKTsNCj4gTWF5YmUsIGl0IGRlcGVuZHMgb24gaC93IGNvbnN0cmFp bnRzLiBCZXR0ZXIgdG8gZXhwbGFpbiB0aGUgY29tbWVudA0KPiBvZiB3aHkgYWRkaW5nIGRlbGF5 IGF0IGhlcmUuIEFsc28sIHRoaXMgcGF0Y2ggdXNlcyBtZGVsYXkvbXNsZWVwIGF0DQo+IHRoZSBt dWx0aXBsZSBwb2ludC4gSSByZWNvbW1lbmQgdGhhdCBhZGQgdGhlIGNvbW1lbnQgb2YgcmVhc29u IHRvIGFkZA0KPiBtZGVsYXkvbXNsZWVwLg0KDQpPaywgSSB3aWxsIGFkZC4NCj4gDQo+ID4gKw0K PiA+ICsgICAgIGRldl9kYmcodHlwZV9jLT5kZXYsICIlczogY2M9MHgleCB2YWxfY2M9MHgleA0K PiB1c2JfdHlwZWNfY3RybF9jYzFfMD0weCV4XG4iLA0KPiA+ICsgICAgICAgICAgICAgX19mdW5j X18sIGNjLCB2YWxfY2MsIHJlYWRsKHJlZykpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSB2b2lkIHN3aXRjaF90eXBlX2NfcGx1 Z19jb25maWcoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkcl9tb2RlLCBpbnQgY2MpDQo+ID4gK3sN Cj4gPiArICAgICBpbnQgcmV0ID0gMDsNCj4gPiArDQo+ID4gKyAgICAgaWYgKHNvY19kZXZpY2Vf bWF0Y2gocnRrX3NvY19reWxpbikpDQo+ID4gKyAgICAgICAgICAgICByZXQgPSBydGQxMjl4X3N3 aXRjaF90eXBlX2NfcGx1Z19jb25maWcodHlwZV9jLCBkcl9tb2RlLA0KPiBjYyk7DQo+ID4gKw0K PiA+ICsgICAgIGlmIChyZXQgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vycih0eXBlX2Mt PmRldiwgIiVzOiBFcnJvciBzZXQgdHlwZSBjIHBsdWcgY29uZmlnXG4iLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICBfX2Z1bmNfXyk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lk IHN3aXRjaF90eXBlX2NfZHJfbW9kZShzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYywgaW50DQo+ IGRyX21vZGUsIGludCBjYykNCj4gPiArew0KPiA+ICsgICAgIGJvb2wgaXNfaG9zdCA9IGZhbHNl Ow0KPiA+ICsgICAgIGJvb2wgaXNfZGV2aWNlID0gZmFsc2U7DQo+ID4gKyAgICAgYm9vbCBwb2xh cml0eSA9IGZhbHNlOw0KPiA+ICsgICAgIGJvb2wgdmJ1cyA9IGZhbHNlOw0KPiA+ICsgICAgIGJv b2wgc3MgPSB0cnVlOw0KPiA+ICsNCj4gPiArICAgICBzd2l0Y2hfdHlwZV9jX3BsdWdfY29uZmln KHR5cGVfYywgZHJfbW9kZSwgY2MpOw0KPiA+ICsgICAgIGlmIChjYyA9PSBFTkFCTEVfQ0MyKQ0K PiA+ICsgICAgICAgICAgICAgcG9sYXJpdHkgPSB0cnVlOw0KPiA+ICsNCj4gPiArICAgICBzd2l0 Y2ggKGRyX21vZGUpIHsNCj4gPiArICAgICBjYXNlIFVTQl9EUl9NT0RFX0hPU1Q6DQo+ID4gKyAg ICAgICAgICAgICBpc19ob3N0ID0gdHJ1ZTsNCj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ ICsgICAgIGNhc2UgVVNCX0RSX01PREVfUEVSSVBIRVJBTDoNCj4gPiArICAgICAgICAgICAgIGlz X2RldmljZSA9IHRydWU7DQo+ID4gKyAgICAgICAgICAgICB2YnVzID0gdHJ1ZTsNCj4gPiArICAg ICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgICAgICBk ZXZfZGJnKHR5cGVfYy0+ZGV2LCAiJXMgZHJfbW9kZT0lZCA9PT4gbm8gaG9zdCBvcg0KPiBkZXZp Y2VcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBkcl9tb2RlKTsNCj4g PiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgZGV2 X2RiZyh0eXBlX2MtPmRldiwgIiVzIGlzX2hvc3Q9JWQgaXNfZGV2aWNlPSVkIHZidXM9JWQNCj4g cG9sYXJpdHk9JWRcbiIsDQo+ID4gKyAgICAgICAgICAgICBfX2Z1bmNfXywgaXNfaG9zdCwgaXNf ZGV2aWNlLCB2YnVzLCBwb2xhcml0eSk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIGZvciBFWFRDT05f VVNCIGRldmljZSBtb2RlICovDQo+ID4gKyAgICAgZXh0Y29uX3NldF9zdGF0ZSh0eXBlX2MtPmVk ZXYsIEVYVENPTl9VU0IsIGlzX2RldmljZSk7DQo+ID4gKyAgICAgZXh0Y29uX3NldF9wcm9wZXJ0 eSh0eXBlX2MtPmVkZXYsIEVYVENPTl9VU0IsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBFWFRDT05fUFJPUF9VU0JfVkJVUywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICh1 bmlvbiBleHRjb25fcHJvcGVydHlfdmFsdWUpKGludCl2YnVzKTsNCj4gPiArICAgICBleHRjb25f c2V0X3Byb3BlcnR5KHR5cGVfYy0+ZWRldiwgRVhUQ09OX1VTQiwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgIEVYVENPTl9QUk9QX1VTQl9UWVBFQ19QT0xBUklUWSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICh1bmlvbiBleHRjb25fcHJvcGVydHlfdmFsdWUpKGludClwb2xh cml0eSk7DQo+ID4gKyAgICAgZXh0Y29uX3NldF9wcm9wZXJ0eSh0eXBlX2MtPmVkZXYsIEVYVENP Tl9VU0IsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBFWFRDT05fUFJPUF9VU0JfU1Ms DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAodW5pb24gZXh0Y29uX3Byb3BlcnR5X3Zh bHVlKShpbnQpc3MpOw0KPiA+ICsNCj4gPiArICAgICAvKiBmb3IgRVhUQ09OX1VTQl9IT1NUIGhv c3QgbW9kZSAqLw0KPiA+ICsgICAgIGV4dGNvbl9zZXRfc3RhdGUodHlwZV9jLT5lZGV2LCBFWFRD T05fVVNCX0hPU1QsIGlzX2hvc3QpOw0KPiA+ICsgICAgIGV4dGNvbl9zZXRfcHJvcGVydHkodHlw ZV9jLT5lZGV2LCBFWFRDT05fVVNCX0hPU1QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBFWFRDT05fUFJPUF9VU0JfVkJVUywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICh1 bmlvbiBleHRjb25fcHJvcGVydHlfdmFsdWUpKGludCl2YnVzKTsNCj4gPiArICAgICBleHRjb25f c2V0X3Byb3BlcnR5KHR5cGVfYy0+ZWRldiwgRVhUQ09OX1VTQl9IT1NULA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgRVhUQ09OX1BST1BfVVNCX1RZUEVDX1BPTEFSSVRZLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgKHVuaW9uIGV4dGNvbl9wcm9wZXJ0eV92YWx1ZSkoaW50 KXBvbGFyaXR5KTsNCj4gPiArICAgICBleHRjb25fc2V0X3Byb3BlcnR5KHR5cGVfYy0+ZWRldiwg RVhUQ09OX1VTQl9IT1NULA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgRVhUQ09OX1BS T1BfVVNCX1NTLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKHVuaW9uIGV4dGNvbl9w cm9wZXJ0eV92YWx1ZSkoaW50KXNzKTsNCj4gPiArDQo+ID4gKyAgICAgLyogc3luYyBFWFRDT05f VVNCIGFuZCBFWFRDT05fVVNCX0hPU1QgKi8NCj4gPiArICAgICBleHRjb25fc3luYyh0eXBlX2Mt PmVkZXYsIEVYVENPTl9VU0IpOw0KPiA+ICsgICAgIGV4dGNvbl9zeW5jKHR5cGVfYy0+ZWRldiwg RVhUQ09OX1VTQl9IT1NUKTsNCj4gPiArDQo+ID4gKyNpZmRlZiBDT05GSUdfVFlQRUM+ICsgICAg ICAgaWYgKHR5cGVfYy0+cG9ydCkgew0KPiA+ICsgICAgICAgICAgICAgc3dpdGNoIChkcl9tb2Rl KSB7DQo+ID4gKyAgICAgICAgICAgICBjYXNlIFVTQl9EUl9NT0RFX0hPU1Q6DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHR5cGVjX3NldF9kYXRhX3JvbGUodHlwZV9jLT5wb3J0LCBUWVBFQ19I T1NUKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdHlwZWNfc2V0X3B3cl9yb2xlKHR5cGVf Yy0+cG9ydCwNCj4gVFlQRUNfU09VUkNFKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJl YWs7DQo+ID4gKyAgICAgICAgICAgICBjYXNlIFVTQl9EUl9NT0RFX1BFUklQSEVSQUw6DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIHR5cGVjX3NldF9kYXRhX3JvbGUodHlwZV9jLT5wb3J0LA0K PiBUWVBFQ19ERVZJQ0UpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB0eXBlY19zZXRfcHdy X3JvbGUodHlwZV9jLT5wb3J0LCBUWVBFQ19TSU5LKTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBkZXZfZGJnKHR5cGVfYy0+ZGV2LCAiJXMgdW5rbm93bg0KPiBkcl9tb2RlPSVkXG4i LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBkcl9tb2RlKTsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ ID4gKyAgICAgfQ0KPiA+ICsjZW5kaWYNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyogZGV2aWNlIGF0 dGFjaGVkL2RldGFjaGVkICovDQo+ID4gK3N0YXRpYyBpbnQgZGV2aWNlX2F0dGFjaGVkKHN0cnVj dCB0eXBlX2NfZGF0YSAqdHlwZV9jLCB1MzIgY2MpDQo+ID4gK3sNCj4gPiArICAgICB2b2lkIF9f aW9tZW0gKnJlZyA9IHR5cGVfYy0+cmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTDsNCj4gPiArDQo+ ID4gKyAgICAgY2FuY2VsX2RlbGF5ZWRfd29yaygmdHlwZV9jLT5kZWxheWVkX3dvcmspOw0KPiA+ ICsNCj4gPiArICAgICBzd2l0Y2hfdHlwZV9jX2RyX21vZGUodHlwZV9jLCBVU0JfRFJfTU9ERV9I T1NULCBjYyk7DQo+ID4gKw0KPiA+ICsgICAgIHdyaXRlbChFTkFCTEVfVFlQRV9DX0RFVEVDVCB8 IHJlYWRsKHJlZyksIHJlZyk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ IA0KPiBkZXZpY2VfYXR0YWNoZWQoKSBmdW5jaXRvbiBpcyBzYW1lIHdpdGggaG9zdF9jb25uZWN0 ZWQoKQ0KPiBleGNlcHQgZm9yIFVTUl9CUl9NT0RFX0hPU1QsIFVTQl9EUl9NT0RFX1BFUklQSEVS QUwgc2V0dGluZy4NCj4gDQo+IFlvdSBjYW4gdXNlIG9ubHkgb25lIGZ1bmN0aW9uIHdpdGggM3Jk IHBhcmFtZXIgKGRyX21vZGUpIGFzIGZvbGxvd2luZw0KPiBpbiBvcmRlciB0byByZWR1Y2UgdGhl IGR1cGxpY2F0ZWQgY29kZS4NCj4gRm9yIGV4YW1wbGUsDQo+IHN0YXRpYyBpbnQgY29ubmVjdG9y X2F0dGFjaGVkKHN0cnVjdCB0eXBlX2NfZGF0YSAqdHlwZV9jLCB1MzIgY2MsIGludA0KPiBkcl9t b2RlKQ0KDQpJIHdpbGwgc2ltcGxpZnkgdGhpcy4NCg0KPiA+ICsNCj4gPiArc3RhdGljIGludCBk ZXZpY2VfZGV0YWNoZWQoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MsIHUzMiBjYykNCj4gPiAr ew0KPiA+ICsgICAgIHZvaWQgX19pb21lbSAqcmVnID0gdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9U WVBFQ19DVFJMOw0KPiA+ICsNCj4gPiArICAgICB3cml0ZWwofkVOQUJMRV9UWVBFX0NfREVURUNU ICYgcmVhZGwocmVnKSwgcmVnKTsNCj4gPiArDQo+ID4gKyAgICAgc3dpdGNoX3R5cGVfY19kcl9t b2RlKHR5cGVfYywgMCwgY2MpOw0KPiA+ICsNCj4gPiArICAgICBzY2hlZHVsZV9kZWxheWVkX3dv cmsoJnR5cGVfYy0+ZGVsYXllZF93b3JrLA0KPiBtc2Vjc190b19qaWZmaWVzKERFVEVDVF9USU1F KSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+IA0KPiBkZXZpY2VfZGV0 YWNoZWQgaXMgcGVyZmVjdGx5IHNhbWUgd2l0aCBob3N0X2Rpc2Nvbm5lY3RlZC4NCj4gWW91IGNh biB1c2UgdGhlIG9ubHkgb25lIGZ1bmN0aW9uIHRvIHJlZHVjZSB0aGUgZHVwbGljYXRlZCBjb2Rl DQo+IA0KPiA+ICsNCj4gPiArLyogaG9zdCBjb25uZWN0L2Rpc2Nvbm5lY3QqLw0KPiA+ICtzdGF0 aWMgaW50IGhvc3RfY29ubmVjdGVkKHN0cnVjdCB0eXBlX2NfZGF0YSAqdHlwZV9jLCB1MzIgY2Mp DQo+ID4gK3sNCj4gPiArICAgICB2b2lkIF9faW9tZW0gKnJlZyA9IHR5cGVfYy0+cmVnX2Jhc2Ug KyBVU0JfVFlQRUNfQ1RSTDsNCj4gPiArDQo+ID4gKyAgICAgY2FuY2VsX2RlbGF5ZWRfd29yaygm dHlwZV9jLT5kZWxheWVkX3dvcmspOw0KPiA+ICsNCj4gPiArICAgICBzd2l0Y2hfdHlwZV9jX2Ry X21vZGUodHlwZV9jLCBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMLCBjYyk7DQo+ID4gKw0KPiA+ICsg ICAgIHdyaXRlbChFTkFCTEVfVFlQRV9DX0RFVEVDVCB8IHJlYWRsKHJlZyksIHJlZyk7DQo+ID4g KyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaG9zdF9kaXNj b25uZWN0ZWQoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MsIHUzMiBjYykNCj4gPiArew0KPiA+ ICsgICAgIHZvaWQgX19pb21lbSAqcmVnID0gdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19D VFJMOw0KPiA+ICsNCj4gPiArICAgICB3cml0ZWwofkVOQUJMRV9UWVBFX0NfREVURUNUICYgcmVh ZGwocmVnKSwgcmVnKTsNCj4gPiArDQo+ID4gKyAgICAgc3dpdGNoX3R5cGVfY19kcl9tb2RlKHR5 cGVfYywgMCwgY2MpOw0KPiA+ICsNCj4gPiArICAgICBzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnR5 cGVfYy0+ZGVsYXllZF93b3JrLA0KPiBtc2Vjc190b19qaWZmaWVzKERFVEVDVF9USU1FKSk7DQo+ ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBkZXRlY3Qg aG9zdCBkZXZpY2Ugc3dpdGNoICovDQo+ID4gK3N0YXRpYyBpbnQgX19kZXRlY3RfaG9zdF9kZXZp Y2Uoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MsIHUzMg0KPiBycF9vcl9yZF9lbikNCj4gPiAr ew0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IHR5cGVfYy0+ZGV2Ow0KPiA+ICsgICAg IHZvaWQgX19pb21lbSAqcmVnX2Jhc2UgPSB0eXBlX2MtPnJlZ19iYXNlOw0KPiA+ICsgICAgIHVu c2lnbmVkIGludCBncGlvID0gdHlwZV9jLT5yZF9jdHJsX2dwaW87DQo+ID4gKyAgICAgdTMyIGNj MV9jb25maWcsIGNjMl9jb25maWcsIGRlZmF1bHRfY3RybDsNCj4gPiArICAgICB1MzIgY2MxX3N3 aXRjaCA9IDA7DQo+ID4gKw0KPiA+ICsgICAgIGRlZmF1bHRfY3RybCA9IHJlYWRsKHJlZ19iYXNl ICsgVVNCX1RZUEVDX0NUUkwpICYNCj4gREVCT1VOQ0VfVElNRV9NQVNLOw0KPiA+ICsgICAgIHdy aXRlbChkZWZhdWx0X2N0cmwsIHJlZ19iYXNlICsgVVNCX1RZUEVDX0NUUkwpOw0KPiA+ICsNCj4g PiArICAgICBjYzFfY29uZmlnID0gcmVhZGwocmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTF9DQzFf MCk7DQo+ID4gKyAgICAgY2MyX2NvbmZpZyA9IHJlYWRsKHJlZ19iYXNlICsgVVNCX1RZUEVDX0NU UkxfQ0MyXzApOw0KPiA+ICsNCj4gPiArICAgICBjYzFfY29uZmlnICY9IH5FTl9DQ19ERVQ7DQo+ ID4gKyAgICAgY2MyX2NvbmZpZyAmPSB+RU5fQ0NfREVUOw0KPiA+ICsgICAgIHdyaXRlbChjYzFf Y29uZmlnLCByZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMX0NDMV8wKTsNCj4gPiArICAgICB3cml0 ZWwoY2MyX2NvbmZpZywgcmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTF9DQzJfMCk7DQo+ID4gKw0K PiA+ICsgICAgIGlmIChzb2NfZGV2aWNlX21hdGNoKHJ0a19zb2Nfa3lsaW4pKQ0KPiA+ICsgICAg ICAgICAgICAgY2MxX3N3aXRjaCA9IGNjMV9jb25maWcgJiBDQ19TV0lUQ0hfTUFTSzsNCj4gPiAr DQo+ID4gKyAgICAgY2MxX2NvbmZpZyAmPSBDQ19DT0RFX01BU0s7DQo+ID4gKyAgICAgY2MxX2Nv bmZpZyB8PSBycF9vcl9yZF9lbiB8IGNjMV9zd2l0Y2g7DQo+ID4gKyAgICAgY2MyX2NvbmZpZyAm PSBDQ19DT0RFX01BU0s7DQo+ID4gKyAgICAgY2MyX2NvbmZpZyB8PSBycF9vcl9yZF9lbjsNCj4g PiArICAgICB3cml0ZWwoY2MyX2NvbmZpZywgcmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTF9DQzJf MCk7DQo+ID4gKyAgICAgd3JpdGVsKGNjMV9jb25maWcsIHJlZ19iYXNlICsgVVNCX1RZUEVDX0NU UkxfQ0MxXzApOw0KPiA+ICsNCj4gPiArICAgICAvKiBGb3Iga3lsaW4gdG8gZGlzYWJsZSBleHRl cm5hbCByZCBjb250cm9sIGdwaW8gKi8NCj4gPiArICAgICBpZiAoc29jX2RldmljZV9tYXRjaChy dGtfc29jX2t5bGluKSkgew0KPiA+ICsgICAgICAgICAgICAgaWYgKGdwaW8gIT0gLTEgJiYgZ3Bp b19pc192YWxpZChncGlvKSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoZ3Bpb19k aXJlY3Rpb25fb3V0cHV0KGdwaW8sIDEpKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRldl9lcnIoZGV2LCAiJXMgRVJST1IgcmRfY3RybF9ncGlvPTENCj4gZmFpbFxuIiwgX19m dW5jX18pOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgY2MxX2NvbmZpZyB8PSBFTl9DQ19ERVQ7DQo+ID4gKyAgICAgY2MyX2NvbmZpZyB8PSBFTl9D Q19ERVQ7DQo+ID4gKyAgICAgd3JpdGVsKGNjMV9jb25maWcsIHJlZ19iYXNlICsgVVNCX1RZUEVD X0NUUkxfQ0MxXzApOw0KPiA+ICsgICAgIHdyaXRlbChjYzJfY29uZmlnLCByZWdfYmFzZSArIFVT Ql9UWVBFQ19DVFJMX0NDMl8wKTsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZGV0ZWN0X2RldmljZShzdHJ1Y3QgdHlwZV9jX2RhdGEg KnR5cGVfYykNCj4gPiArew0KPiA+ICsgICAgIHJldHVybiBfX2RldGVjdF9ob3N0X2RldmljZSh0 eXBlX2MsIHR5cGVfYy0+ZGZwX21vZGVfcnBfZW4pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IGRldGVjdF9ob3N0KHN0cnVjdCB0eXBlX2NfZGF0YSAqdHlwZV9jKQ0KPiA+ICt7DQo+ ID4gKyAgICAgcmV0dXJuIF9fZGV0ZWN0X2hvc3RfZGV2aWNlKHR5cGVfYywgdHlwZV9jLT51ZnBf bW9kZV9yZF9lbik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaG9zdF9kZXZpY2Vf c3dpdGNoX2RldGVjdGlvbihzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYykNCj4gPiArew0KPiA+ ICsgICAgIGlmICh0eXBlX2MtPmNjX21vZGUgPT0gSU5fSE9TVF9NT0RFKSB7DQo+ID4gKyAgICAg ICAgICAgICB0eXBlX2MtPmNjX21vZGUgPSBJTl9ERVZJQ0VfTU9ERTsNCj4gPiArICAgICAgICAg ICAgIGRldGVjdF9ob3N0KHR5cGVfYyk7DQo+ID4gKyAgICAgfSBlbHNlIHsNCj4gPiArICAgICAg ICAgICAgIHR5cGVfYy0+Y2NfbW9kZSA9IElOX0hPU1RfTU9ERTsNCj4gPiArICAgICAgICAgICAg IGRldGVjdF9kZXZpY2UodHlwZV9jKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJl dHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGRldGVjdF90eXBlX2Nfc3Rh dGUoc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MpDQo+ID4gK3sNCj4gPiArICAgICBzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSB0eXBlX2MtPmRldjsNCj4gPiArICAgICB2b2lkIF9faW9tZW0gKnJlZ19i YXNlID0gdHlwZV9jLT5yZWdfYmFzZTsNCj4gPiArICAgICB1MzIgaW50X3N0YXR1cywgY2Nfc3Rh dHVzLCBjY19zdGF0dXNfY2hlY2s7DQo+ID4gKyAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4g PiArDQo+ID4gKyAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0K PiA+ICsNCj4gPiArICAgICBpbnRfc3RhdHVzID0gcmVhZGwocmVnX2Jhc2UgKyBVU0JfVFlQRUNf Q1RSTCk7DQo+ID4gKyAgICAgY2Nfc3RhdHVzID0gcmVhZGwocmVnX2Jhc2UgKyBVU0JfVFlQRUNf U1RTKTsNCj4gPiArDQo+ID4gKyAgICAgdHlwZV9jLT5jb25uZWN0X2NoYW5nZSA9IENPTk5FQ1Rf Tk9fQ0hBTkdFOw0KPiA+ICsNCj4gPiArICAgICBzd2l0Y2ggKHR5cGVfYy0+Y2NfbW9kZSB8IHR5 cGVfYy0+aXNfYXR0YWNoKSB7DQo+ID4gKyAgICAgY2FzZSBJTl9IT1NUX01PREUgfCBJTl9BVFRB Q0g6DQo+ID4gKyAgICAgICAgICAgICBpZiAoKChjY19zdGF0dXMgJiBDQzFfREVUX1NUUykgPT0g Q0MxX0RFVF9TVFMpICYmDQo+IHR5cGVfYy0+YXRfY2MxID09IEFUX0NDMSkgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIklOIGhvc3QgbW9kZSBhbmQgY2MxIGRldmlj ZQ0KPiBkZXRhY2ggKGNjX3N0YXR1cz0weCV4KSIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2Nfc3RhdHVzKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdHlwZV9jLT5p c19hdHRhY2ggPSBUT19ERVRBQ0g7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHR5cGVfYy0+ Y29ubmVjdF9jaGFuZ2UgPSBDT05ORUNUX0NIQU5HRTsNCj4gPiArICAgICAgICAgICAgIH0gZWxz ZSBpZiAoKChjY19zdGF0dXMgJiBDQzJfREVUX1NUUykgPT0gQ0MyX0RFVF9TVFMpICYmDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfYy0+YXRfY2MxID09IEFUX0NDMikgew0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIklOIGhvc3QgbW9kZSBhbmQgY2My IGRldmljZQ0KPiBkZXRhY2ggKGNjX3N0YXR1cz0weCV4KSIsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2Nfc3RhdHVzKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdHlw ZV9jLT5pc19hdHRhY2ggPSBUT19ERVRBQ0g7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHR5 cGVfYy0+Y29ubmVjdF9jaGFuZ2UgPSBDT05ORUNUX0NIQU5HRTsNCj4gPiArICAgICAgICAgICAg IH0NCj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgIGNhc2UgSU5fSE9TVF9NT0RF IHwgSU5fREVUQUNIOg0KPiA+ICsgICAgICAgICAgICAgY2Nfc3RhdHVzX2NoZWNrID0gcmVhZGwo cmVnX2Jhc2UgKyBVU0JfVFlQRUNfU1RTKTsNCj4gPiArICAgICAgICAgICAgIGlmIChjY19zdGF0 dXNfY2hlY2sgIT0gKENDMV9ERVRfU1RTIHwgQ0MyX0RFVF9TVFMpKSB7DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIGlmIChpbl9pbnRlcnJ1cHQoKSkgew0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1kZWxheSgzMDApOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB9IGVs c2Ugew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnR5cGVfYy0+bG9jaywNCj4gZmxhZ3MpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1zbGVlcCgzMDApOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNwaW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgfQ0KPiANCj4gQXMgSSBjb21tZW50ZWQgYWJvdmUsIGl0IHNlZW1zIHRoYXQg dGhlcmUgYXJlIHNvbWUgaGFyZHdhcmUgY29uc3RyYWlucw0KPiB3aGljaCByZXF1aXJlcyB0aGUg c29tZSBkZWxheSB3aGVuIGNoYW5naW5nIHRoZSBoL3cgc3RhdGUuDQo+IEkgcmVjb21tZW5kIHRo YXQgeW91IG5lZWQgdG8gYWRkIHRoZSBjb21tZW50IG9mIHdoeSBhZGRpbmcgdGhlDQo+IGRlbGF5 cy9zbGVlcC4NCg0KT2ssIEkgd2lsbCBhZGQuDQoNCj4gPiArICAgICAgICAgICAgICAgICAgICAg Y2Nfc3RhdHVzX2NoZWNrID0gcmVhZGwocmVnX2Jhc2UgKw0KPiBVU0JfVFlQRUNfU1RTKTsNCj4g PiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIGlmIChjY19zdGF0dXMgIT0gY2Nf c3RhdHVzX2NoZWNrKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl93YXJuKGRldiwg IklOX0hPU1RfTU9ERTogY2Nfc3RhdHVzDQo+ICgweCV4KSAhPSBjY19zdGF0dXNfY2hlY2sgKDB4 JXgpXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY19zdGF0dXMsIGNj X3N0YXR1c19jaGVjayk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGNjX3N0YXR1cyA9IHJl YWRsKHJlZ19iYXNlICsgVVNCX1RZUEVDX1NUUyk7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4g Kw0KPiA+ICsgICAgICAgICAgICAgaWYgKChjY19zdGF0dXMgJiBDQzFfREVUX1NUUykgPT0gQ0Mx X0RFVF9TVFNfUkQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyhkZXYsICJJ TiBob3N0IG1vZGUgYW5kIGNjMSBkZXZpY2UNCj4gYXR0YWNoIChjY19zdGF0dXM9MHgleCkiLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX3N0YXR1cyk7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHR5cGVfYy0+aXNfYXR0YWNoID0gVE9fQVRUQUNIOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICB0eXBlX2MtPmF0X2NjMSA9IEFUX0NDMTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgdHlwZV9jLT5jb25uZWN0X2NoYW5nZSA9IENPTk5FQ1RfQ0hBTkdFOw0KPiA+ ICsgICAgICAgICAgICAgfSBlbHNlIGlmICgoY2Nfc3RhdHVzICYgQ0MyX0RFVF9TVFMpID09IEND Ml9ERVRfU1RTX1JEKQ0KPiB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoZGV2 LCAiSW4gaG9zdCBtb2RlIGFuZCBjYzIgZGV2aWNlIGF0dGFjaA0KPiAoY2Nfc3RhdHVzPTB4JXgp IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY19zdGF0dXMpOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICB0eXBlX2MtPmlzX2F0dGFjaCA9IFRPX0FUVEFDSDsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgdHlwZV9jLT5hdF9jYzEgPSBBVF9DQzI7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHR5cGVfYy0+Y29ubmVjdF9jaGFuZ2UgPSBDT05ORUNUX0NIQU5HRTsN Cj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAg IGNhc2UgSU5fREVWSUNFX01PREUgfCBJTl9BVFRBQ0g6DQo+ID4gKyAgICAgICAgICAgICBpZiAo KGNjX3N0YXR1cyAmIENDMV9ERVRfU1RTKSA8IENDMV9ERVRfU1RTX1JQIHx8DQo+ID4gKyAgICAg ICAgICAgICAgICAgKGNjX3N0YXR1cyAmIENDMl9ERVRfU1RTKSA8IENDMl9ERVRfU1RTX1JQKSB7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIC8qIEFkZCBhIHN3IGRlYm91bmNlIHRvIGZpbHRl ciBjYyBzaWduYWwgc2VudCBmcm9tDQo+IGFwcGxlIHBkIGFkYXB0ZXIgKi8NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgbWRlbGF5KDUpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBjY19z dGF0dXNfY2hlY2sgPSByZWFkbChyZWdfYmFzZSArDQo+IFVTQl9UWVBFQ19TVFMpOw0KPiA+ICsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGNjX3N0YXR1cyAhPSBjY19zdGF0dXNfY2hl Y2spIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIklO X0RFVklDRV9NT0RFOg0KPiBjY19zdGF0dXMgKDB4JXgpICE9IGNjX3N0YXR1c19jaGVjayAoMHgl eCkgbWF5YmUgdXNlIGEgcGQgYWRhcHRlclxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNjX3N0YXR1cywgY2Nfc3RhdHVzX2NoZWNrKTsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjY19zdGF0dXMgPSBjY19zdGF0dXNfY2hlY2s7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgICAgICAgICBpZiAoKGNjX3N0YXR1cyAmIENDMV9ERVRfU1RTKSA8IENDMV9ERVRfU1RT X1JQICYmDQo+IHR5cGVfYy0+YXRfY2MxID09IEFUX0NDMSkgew0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBkZXZfZGJnKGRldiwgIklOIGRldmljZSBtb2RlIGFuZCBjYzEgaG9zdA0KPiBkaXNj b25uZWN0IChjY19zdGF0dXM9MHgleCkiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNjX3N0YXR1cyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHR5cGVfYy0+aXNfYXR0 YWNoID0gVE9fREVUQUNIOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB0eXBlX2MtPmNvbm5l Y3RfY2hhbmdlID0gQ09OTkVDVF9DSEFOR0U7DQo+ID4gKyAgICAgICAgICAgICB9IGVsc2UgaWYg KChjY19zdGF0dXMgJiBDQzJfREVUX1NUUykgPCBDQzJfREVUX1NUU19SUA0KPiAmJg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICB0eXBlX2MtPmF0X2NjMSA9PSBBVF9DQzIpIHsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyhkZXYsICJJTiBkZXZpY2UgbW9kZSBhbmQgY2My IGhvc3QNCj4gZGlzY29ubmVjdCAoY2Nfc3RhdHVzPTB4JXgpIiwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjY19zdGF0dXMpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB0 eXBlX2MtPmlzX2F0dGFjaCA9IFRPX0RFVEFDSDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg dHlwZV9jLT5jb25uZWN0X2NoYW5nZSA9IENPTk5FQ1RfQ0hBTkdFOw0KPiA+ICsgICAgICAgICAg ICAgfQ0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgY2FzZSBJTl9ERVZJQ0Vf TU9ERSB8IElOX0RFVEFDSDoNCj4gPiArICAgICAgICAgICAgIGNjX3N0YXR1c19jaGVjayA9IHJl YWRsKHJlZ19iYXNlICsgVVNCX1RZUEVDX1NUUyk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoY2Nf c3RhdHVzX2NoZWNrICE9IDB4MCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoaW5f aW50ZXJydXB0KCkpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZGVsYXko MzAwKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0eXBlX2MtPmxvY2ss DQo+IGZsYWdzKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2xlZXAoMzAw KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgm dHlwZV9jLT5sb2NrLCBmbGFncyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4gDQo+ IGRpdHRvLg0KPiANCj4gPiArICAgICAgICAgICAgICAgICAgICAgY2Nfc3RhdHVzX2NoZWNrID0g cmVhZGwocmVnX2Jhc2UgKw0KPiBVU0JfVFlQRUNfU1RTKTsNCj4gPiArICAgICAgICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICAgICAgICBpZiAoY2Nfc3RhdHVzICE9IGNjX3N0YXR1c19jaGVj aykgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybihkZXYsICJJTl9ERVZJQ0Vf TU9ERTogY2Nfc3RhdHVzDQo+ICgweCV4KSAhPSBjY19zdGF0dXNfY2hlY2sgKDB4JXgpXG4iLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY19zdGF0dXMsIGNjX3N0YXR1c19j aGVjayk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGNjX3N0YXR1cyA9IHJlYWRsKHJlZ19i YXNlICsgVVNCX1RZUEVDX1NUUyk7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgICAgICAgaWYgKChjY19zdGF0dXMgJiBDQzFfREVUX1NUUykgPj0gQ0MxX0RFVF9TVFNf UlApIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyhkZXYsICJJTiBkZXZpY2Ug bW9kZSBhbmQgY2MxIGhvc3QNCj4gY29ubmVjdCAoY2Nfc3RhdHVzPTB4JXgpIiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjY19zdGF0dXMpOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICB0eXBlX2MtPmF0X2NjMSA9IEFUX0NDMTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgdHlwZV9jLT5pc19hdHRhY2ggPSBUT19BVFRBQ0g7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHR5cGVfYy0+Y29ubmVjdF9jaGFuZ2UgPSBDT05ORUNUX0NIQU5HRTsNCj4gPiArICAgICAg ICAgICAgIH0gZWxzZSBpZiAoKGNjX3N0YXR1cyAmIENDMl9ERVRfU1RTKSA+PSBDQzJfREVUX1NU U19SUCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIklOIGRldmlj ZSBtb2RlIGFuZCBjYzIgaG9zdA0KPiBjb25uZWN0IChjY19zdGF0dXM9MHgleCkiLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX3N0YXR1cyk7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIHR5cGVfYy0+YXRfY2MxID0gQVRfQ0MyOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICB0eXBlX2MtPmlzX2F0dGFjaCA9IFRPX0FUVEFDSDsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgdHlwZV9jLT5jb25uZWN0X2NoYW5nZSA9IENPTk5FQ1RfQ0hBTkdFOw0KPiA+ICsgICAg ICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgZGVmYXVsdDoN Cj4gPiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZXJyb3IgaG9zdCBvciBkZXZpY2UgbW9k ZSAoY2NfbW9kZT0lZCwNCj4gaXNfYXR0YWNoPSVkKSAiLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICB0eXBlX2MtPmNjX21vZGUsIHR5cGVfYy0+aXNfYXR0YWNoKTsNCj4gPiArICAgICB9DQo+ ID4gKw0KPiA+ICsgICAgIHR5cGVfYy0+aW50X3N0YXR1cyA9IGludF9zdGF0dXM7DQo+ID4gKyAg ICAgdHlwZV9jLT5jY19zdGF0dXMgPSBjY19zdGF0dXM7DQo+ID4gKw0KPiA+ICsgICAgIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiA+ICsgICAgIHJldHVy biAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBob3N0X2RldmljZV9zd2l0Y2go c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IHR5cGVf Y19kYXRhICp0eXBlX2MgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHR5cGVfY19kYXRhLA0K PiA+ICsNCj4gZGVsYXllZF93b3JrLndvcmspOw0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRl diA9IHR5cGVfYy0+ZGV2Ow0KPiA+ICsgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ID4gKyAg ICAgaW50IGNvbm5lY3RfY2hhbmdlID0gMDsNCj4gPiArICAgICBpbnQgY2NfbW9kZSA9IDA7DQo+ ID4gKyAgICAgaW50IGlzX2F0dGFjaCA9IDA7DQo+ID4gKyAgICAgaW50IGF0X2NjMSA9IDA7DQo+ ID4gKw0KPiA+ICsgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsN Cj4gPiArICAgICBpZiAodHlwZV9jLT5jb25uZWN0X2NoYW5nZSkNCj4gPiArICAgICAgICAgICAg IGNvbm5lY3RfY2hhbmdlID0gdHlwZV9jLT5jb25uZWN0X2NoYW5nZTsNCj4gPiArICAgICBzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gDQo+IEJldHRlciB0 byBjb252ZXJ0IHRoaXMgY29kZSBhcyBmb2xsb3dpbmcgaWYgdHlwZV9jLT5jb25uZWN0X2NoYW5n ZSBpcyBOVUxMLA0KPiB5b3UgY2FuIHJlZHVjZSB0aGUgbG9jay91bmxvayBvcGVyYXRpb24gb2Yg c3Bpbl9sb2NrLiBBcyB5b3Uga25ldywgc3Bpbl9sb2NrIGlzDQo+IGV4cGVuc2l2ZS4NCj4gDQo+ ICAgICAgICAgaWYgKHR5cGVfYy0+Y29ubmVjdF9jaGFuZ2UpIHsNCj4gICAgICAgICAgICAgICAg IHNwaW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gICAgICAgICAgICAg ICAgIGNvbm5lY3RfY2hhbmdlID0gdHlwZV9jLT5jb25uZWN0X2NoYW5nZTsNCj4gICAgICAgICAg ICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiAg ICAgICAgIH0NCg0KSSB3YW50IHRvIHByb3RlY3QgdHlwZV9jLT5jb25uZWN0X2NoYW5nZS4NCk1v dmluZyB0aGUgbG9jayB0byB0aGUgaWYgc3RhdGVtZW50IGxvc2VzIGl0cyBvcmlnaW5hbCBwdXJw b3NlLg0KDQo+ID4gKw0KPiA+ICsgICAgIGlmICghY29ubmVjdF9jaGFuZ2UpDQo+ID4gKyAgICAg ICAgICAgICBkZXRlY3RfdHlwZV9jX3N0YXRlKHR5cGVfYyk7DQo+ID4gKw0KPiA+ICsgICAgIHNw aW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gPiArICAgICBpZiAodHlw ZV9jLT5jb25uZWN0X2NoYW5nZSkgew0KPiA+ICsgICAgICAgICAgICAgY29ubmVjdF9jaGFuZ2Ug PSB0eXBlX2MtPmNvbm5lY3RfY2hhbmdlOw0KPiA+ICsgICAgICAgICAgICAgY2NfbW9kZSA9IHR5 cGVfYy0+Y2NfbW9kZTsNCj4gPiArICAgICAgICAgICAgIGlzX2F0dGFjaCA9IHR5cGVfYy0+aXNf YXR0YWNoOw0KPiA+ICsgICAgICAgICAgICAgYXRfY2MxID0gdHlwZV9jLT5hdF9jYzE7DQo+ID4g KyAgICAgICAgICAgICB0eXBlX2MtPmNvbm5lY3RfY2hhbmdlID0gQ09OTkVDVF9OT19DSEFOR0U7 DQo+ID4gKyAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgIGhvc3RfZGV2aWNlX3N3aXRj aF9kZXRlY3Rpb24odHlwZV9jKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBzY2hlZHVsZV9k ZWxheWVkX3dvcmsoJnR5cGVfYy0+ZGVsYXllZF93b3JrLA0KPiBtc2Vjc190b19qaWZmaWVzKERF VEVDVF9USU1FKSk7DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgIHNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiA+ICsNCj4gPiArICAgICBpZiAoY29ubmVjdF9j aGFuZ2UpIHsNCj4gDQo+IG5pdHBpY2suDQo+IFlvdSBjYW4gcmVkdWNlIHRoZSBkZXB0aCBvZiBp bmRlbnRhdGlvbiB3aGVuIGNvbm5lY3Rvcl9jaGFuZ2UgaXMgMA0KPiBieSBjaGFuZ2luZyB0aGUg Y29kZSBhcyBmb2xsb3dpbmc6IElmIHBvc3NpYmxlLCBJIGFsd2F5cyB0byB0cnkNCj4gdG8gcmVk dWNlIHRoZSBpbmRlbnRhdGlvbiBkZXB0aCBmb3IgdGhlIHJlYWRhYmlsaXR5Lg0KPiANCj4gICAg ICAgICBpZiAoIWNvbm5lY3RfY2hhbmdlKQ0KPiAgICAgICAgICAgICAgICAgcmV0dXJuDQo+IA0K PiAgICAgICAgIGRldl9kYmcoZGV2LCAiJXM6IHVzYiBjYWJsZSBjb25uZWN0aW9uIGNoYW5nZVxu IiwgX19mdW5jX18pOw0KPiAgICAgICAgIGlmIChjY19tb2RlID09IElOX0hPU1RfTU9ERSkgew0K PiAgICAgICAgICAgICAgICAgLi4uLi4uDQo+IA0KT2ssIEkgd2lsbCByZXZpc2UuDQo+ID4gKyAg ICAgICAgICAgICBkZXZfZGJnKGRldiwgIiVzOiB1c2IgY2FibGUgY29ubmVjdGlvbiBjaGFuZ2Vc biIsDQo+IF9fZnVuY19fKTsNCj4gPiArICAgICAgICAgICAgIGlmIChjY19tb2RlID09IElOX0hP U1RfTU9ERSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXR0YWNoICYmIGF0 X2NjMSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfYXR0YWNoZWQo dHlwZV9jLCBFTkFCTEVfQ0MxKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo aXNfYXR0YWNoICYmICFhdF9jYzEpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGV2aWNlX2F0dGFjaGVkKHR5cGVfYywgRU5BQkxFX0NDMik7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfZGV0 YWNoZWQodHlwZV9jLCBESVNBQkxFX0NDKTsNCj4gPiArICAgICAgICAgICAgIH0gZWxzZSBpZiAo Y2NfbW9kZSA9PSBJTl9ERVZJQ0VfTU9ERSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBp ZiAoaXNfYXR0YWNoICYmIGF0X2NjMSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBob3N0X2Nvbm5lY3RlZCh0eXBlX2MsIEVOQUJMRV9DQzEpOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBlbHNlIGlmIChpc19hdHRhY2ggJiYgIWF0X2NjMSkNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBob3N0X2Nvbm5lY3RlZCh0eXBlX2MsIEVOQUJMRV9DQzIpOw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaG9zdF9kaXNjb25uZWN0ZWQodHlwZV9jLA0KPiBESVNBQkxFX0NDKTsNCj4gPiArICAg ICAgICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2 LCAiRXJyb3I6IElOIHVua25vd24gbW9kZSAlZCB0byAlcw0KPiBhdCAlcyAoY2Nfc3RhdHVzPTB4 JXgpXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX21vZGUsIGlzX2F0 dGFjaCA/ICJhdHRhY2giIDoNCj4gImRldGFjaCIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXRfY2MxID8gImNjMSIgOiAiY2MyIiwNCj4gdHlwZV9jLT5jY19zdGF0dXMpOw0K PiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgZGV2X2luZm8oZGV2LCAiQ29u bmVjdGlvbiBjaGFuZ2UgT0s6IElOICVzIG1vZGUgdG8gJXMgYXQNCj4gJXMgKGNjX3N0YXR1cz0w eCV4KVxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNjX21vZGUgPT0gSU5fSE9TVF9N T0RFID8gImhvc3QiIDogImRldmljZSIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBpc19h dHRhY2ggPyAiYXR0YWNoIiA6ICJkZXRhY2giLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg YXRfY2MxID8gImNjMSIgOiAiY2MyIiwgdHlwZV9jLT5jY19zdGF0dXMpOw0KPiA+ICsgICAgIH0N Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlycXJldHVybl90IHR5cGVfY19kZXRlY3RfaXJx KGludCBpcnEsIHZvaWQgKl9fZGF0YSkNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCB0eXBlX2Nf ZGF0YSAqdHlwZV9jID0gKHN0cnVjdCB0eXBlX2NfZGF0YSAqKV9fZGF0YTsNCj4gPiArICAgICBz dHJ1Y3QgZGV2aWNlICpkZXYgPSB0eXBlX2MtPmRldjsNCj4gPiArICAgICB2b2lkIF9faW9tZW0g KnJlZyA9IHR5cGVfYy0+cmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTDsNCj4gPiArICAgICB1bnNp Z25lZCBsb25nIGZsYWdzOw0KPiA+ICsNCj4gPiArICAgICBkZXRlY3RfdHlwZV9jX3N0YXRlKHR5 cGVfYyk7DQo+ID4gKw0KPiA+ICsgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxvY2ss IGZsYWdzKTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKHR5cGVfYy0+Y29ubmVjdF9jaGFuZ2UpIHsN Cj4gPiArICAgICAgICAgICAgIGRldl9kYmcoZGV2LCAiJXM6IElOICVzIG1vZGUgdG8gJXMgKGF0 ICVzIGludGVycnVwdCkNCj4gaW50X3N0YXR1cz0weCV4LCBjY19zdGF0dXM9MHgleCIsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICB0eXBlX2MtPmNjX21vZGUgPT0gSU5fSE9TVF9NT0RFID8gImhvc3QiIDoNCj4gImRldmljZSIs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHR5cGVfYy0+aXNfYXR0YWNoID8gImF0dGFjaCIg OiAiZGV0YWNoIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdHlwZV9jLT5hdF9jYzEgPyAi Y2MxIiA6ICJjYzIiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB0eXBlX2MtPmludF9zdGF0 dXMsIHR5cGVfYy0+Y2Nfc3RhdHVzKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAvKiBjbGVh ciBpbnRlcnJ1cHQgc3RhdHVzICovDQo+ID4gKyAgICAgICAgICAgICB3cml0ZWwofkFMTF9DQ19J TlRfU1RTICYgcmVhZGwocmVnKSwgcmVnKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBjYW5j ZWxfZGVsYXllZF93b3JrKCZ0eXBlX2MtPmRlbGF5ZWRfd29yayk7DQo+ID4gKyAgICAgICAgICAg ICBzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnR5cGVfYy0+ZGVsYXllZF93b3JrLA0KPiBtc2Vjc190 b19qaWZmaWVzKDApKTsNCj4gPiArICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgc3Rh dGljIGludCBsb2NhbF9jb3VudDsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBpZiAobG9jYWxf Y291bnQrKyA+IDEwKSB7DQo+IA0KPiBJdCBzZWVtcyB0aGF0IGNsZWFyIGludGVycnVwdCBzdGF0 dXMgb25jZSBldmVyeSAxMCB0aW1lcy4NCj4gSSB0aGluayB0aGF0IGl0IGlzIG5vdCBnZW5lcmlj LiBZb3UgbmVlZCB0byBhZGQgdGhlIGNvbW1lbnQgb2Ygd2h5IHRyeWluZyB0bw0KPiBjbGVhcg0K PiBpbnRlcnJ1cHQgb25jZSBldmVyeSAxMCB0aW1lcy4NCg0KSSB3aWxsIGFkZCB0aGUgY29tbWVu dC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgLyogY2xlYXIgaW50ZXJydXB0IHN0YXR1cyAq Lw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB3cml0ZWwofkFMTF9DQ19JTlRfU1RTICYgcmVh ZGwocmVnKSwgcmVnKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgbG9jYWxfY291bnQgPSAw Ow0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmdHlwZV9jLT5sb2NrLCBmbGFncyk7DQo+ID4gKw0KPiA+ICsg ICAgIHJldHVybiBJUlFfSEFORExFRDsNCj4gPiArfQ0KPiANCj4gKHNuaXApDQo+IA0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBleHRjb25fcnRrX3R5cGVfY19pbml0KHN0cnVjdCB0eXBlX2NfZGF0 YSAqdHlwZV9jKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gdHlwZV9j LT5kZXY7DQo+ID4gKyAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiArICAgICB2b2lkIF9f aW9tZW0gKnJlZzsNCj4gPiArICAgICBpbnQgdmFsOw0KPiA+ICsNCj4gPiArICAgICBpZiAoKHR5 cGVfYy0+cmRfY3RybF9ncGlvICE9IC0xKSAmJg0KPiANCj4gbml0cGljay4NCj4gQWZ0ZXIgZ2V0 dGluZyB0aGUgZ3BpbyBudW1iZXIgYnkgdXNpbmcgb2ZfZ2V0X25hbWVkX2dwaW8oKSBmdW5jdGlv biwNCj4gdHlwZV9jLT5yZF9jdHJsX2dwaW8gaXMgZXJyb3IgbnVtYmVyIHdoaWNoIGlzIHJldHVy bmVkIG9mX2dldF9uYW1lZF9ncGlvKCkuDQo+IA0KPiBJbiBvcmRlciB0byBzcGVjaWZ5IHRoZSBt b3JlIGNvcnJlY3RseSwgaG93IGFib3V0IGNoYW5naW5nIGl0IGFzIGZvbGxvd2luZz8NCj4gQmVj YXVzZSBJIGRvbid0IHVzZSB0aGUgJy0xJyBjb25zdGFudCB2YXJpYWJsZSB3aXRob3V0IGFueSBj b25zdGFudCBkZWZpbnRpb24uDQo+IFNvbWVvbmUgY2Fubm90IHVuZGVyc3RhbmQgdGhlIG1lYW5p bmcgb2YgJy0xJy4NCj4gDQo+ICAgICAgICAgaWYgKCEodHlwZV9jLT5yZF9jdHJsX2dwaW8gPCAw KSkNCg0KSSB3aWxsIHJldmlzZS4NCg0KPiA+ICsgICAgICAgICBncGlvX3JlcXVlc3QodHlwZV9j LT5yZF9jdHJsX2dwaW8sIGRldi0+b2Zfbm9kZS0+bmFtZSkpDQo+ID4gKyAgICAgICAgICAgICBk ZXZfZXJyKGRldiwgIiVzIEVSUk9SIFJlcXVlc3QgcmRfY3RybF9ncGlvICAoaWQ9JWQpDQo+IGZh aWxcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCB0eXBlX2MtPnJkX2N0 cmxfZ3Bpbyk7DQo+ID4gKw0KPiA+ICsgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxv Y2ssIGZsYWdzKTsNCj4gPiArDQo+ID4gKyAgICAgLyogc2V0IHBhcmFtZXRlciAqLw0KPiA+ICsg ICAgIHJlZyA9IHR5cGVfYy0+cmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTF9DQzFfMDsNCj4gPiAr ICAgICB2YWwgPSByZWFkbChyZWcpOw0KPiA+ICsgICAgIHZhbCA9ICh+Q0NfQ09ERV9NQVNLICYg dmFsKSB8ICh0eXBlX2MtPmNjMV9jb2RlICYNCj4gQ0NfQ09ERV9NQVNLKTsNCj4gPiArICAgICB3 cml0ZWwodmFsLCByZWcpOw0KPiA+ICsNCj4gPiArICAgICByZWcgPSB0eXBlX2MtPnJlZ19iYXNl ICsgVVNCX1RZUEVDX0NUUkxfQ0MyXzA7DQo+ID4gKyAgICAgdmFsID0gcmVhZGwocmVnKTsNCj4g PiArICAgICB2YWwgPSAofkNDX0NPREVfTUFTSyAmIHZhbCkgfCAodHlwZV9jLT5jYzJfY29kZSAm DQo+IENDX0NPREVfTUFTSyk7DQo+ID4gKw0KPiA+ICsgICAgIHJlZyA9IHR5cGVfYy0+cmVnX2Jh c2UgKyBVU0JfVFlQRUNfQ1RSTF9DQzFfMTsNCj4gPiArICAgICB3cml0ZWwodHlwZV9jLT5jYzFf dnJlZiwgcmVnKTsNCj4gPiArDQo+ID4gKyAgICAgcmVnID0gdHlwZV9jLT5yZWdfYmFzZSArIFVT Ql9UWVBFQ19DVFJMX0NDMl8xOw0KPiA+ICsgICAgIHdyaXRlbCh0eXBlX2MtPmNjMl92cmVmLCBy ZWcpOw0KPiA+ICsNCj4gPiArICAgICByZWcgPSB0eXBlX2MtPnJlZ19iYXNlICsgVVNCX1RZUEVD X0NUUkw7DQo+ID4gKyAgICAgdmFsID0gcmVhZGwocmVnKTsNCj4gPiArICAgICB2YWwgPSAofkRF Qk9VTkNFX1RJTUVfTUFTSyAmIHZhbCkgfCAodHlwZV9jLT5kZWJvdW5jZSAmDQo+IERFQk9VTkNF X1RJTUVfTUFTSyk7DQo+ID4gKw0KPiA+ICsgICAgIGRldl9pbmZvKGRldiwgIkZpcnN0IGNoZWNr IFVTQl9EUl9NT0RFX1BFUklQSEVSQUwiKTsNCj4gPiArICAgICB0eXBlX2MtPmNjX21vZGUgPSBJ Tl9ERVZJQ0VfTU9ERTsNCj4gPiArICAgICB0eXBlX2MtPmlzX2F0dGFjaCA9IElOX0RFVEFDSDsN Cj4gPiArICAgICB0eXBlX2MtPmNvbm5lY3RfY2hhbmdlID0gQ09OTkVDVF9OT19DSEFOR0U7DQo+ ID4gKw0KPiA+ICsgICAgIGRldGVjdF9ob3N0KHR5cGVfYyk7DQo+ID4gKw0KPiA+ICsgICAgIHNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiA+ICsNCj4gPiAr ICAgICBzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnR5cGVfYy0+ZGVsYXllZF93b3JrLA0KPiBtc2Vj c190b19qaWZmaWVzKDApKTsNCj4gPiArDQo+ID4gKyNpZmRlZiBDT05GSUdfVFlQRUMNCj4gDQo+ IERvbiduIG5lZWQgdG8gY2hlY2sgJ0NPTkZJR19UWVBFQycgZGVmaW50aW9uIHdpaHQgaWZkZWYu DQo+ICdpZmRlZicgbWlnaHQgbWFrZSB0aGUgY29kZSBtb3JlIGNvbXBsaWNhdGVkLg0KPiANCj4g SWYgdHlwZV9jIGlzIG9wdGlvbmFsLCBqdXN0IHByaW50IHdhcm5pbmcgbWVzc2FnZQ0KPiB3aGVu IHR5cGVjX3JlZ2lzZXJfcG9ydCByZXR1cm5zIGVycm9yLg0KPiANCj4gVGhpcyBwYXRjaCBpcyBh bHJlYWR5IGNoZWNrIHdoZXRoZXIgJ3R5cGVfYy0+cG9ydCcgaXMgTlVMTCBvciBub3QNCj4gdG8g aGFuZGxlIHRoZSBjb2RlIHJlbGF0ZWQgdG8gdHlwZWMuDQoNCklmIEkgcmVtb3ZlIGNoZWNrICdD T05GSUdfVFlQRUMnIGRlZmluaXRpb24sDQppdCB3aWxsIGZhaWwgdGhlIGJ1aWxkIHdoZW4gQ09O RklHX1RZUEVDPW4uDQpBbm90aGVyIG9wdGlvbiBpcyB0byBzZWxlY3QgQ09ORklHX1RZUEVDIGlu IEtjb25maWcuDQoNCj4gPiArICAgICBpZiAoIXR5cGVfYy0+cG9ydCkgew0KPiANCj4gKHNuaXAp DQo+IA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIHR5cGVfYy0+cG9ydCA9IHR5cGVjX3JlZ2lz dGVyX3BvcnQodHlwZV9jLT5kZXYsDQo+ICZ0eXBlY19jYXApOw0KPiA+ICsgICAgICAgICAgICAg aWYgKElTX0VSUih0eXBlX2MtPnBvcnQpKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gUFRSX0VSUih0eXBlX2MtPnBvcnQpOw0KPiA+ICsgICAgIH0+ICsjZW5kaWYgLyogQ09ORklH X1RZUEVDICovDQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICtzdGF0aWMgaW50IGV4dGNvbl9ydGtfdHlwZV9jX2VkZXZfcmVnaXN0ZXIoc3RydWN0IHR5cGVf Y19kYXRhICp0eXBlX2MpDQo+ID4gK3sNCj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0 eXBlX2MtPmRldjsNCj4gPiArICAgICBpbnQgcmV0ID0gMDsNCj4gPiArDQo+ID4gKyAgICAgdHlw ZV9jLT5lZGV2ID0gZGV2bV9leHRjb25fZGV2X2FsbG9jYXRlKGRldiwgdXNiX3R5cGVfY19jYWJs ZSk7DQo+ID4gKyAgICAgaWYgKElTX0VSUih0eXBlX2MtPmVkZXYpKSB7DQo+ID4gKyAgICAgICAg ICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBhbGxvY2F0ZSBleHRjb24gZGV2aWNlXG4iKTsN Cj4gPiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ ID4gKyAgICAgcmV0ID0gZGV2bV9leHRjb25fZGV2X3JlZ2lzdGVyKGRldiwgdHlwZV9jLT5lZGV2 KTsNCj4gPiArICAgICBpZiAocmV0IDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vycihk ZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgZXh0Y29uIGRldmljZVxuIik7DQo+ID4gKyAgICAgICAg ICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgZXh0Y29uX3Nl dF9wcm9wZXJ0eV9jYXBhYmlsaXR5KHR5cGVfYy0+ZWRldiwgRVhUQ09OX1VTQiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhUQ09OX1BST1BfVVNCX1ZCVVMpOw0K PiA+ICsgICAgIGV4dGNvbl9zZXRfcHJvcGVydHlfY2FwYWJpbGl0eSh0eXBlX2MtPmVkZXYsIEVY VENPTl9VU0IsDQo+ID4gKw0KPiBFWFRDT05fUFJPUF9VU0JfVFlQRUNfUE9MQVJJVFkpOw0KPiA+ ICsgICAgIGV4dGNvbl9zZXRfcHJvcGVydHlfY2FwYWJpbGl0eSh0eXBlX2MtPmVkZXYsIEVYVENP Tl9VU0IsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVENPTl9Q Uk9QX1VTQl9TUyk7DQo+ID4gKw0KPiA+ICsgICAgIGV4dGNvbl9zZXRfcHJvcGVydHlfY2FwYWJp bGl0eSh0eXBlX2MtPmVkZXYsIEVYVENPTl9VU0JfSE9TVCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRVhUQ09OX1BST1BfVVNCX1ZCVVMpOw0KPiA+ICsgICAgIGV4 dGNvbl9zZXRfcHJvcGVydHlfY2FwYWJpbGl0eSh0eXBlX2MtPmVkZXYsIEVYVENPTl9VU0JfSE9T VCwNCj4gPiArDQo+IEVYVENPTl9QUk9QX1VTQl9UWVBFQ19QT0xBUklUWSk7DQo+ID4gKyAgICAg ZXh0Y29uX3NldF9wcm9wZXJ0eV9jYXBhYmlsaXR5KHR5cGVfYy0+ZWRldiwgRVhUQ09OX1VTQl9I T1NULA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFRDT05fUFJP UF9VU0JfU1MpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IGV4dGNvbl9ydGtfdHlwZV9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+ID4gK3sNCj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRl di0+ZGV2Ow0KPiA+ICsgICAgIHN0cnVjdCB0eXBlX2NfZGF0YSAqdHlwZV9jOw0KPiA+ICsgICAg IGNvbnN0IHN0cnVjdCB0eXBlX2NfY2ZnICp0eXBlX2NfY2ZnOw0KPiA+ICsgICAgIHVuc2lnbmVk IGludCBncGlvOw0KPiA+ICsgICAgIGludCByZXQgPSAwOw0KPiA+ICsNCj4gPiArICAgICB0eXBl X2MgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnR5cGVfYyksIEdGUF9LRVJORUwpOw0KPiA+ ICsgICAgIGlmICghdHlwZV9jKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ ID4gKw0KPiA+ICsgICAgIHR5cGVfYy0+cmVnX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBf cmVzb3VyY2UocGRldiwgMCk7DQo+ID4gKyAgICAgaWYgKElTX0VSUih0eXBlX2MtPnJlZ19iYXNl KSkNCj4gPiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHR5cGVfYy0+cmVnX2Jhc2UpOw0K PiA+ICsNCj4gPiArICAgICB0eXBlX2MtPmRldiA9IGRldjsNCj4gPiArDQo+ID4gKyAgICAgdHlw ZV9jLT5pcnEgPSBpcnFfb2ZfcGFyc2VfYW5kX21hcChwZGV2LT5kZXYub2Zfbm9kZSwgMCk7DQo+ ID4gKyAgICAgaWYgKHR5cGVfYy0+aXJxIDw9IDApIHsNCj4gPiArICAgICAgICAgICAgIGRldl9l cnIoJnBkZXYtPmRldiwgIlR5cGUgQyBkcml2ZXIgd2l0aCBubyBJUlEuIENoZWNrICVzDQo+IHNl dHVwIVxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X25hbWUoJnBkZXYtPmRldikp Ow0KPiA+ICsgICAgICAgICAgICAgcmV0ID0gLUVOT0RFVjsNCj4gPiArICAgICAgICAgICAgIGdv dG8gZXJyMTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGRldm1fcmVxdWVz dF9pcnEoZGV2LCB0eXBlX2MtPmlycSwgdHlwZV9jX2RldGVjdF9pcnEsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJUlFGX1NIQVJFRCwgInR5cGVfY19kZXRlY3QiLCB0eXBlX2Mp Ow0KPiA+ICsNCj4gPiArICAgICBzcGluX2xvY2tfaW5pdCgmdHlwZV9jLT5sb2NrKTsNCj4gPiAr DQo+ID4gKyAgICAgdHlwZV9jLT5yZF9jdHJsX2dwaW8gPSAtMTsNCj4gPiArICAgICBpZiAoc29j X2RldmljZV9tYXRjaChydGtfc29jX2t5bGluKSkgew0KPiA+ICsgICAgICAgICAgICAgZ3BpbyA9 IG9mX2dldF9uYW1lZF9ncGlvKGRldi0+b2Zfbm9kZSwNCj4gInJlYWx0ZWsscmQtY3RybC1ncGlv IiwgMCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoZ3Bpb19pc192YWxpZChncGlvKSkgew0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICB0eXBlX2MtPnJkX2N0cmxfZ3BpbyA9IGdwaW87DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoZGV2LCAiJXMgZ2V0IHJkLWN0cmwtZ3BpbyAo aWQ9JWQpIE9LXG4iLA0KPiBfX2Z1bmNfXywgZ3Bpbyk7DQo+ID4gKyAgICAgICAgICAgICB9IGVs c2Ugew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkVycm9yIHJkX2N0 cmwtZ3BpbyBubyBmb3VuZCIpOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgdHlwZV9jX2NmZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYp Ow0KPiA+ICsgICAgIGlmICghdHlwZV9jX2NmZykgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vy cihkZXYsICJ0eXBlX2MgY29uZmlnIGFyZSBub3QgYXNzaWduZWQhXG4iKTsNCj4gPiArICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgdHlw ZV9jLT50eXBlX2NfY2ZnID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp0eXBlX2NfY2ZnKSwN Cj4gR0ZQX0tFUk5FTCk7DQo+ID4gKw0KPiA+ICsgICAgIG1lbWNweSh0eXBlX2MtPnR5cGVfY19j ZmcsIHR5cGVfY19jZmcsIHNpemVvZigqdHlwZV9jX2NmZykpOw0KPiA+ICsNCj4gPiArICAgICBp ZiAoc2V0dXBfdHlwZV9jX3BhcmFtZXRlcih0eXBlX2MpKSB7DQo+ID4gKyAgICAgICAgICAgICBk ZXZfZXJyKGRldiwgIkVSUk9SOiAlcyB0byBzZXR1cCB0eXBlIGMgcGFyYW1ldGVyISEiLA0KPiBf X2Z1bmNfXyk7DQo+ID4gKyAgICAgICAgICAgICByZXQgPSAtRUlOVkFMOw0KPiA+ICsgICAgICAg ICAgICAgZ290byBlcnIxOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgSU5JVF9ERUxB WUVEX1dPUksoJnR5cGVfYy0+ZGVsYXllZF93b3JrLCBob3N0X2RldmljZV9zd2l0Y2gpOw0KPiA+ ICsNCj4gPiArICAgICByZXQgPSBleHRjb25fcnRrX3R5cGVfY19pbml0KHR5cGVfYyk7DQo+ID4g KyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICIlcyBmYWls ZWQgdG8gaW5pdCB0eXBlX2NcbiIsIF9fZnVuY19fKTsNCj4gPiArICAgICAgICAgICAgIGdvdG8g ZXJyMTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIHR5cGVfYyk7DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGV4dGNvbl9ydGtfdHlwZV9j X2VkZXZfcmVnaXN0ZXIodHlwZV9jKTsNCj4gPiArDQo+ID4gKyAgICAgY3JlYXRlX2RlYnVnX2Zp bGVzKHR5cGVfYyk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArZXJy MToNCj4gPiArICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICIlczogUHJvYmUgZmFpbCwgJWRcbiIs IF9fZnVuY19fLCByZXQpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBleHRjb25fcnRrX3R5cGVfY19yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRl diA9ICZwZGV2LT5kZXY7DQo+ID4gKyAgICAgc3RydWN0IHR5cGVfY19kYXRhICp0eXBlX2MgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArICAgICB1MzIgZGVmYXVsdF9jdHJsOw0KPiA+ICsg ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ID4gKw0KPiA+ICsgICAgIHJlbW92ZV9kZWJ1Z19m aWxlcyh0eXBlX2MpOw0KPiA+ICsNCj4gPiArI2lmZGVmIENPTkZJR19UWVBFQw0KPiA+ICsgICAg IGlmICh0eXBlX2MtPnBvcnQpIHsNCj4gPiArICAgICAgICAgICAgIHR5cGVjX3VucmVnaXN0ZXJf cG9ydCh0eXBlX2MtPnBvcnQpOw0KPiA+ICsgICAgICAgICAgICAgdHlwZV9jLT5wb3J0ID0gTlVM TDsNCj4gPiArICAgICB9DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArICAgICBjYW5jZWxfZGVs YXllZF93b3JrX3N5bmMoJnR5cGVfYy0+ZGVsYXllZF93b3JrKTsNCj4gPiArICAgICBmbHVzaF9k ZWxheWVkX3dvcmsoJnR5cGVfYy0+ZGVsYXllZF93b3JrKTsNCj4gPiArICAgICBXQVJOX09OX09O Q0UoZGVsYXllZF93b3JrX3BlbmRpbmcoJnR5cGVfYy0+ZGVsYXllZF93b3JrKSk7DQo+ID4gKw0K PiA+ICsgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZ0eXBlX2MtPmxvY2ssIGZsYWdzKTsNCj4gPiAr ICAgICAvKiBkaXNhYmxlIGludGVycnVwdCAqLw0KPiA+ICsgICAgIGRlZmF1bHRfY3RybCA9IHJl YWRsKHR5cGVfYy0+cmVnX2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTCkgJg0KPiA+ICsgICAgICAgICAg ICAgICAgIERFQk9VTkNFX1RJTUVfTUFTSzsNCj4gPiArICAgICB3cml0ZWwoZGVmYXVsdF9jdHJs LCB0eXBlX2MtPnJlZ19iYXNlICsgVVNCX1RZUEVDX0NUUkwpOw0KPiA+ICsNCj4gPiArICAgICAv KiBkaXNhYmxlIGNjIGRldGVjdCwgcnAsIHJkICovDQo+ID4gKyAgICAgd3JpdGVsKFBMUl9FTiwg dHlwZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMX0NDMV8wKTsNCj4gPiArICAgICB3cml0 ZWwoMCwgdHlwZV9jLT5yZWdfYmFzZSArIFVTQl9UWVBFQ19DVFJMX0NDMl8wKTsNCj4gPiArDQo+ ID4gKyAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdHlwZV9jLT5sb2NrLCBmbGFncyk7DQo+ ID4gKw0KPiA+ICsgICAgIGZyZWVfaXJxKHR5cGVfYy0+aXJxLCB0eXBlX2MpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHR5cGVfY19jZmcgcnRkMTI5NV90eXBlX2Nf Y2ZnID0gew0KPiA+ICsgICAgIC5wYXJhbWV0ZXJfdmVyID0gUEFSQU1FVEVSX1YwLA0KPiA+ICsg ICAgIC5jY19kZnBfbW9kZSA9IENDX01PREVfREZQXzNfMCwNCj4gPiArICAgICAuY2MxX3BhcmFt ID0geyAucnBfNHA3a19jb2RlID0gMHhiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5ycF8z NmtfY29kZSA9IDB4MTcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJwXzEya19jb2RlID0g MHgxMCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAucmRfY29kZSA9IDAsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgLnJhX2NvZGUgPSAwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52 cmVmXzJwNnYgPSAweDAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMXAyM3YgPSAw eDAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHA4diA9IDB4MywNCj4gPiArICAg ICAgICAgICAgICAgICAgICAudnJlZl8wcDY2diA9IDB4MCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAudnJlZl8wcDR2ID0gMHgwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBw MnYgPSAweDQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMV8xcDZ2ID0gMCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wXzFwNnYgPSAwIH0sDQo+ID4gKyAgICAgLmNj Ml9wYXJhbSA9IHsgLnJwXzRwN2tfY29kZSA9IDB4YywNCj4gPiArICAgICAgICAgICAgICAgICAg ICAucnBfMzZrX2NvZGUgPSAweDE3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5ycF8xMmtf Y29kZSA9IDB4MTIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJkX2NvZGUgPSAwLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIC5yYV9jb2RlID0gMCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAudnJlZl8ycDZ2ID0gMHgyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzFw MjN2ID0gMHgwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwOHYgPSAweDMsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHA2NnYgPSAweDAsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgLnZyZWZfMHA0diA9IDB4MCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAu dnJlZl8wcDJ2ID0gMHg1LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzFfMXA2diA9 IDAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMF8xcDZ2ID0gMCB9LA0KPiA+ICsg ICAgIC5kZWJvdW5jZV92YWwgPSAweDdmLCAvKiAxYiwxdXMgN2YsNC43dXMgKi8NCj4gPiArICAg ICAudXNlX2RlZmFsdXRfcGFyYW1ldGVyID0gZmFsc2UsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHR5cGVfY19jZmcgcnRkMTM5NV90eXBlX2NfY2ZnID0gew0KPiA+ ICsgICAgIC5wYXJhbWV0ZXJfdmVyID0gUEFSQU1FVEVSX1YwLA0KPiA+ICsgICAgIC5jY19kZnBf bW9kZSA9IENDX01PREVfREZQXzNfMCwNCj4gPiArICAgICAuY2MxX3BhcmFtID0geyAucnBfNHA3 a19jb2RlID0gMHhjLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5ycF8zNmtfY29kZSA9IDB4 YiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAucnBfMTJrX2NvZGUgPSAweGUsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgLnJkX2NvZGUgPSAweDEwLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIC5yYV9jb2RlID0gMHgwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzJwNnYg PSAweDAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMXAyM3YgPSAweDEsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHA4diA9IDB4MCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAudnJlZl8wcDY2diA9IDB4MCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJl Zl8wcDR2ID0gMHgzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwMnYgPSAweDAs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMV8xcDZ2ID0gMHg3LA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIC52cmVmXzBfMXA2diA9IDB4NyB9LA0KPiA+ICsgICAgIC5jYzJfcGFy YW0gPSB7IC5ycF80cDdrX2NvZGUgPSAweGIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJw XzM2a19jb2RlID0gMHg5LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5ycF8xMmtfY29kZSA9 IDB4ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAucmRfY29kZSA9IDB4ZiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAucmFfY29kZSA9IDB4MCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAudnJlZl8ycDZ2ID0gMHgxLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzFwMjN2 ID0gMHgzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwOHYgPSAweDMsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHA2NnYgPSAweDIsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgLnZyZWZfMHA0diA9IDB4MywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJl Zl8wcDJ2ID0gMHgyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzFfMXA2diA9IDB4 NywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wXzFwNnYgPSAweDcgfSwNCj4gPiAr ICAgICAuZGVib3VuY2VfdmFsID0gMHg3ZiwgLyogMWIsMXVzIDdmLDQuN3VzICovDQo+ID4gKyAg ICAgLnVzZV9kZWZhbHV0X3BhcmFtZXRlciA9IGZhbHNlLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RhdGljIGNvbnN0IHN0cnVjdCB0eXBlX2NfY2ZnIHJ0ZDE2MTlfdHlwZV9jX2NmZyA9IHsNCj4g PiArICAgICAucGFyYW1ldGVyX3ZlciA9IFBBUkFNRVRFUl9WMCwNCj4gPiArICAgICAuY2NfZGZw X21vZGUgPSBDQ19NT0RFX0RGUF8zXzAsDQo+ID4gKyAgICAgLmNjMV9wYXJhbSA9IHsgLnJwXzRw N2tfY29kZSA9IDB4YywNCj4gPiArICAgICAgICAgICAgICAgICAgICAucnBfMzZrX2NvZGUgPSAw eGYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJwXzEya19jb2RlID0gMHhlLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIC5yZF9jb2RlID0gMHgxMSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAucmFfY29kZSA9IDB4MCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8ycDZ2 ID0gMHg1LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzFwMjN2ID0gMHg3LA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwOHYgPSAweGEsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgLnZyZWZfMHA2NnYgPSAweGEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZy ZWZfMHA0diA9IDB4MywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDJ2ID0gMHgy LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzFfMXA2diA9IDB4NywNCj4gPiArICAg ICAgICAgICAgICAgICAgICAudnJlZl8wXzFwNnYgPSAweDcgfSwNCj4gPiArICAgICAuY2MyX3Bh cmFtID0geyAucnBfNHA3a19jb2RlID0gMHhjLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5y cF8zNmtfY29kZSA9IDB4ZiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAucnBfMTJrX2NvZGUg PSAweGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJkX2NvZGUgPSAweGYsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgLnJhX2NvZGUgPSAweDAsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgLnZyZWZfMnA2diA9IDB4NSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8xcDIz diA9IDB4OCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDh2ID0gMHhhLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwNjZ2ID0gMHhhLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIC52cmVmXzBwNHYgPSAweDMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZy ZWZfMHAydiA9IDB4MiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8xXzFwNnYgPSAw eDcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMF8xcDZ2ID0gMHg3IH0sDQo+ID4g KyAgICAgLmRlYm91bmNlX3ZhbCA9IDB4N2YsIC8qIDFiLDF1cyA3Ziw0Ljd1cyAqLw0KPiA+ICsg ICAgIC51c2VfZGVmYWx1dF9wYXJhbWV0ZXIgPSBmYWxzZSwNCj4gPiArfTsNCj4gPiArDQo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgdHlwZV9jX2NmZyBydGQxMzE5X3R5cGVfY19jZmcgPSB7DQo+ ID4gKyAgICAgLnBhcmFtZXRlcl92ZXIgPSBQQVJBTUVURVJfVjAsDQo+ID4gKyAgICAgLmNjX2Rm cF9tb2RlID0gQ0NfTU9ERV9ERlBfMV81LA0KPiA+ICsgICAgIC5jYzFfcGFyYW0gPSB7IC5ycF80 cDdrX2NvZGUgPSAweDksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJwXzM2a19jb2RlID0g MHhlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5ycF8xMmtfY29kZSA9IDB4OSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAucmRfY29kZSA9IDB4OSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAucmFfY29kZSA9IDB4NywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8ycDZ2 ID0gMHgzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzFwMjN2ID0gMHg3LA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwOHYgPSAweDcsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgLnZyZWZfMHA2NnYgPSAweDYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZy ZWZfMHA0diA9IDB4MiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDJ2ID0gMHgz LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzFfMXA2diA9IDB4NCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAudnJlZl8wXzFwNnYgPSAweDcgfSwNCj4gPiArICAgICAuY2MyX3Bh cmFtID0geyAucnBfNHA3a19jb2RlID0gMHg4LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5y cF8zNmtfY29kZSA9IDB4ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAucnBfMTJrX2NvZGUg PSAweDksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJkX2NvZGUgPSAweDksDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgLnJhX2NvZGUgPSAweDcsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgLnZyZWZfMnA2diA9IDB4MywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8xcDIz diA9IDB4NywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDh2ID0gMHg3LA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwNjZ2ID0gMHg2LA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIC52cmVmXzBwNHYgPSAweDMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZy ZWZfMHAydiA9IDB4MywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8xXzFwNnYgPSAw eDYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMF8xcDZ2ID0gMHg3IH0sDQo+ID4g KyAgICAgLmRlYm91bmNlX3ZhbCA9IDB4N2YsIC8qIDFiLDF1cyA3Ziw0Ljd1cyAqLw0KPiA+ICsg ICAgIC51c2VfZGVmYWx1dF9wYXJhbWV0ZXIgPSBmYWxzZSwNCj4gPiArfTsNCj4gPiArDQo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgdHlwZV9jX2NmZyBydGQxMzEyY190eXBlX2NfY2ZnID0gew0K PiA+ICsgICAgIC5wYXJhbWV0ZXJfdmVyID0gUEFSQU1FVEVSX1YwLA0KPiA+ICsgICAgIC5jY19k ZnBfbW9kZSA9IENDX01PREVfREZQXzFfNSwNCj4gPiArICAgICAuY2MxX3BhcmFtID0geyAucnBf NHA3a19jb2RlID0gMHhlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5ycF8zNmtfY29kZSA9 IDB4YywNCj4gPiArICAgICAgICAgICAgICAgICAgICAucnBfMTJrX2NvZGUgPSAweGMsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgLnJkX2NvZGUgPSAweGEsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgLnJhX2NvZGUgPSAweDMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMnA2 diA9IDB4YSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8xcDIzdiA9IDB4NywNCj4g PiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDh2ID0gMHg3LA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIC52cmVmXzBwNjZ2ID0gMHg3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52 cmVmXzBwNHYgPSAweDQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHAydiA9IDB4 NCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8xXzFwNnYgPSAweDcsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgLnZyZWZfMF8xcDZ2ID0gMHg3IH0sDQo+ID4gKyAgICAgLmNjMl9w YXJhbSA9IHsgLnJwXzRwN2tfY29kZSA9IDB4ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAu cnBfMzZrX2NvZGUgPSAweGMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJwXzEya19jb2Rl ID0gMHhjLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5yZF9jb2RlID0gMHhhLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIC5yYV9jb2RlID0gMHgzLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIC52cmVmXzJwNnYgPSAweGEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMXAy M3YgPSAweDcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHA4diA9IDB4NywNCj4g PiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDY2diA9IDB4NywNCj4gPiArICAgICAgICAg ICAgICAgICAgICAudnJlZl8wcDR2ID0gMHg0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52 cmVmXzBwMnYgPSAweDQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMV8xcDZ2ID0g MHg3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBfMXA2diA9IDB4NyB9LA0KPiA+ ICsgICAgIC5kZWJvdW5jZV92YWwgPSAweDdmLCAvKiAxYiwxdXMgN2YsNC43dXMgKi8NCj4gPiAr ICAgICAudXNlX2RlZmFsdXRfcGFyYW1ldGVyID0gZmFsc2UsDQo+ID4gK307DQo+ID4gKw0KPiA+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IHR5cGVfY19jZmcgcnRkMTYxOWJfdHlwZV9jX2NmZyA9IHsN Cj4gPiArICAgICAucGFyYW1ldGVyX3ZlciA9IFBBUkFNRVRFUl9WMSwNCj4gPiArICAgICAuY2Nf ZGZwX21vZGUgPSBDQ19NT0RFX0RGUF8xXzUsDQo+ID4gKyAgICAgLmNjMV9wYXJhbSA9IHsgLnJw XzRwN2tfY29kZSA9IDB4ZiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAucnBfMzZrX2NvZGUg PSAweGYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJwXzEya19jb2RlID0gMHhmLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIC5yZF9jb2RlID0gMHhmLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIC5yYV9jb2RlID0gMHg3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzJw NnYgPSAweDksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMXAyM3YgPSAweDcsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHA4diA9IDB4OSwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAudnJlZl8wcDY2diA9IDB4OCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAu dnJlZl8wcDR2ID0gMHg3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwMnYgPSAw eDksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMV8xcDZ2ID0gMHg3LA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIC52cmVmXzBfMXA2diA9IDB4NyB9LA0KPiA+ICsgICAgIC5jYzJf cGFyYW0gPSB7IC5ycF80cDdrX2NvZGUgPSAweGYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg LnJwXzM2a19jb2RlID0gMHhmLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5ycF8xMmtfY29k ZSA9IDB4ZiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAucmRfY29kZSA9IDB4ZiwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAucmFfY29kZSA9IDB4NywNCj4gPiArICAgICAgICAgICAgICAg ICAgICAudnJlZl8xcDIzdiA9IDB4NywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8w cDh2ID0gMHg5LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwNjZ2ID0gMHg4LA0K PiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwNHYgPSAweDcsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgLnZyZWZfMHAydiA9IDB4OCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAu dnJlZl8xXzFwNnYgPSAweDcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMF8xcDZ2 ID0gMHg3IH0sDQo+ID4gKyAgICAgLmRlYm91bmNlX3ZhbCA9IDB4N2YsIC8qIDFiLDF1cyA3Ziw0 Ljd1cyAqLw0KPiA+ICsgICAgIC51c2VfZGVmYWx1dF9wYXJhbWV0ZXIgPSBmYWxzZSwNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdHlwZV9jX2NmZyBydGQxMzE5ZF90 eXBlX2NfY2ZnID0gew0KPiA+ICsgICAgIC5wYXJhbWV0ZXJfdmVyID0gUEFSQU1FVEVSX1YxLA0K PiA+ICsgICAgIC5jY19kZnBfbW9kZSA9IENDX01PREVfREZQXzFfNSwNCj4gPiArICAgICAuY2Mx X3BhcmFtID0geyAucnBfNHA3a19jb2RlID0gMHhlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg IC5ycF8zNmtfY29kZSA9IDB4MywNCj4gPiArICAgICAgICAgICAgICAgICAgICAucnBfMTJrX2Nv ZGUgPSAweGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJkX2NvZGUgPSAweGYsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgLnJhX2NvZGUgPSAweDYsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgLnZyZWZfMnA2diA9IDB4NywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8x cDIzdiA9IDB4NywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDh2ID0gMHg4LA0K PiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBwNjZ2ID0gMHg3LA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIC52cmVmXzBwNHYgPSAweDcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg LnZyZWZfMHAydiA9IDB4NywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8xXzFwNnYg PSAweDcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMF8xcDZ2ID0gMHg3IH0sDQo+ ID4gKyAgICAgLmNjMl9wYXJhbSA9IHsgLnJwXzRwN2tfY29kZSA9IDB4ZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAucnBfMzZrX2NvZGUgPSAweDMsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgLnJwXzEya19jb2RlID0gMHhlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5yZF9jb2Rl ID0gMHhmLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5yYV9jb2RlID0gMHg2LA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIC52cmVmXzJwNnYgPSAweDcsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgLnZyZWZfMXAyM3YgPSAweDcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZf MHA4diA9IDB4OCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDY2diA9IDB4NywN Cj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDR2ID0gMHg3LA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIC52cmVmXzBwMnYgPSAweDgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg LnZyZWZfMV8xcDZ2ID0gMHg3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBfMXA2 diA9IDB4NyB9LA0KPiA+ICsgICAgIC5kZWJvdW5jZV92YWwgPSAweDdmLCAvKiAxYiwxdXMgN2Ys NC43dXMgKi8NCj4gPiArICAgICAudXNlX2RlZmFsdXRfcGFyYW1ldGVyID0gZmFsc2UsDQo+ID4g K307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHR5cGVfY19jZmcgcnRkMTMxNWVf dHlwZV9jX2NmZyA9IHsNCj4gPiArICAgICAucGFyYW1ldGVyX3ZlciA9IFBBUkFNRVRFUl9WMSwN Cj4gPiArICAgICAuY2NfZGZwX21vZGUgPSBDQ19NT0RFX0RGUF8xXzUsDQo+ID4gKyAgICAgLmNj MV9wYXJhbSA9IHsgLnJwXzRwN2tfY29kZSA9IDB4ZSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAucnBfMzZrX2NvZGUgPSAweDMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnJwXzEya19j b2RlID0gMHhlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC5yZF9jb2RlID0gMHhmLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIC5yYV9jb2RlID0gMHg2LA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIC52cmVmXzJwNnYgPSAweDcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZf MXAyM3YgPSAweDcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHA4diA9IDB4OCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wcDY2diA9IDB4NywNCj4gPiArICAgICAg ICAgICAgICAgICAgICAudnJlZl8wcDR2ID0gMHg3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAg IC52cmVmXzBwMnYgPSAweDcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMV8xcDZ2 ID0gMHg3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVmXzBfMXA2diA9IDB4NyB9LA0K PiA+ICsgICAgIC5jYzJfcGFyYW0gPSB7IC5ycF80cDdrX2NvZGUgPSAweGUsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgLnJwXzM2a19jb2RlID0gMHgzLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIC5ycF8xMmtfY29kZSA9IDB4ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAucmRfY29k ZSA9IDB4ZiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAucmFfY29kZSA9IDB4NiwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAudnJlZl8ycDZ2ID0gMHg3LA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIC52cmVmXzFwMjN2ID0gMHg3LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIC52cmVm XzBwOHYgPSAweDgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHA2NnYgPSAweDcs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgLnZyZWZfMHA0diA9IDB4NywNCj4gPiArICAgICAg ICAgICAgICAgICAgICAudnJlZl8wcDJ2ID0gMHg4LA0KPiA+ICsgICAgICAgICAgICAgICAgICAg IC52cmVmXzFfMXA2diA9IDB4NywNCj4gPiArICAgICAgICAgICAgICAgICAgICAudnJlZl8wXzFw NnYgPSAweDcgfSwNCj4gPiArICAgICAuZGVib3VuY2VfdmFsID0gMHg3ZiwgLyogMWIsMXVzIDdm LDQuN3VzICovDQo+ID4gKyAgICAgLnVzZV9kZWZhbHV0X3BhcmFtZXRlciA9IGZhbHNlLA0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZXh0Y29u X3J0a190eXBlX2NfbWF0Y2hbXSA9IHsNCj4gPiArICAgICB7IC5jb21wYXRpYmxlID0gInJlYWx0 ZWsscnRkMTI5NS10eXBlLWMiLCAuZGF0YSA9DQo+ICZydGQxMjk1X3R5cGVfY19jZmcgfSwNCj4g PiArICAgICB7IC5jb21wYXRpYmxlID0gInJlYWx0ZWsscnRkMTMxMmMtdHlwZS1jIiwgLmRhdGEg PQ0KPiAmcnRkMTMxMmNfdHlwZV9jX2NmZyB9LA0KPiA+ICsgICAgIHsgLmNvbXBhdGlibGUgPSAi cmVhbHRlayxydGQxMzE1ZS10eXBlLWMiLCAuZGF0YSA9DQo+ICZydGQxMzE1ZV90eXBlX2NfY2Zn IH0sDQo+ID4gKyAgICAgeyAuY29tcGF0aWJsZSA9ICJyZWFsdGVrLHJ0ZDEzMTktdHlwZS1jIiwg LmRhdGEgPQ0KPiAmcnRkMTMxOV90eXBlX2NfY2ZnIH0sDQo+ID4gKyAgICAgeyAuY29tcGF0aWJs ZSA9ICJyZWFsdGVrLHJ0ZDEzMTlkLXR5cGUtYyIsIC5kYXRhID0NCj4gJnJ0ZDEzMTlkX3R5cGVf Y19jZmcgfSwNCj4gPiArICAgICB7IC5jb21wYXRpYmxlID0gInJlYWx0ZWsscnRkMTM5NS10eXBl LWMiLCAuZGF0YSA9DQo+ICZydGQxMzk1X3R5cGVfY19jZmcgfSwNCj4gPiArICAgICB7IC5jb21w YXRpYmxlID0gInJlYWx0ZWsscnRkMTYxOS10eXBlLWMiLCAuZGF0YSA9DQo+ICZydGQxNjE5X3R5 cGVfY19jZmcgfSwNCj4gPiArICAgICB7IC5jb21wYXRpYmxlID0gInJlYWx0ZWsscnRkMTYxOWIt dHlwZS1jIiwgLmRhdGEgPQ0KPiAmcnRkMTYxOWJfdHlwZV9jX2NmZyB9LA0KPiA+ICsgICAgIHt9 LA0KPiA+ICt9Ow0KPiA+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBleHRjb25fcnRrX3R5cGVf Y19tYXRjaCk7DQo+ID4gKw0KPiA+ICsjaWZkZWYgQ09ORklHX1BNX1NMRUVQDQo+ID4gK3N0YXRp YyBpbnQgZXh0Y29uX3J0a190eXBlX2NfcHJlcGFyZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4g K3sNCj4gPiArICAgICBzdHJ1Y3QgdHlwZV9jX2RhdGEgKnR5cGVfYyA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOw0KPiA+ICsgICAgIHUzMiBkZWZhdWx0X2N0cmw7DQo+ID4gKyAgICAgdW5zaWduZWQg bG9uZyBmbGFnczsNCj4gPiArDQo+ID4gKyAgICAgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZ0 eXBlX2MtPmRlbGF5ZWRfd29yayk7DQo+ID4gKyAgICAgZmx1c2hfZGVsYXllZF93b3JrKCZ0eXBl X2MtPmRlbGF5ZWRfd29yayk7DQo+ID4gKyAgICAgV0FSTl9PTl9PTkNFKGRlbGF5ZWRfd29ya19w ZW5kaW5nKCZ0eXBlX2MtPmRlbGF5ZWRfd29yaykpOw0KPiA+ICsNCj4gPiArICAgICBzcGluX2xv Y2tfaXJxc2F2ZSgmdHlwZV9jLT5sb2NrLCBmbGFncyk7DQo+ID4gKyAgICAgLyogZGlzYWJsZSBp bnRlcnJ1cHQgKi8NCj4gPiArICAgICBkZWZhdWx0X2N0cmwgPSByZWFkbCh0eXBlX2MtPnJlZ19i YXNlICsgVVNCX1RZUEVDX0NUUkwpICYNCj4gPiArICAgICAgICAgICAgICAgICBERUJPVU5DRV9U SU1FX01BU0s7DQo+ID4gKyAgICAgd3JpdGVsKGRlZmF1bHRfY3RybCwgdHlwZV9jLT5yZWdfYmFz ZSArIFVTQl9UWVBFQ19DVFJMKTsNCj4gPiArDQo+ID4gKyAgICAgLyogZGlzYWJsZSBjYyBkZXRl Y3QsIHJwLCByZCAqLw0KPiA+ICsgICAgIHdyaXRlbChQTFJfRU4sIHR5cGVfYy0+cmVnX2Jhc2Ug KyBVU0JfVFlQRUNfQ1RSTF9DQzFfMCk7DQo+ID4gKyAgICAgd3JpdGVsKDAsIHR5cGVfYy0+cmVn X2Jhc2UgKyBVU0JfVFlQRUNfQ1RSTF9DQzJfMCk7DQo+ID4gKw0KPiA+ICsgICAgIHNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnR5cGVfYy0+bG9jaywgZmxhZ3MpOw0KPiA+ICsNCj4gPiArICAgICBy ZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgZXh0Y29uX3J0a190eXBl X2NfY29tcGxldGUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4gKyAgICAgLyogbm90 aGluZyAqLw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGV4dGNvbl9ydGtfdHlwZV9j X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IHR5 cGVfY19kYXRhICp0eXBlX2MgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArDQo+ID4gKyAg ICAgaWYgKHR5cGVfYy0+cmRfY3RybF9ncGlvICE9IC0xKQ0KPiANCj4gZGl0dG8uDQo+IA0KPiA+ ICsgICAgICAgICAgICAgZ3Bpb19mcmVlKHR5cGVfYy0+cmRfY3RybF9ncGlvKTsNCj4gPiArDQo+ ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZXh0Y29u X3J0a190eXBlX2NfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPiArew0KPiA+ICsgICAg IHN0cnVjdCB0eXBlX2NfZGF0YSAqdHlwZV9jID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4g Kw0KPiA+ICsgICAgIGV4dGNvbl9ydGtfdHlwZV9jX2luaXQodHlwZV9jKTsNCj4gPiArDQo+ID4g KyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGV2X3BtX29wcyBleHRjb25fcnRrX3R5cGVfY19wbV9vcHMgPSB7DQo+ID4gKyAgICAgU0VUX0xB VEVfU1lTVEVNX1NMRUVQX1BNX09QUyhleHRjb25fcnRrX3R5cGVfY19zdXNwZW5kLA0KPiBleHRj b25fcnRrX3R5cGVfY19yZXN1bWUpDQo+ID4gKyAgICAgLnByZXBhcmUgPSBleHRjb25fcnRrX3R5 cGVfY19wcmVwYXJlLA0KPiA+ICsgICAgIC5jb21wbGV0ZSA9IGV4dGNvbl9ydGtfdHlwZV9jX2Nv bXBsZXRlLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBERVZfUE1fT1BTICAgKCZleHRj b25fcnRrX3R5cGVfY19wbV9vcHMpDQo+ID4gKyNlbHNlDQo+ID4gKyNkZWZpbmUgREVWX1BNX09Q UyAgIE5VTEwNCj4gPiArI2VuZGlmIC8qIENPTkZJR19QTV9TTEVFUCAqLw0KPiA+ICsNCj4gPiAr c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZXh0Y29uX3J0a190eXBlX2NfZHJpdmVyID0g ew0KPiA+ICsgICAgIC5wcm9iZSAgICAgICAgICA9IGV4dGNvbl9ydGtfdHlwZV9jX3Byb2JlLA0K PiA+ICsgICAgIC5yZW1vdmVfbmV3ICAgICA9IGV4dGNvbl9ydGtfdHlwZV9jX3JlbW92ZSwNCj4g PiArICAgICAuZHJpdmVyICAgICAgICAgPSB7DQo+ID4gKyAgICAgICAgICAgICAubmFtZSAgID0g ImV4dGNvbi1ydGstdHlwZV9jIiwNCj4gPiArICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9 IGV4dGNvbl9ydGtfdHlwZV9jX21hdGNoLA0KPiA+ICsgICAgICAgICAgICAgLnBtID0gREVWX1BN X09QUywNCj4gPiArICAgICB9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArbW9kdWxlX3BsYXRmb3Jt X2RyaXZlcihleHRjb25fcnRrX3R5cGVfY19kcml2ZXIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0RF U0NSSVBUSU9OKCJSZWFsdGVrIEV4dGNvbiBUeXBlIEMgZHJpdmVyIik7DQo+ID4gK01PRFVMRV9B TElBUygicGxhdGZvcm06ZXh0Y29uLXJ0ay10eXBlLWMiKTsNCj4gPiArTU9EVUxFX0FVVEhPUigi U3RhbmxleSBDaGFuZyA8c3RhbmxleV9jaGFuZ0ByZWFsdGVrLmNvbT4iKTsNCj4gPiArTU9EVUxF X0xJQ0VOU0UoIkdQTCIpOw0KPiANCg0KVGhhbmtzLA0KU3RhbmxleQ0K