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 F3BA342CC7; Thu, 15 Jun 2023 16:04:55 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CDEFB40FDF; Thu, 15 Jun 2023 16:04:55 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 0B4C140E0F; Thu, 15 Jun 2023 16:04:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686837893; x=1718373893; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=e6hEjdZOpoEBRaxYZrqg373/x6pMH9IZXagHQlTTa14=; b=BzOiwuufPZGwurQFHxt0+22rQsaxfAATxyocbEb+z6clNCbmpGqJpNtH L9acpF8Ayn9DYi3DhgiofkqXLXnwBxuBgQphbysX1aOnRFavxwQFnGdN5 YV+mL4Pd6IFpVsJ4jeDv9ZyXQ3CkLgUO1b0RF84Qu6D2wG652BoH6k+Be emf9IqLnFvl0GWgFZ535jwUFq3lscXkk57NqFSG67UU2Aktplp/U5Y41X RadYo0TTQBscM/8g0gQW1EEpCHu7n3cwuHbOBaZBPvmg/UjH6wgn7dzfb X/89NsE+gXPq4v2PrB9IyhaK7TqnpB59UkBBFNwmLjgzUrIoNk9ilR9NS w==; X-IronPort-AV: E=McAfee;i="6600,9927,10742"; a="343630723" X-IronPort-AV: E=Sophos;i="6.00,245,1681196400"; d="scan'208";a="343630723" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jun 2023 06:25:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10742"; a="689783798" X-IronPort-AV: E=Sophos;i="6.00,245,1681196400"; d="scan'208";a="689783798" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga006.jf.intel.com with ESMTP; 15 Jun 2023 06:25:37 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Thu, 15 Jun 2023 06:25:37 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Thu, 15 Jun 2023 06:25:37 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.173) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Thu, 15 Jun 2023 06:25:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UH6keibjKfcg8JWCiBCXyqSNiHrW8YiTBr0PfzuEURHWKSv2SSvu/EyfEKr3TaOXmjA9q8FaRyOrVIL1FXr8vXe+3rBbeVmgLXTDjaIX4h2hXLmZ+UypJArjSDi0o/Q+vroblS9f2zZKoT9Vo/X4cbNYq99/DxtBn3eGjTFUcMXhd8JZE2BkIByzoEF+5qNx2fvNFAd6qlESvVCSstS3WM6ewJPfyn06m8LKnn8PawgctzN+4bRfQYakQtNZl8C0EPGvA0YDKiOjmMU+/2li1Od+Ix+LNIk42sY7PKWr5d+1o9MKJ9YJCJs3ELgO91yNUUIUyosNuoxaEf8r6qk7Yg== 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=e6hEjdZOpoEBRaxYZrqg373/x6pMH9IZXagHQlTTa14=; b=eo8YvHSSfzgAWPVniDiDNb21aTYxsgHivIAk7qK7PX8ELDqNVocgIdWOmn0KLk60/mxsaH7jnb/E0YCoweNd0uV4NUvsVxpC7lXAJBkUA5mycS2/BfIx5+swp6JtzIMP+uX82+55uUuUNlb7UYVsMLsYGKBxjmotYI9/d13ZJkSnIiU4Gv6J7+Sif4EcF9IXBmhNpFKyKp5j6GfUM60uD9OCKmjWMwRZEoQqGY7fqjOm5+G/VGwRkBvYoKkkKMQ3IDVu8FJ9ns56oP777jvgXVawpZCq7UZOa/l7FcSnWIEszGPqt7AQ9+yJc+7aAW+ifzcDBW29EINyozYBEXt6iA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM4PR11MB5994.namprd11.prod.outlook.com (2603:10b6:8:5d::20) by DM6PR11MB4753.namprd11.prod.outlook.com (2603:10b6:5:2ac::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.25; Thu, 15 Jun 2023 13:25:35 +0000 Received: from DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589]) by DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589%6]) with mapi id 15.20.6477.037; Thu, 15 Jun 2023 13:25:35 +0000 From: "Zhang, Qi Z" To: Jerin Jacob CC: Ori Kam , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , "david.marchand@redhat.com" , "Richardson, Bruce" , "jerinj@marvell.com" , "ferruh.yigit@amd.com" , "Mcnamara, John" , "Zhang, Helin" , "techboard@dpdk.org" , "dev@dpdk.org" , Ivan Malov Subject: RE: [RFC] lib/ethdev: introduce table driven APIs Thread-Topic: [RFC] lib/ethdev: introduce table driven APIs Thread-Index: AQHZnNl/YukvwyUJXUylZdiSr9fMFq+Kou2AgABcbMCAAFLcAIAACM5AgAAOhgCAAAXmIIAAIC8AgAA/bTA= Date: Thu, 15 Jun 2023 13:25:35 +0000 Message-ID: References: <20230612111539.462084-1-qi.z.zhang@intel.com> In-Reply-To: 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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR11MB5994:EE_|DM6PR11MB4753:EE_ x-ms-office365-filtering-correlation-id: eb830695-6b9d-4f1a-4173-08db6da40079 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: deorn+9mmjrTvmFQ5IvcDlvKvw49f5G+X5xCJ+9f6hWADCgZMQm5oSBgFMH2dfZ/Fg7CKi6LaxDGaoU5716EMymVQQZ4HkRR3RuG4MApFJHtBpl1L8YREfWoaPUpiyuv3KoApPQx3qPww8iqYFQFuayEn0lQqjJFtjFOoVGwwWhDSXa8cqjBbCnsImCNxZ+81M7ab42Wq6g8G3hyqPNiPnv5Jn3Sa4hVDTE1jvSlZT7z5uCkiHdsNG8aV2uW3Gvo5ndPqbr/HuN3ZFEMBxdWaK4BeCufgFUskkViMFsp1n+3SA4xP+i/55QyuS1hrdl4jhKemYCi8DJO/0nYJIiFyjfWznOUTRCvo6uyKtFVjA5KXKu60rgtY6nOHH81CgukCtTaHiE4cvC6uGmogAFrSSTXR5pqMiqfII5sZOmEzdflrTGeZbbcPF8asAYX1u1sGtuqXNravejtStsgCxUnl2Yf5hCIylH4aetNyUL/1KGAjFN3tebaF7FBB386UjkKl5pn+GeZ49OswSuj9aPYZFM1e1UX6R/EFMM9I0Sr7z5aqZUv9BNmG1EoZPReESRjZYK+lXwAMB7sgSXb7GjcDnVQdnGSHrLnnDhy1Fi53NM= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5994.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(39860400002)(366004)(376002)(136003)(396003)(346002)(451199021)(2906002)(9686003)(26005)(30864003)(186003)(83380400001)(55016003)(6916009)(66946007)(76116006)(66476007)(64756008)(66446008)(66556008)(71200400001)(82960400001)(4326008)(41300700001)(7696005)(8936002)(8676002)(316002)(54906003)(86362001)(33656002)(38100700002)(478600001)(122000001)(38070700005)(53546011)(6506007)(52536014)(5660300002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eWhOQnV2aS9UaGg0VkFrdGNOL29WdnJDOXAydXlrTFZvWW1IcFU4WTg0L2RH?= =?utf-8?B?cEdxSlQycEhLR08xN0RSWFlKRytEb2lQODFhbmd1QmppMlBzZlU1bldRUStW?= =?utf-8?B?SEdjWGZMRHpOV29SWmxxMmxMMVljb2FQTjI0RktQcjQ1QXFNVGZYUVNCam5w?= =?utf-8?B?TStNRmVuZzVlWkdWbVpnaXpjMXdkdGNVVncrS3UzaTZ4R3FvNks5dGg1aExB?= =?utf-8?B?SjQzV1ZBcUN5eXEwNEkwOE9QQ1pKOG56UmlNaER2UXU5VUh4emtRNFUzeWFO?= =?utf-8?B?dFI2K3pCTFNSWW9ma0E1MkV4T2ZmcENCWkx2OGxOTlBITi9BaFpqeWU0YVNx?= =?utf-8?B?L1hmTnkvR0EwVTA2dGRsUDdYNjVyejRZaEVpSVU5WE9hQlJVOTdlVjlCYzd5?= =?utf-8?B?M2o3eDJGYjgrZFliVDR1R0tjWm9xV0gvOVgvUHRrVUlIRE4zSFBiTUZKbS9D?= =?utf-8?B?TDNlVzNWQWZ0QWQzWTJ2M3AwZjZ4SlVSM1EyU0pFME5FZkRncCtvWGxuSkdK?= =?utf-8?B?UHZNRjBnV3NWdllVN01KVmRQVGpmeVdWNDZFcE1SdzhrZjhOZmNTYkpEY0lu?= =?utf-8?B?SDhLa1JQdEtwWnpKendUd2Uyd29vY0RXUXJkeWVZMkV3VzcrcEFNVDR6MXRy?= =?utf-8?B?YUJGQitqOUxPNm1VZDlwQVc0YndSWmlsc0ZTNENkTkhQKzRxQWtIa1NUSnZT?= =?utf-8?B?YlNPT3I0QzJFOE80MmVYb2R0Mld2QmIxZyt5L2sybUNybmhYVXNRaVVvT2Zk?= =?utf-8?B?bm9LMUlib3BnWVh1SFpWZC9tTllNQmNaRUVLL2tsNENFVEU5cDJudXNmMll1?= =?utf-8?B?N1NvK2EwUmYvbWFpTlZTbjBtTjFOQjZiUWRndlBNYnNWVmVTYTBCNnNmVUQ5?= =?utf-8?B?MzVwM0xCYTFGTmM4MU9pZkV0UXBxV1FvRHhxWkVpUmhMY2R4WHdmcUJ1Yjl3?= =?utf-8?B?ZVdaVm9CbWFkUU1PQXY2VVhRUEp3anErVHowT3A1WDVLKzBxYVBLUTdJUFp2?= =?utf-8?B?MlhKai9Cek41WHN3d29yNDNqRE1adDQ5Nm1ydk1jT2twQ3BqWWJ4QWFhN2NT?= =?utf-8?B?czhJTk1PKzNpSE1uc0ZJaGIvSmEyNTJGdXBGZEJ1bENUdUhnckRJY1k5a3U0?= =?utf-8?B?Qk9RRG52ZE1qdlJmYVdnb2pCYkVacWxxWEQyZityTlNXZTJGZURmYTJuc0tT?= =?utf-8?B?bS9ZODVPa1hFbUk4OVZJc0ZUMEFCaWtCT0ZHejhxR2xCbnBOUGtFSHVnQ21r?= =?utf-8?B?dzJiaDJLMlREU01jKzc5VmVvemNMZERQOWxrMHFtSmJMbnBjZTBwRUVWTC9N?= =?utf-8?B?R2RONXJZWDk4QzJrODJpelNLcWpLUjhlaEQ3QkkvVVR1QmFHdVZYY2tLS0Nj?= =?utf-8?B?VkV5bkpqMDhxMDRwU1ZXblhseU01cERBN242Q085R0o3RzlEYkl3a2dpdGJw?= =?utf-8?B?WDVNcG85R3VIQ01Gb2hlNW9jbWZ5YnlteWtrOTJRSkF0bkZ4RmliUFBET0ZL?= =?utf-8?B?TytSRnZObDhUNTlWWm1hRnZSZjNGSlNvY3ZYcnIyUndZcFlrS1J6YmhVS0hL?= =?utf-8?B?Umw3WDUreFQwNGd4UEk1Z3RiWFBlbDAvVUw4VVNUZnJmdkNZZklvVVdRQ3ht?= =?utf-8?B?U3UzRktTZ2dsVytnaVJlRFJMRG1tQ0Jpd1QrNHJ4U1M5SHFUcmpkc0VkWGxN?= =?utf-8?B?MmcxQkhWd1Jkangrbzg1c0lSb1VPU1Iyb252SmN3WTRVV1F0V3ozYVlKeFlS?= =?utf-8?B?YVprblFUaEExY2dSc2JkYTZjdi9LWGRKWHJyUUh4eFNhN2NzalptVUJ3MUlm?= =?utf-8?B?VUhRRmI2RVpiMzBZTm81b2pPdjZJZzJNeitvTExNUWpuRzJIaDZ5aVE5SERX?= =?utf-8?B?VUIwdkVFWS9JOHp0Tjd5NG5INndhbnhlUGh5azZYM0g1NlF0N1ZYeDBNNTNy?= =?utf-8?B?anZNdWVyTDdNOUI5RzFualVvY0tTQkhNcXBSd0lNTTlKVHpjdlI1QTlNM25r?= =?utf-8?B?Q0ZxMHovK0ZhZXROVUtZM2xRSnMza2dqOThPWG5ZcmlERll3ZUViV1JNOGkz?= =?utf-8?B?TW40TmV5aWs0TWVCaEtGMjVKYjB5NWlIeGpwT2N6M0J3U2RUOTk0ZlFYaWFy?= =?utf-8?Q?PsLkyTfBaMVF/XQ7cjFMKL3Sz?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5994.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb830695-6b9d-4f1a-4173-08db6da40079 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2023 13:25:35.2598 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: o4mIPvY/1DHqysmgL4y7jqO0Kf3J5Bd3tuf6+0L+8aKH36Vgjg5HhBnwjFgHzzakzbkq0XCMbs3uVBCTDs3p4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4753 X-OriginatorOrg: intel.com 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmVyaW4gSmFjb2IgPGpl cmluamFjb2JrQGdtYWlsLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIEp1bmUgMTUsIDIwMjMgNDoz OCBQTQ0KPiBUbzogWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPg0KPiBDYzogT3Jp IEthbSA8b3Jpa2FAbnZpZGlhLmNvbT47IE5CVS1Db250YWN0LVRob21hcyBNb25qYWxvbiAoRVhU RVJOQUwpDQo+IDx0aG9tYXNAbW9uamFsb24ubmV0PjsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNv bTsgUmljaGFyZHNvbiwgQnJ1Y2UNCj4gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgamVy aW5qQG1hcnZlbGwuY29tOyBmZXJydWgueWlnaXRAYW1kLmNvbTsNCj4gTWNuYW1hcmEsIEpvaG4g PGpvaG4ubWNuYW1hcmFAaW50ZWwuY29tPjsgWmhhbmcsIEhlbGluDQo+IDxoZWxpbi56aGFuZ0Bp bnRlbC5jb20+OyB0ZWNoYm9hcmRAZHBkay5vcmc7IGRldkBkcGRrLm9yZzsgSXZhbiBNYWxvdg0K PiA8aXZhbi5tYWxvdkBhcmtuZXR3b3Jrcy5hbT4NCj4gU3ViamVjdDogUmU6IFtSRkNdIGxpYi9l dGhkZXY6IGludHJvZHVjZSB0YWJsZSBkcml2ZW4gQVBJcw0KPiANCj4gT24gVGh1LCBKdW4gMTUs IDIwMjMgYXQgMToxMuKAr1BNIFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT4gd3Jv dGU6DQo+ID4NCj4gPg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ ID4gRnJvbTogSmVyaW4gSmFjb2IgPGplcmluamFjb2JrQGdtYWlsLmNvbT4NCj4gPiA+IFNlbnQ6 IFRodXJzZGF5LCBKdW5lIDE1LCAyMDIzIDI6MjEgUE0NCj4gPiA+IFRvOiBaaGFuZywgUWkgWiA8 cWkuei56aGFuZ0BpbnRlbC5jb20+DQo+ID4gPiBDYzogT3JpIEthbSA8b3Jpa2FAbnZpZGlhLmNv bT47IE5CVS1Db250YWN0LVRob21hcyBNb25qYWxvbg0KPiA+ID4gKEVYVEVSTkFMKSA8dGhvbWFz QG1vbmphbG9uLm5ldD47IGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb207DQo+ID4gPiBSaWNoYXJk c29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+OyBqZXJpbmpAbWFydmVsbC5j b207DQo+ID4gPiBmZXJydWgueWlnaXRAYW1kLmNvbTsgTWNuYW1hcmEsIEpvaG4gPGpvaG4ubWNu YW1hcmFAaW50ZWwuY29tPjsNCj4gPiA+IFpoYW5nLCBIZWxpbiA8aGVsaW4uemhhbmdAaW50ZWwu Y29tPjsgdGVjaGJvYXJkQGRwZGsub3JnOw0KPiA+ID4gZGV2QGRwZGsub3JnOyBJdmFuIE1hbG92 IDxpdmFuLm1hbG92QGFya25ldHdvcmtzLmFtPg0KPiA+ID4gU3ViamVjdDogUmU6IFtSRkNdIGxp Yi9ldGhkZXY6IGludHJvZHVjZSB0YWJsZSBkcml2ZW4gQVBJcw0KPiA+ID4NCj4gPiA+IE9uIFRo dSwgSnVuIDE1LCAyMDIzIGF0IDExOjMz4oCvQU0gWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50 ZWwuY29tPg0KPiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4gSGkgSmVyaW46DQo+ID4gPg0KPiA+ ID4gSGkgUWkNCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPiA+ID4gPiBGcm9tOiBKZXJpbiBKYWNvYiA8amVyaW5qYWNvYmtAZ21haWwuY29t Pg0KPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDE1LCAyMDIzIDEyOjU4IFBNDQo+ID4g PiA+ID4gVG86IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT4NCj4gPiA+ID4gPiBD YzogT3JpIEthbSA8b3Jpa2FAbnZpZGlhLmNvbT47IE5CVS1Db250YWN0LVRob21hcyBNb25qYWxv bg0KPiA+ID4gPiA+IChFWFRFUk5BTCkgPHRob21hc0Btb25qYWxvbi5uZXQ+OyBkYXZpZC5tYXJj aGFuZEByZWRoYXQuY29tOw0KPiA+ID4gPiA+IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNo YXJkc29uQGludGVsLmNvbT47DQo+ID4gPiA+ID4gamVyaW5qQG1hcnZlbGwuY29tOyBmZXJydWgu eWlnaXRAYW1kLmNvbTsgTWNuYW1hcmEsIEpvaG4NCj4gPiA+ID4gPiA8am9obi5tY25hbWFyYUBp bnRlbC5jb20+OyBaaGFuZywgSGVsaW4gPGhlbGluLnpoYW5nQGludGVsLmNvbT47DQo+ID4gPiA+ ID4gdGVjaGJvYXJkQGRwZGsub3JnOyBkZXZAZHBkay5vcmc7IEl2YW4gTWFsb3YNCj4gPiA+ID4g PiA8aXZhbi5tYWxvdkBhcmtuZXR3b3Jrcy5hbT4NCj4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1JG Q10gbGliL2V0aGRldjogaW50cm9kdWNlIHRhYmxlIGRyaXZlbiBBUElzDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBPbiBUaHUsIEp1biAxNSwgMjAyMyBhdCA3OjU14oCvQU0gWmhhbmcsIFFpIFoNCj4g PiA+ID4gPiA8cWkuei56aGFuZ0BpbnRlbC5jb20+DQo+ID4gPiB3cm90ZToNCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiBIaSBPcmk6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgICAgICBU aGFuayB5b3UgZm9yIHlvdXIgcmV2aWV3IQ0KPiA+ID4gPiA+ID4gICAgICAgICBDb21tZW50IGlu bGluZS4NCj4gPiA+ID4gPiA+ICAgICAgICAgUGxlYXNlIGxldCBtZSBrbm93IGlmIGFueXRoaW5n IEkgbWlzc2VkLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFRoYW5rcw0KPiA+ID4gPiA+ID4g UWkNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gPiA+ID4gPiA+IEZyb206IE9yaSBLYW0gPG9yaWthQG52aWRpYS5jb20+DQo+ID4gPiA+ ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDE1LCAyMDIzIDI6MzEgQU0NCj4gPiA+ID4gPiA+ ID4gVG86IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT47IE5CVS1Db250YWN0LVRo b21hcw0KPiA+ID4gPiA+ID4gPiBNb25qYWxvbg0KPiA+ID4gPiA+ID4gPiAoRVhURVJOQUwpIDx0 aG9tYXNAbW9uamFsb24ubmV0PjsNCj4gZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbTsNCj4gPiA+ ID4gPiA+ID4gUmljaGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsN Cj4gPiA+ID4gPiA+ID4gamVyaW5qQG1hcnZlbGwuY29tOyBmZXJydWgueWlnaXRAYW1kLmNvbQ0K PiA+ID4gPiA+ID4gPiBDYzogTWNuYW1hcmEsIEpvaG4gPGpvaG4ubWNuYW1hcmFAaW50ZWwuY29t PjsgWmhhbmcsIEhlbGluDQo+ID4gPiA+ID4gPiA+IDxoZWxpbi56aGFuZ0BpbnRlbC5jb20+OyB0 ZWNoYm9hcmRAZHBkay5vcmc7IGRldkBkcGRrLm9yZw0KPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBS RTogW1JGQ10gbGliL2V0aGRldjoNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSGkgUWks DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IDEuIGl0IG1heSBi ZSB1c2VmdWwgdG8gZ2V0IHNvbWUgZ2VuZXJhbCBjYWxsaW5nIGZsb3cgd2hhdA0KPiA+ID4gPiA+ ID4gPiBjb21lcyBmcm9tIHRoZSBhcHBsaWNhdGlvbiwgd2hhdCBjb21lcyBmcm9tIHRoZSBjb21w aWxlci4NCj4gPiA+ID4gPiA+ID4gU2ltcGxlIGV4YW1wbGUgd2lsbCBiZSBnb29kLg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IEFuIGV4YW1wbGUgb2YgZGVjYXAgVlhMQU4gVENQIGZsb3cgaXMg ZXhwbGFpbmVkIGluIHByb2JsZW0NCj4gPiA+ID4gPiA+IHN0YXRlbWVudA0KPiA+ID4gPiA+ID4g KGh0dHA6Ly9tYWlscy5kcGRrLm9yZy9hcmNoaXZlcy9kZXYvMjAyMy1NYXkvMjY3NzE5Lmh0bWwp DQo+ID4gPiA+ID4gPiBjb3ZlcmluZyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IDEuIHRoZSBwNCBzb3VyY2UgY29kZSwgdGhlIGRlZmluaXRpb24g b2YgdGhlIHRhYmxlIGFuZCBhY3Rpb25zIDIuDQo+ID4gPiA+ID4gPiB0aGUgdGFibGUgLyBhY3Rp b24gaGludHMgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciwgZGV0YWlscyB0bw0KPiA+ID4gPiA+ ID4gZWFjaA0KPiA+ID4gZmllbGRzLg0KPiA+ID4gPiA+ID4gMy4gSG93IHRoZSBDb250cm9sIFBs YW5lIEFwcGxpY2F0aW9uIHV0aWxpemVzIHRoZSBQNCBSdW50aW1lDQo+ID4gPiA+ID4gPiBBUEkg dG8gcHJvZ3JhbSB0aGUgcnVsZSB3aXRoIHRoZSByZXNwZWN0aXZlIHRhYmxlIGFuZCBhY3Rpb24N Cj4gPiA+ID4gPiA+IElEcw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFRoZSBEUERLIFBNRCBp cyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyB0aGUgaGludHMgZ2VuZXJhdGVkIGJ5DQo+ID4gPiA+ ID4gPiB0aGUNCj4gPiA+ID4gPiBjb21waWxlci4NCj4gPiA+ID4gPiA+IFRoaXMgZW5hYmxlcyB0 aGUgUE1EIHRvIGFjY2VwdCByZXF1ZXN0cyBmcm9tIHRoZSBQNCBSdW50aW1lDQo+ID4gPiA+ID4g PiBhbmQgcmVqZWN0DQo+ID4gPiA+ID4gYW55IGluY29tcGF0aWJsZSByZXF1ZXN0Lg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gSSBzZWUgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBkZXZpY2Uvc3lzdGVt IGNhdGVnb3J5DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAxKSBIVyArIFNXL0ZXIGNvbWJpbmF0aW9u IHRoYXQgcmVhbGx5IHVuZGVyc3RhbmRzIHA0IHN0cnVjdHVyZXMNCj4gPiA+ID4gPiBhbmQgam9i IG9mIHRoZSBkcml2ZXIgdG8gaXMgdG8gZ2l2ZSB3b3JrIHRvIEhXL1NXIGFzIHA0DQo+ID4gPiA+ ID4gc3RydWN0dXJlIGdlbmVyYXRlZCBmcm9tIHZlbmRvciBzcGVjaWZpYyBjb21waWxlciBhbmQg cnVudGltZQ0KPiA+ID4gPiA+IGdSUEMgbWVzc2FnZQ0KPiA+ID4gPiA+IDIpIEV4aXN0aW5nIEhX IGFuZCBTVyBkcml2ZXJzIGltcGxlbWVudHMgcnRlLWZsb3cgZHJpdmVyLg0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gRm9yIGl0ZW0gKDEpLCBpZiBlbmQgdXNlciBhcHBsaWNhdGlvbiBpcyB1c2luZyBQ NCBwcm9ncmFtIGFuZCBQNA0KPiA+ID4gPiA+IHJ1bnRpbWUgYW5kIHRoaXMgaXMgX0FQSSBjb250 cmFjdF8gdG8gYXBwbGljYXRpb24sIE5vdCBzdXJlIHdoeQ0KPiA+ID4gPiA+IGVuZCB1c2VyIGNh cmUgaXQgaXMgRFBESyBQTUQgb3Igbm90Pw0KPiA+ID4gPg0KPiA+ID4gPiBUaGF0J3MgdHJ1ZS4g RFBESyBhcyBhIHBsYXRmb3JtIHRoYXQgbWFuYWdlIHRoZSBoYXJkd2FyZSwgaXQgaXMNCj4gPiA+ ID4gcmVxdWlyZWQgdG8NCj4gPiA+IHByb3ZpZGUgYSBjaGFubmVsIHRoYXQgY29ubmVjdHMgYXBw bGljYXRpb25zIHdpdGggdGhlIGhhcmR3YXJlDQo+ID4gPiByZXNwb25zaWJsZSBmb3IgaW1wbGVt ZW50aW5nIHRoZSBjb250cmFjdC4NCj4gPiA+ID4gSW4gdGhpcyBjb250ZXh0LCB0aGUgUE1EIChl dGhkZXYpIHNlcnZlcyBhcyB0aGUgY29uZHVpdCB0aGF0IGNhbg0KPiA+ID4gPiBmdWxmaWxsIHRo aXMNCj4gPiA+IHJlcXVpcmVtZW50Lg0KPiA+ID4NCj4gPiA+IEkgbWVhbnQgdmRldiArIHJhd2Rl diBjb21ibyBjYW4gYmUgdXNlZCB0byB0YWxrIHRvIEZXLg0KPiA+DQo+ID4gT0ssIEkgd2lsbCBj b21tZW50IHRoaXMgdG9nZXRoZXIgd2hlbiB2ZGV2ICsgcmF3ZGV2IGJlIG1lbnRpb25lZCBhZ2Fp bg0KPiBhdCBiZWxvdy4NCj4gPg0KPiA+ID4NCj4gPiA+ID4gPiBJZiBkcml2ZXIgd3JpdGVyIGNh cmUgYWJvdXQgdXNpbmcgRFBESyBmb3IgZHJpdmVyIGZyYW1ld29yayBmb3INCj4gPiA+ID4gPiBF QUwgc2VydmljZXMsIHNpbXBseSB1c2luZyB2ZGV2IGV0YyB3b3VsZCBiZSBlbm91Z2guIFJpZ2h0 Pw0KPiA+ID4gPg0KPiA+ID4gPiBJIG1heSBub3QgZnVsbHkgdW5kZXJzdGFuZCB0aGlzLCBhIHZk ZXYgc2hvdWxkIGhhdmUgYSBkZXZpY2UgdHlwZSwNCj4gPiA+ID4gSSBkaWRuJ3QNCj4gPiA+IHNl ZSBhbnkgaXNzdWUgZm9yIGEgZXRoZGV2IHZkZXYgdG8gaW1wbGVtZW50IHRoZSB0YWJsZS1kcml2 ZW4gQVBJcy4NCj4gPiA+DQo+ID4gPiBTZWUgYWJvdmUuDQo+ID4gPg0KPiA+ID4gVGhlcmUgaXMg YSBsb3Qgb2Ygb3ZlcmxhcCBiZXR3ZWVuIHJ0ZV9mbG93IGFuZCB0YWJsZSBkcml2ZW4gQVBJIGlz IHRoZQ0KPiBpc3N1ZS4NCj4gPiA+IFRvIG1ha2UgdGhpbmdzIHdvcnN0LCB0aGVyZSBpcyBhbHNv IGxpYi90YWJsZS8gQVBJLg0KPiA+DQo+ID4gSSBhc3N1bWUgdGhpcyBpcyBqdXN0IHRoZSBjb25j ZXJuIGFib3V0IG5hbWluZz8gQXQgbGVhc3QsIHRoZXkgYXJlIHRhcmdldCB0bw0KPiBkaWZmZXJl bnQgdXNhZ2UuDQo+IA0KPiBOb3QgdGhlIG5hbWluZyBvZiBsaWJyYXJ5LiBEdXBsaWNhdGUgZnVu Y3Rpb25hbCBBUElzIHRvIGV4cHJlc3MgYSBzcGVjaWZpYyB1c2UNCj4gY2FzZSBmb3IgSFcuDQo+ IA0KPiA+DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gRm9yIGl0ZW0gKDIp LCBJIHRoaW5rLCBpbnRlcmVzdCBpcyBob3cgdG8gb2ZmbG9hZCBwNCB3b3JrbG9hZCB0bw0KPiA+ ID4gPiA+IHJ0ZV9mbG93LiBTbyB0aGF0IF9leGlzdGluZ18gZHJpdmVycyBpbXBsZW1lbnRzIHJ0 ZV9mbG93IGNhbg0KPiA+ID4gPiA+IHN1cHBvcnQNCj4gPiA+ID4gPiBwNCBuYXR1cmFsbHkgaW4g YWRkaXRpb24gdG8gZXhpc3RpbmcgcnRlX2Zsb3cgQVBJLiBJZiB0aGF0IGlzDQo+ID4gPiA+ID4g ZGlyZWN0aW9uLCB0aGVuIHdlIG5lZWQgdG8gdGhlIGZvbGxvd2luZy4NCj4gPiA+ID4NCj4gPiA+ ID4gV2hpbGUgdGhlIGlkZWEgb2Ygb2ZmbG9hZGluZyBQNCB0byBydGVfZmxvdyBpcyBjZXJ0YWlu bHkNCj4gPiA+ID4gaW50ZXJlc3RpbmcsIGl0DQo+ID4gPiBkb2Vzbid0IHNlZW0gdG8gZGlyZWN0 bHkgYWRkcmVzcyBvdXIgaW5pdGlhbCBwcm9ibGVtIHN0YXRlbWVudC4NCj4gPiA+ID4gVGhlIHBy aW1hcnkgb2JqZWN0aXZlIGlzIHRvIGZpbmQgYSBzb2x1dGlvbiBmb3Igb2ZmbG9hZGluZw0KPiA+ ID4gPiBydGVfZmxvdyBpbnRvIGEgUDQtDQo+ID4gPiBiYXNlZCBwaXBlbGluZS4NCj4gPiA+DQo+ ID4gPiBJc24ndCBzYW1lPyBJZiBub3QsIFBsZWFzZSBlbGFib3JhdGUgb24gIlA0IHRvIHJ0ZV9m bG93IG1hcHBpbmciIHZzDQo+ID4gPiAib2ZmbG9hZGluZyBydGVfZmxvdyBpbnRvIGEgUDQtYmFz ZWQgcGlwZWxpbmUiDQo+ID4NCj4gPiBPSyBJIGd1ZXNzIHRoZSBnYXAgaGVyZSBpcyBJIG1heSBu b3QgZnVsbHkgdW5kZXJzdGFuZCBpcyBob3cgd2UNCj4gPiBkZWZpbmVkIHRoZSBjYXNlIG9mIGl0 ZW0oMikgRXhpc3RpbmcgSFcgYW5kIFNXIGRyaXZlcnMgaW1wbGVtZW50cyBydGUtDQo+IGZsb3cg ZHJpdmVyLg0KPiA+DQo+ID4gSWYgd2UgYXNzdW1lIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGlzIG5v dCBQNC1hd2FyZSwgaXQgd2lsbCBjb25zdW1lIGV4aXN0aW5nDQo+IHJ0ZV9mbG93IEFQSSBmb3Ig ZmxvdyBvZmZsb2FkaW5nLiBJbiB0aGlzIGNhc2UsIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIGltcGxl bWVudA0KPiBpdCBpbiB0aGUgUE1ELCB3aGljaCB3aWxsIGJlIGEgaGlnaGx5IGhhcmR3YXJlLXNw ZWNpZmljIHRhc2suIERvIHlvdSBwcm9wb3NlDQo+IGdlbmVyYWxpemluZyB0aGlzIGNvbW1vbiBw YXJ0Pw0KPiA+DQo+ID4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBQ NC1hd2FyZSwgd2UgY2FuIGFzc3VtZSB0aGF0DQo+IHRoZXJlIHdvbid0IGJlIGEgbmVlZCBmb3Ig dHJhbnNsYXRpb24gYmV0d2VlbiBQNCB0b2tlbnMgYW5kIHJ0ZV9mbG93DQo+IHByb3RvY29scyBp biB0aGUgUE1ELg0KPiANCj4gSSBhZ3JlZSwgVHJhbnNsYXRpb24gaXMgQkFELiBUaGVyZSBhcmUg dHdvIGVsZW1lbnRzIHRvIHRoYXQuDQo+IDEpaWYgaXQgaXMgcDQgYXdhcmUgYXBwbGljYXRpb24s IHdoeSBib3RoZXIgd2l0aCBEUERLIGFic3RyYWN0aW9uPw0KPiAyKUNhbiB3ZSB1c2UgY29tcGls ZXIgdGVjaG5pcXVlcyB0byBhdm9pZCB0aGUgY29zdCBvZiB0cmFuc2xhdGlvbiBpZiBQNC0NCj4g YXdhcmUgcGF0aCBpcyBuZWVkZWQgaW4gRFBESy4gUmF0aGVyIHRoYW4gY3JlYXRpbmcgeWV0IGFu b3RoZXIgbGlicmFyeS4gSW4NCj4gdGhpcyBjb250ZXh0LCB0aGF0IHdvdWxkIHRyYW5zbGF0ZSB0 byBzb21lIG9mIHlvdXIgY29tcGlsZXIgYW5kIEZXIHdvcmsNCj4gbWFraW5nIGFzIGdlbmVyaWMg c28gdGhhdCBfYW55XyBvdGhlciBydGVfZmxvdyBiYXNlZCBkcml2ZXIgY2FuIHVzZSBhbmQNCj4g aW1wcm92ZSBpdC4NCg0KDQpPaywgSSB3b3VsZCBsaWtlIHRvIGdhaW4gYSBiZXR0ZXIgdW5kZXJz dGFuZGluZy4gQmVsb3cgaXMgbXkgY3VycmVudCB1bmRlcnN0YW5kaW5nOg0KDQpUaGVyZSBhcmUg bm8gcGxhbnMgdG8gaW50cm9kdWNlIGFueSBuZXcgQVBJIGZyb20gRFBESy4gSG93ZXZlciwgeW91 ciBwcm9wb3NhbCBzdWdnZXN0cyB0aGUgY3JlYXRpb24gb2YgYSB0b29sLCBzdWNoIGFzIGEgY29t cGlsZXIsIHdoaWNoIHdvdWxkIGFzc2lzdCBpbiBnZW5lcmF0aW5nIGEgdHJhbnNsYXRpb24gbGF5 ZXIgZnJvbSBQNCB0YWJsZS9hY3Rpb25zIHRvIHJ0ZV9mbG93IGZvciB1c2VyIGFwcGxpY2F0aW9u IGxpa2UgcDQgcnVudGltZSBiYWNrZW5kIHRoYXQgYmFzZWQgb24gRFBESy4NCg0KQ291bGQgeW91 IHByb3ZpZGUgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBkZXNpZ24/IFNwZWNpZmljYWxseSwgSSB3 b3VsZCBsaWtlIHRvIGtub3cgd2hhdCB0aGUgaW5wdXQgZm9yIHRoZSBjb21waWxlciBpcyBhbmQg d2hvIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoYXQgaW5wdXQsIGFzIHdlbGwgYXMg dGhlIHByb2Nlc3MgaW52b2x2ZWQuDQoNCkkgYXBvbG9naXplIGlmIEkgaGF2ZSBub3QgZ3Jhc3Bl ZCB0aGUgY29tcGxldGUgcGljdHVyZSwgYnV0IEkgd291bGQgYXBwcmVjaWF0ZSB5b3VyIHBhdGll bmNlLg0KDQo+IA0KPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gV2UgaGF2ZSBp ZGVudGlmaWVkIHR3byBkaXN0aW5jdCB1c2UgY2FzZXM6DQo+ID4gPiA+DQo+ID4gPiA+IFA0LUF3 YXJlIEFwcGxpY2F0aW9uczoNCj4gPiA+ID4NCj4gPiA+ID4gRm9yIGFwcGxpY2F0aW9ucyB0aGF0 IGFyZSBhbHJlYWR5IFA0IGF3YXJlLCB0aGUgcHJvcG9zYWwgc3VnZ2VzdHMNCj4gPiA+ID4gdGhl DQo+ID4gPiBpbnRyb2R1Y3Rpb24gb2YgYSBuZXcgc2V0IG9mIEFQSXMgdG8gcnRlX2Zsb3cuDQo+ ID4gPiA+IFRoZXNlIEFQSXMgYWltIHRvIGZhY2lsaXRhdGUgc2VhbWxlc3MgaW50ZWdyYXRpb24g YmV0d2VlbiBEUERLIGFuZA0KPiA+ID4gPiBQNA0KPiA+ID4gYXdhcmUgYXBwbGljYXRpb25zLg0K PiA+ID4NCj4gPiA+IENvdW50ZXIgYXJndW1lbnQgZm9yIHRoYXQgaXMsIElmIHRoZSBQNCBpcyBB UEkgY29udHJhY3QgdGhlbiB3aHkNCj4gPiA+IGJvdGhlciB3aXRoIERQREsgYWJzdHJhY3Rpb24g dXNlIHZkZXYgKyAgcmF3ZGV2IHRhbGsgdG8gRlcgYXMgUE1EIGlzDQo+ID4gPiBqdXN0IHBhc3Np bmcgbWVzc2FnZSB0byBGVy4gRlcgaXMgZG9pbmcgdGhlIGhlYXZ5IGxpZnRpbmcgYW55d2F5Lg0K PiA+DQo+ID4gV2UgYXJlIGF0dGVtcHRpbmcgdG8gZ2VuZXJhbGl6ZSB0aGUgY29tbW9uIGFzcGVj dHMsIGNvbnNpZGVyaW5nIHRoYXQgUDQNCj4gUnVudGltZSBpcyBhIHN0YW5kYXJkIEFQSS4gSXQg YXBwZWFycyB3b3J0aHdoaWxlIHRvIGV4cG9zZSBjZXJ0YWluIEFQSXMgdGhhdA0KPiBjYW4gYXNz aXN0IGl0cyBiYWNrZW5kIGltcGxlbWVudGF0aW9uLg0KPiANCj4gSSBhZ3JlZS4gSWYgYmFja2Vu ZCBpcyBidWlsdCBvbiB0b3AgcnRlX2Zsb3cgYW5kIHNvbWUgY29tcGlsZXIgYml0cy4gSSB0aGlu aywNCj4gbXVsdGlwbGUgY29uc3VtZXIgY2FuIHVzZSBpdC4NCj4gT3RoZXJ3aXNlLCB3ZSBhcmUg bWFraW5nIHRoZSBBUEkgZm9yIGEgcDQgRlcgYmFja2VuZCBpcyBuZWVkZWQuDQo+IA0KPiANCj4g PiBJIG1heSBuZWVkIHNvbWUgdGltZSB0byB1bmRlcnN0YW5kIHRoZSBjb25jZXB0IG9mIHZkZXYg K3Jhd2RldiBjb21ibw0KPiBzb2x1dGlvbiwgY3VycmVudGx5IG9uZSBxdWVzdGlvbiBpbiBteSBt aW5kIGlzOiBpbiB0aGlzIHNvbHV0aW9uLCBpcyBhYm92ZQ0KPiBjb25zaWRlcmF0aW9uIGNvdmVy ZWQ/DQo+ID4NCj4gPiBUaGFua3MNCj4gPiBRaQ0KPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4gTm9uLVA0IEF3YXJlIEFwcGxpY2F0aW9uczoNCj4gPiA+ID4NCj4gPiA+ID4gSW4g dGhlIGNhc2UsIG91ciBmb2N1cyBpcyBvbiBicmlkZ2luZyB0aGUgZXhpc3RpbmcgcnRlX2Zsb3cg QVBJIHRvDQo+ID4gPiA+IHRoZQ0KPiA+ID4gdW5kZXJseWluZyBQNCBwaXBlbGluZS4NCj4gPiA+ ID4gQ3VycmVudGx5LCB3ZSBoYXZlbid0IGlkZW50aWZpZWQgYW55IHNpZ25pZmljYW50IGdhcHMg aW4gdGhlIERQREsgQVBJcy4NCj4gPiA+ID4gVGhlIGtleSBjaGFsbGVuZ2UgbGllcyBpbiBoYW5k bGluZyB0aGUgdHJhbnNsYXRpb24gcHJvY2VzcyB3aXRoaW4NCj4gPiA+ID4gdGhlIFBNRA0KPiA+ ID4gPg0KPiA+ID4gPiBUaGFua3MNCj4gPiA+ID4gUWkNCj4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ ID4gPiA+IGEpSW1wcm92ZSBwNC1kcGRrIGNvbXBpbGVyIGJhY2tlbmQgb3IgYWRkIG5ldyBjb21w aWxlciBEUERLDQo+ID4gPiBiYWNrZW5kDQo+ID4gPiA+ID4gdG8gdW5kZXJzdGFuZCB0aGUgcnRl X2Zsb3cgYW5kIGhhdmUgaGVscGVyIGxpYnJhcnkgaW4gRFBESyB0bw0KPiA+ID4gPiA+IHVuZGVy c3RhbmQgdGhlIGNvbXBpbGVyIHNwZWMgZmlsZSB0byB0cmFuc2xhdGUgdG8gcnRlX2Zsb3cNCj4g PiA+ID4gPiBvYmplY3RzIGIpU2ltaWxhciBjYXNlIGZvciBydW50aW1lIEFQSS4gaS5lIEhhdmUg aGVscGVyDQo+ID4gPiA+ID4gZnVuY3Rpb25zIHRvIHRyYW5zbGF0ZQ0KPiA+ID4gPiA+IHA0IE1h dGNoRmllbGQgbmFtZSBldGMgdG8gYXBwcm9wcmlhdGUgcnRlX2Zsb3cgb2JqZWN0cy4NCj4gPiA+ ID4gPiBjKUVuaGFuY2UgYmFzZSBydGVfZmxvdyBzcGVjaWZpY2F0aW9uIGlmIHRoZXJlIGFyZSBh bnkNCj4gPiA+ID4gPiBmdW5kYW1lbnRhbCBnYXBzIHRvIGV4cHJlc3MgdGhlIG5ldyBwYXR0ZXJu IG9yIGFjdGlvbnMgKHdoaWNoIGlzDQo+ID4gPiA+ID4gbm90IHNwZWNpZmljIHRvDQo+ID4gPiA+ ID4gcDQgYW5kIGFwcGxpY2FibGUgZm9yIGFueSBmbG93IG1hdGNoaW5nIHVzZSBjYXNlKQ0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gSWYgd2UgaW50cm9kdWNlIGNvbXBpbGVyIGluIHRoZSBwaXBlbGlu ZSwgYSBsb3Qgb2YgdHJhbnNsYXRpb24NCj4gPiA+ID4gPiB3aWxsIGdldCBpbiB0aGUgc2xvd3Bh dGguIEFuZCBmb3IgcnVudGltZSBBUEksIHRoZSB0cmFuc2xhdGlvbg0KPiA+ID4gPiA+IHByaW1h cmlseSB3aWxsIGJlIG5hbWUgdG8gcnRlX2Zsb3cgb2JqZWN0IGxvb2t1cCAod2hpY2ggaXMgbm90 DQo+ID4gPiA+ID4gdGhhdCBjb3N0bHkpIGFuZCB1c2luZyBydGVfZmxvd190ZW1wbGF0ZSBldGMu IHRvIGFtb3J0aXplIHRoZSBjb3N0IGJ5DQo+IG1ha2luZyBpdCBidXJzdC4NCj4gPiA+ID4gPg0K PiA+ID4gPiA+ICBKdXN0IG15IDJjLg0KPiA+DQo=