From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E693645B12; Fri, 11 Oct 2024 10:23:42 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8A6064028B; Fri, 11 Oct 2024 10:23:42 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2081.outbound.protection.outlook.com [40.107.237.81]) by mails.dpdk.org (Postfix) with ESMTP id B2362400D5 for ; Fri, 11 Oct 2024 10:23:40 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tHYcc7VZSHlM+qpPp6G3cn1KD6Erc63RdqA/1xlQvm7IMiT417rZRpbTRQpQXne1hsZpzPkah9Qfj9rg063Ytn1EFkpE01y2Kvl7xv1B7/9oJ1+g+0GEzUjCG6g/sknZnSGhdOUFAxCNyqDriX4PjcwYS3hV57+u8loLExNowF9C0IAX8dpGXcI5f+J0hdh9VVVa3UqQdD3Q6GJZVExTFO5LVy7p1anPmwAisB2O8RjFGDpraNNGTYXK7zKzqQLB748F8XG8XIMfr3TaIgRxRPPoE+Z5LzIOV+tenMSZyfAtU3VvA0lwdOn+nLHbzTMwdESWRTnOs1EkJOCeqmVaJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=5l2YYlbXhnOj3Lbcb4LmcpSCu0F8UBxZt6Y8RjmViPw=; b=BBJB6298dX1NJSDM2HizVBmRPW9X8/9w24CmHFtLv+9TFOgfmOYmEGgFkjH5pJMoeBDd2zff9hpMQq4l043j6TT/WWzdQi+Z9Ijvzmj3qeNKKWlialq4/cA14GUWt6Pso1ScsDgmqbhEgyE+lTv7NRKcDxoeibrY9DuMMiss7edF2lelAzqH0NUDC4gTkV8dg/hea6RkdmkGwHV+0uKFH/dCFxQbev+BE5r/+TFELFJ56pXMYqU4Iz5zNP0MgstXMmahRTt7PLwDGOkJNmSE8Hv9JAM80DjRR6KXICa9BZvTlPJAYsB5P/3PD8vLTU5YimPU8P5QjHtycms0g754/g== 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=5l2YYlbXhnOj3Lbcb4LmcpSCu0F8UBxZt6Y8RjmViPw=; b=ksAypsgw9twrJ+pa0vVIcQjJCkjKGueNp4e/c6X9HzmWa2vkiyebdNmDamkcDqMSSxlJ8b7CL5qlATGsH2tcw3xMs/D38AMRnFY9wzNn+CraRG+URGuNJOgpm8Rp9SUBiOgzq4JymmnhyfhJeNqs3cf3zD7OS69r7zsy6NJ6E+8v6b2PH9r/4J+erjUgi5ByCHZlPTm9FJsDP4aYMP7OWBeqz1muNyhCGRk8pjmxHJUsNtTHE7nZ/36xoMhml/RIMMoqGrpiCdE/8h3/MBFcwGEaoRj/lTDp8P71w5cCNX9VYdlMcbCtC4YiJhPP4+xJNSZ/0Vhv976pSm7xHYdTbQ== Received: from CH3PR12MB8460.namprd12.prod.outlook.com (2603:10b6:610:156::15) by PH8PR12MB6676.namprd12.prod.outlook.com (2603:10b6:510:1c3::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Fri, 11 Oct 2024 08:23:37 +0000 Received: from CH3PR12MB8460.namprd12.prod.outlook.com ([fe80::2e9d:7265:3b84:59b5]) by CH3PR12MB8460.namprd12.prod.outlook.com ([fe80::2e9d:7265:3b84:59b5%7]) with mapi id 15.20.8048.017; Fri, 11 Oct 2024 08:23:37 +0000 From: Dariusz Sosnowski To: Ferruh Yigit , Konstantin Ananyev , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Andrew Rybchenko CC: "dev@dpdk.org" , Bruce Richardson Subject: RE: [RFC 0/4] ethdev: rework config restore Thread-Topic: [RFC 0/4] ethdev: rework config restore Thread-Index: AQHbCaxc8KDvUepY/Eal2yE/l4xqAbJve/yAgAeO5XCABBf3gIAA4jcAgAE0v4CAAIIbgIAA+96QgAB3gQCAALueAIAAKAqAgAAx4iCAABXggIAAYcIAgAAR7oCAAIDV4A== Date: Fri, 11 Oct 2024 08:23:36 +0000 Message-ID: References: <20240918092201.33772-1-dsosnowski@nvidia.com> <13747524-f073-4749-adbd-be1c7681dbcd@amd.com> <3833d9270fba43af9d17765056911940@huawei.com> <8a6f760c-8bc7-46cd-92e0-a8af66114e2d@amd.com> <5ef19db7-f6fe-4a48-8497-e17b33a262b5@amd.com> <6e2487af-5bf5-4a07-bc9d-2e6f1a1def19@amd.com> <0d526176545845c49d67a30855202f2f@huawei.com> <24aa0035-79af-4f15-8dd8-fb8cd625e4e6@amd.com> In-Reply-To: <24aa0035-79af-4f15-8dd8-fb8cd625e4e6@amd.com> Accept-Language: en-US Content-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: CH3PR12MB8460:EE_|PH8PR12MB6676:EE_ x-ms-office365-filtering-correlation-id: 94f2765b-0dd4-4314-d0e8-08dce9ce010d x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?Mzd0WGdKdG5RMGphVExvRHArT005d0xpbXBNQy81UTgvcWtnM0dtN0trSWxZ?= =?utf-8?B?RHVNK2NpUndVeEdmWHdnWkJycHhCbjVscm9PMDB3OG9yY2JsN29EK3ZLa0Vw?= =?utf-8?B?UUJxOEkwdzdtYVFMRkdCRDRMbEUvVEVkUGwwMUdYTzVjMk1TL1d4WHZQK2Fu?= =?utf-8?B?Z1Q4cmxNVk1MdmhzNjZVUWNGVTRpK2xCQUwwTHZHNCs2RWVwRnluUFArSHdN?= =?utf-8?B?SnpXK2x6U0V3eGlhbmRQamkrRU1xSm1JellFM2NOdzkwRU9JT3BjR3VIZTdh?= =?utf-8?B?LzQ1N09UQjR0M2RQMmhqN2M0ODlWRi9IUHFyUTZpeDhYSGtnQlR3dG40dElL?= =?utf-8?B?NWNua1UyTFBHZVlhSVdnK2g0MkVSbk1DcFFKNXZONWFScnpTQmhGcTVzWjNu?= =?utf-8?B?RE5RUjd6ZCtNWUpueDRiNE4wV3JYVEVJSTg3TXkrVVFUTnNwSFhYeHF5K2Zw?= =?utf-8?B?NS83NSswVU0yWlE1U25CeHBWNndEMnRWTUcyZ1p1eWo5elY5MGI0dFo2ZWR1?= =?utf-8?B?VkVUaGpTS0d5ZTluZFFmZmJwWC9MbnF2bjlPN2lTd2VqZm8veXZZVmZUVmxT?= =?utf-8?B?YWF6VUQrM3lLRlkvT2xObklCOXJDNWx2QXdqK0xLWTlnV1hFZ29Gdlp1Q1N0?= =?utf-8?B?dUtwL3ArWnV3eE9qenpTK0s5Q01kQk9DdEJuZGRzZFVaMmdLam1LbTE2RXZ2?= =?utf-8?B?UmJuTWNFMFBwT3p6cURRZzF2cnI1YVRpd21aQzB4YkFkNUhSc2lNUlVGUHhC?= =?utf-8?B?WmNvd05hS2U1NHdINmN5QVNwTHVwalBxcGRaajBVdGdYTXhSQkZCcHRvOEI2?= =?utf-8?B?LzNqL0gzU0pHck9yYTZNVkkrL3V6SEhBVy80U285TU03Qmk4NEpBYjNoUDJ2?= =?utf-8?B?Ly9nbTgzWnUxemZYWHhLK1pqS2Mwd1JGSk1WYmZKYTJORnZmemJlR1ZSaTNS?= =?utf-8?B?TkQrV2phSkltRW1LWi84aHNMWmFVVlpDTCtxOXZ2RUNMdEcxbUhKOXJUaWRs?= =?utf-8?B?Nms2ZU1QQmpJdTBjbEkvQlVIWU1YSUR1QmVGNFJYemtORlByMG15VTJSdGR3?= =?utf-8?B?dkU2NWZpWnJGWjc5MzAwZzdTNmdaWFdFSzlFM1R6cnNySXdBWjBqQlh1MGEz?= =?utf-8?B?amVkMFF2clV2YXh6QVRuNXFoTUswMDJQVVpZMHNnNFVxcFNIYnBveHdqM3pK?= =?utf-8?B?Nnc0OEtUUk1GYjRSREhONUlRTjZwUVF5ZEVYQkJ6OXU4NjJFQnc3d2h6aHlE?= =?utf-8?B?MENSU1hBc2tjQUZVTk1nOWUxaWxOVngzVjVnUURFM3F3TlZ0Y2dWOVM5Y3hJ?= =?utf-8?B?UjZ2N1hadDJXbXQyWHZtRnlsMkd4dDU3cmhvOHRXSk5IZmRCNVVJK1JXLzlE?= =?utf-8?B?MVFJZy90WERIWHJpQ3NhTmYyWGQwWE5nQ2UrMEZxSzRJNmNPb1VKUUpRYlUv?= =?utf-8?B?YVB1OER3Yml5KzBIaURHdU5JNmxNRlZJR3dKVDlWYlRNWjhtRkZCV2hQNWoy?= =?utf-8?B?N2MvWXlveGc4dFlVYVNxL0NnWnZyQVpuVVptME5pTElIdHRwZVRkOWJHRUND?= =?utf-8?B?RjdUTGFwVnhVa1pLY3M5MTBqMHFQV1RQS0Rlb2kyMGYzUlhOYkMwU2tVNGc3?= =?utf-8?B?c1FQTW5MemxPSEpJc3hPQmRGVjZnWjA3eEVtSThyZlNIUGFjNkdEOEMycS92?= =?utf-8?B?L1p3WkJQTlNkZ3hvTFpRNXdzaEE2TWlWTHl6V21aclFiMDZPSVdsT2lJK1pB?= =?utf-8?B?S0YyS1hhTnNNZHMzbzNwMU45elBXMHVjUHRudys1NklZWVZGWUllTWZGTTcv?= =?utf-8?B?aFhtbXhVbTlMVnYrYk1GZz09?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH3PR12MB8460.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cEN2Y2h6M1RnaFdJVmlwNkFQNGFwZ1lDb0FuaG4xYkMvYUh3VzNONEtzVjBL?= =?utf-8?B?UVpEMjM5RWZvM2xJNjN2QW5jdzlVSFZwMkhLdVUwMG5wYmEvbGNnVmdlSUFJ?= =?utf-8?B?aDJJWmV3R1RPTlhjdUdvTzZaOGhodTVicTdKNXl5UjZmWUplcFBYOHpJZGpv?= =?utf-8?B?bnlULzFUQk5MOFdaWmYveVZjbTlqN290dnVkYzBVOEd0YmFlb2k5bWRwTnhK?= =?utf-8?B?UXdiMkFMMmFIOG56Z29vYlFwMi9QMnFLcE4yRERMd2pBSGlzQysrc3BBa3Vy?= =?utf-8?B?VVJVZmQ1NzJJTHUrNUUzSlNrMm80NHA2a2V0djl5UUJ4dzFqNEV6aG5hOWcy?= =?utf-8?B?em92Vm5WbTZPRXNuYjVPVUorZTg3cHMrZ2o5SWJHci91WUdRbkM2ZUwxRzc5?= =?utf-8?B?NVZNOE1XVUxTd1NZZ2xaN1hjb05LMENJallWZE9OUVZUR1l0YVhxT0VGck1r?= =?utf-8?B?SndRcWJuR0VDd2hyZ1k0Y1kxVFhKV1Z5NWtRM3VkNHZ4TWx5UlErUmdFcDRM?= =?utf-8?B?aDBYT1hRMmx4MW11ZFRFWHhTWC9JMnIrejJkRHBPSStTR3RDaFhTS3hYMk0w?= =?utf-8?B?N21lVm8yaGpCNkpKcVl1dTV0MU56aml2RDAxNVFyNG52eTV4NlJzZUZjbWFn?= =?utf-8?B?bW9sc3pBVXhoOUVyQnVrRWZ4U0RVeVBMV01zOURyRloxNlVBZWxGMUFRWUZy?= =?utf-8?B?WWlxZFBodVV2U043aHhWY1NTRUY3ZnlwWVlZSnJaOTJKNFk5Slc5bEJEY0to?= =?utf-8?B?T0VDNmIza1ljbU9lM3loMW01c05adFByM1p4Z0VGbDRYS0xvQXBPdG1vbkQw?= =?utf-8?B?T2hSZEtDQ2swL0Vyb2I3VlM5d040TmpzMDZ4eFVXQStKMkpMQi9jdkhDVjJF?= =?utf-8?B?bnpUZUhzTkFORzh2ZlJSaktZRlZid0cwamlGQ2g3bUgrcEp4VDFhQTlnR0pi?= =?utf-8?B?ZzNoWjZQdzU0Nkc2UGs5QzdxRkkxTWNtTU5pTnoyejlYenp4MDB0SGtuSEZk?= =?utf-8?B?VkM2ellrTm1uZ1dUQVVMWjB3WURkdmx1MmFwYkV0bFN4WDJ4bHhhL2hwcTlU?= =?utf-8?B?NmlzaWZCSHk0UGk5NW1weFl3bE9taTRtT1ZjQWJTamswRnAyTWZKYXg4Q050?= =?utf-8?B?bHMyMS93RUR1TGtKMEZKeUVEakd1K3pZQjdnRnZudnY0QmNWYUZVaFFsR0lD?= =?utf-8?B?Zkp3bUY5dEo5N21uaUtzRUpvMjVnUnhFZGZiS29DUUh3NnRoWEVkRVQwSjBF?= =?utf-8?B?cGNIa1VMNFFhYzcyanhrcnd2QllKNmwxVi9YK1JuNS9DdjdsQ2N1ZkRtRDd3?= =?utf-8?B?Y1BaWWNqWGxpNlQrUFh2ako5SzQ3eVBEazByaXdMVXNhREQ0UDlNbUFpNERo?= =?utf-8?B?M1AyVU1ZU0xYZTFESHdIZFkwTnNIQ0lqSHZ5eWhhZitDb08rSmgyVW5lRGsy?= =?utf-8?B?SnZ1eVNHR3IwWUM5ME12VFFHUUhGV0RRYXJ1MmVORFdaWG56T29URDhoY3ky?= =?utf-8?B?eDRXMWJ1Z2ZoUnhYN1lsVzZHdUdkYmN2YndvZmJtenVnbzJnOS9aRTI1NlNJ?= =?utf-8?B?amhBekxjOXhReHk5SnBxNGtjWFBMdkhqS3ZHMVoxT1ZEekprSUJqK1Z2S2U0?= =?utf-8?B?L0trVStBVE5lTS9tdUNzckdLa3p1YmhBVEtBNmtaVG9VYzBSUzNCbU9vek8z?= =?utf-8?B?TG1SUTF4WFkxTTRyM3RXbUlzVkFqYUZqRElERG5TbUxpK0V3UjdwNU80cUxQ?= =?utf-8?B?UzlialdTOWtxNG92Q1ZWcUlZeDlOSVIrWmY1dzBEeU5aaHY1ZSsxVERQeDk5?= =?utf-8?B?TElnVWdsWC9rNkFJZGhXZUxKSEpuVDJ4TCtLM2tONDU3QkVGUVFJOERSdDRY?= =?utf-8?B?S0R3ZWsxck13WHVZeDlacUo4U1lLaTBrVkE4cDVDbzFUa1dZMXN5OEoyNlNS?= =?utf-8?B?M1kwR2lpREVqWDlYeER5V2Y3QlhscVJ0dk4xRXNGYUtSWGVJdHRvbXArMUlN?= =?utf-8?B?Wk90bUl0aU5ucHRwZUV2aml4eTlhdDZpbjU1aHZZY1U4YTFta2xGTnBDU0d4?= =?utf-8?B?cWVvNEEwaTRGZXR6cnBNcStDRjk3Z3c5TzdkbTVraVlyU0cvdURZT3h4VEcy?= =?utf-8?Q?AuosBvE2Aejf8+Ra0z3mwnZrF?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR12MB8460.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 94f2765b-0dd4-4314-d0e8-08dce9ce010d X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Oct 2024 08:23:36.9821 (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: GKxgm1yKfHdoxpB8QCv2+3bxE1sIhphcG0CMu6RcFufXV7SKECqE7I4cZrHEfGwrUoZ5iQtMJDg7tqNQIxd9jg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB6676 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRmVycnVoIFlpZ2l0IDxm ZXJydWgueWlnaXRAYW1kLmNvbT4NCj4gU2VudDogRnJpZGF5LCBPY3RvYmVyIDExLCAyMDI0IDAy OjAzDQo+IFRvOiBLb25zdGFudGluIEFuYW55ZXYgPGtvbnN0YW50aW4uYW5hbnlldkBodWF3ZWku Y29tPjsgRGFyaXVzeiBTb3Nub3dza2kNCj4gPGRzb3Nub3dza2lAbnZpZGlhLmNvbT47IE5CVS1D b250YWN0LVRob21hcyBNb25qYWxvbiAoRVhURVJOQUwpDQo+IDx0aG9tYXNAbW9uamFsb24ubmV0 PjsgQW5kcmV3IFJ5YmNoZW5rbyA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+IENj OiBkZXZAZHBkay5vcmc7IEJydWNlIFJpY2hhcmRzb24gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwu Y29tPg0KPiBTdWJqZWN0OiBSZTogW1JGQyAwLzRdIGV0aGRldjogcmV3b3JrIGNvbmZpZyByZXN0 b3JlDQo+IA0KPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBh dHRhY2htZW50cw0KPiANCj4gDQo+IE9uIDEwLzEwLzIwMjQgMTE6NTggUE0sIEtvbnN0YW50aW4g QW5hbnlldiB3cm90ZToNCj4gPg0KPiA+DQo+ID4gY29uZmlnIHJlc3RvcmUNCj4gPj4+Pg0KPiA+ Pj4+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5nIGxpbmtzIG9yIGF0dGFjaG1l bnRzDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IE9uIDEwLzEwLzIwMjQgMTowOCBQTSwgRGFyaXVz eiBTb3Nub3dza2kgd3JvdGU6DQo+ID4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+Pj4+Pj4gRnJvbTogRmVycnVoIFlpZ2l0IDxmZXJydWgueWlnaXRAYW1kLmNvbT4NCj4gPj4+ Pj4+IFNlbnQ6IFRodXJzZGF5LCBPY3RvYmVyIDEwLCAyMDI0IDAxOjE3DQo+ID4+Pj4+PiBUbzog RGFyaXVzeiBTb3Nub3dza2kgPGRzb3Nub3dza2lAbnZpZGlhLmNvbT47IEtvbnN0YW50aW4gQW5h bnlldg0KPiA+Pj4+Pj4gPGtvbnN0YW50aW4uYW5hbnlldkBodWF3ZWkuY29tPjsgTkJVLUNvbnRh Y3QtVGhvbWFzIE1vbmphbG9uDQo+ID4+Pj4+PiAoRVhURVJOQUwpIDx0aG9tYXNAbW9uamFsb24u bmV0PjsgQW5kcmV3IFJ5YmNoZW5rbw0KPiA+Pj4+Pj4gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRs YWJzLnJ1Pg0KPiA+Pj4+Pj4gQ2M6IGRldkBkcGRrLm9yZzsgQnJ1Y2UgUmljaGFyZHNvbiA8YnJ1 Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+ID4+Pj4+PiBTdWJqZWN0OiBSZTogW1JGQyAwLzRd IGV0aGRldjogcmV3b3JrIGNvbmZpZyByZXN0b3JlDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gRXh0ZXJu YWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gPj4+ Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gT24gMTAvOS8yMDI0IDU6MTggUE0sIERhcml1c3ogU29z bm93c2tpIHdyb3RlOg0KPiA+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ Pj4+Pj4+PiBGcm9tOiBGZXJydWggWWlnaXQgPGZlcnJ1aC55aWdpdEBhbWQuY29tPg0KPiA+Pj4+ Pj4+PiBTZW50OiBXZWRuZXNkYXksIE9jdG9iZXIgOSwgMjAyNCAwMzowOA0KPiA+Pj4+Pj4+PiBU bzogS29uc3RhbnRpbiBBbmFueWV2IDxrb25zdGFudGluLmFuYW55ZXZAaHVhd2VpLmNvbT47IERh cml1c3oNCj4gPj4+Pj4+Pj4gU29zbm93c2tpIDxkc29zbm93c2tpQG52aWRpYS5jb20+OyBOQlUt Q29udGFjdC1UaG9tYXMgTW9uamFsb24NCj4gPj4+Pj4+Pj4gKEVYVEVSTkFMKSA8dGhvbWFzQG1v bmphbG9uLm5ldD47IEFuZHJldyBSeWJjaGVua28NCj4gPj4+Pj4+Pj4gPGFuZHJldy5yeWJjaGVu a29Ab2t0ZXRsYWJzLnJ1Pg0KPiA+Pj4+Pj4+PiBDYzogZGV2QGRwZGsub3JnOyBCcnVjZSBSaWNo YXJkc29uIDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT4NCj4gPj4+Pj4+Pj4gU3ViamVjdDog UmU6IFtSRkMgMC80XSBldGhkZXY6IHJld29yayBjb25maWcgcmVzdG9yZQ0KPiA+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+PiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBh dHRhY2htZW50cw0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBPbiAxMC84LzIw MjQgNjoyMSBQTSwgS29uc3RhbnRpbiBBbmFueWV2IHdyb3RlOg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IFdlIGhhdmUgYmVlbiB3b3JraW5nIG9uIG9wdGltaXpp bmcgdGhlIGxhdGVuY3kgb2YgY2FsbHMNCj4gPj4+Pj4+Pj4+Pj4+Pj4gdG8gcnRlX2V0aF9kZXZf c3RhcnQoKSwgb24gcG9ydHMgc3Bhd25lZCBieSBtbHg1IFBNRC4NCj4gPj4+Pj4+Pj4+Pj4+Pj4g TW9zdCBvZiB0aGUgd29yayByZXF1aXJlcyBjaGFuZ2VzIGluIHRoZSBpbXBsZW1lbnRhdGlvbg0K PiA+Pj4+Pj4+Pj4+Pj4+PiBvZg0KPiA+Pj4+Pj4+Pj4+Pj4+PiAuZGV2X3N0YXJ0KCkgUE1EIGNh bGxiYWNrLCBidXQgSSBhbHNvIHdhbnRlZCB0byBzdGFydCBhDQo+ID4+Pj4+Pj4+Pj4+Pj4+IGRp c2N1c3Npb24gcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb24gcmVzdG9yZS4NCj4gPj4+Pj4+Pj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gcnRlX2V0aF9kZXZfc3RhcnQoKSBkb2VzIGEgZmV3IHRoaW5n cyBvbiB0b3Agb2YgY2FsbGluZw0KPiA+Pj4+Pj4+Pj4+Pj4+PiAuZGV2X3N0YXJ0KCkNCj4gPj4+ Pj4+Pj4gY2FsbGJhY2s6DQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IC0gQmVm b3JlIGNhbGxpbmcgaXQ6DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICAgICAtIGV0aF9kZXZfbWFjX3Jlc3Rv cmUoKSAtIGlmIGRldmljZSBzdXBwb3J0cw0KPiA+Pj4+Pj4+Pj4+Pj4+PiBSVEVfRVRIX0RFVl9O T0xJVkVfTUFDX0FERFI7DQo+ID4+Pj4+Pj4+Pj4+Pj4+IC0gQWZ0ZXIgY2FsbGluZyBpdDoNCj4g Pj4+Pj4+Pj4+Pj4+Pj4gICAgIC0gZXRoX2Rldl9tYWNfcmVzdG9yZSgpIC0gaWYgZGV2aWNlIGRv ZXMgbm90IHN1cHBvcnQNCj4gPj4+Pj4+Pj4+Pj4+PiBSVEVfRVRIX0RFVl9OT0xJVkVfTUFDX0FE RFI7DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICAgICAtIHJlc3RvcmUgcHJvbWlzY3VvdXMgY29uZmlnDQo+ ID4+Pj4+Pj4+Pj4+Pj4+ICAgICAtIHJlc3RvcmUgYWxsIG11bHRpY2FzdCBjb25maWcNCj4gPj4+ Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gZXRoX2Rldl9tYWNfcmVzdG9yZSgpIGl0ZXJh dGVzIG92ZXIgYWxsIGtub3duIE1BQw0KPiA+Pj4+Pj4+Pj4+Pj4+PiBhZGRyZXNzZXMgLSBzdG9y ZWQgaW4gcnRlX2V0aF9kZXZfZGF0YS5tYWNfYWRkcnMgYXJyYXkgLQ0KPiA+Pj4+Pj4+Pj4+Pj4+ PiBhbmQgY2FsbHMNCj4gPj4+Pj4+Pj4+Pj4+Pj4gLm1hY19hZGRyX3NldCgpIGFuZCAubWFjX2Fk ZHJfYWRkKCkgY2FsbGJhY2tzIHRvIGFwcGx5DQo+ID4+Pj4+Pj4+Pj4+Pj4+IHRoZXNlIE1BQw0K PiA+Pj4+Pj4+PiBhZGRyZXNzZXMuDQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+ IFByb21pc2N1b3VzIGNvbmZpZyByZXN0b3JlIGNoZWNrcyBpZiBwcm9taXNjdW91cyBtb2RlIGlz DQo+ID4+Pj4+Pj4+Pj4+Pj4+IGVuYWJsZWQgb3Igbm90LCBhbmQgY2FsbHMgLnByb21pc2N1b3Vz X2VuYWJsZSgpIG9yDQo+ID4+Pj4+Pj4+Pj4+Pj4+IC5wcm9taXNjdW91c19kaXNhYmxlKCkNCj4g Pj4+Pj4+Pj4gY2FsbGJhY2suDQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IEFs bCBtdWx0aWNhc3QgY29uZmlnIHJlc3RvcmUgY2hlY2tzIGlmIGFsbCBtdWx0aWNhc3QgbW9kZQ0K PiA+Pj4+Pj4+Pj4+Pj4+PiBpcyBlbmFibGVkIG9yIG5vdCwgYW5kIGNhbGxzIC5hbGxtdWx0aWNh c3RfZW5hYmxlKCkgb3INCj4gPj4+Pj4+Pj4+Pj4+Pj4gLmFsbG11bHRpY2FzdF9kaXNhYmxlKCkN Cj4gPj4+Pj4+Pj4gY2FsbGJhY2suDQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+ IENhbGxiYWNrcyBhcmUgY2FsbGVkIGRpcmVjdGx5IGluIGFsbCBvZiB0aGVzZSBjYXNlcywgdG8N Cj4gPj4+Pj4+Pj4+Pj4+Pj4gYnlwYXNzIHRoZSBjaGVja3MgZm9yIGFwcGx5aW5nIHRoZSBzYW1l IGNvbmZpZ3VyYXRpb24sDQo+ID4+Pj4+Pj4+Pj4+Pj4+IHdoaWNoIGV4aXN0IGluIHJlbGV2YW50 DQo+ID4+Pj4+Pj4+IEFQSXMuDQo+ID4+Pj4+Pj4+Pj4+Pj4+IENoZWNrcyBhcmUgYnlwYXNzZWQg dG8gZm9yY2UgZHJpdmVycyB0byByZWFwcGx5IHRoZQ0KPiBjb25maWd1cmF0aW9uLg0KPiA+Pj4+ Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBMZXQncyBjb25zaWRlciB3aGF0IGhhcHBlbnMg aW4gdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBBUEkNCj4gY2FsbHMuDQo+ID4+Pj4+Pj4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IDEuIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpIDIuIHJ0ZV9l dGhfdHhfcXVldWVfc2V0dXAoKSAzLg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBydGVfZXRoX3J4X3F1ZXVl X3NldHVwKCkgNC4gcnRlX2V0aF9wcm9taXNjdW91c19lbmFibGUoKQ0KPiA+Pj4+Pj4+Pj4+Pj4+ PiAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+cHJvbWlzY3VvdXNfZW5hYmxlKCkNCj4gPj4+Pj4+ Pj4+Pj4+Pj4gICAgIC0gU3RvcmVzIHByb21pc2N1b3VzIHN0YXRlIGluIGRldi0+ZGF0YS0+cHJv bWlzY3VvdXMgNS4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gcnRlX2V0aF9hbGxtdWx0aWNhc3RfZW5hYmxl KCkNCj4gPj4+Pj4+Pj4+Pj4+Pj4gICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPmFsbG11bHRpY2Fz dF9lbmFibGUoKQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiAgICAgLSBTdG9yZXMgYWxsbXVsdGljYXN0IHN0 YXRlIGluIGRldi0+ZGF0YS0+YWxsbXVsdGljYXN0IDYuDQo+ID4+Pj4+Pj4+Pj4+Pj4+IHJ0ZV9l dGhfZGV2X3N0YXJ0KCkNCj4gPj4+Pj4+Pj4+Pj4+Pj4gICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMt PmRldl9zdGFydCgpDQo+ID4+Pj4+Pj4+Pj4+Pj4+ICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5t YWNfYWRkcl9zZXQoKSAtIGFwcGx5IGRlZmF1bHQgTUFDDQo+IGFkZHJlc3MNCj4gPj4+Pj4+Pj4+ Pj4+Pj4gICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPnByb21pc2N1b3VzX2VuYWJsZSgpDQo+ID4+ Pj4+Pj4+Pj4+Pj4+ICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5hbGxtdWx0aWNhc3RfZW5hYmxl KCkNCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gRXZlbiB0aG91Z2ggYWxsIGNv bmZpZ3VyYXRpb24gaXMgYXZhaWxhYmxlIGluIGRldi0+ZGF0YQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiBh ZnRlciBzdGVwIDUsIGxpYnJhcnkgZm9yY2VzIHJlYXBwbHlpbmcgdGhpcyBjb25maWd1cmF0aW9u IGluIHN0ZXAgNi4NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gSW4gbWx4NSBQ TUQgY2FzZSBhbGwgcmVsZXZhbnQgY2FsbGJhY2tzIHJlcXVpcmUNCj4gPj4+Pj4+Pj4+Pj4+Pj4g Y29tbXVuaWNhdGlvbiB3aXRoIHRoZSBrZXJuZWwgZHJpdmVyLCB0byBjb25maWd1cmUgdGhlDQo+ ID4+Pj4+Pj4+Pj4+Pj4+IGRldmljZSAobWx4NSBQTUQgbXVzdCBjcmVhdGUvZGVzdHJveSBuZXcg a2VybmVsIGZsb3cNCj4gPj4+Pj4+Pj4+Pj4+Pj4gcnVsZXMgYW5kL29yIGNoYW5nZSBuZXRkZXYN Cj4gPj4+PiBjb25maWcpLg0KPiA+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBtbHg1 IFBNRCBoYW5kbGVzIGFwcGx5aW5nIGFsbCBjb25maWd1cmF0aW9uIGluDQo+ID4+Pj4+Pj4+Pj4+ Pj4+IC5kZXZfc3RhcnQoKSwgc28gdGhlIGZvbGxvd2luZyBmb3JjZWQgY2FsbGJhY2tzIGZvcmNl DQo+ID4+Pj4+Pj4+Pj4+Pj4+IGFkZGl0aW9uYWwgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBrZXJu ZWwuIFRoZQ0KPiA+Pj4+Pj4+Pj4+Pj4+IHNhbWUgY29uZmlndXJhdGlvbiBpcyBhcHBsaWVkIG11 bHRpcGxlIHRpbWVzLg0KPiA+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBBcyBhbiBv cHRpbWl6YXRpb24sIG1seDUgUE1EIGNvdWxkIGNoZWNrIGlmIGEgZ2l2ZW4NCj4gPj4+Pj4+Pj4+ Pj4+Pj4gY29uZmlndXJhdGlvbiB3YXMgYXBwbGllZCwgYnV0IHRoaXMgd291bGQgZHVwbGljYXRl IHRoZQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiBmdW5jdGlvbmFsaXR5IG9mIHRoZSBsaWJyYXJ5IChmb3Ig ZXhhbXBsZQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiBydGVfZXRoX3Byb21pc2N1b3VzX2VuYWJsZSgpIGRv ZXMgbm90IGNhbGwgdGhlIGRyaXZlciBpZg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBkZXYtPmRhdGEtPnBy b21pc2N1b3VzIGlzIHNldCkuDQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IFF1 ZXN0aW9uOiBTaW5jZSBhbGwgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXMgYXZhaWxhYmxlDQo+ID4+ Pj4+Pj4+Pj4+Pj4+IGJlZm9yZQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiAuZGV2X3N0YXJ0KCkgY2FsbGJh Y2sgaXMgY2FsbGVkLCB3aHkgZXRoZGV2IGxpYnJhcnkgZG9lcw0KPiA+Pj4+Pj4+Pj4+Pj4+PiBu b3QgZXhwZWN0IC5kZXZfc3RhcnQoKSB0bw0KPiA+Pj4+Pj4+Pj4+Pj4+IHRha2UgdGhpcyBjb25m aWd1cmF0aW9uIGludG8gYWNjb3VudD8NCj4gPj4+Pj4+Pj4+Pj4+Pj4gSW4gb3RoZXIgd29yZHMs IHdoeSBsaWJyYXJ5IGhhcyB0byByZWFwcGx5IHRoZSBjb25maWd1cmF0aW9uPw0KPiA+Pj4+Pj4+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBJIGNvdWxkIG5vdCBmaW5kIGFueSBwYXJ0aWN1bGFy IHJlYXNvbiB3aHkgY29uZmlndXJhdGlvbg0KPiA+Pj4+Pj4+Pj4+Pj4+PiByZXN0b3JlIGV4aXN0 cyBhcyBwYXJ0IG9mIHRoZSBwcm9jZXNzIChpdCB3YXMgaW4gdGhlDQo+ID4+Pj4+Pj4+Pj4+Pj4+ IGluaXRpYWwgRFBESw0KPiA+Pj4+IGNvbW1pdCkuDQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiBNeSBhc3N1bXB0aW9uIGlzIC5kZXZfc3RvcCgpIGNh dXNlIHRoZXNlIHZhbHVlcyByZXNldCBpbg0KPiA+Pj4+Pj4+Pj4+Pj4+IHNvbWUgZGV2aWNlcywg c28NCj4gPj4+Pj4+Pj4+Pj4+PiAuZGV2X3N0YXJ0KCkgcmVzdG9yZXMgdGhlbSBiYWNrLg0KPiA+ Pj4+Pj4+Pj4+Pj4+IEBCcnVjZSBvciBAS29uc3RhbnRpbiBtYXkgcmVtZW1iZXIgdGhlIGhpc3Rv cnkuDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IFllcCwgYXMgSSByZW1lbWJlciwgYXQg bGVhc3Qgc29tZSBJbnRlbCBQTURzIGNhbGxpbmcNCj4gPj4+Pj4+Pj4+Pj4gaHdfcmVzZXQoKSBh ZA0KPiA+Pj4+Pj4+Pj4+PiBkZWNfc3RvcCgpIGFuZCBldmVuIGRldl9zdGFydCgpIHRvIG1ha2Ug c3VyZSB0aGF0IEhXIGlzIGluIGENCj4gPj4+Pj4+Pj4+Pj4gY2xlYW4NCj4gPj4+Pj4+Pj4+Pj4g KGtub3duKQ0KPiA+Pj4+Pj4+PiBzdGF0ZS4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+Pj4+Pj4+IEJ1dCBJIGFncmVlIHRoaXMgaXMgZGV2aWNlIHNwZWNpZmljIGJl aGF2aW9yLCBhbmQgY2FuIGJlDQo+ID4+Pj4+Pj4+Pj4+Pj4gbWFuYWdlZCBieSB3aGF0IGRldmlj ZSByZXF1aXJlcy4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gUHJvYmFibHkgeWVzLg0K PiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IFRoZSBwYXRj aGVzIGluY2x1ZGVkIGluIHRoaXMgUkZDLCBwcm9wb3NlIGEgbWVjaGFuaXNtDQo+ID4+Pj4+Pj4+ Pj4+Pj4+IHdoaWNoIHdvdWxkIGhlbHAgd2l0aCBtYW5hZ2luZyB3aGljaCBkcml2ZXJzIHJlbHkg b24NCj4gPj4+Pj4+Pj4+Pj4+Pj4gZm9yY2VmdWwgY29uZmlndXJhdGlvbg0KPiA+Pj4+Pj4gcmVz dG9yZS4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gRHJpdmVycyBjb3VsZCBhZHZlcnRpc2UgaWYgZm9yY2Vm dWwgY29uZmlndXJhdGlvbiByZXN0b3JlDQo+ID4+Pj4+Pj4+Pj4+Pj4+IGlzIG5lZWRlZCB0aHJv dWdoIGBSVEVfRVRIX0RFVl8qX0ZPUkNFX1JFU1RPUkVgIGRldmljZQ0KPiA+Pj4+Pj4+Pj4+Pj4+ PiBmbGFnLiBJZiB0aGlzIGZsYWcgaXMgc2V0LCB0aGVuIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24N Cj4gPj4+Pj4+Pj4+Pj4+Pj4gcmVxdWlyZXMgZXRoZGV2IHRvIGZvcmNlZnVsbHkgcmVzdG9yZQ0K PiA+Pj4+Pj4+Pj4+Pj4+IGNvbmZpZ3VyYXRpb24uDQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiBPSyB0byB1c2UgZmxhZyBmb3IgaXQsIGJ1dCBub3Qg c3VyZSBhYm91dCB1c2luZyAnZGV2X2luZm8tDQo+ID5kZXZfZmxhZ3MnDQo+ID4+Pj4+Pj4+Pj4+ Pj4gKFJURV9FVEhfREVWXyopIGZvciB0aGlzLCBhcyB0aGlzIGZsYWcgaXMgc2hhcmVkIHdpdGgg dXNlcg0KPiA+Pj4+Pj4+Pj4+Pj4+IGFuZCB0aGlzIGlzIGFsbCBkcGRrIGludGVybmFsLg0KPiA+ Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4gV2hhdCBhYm91dCB0byBoYXZlIGEgZGVkaWNh dGVkIGZsYWcgZm9yIGl0PyBXZSBjYW4gaGF2ZSBhDQo+ID4+Pj4+Pj4+Pj4+Pj4gZGVkaWNhdGVk IHNldCBvZiBmbGFnIHZhbHVlcyBmb3IgcmVzdG9yZS4NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+Pj4+PiBBZ3JlZWQuIFdoYXQgZG8geW91IHRoaW5rIGFib3V0IHRoZSBmb2xsb3dpbmc/DQo+ ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IEluc3RlYWQgb2YgZXhwb3NpbmcgdGhhdCwgY2Fu IHdlIHByb2JhYmx5IG1ha2UgaXQNCj4gPj4+Pj4+Pj4+Pj4gdHJhbnNwYXJlbnQgdG8gdGhlIHVz ZXIgYW5kIHByb2JhYmx5IGV0aGRldiBsYXllciB0b28/DQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiArMSB0byBtYWtlIGl0IHRyYW5zcGFyZW50IHRvIHVzZXIsIGJ1 dCBub3Qgc3VyZSBpZiB3ZSBjYW4NCj4gPj4+Pj4+Pj4+PiArbWFrZSBpdA0KPiA+Pj4+Pj4+Pj4+ IHRyYW5zcGFyZW50IHRvIGV0aGRldiBsYXllci4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBK dXN0IHRvIGJlIGNsZWFyOg0KPiA+Pj4+Pj4+Pj4gTGV0IHNheSwgdXNpbmcgZXhhbXBsZSBmcm9t IGFib3ZlOg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+ICBydGVfZXRoX2Rldl9zdGFydCgpDQo+ ID4+Pj4+Pj4+PiAgICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPmRldl9zdGFydCgpDQo+ID4+Pj4+ Pj4+PiAgICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPm1hY19hZGRyX3NldCgpIC0gYXBwbHkgZGVm YXVsdCBNQUMgYWRkcmVzcw0KPiA+Pj4+Pj4+Pj4gICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5w cm9taXNjdW91c19lbmFibGUoKQ0KPiA+Pj4+Pj4+Pj4gICAgICAtIENhbGwgZGV2LT5kZXZfb3Bz LT5hbGxtdWx0aWNhc3RfZW5hYmxlKCkNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBXZSBwcm9i YWJseSBjYW4gaW50cm9kdWNlIGV0aGRldiBpbnRlcm5hbCBmdW5jdGlvbiAoc3RpbGwNCj4gPj4+ Pj4+Pj4+IHZpc2libGUgdG8NCj4gPj4+Pj4+Pj4+IFBNRHMpIHRoYXQgd291bGQgZG8gbGFzdCAz IHN0ZXBzOg0KPiA+Pj4+Pj4+Pj4gZXRoZGV2X3JlcGxheV91c2VyX2NvbmYoLi4uKQ0KPiA+Pj4+ Pj4+Pj4gICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5tYWNfYWRkcl9zZXQoKSAtIGFwcGx5IGRl ZmF1bHQgTUFDIGFkZHJlc3MNCj4gPj4+Pj4+Pj4+ICAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+ cHJvbWlzY3VvdXNfZW5hYmxlKCkNCj4gPj4+Pj4+Pj4+ICAgICAgLSBDYWxsIGRldi0+ZGV2X29w cy0+YWxsbXVsdGljYXN0X2VuYWJsZSgpDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gQW5kIGxl dCBQTUQgaXRzZWxmIHRvIGRlY2lkZSBkb2VzIGl0IG5lZWRzIHRvIGNhbGwgaXQgYXQgZGV2X3N0 YXJ0KCkgb3INCj4gbm90Lg0KPiA+Pj4+Pj4+Pj4gU28gaXQgd2lsbCBiZWNvbWU6DQo+ID4+Pj4+ Pj4+PiBydGVfZXRoX2Rldl9zdGFydCgpDQo+ID4+Pj4+Pj4+PiAgICAgIC0gQ2FsbCBkZXYtPmRl dl9vcHMtPmRldl9zdGFydCgpDQo+ID4+Pj4+Pj4+PiAgICAgICAtQ2FsbCBldGhkZXZfcmVwbGF5 X3VzZXJfY29uZiguKQ0KPiA+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAtIENhbGwgZGV2LT5kZXZf b3BzLT5tYWNfYWRkcl9zZXQoKSAtIGFwcGx5IGRlZmF1bHQgTUFDDQo+IGFkZHJlc3MNCj4gPj4+ Pj4+Pj4+ICAgICAgICAgICAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+cHJvbWlzY3VvdXNfZW5h YmxlKCkNCj4gPj4+Pj4+Pj4+ICAgICAgICAgICAgICAgLUNhbGwgZGV2LT5kZXZfb3BzLT5hbGxt dWx0aWNhc3RfZW5hYmxlKCkNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBGb3IgUE1EcyB0aGF0 IGRvIG5lZWQgdG8gcmVzdG9yZSB1c2VyIHByb3ZpZGVkIGNvbmZpZyBBbmQNCj4gPj4+Pj4+Pj4+ IHJ0ZV9ldGhfZGV2X3N0YXJ0KCkNCj4gPj4+Pj4+Pj4+ICAgICAgLSBDYWxsIGRldi0+ZGV2X29w cy0+ZGV2X3N0YXJ0KCkNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBGb3IgdGhvc2Ugd2hvIGRv IG5vdC4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IE9LLCBnb3QgaXQgd2hh dCB5b3UgbWVhbi4NCj4gPj4+Pj4+Pj4gUHVzaGluZyByZXN0b3JlIGZ1bmN0aW9uYWxpdHkgdG8g UE1EcyB3b3JrcywgYnV0IHRoaXMgbWF5IGJlDQo+ID4+Pj4+Pj4+IGRvaW5nIHJlZHVuZGFudCB3 b3JrIG9uIGVhY2ggUE1ELg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBJbnN0ZWFkIERhcml1c3og c3VnZ2VzdHMgUE1EIHRvIHByb3ZpZGUgYSBmbGFnIHRvIGVodGRldiB0bw0KPiA+Pj4+Pj4+PiB3 aGF0IHRvIHJlc3RvcmUgYW5kIGNvbW1vbiBjb2RlIGluIGV0aGRldiBkb2VzIHRoZSB3b3JrLg0K PiA+Pj4+Pj4+PiBNeSBiZWxvdyBkZWRpY2F0ZWQgZGF0YSBzdHJ1Y3QgY29tbWVudCBpcyB0byBo YXZlIHRoaXMgZmxhZyBpbg0KPiA+Pj4+Pj4+PiBhIG5ldyBzdHJ1Y3QsIG92ZXJhbGwgbGlrZSBm b2xsb3dpbmc6DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IHJ0ZV9ldGhfZGV2X3N0YXJ0KCkNCj4g Pj4+Pj4+Pj4gICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+ZGV2X3N0YXJ0KCkNCj4gPj4+Pj4+Pj4g ICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+Z2V0X3Jlc3RvcmVfZmxhZ3MoZXRoZGV2LCBSVEVfRVRI X1NUQVJULA0KPiAmZmxhZ3MpDQo+ID4+Pj4+Pj4+ICAgIC0gaWYgKGZsYWdzICYgTUFDKSBkZXYt PmRldl9vcHMtPm1hY19hZGRyX3NldCgpDQo+ID4+Pj4+Pj4+ICAgIC0gaWYgKGZsYWdzICYgUFJP TUlTQykgZGV2LT5kZXZfb3BzLT5wcm9taXNjdW91c19lbmFibGUoKQ0KPiA+Pj4+Pj4+PiAgICAt IC4uLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gQ291bGQgeW91IHBsZWFzZSBleHBsYWluIHdoYXQg aXMgdGhlIGJlbmVmaXQgb2YgZXhwb3NpbmcgZmxhZ3MNCj4gPj4+Pj4+PiB0aHJvdWdoIGRldl9v cHMNCj4gPj4+Pj4+IGNhbGxiYWNrIHZzIGEgZGVkaWNhdGVkIGZsYWdzIGZpZWxkIGluIHJ0ZV9l dGhfZGV2X2RhdGE/DQo+ID4+Pj4+Pj4gSW4gYm90aCBzb2x1dGlvbnM6DQo+ID4+Pj4+Pj4gLSBj b25maWcgcmVzdG9yZSBpcyB0cmFuc3BhcmVudCB0byB0aGUgdXNlciwNCj4gPj4+Pj4+PiAtIGRy aXZlcnMgY2FuIG9taXQgY29uZmlnIHJlc3RvcmUgKGVpdGhlciBieSBub3QgaW1wbGVtZW50aW5n DQo+ID4+Pj4+Pj4gdGhlIGNhbGxiYWNrIG9yIG5vdCBwcm92aWRpbmcgdGhlIGZsYWdzKSwNCj4g Pj4+Pj4+PiAtIGFuIEFCSSBjaGFuZ2UgaXMgaW50cm9kdWNlZCAobm90IGEgaHVnZSBjb25jZXJu LCBhdCBsZWFzdCBmb3IgMjQuMTEpLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSSB1bmRlcnN0YW5k IHRoYXQgbXkgaW5pdGlhbCBwcm9wb3NhbCB3aXRoICJpbnRlcm5hbF9mbGFncyIgd2FzDQo+ID4+ Pj4+Pj4gdG9vIHZhZ3VlLCBidXQgcmVuYW1pbmcgYW5kIHNwbGl0dGluZyB0aGlzIGZpZWxkIGlu dG86DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAtIGRldl9zdGFydF9yZXN0b3JlX2ZsYWdzDQo+ID4+ Pj4+Pj4gLSBkZXZfcmVzZXRfcmVzdG9yZV9mbGFncw0KPiA+Pj4+Pj4+IC0gYW5kIHNvIG9uLi4u DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBzZWVtcyBzdWZmaWNpZW50LCBhdCBsZWFzdCBpbiBteSBv cGluaW9uLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSGkgRGFyaXVzeiwNCj4gPj4+ Pj4+DQo+ID4+Pj4+PiBQdXR0aW5nIGZsYWdzIHRvIHJ0ZV9ldGhfZGV2X2RhdGEgd29ya3MsIGFu ZCBpdCBpcyBlYXNpZXIgc2luY2UNCj4gPj4+Pj4+IHRoZXJlIGlzIGRpcmVjdCBhY2Nlc3MgZnJv bSBydGVfZXRoX2RldiB0byBydGVfZXRoX2Rldl9kYXRhLCBzbw0KPiA+Pj4+Pj4geW91IGRvbid0 IG5lZWQgbmV3IGRldl9vcHMuIFNvIHRoaXMgaXMgYSB2YWxpZCBvcHRpb24uDQo+ID4+Pj4+Pg0K PiA+Pj4+Pj4gQnV0IGJlbmVmaXQgb2YgbmV3IGRldl9vcHMgaXMgdG8ga2VlcCAic3RydWN0IHJ0 ZV9ldGhfZGV2X2RhdGEiIGNsZWFuLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+ICJzdHJ1Y3QgcnRlX2V0 aF9kZXZfZGF0YSIgaXMgaW50ZWdyYWwgZGF0YSBzdHJ1Y3R1cmUgZm9yIGV0aGRldg0KPiA+Pj4+ Pj4gYW5kIGl0IGlzIHVzZWQgaW4gbXVsdGlwbGUgbG9jYXRpb25zLCBtb3N0bHkgcmVsYXRlZCB0 byB0aGUNCj4gPj4+Pj4+IGRhdGFwYXRoIGFuZCBhbGwgZHJpdmVycyBuZWVkcyB0byBkZWFsIHdp dGggZmllbGRzIG9mIHRoaXMgc3RydWN0Lg0KPiA+Pj4+Pj4gTGlrZSBbcnhdX3F1ZXVlcywgZGV2 X3ByaXZhdGUsIGRldl9jb25mIGFsbCBpbXBvcnRhbnQgYW5kIHVzZWQgYSBsb3QuDQo+ID4+Pj4+ Pg0KPiA+Pj4+Pj4gSSB3YW50IHRvIHByb3RlY3QgInN0cnVjdCBydGVfZXRoX2Rldl9kYXRhIiBm cm9tIG5vaXNlIGFzIG11Y2ggYXMNCj4gPj4+Pj4+IHBvc3NpYmxlLCB0aG91Z2ggd2hhdCBpcyBu b2lzZSBpcyBub3QgYWx3YXlzIHRoYXQgY2xlYXIuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gVGhpcyBy ZXN0b3JlIGZsYWcgaXMgbm90IGNyaXRpY2FsLCBhbmQgSSBleHBlY3QgbW9zdCBvZiB0aGUNCj4g Pj4+Pj4+IGRyaXZlcnMgd29uJ3QgY2FyZSBhbmQgcG9wdWxhdGUgdGhpcyByZXN0b3JlIGZsYWcg YXQgYWxsLiBUaGF0IGlzDQo+ID4+Pj4+PiB3aHkgdG8gbWUgaXQgaXMgYmV0dGVyIGhhdmUgZGVk aWNhdGVkIHN0cnVjdCBmb3IgaXQgYW5kIG9ubHkNCj4gPj4+Pj4+IGRyaXZlcnMgY2FyZSBhYm91 dCByZXN0b3JlDQo+ID4+Pj4gZmVhdHVyZSBrbm93IGl0Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJIHNl ZS4gVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgdGhlIGV4cGxhbmF0aW9uLg0KPiA+Pj4+Pg0KPiA+ Pj4+PiBJbiB0aGlzIGNhc2UsIGl0IGxvb2tzIGxpa2UgYWRkaW5nIHRoaXMgdG8gZGV2X29wcyBp cyB0aGUgd2F5IHRvIGdvLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBTbywgc3VtbWFyaXppbmcgaXQgYWxs Og0KPiA+Pj4+Pg0KPiA+Pj4+PiAxLiBkZXZfb3BzIHNob3VsZCBiZSBleHRlbmRlZCB3aXRoIGEg Y2FsbGJhY2sgd2l0aCB0aGUgZm9sbG93aW5nDQo+ID4+Pj4+IHNpZ25hdHVyZSBhbmQNCj4gPj4+ PiBlbnVtcy9mbGFnczoNCj4gPj4+Pj4NCj4gPj4+Pj4gZW51bSBydGVfZXRoX2Rldl9vcGVyYXRp b24gb3Agew0KPiA+Pj4+PiAgICAgICBSVEVfRVRIX1NUQVJULA0KPiA+Pj4+PiAgICAgICBSVEVf RVRIX1NUT1AsDQo+ID4+Pj4+ICAgICAgIFJURV9FVEhfUkVTRVQsDQo+ID4+Pj4+IH07DQo+ID4+ Pj4+DQo+ID4+Pj4+ICNkZWZpbmUgUlRFX0VUSF9SRVNUT1JFX01BQ19BRERSIFJURV9CSVQzMigw KSAjZGVmaW5lDQo+ID4+Pj4+IFJURV9FVEhfUkVTVE9SRV9QUk9NSVNDIFJURV9CSVQzMigxKSAj ZGVmaW5lDQo+ID4+Pj4gUlRFX0VUSF9SRVNUT1JFX0FMTE1VTFRJDQo+ID4+Pj4+IFJURV9CSVQz MigyKQ0KPiA+Pj4+Pg0KPiA+Pj4+PiB2b2lkICgqZ2V0X3Jlc3RvcmVfZmxhZ3MpKA0KPiA+Pj4+ PiAgICAgICBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPj4+Pj4gICAgICAgZW51bSBydGVf ZXRoX2Rldl9vcGVyYXRpb24gb3AsDQo+ID4+Pj4+ICAgICAgIHVpbnQzMl90ICpmbGFncyk7DQo+ ID4+Pj4+DQo+ID4+Pj4+IDIuIHJ0ZV9ldGhfZGV2X3N0YXJ0KCkgd2lsbCB3b3JrIGFzIGZvbGxv d3M6DQo+ID4+Pj4+DQo+ID4+Pj4+IC0gQ2FsbCBkZXYtPmRldl9vcHMtPmRldl9zdGFydCgpDQo+ ID4+Pj4+IC0gQ2FsbCBkZXYtPmRldl9vcHMtPmdldF9yZXN0b3JlX2ZsYWdzKGRldiwgUlRFX0VU SF9TVEFSVCwNCj4gPj4+Pj4gJmZsYWdzKS4gSWYgY2FsbGJhY2sNCj4gPj4+PiBpcyBub3QgcHJv dmlkZWQsIGFzc3VtZSBmbGFncyA9PSAwLg0KPiA+Pj4+PiAtIGlmIChmbGFncyAmIFJURV9FVEhf UkVTVE9SRV9NQUNfQUREUikgLSByZXN0b3JlIE1BQyBhZGRyZXNzZXMNCj4gPj4+Pj4gLSBhbmQg c28gb24uLi4NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IEFsbCBhYm92ZSBsb29rcyBnb29kLg0K PiA+Pj4+DQo+ID4+Pj4+IEFsc28sIEkgd291bGQgbGlrZSB0byBhZGQgdGhlIGZvbGxvd2luZzoN Cj4gPj4+Pj4NCj4gPj4+Pj4gMy4gUGF0Y2hzZXQgaW50cm9kdWNpbmcgdGhpcyBjaGFuZ2Ugc2hv dWxkIGFkZCBnZXRfcmVzdG9yZV9mbGFncygpDQo+ID4+Pj4gaW1wbGVtZW50YXRpb24gdG8gYWxs IGRyaXZlcnMsIHdoaWNoIGluZm9ybXMgdGhhdCBhbGwgY29uZmlnIHNob3VsZCBiZQ0KPiByZXN0 b3JlZC4NCj4gPj4+Pj4gVGhpcyB3b3VsZCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBiZWhhdmlvci4N Cj4gPj4+Pj4gTGF0ZXIsIHRoaXMgY291bGQgYmUgcmVmaW5lZCBkcml2ZXIgYnkgZHJpdmVyLg0K PiA+Pj4+Pg0KPiA+Pj4+PiBXaGF0IGRvIHlvdSB0aGluaz8NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+ Pj4+IFdoYXQgeW91IGFyZSBzYXlpbmcgaXMgY29ycmVjdCwgYnV0IEkgc3VzcGVjdCBtb3N0IG9m IHRoZSBkcml2ZXJzDQo+ID4+Pj4gZG9uJ3QgcmVhbGx5IG5lZWQgdGhpcyByZXN0b3JlLCBidXQg dGhleSBoYXZlIGl0IHNpbmNlIGl0IHdhcyBpbiB0aGUgZXRoZGV2DQo+IGxheWVyLg0KPiA+Pj4+ DQo+ID4+Pj4gSWYgd2UgaW50cm9kdWNlIGJhY2sgcmVzdG9yZSB2aWEgZ2V0X3Jlc3RvcmVfZmxh Z3MoKSwgaXQgbWF5IHN0YXkNCj4gPj4+PiBhcyBpdCBpcyBpbiBkcml2ZXJzLCBhdCBsZWFzdCBm b3IgbW9zdCBvZiB0aGVtLg0KPiA+Pj4+DQo+ID4+Pj4gV2hhdCBkbyB5b3UgdGhpbmsgdG8gcmlz ayBicmVha2luZyBzdHVmZiBmb3IgdGhpcyBjYXNlLg0KPiA+Pj4+DQo+ID4+Pj4gU28gZG9uJ3Qg aW1wbGVtZW50IHRoaXMgaW4gdGhlIGRyaXZlcnMgYnkgZGVmYXVsdCwgc28gd2hvIG5lZWRzIGl0 DQo+ID4+Pj4gd2lsbCByZWNvZ25pemUgdGhlIGlzc3VlIGFuZCB3aWxsIGltcGxlbWVudCBpdC4g SWYgd2UgbWVyZ2UgdGhpcw0KPiA+Pj4+IHBhdGNoIGZvciAtcmMxLCBpdCBnaXZlcyBlbm91Z2gg dGltZSBmb3IgZHJpdmVycyB0byBkZXRlY3QgdGhlIGlzc3VlIGFuZCBmaXggaXQuDQo+ID4+Pg0K PiA+Pj4gSXQgc2VlbXMgcmF0aGVyIHRvbyByaXNreSwgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0 aGF0IGZvciBleGFtcGxlLA0KPiA+Pj4gdGhlcmUgYXJlIGEgZmV3IEludGVsIGRyaXZlcnMgd2hp Y2ggZG8gbm90IGhhdmUgbWFpbnRhaW5lcnMgKGxpa2UNCj4gPj4gaTQwZSkuDQo+ID4+PiBTbywg SSBkb24ndCBrbm93IHdoYXQgd2lsbCBoYXBwZW4gdG8gc3VjaCBkcml2ZXJzLiBUaGV5IG1heSBi ZSBsZWZ0IGJyb2tlbiAoaWYNCj4gdGhleSBhcmUgYWZmZWN0ZWQpIGZvciAyNC4xMSBhbmQgZnV0 dXJlIHJlbGVhc2VzLg0KPiA+Pj4gQnV0IEkgYWdyZWUgdGhhdCBpZiBkZWZhdWx0IGJlaGF2aW9y IGlzIHByZXNlcnZlZCwgdGhpcyBkZXBlbmRlbmNlIG9mIGRyaXZlcnMNCj4gb24gY29uZmlnIHJl c3RvcmUgbWlnaHQgc3RheSBhcyBpcy4NCj4gPj4+IEknbSBvbiB0aGUgZmVuY2UgYWJvdXQgaXQu DQo+ID4+Pg0KPiA+Pg0KPiA+PiBZZWFoLCBub3Qgc3VyZS4NCj4gPj4NCj4gPj4gRG8geW91IHRo aW5rIHRoZSBkZXZfb3BzIGZ1bmN0aW9uIGNhbiBiZSBpbXBsZW1lbnRlZCBpbiB0aGUNCj4gPj4g J2V0aGRldl9kcml2ZXIuYycgYW5kIGFsbCBkcml2ZXJzIHVzZSBleGFjdCBzYW1lIGZ1bmN0aW9u Pw0KPiA+PiBTbyB0aGlzIHJlZHVjZXMgY2hhbmdlcyBhbmQgZHVwbGljYXRpb24gaW4gZHJpdmVy cyB3aGlsZSBwcmVzZXJ2aW5nDQo+ID4+IHRoZSBiZWhhdmlvci4NCj4gPg0KPiA+IFdvbmRlciB3 aHkgaXQgY2FuJ3QgYmUgZG9uZSB2aXNhLXZlcnNhPw0KPiA+IElmIHRoaXMgbmV3IGZ1bmN0aW9u IGlzIG5vdCBpbXBsZW1lbnRlZCBieSBQTUQsIHRoZW4gc2ltcGx5IGFzc3VtZQ0KPiA+IHRoYXQg ZXZlcnl0aGluZyBuZWVkcyB0byBiZSByZXN0b3JlZCAoYXMgaXQgaGFwcGVucyBub3cpPw0KPiA+ DQo+IA0KPiBUcnVlLCB0aGlzIHByZXNlcnZlIHRoZSBiZWhhdmlvciBhbmQgcHJldmVudHMgdXBk YXRpbmcgYWxsIGRyaXZlcnMuDQo+IA0KPiBJIHRoaW5rIGNhbiBiZSBkb25lIGluIHR3byB3YXlz Og0KPiAxLiBkZXZfb3BzKCkgdGVsbHMgd2hhdCBOT1QgdG8gcmVzdG9yZSwgaWYgZGV2X29wcygp IG5vdCBpbXBsZW1lbnRlZCBvciBpdCByZXR1cm5zDQo+IHplcm8sIHJlc3RvcmUgZXZlcnl0aGlu Zy4gSGVyZSB3aGF0IG5vdCBuaWNlIGlzIHdoYXQgdG8gcmVzdG9yZSBpbiB0aGlzIGNhc2UgaXMg bm90DQo+IHZlcnkgd2VsbCBkZWZpbmVkLg0KPiANCj4gMi4gZGV2X29wcygpIHRlbGxzIHdoYXQg dG8gcmVzdG9yZSwgYnV0IHdoZW4gbm90IGltcGxlbWVudGVkIGRlZmF1bHQgZmxhZyB2YWx1ZSBp cw0KPiBhbGwgcmVzdG9yZS4gV2hpY2ggaXMgY3VycmVudCBiZWhhdmlvci4NCj4gDQo+IA0KPiBJ IGFtIGZvciBvcHRpb24gMi4gYW5kIEkgYXNzdW1lIHRoYXQgaXMgd2hhdCBLb25zdGFudGluIGFs c28gc3VnZ2VzdCwgYnV0IEkgd2FudCB0bw0KPiBjbGFyaWZ5IHRvIGJlIHN1cmUuDQoNCisxIGZv ciBvcHRpb24gMg0KDQo+IA0KPiANCj4gPj4+Pg0KPiA+Pj4+IE9ubHkgd2UgbWF5IGltcGxlbWVu dCB0aGlzIHRvIHRoZSBkcml2ZXJzIHRoYXQgZXhpc3Qgd2hlbiB0aGlzDQo+ID4+Pj4gcmVzdG9y ZSBjb2RlIHdhcyBpbnRyb2R1Y2VkLg0KPiA+Pj4+IEkgbWVhbiB3aGF0ZXZlciBkcml2ZXIgZXhp c3QgaW4gdGhlIGluaXRpYWwgRFBESyBjb21taXQsIGltcGxlbWVudA0KPiA+Pj4+IHRoaXMgbG9n aWMgb25seSB0byB0aG9zZSBkcml2ZXJzLg0KPiA+Pj4NCj4gPj4+IFNlZW1zIHJlYXNvbmFibGUg dG8gbWUuIEluIHRoaXMgY2FzZSwgaXQgd291bGQgYmUgaWdiIChJSVVDLCBub3cgaXQncyBuYW1l ZA0KPiBlMTAwMCkgYW5kIGl4Z2JlLg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+PiBBbHNvLCB0aGVy ZSdzIGFuIG9wZW4gcXVlc3Rpb24gYWJvdXQgJ3N0b3AnIGFuZCAncmVzZXQnIG9wZXJhdGlvbnMu DQo+ID4+Pj4+IEF0IHRoZSBtb21lbnQsIGV0aGRldiBsYXllciBkb2VzIG5vdCBkbyBhbnkgY29u ZmlnIG1hbmlwdWxhdGlvbg0KPiA+Pj4+PiBkdXJpbmcgdGhlc2UNCj4gPj4+PiBvcGVyYXRpb25z Lg0KPiA+Pj4+PiBNYXliZSB3ZSBzaG91bGQgbGltaXQgZ2V0X3Jlc3RvcmVfZmxhZ3MoKSB0byAn c3RhcnQnIG9ubHk/DQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBBY2ssIEkgd2FzIGFib3V0IHRv IHN1Z2dlc3QgdGhlIHNhbWUsIGZvciBub3cgb25seSBoYXZlICdSVEVfRVRIX1NUQVJUJw0KPiA+ Pj4+IGFzIGEgcGxhY2Vob2xkZXIgZm9yIGxhdGVyIHBvc3NpYmxlIHVzYWdlcy4NCj4gPj4+DQo+ ID4+PiBBY2sNCj4gPj4+DQo+ID4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4NCj4g Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gU28gUE1EcyBvbmx5IHdpbGwgcHJvdmlkZSB3aGF0IHRvIHJl c3RvcmUgd2l0aCBhbiBpbnRlcm5hbCBBUEkNCj4gPj4+Pj4+Pj4gYW5kIGNvbW1vbiBldGhkZXYg bGF5ZXIgd2lsbCByZXN0b3JlIGl0Lg0KPiA+Pj4+Pj4+PiBJZiBubyByZXN0b3JlIHJlcXVpcmVk IFBNRCBtYXkgbm90IGltcGxlbWVudCAuZ2V0X3Jlc3RvcmVfZmxhZ3MoKSBhdA0KPiBhbGwuDQo+ ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEFkZGl0aW9uYWxseSwgUlRFX0VUSF9TVEFSVCwgUlRFX0VU SF9SRVNFVCBldGMgZmxhZyBjYW4gYmUNCj4gPj4+Pj4+Pj4gcHJvdmlkZWQgdG8gaW50ZXJuYWwg QVBJIHRvIGdldCB3aGF0IHRvIHJlc3RvcmUgaW4gZGlmZmVyZW50IHN0YXRlcy4uLg0KPiA+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IFN1Z2dlc3RlZCAnaW50ZXJuYWxfZmxhZycgaW4gInN0cnVjdCBy dGVfZXRoX2Rldl9kYXRhIiBjYW4gYmUNCj4gPj4+Pj4+Pj4+PiBjb25mdXNpbmcgYW5kIG9wZW4g dG8gaW50ZXJwcmV0YXRpb24gd2hhdCB0byB1c2UgaXQgZm9yIGFuZA0KPiA+Pj4+Pj4+Pj4+IGJ5 IHRpbWUgYmVjb21lIHNvdXJjZSBvZiBkZWZlY3QuDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4g WWVzLCBzYW1lIHRob3VnaHRzLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiBJbnN0ZWFkIHdo YXQgZG8geW91IHRoaW5rIHRvIGhhdmUgYSBzZXBhcmF0ZSwgZGVkaWNhdGVkIGRhdGEgc3RydWN0 DQo+IGZvciBpdD8NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBIbW0uLi4gbm90IHN1cmUgSSB1 bmRlcnN0b29kIHlvdSBoZXJlLi4uDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+Pj4+IE1pZ2h0IGJlIHdlIGNhbiBtb3ZlIHRoaXMgcmVzdG9yYXRpb24gY29kZSBpbnRvIHRo ZSBuZXcNCj4gPj4+Pj4+Pj4+Pj4gZXRoZGV2IGhlbHBlciBmdW5jdGlvbiwoZXRoZGV2ZF91c2Vy X2NvbmZpZ19yZXN0b3JlKCkgIG9yDQo+ID4+Pj4+Pj4+Pj4+IHNvKSB0aGF0IFBNRCBjYW4gaW52 b2tlDQo+ID4+Pj4+Pj4+IGR1cmluZyBpdHMgZGV2X3N0YXJ0KCkgaWYgbmVlZGVkPw0KPiA+Pj4+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+ICNkZWZpbmUgUlRFX0VUSF9E RVZfSU5URVJOQUxfUFJPTUlTQ19GT1JDRV9SRVNUT1JFDQo+ID4+Pj4+PiBSVEVfQklUMzIoMCkN Cj4gPj4+Pj4+Pj4+Pj4+ICNkZWZpbmUgUlRFX0VUSF9ERVZfSU5URVJOQUxfQUxMTVVMVElfRk9S Q0VfUkVTVE9SRQ0KPiA+Pj4+Pj4gUlRFX0JJVDMyKDEpDQo+ID4+Pj4+Pj4+Pj4+PiAjZGVmaW5l IFJURV9FVEhfREVWX0lOVEVSTkFMX01BQ19BRERSX0ZPUkNFX1JFU1RPUkUNCj4gPj4+Pj4+Pj4g UlRFX0JJVDMyKDIpDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gc3RydWN0IHJ0ZV9l dGhfZGV2X2RhdGEgew0KPiA+Pj4+Pj4+Pj4+Pj4gICAgLyogc25pcCAqLw0KPiA+Pj4+Pj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4+Pj4+ICAgIHVpbnQzMl90IGRldl9mbGFnczsNCj4gPj4+Pj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+Pj4+PiAgICAvKioNCj4gPj4+Pj4+Pj4+Pj4+ICAgICAqIEludGVybmFsIGRl dmljZSBjYXBhYmlsaXRpZXMsIHVzZWQgb25seSBieSBldGhkZXYgbGlicmFyeS4NCj4gPj4+Pj4+ Pj4+Pj4+ICAgICAqIENlcnRhaW4gZnVuY3Rpb25hbGl0aWVzIHByb3ZpZGVkIGJ5IHRoZSBsaWJy YXJ5IG1pZ2h0DQo+ID4+Pj4+PiBlbmFibGVkL2Rpc2FibGVkLA0KPiA+Pj4+Pj4+Pj4+Pj4gICAg ICogYmFzZWQgb24gZHJpdmVyIGV4cG9zaW5nIGNlcnRhaW4gY2FwYWJpbGl0aWVzLg0KPiA+Pj4+ Pj4+Pj4+Pj4gICAgICovDQo+ID4+Pj4+Pj4+Pj4+PiAgICB1aW50MzJfdCBpbnRlcm5hbF9mbGFn czsNCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiAgICAvKiBzbmlwICovDQo+ID4+Pj4+ Pj4+Pj4+PiB9Ow0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiBBbHNvIHBlcmhhcHMg d2UgaGF2ZSBnbyBpbnRvIGRldGFpbHMgd2hhdCBuZWVkcyB0byBiZQ0KPiA+Pj4+Pj4+Pj4+Pj4+ IHJlc3RvcmVkIGFmdGVyICdzdG9wJyBhbmQgd2hhdCBuZWVkcyB0byBiZSByZXN0b3JlZCBhZnRl cg0KPiA+Pj4+Pj4+Pj4+Pj4+ICdyZXNldCcgYW5kIHVzZSBzaW1pbGFyDQo+ID4+Pj4+Pj4+IG1l Y2hhbmlzbSBldGMuLi4NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBJIHRoaW5rIHdl IHNob3VsZCBsb29rIGludG8gdGhhdC4NCj4gPj4+Pj4+Pj4+Pj4+IEFueSAnY29kaWZpY2F0aW9u JyBvZiBzZW1hbnRpY3MgYmV0d2VlbiBkcml2ZXJzIGFuZCBldGhkZXYNCj4gPj4+Pj4+Pj4+Pj4+ IGxpYnJhcnkgaXMgZ29vZCBpbg0KPiA+Pj4+Pj4+PiBteSBvcGluaW9uLg0KPiA+Pj4+Pj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4+Pj4+IEF0IGxlYXN0IHJpZ2h0IG5vdywgZXRoZGV2IGRvZXMgbm90IGNo YW5nZSBhbnkNCj4gPj4+Pj4+Pj4+Pj4+IGNvbmZpZ3VyYXRpb24gaW4gJ3N0b3AnIGFuZA0KPiA+ Pj4+Pj4+PiAncmVzZXQnIGZyb20gd2hhdCBJIHNlZS4NCj4gPj4+Pj4+Pj4+Pj4+IEJ1dCB0aGF0 J3Mgb24gbGlicmFyeSBzaWRlIG9ubHkuDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+ PiBUaGlzIHdheSwgaWYgd2Ugd291bGQgY29uY2x1ZGUgdGhhdCBpdCBtYWtlcyBzZW5zZSBmb3IN Cj4gPj4+Pj4+Pj4+Pj4+Pj4gLmRldl9zdGFydCgpIHRvIGhhbmRsZSBhbGwgc3RhcnRpbmcgY29u ZmlndXJhdGlvbg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBhc3BlY3RzLCB3ZSBjb3VsZCB0cmFjayB3aGlj aCBkcml2ZXJzIHN0aWxsIHJlbHkNCj4gPj4+Pj4+Pj4+Pj4+PiBvbiBjb25maWd1cmF0aW9uIHJl c3RvcmUuDQo+ID4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IERhcml1c3ogU29zbm93 c2tpICg0KToNCj4gPj4+Pj4+Pj4+Pj4+Pj4gICBldGhkZXY6IHJld29yayBjb25maWcgcmVzdG9y ZQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiAgIGV0aGRldjogb21pdCBwcm9taXNjdW91cyBjb25maWcgcmVz dG9yZSBpZiBub3QgcmVxdWlyZWQNCj4gPj4+Pj4+Pj4+Pj4+Pj4gICBldGhkZXY6IG9taXQgYWxs IG11bHRpY2FzdCBjb25maWcgcmVzdG9yZSBpZiBub3QgcmVxdWlyZWQNCj4gPj4+Pj4+Pj4+Pj4+ Pj4gICBldGhkZXY6IG9taXQgTUFDIGFkZHJlc3MgcmVzdG9yZSBpZiBub3QgcmVxdWlyZWQNCj4g Pj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5j IHwgMzkNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tDQo+ID4+Pj4+Pj4+Pj4+Pj4+ICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCB8IDE4ICsr KysrKysrKysrKysrKysrKw0KPiA+Pj4+Pj4+Pj4+Pj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCA1MiBp bnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQ0KPiA+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+ Pj4+Pj4+PiAtLQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiAyLjM5LjUNCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+DQo+ID4N Cg0K