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 72CD0A034C; Tue, 4 Jan 2022 16:40:56 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 036D740042; Tue, 4 Jan 2022 16:40:56 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id DE87840040 for ; Tue, 4 Jan 2022 16:40:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1641310854; x=1672846854; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=d8q7M/Nf93D3FNsiabE+YapmnSsMNQ8FFaElrsZxjSM=; b=UYPIyAcdf9kUJx2kWzvOmps+XUgM3hUJXirtvI48BKyNKxWApbvMQZfn cmjCqOcd97+kIIPKFR9+UOMu3FCF/ammIgvMJsyAn2jN8tU7OuYcX+GJu bVP6fkErv4qqz3mLLKREBFWkE/YgMTGBzecAWQV3vvPuqJzcJnPusrWwQ lyyzPTE7ZPG6dQUWOHZ/WwI0Rtq6i2EgBXg05//hoCXUjAzphbWolLSyC mxdU7xwZKUZQcRgIGBfXzc1c6eV2cKHsmzOg1km2BeU9kic/Vc1d8ASHS aicSf6FllmDtHh6r5+Sy4WVCaMrWYGrJvGC87XjkuYZOLV+8lRyDy418d g==; X-IronPort-AV: E=McAfee;i="6200,9189,10216"; a="242040383" X-IronPort-AV: E=Sophos;i="5.88,261,1635231600"; d="scan'208";a="242040383" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2022 07:40:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,261,1635231600"; d="scan'208";a="762856928" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga005.fm.intel.com with ESMTP; 04 Jan 2022 07:40:52 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Tue, 4 Jan 2022 07:40:51 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Tue, 4 Jan 2022 07:40:51 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.172) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Tue, 4 Jan 2022 07:40:50 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k+HUSTD5Lb7tvhU7A/7AcCO8iZRmEa2l3CH7bKtXjYd9wq/+d7xwMLoRZzh9ufcmjlYawdcHWuz8DlUw82E/J4DGefP7rIgjl6Z3n+8eurbw+YnBq0MoG9mRGxI9pwJMJbiFQqwN5Jfahk4mgq8jMSbNo2WrlXWy6NspAsAHXf+8jnMRQbIyO8sOrtwR39m7ikmWR1G5WCnHDo+YPgroGvWtMqBL3tH98g1JoAEGJd4cJu15dB4M02dMStAivx95+Ek2D76PaxfRXwEZwIUN5MSAvM7nHG0oQNbTYA7xp++TZ+87d2H3dvEniel9WVFTg5Nv6Kjdr/6jONnXom8Tsg== 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=d8q7M/Nf93D3FNsiabE+YapmnSsMNQ8FFaElrsZxjSM=; b=eUug9dNxaPojNovyL+cmt4guwQxoYQC9wto1iebHajQE/KZPJYMyaUxK96KRmTt+OXuFGvkm5k+QDm5cCmSve4CNH91T6L9SiPu2ppnL91g8WGEZjnZlDNDDScyj/4J7IpNUD3FRHMC6mJ3d25kbjlkuD2i2zdSq+qgE6ddZrxdfcYEMvLKzOQcZlWHj5l+n47U0Jngz1wMTVZZWJbKiefhQ+cuMWhJEnATe//G9glyMNGSF8Euvv9cnsJvpnMgpvyA6uZOUWA0L9ZfXY5ZtZtEPo+NkuJ/ILimOSsttR1L61Xi61jJ8LLvs4HtBIgRrl4o/yaQiqrJRBhqbJr5FMA== 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 DM4PR11MB5534.namprd11.prod.outlook.com (2603:10b6:5:391::22) by DM6PR11MB2732.namprd11.prod.outlook.com (2603:10b6:5:be::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.15; Tue, 4 Jan 2022 15:40:48 +0000 Received: from DM4PR11MB5534.namprd11.prod.outlook.com ([fe80::45d4:e368:a69b:4c20]) by DM4PR11MB5534.namprd11.prod.outlook.com ([fe80::45d4:e368:a69b:4c20%5]) with mapi id 15.20.4844.016; Tue, 4 Jan 2022 15:40:48 +0000 From: "Li, Xiaoyun" To: "Li, Xiaoyun" , "Singh, Aman Deep" , "Yigit, Ferruh" , "olivier.matz@6wind.com" , "mb@smartsharesystems.com" , "Ananyev, Konstantin" , "stephen@networkplumber.org" , "Medvedkin, Vladimir" CC: "dev@dpdk.org" Subject: RE: [PATCH v4 1/2] net: add functions to calculate UDP/TCP cksum in mbuf Thread-Topic: [PATCH v4 1/2] net: add functions to calculate UDP/TCP cksum in mbuf Thread-Index: AQHX6Dux3KSr8dkTwU2iZui3xadbK6wzfsEAgB+pDwCAAAmd4A== Date: Tue, 4 Jan 2022 15:40:48 +0000 Message-ID: References: <20211015051306.320328-1-xiaoyun.li@intel.com> <20211203113805.1025301-1-xiaoyun.li@intel.com> <20211203113805.1025301-2-xiaoyun.li@intel.com> <7ff44b44-ad45-f435-1563-55a80282c210@intel.com> In-Reply-To: Accept-Language: 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.200.16 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: 0cc27f48-4a45-4a1b-cb4f-08d9cf9894b2 x-ms-traffictypediagnostic: DM6PR11MB2732:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VGl1ZQUSHU0SuOVVgpMlWFKXyab04/Fxr8Y8bkf/uJ917cg/6YC+0Ue7mDrf5+8Z8Urk6fAIYADEnNLFGQmBvvCDXkfycMu64GFNixpPJHp9KAFKUKsn/O5C70XRTkx8f4XURRxyFacWqF62aVPl1KHyvjTmnMgL/U7sqX0LsjOA0/4fedkJFstl2tcgQ3gGr5KyxMrzR3m2EhA9XdbJybcrTm5uCdr/ptMB98k1SPwNd1GpGm1k8PA9oMGevI5OTyy2V+dLU8AtwgTK6aFcAHcoy/2tSPx4quQRVKafqcl4bScz34ULUwgSQn67uiymFuYPK+JXxMfUYmL964240zsfmRPMJx+BQI4n88F0jU5+j303qef/0G3fnMpB+hlLjVKuQb40jYRPH7utNXQCI88imQ+iFgcrQZrqzzUYrTWeMeWS3MuBOAFdQ1/gpIP0eTaNHiMBxWZo/7DdBmVMraHW4ceFO91xf9HCYZrTLmZIDtq3cqV1IfMHUVsi7GqUpz8McxB3zHGDXorBKHxu/8/Gdzyutic4Wg3pKVYT/CEunzaFVtOnKvp+2mmASUwWb4uOziwOXqzgX5SSEYPwU1V/WEzg2DHyaU8vOaQWxobZqQbyF68zkpGe7CJVc0SPyO8nD5JcXEuYLyjKm8R2G197SFzg4c8WwxQnQeoRHm9TE+eA8rn5Du+BM5f6aFNMCYQfCKz12JdWP2ocPbLBQlVS8scvnM2jibx9ELmnRsE= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5534.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(38070700005)(921005)(33656002)(2906002)(53546011)(2940100002)(66556008)(26005)(4326008)(8936002)(38100700002)(64756008)(122000001)(8676002)(66476007)(508600001)(76116006)(9686003)(66946007)(6636002)(30864003)(7696005)(83380400001)(110136005)(82960400001)(71200400001)(6506007)(55016003)(316002)(66446008)(86362001)(52536014)(5660300002)(186003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?czFsUHBuU3JaQTlOc2R1WlozcWVxS21zRFdaQVI0V0tXNC9qTUVQK3l0WUQ5?= =?utf-8?B?UTY1UjBtanRZSE81M1dKalA1MEl3Y3RDNVVOcnlFaExZK2oyQ0tZMGtnNzVN?= =?utf-8?B?NEQ2TWVaTkpsUmpjM2Fjakl4TlNQSW9GSGlsUmxOS1UxK1gvMktIYTJOeERV?= =?utf-8?B?U2dEVHl5SUZrUlh3VjA5MUM0dUx1elN4cXYwYXB2cmhLWkJlOEh1V3B4YkZr?= =?utf-8?B?NDBZUU5jbHYwaHpVNmo0RjhWNFJuczNNYTJJM1VLSkpVVE9IcWhNRzdVRGxG?= =?utf-8?B?SGt1WlJLdmJvalRsTUd4bmg5WGt6UiswUnV6UytwYUxCVDRUbzl2OWpjQlEw?= =?utf-8?B?R0Z5VWJpd25LWEJiVGt1bWkvZFFaK094Z1ZjNFRoSGxDamQrUjZFd0k2OUhV?= =?utf-8?B?TFlDRU1GSVZsejNZMHpjQVBxekYzUmJaZWc2TTFySXZjeWlLU0ltWElRYzZG?= =?utf-8?B?MllweVdLMXZPYlNHVlhCeEU5TGZjdnppRERBL0N4Q2k4SkFnS1A2UEQxKzR2?= =?utf-8?B?ZEc2NXpTdlAyR3ppWkQ2cHNic2h0WmhKZUxjMlo1Q2hVOCtBd0h4b21XVXIx?= =?utf-8?B?OWVjWi8xZjFUdEJsSStwZTd0bUZCVC9IZ2xNdEpMTjZESmIyNTgyRTdTMk1R?= =?utf-8?B?OXQxQVEvYWUrMVJwLzViQmIxbjdPU2MxVTVsUGs0U2Vsa3hnNmR4Mmd1TUVG?= =?utf-8?B?MW5XQysxcTQwWEVCWU5QdnVhQUVnUndZV09YNVMxWXFLNnpzV2FBbG9jU2Fv?= =?utf-8?B?dGpHNGV0R0dIeFlvQ1dSVWl5YlNPNTl3SEFCbnorWllRbU1wTWgzM0R5MW1t?= =?utf-8?B?bHVGYWoyRDBqaGxVWnBDNDVFYmxyYlkxMlV0UFFnY05iR25UaG5zWjgzbllQ?= =?utf-8?B?dGtOZnRVNXZRdDhyS05KWGZlcFpYNldWY1cxQnJhLytlMmM2Z09KSVQ2LzRu?= =?utf-8?B?ZlFDVE05Qjl3ampxVjRUZEp6d1NER2dnZW4yWjNsRFo0Y0FWVFBYYjB1NlNr?= =?utf-8?B?T051Zy9nZ0dyd29pY1kyU0R4UGxQYnZnbjRUVnpNZ0doTW55Q3hkSk9TQTgz?= =?utf-8?B?by85NXFOYWZiT29XYnFqRVBpaEwxQ0VodUhjSHFZd3Fub28zL2kzQW9ycVU0?= =?utf-8?B?T09VWmFqc2trSU8vUnd0bzBIYjhXV3pHZVlpdS91S3ZvSkpOdjBMSk9WZU5i?= =?utf-8?B?a0IwbFRodlhUbXB3b0hGR2ZQa09wRnQ3RFFLUFRTL2xOYlhBQjJIb3l4aGR4?= =?utf-8?B?NlRaeTlXRXMwc0gzSzNYclhxcEFJWmF3MVYvV1FMcHpmY0Yxamt6SThLYkw1?= =?utf-8?B?MTFJSUxrbnFkUnVkY05MNWtHNzJTanorenBtVC9zcEVsYnNLdzJCcjJ2TkdL?= =?utf-8?B?cUxHK0RHTHQ4TnEvemJxNmErK2JzQ3A3dU5KeHhpU1preWcxakFKanU5SkVR?= =?utf-8?B?bTVCZ2ZIYWQ4bG85Rnd2OVhEQ3o2anl0aTMxeCt4UVdkUWwxRHlNRGRQMXgv?= =?utf-8?B?dHhUWjh1YzNoTXpxdHVFSEhEeEI5bTFBaHBubngyc2wyTm5jYnR6ckp0OTlx?= =?utf-8?B?cHRJWnlyVXlySzZvR1RzZWJxUmNTUDZITVZuSVJrR0NEVldCZlNCQ2dzbG4z?= =?utf-8?B?MWdOY0hRQlpPMkhBRnoreXhJaFpZMGdIeWdya0ExUnowNXhSd0FrdDhRMXgv?= =?utf-8?B?ZGt3TFdKMXNjQXBCVkczU2ZKall4aStQbmNKRVQ3M3NrVlRuWW5KT0EyMisz?= =?utf-8?B?cUg2VzAwcUVDRnF4RGtCeFp0cDUwVXF4eUgzZ21XWk5aeEpwOWhLakhoeHRR?= =?utf-8?B?S3hjenIyemlvdDlIRStpSTRueVdlZHVZSWs5WkVDM0UvVUxoTEkzZElwQk9i?= =?utf-8?B?L3V3UUh3bTd4K1hmKzd5TnY0eTlIRjV1N2ZCb0FieGpKWm5VSlBURkNqaVBx?= =?utf-8?B?Zm81ZWJkSHRLTUVjWkpUcVN2cHdLT255YmZqSWsyYnFtK05JRFJWalZoWkhD?= =?utf-8?B?SHdPQWMxa0RBaXJPVG0xOFlHWHZxUktyNDRYek9CcTB6RjROWFdUMFFjQ3Iw?= =?utf-8?B?OHlWTzhjVGZGdmdrVWRMei90VWdnM00yeEo5VVp0UGhzOXZKcXIxVUwvVmI3?= =?utf-8?B?M0ZIM2NFNDV3KzVDTGFLcm9weDV2anlqTEM3WXJGeVJGWjNhMjZZRGJnRE1h?= =?utf-8?Q?Lt8C0BQemIWEr9LNfWatR5U=3D?= 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: DM4PR11MB5534.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0cc27f48-4a45-4a1b-cb4f-08d9cf9894b2 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jan 2022 15:40:48.5110 (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: 1Br6hPHj+RXhCnGY01qYuNKFR7vk7XmQaH1wjn27Fs46Y/AYed9Y34jZ+EribENBpsCsxYEJEBMNhFd1INY7gw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB2732 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 SGkNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMaSwgWGlhb3l1biA8 eGlhb3l1bi5saUBpbnRlbC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIEphbnVhcnkgNCwgMjAyMiAx NToxOQ0KPiBUbzogU2luZ2gsIEFtYW4gRGVlcCA8YW1hbi5kZWVwLnNpbmdoQGludGVsLmNvbT47 IFlpZ2l0LCBGZXJydWgNCj4gPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+OyBvbGl2aWVyLm1hdHpA NndpbmQuY29tOw0KPiBtYkBzbWFydHNoYXJlc3lzdGVtcy5jb207IEFuYW55ZXYsIEtvbnN0YW50 aW4NCj4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+OyBzdGVwaGVuQG5ldHdvcmtwbHVt YmVyLm9yZzsNCj4gTWVkdmVka2luLCBWbGFkaW1pciA8dmxhZGltaXIubWVkdmVka2luQGludGVs LmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9yZw0KPiBTdWJqZWN0OiBSRTogW1BBVENIIHY0IDEvMl0g bmV0OiBhZGQgZnVuY3Rpb25zIHRvIGNhbGN1bGF0ZSBVRFAvVENQIGNrc3VtIGluDQo+IG1idWYN Cj4gDQo+IEhpDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTog U2luZ2gsIEFtYW4gRGVlcCA8YW1hbi5kZWVwLnNpbmdoQGludGVsLmNvbT4NCj4gPiBTZW50OiBX ZWRuZXNkYXksIERlY2VtYmVyIDE1LCAyMDIxIDExOjM0DQo+ID4gVG86IExpLCBYaWFveXVuIDx4 aWFveXVuLmxpQGludGVsLmNvbT47IFlpZ2l0LCBGZXJydWgNCj4gPiA8ZmVycnVoLnlpZ2l0QGlu dGVsLmNvbT47IG9saXZpZXIubWF0ekA2d2luZC5jb207DQo+ID4gbWJAc21hcnRzaGFyZXN5c3Rl bXMuY29tOyBBbmFueWV2LCBLb25zdGFudGluDQo+ID4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRl bC5jb20+OyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsNCj4gTWVkdmVka2luLA0KPiA+IFZs YWRpbWlyIDx2bGFkaW1pci5tZWR2ZWRraW5AaW50ZWwuY29tPg0KPiA+IENjOiBkZXZAZHBkay5v cmcNCj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHY0IDEvMl0gbmV0OiBhZGQgZnVuY3Rpb25zIHRv IGNhbGN1bGF0ZSBVRFAvVENQDQo+ID4gY2tzdW0gaW4gbWJ1Zg0KPiA+DQo+ID4NCj4gPiBPbiAx Mi8zLzIwMjEgNTowOCBQTSwgWGlhb3l1biBMaSB3cm90ZToNCj4gPiA+IEFkZCBmdW5jdGlvbnMg dG8gY2FsbCBydGVfcmF3X2Nrc3VtX21idWYoKSB0byBjYWxjdWxhdGUgSVB2NC82DQo+ID4gPiBV RFAvVENQIGNoZWNrc3VtIGluIG1idWYgd2hpY2ggY2FuIGJlIG92ZXIgbXVsdGktc2VnbWVudHMu DQo+ID4gPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogWGlhb3l1biBMaSA8eGlhb3l1bi5saUBpbnRl bC5jb20+DQo+ID4gPiAtLS0NCj4gPiA+ICAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8y Ml8wMy5yc3QgfCAgMTAgKysNCj4gPiA+ICAgbGliL25ldC9ydGVfaXAuaCAgICAgICAgICAgICAg ICAgICAgICAgfCAxODYgKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gICBsaWIvbmV0 L3ZlcnNpb24ubWFwICAgICAgICAgICAgICAgICAgICB8ICAxMCArKw0KPiA+ID4gICAzIGZpbGVz IGNoYW5nZWQsIDIwNiBpbnNlcnRpb25zKCspDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL2Rv Yy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMDMucnN0DQo+ID4gPiBiL2RvYy9ndWlkZXMv cmVsX25vdGVzL3JlbGVhc2VfMjJfMDMucnN0DQo+ID4gPiBpbmRleCA2ZDk5ZDFlYWE5Li43YTA4 MmM0NDI3IDEwMDY0NA0KPiA+ID4gLS0tIGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8y Ml8wMy5yc3QNCj4gPiA+ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMDMu cnN0DQo+ID4gPiBAQCAtNTUsNiArNTUsMTMgQEAgTmV3IEZlYXR1cmVzDQo+ID4gPiAgICAgICAg QWxzbywgbWFrZSBzdXJlIHRvIHN0YXJ0IHRoZSBhY3R1YWwgdGV4dCBhdCB0aGUgbWFyZ2luLg0K PiA+ID4gICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NCj4gPiA+DQo+ID4gPiArKiAqKkFkZGVkIGZ1bmN0aW9ucyB0byBjYWxjdWxh dGUgVURQL1RDUCBjaGVja3N1bSBpbiBtYnVmLioqDQo+ID4gPiArICAqIEFkZGVkIHRoZSBmb2xs b3dpbmcgZnVuY3Rpb25zIHRvIGNhbGN1bGF0ZSBVRFAvVENQIGNoZWNrc3VtIG9mDQo+ID4gcGFj a2V0cw0KPiA+ID4gKyAgICB3aGljaCBjYW4gYmUgb3ZlciBtdWx0aS1zZWdtZW50czoNCj4gPiA+ ICsgICAgLSBgYHJ0ZV9pcHY0X3VkcHRjcF9ja3N1bV9tYnVmKClgYA0KPiA+ID4gKyAgICAtIGBg cnRlX2lwdjRfdWRwdGNwX2Nrc3VtX21idWZfdmVyaWZ5KClgYA0KPiA+ID4gKyAgICAtIGBgcnRl X2lwdjZfdWRwdGNwX2Nrc3VtX21idWYoKWBgDQo+ID4gPiArICAgIC0gYGBydGVfaXB2Nl91ZHB0 Y3BfY2tzdW1fbWJ1Zl92ZXJpZnkoKWBgDQo+ID4gPg0KPiA+ID4gICBSZW1vdmVkIEl0ZW1zDQo+ ID4gPiAgIC0tLS0tLS0tLS0tLS0NCj4gPiA+IEBAIC04NCw2ICs5MSw5IEBAIEFQSSBDaGFuZ2Vz DQo+ID4gPiAgICAgIEFsc28sIG1ha2Ugc3VyZSB0byBzdGFydCB0aGUgYWN0dWFsIHRleHQgYXQg dGhlIG1hcmdpbi4NCj4gPiA+ICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4NCj4gPiA+ICsqIG5ldDogYWRkZWQgZXhwZXJp bWVudGFsIGZ1bmN0aW9ucw0KPiA+ID4gK2BgcnRlX2lwdjRfdWRwdGNwX2Nrc3VtX21idWYoKWBg LA0KPiA+ID4gKyAgYGBydGVfaXB2NF91ZHB0Y3BfY2tzdW1fbWJ1Zl92ZXJpZnkoKWBgLA0KPiA+ ID4gK2BgcnRlX2lwdjZfdWRwdGNwX2Nrc3VtX21idWYoKWBgLA0KPiA+ID4gKyAgYGBydGVfaXB2 Nl91ZHB0Y3BfY2tzdW1fbWJ1Zl92ZXJpZnkoKWBgDQo+ID4gPg0KPiA+ID4gICBBQkkgQ2hhbmdl cw0KPiA+ID4gICAtLS0tLS0tLS0tLQ0KPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9uZXQvcnRlX2lw LmggYi9saWIvbmV0L3J0ZV9pcC5oIGluZGV4DQo+ID4gPiBjNTc1MjUwODUyLi41MzRmNDAxZDI2 IDEwMDY0NA0KPiA+ID4gLS0tIGEvbGliL25ldC9ydGVfaXAuaA0KPiA+ID4gKysrIGIvbGliL25l dC9ydGVfaXAuaA0KPiA+ID4gQEAgLTQwMCw2ICs0MDAsNjUgQEAgcnRlX2lwdjRfdWRwdGNwX2Nr c3VtKGNvbnN0IHN0cnVjdA0KPiBydGVfaXB2NF9oZHINCj4gPiAqaXB2NF9oZHIsIGNvbnN0IHZv aWQgKmw0X2hkcikNCj4gPiA+ICAgCXJldHVybiBja3N1bTsNCj4gPiA+ICAgfQ0KPiA+ID4NCj4g PiA+ICsvKioNCj4gPiA+ICsgKiBAaW50ZXJuYWwgQ2FsY3VsYXRlIHRoZSBub24tY29tcGxlbWVu dGVkIElQdjQgTDQgY2hlY2tzdW0gb2YgYQ0KPiA+ID4gK3BhY2tldCAgKi8gc3RhdGljIGlubGlu ZSB1aW50MTZfdA0KPiA+ID4gK19fcnRlX2lwdjRfdWRwdGNwX2Nrc3VtX21idWYoY29uc3QNCj4g PiA+ICtzdHJ1Y3QgcnRlX21idWYgKm0sDQo+ID4gPiArCQkJICAgICBjb25zdCBzdHJ1Y3QgcnRl X2lwdjRfaGRyICppcHY0X2hkciwNCj4gPiA+ICsJCQkgICAgIHVpbnQxNl90IGw0X29mZikNCj4g PiA+ICt7DQo+ID4gPiArCXVpbnQxNl90IHJhd19ja3N1bTsNCj4gPiA+ICsJdWludDMyX3QgY2tz dW07DQo+ID4gPiArDQo+ID4gPiArCWlmIChsNF9vZmYgPiBtLT5wa3RfbGVuKQ0KPiA+ID4gKwkJ cmV0dXJuIDA7DQo+ID4gPiArDQo+ID4gPiArCWlmIChydGVfcmF3X2Nrc3VtX21idWYobSwgbDRf b2ZmLCBtLT5wa3RfbGVuIC0gbDRfb2ZmLA0KPiA+ICZyYXdfY2tzdW0pKQ0KPiA+ID4gKwkJcmV0 dXJuIDA7DQo+ID4gPiArDQo+ID4gPiArCWNrc3VtID0gcmF3X2Nrc3VtICsgcnRlX2lwdjRfcGhk cl9ja3N1bShpcHY0X2hkciwgMCk7DQo+ID4gPiArDQo+ID4gPiArCWNrc3VtID0gKChja3N1bSAm IDB4ZmZmZjAwMDApID4+IDE2KSArIChja3N1bSAmIDB4ZmZmZik7DQo+ID4gQXQgdGltZXMsIGV2 ZW4gYWZ0ZXIgYWJvdmUgb3BlcmF0aW9uICJja3N1bSIgbWlnaHQgc3RheSBhYm92ZSAxNi1iaXRz LA0KPiA+IGV4ICJja3N1bSA9IDB4MUZGRkYiIHRvIHN0YXJ0IHdpdGguDQo+ID4gQ2FuIHdlIGNv bnNpZGVyIHVzaW5nICJyZXR1cm4gX19ydGVfcmF3X2Nrc3VtX3JlZHVjZShja3N1bSk7Ig0KPiAN Cj4gV2lsbCB1c2UgaXQgaW4gbmV4dCB2ZXJzaW9uLiBUaGFua3MuDQo+IA0KPiBBbHNvLCBub3Qg cmVsYXRlZCB0byB0aGlzIHBhdGNoLiBJdCBtZWFucyB0aGF0IF9fcnRlX2lwdjRfdWRwdGNwX2Nr c3VtIGFuZA0KPiBfX3J0ZV9pcHY2X3VkcHRjcF9ja3N1bSBoYXZlIHRoZSBzYW1lIGlzc3VlLCBy aWdodD8NCj4gU2hvdWxkIGFueW9uZSBmaXggdGhhdD8NCg0KRm9yZ290IHRoZSBpbnRlbnQgaGVy ZS4NCnJ0ZV9yYXdfY2tzdW1fbWJ1ZigpIGFscmVhZHkgY2FsbHMgX19ydGVfcmF3X2Nrc3VtX3Jl ZHVjZSgpLg0KU28gYWN0dWFsbHksIGl0J3MgYSByZXN1bHQgb2YgdWludDE2X3QgKyB1aW50MTZf dC4gU28gaXQncyBpbXBvc3NpYmxlIG9mIHlvdXIgY2FzZS4gVGhlcmUncyBubyBuZWVkIHRvIGNh bGwgX19ydGVfcmF3X2Nrc3VtX3JlZHVjZSgpLg0KDQo+IA0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1 cm4gKHVpbnQxNl90KWNrc3VtOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgKiBAd2FybmluZw0KPiA+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNo YW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIENvbXB1dGUg dGhlIElQdjQgVURQL1RDUCBjaGVja3N1bSBvZiBhIHBhY2tldC4NCj4gPiA+ICsgKg0KPiA+ID4g KyAqIEBwYXJhbSBtDQo+ID4gPiArICogICBUaGUgcG9pbnRlciB0byB0aGUgbWJ1Zi4NCj4gPiA+ ICsgKiBAcGFyYW0gaXB2NF9oZHINCj4gPiA+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBjb250 aWd1b3VzIElQdjQgaGVhZGVyLg0KPiA+ID4gKyAqIEBwYXJhbSBsNF9vZmYNCj4gPiA+ICsgKiAg IFRoZSBvZmZzZXQgaW4gYnl0ZXMgdG8gc3RhcnQgTDQgY2hlY2tzdW0uDQo+ID4gPiArICogQHJl dHVybg0KPiA+ID4gKyAqICAgVGhlIGNvbXBsZW1lbnRlZCBjaGVja3N1bSB0byBzZXQgaW4gdGhl IEw0IGhlYWRlci4NCj4gPiA+ICsgKi8NCj4gPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiA+ ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4gPiArcnRlX2lwdjRfdWRwdGNwX2Nrc3VtX21i dWYoY29uc3Qgc3RydWN0IHJ0ZV9tYnVmICptLA0KPiA+ID4gKwkJCSAgIGNvbnN0IHN0cnVjdCBy dGVfaXB2NF9oZHIgKmlwdjRfaGRyLCB1aW50MTZfdCBsNF9vZmYpDQo+ID4gew0KPiA+ID4gKwl1 aW50MTZfdCBja3N1bSA9IF9fcnRlX2lwdjRfdWRwdGNwX2Nrc3VtX21idWYobSwgaXB2NF9oZHIs DQo+ID4gbDRfb2ZmKTsNCj4gPiA+ICsNCj4gPiA+ICsJY2tzdW0gPSB+Y2tzdW07DQo+ID4gPiAr DQo+ID4gPiArCS8qDQo+ID4gPiArCSAqIFBlciBSRkMgNzY4OiBJZiB0aGUgY29tcHV0ZWQgY2hl Y2tzdW0gaXMgemVybyBmb3IgVURQLA0KPiA+ID4gKwkgKiBpdCBpcyB0cmFuc21pdHRlZCBhcyBh bGwgb25lcw0KPiA+ID4gKwkgKiAodGhlIGVxdWl2YWxlbnQgaW4gb25lJ3MgY29tcGxlbWVudCBh cml0aG1ldGljKS4NCj4gPiA+ICsJICovDQo+ID4gPiArCWlmIChja3N1bSA9PSAwICYmIGlwdjRf aGRyLT5uZXh0X3Byb3RvX2lkID09IElQUFJPVE9fVURQKQ0KPiA+ID4gKwkJY2tzdW0gPSAweGZm ZmY7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiBja3N1bTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ ID4gPiAgIC8qKg0KPiA+ID4gICAgKiBWYWxpZGF0ZSB0aGUgSVB2NCBVRFAgb3IgVENQIGNoZWNr c3VtLg0KPiA+ID4gICAgKg0KPiA+ID4gQEAgLTQyNiw2ICs0ODUsMzggQEAgcnRlX2lwdjRfdWRw dGNwX2Nrc3VtX3ZlcmlmeShjb25zdCBzdHJ1Y3QNCj4gPiBydGVfaXB2NF9oZHIgKmlwdjRfaGRy LA0KPiA+ID4gICAJcmV0dXJuIDA7DQo+ID4gPiAgIH0NCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4g PiArICogQHdhcm5pbmcNCj4gPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBj aGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBWZXJpZnkg dGhlIElQdjQgVURQL1RDUCBjaGVja3N1bSBvZiBhIHBhY2tldC4NCj4gPiA+ICsgKg0KPiA+ID4g KyAqIEluIGNhc2Ugb2YgVURQLCB0aGUgY2FsbGVyIG11c3QgZmlyc3QgY2hlY2sgaWYNCj4gPiA+ ICt1ZHBfaGRyLT5kZ3JhbV9ja3N1bSBpcyAwDQo+ID4gPiArICogKGkuZS4gbm8gY2hlY2tzdW0p Lg0KPiA+ID4gKyAqDQo+ID4gPiArICogQHBhcmFtIG0NCj4gPiA+ICsgKiAgIFRoZSBwb2ludGVy IHRvIHRoZSBtYnVmLg0KPiA+ID4gKyAqIEBwYXJhbSBpcHY0X2hkcg0KPiA+ID4gKyAqICAgVGhl IHBvaW50ZXIgdG8gdGhlIGNvbnRpZ3VvdXMgSVB2NCBoZWFkZXIuDQo+ID4gPiArICogQHBhcmFt IGw0X29mZg0KPiA+ID4gKyAqICAgVGhlIG9mZnNldCBpbiBieXRlcyB0byBzdGFydCBMNCBjaGVj a3N1bS4NCj4gPiA+ICsgKiBAcmV0dXJuDQo+ID4gPiArICogICBSZXR1cm4gMCBpZiB0aGUgY2hl Y2tzdW0gaXMgY29ycmVjdCwgZWxzZSAtMS4NCj4gPiA+ICsgKi8NCj4gPiA+ICtfX3J0ZV9leHBl cmltZW50YWwNCj4gPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4gPiArcnRlX2lwdjRf dWRwdGNwX2Nrc3VtX21idWZfdmVyaWZ5KGNvbnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSwNCj4gPiA+ ICsJCQkJICBjb25zdCBzdHJ1Y3QgcnRlX2lwdjRfaGRyICppcHY0X2hkciwNCj4gPiA+ICsJCQkJ ICB1aW50MTZfdCBsNF9vZmYpDQo+ID4gPiArew0KPiA+ID4gKwl1aW50MTZfdCBja3N1bSA9IF9f cnRlX2lwdjRfdWRwdGNwX2Nrc3VtX21idWYobSwgaXB2NF9oZHIsDQo+ID4gbDRfb2ZmKTsNCj4g PiA+ICsNCj4gPiA+ICsJaWYgKGNrc3VtICE9IDB4ZmZmZikNCj4gPiA+ICsJCXJldHVybiAtMTsN Cj4gPiBja3N1bSBvdGhlciB0aGFuIDB4ZmZmZiwgc2hvdWxkIHJldHVybiBlcnJvci4gSXMgdGhh dCB0aGUgaW50ZW50IG9yIEkNCj4gPiBhbSBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLg0KPiAN Cj4gVGhpcyBpcyB0aGUgaW50ZW50LiBUaGlzIGZ1bmN0aW9uIGlzIHRvIHZlcmlmeSBpZiB0aGUg Y2tzdW0gaW4gdGhlIHBhY2tldCBpcyBjb3JyZWN0Lg0KPiANCj4gSXQncyBkaWZmZXJlbnQgZnJv bSBjYWxsaW5nIHJ0ZV9pcHY0LzZfdWRwdGNwX2Nrc3VtX21idWYoKS4gV2hlbiBjYWxsaW5nDQo+ IHJ0ZV9pcHY0LzZfdWRwdGNwX2Nrc3VtX21idWYoKSwgeW91IG5lZWQgdG8gc2V0IHRoZSBja3N1 bSBpbiB1ZHAvdGNwDQo+IGhlYWRlciBhcyAwLiBUaGVuIGNhbGN1bGF0ZSB0aGUgY2tzdW0uDQo+ IA0KPiBCdXQgaGVyZSwgdXNlciBzaG91bGQgZGlyZWN0bHkgY2FsbCB0aGlzIGZ1bmN0aW9uIHdp dGggdGhlIG9yaWdpbmFsIHBhY2tldC4gVGhlbg0KPiBpZiB0aGUgdWRwL3RjcCBja3N1bSBpcyBj b3JyZWN0LCBhZnRlciB0aGUgY2FsY3VsYXRpb24gKHBsZWFzZSBub3RlIHRoYXQsIHRoaXMgaXMN Cj4gY2FsbGluZyBfX3J0ZV9pcHY0X3VkcHRjcF9ja3N1bV9tYnVmKCksIHNvIHRoZSByZXN1bHQg bmVlZHMgdG8gYmUgfiksIGl0DQo+IHNob3VsZCBiZSAweGZmZmYsIG5hbWVseSwgfmNrc3VtID0g MCB3aGljaCBtZWFucyBja3N1bSBpcyBjb3JyZWN0LiBZb3UgY2FuDQo+IHNlZSBydGVfaXB2NC82 X3VkcHRjcF9ja3N1bV92ZXJpZnkoKSBpcyBkb2luZyB0aGUgc2FtZS4NCj4gDQo+ID4gPiArDQo+ ID4gPiArCXJldHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICAgLyoqDQo+ID4gPiAg ICAqIElQdjYgSGVhZGVyDQo+ID4gPiAgICAqLw0KPiA+ID4gQEAgLTUzOCw2ICs2MjksNjggQEAg cnRlX2lwdjZfdWRwdGNwX2Nrc3VtKGNvbnN0IHN0cnVjdA0KPiBydGVfaXB2Nl9oZHINCj4gPiAq aXB2Nl9oZHIsIGNvbnN0IHZvaWQgKmw0X2hkcikNCj4gPiA+ICAgCXJldHVybiBja3N1bTsNCj4g PiA+ICAgfQ0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+ICsgKiBAaW50ZXJuYWwgQ2FsY3VsYXRl IHRoZSBub24tY29tcGxlbWVudGVkIElQdjYgTDQgY2hlY2tzdW0gb2YgYQ0KPiA+ID4gK3BhY2tl dCAgKi8gc3RhdGljIGlubGluZSB1aW50MTZfdA0KPiA+ID4gK19fcnRlX2lwdjZfdWRwdGNwX2Nr c3VtX21idWYoY29uc3QNCj4gPiA+ICtzdHJ1Y3QgcnRlX21idWYgKm0sDQo+ID4gPiArCQkJICAg ICBjb25zdCBzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2X2hkciwNCj4gPiA+ICsJCQkgICAgIHVp bnQxNl90IGw0X29mZikNCj4gPiA+ICt7DQo+ID4gPiArCXVpbnQxNl90IHJhd19ja3N1bTsNCj4g PiA+ICsJdWludDMyX3QgY2tzdW07DQo+ID4gPiArDQo+ID4gPiArCWlmIChsNF9vZmYgPiBtLT5w a3RfbGVuKQ0KPiA+ID4gKwkJcmV0dXJuIDA7DQo+ID4gPiArDQo+ID4gPiArCWlmIChydGVfcmF3 X2Nrc3VtX21idWYobSwgbDRfb2ZmLCBtLT5wa3RfbGVuIC0gbDRfb2ZmLA0KPiA+ICZyYXdfY2tz dW0pKQ0KPiA+ID4gKwkJcmV0dXJuIDA7DQo+ID4gPiArDQo+ID4gPiArCWNrc3VtID0gcmF3X2Nr c3VtICsgcnRlX2lwdjZfcGhkcl9ja3N1bShpcHY2X2hkciwgMCk7DQo+ID4gPiArDQo+ID4gPiAr CWNrc3VtID0gKChja3N1bSAmIDB4ZmZmZjAwMDApID4+IDE2KSArIChja3N1bSAmIDB4ZmZmZik7 DQo+ID4gU2FtZSwgcGxlYXNlIGNoZWNrIGlmIHdlIGNhbiBvcHQgZm9yIF9fcnRlX3Jhd19ja3N1 bV9yZWR1Y2UoY2tzdW0pDQo+ID4gPiArDQo+ID4gPiArCXJldHVybiAodWludDE2X3QpY2tzdW07 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIEB3YXJuaW5nDQo+ID4g PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Ig bm90aWNlLg0KPiA+ID4gKyAqDQo+ID4gPiArICogUHJvY2VzcyB0aGUgSVB2NiBVRFAgb3IgVENQ IGNoZWNrc3VtIG9mIGEgcGFja2V0Lg0KPiA+ID4gKyAqDQo+ID4gPiArICogVGhlIElQdjYgaGVh ZGVyIG11c3Qgbm90IGJlIGZvbGxvd2VkIGJ5IGV4dGVuc2lvbiBoZWFkZXJzLiBUaGUNCj4gPiA+ ICtsYXllciA0DQo+ID4gPiArICogY2hlY2tzdW0gbXVzdCBiZSBzZXQgdG8gMCBpbiB0aGUgTDQg aGVhZGVyIGJ5IHRoZSBjYWxsZXIuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBAcGFyYW0gbQ0KPiA+ ID4gKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIG1idWYuDQo+ID4gPiArICogQHBhcmFtIGlwdjZf aGRyDQo+ID4gPiArICogICBUaGUgcG9pbnRlciB0byB0aGUgY29udGlndW91cyBJUHY2IGhlYWRl ci4NCj4gPiA+ICsgKiBAcGFyYW0gbDRfb2ZmDQo+ID4gPiArICogICBUaGUgb2Zmc2V0IGluIGJ5 dGVzIHRvIHN0YXJ0IEw0IGNoZWNrc3VtLg0KPiA+ID4gKyAqIEByZXR1cm4NCj4gPiA+ICsgKiAg IFRoZSBjb21wbGVtZW50ZWQgY2hlY2tzdW0gdG8gc2V0IGluIHRoZSBMNCBoZWFkZXIuDQo+ID4g PiArICovDQo+ID4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gPiArc3RhdGljIGlubGluZSB1 aW50MTZfdA0KPiA+ID4gK3J0ZV9pcHY2X3VkcHRjcF9ja3N1bV9tYnVmKGNvbnN0IHN0cnVjdCBy dGVfbWJ1ZiAqbSwNCj4gPiA+ICsJCQkgICBjb25zdCBzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2 X2hkciwgdWludDE2X3QgbDRfb2ZmKQ0KPiA+IHsNCj4gPiA+ICsJdWludDE2X3QgY2tzdW0gPSBf X3J0ZV9pcHY2X3VkcHRjcF9ja3N1bV9tYnVmKG0sIGlwdjZfaGRyLA0KPiA+IGw0X29mZik7DQo+ ID4gPiArDQo+ID4gPiArCWNrc3VtID0gfmNrc3VtOw0KPiA+ID4gKw0KPiA+ID4gKwkvKg0KPiA+ ID4gKwkgKiBQZXIgUkZDIDc2ODogSWYgdGhlIGNvbXB1dGVkIGNoZWNrc3VtIGlzIHplcm8gZm9y IFVEUCwNCj4gPiA+ICsJICogaXQgaXMgdHJhbnNtaXR0ZWQgYXMgYWxsIG9uZXMNCj4gPiA+ICsJ ICogKHRoZSBlcXVpdmFsZW50IGluIG9uZSdzIGNvbXBsZW1lbnQgYXJpdGhtZXRpYykuDQo+ID4g PiArCSAqLw0KPiA+ID4gKwlpZiAoY2tzdW0gPT0gMCAmJiBpcHY2X2hkci0+cHJvdG8gPT0gSVBQ Uk9UT19VRFApDQo+ID4gPiArCQlja3N1bSA9IDB4ZmZmZjsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0 dXJuIGNrc3VtOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICAgLyoqDQo+ID4gPiAgICAqIFZh bGlkYXRlIHRoZSBJUHY2IFVEUCBvciBUQ1AgY2hlY2tzdW0uDQo+ID4gPiAgICAqDQo+ID4gPiBA QCAtNTY1LDYgKzcxOCwzOSBAQCBydGVfaXB2Nl91ZHB0Y3BfY2tzdW1fdmVyaWZ5KGNvbnN0IHN0 cnVjdA0KPiA+IHJ0ZV9pcHY2X2hkciAqaXB2Nl9oZHIsDQo+ID4gPiAgIAlyZXR1cm4gMDsNCj4g PiA+ICAgfQ0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+ICsgKiBAd2FybmluZw0KPiA+ID4gKyAq IEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGlj ZS4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIFZhbGlkYXRlIHRoZSBJUHY2IFVEUCBvciBUQ1AgY2hl Y2tzdW0gb2YgYSBwYWNrZXQuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBJbiBjYXNlIG9mIFVEUCwg dGhlIGNhbGxlciBtdXN0IGZpcnN0IGNoZWNrIGlmIHVkcF9oZHItPmRncmFtX2Nrc3VtIGlzDQo+ IDA6DQo+ID4gPiArICogdGhpcyBpcyBlaXRoZXIgaW52YWxpZCBvciBtZWFucyBubyBjaGVja3N1 bSBpbiBzb21lIHNpdHVhdGlvbnMuDQo+ID4gPiArU2VlIDguMQ0KPiA+ID4gKyAqIChVcHBlci1M YXllciBDaGVja3N1bXMpIGluIFJGQyA4MjAwLg0KPiA+ID4gKyAqDQo+ID4gPiArICogQHBhcmFt IG0NCj4gPiA+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBtYnVmLg0KPiA+ID4gKyAqIEBwYXJh bSBpcHY2X2hkcg0KPiA+ID4gKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIGNvbnRpZ3VvdXMgSVB2 NiBoZWFkZXIuDQo+ID4gPiArICogQHBhcmFtIGw0X29mZg0KPiA+ID4gKyAqICAgVGhlIG9mZnNl dCBpbiBieXRlcyB0byBzdGFydCBMNCBjaGVja3N1bS4NCj4gPiA+ICsgKiBAcmV0dXJuDQo+ID4g PiArICogICBSZXR1cm4gMCBpZiB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdCwgZWxzZSAtMS4NCj4g PiA+ICsgKi8NCj4gPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiA+ICtzdGF0aWMgaW5saW5l IGludA0KPiA+ID4gK3J0ZV9pcHY2X3VkcHRjcF9ja3N1bV9tYnVmX3ZlcmlmeShjb25zdCBzdHJ1 Y3QgcnRlX21idWYgKm0sDQo+ID4gPiArCQkJCSAgY29uc3Qgc3RydWN0IHJ0ZV9pcHY2X2hkciAq aXB2Nl9oZHIsDQo+ID4gPiArCQkJCSAgdWludDE2X3QgbDRfb2ZmKQ0KPiA+ID4gK3sNCj4gPiA+ ICsJdWludDE2X3QgY2tzdW0gPSBfX3J0ZV9pcHY2X3VkcHRjcF9ja3N1bV9tYnVmKG0sIGlwdjZf aGRyLA0KPiA+IGw0X29mZik7DQo+ID4gPiArDQo+ID4gPiArCWlmIChja3N1bSAhPSAweGZmZmYp DQo+ID4gPiArCQlyZXR1cm4gLTE7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiAwOw0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICAgLyoqIElQdjYgZnJhZ21lbnQgZXh0ZW5zaW9uIGhlYWRlci4g Ki8NCj4gPiA+ICAgI2RlZmluZQlSVEVfSVBWNl9FSERSX01GX1NISUZUCTANCj4gPiA+ICAgI2Rl ZmluZQlSVEVfSVBWNl9FSERSX01GX01BU0sJMQ0KPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9uZXQv dmVyc2lvbi5tYXAgYi9saWIvbmV0L3ZlcnNpb24ubWFwIGluZGV4DQo+ID4gPiA0ZjQzMzBkMWM0 Li4wZjJhYWNkZWY4IDEwMDY0NA0KPiA+ID4gLS0tIGEvbGliL25ldC92ZXJzaW9uLm1hcA0KPiA+ ID4gKysrIGIvbGliL25ldC92ZXJzaW9uLm1hcA0KPiA+ID4gQEAgLTEyLDMgKzEyLDEzIEBAIERQ REtfMjIgew0KPiA+ID4NCj4gPiA+ICAgCWxvY2FsOiAqOw0KPiA+ID4gICB9Ow0KPiA+ID4gKw0K PiA+ID4gK0VYUEVSSU1FTlRBTCB7DQo+ID4gPiArCWdsb2JhbDoNCj4gPiA+ICsNCj4gPiA+ICsJ IyBhZGRlZCBpbiAyMi4wMw0KPiA+ID4gKwlydGVfaXB2NF91ZHB0Y3BfY2tzdW1fbWJ1ZjsNCj4g PiA+ICsJcnRlX2lwdjRfdWRwdGNwX2Nrc3VtX21idWZfdmVyaWZ5Ow0KPiA+ID4gKwlydGVfaXB2 Nl91ZHB0Y3BfY2tzdW1fbWJ1ZjsNCj4gPiA+ICsJcnRlX2lwdjZfdWRwdGNwX2Nrc3VtX21idWZf dmVyaWZ5Ow0KPiA+ID4gK307DQo=