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 44722A0032;
	Fri, 16 Sep 2022 10:39:16 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id D4B104021D;
	Fri, 16 Sep 2022 10:39:15 +0200 (CEST)
Received: from mga01.intel.com (mga01.intel.com [192.55.52.88])
 by mails.dpdk.org (Postfix) with ESMTP id 35FAF40156
 for <dev@dpdk.org>; Fri, 16 Sep 2022 10:39:14 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
 d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
 t=1663317554; x=1694853554;
 h=from:to:cc:subject:date:message-id:references:
 in-reply-to:content-transfer-encoding:mime-version;
 bh=nxtF2hH7kaa+A6Kzde1vFqg0uCVDtlYUfIiypexCkRg=;
 b=UgA8acdaJUQDsIqOIloEJWbwOj3jNjYqpoMcoPsAPT9IiSUIbO+7qdKB
 ogFVdvpHsxhHgdHe4sxC1ChHKia1ppt+UDkVLmw7ZXFfmXd/z0a2Gk4Hg
 hgga1tWE2BBWFQvlj1nh8wU/WP7SVpJaqwZI9sTlWct8Y7rUZm32174Zu
 WLnZPfQeMMJQL8BcOsZSZpmvteB8b1AXaxz49Fg54/kIzeA8YX5pOWn2U
 I12+nZ4IaRC0qQk+0DaphQWmYaNkGZF5LGr62Xx1BcVw/z0s+fDWgPKqH
 bfb3B+CSnYSAsYgTmX4Dc5je+6urfIzw7X72OrpIOA1bIrJqaFyZc7HMB w==;
