From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (NAM04-BN8-obe.outbound.protection.outlook.com [40.107.100.63]) by mx.groups.io with SMTP id smtpd.web11.5563.1676061799315867100 for ; Fri, 10 Feb 2023 12:43:19 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=KQuRfZrm; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.100.63, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g86/HvYsTymtSOLb+AjpIXv/xq330qz9LbEI0tbr2M1LC5hYZuwG7mUvCbnicC+LBUZawApAfNgCosBIC/jqTiFAUHgJhYwhfdGX6uldYR9SiEXuNMA6FWd4YocB5r+lD8EFna/SYNMPp1ne3buk+zawSJMf5/tWjyBI5Ylt+3bDMvB1q/grU96PTT9oTBzBsYR9DXjSP/ihONF3Dz79/snQbD4XHC6mPGsXthROjv3Xz5d2xvj35tA0cRIS3Y579rvYmF4NkGZtoHqXTvv1Bfqt4FoLESfr6tmGd0Fcw6StIagh6NbN9f4B5L0NmsKJ7e3jCXcyVXyuDudVMn9G8Q== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=R9WygjqQCh8ywY3N30T4HnezLH5DZy6KgXthp/bGJB8=; b=X1F9q97hdYsYHbySVP4bxYgiDFzfYgE7DWwg5ijulEvpvvWruiC5nk9eGjp6gNBlsuB3+R/OLCbNQg76WtajFMFbZik7CUd3qZwL0uENm5iN5388e9C68xX6iTXAyW7Hmm8JAfRSuYaoZcTNoP5+Jy/Xdhg/TXDeKb2Q8pArt1PH5dPRaXn1h5SszM5frSMp4gWWcJ7Jnkj3b1r1RMfeOXrYlxVAz1Mj5umQPvkrUy1Xae5/HA6cKDgpn+SzbcfAueNZ0pRv3oNtnBcQV/JOieXRrcVOsZ3LB+M75xmQYRcdpE7vEQNdgzPwTbBdhZOzaWNsZblG0uQIjtnCHvgo2w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R9WygjqQCh8ywY3N30T4HnezLH5DZy6KgXthp/bGJB8=; b=KQuRfZrm96Dw38Zak+j8pTmi8hyzqWeoCdqDiGTbbNz3kGR5CIkL6CshGMGLXG/DKGbuZ8Ra7LtHhFysZI0mTFMiHw2BgWtW1U8EMuvzpJnL+jG+acOdzlPtvBW2lt/6qxSrcD1+uTA8WGdNLOicY8eJ12YQdHjtymcBOYIXPXZ38WLhO40q7bkqCCTvYaUg/v1n0kPEMfjpqD9/G6Rd415e8gnjbcy8Ni4cSIYNgIOw7B01bKveVTsftqvdhH0jlA+Luxmo4u/0evLPmS6yVFbYyJ6vcZliayAowrVLpXWBPoHl9CUi7h1Matx1aRPJmutpuyuGTSZa8nUpd8DHZg== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by MN2PR12MB4533.namprd12.prod.outlook.com (2603:10b6:208:266::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.21; Fri, 10 Feb 2023 20:43:17 +0000 Received: from DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::3d2e:1f83:5259:9893]) by DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::3d2e:1f83:5259:9893%3]) with mapi id 15.20.6086.019; Fri, 10 Feb 2023 20:43:17 +0000 From: "Jeff Brasen" To: "Kinney, Michael D" , "devel@edk2.groups.io" , "Demeter, Miki" Subject: Re: [edk2-devel] [PATCH v2] MdeModulePkg/EsrtFmpDxe: Support multiple devices with 0 HardwareInstance Thread-Topic: [edk2-devel] [PATCH v2] MdeModulePkg/EsrtFmpDxe: Support multiple devices with 0 HardwareInstance Thread-Index: AQHZDl/QhXMlNj8y/0e/PqccY8bHO666lZ4QgAzxmnCAAF9ygIAA2VowgAA0RYCAAA7XQA== Date: Fri, 10 Feb 2023 20:43:16 +0000 Message-ID: References: <3c3226e6c05a868f3f88d300181a157998c2786e.1670873141.git.jbrasen@nvidia.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR12MB5789:EE_|MN2PR12MB4533:EE_ x-ms-office365-filtering-correlation-id: a836df3b-7bf5-4140-1f37-08db0ba77008 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: b9czr6OakGsyNWyu5ZnXuSDtMGkBFbFJoTjRHN1rg4WBHpomJ7iefZbLt9R9RSy3FLKEGrqi818RWgVVB7yKyTWlHja9x9MsEMgWRS84Bkl4wkb3pd8P2cRPYojKE+G9DhoqeqzBSWOnKQbKL39aQ7v4wpltzqw2o5aq63aOpUhuBLMyVdoF0OIWfBMMZqKFLZw8V0SWA29eY00vO2A6SmdgYZuULNHz7y9SE+McLSM8QVca+TEwcEl0YgAAzWvtEC7LYZz5MidPoszsJENTQ1mNSnwTkei8NHC6YXFXsjywmGzmODdyeqZz8h6IKRbk29ddsu9E3F5ifcy5oeFI8BBgslrmU+GucMcZOSGdZSWjMDnacHW54gU/50vQGVOfgOEObHsYdDwBKX+0tansoO6FaaNF5OcM/Asm7t6b/K7wWFDYYm0sESDB26/md1xHL5FyozGmzZ3EgHaHRffTtUB20TsyRVw3EGRhczRtMg9b72bJHV9e4sx2wHT4zP2LZIz/KKECupdABKBv7/w19/mbmgfK9TGelCwNO1803X6ldRmd1ZkWHsL+ZQWzapqN19/sd/Jzh5UhBF0A+FwPSIeHsHEmHywMlqN9nUCBPmfPqnyvCLNaAe6H1jE1JAvg+8ASUpJwPXiafQv4DFYBmqQttDQbIrmYybBp34AYH7cL01n41N+7Jir2niB+O6ZynrjUY70S3K5CDGR3dErqSCxLevjji0HYZS42KbFKd1E= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5789.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(376002)(346002)(396003)(136003)(366004)(39860400002)(451199018)(83380400001)(66556008)(66476007)(64756008)(76116006)(66946007)(316002)(110136005)(8676002)(52536014)(5660300002)(8936002)(41300700001)(66446008)(478600001)(9686003)(6506007)(186003)(26005)(53546011)(966005)(7696005)(38070700005)(33656002)(55016003)(86362001)(2906002)(38100700002)(122000001)(71200400001)(66899018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aDFaMEtmSytHcnlHVHBkYnJ3c2tFZWl1dFlZdjVKMWtFQUlSQ2JTd3huWTBD?= =?utf-8?B?Q1ZaZm9XOGt1SnZMV0wxYzdnd1BWRmRBNEhZNG1PSHVwZ0VNUHNMRlBmejUr?= =?utf-8?B?MndDMDdiN0t5VkZQcnN4OWVOdkt2eVkvR21yZ1dEaHBGQURhM3JhNGVTV1N6?= =?utf-8?B?NkFxZFh3K01oVjZyemNLWFVSTTAwcHdiekNrV3ZRcTc1eFZJUDhiTWN2TVQ1?= =?utf-8?B?aE1kaVRxNjhBclAvZkx6bzFxWnJuN2pVV2lncHBpRHYzams2dkpETlgxTE9T?= =?utf-8?B?a2R4QzFxTGJ1NCtJb09RUDFxNEFaVzczL3hGYlVyM1QyVjY0UXZwVnpEeDFE?= =?utf-8?B?SE9KdXhKWTZleVhEdVYybklENWpoU1IrM2tvbnZzanhoNTVQT0FZRTBZcWlL?= =?utf-8?B?YjBiT1hVMkg3K1JzRzZ1Zk91R3hYK0p1aE5GRUxrNjR1eU9LKzk0am9UWjNY?= =?utf-8?B?OVlJZzdMWjhGWmVTdkowNUdLNFdCcmpWTXZGb0dLSE0vemJTbWhFU202WXRK?= =?utf-8?B?aEliQlZOcnMrMGZOVFFaWjU2NEhMRkthbWNneDB4aG5yRXZQVkVkanppOFAz?= =?utf-8?B?dGs5RXFuYnpaNHMwam1kcytndVdoTlp6WDlydExodWt6TFMyTlJFSlJTb2VM?= =?utf-8?B?MnZBa25iRlhCNG5icEFCaUdFZXRmM2w4UVFhM25RcEp5b0FLaHEycTlIc3cx?= =?utf-8?B?MHRjTWhPbkRtUFFqRXJtRUJLZkpqRHNIQUFCWFhlY0YyK0EyTTJZdngwamJU?= =?utf-8?B?dWVIL0pVdDBCSlV6Vy9ob3hmdmN5Ym5ubmpWSkk5ODVLNklFZ1RYSWZwbWd2?= =?utf-8?B?K3FkdjJyMUcxTkdVWWp3TFpnQVJQQmVMWTJvSDV6ZGVKZG11SnE1K2czangr?= =?utf-8?B?S2RTOEY1QThsMXhUWTRIOVRkN3VFUDRQOUdNdGJnTTRLWnpONEY0WkozOVk1?= =?utf-8?B?RHdRSGRuNFU1bGhXbGVYV0hNLzRXNlVwVnpjekhlb0E1SnBTVldSOFd6RWNq?= =?utf-8?B?NjJBdGxkcTF1dGpDaEozL0cvNGJvSUN3dlMyckxoL09Yam5OVWo5aDdSSFJH?= =?utf-8?B?YmthVlMwRDMvb0pFRGFBQThKN1NvWW9JYTJNa0w4bDhFNGtaU1lnR00xbEVW?= =?utf-8?B?eG9YbXNySGM4Qy9mUUpiMDhqYVZyaStvNGRvVkVtb0lTK0NNWFFBQ0E4blhJ?= =?utf-8?B?R0tOb28xRXVlRTRDbEExT2JuWm1OeFBhRmE0MUVKTk84MTdDTmNyVE1NcjRY?= =?utf-8?B?RXNJQ1RGT0l1TmUrZVI0WDdqak91cEVuOGQ2VFYwT1RrWC8vZk5FVUNDc0NN?= =?utf-8?B?azBHR3YrcUFVRmgxTW12QzdGOWtlNGMrWGgzWTNmaCt3bkRXYXNpUWdBZlc2?= =?utf-8?B?blUrLzV3cWNmQjJvNVhHWXY2V3ZjWmYxMDdLTjRPRDRpQmZiUWJRUG5YOCtw?= =?utf-8?B?a3FEYmdHbzlraXJyUjVtM0hPOE1wZ3dtU2UxQVQwZkxGY25oeWt5VlRhUG5P?= =?utf-8?B?U0NLZlQrK0ZVa3RuajU3WlFrLzAvRXFiRUdZTGU1cjhBSStqSFZoME9SWVJw?= =?utf-8?B?STkzY0NUUlg2WWdLYWtDM1pDczJjQVh1ZVpqYjhOUVo0eno1dGNoOHVXaWN4?= =?utf-8?B?QjYwbG9xSS9vb0dhbENnR28zWWdFZlNISVVKQXlOejZIcndKTUljT1F4cXcx?= =?utf-8?B?alprcEtYMlhockVZeVRNcUtEM05WSldyQlM4aG9uYWF3dy8waW1Zays0KzZz?= =?utf-8?B?SVdjRGphdnIwRjFBdEFpajJpK0xjZmJ5Y0cyMXlyV25rYXhqMVlKaFBULzA0?= =?utf-8?B?ZFhNWVA2cHkzNWQ0RFJMSmN3aWhtcmxRczJlMlFsMkdaMTRZNGt1U25lYmlj?= =?utf-8?B?WlNnOEplTWZ3aVVLVWpHazRlSzJZN0MzN0lURGZnZVprYyttU3JZYVZOUm9y?= =?utf-8?B?YnJOL0VoMzZOWWdzK21PV2NCOUhHQ2xwdjVxSkpJTmZ2dHlpK0o4N2c4NUQx?= =?utf-8?B?UGpzTWUwM3NkV3F0WlIzdDdoc1NZcHN2UmpMSm0wYlhiRHQwY0VZeXdzY09N?= =?utf-8?B?Z0RGNDhRMmJKdFFRL1RCeHFGMEJQR2JOUjBYWi9IMTRwcm02R3ZlSnd1Slpj?= =?utf-8?Q?m9Pt29ZPJKRT9h1KZrkjY4qHe?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5789.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a836df3b-7bf5-4140-1f37-08db0ba77008 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Feb 2023 20:43:16.9456 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Iyb5IQi/q9rtkPODOmSKTgWJEDBf+waeiY00WBQ2pR6UvKvpCJ8jepI7B7mKPPe01glhNYCk0qrzZigJlI30XA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4533 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SXQgd2FzIG5vdCBhcyB3ZSB3ZXJlIHNlZWluZyBkZXZpY2VzIGV4cG9zZSBGTVAgdmlhIGFuIG9w dGlvbiByb20gZHJpdmVyIHdpdGggVmVyc2lvbiA9PSAzIGFuZCBIYXJkd2FyZUluc3RhbmNlID0g MC4gSWYgdGhlcmUgYXJlIG11bHRpcGxlIG9mIHRoZXNlIGRldmljZSBpdCB3b3VsZCBoaXQgdGhl IGVycm9yIGluIHRoZSBFc3J0Q29kZS4gVGhlIHBhdGNoIGluY2x1ZGVkIGRvZXMgcmVzb2x2ZSB0 aGUgaXNzdWVzIHdlIHdlcmUgc2VlaW5nLg0KDQotSmVmZg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPg0KPiBTZW50OiBGcmlkYXksIEZlYnJ1YXJ5IDEwLCAyMDIzIDEyOjQ4IFBNDQo+ IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNv bT47IERlbWV0ZXIsDQo+IE1pa2kgPG1pa2kuZGVtZXRlckBpbnRlbC5jb20+DQo+IENjOiBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJF OiBbZWRrMi1kZXZlbF0gW1BBVENIIHYyXSBNZGVNb2R1bGVQa2cvRXNydEZtcER4ZTogU3VwcG9y dA0KPiBtdWx0aXBsZSBkZXZpY2VzIHdpdGggMCBIYXJkd2FyZUluc3RhbmNlDQo+IA0KPiBFeHRl cm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiAN Cj4gDQo+IERpZCB5b3VyIG9yaWdpbmFsIGFwcHJvYWNoIHdvcmsgZm9yIGFsbCB5b3VyIHVzZSBj YXNlcz8NCj4gDQo+IE1pa2UNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJl aGFsZiBPZiBKZWZmDQo+ID4gQnJhc2VuIHZpYSBncm91cHMuaW8NCj4gPiBTZW50OiBGcmlkYXks IEZlYnJ1YXJ5IDEwLCAyMDIzIDg6NDUgQU0NCj4gPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgRGVt ZXRlciwgTWlraSA8bWlraS5kZW1ldGVyQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSZTogW2Vk azItZGV2ZWxdIFtQQVRDSCB2Ml0gTWRlTW9kdWxlUGtnL0VzcnRGbXBEeGU6DQo+IFN1cHBvcnQN Cj4gPiBtdWx0aXBsZSBkZXZpY2VzIHdpdGggMCBIYXJkd2FyZUluc3RhbmNlDQo+ID4NCj4gPiBU aGF0IHdhcyBteSBvcmlnaW5hbCBhcHByb2FjaCB3aGVuIEkgc2F3IHRoaXMgYnV0IEkgd2FzIHNl ZWluZyB0aGlzDQo+ID4gb2NjdXIgb24gYSBkZXZpY2Ugd2l0aCBGbXBWZXJzaW9uID09IDMuIFRo ZSBVRUZJIHNwZWMgaXNuJ3QgY29tcGxldGVseQ0KPiBjbGVhciBidXQgY291bGQgYmUgcmVhZCB0 aGF0IDAgaXMgbGVnYWwgaWYgdGhpcyBwYXJ0IGlzbid0IGJlaW5nIHVzZWQuDQo+ID4NCj4gPg0K PiBodHRwczovL3VlZmkub3JnL3NwZWNzL1VFRkkvMi4xMC8yM19GaXJtd2FyZV9VcGRhdGVfYW5k X1JlcG9ydGluZy5odG0NCj4gbA0KPiA+ICNlZmktZmlybXdhcmUtbWFuYWdlbWVudC1wcm90b2Nv bC1nZXRpbWFnZWluZm8NCj4gPg0KPiA+IEl0IGRvZXMgc3RhdGUgdGhhdCB0aGlzIGlzIE9wdGlv bmFsLCBhbmQgaGFzIGEgc3RhdGVtZW50ICJBIHplcm8gbWVhbnMNCj4gPiB0aGUgRk1QIHByb3Zp ZGVyIGlzIG5vdCBhYmxlIHRvIGRldGVybWluZSBhIHVuaXF1ZSBoYXJkd2FyZSBpbnN0YW5jZQ0K PiBudW1iZXIgb3IgYSBoYXJkd2FyZSBpbnN0YW5jZSBudW1iZXIgaXMgbm90IG5lZWRlZC4iDQo+ ID4NCj4gPiBBbHNvLCBvdXIgRVNSVCBpbXBsZW1lbnRhdGlvbiBqdXN0IG1lcmdlcyBhbGwgaW5z dGFuY2VzIHRvIG9uZSBhbnl3YXlzDQo+ID4gc28gaXQgZG9lc24ndCBjdXJyZW50bHkgY29uc3Vt ZSB0aGUgaGFyZHdhcmUgaW5zdGFuY2UgZXhjZXB0IGZvciB0aGlzDQo+IGNoZWNrLg0KPiA+DQo+ ID4gVGhhbmtzLA0KPiA+IEplZmYNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiA+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT4NCj4gPiA+IFNlbnQ6IFRodXJzZGF5LCBGZWJydWFyeSA5LCAyMDIzIDg6NDMgUE0NCj4g PiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlh LmNvbT47IERlbWV0ZXIsDQo+ID4gPiBNaWtpIDxtaWtpLmRlbWV0ZXJAaW50ZWwuY29tPg0KPiA+ ID4gQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4g PiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBrZy9Fc3J0Rm1wRHhlOiBTdXBw b3J0IG11bHRpcGxlDQo+ID4gPiBkZXZpY2VzIHdpdGggMCBIYXJkd2FyZUluc3RhbmNlDQo+ID4g Pg0KPiA+ID4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0 YWNobWVudHMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gSGkgSmVmZiwNCj4gPiA+DQo+ID4gPiBUaGFu ayB5b3UgZm9yIHRoZSByZW1pbmRlci4NCj4gPiA+DQo+ID4gPiBJIGFtIHdvbmRlcmluZyBpZiB0 aGUgY2hlY2sgc2hvdWxkIGJlIGZvciBGbXBWZXJzaW9uIDwgMyBhbmQgbm90DQo+ID4gPiBGbXBI YXJkd2FyZUluc3RhbmNlICE9IDAuDQo+ID4gPg0KPiA+ID4gSXQgaXMgcG9zc2libGUgZm9yIGFu IEZtcEluZm9CdWZmZXIgdG8gaGF2ZSBhbiBGbXBWZXJzaW9uID49IDMgYW5kIGENCj4gPiA+IEhh cmR3YXJlSW5zdGFuY2Ugb2YgMC4gIElmIG1vcmUgdGhhbiBvbmUgb2YgdGhlc2UgaXQgZm91bmQs IHRoZW4NCj4gPiA+IHRoYXQgd291bGQgYmUgYW4gRUZJX1VOU1VQUE9SVEVEIGNvbmRpdGlvbi4N Cj4gPiA+DQo+ID4gPiBJZiBGbXBWZXJzaW9uID49IDMsIHRoZW4gdGhlIEhhcmR3YXJlSW5zdGFu Y2UgbXVzdCBiZSBmaWxsZWQgaW4gd2l0aA0KPiA+ID4gYSB1bmlxdWUgdmFsdWUuICAwIGNhbiBi ZSB1c2VkIGlmIHRoZXJlIGlzIGF0IG1vc3QgMSBpbnN0YW5jZSwgc28NCj4gPiA+IHRoZSBkdXBs aWNhdGUgY2hlY2sgd291bGQgbmV2ZXIgYmUgdHJpZ2dlcmVkLiAgSWYgRm1wVmVyc2lvbiA+PSAz DQo+ID4gPiBhbmQgdGhlcmUgY2FuIGJlIG1vcmUgdGhlbiBvbmUgaW5zdGFuY2UsIHRoZW4gdGhl IEhhcmR3YXJlSW5zdGFuY2UNCj4gPiA+IG11c3QgYmUgYSBub24temVybyB1bmlxdWUgdmFsdWUu DQo+ID4gPg0KPiA+ID4gVGhhbmtzLA0KPiA+ID4NCj4gPiA+IE1pa2UNCj4gPiA+DQo+ID4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IGRldmVsQGVkazIuZ3Jv dXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mDQo+ID4gPiA+IEplZmYg QnJhc2VuIHZpYSBncm91cHMuaW8NCj4gPiA+ID4gU2VudDogVGh1cnNkYXksIEZlYnJ1YXJ5IDks IDIwMjMgMjowMyBQTQ0KPiA+ID4gPiBUbzogRGVtZXRlciwgTWlraSA8bWlraS5kZW1ldGVyQGlu dGVsLmNvbT4NCj4gPiA+ID4gQ2M6IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+IFN1Ympl Y3Q6IFtlZGsyLWRldmVsXSBGVzogW1BBVENIIHYyXSBNZGVNb2R1bGVQa2cvRXNydEZtcER4ZToN Cj4gPiA+IFN1cHBvcnQNCj4gPiA+ID4gbXVsdGlwbGUgZGV2aWNlcyB3aXRoIDAgSGFyZHdhcmVJ bnN0YW5jZQ0KPiA+ID4gPg0KPiA+ID4gPiBIZXJlIGlzIGEgcGF0Y2ggdGhhdCBoYXMgYmVlbiBw ZW5kaW5nIGZvciBhIGJpdA0KPiA+ID4gPg0KPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+IEplZmYN Cj4gPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJv bTogSmVmZiBCcmFzZW4NCj4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCBGZWJydWFyeSAxLCAyMDIz IDk6MjEgQU0NCj4gPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+IENjOiBq aWFuLmoud2FuZ0BpbnRlbC5jb207IGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbjsNCj4gPiA+ID4g Z3VvbWluLmppYW5nQGludGVsLmNvbQ0KPiA+ID4gPiBTdWJqZWN0OiBSRTogW1BBVENIIHYyXSBN ZGVNb2R1bGVQa2cvRXNydEZtcER4ZTogU3VwcG9ydCBtdWx0aXBsZQ0KPiA+ID4gPiBkZXZpY2Vz IHdpdGggMCBIYXJkd2FyZUluc3RhbmNlDQo+ID4gPiA+DQo+ID4gPiA+IEFueSB1cGRhdGVzIG9u IHRoaXMgd291bGQgYmUgZ3JlYXQgdG8gZ2V0IHRoaXMgaW4gZm9yIHRoZSBuZXh0DQo+ID4gPiA+ IHN0YWJsZSByZWxlYXNlDQo+ID4gPiBpZiBwb3NzaWJsZS4NCj4gPiA+ID4NCj4gPiA+ID4gPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IEplZmYgQnJhc2VuIDxq YnJhc2VuQG52aWRpYS5jb20+DQo+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBEZWNlbWJlciAxMiwg MjAyMiAxMjoyNyBQTQ0KPiA+ID4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4g PiA+IENjOiBqaWFuLmoud2FuZ0BpbnRlbC5jb207IGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbjsN Cj4gPiA+ID4gPiBndW9taW4uamlhbmdAaW50ZWwuY29tOyBKZWZmIEJyYXNlbiA8amJyYXNlbkBu dmlkaWEuY29tPg0KPiA+ID4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2Ml0gTWRlTW9kdWxlUGtnL0Vz cnRGbXBEeGU6IFN1cHBvcnQgbXVsdGlwbGUNCj4gPiA+ID4gPiBkZXZpY2VzIHdpdGggMCBIYXJk d2FyZUluc3RhbmNlDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBTa2lwIGVycm9yIGNoZWNrIGlmIEhh cmR3YXJlSW5zdGFuY2UgaXMgMCBhcyB0aGlzIGVpdGhlciBtZWFucw0KPiA+ID4gPiA+IHRoYXQg Rm1wVmVyc2lvbiA8IDMgYW5kIG5vdCBzdXBwb3J0ZWQgb3IsICJBIHplcm8gbWVhbnMgdGhlIEZN UA0KPiA+ID4gPiA+IHByb3ZpZGVyIGlzIG5vdCBhYmxlIHRvIGRldGVybWluZSBhIHVuaXF1ZSBo YXJkd2FyZSBpbnN0YW5jZQ0KPiA+ID4gPiA+IG51bWJlciBvciBhIGhhcmR3YXJlIGluc3RhbmNl IG51bWJlciBpcyBub3QgbmVlZGVkLiIgcGVyIFVFRkkNCj4gc3BlY2lmaWNhdGlvbi4NCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IEFzIHRoZSBGbXBJbnN0YW5jZXMgYXJlIG1lcmdlZCBhbmQgSGFyZHdh cmVJbnN0YW5jZSBpcyBub3QgdXNlZA0KPiA+ID4gPiA+IHJlbW92ZSBlcnJvciBjaGVjayBpbiB0 aGlzIGNhc2UuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6 IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+DQo+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ ID4gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRXNydEZtcER4ZS9Fc3J0Rm1wLmMgfCAyMg0KPiAr KysrKysrKysrKystLQ0KPiA+ID4gLS0tLQ0KPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ICAxIGZp bGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPg0K PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0VzcnRGbXBEeGUv RXNydEZtcC5jDQo+ID4gPiA+ID4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0VzcnRGbXBEeGUv RXNydEZtcC5jDQo+ID4gPiA+ID4gaW5kZXggNGY0N2M1NWNjZS4uNWJjNjI3NDYxZCAxMDA2NDQN Cj4gPiA+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0VzcnRGbXBEeGUvRXNydEZt cC5jDQo+ID4gPiA+ID4gKysrIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9Fc3J0Rm1wRHhlL0Vz cnRGbXAuYw0KPiA+ID4gPiA+IEBAIC0xNTMsMTYgKzE1MywyMCBAQCBDcmVhdGVFc3J0RW50cnkg KA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgLy8NCj4gPiA+ID4gPiAgICAvLyBDaGVjayB0byBz ZWUgb2YgRm1wSW1hZ2VJbmZvQnVmIEdVSUQvSGFyZHdhcmVJbnN0YW5jZSBpcw0KPiA+ID4gPiA+ IHVuaXF1ZQ0KPiA+ID4gPiA+ICsgIC8vIFNraXAgaWYgSGFyZHdhcmVJbnN0YW5jZSBpcyAwIGFz IHRoaXMgaXMgdGhlIGNhc2UgaWYNCj4gPiA+ID4gPiArIEZtcFZlcnNpb24gPA0KPiA+ID4gPiA+ ICsgMyAgLy8gb3IgdGhlIGRldmljZSBjYW4gbm90IGNyZWF0ZSBhIHVuaXF1ZSBJRCBwZXIgVUVG SQ0KPiA+ID4gPiA+ICsgc3BlY2lmaWNhdGlvbg0KPiA+ID4gPiA+ICAgIC8vDQo+ID4gPiA+ID4g LSAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgKk51bWJlck9mRGVzY3JpcHRvcnM7IEluZGV4Kysp IHsNCj4gPiA+ID4gPiAtICAgIGlmIChDb21wYXJlR3VpZCAoJkhhcmR3YXJlSW5zdGFuY2VzW0lu ZGV4XS5JbWFnZVR5cGVHdWlkLA0KPiA+ID4gPiA+ICZGbXBJbWFnZUluZm9CdWYtPkltYWdlVHlw ZUlkKSkgew0KPiA+ID4gPiA+IC0gICAgICBpZiAoSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkhh cmR3YXJlSW5zdGFuY2UgPT0NCj4gPiA+ID4gPiBGbXBIYXJkd2FyZUluc3RhbmNlKSB7DQo+ID4g PiA+ID4gLSAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVzcnRGbXBEeGU6IER1cGxpY2F0 ZSBmaXJtd2FyZQ0KPiBpbWFnZQ0KPiA+ID4gPiA+IGRlc2NyaXB0b3Igd2l0aCBHVUlEICVnIEhh cmR3YXJlSW5zdGFuY2U6MHgleFxuIiwNCj4gPiA+ICZGbXBJbWFnZUluZm9CdWYtDQo+ID4gPiA+ ID4gPkltYWdlVHlwZUlkLCBGbXBIYXJkd2FyZUluc3RhbmNlKSk7DQo+ID4gPiA+ID4gLSAgICAg ICAgQVNTRVJUICgNCj4gPiA+ID4gPiAtICAgICAgICAgICFDb21wYXJlR3VpZCAoJkhhcmR3YXJl SW5zdGFuY2VzW0luZGV4XS5JbWFnZVR5cGVHdWlkLA0KPiA+ID4gPiA+ICZGbXBJbWFnZUluZm9C dWYtPkltYWdlVHlwZUlkKSB8fA0KPiA+ID4gPiA+IC0gICAgICAgICAgSGFyZHdhcmVJbnN0YW5j ZXNbSW5kZXhdLkhhcmR3YXJlSW5zdGFuY2UgIT0NCj4gPiA+ID4gPiBGbXBIYXJkd2FyZUluc3Rh bmNlDQo+ID4gPiA+ID4gLSAgICAgICAgICApOw0KPiA+ID4gPiA+IC0gICAgICAgIHJldHVybiBF RklfVU5TVVBQT1JURUQ7DQo+ID4gPiA+ID4gKyAgaWYgKEZtcEhhcmR3YXJlSW5zdGFuY2UgIT0g MCkgew0KPiA+ID4gPiA+ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgKk51bWJlck9mRGVz Y3JpcHRvcnM7IEluZGV4KyspIHsNCj4gPiA+ID4gPiArICAgICAgaWYgKENvbXBhcmVHdWlkICgm SGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkltYWdlVHlwZUd1aWQsDQo+ID4gPiA+ID4gJkZtcElt YWdlSW5mb0J1Zi0+SW1hZ2VUeXBlSWQpKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgaWYgKEhhcmR3 YXJlSW5zdGFuY2VzW0luZGV4XS5IYXJkd2FyZUluc3RhbmNlID09DQo+ID4gPiA+ID4gRm1wSGFy ZHdhcmVJbnN0YW5jZSkgew0KPiA+ID4gPiA+ICsgICAgICAgICAgREVCVUcgKChERUJVR19FUlJP UiwgIkVzcnRGbXBEeGU6IER1cGxpY2F0ZSBmaXJtd2FyZQ0KPiA+ID4gPiA+ICsgaW1hZ2UNCj4g PiA+ID4gPiBkZXNjcmlwdG9yIHdpdGggR1VJRCAlZyBIYXJkd2FyZUluc3RhbmNlOjB4JXhcbiIs DQo+ID4gPiAmRm1wSW1hZ2VJbmZvQnVmLQ0KPiA+ID4gPiA+ID5JbWFnZVR5cGVJZCwgRm1wSGFy ZHdhcmVJbnN0YW5jZSkpOw0KPiA+ID4gPiA+ICsgICAgICAgICAgQVNTRVJUICgNCj4gPiA+ID4g PiArICAgICAgICAgICAgIUNvbXBhcmVHdWlkDQo+ID4gPiA+ID4gKyAoJkhhcmR3YXJlSW5zdGFu Y2VzW0luZGV4XS5JbWFnZVR5cGVHdWlkLA0KPiA+ID4gPiA+ICZGbXBJbWFnZUluZm9CdWYtPklt YWdlVHlwZUlkKSB8fA0KPiA+ID4gPiA+ICsgICAgICAgICAgICBIYXJkd2FyZUluc3RhbmNlc1tJ bmRleF0uSGFyZHdhcmVJbnN0YW5jZSAhPQ0KPiA+ID4gPiA+IEZtcEhhcmR3YXJlSW5zdGFuY2UN Cj4gPiA+ID4gPiArICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICAgICAgICAgIHJldHVybiBF RklfVU5TVVBQT1JURUQ7DQo+ID4gPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gPiA+ICAgICAgICB9 DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gICAgfQ0KPiA+ID4gPiA+IC0tDQo+ID4gPiA+ ID4gMi4yNS4xDQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ ID4NCj4gPg0KPiA+DQo+ID4gDQo+ID4NCg0K