From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 58E755398 for ; Fri, 8 Jul 2016 01:15:16 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 07 Jul 2016 16:15:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,326,1464678000"; d="scan'208";a="1012818910" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by orsmga002.jf.intel.com with ESMTP; 07 Jul 2016 16:15:09 -0700 Received: from irsmsx102.ger.corp.intel.com ([169.254.2.10]) by IRSMSX106.ger.corp.intel.com ([169.254.8.145]) with mapi id 14.03.0248.002; Fri, 8 Jul 2016 00:15:08 +0100 From: "Chandran, Sugesh" To: Adrien Mazarguil , "dev@dpdk.org" CC: Thomas Monjalon , "Zhang, Helin" , "Wu, Jingjing" , Rasesh Mody , Ajit Khaparde , "Rahul Lakkireddy" , "Lu, Wenzhuo" , Jan Medala , John Daley , "Chen, Jing D" , "Ananyev, Konstantin" , Matej Vido , Alejandro Lucero , Sony Chacko , Jerin Jacob , "De Lara Guarch, Pablo" , Olga Shern Thread-Topic: [dpdk-dev] [RFC] Generic flow director/filtering/classification API Thread-Index: AQHR1ul13SVB/Bo7y0+HNDeMrG3/bKANL2Zg Date: Thu, 7 Jul 2016 23:15:07 +0000 Message-ID: <2EF2F5C0CC56984AA024D0B180335FCB13DEA331@IRSMSX102.ger.corp.intel.com> References: <20160705181646.GO7621@6wind.com> In-Reply-To: <20160705181646.GO7621@6wind.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC] Generic flow director/filtering/classification API 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, 07 Jul 2016 23:15:17 -0000 SGkgQWRyaWVuLA0KDQpUaGFuayB5b3UgZm9yIHByb3Bvc2luZyB0aGlzLiBJdCB3b3VsZCBiZSBy ZWFsbHkgdXNlZnVsIGZvciBhcHBsaWNhdGlvbiBzdWNoIGFzIE9WUy1EUERLLg0KUGxlYXNlIGZp bmQgbXkgY29tbWVudHMgYW5kIHF1ZXN0aW9ucyBpbmxpbmUgYmVsb3cgcHJlZml4ZWQgd2l0aCBb U3VnZXNoXS4gTW9zdCBvZiB0aGVtIGFyZSBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBlbmFibGlu ZyB0aGVzZSBBUElzIGluIGFwcGxpY2F0aW9uIHN1Y2ggYXMgT1ZTLURQREsuDQoNClJlZ2FyZHMN Cl9TdWdlc2gNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldiBb bWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgQWRyaWVuIE1hemFyZ3Vp bA0KPiBTZW50OiBUdWVzZGF5LCBKdWx5IDUsIDIwMTYgNzoxNyBQTQ0KPiBUbzogZGV2QGRwZGsu b3JnDQo+IENjOiBUaG9tYXMgTW9uamFsb24gPHRob21hcy5tb25qYWxvbkA2d2luZC5jb20+OyBa aGFuZywgSGVsaW4NCj4gPGhlbGluLnpoYW5nQGludGVsLmNvbT47IFd1LCBKaW5namluZyA8amlu Z2ppbmcud3VAaW50ZWwuY29tPjsgUmFzZXNoDQo+IE1vZHkgPHJhc2VzaC5tb2R5QHFsb2dpYy5j b20+OyBBaml0IEtoYXBhcmRlDQo+IDxhaml0LmtoYXBhcmRlQGJyb2FkY29tLmNvbT47IFJhaHVs IExha2tpcmVkZHkNCj4gPHJhaHVsLmxha2tpcmVkZHlAY2hlbHNpby5jb20+OyBMdSwgV2Vuemh1 byA8d2Vuemh1by5sdUBpbnRlbC5jb20+Ow0KPiBKYW4gTWVkYWxhIDxqYW5Ac2VtaWhhbGYuY29t PjsgSm9obiBEYWxleSA8am9obmRhbGVAY2lzY28uY29tPjsgQ2hlbiwNCj4gSmluZyBEIDxqaW5n LmQuY2hlbkBpbnRlbC5jb20+OyBBbmFueWV2LCBLb25zdGFudGluDQo+IDxrb25zdGFudGluLmFu YW55ZXZAaW50ZWwuY29tPjsgTWF0ZWogVmlkbyA8bWF0ZWp2aWRvQGdtYWlsLmNvbT47DQo+IEFs ZWphbmRybyBMdWNlcm8gPGFsZWphbmRyby5sdWNlcm9AbmV0cm9ub21lLmNvbT47IFNvbnkgQ2hh Y2tvDQo+IDxzb255LmNoYWNrb0BxbG9naWMuY29tPjsgSmVyaW4gSmFjb2INCj4gPGplcmluLmph Y29iQGNhdml1bW5ldHdvcmtzLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbw0KPiA8cGFibG8u ZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsgT2xnYSBTaGVybiA8b2xnYXNAbWVsbGFub3guY29t Pg0KPiBTdWJqZWN0OiBbZHBkay1kZXZdIFtSRkNdIEdlbmVyaWMgZmxvdyBkaXJlY3Rvci9maWx0 ZXJpbmcvY2xhc3NpZmljYXRpb24gQVBJDQo+IA0KPiBIaSBBbGwsDQo+IA0KPiBGaXJzdCwgZm9y Z2l2ZSBtZSBmb3IgdGhpcyBsYXJnZSBtZXNzYWdlLCBJIGtub3cgb3VyIG1haWxib3hlcyBhbHJl YWR5DQo+IHN1ZmZlciBxdWl0ZSBhIGJpdCBmcm9tIHRoZSBhbW91bnQgb2YgdHJhZmZpYyBvbiB0 aGlzIE1MLg0KPiANCj4gVGhpcyBpcyBub3QgZXhhY3RseSB5ZXQgYW5vdGhlciB0aHJlYWQgYWJv dXQgaG93IGZsb3cgZGlyZWN0b3Igc2hvdWxkIGJlDQo+IGV4dGVuZGVkLCByYXRoZXIgYWJvdXQg YSBicmFuZCBuZXcgQVBJIHRvIGhhbmRsZSBmaWx0ZXJpbmcgYW5kDQo+IGNsYXNzaWZpY2F0aW9u IGZvciBpbmNvbWluZyBwYWNrZXRzIGluIHRoZSBtb3N0IFBNRC1nZW5lcmljIGFuZA0KPiBhcHBs aWNhdGlvbi1mcmllbmRseSBmYXNoaW9uIHdlIGNhbiBjb21lIHVwIHdpdGguIFJlYXNvbnMgZGVz Y3JpYmVkIGJlbG93Lg0KPiANCj4gSSB0aGluayB0aGlzIHRvcGljIGlzIGltcG9ydGFudCBlbm91 Z2ggdG8gaW5jbHVkZSBib3RoIHRoZSB1c2VycyBvZiB0aGlzIEFQSQ0KPiBhcyB3ZWxsIGFzIFBN RCBtYWludGFpbmVycy4gU28gZmFyIEkgaGF2ZSBDQydlZCBsaWJydGVfZXRoZXIgKGVzcGVjaWFs bHkNCj4gcnRlX2V0aF9jdHJsLmggY29udHJpYnV0b3JzKSwgdGVzdHBtZCBhbmQgUE1EIG1haW50 YWluZXJzICh3aXRoIGFuZA0KPiB3aXRob3V0DQo+IGEgLmZpbHRlcl9jdHJsIGltcGxlbWVudGF0 aW9uKSwgYnV0IGlmIHlvdSBrbm93IGFwcGxpY2F0aW9uIG1haW50YWluZXJzDQo+IG90aGVyIHRo YW4gdGVzdHBtZCB3aG8gdXNlIEZESVIgb3IgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiB0aGlzIGRp c2N1c3Npb24sDQo+IGZlZWwgZnJlZSB0byBhZGQgdGhlbS4NCj4gDQo+IFRoZSBpc3N1ZXMgd2Ug Zm91bmQgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaCBhcmUgYWxyZWFkeSBzdW1tYXJpemVkIGlu DQo+IHRoZQ0KPiBmb2xsb3dpbmcgZG9jdW1lbnQsIGJ1dCBoZXJlIGlzIGEgcXVpY2sgc3VtbWFy eSBmb3IgVEw7RFIgZm9sa3M6DQo+IA0KPiAtIFBNRHMgZG8gbm90IGV4cG9zZSBhIGNvbW1vbiBz ZXQgb2YgZmlsdGVyIHR5cGVzIGFuZCBldmVuIHdoZW4gdGhleSBkbywNCj4gICB0aGVpciBiZWhh dmlvciBtb3JlIG9yIGxlc3MgZGlmZmVycy4NCj4gDQo+IC0gQXBwbGljYXRpb25zIG5lZWQgdG8g ZGV0ZXJtaW5lIGFuZCBhZGFwdCB0byBkZXZpY2Utc3BlY2lmaWMgbGltaXRhdGlvbnMNCj4gICBh bmQgcXVpcmtzIG9uIHRoZWlyIG93biwgd2l0aG91dCBoZWxwIGZyb20gUE1Ecy4NCj4gDQo+IC0g V3JpdGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0IGNyZWF0ZXMgZmxvdyBydWxlcyB0YXJnZXRpbmcg YWxsIGRldmljZXMNCj4gICBzdXBwb3J0ZWQgYnkgRFBESyBpcyB0aHVzIGRpZmZpY3VsdCwgaWYg bm90IGltcG9zc2libGUuDQo+IA0KPiAtIFRoZSBjdXJyZW50IEFQSSBoYXMgdG9vIG1hbnkgdW5z cGVjaWZpZWQgYXJlYXMgKHBhcnRpY3VsYXJseSByZWdhcmRpbmcNCj4gICBzaWRlIGVmZmVjdHMg b2YgZmxvdyBydWxlcykgdGhhdCBtYWtlIFBNRCBpbXBsZW1lbnRhdGlvbiB0cmlja3kuDQo+IA0K PiBUaGlzIFJGQyBBUEkgaGFuZGxlcyBldmVyeXRoaW5nIGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkg LmZpbHRlcl9jdHJsLCB0aGUNCj4gaWRlYSBiZWluZyB0byByZWltcGxlbWVudCBhbGwgb2YgdGhl c2UgdG8gbWFrZSB0aGVtIGZ1bGx5IHVzYWJsZSBieQ0KPiBhcHBsaWNhdGlvbnMgaW4gYSBtb3Jl IGdlbmVyaWMgYW5kIHdlbGwgZGVmaW5lZCBmYXNoaW9uLiBJdCBoYXMgYSB2ZXJ5IHNtYWxsDQo+ IHNldCBvZiBtYW5kYXRvcnkgZmVhdHVyZXMgYW5kIGFuIGVhc3kgbWV0aG9kIHRvIGxldCBhcHBs aWNhdGlvbnMgcHJvYmUgZm9yDQo+IHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMuDQo+IA0KPiBUaGUg b25seSBkb3duc2lkZSBpcyBtb3JlIHdvcmsgZm9yIHRoZSBzb2Z0d2FyZSBjb250cm9sIHNpZGUg b2YgUE1Ecw0KPiBiZWNhdXNlDQo+IHRoZXkgaGF2ZSB0byBhZGFwdCB0byB0aGUgQVBJIGluc3Rl YWQgb2YgdGhlIHJldmVyc2UuIEkgdGhpbmsgaGVscGVycyBjYW4gYmUNCj4gYWRkZWQgdG8gRUFM IHRvIGFzc2lzdCB3aXRoIHRoaXMuDQo+IA0KPiBIVE1MIHZlcnNpb246DQo+IA0KPiAgaHR0cHM6 Ly9yYXdnaXQuY29tLzZXSU5EL3J0ZV9mbG93L21hc3Rlci9ydGVfZmxvdy5odG1sDQo+IA0KPiBQ REYgdmVyc2lvbjoNCj4gDQo+ICBodHRwczovL3Jhd2dpdC5jb20vNldJTkQvcnRlX2Zsb3cvbWFz dGVyL3J0ZV9mbG93LnBkZg0KPiANCj4gUmVsYXRlZCBkcmFmdCBoZWFkZXIgZmlsZSAoZm9yIHJl ZmVyZW5jZSB3aGlsZSByZWFkaW5nIHRoZSBzcGVjaWZpY2F0aW9uKToNCj4gDQo+ICBodHRwczov L3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vNldJTkQvcnRlX2Zsb3cvbWFzdGVyL3J0ZV9mbG93 LmgNCj4gDQo+IEdpdCB0cmVlIGZvciBjb21wbGV0ZW5lc3MgKGxhdGVzdCAucnN0IHZlcnNpb24g Y2FuIGJlIHJldHJpZXZlZCBmcm9tIGhlcmUpOg0KPiANCj4gIGh0dHBzOi8vZ2l0aHViLmNvbS82 V0lORC9ydGVfZmxvdw0KPiANCj4gV2hhdCBmb2xsb3dzIGlzIHRoZSBSZVNUIHNvdXJjZSBvZiB0 aGUgYWJvdmUsIGZvciBpbmxpbmUgY29tbWVudHMgYW5kDQo+IGRpc2N1c3Npb24uIEkgaW50ZW5k IHRvIHVwZGF0ZSB0aGF0IHNwZWNpZmljYXRpb24gYWNjb3JkaW5nbHkuDQo+IA0KPiA9PT09PT09 PT09PT09PT09PT09PT09PT0NCj4gR2VuZXJpYyBmaWx0ZXIgaW50ZXJmYWNlDQo+ID09PT09PT09 PT09PT09PT09PT09PT09PQ0KPiANCj4gLi4gZm9vdGVyOjoNCj4gDQo+ICAgIHYwLjYNCj4gDQo+ IC4uIGNvbnRlbnRzOjoNCj4gLi4gc2VjdG51bTo6DQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAg UGFnZUJyZWFrDQo+IA0KPiBPdmVydmlldw0KPiA9PT09PT09PQ0KPiANCj4gRFBESyBwcm92aWRl cyBzZXZlcmFsIGNvbXBldGluZyBpbnRlcmZhY2VzIGFkZGVkIG92ZXIgdGltZSB0byBwZXJmb3Jt DQo+IHBhY2tldA0KPiBtYXRjaGluZyBhbmQgcmVsYXRlZCBhY3Rpb25zIHN1Y2ggYXMgZmlsdGVy aW5nIGFuZCBjbGFzc2lmaWNhdGlvbi4NCj4gDQo+IFRoZXkgbXVzdCBiZSBleHRlbmRlZCB0byBp bXBsZW1lbnQgdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBieSBuZXdlcg0KPiBkZXZpY2VzDQo+IGlu IG9yZGVyIHRvIGV4cG9zZSB0aGVtIHRvIGFwcGxpY2F0aW9ucywgaG93ZXZlciB0aGUgY3VycmVu dCBkZXNpZ24gaGFzDQo+IHNldmVyYWwgZHJhd2JhY2tzOg0KPiANCj4gLSBDb21wbGljYXRlZCBm aWx0ZXIgY29tYmluYXRpb25zIHdoaWNoIGhhdmUgbm90IGJlZW4gaGFyZC1jb2RlZCBjYW5ub3Qg YmUNCj4gICBleHByZXNzZWQuDQo+IC0gUHJvbmUgdG8gQVBJL0FCSSBicmVha2FnZSB3aGVuIG5l dyBmZWF0dXJlcyBtdXN0IGJlIGFkZGVkIHRvIGFuDQo+IGV4aXN0aW5nDQo+ICAgZmlsdGVyIHR5 cGUsIHdoaWNoIGZyZXF1ZW50bHkgaGFwcGVucy4NCj4gDQo+IEZyb20gYW4gYXBwbGljYXRpb24g cG9pbnQgb2YgdmlldzoNCj4gDQo+IC0gSGF2aW5nIGRpc3BhcmF0ZSBpbnRlcmZhY2VzLCBhbGwg b3B0aW9uYWwgYW5kIGxhY2tpbmcgaW4gZmVhdHVyZXMgZG9lcyBub3QNCj4gICBtYWtlIHRoaXMg QVBJIGVhc3kgdG8gdXNlLg0KPiAtIFNlZW1pbmdseSBhcmJpdHJhcnkgYnVpbHQtaW4gbGltaXRh dGlvbnMgb2YgZmlsdGVyIHR5cGVzIGJhc2VkIG9uIHRoZQ0KPiAgIGRldmljZSB0aGV5IHdlcmUg aW5pdGlhbGx5IGRlc2lnbmVkIGZvci4NCj4gLSBVbmRlZmluZWQgcmVsYXRpb25zaGlwIGJldHdl ZW4gZGlmZmVyZW50IGZpbHRlciB0eXBlcy4NCj4gLSBIaWdoIGNvbXBsZXhpdHksIGNvbnNpZGVy YWJsZSB1bmRvY3VtZW50ZWQgYW5kL29yIHVuZGVmaW5lZCBiZWhhdmlvci4NCj4gDQo+IENvbnNp ZGVyaW5nIHRoZSBncm93aW5nIG51bWJlciBvZiBkZXZpY2VzIHN1cHBvcnRlZCBieSBEUERLLCBh ZGRpbmcgYQ0KPiBuZXcNCj4gZmlsdGVyIHR5cGUgZWFjaCB0aW1lIGEgbmV3IGZlYXR1cmUgbXVz dCBiZSBpbXBsZW1lbnRlZCBpcyBub3Qgc3VzdGFpbmFibGUNCj4gaW4gdGhlIGxvbmcgdGVybS4g QXBwbGljYXRpb25zIG5vdCB3cml0dGVuIHRvIHRhcmdldCBhIHNwZWNpZmljIGRldmljZQ0KPiBj YW5ub3QgcmVhbGx5IGJlbmVmaXQgZnJvbSBzdWNoIGFuIEFQSS4NCj4gDQo+IEZvciB0aGVzZSBy ZWFzb25zLCB0aGlzIGRvY3VtZW50IGRlZmluZXMgYW4gZXh0ZW5zaWJsZSB1bmlmaWVkIEFQSSB0 aGF0DQo+IGVuY29tcGFzc2VzIGFuZCBzdXBlcnNlZGVzIHRoZXNlIGxlZ2FjeSBmaWx0ZXIgdHlw ZXMuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gQ3VycmVu dCBBUEkNCj4gPT09PT09PT09PT0NCj4gDQo+IFJhdGlvbmFsZQ0KPiAtLS0tLS0tLS0NCj4gDQo+ IFRoZSByZWFzb24gc2V2ZXJhbCBjb21wZXRpbmcgKGFuZCBtb3N0bHkgb3ZlcmxhcHBpbmcpIGZp bHRlcmluZyBBUElzIGFyZQ0KPiBwcmVzZW50IGluIERQREsgaXMgZHVlIHRvIGl0cyBuYXR1cmUg YXMgYSB0aGluIGxheWVyIGJldHdlZW4gaGFyZHdhcmUgYW5kDQo+IHNvZnR3YXJlLg0KPiANCj4g RWFjaCBzdWJzZXF1ZW50IGludGVyZmFjZSBoYXMgYmVlbiBhZGRlZCB0byBiZXR0ZXIgbWF0Y2gg dGhlIGNhcGFiaWxpdGllcw0KPiBhbmQgbGltaXRhdGlvbnMgb2YgdGhlIGxhdGVzdCBzdXBwb3J0 ZWQgZGV2aWNlLCB3aGljaCB1c3VhbGx5IGhhcHBlbmVkIHRvDQo+IG5lZWQgYW4gaW5jb21wYXRp YmxlIGNvbmZpZ3VyYXRpb24gYXBwcm9hY2guIEJlY2F1c2Ugb2YgdGhpcywgbWFueSBlbmRlZA0K PiB1cA0KPiBkZXZpY2UtY2VudHJpYyBhbmQgbm90IHVzYWJsZSBieSBhcHBsaWNhdGlvbnMgdGhh dCB3ZXJlIG5vdCB3cml0dGVuIGZvciB0aGF0DQo+IHBhcnRpY3VsYXIgZGV2aWNlLg0KPiANCj4g VGhpcyBkb2N1bWVudCBpcyBub3QgdGhlIGZpcnN0IGF0dGVtcHQgdG8gYWRkcmVzcyB0aGlzIHBy b2xpZmVyYXRpb24gaXNzdWUsDQo+IGluIGZhY3QgYSBsb3Qgb2Ygd29yayBoYXMgYWxyZWFkeSBi ZWVuIGRvbmUgYm90aCB0byBjcmVhdGUgYSBtb3JlIGdlbmVyaWMNCj4gaW50ZXJmYWNlIHdoaWxl IHNvbWV3aGF0IGtlZXBpbmcgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBvbmVzIHRocm91Z2gg YQ0KPiBjb21tb24gY2FsbCBpbnRlcmZhY2UgKGBgcnRlX2V0aF9kZXZfZmlsdGVyX2N0cmwoKWBg IHdpdGggdGhlDQo+IGBgLmZpbHRlcl9jdHJsYGAgUE1EIGNhbGxiYWNrIGluIGBgcnRlX2V0aGRl di5oYGApLg0KPiANCj4gVG9kYXksIHRoZXNlIHByZXZpb3VzbHkgaW5jb21wYXRpYmxlIGludGVy ZmFjZXMgYXJlIGtub3duIGFzIGZpbHRlciB0eXBlcw0KPiAoYGBSVEVfRVRIX0ZJTFRFUl8qYGAg ZnJvbSBgYGVudW0gcnRlX2ZpbHRlcl90eXBlYGAgaW4gYGBydGVfZXRoX2N0cmwuaGBgKS4NCj4g DQo+IEhvd2V2ZXIgd2hpbGUgdHJpdmlhbCB0byBleHRlbmQgd2l0aCBuZXcgdHlwZXMsIGl0IG9u bHkgc2hpZnRlZCB0aGUNCj4gdW5kZXJseWluZyBwcm9ibGVtIGFzIGFwcGxpY2F0aW9ucyBzdGls bCBuZWVkIHRvIGJlIHdyaXR0ZW4gZm9yIG9uZSBraW5kIG9mDQo+IGZpbHRlciB0eXBlLCB3aGlj aCwgYXMgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMsIGlzIG5vdA0KPiBuZWNl c3NhcmlseSBpbXBsZW1lbnRlZCBieSBhbGwgUE1EcyB0aGF0IHN1cHBvcnQgZmlsdGVyaW5nLg0K PiANCj4gLi4gcmF3OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IEZpbHRlciB0eXBl cw0KPiAtLS0tLS0tLS0tLS0NCj4gDQo+IFRoaXMgc2VjdGlvbiBzdW1tYXJpemVzIHRoZSBjYXBh YmlsaXRpZXMgb2YgZWFjaCBmaWx0ZXIgdHlwZS4NCj4gDQo+IEFsdGhvdWdoIHRoZSBmb2xsb3dp bmcgbGlzdCBpcyBleGhhdXN0aXZlLCB0aGUgZGVzY3JpcHRpb24gb2YgaW5kaXZpZHVhbA0KPiB0 eXBlcyBtYXkgY29udGFpbiBpbmFjY3VyYWNpZXMgZHVlIHRvIHRoZSBsYWNrIG9mIGRvY3VtZW50 YXRpb24gb3IgdXNhZ2UNCj4gZXhhbXBsZXMuDQo+IA0KPiBOb3RlOiBuYW1lcyBhcmUgcHJlZml4 ZWQgd2l0aCBgYFJURV9FVEhfRklMVEVSX2BgLg0KPiANCj4gYGBNQUNWTEFOYGANCj4gfn5+fn5+ fn5+fn4NCj4gDQo+IE1hdGNoaW5nOg0KPiANCj4gLSBMMiBzb3VyY2UvZGVzdGluYXRpb24gYWRk cmVzc2VzLg0KPiAtIE9wdGlvbmFsIDgwMi4xUSBWTEFOIElELg0KPiAtIE1hc2tpbmcgaW5kaXZp ZHVhbCBmaWVsZHMgb24gYSBydWxlIGJhc2lzIGlzIG5vdCBzdXBwb3J0ZWQuDQo+IA0KPiBBY3Rp b246DQo+IA0KPiAtIFBhY2tldHMgYXJlIHJlZGlyZWN0ZWQgZWl0aGVyIHRvIGEgZ2l2ZW4gVkYg ZGV2aWNlIHVzaW5nIGl0cyBJRCBvciB0byB0aGUNCj4gICBQRi4NCj4gDQo+IGBgRVRIRVJUWVBF YGANCj4gfn5+fn5+fn5+fn5+fg0KPiANCj4gTWF0Y2hpbmc6DQo+IA0KPiAtIEwyIHNvdXJjZS9k ZXN0aW5hdGlvbiBhZGRyZXNzZXMgKG9wdGlvbmFsKS4NCj4gLSBFdGhlcnR5cGUgKG5vIFZMQU4g SUQ/KS4NCj4gLSBNYXNraW5nIGluZGl2aWR1YWwgZmllbGRzIG9uIGEgcnVsZSBiYXNpcyBpcyBu b3Qgc3VwcG9ydGVkLg0KPiANCj4gQWN0aW9uOg0KPiANCj4gLSBSZWNlaXZlIHBhY2tldHMgb24g YSBnaXZlbiBxdWV1ZS4NCj4gLSBEcm9wIHBhY2tldHMuDQo+IA0KPiBgYEZMRVhJQkxFYGANCj4g fn5+fn5+fn5+fn5+DQo+IA0KPiBNYXRjaGluZzoNCj4gDQo+IC0gQXQgbW9zdCAxMjggY29uc2Vj dXRpdmUgYnl0ZXMgYW55d2hlcmUgaW4gcGFja2V0cy4NCj4gLSBNYXNraW5nIGlzIHN1cHBvcnRl ZCB3aXRoIGJ5dGUgZ3JhbnVsYXJpdHkuDQo+IC0gUHJpb3JpdGllcyBhcmUgc3VwcG9ydGVkIChy ZWxhdGl2ZSB0byB0aGlzIGZpbHRlciB0eXBlLCB1bmRlZmluZWQNCj4gICBvdGhlcndpc2UpLg0K PiANCj4gQWN0aW9uOg0KPiANCj4gLSBSZWNlaXZlIHBhY2tldHMgb24gYSBnaXZlbiBxdWV1ZS4N Cj4gDQo+IGBgU1lOYGANCj4gfn5+fn5+fg0KPiANCj4gTWF0Y2hpbmc6DQo+IA0KPiAtIFRDUCBT WU4gcGFja2V0cyBvbmx5Lg0KPiAtIE9uZSBoaWdoIHByaW9yaXR5IGJpdCBjYW4gYmUgc2V0IHRv IGdpdmUgdGhlIGhpZ2hlc3QgcG9zc2libGUgcHJpb3JpdHkgdG8NCj4gICB0aGlzIHR5cGUgd2hl biBvdGhlciBmaWx0ZXJzIHdpdGggZGlmZmVyZW50IHR5cGVzIGFyZSBjb25maWd1cmVkLg0KPiAN Cj4gQWN0aW9uOg0KPiANCj4gLSBSZWNlaXZlIHBhY2tldHMgb24gYSBnaXZlbiBxdWV1ZS4NCj4g DQo+IGBgTlRVUExFYGANCj4gfn5+fn5+fn5+fg0KPiANCj4gTWF0Y2hpbmc6DQo+IA0KPiAtIFNv dXJjZS9kZXN0aW5hdGlvbiBJUHY0IGFkZHJlc3NlcyAob3B0aW9uYWwgaW4gMi10dXBsZSBtb2Rl KS4NCj4gLSBTb3VyY2UvZGVzdGluYXRpb24gVENQL1VEUCBwb3J0IChtYW5kYXRvcnkgaW4gMiBh bmQgNS10dXBsZSBtb2RlcykuDQo+IC0gTDQgcHJvdG9jb2wgKDIgYW5kIDUtdHVwbGUgbW9kZXMp Lg0KPiAtIE1hc2tpbmcgaW5kaXZpZHVhbCBmaWVsZHMgaXMgc3VwcG9ydGVkLg0KPiAtIFRDUCBm bGFncy4NCj4gLSBVcCB0byA3IGxldmVscyBvZiBwcmlvcml0eSByZWxhdGl2ZSB0byB0aGlzIGZp bHRlciB0eXBlLCB1bmRlZmluZWQNCj4gICBvdGhlcndpc2UuDQo+IC0gTm8gSVB2Ni4NCj4gDQo+ IEFjdGlvbjoNCj4gDQo+IC0gUmVjZWl2ZSBwYWNrZXRzIG9uIGEgZ2l2ZW4gcXVldWUuDQo+IA0K PiBgYFRVTk5FTGBgDQo+IH5+fn5+fn5+fn4NCj4gDQo+IE1hdGNoaW5nOg0KPiANCj4gLSBPdXRl ciBMMiBzb3VyY2UvZGVzdGluYXRpb24gYWRkcmVzc2VzLg0KPiAtIElubmVyIEwyIHNvdXJjZS9k ZXN0aW5hdGlvbiBhZGRyZXNzZXMuDQo+IC0gSW5uZXIgVkxBTiBJRC4NCj4gLSBJUHY0L0lQdjYg c291cmNlIChkZXN0aW5hdGlvbj8pIGFkZHJlc3MuDQo+IC0gVHVubmVsIHR5cGUgdG8gbWF0Y2gg KFZYTEFOLCBHRU5FVkUsIFRFUkVETywgTlZHUkUsIElQIG92ZXIgR1JFLA0KPiA4MDIuMUJSDQo+ ICAgRS1UYWcpLg0KPiAtIFRlbmFudCBJRCBmb3IgdHVubmVsaW5nIHByb3RvY29scyB0aGF0IGhh dmUgb25lLg0KPiAtIEFueSBjb21iaW5hdGlvbiBvZiB0aGUgYWJvdmUgY2FuIGJlIHNwZWNpZmll ZC4NCj4gLSBNYXNraW5nIGluZGl2aWR1YWwgZmllbGRzIG9uIGEgcnVsZSBiYXNpcyBpcyBub3Qg c3VwcG9ydGVkLg0KPiANCj4gQWN0aW9uOg0KPiANCj4gLSBSZWNlaXZlIHBhY2tldHMgb24gYSBn aXZlbiBxdWV1ZS4NCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0K PiBgYEZESVJgYA0KPiB+fn5+fn5+fg0KPiANCj4gUXVlcmllczoNCj4gDQo+IC0gRGV2aWNlIGNh cGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMuDQo+IC0gRGV2aWNlIHN0YXRpc3RpY3MgYWJvdXQg Y29uZmlndXJlZCBmaWx0ZXJzIChyZXNvdXJjZSB1c2FnZSwgY29sbGlzaW9ucykuDQo+IC0gRGV2 aWNlIGNvbmZpZ3VyYXRpb24gKG1hdGNoaW5nIGlucHV0IHNldCBhbmQgbWFza3MpDQo+IA0KPiBN YXRjaGluZzoNCj4gDQo+IC0gRGV2aWNlIG1vZGUgb2Ygb3BlcmF0aW9uOiBub25lICh0byBkaXNh YmxlIGZpbHRlcmluZyksIHNpZ25hdHVyZQ0KPiAgIChoYXNoLWJhc2VkIGRpc3BhdGNoaW5nIGZy b20gbWFza2VkIGZpZWxkcykgb3IgcGVyZmVjdCAoZWl0aGVyIE1BQyBWTEFODQo+IG9yDQo+ICAg dHVubmVsKS4NCj4gLSBMMiBFdGhlcnR5cGUuDQo+IC0gT3V0ZXIgTDIgZGVzdGluYXRpb24gYWRk cmVzcyAoTUFDIFZMQU4gbW9kZSkuDQo+IC0gSW5uZXIgTDIgZGVzdGluYXRpb24gYWRkcmVzcywg dHVubmVsIHR5cGUgKE5WR1JFLCBWWExBTikgYW5kIHR1bm5lbCBJRA0KPiAgICh0dW5uZWwgbW9k ZSkuDQo+IC0gSVB2NCBzb3VyY2UvZGVzdGluYXRpb24gYWRkcmVzc2VzLCBUb1MsIFRUTCBhbmQg cHJvdG9jb2wgZmllbGRzLg0KPiAtIElQdjYgc291cmNlL2Rlc3RpbmF0aW9uIGFkZHJlc3Nlcywg VEMsIHByb3RvY29sIGFuZCBob3AgbGltaXRzIGZpZWxkcy4NCj4gLSBVRFAgc291cmNlL2Rlc3Rp bmF0aW9uIElQdjQvSVB2NiBhbmQgcG9ydHMuDQo+IC0gVENQIHNvdXJjZS9kZXN0aW5hdGlvbiBJ UHY0L0lQdjYgYW5kIHBvcnRzLg0KPiAtIFNDVFAgc291cmNlL2Rlc3RpbmF0aW9uIElQdjQvSVB2 NiwgcG9ydHMgYW5kIHZlcmlmaWNhdGlvbiB0YWcgZmllbGQuDQo+IC0gTm90ZSwgb25seSBvbmUg cHJvdG9jb2wgdHlwZSBhdCBvbmNlIChlaXRoZXIgb25seSBMMiBFdGhlcnR5cGUsIGJhc2ljDQo+ ICAgSVB2NiwgSVB2NCtVRFAsIElQdjQrVENQIGFuZCBzbyBvbikuDQo+IC0gVkxBTiBUQ0kgKGV4 dGVuZGVkIEFQSSkuDQo+IC0gQXQgbW9zdCAxNiBieXRlcyB0byBtYXRjaCBpbiBwYXlsb2FkIChl eHRlbmRlZCBBUEkpLiBBIGdsb2JhbCBkZXZpY2UNCj4gICBsb29rLXVwIHRhYmxlIHNwZWNpZmll cyBmb3IgZWFjaCBwb3NzaWJsZSBwcm90b2NvbCBsYXllciAodW5rbm93biwgcmF3LA0KPiAgIEwy LCBMMywgTDQpIHRoZSBvZmZzZXQgdG8gdXNlIGZvciBlYWNoIGJ5dGUgKHRoZXkgZG8gbm90IG5l ZWQgdG8gYmUNCj4gICBjb250aWd1b3VzKSBhbmQgdGhlIHJlbGF0ZWQgYml0bWFzay4NCj4gLSBX aGV0aGVyIHBhY2tldCBpcyBhZGRyZXNzZWQgdG8gUEYgb3IgVkYsIGluIHRoYXQgY2FzZSBpdHMg SUQgY2FuIGJlDQo+ICAgbWF0Y2hlZCBhcyB3ZWxsIChleHRlbmRlZCBBUEkpLg0KPiAtIE1hc2tp bmcgbW9zdCBvZiB0aGUgYWJvdmUgZmllbGRzIGlzIHN1cHBvcnRlZCwgYnV0IHNpbXVsdGFuZW91 c2x5IGFmZmVjdHMNCj4gICBhbGwgZmlsdGVycyBjb25maWd1cmVkIG9uIGEgZGV2aWNlLg0KPiAt IElucHV0IHNldCBjYW4gYmUgbW9kaWZpZWQgaW4gYSBzaW1pbGFyIGZhc2hpb24gZm9yIGEgZ2l2 ZW4gZGV2aWNlIHRvDQo+ICAgaWdub3JlIGluZGl2aWR1YWwgZmllbGRzIG9mIGZpbHRlcnMgKGku ZS4gZG8gbm90IG1hdGNoIHRoZSBkZXN0aW5hdGlvbg0KPiAgIGFkZHJlc3MgaW4gYSBJUHY0IGZp bHRlciwgcmVmZXIgdG8gKipSVEVfRVRIX0lOUFVUX1NFVF8qKg0KPiAgIG1hY3JvcykuIENvbmZp Z3VyaW5nIHRoaXMgYWxzbyBhZmZlY3RzIFJTUyBwcm9jZXNzaW5nIG9uICoqaTQwZSoqLg0KPiAt IEZpbHRlcnMgY2FuIGFsc28gcHJvdmlkZSAzMiBiaXRzIG9mIGFyYml0cmFyeSBkYXRhIHRvIHJl dHVybiBhcyBwYXJ0IG9mDQo+ICAgbWF0Y2hlZCBwYWNrZXRzLg0KPiANCj4gQWN0aW9uOg0KPiAN Cj4gLSAqKlJURV9FVEhfRkRJUl9BQ0NFUFQqKjogcmVjZWl2ZSAoYWNjZXB0KSBwYWNrZXQgb24g YSBnaXZlbiBxdWV1ZS4NCj4gLSAqKlJURV9FVEhfRkRJUl9SRUpFQ1QqKjogZHJvcCBwYWNrZXQg aW1tZWRpYXRlbHkuDQo+IC0gKipSVEVfRVRIX0ZESVJfUEFTU1RIUlUqKjogc2ltaWxhciB0byBh Y2NlcHQgZm9yIHRoZSBsYXN0IGZpbHRlciBpbiBsaXN0LA0KPiAgIG90aGVyd2lzZSBwcm9jZXNz IGl0IHdpdGggc3Vic2VxdWVudCBmaWx0ZXJzLg0KPiAtIEZvciBhY2NlcHRlZCBwYWNrZXRzIGFu ZCBpZiByZXF1ZXN0ZWQgYnkgZmlsdGVyLCBlaXRoZXIgMzIgYml0cyBvZg0KPiAgIGFyYml0cmFy eSBkYXRhIGFuZCBmb3VyIGJ5dGVzIG9mIG1hdGNoZWQgcGF5bG9hZCAob25seSBpbiBjYXNlIG9m IGZsZXgNCj4gICBieXRlcyBtYXRjaGluZyksIG9yIGVpZ2h0IGJ5dGVzIG9mIG1hdGNoZWQgcGF5 bG9hZCAoZmxleCBhbHNvKSBhcmUgYWRkZWQNCj4gICB0byBtZXRhIGRhdGEuDQo+IA0KPiAuLiBy YXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gYGBIQVNIYGANCj4gfn5+fn5+fn4N Cj4gDQo+IE5vdCBhbiBhY3R1YWwgZmlsdGVyIHR5cGUuIFByb3ZpZGVzIGFuZCByZXRyaWV2ZXMg dGhlIGdsb2JhbCBkZXZpY2UNCj4gY29uZmlndXJhdGlvbiAocGVyIHBvcnQgb3IgZW50aXJlIE5J QykgZm9yIGhhc2ggZnVuY3Rpb25zIGFuZCB0aGVpcg0KPiBwcm9wZXJ0aWVzLg0KPiANCj4gSGFz aCBmdW5jdGlvbiBzZWxlY3Rpb246ICJkZWZhdWx0IiAoa2VlcCBjdXJyZW50KSwgWE9SIG9yIFRv ZXBsaXR6Lg0KPiANCj4gVGhpcyBmdW5jdGlvbiBjYW4gYmUgY29uZmlndXJlZCBwZXIgZmxvdyB0 eXBlICgqKlJURV9FVEhfRkxPV18qKg0KPiBkZWZpbml0aW9ucyksIHN1cHBvcnRlZCB0eXBlcyBh cmU6DQo+IA0KPiAtIFVua25vd24uDQo+IC0gUmF3Lg0KPiAtIEZyYWdtZW50ZWQgb3Igbm9uLWZy YWdtZW50ZWQgSVB2NC4NCj4gLSBOb24tZnJhZ21lbnRlZCBJUHY0IHdpdGggTDQgKFRDUCwgVURQ LCBTQ1RQIG9yIG90aGVyKS4NCj4gLSBGcmFnbWVudGVkIG9yIG5vbi1mcmFnbWVudGVkIElQdjYu DQo+IC0gTm9uLWZyYWdtZW50ZWQgSVB2NiB3aXRoIEw0IChUQ1AsIFVEUCwgU0NUUCBvciBvdGhl cikuDQo+IC0gTDIgcGF5bG9hZC4NCj4gLSBJUHY2IHdpdGggZXh0ZW5zaW9ucy4NCj4gLSBJUHY2 IHdpdGggTDQgKFRDUCwgVURQKSBhbmQgZXh0ZW5zaW9ucy4NCj4gDQo+IGBgTDJfVFVOTkVMYGAN Cj4gfn5+fn5+fn5+fn5+fg0KPiANCj4gTWF0Y2hpbmc6DQo+IA0KPiAtIEFsbCBwYWNrZXRzIHJl Y2VpdmVkIG9uIGEgZ2l2ZW4gcG9ydC4NCj4gDQo+IEFjdGlvbjoNCj4gDQo+IC0gQWRkIHR1bm5l bCBlbmNhcHN1bGF0aW9uIChWWExBTiwgR0VORVZFLCBURVJFRE8sIE5WR1JFLCBJUCBvdmVyIEdS RSwNCj4gICA4MDIuMUJSIEUtVGFnKSB1c2luZyB0aGUgcHJvdmlkZWQgRXRoZXJ0eXBlIGFuZCB0 dW5uZWwgSUQgKG9ubHkgRS1UYWcNCj4gICBpcyBpbXBsZW1lbnRlZCBhdCB0aGUgbW9tZW50KS4N Cj4gLSBWRiBJRCB0byB1c2UgZm9yIHRhZyBpbnNlcnRpb24gKGN1cnJlbnRseSB1bnVzZWQpLg0K PiAtIERlc3RpbmF0aW9uIHBvb2wgZm9yIHRhZyBiYXNlZCBmb3J3YXJkaW5nIChwb29scyBhcmUg SURzIHRoYXQgY2FuIGJlDQo+ICAgYWZmZWN0ZWQgdG8gcG9ydHMsIGR1cGxpY2F0aW9uIG9jY3Vy cyBpZiB0aGUgc2FtZSBJRCBpcyBzaGFyZWQgYnkgc2V2ZXJhbA0KPiAgIHBvcnRzIG9mIHRoZSBz YW1lIE5JQykuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4g RHJpdmVyIHN1cHBvcnQNCj4gLS0tLS0tLS0tLS0tLS0NCj4gDQo+ID09PT09PT09ID09PT09PT0g PT09PT09PT09ID09PT09PT09ID09PSA9PT09PT0gPT09PT09ID09PT0gPT09PQ0KPiA9PT09PT09 PT0NCj4gRHJpdmVyICAgTUFDVkxBTiBFVEhFUlRZUEUgRkxFWElCTEUgU1lOIE5UVVBMRSBUVU5O RUwgRkRJUiBIQVNIDQo+IEwyX1RVTk5FTA0KPiA9PT09PT09PSA9PT09PT09ID09PT09PT09PSA9 PT09PT09PSA9PT0gPT09PT09ID09PT09PSA9PT09ID09PT0NCj4gPT09PT09PT09DQo+IGJueDJ4 DQo+IGN4Z2JlDQo+IGUxMDAwICAgICAgICAgICAgeWVzICAgICAgIHllcyAgICAgIHllcyB5ZXMN Cj4gZW5hDQo+IGVuaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHllcw0KPiBmbTEwaw0KPiBpNDBlICAgICB5ZXMgICAgIHllcyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHllcyAgICB5ZXMgIHllcw0KPiBpeGdiZSAgICAgICAgICAgIHllcyAgICAg ICAgICAgICAgICB5ZXMgeWVzICAgICAgICAgICB5ZXMgICAgICAgeWVzDQo+IG1seDQNCj4gbWx4 NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzDQo+ IHN6ZWRhdGEyDQo+ID09PT09PT09ID09PT09PT0gPT09PT09PT09ID09PT09PT09ID09PSA9PT09 PT0gPT09PT09ID09PT0gPT09PQ0KPiA9PT09PT09PT0NCj4gDQo+IEZsb3cgZGlyZWN0b3INCj4g LS0tLS0tLS0tLS0tLQ0KPiANCj4gRmxvdyBkaXJlY3RvciAoRkRJUikgaXMgdGhlIG5hbWUgb2Yg dGhlIG1vc3QgY2FwYWJsZSBmaWx0ZXIgdHlwZSwgd2hpY2gNCj4gY292ZXJzIG1vc3QgZmVhdHVy ZXMgb2ZmZXJlZCBieSBvdGhlcnMuIEFzIHN1Y2gsIGl0IGlzIHRoZSBtb3N0IHdpZGVzcHJlYWQN Cj4gaW4gUE1EcyB0aGF0IHN1cHBvcnQgZmlsdGVyaW5nIChpLmUuIGFsbCBvZiB0aGVtIGJlc2lk ZXMgKiplMTAwMCoqKS4NCj4gDQo+IEl0IGlzIGFsc28gdGhlIG9ubHkgdHlwZSB0aGF0IGFsbG93 cyBhbiBhcmJpdHJhcnkgMzIgYml0cyB2YWx1ZSBwcm92aWRlZCBieQ0KPiBhcHBsaWNhdGlvbnMg dG8gYmUgYXR0YWNoZWQgdG8gYSBmaWx0ZXIgYW5kIHJldHVybmVkIHdpdGggbWF0Y2hpbmcgcGFj a2V0cw0KPiBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIGRlc3RpbmF0aW9uIHF1ZXVlIHRvIHJl Y29nbml6ZSBmbG93cy4NCj4gDQo+IFVuZm9ydHVuYXRlbHksIGV2ZW4gRkRJUiByZXF1aXJlcyBh cHBsaWNhdGlvbnMgdG8gYmUgYXdhcmUgb2YgbG93LWxldmVsDQo+IGNhcGFiaWxpdGllcyBhbmQg bGltaXRhdGlvbnMgKG1vc3Qgb2Ygd2hpY2ggY29tZSBkaXJlY3RseSBmcm9tICoqaXhnYmUqKiBh bmQNCj4gKippNDBlKiopOg0KPiANCj4gLSBCaXRtYXNrcyBhcmUgc2V0IGdsb2JhbGx5IHBlciBk ZXZpY2UgKHBvcnQ/KSwgbm90IHBlciBmaWx0ZXIuDQpbU3VnZXNoXSBUaGlzIG1lYW5zIGFwcGxp Y2F0aW9uIGNhbm5vdCBkZWZpbmUgZmlsdGVycyB0aGF0IG1hdGNoZXMgb24gYXJiaXRyYXJ5IGRp ZmZlcmVudCBvZmZzZXRzPw0KSWYgdGhhdOKAmXMgdGhlIGNhc2UsIEkgYXNzdW1lIHRoZSBhcHBs aWNhdGlvbiBoYXMgdG8gcHJvZ3JhbSBiaXRtYXNrIGluIGFkdmFuY2UuIE90aGVyd2lzZSBob3cg DQp0aGUgQVBJIGZyYW1ld29yayBkZWR1Y2UgdGhpcyBiaXRtYXNrIGluZm9ybWF0aW9uIGZyb20g dGhlIHJ1bGVzPz8gSXRzIG5vdCB2ZXJ5IGNsZWFyIHRvIG1lDQp0aGF0IGhvdyBhcHBsaWNhdGlv biBwYXNzIGRvd24gdGhlIGJpdG1hc2sgaW5mb3JtYXRpb24gZm9yIG11bHRpcGxlIGZpbHRlcnMg b24gc2FtZSBwb3J0Pw0KPiAtIENvbmZpZ3VyYXRpb24gc3RhdGUgaXMgbm90IGV4cGVjdGVkIHRv IGJlIHNhdmVkIGJ5IHRoZSBkcml2ZXIsIGFuZA0KPiAgIHN0b3BwaW5nL3Jlc3RhcnRpbmcgYSBw b3J0IHJlcXVpcmVzIHRoZSBhcHBsaWNhdGlvbiB0byBwZXJmb3JtIGl0IGFnYWluDQo+ICAgKEFQ SSBkb2N1bWVudGF0aW9uIGlzIGFsc28gdW5jbGVhciBhYm91dCB0aGlzKS4NCj4gLSBNb25vbGl0 aGljIGFwcHJvYWNoIHdpdGggQUJJIGlzc3VlcyBhcyBzb29uIGFzIGEgbmV3IGtpbmQgb2YgZmxv dyBvcg0KPiAgIGNvbWJpbmF0aW9uIG5lZWRzIHRvIGJlIHN1cHBvcnRlZC4NCj4gLSBDcnlwdGlj IGdsb2JhbCBzdGF0aXN0aWNzL2NvdW50ZXJzLg0KPiAtIFVuY2xlYXIgYWJvdXQgaG93IHByaW9y aXRpZXMgYXJlIG1hbmFnZWQ7IGZpbHRlcnMgc2VlbSB0byBiZSBhcnJhbmdlZCBhcyBhDQo+ICAg bGlua2VkIGxpc3QgaW4gaGFyZHdhcmUgKHBvc3NpYmx5IHJlbGF0ZWQgdG8gY29uZmlndXJhdGlv biBvcmRlcikuDQo+IA0KPiBQYWNrZXQgYWx0ZXJhdGlvbg0KPiAtLS0tLS0tLS0tLS0tLS0tLQ0K PiANCj4gT25lIGludGVyZXN0aW5nIGZlYXR1cmUgaXMgdGhhdCB0aGUgTDIgdHVubmVsIGZpbHRl ciB0eXBlIGltcGxlbWVudHMgdGhlDQo+IGFiaWxpdHkgdG8gYWx0ZXIgaW5jb21pbmcgcGFja2V0 cyB0aHJvdWdoIGEgZmlsdGVyIChpbiB0aGlzIGNhc2UgdG8NCj4gZW5jYXBzdWxhdGUgdGhlbSks IHRodXMgdGhlICoqbWx4NSoqIGZsb3cgZW5jYXAvZGVjYXAgZmVhdHVyZXMgYXJlIG5vdCBhDQo+ IGZvcmVpZ24gY29uY2VwdC4NCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFr DQo+IA0KPiBQcm9wb3NlZCBBUEkNCj4gPT09PT09PT09PT09DQo+IA0KPiBUZXJtaW5vbG9neQ0K PiAtLS0tLS0tLS0tLQ0KPiANCj4gLSAqKkZpbHRlcmluZyBBUEkqKjogb3ZlcmFsbCBmcmFtZXdv cmsgYWZmZWN0aW5nIHRoZSBmYXRlIG9mIHNlbGVjdGVkDQo+ICAgcGFja2V0cywgY292ZXJzIGV2 ZXJ5dGhpbmcgZGVzY3JpYmVkIGluIHRoaXMgZG9jdW1lbnQuDQo+IC0gKipNYXRjaGluZyBwYXR0 ZXJuKio6IHByb3BlcnRpZXMgdG8gbG9vayBmb3IgaW4gcmVjZWl2ZWQgcGFja2V0cywgYQ0KPiAg IGNvbWJpbmF0aW9uIG9mIGFueSBudW1iZXIgb2YgaXRlbXMuDQo+IC0gKipQYXR0ZXJuIGl0ZW0q KjogcGFydCBvZiBhIHBhdHRlcm4gdGhhdCBlaXRoZXIgbWF0Y2hlcyBwYWNrZXQgZGF0YQ0KPiAg IChwcm90b2NvbCBoZWFkZXIsIHBheWxvYWQgb3IgZGVyaXZlZCBpbmZvcm1hdGlvbiksIG9yIHNw ZWNpZmllcyBwcm9wZXJ0aWVzDQo+ICAgb2YgdGhlIHBhdHRlcm4gaXRzZWxmLg0KPiAtICoqQWN0 aW9ucyoqOiB3aGF0IG5lZWRzIHRvIGJlIGRvbmUgd2hlbiBhIHBhY2tldCBtYXRjaGVzIGEgcGF0 dGVybi4NCj4gLSAqKkZsb3cgcnVsZSoqOiB0aGlzIGlzIHRoZSByZXN1bHQgb2YgY29tYmluaW5n IGEgKm1hdGNoaW5nIHBhdHRlcm4qIHdpdGgNCj4gICAqYWN0aW9ucyouDQo+IC0gKipGaWx0ZXIg cnVsZSoqOiBhIGxlc3MgZ2VuZXJpYyB0ZXJtIHRoYW4gKmZsb3cgcnVsZSosIGNhbiBvdGhlcndp c2UgYmUNCj4gICB1c2VkIGludGVyY2hhbmdlYWJseS4NCj4gLSAqKkhpdCoqOiBhIGZsb3cgcnVs ZSBpcyBzYWlkIHRvIGJlICpoaXQqIHdoZW4gcHJvY2Vzc2luZyBhIG1hdGNoaW5nDQo+ICAgcGFj a2V0Lg0KPiANCj4gUmVxdWlyZW1lbnRzDQo+IC0tLS0tLS0tLS0tLQ0KPiANCj4gQXMgZGVzY3Jp YmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLCB0aGVyZSBpcyBhIGdyb3dpbmcgbmVlZCBmb3Ig YSBjb21tb24NCj4gbWV0aG9kIHRvIGNvbmZpZ3VyZSBmaWx0ZXJpbmcgYW5kIHJlbGF0ZWQgYWN0 aW9ucyBpbiBhIGhhcmR3YXJlIGluZGVwZW5kZW50DQo+IGZhc2hpb24uDQo+IA0KPiBUaGUgZmls dGVyaW5nIEFQSSBzaG91bGQgbm90IGRpc2FsbG93IGFueSBmaWx0ZXIgY29tYmluYXRpb24gYnkg ZGVzaWduIGFuZA0KPiBtdXN0IHJlbWFpbiBhcyBzaW1wbGUgYXMgcG9zc2libGUgdG8gdXNlLiBJ dCBjYW4gc2ltcGx5IGJlIGRlZmluZWQgYXMgYQ0KPiBtZXRob2QgdG8gcGVyZm9ybSBvbmUgb3Ig c2V2ZXJhbCBhY3Rpb25zIG9uIHNlbGVjdGVkIHBhY2tldHMuDQo+IA0KPiBQTURzIGFyZSBhd2Fy ZSBvZiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2UgdGhleSBtYW5hZ2UgYW5kIHNob3Vs ZCBiZQ0KPiByZXNwb25zaWJsZSBmb3IgcHJldmVudGluZyB1bnN1cHBvcnRlZCBvciBjb25mbGlj dGluZyBjb21iaW5hdGlvbnMuDQo+IA0KPiBUaGlzIGFwcHJvYWNoIGlzIGZ1bmRhbWVudGFsbHkg ZGlmZmVyZW50IGFzIGl0IHBsYWNlcyBtb3N0IG9mIHRoZSBidXJkZW4gb24NCj4gdGhlIHNvZnR3 YXJlIHNpZGUgb2YgdGhlIFBNRCBpbnN0ZWFkIG9mIGhhdmluZyBkZXZpY2UgY2FwYWJpbGl0aWVz IGRpcmVjdGx5DQo+IG1hcHBlZCB0byBBUEkgZnVuY3Rpb25zLCB0aGVuIGV4cGVjdGluZyBhcHBs aWNhdGlvbnMgdG8gd29yayBhcm91bmQNCj4gZW5zdWluZw0KPiBjb21wYXRpYmlsaXR5IGlzc3Vl cy4NCj4gDQo+IFJlcXVpcmVtZW50cyBmb3IgYSBuZXcgQVBJOg0KPiANCj4gLSBGbGV4aWJsZSBh bmQgZXh0ZW5zaWJsZSB3aXRob3V0IGNhdXNpbmcgQVBJL0FCSSBwcm9ibGVtcyBmb3IgZXhpc3Rp bmcNCj4gICBhcHBsaWNhdGlvbnMuDQo+IC0gU2hvdWxkIGJlIHVuYW1iaWd1b3VzIGFuZCBlYXN5 IHRvIHVzZS4NCj4gLSBTdXBwb3J0IGV4aXN0aW5nIGZpbHRlcmluZyBmZWF0dXJlcyBhbmQgYWN0 aW9ucyBsaXN0ZWQgaW4gYEZpbHRlciB0eXBlc2BfLg0KPiAtIFN1cHBvcnQgcGFja2V0IGFsdGVy YXRpb24uDQo+IC0gSW4gY2FzZSBvZiBvdmVybGFwcGluZyBmaWx0ZXJzLCB0aGVpciBwcmlvcml0 eSBzaG91bGQgYmUgd2VsbCBkb2N1bWVudGVkLg0KPiAtIFN1cHBvcnQgZmlsdGVyIHF1ZXJpZXMg KGZvciBleGFtcGxlIHRvIHJldHJpZXZlIGNvdW50ZXJzKS4NCj4gDQo+IC4uIHJhdzo6IHBkZg0K PiANCj4gICAgUGFnZUJyZWFrDQo+IA0KPiBIaWdoIGxldmVsIGRlc2lnbg0KPiAtLS0tLS0tLS0t LS0tLS0tLQ0KPiANCj4gVGhlIGNob3NlbiBhcHByb2FjaCB0byBtYWtlIGZpbHRlcmluZyBhcyBn ZW5lcmljIGFzIHBvc3NpYmxlIGlzIGJ5DQo+IGV4cHJlc3NpbmcgbWF0Y2hpbmcgcGF0dGVybnMg dGhyb3VnaCBsaXN0cyBvZiBpdGVtcyBpbnN0ZWFkIG9mIHRoZSBmbGF0DQo+IHN0cnVjdHVyZXMg dXNlZCBpbiBEUERLIHRvZGF5LCBlbmFibGluZyBjb21iaW5hdGlvbnMgdGhhdCBhcmUgbm90DQo+ IHByZWRlZmluZWQNCj4gYW5kIHRodXMgYmVpbmcgbW9yZSB2ZXJzYXRpbGUuDQo+IA0KPiBGbG93 IHJ1bGVzIGNhbiBoYXZlIHNldmVyYWwgZGlzdGluY3QgYWN0aW9ucyAoc3VjaCBhcyBjb3VudGlu ZywNCj4gZW5jYXBzdWxhdGluZywgZGVjYXBzdWxhdGluZyBiZWZvcmUgcmVkaXJlY3RpbmcgcGFj a2V0cyB0byBhIHBhcnRpY3VsYXINCj4gcXVldWUsIGV0Yy4pLCBpbnN0ZWFkIG9mIHJlbHlpbmcg b24gc2V2ZXJhbCBydWxlcyB0byBhY2hpZXZlIHRoaXMgYW5kIGhhdmluZw0KPiBhcHBsaWNhdGlv bnMgZGVhbCB3aXRoIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgcmVnYXJkaW5nIHRo ZWlyDQo+IG9yZGVyLg0KPiANCj4gU3VwcG9ydCBmb3IgZGlmZmVyZW50IHByaW9yaXR5IGxldmVs cyBvbiBhIHJ1bGUgYmFzaXMgaXMgcHJvdmlkZWQsIGZvcg0KPiBleGFtcGxlIGluIG9yZGVyIHRv IGZvcmNlIGEgbW9yZSBzcGVjaWZpYyBydWxlIGNvbWUgYmVmb3JlIGEgbW9yZSBnZW5lcmljDQo+ IG9uZSBmb3IgcGFja2V0cyBtYXRjaGVkIGJ5IGJvdGgsIGhvd2V2ZXIgaGFyZHdhcmUgc3VwcG9y dCBmb3IgbW9yZSB0aGFuDQo+IGENCj4gc2luZ2xlIHByaW9yaXR5IGxldmVsIGNhbm5vdCBiZSBn dWFyYW50ZWVkLiBXaGVuIHN1cHBvcnRlZCwgdGhlIG51bWJlciBvZg0KPiBhdmFpbGFibGUgcHJp b3JpdHkgbGV2ZWxzIGlzIHVzdWFsbHkgbG93LCB3aGljaCBpcyB3aHkgdGhleSBjYW4gYWxzbyBi ZQ0KPiBpbXBsZW1lbnRlZCBpbiBzb2Z0d2FyZSBieSBQTURzIChlLmcuIHRvIHNpbXVsYXRlIG1p c3NpbmcgcHJpb3JpdHkgbGV2ZWxzIGJ5DQo+IHJlb3JkZXJpbmcgcnVsZXMpLg0KPiANCj4gSW4g b3JkZXIgdG8gcmVtYWluIGFzIGhhcmR3YXJlIGFnbm9zdGljIGFzIHBvc3NpYmxlLCBieSBkZWZh dWx0IGFsbCBydWxlcw0KPiBhcmUgY29uc2lkZXJlZCB0byBoYXZlIHRoZSBzYW1lIHByaW9yaXR5 LCB3aGljaCBtZWFucyB0aGF0IHRoZSBvcmRlcg0KPiBiZXR3ZWVuDQo+IG92ZXJsYXBwaW5nIHJ1 bGVzICh3aGVuIGEgcGFja2V0IGlzIG1hdGNoZWQgYnkgc2V2ZXJhbCBmaWx0ZXJzKSBpcw0KPiB1 bmRlZmluZWQsIHBhY2tldCBkdXBsaWNhdGlvbiBtYXkgZXZlbiBvY2N1ciBhcyBhIHJlc3VsdC4N Cj4gDQo+IFBNRHMgbWF5IHJlZnVzZSB0byBjcmVhdGUgb3ZlcmxhcHBpbmcgcnVsZXMgYXQgYSBn aXZlbiBwcmlvcml0eSBsZXZlbCB3aGVuDQo+IHRoZXkgY2FuIGJlIGRldGVjdGVkIChlLmcuIGlm IGEgcGF0dGVybiBtYXRjaGVzIGFuIGV4aXN0aW5nIGZpbHRlcikuDQo+IA0KPiBUaHVzIHByZWRp Y3RhYmxlIHJlc3VsdHMgZm9yIGEgZ2l2ZW4gcHJpb3JpdHkgbGV2ZWwgY2FuIG9ubHkgYmUgYWNo aWV2ZWQNCj4gd2l0aCBub24tb3ZlcmxhcHBpbmcgcnVsZXMsIHVzaW5nIHBlcmZlY3QgbWF0Y2hp bmcgb24gYWxsIHByb3RvY29sIGxheWVycy4NCj4gDQo+IFN1cHBvcnQgZm9yIG11bHRpcGxlIGFj dGlvbnMgcGVyIHJ1bGUgbWF5IGJlIGltcGxlbWVudGVkIGludGVybmFsbHkgb24gdG9wDQo+IG9m IG5vbi1kZWZhdWx0IGhhcmR3YXJlIHByaW9yaXRpZXMsIGFzIGEgcmVzdWx0IGJvdGggZmVhdHVy ZXMgbWF5IG5vdCBiZQ0KPiBzaW11bHRhbmVvdXNseSBhdmFpbGFibGUgdG8gYXBwbGljYXRpb25z Lg0KPiANCj4gQ29uc2lkZXJpbmcgdGhhdCBhbGxvd2VkIHBhdHRlcm4vYWN0aW9ucyBjb21iaW5h dGlvbnMgY2Fubm90IGJlIGtub3duIGluDQo+IGFkdmFuY2UgYW5kIHdvdWxkIHJlc3VsdCBpbiBh biB1bnByYWN0aWNhbGx5IGxhcmdlIG51bWJlciBvZiBjYXBhYmlsaXRpZXMgdG8NCj4gZXhwb3Nl LCBhIG1ldGhvZCBpcyBwcm92aWRlZCB0byB2YWxpZGF0ZSBhIGdpdmVuIHJ1bGUgZnJvbSB0aGUg Y3VycmVudA0KPiBkZXZpY2UgY29uZmlndXJhdGlvbiBzdGF0ZSB3aXRob3V0IGFjdHVhbGx5IGFk ZGluZyBpdCAoYWtpbiB0byBhICJkcnkgcnVuIg0KPiBtb2RlKS4NCj4gDQo+IFRoaXMgZW5hYmxl cyBhcHBsaWNhdGlvbnMgdG8gY2hlY2sgaWYgdGhlIHJ1bGUgdHlwZXMgdGhleSBuZWVkIGlzIHN1 cHBvcnRlZA0KPiBhdCBpbml0aWFsaXphdGlvbiB0aW1lLCBiZWZvcmUgc3RhcnRpbmcgdGhlaXIg ZGF0YSBwYXRoLiBUaGlzIG1ldGhvZCBjYW4gYmUNCj4gdXNlZCBhbnl0aW1lLCBpdHMgb25seSBy ZXF1aXJlbWVudCBiZWluZyB0aGF0IHRoZSByZXNvdXJjZXMgbmVlZGVkIGJ5IGENCj4gcnVsZQ0K PiBtdXN0IGV4aXN0IChlLmcuIGEgdGFyZ2V0IFJYIHF1ZXVlIG11c3QgYmUgY29uZmlndXJlZCBm aXJzdCkuDQo+IA0KPiBFYWNoIGRlZmluZWQgcnVsZSBpcyBhc3NvY2lhdGVkIHdpdGggYW4gb3Bh cXVlIGhhbmRsZSBtYW5hZ2VkIGJ5IHRoZSBQTUQsDQo+IGFwcGxpY2F0aW9ucyBhcmUgcmVzcG9u c2libGUgZm9yIGtlZXBpbmcgaXQuIFRoZXNlIGNhbiBiZSB1c2VkIGZvciBxdWVyaWVzDQo+IGFu ZCBydWxlcyBtYW5hZ2VtZW50LCBzdWNoIGFzIHJldHJpZXZpbmcgY291bnRlcnMgb3Igb3RoZXIg ZGF0YSBhbmQNCj4gZGVzdHJveWluZyB0aGVtLg0KPiANCj4gSGFuZGxlcyBtdXN0IGJlIGRlc3Ry b3llZCBiZWZvcmUgcmVsZWFzaW5nIGFzc29jaWF0ZWQgcmVzb3VyY2VzIHN1Y2ggYXMNCj4gcXVl dWVzLg0KPiANCj4gSW50ZWdyYXRpb24NCj4gLS0tLS0tLS0tLS0NCj4gDQo+IFRvIGF2b2lkIEFC SSBicmVha2FnZSwgdGhpcyBuZXcgaW50ZXJmYWNlIHdpbGwgYmUgaW1wbGVtZW50ZWQgdGhyb3Vn aCB0aGUNCj4gZXhpc3RpbmcgZmlsdGVyaW5nIGNvbnRyb2wgZnJhbWV3b3JrIChgYHJ0ZV9ldGhf ZGV2X2ZpbHRlcl9jdHJsKClgYCkgdXNpbmcNCj4gKipSVEVfRVRIX0ZJTFRFUl9HRU5FUklDKiog YXMgYSBuZXcgZmlsdGVyIHR5cGUuDQo+IA0KPiBIb3dldmVyIGEgcHVibGljIGZyb250LWVuZCBB UEkgZGVzY3JpYmVkIGluIGBSdWxlcyBtYW5hZ2VtZW50YF8gd2lsbA0KPiBiZSBhZGRlZCBhcyB0 aGUgcHJlZmVycmVkIG1ldGhvZCB0byB1c2UgaXQuDQo+IA0KPiBPbmNlIGRpc2N1c3Npb25zIHdp dGggdGhlIGNvbW11bml0eSBoYXZlIGNvbnZlcmdlZCB0byBhIGRlZmluaXRlIEFQSSwNCj4gbGVn YWN5DQo+IGZpbHRlciB0eXBlcyBzaG91bGQgYmUgZGVwcmVjYXRlZCBhbmQgYSBkZWFkbGluZSBk ZWZpbmVkIHRvIHJlbW92ZSB0aGVpcg0KPiBzdXBwb3J0IGVudGlyZWx5Lg0KPiANCj4gUE1EcyB3 aWxsIGhhdmUgdG8gYmUgZ3JhZHVhbGx5IGNvbnZlcnRlZCB0byAqKlJURV9FVEhfRklMVEVSX0dF TkVSSUMqKg0KPiBvcg0KPiBkcm9wIGZpbHRlcmluZyBzdXBwb3J0IGVudGlyZWx5LiBMZXNzIG1h aW50YWluZWQgUE1EcyBmb3Igb2xkZXIgaGFyZHdhcmUNCj4gbWF5DQo+IGxvc2Ugc3VwcG9ydCBh dCB0aGlzIHBvaW50Lg0KPiANCj4gVGhlIG5vdGlvbiBvZiBmaWx0ZXIgdHlwZSB3aWxsIHRoZW4g YmUgZGVwcmVjYXRlZCBhbmQgc3Vic2VxdWVudGx5IGRyb3BwZWQNCj4gdG8gYXZvaWQgY29uZnVz aW9uIGJldHdlZW4gYm90aCBmcmFtZXdvcmtzLg0KPiANCj4gSW1wbGVtZW50YXRpb24gZGV0YWls cw0KPiA9PT09PT09PT09PT09PT09PT09PT09DQo+IA0KPiBGbG93IHJ1bGUNCj4gLS0tLS0tLS0t DQo+IA0KPiBBIGZsb3cgcnVsZSBpcyB0aGUgY29tYmluYXRpb24gb2YgYSBtYXRjaGluZyBwYXR0 ZXJuIHdpdGggYSBsaXN0IG9mIGFjdGlvbnMsDQo+IGFuZCBpcyB0aGUgYmFzaXMgb2YgdGhpcyBB UEkuDQo+IA0KPiBQcmlvcml0aWVzDQo+IH5+fn5+fn5+fn4NCj4gDQo+IEEgcHJpb3JpdHkgY2Fu IGJlIGFzc2lnbmVkIHRvIGEgbWF0Y2hpbmcgcGF0dGVybi4NCj4gDQo+IFRoZSBkZWZhdWx0IHBy aW9yaXR5IGxldmVsIGlzIDAgYW5kIGlzIGFsc28gdGhlIGhpZ2hlc3QuIFN1cHBvcnQgZm9yIG1v cmUNCj4gdGhhbiBhIHNpbmdsZSBwcmlvcml0eSBsZXZlbCBpbiBoYXJkd2FyZSBpcyBub3QgZ3Vh cmFudGVlZC4NCj4gDQo+IElmIGEgcGFja2V0IGlzIG1hdGNoZWQgYnkgc2V2ZXJhbCBmaWx0ZXJz IGF0IGEgZ2l2ZW4gcHJpb3JpdHkgbGV2ZWwsIHRoZQ0KPiBvdXRjb21lIGlzIHVuZGVmaW5lZC4g SXQgY2FuIHRha2UgYW55IHBhdGggYW5kIGNhbiBldmVuIGJlIGR1cGxpY2F0ZWQuDQo+IA0KPiBN YXRjaGluZyBwYXR0ZXJuDQo+IH5+fn5+fn5+fn5+fn5+fn4NCj4gDQo+IEEgbWF0Y2hpbmcgcGF0 dGVybiBjb21wcmlzZXMgYW55IG51bWJlciBvZiBpdGVtcyBvZiB2YXJpb3VzIHR5cGVzLg0KPiAN Cj4gSXRlbXMgYXJlIGFycmFuZ2VkIGluIGEgbGlzdCB0byBmb3JtIGEgbWF0Y2hpbmcgcGF0dGVy biBmb3IgcGFja2V0cy4gVGhleQ0KPiBmYWxsIGluIHR3byBjYXRlZ29yaWVzOg0KPiANCj4gLSBQ cm90b2NvbCBtYXRjaGluZyAoQU5ZLCBSQVcsIEVUSCwgSVBWNCwgSVBWNiwgSUNNUCwgVURQLCBU Q1AsIFZYTEFOIGFuZA0KPiBzbw0KPiAgIG9uKSwgdXN1YWxseSBhc3NvY2lhdGVkIHdpdGggYSBz cGVjaWZpY2F0aW9uIHN0cnVjdHVyZS4gVGhlc2UgbXVzdCBiZQ0KPiAgIHN0YWNrZWQgaW4gdGhl IHNhbWUgb3JkZXIgYXMgdGhlIHByb3RvY29sIGxheWVycyB0byBtYXRjaCwgc3RhcnRpbmcgZnJv bQ0KPiAgIEwyLg0KPiANCj4gLSBBZmZlY3RpbmcgaG93IHRoZSBwYXR0ZXJuIGlzIHByb2Nlc3Nl ZCAoRU5ELCBWT0lELCBJTlZFUlQsIFBGLCBWRiwNCj4gICBTSUdOQVRVUkUgYW5kIHNvIG9uKSwg b2Z0ZW4gd2l0aG91dCBhIHNwZWNpZmljYXRpb24gc3RydWN0dXJlLiBTaW5jZSB0aGV5DQo+ICAg YXJlIG1ldGEgZGF0YSB0aGF0IGRvZXMgbm90IG1hdGNoIHBhY2tldCBjb250ZW50cywgdGhlc2Ug Y2FuIGJlIHNwZWNpZmllZA0KPiAgIGFueXdoZXJlIHdpdGhpbiBpdGVtIGxpc3RzIHdpdGhvdXQg YWZmZWN0aW5nIHRoZSBwcm90b2NvbCBtYXRjaGluZyBpdGVtcy4NCj4gDQo+IE1vc3QgaXRlbSBz cGVjaWZpY2F0aW9ucyBjYW4gYmUgb3B0aW9uYWxseSBwYWlyZWQgd2l0aCBhIG1hc2sgdG8gbmFy cm93IHRoZQ0KPiBzcGVjaWZpYyBmaWVsZHMgb3IgYml0cyB0byBiZSBtYXRjaGVkLg0KPiANCj4g LSBJdGVtcyBhcmUgZGVmaW5lZCB3aXRoIGBgc3RydWN0IHJ0ZV9mbG93X2l0ZW1gYC4NCj4gLSBQ YXR0ZXJucyBhcmUgZGVmaW5lZCB3aXRoIGBgc3RydWN0IHJ0ZV9mbG93X3BhdHRlcm5gYC4NCj4g DQo+IEV4YW1wbGUgb2YgYW4gaXRlbSBzcGVjaWZpY2F0aW9uIG1hdGNoaW5nIGFuIEV0aGVybmV0 IGhlYWRlcjoNCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsNCj4gfCBFdGhlcm5ldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiArPT09 PT09PT09PSs9PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT0rDQo+IHwgYGBzcGVjYGAgfCBg YHNyY2BgIHwgYGAwMDowMTowMjowMzowNGBgIHwNCj4gfCAgICAgICAgICArLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8ICAgICAgICAgIHwgYGBkc3RgYCB8IGBgMDA6MmE6NjY6 MDA6MDFgYCB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsN Cj4gfCBgYG1hc2tgYCB8IGBgc3JjYGAgfCBgYDAwOmZmOmZmOmZmOjAwYGAgfA0KPiB8ICAgICAg ICAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgICAgICAgICAgfCBgYGRz dGBgIHwgYGAwMDowMDowMDowMDpmZmBgIHwNCj4gKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKw0KPiANCj4gTm9uLW1hc2tlZCBiaXRzIHN0YW5kIGZvciBhbnkgdmFs dWUsIEV0aGVybmV0IGhlYWRlcnMgd2l0aCB0aGUgZm9sbG93aW5nDQo+IHByb3BlcnRpZXMgYXJl IHRodXMgbWF0Y2hlZDoNCj4gDQo+IC0gYGBzcmNgYDogYGA/PzowMTowMjowMzo/P2BgDQo+IC0g YGBkc3RgYDogYGA/Pzo/Pzo/Pzo/PzowMWBgDQo+IA0KPiBFeGNlcHQgZm9yIG1ldGEgdHlwZXMg dGhhdCBkbyBub3QgbmVlZCBvbmUsIGBgc3BlY2BgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyDQo+ IHRvIGEgc3RydWN0dXJlIG9mIHRoZSByZWxhdGVkIGl0ZW0gdHlwZS4gQSBgYG1hc2tgYCBvZiB0 aGUgc2FtZSB0eXBlIGNhbiBiZQ0KPiBwcm92aWRlZCB0byB0ZWxsIHdoaWNoIGJpdHMgaW4gYGBz cGVjYGAgYXJlIHRvIGJlIG1hdGNoZWQuDQo+IA0KPiBBIG1hc2sgaXMgbm9ybWFsbHkgb25seSBu ZWVkZWQgZm9yIGBgc3BlY2BgIGZpZWxkcyBtYXRjaGluZyBwYWNrZXQgZGF0YSwNCj4gaWdub3Jl ZCBvdGhlcndpc2UuIFNlZSBpbmRpdmlkdWFsIGl0ZW0gdHlwZXMgZm9yIG1vcmUgaW5mb3JtYXRp b24uDQo+IA0KPiBBIGBgTlVMTGBgIG1hc2sgcG9pbnRlciBpcyBhbGxvd2VkIGFuZCBpcyBzaW1p bGFyIHRvIG1hdGNoaW5nIHdpdGggYSBmdWxsDQo+IG1hc2sgKGFsbCBvbmVzKSBgYHNwZWNgYCBm aWVsZHMgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlLCB0aGUgcmVtYWluaW5nIGZpZWxkcw0KPiBhcmUg aWdub3JlZCAoYWxsIHplcm9lcyksIHRoZXJlIGlzIHRodXMgbm8gZXJyb3IgY2hlY2tpbmcgZm9y IHVuc3VwcG9ydGVkDQo+IGZpZWxkcy4NCj4gDQo+IE1hdGNoaW5nIHBhdHRlcm4gaXRlbXMgZm9y IHBhY2tldCBkYXRhIG11c3QgYmUgbmF0dXJhbGx5IHN0YWNrZWQgKG9yZGVyZWQNCj4gZnJvbSBs b3dlc3QgdG8gaGlnaGVzdCBwcm90b2NvbCBsYXllciksIGFzIGluIHRoZSBmb2xsb3dpbmcgZXhh bXBsZXM6DQo+IA0KPiArLS0tLS0tLS0tLS0tLS0rDQo+IHwgVENQdjQgYXMgTDQgIHwNCj4gKz09 PSs9PT09PT09PT09Kw0KPiB8IDAgfCBFdGhlcm5ldCB8DQo+ICstLS0rLS0tLS0tLS0tLSsNCj4g fCAxIHwgSVB2NCAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0rDQo+IHwgMiB8IFRDUCAgICAgIHwN Cj4gKy0tLSstLS0tLS0tLS0tKw0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgVENQdjYg aW4gVlhMQU4gfA0KPiArPT09Kz09PT09PT09PT09PSsNCj4gfCAwIHwgRXRoZXJuZXQgICB8DQo+ ICstLS0rLS0tLS0tLS0tLS0tKw0KPiB8IDEgfCBJUHY0ICAgICAgIHwNCj4gKy0tLSstLS0tLS0t LS0tLS0rDQo+IHwgMiB8IFVEUCAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLSsNCj4gfCAz IHwgVlhMQU4gICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tKw0KPiB8IDQgfCBFdGhlcm5ldCAg IHwNCj4gKy0tLSstLS0tLS0tLS0tLS0rDQo+IHwgNSB8IElQdjYgICAgICAgfA0KPiArLS0tKy0t LS0tLS0tLS0tLSsNCj4gfCA2IHwgVENQICAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tKw0K PiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFRDUHY0IGFzIEw0IHdp dGggbWV0YSBpdGVtcyB8DQo+ICs9PT0rPT09PT09PT09PT09PT09PT09PT09PT09PSsNCj4gfCAw IHwgVk9JRCAgICAgICAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rDQo+IHwgMSB8IEV0aGVybmV0ICAgICAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IDIgfCBWT0lEICAgICAgICAgICAgICAgICAgICB8DQo+ ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAzIHwgSVB2NCAgICAgICAgICAg ICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgNCB8IFRD UCAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kw0KPiB8IDUgfCBWT0lEICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsNCj4gfCA2IHwgVk9JRCAgICAgICAgICAgICAgICAgICAgfA0KPiArLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBUaGUgYWJvdmUgZXhhbXBsZSBzaG93 cyBob3cgbWV0YSBpdGVtcyBkbyBub3QgYWZmZWN0IHBhY2tldCBkYXRhDQo+IG1hdGNoaW5nDQo+ IGl0ZW1zLCBhcyBsb25nIGFzIHRob3NlIHJlbWFpbiBzdGFja2VkIHByb3Blcmx5LiBUaGUgcmVz dWx0aW5nIG1hdGNoaW5nDQo+IHBhdHRlcm4gaXMgaWRlbnRpY2FsIHRvICJUQ1B2NCBhcyBMNCIu DQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBVRFB2NiBhbnl3aGVyZSB8DQo+ICs9PT0r PT09PT09PT09PT09Kw0KPiB8IDAgfCBJUHY2ICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0r DQo+IHwgMSB8IFVEUCAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLSsNCj4gDQo+IElmIHN1 cHBvcnRlZCBieSB0aGUgUE1ELCBvbWl0dGluZyBvbmUgb3Igc2V2ZXJhbCBwcm90b2NvbCBsYXll cnMgYXQgdGhlDQo+IGJvdHRvbSBvZiB0aGUgc3RhY2sgYXMgaW4gdGhlIGFib3ZlIGV4YW1wbGUg KG1pc3NpbmcgYW4gRXRoZXJuZXQNCj4gc3BlY2lmaWNhdGlvbikgZW5hYmxlcyBoYXJkd2FyZSB0 byBsb29rIGFueXdoZXJlIGluIHBhY2tldHMuDQo+IA0KPiBJdCBpcyB1bnNwZWNpZmllZCB3aGV0 aGVyIHRoZSBwYXlsb2FkIG9mIHN1cHBvcnRlZCBlbmNhcHN1bGF0aW9ucw0KPiAoZS5nLiBWWExB TiBpbm5lciBwYWNrZXQpIGlzIG1hdGNoZWQgYnkgc3VjaCBhIHBhdHRlcm4sIHdoaWNoIG1heSBh cHBseSB0bw0KPiBpbm5lciwgb3V0ZXIgb3IgYm90aCBwYWNrZXRzLg0KPiANCj4gKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSsNCj4gfCBJbnZhbGlkLCBtaXNzaW5nIEwzIHwNCj4gKz09PSs9PT09PT09 PT09PT09PT09PSsNCj4gfCAwIHwgRXRoZXJuZXQgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0t LS0tLS0tLSsNCj4gfCAxIHwgVURQICAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0t LS0tLSsNCj4gDQo+IFRoZSBhYm92ZSBwYXR0ZXJuIGlzIGludmFsaWQgZHVlIHRvIGEgbWlzc2lu ZyBMMyBzcGVjaWZpY2F0aW9uIGJldHdlZW4gTDINCj4gYW5kIEw0LiBJdCBpcyBvbmx5IGFsbG93 ZWQgYXQgdGhlIGJvdHRvbSBhbmQgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suDQo+IA0KPiBNZXRh IGl0ZW0gdHlwZXMNCj4gfn5+fn5+fn5+fn5+fn5+DQo+IA0KPiBUaGVzZSBkbyBub3QgbWF0Y2gg cGFja2V0IGRhdGEgYnV0IGFmZmVjdCBob3cgdGhlIHBhdHRlcm4gaXMgcHJvY2Vzc2VkLA0KPiBt b3N0DQo+IG9mIHRoZW0gZG8gbm90IG5lZWQgYSBzcGVjaWZpY2F0aW9uIHN0cnVjdHVyZS4gVGhp cyBwYXJ0aWN1bGFyaXR5IGFsbG93cw0KPiB0aGVtIHRvIGJlIHNwZWNpZmllZCBhbnl3aGVyZSB3 aXRob3V0IGFmZmVjdGluZyBvdGhlciBpdGVtIHR5cGVzLg0KPiANCj4gYGBFTkRgYA0KPiBeXl5e Xl5eDQo+IA0KPiBFbmQgbWFya2VyIGZvciBpdGVtIGxpc3RzLiBQcmV2ZW50cyBmdXJ0aGVyIHBy b2Nlc3Npbmcgb2YgaXRlbXMsIHRoZXJlYnkNCj4gZW5kaW5nIHRoZSBwYXR0ZXJuLg0KPiANCj4g LSBJdHMgbnVtZXJpYyB2YWx1ZSBpcyAqKjAqKiBmb3IgY29udmVuaWVuY2UuDQo+IC0gUE1EIHN1 cHBvcnQgaXMgbWFuZGF0b3J5Lg0KPiAtIEJvdGggYGBzcGVjYGAgYW5kIGBgbWFza2BgIGFyZSBp Z25vcmVkLg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IEVORCAgICAgICAgICAg ICAgICB8DQo+ICs9PT09PT09PT09Kz09PT09PT09PSsNCj4gfCBgYHNwZWNgYCB8IGlnbm9yZWQg fA0KPiArLS0tLS0tLS0tLSstLS0tLS0tLS0rDQo+IHwgYGBtYXNrYGAgfCBpZ25vcmVkIHwNCj4g Ky0tLS0tLS0tLS0rLS0tLS0tLS0tKw0KPiANCj4gYGBWT0lEYGANCj4gXl5eXl5eXl4NCj4gDQo+ IFVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgY29udmVuaWVuY2UuIEl0IGlzIGlnbm9yZWQgYW5k IHNpbXBseSBkaXNjYXJkZWQgYnkNCj4gUE1Ecy4NCj4gDQo+IC0gUE1EIHN1cHBvcnQgaXMgbWFu ZGF0b3J5Lg0KPiAtIEJvdGggYGBzcGVjYGAgYW5kIGBgbWFza2BgIGFyZSBpZ25vcmVkLg0KPiAN Cj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFZPSUQgICAgICAgICAgICAgICB8DQo+ICs9 PT09PT09PT09Kz09PT09PT09PSsNCj4gfCBgYHNwZWNgYCB8IGlnbm9yZWQgfA0KPiArLS0tLS0t LS0tLSstLS0tLS0tLS0rDQo+IHwgYGBtYXNrYGAgfCBpZ25vcmVkIHwNCj4gKy0tLS0tLS0tLS0r LS0tLS0tLS0tKw0KPiANCj4gT25lIHVzYWdlIGV4YW1wbGUgZm9yIHRoaXMgdHlwZSBpcyBnZW5l cmF0aW5nIHJ1bGVzIHRoYXQgc2hhcmUgYSBjb21tb24NCj4gcHJlZml4IHF1aWNrbHkgd2l0aG91 dCByZWFsbG9jYXRpbmcgbWVtb3J5LCBvbmx5IGJ5IHVwZGF0aW5nIGl0ZW0gdHlwZXM6DQo+IA0K PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFRDUCwgVURQIG9yIElDTVAgYXMgTDQg fA0KPiArPT09Kz09PT09PT09PT09PT09PT09PT09Kw0KPiB8IDAgfCBFdGhlcm5ldCAgICAgICAg ICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IDEgfCBJUHY0ICAgICAgICAg ICAgICAgfA0KPiArLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tKw0KPiB8IDIgfCBVRFAgIHwgVk9J RCB8IFZPSUQgfA0KPiArLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tKw0KPiB8IDMgfCBWT0lEIHwg VENQICB8IFZPSUQgfA0KPiArLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tKw0KPiB8IDQgfCBWT0lE IHwgVk9JRCB8IElDTVAgfA0KPiArLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tKw0KPiANCj4gLi4g cmF3OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IGBgSU5WRVJUYGANCj4gXl5eXl5e Xl5eXg0KPiANCj4gSW52ZXJ0ZWQgbWF0Y2hpbmcsIGkuZS4gcHJvY2VzcyBwYWNrZXRzIHRoYXQg ZG8gbm90IG1hdGNoIHRoZSBwYXR0ZXJuLg0KPiANCj4gLSBCb3RoIGBgc3BlY2BgIGFuZCBgYG1h c2tgYCBhcmUgaWdub3JlZC4NCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBJTlZF UlQgICAgICAgICAgICAgfA0KPiArPT09PT09PT09PSs9PT09PT09PT0rDQo+IHwgYGBzcGVjYGAg fCBpZ25vcmVkIHwNCj4gKy0tLS0tLS0tLS0rLS0tLS0tLS0tKw0KPiB8IGBgbWFza2BgIHwgaWdu b3JlZCB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gDQo+IFVzYWdlIGV4YW1wbGUgaW4g b3JkZXIgdG8gbWF0Y2ggbm9uLVRDUHY0IHBhY2tldHMgb25seToNCj4gDQo+ICstLS0tLS0tLS0t LS0tLS0tLS0tLSsNCj4gfCBBbnl0aGluZyBidXQgVENQdjQgfA0KPiArPT09Kz09PT09PT09PT09 PT09PT0rDQo+IHwgMCB8IElOVkVSVCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0t Kw0KPiB8IDEgfCBFdGhlcm5ldCAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLSsNCj4g fCAyIHwgSVB2NCAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgMyB8 IFRDUCAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tKw0KPiANCj4gYGBQRmBg DQo+IF5eXl5eXg0KPiANCj4gTWF0Y2hlcyBwYWNrZXRzIGFkZHJlc3NlZCB0byB0aGUgcGh5c2lj YWwgZnVuY3Rpb24gb2YgdGhlIGRldmljZS4NCj4gDQo+IC0gQm90aCBgYHNwZWNgYCBhbmQgYGBt YXNrYGAgYXJlIGlnbm9yZWQuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgUEYg ICAgICAgICAgICAgICAgIHwNCj4gKz09PT09PT09PT0rPT09PT09PT09Kw0KPiB8IGBgc3BlY2Bg IHwgaWdub3JlZCB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gfCBgYG1hc2tgYCB8IGln bm9yZWQgfA0KPiArLS0tLS0tLS0tLSstLS0tLS0tLS0rDQo+IA0KPiBgYFZGYGANCj4gXl5eXl5e DQo+IA0KPiBNYXRjaGVzIHBhY2tldHMgYWRkcmVzc2VkIHRvIHRoZSBnaXZlbiB2aXJ0dWFsIGZ1 bmN0aW9uIElEIG9mIHRoZSBkZXZpY2UuDQo+IA0KPiAtIE9ubHkgYGBzcGVjYGAgbmVlZHMgdG8g YmUgZGVmaW5lZCwgYGBtYXNrYGAgaXMgaWdub3JlZC4NCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFZGICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwNCj4gKz09PT09PT09PT0rPT09PT09PT09Kz09PT09PT09PT09PT09PT09 PT0rDQo+IHwgYGBzcGVjYGAgfCBgYHZmYGAgIHwgZGVzdGluYXRpb24gVkYgSUQgfA0KPiArLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBgYG1hc2tgYCB8IGln bm9yZWQgICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKw0KPiANCj4gYGBTSUdOQVRVUkVgYA0KPiBeXl5eXl5eXl5eXl5eDQo+ IA0KPiBSZXF1ZXN0cyBoYXNoLWJhc2VkIHNpZ25hdHVyZSBkaXNwYXRjaGluZyBmb3IgdGhpcyBy dWxlLg0KPiANCj4gQ29uc2lkZXJpbmcgdGhpcyBpcyBhIGdsb2JhbCBzZXR0aW5nIG9uIGRldmlj ZXMgdGhhdCBzdXBwb3J0IGl0LCBhbGwNCj4gc3Vic2VxdWVudCBmaWx0ZXIgcnVsZXMgbWF5IGhh dmUgdG8gYmUgY3JlYXRlZCB3aXRoIGl0IGFzIHdlbGwuDQo+IA0KPiAtIE9ubHkgYGBzcGVjYGAg bmVlZHMgdG8gYmUgZGVmaW5lZCwgYGBtYXNrYGAgaXMgaWdub3JlZC4NCj4gDQo+ICstLS0tLS0t LS0tLS0tLS0tLS0tLSsNCj4gfCBTSUdOQVRVUkUgICAgICAgICAgfA0KPiArPT09PT09PT09PSs9 PT09PT09PT0rDQo+IHwgYGBzcGVjYGAgfCBUQkQgICAgIHwNCj4gKy0tLS0tLS0tLS0rLS0tLS0t LS0tKw0KPiB8IGBgbWFza2BgIHwgaWdub3JlZCB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLSsN Cj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0KPiBEYXRhIG1hdGNo aW5nIGl0ZW0gdHlwZXMNCj4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+IA0KPiBNb3N0IG9m IHRoZXNlIGFyZSBiYXNpY2FsbHkgcHJvdG9jb2wgaGVhZGVyIGRlZmluaXRpb25zIHdpdGggYXNz b2NpYXRlZA0KPiBiaXRtYXNrcy4gVGhleSBtdXN0IGJlIHNwZWNpZmllZCAoc3RhY2tlZCkgZnJv bSBsb3dlc3QgdG8gaGlnaGVzdCBwcm90b2NvbA0KPiBsYXllci4NCj4gDQo+IFRoZSBmb2xsb3dp bmcgbGlzdCBpcyBub3QgZXhoYXVzdGl2ZSBhcyBuZXcgcHJvdG9jb2xzIHdpbGwgYmUgYWRkZWQg aW4gdGhlDQo+IGZ1dHVyZS4NCj4gDQo+IGBgQU5ZYGANCj4gXl5eXl5eXg0KPiANCj4gTWF0Y2hl cyBhbnkgcHJvdG9jb2wgaW4gcGxhY2Ugb2YgdGhlIGN1cnJlbnQgbGF5ZXIsIGEgc2luZ2xlIEFO WSBtYXkgYWxzbw0KPiBzdGFuZCBmb3Igc2V2ZXJhbCBwcm90b2NvbCBsYXllcnMuDQo+IA0KPiBU aGlzIGlzIHVzdWFsbHkgc3BlY2lmaWVkIGFzIHRoZSBmaXJzdCBwYXR0ZXJuIGl0ZW0gd2hlbiBs b29raW5nIGZvciBhDQo+IHByb3RvY29sIGFueXdoZXJlIGluIGEgcGFja2V0Lg0KPiANCj4gLSBB IG1heGltdW0gdmFsdWUgb2YgKiowKiogcmVxdWVzdHMgbWF0Y2hpbmcgYW55IG51bWJlciBvZiBw cm90b2NvbA0KPiBsYXllcnMNCj4gICBhYm92ZSBvciBlcXVhbCB0byB0aGUgbWluaW11bSB2YWx1 ZSwgYSBtYXhpbXVtIHZhbHVlIGxvd2VyIHRoYW4gdGhlDQo+ICAgbWluaW11bSBvbmUgaXMgb3Ro ZXJ3aXNlIGludmFsaWQuDQo+IC0gT25seSBgYHNwZWNgYCBuZWVkcyB0byBiZSBkZWZpbmVkLCBg YG1hc2tgYCBpcyBpZ25vcmVkLg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IEFOWSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8DQo+ICs9PT09PT09PT09Kz09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NCj4gPT09PT09PT09PT09PT0rDQo+IHwgYGBzcGVjYGAgfCBgYG1pbmBgIHwg bWluaW11bSBudW1iZXIgb2YgbGF5ZXJzIGNvdmVyZWQgICAgICAgICAgICAgICAgIHwNCj4gfCAg ICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKw0KPiB8ICAgICAgICAgIHwgYGBtYXhgYCB8IG1heGltdW0gbnVtYmVyIG9m IGxheWVycyBjb3ZlcmVkLCAwIGZvciBpbmZpbml0eSB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4g fCBgYG1hc2tgYCB8IGlnbm9yZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfA0KPiArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBFeGFtcGxlIGZvciBW WExBTiBUQ1AgcGF5bG9hZCBtYXRjaGluZyByZWdhcmRsZXNzIG9mIG91dGVyIEwzIChJUHY0IG9y DQo+IElQdjYpDQo+IGFuZCBMNCAoVURQKSBib3RoIG1hdGNoZWQgYnkgdGhlIGZpcnN0IEFOWSBz cGVjaWZpY2F0aW9uLCBhbmQgaW5uZXIgTDMgKElQdjQNCj4gb3IgSVB2NikgbWF0Y2hlZCBieSB0 aGUgc2Vjb25kIEFOWSBzcGVjaWZpY2F0aW9uOg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rDQo+IHwgVENQIGluIFZYTEFOIHdpdGggd2lsZGNhcmRzICAgICAgfA0K PiArPT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsNCj4gfCAwIHwgRXRoZXJuZXQg ICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0rLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tKw0KPiB8IDEgfCBBTlkgfCBgYHNwZWNgYCB8IGBgbWluYGAgfCAyIHwNCj4gfCAgIHwgICAg IHwgICAgICAgICAgKy0tLS0tLS0tLSstLS0rDQo+IHwgICB8ICAgICB8ICAgICAgICAgIHwgYGBt YXhgYCB8IDIgfA0KPiArLS0tKy0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLSsNCj4gfCAy IHwgVlhMQU4gICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKw0KPiB8IDMgfCBFdGhlcm5ldCAgICAgICAgICAgICAgICAgICAgIHwN Cj4gKy0tLSstLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0rDQo+IHwgNCB8IEFOWSB8IGBg c3BlY2BgIHwgYGBtaW5gYCB8IDEgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICArLS0tLS0tLS0t Ky0tLSsNCj4gfCAgIHwgICAgIHwgICAgICAgICAgfCBgYG1heGBgIHwgMSB8DQo+ICstLS0rLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tKw0KPiB8IDUgfCBUQ1AgICAgICAgICAgICAgICAg ICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0K PiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gYGBSQVdgYA0KPiBeXl5e Xl5eDQo+IA0KPiBNYXRjaGVzIGEgc3RyaW5nIG9mIGEgZ2l2ZW4gbGVuZ3RoIGF0IGEgZ2l2ZW4g b2Zmc2V0IChpbiBieXRlcyksIG9yIGFueXdoZXJlDQo+IGluIHRoZSBwYXlsb2FkIG9mIHRoZSBj dXJyZW50IHByb3RvY29sIGxheWVyIChpbmNsdWRpbmcgTDIgaGVhZGVyIGlmIHVzZWQgYXMNCj4g dGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHN0YWNrKS4NCj4gDQo+IFRoaXMgZG9lcyBub3QgaW5jcmVt ZW50IHRoZSBwcm90b2NvbCBsYXllciBjb3VudCBhcyBpdCBpcyBub3QgYSBwcm90b2NvbA0KPiBk ZWZpbml0aW9uLiBTdWJzZXF1ZW50IFJBVyBpdGVtcyBtb2R1bGF0ZSB0aGUgZmlyc3QgYWJzb2x1 dGUgb25lIHdpdGgNCj4gcmVsYXRpdmUgb2Zmc2V0cy4NCj4gDQo+IC0gVXNpbmcgKiotMSoqIGFz IHRoZSBgYG9mZnNldGBgIG9mIHRoZSBmaXJzdCBSQVcgaXRlbSBtYWtlcyBpdHMgYWJzb2x1dGUN Cj4gICBvZmZzZXQgbm90IGZpeGVkLCBpLmUuIHRoZSBwYXR0ZXJuIGlzIHNlYXJjaGVkIGV2ZXJ5 d2hlcmUuDQo+IC0gYGBtYXNrYGAgb25seSBhZmZlY3RzIHRoZSBwYXR0ZXJuLg0KPiANCj4gKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KPiB8IFJBVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8DQo+ICs9PT09PT09PT09Kz09PT09PT09PT09PT0rPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT0rDQo+IHwgYGBzcGVjYGAgfCBgYG9mZnNldGBg ICB8IGFic29sdXRlIG9yIHJlbGF0aXZlIHBhdHRlcm4gb2Zmc2V0IHwNCj4gfCAgICAgICAgICAr LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8 ICAgICAgICAgIHwgYGBsZW5ndGhgYCAgfCBwYXR0ZXJuIGxlbmd0aCAgICAgICAgICAgICAgICAg ICAgICB8DQo+IHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAgICAgICAgICB8IGBgcGF0dGVybmBgIHwgYnl0ZSBzdHJp bmcgb2YgdGhlIGFib3ZlIGxlbmd0aCAgICAgfA0KPiArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgYGBtYXNrYGAgfCBg YG9mZnNldGBgICB8IGlnbm9yZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gfCAg ICAgICAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KPiB8ICAgICAgICAgIHwgYGBsZW5ndGhgYCAgfCBpZ25vcmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8DQo+IHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAgICAgICAgICB8IGBgcGF0dGVybmBgIHwg Yml0bWFzayB3aXRoIHRoZSBzYW1lIGJ5dGUgbGVuZ3RoICAgfA0KPiArLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBF eGFtcGxlIHBhdHRlcm4gbG9va2luZyBmb3Igc2V2ZXJhbCBzdHJpbmdzIGF0IHZhcmlvdXMgb2Zm c2V0cyBvZiBhIFVEUA0KPiBwYXlsb2FkLCB1c2luZyBjb21iaW5lZCBSQVcgaXRlbXM6DQo+IA0K PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFVEUCBw YXlsb2FkIG1hdGNoaW5nICAgICAgICAgICAgICAgICAgICAgfA0KPiArPT09Kz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Kw0KPiB8IDAgfCBFdGhlcm5ldCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKw0KPiB8IDEgfCBJUHY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IDIg fCBVRFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0KPiB8IDMgfCBSQVcgfCBgYHNwZWNgYCB8 IGBgb2Zmc2V0YGAgIHwgLTEgICAgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICArLS0tLS0tLS0t LS0tLSstLS0tLS0tKw0KPiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBgbGVuZ3RoYGAgIHwgMyAg ICAgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0KPiB8 ICAgfCAgICAgfCAgICAgICAgICB8IGBgcGF0dGVybmBgIHwgImZvbyIgfA0KPiArLS0tKy0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0KPiB8IDQgfCBSQVcgfCBgYHNwZWNg YCB8IGBgb2Zmc2V0YGAgIHwgMjAgICAgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICArLS0tLS0t LS0tLS0tLSstLS0tLS0tKw0KPiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBgbGVuZ3RoYGAgIHwg MyAgICAgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0K PiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBgcGF0dGVybmBgIHwgImJhciIgfA0KPiArLS0tKy0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0KPiB8IDUgfCBSQVcgfCBgYHNw ZWNgYCB8IGBgb2Zmc2V0YGAgIHwgLTMwICAgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICArLS0t LS0tLS0tLS0tLSstLS0tLS0tKw0KPiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBgbGVuZ3RoYGAg IHwgMyAgICAgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0t Kw0KPiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBgcGF0dGVybmBgIHwgImJheiIgfA0KPiArLS0t Ky0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0KPiANCj4gVGhpcyB0cmFu c2xhdGVzIHRvOg0KPiANCj4gLSBMb2NhdGUgImZvbyIgaW4gVURQIHBheWxvYWQsIHJlbWVtYmVy IGl0cyBvZmZzZXQuDQo+IC0gQ2hlY2sgImJhciIgYXQgImZvbyIncyBvZmZzZXQgcGx1cyAyMCBi eXRlcy4NCj4gLSBDaGVjayAiYmF6IiBhdCAiZm9vIidzIG9mZnNldCBtaW51cyAzMCBieXRlcy4N Cj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0KPiBgYEVUSGBgDQo+ IF5eXl5eXl4NCj4gDQo+IE1hdGNoZXMgYW4gRXRoZXJuZXQgaGVhZGVyLg0KPiANCj4gLSBgYGRz dGBgOiBkZXN0aW5hdGlvbiBNQUMuDQo+IC0gYGBzcmNgYDogc291cmNlIE1BQy4NCj4gLSBgYHR5 cGVgYDogRXRoZXJUeXBlLg0KPiAtIGBgdGFnc2BgOiBudW1iZXIgb2YgODAyLjFRL2FkIHRhZ3Mg ZGVmaW5lZC4NCj4gLSBgYHRhZ1tdYGA6IDgwMi4xUS9hZCB0YWcgZGVmaW5pdGlvbnMsIGlubmVy bW9zdCBmaXJzdC4gRm9yIGVhY2ggb25lOg0KPiANCj4gIC0gYGB0cGlkYGA6IFRhZyBwcm90b2Nv bCBpZGVudGlmaWVyLg0KPiAgLSBgYHRjaWBgOiBUYWcgY29udHJvbCBpbmZvcm1hdGlvbi4NCj4g DQo+IGBgSVBWNGBgDQo+IF5eXl5eXl5eDQo+IA0KPiBNYXRjaGVzIGFuIElQdjQgaGVhZGVyLg0K PiANCj4gLSBgYHNyY2BgOiBzb3VyY2UgSVAgYWRkcmVzcy4NCj4gLSBgYGRzdGBgOiBkZXN0aW5h dGlvbiBJUCBhZGRyZXNzLg0KPiAtIGBgdG9zYGA6IFRvUy9EU0NQIGZpZWxkLg0KPiAtIGBgdHRs YGA6IFRUTCBmaWVsZC4NCj4gLSBgYHByb3RvYGA6IHByb3RvY29sIG51bWJlciBmb3IgdGhlIG5l eHQgbGF5ZXIuDQo+IA0KPiBgYElQVjZgYA0KPiBeXl5eXl5eXg0KPiANCj4gTWF0Y2hlcyBhbiBJ UHY2IGhlYWRlci4NCj4gDQo+IC0gYGBzcmNgYDogc291cmNlIElQIGFkZHJlc3MuDQo+IC0gYGBk c3RgYDogZGVzdGluYXRpb24gSVAgYWRkcmVzcy4NCj4gLSBgYHRjYGA6IHRyYWZmaWMgY2xhc3Mg ZmllbGQuDQo+IC0gYGBuaGBgOiBOZXh0IGhlYWRlciBmaWVsZCAocHJvdG9jb2wpLg0KPiAtIGBg aG9wX2xpbWl0YGA6IGhvcCBsaW1pdCBmaWVsZCAoVFRMKS4NCj4gDQo+IGBgSUNNUGBgDQo+IF5e Xl5eXl5eDQo+IA0KPiBNYXRjaGVzIGFuIElDTVAgaGVhZGVyLg0KPiANCj4gLSBUQkQuDQo+IA0K PiBgYFVEUGBgDQo+IF5eXl5eXl4NCj4gDQo+IE1hdGNoZXMgYSBVRFAgaGVhZGVyLg0KPiANCj4g LSBgYHNwb3J0YGA6IHNvdXJjZSBwb3J0Lg0KPiAtIGBgZHBvcnRgYDogZGVzdGluYXRpb24gcG9y dC4NCj4gLSBgYGxlbmd0aGBgOiBVRFAgbGVuZ3RoLg0KPiAtIGBgY2hlY2tzdW1gYDogVURQIGNo ZWNrc3VtLg0KPiANCj4gLi4gcmF3OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IGBg VENQYGANCj4gXl5eXl5eXg0KPiANCj4gTWF0Y2hlcyBhIFRDUCBoZWFkZXIuDQo+IA0KPiAtIGBg c3BvcnRgYDogc291cmNlIHBvcnQuDQo+IC0gYGBkcG9ydGBgOiBkZXN0aW5hdGlvbiBwb3J0Lg0K PiAtIEFsbCBvdGhlciBUQ1AgZmllbGRzIGFuZCBiaXRzLg0KPiANCj4gYGBWWExBTmBgDQo+IF5e Xl5eXl5eXg0KPiANCj4gTWF0Y2hlcyBhIFZYTEFOIGhlYWRlci4NCj4gDQo+IC0gVEJELg0KPiAN Cj4gLi4gcmF3OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IEFjdGlvbnMNCj4gfn5+ fn5+fg0KPiANCj4gRWFjaCBwb3NzaWJsZSBhY3Rpb24gaXMgcmVwcmVzZW50ZWQgYnkgYSB0eXBl LiBTb21lIGhhdmUgYXNzb2NpYXRlZA0KPiBjb25maWd1cmF0aW9uIHN0cnVjdHVyZXMuIFNldmVy YWwgYWN0aW9ucyBjb21iaW5lZCBpbiBhIGxpc3QgY2FuIGJlIGFmZmVjdGVkDQo+IHRvIGEgZmxv dyBydWxlLiBUaGF0IGxpc3QgaXMgbm90IG9yZGVyZWQuDQo+IA0KPiBBdCBsZWFzdCBvbmUgYWN0 aW9uIG11c3QgYmUgZGVmaW5lZCBpbiBhIGZpbHRlciBydWxlIGluIG9yZGVyIHRvIGRvDQo+IHNv bWV0aGluZyB3aXRoIG1hdGNoZWQgcGFja2V0cy4NCj4gDQo+IC0gQWN0aW9ucyBhcmUgZGVmaW5l ZCB3aXRoIGBgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbmBgLg0KPiAtIEEgbGlzdCBvZiBhY3Rpb25z IGlzIGRlZmluZWQgd2l0aCBgYHN0cnVjdCBydGVfZmxvd19hY3Rpb25zYGAuDQo+IA0KPiBUaGV5 IGZhbGwgaW4gdGhyZWUgY2F0ZWdvcmllczoNCj4gDQo+IC0gVGVybWluYXRpbmcgYWN0aW9ucyAo c3VjaCBhcyBRVUVVRSwgRFJPUCwgUlNTLCBQRiwgVkYpIHRoYXQgcHJldmVudA0KPiAgIHByb2Nl c3NpbmcgbWF0Y2hlZCBwYWNrZXRzIGJ5IHN1YnNlcXVlbnQgZmxvdyBydWxlcywgdW5sZXNzIG92 ZXJyaWRkZW4NCj4gICB3aXRoIFBBU1NUSFJVLg0KPiANCj4gLSBOb24gdGVybWluYXRpbmcgYWN0 aW9ucyAoUEFTU1RIUlUsIERVUCkgdGhhdCBsZWF2ZSBtYXRjaGVkIHBhY2tldHMgdXANCj4gZm9y DQo+ICAgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGJ5IHN1YnNlcXVlbnQgZmxvdyBydWxlcy4NCj4g DQo+IC0gT3RoZXIgbm9uIHRlcm1pbmF0aW5nIG1ldGEgYWN0aW9ucyB0aGF0IGRvIG5vdCBhZmZl Y3QgdGhlIGZhdGUgb2YgcGFja2V0cw0KPiAgIChFTkQsIFZPSUQsIElELCBDT1VOVCkuDQo+IA0K PiBXaGVuIHNldmVyYWwgYWN0aW9ucyBhcmUgY29tYmluZWQgaW4gYSBmbG93IHJ1bGUsIHRoZXkg c2hvdWxkIGFsbCBoYXZlDQo+IGRpZmZlcmVudCB0eXBlcyAoZS5nLiBkcm9wcGluZyBhIHBhY2tl dCB0d2ljZSBpcyBub3QgcG9zc2libGUpLiBIb3dldmVyDQo+IGNvbnNpZGVyaW5nIHRoZSBWT0lE IHR5cGUgaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZSwgdGhlIGRlZmluZWQgYmVoYXZpb3IN Cj4gaXMgZm9yIFBNRHMgdG8gb25seSB0YWtlIGludG8gYWNjb3VudCB0aGUgbGFzdCBhY3Rpb24g b2YgYSBnaXZlbiB0eXBlIGZvdW5kDQo+IGluIHRoZSBsaXN0LiBQTURzIHN0aWxsIHBlcmZvcm0g ZXJyb3IgY2hlY2tpbmcgb24gdGhlIGVudGlyZSBsaXN0Lg0KPiANCj4gKk5vdGUgdGhhdCBQQVNT VEhSVSBpcyB0aGUgb25seSBhY3Rpb24gYWJsZSB0byBvdmVycmlkZSBhIHRlcm1pbmF0aW5nIHJ1 bGUuKg0KPiANCj4gLi4gcmF3OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IEV4YW1w bGUgb2YgYW4gYWN0aW9uIHRoYXQgcmVkaXJlY3RzIHBhY2tldHMgdG8gcXVldWUgaW5kZXggMTA6 DQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBRVUVVRSAgICAgICAgICB8DQo+ICs9PT09 PT09PT09PSs9PT09Kw0KPiB8IGBgcXVldWVgYCB8IDEwIHwNCj4gKy0tLS0tLS0tLS0tKy0tLS0r DQo+IA0KPiBBY3Rpb24gbGlzdHMgZXhhbXBsZXMsIHRoZWlyIG9yZGVyIGlzIG5vdCBzaWduaWZp Y2FudCwgYXBwbGljYXRpb25zIG11c3QNCj4gY29uc2lkZXIgYWxsIGFjdGlvbnMgdG8gYmUgcGVy Zm9ybWVkIHNpbXVsdGFuZW91c2x5Og0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgQ291 bnQgYW5kIGRyb3AgfA0KPiArPT09PT09PSs9PT09PT09PSsNCj4gfCBDT1VOVCB8ICAgICAgICB8 DQo+ICstLS0tLS0tKy0tLS0tLS0tKw0KPiB8IERST1AgIHwgICAgICAgIHwNCj4gKy0tLS0tLS0r LS0tLS0tLS0rDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgVGFnLCBj b3VudCBhbmQgcmVkaXJlY3QgIHwNCj4gKz09PT09PT0rPT09PT09PT09PT0rPT09PT09Kw0KPiB8 IElEICAgIHwgYGBpZGBgICAgIHwgMHgyYSB8DQo+ICstLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LSsNCj4gfCBDT1VOVCB8ICAgICAgICAgICAgICAgICAgfA0KPiArLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0rDQo+IHwgUVVFVUUgfCBgYHF1ZXVlYGAgfCAxMCAgIHwNCj4gKy0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tKw0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFJl ZGlyZWN0IHRvIHF1ZXVlIDUgICB8DQo+ICs9PT09PT09Kz09PT09PT09PT09PT09PSsNCj4gfCBE Uk9QICB8ICAgICAgICAgICAgICAgfA0KPiArLS0tLS0tLSstLS0tLS0tLS0tLSstLS0rDQo+IHwg UVVFVUUgfCBgYHF1ZXVlYGAgfCA1IHwNCj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tKw0KPiAN Cj4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIGNvbnNpZGVyaW5nIGJvdGggYWN0aW9ucyBhcmUgcGVy Zm9ybWVkDQo+IHNpbXVsdGFuZW91c2x5LA0KPiBpdHMgZW5kIHJlc3VsdCBpcyB0aGF0IG9ubHkg UVVFVUUgaGFzIGFueSBlZmZlY3QuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ IHwgUmVkaXJlY3QgdG8gcXVldWUgMyAgIHwNCj4gKz09PT09PT0rPT09PT09PT09PT0rPT09Kw0K PiB8IFFVRVVFIHwgYGBxdWV1ZWBgIHwgNSB8DQo+ICstLS0tLS0tKy0tLS0tLS0tLS0tKy0tLSsN Cj4gfCBWT0lEICB8ICAgICAgICAgICAgICAgfA0KPiArLS0tLS0tLSstLS0tLS0tLS0tLSstLS0r DQo+IHwgUVVFVUUgfCBgYHF1ZXVlYGAgfCAzIHwNCj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t Kw0KPiANCj4gQXMgcHJldmlvdXNseSBkZXNjcmliZWQsIG9ubHkgdGhlIGxhc3QgYWN0aW9uIG9m IGEgZ2l2ZW4gdHlwZSBmb3VuZCBpbiB0aGUNCj4gbGlzdCBpcyB0YWtlbiBpbnRvIGFjY291bnQu IFRoZSBhYm92ZSBleGFtcGxlIGFsc28gc2hvd3MgdGhhdCBWT0lEIGlzDQo+IGlnbm9yZWQuDQo+ IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gQWN0aW9uIHR5cGVz DQo+IH5+fn5+fn5+fn5+fg0KPiANCj4gQ29tbW9uIGFjdGlvbiB0eXBlcyBhcmUgZGVzY3JpYmVk IGluIHRoaXMgc2VjdGlvbi4gTGlrZSBwYXR0ZXJuIGl0ZW0gdHlwZXMsDQo+IHRoaXMgbGlzdCBp cyBub3QgZXhoYXVzdGl2ZSBhcyBuZXcgYWN0aW9ucyB3aWxsIGJlIGFkZGVkIGluIHRoZSBmdXR1 cmUuDQo+IA0KPiBgYEVORGBgIChhY3Rpb24pDQo+IF5eXl5eXl5eXl5eXl5eXl4NCj4gDQo+IEVu ZCBtYXJrZXIgZm9yIGFjdGlvbiBsaXN0cy4gUHJldmVudHMgZnVydGhlciBwcm9jZXNzaW5nIG9m IGFjdGlvbnMsIHRoZXJlYnkNCj4gZW5kaW5nIHRoZSBsaXN0Lg0KPiANCj4gLSBJdHMgbnVtZXJp YyB2YWx1ZSBpcyAqKjAqKiBmb3IgY29udmVuaWVuY2UuDQo+IC0gUE1EIHN1cHBvcnQgaXMgbWFu ZGF0b3J5Lg0KPiAtIE5vIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4NCj4gDQo+ICstLS0tLS0tLS0t LS0tLS0rDQo+IHwgRU5EICAgICAgICAgICB8DQo+ICs9PT09PT09PT09PT09PT0rDQo+IHwgbm8g cHJvcGVydGllcyB8DQo+ICstLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBgYFZPSURgYCAoYWN0aW9u KQ0KPiBeXl5eXl5eXl5eXl5eXl5eXg0KPiANCj4gVXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBj b252ZW5pZW5jZS4gSXQgaXMgaWdub3JlZCBhbmQgc2ltcGx5IGRpc2NhcmRlZCBieQ0KPiBQTURz Lg0KPiANCj4gLSBQTUQgc3VwcG9ydCBpcyBtYW5kYXRvcnkuDQo+IC0gTm8gY29uZmlndXJhYmxl IHByb3BlcnR5Lg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLSsNCj4gfCBWT0lEICAgICAgICAgIHwN Cj4gKz09PT09PT09PT09PT09PSsNCj4gfCBubyBwcm9wZXJ0aWVzIHwNCj4gKy0tLS0tLS0tLS0t LS0tLSsNCj4gDQo+IGBgUEFTU1RIUlVgYA0KPiBeXl5eXl5eXl5eXl4NCj4gDQo+IExlYXZlcyBw YWNrZXRzIHVwIGZvciBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgYnkgc3Vic2VxdWVudCBmbG93IHJ1 bGVzLiBUaGlzDQo+IGlzIHRoZSBkZWZhdWx0IHdoZW4gYSBydWxlIGRvZXMgbm90IGNvbnRhaW4g YSB0ZXJtaW5hdGluZyBhY3Rpb24sIGJ1dCBjYW4gYmUNCj4gc3BlY2lmaWVkIHRvIGZvcmNlIGEg cnVsZSB0byBiZWNvbWUgbm9uLXRlcm1pbmF0aW5nLg0KPiANCj4gLSBObyBjb25maWd1cmFibGUg cHJvcGVydHkuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFBBU1NUSFJVICAgICAgfA0K PiArPT09PT09PT09PT09PT09Kw0KPiB8IG5vIHByb3BlcnRpZXMgfA0KPiArLS0tLS0tLS0tLS0t LS0tKw0KPiANCj4gRXhhbXBsZSB0byBjb3B5IGEgcGFja2V0IHRvIGEgcXVldWUgYW5kIGNvbnRp bnVlIHByb2Nlc3NpbmcgYnkgc3Vic2VxdWVudA0KPiBmbG93IHJ1bGVzOg0KW1N1Z2VzaF0gSWYg YSBwYWNrZXQgZ2V0IGNvcGllZCB0byBhIHF1ZXVlLCBpdOKAmXMgYSB0ZXJtaW5hdGlvbiBhY3Rp b24uIA0KSG93IGNhbiBpdHMgcG9zc2libGUgdG8gZG8gc3Vic2VxdWVudCBhY3Rpb24gYWZ0ZXIg dGhlIHBhY2tldCBhbHJlYWR5IA0KbW92ZWQgdG8gdGhlIHF1ZXVlLiA/SG93IGl0IGRpZmZlcnMg ZnJvbSBEVVAgYWN0aW9uPw0KIEFtIEkgbWlzc2luZyBhbnl0aGluZyBoZXJlPyANCj4gDQo+ICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBDb3B5IHRvIHF1ZXVlIDggICAgICAgICAg fA0KPiArPT09PT09PT09PSs9PT09PT09PT09PT09PT0rDQo+IHwgUEFTU1RIUlUgfCAgICAgICAg ICAgICAgIHwNCj4gKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tKw0KPiB8IFFVRVVFICAgIHwg YGBxdWV1ZWBgIHwgOCB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLSsNCj4gDQo+IGBg SURgYA0KPiBeXl5eXl4NCj4gDQo+IEF0dGFjaGVzIGEgMzIgYml0IHZhbHVlIHRvIHBhY2tldHMu DQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsN Cj4gfCBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICs9 PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kw0KPiB8IGBgaWRg YCB8IDMyIGJpdCB2YWx1ZSB0byByZXR1cm4gd2l0aCBwYWNrZXRzIHwNCj4gKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KW1N1Z2VzaF0gSSBhc3N1 bWUgdGhlIGFwcGxpY2F0aW9uIGhhcyB0byBwcm9ncmFtIHRoZSBmbG93IA0Kd2l0aCBhIHVuaXF1 ZSBJRCBhbmQgbWF0Y2hpbmcgcGFja2V0cyBhcmUgc3RhbXBlZCB3aXRoIHRoaXMgSUQNCndoZW4g cmVwb3J0aW5nIHRvIHRoZSBzb2Z0d2FyZS4gVGhlIHVuaXF1ZW5lc3Mgb2YgSUQgaXMgTk9UIA0K Z3VhcmFudGVlZCBieSB0aGUgQVBJIGZyYW1ld29yay4gQ29ycmVjdCBtZSBpZiBJIGFtIHdyb25n IGhlcmUuDQoNCltTdWdlc2hdIElzIGl0IGEgbGltaXRhdGlvbiB0byB1c2Ugb25seSAzMiBiaXQg SUQ/IElzIGl0IHBvc3NpYmxlIHRvIGhhdmUgYQ0KNjQgYml0IElEPyBTbyB0aGF0IGFwcGxpY2F0 aW9uIGNhbiB1c2UgdGhlIGNvbnRyb2wgcGxhbmUgZmxvdyBwb2ludGVyDQpJdHNlbGYgYXMgYW4g SUQuIERvZXMgaXQgbWFrZSBzZW5zZT8gDQoNCg0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBh Z2VCcmVhaw0KPiANCj4gYGBRVUVVRWBgDQo+IF5eXl5eXl5eXg0KPiANCj4gQXNzaWducyBwYWNr ZXRzIHRvIGEgZ2l2ZW4gcXVldWUgaW5kZXguDQo+IA0KPiAtIFRlcm1pbmF0aW5nIGJ5IGRlZmF1 bHQuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgUVVFVUUg ICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKz09PT09PT09PT09Kz09PT09PT09PT09PT09 PT09PT09Kw0KPiB8IGBgcXVldWVgYCB8IHF1ZXVlIGluZGV4IHRvIHVzZSB8DQo+ICstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IGBgRFJPUGBgDQo+IF5eXl5eXl5eDQo+ IA0KPiBEcm9wIHBhY2tldHMuDQo+IA0KPiAtIE5vIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4NCj4g LSBUZXJtaW5hdGluZyBieSBkZWZhdWx0Lg0KPiAtIFBBU1NUSFJVIG92ZXJyaWRlcyB0aGlzIGFj dGlvbiBpZiBib3RoIGFyZSBzcGVjaWZpZWQuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tKw0KPiB8 IERST1AgICAgICAgICAgfA0KPiArPT09PT09PT09PT09PT09Kw0KPiB8IG5vIHByb3BlcnRpZXMg fA0KPiArLS0tLS0tLS0tLS0tLS0tKw0KPiANCj4gYGBDT1VOVGBgDQo+IF5eXl5eXl5eXg0KPiAN CltTdWdlc2hdIFNob3VsZCB3ZSByZWFsbHkgaGF2ZSB0byBzZXQgY291bnQgYWN0aW9uIGV4cGxp Y2l0bHkgZm9yIGV2ZXJ5IHJ1bGU/DQpJTUhPIGl0IHdvdWxkIGJlIGdyZWF0IHRvIGJlIGFuIGlt cGxpY2l0IGFjdGlvbi4gTW9zdCBvZiB0aGUgYXBwbGljYXRpb24gd291bGQgYmUNCmludGVyZXN0 ZWQgaW4gdGhlIHN0YXRzIG9mIGFsbW9zdCBhbGwgdGhlIGZpbHRlcnMvZmxvd3MgLg0KPiBFbmFi bGVzIGhpdHMgY291bnRlciBmb3IgdGhpcyBydWxlLg0KPiANCj4gVGhpcyBjb3VudGVyIGNhbiBi ZSByZXRyaWV2ZWQgYW5kIHJlc2V0IHRocm91Z2ggYGBydGVfZmxvd19xdWVyeSgpYGAsIHNlZQ0K PiBgYHN0cnVjdCBydGVfZmxvd19xdWVyeV9jb3VudGBgLg0KPiANCj4gLSBDb3VudGVycyBjYW4g YmUgcmV0cmlldmVkIHdpdGggYGBydGVfZmxvd19xdWVyeSgpYGAuDQo+IC0gTm8gY29uZmlndXJh YmxlIHByb3BlcnR5Lg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLSsNCj4gfCBDT1VOVCAgICAgICAg IHwNCj4gKz09PT09PT09PT09PT09PSsNCj4gfCBubyBwcm9wZXJ0aWVzIHwNCj4gKy0tLS0tLS0t LS0tLS0tLSsNCj4gDQo+IFF1ZXJ5IHN0cnVjdHVyZSB0byByZXRyaWV2ZSBhbmQgcmVzZXQgdGhl IGZsb3cgcnVsZSBoaXRzIGNvdW50ZXI6DQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IENPVU5UIHF1ZXJ5ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfA0KPiArPT09PT09PT09PT0rPT09PT0rPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Kw0KPiB8IGBgcmVzZXRgYCB8IGluICB8IHJlc2V0IGNvdW50ZXIg YWZ0ZXIgcXVlcnkgICAgfA0KPiArLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKw0KPiB8IGBgaGl0c2BgICB8IG91dCB8IG51bWJlciBvZiBoaXRzIGZvciB0 aGlzIGZsb3cgfA0KPiArLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKw0KPiANCj4gYGBEVVBgYA0KPiBeXl5eXl5eDQo+IA0KPiBEdXBsaWNhdGVzIHBhY2tl dHMgdG8gYSBnaXZlbiBxdWV1ZSBpbmRleC4NCj4gDQo+IFRoaXMgaXMgbm9ybWFsbHkgY29tYmlu ZWQgd2l0aCBRVUVVRSwgaG93ZXZlciB3aGVuIHVzZWQgYWxvbmUsIGl0IGlzDQo+IGFjdHVhbGx5 IHNpbWlsYXIgdG8gUVVFVUUgKyBQQVNTVEhSVS4NCj4gDQo+IC0gTm9uLXRlcm1pbmF0aW5nIGJ5 IGRlZmF1bHQuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKw0KPiB8IERVUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfA0KPiArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Kw0KPiB8IGBgcXVldWVgYCB8IHF1ZXVlIGluZGV4IHRvIGR1cGxpY2F0ZSBwYWNrZXQgdG8g fA0KPiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0K PiANCj4gLi4gcmF3OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IGBgUlNTYGANCj4g Xl5eXl5eXg0KPiANCj4gU2ltaWxhciB0byBRVUVVRSwgZXhjZXB0IFJTUyBpcyBhZGRpdGlvbmFs bHkgcGVyZm9ybWVkIG9uIHBhY2tldHMgdG8gc3ByZWFkDQo+IHRoZW0gYW1vbmcgc2V2ZXJhbCBx dWV1ZXMgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLg0KPiANCj4gLSBUZXJt aW5hdGluZyBieSBkZWZhdWx0Lg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBSU1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwNCj4gKz09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSsNCj4gfCBgYHJzc19jb25mYGAgfCBSU1MgcGFyYW1ldGVycyAgICAgICAgICAgICAgIHwN Cj4gKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBg YHF1ZXVlc2BgICAgfCBudW1iZXIgb2YgZW50cmllcyBpbiBxdWV1ZVtdIHwNCj4gKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBgYHF1ZXVlW11gYCAg fCBxdWV1ZSBpbmRpY2VzIHRvIHVzZSAgICAgICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IGBgUEZgYCAoYWN0aW9uKQ0KPiBeXl5e Xl5eXl5eXl5eXl4NCj4gDQo+IFJlZGlyZWN0cyBwYWNrZXRzIHRvIHRoZSBwaHlzaWNhbCBmdW5j dGlvbiAoUEYpIG9mIHRoZSBjdXJyZW50IGRldmljZS4NCj4gDQo+IC0gTm8gY29uZmlndXJhYmxl IHByb3BlcnR5Lg0KPiAtIFRlcm1pbmF0aW5nIGJ5IGRlZmF1bHQuDQo+IA0KPiArLS0tLS0tLS0t LS0tLS0tKw0KPiB8IFBGICAgICAgICAgICAgfA0KPiArPT09PT09PT09PT09PT09Kw0KPiB8IG5v IHByb3BlcnRpZXMgfA0KPiArLS0tLS0tLS0tLS0tLS0tKw0KPiANCj4gYGBWRmBgIChhY3Rpb24p DQo+IF5eXl5eXl5eXl5eXl5eXg0KPiANCj4gUmVkaXJlY3RzIHBhY2tldHMgdG8gdGhlIHZpcnR1 YWwgZnVuY3Rpb24gKFZGKSBvZiB0aGUgY3VycmVudCBkZXZpY2Ugd2l0aA0KPiB0aGUgc3BlY2lm aWVkIElELg0KPiANCj4gLSBUZXJtaW5hdGluZyBieSBkZWZhdWx0Lg0KPiANCj4gKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBWRiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwNCj4gKz09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSsNCj4gfCBgYGlkYGAgfCBWRiBJRCB0byByZWRpcmVjdCBwYWNrZXRzIHRvIHwNCj4g Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IFBsYW5uZWQg dHlwZXMNCj4gfn5+fn5+fn5+fn5+fg0KPiANCj4gT3RoZXIgYWN0aW9uIHR5cGVzIGFyZSBwbGFu bmVkIGJ1dCBub3QgZGVmaW5lZCB5ZXQuIFRoZXNlIGFjdGlvbnMgd2lsbCBhZGQNCj4gdGhlIGFi aWxpdHkgdG8gYWx0ZXIgbWF0Y2hpbmcgcGFja2V0cyBpbiBzZXZlcmFsIHdheXMsIHN1Y2ggYXMg cGVyZm9ybWluZw0KPiBlbmNhcHN1bGF0aW9uL2RlY2Fwc3VsYXRpb24gb2YgdHVubmVsIGhlYWRl cnMgb24gc3BlY2lmaWMgZmxvd3MuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VC cmVhaw0KPiANCj4gUnVsZXMgbWFuYWdlbWVudA0KPiAtLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiBB IHNpbXBsZSBBUEkgd2l0aCBvbmx5IGZvdXIgZnVuY3Rpb25zIGlzIHByb3ZpZGVkIHRvIGZ1bGx5 IG1hbmFnZSBmbG93cy4NCj4gDQo+IEVhY2ggY3JlYXRlZCBmbG93IHJ1bGUgaXMgYXNzb2NpYXRl ZCB3aXRoIGFuIG9wYXF1ZSwgUE1ELXNwZWNpZmljIGhhbmRsZQ0KPiBwb2ludGVyLiBUaGUgYXBw bGljYXRpb24gaXMgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgaXQgdW50aWwgdGhlIHJ1bGUgaXMN Cj4gZGVzdHJveWVkLg0KPiANCj4gRmxvd3MgcnVsZXMgYXJlIGRlZmluZWQgd2l0aCBgYHN0cnVj dCBydGVfZmxvd2BgLg0KPiANCj4gVmFsaWRhdGlvbg0KPiB+fn5+fn5+fn5+DQo+IA0KPiBHaXZl biB0aGF0IGV4cHJlc3NpbmcgYSBkZWZpbml0ZSBzZXQgb2YgZGV2aWNlIGNhcGFiaWxpdGllcyB3 aXRoIHRoaXMgQVBJIGlzDQo+IG5vdCBwcmFjdGljYWwsIGEgZGVkaWNhdGVkIGZ1bmN0aW9uIGlz IHByb3ZpZGVkIHRvIGNoZWNrIGlmIGEgZmxvdyBydWxlIGlzDQo+IHN1cHBvcnRlZCBhbmQgY2Fu IGJlIGNyZWF0ZWQuDQo+IA0KPiA6Og0KPiANCj4gIGludA0KPiAgcnRlX2Zsb3dfdmFsaWRhdGUo dWludDhfdCBwb3J0X2lkLA0KPiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9m bG93X3BhdHRlcm4gKnBhdHRlcm4sDQo+ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg cnRlX2Zsb3dfYWN0aW9ucyAqYWN0aW9ucyk7DQo+IA0KPiBXaGlsZSB0aGlzIGZ1bmN0aW9uIGhh cyBubyBlZmZlY3Qgb24gdGhlIHRhcmdldCBkZXZpY2UsIHRoZSBmbG93IHJ1bGUgaXMNCj4gdmFs aWRhdGVkIGFnYWluc3QgaXRzIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzdGF0ZSBhbmQgdGhlIHJl dHVybmVkIHZhbHVlDQo+IHNob3VsZCBiZSBjb25zaWRlcmVkIHZhbGlkIGJ5IHRoZSBjYWxsZXIg Zm9yIHRoYXQgc3RhdGUgb25seS4NCj4gDQo+IFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBndWFyYW50 ZWVkIHRvIHJlbWFpbiB2YWxpZCBvbmx5IGFzIGxvbmcgYXMgbm8NCj4gc3VjY2Vzc2Z1bCBjYWxs cyB0byBydGVfZmxvd19jcmVhdGUoKSBvciBydGVfZmxvd19kZXN0cm95KCkgYXJlIG1hZGUgaW4g dGhlDQo+IG1lYW50aW1lIGFuZCBubyBkZXZpY2UgcGFyYW1ldGVyIGFmZmVjdGluZyBmbG93IHJ1 bGVzIGluIGFueSB3YXkgYXJlDQo+IG1vZGlmaWVkLCBkdWUgdG8gcG9zc2libGUgY29sbGlzaW9u cyBvciByZXNvdXJjZSBsaW1pdGF0aW9ucyAoYWx0aG91Z2ggaW4NCj4gc3VjaCBjYXNlcyBgYEVJ TlZBTGBgIHNob3VsZCBub3QgYmUgcmV0dXJuZWQpLg0KPiANCj4gQXJndW1lbnRzOg0KPiANCj4g LSBgYHBvcnRfaWRgYDogcG9ydCBpZGVudGlmaWVyIG9mIEV0aGVybmV0IGRldmljZS4NCj4gLSBg YHBhdHRlcm5gYDogcGF0dGVybiBzcGVjaWZpY2F0aW9uIHRvIGNoZWNrLg0KPiAtIGBgYWN0aW9u c2BgOiBhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmxvdyBkZWZpbml0aW9uLg0KPiANCj4g UmV0dXJuIHZhbHVlOg0KPiANCj4gLSAqKjAqKiBpZiBmbG93IHJ1bGUgaXMgdmFsaWQgYW5kIGNh biBiZSBjcmVhdGVkLiBBIG5lZ2F0aXZlIGVycm5vIHZhbHVlDQo+ICAgb3RoZXJ3aXNlIChgYHJ0 ZV9lcnJub2BgIGlzIGFsc28gc2V0KSwgdGhlIGZvbGxvd2luZyBlcnJvcnMgYXJlIGRlZmluZWQu DQo+IC0gYGAtRUlOVkFMYGA6IHVua25vd24gb3IgaW52YWxpZCBydWxlIHNwZWNpZmljYXRpb24u DQo+IC0gYGAtRU5PVFNVUGBgOiB2YWxpZCBidXQgdW5zdXBwb3J0ZWQgcnVsZSBzcGVjaWZpY2F0 aW9uIChlLmcuIHBhcnRpYWwgbWFza3MNCj4gICBhcmUgdW5zdXBwb3J0ZWQpLg0KPiAtIGBgLUVF WElTVGBgOiBjb2xsaXNpb24gd2l0aCBhbiBleGlzdGluZyBydWxlLg0KPiAtIGBgLUVOT01FTWBg OiBub3QgZW5vdWdoIHJlc291cmNlcy4NCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFn ZUJyZWFrDQo+IA0KPiBDcmVhdGlvbg0KPiB+fn5+fn5+fg0KPiANCj4gQ3JlYXRpbmcgYSBmbG93 IHJ1bGUgaXMgc2ltaWxhciB0byB2YWxpZGF0aW5nIG9uZSwgZXhjZXB0IHRoZSBydWxlIGlzDQo+ IGFjdHVhbGx5IGNyZWF0ZWQuDQo+IA0KPiA6Og0KPiANCj4gIHN0cnVjdCBydGVfZmxvdyAqDQo+ ICBydGVfZmxvd19jcmVhdGUodWludDhfdCBwb3J0X2lkLA0KPiAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBydGVfZmxvd19wYXR0ZXJuICpwYXR0ZXJuLA0KPiAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb25zICphY3Rpb25zKTsNCj4gDQo+IEFyZ3VtZW50 czoNCj4gDQo+IC0gYGBwb3J0X2lkYGA6IHBvcnQgaWRlbnRpZmllciBvZiBFdGhlcm5ldCBkZXZp Y2UuDQo+IC0gYGBwYXR0ZXJuYGA6IHBhdHRlcm4gc3BlY2lmaWNhdGlvbiB0byBhZGQuDQo+IC0g YGBhY3Rpb25zYGA6IGFjdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmbG93IGRlZmluaXRpb24u DQo+IA0KPiBSZXR1cm4gdmFsdWU6DQo+IA0KPiBBIHZhbGlkIGZsb3cgcG9pbnRlciBpbiBjYXNl IG9mIHN1Y2Nlc3MsIE5VTEwgb3RoZXJ3aXNlIGFuZCBgYHJ0ZV9lcnJub2BgIGlzDQo+IHNldCB0 byB0aGUgcG9zaXRpdmUgdmVyc2lvbiBvZiBvbmUgb2YgdGhlIGVycm9yIGNvZGVzIGRlZmluZWQg Zm9yDQo+IGBgcnRlX2Zsb3dfdmFsaWRhdGUoKWBgLg0KW1N1Z2VzaF0gOiBLaW5kIG9mIGltcGxl bWVudGF0aW9uIHNwZWNpZmljIHF1ZXJ5LiBXaGF0IGlmIGFwcGxpY2F0aW9uDQp0cnkgdG8gYWRk IGR1cGxpY2F0ZSBydWxlcz8gRG9lcyB0aGUgQVBJIGNyZWF0ZSBuZXcgZmxvdyBlbnRyeSBmb3Ig ZXZlcnkgDQpBUEkgY2FsbD8gDQpbU3VnZXNoXSBBbm90aGVyIGNvbmNlcm4gaXMgdGhlIGNvc3Qg YW5kIHRpbWUgb2YgaW5zdGFsbGluZyB0aGVzZSBydWxlcw0KaW4gdGhlIGhhcmR3YXJlLiBDYW4g d2UgbWFrZSB0aGVzZSBBUElzIHRpbWUgYm91bmQob3IgYXQgbGVhc3QgYW4gb3B0aW9uIHRvDQpz ZXQgdGhlIHRpbWUgbGltaXQgdG8gZXhlY3V0ZSB0aGVzZSBBUElzKSwgc28gdGhhdA0KQXBwbGlj YXRpb24gZG9lc27igJl0IGhhdmUgdG8gd2FpdCBzbyBsb25nIHdoZW4gaW5zdGFsbGluZyBhbmQg ZGVsZXRpbmcgZmxvd3Mgd2l0aA0Kc2xvdyBoYXJkd2FyZS9OSUMuIFdoYXQgZG8geW91IHRoaW5r PyBNb3N0IG9mIHRoZSBkYXRhcGF0aCBmbG93IGluc3RhbGxhdGlvbnMgYXJlIA0KZHluYW1pYyBh bmQgdHJpZ2dlcmVkIG9ubHkgd2hlbiB0aGVyZSBpcw0KYW4gaW5ncmVzcyB0cmFmZmljLiBEZWxh eSBpbiBmbG93IGluc2VydGlvbi9kZWxldGlvbiBoYXZlIHVucHJlZGljdGFibGUgY29uc2VxdWVu Y2VzLg0KDQpbU3VnZXNoXSBBbm90aGVyIHF1ZXJ5IGlzIG9uIHRoZSBzeW5jaHJvbml6YXRpb24g cGFydC4gV2hhdCBpZiBzYW1lIHJ1bGVzIGFyZSANCmhhbmRsZWQgZnJvbSBkaWZmZXJlbnQgdGhy ZWFkcz8gSXMgYXBwbGljYXRpb24gcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBjb25jdXJy ZW50DQpoYXJkd2FyZSBwcm9ncmFtbWluZz8NCg0KPiANCj4gRGVzdHJ1Y3Rpb24NCj4gfn5+fn5+ fn5+fn4NCj4gDQo+IEZsb3cgcnVsZXMgZGVzdHJ1Y3Rpb24gaXMgbm90IGF1dG9tYXRpYywgYW5k IGEgcXVldWUgc2hvdWxkIG5vdCBiZSByZWxlYXNlZA0KPiBpZiBhbnkgYXJlIHN0aWxsIGF0dGFj aGVkIHRvIGl0LiBBcHBsaWNhdGlvbnMgbXVzdCB0YWtlIGNhcmUgb2YgcGVyZm9ybWluZw0KPiB0 aGlzIHN0ZXAgYmVmb3JlIHJlbGVhc2luZyByZXNvdXJjZXMuDQo+IA0KPiA6Og0KPiANCj4gIGlu dA0KPiAgcnRlX2Zsb3dfZGVzdHJveSh1aW50OF90IHBvcnRfaWQsDQo+ICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBydGVfZmxvdyAqZmxvdyk7DQo+IA0KPiANCltTdWdlc2hdIEkgd291bGQgc3Vn Z2VzdCBoYXZpbmcgYSBjbGVhbi11cCBBUEkgaXMgcmVhbGx5IHVzZWZ1bCBhcyB0aGUgcmVsZWFz aW5nIG9mDQpRdWV1ZShpcyBpdCBhcHBsaWNhYmxlIGZvciByZWxlYXNpbmcgb2YgcG9ydCB0b28/ KSBpcyBub3QgZ3VhcmFudGVlaW5nIHRoZSBhdXRvbWF0aWMgZmxvdyANCmRlc3RydWN0aW9uLiBU aGlzIHdheSBhcHBsaWNhdGlvbiBjYW4gaW5pdGlhbGl6ZSB0aGUgcG9ydCwNCmNsZWFuLXVwIGFs bCB0aGUgZXhpc3RpbmcgcnVsZXMgYW5kIGNyZWF0ZSBuZXcgcnVsZXMgIG9uIGEgY2xlYW4gc2xh dGUuDQoNCj4gRmFpbHVyZSB0byBkZXN0cm95IGEgZmxvdyBydWxlIG1heSBvY2N1ciB3aGVuIG90 aGVyIGZsb3cgcnVsZXMgZGVwZW5kIG9uIGl0LA0KPiBhbmQgZGVzdHJveWluZyBpdCB3b3VsZCBy ZXN1bHQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLg0KPiANCj4gVGhpcyBmdW5jdGlvbiBpcyBv bmx5IGd1YXJhbnRlZWQgdG8gc3VjY2VlZCBpZiBmbG93IHJ1bGVzIGFyZSBkZXN0cm95ZWQgaW4N Cj4gcmV2ZXJzZSBvcmRlciBvZiB0aGVpciBjcmVhdGlvbi4NCj4gDQo+IEFyZ3VtZW50czoNCj4g DQo+IC0gYGBwb3J0X2lkYGA6IHBvcnQgaWRlbnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+ IC0gYGBmbG93YGA6IGZsb3cgcnVsZSB0byBkZXN0cm95Lg0KPiANCj4gUmV0dXJuIHZhbHVlOg0K PiANCj4gLSAqKjAqKiBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm5vIHZhbHVlIG90aGVyd2lz ZSBhbmQgYGBydGVfZXJybm9gYCBpcw0KPiAgIHNldC4NCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiAN Cj4gICAgUGFnZUJyZWFrDQo+IA0KPiBRdWVyeQ0KPiB+fn5+fg0KPiANCj4gUXVlcnkgYW4gZXhp c3RpbmcgZmxvdyBydWxlLg0KPiANCj4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgcmV0cmlldmluZyBm bG93LXNwZWNpZmljIGRhdGEgc3VjaCBhcyBjb3VudGVycy4gRGF0YQ0KPiBpcyBnYXRoZXJlZCBi eSBzcGVjaWFsIGFjdGlvbnMgd2hpY2ggbXVzdCBiZSBwcmVzZW50IGluIHRoZSBmbG93IHJ1bGUN Cj4gZGVmaW5pdGlvbi4NCj4gDQo+IDo6DQo+IA0KPiAgaW50DQo+ICBydGVfZmxvd19xdWVyeSh1 aW50OF90IHBvcnRfaWQsDQo+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3cgKmZsb3cs DQo+ICAgICAgICAgICAgICAgICBlbnVtIHJ0ZV9mbG93X2FjdGlvbl90eXBlIGFjdGlvbiwNCj4g ICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOw0KPiANCj4gQXJndW1lbnRzOg0KPiANCj4gLSBg YHBvcnRfaWRgYDogcG9ydCBpZGVudGlmaWVyIG9mIEV0aGVybmV0IGRldmljZS4NCj4gLSBgYGZs b3dgYDogZmxvdyBydWxlIHRvIHF1ZXJ5Lg0KPiAtIGBgYWN0aW9uYGA6IGFjdGlvbiB0eXBlIHRv IHF1ZXJ5Lg0KPiAtIGBgZGF0YWBgOiBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSBhc3NvY2lh dGVkIHF1ZXJ5IGRhdGEgdHlwZS4NCj4gDQo+IFJldHVybiB2YWx1ZToNCj4gDQo+IC0gKiowKiog b24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIGBgcnRlX2Vy cm5vYGAgaXMNCj4gICBzZXQuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVh aw0KPiANCj4gQmVoYXZpb3INCj4gLS0tLS0tLS0NCj4gDQo+IC0gQVBJIG9wZXJhdGlvbnMgYXJl IHN5bmNocm9ub3VzIGFuZCBibG9ja2luZyAoYGBFQUdBSU5gYCBjYW5ub3QgYmUNCj4gICByZXR1 cm5lZCkuDQo+IA0KPiAtIFRoZXJlIGlzIG5vIHByb3Zpc2lvbiBmb3IgcmVlbnRyYW5jeS9tdWx0 aS10aHJlYWQgc2FmZXR5LCBhbHRob3VnaCBub3RoaW5nDQo+ICAgc2hvdWxkIHByZXZlbnQgZGlm ZmVyZW50IGRldmljZXMgZnJvbSBiZWluZyBjb25maWd1cmVkIGF0IHRoZSBzYW1lDQo+ICAgdGlt ZS4gUE1EcyBtYXkgcHJvdGVjdCB0aGVpciBjb250cm9sIHBhdGggZnVuY3Rpb25zIGFjY29yZGlu Z2x5Lg0KPiANCj4gLSBTdG9wcGluZyB0aGUgZGF0YSBwYXRoIChUWC9SWCkgc2hvdWxkIG5vdCBi ZSBuZWNlc3Nhcnkgd2hlbiBtYW5hZ2luZw0KPiBmbG93DQo+ICAgcnVsZXMuIElmIHRoaXMgY2Fu bm90IGJlIGFjaGlldmVkIG5hdHVyYWxseSBvciB3aXRoIHdvcmthcm91bmRzIChzdWNoIGFzDQo+ ICAgdGVtcG9yYXJpbHkgcmVwbGFjaW5nIHRoZSBidXJzdCBmdW5jdGlvbiBwb2ludGVycyksIGFu IGFwcHJvcHJpYXRlIGVycm9yDQo+ICAgY29kZSBtdXN0IGJlIHJldHVybmVkIChgYEVCVVNZYGAp Lg0KPiANCj4gLSBQTURzLCBub3QgYXBwbGljYXRpb25zLCBhcmUgcmVzcG9uc2libGUgZm9yIG1h aW50YWluaW5nIGZsb3cgcnVsZXMNCj4gICBjb25maWd1cmF0aW9uIHdoZW4gc3RvcHBpbmcgYW5k IHJlc3RhcnRpbmcgYSBwb3J0IG9yIHBlcmZvcm1pbmcgb3RoZXINCj4gICBhY3Rpb25zIHdoaWNo IG1heSBhZmZlY3QgdGhlbS4gVGhleSBjYW4gb25seSBiZSBkZXN0cm95ZWQgZXhwbGljaXRseS4N Cj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0KW1N1Z2VzaF0gUXVl cnkgYWxsIHRoZSBydWxlcyBmb3IgYSBzcGVjaWZpYyBwb3J0L3F1ZXVlPz8gVXNlZnVsIHdoZW4g YWRkaW5nIGFuZA0KZGVsZXRpbmcgcG9ydHMgYW5kIHF1ZXVlcyBkeW5hbWljYWxseSBhY2NvcmRp bmcgdG8gdGhlIG5lZWQuIEkgYW0gbm90IHN1cmUgDQp3aGF0IGFyZSB0aGUgb3RoZXIgIGRpZmZl cmVudCB1c2VjYXNlcyBmb3IgdGhlc2UgQVBJcy4gQnV0IEkgZmVlbCBpdCBtYWtlcyBtdWNoIGVh c2llciB0byANCm1hbmFnZSBmbG93cyBmcm9tIHRoZSBhcHBsaWNhdGlvbi4gV2hhdCBkbyB5b3Ug dGhpbms/DQo+IENvbXBhdGliaWxpdHkNCj4gLS0tLS0tLS0tLS0tLQ0KPiANCj4gTm8ga25vd24g aGFyZHdhcmUgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgYWxsIHRoZSBmZWF0dXJlcyBkZXNjcmli ZWQgaW4NCj4gdGhpcw0KPiBkb2N1bWVudC4NCj4gDQo+IFVuc3VwcG9ydGVkIGZlYXR1cmVzIG9y IGNvbWJpbmF0aW9ucyBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIGZ1bGx5DQo+IGVtdWxhdGVkDQo+ IGluIHNvZnR3YXJlIGJ5IFBNRHMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIFBhcnRpYWxseSBz dXBwb3J0ZWQgZmVhdHVyZXMNCj4gbWF5IGJlIGNvbXBsZXRlZCBpbiBzb2Z0d2FyZSBhcyBsb25n IGFzIGhhcmR3YXJlIHBlcmZvcm1zIG1vc3Qgb2YgdGhlDQo+IHdvcmsNCj4gKHN1Y2ggYXMgcXVl dWUgcmVkaXJlY3Rpb24gYW5kIHBhY2tldCByZWNvZ25pdGlvbikuDQo+IA0KPiBIb3dldmVyIFBN RHMgYXJlIGV4cGVjdGVkIHRvIGRvIHRoZWlyIGJlc3QgdG8gc2F0aXNmeSBhcHBsaWNhdGlvbiBy ZXF1ZXN0cw0KPiBieSB3b3JraW5nIGFyb3VuZCBoYXJkd2FyZSBsaW1pdGF0aW9ucyBhcyBsb25n IGFzIGRvaW5nIHNvIGRvZXMgbm90IGFmZmVjdA0KPiB0aGUgYmVoYXZpb3Igb2YgZXhpc3Rpbmcg ZmxvdyBydWxlcy4NCj4gDQo+IFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcHJvdmlkZSBhIGZldyBl eGFtcGxlcyBvZiBzdWNoIGNhc2VzLCB0aGV5IGFyZSBiYXNlZA0KPiBvbiBsaW1pdGF0aW9ucyBi dWlsdCBpbnRvIHRoZSBwcmV2aW91cyBBUElzLg0KPiANCj4gR2xvYmFsIGJpdG1hc2tzDQo+IH5+ fn5+fn5+fn5+fn5+fg0KPiANCj4gRWFjaCBmbG93IHJ1bGUgY29tZXMgd2l0aCBpdHMgb3duLCBw ZXItbGF5ZXIgYml0bWFza3MsIHdoaWxlIGhhcmR3YXJlIG1heQ0KPiBzdXBwb3J0IG9ubHkgYSBz aW5nbGUsIGRldmljZS13aWRlIGJpdG1hc2sgZm9yIGEgZ2l2ZW4gbGF5ZXIgdHlwZSwgc28gdGhh dA0KPiB0d28gSVB2NCBydWxlcyBjYW5ub3QgdXNlIGRpZmZlcmVudCBiaXRtYXNrcy4NCj4gDQo+ IFRoZSBleHBlY3RlZCBiZWhhdmlvciBpbiB0aGlzIGNhc2UgaXMgdGhhdCBQTURzIGF1dG9tYXRp Y2FsbHkgY29uZmlndXJlDQo+IGdsb2JhbCBiaXRtYXNrcyBhY2NvcmRpbmcgdG8gdGhlIG5lZWRz IG9mIHRoZSBmaXJzdCBjcmVhdGVkIGZsb3cgcnVsZS4NCj4gDQo+IFN1YnNlcXVlbnQgcnVsZXMg YXJlIGFsbG93ZWQgb25seSBpZiB0aGVpciBiaXRtYXNrcyBtYXRjaCB0aG9zZSwgdGhlDQo+IGBg RUVYSVNUYGAgZXJyb3IgY29kZSBzaG91bGQgYmUgcmV0dXJuZWQgb3RoZXJ3aXNlLg0KPiANCj4g VW5zdXBwb3J0ZWQgbGF5ZXIgdHlwZXMNCj4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gDQo+ IE1hbnkgcHJvdG9jb2xzIGNhbiBiZSBzaW11bGF0ZWQgYnkgY3JhZnRpbmcgcGF0dGVybnMgd2l0 aCB0aGUgYFJBV2BfIHR5cGUuDQo+IA0KPiBQTURzIGNhbiByZWx5IG9uIHRoaXMgY2FwYWJpbGl0 eSB0byBzaW11bGF0ZSBzdXBwb3J0IGZvciBwcm90b2NvbHMgd2l0aA0KPiBmaXhlZCBoZWFkZXJz IG5vdCBkaXJlY3RseSByZWNvZ25pemVkIGJ5IGhhcmR3YXJlLg0KPiANCj4gYGBBTllgYCBwYXR0 ZXJuIGl0ZW0NCj4gfn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gDQo+IFRoaXMgcGF0dGVybiBpdGVt IHN0YW5kcyBmb3IgYW55dGhpbmcsIHdoaWNoIGNhbiBiZSBkaWZmaWN1bHQgdG8gdHJhbnNsYXRl DQo+IHRvIHNvbWV0aGluZyBoYXJkd2FyZSB3b3VsZCB1bmRlcnN0YW5kLCBwYXJ0aWN1bGFybHkg aWYgZm9sbG93ZWQgYnkgbW9yZQ0KPiBzcGVjaWZpYyB0eXBlcy4NCj4gDQo+IENvbnNpZGVyIHRo ZSBmb2xsb3dpbmcgcGF0dGVybjoNCj4gDQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rDQo+IHwgMCB8IEVUSEVSICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICst LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgMSB8IEFOWSAoYGBtaW5g YCA9IDEsIGBgbWF4YGAgPSAxKSB8DQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rDQo+IHwgMiB8IFRDUCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBLbm93aW5nIHRoYXQgVENQ IGRvZXMgbm90IG1ha2Ugc2Vuc2Ugd2l0aCBzb21ldGhpbmcgb3RoZXIgdGhhbiBJUHY0IGFuZA0K PiBJUHY2DQo+IGFzIEwzLCBzdWNoIGEgcGF0dGVybiBtYXkgYmUgdHJhbnNsYXRlZCB0byB0d28g ZmxvdyBydWxlcyBpbnN0ZWFkOg0KPiANCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4g fCAwIHwgRVRIRVIgICAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsN Cj4gfCAxIHwgSVBWNCAoemVyb2VkIG1hc2spIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSsNCj4gfCAyIHwgVENQICAgICAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSsNCj4gDQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgMCB8IEVUSEVSICAg ICAgICAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgMSB8IElQVjYg KHplcm9lZCBtYXNrKSB8DQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgMiB8IFRD UCAgICAgICAgICAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBO b3RlIHRoYXQgYXMgc29vbiBhcyBhIEFOWSBydWxlIGNvdmVycyBzZXZlcmFsIGxheWVycywgdGhp cyBhcHByb2FjaCBtYXkNCj4geWllbGQgYSBsYXJnZSBudW1iZXIgb2YgaGlkZGVuIGZsb3cgcnVs ZXMuIEl0IGlzIHRodXMgc3VnZ2VzdGVkIHRvIG9ubHkNCj4gc3VwcG9ydCB0aGUgbW9zdCBjb21t b24gc2NlbmFyaW9zIChhbnl0aGluZyBhcyBMMiBhbmQvb3IgTDMpLg0KPiANCj4gLi4gcmF3Ojog cGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IFVuc3VwcG9ydGVkIGFjdGlvbnMNCj4gfn5+ fn5+fn5+fn5+fn5+fn5+fg0KPiANCj4gLSBXaGVuIGNvbWJpbmVkIHdpdGggYSBgUVVFVUVgXyBh Y3Rpb24sIHBhY2tldCBjb3VudGluZyAoYENPVU5UYF8pIGFuZA0KPiAgIHRhZ2dpbmcgKGBJRGBf KSBtYXkgYmUgaW1wbGVtZW50ZWQgaW4gc29mdHdhcmUgYXMgbG9uZyBhcyB0aGUgdGFyZ2V0IHF1 ZXVlDQo+ICAgaXMgdXNlZCBieSBhIHNpbmdsZSBydWxlLg0KPiANCj4gLSBBIHJ1bGUgc3BlY2lm eWluZyBib3RoIGBEVVBgXyArIGBRVUVVRWBfIG1heSBiZSB0cmFuc2xhdGVkIHRvIHR3byBoaWRk ZW4NCj4gICBydWxlcyBjb21iaW5pbmcgYFFVRVVFYF8gYW5kIGBQQVNTVEhSVWBfLg0KPiANCj4g LSBXaGVuIGEgc2luZ2xlIHRhcmdldCBxdWV1ZSBpcyBwcm92aWRlZCwgYFJTU2BfIGNhbiBhbHNv IGJlIGltcGxlbWVudGVkDQo+ICAgdGhyb3VnaCBgUVVFVUVgXy4NCj4gDQo+IEZsb3cgcnVsZXMg cHJpb3JpdHkNCj4gfn5+fn5+fn5+fn5+fn5+fn5+fg0KPiANCj4gV2hpbGUgaXQgd291bGQgbmF0 dXJhbGx5IG1ha2Ugc2Vuc2UsIGZsb3cgcnVsZXMgY2Fubm90IGJlIGFzc3VtZWQgdG8gYmUNCj4g cHJvY2Vzc2VkIGJ5IGhhcmR3YXJlIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZWlyIGNyZWF0aW9u IGZvciBzZXZlcmFsDQo+IHJlYXNvbnM6DQo+IA0KPiAtIFRoZXkgbWF5IGJlIG1hbmFnZWQgaW50 ZXJuYWxseSBhcyBhIHRyZWUgb3IgYSBoYXNoIHRhYmxlIGluc3RlYWQgb2YgYQ0KPiAgIGxpc3Qu DQo+IC0gUmVtb3ZpbmcgYSBmbG93IHJ1bGUgYmVmb3JlIGFkZGluZyBhbm90aGVyIG9uZSBjYW4g ZWl0aGVyIHB1dCB0aGUgbmV3DQo+IHJ1bGUNCj4gICBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0IG9y IHJldXNlIGEgZnJlZWQgZW50cnkuDQo+IC0gRHVwbGljYXRpb24gbWF5IG9jY3VyIHdoZW4gcGFj a2V0cyBhcmUgbWF0Y2hlZCBieSBzZXZlcmFsIHJ1bGVzLg0KPiANCj4gRm9yIG92ZXJsYXBwaW5n IHJ1bGVzIChwYXJ0aWN1bGFybHkgaW4gb3JkZXIgdG8gdXNlIHRoZSBgUEFTU1RIUlVgXyBhY3Rp b24pDQo+IHByZWRpY3RhYmxlIGJlaGF2aW9yIGlzIG9ubHkgZ3VhcmFudGVlZCBieSB1c2luZyBk aWZmZXJlbnQgcHJpb3JpdHkgbGV2ZWxzLg0KPiANCj4gUHJpb3JpdHkgbGV2ZWxzIGFyZSBub3Qg bmVjZXNzYXJpbHkgaW1wbGVtZW50ZWQgaW4gaGFyZHdhcmUsIG9yIG1heSBiZQ0KPiBzZXZlcmVs eSBsaW1pdGVkIChlLmcuIGEgc2luZ2xlIHByaW9yaXR5IGJpdCkuDQo+IA0KPiBGb3IgdGhlc2Ug cmVhc29ucywgcHJpb3JpdHkgbGV2ZWxzIG1heSBiZSBpbXBsZW1lbnRlZCBwdXJlbHkgaW4gc29m dHdhcmUgYnkNCj4gUE1Ecy4NCj4gDQo+IC0gRm9yIGRldmljZXMgZXhwZWN0aW5nIGZsb3cgcnVs ZXMgdG8gYmUgYWRkZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIFBNRHMNCj4gICBtYXkgZGVzdHJv eSBhbmQgcmUtY3JlYXRlIGV4aXN0aW5nIHJ1bGVzIGFmdGVyIGFkZGluZyBhIG5ldyBvbmUgd2l0 aA0KPiAgIGEgaGlnaGVyIHByaW9yaXR5Lg0KPiANCj4gLSBBIGNvbmZpZ3VyYWJsZSBudW1iZXIg b2YgZHVtbXkgb3IgZW1wdHkgcnVsZXMgY2FuIGJlIGNyZWF0ZWQgYXQNCj4gICBpbml0aWFsaXph dGlvbiB0aW1lIHRvIHNhdmUgaGlnaCBwcmlvcml0eSBzbG90cyBmb3IgbGF0ZXIuDQo+IA0KPiAt IEluIG9yZGVyIHRvIHNhdmUgcHJpb3JpdHkgbGV2ZWxzLCBQTURzIG1heSBldmFsdWF0ZSB3aGV0 aGVyIHJ1bGVzIGFyZQ0KPiAgIGxpa2VseSB0byBjb2xsaWRlIGFuZCBhZGp1c3QgdGhlaXIgcHJp b3JpdHkgYWNjb3JkaW5nbHkuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVh aw0KPiANCj4gQVBJIG1pZ3JhdGlvbg0KPiA9PT09PT09PT09PT09DQo+IA0KPiBFeGhhdXN0aXZl IGxpc3Qgb2YgZGVwcmVjYXRlZCBmaWx0ZXIgdHlwZXMgYW5kIGhvdyB0byBjb252ZXJ0IHRoZW0g dG8NCj4gZ2VuZXJpYyBmbG93IHJ1bGVzLg0KPiANCj4gYGBNQUNWTEFOYGAgdG8gYGBFVEhgYCDi hpIgYGBWRmBgLCBgYFBGYGANCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+IA0KPiBgTUFDVkxBTmBfIGNhbiBiZSB0cmFuc2xhdGVkIHRvIGEgYmFzaWMgYEVUSGBf IGZsb3cgcnVsZSB3aXRoIGEgYFZGDQo+IChhY3Rpb24pYF8gb3IgYFBGIChhY3Rpb24pYF8gdGVy bWluYXRpbmcgYWN0aW9uLg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsNCj4gfCBNQUNWTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gfCBQYXR0ZXJuICAgICAgICAgICAg ICAgICAgfCBBY3Rpb25zIHwNCj4gKz09PSs9PT09PSs9PT09PT09PT09Kz09PT09Kz09PT09PT09 PSsNCj4gfCAwIHwgRVRIIHwgYGBzcGVjYGAgfCBhbnkgfCBWRiwgICAgIHwNCj4gfCAgIHwgICAg ICstLS0tLS0tLS0tKy0tLS0tKyBQRiAgICAgIHwNCj4gfCAgIHwgICAgIHwgYGBtYXNrYGAgfCBh bnkgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLSsN Cj4gDQo+IGBgRVRIRVJUWVBFYGAgdG8gYGBFVEhgYCDihpIgYGBRVUVVRWBgLCBgYERST1BgYA0K PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiBg RVRIRVJUWVBFYF8gaXMgYmFzaWNhbGx5IGFuIGBFVEhgXyBmbG93IHJ1bGUgd2l0aCBgUVVFVUVg XyBvciBgRFJPUGBfIGFzDQo+IGEgdGVybWluYXRpbmcgYWN0aW9uLg0KPiANCj4gKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBFVEhFUlRZUEUgICAgICAgICAgICAg ICAgICAgICAgICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsN Cj4gfCBQYXR0ZXJuICAgICAgICAgICAgICAgICAgfCBBY3Rpb25zIHwNCj4gKz09PSs9PT09PSs9 PT09PT09PT09Kz09PT09Kz09PT09PT09PSsNCj4gfCAwIHwgRVRIIHwgYGBzcGVjYGAgfCBhbnkg fCBRVUVVRSwgIHwNCj4gfCAgIHwgICAgICstLS0tLS0tLS0tKy0tLS0tKyBEUk9QICAgIHwNCj4g fCAgIHwgICAgIHwgYGBtYXNrYGAgfCBhbnkgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLSstLS0t LS0tLS0tKy0tLS0tKy0tLS0tLS0tLSsNCj4gDQo+IGBgRkxFWElCTEVgYCB0byBgYFJBV2BgIOKG kiBgYFFVRVVFYGANCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+ IGBGTEVYSUJMRWBfIGNhbiBiZSB0cmFuc2xhdGVkIHRvIG9uZSBgUkFXYF8gcGF0dGVybiB3aXRo IGBRVUVVRWBfIGFzIHRoZQ0KPiB0ZXJtaW5hdGluZyBhY3Rpb24gYW5kIGEgZGVmaW5lZCBwcmlv cml0eSBsZXZlbC4NCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r DQo+IHwgRkxFWElCTEUgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rDQo+IHwgUGF0dGVybiAgICAgICAgICAgICAgICAg IHwgQWN0aW9ucyB8DQo+ICs9PT0rPT09PT0rPT09PT09PT09PSs9PT09PSs9PT09PT09PT0rDQo+ IHwgMCB8IFJBVyB8IGBgc3BlY2BgIHwgYW55IHwgUVVFVUUgICB8DQo+IHwgICB8ICAgICArLS0t LS0tLS0tLSstLS0tLSsgICAgICAgICB8DQo+IHwgICB8ICAgICB8IGBgbWFza2BgIHwgYW55IHwg ICAgICAgICB8DQo+ICstLS0rLS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0rDQo+IA0K PiBgYFNZTmBgIHRvIGBgVENQYGAg4oaSIGBgUVVFVUVgYA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gDQo+IGBTWU5gXyBpcyBhIGBUQ1BgXyBydWxlIHdpdGggb25seSB0aGUg YGBzeW5gYCBiaXQgZW5hYmxlZCBhbmQgbWFza2VkLCBhbmQNCj4gYFFVRVVFYF8gYXMgdGhlIHRl cm1pbmF0aW5nIGFjdGlvbi4NCj4gDQo+IFByaW9yaXR5IGxldmVsIGNhbiBiZSBzZXQgdG8gc2lt dWxhdGUgdGhlIGhpZ2ggcHJpb3JpdHkgYml0Lg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBTWU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSsNCj4gfCBQYXR0ZXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBB Y3Rpb25zIHwNCj4gKz09PSs9PT09PT0rPT09PT09PT09PSs9PT09PT09PT09PT09Kz09PT09PT09 PSsNCj4gfCAwIHwgRVRIICB8IGBgc3BlY2BgIHwgTi9BICAgICAgICAgfCBRVUVVRSAgIHwNCj4g fCAgIHwgICAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwg ICAgICB8IGBgbWFza2BgIHwgZW1wdHkgICAgICAgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAxIHwgSVBWNCB8IGBgc3Bl Y2BgIHwgTi9BICAgICAgICAgfCAgICAgICAgIHwNCj4gfCAgIHwgICAgICArLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAgICB8IGBgbWFza2BgIHwgZW1wdHkg ICAgICAgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t KyAgICAgICAgIHwNCj4gfCAyIHwgVENQICB8IGBgc3BlY2BgIHwgYGBzeW5gYCA9IDEgfCAgICAg ICAgIHwNCj4gfCAgIHwgICAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwN Cj4gfCAgIHwgICAgICB8IGBgbWFza2BgIHwgYGBzeW5gYCA9IDEgfCAgICAgICAgIHwNCj4gKy0t LSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gDQo+IGBgTlRV UExFYGAgdG8gYGBJUFY0YGAsIGBgVENQYGAsIGBgVURQYGAg4oaSIGBgUVVFVUVgYA0KPiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiBg TlRVUExFYF8gaXMgc2ltaWxhciB0byBzcGVjaWZ5aW5nIGFuIGVtcHR5IEwyLCBgSVBWNGBfIGFz IEwzIHdpdGggYFRDUGBfIG9yDQo+IGBVRFBgXyBhcyBMNCBhbmQgYFFVRVVFYF8gYXMgdGhlIHRl cm1pbmF0aW5nIGFjdGlvbi4NCj4gDQo+IEEgcHJpb3JpdHkgbGV2ZWwgY2FuIGJlIHNwZWNpZmll ZCBhcyB3ZWxsLg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsNCj4gfCBOVFVQTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gfCBQYXR0ZXJuICAgICAgICAg ICAgICAgICAgICAgfCBBY3Rpb25zIHwNCj4gKz09PSs9PT09PT0rPT09PT09PT09PSs9PT09PT09 Kz09PT09PT09PSsNCj4gfCAwIHwgRVRIICB8IGBgc3BlY2BgIHwgTi9BICAgfCBRVUVVRSAgIHwN Cj4gfCAgIHwgICAgICArLS0tLS0tLS0tLSstLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAg ICB8IGBgbWFza2BgIHwgZW1wdHkgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tKyAgICAgICAgIHwNCj4gfCAxIHwgSVBWNCB8IGBgc3BlY2BgIHwgYW55ICAgfCAg ICAgICAgIHwNCj4gfCAgIHwgICAgICArLS0tLS0tLS0tLSstLS0tLS0tKyAgICAgICAgIHwNCj4g fCAgIHwgICAgICB8IGBgbWFza2BgIHwgYW55ICAgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tKyAgICAgICAgIHwNCj4gfCAyIHwgVENQLCB8IGBgc3BlY2BgIHwg YW55ICAgfCAgICAgICAgIHwNCj4gfCAgIHwgVURQICArLS0tLS0tLS0tLSstLS0tLS0tKyAgICAg ICAgIHwNCj4gfCAgIHwgICAgICB8IGBgbWFza2BgIHwgYW55ICAgfCAgICAgICAgIHwNCj4gKy0t LSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSsNCj4gDQo+IGBgVFVOTkVMYGAg dG8gYGBFVEhgYCwgYGBJUFY0YGAsIGBgSVBWNmBgLCBgYFZYTEFOYGAgKG9yIG90aGVyKSDihpIg YGBRVUVVRWBgDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gYFRVTk5FTGBfIG1hdGNoZXMg Y29tbW9uIElQdjQgYW5kIElQdjYgTDMvTDQtYmFzZWQgdHVubmVsIHR5cGVzLg0KPiANCj4gSW4g dGhlIGZvbGxvd2luZyB0YWJsZSwgYEFOWWBfIGlzIHVzZWQgdG8gY292ZXIgdGhlIG9wdGlvbmFs IEw0Lg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsNCj4gfCBUVU5ORUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsN Cj4gfCBQYXR0ZXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBY3Rpb25zIHwNCj4g Kz09PSs9PT09PT09PT0rPT09PT09PT09PSs9PT09PT09PT09PT09Kz09PT09PT09PSsNCj4gfCAw IHwgRVRIICAgICB8IGBgc3BlY2BgIHwgYW55ICAgICAgICAgfCBRVUVVRSAgIHwNCj4gfCAgIHwg ICAgICAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAg ICAgICB8IGBgbWFza2BgIHwgYW55ICAgICAgICAgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAxIHwgSVBWNCwgICB8 IGBgc3BlY2BgIHwgYW55ICAgICAgICAgfCAgICAgICAgIHwNCj4gfCAgIHwgSVBWNiAgICArLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAgICAgICB8IGBgbWFz a2BgIHwgYW55ICAgICAgICAgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAyIHwgQU5ZICAgICB8IGBgc3BlY2BgIHwg YGBtaW5gYCA9IDAgfCAgICAgICAgIHwNCj4gfCAgIHwgICAgICAgICB8ICAgICAgICAgICstLS0t LS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAgICAgICB8ICAgICAgICAgIHwgYGBtYXhg YCA9IDAgfCAgICAgICAgIHwNCj4gfCAgIHwgICAgICAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAgICAgICB8IGBgbWFza2BgIHwgTi9BICAgICAgICAg fCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAg ICAgICAgIHwNCj4gfCAzIHwgVlhMQU4sICB8IGBgc3BlY2BgIHwgYW55ICAgICAgICAgfCAgICAg ICAgIHwNCj4gfCAgIHwgR0VORVZFLCArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAg IHwNCj4gfCAgIHwgVEVSRURPLCB8IGBgbWFza2BgIHwgYW55ICAgICAgICAgfCAgICAgICAgIHwN Cj4gfCAgIHwgTlZHUkUsICB8ICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgIHwNCj4g fCAgIHwgR1JFLCAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgIHwNCj4gfCAg IHwgLi4uICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgIHwNCj4gKy0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gDQo+IC4uIHJh dzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0KPiBgYEZESVJgYCB0byBtb3N0IGl0ZW0g dHlwZXMg4oaSIGBgUVVFVUVgYCwgYGBEUk9QYGAsIGBgUEFTU1RIUlVgYA0KPiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g DQo+IGBGRElSYF8gaXMgbW9yZSBjb21wbGV4IHRoYW4gYW55IG90aGVyIHR5cGUsIHRoZXJlIGFy ZSBzZXZlcmFsIG1ldGhvZHMgdG8NCj4gZW11bGF0ZSBpdHMgZnVuY3Rpb25hbGl0eS4gSXQgaXMg c3VtbWFyaXplZCBmb3IgdGhlIG1vc3QgcGFydCBpbiB0aGUgdGFibGUNCj4gYmVsb3cuDQo+IA0K PiBBIGZldyBmZWF0dXJlcyBhcmUgaW50ZW50aW9uYWxseSBub3Qgc3VwcG9ydGVkOg0KPiANCj4g LSBUaGUgYWJpbGl0eSB0byBjb25maWd1cmUgdGhlIG1hdGNoaW5nIGlucHV0IHNldCBhbmQgbWFz a3MgZm9yIHRoZSBlbnRpcmUNCj4gICBkZXZpY2UsIFBNRHMgc2hvdWxkIHRha2UgY2FyZSBvZiBp dCBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byBmbG93IHJ1bGVzLg0KPiANCj4gLSBSZXR1cm5p bmcgZm91ciBvciBlaWdodCBieXRlcyBvZiBtYXRjaGVkIGRhdGEgd2hlbiB1c2luZyBmbGV4IGJ5 dGVzDQo+ICAgZmlsdGVyaW5nLiBBbHRob3VnaCBhIHNwZWNpZmljIGFjdGlvbiBjb3VsZCBpbXBs ZW1lbnQgaXQsIGl0IGNvbmZsaWN0cw0KPiAgIHdpdGggdGhlIG11Y2ggbW9yZSB1c2VmdWwgMzIg Yml0cyB0YWdnaW5nIG9uIGRldmljZXMgdGhhdCBzdXBwb3J0IGl0Lg0KPiANCj4gLSBTaWRlIGVm ZmVjdHMgb24gUlNTIHByb2Nlc3Npbmcgb2YgdGhlIGVudGlyZSBkZXZpY2UuIEZsb3cgcnVsZXMg dGhhdA0KPiAgIGNvbmZsaWN0IHdpdGggdGhlIGN1cnJlbnQgZGV2aWNlIGNvbmZpZ3VyYXRpb24g c2hvdWxkIG5vdCBiZQ0KPiAgIGFsbG93ZWQuIFNpbWlsYXJseSwgZGV2aWNlIGNvbmZpZ3VyYXRp b24gc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHdoZW4gaXQNCj4gICBhZmZlY3RzIGV4aXN0aW5nIGZs b3cgcnVsZXMuDQo+IA0KPiAtIERldmljZSBtb2RlcyBvZiBvcGVyYXRpb24uICJub25lIiBpcyB1 bnN1cHBvcnRlZCBzaW5jZSBmaWx0ZXJpbmcgY2Fubm90IGJlDQo+ICAgZGlzYWJsZWQgYXMgbG9u ZyBhcyBhIGZsb3cgcnVsZSBpcyBwcmVzZW50Lg0KPiANCj4gLSAiTUFDIFZMQU4iIG9yICJ0dW5u ZWwiIHBlcmZlY3QgbWF0Y2hpbmcgbW9kZXMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkNCj4gc2V0 DQo+ICAgYWNjb3JkaW5nIHRvIHRoZSBjcmVhdGVkIGZsb3cgcnVsZXMuDQo+IA0KPiArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBGRElSICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKw0KPiB8IFBhdHRlcm4gICAgICAgICAgICAg ICAgICAgICAgICAgfCBBY3Rpb25zICAgIHwNCj4gKz09PSs9PT09PT09PT09PT0rPT09PT09PT09 PSs9PT09PSs9PT09PT09PT09PT0rDQo+IHwgMCB8IEVUSCwgICAgICAgfCBgYHNwZWNgYCB8IGFu eSB8IFFVRVVFLCAgICAgfA0KPiB8ICAgfCBSQVcgICAgICAgICstLS0tLS0tLS0tKy0tLS0tKyBE Uk9QLCAgICAgIHwNCj4gfCAgIHwgICAgICAgICAgICB8IGBgbWFza2BgIHwgYW55IHwgUEFTU1RI UlUgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0t Kw0KPiB8IDEgfCBJUFY0LCAgICAgIHwgYGBzcGVjYGAgfCBhbnkgfCBJRCAgICAgICAgIHwNCj4g fCAgIHwgSVBWNiAgICAgICArLS0tLS0tLS0tLSstLS0tLSsgKG9wdGlvbmFsKSB8DQo+IHwgICB8 ICAgICAgICAgICAgfCBgYG1hc2tgYCB8IGFueSB8ICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKyAgICAgICAgICAgIHwNCj4gfCAyIHwgVENQLCAgICAg ICB8IGBgc3BlY2BgIHwgYW55IHwgICAgICAgICAgICB8DQo+IHwgICB8IFVEUCwgICAgICAgKy0t LS0tLS0tLS0rLS0tLS0rICAgICAgICAgICAgfA0KPiB8ICAgfCBTQ1RQICAgICAgIHwgYGBtYXNr YGAgfCBhbnkgfCAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLSsgICAgICAgICAgICB8DQo+IHwgMyB8IFZGLCAgICAgICAgfCBgYHNwZWNgYCB8IGFueSB8 ICAgICAgICAgICAgfA0KPiB8ICAgfCBQRiwgICAgICAgICstLS0tLS0tLS0tKy0tLS0tKyAgICAg ICAgICAgIHwNCj4gfCAgIHwgU0lHTkFUVVJFICB8IGBgbWFza2BgIHwgYW55IHwgICAgICAgICAg ICB8DQo+IHwgICB8IChvcHRpb25hbCkgfCAgICAgICAgICB8ICAgICB8ICAgICAgICAgICAgfA0K PiArLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLSsNCj4gDQo+ IGBgSEFTSGBgDQo+IH5+fn5+fn5+DQo+IA0KPiBIYXNoaW5nIGNvbmZpZ3VyYXRpb24gaXMgc2V0 IHBlciBydWxlIHRocm91Z2ggdGhlIGBTSUdOQVRVUkVgXyBpdGVtLg0KPiANCj4gU2luY2UgaXQg aXMgdXN1YWxseSBhIGdsb2JhbCBkZXZpY2Ugc2V0dGluZywgYWxsIGZsb3cgcnVsZXMgY3JlYXRl ZCB3aXRoDQo+IHRoaXMgaXRlbSBtYXkgaGF2ZSB0byBzaGFyZSB0aGUgc2FtZSBzcGVjaWZpY2F0 aW9uLg0KPiANCj4gYGBMMl9UVU5ORUxgYCB0byBgYFZPSURgYCDihpIgYGBWWExBTmBgIChvciBv dGhlcnMpDQo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn4NCj4gDQo+IEFsbCBwYWNrZXRzIGFyZSBtYXRjaGVkLiBUaGlzIHR5cGUgYWx0ZXJzIGluY29t aW5nIHBhY2tldHMgdG8gZW5jYXBzdWxhdGUNCj4gdGhlbSBpbiBhIGNob3NlbiB0dW5uZWwgdHlw ZSwgb3B0aW9uYWxseSByZWRpcmVjdCB0aGVtIHRvIGEgVkYgYXMgd2VsbC4NCj4gDQo+IFRoZSBk ZXN0aW5hdGlvbiBwb29sIGZvciB0YWcgYmFzZWQgZm9yd2FyZGluZyBjYW4gYmUgZW11bGF0ZWQg d2l0aCBvdGhlcg0KPiBmbG93IHJ1bGVzIHVzaW5nIGBEVVBgXyBhcyB0aGUgYWN0aW9uLg0KPiAN Cj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgTDJfVFVO TkVMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsNCj4gfCBQYXR0ZXJuICAgICAgICAgICAgICAgICAgIHwg QWN0aW9ucyAgICB8DQo+ICs9PT0rPT09PT09Kz09PT09PT09PT0rPT09PT0rPT09PT09PT09PT09 Kw0KPiB8IDAgfCBWT0lEIHwgYGBzcGVjYGAgfCBOL0EgfCBWWExBTiwgICAgIHwNCj4gfCAgIHwg ICAgICB8ICAgICAgICAgIHwgICAgIHwgR0VORVZFLCAgICB8DQo+IHwgICB8ICAgICAgfCAgICAg ICAgICB8ICAgICB8IC4uLiAgICAgICAgfA0KPiB8ICAgfCAgICAgICstLS0tLS0tLS0tKy0tLS0t Ky0tLS0tLS0tLS0tLSsNCj4gfCAgIHwgICAgICB8IGBgbWFza2BgIHwgTi9BIHwgVkYgICAgICAg ICB8DQo+IHwgICB8ICAgICAgfCAgICAgICAgICB8ICAgICB8IChvcHRpb25hbCkgfA0KPiArLS0t Ky0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLSsNCj4gDQo+IC0tDQo+IEFkcmll biBNYXphcmd1aWwNCj4gNldJTkQNCg==