From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id BC56542C3E;
	Tue,  6 Jun 2023 10:27:06 +0200 (CEST)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 95CEA40ED6;
	Tue,  6 Jun 2023 10:27:06 +0200 (CEST)
Received: from frasgout.his.huawei.com (frasgout.his.huawei.com
 [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 8C18940A84
 for <dev@dpdk.org>; Tue,  6 Jun 2023 10:27:05 +0200 (CEST)
Received: from frapeml500007.china.huawei.com (unknown [172.18.147.200])
 by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4Qb3VJ35bgz6J73K;
 Tue,  6 Jun 2023 16:26:48 +0800 (CST)
Received: from frapeml500007.china.huawei.com (7.182.85.172) by
 frapeml500007.china.huawei.com (7.182.85.172) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2507.23; Tue, 6 Jun 2023 10:27:03 +0200
Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by
 frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.023;
 Tue, 6 Jun 2023 10:27:03 +0200
From: Konstantin Ananyev <konstantin.ananyev@huawei.com>
To: Feifei Wang <Feifei.Wang2@arm.com>,
 =?utf-8?B?0JrQvtC90YHRgtCw0L3RgtC40L0g0JDQvdCw0L3RjNC10LI=?=
 <konstantin.v.ananyev@yandex.ru>, Yuying Zhang <yuying.zhang@intel.com>,
 Beilei Xing <beilei.xing@intel.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, nd <nd@arm.com>, Honnappa Nagarahalli
 <Honnappa.Nagarahalli@arm.com>, Ruifeng Wang <Ruifeng.Wang@arm.com>, nd
 <nd@arm.com>, nd <nd@arm.com>
Subject: RE: [PATCH v6 2/4] net/i40e: implement mbufs recycle mode
Thread-Topic: [PATCH v6 2/4] net/i40e: implement mbufs recycle mode
Thread-Index: AQHZju3A3Kr3jcbS9UWgtqLBsiLUUq98HK8AgADuh4CAAGRwQP//6ksAgAAooyA=
Date: Tue, 6 Jun 2023 08:27:02 +0000
Message-ID: <83b9487385e04212847f7deea32efd82@huawei.com>
References: <20211224164613.32569-1-feifei.wang2@arm.com>
 <20230525094541.331338-1-feifei.wang2@arm.com>
 <20230525094541.331338-3-feifei.wang2@arm.com>
 <1580121685969644@mail.yandex.ru>
 <AS8PR08MB7718CC0E3296731322F0FFF2C852A@AS8PR08MB7718.eurprd08.prod.outlook.com>
 <be1562dc9282405dabe695bd06d49519@huawei.com>
 <AS8PR08MB7718A351559025BA7B9008A4C852A@AS8PR08MB7718.eurprd08.prod.outlook.com>
In-Reply-To: <AS8PR08MB7718A351559025BA7B9008A4C852A@AS8PR08MB7718.eurprd08.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.81.189.224]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-CFilter-Loop: Reflected
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

DQoNCj4gPiA+IERlZmluZSBzcGVjaWZpYyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgaTQw
ZSBkcml2ZXIuDQo+ID4gPiBDdXJyZW50bHksIG1idWZzIHJlY3ljbGUgbW9kZSBjYW4gc3VwcG9y
dCAxMjhiaXQgdmVjdG9yIHBhdGggYW5kIGF2eDINCj4gPiA+IHBhdGguIEFuZCBjYW4gYmUgZW5h
YmxlZCBib3RoIGluIGZhc3QgZnJlZSBhbmQgbm8gZmFzdCBmcmVlIG1vZGUuDQo+ID4gPg0KPiA+
ID4gU3VnZ2VzdGVkLWJ5OiBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiA+ID4gPG1haWx0bzpob25u
YXBwYS5uYWdhcmFoYWxsaUBhcm0uY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogRmVpZmVpIFdh
bmcgPG1haWx0bzpmZWlmZWkud2FuZzJAYXJtLmNvbT4NCj4gPiA+IFJldmlld2VkLWJ5OiBSdWlm
ZW5nIFdhbmcgPG1haWx0bzpydWlmZW5nLndhbmdAYXJtLmNvbT4NCj4gPiA+IFJldmlld2VkLWJ5
OiBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiA+ID4gPG1haWx0bzpob25uYXBwYS5uYWdhcmFoYWxs
aUBhcm0uY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRl
di5jIHwgMSArDQo+ID4gPiAgZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5oIHwgMiArDQo+
ID4gPiAgLi4uL25ldC9pNDBlL2k0MGVfcmVjeWNsZV9tYnVmc192ZWNfY29tbW9uLmMgfCAxNDAN
Cj4gPiArKysrKysrKysrKysrKysrKysNCj4gPiA+IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9yeHR4
LmMgfCAzMiArKysrICBkcml2ZXJzL25ldC9pNDBlL2k0MGVfcnh0eC5oIHwNCj4gPiA+IDQgKyAg
ZHJpdmVycy9uZXQvaTQwZS9tZXNvbi5idWlsZCB8IDIgKw0KPiA+ID4gIDYgZmlsZXMgY2hhbmdl
ZCwgMTgxIGluc2VydGlvbnMoKykNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9u
ZXQvaTQwZS9pNDBlX3JlY3ljbGVfbWJ1ZnNfdmVjX2NvbW1vbi5jDQo+ID4gPg0KPiA+ID4gZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYw0KPiA+ID4gYi9kcml2ZXJz
L25ldC9pNDBlL2k0MGVfZXRoZGV2LmMgaW5kZXggZjlkOGY5NzkxZi4uZDRlZWNkMTZjZiAxMDA2
NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYw0KPiA+ID4gKysr
IGIvZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jDQo+ID4gPiBAQCAtNDk2LDYgKzQ5Niw3
IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgaTQwZV9ldGhfZGV2X29wcyA9DQo+
ID4gew0KPiA+ID4gICAgICAgICAgLmZsb3dfb3BzX2dldCA9IGk0MGVfZGV2X2Zsb3dfb3BzX2dl
dCwNCj4gPiA+ICAgICAgICAgIC5yeHFfaW5mb19nZXQgPSBpNDBlX3J4cV9pbmZvX2dldCwNCj4g
PiA+ICAgICAgICAgIC50eHFfaW5mb19nZXQgPSBpNDBlX3R4cV9pbmZvX2dldCwNCj4gPiA+ICsg
LnJlY3ljbGVfcnhxX2luZm9fZ2V0ID0gaTQwZV9yZWN5Y2xlX3J4cV9pbmZvX2dldCwNCj4gPiA+
ICAgICAgICAgIC5yeF9idXJzdF9tb2RlX2dldCA9IGk0MGVfcnhfYnVyc3RfbW9kZV9nZXQsDQo+
ID4gPiAgICAgICAgICAudHhfYnVyc3RfbW9kZV9nZXQgPSBpNDBlX3R4X2J1cnN0X21vZGVfZ2V0
LA0KPiA+ID4gICAgICAgICAgLnRpbWVzeW5jX2VuYWJsZSA9IGk0MGVfdGltZXN5bmNfZW5hYmxl
LCBkaWZmIC0tZ2l0DQo+ID4gPiBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuaCBiL2Ry
aXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuaA0KPiA+ID4gaW5kZXggOWI4MDZkMTMwZS4uYjVi
MmQ2Y2YyYiAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYu
aA0KPiA+ID4gKysrIGIvZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5oDQo+ID4gPiBAQCAt
MTM1NSw2ICsxMzU1LDggQEAgdm9pZCBpNDBlX3J4cV9pbmZvX2dldChzdHJ1Y3QgcnRlX2V0aF9k
ZXYgKmRldiwNCj4gPiB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gPiA+ICAgICAgICAgIHN0cnVjdCBy
dGVfZXRoX3J4cV9pbmZvICpxaW5mbyk7ICB2b2lkDQo+ID4gPiBpNDBlX3R4cV9pbmZvX2dldChz
dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVldWVfaWQsDQo+ID4gPiAgICAgICAg
ICBzdHJ1Y3QgcnRlX2V0aF90eHFfaW5mbyAqcWluZm8pOw0KPiA+ID4gK3ZvaWQgaTQwZV9yZWN5
Y2xlX3J4cV9pbmZvX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QNCj4gPiA+
ICtxdWV1ZV9pZCwgIHN0cnVjdCBydGVfZXRoX3JlY3ljbGVfcnhxX2luZm8gKnJlY3ljbGVfcnhx
X2luZm8pOw0KPiA+ID4gIGludCBpNDBlX3J4X2J1cnN0X21vZGVfZ2V0KHN0cnVjdCBydGVfZXRo
X2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgcnRlX2V0aF9idXJzdF9tb2RlICptb2RlKTsgIGludA0KPiA+ID4gaTQw
ZV90eF9idXJzdF9tb2RlX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVl
dWVfaWQsDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaTQwZS9pNDBlX3JlY3ljbGVf
bWJ1ZnNfdmVjX2NvbW1vbi5jDQo+ID4gPiBiL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9yZWN5Y2xl
X21idWZzX3ZlY19jb21tb24uYw0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGlu
ZGV4IDAwMDAwMDAwMDAuLjA4ZDcwOGZkN2QNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsr
KyBiL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9yZWN5Y2xlX21idWZzX3ZlY19jb21tb24uYw0KPiA+
ID4gQEAgLTAsMCArMSwxNDAgQEANCj4gPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlDQo+ID4gPiArICogQ29weXJpZ2h0IChjKSAyMDIzIEFybSBMaW1pdGVkLg0K
PiA+ID4gKyAqLw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPiA+ICsj
aW5jbHVkZSA8ZXRoZGV2X2RyaXZlci5oPg0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlICJiYXNl
L2k0MGVfcHJvdG90eXBlLmgiDQo+ID4gPiArI2luY2x1ZGUgImJhc2UvaTQwZV90eXBlLmgiDQo+
ID4gPiArI2luY2x1ZGUgImk0MGVfZXRoZGV2LmgiDQo+ID4gPiArI2luY2x1ZGUgImk0MGVfcnh0
eC5oIg0KPiA+ID4gKw0KPiA+ID4gKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdj
YXN0LXF1YWwiDQo+ID4gPiArDQo+ID4gPiArdm9pZA0KPiA+ID4gK2k0MGVfcmVjeWNsZV9yeF9k
ZXNjcmlwdG9yc19yZWZpbGxfdmVjKHZvaWQgKnJ4X3F1ZXVlLCB1aW50MTZfdA0KPiA+ID4gK25i
X21idWZzKSB7ICBzdHJ1Y3QgaTQwZV9yeF9xdWV1ZSAqcnhxID0gcnhfcXVldWU7ICBzdHJ1Y3QN
Cj4gPiA+ICtpNDBlX3J4X2VudHJ5ICpyeGVwOyAgdm9sYXRpbGUgdW5pb24gaTQwZV9yeF9kZXNj
ICpyeGRwOyAgdWludDE2X3QNCj4gPiA+ICtyeF9pZDsgIHVpbnQ2NF90IHBhZGRyOyAgdWludDY0
X3QgZG1hX2FkZHI7ICB1aW50MTZfdCBpOw0KPiA+ID4gKw0KPiA+ID4gKyByeGRwID0gcnhxLT5y
eF9yaW5nICsgcnhxLT5yeHJlYXJtX3N0YXJ0OyByeGVwID0NCj4gPiA+ICsgJnJ4cS0+c3dfcmlu
Z1tyeHEtPnJ4cmVhcm1fc3RhcnRdOw0KPiA+ID4gKw0KPiA+ID4gKyBmb3IgKGkgPSAwOyBpIDwg
bmJfbWJ1ZnM7IGkrKykgew0KPiA+ID4gKyAvKiBJbml0aWFsaXplIHJ4ZHAgZGVzY3MuICovDQo+
ID4gPiArIHBhZGRyID0gKHJ4ZXBbaV0ubWJ1ZiktPmJ1Zl9pb3ZhICsgUlRFX1BLVE1CVUZfSEVB
RFJPT007DQo+ID4gZG1hX2FkZHIgPQ0KPiA+ID4gKyBydGVfY3B1X3RvX2xlXzY0KHBhZGRyKTsN
Cj4gPiA+ICsgLyogZmx1c2ggZGVzYyB3aXRoIHBhIGRtYV9hZGRyICovDQo+ID4gPiArIHJ4ZHBb
aV0ucmVhZC5oZHJfYWRkciA9IDA7DQo+ID4gPiArIHJ4ZHBbaV0ucmVhZC5wa3RfYWRkciA9IGRt
YV9hZGRyOw0KPiA+ID4gKyB9DQo+ID4gPiArDQo+ID4gPiArIC8qIFVwZGF0ZSB0aGUgZGVzY3Jp
cHRvciBpbml0aWFsaXplciBpbmRleCAqLw0KPiA+ID4gKyByeHEtPnJ4cmVhcm1fc3RhcnQgKz0g
bmJfbWJ1ZnM7DQo+ID4gPiArIHJ4X2lkID0gcnhxLT5yeHJlYXJtX3N0YXJ0IC0gMTsNCj4gPiA+
ICsNCj4gPiA+ICsgaWYgKHVubGlrZWx5KHJ4cS0+cnhyZWFybV9zdGFydCA+PSByeHEtPm5iX3J4
X2Rlc2MpKSB7DQo+ID4gPiArIHJ4cS0+cnhyZWFybV9zdGFydCA9IDA7DQo+ID4gPiArIHJ4X2lk
ID0gcnhxLT5uYl9yeF9kZXNjIC0gMTsNCj4gPiA+ICsgfQ0KPiA+ID4gKw0KPiA+ID4gKyByeHEt
PnJ4cmVhcm1fbmIgLT0gbmJfbWJ1ZnM7DQo+ID4gPiArDQo+ID4gPiArIHJ0ZV9pb193bWIoKTsN
Cj4gPiA+ICsgLyogVXBkYXRlIHRoZSB0YWlsIHBvaW50ZXIgb24gdGhlIE5JQyAqLw0KPiA+ID4g
K0k0MEVfUENJX1JFR19XUklURV9SRUxBWEVEKHJ4cS0+cXJ4X3RhaWwsIHJ4X2lkKTsgfQ0KPiA+
ID4gKw0KPiA+ID4gK3VpbnQxNl90DQo+ID4gPiAraTQwZV9yZWN5Y2xlX3R4X21idWZzX3JldXNl
X3ZlYyh2b2lkICp0eF9xdWV1ZSwgIHN0cnVjdA0KPiA+ID4gK3J0ZV9ldGhfcmVjeWNsZV9yeHFf
aW5mbyAqcmVjeWNsZV9yeHFfaW5mbykgeyAgc3RydWN0IGk0MGVfdHhfcXVldWUNCj4gPiA+ICsq
dHhxID0gdHhfcXVldWU7ICBzdHJ1Y3QgaTQwZV90eF9lbnRyeSAqdHhlcDsgIHN0cnVjdCBydGVf
bWJ1Zg0KPiA+ID4gKyoqcnhlcDsgIHN0cnVjdCBydGVfbWJ1ZiAqbVtSVEVfSTQwRV9UWF9NQVhf
RlJFRV9CVUZfU1pdOyAgaW50IGksIGosDQo+ID4gPiArbjsgIHVpbnQxNl90IGF2YWlsID0gMDsg
IHVpbnQxNl90IG1idWZfcmluZ19zaXplID0NCj4gPiA+ICtyZWN5Y2xlX3J4cV9pbmZvLT5tYnVm
X3Jpbmdfc2l6ZTsNCj4gPiA+ICsgdWludDE2X3QgbWFzayA9IHJlY3ljbGVfcnhxX2luZm8tPm1i
dWZfcmluZ19zaXplIC0gMTsgIHVpbnQxNl90DQo+ID4gPiArcmVmaWxsX3JlcXVpcmVtZW50ID0g
cmVjeWNsZV9yeHFfaW5mby0+cmVmaWxsX3JlcXVpcmVtZW50Ow0KPiA+ID4gKyB1aW50MTZfdCBy
ZWZpbGxfaGVhZCA9ICpyZWN5Y2xlX3J4cV9pbmZvLT5yZWZpbGxfaGVhZDsgIHVpbnQxNl90DQo+
ID4gPiArcmVjZWl2ZV90YWlsID0gKnJlY3ljbGVfcnhxX2luZm8tPnJlY2VpdmVfdGFpbDsNCj4g
PiA+ICsNCj4gPiA+ICsgLyogR2V0IGF2YWlsYWJsZSByZWN5Y2xpbmcgUnggYnVmZmVycy4gKi8g
YXZhaWwgPSAobWJ1Zl9yaW5nX3NpemUgLQ0KPiA+ID4gKyAocmVmaWxsX2hlYWQgLSByZWNlaXZl
X3RhaWwpKSAmIG1hc2s7DQo+ID4gPiArDQo+ID4gPiArIC8qIENoZWNrIFR4IGZyZWUgdGhyZXNo
IGFuZCBSeCBhdmFpbGFibGUgc3BhY2UuICovIGlmDQo+ID4gPiArICh0eHEtPm5iX3R4X2ZyZWUg
PiB0eHEtPnR4X2ZyZWVfdGhyZXNoIHx8IGF2YWlsIDw9DQo+ID4gPiArIHR4cS0+dHhfcnNfdGhy
ZXNoKSByZXR1cm4gMDsNCj4gPiA+ICsNCj4gPiA+ICsgLyogY2hlY2sgREQgYml0cyBvbiB0aHJl
c2hvbGQgZGVzY3JpcHRvciAqLyBpZg0KPiA+ID4gKyAoKHR4cS0+dHhfcmluZ1t0eHEtPnR4X25l
eHRfZGRdLmNtZF90eXBlX29mZnNldF9ic3ogJg0KPiA+ID4gKyBydGVfY3B1X3RvX2xlXzY0KEk0
MEVfVFhEX1FXMV9EVFlQRV9NQVNLKSkgIT0NCj4gPiA+ICsgcnRlX2NwdV90b19sZV82NChJNDBF
X1RYX0RFU0NfRFRZUEVfREVTQ19ET05FKSkNCj4gPiA+ICsgcmV0dXJuIDA7DQo+ID4gPiArDQo+
ID4gPiArIG4gPSB0eHEtPnR4X3JzX3RocmVzaDsNCj4gPiA+ICsNCj4gPiA+ICsgLyogTWJ1ZnMg
cmVjeWNsZSBtb2RlIGNhbiBvbmx5IHN1cHBvcnQgbm8gcmluZyBidWZmZXIgd3JhcHBpbmcgYXJv
dW5kLg0KPiA+ID4gKyAqIFR3byBjYXNlIGZvciB0aGlzOg0KPiA+ID4gKyAqDQo+ID4gPiArICog
Y2FzZSAxOiBUaGUgcmVmaWxsIGhlYWQgb2YgUnggYnVmZmVyIHJpbmcgbmVlZHMgdG8gYmUgYWxp
Z25lZCB3aXRoDQo+ID4gPiArICogbWJ1ZiByaW5nIHNpemUuIEluIHRoaXMgY2FzZSwgdGhlIG51
bWJlciBvZiBUeCBmcmVlaW5nIGJ1ZmZlcnMNCj4gPiA+ICsgKiBzaG91bGQgYmUgZXF1YWwgdG8g
cmVmaWxsX3JlcXVpcmVtZW50Lg0KPiA+ID4gKyAqDQo+ID4gPiArICogY2FzZSAyOiBUaGUgcmVm
aWxsIGhlYWQgb2YgUnggcmluZyBidWZmZXIgZG9lcyBub3QgbmVlZCB0byBiZQ0KPiA+ID4gKyBh
bGlnbmVkDQo+ID4gPiArICogd2l0aCBtYnVmIHJpbmcgc2l6ZS4gSW4gdGhpcyBjYXNlLCB0aGUg
dXBkYXRlIG9mIHJlZmlsbCBoZWFkIGNhbg0KPiA+ID4gKyBub3QNCj4gPiA+ICsgKiBleGNlZWQg
dGhlIFJ4IG1idWYgcmluZyBzaXplLg0KPiA+ID4gKyAqLw0KPiA+ID4gKyBpZiAocmVmaWxsX3Jl
cXVpcmVtZW50ICE9IG4gfHwNCj4gPiA+ICsgKCFyZWZpbGxfcmVxdWlyZW1lbnQgJiYgKHJlZmls
bF9oZWFkICsgbiA+IG1idWZfcmluZ19zaXplKSkpIHJldHVybg0KPiA+ID4gKyAwOw0KPiA+ID4g
Kw0KPiA+ID4gKyAvKiBGaXJzdCBidWZmZXIgdG8gZnJlZSBmcm9tIFMvVyByaW5nIGlzIGF0IGlu
ZGV4DQo+ID4gPiArICogdHhfbmV4dF9kZCAtICh0eF9yc190aHJlc2gtMSkuDQo+ID4gPiArICov
DQo+ID4gPiArIHR4ZXAgPSAmdHhxLT5zd19yaW5nW3R4cS0+dHhfbmV4dF9kZCAtIChuIC0gMSld
OyByeGVwID0NCj4gPiA+ICsgcmVjeWNsZV9yeHFfaW5mby0+bWJ1Zl9yaW5nOyByeGVwICs9IHJl
ZmlsbF9oZWFkOw0KPiA+ID4gKw0KPiA+ID4gKyBpZiAodHhxLT5vZmZsb2FkcyAmIFJURV9FVEhf
VFhfT0ZGTE9BRF9NQlVGX0ZBU1RfRlJFRSkgew0KPiA+ID4gKyAvKiBEaXJlY3RseSBwdXQgbWJ1
ZnMgZnJvbSBUeCB0byBSeC4gKi8gZm9yIChpID0gMDsgaSA8IG47IGkrKywNCj4gPiA+ICsgcnhl
cCsrLCB0eGVwKyspICpyeGVwID0gdHhlcFswXS5tYnVmOyB9IGVsc2UgeyBmb3IgKGkgPSAwLCBq
ID0gMDsgaQ0KPiA+ID4gKyA8IG47IGkrKykgew0KPiA+ID4gKyAvKiBBdm9pZCB0eHEgY29udGFp
bnMgYnVmZmVycyBmcm9tIGV4cGVjdGVkIG1lbXBvb2wuICovIGlmDQo+ID4gPiArICh1bmxpa2Vs
eShyZWN5Y2xlX3J4cV9pbmZvLT5tcCAhPSB0eGVwW2ldLm1idWYtPnBvb2wpKSByZXR1cm4gMDsN
Cj4gPiA+IEkgZG9uJ3QgdGhpbmsgdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBzaW1wbHkgcmV0dXJu
IDAgaGVyZToNCj4gPiA+IHdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBzb21lIG1idWZzIGluc2lkZSBy
eGVwW10sIHNvIHdlIHByb2JhYmx5IG5lZWQgdG8NCj4gPiA+IHJldHVybiB0aGF0IG51bWJlciAo
aikuDQo+ID4gPg0KPiA+ID4gTm8sIGhlcmUgaXMganVzdCBwcmUtZnJlZSwgbm90IGFjdHVhbGx5
IHB1dCBtYnVmcyBpbnRvIHJ4ZXEuDQo+ID4NCj4gPiBJIHVuZGVyc3RhbmQgdGhhdC4NCj4gPiBX
aGF0IEkgYW0gc2F5aW5nOiBhZnRlciB5b3UgY2FsbCBwa3RtYnVmX3ByZWZyZWVfc2VnKG1idWYp
LCB5b3UgY2Fu4oCZdCBrZWVwIGl0DQo+ID4gaW4gdGhlIHR4cSBhbnltb3JlLg0KPiA+IFlvdSBo
YXZlIGVpdGhlciB0byBwdXQgaXQgaW50byByeGVwW10sIG9yIGJhY2sgaW50byBtZW1wb29sLg0K
PiA+IEFsc28gdHhxIHN0YXRlIChuYl90eF9mcmVlLCBldGMuKSBuZWVkIHRvIGJlIHVwZGF0ZWQu
DQo+ID4NCj4gPiA+IEFmdGVyIHJ1biBvdXQgb2YgdGhlIGxvb3AsIHdlIGNhbGwgcnRlX21lbWNw
eSB0byBhY3R1YWxseSBjb3B5IG1idWZzDQo+ID4gPiBpbnRvIHJ4ZXAuDQo+ID4gPiArDQo+ID4g
PiArIG1bal0gPSBydGVfcGt0bWJ1Zl9wcmVmcmVlX3NlZyh0eGVwW2ldLm1idWYpOw0KPiA+ID4g
Kw0KPiA+ID4gKyAvKiBJbiBjYXNlIDEsIGVhY2ggb2YgVHggYnVmZmVycyBzaG91bGQgYmUgdGhl
DQo+ID4gPiArICogbGFzdCByZWZlcmVuY2UuDQo+ID4gPiArICovDQo+ID4gPiArIGlmICh1bmxp
a2VseShtW2pdID09IE5VTEwgJiYgcmVmaWxsX3JlcXVpcmVtZW50KSkgcmV0dXJuIDA7DQo+ID4g
Pg0KPiA+ID4gc2FtZSBoZXJlLCB3ZSBjYW4ndCBzaW1wbHkgcmV0dXJuIDAsIGl0IHdpbGwgaW50
cm9kdWNlIG1idWYgbGVha2FnZS4NCj4gPiA+ICsgLyogSW4gY2FzZSAyLCB0aGUgbnVtYmVyIG9m
IHZhbGlkIFR4IGZyZWUNCj4gPiA+ICsgKiBidWZmZXJzIHNob3VsZCBiZSByZWNvcmRlZC4NCj4g
PiA+ICsgKi8NCj4gPiA+ICsgaisrOw0KPiA+ID4gKyB9DQo+ID4gPiArIHJ0ZV9tZW1jcHkocnhl
cCwgbSwgc2l6ZW9mKHZvaWQgKikgKiBqKTsNCj4gPiA+IFdvbmRlciB3aHkgZG8geW91IG5lZWQg
aW50ZXJtZWRpYXRlIGJ1ZmZlciBmb3IgcmVsZWFzZWQgbWJ1ZnM/DQo+ID4gPiBXaHkgY2FuJ3Qg
anVzdDoNCj4gPiA+IC4uLg0KPiA+ID4gbSA9IHJ0ZV9wa3RtYnVmX3ByZWZyZWVfc2VnKHR4ZXBb
aV0ubWJ1Zik7DQo+ID4gPiAuLi4NCj4gPiA+IHJ4ZXBbaisrXSA9IG07DQo+ID4gPiA/DQo+ID4g
PiBNaWdodCBzYXZlIHlvdSBmZXcgZXh0cmEgY3ljbGVzLg0KPiA+ID4gU29tZXRpbWVzIOKAmHJ0
ZV9wa3RtYnVmX3ByZWZyZWVfc2Vn4oCZIGNhbiByZXR1cm4gTlVMTCBkdWUgdG8NCj4gPiA+IG1i
dWYtPnJlZmNudCA+IDEuIFNvIHdlIHNob3VsZCBmaXJzdGx5IGVuc3VyZSBhbGwg4oCYbeKAmSBh
cmUgdmFsaWQgYW5kDQo+ID4gPiB0aGVuIGNvcHkgdGhlbSBpbnRvIHJ4ZXAuDQo+ID4NCj4gPiBJ
IHVuZGVyc3RhbmQgdGhhdCwgYnV0IHlvdSBjYW4gY2hlY2sgaXMgaXQgTlVMTCBvciBub3QuDQo+
IEZvciBpNDBlIHJ4cSwgaXQgbXVzdCByZWFybSAnIFJURV9JNDBFX1JYUV9SRUFSTV9USFJFU0gg
JyBwa3RzIG9uY2UgYSB0aW1lDQo+IGJhc2VkIG9uIGl0cyByaW5nIHdyYXBwaW5nIG1lY2hhbmlz
bS4NCj4gDQo+IEZvciBpNDBlIHR4cSwgaXQgbXVzdCBmcmVlICcgdHhxLT50eF9yc190aHJlc2gn
IHBrdHMgb25jZSBhIHRpbWUuDQo+IA0KPiBTbyB3ZSBuZWVkIGZpcnN0bHkgZW5zdXJlIGFsbCB0
eCBmcmVlIG1idWZzIGFyZSB2YWxpZCwgYW5kIHRoZW4gY29weSB0aGVzZSBpbnRvIHJ4cS4NCj4g
SWYgbm90IGVub3VnaCB2YWxpZCBtYnVmcywgaXQgd2lsbCBicmVhayByeHEncyByaW5nIHdyYXBw
aW5nIG1lY2hhbmlzbS4NCiANCkkgdGhpbmsgeW91IGNhbiBzdGlsbCBjb3B5IG1idWZzIGludG8g
cnhlcFtdLCBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBtYnVmcywNCnlvdSBjYW4gc3RpbGwgcmV0
dXJuIDAgKG9yIHdoYXRldmVyIGlzIGEgcHJvcGVyIHZhbHVlIGhlcmUpLCBhbmQgdGhhdCB3b3Vs
ZCBtZWFuDQphbGwgdGhlc2UgbmV3IHJ4ZXBbXSBlbnRyaWVzIHdpbGwgYmUgY29uc2lkZXJlZCBh
cyBpbnZhbGlkLg0KQW55d2F5IHRoYXQncyBqdXN0IGEgc3VnZ2VzdGlvbiB0byBhdm9pZCBleHRy
YSBjb3B5Lg0KDQo+IA0KPiA+DQo+ID4gPiArIH0NCj4gPiA+ICsNCj4gPiA+ICsgLyogVXBkYXRl
IGNvdW50ZXJzIGZvciBUeC4gKi8NCj4gPiA+ICsgdHhxLT5uYl90eF9mcmVlID0gKHVpbnQxNl90
KSh0eHEtPm5iX3R4X2ZyZWUgKyB0eHEtPnR4X3JzX3RocmVzaCk7DQo+ID4gPiArIHR4cS0+dHhf
bmV4dF9kZCA9ICh1aW50MTZfdCkodHhxLT50eF9uZXh0X2RkICsgdHhxLT50eF9yc190aHJlc2gp
Ow0KPiA+ID4gKyBpZiAodHhxLT50eF9uZXh0X2RkID49IHR4cS0+bmJfdHhfZGVzYykNCj4gPiA+
ICsgdHhxLT50eF9uZXh0X2RkID0gKHVpbnQxNl90KSh0eHEtPnR4X3JzX3RocmVzaCAtIDEpOw0K
PiA+ID4gKw0KPiA+ID4gKyByZXR1cm4gbjsNCj4gPiA+ICt9DQo=