X-IronPort-AV: E=McAfee;i="6500,9779,10471"; a="325216836"
X-IronPort-AV: E=Sophos;i="5.93,320,1654585200"; d="scan'208";a="325216836"
Received: from orsmga004.jf.intel.com ([10.7.209.38])
 by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 16 Sep 2022 01:38:53 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.93,320,1654585200"; d="scan'208";a="743267534"
Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82])
 by orsmga004.jf.intel.com with ESMTP; 16 Sep 2022 01:38:52 -0700
Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by
 fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2375.31; Fri, 16 Sep 2022 01:38:52 -0700
Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by
 fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2375.31 via Frontend Transport; Fri, 16 Sep 2022 01:38:52 -0700
Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.175)
 by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.2375.31; Fri, 16 Sep 2022 01:38:51 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=nqQBfF9ehgj4Vp391WWyZlY8hf8o5VzlhcanqbOCsIU9K5LYVBxTzeaGQsFOdE1+QYKzKCxcRnP+mUG1XZUlKS6yKej4i7T6KeLLbd3cz5R5giOxK0F7MEFhYn+kkdTuqNvPQg6gDZrSzdKr/S2ogeHvWVB14SJJU4PLQgv/KQgQJqs/hjCrTwF//hCtZw1c6ByK7WH6+K3ynFO+IBklQ/nSz2IlmBEtwY3qoyILIQrpSfpEAc1g9nhYh/YjMLds9Z9Ccb3GMTRsvK6GidyO3yqt5nLdN+67G7PSlh8XrOIIB4brPMFITUnmx4KtZ0hzgaRMoY9ImxB2yRgLtmHOiA==
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=nxtF2hH7kaa+A6Kzde1vFqg0uCVDtlYUfIiypexCkRg=;
 b=ON5fKG9fbkzRTUP55Idr37yKlP1AJYqwFs8SpxZQJnV4yu2qAroXXBUGjl2LUwt7TAKKj6HKmaMq8O8yxAGIegbixkc6hon6OWwR/jIqUvyDF/844RRJYVpPtLJuWhRM7FgydQrNz14e0ikkxCa0GEbrSxLWrplUiRcAYV8FE48hFSA3uCyx/wh1wuSV10P/O6m3OePWTAZamB9HarctDE1uwoxbjzP3POeqmOPild1vwpHI3l6IwGypviE6s0QUshOiaKc0FWla4O+FGZrSTJUGrojkCN4vgj1GPP9MTbWryiA/cBXAYnWYkdqysbHMqQUSFKoTmq0p+D5KAl12AA==
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 PH7PR11MB6953.namprd11.prod.outlook.com (2603:10b6:510:204::6)
 by IA1PR11MB6100.namprd11.prod.outlook.com (2603:10b6:208:3d4::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Fri, 16 Sep
 2022 08:38:45 +0000
Received: from PH7PR11MB6953.namprd11.prod.outlook.com
 ([fe80::3132:50b1:d7f7:a1ae]) by PH7PR11MB6953.namprd11.prod.outlook.com
 ([fe80::3132:50b1:d7f7:a1ae%7]) with mapi id 15.20.5612.022; Fri, 16 Sep 2022
 08:38:45 +0000
From: "Wang, YuanX" <yuanx.wang@intel.com>
To: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>, "dev@dpdk.org"
 <dev@dpdk.org>, Thomas Monjalon <thomas@monjalon.net>, Ferruh Yigit
 <ferruh.yigit@xilinx.com>
CC: "mdr@ashroe.eu" <mdr@ashroe.eu>, "Li, Xiaoyun" <xiaoyun.li@intel.com>,
 "Singh, Aman Deep" <aman.deep.singh@intel.com>, "Zhang, Yuying"
 <yuying.zhang@intel.com>, "Zhang, Qi Z" <qi.z.zhang@intel.com>, "Yang,
 Qiming" <qiming.yang@intel.com>, "jerinjacobk@gmail.com"
 <jerinjacobk@gmail.com>, "viacheslavo@nvidia.com" <viacheslavo@nvidia.com>,
 "stephen@networkplumber.org" <stephen@networkplumber.org>, "Ding, Xuan"
 <xuan.ding@intel.com>, "hpothula@marvell.com" <hpothula@marvell.com>, "Tang,
 Yaqi" <yaqi.tang@intel.com>, Wenxuan Wu <wenxuanx.wu@intel.com>
Subject: RE: [PATCH v3 2/4] ethdev: introduce protocol hdr based buffer split
Thread-Topic: [PATCH v3 2/4] ethdev: introduce protocol hdr based buffer split
Thread-Index: AQHYvr58j4LacoqSlU+GCOBl/R4u763bvUYAgARsDQA=
Date: Fri, 16 Sep 2022 08:38:44 +0000
Message-ID: <PH7PR11MB6953C1B1B16DA6EB24AEB1EB85489@PH7PR11MB6953.namprd11.prod.outlook.com>
References: <20220812181552.2908067-1-yuanx.wang@intel.com>
 <20220902191027.666923-1-yuanx.wang@intel.com>
 <20220902191027.666923-3-yuanx.wang@intel.com>
 <761509b6-4a9a-72a1-2ee9-cd3555c85fd8@oktetlabs.ru>
In-Reply-To: <761509b6-4a9a-72a1-2ee9-cd3555c85fd8@oktetlabs.ru>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
dlp-version: 11.6.500.17
dlp-reaction: no-action
dlp-product: dlpe-windows
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: PH7PR11MB6953:EE_|IA1PR11MB6100:EE_
x-ms-office365-filtering-correlation-id: 0248331f-a33e-406f-2541-08da97beddf8
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: E9lF2UjJh902qM5OTTTvEg4RejehmNP85E0nuyDb3zVCdAKsE+3OwVo391xlehQLR8VE8qPB0NcL7utE/gLBBW7HwSYImCsnDLFrhpZ9O+KcJDpifuAaHqgjCRlswPMA0WegVplrUxeNktXTxRy4v1k7JaG/P4lQj9rUhVwSFtVBMVJXiq3+jcwEbcaaRUFufctrgVDC8UiCRkpHFWtUkJ2s23n7K3aS6TH/swQYP0jUuKZKlJTskfUH7h7yglIxTKPHJA+r4S00RSzLD6REOvnKRXyxeizD3u68/32wzJt2W1i3aIRx+CdUjFcpwuR0AsCZ6IrSTJkzA2abwL0MCdPUUBofwY6BLF/lwWaGVvSs1K6Fid4WuAwnqwiiI53o8xyGCxu2ct3DNeuekt26okr/b/ThOPzneI2Not2UKzFYnrQ56Hr/uo3LZyG3k10m1wg1q5tIlDOX2wKIfIZsLJGGxAYEHrSkm/Ry+Rqe9HMm+HkqgpHSXaVhO0kZDGyA1RZLg6xIV3Bes03GonahnmG+HnKtM/WbI27qmPdi6V/GCW/zkeMgBsdhFzUhFbuHS7ELIACARavCi69qVtKhYrGhPFrNPyGJDO0XZzL+nJ3LowpVOOkKfePbddIYp6bQftDcjsMWVAcnb5itB56PHtgchYeysVAa8BPF1cDGkukr7Kmw7DoMSBTEg5PHCXY/ddtIPBBTXgEhRaelsJDicir2qxsLlNguEkAOKpDwmALVgeRF5jyJ1JqC1SWN41IRaBDczwK5Er48vQqxO5YRWQ==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:PH7PR11MB6953.namprd11.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230022)(396003)(346002)(366004)(136003)(376002)(39860400002)(451199015)(8936002)(107886003)(30864003)(86362001)(7696005)(33656002)(110136005)(5660300002)(41300700001)(2906002)(478600001)(54906003)(38070700005)(83380400001)(38100700002)(71200400001)(6506007)(122000001)(53546011)(186003)(9686003)(26005)(82960400001)(66946007)(76116006)(66476007)(66446008)(66556008)(52536014)(316002)(8676002)(64756008)(4326008)(55016003);
 DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z2ZDT1I4bWZYZTVWOCtOenQ5TmVoRUMvV1haNnd4WVVtY2tqdmtsa3dMdS9p?=
 =?utf-8?B?akxTeVZZYUJFNk8zbGVVMkJPc2ZBb3BRNlgyUzUxVzdUMWhoSWF1cVRlK05k?=
 =?utf-8?B?eFRybElvSTZ3UXlHdERVM1NZV0d1K3ZDRk1rL0s2ZUlaREcwaytJVDJ3WHAv?=
 =?utf-8?B?V1g0TTZ4elBxQzJ5VzZGa1hMdGJQclJ1WDZUQ1dCQkh1Z1NJMXlhWEhKekYv?=
 =?utf-8?B?Q3Q3TFJzaEdDT3NUNlhrUFhYbXNqM2JXS1Q3a09aQzMvTTA4bURWekF3dUFt?=
 =?utf-8?B?bDE4TmptNW44OER3RzVkUll0SDk0SjZvMW5zL2VjZzdtZ29WeGo5MjZ4VnZ2?=
 =?utf-8?B?ZkNoRVMrenJXQ0paQk9lRjY2dlpxUmRKT1RXdEZYeXFIcGtXSjFHeVpVSkp1?=
 =?utf-8?B?ZW5oSTUxNVpoYnd0RERiM0xhanVNT25DZGtQeStrMlhhOENDZlp1ME42cjhr?=
 =?utf-8?B?QlB6TzhNczhuQm9lK2gxTkp0Z2FwSGNJRnNxMUlsQXo4Z2xRZlplbjc2TndL?=
 =?utf-8?B?WXgvd0xvbzBJR2NoQXBFQ0lEUGZaWXZlenF0cUtycmR0ZS9VMS8zRkVuVzFM?=
 =?utf-8?B?WGFRdG01aEtMNE1rYW9jcGlGV3k4MHlwdzEzSVk4bTdRNHVuL3RRdUo4UlQx?=
 =?utf-8?B?WS9OSzdXdzdMbkd0T3N3citHTkZHQkVEQTRsK3VqZGZydTlWZE5yYTVEcFJQ?=
 =?utf-8?B?b2ZOTDludTZmTjVFYi9USmcxdk9HUzZTREhVQnRvcUFRQ05ZbTFaVU84Ykky?=
 =?utf-8?B?NUEzVnRNN0VFSTVVazVXUW9XWkVwOGFQcDE5N29DekFvMXJuNHhQRVRQaXRL?=
 =?utf-8?B?WVp4ZWpXY096LzNCcWUwRFh2cFhNVmw2RHpOUXNGSEgxUnp5Njg4R1RNbHI1?=
 =?utf-8?B?M2xNcEhLZnowZmpSZW1PYU5jU01DOVg1aXp3ZkoyRGtJR0RMVTBGQytQN05C?=
 =?utf-8?B?WjJJM0xrVEczZjJFeFVKdGs1QzJGRmxuU2VQMGM5RkYrQ3o4REhlZ25IdHla?=
 =?utf-8?B?U3FEaEZXREZQZTJDb283RTBiczZsdXA0ekhNVDV4Skd0QmErREMxNVNYU3VO?=
 =?utf-8?B?VTRQcHdzVC82bHlxdTgzR0VEK3lreVRKZkw4di94bkJQb1BQSGdUN2ZHVHBU?=
 =?utf-8?B?b1Vmb2hvandhT0UwKzMySVNBYWZ2VERGUHc0Uy9NV1RJWmxxWmxlRm1Nc3ZI?=
 =?utf-8?B?dWxmRDZzaS9wRlB3NFpzY1RzUVVjNEswYS9idjIxTExsd1dmZVcxUExVV0hy?=
 =?utf-8?B?VzVvREJGd1crVW1jdkowSzhHZVY2eWZLc0RMZ1I4YWQ1Zk5MR01Nclp6b254?=
 =?utf-8?B?enh5ZGpYTm1NRnVjSUpodjIwdFFnYkhFOG55eXkrbGlvdG02Q1FjaDBSSFFP?=
 =?utf-8?B?SHRvQml0NjF5VXljbUFKTnhYdExzSk9kckJVR01TVllqSm5KN1E5NXI3MEtV?=
 =?utf-8?B?RmhQYzZTVG9WQnV0a2hlMW4vRUlBcVRPVjdWdjlFY0pVenFoWjVXY1UrLzBM?=
 =?utf-8?B?LzlUMW1XOHN4UytSV0FDRmpzRjlEYUczSFMrUW44dWJ1ZHZyeW80ZFJxMkZt?=
 =?utf-8?B?ZnVYMS9EYTRnZ2hMSXp0QjN4LzJiTGUydmtDSm5PSXIrNldPc1pkZC9QaTZj?=
 =?utf-8?B?QmZhRXdDQkRxR0dTcHRLK1p4K29Kblc1TnVWdjVxUnhrRVFFK1JVWkZaZUpN?=
 =?utf-8?B?czVYMkZ0and0QlUwanF5VzR0bHFWMkh4QkxtMzhBSkRqVkpjMFFYeXJyaW93?=
 =?utf-8?B?bTZNUDVUVTVaMFVjR0JGMjgwMVNsWnFhOWxvMmtGdHZUVitKRWlWKzQ0SVF4?=
 =?utf-8?B?VlR2MWFtYTF6NVRXdC9OYVMrejVYNmVxaHRGNzNkNUNOTzhQekxHOHd2djlk?=
 =?utf-8?B?dkJtVVlLdzlEVUxTUDVUTkRNYlZSZnkrNW9yOWVMbmV1cFpwZllMbUpUd29z?=
 =?utf-8?B?RGRyWVFxakZKRTAxRnpKRTF5ME05dHNrdWdRUGFnWEVyTEpmUkd2eHdmWlo3?=
 =?utf-8?B?SCtYeFlRYmVIT0E0UmNUZ2IraWFhZXV2L3NaN1BzTUtLUCtwY1RqdkdwWXlM?=
 =?utf-8?B?aFNEQVhnYitkaVN5Vkd0OGpvNzJieG9pcDd0VGRCM0VEaVhWT0xkNmREbm9N?=
 =?utf-8?Q?vNwKJyEvwqUWw6UcBilImsExh?=
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: PH7PR11MB6953.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0248331f-a33e-406f-2541-08da97beddf8
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2022 08:38:44.9797 (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: ZHweHqEIsKULBFzNhoVfpnL1Qc2CuYcFinGVH5KGURul8XqnEHHvV/FWEcd3kHJLv6Oz/VZrYs+psqbBHGxzXw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB6100
X-OriginatorOrg: intel.com
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

SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl
dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBNb25k
YXksIFNlcHRlbWJlciAxMiwgMjAyMiA3OjQ3IFBNDQo+IFRvOiBXYW5nLCBZdWFuWCA8eXVhbngu
d2FuZ0BpbnRlbC5jb20+OyBkZXZAZHBkay5vcmc7IFRob21hcw0KPiBNb25qYWxvbiA8dGhvbWFz
QG1vbmphbG9uLm5ldD47IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QHhpbGlueC5jb20+DQo+
IENjOiBtZHJAYXNocm9lLmV1OyBMaSwgWGlhb3l1biA8eGlhb3l1bi5saUBpbnRlbC5jb20+OyBT
aW5naCwgQW1hbiBEZWVwDQo+IDxhbWFuLmRlZXAuc2luZ2hAaW50ZWwuY29tPjsgWmhhbmcsIFl1
eWluZyA8eXV5aW5nLnpoYW5nQGludGVsLmNvbT47DQo+IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5n
QGludGVsLmNvbT47IFlhbmcsIFFpbWluZyA8cWltaW5nLnlhbmdAaW50ZWwuY29tPjsNCj4gamVy
aW5qYWNvYmtAZ21haWwuY29tOyB2aWFjaGVzbGF2b0BudmlkaWEuY29tOw0KPiBzdGVwaGVuQG5l
dHdvcmtwbHVtYmVyLm9yZzsgRGluZywgWHVhbiA8eHVhbi5kaW5nQGludGVsLmNvbT47DQo+IGhw
b3RodWxhQG1hcnZlbGwuY29tOyBUYW5nLCBZYXFpIDx5YXFpLnRhbmdAaW50ZWwuY29tPjsgV2Vu
eHVhbiBXdQ0KPiA8d2VueHVhbngud3VAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENI
IHYzIDIvNF0gZXRoZGV2OiBpbnRyb2R1Y2UgcHJvdG9jb2wgaGRyIGJhc2VkIGJ1ZmZlciBzcGxp
dA0KPiANCj4gT24gOS8yLzIyIDIyOjEwLCBZdWFuIFdhbmcgd3JvdGU6DQo+ID4gQ3VycmVudGx5
LCBSeCBidWZmZXIgc3BsaXQgc3VwcG9ydHMgbGVuZ3RoIGJhc2VkIHNwbGl0LiBXaXRoIFJ4IHF1
ZXVlDQo+ID4gb2ZmbG9hZCBSVEVfRVRIX1JYX09GRkxPQURfQlVGRkVSX1NQTElUIGVuYWJsZWQg
YW5kIFJ4IHBhY2tldA0KPiBzZWdtZW50DQo+ID4gY29uZmlndXJlZCwgUE1EIHdpbGwgYmUgYWJs
ZSB0byBzcGxpdCB0aGUgcmVjZWl2ZWQgcGFja2V0cyBpbnRvDQo+ID4gbXVsdGlwbGUgc2VnbWVu
dHMuDQo+ID4NCj4gPiBIb3dldmVyLCBsZW5ndGggYmFzZWQgYnVmZmVyIHNwbGl0IGlzIG5vdCBz
dWl0YWJsZSBmb3IgTklDcyB0aGF0IGRvDQo+ID4gc3BsaXQgYmFzZWQgb24gcHJvdG9jb2wgaGVh
ZGVycy4gR2l2ZW4gYW4gYXJiaXRyYXJpbHkgdmFyaWFibGUgbGVuZ3RoDQo+ID4gaW4gUnggcGFj
a2V0IHNlZ21lbnQsIGl0IGlzIGFsbW9zdCBpbXBvc3NpYmxlIHRvIHBhc3MgYSBmaXhlZCBwcm90
b2NvbA0KPiA+IGhlYWRlciB0byBkcml2ZXIuIEJlc2lkZXMsIHRoZSBleGlzdGVuY2Ugb2YgdHVu
bmVsaW5nIHJlc3VsdHMgaW4gdGhlDQo+ID4gY29tcG9zaXRpb24gb2YgYSBwYWNrZXQgaXMgdmFy
aW91cywgd2hpY2ggbWFrZXMgdGhlIHNpdHVhdGlvbiBldmVuIHdvcnNlLg0KPiA+DQo+ID4gVGhp
cyBwYXRjaCBleHRlbmRzIGN1cnJlbnQgYnVmZmVyIHNwbGl0IHRvIHN1cHBvcnQgcHJvdG9jb2wg
aGVhZGVyDQo+ID4gYmFzZWQgYnVmZmVyIHNwbGl0LiBBIG5ldyBwcm90b19oZHIgZmllbGQgaXMg
aW50cm9kdWNlZCBpbiB0aGUNCj4gPiByZXNlcnZlZCBmaWVsZCBvZiBydGVfZXRoX3J4c2VnX3Nw
bGl0IHN0cnVjdHVyZSB0byBzcGVjaWZ5IHByb3RvY29sDQo+ID4gaGVhZGVyLiBUaGUgcHJvdG9f
aGRyIGZpZWxkIGRlZmluZXMgdGhlIHNwbGl0IHBvc2l0aW9uIG9mIHBhY2tldCwNCj4gPiBzcGxp
dHRpbmcgd2lsbCBhbHdheXMgaGFwcGVucyBhZnRlciB0aGUgcHJvdG9jb2wgaGVhZGVyIGRlZmlu
ZWQgaW4gdGhlDQo+ID4gUnggcGFja2V0IHNlZ21lbnQuIFdoZW4gUnggcXVldWUgb2ZmbG9hZA0K
PiA+IFJURV9FVEhfUlhfT0ZGTE9BRF9CVUZGRVJfU1BMSVQgaXMgZW5hYmxlZCBhbmQgY29ycmVz
cG9uZGluZw0KPiBwcm90b2NvbA0KPiA+IGhlYWRlciBpcyBjb25maWd1cmVkLCBkcml2ZXIgd2ls
bCBzcGxpdCB0aGUgaW5ncmVzcyBwYWNrZXRzIGludG8gbXVsdGlwbGUNCj4gc2VnbWVudHMuDQo+
ID4NCj4gPiBzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCB7DQo+ID4gICAgICAgICAgc3RydWN0
IHJ0ZV9tZW1wb29sICptcDsgLyogbWVtb3J5IHBvb2xzIHRvIGFsbG9jYXRlIHNlZ21lbnQgZnJv
bQ0KPiAqLw0KPiA+ICAgICAgICAgIHVpbnQxNl90IGxlbmd0aDsgLyogc2VnbWVudCBtYXhpbWFs
IGRhdGEgbGVuZ3RoLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJl
cyBzcGxpdCBwb2ludCAqLw0KPiA+ICAgICAgICAgIHVpbnQxNl90IG9mZnNldDsgLyogZGF0YSBv
ZmZzZXQgZnJvbSBiZWdpbm5pbmcNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m
IG1idWYgZGF0YSBidWZmZXIgKi8NCj4gPiAgICAgICAgICB1aW50MzJfdCBwcm90b19oZHI7IC8q
IHN1cHBvcnRlZCBwdHlwZSBvZiBhIHNwZWNpZmljIHBtZCwNCj4gPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgc3BsaXQgcG9pbnQuDQo+ID4gCQkJICAgICAgIEl0
IHNob3VsZCBiZSBkZWZpbmVkIGJ5IFJURV9QVFlQRV8qDQo+IA0KPiBJZiBJIHVuZGVyc3RhbmQg
Y29ycmVjdGx5LCB0aGUgc3RhdGVtZW50IGlzIGEgYml0IG1pc2xlYWRpbmcgc2luY2UgaXQgc2hv
dWxkIGJlIGENCj4gYml0IG1hc2sgb2YgUlRFX1BUWVBFXyogZGVmaW5lcy4gTm90IGV4YWN0bHkg
b25lIFJURV9QVFlQRV8qLg0KDQpEbyB5b3UgbWVhbiB0aGF0IGEgc2VnbWVudCBzaG91bGQgc3Vw
cG9ydCBtdWx0aXBsZSBwcm90b2NvbCBoZWFkZXJzLCBzdWNoIGFzIHNwbGl0dGluZyBib3RoIHRj
cCBhbmQgdWRwIGhlYWRlcnM/DQoNCj4gDQo+ID4gCQkJICAgICAqLw0KPiA+IH07DQo+ID4NCj4g
PiBJZiBwcm90b2NvbCBoZWFkZXIgc3BsaXQgY2FuIGJlIHN1cHBvcnRlZCBieSBhIFBNRC4gVGhl
DQo+ID4gcnRlX2V0aF9idWZmZXJfc3BsaXRfZ2V0X3N1cHBvcnRlZF9oZHJfcHR5cGVzIGZ1bmN0
aW9uIGNhbiBiZSB1c2UgdG8NCj4gPiBvYnRhaW4gYSBsaXN0IG9mIHRoZXNlIHByb3RvY29sIGhl
YWRlcnMuDQo+ID4NCj4gPiBGb3IgZXhhbXBsZSwgbGV0J3Mgc3VwcG9zZSB3ZSBjb25maWd1cmVk
IHRoZSBSeCBxdWV1ZSB3aXRoIHRoZQ0KPiA+IGZvbGxvd2luZyBzZWdtZW50czoNCj4gPiAgICAg
ICAgICBzZWcwIC0gcG9vbDAsIHByb3RvX2hkcjA9UlRFX1BUWVBFX0wzX0lQVjQsIG9mZjA9MkIN
Cj4gPiAgICAgICAgICBzZWcxIC0gcG9vbDEsIHByb3RvX2hkcjE9UlRFX1BUWVBFX0w0X1VEUCwg
b2ZmMT0xMjhCDQo+ID4gICAgICAgICAgc2VnMiAtIHBvb2wyLCBvZmYxPTBCDQo+ID4NCj4gPiBU
aGUgcGFja2V0IGNvbnNpc3RzIG9mIE1BQ19JUFY0X1VEUF9QQVlMT0FEIHdpbGwgYmUgc3BsaXQg
bGlrZQ0KPiANCj4gV2hhdCBpcyBNQUNfSVBWNF9VRFBfUEFZTE9BRD8gRG8geW91IG1lYW4gRVRI
X0lQVjRfVURQX1BBWUxPQUQ/DQoNClRoYW5rcyBmb3IgeW91ciBjb3JyZWN0aW9uLCBpdCBzaG91
bGQgYmUgRVRIX0lQVjRfVURQX1BBWUxPQUQuDQoNCj4gDQo+ID4gZm9sbG93aW5nOg0KPiA+ICAg
ICAgICAgIHNlZzAgLSBpcHY0IGhlYWRlciBAIFJURV9QS1RNQlVGX0hFQURST09NICsgMiBpbiBt
YnVmIGZyb20NCj4gcG9vbDANCj4gPiAgICAgICAgICBzZWcxIC0gdWRwIGhlYWRlciBAIDEyOCBp
biBtYnVmIGZyb20gcG9vbDENCj4gPiAgICAgICAgICBzZWcyIC0gcGF5bG9hZCBAIDAgaW4gbWJ1
ZiBmcm9tIHBvb2wyDQo+ID4NCj4gPiBOb3RlOiBOSUMgd2lsbCBvbmx5IGRvIHNwbGl0IHdoZW4g
dGhlIHBhY2tldHMgZXhhY3RseSBtYXRjaCBhbGwgdGhlDQo+ID4gcHJvdG9jb2wgaGVhZGVycyBp
biB0aGUgc2VnbWVudHMuIEZvciBleGFtcGxlLCBpZiBBUlAgcGFja2V0cyByZWNlaXZlZA0KPiA+
IHdpdGggYWJvdmUgY29uZmlnLCB0aGUgTklDIHdvbid0IGRvIHNwbGl0IGZvciBBUlAgcGFja2V0
cyBzaW5jZSBpdA0KPiA+IGRvZXMgbm90IGNvbnRhaW5zIGlwdjQgaGVhZGVyIGFuZCB1ZHAgaGVh
ZGVyLg0KPiANCj4gWW91IG11c3QgZGVmaW5lIHdoaWNoIG1lbXBvb2wgaXMgdXNlZCBpbiB0aGUg
Y2FzZS4NCg0KSU1ITyBJIGRvbid0IHRoaW5rIHdlIGNhbiBkZWZpbmUgd2hpY2ggbWVtcG9vbCB0
byB1c2UsIGl0IGRlcGVuZHMgb24gTklDIGJlaGF2aW9yLg0KRm9yIG91ciBOSUMsIHBhY2tldHMg
dGhhdCBhcmUgdW5hYmxlIHRvIHNwbGl0IHdpbGwgYmUgcHV0IGludG8gdGhlIGxhc3QgdmFsaWQg
cG9vbCwgd2l0aCB6ZXJvIG9mZnNldC4gDQpTbyBoZXJlIHdlIHdvdWxkIGxpa2UgdG8gZGVmaW5l
IHRvIHB1dCB0aGVzZSBwYWNrZXRzIGludG8gdGhlIGxhc3QgdmFsaWQgbWVtcG9vbCwgd2l0aCB6
ZXJvIG9mZnNldC4NCg0KPiANCj4gPg0KPiA+IE5vdyBidWZmZXIgc3BsaXQgY2FuIGJlIGNvbmZp
Z3VyZWQgaW4gdHdvIG1vZGVzLiBGb3IgbGVuZ3RoIGJhc2VkDQo+ID4gYnVmZmVyIHNwbGl0LCB0
aGUgbXAsIGxlbmd0aCwgb2Zmc2V0IGZpZWxkIGluIFJ4IHBhY2tldCBzZWdtZW50IHNob3VsZA0K
PiA+IGJlIGNvbmZpZ3VyZWQsIHdoaWxlIHRoZSBwcm90b19oZHIgZmllbGQgd2lsbCBiZSBpZ25v
cmVkLg0KPiA+IEZvciBwcm90b2NvbCBoZWFkZXIgYmFzZWQgYnVmZmVyIHNwbGl0LCB0aGUgbXAs
IG9mZnNldCwgcHJvdG9faGRyDQo+ID4gZmllbGQgaW4gUnggcGFja2V0IHNlZ21lbnQgc2hvdWxk
IGJlIGNvbmZpZ3VyZWQsIHdoaWxlIHRoZSBsZW5ndGgNCj4gPiBmaWVsZCB3aWxsIGJlIGlnbm9y
ZWQuDQo+ID4NCj4gPiBUaGUgc3BsaXQgbGltaXRhdGlvbnMgaW1wb3NlZCBieSB1bmRlcmx5aW5n
IGRyaXZlciBpcyByZXBvcnRlZCBpbiB0aGUNCj4gPiBydGVfZXRoX2Rldl9pbmZvLT5yeF9zZWdf
Y2FwYSBmaWVsZC4gVGhlIG1lbW9yeSBhdHRyaWJ1dGVzIGZvciB0aGUNCj4gPiBzcGxpdCBwYXJ0
cyBtYXkgZGlmZmVyIGVpdGhlciwgZHBkayBtZW1vcnkgYW5kIGV4dGVybmFsIG1lbW9yeSwNCj4g
cmVzcGVjdGl2ZWx5Lg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogWXVhbiBXYW5nIDx5dWFueC53
YW5nQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBYdWFuIERpbmcgPHh1YW4uZGluZ0Bp
bnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogV2VueHVhbiBXdSA8d2VueHVhbngud3VAaW50
ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8x
MS5yc3QgfCAgNSArKysNCj4gPiAgIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5jICAgICAgICAgICAg
ICAgIHwgNTUgKysrKysrKysrKysrKysrKysrKystLS0tLS0NCj4gPiAgIGxpYi9ldGhkZXYvcnRl
X2V0aGRldi5oICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKy0NCj4gPiAgIDMgZmlsZXMgY2hh
bmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0t
Z2l0IGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8xMS5yc3QNCj4gPiBiL2RvYy9n
dWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMTEucnN0DQo+ID4gaW5kZXggNGQ5MDUxNGE5YS4u
ZjNiNThjNzg5NSAxMDA2NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNl
XzIyXzExLnJzdA0KPiA+ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMTEu
cnN0DQo+ID4gQEAgLTYwLDYgKzYwLDExIEBAIE5ldyBGZWF0dXJlcw0KPiA+ICAgICBBZGRlZCBg
YHJ0ZV9ldGhfYnVmZmVyX3NwbGl0X2dldF9zdXBwb3J0ZWRfaGRyX3B0eXBlcygpYGAsIHRvIGdl
dA0KPiBzdXBwb3J0ZWQNCj4gPiAgICAgaGVhZGVyIHByb3RvY29scyBvZiBhIFBNRCB0byBzcGxp
dC4NCj4gPg0KPiA+ICsqICoqQWRkZWQgcHJvdG9jb2wgaGVhZGVyIGJhc2VkIGJ1ZmZlciBzcGxp
dC4qKg0KPiA+ICsgIEV0aGRldjogVGhlIGBgcmVzZXJ2ZWRgYCBmaWVsZCBpbiB0aGUgIGBgcnRl
X2V0aF9yeHNlZ19zcGxpdGBgDQo+ID4gK3N0cnVjdHVyZSBpcw0KPiA+ICsgIHJlcGxhY2VkIHdp
dGggYGBwcm90b19oZHJgYCB0byBzdXBwb3J0IHByb3RvY29sIGhlYWRlciBiYXNlZCBidWZmZXIg
c3BsaXQuDQo+ID4gKyAgVXNlciBjYW4gY2hvb3NlIGxlbmd0aCBvciBwcm90b2NvbCBoZWFkZXIg
dG8gY29uZmlndXJlIGJ1ZmZlciBzcGxpdA0KPiA+ICsgIGFjY29yZGluZyB0byBOSUMncyBjYXBh
YmlsaXR5Lg0KPiANCj4gQWRkIG9uZSBtb3JlIGVtcHR5IGxpbmUgdG8gaGF2ZSB0d28gYmVmb3Jl
IHRoZSBuZXh0IHNlY3RvaW4uDQoNClRoYW5rcyBmb3IgeW91ciBjYXRjaC4NCg0KPiANCj4gPg0K
PiA+ICAgUmVtb3ZlZCBJdGVtcw0KPiA+ICAgLS0tLS0tLS0tLS0tLQ0KPiA+IGRpZmYgLS1naXQg
YS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jIGluZGV4
DQo+ID4gMDkzYzU3N2FkZC4uZGZjZWI3MjNlZSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2
L3J0ZV9ldGhkZXYuYw0KPiA+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jDQo+ID4gQEAg
LTE2MzUsOSArMTYzNSwxMCBAQCBydGVfZXRoX2Rldl9pc19yZW1vdmVkKHVpbnQxNl90IHBvcnRf
aWQpDQo+ID4gICB9DQo+ID4NCj4gPiAgIHN0YXRpYyBpbnQNCj4gPiAtcnRlX2V0aF9yeF9xdWV1
ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0K
PiA+IC0JCQkgICAgIHVpbnQxNl90IG5fc2VnLCB1aW50MzJfdCAqbWJwX2J1Zl9zaXplLA0KPiA+
IC0JCQkgICAgIGNvbnN0IHN0cnVjdCBydGVfZXRoX2Rldl9pbmZvICpkZXZfaW5mbykNCj4gPiAr
cnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdCh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsJCQlj
b25zdCBzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0KPiA+ICsJCQl1aW50MTZf
dCBuX3NlZywgdWludDMyX3QgKm1icF9idWZfc2l6ZSwNCj4gPiArCQkJY29uc3Qgc3RydWN0IHJ0
ZV9ldGhfZGV2X2luZm8gKmRldl9pbmZvKQ0KPiA+ICAgew0KPiA+ICAgCWNvbnN0IHN0cnVjdCBy
dGVfZXRoX3J4c2VnX2NhcGEgKnNlZ19jYXBhID0gJmRldl9pbmZvLQ0KPiA+cnhfc2VnX2NhcGE7
DQo+ID4gICAJc3RydWN0IHJ0ZV9tZW1wb29sICptcF9maXJzdDsNCj4gPiBAQCAtMTY2MCw2ICsx
NjYxLDcgQEAgcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QNCj4gcnRl
X2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0KPiA+ICAgCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1w
bCA9IHJ4X3NlZ1tzZWdfaWR4XS5tcDsNCj4gPiAgIAkJdWludDMyX3QgbGVuZ3RoID0gcnhfc2Vn
W3NlZ19pZHhdLmxlbmd0aDsNCj4gPiAgIAkJdWludDMyX3Qgb2Zmc2V0ID0gcnhfc2VnW3NlZ19p
ZHhdLm9mZnNldDsNCj4gPiArCQl1aW50MzJfdCBwcm90b19oZHIgPSByeF9zZWdbc2VnX2lkeF0u
cHJvdG9faGRyOw0KPiA+DQo+ID4gICAJCWlmIChtcGwgPT0gTlVMTCkgew0KPiA+ICAgCQkJUlRF
X0VUSERFVl9MT0coRVJSLCAibnVsbCBtZW1wb29sIHBvaW50ZXJcbiIpOw0KPiBAQCAtMTY5Mywx
Mw0KPiA+ICsxNjk1LDQ0IEBAIHJ0ZV9ldGhfcnhfcXVldWVfY2hlY2tfc3BsaXQoY29uc3Qgc3Ry
dWN0DQo+IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgKnJ4X3NlZywNCj4gPiAgIAkJfQ0KPiA+ICAgCQlv
ZmZzZXQgKz0gc2VnX2lkeCAhPSAwID8gMCA6IFJURV9QS1RNQlVGX0hFQURST09NOw0KPiA+ICAg
CQkqbWJwX2J1Zl9zaXplID0gcnRlX3BrdG1idWZfZGF0YV9yb29tX3NpemUobXBsKTsNCj4gPiAt
CQlsZW5ndGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBfYnVmX3NpemU7DQo+ID4gLQkJ
aWYgKCptYnBfYnVmX3NpemUgPCBsZW5ndGggKyBvZmZzZXQpIHsNCj4gPiAtCQkJUlRFX0VUSERF
Vl9MT0coRVJSLA0KPiA+IC0JCQkJICAgICAgICIlcyBtYnVmX2RhdGFfcm9vbV9zaXplICV1IDwg
JXUNCj4gKHNlZ21lbnQgbGVuZ3RoPSV1ICsgc2VnbWVudCBvZmZzZXQ9JXUpXG4iLA0KPiA+IC0J
CQkJICAgICAgIG1wbC0+bmFtZSwgKm1icF9idWZfc2l6ZSwNCj4gPiAtCQkJCSAgICAgICBsZW5n
dGggKyBvZmZzZXQsIGxlbmd0aCwgb2Zmc2V0KTsNCj4gPiAtCQkJcmV0dXJuIC1FSU5WQUw7DQo+
ID4gKw0KPiA+ICsJCWludCByZXQgPQ0KPiBydGVfZXRoX2J1ZmZlcl9zcGxpdF9nZXRfc3VwcG9y
dGVkX2hkcl9wdHlwZXMocG9ydF9pZCwNCj4gPiArTlVMTCwgMCk7DQo+IA0KPiBEbyBub3QgbWl4
IHZhcmlhYmxlIGRlY2xhcmF0aW9uIGFuZCBjb2RlLg0KPiBJdCBpcyBiZXR0ZXIgdG8gZ2l2ZSB0
aGUgdmFyaWFibGUgc29tZSBzZW5zaWJsZSBuYW1lLg0KPiBPdGhlcndpc2UgZWxzZSBicmFuY2gg
Y29kZSBpcyBoYXJkIHRvIHJlYWQuDQoNClRoYW5rcyBmb3IgdGhlIHN1Z2dlc3Rpb24sIHdpbGwg
IHRha2UgY2FyZSBvZiBuYW1pbmcuDQoNCj4gDQo+ID4gKwkJaWYgKHJldCA8PSAwKSB7DQo+IA0K
PiBNYXkgYmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBidXQgbm90aGluZyBwcmV2ZXRucyBhIGRy
aXZlci9IVyB0byBzdXBwb3J0DQo+IGJvdGggcHJvdG9jb2wtYmFzZWQgYW5kIGZpeGVkLWxlbmd0
aCBzcGxpdC4NCj4gU28sIGFiaWxpdHkgdG8gc3VwcG9ydCBwcm90b2NvbCBiYXNlZCBzcGxpdCBz
aG91bGQgYmUgdHJlYXRlZCBhcyBhIHJlcXVlc3QgdG8NCj4gZG8gaXQuIEl0IG11c3QgYmUgYmFz
ZWQgb24gcnhfc2VnLT5wcm90b19oZHIgY29udGVudCAoZm9yIGFsbCBzZWdtZW50cykuDQo+IA0K
PiBBbHNvIG5vdGhpbmcgc2hvdWxkIHByZXZlbnQgdG8gbWl4IHByb3RvY29sIGFuZCBmaXhlZC1s
ZW5ndGggc3BsaXQuIEkuZS4gc3BsaXQNCj4ganVzdCBhZnRlciBVRFAgaW4gdGhlIGZpcnN0IHNl
Z21lbnQsDQo+IDQwIGJ5dGVzIGluIHRoZSBzZWNvbmQgc2VnbWVudCwgZXZlcnl0aGluZyBlbHNl
IGluIHRoZSB0aGlyZC4NCg0KTWl4IG1vZGUgaXMgYW4gaW50ZXJlc3RpbmcgaWRlYS4gQ3VycmVu
dGx5IHRlc3RwbWQgYW5kIGRyaXZlciBkbyBub3Qgc3VwcG9ydCBtaXhlZCBtb2RlLCBidXQgaXQg
ZG9lcyBub3QgYWZmZWN0IHRoZSBsaWJyYXJ5IHRvIHN1cHBvcnQgdGhpcyBtb2RlLg0KDQo+IA0K
PiA+ICsJCQkvKiBTcGxpdCBhdCBmaXhlZCBsZW5ndGguICovDQo+ID4gKwkJCWxlbmd0aCA9IGxl
bmd0aCAhPSAwID8gbGVuZ3RoIDogKm1icF9idWZfc2l6ZTsNCj4gPiArCQkJaWYgKCptYnBfYnVm
X3NpemUgPCBsZW5ndGggKyBvZmZzZXQpIHsNCj4gPiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwN
Cj4gPiArCQkJCQkiJXMgbWJ1Zl9kYXRhX3Jvb21fc2l6ZSAldSA8ICV1DQo+IChzZWdtZW50IGxl
bmd0aD0ldSArIHNlZ21lbnQgb2Zmc2V0PSV1KVxuIiwNCj4gPiArCQkJCQltcGwtPm5hbWUsICpt
YnBfYnVmX3NpemUsDQo+ID4gKwkJCQkJbGVuZ3RoICsgb2Zmc2V0LCBsZW5ndGgsIG9mZnNldCk7
DQo+ID4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQkJfQ0KPiA+ICsJCX0gZWxzZSB7DQo+
ID4gKwkJCS8qIFNwbGl0IGFmdGVyIHNwZWNpZmllZCBwcm90b2NvbCBoZWFkZXIuICovDQo+ID4g
KwkJCXVpbnQzMl90IHB0eXBlc1tyZXRdOw0KPiA+ICsJCQlpbnQgaTsNCj4gPiArDQo+ID4gKwkJ
CXJldCA9DQo+IHJ0ZV9ldGhfYnVmZmVyX3NwbGl0X2dldF9zdXBwb3J0ZWRfaGRyX3B0eXBlcyhw
b3J0X2lkLA0KPiA+ICtwdHlwZXMsIHJldCk7DQo+IA0KPiBJbiB0aGVvcnksIHRoZSBmdW5jaXRv
biBjb3VsZCBmYWlsIHNpbmNlIGlucHV0IGFyZ3VtZW50cyBkaWZmZXIuIFNvLCBpdCBzaG91bGQg
YmUNCj4gaGFuZGxlZC4NCg0KVGhhbmtzIGZvciB5b3VyIGNhdGNoLCB3aWxsIGZpeCBpbiB0aGUg
bmV4dCB2ZXJzaW9uLg0KDQo+IA0KPiA+ICsJCQlmb3IgKGkgPSAwOyBpIDwgcmV0OyBpKyspDQo+
ID4gKwkJCQlpZiAocHR5cGVzW2ldICYgcHJvdG9faGRyKQ0KPiANCj4gSU1ITyBpdCBzaG91bGQg
YmUgPT0sIG5vdCAmLiBJIHRoaW5rIHRoYXQNCj4gcnRlX2V0aF9idWZmZXJfc3BsaXRfZ2V0X3N1
cHBvcnRlZF9oZHJfcHR5cGVzKCkgc2hvdWxkIGRlZmluZSBwb2ludHMgYXQNCj4gd2hpY2ggc3Bs
aXQgY291bGQgaGFwcGVuIGFuZCB3ZSBzaG91bGQgbWF0Y2ggdGhlIHBvaW50IGV4YWN0bHkuDQoN
ClN1cmUsID09IGlzIGJldHRlci4gVGhhbmtzIGZvciB0aGUgc3VnZ2VzdGlvbi4NCg0KPiANCj4g
PiArCQkJCQlicmVhazsNCj4gPiArDQo+ID4gKwkJCWlmIChpID09IHJldCkgew0KPiA+ICsjZGVm
aW5lIFBUWVBFX05BTUVTSVpFCTI1Ng0KPiANCj4gV2h5PyBJdCBpcyBsb29rcyByZWFsbHkgc3Ry
YW5nZSB0aGF0IGl0IGlzIGRlZmluZWQgaGVyZS4NCg0KSSBpbnRlbmQgdG8gZGlzcGxheSB0aGUg
cHJvdG9jb2wgbmFtZSBpbiB0aGUgbG9nLCBidXQgaWYgdGhlIHByb3RvX2hkciBpcyBhIGJpdCBt
YXNrLCBjYW4gSSBqdXN0IHNob3cgdGhlIG51bWJlcj8NClBsZWFzZSBzZWUgdjQgZm9yIHRoaXMg
bW9kaWZpY2F0aW9uLg0KDQo+IA0KPiA+ICsJCQkJY2hhciBwdHlwZV9uYW1lW1BUWVBFX05BTUVT
SVpFXTsNCj4gPiArCQkJCXJ0ZV9nZXRfcHR5cGVfbmFtZShwcm90b19oZHIsDQo+IHB0eXBlX25h
bWUsIHNpemVvZihwdHlwZV9uYW1lKSk7DQo+ID4gKwkJCQlSVEVfRVRIREVWX0xPRyhFUlIsDQo+
ID4gKwkJCQkJIlByb3RvY29sIGhlYWRlciAlcyBpcyBub3QNCj4gc3VwcG9ydGVkLlxuIiwNCj4g
PiArCQkJCQlwdHlwZV9uYW1lKTsNCj4gPiArCQkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCQl9
DQo+ID4gKwkJCWlmICgqbWJwX2J1Zl9zaXplIDwgb2Zmc2V0KSB7DQo+ID4gKwkJCQlSVEVfRVRI
REVWX0xPRyhFUlIsDQo+ID4gKwkJCQkJCSIlcw0KPiBtYnVmX2RhdGFfcm9vbV9zaXplICV1IDwg
JXUgc2VnbWVudCBvZmZzZXQpXG4iLA0KPiA+ICsJCQkJCQltcGwtPm5hbWUsICptYnBfYnVmX3Np
emUsDQo+ID4gKwkJCQkJCW9mZnNldCk7DQo+ID4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAr
CQkJfQ0KPiA+ICAgCQl9DQo+ID4gICAJfQ0KPiA+ICAgCXJldHVybiAwOw0KPiA+IEBAIC0xNzc4
LDcgKzE4MTEsNyBAQCBydGVfZXRoX3J4X3F1ZXVlX3NldHVwKHVpbnQxNl90IHBvcnRfaWQsDQo+
IHVpbnQxNl90IHJ4X3F1ZXVlX2lkLA0KPiA+ICAgCQluX3NlZyA9IHJ4X2NvbmYtPnJ4X25zZWc7
DQo+ID4NCj4gPiAgIAkJaWYgKHJ4X2NvbmYtPm9mZmxvYWRzICYNCj4gUlRFX0VUSF9SWF9PRkZM
T0FEX0JVRkZFUl9TUExJVCkgew0KPiA+IC0JCQlyZXQgPSBydGVfZXRoX3J4X3F1ZXVlX2NoZWNr
X3NwbGl0KHJ4X3NlZywgbl9zZWcsDQo+ID4gKwkJCXJldCA9IHJ0ZV9ldGhfcnhfcXVldWVfY2hl
Y2tfc3BsaXQocG9ydF9pZCwgcnhfc2VnLA0KPiBuX3NlZywNCj4gPiAgIAkJCQkJCQkgICAmbWJw
X2J1Zl9zaXplLA0KPiA+ICAgCQkJCQkJCSAgICZkZXZfaW5mbyk7DQo+ID4gICAJCQlpZiAocmV0
ICE9IDApDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oIGIvbGliL2V0
aGRldi9ydGVfZXRoZGV2LmggaW5kZXgNCj4gPiBjNThjOTA4YzNhLi40MTBmYmE1ZWFiIDEwMDY0
NA0KPiA+IC0tLSBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ID4gKysrIGIvbGliL2V0aGRl
di9ydGVfZXRoZGV2LmgNCj4gPiBAQCAtMTE3NSw2ICsxMTc1LDkgQEAgc3RydWN0IHJ0ZV9ldGhf
dHhtb2RlIHsNCj4gPiAgICAqICAgc3BlY2lmaWVkIGluIHRoZSBmaXJzdCBhcnJheSBlbGVtZW50
LCB0aGUgc2Vjb25kIGJ1ZmZlciwgZnJvbSB0aGUNCj4gPiAgICAqICAgcG9vbCBpbiB0aGUgc2Vj
b25kIGVsZW1lbnQsIGFuZCBzbyBvbi4NCj4gPiAgICAqDQo+ID4gKyAqIC0gVGhlIHByb3RvX2hk
cnMgaW4gdGhlIGVsZW1lbnRzIGRlZmluZSB0aGUgc3BsaXQgcG9zaXRpb24gb2YNCj4gPiArICog
ICByZWNlaXZlZCBwYWNrZXRzLg0KPiA+ICsgKg0KPiA+ICAgICogLSBUaGUgb2Zmc2V0cyBmcm9t
IHRoZSBzZWdtZW50IGRlc2NyaXB0aW9uIGVsZW1lbnRzIHNwZWNpZnkNCj4gPiAgICAqICAgdGhl
IGRhdGEgb2Zmc2V0IGZyb20gdGhlIGJ1ZmZlciBiZWdpbm5pbmcgZXhjZXB0IHRoZSBmaXJzdCBt
YnVmLg0KPiA+ICAgICogICBUaGUgZmlyc3Qgc2VnbWVudCBvZmZzZXQgaXMgYWRkZWQgd2l0aCBS
VEVfUEtUTUJVRl9IRUFEUk9PTS4NCj4gPiBAQCAtMTE5NiwxMiArMTE5OSwyNCBAQCBzdHJ1Y3Qg
cnRlX2V0aF90eG1vZGUgew0KPiA+ICAgICogICAgIC0gcG9vbCBmcm9tIHRoZSBsYXN0IHZhbGlk
IGVsZW1lbnQNCj4gPiAgICAqICAgICAtIHRoZSBidWZmZXIgc2l6ZSBmcm9tIHRoaXMgcG9vbA0K
PiA+ICAgICogICAgIC0gemVybyBvZmZzZXQNCj4gPiArICoNCj4gPiArICogLSBMZW5ndGggYmFz
ZWQgYnVmZmVyIHNwbGl0Og0KPiA+ICsgKiAgICAgLSBtcCwgbGVuZ3RoLCBvZmZzZXQgc2hvdWxk
IGJlIGNvbmZpZ3VyZWQuDQo+ID4gKyAqICAgICAtIFRoZSBwcm90b19oZHIgZmllbGQgd2lsbCBi
ZSBpZ25vcmVkLg0KPiA+ICsgKg0KPiA+ICsgKiAtIFByb3RvY29sIGhlYWRlciBiYXNlZCBidWZm
ZXIgc3BsaXQ6DQo+ID4gKyAqICAgICAtIG1wLCBvZmZzZXQsIHByb3RvX2hkciBzaG91bGQgYmUg
Y29uZmlndXJlZC4NCj4gPiArICogICAgIC0gVGhlIGxlbmd0aCBmaWVsZCB3aWxsIGJlIGlnbm9y
ZWQuDQo+ID4gICAgKi8NCj4gPiAgIHN0cnVjdCBydGVfZXRoX3J4c2VnX3NwbGl0IHsNCj4gPiAg
IAlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wOyAvKio8IE1lbW9yeSBwb29sIHRvIGFsbG9jYXRlIHNl
Z21lbnQNCj4gZnJvbS4gKi8NCj4gPiAgIAl1aW50MTZfdCBsZW5ndGg7IC8qKjwgU2VnbWVudCBk
YXRhIGxlbmd0aCwgY29uZmlndXJlcyBzcGxpdCBwb2ludC4gKi8NCj4gPiAgIAl1aW50MTZfdCBv
ZmZzZXQ7IC8qKjwgRGF0YSBvZmZzZXQgZnJvbSBiZWdpbm5pbmcgb2YgbWJ1ZiBkYXRhIGJ1ZmZl
ci4NCj4gKi8NCj4gPiAtCXVpbnQzMl90IHJlc2VydmVkOyAvKio8IFJlc2VydmVkIGZpZWxkLiAq
Lw0KPiA+ICsJLyoqDQo+ID4gKwkgKiBTdXBwb3J0ZWQgcHR5cGUgb2YgYSBzcGVjaWZpYyBwbWQs
IGNvbmZpZ3VyZXMgc3BsaXQgcG9pbnQuDQo+ID4gKwkgKiBJdCBzaG91bGQgYmUgZGVmaW5lZCBi
eSBSVEVfUFRZUEVfKi4NCj4gPiArCSAqLw0KPiA+ICsJdWludDMyX3QgcHJvdG9faGRyOw0KPiA+
ICAgfTsNCj4gPg0KPiA+ICAgLyoqDQoNCg==