From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 266C8A09DF; Thu, 3 Dec 2020 10:46:03 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C2294C99C; Thu, 3 Dec 2020 10:46:01 +0100 (CET) Received: from nat-hk.nvidia.com (nat-hk.nvidia.com [203.18.50.4]) by dpdk.org (Postfix) with ESMTP id 36CC9C996 for ; Thu, 3 Dec 2020 10:45:59 +0100 (CET) Received: from HKMAIL101.nvidia.com (Not Verified[10.18.92.77]) by nat-hk.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Thu, 03 Dec 2020 17:45:57 +0800 Received: from HKMAIL103.nvidia.com (10.18.16.12) by HKMAIL101.nvidia.com (10.18.16.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 3 Dec 2020 09:45:50 +0000 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.174) by HKMAIL103.nvidia.com (10.18.16.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Thu, 3 Dec 2020 09:45:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LqEfGgmMH4HMr950tWFUaSRgAqDgN1qo8i054VVEw2ZhO/Q+iyrPbxwWCGfGAcvL2x9kjZH0U5ujtBsbXmgLf+8IWaKVhYS6UUrjsudo4MUv3/k/t5t72nsb80kfUwdocODoPdML6n2P9Bbrczti2op9/tEL/HGWwhtDDvwvrqq+rrzw4cdN+EpNQ/T4J6QFyQWLAz5gPk7pj/EmToI1JNPnVgvW+znW001guooJA43f4ZkbPjWFFEIkqPpLkJAcPK1dq6onGuSvGvguNVZs/mVZ1cqVPSQmd3ttVkBM78pzwzna9i31XoVZE7k+DVYp1XzeADmf7LVZzak8vOY9gg== 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-SenderADCheck; bh=j+torhElAJ7VXHNclHMrMCUnKcZSaAETTkt42IAkcp0=; b=llUsPScjeityxlXdf678B0Az0PVStvdvMROUvlYfXj90qXmpUMOL3ryVDkr69affyVNSE31Xk4fWQ1cqhpmXCibu3FJ/xtSpkkF+fjK7KCNmshtHiThnt2akxxhc4oom906d2qUoitjYVjL/I2q07Pxg5ihnKE0JiDETItjEPQbGfKBjEt9mjwjYNYMBRg9JXHySWkKG2jrdS7rhCvdpZ0qkCgWWxn25nS9LEgaZnITYlM2qzAgxnB9ANCP6ZKAQrKMwyUv7QgwRDnNpg/THjFAnM/IVfjLeq5ZKpz/CbD7Ju66DabFT2u3FBdG2NTIC55C5tBROtB60MYhEvgIQwQ== 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 Received: from MWHPR12MB1501.namprd12.prod.outlook.com (2603:10b6:301:f::18) by MWHPR12MB1903.namprd12.prod.outlook.com (2603:10b6:300:108::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3632.21; Thu, 3 Dec 2020 09:45:47 +0000 Received: from MWHPR12MB1501.namprd12.prod.outlook.com ([fe80::e932:ffa2:ae39:a379]) by MWHPR12MB1501.namprd12.prod.outlook.com ([fe80::e932:ffa2:ae39:a379%11]) with mapi id 15.20.3611.031; Thu, 3 Dec 2020 09:45:47 +0000 From: Slava Ovsiienko To: Ferruh Yigit , NBU-Contact-Thomas Monjalon , "Wei Hu (Xavier)" CC: "dev@dpdk.org" , "xavier.huwei@huawei.com" Thread-Topic: [dpdk-dev] [PATCH v4 3/6] app/testpmd: remove restriction on txpkts set Thread-Index: AQHWwly6wjJw8vbGvUKwLLN1L/9JtqnY47QAgAEhXlCAAFgsAIABmGWggAfNCwCAAWmMoA== Date: Thu, 3 Dec 2020 09:45:47 +0000 Message-ID: References: <20200818120254.72792-1-huwei013@chinasoftinc.com> <20200925124719.26001-4-huwei013@chinasoftinc.com> <3600731.79S79Y1HSu@thomas> <7b31a7ca-a29a-cc7a-7ed7-d22497eb6244@intel.com> <3bdc98c4-4b31-8bdf-4d06-7da699d0d4a8@intel.com> <7d973575-3593-1536-60c3-7bb84b7bbd01@intel.com> In-Reply-To: <7d973575-3593-1536-60c3-7bb84b7bbd01@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [95.164.10.10] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fe0d3415-d5ec-415c-9888-08d89770363f x-ms-traffictypediagnostic: MWHPR12MB1903: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: p2aDDgUuXuF/HsE4DB9FHzMkOqYiGlKNfi7GbYcsYZgsEtiH6XWRaqE1r8T0MCG+Ooj3gg5KmQVFljauH5Spv90xFBC1JFm2/SVUr5t3YRSFJwZoRQS6z1Ct5TbZJfNGhTXARG3qddxrwydL9OP1aPWlj0uArL+2cm28eyfqdX6FG7VP8LUFly0AqbOwRpK9Gz0ufOf9oXsqzkTBlnAJJIlTqxZe/DvwoRYTYaUWnxGw5gEqkmHX1R9aSwDTot0rya3x+ftBG1oZtiYrgsuXHCfdNA67CXP2YIksfnV5HGBcApi7VA0LUpcipLGgvbEv2lrEVK+pZJ8SK9JsMTFtmVjKVOFoPFPrsuPdcgI5dQYyv+zdZVnmye3Lj6hrkCogrG9KzlbrDHIoLGgns9zlzEEAHNz93Kq5EioUZhsuLJvexPHfEQGeU0Oz8KamoR4hYm/UfUNKEo5DUGJpJGqi6Q== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR12MB1501.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(376002)(396003)(136003)(39860400002)(346002)(8936002)(110136005)(54906003)(52536014)(7696005)(5660300002)(55016002)(66446008)(83380400001)(9686003)(26005)(186003)(2906002)(966005)(86362001)(53546011)(45080400002)(478600001)(33656002)(4326008)(6506007)(66476007)(66946007)(76116006)(316002)(64756008)(66556008)(71200400001)(8676002)(40753002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?MnRSUEtjSzRqbWtSRVRBc0VwdDAxMU0xVnN0RHkyYUwwVnhSdks5QmRrUFQy?= =?utf-8?B?UjhSb2h3bzZGeGVSUFpnT0VhV1hYQXhHeVVKOU81WHVodDFqclFTVlZVVlQy?= =?utf-8?B?SWF1UCsxb00xTjJIamdwblJlTlBvaEhTYXdiM3gwN2FrTEk0bVgwUUVvK0Rs?= =?utf-8?B?QWZ0SllDMWtGUTVVSFhBZ1VnSTcydXVaSyt2Q3BFeERtZmM5YUFDaWhxMnFm?= =?utf-8?B?WXl1dFNkUEh2TUtMYXlyekNCeGRYS2g2WXF4dGx2Z3VjcDRudVM0cHU5cDZB?= =?utf-8?B?UG43TE5Ud2J4dk56bFlnWDd4bFpEdjdPQnJjSmhtUXRsWDA0ZzJ0d0pyZEVG?= =?utf-8?B?MkVIQzlLS1h0YXQ4b0FQZGtwQVQzWVZNM2FnK2kvaUFGODNSNDR2THkwYWtS?= =?utf-8?B?dlZWaEhHdTlmc0IyN3B5b1JpK2xUalJMZDNnRURGcGhrakp4V0laMGRMY0ZT?= =?utf-8?B?MHcwM2tJcmcxNWpCMSsxWThIT28wU3lHOFJDQ21lVDIzSmtCQVBIQWVGN1pC?= =?utf-8?B?TlBvbG5sMnZUdWovcC9GQlZFcmZqdEVBVXR5NTBHeEs3N3ZXNWJaSkVucnVT?= =?utf-8?B?S2p4UTFTUTQ3Z0V3Uy93Tlc0RHVLa2RXMnVGRFRYaWlLaVRHUGhITWdUdlcr?= =?utf-8?B?UXVjSkpEUlNxT2xUaTJkYUtNT1FDQVBpZFQzaTFyUExhSjViRXZBTDZFU1A5?= =?utf-8?B?MnRaOGRyVU1CY1p3NUhPK3B1eUV1ZDBzUUZZbXVDVTF5SFpqdnZZMVZRcWZK?= =?utf-8?B?cXY1R2cxZHBWaTNySXI3YWpVN3AxQStVNTZTcjA2cysrU3NXaitxT2hGQUtN?= =?utf-8?B?dHpMaGRvL25LVyttOGhUWnBpS2c0dzh6VXB3QzM3SDAvRnYyTk1sUGNtNVZM?= =?utf-8?B?OUxOK1ZFWit0OGFubStrdUQ2ekVpOXBueW83N28zV3lYbzZyY29yY2xOSlgw?= =?utf-8?B?QVNBTkpaempzeDBxY1MyQ3lvV3gwT2NXNG42MXc3MFpFMU5VYnBaWG0wZFMw?= =?utf-8?B?TDJPd1VWd3hyakFJbk5JTG9XVzQwSFhtTllpbTZWRTJHMWhNUDVpWTVxTHls?= =?utf-8?B?emwxU2l3SGRuRFBtMVhXTDBKTTJpWVk0SElJLyttRzAwR2xuMXdqR3Z5NlVE?= =?utf-8?B?alVPMEx3N3JRRFdjYW03T3pUUFlGdkdBeEtEVkN4alBEYjZOZzRjeDhUV0tP?= =?utf-8?B?TWw3VlBrTHA4ZUQzdG1kNmVPZGdYVVgzQlNMTUErczA3ZUlOa2ZMcjBKR2ly?= =?utf-8?B?MWJwcWZlSjhuSTNFc1FyR0Vva0d2dVpaeEd2ZmFZemcwZkFsY3YxZm9wTC9Q?= =?utf-8?Q?GE8hTadazyu3s=3D?= x-ms-exchange-transport-forked: True 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: MWHPR12MB1501.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe0d3415-d5ec-415c-9888-08d89770363f X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Dec 2020 09:45:47.4204 (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: OZrOqo2o2C5m+tCYWs8bGis1N8wvnudaE5ecCwLBWxpCTmuBd1xWEBUHGa5roWxA0XpexRXwiE0LnhEFkaQsZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1903 X-OriginatorOrg: Nvidia.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1606988757; bh=j+torhElAJ7VXHNclHMrMCUnKcZSaAETTkt42IAkcp0=; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To: CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References: In-Reply-To:Accept-Language:Content-Language:X-MS-Has-Attach: X-MS-TNEF-Correlator:authentication-results:x-originating-ip: x-ms-publictraffictype:x-ms-office365-filtering-correlation-id: x-ms-traffictypediagnostic:x-ld-processed: x-microsoft-antispam-prvs:x-ms-oob-tlc-oobclassifiers: x-ms-exchange-senderadcheck:x-microsoft-antispam: x-microsoft-antispam-message-info:x-forefront-antispam-report: x-ms-exchange-antispam-messagedata:x-ms-exchange-transport-forked: Content-Type:Content-Transfer-Encoding:MIME-Version: X-MS-Exchange-CrossTenant-AuthAs: X-MS-Exchange-CrossTenant-AuthSource: X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg; b=J7Qsn3p4p0M23ifgZakr7t0N4gcGt0dY7YEvEXIdXV7PjAbZqoSqsaAfQFNS9/qFU d3WB9daJUrOfOqUIyT9bFr3EAFJUjICFuHchh9RMZnkvQFEvSQxWJii/QeYUzyP1tk K5gYQbwVV2Csi33qZmL7s+xSWwO2qk92eK5GAZmAkImb5XDNrpvokI39pfefyeJeXu IPdDq1kjuC0D3x6Y8OdBHah2KvpAnD0qoTPDuN84/QXoeEr8fDQAr8B88asrzCYCPe BTAv27w2vRbzuhFb9+u8YPp8F3gkmc4SrX0jfqY/BK2NNTZUgd1+5oL2SHif2Xu38Z ACdzKbZ/su2jQ== Subject: Re: [dpdk-dev] [PATCH v4 3/6] app/testpmd: remove restriction on txpkts set X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGksIEZlcnJ1aA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEZlcnJ1 aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBEZWNl bWJlciAyLCAyMDIwIDE0OjA3DQo+IFRvOiBTbGF2YSBPdnNpaWVua28gPHZpYWNoZXNsYXZvQG52 aWRpYS5jb20+OyBOQlUtQ29udGFjdC1UaG9tYXMNCj4gTW9uamFsb24gPHRob21hc0Btb25qYWxv bi5uZXQ+OyBXZWkgSHUgKFhhdmllcikNCj4gPGh1d2VpMDEzQGNoaW5hc29mdGluYy5jb20+DQo+ IENjOiBkZXZAZHBkay5vcmc7IHhhdmllci5odXdlaUBodWF3ZWkuY29tDQo+IFN1YmplY3Q6IFJl OiBbZHBkay1kZXZdIFtQQVRDSCB2NCAzLzZdIGFwcC90ZXN0cG1kOiByZW1vdmUgcmVzdHJpY3Rp b24gb24NCj4gdHhwa3RzIHNldA0KPiANCj4gT24gMTEvMjcvMjAyMCAxOjA1IFBNLCBTbGF2YSBP dnNpaWVua28gd3JvdGU6DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZy b206IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4NCj4gPj4gU2VudDogVGh1 cnNkYXksIE5vdmVtYmVyIDI2LCAyMDIwIDE0OjM4DQo+ID4+IFRvOiBTbGF2YSBPdnNpaWVua28g PHZpYWNoZXNsYXZvQG52aWRpYS5jb20+OyBOQlUtQ29udGFjdC1UaG9tYXMNCj4gPj4gTW9uamFs b24gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBXZWkgSHUgKFhhdmllcikNCj4gPj4gPGh1d2VpMDEz QGNoaW5hc29mdGluYy5jb20+DQo+ID4+IENjOiBkZXZAZHBkay5vcmc7IHhhdmllci5odXdlaUBo dWF3ZWkuY29tDQo+ID4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2NCAzLzZdIGFw cC90ZXN0cG1kOiByZW1vdmUNCj4gPj4gcmVzdHJpY3Rpb24gb24gdHhwa3RzIHNldA0KPiA+Pg0K PiA+PiBPbiAxMS8yNi8yMDIwIDc6MjQgQU0sIFNsYXZhIE92c2lpZW5rbyB3cm90ZToNCj4gPj4+ IFRoZSBidWc6DQo+ID4+PiBodHRwczovL25hbTExLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxv b2suY29tLz91cmw9aHR0cHMlM0ElMkYlMkZidQ0KPiA+Pj4gZ3MNCj4gPj4+DQo+ID4+DQo+IC5k cGRrLm9yZyUyRnNob3dfYnVnLmNnaSUzRmlkJTNENTg0JmFtcDtkYXRhPTA0JTdDMDElN0N2aWFj aGVzbGF2bw0KPiA+PiAlNDBuDQo+ID4+Pg0KPiA+Pg0KPiB2aWRpYS5jb20lN0NlNTJiYTViYmFi MTg0YWM4NTkyODA4ZDg5MjA4NDJjNSU3QzQzMDgzZDE1NzI3MzQwYzFiNw0KPiA+PiBkYjM5ZQ0K PiA+Pj4NCj4gPj4NCj4gZmQ5Y2NjMTdhJTdDMCU3QzAlN0M2Mzc0MTk5MTE0NjIwMTE3MDAlN0NV bmtub3duJTdDVFdGcGJHWnNiMw0KPiA+PiBkOGV5SldJam8NCj4gPj4+DQo+ID4+DQo+IGlNQzR3 TGpBd01EQWlMQ0pRSWpvaVYybHVNeklpTENKQlRpSTZJazFoYVd3aUxDSlhWQ0k2TW4wJTNEJTdD MTAwMA0KPiA+PiAmYW1wDQo+ID4+Pg0KPiA+Pg0KPiA7c2RhdGE9UUJCNjdXcUVqVUhnd3FITmpx eDJWTGRhVFJNek1lb2RoJTJCJTJGVkZzSEJ5UWclM0QmYW0NCj4gPj4gcDtyZXNlcnZlZA0KPiA+ Pj4gPTANCj4gPj4+DQo+ID4+PiBDYW4gd2UgcGFzcyB0aGUgbmJfc2VncyA9IDEgYWx3YXlzPw0K PiA+Pj4gT25lIGRlc2NyaXB0b3IgaXMgbWluaW1hbCBiYXNpYyBjYXBhYmlsaXR5IHRvIHNlbmQs IGl0IHNob3VsZCBiZQ0KPiA+Pj4gYWx3YXlzDQo+ID4+IHN1cHBvcnRlZC4NCj4gPj4+DQo+ID4+ DQo+ID4+IEhpIFNsYXZhLA0KPiA+Pg0KPiA+PiBJIGRpZG4ndCBnZXQgeW91ciBjb21tZW50LCBj YW4geW91IHBsZWFzZSBlbGFib3JhdGU/DQo+ID4+DQo+ID4gVGhlIC0tdHhwa3RzIGlzIHJlamVj dGVkIG9uIHRlc3RwbWQgc3RhcnR1cCBkdWUgdG8gcG9ydCBpcyBub3QNCj4gPiBjb25maWd1cmVk IHlldCBhbmQgd2UgY2FuJ3QgZmluZCBvdXQgaG93IG1hbnkgZGVzY3JpcHRvcnMgYXJlIGFjdHVh bGx5DQo+ID4gY29uZmlndXJlZCBpbiB0aGUgVHggcXVldWVzLg0KPiA+DQo+ID4gQ29uZmlndXJp bmcgVHggcXVldWVzIHdpdGggemVybyBkZXNjcmlwdG9ycyBzZWVtcyB0byBiZSBtZWFuaW5nbGVz cywNCj4gPiBpdCB3b3VsZCBkaXNhYmxlIGEgYmFzaWMgY2FwYWJpbGl0eSB0byBzZW5kIHRoZSBw YWNrZXRzLiBBbmQgd2UgY291bGQNCj4gPiBhc3N1bWUgdGhlIHNpbmdsZSBzZWdtZW50IHBhY2tl dCBzZW5kaW5nIGlzIGFsd2F5cyBzdXBwb3J0ZWQuDQo+ID4NCj4gPiBJZiAtLXR4cGt0cyBzZXRz IG9ubHkgdGhlIHNpemUgZm9yIHRoZSBzaW5nbGUgc2VnbWVudCB3ZSBjYW4gYXNzdW1lDQo+ID4g dGhhdCB0aGUgcGFja2V0cyB3aXRoIG9ubHkgb25lIHNlZ21lbnQgaXMgZ29pbmcgdG8gYmUgc2Vu dCwgYW5kIHdlDQo+ID4gY291bGQgaWdub3JlIHRoZSBUeCBxdWV1ZSBkZXNjcmlwdG9yIG51bWJl ciBjaGVjayBmb3IgdGhlIGNhc2UuDQo+ID4NCj4gDQo+IE92ZXJhbGwgSSB3YXMgT0sgdG8gcmVt b3ZlIHRoZSBjaGVjayBjb21wbGV0ZWx5LCBldmVuIG11bHRpIHNlZ21lbnQgdXNlZCBpdA0KPiBp cyB2ZXJ5IHVubGlrZWx5IHRoYXQgbnVtYmVyIG9mIHNlZ21lbnRzIHdpbGwgYmUgbW9yZSB0aGFu IGRlc2NyaXB0b3Igc2l6ZS4NCj4gDQo+IEJ1dCBhdCBsZWFzdCBPSyB0byBpZ25vcmUgdGhlIGNo ZWNrIGZvciBzaW5nbGUgc2VnbWVudCwgYWxzbyB3ZSBjYW4gZm9yY2UgJy0tdHhkJw0KPiBwYXJh bWV0ZXIgcHJvdmlkZWQgdG8gZW5hYmxlICctLXR4cGt0cycsIGxpa2UgZG9uZSBiZWZvcmUuDQoN Ck9LLCBJJ2xsIHByb3ZpZGUgdGhlIHBhdGNoIHRha2luZyBib3RoIGFwcHJvYWNoZXMgb24gdGVz dHBtZCBzdGFydHVwOg0KLSBpZiAtLXR4ZCBpcyBzcGVjaWZpZWQgdGhlIGNoZWNrIHdpbGwgYmUg ZG9uZSBhZ2FpbnN0IGl0LCAgZmFpbGVkIGNoZWNrIGZvciBub24tY29uZmlndXJlZCBwb3J0IHdp bGwgYmUgaWdub3JlZA0KLSBpZiB0aGVyZSBpcyB0aGUgb25seSBvbmUgc2VnbWVudCBzcGVjaWZp ZWQgaW4gdHhwa3RzLCAgZmFpbGVkIGNoZWNrIGZvciBub24tY29uZmlndXJlZCBwb3J0IHdpbGwg YmUgaWdub3JlZA0KDQpXaXRoIGJlc3QgcmVnYXJkcywgU2xhdmENCg0KPiA+DQo+ID4NCj4gPj4N Cj4gPj4+IFdpdGggYmVzdCByZWdhcmRzLCBTbGF2YQ0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0 QGludGVsLmNvbT4NCj4gPj4+PiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDI1LCAyMDIwIDE2 OjA3DQo+ID4+Pj4gVG86IE5CVS1Db250YWN0LVRob21hcyBNb25qYWxvbiA8dGhvbWFzQG1vbmph bG9uLm5ldD47IFdlaSBIdQ0KPiA+Pj4+IChYYXZpZXIpIDxodXdlaTAxM0BjaGluYXNvZnRpbmMu Y29tPg0KPiA+Pj4+IENjOiBkZXZAZHBkay5vcmc7IHhhdmllci5odXdlaUBodWF3ZWkuY29tOyBT bGF2YSBPdnNpaWVua28NCj4gPj4+PiA8dmlhY2hlc2xhdm9AbnZpZGlhLmNvbT4NCj4gPj4+PiBT dWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjQgMy82XSBhcHAvdGVzdHBtZDogcmVtb3Zl DQo+ID4+Pj4gcmVzdHJpY3Rpb24gb24gdHhwa3RzIHNldA0KPiA+Pj4+DQo+ID4+Pj4gT24gMTEv MjQvMjAyMCAxMjoyMyBQTSwgRmVycnVoIFlpZ2l0IHdyb3RlOg0KPiA+Pj4+PiBPbiAxMS8yNC8y MDIwIDEwOjI3IEFNLCBUaG9tYXMgTW9uamFsb24gd3JvdGU6DQo+ID4+Pj4+PiBJcyBpdCBPSyB0 byBrZWVwIHRoaXMgcmVncmVzc2lvbj8NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBGZXJydWgsIHdoYXQg ZG8geW91IHN1Z2dlc3Q/DQo+ID4+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJIGNvbmZpcm0gdGhl ICctLXR4cGt0cycgcGFyYW1ldGVyIGlzIGJyb2tlbiBub3csIEkgc3VnZ2VzdA0KPiA+Pj4+PiBz dWJtaXR0aW5nIGEgZGVmZWN0IGZvciBpdCBhbmQgY29udGludWUgd2l0aCB0aGUgcmVncmVzc2lv bi4NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IEhpIFNsYXZhLA0KPiA+Pj4+DQo+ID4+Pj4gQ2Fu IHlvdSBwbGVhc2Ugc3VibWl0IHRoZSBCdWd6aWxsYSBkZWZlY3Q/DQo+ID4+Pj4NCj4gPj4+PiBU aGFua3MsDQo+ID4+Pj4gZmVycnVoDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+PiBXZSBoYXZlIGFs dGVybmF0aXZlIGZvciB0aGUgcGFyYW1ldGVyLCAic2V0IHR4cGt0cyA8bGVuMFssbGVuMV0qPiIN Cj4gPj4gY29tbWFuZC4NCj4gPj4+Pj4gVGhlIHBhcmFtZXRlciB3YXMgb25seSB3b3JraW5nIHdo ZW4gaGFyZGNvZGVkICctLXR4ZD1OJyBwYXJhbWV0ZXIgaXMNCj4gPj4+Pj4gcHJvdmlkZWQsIHRo ZSBjb21tYW5kIGlzIG1vcmUgZHluYW1pYyBhbmQgd29ya3MgaG93ZXZlciBxdWV1ZSBzaXplDQo+ ID4+Pj4+IGlzDQo+ID4+Pj4gY29uZmlndXJlZC4NCj4gPj4+Pj4NCj4gPj4+Pj4gV2UgY2FuIGZp eCB0aGUgJy0tdHhwa3RzJyBpbiBuZXh0IHJlbGVhc2UuDQo+ID4+Pj4+DQo+ID4+Pj4+Pg0KPiA+ Pj4+Pj4gMjMvMTEvMjAyMCAxMjo1MCwgU2xhdmEgT3ZzaWllbmtvOg0KPiA+Pj4+Pj4+IEhpLMKg IFdlaQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSXQgd2FzIGZvdW5kIHRoaXMgcGF0Y2ggcmVqZWN0 cyB0aGUgLS10eHBrdHMgY29tbWFuZCBsaW5lIHNldHRpbmdzLg0KPiA+Pj4+Pj4+IHNldF90eF9w a3Rfc2VnbWVudHMoKSBpcyBjYWxsZWQgYmVmb3JlIGRldmljZSBzdGFydGVkIGFuZCB3ZSBoYXZl DQo+ID4+Pj4+Pj4gZmFpbHVyZSBjaGFpbjoNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IHNldF90eF9w a3Rfc2VnbWVudHMoKQ0KPiA+Pj4+Pj4+ICAgwqDCoCBuYl9zZWdzX2lzX2ludmFsaWQoKQ0KPiA+ Pj4+Pj4+ICAgwqDCoMKgwqAgZ2V0X3R4X3Jpbmdfc2l6ZSAoKQ0KPiA+Pj4+Pj4+ICAgwqDCoMKg wqDCoCBydGVfZXRoX3R4X3F1ZXVlX2luZm9fZ2V0KCkNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEl0 IGNhdXNlcyAtLXR4cGt0cyB0ZXN0cG1kIGNvbW1hbmQgbGluZSBvcHRpb24gaXMgaWdub3JlZC4N Cj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IFdpdGggYmVzdCByZWdhcmRzLCBTbGF2YQ0KPiA+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+Pj4+IEZyb206 IGRldiA8ZGV2LWJvdW5jZXNAZHBkay5vcmc+IE9uIEJlaGFsZiBPZiBXZWkgSHUgKFhhdmllcikN Cj4gPj4+Pj4+Pj4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjUsIDIwMjAgMTU6NDcNCj4gPj4+ Pj4+Pj4gVG86IGRldkBkcGRrLm9yZw0KPiA+Pj4+Pj4+PiBDYzogeGF2aWVyLmh1d2VpQGh1YXdl aS5jb20NCj4gPj4+Pj4+Pj4gU3ViamVjdDogW2RwZGstZGV2XSBbUEFUQ0ggdjQgMy82XSBhcHAv dGVzdHBtZDogcmVtb3ZlDQo+ID4+Pj4+Pj4+IHJlc3RyaWN0aW9uIG9uIHR4cGt0cyBzZXQNCj4g Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gRnJvbTogQ2hlbmdjaGFuZyBUYW5nIDx0YW5nY2hlbmdjaGFu Z0BodWF3ZWkuY29tPg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBDdXJyZW50bHksIGlmIG5iX3R4 ZCBpcyBub3Qgc2V0LCB0aGUgdHhwa3RzIGlzIG5vdCBhbGxvd2VkIHRvIGJlDQo+ID4+Pj4+Pj4+ IHNldCBiZWNhdXNlIHRoZSBuYl90eGQgaXMgdXNlZCB0byBhdm9pZCB0aGUgbnVtZXIgb2Ygc2Vn bWVudHMNCj4gPj4+Pj4+Pj4gZXhjZWVkIHRoZSBUeCByaW5nIHNpemUgYW5kIHRoZSBkZWZhdWx0 IHZhbHVlIG9mIG5iX3R4ZCBpcyAwLiBBbmQNCj4gPj4+Pj4+Pj4gdGhlcmUgaXMgYSBidWcgdGhh dCBuYl90eGQgaXMgdGhlIGdsb2JhbCBjb25maWd1cmF0aW9uIGZvciBUeA0KPiA+Pj4+Pj4+PiBy aW5nIHNpemUgYW5kIHRoZSByaW5nIHNpemUgY291bGQgYmUgY2hhbmdlZCBieSBzb21lIGNvbW1h bmQgcGVyDQo+ID4+IHF1ZXVlLg0KPiA+Pj4+Pj4+PiBTbyB0aGVzZSB2YWxpZCBjaGVjayBpcyB1 bnJlbGlhYmxlIGFuZCBpbnRyb2R1Y2VkIHVubmVjZXNzYXJ5DQo+ID4+Pj4+Pj4+IGNvbnN0cmFp bnRzLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBUaGlzIHBhdGNoIGFkZHMgYSB2YWxpZCBjaGVj ayBmdW5jdGlvbiB0byB1c2UgdGhlIHJlYWwgVHggcmluZw0KPiA+Pj4+Pj4+PiBzaXplIHRvIGNo ZWNrIHRoZSB2YWxpZGl0eSBvZiB0eHBrdHMuDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEZpeGVz OiBhZjc1MDc4ZmVjZTMgKCJmaXJzdCBwdWJsaWMgcmVsZWFzZSIpDQo+ID4+Pj4+Pj4+IENjOiBz dGFibGVAZHBkay5vcmcNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogQ2hl bmdjaGFuZyBUYW5nIDx0YW5nY2hlbmdjaGFuZ0BodWF3ZWkuY29tPg0KPiA+Pj4+Pj4+PiBTaWdu ZWQtb2ZmLWJ5OiBXZWkgSHUgKFhhdmllcikgPHhhdmllci5odXdlaUBodWF3ZWkuY29tPg0KPiA+ Pj4+Pj4+PiAtLS0NCj4gPj4+Pj4+Pj4gdjMgLT4gdjQ6DQo+ID4+Pj4+Pj4+ICAgwqDCoMKgwqAg YWRkIGNoZWNrICdydGVfZXRoX3J4X3F1ZXVlX2luZm9fZ2V0KCknIHJldHVybiB2YWx1ZSBhbmQN Cj4gPj4+Pj4+Pj4gICDCoMKgwqDCoCBpZiBpdCBpcyAnLUVOT1NUVVAnIGNhbGN1bGF0ZSB0aGUg J3Jpbmdfc2l6ZScuDQo+ID4+Pj4+Pj4+IHYzOsKgwqDCoMKgwqAgaW5pdGlhbCB2ZXJzaW9uLg0K PiA+Pj4+Pj4+PiAtLS0NCj4gPj4+Pj4+Pj4gICDCoCBhcHAvdGVzdC1wbWQvY29uZmlnLmMgfCA2 NA0KPiA+Pj4+Pj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0NCj4gPj4+Pj4+Pj4gICDCoCAxIGZpbGUgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2Fw cC90ZXN0LXBtZC9jb25maWcuYyBiL2FwcC90ZXN0LXBtZC9jb25maWcuYyBpbmRleA0KPiA+Pj4+ Pj4+PiA2NDk2ZDJmLi44ZWJiOTI3IDEwMDY0NA0KPiA+Pj4+Pj4+PiAtLS0gYS9hcHAvdGVzdC1w bWQvY29uZmlnLmMNCj4gPj4+Pj4+Pj4gKysrIGIvYXBwL3Rlc3QtcG1kL2NvbmZpZy5jDQo+ID4+ Pj4+Pj4+IEBAIC0xODkzLDYgKzE4OTMsMzggQEAgdHhfcXVldWVfaWRfaXNfaW52YWxpZChxdWV1 ZWlkX3QNCj4gdHhxX2lkKQ0KPiA+Pj4+Pj4+PiB9DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICAg wqAgc3RhdGljIGludA0KPiA+Pj4+Pj4+PiArZ2V0X3R4X3Jpbmdfc2l6ZShwb3J0aWRfdCBwb3J0 X2lkLCBxdWV1ZWlkX3QgdHhxX2lkLCB1aW50MTZfdA0KPiA+Pj4+Pj4+PiArKnJpbmdfc2l6ZSkg ew0KPiA+Pj4+Pj4+PiArwqDCoMKgIHN0cnVjdCBydGVfcG9ydCAqcG9ydCA9ICZwb3J0c1twb3J0 X2lkXTsNCj4gPj4+Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgcnRlX2V0aF90eHFfaW5mbyB0eF9xaW5m bzsNCj4gPj4+Pj4+Pj4gK8KgwqDCoCBpbnQgcmV0Ow0KPiA+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+ ICvCoMKgwqAgcmV0ID0gcnRlX2V0aF90eF9xdWV1ZV9pbmZvX2dldChwb3J0X2lkLCB0eHFfaWQs ICZ0eF9xaW5mbyk7DQo+ID4+Pj4+Pj4+ICvCoMKgwqAgaWYgKHJldCA9PSAwKSB7DQo+ID4+Pj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCAqcmluZ19zaXplID0gdHhfcWluZm8ubmJfZGVzYzsNCj4gPj4+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+ID4+Pj4+Pj4+ICvCoMKgwqAgfQ0K PiA+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+ICvCoMKgwqAgaWYgKHJldCAhPSAtRU5PVFNVUCkNCj4g Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+ID4+Pj4+Pj4+ICvCoMKgwqAg LyoNCj4gPj4+Pj4+Pj4gK8KgwqDCoMKgICogSWYgdGhlIHJ0ZV9ldGhfdHhfcXVldWVfaW5mb19n ZXQgaXMgbm90IHN1cHBvcnQgZm9yIHRoaXMNCj4gPj4+Pj4+Pj4gK1BNRCwNCj4gPj4+Pj4+Pj4g K8KgwqDCoMKgICogcmluZ19zaXplIHN0b3JlZCBpbiB0ZXN0cG1kIHdpbGwgYmUgdXNlZCBmb3Ig dmFsaWRpdHkNCj4gdmVyaWZpY2F0aW9uLg0KPiA+Pj4+Pj4+PiArwqDCoMKgwqAgKiBXaGVuIGNv bmZpZ3VyZSB0aGUgdHhxIGJ5IHJ0ZV9ldGhfdHhfcXVldWVfc2V0dXAgd2l0aA0KPiA+Pj4+Pj4+ PiBuYl90eF9kZXNjDQo+ID4+Pj4+Pj4+ICvCoMKgwqDCoCAqIGJlaW5nIDAsIGl0IHdpbGwgdXNl IGEgZGVmYXVsdCB2YWx1ZSBwcm92aWRlZCBieSBQTURzIHRvDQo+ID4+Pj4+Pj4+ICtzZXR1cCB0 aGlzDQo+ID4+Pj4+Pj4+ICvCoMKgwqDCoCAqIHR4cS4gSWYgdGhlIGRlZmF1bHQgdmFsdWUgaXMg MCwgaXQgd2lsbCB1c2UgdGhlDQo+ID4+Pj4+Pj4+ICvCoMKgwqDCoCAqIFJURV9FVEhfREVWX0ZB TExCQUNLX1RYX1JJTkdTSVpFIHRvIHNldHVwIHRoaXMgdHhxLg0KPiA+Pj4+Pj4+PiArwqDCoMKg wqAgKi8NCj4gPj4+Pj4+Pj4gK8KgwqDCoCBpZiAocG9ydC0+bmJfdHhfZGVzY1t0eHFfaWRdKQ0K PiA+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgKnJpbmdfc2l6ZSA9IHBvcnQtPm5iX3R4X2Rlc2Nb dHhxX2lkXTsNCj4gPj4+Pj4+Pj4gK8KgwqDCoCBlbHNlIGlmIChwb3J0LT5kZXZfaW5mby5kZWZh dWx0X3R4cG9ydGNvbmYucmluZ19zaXplKQ0KPiA+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgKnJp bmdfc2l6ZSA9DQo+ID4+Pj4+Pj4+ICtwb3J0LT5kZXZfaW5mby5kZWZhdWx0X3R4cG9ydGNvbmYu cmluZ19zaXplOw0KPiA+Pj4+Pj4+PiArwqDCoMKgIGVsc2UNCj4gPj4+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgICpyaW5nX3NpemUgPSBSVEVfRVRIX0RFVl9GQUxMQkFDS19UWF9SSU5HU0laRTsNCj4g Pj4+Pj4+Pj4gK8KgwqDCoCByZXR1cm4gMDsNCj4gPj4+Pj4+Pj4gK30NCj4gPj4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+PiArc3RhdGljIGludA0KPiA+Pj4+Pj4+PiAgIMKgIHJ4X2Rlc2NfaWRfaXNfaW52 YWxpZCh1aW50MTZfdCByeGRlc2NfaWQpwqAgew0KPiA+Pj4+Pj4+PiAgIMKgwqDCoMKgwqAgaWYg KHJ4ZGVzY19pZCA8IG5iX3J4ZCkNCj4gPj4+Pj4+Pj4gQEAgLTI5ODYsMTcgKzMwMTgsNDEgQEAg c2hvd190eF9wa3Rfc2VnbWVudHModm9pZCkNCj4gPj4+Pj4+Pj4gICDCoMKgwqDCoMKgIHByaW50 ZigiU3BsaXQgcGFja2V0OiAlc1xuIiwgc3BsaXQpOw0KPiA+Pj4+Pj4+PiAgIMKgIH0NCj4gPj4+ Pj4+Pj4NCj4gPj4+Pj4+Pj4gK3N0YXRpYyBib29sDQo+ID4+Pj4+Pj4+ICtuYl9zZWdzX2lzX2lu dmFsaWQodW5zaWduZWQgaW50IG5iX3NlZ3MpIHsNCj4gPj4+Pj4+Pj4gK8KgwqDCoCB1aW50MTZf dCByaW5nX3NpemU7DQo+ID4+Pj4+Pj4+ICvCoMKgwqAgdWludDE2X3QgcXVldWVfaWQ7DQo+ID4+ Pj4+Pj4+ICvCoMKgwqAgdWludDE2X3QgcG9ydF9pZDsNCj4gPj4+Pj4+Pj4gK8KgwqDCoCBpbnQg cmV0Ow0KPiA+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+ICvCoMKgwqAgUlRFX0VUSF9GT1JFQUNIX0RF Vihwb3J0X2lkKSB7DQo+ID4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKHF1ZXVlX2lkID0g MDsgcXVldWVfaWQgPCBuYl90eHE7IHF1ZXVlX2lkKyspIHsNCj4gPj4+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0ID0gZ2V0X3R4X3Jpbmdfc2l6ZShwb3J0X2lkLCBxdWV1ZV9pZCwN Cj4gPj4+Pj4+Pj4gKyZyaW5nX3NpemUpOw0KPiA+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQpDQo+ID4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7DQo+ID4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJpbmdfc2l6ZSA8IG5iX3NlZ3MpIHsNCj4gPj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludGYoIm5iIHNlZ21lbnRzIHBl ciBUWCBwYWNrZXRzPSV1ID49ICINCj4gPj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICJUWCBxdWV1ZSgldSkgcmluZ19zaXplPSV1IC0gaWdub3Jl ZFxuIiwNCj4gPj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG5iX3NlZ3MsIHF1ZXVlX2lkLCByaW5nX3NpemUpOw0KPiA+Pj4+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOw0KPiA+Pj4+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+ID4+Pj4+ Pj4+ICvCoMKgwqAgfQ0KPiA+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+ICvCoMKgwqAgcmV0dXJuIGZh bHNlOw0KPiA+Pj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+ICAgwqAgdm9pZA0K PiA+Pj4+Pj4+PiAgIMKgIHNldF90eF9wa3Rfc2VnbWVudHModW5zaWduZWQgKnNlZ19sZW5ndGhz LCB1bnNpZ25lZCBuYl9zZWdzKQ0KPiA+Pj4+Pj4+PiB7DQo+ID4+Pj4+Pj4+ICAgwqDCoMKgwqDC oCB1aW50MTZfdCB0eF9wa3RfbGVuOw0KPiA+Pj4+Pj4+PiAgIMKgwqDCoMKgwqAgdW5zaWduZWQg aTsNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gLcKgwqDCoCBpZiAobmJfc2VncyA+PSAodW5zaWdu ZWQpIG5iX3R4ZCkgew0KPiA+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgcHJpbnRmKCJuYiBzZWdt ZW50cyBwZXIgVFggcGFja2V0cz0ldSA+PSBuYl90eGQ9JXUgLQ0KPiA+Pj4+Pj4+PiBpZ25vcmVk XG4iLA0KPiA+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuYl9zZWdzLCAo dW5zaWduZWQgaW50KSBuYl90eGQpOw0KPiA+Pj4+Pj4+PiArwqDCoMKgIGlmIChuYl9zZWdzX2lz X2ludmFsaWQobmJfc2VncykpDQo+ID4+Pj4+Pj4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy bjsNCj4gPj4+Pj4+Pj4gLcKgwqDCoCB9DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICAgwqDCoMKg wqDCoCAvKg0KPiA+Pj4+Pj4+PiAgIMKgwqDCoMKgwqDCoCAqIENoZWNrIHRoYXQgZWFjaCBzZWdt ZW50IGxlbmd0aCBpcyBncmVhdGVyIG9yIGVxdWFsIHRoYW4NCj4gPj4+Pj4+Pj4gLS0NCj4gPj4+ Pj4+Pj4gMi45LjUNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4NCj4g Pj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+DQo+ID4NCg0K