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 86A6AA0093; Tue, 4 Jan 2022 16:18:58 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 096E640042; Tue, 4 Jan 2022 16:18:58 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 4F57940040 for ; Tue, 4 Jan 2022 16:18:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1641309536; x=1672845536; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=MvT3zsKckhDy7dLNO30W5t+uZ7joeTKK7d4jGe67l94=; b=EoplsNtkeeQN9kBTGTyMC8pe1e6jYorsdg7GNdxGfPLIdt34K4v4d4vf 2ms4kUNMDOwJuYig+zIorncBuGI3+8+8p0XfrgB2Vv81Uo6hOzSnDifde tzdP5iDidICnY5sHdliE9QV94asvgEUm8uqwNeYXvd+AETHwMIMEus/x4 uMVl7Nz+1Z/bMsP8b9dZnkh6mNfwEjPOWfQHG0yvn+LTub1i0MeIdUK3y V5lKXE/VmtbQ4U4E3mOeEu0/NpUP7ZyjKk25CTNrVAOcOhGdPeZAelCNz VA9EPOQ4ovHqv4OK1nni6epxbeN3umX36sdorOJDEd4QmgRolsX56fayo g==; X-IronPort-AV: E=McAfee;i="6200,9189,10216"; a="266508294" X-IronPort-AV: E=Sophos;i="5.88,261,1635231600"; d="scan'208";a="266508294" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2022 07:18:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,261,1635231600"; d="scan'208";a="526080841" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga008.jf.intel.com with ESMTP; 04 Jan 2022 07:18:54 -0800 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) 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:18:54 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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 via Frontend Transport; Tue, 4 Jan 2022 07:18:54 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.109) 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:18:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cv0UEsL3OP1Q2QSsuJVpe4yO7JZcQN5Jlq6a/9GxS83V6XGkaGVtkdsBgEW5d5SH4eXLb1eg9UOz9PbXY5bkLqxKf9q7WFKnJgRBX7Cy3ApoJgb2mM7eDC+rMhfFxDsc6B43V2A/TNzW2UjhrdpmHrPORyuGGiU+HYyk13UrFo2HYZMMgRvXUQnfCChinMXQM6bpVL+aKkppSF8tKJaAyTeKVcap4b2qSdopEktWSJIdg24g0gN/lyTTADfcwFQu6JXNNnAL1sZ8HH2QjFjUpJbpbJ11siDCUx4RlRwgB2sqo+K4tIMR4CIyOlDBThOkXMpRpO8xxsW6NXz/9NDCbw== 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=MvT3zsKckhDy7dLNO30W5t+uZ7joeTKK7d4jGe67l94=; b=KJtaeGvEaory4EIdBF2+6SpNo6etrzu1QiY8b1++v3Jn/uu26A2wNIyA7Lb1I/p+GxstzSawS9vUm9L9IPeq87yzc3ga93bEKzTi5seWvEK8dWiljvl+e2gEngva5nBsLSLEsrr8cwZ2HF6gSvhmgYz10nkqJ11zo2jkrmmSGozsGMoODy6YwFrL4+mxuRX6DJcFCOgLFibzDsLdjEqeo10hz/seIxV+AndNOVv8b+vVNq+ddBIew2KkhxVySo+TjZKk6LcFmVtcbX7yn560wtiE6lrKBqNEF4FtiULujEs7DTOJhf7unXwr52NgFryyGFTOvNyB7mN5cRmTwmFFKA== 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 DM5PR11MB1291.namprd11.prod.outlook.com (2603:10b6:3:14::21) 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:18:53 +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:18:53 +0000 From: "Li, Xiaoyun" To: "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+pDwA= Date: Tue, 4 Jan 2022 15:18:53 +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: <7ff44b44-ad45-f435-1563-55a80282c210@intel.com> 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: d2a8de9e-0a31-4967-dd81-08d9cf9584a4 x-ms-traffictypediagnostic: DM5PR11MB1291: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: U3o4kP221T8g1Nf72lYOiRP4UlI35tpVDidhPFAZacAU0231K5JsQjQJzhc1av2JSQLYRejT8FcRNq+L6JEOGKuMbD6nafkm0wFIIKrVNX7QALrcX+Tenq/H3mo2qSyS6exrR39vMtZTcu+6mHCnphbqFYfDiFapoLp6U2JXjZVzPDkaBVbCF/QFN85fX3G5UJe2S4NSqLLObpaqYVahyZeWdl+nKzroZr575Tl0u5NCAWHnN13/ZSRtIHgbbbBN4dSY2WKYKdpgoQrQDJqEqsSD7Yrohj3GLjuUyoXRuBRibtpg8EAP0U3FCAbrThgoen60TUva3zYoubtKBKc2fhT65/LNaOYIJNrm+/jAnhwP7u8u/zMp1M2qvI+0tK6w7NOhSNRI6ITSokUFmAczbYkkENQS5N7fKvbpkgoKW1TS1Eob4CeFrGlX64lMD2Bb3WbdVD72BNAYcbOjRWvqOR5AnUL7K5dQx0+1NtzFZW+WwIhjQ5Zed0ol+POSHYqwKFQqLKwK5rQMVsLY6URMl0YkceVKHwNuEXeRizywf7Gasv/aTnwam8Ft2yg0nt3vHpBW/0CsZe/HmttaSmRzXE7+CY+ThNBNsEYXInBtWQzGWACE6OxJE0MgYaWiOqrZenWZPLhFoqOVjg+4oL+CIEemD3Yf9ZasIpehQXr64G4c9CkCCEWda5q7nkF+OZrNkDaBrgZHPqazIy8szdM7lQ== 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)(38100700002)(9686003)(66446008)(508600001)(82960400001)(53546011)(71200400001)(6506007)(33656002)(83380400001)(7696005)(122000001)(55016003)(186003)(921005)(8676002)(66946007)(5660300002)(6636002)(2906002)(66476007)(38070700005)(86362001)(316002)(64756008)(66556008)(26005)(52536014)(76116006)(4326008)(110136005)(8936002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N21jbnJtK1VKV215L2xyNWFEM1JNNnpaRjJ6L1hQcEZkck1la3FteTJLQi9w?= =?utf-8?B?RElrU25pdW16Qnk0OFJ4Z0ZqYys0WWhzSm1jbzVYM1lxb08wZ0w5akhJQith?= =?utf-8?B?dmxJblljNzE3VmNBbm5PRGJ2UVlGSkJDK1hBY1pabSs5Z2V0VmE5UVNtZnVr?= =?utf-8?B?c0owM3hMZ0VnVExTbzBhaDFQMlBKQ25zN0JPR0FlUm9RMjcwbUdNbnR0WmUr?= =?utf-8?B?dWFpdDVkenliN0JvZDFHYjkrOC9jVFBvYlovTjc2ZHUrbU94d2FoeUNJSU5C?= =?utf-8?B?V0xZRlowU0pFN01Tc0tHRkI5bjRzUjFoMXRDVDlqbzJHc3c0Qm5XQ29NZ1lp?= =?utf-8?B?a0dUUkxpbEZTVGR5am5PWXZqd0tZTERjQkdjMzFad3FETmRlK0FXRnV4M0Fh?= =?utf-8?B?cit0ZHcwa0VZZ2x0amg3UlpzZWlXZzhNbDBsUmlKaVVWZHpYa0ZUQVJ6aUl0?= =?utf-8?B?K3R2WStGQ2dRWDVRUWdQNXNpUHB3TzY2eWp1aGMxUkpleWxVQzFRakQwTk9V?= =?utf-8?B?UHBpb1dNa3Bxc3FxR3RpVjc3NU9pTWRGVkV1bDlIZ0JWT1ZJNGhVbmVXQWZV?= =?utf-8?B?eDZ6UGF4aWhnano1d2tzeDFqc2N3VGJKczA2N1VnOCtSYnJQcXV4K0pIcFFT?= =?utf-8?B?dmJYZjhjcDlsTmdSczF6Y0p3aCtPTjVOcDdKeW5vcXdCS2VqampXVVgwUE5j?= =?utf-8?B?anRGVGtNcFVnazJLVmpQYXBvc0ovSmFSa2ZZYXFLaHRrZitWOURESTA0azBt?= =?utf-8?B?cUNPL1k2SEErWnNhTUFaUnRuWG81K2tudlBjVFYzSzkybmNTd2wzSHh5T016?= =?utf-8?B?a2RtOGVTeUJjakx4K3prUFZtTkRtbEo2OHB6UE5OaXBOV3FuRkFiUVcwZU1w?= =?utf-8?B?U0hWMkhuRFFNRWY3STVZLzZyN2VvaGtnb3ErK2gwN1k4eDVLbG5VRVdUSHVm?= =?utf-8?B?cThxczB3c1l0SjJ2bWxiRHlKajJiSVlMRWR5VThUdFNuOXN3b3VNaXROS1N6?= =?utf-8?B?RDdpMVZzbkYyUWlSb200NU5Jb0VvdVVjNGVqSTM1cUgvbWxWUGhjanpsSFVY?= =?utf-8?B?YXVmNDl6VFp5U3VUcXgxWC9GOEQxazVYODNxb0xBYklqdEFabWxCREhVSW9s?= =?utf-8?B?aXd3MGJCeFRsMkZSWldEeEc3bmM1YVNaMTgwUjRaOXFra0ZhZkM2OGpMTExX?= =?utf-8?B?NkcxQi9IMGV4NkY1bllkNXRoRG9ybGp6NXduTUNNUjVaWTNMSTBDbXdQdDht?= =?utf-8?B?VXdFcTc1Y0NDV3NzUS9SNGQrTUdQVVR2QzFSa0VPR0dyOFNZcGNhek1Cdk5z?= =?utf-8?B?dnpJbk94WGg2SWxCdzk5SVRSN2UxaEpOb3hhcFFlRGQyb2dPd1lLUDdlamVO?= =?utf-8?B?SXhkdVpQWTUzNTBiYkdBbDRVdGVoN25zelRPV3JjKzdXaFlNR1F1ZGhvdWdN?= =?utf-8?B?M1RhT0I4QjNvK1ZRWmx2OTc5RmZCSUxpMjRUTnZKMXcydEhydzMxNm9KT3ZJ?= =?utf-8?B?ODFSa0xjdVFia1V6dmtXYmRJNGk3R0dpRXA4dDdkalRLYUpBV1dWTnNRdGR1?= =?utf-8?B?cUphZk9CSUNGS2hFZWE5SDh4eHlENjFPM2JaV0prTHhHYm5ndU1YMGt1b2NJ?= =?utf-8?B?ekdlUHFTSEN2cW5MTk5vWkdqY3VkS2lFV2RUUlU3azRjaVBvWmI0NzF0SjF0?= =?utf-8?B?aEVMMGtEUDVUNDNTT3NsV0N4NURpZU0wVW5qMCtNMk5yUkZkWWdXbG45NzIr?= =?utf-8?B?cE9ZdUVWZWNqK2Y4VUtrWVdVbU9FN1NnVUZiOVhUUUFCVFhOdExpQWEvWG80?= =?utf-8?B?cHZhMFNqQzRvVXBLUnhjZlVHZWlSRURlZ2Z6emJsTWhpUHY3OGlrT3hOb3RK?= =?utf-8?B?VEJFQlhtUkFuMytFdm1rV0pSczdPOXR6TStCNUMyKzgza0pDWUNtQkJCYkVk?= =?utf-8?B?NWdULzVpV0pLektMdDJYSzU5cmNwZGNadWdSeVpnSEpTRU9VQmNKaWcrOEt2?= =?utf-8?B?VnprOUR1akJVTzAydUI0bWcyZkpRQUpBMGcxWm0xNWd1UCt0U20xSmd1VXdT?= =?utf-8?B?VEw4TVJpNXQ2eGE5cVVTSVZQbHV0aGpCdkpYaUV4Lzk3d2k2b2tWODNKQyt1?= =?utf-8?B?UVlHUFRnSWpQK2FWRGRRa1NRODJKWlFNMEtnaTlISkhOT0xnWmF1Ui9mM3JJ?= =?utf-8?B?dGc9PQ==?= 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: d2a8de9e-0a31-4967-dd81-08d9cf9584a4 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jan 2022 15:18:53.0547 (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: +e1cTFL0ZUNKwDQV0JOsD7469y0ynaToM/9ZPplKVtfr3VCbXX6f0BhhQBTjjhG2pe6LlB2sH4+/GVhBTGKhQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1291 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 SGkNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTaW5naCwgQW1hbiBE ZWVwIDxhbWFuLmRlZXAuc2luZ2hAaW50ZWwuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIERlY2Vt YmVyIDE1LCAyMDIxIDExOjM0DQo+IFRvOiBMaSwgWGlhb3l1biA8eGlhb3l1bi5saUBpbnRlbC5j b20+OyBZaWdpdCwgRmVycnVoDQo+IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgb2xpdmllci5t YXR6QDZ3aW5kLmNvbTsNCj4gbWJAc21hcnRzaGFyZXN5c3RlbXMuY29tOyBBbmFueWV2LCBLb25z dGFudGluDQo+IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsgc3RlcGhlbkBuZXR3b3Jr cGx1bWJlci5vcmc7DQo+IE1lZHZlZGtpbiwgVmxhZGltaXIgPHZsYWRpbWlyLm1lZHZlZGtpbkBp bnRlbC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NCAx LzJdIG5ldDogYWRkIGZ1bmN0aW9ucyB0byBjYWxjdWxhdGUgVURQL1RDUCBja3N1bSBpbg0KPiBt YnVmDQo+IA0KPiANCj4gT24gMTIvMy8yMDIxIDU6MDggUE0sIFhpYW95dW4gTGkgd3JvdGU6DQo+ ID4gQWRkIGZ1bmN0aW9ucyB0byBjYWxsIHJ0ZV9yYXdfY2tzdW1fbWJ1ZigpIHRvIGNhbGN1bGF0 ZSBJUHY0LzYgVURQL1RDUA0KPiA+IGNoZWNrc3VtIGluIG1idWYgd2hpY2ggY2FuIGJlIG92ZXIg bXVsdGktc2VnbWVudHMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBYaWFveXVuIExpIDx4aWFv eXVuLmxpQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgIGRvYy9ndWlkZXMvcmVsX25vdGVzL3Jl bGVhc2VfMjJfMDMucnN0IHwgIDEwICsrDQo+ID4gICBsaWIvbmV0L3J0ZV9pcC5oICAgICAgICAg ICAgICAgICAgICAgICB8IDE4NiArKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gICBsaWIv bmV0L3ZlcnNpb24ubWFwICAgICAgICAgICAgICAgICAgICB8ICAxMCArKw0KPiA+ICAgMyBmaWxl cyBjaGFuZ2VkLCAyMDYgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9n dWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMDMucnN0DQo+ID4gYi9kb2MvZ3VpZGVzL3JlbF9u b3Rlcy9yZWxlYXNlXzIyXzAzLnJzdA0KPiA+IGluZGV4IDZkOTlkMWVhYTkuLjdhMDgyYzQ0Mjcg MTAwNjQ0DQo+ID4gLS0tIGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8wMy5yc3QN Cj4gPiArKysgYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzAzLnJzdA0KPiA+IEBA IC01NSw2ICs1NSwxMyBAQCBOZXcgRmVhdHVyZXMNCj4gPiAgICAgICAgQWxzbywgbWFrZSBzdXJl IHRvIHN0YXJ0IHRoZSBhY3R1YWwgdGV4dCBhdCB0aGUgbWFyZ2luLg0KPiA+ICAgICAgICA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4N Cj4gPiArKiAqKkFkZGVkIGZ1bmN0aW9ucyB0byBjYWxjdWxhdGUgVURQL1RDUCBjaGVja3N1bSBp biBtYnVmLioqDQo+ID4gKyAgKiBBZGRlZCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBjYWxj dWxhdGUgVURQL1RDUCBjaGVja3N1bSBvZg0KPiBwYWNrZXRzDQo+ID4gKyAgICB3aGljaCBjYW4g YmUgb3ZlciBtdWx0aS1zZWdtZW50czoNCj4gPiArICAgIC0gYGBydGVfaXB2NF91ZHB0Y3BfY2tz dW1fbWJ1ZigpYGANCj4gPiArICAgIC0gYGBydGVfaXB2NF91ZHB0Y3BfY2tzdW1fbWJ1Zl92ZXJp ZnkoKWBgDQo+ID4gKyAgICAtIGBgcnRlX2lwdjZfdWRwdGNwX2Nrc3VtX21idWYoKWBgDQo+ID4g KyAgICAtIGBgcnRlX2lwdjZfdWRwdGNwX2Nrc3VtX21idWZfdmVyaWZ5KClgYA0KPiA+DQo+ID4g ICBSZW1vdmVkIEl0ZW1zDQo+ID4gICAtLS0tLS0tLS0tLS0tDQo+ID4gQEAgLTg0LDYgKzkxLDkg QEAgQVBJIENoYW5nZXMNCj4gPiAgICAgIEFsc28sIG1ha2Ugc3VyZSB0byBzdGFydCB0aGUgYWN0 dWFsIHRleHQgYXQgdGhlIG1hcmdpbi4NCj4gPiAgICAgID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPg0KPiA+ICsqIG5ldDogYWRkZWQg ZXhwZXJpbWVudGFsIGZ1bmN0aW9ucyBgYHJ0ZV9pcHY0X3VkcHRjcF9ja3N1bV9tYnVmKClgYCwN Cj4gPiArICBgYHJ0ZV9pcHY0X3VkcHRjcF9ja3N1bV9tYnVmX3ZlcmlmeSgpYGAsDQo+ID4gK2Bg cnRlX2lwdjZfdWRwdGNwX2Nrc3VtX21idWYoKWBgLA0KPiA+ICsgIGBgcnRlX2lwdjZfdWRwdGNw X2Nrc3VtX21idWZfdmVyaWZ5KClgYA0KPiA+DQo+ID4gICBBQkkgQ2hhbmdlcw0KPiA+ICAgLS0t LS0tLS0tLS0NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL25ldC9ydGVfaXAuaCBiL2xpYi9uZXQvcnRl X2lwLmggaW5kZXgNCj4gPiBjNTc1MjUwODUyLi41MzRmNDAxZDI2IDEwMDY0NA0KPiA+IC0tLSBh L2xpYi9uZXQvcnRlX2lwLmgNCj4gPiArKysgYi9saWIvbmV0L3J0ZV9pcC5oDQo+ID4gQEAgLTQw MCw2ICs0MDAsNjUgQEAgcnRlX2lwdjRfdWRwdGNwX2Nrc3VtKGNvbnN0IHN0cnVjdCBydGVfaXB2 NF9oZHINCj4gKmlwdjRfaGRyLCBjb25zdCB2b2lkICpsNF9oZHIpDQo+ID4gICAJcmV0dXJuIGNr c3VtOw0KPiA+ICAgfQ0KPiA+DQo+ID4gKy8qKg0KPiA+ICsgKiBAaW50ZXJuYWwgQ2FsY3VsYXRl IHRoZSBub24tY29tcGxlbWVudGVkIElQdjQgTDQgY2hlY2tzdW0gb2YgYQ0KPiA+ICtwYWNrZXQg ICovIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgX19ydGVfaXB2NF91ZHB0Y3BfY2tzdW1fbWJ1Zihj b25zdA0KPiA+ICtzdHJ1Y3QgcnRlX21idWYgKm0sDQo+ID4gKwkJCSAgICAgY29uc3Qgc3RydWN0 IHJ0ZV9pcHY0X2hkciAqaXB2NF9oZHIsDQo+ID4gKwkJCSAgICAgdWludDE2X3QgbDRfb2ZmKQ0K PiA+ICt7DQo+ID4gKwl1aW50MTZfdCByYXdfY2tzdW07DQo+ID4gKwl1aW50MzJfdCBja3N1bTsN Cj4gPiArDQo+ID4gKwlpZiAobDRfb2ZmID4gbS0+cGt0X2xlbikNCj4gPiArCQlyZXR1cm4gMDsN Cj4gPiArDQo+ID4gKwlpZiAocnRlX3Jhd19ja3N1bV9tYnVmKG0sIGw0X29mZiwgbS0+cGt0X2xl biAtIGw0X29mZiwNCj4gJnJhd19ja3N1bSkpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ ICsJY2tzdW0gPSByYXdfY2tzdW0gKyBydGVfaXB2NF9waGRyX2Nrc3VtKGlwdjRfaGRyLCAwKTsN Cj4gPiArDQo+ID4gKwlja3N1bSA9ICgoY2tzdW0gJiAweGZmZmYwMDAwKSA+PiAxNikgKyAoY2tz dW0gJiAweGZmZmYpOw0KPiBBdCB0aW1lcywgZXZlbiBhZnRlciBhYm92ZSBvcGVyYXRpb24gImNr c3VtIiBtaWdodCBzdGF5IGFib3ZlIDE2LWJpdHMsIGV4DQo+ICJja3N1bSA9IDB4MUZGRkYiIHRv IHN0YXJ0IHdpdGguDQo+IENhbiB3ZSBjb25zaWRlciB1c2luZyAicmV0dXJuIF9fcnRlX3Jhd19j a3N1bV9yZWR1Y2UoY2tzdW0pOyINCg0KV2lsbCB1c2UgaXQgaW4gbmV4dCB2ZXJzaW9uLiBUaGFu a3MuDQoNCkFsc28sIG5vdCByZWxhdGVkIHRvIHRoaXMgcGF0Y2guIEl0IG1lYW5zIHRoYXQgX19y dGVfaXB2NF91ZHB0Y3BfY2tzdW0gYW5kIF9fcnRlX2lwdjZfdWRwdGNwX2Nrc3VtIGhhdmUgdGhl IHNhbWUgaXNzdWUsIHJpZ2h0Pw0KU2hvdWxkIGFueW9uZSBmaXggdGhhdD8NCg0KPiA+ICsNCj4g PiArCXJldHVybiAodWludDE2X3QpY2tzdW07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFu Z2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIENvbXB1dGUgdGhlIElQ djQgVURQL1RDUCBjaGVja3N1bSBvZiBhIHBhY2tldC4NCj4gPiArICoNCj4gPiArICogQHBhcmFt IG0NCj4gPiArICogICBUaGUgcG9pbnRlciB0byB0aGUgbWJ1Zi4NCj4gPiArICogQHBhcmFtIGlw djRfaGRyDQo+ID4gKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIGNvbnRpZ3VvdXMgSVB2NCBoZWFk ZXIuDQo+ID4gKyAqIEBwYXJhbSBsNF9vZmYNCj4gPiArICogICBUaGUgb2Zmc2V0IGluIGJ5dGVz IHRvIHN0YXJ0IEw0IGNoZWNrc3VtLg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgVGhlIGNv bXBsZW1lbnRlZCBjaGVja3N1bSB0byBzZXQgaW4gdGhlIEw0IGhlYWRlci4NCj4gPiArICovDQo+ ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4g K3J0ZV9pcHY0X3VkcHRjcF9ja3N1bV9tYnVmKGNvbnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSwNCj4g PiArCQkJICAgY29uc3Qgc3RydWN0IHJ0ZV9pcHY0X2hkciAqaXB2NF9oZHIsIHVpbnQxNl90IGw0 X29mZikNCj4gew0KPiA+ICsJdWludDE2X3QgY2tzdW0gPSBfX3J0ZV9pcHY0X3VkcHRjcF9ja3N1 bV9tYnVmKG0sIGlwdjRfaGRyLA0KPiBsNF9vZmYpOw0KPiA+ICsNCj4gPiArCWNrc3VtID0gfmNr c3VtOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBQZXIgUkZDIDc2ODogSWYgdGhlIGNvbXB1 dGVkIGNoZWNrc3VtIGlzIHplcm8gZm9yIFVEUCwNCj4gPiArCSAqIGl0IGlzIHRyYW5zbWl0dGVk IGFzIGFsbCBvbmVzDQo+ID4gKwkgKiAodGhlIGVxdWl2YWxlbnQgaW4gb25lJ3MgY29tcGxlbWVu dCBhcml0aG1ldGljKS4NCj4gPiArCSAqLw0KPiA+ICsJaWYgKGNrc3VtID09IDAgJiYgaXB2NF9o ZHItPm5leHRfcHJvdG9faWQgPT0gSVBQUk9UT19VRFApDQo+ID4gKwkJY2tzdW0gPSAweGZmZmY7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIGNrc3VtOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyoqDQo+ ID4gICAgKiBWYWxpZGF0ZSB0aGUgSVB2NCBVRFAgb3IgVENQIGNoZWNrc3VtLg0KPiA+ICAgICoN Cj4gPiBAQCAtNDI2LDYgKzQ4NSwzOCBAQCBydGVfaXB2NF91ZHB0Y3BfY2tzdW1fdmVyaWZ5KGNv bnN0IHN0cnVjdA0KPiBydGVfaXB2NF9oZHIgKmlwdjRfaGRyLA0KPiA+ICAgCXJldHVybiAwOw0K PiA+ICAgfQ0KPiA+DQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBF UklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4g KyAqDQo+ID4gKyAqIFZlcmlmeSB0aGUgSVB2NCBVRFAvVENQIGNoZWNrc3VtIG9mIGEgcGFja2V0 Lg0KPiA+ICsgKg0KPiA+ICsgKiBJbiBjYXNlIG9mIFVEUCwgdGhlIGNhbGxlciBtdXN0IGZpcnN0 IGNoZWNrIGlmDQo+ID4gK3VkcF9oZHItPmRncmFtX2Nrc3VtIGlzIDANCj4gPiArICogKGkuZS4g bm8gY2hlY2tzdW0pLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gbQ0KPiA+ICsgKiAgIFRoZSBw b2ludGVyIHRvIHRoZSBtYnVmLg0KPiA+ICsgKiBAcGFyYW0gaXB2NF9oZHINCj4gPiArICogICBU aGUgcG9pbnRlciB0byB0aGUgY29udGlndW91cyBJUHY0IGhlYWRlci4NCj4gPiArICogQHBhcmFt IGw0X29mZg0KPiA+ICsgKiAgIFRoZSBvZmZzZXQgaW4gYnl0ZXMgdG8gc3RhcnQgTDQgY2hlY2tz dW0uDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICBSZXR1cm4gMCBpZiB0aGUgY2hlY2tzdW0g aXMgY29ycmVjdCwgZWxzZSAtMS4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0K PiA+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4gK3J0ZV9pcHY0X3VkcHRjcF9ja3N1bV9t YnVmX3ZlcmlmeShjb25zdCBzdHJ1Y3QgcnRlX21idWYgKm0sDQo+ID4gKwkJCQkgIGNvbnN0IHN0 cnVjdCBydGVfaXB2NF9oZHIgKmlwdjRfaGRyLA0KPiA+ICsJCQkJICB1aW50MTZfdCBsNF9vZmYp DQo+ID4gK3sNCj4gPiArCXVpbnQxNl90IGNrc3VtID0gX19ydGVfaXB2NF91ZHB0Y3BfY2tzdW1f bWJ1ZihtLCBpcHY0X2hkciwNCj4gbDRfb2ZmKTsNCj4gPiArDQo+ID4gKwlpZiAoY2tzdW0gIT0g MHhmZmZmKQ0KPiA+ICsJCXJldHVybiAtMTsNCj4gY2tzdW0gb3RoZXIgdGhhbiAweGZmZmYsIHNo b3VsZCByZXR1cm4gZXJyb3IuIElzIHRoYXQgdGhlIGludGVudCBvciBJIGFtDQo+IG1pc3Npbmcg c29tZXRoaW5nIG9idmlvdXMuDQoNClRoaXMgaXMgdGhlIGludGVudC4gVGhpcyBmdW5jdGlvbiBp cyB0byB2ZXJpZnkgaWYgdGhlIGNrc3VtIGluIHRoZSBwYWNrZXQgaXMgY29ycmVjdC4NCg0KSXQn cyBkaWZmZXJlbnQgZnJvbSBjYWxsaW5nIHJ0ZV9pcHY0LzZfdWRwdGNwX2Nrc3VtX21idWYoKS4g V2hlbiBjYWxsaW5nIHJ0ZV9pcHY0LzZfdWRwdGNwX2Nrc3VtX21idWYoKSwgeW91IG5lZWQgdG8g c2V0IHRoZSBja3N1bSBpbiB1ZHAvdGNwIGhlYWRlciBhcyAwLiBUaGVuIGNhbGN1bGF0ZSB0aGUg Y2tzdW0uDQoNCkJ1dCBoZXJlLCB1c2VyIHNob3VsZCBkaXJlY3RseSBjYWxsIHRoaXMgZnVuY3Rp b24gd2l0aCB0aGUgb3JpZ2luYWwgcGFja2V0LiBUaGVuIGlmIHRoZSB1ZHAvdGNwIGNrc3VtIGlz IGNvcnJlY3QsIGFmdGVyIHRoZSBjYWxjdWxhdGlvbiAocGxlYXNlIG5vdGUgdGhhdCwgdGhpcyBp cyBjYWxsaW5nIF9fcnRlX2lwdjRfdWRwdGNwX2Nrc3VtX21idWYoKSwgc28gdGhlIHJlc3VsdCBu ZWVkcyB0byBiZSB+KSwgaXQgc2hvdWxkIGJlIDB4ZmZmZiwgbmFtZWx5LCB+Y2tzdW0gPSAwIHdo aWNoIG1lYW5zIGNrc3VtIGlzIGNvcnJlY3QuIFlvdSBjYW4gc2VlIHJ0ZV9pcHY0LzZfdWRwdGNw X2Nrc3VtX3ZlcmlmeSgpIGlzIGRvaW5nIHRoZSBzYW1lLg0KDQo+ID4gKw0KPiA+ICsJcmV0dXJu IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gICAvKioNCj4gPiAgICAqIElQdjYgSGVhZGVyDQo+ID4g ICAgKi8NCj4gPiBAQCAtNTM4LDYgKzYyOSw2OCBAQCBydGVfaXB2Nl91ZHB0Y3BfY2tzdW0oY29u c3Qgc3RydWN0IHJ0ZV9pcHY2X2hkcg0KPiAqaXB2Nl9oZHIsIGNvbnN0IHZvaWQgKmw0X2hkcikN Cj4gPiAgIAlyZXR1cm4gY2tzdW07DQo+ID4gICB9DQo+ID4NCj4gPiArLyoqDQo+ID4gKyAqIEBp bnRlcm5hbCBDYWxjdWxhdGUgdGhlIG5vbi1jb21wbGVtZW50ZWQgSVB2NiBMNCBjaGVja3N1bSBv ZiBhDQo+ID4gK3BhY2tldCAgKi8gc3RhdGljIGlubGluZSB1aW50MTZfdCBfX3J0ZV9pcHY2X3Vk cHRjcF9ja3N1bV9tYnVmKGNvbnN0DQo+ID4gK3N0cnVjdCBydGVfbWJ1ZiAqbSwNCj4gPiArCQkJ ICAgICBjb25zdCBzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2X2hkciwNCj4gPiArCQkJICAgICB1 aW50MTZfdCBsNF9vZmYpDQo+ID4gK3sNCj4gPiArCXVpbnQxNl90IHJhd19ja3N1bTsNCj4gPiAr CXVpbnQzMl90IGNrc3VtOw0KPiA+ICsNCj4gPiArCWlmIChsNF9vZmYgPiBtLT5wa3RfbGVuKQ0K PiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCWlmIChydGVfcmF3X2Nrc3VtX21idWYobSwg bDRfb2ZmLCBtLT5wa3RfbGVuIC0gbDRfb2ZmLA0KPiAmcmF3X2Nrc3VtKSkNCj4gPiArCQlyZXR1 cm4gMDsNCj4gPiArDQo+ID4gKwlja3N1bSA9IHJhd19ja3N1bSArIHJ0ZV9pcHY2X3BoZHJfY2tz dW0oaXB2Nl9oZHIsIDApOw0KPiA+ICsNCj4gPiArCWNrc3VtID0gKChja3N1bSAmIDB4ZmZmZjAw MDApID4+IDE2KSArIChja3N1bSAmIDB4ZmZmZik7DQo+IFNhbWUsIHBsZWFzZSBjaGVjayBpZiB3 ZSBjYW4gb3B0IGZvciBfX3J0ZV9yYXdfY2tzdW1fcmVkdWNlKGNrc3VtKQ0KPiA+ICsNCj4gPiAr CXJldHVybiAodWludDE2X3QpY2tzdW07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg KiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ug d2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFByb2Nlc3MgdGhlIElQdjYg VURQIG9yIFRDUCBjaGVja3N1bSBvZiBhIHBhY2tldC4NCj4gPiArICoNCj4gPiArICogVGhlIElQ djYgaGVhZGVyIG11c3Qgbm90IGJlIGZvbGxvd2VkIGJ5IGV4dGVuc2lvbiBoZWFkZXJzLiBUaGUN Cj4gPiArbGF5ZXIgNA0KPiA+ICsgKiBjaGVja3N1bSBtdXN0IGJlIHNldCB0byAwIGluIHRoZSBM NCBoZWFkZXIgYnkgdGhlIGNhbGxlci4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIG0NCj4gPiAr ICogICBUaGUgcG9pbnRlciB0byB0aGUgbWJ1Zi4NCj4gPiArICogQHBhcmFtIGlwdjZfaGRyDQo+ ID4gKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIGNvbnRpZ3VvdXMgSVB2NiBoZWFkZXIuDQo+ID4g KyAqIEBwYXJhbSBsNF9vZmYNCj4gPiArICogICBUaGUgb2Zmc2V0IGluIGJ5dGVzIHRvIHN0YXJ0 IEw0IGNoZWNrc3VtLg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgVGhlIGNvbXBsZW1lbnRl ZCBjaGVja3N1bSB0byBzZXQgaW4gdGhlIEw0IGhlYWRlci4NCj4gPiArICovDQo+ID4gK19fcnRl X2V4cGVyaW1lbnRhbA0KPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4gK3J0ZV9pcHY2 X3VkcHRjcF9ja3N1bV9tYnVmKGNvbnN0IHN0cnVjdCBydGVfbWJ1ZiAqbSwNCj4gPiArCQkJICAg Y29uc3Qgc3RydWN0IHJ0ZV9pcHY2X2hkciAqaXB2Nl9oZHIsIHVpbnQxNl90IGw0X29mZikNCj4g ew0KPiA+ICsJdWludDE2X3QgY2tzdW0gPSBfX3J0ZV9pcHY2X3VkcHRjcF9ja3N1bV9tYnVmKG0s IGlwdjZfaGRyLA0KPiBsNF9vZmYpOw0KPiA+ICsNCj4gPiArCWNrc3VtID0gfmNrc3VtOw0KPiA+ ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBQZXIgUkZDIDc2ODogSWYgdGhlIGNvbXB1dGVkIGNoZWNr c3VtIGlzIHplcm8gZm9yIFVEUCwNCj4gPiArCSAqIGl0IGlzIHRyYW5zbWl0dGVkIGFzIGFsbCBv bmVzDQo+ID4gKwkgKiAodGhlIGVxdWl2YWxlbnQgaW4gb25lJ3MgY29tcGxlbWVudCBhcml0aG1l dGljKS4NCj4gPiArCSAqLw0KPiA+ICsJaWYgKGNrc3VtID09IDAgJiYgaXB2Nl9oZHItPnByb3Rv ID09IElQUFJPVE9fVURQKQ0KPiA+ICsJCWNrc3VtID0gMHhmZmZmOw0KPiA+ICsNCj4gPiArCXJl dHVybiBja3N1bTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgIC8qKg0KPiA+ICAgICogVmFsaWRhdGUg dGhlIElQdjYgVURQIG9yIFRDUCBjaGVja3N1bS4NCj4gPiAgICAqDQo+ID4gQEAgLTU2NSw2ICs3 MTgsMzkgQEAgcnRlX2lwdjZfdWRwdGNwX2Nrc3VtX3ZlcmlmeShjb25zdCBzdHJ1Y3QNCj4gcnRl X2lwdjZfaGRyICppcHY2X2hkciwNCj4gPiAgIAlyZXR1cm4gMDsNCj4gPiAgIH0NCj4gPg0KPiA+ ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQ SSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBWYWxp ZGF0ZSB0aGUgSVB2NiBVRFAgb3IgVENQIGNoZWNrc3VtIG9mIGEgcGFja2V0Lg0KPiA+ICsgKg0K PiA+ICsgKiBJbiBjYXNlIG9mIFVEUCwgdGhlIGNhbGxlciBtdXN0IGZpcnN0IGNoZWNrIGlmIHVk cF9oZHItPmRncmFtX2Nrc3VtIGlzIDA6DQo+ID4gKyAqIHRoaXMgaXMgZWl0aGVyIGludmFsaWQg b3IgbWVhbnMgbm8gY2hlY2tzdW0gaW4gc29tZSBzaXR1YXRpb25zLg0KPiA+ICtTZWUgOC4xDQo+ ID4gKyAqIChVcHBlci1MYXllciBDaGVja3N1bXMpIGluIFJGQyA4MjAwLg0KPiA+ICsgKg0KPiA+ ICsgKiBAcGFyYW0gbQ0KPiA+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBtYnVmLg0KPiA+ICsg KiBAcGFyYW0gaXB2Nl9oZHINCj4gPiArICogICBUaGUgcG9pbnRlciB0byB0aGUgY29udGlndW91 cyBJUHY2IGhlYWRlci4NCj4gPiArICogQHBhcmFtIGw0X29mZg0KPiA+ICsgKiAgIFRoZSBvZmZz ZXQgaW4gYnl0ZXMgdG8gc3RhcnQgTDQgY2hlY2tzdW0uDQo+ID4gKyAqIEByZXR1cm4NCj4gPiAr ICogICBSZXR1cm4gMCBpZiB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdCwgZWxzZSAtMS4NCj4gPiAr ICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtzdGF0aWMgaW5saW5lIGludA0KPiA+ ICtydGVfaXB2Nl91ZHB0Y3BfY2tzdW1fbWJ1Zl92ZXJpZnkoY29uc3Qgc3RydWN0IHJ0ZV9tYnVm ICptLA0KPiA+ICsJCQkJICBjb25zdCBzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2X2hkciwNCj4g PiArCQkJCSAgdWludDE2X3QgbDRfb2ZmKQ0KPiA+ICt7DQo+ID4gKwl1aW50MTZfdCBja3N1bSA9 IF9fcnRlX2lwdjZfdWRwdGNwX2Nrc3VtX21idWYobSwgaXB2Nl9oZHIsDQo+IGw0X29mZik7DQo+ ID4gKw0KPiA+ICsJaWYgKGNrc3VtICE9IDB4ZmZmZikNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gICAvKiogSVB2NiBmcmFnbWVu dCBleHRlbnNpb24gaGVhZGVyLiAqLw0KPiA+ICAgI2RlZmluZQlSVEVfSVBWNl9FSERSX01GX1NI SUZUCTANCj4gPiAgICNkZWZpbmUJUlRFX0lQVjZfRUhEUl9NRl9NQVNLCTENCj4gPiBkaWZmIC0t Z2l0IGEvbGliL25ldC92ZXJzaW9uLm1hcCBiL2xpYi9uZXQvdmVyc2lvbi5tYXAgaW5kZXgNCj4g PiA0ZjQzMzBkMWM0Li4wZjJhYWNkZWY4IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9uZXQvdmVyc2lv bi5tYXANCj4gPiArKysgYi9saWIvbmV0L3ZlcnNpb24ubWFwDQo+ID4gQEAgLTEyLDMgKzEyLDEz IEBAIERQREtfMjIgew0KPiA+DQo+ID4gICAJbG9jYWw6ICo7DQo+ID4gICB9Ow0KPiA+ICsNCj4g PiArRVhQRVJJTUVOVEFMIHsNCj4gPiArCWdsb2JhbDoNCj4gPiArDQo+ID4gKwkjIGFkZGVkIGlu IDIyLjAzDQo+ID4gKwlydGVfaXB2NF91ZHB0Y3BfY2tzdW1fbWJ1ZjsNCj4gPiArCXJ0ZV9pcHY0 X3VkcHRjcF9ja3N1bV9tYnVmX3ZlcmlmeTsNCj4gPiArCXJ0ZV9pcHY2X3VkcHRjcF9ja3N1bV9t YnVmOw0KPiA+ICsJcnRlX2lwdjZfdWRwdGNwX2Nrc3VtX21idWZfdmVyaWZ5Ow0KPiA+ICt9Ow0K