From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10077.outbound.protection.outlook.com [40.107.1.77]) by dpdk.org (Postfix) with ESMTP id 626711BE4C for ; Fri, 21 Dec 2018 15:51:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f4XdFV9lMo4opIdnR5bas8hUryi8E3gkVR9VTsm7qcU=; b=Iw2WDXthiB3jTyeEwQEKuh8viGYe+laFicqGIvbHTqA37uZWqgjkv6voQdsQE3VUPzVqJ4L4N3ECe5n3djn5KEYt1x3Q/JVJHsgWniXuFzk7RLujyu5jXgwP/j0NQSmlH8pp3OjHN7VqNj7wTkbKKbbX+X7JCXnjur5kFbxW9EM= Received: from VI1PR04MB4893.eurprd04.prod.outlook.com (20.177.49.154) by VI1PR04MB1550.eurprd04.prod.outlook.com (10.164.84.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1446.19; Fri, 21 Dec 2018 14:51:12 +0000 Received: from VI1PR04MB4893.eurprd04.prod.outlook.com ([fe80::7dc4:610b:d0c1:146b]) by VI1PR04MB4893.eurprd04.prod.outlook.com ([fe80::7dc4:610b:d0c1:146b%4]) with mapi id 15.20.1446.022; Fri, 21 Dec 2018 14:51:12 +0000 From: Akhil Goyal To: "Ananyev, Konstantin" , "dev@dpdk.org" CC: Thomas Monjalon , "Awal, Mohammad Abdul" , "olivier.matz@6wind.com" Thread-Topic: [dpdk-dev] [PATCH v4 06/10] ipsec: implement SA data-path API Thread-Index: AQHUk8l2jP/G8oUcr0SNuYp6NUBDraWGOGsAgAFmuACAAYyuAIAAHzuAgAAGlAA= Date: Fri, 21 Dec 2018 14:51:12 +0000 Message-ID: <9293d643-a467-06f9-8269-9aa989c497fc@nxp.com> References: <1544110714-4514-2-git-send-email-konstantin.ananyev@intel.com> <1544804589-10338-6-git-send-email-konstantin.ananyev@intel.com> <2601191342CEEE43887BDE71AB977258010D8BD33A@IRSMSX106.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258010D8BDC1A@IRSMSX106.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB977258010D8BDC1A@IRSMSX106.ger.corp.intel.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR01CA0101.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00::17) To VI1PR04MB4893.eurprd04.prod.outlook.com (2603:10a6:803:56::26) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [14.143.30.134] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB1550; 6:SXobVcXt1YbiuPVqsJ00XyT3GH+jwM4Qt2XdSJrHIV+klK9Z0y2f7Bhqg1Uz2aS146KgCMUuZ2rSxCPTHQzEtn5VuEtt6lPavgeNYYO1yO58aVAt3PUwCUXMo1eZMXBfOy+nTjQP+WSNVo9XUg5LS2v7AbEnx8sZ3ZyOG6wmx6TqX3PckEKaxWEfxgVODQDEAHreDliwDq0tDNVDRkUtL8JqTs0w9o1wwpvQclKqFUJEdP+yDkIqBdHIcSDylCleedUp9MdkPOY1LXDnqswxZfEGJPaes6flay8Z7zQmwT+Y1wIgjn8b3+OEDENW4dZZucH7m6zyvF0jiAgu/7I06SFQDzKGsL0zNHI6f0WhWngs8jEquHiHXKPV/3+1rBbSGvO2scPR9NI9j2JgYLvm/OZuJXbXIjBCdFi3VQeRPEDnUDk4XqSBgpv532V0R2nl0577LEQdFTWZ5hG2QSBCLA==; 5:RJibolVMl6ROCabKFl9pR79/+WdfGEOwOnoZTyZdGGIdZPBye67SUZhj04tud3yA4zbZc03PPsjIPVnjdg+0i7WHi1SuyFah1cIug66u8ZHbZ1qM/I9AwQP1q8f4qTjAytrIJ0IvB3UiVlDrDmsVTVdEqMzyA/zP73NL/AloSqU=; 7:JRJgW7AILAMQhBrfN4JirBb6FO7P9Dp1Ucf21HYdzaHMOjzCS1WCex+EImJ2sIERVg5DxWQIgDp1Yj96bW8r7AATuILhFhxjO7GvIIhccNpPuk9+3JnMFUMMxY6U6iaqgMruzgH6tnPBLCZOOG1Z0Q== x-ms-office365-filtering-correlation-id: d339005a-4869-4e56-ded9-08d66753c022 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB1550; x-ms-traffictypediagnostic: VI1PR04MB1550: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(5005026)(6040522)(8220043)(2401047)(8121501046)(10201501046)(3002001)(3231475)(944501520)(52105112)(93006095)(93001095)(6055026)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR04MB1550; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB1550; x-forefront-prvs: 0893636978 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(346002)(376002)(136003)(396003)(199004)(189003)(2906002)(14454004)(105586002)(93886005)(78486014)(106356001)(53936002)(186003)(478600001)(966005)(3846002)(6116002)(99286004)(6306002)(6512007)(6346003)(44832011)(486006)(476003)(14444005)(2616005)(26005)(11346002)(446003)(71200400001)(71190400001)(5660300001)(81156014)(81166006)(4326008)(66066001)(68736007)(8936002)(305945005)(7736002)(25786009)(6246003)(256004)(55236004)(86362001)(6436002)(31696002)(6486002)(53546011)(8676002)(386003)(6506007)(102836004)(52116002)(229853002)(2501003)(97736004)(31686004)(36756003)(76176011)(54906003)(110136005)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB1550; H:VI1PR04MB4893.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=akhil.goyal@nxp.com; x-microsoft-antispam-message-info: 8ffMl7I547vx00yNmJn/YAVkE2zB9OnvtMGMjD3yonuLcU41eVvt/nPLxRiuLqfLwwkQ2+Z1CkdbbN2Ln3WL1sD6yOSv1m8YK3hCIEK4jGkzgJcJPe3j3GLrvJvqQrdrreAqXgKgDqhEgyxaerOrxoPAycj6gNXoXho4pRyJ2qY6JQbbF3CiKZcgcbMLkNhRs1T9peS6TgFWLQe7wX+wL8AQqXTVqG8Szwb2NzjFQVkx3Q4EbhngTO0OGPS3ZlqXkI+FwDSWQU5x2IA7xwTvLlqg1oYZub+wICfQbLRlnbnTCZ0hfy+/Uu9aX6HWwFun spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d339005a-4869-4e56-ded9-08d66753c022 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Dec 2018 14:51:12.5062 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB1550 Subject: Re: [dpdk-dev] [PATCH v4 06/10] ipsec: implement SA data-path API 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: , X-List-Received-Date: Fri, 21 Dec 2018 14:51:14 -0000 DQoNCk9uIDEyLzIxLzIwMTggNzo1NyBQTSwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4+ Pj4+ICsgKi8NCj4+Pj4+ICsNCj4+Pj4+ICsvKg0KPj4+Pj4gKyAqIE1vdmUgcHJlY2VkaW5nIChM MykgaGVhZGVycyBkb3duIHRvIHJlbW92ZSBFU1AgaGVhZGVyIGFuZCBJVi4NCj4+Pj4+ICsgKi8N Cj4+Pj4gd2h5IGNhbnQgd2UgdXNlIHJ0ZV9tYnVmIEFQSXMgdG8gYXBwZW5kL3ByZXBlbmQvdHJp bS9hZGp1c3QgbGVuZ3Rocy4NCj4+PiBXZSBkbyB1c2UgcnRlX21idWYgYXBwZW5kL3RyaW0sIGV0 Yy4gYWRqdXN0IG1idWYncyBkYXRhX29mcyBhbmQgZGF0YV9sZW4uDQo+Pj4gQnV0IGFwYXJ0IGZy b20gdGhhdCBmb3IgdHJhbnNwb3J0IG1vZGUgd2UgaGF2ZSB0byBtb3ZlIGFjdHVhbCBwYWNrZXQg aGVhZGVycy4NCj4+PiBMZXQgc2F5IGZvciBpbmJvdW5kIHdlIGhhdmUgdG8gZ2V0IHJpZCBvZiBF U1AgaGVhZGVyICh3aGljaCBpcyBhZnRlciBJUCBoZWFkZXIpLA0KPj4+IGJ1dCBwcmVzZXJ2ZSBJ UCBoZWFkZXIsIHNvIHdlIG1vdmluZyBMMi9MMyBoZWFkZXJzIGRvd24sIG92ZXJ3cml0aW5nIEVT UCBoZWFkZXIuDQo+PiBvayBnb3QgeW91ciBwb2ludA0KPj4+PiBJIGJlbGlldmUgdGhlc2UgYWRq dXN0bWVudHMgYXJlIGhhcHBlbmluZyBpbiB0aGUgbWJ1ZiBpdHNlbGYuDQo+Pj4+IE1vcmVvdmVy IHRoZXNlIEFQSXMgYXJlIG5vdCBzcGVjaWZpYyB0byBlc3AgaGVhZGVycy4NCj4+PiBJIGRpZG4n dCBnZXQgeW91ciBsYXN0IHNlbnRlbmNlOiB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVtb3Zl IGVzcCBoZWFkZXINCj4+PiAoc2VlIGFib3ZlKSAtIHRoYXQncyB3aHkgSSBuYW1lZCBpdCB0aGF0 IHdheS4NCj4+IFRoZXNlIGNhbiBiZSB1c2VkIHRvIHJlbW92ZSBhbnkgaGVhZGVyIGFuZCBub3Qg c3BlY2lmaWNhbGx5IGVzcC4gU28gdGhpcw0KPj4gQVBJIGNvdWxkIGJlIGdlbmVyaWMgaW4gcnRl X21idWYuDQo+IFRoYXQgZnVuY3Rpb24gaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBtYnVmIGluIGdl bmVyYWwuDQo+IEl0IGp1c3QgY29waWVzIGJ5dGVzIGJldHdlZW4gb3ZlcmxhcHBpbmcgaW4gY2Vy dGFpbiB3YXkgYnVmZmVycw0KPiAoc3JjLnN0YXJ0IDwgZHN0LnN0YXJ0IDwgc3JjLmVuZCA8IGRz dC5lbmQpLg0KPiBSaWdodCBub3cgaXQgaXMgdmVyeSBwcmltaXRpdmUgLSBjb3BpZXMgb24gYnl0 ZSBhdCBhIHRpbWUgaW4NCj4gZGVzY2VuZGluZyBvcmRlci4NCj4gV3JvdGUgaXQganVzdCB0byBh dm9pZCB1c2luZyBtZW1tb3ZlKCkuDQo+IEkgZG9uJ3QgdGhpbmsgdGhlcmUgaXMgYW55IHBvaW50 IHRvIGhhdmUgc3VjaCBkdW1teSBmdW5jdGlvbiBpbiB0aGUgbGliL2VhbC4NCklmIHRoaXMgaXMg YmV0dGVyIHRoYW4gbWVtbW92ZSwgdGhlbiBwcm9iYWJseSBpdCBpcyBhIGNhbmRpZGF0ZSB0byBh IA0KZnVuY3Rpb24gaW4gbGliLg0KSSB0aGluayBUaG9tYXMvIE9saXZpZXIgY2FuIGJldHRlciBj b21tZW50IG9uIHRoaXMNCj4NCj4+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4+Pj4+ICtyZW1v dmVfZXNwaChjaGFyICpucCwgY2hhciAqb3AsIHVpbnQzMl90IGhsZW4pDQo+Pj4+PiArew0KPj4+ Pj4gKwl1aW50MzJfdCBpOw0KPj4+Pj4gKw0KPj4+Pj4gKwlmb3IgKGkgPSBobGVuOyBpLS0gIT0g MDsgbnBbaV0gPSBvcFtpXSkNCj4+Pj4+ICsJCTsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiAr LyoNCj4+Pj4+ICsNCj4+Pj4+ICsvKiB1cGRhdGUgb3JpZ2luYWwgYW5kIG5ldyBpcCBoZWFkZXIg ZmllbGRzIGZvciB0dW5uZWwgY2FzZSAqLw0KPj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPj4+ Pj4gK3VwZGF0ZV90dW5fbDNoZHIoY29uc3Qgc3RydWN0IHJ0ZV9pcHNlY19zYSAqc2EsIHZvaWQg KnAsIHVpbnQzMl90IHBsZW4sDQo+Pj4+PiArCQl1aW50MzJfdCBsMmxlbiwgcnRlX2JlMTZfdCBw aWQpDQo+Pj4+PiArew0KPj4+Pj4gKwlzdHJ1Y3QgaXB2NF9oZHIgKnY0aDsNCj4+Pj4+ICsJc3Ry dWN0IGlwdjZfaGRyICp2Nmg7DQo+Pj4+PiArDQo+Pj4+PiArCWlmIChzYS0+dHlwZSAmIFJURV9J UFNFQ19TQVRQX01PREVfVFVOTFY0KSB7DQo+Pj4+PiArCQl2NGggPSBwOw0KPj4+Pj4gKwkJdjRo LT5wYWNrZXRfaWQgPSBwaWQ7DQo+Pj4+PiArCQl2NGgtPnRvdGFsX2xlbmd0aCA9IHJ0ZV9jcHVf dG9fYmVfMTYocGxlbiAtIGwybGVuKTsNCj4+Pj4gd2hlcmUgYXJlIHdlIHVwZGF0aW5nIHRoZSBy ZXN0IG9mIHRoZSBmaWVsZHMsIGxpa2UgdHRsLCBjaGVja3N1bSwgaXANCj4+Pj4gYWRkcmVzc2Vz LCBldGMNCj4+PiBUVEwsIGlwIGFkZHJlc3NlcyBhbmQgb3RoZXIgZmlsZWRzIHN1cHBvc2VkIHRv IGJlIHNldHVwZWQgYnkgdXNlcg0KPj4+IGFuZCBwcm92aWRlZCB2aWEgcnRlX2lwc2VjX3NhX2lu aXQoKToNCj4+PiBzdHJ1Y3QgcnRlX2lwc2VjX3NhX3BybS50dW4uaGRyICBzaG91bGQgY29udGFp biBwcmVwYXJlZCB0ZW1wbGF0ZQ0KPj4+IGZvciBMMyhhbmQgTDIgaWYgdXNlciB3YW50cyB0bykg aGVhZGVyLg0KPj4+IENoZWNrc3VtIGNhbGN1bGF0aW9uIGlzIG5vdCBkb25lIGluc2lkZSB0aGUg bGliIHJpZ2h0IG5vdyAtDQo+Pj4gaXQgaXMgYSB1c2VyIHJlc3BvbnNpYmlsaXR5IHRvIGNhY2x1 Y2F0ZS9zZXQgaXQgYWZ0ZXIgbGlicnRlX2lwc2VjDQo+Pj4gZmluaXNoZXMgcHJvY2Vzc2luZyB0 aGUgcGFja2V0Lg0KPj4gSSBiZWxpZXZlIHN0YXRpYyBmaWVsZHMgYXJlIHVwZGF0ZWQgZHVyaW5n IHNhIGluaXQgYnV0IHNvbWUgZmllbGRzIGxpa2UNCj4+IHR0bCBhbmQgY2hlY2tzdW0sDQo+PiBj YW4gYmUgdXBkYXRlZCBpbiB0aGUgbGlicmFyeSBpdHNlbGYgd2hpY2ggaXMgdXBkYXRlZCBmb3Ig ZXZlcnkgcGFja2V0Lg0KPj4gKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMxNjI0KQ0K PiBBYm91dCBjaGVja3N1bSAtIHRoZXJlIGlzIG5vIHBvaW50IHRvIGNhbGN1bGF0ZSBja3N1bSBp dCBpbiB0aGUgbGliLA0KPiBhcyB1c2VyIG1heSBjaG9vc2UgdG8gdXNlIEhXIGNoa3N1bSBvZmZs b2FkLg0KPiBBbGwgb3RoZXIgbGlicmFyaWVzIGlwX2ZyYWcsIEdTTywgZXRjLiBsZWF2ZSBpdCB0 byB0aGUgdXNlciwNCj4gSSBkb24ndCBzZWUgd2h5IGlwc2VjIHNob3VsZCBiZSBkaWZmZXJlbnQg aGVyZS4NCj4gQWJvdXQgVFRMIGFuZCBvdGhlciBmaWVsZHMgLSBJIHN1cHBvc2UgeW91IHJlZmVy IHRvOg0KPiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDMwMSNzZWN0aW9uLTUuMS4y DQo+IEhlYWRlciBDb25zdHJ1Y3Rpb24gZm9yIFR1bm5lbCBNb2RlDQo+IHJpZ2h0Pw0KPiBTdXJl bHkgdGhhdCBoYXMgdG8gYmUgc3VwcG9ydGVkLCBvbmUgd2F5IG9yIHRoZSBvdGhlciwNCj4gYnV0 IHdlIGRvbid0IHBsYW4gdG8gaW1wbGVtZW50IGl0IGluIDE5LjAyLg0KPiBDdXJyZW50IHBsYW4g dG8gYWRkIGl0IGluIDE5LjA1LCBpZiB0aW1lIHBlcm1pdHMuDQpJIGFtIG5vdCB0YWxraW5nIGFi b3V0IHRoZSBvdXRlciBpcCBjaGVja3N1bS4gU29ycnkgdGhlIHBsYWNlbWVudCBvZiB0aGUgDQpj b21tZW50IHdhcyBub3QgcXVpdGUgcmlnaHQuIEJ1dCBJIGRvIG5vdCBzZWUgdGhhdCBoYXBwZW5p bmcuDQpNeSBxdWVzdGlvbiBpcyB3aWxsIHRoZSBmdW5jdGlvbiBpcGlwX291dGJvdW5kIGluIGlw c2VjLXNlY2d3IGNhbGxlZCANCmZyb20gdGhlIGFwcGxpY2F0aW9uIG9yIHdpbGwgaXQgYmUgbW92 ZWQgaW5zaWRlIHRoZSBsaWJyYXJ5Lg0KSSBiZWxpZXZlIHRoaXMgc2hvdWxkIGJlIGluc2lkZSB0 aGUgbGliLg0KDQoNCj4+Pj4+ICsJfSBlbHNlIHsNCj4+Pj4+ICsJCXY2aCA9IHA7DQo+Pj4+PiAr CQl2NmgtPnBheWxvYWRfbGVuID0gcnRlX2NwdV90b19iZV8xNihwbGVuIC0gbDJsZW4gLQ0KPj4+ Pj4gKwkJCQlzaXplb2YoKnY2aCkpOw0KPj4+Pj4gKwl9DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+ Pj4gKyNlbmRpZiAvKiBfSVBIX0hfICovDQo+Pj4+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9p cHNlYy9pcHNlY19zcW4uaCBiL2xpYi9saWJydGVfaXBzZWMvaXBzZWNfc3FuLmgNCj4+Pj4+IGlu ZGV4IDE5MzVmNmUzMC4uNmUxOGMzNGViIDEwMDY0NA0KPj4+Pj4gLS0tIGEvbGliL2xpYnJ0ZV9p cHNlYy9pcHNlY19zcW4uaA0KPj4+Pj4gKysrIGIvbGliL2xpYnJ0ZV9pcHNlYy9pcHNlY19zcW4u aA0KPj4+Pj4gQEAgLTE1LDYgKzE1LDQ1IEBADQo+Pj4+Pg0KPj4+Pj4gICAgICNkZWZpbmUgSVNf RVNOKHNhKQkoKHNhKS0+c3FuX21hc2sgPT0gVUlOVDY0X01BWCkNCj4+Pj4+DQo+Pj4+PiArLyoN Cj4+Pj4+ICsgKiBnZXRzIFNRTi5oaTMyIGJpdHMsIFNRTiBzdXBwb3NlZCB0byBiZSBpbiBuZXR3 b3JrIGJ5dGUgb3JkZXIuDQo+Pj4+PiArICovDQo+Pj4+PiArc3RhdGljIGlubGluZSBydGVfYmUz Ml90DQo+Pj4+PiArc3FuX2hpMzIocnRlX2JlNjRfdCBzcW4pDQo+Pj4+PiArew0KPj4+Pj4gKyNp ZiBSVEVfQllURV9PUkRFUiA9PSBSVEVfQklHX0VORElBTg0KPj4+Pj4gKwlyZXR1cm4gKHNxbiA+ PiAzMik7DQo+Pj4+PiArI2Vsc2UNCj4+Pj4+ICsJcmV0dXJuIHNxbjsNCj4+Pj4+ICsjZW5kaWYN Cj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsgKiBnZXRzIFNRTi5sb3czMiBi aXRzLCBTUU4gc3VwcG9zZWQgdG8gYmUgaW4gbmV0d29yayBieXRlIG9yZGVyLg0KPj4+Pj4gKyAq Lw0KPj4+Pj4gK3N0YXRpYyBpbmxpbmUgcnRlX2JlMzJfdA0KPj4+Pj4gK3Nxbl9sb3czMihydGVf YmU2NF90IHNxbikNCj4+Pj4+ICt7DQo+Pj4+PiArI2lmIFJURV9CWVRFX09SREVSID09IFJURV9C SUdfRU5ESUFODQo+Pj4+PiArCXJldHVybiBzcW47DQo+Pj4+PiArI2Vsc2UNCj4+Pj4+ICsJcmV0 dXJuIChzcW4gPj4gMzIpOw0KPj4+Pj4gKyNlbmRpZg0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ ICsvKg0KPj4+Pj4gKyAqIGdldHMgU1FOLmxvdzE2IGJpdHMsIFNRTiBzdXBwb3NlZCB0byBiZSBp biBuZXR3b3JrIGJ5dGUgb3JkZXIuDQo+Pj4+PiArICovDQo+Pj4+PiArc3RhdGljIGlubGluZSBy dGVfYmUxNl90DQo+Pj4+PiArc3FuX2xvdzE2KHJ0ZV9iZTY0X3Qgc3FuKQ0KPj4+Pj4gK3sNCj4+ Pj4+ICsjaWYgUlRFX0JZVEVfT1JERVIgPT0gUlRFX0JJR19FTkRJQU4NCj4+Pj4+ICsJcmV0dXJu IHNxbjsNCj4+Pj4+ICsjZWxzZQ0KPj4+Pj4gKwlyZXR1cm4gKHNxbiA+PiA0OCk7DQo+Pj4+PiAr I2VuZGlmDQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+PiBzaG91bGRuJ3Qgd2UgbW92ZSB0aGVzZSBz ZXEgbnVtYmVyIEFQSXMgaW4gcnRlX2VzcC5oIGFuZCBtYWtlIHRoZW0gZ2VuZXJpYw0KPj4+IEl0 IGNvdWxkIGJlIGRvbmUsIGJ1dCB3aG8gd2lsbCB1c2UgdGhlbSBleGNlcHQgbGlicnRlX2lwc2Vj Pw0KPj4gV2hvZXZlciB1c2VzIHJ0ZV9lc3AuaCBhbmQgbm90IHVzZSBpcHNlYyBsaWIuIFRoZSBp bnRlbnQgb2YgcnRlX2VzcC5oIGlzDQo+PiBqdXN0IGZvciB0aGF0IG9ubHksIG90aGVyd2lzZSB3 ZSBkb24ndCBuZWVkIHJ0ZV9lc3AuaCwgd2UgY2FuIGhhdmUgdGhlDQo+PiBjb250ZW50IG9mIHJ0 ZV9lc3AuaCBpbiBpcHNlYyBpdHNlbGYuDQo+IEFnYWluIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNl ZCBqdXN0IGluc2lkZSB0aGUgbGliIHRvIGhlbHAgYXZvaWQNCj4gZXh0cmEgYnl0ZXN3YXBwaW5n IGR1cmluZyBjcnlwdG8tZGF0YS9wYWNrZXQgaGVhZGVyIGNvbnN0cnVjdGlvbnMuDQpBZ3JlZWQs IG15IHBvaW50IGlzIHdoeSBhZGRpbmcgYSBuZXcgZmlsZSBmb3IgbWFuYWdpbmcgc2VxIG51bWJl cmluZyBpbiANCmVzcCBoZWFkZXJzLCB3aGVuIHRoaXMgY2FuIGJlIGVhc2lseSBtb3ZlZCB0byBy dGVfZXNwLmguDQoNCj4gSSBkb24ndCBzZWUgaG93IHRoZXkgd2lsbCBiZSB1c2VmdWwgaW4gZ2Vu ZXJhbC4NCj4gU3VyZSwgaWYgdGhlcmUgd2lsbCBiZSBkZW1hbmQgZnJvbSB1c2VycyBpbiBmdXR1 cmUgLSB3ZSBjYW4gbW92ZSB0aGVtLA0KPiBidXQgcmlnaHQgbm93IEkgZG9uJ3QgdGhpbmsgdGhh dCB3b3VsZCBoYXBwZW4uDQpJbiB0aGF0IGNhc2Ugd2UgY2FuIGdldCBhd2F5IHdpdGggZXNwLmgg YXMgd2VsbCBhbmQgbW92ZSB0aGF0IGluIHRoaXMgDQpuZXcgZmlsZSBhbmQgc2VlIGlmIHVzZXJz IG5lZWQgaXQgc2VwYXJhdGVseSwgdGhlbiB3ZSBtb3ZlIGl0Lg0KPiBLb25zdGFudGluDQoNCg==