From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D0E26A0543; Tue, 4 Oct 2022 04:48:59 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6715940DFB; Tue, 4 Oct 2022 04:48:59 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id 2D89A40A87 for ; Tue, 4 Oct 2022 04:48:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1664851737; x=1696387737; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=hBJm5x1HQ23F4iJN/uwo/gmZjompZkqG6qBuGShap84=; b=UnXeWO1U4XnwKtq9qs4MRidADVN4NbOn/VX6Xk2E9DL3PTXxwwcBVZhX VLofO9yzA421uLzVygFj4VfrHPR/yA4nYUmgP9FaMvPoSIRi1V4IBQCzM LKk4w69LGBRuxScpRT+Y/To6n05BcZWGNITu76NchOvoAnaJqoQhQOfSl U6IzXUTClr5B+yrAagK/kQJoTyJYl+h+Fn62jhNvK/Bm8IjK+W1OyE++V SKDhSiScLyFHG6Uhrcm3Vnjf/Ftb0kJ+fP0Uvpi808qyG6Ndb7K3NGXpb 7BDfewNcYCWgfIpfHQy5YTDhnV5pZGhpwjdKuRMqGXKwG6YhLLWi7gWbp Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10489"; a="283180642" X-IronPort-AV: E=Sophos;i="5.93,366,1654585200"; d="scan'208";a="283180642" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Oct 2022 19:48:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10489"; a="712858515" X-IronPort-AV: E=Sophos;i="5.93,366,1654585200"; d="scan'208";a="712858515" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by FMSMGA003.fm.intel.com with ESMTP; 03 Oct 2022 19:48:55 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 3 Oct 2022 19:48:55 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Mon, 3 Oct 2022 19:48:55 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.173) 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; Mon, 3 Oct 2022 19:48:54 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T4MRZLe36X6m7u1tCHrOqYv9ixYrXtQ7HZslFAvdaUqjJHo22maySppLHLSvlfJeMYVI1qdVU6lE0wQyWNb7qwnHaRAPQHgLmGKs/URDqskaXDnKaGyvWCWnOqXQO2uF/8r1PRlrEkgvNuBK2dyV+Htnp8giSadmANJPydf6iMwdWp75SGe4pW95Yzez2HW3SkU6e2uztN2tmMRF8ye54lXdA7aC5L0cZbu2XKNJoLF70zO3ZZNk1SbiK6h/QQTrvaaNAfT84xtSJ58fclneovQJ0gjKbhsfNaiI1CdCd3wN/dIcywjeoduYpT0QmXAsFo67BxpNi1V7AO5zBuYQvA== 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=hBJm5x1HQ23F4iJN/uwo/gmZjompZkqG6qBuGShap84=; b=g6ZSUMhWbeQQg42rC3EG0XLdVLUYUwURruwS9fNzwZNc9/H6GfwGIegSSDp9qVJidaVy1cLSLYZ7o8bs58xGPnRt1PrCezivq7ePupEVcsR+ZBGfpAqiDhPn/y/WUGr5p3syNraFguQF4XTs2LoWUBwQaM6fMECCoGfIanILcmTb+6EN+K8VWQV67G/YPuKNWw35T9tPOmiFPHAZVyBE7dhH5UAIyuW/w6rpEDChWfJHO5tBLjOlAUCXABkOyxw/tisXpfbNuof5dn+Ib1KNgB5MUAIc8tG1apswf4dSm6Jk1VEkpfAGo2INO6A6hDk/pfEP3VNrBNn3FwHXKeXlvw== 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 PH0PR11MB5641.namprd11.prod.outlook.com (2603:10b6:510:d6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Tue, 4 Oct 2022 02:48:52 +0000 Received: from PH7PR11MB6953.namprd11.prod.outlook.com ([fe80::b4ae:1525:a457:6ad6]) by PH7PR11MB6953.namprd11.prod.outlook.com ([fe80::b4ae:1525:a457:6ad6%9]) with mapi id 15.20.5654.020; Tue, 4 Oct 2022 02:48:52 +0000 From: "Wang, YuanX" To: Andrew Rybchenko , "dev@dpdk.org" , Thomas Monjalon , Ferruh Yigit CC: "ferruh.yigit@xilinx.com" , "mdr@ashroe.eu" , "Li, Xiaoyun" , "Singh, Aman Deep" , "Zhang, Yuying" , "Zhang, Qi Z" , "Yang, Qiming" , "jerinjacobk@gmail.com" , "viacheslavo@nvidia.com" , "stephen@networkplumber.org" , "Ding, Xuan" , "hpothula@marvell.com" , "Tang, Yaqi" Subject: RE: [PATCH v7 2/4] ethdev: introduce protocol hdr based buffer split Thread-Topic: [PATCH v7 2/4] ethdev: introduce protocol hdr based buffer split Thread-Index: AQHY1ZhlXaioO8sLvUaSg1zago8hm638TX+AgAE3VjA= Date: Tue, 4 Oct 2022 02:48:52 +0000 Message-ID: References: <20220812181552.2908067-1-yuanx.wang@intel.com> <20221001210521.15955-1-yuanx.wang@intel.com> <20221001210521.15955-3-yuanx.wang@intel.com> <29eb4f17-30a1-fff8-7be4-0092dbd79f5c@oktetlabs.ru> In-Reply-To: <29eb4f17-30a1-fff8-7be4-0092dbd79f5c@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_|PH0PR11MB5641:EE_ x-ms-office365-filtering-correlation-id: 2d8c8eed-757d-4771-243e-08daa5b2f906 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kkchK+2nxfUXVFxu0PmjDL/MTNVRJEXPYJbAqHKMGIsJt9U4bRj+tlfyxJcTp6ZcWQIXxD/0/PvYO7z2cHfRcq1hEks3V1lN6er4a0SFgM9CFlM9kI4EnfC4FlARdJ0L9X/l0Y2L4c85K7/4xcpFm+X4COmklutSqJd8gPgWZDAHgI5Jo98pQD379tfXmpd5eLo7EUTBrSJ/YfV0x1mySJ0J88cthKSiwvjgZQdmtGH4ETPcfPiyI1bNHX3Yh1/a7H6ALBNjbstV7mfyFDHCEMBgFOo7+wZ3YdjpIWKTwPMap8A3PsUHVC7ezLbCuehtKFsZGKOyY/jzDajsZFCIfy8yENyHoEpF/EagKGsbEdm5SPLQ8u3CAbppkqLaH0GLlKlsh3/ZcxhH30ONauL7vXOnPN30UMvzsK9EVAlFs8A/+uMkl0qS2rjk9dqtV4PABmfN0NPcJrxgpk9pd3TW0EiCRAASf5YoVTkUHlenj8NthUu7XJTTuvj2578EZuDMPQEQQJpf30J3tq7ZmMspRe1ws2qWUAotTAW+qI7TVvWJJPKo4Hy2A2dmT46zbuSXXhk28gRe4eo1AaqjvGw0XeCzExj/FbTZIZGdclmbngKTXHXi1qwx2QX3BLjfBVbsx6aR9Ope2E2eI554cIqgSzHs+TfoyhDwpk8DXC4gMcYafoYojn4BZxCpiS+uhs9N5jmuAFSEtEo2cqj5pTEf3fBPjSdX5reGrEqPwSgSU1wQvdDWpllZXTFbvcNacAuYTMk3D/7bRakYaD0z8mL4iA== 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)(366004)(396003)(346002)(39860400002)(376002)(136003)(451199015)(83380400001)(33656002)(107886003)(53546011)(86362001)(5660300002)(66946007)(76116006)(4326008)(66556008)(66476007)(66446008)(64756008)(8936002)(41300700001)(6506007)(7696005)(55016003)(38070700005)(38100700002)(122000001)(82960400001)(478600001)(26005)(186003)(2906002)(110136005)(30864003)(52536014)(7416002)(9686003)(316002)(71200400001)(54906003)(8676002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d0drUlpxTCtDOEp5ajRZUXlWQU8vL1VFY1lERXdHOXNPM0o3dDd5VEEyNzE1?= =?utf-8?B?ZVY0MGFoZk50Q1RpeU5ZZlkzVGV2VE10bWxOZmcxS0daK3oyd3lLRUNOWWFw?= =?utf-8?B?bUFWRjdhY1FyMnJSdjdrWmtuRTYxa29ZbzV6clZURkNUK1lBVk9odEtrL2Y4?= =?utf-8?B?NFdaeWpYcG8xWC9Bbkl6T2pSVHpUUGZ1Nm9rTXQ2eEkrL1dlQlQvT0pPempB?= =?utf-8?B?d0xDM2x1Yml3alZYbnhOOThpR0lzVzRVeUxSd1BhUWlKZU9kV2l2QXdzemUy?= =?utf-8?B?Skh6VC90aHZWenNTM0dUQ0JiR2gxdXl0TjkxaExsUC9TRnovc3h3TlB5b0pz?= =?utf-8?B?Nml1YUdCdGNzOHJ3aUkxWUM4Y3hGTlY2amFuKytjZ29GeDlRd2FnLy9jdEpF?= =?utf-8?B?MU8rSmMyYXFxOFlIcUZsRXF3Qjk3U0ZqeDhkSkMvU24yT2YrVFR4b2UxU01v?= =?utf-8?B?encxdDJGNlcwMW1ZWXNNWVBCZkVYb0xQd0drSEpIaEF0UGRkN3N0cHA0Sk80?= =?utf-8?B?RXB0U3NQWVZLcUQ3dHNTc3lYcDIxSnJTQUNMaEFoZ3lIU0Z6MWdrTzNuZnpQ?= =?utf-8?B?SGFTZzNNdDdvRjhQT0w0Q3lDNDRGdGNnODJHTGNrTGgzU1JxK2lleHlzNkZk?= =?utf-8?B?TGh2YzYxU1o1L3Vpd2g5R2UxeFFRdS9mTUgyRlYza2Q0LzZoTUtPL2JpT2FK?= =?utf-8?B?YUFuajRHaW5IQ3hGV0tKcHRJVldOM1lvek4zTjVtM3lxV21tSWVOSGNGb01I?= =?utf-8?B?dnp0K1hMYUM3VFFiMWtBeUZjU3pxa21zdnFMNUZKRkFiT1dTT01zVmpHOUNM?= =?utf-8?B?NWtjVUxZdTFFNnhOT1E0VU42K0g5dkYwdHVlRXdVZnBkUkxTWU1sK29rR0NF?= =?utf-8?B?M0Erc21uSmFQYys4NTUxWWpoRkZKaExQMVlQNmxSd0NJZ0JrUmU0KzhoTVZQ?= =?utf-8?B?R0JNQ3E4MmZ1L0F4UWxESFlIb3V4aUdiMndzOENDTGRlZ003RDhWUTI3cHVR?= =?utf-8?B?b0VIc25PTTNsempsbCtaUXlrdkZXcVNZZ1A2WFhxOFkxMC9pU1lkQjh0QlRO?= =?utf-8?B?aXExVkNOZkIrWWFqZXpPWGI2UmlpTUNZa1dNOEh0eUFEdzFHNS84SkRuMEoz?= =?utf-8?B?Z0FXNStsNDJMc25xNXF3LzNKa2puU3FuOVZqTW5oOWFuWXJmUkM0aWdwem4x?= =?utf-8?B?V1RrVFBXeG1sUTN2VWh0U0swbU5zMHBpanNJekJHRURvU3VRS2tETVpXNEFM?= =?utf-8?B?Sysya3lnMFNBQVd2dWxlc3o5SmNrZXp5Z01sbU1relRpUTN2RTl3UlkvN3NC?= =?utf-8?B?YUtHNWpFMkJadDdxMHV0dWZ1aVRZZkF4TWZZWXMxamJRUm1CaFJHZy9yZ1lN?= =?utf-8?B?NklFd0ZOVW54UitWbWZOZGRWYkhTQk9TQ1EwalJ2eG4wNTZ5TldyaWt1OGhz?= =?utf-8?B?aElPUjEwclVJWUI2TFdGazFJaXQ2SUxFMzQveStlL2F1ZEhMNXcyME9mRGVZ?= =?utf-8?B?SU9PdUpIL1htTVV1OWFFcStrUEZMYWVlbEZSekRnTVdlWnBCZm9aRmlCU0gw?= =?utf-8?B?RTBqVmIrZ0JDMW1XOU5GRzlMdzJXTW9QdE04SWR1d0M3WFIreHZUQ2pucnZa?= =?utf-8?B?QllObWJSS3M4NzBXTzlDaGZHV3RSOERsa0RZbFpCQVdVL25EdFE4anQxT00v?= =?utf-8?B?dERodVVrK3FmWnBGanBlR0FlZytoUWlBSmYvTEJJQmt2cWlHakJYdFlsNGtG?= =?utf-8?B?b0hhNi9heUZrUW11MjQzV3h3alVTWE82d3BxWU9RenFkUlFxNFFPbjRUVlBD?= =?utf-8?B?cUthTlZsRCtGVkRnNGFMSUl2TjY3eXVSNnZlaldzSHRWYnlYMU9BYnhCeFgy?= =?utf-8?B?ejdGYU1iMmtNbzBEWmkyQ0VZRVlYMnU1NkZTb2VHZGwzSkxVREIvL3pPNlpv?= =?utf-8?B?dEpKV3Mrei93eE9qZ0Fpc21zOG4wUksxUVByRjdOU2JOVWV6UjR1WkR0Q3JH?= =?utf-8?B?SFdCcHpUTlorYmZNUWhXNnR1ZS9SWTRPSDJOa1lER3hJU2UxOFhORU1lOC81?= =?utf-8?B?bWkvTjUwME03NUx4bnpqOGhxV3N4dkoyQi9qYnJXZ2QrMm5iTEhOa3piYlJ4?= =?utf-8?Q?453t7OU+hdboBiPwthtRNpENH?= 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: 2d8c8eed-757d-4771-243e-08daa5b2f906 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Oct 2022 02:48:52.6568 (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: 7/ZELeDaTM1Jw5VkFip5qUoClO7ioH6dQ8/jY9f7ZY8sq0RGVLFggzfXebbCJ3F/lANyEszd1WsT+dM8ywO+3A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5641 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBNb25k YXksIE9jdG9iZXIgMywgMjAyMiAzOjQ3IFBNDQo+IFRvOiBXYW5nLCBZdWFuWCA8eXVhbngud2Fu Z0BpbnRlbC5jb20+OyBkZXZAZHBkay5vcmc7IFRob21hcw0KPiBNb25qYWxvbiA8dGhvbWFzQG1v bmphbG9uLm5ldD47IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QGFtZC5jb20+DQo+IENjOiBm ZXJydWgueWlnaXRAeGlsaW54LmNvbTsgbWRyQGFzaHJvZS5ldTsgTGksIFhpYW95dW4NCj4gPHhp YW95dW4ubGlAaW50ZWwuY29tPjsgU2luZ2gsIEFtYW4gRGVlcCA8YW1hbi5kZWVwLnNpbmdoQGlu dGVsLmNvbT47DQo+IFpoYW5nLCBZdXlpbmcgPHl1eWluZy56aGFuZ0BpbnRlbC5jb20+OyBaaGFu ZywgUWkgWg0KPiA8cWkuei56aGFuZ0BpbnRlbC5jb20+OyBZYW5nLCBRaW1pbmcgPHFpbWluZy55 YW5nQGludGVsLmNvbT47DQo+IGplcmluamFjb2JrQGdtYWlsLmNvbTsgdmlhY2hlc2xhdm9AbnZp ZGlhLmNvbTsNCj4gc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc7IERpbmcsIFh1YW4gPHh1YW4u ZGluZ0BpbnRlbC5jb20+Ow0KPiBocG90aHVsYUBtYXJ2ZWxsLmNvbTsgVGFuZywgWWFxaSA8eWFx aS50YW5nQGludGVsLmNvbT47IFdlbnh1YW4gV3UNCj4gPHdlbnh1YW54Lnd1QGludGVsLmNvbT4N Cj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NyAyLzRdIGV0aGRldjogaW50cm9kdWNlIHByb3RvY29s IGhkciBiYXNlZCBidWZmZXIgc3BsaXQNCj4gDQo+IE9uIDEwLzIvMjIgMDA6MDUsIFl1YW4gV2Fu ZyB3cm90ZToNCj4gPiBDdXJyZW50bHksIFJ4IGJ1ZmZlciBzcGxpdCBzdXBwb3J0cyBsZW5ndGgg YmFzZWQgc3BsaXQuIFdpdGggUnggcXVldWUNCj4gPiBvZmZsb2FkIFJURV9FVEhfUlhfT0ZGTE9B RF9CVUZGRVJfU1BMSVQgZW5hYmxlZCBhbmQgUnggcGFja2V0DQo+IHNlZ21lbnQNCj4gPiBjb25m aWd1cmVkLCBQTUQgd2lsbCBiZSBhYmxlIHRvIHNwbGl0IHRoZSByZWNlaXZlZCBwYWNrZXRzIGlu dG8NCj4gPiBtdWx0aXBsZSBzZWdtZW50cy4NCj4gPg0KPiA+IEhvd2V2ZXIsIGxlbmd0aCBiYXNl ZCBidWZmZXIgc3BsaXQgaXMgbm90IHN1aXRhYmxlIGZvciBOSUNzIHRoYXQgZG8NCj4gPiBzcGxp dCBiYXNlZCBvbiBwcm90b2NvbCBoZWFkZXJzLiBHaXZlbiBhbiBhcmJpdHJhcmlseSB2YXJpYWJs ZSBsZW5ndGgNCj4gPiBpbiBSeCBwYWNrZXQgc2VnbWVudCwgaXQgaXMgYWxtb3N0IGltcG9zc2li bGUgdG8gcGFzcyBhIGZpeGVkIHByb3RvY29sDQo+ID4gaGVhZGVyIHRvIGRyaXZlci4gQmVzaWRl cywgdGhlIGV4aXN0ZW5jZSBvZiB0dW5uZWxpbmcgcmVzdWx0cyBpbiB0aGUNCj4gPiBjb21wb3Np dGlvbiBvZiBhIHBhY2tldCBpcyB2YXJpb3VzLCB3aGljaCBtYWtlcyB0aGUgc2l0dWF0aW9uIGV2 ZW4gd29yc2UuDQo+ID4NCj4gPiBUaGlzIHBhdGNoIGV4dGVuZHMgY3VycmVudCBidWZmZXIgc3Bs aXQgdG8gc3VwcG9ydCBwcm90b2NvbCBoZWFkZXINCj4gPiBiYXNlZCBidWZmZXIgc3BsaXQuIEEg bmV3IHByb3RvX2hkciBmaWVsZCBpcyBpbnRyb2R1Y2VkIGluIHRoZQ0KPiA+IHJlc2VydmVkIGZp ZWxkIG9mIHJ0ZV9ldGhfcnhzZWdfc3BsaXQgc3RydWN0dXJlIHRvIHNwZWNpZnkgcHJvdG9jb2wN Cj4gPiBoZWFkZXIuIFRoZSBwcm90b19oZHIgZmllbGQgZGVmaW5lcyB0aGUgc3BsaXQgcG9zaXRp b24gb2YgcGFja2V0LA0KPiA+IHNwbGl0dGluZyB3aWxsIGFsd2F5cyBoYXBwZW4gYWZ0ZXIgdGhl IHByb3RvY29sIGhlYWRlciBkZWZpbmVkIGluIHRoZQ0KPiA+IFJ4IHBhY2tldCBzZWdtZW50LiBX aGVuIFJ4IHF1ZXVlIG9mZmxvYWQNCj4gPiBSVEVfRVRIX1JYX09GRkxPQURfQlVGRkVSX1NQTElU IGlzIGVuYWJsZWQgYW5kIGNvcnJlc3BvbmRpbmcNCj4gcHJvdG9jb2wNCj4gPiBoZWFkZXIgaXMg Y29uZmlndXJlZCwgZHJpdmVyIHdpbGwgc3BsaXQgdGhlIGluZ3Jlc3MgcGFja2V0cyBpbnRvIG11 bHRpcGxlDQo+IHNlZ21lbnRzLg0KPiA+DQo+ID4gRXhhbXBsZXMgZm9yIHByb3RvX2hkciBmaWVs ZCBkZWZpbmVzOg0KPiA+IFRvIHNwbGl0IGFmdGVyIEVUSC1JUFY0LVVEUCwgaXQgc2hvdWxkIGJl IGRlZmluZWQgYXMNCj4gPiBSVEVfUFRZUEVfTDJfRVRIRVIgfCBSVEVfUFRZUEVfTDNfSVBWNF9F WFRfVU5LTk9XTiB8DQo+IFJURV9QVFlQRV9MNF9VRFANCj4gPg0KPiA+IEZvciBpbm5lciBFVEgt SVBWNC1VRFAsIGl0IHNob3VsZCBiZSBkZWZpbmVkIGFzDQo+ID4gUlRFX1BUWVBFX1RVTk5FTF9H UkVOQVQgfCBSVEVfUFRZUEVfSU5ORVJfTDJfRVRIRVIgfA0KPiA+IFJURV9QVFlQRV9JTk5FUl9M M19JUFY0X0VYVF9VTktOT1dOIHwgUlRFX1BUWVBFX0lOTkVSX0w0X1VEUA0KPiA+DQo+ID4gc3Ry dWN0IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgew0KPiA+ICAgICAgICAgIHN0cnVjdCBydGVfbWVtcG9v bCAqbXA7IC8qIG1lbW9yeSBwb29scyB0byBhbGxvY2F0ZSBzZWdtZW50IGZyb20NCj4gKi8NCj4g PiAgICAgICAgICB1aW50MTZfdCBsZW5ndGg7IC8qIHNlZ21lbnQgbWF4aW1hbCBkYXRhIGxlbmd0 aCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgc3BsaXQgcG9p bnQgKi8NCj4gPiAgICAgICAgICB1aW50MTZfdCBvZmZzZXQ7IC8qIGRhdGEgb2Zmc2V0IGZyb20g YmVnaW5uaW5nDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBtYnVmIGRhdGEg YnVmZmVyICovDQo+ID4gICAgICAgICAgLyoqDQo+ID4gCSAqIFByb3RvX2hkciBkZWZpbmVzIGEg Yml0IG1hc2sgb2YgdGhlIHByb3RvY29sIHNlcXVlbmNlIGFzDQo+ID4gICAgICAgICAgICogUlRF X1BUWVBFXyosIGNvbmZpZ3VyZXMgc3BsaXQgcG9pbnQuIFRoZSBsYXN0IFJURV9QVFlQRSoNCj4g PiAgICAgICAgICAgKiBpbiB0aGUgbWFzayBpbmRpY2F0ZXMgdGhlIHNwbGl0IHBvc2l0aW9uLg0K PiA+IAkgKiBGb3Igbm9uLXR1bm5lbGluZyBwYWNrZXRzLCB0aGUgY29tcGxldGUgcHJvdG9jb2wg c2VxdWVuY2UNCj4gPiAgICAgICAgICAgKiBzaG91bGQgYmUgZGVmaW5lZC4NCj4gPiAJICogRm9y IHR1bm5lbGluZyBwYWNrZXRzLCBmb3Igc2ltcGxpY2l0eSwgb25seSB0aGUgdHVubmVsIGFuZA0K PiA+ICAgICAgICAgICAqIGlubmVyIHByb3RvY29sIHNlcXVlbmNlIHNob3VsZCBiZSBkZWZpbmVk Lg0KPiA+IAkgKi8NCj4gPiAgICAgICAgICB1aW50MzJfdCBwcm90b19oZHI7DQo+ID4gfTsNCj4g Pg0KPiA+IElmIHByb3RvY29sIGhlYWRlciBzcGxpdCBjYW4gYmUgc3VwcG9ydGVkIGJ5IGEgUE1E LCB0aGUNCj4gPiBydGVfZXRoX2J1ZmZlcl9zcGxpdF9nZXRfc3VwcG9ydGVkX2hkcl9wdHlwZXMg ZnVuY3Rpb24gY2FuIGJlIHVzZSB0bw0KPiA+IG9idGFpbiBhIGxpc3Qgb2YgdGhlc2UgcHJvdG9j b2wgaGVhZGVycy4NCj4gPg0KPiA+IEZvciBleGFtcGxlLCBsZXQncyBzdXBwb3NlIHdlIGNvbmZp Z3VyZWQgdGhlIFJ4IHF1ZXVlIHdpdGggdGhlDQo+ID4gZm9sbG93aW5nIHNlZ21lbnRzOg0KPiA+ ICAgICAgICAgIHNlZzAgLSBwb29sMCwgcHJvdG9faGRyMD1SVEVfUFRZUEVfTDJfRVRIRVIgfCBS VEVfUFRZUEVfTDNfSVBWNCwNCj4gPiAgICAgICAgICAgICAgICAgb2ZmMD0yQg0KPiA+ICAgICAg ICAgIHNlZzEgLSBwb29sMSwgcHJvdG9faGRyMT1SVEVfUFRZUEVfTDJfRVRIRVIgfCBSVEVfUFRZ UEVfTDNfSVBWNA0KPiA+ICAgICAgICAgICAgICAgICB8IFJURV9QVFlQRV9MNF9VRFAsIG9mZjE9 MTI4Qg0KPiA+ICAgICAgICAgIHNlZzIgLSBwb29sMiwgb2ZmMT0wQg0KPiA+DQo+ID4gVGhlIHBh Y2tldCBjb25zaXN0cyBvZiBFVEhfSVBWNF9VRFBfUEFZTE9BRCB3aWxsIGJlIHNwbGl0IGxpa2UN Cj4gPiBmb2xsb3dpbmc6DQo+ID4gICAgICAgICAgc2VnMCAtIGlwdjQgaGVhZGVyIEAgUlRFX1BL VE1CVUZfSEVBRFJPT00gKyAyIGluIG1idWYgZnJvbQ0KPiBwb29sMA0KPiA+ICAgICAgICAgIHNl ZzEgLSB1ZHAgaGVhZGVyIEAgMTI4IGluIG1idWYgZnJvbSBwb29sMQ0KPiA+ICAgICAgICAgIHNl ZzIgLSBwYXlsb2FkIEAgMCBpbiBtYnVmIGZyb20gcG9vbDINCj4gPg0KPiA+IE5vdGU6IE5JQyB3 aWxsIG9ubHkgZG8gc3BsaXQgd2hlbiB0aGUgcGFja2V0cyBleGFjdGx5IG1hdGNoIGFsbCB0aGUN Cj4gPiBwcm90b2NvbCBoZWFkZXJzIGluIHRoZSBzZWdtZW50cy4gRm9yIGV4YW1wbGUsIGlmIEFS UCBwYWNrZXRzIHJlY2VpdmVkDQo+ID4gd2l0aCBhYm92ZSBjb25maWcsIHRoZSBOSUMgd29uJ3Qg ZG8gc3BsaXQgZm9yIEFSUCBwYWNrZXRzIHNpbmNlIGl0DQo+ID4gZG9lcyBub3QgY29udGFpbnMg aXB2NCBoZWFkZXIgYW5kIHVkcCBoZWFkZXIuIFRoZXNlIHBhY2tldHMgd2lsbCBiZQ0KPiA+IHB1 dCBpbnRvIHRoZSBsYXN0IHZhbGlkIG1lbXBvb2wsIHdpdGggemVybyBvZmZzZXQuDQo+ID4NCj4g PiBOb3cgYnVmZmVyIHNwbGl0IGNhbiBiZSBjb25maWd1cmVkIGluIHR3byBtb2Rlcy4gRm9yIGxl bmd0aCBiYXNlZA0KPiA+IGJ1ZmZlciBzcGxpdCwgdGhlIG1wLCBsZW5ndGgsIG9mZnNldCBmaWVs ZCBpbiBSeCBwYWNrZXQgc2VnbWVudCBzaG91bGQNCj4gPiBiZSBjb25maWd1cmVkLCB3aGlsZSB0 aGUgcHJvdG9faGRyIGZpZWxkIHdpbGwgYmUgaWdub3JlZC4NCj4gPiBGb3IgcHJvdG9jb2wgaGVh ZGVyIGJhc2VkIGJ1ZmZlciBzcGxpdCwgdGhlIG1wLCBvZmZzZXQsIHByb3RvX2hkcg0KPiA+IGZp ZWxkIGluIFJ4IHBhY2tldCBzZWdtZW50IHNob3VsZCBiZSBjb25maWd1cmVkLCB3aGlsZSB0aGUg bGVuZ3RoDQo+ID4gZmllbGQgd2lsbCBiZSBpZ25vcmVkLg0KPiA+DQo+ID4gVGhlIHNwbGl0IGxp bWl0YXRpb25zIGltcG9zZWQgYnkgdW5kZXJseWluZyBkcml2ZXIgaXMgcmVwb3J0ZWQgaW4gdGhl DQo+ID4gcnRlX2V0aF9kZXZfaW5mby0+cnhfc2VnX2NhcGEgZmllbGQuIFRoZSBtZW1vcnkgYXR0 cmlidXRlcyBmb3IgdGhlDQo+ID4gc3BsaXQgcGFydHMgbWF5IGRpZmZlciBlaXRoZXIsIGRwZGsg bWVtb3J5IGFuZCBleHRlcm5hbCBtZW1vcnksDQo+IHJlc3BlY3RpdmVseS4NCj4gPg0KPiA+IFNp Z25lZC1vZmYtYnk6IFl1YW4gV2FuZyA8eXVhbngud2FuZ0BpbnRlbC5jb20+DQo+ID4gU2lnbmVk LW9mZi1ieTogWHVhbiBEaW5nIDx4dWFuLmRpbmdAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYt Ynk6IFdlbnh1YW4gV3UgPHdlbnh1YW54Lnd1QGludGVsLmNvbT4NCj4gDQo+IEkgYXBvbG9naXpl IGZvciBkZWxheSB3aXRoIHJldmlldy4gT3ZlcmFsbCBMR1RNIG5vdy4gU2VlIGZldyBub3RlcyBi ZWxvdy4NCg0KVGhhbmtzIHNvIG11Y2ggZm9yIHlvdXIgdGltZSBhbmQgcGF0aWVuY2UgZm9yIHRo aXMgcGF0Y2ggc2VyaWVzLg0KDQo+IA0KPiA+IC0tLQ0KPiA+ICAgZG9jL2d1aWRlcy9yZWxfbm90 ZXMvcmVsZWFzZV8yMl8xMS5yc3QgfCAgNyArKysNCj4gPiAgIGxpYi9ldGhkZXYvcnRlX2V0aGRl di5jICAgICAgICAgICAgICAgIHwgNzQgKysrKysrKysrKysrKysrKysrKysrKy0tLS0NCj4gPiAg IGxpYi9ldGhkZXYvcnRlX2V0aGRldi5oICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrLQ0K PiA+ICAgMyBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkN Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzEx LnJzdA0KPiA+IGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8xMS5yc3QNCj4gPiBp bmRleCA2YTc0NzRhM2Q2Li41MTA4NjljNzNhIDEwMDY0NA0KPiA+IC0tLSBhL2RvYy9ndWlkZXMv cmVsX25vdGVzL3JlbGVhc2VfMjJfMTEucnN0DQo+ID4gKysrIGIvZG9jL2d1aWRlcy9yZWxfbm90 ZXMvcmVsZWFzZV8yMl8xMS5yc3QNCj4gPiBAQCAtMTAxLDYgKzEwMSwxMyBAQCBOZXcgRmVhdHVy ZXMNCj4gPiAgICAgKiBBZGRlZCBgYHJ0ZV9ldGhfYnVmZmVyX3NwbGl0X2dldF9zdXBwb3J0ZWRf aGRyX3B0eXBlcygpYGAsIHRvIGdldA0KPiBzdXBwb3J0ZWQNCj4gPiAgICAgICBoZWFkZXIgcHJv dG9jb2xzIG9mIGEgUE1EIHRvIHNwbGl0Lg0KPiA+DQo+ID4gKyogKipBZGRlZCBwcm90b2NvbCBo ZWFkZXIgYmFzZWQgYnVmZmVyIHNwbGl0LioqDQo+ID4gKw0KPiA+ICsgICogRXRoZGV2OiBUaGUg YGByZXNlcnZlZGBgIGZpZWxkIGluIHRoZSBgYHJ0ZV9ldGhfcnhzZWdfc3BsaXRgYCBzdHJ1Y3R1 cmUgaXMNCj4gPiArICAgIHJlcGxhY2VkIHdpdGggYGBwcm90b19oZHJgYCB0byBzdXBwb3J0IHBy b3RvY29sIGhlYWRlciBiYXNlZCBidWZmZXINCj4gc3BsaXQuDQo+ID4gKyAgICBVc2VyIGNhbiBj aG9vc2UgbGVuZ3RoIG9yIHByb3RvY29sIGhlYWRlciB0byBjb25maWd1cmUgYnVmZmVyIHNwbGl0 DQo+ID4gKyAgICBhY2NvcmRpbmcgdG8gTklDJ3MgY2FwYWJpbGl0eS4NCj4gPiArDQo+IA0KPiBJ dCBzaG91bGQgYmUgZ3JvdXBlZCB0b2dldGhlciB3aXRoIG90aGVyIGV0aGRldiBmZWF0dXJlcy4N Cg0KV2Ugd2lsbCBzZW5kIGEgbmV3IHZlcnNpb24uIEZvciB0aGUgZG9jIGNoYW5nZXMsIHRoZSBz YW1lIGFzIHBhdGNoIDEsIGNvdWxkIHlvdSBoZWxwIHRvIGFkanVzdCB0aGUgZG9jPw0KVGhhbmtz IHZlcnkgbXVjaC4NCg0KPiANCj4gPg0KPiA+ICAgUmVtb3ZlZCBJdGVtcw0KPiA+ICAgLS0tLS0t LS0tLS0tLQ0KPiA+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9l dGhkZXYvcnRlX2V0aGRldi5jIGluZGV4DQo+ID4gMWYwYTdmOGYzZi4uMjdlYzE5ZmFlZCAxMDA2 NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+ICsrKyBiL2xpYi9ldGhk ZXYvcnRlX2V0aGRldi5jDQo+ID4gQEAgLTE2NDksOSArMTY0OSwxMCBAQCBydGVfZXRoX2Rldl9p c19yZW1vdmVkKHVpbnQxNl90IHBvcnRfaWQpDQo+ID4gICB9DQo+ID4NCj4gPiAgIHN0YXRpYyBp bnQNCj4gPiAtcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QgcnRlX2V0 aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0KPiA+IC0JCQkgICAgIHVpbnQxNl90IG5fc2VnLCB1aW50 MzJfdCAqbWJwX2J1Zl9zaXplLA0KPiA+IC0JCQkgICAgIGNvbnN0IHN0cnVjdCBydGVfZXRoX2Rl dl9pbmZvICpkZXZfaW5mbykNCj4gPiArcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdCh1aW50 MTZfdCBwb3J0X2lkLA0KPiA+ICsJCQljb25zdCBzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCAq cnhfc2VnLA0KPiA+ICsJCQl1aW50MTZfdCBuX3NlZywgdWludDMyX3QgKm1icF9idWZfc2l6ZSwN Cj4gPiArCQkJY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gKmRldl9pbmZvKQ0KPiA+ICAg ew0KPiA+ICAgCWNvbnN0IHN0cnVjdCBydGVfZXRoX3J4c2VnX2NhcGEgKnNlZ19jYXBhID0gJmRl dl9pbmZvLQ0KPiA+cnhfc2VnX2NhcGE7DQo+ID4gICAJc3RydWN0IHJ0ZV9tZW1wb29sICptcF9m aXJzdDsNCj4gPiBAQCAtMTY3NCw2ICsxNjc1LDcgQEAgcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19z cGxpdChjb25zdCBzdHJ1Y3QNCj4gcnRlX2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0KPiA+ICAg CQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wbCA9IHJ4X3NlZ1tzZWdfaWR4XS5tcDsNCj4gPiAgIAkJ dWludDMyX3QgbGVuZ3RoID0gcnhfc2VnW3NlZ19pZHhdLmxlbmd0aDsNCj4gPiAgIAkJdWludDMy X3Qgb2Zmc2V0ID0gcnhfc2VnW3NlZ19pZHhdLm9mZnNldDsNCj4gPiArCQl1aW50MzJfdCBwcm90 b19oZHIgPSByeF9zZWdbc2VnX2lkeF0ucHJvdG9faGRyOw0KPiA+DQo+ID4gICAJCWlmIChtcGwg PT0gTlVMTCkgew0KPiA+ICAgCQkJUlRFX0VUSERFVl9MT0coRVJSLCAibnVsbCBtZW1wb29sIHBv aW50ZXJcbiIpOw0KPiBAQCAtMTcwNywxMw0KPiA+ICsxNzA5LDYzIEBAIHJ0ZV9ldGhfcnhfcXVl dWVfY2hlY2tfc3BsaXQoY29uc3Qgc3RydWN0DQo+IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgKnJ4X3Nl ZywNCj4gPiAgIAkJfQ0KPiA+ICAgCQlvZmZzZXQgKz0gc2VnX2lkeCAhPSAwID8gMCA6IFJURV9Q S1RNQlVGX0hFQURST09NOw0KPiA+ICAgCQkqbWJwX2J1Zl9zaXplID0gcnRlX3BrdG1idWZfZGF0 YV9yb29tX3NpemUobXBsKTsNCj4gPiAtCQlsZW5ndGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6 ICptYnBfYnVmX3NpemU7DQo+ID4gLQkJaWYgKCptYnBfYnVmX3NpemUgPCBsZW5ndGggKyBvZmZz ZXQpIHsNCj4gPiAtCQkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+IC0JCQkJICAgICAgICIlcyBt YnVmX2RhdGFfcm9vbV9zaXplICV1IDwgJXUNCj4gKHNlZ21lbnQgbGVuZ3RoPSV1ICsgc2VnbWVu dCBvZmZzZXQ9JXUpXG4iLA0KPiA+IC0JCQkJICAgICAgIG1wbC0+bmFtZSwgKm1icF9idWZfc2l6 ZSwNCj4gPiAtCQkJCSAgICAgICBsZW5ndGggKyBvZmZzZXQsIGxlbmd0aCwgb2Zmc2V0KTsNCj4g PiAtCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJCWlmIChwcm90b19oZHIgPiAwKSB7 DQo+ID4gKwkJCS8qIFNwbGl0IGJhc2VkIG9uIHByb3RvY29sIGhlYWRlcnMuICovDQo+IA0KPiBJ c24ndCBzYWZlciBoZXJlIHRvIGVuc3VyZSB0aGF0IHNlZ21lbnQgbGVuZ3RoIGlzIHNldCB0byAw Pw0KPiBKdXN0IHRvIHByb3RlY3QgYWdhaW5zIG1pc3VzYWdlIGV0Yy4NCg0KSXQncyBhIHJlYXNv bmFibGUgc3VnZ2VzdGlvbiwgSSB3aWxsIHRha2UgaXQsIHBsZWFzZSBzZWUgdjguDQoNCj4gDQo+ ID4gKw0KPiA+ICsJCQkvKiBza2lwIHRoZSBwYXlsb2FkICovDQo+IA0KPiBTb3JyeSwgaXQgaXMg Y29uZnVzaW5nLiBXaGF0IGRvIHlvdSBtZWFuIGhlcmU/DQoNCkJlY2F1c2Ugc2V0dGluZyBuIHBy b3RvX2hkciB3aWxsIGdlbmVyYXRlIChuKzEpIHNlZ21lbnRzLiBJZiB3ZSB3YW50IHRvIHNwbGl0 IHRoZSBwYWNrZXQgaW50byBuIHNlZ21lbnRzLCB3ZSBvbmx5IG5lZWQgdG8gY2hlY2sgdGhlIGZp cnN0IChuLTEpIHByb3RvX2hkci4NCkZvciBleGFtcGxlLCBmb3IgRVRILUlQVjQtVURQLVBBWUxP QUQsIGlmIHdlIHdhbnQgdG8gc3BsaXQgYWZ0ZXIgdGhlIFVEUCBoZWFkZXIsIHdlIG9ubHkgbmVl ZCB0byBzZXQgYW5kIGNoZWNrIHRoZSBVRFAgaGVhZGVyIGluIHRoZSBmaXJzdCBzZWdtZW50Lg0K DQpNYXliZSBtYXNrIGlzIG5vdCBhIGdvb2Qgd2F5LCBzbyB3ZSB3aWxsIHVzZSBpbmRleCB0byBm aWx0ZXIgb3V0IHRoZSBjaGVjayBvZiBwcm90b19oZHIgaW5zaWRlIHRoZSBsYXN0IHNlZ21lbnQu DQoNCj4gDQo+ID4gKwkJCWlmIChwcm90b19oZHIgPT0gUlRFX1BUWVBFX0FMTF9NQVNLKQ0KPiA+ ICsJCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJCQlpbnQgcHR5cGVfY250Ow0KPiA+ICsNCj4g PiArCQkJcHR5cGVfY250ID0NCj4gcnRlX2V0aF9idWZmZXJfc3BsaXRfZ2V0X3N1cHBvcnRlZF9o ZHJfcHR5cGVzKHBvcnRfaWQsIE5VTEwsIDApOw0KPiA+ICsJCQlpZiAocHR5cGVfY250IDw9IDAp IHsNCj4gPiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiArCQkJCQkiUG9ydCAldSBmYWls ZWQgdG8gc3VwcG9ydGVkIGJ1ZmZlcg0KPiBzcGxpdCBoZWFkZXIgcHJvdG9jb2xzXG4iLA0KPiA+ ICsJCQkJCXBvcnRfaWQpOw0KPiA+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJCX0NCj4g PiArDQo+ID4gKwkJCXVpbnQzMl90IHB0eXBlc1twdHlwZV9jbnRdOw0KPiA+ICsJCQlpbnQgaTsN Cj4gDQo+IEZpcnN0IG9mIGFsbCBkbyBubyBtaXggY29kZSBhbmQgdmFyaWFibGUgZGVjbGFyYXRp b24uDQo+IEl0IHNpZ25pZmljYW50bHkgY29tcGxpY2F0ZXMgY29kZSByZWFkaW5nLg0KDQpUaGFu a3MsIHRoZSBjb2RlIGFuZCB2YXJpYWJsZSBkZWNsYXJhdGlvbiB3aWxsIGJlIHNlcGFyYXRlZC4N Cg0KPiBTZWNvbmQgY3JlYXRpb24gb2YgYW4gYXJyYXkgb24gc3RhY2sgYmFzZWQgb24gZnVuY3Rp b24gcmV0dXJuIHZhbHVlIGlzIHZlcnkNCj4gZGFuZ2Vyb3VycyBmcm9tIHNlY3VyaXR5IHBvaW50 IG9mIHZpZXcgLSBwb3RlbnRpYWwgc3RhY2sgb3ZlcmZsb3cgYW5kDQo+IGNvcnJlc3BvbmRpbmcg dnVsbmVyYWJpbGl0aWVzLg0KDQpUaGUgZnVuY3Rpb24gdmFsdWUgaXMgdXNlZCBmb3IgZGVmaW5p bmcgaG93IG11Y2ggc3BhY2UgaXMgbmVlZGVkIHRvIHN0b3JlIHB0eXBlcy4gVGhhbmtzIGZvciB5 b3VyIGNvcnJlY3Rpb24gb2Ygc3RhY2sgb3ZlcmZsb3csIHdlIHdpbGwgdXNlIGhlYXAgaW5zdGVh ZC4NCg0KPiANCj4gPiArDQo+ID4gKwkJCXB0eXBlX2NudCA9DQo+IHJ0ZV9ldGhfYnVmZmVyX3Nw bGl0X2dldF9zdXBwb3J0ZWRfaGRyX3B0eXBlcyhwb3J0X2lkLA0KPiA+ICsNCj4gCXB0eXBlcywg cHR5cGVfY250KTsNCj4gPiArCQkJaWYgKHB0eXBlX2NudCA8IDApIHsNCj4gPiArCQkJCVJURV9F VEhERVZfTE9HKEVSUiwNCj4gPiArCQkJCQkiUG9ydCAldSBmYWlsZWQgdG8gc3VwcG9ydGVkIGJ1 ZmZlcg0KPiBzcGxpdCBoZWFkZXIgcHJvdG9jb2xzXG4iLA0KPiA+ICsJCQkJCXBvcnRfaWQpOw0K PiA+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJCX0NCj4gPiArDQo+ID4gKwkJCWZvciAo aSA9IDA7IGkgPCBwdHlwZV9jbnQ7IGkrKykNCj4gPiArCQkJCWlmIChwdHlwZXNbaV0gPT0gcHJv dG9faGRyKQ0KPiA+ICsJCQkJCWJyZWFrOw0KPiA+ICsJCQlpZiAoaSA9PSBwdHlwZV9jbnQpIHsN Cj4gPiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiArCQkJCQkiUmVxdWVzdGVkIFJ4IHNw bGl0IGhlYWRlciBwcm90b2NvbHMNCj4gMHgleCBpcyBub3Qgc3VwcG9ydGVkLlxuIiwNCj4gPiAr CQkJCQlwcm90b19oZHIpOw0KPiA+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJCX0NCj4g PiArDQo+ID4gKwkJCWlmICgqbWJwX2J1Zl9zaXplIDwgb2Zmc2V0KSB7DQo+IA0KPiBUaGUgY2hl Y2sgaXMgb2J2aW91c2x5IGluc3VmZmljaWVudCwgYnV0IEkgYWdyZWUgdGhhdCBpdCBzaG91bGQg YmUgZHJpdmVyDQo+IHJlcG9uc2liaWxpdHkgdG8gZG8gZXh0cmEgY2hlY2tzIGZvciByZXF1aXJl ZCBzcGFjZSBpbiBtYnVmLg0KPiANCj4gPiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiAr CQkJCQkJIiVzDQo+IG1idWZfZGF0YV9yb29tX3NpemUgJXUgPCAldSBzZWdtZW50IG9mZnNldClc biIsDQo+ID4gKwkJCQkJCW1wbC0+bmFtZSwgKm1icF9idWZfc2l6ZSwNCj4gPiArCQkJCQkJb2Zm c2V0KTsNCj4gPiArCQkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCQl9DQo+ID4gKwkJfSBlbHNl IHsNCj4gPiArCQkJLyogU3BsaXQgYXQgZml4ZWQgbGVuZ3RoLiAqLw0KPiA+ICsJCQlsZW5ndGgg PSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBfYnVmX3NpemU7DQo+ID4gKwkJCWlmICgqbWJw X2J1Zl9zaXplIDwgbGVuZ3RoICsgb2Zmc2V0KSB7DQo+ID4gKwkJCQlSVEVfRVRIREVWX0xPRyhF UlIsDQo+ID4gKwkJCQkJIiVzIG1idWZfZGF0YV9yb29tX3NpemUgJXUgPCAldQ0KPiAoc2VnbWVu dCBsZW5ndGg9JXUgKyBzZWdtZW50IG9mZnNldD0ldSlcbiIsDQo+ID4gKwkJCQkJbXBsLT5uYW1l LCAqbWJwX2J1Zl9zaXplLA0KPiA+ICsJCQkJCWxlbmd0aCArIG9mZnNldCwgbGVuZ3RoLCBvZmZz ZXQpOw0KPiA+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJCX0NCj4gPiAgIAkJfQ0KPiA+ ICAgCX0NCj4gPiAgIAlyZXR1cm4gMDsNCj4gPiBAQCAtMTc5Myw3ICsxODQ1LDcgQEAgcnRlX2V0 aF9yeF9xdWV1ZV9zZXR1cCh1aW50MTZfdCBwb3J0X2lkLA0KPiB1aW50MTZfdCByeF9xdWV1ZV9p ZCwNCj4gPiAgIAkJbl9zZWcgPSByeF9jb25mLT5yeF9uc2VnOw0KPiA+DQo+ID4gICAJCWlmIChy eF9jb25mLT5vZmZsb2FkcyAmIFJURV9FVEhfUlhfT0ZGTE9BRF9CVUZGRVJfU1BMSVQpDQo+IHsN Cj4gPiAtCQkJcmV0ID0gcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdChyeF9zZWcsIG5fc2Vn LA0KPiA+ICsJCQlyZXQgPSBydGVfZXRoX3J4X3F1ZXVlX2NoZWNrX3NwbGl0KHBvcnRfaWQsIHJ4 X3NlZywNCj4gbl9zZWcsDQo+ID4gICAJCQkJCQkJICAgJm1icF9idWZfc2l6ZSwNCj4gPiAgIAkJ CQkJCQkgICAmZGV2X2luZm8pOw0KPiA+ICAgCQkJaWYgKHJldCAhPSAwKQ0KPiA+IGRpZmYgLS1n aXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oIGlu ZGV4DQo+ID4gY2YxNGUwNDAxMC4uYTVmOTY0N2JkMyAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRo ZGV2L3J0ZV9ldGhkZXYuaA0KPiA+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ID4g QEAgLTk5NCw2ICs5OTQsOSBAQCBzdHJ1Y3QgcnRlX2V0aF90eG1vZGUgew0KPiA+ICAgICogICBz cGVjaWZpZWQgaW4gdGhlIGZpcnN0IGFycmF5IGVsZW1lbnQsIHRoZSBzZWNvbmQgYnVmZmVyLCBm cm9tIHRoZQ0KPiA+ICAgICogICBwb29sIGluIHRoZSBzZWNvbmQgZWxlbWVudCwgYW5kIHNvIG9u Lg0KPiA+ICAgICoNCj4gPiArICogLSBUaGUgcHJvdG9faGRycyBpbiB0aGUgZWxlbWVudHMgZGVm aW5lIHRoZSBzcGxpdCBwb3NpdGlvbiBvZg0KPiA+ICsgKiAgIHJlY2VpdmVkIHBhY2tldHMuDQo+ ID4gKyAqDQo+ID4gICAgKiAtIFRoZSBvZmZzZXRzIGZyb20gdGhlIHNlZ21lbnQgZGVzY3JpcHRp b24gZWxlbWVudHMgc3BlY2lmeQ0KPiA+ICAgICogICB0aGUgZGF0YSBvZmZzZXQgZnJvbSB0aGUg YnVmZmVyIGJlZ2lubmluZyBleGNlcHQgdGhlIGZpcnN0IG1idWYuDQo+ID4gICAgKiAgIFRoZSBm aXJzdCBzZWdtZW50IG9mZnNldCBpcyBhZGRlZCB3aXRoIFJURV9QS1RNQlVGX0hFQURST09NLg0K PiA+IEBAIC0xMDE1LDEyICsxMDE4LDM2IEBAIHN0cnVjdCBydGVfZXRoX3R4bW9kZSB7DQo+ID4g ICAgKiAgICAgLSBwb29sIGZyb20gdGhlIGxhc3QgdmFsaWQgZWxlbWVudA0KPiA+ICAgICogICAg IC0gdGhlIGJ1ZmZlciBzaXplIGZyb20gdGhpcyBwb29sDQo+ID4gICAgKiAgICAgLSB6ZXJvIG9m ZnNldA0KPiA+ICsgKg0KPiA+ICsgKiAtIExlbmd0aCBiYXNlZCBidWZmZXIgc3BsaXQ6DQo+ID4g KyAqICAgICAtIG1wLCBsZW5ndGgsIG9mZnNldCBzaG91bGQgYmUgY29uZmlndXJlZC4NCj4gPiAr ICogICAgIC0gVGhlIHByb3RvX2hkciBmaWVsZCB3aWxsIGJlIGlnbm9yZWQuDQo+IA0KPiBMb29r aW5nIGF0IHRoZSBjb2RlIGFib3ZlIEkgdGhpbmsgcHJvdG9faGRyIG11c3QgYmUgMC4NCj4gDQo+ ID4gKyAqDQo+ID4gKyAqIC0gUHJvdG9jb2wgaGVhZGVyIGJhc2VkIGJ1ZmZlciBzcGxpdDoNCj4g PiArICogICAgIC0gbXAsIG9mZnNldCwgcHJvdG9faGRyIHNob3VsZCBiZSBjb25maWd1cmVkLg0K PiA+ICsgKiAgICAgLSBUaGUgbGVuZ3RoIGZpZWxkIHdpbGwgYmUgaWdub3JlZC4NCj4gDQo+IEkn ZCByZXF1aXJlIGxlbmd0aCB0byBiZSAwIHRvIGF2b2lkIG1pc3VzYWdlIG9mIHRoZSBBUEkuDQoN ClN1cmUsIHdlIHdpbGwgZml4IHRoZW0gaW4gdjguDQoNCj4gDQo+ID4gKyAqDQo+ID4gKyAqIC0g Rm9yIFByb3RvY29sIGhlYWRlciBiYXNlZCBidWZmZXIgc3BsaXQsIGlmIHRoZSByZWNlaXZlZCBw YWNrZXRzDQo+ID4gKyAqICAgZG9uJ3QgZXhhY3RseSBtYXRjaCBhbGwgcHJvdG9jb2wgaGVhZGVy cyBpbiB0aGUgZWxlbWVudHMsIHBhY2tldHMNCj4gPiArICogICB3aWxsIG5vdCBiZSBzcGxpdC4N Cj4gPiArICogICBUaGVzZSBwYWNrZXRzIHdpbGwgYmUgcHV0IGludG86DQo+ID4gKyAqICAgICAt IHBvb2wgZnJvbSB0aGUgbGFzdCB2YWxpZCBlbGVtZW50DQo+ID4gKyAqICAgICAtIHRoZSBidWZm ZXIgc2l6ZSBmcm9tIHRoaXMgcG9vbA0KPiA+ICsgKiAgICAgLSB6ZXJvIG9mZnNldA0KPiANCj4g U2hvdW5kbCd0IGJlIGNoZWNrIHRoYXQgZGF0YXJvb20gaW4gdGhlIGxhc3Qgc2VnbWVudCBtZW1w b29sIGlzIHN1ZmZpY2llbnQNCj4gZm9yIHVwIHRvIE1UVSBwYWNrZXQgaWYgUnggc2NhdHRlciBp cyBkaXNhYmxlZD8NCg0KWWVzLCB3ZSB3aWxsIGFkZCB0aGlzIGNoZWNrIGluIHRoZSBsYXN0IHNl Z21lbnQuDQoNClRoYW5rcywNCll1YW4NCg0KPiANCj4gPiAgICAqLw0KPiA+ICAgc3RydWN0IHJ0 ZV9ldGhfcnhzZWdfc3BsaXQgew0KPiA+ICAgCXN0cnVjdCBydGVfbWVtcG9vbCAqbXA7IC8qKjwg TWVtb3J5IHBvb2wgdG8gYWxsb2NhdGUgc2VnbWVudA0KPiBmcm9tLiAqLw0KPiA+ICAgCXVpbnQx Nl90IGxlbmd0aDsgLyoqPCBTZWdtZW50IGRhdGEgbGVuZ3RoLCBjb25maWd1cmVzIHNwbGl0IHBv aW50LiAqLw0KPiA+ICAgCXVpbnQxNl90IG9mZnNldDsgLyoqPCBEYXRhIG9mZnNldCBmcm9tIGJl Z2lubmluZyBvZiBtYnVmIGRhdGEgYnVmZmVyLg0KPiAqLw0KPiA+IC0JdWludDMyX3QgcmVzZXJ2 ZWQ7IC8qKjwgUmVzZXJ2ZWQgZmllbGQuICovDQo+ID4gKwkvKioNCj4gPiArCSAqIFByb3RvX2hk ciBkZWZpbmVzIGEgYml0IG1hc2sgb2YgdGhlIHByb3RvY29sIHNlcXVlbmNlIGFzDQo+IFJURV9Q VFlQRV8qLA0KPiA+ICsJICogY29uZmlndXJlcyBzcGxpdCBwb2ludC4gVGhlIGxhc3QgUlRFX1BU WVBFKiBpbiB0aGUgbWFzayBpbmRpY2F0ZXMNCj4gdGhlDQo+ID4gKwkgKiBzcGxpdCBwb3NpdGlv bi4NCj4gPiArCSAqIEZvciBub24tdHVubmVsaW5nIHBhY2tldHMsIHRoZSBjb21wbGV0ZSBwcm90 b2NvbCBzZXF1ZW5jZSBzaG91bGQNCj4gYmUgZGVmaW5lZC4NCj4gPiArCSAqIEZvciB0dW5uZWxp bmcgcGFja2V0cywgZm9yIHNpbXBsaWNpdHksIG9ubHkgdGhlIHR1bm5lbCBhbmQgaW5uZXINCj4g PiArCSAqIHByb3RvY29sIHNlcXVlbmNlIHNob3VsZCBiZSBkZWZpbmVkLg0KPiA+ICsJICovDQo+ ID4gKwl1aW50MzJfdCBwcm90b19oZHI7DQo+ID4gICB9Ow0KPiA+DQo+ID4gICAvKioNCg0K