From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 7B9502C6B for ; Thu, 16 Jun 2016 21:33:17 +0200 (CEST) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP; 16 Jun 2016 12:33:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,481,1459839600"; d="scan'208";a="829492327" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga003.jf.intel.com with ESMTP; 16 Jun 2016 12:33:16 -0700 Received: from fmsmsx114.amr.corp.intel.com (10.18.116.8) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 16 Jun 2016 12:33:15 -0700 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.58]) by FMSMSX114.amr.corp.intel.com ([169.254.6.47]) with mapi id 14.03.0248.002; Thu, 16 Jun 2016 12:33:15 -0700 From: "Wiles, Keith" To: Take Ceara CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] Performance hit - NICs on different CPU sockets Thread-Index: AQHRxhDhfoYvP50+jku6GweXVdn2qp/pHBMAgAOGFoD//7JsgIAAWKgA//+v1wCAAGIogP//tkMAAAAU+gAADVN5AP//wHsA Date: Thu, 16 Jun 2016 19:33:14 +0000 Message-ID: <5A730B5F-BD52-4DDD-828C-62468439E1CF@intel.com> References: <1DB024A9-9185-41C8-9FA5-67C41891189A@intel.com> <2A957DA5-72A6-45B0-8B76-FE0DBDE758FD@intel.com> <9FD66398-C7F0-43AF-89F6-79BB95A16A37@intel.com> <914ABD39-039F-4142-8ADB-BE20465676C1@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.254.176.56] Content-Type: text/plain; charset="utf-8" Content-ID: <7C21C4170106234994FBA476D0129C56@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] Performance hit - NICs on different CPU sockets 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: Thu, 16 Jun 2016 19:33:18 -0000 T24gNi8xNi8xNiwgMToyMCBQTSwgIlRha2UgQ2VhcmEiIDxkdW1pdHJ1LmNlYXJhQGdtYWlsLmNv bT4gd3JvdGU6DQoNCj5PbiBUaHUsIEp1biAxNiwgMjAxNiBhdCA2OjU5IFBNLCBXaWxlcywgS2Vp dGggPGtlaXRoLndpbGVzQGludGVsLmNvbT4gd3JvdGU6DQo+Pg0KPj4gT24gNi8xNi8xNiwgMTE6 NTYgQU0sICJkZXYgb24gYmVoYWxmIG9mIFdpbGVzLCBLZWl0aCIgPGRldi1ib3VuY2VzQGRwZGsu b3JnIG9uIGJlaGFsZiBvZiBrZWl0aC53aWxlc0BpbnRlbC5jb20+IHdyb3RlOg0KPj4NCj4+Pg0K Pj4+T24gNi8xNi8xNiwgMTE6MjAgQU0sICJUYWtlIENlYXJhIiA8ZHVtaXRydS5jZWFyYUBnbWFp bC5jb20+IHdyb3RlOg0KPj4+DQo+Pj4+T24gVGh1LCBKdW4gMTYsIDIwMTYgYXQgNToyOSBQTSwg V2lsZXMsIEtlaXRoIDxrZWl0aC53aWxlc0BpbnRlbC5jb20+IHdyb3RlOg0KPj4+Pg0KPj4+Pj4N Cj4+Pj4+IFJpZ2h0IG5vdyBJIGRvIG5vdCBrbm93IHdoYXQgdGhlIGlzc3VlIGlzIHdpdGggdGhl IHN5c3RlbS4gQ291bGQgYmUgdG9vIG1hbnkgUngvVHggcmluZyBwYWlycyBwZXIgcG9ydCBhbmQg bGltaXRpbmcgdGhlIG1lbW9yeSBpbiB0aGUgTklDcywgd2hpY2ggaXMgd2h5IHlvdSBnZXQgYmV0 dGVyIHBlcmZvcm1hbmNlIHdoZW4geW91IGhhdmUgOCBjb3JlIHBlciBwb3J0LiBJIGFtIG5vdCBy ZWFsbHkgc2VlaW5nIHRoZSB3aG9sZSBwaWN0dXJlIGFuZCBob3cgRFBESyBpcyBjb25maWd1cmVk IHRvIGhlbHAgbW9yZS4gU29ycnkuDQo+Pj4+DQo+Pj4+SSBkb3VidCB0aGF0IHRoZXJlIGlzIGEg bGltaXRhdGlvbiB3cnQgcnVubmluZyAxNiBjb3JlcyBwZXIgcG9ydCB2cyA4DQo+Pj4+Y29yZXMg cGVyIHBvcnQgYXMgSSd2ZSB0cmllZCB3aXRoIHR3byBkaWZmZXJlbnQgbWFjaGluZXMgY29ubmVj dGVkDQo+Pj4+YmFjayB0byBiYWNrIGVhY2ggd2l0aCBvbmUgWDcxMCBwb3J0IGFuZCAxNiBjb3Jl cyBvbiBlYWNoIG9mIHRoZW0NCj4+Pj5ydW5uaW5nIG9uIHRoYXQgcG9ydC4gSW4gdGhhdCBjYXNl IG91ciBwZXJmb3JtYW5jZSBkb3VibGVkIGFzDQo+Pj4+ZXhwZWN0ZWQuDQo+Pj4+DQo+Pj4+Pg0K Pj4+Pj4gTWF5YmUgc2VlaW5nIHRoZSBEUERLIGNvbW1hbmQgbGluZSB3b3VsZCBoZWxwLg0KPj4+ Pg0KPj4+PlRoZSBjb21tYW5kIGxpbmUgSSB1c2Ugd2l0aCBwb3J0cyAwMTowMC4zIGFuZCA4MTow MC4zIGlzOg0KPj4+Pi4vd2FycDE3IC1jIDB4RkZGRkZGRkZGMyAgIC1tIDMyNzY4IC13IDAwMDA6 ODE6MDAuMyAtdyAwMDAwOjAxOjAwLjMgLS0NCj4+Pj4tLXFtYXAgMC4weDAwM0ZGMDAzRjAgLS1x bWFwIDEuMHgwRkMwMEZGQzAwDQo+Pj4+DQo+Pj4+T3VyIG93biBxbWFwIGFyZ3MgYWxsb3cgdGhl IHVzZXIgdG8gY29udHJvbCBleGFjdGx5IGhvdyBjb3JlcyBhcmUNCj4+Pj5zcGxpdCBiZXR3ZWVu IHBvcnRzLiBJbiB0aGlzIGNhc2Ugd2UgZW5kIHVwIHdpdGg6DQo+Pj4+DQo+Pj4+d2FycDE3PiBz aG93IHBvcnQgbWFwDQo+Pj4+UG9ydCAwW3NvY2tldDogMF06DQo+Pj4+ICAgQ29yZSA0W3NvY2tl dDowXSAoVHg6IDAsIFJ4OiAwKQ0KPj4+PiAgIENvcmUgNVtzb2NrZXQ6MF0gKFR4OiAxLCBSeDog MSkNCj4+Pj4gICBDb3JlIDZbc29ja2V0OjBdIChUeDogMiwgUng6IDIpDQo+Pj4+ICAgQ29yZSA3 W3NvY2tldDowXSAoVHg6IDMsIFJ4OiAzKQ0KPj4+PiAgIENvcmUgOFtzb2NrZXQ6MF0gKFR4OiA0 LCBSeDogNCkNCj4+Pj4gICBDb3JlIDlbc29ja2V0OjBdIChUeDogNSwgUng6IDUpDQo+Pj4+ICAg Q29yZSAyMFtzb2NrZXQ6MF0gKFR4OiA2LCBSeDogNikNCj4+Pj4gICBDb3JlIDIxW3NvY2tldDow XSAoVHg6IDcsIFJ4OiA3KQ0KPj4+PiAgIENvcmUgMjJbc29ja2V0OjBdIChUeDogOCwgUng6IDgp DQo+Pj4+ICAgQ29yZSAyM1tzb2NrZXQ6MF0gKFR4OiA5LCBSeDogOSkNCj4+Pj4gICBDb3JlIDI0 W3NvY2tldDowXSAoVHg6IDEwLCBSeDogMTApDQo+Pj4+ICAgQ29yZSAyNVtzb2NrZXQ6MF0gKFR4 OiAxMSwgUng6IDExKQ0KPj4+PiAgIENvcmUgMjZbc29ja2V0OjBdIChUeDogMTIsIFJ4OiAxMikN Cj4+Pj4gICBDb3JlIDI3W3NvY2tldDowXSAoVHg6IDEzLCBSeDogMTMpDQo+Pj4+ICAgQ29yZSAy OFtzb2NrZXQ6MF0gKFR4OiAxNCwgUng6IDE0KQ0KPj4+PiAgIENvcmUgMjlbc29ja2V0OjBdIChU eDogMTUsIFJ4OiAxNSkNCj4+Pj4NCj4+Pj5Qb3J0IDFbc29ja2V0OiAxXToNCj4+Pj4gICBDb3Jl IDEwW3NvY2tldDoxXSAoVHg6IDAsIFJ4OiAwKQ0KPj4+PiAgIENvcmUgMTFbc29ja2V0OjFdIChU eDogMSwgUng6IDEpDQo+Pj4+ICAgQ29yZSAxMltzb2NrZXQ6MV0gKFR4OiAyLCBSeDogMikNCj4+ Pj4gICBDb3JlIDEzW3NvY2tldDoxXSAoVHg6IDMsIFJ4OiAzKQ0KPj4+PiAgIENvcmUgMTRbc29j a2V0OjFdIChUeDogNCwgUng6IDQpDQo+Pj4+ICAgQ29yZSAxNVtzb2NrZXQ6MV0gKFR4OiA1LCBS eDogNSkNCj4+Pj4gICBDb3JlIDE2W3NvY2tldDoxXSAoVHg6IDYsIFJ4OiA2KQ0KPj4+PiAgIENv cmUgMTdbc29ja2V0OjFdIChUeDogNywgUng6IDcpDQo+Pj4+ICAgQ29yZSAxOFtzb2NrZXQ6MV0g KFR4OiA4LCBSeDogOCkNCj4+Pj4gICBDb3JlIDE5W3NvY2tldDoxXSAoVHg6IDksIFJ4OiA5KQ0K Pj4+PiAgIENvcmUgMzBbc29ja2V0OjFdIChUeDogMTAsIFJ4OiAxMCkNCj4+Pj4gICBDb3JlIDMx W3NvY2tldDoxXSAoVHg6IDExLCBSeDogMTEpDQo+Pj4+ICAgQ29yZSAzMltzb2NrZXQ6MV0gKFR4 OiAxMiwgUng6IDEyKQ0KPj4+PiAgIENvcmUgMzNbc29ja2V0OjFdIChUeDogMTMsIFJ4OiAxMykN Cj4+Pj4gICBDb3JlIDM0W3NvY2tldDoxXSAoVHg6IDE0LCBSeDogMTQpDQo+Pj4+ICAgQ29yZSAz NVtzb2NrZXQ6MV0gKFR4OiAxNSwgUng6IDE1KQ0KPj4+DQo+Pj5PbiBlYWNoIHNvY2tldCB5b3Ug aGF2ZSAxMCBwaHlzaWNhbCBjb3JlcyBvciAyMCBsY29yZXMgcGVyIHNvY2tldCBmb3IgNDAgbGNv cmVzIHRvdGFsLg0KPj4+DQo+Pj5UaGUgYWJvdmUgaXMgbGlzdGluZyB0aGUgTENPUkVTIChvciBo eXBlci10aHJlYWRzKSBhbmQgbm90IENPUkVzLCB3aGljaCBJIHVuZGVyc3RhbmQgc29tZSBsaWtl IHRvIHRoaW5rIHRoZXkgYXJlIGludGVyY2hhbmdlYWJsZS4gVGhlIHByb2JsZW0gaXMgdGhlIGh5 cGVyLXRocmVhZHMgYXJlIGxvZ2ljYWxseSBpbnRlcmNoYW5nZWFibGUsIGJ1dCBub3QgcGVyZm9y bWFuY2Ugd2lzZS4gSWYgeW91IGhhdmUgdHdvIHJ1bi10by1jb21wbGV0aW9uIHRocmVhZHMgb24g YSBzaW5nbGUgcGh5c2ljYWwgY29yZSBlYWNoIG9uIGEgZGlmZmVyZW50IGh5cGVyLXRocmVhZCBv ZiB0aGF0IGNvcmUgWzAsMV0sIHRoZW4gdGhlIHNlY29uZCBsY29yZSBvciB0aHJlYWQgKDEpIG9u IHRoYXQgcGh5c2ljYWwgY29yZSB3aWxsIG9ubHkgZ2V0IGF0IG1vc3QgYWJvdXQgMzAtMjAlIG9m IHRoZSBDUFUgY3ljbGVzLiBOb3JtYWxseSBpdCBpcyBtdWNoIGxlc3MsIHVubGVzcyB5b3UgdHVu ZSB0aGUgY29kZSB0byBtYWtlIHN1cmUgZWFjaCB0aHJlYWQgaXMgbm90IHRyeWluZyB0byBzaGFy ZSB0aGUgaW50ZXJuYWwgZXhlY3V0aW9uIHVuaXRzLCBidXQgc29tZSBpbnRlcm5hbCBleGVjdXRp b24gdW5pdHMgYXJlIGFsd2F5cyBzaGFyZWQuDQo+Pj4NCj4+PlRvIGdldCB0aGUgYmVzdCBwZXJm b3JtYW5jZSB3aGVuIGh5cGVyLXRocmVhZGluZyBpcyBlbmFibGUgaXMgdG8gbm90IHJ1biBib3Ro IHRocmVhZHMgb24gYSBzaW5nbGUgcGh5c2ljYWwgY29yZSwgYnV0IG9ubHkgcnVuIG9uZSBoeXBl ci10aHJlYWQtMC4NCj4+Pg0KPj4+SW4gdGhlIHRhYmxlIGJlbG93IHRoZSB0YWJsZSBsaXN0cyB0 aGUgcGh5c2ljYWwgY29yZSBpZCBhbmQgZWFjaCBvZiB0aGUgbGNvcmUgaWRzIHBlciBzb2NrZXQu IFVzZSB0aGUgZmlyc3QgbGNvcmUgcGVyIHNvY2tldCBmb3IgdGhlIGJlc3QgcGVyZm9ybWFuY2U6 DQo+Pj5Db3JlIDEgWzEsIDIxXSAgICBbMTEsIDMxXQ0KPj4+VXNlIGxjb3JlIDEgb3IgMTEgZGVw ZW5kaW5nIG9uIHRoZSBzb2NrZXQgeW91IGFyZSBvbi4NCj4+Pg0KPj4+VGhlIGluZm8gYmVsb3cg aXMgbW9zdCBsaWtlbHkgdGhlIGJlc3QgcGVyZm9ybWFuY2UgYW5kIHV0aWxpemF0aW9uIG9mIHlv dXIgc3lzdGVtLiBJZiBJIGdvdCB0aGUgdmFsdWVzIHJpZ2h0IOKYug0KPj4+DQo+Pj4uL3dhcnAx NyAtYyAweDAwMDAwRkZGZTAgICAtbSAzMjc2OCAtdyAwMDAwOjgxOjAwLjMgLXcgMDAwMDowMTow MC4zIC0tDQo+Pj4tLXFtYXAgMC4weDAwMDAwMDAzRkUgLS1xbWFwIDEuMHgwMDAwMEZGRTAwDQo+ Pj4NCj4+PlBvcnQgMFtzb2NrZXQ6IDBdOg0KPj4+ICAgQ29yZSAyW3NvY2tldDowXSAoVHg6IDAs IFJ4OiAwKQ0KPj4+ICAgQ29yZSAzW3NvY2tldDowXSAoVHg6IDEsIFJ4OiAxKQ0KPj4+ICAgQ29y ZSA0W3NvY2tldDowXSAoVHg6IDIsIFJ4OiAyKQ0KPj4+ICAgQ29yZSA1W3NvY2tldDowXSAoVHg6 IDMsIFJ4OiAzKQ0KPj4+ICAgQ29yZSA2W3NvY2tldDowXSAoVHg6IDQsIFJ4OiA0KQ0KPj4+ICAg Q29yZSA3W3NvY2tldDowXSAoVHg6IDUsIFJ4OiA1KQ0KPj4+ICAgQ29yZSA4W3NvY2tldDowXSAo VHg6IDYsIFJ4OiA2KQ0KPj4+ICAgQ29yZSA5W3NvY2tldDowXSAoVHg6IDcsIFJ4OiA3KQ0KPj4+ DQo+Pj44IGNvcmVzIG9uIGZpcnN0IHNvY2tldCBsZWF2aW5nIDAtMSBsY29yZXMgZm9yIExpbnV4 Lg0KPj4NCj4+IDkgY29yZXMgYW5kIGxlYXZpbmcgdGhlIGZpcnN0IGNvcmUgb3IgdHdvIGxjb3Jl cyBmb3IgTGludXgNCj4+Pg0KPj4+UG9ydCAxW3NvY2tldDogMV06DQo+Pj4gICBDb3JlIDEwW3Nv Y2tldDoxXSAoVHg6IDAsIFJ4OiAwKQ0KPj4+ICAgQ29yZSAxMVtzb2NrZXQ6MV0gKFR4OiAxLCBS eDogMSkNCj4+PiAgIENvcmUgMTJbc29ja2V0OjFdIChUeDogMiwgUng6IDIpDQo+Pj4gICBDb3Jl IDEzW3NvY2tldDoxXSAoVHg6IDMsIFJ4OiAzKQ0KPj4+ICAgQ29yZSAxNFtzb2NrZXQ6MV0gKFR4 OiA0LCBSeDogNCkNCj4+PiAgIENvcmUgMTVbc29ja2V0OjFdIChUeDogNSwgUng6IDUpDQo+Pj4g ICBDb3JlIDE2W3NvY2tldDoxXSAoVHg6IDYsIFJ4OiA2KQ0KPj4+ICAgQ29yZSAxN1tzb2NrZXQ6 MV0gKFR4OiA3LCBSeDogNykNCj4+PiAgIENvcmUgMThbc29ja2V0OjFdIChUeDogOCwgUng6IDgp DQo+Pj4gICBDb3JlIDE5W3NvY2tldDoxXSAoVHg6IDksIFJ4OiA5KQ0KPj4+DQo+Pj5BbGwgMTAg Y29yZXMgb24gdGhlIHNlY29uZCBzb2NrZXQuDQo+DQo+VGhlIHZhbHVlcyB3ZXJlIGFsbW9zdCBy aWdodCA6KSBCdXQgdGhhdCdzIGJlY2F1c2Ugd2UgcmVzZXJ2ZSB0aGUNCj5maXJzdCB0d28gbGNv cmVzIHRoYXQgYXJlIHBhc3NlZCB0byBkcGRrIGZvciBvdXIgb3duIG1hbmFnZW1lbnQgcGFydC4N Cj5JIHdhcyBhd2FyZSB0aGF0IGxjb3JlcyBhcmUgbm90IHBoeXNpY2FsIGNvcmVzIHNvIHdlIGRv bid0IGV4cGVjdA0KPnBlcmZvcm1hbmNlIHRvIHNjYWxlIGxpbmVhcmx5IHdpdGggdGhlIG51bWJl ciBvZiBsY29yZXMuIEhvd2V2ZXIsIGlmDQo+dGhlcmUncyBhIGNoYW5jZSB0aGF0IGFub3RoZXIg aHlwZXJ0aHJlYWQgY2FuIHJ1biB3aGlsZSB0aGUgcGFpcmVkIG9uZQ0KPmlzIHN0YWxsaW5nIHdl J2QgbGlrZSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aG9zZSBjeWNsZXMgaWYgcG9zc2libGUuDQo+ DQo+TGVhdmluZyB0aGF0IGFzaWRlIEkganVzdCByYW4gdHdvIG1vcmUgdGVzdHMgd2hpbGUgdXNp bmcgb25seSBvbmUgb2YNCj50aGUgdHdvIGh3dGhyZWFkcyBpbiBhIGNvcmUuDQo+DQo+YS4gMiBw b3J0cyBvbiBkaWZmZXJlbnQgc29ja2V0cyB3aXRoIDggY29yZXMvcG9ydDoNCj4uL2J1aWxkL3dh cnAxNyAtYyAweEZGM0ZGICAgLW0gMzI3NjggLXcgMDAwMDo4MTowMC4zIC13IDAwMDA6MDE6MDAu Mw0KPi0tIC0tcW1hcCAwLjB4M0ZDIC0tcW1hcCAxLjB4RkYwMDANCj53YXJwMTc+IHNob3cgcG9y dCBtYXANCj5Qb3J0IDBbc29ja2V0OiAwXToNCj4gICBDb3JlIDJbc29ja2V0OjBdIChUeDogMCwg Ung6IDApDQo+ICAgQ29yZSAzW3NvY2tldDowXSAoVHg6IDEsIFJ4OiAxKQ0KPiAgIENvcmUgNFtz b2NrZXQ6MF0gKFR4OiAyLCBSeDogMikNCj4gICBDb3JlIDVbc29ja2V0OjBdIChUeDogMywgUng6 IDMpDQo+ICAgQ29yZSA2W3NvY2tldDowXSAoVHg6IDQsIFJ4OiA0KQ0KPiAgIENvcmUgN1tzb2Nr ZXQ6MF0gKFR4OiA1LCBSeDogNSkNCj4gICBDb3JlIDhbc29ja2V0OjBdIChUeDogNiwgUng6IDYp DQo+ICAgQ29yZSA5W3NvY2tldDowXSAoVHg6IDcsIFJ4OiA3KQ0KPg0KPlBvcnQgMVtzb2NrZXQ6 IDFdOg0KPiAgIENvcmUgMTJbc29ja2V0OjFdIChUeDogMCwgUng6IDApDQo+ICAgQ29yZSAxM1tz b2NrZXQ6MV0gKFR4OiAxLCBSeDogMSkNCj4gICBDb3JlIDE0W3NvY2tldDoxXSAoVHg6IDIsIFJ4 OiAyKQ0KPiAgIENvcmUgMTVbc29ja2V0OjFdIChUeDogMywgUng6IDMpDQo+ICAgQ29yZSAxNltz b2NrZXQ6MV0gKFR4OiA0LCBSeDogNCkNCj4gICBDb3JlIDE3W3NvY2tldDoxXSAoVHg6IDUsIFJ4 OiA1KQ0KPiAgIENvcmUgMThbc29ja2V0OjFdIChUeDogNiwgUng6IDYpDQo+ICAgQ29yZSAxOVtz b2NrZXQ6MV0gKFR4OiA3LCBSeDogNykNCj4NCj5UaGlzIGdpdmVzIGEgc2Vzc2lvbiBzZXR1cCBy YXRlIG9mIG9ubHkgMk0gc2Vzc2lvbnMvcy4NCj4NCj5iLiAyIHBvcnRzIG9uIHNvY2tldCAwIHdp dGggNCBjb3Jlcy9wb3J0Og0KPi4vYnVpbGQvd2FycDE3IC1jIDB4M0ZGICAgLW0gMzI3NjggLXcg MDAwMDowMjowMC4wIC13IDAwMDA6MDM6MDAuMCAtLQ0KPi0tcW1hcCAwLjB4M0MwIC0tcW1hcCAx LjB4MDNDDQoNCk9uZSBtb3JlIHRoaW5nIHRvIHRyeSBjaGFuZ2UgdGhlIOKAk20gMzI3NjggdG8g 4oCTc29ja2V0LW1lbSAxNjM4NCwxNjM4NCB0byBtYWtlIHN1cmUgdGhlIG1lbW9yeSBpcyBzcGxp dCBiZXR3ZWVuIHRoZSBzb2NrZXRzLiBZb3UgbWF5IG5lZWQgdG8gcmVtb3ZlIHRoZSAvZGV2L2h1 ZXBhZ2VzLyogZmlsZXMgb3Igd2hlcmV2ZXIgeW91IHB1dCB0aGVtLg0KDQpXaGF0IGlzIHRoZSBk cGRrIOKAk24gb3B0aW9uIHNldCB0byBvbiB5b3VyIHN5c3RlbT8gTWluZSBpcyBzZXQgdG8g4oCY 4oCTbiA04oCZDQoNCj53YXJwMTc+IHNob3cgcG9ydCBtYXANCj5Qb3J0IDBbc29ja2V0OiAwXToN Cj4gICBDb3JlIDZbc29ja2V0OjBdIChUeDogMCwgUng6IDApDQo+ICAgQ29yZSA3W3NvY2tldDow XSAoVHg6IDEsIFJ4OiAxKQ0KPiAgIENvcmUgOFtzb2NrZXQ6MF0gKFR4OiAyLCBSeDogMikNCj4g ICBDb3JlIDlbc29ja2V0OjBdIChUeDogMywgUng6IDMpDQo+DQo+UG9ydCAxW3NvY2tldDogMF06 DQo+ICAgQ29yZSAyW3NvY2tldDowXSAoVHg6IDAsIFJ4OiAwKQ0KPiAgIENvcmUgM1tzb2NrZXQ6 MF0gKFR4OiAxLCBSeDogMSkNCj4gICBDb3JlIDRbc29ja2V0OjBdIChUeDogMiwgUng6IDIpDQo+ ICAgQ29yZSA1W3NvY2tldDowXSAoVHg6IDMsIFJ4OiAzKQ0KPg0KPlN1cnByaXNpbmdseSB0aGlz IGdpdmVzIGEgc2Vzc2lvbiBzZXR1cCByYXRlIG9mIDNNIHNlc3MvcyEhDQo+DQo+VGhlIHBhY2tl dCBwcm9jZXNzaW5nIGNvcmVzIGFyZSB0b3RhbGx5IGluZGVwZW5kZW50IGFuZCBvbmx5IGFjY2Vz cw0KPmxvY2FsIHNvY2tldCBtZW1vcnkvcG9ydHMuDQo+VGhlcmUgaXMgbm8gbG9ja2luZyBvciBh dG9taWMgdmFyaWFibGUgYWNjZXNzIGluIGZhc3QgcGF0aCBpbiBvdXIgY29kZS4NCj5UaGUgbWJ1 ZiBwb29scyBhcmUgbm90IHNoYXJlZCBiZXR3ZWVuIGNvcmVzIGhhbmRsaW5nIHRoZSBzYW1lIHBv cnQgc28NCj50aGVyZSBzaG91bGQgYmUgbm8gY29udGVudGlvbiB3aGVuIGFsbG9jYXRpbmcvZnJl ZWluZyBtYnVmcy4NCj5JbiB0aGlzIHNwZWNpZmljIHRlc3Qgc2NlbmFyaW8gYWxsIHRoZSBjb3Jl cyBoYW5kbGluZyBwb3J0IDAgYXJlDQo+ZXNzZW50aWFsbHkgZXhlY3V0aW5nIHRoZSBzYW1lIGNv ZGUgKFRDUCBjbGllbnRzKSBhbmQgdGhlIGNvcmVzIG9uDQo+cG9ydCAxIGFzIHdlbGwgKFRDUCBz ZXJ2ZXJzKS4NCj4NCj5EbyB5b3UgaGF2ZSBhbnkgdGlwcyBhYm91dCB3aGF0IG90aGVyIHRoaW5n cyB0byBjaGVjayBmb3I/DQo+DQo+VGhhbmtzLA0KPkR1bWl0cnUNCj4NCj4NCj4NCj4+Pg0KPj4+ KytLZWl0aA0KPj4+DQo+Pj4+DQo+Pj4+SnVzdCBmb3IgcmVmZXJlbmNlLCB0aGUgY3B1X2xheW91 dCBzY3JpcHQgc2hvd3M6DQo+Pj4+JCAkUlRFX1NESy90b29scy9jcHVfbGF5b3V0LnB5DQo+Pj4+ PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQo+Pj4+Q29yZSBhbmQgU29ja2V0IEluZm9ybWF0aW9uIChhcyByZXBvcnRlZCBieSAnL3By b2MvY3B1aW5mbycpDQo+Pj4+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+Pj4+DQo+Pj4+Y29yZXMgPSAgWzAsIDEsIDIsIDMsIDQs IDgsIDksIDEwLCAxMSwgMTJdDQo+Pj4+c29ja2V0cyA9ICBbMCwgMV0NCj4+Pj4NCj4+Pj4gICAg ICAgIFNvY2tldCAwICAgICAgICBTb2NrZXQgMQ0KPj4+PiAgICAgICAgLS0tLS0tLS0gICAgICAg IC0tLS0tLS0tDQo+Pj4+Q29yZSAwICBbMCwgMjBdICAgICAgICAgWzEwLCAzMF0NCj4+Pj5Db3Jl IDEgIFsxLCAyMV0gICAgICAgICBbMTEsIDMxXQ0KPj4+PkNvcmUgMiAgWzIsIDIyXSAgICAgICAg IFsxMiwgMzJdDQo+Pj4+Q29yZSAzICBbMywgMjNdICAgICAgICAgWzEzLCAzM10NCj4+Pj5Db3Jl IDQgIFs0LCAyNF0gICAgICAgICBbMTQsIDM0XQ0KPj4+PkNvcmUgOCAgWzUsIDI1XSAgICAgICAg IFsxNSwgMzVdDQo+Pj4+Q29yZSA5ICBbNiwgMjZdICAgICAgICAgWzE2LCAzNl0NCj4+Pj5Db3Jl IDEwIFs3LCAyN10gICAgICAgICBbMTcsIDM3XQ0KPj4+PkNvcmUgMTEgWzgsIDI4XSAgICAgICAg IFsxOCwgMzhdDQo+Pj4+Q29yZSAxMiBbOSwgMjldICAgICAgICAgWzE5LCAzOV0NCj4+Pj4NCj4+ Pj5JIGtub3cgaXQgbWlnaHQgYmUgY29tcGxpY2F0ZWQgdG8gZ2lndXJlIG91dCBleGFjdGx5IHdo YXQncyBoYXBwZW5pbmcNCj4+Pj5pbiBvdXIgc2V0dXAgd2l0aCBvdXIgb3duIGNvZGUgc28gcGxl YXNlIGxldCBtZSBrbm93IGlmIHlvdSBuZWVkDQo+Pj4+YWRkaXRpb25hbCBpbmZvcm1hdGlvbi4N Cj4+Pj4NCj4+Pj5JIGFwcHJlY2lhdGUgdGhlIGhlbHAhDQo+Pj4+DQo+Pj4+VGhhbmtzLA0KPj4+ PkR1bWl0cnUNCj4+Pj4NCj4+Pg0KPj4+DQo+Pj4NCj4+Pg0KPj4NCj4+DQo+Pg0KPg0KDQoNCg0K