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 C3906A054D; Fri, 23 Sep 2022 18:11:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B0FEC406A2; Fri, 23 Sep 2022 18:11:22 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2066.outbound.protection.outlook.com [40.107.94.66]) by mails.dpdk.org (Postfix) with ESMTP id 0804E40156 for ; Fri, 23 Sep 2022 18:11:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ksZ0BHQ6yNZu5GsS1NCsbZuHOykusm4K7p+jrw3+/IuVjL7t2S1cvKvhBbDuuaf89KaT2xZdjD9gCXxIYrIVEWKvdmSgwaq6CoR6d4Dog4QquEbvqopLzkZFik0a6lhjJH/PQNC20kO7YHCmNFLJX1BN9sdJ5vQpl2l4RnY5HPi63i7dPYfVrxwbC06e2l7pZhLvLdGqKAtP/TuIKJsyOJ3aClsWbJb/3CebJOnZtnhXhOGVwvoNtfyVs0pNbt0v8hZocWSEtQFVn13cdxWzLDq1wvmBAS1TfWycLpVOLHtdEXGW7MaMjED9tymFcX51WiXZdz5anzLlyXyvYbuvQw== 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=6p3BAWYHQn+JL+5ffBeP/Ks1dLpP/1uVwXhVy+MQ3ps=; b=EIctbtEupubnB4EG2Ofp03oLEEyoNGXtENxB+bpkqGYrVYS6KOc4eYTJ7+HmWHrQR+SRfao7Xxqvw+CZHkPOpkMdAlTURRkSlLCAEcFQb6FpfRQCWqU9PcrzdAAKExveWf/cPsync+UeKgvQ81KJqqsWUnzzyKOgw4l+VjkIlR+T594epVeR497uuBfLUOiFyHOBPNlfvH/l989hCeqAMlScICBFcgmYhSbL/25GVKPph1dcnFP7yQr+SySBRwJqi29m/xUmsNbyYON5Z9xDdfkQDXhCVHatORARZm0q9I4raUIVDjQ9HSEzdkuq2HWRHzEAUG35ds3JfhudzzW9cA== 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=6p3BAWYHQn+JL+5ffBeP/Ks1dLpP/1uVwXhVy+MQ3ps=; b=N7ipit5lUn+zrtUe4enmWz02TfN+bdNVb6XvjU8Bhygyw1Oh/J3Z05sOqO3N/BqvZCcrDpeRGm4HIf7t/+d0V4IJPYi9PucYENMNFP4NO5skEehZDz6TcVzEGjnTYKs74fbqpcmSO4r78NmJiYID47jNEjufj3bUkNmJSnf4B1yE6wGd4mECHYe4d9PfEgZEDvoPdsDWfOIH1p3qFZsFL42kHnnmkJiaAENWKxa1QfJStsARwlPtLpm5w7DNtObyvGYrXkwujZpwjo78YhElotBKunxzvOGR/pqb6yw9fEAYUKE8mMNCh3G0DrgOONCtO4LL55TsrLXtuyywkLxTCw== Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by CY8PR12MB7292.namprd12.prod.outlook.com (2603:10b6:930:53::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.20; Fri, 23 Sep 2022 16:11:19 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::9847:f2a5:c4f:ec52]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::9847:f2a5:c4f:ec52%5]) with mapi id 15.20.5632.021; Fri, 23 Sep 2022 16:11:19 +0000 From: Ori Kam To: Andrew Rybchenko , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Ivan Malov CC: Rongwei Liu , Matan Azrad , Slava Ovsiienko , Aman Singh , Yuying Zhang , "dev@dpdk.org" , Raslan Darawsheh , "jerinj@marvell.com" , "ajit.khaparde@broadcom.com" Subject: RE: [PATCH v1] ethdev: add direction info when creating the transfer table Thread-Topic: [PATCH v1] ethdev: add direction info when creating the transfer table Thread-Index: AQHYwmNBlMPGSxWFbECmDbi50+NQZa3cDLOAgAFdCwCAAAzvgIAA9vIAgAAlywCAAC4vAIAAU/oAgACiMQCAAHInAIAAEUWAgAAkdICAAATEgIAHt1DAgAA9WICAAAyHcIAAIM+AgADwaXCAADbcAIAACcuAgAAGtYCAACjowIAABEJQgAE8sgCAACQsgIAAC+mAgAAghGCAAT32AIAAjIBA Date: Fri, 23 Sep 2022 16:11:19 +0000 Message-ID: References: <20220907024020.2474860-1-rongweil@nvidia.com> <4733483b-effe-1eac-cbf-d238e1ec2b8@oktetlabs.ru> <13527775.RDIVbhacDa@thomas> <98CBD80474FA8B44BF855DF32C47DC35D87342@smartserver.smartshare.dk> <36d3dc2d-e54f-8b2d-da5a-3d7ea66f34be@oktetlabs.ru> <864b7e01-463c-f657-7d40-0b3bf1b91f12@oktetlabs.ru> In-Reply-To: <864b7e01-463c-f657-7d40-0b3bf1b91f12@oktetlabs.ru> 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: MW2PR12MB4666:EE_|CY8PR12MB7292:EE_ x-ms-office365-filtering-correlation-id: d5014398-c70c-4040-d5de-08da9d7e401c 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; x-microsoft-antispam-message-info: z+7fLoriCeDP+5ZKWaavZxQ6GUtp/X7w5v33GvHa3GMKQun4GhM1iB7sJffi68x4Dd5XExuhTCS8v06sPTSCwrXD/tlEMr4QTDMuBIpdnzNt8HUbJBKV3/2bwliR7w3Wgtor9rs5LTsF6WkNJD2suj1kN82LqmMODImKFFa3QYKawqCeuE7ROVpwmB/7x8i3uEcdhSpHxIvwWXlGT15IJBL+aQUxel2tbcr5qwsoLEYb7PauVZ+YCSqg6GkoXxOAKPh4XLWBHDkQCTXJvhhDXdndc6yKfde1pwsjibk1mVsbJZczllqaq0fIJe4phWyUX7oTFfcuDBewOP3/jVF1LdkUfgiBsoMGCLzh5IwHCv4zbR3P1lekfmfz/FQ3pJma0afHnrQZp5zKVNlkHM9ItwUWCk0mkOFHYU9foGtfF575Fm/sOOhM6LtdVM7xFiaYTcLHmxzypVBVBkg2NBaqrZM78PjuOjdYf0Y89XY2d9B4wqdpPi0/PhCO6Yv74H33UsCbKHTO2q5qWvlBLf1SOnYXWMKTuBZid7gNjca4kA9vhTUvbc3C4EpNVWcTtU4qE3JO/rPp2hzfHZkMY5rWOD+vrTrP0HaYGj2w34PEKQRRZNptHFQB2Z9I7knjrkc9Md/lq/m6pZXkmVOk4ewcCUwK45dvqGqOKwKMB4NmVtwjDVdmcYkbDWLhXGiGuLwAgZ78CnUumR9ZGd5uRNRqviaMa14rJzrcOsLQGxtFafVfalS1AQJdu0OjqqKEjpBJGNuXpgmi8vtfH066xqDVGw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR12MB4666.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(366004)(136003)(346002)(376002)(396003)(39860400002)(451199015)(5660300002)(186003)(2906002)(38070700005)(30864003)(9686003)(26005)(55016003)(71200400001)(33656002)(8936002)(38100700002)(478600001)(66574015)(76116006)(66446008)(4326008)(66946007)(52536014)(8676002)(66476007)(64756008)(86362001)(66556008)(316002)(53546011)(41300700001)(110136005)(6506007)(7696005)(54906003)(122000001)(83380400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MHRJRmZ0RUFJSGVyS0Z4clhWbXphMEZVczVnNWx1a0tQVEFqUWNuNFpERUVj?= =?utf-8?B?YjBNdXVPSW1CaURmVkJSeXFlaEsraGlRQy9nY0MzYUpRQ3JMRnh3TGZtaU50?= =?utf-8?B?RHhDRnFjUWRLY1Y4MjMvd3VWTjM2dHh5UEhRa0pzTzZSWjFSVGZlc0tCOE1y?= =?utf-8?B?OW55RzVZOE5mbHdNRkhqem5SbDFPSXU4V3VKRUN4RkhYN3FTWWRwaDV5QmNV?= =?utf-8?B?YWZZdERUUzUydDhzcTJOdUlQVzErU0JiY3l0VGMyOWdQeUo4RXdDYnhwVFRW?= =?utf-8?B?b3FkaEdvYVUyZitYNmYvL2VZREpvVzU3UUxaOG5hNTRjUi9MSEhNYjJSa3R5?= =?utf-8?B?QjhCZHdoTjFBQ0Q3SFN2WFNrQmQyYUxLYU4zQ2d0bzBLZUJ6eGk0Wjc1UlZH?= =?utf-8?B?aGdWVnRidkZ1cStaT1JJVVVYMkN4dlVwL3lUV2RmT3BHNmdRVGtKeVFPZmVw?= =?utf-8?B?K1d1TGs0bC9FbWYyWm1oZ2hvUmxFbDZ3Zk8xa2NXcFlwZzFYWFg2RTFSQmJD?= =?utf-8?B?M3VoaWczd1JlUHc4MERXZmlQb3Fpc1crM2k5cEV6b3pIc2MwSWtyTVZldjM3?= =?utf-8?B?VDNZQ2prRlhWanFqNmQrTWFwMSsyM1ZnZEpyWWRFRlRQd05PTjVUdHdyNjU5?= =?utf-8?B?MFRpWFU3YTMza3Zlejc4K1lwaUhwUmZKVTdjMG1BSXNwNE9zODZsbUp1OEl4?= =?utf-8?B?QUU4SkV4NG9TaU9YRW1EUXBPNzZHUjN6cTVJaXJjeWoxTUtzNjRhS2pSK1RD?= =?utf-8?B?Q05BekkzenRnRjZVUGNZRXlBUVlwcXNvRERweEZvdmhDTmpSTlY3cVZFRGRZ?= =?utf-8?B?RFdrYmF6YytZUStLWXBlckRZc2lFUGE0VEtkRlBDOEFoYk91R0FjMUlxNUNi?= =?utf-8?B?RUlEUGY1SUxnRHZMTkFLSHJxODhPeENQSStyV3JOODNZVVFEeTVLT1FmbXhk?= =?utf-8?B?YkVOME5XZlg5N3BubzhyanQ2OHBKd0t6aVNhOVFEekgxRUlpNWpIRmZCTVAz?= =?utf-8?B?ZGJQSC9UbXRCR1dxaWpnWXpOQW5LL3E1T1lqcE1QZHFTYktQbkF6MjRrRWtS?= =?utf-8?B?TUpFeUhYL094SUFnMFN4TzNaOXAzUnA3OWZNRjI1eEg5aVA3aXNzQTRUZ0Nz?= =?utf-8?B?Yjg1NjZhK0FqQjhhams0ai9LWDB3czVwZXBvK1Vhdk1Tam04cjBYRURPTFdn?= =?utf-8?B?OVdqY3cvc0dmbmNnK09aYW91VlZYdkJINHp0YlFaL0RzS2N2QWpDRXU5c2tX?= =?utf-8?B?TXd4Q0NkRDljMWhjVUhhbkZ5YXB3Vm55WVVob0lsa3hnV2FwNWYxWXB3TGhh?= =?utf-8?B?MEpQdWFiYjlaUGlwVE4rRlRPU29Na3JLNis0a3ZrS2lnZ1YyaGo3clI0TVdu?= =?utf-8?B?aUQ1VFJZYTBHZVlRd3hJWlQ0eXZkazhES1ozYlVsekhOQm1EaG1za01MdXAx?= =?utf-8?B?a1RRakE3b3FjUkdyV0luQTY5Q2M4cmdETHMrby9idEE0U2IyM3FuNzlyWDh2?= =?utf-8?B?cWY1NDBBNExjc3ZHb2F4QkJrSGxUcmVSS3pEeFczdzNra1VJVHZJRmFGQVFW?= =?utf-8?B?eFIvTGs4NnVObGJadFdQWXh2aDNPdmMybDh0OGxWbFROalNOMHBxemxIR1Q4?= =?utf-8?B?emZIeUFPTlZsSTBUSit2eGd0VVFTTzJMY0cxY3hHVEJZaVFIdjlQbkxlNWZG?= =?utf-8?B?T1FyZVN0ajFQNFVHa2ZYbC9ZK3hOOERDaEVUTnBNOWtwa214SlhwOVV1dEpV?= =?utf-8?B?U0pibmg3aVJDS3gyV0w1aVlyVEVVVDBGNkhod25kMFhMUlljNC9kU1h4d0Jl?= =?utf-8?B?T0N6ZWQ4K2lSWWNuc1Y3TTlncW9ZZFNzT00wbjdJVFQzSHVSS0NLWVJSeWYx?= =?utf-8?B?S1RDcTNlVERLN3gzcFhiQkFtdmdCdmxXNElFSTRpTXhmaEV1N0FOR2tjZnls?= =?utf-8?B?TWV2ZGNPTDJ1ZzNCRE9xVlRmSGNxeDYwUTBaZnVXQzZMR1lXOCt3Tklnd0xz?= =?utf-8?B?NzJIZzUvNi8vMzRQKzArMVRCNk8yMk9GOHdGZ1BXOHA1WVpaQWFVaTdBVU00?= =?utf-8?B?SGFFYjNRSnBmUU4xM0VyQ3k5TWNkNUhpMWZzd3NoRlBuWTBWV245N2kzUmdN?= =?utf-8?Q?0yic=3D?= 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: MW2PR12MB4666.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5014398-c70c-4040-d5de-08da9d7e401c X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2022 16:11:19.2793 (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: dnM7eNaeQpNAj2qevcCKb7+c7JnrliBUohqKJNT88Wz4z/XlndFgesTBVsjXh2uyVNC7gZisA8I8qDMVHjieaw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7292 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 SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBGcmlk YXksIDIzIFNlcHRlbWJlciAyMDIyIDEwOjI2DQo+IA0KPiBIaSBPcmksDQo+IA0KPiBPbiA5LzIy LzIyIDE2OjAwLCBPcmkgS2FtIHdyb3RlOg0KPiA+IEhpIEFuZHJldywNCj4gPg0KPiA+PiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxhbmRy ZXcucnliY2hlbmtvQG9rdGV0bGFicy5ydT4NCj4gPj4gU2VudDogVGh1cnNkYXksIDIyIFNlcHRl bWJlciAyMDIyIDEzOjMxDQo+ID4+DQo+ID4+IE9uIDkvMjIvMjIgMTM6MDYsIE9yaSBLYW0gd3Jv dGU6DQo+ID4+PiBIaSBBbmRyZXcsDQo+ID4+Pg0KPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ID4+Pj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5rbyA8YW5kcmV3LnJ5YmNoZW5rb0Bv a3RldGxhYnMucnU+DQo+ID4+Pj4gU2VudDogVGh1cnNkYXksIDIyIFNlcHRlbWJlciAyMDIyIDEw OjM5DQo+ID4+Pj4NCj4gPj4+PiBPbiA5LzIxLzIyIDE1OjUxLCBNb3J0ZW4gQnLDuHJ1cCB3cm90 ZToNCj4gPj4+Pj4+IEZyb206IE9yaSBLYW0gW21haWx0bzpvcmlrYUBudmlkaWEuY29tXQ0KPiA+ Pj4+Pj4gU2VudDogV2VkbmVzZGF5LCAyMSBTZXB0ZW1iZXIgMjAyMiAxNC40MQ0KPiA+Pj4+Pj4N Cj4gPj4+Pj4+PiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnliY2hlbmtvQG9rdGV0 bGFicy5ydT4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IE9uIDkvMjEvMjIgMTI6NDAsIFRob21hcyBN b25qYWxvbiB3cm90ZToNCj4gPj4+Pj4+Pj4gMjEvMDkvMjAyMiAxMTowNCwgSXZhbiBNYWxvdjoN Cj4gPj4+Pj4+Pj4+IE5vdyBpdCdzIGNsZWFyIHRvIG1lIHRoYXQgeW91ciBpbnRlbnRpb24gaXMg dG8gbWF0Y2ggb24gZXhhY3QNCj4gPj4+Pj4+IHBvcnRzLA0KPiA+Pj4+Pj4+Pj4gYXMgdXN1YWws IGJ1dCB0aGlzIHRpbWUgd2l0aCBhIGhpbnQgZm9yIHRoZSBmbG93IHRhYmxlLiBHb3QgaXQuDQo+ ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gSW4geW91ciByZXNwb25zZSwgeW91IHNheSB0aGF0IG1h dGNoaW5nIG9uIEFMTCB2cG9ydHMgaXMgbm90DQo+IHdoYXQNCj4gPj4+Pj4+Pj4+IHRoZSB1c2Ug Y2FzZSBuZWVkcy4gT0ssIEkgdW5kZXJzdG9vZC4gQnV0IHBsZWFzZSBub3RlIHRoYXQgdGhlDQo+ ID4+Pj4+Pj4+PiBpdGVtIG5hbWUgZG9lcyBub3Qgc2F5ICJBTEwiLCBpdCBzYXlzICJBTlkiLg0K PiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IE9LLiBTYXksICJBTlkiIGlzIGFsc28gY29uZnVzaW5n LiBMZXQncyB0aGVuIG5hbWUgaXQNCj4gPj4gIlZQT1JUU19PTkxZIg0KPiA+Pj4+Pj4+Pj4gYW5k ICJQSFlfUE9SVFNfT05MWSIuIFRoaXMgd2F5LCBpZiB1c2VyIHByb3ZpZGVzIGl0ZW0NCj4gPj4+ PiBWUE9SVFNfT05MWQ0KPiA+Pj4+Pj4+Pj4gYW5kIHRoZW4gIHByb3ZpZGVzIGl0ZW0gUkVQUkVT RU5URURfUE9SVCwgdGhlc2UgdHdvIGl0ZW1zDQo+IGRvDQo+ID4+IG5vdA0KPiA+Pj4+Pj4+Pj4g Y29udHJhZGljdCBlYWNoIG90aGVyLiBJdGVtIFZQT1JUU19PTkxZIGRlZmluZXMgdGhlIHNjb3Bl IG9mDQo+ID4+IHNvbWUNCj4gPj4+Pj4+Pj4+IGtpbmQsIHRoZW4gdGhlIGZvbGxvd2luZyBpdGVt LCBSRVBSRVNFTlRFRF9QT1JULCBtYWtlcyBpdA0KPiA+Pj4+Pj4gbmFycm93ZXIuDQo+ID4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4gQW5kLCBpbiBkb2N1bWVudGF0aW9uLCBvbmUgY2FuIHNheSBjbGVh cmx5IHRoYXQgdGhlIHVzZXIgKm1heSoNCj4gPj4+Pj4+Pj4+IG9taXQgaXRlbSBWUE9SVFNfT05M WSBpbiB0aGUgZXhhY3QgcnVsZSBwYXR0ZXJuIHByb3ZpZGVkIHRoYXQNCj4gPj4+Pj4+Pj4+IHRo ZXkgaGF2ZSBhbHJlYWR5IHN1Ym1pdHRlZCB0aGlzIGl0ZW0gYXMgcGFydCBvZiB0aGUgdGVtcGxh dGUuDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEkgdGhpbmsgdGhlIHByb2JsZW0gdGhhdCBSb25n d2VpICYgT3JpIGFyZSB0cnlpbmcgdG8gc29sdmUNCj4gPj4+Pj4+Pj4gaXMgdG8gYWxsb2NhdGUg cmVzb3VyY2VzIGZvciB0aGUgdGVtcGxhdGVzIHRhYmxlIGluIHRoZSByaWdodA0KPiA+Pj4+Pj4g cGxhY2UuDQo+ID4+Pj4+Pj4+IEEgdGFibGUgY2FuIGhhdmUgbXVsdGlwbGUgdGVtcGxhdGVzLg0K PiA+Pj4+Pj4+PiBJZiBhbGwgcnVsZXMvdGVtcGxhdGVzIGZvciB0aGlzIHRhYmxlIGFyZSBkZWRp Y2F0ZWQgdG8gdmlydHVhbA0KPiA+Pj4+Pj4gcG9ydHMsDQo+ID4+Pj4+Pj4+IHRoZW4gdGhlIHRh YmxlIHdpbGwgYmUgYWxsb2NhdGVkIGluIGEgcGxhY2UgbWFuYWdpbmcgb25seSB2aXJ0dWFsDQo+ ID4+Pj4+PiBwb3J0cy4NCj4gPj4+Pj4+Pj4gVGhpcyBhbGxvY2F0aW9uIGRlY2lzaW9uIG11c3Qg YmUgdGFrZW4gYXQgdGFibGUgY3JlYXRpb24sDQo+ID4+Pj4+Pj4+IHdoZXJlYXMgcnVsZXMgd2ls bCBiZSBjcmVhdGVkIGxhdGVyLg0KPiA+Pj4+Pj4+PiBJbiBvcmRlciB0byBkbyB0aGlzIHNwZWNp ZmljIHRhYmxlIGFsbG9jYXRpb24gZm9yIHZwb3J0cywNCj4gPj4+Pj4+Pj4gd2UgbmVlZCB0byBy ZXN0cmljdCBhbGwgdGVtcGxhdGVzIG9mIHRoZSB0YWJsZSB0byBiZSAidnBvcnRzIG9ubHkiLg0K PiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBJIGhvcGUgaXQgbWFrZXMgdGhpbmdzIGNsZWFyZXIuDQo+ ID4+Pj4+Pj4+IE5vdyB0aGUgcXVlc3Rpb24gaXMgaG93IHRvIGFjaGlldmUgdGhpcz8gU29sdXRp b25zIGFyZToNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gMS8gZ2l2ZSBhIGhpbnQgdG8gdGhlIHRh YmxlIGFsbG9jYXRpb24NCj4gPj4+Pj4+Pj4gMi8gaW5zZXJ0IGEgcGF0dGVybiBpdGVtIGluIGFs bCB0ZW1wbGF0ZXMgb2YgdGhlIHRhYmxlDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEkgZG9uJ3Qg c2VlIGFueSBvdGhlciBzb2x1dGlvbi4gUGxlYXNlIHByb3Bvc2UgaWYgdGhlcmUgYXJlIG1vcmUN Cj4gPj4+Pj4+IG9wdGlvbnMuDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4NCj4g Pj4+Pj4+PiBTZWUgbXkgbWFpbA0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gMy8gdXNlIGp1bXAgcnVs ZSB3aGljaCBlbnN1cmVzIHRoYXQgYWxsIHRyYWZmaWMgbWVldHMgb3V0DQo+ID4+Pj4+Pj4gICAg ICAgIGV4cGVjdGF0aW9ucw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSXQgbWVhbnMgdGhhdCB0aGUg dGFibGUgY3JlYXRpb24gY291bGQgYmUgcG9zdHBvbmVkLiBPciB0aGUNCj4gPj4+Pj4+PiB0YWJs ZSBjb3VsZCBiZSBwZXItY29uZmlndXJlZCBhdCB0aGUgcG9pbnQgb2YgY3JlYXRpb24gYW5kDQo+ ID4+Pj4+Pj4gZmluYWxpemVkIHdoZW4gd2Uga25vdyB0aGF0IGFsbCB0cmFmZmljIHdpbGwgYmUg ZnJvbSB3aXJlcw0KPiA+Pj4+Pj4+IG9yIGZyb20gdnBvcnRzLiBZZXMsIGl0IGNvbXBsaWNhdGVz IGludGVybmFscyB0byBhY2hpZXZlDQo+ID4+Pj4+Pj4gdGhlIG9wdGltaXphdGlvbi4NCj4gPj4+ Pj4+DQo+ID4+Pj4+PiBTb3JyeSBBbmRyZXcgeW91ciBzdWdnZXN0aW9uIGlzIG5vdCBhIHZhbGlk IG9uZSBmb3IgdGhlIGZvbGxvd2luZw0KPiA+Pj4+Pj4gcmVhc29uczoNCj4gPj4+Pj4+IDEuIHRh YmxlIGNyZWF0aW9uIGNhbid0IGJlIHBvc3Rwb25lZCB0aGlzIGlzIGEga2V5IGlkZWEgb2YgdGhl IHJ0ZV9mbG93DQo+ID4+Pj4+PiB0ZW1wbGF0ZSBBUEkuDQo+ID4+Pj4NCj4gPj4+PiBJIGd1ZXNz IG5vYm9keSBjYXJlcyBpZiBpdCBkZWxheXMgaW5zZXJ0aW9uIG9uIHRoZSBmaXJzdCBydWxlDQo+ ID4+Pj4gb25seS4gQW55d2F5LCBzZWUgYmVsb3cuDQo+ID4+Pj4NCj4gPj4+Pj4+IDIuIHdlIGNh biBuZXZlciBrbm93IHdoYXQgcnVsZXMgd2lsbCBiZSBpbnNlcnRlZCBpZiB0aGUgYXBwbGljYXRp b24NCj4gPj4+Pj4+IGRvZXNuJ3QgdGVsbCB1cy4NCj4gPj4+Pj4+ICAgICAgICAgaG93IGNhbiB3 ZSBrbm93IHRoaXMgaXMgdGhlIGxhc3QgcnVsZT8gV2hhdCBkbyB3ZSBkbyB3aXRoIHRoZQ0KPiA+ Pj4+Pj4gZmlyc3QgcnVsZT8NCj4gPj4+Pj4+IDMuIEkgZG9uJ3Qgc2VlIGhvdyBqdW1waW5nIGhl bHBzIHNpbmNlIGl0IHdvcnNlbnMgdGhlIGlzc3VlIHdoZW4geW91DQo+ID4+Pj4+PiBqdW1wIHRv IGEgdGFibGUsDQo+ID4+Pj4+PiAgICAgICAgaG93IGRvZXMgdGhlIFBNRCBrbm93IGlmIHRoaXMg dGFibGUgc2hvdWxkIGhhdmUgb25seSB3aXJlIG9yDQo+IG9ubHkNCj4gPj4+Pj4+IHZwb3J0cz8N Cj4gPj4+Pg0KPiA+Pj4+IEp1bXAgcnVsZXMgc2F5IHNvLiBQTUQgY2FuIGFuYWx5emUgdGhlcmUg cnVsZXMuDQo+ID4+Pj4gTWF5IGJlIGp1c3QgbmVlZCBhbiBhdHRyaWJ1dGUgc2F5aW5nIHRoYXQg YWxsIGp1bXAgcnVsZXMNCj4gPj4+PiB0byB0aGUgdGFibGUgYXJlIGNvbmZpZ3VyZWQgYW5kIGZ1 cnRoZXIgYXR0ZW1wdHMgdG8gcmVjb25maWd1cmUNCj4gPj4+PiB3aWxsIGJlIHJlamVjdGVkPw0K PiA+Pj4+DQo+ID4+Pg0KPiA+Pj4gVGhlIGlkZWEgaXMgdGhlIFBNRCB3aWxsIG5vdCBhbmFseXpl IHJ1bGVzLiBUaGF0IGlzIHdoeSB3ZSBoYXZlIHRoZSB0YWJsZQ0KPiA+Pj4gYW5kIHRlbXBsYXRl Lg0KPiA+Pj4gU29ycnksIEkgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0IGF0dHJpYnV0ZSBjYW4gYmUg aW4ganVtcD8gVGhlIGp1bXAgaXMganVzdA0KPiA+Pj4gdG8gdGFibGUuIEl0IGNhbid0IHNheSBh bnl0aGluZyBhYm91dCB0aGUgdGFibGUgZGVzdGluYXRpb24gdGFibGUuDQo+ID4+PiBUaGlzIGlz IGFsbCB0aGlzIHBhdGNoIGFkZHMgdGhlIGF0dHJpYnV0ZSB0byBhIHRhYmxlIHRvIHNheSB3aGVy ZSB0aGlzDQo+ID4+PiB0YWJsZSBzaG91bGQgYmUgbG9jYXRlZC4NCj4gPj4+DQo+ID4+Pj4+Pg0K PiA+Pj4+Pj4gSSBhZ3JlZSB3aXRoIFRob21hcywgdGhlcmUgYXJlIHR3byB2YWxpZCBvcHRpb25z LCBJIHZvdGUgZm9yIHRoZSBoaW50DQo+ID4+Pj4+PiBzaW5jZSB0aGlzIGlzIHRoZQ0KPiA+Pj4+ Pj4gZmVhdHVyZSBpZGVhIHRvIHRlbGwgdGhlIFBNRCB3aGVyZSB0aGlzIHJlc291cmNlIHNob3Vs ZCBiZQ0KPiBhbGxvY2F0ZWQuDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoaXMgaXMgYW4gb3B0aW1pemF0 aW9uOyBJIGFncmVlIHdpdGggT3JpIHRoYXQgYSBoaW50IGlzIGFwcHJvcHJpYXRlLCBsaWtlDQo+ IHRoZQ0KPiA+Pj4+IE1CVUZfRkFTVF9GUkVFIGhpbnQgb24gVFggcXVldWVzLg0KPiA+Pj4+Pg0K PiA+Pj4+PiBObyBuZWVkIHRvIGFkZCBtb3JlIGNvbXBsZXhpdHkgYnkgcmVxdWlyaW5nIHRoZSBk cml2ZXIgdG8gcmVjb2duaXplDQo+ID4+IHRoYXQNCj4gPj4+PiB0aGUgcGF0dGVybiBpcyBwcmVz ZW50IGluIGFsbCB0ZW1wbGF0ZXMuIChBbmQgcGVyaGFwcyBhbHNvIHJlbW92ZSB0aGF0DQo+ID4+ Pj4gcGF0dGVybiB3aGVuIGFwcGx5aW5nIHRoZSB0ZW1wbGF0ZXMuKQ0KPiA+Pj4+DQo+ID4+Pj4g V2hhdCBkb2VzIHRoZSBwYXJ0IG9mIHRoZSBtYXRjaGluZyBjcml0ZXJpYSBzbyBzcGVjaWFsDQo+ ID4+Pj4gdGhhdCBpdCBpcyBhbGxvd2VkIHRvIGhhdmUgZGVkaWNhdGVkIGhpbnQgYXR0cmlidXRl Pw0KPiA+Pj4+DQo+ID4+Pj4gTWF5IGJlIHdlIGNhbiBoYXZlIHJlYWxseSBnZW5lcmljIHNvbHV0 aW9uIHdoZW4gYW55DQo+ID4+Pj4gcGFydCBvZiB0aGUgbWF0Y2hpbmcgY3JpdGVyaWEgY291bGQg cHJvdmlkZSBzdWNoIGhpbnRzPw0KPiA+Pj4NCj4gPj4+IFRoYXQgaXMgdGhlIHBvaW50IEkga2Vl cCByZXR1cm5pbmcgdG8sIGl0IGlzIG5vdCBtYXRjaGluZyENCj4gPj4+IFRoaXMgaXMgb24gd2hp Y2ggSFcgcmVzb3VyY2UgdGhlIHRhYmxlIHNob3VsZCBiZSBhbGxvY2F0ZWQuDQo+ID4+DQo+ID4+ IFNvcnJ5LCBidXQgaXQgaXMganVzdCB5b3VyIEhXIGRldGFpbHMgdGhhdCB5b3UgaGF2ZSBkaWZm ZXJlbnQNCj4gPj4gbG9jYXRpb24vcmVzb3VyY2VzIGZvciBydWxlcyB3aGljaCBhcHBseSBvbiBw YWNrZXRzIGNvbWluZw0KPiA+PiBmcm9tIHdpcmUgYW5kIGNvbWluZyBmcm9tIGhvc3QgKHZwb3J0 cykuDQo+ID4+DQo+ID4NCj4gPg0KPiA+IFJpZ2h0LCBtYXliZSBvdGhlciBIVyBtYXkgaGF2ZSB0 aGlzIGlzc3VlLCBhbmQgdGhpcyBwYXRjaA0KPiA+IGNhbiBoZWxwIHRoZW0gYnV0IGN1cnJlbnRs eSwgdGhpcyBwYXRjaCBzb2x2ZXMgc29tZXRoaW5nIGluIE52aWRpYSBIVy4NCj4gPiBUZW1wbGF0 ZSBBUEkgaXMgYWxsIGFib3V0IGdpdmluZyBoaW50cywgc29tZSBvZiB0aGUgaGludHMgY2FuIGJl IHVzZWQNCj4gPiBvbmx5IGJ1eSBzb21lIFBNRHMuDQo+ID4gSSBwcm9taXNlIHRoYXQgYW55IHZl bmRvciB0aGF0IGhhcyBzb21lIHdheSB0byBvcHRpbWl6ZSBpdHMgUE1EDQo+ID4gSSB3aWxsIHN1 cHBvcnQsIG1heSBkaWZmZXJlbnRseSBuYW1lIG9yIGRpZmZlcmVudCBwbGFjZSBidXQgbm90IGFs bCBQTUQNCj4gPiBhcmUgZXF1YWwsIGVhY2ggb25lIG5lZWRzIGl0cyBoaW50cy4NCj4gPg0KPiA+ DQo+ID4+PiBUaGluayBhYm91dCBpbmdyZXNzL2VncmVzcy90cmFuc2ZlciB3aHkgYXJlIHRoZXkg bm90IGluIHRoZSAgcGF0dGVybj8NCj4gPj4NCj4gPj4gV2UgaGF2ZSBubyBpbmdyZXNzL2VncmVz cyBpbiB0cmFuc2ZlciBkb21haW4gYW55IG1vcmUgYmVjYXVzZQ0KPiA+PiBpdCBpcyBhbWJpZ3Vv dXMuDQo+ID4+DQo+ID4NCj4gPiBZZXMgdGhhdCBpcyB3aHkgdGhlIG5hbWUgaXMgd2lyZSBhbmQg bm9uIHdpcmUsDQo+IA0KPiBNeSBxdWVzdGlvbiBoZXJlIGlzIHdoeSBhcHBsaWNhdGlvbiByZWFs bHkgbmVlZHMgdG8ga25vdyBpdC4NCj4gV2h5IGRvZXMgaXQgbWFrZSB0aGUgZGlmZmVyZW5jZT8N Cj4gSU1ITyBmb3IgYSBWTSB3aGljaCB1c2VzIHNvbWUgZnVuY3Rpb24gZXZlcnl0aGluZyBjb21p bmcgdG8gaXQNCj4gaXMgZnJvbSB0aGUgbG9naWNhbCB3aXJlLg0KPiBPZiBjb3Vyc2Ugc2luY2Ug aXQgaXMgYSB0cmFuc2ZlciBsYXllciwgd2UgYXJlIHRhbGtpbmcgYWJvdXQgYW4NCj4gYXBwbGlj YXRpb24gbGlrZSBPdlMuIE1heSBiZSBPdlMga25vd3MgdGhlIGRpZmZlcmVuY2UuLi4NCj4gDQoN CldlIGFyZSB0YWxraW5nIGFib3V0IHRoZSBhcHAgdGhhdCBjb250cm9scyB0aGUgc3dpdGNoLA0K Zm9yIGV4YW1wbGUgT1ZTLCB3ZSBhcmUgbm90IHRhbGtpbmcgYWJvdXQgYW4gYXBwbGljYXRpb24g dGhhdCBjYW4NCmNvbnRyb2wgb25seSBOSUMgKGluZ3Jlc3MvZWdyZXNzKQ0KSW4gYW55IGNhc2Ug dGhlIGlkZWEgb2YgdGhlIHRlbXBsYXRlIEFQSSBpcyB0byBvcHRpbWl6ZSBhcHBsaWNhdGlvbnMN CnRoYXQgaGFzIHByaW9yIGtub3dsZWRnZSBhbmQgY2FuIGdpdmUgaGludHMgdG8gdGhlIFBNRCBz bw0KdGhleSB3aWxsIGdldCBiZXR0ZXIgaW5zZXJ0aW9uIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9u Lg0KSWYgdGhlIGFwcGxpY2F0aW9uIGRvZXNuJ3Qga25vdywgdGhhdCBpcyBhbHNvIE8uSyBidXQg aXQgd2lsbCBub3QNCmdldCB0aGUgbW9zdCBwZXJmb3JtYW5jZSBib29zdC4NCg0KPiA+DQo+ID4+ IFRyYW5zZmVyIGl0c2VsZiBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZG9tYWluLiBMb2dpY2FsbHkg YW5kDQo+ID4+IGZyb20gcHJpdmlsZWdlcyBwb2ludCBvZiB2aWV3LiBUaGF0J3Mgd2h5IGl0IGlz IGltcG9ydGFudCB0bw0KPiA+PiBkaXN0aW5ndWlzaCBpdC4NCj4gPj4NCj4gPj4gSW5ncmVzcyBh bmQgZWdyZXNzIGluIG5vbi10cmFuc2ZlciBjYXNlIGFyZSBuYXRpdmVseSBib3VuZA0KPiA+PiB0 byB0d28gbWFpbiBmdW5jdGlvbnMgb2YgdGhlIGRyaXZlcjogdHJhbnNtaXQgKGVncmVzcyBydWxl cykNCj4gPj4gYW5kIHJlY2VpdmUgKGluZ3Jlc3MgcnVsZXMpLiBJbiBnZW5lcmFsLCBpdCBpcyBh IG1hdGNoaW5nDQo+ID4+IGNyaXRlcmlhIGFzIHdlbGwsIGJ1dCBiZWNhdXNlIG9mIGl0cyBuYXR1 cmUgKGV4cGxhaW5lZA0KPiA+PiBhYm92ZSkgaXQgaXMgc2ltcGx5IGhhbmR5IHRvIGRpc3Rpbmd1 aXNoIGl0IGZyb20gdGhlIHZlcnkNCj4gPj4gYmVnaW5uaW5nLg0KPiA+Pg0KPiA+DQo+ID4gSSBh Z3JlZSB3aXRoIHlvdSwgYnV0IHRoaXMgaXMganVzdCB0byBzaG93IHRoYXQgZXZlbiBpZiBzb21l dGhpbmcgY2FuIGJlDQo+IHRyZWF0ZWQNCj4gPiBhcyBtYXRjaGluZyBpdCBpcyBub3QgdGhlIGJl c3Qgd2F5IHRvIGxvb2sgYXQgaXQgdGhhdCB3YXkuDQo+ID4NCj4gPj4+IFRoZXkgYXJlIHdoZXJl IHJ1bGVzIHNob3VsZCBiZSBvZmZsb2FkZWQsIHRoZXkgYXJlIGRpZmZlcmVudCBkb21haW4uDQo+ ID4+DQo+ID4+IFdlIGhhdmUganVzdCB0d28gZG9tYWluczogdHJhbnNmZXIgYW5kIG5vbi10cmFu c2Zlci4NCj4gPj4NCj4gPj4+IExpa2Ugd2UgaGF2ZSBlbHNld2hlcmUgZm9yIGV4YW1wbGUgaW4g YWN0aW9uIGNyZWF0ZSB3ZSBjYW4gc3RhdGUgb24NCj4gd2hpY2gNCj4gPj4+IGRvbWFpbiB0aGUg YWN0aW9uIHNob3VsZCBiZSBjcmVhdGVkLiBJZiB0aGUgYXBwbGljYXRpb24gc2VsZWN0cyBhIG51 bWJlcg0KPiBvZg0KPiA+PiBkb21haW5zDQo+ID4+PiBpdCBtYXkgbWVhbiB0aGF0IGV4dHJhIHJl c291cmNlcyB3aWxsIGJlIGFsbG9jYXRlZC4+DQo+ID4+DQo+ID4+IFR3byBtb3JlIHBvaW50czoN Cj4gPj4NCj4gPj4gMS8gSWYgaXQgaXMganVzdCBhIGhpbnQsIGl0IGlzIG9wdGlvbmFsIGZvciBQ TUQgdG8NCj4gPj4gICAgIHN1cHBvcnQvaGFuZGxlIGl0LiBJdCBtZWFucyB0aGF0IGl0IE1VU1Qg Tk9UIGltcG9zZSBhbnkNCj4gPj4gICAgIGxpbWl0YXRpb25zIG9uIG1hdGNoaW5nLiBJZiBzbywg aWYgeW91IHdhbnQgYSBydWxlIHRvDQo+ID4+ICAgICBiZSBhcHBsaWVkIG9uIHBhY2tldHMgY29t aW5nIGZyb20gd2lyZSwgeW91IHN0aWxsIE1VU1QNCj4gPj4gICAgIHNwZWNpZnkgaXQgaW4gdGhl IHBhdHRlcm4uDQo+ID4+ICAgICBTbywgaXQgZG9lcyBub3Qgc291bmQgbGlrZSBhIGhpbnQgaW4g eW91ciBjYXNlLg0KPiA+DQo+ID4gUmlnaHQgaXQgaXMgb3B0aW9uYWwgaWYgdGhlIGFwcGxpY2F0 aW9uIGRvZXNuJ3QgZ2l2ZSB0aGlzIGhpbnQNCj4gPiB0aGUgUE1EIHdpbGwgY3JlYXRlIGp1c3Qg bGlrZSBpdCBkb2VzIG5vdyB0YWJsZXMgZm9yIGJvdGggd2lyZSBhbmQNCj4gPiBub24gd2lyZS4N Cj4gDQo+IExldCdzIG1ha2UgaXQgY2xlYXIgaGVyZSBhbmQgaW4gdGhlIGF0dHJpYnV0ZSBkb2N1 bWVudGF0aW9uLg0KPiBZb3UncmUgdGFraW5nIGFib3V0IG9uZSBzaWRlLCBidXQgdGhlcmUgaXMg YW4gYW5vdGhlciBvbmUuDQo+IElmIGl0IGlzIGp1c3QgYSBoaW50IHdoaWNoIGlzIG9wdGlvbmFs IHRvIHNwZWNpZnkvaW50ZXJwcmV0LA0KPiBpdCBkb2VzIG5vdCBpbXBvc2UgYW55IG1hdGNoaW5n IGNyaXRlcmlhLiBTbywgaWYgYSBydWxlIGRvZXMNCj4gbm90IHNwZWNpZnkgc291cmNlLCB0aGUg cnVsZSBtdXN0IGJlIGFwcGxpZWQgb24gdHJhZmZpYw0KPiBjb21pbmcgZnJvbSBib3RoIHdpcmUg YW5kIG5vdC13aXJlLiBJbiBvcmRlciB0byBsaW1pdA0KPiBzb3VzZXMsIHdlIHN0aWxsIG5lZWQg bWF0Y2hpbmcgY3JpdGVyaWEgYW55d2F5IC0gaS5lLiBwYXR0ZXJuDQo+IGl0ZW0uIE1vcmVvdmVy LCBpZiBhIFBNRCBzdXBwb3J0cyB0aGUgaGludCBhbmQgbWF0Y2hpbmcNCj4gY3JpdGVyaWEgY29u dHJhZGljdHMgaXQsIGZsb3cgcnVsZSBpbnNlcnRpb24gbXVzdCBmYWlsLg0KPiANCj4gQ291bGQg eW91IHBsZWFzZSBjb25maXJtIHRoYXQgd2Ugc2hhcmUgb3VyIHVuZGVyc3RhbmRpbmcgaGVyZS4N Cj4gDQoNCkkgZnVsbHkgYWdyZWUgdGhhdCBpdCBzaG91bGQgYmUgY2xlYXJseSBzdGF0ZWQgdGhh dCB0aGlzIGlzIG9ubHkgYSBoaW50Lg0KSSdtIG5vdCBzdXJlIEkgYWdyZWUgd2l0aCB5b3Ugb24g dGhlIHNlY29uZCBwYXJ0IHRoYXQgc2F5cyBydWxlIG11c3QgYmUgYXBwbGllZA0Kb24gYm90aCBz aWRlcyBpZiB0aGVyZSBpcyBubyBzb3VyY2UuDQpJZiB0aGUgYXBwbGljYXRpb24gZ2l2ZXMgdGhp cyBoaW50IHRoZW4gaGUgaXMgYm91bmRlZCBieSBpdC4NCmZvciBleGFtcGxlIGhlIGNhbiBoYXZl IG9ubHkgbWF0Y2hpbmcgb24gaXB2NCBpbiBncm91cCBYDQp3aGlsZSBpbiBncm91cCB4LTEgaXQg c2V0IGEgcnVsZSB0aGF0IG1vdmVzIHRyYWZmaWMgZnJvbSB3aXJlIHRvIGdyb3VwIFgNCnNvIGFw cGxpY2F0aW9uIGtub3dzIHRoYXQgaW4gZ3JvdXAgWCB0aGVyZSBpcyBvbmx5IHRyYWZmaWMgdGhh dCBhcnJpdmVkIGZyb20NCndpcmUgd2l0aG91dCBtYXRjaGluZyBvbiBpdC4NCg0KSGUgY2FuIGxv b2sgYXQgdGhlIHJlbGF4ZWRfbWF0Y2hpbmcgYXR0cmlidXRlLCB0aGF0IHN0YXRlcyB0aGF0DQpQ TUQgc2hvdWxkIG9ubHkgbWF0Y2ggb24gZmllbGRzIHRoYXQgaGF2ZSBhIG5vbiB6ZXJvIG1hc2sg DQphbmQgbm90IHRoZSBwYXR0ZXJuIG9yZGVyLg0KDQpUaGlzIGlzIHRoZSBzYW1lIGlmIGFwcGxp Y2F0aW9uIHNldCByZWxheCBtYXRjaGluZyBhbmQgbWF0Y2hlcyBvbiBVRFAgZHBvcnQgPSAxMDAN CnRoZSBQTUQvSFcgd2lsbCBub3QgdmVyaXR5IHRoYXQgdGhlIHBhY2tldCBpcyByZWFsbHkgVURQ IHBhY2tldCBhbmQganVzdCBjaGVjayB0aGUNCmRwb3J0IGZpZWxkLg0KDQpMaWtlIGV2ZXJ5dGhp bmcgZWxzZSBhcHBsaWNhdGlvbiB3aGVuIGdpdmluZyBhbiBoaW50IHNob3VsZCBrbm93IHRoYXQg dGhlIGhpbnQgYmluZHMNCml0IHRvIGl0LiBJdCBjYW4ndCBzYXkgSSBnaXZlIGEgaGludCBidXQg d2lsbCAgbyB0aGUgcmV2ZXJzZSBvZiB0aGUgZ2l2ZW4gaGludC4NCg0KDQo+ID4NCj4gPj4NCj4g Pj4gMi8gc3RydWN0IHJ0ZV9mbG93X2F0dHIgaXMgdXNlZCBmb3IgcmVhbGx5IGFsbCBydWxlcy4N Cj4gPj4gICAgICBIb3cgYSBuZXcgYXR0cmlidXRlIHNob3VsZCBiZSBpbnRlcnByZXRlZCBpbiBu b24tdHJhbnNmZXINCj4gPj4gICAgICBydWxlcz8gU2ltaWxhciB0byBpbmdyZXNzL2VncmVzcz8g RHVwbGljYXRpb24/DQo+ID4+ICAgICAgT3IgZXZlbiBoYXJkZXIgKGlmIGl0IGlzIE5PVCBhIGhp bnQpOiBzaG91bGQgaXQgcmVhbGx5DQo+ID4+ICAgICAgZW5mb3JjZSBtYXRjaGluZyBvZiBwYWNr ZXRzIGNvbWluZyBmcm9tIHdpcmUgKGkuZS4gbm90DQo+ID4+ICAgICAgYSBkaWZmZXJlbnQgdnBv cnQpPyBOb3Qgc3VyZSB0aGF0IGl0IGlzIGRvYWJsZSBvciBldmVuDQo+ID4+ICAgICAgbWFrZSBz ZW5zZS4NCj4gPj4gICAgICBXZSBjYW4gc2F5IHRoYXQgdGhlIGF0dHJpYnV0ZSBtYXkgYmUgdXNl ZCBmb3IgdGhlIHRyYW5zZmVyDQo+ID4+ICAgICAgcnVsZXMgb25seS4gSWYgc28sIGl0IE1VU1Qg YmUgY2hlY2tlZCBvbiBldGhkZXYgbGV2ZWwNCj4gPj4gICAgICBzaW5jZSBpdCBpcyBhIGdlbmVy aWMgcnVsZS4NCj4gPj4NCj4gPg0KPiA+ICBGcm9tIG15IHBvaW50IG9mIHZpZXcsIGl0IHNob3Vs ZCBiZSB0cmVhdGVkIG9ubHkgaW4gY2FzZSBvZiB0cmFuc2ZlciwNCj4gPiBJIHRoaW5rIGl0IGFs c28gc3RhdGVkIGluIHRoZSBvcmlnaW5hbCBjb21taXQgdGhpcyB3YXkuDQo+ID4gV2h5IHNob3Vs ZCB3ZSB2YWxpZGF0ZSBpdD8NCj4gDQo+IEJlY2F1c2UgaXQgaXMgYSBnZW5lcmljIGxpbWl0YXRp b24uIE90aGVyd2lzZSBlYWNoIFBNRCBtdXN0DQo+IGNoZWNrIGl0LiBUaGUgY2hlY2sgaXMgcmVx dWlyZWQgdG8gYXZvaWQgbWlzdXNhZ2UuDQo+IA0KPiA+IFdlIGRvbid0IHZhbGlkYXRlIGlmIHRo ZSBhcHBsaWNhdGlvbg0KPiA+IHNldCB0cmFuc2ZlciArIGluZ3Jlc3MvZWdyZXNzIG9yIGp1c3Qg aW5ncmVzcytlZ3Jlc3Mgb3Igbm9uLg0KPiANCj4gV2UncmUgZ29pbmcgdG8gYWRkIGNvcnJlc3Bv bmRpbmcgY2hlY2tzIG9uIGV0aGRldiB3aGVuIHdlDQo+IGZpbmFsaXplIGRlcHJlY2F0aW9uIG9m IGluZ3Jlc3MvZWdyZXNzIGluIHRyYW5zZmVyIHJ1bGVzLg0KPiANCg0KSSB3aWxsIG5hY2sgdGhp cyBwYXRjaC4NClNpbmNlIGl0IGFkZHMgZXh0cmEgY2hlY2tzIHRoYXQgd2lsbCByZXN1bHQgaW4g cGVyZiBkZWdyYWRhdGlvbi4NCklmIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IHNvbWV0aGluZyBh Z2FpbnN0IHRoZSBkb2N1bWF0aW9ucy4NCnRoYXQgZG9lc24ndCBjYXVzZSBzeXN0ZW0gY3Jhc2gg RFBESyBzaG91bGQgbm90IHZhbGlkYXRlIGl0Lg0KDQpMaWtlIHlvdSBkb24ndCB2YWxpZGF0ZSBh bnl0aGluZyBpbiBkYXRhIHBhdGguIA0KDQo+ID4NCj4gPg0KPiA+PiAzLyBzdHJ1Y3QgcnRlX2Zs b3dfYXR0ciBpcyB1c2VkIGZvciBzeW5jIGFuZCBhc3luYyBydWxlcy4NCj4gPj4gICAgICBBcyBJ IHVuZGVyc3RhbmQgeW91J3JlIHVzaW5nIGl0IGZvciBhc3luYyBydWxlcyBvbmx5Lg0KPiA+PiAg ICAgIERvZXMgaXQgbWFrZSBzZW5zZSBmb3Igc3luYyBydWxlcz8NCj4gPg0KPiA+IFllcywgaXQg Y2FuIHNhdmUgaW5zZXJ0aW9uLiBTaW5jZSBldmVuIHRoZSBzeW5jIEFQSSBzaW5jZSBpdCBkb2Vz bid0IGhhdmUgdGhpcw0KPiBiaXQNCj4gPiBkdXBsaWNhdGUgdGhlIHJ1bGUuDQo+IA0KPiBTb3Jy eSBJIGRvbid0IHVuZGVyc3RhbmQgYWJvdmUuDQo+IA0KDQpTb3JyeSwgc29tZXRoaW5nIGJyb2tl IHdpdGggbXkgc2VudGVuY2UuDQpFdmVuIHVzaW5nIHN0YW5kYXJkIEFQSSB0aGlzIGhpbnQgY2Fu IGhlbHAsIHNpbmNlIHVzaW5nIGl0IFBNRCBjYW4gaW5zZXJ0DQpUaGUgcnVsZSBvbiBvbmx5IG9u ZSBodyByZXNvdXJjZSBhbmQgZG9lc24ndCBuZWVkIHRvIGR1cGxpY2F0ZSBpdC4NCg0KPiA+IEJ1 dCBpZiBwcmVzc2VkIHdlIGNhbiBtb3ZlIGl0IHRvIHRoZSB0YWJsZSBhdHRyaWJ1dGUsIGRvIHlv dSB0aGluayBpdCB3aWxsIGJlDQo+IGJldHRlcj8NCj4gDQo+IElmIGl0IGlzIG5vdCBhIGdlbmVy aWMgdGhpbmcsIElNSE8gaXQgaXMgYmV0dGVyIHRvIHB1dCBpbg0KPiB0YWJsZSBhdHRyaWJ1dGVz Lg0KPiANCg0KU28ganVzdCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgeW91 IHBlcmVmZXIgdGhhdCBhbGwNCm5vbmUgZ2VuZXJpYyB3aWxsIG9ubHkgYmUgaW4gdGhlIHRlbXBs YXRlIEFQST8NCg0KSSdtIE8uSyB3aXRoIHRoYXQuDQoNCj4gQW5kcmV3Lg0KDQpUaGFua3MsDQpP cmkNCg==