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 0EF8842C96; Mon, 12 Jun 2023 10:27:00 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8BCCA40689; Mon, 12 Jun 2023 10:26:59 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 7C2294014F for ; Mon, 12 Jun 2023 10:26:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686558417; x=1718094417; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Ng68am9nQRue5JaDTD4CTPMv1zzzK1JxCUBRO7tZ8CI=; b=NYB3CDxB7w2CpLnx34yzPXPCEBaOJv1c2f7UfjyrXtwKWQsMPApKahan csSW792S3Q/JQ7GkyqitMWrkxAlJvzJJ7FA1bqsefrGbRcJrqzkupilkh AICXuzBIwSxiBDjPBKDjNRILQQjZBaMLhRoFrqx28RjiliTSH3PrEkH79 yI9mYKy0x05iGOlnGwUld0BnY2XgK4TfrReF4voOhERHUEvO4jdS/jxiv HBzK6rLGFWMXWxGyOwmoBCHIUd93QqffXNOo1bwlAGzsheMSzJGJWojxv dc0Az/tf9d1u1yDgogx1YpMAuinOOYFFurpIwLwYHAKvlhSCJ79vZgE8g w==; X-IronPort-AV: E=McAfee;i="6600,9927,10738"; a="342665643" X-IronPort-AV: E=Sophos;i="6.00,236,1681196400"; d="scan'208";a="342665643" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jun 2023 01:26:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10738"; a="855526695" X-IronPort-AV: E=Sophos;i="6.00,236,1681196400"; d="scan'208";a="855526695" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga001.fm.intel.com with ESMTP; 12 Jun 2023 01:26:55 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) 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; Mon, 12 Jun 2023 01:26:55 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 12 Jun 2023 01:26:54 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Mon, 12 Jun 2023 01:26:54 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.101) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Mon, 12 Jun 2023 01:26:51 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g2gs57eYmk2iw+lOLzdv0vqRqZ9JlsNuE4ju5l7Bp3zqJ+LT95pBbhy5y3T4fdlOrdGTIOSL9TauXLFDgHz4avtjHO7D6V9EKD+NMkxvLXDDjYhdHY56KxQQ3054yvJjKQNs1ijiqeX5LbTFFeA+uapylkKhwLZ1RqC/lS/bBMgv2hFZTgxbe+V0tLCPo4mTO/jY1banIKWH0FrsShwFdsAjIlBzUh9DUYLj1uYuRBYOdY8i2U2bLVLisb9NqlGIu8U1YBrper+tsU2mzLY0oeDU3p3SKrNMovJBFyiUCcN9GHsHiwYW6pr6lXNZM6SkRbpO8Yiu8WMyj2kdgxeQyw== 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=Ng68am9nQRue5JaDTD4CTPMv1zzzK1JxCUBRO7tZ8CI=; b=l85904TH23eSpp6YxxEZ3c2hngdqgzPL9IqF9AmlSUOzF6mUv2nqT6DT7+mw2C9vZ5VvcZ/L+6hI7Q+Z4jc8jKrOErWsDZ/bByYuJUpAhQdceaFCrXHi3aLs4qPaN6i7Q5/4lMBF05dfIwaJFJXoRFcFImisKBP/lQij0c4Qx944iLVId9/cRIJWpD8GuqFB6QjsDlMre2j+1a6cfDerYI5RIYcwxBE2EwvJho2k3VyJspufkSTLALrpQwIiIl6lzvFo6s+bBGwSEmg+Fq06NvsqZ+GtOGBkKJumRe2Y7rhY+sDMzQAbkZwoLeniZgVHqszDNKFsHbB5pzARRMOl7Q== 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 SN7PR11MB7019.namprd11.prod.outlook.com (2603:10b6:806:2ae::22) by DM6PR11MB4611.namprd11.prod.outlook.com (2603:10b6:5:2a5::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.29; Mon, 12 Jun 2023 08:26:49 +0000 Received: from SN7PR11MB7019.namprd11.prod.outlook.com ([fe80::2d39:426d:f529:6088]) by SN7PR11MB7019.namprd11.prod.outlook.com ([fe80::2d39:426d:f529:6088%4]) with mapi id 15.20.6455.034; Mon, 12 Jun 2023 08:26:49 +0000 From: "Jiang, Cheng1" To: Amit Prakash Shukla , "thomas@monjalon.net" , "Richardson, Bruce" , "mb@smartsharesystems.com" , "Xia, Chenbo" CC: "dev@dpdk.org" , "Hu, Jiayu" , "Ding, Xuan" , "Ma, WenwuX" , "Wang, YuanX" , "He, Xingguang" , Jerin Jacob Kollanukkaran , Anoob Joseph Subject: RE: [EXT] [PATCH v5] app/dma-perf: introduce dma-perf application Thread-Topic: [EXT] [PATCH v5] app/dma-perf: introduce dma-perf application Thread-Index: AQHZmepmH5sZGSySr0eGsksF60IL36+CgmwAgARYSAA= Date: Mon, 12 Jun 2023 08:26:48 +0000 Message-ID: References: <20230420072215.19069-1-cheng1.jiang@intel.com> <20230608084355.16209-1-cheng1.jiang@intel.com> In-Reply-To: Accept-Language: zh-CN, 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: SN7PR11MB7019:EE_|DM6PR11MB4611:EE_ x-ms-office365-filtering-correlation-id: c7c1abc1-c2b7-4b09-f9bb-08db6b1ec417 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8OfU5LfCUEVTH/DMx/E5NKCFI/VjpDIc3kxGaFgCL7Ar70rC9x+jIhJ04RSbNLLq1T1ILqh3ACUqf84i2wme+mkAGL1CBSlzceKlfsGk8qsP3brNvBWBdU/yWfV6ookemf1yA5xNofyb4SqaG+O3f/E5f9Lyg6NnR8oiztOOGLJFGAA6oLn6OO35ORLoxbdxISfywuBtRlf/xpURlmaFmWQJYbbzWwz0qBl/39hwx5zFGqoOffZGtCZ2Kf3kHnTbfvV95N7Tds9aE/LEBRceThf10k9/1Hv+1jM1wY+KfOa5mDrHFFCPl6/XtpdOjDIHp9QqWtbkZ0I7sXSuCSikZFub0PyLMeQd9KCc7N7ClBt1N9CDdOxHFmKW/wSt1hEp6Ido5NzK/eiVQwfwVWcGmqtLFqZs0TcNeSPN5MGC9ec7QRcZWp1fsuE21DegOWMDfwGgTktlm4NDij4jHFXwHCuvBFdKG22p9kIuO//P/q5D8uu7L94UagbwlWzCHULKFup6pH+2lBQx8o4+5QiKzBq0G0p1s07Rz8VyakDEG+gVI96httewuX+tvvhF9MLqG4WpBQiTquuQDAzPqCC99kooj+2VQjeqQLGT9HLagz9R1B+MvFBeqTFXqvD7iMnU x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN7PR11MB7019.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(346002)(376002)(136003)(39860400002)(366004)(396003)(451199021)(86362001)(7696005)(316002)(8676002)(41300700001)(82960400001)(83380400001)(5660300002)(26005)(55016003)(38100700002)(9686003)(122000001)(53546011)(6506007)(52536014)(33656002)(71200400001)(8936002)(38070700005)(66446008)(66476007)(66556008)(64756008)(66946007)(4326008)(76116006)(66574015)(478600001)(6636002)(186003)(2906002)(54906003)(110136005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dE0xQVMwZ3hiajEvY01ET2tSeDhGNXVYRVMvT0gvSHpxVmpabFM1MkZYRTFU?= =?utf-8?B?L3ZxVXlheHZRMjU4Wk5odHVvOHdkbTFtWG9QZjVmK1Z4QW9XL1ZDSnRCL1M3?= =?utf-8?B?dkg2RjJrWnZJOXk0L29jL0FqUHFyUUhJVURwZ1dMOFZkSFU0S3hBTEVLYklE?= =?utf-8?B?MFI2ODdZNFF0UVRQa0ROQTVYS2M2VVF3TGF5aTh0dUpnOTQ4NVYvb2hnb1dl?= =?utf-8?B?MFVUTDN6MWc4WlQwZVZUTnljMGE2YTVVUjlwdVM2cmlDUzFXWTUva0dqeWJQ?= =?utf-8?B?WXRjdElhNHp2L28yMGZ2NDJNeVR5bHkvaE96aVY2V2dlWnFVbjZuUzlHeENh?= =?utf-8?B?Vk56UjM5UjlNOVg3bTdBUCtZUVJFUGgvdjA5QXA2dkVnbDRqdi9zZk9XZlNS?= =?utf-8?B?Mk1ROVdwcExYMjBjcyt6Y1hpT3hXclRiM1hLK0g3c3lTczJOUzcrVVFpZEwy?= =?utf-8?B?Vmtrdy9MOUE2M2dpYmIyR0F0YUVJTUJSQUs1MEprQVN2Vi9LTWc5R09FR3J5?= =?utf-8?B?ekg4QnZzQmdNMnJvdFZ2RCtDWnFSVFl0SVdMYll6ZmkxUEp5M0xoR1FOQ2RX?= =?utf-8?B?NmFUU2F4UlZpYmdBNk5QQ3U4VkozODI1azdUc2lDRWxzSHBISXRCN2psVERU?= =?utf-8?B?L1g1VUNwYXJZM0h2Umw2UWNlVGtRL3JaMklodTQwVmpDZWtzUGZ2UHQ3REJV?= =?utf-8?B?ZGVlYmJtUFppT2dubE1yWmtlS0RobTBLUWdlTmg2TGNaY1NJM0VmMWpPckdG?= =?utf-8?B?VENTU2xCU2lIUWZ5cm9mZ1JxdVJKbzRwTGlXa01sazN3KzlUODh3RjJnZzFX?= =?utf-8?B?TUJreEpOelhiWVY0L040bXpaZkZyZDdiL09iQjJYVXZ5cEhPek1PKzZIdlVT?= =?utf-8?B?YitBQldGMndpZWE0N2VxMS91dHRBcnBmNnZxbXBFM0JhQ0lWWEpsM3BZMk1h?= =?utf-8?B?clJ6SGdMbkhuWmZaWlpiMWErcGdoM2FWU2lnSHVvd0cyT0RlR3p3U2hGSmtK?= =?utf-8?B?aEcxd3hwL0VJL1hiVkh4enM0RGVja1oybzJFTGFxY3hRTVQvVndaZUg0Nnc3?= =?utf-8?B?a3FJSHBhMmxKWVVrK3F1RGpjaHFLVjJrWUVRalp5NTA4Wkd1Wm92cmlxMTRS?= =?utf-8?B?ajI1VEM1M2wzM2NHRGc1YkRrdFRZR2Z5ZGpWbHJkN0FqSGZmVHY1N0I2U2I1?= =?utf-8?B?NzEyRDk4ajFyVXIzWGFoTmttZTZVaXdYVVBjSzkvcThlQVIwWWRLT3BpNTZj?= =?utf-8?B?Q2FJZFMyNEVjR2xpL3hyOFVFZmdKall1Rkt2d2tjQi9BMDdJSVI3dVcwQTds?= =?utf-8?B?L0FaM2hYaFdCcnVpMzVGalUvTUJEUDJkbkl6TUVwQWtuU2dmcWhSaGVRTy9v?= =?utf-8?B?RkFhSjg5N1JzZ2YrUGwwR2swQmJRZmRZU2NnL0VDVVF2V2w2cUVVSHZNekxm?= =?utf-8?B?cDRIVk13dGxraXRDeGVWRDVFK0Q2YVZselFHV09McmU5YWNjM1pwYk5acko3?= =?utf-8?B?TEdyR2hZQ1Fib3poOWIxQXIvYTNBWDY1MTlxWEpLd2RIc2tiaFVpYkFBYjMw?= =?utf-8?B?SUNlaEtCVUtMdDBDc0ZDY1RjbTNjTXl6ZVZENnhmdWVQbE5NK3FVM1lvVmg1?= =?utf-8?B?TzR0UlZrV0VrcW9HeXJkTkhzVHFCTFNub2FMS0d6eFc2MHdkbDczUjkrL1lP?= =?utf-8?B?N0dGTDA1L0tPRnplNVlUdVhXTEE1OXZBcHNiQXNheGJqRzVIdGpzWUJDOGV3?= =?utf-8?B?c0FYaXEvaG9pbnEwZVFjRnVQQUd3Z1I5NUptNGdWSDNRYzlUTTcwbkgrQ1g4?= =?utf-8?B?WUpkdUJpRC9WelhFTXc4aHNrYThZTWovRFJQaW9SWUdpMyszY28zRFA0Tjli?= =?utf-8?B?NnUvZnozUngvT2h1c09UZXZlWGpMVVVIYW5BSXRkeWU0c0kySkpJeXV1eHZO?= =?utf-8?B?eHZwN3pGV0h6Uzl2NHhLTmt0WHFhSmJRNkJ5NjZqOHJhTGZUNlp0RERNWlNX?= =?utf-8?B?TUhnUnVCKysyVWhEYm40MkRXcVpLb09rYitnNDY4VVg1Q0pTdVQzK25pTUJQ?= =?utf-8?B?bXlLcnZIb3ZRbnFTaVlPNE81eVIwYTBVSVJzeHF6OHVVUHdzRkpqTk1TM0xI?= =?utf-8?Q?/kwYc+O26QW2JL0hTf88Yg5XR?= 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: SN7PR11MB7019.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c7c1abc1-c2b7-4b09-f9bb-08db6b1ec417 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jun 2023 08:26:48.5791 (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: HjAZdskHvRJkmbp+4G6hGVlnZpUX3mzAgTBbd8CxymL7j9xPM0U7KJCYExeX026gskMNhYy/WO18I/33wUqNPw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4611 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 SGksDQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cywgcmVwbGllcyBhcmUgaW5saW5lLg0KDQpU aGFua3MsDQpDaGVuZw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFt aXQgUHJha2FzaCBTaHVrbGEgPGFtaXRwcmFrYXNoc0BtYXJ2ZWxsLmNvbT4NCj4gU2VudDogRnJp ZGF5LCBKdW5lIDksIDIwMjMgMTA6MDMgUE0NCj4gVG86IEppYW5nLCBDaGVuZzEgPGNoZW5nMS5q aWFuZ0BpbnRlbC5jb20+OyB0aG9tYXNAbW9uamFsb24ubmV0Ow0KPiBSaWNoYXJkc29uLCBCcnVj ZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+Ow0KPiBtYkBzbWFydHNoYXJlc3lzdGVtcy5j b207IFhpYSwgQ2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9y ZzsgSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+OyBEaW5nLCBYdWFuDQo+IDx4dWFuLmRp bmdAaW50ZWwuY29tPjsgTWEsIFdlbnd1WCA8d2Vud3V4Lm1hQGludGVsLmNvbT47IFdhbmcsDQo+ IFl1YW5YIDx5dWFueC53YW5nQGludGVsLmNvbT47IEhlLCBYaW5nZ3VhbmcgPHhpbmdndWFuZy5o ZUBpbnRlbC5jb20+Ow0KPiBKZXJpbiBKYWNvYiBLb2xsYW51a2thcmFuIDxqZXJpbmpAbWFydmVs bC5jb20+OyBBbm9vYiBKb3NlcGgNCj4gPGFub29iakBtYXJ2ZWxsLmNvbT4NCj4gU3ViamVjdDog UkU6IFtFWFRdIFtQQVRDSCB2NV0gYXBwL2RtYS1wZXJmOiBpbnRyb2R1Y2UgZG1hLXBlcmYgYXBw bGljYXRpb24NCj4gDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ IEZyb206IENoZW5nIEppYW5nIDxjaGVuZzEuamlhbmdAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFRo dXJzZGF5LCBKdW5lIDgsIDIwMjMgMjoxNCBQTQ0KPiA+IFRvOiB0aG9tYXNAbW9uamFsb24ubmV0 OyBicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbTsNCj4gPiBtYkBzbWFydHNoYXJlc3lzdGVtcy5j b207IGNoZW5iby54aWFAaW50ZWwuY29tDQo+ID4gQ2M6IGRldkBkcGRrLm9yZzsgamlheXUuaHVA aW50ZWwuY29tOyB4dWFuLmRpbmdAaW50ZWwuY29tOw0KPiA+IHdlbnd1eC5tYUBpbnRlbC5jb207 IHl1YW54LndhbmdAaW50ZWwuY29tOyB4aW5nZ3VhbmcuaGVAaW50ZWwuY29tOw0KPiA+IENoZW5n IEppYW5nIDxjaGVuZzEuamlhbmdAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFtFWFRdIFtQQVRD SCB2NV0gYXBwL2RtYS1wZXJmOiBpbnRyb2R1Y2UgZG1hLXBlcmYgYXBwbGljYXRpb24NCj4gPg0K PiA+IEV4dGVybmFsIEVtYWlsDQo+ID4NCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gVGhlcmUgYXJl IG1hbnkgaGlnaC1wZXJmb3JtYW5jZSBETUEgZGV2aWNlcyBzdXBwb3J0ZWQgaW4gRFBESyBub3cs DQo+IGFuZA0KPiA+IHRoZXNlIERNQSBkZXZpY2VzIGNhbiBhbHNvIGJlIGludGVncmF0ZWQgaW50 byBvdGhlciBtb2R1bGVzIG9mIERQREsgYXMNCj4gPiBhY2NlbGVyYXRvcnMsIHN1Y2ggYXMgVmhv c3QuIEJlZm9yZSBpbnRlZ3JhdGluZyBETUEgaW50byBhcHBsaWNhdGlvbnMsDQo+ID4gZGV2ZWxv cGVycyBuZWVkIHRvIGtub3cgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZXNlIERNQSBkZXZpY2VzIGlu DQo+ID4gdmFyaW91cyBzY2VuYXJpb3MgYW5kIHRoZSBwZXJmb3JtYW5jZSBvZiBDUFVzIGluIHRo ZSBzYW1lIHNjZW5hcmlvLA0KPiA+IHN1Y2ggYXMgZGlmZmVyZW50IGJ1ZmZlciBsZW5ndGhzLiBP bmx5IGluIHRoaXMgd2F5IGNhbiB3ZSBrbm93IHRoZQ0KPiA+IHRhcmdldCBwZXJmb3JtYW5jZSBv ZiB0aGUgYXBwbGljYXRpb24gYWNjZWxlcmF0ZWQgYnkgdXNpbmcgdGhlbS4gVGhpcw0KPiA+IHBh dGNoIGludHJvZHVjZXMgYSBoaWdoLXBlcmZvcm1hbmNlIHRlc3RpbmcgdG9vbCwgd2hpY2ggc3Vw cG9ydHMNCj4gPiBjb21wYXJpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIENQVSBhbmQgRE1BIGluIGRp ZmZlcmVudCBzY2VuYXJpb3MNCj4gPiBhdXRvbWF0aWNhbGx5IHdpdGggYSBwcmUtIHNldCBjb25m aWcgZmlsZS4gTWVtb3J5IENvcHkgcGVyZm9ybWFuY2UgdGVzdA0KPiBhcmUgc3VwcG9ydGVkIGZv ciBub3cuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBDaGVuZyBKaWFuZyA8Y2hlbmcxLmppYW5n QGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBKaWF5dSBIdSA8amlheXUuaHVAaW50ZWwu Y29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFl1YW4gV2FuZyA8eXVhbngud2FuZ0BpbnRlbC5jb20+ DQo+ID4gQWNrZWQtYnk6IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+ DQo+ID4gQWNrZWQtYnk6IENoZW5ibyBYaWEgPGNoZW5iby54aWFAaW50ZWwuY29tPg0KPiA+IC0t LQ0KPiA+IHY1Og0KPiA+ICAgZml4ZWQgc29tZSBMT05HX0xJTkUgd2FybmluZ3M7DQo+ID4gdjQ6 DQo+ID4gICBmaXhlZCBpbmFjY3VyYWN5IG9mIHRoZSBtZW1vcnkgZm9vdHByaW50IGRpc3BsYXk7 DQo+ID4gdjM6DQo+ID4gICBmaXhlZCBzb21lIHR5cG9zOw0KPiA+IHYyOg0KPiA+ICAgYWRkZWQg bGNvcmUvZG1hZGV2IGRlc2lnbmF0aW9uOw0KPiA+ICAgYWRkZWQgZXJyb3IgY2FzZSBwcm9jZXNz Ow0KPiA+ICAgcmVtb3ZlZCB3b3JrZXJfdGhyZWFkcyBwYXJhbWV0ZXIgZnJvbSBjb25maWcuaW5p Ow0KPiA+ICAgaW1wcm92ZWQgdGhlIGxvZ3M7DQo+ID4gICBpbXByb3ZlZCBjb25maWcgZmlsZTsN Cj4gPg0KPiA+ICBhcHAvbWVzb24uYnVpbGQgICAgICAgICAgICAgICB8ICAgMSArDQo+ID4gIGFw cC90ZXN0LWRtYS1wZXJmL2JlbmNobWFyay5jIHwgNDcyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysNCj4gPiBhcHAvdGVzdC1kbWEtcGVyZi9jb25maWcuaW5pICB8ICA1OSArKysrDQo+ID4g IGFwcC90ZXN0LWRtYS1wZXJmL21haW4uYyAgICAgIHwgNTY5DQo+ID4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KPiA+ICBhcHAvdGVzdC1kbWEtcGVyZi9tYWluLmggICAgICB8 ICA2OSArKysrKw0KPiA+ICBhcHAvdGVzdC1kbWEtcGVyZi9tZXNvbi5idWlsZCB8ICAxNyArDQo+ ID4gIDYgZmlsZXMgY2hhbmdlZCwgMTE4NyBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcHAvdGVzdC1kbWEtcGVyZi9iZW5jaG1hcmsuYyAgY3JlYXRlIG1vZGUNCj4gMTAw NjQ0DQo+ID4gYXBwL3Rlc3QtZG1hLXBlcmYvY29uZmlnLmluaSAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGFwcC90ZXN0LWRtYS0NCj4gPiBwZXJmL21haW4uYyAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFwcC90 ZXN0LWRtYS1wZXJmL21haW4uaCAgY3JlYXRlIG1vZGUNCj4gPiAxMDA2NDQgYXBwL3Rlc3QtZG1h LXBlcmYvbWVzb24uYnVpbGQNCj4gPg0KPiANCj4gPHNuaXA+DQo+IA0KPiA+ICsNCj4gPiArc3Rh dGljIGlubGluZSBpbnQNCj4gPiArZG9fZG1hX21lbV9jb3B5KHZvaWQgKnApDQo+ID4gK3sNCj4g PiArCXVpbnQxNl90ICpwYXJhX2lkeCA9ICh1aW50MTZfdCAqKXA7DQo+ID4gKwl2b2xhdGlsZSBz dHJ1Y3QgbGNvcmVfcGFyYW1zICpwYXJhID0gd29ya2VyX3BhcmFtc1sqcGFyYV9pZHhdOw0KPiA+ ICsJdm9sYXRpbGUgc3RydWN0IHdvcmtlcl9pbmZvICp3b3JrZXJfaW5mbyA9ICYocGFyYS0+d29y a2VyX2luZm8pOw0KPiA+ICsJdWludDE2X3QgZGV2X2lkID0gcGFyYS0+ZGV2X2lkOw0KPiA+ICsJ dWludDMyX3QgbnJfYnVmID0gcGFyYS0+bnJfYnVmOw0KPiA+ICsJdWludDE2X3Qga2lja19iYXRj aCA9IHBhcmEtPmtpY2tfYmF0Y2g7DQo+ID4gKwl1aW50MzJfdCBidWZfc2l6ZSA9IHBhcmEtPmJ1 Zl9zaXplOw0KPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICoqc3JjcyA9IHBhcmEtPnNyY3M7DQo+ID4g KwlzdHJ1Y3QgcnRlX21idWYgKipkc3RzID0gcGFyYS0+ZHN0czsNCj4gPiArCWludDY0X3QgYXN5 bmNfY250ID0gMDsNCj4gPiArCWludCBucl9jcGwgPSAwOw0KPiA+ICsJdWludDMyX3QgaTsNCj4g PiArCXVpbnQzMl90IHBvbGxfY250ID0gMDsNCj4gPiArDQo+ID4gKwl3b3JrZXJfaW5mby0+c3Rv cF9mbGFnID0gZmFsc2U7DQo+ID4gKwl3b3JrZXJfaW5mby0+cmVhZHlfZmxhZyA9IHRydWU7DQo+ ID4gKw0KPiA+ICsJd2hpbGUgKCF3b3JrZXJfaW5mby0+c3RhcnRfZmxhZykNCj4gPiArCQk7DQo+ ID4gKw0KPiA+ICsJd2hpbGUgKDEpIHsNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgbnJfYnVmOyBp KyspIHsNCj4gPiArCQkJaWYgKHVubGlrZWx5KHJ0ZV9kbWFfY29weShkZXZfaWQsDQo+ID4gKwkJ CQkJCTAsDQo+ID4gKwkJCQkJCXJ0ZV9wa3RtYnVmX2lvdmEoc3Jjc1tpXSksDQo+ID4gKwkJCQkJ CXJ0ZV9wa3RtYnVmX2lvdmEoZHN0c1tpXSksDQo+ID4gKwkJCQkJCWJ1Zl9zaXplLA0KPiA+ICsJ CQkJCQkwKSA8IDApKSB7DQo+ID4gKwkJCQlydGVfZG1hX3N1Ym1pdChkZXZfaWQsIDApOw0KPiA+ ICsJCQkJd2hpbGUgKHJ0ZV9kbWFfYnVyc3RfY2FwYWNpdHkoZGV2X2lkLCAwKSA9PQ0KPiA+IDAp IHsNCj4gPiArCQkJCQlucl9jcGwgPSBydGVfZG1hX2NvbXBsZXRlZChkZXZfaWQsDQo+ID4gMCwg TUFYX0RNQV9DUExfTkIsDQo+ID4gKwkJCQkJCQkJTlVMTCwgTlVMTCk7DQo+ID4gKwkJCQkJYXN5 bmNfY250IC09IG5yX2NwbDsNCj4gPiArCQkJCQl3b3JrZXJfaW5mby0+dG90YWxfY3BsICs9IG5y X2NwbDsNCj4gPiArCQkJCX0NCj4gPiArCQkJCWlmIChydGVfZG1hX2NvcHkoZGV2X2lkLA0KPiA+ ICsJCQkJCQkwLA0KPiA+ICsJCQkJCQlydGVfcGt0bWJ1Zl9pb3ZhKHNyY3NbaV0pLA0KPiA+ICsJ CQkJCQlydGVfcGt0bWJ1Zl9pb3ZhKGRzdHNbaV0pLA0KPiA+ICsJCQkJCQlidWZfc2l6ZSwNCj4g PiArCQkJCQkJMCkgPCAwKSB7DQo+ID4gKwkJCQkJcHJpbnRmKCJlbnF1ZXVlIGZhaWwgYWdhaW4g YXQgJXVcbiIsDQo+ID4gaSk7DQo+ID4gKwkJCQkJcHJpbnRmKCJzcGFjZTolZFxuIiwNCj4gPiBy dGVfZG1hX2J1cnN0X2NhcGFjaXR5KGRldl9pZCwgMCkpOw0KPiA+ICsJCQkJCXJ0ZV9leGl0KEVY SVRfRkFJTFVSRSwgIkRNQQ0KPiA+IGVucXVldWUgZmFpbGVkXG4iKTsNCj4gDQo+IFtBbWl0XTog T24gYWxsIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBleGl0cywgcGxlYXNlIGNhbGwgcnRlX2RtYV9zdG9w IGFuZA0KPiBydGVfZG1hX2Nsb3NlIHRvIGV4aXQgY2xlYW5seS4NCg0KW0NoZW5nXSBHb3QgaXQu IFRoYW5rcywgSSdsbCBmaXggaXQgaW4gdGhlIG5leHQgdmVyc2lvbi4NCg0KPiANCj4gPiArCQkJ CX0NCj4gPiArCQkJfQ0KPiA+ICsJCQlhc3luY19jbnQrKzsNCj4gPiArDQo+ID4gKwkJCWlmICgo YXN5bmNfY250ICUga2lja19iYXRjaCkgPT0gMCkgew0KPiA+ICsJCQkJcnRlX2RtYV9zdWJtaXQo ZGV2X2lkLCAwKTsNCj4gPiArCQkJCS8qIGFkZCBhIHBvbGwgdG8gYXZvaWQgcmluZyBmdWxsICov DQo+ID4gKwkJCQlucl9jcGwgPSBydGVfZG1hX2NvbXBsZXRlZChkZXZfaWQsIDAsDQo+ID4gTUFY X0RNQV9DUExfTkIsIE5VTEwsIE5VTEwpOw0KPiA+ICsJCQkJYXN5bmNfY250IC09IG5yX2NwbDsN Cj4gPiArCQkJCXdvcmtlcl9pbmZvLT50b3RhbF9jcGwgKz0gbnJfY3BsOw0KPiA+ICsJCQl9DQo+ ID4gKwkJfQ0KPiA+ICsNCj4gPiArCQlpZiAod29ya2VyX2luZm8tPnN0b3BfZmxhZykNCj4gPiAr CQkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcnRlX2RtYV9zdWJtaXQoZGV2X2lkLCAw KTsNCj4gPiArCXdoaWxlICgoYXN5bmNfY250ID4gMCkgJiYgKHBvbGxfY250KysgPCBQT0xMX01B WCkpIHsNCj4gPiArCQlucl9jcGwgPSBydGVfZG1hX2NvbXBsZXRlZChkZXZfaWQsIDAsDQo+ID4g TUFYX0RNQV9DUExfTkIsIE5VTEwsIE5VTEwpOw0KPiA+ICsJCWFzeW5jX2NudCAtPSBucl9jcGw7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+IA0KPiA8 c25pcD4NCj4gDQo+ID4gKw0KPiA+ICt2b2lkDQo+ID4gK21lbV9jb3B5X2JlbmNobWFyayhzdHJ1 Y3QgdGVzdF9jb25maWd1cmUgKmNmZywgYm9vbCBpc19kbWEpIHsNCj4gPiArCXVpbnQxNl90IGk7 DQo+ID4gKwl1aW50MzJfdCBvZmZzZXQ7DQo+ID4gKwl1bnNpZ25lZCBpbnQgbGNvcmVfaWQgPSAw Ow0KPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICoqc3JjcyA9IE5VTEwsICoqZHN0cyA9IE5VTEw7DQo+ ID4gKwlzdHJ1Y3QgbGNvcmVfZG1hX21hcF90ICpsZG0gPSAmY2ZnLT5sY29yZV9kbWFfbWFwOw0K PiA+ICsJdW5zaWduZWQgaW50IGJ1Zl9zaXplID0gY2ZnLT5idWZfc2l6ZS5jdXI7DQo+ID4gKwl1 aW50MTZfdCBraWNrX2JhdGNoID0gY2ZnLT5raWNrX2JhdGNoLmN1cjsNCj4gPiArCXVpbnQzMl90 IG5yX2J1ZiA9IGNmZy0+bnJfYnVmID0gKGNmZy0+bWVtX3NpemUuY3VyICogMTAyNCAqIDEwMjQp IC8NCj4gPiAoY2ZnLT5idWZfc2l6ZS5jdXIgKiAyKTsNCj4gPiArCXVpbnQxNl90IG5iX3dvcmtl cnMgPSBsZG0tPmNudDsNCj4gPiArCXVpbnQxNl90IHRlc3Rfc2VjcyA9IGNmZy0+dGVzdF9zZWNz Ow0KPiA+ICsJZmxvYXQgbWVtb3J5Ow0KPiA+ICsJdWludDMyX3QgYXZnX2N5Y2xlcyA9IDA7DQo+ ID4gKwlmbG9hdCBtb3BzOw0KPiA+ICsJZmxvYXQgYmFuZHdpZHRoOw0KPiA+ICsNCj4gPiArCWlm IChzZXR1cF9tZW1vcnlfZW52KGNmZywgJnNyY3MsICZkc3RzKSA8IDApDQo+ID4gKwkJZ290byBv dXQ7DQo+ID4gKw0KPiA+ICsJaWYgKGlzX2RtYSkNCj4gPiArCQlpZiAoY29uZmlnX2RtYWRldnMo Y2ZnKSA8IDApDQo+ID4gKwkJCWdvdG8gb3V0Ow0KPiA+ICsNCj4gPiArCWlmIChjZmctPmNhY2hl X2ZsdXNoKSB7DQo+ID4gKwkJY2FjaGVfZmx1c2hfYnVmKHNyY3MsIGJ1Zl9zaXplLCBucl9idWYp Ow0KPiA+ICsJCWNhY2hlX2ZsdXNoX2J1Zihkc3RzLCBidWZfc2l6ZSwgbnJfYnVmKTsNCj4gPiAr CQlydGVfbWIoKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlwcmludGYoIlN0YXJ0IHRlc3Rpbmcu Li4uXG4iKTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbmJfd29ya2VyczsgaSsrKSB7 DQo+ID4gKwkJbGNvcmVfaWQgPSBsZG0tPmxjb3Jlc1tpXTsNCj4gPiArCQlvZmZzZXQgPSBucl9i dWYgLyBuYl93b3JrZXJzICogaTsNCj4gPiArDQo+ID4gKwkJd29ya2VyX3BhcmFtc1tpXSA9IHJ0 ZV9tYWxsb2MoTlVMTCwgc2l6ZW9mKHN0cnVjdA0KPiA+IGxjb3JlX3BhcmFtcyksIDApOw0KPiA+ ICsJCWlmICghd29ya2VyX3BhcmFtc1tpXSkgew0KPiA+ICsJCQlwcmludGYoImxjb3JlIHBhcmFt ZXRlcnMgbWFsbG9jIGZhaWx1cmUgZm9yIGxjb3JlDQo+ID4gJWRcbiIsIGxjb3JlX2lkKTsNCj4g PiArCQkJYnJlYWs7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmIChpc19kbWEpIHsNCj4gPiArCQkJd29y a2VyX3BhcmFtc1tpXS0+ZG1hX25hbWUgPSBsZG0tDQo+ID4gPmRtYV9uYW1lc1tpXTsNCj4gPiAr CQkJd29ya2VyX3BhcmFtc1tpXS0+ZGV2X2lkID0gbGRtLT5kbWFfaWRzW2ldOw0KPiA+ICsJCQl3 b3JrZXJfcGFyYW1zW2ldLT5raWNrX2JhdGNoID0ga2lja19iYXRjaDsNCj4gPiArCQl9DQo+ID4g KwkJd29ya2VyX3BhcmFtc1tpXS0+d29ya2VyX2lkID0gaTsNCj4gPiArCQl3b3JrZXJfcGFyYW1z W2ldLT5ucl9idWYgPSAodWludDMyX3QpKG5yX2J1ZiAvDQo+ID4gbmJfd29ya2Vycyk7DQo+ID4g KwkJd29ya2VyX3BhcmFtc1tpXS0+YnVmX3NpemUgPSBidWZfc2l6ZTsNCj4gPiArCQl3b3JrZXJf cGFyYW1zW2ldLT50ZXN0X3NlY3MgPSB0ZXN0X3NlY3M7DQo+ID4gKwkJd29ya2VyX3BhcmFtc1tp XS0+c3JjcyA9IHNyY3MgKyBvZmZzZXQ7DQo+ID4gKwkJd29ya2VyX3BhcmFtc1tpXS0+ZHN0cyA9 IGRzdHMgKyBvZmZzZXQ7DQo+ID4gKwkJd29ya2VyX3BhcmFtc1tpXS0+c2NlbmFyaW9faWQgPSBj ZmctPnNjZW5hcmlvX2lkOw0KPiA+ICsJCXdvcmtlcl9wYXJhbXNbaV0tPmxjb3JlX2lkID0gbGNv cmVfaWQ7DQo+ID4gKw0KPiA+ICsJCWlmIChpc19kbWEpDQo+ID4gKwkJCXJ0ZV9lYWxfcmVtb3Rl X2xhdW5jaChkb19kbWFfbWVtX2NvcHksICh2b2lkDQo+ID4gKikoJmkpLCBsY29yZV9pZCk7DQo+ ID4gKwkJZWxzZQ0KPiA+ICsJCQlydGVfZWFsX3JlbW90ZV9sYXVuY2goZG9fY3B1X21lbV9jb3B5 LCAodm9pZA0KPiA+ICopKCZpKSwgbGNvcmVfaWQpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXdo aWxlICgxKSB7DQo+ID4gKwkJYm9vbCByZWFkeSA9IHRydWU7DQo+ID4gKwkJZm9yIChpID0gMDsg aSA8IG5iX3dvcmtlcnM7IGkrKykgew0KPiA+ICsJCQlpZiAod29ya2VyX3BhcmFtc1tpXS0+d29y a2VyX2luZm8ucmVhZHlfZmxhZyA9PQ0KPiA+IGZhbHNlKSB7DQo+ID4gKwkJCQlyZWFkeSA9IDA7 DQo+ID4gKwkJCQlicmVhazsNCj4gPiArCQkJfQ0KPiA+ICsJCX0NCj4gPiArCQlpZiAocmVhZHkp DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBu Yl93b3JrZXJzOyBpKyspDQo+ID4gKwkJd29ya2VyX3BhcmFtc1tpXS0+d29ya2VyX2luZm8uc3Rh cnRfZmxhZyA9IHRydWU7DQo+ID4gKw0KPiA+ICsJdXNsZWVwKFRFU1RfV0FJVF9VX1NFQ09ORCk7 DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbmJfd29ya2VyczsgaSsrKQ0KPiA+ICsJCXdvcmtlcl9w YXJhbXNbaV0tPndvcmtlcl9pbmZvLnRlc3RfY3BsID0NCj4gPiArd29ya2VyX3BhcmFtc1tpXS0+ d29ya2VyX2luZm8udG90YWxfY3BsOw0KPiA+ICsNCj4gPiArCXVzbGVlcCh0ZXN0X3NlY3MgKiAx MDAwICogMTAwMCk7DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbmJfd29ya2VyczsgaSsrKQ0KPiA+ ICsJCXdvcmtlcl9wYXJhbXNbaV0tPndvcmtlcl9pbmZvLnRlc3RfY3BsID0NCj4gPiB3b3JrZXJf cGFyYW1zW2ldLT53b3JrZXJfaW5mby50b3RhbF9jcGwgLQ0KPiA+ICsJCQkJCQl3b3JrZXJfcGFy YW1zW2ldLQ0KPiA+ID53b3JrZXJfaW5mby50ZXN0X2NwbDsNCj4gPiArDQo+ID4gKwlmb3IgKGkg PSAwOyBpIDwgbmJfd29ya2VyczsgaSsrKQ0KPiA+ICsJCXdvcmtlcl9wYXJhbXNbaV0tPndvcmtl cl9pbmZvLnN0b3BfZmxhZyA9IHRydWU7DQo+ID4gKw0KPiA+ICsJcnRlX2VhbF9tcF93YWl0X2xj b3JlKCk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IG5iX3dvcmtlcnM7IGkrKykgew0K PiA+ICsJCWNhbGNfcmVzdWx0KGJ1Zl9zaXplLCBucl9idWYsIG5iX3dvcmtlcnMsIHRlc3Rfc2Vj cywNCj4gPiArCQkJd29ya2VyX3BhcmFtc1tpXS0+d29ya2VyX2luZm8udGVzdF9jcGwsDQo+ID4g KwkJCSZtZW1vcnksICZhdmdfY3ljbGVzLCAmYmFuZHdpZHRoLCAmbW9wcyk7DQo+ID4gKwkJb3V0 cHV0X3Jlc3VsdChjZmctPnNjZW5hcmlvX2lkLCB3b3JrZXJfcGFyYW1zW2ldLT5sY29yZV9pZCwN Cj4gPiArCQkJCQl3b3JrZXJfcGFyYW1zW2ldLT5kbWFfbmFtZSwNCj4gPiBhdmdfY3ljbGVzLCBi dWZfc2l6ZSwNCj4gPiArCQkJCQlucl9idWYgLyBuYl93b3JrZXJzLCBtZW1vcnksDQo+ID4gYmFu ZHdpZHRoLCBtb3BzLCBpc19kbWEpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArb3V0Og0KPiA+ICsJ LyogZnJlZSBlbnYgKi8NCj4gPiArCWlmIChzcmNzKQ0KPiA+ICsJCXJ0ZV9wa3RtYnVmX2ZyZWVf YnVsayhzcmNzLCBucl9idWYpOw0KPiA+ICsJaWYgKGRzdHMpDQo+ID4gKwkJcnRlX3BrdG1idWZf ZnJlZV9idWxrKGRzdHMsIG5yX2J1Zik7DQo+ID4gKw0KPiA+ICsJaWYgKHNyY19wb29sKQ0KPiA+ ICsJCXJ0ZV9tZW1wb29sX2ZyZWUoc3JjX3Bvb2wpOw0KPiA+ICsJaWYgKGRzdF9wb29sKQ0KPiA+ ICsJCXJ0ZV9tZW1wb29sX2ZyZWUoZHN0X3Bvb2wpOw0KPiA+ICsNCj4gPiArCWlmIChpc19kbWEp IHsNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgbmJfd29ya2VyczsgaSsrKSB7DQo+ID4gKwkJCXBy aW50ZigiU3RvcHBpbmcgZG1hZGV2ICVkXG4iLCBsZG0tPmRtYV9pZHNbaV0pOw0KPiA+ICsJCQly dGVfZG1hX3N0b3AobGRtLT5kbWFfaWRzW2ldKTsNCj4gDQo+IFtBbWl0XTogQmVsb3cgcnRlX2Rt YV9zdG9wIHBsZWFzZSBjYWxsIHJ0ZV9kbWFfY2xvc2UgZm9yIGNsZWFuIGV4aXQuDQo+IA0KDQpb Q2hlbmddIFN1cmUsIEknbGwgZml4IGl0IGluIHRoZSBuZXh0IHZlcnNpb24uDQoNCj4gPHNuaXA+ DQo+IA0KPiA+ICsjZW5kaWYgLyogX01BSU5fSF8gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvYXBwL3Rl c3QtZG1hLXBlcmYvbWVzb24uYnVpbGQgYi9hcHAvdGVzdC1kbWEtDQo+ID4gcGVyZi9tZXNvbi5i dWlsZCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwMDAwLi5iZDZjMjY0MDAyDQo+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2FwcC90ZXN0LWRtYS1wZXJmL21lc29uLmJ1aWxk DQo+ID4gQEAgLTAsMCArMSwxNyBAQA0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMy1DbGF1c2UgIyBDb3B5cmlnaHQoYykgMjAxOS0yMDIzDQo+ID4gK0ludGVsIENvcnBvcmF0 aW9uDQo+ID4gKw0KPiA+ICsjIG1lc29uIGZpbGUsIGZvciBidWlsZGluZyB0aGlzIGFwcCBhcyBw YXJ0IG9mIGEgbWFpbiBEUERLIGJ1aWxkLg0KPiA+ICsNCj4gPiAraWYgaXNfd2luZG93cw0KPiA+ ICsgICAgYnVpbGQgPSBmYWxzZQ0KPiA+ICsgICAgcmVhc29uID0gJ25vdCBzdXBwb3J0ZWQgb24g V2luZG93cycNCj4gPiArICAgIHN1YmRpcl9kb25lKCkNCj4gPiArZW5kaWYNCj4gPiArDQo+ID4g K2RlcHMgKz0gWydkbWFkZXYnLCAnbWJ1ZicsICdjZmdmaWxlJ10NCj4gPiArDQo+ID4gK3NvdXJj ZXMgPSBmaWxlcygNCj4gPiArICAgICAgICAnbWFpbi5jJywNCj4gPiArICAgICAgICAnYmVuY2ht YXJrLmMnLA0KPiA+ICspDQo+ID4gLS0NCj4gPiAyLjQwLjENCg0K