From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 063689A8D for ; Fri, 10 Apr 2015 16:43:42 +0200 (CEST) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP; 10 Apr 2015 07:43:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,557,1422950400"; d="scan'208";a="554144736" Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by orsmga003.jf.intel.com with ESMTP; 10 Apr 2015 07:43:41 -0700 Received: from orsmsx151.amr.corp.intel.com (10.22.226.38) by ORSMSX105.amr.corp.intel.com (10.22.225.132) with Microsoft SMTP Server (TLS) id 14.3.224.2; Fri, 10 Apr 2015 07:43:41 -0700 Received: from fmsmsx155.amr.corp.intel.com (10.18.116.71) by ORSMSX151.amr.corp.intel.com (10.22.226.38) with Microsoft SMTP Server (TLS) id 14.3.224.2; Fri, 10 Apr 2015 07:43:40 -0700 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.111]) by FMSMSX155.amr.corp.intel.com ([169.254.5.89]) with mapi id 14.03.0224.002; Fri, 10 Apr 2015 07:43:40 -0700 From: "Wiles, Keith" To: Neil Horman Thread-Topic: [dpdk-dev] tools brainstorming Thread-Index: AQHQYx11uIkL9FTheESuDxqnoTBHMp1DgO2AgAAQtACAAAkVAIAAD1iAgAAZHoCAAIMDAIAAAkYAgAEr94CAAC4wAIAABgcA///F0gCAAIq6gP//w0mAgAD5K4D//98eAA== Date: Fri, 10 Apr 2015 14:43:39 +0000 Message-ID: References: <20150408131105.GD22959@hmsreliant.think-freely.org> <0C5AFCA4B3408848ADF2A3073F7D8CC86D58FDBF@IRSMSX109.ger.corp.intel.com> <0FBA33A7-A21E-426F-B44E-32E86F2B23DB@infiniteio.com> <20150408153802.2bc59227@urahara> <20150409191658.GC26201@hmsreliant.think-freely.org> <20150410002649.GB28597@neilslaptop.think-freely.org> <20150410114119.GA26772@hmsreliant.think-freely.org> In-Reply-To: <20150410114119.GA26772@hmsreliant.think-freely.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.252.195.97] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] tools brainstorming X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Apr 2015 14:43:44 -0000 DQoNCk9uIDQvMTAvMTUsIDY6NDEgQU0sICJOZWlsIEhvcm1hbiIgPG5ob3JtYW5AdHV4ZHJpdmVy LmNvbT4gd3JvdGU6DQoNCj5PbiBGcmksIEFwciAxMCwgMjAxNSBhdCAwMTo0OTozM0FNICswMDAw LCBXaWxlcywgS2VpdGggd3JvdGU6DQo+PiANCj4+IA0KPj4gT24gNC85LzE1LCA3OjI2IFBNLCAi TmVpbCBIb3JtYW4iIDxuaG9ybWFuQHR1eGRyaXZlci5jb20+IHdyb3RlOg0KPj4gDQo+PiA+T24g VGh1LCBBcHIgMDksIDIwMTUgYXQgMDk6MTA6MTlQTSArMDAwMCwgV2lsZXMsIEtlaXRoIHdyb3Rl Og0KPj4gPj4gDQo+PiA+PiANCj4+ID4+IE9uIDQvOS8xNSwgMjozOCBQTSwgIkpheSBSb2xldHRl IiA8cm9sZXR0ZUBpbmZpbml0ZWlvLmNvbT4gd3JvdGU6DQo+PiA+PiANCj4+ID4+ID5PbiBUaHUs IEFwciA5LCAyMDE1IGF0IDI6MTYgUE0sIE5laWwgSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5j b20+DQo+PiA+Pndyb3RlOg0KPj4gPj4gPg0KPj4gPj4gPj4gT24gVGh1LCBBcHIgMDksIDIwMTUg YXQgMTE6MzE6MzlBTSAtMDUwMCwgSmF5IFJvbGV0dGUgd3JvdGU6DQo+PiA+PiA+PiA+IE9uIFdl ZCwgQXByIDgsIDIwMTUgYXQgNTozOCBQTSwgU3RlcGhlbiBIZW1taW5nZXIgPA0KPj4gPj4gPj4g PiBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz4gd3JvdGU6DQo+PiA+PiA+PiA+DQo+PiA+PiA+ PiA+ID4gT24gV2VkLCA4IEFwciAyMDE1IDE2OjI5OjU0IC0wNjAwDQo+PiA+PiA+PiA+ID4gSmF5 IFJvbGV0dGUgPHJvbGV0dGVAaW5maW5pdGVpby5jb20+IHdyb3RlOg0KPj4gPj4gPj4gPiA+DQo+ PiA+PiA+PiA+ID4gPiAiQyBjb21tZW50cyIgaW5jbHVkZXMgLy8sIHJpZ2h0PyBJdCdzIGJlZW4g cGFydCBvZiB0aGUgQw0KPj4gPj5zdGFuZGFyZA0KPj4gPj4gPj4gZm9yIGENCj4+ID4+ID4+ID4g PiBsb25nIHRpbWUgbm93Li4uDQo+PiA+PiA+PiA+ID4NCj4+ID4+ID4+ID4gPiBZZXMgYnV0Lg0K Pj4gPj4gPj4gPiA+IEkgbGlrZSB0byB1c2UgY2hlY2twYXRjaCBhbmQgY2hlY2twYXRjaCBlbmZv cmNlcyBrZXJuZWwgc3R5bGUNCj4+ID4+d2hpY2gNCj4+ID4+ID4+IGRvZXMNCj4+ID4+ID4+ID4g PiBub3QgYWxsb3cgLy8gZm9yDQo+PiA+PiA+PiA+ID4gY29tbWVudHMuDQo+PiA+PiA+PiA+ID4N Cj4+ID4+ID4+ID4NCj4+ID4+ID4+ID4gRm9yayBjaGVja3BhdGNoIGFuZCBkaXNhYmxlIHRoYXQg Yml0PyBEUERLIGlzbid0IHRoZSBrZXJuZWwsIHNvDQo+Pm5vDQo+PiA+PiA+PiA+IHJlcXVpcmVt ZW50IHRvIGZvbGxvdyBhbGwgb2YgaXRzIHJ1bGVzDQo+PiA+PiA+PiA+DQo+PiA+PiA+Pg0KPj4g Pj4gPj4gRG9lc24ndCB0aGF0IGJlZyB0aGUgcXVlc3Rpb24sIHdoeT8gIEkgdW5kZXJzdGFuZCB0 aGUgRFBESyBpc24ndA0KPj50aGUNCj4+ID4+ID4+IGtlcm5lbCwgYnV0DQo+PiA+PiA+PiB3ZSdy ZSBub3QgdGFsa2luZyBhYm91dCBjbGFyaXR5IG9mIGNvZGUsIG5vdCBhbnl0aGluZyBmdW5jdGlv bmFsDQo+PnRvDQo+PiA+PnRoYXQNCj4+ID4+ID4+IGNvZGUuDQo+PiA+PiA+PiBJdCBzZWVtcyB3 ZSB3b3VsZCBiZSBiZXR0ZXIgc2VydmVkIGJ5IGp1c3QgdGFraW5nIHNvbWV0aGluZyB0aGF0DQo+ PiA+PndvcmtzDQo+PiA+PiA+PmhlcmUNCj4+ID4+ID4+IHJhdGhlciB0aGFuIHJlLWludmVudGlu ZyB0aGUgd2hlZWwgYW5kIGRpZ2dpbmcgaW50byB0aGUgbWludWF0ZSBvZg0KPj4gPj53aGF0DQo+ PiA+PiA+PiB0eXBlIG9mDQo+PiA+PiA+PiBjb21tZW50cyBzaG91bGQgYmUgYWxsb3dlZCAodW5s ZXNzIHRoZXJlIGlzIGEgY29tcGVsbGluZyByZWFzb24gdG8NCj4+ID4+ID4+Y2hhbmdlDQo+PiA+ PiA+PiBpdA0KPj4gPj4gPj4gdGhhdCBzdXBlcmNlZGVzIHRoZSBhdmlsYWJsZSB0b29scykuICBJ ZiBub3QgY2hlY2twYXRoLCB0aGVuIHNvbWUNCj4+ID4+b3RoZXINCj4+ID4+ID4+IHRvb2wsDQo+ PiA+PiA+PiBidXQgSXQgc2VlbXMgdG8gbWUgdGhhdCBjb2Rpbmcgc3R5bGUgaXMgb25lIG9mIHRo b3NlIHRoaW5ncyB3aGVyZQ0KPj53ZQ0KPj4gPj5jYW4NCj4+ID4+ID4+IGJlbmQgdG8NCj4+ID4+ ID4+IHRoZSB0b29sIHJhdGhlciB0aGFuIHRha2luZyB0aGUgdGltZSB0byBtYWtlIHRoZSB0b29s IGRvIGV4YWN0bHkNCj4+ID4+d2hhdHMNCj4+ID4+ID4+IGRlc2lyZWQsDQo+PiA+PiA+PiBhdCBs ZWFzdCB1bnRpbCBzb21lb25lIGdldHMgdGhlIHRpbWUgdG8gbW9kaWZ5IGl0Lg0KPj4gPj4gPj4N Cj4+ID4+ID4NCj4+ID4+ID5GYWlyIHF1ZXN0aW9uLg0KPj4gPj4gPg0KPj4gPj4gPkl0IGRlcGVu ZHMgYSBiaXQgb24gaG93IG11Y2ggeW91IHdhbnQgdG8gZW5jb3VyYWdlIHBhdGNoDQo+PiA+PmNv bnRyaWJ1dGlvbnMuIElzDQo+PiA+PiA+aXQgd29ydGggYWRkaW5nIG1vcmUgcGFpbiBmb3IgZm9s a3MgdHJ5aW5nIHRvIGNvbnRyaWJ1dGUgcGF0Y2hlcyBmb3INCj4+ID4+ID50aGluZ3MNCj4+ID4+ ID5saWtlIHRoaXM/DQo+PiA+PiA+DQo+PiA+PiA+U2hvdWxkIHdlIGZvcmNlIHNvbWVvbmUgdG8g c3BlbmQgdGltZSByZWRvaW5nIGEgcGF0Y2ggYmVjYXVzZSBvZg0KPj53aGljaA0KPj4gPj53YXkN Cj4+ID4+ID50aGV5IGRvIHRoZWlyIHBhcmVudGhlc2lzPyBXaGF0IGFib3V0IG51bWJlciBvZiBz cGFjZXMgdG8gaW5kZW50DQo+PmNvZGU/DQo+PiA+Pi8vDQo+PiA+PiA+dnMgLyogKi8gY29tbWVu dHM/IE5vbmUgb2YgdGhlc2UgbWF0dGVyIGZ1bmN0aW9uYWxseSBhbmQgdGhleSBkb24ndA0KPj4g Pj5hZmZlY3QNCj4+ID4+ID5tYWludGVuYW5jZSBnZW5lcmFsbHkuDQo+PiA+PiA+DQo+PiA+PiA+ SWYgc29tZW9uZSBpcyBtb2RpZnlpbmcgZXhpc3RpbmcgY29kZSwgdGhlbiB5ZWFoLCB0aGV5IHNo b3VsZCBmb2xsb3cNCj4+ID4+dGhlDQo+PiA+PiA+cHJldmFpbGluZyBzdHlsZSAoaW5kZW50aW9u IGxldmVsLCBicmFjZSBhbGlnbm1lbnQsIGV0Yy4pIG9mIHRoZQ0KPj5maWxlDQo+PiA+PnRoZXkN Cj4+ID4+ID5hcmUgaW4uIEl0IGhlbHBzIHJlYWRhYmlsaXR5LCB3aGljaCBtYWtlcyBtYWludGVu YW5jZSBlYXNpZXIuDQo+Pkhvd2V2ZXIsDQo+PiA+PiA+SU1PLA0KPj4gPj4gPm1peGluZyAvLyBh bmQgLyogKi8gZm9yIGNvbW1lbnRzIGRvZXNuJ3QgYWZmZWN0IHRoZSByZWFkYWJpbGl0eSBvZg0K Pj50aGUNCj4+ID4+ID5zb3VyY2UuDQo+PiA+PiA+DQo+PiA+PiA+SSBrbm93IGlmIEkgc3VibWl0 IGEgcGF0Y2ggYW5kIHRoZSBvbmx5IGZlZWRiYWNrIGlzIHRoYXQgSSBzaG91bGQNCj4+aGF2ZQ0K Pj4gPj4gPnVzZWQNCj4+ID4+ID4vKiAqLyBmb3IgY29tbWVudHMsIEknbSBleHRyZW1lbHkgdW5s aWtlbHkgc3BlbmQgZXh0cmEgdGltZSB0bw0KPj5yZXN1Ym1pdA0KPj4gPj4gPnRoZQ0KPj4gPj4g PnBhdGNoIGZvciBwZWRhbnRyeS4NCj4+ID4+IA0KPj4gPj4gSSBsb29rZWQgYXQgY2hlY2twYXRj aC5wbCBmb3IgZmV3IG1pbnV0ZXMgYW5kIHRoZSBjb2RlIGRvZXMgY2hlY2sgZm9yDQo+PiA+PkM5 OQ0KPj4gPj4gY29tbWVudHMgYW5kIGFkZGluZyBhIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gYWxs b3cgQzk5IGNvbW1lbnRzIGNvdWxkDQo+PiA+PiBwcmV0dHkgc2ltcGxlLiBJIGZvdW5kIHRoZSBj b2RlIGFyb3VuZCBsaW5lIDMwNDggb3Igc2VhcmNoIGZvciBDOTksDQo+Pml0DQo+PiA+PmlzDQo+ PiA+PiBwb3NzaWJsZSBpdCBjb3VsZCBhY2NlcHRlZCBiYWNrIGludG8gTGludXggYXMgbG9uZyBh cyB0aGUgZGVmYXVsdA0KPj5vcHRpb24NCj4+ID4+IHdhcyB0byBub3QgYWxsb3cgQzk5IGNvbW1l bnRzLg0KPj4gPj4gDQo+PiA+PiBBbGxvd2luZyBDOTkgY29tbWVudHMgd291bGQgYmUgbmljZSBh bmQgdGhlIG9ubHkgcHJvYmxlbSBJIGNvdWxkIHNlZQ0KPj5pZg0KPj4gPj4gc29tZSBjb21waWxl ciBoYXMgYSBwcm9ibGVtIHdpdGggdGhlbS4gSSBiZWxpZXZlIGFsbCBvZiB0aGUNCj4+Y29tcGls ZXJzIHdlDQo+PiA+PiBzdXBwb3J0IGFsbG93IEM5OSBjb21tZW50cy4NCj4+ID4+IA0KPj4gPj4g VGhlIG9ubHkgb3RoZXIgcmVhc29uIHRvIGFsbG93IHRoZW0gaXMgaWYgd2UgYWRkIHNvbWUgb3Bl biBzb3VyY2UNCj4+Y29kZQ0KPj4gPj5pbg0KPj4gPj4gdGhlIGZ1dHVyZSB0byBEUERLIHdoaWNo IGhhcyBDOTkgY29tbWVudHMgYW5kIGlmIHdvdWxkIGJlIGEgcGFpbiB0bw0KPj5oYXZlDQo+PiA+ PiB0byBjb252ZXJ0IHRoYXQgY29kZSBldmVyeSB0aW1lIHRoZSBvcGVuIHNvdXJjZSBncm91cCBy ZWxlYXNlZCBhIG5ldw0KPj4gPj4gdmVyc2lvbi4gSXQgZG9lcyBvcGVuIHRoYXQgcGF0aCBJTU8u DQo+PiA+PiANCj4+ID4NCj4+ID5TbywgdGhpcyBhZ2FpbiBzZWVtcyB0byBiZSBiYWQgcGhpbG9z b3BoeSBpbiBteSBtaW5kLiAgSWYgd2UgYXJlLCB0bw0KPj51c2UNCj4+ID55b3VyDQo+PiA+ZXht cGxlLCBhY2NlcHQgY29kZSBpbnRvIHRoZSBEUERLIGluIHRoZSBmdXR1cmUgd2l0aCBjb21tZW50 cyB0aGF0DQo+PiA+dmlvbGF0ZSBvdXINCj4+ID5zZWxlY3RlZCBzdHlsZSwgaXQgaXMgdGhlbiwg YnkgZGVmaW5pdGlvbiwgaW4gdmlvbGF0aW9uIG9mIHRoZSBzdHlsZQ0KPj4gPmd1aWRlbGluZXMu DQo+PiANCj4+IFdobyBzdGF0ZWQgaXQgdmlvbGF0ZWQgdGhlIHN0eWxlIGd1aWRlbGluZXMsIHdl IGRvIG5vdCBoYXZlIGEgc3R5bGUNCj4+IGd1aWRlbGluZSB5ZXQuIFRoaXMgd2h5IFNoaW9iaGFu IHNlbnQgb3V0IHRoZSBndWlkZWxpbmVzIGluIHRoZSBmaXJzdA0KPj4gcGxhY2UuDQo+PiANCj5O byBvbmUgc2FpZCBhbnlvbmUgaXMgdmlvbGF0aW5nIG91ciBzdHlsZSBndWlkZWxpbmVzLCBJIHRo aW5rIHRoYXRzIHByZXR0eQ0KPm9idmlvdXMuICBZb3UgaGFkIHNhaWQgdGhhdCBhbGxvd2luZyBD OTkgY29tbWVudHMgd291bGQgYmUgYSBuaWNlIHRoaW5nDQo+dG8gYmUNCj5hYmxlIHRvIGRvIGlu IHRoZSBmdXR1cmUgaWYgd2Ugd2VyZSB0byB3YW50IHRvIGludGVncmF0ZSBhIHN1Ym1pc3Npb24N Cj50aGF0IGhhZA0KPnRoZW0uICBXaGlsZSB0aGF0cyB0cnVlLCBJIHdhcyBwb2ludGluZyBvdXQg dGhhdCB3aGF0IHlvdSB3ZXJlIHN1Z2dlc3RpbmcNCj53YXMNCj5hc3NlcnRpbmcgdGhlIG5vdGlv biB0aGF0IGRvaW5nIHNvIHdhcyByZWxheGluZyBzdHlsZSBndWlkZWxpbmVzIHRvIGFsbG93DQo+ Zm9yDQo+ZWFzaWVyIGFjY2VwdGFuY2UsIHdoaWxlIHN0eWxlIGd1aWRlbGluZXMgKGFzIGEgZ2Vu ZXJhbCBub3Rpb24sIG5vdCBhcyBhbnkNCj5zcGVjaWZpYyBzZXQgb2YgcnVsZXMgd2UgY3VycmVu dGx5IGRvIG9yIG1heSBpbiB0aGUgZnV0dXJlIGFzc2VydCkgYXJlDQo+dGhlcmUgdG8NCj5lbmZv cmNlIGEgY29uc2lzdGVudCBsb29rIGluIHRoZSBjb2RlLg0KPg0KPlB1dCBhbm90aGVyIHdheSwg d2UgY2FuIGNlcnRhaW5seSBhbGxvdyBmb3IgYm90aCBzdHlsZXMgb2YgY29tbWVudCAob3INCj5t dWx0aXBsZQ0KPnN0eWxlcyBvZiBhbnkgYXNwZWN0IG9mIHRoZSBjb2RlKSwgaWYgd2Ugd2FudCB0 bywgYnV0IGRvaW5nIHNvIGlzIHNvbWV3aGF0DQo+YWdhaW5zdCB0aGUgbm90aW9uIG9mIGEgJ3N0 eWxlJywgYXMgYSBzdHlsZSBwcm92aWRlcyBhIGNvbnNpc3RlbnQgbG9vaywNCj5hbmQNCj5tYWtp bmcgdGhlIGFyZ3VtZW50IHRoYXQgd2UgYWxsb3cgYm90aCBiZWNhdXNlIGl0IG1ha2VzIGZvciBl YXNpZXIgY29kZQ0KPnN1Ym1pc3Npb24gYW5kIGFjY2VwdGFuY2UgaXMgYSBiaXQgYmFja3dhcmRz Lg0KPg0KPk5vdGUsIEknbSBub3Qgc2F5aW5nIHRoYXQgd2UgY2FuJ3QgYWNjZXB0IGJvdGggdHlw ZXMgb2YgY29tbWVudHMgKG9yDQo+bXVsdGlwbGUNCj50eXBlcyBvZiBhbnkga2luZCBvZiBzdHls ZSBhc3BlY3QpLCBvbmx5IHRoYXQsIGlmIHdlIGFyZSB0byBjb25zaWRlcg0KPm11bHRpcGxlDQo+ dHlwZXMgb2YgYW55IHN0eWxlIGFzcGVjdCwgd2Ugc2hvdWxkIGRlY2lkZSBiYXNlZCBvbiBob3cg aXQgd2lsbCBtYWtlIHRoZQ0KPmNvZGUNCj5sb29rLCBub3Qgb24gaG93IG11Y2ggaGFyZGVyIGl0 IHdpbGwgYmUgdG8gZ2V0IHRoZSBjb2RlIGFjY2VwdGVkIGR1cmluZw0KPnJldmlldy4NCj4NCj4x KSBJZiBjb2RlIGFjY2VwdGFuY2UgaXMgdGhlIGdvYWwsIHdlIHNob3VsZCBoYXZlIG5vIHN0eWxl IGd1aWRlbGluZQ0KPg0KPjIpIElmIHByZXR0eSwgZWFzeSB0byByZWFkIGNvZGUgaXMgdGhlIGdv YWwsIHdlIHNob3VsZCBtYWtlIHRoZSBzdHlsZQ0KPmZhaXJseQ0KPnNwaWNpZmljIHdpdGggdmVy eSBsaW1pdGVkIG9wdGlvbnMgZm9yIHN0eWxlIGNob2ljZXMNCj4NCj5JZiB0aGUgZ29hbCBpcyBh IGhhcHB5IG1lZGl1bSwgd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgYSB0b29sDQo+ dGhhdA0KPm1ha2VzICgyKSBlYXN5IHRvIGFjaGl2ZSBzbyB0aGF0IGF0IHJldmlldyB0aW1lIG9u IHRoZSBsaXN0LCBzdHlsZSBpcyBhDQo+bm9uLWlzc3VlLg0KPg0KPj4gPklmIHdlIGFjY2VwdCBp dCBhbnl3YXksIG9yIGlmIHdlIGFsbG93IGJvdGggc3R5bGVzIChieSBkb2N1bWVudGluZw0KPj4g Pml0L2NvZGlmeWluZw0KPj4gPml0IGEgdG9vbCB0byBjaGVjayBmb3IvZXRjKSB0aGVuIHdlIGRp bHV0ZSB0aGUgc3R5bGUgZ3VpZGUuICBNYXliZSBpbg0KPj5zb21lDQo+PiA+Y2FzZXMsIHN1Y2gg YXMgdGhpcywgdGhhdHMgb2ssIGJ1dCBpdHMgc29tZXRoaW5nIHRvIGJlIGNvZ25pc2NlbnQgb2Yu DQo+PiA+RXNwZWNpYWxseSBpZiBtYWtpbmcgdGhlIGNob2ljZSB0byBhbGxvdyBib3RoIHB1dCB1 cyBpbiBhIHBvc2l0aW9uIG9mDQo+PiA+aGF2aW5nIHRvDQo+PiA+bWFpbnRhaW4gYSB0b29sIHRv IGRvIHRoZSBjaGVja2luZywgdGhlbiBJIHRoaW5rIHdlIG5lZWQgdG8gZmFsbCBvbiB0aGUNCj4+ ID5zaWRlIG9mDQo+PiA+Z29pbmcgd2l0aCB3aGF0IHRoZSB0b29sIChjaGVja3BhdGNoIG9yIHNv bWV0aGluZyBlbHNlKSBkb2VzLCB1bmxlc3Mgd2UNCj4+ID5oYXZlIGENCj4+ID5tYWludGFpbmVy IHN0ZXBwaW5nIHVwLg0KPj4gDQo+PiBTdXJlIG1haW50YWluaW5nIGEgdG9vbCBmb3IgdGhlIEM5 OSBjb21tZW50IHNlZW1zIHByZXR0eSBlYXN5LCBpZiBubyBvbmUNCj4+IHdhbnQgdG8gbWFpbnRh aW4gdGhlIHRvb2wgdGhhdCBpcyBhbm90aGVyIHByb2JsZW0uDQo+SWYgdGhpcyBpcyB5b3Ugc3Rl cHBpbmcgdXAgZm9yIHRoYXQgcm9sZSwgdGhlbiB3ZSdyZSBnb29kIHRvIGdvLCB0aGF0DQo+bWVh bnMgd2UNCj5jYW4gaGF2ZSBhIHRvb2wgdGhhdCBzdXBwb3J0cyBhbnkgc3R5bGUgd2Ugd2FudCB0 byBpbXBsZW1lbnQuDQo+DQo+PiBXaGV0aGVyIHRvIHN1cHBvcnQgQzk5DQo+PiBjb21tZW50cyBp cyB0aGUgcG9pbnQgbm90IHRoYXQgd2UgaGF2ZSB0byBtYWludGFpbiB0aGUgdG9vbC4gQXQgdGhp cw0KPj5wb2ludA0KPj4gY2hlY2twYXRjaCBpcyBhIE9LIHRvb2wgaWYgeW91IG9ubHkgd2FudCBM aW51eCBrZXJuZWwgY29kaW5nIHN0eWxlIGFuZA0KPj5hdA0KPj4gdGhpcyBwb2ludCB3ZSBhcmUg bm90IExpbnV4IGNvZGUgc3R5bGUuIEl0IGp1c3Qgc28gaGFwcGVucyB0aGUNCj4+Y2hlY2twYXRj aA0KPj4gcHJvdmlkZXMgc29tZSBjaGVja3Mgd2Ugc2VlbSB0byBhZ3JlZSB3aXRoLg0KPj4gDQo+ WW91J3JlIHJpZ2h0IGhlcmUsIHdlIHNob3VsZCBiZSBkZWNpZGluZyBpZiB3ZSB3YW50IHRvIHN1 cHBvcnQgQzk5DQo+Y29tbWVudHMgb3INCj5ub3QuICBCdXQgc28gZmFyIGRvaW5nIHNvIGhhcyB0 aGUgaW1wbGljYXRpb24gb2YgbmVlZGluZyB0bw0KPm1haW50YWluL2FxdWlyZS93cml0ZSBhIHRv b2wgdG8gZG8gc28uICBJZiBzb21lIG90aGVyIHRvb2wgYWxsb3dzIGZvciB0aGUNCj5zdHlsZQ0K PndlIGNob29zZSwgc28gYmUgaXQuICBCdXQgc28gZmFyIGl0IHNlZW1zIGxpa2Ugd2UgaGF2ZW50 IGZvdW5kIGEgdG9vbA0KPnRoYXQgZG9lcw0KPnRoYXQgaW4gYSB3YXkgd2UgYXJlIGdlbmVyYWxs eSBoYXBweSB3aXRoLCBhbmQgc28gdGhlIHF1ZXN0aW9uIG9mIGhvdyB0bw0KPmVuZm9yY2UNCj50 aGUgc3R5bGUgaGFzIHJlbWFpbmVkIGhhbmdpbmcgb3V0IHRoZXJlLiAgQnV0IHllcywgaWYgd2Ug aGF2ZSBhIHRvb2wNCj50aGF0IGNhbg0KPmJlIGNvbmZpZ3VyZWQgZm9yIHRoaXMsIHdlIGNhbiBz dG9wIHRhbGtpbmcgYWJvdXQgdGhlIHRvb2xpbmcgYXNwZWN0Lg0KPg0KPj4gSWYgd2UgcmVhbGx5 IHdhbnQgc29tZSB0eXBlIG9mIHRvb2wgdG8gY2hlY2sgZXZlcnkgZGV0YWlsIG9mIMWSb3VywrkN Cj4+Y29kaW5nDQo+PiBzdHlsZSB0aGVuIHdlIG1vc3QgbGlrZWx5IG5lZWQgdG8gc3RvcCB1c2lu ZyBjaGVja3BhdGNoIElNTyBmb3IgYSB0b29sDQo+PiBsaWtlIGFzdHlsZSwgdW51bmNydXN0aWZ5 IG9yIHNvbWUgdG9vbCB0aGF0IHByb3ZpZGVzIHRoZSBiZXN0IHNvbHV0aW9uLg0KPj4gDQo+WWVz LCB3ZSBkbywgd2UgaGF2ZSB0bywgb3RoZXJ3aXNlIHN0eWxlIG5ldmVyIGdldHMgZW5mb3JjZWQu ICBUaG91Z2gNCj5hc3R5bGUgYW5kDQo+dW5jcnVzaXR5IGFyZSBiZWF1dGlmaWVycywgbm90IGNo ZWNrZXJzLiAgV2hpbGUgSSdtIG5vdCBvcHBvc2VkIHRvIGEgdG9vbA0KPnRoYXQNCj5mb3JtYXRz IHRoZSBjb2RlIGZvciB5b3UsIEkgdGhpbmsgd2UgbmVlZCB0byByZXF1aXJlIHRoYXQgaXQgYmUg YWJsZSB0bw0KPm9wZXJhdGUNCj5pbiBhIGRyeS1ydW4gbW9kZSwgd2hlcmUgaXQgc2ltcGx5IHBv aW50cyBvdXQgeW91ciBmb3JtYXR0aW5nIGRldmlhdGlvbnMsDQo+c28NCj50aGF0IHlvdSBjYW4g bWFrZSBkaXJlY3Rpb25zLCBvciBkZWNpZGUgeW91IG5lZWQgdG8gdmlvbGF0ZSB0aGUNCj5ndWlk ZWxpbmVzLg0KPg0KPj4gSSB3YXMgc3VnZ2VzdGluZyB3ZSBjb3VsZCB1c2Ugb25lIG9mIHRoZXNl IHRvb2wgdG8gY3JlYXRlIGEgY29tbW9uDQo+PmNvbmZpZw0KPj4gZmlsZSBmb3IgZXZlcnlvbmUg dG8gdXNlIGFuZCB0aGVuIGNoZWNrcGF0Y2ggbWF5IG5vdCBiZSByZXF1aXJlZC4gQXQNCj4+bGVh c3QNCj4+IHRoZXNlIG90aGVyIHRvb2xzIGJlc2lkZSBjaGVjayBwYXRjaCBzZWVtIHRvIGhhdmUg YSBodWdlIG51bWJlciBvZg0KPj5vcHRpb25zDQo+PiB0byBmb3JtYXQgdGhlIGF1dG9tYXRpY2Fs bHkgaW5zdGVhZCBvZiB0aGUgZGV2ZWxvcGVyIGhhdmluZyB0byBkbyB0aGF0DQo+PiB3b3JrIGJ5 IGhhbmQuDQo+VGhhdHMgZmluZSwgYXMgbG9uZyBhcyBpdCBoYXMgYSBtb2RlIHdoZXJlYnkgaXQg anVzdCB0ZWxscyB5b3Ugd2hhdHMNCj53cm9uZywgYW5kDQo+ZG9lc24ndCBmaXggaXQgZm9yIHlv dS4NCj4NCj4+ID4NCj4+ID5UaGUgYm90dG9tIGxpbmUgaXMgdGhhdCBzdHlsZSBndWlkZXMgZW5m b3JjZSBzdHlsZSwgYW5kIHRvb2xpbmcgbWFrZXMNCj4+ID5jb250cmlidXRvcnMgY29uZHVzaXZl IHRvIGZvbGxvd2luZyB0aGUgc3R5bGUuICBJZiB3ZSBoYXZlIHNvbWVvbmUNCj4+dGhhdCBpcw0K Pj4gPndpbGxpbmcgdG8gbWFpbnRhaW4gc3VjaCBhIHRvb2wsIHRoZW4gd2UgaGF2ZSBhIGxvdCBv ZiBsZXdheSBpbiB3aGF0DQo+PnRoZQ0KPj4gPnN0eWxlDQo+PiA+aXMsIGJ1dCBpZiB3ZSBkb24n dCB0aGVuIHdlIHJlYWxseSBuZWVkIHRvIGZvbGxvdyB0aGUgc3R5bGUgdGhhdCBhbg0KPj4gPmV4 aXN0aW5nDQo+PiA+dG9vbCBwcm92aWRlcywgYmVjYXVzZSB3aXRob3V0IHRvb2xpbmcsIGNvbnRy aWJ1dG9ycyBhcmVuJ3QgbGlrZWx5IHRvDQo+PiA+Ym90aGVyDQo+PiA+d2l0aCBzdHJpY3QgYWRo ZXJlbmNlIHRvIHRoZSBzdHlsZS4NCj4+IA0KPj4gRm9yIHRvb2xzIGxpa2UgYXN0eWxlIG9yIHVu Y3J1c3RpZnkgd2UgZG8gbm90IGhhdmUgdG8gbWFpbnRhaW4gdGhvc2UNCj4+dG9vbHMNCj4+IGFz IHRoZXkgYXJlIGFscmVhZHkgYmVpbmcgbWFpbnRhaW5lZCwgd2UganVzdCBoYXZlIHRvIHVzZSB0 aGVtLiBJdA0KPj5zZWVtcyBhDQo+PiB3YXN0ZSB0byBtZSB3ZSBhcmUgbm90IHdpbGxpbmcgdG8g Y2hhbmdlIGJlY2F1c2Ugc29tZW9uZSBtYXkgaGF2ZSB0bw0KPj5tYWtlDQo+PiBhIHNpbmdsZSBj aGFuZ2UgdG8gY2hlY2twYXRjaCwgd2hpY2ggd2UgbWF5IG5ldmVyIGhhdmUgdG8gY2hhbmdlIGFn YWluDQo+PiBidXlpbmcgd2UgY2FuIG5vdCBnZXQgaXQgdXBzdHJlYW1lZC4gSXQgaXMgcG9zc2li bGUgd2UgY2FuIGRyb3AgdGhlIHVzZQ0KPj5vZg0KPj4gY2hlY2twYXRjaCBhbmQgdXNlIG9uZSBv ZiB0aGUgb3RoZXIgdG9vbHMgbWFkZSBqdXN0IGZvciBzdHlsZQ0KPj5mb3JtYXR0aW5nLg0KPj4g DQo+SSdtIG5vdCBvcHBvc2VkIHRvIG1ha2luZyBhIGNoYW5nZSB0byBjaGVja3BhdGNoLCB3ZSBq dXN0IG5lZWQgdG8ga25vdw0KPndob3MNCj5nb2luZyB0byBkbyBpdCBhbmQgbWFpbnRhaW4gaXQg aWYgTGludXMgZG9lc24ndCBhY2NlcHQgaXQuICBJZiB0aGF0cyB5b3UsDQo+b3IgeW91DQo+a25v dyBzb21lb25lIHdobyB3aWxsIHN0ZXAgdXAsIHdlJ3JlIGdvb2QgdG8gZ28uDQo+DQo+PiBUbyBt ZSBjaGVja3BhdGNoIGlzIGEgdG9vbCB0aGF0IG5lZWRzIHRvIGJlIHJlcGxhY2VkIGJ5IHRvb2xz IHRoYXQgYXJlDQo+PiBtYWRlIGZvciBjb2RlIGZvcm1hdHRpbmcsIG5vdCBqdXN0IGNoZWNraW5n LiBJIHdvdWxkIGFzc3VtZSBjaGVja3BhdGNoDQo+Pmhhcw0KPj4gaXRzIHBsYWNlIGluIHRoZSBM aW51eCBrZXJuZWwgYW5kIGl0IG5lZWRzIHRvIGJlIHVzZWQgb25seSBieSB0aGUgTGludXgNCj4+ IEtlcm5lbC4gDQo+VGhhdHMgcmlnaHQsIGJ1dCB0aGVyZXMgbm8gcmVhc29uIHdlIGNhbid0IGFk b3B0IGl0LiAgTm90IHRoYXQgd2UgaGF2ZQ0KPnRvLCBidXQNCj5pdCBzZWVtcyBsaWtlIHdlIGFs cmVhZHkgaGF2ZSBsb3RzIG9mIGNvZGUgdGhhdCBmb2xsb3dzIGl0cyBzdHlsZS4NCj4NCj4+IEkg YmVsaWV2ZSBpdCB3ZSB0b29rIHRoZSB0aW1lIHRvIGZvcm1hdCB0aGUgY29kZSB0byBvbmUgb2Yg dGhlDQo+PiB0b29scyBhbmQgcmVxdWlyZSBhIGRldmVsb3BlciB0byB1c2UgdGhhdCB0b29sIHdp dGggdGhlIHByb3ZpZGVkIGNvbmZpZw0KPj4gZmlsZSBpdCB3b3VsZCBiZSBzaW1wbGVyIHRvIGVu Zm9yY2UgdGhlIGNvZGluZyBzdHlsZS4NCj4+IA0KPlF1ZXN0aW9uOiBXaGF0IGFib3V0IHRoZSBr ZXJuZWwgY29kZSB0aGF0IHdlIGJvcnJvdyBmcm9tIHRoZSB1cHN0cmVhbQ0KPnByb2plY3RzDQo+ KGlnYi9lMTAwMC9peGdiZSBrZXJuZWwgY29kZSk/ICBBcmUgeW91IHByb3Bvc2luZyBhbiBhdXRv bWF0aWMNCj5yZWZvcm1hdHRpbmcNCj50aGVyZT8gIElmIHdlIGhhdmUgZXhwZWN0YXRpb25zIG9m IGludGVncmF0aW5nIGZ1dHVyZSBrZXJuZWwgY29kZSwgaXQNCj5taWdodCBiZQ0KPndvcnRod2hp bGUgYWRvcHRpbmcgdGhlIGtlcm5lbCBzdHlsZSAoYXQgbGVhc3QgZm9yIHRob3NlIGZpbGVzKS4g IEkNCj5yZWFsaXplDQo+dGhhdHMgZXhhY3RseSB0aGUgYXJndW1lbnQgSSBtYWRlIGluIG9wcG9z aXRpb24gYWJvdmUgKHRoYXQgd2Ugc2hvdWxkbid0DQo+c2VsZWN0DQo+c3R5bGUgYmFzZWQgb24g Y29kZSBzdWJtaXNzaW9ucyksIGJ1dCBJIHdhbnRlZCB0byBwb2ludCBpdCBvdXQuICBPciBhcmUg d2UNCj5leGVtcHRpbmcga2VybmVsIGNvZGUgZnJvbSB0aGlzPw0KPg0KPg0KPj4gQXMgd2UgcGF0 Y2ggYSBmaWxlIHRoZSB0b29sIGNvdWxkIGJlIGFwcGxpZWQgYmVmb3JlIHRoZSBjb21taXQuIEl0 IHdpbGwNCj4+IGVmZmVjdCBvdGhlciBwYXRjaGVzIHRvIHRoYXQgZmlsZSwgYnV0IHdlIGhhdmUg dG8gZG8gbWVyZ2VzIHRvZGF5IGFuZCBpdA0KPj4gd2lsbCBub3QgY2hhbmdlIGFueXRpbWUgc29v bi4gSWYgeW91IGFwcGxpZWQgYSB0b29sIHRvIGZvcm1hdCBhbGwgb2YgdGhlDQo+PiBjb2RlIGF0 IHNvbWUgZmxhZyBkYXksIHdlIHdvdWxkIGhhdmUgYSBiaXQgb2YgY2h1cm4gdGhlbiBpdCB3b3Vs ZCBiZQ0KPj5vdmVyLg0KPj4gDQo+VGhpcyBpcyB0cnVlLCBhcyBub3RlZCBhYm92ZSwgSSdtIGZp bmUgd2l0aCBzb21lIG90aGVyIHRvb2wsIGJ1dCBJIHdvdWxkDQo+bGlrZSB0bw0KPnNlZSBpdCBo YXZlIGFuIGluZm9ybWF0aW9uYWwgbW9kZSwgd2hlcmUgaXQganVzdCBwb2ludHMgb3V0IGVycm9y cyBpbg0KPnN0eWxlDQo+cmF0aGVyIHRoYW4gYXV0b21hdGljYWxseSBjb3JyZWN0aW5nIHRoZW0u DQoNCldlIGJvdGgga25vdyBhIGNvZGluZyBzdHlsZSBpcyBuZWVkZWQsIHdoYXQgdGhlIGNvZGlu ZyBzdHlsZSBpcyBsaWtlIG5lZWRzDQp0byBiZSBkZWZpbmVkIGFuZCB3ZSBuZWVkIHRvIGZvY3Vz IG9uIFNpb2JoYW4gZG9jdW1lbnQgaW5zdGVhZCBvZg0KZGlzY3Vzc2luZyB0aGUgdGhlc2UgZGlz dHJhY3RpbmcgaXNzdWVzLiBXZSBib3RoIHNlZW0gdG8gd2FudCBhIHRvb2wsIGxldHMNCmRpc2N1 c3MgaXQgYWZ0ZXIgd2UgZGVmaW5lIHRoZSBjb2Rpbmcgc3R5bGUuDQoNCktlaXRoDQo+DQo+PiBJ IHdvdWxkIHN1Z2dlc3Qgd2UgZm9jdXMgb24gdGhlIGNvZGluZyBzdHlsZSBhbmQgc2VlIHdoYXQg aXQgbWVhbnMgdG8NCj4+dGhlDQo+PiB0b29sL2NoZWNrcGF0Y2guIFJlYWQgdGhlIGVtYWlsIGZy b20gU2lvYmhhbiBhbmQgdGhlbiB3ZSBjYW4gdGFsayBhYm91dA0KPj4gdGhlIGNvZGluZyBzdHls ZSBpbiBtb3JlIG1lYW5pbmcgZnVsbCBkZXRhaWwuDQo+PiANCj4+IEtlaXRoDQo+PiA+DQo+PiA+ TmVpbA0KPj4gPg0KPj4gPg0KPj4gDQo+PiANCg0K