From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id DB9422B8B for ; Thu, 17 Jan 2019 08:31:14 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Jan 2019 23:31:13 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,488,1539673200"; d="scan'208";a="110558536" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga008.jf.intel.com with ESMTP; 16 Jan 2019 23:31:13 -0800 Received: from fmsmsx125.amr.corp.intel.com (10.18.125.40) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 16 Jan 2019 23:31:13 -0800 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by FMSMSX125.amr.corp.intel.com (10.18.125.40) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 16 Jan 2019 23:31:12 -0800 Received: from shsmsx152.ccr.corp.intel.com ([169.254.6.44]) by shsmsx102.ccr.corp.intel.com ([169.254.2.63]) with mapi id 14.03.0415.000; Thu, 17 Jan 2019 15:31:09 +0800 From: "Liang, Cunming" To: 'Alejandro Lucero' , 'dev' CC: "Richardson, Bruce" , "Lu, Xiuchun" Thread-Topic: [dpdk-techboard] A new bus for mediated devices Thread-Index: AQHUrD9xU1vtlocHekyPeLI/y4RCyqWwCZPQgAAHGkCAAAjIgIABh8+QgAFqHjA= Date: Thu, 17 Jan 2019 07:31:08 +0000 Message-ID: References: <59AF69C657FD0841A61C55336867B5B07271EB37@IRSMSX103.ger.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 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] [dpdk-techboard] A new bus for mediated devices 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: , X-List-Received-Date: Thu, 17 Jan 2019 07:31:15 -0000 UmVzZW5kIGluIHBsYWluIHRleHQuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQogRnJv bTogTGlhbmcsIEN1bm1pbmcNCiBTZW50OiBXZWRuZXNkYXksIEphbnVhcnkgMTYsIDIwMTkgNjo0 OSBQTQ0KIFRvOiBBbGVqYW5kcm8gTHVjZXJvIDxhbGVqYW5kcm8ubHVjZXJvQG5ldHJvbm9tZS5j b20+OyBkZXYgPGRldkBkcGRrLm9yZz4NCiBDYzogUmljaGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJp Y2hhcmRzb25AaW50ZWwuY29tPjsgTHUsIFhpdWNodW4NCiA8eGl1Y2h1bi5sdUBpbnRlbC5jb20+ DQogU3ViamVjdDogUkU6IFtkcGRrLXRlY2hib2FyZF0gQSBuZXcgYnVzIGZvciBtZWRpYXRlZCBk ZXZpY2VzDQogDQpIaSBBbGVqYW5kcm8sDQoNCj4gDQo+IEZyb206IEFsZWphbmRybyBMdWNlcm8g W21haWx0bzphbGVqYW5kcm8ubHVjZXJvQG5ldHJvbm9tZS5jb21dDQo+IFNlbnQ6IFdlZG5lc2Rh eSwgSmFudWFyeSAxNiwgMjAxOSAxOjU5IEFNDQo+IFRvOiBMaWFuZywgQ3VubWluZyA8Y3VubWlu Zy5saWFuZ0BpbnRlbC5jb20+OyBkZXYgPGRldkBkcGRrLm9yZz4NCj4gQ2M6IFJpY2hhcmRzb24s IEJydWNlIDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT47IEx1LCBYaXVjaHVuDQo+IDx4aXVj aHVuLmx1QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtkcGRrLXRlY2hib2FyZF0gQSBuZXcg YnVzIGZvciBtZWRpYXRlZCBkZXZpY2VzDQo+IA0KPiBIaSBTdGV2ZSwNCj4gDQo+PiBPbiBUdWUs IEphbiAxNSwgMjAxOSBhdCAyOjE5IFBNIExpYW5nLCBDdW5taW5nIDxjdW5taW5nLmxpYW5nQGlu dGVsLmNvbT4gd3JvdGU6DQo+PiBIaSBBbGVqYW5kcm8sDQo+PiANCj4+IEdvb2QgdG8ga25vdyB3 ZSBoYXZlIGNvbW1vbiBpbnRlcmVzdCBpbiBEUERLIG5hdGl2ZSBtZGV2IHN1cHBvcnQuDQo+PiAN Cj4+IFdl4oCZcmUgd29ya2luZyBvbiBzb21ldGhpbmcgd2hpY2ggbWRldiBiYXNlZCBQTUQgZHJp dmVyIGlzIHBhcnQgb2YuIEl0IHdhcyBnb2luZw0KPj4gdG8gY29sbGVjdCBvdGhlcnPigJkgaW50 ZXJlc3QgJiBmZWVkYmFjayBvbiBEUERLIHN1bW1pdCBiZWZvcmUgd2Ugc3RhcnQgdXBzdHJlYW0N Cj4+IGVmZm9ydC4NCj4gDQo+IFdoaWNoIERQREsgc3VtbWl0IGRvIHlvdSByZWZlciB0bz8gdGhl IGxhc3Qgb25lIGlzIFNhbnRhIEpvc2UgaW4gRGVjZW1iZXI/DQpbTENdIFllcywgaXQgaXMuIFlv dSBjYW4gZmluZCBpdCBmcm9tIHRoZSBsaW5rIA0KaHR0cHM6Ly9zY2hkLndzL2hvc3RlZF9maWxl cy9kcGRrc3VtbWl0bm9ydGhhbWVyaWNhMjAxOC83Yi9EUERLX1N1bW1pdDE4X01ERVZfRmluZS1H cmFpbmVkLVNsaWNpbmdfU3RldmVfSm9obi5wZGYNCiANCj4gDQo+PiBUaGVyZSB3YXMgYSBmZXcg Y29uc2lkZXJhdGlvbnMuDQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgIFZULWQgU3BlYyAzLjAgaXMg cHVibGlzaCwgYnV0IG5vIHBsYXRmb3JtIGF2YWlsYWJsZSB0byBzdXBwb3J0IGV2ZW4gUENJZSBk ZXZpY2UNCj4+IG1pZ2h0IGhhdmUgdGhlIGFiaWxpdHkNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqAg RXhjZXB0IEludGVsLCBub3Qgc3VyZSBvdGhlciBuZXR3b3JrIElIVnMgaXMgZ29pbmcgdG8gZGVz aWduIHRoZWlyIGRldmljZSBieSB0aGUNCj4+IG5ldyBzcGVjLg0KPj4gLcKgwqDCoMKgwqDCoMKg wqDCoCB3L28gYXZhaWxhYmxlIHBsYXRmb3JtLCBpdCBvbmx5IHN1cHBvcnRzIHNpbmdsZXRvbiBt ZGV2IGluc3RhbmNlIHBlciBwYXJlbnQNCj4+IGRldmljZQ0KPj4gLcKgwqDCoMKgwqDCoMKgwqDC oCBldmVuIGluIHNpbmdsZXRvbiBtZGV2IHN1cHBvcnQsIGl0IHJlcXVpcmVzIElPTU1VIGF3YXJl IG1lZGlhdGUgZGV2aWNlDQo+PiB3aGljaCBpcyBXSVAgaW4ga2VybmVsDQo+ID4NCj4gWWVzLCBJ IGtub3cgdGhpcyBpcyBuZXcgc3R1ZmYgYW5kIGl0IHdpbGwgbm90IGJlIHVzYWJsZSBhcyBJIGhh dmUgcHJldmlvdXNseSBjb21tZW50ZWQNCj4gYnkgbm93LCBidXQgSSB0aGluayB0aGlzIGlzIGdv aW5nIHRvIGJlIHJlYWxseSBpbXBvcnRhbnQgaW4gdGhlIG5lYXIgZnV0dXJlLiBJdCBhZGRzIGEg bG90DQo+IG9mIGZsZXhpYmlsaXR5IGZvciBjcmVhdGluZyBhZC1ob2MgbmV0IGRldmljZXMgdG8g YmUgdXNlZCBieSBWTXMuDQpbTENdIEZ1bGx5IGFncmVlLg0KIA0KPiBJbiBvdXIgaW5pdGlhbCBj YXNlLCB3ZSBqdXN0IG5lZWQgb25lIG1kZXYgcGVyIHBhcmVudCBkZXZpY2UsIGFuZCB0aGUgSU9N TVUNCj4gbWFwcGluZyB3b3VsZCBiZSBtYW5hZ2VkIGJ5IHRoZSBwYXJlbnQgZGV2aWNlIGFmdGVy IHRoZSBwcm9wZXIgaW9jdGwgY2FsbCBmcm9tDQo+IHVzZXIgc3BhY2UgKE5GUCBQTUQgZm9yIG1l ZGlhdGVkIGRldmljZSkuDQpbTENdIEkgc2VlLCBzbyBlc3NlbnRpYWxseSBpdOKAmXMgc2luZ2xl dG9uIG1kZXYgaW5zdGFuY2UgYmFzZSBvbiBJT01NVSAmIFNSLUlPVg0KcGxhdGZvcm0uIEl0IHJl cXVpcmVzIG1kZXYgYmVpbmcgY2FwYWJsZSB0byB1c2UgcGFyZW50IGRldmljZeKAmSBJT01NVSBk b21haW4sDQp3aGljaCBkb2VzIFdJUC4gVGhlcmXigJlzIG5vIGV4dHJhIHBsYXRmb3JtIG5lZWQg YnkgdGhpcyB1c2FnZSwgaXTigJlzIGdvb2QuDQoNCj4+IA0KPj4gRm9yIHRoZXNlIHJlYXNvbiwg d2UgaG9sZCBvbiB0aGUgdXBzdHJlYW0gZWZmb3J0IG9uIERQREsgc2lkZS4NCj4+IA0KPiBJIHVu ZGVyc3RhbmQuIEhvd2V2ZXIsIEkgdGhpbmsgdGhpcyBzaG91bGQgYmUgZGlzY3Vzc2VkIGFzYXAg YW5kIHRvIGZpZ3VyZSBvdXQgd2hpY2gNCj4gaXMgd2hhdCBpcyBuZWVkZWQuIFdoZW4gaW1wbGVt ZW50aW5nIHRoZSBtZGV2IGJ1cyBmb3IgRFBESyBteXNlbGYsIEkgZm91bmQgdGhlDQo+IG1kZXYg aW50ZXJmYWNlIGlzIHNvIGZsZXhpYmxlIChvciBtYXliZSB1bmRlZmluZWQpLCBpdCBpcyBub3Qg Y2xlYXIgaG93IGl0IHNob3VsZCBiZQ0KPiBkb25lLg0KPiANCj4+IEnigJltIGFjdHVhbGx5IHF1 aXRlIGludGVyZXN0IGluIHlvdXIgdXNlIGNhc2UsIHdoYXTigJlzIHRoZSBiZW5lZml0IHlvdeKA mXJlIGxvb2tpbmcNCj4+IGZvcndhcmQgZm9yIGtlcm5lbCB2ZmlvIG1kZXYuIElmIHlvdSBkb27i gJl0IG1pbmQsIGNvdWxkIHlvdSBzaGFyZSB3aXRoIHVzPw0KPiANCj4gV2UgbmVlZCB0byB1c2Ug dGhlIFBGIGFuZCBWRnMgaW4gdXNlciBzcGFjZSwgdGhpcyBpcyBEUERLLCBhbmQgdGhlIFZGIGNy ZWF0aW9uIGlzIG5vdA0KPiBwb3NzaWJsZSB3aGVuIFBGIGlzIGJvdW5kIHRvIHRoZSBWRklPIGRy aXZlciAodmZpby1wY2kpLiBNdSBpZGVhIGlzIGp1c3QgdG8gY3JlYXRlIGENCj4gbWVkaWF0ZWQg ZGV2aWNlIGZvciBhbGxvd2luZyB0aGlzLCB3aXRoIHRoZSBrZXJuZWwgZHJpdmVyIGhlbHBpbmcg d2l0aCBtbWFwaW5nIHRoZQ0KPiByaWdodCBCQVIgYXJlYXMuIEFmdGVyIHRoYXQsIHRoZSBQTUQg d2lsbCB3b3JrIGFsbW9zdCBhcyBjdXJyZW50IE5GUCBQTUQsIGFsdGhvdWdoDQo+IGNlcnRhaW4g dGhpbmdzIGxpa2UgbGluayB1cC9kb3duIG9yIGdldHRpbmcgZXh0ZW5kZWQgc3RhdHMgd2lsbCBi ZSB0aHJvdWdoIHRoZSBrZXJuZWwNCj4gbmV0ZGV2Lg0KW0xDXSBZZWFoLCBpdCBzZXBhcmF0ZXMg ZGV2aWNlIGNvbnRyb2wgYW5kIHBhY2tldCBJL08sIHdoaWNoIGlzIHRoZSBtb3N0IHN0cmFpZ2h0 DQpmb3J3YXJkIGJlbmVmaXQgaW50cm9kdWNlZCBieSBtZGV2LiBJdOKAmXMgZGVmaW5pdGVseSBh IGdvb2QgdXNhZ2UgYXMgeW91IG1lbnRpb25lZC4NCg0KPj4gDQo+PiBPdXIgaW5pdGlhbCBtaW5p bXVtIGdvYWxzIHRvIERQREsgbmF0aXZlIG1kZXYgc3VwcG9ydCwNCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqAgc2Nhbi9wcm9iZS/igKYga2VybmVsIG1kZXYgYnVzIHN5c2ZzDQo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgIGtlZXAgY29uc2lzdGVudCB2ZmlvIHVhcGkgaW4gRFBESw0KPj4gLcKgwqDCoMKg wqDCoMKgwqDCoCByZXVzZS91bm1vZGlmaWVkIGFueSBleGlzdGluZyBQTUQgcHJldmlvdXMgYnVp bHQgZm9yIHBjaSBidXMNCj4+IA0KPiBUaGlzIGxhc3QgcG9pbnQgc2VlbXMgcXVpdGUgY29tcGxp Y2F0ZWQgaWYgbm90IGltcG9zc2libGUsIGF0IGxlYXN0IGluIG91ciBjYXNlLg0KW0xDXSBUaGF0 4oCZcyBmb3IgY2FzZSBoYXZpbmcgZXhhY3QgdGhlIHNhbWUgZGV2aWNlIGZ1bmN0aW9uIGJ1dCBv bmx5IGJlaW5nIGRpZmZlcmVudCBvbg0KdGhlIGdyYW51bGFyaXR5IChlLmcuIG51bWJlciBvZiBx dWV1ZS1wYWlycykuIEl0IHN1Y2tzIHRvIGhhdmUgYSBkdXBsaWNhdGVkIFBNRCBqdXN0DQpmb3Ig bWRldiBidXMuDQpJdOKAmXMgbm90IHlvdXIgY2FzZSwgd2hpY2ggaXMgZ29vZCB0byBidWlsZCBm cm9tIHNjcmF0Y2ggYSBsaWdodHdlaWdodCBQTUQgYW5kDQpwcmVzZXJ2ZSB0aGUgZGV2aWNlIGNv bnRyb2wgYnkga2VybmVsLg0KDQo+PiANCj4+IFdlIGhhZCBwYXRjaCBzZXQgYmFzZSBvbiBEUERL IDE4LjA1IGFuZCBoYXZlbuKAmXQgcmViYXNlZCB5ZXQgdG8gbWFpbiBzdHJlYW0sDQo+PiB3aGlj aCBpbmNsdWRlcw0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoCBpbnRybyBuZXcgcnRlX21kZXZfYnVz IGZvciBrZXJuZWwgbWRldiBidXMNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqAgaW50cm8gbmV3IHJ0 ZV9tZGV2X2RyaXZlciBmb3Ig4oCYdmZpby1wY2nigJkgbWRldiB0eXBlDQo+PiAoYWxsb3dzIHRv IHJlZ2lzdGVyIG90aGVyIGJ1cyBkcml2ZXIgYWNjb3JkaW5nIHRvIG1kZXYgdHlwZSAtLSDigJhk ZXZpY2VfYXBp4oCZKQ0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoCB3aGl0ZWxpc3QgJiBibGFja2xp c3QgdXVpZCBzdXBwb3J0DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgIGEgcGNpIHZmaW8gY2hhbmdl IHRvIG1hcCByZXNvdXJjZSBhY2NvcmRpbmcgdG8gZ2VuZXJhbCBzeXNmcw0KPj4gDQo+PiANCj4g R29vZC4gSSBoYXZlIGFsbW9zdCBhIG1kZXYgYnVzIGRyaXZlciBpbXBsZW1lbnRlZCBhbmQgYSBz cGVjaWZpYyBORlAgUE1EIGZvciBhDQo+IE5GUCBtZWRpYXRlZCBkZXZpY2UuIEJ1dCBJIGhhdmUg YmVlbiB3b3JraW5nIGZvciB0aGUgc2hha2Ugb2YgcHJvYmluZyB0aGlzIGFzIGFuDQo+IG9wdGlv biBmb3Igb3VyIHB1cnBvc2VzLiBPZiBjb3Vyc2UsIG15IGlkZWEgd2FzIHRvIHdvcmsgb24gYSBm dWxsIG1kZXYgc3VwcG9ydCBmb3INCj4gRFBESyBzbyB0aGF0IHdhcyB0aGUgcmVhc29uIG9mIG15 IGVtYWlsIHRvIHRoZSB0ZWNoYm9hcmQuDQpbTENdIFRoZSBnb2FsIGlzIGZ1bGx5IGFsaWduZWQu IE1kZXYgaXMgbXVjaCBlYXNpZXIgdG8gbWFuYWdlIHRoZSBkZXZpY2UgbGlmZWN5Y2xlLCBpcw0K YWJsZSB0byBzdXBwb3J0IGRpZmZlcmVudCBidXMgbGF5b3V0IChlLmcuIHBjaSwgcGxhdGZvcm0s IGNjdykgYW5kIGV0Yy4gV2XigJlkIGxpa2UgRFBESw0KbWRldiBlbmFibGluZyBwcmVzZXJ2ZSBt b3N0IG9mIHRoZSBiZW5lZml0cy4NCiANCj4gDQo+IEtub3dpbmcgeW91IGhhdmUgYmVlbiB3b3Jr aW5nIG9uIHRoaXMgbG9uZ2VyIHRoYW4gbWUsIGFuZCBsaWtlbHkgaGF2aW5nIGEgbW9yZQ0KPiBj b21wbGV0ZSBpbXBsZW1lbnRhdGlvbiwgSSB3aWxsIG5vdCB0cnkgdG8gZHVwbGljYXRlIHdvcmsg aGVyZSwgYW5kIEkgaG9wZSBJIGNhbg0KPiBjb250cmlidXRlIHRvIHRoZSBmaW5hbCBpbXBsZW1l bnRhdGlvbiBvbmNlIEkgc2VlIHlvdXIgZGVzaWduLg0KW0xDXSBUaGF04oCZcyBncmVhdC4gV2Xi gJlsbCBpbml0aWFsaXplIGEgUkZDLCB5b3VyIGlucHV0IGZyb20gZGlmZmVyZW50IHZpZXcgd291 bGQgYmUNCnJlYWxseSBoZWxwZnVsLCBsb29raW5nIGZvcndhcmQgdG8gdGhlIGNvbGxhYm9yYXRp b24uDQoNClRoYW5rcyENCj4gDQo+IA0KPiBUaGFua3MhDQo+IA0KPiANCj4+IA0KPj4gVGhhbmtz LA0KPj4gU3RldmUNCj4+PiANCj4+PiANCj4+PiBGcm9tOiB0ZWNoYm9hcmQgW21haWx0bzp0ZWNo Ym9hcmQtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEFsZWphbmRybw0KPj4+IEx1Y2Vy bw0KPj4+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSAxNCwgMjAxOSA3OjI5IFBNDQo+Pj4gVG86IHRl Y2hib2FyZEBkcGRrLm9yZw0KPj4+IFN1YmplY3Q6IFtkcGRrLXRlY2hib2FyZF0gQSBuZXcgYnVz IGZvciBtZWRpYXRlZCBkZXZpY2VzDQo+Pj4gDQo+Pj4gSGkgYWxsLA0KPj4+IA0KPj4+IEkgdGhp bmsgdGhlcmUgaXMgbm9uZSB3b3JraW5nIG9uIHN1cHBvcnRpbmcgbWVkaWF0ZWQgZGV2aWNlcyB3 aXRoaW4gRFBESy4gSSBhbQ0KPj4+IHdvcmtpbmcgb24gdGhpcyBmb3Igc29sdmluZyBhIHJlcXVp cmVtZW50IHdlIGhhdmUgaW4gTmV0cm9ub21lIGJ1dCBhcGFydCBmcm9tDQo+Pj4gdGhhdCwgSSB0 aGluayBpdCBpcyBzb21ldGhpbmcgd2UgYXJlIGdvaW5nIHRvIG5lZWQgaW4gRFBESyBzb29uZXIg b3IgbGF0ZXIuDQo+Pj4gDQo+Pj4gQmVjYXVzZSBpdCBpcyBhIHJlYWxseSBuZXcgaW50ZXJmYWNl IGFuZCB0aGUgd2F5IGEgbWVkaWF0ZWQgZGV2aWNlIGNhbiBiZSBjcmVhdGVkIGlzDQo+Pj4gcmVh bGx5IGZsZXhpYmxlLCB0aGUgcHJvcGVyIHdheSB0byBzdXBwb3J0IGl0IHNob3VsZCBiZSBicm9h ZGx5IGRpc2N1c3NlZC4gTXkgcGxhbiBpcw0KPj4+IHRvIHNlbmQgYSBSRkMgd2hlcmUgdGhlIG1k ZXYgYnVzIGlzIGltcGxlbWVudGVkIGFsb25nIHdpdGggYSBuZXcgTmV0cm9ub21lJ3MNCj4+PiBQ TUQgc3VwcG9ydGluZyBOZXRyb25vbWUncyBtZWRpYXRlZCBkZXZpY2VzIGNyZWF0ZWQgYnkgTmV0 cm9ub21lJ3Mga2VybmVsDQo+Pj4gZHJpdmVyLiBIYXZpbmcgYW4gZXhhbXBsZSBvZiBhIG1kZXYg ZGV2aWNlIHdpbGwgaGVscC4NCj4+PiANCj4+PiBUaGUgcmVhc29uIGZvciB0aGlzIGVtYWlsIGlz IHR3b2ZvbGQ6DQo+Pj4gDQo+Pj4gMSkgVG8gYmUgc3VyZSB0aGVyZSBpcyBubyBvdGhlciBwZXJz b24gd29ya2luZyBvbiBzdXBwb3J0aW5nIG1kZXYgaW5zaWRlIHRoZSBEUERLDQo+Pj4gY29tbXVu aXR5LCBqdXN0IGZvciBhdm9pZGluZyBkdXBsaWNhdGUgd29yay4gSSBmb3VuZCBzb21lIHByZXNl bnRhdGlvbnMgZGVzY3JpYmluZw0KPj4+IHRoaXMgaW50ZXJmYWNlIGluIHVzZXJzcGFjZcKgIGJ1 dCBJIGhhdmUgZm91bmQgbm8gcGF0Y2ggcmVsYXRlZCBub3IgUkZDIHJlZ2FyZGluZw0KPj4+IERQ REsuDQo+Pj4gDQo+Pj4gMikgVG8gaW5mb3JtIHRoZSB0ZWNoYm9hcmQgYWJvdXQgbXkgaW50ZW50 aW9ucyBhbmQgdG8gaW50cm9kdWNlIHRoZSBtZGV2IGludGVyZmFjZQ0KPj4+IGZvciB0aG9zZSBu b3QgYXdhcmUgb2YgaXQgeWV0Lg0KPj4+IA0KPj4+IElmIHlvdSBjb25zaWRlciBpdCB3b3VsZCBi ZSBnb29kIHRvIGRpc2N1c3MgdGhpcyBpbiBuZXh0IHRlY2hib2FyZCBtZWV0aW5nLCBpdCB3aWxs IGJlIGENCj4+PiBwbGVhc3VyZSB0byBhdHRlbmQuDQo+Pj4gDQo+Pj4gVGhhbmtzDQo+Pj4gDQo+ Pj4gKCopwqBodHRwczovL2FyY2hpdmUuZm9zZGVtLm9yZy8yMDE4L3NjaGVkdWxlL2V2ZW50L25l dG1kZXYvYXR0YWNobWVudHMvc2xpZGVzLw0KPj4+IDIxNzYvZXhwb3J0L2V2ZW50cy9hdHRhY2ht ZW50cy9uZXRtZGV2L3NsaWRlcy8yMTc2L25ldF9tZGV2X19fZm9zZGVtXzIwMQ0KPj4+IDgucGRm DQo=