From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com [40.107.237.55]) by mx.groups.io with SMTP id smtpd.web11.9089.1635530324729466173 for ; Fri, 29 Oct 2021 10:58:45 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=t/evcEcl; 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.237.55, mailfrom: bobm@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jEdSSPMjJjIkgMYd8ittPI1cbTd7ZOflleVNXI07a4tFaUOiVfm/LsNySRooSK5HN8TzdaHxF24BhHFeCTbW3KW2Z3aHATDLX+6BPkC7Jup038TbXIIWse6T6KtGkCxFtV/rxwf7+opU+3WYRPgiZ8oNtKwtQK4j9b9vwRyapDMEJ2ITty5iMyocjAdNUsr397M4fC95yNu8fov/twZU4xq5GHxdgM4MTGPDWvz3YbL4fJo3kNjBm99yIy0omRBP7bSap3fxHn2rRZyQhU5VRJ6/axBWER6K7dl4UwdJaAGBJtyyhJYtXkGpVcz1AiodPO49H59O9GAd5WjzXjTn0Q== 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=CMaunXiF3DYcFiEcn4XNi9+lyLI07SvYT7QKa2AR19A=; b=WiMElpbj8PdUWLm95aXQnRqQU8Hj5YqPKySXQ+7yFC2+p2N+T1Ik/EH+cSMq2KBslo94sCtGAnBCNJERcYYS46VAIMJ1QkZD4L/Z1drEn2LmykJip8XCmp7bS4JMdN+3AgkPAqPe8rh+HzPiXc3kxxx/dEacCkPtEu8rjL5Mx5UKw9gp9N0D9BTCAOQzw5grq6eEKduvRqurhVFrq/JR0qfXewyDOIML6FxaxFK4cbpE5WoA5WtI75LKgLXlEfEjO07VMfAfQWZFGYs1KFDvsM38j7/UxAbNzNp+/Ad+tg60yDvKAiFxxXjkGiELzLx54msvimd6IE7CUi7hMfG11Q== 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=CMaunXiF3DYcFiEcn4XNi9+lyLI07SvYT7QKa2AR19A=; b=t/evcEclxb6qji9/6Kl2AYmixQbvlxRLCvyatNkbLSljv8ygT4Im7hoYv+iUuQ+wN+ZqHui5xgxpBXMKXH9bjug9ExMeh2wtdoWJDiKvV22wbTNxNM2+jUhtcfjzM9fEZzmfXaaPp/oXRRoSyXyLA2xE+5Yg0QSDVTzBE1rCJXjkjwaLreLKilA5AsmOtOU8srLB4JhAdqt1Ni3b8i7c/VfrWGqwrOfBMpHqQse8FLyUMnfGM2n6ISHaJhL9Qeuvb+vQETjs7JPTKZnWU0qDUfw99fe5qE8DDiOHdfL92/2zxQo9EoKrSe/5E7SZAR4fjhuq52kJXSOabOsvuaOC6Q== Received: from DM6PR12MB4779.namprd12.prod.outlook.com (2603:10b6:5:172::23) by DM6PR12MB4809.namprd12.prod.outlook.com (2603:10b6:5:1f9::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Fri, 29 Oct 2021 17:58:42 +0000 Received: from DM6PR12MB4779.namprd12.prod.outlook.com ([fe80::755d:82d1:d79b:48b4]) by DM6PR12MB4779.namprd12.prod.outlook.com ([fe80::755d:82d1:d79b:48b4%7]) with mapi id 15.20.4628.020; Fri, 29 Oct 2021 17:58:42 +0000 From: "Bob Morgan" To: gaoliming , "devel@edk2.groups.io" CC: 'Jian J Wang' , 'Guomin Jiang' Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/DxeCapsuleLibFmp: Add runtime SetImage support Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/DxeCapsuleLibFmp: Add runtime SetImage support Thread-Index: AQHXxSV6LuetJ3n94Ei2goGBL70eUavpRlaAgAEI8cA= Date: Fri, 29 Oct 2021 17:58:42 +0000 Message-ID: References: <00a801d7cc68$50cebc70$f26c3550$@byosoft.com.cn> In-Reply-To: <00a801d7cc68$50cebc70$f26c3550$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: byosoft.com.cn; dkim=none (message not signed) header.d=none;byosoft.com.cn; dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8c505763-4983-42ab-b400-08d99b05be9b x-ms-traffictypediagnostic: DM6PR12MB4809: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gMSnBbkM4Kk+q5jrc/6x+uX2Cth82hADtA6j3SjJQOD6K/LEsshmMmUxy7OvuvXTohQxQFTqbS0WbCrE/Fc06f9vm6093XM9z1+g0LpjTrS9MygZ51vwwXJhlt1f9TPdlGv6qvMt3Q/6ofk1kzc9dy3LDxmtST+mrGawlXuEAxxXFiHPGwkMxCNfp2kWGVltrwF15Od4/tltQP/Up63Rjm80lw8XcyWgpBQXMc36TPBSxRemVAlYxiP7eN70E5UDGR0Y5A6OzWpB/XWD41SQlDYEXHFXiuAdYunGrWoct1zJqFilIhTEhjbOw+eTq2C9mJ/m2xH/0XUL0L/L67u0I67GLvgfhkzUwVRQtImjsU3mesdVUfOxWUQ1P+3yuNSOjnFpKMrbTEW6oCEx84hCWVgnzj+mnd3/ESWoQossODwVD/zqI27u5R2nx5TuV/qTdHGAhixprj97kmDc5G3dV84CUHn1xbiZMrY/cDo9sugRz18cayFQb4/cxcnK5kdsGiyOurmpUZhpiCTIuYASqcexzi1WePSN8dRJ3xxAL1Al5cQUjWBZGi76Xkzxhh8P1lXPEMTCPe3Z1f1EcGPLVXLYxPdhuyTihKp2j+xWo8gT6/PKSTEmS82HiIydj0OyMs8UcXRGOU061+kscWaDY+nmCGQJCfdlFO6FMGhNbgZWAnfWTrvK37MIuxF8lQENjw+zlvHvTVDXn51vSdWH5Twa0kHMY5L8F4eIn6w4CmpIWorA+DqmLv50wM5JPJcl3ntl/fKQ0/mVKVQmOIVtMQcYkE8HU97KTI7mX4tlr+SHEYyfEbvN+ygxrEWBCFeXEtIf31hFZ35+xA3Oz15iWA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4779.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(26005)(53546011)(86362001)(4326008)(55016002)(52536014)(83380400001)(6506007)(122000001)(966005)(5660300002)(38070700005)(54906003)(2906002)(8936002)(30864003)(66476007)(8676002)(64756008)(38100700002)(66446008)(66556008)(110136005)(33656002)(66946007)(71200400001)(9686003)(186003)(7696005)(45080400002)(76116006)(508600001)(316002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TTZmWFJkTGU1aWpCbkpKcUJJL2I1ZGRLRjZEclduQmErbUlmMTFvUGtuZDJj?= =?utf-8?B?Y3FrL1NYNHdhWXpwUHNqc09WdDllVnkxOFBnMlNmY2VEU2ZXQ1JpQmZWNWw3?= =?utf-8?B?dFUva1M1clBXaGp2U0draUJLNjh0cVFTL2kxbHFXNG9qQ0cyMVdnMStvbkRs?= =?utf-8?B?SWhiOW4xU043Q0Y5U2kzOW9qenJUQ3NZNEdjeCtMR0pkZUhwazFmSXlINTc1?= =?utf-8?B?VmJZOUdHT3FRKytvUFhRcWJQZ0JyWkRkS2UzdlpLMlIyM0h5akNrVEEycFpv?= =?utf-8?B?K1pZYnhqRHRTTjdkTXU3KzNyemlyeEsrSU5ueXdKY05hSndMcEJDN0ZVYWJJ?= =?utf-8?B?S0d6WXFSWjF3WlA5UHNQdXRhdXBQVHJQMlVvTWVoNXowbmtHSDZQaitkMGgx?= =?utf-8?B?b2xJb3FSYU9lMTBJc3hTeUxlS0xUUmpQTEZGRXdUcjFJSHVUZytUQUJONGVx?= =?utf-8?B?Mk5hSHRNOXlzcGN5cWVMZmZpWS9mYS9mZmRxMUREY01Gb2pmWTRlbnBWZnQx?= =?utf-8?B?TzBVaDVhVXBWRFF5QVVlR0F0dFFxYWdiaHZGRThDYTlmTDZwMHZMcWRJWHdw?= =?utf-8?B?UnY0NEhJN1RJMHFyTGtJV0x5a28vZ0luRDNWNk0xcFVIRDhyR2xGZVdsMWFq?= =?utf-8?B?UGR5NG1KdFR2Y01VN09EbTU1YldWdWNIT0xWYkpUQnBjcUQwUDd3UzY4UVlD?= =?utf-8?B?L3hRVGVrVzhkSUlmQVVDc1o4MUZhQ3ZtTnZ4V0pTN084MHdVL0cvU2wrc0d6?= =?utf-8?B?VjBtV2wyWFZWMk9zZHlkWk9PallkaXp1Q2xyelRVenF6ajh0a25UNFQ0OGht?= =?utf-8?B?MDZDSkxzUDVkWmlDcjcwMHV1aFRNclZuNWMxdXBIZWtabEVOSmIvZjBQbG5L?= =?utf-8?B?cjRBb2orclorWEw4MUdaM2E0VTJ3blpUV2VMc0JZeTFENHE3SVlBcmx5TE9s?= =?utf-8?B?OHlqV0xRVGdXL0k0MVR4WGFOTlZsa0FBN282TjBZcjQyWk00RTk1TFMrMzBF?= =?utf-8?B?Lzk4ajh3RXRPUnNtYS9iSGtGZTZFSjBjV29aOTV0aXBRcUxxU2xlSElEc0xW?= =?utf-8?B?bldMUk83a3lXVXVKMHgwUzY0RHRTbHA2U3lZQU91L2VHc1FyN29HeVE4UXIx?= =?utf-8?B?K1A4WWgrWmtsb1o1TUxpeWg3U0JCazV5SzZGSUQ4NmF1d3BXQjVQOUtEcXJN?= =?utf-8?B?cDA5T2tvbEcrd3ZJL0FPRHphVFVGeHdxaVdZUTY4YTd3anhuQmtBbmFuZjE0?= =?utf-8?B?SE50S1V1YWcvSitpQXN3TDlFQThOWlBTQ1dMUDg0cDAwVDZNMDlxcFRjUG9F?= =?utf-8?B?ekZwcGxueWxXQzBLSktqMGIyUnVOUUdvK3AyNXZqUDB1eHJtOElIbDNwYk00?= =?utf-8?B?cmlZSmV2TDJlRWFKMlh0T0w3UUdxTGdaMnpBSFFrWUZuZXR2TmRadmo0bGJ3?= =?utf-8?B?VHhqeVU4U3dkZHZLbDRGOU4yVkVRUmJabzRZQ1Byb1V6dXNEYTczdnE3YnR2?= =?utf-8?B?RVk5WldtRCtKRm4vWkFiMy9hVGFraE1sY2pLWXRBajFPRG5oY1FLT21YaEJY?= =?utf-8?B?QjZac3REQm1wY1lpdk1nSnYzRkJpTnJvcHJOYUNBekdNRUowcFdnRWI5NGU2?= =?utf-8?B?eTBJRnVCK0xwQURpMzRpalpGTFJ2dER2YXB2TTNuVUg2SUtndExybjdkWi9M?= =?utf-8?B?MTBlVm9McXhUZHRsT2ZWLzk2N3JOMmd2VXRkUWgxaXFaZUdZRU81TWtnMmFT?= =?utf-8?B?VVpjQU9LeWNvVmFZT0dnWitXM1NYK2IrbzNtelhnNUljN1JYUTk3bVNTOWw3?= =?utf-8?B?YnBGeWluZzBvd0V5MTcwbVczckZOM0ZPVEN0ZGloSjF6bHpycnA2cFBxYkNr?= =?utf-8?B?eXdUOXBvRWNxc1VncUcrc3d0MjN4UjQwbWRtQjBUeitWZU15RVM2djN4bkly?= =?utf-8?B?dU0ySXVVaHZ2Wnp6TmFkL1ZERk0weDQrRjVmVFRraG9VUVNlZ3RoQkI1Wkl1?= =?utf-8?B?ZFdBSG04VmtjOVJ0djBZVHpjRjFRd0VPdGpaazNMWUlTZGpUMHRMck0zRldX?= =?utf-8?B?RDJsYVFvZjVwUi96dDg0b2hpS3pVRHVVYmM3dVNMMk5VVitBU1I4aTUxQVFN?= =?utf-8?Q?8yDs=3D?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4779.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c505763-4983-42ab-b400-08d99b05be9b X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2021 17:58:42.3303 (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: ZIzcktSty+r8Egd7sxz/blk1bnmfldS2pJWc2/gtOldFCb4j33KYjsZ50Hqr+anm X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4809 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGltaW5nLCAgU2VlIGlubGluZSBiZWxvdy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBnYW9saW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gU2Vu dDogVGh1cnNkYXksIE9jdG9iZXIgMjgsIDIwMjEgNzo1NyBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5n cm91cHMuaW87IEJvYiBNb3JnYW4gPGJvYm1AbnZpZGlhLmNvbT4NCj4gQ2M6ICdKaWFuIEogV2Fu ZycgPGppYW4uai53YW5nQGludGVsLmNvbT47ICdHdW9taW4gSmlhbmcnDQo+IDxndW9taW4uamlh bmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiDlm57lpI06IFtlZGsyLWRldmVsXSBbUEFUQ0hdIE1k ZU1vZHVsZVBrZy9EeGVDYXBzdWxlTGliRm1wOg0KPiBBZGQgcnVudGltZSBTZXRJbWFnZSBzdXBw b3J0DQo+IA0KPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBh dHRhY2htZW50cw0KPiANCj4gDQo+IEJvYjoNCj4gICBJIHRoaW5rIHRoaXMgcGF0Y2ggbmVlZHMg dG8gd29yayB0b2dldGhlciB3aXRoIHRoZSBjaGFuZ2VzIG9mDQo+IEZtcERldmljZVBrZzogQWRk IHN1cHBvcnQgZm9yIHJ1bnRpbWUgRm1wRHhlIGRyaXZlci4NCg0KWWVzLCB0aGlzIHBhdGNoIGFk ZHMgc3VwcG9ydCB0byBwcm9jZXNzIEZNUCBjYXBzdWxlcyBhdCBydW50aW1lIGlmIHRoZSBjYXBz dWxl4oCZcyBVcGRhdGVJbWFnZVR5cGVJZCBpcyBzdXBwb3J0ZWQgYnkgYSBydW50aW1lLWNhcGFi bGUgRm1wRHhlIGRyaXZlciAoZS5nLiB1c2luZyB0aGUgRm1wRGV2aWNlUGtnICBwYXRjaCB5b3Ug bWVudGlvbmVkKS4gIFRoZSBQY2RTdXBwb3J0UHJvY2Vzc0NhcHN1bGVBdFJ1bnRpbWUgUENEIG11 c3QgYmUgVFJVRSBhbmQgdGhlIGNhcHN1bGXigJlzIENBUFNVTEVfRkxBR1NfUEVSU0lTVF9BQ1JP U1NfUkVTRVQgZmxhZyBtdXN0IGJlIEZBTFNFLg0KPiANCj4gICBDYXBzdWxlIGlzIHJ1bnRpbWUg c2VydmljZS4gSWYgaXQgY29uc3VtZXMgRk1QIHRvIGRvIHVwZGF0ZSwgRk1QIHNlcnZpY2UNCj4g Y2FuIHN1cHBvcnQgcnVudGltZS4gQnV0LCBob3cgZG9lcyBDYXBzdWxlIGtub3cgd2hldGhlciBG TVAgcHJvdG9jb2wNCj4gc3VwcG9ydHMgcnVudGltZSBvciBub3Q/DQoNClJpZ2h0LCB0aGlzIHBh dGNoIHJlcXVpcmVzIGFuIGltcGxlbWVudGF0aW9uIHRvIGxpc3QgdGhlIEZNUCBJbWFnZVR5cGVJ ZCBHVUlEcyBzdXBwb3J0ZWQgYnkgYW55IHJ1bnRpbWUtY2FwYWJsZSBGbXBEeGUgZHJpdmVycyBp biB0aGUgbmV3IFBjZFJ1bnRpbWVGbXBDYXBzdWxlSW1hZ2VUeXBlSWRHdWlkIGFycmF5IFBDRC4g IFRoaXMgUENEIGlzIHVzZWQgYnkgdGhlIG5ldyAgSW5pdGlhbGl6ZVJ1bnRpbWVGbXBBcnJheXMo KSBmdW5jdGlvbiBkdXJpbmcgRHhlUnVudGltZUNhcHN1bGVMaWIgaW5pdGlhbGl6YXRpb24gdG8g ZmluZCB0aGUgRk1QIGluc3RhbmNlcyB0aGF0IHN1cHBvcnQgdGhvc2UgSW1hZ2VUeXBlSWRzIGFu ZCBzYXZlIHRoZWlyIEVGSV9GSVJNV0FSRV9NQU5BR0VNRU5UX1BST1RPQ09MIHByb3RvY29sIHN0 cnVjdHVyZSBwb2ludGVycyBmb3IgcnVudGltZSB1c2UgZHVyaW5nIGNhcHN1bGUgcHJvY2Vzc2lu Zy4NCg0KV2hlbiBQcm9jZXNzRm1wQ2Fwc3VsZUltYWdlKCkgZXhlY3V0ZXMgaXRzIHN0ZXAg4oCY Mi4gUm91dGUgcGF5bG9hZCB0byByaWdodCBGTVAgaW5zdGFuY2XigJksIGl0IGRldGVjdHMgcnVu dGltZSBleGVjdXRpb24gYW5kIHVzZXMgdGhlIHNhdmVkIHJ1bnRpbWUtY2FwYWJsZSBGTVAgcHJv dG9jb2wgc3RydWN0dXJlIHBvaW50ZXIgaWYgaXRzIEltYWdlVHlwZUlkIG1hdGNoZXMgdGhhdCBv ZiB0aGUgY2Fwc3VsZSBiZWluZyBwcm9jZXNzZWQuDQoNCkkgaG9wZSB0aGF0IGhlbHBzLiAgUGxl YXNlIGxldCBtZSBrbm93IGlmIGFkZGl0aW9uYWwgY2xhcmlmaWNhdGlvbiBpcyBuZWVkZWQuDQoN ClRoYW5rcywNCi1ib2INCj4gDQo+IFRoYW5rcw0KPiBMaW1pbmcNCj4gPiAtLS0tLemCruS7tuWO n+S7ti0tLS0tDQo+ID4g5Y+R5Lu25Lq6OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRr Mi5ncm91cHMuaW8+IOS7o+ihqCBCb2IgTW9yZ2FuDQo+IHZpYQ0KPiA+IGdyb3Vwcy5pbw0KPiA+ IOWPkemAgeaXtumXtDogMjAyMeW5tDEw5pyIMjDml6UgNDoxMQ0KPiA+IOaUtuS7tuS6ujogZGV2 ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiDmioTpgIE6IEJvYiBNb3JnYW4gPGJvYm1AbnZpZGlhLmNv bT47IEppYW4gSiBXYW5nDQo+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+Ow0KPiA+IExpbWluZyBH YW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IEd1b21pbiBKaWFuZw0KPiA+IDxndW9taW4u amlhbmdAaW50ZWwuY29tPg0KPiA+IOS4u+mimDogW2VkazItZGV2ZWxdIFtQQVRDSF0gTWRlTW9k dWxlUGtnL0R4ZUNhcHN1bGVMaWJGbXA6IEFkZA0KPiBydW50aW1lDQo+ID4gU2V0SW1hZ2Ugc3Vw cG9ydA0KPiA+DQo+ID4gQWRkcyBvcHRpb25hbCBzdXBwb3J0IGZvciBwcm9jZXNzaW5nIEZNUCBj YXB1c2xlIGltYWdlcyBhZnRlcg0KPiA+IEV4aXRCb290U2VydmljZXMoKSBpZiB0aGUgSW1hZ2VU eXBlSWRHdWlkIGlzIG1lbnRpb25lZCBpbiB0aGUgbmV3DQo+ID4gUGNkUnVudGltZUZtcENhcHN1 bGVJbWFnZVR5cGVJZEd1aWQgbGlzdC4NCj4gPg0KPiA+IENjOiBKaWFuIEogV2FuZyA8amlhbi5q LndhbmdAaW50ZWwuY29tPg0KPiA+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5j b20uY24+DQo+ID4gQ2M6IEd1b21pbiBKaWFuZyA8Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4g PiBTaWduZWQtb2ZmLWJ5OiBCb2IgTW9yZ2FuIDxib2JtQG52aWRpYS5jb20+DQo+ID4gLS0tDQo+ ID4gIC4uLi9MaWJyYXJ5L0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fwc3VsZUxpYi5jICB8ICA4MSAr KysrKysrKystLS0NCj4gPiAgLi4uL0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fwc3VsZVJ1bnRpbWUu YyAgICAgIHwgMTE5DQo+ID4gKysrKysrKysrKysrKysrKysrDQo+ID4gIC4uLi9EeGVDYXBzdWxl TGliRm1wL0R4ZVJ1bnRpbWVDYXBzdWxlTGliLmluZiB8ICAgNCArDQo+ID4gIE1kZU1vZHVsZVBr Zy9NZGVNb2R1bGVQa2cuZGVjICAgICAgICAgICAgICAgICB8ICAgNyArLQ0KPiA+ICA0IGZpbGVz IGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRp ZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVDYXBzdWxlTGliRm1wL0R4ZUNhcHN1 bGVMaWIuYw0KPiA+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ2Fwc3VsZUxpYkZtcC9EeGVD YXBzdWxlTGliLmMNCj4gPiBpbmRleCA5MDk0MjEzNWQ3Li4wMDAwZjkxYzZhIDEwMDY0NA0KPiA+ IC0tLSBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5L0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fwc3VsZUxp Yi5jDQo+ID4gKysrIGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ2Fwc3VsZUxpYkZtcC9EeGVD YXBzdWxlTGliLmMNCj4gPiBAQCAtMTAsNiArMTAsNyBAQA0KPiA+ICAgIFZhbGlkYXRlRm1wQ2Fw c3VsZSgpLCBhbmQgRGlzcGxheUNhcHN1bGVJbWFnZSgpIHJlY2VpdmVzIHVudHJ1c3RlZA0KPiA+ IGlucHV0IGFuZA0KPiA+ICAgIHBlcmZvcm1zIGJhc2ljIHZhbGlkYXRpb24uDQo+ID4NCj4gPiAr ICBDb3B5cmlnaHQgKGMpIDIwMjEsIE5WSURJQSBDT1JQT1JBVElPTi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gICAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOSwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPiBAQCAtNDEsNiArNDIsMTEgQEAN Cj4gPiAgI2luY2x1ZGUgPFByb3RvY29sL0Zpcm13YXJlTWFuYWdlbWVudFByb2dyZXNzLmg+DQo+ ID4gICNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQYXRoLmg+DQo+ID4NCj4gPiArQk9PTEVBTiAo RUZJQVBJICptTGliQXRSdW50aW1lRnVuY3Rpb24pIChWT0lEKSAgICAgICAgICAgICAgICAgID0N Cj4gPiBOVUxMOw0KPiA+ICtFRklfRklSTVdBUkVfTUFOQUdFTUVOVF9QUk9UT0NPTCAgICAqbVJ1 bnRpbWVGbXANCj4gPiA9IE5VTEw7DQo+ID4gK1ZPSUQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICoqbVJ1bnRpbWVGbXBQcm90b2NvbEFycmF5DQo+ID4gPSBOVUxMOw0KPiA+ICtFRklf R1VJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbVJ1bnRpbWVGbXBHdWlkQXJyYXkNCj4g PiA9IE5VTEw7DQo+ID4gKw0KPiA+ICBFRklfU1lTVEVNX1JFU09VUkNFX1RBQkxFICptRXNydFRh YmxlICAgICAgICAgICAgICAgICAgPSBOVUxMOw0KPiA+ICBCT09MRUFOICAgICAgICAgICAgICAg ICAgIG1Jc1ZpcnR1YWxBZGRyQ29udmVydGVkICAgICAgPSBGQUxTRTsNCj4gPg0KPiA+IEBAIC01 NTEsNiArNTU3LDExIEBAIER1bXBBbGxGbXBJbmZvICgNCj4gPiAgICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZVZlcnNpb247DQo+ID4gICAgQ0hB UjE2DQo+ID4gKlBhY2thZ2VWZXJzaW9uTmFtZTsNCj4gPg0KPiA+ICsgIC8vIER1bXAgbm90IHN1 cHBvcnRlZCBhdCBydW50aW1lLg0KPiA+ICsgIGlmICgobUxpYkF0UnVudGltZUZ1bmN0aW9uICE9 IE5VTEwpICYmIG1MaWJBdFJ1bnRpbWVGdW5jdGlvbiAoKSkgew0KPiA+ICsgICAgcmV0dXJuOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gICAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVIYW5kbGVCdWZmZXIg KA0KPiA+ICAgICAgICAgICAgICAgICAgICBCeVByb3RvY29sLA0KPiA+ICAgICAgICAgICAgICAg ICAgICAmZ0VmaUZpcm13YXJlTWFuYWdlbWVudFByb3RvY29sR3VpZCwNCj4gPiBAQCAtOTA2LDI1 ICs5MTcsMzUgQEAgU2V0Rm1wSW1hZ2VEYXRhICgNCj4gPiAgICBDSEFSMTYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKkFib3J0UmVhc29uOw0KPiA+ICAgIEVGSV9GSVJN V0FSRV9NQU5BR0VNRU5UX1VQREFURV9JTUFHRV9QUk9HUkVTUw0KPiA+IFByb2dyZXNzQ2FsbGJh Y2s7DQo+ID4NCj4gPiAtICBTdGF0dXMgPSBnQlMtPkhhbmRsZVByb3RvY29sKA0KPiA+IC0gICAg ICAgICAgICAgICAgICBIYW5kbGUsDQo+ID4gLSAgICAgICAgICAgICAgICAgICZnRWZpRmlybXdh cmVNYW5hZ2VtZW50UHJvdG9jb2xHdWlkLA0KPiA+IC0gICAgICAgICAgICAgICAgICAoVk9JRCAq KikmRm1wDQo+ID4gLSAgICAgICAgICAgICAgICAgICk7DQo+ID4gLSAgaWYgKEVGSV9FUlJPUihT dGF0dXMpKSB7DQo+ID4gLSAgICByZXR1cm4gU3RhdHVzOw0KPiA+IC0gIH0NCj4gPiArICAvLyBJ ZiBub3QgdXNpbmcgb3B0aW9uYWwgcnVudGltZSBzdXBwb3J0LCBnZXQgRk1QIHByb3RvY29sIGZv cg0KPiA+ICsgZ2l2ZW4NCj4gPiBIYW5kbGUuDQo+ID4gKyAgLy8gT3RoZXJ3aXNlLCB1c2UgdGhl IG9uZSBzYXZlZCBieSBQcm9jZXNzRm1wQ2Fwc3VsZUltYWdlKCkuDQo+ID4gKyAgaWYgKChtTGli QXRSdW50aW1lRnVuY3Rpb24gPT0gTlVMTCkgfHwgIW1MaWJBdFJ1bnRpbWVGdW5jdGlvbiAoKSkg ew0KPiA+ICsgICAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCgNCj4gPiArICAgICAgICAg ICAgICAgICAgICBIYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgJmdFZmlGaXJtd2Fy ZU1hbmFnZW1lbnRQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKFZPSUQg KiopJkZtcA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpIHsNCj4gPiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICAgIH0NCj4g Pg0KPiA+IC0gIC8vDQo+ID4gLSAgLy8gTG9va3VwIEZpcm13YXJlIE1hbmFnZW1lbnQgUHJvZ3Jl c3MgUHJvdG9jb2wgYmVmb3JlIFNldEltYWdlKCkNCj4gPiBpcyBjYWxsZWQNCj4gPiAtICAvLyBU aGlzIGlzIGFuIG9wdGlvbmFsIHByb3RvY29sIHRoYXQgbWF5IG5vdCBiZSBwcmVzZW50IG9uIEhh bmRsZS4NCj4gPiAtICAvLw0KPiA+IC0gIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0K PiA+IC0gICAgICAgICAgICAgICAgICBIYW5kbGUsDQo+ID4gLSAgICAgICAgICAgICAgICAgICZn RWRraWlGaXJtd2FyZU1hbmFnZW1lbnRQcm9ncmVzc1Byb3RvY29sR3VpZCwNCj4gPiAtICAgICAg ICAgICAgICAgICAgKFZPSUQgKiopJm1GbXBQcm9ncmVzcw0KPiA+IC0gICAgICAgICAgICAgICAg ICApOw0KPiA+IC0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIC8vDQo+ID4g KyAgICAvLyBMb29rdXAgRmlybXdhcmUgTWFuYWdlbWVudCBQcm9ncmVzcyBQcm90b2NvbCBiZWZv cmUgU2V0SW1hZ2UoKQ0KPiA+IGlzIGNhbGxlZA0KPiA+ICsgICAgLy8gVGhpcyBpcyBhbiBvcHRp b25hbCBwcm90b2NvbCB0aGF0IG1heSBub3QgYmUgcHJlc2VudCBvbiBIYW5kbGUuDQo+ID4gKyAg ICAvLw0KPiA+ICsgICAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgSGFuZGxlLA0KPiA+ICsNCj4gPiAmZ0Vka2lpRmlybXdhcmVNYW5hZ2Vt ZW50UHJvZ3Jlc3NQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKFZPSUQg KiopJm1GbXBQcm9ncmVzcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgIG1GbXBQcm9ncmVzcyA9IE5VTEw7 DQo+ID4gKyAgICB9DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIGlmIChtUnVudGltZUZtcCA9 PSBOVUxMKSB7DQo+ID4gKyAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gKyAgICB9 DQo+ID4gKyAgICBGbXAgPSBtUnVudGltZUZtcDsNCj4gPiAgICAgIG1GbXBQcm9ncmVzcyA9IE5V TEw7DQo+ID4gICAgfQ0KPiA+DQo+ID4gQEAgLTEyNTksNiArMTI4MCwzMCBAQCBQcm9jZXNzRm1w Q2Fwc3VsZUltYWdlICgNCj4gPiAgICAgICAgVXBkYXRlSGFyZHdhcmVJbnN0YW5jZSA9DQo+ID4g SW1hZ2VIZWFkZXItPlVwZGF0ZUhhcmR3YXJlSW5zdGFuY2U7DQo+ID4gICAgICB9DQo+ID4NCj4g PiArICAgIC8vIE9wdGlvbmFsIHJ1bnRpbWUgRk1QIFNldEltYWdlIHByb2Nlc3Npbmcgc2VxdWVu Y2UNCj4gPiArICAgIGlmICgobUxpYkF0UnVudGltZUZ1bmN0aW9uICE9IE5VTEwpICYmIG1MaWJB dFJ1bnRpbWVGdW5jdGlvbiAoKSAmJg0KPiA+ICsgICAgICAgIChtUnVudGltZUZtcFByb3RvY29s QXJyYXkgIT0gTlVMTCkpIHsNCj4gPiArICAgICAgbVJ1bnRpbWVGbXAgPSBOVUxMOw0KPiA+ICsg ICAgICBJbmRleDIgPSAwOw0KPiA+ICsgICAgICB3aGlsZSAobVJ1bnRpbWVGbXBQcm90b2NvbEFy cmF5W0luZGV4Ml0gIT0gTlVMTCkgew0KPiA+ICsgICAgICAgIGlmIChDb21wYXJlR3VpZCAoJklt YWdlSGVhZGVyLT5VcGRhdGVJbWFnZVR5cGVJZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICZtUnVudGltZUZtcEd1aWRBcnJheVtJbmRleDJdKSkgew0KPiA+ICsgICAgICAgICAgbVJ1 bnRpbWVGbXAgPSAoRUZJX0ZJUk1XQVJFX01BTkFHRU1FTlRfUFJPVE9DT0wNCj4gPiAqKQ0KPiA+ ICsgICAgICAgICAgICBtUnVudGltZUZtcFByb3RvY29sQXJyYXlbSW5kZXgyXTsNCj4gPiArICAg ICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgICBJbmRleDIrKzsNCj4g PiArICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgU3RhdHVzID0gU2V0Rm1wSW1hZ2VEYXRhIChO VUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlSGVhZGVyLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IC0NCj4gPiBGbXBDYXBz dWxlSGVhZGVyLT5FbWJlZGRlZERyaXZlckNvdW50KTsNCj4gPiArICAgICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgICAgIH0N Cj4gPiArICAgICAgY29udGludWU7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICAgICAgU3RhdHVz ID0gR2V0Rm1wSGFuZGxlQnVmZmVyQnlUeXBlICgNCj4gPiAgICAgICAgICAgICAgICAgJkltYWdl SGVhZGVyLT5VcGRhdGVJbWFnZVR5cGVJZCwNCj4gPiAgICAgICAgICAgICAgICAgVXBkYXRlSGFy ZHdhcmVJbnN0YW5jZSwgZGlmZiAtLWdpdA0KPiA+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhl Q2Fwc3VsZUxpYkZtcC9EeGVDYXBzdWxlUnVudGltZS5jDQo+ID4gYi9NZGVNb2R1bGVQa2cvTGli cmFyeS9EeGVDYXBzdWxlTGliRm1wL0R4ZUNhcHN1bGVSdW50aW1lLmMNCj4gPiBpbmRleCBmOTQw NDRhNDA5Li42ZmViNmRhYjc5IDEwMDY0NA0KPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5 L0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fwc3VsZVJ1bnRpbWUuYw0KPiA+ICsrKyBiL01kZU1vZHVs ZVBrZy9MaWJyYXJ5L0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fwc3VsZVJ1bnRpbWUuYw0KPiA+IEBA IC0xLDYgKzEsNyBAQA0KPiA+ICAvKiogQGZpbGUNCj4gPiAgICBDYXBzdWxlIGxpYnJhcnkgcnVu dGltZSBzdXBwb3J0Lg0KPiA+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIxLCBOVklESUEgQ09S UE9SQVRJT04uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAgIENvcHlyaWdodCAoYykg MjAxNiAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gPiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ DQo+ID4gQEAgLTE5LDcgKzIwLDExIEBADQo+ID4gICNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290 U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICAjaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGltZVNl cnZpY2VzVGFibGVMaWIuaD4NCj4gPiAgI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlv bkxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGltZUxpYi5oPg0KPiA+DQo+ ID4gK2V4dGVybiBCT09MRUFOICAgICAgICAgICAgICAgICAgIChFRklBUEkgKm1MaWJBdFJ1bnRp bWVGdW5jdGlvbikNCj4gPiAoVk9JRCk7DQo+ID4gK2V4dGVybiBWT0lEICAgICAgICAgICAgICAg ICAgICAgICoqbVJ1bnRpbWVGbXBQcm90b2NvbEFycmF5Ow0KPiA+ICtleHRlcm4gRUZJX0dVSUQg ICAgICAgICAgICAgICAgICAqbVJ1bnRpbWVGbXBHdWlkQXJyYXk7DQo+ID4gIGV4dGVybiBFRklf U1lTVEVNX1JFU09VUkNFX1RBQkxFICptRXNydFRhYmxlOw0KPiA+ICBleHRlcm4gQk9PTEVBTiAg ICAgICAgICAgICAgICAgICBtSXNWaXJ0dWFsQWRkckNvbnZlcnRlZDsNCj4gPiAgRUZJX0VWRU5U DQo+ID4gbUR4ZVJ1bnRpbWVDYXBzdWxlTGliVmlydHVhbEFkZHJlc3NDaGFuZ2VFdmVudCAgPSBO VUxMOyBAQCAtNDAsOQ0KPiA+ICs0NSwxMjEgQEAgRHhlQ2Fwc3VsZUxpYlZpcnR1YWxBZGRyZXNz Q2hhbmdlRXZlbnQgKA0KPiA+ICAgICkNCj4gPiAgew0KPiA+ICAgIGdSVC0+Q29udmVydFBvaW50 ZXIgKEVGSV9PUFRJT05BTF9QVFIsIChWT0lEICoqKSZtRXNydFRhYmxlKTsNCj4gPiArDQo+ID4g KyAgaWYgKG1SdW50aW1lRm1wUHJvdG9jb2xBcnJheSAhPSBOVUxMKSB7DQo+ID4gKyAgICBWT0lE ICoqRm1wQXJyYXlFbnRyeTsNCj4gPiArDQo+ID4gKyAgICBGbXBBcnJheUVudHJ5ID0gbVJ1bnRp bWVGbXBQcm90b2NvbEFycmF5Ow0KPiA+ICsgICAgd2hpbGUgKCpGbXBBcnJheUVudHJ5ICE9IE5V TEwpIHsNCj4gPiArICAgICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopIEZtcEFy cmF5RW50cnkpOw0KPiA+ICsgICAgICBGbXBBcnJheUVudHJ5Kys7DQo+ID4gKyAgICB9DQo+ID4g KyAgICBFZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCAqKikgJm1SdW50aW1lRm1wUHJvdG9j b2xBcnJheSk7ICB9DQo+ID4gKyBpZiAobVJ1bnRpbWVGbXBHdWlkQXJyYXkgIT0gTlVMTCkgew0K PiA+ICsgICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopICZtUnVudGltZUZtcEd1 aWRBcnJheSk7ICB9ICBpZg0KPiA+ICsgKG1MaWJBdFJ1bnRpbWVGdW5jdGlvbiAhPSBOVUxMICkg ew0KPiA+ICsgICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopICZtTGliQXRSdW50 aW1lRnVuY3Rpb24pOyAgfQ0KPiA+ICsNCj4gPiAgICBtSXNWaXJ0dWFsQWRkckNvbnZlcnRlZCA9 IFRSVUU7DQo+ID4gIH0NCj4gPg0KPiA+ICsvKioNCj4gPiArICBJbml0aWFsaXplIG9wdGlvbmFs IHJ1bnRpbWUgRk1QIGFycmF5cyB0byBzdXBwb3J0IEZNUCBTZXRJbWFnZQ0KPiA+IHByb2Nlc3Np bmcNCj4gPiArICBhZnRlciBFeGl0Qm9vdFNlcnZpY2VzKCkgaXMgY2FsbGVkLg0KPiA+ICsNCj4g PiArICBUaGUgSW1hZ2VUeXBlSWRHdWlkcyBvZiBydW50aW1lLWNhcGFibGUgRk1QIHByb3RvY29s IGRyaXZlcnMgYXJlDQo+ID4gZXh0cmFjdGVkDQo+ID4gKyAgZnJvbSB0aGUgUGNkUnVudGltZUZt cENhcHN1bGVJbWFnZVR5cGVJZEd1aWQgbGlzdCBhbmQgdGhlaXINCj4gPiArIHByb3RvY29sICBz dHJ1Y3R1cmUgcG9pbnRlcnMgYXJlIHNhdmVkIGluIHRoZQ0KPiA+ICsgbVJ1bnRpbWVGbXBQcm90 b2NvbEFycmF5IGZvciB1c2UNCj4gPiBkdXJpbmcNCj4gPiArICBVcGRhdGVDYXBzdWxlKCkgcHJv Y2Vzc2luZy4gVXBkYXRlSGFyZHdhcmVJbnN0YW5jZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtJbml0 aWFsaXplUnVudGltZUZtcEFycmF5cyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIEVGSV9HVUlEICAgICAgKkd1aWQ7DQo+ID4gKyAgVUlOVE4gICAgICAgICBOdW1IYW5k bGVzOw0KPiA+ICsgIEVGSV9IQU5ETEUgICAgKkhhbmRsZUJ1ZmZlcjsNCj4gPiArICBFRklfU1RB VFVTICAgIFN0YXR1czsNCj4gPiArICBVSU5UTiAgICAgICAgIENvdW50Ow0KPiA+ICsgIFVJTlRO ICAgICAgICAgSW5kZXg7DQo+ID4gKyAgVUlOVE4gICAgICAgICBGbXBBcnJheUluZGV4Ow0KPiA+ ICsNCj4gPiArICBFRklfU1RBVFVTDQo+ID4gKyAgICBHZXRGbXBIYW5kbGVCdWZmZXJCeVR5cGUg KA0KPiA+ICsgICAgICBJTiAgICAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAqVXBkYXRl SW1hZ2VUeXBlSWQsDQo+ID4gKyAgICAgIElOICAgICBVSU5UNjQNCj4gPiBVcGRhdGVIYXJkd2Fy ZUluc3RhbmNlLA0KPiA+ICsgICAgICBPVVQgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAqTm9IYW5kbGVzLA0KPiA+IE9QVElPTkFMDQo+ID4gKyAgICAgIE9VVCAgICBFRklfSEFORExF ICAgICAgICAgICAgICAgICAgICoqSGFuZGxlQnVmLA0KPiA+IE9QVElPTkFMDQo+ID4gKyAgICAg IE9VVCAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICoqUmVzZXRSZXF1aXJlZEJ1Zg0K PiA+IE9QVElPTkFMDQo+ID4gKyAgICAgICk7DQo+ID4gKw0KPiA+ICsgIENvdW50ID0gUGNkR2V0 U2l6ZSAoUGNkUnVudGltZUZtcENhcHN1bGVJbWFnZVR5cGVJZEd1aWQpIC8gc2l6ZW9mDQo+ID4g KEdVSUQpOw0KPiA+ICsgIGlmIChDb3VudCA9PSAwKSB7DQo+ID4gKyAgICByZXR1cm47DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICAvLyBtUnVudGltZUZtcFByb3RvY29sQXJyYXkgaXMgYSBOVUxM LXRlcm1pbmF0ZWQgbGlzdCBvZiBGTVANCj4gPiArIHByb3RvY29sDQo+ID4gcG9pbnRlcnMNCj4g PiArICBtUnVudGltZUZtcFByb3RvY29sQXJyYXkgPSAoVk9JRCAqKikNCj4gPiArICAgIEFsbG9j YXRlUnVudGltZVplcm9Qb29sICgoQ291bnQgKyAxKSAqIHNpemVvZiAoVk9JRCAqKSk7ICBpZg0K PiA+ICsgKG1SdW50aW1lRm1wUHJvdG9jb2xBcnJheSA9PSBOVUxMKSB7DQo+ID4gKyAgICBERUJV RyAoKERFQlVHX0VSUk9SLCAiRXJyb3IgYWxsb2NhdGluZw0KPiA+IG1SdW50aW1lRm1wUHJvdG9j b2xBcnJheVxuIikpOw0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArICBtUnVudGlt ZUZtcEd1aWRBcnJheSA9IChFRklfR1VJRCAqKQ0KPiA+ICsgICAgQWxsb2NhdGVSdW50aW1lWmVy b1Bvb2wgKENvdW50ICogc2l6ZW9mIChFRklfR1VJRCkpOyAgaWYNCj4gPiArIChtUnVudGltZUZt cEd1aWRBcnJheSA9PSBOVUxMKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRXJy b3IgYWxsb2NhdGluZyBtUnVudGltZUZtcEd1aWRBcnJheSIpKTsNCj4gPiArICAgIEZyZWVQb29s IChtUnVudGltZUZtcFByb3RvY29sQXJyYXkpOw0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgLy8gRm9yIGVhY2ggcnVudGltZSBJbWFnZVR5cGVJZEd1aWQgaW4gdGhl IFBDRCwgc2F2ZSBpdHMgR1VJRCBhbmQNCj4gPiArIEZNUA0KPiA+IHByb3RvY29sDQo+ID4gKyAg Rm1wQXJyYXlJbmRleCA9IDA7DQo+ID4gKyAgR3VpZCAgPSBQY2RHZXRQdHIgKFBjZFJ1bnRpbWVG bXBDYXBzdWxlSW1hZ2VUeXBlSWRHdWlkKTsNCj4gPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg PCBDb3VudDsgSW5kZXgrKywgR3VpZCsrKSB7DQo+ID4gKyAgICBtUnVudGltZUZtcEd1aWRBcnJh eVtGbXBBcnJheUluZGV4XSA9ICpHdWlkOw0KPiA+ICsgICAgSGFuZGxlQnVmZmVyID0gTlVMTDsN Cj4gPiArICAgIFN0YXR1cyA9IEdldEZtcEhhbmRsZUJ1ZmZlckJ5VHlwZSAoR3VpZCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk51bUhhbmRsZXMsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZIYW5kbGVCdWZmZXIsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiA+ICsgICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLA0KPiA+ ICsgICAgICAgICAgICAgICJFcnJvciBmaW5kaW5nIEZNUCBoYW5kbGUgZm9yIHJ1bnRpbWUNCj4g PiBJbWFnZVR5cGVJZEd1aWQ9JWc6ICVyXG4iLA0KPiA+ICsgICAgICAgICAgICAgIEd1aWQsIFN0 YXR1cykpOw0KPiA+ICsgICAgICBjb250aW51ZTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAg ICBpZiAoTnVtSGFuZGxlcyA+IDEpIHsNCj4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwN Cj4gPiArICAgICAgICAgICAgICAiRk1QIHJ1bnRpbWUgSW1hZ2VUeXBlSWRHdWlkPSVnIHJldHVy bmVkICV1IGhhbmRsZXMsDQo+ID4gb25seSAxIHN1cHBvcnRlZFxuIiwNCj4gPiArICAgICAgICAg ICAgICBHdWlkLCBOdW1IYW5kbGVzKSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBTdGF0dXMgPSBn QlMtPkhhbmRsZVByb3RvY29sIChIYW5kbGVCdWZmZXJbMF0sDQo+ID4gKw0KPiA+ICZnRWZpRmly bXdhcmVNYW5hZ2VtZW50UHJvdG9jb2xHdWlkLA0KPiA+ICsNCj4gPiAmbVJ1bnRpbWVGbXBQcm90 b2NvbEFycmF5W0ZtcEFycmF5SW5kZXhdKTsNCj4gPiArICAgIEZyZWVQb29sIChIYW5kbGVCdWZm ZXIpOw0KPiA+ICsgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ID4gKyAgICAgIERFQlVH ICgoREVCVUdfRVJST1IsDQo+ID4gKyAgICAgICAgICAgICAgIkVycm9yIGdldHRpbmcgRk1QIHBy b3RvY29sIGZvciBydW50aW1lDQo+ID4gSW1hZ2VUeXBlSWRHdWlkPSVnOiAlclxuIiwNCj4gPiAr ICAgICAgICAgICAgICBHdWlkLCBTdGF0dXMpKTsNCj4gPiArICAgICAgY29udGludWU7DQo+ID4g KyAgICB9DQo+ID4gKw0KPiA+ICsgICAgRm1wQXJyYXlJbmRleCsrOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgbUxpYkF0UnVudGltZUZ1bmN0aW9uID0gRWZpQXRSdW50aW1lOyB9DQo+ID4gKw0K PiA+ICAvKioNCj4gPiAgICBOb3RpZnkgZnVuY3Rpb24gZm9yIGV2ZW50IGdyb3VwIEVGSV9FVkVO VF9HUk9VUF9SRUFEWV9UT19CT09ULg0KPiA+DQo+ID4gQEAgLTkzLDYgKzIxMCw4IEBAIER4ZUNh cHN1bGVMaWJSZWFkeVRvQm9vdEV2ZW50Tm90aWZ5ICgNCj4gPiAgICAgIC8vDQo+ID4gICAgICBt RXNydFRhYmxlLT5Gd1Jlc291cmNlQ291bnRNYXggPSBtRXNydFRhYmxlLT5Gd1Jlc291cmNlQ291 bnQ7DQo+ID4gICAgfQ0KPiA+ICsNCj4gPiArICBJbml0aWFsaXplUnVudGltZUZtcEFycmF5cyAo KTsNCj4gPiAgfQ0KPiA+DQo+ID4gIC8qKg0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL01kZU1vZHVs ZVBrZy9MaWJyYXJ5L0R4ZUNhcHN1bGVMaWJGbXAvRHhlUnVudGltZUNhcHN1bGVMaWIuaW5mDQo+ ID4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVDYXBzdWxlTGliRm1wL0R4ZVJ1bnRpbWVDYXBz dWxlTGliLmluZg0KPiA+IGluZGV4IGJmNTZmNDYyM2YuLjdiM2Y1ZTA0ZjggMTAwNjQ0DQo+ID4g LS0tDQo+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ2Fwc3VsZUxpYkZtcC9EeGVSdW50aW1l Q2Fwc3VsZUxpYi5pbmYNCj4gPiArKysNCj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVDYXBz dWxlTGliRm1wL0R4ZVJ1bnRpbWVDYXBzdWxlTGliLmluZg0KPiA+IEBAIC00OSw2ICs0OSw3IEBA DQo+ID4gICAgUHJpbnRMaWINCj4gPiAgICBIb2JMaWINCj4gPiAgICBCbXBTdXBwb3J0TGliDQo+ ID4gKyAgUGNkTGliDQo+ID4NCj4gPg0KPiA+ICBbUHJvdG9jb2xzXQ0KPiA+IEBAIC03MCw1ICs3 MSw4IEBADQo+ID4gICAgZ0VmaUV2ZW50VmlydHVhbEFkZHJlc3NDaGFuZ2VHdWlkICAgICAgICMj IENPTlNVTUVTICMjIEV2ZW50DQo+ID4gICAgZ0Vka2lpQ2Fwc3VsZU9uRGlza05hbWVHdWlkICAg ICAgICAgICAgICMjDQo+ID4gU09NRVRJTUVTX0NPTlNVTUVTICMjIEdVSUQNCj4gPg0KPiA+ICtb UGNkXQ0KPiA+ICsNCj4gPg0KPiBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkUnVu dGltZUZtcENhcHN1bGVJbWFnZVR5cGVJZEcNCj4gdWkNCj4gPiBkDQo+ID4gKw0KPiA+ICBbRGVw ZXhdDQo+ID4gICAgZ0VmaVZhcmlhYmxlV3JpdGVBcmNoUHJvdG9jb2xHdWlkDQo+ID4gZGlmZiAt LWdpdCBhL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gYi9NZGVNb2R1bGVQa2cv TWRlTW9kdWxlUGtnLmRlYyBpbmRleCAxMzNlMDRlZTg2Li44NjlhYTg5MmY3DQo+IDEwMDY0NA0K PiA+IC0tLSBhL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gKysrIGIvTWRlTW9k dWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiBAQCAtMyw3ICszLDcgQEANCj4gPiAgIyBJdCBh bHNvIHByb3ZpZGVzIHRoZSBkZWZpbml0aW9ucyhpbmNsdWRpbmcgUFBJcy9QUk9UT0NPTHMvR1VJ RHMgYW5kDQo+ID4gbGlicmFyeSBjbGFzc2VzKSAgIyBhbmQgbGlicmFyaWVzIGluc3RhbmNlcywg d2hpY2ggYXJlIHVzZWQgZm9yIHRob3NlDQo+ID4gbW9kdWxlcy4NCj4gPiAgIw0KPiA+IC0jIENv cHlyaWdodCAoYykgMjAxOSwgTlZJRElBIENPUlBPUkFUSU9OLiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KPiA+ICsjIENvcHlyaWdodCAoYykgMjAxOS0yMDIxLCBOVklESUEgQ09SUE9SQVRJT04uIEFs bCByaWdodHMNCj4gPiArcmVzZXJ2ZWQuPEJSPg0KPiA+ICAjIENvcHlyaWdodCAoYykgMjAwNyAt IDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gcmVzZXJ2ZWQuPEJSPiAg IyBDb3B5cmlnaHQgKGMpIDIwMTYsIExpbmFybyBMdGQuIEFsbCByaWdodHMNCj4gPiByZXNlcnZl ZC48QlI+ICAjIChDKSBDb3B5cmlnaHQgMjAxNiAtIDIwMTkgSGV3bGV0dCBQYWNrYXJkIEVudGVy cHJpc2UNCj4gPiBEZXZlbG9wbWVudCBMUDxCUj4gQEAgLTIwMjAsNiArMjAyMCwxMSBAQA0KPiA+ ICAgICMgQFByb21wdCBDYXBzdWxlIE9uIERpc2sgVGVtcCBSZWxvY2F0aW9uIGZpbGUgbmFtZSBp biBQRUkgcGhhc2UNCj4gPg0KPiA+DQo+IGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5Q Y2RDb0RSZWxvY2F0aW9uRmlsZU5hbWV8TCJDb2QudG1wDQo+ICJ8DQo+ID4gVk9JRCp8MHgzMDAw MTA0OA0KPiA+DQo+ID4gKyAgIyMgVGhpcyBQQ0QgaG9sZHMgYSBsaXN0IG9mIEdVSURzIGZvciB0 aGUgSW1hZ2VUeXBlSWQgdG8gaW5kaWNhdGUNCj4gPiArIHRoZSAgIyAgRk1QIGlzIHJ1bnRpbWUg Y2FwYWJsZS4NCj4gPiArICAjIEBQcm9tcHQgQSBsaXN0IG9mIHJ1bnRpbWUtY2FwYWJsZSBGTVAg SW1hZ2VUeXBlSWQgR1VJRHMNCj4gPiArDQo+ID4NCj4gZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3Bh Y2VHdWlkLlBjZFJ1bnRpbWVGbXBDYXBzdWxlSW1hZ2VUeXBlSWRHDQo+IHVpDQo+ID4gZHx7MHgw fXxWT0lEKnwweDMwMDAxMDQ5DQo+ID4gKw0KPiA+ICAgICMjIFRoaXMgUENEIGhvbGQgYSBsaXN0 IEdVSURzIGZvciB0aGUgSW1hZ2VUeXBlSWQgdG8gaW5kaWNhdGUgdGhlDQo+ID4gICAgIyAgRk1Q IGNhcHN1bGUgaXMgYSBzeXN0ZW0gRk1QLg0KPiA+ICAgICMgQFByb21wdCBBIGxpc3Qgb2Ygc3lz dGVtIEZNUCBJbWFnZVR5cGVJZCBHVUlEcw0KPiA+IC0tDQo+ID4gMi4xNy4xDQo+ID4NCj4gPg0K PiA+DQo+ID4gDQo+ID4NCj4gDQo+IA0KDQo=