From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web09.2178.1603933929121617339 for ; Wed, 28 Oct 2020 18:12:09 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=nmB4dNiF; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: i74mUURbb70ugiNO4b0WioqNV5j6ykVCUpu7Oo2B+qIJlzNcX+gRwkOpjRZdn/+xG1P11QQqu7 /MkRUfCtwjtw== X-IronPort-AV: E=McAfee;i="6000,8403,9788"; a="253062495" X-IronPort-AV: E=Sophos;i="5.77,428,1596524400"; d="scan'208";a="253062495" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Oct 2020 18:12:08 -0700 IronPort-SDR: /GTN43kqML36EgPp9SDcHQRFbyWZqj4b4UumGxFYcGayvMNmIU1V00yUOdX0VcERuhqUwmAPBz zAYWVXrLt9XA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,428,1596524400"; d="scan'208";a="424899119" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga001.fm.intel.com with ESMTP; 28 Oct 2020 18:12:08 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 28 Oct 2020 18:12:07 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 28 Oct 2020 18:12:07 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.109) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Wed, 28 Oct 2020 18:12:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nagSiLqy3clDbbvZVskVbgF4x6dfWHKOqLnp43v2hSCHJlssBVW4LVEkhPm9RXlwjH7yHL+SbZKi2o/dtRM4GnKuPHt36J09Y1awoM98y1hd444yABXhaDpGpEhoOAlhtq9POnYf+6MWfoEbOA2rLpzD+4KmLQ32Q+guosucVmG+TtHLGGDZ+UuSP4L8gfYx5Rx6tzP9wnJO0Fw6Kdorv9/Ersr3ZcR6eu3bFg89dYP5SmmmkeuSshM1ANhQ9wdx4Jnv7lOHJOVq+KtV830nDwWhD1q3PG1skoftOndeOLoDw4DAhXwBD6RU91fOWfoKUy5oJTI0aqhbO6j8cU3P1Q== 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=j12Urx495Icf5ZL8svY9UrHOlYTdx4lzotk6268YfJI=; b=Hg9gw+Qv6uUtNsaFuqEdOijESjxVTLx2AkVa/aSwfiqQ0+HfD0mKCOdCDgqgMywFsDHWmKyPT9eyZfn4P1/cVPNDkfoDCeiKc9tov62KWV2yYQP0OxPsU9utOmU/erql4ZTKiNx9wuP2wvz+ThEjb6JE7F7dTlEDeB/scCB6cxcead9FlWLujW3uLR8U1sJ0YIyxdpyvPEGXjGug61MzHzLN5Idru0kqVVeJj2PchcHFaKj4bur3igwOdg9p/tEzfyd6bo4cpT1B5ZzNB9JyAe6Jehf1riz3t5sIOMGODPdCRWmCX6ligoCEtqRrNGbq53T/dlp+Mxau+J740Y954A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j12Urx495Icf5ZL8svY9UrHOlYTdx4lzotk6268YfJI=; b=nmB4dNiF1zqJda9wlFK8eOQGpX3ySWsFtSiILMc+XTdVyevSdFfJDQ48TBBFIddyHlan2wAWL5T4pldAxxxWuvPWTkiFmR4A9wr5K0Y8Tc+bANPUk4H7Ilcd0yDGyPnjWDZRmYjrAiOcofosDpeZraC6ULyTjEJKzwqQmqMXNxQ= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by BL0PR11MB3188.namprd11.prod.outlook.com (2603:10b6:208:61::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.21; Thu, 29 Oct 2020 01:12:05 +0000 Received: from MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::549f:678b:c83:fffd]) by MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::549f:678b:c83:fffd%4]) with mapi id 15.20.3477.029; Thu, 29 Oct 2020 01:12:05 +0000 From: "Michael D Kinney" To: "michael.kubacki@outlook.com" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Qian, Yi" , "Sun, Zailiang" Subject: Re: [edk2-platforms][PATCH v1 1/1] Vlv2TbltDevicePkg/FmpDeviceLib: Add LastAttemptStatus compatibility Thread-Topic: [edk2-platforms][PATCH v1 1/1] Vlv2TbltDevicePkg/FmpDeviceLib: Add LastAttemptStatus compatibility Thread-Index: AQHWmD4kh6Ei0ua3Q06xjbCxf/Gtp6mt7jWA Date: Thu, 29 Oct 2020 01:12:05 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: outlook.com; dkim=none (message not signed) header.d=none;outlook.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: aa03d9b7-5212-4e40-a2e4-08d87ba7a67b x-ms-traffictypediagnostic: BL0PR11MB3188: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: c7c/pqTtvP5PnsiY2lgK8QXqXnG0AIB87JBMGEgRkvwBJLVdBbF2xAUZRfni0p72GxEMNbe4Rrd05pXtRmF/CodzoEOJCZ34A8SVn7vArKNqXwrgBiskyC3rDXY4Y59aSjnygdId0FrtSJ+HoxPi/pLSGbw9zEyyD4ejVzMCOQw4LqV94ijO7zr4VElOjwogSmYKoMXP8eyPwK6UeChqBoBxP88sYx1eNuigcejmJ5PpqEa7COSs+QwIELtYym15qWlujS0THQSe+965CqsAknnSm8ZA5ldSO4jHNz5c0/pNnHuulgF6MOb8ILjgcS/L x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4461.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(396003)(136003)(366004)(376002)(39860400002)(9686003)(8676002)(26005)(186003)(66946007)(53546011)(6506007)(66476007)(76116006)(52536014)(7696005)(55016002)(71200400001)(66556008)(33656002)(316002)(30864003)(478600001)(107886003)(54906003)(8936002)(4326008)(86362001)(5660300002)(110136005)(2906002)(83380400001)(66446008)(64756008)(45080400002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: IaE1bDqJciw7/MQpZzUehNobV0RsEtZbGD9bS2WRZnlGLKX8DUTU5nd7XdermDpPegjLUbExdbRBpmlmpXcQWkNfjFZOXz3gQpM7sVLTfX/6QIA82l8/s5AOCSE6UpoSS0YZnF+teakdA3cIoq/9yCeG0TLRZMr4uTGvAbbgT5rYHTugGABAvYWUrleEIVzwVS5ID6V3lu/h+7lrfGb/UYY1vnhklsFcPXyn0Yj6WjTX10KRY/h9+oz1N4weF8CM5UUep4Evi7d5ng/EKkZy8E/DyLlyiF50TIKAHMaDX44vlURgg6JN9yZTrg/WY8FlrkntdqtB1CKALRvY50en+4ugaAMSYYEuQHgvp1xg6AFiKQQoElfya43IqAOX206gzhPjFWWMBnhOpN5ZitSgTkRu4PTOLKti+lB2iCRiXSgSnMEb0D7GAopH3TGEil7T28BuataSzAGOAeUQgj/PcVZ8fp6pKVKnd8xk5zJEnPqFvWZxgrwGfJd3H6PwEqSMQqkN+s5ipzAtbpW744SSBDBVIDGeMsAZ2WLXdZtLIcCwbCwmUSls1QaNyPbGAIC9pqQapoAcEAnyzXGCTnjRuMDNqBJ0d4BelN/gnlNxi8mKG7pdU9Isrw5GpufRAmrzICRHM/ZvWfo5pdVOffwH+A== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4461.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa03d9b7-5212-4e40-a2e4-08d87ba7a67b X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2020 01:12:05.4231 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FspK1k4kswgQVBN9XmOawCLmgo/qga4L3+3TIshUPWsZBeoXdf2/r0jkAPn1oCbVIQS8KOnn5mehIX8KKqni38gqzKL/6p9Th7ENXNXxkd4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3188 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KDQpJIGFsc28gdmVyaWZpZWQgYnVpbGQgYW5kIGJvb3QgYW5kIEZNUCBiYXNlZCBjYXBzdWxl IHVwZGF0ZXMgd29yayBhcyBleHBlY3RlZC4NCg0KVGVzdGVkLWJ5OiBNaWNoYWVsIEQgS2lubmV5 IDxNaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCg0KVGhhbmtzLA0KDQpNaWtlDQoNCg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBtaWNoYWVsLmt1YmFja2lAb3V0bG9v ay5jb20gPG1pY2hhZWwua3ViYWNraUBvdXRsb29rLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE9j dG9iZXIgMSwgMjAyMCAyOjU5IFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzog S2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgUWlhbiwgWWkg PHlpLnFpYW5AaW50ZWwuY29tPjsgU3VuLCBaYWlsaWFuZyA8emFpbGlhbmcuc3VuQGludGVsLmNv bT4NCj4gU3ViamVjdDogW2VkazItcGxhdGZvcm1zXVtQQVRDSCB2MSAxLzFdIFZsdjJUYmx0RGV2 aWNlUGtnL0ZtcERldmljZUxpYjogQWRkIExhc3RBdHRlbXB0U3RhdHVzIGNvbXBhdGliaWxpdHkN Cj4gDQo+IEZyb206IE1pY2hhZWwgS3ViYWNraSA8bWljaGFlbC5rdWJhY2tpQG1pY3Jvc29mdC5j b20+DQo+IA0KPiBNYWtlcyB0aGUgY2hhbmdlcyBuZWNlc3NhcnkgZm9yIHRoZXNlIGxpYnJhcnkg aW5zdGFuY2VzIG9mDQo+IEZtcERldmljZUxpYiB0byBiZSBjb21wYXRpYmxlIHdpdGggbmV3IGZ1 bmN0aW9ucyBhZGRlZCByZWNlbnRseQ0KPiB0byBGbXBEZXZpY2VMaWIuDQo+IA0KPiBUd28gbmV3 IGZ1bmN0aW9ucyB3ZXJlIGludHJvZHVjZWQgaW4gRm1wRGV2aWNlTGliIHRvIGFsbG93IGENCj4g bGlicmFyeSBpbnN0YW5jZSB0byByZXR1cm4gYSBMYXN0IEF0dGVtcHQgU3RhdHVzIGNvZGUgZHVy aW5nDQo+IGNoZWNrIGltYWdlIGFuZCBzZXQgaW1hZ2Ugb3BlcmF0aW9uczoNCj4gICAxLiBGbXBE ZXZpY2VDaGVja0ltYWdlV2l0aFN0YXR1cyAoICkNCj4gICAyLiBGbXBEZXZpY2VTZXRJbWFnZVdp dGhTdGF0dXMgKCApDQo+IA0KPiBGbXBEeGUgKGluIEZtcERldmljZVBrZykgd2lsbCBiZWdpbiBj YWxsaW5nIHRoZXNlIG5ldyBmdW5jdGlvbnMNCj4gaW5zdGVhZCBvZiB0aGUgcHJldmlvdXMgZnVu Y3Rpb25zLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlOg0KPiAgIDEuIEFkZHMgdGhlc2UgZnVuY3Rp b25zIHRvIFZsdjJUYmx0RGV2aWNlUGtnIGltcGxlbWVudGF0aW9ucw0KPiAgIDIuIE1vdmVzIHRo ZSBtYWluIGZ1bmN0aW9uYWxpdHkgdG8gdGhlc2UgbmV3IGZ1bmN0aW9ucw0KPiAgIDMuIFVwZGF0 ZXMgdGhlIG9sZCBmdW5jdGlvbnMgdG8gY2FsbCB0aGUgbmV3IGZ1bmN0aW9ucw0KPiAgICAgIChm b3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkNCj4gDQo+IE5vdGU6IEFzIG9mIHRoaXMgY29tbWl0 LCB0aGUgVmx2MlRibHREZXZpY2VQa2cgYnVpbGQgaXMgYnJva2VuDQo+IGR1ZSB0bzoNCj4gICAx LiBBIHJlcXVpcmVkIFJuZ0xpYiBsaWJyYXJ5IGluc3RhbmNlIG5vdCBkZWZpbmVkIGJ5IHRoZSBw bGF0Zm9ybQ0KPiAgIDIuIE90aGVyIEZNUCBsaWJyYXJpZXMgbm90IGJlaW5nIGRlZmluZWQgYnkg dGhlIHBsYXRmb3JtDQo+ICAgICAgKGUuZy4gRm1wRGVwZW5kZW5jeUxpYiwgRm1wRGVwZW5kZW5j eUNoZWNrTGliLCBldGMuKQ0KPiANCj4gVGhvc2UgY2hhbmdlcyB3ZXJlIGZpeGVkIGxvY2FsbHkg dG8gdGVzdCB0aGUgY2hhbmdlcyBpbiB0aGlzIGNvbW1pdA0KPiBidXQgbWFpbnRhaW5lcnMgc2hv dWxkIG1ha2UgdGhlIHByb3BlciBjaGFuZ2VzIGZvciB0aG9zZSBpc3N1ZXMuDQo+IA0KPiBDYzog TWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBZaSBR aWFuIDx5aS5xaWFuQGludGVsLmNvbT4NCj4gQ2M6IFphaWxpYW5nIFN1biA8emFpbGlhbmcuc3Vu QGludGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogTWljaGFlbCBLdWJhY2tpIDxtaWNoYWVsLmt1 YmFja2lAbWljcm9zb2Z0LmNvbT4NCj4gLS0tDQo+IA0KPiBOb3RlczoNCj4gICAgIE9ubHkgYnVp bGQgd2FzIGNoZWNrZWQsIEkgZG8gbm90IGhhdmUgYWNjZXNzIHRvIGENCj4gICAgIFZMVjIgZGV2 aWNlIGZvciB0ZXN0aW5nLg0KPiANCj4gIFBsYXRmb3JtL0ludGVsL1ZsdjJUYmx0RGV2aWNlUGtn L0ZlYXR1cmUvQ2Fwc3VsZS9MaWJyYXJ5L0ZtcERldmljZUxpYi9GbXBEZXZpY2VMaWIuYyAgICAg ICB8IDI5OSArKysrKysrKysrKysrKystLS0tLQ0KPiAgUGxhdGZvcm0vSW50ZWwvVmx2MlRibHRE ZXZpY2VQa2cvRmVhdHVyZS9DYXBzdWxlL0xpYnJhcnkvRm1wRGV2aWNlTGliU2FtcGxlL0ZtcERl dmljZUxpYi5jIHwgMjg0ICsrKysrKysrKysrKysrLS0tLS0NCj4gIDIgZmlsZXMgY2hhbmdlZCwg NDQ2IGluc2VydGlvbnMoKyksIDEzNyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9Q bGF0Zm9ybS9JbnRlbC9WbHYyVGJsdERldmljZVBrZy9GZWF0dXJlL0NhcHN1bGUvTGlicmFyeS9G bXBEZXZpY2VMaWIvRm1wRGV2aWNlTGliLmMNCj4gYi9QbGF0Zm9ybS9JbnRlbC9WbHYyVGJsdERl dmljZVBrZy9GZWF0dXJlL0NhcHN1bGUvTGlicmFyeS9GbXBEZXZpY2VMaWIvRm1wRGV2aWNlTGli LmMNCj4gaW5kZXggZDhjOTAzNjAxMmFkLi5kZjhhMzZkOTg1NGMgMTAwNjQ0DQo+IC0tLSBhL1Bs YXRmb3JtL0ludGVsL1ZsdjJUYmx0RGV2aWNlUGtnL0ZlYXR1cmUvQ2Fwc3VsZS9MaWJyYXJ5L0Zt cERldmljZUxpYi9GbXBEZXZpY2VMaWIuYw0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9WbHYyVGJs dERldmljZVBrZy9GZWF0dXJlL0NhcHN1bGUvTGlicmFyeS9GbXBEZXZpY2VMaWIvRm1wRGV2aWNl TGliLmMNCj4gQEAgLTEsNiArMSw2IEBADQo+ICAvKioNCj4gDQo+IC1Db3B5cmlnaHQgKGMpIDIw MTYsIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICtDb3B5 cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi48QlI+DQo+ICBDb3B5cmlnaHQgKGMpIDIw MTksIEludGVsIENvcnBvcmF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gDQo+ICBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiBAQCAtOCw3ICs4LDgg QEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gICoqLw0K PiANCj4gICNpbmNsdWRlIDxQaUR4ZS5oPg0KPiAtDQo+ICsjaW5jbHVkZSA8TGFzdEF0dGVtcHRT dGF0dXMuaD4NCj4gKyNpbmNsdWRlIDxHdWlkL1N5c3RlbVJlc291cmNlVGFibGUuaD4NCj4gICNp bmNsdWRlIDxMaWJyYXJ5L0ZtcERldmljZUxpYi5oPg0KPiANCj4gICNpbmNsdWRlIDxMaWJyYXJ5 L0RlYnVnTGliLmg+DQo+IEBAIC00NDQsMjAgKzQ0NSwxNyBAQCBGbXBEZXZpY2VHZXRJbWFnZSAo DQo+ICB9DQo+IA0KPiAgLyoqDQo+IC0gIFVwZGF0ZXMgdGhlIGZpcm13YXJlIGltYWdlIG9mIHRo ZSBkZXZpY2UuDQo+IC0NCj4gLSAgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBoYXJkd2FyZSB3 aXRoIHRoZSBuZXcgZmlybXdhcmUgaW1hZ2UuICBUaGlzIGZ1bmN0aW9uDQo+IC0gIHJldHVybnMg RUZJX1VOU1VQUE9SVEVEIGlmIHRoZSBmaXJtd2FyZSBpbWFnZSBpcyBub3QgdXBkYXRhYmxlLiAg SWYgdGhlDQo+IC0gIGZpcm13YXJlIGltYWdlIGlzIHVwZGF0YWJsZSwgdGhlIGZ1bmN0aW9uIHNo b3VsZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgbWluaW1hbA0KPiAtICB2YWxpZGF0aW9ucyBiZWZv cmUgcHJvY2VlZGluZyB0byBkbyB0aGUgZmlybXdhcmUgaW1hZ2UgdXBkYXRlLg0KPiAtICAgIC0g VmFsaWRhdGUgdGhlIGltYWdlIGlzIGEgc3VwcG9ydGVkIGltYWdlIGZvciB0aGlzIGRldmljZS4g IFRoZSBmdW5jdGlvbg0KPiAtICAgICAgcmV0dXJucyBFRklfQUJPUlRFRCBpZiB0aGUgaW1hZ2Ug aXMgdW5zdXBwb3J0ZWQuICBUaGUgZnVuY3Rpb24gY2FuDQo+IC0gICAgICBvcHRpb25hbGx5IHBy b3ZpZGUgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB3aHkgdGhlIGltYWdlIGlzIG5vdCBh DQo+IC0gICAgICBzdXBwb3J0ZWQgaW1hZ2UuDQo+IC0gICAgLSBWYWxpZGF0ZSB0aGUgZGF0YSBm cm9tIFZlbmRvckNvZGUgaWYgbm90IG51bGwuICBJbWFnZSB2YWxpZGF0aW9uIG11c3QgYmUNCj4g LSAgICAgIHBlcmZvcm1lZCBiZWZvcmUgVmVuZG9yQ29kZSBkYXRhIHZhbGlkYXRpb24uICBWZW5k b3JDb2RlIGRhdGEgaXMgaWdub3JlZA0KPiAtICAgICAgb3IgY29uc2lkZXJlZCBpbnZhbGlkIGlm IGltYWdlIHZhbGlkYXRpb24gZmFpbGVkLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMNCj4gLSAgICAg IEVGSV9BQk9SVEVEIGlmIHRoZSBkYXRhIGlzIGludmFsaWQuDQo+ICsgIFVwZGF0ZXMgYSBmaXJt d2FyZSBkZXZpY2Ugd2l0aCBhIG5ldyBmaXJtd2FyZSBpbWFnZS4gIFRoaXMgZnVuY3Rpb24gcmV0 dXJucw0KPiArICBFRklfVU5TVVBQT1JURUQgaWYgdGhlIGZpcm13YXJlIGltYWdlIGlzIG5vdCB1 cGRhdGFibGUuICBJZiB0aGUgZmlybXdhcmUgaW1hZ2UNCj4gKyAgaXMgdXBkYXRhYmxlLCB0aGUg ZnVuY3Rpb24gc2hvdWxkIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBtaW5pbWFsIHZhbGlkYXRpb25z DQo+ICsgIGJlZm9yZSBwcm9jZWVkaW5nIHRvIGRvIHRoZSBmaXJtd2FyZSBpbWFnZSB1cGRhdGUu DQo+ICsgICAgLSBWYWxpZGF0ZSB0aGF0IHRoZSBpbWFnZSBpcyBhIHN1cHBvcnRlZCBpbWFnZSBm b3IgdGhpcyBmaXJtd2FyZSBkZXZpY2UuDQo+ICsgICAgICBSZXR1cm4gRUZJX0FCT1JURUQgaWYg dGhlIGltYWdlIGlzIG5vdCBzdXBwb3J0ZWQuICBBZGRpdGlvbmFsIGRldGFpbHMNCj4gKyAgICAg IG9uIHdoeSB0aGUgaW1hZ2UgaXMgbm90IGEgc3VwcG9ydGVkIGltYWdlIG1heSBiZSByZXR1cm5l ZCBpbiBBYm9ydFJlYXNvbi4NCj4gKyAgICAtIFZhbGlkYXRlIHRoZSBkYXRhIGZyb20gVmVuZG9y Q29kZSBpZiBpcyBub3QgTlVMTC4gIEZpcm13YXJlIGltYWdlDQo+ICsgICAgICB2YWxpZGF0aW9u IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSBWZW5kb3JDb2RlIGRhdGEgdmFsaWRhdGlvbi4NCj4g KyAgICAgIFZlbmRvckNvZGUgZGF0YSBpcyBpZ25vcmVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZCBp ZiBpbWFnZSB2YWxpZGF0aW9uDQo+ICsgICAgICBmYWlscy4gIFJldHVybiBFRklfQUJPUlRFRCBp ZiB0aGUgVmVuZG9yQ29kZSBkYXRhIGlzIGludmFsaWQuDQo+IA0KPiAgICBWZW5kb3JDb2RlIGVu YWJsZXMgdmVuZG9yIHRvIGltcGxlbWVudCB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgaW1hZ2Ug dXBkYXRlDQo+ICAgIHBvbGljeS4gIE51bGwgaWYgdGhlIGNhbGxlciBkaWQgbm90IHNwZWNpZnkg dGhlIHBvbGljeSBvciB1c2UgdGhlIGRlZmF1bHQNCj4gQEAgLTQ3MCwzOCArNDY4LDU2IEBAIEZt cERldmljZUdldEltYWdlICgNCj4gICAgaGF2ZSB0aGUgb3B0aW9uIHRvIHByb3ZpZGUgYSBtb3Jl IGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBhYm9ydCByZWFzb24gdG8NCj4gICAgdGhlIGNh bGxlci4NCj4gDQo+IC0gIEBwYXJhbVtpbl0gIEltYWdlICAgICAgICAgICAgIFBvaW50cyB0byB0 aGUgbmV3IGltYWdlLg0KPiAtICBAcGFyYW1baW5dICBJbWFnZVNpemUgICAgICAgICBTaXplIG9m IHRoZSBuZXcgaW1hZ2UgaW4gYnl0ZXMuDQo+ICsgIEBwYXJhbVtpbl0gIEltYWdlICAgICAgICAg ICAgIFBvaW50cyB0byB0aGUgbmV3IGZpcm13YXJlIGltYWdlLg0KPiArICBAcGFyYW1baW5dICBJ bWFnZVNpemUgICAgICAgICBTaXplLCBpbiBieXRlcywgb2YgdGhlIG5ldyBmaXJtd2FyZSBpbWFn ZS4NCj4gICAgQHBhcmFtW2luXSAgVmVuZG9yQ29kZSAgICAgICAgVGhpcyBlbmFibGVzIHZlbmRv ciB0byBpbXBsZW1lbnQgdmVuZG9yLXNwZWNpZmljDQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZpcm13YXJlIGltYWdlIHVwZGF0ZSBwb2xpY3kuIE51bGwgaW5kaWNhdGVzIHRo ZQ0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXIgZGlkIG5vdCBzcGVj aWZ5IHRoZSBwb2xpY3kgb3IgdXNlIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmaXJtd2FyZSBpbWFnZSB1cGRhdGUgcG9saWN5LiAgTlVMTCBpbmRpY2F0ZXMNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNhbGxlciBkaWQgbm90IHNwZWNpZnkg dGhlIHBvbGljeSBvciB1c2UgdGhlDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlZmF1bHQgcG9saWN5Lg0KPiAtICBAcGFyYW1baW5dICBQcm9ncmVzcyAgICAgICAgICBBIGZ1 bmN0aW9uIHVzZWQgYnkgdGhlIGRyaXZlciB0byByZXBvcnQgdGhlDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHByb2dyZXNzIG9mIHRoZSBmaXJtd2FyZSB1cGRhdGUuDQo+IC0g IEBwYXJhbVtpbl0gIENhcHN1bGVGd1ZlcnNpb24gIEZNUCBQYXlsb2FkIEhlYWRlciB2ZXJzaW9u IG9mIHRoZSBpbWFnZS4NCj4gLSAgQHBhcmFtW291dF0gQWJvcnRSZWFzb24gICAgICAgQSBwb2lu dGVyIHRvIGEgcG9pbnRlciB0byBhIG51bGwtdGVybWluYXRlZA0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJpbmcgcHJvdmlkaW5nIG1vcmUgZGV0YWlscyBmb3IgdGhlIGFi b3J0ZWQNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLiBUaGUg YnVmZmVyIGlzIGFsbG9jYXRlZCBieSB0aGlzDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZ1bmN0aW9uIHdpdGggQWxsb2NhdGVQb29sKCksIGFuZCBpdCBpcyB0aGUNCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8g ZnJlZSBpdCB3aXRoIGEgY2FsbA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 byBGcmVlUG9vbCgpLg0KPiArICBAcGFyYW1baW5dICBQcm9ncmVzcyAgICAgICAgICBBIGZ1bmN0 aW9uIHVzZWQgdG8gcmVwb3J0IHRoZSBwcm9ncmVzcyBvZg0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1cGRhdGluZyB0aGUgZmlybXdhcmUgZGV2aWNlIHdpdGggdGhlIG5ldw0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJtd2FyZSBpbWFnZS4NCj4gKyAg QHBhcmFtW2luXSAgQ2Fwc3VsZUZ3VmVyc2lvbiAgVGhlIHZlcnNpb24gb2YgdGhlIG5ldyBmaXJt d2FyZSBpbWFnZSBmcm9tIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 cGRhdGUgY2Fwc3VsZSB0aGF0IHByb3ZpZGVkIHRoZSBuZXcgZmlybXdhcmUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuDQo+ICsgIEBwYXJhbVtvdXRdIEFib3J0UmVh c29uICAgICAgIEEgcG9pbnRlciB0byBhIHBvaW50ZXIgdG8gYSBOdWxsLXRlcm1pbmF0ZWQNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZSBzdHJpbmcgcHJvdmlkaW5n IG1vcmUgZGV0YWlscyBvbiBhbg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh Ym9ydGVkIG9wZXJhdGlvbi4gVGhlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgYnkNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBmdW5jdGlvbiB3aXRoDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVGSV9CT09UX1NFUlZJQ0VTLkFsbG9jYXRlUG9vbCgpLiAg SXQgaXMgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlcidzIHJl c3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhpcyBidWZmZXIgd2l0aA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFRklfQk9PVF9TRVJWSUNFUy5GcmVlUG9vbCgpLg0KPiArICBAcGFy YW1bb3V0XSBMYXN0QXR0ZW1wdFN0YXR1cyBBIHBvaW50ZXIgdG8gYSBVSU5UMzIgdGhhdCBob2xk cyB0aGUgbGFzdCBhdHRlbXB0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 YXR1cyB0byByZXBvcnQgYmFjayB0byB0aGUgRVNSVCB0YWJsZSBpbiBjYXNlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGVycm9yLiBUaGlzIHZhbHVlIHdpbGwgb25seSBi ZSBjaGVja2VkIHdoZW4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm dW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLg0KPiANCj4gLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgIFRoZSBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkIHdpdGggdGhlDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgaW1hZ2UuDQo+IC0gIEByZXR2 YWwgRUZJX0FCT1JURUQgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGFib3J0ZWQuDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXR1cm4gc3RhdHVzIGNvZGUgbXVz dCBmYWxsIGluIHRoZSByYW5nZSBvZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMQVNUX0FUVEVNUFRfU1RBVFVTX0RFVklDRV9MSUJSQVJZX01JTl9FUlJPUl9DT0RFX1ZBTFVF IHRvDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExBU1RfQVRURU1QVF9TVEFU VVNfREVWSUNFX0xJQlJBUllfTUFYX0VSUk9SX0NPREVfVkFMVUUuDQo+ICsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHZhbHVlIGZhbGxzIG91dHNpZGUgdGhpcyBy YW5nZSwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG8gTEFTVF9BVFRFTVBUX1NUQVRVU19FUlJPUl9VTlNVQ0NFU1NGVUwuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBmaXJtd2FyZSBkZXZpY2Ugd2Fz IHN1Y2Nlc3NmdWxseSB1cGRhdGVkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3aXRoIHRoZSBuZXcgZmlybXdhcmUgaW1hZ2UuDQo+ICsgIEByZXR2YWwgRUZJX0FCT1JURUQg ICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGFib3J0ZWQuICBBZGRpdGlvbmFsIGRldGFpbHMN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBwcm92aWRlZCBpbiBBYm9y dFJlYXNvbi4NCj4gICAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3 YXMgTlVMTC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIExhc3RBdHRlbXB0 U3RhdHVzIHdhcyBOVUxMLg0KPiAgICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhl IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLg0KPiANCj4gICoqLw0KPiAgRUZJX1NUQVRVUw0K PiAgRUZJQVBJDQo+IC1GbXBEZXZpY2VTZXRJbWFnZSAoDQo+ICtGbXBEZXZpY2VTZXRJbWFnZVdp dGhTdGF0dXMgKA0KPiAgICBJTiAgQ09OU1QgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqSW1hZ2UsDQo+ICAgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEltYWdlU2l6ZSwNCj4gLSAgSU4gIENPTlNUIFZPSUQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlZlbmRvckNvZGUsDQo+IC0gIElOICBFRklf RklSTVdBUkVfTUFOQUdFTUVOVF9VUERBVEVfSU1BR0VfUFJPR1JFU1MgIFByb2dyZXNzLA0KPiAr ICBJTiAgQ09OU1QgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVmVu ZG9yQ29kZSwgICAgICAgT1BUSU9OQUwNCj4gKyAgSU4gIEVGSV9GSVJNV0FSRV9NQU5BR0VNRU5U X1VQREFURV9JTUFHRV9QUk9HUkVTUyAgUHJvZ3Jlc3MsICAgICAgICAgIE9QVElPTkFMDQo+ICAg IElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhcHN1 bGVGd1ZlcnNpb24sDQo+IC0gIE9VVCBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICoqQWJvcnRSZWFzb24NCj4gKyAgT1VUIENIQVIxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKipBYm9ydFJlYXNvbiwNCj4gKyAgT1VUIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxhc3RBdHRlbXB0U3Rh dHVzDQo+ICAgICkNCj4gIHsNCj4gICAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQo+IEBA IC01MTMsMjUgKzUyOSwyNyBAQCBGbXBEZXZpY2VTZXRJbWFnZSAoDQo+ICAgIFVJTlROICAgICAg ICAgICAgICAgQnl0ZXNXcml0dGVuOw0KPiANCj4gICAgVXBkYXRlYWJsZSA9IDA7DQo+IC0gIFN0 YXR1cyA9IEZtcERldmljZUNoZWNrSW1hZ2UgKEltYWdlLCBJbWFnZVNpemUsICZVcGRhdGVhYmxl KTsNCj4gKyAgU3RhdHVzID0gRm1wRGV2aWNlQ2hlY2tJbWFnZVdpdGhTdGF0dXMgKEltYWdlLCBJ bWFnZVNpemUsICZVcGRhdGVhYmxlLCBMYXN0QXR0ZW1wdFN0YXR1cyk7DQo+ICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gLSAgICBERUJVRygoREVCVUdfRVJST1IsICJGbXBEZXZpY2VT ZXRJbWFnZSAtIENoZWNrIEltYWdlIGZhaWxlZCB3aXRoICVyLlxuIiwgU3RhdHVzKSk7DQo+ICsg ICAgREVCVUcoKERFQlVHX0VSUk9SLCAiRm1wRGV2aWNlU2V0SW1hZ2VXaXRoU3RhdHVzIC0gQ2hl Y2sgSW1hZ2UgZmFpbGVkIHdpdGggJXIuXG4iLCBTdGF0dXMpKTsNCj4gICAgICByZXR1cm4gU3Rh dHVzOw0KPiAgICB9DQo+IA0KPiAgICBpZiAoVXBkYXRlYWJsZSAhPSBJTUFHRV9VUERBVEFCTEVf VkFMSUQpIHsNCj4gLSAgICBERUJVRygoREVCVUdfRVJST1IsICJGbXBEZXZpY2VTZXRJbWFnZSAt IENoZWNrIEltYWdlIHJldHVybmVkIHRoYXQgdGhlIEltYWdlIHdhcyBub3QgdmFsaWQgZm9yIHVw ZGF0ZS4gIFVwZGF0YWJsZQ0KPiB2YWx1ZSA9IDB4JVguXG4iLCBVcGRhdGVhYmxlKSk7DQo+ICsg ICAgREVCVUcoKERFQlVHX0VSUk9SLCAiRm1wRGV2aWNlU2V0SW1hZ2VXaXRoU3RhdHVzIC0gQ2hl Y2sgSW1hZ2UgcmV0dXJuZWQgdGhhdCB0aGUgSW1hZ2Ugd2FzIG5vdCB2YWxpZCBmb3IgdXBkYXRl Lg0KPiBVcGRhdGFibGUgdmFsdWUgPSAweCVYLlxuIiwgVXBkYXRlYWJsZSkpOw0KPiArICAgICpM YXN0QXR0ZW1wdFN0YXR1cyA9IExBU1RfQVRURU1QVF9TVEFUVVNfREVWSUNFX0xJQlJBUllfTUlO X0VSUk9SX0NPREVfVkFMVUU7DQo+ICAgICAgcmV0dXJuIEVGSV9BQk9SVEVEOw0KPiAgICB9DQo+ IA0KPiAgICBpZiAoUHJvZ3Jlc3MgPT0gTlVMTCkgew0KPiAtICAgIERFQlVHKChERUJVR19FUlJP UiwgIkZtcERldmljZVNldEltYWdlIC0gSW52YWxpZCBwcm9ncmVzcyBjYWxsYmFja1xuIikpOw0K PiArICAgIERFQlVHKChERUJVR19FUlJPUiwgIkZtcERldmljZVNldEltYWdlV2l0aFN0YXR1cyAt IEludmFsaWQgcHJvZ3Jlc3MgY2FsbGJhY2tcbiIpKTsNCj4gKyAgICAqTGFzdEF0dGVtcHRTdGF0 dXMgPSBMQVNUX0FUVEVNUFRfU1RBVFVTX0RFVklDRV9MSUJSQVJZX01JTl9FUlJPUl9DT0RFX1ZB TFVFOw0KPiAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICAgIH0NCj4gDQo+ ICAgIFN0YXR1cyA9IFByb2dyZXNzICgxNSk7DQo+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gLSAgICBERUJVRygoREVCVUdfRVJST1IsICJGbXBEZXZpY2VTZXRJbWFnZSAtIFByb2dy ZXNzIENhbGxiYWNrIGZhaWxlZCB3aXRoIFN0YXR1cyAlci5cbiIsIFN0YXR1cykpOw0KPiArICAg IERFQlVHKChERUJVR19FUlJPUiwgIkZtcERldmljZVNldEltYWdlV2l0aFN0YXR1cyAtIFByb2dy ZXNzIENhbGxiYWNrIGZhaWxlZCB3aXRoIFN0YXR1cyAlci5cbiIsIFN0YXR1cykpOw0KPiAgICB9 DQo+IA0KPiAgICAvLw0KPiBAQCAtNTM5LDcgKzU1Nyw3IEBAIEZtcERldmljZVNldEltYWdlICgN Cj4gICAgLy8NCj4gICAgUHJvZ3Jlc3MgKDIwKTsNCj4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiAtICAgIERFQlVHKChERUJVR19FUlJPUiwgIkZtcERldmljZVNldEltYWdlIC0gUHJv Z3Jlc3MgQ2FsbGJhY2sgZmFpbGVkIHdpdGggU3RhdHVzICVyLlxuIiwgU3RhdHVzKSk7DQo+ICsg ICAgREVCVUcoKERFQlVHX0VSUk9SLCAiRm1wRGV2aWNlU2V0SW1hZ2VXaXRoU3RhdHVzIC0gUHJv Z3Jlc3MgQ2FsbGJhY2sgZmFpbGVkIHdpdGggU3RhdHVzICVyLlxuIiwgU3RhdHVzKSk7DQo+ICAg IH0NCj4gDQo+ICAgIC8vDQo+IEBAIC01NTMsMTEgKzU3MSwxMSBAQCBGbXBEZXZpY2VTZXRJbWFn ZSAoDQo+IA0KPiAgLy8gICAgUHJvZ3Jlc3MgKFBlcmNlbnRhZ2UpOw0KPiAgLy8gICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiAtLy8gICAgICBERUJVRygoREVCVUdfRVJST1IsICJGbXBE ZXZpY2VTZXRJbWFnZSAtIFByb2dyZXNzIENhbGxiYWNrIGZhaWxlZCB3aXRoIFN0YXR1cyAlci5c biIsIFN0YXR1cykpOw0KPiArLy8gICAgICBERUJVRygoREVCVUdfRVJST1IsICJGbXBEZXZpY2VT ZXRJbWFnZVdpdGhTdGF0dXMgLSBQcm9ncmVzcyBDYWxsYmFjayBmYWlsZWQgd2l0aCBTdGF0dXMg JXIuXG4iLCBTdGF0dXMpKTsNCj4gIC8vICAgIH0NCj4gICAgfQ0KPiANCj4gLSAgREVCVUcgKChE RUJVR19JTkZPLCAiRm1wRGV2aWNlU2V0SW1hZ2UgLSAlZCBJbWFnZXMgLi4uXG4iLCBBUlJBWV9T SVpFIChtVXBkYXRlQ29uZmlnRGF0YSkpKTsNCj4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiRm1w RGV2aWNlU2V0SW1hZ2VXaXRoU3RhdHVzIC0gJWQgSW1hZ2VzIC4uLlxuIiwgQVJSQVlfU0laRSAo bVVwZGF0ZUNvbmZpZ0RhdGEpKSk7DQo+IA0KPiAgICBpZiAoQVJSQVlfU0laRSAobVVwZGF0ZUNv bmZpZ0RhdGEpID09IDApIHsNCj4gICAgICBERUJVRygoREVCVUdfSU5GTywgIlBsYXRmb3JtVXBk YXRlOiBCYXNlQWRkcmVzcyAtIDB4JWx4IEltYWdlT2Zmc2V0IC0gMHgleCBMZW5ndGggLSAweCV4 XG4iLCAwLCAwLCBJbWFnZVNpemUpKTsNCj4gQEAgLTYwNSwxMSArNjIzLDE3MyBAQCBGbXBEZXZp Y2VTZXRJbWFnZSAoDQo+ICAgICAgQnl0ZXNXcml0dGVuICs9IENvbmZpZ0RhdGEtPkxlbmd0aDsN Cj4gICAgfQ0KPiANCj4gLSAgREVCVUcgKChERUJVR19JTkZPLCAiRm1wRGV2aWNlU2V0SW1hZ2Ug LSAlclxuIiwgU3RhdHVzKSk7DQo+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIkZtcERldmljZVNl dEltYWdlV2l0aFN0YXR1cyAtICVyXG4iLCBTdGF0dXMpKTsNCj4gKw0KPiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ICsgICAgKkxhc3RBdHRlbXB0U3RhdHVzID0gTEFTVF9BVFRFTVBU X1NUQVRVU19ERVZJQ0VfTElCUkFSWV9NSU5fRVJST1JfQ09ERV9WQUxVRTsNCj4gKyAgfQ0KPiAN Cj4gICAgcmV0dXJuIFN0YXR1czsNCj4gIH0NCj4gDQo+ICsvKioNCj4gKyAgVXBkYXRlcyB0aGUg ZmlybXdhcmUgaW1hZ2Ugb2YgdGhlIGRldmljZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHVw ZGF0ZXMgdGhlIGhhcmR3YXJlIHdpdGggdGhlIG5ldyBmaXJtd2FyZSBpbWFnZS4gIFRoaXMgZnVu Y3Rpb24NCj4gKyAgcmV0dXJucyBFRklfVU5TVVBQT1JURUQgaWYgdGhlIGZpcm13YXJlIGltYWdl IGlzIG5vdCB1cGRhdGFibGUuICBJZiB0aGUNCj4gKyAgZmlybXdhcmUgaW1hZ2UgaXMgdXBkYXRh YmxlLCB0aGUgZnVuY3Rpb24gc2hvdWxkIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBtaW5pbWFsDQo+ ICsgIHZhbGlkYXRpb25zIGJlZm9yZSBwcm9jZWVkaW5nIHRvIGRvIHRoZSBmaXJtd2FyZSBpbWFn ZSB1cGRhdGUuDQo+ICsgICAgLSBWYWxpZGF0ZSB0aGUgaW1hZ2UgaXMgYSBzdXBwb3J0ZWQgaW1h Z2UgZm9yIHRoaXMgZGV2aWNlLiAgVGhlIGZ1bmN0aW9uDQo+ICsgICAgICByZXR1cm5zIEVGSV9B Qk9SVEVEIGlmIHRoZSBpbWFnZSBpcyB1bnN1cHBvcnRlZC4gIFRoZSBmdW5jdGlvbiBjYW4NCj4g KyAgICAgIG9wdGlvbmFsbHkgcHJvdmlkZSBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHdo eSB0aGUgaW1hZ2UgaXMgbm90IGENCj4gKyAgICAgIHN1cHBvcnRlZCBpbWFnZS4NCj4gKyAgICAt IFZhbGlkYXRlIHRoZSBkYXRhIGZyb20gVmVuZG9yQ29kZSBpZiBub3QgbnVsbC4gIEltYWdlIHZh bGlkYXRpb24gbXVzdCBiZQ0KPiArICAgICAgcGVyZm9ybWVkIGJlZm9yZSBWZW5kb3JDb2RlIGRh dGEgdmFsaWRhdGlvbi4gIFZlbmRvckNvZGUgZGF0YSBpcyBpZ25vcmVkDQo+ICsgICAgICBvciBj b25zaWRlcmVkIGludmFsaWQgaWYgaW1hZ2UgdmFsaWRhdGlvbiBmYWlsZWQuICBUaGUgZnVuY3Rp b24gcmV0dXJucw0KPiArICAgICAgRUZJX0FCT1JURUQgaWYgdGhlIGRhdGEgaXMgaW52YWxpZC4N Cj4gKw0KPiArICBWZW5kb3JDb2RlIGVuYWJsZXMgdmVuZG9yIHRvIGltcGxlbWVudCB2ZW5kb3It c3BlY2lmaWMgZmlybXdhcmUgaW1hZ2UgdXBkYXRlDQo+ICsgIHBvbGljeS4gIE51bGwgaWYgdGhl IGNhbGxlciBkaWQgbm90IHNwZWNpZnkgdGhlIHBvbGljeSBvciB1c2UgdGhlIGRlZmF1bHQNCj4g KyAgcG9saWN5LiAgQXMgYW4gZXhhbXBsZSwgdmVuZG9yIGNhbiBpbXBsZW1lbnQgYSBwb2xpY3kg dG8gYWxsb3cgYW4gb3B0aW9uIHRvDQo+ICsgIGZvcmNlIGEgZmlybXdhcmUgaW1hZ2UgdXBkYXRl IHdoZW4gdGhlIGFib3J0IHJlYXNvbiBpcyBkdWUgdG8gdGhlIG5ldyBmaXJtd2FyZQ0KPiArICBp bWFnZSB2ZXJzaW9uIGlzIG9sZGVyIHRoYW4gdGhlIGN1cnJlbnQgZmlybXdhcmUgaW1hZ2UgdmVy c2lvbiBvciBiYWQgaW1hZ2UNCj4gKyAgY2hlY2tzdW0uICBTZW5zaXRpdmUgb3BlcmF0aW9ucyBz dWNoIGFzIHRob3NlIHdpcGluZyB0aGUgZW50aXJlIGZpcm13YXJlIGltYWdlDQo+ICsgIGFuZCBy ZW5kZXIgdGhlIGRldmljZSB0byBiZSBub24tZnVuY3Rpb25hbCBzaG91bGQgYmUgZW5jb2RlZCBp biB0aGUgaW1hZ2UNCj4gKyAgaXRzZWxmIHJhdGhlciB0aGFuIHBhc3NlZCB3aXRoIHRoZSBWZW5k b3JDb2RlLiAgQWJvcnRSZWFzb24gZW5hYmxlcyB2ZW5kb3IgdG8NCj4gKyAgaGF2ZSB0aGUgb3B0 aW9uIHRvIHByb3ZpZGUgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBhYm9ydCBy ZWFzb24gdG8NCj4gKyAgdGhlIGNhbGxlci4NCj4gKw0KPiArICBAcGFyYW1baW5dICBJbWFnZSAg ICAgICAgICAgICBQb2ludHMgdG8gdGhlIG5ldyBpbWFnZS4NCj4gKyAgQHBhcmFtW2luXSAgSW1h Z2VTaXplICAgICAgICAgU2l6ZSBvZiB0aGUgbmV3IGltYWdlIGluIGJ5dGVzLg0KPiArICBAcGFy YW1baW5dICBWZW5kb3JDb2RlICAgICAgICBUaGlzIGVuYWJsZXMgdmVuZG9yIHRvIGltcGxlbWVu dCB2ZW5kb3Itc3BlY2lmaWMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmly bXdhcmUgaW1hZ2UgdXBkYXRlIHBvbGljeS4gTnVsbCBpbmRpY2F0ZXMgdGhlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlciBkaWQgbm90IHNwZWNpZnkgdGhlIHBvbGlj eSBvciB1c2UgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQg cG9saWN5Lg0KPiArICBAcGFyYW1baW5dICBQcm9ncmVzcyAgICAgICAgICBBIGZ1bmN0aW9uIHVz ZWQgYnkgdGhlIGRyaXZlciB0byByZXBvcnQgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByb2dyZXNzIG9mIHRoZSBmaXJtd2FyZSB1cGRhdGUuDQo+ICsgIEBwYXJhbVtp bl0gIENhcHN1bGVGd1ZlcnNpb24gIEZNUCBQYXlsb2FkIEhlYWRlciB2ZXJzaW9uIG9mIHRoZSBp bWFnZS4NCj4gKyAgQHBhcmFtW291dF0gQWJvcnRSZWFzb24gICAgICAgQSBwb2ludGVyIHRvIGEg cG9pbnRlciB0byBhIG51bGwtdGVybWluYXRlZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJpbmcgcHJvdmlkaW5nIG1vcmUgZGV0YWlscyBmb3IgdGhlIGFib3J0ZWQNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLiBUaGUgYnVmZmVyIGlz IGFsbG9jYXRlZCBieSB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1 bmN0aW9uIHdpdGggQWxsb2NhdGVQb29sKCksIGFuZCBpdCBpcyB0aGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZnJlZSBpdCB3 aXRoIGEgY2FsbA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBGcmVlUG9v bCgpLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgZGV2aWNl IHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZCB3aXRoIHRoZQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmV3IGltYWdlLg0KPiArICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAg ICAgICAgVGhlIG9wZXJhdGlvbiBpcyBhYm9ydGVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgVGhlIEltYWdlIHdhcyBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBP UlRFRCAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLg0KPiArDQo+ICsqKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRm1wRGV2aWNlU2V0SW1hZ2UgKA0KPiArICBJ TiAgQ09OU1QgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqSW1hZ2Us DQo+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEltYWdlU2l6ZSwNCj4gKyAgSU4gIENPTlNUIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKlZlbmRvckNvZGUsDQo+ICsgIElOICBFRklfRklSTVdBUkVfTUFOQUdFTUVO VF9VUERBVEVfSU1BR0VfUFJPR1JFU1MgIFByb2dyZXNzLA0KPiArICBJTiAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXBzdWxlRndWZXJzaW9uLA0KPiAr ICBPVVQgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKkFi b3J0UmVhc29uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyICBMYXN0QXR0ZW1wdFN0YXR1czsN Cj4gKw0KPiArICByZXR1cm4gIEZtcERldmljZVNldEltYWdlV2l0aFN0YXR1cyAoDQo+ICsgICAg ICAgICAgICBJbWFnZSwNCj4gKyAgICAgICAgICAgIEltYWdlU2l6ZSwNCj4gKyAgICAgICAgICAg IFZlbmRvckNvZGUsDQo+ICsgICAgICAgICAgICBQcm9ncmVzcywNCj4gKyAgICAgICAgICAgIENh cHN1bGVGd1ZlcnNpb24sDQo+ICsgICAgICAgICAgICBBYm9ydFJlYXNvbiwNCj4gKyAgICAgICAg ICAgICZMYXN0QXR0ZW1wdFN0YXR1cw0KPiArICAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIENoZWNrcyBpZiBhIG5ldyBmaXJtd2FyZSBpbWFnZSBpcyB2YWxpZCBmb3IgdGhl IGZpcm13YXJlIGRldmljZS4gIFRoaXMNCj4gKyAgZnVuY3Rpb24gYWxsb3dzIGZpcm13YXJlIHVw ZGF0ZSBvcGVyYXRpb24gdG8gdmFsaWRhdGUgdGhlIGZpcm13YXJlIGltYWdlDQo+ICsgIGJlZm9y ZSBGbXBEZXZpY2VTZXRJbWFnZSgpIGlzIGNhbGxlZC4NCj4gKw0KPiArICBAcGFyYW1baW5dICBJ bWFnZSAgICAgICAgICAgICAgIFBvaW50cyB0byBhIG5ldyBmaXJtd2FyZSBpbWFnZS4NCj4gKyAg QHBhcmFtW2luXSAgSW1hZ2VTaXplICAgICAgICAgICBTaXplLCBpbiBieXRlcywgb2YgYSBuZXcg ZmlybXdhcmUgaW1hZ2UuDQo+ICsgIEBwYXJhbVtvdXRdIEltYWdlVXBkYXRhYmxlICAgICAgSW5k aWNhdGVzIGlmIGEgbmV3IGZpcm13YXJlIGltYWdlIGlzIHZhbGlkIGZvcg0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGEgZmlybXdhcmUgdXBkYXRlIHRvIHRoZSBmaXJtd2Fy ZSBkZXZpY2UuICBUaGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xs b3dpbmcgdmFsdWVzIGZyb20gdGhlIEZpcm13YXJlIE1hbmFnZW1lbnQNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbCBhcmUgc3VwcG9ydGVkOg0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1BR0VfVVBEQVRBQkxFX1ZBTElEDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUFHRV9VUERBVEFCTEVfSU5WQUxJ RA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1BR0VfVVBEQVRBQkxF X0lOVkFMSURfVFlQRQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1B R0VfVVBEQVRBQkxFX0lOVkFMSURfT0xEDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJTUFHRV9VUERBVEFCTEVfVkFMSURfV0lUSF9WRU5ET1JfQ09ERQ0KPiArICBAcGFy YW1bb3V0XSBMYXN0QXR0ZW1wdFN0YXR1cyAgIEEgcG9pbnRlciB0byBhIFVJTlQzMiB0aGF0IGhv bGRzIHRoZSBsYXN0IGF0dGVtcHQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdGF0dXMgdG8gcmVwb3J0IGJhY2sgdG8gdGhlIEVTUlQgdGFibGUgaW4gY2FzZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGVycm9yLiBUaGlzIHZhbHVlIHdpbGwg b25seSBiZSBjaGVja2VkIHdoZW4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZ1bmN0aW9uIHJldHVybnMgYW4gZXJyb3IuDQo+ICsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUaGUgcmV0dXJuIHN0YXR1cyBjb2RlIG11c3QgZmFsbCBpbiB0 aGUgcmFuZ2Ugb2YNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQVNUX0FU VEVNUFRfU1RBVFVTX0RFVklDRV9MSUJSQVJZX01JTl9FUlJPUl9DT0RFX1ZBTFVFIHRvDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEFTVF9BVFRFTVBUX1NUQVRVU19ERVZJ Q0VfTElCUkFSWV9NQVhfRVJST1JfQ09ERV9WQUxVRS4NCj4gKw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBmYWxscyBvdXRzaWRlIHRoaXMgcmFuZ2Us IGl0IHdpbGwgYmUgY29udmVydGVkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdG8gTEFTVF9BVFRFTVBUX1NUQVRVU19FUlJPUl9VTlNVQ0NFU1NGVUwuDQo+ICsNCj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBpbWFnZSB3YXMgc3VjY2Vzc2Z1bGx5 IGNoZWNrZWQuICBBZGRpdGlvbmFsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdGF0dXMgaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQgaW4NCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEltYWdlVXBkYXRhYmxlLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgSW1hZ2UgaXMgTlVMTC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgIEltYWdlVXBkYXRhYmxlIGlzIE5VTEwuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSICBMYXN0QXR0ZW1wdFN0YXR1cyBpcyBOVUxMLg0KPiArDQo+ICsqKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRm1wRGV2aWNlQ2hlY2tJbWFnZVdpdGhTdGF0dXMgKA0K PiArICBJTiAgQ09OU1QgVk9JRCAgKkltYWdlLA0KPiArICBJTiAgVUlOVE4gICAgICAgSW1hZ2VT aXplLA0KPiArICBPVVQgVUlOVDMyICAgICAgKkltYWdlVXBkYXRhYmxlLA0KPiArICBPVVQgVUlO VDMyICAgICAgKkxhc3RBdHRlbXB0U3RhdHVzDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKExhc3RB dHRlbXB0U3RhdHVzID09IE5VTEwpIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiQ2hl Y2tJbWFnZVdpdGhTdGF0dXMgLSBMYXN0QXR0ZW1wdFN0YXR1cyBQb2ludGVyIFBhcmFtZXRlciBp cyBOVUxMLlxuIikpOw0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsg IH0NCj4gKyAgKkxhc3RBdHRlbXB0U3RhdHVzID0gTEFTVF9BVFRFTVBUX1NUQVRVU19TVUNDRVNT Ow0KPiArDQo+ICsgIGlmIChJbWFnZVVwZGF0YWJsZSA9PSBOVUxMKSB7DQo+ICsgICAgREVCVUco KERFQlVHX0VSUk9SLCAiQ2hlY2tJbWFnZVdpdGhTdGF0dXMgLSBJbWFnZVVwZGF0YWJsZSBQb2lu dGVyIFBhcmFtZXRlciBpcyBOVUxMLlxuIikpOw0KPiArICAgICpMYXN0QXR0ZW1wdFN0YXR1cyA9 IExBU1RfQVRURU1QVF9TVEFUVVNfREVWSUNFX0xJQlJBUllfTUlOX0VSUk9SX0NPREVfVkFMVUU7 DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsg IC8vDQo+ICsgIC8vU2V0IHRvIHZhbGlkIGFuZCB0aGVuIGlmIGFueSB0ZXN0cyBmYWlsIGl0IHdp bGwgdXBkYXRlIHRoaXMgZmxhZy4NCj4gKyAgLy8NCj4gKyAgKkltYWdlVXBkYXRhYmxlID0gSU1B R0VfVVBEQVRBQkxFX1ZBTElEOw0KPiArDQo+ICsgIGlmIChJbWFnZSA9PSBOVUxMKSB7DQo+ICsg ICAgREVCVUcoKERFQlVHX0VSUk9SLCAiQ2hlY2tJbWFnZVdpdGhTdGF0dXMgLSBJbWFnZSBQb2lu dGVyIFBhcmFtZXRlciBpcyBOVUxMLlxuIikpOw0KPiArICAgIC8vDQo+ICsgICAgLy8gTm90IHN1 cmUgaWYgdGhpcyBpcyBuZWVkZWQNCj4gKyAgICAvLw0KPiArICAgICpJbWFnZVVwZGF0YWJsZSA9 IElNQUdFX1VQREFUQUJMRV9JTlZBTElEOw0KPiArICAgICpMYXN0QXR0ZW1wdFN0YXR1cyA9IExB U1RfQVRURU1QVF9TVEFUVVNfREVWSUNFX0xJQlJBUllfTUlOX0VSUk9SX0NPREVfVkFMVUU7DQo+ ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8v DQo+ICsgIC8vIE1ha2Ugc3VyZSB0aGUgaW1hZ2Ugc2l6ZSBpcyBjb3JyZWN0DQo+ICsgIC8vDQo+ ICsgIGlmIChJbWFnZVNpemUgIT0gUGNkR2V0MzIgKFBjZEJpb3NSb21TaXplKSkgew0KPiArICAg ICpJbWFnZVVwZGF0YWJsZSA9IElNQUdFX1VQREFUQUJMRV9JTlZBTElEOw0KPiArICAgICpMYXN0 QXR0ZW1wdFN0YXR1cyA9IExBU1RfQVRURU1QVF9TVEFUVVNfREVWSUNFX0xJQlJBUllfTUlOX0VS Uk9SX0NPREVfVkFMVUU7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4g KyAgfQ0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiAgLyoqDQo+ ICBDaGVja3MgaWYgdGhlIGZpcm13YXJlIGltYWdlIGlzIHZhbGlkIGZvciB0aGUgZGV2aWNlLg0K PiANCj4gQEAgLTYzMywzNCArODEzLDkgQEAgRm1wRGV2aWNlQ2hlY2tJbWFnZSAoDQo+ICAgIE9V VCBVSU5UMzIgICAgICAqSW1hZ2VVcGRhdGVhYmxlDQo+ICAgICkNCj4gIHsNCj4gLSAgaWYgKElt YWdlVXBkYXRlYWJsZSA9PSBOVUxMKSB7DQo+IC0gICAgREVCVUcoKERFQlVHX0VSUk9SLCAiQ2hl Y2tJbWFnZSAtIEltYWdlVXBkYXRlYWJsZSBQb2ludGVyIFBhcmFtZXRlciBpcyBOVUxMLlxuIikp Ow0KPiAtICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+IC0gIH0NCj4gKyAgVUlO VDMyICBMYXN0QXR0ZW1wdFN0YXR1czsNCj4gDQo+IC0gIC8vDQo+IC0gIC8vU2V0IHRvIHZhbGlk IGFuZCB0aGVuIGlmIGFueSB0ZXN0cyBmYWlsIGl0IHdpbGwgdXBkYXRlIHRoaXMgZmxhZy4NCj4g LSAgLy8NCj4gLSAgKkltYWdlVXBkYXRlYWJsZSA9IElNQUdFX1VQREFUQUJMRV9WQUxJRDsNCj4g LQ0KPiAtICBpZiAoSW1hZ2UgPT0gTlVMTCkgew0KPiAtICAgIERFQlVHKChERUJVR19FUlJPUiwg IkNoZWNrSW1hZ2UgLSBJbWFnZSBQb2ludGVyIFBhcmFtZXRlciBpcyBOVUxMLlxuIikpOw0KPiAt ICAgIC8vDQo+IC0gICAgLy8gTm90IHN1cmUgaWYgdGhpcyBpcyBuZWVkZWQNCj4gLSAgICAvLw0K PiAtICAgICpJbWFnZVVwZGF0ZWFibGUgPSBJTUFHRV9VUERBVEFCTEVfSU5WQUxJRDsNCj4gLSAg ICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiAtICB9DQo+IC0NCj4gLSAgLy8NCj4g LSAgLy8gTWFrZSBzdXJlIHRoZSBpbWFnZSBzaXplIGlzIGNvcnJlY3QNCj4gLSAgLy8NCj4gLSAg aWYgKEltYWdlU2l6ZSAhPSBQY2RHZXQzMiAoUGNkQmlvc1JvbVNpemUpKSB7DQo+IC0gICAgKklt YWdlVXBkYXRlYWJsZSA9IElNQUdFX1VQREFUQUJMRV9JTlZBTElEOw0KPiAtICAgIHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7DQo+IC0gIH0NCj4gLQ0KPiAtICByZXR1cm4gRUZJX1NVQ0NF U1M7DQo+ICsgIHJldHVybiBGbXBEZXZpY2VDaGVja0ltYWdlV2l0aFN0YXR1cyAoSW1hZ2UsIElt YWdlU2l6ZSwgSW1hZ2VVcGRhdGVhYmxlLCAmTGFzdEF0dGVtcHRTdGF0dXMpOw0KPiAgfQ0KPiAN Cj4gIC8qKg0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvVmx2MlRibHREZXZpY2VQa2cv RmVhdHVyZS9DYXBzdWxlL0xpYnJhcnkvRm1wRGV2aWNlTGliU2FtcGxlL0ZtcERldmljZUxpYi5j DQo+IGIvUGxhdGZvcm0vSW50ZWwvVmx2MlRibHREZXZpY2VQa2cvRmVhdHVyZS9DYXBzdWxlL0xp YnJhcnkvRm1wRGV2aWNlTGliU2FtcGxlL0ZtcERldmljZUxpYi5jDQo+IGluZGV4IGRiMGYyMzhl YTUzNC4uMTMyYjYwODQ0YWQ0IDEwMDY0NA0KPiAtLS0gYS9QbGF0Zm9ybS9JbnRlbC9WbHYyVGJs dERldmljZVBrZy9GZWF0dXJlL0NhcHN1bGUvTGlicmFyeS9GbXBEZXZpY2VMaWJTYW1wbGUvRm1w RGV2aWNlTGliLmMNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvVmx2MlRibHREZXZpY2VQa2cvRmVh dHVyZS9DYXBzdWxlL0xpYnJhcnkvRm1wRGV2aWNlTGliU2FtcGxlL0ZtcERldmljZUxpYi5jDQo+ IEBAIC0xLDYgKzEsNiBAQA0KPiAgLyoqDQo+IA0KPiAtQ29weXJpZ2h0IChjKSAyMDE2LCBNaWNy b3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArQ29weXJpZ2h0 IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uPEJSPg0KPiAgQ29weXJpZ2h0IChjKSAyMDE5LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gQEAgLTksNiArOSw4IEBA IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiANCj4g ICNpbmNsdWRlIDxQaUR4ZS5oPg0KPiArI2luY2x1ZGUgPExhc3RBdHRlbXB0U3RhdHVzLmg+DQo+ ICsjaW5jbHVkZSA8R3VpZC9TeXN0ZW1SZXNvdXJjZVRhYmxlLmg+DQo+ICAjaW5jbHVkZSA8TGli cmFyeS9EZWJ1Z0xpYi5oPg0KPiAgI2luY2x1ZGUgPFByb3RvY29sL0Zpcm13YXJlTWFuYWdlbWVu dC5oPg0KPiAgI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiBAQCAtMzQ1LDYgKzM0Nywx MzEgQEAgUmV0dXJuIFZhbHVlOg0KPiAgfS8vR2V0SW1hZ2UoKQ0KPiANCj4gDQo+ICsvKioNCj4g KyAgVXBkYXRlcyBhIGZpcm13YXJlIGRldmljZSB3aXRoIGEgbmV3IGZpcm13YXJlIGltYWdlLiAg VGhpcyBmdW5jdGlvbiByZXR1cm5zDQo+ICsgIEVGSV9VTlNVUFBPUlRFRCBpZiB0aGUgZmlybXdh cmUgaW1hZ2UgaXMgbm90IHVwZGF0YWJsZS4gIElmIHRoZSBmaXJtd2FyZSBpbWFnZQ0KPiArICBp cyB1cGRhdGFibGUsIHRoZSBmdW5jdGlvbiBzaG91bGQgcGVyZm9ybSB0aGUgZm9sbG93aW5nIG1p bmltYWwgdmFsaWRhdGlvbnMNCj4gKyAgYmVmb3JlIHByb2NlZWRpbmcgdG8gZG8gdGhlIGZpcm13 YXJlIGltYWdlIHVwZGF0ZS4NCj4gKyAgICAtIFZhbGlkYXRlIHRoYXQgdGhlIGltYWdlIGlzIGEg c3VwcG9ydGVkIGltYWdlIGZvciB0aGlzIGZpcm13YXJlIGRldmljZS4NCj4gKyAgICAgIFJldHVy biBFRklfQUJPUlRFRCBpZiB0aGUgaW1hZ2UgaXMgbm90IHN1cHBvcnRlZC4gIEFkZGl0aW9uYWwg ZGV0YWlscw0KPiArICAgICAgb24gd2h5IHRoZSBpbWFnZSBpcyBub3QgYSBzdXBwb3J0ZWQgaW1h Z2UgbWF5IGJlIHJldHVybmVkIGluIEFib3J0UmVhc29uLg0KPiArICAgIC0gVmFsaWRhdGUgdGhl IGRhdGEgZnJvbSBWZW5kb3JDb2RlIGlmIGlzIG5vdCBOVUxMLiAgRmlybXdhcmUgaW1hZ2UNCj4g KyAgICAgIHZhbGlkYXRpb24gbXVzdCBiZSBwZXJmb3JtZWQgYmVmb3JlIFZlbmRvckNvZGUgZGF0 YSB2YWxpZGF0aW9uLg0KPiArICAgICAgVmVuZG9yQ29kZSBkYXRhIGlzIGlnbm9yZWQgb3IgY29u c2lkZXJlZCBpbnZhbGlkIGlmIGltYWdlIHZhbGlkYXRpb24NCj4gKyAgICAgIGZhaWxzLiAgUmV0 dXJuIEVGSV9BQk9SVEVEIGlmIHRoZSBWZW5kb3JDb2RlIGRhdGEgaXMgaW52YWxpZC4NCj4gKw0K PiArICBWZW5kb3JDb2RlIGVuYWJsZXMgdmVuZG9yIHRvIGltcGxlbWVudCB2ZW5kb3Itc3BlY2lm aWMgZmlybXdhcmUgaW1hZ2UgdXBkYXRlDQo+ICsgIHBvbGljeS4gIE51bGwgaWYgdGhlIGNhbGxl ciBkaWQgbm90IHNwZWNpZnkgdGhlIHBvbGljeSBvciB1c2UgdGhlIGRlZmF1bHQNCj4gKyAgcG9s aWN5LiAgQXMgYW4gZXhhbXBsZSwgdmVuZG9yIGNhbiBpbXBsZW1lbnQgYSBwb2xpY3kgdG8gYWxs b3cgYW4gb3B0aW9uIHRvDQo+ICsgIGZvcmNlIGEgZmlybXdhcmUgaW1hZ2UgdXBkYXRlIHdoZW4g dGhlIGFib3J0IHJlYXNvbiBpcyBkdWUgdG8gdGhlIG5ldyBmaXJtd2FyZQ0KPiArICBpbWFnZSB2 ZXJzaW9uIGlzIG9sZGVyIHRoYW4gdGhlIGN1cnJlbnQgZmlybXdhcmUgaW1hZ2UgdmVyc2lvbiBv ciBiYWQgaW1hZ2UNCj4gKyAgY2hlY2tzdW0uICBTZW5zaXRpdmUgb3BlcmF0aW9ucyBzdWNoIGFz IHRob3NlIHdpcGluZyB0aGUgZW50aXJlIGZpcm13YXJlIGltYWdlDQo+ICsgIGFuZCByZW5kZXIg dGhlIGRldmljZSB0byBiZSBub24tZnVuY3Rpb25hbCBzaG91bGQgYmUgZW5jb2RlZCBpbiB0aGUg aW1hZ2UNCj4gKyAgaXRzZWxmIHJhdGhlciB0aGFuIHBhc3NlZCB3aXRoIHRoZSBWZW5kb3JDb2Rl LiAgQWJvcnRSZWFzb24gZW5hYmxlcyB2ZW5kb3IgdG8NCj4gKyAgaGF2ZSB0aGUgb3B0aW9uIHRv IHByb3ZpZGUgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBhYm9ydCByZWFzb24g dG8NCj4gKyAgdGhlIGNhbGxlci4NCj4gKw0KPiArICBAcGFyYW1baW5dICBJbWFnZSAgICAgICAg ICAgICBQb2ludHMgdG8gdGhlIG5ldyBmaXJtd2FyZSBpbWFnZS4NCj4gKyAgQHBhcmFtW2luXSAg SW1hZ2VTaXplICAgICAgICAgU2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBuZXcgZmlybXdhcmUgaW1h Z2UuDQo+ICsgIEBwYXJhbVtpbl0gIFZlbmRvckNvZGUgICAgICAgIFRoaXMgZW5hYmxlcyB2ZW5k b3IgdG8gaW1wbGVtZW50IHZlbmRvci1zcGVjaWZpYw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmaXJtd2FyZSBpbWFnZSB1cGRhdGUgcG9saWN5LiAgTlVMTCBpbmRpY2F0ZXMN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNhbGxlciBkaWQgbm90IHNw ZWNpZnkgdGhlIHBvbGljeSBvciB1c2UgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlZmF1bHQgcG9saWN5Lg0KPiArICBAcGFyYW1baW5dICBQcm9ncmVzcyAgICAgICAg ICBBIGZ1bmN0aW9uIHVzZWQgdG8gcmVwb3J0IHRoZSBwcm9ncmVzcyBvZg0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGluZyB0aGUgZmlybXdhcmUgZGV2aWNlIHdpdGgg dGhlIG5ldw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJtd2FyZSBpbWFn ZS4NCj4gKyAgQHBhcmFtW2luXSAgQ2Fwc3VsZUZ3VmVyc2lvbiAgVGhlIHZlcnNpb24gb2YgdGhl IG5ldyBmaXJtd2FyZSBpbWFnZSBmcm9tIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1cGRhdGUgY2Fwc3VsZSB0aGF0IHByb3ZpZGVkIHRoZSBuZXcgZmlybXdhcmUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuDQo+ICsgIEBwYXJhbVtvdXRd IEFib3J0UmVhc29uICAgICAgIEEgcG9pbnRlciB0byBhIHBvaW50ZXIgdG8gYSBOdWxsLXRlcm1p bmF0ZWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZSBzdHJpbmcg cHJvdmlkaW5nIG1vcmUgZGV0YWlscyBvbiBhbg0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhYm9ydGVkIG9wZXJhdGlvbi4gVGhlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgYnkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBmdW5jdGlvbiB3aXRoDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9CT09UX1NFUlZJQ0VTLkFsbG9jYXRl UG9vbCgpLiAgSXQgaXMgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh bGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhpcyBidWZmZXIgd2l0aA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfQk9PVF9TRVJWSUNFUy5GcmVlUG9vbCgpLg0K PiArICBAcGFyYW1bb3V0XSBMYXN0QXR0ZW1wdFN0YXR1cyBBIHBvaW50ZXIgdG8gYSBVSU5UMzIg dGhhdCBob2xkcyB0aGUgbGFzdCBhdHRlbXB0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0YXR1cyB0byByZXBvcnQgYmFjayB0byB0aGUgRVNSVCB0YWJsZSBpbiBjYXNlDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGVycm9yLiBUaGlzIHZhbHVlIHdp bGwgb25seSBiZSBjaGVja2VkIHdoZW4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLg0KPiArDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRoZSByZXR1cm4gc3RhdHVzIGNvZGUgbXVzdCBmYWxsIGluIHRo ZSByYW5nZSBvZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQVNUX0FUVEVN UFRfU1RBVFVTX0RFVklDRV9MSUJSQVJZX01JTl9FUlJPUl9DT0RFX1ZBTFVFIHRvDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExBU1RfQVRURU1QVF9TVEFUVVNfREVWSUNFX0xJ QlJBUllfTUFYX0VSUk9SX0NPREVfVkFMVUUuDQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSWYgdGhlIHZhbHVlIGZhbGxzIG91dHNpZGUgdGhpcyByYW5nZSwgaXQgd2ls bCBiZSBjb252ZXJ0ZWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gTEFT VF9BVFRFTVBUX1NUQVRVU19FUlJPUl9VTlNVQ0NFU1NGVUwuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBmaXJtd2FyZSBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxs eSB1cGRhdGVkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBu ZXcgZmlybXdhcmUgaW1hZ2UuDQo+ICsgIEByZXR2YWwgRUZJX0FCT1JURUQgICAgICAgICAgICBU aGUgb3BlcmF0aW9uIGlzIGFib3J0ZWQuICBBZGRpdGlvbmFsIGRldGFpbHMNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBwcm92aWRlZCBpbiBBYm9ydFJlYXNvbi4NCj4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFRoZSBJbWFnZSB3YXMgTlVMTC4NCj4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIExhc3RBdHRlbXB0U3RhdHVzIHdhcyBO VUxMLg0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhlIG9wZXJhdGlvbiBp cyBub3Qgc3VwcG9ydGVkLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0K PiArRm1wRGV2aWNlU2V0SW1hZ2VXaXRoU3RhdHVzICgNCj4gKyAgSU4gIENPTlNUIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkltYWdlLA0KPiArICBJTiAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZVNpemUsDQo+ICsg IElOICBDT05TVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpWZW5k b3JDb2RlLCAgICAgICBPUFRJT05BTA0KPiArICBJTiAgRUZJX0ZJUk1XQVJFX01BTkFHRU1FTlRf VVBEQVRFX0lNQUdFX1BST0dSRVNTICBQcm9ncmVzcywgICAgICAgICAgT1BUSU9OQUwNCj4gKyAg SU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Fwc3Vs ZUZ3VmVyc2lvbiwNCj4gKyAgT1VUIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKipBYm9ydFJlYXNvbiwNCj4gKyAgT1VUIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxhc3RBdHRlbXB0U3RhdHVzDQo+ICsgICkNCj4g K3sNCj4gKyAgICBFRklfU1RBVFVTIFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICA9IEVG SV9TVUNDRVNTOw0KPiArICAgIFVJTlQzMiBVcGRhdGVhYmxlICAgICAgICAgICAgICAgICAgICAg ICAgID0gMDsNCj4gKw0KPiArICAgIFN0YXR1cyA9IEZtcERldmljZUNoZWNrSW1hZ2VXaXRoU3Rh dHVzIChJbWFnZSwgSW1hZ2VTaXplLCAmVXBkYXRlYWJsZSwgTGFzdEF0dGVtcHRTdGF0dXMpOw0K PiArICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCj4gKyAgICB7DQo+ICsgICAgICAgIERFQlVH KChERUJVR19FUlJPUiwgIlNldEltYWdlV2l0aFN0YXR1cyAgLSBDaGVjayBJbWFnZSBmYWlsZWQg d2l0aCAlci5cbiIsIFN0YXR1cykpOw0KPiArICAgICAgICBnb3RvIGNsZWFudXA7DQo+ICsgICAg fQ0KPiArDQo+ICsgICAgaWYgKFVwZGF0ZWFibGUgIT0gSU1BR0VfVVBEQVRBQkxFX1ZBTElEKQ0K PiArICAgIHsNCj4gKyAgICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiU2V0SW1hZ2VXaXRoU3Rh dHVzICAtIENoZWNrIEltYWdlIHJldHVybmVkIHRoYXQgdGhlIEltYWdlIHdhcyBub3QgdmFsaWQg Zm9yIHVwZGF0ZS4NCj4gVXBkYXRhYmxlIHZhbHVlID0gMHglWC5cbiIsIFVwZGF0ZWFibGUpKTsN Cj4gKyAgICAgICAgU3RhdHVzID0gRUZJX0FCT1JURUQ7DQo+ICsgICAgICAgIGdvdG8gY2xlYW51 cDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoUHJvZ3Jlc3MgPT0gTlVMTCkNCj4gKyAgICB7 DQo+ICsgICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlNldEltYWdlV2l0aFN0YXR1cyAgLSBJ bnZhbGlkIHByb2dyZXNzIGNhbGxiYWNrXG4iKSk7DQo+ICsgICAgICAgIFN0YXR1cyA9IEVGSV9J TlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICAgICAgZ290byBjbGVhbnVwOw0KPiArICAgIH0NCj4g Kw0KPiArICAgIFN0YXR1cyA9IFByb2dyZXNzKDE1KTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SKFN0 YXR1cykpDQo+ICsgICAgew0KPiArICAgICAgICBERUJVRygoREVCVUdfRVJST1IsICJTZXRJbWFn ZVdpdGhTdGF0dXMgIC0gUHJvZ3Jlc3MgQ2FsbGJhY2sgZmFpbGVkIHdpdGggU3RhdHVzICVyLlxu IiwgU3RhdHVzKSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgew0KPiArICAgICAgVUlOVE4gIHA7 DQo+ICsNCj4gKyAgICAgIGZvciAocCA9IDIwOyBwIDwgMTAwOyBwKyspIHsNCj4gKyAgICAgICAg Z0JTLT5TdGFsbCAoMTAwMDAwKTsgIC8vdXMgID0gMC4xIHNlY29uZHMNCj4gKyAgICAgICAgUHJv Z3Jlc3MgKHApOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICAgIC8vVE9ETzogYWRk IHN1cHBvcnQgZm9yIFZlbmRvckNvZGUsIGFuZCBBYm9ydFJlYXNvbg0KPiArY2xlYW51cDoNCj4g KyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICAqTGFzdEF0dGVtcHRTdGF0 dXMgPSBMQVNUX0FUVEVNUFRfU1RBVFVTX0RFVklDRV9MSUJSQVJZX01JTl9FUlJPUl9DT0RFX1ZB TFVFOw0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICt9Ly8gU2V0SW1h Z2VXaXRoU3RhdHVzKCkNCj4gKw0KPiArDQo+ICAvKioNCj4gIFVwZGF0ZXMgdGhlIGZpcm13YXJl IGltYWdlIG9mIHRoZSBkZXZpY2UuDQo+IA0KPiBAQCAtMzk2LDUxICs1MjMsOTggQEAgSU4gIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXBzdWxlRndW ZXJzaW9uLA0KPiAgT1VUIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqKkFib3J0UmVhc29uDQo+ICApDQo+ICB7DQo+IC0gICAgRUZJX1NUQVRVUyBTdGF0 dXMgICAgICAgICAgICAgICAgICAgICAgICAgPSBFRklfU1VDQ0VTUzsNCj4gLSAgICBVSU5UMzIg VXBkYXRlYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7DQo+IC0NCj4gLSAgICBTdGF0 dXMgPSBGbXBEZXZpY2VDaGVja0ltYWdlKEltYWdlLCBJbWFnZVNpemUsICZVcGRhdGVhYmxlKTsN Cj4gLSAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQo+IC0gICAgew0KPiAtICAgICAgICBERUJV RygoREVCVUdfRVJST1IsICJTZXRJbWFnZSAtIENoZWNrIEltYWdlIGZhaWxlZCB3aXRoICVyLlxu IiwgU3RhdHVzKSk7DQo+IC0gICAgICAgIGdvdG8gY2xlYW51cDsNCj4gLSAgICB9DQo+IC0NCj4g LSAgICBpZiAoVXBkYXRlYWJsZSAhPSBJTUFHRV9VUERBVEFCTEVfVkFMSUQpDQo+IC0gICAgew0K PiAtICAgICAgICBERUJVRygoREVCVUdfRVJST1IsICJTZXRJbWFnZSAtIENoZWNrIEltYWdlIHJl dHVybmVkIHRoYXQgdGhlIEltYWdlIHdhcyBub3QgdmFsaWQgZm9yIHVwZGF0ZS4gIFVwZGF0YWJs ZSB2YWx1ZSA9DQo+IDB4JVguXG4iLCBVcGRhdGVhYmxlKSk7DQo+IC0gICAgICAgIFN0YXR1cyA9 IEVGSV9BQk9SVEVEOw0KPiAtICAgICAgICBnb3RvIGNsZWFudXA7DQo+IC0gICAgfQ0KPiAtDQo+ IC0gICAgaWYgKFByb2dyZXNzID09IE5VTEwpDQo+IC0gICAgew0KPiAtICAgICAgICBERUJVRygo REVCVUdfRVJST1IsICJTZXRJbWFnZSAtIEludmFsaWQgcHJvZ3Jlc3MgY2FsbGJhY2tcbiIpKTsN Cj4gLSAgICAgICAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiAtICAgICAgICBn b3RvIGNsZWFudXA7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgU3RhdHVzID0gUHJvZ3Jlc3MoMTUp Ow0KPiAtICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCj4gLSAgICB7DQo+IC0gICAgICAgIERF QlVHKChERUJVR19FUlJPUiwgIlNldEltYWdlIC0gUHJvZ3Jlc3MgQ2FsbGJhY2sgZmFpbGVkIHdp dGggU3RhdHVzICVyLlxuIiwgU3RhdHVzKSk7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgew0KPiAt ICAgICAgVUlOVE4gIHA7DQo+IC0NCj4gLSAgICAgIGZvciAocCA9IDIwOyBwIDwgMTAwOyBwKysp IHsNCj4gLSAgICAgICAgZ0JTLT5TdGFsbCAoMTAwMDAwKTsgIC8vdXMgID0gMC4xIHNlY29uZHMN Cj4gLSAgICAgICAgUHJvZ3Jlc3MgKHApOw0KPiAtICAgICAgfQ0KPiAtICAgIH0NCj4gLQ0KPiAt ICAgIC8vVE9ETzogYWRkIHN1cHBvcnQgZm9yIFZlbmRvckNvZGUsIGFuZCBBYm9ydFJlYXNvbg0K PiAtY2xlYW51cDoNCj4gLSAgICByZXR1cm4gU3RhdHVzOw0KPiArICBVSU5UMzIgIExhc3RBdHRl bXB0U3RhdHVzOw0KPiArDQo+ICsgIHJldHVybiAgRm1wRGV2aWNlU2V0SW1hZ2VXaXRoU3RhdHVz ICgNCj4gKyAgICAgICAgICAgIEltYWdlLA0KPiArICAgICAgICAgICAgSW1hZ2VTaXplLA0KPiAr ICAgICAgICAgICAgVmVuZG9yQ29kZSwNCj4gKyAgICAgICAgICAgIFByb2dyZXNzLA0KPiArICAg ICAgICAgICAgQ2Fwc3VsZUZ3VmVyc2lvbiwNCj4gKyAgICAgICAgICAgIEFib3J0UmVhc29uLA0K PiArICAgICAgICAgICAgJkxhc3RBdHRlbXB0U3RhdHVzDQo+ICsgICAgICAgICAgICApOw0KPiAg fS8vIFNldEltYWdlKCkNCj4gDQo+IA0KPiArLyoqDQo+ICsgIENoZWNrcyBpZiBhIG5ldyBmaXJt d2FyZSBpbWFnZSBpcyB2YWxpZCBmb3IgdGhlIGZpcm13YXJlIGRldmljZS4gIFRoaXMNCj4gKyAg ZnVuY3Rpb24gYWxsb3dzIGZpcm13YXJlIHVwZGF0ZSBvcGVyYXRpb24gdG8gdmFsaWRhdGUgdGhl IGZpcm13YXJlIGltYWdlDQo+ICsgIGJlZm9yZSBGbXBEZXZpY2VTZXRJbWFnZSgpIGlzIGNhbGxl ZC4NCj4gKw0KPiArICBAcGFyYW1baW5dICBJbWFnZSAgICAgICAgICAgICAgIFBvaW50cyB0byBh IG5ldyBmaXJtd2FyZSBpbWFnZS4NCj4gKyAgQHBhcmFtW2luXSAgSW1hZ2VTaXplICAgICAgICAg ICBTaXplLCBpbiBieXRlcywgb2YgYSBuZXcgZmlybXdhcmUgaW1hZ2UuDQo+ICsgIEBwYXJhbVtv dXRdIEltYWdlVXBkYXRhYmxlICAgICAgSW5kaWNhdGVzIGlmIGEgbmV3IGZpcm13YXJlIGltYWdl IGlzIHZhbGlkIGZvcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgZmly bXdhcmUgdXBkYXRlIHRvIHRoZSBmaXJtd2FyZSBkZXZpY2UuICBUaGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdmFsdWVzIGZyb20gdGhlIEZpcm13YXJl IE1hbmFnZW1lbnQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2Nv bCBhcmUgc3VwcG9ydGVkOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SU1BR0VfVVBEQVRBQkxFX1ZBTElEDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJTUFHRV9VUERBVEFCTEVfSU5WQUxJRA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSU1BR0VfVVBEQVRBQkxFX0lOVkFMSURfVFlQRQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSU1BR0VfVVBEQVRBQkxFX0lOVkFMSURfT0xEDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUFHRV9VUERBVEFCTEVfVkFMSURf V0lUSF9WRU5ET1JfQ09ERQ0KPiArICBAcGFyYW1bb3V0XSBMYXN0QXR0ZW1wdFN0YXR1cyAgIEEg cG9pbnRlciB0byBhIFVJTlQzMiB0aGF0IGhvbGRzIHRoZSBsYXN0IGF0dGVtcHQNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgdG8gcmVwb3J0IGJhY2sgdG8gdGhl IEVTUlQgdGFibGUgaW4gY2FzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9mIGVycm9yLiBUaGlzIHZhbHVlIHdpbGwgb25seSBiZSBjaGVja2VkIHdoZW4gdGhpcw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJldHVybnMgYW4gZXJy b3IuDQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmV0dXJu IHN0YXR1cyBjb2RlIG11c3QgZmFsbCBpbiB0aGUgcmFuZ2Ugb2YNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMQVNUX0FUVEVNUFRfU1RBVFVTX0RFVklDRV9MSUJSQVJZX01J Tl9FUlJPUl9DT0RFX1ZBTFVFIHRvDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTEFTVF9BVFRFTVBUX1NUQVRVU19ERVZJQ0VfTElCUkFSWV9NQVhfRVJST1JfQ09ERV9WQUxV RS4NCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1 ZSBmYWxscyBvdXRzaWRlIHRoaXMgcmFuZ2UsIGl0IHdpbGwgYmUgY29udmVydGVkDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gTEFTVF9BVFRFTVBUX1NUQVRVU19FUlJP Ul9VTlNVQ0NFU1NGVUwuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg IFRoZSBpbWFnZSB3YXMgc3VjY2Vzc2Z1bGx5IGNoZWNrZWQuICBBZGRpdGlvbmFsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgaW5mb3JtYXRpb24gaXMgcmV0dXJu ZWQgaW4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlVXBkYXRhYmxl Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgSW1hZ2UgaXMgTlVMTC4NCj4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEltYWdlVXBkYXRhYmxlIGlzIE5VTEwu DQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBMYXN0QXR0ZW1wdFN0YXR1cyBp cyBOVUxMLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRm1wRGV2 aWNlQ2hlY2tJbWFnZVdpdGhTdGF0dXMgKA0KPiArICBJTiAgQ09OU1QgVk9JRCAgKkltYWdlLA0K PiArICBJTiAgVUlOVE4gICAgICAgSW1hZ2VTaXplLA0KPiArICBPVVQgVUlOVDMyICAgICAgKklt YWdlVXBkYXRhYmxlLA0KPiArICBPVVQgVUlOVDMyICAgICAgKkxhc3RBdHRlbXB0U3RhdHVzDQo+ ICsgICkNCj4gK3sNCj4gKyAgICBFRklfU1RBVFVTIHN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiAr DQo+ICsgICAgaWYgKExhc3RBdHRlbXB0U3RhdHVzID09IE5VTEwpIHsNCj4gKyAgICAgIERFQlVH ICgoREVCVUdfRVJST1IsICJDaGVja0ltYWdlV2l0aFN0YXR1cyAtIExhc3RBdHRlbXB0U3RhdHVz IFBvaW50ZXIgUGFyYW1ldGVyIGlzIE5VTEwuXG4iKSk7DQo+ICsgICAgICByZXR1cm4gRUZJX0lO VkFMSURfUEFSQU1FVEVSOw0KPiArICAgIH0NCj4gKyAgICAqTGFzdEF0dGVtcHRTdGF0dXMgPSBM QVNUX0FUVEVNUFRfU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gKyAgICBpZiAoSW1hZ2VVcGRhdGFi bGUgPT0gTlVMTCkNCj4gKyAgICB7DQo+ICsgICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIkNo ZWNrSW1hZ2VXaXRoU3RhdHVzIC0gSW1hZ2VVcGRhdGFibGUgUG9pbnRlciBQYXJhbWV0ZXIgaXMg TlVMTC5cbiIpKTsNCj4gKyAgICAgICAgKkxhc3RBdHRlbXB0U3RhdHVzID0gTEFTVF9BVFRFTVBU X1NUQVRVU19ERVZJQ0VfTElCUkFSWV9NSU5fRVJST1JfQ09ERV9WQUxVRTsNCj4gKyAgICAgICAg c3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgICAgICBnb3RvIGNsZWFudXA7 DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvL1NldCB0byB2YWxpZCBhbmQgdGhl biBpZiBhbnkgdGVzdHMgZmFpbCBpdCB3aWxsIHVwZGF0ZSB0aGlzIGZsYWcuDQo+ICsgICAgLy8N Cj4gKyAgICAqSW1hZ2VVcGRhdGFibGUgPSBJTUFHRV9VUERBVEFCTEVfVkFMSUQ7DQo+ICsNCj4g KyAgICBpZiAoSW1hZ2UgPT0gTlVMTCkNCj4gKyAgICB7DQo+ICsgICAgICAgIERFQlVHKChERUJV R19FUlJPUiwgIkNoZWNrSW1hZ2VXaXRoU3RhdHVzIC0gSW1hZ2UgUG9pbnRlciBQYXJhbWV0ZXIg aXMgTlVMTC5cbiIpKTsNCj4gKyAgICAgICAgKkltYWdlVXBkYXRhYmxlID0gSU1BR0VfVVBEQVRB QkxFX0lOVkFMSUQ7IC8vbm90IHN1cmUgaWYgdGhpcyBpcyBuZWVkZWQNCj4gKyAgICAgICAgKkxh c3RBdHRlbXB0U3RhdHVzID0gTEFTVF9BVFRFTVBUX1NUQVRVU19ERVZJQ0VfTElCUkFSWV9NSU5f RVJST1JfQ09ERV9WQUxVRTsNCj4gKyAgICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4gKyAgICB9DQo+ICsNCj4gK2NsZWFudXA6DQo+ICsgICAgcmV0dXJuIHN0YXR1czsNCj4g K30vLyBDaGVja0ltYWdlV2l0aFN0YXR1cygpDQo+ICsNCj4gDQo+ICAvKioNCj4gIENoZWNrcyBp ZiB0aGUgZmlybXdhcmUgaW1hZ2UgaXMgdmFsaWQgZm9yIHRoZSBkZXZpY2UuDQo+IEBAIC00NjUs MjkgKzYzOSw5IEBAIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VT aXplLA0KPiAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqSW1hZ2VVcGRh dGVhYmxlDQo+ICApDQo+ICB7DQo+IC0gICAgRUZJX1NUQVRVUyBzdGF0dXMgPSBFRklfU1VDQ0VT UzsNCj4gKyAgVUlOVDMyICBMYXN0QXR0ZW1wdFN0YXR1czsNCj4gDQo+IC0gICAgaWYgKEltYWdl VXBkYXRlYWJsZSA9PSBOVUxMKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgREVCVUcoKERFQlVHX0VS Uk9SLCAiQ2hlY2tJbWFnZSAtIEltYWdlVXBkYXRlYWJsZSBQb2ludGVyIFBhcmFtZXRlciBpcyBO VUxMLlxuIikpOw0KPiAtICAgICAgICBzdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ IC0gICAgICAgIGdvdG8gY2xlYW51cDsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICAvLw0KPiAtICAg IC8vU2V0IHRvIHZhbGlkIGFuZCB0aGVuIGlmIGFueSB0ZXN0cyBmYWlsIGl0IHdpbGwgdXBkYXRl IHRoaXMgZmxhZy4NCj4gLSAgICAvLw0KPiAtICAgICpJbWFnZVVwZGF0ZWFibGUgPSBJTUFHRV9V UERBVEFCTEVfVkFMSUQ7DQo+IC0NCj4gLSAgICBpZiAoSW1hZ2UgPT0gTlVMTCkNCj4gLSAgICB7 DQo+IC0gICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIkNoZWNrSW1hZ2UgLSBJbWFnZSBQb2lu dGVyIFBhcmFtZXRlciBpcyBOVUxMLlxuIikpOw0KPiAtICAgICAgICAqSW1hZ2VVcGRhdGVhYmxl ID0gSU1BR0VfVVBEQVRBQkxFX0lOVkFMSUQ7IC8vbm90IHN1cmUgaWYgdGhpcyBpcyBuZWVkZWQN Cj4gLSAgICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gLSAgICB9DQo+IC0N Cj4gLWNsZWFudXA6DQo+IC0gICAgcmV0dXJuIHN0YXR1czsNCj4gKyAgcmV0dXJuIEZtcERldmlj ZUNoZWNrSW1hZ2VXaXRoU3RhdHVzIChJbWFnZSwgSW1hZ2VTaXplLCBJbWFnZVVwZGF0ZWFibGUs ICZMYXN0QXR0ZW1wdFN0YXR1cyk7DQo+ICB9Ly8gQ2hlY2tJbWFnZSgpDQo+IA0KPiAgLyoqDQo+ IC0tDQo+IDIuMjguMC53aW5kb3dzLjENCg0K