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 BA210A04B4; Fri, 8 Nov 2019 14:16:37 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 873841C1B2; Fri, 8 Nov 2019 14:16:37 +0100 (CET) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 18D2A1C1B1 for ; Fri, 8 Nov 2019 14:16:33 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Nov 2019 05:16:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,281,1569308400"; d="scan'208";a="228177705" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga004.fm.intel.com with ESMTP; 08 Nov 2019 05:16:32 -0800 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 8 Nov 2019 05:16:32 -0800 Received: from shsmsx105.ccr.corp.intel.com ([169.254.11.225]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.127]) with mapi id 14.03.0439.000; Fri, 8 Nov 2019 21:16:30 +0800 From: "Zhang, Qi Z" To: Ori Kam , Andrew Rybchenko , Thomas Monjalon CC: "dev@dpdk.org" , "pbhagavatula@marvell.com" , "Yigit, Ferruh" , "jerinj@marvell.com" , "Mcnamara, John" , "Kovacevic, Marko" , Adrien Mazarguil , "david.marchand@redhat.com" , "ktraynor@redhat.com" , Olivier Matz Thread-Topic: [dpdk-dev] [PATCH 1/2] ethdev: add flow action type update as an offload Thread-Index: AQHVli7smm1qh26NFkyxlrK1WOqgx6eAsYIAgACGi3A= Date: Fri, 8 Nov 2019 13:16:29 +0000 Message-ID: <039ED4275CED7440929022BC67E7061153DC66A1@SHSMSX105.ccr.corp.intel.com> References: <20191025152142.12887-1-pbhagavatula@marvell.com> <1594828.JO7TyvRWtP@xps> <1784584.NQqjHnNvIa@xps> <039ED4275CED7440929022BC67E7061153DC6603@SHSMSX105.ccr.corp.intel.com> <83dda74c-c5b4-13f4-626d-59cbb7793239@solarflare.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMjE5Y2Q3NjgtODhhYy00YzEwLWExZDItYWQ4NzMxNjNiNjk5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiaXh5YWtQbVhxbmlyXC9VTk9ZamJDeFdMQXZ0bEFKMkptQXVBV0VNczhiYXNWMFwvTE04VzBWcXVGK3hLS0I3Y3EzIn0= 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 1/2] ethdev: add flow action type update as an offload 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT3JpIEthbSA8b3Jpa2FA bWVsbGFub3guY29tPg0KPiBTZW50OiBGcmlkYXksIE5vdmVtYmVyIDgsIDIwMTkgODo0MyBQTQ0K PiBUbzogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT47IFpoYW5n LCBRaSBaDQo+IDxxaS56LnpoYW5nQGludGVsLmNvbT47IFRob21hcyBNb25qYWxvbiA8dGhvbWFz QG1vbmphbG9uLm5ldD4NCj4gQ2M6IGRldkBkcGRrLm9yZzsgcGJoYWdhdmF0dWxhQG1hcnZlbGwu Y29tOyBZaWdpdCwgRmVycnVoDQo+IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgamVyaW5qQG1h cnZlbGwuY29tOyBNY25hbWFyYSwgSm9obg0KPiA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+OyBL b3ZhY2V2aWMsIE1hcmtvDQo+IDxtYXJrby5rb3ZhY2V2aWNAaW50ZWwuY29tPjsgQWRyaWVuIE1h emFyZ3VpbA0KPiA8YWRyaWVuLm1hemFyZ3VpbEA2d2luZC5jb20+OyBkYXZpZC5tYXJjaGFuZEBy ZWRoYXQuY29tOw0KPiBrdHJheW5vckByZWRoYXQuY29tOyBPbGl2aWVyIE1hdHogPG9saXZpZXIu bWF0ekA2d2luZC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZHBkay1kZXZdIFtQQVRDSCAxLzJdIGV0 aGRldjogYWRkIGZsb3cgYWN0aW9uIHR5cGUgdXBkYXRlIGFzIGFuDQo+IG9mZmxvYWQNCj4gDQo+ IFllcyBtaXNzZWQgc29tZWhvdyA2Lg0KPiBPbmUgbW9yZSBnZW5lcmFsIGNvbW1lbnQsIHdoYXQg aGFwcGVuZWQgdW50aWwgbm93PyBUaGUgTWFyayBpcyBhbHJlYWR5DQo+IGltcGxlbWVudGVkIGFu ZCB3b3JraW5nIG1vcmUgdGhlbiAyIHllYXJzLg0KDQpBY3R1YWxseSB3ZSBnZXQgbWFueSBjb21w bGFpbiBvbiBpNDBlIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IE1BUksgZHVlIHRvIHZlY3RvciBw YXRoIGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQNClRoZSBkcml2ZXIgYWx3YXlzIG5lZWQgYSBoaW50 IHRvIHNlbGVjdCB0aGUgbWFyayBhd2FyZSBkYXRhIHBhdGggYnkgIi0tcGt0LWZpbHRlci1tb2Rl ID1wZXJmZWN0IiB3aGljaCBpcyBqdXN0IGEgd29ya2Fyb3VuZC4NCnRob3VnaCB0aGlzIGlzc3Vl IGhhcyBiZWVuIGZpbmFsbHkgc29sdmVkIHNpbmNlIHNvZnR3YXJlIG1hcmsgb24gdlBNRCBpcyBl bmFibGVkIHJlY2VudGx5IG9uIGk0MGUuDQpidXQgRm9yIHRoZSBuZXcgaWNlIGRyaXZlciwgd2Ug ZGlkbid0IGdldCBjaGFuY2UgdG8gZW5hYmxlIHRoaXMgb24gdlBNRCB5ZXQsIHRoZW4gd2UgbWVl dCB0aGUgc2FtZSBpc3N1ZS4NCg0KSSBrbm93IG9wdGlvbiBCIGNhbiBhbHdheXMgd29yaywgZHJp dmVyIGNhbiBhbHdheXMgZGVjaWRlIHRoZSBmdW5jdGlvbiBjYWxsIGF0IHJ1bnRpbWUsIGJ1dCB0 aGF0IG5lZWQgYSBsb3QgcmV3b3JrIGFuZCBtYXkgaW1wYWN0IHBlcmZvcm1hbmNlLCB3aGlsZSBv cHRpb24gQSBqdXN0IGdpdmUgbW9yZSBmbGV4aWJpbGl0eSwNCmFuZCBpdCBkb2VzIG5vdCBibG9j ayBhIGRyaXZlciB0byBlbmFibGUgYWxsIHRoZSBiZXN0IHRoaW5nIHJlcXVpcmVkIGJ5IG9wdGlv biBCLg0KDQpSZWdhcmRzDQpRaQ0KDQoNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29t Pg0KPiA+IFNlbnQ6IEZyaWRheSwgTm92ZW1iZXIgOCwgMjAxOSAyOjIwIFBNDQo+ID4gVG86IE9y aSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT47IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVs LmNvbT47DQo+ID4gVGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0Pg0KPiA+IENj OiBkZXZAZHBkay5vcmc7IHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbTsgWWlnaXQsIEZlcnJ1aA0K PiA+IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgamVyaW5qQG1hcnZlbGwuY29tOyBNY25hbWFy YSwgSm9obg0KPiA+IDxqb2huLm1jbmFtYXJhQGludGVsLmNvbT47IEtvdmFjZXZpYywgTWFya28N Cj4gPiA8bWFya28ua292YWNldmljQGludGVsLmNvbT47IEFkcmllbiBNYXphcmd1aWwNCj4gPiA8 YWRyaWVuLm1hemFyZ3VpbEA2d2luZC5jb20+OyBkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tOw0K PiA+IGt0cmF5bm9yQHJlZGhhdC5jb207IE9saXZpZXIgTWF0eiA8b2xpdmllci5tYXR6QDZ3aW5k LmNvbT4NCj4gPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggMS8yXSBldGhkZXY6IGFk ZCBmbG93IGFjdGlvbiB0eXBlDQo+ID4gdXBkYXRlIGFzIGFuIG9mZmxvYWQNCj4gPg0KPiA+IE9u IDExLzgvMTkgMzoxMiBQTSwgT3JpIEthbSB3cm90ZToNCj4gPiA+DQo+ID4gPiBIaSBBbmRyZXcs DQo+ID4gPg0KPiA+ID4gVGhhbmtzIHZlcnkgbXVjaCBmb3IgdGhlIHN1bW1lcnksIEkgdGhpbmsg dGhpcyBtYWtlcyB0aGUgZGlzY3Vzc2lvbg0KPiA+ID4gbXVjaA0KPiA+IGJldHRlci4NCj4gPiA+ ICh3ZSBldmVuIGdvdCBzb21lIG5ldyBmb2xrcyDwn5iKKQ0KPiA+ID4NCj4gPiA+IEkgdm90ZSBm b3IgQiBhbmQgQywNCj4gPiA+DQo+ID4gPiBQbGVhc2UgcmVhZCBteSBjb21tZW50cyBiZWxvdy4N Cj4gPiA+DQo+ID4gPiBPcmkNCj4gPiA+DQo+ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiA+PiBGcm9tOiBkZXYgPGRldi1ib3VuY2VzQGRwZGsub3JnPiBPbiBCZWhhbGYgT2Yg WmhhbmcsIFFpIFoNCj4gPiA+PiBTZW50OiBGcmlkYXksIE5vdmVtYmVyIDgsIDIwMTkgMTo0MSBQ TQ0KPiA+ID4+IFRvOiBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBBbmRy ZXcgUnliY2hlbmtvDQo+ID4gPj4gPGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb20+DQo+ID4gPj4g Q2M6IE9yaSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT47IGRldkBkcGRrLm9yZzsNCj4gPiA+PiBw YmhhZ2F2YXR1bGFAbWFydmVsbC5jb207IFlpZ2l0LCBGZXJydWggPGZlcnJ1aC55aWdpdEBpbnRl bC5jb20+Ow0KPiA+ID4+IGplcmluakBtYXJ2ZWxsLmNvbTsgTWNuYW1hcmEsIEpvaG4gPGpvaG4u bWNuYW1hcmFAaW50ZWwuY29tPjsNCj4gPiA+PiBLb3ZhY2V2aWMsIE1hcmtvIDxtYXJrby5rb3Zh Y2V2aWNAaW50ZWwuY29tPjsgQWRyaWVuIE1hemFyZ3VpbA0KPiA+ID4+IDxhZHJpZW4ubWF6YXJn dWlsQDZ3aW5kLmNvbT47IGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb207DQo+ID4gPj4ga3RyYXlu b3JAcmVkaGF0LmNvbTsgT2xpdmllciBNYXR6IDxvbGl2aWVyLm1hdHpANndpbmQuY29tPg0KPiA+ ID4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCAxLzJdIGV0aGRldjogYWRkIGZsb3cg YWN0aW9uIHR5cGUNCj4gPiA+PiB1cGRhdGUNCj4gPiBhcw0KPiA+ID4+IGFuIG9mZmxvYWQNCj4g PiA+Pg0KPiA+ID4+DQo+ID4gPj4NCj4gPiA+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiA+Pj4gRnJvbTogZGV2IDxkZXYtYm91bmNlc0BkcGRrLm9yZz4gT24gQmVoYWxmIE9mIFRo b21hcyBNb25qYWxvbg0KPiA+ID4+PiBTZW50OiBGcmlkYXksIE5vdmVtYmVyIDgsIDIwMTkgNzow NCBQTQ0KPiA+ID4+PiBUbzogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJl LmNvbT4NCj4gPiA+Pj4gQ2M6IE9yaSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT47IGRldkBkcGRr Lm9yZzsNCj4gPiA+Pj4gcGJoYWdhdmF0dWxhQG1hcnZlbGwuY29tOyBZaWdpdCwgRmVycnVoIDxm ZXJydWgueWlnaXRAaW50ZWwuY29tPjsNCj4gPiA+Pj4gamVyaW5qQG1hcnZlbGwuY29tOyBNY25h bWFyYSwgSm9obiA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+Ow0KPiA+ID4+PiBLb3ZhY2V2aWMs IE1hcmtvIDxtYXJrby5rb3ZhY2V2aWNAaW50ZWwuY29tPjsgQWRyaWVuIE1hemFyZ3VpbA0KPiA+ ID4+PiA8YWRyaWVuLm1hemFyZ3VpbEA2d2luZC5jb20+OyBkYXZpZC5tYXJjaGFuZEByZWRoYXQu Y29tOw0KPiA+ID4+PiBrdHJheW5vckByZWRoYXQuY29tOyBPbGl2aWVyIE1hdHogPG9saXZpZXIu bWF0ekA2d2luZC5jb20+DQo+ID4gPj4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCAx LzJdIGV0aGRldjogYWRkIGZsb3cgYWN0aW9uIHR5cGUNCj4gPiB1cGRhdGUgYXMNCj4gPiA+PiBh bg0KPiA+ID4+PiBvZmZsb2FkDQo+ID4gPj4+DQo+ID4gPj4+IDA4LzExLzIwMTkgMTE6NDIsIEFu ZHJldyBSeWJjaGVua286DQo+ID4gPj4+PiBPbiAxMS84LzE5IDE6MjggUE0sIFRob21hcyBNb25q YWxvbiB3cm90ZToNCj4gPiA+Pj4+PiAwOC8xMS8yMDE5IDA5OjM1LCBBbmRyZXcgUnliY2hlbmtv Og0KPiA+ID4+Pj4+PiBUaGUgcHJvYmxlbToNCj4gPiA+Pj4+Pj4gfn5+fn5+fn5+fn5+DQo+ID4g Pj4+Pj4+IFBNRCB3YW50cyB0byBrbm93IGJlZm9yZSBwb3J0IHN0YXJ0IGlmIGFwcGxpY2F0aW9u IHdhbnRzIHRvIHRvDQo+ID4gPj4+Pj4+IHVzZSBmbG93IE1BUksvRkxBRyBpbiB0aGUgZnV0dXJl LiBJdCBpcyByZXF1aXJlZCBiZWNhdXNlOg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiAxLiBIVyBt YXkgYmUgY29uZmlndXJlZCBpbiBhIGRpZmZlcmVudCB3YXkgdG8gcmVzZXJ2ZSByZXNvdXJjZXMN Cj4gPiA+Pj4+Pj4gICAgZm9yIE1BUksvRkxBRyBkZWxpdmVyeQ0KPiA+ID4+Pj4+Pg0KPiA+ID4+ Pj4+PiAyLiBEYXRhcGF0aCBpbXBsZW1lbnRhdGlvbiBjaG9pY2UgbWF5IGRlcGVuZCBvbiBpdCAo ZS5nLiB2UE1EDQo+ID4gPj4+Pj4+ICAgIGlzIGZhc3RlciwgYnV0IGRvZXMgbm90IHN1cHBvcnQg TUFSSykNCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+IFRoYW5rIHlvdSBmb3IgdGhlIGNsZWFyIHByb2Js ZW0gc3RhdGVtZW50Lg0KPiA+ID4+Pj4+IEkgYWdyZWUgd2l0aCBpdC4gVGhpcyBpcyBhIHJlYWwg ZGVzaWduIGlzc3VlLg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4NCj4gPiA+Pj4+Pj4gRGlzY3Vzc2Vk IHNvbHV0aW9uczoNCj4gPiA+Pj4+Pj4gfn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPiA+Pj4+DQo+ ID4gPj4+PiBNYXkgYmUgaXQgaXMgbm90IDEwMCUgY2xlYXIgc2luY2UgYmVsb3cgYXJlIGFsdGVy bmF0aXZlcy4NCj4gPiA+Pj4+DQo+ID4gPj4+Pj4+IEEuIEV4cGxpY2l0IFJ4IG9mZmxvYWQgc3Vn Z2VzdGVkIGJ5IHRoZSBwYXRjaC4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gQi4gSW1wbGljaXQg YnkgdmFsaWRhdGlvbiBvZiBhIGZsb3cgcnVsZSB3aXRoIE1BUksvRkxBRyBhY3Rpb25zIHVzZWQu DQo+ID4gPj4+Pj4+DQo+ID4gPg0KPiA+ID4gSSBkb27igJl0IGFncmVlIHRoYXQgdGhpcyBtZXRo b2QgaXMgaW1wbGljaXQgaXQgaXMgcXVpdCBleHBsaWNpdCwgZG8NCj4gPiA+IHdlIHN1cHBvcnQg aXQgaW4NCj4gPiBQTUQNCj4gPiA+IHdpdGggdGhlIHVzZSBjYXNlIG9yIG5vdC4gU291bmQgdmVy eSBleHBsaWNpdC4gWW91IGNhbiBhcmd1ZSB0aGF0DQo+ID4gPiB0aGUgUE1EDQo+ID4gdXNlcw0K PiA+ID4gdmFsaWRhdGlvbiBmbG93IHRvIHVuZGVyc3RhbmQgdGhhdCBpdCBuZWVkIHRvIHN1cHBv cnQgTUFSSywgYnV0IGZyb20NCj4gPiBldmVyeSBwZXJzcGVjdGl2ZQ0KPiA+ID4gaXQgaXMgbW9y ZSBjb3JyZWN0IC4gd2hhdCBkb2VzIGl0IG1lYW4gaWYgdGhlIGFwcGxpY2F0aW9uIGVuYWJsZWQN Cj4gPiA+IG1hcmsgYW5kDQo+ID4gbmV2ZXIgZG93bmxvYWQgYSBmbG93Pw0KPiA+DQo+ID4gSXQg aXMgaW1wbGljaXQgZnJvbSBQTUQgcG9pbnQgb2Ygdmlldywgc2luY2UgdGhlcmUgaXMgbm8gY29t bWFuZCB0bw0KPiA+IGVuYWJsZSBpdC4gVGhlIGRlY2lzaW9uIHRvIGVuYWJsZSBpcyB0aGUgcmVz dWx0IG9mIHNlZW4gYXR0ZW1wdCB0bw0KPiA+IHZhbGlkYXRlIG1hcmsuIElmIGZldyBydWxlcyBh cmUgdmFsaWRhdGVkLCBidXQgYW4gYXBwbGljYXRpb24gZGVjaWRlcw0KPiA+IHRvIGhhdmUgaXQg ZGlzYWJsZWQgZmluYWxseSwgaG93IHRvIGFjaGlldmUgaXQ/DQo+ID4gTGFzdCB2YWxpZGF0aW9u IGF0dGVtcHQgd2lucz8NCj4gPiBPdGhlciBwb2ludHMgYXJlIGNvdmVyZWQgYnkgKDYpIGJlbG93 Lg0KPiA+DQo+ID4gPj4+Pj4+IEMuIFVzZSBkeW5hbWljIGZpZWxkL2ZsYWcgKGkuZS4gYXBwbGlj YXRpb24gcmVnaXN0ZXJzIGR5bmFtaWMgZmllbGQNCj4gPiA+Pj4+Pj4gICAgYW5kL29yIGZsYWcg YW5kIFBNRCB1c2VzIGxvb2t1cCB0byBzb2x2ZSB0aGUgcHJvYmxlbSkgcGx1cyBwYXJ0DQo+ID4g Pj4+Pj4+ICAgIG9mIChCKSB0byBkaXNjb3ZlciBpZiBhIGZlYXR1cmUgaXMgc3VwcG9ydGVkLg0K PiA+ID4+Pj4+DQo+ID4gPj4+Pj4gVGhlIGR5bmFtaWMgZmllbGQgc2hvdWxkIGJlIHJlZ2lzdGVy ZWQgdmlhIGEgbmV3IEFQSSBmdW5jdGlvbg0KPiA+ID4+Pj4+IG5hbWVkICc8ZmVhdHVyZT5faW5p dCcuDQo+ID4gPj4+Pj4gSXQgbWVhbnMgdGhlIGFwcGxpY2F0aW9uIG11c3QgZXhwbGljaXQgcmVx dWVzdCB0aGUgZmVhdHVyZS4NCj4gPiA+Pj4+PiBJIGFncmVlIHRoaXMgaXMgdGhlIHdheSB0byBn by4NCj4gPiA+Pj4+DQo+ID4gPj4+PiBJZiBJIHVuZGVyc3RhbmQgeW91ciBzdGF0ZW1lbnQgY29y cmVjdGx5LCBidXQgKEMpIGlzIG5vdCBpZGVhbA0KPiA+ID4+Pj4gc2luY2UgaXQgbG9va3MgZ2xv YmFsLiBJZiByZWdpc3RlcmVkIGR5bmFtaWMgZmllbGQgb2YgbWJ1ZiBhbmQgaXMNCj4gPiA+Pj4+ IGZsYWcgdGhhdCB0aGUgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZCwgaXQgaXMgYSBmbGFnIHRv IGFsbCBwb3J0cy9kZXZpY2VzLg0KPiA+ID4+Pj4NCj4gPiA+Pj4+Pj4gQWxsIHNvbHV0aW9ucyBy ZXF1aXJlIGNoYW5nZXMgaW4gYXBwbGljYXRpb25zIHdoaWNoIHVzZSB0aGVzZQ0KPiA+ID4+Pj4+ PiBmZWF0dXJlcy4gVGhlcmUgaXMgYSBkZXByZWNhdGlvbiBub3RpY2UgaW4gcGxhY2Ugd2hpY2gN Cj4gPiA+Pj4+Pj4gYWR2ZXJ0aXNlcyBERVZfUlhfT0ZGTE9BRF9GTE9XX01BUksgYWRkaXRpb24s IGJ1dCBtYXkgYmUgaXQgaXMNCj4gPiA+Pj4+Pj4gT0sgdG8gc3Vic3RpdHV0ZSBpdCB3aXRoIHNv bHV0aW9uIChCKSBvciAoQykuIFNvbHV0aW9uIChDKQ0KPiA+ID4+Pj4+PiByZXF1aXJlcyBjaGFu Z2VzIHNpbmNlIGl0IHNob3VsZCBiZSBjb21iaW5lZCB3aXRoIChCKSBpbiBvcmRlcg0KPiA+ID4+ Pj4+PiB0byB1bmRlcnN0YW5kIGlmIHRoZSBmZWF0dXJlIGlzIHN1cHBvcnRlZC4NCj4gPiA+Pj4+ Pg0KPiA+ID4+Pj4+IEkgZG9uJ3QgdW5kZXJzdGFuZC4NCj4gPiA+Pj4+PiBBcHBsaWNhdGlvbiBy ZXF1ZXN0IGFuZCBQTUQgc3VwcG9ydCBhcmUgdHdvIGRpZmZlcmVudCB0aGluZ3MuDQo+ID4gPj4+ Pj4gUE1EIHN1cHBvcnQgbXVzdCBiZSB2aWEgcnRlX2Zsb3cgdmFsaWRhdGlvbiBvbiBhIGNhc2Ug YnkgY2FzZQ0KPiA+IGFueXdheS4NCj4gPiA+Pj4+DQo+ID4gPj4+PiBJIG1lYW4gdGhhdCBhcHBs aWNhdGlvbiB3YW50cyB0byB1bmRlcnN0YW5kIGlmIHRoZSBmZWF0dXJlIGlzDQo+ID4gPj4+PiBz dXBwb3J0ZWQuIFRoZW4sIGl0IHdhbnRzIHRvIGVuYWJsZSBpdC4gSW4gdGhlIGNhc2Ugb2YgKEIp LCBpZiBJDQo+ID4gPj4+PiB1bmRlcnN0YW5kIHRoZSBzb2x1dGlvbiBjb3JyZWN0bHksIHRoZXJl IGlzIG5vIGV4cGxpY2l0IHdheSB0bw0KPiA+ID4+Pj4gZW5hYmxlLCBQTUQganVzdCBkZXRlY3Rz IGl0IGJlY2F1c2Ugb2YgZGlzY292ZXJ5IGlzIGRvbmUgKHRoYXQncw0KPiA+ID4+Pj4gd2hhdCBJ IG1lYW4gYnkgImltcGxpY2l0IiBhbmQgaXQgaXMgYSBkcmF3YmFjayBmcm9tIG15IHBvaW50IG9m DQo+ID4gPj4+PiB2aWV3LCBidXQgc3RpbGwgY291bGQgYmUgY29uc2lkZXJlZCkuIChDKSBzb2x2 ZXMgdGhlIHByb2JsZW0gb2YgKEIpLg0KPiA+ID4+Pj4NCj4gPiA+Pj4+Pj4gQWR2YW50YWdlcyBh bmQgZHJhd2JhY2tzIG9mIHNvbHV0aW9uczoNCj4gPiA+Pj4+Pj4gfn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPiA+Pj4+Pj4gMS4gVGhlIG1haW4gZHJhd2JhY2sgb2Yg KEEpIGlzIGEgImR1cGxpY2F0aW9uIiBzaW5jZSB3ZSBhbHJlYWR5DQo+ID4gPj4+Pj4+ICAgIGhh dmUgYSB3YXkgdG8gcmVxdWVzdCBmbG93IE1BUksgdXNpbmcgcnRlX2Zsb3cgQVBJLg0KPiA+ID4+ Pj4+PiAgICBJIGRvbid0IGZ1bGx5IGFncmVlIHRoYXQgaXQgaXMgYSBkdXBsaWNhdGlvbiwgYnV0 IEkgYWdyZWUNCj4gPiA+Pj4+Pj4gICAgdGhhdCBpdCBzb3VuZHMgbGlrZSBkdXBsaWNhdGlvbiBh bmQgY29tcGxpY2F0ZXMgYSBiaXQgZmxvdw0KPiA+ID4+Pj4+PiAgICBNQVJLIHVzYWdlIGJ5IGFw cGxpY2F0aW9ucy4gKEIpIGNvbXBsaWNhdGVzIGl0IGFzIHdlbGwuDQo+ID4gPj4+Pj4+DQo+ID4g Pj4+Pj4+IDIuIE9uZSBtb3JlIGRyYXdiYWNrIG9mIHRoZSBzb2x1dGlvbiAoQSkgaXMgdGhlIG5l Y2Vzc2l0eSBvZg0KPiA+ID4+Pj4+PiAgICBzaW1pbGFyIHNvbHV0aW9uIGZvciBNRVRBIGFuZCBp dCBlYXRzIG9uZSBtb3JlIG9mZmxvYWQgYml0Lg0KPiA+ID4+Pj4+PiAgICBZZXMsIHRoYXQncyB0 cnVlIGFuZCBJIHRoaW5rIGl0IGlzIG5vdCBhIHByb2JsZW0uDQo+ID4gPj4+Pj4+ICAgIEl0IHdv dWxkIG1ha2UgaXQgZWFzaWVyIGZvciBhcHBsaWNhdGlvbnMgdG8gZmluZCBvdXQgaWYNCj4gPiA+ Pj4+Pj4gICAgZWl0aGVyIE1BUksgb3IgTUVUQSBpcyBzdXBwb3J0ZWQuDQo+ID4gPj4+Pj4+DQo+ ID4gPj4+Pj4+IDMuIFRoZSBtYWluIGFkdmFudGFnZSBvZiB0aGUgc29sdXRpb24gKEEpIGlzIHNp bXBsaWNpdHkuDQo+ID4gPj4+Pj4+ICAgIEl0IGlzIHNpbXBsZSBmb3IgYXBwbGljYXRpb24gdG8g dW5kZXJzdGFuZCBpZiBpdCBzdXBwb3J0ZWQuDQo+ID4gPj4+Pj4+ICAgIEl0IGlzIHNpbXBsZSBp biBQTUQgdG8gdW5kZXJzdGFuZCB0aGF0IGl0IGlzIHJlcXVpcmVkLg0KPiA+ID4+Pj4+PiAgICBJ dCBpcyBzaW1wbGUgdG8gZGlzYWJsZSBpdCAtIGp1c3QgcmVjb25maWd1cmUuDQo+ID4gPj4+Pj4+ ICAgIEFsc28gaXQgaXMgZWFzaWVyIHRvIGRvY3VtZW50IGl0IC0ganVzdCBtZW50aW9uIHRoYXQN Cj4gPiA+Pj4+Pj4gICAgdGhlIG9mZmxvYWQgc2hvdWxkIGJlIHN1cHBvcnRlZCBhbmQgZW5hYmxl ZC4NCj4gPiA+Pj4+Pj4NCj4gPiA+DQo+ID4gPiBUaGlzIGlzIG5vdCB0cnVlLCBmb3IgZXhhbXBs ZSB0aGUgUE1EIHN1cHBvcnQgTWFyayBvbmx5IGluIE5pYyBtb2RlDQo+ID4gPiBXaGlsZSB0aGUg YXBwbGljYXRpb24gbmVlZHMgRS1Td2l0Y2ggdGhlbiB0aGUgUE1EIHJlcG9ydHMgaW5jb3JyZWN0 bHkuDQo+ID4gPiBPciBmb3IgZXhhbXBsZSBpZiB0aGUgbWFyayBpcyBzdXBwb3J0ZWQgb25seSBh cyBvbmx5IGFjdGlvbiwgYW5kIHRoZQ0KPiA+IGFwcGxpY2F0aW9uIG5lZWRzDQo+ID4gPiBkZWNh cCBhbmQgbWFyay4gdGhpcyBtZWFucyB0aGF0IHRoZSB1c2VyIHdpbGwgbmV2ZXIgYmUgYWJsZSB0 byB1c2UNCj4gPiA+IHRoZQ0KPiA+IG1hcmsNCj4gPiA+IHNvIHRoZSBQTUQgdXNlcyBzbG93ZXIg UnggZnVuY3Rpb24gd2l0aG91dCB0aGUgbWFyayBldmVyIGJlaW5nIHVzZWQuDQo+ID4NCj4gPiBJ dCBpcyBjb3ZlcmVkIGJ5ICg2KSBiZWxvdy4NCj4gPg0KPiA+ID4+Pj4+PiA0LiBUaGUgbWFpbiBh ZHZhbnRhZ2Ugb2YgdGhlIHNvbHV0aW9uIChCKSBpcyBubyAiZHVwbGljYXRpb24iLg0KPiA+ID4+ Pj4+PiAgICBJIGFncmVlIHRoYXQgaXQgaXMgdmFsaWQgYXJndW1lbnQuIFNvbHZpbmcgdGhlIHBy b2JsZW0NCj4gPiA+Pj4+Pj4gICAgd2l0aG91dCBleHRyYSBlbnRpdGllcyBpcyBhbHdheXMgbmlj ZSwgYnV0IHVuZm9ydHVuYXRlbHkNCj4gPiA+Pj4+Pj4gICAgaXQgaXMgdG9vIGNvbXBsZXggaW4g dGhpcyBjYXNlLg0KPiA+ID4+Pj4+Pg0KPiA+ID4NCj4gPiA+IFlvdSBmb3Jnb3QgYSBvbmUgbW9y ZSB2ZXJ5IGltcG9ydGFudCByZWFzb24sIHRoZSBmYWN0IHRoYXQgdGhlIG1hcmsNCj4gPiA+IG1h eSBiZSBzdXBwb3J0ZWQgb25seSBvbiBzb21lIGZsb3dzLiBTbyBpZiB0aGUgdXNlciBuZWVkcyBt YXJrIHdpdGgNCj4gPiBkZWNhcA0KPiA+ID4gYW5kIHRoaXMgY29tYmluYXRpb24gaXMgbm90IHN1 cHBvcnRlZCB0aGUgdXNlciB3aWxsIG5ldmVyIHdlIGFibGUgdG8NCj4gPiA+IHVzZQ0KPiA+IG1h cmsNCj4gPiA+IHdoaWxlIHVzaW5nIG1hcmsgUnggZnVuY3Rpb24uIFNvIHlvdSBnZXQgc2xvdyBk YXRhIHBhdGggd2l0aCBubw0KPiA+ID4gYWJpbGl0eSB0bw0KPiA+IHVzZSBpdC4NCj4gPg0KPiA+ IEFnYWluLCBzZWUgKDYpIGJlbG93Lg0KPiA+DQo+ID4gPj4+Pj4+IDUuIFRoZSBtYWluIGRyYXdi YWNrIG9mIHRoZSBzb2x1dGlvbiAoQikgaXMgdGhlIGNvbXBsZXhpdHkuDQo+ID4gPj4+Pj4+ICAg IEl0IGlzIG5lY2Vzc2FyeSB0byBjaG9vc2UgYSBmbG93IHJ1bGUgd2hpY2ggc2hvdWxkIGJlIHVz ZWQNCj4gPiA+Pj4+Pj4gICAgYXMgYSBjcml0ZXJpYS4gSXQgY291bGQgYmUgaGFyZHdhcmUgZGVw ZW5kZW50Lg0KPiA+ID4+Pj4+PiAgICBDb21wbGV4IGxvZ2ljIGlzIHJlcXVpcmUgaW4gUE1EIGlm IGl0IHdhbnRzIHRvIGFkZHJlc3MgdGhlDQo+ID4gPj4+Pj4+ICAgIHByb2JsZW0gYW5kIGNvbnRy b2wgTUFSSyBkZWxpdmVyeSBiYXNlZCBvbiB2YWxpZGF0ZWQgZmxvdw0KPiA+ID4+Pj4+PiAgICBy dWxlcy4gSXQgYWRkcyBkZXBlbmRlbmN5IGJldHdlZW4gc3RhcnQvc3RvcCBwcm9jZXNzaW5nIGFu ZA0KPiA+ID4+Pj4+PiAgICBmbG93IHJ1bGVzIHZhbGlkYXRpb24gY29kZS4NCj4gPiA+Pj4+Pj4g ICAgSXQgaXMgcHJldHR5IGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IGl0Lg0KPiA+ID4+Pj4+Pg0K PiA+ID4+Pj4+PiA2LiBVc2VsZXNzIGVuYWJsaW5nIG9mIHRoZSBvZmZsb2FkIGluIHRoZSBjYXNl IG9mIHNvbHV0aW9uIChBKQ0KPiA+ID4+Pj4+PiAgICBpZiByZWFsbHkgdXNlZCBmbG93IHJ1bGVz IGRvIG5vdCBzdXBwb3J0IE1BUksgbG9va3MgbGlrZQ0KPiA+ID4+Pj4+PiAgICBkcmF3YmFjayBh cyB3ZWxsLCBidXQgZWFzaWx5IG1pdGlnYXRlZCBieSBhIGNvbWJpbmF0aW9uDQo+ID4gPj4+Pj4+ ICAgIHdpdGggc29sdXRpb24gKEIpIGFuZCBvbmx5IHJlcXVpcmVkIGlmIHRoZSBhcHBsaWNhdGlv biB3YW50cw0KPiA+ID4+Pj4+PiAgICB0byBkaXZlIGluIHRoZSBsZXZlbCBvZiBvcHRpbWl6YXRp b24gYW5kIGNvbXBsZXhpdHkgYW5kDQo+ID4gPj4+Pj4+ICAgIG1ha2VzIHNlbnNlIGlmIGFwcGxp Y2F0aW9uIGtub3dzIHJlcXVpcmVkIGZsb3cgcnVsZXMgaW4NCj4gPiA+Pj4+Pj4gICAgYWR2YW5j ZS4gU28sIGl0IGlzIG5vdCBhIHByb2JsZW0gaW4gdGhpcyBjYXNlLg0KPiA+ID4+Pj4+Pg0KPiA+ ID4+Pj4+PiA3LiBTb2x1dGlvbiAoQykgaGFzIGRyYXdiYWNrcyBvZiB0aGUgc29sdXRpb24gKEIp IGZvcg0KPiA+ID4+Pj4+PiAgICBhcHBsaWNhdGlvbnMgdG8gdW5kZXJzdGFuZCBpZiB0aGVzZSBm ZWF0dXJlcyBhcmUgc3VwcG9ydGVkLA0KPiA+ID4+Pj4+PiAgICBidXQgbm8gZHJhd2JhY2tzIGlu IFBNRCwgc2luY2UgZXhwbGljaXQgY3JpdGVyaWEgaXMgdXNlZCB0bw0KPiA+ID4+Pj4+PiAgICBl bmFibGUvZGlzYWJsZSAoZHluYW1pYyBmaWVsZC9mbGFnIGxvb2t1cCkuDQo+ID4gPj4+Pj4+DQo+ ID4gPj4+Pj4+IDguIFNvbHV0aW9uIChDKSBpcyBuaWNlIHNpbmNlIGl0IGF2b2lkcyAiZHVwbGlj YXRpb24iLg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiA5LiBUaGUgbWFpbiBkcmF3YmFjayBvZiB0 aGUgc29sdXRpb24gKEMpIGlzIGFzeW1tZXRyeS4NCj4gPiA+Pj4+Pj4gICAgQXMgaXQgd2FzIGRp c2N1c3NlZCBpbiB0aGUgY2FzZSBvZiBSWF9USU1FU1RBTVANCj4gPiA+Pj4+Pj4gICAgKGlmIEkg cmVtZW1iZXIgaXQgY29ycmVjdGx5KToNCj4gPiA+Pj4+Pj4gICAgIC0gUE1EIGFkdmVydGlzZXMg UlhfVElNRVNUQU1QIG9mZmxvYWQgY2FwYWJpbGl0eQ0KPiA+ID4+Pj4+PiAgICAgLSBhcHBsaWNh dGlvbiBlbmFibGVzIHRoZSBvZmZsb2FkDQo+ID4gPj4+Pj4+ICAgICAtIFBNRCByZWdpc3RlcnMg ZHluYW1pYyBmaWVsZCBmb3IgdGltZXN0YW1wDQo+ID4gPj4+Pj4+ICAgIFNvbHV0aW9uIChDKToN Cj4gPiA+Pj4+Pj4gICAgICAtIFBNRCBhZHZlcnRpc2VzIG5vdGhpbmcNCj4gPiA+Pj4+Pj4gICAg ICAtIGFwcGxpY2F0aW9uIHVzZXMgc29sdXRpb24gKEIpIHRvIHVuZGVyc3RhbmQgaWYNCj4gPiA+ Pj4+Pj4gICAgICAgIHRoZXNlIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQNCj4gPiA+Pj4+Pj4gICAg ICAtIGFwcGxpY2F0aW9uIHJlZ2lzdGVycyBkeW5hbWljIGZpZWxkL2ZsYWcNCj4gPiA+Pj4+Pj4g ICAgICAtIFBNRCBkb2VzIGxvb2t1cCBhbmQgc29sdmUgdGhlIHByb2JsZW0NCj4gPiA+Pj4+Pj4g ICAgVGhlIGFzeW1tZXRyeSBjb3VsZCBiZSBwYXJ0aWFsbHkgbWl0aWdhdGVkIGlmIFJYX1RJTUVT VEFNUA0KPiA+ID4+Pj4+PiAgICBzb2x1dGlvbiBpcyBjaGFuZ2VkIHRvIHJlcXVpcmUgYW4gYXBw bGljYXRpb24gdG8gcmVnaXN0ZXINCj4gPiA+Pj4+Pj4gICAgZHluYW1pYyBmaWVsZHMgYW5kIFBN RCB0byBkbyBsb29rdXAgaWYgdGhlIG9mZmxvYWQgaXMNCj4gPiA+Pj4+Pj4gICAgZW5hYmxlZC4g U28sIHRoZSBvbmx5IGRpZmZlcmVuY2Ugd2lsbCBiZSBpbiBubyBvZmZsb2FkDQo+ID4gPj4+Pj4+ ICAgIGluIHRoZSBjYXNlIG9mIGZsb3cgTUFSSy9GTEFHIGFuZCB1c2FnZSBvZiBjb21wbGV4IGxv Z2ljDQo+ID4gPj4+Pj4+ICAgIHRvIHVuZGVyc3RhbmQgaWYgaXQgaXMgc3VwcG9ydGVkIG9yIG5v Lg0KPiA+ID4+Pj4+PiAgICBNYXkgYmUgaXQgd291bGQgYmUgcmVhbGx5IGdvb2Qgc2luY2UgaXQg d2lsbCBhbGxvdyB0bw0KPiA+ID4+Pj4+PiAgICBoYXZlIGR5bmFtaWMgZmllbGRzIHJlZ2lzdGVy ZWQgYmVmb3JlIG1lbXBvb2wgcG9wdWxhdGlvbi4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gMTAu IENvbW1vbiBkcmF3YmFjayBvZiBzb2x1dGlvbnMgKEIpIGFuZCAoQykgaXMgbm8gZ3JhbnVsYXJp dHkuDQo+ID4gPj4+Pj4+ICAgICBTb2x1dGlvbiAoQSkgbWF5IGJlIHBlciBxdWV1ZSB3aGlsZSAo QikgYW5kIChDKSBjYW5ub3QgYmUNCj4gPiA+Pj4+Pj4gICAgIHBlciBxdWV1ZS4gTW9yZW92ZXIg KEMpIGxvb2tzIGdsb2JhbCAtIGZvciBhbGwgZGV2aWNlcy4NCj4gPiA+Pj4+Pj4gICAgIEl0IGNv dWxkIGJlIHJlYWxseSBwYWluZnVsLg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiAoQykgaXMgbmlj ZSwgYnV0IEkgc3RpbGwgdm90ZSBmb3Igc2ltcGxpY2l0eSBhbmQgZ3JhbnVsYXJpdHkgb2YNCj4g PiA+Pj4+Pj4gKEEpLg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4gSSB2b3RlIGZvciBjbGVhciBzZXBh cmF0aW9uIG9mIGFwcGxpY2F0aW9uIG5lZWRzIGFuZCBQTUQNCj4gPiA+Pj4+PiBzdXBwb3J0LCBi eSB1c2luZyB0aGUgbWV0aG9kIEMgKGR5bmFtaWMgZmllbGRzKS4NCj4gPiA+Pj4+PiBJIGFncmVl IHRpbWVzdGFtcCBtdXN0IHVzZSB0aGUgc2FtZSBwYXRoLg0KPiA+ID4+Pj4+IEkgYWdyZWUgaXQn cyBjb21wbGljYXRlIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBpbiBhZHZhbmNlIHdoZXRoZXINCj4g PiA+Pj4+PiBhIGZsb3cgcnVsZSB3aWxsIGJlIGFjY2VwdGVkLCBidXQgdGhhdCdzIHRoZSByZWFs aXR5LCBjb25maWcgaXMgY29tcGxleC4NCj4gPiA+Pj4+DQo+ID4gPj4+PiBEbyB5b3UgdGhpbmsg dGhhdCBnbG9iYWwgbmF0dXJlIG9mIHRoZSAoQykgaXMgYWNjZXB0YWJsZT8NCj4gPiA+Pj4NCj4g PiA+Pj4gVGhhdCdzIGEgZ29vZCBxdWVzdGlvbi4NCj4gPiA+Pj4gTWF5YmUgdGhlIGZlYXR1cmUg cmVxdWVzdCBzaG91bGQgYmUgcGVyIHBvcnQuDQo+ID4gPj4+IEluIHRoaXMgY2FzZSwgd2UgYXJl IGJhY2sgdG8gc29sdXRpb24gQSB3aXRoIGEgZmxhZyBwZXIgcG9ydD8NCj4gPiA+Pj4NCj4gPiA+ Pj4gTm90ZSB0aGF0IEEgYW5kIEMgd2lsbCBub3QgZ3VhcmFudGVlIHRoYXQgdGhlIG9mZmxvYWQg d2lsbCBiZSBwb3NzaWJsZS4NCj4gPiA+Pj4gV2UgbmVlZCBCIChmbG93IHJ1bGUgdmFsaWRhdGlv bikgYW55d2F5Lg0KPiA+ID4+DQo+ID4gPj4gSSBtYXkgbm90IHVuZGVyc3RhbmQgaG93IHNvbHV0 aW9uIEIgY2FuIHdvcmtzIHdlbGwgZm9yIGFsbCB0aGUgY2FzZXMuDQo+ID4gPj4NCj4gPiA+DQo+ ID4gPiBUaGF0IGlzIHRoZSBwb2ludCBvZiBzb2x1dGlvbiBCIGl0IGFsd2F5cyB3b3JrLCBpdCBp cyBhIGJpdCBoYXJkZXINCj4gPiA+IHRvIHVzZSBtYXliZSwgYnV0IHlvdSBjYW4gY2hlY2sgYW5k IGRlY2lkZSBldmVyeXRoaW5nLg0KPiA+ID4NCj4gPiA+PiBBIHJ0ZV9mbG93IHJ1bGUgY2FuIGJl IGlzc3VlZCBhZnRlciBkZXZfc3RhcnQsIHdoaWNoIG1lYW5zIHRoZQ0KPiA+ID4+IHJ4X2J1cnN0 IGZ1bmN0aW9uIGlzIGFscmVhZHkgc2VsZWN0ZWQgYXQgdGhhdCB0aW1lLCBzbyBkb2VzIHRoYXQN Cj4gPiA+PiBtZWFuIHRoZSBkcml2ZXIgbmVlZCB0byBzd2l0Y2ggZnJvbSBhIG5vbi0gbWFyayBv ZmZsb2FkDQo+ID4gYXdhcmUNCj4gPiA+PiBwYXRoIHRvIGEgbWFyayBvZmZsb2FkIGF3YXJlIHBh dGggd2l0aG91dCBzdG9wIGRldmljZT8gb3IgaXQgaGFzIHRvDQo+ID4gPj4gcmVqZWN0DQo+ID4g dGhlDQo+ID4gPj4gZmxvdz8NCj4gPiA+PiBUaGUgcXVlc3Rpb24gaXMgaWYgd2UgaGF2ZSAyIGRh dGEgcGF0aCwgb25lIHN1cHBvcnQgc29tZSBvZmZsb2FkICwNCj4gPiA+PiBvbmUNCj4gPiBub3QN Cj4gPiA+PiBidXQgbW9yZSBmYXN0LCB3aGljaCBvbmUgc2hvdWxkIGJlIHNlbGVjdGVkIGR1cmlu ZyBkZXZfc3RhcnQ/IElzbid0DQo+ID4gT2ZmbG9hZA0KPiA+ID4+IHdpZGVseSB1c2VkIHRvIHNv bHZlIHRoaXMgcHJvYmxlbT8NCj4gPiA+Pg0KPiA+ID4+IEkgdGhpbmsgdGhlIG9wdGlvbiBBIHNv bHZlIGFsbCB0aGUgcHJvYmxlbXMsIG9wdGlvbiBDIG1pZ2h0IGFsc28NCj4gPiA+PiB3b3Jrcywg YnV0DQo+ID4gQSBpcw0KPiA+ID4+IGxvb2tzIG11Y2ggc3RyYWlnaHRmb3J3YXJkIGZvciBtZS4N Cj4gPiA+Pg0KPiA+ID4NCj4gPiA+IFNvbHV0aW9uIEEgbXkgcmVzdWx0IGluIHNlbGVjdGluZyBp bmNvcnJlY3QgZGF0YXBhdGggIHBsZWFzZSBzZWUgbXkNCj4gPiA+IGFuc3dlcg0KPiA+IGFib3Zl Lg0KPiA+ID4NCj4gPiA+IEFzIHlvdSBjYW4gZ3Vlc3MgSSdtIGluIGZhdm9yIG9mIEIgYW5kIEMg KEMgbmVlZCBCKQ0KPiA+ID4NCj4gPiA+PiBSZWdhcmRzDQo+ID4gPj4gUWkNCj4gPiA+Pg0KPiA+ ID4+DQo+ID4gPj4+DQo+ID4gPj4+IEl0IHNlZW1zIEEsIEIsIEMgYXJlIG5vdCBhbHRlcm5hdGl2 ZXMgYnV0IGFsbCByZXF1aXJlZCBhcyBwaWVjZXMNCj4gPiA+Pj4gb2YgYQ0KPiA+IHB1enpsZS4u Lg0KPiA+ID4+Pg0KPiA+ID4NCg0K