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 6260FA0613 for ; Mon, 23 Sep 2019 19:14:53 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0D5781BE9F; Mon, 23 Sep 2019 19:14:52 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 511AB1BE9A for ; Mon, 23 Sep 2019 19:14:49 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Sep 2019 10:14:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,541,1559545200"; d="scan'208";a="389549032" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga006.fm.intel.com with ESMTP; 23 Sep 2019 10:14:49 -0700 Received: from fmsmsx155.amr.corp.intel.com (10.18.116.71) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 23 Sep 2019 10:14:48 -0700 Received: from fmsmsx117.amr.corp.intel.com ([169.254.3.133]) by FMSMSX155.amr.corp.intel.com ([169.254.5.34]) with mapi id 14.03.0439.000; Mon, 23 Sep 2019 10:14:48 -0700 From: "Wiles, Keith" To: Olivier Matz CC: dev , Thomas Monjalon , "Wang, Haiyue" , Stephen Hemminger , Andrew Rybchenko , Jerin Jacob Kollanukkaran Thread-Topic: [PATCH] mbuf: support dynamic fields and flags Thread-Index: AQHVbkHXCVvrq0cpZk2iDJ212rSDCKc2Re8AgAMxGICAAGUXAIAAESUAgAAQXoA= Date: Mon, 23 Sep 2019 17:14:48 +0000 Message-ID: References: <20190710092907.5565-1-olivier.matz@6wind.com> <20190918165448.22409-1-olivier.matz@6wind.com> <37115768-EDA5-4089-8E86-3EFB26194A00@intel.com> <20190923091301.hquyxbbcbai43e4p@platinum> <12FB7B92-A7FE-40E1-A6AA-DD1C92AF0A59@intel.com> <20190923161612.6dwnp54ai7fnnpm7@platinum> In-Reply-To: <20190923161612.6dwnp54ai7fnnpm7@platinum> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.252.202.153] Content-Type: text/plain; charset="utf-8" Content-ID: <80F8B27E0AD28E439AC100E2514EAAF7@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] 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" DQoNCj4gT24gU2VwIDIzLCAyMDE5LCBhdCAxMToxNiBBTSwgT2xpdmllciBNYXR6IDxvbGl2aWVy Lm1hdHpANndpbmQuY29tPiB3cm90ZToNCj4gDQo+IEhpLA0KPiANCj4gKHJlZm9ybWF0ZWQgdGhl IHF1b3RlcykNCj4gDQo+IE9uIE1vbiwgU2VwIDIzLCAyMDE5IGF0IDAzOjE0OjUxUE0gKzAwMDAs IFdpbGVzLCBLZWl0aCB3cm90ZToNCj4+IA0KPj4gDQo+PiBPbiBTZXAgMjMsIDIwMTksIGF0IDQ6 MTMgQU0sIE9saXZpZXIgTWF0eiA8b2xpdmllci5tYXR6QDZ3aW5kLmNvbTxtYWlsdG86b2xpdmll ci5tYXR6QDZ3aW5kLmNvbT4+IHdyb3RlOg0KPj4+IA0KPj4+IEhpIEtlaXRoLA0KPj4+IA0KPj4+ IE9uIFNhdCwgU2VwIDIxLCAyMDE5IGF0IDA4OjI4OjMyQU0gKzAwMDAsIFdpbGVzLCBLZWl0aCB3 cm90ZToNCj4+Pj4gDQo+Pj4+IA0KPj4+PiBPbiBTZXAgMTgsIDIwMTksIGF0IDY6NTQgUE0sIE9s aXZpZXIgTWF0eiA8b2xpdmllci5tYXR6QDZ3aW5kLmNvbTxtYWlsdG86b2xpdmllci5tYXR6QDZ3 aW5kLmNvbT4+IHdyb3RlOg0KPj4+PiANCj4+Pj4+IE1hbnkgZmVhdHVyZXMgcmVxdWlyZSB0byBz dG9yZSBkYXRhIGluc2lkZSB0aGUgbWJ1Zi4gQXMgdGhlIHJvb20gaW4gbWJ1Zg0KPj4+Pj4gc3Ry dWN0dXJlIGlzIGxpbWl0ZWQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYXZlIGEgZmllbGQgZm9y IGVhY2gNCj4+Pj4+IGZlYXR1cmUuIEFsc28sIGNoYW5naW5nIGZpZWxkcyBpbiB0aGUgbWJ1ZiBz dHJ1Y3R1cmUgY2FuIGJyZWFrIHRoZSBBUEkNCj4+Pj4+IG9yIEFCSS4NCj4+Pj4+IA0KPj4+Pj4g VGhpcyBjb21taXQgYWRkcmVzc2VzIHRoZXNlIGlzc3VlcywgYnkgZW5hYmxpbmcgdGhlIGR5bmFt aWMgcmVnaXN0cmF0aW9uDQo+Pj4+PiBvZiBmaWVsZHMgb3IgZmxhZ3M6DQo+Pj4+PiANCj4+Pj4+ IC0gYSBkeW5hbWljIGZpZWxkIGlzIGEgbmFtZWQgYXJlYSBpbiB0aGUgcnRlX21idWYgc3RydWN0 dXJlLCB3aXRoIGENCj4+Pj4+IGdpdmVuIHNpemUgKD49IDEgYnl0ZSkgYW5kIGFsaWdubWVudCBj b25zdHJhaW50Lg0KPj4+Pj4gLSBhIGR5bmFtaWMgZmxhZyBpcyBhIG5hbWVkIGJpdCBpbiB0aGUg cnRlX21idWYgc3RydWN0dXJlLg0KPj4+Pj4gDQo+Pj4+PiBUaGUgdHlwaWNhbCB1c2UgY2FzZSBp cyBhIFBNRCB0aGF0IHJlZ2lzdGVycyBzcGFjZSBmb3IgYW4gb2ZmbG9hZA0KPj4+Pj4gZmVhdHVy ZSwgd2hlbiB0aGUgYXBwbGljYXRpb24gcmVxdWVzdHMgdG8gZW5hYmxlIHRoaXMgZmVhdHVyZS4g IEFzDQo+Pj4+PiB0aGUgc3BhY2UgaW4gbWJ1ZiBpcyBsaW1pdGVkLCB0aGUgc3BhY2Ugc2hvdWxk IG9ubHkgYmUgcmVzZXJ2ZWQgaWYgaXQNCj4+Pj4+IGlzIGdvaW5nIHRvIGJlIHVzZWQgKGkuZSB3 aGVuIHRoZSBhcHBsaWNhdGlvbiBleHBsaWNpdGx5IGFza3MgZm9yIGl0KS4NCj4+Pj4+IA0KPj4+ Pj4gVGhlIHJlZ2lzdHJhdGlvbiBjYW4gYmUgZG9uZSBhdCBhbnkgbW9tZW50LCBidXQgaXQgaXMg bm90IHBvc3NpYmxlDQo+Pj4+PiB0byB1bnJlZ2lzdGVyIGZpZWxkcyBvciBmbGFncyBmb3Igbm93 Lg0KPj4+Pj4gDQo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBPbGl2aWVyIE1hdHogPG9saXZpZXIubWF0 ekA2d2luZC5jb208bWFpbHRvOm9saXZpZXIubWF0ekA2d2luZC5jb20+Pg0KPj4+Pj4gQWNrZWQt Ynk6IFRob21hcyBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldDxtYWlsdG86dGhvbWFzQG1v bmphbG9uLm5ldD4+DQo+Pj4+IOKAlA0KPj4+PiANCj4+Pj4gDQo+Pj4+IA0KPj4+PiBUaGUgaWRl YSBvZiByZWdpc3RyYXRpb24gZm9yIHNwYWNlIGluIHRoZSBtYnVmIEkgYW0gbm90IGEgYmlnIGZh bi4gSSBkaWQgbGlrZQ0KPj4+PiBLb25zdGFudGlu4oCZcyBzdWdnZXN0aW9uIG9mIGhhdmluZyB0 aGUgY29tcGlsZXIgaGVscCB3aXRoIG9wdGltaXppbmcgdGhlIGNvZGUsDQo+Pj4+IGJ1dCB3aXRo IGEgc2xpZ2h0IGRpZmZlcmVuY2UuIE1heWJlIEkgbWlzdW5kZXJzdGFuZCwgYnV0IG5vdyB3aXRo IHRoaXMgZGVzaWduDQo+Pj4+IHlvdSBoYXZlIHRvIHBhc3MgdGhlIG9mZnNldHMgdG8gZGlmZmVy ZW50IHBhcnRzIG9mIHRoZSBhcHBsaWNhdGlvbiBvciBwbGFjZSBpbg0KPj4+PiBnbG9iYWwgbWVt b3J5IG9yIGhhdmUgZWFjaCBzZWN0aW9uIHJlcXVlc3QgdGhlIG9mZnNldHMuIEl0IHNlZW1zIGdy ZWF0IGlmIHRoZQ0KPj4+PiBhcHBsaWNhdGlvbiBpcyBvbmUgYmlnIGFwcGxpY2F0aW9uIG9yIGFu IGFwcGxpYW5jZSBtb2RlbCBhcHBsaWNhdGlvbiBoYXZpbmcNCj4+Pj4gY29udHJvbCBvZiB0aGUg d2hvbGUgZGVzaWduIG5vdCBzbyBnb29kIGZvciBzZXJ2aWNlIGNoYWlucyBsaWtlIGRlc2lnbnMg d2hlcmUNCj4+Pj4gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSB3aG9sZSBhcHBsaWNhdGlvbiBpcyBk ZXNpZ24gYnkgZGlmZmVyZW50IHRlYW1zLg0KPj4+IA0KPj4+IElmIHRoZSBnbG9iYWwgdmFyaWFi bGUgc3RvcmluZyB0aGUgb2Zmc2V0IGlzIGRlZmluZWQgaW4gdGhlIG1idWYgbGF5ZXIsIHdoYXQN Cj4+PiB3b3VsZCBiZSB0aGUgcHJvYmxlbT8NCj4+IA0KPj4gQXJlIHlvdSBhc3N1bWluZyB0aGUg dmFsdWVzIGFyZSBzaGFyZWQgYmV0d2VlbiBwcmltYXJ5L3NlY29uZGFyeSBtb2RlbCBvcg0KPj4g YmV0d2VlbiBwcm9jZXNzZXMgdXNpbmcgc2hhcmVkIG1lbW9yeT8gSWYgbW92aW5nIHRoZSBwYWNr ZXQgZGF0YSB2aWEgc2hhcmVkDQo+PiBtZW1vcnkgdG8gYSBkaWZmZXJlbnQgYXBwbGljYXRpb24g d3JpdHRlbiBieSBhIGRpZmZlcmVudCBjb21wYW55IHlvdSBzdGlsbA0KPj4gaGF2ZSB0byBtb3Zl IHRoYXQgbWV0YWRhdGEuDQo+IA0KPiBUaGUgZHluYW1pYyBtYnVmIHByb3Bvc2FsIHdvcmtzIHdp dGggc2Vjb25kYXJ5IHByb2Nlc3Nlcy4gV2hhdCBkb2VzIHRoYXQNCj4gY2hhbmdlIGlmIHRoZSBh cHBsaWNhdGlvbiBpcyB3cml0dGVuIGJ5IGEgZGlmZmVyZW50IGNvbXBhbnk/IElmIHlvdSBuZWVk DQo+IHRvIHN0b3JlIGEgdGltZXN0YW1wLCB5b3UgcmVnaXN0ZXIgdGhlIHRpbWVzdGFtcCBhbmQg dGhlIG9mZnNldCB3aWxsIGJlDQo+IHRoZSBzYW1lIGluIHByaW1hcnkgYW5kIHNlY29uZGFyeS4N Cj4gDQo+IA0KPj4gSWYgdGhlIHR5cGUgd2FzIGNhcnJpZWQgd2l0aCB0aGUgbWJ1ZiB3ZSBjYW4g ZWFzaWx5IGNvbnZleSBhIHNtYWxsDQo+PiB0eXBlIHZhbHVlIG9yIHdlIHdvdWxkIG5lZWQgdG8g dGVsbCB0aGUgb3RoZXIgc2lkZSB3ZSBoYXZlIGFsbCBvZiB0aGlzDQo+PiByZWdpc3RyYXRpb24g aW5mb3JtYXRpb24gdG8gc2VuZC4gSSB3b3VsZCBzdWdnZXN0IHRoZSBudW1iZXIgb2YgbWJ1Zg0K Pj4gdHlwZXMgd2lsbCBiZSBzbWFsbCBvdmVyIHRpbWUgYW5kIEkgYmVsaWV2ZSBhIDQgYml0IG9y IDggYml0IHR5cGUgaXMNCj4+IHJlYXNvbmFibGUuIEluIG1hbnkgcHJvdG9jb2xzIHVzaW5nIGEg dHlwZSB2YWx1ZSBpcyB1c2VkIHRvIGNvbnZleQ0KPj4gdGhpcyB0eXBlIG9mIGluZm9ybWF0aW9u LiBXZSBjYW4gZXZlbiB0aWdodGx5IGNvbnRyb2wgdGhlIG51bWJlciBvZg0KPj4gdHlwZXMgRFBE SyBjb250cm9scyBhbmQgdGhlbiBsZWF2ZSBzb21lIGZvciB1c2VyIGRlZmluZWQgaWYgd2UgbGlr ZS4NCj4gDQo+IDggYml0cyBtZWFucyAyNTYgZGlmZmVyZW50IG1idWYgbGF5b3V0cy4NCg0KSSBh bHNvIHN0YXRlZCA0IGJpdHMsIGJ1dCBpdCBpcyBhIHByb2JsZW0gd2l0aCB1c2luZyB0eXBlcyB3 ZSBoYXZlIHRvIGFsbG93IGEgbnVtYmVyIG9mIHRoZW0sIGJ1dCB0aGUgc21hcnQgdGhpbmcgaXMg d2UgcmVzdHJpY3QgRFBESyB1c2VzIHRvIG9ubHkgYSBmZXcuIFRoZSBkZXZlbG9wZXIgb2Ygb3Ro ZXIgYXBwbGljYXRpb25zIHVzaW5nIERQREsgY2FuIHVzZSBhbnkgbnVtYmVyIHRoZXkgbmVlZC4N Cj4gWW91IGRpZCBub3QgcmVwbGllZCB0byBteSBwcmV2aW91cyBxdWVzdGlvbnM6DQoNClNvcnJ5 IEkgZGlkIG5vdCBzZWUgYSBxdWVzdGlvbiBvdGhlciB0aGFuIGEgc3RhdGVtZW50IHdyYXBwZWQg aW4gYSBxdWVzdGlvbi4NCg0KVGhlIHJlcGx5IHRvIHRoZSB5b3VyIHF1ZXN0aW9uIGFib3V0IHN0 b3JpbmcgdGhlIG9mZnNldHMgaW4gdGhlIG1idWYgbGF5ZXIgaXMganVzdCBleHRyYSBkYXRhIGFu ZCBBUElzIHdlIGhhdmUgdG8gdGVzdC4gVGhlIG1idWYgcG9vbCB3b3VsZCBoYXZlIHRvIGNhcnJ5 IHRoaXMgaW5mb3JtYXRpb24gb3Igc29tZSB3YXkgdG8gYXNzb2NpYXRlIHRoZSBtZXRhZGF0YSBv ZiB0aGUgbWV0YWRhdGEgdG8gdGhlIGdpdmVuIG1idWYuIE15IHBvaW50IGlzIHRoZSB0eXBlIGlz IGNhcnJpZWQgd2l0aCB0aGUgbWJ1ZiBhbmQgdGhlbiB3ZSBoYXZlIG5vIHF1ZXN0aW9uIGFzIHRv IHRoZSB0eXBlIG9mIG1ldGFkYXRhIGNvbnRhaW5lZCBpbiB0aGUgbWJ1Zi4gSGF2aW5nIG1ldGFk YXRhIGZvciB0aGUgbWV0YWRhdGEgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBncmFiIG9yIHVzZSBl dmVuIG1vcmUgbWFjcm9zIG9yIGlubGluZXMgaXRzIG5vdCBnb2luZyB0byBtYWtlIGl0IGVhc2ll ciBmb3IgdGhlIGRldmVsb3BlciBvbmx5IG1vcmUgY29tcGxleC4gQSB0eXBlIGZpZWxkIHdpbGwg dGVsbCB5b3UgZXhhY3RseSB3aGF0IGFuZCB3ZXJlIHRoZSBtZXRhZGF0YSBpcyBsb2NhdGVkIGlu IHRoZSBtYnVmIGhlYWRlci4NCj4gDQo+IC0gd2hhdCBoYXBwZW5zIGlmIHlvdSBuZWVkIGEgZmll bGQgZnJvbSBsYXlvdXQxIGFuZCBhbm90aGVyIGZyb20gbGF5b3V0Mj8NCj4gIChleDogdGltZXN0 YW1wICsgaXBzZWMsIHRpbWVzdGFtcCArIHNlcW4sIHNlcW4gKyBpcHNlYywg4oCmKQ0KDQpBdCB0 aGlzIHBvaW50IHlvdSBuZWVkIHRvIGJlIHNtYXJ0IGFuZCB1c2UgYSBzaW5nbGUgdHlwZSBpbnN0 ZWFkIG9mIHRyeWluZyB0byBtZXJnZSB0d28gb3IgdGhyZWUgdHlwZXMgb3IgdXNlIGNhc2VzLiBU aGUgdHlwZSBkZWZpbmVzIHRoZSB2YWxpZCBmaWVsZHMsIGlmIHdlIGFyZSBjaGFuZ2luZyB0aGUg ZmllbGRzIGZyb20gb25lIHRvIGFub3RoZXIgaW4gYSBzaW5nbGUgbWJ1ZiBpbnN0YW5jZSBvciBw YWNrZXQgaW5zdGFuY2UgdGhhdCB3aWxsIG5vdCBoYXBwZW4gaW4gdGhlIGNhc2VzIHlvdSBkZWZp bmVkIGFib3ZlLiBNdWx0aS1tYnVmcyBmcm9tIHNheSBhIFBNRCBvciBhcHBsaWNhdGlvbiBpcyBu b3QgZ29pbmcgdG8gbmVlZCB0byBjb21iaW5lIGFsbCBvZiB0aGUgYWJvdmUgZXhhbXBsZXMuDQoN Cj4gLSBob3cgZG8geW91IGltcGxlbWVudCB0aGUgcngvdHggZHJpdmVycyBmdW5jdGlvbnMgaWYg eW91IGhhdmUgdG8gc3VwcG9ydA0KPiAgc2V2ZXJhbCBsYXlvdXRzLCB3aGVyZSBhIGZpZWxkIG1h eSBiZSBhdCBhIGRpZmZlcmVudCBvZmZzZXQ/DQo+IA0KPj4+PiBUaGUgb25seSB0aGluZ3MgeW91 IHdvdWxkIGhhdmUgdG8gZG8gaXM6DQo+Pj4+IA0KPj4+PiAxLyBlbnN1cmUgdGhlIG9mZnNldCBp cyByZWdpc3RlcmVkDQo+Pj4+ICBydGVfbWJ1Zl9keW5fdGltZXN0YW1wX3JlZ2lzdGVyKCkNCj4+ Pj4gDQo+Pj4+IDIvIHVzZSBoZWxwZXJzDQo+Pj4+ICBydGVfbWJ1Zl9keW5fdGltZXN0YW1wX2dl dCgpLCBydGVfbWJ1Zl9keW5fdGltZXN0YW1wX3NldCgpLCAuLi4NCj4+IA0KPj4+IEtvbnN0YW50 aW7igJlzIHN1Z2dlc3QgaWYgSSB1bmRlcnN0YW5kIGl0IHdhcyB0byB1c2Ugc3RydWN0dXJlcyB0 byBhbGxvdyB0aGUNCj4+PiBjb21waWxlciB0byBvcHRpbWl6ZSB0aGUgYWNjZXNzIHRvIHRoZSBt YnVmIGFuZCBJIGxpa2UgdGhhdCBpZGVhLCBidXQgd2l0aCBvbmUNCj4+PiBjaGFuZ2Ugd2UgYWRk IGEgZmllbGQgaW4gdGhlIG1idWYgdG8gZGVmaW5lIHRoZSBtYnVmIHN0cnVjdHVyZSB0eXBlLg0K Pj4+IA0KPj4+IFNheSAwIGlzIHRoZSBzdGFuZGFyZCBydGVfbWJ1ZiB0eXBlIHRoZW4gdHlwZSAx IGNvdWxkIGJlIHRoZSBJUFNlYyBvZmZzZXQgdHlwZQ0KPj4+IG1idWYsIHR5cGUgMiBjb3VsZCBi ZSBzb21ldGhpbmcgZWxzZSwg4oCmIFRoZSB0eXBlIDAgbG9va3MganVzdCBsaWtlIHRoZSBtYnVm IHdlDQo+Pj4gaGF2ZSB0b2RheSB3aXRoIG1heWJlIHRoZSBvcHRpb25hbCBmaWVsZHMgc2V0IHRv IHJlc2VydmVkIG9yIHNvbWUgdHlwZSBvZg0KPj4+IGZpbGxlciB2YXJpYWJsZXMgdG8gcmVzZXJ2 ZSB0aGUgaG9sZXMgaW4gdGhlIHN0cnVjdHVyZS4gVGhlbiB0eXBlIDEgaXMgdGhlDQo+Pj4gSVBT ZWMgbWJ1ZiBhbmQgaW4gdGhlIHJlc2VydmVkIHNlY3Rpb25zIG9mIHRoZSBtYnVmIGNvbnRhaW4g dGhlIElQU2VjIHJlbGF0ZWQNCj4+PiBkYXRhIHdpdGggdGhlIHN0YW5kYXJkIG1idWYgZmllbGRz IHN0aWxsIG1hdGNoaW5nIHRoZSB0eXBlIDAgdmVyc2lvbi4NCj4+IA0KPj4gVGhpcyB2ZXJ5IGxv b2sgbGlrZSB0aGUgInNlbGVjdGl2ZSBsYXlvdXQiIGluIG91ciBwcmVzZW50YXRpb24gWzFdLCBw YWdlIDE0Lg0KPj4gDQo+PiBZb3VyIGV4YW1wbGUgdGFsa3MgYWJvdXQgSVBzZWMsIGJ1dCBzb21l b25lIGVsc2Ugd2lsbCB3YW50IHRvIHVzZSBhDQo+PiBzZXF1ZW5jZSBudW1iZXIsIGFub3RoZXIg b25lIGEgdGltZXN0YW1wLCBhbmQgYW5vdGhlciBvbmUgd2lsbCB3YW50IHRvDQo+PiB1c2UgdGhp cyBzcGFjZSBmb3IgaXRzIG93biBhcHBsaWNhdGlvbi4gVGhlcmUgYXJlIGEgbG90IG9mIHVzZSBj YXNlcywNCj4+IGFuZCBpdCBkb2VzIG5vdCBzY2FsZSB0byBoYXZlIGEgbGF5b3V0IGZvciBlYWNo IG9mIHRoZW0uIFdvcnN0LCBpZg0KPj4gc29tZW9uZSB3YW50cyBJUHNlYyArIGEgc2VxdWVuY2Ug bnVtYmVyLCBob3cgY2FuIGl0IHdvcms/DQo+PiANCj4+IE9uZSBvZiB0aGUgcHJvYmxlbSB0byBz b2x2ZSBpcyB0byBhdm9pZCBtdXR1YWxseSBleGNsdXNpdmUgZmVhdHVyZSAoaS5lLg0KPj4gdW5p b24gb2YgZmllbGRzIHRoYXQgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgaW4gdGhlIG1idWYpLg0K Pj4gDQo+PiBUaGlzIGFsbG93cyB0aGUgbWJ1ZiB0byBiZSB1c2VkIGJ5IHRoZSBkZXZlbG9wZXIg YW5kIHRoZSBjb21waWxlciBub3cga25vd3MNCj4+IGV4YWN0bHkgd2hlcmUgdGhlIGZpZWxkcyBh cmUgbG9jYXRlZCBpbiB0aGUgc3RydWN0dXJlIGFuZCBkb2VzIG5vdCBoYXZlIHRvDQo+PiBkZWFs IHdpdGggYW55IG9mIHRoZSBtYWNyb3MgYW5kIG9mZnNldHMgYW5kIHJlZ2lzdHJhdGlvbiBzdWdn ZXN0ZWQgaGVyZS4gSnVzdA0KPj4gY2FzdCB0aGUgbWJ1ZiBwb2ludGVyIGludG8gdGhlIG5ldyB0 eXBlIG1idWYgc3RydWN0dXJlLiBXZSBqdXN0IGhhdmUgdG8gbWFrZQ0KPj4gc3VyZSB0aGUgY29k ZSB0aGF0IG5lZWRzIHRvIHVzZSBhIGdpdmVuIG1idWYgdHlwZSBoYXMgYWNjZXNzIHRvIHRoZSBz dHJ1Y3R1cmUNCj4+IGRlZmluaXRpb25zLg0KPj4gDQo+PiBXaXRoIHRoZSBjdXJyZW50IHByb3Bv c2FsLCB3ZSBjYW4gaW1hZ2luZSBhbiBBUEkgdG8gYXNrIHRvIHJlZ2lzdGVyIGENCj4+IGZpZWxk IGF0IGEgc3BlY2lmaWMgb2Zmc2V0LiBJdCBjYW4gdGhlbiBiZSB1c2VkIGluIHRoZSBhcHBsaWNh dGlvbiwgc28NCj4+IHRoYXQgYWNjZXNzZXMgYXJlIGRvbmUgYXQgbm8gY29zdCBjb21wYXJlZCB0 byBhIHN0YXRpYyBmaWVsZCwgYmVjYXVzZQ0KPj4gdGhlIG9mZnNldCB3b3VsZCBiZSBjb25zdC4N Cj4+IA0KPj4gSW4gdGhlIGRyaXZlciwgdGhlIHNhbWUgbG9naWMgY291bGQgYmUgdXNlZCwgYnV0 IGR5bmFtaWNhbGx5Og0KPj4gDQo+PiBpZiAob2Zmc2V0ID09IFBSRUZFUlJFRF9PRkZTRVQpIHsN Cj4+ICAgLyogY29kZSB3aXRoIHN0YXRpYyBvZmZzZXQgKi8NCj4+IH0gZWxzZSB7DQo+PiAgIC8q IGdlbmVyaWMgY29kZSAqLw0KPj4gfQ0KPj4gDQo+PiBCdXQgSSdtIG5vdCBzdXJlIGl0IHdvdWxk IHNjYWxlIGEgbG90IGlmIHRoZXJlIGFyZSBzZXZlcmFsIGZlYXR1cmVzDQo+PiB1c2luZyBkeW5h bWljIGZpZWxkcy4NCj4+IA0KPj4+IElmIHRoZSBtYnVmcyBpdCBnb2luZyB0byBiZSB0cmFuc2xh dGVkIGZyb20gb25lIHR5cGUgbWJ1ZiB0byBhbm90aGVyIG1idWYNCj4+PiB0eXBlLCB3ZSBqdXN0 IGhhdmUgdG8gZGVmaW5lIHRoYXQgdHlwZSBhbmQgdGhlbiBjYXN0IHRoZSBtYnVmIHBvaW50ZXIg dG8gdGhhdA0KPj4+IHN0cnVjdHVyZS4gV2hlbiBhbiBtYnVmIGlzIHJlY2VpdmVkIGZyb20gSVBT ZWMgUE1EIHRoZW4gdGhlIGFwcGxpY2F0aW9uIG5lZWRzDQo+Pj4gdG8gZm9yd2FyZCB0aGF0IG1i dWYgdG8gdGhlIG5leHQgc3RhZ2UgaXQgY2FuIHJlc2V0IHRoZSB0eXBlIHRvIDAgb3IgdG8NCj4+ PiBhbm90aGVyIHR5cGUgZmlsbGluZyBpbiB0aGUgcmVzZXJ2ZWQgZmllbGRzIHRvIGJlIHVzZWQg YnkgdGhlIG5leHQgc3RhZ2UgaW4NCj4+PiB0aGUgcGlwZWxpbmUuDQo+PiANCj4+IFdoYXQgeW91 IGRlc2NyaWJlIGlzIG9uZSB1c2UgY2FzZS4NCj4+IA0KPj4gV2hhdCBjb3VsZCBiZSBkb25lIHdp dGggdGhlIEFQSSBtZW50aW9ubmVkIGFib3ZlIChidXQgSSB0aGluayBpdCBpcw0KPj4gZGFuZ2Vy b3VzKSwgaXMgdG8gYWxsb3cgYSB1c2VyIHRvIHJlZ2lzdGVyIDIgZGlmZmVyZW50IGZpZWxkcyBh dCB0aGUNCj4+IHNhbWUgb2Zmc2V0LCB1c2luZyBhIHNwZWNpZmljIGZsYWcuIFRoaXMgY291bGQg d29yayBpZiB0aGUgdXNlciBrbm93cw0KPj4gdGhhdCB0aGVzZSAyIGZpZWxkcyBhcmUgbmV2ZXIg dXNlZCBhdCB0aGUgc2FtZSB0aW1lLg0KPj4gDQo+PiBUaGUgbWJ1ZiBub3cgY29udGFpbnMgdGhl IHR5cGUgYW5kIGV2ZXJ5IHBvaW50IGluIHRoZSBhcHBsaWNhdGlvbiBjYW4gbG9vayBhdA0KPj4g dGhlIHR5cGUgdG8gZGV0ZXJtaW5lIGhvdyB0aGF0IG1idWYgaXMgZGVmaW5lZC4gSSBhbSBzdXJl IHRoZXJlIGFyZSBzb21lIGhvbGVzDQo+PiBoZXJlLCBidXQgSSB0aGluayBpdCBpcyBhIGJldHRl ciBzb2x1dGlvbiB0aGVuIHVzaW5nIGFsbCBvZiB0aGVzZSBtYWNyb3MsDQo+PiBvZmZzZXQgdmFs dWVzIGFuZCByZWdpc3RyYXRpb24gQVBJcy4NCj4+IA0KPj4gSSdtIG5vdCBjb252aW5jZWQgaGF2 aW5nIHNlbGVjdGl2ZSBsYXlvdXRzIGlzIGRvYWJsZS4gVGhlIGxheW91dHMgY2Fubm90DQo+PiBm aXQgYWxsIHBvc3NpYmxlIHVzZSBjYXNlcywgYW5kIG1hbmFnaW5nIHRoZSBkaWZmZXJlbnQgbGF5 b3V0cyBpbiB0aGUNCj4+IGRyaXZlciBsb29rcyBkaWZmaWN1bHQgdG8gbWUuIEFkZGl0aW9ubmFs eSwgaXQgZG9lcyBub3Qgc29sdmUgdGhlDQo+PiBwcm9ibGVtIG9mIG11dHVhbGx5IGV4Y2x1c2l2 ZSBmZWF0dXJlcy4NCj4+IA0KPj4gSSB0b28gYXQgb25lIHRpbWUgd2FudGVkIHNvbWUgdHlwZSBv ZiBhbGxvY2F0aW9uIG9yIHJlZ2lzdHJhdGlvbiBmb3INCj4+IHByaXZhdGUgbWJ1ZiBzcGFjZSBh bmQgYXBwbHlpbmcgdG8gdGhlc2UgbGltaXRlZCBmaWVsZHMgaW4gdGhlIG1idWYNCj4+IGhlYWRl ciBtYXkgaGF2ZSBiZWVuIHJlYXNvbmFibGUuIFRoZSBwcm9ibGVtIGlzIHVzaW5nIHJlZ2lzdHJh dGlvbiBhbmQNCj4+IG1vdmluZyB0aGF0IGluZm9ybWF0aW9uIGJldHdlZW4gcHJvY2Vzc2VzIGlz IGdvaW5nIHRvIGJlIGhhcmQgdG8gZ2V0DQo+PiByaWdodC4gRm9yIGEgc2luZ2xlIEFwcGxpYW5j ZSBtb2RlbCBhcHBsaWNhdGlvbiBpdCB3b3VsZCB3b3JrIGdyZWF0DQo+PiBhbmQgbm90IGluIGEg bm9uLWFwcGxpYW5jZSBtb2RlbCBhcHBsaWNhdGlvbnMuDQo+IA0KPiBJIGRpZG4ndCBnZXQgd2h5 IGl0IHdvdWxkbid0IHdvcmsgaW4gYSBub24tYXBwbGlhbmNlIG1vZGVsIChhcmUgeW91DQo+IHRh bGtpbmcgYWJvdXQgcHJpbWFyeS9zZWNvbmRhcnkgcHJvY2Vzc2VzPykuIENhbiB5b3UgZWxhYm9y YXRlIGFib3V0DQo+IHdhaHQgd291bGQgYmUgdGhlIHByb2JsZW0/DQoNCkxldCdzIGxvb2sgYXQg c29tZXRoaW5nIHNpbWlsYXIgdG8gVlBQIHdpdGggbm9kZXMgaW4gYSBncmFwaCB3aGVyZSBlYWNo IG5vZGUgbmVlZHMgdG8gdmVyaWZ5IHRoZSBtZXRhZGF0YSBleGlzdHMgaW4gdGhhdCBwYWNrZXQg KGV4dHJhIG1hY3JvL2lubGluZSBjYWxscykuIFRoaXMgd291bGQgYmUgbmVlZGVkIGZvciBldmVy eSBwYWNrZXQgcHJvY2Vzc2VkIHVubGVzcyBzb21ldGhpbmcgZWxzZSBtYWtlIHN1cmUgb25seSBz cGVjaWZpYyBtYnVmIHR5cGUgaXMgdXNlZC4gV2h5IG5vdCBqdXN0IHVzZSBhIHR5cGUgZmllbGQg YW5kIGNhc3QgdGhlIG1idWYgaW50byB0aGUgY29ycmVjdCB0eXBlIHN0cnVjdHVyZSBhbmQgcmVq ZWN0IGFueSBtYnVmcyB0aGF0IGRvIG5vdCBtYXRjaCB0aGUgdHlwZXMgdGhhdCBjYW4gYmUgaGFu ZGxlZCBieSB0aGlzIG5vZGUuIFRoZSB0eXBlIGZpZWxkIHdvdWxkIGJlIGEgc2ltcGxlIHN3aXRj aCBvciBpZi9lbHNlIGNvbnN0cnVjdC4NCj4gDQo+PiBUaGUgdHlwZS9zdHJ1Y3R1cmUNCj4+IG1l dGhvZCBjYW4gaGVscCBhbmQgaXQgY291bGQgaGF2ZSBwcm9ibGVtcyB0b28sIGJ1dCB1c2luZyBh DQo+PiB0eXBlL3N0cnVjdCBkZXNpZ24gc2VlbXMgdG8gYmUgb25lIG9mIHRoZSBCS01zIChCZXN0 IEtub3duIE1ldGhvZHMpIGluDQo+PiB0aGUgaW5kdXN0cnkuDQo+IA0KPiBTb3JyeSwgYnV0IHRo aXMgaXMgbm90IGEgdmFsaWQgYXJndW1lbnQuDQoNCllvdSBhc3N1bXB0aW9uIGlzIG5vdCB2YWxp ZCBJTU8uIFNvcnJ5Lg0KDQo+PiBUbyBiZSBob25lc3QgaXQgbWF5YmUgd2UganVzdCB0YWtlIHRo ZSBoaXQgaW4gcGVyZm9ybWFuY2UgYW5kIGFkZCBhDQo+PiB0aGlyZCBjYWNoZSBsaW5lIGFzIEkg YW0gc3VyZSB0cnlpbmcgdG8gc3F1ZWV6ZSBtZXRhZGF0YSBpbnRvIHRoZXNlDQo+PiB2ZXJ5IGxp bWl0IGZpZWxkcyB3aWxsIGJlIGEgY2hhbGxlbmdlIElNTy4gSSBhbSBub3Qgc3VnZ2VzdGluZyB3 ZSBhZGQNCj4+IGEgY2FjaGUgbGluZSB0byBldmVyeSBtYnVmIG9ubHkgdG8gdGhlIHBvb2xzIHRo YXQgcmVxdWlyZSB0aGUgZXh0cmENCj4+IG1ldGFkYXRhIGJ5IHVzaW5nIHRoZSBwcml2YXRlIHNw YWNlIGlmIHRoYXQgaXMgcmVhc29uYWJsZS4gVGhlDQo+PiBhcHBsaWNhdGlvbnMgbmVlZGluZyBh IGxvdCBvZiBtZXRhZGF0YSB3aWxsIGp1c3QgaGF2ZSB0byB0YWtlIHRoZSBoaXQNCj4+IGluIHBl cmZvcm1hbmNlIGFueXdheS4NCj4gDQo+IElmIGFuIGFwcGxpY2F0aW9uIHdhbnRzIHRvIGF0dGFj aCBtb3JlIGRhdGEgaW4gdGhlIG1idWYsIHdlIGFscmVhZHkgaGF2ZQ0KPiB0aGUgYXBwbGljYXRp b24gcHJpdmF0ZSBhcmVhLiBUaGlzIHpvbmUgaXMgdHJhbnNwYXJlbnQgZnJvbSBEUERLIHBvaW50 DQo+IG9mIHZpZXcsIGl0IGRvZXMgbm90IGltcGFjdCBkcml2ZXJzIG9yIGxpYnMuDQoNCldlIHN0 aWxsIGhhdmUgdG8gaGF2ZSBhbGwgcGFydHMgb2YgdGhlIHN5c3RlbSB3aGljaCBhY2Nlc3NlcyB0 aGUgbWV0YWRhdGEgdG8ga25vdyB0aGUgcHJpdmF0ZSBkYXRhIGV4aXN0IGFuZCB3aGF0IGl0J3Mg Z2l2ZW4gZm9ybWF0LiBZb3Ugc29sdmVkIHRoaXMgd2l0aCBvZmZzZXRzIGFuZCByZWdpc3RyYXRp b24gdG8gZGVmaW5lIHRoZSBmb3JtYXQuIE15IHN1Z2dlc3Rpb24gaXMgc2ltaWxhciBhcyBpdCBk ZWZpbmVzIHRoZSBsb2NhdGlvbiBhbmQgdHlwZSBvZiBtZXRhZGF0YSBpbiBhIHR5cGUvc3RydWN0 IGZvcm1hdC4gSSBmZWVsIGl0IGlzIGVhc2llciB0byB1bmRlcnN0YW5kIGFuZCB0b28gcHJvY2Vz cyBpbiBhIGhpZ2ggcGVyZm9ybWFuY2Ugd2F5Lg0KDQo+IA0KPj4gSGF2aW5nIHRvIGdyYWIgYSBt ZXRhZGF0YSB2YWx1ZSB2aWEgYSBzZXQgb2YgbWFjcm9zIGFuZCBpbmxpbmUNCj4+IGZ1bmN0aW9u cyBzZWVtcyBsaWtlIGl0IHdpbGwgY29uc3VtZSBtb3JlIGN5Y2xlcyB0aGVuIGp1c3QgYQ0KPj4g dHlwZS9zdHJ1Y3R1cmUgbWV0aG9kIGFzIHRoZSBjb21waWxlciB3aWxsIGhlbHAgb3B0aW1pemUg dGhlIGNvZGUNCj4+IHdpdGhvdXQgaGF2aW5nIHRvIGNhbGwgYW55IG1hY3JvcyBvciBpbmxpbmUg ZnVuY3Rpb25zLg0KPiANCj4gWWVzLCBJIGtub3cgdGhhdC4gVGhpcyBpcyB0aGUgcHJpY2UgdG8g cGF5IGZvciBzb2x2aW5nIHRoZSBwcm9ibGVtcw0KPiAod2FzdGVkIHNpemUsIGV4Y2x1c2l2ZSBm ZWF0dXJlcywgYXZvaWQgYWJpIGJyZWFrYWdlKS4gSSBhbnN3ZXJlZCBpbiBhDQo+IHByZXZpb3Vz IG1haWwgdGhhdCB0aGUgZXh0cmEgY29zdCBjYW4gYmUgcmVtb3ZlZCBhdCBhcHBsaWNhdGlvbiBs ZXZlbCBpZg0KPiB3ZSBhZGQgYW4gQVBJIHRvIHJlc2VydmUgYSBrbm93biBvZmZzZXQuIFRoZSBh YmlsaXR5IHRvIGxvY2F0ZSBzb21lDQo+IG9mZmxvYWQgZmllbGRzIGluIHRoZSBSeCBwYXJ0IG1h eSBhbHNvIGhlbHAgdG8gZ2FpbiBzb21lIGN5Y2xlcyBjb21wYXJlZA0KPiB0byBzdGF0aWMgZmll bGRzLg0KDQpUaGlzIG1heWJlIHRydWUsIGJ1dCBJIGRvIG5vdCBzZWUgaG93IHRoZSBjeWNsZXMg Y2FuIGJlIHJlbW92ZWQgdW5sZXNzIHlvdSBjcmVhdGUgYSBzdHJ1Y3R1cmUgbGF5b3V0IGluIHRo ZSBhcHBsaWNhdGlvbiB0byBhY2Nlc3MgdGhlIG1ldGFkYXRhLiBKdXN0IHNheWluZyBpdCBjYW4g YmUgc29sdmVkIGlzIE9LLCBidXQgcHJvdmluZyBpdCBjYW4gYmUgc29sdmVkIGlzIHRoZSByZWFs IHF1ZXN0aW9uLg0KDQpBbnl3YXkgSSBhbSBub3QgZ29pbmcgdG8gYXJndWUgd2l0aCB5b3UsIHRo ZSBjb21tdW5pdHkgY2FuIGRlY2lkZSBpZiB5b3VyIHNvbHV0aW9uIHNvbHZlcyB0aGUgcHJvYmxl bS4gSW4gbXkgY2FzZSBJIGRvIG5vdCBzZWUgaXQgc29sdmluZyBpdCBpbiB0aGUgYmVzdCB3YXkg YW5kIG15IHN1Z2dlc3Rpb24gbWF5IG5vdCBiZSB0aGUgYmVzdCBlaXRoZXIuDQo+IA0KPiBSZWdh cmRzLA0KPiBPbGl2aWVyDQoNClJlZ2FyZHMsDQpLZWl0aA0KDQo=