From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Williams, Dan J" Subject: Re: [PATCH v2 00/20] libnd: non-volatile memory device support Date: Fri, 8 May 2015 06:31:15 +0000 Message-ID: <1431066672.30434.4.camel@intel.com> References: <20150428181203.35812.60474.stgit@dwillia2-desk3.amr.corp.intel.com> <2127273.OhQ7MIpEUu@vostro.rjw.lan> <9076255.5kM0LKa3dN@vostro.rjw.lan> In-Reply-To: <9076255.5kM0LKa3dN@vostro.rjw.lan> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <91A75B7C979A1D4084CFEF50B7872239@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org To: "rjw@rjwysocki.net" Cc: "mingo@kernel.org" , "linux-kernel@vger.kernel.org" , "nicholas.w.moulin@linux.intel.com" , "neilb@suse.de" , "jmoyer@redhat.com" , "tglx@linutronix.de" , "torvalds@linux-foundation.org" , "hch@lst.de" , "Moore, Robert" , "Wysocki, Rafael J" , "hpa@zytor.com" , "linux-nvdimm@lists.01.org" , "axboe@fb.com" , "vishal.l.verma@linux.intel.com" , "willy@linux.intel.com" , "bp@alien8.de" , "ross.zwisler@linux.intel.com" , "luto@amacapital.net" , "gregkh@linuxfoundation.org" , "boaz@plexistor.com" , "david@fromorbit.com" , "akpm@linux-foundation.org" , "linux-acpi@vger.kernel.org" List-ID: T24gVHVlLCAyMDE1LTA1LTA1IGF0IDAyOjA2ICswMjAwLCBSYWZhZWwgSi4gV3lzb2NraSB3cm90 ZToNCj4gT24gVHVlc2RheSwgQXByaWwgMjgsIDIwMTUgMDY6MjI6MDUgUE0gRGFuIFdpbGxpYW1z IHdyb3RlOg0KPiA+IE9uIFR1ZSwgQXByIDI4LCAyMDE1IGF0IDU6MjUgUE0sIFJhZmFlbCBKLiBX eXNvY2tpIDxyandAcmp3eXNvY2tpLm5ldD4gd3JvdGU6DQo+ID4gPiBPbiBUdWVzZGF5LCBBcHJp bCAyOCwgMjAxNSAwMjoyNDoxMiBQTSBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+ID4gPj4gQ2hhbmdl cyBzaW5jZSB2MSBbMV06IEluY29ycG9yYXRlcyBmZWVkYmFjayByZWNlaXZlZCBwcmlvciB0byBB cHJpbCAyNC4NCj4gPiA+Pg0KPiANCj4gW2N1dF0NCj4gDQo+ID4gPg0KPiA+ID4gSSdtIHdvbmRl cmluZyB3aGF0J3Mgd3Jvbmcgd2l0aCBDQ2luZyBhbGwgb2YgdGhlIHNlcmllcyB0byBsaW51eC1h Y3BpPw0KPiA+ID4NCj4gPiA+IElzIHRoZXJlIGFueXRoaW5nIGluIGl0IHRoYXQgdGhlIHBlb3Bs ZSBvbiB0aGF0IGxpc3Qgc2hvdWxkIG5vdCBzZWUsIGJ5IGFueQ0KPiA+ID4gY2hhbmNlPw0KPiA+ IA0KPiA+IGxpbnV4LWFjcGkgbWF5IG5vdCBjYXJlIGFib3V0IHRoZSBkaW1tLW1ldGFkYXRhIGxh YmVsaW5nIHBhdGNoZXMgdGhhdA0KPiA+IGFyZSBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG9mIEFD UEksIGJ1dCBtaWdodCBhcyB3ZWxsIGluY2x1ZGUNCj4gPiBsaW51eC1hY3BpIG9uIHRoZSB3aG9s ZSBzZXJpZXMgYXQgdGhpcyBwb2ludC4NCj4gDQo+IEkndmUgZ29uZSB0aHJvdWdoIHRoZSBBQ1BJ LXJlbGF0ZWQgcGF0Y2hlcyBpbiB0aGlzIHNlcmllcyAob3RoZXIgdGhhbiBbMi8yMF0NCj4gdGhh dCBJJ3ZlIGNvbW1lbnRlZCBkaXJlY3RseSkgYW5kIHdoaWxlIEkgaGF2ZW4ndCBmb3VuZCBhbnl0 aGluZyBob3JyaWJsZSBpbg0KPiB0aGVtLCBJIGRvbid0IHF1aXRlIGZlZWwgY29uZmlkZW50IGVu b3VnaCB0byBBQ0sgdGhlbS4NCj4gDQo+IFdoYXQgSSdtIHJlYWxseSBtaXNzaW5nIGluIHRoaXMg c2VyaWVzIGlzIGEgZGVzaWduIGRvY3VtZW50IGRlc2NyaWJpbmcgYWxsIHRoYXQNCj4gZnJvbSBh IGhpZ2gtbGV2ZWwgcGVyc3BlY3RpdmUgYW5kIG1ha2luZyBpdCBjbGVhciB3aGVyZSBhbGwgb2Yg dGhlIHBpZWNlcyBnbw0KPiBhbmQgd2hhdCB0aGVpciByZXNwZWN0aXZlIHJvbGVzIGFyZS4gIEFs c28gcmVvcmRlcmluZyB0aGUgc2VyaWVzIHRvIGludHJvZHVjZQ0KPiB0aGUgbmQgc3Vic3lzdGVt IHRvIHN0YXJ0IHdpdGggYW5kIHRoZW4gaXRzIHVzZXJzIG1pZ2h0IGhlbHAgaGVyZS4NCg0KSGVy ZSB5b3UgZ28sIGFuZCBhbHNvIHNlZSB0aGUgIlN1cHBvcnRpbmcgRG9jdW1lbnRzIiBzZWN0aW9u IGlmIHlvdSBuZWVkDQptb3JlIGRldGFpbHMsIG9yIGp1c3QgYXNrLiAgVGhpcyBpcyB0aGUgcmV3 b3JrZWQgZG9jdW1lbnQgYWZ0ZXIgcHVzaGluZw0KTkZJVCBzcGVjaWZpY3Mgb3V0IG9mIHRoZSBj b3JlIGltcGxlbWVudGF0aW9uLiAgVGhlIGNvcmUgYXBpcyBhcmUNCm5kX2J1c19yZWdpc3Rlcigp LCBuZF9kaW1tX2NyZWF0ZSgpLCBuZF9wbWVtX3JlZ2lvbl9jcmVhdGUoKSwgYW5kDQpuZF9ibGtf cmVnaW9uX2NyZWF0ZSgpLg0KDQotLS0NCg0KCQkJICBMSUJORDogTm9uLXZvbGF0aWxlIERldmlj ZXMNCgkgICAgICBsaWJuZCAtIGtlcm5lbCAvIGxpYm5kY3RsIC0gdXNlcnNwYWNlIGhlbHBlciBs aWJyYXJ5DQoJCQkgICBsaW51eC1udmRpbW1AbGlzdHMuMDEub3JnDQoJCQkJICAgICAgdjEwDQoN Cg0KCUdsb3NzYXJ5DQoJT3ZlcnZpZXcNCgkgICAgU3VwcG9ydGluZyBEb2N1bWVudHMNCgkgICAg R2l0IFRyZWVzDQoJTElCTkQgUE1FTSBhbmQgQkxLDQoJV2h5IEJMSz8NCgkgICAgUE1FTSB2cyBC TEsNCgkgICAgICAgIEJMSy1SRUdJT05zLCBQTUVNLVJFR0lPTnMsIEF0b21pYyBTZWN0b3JzLCBh bmQgREFYDQoJRXhhbXBsZSBOVkRJTU0gUGxhdGZvcm0NCglMSUJORCBLZXJuZWwgRGV2aWNlIE1v ZGVsIGFuZCBMSUJORENUTCBVc2Vyc3BhY2UgQVBJDQoJICAgIExJQk5EQ1RMOiBDb250ZXh0DQoJ ICAgICAgICBsaWJuZGN0bDogaW5zdGFudGlhdGUgYSBuZXcgbGlicmFyeSBjb250ZXh0IGV4YW1w bGUNCgkgICAgTElCTkQvTElCTkRDVEw6IEJ1cw0KCSAgICAgICAgbGlibmQ6IGNvbnRyb2wgY2xh c3MgZGV2aWNlIGluIC9zeXMvY2xhc3MNCgkgICAgICAgIGxpYm5kOiBidXMNCgkgICAgICAgIGxp Ym5kY3RsOiBidXMgZW51bWVyYXRpb24gZXhhbXBsZQ0KCSAgICBMSUJORC9MSUJORENUTDogRElN TSAoTk1FTSkNCgkgICAgICAgIGxpYm5kOiBESU1NIChOTUVNKQ0KCSAgICAgICAgbGlibmRjdGw6 IERJTU0gZW51bWVyYXRpb24gZXhhbXBsZQ0KCSAgICBMSUJORC9MSUJORENUTDogUmVnaW9uDQoJ ICAgICAgICBsaWJuZDogcmVnaW9uDQoJICAgICAgICBsaWJuZGN0bDogcmVnaW9uIGVudW1lcmF0 aW9uIGV4YW1wbGUNCgkgICAgICAgIFdoeSBOb3QgRW5jb2RlIHRoZSBSZWdpb24gVHlwZSBpbnRv IHRoZSBSZWdpb24gTmFtZT8NCgkgICAgICAgIEhvdyBEbyBJIERldGVybWluZSB0aGUgTWFqb3Ig VHlwZSBvZiBhIFJlZ2lvbj8NCgkgICAgTElCTkQvTElCTkRDVEw6IE5hbWVzcGFjZQ0KCSAgICAg ICAgbGlibmQ6IG5hbWVzcGFjZQ0KCSAgICAgICAgbGlibmRjdGw6IG5hbWVzcGFjZSBlbnVtZXJh dGlvbiBleGFtcGxlDQoJICAgICAgICBsaWJuZGN0bDogbmFtZXNwYWNlIGNyZWF0aW9uIGV4YW1w bGUNCgkgICAgICAgIFdoeSB0aGUgVGVybSAibmFtZXNwYWNlIj8NCgkgICAgTElCTkQvTElCTkRD VEw6IEJsb2NrIFRyYW5zbGF0aW9uIFRhYmxlICJidHQiDQoJICAgICAgICBsaWJuZDogYnR0IGxh eW91dA0KCSAgICAgICAgbGlibmRjdGw6IGJ0dCBjcmVhdGlvbiBleGFtcGxlDQoJU3VtbWFyeSBM SUJORENUTCBEaWFncmFtDQoNCg0KR2xvc3NhcnkNCi0tLS0tLS0tDQoNClBNRU06IEEgc3lzdGVt IHBoeXNpY2FsIGFkZHJlc3MgcmFuZ2Ugd2hlcmUgd3JpdGVzIGFyZSBwZXJzaXN0ZW50LiAgQQ0K YmxvY2sgZGV2aWNlIGNvbXBvc2VkIG9mIFBNRU0gaXMgY2FwYWJsZSBvZiBEQVguICBBIFBNRU0g YWRkcmVzcyByYW5nZQ0KbWF5IHNwYW4vaW50ZXJsZWF2ZSBzZXZlcmFsIERJTU1zLg0KDQpCTEs6 IEEgc2V0IG9mIG9uZSBvciBtb3JlIHByb2dyYW1tYWJsZSBtZW1vcnkgbWFwcGVkIGFwZXJ0dXJl cyBwcm92aWRlZA0KYnkgYSBESU1NIHRvIGFjY2VzcyBpdHMgbWVkaWEuICBUaGlzIGluZGlyZWN0 aW9uIHByZWNsdWRlcyB0aGUNCnBlcmZvcm1hbmNlIGJlbmVmaXQgb2YgaW50ZXJsZWF2aW5nLCBi dXQgZW5hYmxlcyBESU1NLWJvdW5kZWQgZmFpbHVyZQ0KbW9kZXMgLg0KDQpEUEE6IERJTU0gUGh5 c2ljYWwgQWRkcmVzcywgaXMgYSBESU1NLXJlbGF0aXZlIG9mZnNldC4gIFdpdGggb25lIERJTU0g aW4NCnRoZSBzeXN0ZW0gdGhlcmUgd291bGQgYmUgYSAxOjEgc3lzdGVtLXBoeXNpY2FsLWFkZHJl c3M6RFBBIGFzc29jaWF0aW9uLg0KT25jZSBtb3JlIERJTU1zIGFyZSBhZGRlZCBhbiBtZW1vcnkg Y29udHJvbGxlciBpbnRlcmxlYXZlIG11c3QgYmUNCmRlY29kZWQgdG8gZGV0ZXJtaW5lIHRoZSBE UEEgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4NCnN5c3RlbS1waHlzaWNhbC1hZGRyZXNzLiAgQkxL IGNhcGFjaXR5IGFsd2F5cyBoYXMgYSAxOjEgcmVsYXRpb25zaGlwDQp3aXRoIGEgc2luZ2xlLWRp bW0ncyBEUEEgcmFuZ2UuDQoNCkRBWDogRmlsZSBzeXN0ZW0gZXh0ZW5zaW9ucyB0byBieXBhc3Mg dGhlIHBhZ2UgY2FjaGUgYW5kIGJsb2NrIGxheWVyIHRvDQptbWFwIHBlcnNpc3RlbnQgbWVtb3J5 LCBmcm9tIGEgUE1FTSBibG9jayBkZXZpY2UsIGRpcmVjdGx5IGludG8gYQ0KcHJvY2VzcyBhZGRy ZXNzIHNwYWNlLg0KDQpCVFQ6IEJsb2NrIFRyYW5zbGF0aW9uIFRhYmxlOiBQZXJzaXN0ZW50IG1l bW9yeSBpcyBieXRlIGFkZHJlc3NhYmxlLg0KRXhpc3Rpbmcgc29mdHdhcmUgbWF5IGhhdmUgYW4g ZXhwZWN0YXRpb24gdGhhdCB0aGUgcG93ZXItZmFpbC1hdG9taWNpdHkNCm9mIHdyaXRlcyBpcyBh dCBsZWFzdCBvbmUgc2VjdG9yLCA1MTIgYnl0ZXMuICBUaGUgQlRUIGlzIGFuIGluZGlyZWN0aW9u DQp0YWJsZSB3aXRoIGF0b21pYyB1cGRhdGUgc2VtYW50aWNzIHRvIGZyb250IGEgUE1FTS9CTEsg YmxvY2sgZGV2aWNlDQpkcml2ZXIgYW5kIHByZXNlbnQgYXJiaXRyYXJ5IGF0b21pYyBzZWN0b3Ig c2l6ZXMuDQoNCkxBQkVMOiBNZXRhZGF0YSBzdG9yZWQgb24gYSBESU1NIGRldmljZSB0aGF0IHBh cnRpdGlvbnMgYW5kIGlkZW50aWZpZXMNCihwZXJzaXN0ZW50bHkgbmFtZXMpIHN0b3JhZ2UgYmV0 d2VlbiBQTUVNIGFuZCBCTEsuICBJdCBhbHNvIHBhcnRpdGlvbnMNCkJMSyBzdG9yYWdlIHRvIGhv c3QgQlRUcyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzIHBlciBCTEstcGFydGl0aW9uLg0KTm90 ZSB0aGF0IHRyYWRpdGlvbmFsIHBhcnRpdGlvbiB0YWJsZXMsIEdQVC9NQlIsIGFyZSBsYXllcmVk IG9uIHRvcCBvZiBhDQpCTEsgb3IgUE1FTSBkZXZpY2UuDQoNCg0KT3ZlcnZpZXcNCi0tLS0tLS0t DQoNClRoZSBsaWJuZCBzdWJzeXN0ZW0gcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhyZWUgdHlwZXMg b2YgTlZESU1NcywgUE1FTSwNCkJMSywgYW5kIE5WRElNTSBwbGF0Zm9ybXMgdGhhdCBjYW4gc2lt dWx0YW5lb3VzbHkgc3VwcG9ydCBQTUVNIGFuZCBCTEsNCm1vZGUgYWNjZXNzIGNhcGFiaWxpdGll cyBvbiBhIGdpdmVuIHNldCBvZiBESU1Ncy4gIFRoZXNlIHRocmVlIG1vZGVzIG9mDQpvcGVyYXRp b24gYXJlIGRlc2NyaWJlZCBieSB0aGUgIk5WRElNTSBGaXJtd2FyZSBJbnRlcmZhY2UgVGFibGUi IChORklUKQ0KaW4gQUNQSSA2LiAgV2hpbGUgdGhlIGxpYm5kIGltcGxlbWVudGF0aW9uIGlzIGdl bmVyaWMgYW5kIHN1cHBvcnRzDQpwcmUtTkZJVCBwbGF0Zm9ybXMsIGl0IHdhcyBndWlkZWQgYnkg dGhlIHN1cGVyc2V0IG9mIGNhcGFiaWxpdGllcyBuZWVkDQp0byBzdXBwb3J0IHRoaXMgQUNQSSA2 IGRlZmluaXRpb24gZm9yIE5WRElNTSByZXNvdXJjZXMuICBUaGUgYnVsayBvZiB0aGUNCmtlcm5l bCBpbXBsZW1lbnRhdGlvbiBpcyBpbiBwbGFjZSB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgRFBB DQphY2Nlc3NpYmxlIHZpYSBQTUVNIGlzIGFsaWFzZWQgd2l0aCBEUEEgYWNjZXNzaWJsZSB2aWEg QkxLLiAgV2hlbiB0aGF0DQpvY2N1cnMgYSBMQUJFTCBpcyBuZWVkZWQgdG8gcmVzZXJ2ZSBEUEEg Zm9yIGV4Y2x1c2l2ZSBhY2Nlc3MgdmlhIG9uZQ0KbW9kZSBhIHRpbWUuDQoNClN1cHBvcnRpbmcg RG9jdW1lbnRzDQpBQ1BJIDY6IGh0dHA6Ly93d3cudWVmaS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxl cy9yZXNvdXJjZXMvQUNQSV82LjAucGRmDQpOVkRJTU0gTmFtZXNwYWNlOiBodHRwOi8vcG1lbS5p by9kb2N1bWVudHMvTlZESU1NX05hbWVzcGFjZV9TcGVjLnBkZg0KRFNNIEludGVyZmFjZSBFeGFt cGxlOiBodHRwOi8vcG1lbS5pby9kb2N1bWVudHMvTlZESU1NX0RTTV9JbnRlcmZhY2VfRXhhbXBs ZS5wZGYNCkRyaXZlciBXcml0ZXIncyBHdWlkZTogaHR0cDovL3BtZW0uaW8vZG9jdW1lbnRzL05W RElNTV9Ecml2ZXJfV3JpdGVyc19HdWlkZS5wZGYNCg0KR2l0IFRyZWVzDQpMSUJORDogaHR0cHM6 Ly9naXQua2VybmVsLm9yZy9jZ2l0L2xpbnV4L2tlcm5lbC9naXQvZGpidy9udmRpbW0uZ2l0L2xv Zy8/aD1uZA0KTElCTkRDVEw6IGh0dHBzOi8vZ2l0aHViLmNvbS9wbWVtL25kY3RsLmdpdA0KUE1F TTogaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL3ByZA0KDQoNCkxJQk5EIFBNRU0gYW5kIEJMSw0K LS0tLS0tLS0tLS0tLS0tLS0tDQoNClByaW9yIHRvIHRoZSBhcnJpdmFsIG9mIHRoZSBORklULCBu b24tdm9sYXRpbGUgbWVtb3J5IHdhcyBkZXNjcmliZWQgdG8gYQ0Kc3lzdGVtIGluIHZhcmlvdXMg YWQtaG9jIHdheXMuICBVc3VhbGx5IG9ubHkgdGhlIGJhcmUgbWluaW11bSB3YXMNCnByb3ZpZGVk LCBuYW1lbHksIGEgc2luZ2xlIHN5c3RlbS1waHlzaWNhbC1hZGRyZXNzIHJhbmdlIHdoZXJlIHdy aXRlcw0KYXJlIGV4cGVjdGVkIHRvIGJlIGR1cmFibGUgYWZ0ZXIgYSBzeXN0ZW0gcG93ZXIgbG9z cy4gIE5vdywgdGhlIE5GSVQNCnNwZWNpZmljYXRpb24gc3RhbmRhcmRpemVzIG5vdCBvbmx5IHRo ZSBkZXNjcmlwdGlvbiBvZiBQTUVNLCBidXQgYWxzbw0KQkxLIGFuZCBwbGF0Zm9ybSBtZXNzYWdl LXBhc3NpbmcgZW50cnkgcG9pbnRzIGZvciBjb250cm9sIGFuZA0KY29uZmlndXJhdGlvbi4NCg0K Rm9yIGVhY2ggTlZESU1NIGFjY2VzcyBtZXRob2QgKFBNRU0sIEJMSyksIExJQk5EIHByb3ZpZGVz IGEgYmxvY2sgZGV2aWNlIGRyaXZlcjoNCg0KICAgIDEuIFBNRU0gKG5kX3BtZW0ua28pOiBEcml2 ZXMgYSBzeXN0ZW0tcGh5c2ljYWwtYWRkcmVzcyByYW5nZS4gIFRoaXMNCiAgICByYW5nZSBpcyBj b250aWd1b3VzIGluIHN5c3RlbSBtZW1vcnkgYW5kIG1heSBiZSBpbnRlcmxlYXZlZCAoaGFyZHdh cmUNCiAgICBtZW1vcnkgY29udHJvbGxlciBzdHJpcGVkKSBhY3Jvc3MgbXVsdGlwbGUgRElNTXMu ICBXaGVuIGludGVybGVhdmVkIHRoZQ0KICAgIHBsYXRmb3JtIG1heSBvcHRpb25hbGx5IHByb3Zp ZGUgZGV0YWlscyBvZiB3aGljaCBESU1NcyBhcmUgcGFydGljaXBhdGluZw0KICAgIGluIHRoZSBp bnRlcmxlYXZlLg0KICAgIA0KICAgIE5vdGUsIExJQk5EIGRlc2NyaWJlcyBzeXN0ZW0tcGh5c2lj YWwtYWRkcmVzcyByYW5nZXMgdGhhdCBtYXkgYWxpYXMgd2l0aA0KICAgIEJMSyBhY2Nlc3MgTkRf TkFNRVNQQUNFX1BNRU0gcmFuZ2VzIGFuZCB0aG9zZSB3aXRob3V0IGFsaWFzIGFzDQogICAgTkRf TkFNRVNQQUNFX0lPIHJhbmdlcywgdG8gdGhlIG5kX3BtZW0gZHJpdmVyIHRoZXJlIGlzIG5vIGRp c3RpbmN0aW9uLg0KICAgIFRoZSBkaWZmZXJlbnQgZGV2aWNlLXR5cGVzIGFyZSBhbiBpbXBsZW1l bnRhdGlvbiBkZXRhaWwgdGhhdCB1c2Vyc3BhY2UNCiAgICBjYW4gZXhwbG9pdCB0byBpbXBsZW1l bnQgcG9saWNpZXMgbGlrZSAib25seSBpbnRlcmZhY2Ugd2l0aCBhZGRyZXNzDQogICAgcmFuZ2Vz IGZyb20gY2VydGFpbiBESU1NcyIuICBJdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB3aGVuIGFsaWFz aW5nIGlzDQogICAgcHJlc2VudCBhbmQgYSBESU1NIGxhY2tzIGEgbGFiZWwsIHRoZW4gbm8gYmxv Y2sgZGV2aWNlIGNhbiBiZSBjcmVhdGVkIGJ5DQogICAgZGVmYXVsdCBhcyB1c2Vyc3BhY2UgbmVl ZHMgdG8gZG8gYXQgbGVhc3Qgb25lIGFsbG9jYXRpb24gb2YgRFBBIHRvIHRoZQ0KICAgIFBNRU0g cmFuZ2UuICBJbiBjb250cmFzdCBORF9OQU1FU1BBQ0VfSU8gcmFuZ2VzLCBvbmNlIHJlZ2lzdGVy ZWQsIGNhbiBiZQ0KICAgIGltbWVkaWF0ZWx5IGF0dGFjaGVkIHRvIG5kX3BtZW0uDQogICAgDQog ICAgMi4gQkxLIChuZF9ibGsua28pOiBUaGlzIGRyaXZlciBwZXJmb3JtcyBJL08gdXNpbmcgYSBz ZXQgb2YgcGxhdGZvcm0NCiAgICBkZWZpbmVkIGFwZXJ0dXJlcy4gIEEgc2V0IG9mIGFwZXJ0dXJl cyB3aWxsIGFsbCBhY2Nlc3MganVzdCBvbmUgRElNTS4NCiAgICBNdWx0aXBsZSB3aW5kb3dzIGFs bG93IG11bHRpcGxlIGNvbmN1cnJlbnQgYWNjZXNzZXMsIG11Y2ggbGlrZQ0KICAgIHRhZ2dlZC1j b21tYW5kLXF1ZXVpbmcsIGFuZCB3b3VsZCBsaWtlbHkgYmUgdXNlZCBieSBkaWZmZXJlbnQgdGhy ZWFkcyBvcg0KICAgIGRpZmZlcmVudCBDUFVzLg0KDQogICAgVGhlIE5GSVQgc3BlY2lmaWNhdGlv biBkZWZpbmVzIGEgc3RhbmRhcmQgZm9ybWF0IGZvciBhIEJMSy1hcGVydHVyZSwgYnV0DQogICAg dGhlIHNwZWMgYWxzbyBhbGxvd3MgZm9yIHZlbmRvciBzcGVjaWZpYyBsYXlvdXRzLCBhbmQgbm9u LU5GSVQgQkxLDQogICAgaW1wbGVtZW50YXRpb25zIG1heSBvdGhlciBkZXNpZ25zIGZvciBCTEsg SS9PLiAgRm9yIHRoaXMgcmVhc29uICJuZF9ibGsiDQogICAgY2FsbHMgYmFjayBpbnRvIHBsYXRm b3JtLXNwZWNpZmljIGNvZGUgdG8gcGVyZm9ybSB0aGUgSS9PLiAgT25lIHN1Y2gNCiAgICBpbXBs ZW1lbnRhdGlvbiBpcyBkZWZpbmVkIGluIHRoZSAiRHJpdmVyIFdyaXRlcidzIEd1aWRlIiBhbiAi RFNNDQogICAgSW50ZXJmYWNlIEV4YW1wbGUiLg0KDQoNCldoeSBCTEs/DQotLS0tLS0tLQ0KDQpX aGlsZSBQTUVNIHByb3ZpZGVzIGRpcmVjdCBieXRlLWFkZHJlc3NhYmxlIENQVS1sb2FkL3N0b3Jl IGFjY2VzcyB0bw0KTlZESU1NIHN0b3JhZ2UsIGl0IGRvZXMgbm90IHByb3ZpZGUgdGhlIGJlc3Qg c3lzdGVtIFJBUyAocmVjb3ZlcnksDQphdmFpbGFiaWxpdHksIGFuZCBzZXJ2aWNlYWJpbGl0eSkg bW9kZWwuICBBbiBhY2Nlc3MgdG8gYSBjb3JydXB0ZWQNCnN5c3RlbS1waHlzaWNhbC1hZGRyZXNz IGFkZHJlc3MgY2F1c2VzIGEgY3B1IGV4Y2VwdGlvbiB3aGlsZSBhbiBhY2Nlc3MNCnRvIGEgY29y cnVwdGVkIGFkZHJlc3MgdGhyb3VnaCBhbiBCTEstYXBlcnR1cmUgY2F1c2VzIHRoYXQgYmxvY2sg d2luZG93DQp0byByYWlzZSBhbiBlcnJvciBzdGF0dXMgaW4gYSByZWdpc3Rlci4gIFRoZSBsYXR0 ZXIgaXMgbW9yZSBhbGlnbmVkIHdpdGgNCnRoZSBzdGFuZGFyZCBlcnJvciBtb2RlbCB0aGF0IGhv c3QtYnVzLWFkYXB0ZXIgYXR0YWNoZWQgZGlza3MgcHJlc2VudC4NCkFsc28sIGlmIGFuIGFkbWlu aXN0cmF0b3IgZXZlciB3YW50cyB0byByZXBsYWNlIGEgbWVtb3J5IGl0IGlzIGVhc2llciB0bw0K c2VydmljZSBhIHN5c3RlbSBhdCBESU1NIG1vZHVsZSBib3VuZGFyaWVzLiAgQ29tcGFyZSB0aGlz IHRvIFBNRU0gd2hlcmUNCmRhdGEgY291bGQgYmUgaW50ZXJsZWF2ZWQgaW4gYW4gb3BhcXVlIGhh cmR3YXJlIHNwZWNpZmljIG1hbm5lciBhY3Jvc3MNCnNldmVyYWwgRElNTXMuDQoNClBNRU0gdnMg QkxLDQpCTEstYXBlcnR1cmVzIHNvbHZlIHRoaXMgUkFTIHByb2JsZW0sIGJ1dCB0aGVpciBwcmVz ZW5jZSBpcyBhbHNvIHRoZQ0KbWFqb3IgY29udHJpYnV0aW5nIGZhY3RvciB0byB0aGUgY29tcGxl eGl0eSBvZiB0aGUgTkQgc3Vic3lzdGVtLiAgVGhleQ0KY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50 YXRpb24gYmVjYXVzZSBQTUVNIGFuZCBCTEsgYWxpYXMgaW4gRFBBIHNwYWNlLg0KQW55IGdpdmVu IERJTU0ncyBEUEEtcmFuZ2UgbWF5IGNvbnRyaWJ1dGUgdG8gb25lIG9yIG1vcmUNCnN5c3RlbS1w aHlzaWNhbC1hZGRyZXNzIHNldHMgb2YgaW50ZXJsZWF2ZWQgRElNTXMsICphbmQqIG1heSBhbHNv IGJlDQphY2Nlc3NlZCBpbiBpdHMgZW50aXJldHkgdGhyb3VnaCBpdHMgQkxLLWFwZXJ0dXJlLiAg QWNjZXNzaW5nIGEgRFBBDQp0aHJvdWdoIGEgc3lzdGVtLXBoeXNpY2FsLWFkZHJlc3Mgd2hpbGUg c2ltdWx0YW5lb3VzbHkgYWNjZXNzaW5nIHRoZQ0Kc2FtZSBEUEEgdGhyb3VnaCBhIEJMSy1hcGVy dHVyZSBoYXMgdW5kZWZpbmVkIHJlc3VsdHMuICBGb3IgdGhpcyByZWFzb24sDQpESU1NJ3Mgd2l0 aCB0aGlzIGR1YWwgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gaW5jbHVkZSBhIERTTSBmdW5jdGlv biB0bw0Kc3RvcmUvcmV0cmlldmUgYSBMQUJFTC4gIFRoZSBMQUJFTCBlZmZlY3RpdmVseSBwYXJ0 aXRpb25zIHRoZSBEUEEtc3BhY2UNCmludG8gZXhjbHVzaXZlIHN5c3RlbS1waHlzaWNhbC1hZGRy ZXNzIGFuZCBCTEstYXBlcnR1cmUgYWNjZXNzaWJsZQ0KcmVnaW9ucy4gIEZvciBzaW1wbGljaXR5 IGEgRElNTSBpcyBhbGxvd2VkIGEgUE1FTSAicmVnaW9uIiBwZXIgZWFjaA0KaW50ZXJsZWF2ZSBz ZXQgaW4gd2hpY2ggaXQgaXMgYSBtZW1iZXIuICBUaGUgcmVtYWluaW5nIERQQSBzcGFjZSBjYW4g YmUNCmNhcnZlZCBpbnRvIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgQkxLIGRldmljZXMgd2l0aCBk aXNjb250aWd1b3VzDQpleHRlbnRzLg0KDQpCTEstUkVHSU9OcywgUE1FTS1SRUdJT05zLCBBdG9t aWMgU2VjdG9ycywgYW5kIERBWA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCg0KT25lIG9mIHRoZSBmZXcNCnJlYXNvbnMgdG8gYWxsb3cgbXVsdGlw bGUgQkxLIG5hbWVzcGFjZXMgcGVyIFJFR0lPTiBpcyBzbyB0aGF0IGVhY2gNCkJMSy1uYW1lc3Bh Y2UgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIEJUVCB3aXRoIHVuaXF1ZSBhdG9taWMgc2VjdG9y DQpzaXplcy4gIFdoaWxlIGEgUE1FTSBkZXZpY2UgY2FuIGhvc3QgYSBCVFQgdGhlIExBQkVMIHNw ZWNpZmljYXRpb24gZG9lcw0Kbm90IHByb3ZpZGUgZm9yIGEgc2VjdG9yIHNpemUgdG8gYmUgc3Bl Y2lmaWVkIGZvciBhIFBNRU0gbmFtZXNwYWNlLg0KVGhpcyBpcyBkdWUgdG8gdGhlIGV4cGVjdGF0 aW9uIHRoYXQgdGhlIHByaW1hcnkgdXNhZ2UgbW9kZWwgZm9yIFBNRU0gaXMNCnZpYSBEQVgsIGFu ZCB0aGUgQlRUIGlzIGluY29tcGF0aWJsZSB3aXRoIERBWC4gIEhvd2V2ZXIsIGZvciB0aGUgY2Fz ZXMNCndoZXJlIGFuIGFwcGxpY2F0aW9uIG9yIGZpbGVzeXN0ZW0gc3RpbGwgbmVlZHMgYXRvbWlj IHNlY3RvciB1cGRhdGUNCmd1YXJhbnRlZXMgaXQgY2FuIHJlZ2lzdGVyIGEgQlRUIG9uIGEgUE1F TSBkZXZpY2Ugb3IgcGFydGl0aW9uLiAgU2VlDQpMSUJORC9ORENUTDogQmxvY2sgVHJhbnNsYXRp b24gVGFibGUgImJ0dCINCg0KDQpFeGFtcGxlIE5WRElNTSBQbGF0Zm9ybQ0KLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCg0KRm9yIHRoZSByZW1haW5kZXIgb2YgdGhpcyBkb2N1bWVudCB0aGUgZm9s bG93aW5nIGRpYWdyYW0gd2lsbCBiZQ0KcmVmZXJlbmNlZCBmb3IgYW55IGV4YW1wbGUgc3lzZnMg bGF5b3V0cy4NCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhKSAgICAgICAgICAg ICAgIChiKSAgICAgICAgICAgRElNTSAgIEJMSy1SRUdJT04NCiAgICAgICAgICArLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsNCistLS0tLS0rICB8ICAgICAg IHBtMC4wICAgICAgIHwgYmxrMi4wIHwgcG0xLjAgIHwgYmxrMi4xIHwgICAgMCAgICAgIHJlZ2lv bjINCnwgaW1jMCArLS0rLSAtIC0gcmVnaW9uMC0gLSAtICstLS0tLS0tLSsgICAgICAgICstLS0t LS0tLSsNCistLSstLS0rICB8ICAgICAgIHBtMC4wICAgICAgIHwgYmxrMy4wIHwgcG0xLjAgIHwg YmxrMy4xIHwgICAgMSAgICAgIHJlZ2lvbjMNCiAgIHwgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLXYgICAgICAgIHYtLS0tLS0tLSsNCistLSstLS0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwNCnwgY3B1MCB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbjENCistLSstLS0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwNCiAgIHwgICAgICArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLV4gICAgICAgIF4tLS0tLS0tLSsNCistLSstLS0rICB8ICAgICAgICAg ICBibGs0LjAgICAgICAgICAgIHwgcG0xLjAgIHwgYmxrNC4wIHwgICAgMiAgICAgIHJlZ2lvbjQN CnwgaW1jMSArLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgICAgICAgICstLS0tLS0t LSsNCistLS0tLS0rICB8ICAgICAgICAgICBibGs1LjAgICAgICAgICAgIHwgcG0xLjAgIHwgYmxr NS4wIHwgICAgMyAgICAgIHJlZ2lvbjUNCiAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsNCg0KSW4gdGhpcyBwbGF0Zm9ybSB3ZSBoYXZlIGZv dXIgRElNTXMgYW5kIHR3byBtZW1vcnkgY29udHJvbGxlcnMgaW4gb25lDQpzb2NrZXQuICBFYWNo IHVuaXF1ZSBpbnRlcmZhY2UgKEJMSyBvciBQTUVNKSB0byBEUEEgc3BhY2UgaXMgaWRlbnRpZmll ZA0KYnkgYSByZWdpb24gZGV2aWNlIHdpdGggYSBkeW5hbWljYWxseSBhc3NpZ25lZCBpZCAoUkVH SU9OMCAtIFJFR0lPTjUpLg0KDQogICAgMS4gVGhlIGZpcnN0IHBvcnRpb24gb2YgRElNTTAgYW5k IERJTU0xIGFyZSBpbnRlcmxlYXZlZCBhcyBSRUdJT04wLiBBDQogICAgc2luZ2xlIFBNRU0gbmFt ZXNwYWNlIGlzIGNyZWF0ZWQgaW4gdGhlIFJFR0lPTjAtU1BBLXJhbmdlIHRoYXQgc3BhbnMNCiAg ICBESU1NMCBhbmQgRElNTTEgd2l0aCBhIHVzZXItc3BlY2lmaWVkIG5hbWUgb2YgInBtMC4wIi4g U29tZSBvZiB0aGF0DQogICAgaW50ZXJsZWF2ZWQgc3lzdGVtLXBoeXNpY2FsLWFkZHJlc3MgcmFu Z2UgaXMgcmVjbGFpbWVkIGFzIEJMSy1hcGVydHVyZQ0KICAgIGFjY2Vzc2VkIHNwYWNlIHN0YXJ0 aW5nIGF0IERQQS1vZmZzZXQgKGEpIGludG8gZWFjaCBESU1NLiAgSW4gdGhhdA0KICAgIHJlY2xh aW1lZCBzcGFjZSB3ZSBjcmVhdGUgdHdvIEJMSy1hcGVydHVyZSAibmFtZXNwYWNlcyIgZnJvbSBS RUdJT04yIGFuZA0KICAgIFJFR0lPTjMgd2hlcmUgImJsazIuMCIgYW5kICJibGszLjAiIGFyZSBq dXN0IGh1bWFuIHJlYWRhYmxlIG5hbWVzIHRoYXQNCiAgICBjb3VsZCBiZSBzZXQgdG8gYW55IHVz ZXItZGVzaXJlZCBuYW1lIGluIHRoZSBMQUJFTC4NCiAgICANCiAgICAyLiBJbiB0aGUgbGFzdCBw b3J0aW9uIG9mIERJTU0wIGFuZCBESU1NMSB3ZSBoYXZlIGFuIGludGVybGVhdmVkDQogICAgc3lz dGVtLXBoeXNpY2FsLWFkZHJlc3MgcmFuZ2UsIFJFR0lPTjEsIHRoYXQgc3BhbnMgdGhvc2UgdHdv IERJTU1zIGFzDQogICAgd2VsbCBhcyBESU1NMiBhbmQgRElNTTMuICBTb21lIG9mIFJFR0lPTjEg YWxsb2NhdGVkIHRvIGEgUE1FTSBuYW1lc3BhY2UNCiAgICBuYW1lZCAicG0xLjAiIHRoZSByZXN0 IGlzIHJlY2xhaW1lZCBpbiA0IEJMSy1hcGVydHVyZSBuYW1lc3BhY2VzIChmb3INCiAgICBlYWNo IERJTU0gaW4gdGhlIGludGVybGVhdmUgc2V0KSwgImJsazIuMSIsICJibGszLjEiLCAiYmxrNC4w IiwgYW5kDQogICAgImJsazUuMCIuDQogICAgDQogICAgMy4gVGhlIHBvcnRpb24gb2YgRElNTTIg YW5kIERJTU0zIHRoYXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBSRUdJT04xDQogICAgaW50 ZXJsZWF2ZWQgc3lzdGVtLXBoeXNpY2FsLWFkZHJlc3MgcmFuZ2UgKGkuZS4gdGhlIERQQSBhZGRy ZXNzIGJlbG93DQogICAgb2Zmc2V0IChiKSBhcmUgYWxzbyBpbmNsdWRlZCBpbiB0aGUgImJsazQu MCIgYW5kICJibGs1LjAiIG5hbWVzcGFjZXMuDQogICAgTm90ZSwgdGhhdCB0aGlzIGV4YW1wbGUg c2hvd3MgdGhhdCBCTEstYXBlcnR1cmUgbmFtZXNwYWNlcyBkb24ndCBuZWVkIHRvDQogICAgYmUg Y29udGlndW91cyBpbiBEUEEtc3BhY2UuDQogICAgDQogICAgVGhpcyBidXMgaXMgcHJvdmlkZWQg YnkgdGhlIGtlcm5lbCB1bmRlciB0aGUgZGV2aWNlDQogICAgL3N5cy9kZXZpY2VzL3BsYXRmb3Jt L25maXRfdGVzdC4wIHdoZW4gQ09ORklHX05GSVRfVEVTVCBpcyBlbmFibGVkIGFuZA0KICAgIHRo ZSBuZml0X3Rlc3Qua28gbW9kdWxlIGlzIGxvYWRlZC4gIFRoaXMgbm90IG9ubHkgdGVzdCBMSUJO RCBidXQgdGhlDQogICAgYWNwaV9uZml0LmtvIGRyaXZlciBhcyB3ZWxsLg0KDQoNCkxJQk5EIEtl cm5lbCBEZXZpY2UgTW9kZWwgYW5kIExJQk5EQ1RMIFVzZXJzcGFjZSBBUEkNCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KV2hhdCBmb2xsb3dz IGlzIGEgZGVzY3JpcHRpb24gb2YgdGhlIExJQk5EIHN5c2ZzIGxheW91dCBhbmQgYQ0KY29ycmVz cG9uZGluZyBvYmplY3QgaGllcmFyY2h5IGRpYWdyYW0gYXMgdmlld2VkIHRocm91Z2ggdGhlIExJ Qk5EQ1RMDQphcGkuICBUaGUgZXhhbXBsZSBzeXNmcyBwYXRocyBhbmQgZGlhZ3JhbXMgYXJlIHJl bGF0aXZlIHRvIHRoZSBFeGFtcGxlDQpOVkRJTU0gUGxhdGZvcm0gd2hpY2ggaXMgYWxzbyB0aGUg bGlibmQgYnVzIHVzZWQgaW4gdGhlIGxpYm5kY3RsIHVuaXQNCnRlc3QuDQoNCkxJQk5EQ1RMOiBD b250ZXh0DQpFdmVyeSBhcGkgY2FsbCBpbiB0aGUgTElCTkRDVEwgbGlicmFyeSByZXF1aXJlcyBh IGNvbnRleHQgdGhhdCBob2xkcyB0aGUNCmxvZ2dpbmcgcGFyYW1ldGVycyBhbmQgb3RoZXIgbGli cmFyeSBpbnN0YW5jZSBzdGF0ZS4gIFRoZSBsaWJyYXJ5IGlzDQpiYXNlZCBvbiB0aGUgbGliYWJj IHRlbXBsYXRlOg0KaHR0cHM6Ly9naXQua2VybmVsLm9yZy9jZ2l0L2xpbnV4L2tlcm5lbC9naXQv a2F5L2xpYmFiYy5naXQvIGxpYm5kY3RsOg0KaW5zdGFudGlhdGUgYSBuZXcgbGlicmFyeSBjb250 ZXh0IGV4YW1wbGUNCg0KCXN0cnVjdCBuZGN0bF9jdHggKmN0eDsNCg0KCWlmIChuZGN0bF9uZXco JmN0eCkgPT0gMCkNCgkJcmV0dXJuIGN0eDsNCgllbHNlDQoJCXJldHVybiBOVUxMOw0KDQpMSUJO RC9MSUJORENUTDogQnVzDQotLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkEgYnVzIGhhcyBhIDE6MSBy ZWxhdGlvbnNoaXAgd2l0aCBhbiBORklULiAgVGhlIGN1cnJlbnQgZXhwZWN0YXRpb24gZm9yDQpB Q1BJIGJhc2VkIHN5c3RlbXMgaXMgdGhhdCB0aGVyZSBpcyBvbmx5IGV2ZXIgb25lIHBsYXRmb3Jt LWdsb2JhbCBORklULg0KVGhhdCBzYWlkLCBpdCBpcyB0cml2aWFsIHRvIHJlZ2lzdGVyIG11bHRp cGxlIE5GSVRzLCB0aGUgc3BlY2lmaWNhdGlvbg0KZG9lcyBub3QgcHJlY2x1ZGUgaXQuICBUaGUg aW5mcmFzdHJ1Y3R1cmUgc3VwcG9ydHMgbXVsdGlwbGUgYnVzc2VzIGFuZA0Kd2Ugd2UgdXNlIHRo aXMgY2FwYWJpbGl0eSB0byB0ZXN0IG11bHRpcGxlIE5GSVQgY29uZmlndXJhdGlvbnMgaW4gdGhl DQp1bml0IHRlc3QuDQoNCmxpYm5kOiBjb250cm9sIGNsYXNzIGRldmljZSBpbiAvc3lzL2NsYXNz DQoNClRoaXMgY2hhcmFjdGVyIGRldmljZSBhY2NlcHRzIERTTSBtZXNzYWdlcyB0byBiZSBwYXNz ZWQgdG8gRElNTQ0KaWRlbnRpZmllZCBieSBpdHMgTkZJVCBoYW5kbGUuDQoNCgkvc3lzL2NsYXNz L25kL25kY3RsMA0KCXwtLSBkZXYNCgl8LS0gZGV2aWNlIC0+IC4uLy4uLy4uL25kYnVzMA0KCXwt LSBzdWJzeXN0ZW0gLT4gLi4vLi4vLi4vLi4vLi4vLi4vLi4vY2xhc3MvbmQNCg0KDQoNCmxpYm5k OiBidXMNCg0KCXN0cnVjdCBuZF9idXMgKm5kX2J1c19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpw YXJlbnQsDQoJICAgICAgIHN0cnVjdCBuZF9idXNfZGVzY3JpcHRvciAqbmZpdF9kZXNjKTsNCg0K CS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9uZml0X3Rlc3QuMC9uZGJ1czANCgl8LS0gYnR0MA0KCXwt LSBidHRfc2VlZA0KCXwtLSBjb21tYW5kcw0KCXwtLSBuZA0KCXwtLSBuZml0DQoJfC0tIG5tZW0w DQoJfC0tIG5tZW0xDQoJfC0tIG5tZW0yDQoJfC0tIG5tZW0zDQoJfC0tIHBvd2VyDQoJfC0tIHBy b3ZpZGVyDQoJfC0tIHJlZ2lvbjANCgl8LS0gcmVnaW9uMQ0KCXwtLSByZWdpb24yDQoJfC0tIHJl Z2lvbjMNCgl8LS0gcmVnaW9uNA0KCXwtLSByZWdpb241DQoJfC0tIHVldmVudA0KCWAtLSB3YWl0 X3Byb2JlDQoNCmxpYm5kY3RsOiBidXMgZW51bWVyYXRpb24gZXhhbXBsZQ0KRmluZCB0aGUgYnVz IGhhbmRsZSB0aGF0IGRlc2NyaWJlcyB0aGUgYnVzIGZyb20gRXhhbXBsZSBOVkRJTU0gUGxhdGZv cm0NCg0KCXN0YXRpYyBzdHJ1Y3QgbmRjdGxfYnVzICpnZXRfYnVzX2J5X3Byb3ZpZGVyKHN0cnVj dCBuZGN0bF9jdHggKmN0eCwNCgkJCWNvbnN0IGNoYXIgKnByb3ZpZGVyKQ0KCXsNCgkJc3RydWN0 IG5kY3RsX2J1cyAqYnVzOw0KDQoJCW5kY3RsX2J1c19mb3JlYWNoKGN0eCwgYnVzKQ0KCQkJaWYg KHN0cmNtcChwcm92aWRlciwgbmRjdGxfYnVzX2dldF9wcm92aWRlcihidXMpKSA9PSAwKQ0KCQkJ CXJldHVybiBidXM7DQoNCgkJcmV0dXJuIE5VTEw7DQoJfQ0KDQoJYnVzID0gZ2V0X2J1c19ieV9w cm92aWRlcihjdHgsICJuZml0X3Rlc3QuMCIpOw0KDQoNCkxJQk5EL0xJQk5EQ1RMOiBESU1NIChO TUVNKQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClRoZSBESU1NIGRldmljZSBwcm92 aWRlcyBhIGNoYXJhY3RlciBkZXZpY2UgZm9yIHNlbmRpbmcgY29tbWFuZHMgdG8NCmhhcmR3YXJl LCBhbmQgaXQgaXMgYSBjb250YWluZXIgZm9yIExBQkVMcy4gIElmIHRoZSBESU1NIGlzIGRlZmlu ZWQgYnkNCk5GSVQgdGhlbiBhbiBvcHRpb25hbCAnbmZpdCcgYXR0cmlidXRlIHN1Yi1kaXJlY3Rv cnkgaXMgYXZhaWxhYmxlIHRvIGFkZA0KTkZJVC1zcGVjaWZpY3MuDQoNCk5vdGUgdGhhdCB0aGUg a2VybmVsIGRldmljZSBuYW1lIGZvciAiRElNTXMiIGlzICJubWVtWCIuICBUaGUgTkZJVA0KZGVz Y3JpYmVzIHRoZXNlIGRldmljZXMgdmlhICJNZW1vcnkgRGV2aWNlIHRvIFN5c3RlbSBQaHlzaWNh bCBBZGRyZXNzDQpSYW5nZSBNYXBwaW5nIFN0cnVjdHVyZSIsIGFuZCB0aGVyZSBpcyBubyByZXF1 aXJlbWVudCB0aGF0IHRoZXkgYWN0dWFsbHkNCmJlIHBoeXNpY2FsIERJTU1zLCBzbyB3ZSB1c2Ug YSBtb3JlIGdlbmVyaWMgbmFtZS4NCg0KbGlibmQ6IERJTU0gKE5NRU0pDQoNCglzdHJ1Y3QgbmRf ZGltbSAqbmRfZGltbV9jcmVhdGUoc3RydWN0IG5kX2J1cyAqbmRfYnVzLCB2b2lkICpwcm92aWRl cl9kYXRhLA0KCQkJY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3VwcywgdW5zaWdu ZWQgbG9uZyBmbGFncywNCgkJCXVuc2lnbmVkIGxvbmcgKmRzbV9tYXNrKTsNCg0KCS9zeXMvZGV2 aWNlcy9wbGF0Zm9ybS9uZml0X3Rlc3QuMC9uZGJ1czANCgl8LS0gbm1lbTANCgl8ICAgfC0tIGF2 YWlsYWJsZV9zbG90cw0KCXwgICB8LS0gY29tbWFuZHMNCgl8ICAgfC0tIGRldg0KCXwgICB8LS0g ZGV2dHlwZQ0KCXwgICB8LS0gZHJpdmVyIC0+IC4uLy4uLy4uLy4uLy4uL2J1cy9uZC9kcml2ZXJz L25kX2RpbW0NCgl8ICAgfC0tIG1vZGFsaWFzDQoJfCAgIHwtLSBuZml0DQoJfCAgIHwgICB8LS0g ZGV2aWNlDQoJfCAgIHwgICB8LS0gZm9ybWF0DQoJfCAgIHwgICB8LS0gaGFuZGxlDQoJfCAgIHwg ICB8LS0gcGh5c19pZA0KCXwgICB8ICAgfC0tIHJldl9pZA0KCXwgICB8ICAgfC0tIHNlcmlhbA0K CXwgICB8ICAgYC0tIHZlbmRvcg0KCXwgICB8LS0gc3RhdGUNCgl8ICAgfC0tIHN1YnN5c3RlbSAt PiAuLi8uLi8uLi8uLi8uLi9idXMvbmQNCgl8ICAgYC0tIHVldmVudA0KCXwtLSBubWVtMQ0KCVsu Ll0NCg0KDQpsaWJuZGN0bDogRElNTSBlbnVtZXJhdGlvbiBleGFtcGxlDQoNCk5vdGUsIGluIHRo aXMgZXhhbXBsZSB3ZSBhcmUgYXNzdW1pbmcgTkZJVC1kZWZpbmVkIERJTU1zIHdoaWNoIGFyZQ0K aWRlbnRpZmllZCBieSBhbiAibmZpdF9oYW5kbGUiIGEgMzItYml0IHZhbHVlIHdoZXJlOg0KQml0 IDM6MCBESU1NIG51bWJlciB3aXRoaW4gdGhlIG1lbW9yeSBjaGFubmVsDQpCaXQgNzo0IG1lbW9y eSBjaGFubmVsIG51bWJlcg0KQml0IDExOjggbWVtb3J5IGNvbnRyb2xsZXIgSUQNCkJpdCAxNTox MiBzb2NrZXQgSUQgKHdpdGhpbiBzY29wZSBvZiBhIE5vZGUgY29udHJvbGxlciBpZiBub2RlIGNv bnRyb2xsZXIgaXMgcHJlc2VudCkNCkJpdCAyNzoxNiBOb2RlIENvbnRyb2xsZXIgSUQgDQpCaXQg MzE6MjggUmVzZXJ2ZWQNCg0KCXN0YXRpYyBzdHJ1Y3QgbmRjdGxfZGltbSAqZ2V0X2RpbW1fYnlf aGFuZGxlKHN0cnVjdCBuZGN0bF9idXMgKmJ1cywNCgkgICAgICAgdW5zaWduZWQgaW50IGhhbmRs ZSkNCgl7DQoJCXN0cnVjdCBuZGN0bF9kaW1tICpkaW1tOw0KDQoJCW5kY3RsX2RpbW1fZm9yZWFj aChidXMsIGRpbW0pDQoJCQlpZiAobmRjdGxfZGltbV9nZXRfaGFuZGxlKGRpbW0pID09IGhhbmRs ZSkNCgkJCQlyZXR1cm4gZGltbTsNCg0KCQlyZXR1cm4gTlVMTDsNCgl9DQoNCgkjZGVmaW5lIERJ TU1fSEFORExFKG4sIHMsIGksIGMsIGQpIFwNCgkJKCgobiAmIDB4ZmZmKSA8PCAxNikgfCAoKHMg JiAweGYpIDw8IDEyKSB8ICgoaSAmIDB4ZikgPDwgOCkgXA0KCQkgfCAoKGMgJiAweGYpIDw8IDQp IHwgKGQgJiAweGYpKQ0KDQoJZGltbSA9IGdldF9kaW1tX2J5X2hhbmRsZShidXMsIERJTU1fSEFO RExFKDAsIDAsIDAsIDAsIDApKTsNCg0KTElCTkQvTElCTkRDVEw6IFJlZ2lvbg0KLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KDQpBIGdlbmVyaWMgUkVHSU9OIGRldmljZSBpcyByZWdpc3RlcmVkIGZv ciBlYWNoIFBNRU0gcmFuZ2Ugb3JCTEstYXBlcnR1cmUNCnNldC4gIFBlciB0aGUgZXhhbXBsZSB0 aGVyZSBhcmUgNiByZWdpb25zOiAyIFBNRU0gYW5kIDQgQkxLLWFwZXJ0dXJlDQpzZXRzIG9uIHRo ZSAibmZpdF90ZXN0LjAiIGJ1cy4gIFRoZSBwcmltYXJ5IHJvbGUgb2YgcmVnaW9ucyBhcmUgdG8g YmUgYQ0KY29udGFpbmVyIG9mICJtYXBwaW5ncyIuICBBIG1hcHBpbmcgaXMgYSB0dXBsZSBvZiA8 RElNTSwNCkRQQS1zdGFydC1vZmZzZXQsIGxlbmd0aD4uDQoNCkxJQk5EIHByb3ZpZGVzIGEgYnVp bHQtaW4gZHJpdmVyIGZvciB0aGVzZSBSRUdJT04gZGV2aWNlcy4gIFRoaXMgZHJpdmVyDQppcyBy ZXNwb25zaWJsZSBmb3IgcmVjb25jaWxpbmcgdGhlIGFsaWFzZWQgRFBBIG1hcHBpbmdzIGFjcm9z cyBhbGwNCnJlZ2lvbnMsIHBhcnNpbmcgdGhlIExBQkVMLCBpZiBwcmVzZW50LCBhbmQgdGhlbiBl bWl0dGluZyBOQU1FU1BBQ0UNCmRldmljZXMgd2l0aCB0aGUgcmVzb2x2ZWQvZXhjbHVzaXZlIERQ QS1ib3VuZGFyaWVzIGZvciB0aGUgbmRfcG1lbSBvcg0KbmRfYmxrIGRldmljZSBkcml2ZXIgdG8g Y29uc3VtZS4NCg0KSW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgYXR0cmlidXRlcyBvZiAibWFw cGluZyJzLCAiaW50ZXJsZWF2ZV93YXlzIg0KYW5kICJzaXplIiB0aGUgUkVHSU9OIGRldmljZSBh bHNvIGV4cG9ydHMgc29tZSBjb252ZW5pZW5jZSBhdHRyaWJ1dGVzLg0KIm5zdHlwZSIgaW5kaWNh dGVzIHRoZSBpbnRlZ2VyIHR5cGUgb2YgbmFtZXNwYWNlLWRldmljZSB0aGlzIHJlZ2lvbg0KZW1p dHMsICJkZXZ0eXBlIiBkdXBsaWNhdGVzIHRoZSBERVZUWVBFIHZhcmlhYmxlIHN0b3JlZCBieSB1 ZGV2IGF0IHRoZQ0KJ2FkZCcgZXZlbnQsICJtb2RhbGlhcyIgZHVwbGljYXRlcyB0aGUgTU9EQUxJ QVMgdmFyaWFibGUgc3RvcmVkIGJ5IHVkZXYNCmF0IHRoZSAnYWRkJyBldmVudCwgYW5kIGZpbmFs bHksIHRoZSBvcHRpb25hbCAic3BhX2luZGV4IiBpcyBwcm92aWRlZCBpbg0KdGhlIGNhc2Ugd2hl cmUgdGhlIHJlZ2lvbiBpcyBkZWZpbmVkIGJ5IGEgU1BBLg0KDQpsaWJuZDogcmVnaW9uDQoNCglz dHJ1Y3QgbmRfcmVnaW9uICpuZF9wbWVtX3JlZ2lvbl9jcmVhdGUoc3RydWN0IG5kX2J1cyAqbmRf YnVzLA0KCQkJc3RydWN0IG5kX3JlZ2lvbl9kZXNjICpuZHJfZGVzYyk7DQoJc3RydWN0IG5kX3Jl Z2lvbiAqbmRfYmxrX3JlZ2lvbl9jcmVhdGUoc3RydWN0IG5kX2J1cyAqbmRfYnVzLA0KCQkJc3Ry dWN0IG5kX3JlZ2lvbl9kZXNjICpuZHJfZGVzYyk7DQoNCgkvc3lzL2RldmljZXMvcGxhdGZvcm0v bmZpdF90ZXN0LjAvbmRidXMwDQoJfC0tIHJlZ2lvbjANCgl8ICAgfC0tIGF2YWlsYWJsZV9zaXpl DQoJfCAgIHwtLSBkZXZ0eXBlDQoJfCAgIHwtLSBkcml2ZXIgLT4gLi4vLi4vLi4vLi4vLi4vYnVz L25kL2RyaXZlcnMvbmRfcmVnaW9uDQoJfCAgIHwtLSBpbml0X25hbWVzcGFjZXMNCgl8ICAgfC0t IG1hcHBpbmcwDQoJfCAgIHwtLSBtYXBwaW5nMQ0KCXwgICB8LS0gbWFwcGluZ3MNCgl8ICAgfC0t IG1vZGFsaWFzDQoJfCAgIHwtLSBuYW1lc3BhY2UwLjANCgl8ICAgfC0tIG5hbWVzcGFjZV9zZWVk DQoJfCAgIHwtLSBuZml0DQoJfCAgIHwgICBgLS0gc3BhX2luZGV4DQoJfCAgIHwtLSBuc3R5cGUN Cgl8ICAgfC0tIHNldF9jb29raWUNCgl8ICAgfC0tIHNpemUNCgl8ICAgfC0tIHN1YnN5c3RlbSAt PiAuLi8uLi8uLi8uLi8uLi9idXMvbmQNCgl8ICAgYC0tIHVldmVudA0KCXwtLSByZWdpb24xDQoJ Wy4uXQ0KDQpsaWJuZGN0bDogcmVnaW9uIGVudW1lcmF0aW9uIGV4YW1wbGUNCg0KU2FtcGxlIHJl Z2lvbiByZXRyaWV2YWwgcm91dGluZXMgYmFzZWQgb24gTkZJVC11bmlxdWUgZGF0YSBsaWtlDQoi c3BhX2luZGV4IiAoaW50ZXJsZWF2ZSBzZXQgaWQpIGZvciBQTUVNIGFuZCAibmZpdF9oYW5kbGUi IChkaW1tIGlkKSBmb3INCkJMSy4NCg0KCXN0YXRpYyBzdHJ1Y3QgbmRjdGxfcmVnaW9uICpnZXRf cG1lbV9yZWdpb25fYnlfc3BhX2luZGV4KHN0cnVjdCBuZGN0bF9idXMgKmJ1cywNCgkJCXVuc2ln bmVkIGludCBzcGFfaW5kZXgpDQoJew0KCQlzdHJ1Y3QgbmRjdGxfcmVnaW9uICpyZWdpb247DQoN CgkJbmRjdGxfcmVnaW9uX2ZvcmVhY2goYnVzLCByZWdpb24pIHsNCgkJCWlmIChuZGN0bF9yZWdp b25fZ2V0X3R5cGUocmVnaW9uKSAhPSBORF9ERVZJQ0VfUkVHSU9OX1BNRU0pDQoJCQkJY29udGlu dWU7DQoJCQlpZiAobmRjdGxfcmVnaW9uX2dldF9zcGFfaW5kZXgocmVnaW9uKSA9PSBzcGFfaW5k ZXgpDQoJCQkJcmV0dXJuIHJlZ2lvbjsNCgkJfQ0KCQlyZXR1cm4gTlVMTDsNCgl9DQoNCglzdGF0 aWMgc3RydWN0IG5kY3RsX3JlZ2lvbiAqZ2V0X2Jsa19yZWdpb25fYnlfZGltbV9oYW5kbGUoc3Ry dWN0IG5kY3RsX2J1cyAqYnVzLA0KCQkJdW5zaWduZWQgaW50IGhhbmRsZSkNCgl7DQoJCXN0cnVj dCBuZGN0bF9yZWdpb24gKnJlZ2lvbjsNCg0KCQluZGN0bF9yZWdpb25fZm9yZWFjaChidXMsIHJl Z2lvbikgew0KCQkJc3RydWN0IG5kY3RsX21hcHBpbmcgKm1hcDsNCg0KCQkJaWYgKG5kY3RsX3Jl Z2lvbl9nZXRfdHlwZShyZWdpb24pICE9IE5EX0RFVklDRV9SRUdJT05fQkxPQ0spDQoJCQkJY29u dGludWU7DQoJCQluZGN0bF9tYXBwaW5nX2ZvcmVhY2gocmVnaW9uLCBtYXApIHsNCgkJCQlzdHJ1 Y3QgbmRjdGxfZGltbSAqZGltbSA9IG5kY3RsX21hcHBpbmdfZ2V0X2RpbW0obWFwKTsNCg0KCQkJ CWlmIChuZGN0bF9kaW1tX2dldF9oYW5kbGUoZGltbSkgPT0gaGFuZGxlKQ0KCQkJCQlyZXR1cm4g cmVnaW9uOw0KCQkJfQ0KCQl9DQoJCXJldHVybiBOVUxMOw0KCX0NCg0KDQpXaHkgTm90IEVuY29k ZSB0aGUgUmVnaW9uIFR5cGUgaW50byB0aGUgUmVnaW9uIE5hbWU/DQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkF0IGZpcnN0IGdsYW5jZSBp dCBzZWVtcyBzaW5jZSBORklUIGRlZmluZXMganVzdCBQTUVNIGFuZCBCTEsgaW50ZXJmYWNlDQp0 eXBlcyB0aGF0IHdlIHNob3VsZCBzaW1wbHkgbmFtZSBSRUdJT04gZGV2aWNlcyB3aXRoIHNvbWV0 aGluZyBkZXJpdmVkDQpmcm9tIHRob3NlIHR5cGUgbmFtZXMuICBIb3dldmVyLCB0aGUgTkQgc3Vi c3lzdGVtIGV4cGxpY2l0bHkga2VlcHMgdGhlDQpSRUdJT04gbmFtZSBnZW5lcmljIGFuZCBleHBl Y3RzIHVzZXJzcGFjZSB0byBhbHdheXMgY29uc2lkZXIgdGhlDQpyZWdpb24tYXR0cmlidXRlcyBm b3IgNCByZWFzb25zOg0KDQogICAgMS4gVGhlcmUgYXJlIGFscmVhZHkgbW9yZSB0aGFuIHR3byBS RUdJT04gYW5kICJuYW1lc3BhY2UiIHR5cGVzLiAgRm9yDQogICAgUE1FTSB0aGVyZSBhcmUgdHdv IHN1YnR5cGVzLiAgQXMgbWVudGlvbmVkIHByZXZpb3VzbHkgd2UgaGF2ZSBQTUVNIHdoZXJlDQog ICAgdGhlIGNvbnN0aXR1ZW50IERJTU0gZGV2aWNlcyBhcmUga25vd24gYW5kIGFub255bW91cyBQ TUVNLiAgRm9yIEJMSw0KICAgIHJlZ2lvbnMgdGhlIE5GSVQgc3BlY2lmaWNhdGlvbiBhbHJlYWR5 IGFudGljaXBhdGVzIHZlbmRvciBzcGVjaWZpYw0KICAgIGltcGxlbWVudGF0aW9ucy4gIFRoZSBl eGFjdCBkaXN0aW5jdGlvbiBvZiB3aGF0IGEgcmVnaW9uIGNvbnRhaW5zIGlzIGluDQogICAgdGhl IHJlZ2lvbi1hdHRyaWJ1dGVzIG5vdCB0aGUgcmVnaW9uLW5hbWUgb3IgdGhlIHJlZ2lvbi1kZXZ0 eXBlLg0KICAgIA0KICAgIDIuIEEgcmVnaW9uIHdpdGggemVybyBjaGlsZC1uYW1lc3BhY2VzIGlz IGEgcG9zc2libGUgY29uZmlndXJhdGlvbi4gIEZvcg0KICAgIGV4YW1wbGUsIHRoZSBORklUIGFs bG93cyBmb3IgYSBEQ1IgdG8gYmUgcHVibGlzaGVkIHdpdGhvdXQgYQ0KICAgIGNvcnJlc3BvbmRp bmcgQkxLLWFwZXJ0dXJlLiAgVGhpcyBlcXVhdGVzIHRvIGEgRElNTSB0aGF0IGNhbiBvbmx5IGFj Y2VwdA0KICAgIGNvbnRyb2wvY29uZmlndXJhdGlvbiBtZXNzYWdlcywgYnV0IG5vIGkvbyB0aHJv dWdoIGEgZGVzY2VuZGFudCBibG9jaw0KICAgIGRldmljZS4gIEFnYWluLCB0aGlzICJ0eXBlIiBp cyBhZHZlcnRpc2VkIGluIHRoZSBhdHRyaWJ1dGVzICgnbWFwcGluZ3MnDQogICAgPT0gMCkgYW5k IHRoZSBuYW1lIGRvZXMgbm90IHRlbGwgeW91IG11Y2guDQogICAgDQogICAgMy4gV2hhdCBpZiBh IHRoaXJkIG1ham9yIGludGVyZmFjZSB0eXBlIGFyaXNlcyBpbiB0aGUgZnV0dXJlPyAgT3V0c2lk ZQ0KICAgIG9mIHZlbmRvciBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMsIGl0J3Mgbm90IGRpZmZp Y3VsdCB0byBlbnZpc2lvbiBhDQogICAgdGhpcmQgY2xhc3Mgb2YgaW50ZXJmYWNlIHR5cGUgYmV5 b25kIEJMSyBhbmQgUE1FTS4gIFdpdGggYSBnZW5lcmljIG5hbWUNCiAgICBmb3IgdGhlIFJFR0lP TiBsZXZlbCBvZiB0aGUgZGV2aWNlLWhpZXJhcmNoeSBvbGQgdXNlcnNwYWNlDQogICAgaW1wbGVt ZW50YXRpb25zIGNhbiBzdGlsbCBtYWtlIHNlbnNlIG9mIG5ldyBrZXJuZWwgYWR2ZXJ0aXNlZA0K ICAgIHJlZ2lvbi10eXBlcy4gIFVzZXJzcGFjZSBjYW4gYWx3YXlzIHJlbHkgb24gdGhlIGdlbmVy aWMgcmVnaW9uDQogICAgYXR0cmlidXRlcyBsaWtlICJtYXBwaW5ncyIsICJzaXplIiwgZXRjIGFu ZCB0aGUgZXhwZWN0ZWQgY2hpbGQgZGV2aWNlcw0KICAgIG5hbWVkICJuYW1lc3BhY2UiLiAgVGhp cyBnZW5lcmljIGZvcm1hdCBvZiB0aGUgZGV2aWNlLW1vZGVsIGhpZXJhcmNoeQ0KICAgIGFsbG93 cyB0aGUgTElCTkQgYW5kIExJQk5EQ1RMIGltcGxlbWVudGF0aW9ucyB0byBiZSBtb3JlIHVuaWZv cm0gYW5kDQogICAgZnV0dXJlLXByb29mLg0KICAgIA0KICAgIDQuIFRoZXJlIGFyZSBtb3JlIHJv YnVzdCBtZWNoYW5pc21zIGZvciBkZXRlcm1pbmluZyB0aGUgbWFqb3IgdHlwZSBvZiBhDQogICAg cmVnaW9uIHRoYW4gYSBkZXZpY2UgbmFtZS4gIFNlZSB0aGUgbmV4dCBzZWN0aW9uLCBIb3cgRG8g SSBEZXRlcm1pbmUgdGhlDQogICAgTWFqb3IgVHlwZSBvZiBhIFJlZ2lvbj8NCg0KSG93IERvIEkg RGV0ZXJtaW5lIHRoZSBNYWpvciBUeXBlIG9mIGEgUmVnaW9uPw0KLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpPdXRzaWRlIG9mIHRoZSBibGFua2V0IHJl Y29tbWVuZGF0aW9uIG9mICJ1c2UgbGlibmRjdGwiLCBvciBzaW1wbHkNCmxvb2tpbmcgYXQgdGhl IGtlcm5lbCBoZWFkZXIgKC91c3IvaW5jbHVkZS9saW51eC9uZGN0bC5oKSB0byBkZWNvZGUgdGhl DQoibnN0eXBlIiBpbnRlZ2VyIGF0dHJpYnV0ZSwgaGVyZSBhcmUgc29tZSBvdGhlciBvcHRpb25z Lg0KDQogICAgMS4gbW9kdWxlIGFsaWFzIGxvb2t1cDoNCiAgICANCiAgICBUaGUgd2hvbGUgcG9p bnQgb2YgcmVnaW9uL25hbWVzcGFjZSBkZXZpY2UgdHlwZSBkaWZmZXJlbnRpYXRpb24gaXMgdG8N CiAgICBkZWNpZGUgd2hpY2ggYmxvY2stZGV2aWNlIGRyaXZlciB3aWxsIGF0dGFjaCB0byBhIGdp dmVuIExJQk5EIG5hbWVzcGFjZS4NCiAgICBPbmUgY2FuIHNpbXBseSB1c2UgdGhlIG1vZGFsaWFz IHRvIGxvb2t1cCB0aGUgcmVzdWx0aW5nIG1vZHVsZS4gIEl0J3MNCiAgICBpbXBvcnRhbnQgdG8g bm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHJvYnVzdCBpbiB0aGUgcHJlc2VuY2Ugb2YgYQ0KICAg IHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgZG93biB0aGUgcm9hZC4gIElmIGEgdmVuZG9yLXNwZWNp ZmljDQogICAgaW1wbGVtZW50YXRpb24gd2FudHMgdG8gc3VwcGxhbnQgdGhlIHN0YW5kYXJkIG5k X2JsayBkcml2ZXIgaXQgY2FuIHdpdGgNCiAgICBtaW5pbWFsIGltcGFjdCB0byB0aGUgcmVzdCBv ZiBMSUJORC4NCiAgICANCiAgICBJbiBmYWN0LCBhIHZlbmRvciBtYXkgYWxzbyB3YW50IHRvIGhh dmUgYSB2ZW5kb3Itc3BlY2lmaWMgcmVnaW9uLWRyaXZlcg0KICAgIChvdXRzaWRlIG9mIG5kX3Jl Z2lvbikuICBGb3IgZXhhbXBsZSwgaWYgYSB2ZW5kb3IgZGVmaW5lZCBpdHMgb3duIExBQkVMDQog ICAgZm9ybWF0IGl0IHdvdWxkIG5lZWQgaXRzIG93biByZWdpb24gZHJpdmVyIHRvIHBhcnNlIHRo YXQgTEFCRUwgYW5kIGVtaXQNCiAgICB0aGUgcmVzdWx0aW5nIG5hbWVzcGFjZXMuICBUaGUgb3V0 cHV0IGZyb20gbW9kdWxlIHJlc29sdXRpb24gaXMgbW9yZQ0KICAgIGFjY3VyYXRlIHRoYW4gYSBy ZWdpb24tbmFtZSBvciByZWdpb24tZGV2dHlwZS4NCiAgICANCiAgICAyLiB1ZGV2Og0KICAgIA0K ICAgIFRoZSBrZXJuZWwgImRldnR5cGUiIGlzIHJlZ2lzdGVyZWQgaW4gdGhlIHVkZXYgZGF0YWJh c2UNCiAgICAjIHVkZXZhZG0gaW5mbyAtLXBhdGg9L2RldmljZXMvcGxhdGZvcm0vbmZpdF90ZXN0 LjAvbmRidXMwL3JlZ2lvbjAgDQogICAgUDogL2RldmljZXMvcGxhdGZvcm0vbmZpdF90ZXN0LjAv bmRidXMwL3JlZ2lvbjANCiAgICBFOiBERVZQQVRIPS9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVz dC4wL25kYnVzMC9yZWdpb24wDQogICAgRTogREVWVFlQRT1uZF9wbWVtDQogICAgRTogTU9EQUxJ QVM9bmQ6dDINCiAgICBFOiBTVUJTWVNURU09bmQNCiAgICANCiAgICAjIHVkZXZhZG0gaW5mbyAt LXBhdGg9L2RldmljZXMvcGxhdGZvcm0vbmZpdF90ZXN0LjAvbmRidXMwL3JlZ2lvbjQNCiAgICBQ OiAvZGV2aWNlcy9wbGF0Zm9ybS9uZml0X3Rlc3QuMC9uZGJ1czAvcmVnaW9uNA0KICAgIEU6IERF VlBBVEg9L2RldmljZXMvcGxhdGZvcm0vbmZpdF90ZXN0LjAvbmRidXMwL3JlZ2lvbjQNCiAgICBF OiBERVZUWVBFPW5kX2Jsaw0KICAgIEU6IE1PREFMSUFTPW5kOnQzDQogICAgRTogU1VCU1lTVEVN PW5kDQogICAgDQogICAgLi4uYW5kIGlzIGF2YWlsYWJsZSBhcyBhIHJlZ2lvbiBhdHRyaWJ1dGUs IGJ1dCBrZWVwIGluIG1pbmQgdGhhdCB0aGUNCiAgICAiZGV2dHlwZSIgZG9lcyBub3QgaW5kaWNh dGUgc3ViLXR5cGUgdmFyaWF0aW9ucyBhbmQgc2NyaXB0cyBzaG91bGQNCiAgICByZWFsbHkgYmUg dW5kZXJzdGFuZGluZyB0aGUgb3RoZXIgYXR0cmlidXRlcy4NCiAgICANCiAgICAzLiB0eXBlIHNw ZWNpZmljIGF0dHJpYnV0ZXM6DQogICAgDQogICAgQXMgaXQgY3VycmVudGx5IHN0YW5kcyBhIEJM Sy1hcGVydHVyZSByZWdpb24gd2lsbCBuZXZlciBoYXZlIGENCiAgICAibmZpdC9zcGFfaW5kZXgi IGF0dHJpYnV0ZSwgYnV0IG5laXRoZXIgd2lsbCBhIG5vbi1ORklUIFBNRU0gcmVnaW9uLiAgQQ0K ICAgIEJMSyByZWdpb24gd2l0aCBhICJtYXBwaW5ncyIgdmFsdWUgb2YgMCBpcywgYXMgbWVudGlv bmVkIGFib3ZlLCBhIERJTU0NCiAgICB0aGF0IGRvZXMgbm90IGFsbG93IEkvTy4gIEEgUE1FTSBy ZWdpb24gd2l0aCBhICJtYXBwaW5ncyIgdmFsdWUgb2YgemVybw0KICAgIGlzIGEgc2ltcGxlIHN5 c3RlbS1waHlzaWNhbC1hZGRyZXNzIHJhbmdlLg0KIA0KDQpMSUJORC9MSUJORENUTDogTmFtZXNw YWNlDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkEgUkVHSU9OLCBhZnRlciByZXNvbHZp bmcgRFBBIGFsaWFzaW5nIGFuZCBMQUJFTCBzcGVjaWZpZWQgYm91bmRhcmllcywNCnN1cmZhY2Vz IG9uZSBvciBtb3JlICJuYW1lc3BhY2UiIGRldmljZXMuICBUaGUgYXJyaXZhbCBvZiBhICJuYW1l c3BhY2UiDQpkZXZpY2UgY3VycmVudGx5IHRyaWdnZXJzIGVpdGhlciB0aGUgbmRfYmxrIG9yIG5k X3BtZW0gZHJpdmVyIHRvIGxvYWQNCmFuZCByZWdpc3RlciBhIGRpc2svYmxvY2sgZGV2aWNlLg0K DQpsaWJuZDogbmFtZXNwYWNlDQpIZXJlIGlzIGEgc2FtcGxlIGxheW91dCBmcm9tIHRoZSB0aHJl ZSBtYWpvciB0eXBlcyBvZiBOQU1FU1BBQ0Ugd2hlcmUNCm5hbWVzcGFjZTAuMCByZXByZXNlbnRz IERJTU0taW5mby1iYWNrZWQgUE1FTSAobm90ZSB0aGF0IGl0IGhhcyBhICd1dWlkJw0KYXR0cmli dXRlKSwgbmFtZXNwYWNlMi4wIHJlcHJlc2VudHMgYSBCTEsgbmFtZXNwYWNlIChub3RlIGl0IGhh cyBhDQonc2VjdG9yX3NpemUnIGF0dHJpYnV0ZSkgdGhhdCwgYW5kIG5hbWVzcGFjZTYuMCByZXBy ZXNlbnRzIGFuIGFub255bW91cw0KUE1FTSBuYW1lc3BhY2UgKG5vdGUgdGhhdCBoYXMgbm8gJ3V1 aWQnIGF0dHJpYnV0ZSBkdWUgdG8gbm90IHN1cHBvcnQgYQ0KTEFCRUwpLg0KDQoJL3N5cy9kZXZp Y2VzL3BsYXRmb3JtL25maXRfdGVzdC4wL25kYnVzMC9yZWdpb24wL25hbWVzcGFjZTAuMA0KCXwt LSBhbHRfbmFtZQ0KCXwtLSBkZXZ0eXBlDQoJfC0tIGRwYV9leHRlbnRzDQoJfC0tIG1vZGFsaWFz DQoJfC0tIHJlc291cmNlDQoJfC0tIHNpemUNCgl8LS0gc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4u Ly4uLy4uL2J1cy9uZA0KCXwtLSB0eXBlDQoJfC0tIHVldmVudA0KCWAtLSB1dWlkDQoJL3N5cy9k ZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4wL25kYnVzMC9yZWdpb24yL25hbWVzcGFjZTIuMA0K CXwtLSBhbHRfbmFtZQ0KCXwtLSBkZXZ0eXBlDQoJfC0tIGRwYV9leHRlbnRzDQoJfC0tIG1vZGFs aWFzDQoJfC0tIHNlY3Rvcl9zaXplDQoJfC0tIHNpemUNCgl8LS0gc3Vic3lzdGVtIC0+IC4uLy4u Ly4uLy4uLy4uLy4uL2J1cy9uZA0KCXwtLSB0eXBlDQoJfC0tIHVldmVudA0KCWAtLSB1dWlkDQoJ L3N5cy9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4xL25kYnVzMS9yZWdpb242L25hbWVzcGFj ZTYuMA0KCXwtLSBibG9jaw0KCXwgICBgLS0gcG1lbTANCgl8LS0gZGV2dHlwZQ0KCXwtLSBkcml2 ZXIgLT4gLi4vLi4vLi4vLi4vLi4vLi4vYnVzL25kL2RyaXZlcnMvcG1lbQ0KCXwtLSBtb2RhbGlh cw0KCXwtLSByZXNvdXJjZQ0KCXwtLSBzaXplDQoJfC0tIHN1YnN5c3RlbSAtPiAuLi8uLi8uLi8u Li8uLi8uLi9idXMvbmQNCgl8LS0gdHlwZQ0KCWAtLSB1ZXZlbnQNCg0KbGlibmRjdGw6IG5hbWVz cGFjZSBlbnVtZXJhdGlvbiBleGFtcGxlDQpOYW1lc3BhY2VzIGFyZSBpbmRleGVkIHJlbGF0aXZl IHRvIHRoZWlyIHBhcmVudCByZWdpb24sIGV4YW1wbGUgYmVsb3cuICBUaGVzZSBpbmRleGVzIGFy ZSBtb3N0bHkgc3RhdGljIGZyb20gYm9vdCB0byBib290LCBidXQgc3Vic3lzdGVtIG1ha2VzIG5v IGd1YXJhbnRlZXMgaW4gdGhpcyByZWdhcmQuICBGb3IgYSBzdGF0aWMgbmFtZXNwYWNlIGlkZW50 aWZpZXIgdXNlIGl0cyAndXVpZCcgYXR0cmlidXRlLg0KDQpzdGF0aWMgc3RydWN0IG5kY3RsX25h bWVzcGFjZSAqZ2V0X25hbWVzcGFjZV9ieV9pZChzdHJ1Y3QgbmRjdGxfcmVnaW9uICpyZWdpb24s DQogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlkKQ0Kew0KICAgICAgICBzdHJ1Y3QgbmRj dGxfbmFtZXNwYWNlICpuZG5zOw0KDQogICAgICAgIG5kY3RsX25hbWVzcGFjZV9mb3JlYWNoKHJl Z2lvbiwgbmRucykNCiAgICAgICAgICAgICAgICBpZiAobmRjdGxfbmFtZXNwYWNlX2dldF9pZChu ZG5zKSA9PSBpZCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5zOw0KDQogICAg ICAgIHJldHVybiBOVUxMOw0KfQ0KDQpsaWJuZGN0bDogbmFtZXNwYWNlIGNyZWF0aW9uIGV4YW1w bGUNCklkbGUgbmFtZXNwYWNlcyBhcmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHRoZSBrZXJu ZWwgaWYgYSBnaXZlbiByZWdpb24gaGFzIGVub3VnaCBhdmFpbGFibGUgY2FwYWNpdHkgdG8gY3Jl YXRlIGEgbmV3IG5hbWVzcGFjZS4gIE5hbWVzcGFjZSBpbnN0YW50aWF0aW9uIGludm9sdmVzIGZp bmRpbmcgYW4gaWRsZSBuYW1lc3BhY2UgYW5kIGNvbmZpZ3VyaW5nIGl0LiAgRm9yIHRoZSBtb3N0 IHBhcnQgdGhlIHNldHRpbmcgb2YgbmFtZXNwYWNlIGF0dHJpYnV0ZXMgY2FuIG9jY3VyIGluIGFu eSBvcmRlciwgdGhlIG9ubHkgY29uc3RyYWludCBpcyB0aGF0ICd1dWlkJyBtdXN0IGJlIHNldCBi ZWZvcmUgJ3NpemUnLiAgVGhpcyBlbmFibGVzIHRoZSBrZXJuZWwgdG8gdHJhY2sgRFBBIGFsbG9j YXRpb25zIGludGVybmFsbHkgd2l0aCBhIHN0YXRpYyBpZGVudGlmaWVyLg0KDQpzdGF0aWMgaW50 IGNvbmZpZ3VyZV9uYW1lc3BhY2Uoc3RydWN0IG5kY3RsX3JlZ2lvbiAqcmVnaW9uLA0KICAgICAg ICAgICAgICAgIHN0cnVjdCBuZGN0bF9uYW1lc3BhY2UgKm5kbnMsDQogICAgICAgICAgICAgICAg c3RydWN0IG5hbWVzcGFjZV9wYXJhbWV0ZXJzICpwYXJhbWV0ZXJzKQ0Kew0KICAgICAgICBjaGFy IGRldm5hbWVbNTBdOw0KDQogICAgICAgIHNucHJpbnRmKGRldm5hbWUsIHNpemVvZihkZXZuYW1l KSwgIm5hbWVzcGFjZSVkLiVkIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIG5kY3RsX3JlZ2lv bl9nZXRfaWQocmVnaW9uKSwgcGFyYW1hdGVycy0+aWQpOw0KDQogICAgICAgIG5kY3RsX25hbWVz cGFjZV9zZXRfYWx0X25hbWUobmRucywgZGV2bmFtZSk7DQogICAgICAgIC8qICd1dWlkJyBtdXN0 IGJlIHNldCBwcmlvciB0byBzZXR0aW5nIHNpemUhICovDQogICAgICAgIG5kY3RsX25hbWVzcGFj ZV9zZXRfdXVpZChuZG5zLCBwYXJhbWF0ZXJzLT51dWlkKTsNCiAgICAgICAgbmRjdGxfbmFtZXNw YWNlX3NldF9zaXplKG5kbnMsIHBhcmFtYXRlcnMtPnNpemUpOw0KICAgICAgICAvKiB1bmxpa2Ug cG1lbSBuYW1lc3BhY2VzLCBibGsgbmFtZXNwYWNlcyBoYXZlIGEgc2VjdG9yIHNpemUgKi8NCiAg ICAgICAgaWYgKHBhcmFtZXRlcnMtPmxiYXNpemUpDQogICAgICAgICAgICAgICAgbmRjdGxfbmFt ZXNwYWNlX3NldF9zZWN0b3Jfc2l6ZShuZG5zLCBwYXJhbWV0ZXJzLT5sYmFzaXplKTsNCiAgICAg ICAgbmRjdGxfbmFtZXNwYWNlX2VuYWJsZShuZG5zKTsNCn0NCg0KDQpXaHkgdGhlIFRlcm0gIm5h bWVzcGFjZSI/DQoNCiAgICAxLiBXaHkgbm90ICJ2b2x1bWUiIGZvciBpbnN0YW5jZT8gICJ2b2x1 bWUiIHJhbiB0aGUgcmlzayBvZiBjb25mdXNpbmcgTkQNCiAgICBhcyBhIHZvbHVtZSBtYW5hZ2Vy IGxpa2UgZGV2aWNlLW1hcHBlci4NCiAgICANCiAgICAyLiBUaGUgdGVybSBvcmlnaW5hdGVkIHRv IGRlc2NyaWJlIHRoZSBzdWItZGV2aWNlcyB0aGF0IGNhbiBiZSBjcmVhdGVkDQogICAgd2l0aGlu IGEgTlZNRSBjb250cm9sbGVyIChzZWUgdGhlIG52bWUgc3BlY2lmaWNhdGlvbjoNCiAgICBodHRw Oi8vd3d3Lm52bWV4cHJlc3Mub3JnL3NwZWNpZmljYXRpb25zLyksIGFuZCBORklUIG5hbWVzcGFj ZXMgYXJlDQogICAgbWVhbnQgdG8gcGFyYWxsZWwgdGhlIGNhcGFiaWxpdGllcyBhbmQgY29uZmln dXJhYmlsaXR5IG9mDQogICAgTlZNRS1uYW1lc3BhY2VzLg0KDQoNCkxJQk5EL0xJQk5EQ1RMOiBC bG9jayBUcmFuc2xhdGlvbiBUYWJsZSAiYnR0Ig0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQoNCkEgQlRUIChkZXNpZ24gZG9jdW1lbnQ6IGh0dHA6Ly9wbWVt LmlvLzIwMTQvMDkvMjMvYnR0Lmh0bWwpIGlzIGEgc3RhY2tlZA0KYmxvY2sgZGV2aWNlIGRyaXZl ciB0aGF0IGZyb250cyBlaXRoZXIgdGhlIHdob2xlIGJsb2NrIGRldmljZSBvciBhDQpwYXJ0aXRp b24gb2YgYSBibG9jayBkZXZpY2UgZW1pdHRlZCBieSBlaXRoZXIgYSBQTUVNIG9yIEJMSyBOQU1F U1BBQ0UuDQoNCmxpYm5kOiBidHQgbGF5b3V0DQpFdmVyeSBidXMgd2lsbCBzdGFydCBvdXQgd2l0 aCBhdCBsZWFzdCBvbmUgQlRUIGRldmljZSB3aGljaCBpcyB0aGUgc2VlZA0KZGV2aWNlLiAgVG8g YWN0aXZhdGUgaXQgc2V0IHRoZSAiYmFja2luZ19kZXYiLCAidXVpZCIsIGFuZCAic2VjdG9yX3Np emUiDQphdHRyaWJ1dGVzIGFuZCB0aGVuIGJpbmQgdGhlIGRldmljZSB0byB0aGUgbmRfYnR0IGRy aXZlci4NCg0KCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9uZml0X3Rlc3QuMS9uZGJ1czAvYnR0MC8N Cgl8LS0gYmFja2luZ19kZXYNCgl8LS0gZGVsZXRlDQoJfC0tIGRldnR5cGUNCgl8LS0gbW9kYWxp YXMNCgl8LS0gc2VjdG9yX3NpemUNCgl8LS0gc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4uLy4uL2J1 cy9uZA0KCXwtLSB1ZXZlbnQNCglgLS0gdXVpZA0KDQpsaWJuZGN0bDogYnR0IGNyZWF0aW9uIGV4 YW1wbGUNClNpbWlsYXIgdG8gbmFtZXNwYWNlcyBhbiBpZGxlIEJUVCBkZXZpY2UgaXMgYXV0b21h dGljYWxseSBjcmVhdGVkIHBlcg0KYnVzLiAgRWFjaCB0aW1lIHRoaXMgInNlZWQiIGJ0dCBkZXZp Y2UgaXMgY29uZmlndXJlZCBhbmQgZW5hYmxlZCBhIG5ldw0Kc2VlZCBpcyBjcmVhdGVkLiAgQ3Jl YXRpbmcgYSBCVFQgY29uZmlndXJhdGlvbiBpbnZvbHZlcyB0d28gc3RlcHMgb2YNCmZpbmRpbmcg YW5kIGlkbGUgQlRUIGFuZCBhc3NpZ25pbmcgaXQgdG8gZnJvbnQgYSBQTUVNIG9yIEJMSyBuYW1l c3BhY2UuDQoNCglzdGF0aWMgc3RydWN0IG5kY3RsX2J0dCAqZ2V0X2lkbGVfYnR0KHN0cnVjdCBu ZGN0bF9idXMgKmJ1cykNCgl7DQoJCXN0cnVjdCBuZGN0bF9idHQgKmJ0dDsNCg0KCQluZGN0bF9i dHRfZm9yZWFjaChidXMsIGJ0dCkNCgkJCWlmICghbmRjdGxfYnR0X2lzX2VuYWJsZWQoYnR0KSAm JiAhbmRjdGxfYnR0X2lzX2NvbmZpZ3VyZWQoYnR0KSkNCgkJCQlyZXR1cm4gYnR0Ow0KDQoJCXJl dHVybiBOVUxMOw0KCX0NCg0KCXN0YXRpYyBpbnQgY29uZmlndXJlX2J0dChzdHJ1Y3QgbmRjdGxf YnVzICpidXMsIHN0cnVjdCBidHRfcGFyYW1ldGVycyAqcGFyYW1ldGVycykNCgl7DQoJCWJ0dCA9 IGdldF9pZGxlX2J0dChidXMpOw0KDQoJCXNwcmludGYoYmRldnBhdGgsICIvZGV2LyVzIiwNCgkJ CQluZGN0bF9uYW1lc3BhY2VfZ2V0X2Jsb2NrX2RldmljZShwYXJhbWV0ZXJzLT5uZG5zKSk7DQoJ CW5kY3RsX2J0dF9zZXRfdXVpZChidHQsIHBhcmFtZXRlcnMtPnV1aWQpOw0KCQluZGN0bF9idHRf c2V0X3NlY3Rvcl9zaXplKGJ0dCwgcGFyYW1ldGVycy0+c2VjdG9yX3NpemUpOw0KCQluZGN0bF9i dHRfc2V0X2JhY2tpbmdfZGV2KGJ0dCwgcGFyYW1ldGVzLT5iZGV2cGF0aCk7DQoJCW5kY3RsX2J0 dF9lbmFibGUoYnR0KTsNCgl9DQoNCk9uY2UgaW5zdGFudGlhdGVkIGEgIm5kX2J0dCIgbGluayB3 aWxsIGJlIGNyZWF0ZWQgdW5kZXIgdGhlDQoiYmFja2luZ19kZXYiIChwbWVtMCkgYmxvY2sgZGV2 aWNlOg0KDQoJL3N5cy9ibG9jay9wbWVtMC8NCgl8LS0gYWxpZ25tZW50X29mZnNldA0KCXwtLSBi ZGkgLT4gLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmlydHVhbC9iZGkvMjU5OjANCgl8LS0gY2FwYWJp bGl0eQ0KCXwtLSBkZXYNCgl8LS0gZGV2aWNlIC0+IC4uLy4uLy4uL25hbWVzcGFjZTAuMA0KCXwt LSBkaXNjYXJkX2FsaWdubWVudA0KCXwtLSBleHRfcmFuZ2UNCgl8LS0gaG9sZGVycw0KCXwtLSBp bmZsaWdodA0KCXwtLSBuZF9idHQgLT4gLi4vLi4vLi4vLi4vYnR0MA0KDQouLi5hbmQgYSBuZXcg aW5hY3RpdmUgc2VlZCBkZXZpY2Ugd2lsbCBhcHBlYXIgb24gdGhlIGJ1cy4NCg0KT25jZSBhICJi YWNraW5nX2RldiIgaXMgZGlzYWJsZWQgaXRzIGFzc29jaWF0ZWQgQlRUIHdpbGwgYmUNCmF1dG9t YXRpY2FsbHkgZGVsZXRlZC4gIFRoaXMgZGVsZXRpb24gaXMgb25seSBhdCB0aGUgZGV2aWNlIG1v ZGVsIGxldmVsLg0KSW4gb3JkZXIgdG8gZGVzdHJveSBhIEJUVCB0aGUgImluZm8gYmxvY2siIG5l ZWRzIHRvIGJlIGRlc3Ryb3llZC4NCg0KDQpTdW1tYXJ5IExJQk5EQ1RMIERpYWdyYW0NCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpGb3IgdGhlIGdpdmVuIGV4YW1wbGUgYWJvdmUsIGhlcmUg aXMgdGhlIHZpZXcgb2YgdGhlIG9iamVjdHMgYXMgc2VlbiBieSB0aGUgTElCTkRDVEwgYXBpOg0K ICAgICAgICAgICAgKy0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIHxDVFh8ICAgICstLS0tLS0tLS0rICAg Ky0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgDQogICAgICAgICAgICAr LSstKyAgKy0+IFJFR0lPTjAgKy0tLT4gTkFNRVNQQUNFMC4wICstLT4gUE1FTTggInBtMC4wIiB8 ICAgICAgIA0KICAgICAgICAgICAgICB8ICAgIHwgKy0tLS0tLS0tLSsgICArLS0tLS0tLS0tLS0t LS0rICArLS0tLS0tLS0tLS0tLS0tKyAgICAgICANCistLS0tLS0tKyAgICAgfCAgICB8ICstLS0t LS0tLS0rICAgKy0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgDQp8IERJ TU0wIDwtKyAgIHwgICAgKy0+IFJFR0lPTjEgKy0tLT4gTkFNRVNQQUNFMS4wICstLT4gUE1FTTYg InBtMS4wIiB8ICAgICAgIA0KKy0tLS0tLS0rIHwgICB8ICAgIHwgKy0tLS0tLS0tLSsgICArLS0t LS0tLS0tLS0tLS0rICArLS0tLS0tLS0tLS0tLS0tKyAgICAgICANCnwgRElNTTEgPC0rICstdi0t KyB8ICstLS0tLS0tLS0rICAgKy0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLSsgICAg ICAgDQorLS0tLS0tLSsgKy0rQlVTMCstLS0+IFJFR0lPTjIgKy0rLT4gTkFNRVNQQUNFMi4wICst LT4gTkQ2ICAiYmxrMi4wIiB8ICAgICAgIA0KfCBESU1NMiA8LSsgKy0tLS0rIHwgKy0tLS0tLS0t LSsgfCArLS0tLS0tLS0tLS0tLS0rICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCistLS0tLS0t KyB8ICAgICAgICB8ICAgICAgICAgICAgICstPiBOQU1FU1BBQ0UyLjEgKy0tPiBORDUgICJibGsy LjEiIHwgQlRUMiB8DQp8IERJTU0zIDwtKyAgICAgICAgfCAgICAgICAgICAgICAgICstLS0tLS0t LS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KKy0tLS0tLS0rICAgICAgICAgIHwg Ky0tLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0rICArLS0tLS0tLS0tLS0tLS0tKyAgICAgICAN CiAgICAgICAgICAgICAgICAgICArLT4gUkVHSU9OMyArLSstPiBOQU1FU1BBQ0UzLjAgKy0tPiBO RDQgICJibGszLjAiIHwgICAgICAgDQogICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tKyB8 ICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgKy0+IE5BTUVTUEFDRTMuMSArLS0+IE5EMyAgImJsazMuMSIg fCBCVFQxIHwNCiAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t LS0tKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQogICAgICAgICAgICAgICAgICAgfCArLS0t LS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0rICAgICAgIA0KICAg ICAgICAgICAgICAgICAgICstPiBSRUdJT040ICstLS0+IE5BTUVTUEFDRTQuMCArLS0+IE5EMiAg ImJsazQuMCIgfCAgICAgICANCiAgICAgICAgICAgICAgICAgICB8ICstLS0tLS0tLS0rICAgKy0t LS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgDQogICAgICAgICAgICAgICAg ICAgfCArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KICAgICAgICAgICAgICAgICAgICstPiBSRUdJT041ICstLS0+IE5BTUVTUEFDRTUuMCAr LS0+IE5EMSAgImJsazUuMCIgfCBCVFQwIHwNCiAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t LS0rICAgKy0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0rDQoNCg0KDQo=