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: Fri, 21 Apr 2017 09:40:36 +0300 Message-ID: References: <1492083484-31786-1-git-send-email-andr2000@gmail.com> <1492083484-31786-3-git-send-email-andr2000@gmail.com> <20170421021018.GB23279@dtor-ws> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d1SFE-0007d1-JV for xen-devel@lists.xenproject.org; Fri, 21 Apr 2017 06:40:40 +0000 Received: by mail-wm0-f67.google.com with SMTP id z129so2994184wmb.1 for ; Thu, 20 Apr 2017 23:40:39 -0700 (PDT) In-Reply-To: <20170421021018.GB23279@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 SGksIERtaXRyeSEKCk9uIDA0LzIxLzIwMTcgMDU6MTAgQU0sIERtaXRyeSBUb3Jva2hvdiB3cm90 ZToKPiBIaSBPbGVrc2FuZHIsCj4KPiBPbiBUaHUsIEFwciAxMywgMjAxNyBhdCAwMjozODowNFBN ICswMzAwLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4gRnJvbTogT2xla3NhbmRy IEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+Pgo+PiBF eHRlbmQgeGVuX2tiZGZyb250IHRvIHByb3ZpZGUgbXVsdGktdG91Y2ggc3VwcG9ydAo+PiB0byB1 bnByaXZpbGVnZWQgZG9tYWlucy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+PiAtLS0KPj4gICBk cml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMgfCAxNDIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KPj4gICAxIGZpbGUgY2hhbmdlZCwgMTQwIGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21pc2Mv eGVuLWtiZGZyb250LmMgYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPj4gaW5k ZXggMDFjMjdiNGMzMjg4Li5lNWQwNjRhYWEyMzcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvaW5w dXQvbWlzYy94ZW4ta2JkZnJvbnQuYwo+PiArKysgYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWti ZGZyb250LmMKPj4gQEAgLTE3LDYgKzE3LDcgQEAKPj4gICAjaW5jbHVkZSA8bGludXgvZXJybm8u aD4KPj4gICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L2lu cHV0Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvaW5wdXQvbXQuaD4KPj4gICAjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgo+PiAgIAo+PiAgICNpbmNsdWRlIDxhc20veGVuL2h5cGVydmlzb3IuaD4KPj4g QEAgLTM0LDExICszNSwxNCBAQAo+PiAgIHN0cnVjdCB4ZW5rYmRfaW5mbyB7Cj4+ICAgCXN0cnVj dCBpbnB1dF9kZXYgKmtiZDsKPj4gICAJc3RydWN0IGlucHV0X2RldiAqcHRyOwo+PiArCXN0cnVj dCBpbnB1dF9kZXYgKm10b3VjaDsKPj4gICAJc3RydWN0IHhlbmtiZF9wYWdlICpwYWdlOwo+PiAg IAlpbnQgZ3JlZjsKPj4gICAJaW50IGlycTsKPj4gICAJc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhi ZGV2Owo+PiAgIAljaGFyIHBoeXNbMzJdOwo+PiArCS8qIGN1cnJlbnQgTVQgc2xvdC9jb250YWN0 IElEIHdlIGFyZSBpbmplY3RpbmcgZXZlbnRzIGluICovCj4+ICsJaW50IG10b3VjaF9jdXJfY29u dGFjdF9pZDsKPj4gICB9Owo+PiAgIAo+PiAgIGVudW0geyBLUEFSQU1fWCwgS1BBUkFNX1ksIEtQ QVJBTV9DTlQgfTsKPj4gQEAgLTQ3LDYgKzUxLDEyIEBAIG1vZHVsZV9wYXJhbV9hcnJheShwdHJf c2l6ZSwgaW50LCBOVUxMLCAwNDQ0KTsKPj4gICBNT0RVTEVfUEFSTV9ERVNDKHB0cl9zaXplLAo+ PiAgIAkiUG9pbnRpbmcgZGV2aWNlIHdpZHRoLCBoZWlnaHQgaW4gcGl4ZWxzIChkZWZhdWx0IDgw MCw2MDApIik7Cj4+ICAgCj4+ICtlbnVtIHsgS1BBUkFNX01UX1gsIEtQQVJBTV9NVF9ZLCBLUEFS QU1fTVRfQ05UIH07Cj4+ICtzdGF0aWMgaW50IG10b3VjaF9zaXplW0tQQVJBTV9NVF9DTlRdID0g eyBYRU5GQl9XSURUSCwgWEVORkJfSEVJR0hUIH07Cj4+ICttb2R1bGVfcGFyYW1fYXJyYXkobXRv dWNoX3NpemUsIGludCwgTlVMTCwgMDQ0NCk7Cj4+ICtNT0RVTEVfUEFSTV9ERVNDKHB0cl9zaXpl LAo+PiArCSJNdWx0aS10b3VjaCBkZXZpY2Ugd2lkdGgsIGhlaWdodCBpbiBwaXhlbHMgKGRlZmF1 bHQgODAwLDYwMCkiKTsKPj4gKwo+IFdoeSBkbyB5b3UgbmVlZCBzZXBhcmF0ZSBtb2R1bGUgcGFy YW1ldGVycyBmb3IgbXVsdGktdG91Y2ggZGV2aWNlPwpwbGVhc2Ugc2VlIGJlbG93Cj4KPj4gICBz dGF0aWMgaW50IHhlbmtiZF9yZW1vdmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKik7Cj4+ICAgc3Rh dGljIGludCB4ZW5rYmRfY29ubmVjdF9iYWNrZW5kKHN0cnVjdCB4ZW5idXNfZGV2aWNlICosIHN0 cnVjdCB4ZW5rYmRfaW5mbyAqKTsKPj4gICBzdGF0aWMgdm9pZCB4ZW5rYmRfZGlzY29ubmVjdF9i YWNrZW5kKHN0cnVjdCB4ZW5rYmRfaW5mbyAqKTsKPj4gQEAgLTEwMCw2ICsxMTAsNjAgQEAgc3Rh dGljIGlycXJldHVybl90IGlucHV0X2hhbmRsZXIoaW50IHJxLCB2b2lkICpkZXZfaWQpCj4+ICAg CQkJCWlucHV0X3JlcG9ydF9yZWwoZGV2LCBSRUxfV0hFRUwsCj4+ICAgCQkJCQkJIC1ldmVudC0+ cG9zLnJlbF96KTsKPj4gICAJCQlicmVhazsKPj4gKwkJY2FzZSBYRU5LQkRfVFlQRV9NVE9VQ0g6 Cj4+ICsJCQlkZXYgPSBpbmZvLT5tdG91Y2g7Cj4+ICsJCQlpZiAodW5saWtlbHkoIWRldikpCj4+ ICsJCQkJYnJlYWs7Cj4+ICsJCQlpZiAodW5saWtlbHkoZXZlbnQtPm10b3VjaC5jb250YWN0X2lk ICE9Cj4+ICsJCQkJCWluZm8tPm10b3VjaF9jdXJfY29udGFjdF9pZCkpIHsKPiBXaHkgaXMgdGhp cyB1bmxpa2VseT8gRG9lcyBjb250YWN0IElEIGNoYW5nZXMgb25jZSBpbiAxMDAwIHBhY2tldHMg b3IKPiBldmVuIGxlc3M/Ck11IGFzc3VtcHRpb24gd2FzIHRoYXQgcmVnYXJkbGVzcyBvZiB0aGUg ZmFjdCB0aGF0IHdlIGFyZSBtdWx0aS10b3VjaApkZXZpY2Ugc3RpbGwgc2luZ2xlIHRvdWNoZXMg d2lsbCBjb21lIGluIG1vcmUgZnJlcXVlbnRseQpCdXQgSSBjYW4gcmVtb3ZlICp1bmxpa2VseSog aWYgbXkgYXNzdW1wdGlvbiBpcyBub3QgY29ycmVjdAo+PiArCQkJCWluZm8tPm10b3VjaF9jdXJf Y29udGFjdF9pZCA9Cj4+ICsJCQkJCWV2ZW50LT5tdG91Y2guY29udGFjdF9pZDsKPj4gKwkJCQlp bnB1dF9tdF9zbG90KGRldiwgZXZlbnQtPm10b3VjaC5jb250YWN0X2lkKTsKPj4gKwkJCX0KPj4g KwkJCXN3aXRjaCAoZXZlbnQtPm10b3VjaC5ldmVudF90eXBlKSB7Cj4+ICsJCQljYXNlIFhFTktC RF9NVF9FVl9ET1dOOgo+PiArCQkJCWlucHV0X210X3JlcG9ydF9zbG90X3N0YXRlKGRldiwgTVRf VE9PTF9GSU5HRVIsCj4+ICsJCQkJCQkJICAgdHJ1ZSk7Cj4+ICsJCQkJaW5wdXRfZXZlbnQoZGV2 LCBFVl9BQlMsIEFCU19NVF9QT1NJVElPTl9YLAo+PiArCQkJCQkgICAgZXZlbnQtPm10b3VjaC51 LnBvcy5hYnNfeCk7Cj4+ICsJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19NVF9QT1NJ VElPTl9ZLAo+PiArCQkJCQkgICAgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeSk7Cj4+ICsJCQkJ aW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19YLAo+PiArCQkJCQkgICAgZXZlbnQtPm10b3Vj aC51LnBvcy5hYnNfeCk7Cj4+ICsJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19ZLAo+ PiArCQkJCQkgICAgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeSk7Cj4+ICsJCQkJYnJlYWs7Cj4+ ICsJCQljYXNlIFhFTktCRF9NVF9FVl9VUDoKPj4gKwkJCQlpbnB1dF9tdF9yZXBvcnRfc2xvdF9z dGF0ZShkZXYsIE1UX1RPT0xfRklOR0VSLAo+PiArCQkJCQkJCSAgIGZhbHNlKTsKPj4gKwkJCQli cmVhazsKPj4gKwkJCWNhc2UgWEVOS0JEX01UX0VWX01PVElPTjoKPj4gKwkJCQlpbnB1dF9ldmVu dChkZXYsIEVWX0FCUywgQUJTX01UX1BPU0lUSU9OX1gsCj4+ICsJCQkJCSAgICBldmVudC0+bXRv dWNoLnUucG9zLmFic194KTsKPj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01U X1BPU0lUSU9OX1ksCj4+ICsJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPj4g KwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1gsCj4+ICsJCQkJCSAgICBldmVudC0+ bXRvdWNoLnUucG9zLmFic194KTsKPj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJT X1ksCj4+ICsJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPj4gKwkJCQlicmVh azsKPj4gKwkJCWNhc2UgWEVOS0JEX01UX0VWX1NZTjoKPj4gKwkJCQlpbnB1dF9tdF9zeW5jX2Zy YW1lKGRldik7Cj4+ICsJCQkJYnJlYWs7Cj4+ICsJCQljYXNlIFhFTktCRF9NVF9FVl9TSEFQRToK Pj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01UX1RPVUNIX01BSk9SLAo+PiAr CQkJCQkgICAgZXZlbnQtPm10b3VjaC51LnNoYXBlLm1ham9yKTsKPj4gKwkJCQlpbnB1dF9ldmVu dChkZXYsIEVWX0FCUywgQUJTX01UX1RPVUNIX01JTk9SLAo+PiArCQkJCQkgICAgZXZlbnQtPm10 b3VjaC51LnNoYXBlLm1pbm9yKTsKPj4gKwkJCQlicmVhazsKPj4gKwkJCWNhc2UgWEVOS0JEX01U X0VWX09SSUVOVDoKPj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01UX09SSUVO VEFUSU9OLAo+PiArCQkJCQkgICAgZXZlbnQtPm10b3VjaC51Lm9yaWVudGF0aW9uKTsKPj4gKwkJ CQlicmVhazsKPj4gKwkJCX0KPj4gKwkJCS8qIG9ubHkgcmVwb3J0IHN5biB3aGVuIHJlcXVlc3Rl ZCAqLwo+PiArCQkJaWYgKGV2ZW50LT5tdG91Y2guZXZlbnRfdHlwZSAhPSBYRU5LQkRfTVRfRVZf U1lOKQo+PiArCQkJCWRldiA9IE5VTEw7Cj4+ICAgCQl9Cj4+ICAgCQlpZiAoZGV2KQo+PiAgIAkJ CWlucHV0X3N5bmMoZGV2KTsKPj4gQEAgLTExNSw5ICsxNzksOSBAQCBzdGF0aWMgaW50IHhlbmti ZF9wcm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAo+PiAgIAkJCQkgIGNvbnN0IHN0cnVj dCB4ZW5idXNfZGV2aWNlX2lkICppZCkKPj4gICB7Cj4+ICAgCWludCByZXQsIGk7Cj4+IC0JdW5z aWduZWQgaW50IGFiczsKPj4gKwl1bnNpZ25lZCBpbnQgYWJzLCB0b3VjaDsKPj4gICAJc3RydWN0 IHhlbmtiZF9pbmZvICppbmZvOwo+PiAtCXN0cnVjdCBpbnB1dF9kZXYgKmtiZCwgKnB0cjsKPj4g KwlzdHJ1Y3QgaW5wdXRfZGV2ICprYmQsICpwdHIsICptdG91Y2g7Cj4+ICAgCj4+ICAgCWluZm8g PSBremFsbG9jKHNpemVvZigqaW5mbyksIEdGUF9LRVJORUwpOwo+PiAgIAlpZiAoIWluZm8pIHsK Pj4gQEAgLTE1Miw2ICsyMTYsMTcgQEAgc3RhdGljIGludCB4ZW5rYmRfcHJvYmUoc3RydWN0IHhl bmJ1c19kZXZpY2UgKmRldiwKPj4gICAJCX0KPj4gICAJfQo+PiAgIAo+PiArCXRvdWNoID0geGVu YnVzX3JlYWRfdW5zaWduZWQoZGV2LT5ub2RlbmFtZSwKPj4gKwkJCQkgICAgIFhFTktCRF9GSUVM RF9GRUFUX01UT1VDSCwgMCk7Cj4+ICsJaWYgKHRvdWNoKSB7Cj4+ICsJCXJldCA9IHhlbmJ1c193 cml0ZShYQlRfTklMLCBkZXYtPm5vZGVuYW1lLAo+PiArCQkJCSAgIFhFTktCRF9GSUVMRF9SRVFf TVRPVUNILCAiMSIpOwo+PiArCQlpZiAocmV0KSB7Cj4+ICsJCQlwcl93YXJuaW5nKCJ4ZW5rYmQ6 IGNhbid0IHJlcXVlc3QgbXVsdGktdG91Y2giKTsKPj4gKwkJCXRvdWNoID0gMDsKPj4gKwkJfQo+ PiArCX0KPj4gKwo+PiAgIAkvKiBrZXlib2FyZCAqLwo+PiAgIAlrYmQgPSBpbnB1dF9hbGxvY2F0 ZV9kZXZpY2UoKTsKPj4gICAJaWYgKCFrYmQpCj4+IEBAIC0yMDgsNiArMjgzLDY3IEBAIHN0YXRp YyBpbnQgeGVua2JkX3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCj4+ICAgCX0KPj4g ICAJaW5mby0+cHRyID0gcHRyOwo+PiAgIAo+PiArCS8qIG11bHRpLXRvdWNoIGRldmljZSAqLwo+ PiArCWlmICh0b3VjaCkgewo+PiArCQlpbnQgbnVtX2NvbnQsIHdpZHRoLCBoZWlnaHQ7Cj4+ICsK Pj4gKwkJbXRvdWNoID0gaW5wdXRfYWxsb2NhdGVfZGV2aWNlKCk7Cj4+ICsJCWlmICghbXRvdWNo KQo+PiArCQkJZ290byBlcnJvcl9ub21lbTsKPj4gKwo+PiArCQludW1fY29udCA9IHhlbmJ1c19y ZWFkX3Vuc2lnbmVkKGluZm8tPnhiZGV2LT5ub2RlbmFtZSwKPj4gKwkJCQkJCVhFTktCRF9GSUVM RF9NVF9OVU1fQ09OVEFDVFMsCj4+ICsJCQkJCQkxKTsKPj4gKwkJd2lkdGggPSB4ZW5idXNfcmVh ZF91bnNpZ25lZChpbmZvLT54YmRldi0+bm9kZW5hbWUsCj4+ICsJCQkJCSAgICAgWEVOS0JEX0ZJ RUxEX01UX1dJRFRILAo+PiArCQkJCQkgICAgIFhFTkZCX1dJRFRIKTsKPj4gKwkJaGVpZ2h0ID0g eGVuYnVzX3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVuYW1lLAo+PiArCQkJCQkgICAg ICBYRU5LQkRfRklFTERfTVRfSEVJR0hULAo+PiArCQkJCQkgICAgICBYRU5GQl9IRUlHSFQpOwo+ IEN1cmlvdXMgd2h5IHlvdSBuZWVkIHNlcGFyYXRlIHBhcmFtZXRlcnMgaGVyZSB0b28uLi4KVGhp cyBpcyBiZWNhdXNlIG10IHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCBmcm9tIHB0cgppbiBhIHdh eSB0aGF0IHRoZXkgYXJlIGNvbmZpZ3VyYWJsZSBwZXIgZnJvbnQgZHJpdmVyJ3MKaW5zdGFuY2Ug cmF0aGVyIHRoYW4gcGVyIGJhY2tlbmQsIGUuZy4gaW4gWGVuU3RvcmU6CgovbG9jYWwvZG9tYWlu LzAvYmFja2VuZC92a2JkLzEvMC93aWR0aCA9ICIxOTIwIgovbG9jYWwvZG9tYWluLzAvYmFja2Vu ZC92a2JkLzEvMC9oZWlnaHQgPSAiMTA4MCIKCi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmtiZC8w L211bHRpLXRvdWNoLXdpZHRoID0gIjE5MjAiCi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmtiZC8w L211bHRpLXRvdWNoLWhlaWdodCA9ICIxMDgwIgovbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQv MC9tdWx0aS10b3VjaC1udW0tY29udGFjdHMgPSAiMTAiCgovbG9jYWwvZG9tYWluLzEvZGV2aWNl L3ZrYmQvMS9tdWx0aS10b3VjaC13aWR0aCA9ICI4MDAiCi9sb2NhbC9kb21haW4vMS9kZXZpY2Uv dmtiZC8xL211bHRpLXRvdWNoLWhlaWdodCA9ICI2MDAiCi9sb2NhbC9kb21haW4vMS9kZXZpY2Uv dmtiZC8xL211bHRpLXRvdWNoLW51bS1jb250YWN0cyA9ICIzIgoKVGhlIG1haW4gcmVhc29uIGZv ciBzdWNoIGNvbmZpZ3VyYXRpb24gaXMgdGhhdCB5b3UgY2FuCmNvbmZpZ3VyZSBtdWx0aXBsZSBt dCBpbnB1dCBkZXZpY2VzIGV2ZW4gZm9yIHRoZSBzYW1lIGd1ZXN0CndpdGggZGlmZmVyZW50IHJl c29sdXRpb25zIHdoaWNoIG1heSBub3QgbWF0Y2ggdGhvc2UKY29uZmlndXJlZCBmb3IgcHRyLgoo SW4gbXkgdXNlLWNhc2UgSSB1c2UgbmV3IGRpc3BsaWYgcHJvdG9jb2wgWzFdIGluIGNvbmp1bmN0 aW9uCndpdGggbXQgaW5wdXQgZGV2aWNlcyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYmFja2VuZCBp cyBub3QKUUVNVSdzIHhlbmZiKQoKQXMgdG8gbW9kdWxlIHBhcmFtZXRlcnMsIEkgYWRkZWQgdGhv c2UgdG8gYmUgY29uc2lzdGVudCB3aXRoCnB0ciBkZXZpY2UuIERvIHlvdSB0aGluayB3ZSBjYW4g bGl2ZSB3aXRob3V0IHRoZW0gYW5kCmRvIHlvdSB3YW50IG1lIHRvIHJlbW92ZSB0aGVtPwo+PiAr Cj4+ICsJCW10b3VjaC0+bmFtZSA9ICJYZW4gVmlydHVhbCBNdWx0aS10b3VjaCI7Cj4+ICsJCW10 b3VjaC0+cGh5cyA9IGluZm8tPnBoeXM7Cj4+ICsJCW10b3VjaC0+aWQuYnVzdHlwZSA9IEJVU19Q Q0k7Cj4+ICsJCW10b3VjaC0+aWQudmVuZG9yID0gMHg1ODUzOwo+PiArCQltdG91Y2gtPmlkLnBy b2R1Y3QgPSAweGZmZmQ7Cj4+ICsKPj4gKwkJX19zZXRfYml0KEVWX0FCUywgbXRvdWNoLT5ldmJp dCk7Cj4+ICsJCV9fc2V0X2JpdChFVl9LRVksIG10b3VjaC0+ZXZiaXQpOwo+PiArCQlfX3NldF9i aXQoQlROX1RPVUNILCBtdG91Y2gtPmtleWJpdCk7Cj4+ICsKPj4gKwkJaW5wdXRfc2V0X2Fic19w YXJhbXMobXRvdWNoLCBBQlNfWCwKPj4gKwkJCQkgICAgIDAsIHdpZHRoLCAwLCAwKTsKPj4gKwkJ aW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfWSwKPj4gKwkJCQkgICAgIDAsIGhlaWdo dCwgMCwgMCk7Cj4+ICsJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX1BSRVNTVVJF LAo+PiArCQkJCSAgICAgMCwgMjU1LCAwLCAwKTsKPj4gKwo+PiArCQlpbnB1dF9zZXRfYWJzX3Bh cmFtcyhtdG91Y2gsIEFCU19NVF9UT1VDSF9NQUpPUiwKPj4gKwkJCQkgICAgIDAsIDI1NSwgMCwg MCk7Cj4+ICsJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX01UX1BPU0lUSU9OX1gs Cj4+ICsJCQkJICAgICAwLCB3aWR0aCwgMCwgMCk7Cj4+ICsJCWlucHV0X3NldF9hYnNfcGFyYW1z KG10b3VjaCwgQUJTX01UX1BPU0lUSU9OX1ksCj4+ICsJCQkJICAgICAwLCBoZWlnaHQsIDAsIDAp Owo+PiArCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19NVF9QUkVTU1VSRSwKPj4g KwkJCQkgICAgIDAsIDI1NSwgMCwgMCk7Cj4+ICsKPj4gKwkJaW5wdXRfbXRfaW5pdF9zbG90cyht dG91Y2gsIG51bV9jb250LCAwKTsKPj4gKwo+PiArCQltdG91Y2hfc2l6ZVtLUEFSQU1fTVRfWF0g PSB3aWR0aDsKPj4gKwkJbXRvdWNoX3NpemVbS1BBUkFNX01UX1ldID0gaGVpZ2h0Owo+PiArCQlp bmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPSAtMTsKPj4gKwo+PiArCQlyZXQgPSBpbnB1dF9y ZWdpc3Rlcl9kZXZpY2UobXRvdWNoKTsKPj4gKwkJaWYgKHJldCkgewo+PiArCQkJaW5wdXRfZnJl ZV9kZXZpY2UobXRvdWNoKTsKPj4gKwkJCXhlbmJ1c19kZXZfZmF0YWwoaW5mby0+eGJkZXYsIHJl dCwKPj4gKwkJCQkJICJpbnB1dF9yZWdpc3Rlcl9kZXZpY2UobXRvdWNoKSIpOwo+PiArCQkJZ290 byBlcnJvcjsKPj4gKwkJfQo+PiArCQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPSAtMTsK Pj4gKwkJaW5mby0+bXRvdWNoID0gbXRvdWNoOwo+PiArCX0KPj4gKwo+PiAgIAlyZXQgPSB4ZW5r YmRfY29ubmVjdF9iYWNrZW5kKGRldiwgaW5mbyk7Cj4+ICAgCWlmIChyZXQgPCAwKQo+PiAgIAkJ Z290byBlcnJvcjsKPj4gQEAgLTI0MCw2ICszNzYsOCBAQCBzdGF0aWMgaW50IHhlbmtiZF9yZW1v dmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldikKPj4gICAJCWlucHV0X3VucmVnaXN0ZXJfZGV2 aWNlKGluZm8tPmtiZCk7Cj4+ICAgCWlmIChpbmZvLT5wdHIpCj4+ICAgCQlpbnB1dF91bnJlZ2lz dGVyX2RldmljZShpbmZvLT5wdHIpOwo+PiArCWlmIChpbmZvLT5tdG91Y2gpCj4+ICsJCWlucHV0 X3VucmVnaXN0ZXJfZGV2aWNlKGluZm8tPm10b3VjaCk7Cj4+ICAgCWZyZWVfcGFnZSgodW5zaWdu ZWQgbG9uZylpbmZvLT5wYWdlKTsKPj4gICAJa2ZyZWUoaW5mbyk7Cj4+ICAgCXJldHVybiAwOwo+ PiAtLSAKPj4gMi43LjQKPj4KPiBUaGFua3MuClRoYW5rIHlvdSwKT2xla3NhbmRyClsxXSAKaHR0 cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQveGVuL3RpcC5naXQv Y29tbWl0Lz9oPWZvci1saW51cy00LjEyJmlkPWUyN2M1MzNkYzRkMDMzODI2NmNjYjZkYWI0Mjgx NTBkNGQ2MjllNmEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBz Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK