From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Ashwin.Sekhar@cavium.com>
Received: from NAM03-BY2-obe.outbound.protection.outlook.com
 (mail-by2nam03on0068.outbound.protection.outlook.com [104.47.42.68])
 by dpdk.org (Postfix) with ESMTP id CEB54282
 for <dev@dpdk.org>; Wed, 10 May 2017 17:00:26 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version;
 bh=+QvlPTRWqw6LwYMvl4avaYDnhQTH/ythQpO4XVwM1Ok=;
 b=R0oriUJ8aTUUFB0ZcYA7IRIvMuZMUy9wEQaTbWSXI3EHcTD7r4M3SUcBuuRnGLxAkJPY2kizdDtr1uFN7pRpSYgHLP3jjNiH7LB3hakwXFafU0TcXuUJ1U+AriMVEHBsbekUEm3X3jiC0HqCeHY0gmOsHIUeFI+r9LSAK7tE8VA=
Received: from BY2PR07MB2421.namprd07.prod.outlook.com (10.166.115.13) by
 BLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id
 15.1.1075.11; Wed, 10 May 2017 15:00:22 +0000
Received: from BY2PR07MB2421.namprd07.prod.outlook.com ([10.166.115.13]) by
 BY2PR07MB2421.namprd07.prod.outlook.com ([10.166.115.13]) with mapi id
 15.01.1084.017; Wed, 10 May 2017 15:00:19 +0000
From: "Sekhar, Ashwin" <Ashwin.Sekhar@cavium.com>
To: "tomasz.kantecki@intel.com" <tomasz.kantecki@intel.com>, "Jacob,  Jerin"
 <Jerin.JacobKollanukkaran@cavium.com>, "jianbo.liu@linaro.org"
 <jianbo.liu@linaro.org>, "dev@dpdk.org" <dev@dpdk.org>
Thread-Topic: [PATCH v2 5/7] examples/l3fwd: add neon support for l3fwd
Thread-Index: AQHSyTVuz3rRuXwAsEq5JDs4Y1JJAqHtqdqA
Date: Wed, 10 May 2017 15:00:19 +0000
Message-ID: <1494428417.2713.55.camel@caviumnetworks.com>
References: <1493709255-8887-1-git-send-email-jianbo.liu@linaro.org>
 <1494383419-9677-1-git-send-email-jianbo.liu@linaro.org>
 <1494383419-9677-6-git-send-email-jianbo.liu@linaro.org>
In-Reply-To: <1494383419-9677-6-git-send-email-jianbo.liu@linaro.org>
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=cavium.com;
x-originating-ip: [111.93.218.67]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BLUPR0701MB1716;
 7:YG+vxCY9xdbpeLq/QFJ12KyK1k1wzj3SmkJkT8Xxxd3LpVzxPrRE2N/z0GdlIaTOkbAZEaRl8mUNwB2ZbgGAnGdvTDDFjba993RU11os6APjFOgptWGaQAoIEWj4uxxT3lmL6pAmUGMkJ6CQCo5ERaI0icqLxwI4UWqWFLA0/qp01nOeGGUtQ3QcJXdzyHrogvUtTMBUcUzjj3OB/N45uN8Et8TCONsyMaZWCyL85+2ohT1gnMmzb99p5kuph7qjXvWGKQrGIi0G40V57uo4eHyaco7B+E0FIQE7DBOj0fvmH2hX+AaOvcZdvWWG4eVjmmJbIB5GwgTunCHLm3HjHg==
x-forefront-antispam-report: SFV:SKI; SCL:-1SFV:NSPM;
 SFS:(10009020)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(39850400002)(24454002)(377424004)(122556002)(6436002)(6246003)(478600001)(38730400002)(2201001)(189998001)(2501003)(72206003)(86362001)(575784001)(25786009)(6512007)(9686003)(36756003)(99286003)(6306002)(305945005)(53936002)(3280700002)(2906002)(8676002)(3846002)(102836003)(6116002)(103116003)(54356999)(76176999)(3660700001)(50986999)(6486002)(77096006)(2900100001)(66066001)(33646002)(8936002)(81166006)(5660300001)(229853002)(6506006)(2950100002)(32563001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1716;
 H:BY2PR07MB2421.namprd07.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
x-ms-office365-filtering-correlation-id: 1573783b-df8b-48dd-4cb2-08d497b54679
x-microsoft-antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(22001)(2017030254075)(201703131423075)(201703031133081)(201702281549075);
 SRVR:BLUPR0701MB1716; 
x-microsoft-antispam-prvs: <BLUPR0701MB17163BBCA19347E8ACDFC21192EC0@BLUPR0701MB1716.namprd07.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(166708455590820)(192278398808882);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0;
 RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148);
 SRVR:BLUPR0701MB1716; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1716; 
x-forefront-prvs: 03030B9493
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: text/plain; charset="utf-8"
Content-ID: <BF9A1AEF57C0494F9AC1E1312CC4535A@namprd07.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: cavium.com
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 May 2017 15:00:19.2218 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1716
Subject: Re: [dpdk-dev] [PATCH v2 5/7] examples/l3fwd: add neon support for
	l3fwd
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 10 May 2017 15:00:28 -0000

