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 4DA65A0352; Mon, 4 Nov 2019 15:17:47 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A81C5374E; Mon, 4 Nov 2019 15:17:45 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id CC8DF316B for ; Mon, 4 Nov 2019 15:17:43 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Nov 2019 06:17:41 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,267,1569308400"; d="scan'208";a="376347278" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga005.jf.intel.com with ESMTP; 04 Nov 2019 06:17:37 -0800 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 4 Nov 2019 06:17:37 -0800 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 4 Nov 2019 06:17:36 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.108]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.60]) with mapi id 14.03.0439.000; Mon, 4 Nov 2019 22:17:35 +0800 From: "Wang, Haiyue" To: Ray Kinsella , Thomas Monjalon CC: "dev@dpdk.org" , "Yigit, Ferruh" , 'Damjan Marion' , Jerin Jacob Kollanukkaran , "viacheslavo@mellanox.com" , "stephen@networkplumber.org" , "arybchenko@solarflare.com" Thread-Topic: [dpdk-dev] [PATCH v4 1/4] ethdev: add the API for getting burst mode information Thread-Index: AQHVgy4vnIA7MA5UA0Sl3pLNFwDOY6dqovQAgABMCACAABr4gIAABOkAgABrZQCAAOrKcP//moGAgAC0blD///LTAIAElsuAgAhCRACAACM3gIAAusqAgAABWYCAAAJ+AIAAGG2AgAAKVwCAABFHAIAACt4AgACMWsA= Date: Mon, 4 Nov 2019 14:17:34 +0000 Message-ID: References: <20191015075133.38560-1-haiyue.wang@intel.com> <3333162.RZseXh5CjJ@xps> <932da3d3-34b9-79a4-1a68-fb06056ee93f@ashroe.eu> <2680328.hM31vkk1Ea@xps> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNmQzYThhY2EtOTAxNy00OGUyLTk3MjktYTg1N2Y4Mzc3MTE2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiYWszS0dYRXFoY0VYbDF3VHVRcG5qT2xUa0I1WFdWRkthRXJ5NHFDcTVRZlwvaGhxcVVwNDVOekJSYlFzQ1NvOEwifQ== 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 v4 1/4] ethdev: add the API for getting burst mode information 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSYXkgS2luc2VsbGEgPG1kckBh c2hyb2UuZXU+DQo+IFNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgNCwgMjAxOSAyMTo0OQ0KPiBUbzog VGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0Pg0KPiBDYzogZGV2QGRwZGsub3Jn OyBZaWdpdCwgRmVycnVoIDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgJ0RhbWphbiBNYXJpb24n IDxkbWFyaW9uQG1lLmNvbT47IFdhbmcsDQo+IEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29t PjsgSmVyaW4gSmFjb2IgS29sbGFudWtrYXJhbiA8amVyaW5qQG1hcnZlbGwuY29tPjsNCj4gdmlh Y2hlc2xhdm9AbWVsbGFub3guY29tOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgYXJ5YmNo ZW5rb0Bzb2xhcmZsYXJlLmNvbQ0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjQg MS80XSBldGhkZXY6IGFkZCB0aGUgQVBJIGZvciBnZXR0aW5nIGJ1cnN0IG1vZGUgaW5mb3JtYXRp b24NCj4gDQo+IA0KPiANCj4gT24gMDQvMTEvMjAxOSAxMzowOSwgVGhvbWFzIE1vbmphbG9uIHdy b3RlOg0KPiA+IDA0LzExLzIwMTkgMTM6MDcsIFJheSBLaW5zZWxsYToNCj4gPj4NCj4gPj4gT24g MDQvMTEvMjAxOSAxMTozMCwgVGhvbWFzIE1vbmphbG9uIHdyb3RlOg0KPiA+Pj4gMDQvMTEvMjAx OSAxMTowMywgUmF5IEtpbnNlbGxhOg0KPiA+Pj4+IE9uIDA0LzExLzIwMTkgMDk6NTQsIFRob21h cyBNb25qYWxvbiB3cm90ZToNCj4gPj4+Pj4gMDQvMTEvMjAxOSAxMDo0OSwgUmF5IEtpbnNlbGxh Og0KPiA+Pj4+Pj4gT24gMDMvMTEvMjAxOSAyMjo0MSwgVGhvbWFzIE1vbmphbG9uIHdyb3RlOg0K PiA+Pj4+Pj4+IDAzLzExLzIwMTkgMjE6MzUsIFJheSBLaW5zZWxsYToNCj4gPj4+Pj4+Pj4gT24g MjkvMTAvMjAxOSAxNDoyNywgRmVycnVoIFlpZ2l0IHdyb3RlOg0KPiA+Pj4+Pj4+Pj4gT24gMTAv MjYvMjAxOSA1OjIzIFBNLCBUaG9tYXMgTW9uamFsb24gd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4gMjYv MTAvMjAxOSAxMToyMywgV2FuZywgSGFpeXVlOg0KPiA+Pj4+Pj4+Pj4+PiBGcm9tOiBUaG9tYXMg TW9uamFsb24gW21haWx0bzp0aG9tYXNAbW9uamFsb24ubmV0XQ0KPiA+Pj4+Pj4+Pj4+Pj4gMjYv MTAvMjAxOSAwNjo0MCwgV2FuZywgSGFpeXVlOg0KPiA+Pj4+Pj4+Pj4+Pj4+IEZyb206IFRob21h cyBNb25qYWxvbiBbbWFpbHRvOnRob21hc0Btb25qYWxvbi5uZXRdDQo+ID4+Pj4+Pj4+Pj4+Pj4+ IDI1LzEwLzIwMTkgMTg6MDIsIEplcmluIEphY29iOg0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4gT24gRnJp LCBPY3QgMjUsIDIwMTkgYXQgOToxNSBQTSBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxv bi5uZXQ+IHdyb3RlOg0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+IDI1LzEwLzIwMTkgMTY6MDgsIEZlcnJ1 aCBZaWdpdDoNCj4gPj4+Pj4+Pj4+Pj4+Pj4+Pj4gT24gMTAvMjUvMjAxOSAxMDozNiBBTSwgVGhv bWFzIE1vbmphbG9uIHdyb3RlOg0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gMTUvMTAvMjAxOSAwOTo1 MSwgSGFpeXVlIFdhbmc6DQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gU29tZSBQTURzIGhhdmUgbW9y ZSB0aGFuIG9uZSBSWC9UWCBidXJzdCBwYXRocywgYWRkIHRoZSBldGhkZXYgQVBJDQo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4+Pj4gdGhhdCBhbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gcmV0cmlldmUgdGhl IG1vZGUgaW5mb3JtYXRpb24gYWJvdXQNCj4gPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiBSeC9UeCBwYWNr ZXQgYnVyc3Qgc3VjaCBhcyBTY2FsYXIgb3IgVmVjdG9yLCBhbmQgVmVjdG9yIHRlY2hub2xvZ3kN Cj4gPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiBsaWtlIEFWWDIuDQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gSSBtaXNzZWQgdGhpcyBwYXRjaC4gSSBhbmQgQW5kcmV3LCBt YWludGFpbmVycyBvZiBldGhkZXYsIHdlcmUgbm90IENDJ2VkLg0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ Pj4gRmVycnVoLCBJIHdvdWxkIGV4cGVjdCB0byBiZSBDYydlZCBhbmQvb3IgZ2V0IGEgbm90aWZp Y2F0aW9uIGJlZm9yZSBtZXJnaW5nLg0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+PiBJdCBoYXMgYmVlbiBkaXNjdXNzZWQgaW4gdGhlIG1haWwgbGlzdCBhbmQgd2VudCB0 aHJvdWdoIG11bHRpcGxlIGRpc2N1c3Npb25zLA0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+PiBwYXRjaCBp cyBvdXQgc2luY2UgdGhlIEF1Z3VzdCwgKzEgdG8gY2MgYWxsIG1haW50YWluZXJzIEkgbWlzc2Vk IHRoYXQgcGFydCwNCj4gPj4+Pj4+Pj4+Pj4+Pj4+Pj4gYnV0IHdoZW4gdGhlIHBhdGNoIGlzIHJl dmlld2VkIGFuZCB0aGVyZSBpcyBubyBvYmplY3Rpb24sIHdoeSBibG9jayB0aGUgbWVyZ2U/DQo+ ID4+Pj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBJJ20gbm90IHNheWluZyBibG9j a2luZyB0aGUgbWVyZ2UuDQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gTXkgYmFkIGlzIHRoYXQgSSBtaXNz ZWQgdGhlIHBhdGNoIGFuZCBJIGFtIGFza2luZyBmb3IgaGVscCB3aXRoIGEgbm90aWZpY2F0aW9u DQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gaW4gdGhpcyBjYXNlLiBTYW1lIGZvciBBbmRyZXcgSSBndWVz cy4NCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBOb3RlOiBpdCBpcyBtZXJnZWQgaW4gbWFzdGVyIGFuZCBJ IGFtIGxvb2tpbmcgdG8gaW1wcm92ZSB0aGlzIGZlYXR1cmUuDQo+ID4+Pj4+Pj4+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiArICogRXRo ZXJuZXQgZGV2aWNlIFJYL1RYIHF1ZXVlIHBhY2tldCBidXJzdCBtb2RlIGluZm9ybWF0aW9uIHN0 cnVjdHVyZS4NCj4gPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiArICogVXNlZCB0byByZXRyaWV2ZSBpbmZv cm1hdGlvbiBhYm91dCBwYWNrZXQgYnVyc3QgbW9kZSBzZXR0aW5nLg0KPiA+Pj4+Pj4+Pj4+Pj4+ Pj4+Pj4+ICsgKi8NCj4gPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiArc3RydWN0IHJ0ZV9ldGhfYnVyc3Rf bW9kZSB7DQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAgdWludDY0X3Qgb3B0aW9uczsNCj4gPj4+ Pj4+Pj4+Pj4+Pj4+Pj4+PiArfTsNCj4gPj4+Pj4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+ Pj4+Pj4+PiBXaHkgYSBzdHJ1Y3QgZm9yIGFuIGludGVnZXI/DQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4+IEFnYWluIGJ5IGEgcmVxdWVzdCBmcm9tIG1lLCB0byBub3Qg bmVlZCB0byBicmVhayB0aGUgQVBJIGlmIHdlIG5lZWQgdG8gYWRkIG1vcmUNCj4gPj4+Pj4+Pj4+ Pj4+Pj4+Pj4gdGhpbmcgaW4gdGhlIGZ1dHVyZS4NCj4gPj4+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4+Pj4+Pj4+IEkgd291bGQgcmVwbGFjZSBpdCB3aXRoIGEgc3RyaW5nLiBUaGlzIGlzIHRo ZSBtb3N0IGZsZXhpYmxlIEFQSS4NCj4gPj4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+ PiBJTU8sIFByb2JhYmx5LCBiZXN0IG9mIGJvdGggd29ybGRzIG1ha2UgYSBnb29kIG9wdGlvbiBo ZXJlLA0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4gYXMgSGFpeXVlIHN1Z2dlc3RlZCBpZiB3ZSBoYXZlIGFu IGFkZGl0aW9uYWwgZGV2X3NwZWNpZmljWzFdIGluIHN0cnVjdHVyZS4NCj4gPj4+Pj4+Pj4+Pj4+ Pj4+IGFuZCB3aGVuIGEgcGFzcyB0byB0aGUgYXBwbGljYXRpb24sIGxldCBjb21tb24gY29kZSBt YWtlIGZpbmFsIHN0cmluZyBhcw0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4gKG9wdGlvbnMgZmxhZ3MgdG8g c3RyaW5nICsgZGV2X3NwZWNpZmljKQ0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+ Pj4+IG9wdGlvbnMgZmxhZyBjYW4gYmUgemVybyBpZiBQTUQgZG9lcyBub3QgaGF2ZSBhbnkgZ2Vu ZXJpYyBmbGFncyBub3INCj4gPj4+Pj4+Pj4+Pj4+Pj4+IGludGVyZXN0ZWQgaW4gc3VjaCBhIHNj aGVtZS4NCj4gPj4+Pj4+Pj4+Pj4+Pj4+IEdlbmVyaWMgZmxhZ3Mgd2lsbCBoZWxwIGF0IGxlYXN0 IHRvIGhhdmUgc29tZSBjb21tb24gY29kZS4NCj4gPj4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ Pj4+Pj4+PiBbMV0NCj4gPj4+Pj4+Pj4+Pj4+Pj4+IHN0cnVjdCBydGVfZXRoX2J1cnN0X21vZGUg ew0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4gICAgICAgICB1aW50NjRfdCBvcHRpb25zOw0KPiA+Pj4+Pj4+ Pj4+Pj4+Pj4gICAgICAgICBjaGFyIGRldl9zcGVjaWZpY1sxMjhdOyAvKiBQTUQgaGFzIHNwZWNp ZmljIGJ1cnN0IG1vZGUgaW5mb3JtYXRpb24gKi8NCj4gPj4+Pj4+Pj4+Pj4+Pj4+IH07DQo+ID4+ Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IEkgcmVhbGx5IGRvbid0IHNlZSBob3cgd2Ug Y2FuIGhhdmUgZ2VuZXJpYyBmbGFncy4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gVGhlIGZsYWdzIHdoaWNo IGFyZSBwcm9wb3NlZCBhcmUganVzdCBtYXRjaGluZw0KPiA+Pj4+Pj4+Pj4+Pj4+PiB0aGUgZnVu Y3Rpb25zIGltcGxlbWVudGVkIGluIEludGVsIFBNRHMuDQo+ID4+Pj4+Pj4+Pj4+Pj4+IEFuZCB0 aGlzIGlzIGEgY29tcGxpY2F0ZSBzb2x1dGlvbi4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gV2h5IG5vdCBq dXN0IHJldHVybmluZyBhIG5hbWUgZm9yIHRoZSBzZWxlY3RlZCBSeC9UeCBtb2RlPw0KPiA+Pj4+ Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4gSW50ZWwgUE1EcyB1c2UgdGhlICpnZW5lcmljKiBt ZXRob2RzIGxpa2UgeDg2IFNTRSwgQVZYMiwgQVJNIE5FT04sIFBQQyBBTFRJVkVDLA0KPiA+Pj4+ Pj4+Pj4+Pj4+ICdkZXYtPmRhdGEtPnNjYXR0ZXJlZF9yeCcgZXRjIGZvciB0aGUgdGFyZ2V0IDog IkRQREsgaXMgdGhlIERhdGEgUGxhbmUgRGV2ZWxvcG1lbnQgS2l0DQo+ID4+Pj4+Pj4+Pj4+Pj4g dGhhdCBjb25zaXN0cyBvZiBsaWJyYXJpZXMgdG8gYWNjZWxlcmF0ZSBwYWNrZXQgcHJvY2Vzc2lu ZyB3b3JrbG9hZHMgcnVubmluZyBvbiBhIHdpZGUNCj4gPj4+Pj4+Pj4+Pj4+PiB2YXJpZXR5IG9m IENQVSBhcmNoaXRlY3R1cmVzLiINCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBIb3cg UlRFX0VUSF9CVVJTVF9TQ0FUVEVSRUQgYW5kIFJURV9FVEhfQlVSU1RfQlVMS19BTExPQyBhcmUg Z2VuZXJpYz8NCj4gPj4+Pj4+Pj4+Pj4+IFRoZXkganVzdCBtYXRjaCBzb21lIGZlYXR1cmVzIG9m IHRoZSBJbnRlbCBQTURzLg0KPiA+Pj4+Pj4+Pj4+Pj4gV2h5IG5vdCBleHBvc2luZyBvdGhlciBv cHRpbWl6YXRpb25zIG9mIHRoZSBSeC9UeCBpbXBsZW1lbnRhdGlvbnM/DQo+ID4+Pj4+Pj4+Pj4+ PiBZb3UgdG90YWxseSBtaXNzZWQgdGhlIHBvaW50IG9mIGdlbmVyaWMgYnVyc3QgbW9kZSBkZXNj cmlwdGlvbi4NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4gSWYgdW5kZXJzdGFuZCB0 aGVzZSBuZXcgZXhwZXJpbWVudGFsIEFQSXMgZnJvbSBhYm92ZSwgdGhlbiBiaXQgb3B0aW9ucyBp cyB0aGUgYmVzdCwNCj4gPj4+Pj4+Pj4+Pj4+PiBhbmQgd2UgZGlkbid0IGludmVudCBuZXcgd29y ZHMgdG8gZGVzY3JpYmUgdGhlbSwganVzdCBmcm9tIHRoZSBDUFUgJiBvdGhlciAqZ2VuZXJpYyoN Cj4gPj4+Pj4+Pj4+Pj4+PiB0ZWNobm9sb2d5LiBBbmQgdGhlIGFwcGxpY2F0aW9uIGNhbiBsb29w IHRvIGNoZWNrIHdoaWNoIGtpbmQgb2YgYnVyc3QgaXMgcnVubmluZyBieQ0KPiA+Pj4+Pj4+Pj4+ Pj4+IGp1c3Qgc2ltcGxlIGJpdCB0ZXN0Lg0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+ Pj4gSWYgUE1EcyBtaXNzZWQgdGhlc2UsIHRoZXkgY2FuIHVwZGF0ZSB0aGVtIGluIGZ1dHVyZSBy b2FkbWFwcyB0byBlbmhhbmNlIHRoZWlyIFBNRHMsDQo+ID4+Pj4+Pj4+Pj4+Pj4gbGlrZSBNTFg1 IHN1cHBvcnRzIEFSTSBORU9OLCB4ODYgU1NFLg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+ Pj4+IEkgaGF2ZSBubyB3b3JkIQ0KPiA+Pj4+Pj4+Pj4+Pj4gWW91IHJlYWxseSB0aGluayBvdGhl ciBQTURzIHNob3VsZCBsZWFybiBmcm9tIEludGVsIGhvdyB0byAiZW5oYW5jZSIgdGhlaXIgUE1E Pw0KPiA+Pj4+Pj4+Pj4+Pj4gWW91IHRhbGsgYWJvdXQgbWx4NSwgZGlkIHlvdSBsb29rIGF0IGl0 cyBjb2RlPyBEaWQgeW91IHNlZSB0aGUgYnVyc3QgbW9kZXMNCj4gPj4+Pj4+Pj4+Pj4+IGRlcGVu ZGluZyBvbiB3aGljaCBzcGVjaWZpYyBoYXJkd2FyZSBwYXRoIGlzIHVzZWQgKE1QUlEsIEVNUFcs IGlubGluZSk/DQo+ID4+Pj4+Pj4+Pj4+PiBPciBkZXBlbmRpbmcgb24gd2hpY2ggb2ZmbG9hZHMg YXJlIGhhbmRsZWQ/DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gQWdhaW4sIHRoZSBp bnN0cnVjdGlvbiBzZXQgdXNlZCBieSB0aGUgZnVuY3Rpb24gaXMgYSBzbWFsbCBwYXJ0DQo+ID4+ Pj4+Pj4+Pj4+PiBvZiB0aGUgYnVyc3QgbW9kZSBvcHRpbWl6YXRpb24uDQo+ID4+Pj4+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+Pj4+Pj4gU28geW91IGRpZCBub3QgcmVwbHkgdG8gbXkgcXVlc3Rpb246DQo+ ID4+Pj4+Pj4+Pj4+PiBXaHkgbm90IGp1c3QgcmV0dXJuaW5nIGEgbmFtZSBmb3IgdGhlIHNlbGVj dGVkIFJ4L1R4IG1vZGU/DQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IEluIGZhY3QsIFJG QyB2MS92MiByZXR1cm5zIHRoZSAqbmFtZSosIGJ1dCB0aGUgKm5hbWUqIGlzIGhhcmQgZm9yDQo+ ID4+Pj4+Pj4+Pj4+IGFwcGxpY2F0aW9uIHRvIGRvIGZ1cnRoZXIgcHJvY2Vzc2luZywgc3RyY21w LCBzdHJzdHIgPyBOb3Qgc28gbmljZQ0KPiA+Pj4+Pj4+Pj4+PiBmb3IgQyBjb2RlLCBhbmQgaXQg aXMgbm90IHNvIHN0YW5kYXJkLCBTbyBzd2l0Y2ggaXQgdG8gYml0IGRlZmluaXRpb24uDQo+ID4+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiBBZ2FpbiwgcGxlYXNlIGFuc3dlciBteSBxdWVzdGlvbjog d2h5IGRvIHlvdSBuZWVkIGl0Pw0KPiA+Pj4+Pj4+Pj4+IEkgdGhpbmsgaXQgaXMganVzdCBpbmZv cm1hdGl2ZSwgdGhhdCdzIHdoeSBhIHN0cmluZyBzaG91bGQgYmUgZW5vdWdoLg0KPiA+Pj4+Pj4+ Pj4+IEkgYW0gY2xlYXJseSBhZ2FpbnN0IHRoZSBiaXRtYXAgYmVjYXVzZSBpdCBpcyB3YXkgdG9v IG11Y2ggcmVzdHJpY3RpdmUuDQo+ID4+Pj4+Pj4+Pj4gSSBkaXNhZ3JlZSB0aGF0IGtub3dpbmcg aXQgaXMgdXNpbmcgQVZYMiBvciBBVlg1MTIgaXMgc28gaW50ZXJlc3RpbmcuDQo+ID4+Pj4+Pj4+ Pj4gV2hhdCB5b3Ugd291bGQgbGlrZSB0byBrbm93IGlzIHdoZXRoZXIgaXQgaXMgcHJvY2Vzc2lu ZyBwYWNrZXRzIDQgYnkgNCwNCj4gPj4+Pj4+Pj4+PiBmb3IgaW5zdGFuY2UsIG9yIHRvIGtub3cg d2hpY2ggb2ZmbG9hZCBpcyBzdXBwb3J0ZWQsIG9yIHdoYXQgaGFyZHdhcmUgdHJpY2sNCj4gPj4+ Pj4+Pj4+PiBpcyB1c2VkIGluIHRoZSBkYXRhcGF0aCBkZXNpZ24uDQo+ID4+Pj4+Pj4+Pj4gVGhl cmUgYXJlIHNvIG1hbnkgb3B0aW9ucyBpbiBhIGRhdGFwYXRoIGRlc2lnbiB0aGF0IGl0IGNhbm5v dCBiZQ0KPiA+Pj4+Pj4+Pj4+IHJlcHJlc2VudGVkIHdpdGggYSBiaXRtYXAuIEFuZCBpdCBtYWtl cyBubyBzZW5zZSB0byBoYXZlIHNvbWUgZGVzaWduDQo+ID4+Pj4+Pj4+Pj4gY3JpdGVyaWFzIG1v cmUgaW1wb3J0YW50IHRoYW4gb3RoZXJzLg0KPiA+Pj4+Pj4+Pj4+IEkgQ2MgYW4gSW50ZWwgYXJj aGl0ZWN0IChFZHdpbikgd2hvIGNvdWxkIGV4cGxhaW4geW91IGhvdyBtdWNoDQo+ID4+Pj4+Pj4+ Pj4gYSBkYXRhcGF0aCBkZXNpZ24gaXMgbW9yZSBjb21wbGljYXRlIHRoYW4ganVzdCB1c2luZyBB VlggaW5zdHJ1Y3Rpb25zLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IEFzIEkgdW5kZXJzdGFu ZCB0aGlzIGlzIHRvIGxldCBhcHBsaWNhdGlvbnMgdG8gZ2l2ZSBpbmZvcm1lZCBkZWNpc2lvbiBi YXNlZCBvbg0KPiA+Pj4+Pj4+Pj4gd2hhdCB2ZWN0b3JpemF0aW9uIGlzIHVzZWQgaW4gdGhlIGRy aXZlciwgY3VycmVudGx5IHRoaXMgaXMgbm90IGtub3cgYnkgdGhlDQo+ID4+Pj4+Pj4+PiBhcHBs aWNhdGlvbi4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBBbmQgYXMgcHJldmlvdXNseSByZXBs aWVkLCB0aGUgbWFpbiB0YXJnZXQgb2YgdGhlIEFQSSBpcyB0byBkZWZpbmUgdGhlIHZlY3Rvcg0K PiA+Pj4+Pj4+Pj4gcGF0aCwgbm90IGFsbCBvcHRpbWl6YXRpb25zLCBzbyB0aGUgbnVtYmVyIGlz IGxpbWl0ZWQuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBObyENCj4gPj4+Pj4+PiBUaGUgbmFtZSBv ZiB0aGlzIEFQSSBpcyAiYnVyc3QgbW9kZSBpbmZvcm1hdGlvbiIsDQo+ID4+Pj4+Pj4gbm90ICJ2 ZWN0b3IgaW5zdHJ1Y3Rpb25zIHVzZWQiLg0KPiA+Pj4+Pj4+IEkgdGhpbmsgdGhlIG1haW4gZXJy b3IgaXMgdGhhdCBpbiBJbnRlbCBQTURzLA0KPiA+Pj4+Pj4+IGVhY2ggUngvVHggZnVuY3Rpb24g dXNlIGRpZmZlcmVudCB2ZWN0b3IgaW5zdHJ1Y3Rpb25zLg0KPiA+Pj4+Pj4+IFNvIHlvdSBnZW5l cmFsaXplIHRoYXQga25vd2luZyB0aGUgdmVjdG9ycyBpbnN0cnVjdGlvbnMNCj4gPj4+Pj4+PiB3 aWxsIGdpdmUgeW91IGEgZ29vZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVyZm9ybWFuY2UuDQo+ ID4+Pj4+Pj4gQnV0IHRoaXMgaXMgZ2VuZXJhbGx5IHdyb25nIQ0KPiA+Pj4+Pj4+IFRoZSByaWdo dCBsZXZlbCBvZiBpbmZvcyBpcyBtdWNoIG1vcmUgY29tcGxleC4NCj4gPj4+Pj4+DQo+ID4+Pj4+ PiBJIGRvbid0IHRoaW5rIGFueW9uZSB3YXMgc3VnZ2VzdGluZyBsaW1pdGluZyBpdCB0byBwdXJl bHkgZGVzY3JpYmluZyBQTUQgb3B0aW1pemF0aW9uDQo+ID4+Pj4+PiB3aXRoIHZlY3RvciBpbnN0 cnVjdGlvbnMuIElmIHRoZXJlIGFyZSBvdGhlciBjb21tb25hbGl0aWVzIGxldCdzIGRlc2NyaWJl IHRob3NlIGFsc28uDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gVmVjdG9yaXphdGlvbiB3YXMgdGhvdWdo dCB0byBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgLSBJTUhPIGl0IGlzLg0KPiA+Pj4+Pj4NCj4g Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gVGhlcmUgYXJlIG1hbnkgb3B0aW1pemF0aW9uIGluIHRoZSBk YXRhIHBhdGgsIEkgYWdyZWUgd2UgbWF5IG5vdCByZXByZXNlbnQgYWxsDQo+ID4+Pj4+Pj4+PiBv ZiB0aGVtLCBhbmQgYWdyZWVkIGV4aXN0aW5nIGVudW0gaGF2aW5nICJSVEVfRVRIX0JVUlNUX0JV TEtfQUxMT0MiIGFuZCBzaW1pbGFyDQo+ID4+Pj4+Pj4+PiBjYXVzaW5nIHRoaXMgY29uZnVzaW9u LCBwZXJoYXBzIHdlIGNhbiByZW1vdmUgdGhlbS4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBB bmQgaWYgdGhlIHJlcXVpcmVtZW50IGZyb20gdGhlIGFwcGxpY2F0aW9uIGlzIGp1c3QgaW5mb3Jt YXRpdmUsIEkgd291bGQgYWdyZWUNCj4gPj4+Pj4+Pj4+IHRoYXQgZnJlZSB0ZXh0IHN0cmluZyB3 aWxsIGJlIGJldHRlciwgcmlnaHQgbm93ICdydGVfZXRoX3J4L3R4X2J1cnN0X21vZGVfZ2V0KCkn DQo+ID4+Pj4+Pj4+PiBpcyB0aGUgbWFpbiBBUEkgdG8gcHJvdmlkZSB0aGUgaW5mb3JtYXRpb24g YW5kDQo+ID4+Pj4+Pj4+PiAncnRlX2V0aF9idXJzdF9tb2RlX29wdGlvbl9uYW1lKCknIGlzIGEg aGVscGVyIGZvciBhcHBsaWNhdGlvbi9kcml2ZXIgdG8gbG9nDQo+ID4+Pj4+Pj4+PiB0aGlzIGlu Zm9ybWF0aW9uLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gV2VsbCBsb29r IHdlIGhhdmUgYSBnZW5lcmFsIGRlZmljaXQgb2YgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBpcyBo YXBwZW5pbmcgdW5kZXINCj4gPj4+Pj4+Pj4gdGhlIGNvdmVycyBpbiBEUERLLiBUaGUgZW5kIHVz ZXIgbWF5IGdldCB3aWxkbHkgZGlmZmVyZW50IHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcw0K PiA+Pj4+Pj4+PiBiYXNlZCBvbiB0aGUgRFBESyBjb25maWd1cmF0aW9uLiBTaW1wbGUgZXhhbXBs ZSBpcyB1c2luZyBmbG93IGRpcmVjdG9yIGNhdXNlcyB0aGUgaTQwZQ0KPiA+Pj4+Pj4+PiBQTUQg dG8gc3dpdGNoIHRvIHVzaW5nIGEgc2NhbGFyIGNvZGUgcGF0aCwgYW5kIHBlcmZvcm1hbmNlIG1h eSBhcyBtdWNoIGFzIGhhbGYuDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFRoaXMgY2FuIGNhdXNl IG5vIGVuZCBvZiBoZWFkLXNjcmF0Y2hpbmcgaW4gY29uc3VtaW5nIHByb2R1Y3RzLCBJIGhhdmUg ZG9uZSBzb21lDQo+ID4+Pj4+Pj4+IG9mIHRoYXQgaGVhZCBzY3JhdGNoaW5nIG15c2VsZiwgaXQg aXMgYSB1c2FiaWxpdHkgbmlnaHRtYXJlLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBGRC5pbyBW UFAgdHJpZXMgdG8gd29yayBhcm91bmQgdGhpcyBieSBtaW5pbmcgdGhlIGNhbGwgc3RhY2ssIHRv IGdpdmUgdGhlIHVzZXIgX3NvbWVfDQo+ID4+Pj4+Pj4+IGtpbmQgb2YgaW5mb3JtYXRpb24gYWJv dXQgd2hhdCBpcyBoYXBwZW5pbmcuIFRoZXNlIGtpbmQgb2YgaGVyb2ljcyBzaG91bGQgbm90IGJl IG5lY2Vzc2FyeS4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gRm9yIGV4YWN0bHkgdGhlIHNhbWUg cmVhc29ucyBhcyB0ZWxlbWV0cnksIHdlIHNob3VsZCBiZSB0cnlpbmcgdG8gZ2l2ZSB0aGUgdXNl cnMgYXMgbXVjaA0KPiA+Pj4+Pj4+PiBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSwgaW4gYXMgc3Rh bmRhcmQgYXMgZm9ybWF0IGFzIHBvc3NpYmxlLiBPdGhlcndpc2UgRFBESw0KPiA+Pj4+Pj4+PiBi ZWNvbWVzIGFyY2FuZSBsZWF2aW5nIHRoZSB1c2VyIHJ1bm5pbmcgZ2RiIHRvIHVuZGVyc3RhbmQg d2hhdCBpcyBnb2luZyBvbiwgYXMgSQ0KPiA+Pj4+Pj4+PiBmcmVxdWVudGx5IGRvLg0KPiA+Pj4+ Pj4+DQo+ID4+Pj4+Pj4gSSBhZ3JlZSB3ZSBtdXN0IHByb3ZpZGUgYSBjbHVlIHRvIHVuZGVyc3Rh bmQgdGhlIHBlcmZvcm1hbmNlIHJlc3VsdC4NCj4gPj4+Pj4+PiBBcyBTdGVwaGVuIGNvbW1lbnRl ZCBhdCB0aGUgdmVyeSBiZWdpbm5pbmcsIGEgbG9nIGlzIGVub3VnaCBmb3Igc3VjaCBkZWJ1Zy4N Cj4gPj4+Pj4+PiBCdXQgaGlzIGNvbW1lbnQgd2FzIGlnbm9yZWQuDQo+ID4+Pj4+Pg0KPiA+Pj4+ Pj4gRG8gd2UgZXhwZWN0IGFwcGxpY2F0aW9ucyBidWlsdCBvbiBEUERLIHRvIGhhdmUgdG8gZ3Jl cCBpdCdzIGxvZyB0byBtYWtlIHN1Y2ggZGlzY292ZXJpZXM/DQo+ID4+Pj4+PiBJdCdzIHZlcnkg YnJpdHRsZSBhbmQgYXJjYW5lIHdheSB0byBwcm92aWRlIGluZm9ybWF0aW9uLCBpZiBub3RoaW5n IGVsc2UuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+IFlvdSB3YW50ZWQgYW4gQVBJLCBmaW5lLg0KPiA+ Pj4+Pj4+IEkgYW0gT0sgdG8gaGF2ZSBhbiBBUEkgdG8gcmVxdWVzdCBpbmZvcyB3aGljaCBhcmUg YWxzbyBpbiBsb2dzLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEkgd291bGQgcG9pbnQgb3V0IHRoYXQg YW4gQVBJIHRvIHF1ZXJ5IG1ldGEtZGF0YSBpcyBjb21tb24gcHJhY3RpY2UgZWxzZSB3aGVyZS4N Cj4gPj4+Pj4+IEdTdHJlYW1lciBHc3RDYXBzIGFuZCBMaW51eCBTeXNmcyBhcmUgdGhlIGNsb3Nl c3QgZXhhbXBsZSBJIGNhbiB0aGluayBvZi4NCj4gPj4+Pj4+DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4gRmluYWxseSwgYWdhaW4gZm9yIHRoZSBzYW1lIHJlYXNvbnMgYXMgdGVsZW1ldHJ5LCBJIHdv dWxkIHNheSB0aGF0IG1hY2hpbmUgcmVhZGFibGUgaXMgdGhlDQo+ID4+Pj4+Pj4+IGlkZWFsIGhl cmUuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBJIGRpc2FncmVlIGhlcmUuIFRoZXJlIGlzIG5vIG5l ZWQgdG8gbWFrZSB0aGlzIGluZm8gbWFjaGluZSByZWFkYWJsZS4NCj4gPj4+Pj4+PiBXZSB3YW50 IGEgY2x1ZSBhYm91dCB0aGUgb3B0aW1pemF0aW9ucyB3aGljaCBhcmUgYWxsIGFib3V0IGNyZWF0 aXZpdHkuDQo+ID4+Pj4+Pj4gQW5kIHdlIGNhbm5vdCBtYWtlIGNyZWF0aXZpdHkgb2YgZGV2ZWxv cGVycyAibWFjaGluZSByZWFkYWJsZSIuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSSBhbSBtb3JlIGNv bmNlcm5lZCBhYm91dCB0aGUgY3JlYXRpdml0eSBpbiBob3cgZGV2ZWxvcGVycyBkZXNjcmliZSBv cHRpbWl6YXRpb25zLg0KPiA+Pj4+Pj4gSWYgdGhlcmUgaXMgbm8gc3RhbmRhcmRpemF0aW9uIG9m IHN0cmluZ3MgKG9yIGJpdHMpLCB0aGUgQVBJIHdpbGwgYmUgY2hhbGxlbmdpbmcgdG8gdXNlLg0K PiA+Pj4+Pg0KPiA+Pj4+PiBObyBpdCB3b24ndCBiZSBjaGFsbGVuZ2luZyBiZWNhdXNlIGl0IHdp bGwgYmUganVzdCBhIHN0cmluZyB0byBwcmludC4NCj4gPj4+Pg0KPiA+Pj4+IFdlbGwgdGhlIGNo YWxsZW5nZSBpcyBnZXR0aW5nIGV2ZXJ5b25lIHRvIHVzZSB0aGUgc2FtZSBzZXQgb2Ygc3RyaW5n cywNCj4gPj4+PiBzdWNoIHRoYXQgd2hhdCBpcyByZXR1cm5lZCBieSB0aGUgQVBJIGhhcyBjb21t b24gbWVhbmluZy4NCj4gPj4+Pg0KPiA+Pj4+IEkgYW0gZmluZSB3aXRoIHN0cmluZ3MuDQo+ID4+ Pj4gU28gbG9uZyBhcyB3ZSBoYXZlIGEgbWV0aG9kIG9mIGVuY291cmFnaW5nIGZvbGtzIHRvIHVz ZSBhIHN0YW5kYXJkIHNldCB3ZXJlIHBvc3NpYmxlLg0KPiA+Pj4NCj4gPj4+IEkgZG9uJ3QgdW5k ZXJzdGFuZCB3aHkgeW91IGluc2lzdCBvbiBzdGFuZGFyZGl6aW5nLg0KPiA+Pj4gRXZlcnkgZHJp dmVycyBhcmUgZGlmZmVyZW50Lg0KPiA+Pj4gVGhlIHJvdXRpbmUgbmFtZXMgd2lsbCBoYXZlIGEg c2Vuc2Ugb25seSBpbiB0aGUgY29udGV4dCBvZiB0aGUgZHJpdmVyLg0KPiA+Pg0KPiA+PiBUaGUg bW9yZSBkaXZlcnNpdHkgaW4gZGVzY3JpcHRpb24sIHRoZSBtb3JlIHRoZSB1c2VyIGlzIHJlYWNo aW5nIGZvciBkb2N1bWVudGF0aW9uLg0KPiA+PiBJZiB0aGUgdXNlciBpcyBsdWNreSBlbm91Z2gg dGhhdCBkZXNjcmlwdGlvbiBoYXMgZG9jdW1lbnRhdGlvbi4NCj4gPg0KPiA+IEkgd291bGQgZ28g ZXZlbiBmdXJ0aGVyOg0KPiA+IFRoZSBkb2N1bWVudGF0aW9uIHdpbGwgbm90IGV4cGxhaW4gZWFj aCBSeC9UeCByb3V0aW5lLg0KPiA+IFRoZSB1c2VyIGNhbiBoYXZlIHNvbWUgZ3Vlc3MsIGJ1dCB0 aGUgbWFpbiBpbmZvcm1hdGlvbiBpcyB0byBzZWUNCj4gPiB0aGF0IHRoZSByb3V0aW5lIGNoYW5n ZWQgZnJvbSBvbmUgcnVuIHRvIHRoZSBvdGhlciwgc28gaGUgY2FuIGV4cGVjdA0KPiA+IGEgY2hh bmdlIGluIHRoZSBwZXJmb3JtYW5jZSByZXN1bHQuDQo+ID4gQW5kIGFzIGEgYm9udXMsIGhlIGNh biBhc2sgbW9yZSBleHBsYW5hdGlvbiB0byB0aGUgbWFpbnRhaW5lcnMNCj4gPiBieSBnaXZpbmcg dGhlIHJvdXRpbmUgbmFtZSBoZSBnb3QgZnJvbSB0aGUgQVBJLg0KPiA+DQo+ID4+IFdlIGNhbiBh cmd1ZSBhYm91dCB0aGlzIGluZGVmaW5pdGVseSwgaW5zdGVhZCBvZiBwcm9wb3NpbmcgYSBzdGFu ZGFyZC4gOi0pDQo+ID4+IFRoZSBiZXN0IHdheSB0byB0aGlzIGlzIHRvIGxlYXZlIGFzIHRoZSBB UEkgYXMgZXhwZXJpbWVudGFsIGZvciBzb21lIHBlcmlvZCAtIGFzIEhhaXl1ZSBzdWdnZXN0cy4N Cj4gPj4gQW5kIHRoZW4gcmV2aWV3IGFzIHRoZSBBUEkgZHJvcHMgZXhwZXJpbWVudGFsIHN0YXR1 cywgd2l0aCBhIHZpZXcgdG8gc3RhbmRhcmRpemluZyBpZiBwb3NzaWJsZT8NCj4gPg0KPiA+IFll cyB3ZSBjYW4gYXJndWUgaW5kZWZpbml0ZWx5Lg0KPiA+IE15IHBvc2l0aW9uIGlzIGFnYWluc3Qg c3RhbmRhcmRpemluZyB0aGlzIGluZm9ybWF0aW9uLg0KPiA+IChub3QgZXZlbiB0YWxraW5nIGFi b3V0IHRoZSBBQkkgYnJlYWtzIGl0IGNvdWxkIGNhdXNlKQ0KPiANCj4gU28gaGVyZSBpcyBteSBw cm9wb3NlZCB3b3JrLWFyb3VuZC4NCj4gDQo+IFdlIGFyZSBwcm9iYWJseSB0byBlYXJseSB0byBk ZXNjcmliZSBhbnkgY29tbW9uYWxpdGllcyBiZXlvbmQgdmVjdG9yaXphdGlvbi4NCj4gVmVjdG9y aXphdGlvbiBpcyBzZWVuIGFzIHRvbyBJbnRlbCBzcGVjaWZpYy4NCj4gDQo+IEluc3RlYWQgbGV0 J3MgZ28gd2l0aCB0aGUgUE1ELXNwZWNpZmljIHN0cmluZ3MgZm9yIHYyMCBBQkkuDQo+IExldCdz IHJldmlldyB0aGUgUE1ELXNwZWNpZmljIHN0cmluZ3MgdGhhdCBlbWVyZ2UgZHVyaW5nIHYyMCAr IEV4cGVyaW1lbnRhbCwNCj4gYW5kIHNlZSBpZiBpdCBwb3NzaWJsZSB0byBzdGFydCB0byBzdGFu ZGFyZGl6ZSBmb3IgdjIxIEFCST8NCj4gDQo+IE15IHBvc2l0aW9uIGlzIHRoYXQgc29tZSBkZWdy ZWUgb2Ygc3RhbmRhcmRpemF0aW9uIGlzIG5lY2Vzc2FyeSBoZXJlLCBmb3IgdXNhYmlsaXR5IGlm IG5vIG90aGVyIHJlYXNvbi4NCj4gSSBhbSBoYXBweSB0byBnaXZlIGl0IHRpbWUgZm9yIHRoYXQg dG8gZW1lcmdlIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGRpY3RhdGUgaXQuDQo+IA0KPiBTbyBnbyB3 aXRoIFBNRC1zcGVjaWZpYyBzdHJpbmdzLCBhbmQgcmV2aWV3IGFmdGVyIDEgeWVhciB0byBzZWUg aWYgd2UgY2FuIGltcHJvdmU/DQo+IA0KDQpIaSBFeHBlcnRzLA0KDQpQbGVhc2UgZ2l2ZSBmZWVk YmFjayBvbiBuZXcgcGF0Y2guIDotKQ0KDQpodHRwOi8vcGF0Y2h3b3JrLmRwZGsub3JnL3BhdGNo LzYyMzY4Lw0KDQpzdHJ1Y3QgcnRlX2V0aF9idXJzdF9tb2RlIHsNCgl1aW50NjRfdCBmbGFnczsg LyoqPCBUaGUgT1JlZCB2YWx1ZXMgb2YgUlRFX0VUSF9CVVJTVF9GTEFHX3h4eCAqLw0KDQojZGVm aW5lIFJURV9FVEhfQlVSU1RfTU9ERV9JTkZPX1NJWkUgMTAyNCAvKio8IE1heGltdW0gc2l6ZSBm b3IgaW5mb3JtYXRpb24gKi8NCgljaGFyIGluZm9bUlRFX0VUSF9CVVJTVF9NT0RFX0lORk9fU0la RV07IC8qKjwgYnVyc3QgbW9kZSBpbmZvcm1hdGlvbiAqLw0KfTsNCg0KSWYgbW9zdCBvZiBQTURz IHdhbnQgdG8gZm9sbG93IHNvbWUgcnVsZSB0byBmb3JtYXQgc3RyaW5nLCBtYXliZSBuZXcgZmxh ZyBjYW4gYmUNCmRlZmluZWQgbGlrZTogUlRFX0VUSF9CVVJTVF9GTEFHX0ZNVF9CWV9YWFgsIHRo ZW4gdGhlICdpbmZvJyBoYXMgc29tZSBraW5kIG9mIHRoZQ0Kc2FtZSBmb3JtYXQuIEFuZCB0aGUg b2xkIGFwcGxpY2F0aW9uIGNhbiBzdGlsbCBqdXN0ICpkaXNwbGF5KiBpdC4gTmV3IGFwcGxpY2F0 aW9uDQpjYW4gcGFyc2UgaXQgYnkgdGhlIGtub3duIGZvcm1hdCBhcyBpbmRpY2F0ZWQgYnkgUlRF X0VUSF9CVVJTVF9GTEFHX0ZNVF9CWV9YWFguDQoNCkJ1eSBpbiB0aGlzIGRlc2lnbiA/DQoNCg0K PiA+DQo+ID4+Pj4+IFRoZSBjaGFsbGVuZ2UgaXMgdHJ5aW5nIHRvIGZpeCB0aGUgZGVzaWduIGNo YXJhY3RlcmlzdGljcyBpbiBhbiBBUEkuDQo+ID4+Pj4NCj4gPj4+PiBJIHRob3VnaHQgSGFpeXVl J3MgcGF0Y2ggd2l0aCBhIGZhaXIgZGVncmVlIG9mIGlucHV0IGZyb20gRmVycnVoIGFuZCBvdGhl cnMgaXMgYSBwcmV0dHkgc29saWQNCj4gc3RhcnQuDQo+ID4+Pj4gTGV0J3MgZGVzY3JpYmUgdGhv c2UgY29tbW9uYWxpdGllcyB0aGF0IF9kb18gZXhpc3QgdG9kYXkgLSBpdCBtYXkgbm90IGJlIGVu b3VnaCwgYnV0IGl0J3MgYmV0dGVyDQo+IHRoYW4gd2UgaGFkLg0KPiA+Pj4NCj4gPj4+IFRoZSBp bml0aWFsIHJlcXVpcmVtZW50IGlzIHRvIGRlc2NyaWJlIHdoYXQgbWFrZXMgdGhlIHBlcmZvcm1h bmNlDQo+ID4+PiBjaGFuZ2UgZnJvbSBvbmUgcm91dGluZSB0byB0aGUgb3RoZXIuDQo+ID4+PiBX ZSBkb24ndCB3YW50IHRvIGRlc2NyaWJlIHRoZSBjb21tb25hbGl0aWVzIGJ1dCB0aGUgc3BlY2lm aWMgZGlmZmVyZW5jZXMuDQo+ID4+PiBQbGVhc2UgbGV0J3MgZm9jdXMgb24gdGhlIHJlYWwgcmVx dWlyZW1lbnQgYW5kIGJ1aWxkIGFuIEFQSSB3aGljaCByZWFsbHkgaGVscHMuDQo+ID4+PiBBcyBz YWlkIHNldmVyYWwgdGltZXMsIGEgUE1ELXNwZWNpZmljIHN0cmluZyB3b3VsZCBiZSBhIGdvb2Qg QVBJLg0KPiA+DQo+ID4NCj4gPg0K