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 6511A41CD6; Thu, 18 May 2023 16:33:34 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2255042B71; Thu, 18 May 2023 16:33:34 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2045.outbound.protection.outlook.com [40.107.237.45]) by mails.dpdk.org (Postfix) with ESMTP id 035824014F; Thu, 18 May 2023 16:33:33 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O3BJF6WVP8zs+pGXGPOteKp4tzoO2p++gz8ILgtOwll8Do6EC4YxlhY1dXyu8XfGd3KVVUeXCHv50H9lEG4LbI0x5X7jpgsBZ7H7V1m8KvN4aCWVeneSOJ+qaWg6WiSZyHiT27xxxzUm+XdfK8XwP92NP7mDJix2swMqNpM4wZGuaDG2vEvRsiRdojT3q/+PV1DIb4w2QA5PBIuvA/sxAiydQAzhtRMTtHtoz48xIWuN7Op71pSRYvT2jabxVYQMssdGY6zjs3VlWXQjwcptE7WYk1y/0ZY9f+gpFTl9KMwSACJnEfRxoql1n7MzSgb772vsLNt5H3l83SYuq056Gg== 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=ttDGlzDSTQbv4N7xZm4/VkrCEFfQRhNys+WrcYjnpeQ=; b=GgHpyM8TgryZ5Zrx45yMuXKmTEAxYBJpjlc11ij2mLHtL+RINDKRhHs+ClkWuzuTZQUnAprXvzZYn1u4Xe0X8V9UTqDmEdnogzW0cj3HdXbZaLJjx3Xusdpg9vRY2p3wTRBChSr8s1I+mKDKDDln+bey0CPfbibHzg+WjMKcha+vfAVc6+KQXP7wjmVowFU56k+O1OCm6O6ZQDIXQwEbJZRiJq2QCZyyGMRmlGNJ11QT1dZ5mmdABfI7YKlDFoeKjh5rfqa5QL0/bMwKyDDhqCp3wpW26kf7CgNPOpLE+R9jRq1ZpeecQHZzp0KSApBva7hRLvE7h35KKTaP1QumJw== 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=ttDGlzDSTQbv4N7xZm4/VkrCEFfQRhNys+WrcYjnpeQ=; b=FmRCeeAATmSTte6Va7BVuzFS1b/bSUPxhgaIZLdLTn3fg9nd263JAMakSJtYkZ9I+9YI63YpNYQ55b/i8leBbVCncCkcTTzBB/7zTS8YEfzPJHObmy/9kHo6KapT9eUsoVZetz5+kjFWhIT+Hvy8Plct/nelDnGLN8sjpFNRDu7ct4MfjijI+EgDFRIPbTZwDRBcUlrkbaSLGicaSPOrTBbMbWkhUhmCYiErL+mtvwECqRpnCuauTg745FC6vfIFDY5ZV2JrlF6bra2M+m7012W0yXywskEDRhuYXi92sfioBheOXrlBKgnUHNP7wqgkoGtYCHpEyM0AA+AmdcDUCQ== Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by IA0PR12MB8302.namprd12.prod.outlook.com (2603:10b6:208:40f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.17; Thu, 18 May 2023 14:33:30 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::2283:65bb:1559:9dcf]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::2283:65bb:1559:9dcf%4]) with mapi id 15.20.6411.017; Thu, 18 May 2023 14:33:30 +0000 From: Ori Kam To: "Zhang, Qi Z" , "dev@dpdk.org" CC: "techboard@dpdk.org" , "Richardson, Bruce" , "Burakov, Anatoly" , "Wiles, Keith" , "Liang, Cunming" , "Wu, Jingjing" , "Zhang, Helin" , "Mcnamara, John" , "Xu, Rosen" Subject: RE: seeking community input on adapting DPDK to P4Runtime backend Thread-Topic: seeking community input on adapting DPDK to P4Runtime backend Thread-Index: AdmBdydpWI/N9jo8SXuEnV2EuOZZewHVxP7QACYE/+AAC4PasA== Date: Thu, 18 May 2023 14:33:30 +0000 Message-ID: References: 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=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW2PR12MB4666:EE_|IA0PR12MB8302:EE_ x-ms-office365-filtering-correlation-id: 865220a7-5722-460f-da8a-08db57acd9c9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cCu4qUDFFEhIL+R4HUHY6GNDTeYuPspVhxiYSkyM511AniIwfE2EHen0SY9sYfeMvgMSEW9c4uUFOxCqlSVJAJLm1OwwQ36t6YzFrIt3STLGL6PH+yktPCTEwtq9A90aHV5AzeS+PvO6RtsOiHdc2xFKLgAUV6+NuyBf2JoxsmwlzZDasP22KY9p6O7ccIi31v5vMZ0wA4XHa3SWA70a0WLYBgnTtlLRQ96nNmA1qx819iaw43PKN1ZiOeB7M7IGbE1tFN74ggijJlM6inUCFe2EG34++z1a6UaGt6SaYO1umkogA+6mNVbt6NNcqS625UuhXWvHsXF8j5aPpg8pdExmqPVwnDQsvFs7ha4G79dJc6ifSC0C1cc+XpExmNbq/TovkaCGHLQMTUyu8cmVvJ7mXagR0RNQ2VWHYKv8Uvvd9ZQaSC6AkSgxnF86K7Ez+Bly1qShCbKVW1n6fBFbqO/8aR2j3QZDePrFWabB8gcwLapf8M5QkQFqS2kPIkiteK0R9BDgCNGqjxotBCirRpPATKYf3WvorBbNSmJQXPO5umbVtPN96ZtzGsE10ckmObOk8Lp13thSwVvKL5aTlQB3bP6Jkay1G/JrtqjSsj94ES1CbqXN6dEzgHQYaDgd2G0d8vWV2ODE6txvgfVdhZcXKPPBY2E3815VS/WPOI3Dy3jd+so4Rxe1B6D9+oYs 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:(13230028)(4636009)(346002)(39860400002)(136003)(376002)(396003)(366004)(451199021)(110136005)(478600001)(55016003)(9686003)(53546011)(6506007)(26005)(186003)(83380400001)(66899021)(966005)(5660300002)(52536014)(7416002)(7696005)(30864003)(2906002)(86362001)(38070700005)(71200400001)(33656002)(8676002)(8936002)(4326008)(76116006)(122000001)(66556008)(66946007)(66476007)(316002)(66446008)(41300700001)(38100700002)(54906003)(64756008)(32563001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RktuUU54dGVCTUtyVFBzQ0pkQ0VVZENRUjZNM1lxOUR3aHdTekhiOW9TaW5F?= =?utf-8?B?d3ZDdm1lS0ZOWE02K1duN1lFWk5yWFFjeDQrSzF5SzZSOWdDcnhobzdELy9V?= =?utf-8?B?OXdMM0pIeGtvdFkyaTEwOG8xUG0yakxZRTM3bDhmMlRMMUs4Q0pvRzZVWjN3?= =?utf-8?B?M3F4a2IzakltWFpnaWtnVWFnWjRpUEpNeVVITmxuV2pFVzVsak9KbDVqYWJ3?= =?utf-8?B?dThMVS9RUGhKRWhmYkFobE1xSEpwLzMvWG5BdGFQRHNlZ2JxT0dkMExqVW5i?= =?utf-8?B?aTdIK1hTQ3Z1Yzh4VmI1bWVVUEd0ZVUzZys3S05BMHh4YzIwUEJITkswNk0y?= =?utf-8?B?WkJSVUljRWI4L2dmKzBzd0dhVEYvc21OVW1mYnBPd29xc3JSRkNBajM4TjZi?= =?utf-8?B?MFE4TFNpOGtUMDF2c3NMNS85RnIvL2VRM2ZoeU9CaUVLV1FaVlI2cmRQa24z?= =?utf-8?B?NmtvcXpiZTg4bGhLRngvNEJCcHlTaXhIUWRHTzIwZ3R4TnFCZXFKTFNyWlFL?= =?utf-8?B?UUlHRVFKZlgycm53aDQ1bm1ZdWNkM1pIQkFzVWl0b1F6RGl3eWhtZ3FsaERO?= =?utf-8?B?VllpOEtzM3VWeXdKYUpXR0JDVWQ1ZE9iSkdYcTFmOFdqcDhLZTZWeXFOME91?= =?utf-8?B?MS9uU3huS0RoZEpOaDMyQ2xhd3ZIUm5aR29qL1A5bUZha2NsaGFSN040Z3Vk?= =?utf-8?B?SzQ1S2R3bXVoSGdqdW5PcW1LMWdsMzRFcHdOVUJNQkVrVkt4dWFkb1dGRjNN?= =?utf-8?B?OS81cTZEcmVOTGtTN2x1YVFPcnBpN2NBeWZ1aUprNi9idmZjYURLUUI1eWdH?= =?utf-8?B?UVVFeTRFQlhPK1dXWDkyYzBRdG5HcUxqb1pLNGZlcXdycHVpTGZlY04zMDA5?= =?utf-8?B?WCtEYnF6Q3hYdmxrY2V2MU9SaVREdW9JLzZPVTQ4YjJUa3EwOFFpUzZmYnBv?= =?utf-8?B?cTFtaHorVVVqeHBZL3dTekg3RjhyZVNTd2F4aTJETlN3YTJxYS8wbkVrR1lw?= =?utf-8?B?ZmdTNnVIdUh0TEllaW9MWGRQbWd0b3dFa0tVOG9FRzlBTER3ek5CSVJJL3RM?= =?utf-8?B?VGdLQjZyZ29paVBqc3ErdlF1N1lKT2t4QkVJTnhNQzVwMzR0ejNDQlFSeU9B?= =?utf-8?B?MjYzOWFyMTdSb1JGZGxJbW1ORmR3ZzlOTUpLdnluM3Z0UndETmNCMGxXL1FP?= =?utf-8?B?M0VtMi9ybVNpaWlRTklFOE1QQlpycVI5ckxXN29McjQxaW5CUDZDWHUydjR2?= =?utf-8?B?RDQ2S2NmejBOTGRvK3ZlMzN6ZUx2WEZUTnZFVUFTaG4ybmdHNi96dXdWd0NI?= =?utf-8?B?L01VS1ZEbWRjRW9GYzAvVjFzay8rdjVDYU5SaVFHZTZaRkF0dGYvOGo5NTBR?= =?utf-8?B?Sk8rdVNsMkJ0ZEViNzA1QmJtZkpEbUFXRGZRWFkxTkxUQ1RMYU9sd2g0Q3lX?= =?utf-8?B?T0N1MDdOb1JVZ282NkZPSlJITkowOENpanhjYUl6dnd6N2RGUjFVNUdicEpz?= =?utf-8?B?ZGlwQTdGTXNwS082VUFaQmhNZzNmaFUxcXUrVTlwL0RSTGc2NDA4VVdnL1l5?= =?utf-8?B?NmRuR1o2LzhsaGRnUXFMK0MyNHByRUpEaS96K0ZYOEV3RzRrU3Eycm5oRVVW?= =?utf-8?B?UDdFZHdGWVowNmpqZ2RYZGdFRXhSY1lhWmNFOGVTbWlaci9wSFdLekxRV0tp?= =?utf-8?B?citXSkQ4Qjl5dHd3akx2ejhSQjd3amE0OHk0QUQyWXRmdUVreDJlKzA3MFI1?= =?utf-8?B?bFFyUjc5QzROR010eHZobStVbkcvRldXRTNOS3RMRTdENThzWDgyTlNjZWpK?= =?utf-8?B?L3RVMTJQb3JoTHZKZ3FuUjJzSXpGbzBTVzVBYXRYQ0JNU09LVnZLZDA5YTc4?= =?utf-8?B?WnBlazJSdmsxMVV0R3BtNll3bVdqK1VIWWtSRFdTT3l1bVVveUtSVEJETmVM?= =?utf-8?B?OGk2aXJhYytEQ3N3dGNzU2dHa2JMMzNjK2FrbWV0UEZmbG8xbkZuMW5lUDlo?= =?utf-8?B?MDNDWXRkcUNmWnhwTlNHSGNDZWpjMFhwRWRjQ3Uwb1lMVTlkazdpeWltREhY?= =?utf-8?B?WEZrUVdXSE9teUUza1pYbHgwa3hpNkdmb2FnYlk0VXRCdElrZHZUSHFjbkxm?= =?utf-8?Q?AfLI=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: 865220a7-5722-460f-da8a-08db57acd9c9 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 May 2023 14:33:30.2362 (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: L6c2NZDI7deXb4TxEefj6JZpoKmTbezXTE8BFPuu01e/dTGiYFq1MCMV9FVT6Hv+DzZqI2BtPsnKbm6ebO+eRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8302 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 SGkgWmhhbmcsDQoNCkkgdGhpbmsgd2UgYm90aCB3YW50IHRoZSBzYW1lIHRoaW5nIGFuZCBzaGFy ZSB0aGUgc2FtZSBiYXNpYyBjb25jZXB0cy4NCg0KUFNCLCBzb21lIGFuc3dlcnMsDQoNCkJlc3Qs DQpPcmkNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFpoYW5nLCBR aSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE1heSAxOCwgMjAy MyAxOjMzIFBNDQo+IA0KPiANCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiBGcm9tOiBPcmkgS2FtIDxvcmlrYUBudmlkaWEuY29tPg0KPiA+IFNlbnQ6IFdlZG5lc2RheSwg TWF5IDE3LCAyMDIzIDExOjE5IFBNDQo+ID4gVG86IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGlu dGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+IENjOiB0ZWNoYm9hcmRAZHBkay5vcmc7IFJpY2hh cmRzb24sIEJydWNlDQo+IDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT47DQo+ID4gQnVyYWtv diwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNvbT47IFdpbGVzLCBLZWl0aA0KPiA+ IDxrZWl0aC53aWxlc0BpbnRlbC5jb20+OyBMaWFuZywgQ3VubWluZyA8Y3VubWluZy5saWFuZ0Bp bnRlbC5jb20+OyBXdSwNCj4gPiBKaW5namluZyA8amluZ2ppbmcud3VAaW50ZWwuY29tPjsgWmhh bmcsIEhlbGluIDxoZWxpbi56aGFuZ0BpbnRlbC5jb20+Ow0KPiA+IE1jbmFtYXJhLCBKb2huIDxq b2huLm1jbmFtYXJhQGludGVsLmNvbT47IFh1LCBSb3Nlbg0KPiA+IDxyb3Nlbi54dUBpbnRlbC5j b20+DQo+ID4gU3ViamVjdDogUkU6IHNlZWtpbmcgY29tbXVuaXR5IGlucHV0IG9uIGFkYXB0aW5n IERQREsgdG8gUDRSdW50aW1lDQo+ID4gYmFja2VuZA0KPiA+DQo+ID4gSGkgWmhhbmcsDQo+ID4N Cj4gPiBydGVfZmxvdyBpcyBhbiBleGNlbGxlbnQgY2FuZGlkYXRlIGZvciBpbXBsZW1lbnRpbmcg UDQuDQo+ID4gV2UgYW5kIHNvbWUgaW50ZXJuYWwgdGVzdHMgdGhhdCBzaG93cyBncmVhdCBwcm9t aXNlIGluIHRoaXMgcmVnYXJkLg0KPiA+DQo+ID4gSSB3b3VsZCBiZSB2ZXJ5IGhhcHB5IHRvIHN1 cHBseSBhbnkgbmVlZGVkIGluZm9ybWF0aW9uIGFuZCBoYXZlDQo+ID4gZGlzY3Vzc2lvbiBvbiBo b3cgdG8gY29udGludWUgd2l0aCB0aGlzIHByb2plY3QuDQo+IA0KPiBUaGFuayB5b3UgT3JpISBQ bGVhc2UgY2hlY2sgbXkgZm9sbG93aW5nIGNvbW1lbnRzDQo+IA0KPiBSZWdhcmRzDQo+IFFpDQo+ IA0KPiA+DQo+ID4gUGxlYXNlIHNlZSBpbmxpbmUgZGV0YWlsZWQgYW5zd2Vycy4NCj4gPg0KPiA+ IEJlc3QsDQo+ID4gT3JpIEthbQ0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50 ZWwuY29tPg0KPiA+ID4gU2VudDogTW9uZGF5LCBNYXkgOCwgMjAyMyA5OjQwIEFNDQo+ID4gPiBT dWJqZWN0OiBzZWVraW5nIGNvbW11bml0eSBpbnB1dCBvbiBhZGFwdGluZyBEUERLIHRvIFA0UnVu dGltZQ0KPiA+IGJhY2tlbmQNCj4gPiA+DQo+ID4gPiBIaToNCj4gPiA+DQo+ID4gPiBPdXIgdGVh bSBpcyBjdXJyZW50bHkgd29ya2luZyBvbiBkZXZlbG9waW5nIGEgRFBESyBQTUQgZm9yIGEgUDQt DQo+ID4gPiBwcm9ncmFtbWVkIG5ldHdvcmsgY29udHJvbGxlciwgYmFzZWQgb24gY3VzdG9tZXIg ZmVlZGJhY2sgdG8NCj4gaW50ZWdyYXRlDQo+ID4gPiBEUERLIGludG8gdGhlIFA0UnVudGltZSBi YWNrZW5kIC5baHR0cHM6Ly9wNC5vcmcvcDQtDQo+ID4gPiBzcGVjL3A0cnVudGltZS9tYWluL1A0 UnVudGltZS1TcGVjLmh0bWxdDQo+ID4gPg0KPiA+ID4gKCopIEhvd2V2ZXIsIHdlIGFyZSBmYWNp bmcgY2hhbGxlbmdlcyBpbiBhZGFwdGluZyBEUERLJ3MgcnRlX2Zsb3cgQVBJDQo+ID4gPiB0byB0 aGUgUDRSdW50aW1lIEFQSSwgcHJpbWFyaWx5IGR1ZSB0byB0aGUgdHJhbnNpdGlvbiBmcm9tIGEN Cj4gPiA+IHRhYmxlLWJhc2VkIEFQSSB3aXRoIGZpZWxkcyBvZiBhcmJpdHJhcnkgYml0cyB3aWR0 aCBhdCBhcmJpdHJhcnkNCj4gPiA+IG9mZnNldCB0byBhIHByb3RvY29sLWJhc2VkIEFQSSAobW9y ZSBkZXRhaWwgYmUgZGVzY3JpYmVkIGluIHBvc3Qtc2NyaXB0KS4NCj4gPiA+DQo+ID4gPiBXZSBh cmUgc2Vla2luZyBzdWdnZXN0aW9ucyBhbmQgYmVzdCBwcmFjdGljZXMgZnJvbSB0aGUgb3Blbi1z b3VyY2UNCj4gPiA+IGNvbW11bml0eSB0byBoZWxwIHVzIHdpdGggdGhpcyBpbnRlZ3JhdGlvbi4g U3BlY2lmaWNhbGx5LCB3ZSBhcmUNCj4gPiA+IGludGVyZXN0ZWQgaW4NCj4gPiA+IGxlYXJuaW5n Og0KPiA+ID4NCj4gPiA+ICgqKSBJZiBhbnlvbmUgaGFzIHByZXZpb3VzbHkgYXR0ZW1wdGVkIHRv IG1hcCBydGVfZmxvdyB0byBQNC1iYXNlZA0KPiA+IGRldmljZXMuDQo+ID4NCj4gPiBXZSBkaWQg dHJ5IHN1Y2Nlc3NmdWxseS4NCj4gPg0KPiA+ID4gKCopIFRob3VnaHRzIG9uIGhvdyB0byBtYXAg ZnJvbSB0YWJsZS1iYXNlZCBtYXRjaGluZyB0byBwcm90b2NvbC0NCj4gYmFzZWQNCj4gPiA+IG1h dGNoaW5nIGxpa2UgaW4gcnRlX2Zsb3cuDQo+ID4NCj4gPiBSdGVfZmxvdyBpcyB0YWJsZSBiYXNl ZCAoZ3JvdXBzKSwgbm93IHdpdGggdGhlIGludHJvZHVjdGlvbiBvZiB0ZW1wbGF0ZQ0KPiBBUEkN Cj4gPiBydGVfZmxvdyBpcyBldmVuIG1vcmUgdGFibGUgYmFzZWQgKHdlIGFkZGVkIHRoZSBjb25j ZXB0IG9mIHRhYmxlcykgd2hpY2gNCj4gPiBhcmUganVzdCB3aGF0DQo+ID4gcDQgcmVxdWlyZXMu DQo+IA0KPiBZZXMsIHRoZSBydGVfZmxvdyB0ZW1wbGF0ZSBjYW4gYmUgdXNlZCB0byBtYXAgYSBz ZXF1ZW5jZSBvZiBwYXR0ZXJucyB0byBhDQo+IFA0IHRhYmxlIGFuZCBhIHNlcXVlbmNlIG9mIGFj dGlvbnMgdG8gYSBQNCBhY3Rpb24uIEhvd2V2ZXIsIFVzaW5nIGEgZml4ZWQNCj4gcnRlX2Zsb3cg dGVtcGxhdGUgY2FuIGJlIHByb2JsZW1hdGljIHdoZW4gaGFuZGxpbmcgZGlmZmVyZW50IFA0IHBy b2dyYW1zDQo+IGluIHRoZSBzYW1lIGRyaXZlci4gVG8gcHJvdmlkZSBtb3JlIGZsZXhpYmlsaXR5 LCB0aGUgbWFwcGluZyBvZiBwYXR0ZXJucyBhbmQNCj4gYWN0aW9ucyBjYW4gYmUgZXh0ZXJuYWxp emVkIGludG8gYSBjb25maWd1cmF0aW9uIGZpbGUgb3IgcGFydCBvZiB0aGUgZmlybXdhcmUNCj4g Y2FuIGJlIGxlYXJuZWQgZnJvbSBkcml2ZXIsIGFsbG93aW5nIGZvciBjdXN0b21pemF0aW9uIGJh c2VkIG9uIHRoZSBzcGVjaWZpYw0KPiByZXF1aXJlbWVudHMgb2YgZWFjaCBQNCBwaXBlbGluZS4g YWN0dWFsbHkgd2UgaGF2ZSBlbmFibGVkIHRoaXMgYXBwcm9hY2ggaW4NCj4gb3JkZXIgdG8gYWNj b21tb2RhdGUgZGlmZmVyZW50IFA0IHByb2dyYW1zLg0KPiANCj4gSG93ZXZlciwgYW4gYWx0ZXJu YXRpdmUgYXBwcm9hY2ggdG8gY29uc2lkZXIgaXMgd2hldGhlciBpdCB3b3VsZCBiZSBmZWFzaWJs ZQ0KPiB0byBkaXJlY3RseSBleHBvc2UgdGhlIFA0IHRhYmxlIGFuZCBhY3Rpb24gbmFtZXMgb3Ig SURzIHRvIHRoZSBhcHBsaWNhdGlvbiwNCj4gcmF0aGVyIHRoYW4gcmVseWluZyBvbiBydGVfZmxv dyB0ZW1wbGF0ZXMuIFRoaXMgYXBwcm9hY2ggb2ZmZXJzIHNldmVyYWwNCj4gcG90ZW50aWFsIGJl bmVmaXRzOg0KPiANCj4gSW50ZWdyYXRpb24gd2l0aCBQNHJ1bnRpbWUgQmFja2VuZDogQnkgZXhw b3NpbmcgdGhlIFA0IHRhYmxlIGFuZCBhY3Rpb24NCj4gbmFtZXMgb3IgSURzIGRpcmVjdGx5LCBE UERLIGNvdWxkIGJlIGVhc2lseSBpbnRlZ3JhdGVkIGFzIGEgUDRydW50aW1lDQo+IGJhY2tlbmQu IFRoaXMgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgdHJhbnNsYXRpb24gZnJvbSB0aGUgUDRydW50 aW1lIEFQSSB0bw0KPiBydGVfZmxvdyB0ZW1wbGF0ZXMgaW4gdGhlIGFwcGxpY2F0aW9uLCBzaW1w bGlmeWluZyB0aGUgaW50ZWdyYXRpb24gcHJvY2Vzcy4NCj4gDQo+IEVsaW1pbmF0aW9uIG9mIE1h bnVhbCBNYXBwaW5nOiBFeHBvc2luZyB0aGUgUDQgdGFibGUgYW5kIGFjdGlvbiBuYW1lcyBvcg0K PiBJRHMgdG8gdGhlIGFwcGxpY2F0aW9uIHdvdWxkIHJlbW92ZSB0aGUgcmVxdWlyZW1lbnQgZm9y IHRoZSBlbmdpbmVlcmluZw0KPiB0ZWFtIHRvIG1hbnVhbGx5IG1hcCBlYWNoIHBpcGVsaW5lIHRv IHNwZWNpZmljIHJ0ZV9mbG93IHRlbXBsYXRlcy4gVGhpcyBpcw0KPiBwYXJ0aWN1bGFybHkgYmVu ZWZpY2lhbCBpbiBjYXNlcyB3aGVyZSBoYXJkd2FyZSB2ZW5kb3JzIHByb3ZpZGUgY3VzdG9tZXJz DQo+IHdpdGggYSB0b29sY2hhaW4gdG8gY3JlYXRlIHRoZWlyIG93biBQNCBwaXBlbGluZXMgYnV0 IGRvIG5vdCBuZWNlc3NhcmlseSBvd24NCj4gdGhlIFA0IHByb2dyYW1zLiBCeSBlbGltaW5hdGlu ZyB0aGUgZGVwZW5kZW5jeSBvbiBydGVfZmxvdyB0ZW1wbGF0ZXMsIHRoaXMNCj4gYXBwcm9hY2gg cmVkdWNlcyBjb21wbGV4aXR5IGluIHVzaW5nIERQREsgYXMgdGhlIGRyaXZlci4NCj4gDQo+IFRv IGJlIG1vcmUgc3BlY2lmaWMsIHRoZSBwcm9wb3NlZCBBUEkgZm9yIGV4cG9zaW5nIFA0IHRhYmxl IGFuZCBhY3Rpb24NCj4gbmFtZXMgb3IgSURzIGRpcmVjdGx5IHRvIHRoZSBhcHBsaWNhdGlvbiBj b3VsZCBiZSBhcyBmb2xsb3dzOg0KPiANCj4gLyogR2V0IHRoZSB0YWJsZSBpbmZvICovDQo+IHN0 cnVjdCBydGVfcDRfdGFibGVfaW5mbyB0YmxfaW5mbzsNCj4gcnRlX3A0X3RhYmxlX2luZm9fZ2V0 X2J5X25hbWUocG9ydF9pZCwgImRlY2FwX3Z4bGFuX3RjcF90YWJsZSIsDQo+ICZ0YmxfaW5mbyk7 DQo+IA0KPiAvKiBDcmVhdGUgdGhlIGtleSAqLw0KPiBzdHJ1Y3QgcnRlX3A0X3RhYmxlX2tleSAq a2V5Ow0KPiBydGVfcDRfdGFibGVfa2V5X2NyZWF0ZShwb3J0X2lkLCB0YmxfaW5mby0+aWQsICZr ZXkpOw0KPiANCj4gLyogU2V0IHRoZSBrZXkgZmllbGRzICovDQo+IHJ0ZV9wNF90YWJsZV9rZXlf ZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwga2V5LCAid2lyZV9wb3J0IiwNCj4gJndpcmVfcG9y dCwgMik7DQo+IHJ0ZV9wNF90YWJsZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwga2V5 LCAidHVuX2lwX3NyYyIsDQo+ICZ0dW5faXBfc3JjLCA0KTsNCj4gcnRlX3A0X3RhYmxlX2tleV9m aWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLCBrZXksICJ0dW5faXBfZHN0IiwNCj4gJnR1bl9pcF9k c3QsIDQpOw0KPiBydGVfcDRfdGFibGVfa2V5X2ZpZWxkX3NldF9ieV9uYW1lKHBvcnRfaWQsIGtl eSwgInZuaSIsICZ2bmksIDMpOw0KPiBydGVfcDRfdGFibGVfa2V5X2ZpZWxkX3NldF9ieV9uYW1l KHBvcnRfaWQsIGtleSwgImlwdjRfc3JjIiwgJmlwdjRfc3JjLCA0KTsNCj4gcnRlX3A0X3RhYmxl X2tleV9maWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLCBrZXksICJpcHY0X2RzdCIsICZpcHY0X2Rz dCwNCj4gNCk7DQo+IHJ0ZV9wNF90YWJsZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwg a2V5LCAic3JjX3BvcnQiLCAmc3JjX3BvcnQsDQo+IDIpOw0KPiBydGVfcDRfdGFibGVfa2V5X2Zp ZWxkX3NldF9ieV9uYW1lKHBvcnRfaWQsIGtleSwgImRzdF9wb3J0IiwgJmRzdF9wb3J0LA0KPiAy KTsNCj4gDQo+IC8qIEdldCB0aGUgYWN0aW9uIHNwZWMgaW5mbyAqLw0KPiBzdHJ1Y3QgcnRlX3A0 X2FjdGlvbl9zcGVjX2luZm8gYXNfaW5mbzsNCj4gcnRlX3A0X2FjdGlvbl9zcGVjX2luZm9fZ2V0 X2J5X25hbWUocG9ydF9pZCwgImRlY2FwX3Z4bGFuX2Z3ZCIsDQo+ICZhc19pbmZvKTsNCj4gDQo+ IA0KPiAvKiBDcmVhdGUgdGhlIGFjdGlvbiAqLw0KPiBzdHJ1Y3QgcnRlX3A0X2FjdGlvbiAqYWN0 aW9uOw0KPiBydGVfcDRfYWN0aW9uX2NyZWF0ZShwb3J0X2lkLCBhc19pbmZvLT5pZCwgJmFjdGlv bik7DQo+IA0KPiANCj4gLyogU2V0IHRoZSBhY3Rpb24gZmllbGRzICovDQo+IHJ0ZV9wNF90YWJs ZV9hY3Rpb25fZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwgYWN0aW9uLCAibW9kX2lkIiwNCj4g Jm1vZF9pZCwgMyk7DQo+IHJ0ZV9wNF90YWJsZV9hY3Rpb25fZmllbGRfc2V0X2J5X25hbWUocG9y dF9pZCwgYWN0aW9uLCAicG9ydF9pZCIsDQo+ICZ0YXJnZXRfcG9ydF9pZCwgMik7DQo+IA0KPiAv KiBBZGQgdGhlIGVudHJ5ICovDQo+IHJ0ZV9wNF90YWJsZV9lbnRyeV9hZGQocG9ydF9pZCwgdGJs X2luZm8tPmlkLCBrZXksIGFjdGlvbik7DQo+IA0KPiAuLi4NCj4gDQoNCkkgdGhpbmsgdGhhdCBp bnRyb2R1Y2Ugc29tZSBBUEkgdGhhdCBrbm93cyBQNCBpcyB0aGUgd2F5IHRvIGdvLA0KYnV0IEkg dGhpbmsgdGhhdCB0aGlzIHNob3VsZCBiZSBhIHZlcnkgc2ltcGxlIEFQSSB3aGljaCBjYWxscyBy dGVfZmxvdy4NCg0KDQo+IA0KPiANCj4gDQo+IA0KPiA+DQo+ID4gPiAoKikgQW55IGlkZWFzIG9u IGhvdyB0byBleHRlbmQgb3IgZXhwYW5kIHRoZSBydGVfZmxvdyBBUElzIHRvIGJldHRlcg0KPiA+ ID4gYWNjb21tb2RhdGUgUDQtYmFzZWQgb3Igb3RoZXIgdGFibGUtbWF0Y2hpbmcgYmFzZWQgZGV2 aWNlcy4NCj4gPiA+DQo+ID4NCj4gPiBMZXRzIGRpc2N1c3MgYW55IGlzc3VlIHlvdSBoYXZlLg0K PiA+DQo+ID4gPiBZb3VyIGluc2lnaHRzIGFuZCBmZWVkYmFjayB3b3VsZCBiZSBncmVhdGx5IGFw cHJlY2lhdGVkIQ0KPiA+ID4NCj4gPiA+ID09PT09PT09PT09PT09PT09PT09PT09IFBvc3QtU2Ny aXB0DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+DQo+ID4gPiBNb3JlIGRl dGFpbHMgb24gdGhlIHByb2JsZW0gYmVsb3csIGZvciBhbnlvbmUgaW50ZXJlc3RlZA0KPiA+ID4N Cj4gPiA+IEluIFA0LCBmbG93IG9mZmxvYWRpbmcgY2FuIGJlIGltcGxlbWVudGVkIHVzaW5nIHRo ZSBQNFJ1bnRpbWUgQVBJLA0KPiA+ID4gd2hpY2ggcHJvdmlkZXMgYSBzdGFuZGFyZCBpbnRlcmZh Y2UgZm9yIGNvbnRyb2xsaW5nIGFuZCBjb25maWd1cmluZw0KPiA+ID4gdGhlIGRhdGEgcGxhbmUg YmVoYXZpb3Igb2YgbmV0d29yayBkZXZpY2VzLiBQNFJ1bnRpbWUgYWxsb3dzIG5ldHdvcmsNCj4g PiA+IG9wZXJhdG9ycyB0byBkeW5hbWljYWxseSBhZGQsIG1vZGlmeSwgYW5kIHJlbW92ZSBmbG93 IHJ1bGVzIGluIHRoZQ0KPiA+ID4gaGFyZHdhcmUgZm9yd2FyZGluZyB0YWJsZXMgb2YgUDQtZW5h YmxlZCBkZXZpY2VzLg0KPiA+ID4NCj4gPiA+IFRoZSBQNFJ1bnRpbWUgQVBJIGlzIGEgdGFibGUt YmFzZWQgQVBJLCBpdCBhc3N1bWUgdGhlIHBhY2tldCBwcm9jZXNzDQo+ID4gPiBwaXBlbGluZSB3 YXMgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUga2V5L2FjdGlvbiB1bml0cyAodGFibGVzKS4gSW4N Cj4gPiA+IFA0UnVudGltZSwgZWFjaCB0YWJsZSBkZWZpbmVzIHRoZSBmaWVsZHMgdG8gYmUgbWF0 Y2hlZCBhbmQgdGhlIGFjdGlvbnMNCj4gPiA+IHRvIGJlIHRha2VuIG9uIGluY29taW5nIHBhY2tl dHMuIER1cmluZyBjb21waWxhdGlvbiwgdGhlIFA0IGNvbXBpbGVyDQo+ID4gPiBhc3NpZ25zIGEg dW5pcXVlDQo+ID4gPiB1aW50MzIgSUQgdG8gZWFjaCB0YWJsZSwgYWN0aW9uLCBhbmQgZmllbGQs IHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aA0KPiA+ID4gaXRzIGNvcnJlc3BvbmRpbmcgc3RyaW5n IG5hbWUuIFRoZXNlIElEcyBoYXZlIG5vIGluaGVyZW50IHJlbGF0aW9uc2hpcA0KPiA+ID4gdG8g YW55IG5ldHdvcmsgcHJvdG9jb2wgYnV0IGluc3RlYWQgc2VydmUgYXMgYSBtZWFucyB0byBpZGVu dGlmeQ0KPiA+ID4gZGlmZmVyZW50IGNvbXBvbmVudHMgb2YgYSBQNCBwcm9ncmFtIHdpdGhpbiB0 aGUgUDRSdW50aW1lIEFQSS4NCj4gPiA+DQo+ID4gVGhpcyBpcyB0aGUgY29uY2VwdCBvZiB0YWJs ZXMgYW5kIGdyb3VwcyBpbiBydGVfZmxvdy4NCj4gPg0KPiA+ID4gSWYgd2UgY2hvb3NlIHRvIHVz ZSBydGVfZmxvdyBhcyB0aGUgbG93LWxldmVsIEFQSSBmb3IgUDRSdW50aW1lLCBhDQo+ID4gPiB0 cmFuc2xhdGlvbiBsYXllciBpcyBuZWVkZWQgaW4gdGhlIGFwcGxpY2F0aW9uIHRvIG1hcCB0aGUg UDQgdGFibGVzDQo+ID4gPiBhbmQgYWN0aW9ucyB0byB0aGUgY29ycmVzcG9uZGluZyBydGVfZmxv dyBydWxlcy4gSG93ZXZlciwgdGhpcw0KPiA+ID4gdHJhbnNsYXRpb24gbGF5ZXIgY2FuIGJlIHBy b2JsZW1hdGljIGFzIGl0IGlzIG5vdCBlYXNpbHkgc2NhbGFibGUuDQo+ID4gPiBXaGVuIHRoZSBQ NCBwaXBlbGluZSBpcyByZWZpbmVkIG9yIHVwZGF0ZWQsIHRoZSB0cmFuc2xhdGlvbiBydWxlcyBt YXkNCj4gPiA+IGFsc28gbmVlZCB0byBiZSB1cGRhdGVkLCB3aGljaCBjYW4gcmVzdWx0IGluIGVy cm9ycyBhbmQgcmVkdWNlZA0KPiBlZmZpY2llbmN5Lg0KPiA+ID4NCj4gPiBJIGRvbid0IHVuZGVy c3RhbmQgd2h5Lg0KPiA+DQo+ID4gPiBPbiB0aGUgb3RoZXIgaGFuZCwgYSBoYXJkd2FyZSB2ZW5k b3IgdGhhdCBwcm92aWRlcyBhIFA0LWVuYWJsZWQgZGV2aWNlDQo+ID4gPiBpcyByZXF1aXJlZCB0 byBpbXBsZW1lbnQgYW4gcnRlX2Zsb3cgaW50ZXJmYWNlIGluIHRoZWlyIERQREsgUE1ELg0KPiA+ ID4gVHlwaWNhbGx5LCB0aGUNCj4gPiA+IFA0IGNvbXBpbGVyIGdlbmVyYXRlcyBoaW50cyBmb3Ig dGhlIGRyaXZlciBvbiBob3cgdG8gbWFwIFA0IHRhYmxlcyB0bw0KPiA+ID4gaGFyZHdhcmUgcmVz b3VyY2VzLCBhbmQgaG93IHRvIGNvbnZlcnQgdGFibGUgZW50cnkgYWRkL21vZGlmeS9kZWxldGUN Cj4gPiA+IGFjdGlvbnMgaW50byBsb3ctbGV2ZWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIEhv d2V2ZXIsIGJlY2F1c2UNCj4gPiA+IHJ0ZV9mbG93IGlzIHByb3RvY29sLWJhc2VkLCBpdCBwb3Nl cyBhbiBhZGRpdGlvbmFsIGNoYWxsZW5nZSBmb3INCj4gPiA+IGRyaXZlciBkZXZlbG9wZXJzLCB3 aG8gbXVzdCBjcmVhdGUgYW5vdGhlciB0cmFuc2xhdGlvbiBsYXllciB0bw0KPiA+ID4gY29udmVy dCBydGVfZmxvdyB0b2tlbnMgaW50byBQNCBvYmplY3QgaWRlbnRpZmllcnMuIFRoaXMgdHJhbnNs YXRpb24NCj4gPiA+IGxheWVyIG11c3QgYmUgY2FyZWZ1bGx5IGRlc2lnbmVkIGFuZCBpbXBsZW1l bnRlZCB0byBlbnN1cmUgb3B0aW1hbA0KPiA+ID4gcGVyZm9ybWFuY2UgYW5kIHNjYWxhYmlsaXR5 LCBhbmQgdG8gZW5zdXJlIHRoYXQgdGhlIGRyaXZlciBjYW4gZWZmaWNpZW50bHkNCj4gPiBoYW5k bGUgdGhlIGR5bmFtaWMgbmF0dXJlIG9mIFA0IHByb2dyYW1zLg0KPiA+ID4NCj4gPiBSaWdodCwg YnV0IHNvbWUgb2YgdGhlIHRyYW5zbGF0aW9uIGNhbiBiZSBkb25lIGluIHNoYXJlZCBjb2RlIGJ5 IGFsbCBQTURzDQo+ID4gYW5kIHRoZSB0cmFuc2xhdGlvbiBpcyBzdGF0aWMgZm9yIHRoZSBjb21w aWxhdGlvbiBzbyBpbnNlcnRpbmcgcnVsZXMgY2FuIGJlDQo+ID4gc3VwcGVyIGZhc3Qgd2l0aCBu byBuZWVkIGZvciBleHRyYSB3b3JrLg0KPiA+DQo+ID4gPiBUbyBiZXR0ZXIgdW5kZXJzdGFuZCB0 aGUgcHJvYmxlbSwgbGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlDQo+ID4gPiB0 aGF0IGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlIHRoZSBQNFJ1bnRpbWUgQVBJIHRvIHByb2dyYW0g YSBydWxlIGZvcg0KPiA+ID4gcHJvY2Vzc2luZyBhIFZYTEFOIHBhY2tldC4gVGhlIHJ1bGUgbWF0 Y2hlcyBhIFZYTEFOIHBhY2tldCwNCj4gPiA+IGRlY2Fwc3VsYXRlcyB0aGUgdHVubmVsIGhlYWRl ciwgYW5kIGZvcndhcmRzIGl0IHRvIGEgc3BlY2lmaWMgcG9ydC4NCj4gPiA+DQo+ID4gPiBUaGUg UDQgc291cmNlIGNvZGUgYmVsb3cgZGVzY3JpYmVzIHRoZSBWWExBTiBkZWNhcCB0YWJsZQ0KPiA+ ID4gZGVjYXBfdnhsYW5fdGNwX3RhYmxlLCB3aGljaCBtYXRjaGVzIHRoZSBvdXRlciBJUCBhZGRy ZXNzLCBWTkksIGlubmVyDQo+ID4gPiBJUCBhZGRyZXNzLCBhbmQgaW5uZXIgVENQIHBvcnQuIEZv ciBlYWNoIHJ1bGUsIGZvdXIgYWN0aW9uDQo+ID4gPiBzcGVjaWZpY2F0aW9ucyBjYW4gYmUgc2Vs ZWN0ZWQuIFdlIHdpbGwgZm9jdXMgb24gb25lIGFjdGlvbg0KPiA+ID4gc3BlY2lmaWNhdGlvbiBk ZWNhcF92eGxhbl9md2QgdGhhdCBwZXJmb3JtcyBkZWNhcHN1bGF0aW9uIGFuZCBmb3J3YXJkcw0K PiA+IHRoZSBwYWNrZXQgdG8gYSBzcGVjaWZpYyBwb3J0Lg0KPiA+ID4NCj4gPiA+IHRhYmxlIGRl Y2FwX3Z4bGFuX3RjcF90YWJsZSB7DQo+ID4gPiDCoMKgwqAga2V5ID0gew0KPiA+ID4gwqDCoMKg wqDCoMKgwqAgaGRycy5pcHY0W21ldGEuZGVwdGgtMV0uc3JjX2lwOiBleGFjdCBAbmFtZSgidHVu X2lwX3NyYyIpOw0KPiA+ID4gwqDCoMKgwqDCoMKgwqAgaGRycy5pcHY0W21ldGEuZGVwdGgtMV0u ZHN0X2lwOiBleGFjdCBAbmFtZSgidHVuX2lwX2RzdCIpOw0KPiA+ID4gwqDCoMKgwqDCoMKgwqAg aGRycy52eGxhblttZXRhLmRlcHRoLTFdLnZuacKgIDogZXhhY3QgQG5hbWUoInZuaSIpOw0KPiA+ ID4gwqDCoMKgwqDCoMKgwqAgaGRycy5pcHY0W21ldGEuZGVwdGhdLnNyY19pcMKgIDogZXhhY3Qg QG5hbWUoImlwdjRfc3JjIik7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoCBoZHJzLmlwdjRbbWV0YS5k ZXB0aF0uZHN0X2lwwqAgOiBleGFjdCBAbmFtZSgiaXB2NF9kc3QiKTsNCj4gPiA+IMKgwqDCoMKg wqDCoMKgIGhkcnMudGNwLnNwb3J0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogZXhh Y3QgQG5hbWUoInNyY19wb3J0Iik7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoCBoZHJzLnRjcC5kcG9y dMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6IGV4YWN0IEBuYW1lKCJkc3RfcG9ydCIp Ow0KPiA+ID4gwqDCoMKgIH0NCj4gPiA+IMKgwqDCoCBhY3Rpb25zID0gew0KPiA+ID4gwqDCoMKg wqDCoMKgwqAgQHRhYmxlb25seSBkZWNhcF92eGxhbl9md2Q7DQo+ID4gPiDCoMKgwqDCoMKgwqDC oCBAdGFibGVvbmx5IGRlY2FwX3Z4bGFuX2RuYXRfZndkOw0KPiA+ID4gwqDCoMKgwqDCoMKgwqAg QHRhYmxlb25seSBkZWNhcF92eGxhbl9zbmF0X2Z3ZDsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgIEBk ZWZhdWx0b25seSBzZXRfZXhjZXB0aW9uOw0KPiA+ID4gwqDCoMKgIH0NCj4gPiA+IH0NCj4gPiBU cmFuc2xhdGUgdG8gcnRlX2Zsb3c6DQo+ID4gdGVtcGxhdGUgcGF0dGVybiByZWxheGVkX21vZGUg PSAxIHBhdHRlcm4gPSAgSXB2NF9zcmMgLyBpcHY0X2RzdCAgLyB2bmkgLw0KPiA+IGlwdjRfc3Jj IC8gaXB2NF9kc3QgLyB0Y3Bfc3BvcnQgLyB0Y3BfZHBvcnQgbWFwIHN0cnVjdHVyZSA9IHsNCj4g PiAJdHVuX2lwX3NyYyA9ICZwYXR0ZXJuW2lwdjRfc3JjXQ0KPiA+IAkuLi4uDQo+ID4gfQ0KPiA+ ID4gLi4uDQo+ID4gPg0KPiA+ID4gYWN0aW9uIGRlY2FwX3Z4bGFuX2Z3ZChQb3J0SWRfdCBwb3J0 X2lkKSB7DQo+ID4gPiDCoMKgwqAgbWV0YS5tb2RfYWN0aW9uID0gKGJpdDwxMT4pVlhMQU5fREVD QVBfT1VURVJfSVBWNDsNCj4gPiA+IMKgwqDCoCBzZW5kX3RvX3BvcnQocG9ydF9pZCk7DQo+ID4g PiB9DQo+ID4gPg0KPiA+IFNhbWUgYXMgYWJvdmUganVzdCB3aXRoIGFjdGlvbiB0ZW1wbGF0ZQ0K PiA+DQo+ID4gPiBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIHRoZSBoaW50IHRoYXQgdGhlIGNvbXBp bGVyIHdpbGwgZ2VuZXJhdGUgZm9yDQo+ID4gPiB0aGUNCj4gPiA+IGRlY2FwX3Z4bGFuX3RjcF90 YWJsZToNCj4gPiA+DQo+ID4gPiBUYWJsZSBJRDrCoMKgwqDCoMKgIDg0NTQxNDQNCj4gPiA+IE5h bWU6wqDCoMKgwqDCoMKgwqDCoMKgIGRlY2FwX3Z4bGFuX3RjcF90YWJsZQ0KPiA+ID4gRmllbGQg SUTCoMKgwqDCoMKgwqAgTmFtZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIE1hdGNoIFR5cGXCoMKgwqDCoCBCaXQgV2lkdGgNCj4gPiA+IEJ5dGUgV2lk dGjCoMKgwqDCoCBCeXRlIE9yZGVyDQo+ID4gPiAxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dHVuX2lwX3NyY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDC oMKgwqDCoMKgwqDCoMKgIDMyDQo+ID4gPiA0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0 d29yaw0KPiA+ID4gMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR1bl9pcF9kc3TCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleGFjdMKgwqDCoMKgwqDCoMKgwqDCoCAz Mg0KPiA+ID4gNMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ldHdvcmsNCj4gPiA+IDPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2bmnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoCDCoMKgwqDCoMKgwqDCoDI0DQo+ID4gPiAz wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yaw0KPiA+ID4gNMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlwdjRfc3JjwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDMyDQo+ID4gPiA0wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbmV0d29yaw0KPiA+ID4gNcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlw djRfZHN0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDC oMKgwqDCoMKgwqDCoMKgIDMyDQo+ID4gPiA0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0 d29yaw0KPiA+ID4gNsKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoHNyY19wb3J0wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKg IDE2DQo+ID4gPiAywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yaw0KPiA+ID4gN8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRzdF9wb3J0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDE2DQo+ID4gPiAywqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yayBTcGVjIElEwqDCoMKgwqDCoMKgwqAgTmFt ZQ0KPiA+ID4gODUxOTcxNsKgwqDCoMKgwqDCoCDCoGRlY2FwX3Z4bGFuX2Z3ZA0KPiA+ID4gODUx OTcxOMKgwqDCoMKgwqDCoMKgIGRlY2FwX3Z4bGFuX2RuYXRfZndkDQo+ID4gPiA4NTE5NzIwwqDC oMKgwqDCoMKgwqAgZGVjYXBfdnhsYW5fc25hdF9md2QNCj4gPiA+IDg1MTk2OTXCoMKgwqDCoMKg wqDCoCBzZXRfZXhjZXB0aW9uDQo+ID4gPg0KPiA+ID4gQW5kIHRoZSBoaW50IG9mIGFjdGlvbiBz cGVjICJkZWNhcF92eGxhbl9md2QiIGFzIGJlbG93Og0KPiA+ID4NCj4gPiA+IFNwZWMgSUQ6wqDC oMKgwqDCoMKgIDg1MTk3MTYNCj4gPiA+IE5hbWU6wqDCoMKgwqDCoMKgwqDCoMKgIGRlY2FwX3Z4 bGFuX2Z3ZA0KPiA+ID4gRmllbGQgSUTCoMKgwqDCoMKgwqAgTmFtZcKgwqDCoMKgwqDCoCDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJpdCBXaWR0aMKgwqDCoMKgwqAgQnl0 ZSBXaWR0aA0KPiA+ID4gQnl0ZSBPcmRlcg0KPiA+ID4gMcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBvcnRfaWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAz MsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA0DQo+ID4gPiBob3N0DQo+ID4gPg0KPiA+ID4gUGxl YXNlIG5vdGUgdGhhdCBkaWZmZXJlbnQgY29tcGlsZXJzIG1heSBhc3NpZ24gZGlmZmVyZW50IElE cy4NCj4gPiA+DQo+ID4gPiBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGEg cnVsZSB1c2luZyB0aGUgUDQgcnVudGltZSBBUEkNCj4gPiA+IGluIEpTT04gZm9ybWF0LiBUaGlz IHJ1bGUgbWF0Y2hlcyBmaWVsZHMgYW5kIGRpcmVjdHMgcGFja2V0cyB0byBwb3J0IDUuDQo+ID4g Pg0KPiA+ID4gew0KPiA+ID4gwqDCoMKgICJ0eXBlIjogMSzCoCAvL0lOU0VSVA0KPiA+ID4gwqDC oMKgICJlbnRpdHkiOiB7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoCAidGFibGVfZW50cnkiOiB7DQo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ0YWJsZV9pZCI6IDg0NTQxNDQsDQo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICJtYXRjaCI6IFsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB7ICJmaWVsZF9pZCI6IDEsICJleGFjdCI6IHsgInZhbHVlIjogWzEwLCAw LCAwLCAxXSB9DQo+ID4gPiB9LMKgwqAgLy8gb3V0ZXIgc3JjIElQID0NCj4gPiA+IDEwLjAuMC4x DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAiZmllbGRfaWQiOiAyLCAi ZXhhY3QiOiB7ICJ2YWx1ZSI6IFsxMCwgMCwgMCwgMl0gfQ0KPiA+ID4gfSzCoCAvLyBvdXRlciBk c3QgSVAgPQ0KPiA+ID4gMTAuMC4wLjINCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB7ICJmaWVsZF9pZCI6IDMsICJleGFjdCI6IHsgInZhbHVlIjogWzAsIDAsIDEwXSB9IH0s DQo+ID4gPiAvL8KgIHZuaSA9IDEwLA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHsgImZpZWxkX2lkIjogNCwgImV4YWN0IjogeyAidmFsdWUiOiBbMTkyLCAwLCAwLCAxXSB9 DQo+ID4gPiB9LCAvLyBpbm5lciBzcmMgSVAgPQ0KPiA+ID4gMTkyLjAuMC4xDQo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyJmaWVsZF9pZCI6IDUsICJleGFjdCI6IHsgInZh bHVlIjogWzE5MiwgMCwgMCwgMl0gfQ0KPiA+ID4gfSwgLy8gaW5uZXIgZHN0IElQID0NCj4gPiA+ IDE5Mi4wLjAuMg0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoHsiZmllbGRf aWQiOiA2LCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFswLCAyMDBdIH0gfSwgLy8NCj4gPiA+IHRjcCBz cmMgcG9ydCA9IDIwMA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsiZmll bGRfaWQiOiA3LCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFswLCAyMDFdIH0gfSwgLy8NCj4gPiA+IHRj cCBkc3QgcG9ydCA9IDIwMQ0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBdLA0KPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYWN0aW9uIjogew0KPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICJhY3Rpb24iOiB7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiYWN0aW9uX2lkIjogODUxOTcxNiwNCj4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJwYXJhbXMiOiBbDQo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsgInBhcmFtX2lkIjogMSwgInZh bHVlIjogWzUsIDAsIDAsIDBdIH0NCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIF0NCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC4uLg0KPiA+ID4gwqDCoMKgwqDCoMKgwqAgfQ0KPiA+ID4gwqDCoMKgIH3CoMKgwqAgLi4uDQo+ ID4gPiB9DQo+ID4gPg0KPiA+ID4gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgYSBwYXJ0 IG9mIHRoZSBmdWxsIGNvbW1hbmQuIEZvciBtb3JlDQo+ID4gPiBpbmZvcm1hdGlvbiwgcGxlYXNl IHJlZmVyIHRvIHRoZSBwNHJ1bnRpbWUucHJvdG9bMl0NCj4gPiA+DQo+ID4gPiAxLiBodHRwczov L3A0Lm9yZy9wNC1zcGVjL3A0cnVudGltZS9tYWluL1A0UnVudGltZS1TcGVjLmh0bWwNCj4gPiA+ IDIuDQo+ID4gPg0KPiA+DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9wNGxhbmcvcDRydW50aW1lL2Js b2IvbWFpbi9wcm90by9wNC92MS9wNHJ1bnRpbWUucA0KPiA+IHINCj4gPiA+IG90bw0KPiA+ID4N Cj4gPiA+IFRoYW5rIHlvdSBmb3IgeW91ciBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuDQo+ID4g Pg0KPiA+DQo+ID4gSSB0aGluayB0aGF0IHdlIHNob3VsZCBzY2hlZHVsZSBzb21lIG1lZXRpbmcg dG8gc2VlIGhvdyBtdWNoIGdhcHMgd2UNCj4gPiByZWFsbHkgaGF2ZSBiZXR3ZWVuIHRoZSBydGVf ZmxvdyBhbmQNCj4gPiBQNCBhbmQgaG93IHdlIGNhbiBpbXByb3ZlIHRoZSBydGVfZmxvdyB0byBh bGxvdyB0aGUgYmVzdCBleHBlcmllbmNlLg0KPiANCj4gU291bmQgYSBnb29kIGlkZWEhDQo+ID4N Cj4gPiA+IFJlZ2FyZHMNCj4gPiA+IFFpDQo=