From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 49438A00C5; Thu, 30 Apr 2020 17:36:44 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A9B171DA8E; Thu, 30 Apr 2020 17:36:42 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 0482F1DA85 for ; Thu, 30 Apr 2020 17:36:40 +0200 (CEST) IronPort-SDR: w1AdSvAS/3dvQtjZLGtvOHBWY+rs/l3iTe/iKILfX4dZYagM7N16dYZ6aGu3wGhRQbbaloSg83 xrNPsLCeQ2Ng== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Apr 2020 08:36:22 -0700 IronPort-SDR: GS09N8kb1VWIwAiPAcjh0NEoefXrI1DgqPemLKzaATNDSJNvd/mgvUou1BjsytDZTRnOQsNlCa tZxLzADsD5qw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,336,1583222400"; d="scan'208";a="249777960" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga008.fm.intel.com with ESMTP; 30 Apr 2020 08:36:22 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 30 Apr 2020 08:36:22 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 30 Apr 2020 08:36:15 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 30 Apr 2020 08:36:15 -0700 Received: from NAM02-CY1-obe.outbound.protection.outlook.com (104.47.37.55) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 30 Apr 2020 08:36:08 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jeeff6FsucPO+z1AMtWlCj5UMg0szQztkL5bqWmaDQ3CHDhIZtYIIPKBEU3cfQzhsCZN86uYdImuPQhP63Gidrx2igaUAg4rHv5DEqhESu1008bWylPwZrBBXX87xYVMsnqDCK0FIvrT0GymxOjDqEroKk7pl7eJos5Gw+RlLt8YpNlRCsc05npGlt3J4GjnLMnNlvSgZmGG9dfIIQEHtnZgNwg7bQbLo736YgBKVVV/msUGhSofa7EndV02IWB63xI+BoA+wrjKhayGBfMY6sRgjG2MK0lmxD7iF1Ta0xGyXbgobRMRyr5QFjbBDEhZk44vyqEnD6hhCh9YVPMRaw== 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-SenderADCheck; bh=5yhdpo9YFYFssEqwhlegX9fDcuI9KM0NEGb5kI0IstY=; b=RYy6bp42cl4b0+FJKReUeUvqhIhTOXsGZSRRMJ/kXdhS7Fh2L49+hJzp7XiXokRaV9NP5nqybzpBUPTEnxrNgx8Th+DBEmzcJBjmEaJTRQS7uaGT4vFZM8m9g6GebScBJjo69jBt0XLW9d89u/ETe9uCY58T2k5uzyiPIgxxg7B26zSnswsWvT6wfEk1O+BXdMM4wPKiHVCPUyiq/SJJDIT2230sQlX6ogvD05JxadIqMDqzs7tfBP+/t3IyHITHZS+RBmbUl6OLeGnCIabhWM4yTpMoL7ytFCZqqUZE5cLKgxSv6Sxe8YF/+NHFP3gT+E1f26qjUSyFQEeVd2eh1g== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5yhdpo9YFYFssEqwhlegX9fDcuI9KM0NEGb5kI0IstY=; b=HnTBmVOhyPsijci41gmbKOi/ts9xvy1ckBu1vrAn1GjS0K3mgPkLmwcdfI1alEIm9r1TXNpLqHTXw7zcow3azwLIWMnq0gs2keEl+VmAJZu839Ff+JG1H9gIBhegju5abQe54QQ8TLqwZhVSDNo0QN9nxEwNgXqn3HXx5BUvP3E= Received: from BYAPR11MB3301.namprd11.prod.outlook.com (2603:10b6:a03:7f::26) by BYAPR11MB3815.namprd11.prod.outlook.com (2603:10b6:a03:fa::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2958.19; Thu, 30 Apr 2020 15:36:07 +0000 Received: from BYAPR11MB3301.namprd11.prod.outlook.com ([fe80::f8cb:58cd:e958:fff4]) by BYAPR11MB3301.namprd11.prod.outlook.com ([fe80::f8cb:58cd:e958:fff4%6]) with mapi id 15.20.2937.028; Thu, 30 Apr 2020 15:36:07 +0000 From: "Ananyev, Konstantin" To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "Honnappa Nagarahalli" , Olivier Matz CC: "dev@dpdk.org" , nd Thread-Topic: [RFC] ring: count and empty optimizations Thread-Index: AdYdZF2v8ZXdws+LSbakUFX2kkScfwAxx6CAABg7DoAAEQEUAAAMvxEw Date: Thu, 30 Apr 2020 15:36:07 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35C60F96@smartserver.smartshare.dk> <20200429133837.GY6327@platinum> <98CBD80474FA8B44BF855DF32C47DC35C60F98@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35C60F98@smartserver.smartshare.dk> Accept-Language: en-GB, 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.2.0.6 authentication-results: smartsharesystems.com; dkim=none (message not signed) header.d=none; smartsharesystems.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.151.189] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 182fff6e-e3a3-4cc5-ad46-08d7ed1c3388 x-ms-traffictypediagnostic: BYAPR11MB3815: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 0389EDA07F x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: v8U+VtHzhRYWtYP8eNezQElki4kC6rQAyJ0AHAiIUDhQuCI2t5aGhY9CtpRZwMekxuTpu3PFyGh/3vw6PmmeY5vyAWal09ByQW0y2lM+acnN9dpBRRvkpTSy56vRGG0Kp3kZJDNUI4Vpq06jJ6L5a9YZYoEQFexHpef02JMwKQscnNrULgP8CY/eUQvOMsQhaDUCNrd60QjG55K2zR4J2+exd0vjOjWhvwFQbORa8rKtHkDD4pmbdPMKsN1KIM3cw+Z7LPJq/Dl/5JCXJuKHxiAwvJql7DYFanv5wwR1BlgRWLvxXoLXNM9o8pQ6Mgv1LQdBGsjv7kKnDlvk8tAH7wc37oZ3xwdvYizxCwfB/EaTlKQip+yMFaVwCZn4Vav+XfTgcTVGqbREYXdpfQmKlrkqLZzdQbIFciNhDabZu+MwPD8Am8Aaa2uBDqj39q64 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR11MB3301.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(39860400002)(136003)(366004)(376002)(346002)(396003)(9686003)(66556008)(86362001)(4326008)(55016002)(478600001)(66946007)(66574012)(66476007)(8676002)(66446008)(76116006)(2906002)(64756008)(7696005)(33656002)(6506007)(5660300002)(26005)(186003)(110136005)(316002)(54906003)(8936002)(52536014)(71200400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: WNzZWwfRm0bJkOs+4EiuSPoUpiob8HaMnsNRobrnPsn00HDLABmRGtSGS3yGTFZzu7PX71bmLb2KwLQ/OCqLi7w/Bl4F1CloX8BiqUiFcrnpmO2+5ayZH6P46RIQrd8ZpkNHgt2ySyvS56o/7aBAwKTRXVoDAB17xPcBGJjLW8AekRqJVgWtVj0xHqfE6le38vRadmswtvrZTpZyziyWTcbVCaEZ6ua+ypRaXJoc6X4C4Pw8GCLZ3pkbexI34K5xE3mEmCoeDinotMJjR+j8cMkdVrL1H8mWorNN3+wbuHVFPwMvc3LX+CL2cepLVCfH+m70yCPf7vuSNOPizTmynHVdYgygqANPKUmoMizqmsBeysYe7PTxwZBLY3Xw100uDM7ZSdTuKBL4gcRcj/rNTlBAlCVeGHsclKJPSvE2TFVmwxUxz+nIKdNqJoajLalGu2wzFGSNxr4KBhj5zx4NNpfu2cY5DL1zTb1xntuUJNpLwJkUKNBZ0x6AL2zU7yKOxEp5nkc59ND2eBDJLUxUzKa0psWb1Vob6NlIJzpqX43uHzBY/ZQT4GNTU+lbrhHhd7A0vRgmUxukJM/XFUtvgIcWYYZwgv4nfOC7S/SthGPUhJNW3UKwG2ObTs9dKUx+nOuc8L0/bExqRgSoC0ENdpmB37J/zXcDqaI7EX7bcpZ/LX1ZlEVNDuXAQtIeUCWdOX52l/81rhTAxvy+TbDHE0FHPVSvBUFbKjMtHwOb2uF3kut8EOTl17PM3t8F4O8xpXY4uibVlmb/E7STSKsdJYuNKJgNRcumf4AqRcNVCJ6XoZ/BHbLZBZf6u/PBU0MJ x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 182fff6e-e3a3-4cc5-ad46-08d7ed1c3388 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Apr 2020 15:36:07.1229 (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: agi+OX+42UNEc+jcYAK3W2GZPrcDYWSiJu3XPWLGYv2JaFfj+DwmUsdu/74kcmzs41ftDsOzSVI9AOyVxrR4xcBA8tHrDRw+I10ZwAzxUvU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3815 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [RFC] ring: count and empty optimizations X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PiANCj4gPiBGcm9tOiBIb25uYXBwYSBOYWdhcmFoYWxsaSBbbWFpbHRvOkhvbm5hcHBhLk5hZ2Fy YWhhbGxpQGFybS5jb21dDQo+ID4gU2VudDogVGh1cnNkYXksIEFwcmlsIDMwLCAyMDIwIDM6MTIg QU0NCj4gPg0KPiA+IDxzbmlwPg0KPiA+DQo+ID4gPg0KPiA+ID4gSGkgTW9ydGVuLA0KPiA+ID4N Cj4gPiA+IE9uIFR1ZSwgQXByIDI4LCAyMDIwIGF0IDAzOjUzOjE1UE0gKzAyMDAsIE1vcnRlbiBC csO4cnVwIHdyb3RlOg0KPiA+ID4gPiBPbGl2aWVyIChtYWludGFpbmVyIG9mIHRoZSBSaW5nKSwN Cj4gPiA+DQo+ID4gPiBJJ20gbm90IGFueW1vcmUsIENDJ2luZyBLb25zdGFudGluIGFuZCBIb25u YXBwYS4NCj4gPiA+DQo+ID4gPiA+IEkgd291bGQgbGlrZSB0byBzdWdnZXN0IGEgY291cGxlIG9m IG1pbm9yIG9wdGltaXphdGlvbnMgdG8gdGhlIHJpbmcNCj4gPiBsaWJyYXJ5Lg0KPiA+ID4gPg0K PiA+ID4gPg0KPiA+ID4gPiAxLiBUZXN0aW5nIGlmIHRoZSByaW5nIGlzIGVtcHR5IGlzIGFzIHNp bXBsZSBhcyBjb21wYXJpbmcgdGhlDQo+ID4gcHJvZHVjZXIgYW5kDQo+ID4gPiBjb25zdW1lciBw b2ludGVyczoNCj4gPiA+ID4NCj4gPiA+ID4gc3RhdGljIGlubGluZSBpbnQNCj4gPiA+ID4gcnRl X3JpbmdfZW1wdHkoY29uc3Qgc3RydWN0IHJ0ZV9yaW5nICpyKSB7DQo+ID4gPiA+IC0JcmV0dXJu IHJ0ZV9yaW5nX2NvdW50KHIpID09IDA7DQo+ID4gPiA+ICsJdWludDMyX3QgcHJvZF90YWlsID0g ci0+cHJvZC50YWlsOw0KPiA+ID4gPiArCXVpbnQzMl90IGNvbnNfdGFpbCA9IHItPmNvbnMudGFp bDsNCj4gPiA+ID4gKwlyZXR1cm4gY29uc190YWlsID09IHByb2RfdGFpbDsNCj4gPiA+ID4gfQ0K PiA+ID4gPg0KPiA+ID4gPiBJbiB0aGVvcnksIHRoaXMgb3B0aW1pemF0aW9uIHJlZHVjZXMgdGhl IG51bWJlciBvZiBwb3RlbnRpYWwgY2FjaGUNCj4gPiBtaXNzZXMNCj4gPiA+IGZyb20gMyB0byAy IGJ5IG5vdCBoYXZpbmcgdG8gcmVhZCByLT5tYXNrIGluIHJ0ZV9yaW5nX2NvdW50KCkuDQo+ID4g Pg0KPiA+ID4gVGhpcyBvbmUgbG9va3MgY29ycmVjdCB0byBtZS4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gPiAyLiBJdCBpcyBub3QgcG9zc2libGUgdG8gZW5xdWV1ZSBtb3JlIGVsZW1lbnRzIHRoYW4g dGhlIGNhcGFjaXR5IG9mDQo+ID4gYSByaW5nLA0KPiA+ID4gc28gdGhlIGNvdW50IGZ1bmN0aW9u IGRvZXMgbm90IG5lZWQgdG8gdGVzdCBpZiB0aGUgY2FwYWNpdHkgaXMNCj4gPiBleGNlZWRlZDoN Cj4gPiA+ID4NCj4gPiA+ID4gc3RhdGljIGlubGluZSB1bnNpZ25lZA0KPiA+ID4gPiBydGVfcmlu Z19jb3VudChjb25zdCBzdHJ1Y3QgcnRlX3JpbmcgKnIpIHsNCj4gPiA+ID4gCXVpbnQzMl90IHBy b2RfdGFpbCA9IHItPnByb2QudGFpbDsNCj4gPiA+ID4gCXVpbnQzMl90IGNvbnNfdGFpbCA9IHIt PmNvbnMudGFpbDsNCj4gPiA+ID4gCXVpbnQzMl90IGNvdW50ID0gKHByb2RfdGFpbCAtIGNvbnNf dGFpbCkgJiByLT5tYXNrOw0KPiA+ID4gPiAtCXJldHVybiAoY291bnQgPiByLT5jYXBhY2l0eSkg PyByLT5jYXBhY2l0eSA6IGNvdW50Ow0KPiA+ID4gPiArIAlyZXR1cm4gY291bnQ7DQo+ID4gPiA+ IH0NCj4gPiA+ID4NCj4gPiA+ID4gSSBjYW5ub3QgZXZlbiBjb21lIHVwIHdpdGggYSByYWNlIGNv bmRpdGlvbiBpbiB0aGlzIGZ1bmN0aW9uIHdoZXJlDQo+ID4gdGhlDQo+ID4gPiBjb3VudCB3b3Vs ZCBleGNlZWQgdGhlIGNhcGFjaXR5LiBNYXliZSBJIG1pc3NlZCBzb21ldGhpbmc/DQo+ID4gPg0K PiA+ID4gU2luY2UgdGhlcmUgaXMgbm8gbWVtb3J5IGJhcnJpZXIsIHRoZSBvcmRlciBpbiB3aGlj aCBwcm9kX3RhaWwgYW5kDQo+ID4gY29uc190YWlsDQo+ID4gPiBhcmUgZmV0Y2hlZCBpcyBub3Qg Z3VhcmFudGVlZC4gT3IgdGhlIHRocmVhZCBjb3VsZCBiZSBpbnRlcnJ1cHRlZCBieQ0KPiA+IHRo ZQ0KPiA+ID4ga2VybmVsIGluIGJldHdlZW4uDQo+ID4gVGhlICdfX3J0ZV9yaW5nX21vdmVfcHJv ZF9oZWFkJyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIGRpc3RhbmNlDQo+ID4gYmV0d2VlbiBw cm9kLmhlYWQgYW5kIGNvbnMudGFpbCBpcyBhbHdheXMgd2l0aGluIHRoZSBjYXBhY2l0eQ0KPiA+ IGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyIHRoZSBjb25zdW1lcnMvcHJvZHVjZXJzIGFyZSBzbGVl cGluZy4NCj4gDQo+IFllcywgdGhpcyBpcyBleGFjdGx5IHdoYXQgSSB3YXMgdGhpbmtpbmcuDQo+ IA0KPiBUaGUgdGFpbHMgYXJlIHRoZSBwb2ludGVycyBhZnRlciBhbnkgdXBkYXRlcywgd2hpY2gg aXMgc2hvd24gdmVyeSBuaWNlbHkgaW4gdGhlIGRvY3VtZW50YXRpb24uDQo+IEFuZCBjZXJ0YWlu bHkgcHJvZC50YWlsIHdpbGwgbm90IG1vdmUgZnVydGhlciBhaGVhZCB0aGFuIHByb2QuaGVhZC4N Cj4gDQo+IFNvIGl0IG1ha2VzIHNlbnNlIHVzaW5nIHRoZSB0YWlscyBvdXRzaWRlIHRoZSBmdW5j dGlvbnMgdGhhdCBtb3ZlIHRoZSBwb2ludGVycy4NCj4gDQo+IE9saXZpZXIgZm91bmQgdGhlIHJh Y2UgSSBjb3VsZG4ndCBmaW5kOg0KPiAxLiBUaGUgdGhyZWFkIGNhbGxzIHJ0ZV9yaW5nX2NvdW50 KCksIGFuZCBzaW5jZSB0aGVyZSBpcyBubyBtZW1vcnkgYmFycmllciBpdCByZWFkcyBjb25zLnRh aWwsIGFuZCBoYXMgbm90IHlldCByZWFkIHByb2QudGFpbC4NCj4gMi4gT3RoZXIgdGhyZWFkcyB1 c2UgdGhlIHJpbmcgc2ltdWx0YW5lb3VzbHkuIEEgY29uc3VtZXIgdGhyZWFkIG1vdmVzIGNvbnMu dGFpbCBhaGVhZCBhbmQgYSBwcm9kdWNlciB0aHJlYWQgdGhlbiBtb3ZlcyBwcm9kLnRhaWwgYWhl YWQuDQo+IE5vdGU6IFdpdGhvdXQgZmlyc3QgbW92aW5nIGNvbnMudGFpbCBhaGVhZCwgcHJvZC50 YWlsIGNhbm5vdCBtb3ZlIHRvbyBmYXIgYWhlYWQuDQo+IDMuIFRoZSB0aHJlYWQgcHJvY2VlZHMg dG8gcmVhZCBwcm9kLnRhaWwuIE5vdyB0aGUgY291bnQgaXMgY29tcGxldGVseSBpbmNvcnJlY3Qs IGFuZCBtYXkgZXZlbiBleGNlZWQgdGhlIGNhcGFjaXR5Lg0KPiANCj4gT2xpdmllciBwb2ludGVk IG91dCB0aGF0IHRoaXMgY291bGQgaGFwcGVuIGlmIHRoZSBydGVfcmluZ19jb3VudCB0aHJlYWQg aXMgaW50ZXJydXB0ZWQgYnkgdGhlIGtlcm5lbCwgYW5kIEkgYWdyZWUuIEhvd2V2ZXIsIGludHVp dGl2ZWx5IEkgZG9uJ3QNCj4gdGhpbmsgdGhhdCBpdCBjYW4gaGFwcGVuIGluIGEgbm9uLUVBTCB0 aHJlYWQsIGJlY2F1c2UgdGhlIGNvbnN1bWVyIHRocmVhZCBuZWVkcyB0byBmaW5pc2ggbW92aW5n IGNvbnMudGFpbCBiZWZvcmUgdGhlIHByb2R1Y2VyIHRocmVhZCBjYW4NCj4gbW92ZSBwcm9kLnRh aWwgdG9vIGZhciBhaGVhZC4gQW5kIGJ5IHRoZW4gdGhlIHJ0ZV9yaW5nX2NvdW50IHRocmVhZCBo YXMgaGFkIHBsZW50eSBvZiB0aW1lIHRvIHJlYWQgcHJvZC50YWlsLiBCdXQgaXQgY291bGQgaGFw cGVuIGluIHRoZW9yeS4NCj4gDQo+ID4gPiBUaGlzIGZ1bmN0aW9uIG1heSBwcm9iYWJseSByZXR1 cm4gaW52YWxpZCByZXN1bHRzIGluIE1DL01QIGNhc2VzLg0KPiA+ID4gV2UganVzdCBlbnN1cmUg dGhhdCB0aGUgcmVzdWx0IGlzIGJldHdlZW4gMCBhbmQgci0+Y2FwYWNpdHkuDQo+IA0KPiBTbyBz aG91bGQgd2UgdXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIHRvIHNheSB0aGF0IGl0IG1pZ2h0IHJl dHVybiBhbiBpbmNvcnJlY3QgY291bnQgKGlmIHRoZXJlIGlzIGEgcmFjZSksIG9yIHNob3VsZCB3 ZSBmaXggdGhlIGZ1bmN0aW9uIHRvDQo+IGFsd2F5cyBwcm92aWRlIGEgY29ycmVjdCB2YWx1ZT8N Cg0KQXMgbG9uZyBhcyB5b3UgaW52b2tlIHJ0ZV9yaW5nX2NvdW50KCkgd2hpbGUgdGhlcmUgYXJl IG90aGVyDQphY3RpdmUgcHJvZHVjZXJzL2NvbnN1bWVycyBmb3IgdGhhdCByaW5nIC0NCml0J3Mg cmV0dXJuIHZhbHVlIGNhbiBhbHdheXMgYmUgb3V0ZGF0ZWQsIGFuZCBub3QgcmVmbGVjdCBjdXJy ZW50IHJpbmcgc3RhdGUuDQpTbyBJIHRoaW5rIGp1c3QgdXBkYXRpbmcgdGhlIGRvYyBpcyBlbm91 Z2guDQoNCj4gDQo+IEZ1cnRoZXJtb3JlLCB0aGUgc2FtZSByYWNlIGNvbmRpdGlvbiBwcm9iYWJs eSBhZmZlY3RzIHJ0ZV9yaW5nX2VtcHR5KCkgc2ltaWxhcmx5LCBldmVuIGluIG15IGltcHJvdmVk IHZlcnNpb24uDQo+IA0KPiBBbmQgZG8gdGhlc2UgZnVuY3Rpb25zIG5lZWQgdG8gc3VwcG9ydCBu b24tRUFMIHRocmVhZHM/IEkgZG9uJ3QgdGhpbmsgc28uIFdoYXQgZG8geW91IHRoaW5rPw0KDQpO b3Qgc3VyZSB3aHkgeW91IGRpZmZlciBFQUwgYW5kIG5vbiBFQUwgdGhyZWFkcyBoZXJlLg0KVGhl IG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0gZnJvbSBzY2hlZHVsZXIgcG9pbnQgb2Ygdmll dyAtDQpFQUwgdGhyZWFkcyBoYXZlIGNwdSBhZmZpbml0eSBzZXQgYnkgcnRlX2VhbF9pbml0KCku DQpCdXQgbm90aGluZyBwcmV2ZW50cyB1c2VyIGZyb20gc2V0dGluZy91cGRhdGluZyBjcHUgYWZm aW5pdHkNCmZvciBhbnkgdGhyZWFkIGluIGhpcyBwcm9jZXNzIGluIGEgd2F5IGhlIGxpa2VzLg0K DQo=