From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH 2/2] xen/input: add multi-touch support Date: Thu, 8 Jun 2017 09:45:18 +0300 Message-ID: <222abecb-10b6-6196-9f44-6ec366377335__5049.40472678772$1496904388$gmane$org@gmail.com> References: <1492083484-31786-1-git-send-email-andr2000@gmail.com> <1492083484-31786-3-git-send-email-andr2000@gmail.com> <20170421021018.GB23279@dtor-ws> <20170530055150.GA38163@dtor-ws> <8092dd49-20e0-3e8d-977d-2f570142a37d@gmail.com> <20170530163708.GA12922@dtor-ws> <20170607165630.GA13116@dtor-ws> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dIrC8-00062d-6U for xen-devel@lists.xenproject.org; Thu, 08 Jun 2017 06:45:24 +0000 Received: by mail-lf0-f65.google.com with SMTP id x81so2369417lfb.3 for ; Wed, 07 Jun 2017 23:45:22 -0700 (PDT) In-Reply-To: <20170607165630.GA13116@dtor-ws> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dmitry Torokhov Cc: jgross@suse.com, Oleksandr Andrushchenko , vlad.babchuk@gmail.com, linux-kernel@vger.kernel.org, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, linux-input@vger.kernel.org, xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org SGksIERtaXRyeSEKCk9uIDA2LzA3LzIwMTcgMDc6NTYgUE0sIERtaXRyeSBUb3Jva2hvdiB3cm90 ZToKPiBPbiBXZWQsIE1heSAzMSwgMjAxNyBhdCAxMjowNjo1NlBNICswMzAwLCBPbGVrc2FuZHIg QW5kcnVzaGNoZW5rbyB3cm90ZToKPj4gSGksIERtaXRyeSEKPj4KPj4gT24gMDUvMzAvMjAxNyAw NzozNyBQTSwgRG1pdHJ5IFRvcm9raG92IHdyb3RlOgo+Pj4gT24gVHVlLCBNYXkgMzAsIDIwMTcg YXQgMDM6NTA6MjBQTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4+Pj4g SGksIERtaXRyeSEKPj4+Pgo+Pj4+IE9uIDA1LzMwLzIwMTcgMDg6NTEgQU0sIERtaXRyeSBUb3Jv a2hvdiB3cm90ZToKPj4+Pj4gT24gRnJpLCBBcHIgMjEsIDIwMTcgYXQgMDk6NDA6MzZBTSArMDMw MCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4+Pj4+PiBIaSwgRG1pdHJ5IQo+Pj4+ Pj4KPj4+Pj4+IE9uIDA0LzIxLzIwMTcgMDU6MTAgQU0sIERtaXRyeSBUb3Jva2hvdiB3cm90ZToK Pj4+Pj4+PiBIaSBPbGVrc2FuZHIsCj4+Pj4+Pj4KPj4+Pj4+PiBPbiBUaHUsIEFwciAxMywgMjAx NyBhdCAwMjozODowNFBNICswMzAwLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+ Pj4+Pj4gRnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hl bmtvQGVwYW0uY29tPgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBFeHRlbmQgeGVuX2tiZGZyb250IHRvIHBy b3ZpZGUgbXVsdGktdG91Y2ggc3VwcG9ydAo+Pj4+Pj4+PiB0byB1bnByaXZpbGVnZWQgZG9tYWlu cy4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVu a28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+Pj4+Pj4+PiAtLS0KPj4+Pj4+ Pj4gICBkcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMgfCAxNDIgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4+Pj4+Pj4gICAxIGZpbGUgY2hhbmdlZCwgMTQw IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMgYi9kcml2ZXJzL2lucHV0L21p c2MveGVuLWtiZGZyb250LmMKPj4+Pj4+Pj4gaW5kZXggMDFjMjdiNGMzMjg4Li5lNWQwNjRhYWEy MzcgMTAwNjQ0Cj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQu Ywo+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPj4+Pj4+ Pj4gQEAgLTE3LDYgKzE3LDcgQEAKPj4+Pj4+Pj4gICAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4K Pj4+Pj4+Pj4gICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+Pj4+Pj4+ICAgI2luY2x1ZGUg PGxpbnV4L2lucHV0Lmg+Cj4+Pj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvaW5wdXQvbXQuaD4KPj4+ Pj4+Pj4gICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+Pj4+Pj4+PiAgICNpbmNsdWRlIDxhc20v eGVuL2h5cGVydmlzb3IuaD4KPj4+Pj4+Pj4gQEAgLTM0LDExICszNSwxNCBAQAo+Pj4+Pj4+PiAg IHN0cnVjdCB4ZW5rYmRfaW5mbyB7Cj4+Pj4+Pj4+ICAgCXN0cnVjdCBpbnB1dF9kZXYgKmtiZDsK Pj4+Pj4+Pj4gICAJc3RydWN0IGlucHV0X2RldiAqcHRyOwo+Pj4+Pj4+PiArCXN0cnVjdCBpbnB1 dF9kZXYgKm10b3VjaDsKPj4+Pj4+Pj4gICAJc3RydWN0IHhlbmtiZF9wYWdlICpwYWdlOwo+Pj4+ Pj4+PiAgIAlpbnQgZ3JlZjsKPj4+Pj4+Pj4gICAJaW50IGlycTsKPj4+Pj4+Pj4gICAJc3RydWN0 IHhlbmJ1c19kZXZpY2UgKnhiZGV2Owo+Pj4+Pj4+PiAgIAljaGFyIHBoeXNbMzJdOwo+Pj4+Pj4+ PiArCS8qIGN1cnJlbnQgTVQgc2xvdC9jb250YWN0IElEIHdlIGFyZSBpbmplY3RpbmcgZXZlbnRz IGluICovCj4+Pj4+Pj4+ICsJaW50IG10b3VjaF9jdXJfY29udGFjdF9pZDsKPj4+Pj4+Pj4gICB9 Owo+Pj4+Pj4+PiAgIGVudW0geyBLUEFSQU1fWCwgS1BBUkFNX1ksIEtQQVJBTV9DTlQgfTsKPj4+ Pj4+Pj4gQEAgLTQ3LDYgKzUxLDEyIEBAIG1vZHVsZV9wYXJhbV9hcnJheShwdHJfc2l6ZSwgaW50 LCBOVUxMLCAwNDQ0KTsKPj4+Pj4+Pj4gICBNT0RVTEVfUEFSTV9ERVNDKHB0cl9zaXplLAo+Pj4+ Pj4+PiAgIAkiUG9pbnRpbmcgZGV2aWNlIHdpZHRoLCBoZWlnaHQgaW4gcGl4ZWxzIChkZWZhdWx0 IDgwMCw2MDApIik7Cj4+Pj4+Pj4+ICtlbnVtIHsgS1BBUkFNX01UX1gsIEtQQVJBTV9NVF9ZLCBL UEFSQU1fTVRfQ05UIH07Cj4+Pj4+Pj4+ICtzdGF0aWMgaW50IG10b3VjaF9zaXplW0tQQVJBTV9N VF9DTlRdID0geyBYRU5GQl9XSURUSCwgWEVORkJfSEVJR0hUIH07Cj4+Pj4+Pj4+ICttb2R1bGVf cGFyYW1fYXJyYXkobXRvdWNoX3NpemUsIGludCwgTlVMTCwgMDQ0NCk7Cj4+Pj4+Pj4+ICtNT0RV TEVfUEFSTV9ERVNDKHB0cl9zaXplLAo+Pj4+Pj4+PiArCSJNdWx0aS10b3VjaCBkZXZpY2Ugd2lk dGgsIGhlaWdodCBpbiBwaXhlbHMgKGRlZmF1bHQgODAwLDYwMCkiKTsKPj4+Pj4+Pj4gKwo+Pj4+ Pj4+IFdoeSBkbyB5b3UgbmVlZCBzZXBhcmF0ZSBtb2R1bGUgcGFyYW1ldGVycyBmb3IgbXVsdGkt dG91Y2ggZGV2aWNlPwo+Pj4+Pj4gcGxlYXNlIHNlZSBiZWxvdwo+Pj4+Pj4+PiAgIHN0YXRpYyBp bnQgeGVua2JkX3JlbW92ZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqKTsKPj4+Pj4+Pj4gICBzdGF0 aWMgaW50IHhlbmtiZF9jb25uZWN0X2JhY2tlbmQoc3RydWN0IHhlbmJ1c19kZXZpY2UgKiwgc3Ry dWN0IHhlbmtiZF9pbmZvICopOwo+Pj4+Pj4+PiAgIHN0YXRpYyB2b2lkIHhlbmtiZF9kaXNjb25u ZWN0X2JhY2tlbmQoc3RydWN0IHhlbmtiZF9pbmZvICopOwo+Pj4+Pj4+PiBAQCAtMTAwLDYgKzEx MCw2MCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaW5wdXRfaGFuZGxlcihpbnQgcnEsIHZvaWQgKmRl dl9pZCkKPj4+Pj4+Pj4gICAJCQkJaW5wdXRfcmVwb3J0X3JlbChkZXYsIFJFTF9XSEVFTCwKPj4+ Pj4+Pj4gICAJCQkJCQkgLWV2ZW50LT5wb3MucmVsX3opOwo+Pj4+Pj4+PiAgIAkJCWJyZWFrOwo+ Pj4+Pj4+PiArCQljYXNlIFhFTktCRF9UWVBFX01UT1VDSDoKPj4+Pj4+Pj4gKwkJCWRldiA9IGlu Zm8tPm10b3VjaDsKPj4+Pj4+Pj4gKwkJCWlmICh1bmxpa2VseSghZGV2KSkKPj4+Pj4+Pj4gKwkJ CQlicmVhazsKPj4+Pj4+Pj4gKwkJCWlmICh1bmxpa2VseShldmVudC0+bXRvdWNoLmNvbnRhY3Rf aWQgIT0KPj4+Pj4+Pj4gKwkJCQkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkKSkgewo+Pj4+ Pj4+IFdoeSBpcyB0aGlzIHVubGlrZWx5PyBEb2VzIGNvbnRhY3QgSUQgY2hhbmdlcyBvbmNlIGlu IDEwMDAgcGFja2V0cyBvcgo+Pj4+Pj4+IGV2ZW4gbGVzcz8KPj4+Pj4+IE11IGFzc3VtcHRpb24g d2FzIHRoYXQgcmVnYXJkbGVzcyBvZiB0aGUgZmFjdCB0aGF0IHdlIGFyZSBtdWx0aS10b3VjaAo+ Pj4+Pj4gZGV2aWNlIHN0aWxsIHNpbmdsZSB0b3VjaGVzIHdpbGwgY29tZSBpbiBtb3JlIGZyZXF1 ZW50bHkKPj4+Pj4+IEJ1dCBJIGNhbiByZW1vdmUgKnVubGlrZWx5KiBpZiBteSBhc3N1bXB0aW9u IGlzIG5vdCBjb3JyZWN0Cj4+Pj4+IEkgdGhpbmsgdGhlIG5vcm1hbCBleHBlY3RhdGlvbiBpcyB0 aGF0ICJ1bmxpa2VseSIgaXMgc3VwcG9zZWQgZm9yCj4+Pj4+IHNvbWV0aGluZyB0aGF0IGhhcHBl bnMgb25jZSBpbiBhIGJsdWUgbW9vbiwgc28gSSdkIHJhdGhlciByZW1vdmUgaXQuCj4+Pj4+Cj4+ Pj4gYWdyZWUsIHJlbW92ZWQgInVubGlrZWx5Igo+Pj4+Pj4+PiArCQkJCWluZm8tPm10b3VjaF9j dXJfY29udGFjdF9pZCA9Cj4+Pj4+Pj4+ICsJCQkJCWV2ZW50LT5tdG91Y2guY29udGFjdF9pZDsK Pj4+Pj4+Pj4gKwkJCQlpbnB1dF9tdF9zbG90KGRldiwgZXZlbnQtPm10b3VjaC5jb250YWN0X2lk KTsKPj4+Pj4+Pj4gKwkJCX0KPj4+Pj4+Pj4gKwkJCXN3aXRjaCAoZXZlbnQtPm10b3VjaC5ldmVu dF90eXBlKSB7Cj4+Pj4+Pj4+ICsJCQljYXNlIFhFTktCRF9NVF9FVl9ET1dOOgo+Pj4+Pj4+PiAr CQkJCWlucHV0X210X3JlcG9ydF9zbG90X3N0YXRlKGRldiwgTVRfVE9PTF9GSU5HRVIsCj4+Pj4+ Pj4+ICsJCQkJCQkJICAgdHJ1ZSk7Cj4+Pj4+IFNob3VsZCB3ZSBlc3RhYmxpc2ggdG9vbCBldmVu dD8gV2UgaGF2ZSBNVF9UT09MX1BFTiwgZXRjLgo+Pj4+IEkgdGhpbmsgdGhhdCBmb3IgbXVsdGkt dG91Y2ggTVRfVE9PTF9GSU5HRVIgaXMgZW5vdWdoCj4+Pj4gYW55IHJlYXNvbiB3ZSB3b3VsZCBh bHNvIHdhbnQgTVRfVE9PTF9QRU4gaGVyZT8KPj4+IFdoeSB3b3VsZCBub3QgeW91PyBMZXQncyBz YXkgeW91IGhhdmUgYSBkcmF3aW5nIGFwcGxpY2F0aW9uIHJ1bm5pbmcgaW4KPj4+IGd1ZXN0IHRo YXQgY2FuIG1ha2UgdXNlIG9mIHRvb2wgdHlwZXMuIFdoeSB3b3VsZCBub3QgeW91IHdhbnQgdG8g dGVsbCBpdAo+Pj4gdGhhdCB0aGUgdG9vbCB1c2VyIGlzIGN1cnJlbnRseSB1c2luZyBpcyBpbiBm YWN0IGEgcGVuIGFuZCBub3QgZmluZ2VyPwo+PiBCdXQgaXQgaXMgYSBmaW5nZXIgOikgd2UgYXJl IG11bHRpLXRvdWNoLCBub3QgbXVsdGkgcGVuCj4gU28gZm9yIHRhYmxldHMgdGhhdCBzdXBwb3J0 IGJvdGggdG91Y2ggYW5kIHN0eWx1cyB5b3Ugd291bGQgZXhwb3J0IHRoZW0KPiBhcyAyIHNlcGFy YXRlIGRldmljZXM/CnRoaXMgY291bGQgYmUgZG9uZSBpbiBkaWZmZXJlbnQgd2F5cywgYnV0IHBs ZWFzZSBzZWUgb24KcGVuIHN1cHBvcnQgYmVsb3cKPj4gQmVzaWRlcywgdGhhdCwgaWYgSSBhbSBh Ym91dCB0byBpbXBsZW1lbnQgcGVuIHN1cHBvcnQKPj4gKHdoaWNoIEkgc3RpbGwgbm90IGNvbnZp bmNlZCB3ZSByZWFsbHkgbmVlZCksIGhvdyB3aWxsIEkKPj4gZG8gdGhhdD8KPiBJIGRvIG5vdCBr bm93IHdoYXQgeW91IGhhdmUgb24gdGhlIGJhY2tlbmQgc2lkZSwgYnV0IHJvdWdobHkgc3BlYWtp bmcgaWYKPiB5b3UgZGV0ZWN0IGEgcGVuL3N0eWx1cyB5b3UgbGV0IHlvdXIgZ3Vlc3Qga25vdyB0 aGF0IHRoZSBjb250YWN0IGlzIG5vdAo+IGEgZmluZ2VyLCBidXQgcGVuLiBIb3cgeW91IHBsdW1i IGl0IHRocm91Z2ggaXMgdXAgdG8geW91Lgp3ZSBkbyBub3QgZGV0ZWN0IHBlbiwgb25seSBmaW5n ZXIgYXQgdGhlIG1vbWVudAphbmQgdGhlIGV4aXN0aW5nIHByb3RvY29sIGhhcyBubyBtZWFucyB0 byB0ZWxsCnR5cGUgb2YgdGhlIHRvb2wgdXNlZCwgZXZlcnl0aGluZyBpcyBzdXBwb3NlZCB0bwpi ZSAiZmluZ2VyIiwgc28gZnJvbnQtZW5kIGhhcyBubyBwb3NzaWJpbGl0eSB0bwp0ZWxsIG9uZSB0 b29sIGZyb20gYW5vdGhlcgo+PiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgSSBuZWVkIDIgZGlm ZmVyZW50IHNsb3RzIHRvIHJlcG9ydAo+PiB0aGUgc2FtZSBjb29yZGluYXRlcyBmb3IgZmluZ2Vy IGFuZCBwZW4uIFRoaXMgaXMgYmVjYXVzZQo+PiBpbnB1dF9tdF9yZXBvcnRfc2xvdF9zdGF0ZSBo YXMgYSBjaGVjayB0aGF0IGlmIHRvb2wgaGFzCj4+IGNoYW5nZWQgZm9yIHRoZSBjdXJyZW50IHNs b3QgdGhlbiBhIG5ldyB0cmFja2luZyBJRCBpcyBzZXQuCj4+IERvIEkgYWxzbyBuZWVkIHRvIGFs bG9jYXRlIHR3aWNlIG1vcmUgc2xvdHMsIHNvIEkgY2FuCj4+IHJlcG9ydCAyICogbnVtX2NvbnRh Y3RzIGV2ZW50cyBzaW11bHRhbmVvdXNseSAob25lIGZvciBmaW5nZXIKPj4gYW5kIGFub3RoZXIg Zm9yIHBlbik/Cj4+IFRoYXQgc2FpZCwgSSBiZWxpZXZlIHdlIGNhbiBzdGFydCB3aXRoIG11bHRp LXRvdWNoIHN1cHBvcnQKPj4gYW5kIGlmIG5lZWQgYmUgdGhlbiBhZGQgcGVuIHN1cHBvcnQgYXMg YSBzZXBhcmF0ZSBjaGFuZ2UsCj4+IGRvZXMgdGhhdCBtYWtlIHNlbnNlIGZvciB5b3U/Cj4+Pj4g KEkgZ3Vlc3MgTVRfVE9PTF9QQUxNIGlzIG5vdCBhcHByb3ByaWF0ZSBhbnl3YXlzKQo+Pj4gRGVw ZW5kcyBvbiBpZiB5b3UgZG8gc3RyYWlnaHQgcGFzcy10aHJvdWdoIGZyb20gdGhlIGhvc3Qgc2lk ZSBvciBub3QuIElmCj4+PiB5b3Ugc3RhY2sgZG9lcyBwYWxtIHJlamVjdGlvbiBiZWZvcmUgcGFz c2luZyB0aGUgZGF0YSB0aHJvdWdoIHRoZW4geW91Cj4+PiB3b3VsZCBub3Qgc2VlIE1UX1RPT0xf UEFMTSBpbiBndWVzdC4KPj4gdGhlIHByb3RvY29sIHVzZWQgYmV0d2VlbiBndWVzdCBhbmQgaG9z dCBpcyBhIGdlbmVyaWMgb25lLAo+PiBub3QgdXNpbmcgTGludXggdHlwZXMvY29uc3RhbnRzL2V2 ZW50cy4KPiBJdCBkb2VzIG5vdCBoYXZlIHRvIHVzZSBMaW51eCB0eXBlcyB0byBzdXBwb3J0IHRo ZSBjb25jZXB0IG9mIGRpZmZlcmVudAo+IHRvb2xzLgphZ3JlZQo+PiBTbywgbm8gUEFMTS9UT09M IHN1cHBvcnQgaXMgaW4gcGxhY2UKPiBPSywgdGhhdCBpcyBmYWlyLiBUaGUgcGVuIHN1cHBvcnQg aXMgZGVmaW5pdGVseSBub3QgYSBoYXJkIHJlcXVpcmVtZW50LgpzbywgY2FuIHdlIGxpdmUgd2l0 aCBmaW5nZXIgYXQgdGhpcyBwb2ludCwgbm8gcGVuPwo+IEkgd2FzIGp1c3Qgd29uZGVyaW5nIGlm IHlvdSBjb25zaWRlcmVkIG9yIGhhdmUgcGxhbnMgZm9yIGFkZGluZyB0aGF0Lgp3ZWxsLCBob25l c3RseSwgd2UgZG8gbm90IG5lZWQgcGVuIGF0IHRoZSBtb21lbnQsCmJ1dCB3ZSBkaWQgYWRkIG11 bHRpLXRvdWNoIHN1cHBvcnQgaW50byBYZW4gcHJvdG9jb2xzCmFuZCBpZiBwZW4gcmVxdWlyZWQg aXQgY2FuIGJlIGRvbmUgYXMgYSBzZXBhcmF0ZQpjaGFuZ2UgdG8gYm90aCBwcm90b2NvbCBhbmQg ZnJvbnQvYmFjayBlbmRzCj4gICBPcgo+IGlmIHlvdSB3YW50IHRvIHJldmlldyB0aGUgcHJvdG9j b2wgc28gaXQgY2FuIGJlIGVhc2lseSBhZGRlZCBpbiB0aGUKPiBmdXR1cmUuIEZvciBleGFtcGxl IHlvdSBjb3VsZCBoYXZlIHRvb2wgdHlwZSB0byBiZSBwYXJ0IG9mCj4gWEVOS0JEX01UX0VWX0RP V04gZXZlbnQuCnByb3RvY29sIGRpZCBhIGxvbmcgd2F5IHRvIGdldCBpbnRvIFhlbi9LZXJuZWwu Li4gOikKb2YgY291cnNlLCB0aGlzIGNhbiBiZSBkb25lLCBidXQgSSB3b3VsZCBwcmVmZXIgaXQg aXMKYWRkZWQgd2hlbiBpdCBpcyBuZWVkZWQsIG5vdCBvbmx5IHRoYXQgd2UgaGF2ZSB0aGlzIGZ1 bmN0aW9uYWxpdHkKPj4+Pj4+Pj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01U X1BPU0lUSU9OX1gsCj4+Pj4+Pj4+ICsJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic194 KTsKPj4+Pj4+Pj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01UX1BPU0lUSU9O X1ksCj4+Pj4+Pj4+ICsJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPj4+Pj4+ Pj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1gsCj4+Pj4+Pj4+ICsJCQkJCSAg ICBldmVudC0+bXRvdWNoLnUucG9zLmFic194KTsKPj4+Pj4+Pj4gKwkJCQlpbnB1dF9ldmVudChk ZXYsIEVWX0FCUywgQUJTX1ksCj4+Pj4+Pj4+ICsJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9z LmFic195KTsKPj4+Pj4+Pj4gKwkJCQlicmVhazsKPj4+Pj4+Pj4gKwkJCWNhc2UgWEVOS0JEX01U X0VWX1VQOgo+Pj4+Pj4+PiArCQkJCWlucHV0X210X3JlcG9ydF9zbG90X3N0YXRlKGRldiwgTVRf VE9PTF9GSU5HRVIsCj4+Pj4+Pj4+ICsJCQkJCQkJICAgZmFsc2UpOwo+Pj4+Pj4+PiArCQkJCWJy ZWFrOwo+Pj4+Pj4+PiArCQkJY2FzZSBYRU5LQkRfTVRfRVZfTU9USU9OOgo+Pj4+Pj4+PiArCQkJ CWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfUE9TSVRJT05fWCwKPj4+Pj4+Pj4gKwkJ CQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+Pj4+Pj4+PiArCQkJCWlucHV0X2V2 ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfUE9TSVRJT05fWSwKPj4+Pj4+Pj4gKwkJCQkJICAgIGV2 ZW50LT5tdG91Y2gudS5wb3MuYWJzX3kpOwo+Pj4+Pj4+PiArCQkJCWlucHV0X2V2ZW50KGRldiwg RVZfQUJTLCBBQlNfWCwKPj4+Pj4+Pj4gKwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJz X3gpOwo+Pj4+Pj4+PiArCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfWSwKPj4+Pj4+ Pj4gKwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3kpOwo+Pj4+Pj4+PiArCQkJCWJy ZWFrOwo+Pj4+Pj4+PiArCQkJY2FzZSBYRU5LQkRfTVRfRVZfU1lOOgo+Pj4+Pj4+PiArCQkJCWlu cHV0X210X3N5bmNfZnJhbWUoZGV2KTsKPj4+Pj4+Pj4gKwkJCQlicmVhazsKPj4+Pj4+Pj4gKwkJ CWNhc2UgWEVOS0JEX01UX0VWX1NIQVBFOgo+Pj4+Pj4+PiArCQkJCWlucHV0X2V2ZW50KGRldiwg RVZfQUJTLCBBQlNfTVRfVE9VQ0hfTUFKT1IsCj4+Pj4+Pj4+ICsJCQkJCSAgICBldmVudC0+bXRv dWNoLnUuc2hhcGUubWFqb3IpOwo+Pj4+Pj4+PiArCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJT LCBBQlNfTVRfVE9VQ0hfTUlOT1IsCj4+Pj4+Pj4+ICsJCQkJCSAgICBldmVudC0+bXRvdWNoLnUu c2hhcGUubWlub3IpOwo+Pj4+Pj4+PiArCQkJCWJyZWFrOwo+Pj4+Pj4+PiArCQkJY2FzZSBYRU5L QkRfTVRfRVZfT1JJRU5UOgo+Pj4+Pj4+PiArCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBB QlNfTVRfT1JJRU5UQVRJT04sCj4+Pj4+Pj4+ICsJCQkJCSAgICBldmVudC0+bXRvdWNoLnUub3Jp ZW50YXRpb24pOwo+Pj4+Pj4+PiArCQkJCWJyZWFrOwo+Pj4+Pj4+PiArCQkJfQo+Pj4+Pj4+PiAr CQkJLyogb25seSByZXBvcnQgc3luIHdoZW4gcmVxdWVzdGVkICovCj4+Pj4+Pj4+ICsJCQlpZiAo ZXZlbnQtPm10b3VjaC5ldmVudF90eXBlICE9IFhFTktCRF9NVF9FVl9TWU4pCj4+Pj4+Pj4+ICsJ CQkJZGV2ID0gTlVMTDsKPj4+Pj4+Pj4gICAJCX0KPj4+Pj4+Pj4gICAJCWlmIChkZXYpCj4+Pj4+ Pj4+ICAgCQkJaW5wdXRfc3luYyhkZXYpOwo+Pj4+Pj4+PiBAQCAtMTE1LDkgKzE3OSw5IEBAIHN0 YXRpYyBpbnQgeGVua2JkX3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCj4+Pj4+Pj4+ ICAgCQkJCSAgY29uc3Qgc3RydWN0IHhlbmJ1c19kZXZpY2VfaWQgKmlkKQo+Pj4+Pj4+PiAgIHsK Pj4+Pj4+Pj4gICAJaW50IHJldCwgaTsKPj4+Pj4+Pj4gLQl1bnNpZ25lZCBpbnQgYWJzOwo+Pj4+ Pj4+PiArCXVuc2lnbmVkIGludCBhYnMsIHRvdWNoOwo+Pj4+Pj4+PiAgIAlzdHJ1Y3QgeGVua2Jk X2luZm8gKmluZm87Cj4+Pj4+Pj4+IC0Jc3RydWN0IGlucHV0X2RldiAqa2JkLCAqcHRyOwo+Pj4+ Pj4+PiArCXN0cnVjdCBpbnB1dF9kZXYgKmtiZCwgKnB0ciwgKm10b3VjaDsKPj4+Pj4+Pj4gICAJ aW5mbyA9IGt6YWxsb2Moc2l6ZW9mKCppbmZvKSwgR0ZQX0tFUk5FTCk7Cj4+Pj4+Pj4+ICAgCWlm ICghaW5mbykgewo+Pj4+Pj4+PiBAQCAtMTUyLDYgKzIxNiwxNyBAQCBzdGF0aWMgaW50IHhlbmti ZF9wcm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAo+Pj4+Pj4+PiAgIAkJfQo+Pj4+Pj4+ PiAgIAl9Cj4+Pj4+Pj4+ICsJdG91Y2ggPSB4ZW5idXNfcmVhZF91bnNpZ25lZChkZXYtPm5vZGVu YW1lLAo+Pj4+Pj4+PiArCQkJCSAgICAgWEVOS0JEX0ZJRUxEX0ZFQVRfTVRPVUNILCAwKTsKPj4+ Pj4+Pj4gKwlpZiAodG91Y2gpIHsKPj4+Pj4+Pj4gKwkJcmV0ID0geGVuYnVzX3dyaXRlKFhCVF9O SUwsIGRldi0+bm9kZW5hbWUsCj4+Pj4+Pj4+ICsJCQkJICAgWEVOS0JEX0ZJRUxEX1JFUV9NVE9V Q0gsICIxIik7Cj4+Pj4+Pj4+ICsJCWlmIChyZXQpIHsKPj4+Pj4+Pj4gKwkJCXByX3dhcm5pbmco InhlbmtiZDogY2FuJ3QgcmVxdWVzdCBtdWx0aS10b3VjaCIpOwo+Pj4+Pj4+PiArCQkJdG91Y2gg PSAwOwo+Pj4+Pj4+PiArCQl9Cj4+Pj4+Pj4+ICsJfQo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICAgCS8q IGtleWJvYXJkICovCj4+Pj4+Pj4+ICAgCWtiZCA9IGlucHV0X2FsbG9jYXRlX2RldmljZSgpOwo+ Pj4+Pj4+PiAgIAlpZiAoIWtiZCkKPj4+Pj4+Pj4gQEAgLTIwOCw2ICsyODMsNjcgQEAgc3RhdGlj IGludCB4ZW5rYmRfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKPj4+Pj4+Pj4gICAJ fQo+Pj4+Pj4+PiAgIAlpbmZvLT5wdHIgPSBwdHI7Cj4+Pj4+Pj4+ICsJLyogbXVsdGktdG91Y2gg ZGV2aWNlICovCj4+Pj4+Pj4+ICsJaWYgKHRvdWNoKSB7Cj4+Pj4+Pj4+ICsJCWludCBudW1fY29u dCwgd2lkdGgsIGhlaWdodDsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCQltdG91Y2ggPSBpbnB1dF9h bGxvY2F0ZV9kZXZpY2UoKTsKPj4+Pj4+Pj4gKwkJaWYgKCFtdG91Y2gpCj4+Pj4+Pj4+ICsJCQln b3RvIGVycm9yX25vbWVtOwo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJCW51bV9jb250ID0geGVuYnVz X3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVuYW1lLAo+Pj4+Pj4+PiArCQkJCQkJWEVO S0JEX0ZJRUxEX01UX05VTV9DT05UQUNUUywKPj4+Pj4+Pj4gKwkJCQkJCTEpOwo+Pj4+PiBTaG91 bGQgd2UgcmVmdXNlIE1UIGRldmljZXMgd2l0aCBudW1iZXIgb2YgY29udGFjdHMgbGVzcyB0aGFu IDI/Cj4+Pj4gd2UgY2FuLCBidXQgSSBzZWUgbm8gaGFybSBpbiAxLiB3aGF0IGlzIG1vcmUsIHRo aXMgbWF5Cj4+Pj4gYWxsb3cgZ3Vlc3RzIHRvIGVtdWxhdGUgbW9yZSBwb2ludGluZyBkZXZpY2Vz Cj4+Pj4gYnV0LCBpZiB5b3UgaW5zaXN0LCB0aGVuIEkgd2lsbCBhZGQgYXBwcm9wcmlhdGUgY29k ZSB0bwo+Pj4+IHJlamVjdCBpZiBudW1iZXIgb2YgY29udGFjdHMgaXMgbGVzcyB0aGVuIDIKPiBU aGUgcXVlc3Rpb24gaXMgaWYgeW91IGFyZSBwbGFubmluZyB0byBrZWVwIHRoZSBzaW5nbGUtdG91 Y2ggaW50ZXJmYWNlCj4gb3IgeW91IHdpbGwgbWlncmF0ZSBldmVyeXRoaW5nIHRvIG11bHRpLXRv dWNoLgpJIHdpbGwga2VlcCBzaW5nbGUgdG91Y2ggYXMgbGVnYWN5LCBidXQgaW4gb3VyIHVzZS1j YXNlcwp3ZSBhcmUgbW9yZSBmb2N1c2luZyBvbiB1c2luZyBtdWx0aS10b3VjaCBkZXZpY2VzLgpi dXQgZXZlbiB3aXRoIG51bWJlciBvZiBjb250YWN0cyA9PSAxIGl0IGNhbiBzdGlsbCBiZQp1c2Vm dWwgYXMgaXQgZ2l2ZXMgbW9yZSBmbGV4aWJpbGl0eSBpbiBjb25maWd1cmluZyBndWVzdCBPUwpJ ZiB5b3UgaW5zaXN0IHRoYXQgbnVtIGNvbnRhY3RzID09IDEgbXVzdCBiZSByZW1vdmVkLApwbGVh c2UgbGV0IG1lIGtub3cgYW5kIEkgd2lsbCBoYW5kbGUgdGhhdAo+Pj4+Pj4+PiArCQl3aWR0aCA9 IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGluZm8tPnhiZGV2LT5ub2RlbmFtZSwKPj4+Pj4+Pj4gKwkJ CQkJICAgICBYRU5LQkRfRklFTERfTVRfV0lEVEgsCj4+Pj4+Pj4+ICsJCQkJCSAgICAgWEVORkJf V0lEVEgpOwo+Pj4+Pj4+PiArCQloZWlnaHQgPSB4ZW5idXNfcmVhZF91bnNpZ25lZChpbmZvLT54 YmRldi0+bm9kZW5hbWUsCj4+Pj4+Pj4+ICsJCQkJCSAgICAgIFhFTktCRF9GSUVMRF9NVF9IRUlH SFQsCj4+Pj4+Pj4+ICsJCQkJCSAgICAgIFhFTkZCX0hFSUdIVCk7Cj4+Pj4+Pj4gQ3VyaW91cyB3 aHkgeW91IG5lZWQgc2VwYXJhdGUgcGFyYW1ldGVycyBoZXJlIHRvby4uLgo+Pj4+Pj4gVGhpcyBp cyBiZWNhdXNlIG10IHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCBmcm9tIHB0cgo+Pj4+Pj4gaW4g YSB3YXkgdGhhdCB0aGV5IGFyZSBjb25maWd1cmFibGUgcGVyIGZyb250IGRyaXZlcidzCj4+Pj4+ PiBpbnN0YW5jZSByYXRoZXIgdGhhbiBwZXIgYmFja2VuZCwgZS5nLiBpbiBYZW5TdG9yZToKPj4+ Pj4+Cj4+Pj4+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92a2JkLzEvMC93aWR0aCA9ICIxOTIw Igo+Pj4+Pj4gL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmtiZC8xLzAvaGVpZ2h0ID0gIjEwODAi Cj4+Pj4+Pgo+Pj4+Pj4gL2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2JkLzAvbXVsdGktdG91Y2gt d2lkdGggPSAiMTkyMCIKPj4+Pj4+IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmtiZC8wL211bHRp LXRvdWNoLWhlaWdodCA9ICIxMDgwIgo+Pj4+Pj4gL2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2Jk LzAvbXVsdGktdG91Y2gtbnVtLWNvbnRhY3RzID0gIjEwIgo+Pj4+Pj4KPj4+Pj4+IC9sb2NhbC9k b21haW4vMS9kZXZpY2UvdmtiZC8xL211bHRpLXRvdWNoLXdpZHRoID0gIjgwMCIKPj4+Pj4+IC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmtiZC8xL211bHRpLXRvdWNoLWhlaWdodCA9ICI2MDAiCj4+ Pj4+PiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMS9tdWx0aS10b3VjaC1udW0tY29udGFj dHMgPSAiMyIKPj4+Pj4+Cj4+Pj4+PiBUaGUgbWFpbiByZWFzb24gZm9yIHN1Y2ggY29uZmlndXJh dGlvbiBpcyB0aGF0IHlvdSBjYW4KPj4+Pj4+IGNvbmZpZ3VyZSBtdWx0aXBsZSBtdCBpbnB1dCBk ZXZpY2VzIGV2ZW4gZm9yIHRoZSBzYW1lIGd1ZXN0Cj4+Pj4+PiB3aXRoIGRpZmZlcmVudCByZXNv bHV0aW9ucyB3aGljaCBtYXkgbm90IG1hdGNoIHRob3NlCj4+Pj4+PiBjb25maWd1cmVkIGZvciBw dHIuCj4+Pj4+PiAoSW4gbXkgdXNlLWNhc2UgSSB1c2UgbmV3IGRpc3BsaWYgcHJvdG9jb2wgWzFd IGluIGNvbmp1bmN0aW9uCj4+Pj4+PiB3aXRoIG10IGlucHV0IGRldmljZXMgYW5kIHRoZSBjb3Jy ZXNwb25kaW5nIGJhY2tlbmQgaXMgbm90Cj4+Pj4+PiBRRU1VJ3MgeGVuZmIpCj4+Pj4+IEkgc2Vl Lgo+Pj4+Pgo+Pj4+Pj4gQXMgdG8gbW9kdWxlIHBhcmFtZXRlcnMsIEkgYWRkZWQgdGhvc2UgdG8g YmUgY29uc2lzdGVudCB3aXRoCj4+Pj4+PiBwdHIgZGV2aWNlLiBEbyB5b3UgdGhpbmsgd2UgY2Fu IGxpdmUgd2l0aG91dCB0aGVtIGFuZAo+Pj4+Pj4gZG8geW91IHdhbnQgbWUgdG8gcmVtb3ZlIHRo ZW0/Cj4+Pj4+IFllcywgSSB0aGluayB3ZSBiZXR0ZXIuIEkgYW0gYWxzbyBjb25mdXNlZCBieSB0 aGUgd2F5IHlvdSBhcmUgaGFuZGxpbmcKPj4+Pj4gdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLiBJdCBs b29rcyB0byBtZSB5b3UgdXBkYXRlIHRoZW0gd2l0aCBkYXRhIHBhc3NlZAo+Pj4+ID5mcm9tIHRo ZSBiYWNrZW5kLCBidXQgbmV2ZXIgdXNlIHRoZSBkYXRhLi4uCj4+Pj4gSSBoYXZlIHJlbW92ZWQg bW9kdWxlIHBhcmFtZXRlcnMgKHRoZSBvbmx5IHVzZSBvZiB0aG9zZQo+Pj4+IHdhcyB0byBiZSBh YmxlIHRvIHNlZSBjb25maWd1cmVkIHdpZHRoIGFuZCBoZWlnaHQgb24KPj4+PiBndWVzdCBzaWRl LCBidXQgdGhpcyBpcyBtaW5vcikKPj4+IGV2dGVzdCB3b3VsZCBzaG93IGl0IHRvIHlvdS4gT3Ig eW91IGNhbiBxdWVyeSBpbnB1dCBkZXZpY2UgeW91cnNlbGYKPj4+IChFVklPQ0dBQlMgaW90Y2wp Lgo+PiB5ZXMsIGlmIGVtYmVkZGVkIHN5c3RlbSAod2hpY2ggaXMgbXkgdGFyZ2V0KSBoYXMgZXZ0 ZXN0Cj4+IGJ1dCBpdCBkZWZpbml0ZWx5IGRvZXMgaGF2ZSBpb2N0bCB0aG91Z2gKPj4+Pj4+Pj4g Kwo+Pj4+Pj4+PiArCQltdG91Y2gtPm5hbWUgPSAiWGVuIFZpcnR1YWwgTXVsdGktdG91Y2giOwo+ Pj4+Pj4+PiArCQltdG91Y2gtPnBoeXMgPSBpbmZvLT5waHlzOwo+Pj4+Pj4+PiArCQltdG91Y2gt PmlkLmJ1c3R5cGUgPSBCVVNfUENJOwo+Pj4+Pj4+PiArCQltdG91Y2gtPmlkLnZlbmRvciA9IDB4 NTg1MzsKPj4+Pj4+Pj4gKwkJbXRvdWNoLT5pZC5wcm9kdWN0ID0gMHhmZmZkOwo+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+ICsJCV9fc2V0X2JpdChFVl9BQlMsIG10b3VjaC0+ZXZiaXQpOwo+Pj4+Pj4+PiAr CQlfX3NldF9iaXQoRVZfS0VZLCBtdG91Y2gtPmV2Yml0KTsKPj4+Pj4+Pj4gKwkJX19zZXRfYml0 KEJUTl9UT1VDSCwgbXRvdWNoLT5rZXliaXQpOwo+Pj4gUGxlYXNlIG1ha2UgaXQKPj4+IAkJaW5w dXRfc2V0X2NhcGFiaWxpdHkobXRvdWNoLCBFVl9LRVksIEJUTl9UT1VDSCk7Cj4+Pgo+Pj4gYW5k IGRyb3AgYWxsIF9fc2V0X2JpdCgpcy4KPj4gZG9uZSwgdGhhbmsgeW91Cj4+Pj4+Pj4+ICsKPj4+ Pj4+Pj4gKwkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfWCwKPj4+Pj4+Pj4gKwkJ CQkgICAgIDAsIHdpZHRoLCAwLCAwKTsKPj4+Pj4+Pj4gKwkJaW5wdXRfc2V0X2Fic19wYXJhbXMo bXRvdWNoLCBBQlNfWSwKPj4+Pj4+Pj4gKwkJCQkgICAgIDAsIGhlaWdodCwgMCwgMCk7Cj4+Pj4+ Pj4+ICsJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX1BSRVNTVVJFLAo+Pj4+Pj4+ PiArCQkJCSAgICAgMCwgMjU1LCAwLCAwKTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCQlpbnB1dF9z ZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19NVF9UT1VDSF9NQUpPUiwKPj4+Pj4+Pj4gKwkJCQkg ICAgIDAsIDI1NSwgMCwgMCk7Cj4+Pj4+Pj4+ICsJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3Vj aCwgQUJTX01UX1BPU0lUSU9OX1gsCj4+Pj4+Pj4+ICsJCQkJICAgICAwLCB3aWR0aCwgMCwgMCk7 Cj4+Pj4+Pj4+ICsJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX01UX1BPU0lUSU9O X1ksCj4+Pj4+Pj4+ICsJCQkJICAgICAwLCBoZWlnaHQsIDAsIDApOwo+Pj4+Pj4+PiArCQlpbnB1 dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19NVF9QUkVTU1VSRSwKPj4+Pj4+Pj4gKwkJCQkg ICAgIDAsIDI1NSwgMCwgMCk7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwkJaW5wdXRfbXRfaW5pdF9z bG90cyhtdG91Y2gsIG51bV9jb250LCAwKTsKPj4+Pj4gV2UgbmVlZCBlcnJvciBoYW5kbGluZyBo ZXJlLgo+Pj4+IGRvbmUKPj4+Pj4gICBBbHNvLCBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIHNldCBJ TlBVVF9NVF8qCj4+Pj4+IGZsYWdzIGhlcmUsIHNvIHRoYXQgdXNlcnNwYWNlIGhhZCBiZXR0ZXIg Y2hhbmNlIG9mIGZpZ3VyaW5nIGhvdyB0bwo+Pj4+PiBoYW5kbGUgdGhlIGRldmljZS4KPj4+PiBk b25lLCBJIHdpbGwgdXNlIElOUFVUX01UX0RJUkVDVCB8IElOUFVUX01UX0RST1BfVU5VU0VECj4+ PiBEb2VzIHRoYXQgbWVhbiB0aGF0IHlvdXIgYmFja2VuZCBkb2VzIG5vdCByZWxpYWJseSByZXBv cnQgcmVsZWFzZSBvZgo+Pj4gY29udGFjdHM/Cj4+IHRoZXJlIGlzIGEgcmluZyBidWZmZXIgYmV0 d2VlbiBob3N0IGFuZCBndWVzdCwKPj4gc28gdGhlcmUgaXMgYWx3YXlzIGEgcG9zc2liaWxpdHkg KHJhdGhlciBzbWFsbCBJIGJlbGlldmUpCj4+IHRoYXQgdGhlIGJ1ZmZlciBvdmVycnVucy4gRG8g eW91IHRoaW5rIEkgbmVlZCBJTlBVVF9NVF9EUk9QX1VOVVNFRCBvcgo+PiB3ZSBjYW4gbGl2ZSB3 aXRob3V0IGl0Pwo+IEFnYWluLCBpdCBkZXBlbmRzIG9uIHlvdXIgYmFja2VuZCBiZWhhdmlvci4g RG8geW91IHJlcG9ydCBhbGwgc2xvdHMKPiByZXBlYXRlZGx5IGZvciBldmVyeSBwYWNrZXQgb3Ig eW91IHJlcG9ydCBvbmx5IGNoYW5nZWQgc2xvdHM/CndlIHJlcG9ydCBldmVudHMgcmVwZWF0ZWRs eSwgc28gSSB0aGluayB3ZSBjYW4gbGl2ZQp3L28gX0RST1BfVU5VU0VECj4gVGhhbmtzLgo+Cj4+ PiBUaGFua3MuCj4+Pgo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJCW10b3VjaF9zaXplW0tQQVJBTV9N VF9YXSA9IHdpZHRoOwo+Pj4+Pj4+PiArCQltdG91Y2hfc2l6ZVtLUEFSQU1fTVRfWV0gPSBoZWln aHQ7Cj4+Pj4+Pj4+ICsJCWluZm8tPm10b3VjaF9jdXJfY29udGFjdF9pZCA9IC0xOwo+Pj4+Pj4+ PiArCj4+Pj4+Pj4+ICsJCXJldCA9IGlucHV0X3JlZ2lzdGVyX2RldmljZShtdG91Y2gpOwo+Pj4+ Pj4+PiArCQlpZiAocmV0KSB7Cj4+Pj4+Pj4+ICsJCQlpbnB1dF9mcmVlX2RldmljZShtdG91Y2gp Owo+Pj4+Pj4+PiArCQkJeGVuYnVzX2Rldl9mYXRhbChpbmZvLT54YmRldiwgcmV0LAo+Pj4+Pj4+ PiArCQkJCQkgImlucHV0X3JlZ2lzdGVyX2RldmljZShtdG91Y2gpIik7Cj4+Pj4+Pj4+ICsJCQln b3RvIGVycm9yOwo+Pj4+Pj4+PiArCQl9Cj4+Pj4+Pj4+ICsJCWluZm8tPm10b3VjaF9jdXJfY29u dGFjdF9pZCA9IC0xOwo+Pj4+Pj4+PiArCQlpbmZvLT5tdG91Y2ggPSBtdG91Y2g7Cj4+Pj4+Pj4+ ICsJfQo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICAgCXJldCA9IHhlbmtiZF9jb25uZWN0X2JhY2tlbmQo ZGV2LCBpbmZvKTsKPj4+Pj4+Pj4gICAJaWYgKHJldCA8IDApCj4+Pj4+Pj4+ICAgCQlnb3RvIGVy cm9yOwo+Pj4+Pj4+PiBAQCAtMjQwLDYgKzM3Niw4IEBAIHN0YXRpYyBpbnQgeGVua2JkX3JlbW92 ZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2KQo+Pj4+Pj4+PiAgIAkJaW5wdXRfdW5yZWdpc3Rl cl9kZXZpY2UoaW5mby0+a2JkKTsKPj4+Pj4+Pj4gICAJaWYgKGluZm8tPnB0cikKPj4+Pj4+Pj4g ICAJCWlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKGluZm8tPnB0cik7Cj4+Pj4+Pj4+ICsJaWYgKGlu Zm8tPm10b3VjaCkKPj4+Pj4+Pj4gKwkJaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2UoaW5mby0+bXRv dWNoKTsKPj4+Pj4+Pj4gICAJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWluZm8tPnBhZ2UpOwo+ Pj4+Pj4+PiAgIAlrZnJlZShpbmZvKTsKPj4+Pj4+Pj4gICAJcmV0dXJuIDA7Cj4+Pj4+Pj4+IC0t IAo+Pj4+Pj4+PiAyLjcuNAo+Pj4+Pj4+Pgo+Pj4+PiBUaGFua3MuCj4+Pj4+Cj4+Pj4gRm9yIHlv dXIgY29udmVuaWVuY2UgSSBhbSBhdHRhY2hpbmcgdGhlIGNoYW5nZXMgSSBhbSBhYm91dAo+Pj4+ IHRvIHB1dCBpbnRvIHYxIG9mIHRoZSBzZXJpZXM6Cj4+Pj4gICAtIHJlbW92ZSB1bmxpa2VseQo+ Pj4+ICAgLSByZW1vdmUgbW9kdWxlIHBhcmFtZXRlcnMKPj4+PiAgIC0gZXJyb3IgaGFuZGxpbmcg Zm9yIGlucHV0X210X2luaXRfc2xvdHMKPj4+PiAgIC0gbGV0IHVzZXJzcGFjZSBiZXR0ZXIgY2hh bmNlIG9mIGZpZ3VyaW5nIGhvdyB0byBoYW5kbGUgdGhlIGRldmljZQo+Pj4+Cj4+Pj4gVGhhbmsg eW91LAo+Pj4+IE9sZWtzYW5kcgo+Pj4+ICBGcm9tIGU3NjUwNmM1NTg0NmUyYmI0Y2NiYWZhNDMw NjQyZTM2ODY0M2U1MWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4+Pj4gRnJvbTogT2xla3Nh bmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+Pj4+ IERhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTQ6NDk6NTggKzAzMDAKPj4+PiBTdWJqZWN0OiBbUEFU Q0hdIEZpeDogcmVtb3ZlIHVubGlrZWx5IEZpeDogcmVtb3ZlIG1vZHVsZSBwYXJhbXRlcnMgRml4 OiBlcnJvcgo+Pj4+ICAgaGFuZGxpbmcgZm9yIGlucHV0X210X2luaXRfc2xvdHMgRml4OiBsZXQg dXNlcnNwYWNlIGJldHRlciBjaGFuY2Ugb2YgZmlndXJpbmcKPj4+PiAgIGhvdyB0byBoYW5kbGUg dGhlIGRldmljZQo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVu a28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+Pj4+IC0tLQo+Pj4+ICAgZHJp dmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jIHwgMjEgKysrKysrKysrKy0tLS0tLS0tLS0t Cj4+Pj4gICAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0p Cj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5j IGIvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jCj4+Pj4gaW5kZXggODI2NmVmOTQ4 YTA2Li4yNzNkNzg2YTE5Y2QgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL3hl bi1rYmRmcm9udC5jCj4+Pj4gKysrIGIvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5j Cj4+Pj4gQEAgLTUxLDEyICs1MSw2IEBAIG1vZHVsZV9wYXJhbV9hcnJheShwdHJfc2l6ZSwgaW50 LCBOVUxMLCAwNDQ0KTsKPj4+PiAgIE1PRFVMRV9QQVJNX0RFU0MocHRyX3NpemUsCj4+Pj4gICAJ IlBvaW50aW5nIGRldmljZSB3aWR0aCwgaGVpZ2h0IGluIHBpeGVscyAoZGVmYXVsdCA4MDAsNjAw KSIpOwo+Pj4+IC1lbnVtIHsgS1BBUkFNX01UX1gsIEtQQVJBTV9NVF9ZLCBLUEFSQU1fTVRfQ05U IH07Cj4+Pj4gLXN0YXRpYyBpbnQgbXRvdWNoX3NpemVbS1BBUkFNX01UX0NOVF0gPSB7IFhFTkZC X1dJRFRILCBYRU5GQl9IRUlHSFQgfTsKPj4+PiAtbW9kdWxlX3BhcmFtX2FycmF5KG10b3VjaF9z aXplLCBpbnQsIE5VTEwsIDA0NDQpOwo+Pj4+IC1NT0RVTEVfUEFSTV9ERVNDKHB0cl9zaXplLAo+ Pj4+IC0JIk11bHRpLXRvdWNoIGRldmljZSB3aWR0aCwgaGVpZ2h0IGluIHBpeGVscyAoZGVmYXVs dCA4MDAsNjAwKSIpOwo+Pj4+IC0KPj4+PiAgIHN0YXRpYyBpbnQgeGVua2JkX3JlbW92ZShzdHJ1 Y3QgeGVuYnVzX2RldmljZSAqKTsKPj4+PiAgIHN0YXRpYyBpbnQgeGVua2JkX2Nvbm5lY3RfYmFj a2VuZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqLCBzdHJ1Y3QgeGVua2JkX2luZm8gKik7Cj4+Pj4g ICBzdGF0aWMgdm9pZCB4ZW5rYmRfZGlzY29ubmVjdF9iYWNrZW5kKHN0cnVjdCB4ZW5rYmRfaW5m byAqKTsKPj4+PiBAQCAtMTE0LDggKzEwOCw4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpbnB1dF9o YW5kbGVyKGludCBycSwgdm9pZCAqZGV2X2lkKQo+Pj4+ICAgCQkJZGV2ID0gaW5mby0+bXRvdWNo Owo+Pj4+ICAgCQkJaWYgKHVubGlrZWx5KCFkZXYpKQo+Pj4+ICAgCQkJCWJyZWFrOwo+Pj4+IC0J CQlpZiAodW5saWtlbHkoZXZlbnQtPm10b3VjaC5jb250YWN0X2lkICE9Cj4+Pj4gLQkJCQkJaW5m by0+bXRvdWNoX2N1cl9jb250YWN0X2lkKSkgewo+Pj4+ICsJCQlpZiAoZXZlbnQtPm10b3VjaC5j b250YWN0X2lkICE9Cj4+Pj4gKwkJCQkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkKSB7Cj4+ Pj4gICAJCQkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkID0KPj4+PiAgIAkJCQkJZXZlbnQt Pm10b3VjaC5jb250YWN0X2lkOwo+Pj4+ICAgCQkJCWlucHV0X210X3Nsb3QoZGV2LCBldmVudC0+ bXRvdWNoLmNvbnRhY3RfaWQpOwo+Pj4+IEBAIC0zMjcsMTAgKzMyMSwxNSBAQCBzdGF0aWMgaW50 IHhlbmtiZF9wcm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAo+Pj4+ICAgCQlpbnB1dF9z ZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19NVF9QUkVTU1VSRSwKPj4+PiAgIAkJCQkgICAgIDAs IDI1NSwgMCwgMCk7Cj4+Pj4gLQkJaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51bV9jb250 LCAwKTsKPj4+PiArCQlyZXQgPSBpbnB1dF9tdF9pbml0X3Nsb3RzKG10b3VjaCwgbnVtX2NvbnQs Cj4+Pj4gKwkJCQlJTlBVVF9NVF9ESVJFQ1QgfCBJTlBVVF9NVF9EUk9QX1VOVVNFRCk7Cj4+Pj4g KwkJaWYgKHJldCkgewo+Pj4+ICsJCQlpbnB1dF9mcmVlX2RldmljZShtdG91Y2gpOwo+Pj4+ICsJ CQl4ZW5idXNfZGV2X2ZhdGFsKGluZm8tPnhiZGV2LCByZXQsCj4+Pj4gKwkJCQkJICJpbnB1dF9t dF9pbml0X3Nsb3RzIik7Cj4+Pj4gKwkJCWdvdG8gZXJyb3I7Cj4+Pj4gKwkJfQo+Pj4+IC0JCW10 b3VjaF9zaXplW0tQQVJBTV9NVF9YXSA9IHdpZHRoOwo+Pj4+IC0JCW10b3VjaF9zaXplW0tQQVJB TV9NVF9ZXSA9IGhlaWdodDsKPj4+PiAgIAkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkID0g LTE7Cj4+Pj4gICAJCXJldCA9IGlucHV0X3JlZ2lzdGVyX2RldmljZShtdG91Y2gpOwo+Pj4+IC0t IAo+Pj4+IDIuNy40Cj4+Pj4KPj4gVGhhbmsgeW91LAo+PiBPbGVrc2FuZHIKRG1pdHJ5LCB0aGFu ayB5b3UgZm9yIGNvbW1lbnRzClRoZSBib3R0b20gbGluZSBJIHNlZSBpczoKICAtIG5vIHN1cHBv cnQgZm9yIFBFTiB0b29sIGF0IHRoZSBtb21lbnQKICAtIG51bSBjb250YWN0cyA9PSAxIGlzIE9L CiAgLSBJIHdpbGwgbm90IHVzZSBJTlBVVF9NVF9EUk9QX1VOVVNFRAoKSWYgdGhlIGFib3ZlIGlz IG9rIHRvIHlvdSwgdGhlbiBJIHdpbGwgc2VuZCBhbm90aGVyIHZlcnNpb24gb2YgdGhlCnNlcmll cyAoQlRXLCBjYW4gSSB1c2UgeW91ciBSQiBmb3IgdGhlIGZpcnN0IHBhdGNoIHdoaWNoCnJlbW92 ZXMgaGFyZC1jb2Rlcz8pCgpUaGFuayB5b3UsCk9sZWtzYW5kcgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==