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 9AE26A050A; Tue, 12 Apr 2022 18:30:54 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8AF92410E1; Tue, 12 Apr 2022 18:30:54 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mails.dpdk.org (Postfix) with ESMTP id 89D69410DD for ; Tue, 12 Apr 2022 18:30:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649781053; x=1681317053; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=VfsIIG5RFgRTTMIwMgkI6fwksq7NNzjm4GOYV8z9AAU=; b=JYAs3XZbHg6JpDjtQraM+i06aY9rLP5rWpsui+/yM2zw/g0i/2ZtWtDe UzsgtUblNBSuquDcu6qeVMciKIH3RDvUnuVO/FjwG1gsFwiXxo33AJc88 jr8r2KdUwIid3FdicMITElqt1xIzVonqdEjhYBIH6dbhqHXVGiwPVAt9p bvdNGKOBE9JVdyA44znTWu4tWeYt+69CzcmmqlliSAdsdWu5gK0k3lGy1 l0RzqmRUyI2CTO5ZiITywzSU5MtmiLGHxdsh0oGdOx362hI3NZzDaTo8K rEU806roiQ3vxtZn3ooq3k3ZljuPmddPntCh5z8DdoUo1CbYc0RY2HOyB Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10315"; a="249711346" X-IronPort-AV: E=Sophos;i="5.90,254,1643702400"; d="scan'208";a="249711346" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2022 09:15:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,254,1643702400"; d="scan'208";a="526541124" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by orsmga006.jf.intel.com with ESMTP; 12 Apr 2022 09:15:28 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 12 Apr 2022 09:15:28 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 12 Apr 2022 09:15:28 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Tue, 12 Apr 2022 09:15:28 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.106) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Tue, 12 Apr 2022 09:15:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jsRq6uvLOI0sHH4CdTQopqZliOToHGGFZfU6rHNq8FeL3pP6IYDQOTXyj5vm5X7E6XKWM0PMLMiUGXx6qYwuSf3so787AE4tn9mJMLRY8UsmbjUQBbdWzpY9h2Zp3QVg6xtnhOZujRAqJ4hYCzJS8DqaH7JcX/brUO8Tt/uhYGPm69YuSrfKddNgddV9podJmJdCMS0NNu2etRUcgESt/rUjq4XLC6DXqkfXnIUo19bgiFWQowNEg3/5ZIMmx9YeZXGmiEwHaQ+aCISp1NKOs3wmHTIMZG86lEuZJBQ1AHDfldSVUo5BrbYhkpnUwKr398hqfslj9V9QDVs2GZtPyA== 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=VfsIIG5RFgRTTMIwMgkI6fwksq7NNzjm4GOYV8z9AAU=; b=nlvs1IndY7SXxktbFAFgR4xr5+IA/2mgjOLwUWewwPlybelO5gWlNCM4YcVyWxHvhFgoNOgPtKfRxA0vY/evd8XSug/INZ1yP9fc1/ekb0Koo87qw7iJDm1IhfRAwBAlN6TbACnhgkLBkz0KpB+i25nBwt6YAAwAK943Wg67NDdQygByCZCK/94Ver1I/6WvVKDbpzrE/RD3eu70B1aG/Qt195e3DAQ/5UBhpua0wVbpG+MsSPXH1xx/t2AY1bDoi4nRt1aTInoEiMI7AhtMF/IG3gN3nCiqEigKzoGTrHdZHJOYxwZ0t53VfC4GHKJrnp1sAWQhI6gz6AtRrgBL7A== 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 BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by PH0PR11MB4807.namprd11.prod.outlook.com (2603:10b6:510:3a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.18; Tue, 12 Apr 2022 16:15:25 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::9147:90d3:4ea2:7838]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::9147:90d3:4ea2:7838%4]) with mapi id 15.20.5144.030; Tue, 12 Apr 2022 16:15:25 +0000 From: "Ding, Xuan" To: Andrew Rybchenko , "Wu, WenxuanX" , "thomas@monjalon.net" , "Li, Xiaoyun" , "Singh, Aman Deep" , "Zhang, Yuying" , "Zhang, Qi Z" CC: "dev@dpdk.org" , "stephen@networkplumber.org" , "mb@smartsharesystems.com" , "viacheslavo@nvidia.com" , "Yu, Ping" , "Wang, YuanX" , "david.marchand@redhat.com" , Ferruh Yigit Subject: RE: [v4 1/3] ethdev: introduce protocol type based header split Thread-Topic: [v4 1/3] ethdev: introduce protocol type based header split Thread-Index: AQHYRoFV1PgDPUFqJUelFXME57QWpKzkTNwAgAftbBA= Date: Tue, 12 Apr 2022 16:15:25 +0000 Message-ID: References: <20220303060136.36427-1-xuan.ding@intel.com> <20220402104109.472078-1-wenxuanx.wu@intel.com> <20220402104109.472078-2-wenxuanx.wu@intel.com> <253f6a27-0daa-d708-79e6-607228dda044@oktetlabs.ru> In-Reply-To: <253f6a27-0daa-d708-79e6-607228dda044@oktetlabs.ru> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f9298771-1d9d-4884-20c6-08da1c9fa748 x-ms-traffictypediagnostic: PH0PR11MB4807:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZGzn2St6tNd8v7ZJ+7AEx+/p589JK6tTlcIT+Km1/EImOHQJRmrp68hy+EjYzUR3zwnAkE9hr7JRMN/vRdWLeqJcPGbsdcEvaryPErETw8bjqpYOlDr59tNJlZT9WcGa3xK+9g5mO9Yh0Pz5qNY7kmw/CBgHBV0gd97gScMH0gDYW/8kDxCtVzrJYv7eZjdkK5NwEKl0zZidadEOV4vyoCetFd3mrRcnQw7LHLzudLMRMo4ImDp1cGwVDDDD0Gq1MZRdRwrmHzeiC/gejRUiRt2UqAPKfLChXLuo/9i/TRdqW6chCUPoqBmYI8ji9p3SXJw28Xy3g7G0fyFDIK/pt2OmjnslzwiW7BG6xiwnh9f1QgAr3KuRlFFqsOwtAMljgfLP/7yEhb7Dvtv4qBmL0nd0xVOZUj9N+/iuWeweXttacPryo7bahyHyV80x/HkZbHo23rnasgGHYGymGigp8D0QfxAxvDY2aWdAa/6WtQ0mxvzC8U00KCa/idMvEY+6flikwXE1cYSO3PKhX0mL0uq6v2zsOTjvli1waeCeXaWNeY1q7zZ93n7u6c2PCszB5+u69Of9PeVDIrmYsbByL+WL38CAud/WtuJCoVcInx7aj0544T2OB0IH/c6dfF5hv9kVUT7EZK67B/tYGRFaRIUKX+Mu/eS1oaht8bugiQ+aCALz7+Sb6HkTqtD+jifAtdhzjf4bsgjrJB2xMkMWnbIkq4NiIo2HdKEWZY5cevw= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(508600001)(33656002)(7696005)(52536014)(8936002)(55016003)(30864003)(5660300002)(53546011)(2906002)(83380400001)(6506007)(38100700002)(9686003)(316002)(76116006)(8676002)(66446008)(66556008)(66946007)(64756008)(66476007)(4326008)(86362001)(71200400001)(122000001)(110136005)(921005)(54906003)(82960400001)(6636002)(186003)(26005)(38070700005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z2FsUU1UanRQVXBXSFZKdmpSRGRpcEdiQ3pJN0YvanNPRWIyTy9xdGZJQk9j?= =?utf-8?B?Mk5mV0VqT0RCaDhUMnlkdFI4UDhKRUl3SEYrY3NCZDZRenF1d3dvVm1RNUNK?= =?utf-8?B?bTNNRzJNQnp4WjN6MUNFSzJ4cEpHVTYwU1krVlp1OFBiTUovZTgraXVpUkdq?= =?utf-8?B?MUd0QXEyaGcwK29yS1FEa3E5aGI2aU50ZVVJSFI0U0lWR0JzYjU1VjFRZ0sw?= =?utf-8?B?MHl1Y1lDakgvZVV2TGF0d1JzMDN0a2dzZG5kNEZrNWxua2hXRVJrek5xRVRN?= =?utf-8?B?akcyOHFlTFdmN1paZ2NUaEJJS2xTVkM4ZUFVVStCNWpyTElFcjh0Z3FhMDF6?= =?utf-8?B?bC81QlVwUmdVOVE4Kzh3S2VxTXJTeXprYytNZ3pHbDFrMU5kWDJLNFFHd2Fq?= =?utf-8?B?UlFoeVA1bnhrdHBPeDBjRG9jeklUVVZyTWhDN2FCTzFmWW5DdWYreC9SRFpL?= =?utf-8?B?TkZJcCthYnV0djdKK2piN011MW5vaEdMckk0T0EybUluU2xWSzJzTW5UQW8w?= =?utf-8?B?S2NXMjBKSHNpRG5GUVdQWWpUTnhvM0U3cUYyTDJsTnJTL0Z1ZExTOTlKbTRO?= =?utf-8?B?NHdQL1ErNWo2bmkyMmRGZXZRMHgvMmorRm53R0t5N05pMGlDRWFRR2M0U0Fu?= =?utf-8?B?S25kZDQzZVRodHBmUXNDNWkxL0xhWXVxUWhzMEFsZEtweTdFRm8xcmFZakph?= =?utf-8?B?djVESG1Id21SZlRLQjRScEtoVDRZMXNMVXVnbTJzY2tJTWZoY3FSbVJvTStU?= =?utf-8?B?aG55c0dXcDJjdXMwUFJtQnp5R1RvUGFFNEZQUDBiVVhrUDRVQy8yNUhTdWI3?= =?utf-8?B?Z1h5VE5hL3ZHMm5uRVExV2R5ZEp5KzlvbWU4Yk41ZFQraS9MTWpHU24rUnNK?= =?utf-8?B?NVRFbC9zc2V2TEJxT3M4cTRGNDFzY2NIbS9tdStNWkxmbmxmdGxkMUFBV0Rh?= =?utf-8?B?Y25FdDBMMDdOc25RejJGcVdEOUwraitwWDMxVFJLN0lkdDM4V2ZJR3Q4ZTFT?= =?utf-8?B?M1Y2UlMxbU1EMmQwMnlpQk9abm4xeXFLbThiUGszVFl4YjRIVVJhV3ZtVWVJ?= =?utf-8?B?NSt2MXZTRXVLRmlDUnNhLzYyQm9ENmRQVE4zdjIzM1BPWFU2SFc3c1FzaVJL?= =?utf-8?B?YUpud1NXbXhYa0oyVmZxWWJPUURYbGx5cmRJMGE2VzNOQ3hBRUlJb0lvQTNC?= =?utf-8?B?WTJrbVhiR29oSTZ1YVExYXBhYUtCVGFsNDhMYkhqNmY4S3l4NUxPY01yWXE1?= =?utf-8?B?RnJMdzJ5MXVxMkhmTUJYTTJ6ejRpWWNEZklhKzVTc3djUDlTdW5Fd0NJUDBL?= =?utf-8?B?MEtIczhlTHhWOVRiclV6UVYyT0F4V2Fsc2kxbUc4NkxYejR3T29uaVVvVmsw?= =?utf-8?B?V3VnYzVZZTcxbGNvVEFScFZoY2VKY0Z2bGRXRUI0L0gwNTJmcWxxMmgwZzRu?= =?utf-8?B?Z21yYWNhclI0K3pmNXVnMU1aTnFhTzRFQWh4RzVicDl1NVo1RTVPbFJsNmRq?= =?utf-8?B?c0JiZFpMa0dRSEtZa0IxWkxjMmlSU09tYXdqNkYza3RJTW53cE8ySXJ0ZGVI?= =?utf-8?B?UERtVEZPMVFlVGoxanpKMEJnNHpBY2ZCMjZzbHA0Wjh6MmxSZ3RXUUdoNVJJ?= =?utf-8?B?VEdWOHMwVnBmSHhwQVZMMURsU1huajB5MHl0QVNsU0xhcy9rclhleEpHa1BQ?= =?utf-8?B?eFZIdWx3WW9hZzg3K1VuQng2c0FicEVMY3Z0dFlIc05nWWhoQ2JZWW1wc2VK?= =?utf-8?B?SnRWYmcyM2J2bE1ta2VHOXdTcEFlT1k2amZMVmVUNHJ0TnFFNjBRY3RMQjNh?= =?utf-8?B?Zng4TGZqZUt5NDl5dGEvWDZ2TjhNSUIxRTZucmc4Rk5ocWViNDI0ZUNBeVMz?= =?utf-8?B?eXVwRkxzMlVrbmNFbjFCajI1cUgrUklYZFhSTGpkRC9rdmJpWkx1aU1sdm5C?= =?utf-8?B?ZVdFS1BDN2Rta0FycW5BcHIwRnpSZkc5U3Fzek51OVJzQ0IvUmpuWVg5cDlr?= =?utf-8?B?NEJNOXBPZ2NpdlhKNU01RjRhYmpGcEtUMyt4VnR3cWUyKzRFK3l2QjlHYjd6?= =?utf-8?B?NkJDOGU2eHFIb1dVaHRjMWIveHFsOEVYSDhSRW42cTBEb1F0aEJ0MUJ0aFRL?= =?utf-8?B?ZkVXbGZaMStGZlpjOTVpUlBwQVdqVkdxSFhzaXlWME9yQlRTWERGU09OdHBV?= =?utf-8?B?dlh4V0xSc3E5ZG9HR2U1OXlzNUdKY3E3Z2k3eGhKV0RMUHU4bDFSMGtxdVNv?= =?utf-8?B?ZFpFclU0clEzeUlIQ0dGdTFmeS8ya1cvL2p2QjdjSTZQbEJuT2FIVFFGaXoy?= =?utf-8?B?V2tYaElJb1pJQStJVDl3R0dKeHhUcDdPQTJMaE9vZHgvZmhRQk9NQT09?= 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: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9298771-1d9d-4884-20c6-08da1c9fa748 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2022 16:15:25.6497 (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: S3A/hO7KuSZJchnAb7qkx+NNLgO82CHNoGBzf9lpHVXHeVPQCka4TsIhTR2EFCZF45k3ew5YHy5OkZqXzXy/dw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4807 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 dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBUaHVy c2RheSwgQXByaWwgNywgMjAyMiA2OjQ4IFBNDQo+IFRvOiBXdSwgV2VueHVhblggPHdlbnh1YW54 Lnd1QGludGVsLmNvbT47IHRob21hc0Btb25qYWxvbi5uZXQ7IExpLA0KPiBYaWFveXVuIDx4aWFv eXVuLmxpQGludGVsLmNvbT47IFNpbmdoLCBBbWFuIERlZXANCj4gPGFtYW4uZGVlcC5zaW5naEBp bnRlbC5jb20+OyBaaGFuZywgWXV5aW5nIDx5dXlpbmcuemhhbmdAaW50ZWwuY29tPjsNCj4gWmhh bmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPg0KPiBDYzogZGV2QGRwZGsub3JnOyBzdGVw aGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsNCj4gbWJAc21hcnRzaGFyZXN5c3RlbXMuY29tOyB2aWFj aGVzbGF2b0BudmlkaWEuY29tOyBZdSwgUGluZw0KPiA8cGluZy55dUBpbnRlbC5jb20+OyBEaW5n LCBYdWFuIDx4dWFuLmRpbmdAaW50ZWwuY29tPjsgV2FuZywgWXVhblgNCj4gPHl1YW54LndhbmdA aW50ZWwuY29tPjsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbTsgRmVycnVoIFlpZ2l0DQo+IDxm ZXJydWh5QHhpbGlueC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbdjQgMS8zXSBldGhkZXY6IGludHJv ZHVjZSBwcm90b2NvbCB0eXBlIGJhc2VkIGhlYWRlciBzcGxpdA0KPiANCj4gT24gNC8yLzIyIDEz OjQxLCB3ZW54dWFueC53dUBpbnRlbC5jb20gd3JvdGU6DQo+ID4gRnJvbTogWHVhbiBEaW5nIDx4 dWFuLmRpbmdAaW50ZWwuY29tPg0KPiA+DQo+ID4gSGVhZGVyIHNwbGl0IGNvbnNpc3RzIG9mIHNw bGl0dGluZyBhIHJlY2VpdmVkIHBhY2tldCBpbnRvIHR3byBzZXBhcmF0ZQ0KPiA+IHJlZ2lvbnMg YmFzZWQgb24gdGhlIHBhY2tldCBjb250ZW50LiBUaGUgc3BsaXQgaGFwcGVucyBhZnRlciB0aGUN Cj4gPiBwYWNrZXQgaGVhZGVyIGFuZCBiZWZvcmUgdGhlIHBhY2tldCBwYXlsb2FkLiBTcGxpdHRp bmcgaXMgdXN1YWxseQ0KPiA+IGJldHdlZW4gdGhlIHBhY2tldCBoZWFkZXIgdGhhdCBjYW4gYmUg cG9zdGVkIHRvIGEgZGVkaWNhdGVkIGJ1ZmZlciBhbmQNCj4gPiB0aGUgcGFja2V0IHBheWxvYWQg dGhhdCBjYW4gYmUgcG9zdGVkIHRvIGEgZGlmZmVyZW50IGJ1ZmZlci4NCj4gPg0KPiA+IEN1cnJl bnRseSwgUnggYnVmZmVyIHNwbGl0IHN1cHBvcnRzIGxlbmd0aCBhbmQgb2Zmc2V0IGJhc2VkIHBh Y2tldCBzcGxpdC4NCj4gPiBBbHRob3VnaCBoZWFkZXIgc3BsaXQgaXMgYSBzdWJzZXQgb2YgYnVm ZmVyIHNwbGl0LCBjb25maWd1cmluZyBidWZmZXINCj4gPiBzcGxpdCBiYXNlZCBvbiBsZW5ndGgg aXMgbm90IHN1aXRhYmxlIGZvciBOSUNzIHRoYXQgZG8gc3BsaXQgYmFzZWQgb24NCj4gPiBoZWFk ZXIgcHJvdG9jb2wgdHlwZXMuIEJlY2F1c2UgdHVubmVsaW5nIG1ha2VzIHRoZSBjb252ZXJzaW9u IGZyb20NCj4gPiBsZW5ndGggdG8gcHJvdG9jb2wgdHlwZSBpbXBvc3NpYmxlLg0KPiA+DQo+ID4g VGhpcyBwYXRjaCBleHRlbmRzIHRoZSBjdXJyZW50IGJ1ZmZlciBzcGxpdCB0byBzdXBwb3J0IHBy b3RvY29sIHR5cGUNCj4gPiBhbmQgb2Zmc2V0IGJhc2VkIGhlYWRlciBzcGxpdC4gQSBuZXcgcHJv dG8gZmllbGQgaXMgaW50cm9kdWNlZCBpbiB0aGUNCj4gPiBydGVfZXRoX3J4c2VnX3NwbGl0IHN0 cnVjdHVyZSByZXNlcnZlZCBmaWVsZCB0byBzcGVjaWZ5IGhlYWRlcg0KPiA+IHByb3RvY29sIHR5 cGUuIFdpdGggUnggb2ZmbG9hZCBmbGFnIFJURV9FVEhfUlhfT0ZGTE9BRF9IRUFERVJfU1BMSVQN Cj4gPiBlbmFibGVkIGFuZCBwcm90b2NvbCB0eXBlIGNvbmZpZ3VyZWQsIFBNRCB3aWxsIHNwbGl0 IHRoZSBpbmdyZXNzDQo+ID4gcGFja2V0cyBpbnRvIHR3byBzZXBhcmF0ZSByZWdpb25zLiBDdXJy ZW50bHksIGJvdGggaW5uZXIgYW5kIG91dGVyDQo+ID4gTDIvTDMvTDQgbGV2ZWwgaGVhZGVyIHNw bGl0IGNhbiBiZSBzdXBwb3J0ZWQuDQo+IA0KPiBSVEVfRVRIX1JYX09GRkxPQURfSEVBREVSX1NQ TElUIG9mZmxvYWQgd2FzIGludHJvZHVjZWQgc29tZSB0aW1lDQo+IGFnbyB0byBzdWJzdGl0dXRl IGJpdC1maWVsZCBoZWFkZXJfc3BsaXQgaW4gc3RydWN0IHJ0ZV9ldGhfcnhtb2RlLiBJdCBhbGxv d3MgdG8NCj4gZW5hYmxlIGhlYWRlciBzcGxpdCBvZmZsb2FkIHdpdGggdGhlIGhlYWRlciBzaXpl IGNvbnRyb2xsZWQgdXNpbmcNCj4gc3BsaXRfaGRyX3NpemUgaW4gdGhlIHNhbWUgc3RydWN0dXJl Lg0KPiANCj4gUmlnaHQgbm93IEkgc2VlIG5vIHNpbmdsZSBQTUQgd2hpY2ggYWN0dWFsbHkgc3Vw cG9ydHMNCj4gUlRFX0VUSF9SWF9PRkZMT0FEX0hFQURFUl9TUExJVCB3aXRoIGFib3ZlIGRlZmlu aXRpb24uDQo+IE1hbnkgZXhhbXBsZXMgYW5kIHRlc3QgYXBwcyBpbml0aWFsaXplIHRoZSBmaWVs ZCB0byAwIGV4cGxpY2l0bHkuIFRoZSBtb3N0IG9mDQo+IGRyaXZlcnMgc2ltcGx5IGlnbm9yZSBz cGxpdF9oZHJfc2l6ZSBzaW5jZSB0aGUgb2ZmbG9hZCBpcyBub3QgYWR2ZXJ0aXNlZCwgYnV0DQo+ IHNvbWUgZG91YmxlLWNoZWNrIHRoYXQgaXRzIHZhbHVlIGlzIDAuDQo+IA0KPiBJIHRoaW5rIHRo YXQgaXQgbWVhbnMgdGhhdCB0aGUgZmllbGQgc2hvdWxkIGJlIHJlbW92ZWQgb24gdGhlIG5leHQg TFRTLCBhbmQgSSdkDQo+IHNheSwgdG9nZXRoZXIgd2l0aCB0aGUgUlRFX0VUSF9SWF9PRkZMT0FE X0hFQURFUl9TUExJVCBvZmZsb2FkIGJpdC4NCj4gDQo+IFdlIHNob3VsZCBub3QgcmVkZWZpbmUg dGhlIG9mZmxvYWQgbWVhbmluZy4NCg0KWWVzLCB5b3UgYXJlIHJpZ2h0LiBObyBzaW5nbGUgUE1E IHN1cHBvcnRzIFJURV9FVEhfUlhfT0ZGTE9BRF9IRUFERVJfU1BMSVQgbm93Lg0KUHJldmlvdXNs eSwgSSB1c2VkIHRoaXMgZmxhZyBpcyB0byBkaXN0aW5ndWlzaCBidWZmZXIgc3BsaXQgYW5kIGhl YWRlciBzcGxpdC4NClRoZSBmb3JtZXIgc3VwcG9ydHMgbXVsdGktc2VnbWVudHMgc3BsaXQgYnkg bGVuZ3RoIGFuZCBvZmZzZXQuDQpUaGUgbGF0ZXIgc3VwcG9ydHMgdHdvIHNlZ21lbnRzIHNwbGl0 IGJ5IHByb3RvIGFuZCBvZmZzZXQuDQpBdCB0aGlzIGxldmVsLCBoZWFkZXIgc3BsaXQgaXMgYSBz dWJzZXQgb2YgYnVmZmVyIHNwbGl0Lg0KDQpTaW5jZSB3ZSBzaG91bGRuJ3QgcmVkZWZpbmUgdGhl IG1lYW5pbmcgb2YgdGhpcyBvZmZsb2FkLA0KSSB3aWxsIHVzZSB0aGUgUlRFX0VUSF9SWF9PRkZM T0FEX0JVRkZFUl9TUExJVCBmbGFnLg0KVGhlIGV4aXN0ZW5jZSBvZiB0dW5uZWwgbmVlZHMgdG8g ZGVmaW5lIGEgcHJvdG8gZmllbGQgaW4gYnVmZmVyIHNwbGl0LA0KYmVjYXVzZSBzb21lIFBNRHMg ZG8gbm90IHN1cHBvcnQgc3BsaXQgYmFzZWQgb24gbGVuZ3RoIGFuZCBvZmZzZXQuDQoNCj4gDQo+ IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCj4g Pg0KPiA+IEZvciBleGFtcGxlLCBsZXQncyBzdXBwb3NlIHdlIGNvbmZpZ3VyZWQgdGhlIFJ4IHF1 ZXVlIHdpdGggdGhlDQo+ID4gZm9sbG93aW5nIHNlZ21lbnRzOg0KPiA+ICAgICAgc2VnMCAtIHBv b2wwLCBvZmYwPTJCDQo+ID4gICAgICBzZWcxIC0gcG9vbDEsIG9mZjE9MTI4Qg0KPiANCj4gQ29y cmVzcG9uZGluZyBmZWF0dXJlIGlzIG5hbWVkIFJ4IGJ1ZmZlciBzcGxpdC4NCj4gRG9lcyBpdCBt ZWFuIHRoYXQgcHJvdG9jb2wgdHlwZSBiYXNlZCBoZWFkZXIgc3BsaXQgcmVxdWlyZXMgUnggYnVm ZmVyIHNwbGl0DQo+IGZlYXR1cmUgdG8gYmUgc3VwcG9ydGVkPw0KDQpQcm90b2NvbCB0eXBlIGJh c2VkIGhlYWRlciBzcGxpdCBkb2VzIG5vdCByZXF1aXJlcyBSeCBidWZmZXIgc3BsaXQuDQpJbiBw cmV2aW91cyBkZXNpZ24sIHRoZSBoZWFkZXIgc3BsaXQgYW5kIGJ1ZmZlciBzcGxpdCBhcmUgZXhj bHVzaXZlLg0KQmVjYXVzZSB3ZSBvbmx5IGNvbmZpZ3VyZSBvbmUgc3BsaXQgb2ZmbG9hZCBmb3Ig b25lIFJYIHF1ZXVlLg0KDQo+IA0KPiA+DQo+ID4gV2l0aCBoZWFkZXIgc3BsaXQgdHlwZSBjb25m aWd1cmVkIHdpdGggUlRFX0VUSF9SWF9IRUFERVJfU1BMSVRfVURQLA0KPiA+IHRoZSBwYWNrZXQg Y29uc2lzdHMgb2YgTUFDX0lQX1VEUF9QQVlMT0FEIHdpbGwgYmUgc3BsaXQgbGlrZSBmb2xsb3dp bmc6DQo+ID4gICAgICBzZWcwIC0gdWRwIGhlYWRlciBAIFJURV9QS1RNQlVGX0hFQURST09NICsg MiBpbiBtYnVmIGZyb20NCj4gcG9vbDANCj4gPiAgICAgIHNlZzEgLSBwYXlsb2FkIEAgMTI4IGlu IG1idWYgZnJvbSBwb29sMQ0KPiANCj4gSXMgaXQgYWx3YXlzIG91dGVybW9zdCBVRFA/IERvZXMg aXQgcmVxdWlyZSBib3RoIFVEUCBvdmVyIElQdjQgYW5kIFVEUCBvdmVyDQo+IElQdjYgdG8gYmUg c3VwcG9ydGVkPyBXaGF0IHdpbGwgaGFwcGVuIGlmIG9ubHkgb25lIGlzIHN1cHBvcnRlZD8gSG93 DQo+IGFwcGxpY2F0aW9uIGNhbiBmaW5kIG91dCB3aGljaCBwcm90b2NvbCBzdGFjayBhcmUgc3Vw cG9ydGVkPw0KDQpCb3RoIGlubmVyIGFuZCBvdXRlciBVRFAgYXJlIGNvbnNpZGVyZWQuDQpDdXJy ZW50IGRlc2lnbiBkb2VzIG5vdCBkaXN0aW5ndWlzaCBVRFAgb3ZlciBJUHY0IG9yIElQdjYuDQpJ ZiB3ZSB3YW50IHRvIHN1cHBvcnQgZ3JhbnVsYXJpdHkgbGlrZSBvbmx5IElQdjQgb3IgSVB2NiBz dXBwb3J0ZWQsDQp1c2VyIG5lZWQgYWRkIG1vcmUgY29uZmlndXJhdGlvbnMuDQoNCklmIGFwcGxp Y2F0aW9uIHdhbnQgdG8gZmluZCBvdXQgd2hpY2ggcHJvdG9jb2wgc3RhY2sgaXMgc3VwcG9ydGVk LA0Kb25lIHdheSBJIHRoaW5rIGlzIHRvIGV4cG9zZSB0aGUgcHJvdG9jb2wgc3RhY2sgc3VwcG9y dGVkIGJ5IHRoZSBkcml2ZXIgdGhyb3VnaCBkZXZfaW5mby4NCkFueSB0aG91Z2h0cyBhcmUgd2Vs Y29tZWQgOikNCg0KPiANCj4gPg0KPiA+IFRoZSBtZW1vcnkgYXR0cmlidXRlcyBmb3IgdGhlIHNw bGl0IHBhcnRzIG1heSBkaWZmZXIgZWl0aGVyIC0gZm9yDQo+ID4gZXhhbXBsZSB0aGUgbWVtcG9v bDAgYW5kIG1lbXBvb2wxIGJlbG9uZyB0byBkcGRrIG1lbW9yeSBhbmQNCj4gZXh0ZXJuYWwNCj4g PiBtZW1vcnksIHJlc3BlY3RpdmVseS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFh1YW4gRGlu ZyA8eHVhbi5kaW5nQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBZdWFuIFdhbmcgPHl1 YW54LndhbmdAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFdlbnh1YW4gV3UgPHdlbnh1 YW54Lnd1QGludGVsLmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogUWkgWmhhbmcgPHFpLnouemhhbmdA aW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAgbGliL2V0aGRldi9ydGVfZXRoZGV2LmMgfCAzNCAr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQ0KPiA+ICAgbGliL2V0aGRldi9ydGVfZXRoZGV2 LmggfCA0OA0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPiA+ ICAgMiBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhkZXYv cnRlX2V0aGRldi5jIGluZGV4DQo+ID4gMjlhM2Q4MDQ2Ni4uMjlhZGNkYzJmMCAxMDA2NDQNCj4g PiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+ICsrKyBiL2xpYi9ldGhkZXYvcnRl X2V0aGRldi5jDQo+ID4gQEAgLTE2NjEsNiArMTY2MSw3IEBAIHJ0ZV9ldGhfcnhfcXVldWVfY2hl Y2tfc3BsaXQoY29uc3Qgc3RydWN0DQo+IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgKnJ4X3NlZywNCj4g PiAgIAkJc3RydWN0IHJ0ZV9tZW1wb29sICptcGwgPSByeF9zZWdbc2VnX2lkeF0ubXA7DQo+ID4g ICAJCXVpbnQzMl90IGxlbmd0aCA9IHJ4X3NlZ1tzZWdfaWR4XS5sZW5ndGg7DQo+ID4gICAJCXVp bnQzMl90IG9mZnNldCA9IHJ4X3NlZ1tzZWdfaWR4XS5vZmZzZXQ7DQo+ID4gKwkJdWludDE2X3Qg cHJvdG8gPSByeF9zZWdbc2VnX2lkeF0ucHJvdG87DQo+ID4NCj4gPiAgIAkJaWYgKG1wbCA9PSBO VUxMKSB7DQo+ID4gICAJCQlSVEVfRVRIREVWX0xPRyhFUlIsICJudWxsIG1lbXBvb2wgcG9pbnRl clxuIik7DQo+IEBAIC0xNjk0LDEzDQo+ID4gKzE2OTUsMjkgQEAgcnRlX2V0aF9yeF9xdWV1ZV9j aGVja19zcGxpdChjb25zdCBzdHJ1Y3QNCj4gcnRlX2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0K PiA+ICAgCQl9DQo+ID4gICAJCW9mZnNldCArPSBzZWdfaWR4ICE9IDAgPyAwIDogUlRFX1BLVE1C VUZfSEVBRFJPT007DQo+ID4gICAJCSptYnBfYnVmX3NpemUgPSBydGVfcGt0bWJ1Zl9kYXRhX3Jv b21fc2l6ZShtcGwpOw0KPiA+IC0JCWxlbmd0aCA9IGxlbmd0aCAhPSAwID8gbGVuZ3RoIDogKm1i cF9idWZfc2l6ZTsNCj4gPiAtCQlpZiAoKm1icF9idWZfc2l6ZSA8IGxlbmd0aCArIG9mZnNldCkg ew0KPiA+IC0JCQlSVEVfRVRIREVWX0xPRyhFUlIsDQo+ID4gLQkJCQkgICAgICAgIiVzIG1idWZf ZGF0YV9yb29tX3NpemUgJXUgPCAldQ0KPiAoc2VnbWVudCBsZW5ndGg9JXUgKyBzZWdtZW50IG9m ZnNldD0ldSlcbiIsDQo+ID4gLQkJCQkgICAgICAgbXBsLT5uYW1lLCAqbWJwX2J1Zl9zaXplLA0K PiA+IC0JCQkJICAgICAgIGxlbmd0aCArIG9mZnNldCwgbGVuZ3RoLCBvZmZzZXQpOw0KPiA+IC0J CQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQlpZiAocHJvdG8gPT0gUlRFX0VUSF9SWF9IRUFERVJf U1BMSVRfTk9ORSkgew0KPiA+ICsJCQkvKiBDaGVjayBidWZmZXIgc3BsaXQuICovDQo+ID4gKwkJ CWxlbmd0aCA9IGxlbmd0aCAhPSAwID8gbGVuZ3RoIDogKm1icF9idWZfc2l6ZTsNCj4gPiArCQkJ aWYgKCptYnBfYnVmX3NpemUgPCBsZW5ndGggKyBvZmZzZXQpIHsNCj4gPiArCQkJCVJURV9FVEhE RVZfTE9HKEVSUiwNCj4gPiArCQkJCQkiJXMgbWJ1Zl9kYXRhX3Jvb21fc2l6ZSAldSA8ICV1DQo+ IChzZWdtZW50IGxlbmd0aD0ldSArIHNlZ21lbnQgb2Zmc2V0PSV1KVxuIiwNCj4gPiArCQkJCQlt cGwtPm5hbWUsICptYnBfYnVmX3NpemUsDQo+ID4gKwkJCQkJbGVuZ3RoICsgb2Zmc2V0LCBsZW5n dGgsIG9mZnNldCk7DQo+ID4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQkJfQ0KPiA+ICsJ CX0gZWxzZSB7DQo+ID4gKwkJCS8qIENoZWNrIGhlYWRlciBzcGxpdC4gKi8NCj4gPiArCQkJaWYg KGxlbmd0aCAhPSAwKSB7DQo+ID4gKwkJCQlSVEVfRVRIREVWX0xPRyhFUlIsICJzZWdtZW50IGxl bmd0aA0KPiBzaG91bGQgYmUgc2V0IHRvIHplcm8gaW4gaGVhZGVyIHNwbGl0XG4iKTsNCj4gPiAr CQkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCQl9DQo+ID4gKwkJCWlmICgqbWJwX2J1Zl9zaXpl IDwgb2Zmc2V0KSB7DQo+ID4gKwkJCQlSVEVfRVRIREVWX0xPRyhFUlIsDQo+ID4gKwkJCQkJIiVz IG1idWZfZGF0YV9yb29tX3NpemUgJXUgPCAldQ0KPiBzZWdtZW50IG9mZnNldClcbiIsDQo+ID4g KwkJCQkJbXBsLT5uYW1lLCAqbWJwX2J1Zl9zaXplLA0KPiA+ICsJCQkJCW9mZnNldCk7DQo+ID4g KwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQkJfQ0KPiA+ICAgCQl9DQo+ID4gICAJfQ0KPiA+ ICAgCXJldHVybiAwOw0KPiA+IEBAIC0xNzc4LDcgKzE3OTUsOCBAQCBydGVfZXRoX3J4X3F1ZXVl X3NldHVwKHVpbnQxNl90IHBvcnRfaWQsDQo+IHVpbnQxNl90IHJ4X3F1ZXVlX2lkLA0KPiA+ICAg CQlyeF9zZWcgPSAoY29uc3Qgc3RydWN0IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgKilyeF9jb25mLT5y eF9zZWc7DQo+ID4gICAJCW5fc2VnID0gcnhfY29uZi0+cnhfbnNlZzsNCj4gPg0KPiA+IC0JCWlm IChyeF9jb25mLT5vZmZsb2FkcyAmIFJURV9FVEhfUlhfT0ZGTE9BRF9CVUZGRVJfU1BMSVQpDQo+ IHsNCj4gPiArCQlpZiAocnhfY29uZi0+b2ZmbG9hZHMgJiBSVEVfRVRIX1JYX09GRkxPQURfQlVG RkVSX1NQTElUDQo+IHx8DQo+ID4gKwkJCXJ4X2NvbmYtPm9mZmxvYWRzICYNCj4gUlRFX0VUSF9S WF9PRkZMT0FEX0hFQURFUl9TUExJVCkgew0KPiA+ICAgCQkJcmV0ID0gcnRlX2V0aF9yeF9xdWV1 ZV9jaGVja19zcGxpdChyeF9zZWcsIG5fc2VnLA0KPiA+ICAgCQkJCQkJCSAgICZtYnBfYnVmX3Np emUsDQo+ID4gICAJCQkJCQkJICAgJmRldl9pbmZvKTsNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2V0 aGRldi9ydGVfZXRoZGV2LmggYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCBpbmRleA0KPiA+IDA0 Y2ZmOGVlMTAuLmU4MzcxYjk4ZWQgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2V0aGRldi9ydGVfZXRo ZGV2LmgNCj4gPiArKysgYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+IEBAIC0xMTk3LDEy ICsxMTk3LDMxIEBAIHN0cnVjdCBydGVfZXRoX3R4bW9kZSB7DQo+ID4gICAgKiAgICAgLSBwb29s IGZyb20gdGhlIGxhc3QgdmFsaWQgZWxlbWVudA0KPiA+ICAgICogICAgIC0gdGhlIGJ1ZmZlciBz aXplIGZyb20gdGhpcyBwb29sDQo+ID4gICAgKiAgICAgLSB6ZXJvIG9mZnNldA0KPiA+ICsgKg0K PiA+ICsgKiBIZWFkZXIgc3BsaXQgaXMgYSBzdWJzZXQgb2YgYnVmZmVyIHNwbGl0LiBUaGUgc3Bs aXQgaGFwcGVucyBhZnRlcg0KPiA+ICsgdGhlDQo+ID4gKyAqIHBhY2tldCBoZWFkZXIgYW5kIGJl Zm9yZSB0aGUgcGFja2V0IHBheWxvYWQuIEZvciBQTURzIHRoYXQgZG8gbm90DQo+ID4gKyAqIHN1 cHBvcnQgaGVhZGVyIHNwbGl0IGNvbmZpZ3VyYXRpb24gYnkgbGVuZ3RoLCB0aGUgbG9jYXRpb24g b2YgdGhlDQo+ID4gKyBzcGxpdA0KPiA+ICsgKiBuZWVkcyB0byBiZSBzcGVjaWZpZWQgYnkgdGhl IGhlYWRlciBwcm90b2NvbCB0eXBlLiBXaGlsZSBmb3INCj4gPiArIGJ1ZmZlciBzcGxpdCwNCj4g PiArICogdGhpcyBmaWVsZCBzaG91bGQgbm90IGJlIGNvbmZpZ3VyZWQuDQo+ID4gKyAqDQo+ID4g KyAqIElmIFJURV9FVEhfUlhfT0ZGTE9BRF9IRUFERVJfU1BMSVQgZmxhZyBpcyBzZXQgaW4gb2Zm bG9hZHMgZmllbGQsDQo+ID4gKyAqIHRoZSBQTUQgd2lsbCBzcGxpdCB0aGUgcmVjZWl2ZWQgcGFj a2V0cyBpbnRvIHR3byBzZXBhcmF0ZSByZWdpb25zOg0KPiA+ICsgKiAtIFRoZSBoZWFkZXIgYnVm ZmVyIHdpbGwgYmUgYWxsb2NhdGVkIGZyb20gdGhlIG1lbW9yeSBwb29sLA0KPiA+ICsgKiAgIHNw ZWNpZmllZCBpbiB0aGUgZmlyc3QgYXJyYXkgZWxlbWVudCwgdGhlIHNlY29uZCBidWZmZXIsIGZy b20gdGhlDQo+ID4gKyAqICAgcG9vbCBpbiB0aGUgc2Vjb25kIGVsZW1lbnQuDQo+ID4gKyAqDQo+ ID4gKyAqIC0gVGhlIGxlbmd0aHMgZG8gbm90IG5lZWQgdG8gYmUgY29uZmlndXJlZCBpbiBoZWFk ZXIgc3BsaXQuDQo+ID4gKyAqDQo+ID4gKyAqIC0gVGhlIG9mZnNldHMgZnJvbSB0aGUgc2VnbWVu dCBkZXNjcmlwdGlvbiBlbGVtZW50cyBzcGVjaWZ5DQo+ID4gKyAqICAgdGhlIGRhdGEgb2Zmc2V0 IGZyb20gdGhlIGJ1ZmZlciBiZWdpbm5pbmcgZXhjZXB0IHRoZSBmaXJzdCBtYnVmLg0KPiA+ICsg KiAgIFRoZSBmaXJzdCBzZWdtZW50IG9mZnNldCBpcyBhZGRlZCB3aXRoIFJURV9QS1RNQlVGX0hF QURST09NLg0KPiA+ICAgICovDQo+ID4gICBzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCB7DQo+ ID4gICAJc3RydWN0IHJ0ZV9tZW1wb29sICptcDsgLyoqPCBNZW1vcnkgcG9vbCB0byBhbGxvY2F0 ZSBzZWdtZW50DQo+IGZyb20uICovDQo+ID4gICAJdWludDE2X3QgbGVuZ3RoOyAvKio8IFNlZ21l bnQgZGF0YSBsZW5ndGgsIGNvbmZpZ3VyZXMgc3BsaXQgcG9pbnQuICovDQo+ID4gICAJdWludDE2 X3Qgb2Zmc2V0OyAvKio8IERhdGEgb2Zmc2V0IGZyb20gYmVnaW5uaW5nIG9mIG1idWYgZGF0YSBi dWZmZXIuDQo+ICovDQo+ID4gLQl1aW50MzJfdCByZXNlcnZlZDsgLyoqPCBSZXNlcnZlZCBmaWVs ZC4gKi8NCj4gPiArCXVpbnQxNl90IHByb3RvOyAvKio8IGhlYWRlciBwcm90b2NvbCB0eXBlLCBj b25maWd1cmVzIGhlYWRlciBzcGxpdA0KPiA+ICtwb2ludC4gKi8NCj4gDQo+IEkgcmVhbGl6ZSB0 aGF0IHlvdSBkb24ndCB3YW50IHRvIHVzZSBoZXJlIGVudW0gZGVmaW5lZCBhYm92ZSB0byBzYXZl IHNvbWUNCj4gcmVzZXJ2ZWQgc3BhY2UsIGJ1dCBkZXNjcmlwdGlvbiBtdXN0IHJlZmVyIHRvIHRo ZSBlbnVtDQo+IHJ0ZV9ldGhfcnhfaGVhZGVyX3NwbGl0X3Byb3RvY29sX3R5cGUuDQoNClRoYW5r cyBmb3IgeW91ciBzdWdnZXN0aW9uLCB3aWxsIGZpeCBpdCBpbiBuZXh0IHZlcnNpb24uDQoNCj4g DQo+ID4gKwl1aW50MTZfdCByZXNlcnZlZDsgLyoqPCBSZXNlcnZlZCBmaWVsZC4gKi8NCj4gDQo+ IEFzIGZhciBhcyBJIGNhbiBzZWUgdGhlIHN0cnVjdHVyZSBpcyBleHBlcmltZW50YWwuIFNvLCBp dCBzaG91bGQgbm90IGJlIHRoZQ0KPiBwcm9ibGVtIHRvIGV4dGVuZCBpdCwgYnV0IGl0IGlzIGEg cmVhbGx5IGdvb2QgcXVlc3Rpb24gcmFpc2VkIGJ5IFN0ZXBoZW4gaW4gUkZDDQo+IHYxIGRpc2N1 c3Npb24uDQo+IFNob3VsZG4ndCB3ZSByZXF1aXJlIHRoYXQgYWxsIHJlc2VydmVkIGZpZWxkcyBh cmUgaW5pdGlhbGl6ZWQgdG8gemVybyBhbmQNCj4gaWdub3JlZCBvbiBwcm9jZXNzaW5nPyBGcmFu a2x5IHNwZWFraW5nIEkgYWx3YXlzIHRob3VnaHQgc28sIGJ1dCBmYWlsZWQgdG8NCj4gZmluZCB0 aGUgcGxhY2Ugd2VyZSBpdCBpcyBkb2N1bWVudGVkLg0KDQpZZXMsIGl0IGNhbiBiZSBkb2N1bWVu dGVkLiBCeSBkZWZhdWx0IGlzIHNob3VsZCBiZSB6ZXJvLCBhbmQgd2UgY2FuIGNvbmZpZ3VyZQ0K aXQgdG8gZW5hYmxlIHByb3RvY29sIHR5cGUgYmFzZWQgYnVmZmVyIHNwbGl0Lg0KDQo+IA0KPiBA VGhvbWFzLCBARGF2aWQsIEBGZXJydWg/DQo+IA0KPiA+ICAgfTsNCj4gPg0KPiA+ICAgLyoqDQo+ ID4gQEAgLTEyMTIsNyArMTIzMSw3IEBAIHN0cnVjdCBydGVfZXRoX3J4c2VnX3NwbGl0IHsNCj4g PiAgICAqIEEgY29tbW9uIHN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIFJ4IHBhY2tldCBzZWdt ZW50IHByb3BlcnRpZXMuDQo+ID4gICAgKi8NCj4gPiAgIHVuaW9uIHJ0ZV9ldGhfcnhzZWcgew0K PiA+IC0JLyogVGhlIHNldHRpbmdzIGZvciBidWZmZXIgc3BsaXQgb2ZmbG9hZC4gKi8NCj4gPiAr CS8qIFRoZSBzZXR0aW5ncyBmb3IgYnVmZmVyIHNwbGl0IGFuZCBoZWFkZXIgc3BsaXQgb2ZmbG9h ZC4gKi8NCj4gPiAgIAlzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCBzcGxpdDsNCj4gPiAgIAkv KiBUaGUgb3RoZXIgZmVhdHVyZXMgc2V0dGluZ3Mgc2hvdWxkIGJlIGFkZGVkIGhlcmUuICovDQo+ ID4gICB9Ow0KPiA+IEBAIC0xNjY0LDYgKzE2ODMsMzEgQEAgc3RydWN0IHJ0ZV9ldGhfY29uZiB7 DQo+ID4gICAJCQkgICAgIFJURV9FVEhfUlhfT0ZGTE9BRF9RSU5RX1NUUklQKQ0KPiA+ICAgI2Rl ZmluZSBERVZfUlhfT0ZGTE9BRF9WTEFODQo+IFJURV9ERVBSRUNBVEVEKERFVl9SWF9PRkZMT0FE X1ZMQU4pDQo+ID4gUlRFX0VUSF9SWF9PRkZMT0FEX1ZMQU4NCj4gPg0KPiA+ICsvKioNCj4gPiAr ICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIGVudW0gbWF5IGNoYW5n ZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICogVGhpcyBlbnVtIGluZGljYXRlcyB0aGUg aGVhZGVyIHNwbGl0IHByb3RvY29sIHR5cGUgICovIGVudW0NCj4gPiArcnRlX2V0aF9yeF9oZWFk ZXJfc3BsaXRfcHJvdG9jb2xfdHlwZSB7DQo+ID4gKwlSVEVfRVRIX1JYX0hFQURFUl9TUExJVF9O T05FID0gMCwNCj4gPiArCVJURV9FVEhfUlhfSEVBREVSX1NQTElUX01BQywNCj4gPiArCVJURV9F VEhfUlhfSEVBREVSX1NQTElUX0lQVjQsDQo+ID4gKwlSVEVfRVRIX1JYX0hFQURFUl9TUExJVF9J UFY2LA0KPiA+ICsJUlRFX0VUSF9SWF9IRUFERVJfU1BMSVRfTDMsDQo+ID4gKwlSVEVfRVRIX1JY X0hFQURFUl9TUExJVF9UQ1AsDQo+ID4gKwlSVEVfRVRIX1JYX0hFQURFUl9TUExJVF9VRFAsDQo+ ID4gKwlSVEVfRVRIX1JYX0hFQURFUl9TUExJVF9TQ1RQLA0KPiA+ICsJUlRFX0VUSF9SWF9IRUFE RVJfU1BMSVRfTDQsDQo+ID4gKwlSVEVfRVRIX1JYX0hFQURFUl9TUExJVF9JTk5FUl9NQUMsDQo+ ID4gKwlSVEVfRVRIX1JYX0hFQURFUl9TUExJVF9JTk5FUl9JUFY0LA0KPiA+ICsJUlRFX0VUSF9S WF9IRUFERVJfU1BMSVRfSU5ORVJfSVBWNiwNCj4gPiArCVJURV9FVEhfUlhfSEVBREVSX1NQTElU X0lOTkVSX0wzLA0KPiA+ICsJUlRFX0VUSF9SWF9IRUFERVJfU1BMSVRfSU5ORVJfVENQLA0KPiA+ ICsJUlRFX0VUSF9SWF9IRUFERVJfU1BMSVRfSU5ORVJfVURQLA0KPiA+ICsJUlRFX0VUSF9SWF9I RUFERVJfU1BMSVRfSU5ORVJfU0NUUCwNCj4gPiArCVJURV9FVEhfUlhfSEVBREVSX1NQTElUX0lO TkVSX0w0LA0KPiANCj4gRW51bWVyYXRpb24gbWVtYmVycyBzaG91bGQgYmUgZG9jdW1lbnRlZC4g U2VlIG15IHF1ZXN0aW9uIGluIHRoZSBwYXRjaA0KPiBkZXNjcmlwdGlvbi4NCg0KVGhhbmtzIGZv ciB5b3VyIGRldGFpbGVkIGNvbW1lbnRzLCBxdWVzdGlvbnMgYXJlIGFuc3dlcmVkIGFjY29yZGlu Z2x5Lg0KDQpCZXN0IFJlZ2FyZHMsDQpYdWFuDQoNCj4gDQo+ID4gK307DQo+ID4gKw0KPiA+ICAg LyoNCj4gPiAgICAqIElmIG5ldyBSeCBvZmZsb2FkIGNhcGFiaWxpdGllcyBhcmUgZGVmaW5lZCwg dGhleSBhbHNvIG11c3QgYmUNCj4gPiAgICAqIG1lbnRpb25lZCBpbiBydGVfcnhfb2ZmbG9hZF9u YW1lcyBpbiBydGVfZXRoZGV2LmMgZmlsZS4NCg0K