From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012066.outbound.protection.outlook.com [52.101.53.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A27E3D45C5 for ; Mon, 31 Aug 2026 17:02:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.66 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788195743; cv=fail; b=YRc5dm9u/1VW2/qKceDVcU9lPz6J8nZjxdz2SPuuLHGx/xzQrRYArDQZOTk7cPafBIC/fgPi8h9He1cNmHW263M81oa9zTcZyyZRPU9sFdIl5bXZU9p4toNfdaIXQ6Czhsm9M5En0m/fCG1yuATIoq2Hna/L3BmeNLnWlmG2PTs= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788195743; c=relaxed/simple; bh=52VWcksxAqf12zlB739wg5RmxKL4iA3j11se2lzCzPU=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=Z2x4wUBF5vqndqPcD7WghvmyyxuEeWm0fNq1iUr2sWc3UB6oZC/YLIT3C6ROABHRN722ofOB+vgZM12/K5vMWBigZP+r73nX9STxihPnKt5GbdQf5U2/VWO426c+nb6Qs6fSdo8oCYjHhBJzq/ZMSH01wZzNXzRlfNYjfv1OjpM= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=UKDe9nhr; arc=fail smtp.client-ip=52.101.53.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="UKDe9nhr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yUxyt0T00kkCZLervPTkpq78aELqI/FEYxx1WSWKRdcvUSNs/7bnv0zNJW92CFnDPtyiJZLw2wfG1TE9y3ujwJhDhHdU+n6oxdFwIwmXfLTIy3YdBvakJtZTwUE1/HJn32DxEW91N0j1aJmXam4+N/6zNInPPH6hYKPN7A8zGuQ+jRpj/J6xrn9kbSUOBM/bUmcIgPtCj8dGriVCQEdh013cuJULW4MbLoViw/InkRBYrOR2PtHSnHQ6nbNZ/hftyd691z1fGkrf/o3NzWeWnyoxs4/CFAEKZ6VnJ+5yLbhE5phYj/dRGnT8Z0wOyX2SYavi40/uOB0Ru2SAiBKiPA== 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=52VWcksxAqf12zlB739wg5RmxKL4iA3j11se2lzCzPU=; b=TLctzmWbSzCsPHNcYt4j5lSOr0Had9h9P7wchvsfvxgb26ZWE8XLHY5VnORga40sx4PYylj0vzrosT+L+pUyEovdKYpnXVPjfpxZZNhXWiE6SpfW1zhYGgR/2X/6Fzagy67Pzg5RECv3TWsOPKO6j1BFyR4xQS8QXxbF4u/h5palk7b3EvDMXyv1MDWJJBtEcRYnV8/CFtZ5nVCeN4je7FMeays0p0qhI41hSOS+ef2AJucAj6KfjWlVFlB1VEUZqpqs8Z8u5HYjOtdDrJ3CwMvmD0WjT0xYJBb0LyWjDUMv9n1s62KME6acVobpMf6Nv7PAVI7D7a7hqMVXzZbJfw== 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=52VWcksxAqf12zlB739wg5RmxKL4iA3j11se2lzCzPU=; b=UKDe9nhrt9cA+1nEjBYtC4+7T/G+GWophTYrYEpGUA3oWDrLUV9jXukWMexUkVt7xWZPMKbLyIijuLZ2LYX9+jQHtiFm9L8DW0/CjJ/kv0MkY/cwzOk7AQYRHPg6IdLqdhvtQgnP3KyMqsHe5j4dz9UgbVSsnVpDAsgnf8ua15g3NyU0cxxdG7hJgqx/EP09wqHOgd4X4/gRCIloWjj9G61bQxoxOHbNYJ3+cELMsqlyPM0pWJuECK8ub+mAgMU4FtsvYQgrEwf+CuUSZbjIhWyhe0AGicPxMtIddl2DIr9fpIPzT3R6aMCLtRmEBhRqbv3c1mVYGbHFZ6eoR/JsKw== Received: from MN6PR12MB8568.namprd12.prod.outlook.com (2603:10b6:208:471::19) by SN7PR12MB8131.namprd12.prod.outlook.com (2603:10b6:806:32d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.9; Mon, 31 Aug 2026 17:02:15 +0000 Received: from MN6PR12MB8568.namprd12.prod.outlook.com ([fe80::f13:fa29:e7b3:4d3a]) by MN6PR12MB8568.namprd12.prod.outlook.com ([fe80::f13:fa29:e7b3:4d3a%5]) with mapi id 15.21.0360.008; Mon, 31 Aug 2026 17:02:15 +0000 From: Timur Tabi To: Alexandre Courbot , "dakr@kernel.org" , John Hubbard CC: "lossin@kernel.org" , "a.hindborg@kernel.org" , "boqun.feng@gmail.com" , Zhi Wang , "simona@ffwll.ch" , "tmgross@umich.edu" , "alex.gaynor@gmail.com" , "nova-gpu@lists.linux.dev" , "linux-kernel@vger.kernel.org" , "ojeda@kernel.org" , "bjorn3_gh@protonmail.com" , Eliot Courtney , "airlied@gmail.com" , "aliceryhl@google.com" , "bhelgaas@google.com" , "gary@garyguo.net" , Alistair Popple Subject: Re: [PATCH] gpu: nova-core: document the firmware layout and ABI epochs Thread-Topic: [PATCH] gpu: nova-core: document the firmware layout and ABI epochs Thread-Index: AQHdN10w5X2p9Y1R8Ui1C/dQT+Buiba4ZjWA Date: Mon, 31 Aug 2026 17:02:14 +0000 Message-ID: <4a4980f769b9de29cd5731b8fef087c1b1aa0534.camel@nvidia.com> References: <20260829022155.543353-1-jhubbard@nvidia.com> In-Reply-To: <20260829022155.543353-1-jhubbard@nvidia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.56.2-9 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: MN6PR12MB8568:EE_|SN7PR12MB8131:EE_ x-ms-office365-filtering-correlation-id: 77a331a0-0ead-49a8-6fbe-08df07819b7e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|38070700021|6133799003|10067099003|11063799006|56012099006|5023799004|22082099003|18002099003; x-microsoft-antispam-message-info: zITzbFFHYhtnWr6Xb6TgGk5sLkX9PmJyRdNY2hEsGx6946guNx+xyXU5MugXBQ3BWO6wplx+jSBLXu97SlEl9S5UOsdZnZVAHsmkgXD3pNsjK4UJl3sJnLwjte6ZJqbyaT6ciGJ5pOP1+0ubgGCiPlpiKQA8uh9+N7Uk+k0SzI2FY8wF9gSXkzlN2uQjx4+gJk82CyMWcpgD6ANxWj5yyyNLHIWsfFJ79dtQUvDN5Ts6OlICkyfJjl8Wb2e2mKgyREuGhhWjBXjbdfMQxgl/yqvV52H72VHOOpOoD0S6Z6uPtD0LPVKUz2N2Z/OXF3ZzWuM39Xa6kH9wfffAZIu6X5c1DIFWTXP2yYZ05o8N4ztnikUvkEBsvI1jTo/j1yzjh4KSCXqj63rFgkTxq4EjabZyqg80qg4CXgw/1DR+9Ea6cIK0BV5gUMXEfvQMZDy1EAL6ZaM9THAWsp+nJtyE/EHR5VzO9Vk7RUlNYUfQctSv4tdVkuOf+SmNqBZW0KpRkfgLlL+Xh5atXteaobu8iet8v8IVyAW6H+NKwuK9Nu5wRVY9f0YoclMIEz1KAlw2iKyK8Egcwf61dl8nCH3yBtL2Ae5gfrZu430idUCJZY8mvg/abR5TrGPPI4l3ZWRKwu3yJA+v98b+duoyQo78pNFrgjWT5RO4M8ov/C65OS4Bi6AmNrMI+N59+u6eJuh8vXC/S1Dsj37MSdU0c+lhoafyu7iML8gRkOmnrW9b0HY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN6PR12MB8568.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(38070700021)(6133799003)(10067099003)(11063799006)(56012099006)(5023799004)(22082099003)(18002099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bmhua3hpd0RhS1NwdG9USWNZako5SXA1c3hOaTgyNFVoMHNKVTZvcXFDallI?= =?utf-8?B?Z2dQN0QvaTA1RCtnbFp2ejJwL09HR2E5cEF1WkN2SWVSZjUwdUNyOFNveHZv?= =?utf-8?B?eGFVdGJNYWUyUDFlVTdCV2VqRjFkN3haOWJvSXNQbmNoRFIvSEt6akExNFFi?= =?utf-8?B?bTY0LzRhYW5wWFlqUHl1Mm4zKzRWNEFOMVdHejllcE9JVFpqMVlrN2FWNzE3?= =?utf-8?B?YUtxYkk4SDNvRm1rVENzN0poU3FlQzViOW9kZjJ5NENueHozTHdEZDNCMmNi?= =?utf-8?B?Q2RUUG1yZ1k4ZHM4KzlzdjJjUksxZFF0UDBPZi9hNzdULzVmSTNpRnBrSWtz?= =?utf-8?B?d2twS2hTSm1FTFNmUVlzZysyanBTeDM4ek5oMUQ2YmprYXByendnVUdud3NY?= =?utf-8?B?a1p6RjBFbXlNQW1xK2NYSXFjNkpFdmJhd05neFlEbUc5U2dRaGtyMWduQmtt?= =?utf-8?B?WWF6VkMyb3JRbS9BSDlSUm5lVU9RNFY2cFNPRmdpNHJMZFZ1alFBb2ZIWCs5?= =?utf-8?B?em5PT3ZtVDJuRXgrUjlPZUlma3dHalMxbVJPUXpLU1RnTlNmUmdkVjNsdUR3?= =?utf-8?B?UlljeDN0VTgrZTRrRGJEMVBxNEc3R0l0S3VYSnNVQklvbGpBTStiMy8wa0Ju?= =?utf-8?B?bUlETW9rdHBwVzlvd1MxS1IwMEI3a3IwYWV0VjUwbW92ekpuanZGK3o1bTAz?= =?utf-8?B?czhNUGxUNXpjTlFwRnpTUzF5bHJRYno2YmxPcmNjWkRlNnlKK1l6YitLb0w0?= =?utf-8?B?TW9xMEdJUG15Tkd0bTFVeitOUHF1UHlUNUtNNWN0NkRvUTQ1MEI0MzlxdDhW?= =?utf-8?B?YVRyYXo0SkMvaTRIU2Z2Mkc0NGxjeVNqMU94cFVaeldPZitXZlRzVjhQeUh0?= =?utf-8?B?Nkw4STBHQlUxNzFGNWZsU0RWTHU5Nk1kVWJLMTlGZXN2dmh0cGZ0a1FNLzBI?= =?utf-8?B?MDZPRndnYmpGSkQzZEV0Lzl2Z09NTVdLWU9LVnhQQ1J5RUpRV1pkWmg2RHF4?= =?utf-8?B?TGdMK09RVGltVVNsZ2RldCthY2ZkMHh1dnhrcE9TUkN6RjJ1RTVJbjVQOWVX?= =?utf-8?B?WGpxK2tBVGlGRVdTb1hVcTFLQWlkYnREL1ZIUThMZStIZk1MMUdzRFJ1RVVm?= =?utf-8?B?eURpL1kzV0E0UGlZbDFFekVZT2d0aGw3MHVOZm9uN0g4Q1J6TW9DcHlGU2Jl?= =?utf-8?B?akJpODFjS0tJV2RCU1loZ09KcVluQVBQczI3STgxSXkvREVNZ1lQZENaK2hF?= =?utf-8?B?L1FHRENIYXN4YmZjUzg3eUU3Sk5KTlZvb3gzK25ieE9pUENBNmhwSHJocEtU?= =?utf-8?B?bUhmTmhoOWViaXZCbGhJZDVjL3RJSXVIQ2M0dEhmSVpHdzAzUFpWRTZZRE1q?= =?utf-8?B?NkVocEJvWGNzVEJscnlKbzRRV0c3c2d1K2RzczdqS3NHRlVSblJDVWYzZGZ1?= =?utf-8?B?Q09MS3BUWWZvRVo4bjIxRTJCOGZpemwvL01TMWNVeXYzOU9jN2gzN01PTTgz?= =?utf-8?B?SjcwNVZDNStWdXhzZzFTbjEveXR3VmFFWitUd0RmL09aRmgrSXdnWnV5UHYz?= =?utf-8?B?UmZhMU5UREtCOXlTRmtrS3NENUFLNzNPSW5wc3VLQjhTMXM2bCsrMXpzakhu?= =?utf-8?B?VUs4ckhMalZpa2UyV3RiYzh2eTJITHAyZUNtdzN0OVd4VnhlRUhTZjlqMTY2?= =?utf-8?B?c0VEL0E1VlYzSXJKYVlrdEVDdCtQSFd5UGxuUGF0VVdLR3VDQUo5YTlaZDho?= =?utf-8?B?cDI5NjBlOFkxcGVQZG82RStmdittOWNleGMwd0V6cnJXMnI1RDRvd1dyUDVJ?= =?utf-8?B?ekVuQytUSWVQeVo0VTd4UkpOaFJlWk52MFViNTFkZG51ZmlQVnhMdUZIbS9R?= =?utf-8?B?SUh4azZkZ2pCQ1VQMkJLbjlQZ0pPdFNsYVZOdE9BTTJKdXNSMUtJSmN5Rlpm?= =?utf-8?B?end4MzlacSs3czF5eXdEYUFmZWFjcmM4WWtyVko3cmtqcExSYVRUbXliN01z?= =?utf-8?B?M3NJQkhqUjJNMHcybWF0a2QzV054YVFyeVpxd1NuRGZLc3U4QTR0bUVBTzFZ?= =?utf-8?B?YmdiVjJudGRNb01MZzhWeVh5Sjh2L1VVTWVQY3o1S1NkelpJaGFsa09nSERr?= =?utf-8?B?YXNjZVBqN2V6Q1ZnMlNSdmd3aUNXbjgvQW00cmFTeUVkcUZkdEM1NW5qKzhP?= =?utf-8?B?VFJ6ZnRWdDdEVjNNWXkxZFYxc0tBVFg1NDRrWHh0WElNb1J5eW5xYXFWamRx?= =?utf-8?B?ZkkxSDdrRXMrM3FLZkdjUHhVL3JYRk85cVdDdENQS01BU2MzKzNXN09leWtY?= =?utf-8?B?ek1mMWFMWVBlNTFXN0tRMklCMDVjWXJ1VEN2bzZiQVV2VHFVSGZoZz09?= Content-Type: text/plain; charset="utf-8" Content-ID: <22BF838F7A8DDD4FAADCC24B4A096935@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR12MB8568.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 77a331a0-0ead-49a8-6fbe-08df07819b7e X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Aug 2026 17:02:15.0188 (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: O4VFWpbgqOZ4OcitRM73qgnsEalrvuHbzM1bShAniUqtV0rfDIsm0X0mz7gHgwI71qZe37vXjS4Zg77ne28a2w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8131 T24gRnJpLCAyMDI2LTA4LTI4IGF0IDE5OjIxIC0wNzAwLCBKb2huIEh1YmJhcmQgd3JvdGU6DQo+ IFRoZSBrZXJuZWwgYW5kIGxpbnV4LWZpcm13YXJlIGFyZSBkaXN0cmlidXRlZCBhbmQgdXBkYXRl ZCBzZXBhcmF0ZWx5LCBzbw0KPiBhIG5ld2VyIGtlcm5lbCBoYXMgdG8gYnJpbmcgdXAgdGhlIEdQ VSB3aXRoIG9sZGVyIGZpcm13YXJlLCBhbmQgYW4gb2xkZXINCj4ga2VybmVsIHdpdGggbmV3ZXIg ZmlybXdhcmUuIEEgZmlybXdhcmUgcmVsZWFzZSB0aGF0IGtlZXBzIHRoZSBpbnRlcmZhY2UNCj4g bm92YS1jb3JlIGltcGxlbWVudHMgY2FuIHJlcGxhY2UgdGhlIGluc3RhbGxlZCBmaWxlcyB1bmRl ciB0aGVpcg0KPiBleGlzdGluZyBuYW1lcy4gQSByZWxlYXNlIHRoYXQgYnJlYWtzIHRoYXQgaW50 ZXJmYWNlIGNhbm5vdCwgYmVjYXVzZSBhbg0KPiBvbGRlciBrZXJuZWwgd291bGQgcmVxdWVzdCB0 aGUgc2FtZSBuYW1lcyBhbmQgZmFpbCB0byBib290IHRoZSBHUFUuDQo+IA0KPiBOZWl0aGVyIHRo ZSBpbnN0YWxsZWQgbGF5b3V0IG5vciB0aGUgcmVuYW1pbmcgcnVsZSBmb3IgdGhhdCBjYXNlIHdh cw0KPiBkb2N1bWVudGVkLCBzbyBhIGZpcm13YXJlIHVwZGF0ZSBhbmQgYSBkcml2ZXIgY2hhbmdl IGhhZCBubyBjb252ZW50aW9uDQo+IHRvIGZvbGxvdy4NCj4gDQo+IEFkZCBhIGRvY3VtZW50IGNv dmVyaW5nIHRoZSBwZXItY2hpcCBkaXJlY3RvcnkgbGF5b3V0IGFuZCB0aGUgZmlsZXMgZWFjaA0K PiBHUFUgZmFtaWx5IG5lZWRzLiBJdCBhbHNvIGNvdmVycyB0aGUgZXBvY2ggc3VmZml4IHRoYXQg YW4gQUJJLWJyZWFraW5nDQo+IHJlbGVhc2UgYXBwZW5kcyB0byBldmVyeSBmaWxlIG9mIGFuIGFm ZmVjdGVkIGNoaXAsIHdoaWNoIGVwb2NoIG5vdmEtY29yZQ0KPiByZXF1ZXN0cywgYW5kIHdoZW4g YW4gZXBvY2ggYmVjb21lcyBlbGlnaWJsZSBmb3IgcmVtb3ZhbC4NCj4gDQo+IEFzc2lzdGVkLWJ5 OiBDdXJzb3I6Y2xhdWRlLW9wdXMtNQ0KPiBTaWduZWQtb2ZmLWJ5OiBKb2huIEh1YmJhcmQgPGpo dWJiYXJkQG52aWRpYS5jb20+DQo+IC0tLQ0KPiDCoERvY3VtZW50YXRpb24vZ3B1L25vdmEvY29y ZS9maXJtd2FyZS5yc3QgfCAyMzQgKysrKysrKysrKysrKysrKysrKysrKysNCj4gwqBEb2N1bWVu dGF0aW9uL2dwdS9ub3ZhL2luZGV4LnJzdMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArDQo+IMKg MiBmaWxlcyBjaGFuZ2VkLCAyMzUgaW5zZXJ0aW9ucygrKQ0KPiDCoGNyZWF0ZSBtb2RlIDEwMDY0 NCBEb2N1bWVudGF0aW9uL2dwdS9ub3ZhL2NvcmUvZmlybXdhcmUucnN0DQo+IA0KPiBkaWZmIC0t Z2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvbm92YS9jb3JlL2Zpcm13YXJlLnJzdA0KPiBiL0RvY3Vt ZW50YXRpb24vZ3B1L25vdmEvY29yZS9maXJtd2FyZS5yc3QNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4yNzU3YmQxNzZmMGMNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9ub3ZhL2NvcmUvZmlybXdhcmUucnN0DQo+IEBAIC0w LDAgKzEsMjM0IEBADQo+ICsuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjArIE9S IE1JVCkNCj4gKw0KPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gK0Zpcm13YXJl IGZpbGVzIGFuZCBBQkkgZXBvY2hzDQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K PiArDQo+ICtDb3B5cmlnaHQgKGMpIDIwMjYgTlZJRElBIENPUlBPUkFUSU9OICYgQUZGSUxJQVRF Uy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKw0KPiArVGhlIG5vdmEtY29yZSBkcml2ZXIgbG9h ZHMgR1NQLVJNIGFuZCBpdHMgYm9vdCBpbWFnZXMgZnJvbSBmaWxlcyB0aGF0DQo+ICtsaW51eC1m aXJtd2FyZSBpbnN0YWxscy4gV2hlbiBhIGZpcm13YXJlIGNoYW5nZSBicmVha3MgY29tcGF0aWJp bGl0eSB3aXRoDQo+ICt0aGUgZHJpdmVyLCB0aGUgZmlsZXMgaXQgYWZmZWN0cyBhcmUgcmVuYW1l ZCBpbnN0ZWFkIG9mIHJlcGxhY2VkLg0KPiArDQo+ICtTdWNoIGEgYnJlYWsgaXMgYSBsYXN0IHJl c29ydCwgZm9yIGEgZml4IHRoYXQgY2Fubm90IGJlIG1hZGUgd2l0aGluIHRoZQ0KPiArZXhpc3Rp bmcgQUJJIGFuZCBjYW5ub3Qgd2FpdC4gSW4gcHJhY3RpY2UgdGhhdCBtZWFucyBhIGNyaXRpY2Fs IHNlY3VyaXR5IGZpeC4NCj4gKw0KPiArQ29tcGF0aWJpbGl0eQ0KPiArPT09PT09PT09PT09PQ0K PiArDQo+ICtUaGUga2VybmVsIGFuZCBsaW51eC1maXJtd2FyZSBhcmUgZGlzdHJpYnV0ZWQgYW5k IHVwZGF0ZWQgc2VwYXJhdGVseSwgc28NCj4gK3RoZSBpbnN0YWxsZWQga2VybmVsIGFuZCB0aGUg aW5zdGFsbGVkIGZpcm13YXJlIGNhbiBiZSBmcm9tIGRpZmZlcmVudA0KPiArcmVsZWFzZXMuIEV2 ZXJ5IHN1Y2ggcGFpciBoYXMgdG8gYnJpbmcgdXAgdGhlIEdQVS4gQW4gb2xkZXIga2VybmVsIGtl ZXBzDQo+ICtyZXF1ZXN0aW5nIHRoZSBmaWxlbmFtZXMgaXQgd2FzIGJ1aWx0IGZvci4gQSBuZXdl ciBrZXJuZWwgbG9hZHMgd2hhdGV2ZXIgaXMNCj4gK2luc3RhbGxlZCwgaW5jbHVkaW5nIGEgZmly bXdhcmUgcmVsZWFzZSBvbGRlciB0aGFuIGl0c2VsZi4NCj4gKw0KPiArQSBjb21iaW5hdGlvbiB0 aGF0IHVzZXMgYW4gb2xkZXIga2VybmVsIG9yIG9sZGVyIGZpcm13YXJlIHByb3ZpZGVzIG9ubHkg dGhlDQo+ICtmZWF0dXJlcyBhbmQgZml4ZXMgdGhhdCBib3RoIHN1cHBvcnQsIHNlY3VyaXR5IGZp eGVzIGluY2x1ZGVkLiBBIGZpeCB0aGF0DQo+ICtyZXF1aXJlcyBhIGZpcm13YXJlIEFCSSBjaGFu Z2UgdGFrZXMgZWZmZWN0IG9ubHkgYWZ0ZXIgYm90aCB0aGUga2VybmVsIGFuZA0KPiArdGhlIGZp cm13YXJlIGFyZSB1cGRhdGVkLg0KPiArDQo+ICs6ZG9jOmAuLi8uLi8uLi9kcml2ZXItYXBpL2Zp cm13YXJlL2Zpcm13YXJlLXVzYWdlLWd1aWRlbGluZXNgIHN0YXRlcyB0aGUNCj4gK2tlcm5lbC13 aWRlIHJ1bGVzIGZvciBmaXJtd2FyZSBkaXN0cmlidXRlZCB0aHJvdWdoIGxpbnV4LWZpcm13YXJl Og0KPiArDQo+ICstIEEgbmV3ZXIgbWFqb3IgdmVyc2lvbiBvZiBhIGZpbGUgc3RheXMgY29tcGF0 aWJsZSB3aXRoIGV2ZXJ5IGtlcm5lbCB0aGF0DQo+ICvCoCBsb2FkcyB0aGF0IG1ham9yIHZlcnNp b24uDQo+ICstIEEgbmV3IG1ham9yIHZlcnNpb24gcmVxdWlyZXMgdGhlIGtlcm5lbCB0byBrZWVw IGxvYWRpbmcgdGhlIG9sZGVyIG1ham9yDQo+ICvCoCB2ZXJzaW9ucy4NCj4gKw0KPiArVGhlIGVw b2NoIG51bWJlciBkZWZpbmVkIGJlbG93IGlzIHRoYXQgbWFqb3IgdmVyc2lvbiwgYW5kIGFkZGlu ZyBhbiBlcG9jaA0KPiArZGVwcmVjYXRlcyBubyBleGlzdGluZyBmaWxlLg0KPiArDQo+ICtEaXJl Y3RvcnkgbGF5b3V0DQo+ICs9PT09PT09PT09PT09PT09DQo+ICsNCj4gK1RoZSBkcml2ZXIgcmVx dWVzdHMgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIGZpcm13YXJlIHNlYXJjaCBwYXRoLCBhbmQNCj4g K2xpbnV4LWZpcm13YXJlIGluc3RhbGxzIHRoZSBjb3JyZXNwb25kaW5nIGZpbGVzIGJlbG93IGBg L2xpYi9maXJtd2FyZWBgLg0KPiArRWFjaCBjaGlwIGhhcyBhIGRpcmVjdG9yeSBuYW1lZCB3aXRo IHRoZSBsb3dlcmNhc2UgY2hpcCBuYW1lLCBhbmQgdGhlIGltYWdlcw0KPiArYXJlIGluIGEgYGBn c3BgYCBzdWJkaXJlY3Rvcnk6Og0KPiArDQo+ICvCoMKgwqAgL2xpYi9maXJtd2FyZS9udmlkaWEv Z2IyMDIvZ3NwLw0KPiArwqDCoMKgwqDCoMKgwqAgZm1jLnRsdg0KPiArwqDCoMKgwqDCoMKgwqAg Z3NwLmJpbiAtPiAuLi8uLi9nYTEwMi9nc3AvZ3NwLmJpbg0KPiArwqDCoMKgwqDCoMKgwqAgZ3Nw X2Jvb3Rsb2FkZXIudGx2DQo+ICvCoMKgwqDCoMKgwqDCoCBnc3AudGx2DQo+ICvCoMKgwqDCoMKg wqDCoCB1Y29kZXMuYmluDQo+ICvCoMKgwqDCoMKgwqDCoCB1Y29kZXMudGx2DQo+ICsNCj4gK0Zv ciBhIGNoaXAgdGhhdCB1c2VzIGFub3RoZXIgY2hpcCdzIGltYWdlLCBsaW51eC1maXJtd2FyZSBp bnN0YWxscyBhIGxpbmsgdG8NCj4gK3RoYXQgaW1hZ2UgaW5zdGVhZCBvZiBhbm90aGVyIGNvcHku IFRoZSBsaW5rIGNhbiBiZSB0aGUgY2hpcCBkaXJlY3RvcnkNCj4gKyhgYGdiMjAzIC0+IGdiMjAy YGApLCB0aGUgYGBnc3BgYCBzdWJkaXJlY3RvcnkNCj4gKyhgYGdhMTAzL2dzcCAtPiAuLi9nYTEw Mi9nc3BgYCksIG9yIGEgc2luZ2xlIGZpbGUuIFRoZSBgYGdzcC5iaW5gYCBwYXlsb2FkDQo+ICth Ym92ZSBpcyBhIGxpbmssIHNvIG9uZSBjb3B5IG9mIHRoZSBHU1AtUk0gaW1hZ2Ugc2VydmVzIGNo aXBzIHRoYXQgZWFjaCBoYXZlDQo+ICt0aGVpciBvd24gYGBnc3AudGx2YGAuDQo+ICsNCj4gK1Ro ZSBkcml2ZXIgcmVxdWVzdHMgdGhlc2UgVExWIGZpbGVzIGZvciBldmVyeSBjaGlwOg0KPiArDQo+ ICstIGBgZ3NwLnRsdmBgLCB0aGUgR1NQLVJNIGltYWdlDQo+ICstIGBgZ3NwX2Jvb3Rsb2FkZXIu dGx2YGAsIHRoZSBib290bG9hZGVyIHRoYXQgbG9hZHMgR1NQLVJNDQo+ICstIGBgdWNvZGVzLnRs dmBgLCB0aGUgbWljcm9jb2RlIGltYWdlcyBHU1AtUk0gcmVhZHMgYXQgc3RhcnR1cA0KPiArDQo+ ICtUaGUgcmVtYWluaW5nIFRMViBmaWxlcyBkZXBlbmQgb24gaG93IHRoZSBjaGlwIGJvb3RzIHRo ZSBHU1A6DQo+ICsNCj4gKy0gVHVyaW5nIGFuZCBHQTEwMDogYGBib290ZXJfbG9hZC50bHZgYCwg YGBib290ZXJfdW5sb2FkLnRsdmBgLA0KPiArwqAgYGBnZW5fYm9vdGxvYWRlci50bHZgYA0KPiAr LSBBbXBlcmUgb3RoZXIgdGhhbiBHQTEwMCwgYW5kIEFkYTogYGBib290ZXJfbG9hZC50bHZgYCwN Cj4gK8KgIGBgYm9vdGVyX3VubG9hZC50bHZgYA0KPiArLSBIb3BwZXIgYW5kIGxhdGVyOiBgYGZt Yy50bHZgYA0KPiArDQo+ICtBIFRMViBmaWxlIGVpdGhlciBzdG9yZXMgaXRzIGltYWdlIGluIGEg YGBCTE9CYGAgdGFnIG9yIG5hbWVzIGEgY29tcGFuaW9uDQo+ICtmaWxlIHRoYXQgc3RvcmVzIHRo ZSBpbWFnZS4gVGhlIGBgRklMRWBgIHRhZyBnaXZlcyB0aGUgY29tcGFuaW9uJ3MgbmFtZSBhbmQN Cj4gK3RoZSBgYFNJWkVgYCB0YWcgZ2l2ZXMgaXRzIHNpemUuIEEgY29tcGFuaW9uIGZpbGUgaXMg aW4gdGhlIHNhbWUgZGlyZWN0b3J5DQo+ICthcyB0aGUgVExWIGZpbGUgdGhhdCBuYW1lcyBpdC4g YGBnc3AuYmluYGAgYW5kIGBgdWNvZGVzLmJpbmBgIGFyZSBjb21wYW5pb24NCj4gK2ZpbGVzLiBT ZWUgOmRvYzpgdGx2YCBmb3IgdGhlIGZvcm1hdC4NCg0KSSdtIG5vdCBzdXJlIHdlIHdhbnQgdG8g aW5jbHVkZSB0aGlzIGluZm9ybWF0aW9uIGluIHRoaXMgZG9jdW1lbnQsIGJlY2F1c2UgaXQgbWVh bnMgdGhhdCBldmVyeQ0KdGltZSB3ZSBhZGQvcmVtb3ZlIGZpcm13YXJlIGltYWdlIGZpbGVuYW1l cyAoZS5nLiBmb3Igc29tZSBmdXR1cmUgR1BVKSwgd2UgaGF2ZSB0byB1cGRhdGUgdGhpcw0KZG9j dW1lbnQuICBUaGlzIGlzIHNvbWV0aGluZyB0aGF0IGJlbG9uZ3MgaW4gdGxzLnJzdCwgaWYgaXQg aXNuJ3QgdGhlcmUgYWxyZWFkeS4NCg0KPiArDQo+ICtQbGFubmVkIG1vdmUgdW5kZXIgbnZpZGlh L2dwdS8NCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArDQo+ICtub3V2ZWF1 IHJlcXVlc3RzIGl0cyBvd24gR1NQLVJNIGltYWdlcyBmcm9tIHRoZSBzYW1lIHBlci1jaGlwIGRp cmVjdG9yeSwNCj4gK3VuZGVyIGJhc2VuYW1lcyB0aGF0IGNhcnJ5IHRoZSBHU1AtUk0gcmVsZWFz ZToNCj4gK2BgbnZpZGlhL2diMjAyL2dzcC9nc3AtNTcwLjE0NC5iaW5gYCwgYGBib290bG9hZGVy LTU3MC4xNDQuYmluYGAsIGFuZA0KPiArYGBmbWMtNTcwLjE0NC5iaW5gYC4gTm8gZmlsZW5hbWUg Y29sbGlkZXMgdG9kYXksIGJlY2F1c2Ugbm92YS1jb3JlJ3MNCj4gK2Jhc2VuYW1lcyBkaWZmZXIg ZnJvbSBub3V2ZWF1J3MuIEJvdGggc2V0cyBhcmUgaW5zdGFsbGVkIGluIG9uZSBkaXJlY3Rvcnks DQo+ICthbmQgYm90aCBraW5kcyBvZiBzdWZmaXggYXJlIGEgZGFzaCBhbmQgYSBudW1iZXIgYmVm b3JlIHRoZSBleHRlbnNpb246DQo+ICtgYC01NzAuMTQ0YGAgaXMgYSBub3V2ZWF1IHJlbGVhc2Us IGFuZCBgYC0xYGAgaXMgYSBub3ZhLWNvcmUgZXBvY2guDQo+ICsNCj4gK1RoZSBwbGFubmVkIGxh eW91dCBpbnNlcnRzIGEgYGBncHVgYCBjb21wb25lbnQsIHNvIG5vdmEtY29yZSByZXF1ZXN0cw0K PiArYGBudmlkaWEvZ3B1LzxjaGlwPi9nc3AvYGAgYW5kIG5vdXZlYXUga2VlcHMgcmVxdWVzdGlu Zw0KPiArYGBudmlkaWEvPGNoaXA+L2dzcC9gYC4gbm91dmVhdSBuZWVkcyBubyBjaGFuZ2UuIFVu ZGVyIHRoZSBwbGFubmVkIGxheW91dCwNCj4gK25vdmEtY29yZSByZXF1ZXN0cyBwYXRocyBhdCB0 aGUgbmV3IGxvY2F0aW9uLCBkZXJpdmVzIGNvbXBhbmlvbiBwYXRocyB0aGVyZQ0KPiArZnJvbSBh IGBgRklMRWBgIHRhZywgYW5kIG5hbWVzIHRoZSBuZXcgcGF0aHMgaW4gaXRzIGBgTU9EVUxFX0ZJ Uk1XQVJFYGANCj4gK2VudHJpZXMuIGxpbnV4LWZpcm13YXJlIGluc3RhbGxzIHRoZSBub3ZhIHRy ZWUgYXQgdGhhdCBsb2NhdGlvbi4gRXZlcnl0aGluZw0KPiArZWxzZSBpbiB0aGlzIGRvY3VtZW50 IGhvbGRzIHVuZGVyIGVpdGhlciBsYXlvdXQuDQoNCkknbSBhc3N1bWluZyB0aGF0IHdlJ3JlIG1v dmluZyB0byB0aGUgbmV3IGxheW91dCBiZWZvcmUgd2Ugc3VibWl0IGFueXRoaW5nIHRvIGxpbnV4 LWZpcm13YXJlPyANCkJlY2F1c2Ugd2UgZGVmaW5pdGVseSBkbyBub3Qgd2FudCBub3ZhLWNvcmUg dG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IGxheW91dCBzaW11bHRhbmVvdXNseS4NCg0KPiAr DQo+ICtBQkkgYnJlYWtzDQo+ICs9PT09PT09PT09DQo+ICsNCj4gK01vc3QgZmlybXdhcmUgcmVs ZWFzZXMga2VlcCB0aGUgaW50ZXJmYWNlIHRoZSBkcml2ZXIgYWxyZWFkeSBpbXBsZW1lbnRzLg0K PiArU3VjaCBhIHJlbGVhc2UgcmVwbGFjZXMgYW4gZXBvY2gncyBmaWxlcyBhcyBhIGNvbXBsZXRl IHNldCB1bmRlciB0aGUgc2FtZQ0KPiArbmFtZXMsIHN0YXlzIGNvbXBhdGlibGUgd2l0aCBldmVy eSBrZXJuZWwgdGhhdCBpbXBsZW1lbnRzIHRoYXQgZXBvY2gsIGFuZA0KPiArbmVlZHMgbm8ga2Vy bmVsIGNoYW5nZS4NCj4gKw0KPiArQSBmaXJtd2FyZSByZWxlYXNlIGJyZWFrcyB0aGUgQUJJIHdo ZW4gYSBkcml2ZXIgYnVpbHQgYWdhaW5zdCB0aGUgcHJldmlvdXMNCj4gK3JlbGVhc2UgY2Fubm90 IGJvb3QgdGhlIG5ldyBmaXJtd2FyZSwgb3IgY2Fubm90IHdvcmsgd2l0aCBpdCBhZnRlciBib290 LiBUaGUNCj4gK2ZvbGxvd2luZyBjaGFuZ2VzIGJyZWFrIHRoZSBBQkk6DQo+ICsNCj4gKy0gcmVt b3Zpbmcgb3IgcmVkZWZpbmluZyBhIFRMViB0YWcgdGhhdCB0aGUgZHJpdmVyIHJlcXVpcmVzDQoN CkknbSBub3Qgc3VyZSBhYm91dCB0aGlzIG9uZS4gIEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIGV2 ZXIgcmVkZWZpbmUgYSBUTFYgdGFnLiAgU29tZXRpbWVzIEkNCndvbmRlciBpZiA0IGNoYXJhY3Rl cnMgaXMgZW5vdWdoLCBidXQgd2Ugc2hvdWxkIGFsd2F5cyBiZSBhYmxlIHRvIGNyZWF0ZSBhIG5l dyB0YWcsIGFuZCBzaW1wbHkNCm1hcmsgaW4gdGhlIGRvY3VtZW50YXRpb24gdGhhdCBhIHNwZWNp ZmljIHRhZyBpcyBkZXByZWNhdGVkLg0KDQpBbHNvLCBHU1AtUk0gZG9lcyBub3QgZGVmaW5lIGFu eSBUTFYgdGFncywgc28gaXQncyBhIGJpdCBtaXNsZWFkaW5nIHRvIHNheSB0aGF0IHdlIG5lZWQg dG8NCmNoYW5nZSBhbnkgVExWIHRhZ3MgdG8gZGVhbCB3aXRoIGEgR1NQLVJNIEFCSS4gIFRoZSBU TFZzIGFyZSBkZWZpbmVkIGJ5IHRoZSBkcml2ZXIsIGFuZCBpdCdzIHRoZQ0KZHJpdmVyJ3MgcmVz cG9uc2liaWxpdHkgdG8gdXNlIHRoZSBkYXRhIGluIHRoZSBUTFYgdG8gY3JlYXRlIHdoYXRldmVy IHZhbHVlcyB0aGF0IEdTUC1STSBuZWVkcy4NCkluIHNvbWUgY2FzZXMsIHRoZXJlIGlzIGEgMTox IHJlbGF0aW9uc2hpcCAoZS5nLiB0aGUgb2Zmc2V0cyB1c2VkIGZvciB0aGUgYm9vdGxvYWRlcnMp LCBidXQgdGhhdA0KaXMgbm90IHRlY2huaWNhbGx5IGRlZmluZWQgYnkgdGhlIGZpcm13YXJlLg0K DQo+ICstIGNoYW5naW5nIHRoZSBjb21tYW5kIGFuZCBtZXNzYWdlIGludGVyZmFjZSBiZXR3ZWVu IHRoZSBkcml2ZXIgYW5kIEdTUC1STQ0KPiArLSBjaGFuZ2luZyB0aGUgYm9vdCBwYXJhbWV0ZXIg b3Igc3RhcnR1cCBhcmd1bWVudCBzdHJ1Y3R1cmVzDQo+ICstIGNoYW5naW5nIHRoZSBmcmFtZWJ1 ZmZlciByZWdpb25zIHRoYXQgdGhlIGZpcm13YXJlIGV4cGVjdHMgdG8gb3duDQo+ICsNCj4gK0Fk ZGluZyBhIFRMViB0YWcgZG9lcyBub3QgYnJlYWsgdGhlIEFCSS4gVGhlIHBhcnNlciByZWFkcyB0 aGUgdGFncyBpdCBuZWVkcw0KPiArYW5kIGlnbm9yZXMgdGhlIHJlc3QuDQoNCldlbGwsIHRoaXMg c2VudGVuY2UgY29uZmxpY3RzIHdpdGggcG9pbnQgIzEuICBBbHNvLCB0aGUgcmVzdCBvZiB0aGlz IGxpc3QgaXMgd2VpcmRseSB2YWd1ZSB0bw0KbWUuICBBZGRpbmcgYSBUTFYgdGFnIG1pZ2h0IGJy ZWFrIHRoZSBBQkkgYmVjYXVzZSB0aGUgbmV3IEFCSSBtaWdodCBuZWVkIG5ldyB2YWx1ZXMgdGhh dCBleGlzdA0Kb25seSBpbiB0aGUgbmV3IHRhZ3MuDQoNCg0KPiArDQo+ICtSZW5hbWluZyBmb3Ig YSBuZXcgQUJJIGVwb2NoDQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ICsNCj4g K1RoZSBmaWxlbmFtZXMgd2l0aG91dCBhIG51bWVyaWMgc3VmZml4IGFyZSBlcG9jaCAwLCB0aGUg b25seSBlcG9jaCB0aGF0DQo+ICtleGlzdHMgdG9kYXkuIEEgbmV3IGVwb2NoIHJlbmFtZXMgZWFj aCBmaWxlIGJ5IGluc2VydGluZyBhIGRhc2ggYW5kIHRoZSBlcG9jaA0KPiArbnVtYmVyIGJlZm9y ZSB0aGUgZXh0ZW5zaW9uIG9mIGl0cyBlcG9jaCAwIG5hbWUuIFRoZSBudW1iZXJzIGNvdW50IHVw IHdpdGhvdXQNCj4gK2xpbWl0OjoNCj4gKw0KPiArwqDCoMKgIC9saWIvZmlybXdhcmUvbnZpZGlh L2diMjAyL2dzcC8NCj4gK8KgwqDCoMKgwqDCoMKgIGZtYy0xLnRsdg0KPiArwqDCoMKgwqDCoMKg wqAgZm1jLnRsdg0KPiArwqDCoMKgwqDCoMKgwqAgZ3NwLTEuYmluDQo+ICvCoMKgwqDCoMKgwqDC oCBnc3AtMS50bHYNCj4gK8KgwqDCoMKgwqDCoMKgIGdzcC5iaW4gLT4gLi4vLi4vZ2ExMDIvZ3Nw L2dzcC5iaW4NCj4gK8KgwqDCoMKgwqDCoMKgIGdzcF9ib290bG9hZGVyLTEudGx2DQo+ICvCoMKg wqDCoMKgwqDCoCBnc3BfYm9vdGxvYWRlci50bHYNCj4gK8KgwqDCoMKgwqDCoMKgIGdzcC50bHYN Cj4gK8KgwqDCoMKgwqDCoMKgIHVjb2Rlcy0xLmJpbg0KPiArwqDCoMKgwqDCoMKgwqAgdWNvZGVz LTEudGx2DQo+ICvCoMKgwqDCoMKgwqDCoCB1Y29kZXMuYmluDQo+ICvCoMKgwqDCoMKgwqDCoCB1 Y29kZXMudGx2DQo+ICsNCj4gK0FkZGluZyBhbiBlcG9jaCBuZWl0aGVyIG1vZGlmaWVzIG5vciBy ZW1vdmVzIGFueSBmaWxlIGZyb20gYSBwcmlvciBlcG9jaCwgc28NCj4gK2V2ZXJ5IG9sZGVyIGVw b2NoIHN0YXlzIGF2YWlsYWJsZSB1bmRlciBpdHMgZXhpc3RpbmcgbmFtZXMgYW5kIGEga2VybmVs IHRoYXQNCj4gK3ByZWRhdGVzIGVwb2NoIDEgY29udGludWVzIHRvIGJyaW5nIHVwIHRoZSBHUFUu DQo+ICsNCj4gK0V2ZXJ5IGZpbGUgZm9yIGFuIGFmZmVjdGVkIGNoaXAgaXMgcmVidWlsdCBhdCB0 aGUgbmV3IGVwb2NoLCBpbmNsdWRpbmcgYSBmaWxlDQo+ICt3aG9zZSBjb250ZW50cyBkaWQgbm90 IGNoYW5nZS4gVGhlIGltYWdlcyBhcmUgaW50ZXJkZXBlbmRlbnQgYW5kIHNvbWUgb2YgdGhlbQ0K PiArYXJlIHNpZ25lZCwgc28gbm8gZmlsZSBmcm9tIG9uZSBlcG9jaCBtYXkgYmUgdXNlZCB3aXRo IGEgZmlsZSBmcm9tIGFub3RoZXIuIEENCj4gK3N1ZmZpeGVkIG5hbWUgcmVzb2x2ZXMgb25seSB0 byBmaWxlcyBvZiBpdHMgb3duIGVwb2NoLCBzbyBgYGdzcC0xLmJpbmBgIG5ldmVyDQo+ICtsaW5r cyB0byBhbiB1bnN1ZmZpeGVkIGBgZ3NwLmJpbmBgLiBBIFRMViBuYW1lcyBhIGNvbXBhbmlvbiBm aWxlIGZyb20gdGhlDQo+ICtzYW1lIGVwb2NoLCBhbmQgdGhlIGRyaXZlciByZWFkcyB0aGF0IGZp bGVuYW1lIGZyb20gdGhlIGBgRklMRWBgIHRhZyBpbnN0ZWFkDQo+ICtvZiBjb25zdHJ1Y3Rpbmcg aXQuDQo+ICsNCj4gK0EgYGBGSUxFYGAgdGFnIG5hbWVzIHRoZSBjb252ZW50aW9uYWwgY29tcGFu aW9uIGJhc2VuYW1lIGZvciBpdHMgZXBvY2gsDQo+ICttZWFuaW5nIGBgZ3NwLTEuYmluYGAgZm9y IGBgZ3NwLTEudGx2YGAgYW5kIGBgdWNvZGVzLTEuYmluYGAgZm9yDQo+ICtgYHVjb2Rlcy0xLnRs dmBgLiBUaGUgZHJpdmVyIHRha2VzIHRoZSBjb21wYW5pb24ncyBuYW1lIGZyb20gdGhlIHRhZywg YnV0IHRoZQ0KPiArYGBNT0RVTEVfRklSTVdBUkVgYCBlbnRyaWVzIG5hbWUgdGhlIGNvbnZlbnRp b25hbCBiYXNlbmFtZXMsIGJlY2F1c2UgdGhleSBhcmUNCj4gK2ZpeGVkIHdoZW4gdGhlIGRyaXZl ciBpcyBidWlsdCBhbmQgY2Fubm90IG5hbWUgYSBmaWxlIHRoYXQgYSB0YWcgY2hvb3NlcyBhdA0K PiArcnVuIHRpbWUuDQoNClRoaXMgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4gIElmIHRoZSBkcml2 ZXIgc3VwcG9ydHMgZXBvY2ggMSwgdGhlbiBpdCBzaG91bGQgYmUgYWJsZSB0byBzcGVjaWZ5DQp0 aGUgZmlybXdhcmUgaW1hZ2VzIGZvciBlcG9jaCAxIGluIE1PRFVMRV9GSVJNV0FSRS4NCg0KDQo+ ICBBIGNvbXBhbmlvbiB1bmRlciBhbnkgb3RoZXIgbmFtZSBpcyBtaXNzaW5nIGZyb20gdGhlIG1v ZHVsZQ0KPiArbWV0YWRhdGEsIGFuZCBhIGRyaXZlciBydW5uaW5nIGZyb20gYW4gaW5pdHJhbWZz IGJ1aWx0IGZyb20gdGhhdCBtZXRhZGF0YQ0KPiArY2Fubm90IGxvYWQgaXQuDQoNCkkgZG9uJ3Qg dW5kZXJzdGFuZCB0aGlzIHNlbnRlbmNlIGVpdGhlci4NCg0KPiArDQo+ICtXaGF0IG5vdmEtY29y ZSByZXF1ZXN0cw0KPiArPT09PT09PT09PT09PT09PT09PT09PT0NCj4gKw0KPiArT25seSBlcG9j aCAwIGV4aXN0cyBzbyBmYXIsIHNvIG5vdmEtY29yZSByZXF1ZXN0cyB0aGUgdW5zdWZmaXhlZCBm aWxlbmFtZXMNCj4gK2FuZCBoYXMgbm8gbG93ZXIgZXBvY2ggdG8gZmFsbCBiYWNrIHRvLiBUaGUg cnVsZSBiZWxvdyB0YWtlcyBlZmZlY3Qgb25jZQ0KPiArdGhlIGRyaXZlciBpbXBsZW1lbnRzIGEg aGlnaGVyIGVwb2NoLg0KPiArDQo+ICtUaGUgZHJpdmVyIHJlcXVlc3RzIHRoZSBoaWdoZXN0IGVw b2NoIGl0IGltcGxlbWVudHMuIElmIHRoYXQgZXBvY2ggaXMgbm90DQo+ICtpbnN0YWxsZWQsIGl0 IHJlcXVlc3RzIHN1Y2Nlc3NpdmVseSBsb3dlciBlcG9jaHMgZG93biB0byBlcG9jaCAwLCBhbmQg dXNlcw0KPiArdGhlIGZpcnN0IGluc3RhbGxlZCBlcG9jaC4NCg0KQXJlIHdlIHN1cmUgd2Ugd2Fu dCB0byBkbyB0aGlzPyAgV2hhdCBpZiB0aGUgcmVhc29uIGZvciB0aGUgQUJJIGJyZWFrYWdlIGlz IGEgc2VjdXJpdHkgaG9sZSB0aGF0DQp3ZSBjYW4ndCBmaXggYW55IG90aGVyIHdheT8gIFRoZW4g ZG8gd2UgcmVhbGx5IHdhbnQgdG8gY29udGludWUgdG8gc3VwcG9ydCB0aGUgb2xkZXIsIGluc2Vj dXJlDQplcG9jaD8NCg0KPiAgQSBrZXJuZWwgdGhhdCBpbXBsZW1lbnRzIGVwb2NoIDEgYm9vdHMg YSBHUFUNCj4gK3dob3NlIGZpcm13YXJlIGlzIHN0aWxsIGF0IGVwb2NoIDAuIFJlZnVzaW5nIHRv IGxvYWQgZXBvY2ggMCB3b3VsZCBub3QNCj4gK2luc3RhbGwgZXBvY2ggMSBmaXJtd2FyZSwgYW5k IHRoZSBHUFUgd291bGQgbm90IGNvbWUgdXAuDQoNClRoaXMgaXMgZ2liYmVyaXNoIHRvIG1lLg0K DQo+ICsNCj4gK0Zpcm13YXJlIGZyb20gYSBuZXdlciBlcG9jaCBoYXMgbm8gZWZmZWN0IG9uIG5v dmEtY29yZSwgd2hpY2ggbmV2ZXIgcmVxdWVzdHMNCj4gK2FuIGVwb2NoIGl0IGRvZXMgbm90IGlt cGxlbWVudC4gVGhlIGRyaXZlciBkb2VzIG5vdCBzY2FuIHRoZSBmaXJtd2FyZQ0KPiArZGlyZWN0 b3J5LCBhbmQgdGhlIHNldCBvZiBlcG9jaHMgaXQgY2FuIG5hbWUgaXMgZml4ZWQgd2hlbiBpdCBp cyBidWlsdC4NCj4gKw0KPiArVGhlIGRyaXZlciBmaW5kcyB0aGUgZXBvY2ggYnkgcmVxdWVzdGlu ZyB0aGUgR1NQLVJNIFRMViB0aGF0IGV2ZXJ5IGNoaXAgaGFzOg0KPiArYGBnc3AudGx2YGAgYXQg ZXBvY2ggMCwgYGBnc3AtMS50bHZgYCBhdCBlcG9jaCAxLCBhbmQgb25lIG5hbWUgcGVyIGVwb2No DQo+ICthYm92ZSB0aGF0LiBUaGUgZHJpdmVyIGZhbGxzIGJhY2sgdG8gdGhlIG5leHQgbG93ZXIg ZXBvY2ggb25seSB3aGVuIHRoYXQNCj4gK3JlcXVlc3QgcmV0dXJucyBgYC1FTk9FTlRgYC4gVGhl c2UgcmVxdWVzdHMgdXNlIGBgZmlybXdhcmVfcmVxdWVzdF9ub3dhcm5gYCwNCj4gK3NvIGEgc3lz dGVtIHdpdGggZXBvY2ggMCBmaXJtd2FyZSBpbnN0YWxsZWQgbG9ncyBub3RoaW5nIGZvciB0aGUg aGlnaGVyDQo+ICtlcG9jaHMgdGhlIGRyaXZlciB0cmllZCBmaXJzdC4NCj4gKw0KPiArVGhlIGVw b2NoIG9mIHRoZSBHU1AtUk0gVExWIHNldHMgdGhlIGVwb2NoIG9mIGV2ZXJ5IHJlbWFpbmluZyBm aWxlIGZvciB0aGF0DQo+ICtjaGlwLCBhbmQgbm92YS1jb3JlIHJlcXVlc3RzIGVhY2ggb25lIGJ5 IGl0cyBleGFjdCBuYW1lIGluIHRoYXQgZXBvY2guDQoNClNlZWluZyBob3cgdGhlIEdTUC1STSBU TFYgaXMgdGhlIGxhc3Qgb25lIHRvIGdldCBsb2FkZWQsIEknbSBub3Qgc3VyZSB3ZSBjYW4gZG8g dGhpcy4gIEFsc28sDQp0aGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBzdGF0ZW1lbnRzIHRoYXQgdGhl IGRyaXZlciBkZWNpZGVzIHdoaWNoIGVwb2NoIGl0IHN1cHBvcnRzLg0KDQo+ICBBIGZpbGUNCj4g K3RoYXQgaXMgbWlzc2luZywgbWFsZm9ybWVkLCBvciByZWplY3RlZCBmYWlscyB0aGUgcHJvYmUg aW5zdGVhZCBvZiBmYWxsaW5nDQo+ICtiYWNrIHRvIGEgbG93ZXIgZXBvY2guIEZvciBhIG1pc3Np bmcgZmlsZSwgYGByZXF1ZXN0X2Zpcm13YXJlYGAgbG9ncyB0aGUgcGF0aA0KPiAraXQgY291bGQg bm90IG9wZW46Og0KPiArDQo+ICvCoMKgwqAgRGlyZWN0IGZpcm13YXJlIGxvYWQgZm9yIG52aWRp YS9nYjIwMi9nc3AvZm1jLTEudGx2IGZhaWxlZCB3aXRoIGVycm9yIC0yDQo+ICsNCj4gK1RoZSBk cml2ZXIgbG9ncyB0aGUgZXBvY2ggaXQgbG9hZGVkLiBXaGVuIHRoYXQgZXBvY2ggaXMgbG93ZXIg dGhhbiB0aGUNCj4gK2hpZ2hlc3Qgb25lIHRoZSBkcml2ZXIgaW1wbGVtZW50cywgdGhlIG1lc3Nh Z2UgaXMgYSB3YXJuaW5nOiB0aGUgaW5zdGFsbGVkDQo+ICtmaXJtd2FyZSBsYWNrcyB0aGUgZml4 IHRoYXQgZWFjaCBuZXdlciBlcG9jaCB3YXMgY3JlYXRlZCBmb3IuDQoNClRoaXMgYnJpbmdzIHVw IGEgcG9pbnQgdGhhdCBJIGRvbid0IHRoaW5rIGlzIHByb3Blcmx5IGNvdmVyZWQgaW4gdGhpcyBk b2N1bWVudDogaG93IGRvZXMgbm92YS0NCmNvcmUgZGV0ZXJtaW5lIHdoaWNoIGVwb2NoIGlzIGF2 YWlsYWJsZSBvbiBkaXNrPyAgV2hhdCBoYXBwZW5zIGlmIG5vdmEtY29yZSBzdXBwb3J0cyBlcG9j aCAwIGFuZA0KMSwgZXBvY2ggMSBpcyBvbmx5IHBhcnRpYWxseSBhdmFpbGFibGUgb24gZGlzaywg YnV0IGVwb2NoIDAgaXMgZnVsbHkgYXZhaWxhYmxlPyAgVG9kYXksIGlmIGFueQ0KZXBvY2ggMCBm aXJtd2FyZSBpcyBtaXNzaW5nIG9yIG1hbGZvcm1lZCwgdGhlIGVudGlyZSBib290IGlzIGFib3J0 ZWQuICBXZSB3b3VsZCBuZWVkIHZldCBhbGwNCmltYWdlcyBmb3IgYSBnaXZlbiBlcG9jaCBiZWZv cmUgdXNpbmcgYW55IG9mIHRoZW0sIGFuZCB0aGVyZSdzIG5vIGluZnJhc3RydWN0dXJlIGZvciB0 aGF0Lg0KDQpXaGF0IHdlIHdvdWxkIG5lZWQgdG8gZG8sIGJlZm9yZSBsb2FkaW5nIGFueSBmaXJt d2FyZSBpbWFnZXMsIGlzIGNyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucw0KYSBsaXN0IG9m IGVwb2NocyBvbiBkaXNrLCBhbmQgdGhlbiB0aGUgZHJpdmVyIGhhcyB0byBmaWd1cmUgb3V0IHdo aWNoIG9uZSB0byBhY3R1YWxseSB1c2UuICBXaGF0DQpoYXBwZW5zIGlmIG9ubHkgZXBvY2hzIDIg YW5kIDAgYXJlIG9uIGRpc2s/DQoNCkkgZ3Vlc3MgdGhhdCdzIHdoYXQgdGhlIHByZXZpb3VzIHN0 YXRlbWVudCAiVGhlIGVwb2NoIG9mIHRoZSBHU1AtUk0gVExWIHNldHMgdGhlIGVwb2NoIG9mIGV2 ZXJ5DQpyZW1haW5pbmcgZmlsZSIgd2FzIHRyeWluZyB0byBzYXkuICBCdXQgSSB0aGluayB0aGlz IG5lZWRzIHRvIGJlIHNwZWxsZWQgb3V0IG1vcmUgY2xlYXJseS4gIFdlDQpuZWVkIGEgZnVuY3Rp b24gbGlrZSB0aGlzOg0KDQpmbiBuZXh0X3N1cHBvcnRlZF9lcG9jaChzdGFydGluZ19lcG9jaDog dTMyKSAtPiB1MzINCnsNCgkvLyBmb3IgbG9vcCB0aGF0IGNvdW50cyBmcm9tIHN0YXJ0aW5nX2Vw b2NoIGRvd24gdG8gMCwgYW5kIHJldHVybnMgdGhlIGluZGV4IHdoaWNoZXZlcg0KbmV4dCBnc3At eHh4LnRsdiBleGlzdHMuDQp9DQoNCj4gK1RoZSBgYE1PRFVMRV9GSVJNV0FSRWBgIGVudHJpZXMg bmFtZSBldmVyeSBmaWxlIG9mIGV2ZXJ5IGVwb2NoIG5vdmEtY29yZSBjYW4NCj4gK2xvYWQsIGJl Y2F1c2UgdGhlIGRyaXZlciBjYW5ub3Qga25vdyBhdCBidWlsZCB0aW1lIHdoaWNoIGVwb2NoIGl0 IHdpbGwgZmluZA0KPiAraW5zdGFsbGVkLg0KDQpPaywgdGhpcyBkZWZpbml0ZWx5IGNvbmZsaWN0 cyB3aXRoIHRoZSBwcmV2aW91cyBzdGF0ZW1lbnQgSSBwb2ludGVkIG91dC4NCg0KVGhpcyBpcyB3 aHkgSSBkb24ndCB1c2UgQUkgdG8gd3JpdGUgZG9jdW1lbnRhdGlvbi4NCg0KPiArDQo+ICtDb3N0 IG9mIGFuIGVwb2NoDQo+ICs9PT09PT09PT09PT09PT09DQo+ICsNCj4gK1RoZSBkcml2ZXIga2Vl cHMgYSBjb2RlIHBhdGggZm9yIGV2ZXJ5IGVwb2NoIGl0IGNhbiBsb2FkDQoNClRoaXMgaXMgYSB3 ZWlyZCB3YXkgb2Ygc2F5aW5nICJ0aGUgZHJpdmVyIG1haW50YWlucyBjb2RlIGZvciBlYWNoIGVw b2NoIGlzIHN1cHBvcnRzIi4NCg0KPiAsIGFuZCBlYWNoIG9mIHRob3NlDQo+ICtwYXRocyBoYXMg dG8gc3RheSB0ZXN0ZWQuIEEgbmV3IGVwb2NoIGFkZHMgYW4gQUJJIGltcGxlbWVudGF0aW9uIHRv IHRoZQ0KPiArZHJpdmVyLCBhIHNldCBvZiBmaXJtd2FyZSBmaWxlcyB0byBsaW51eC1maXJtd2Fy ZSwgYW5kIHRoZSBtYXRjaGluZyBtb2R1bGUNCj4gK2Zpcm13YXJlIG1ldGFkYXRhLg0KPiArDQo+ ICtsaW51eC1maXJtd2FyZSBrZWVwcyBldmVyeSBlcG9jaCdzIGZpbGVzIGJlY2F1c2Ugb2xkZXIg a2VybmVscyByZXF1ZXN0IHRoZW0sDQo+ICtzbyBlYWNoIHJldGFpbmVkIGVwb2NoIGluY3JlYXNl cyB0aGUgc2l6ZSBvZiB0aGUgaW5zdGFsbGVkIGZpcm13YXJlIHRyZWUuIFRoZQ0KPiArbGlua3Mg bGltaXQgd2hhdCBhbiBlcG9jaCBhZGRzOiBvbmUgY29weSBvZiBlYWNoIHBheWxvYWQgdGhhdCBj aGFuZ2VkLCBwbHVzIGENCj4gK1RMViBmb3IgZWFjaCBhZmZlY3RlZCBjaGlwLiBBIGRpc3RyaWJ1 dGlvbiB0aGF0IGluY2x1ZGVzIG5vdmEtY29yZSBpbiB0aGUNCj4gK2luaXRyYW1mcyBmb3IgZWFy bHktYm9vdCBkaXNwbGF5IGNvcGllcyB0aGUgZmlybXdhcmUgbmFtZWQgaW4gdGhlIG1vZHVsZQ0K PiArbWV0YWRhdGEsIHNvIGVhY2ggZXBvY2ggaW5jcmVhc2VzIHRoZSBpbml0cmFtZnMgc2l6ZS4N Cj4gKw0KPiArUmV0aXJpbmcgYW4gZXBvY2gNCj4gKz09PT09PT09PT09PT09PT09DQo+ICsNCj4g K0Ega2VybmVsIG5lZWRzIGFuIGVwb2NoIHdoZW4gaXQgaW1wbGVtZW50cyBubyBoaWdoZXIgb25l LCBiZWNhdXNlIGl0IGNhbiBsb2FkDQo+ICtub3RoaW5nIGVsc2UuIEV2ZXJ5IG5ld2VyIGtlcm5l bCBmaW5kcyBhIGhpZ2hlciBlcG9jaCBpbnN0YWxsZWQgYW5kIHVzZXMgaXQNCj4gK2luc3RlYWQu IEFuIGVwb2NoJ3MgZmlsZXMgc3RheSBpbiBsaW51eC1maXJtd2FyZSB3aGlsZSBhbnkgc3VwcG9y dGVkIGtlcm5lbA0KPiArc3RpbGwgbmVlZHMgdGhlbS4gVGhlIGVwb2NoIGJlY29tZXMgZWxpZ2li bGUgZm9yIHJlbW92YWwgb25jZSBldmVyeSBrZXJuZWwNCj4gK3RoYXQgbmVlZHMgaXQgaGFzIHJl YWNoZWQgZW5kIG9mIGxpZmUsIGFuZCB0aGUgbG9uZ2VzdC1zdXBwb3J0ZWQgZW50ZXJwcmlzZQ0K PiAra2VybmVscyBzZXQgdGhhdCBkYXRlLCBhIGRlY2FkZSBvciBtb3JlIGFmdGVyIHRoZSBlcG9j aCB3YXMgYWRkZWQuDQo+ICsNCj4gK1JlbW92YWwgaXMgcHJvcG9zZWQgb24gbm92YS1ncHVAbGlz dHMubGludXguZGV2LCBuYW1pbmcgdGhlIGVwb2NoLCB0aGUNCj4gK2tlcm5lbCByZWxlYXNlcyB0 aGF0IG5lZWQgaXQsIGFuZCB0aGUgZW5kLW9mLWxpZmUgZGF0ZSBvZiBlYWNoLiBUaGUgZHJpdmVy J3MNCj4gK2NvZGUgcGF0aCBmb3IgdGhhdCBlcG9jaCBnb2VzIGluIHRoZSBzYW1lIHByb3Bvc2Fs LCBiZWNhdXNlIGEgc3lzdGVtIHdob3NlDQo+ICtmaXJtd2FyZSB3YXMgbmV2ZXIgdXBkYXRlZCBp cyBzdGlsbCBhdCB0aGF0IGVwb2NoLg0KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUv bm92YS9pbmRleC5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9ub3ZhL2luZGV4LnJzdA0KPiBpbmRl eCAyYWZhNThlOGYwOGQuLjNmM2NkNGI5ZTk3ZSAxMDA2NDQNCj4gLS0tIGEvRG9jdW1lbnRhdGlv bi9ncHUvbm92YS9pbmRleC5yc3QNCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvbm92YS9pbmRl eC5yc3QNCj4gQEAgLTM0LDMgKzM0LDQgQEAgdkdQVSBtYW5hZ2VyIFZGSU8gZHJpdmVyIGFuZCB0 aGUgbm92YS1kcm0gZHJpdmVyLg0KPiDCoMKgwqAgY29yZS9md3NlYw0KPiDCoMKgwqAgY29yZS9m YWxjb24NCj4gwqDCoMKgIGNvcmUvdGx2DQo+ICvCoMKgIGNvcmUvZmlybXdhcmUNCg==