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 70EC1A3295 for ; Wed, 23 Oct 2019 17:12:49 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0DD911C43B; Wed, 23 Oct 2019 17:12:46 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by dpdk.org (Postfix) with ESMTP id 496AB1C43B for ; Wed, 23 Oct 2019 17:12:43 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Oct 2019 08:12:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,221,1569308400"; d="scan'208";a="398070749" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga005.fm.intel.com with ESMTP; 23 Oct 2019 08:12:42 -0700 Received: from fmsmsx114.amr.corp.intel.com (10.18.116.8) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 23 Oct 2019 08:12:42 -0700 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by FMSMSX114.amr.corp.intel.com (10.18.116.8) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 23 Oct 2019 08:12:41 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.176]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.225]) with mapi id 14.03.0439.000; Wed, 23 Oct 2019 23:12:39 +0800 From: "Wang, Haiyue" To: Stephen Hemminger , Olivier Matz CC: "Ananyev, Konstantin" , "dev@dpdk.org" , Andrew Rybchenko , "Richardson, Bruce" , Jerin Jacob Kollanukkaran , "Wiles, Keith" , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , Thomas Monjalon Thread-Topic: [PATCH v2] mbuf: support dynamic fields and flags Thread-Index: AQHVhPkmy3Bf3WM2d0mLozWwBzvtDqdmxoeAgADPNLD///GLgIAATdSAgACJDlA= Date: Wed, 23 Oct 2019 15:12:39 +0000 Message-ID: References: <20190710092907.5565-1-olivier.matz@6wind.com> <20191017144219.32708-1-olivier.matz@6wind.com> <2601191342CEEE43887BDE71AB97725801A8C6E2BD@IRSMSX104.ger.corp.intel.com> <20191023102143.GI25286@glumotte.dev.6wind.com> <20191023080017.6b62ea7d@hermes.lan> In-Reply-To: <20191023080017.6b62ea7d@hermes.lan> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDUzYjNhOTctOGUyNi00Y2QzLWEzM2YtYTNkZTVlMTI5NmI2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiR056VnZVTnY5ZG1HVUx4aEhLbURwN2k5VGFpeUV5N2FBVFpFbmxBM3IxT3lQdWRVbmdnYnJ5Q3JidXEzSEgzZyJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2] mbuf: support dynamic fields and flags 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTdGVwaGVuIEhlbW1pbmdlciBb bWFpbHRvOnN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnXQ0KPiBTZW50OiBXZWRuZXNkYXksIE9j dG9iZXIgMjMsIDIwMTkgMjM6MDANCj4gVG86IE9saXZpZXIgTWF0eiA8b2xpdmllci5tYXR6QDZ3 aW5kLmNvbT4NCj4gQ2M6IFdhbmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29tPjsgQW5h bnlldiwgS29uc3RhbnRpbiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT47DQo+IGRldkBk cGRrLm9yZzsgQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT47IFJp Y2hhcmRzb24sIEJydWNlDQo+IDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT47IEplcmluIEph Y29iIEtvbGxhbnVra2FyYW4gPGplcmluakBtYXJ2ZWxsLmNvbT47IFdpbGVzLCBLZWl0aA0KPiA8 a2VpdGgud2lsZXNAaW50ZWwuY29tPjsgTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0 ZW1zLmNvbT47IFRob21hcyBNb25qYWxvbg0KPiA8dGhvbWFzQG1vbmphbG9uLm5ldD4NCj4gU3Vi amVjdDogUmU6IFtQQVRDSCB2Ml0gbWJ1Zjogc3VwcG9ydCBkeW5hbWljIGZpZWxkcyBhbmQgZmxh Z3MNCj4gDQo+IE9uIFdlZCwgMjMgT2N0IDIwMTkgMTI6MjE6NDMgKzAyMDANCj4gT2xpdmllciBN YXR6IDxvbGl2aWVyLm1hdHpANndpbmQuY29tPiB3cm90ZToNCj4gDQo+ID4gT24gV2VkLCBPY3Qg MjMsIDIwMTkgYXQgMDM6MTY6MTNBTSArMDAwMCwgV2FuZywgSGFpeXVlIHdyb3RlOg0KPiA+ID4g PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiBGcm9tOiBBbmFueWV2LCBLb25z dGFudGluDQo+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAyMywgMjAxOSAwNjo1Mg0K PiA+ID4gPiBUbzogT2xpdmllciBNYXR6IDxvbGl2aWVyLm1hdHpANndpbmQuY29tPjsgZGV2QGRw ZGsub3JnDQo+ID4gPiA+IENjOiBBbmRyZXcgUnliY2hlbmtvIDxhcnliY2hlbmtvQHNvbGFyZmxh cmUuY29tPjsgUmljaGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsN Cj4gV2FuZywNCj4gPiA+ID4gSGFpeXVlIDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+OyBKZXJpbiBK YWNvYiBLb2xsYW51a2thcmFuIDxqZXJpbmpAbWFydmVsbC5jb20+OyBXaWxlcywgS2VpdGgNCj4g PiA+ID4gPGtlaXRoLndpbGVzQGludGVsLmNvbT47IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNo YXJlc3lzdGVtcy5jb20+OyBTdGVwaGVuIEhlbW1pbmdlcg0KPiA+ID4gPiA8c3RlcGhlbkBuZXR3 b3JrcGx1bWJlci5vcmc+OyBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+DQo+ ID4gPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjJdIG1idWY6IHN1cHBvcnQgZHluYW1pYyBmaWVs ZHMgYW5kIGZsYWdzDQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gTWFueSBmZWF0dXJlcyBy ZXF1aXJlIHRvIHN0b3JlIGRhdGEgaW5zaWRlIHRoZSBtYnVmLiBBcyB0aGUgcm9vbSBpbiBtYnVm DQo+ID4gPiA+ID4gc3RydWN0dXJlIGlzIGxpbWl0ZWQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBo YXZlIGEgZmllbGQgZm9yIGVhY2gNCj4gPiA+ID4gPiBmZWF0dXJlLiBBbHNvLCBjaGFuZ2luZyBm aWVsZHMgaW4gdGhlIG1idWYgc3RydWN0dXJlIGNhbiBicmVhayB0aGUgQVBJDQo+ID4gPiA+ID4g b3IgQUJJLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhpcyBjb21taXQgYWRkcmVzc2VzIHRoZXNl IGlzc3VlcywgYnkgZW5hYmxpbmcgdGhlIGR5bmFtaWMgcmVnaXN0cmF0aW9uDQo+ID4gPiA+ID4g b2YgZmllbGRzIG9yIGZsYWdzOg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSBhIGR5bmFtaWMgZmll bGQgaXMgYSBuYW1lZCBhcmVhIGluIHRoZSBydGVfbWJ1ZiBzdHJ1Y3R1cmUsIHdpdGggYQ0KPiA+ ID4gPiA+ICAgZ2l2ZW4gc2l6ZSAoPj0gMSBieXRlKSBhbmQgYWxpZ25tZW50IGNvbnN0cmFpbnQu DQo+ID4gPiA+ID4gLSBhIGR5bmFtaWMgZmxhZyBpcyBhIG5hbWVkIGJpdCBpbiB0aGUgcnRlX21i dWYgc3RydWN0dXJlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhlIHR5cGljYWwgdXNlIGNhc2Ug aXMgYSBQTUQgdGhhdCByZWdpc3RlcnMgc3BhY2UgZm9yIGFuIG9mZmxvYWQNCj4gPiA+ID4gPiBm ZWF0dXJlLCB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0cyB0byBlbmFibGUgdGhpcyBmZWF0 dXJlLiAgQXMNCj4gPiA+ID4gPiB0aGUgc3BhY2UgaW4gbWJ1ZiBpcyBsaW1pdGVkLCB0aGUgc3Bh Y2Ugc2hvdWxkIG9ubHkgYmUgcmVzZXJ2ZWQgaWYgaXQNCj4gPiA+ID4gPiBpcyBnb2luZyB0byBi ZSB1c2VkIChpLmUgd2hlbiB0aGUgYXBwbGljYXRpb24gZXhwbGljaXRseSBhc2tzIGZvciBpdCku DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGUgcmVnaXN0cmF0aW9uIGNhbiBiZSBkb25lIGF0IGFu eSBtb21lbnQsIGJ1dCBpdCBpcyBub3QgcG9zc2libGUNCj4gPiA+ID4gPiB0byB1bnJlZ2lzdGVy IGZpZWxkcyBvciBmbGFncyBmb3Igbm93Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gU2lnbmVkLW9m Zi1ieTogT2xpdmllciBNYXR6IDxvbGl2aWVyLm1hdHpANndpbmQuY29tPg0KPiA+ID4gPiA+IEFj a2VkLWJ5OiBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+DQo+ID4gPiA+ID4g LS0tDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiB2Mg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gKiBSZWJh c2Ugb24gdG9wIG9mIG1hc3Rlcjogc29sdmUgY29uZmxpY3Qgd2l0aCBTdGVwaGVuJ3MgcGF0Y2hz ZXQNCj4gPiA+ID4gPiAgIChwYWNrZXQgY29weSkNCj4gPiA+ID4gPiAqIEFkZCBuZXcgYXBpcyB0 byByZWdpc3RlciBhIGR5bmFtaWMgZmllbGQvZmxhZyBhdCBhIHNwZWNpZmljIHBsYWNlDQo+ID4g PiA+ID4gKiBBZGQgYSBkdW1wIGZ1bmN0aW9uIChzdWdnIGJ5IERhdmlkKQ0KPiA+ID4gPiA+ICog RW5oYW5jZSBmaWVsZCByZWdpc3RyYXRpb24gZnVuY3Rpb24gdG8gc2VsZWN0IHRoZSBiZXN0IG9m ZnNldCwga2VlcGluZw0KPiA+ID4gPiA+ICAgbGFyZ2UgYWxpZ25lZCB6b25lcyBhcyBtdWNoIGFz IHBvc3NpYmxlIChzdWdnIGJ5IEtvbnN0YW50aW4pDQo+ID4gPiA+ID4gKiBVc2UgYSBzaXplX3Qg YW5kIHVuc2lnbmVkIGludCBpbnN0ZWFkIG9mIGludCB3aGVuIHJlbGV2YW50DQo+ID4gPiA+ID4g ICAoc3VnZyBieSBLb25zdGFudGluKQ0KPiA+ID4gPiA+ICogVXNlICJ1aW50NjRfdCBkeW5maWVs ZDFbMl0iIGluIG1idWYgaW5zdGVhZCBvZiAyIHVpbnQ2NF90IGZpZWxkcw0KPiA+ID4gPiA+ICAg KHN1Z2cgYnkgS29uc3RhbnRpbikNCj4gPiA+ID4gPiAqIFJlbW92ZSB1bnVzZWQgYXJndW1lbnQg aW4gcHJpdmF0ZSBmdW5jdGlvbiAoc3VnZyBieSBLb25zdGFudGluKQ0KPiA+ID4gPiA+ICogRml4 IGFuZCBzaW1wbGlmeSBsb2NraW5nIChzdWdnIGJ5IEtvbnN0YW50aW4pDQo+ID4gPiA+ID4gKiBG aXggbWlub3IgdHlwbw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gcmZjIC0+IHYxDQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiAqIFJlYmFzZSBvbiB0b3Agb2YgbWFzdGVyDQo+ID4gPiA+ID4gKiBDaGFuZ2Ug cmVnaXN0cmF0aW9uIEFQSSB0byB1c2UgYSBzdHJ1Y3R1cmUgaW5zdGVhZCBvZg0KPiA+ID4gPiA+ ICAgdmFyaWFibGVzLCBnZXR0aW5nIHJpZCBvZiAjZGVmaW5lcyAoU3RlcGhlbidzIGNvbW1lbnQp DQo+ID4gPiA+ID4gKiBVcGRhdGUgZmxhZyByZWdpc3RyYXRpb24gdG8gdXNlIGEgc2ltaWxhciBB UEkgYXMgZmllbGRzLg0KPiA+ID4gPiA+ICogQ2hhbmdlIG1heCBuYW1lIGxlbmd0aCBmcm9tIDMy IHRvIDY0IChzdWdnLiBieSBUaG9tYXMpDQo+ID4gPiA+ID4gKiBFbmhhbmNlIEFQSSBkb2N1bWVu dGF0aW9uIChIYWl5dWUncyBhbmQgQW5kcmV3J3MgY29tbWVudHMpDQo+ID4gPiA+ID4gKiBBZGQg YSBkZWJ1ZyBsb2cgYXQgcmVnaXN0cmF0aW9uDQo+ID4gPiA+ID4gKiBBZGQgc29tZSB3b3JkcyBp biByZWxlYXNlIG5vdGUNCj4gPiA+ID4gPiAqIERpZCBzb21lIHBlcmZvcm1hbmNlIHRlc3RzIChz dWdnLiBieSBBbmRyZXcpOg0KPiA+ID4gPiA+ICAgT24gbXkgcGxhdGZvcm0sIHJlYWRpbmcgYSBk eW5hbWljIGZpZWxkIHRha2VzIH4zIGN5Y2xlcyBtb3JlDQo+ID4gPiA+ID4gICB0aGFuIGEgc3Rh dGljIGZpZWxkLCBhbmQgfjIgY3ljbGVzIG1vcmUgZm9yIHdyaXRpbmcuDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiAgYXBwL3Rlc3QvdGVzdF9tYnVmLmMgICAgICAgICAgICAgICAgICAgfCAxNDUgKysr KysrLQ0KPiA+ID4gPiA+ICBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzE5XzExLnJzdCB8 ICAgNyArDQo+ID4gPiA+ID4gIGxpYi9saWJydGVfbWJ1Zi9NYWtlZmlsZSAgICAgICAgICAgICAg IHwgICAyICsNCj4gPiA+ID4gPiAgbGliL2xpYnJ0ZV9tYnVmL21lc29uLmJ1aWxkICAgICAgICAg ICAgfCAgIDYgKy0NCj4gPiA+ID4gPiAgbGliL2xpYnJ0ZV9tYnVmL3J0ZV9tYnVmLmggICAgICAg ICAgICAgfCAgMjMgKy0NCj4gPiA+ID4gPiAgbGliL2xpYnJ0ZV9tYnVmL3J0ZV9tYnVmX2R5bi5j ICAgICAgICAgfCA1NDggKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiA+ICBsaWIv bGlicnRlX21idWYvcnRlX21idWZfZHluLmggICAgICAgICB8IDIyNiArKysrKysrKysrDQo+ID4g PiA+ID4gIGxpYi9saWJydGVfbWJ1Zi9ydGVfbWJ1Zl92ZXJzaW9uLm1hcCAgIHwgICA3ICsNCj4g PiA+ID4gPiAgOCBmaWxlcyBjaGFuZ2VkLCA5NTkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMo LSkNCj4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfbWJ1Zi9ydGVfbWJ1 Zl9keW4uYw0KPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9tYnVmL3J0 ZV9tYnVmX2R5bi5oDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3Qv dGVzdF9tYnVmLmMgYi9hcHAvdGVzdC90ZXN0X21idWYuYw0KPiA+ID4gPiA+IGluZGV4IGI5YzJi MjUwMC4uMDFjYWZhZDU5IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2FwcC90ZXN0L3Rlc3RfbWJ1 Zi5jDQo+ID4gPiA+ID4gKysrIGIvYXBwL3Rlc3QvdGVzdF9tYnVmLmMNCj4gPiA+ID4gPiBAQCAt MjgsNiArMjgsNyBAQA0KPiA+ID4gPiA+ICAjaW5jbHVkZSA8cnRlX3JhbmRvbS5oPg0KPiA+ID4g PiA+ICAjaW5jbHVkZSA8cnRlX2N5Y2xlcy5oPg0KPiA+ID4gPiA+ICAjaW5jbHVkZSA8cnRlX21h bGxvYy5oPg0KPiA+ID4gPiA+ICsjaW5jbHVkZSA8cnRlX21idWZfZHluLmg+DQo+ID4gPiA+ID4N Cj4gPiA+DQo+ID4gPiBbc25pcF0NCj4gPiA+ID4gPiAraW50DQo+ID4gPiA+ID4gK3J0ZV9tYnVm X2R5bmZsYWdfcmVnaXN0ZXJfYml0bnVtKGNvbnN0IHN0cnVjdCBydGVfbWJ1Zl9keW5mbGFnICpw YXJhbXMsDQo+ID4gPiA+ID4gKwkJCQl1bnNpZ25lZCBpbnQgcmVxKQ0KPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gKwlpbnQgcmV0Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWlmIChyZXEgIT0g VUlOVF9NQVggJiYgcmVxID49IDY0KSB7DQo+ID4gPiA+DQo+ID4gPiA+IE1pZ2h0IGJlIGJldHRl ciB0byByZXBsYWNlIDY0IHdpdGggc29tZXRoaW5nIGxpa2Ugc2l6ZW9mKG1idWYtPm9sX2ZsYWdz KSAqIENIQVJfQklUIG9yIHNvLg0KPiA+ID4NCj4gPiA+IE1pZ2h0IGludHJvZHVjZSBhIG5ldyBt YWNybyBsaWtlIGtlcm5lbDoNCj4gPiA+DQo+ID4gPiAvKioNCj4gPiA+ICAqIEZJRUxEX1NJWkVP RiAtIGdldCB0aGUgc2l6ZSBvZiBhIHN0cnVjdCdzIGZpZWxkDQo+ID4gPiAgKiBAdDogdGhlIHRh cmdldCBzdHJ1Y3QNCj4gPiA+ICAqIEBmOiB0aGUgdGFyZ2V0IHN0cnVjdCdzIGZpZWxkDQo+ID4g PiAgKiBSZXR1cm46IHRoZSBzaXplIG9mIEBmIGluIHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbiB3aXRo b3V0IGhhdmluZyBhDQo+ID4gPiAgKiBkZWNsYXJlZCBpbnN0YW5jZSBvZiBAdC4NCj4gPiA+ICAq Lw0KPiA+ID4gI2RlZmluZSBGSUVMRF9TSVpFT0YodCwgZikgKHNpemVvZigoKHQqKTApLT5mKSkN Cj4gPiA+DQo+ID4gPiBUaGVuOiBGSUVMRF9TSVpFT0YocnRlX21idWYsIG9sX2ZsYWdzKSAqIENI QVJfQklUDQo+ID4NCj4gPiBHb29kIGlkZWEsIHRoYW5rcw0KPiA+DQo+IA0KPiBLZXJuZWwgaXMg cmVwbGFjaW5nIEZJRUxEX1NJWkVPRiB3aXRoIHNpemVvZl9tZW1iZXINCg0KWWVzLCBidXQgbG9v a3MgbGlrZSBpbiA1LjUgPyA1LjQgaGFzbid0IG1lcmdlZC4gOy0pDQoNCmh0dHBzOi8vd3d3LnBo b3Jvbml4LmNvbS9zY2FuLnBocD9wYWdlPW5ld3NfaXRlbSZweD1MaW51eC01LjQtU2l6ZS1PZi1N ZW1iZXINCg0KaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMTE4NDU4My8NCg0K Ky8qKg0KKyAqIHNpemVvZl9tZW1iZXIoVFlQRSwgTUVNQkVSKSAtIGdldCB0aGUgc2l6ZSBvZiBh IHN0cnVjdCdzIG1lbWJlcg0KKyAqDQorICogQFRZUEU6IHRoZSB0YXJnZXQgc3RydWN0DQorICog QE1FTUJFUjogdGhlIHRhcmdldCBzdHJ1Y3QncyBtZW1iZXINCisgKg0KKyAqIFJldHVybjogdGhl IHNpemUgb2YgQE1FTUJFUiBpbiB0aGUgc3RydWN0IGRlZmluaXRpb24gd2l0aG91dCBoYXZpbmcg YQ0KKyAqIGRlY2xhcmVkIGluc3RhbmNlIG9mIEBUWVBFLg0KKyAqLw0KKyNkZWZpbmUgc2l6ZW9m X21lbWJlcihUWVBFLCBNRU1CRVIpCShzaXplb2YoKChUWVBFICopMCktPk1FTUJFUikpDQoNCg0K