SGkgSmlhbmJvLA0KDQpUaGFua3MgZm9yIHZlcnNpb24gdjIuIEFkZGl0aW9uIG9mIHRoZSBwcmVm
ZXRjaCBpbnN0cnVjdGlvbnMgaXMNCmRlZmluaXRlbHkgaGVscGluZyBwZXJmb3JtYW5jZSBvbiBU
aHVuZGVyWC4gQnV0IHN0aWxsIHBlcmZvcm1hbmNlIGlzDQpzbGlnaHRseSBsZXNzIHRoYW4gdGhh
dCBvZiBzY2FsYXIuDQoNCkkgdHJpZWQgZmV3IHNtYWxsIHR3ZWFrcyB3aGljaCBoZWxwZWQgaW1w
cm92ZSBwZXJmb3JtYW5jZSBvbiBteQ0KVGh1bmRlcnggc2V0dXAuIEZvciBkZXRhaWxzIHNlZSBj
b21tZW50cyBpbmxpbmUuDQoNCg0KT24gV2VkLCAyMDE3LTA1LTEwIGF0IDEwOjMwICswODAwLCBK
aWFuYm8gTGl1IHdyb3RlOg0KPiBVc2UgQVJNIE5FT04gaW50cmluc2ljcyB0byBhY2NlbGVyYXRl
IGwzIGZvd2FyZGluZy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEppYW5ibyBMaXUgPGppYW5iby5s
aXVAbGluYXJvLm9yZz4NCj4gLS0tDQo+IMKgZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW0uY8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA0ICstDQo+IMKgZXhhbXBsZXMvbDNmd2QvbDNmd2Rf
ZW1faGxtLmjCoMKgwqDCoMKgwqDCoMKgfMKgwqAxOSArKy0NCj4gwqBleGFtcGxlcy9sM2Z3ZC9s
M2Z3ZF9lbV9obG1fbmVvbi5owqDCoMKgfMKgwqA3NCArKysrKysrKysrDQo+IMKgZXhhbXBsZXMv
bDNmd2QvbDNmd2RfZW1fc2VxdWVudGlhbC5oIHzCoMKgMjAgKystDQo+IMKgZXhhbXBsZXMvbDNm
d2QvbDNmd2RfbHBtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDQgKy0NCj4gwqBleGFt
cGxlcy9sM2Z3ZC9sM2Z3ZF9scG1fbmVvbi5owqDCoMKgwqDCoMKgfCAxNjUgKysrKysrKysrKysr
KysrKysrKysrKw0KPiDCoGV4YW1wbGVzL2wzZndkL2wzZndkX25lb24uaMKgwqDCoMKgwqDCoMKg
wqDCoMKgfCAyNTkNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gwqA3
IGZpbGVzIGNoYW5nZWQsIDUzOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQ0KPiDCoGNy
ZWF0ZSBtb2RlIDEwMDY0NCBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9obG1fbmVvbi5oDQo+IMKg
Y3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL2wzZndkL2wzZndkX2xwbV9uZW9uLmgNCj4gwqBj
cmVhdGUgbW9kZSAxMDA2NDQgZXhhbXBsZXMvbDNmd2QvbDNmd2RfbmVvbi5oDQo+IA0KPiBbLi4u
XQ0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW1faGxtLmgNCj4gYi9leGFt
cGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9obG0uaA0KPiBpbmRleCA2MzZkZWE0Li40ZWM2MDBhIDEwMDY0
NA0KPiAtLS0gYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9obG0uaA0KPiArKysgYi9leGFtcGxl
cy9sM2Z3ZC9sM2Z3ZF9lbV9obG0uaA0KPiBAQCAtMzUsOCArMzUsMTMgQEANCj4gwqAjaWZuZGVm
IF9fTDNGV0RfRU1fSExNX0hfXw0KPiDCoCNkZWZpbmUgX19MM0ZXRF9FTV9ITE1fSF9fDQo+IMKg
DQo+ICsjaWYgZGVmaW5lZChfX1NTRTRfMV9fKQ0KPiDCoCNpbmNsdWRlICJsM2Z3ZF9zc2UuaCIN
Cj4gwqAjaW5jbHVkZSAibDNmd2RfZW1faGxtX3NzZS5oIg0KPiArI2VsaWYgZGVmaW5lZChSVEVf
TUFDSElORV9DUFVGTEFHX05FT04pDQo+ICsjaW5jbHVkZSAibDNmd2RfbmVvbi5oIg0KPiArI2lu
Y2x1ZGUgImwzZndkX2VtX2hsbV9uZW9uLmgiDQo+ICsjZW5kaWYNCj4gwqANCj4gwqBzdGF0aWMg
aW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB2b2lkDQo+IMKgZW1fZ2V0X2Rz
dF9wb3J0X2lwdjR4OChzdHJ1Y3QgbGNvcmVfY29uZiAqcWNvbmYsIHN0cnVjdCBydGVfbWJ1Zg0K
PiAqbVs4XSwNCj4gQEAgLTIzOCw3ICsyNDMsNyBAQCBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl
X18oKGFsd2F5c19pbmxpbmUpKQ0KPiB1aW50MTZfdA0KPiDCoGwzZndkX2VtX3NlbmRfcGFja2V0
cyhpbnQgbmJfcngsIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHNfYnVyc3QsDQo+IMKgCQl1aW50OF90
IHBvcnRpZCwgc3RydWN0IGxjb3JlX2NvbmYgKnFjb25mKQ0KPiDCoHsNCj4gLQlpbnQzMl90IGo7
DQo+ICsJaW50MzJfdCBpLCBqLCBwb3M7DQo+IMKgCXVpbnQxNl90IGRzdF9wb3J0W01BWF9QS1Rf
QlVSU1RdOw0KPiDCoA0KPiDCoAkvKg0KPiBAQCAtMjQ3LDYgKzI1MiwxMiBAQCBzdGF0aWMgaW5s
aW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQ0KPiB1aW50MTZfdA0KPiDCoAnCoCov
DQo+IMKgCWludDMyX3QgbiA9IFJURV9BTElHTl9GTE9PUihuYl9yeCwgOCk7DQo+IMKgDQo+ICsJ
Zm9yIChqID0gMDsgaiA8IDggJiYgaiA8IG5iX3J4OyBqKyspIHsNCj4gKwkJcnRlX3ByZWZldGNo
MChwa3RzX2J1cnN0W2pdKTsNClRoZSBhYm92ZSBwcmVmZXRjaCBvZiBydGVfbWJ1ZiBzdHJ1Y3Qg
aXMgdW5uZWNlc3NhcnkuIFdpdGggdGhpcyB3ZSB3b250DQpzZWUgYW55IHBlcmZvcm1hbmNlIGlt
cHJvdmVtZW50IGFzIHRoZSBjb250ZW50cyBvZiBydGVfbWJ1ZiAoYnVmX2FkZHINCmFuZCBkYXRh
X29mZikgaXMgdXNlZCBpbiByaWdodCBuZXh0IGluc3RydWN0aW9uLiBSZW1vdmluZyB0aGUgYWJv
dmUNCnByZWZldGNoIGFuZCBzaW1pbGFyIHByZWZldGNoZXMgYXQgbXVsdGlwbGUgcGxhY2VzIHdh
cyBpbXByb3ZpbmcNCnBlcmZvcm1hbmNlIG9uIG15IFRodW5kZXJYIHNldHVwLg0KDQo+ICsJCXJ0
ZV9wcmVmZXRjaDAocnRlX3BrdG1idWZfbXRvZChwa3RzX2J1cnN0W2pdLA0KPiArCQkJCQnCoMKg
wqDCoMKgwqDCoHN0cnVjdCBldGhlcl9oZHIgKikgKyANCj4gMSk7DQpCZXR0ZXIgdG8gcHJlZmV0
Y2ggYXQgZXRoX2hkciBpdHNlbGYgYW5kIG5vdCBhdCBldGhfaGRyICsgMS4gSW4NCnByb2Nlc3Nf
cGFja2V0IGluwqBsM2Z3ZF9uZW9uLmgsIGV0aF9oZWFkZXIgaXMgYWNjZXNzZWQuDQoNCj4gKwl9
DQo+ICsNCj4gwqAJZm9yIChqID0gMDsgaiA8IG47IGogKz0gOCkgew0KPiDCoA0KPiDCoAkJdWlu
dDMyX3QgcGt0X3R5cGUgPQ0KPiBAQCAtMjYzLDYgKzI3NCwxMiBAQCBzdGF0aWMgaW5saW5lIF9f
YXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQ0KPiB1aW50MTZfdA0KPiDCoAkJdWludDMyX3Qg
dGNwX29yX3VkcCA9IHBrdF90eXBlICYNCj4gwqAJCQkoUlRFX1BUWVBFX0w0X1RDUCB8IFJURV9Q
VFlQRV9MNF9VRFApOw0KPiDCoA0KPiArCQlmb3IgKGkgPSAwLCBwb3MgPSBqICsgODsgaSA8IDgg
JiYgcG9zIDwgbmJfcng7IGkrKywgDQo+IHBvcysrKSB7DQo+ICsJCQlydGVfcHJlZmV0Y2gwKHBr
dHNfYnVyc3RbcG9zXSk7DQpUaGUgYWJvdmUgcHJlZmV0Y2ggb2YgcnRlX21idWYgc3RydWN0IGlz
IHVubmVjZXNzYXJ5Lg0KDQo+ICsJCQlydGVfcHJlZmV0Y2gwKHJ0ZV9wa3RtYnVmX210b2QocGt0
c19idXJzdFtwbw0KPiBzXSwNCj4gKwkJCQkJCcKgwqDCoMKgwqDCoMKgc3RydWN0DQo+IGV0aGVy
X2hkciAqKSArIDEpOw0KQmV0dGVyIHRvIHByZWZldGNoIGF0IGV0aF9oZHIgaXRzZWxmIGFuZCBu
b3QgYXQgZXRoX2hkciArIDENCg0KPiArCQl9DQo+ICsNCj4gwqAJCWlmICh0Y3Bfb3JfdWRwICYm
IChsM190eXBlID09IFJURV9QVFlQRV9MM19JUFY0KSkgew0KPiDCoA0KPiDCoAkJCWVtX2dldF9k
c3RfcG9ydF9pcHY0eDgocWNvbmYsDQo+ICZwa3RzX2J1cnN0W2pdLCBwb3J0aWQsDQo+IA0KPiBb
Li4uXQ0KDQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9zZXF1ZW50aWFs
LmgNCj4gYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9zZXF1ZW50aWFsLmgNCj4gaW5kZXggYzBh
OTcyNS4uYzNkZjQ3MyAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW1fc2Vx
dWVudGlhbC5oDQo+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2VtX3NlcXVlbnRpYWwuaA0K
PiBAQCAtNDMsNyArNDMsMTEgQEANCj4gwqAgKiBjb21waWxhdGlvbiB0aW1lLg0KPiDCoCAqLw0K
PiDCoA0KPiArI2lmIGRlZmluZWQoX19TU0U0XzFfXykNCj4gwqAjaW5jbHVkZSAibDNmd2Rfc3Nl
LmgiDQo+ICsjZWxpZiBkZWZpbmVkKFJURV9NQUNISU5FX0NQVUZMQUdfTkVPTikNCj4gKyNpbmNs
dWRlICJsM2Z3ZF9uZW9uLmgiDQo+ICsjZW5kaWYNCj4gwqANCj4gwqBzdGF0aWMgaW5saW5lIF9f
YXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB1aW50MTZfdA0KPiDCoGVtX2dldF9kc3RfcG9y
dChjb25zdCBzdHJ1Y3QgbGNvcmVfY29uZiAqcWNvbmYsIHN0cnVjdCBydGVfbWJ1Zg0KPiAqcGt0
LA0KPiBAQCAtMTAxLDExICsxMDUsMjMgQEAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChh
bHdheXNfaW5saW5lKSkNCj4gdWludDE2X3QNCj4gwqBsM2Z3ZF9lbV9zZW5kX3BhY2tldHMoaW50
IG5iX3J4LCBzdHJ1Y3QgcnRlX21idWYgKipwa3RzX2J1cnN0LA0KPiDCoAkJCXVpbnQ4X3QgcG9y
dGlkLCBzdHJ1Y3QgbGNvcmVfY29uZiAqcWNvbmYpDQo+IMKgew0KPiAtCWludDMyX3QgajsNCj4g
KwlpbnQzMl90IGksIGo7DQo+IMKgCXVpbnQxNl90IGRzdF9wb3J0W01BWF9QS1RfQlVSU1RdOw0K
PiDCoA0KPiAtCWZvciAoaiA9IDA7IGogPCBuYl9yeDsgaisrKQ0KPiArCWlmIChuYl9yeCA+IDAp
IHsNCj4gKwkJcnRlX3ByZWZldGNoMChwa3RzX2J1cnN0WzBdKTsNClRoZSBhYm92ZSBwcmVmZXRj
aCBvZiBydGVfbWJ1ZiBzdHJ1Y3QgaXMgdW5uZWNlc3NhcnkuDQoNCj4gKwkJcnRlX3ByZWZldGNo
MChydGVfcGt0bWJ1Zl9tdG9kKHBrdHNfYnVyc3RbMF0sDQo+ICsJCQkJCcKgwqDCoMKgwqDCoMKg
c3RydWN0IGV0aGVyX2hkciAqKSArDQo+IDEpOw0KQmV0dGVyIHRvIHByZWZldGNoIGF0IGV0aF9o
ZHIgaXRzZWxmIGFuZCBub3QgYXQgZXRoX2hkciArIDENCg0KPiArCX0NCj4gKw0KPiArCWZvciAo
aSA9IDEsIGogPSAwOyBqIDwgbmJfcng7IGkrKywgaisrKSB7DQo+ICsJCWlmIChpIDwgbmJfcngp
IHsNCj4gKwkJCXJ0ZV9wcmVmZXRjaDAocGt0c19idXJzdFtpXSk7DQpUaGUgYWJvdmUgcHJlZmV0
Y2ggb2YgcnRlX21idWYgc3RydWN0IGlzIHVubmVjZXNzYXJ5Lg0KDQo+ICsJCQlydGVfcHJlZmV0
Y2gwKHJ0ZV9wa3RtYnVmX210b2QocGt0c19idXJzdFtpXQ0KPiAsDQo+ICsJCQkJCQnCoMKgwqDC
oMKgwqDCoHN0cnVjdA0KPiBldGhlcl9oZHIgKikgKyAxKTsNCkJldHRlciB0byBwcmVmZXRjaCBh
dCBldGhfaGRyIGl0c2VsZiBhbmQgbm90IGF0IGV0aF9oZHIgKyAxDQoNCj4gKwkJfQ0KPiDCoAkJ
ZHN0X3BvcnRbal0gPSBlbV9nZXRfZHN0X3BvcnQocWNvbmYsIHBrdHNfYnVyc3Rbal0sDQo+IHBv
cnRpZCk7DQo+ICsJfQ0KPiDCoA0KPiDCoAlzZW5kX3BhY2tldHNfbXVsdGkocWNvbmYsIHBrdHNf
YnVyc3QsIGRzdF9wb3J0LCBuYl9yeCk7DQo+IMKgfQ0KPiBbLi4uXQ0KDQo+IGRpZmYgLS1naXQg
YS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9scG1fbmVvbi5oDQo+IGIvZXhhbXBsZXMvbDNmd2QvbDNm
d2RfbHBtX25lb24uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi4y
ZjA0N2IzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbHBt
X25lb24uaA0KPiANCj4gWy4uLl0NCg0KPiArLyoNCj4gKyAqIEJ1ZmZlciBvcHRpbWl6ZWQgaGFu
ZGxpbmcgb2YgcGFja2V0cywgaW52b2tlZA0KPiArICogZnJvbSBtYWluX2xvb3AuDQo+ICsgKi8N
Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiArbDNmd2RfbHBtX3NlbmRfcGFja2V0cyhpbnQgbmJf
cngsIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHNfYnVyc3QsDQo+ICsJCQl1aW50OF90IHBvcnRpZCwg
c3RydWN0IGxjb3JlX2NvbmYgKnFjb25mKQ0KPiArew0KPiArCWludDMyX3QgaSwgaiwgcG9zOw0K
PiArCXVpbnQxNl90IGRzdF9wb3J0W01BWF9QS1RfQlVSU1RdOw0KPiArCWludDMyeDRfdCBkaXBb
TUFYX1BLVF9CVVJTVCAvIEZXRFNURVBdOw0KSWYgeW91IHNlZSBjYXJlZnVsbHksIHdlIGRvbnQg
bmVlZCBhbiBhcnJheSBvZiBkaXAuIFdlIGp1c3QgbmVlZCBhDQpzaW5nbGUgZWxlbWVudC4gZGlw
IHZhbHVlIGlzIGNhbGN1bGF0ZWQgaW7CoHByb2Nlc3N4NF9zdGVwMSBhbmQgY29uc3VtZWQNCmlu
wqBwcm9jZXNzeDRfc3RlcDIsIGFuZCB0aGF0cyBpdC4gTm8gbmVlZCB0byBzYXZlIGl0IGluIGFu
IGFycmF5Lg0KDQo+ICsJdWludDMyX3QgaXB2NF9mbGFnW01BWF9QS1RfQlVSU1QgLyBGV0RTVEVQ
XTsNClNhbWUgYXMgZGlwLiBXZSBkb250IG5lZWQgYW4gYXJyYXkgb2YgaXB2NF9mbGFnLg0KDQo+
ICsJY29uc3QgaW50MzJfdCBrID0gUlRFX0FMSUdOX0ZMT09SKG5iX3J4LCBGV0RTVEVQKTsNCj4g
Kw0KPiArCWZvciAoaiA9IDA7IGogPCBGV0RTVEVQICYmIGogPCBuYl9yeDsgaisrKSB7DQo+ICsJ
CXJ0ZV9wcmVmZXRjaDAocGt0c19idXJzdFtqXSk7DQpUaGUgYWJvdmUgcHJlZmV0Y2ggb2YgcnRl
X21idWYgc3RydWN0IGlzIHVubmVjZXNzYXJ5Lg0KDQo+ICsJCXJ0ZV9wcmVmZXRjaDAocnRlX3Br
dG1idWZfbXRvZChwa3RzX2J1cnN0W2pdLA0KPiArCQkJCQnCoMKgwqDCoMKgwqDCoHN0cnVjdCBl
dGhlcl9oZHIgKikgKw0KPiAxKTsNCkJldHRlciB0byBwcmVmZXRjaCBhdCBldGhfaGRyIGl0c2Vs
ZiBhbmQgbm90IGF0IGV0aF9oZHIgKyAxDQoNCj4gKwl9DQo+ICsNCj4gKwlmb3IgKGogPSAwOyBq
ICE9IGs7IGogKz0gRldEU1RFUCkgew0KPiArCQlmb3IgKGkgPSAwLCBwb3MgPSBqICsgRldEU1RF
UDsgaSA8IEZXRFNURVAgJiYgcG9zIDwNCj4gbmJfcng7DQo+ICsJCcKgwqDCoMKgwqBpKyssIHBv
cysrKSB7DQo+ICsJCQlydGVfcHJlZmV0Y2gwKHBrdHNfYnVyc3RbcG9zXSk7DQpUaGUgYWJvdmUg
cHJlZmV0Y2ggb2YgcnRlX21idWYgc3RydWN0IGlzIHVubmVjZXNzYXJ5Lg0KDQo+ICsJCQlydGVf
cHJlZmV0Y2gwKHJ0ZV9wa3RtYnVmX210b2QocGt0c19idXJzdFtwbw0KPiBzXSwNCj4gKwkJCQkJ
CcKgwqDCoMKgwqDCoMKgc3RydWN0DQo+IGV0aGVyX2hkciAqKSArIDEpOw0KQmV0dGVyIHRvIHBy
ZWZldGNoIGF0IGV0aF9oZHIgaXRzZWxmIGFuZCBub3QgYXQgZXRoX2hkciArIDENCg0KPiArCQl9
DQo+ICsJCXByb2Nlc3N4NF9zdGVwMSgmcGt0c19idXJzdFtqXSwgJmRpcFtqIC8gRldEU1RFUF0s
DQo+ICsJCQkJJmlwdjRfZmxhZ1tqIC8gRldEU1RFUF0pOw0KPiArDQo+ICsJCXByb2Nlc3N4NF9z
dGVwMihxY29uZiwgZGlwW2ogLyBGV0RTVEVQXSwNCj4gKwkJCQlpcHY0X2ZsYWdbaiAvIEZXRFNU
RVBdLCBwb3J0aWQsDQo+ICZwa3RzX2J1cnN0W2pdLA0KPiArCQkJCSZkc3RfcG9ydFtqXSk7DQo+
ICsJfQ0KPiArDQo+ICsJLyogQ2xhc3NpZnkgbGFzdCB1cCB0byAzIHBhY2tldHMgb25lIGJ5IG9u
ZSAqLw0KPiArCXN3aXRjaCAobmJfcnggJSBGV0RTVEVQKSB7DQo+ICsJY2FzZSAzOg0KPiArCQlk
c3RfcG9ydFtqXSA9IGxwbV9nZXRfZHN0X3BvcnQocWNvbmYsIHBrdHNfYnVyc3Rbal0sDQo+IHBv
cnRpZCk7DQo+ICsJCWorKzsNCj4gKwkJLyogZmFsbHRocm91Z2ggKi8NCj4gKwljYXNlIDI6DQo+
ICsJCWRzdF9wb3J0W2pdID0gbHBtX2dldF9kc3RfcG9ydChxY29uZiwgcGt0c19idXJzdFtqXSwN
Cj4gcG9ydGlkKTsNCj4gKwkJaisrOw0KPiArCQkvKiBmYWxsdGhyb3VnaCAqLw0KPiArCWNhc2Ug
MToNCj4gKwkJZHN0X3BvcnRbal0gPSBscG1fZ2V0X2RzdF9wb3J0KHFjb25mLCBwa3RzX2J1cnN0
W2pdLA0KPiBwb3J0aWQpOw0KPiArCQlqKys7DQo+ICsJfQ0KPiArDQo+ICsJc2VuZF9wYWNrZXRz
X211bHRpKHFjb25mLCBwa3RzX2J1cnN0LCBkc3RfcG9ydCwgbmJfcngpOw0KPiArfQ0KPiArDQo+
ICsjZW5kaWYgLyogX19MM0ZXRF9MUE1fTkVPTl9IX18gKi8NCj4gZGlmZiAtLWdpdCBhL2V4YW1w
bGVzL2wzZndkL2wzZndkX25lb24uaA0KPiBiL2V4YW1wbGVzL2wzZndkL2wzZndkX25lb24uaA0K
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi43NWM4OTc2DQo+IC0tLSAv
ZGV2L251bGwNCj4gKysrIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbmVvbi5oDQo+IFsuLi5dDQoN
Cj4gKw0KPiArLyoqDQo+ICsgKiBQcm9jZXNzIG9uZSBwYWNrZXQ6DQo+ICsgKiBVcGRhdGUgc291
cmNlIGFuZCBkZXN0aW5hdGlvbiBNQUMgYWRkcmVzc2VzIGluIHRoZSBldGhlcm5ldA0KPiBoZWFk
ZXIuDQo+ICsgKiBQZXJmb3JtIFJGQzE4MTIgY2hlY2tzIGFuZCB1cGRhdGVzIGZvciBJUFY0IHBh
Y2tldHMuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiArcHJvY2Vzc19wYWNrZXQo
c3RydWN0IHJ0ZV9tYnVmICpwa3QsIHVpbnQxNl90ICpkc3RfcG9ydCkNCj4gK3sNCj4gKwlzdHJ1
Y3QgZXRoZXJfaGRyICpldGhfaGRyOw0KPiArCXVpbnQzMng0X3QgdGUsIHZlOw0KPiArDQo+ICsJ
ZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2QocGt0LCBzdHJ1Y3QgZXRoZXJfaGRyICopOw0KZXRo
X2hkciBhY2Nlc3NlZCBoZXJlLiBIZW5jZSB0aGUgZWFybGllciBjb21tZW50cyBhYm91dCBwcmVm
ZXRjaGluZyBhdA0KZXRoIGhlYWRlci4NCg0KPiArDQo+ICsJdGUgPSB2bGQxcV91MzIoKHVpbnQz
Ml90ICopZXRoX2hkcik7DQo+ICsJdmUgPSB2cmVpbnRlcnByZXRxX3UzMl9zMzIodmFsX2V0aFtk
c3RfcG9ydFswXV0pOw0KPiArDQo+ICsNCj4gKwlyZmMxODEyX3Byb2Nlc3MoKHN0cnVjdCBpcHY0
X2hkciAqKShldGhfaGRyICsgMSksIGRzdF9wb3J0LA0KPiArCQkJcGt0LT5wYWNrZXRfdHlwZSk7
DQo+ICsNCj4gKwl2ZSA9IHZzZXRxX2xhbmVfdTMyKHZnZXRxX2xhbmVfdTMyKHRlLCAzKSwgdmUs
IDMpOw0KVXNlwqB2Y29weXFfbGFuZXFfdTMyIGZvciBlYXNpbHkgZG9pbmcgdGhlIGFib3ZlLg0K
DQo+ICsJdnN0MXFfdTMyKCh1aW50MzJfdCAqKWV0aF9oZHIsIHZlKTsNCj4gK30NCj4gKw0KPiBb
Li4uXQ0KPiArI2VuZGlmIC8qIF9MM0ZXRF9ORU9OX0hfICovDQoNCkNvbWJpbmluZyBhbGwgdGhl
IGFib3ZlIGNvbW1lbnRzLCBJIG1hZGUgc29tZSBjaGFuZ2VzIG9uIHRvcCBvZiB5b3VyDQpwYXRj
aC4gVGhlc2UgY2hhbmdlcyBhcmUgZ2l2aW5nIDMtNCUgaW1wcm92ZW1lbnQgb3ZlciB5b3VyIHZl
cnNpb24uDQoNCllvdSBtYXkgZmluZCB0aGUgY2hhbmdlcyBhdA0KaHR0cHM6Ly9naXN0LmdpdGh1
Yi5jb20vYXNod2lueWVzLzM0Y2JkZDk5OTc4NDQwMmM4NTljNzE2MTM1ODdmYWZjDQoNClBsZWFz
ZSBjaGVjayBpdCBvdXQgYW5kIGxldCBtZSBrbm93IHlvdXIgY29tbWVudHMuDQoNClRoYW5rcw0K
QXNod2lu