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: Mon, 22 May 2017 16:25:09 +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> <8a43bbdf-f843-2c4d-e7b7-0cddb2e7fd7e@gmail.com> <8d522e12-8a1b-1eb4-981c-9bb1042e9703@gmail.com> 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 1dCnKj-0001oh-G9 for xen-devel@lists.xenproject.org; Mon, 22 May 2017 13:25:13 +0000 Received: by mail-wm0-f68.google.com with SMTP id d127so33225711wmf.1 for ; Mon, 22 May 2017 06:25:11 -0700 (PDT) In-Reply-To: <8d522e12-8a1b-1eb4-981c-9bb1042e9703@gmail.com> 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, 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 SGksIERtaXRyeSEKCkl0J3MgYmVlbiBxdWl0ZSBhIHdoaWxlIG5vdywgSSdtIGp1c3Qgd29uZGVy aW5nIGlmCnlvdSBoYWQgYSBjaGFuY2UgdG8gbG9vayBhdCB0aGUgcGF0Y2g/CgpUaGFuayB5b3Us Ck9sZWtzYW5kcgoKT24gMDUvMTIvMjAxNyAwNDo0NCBQTSwgT2xla3NhbmRyIEFuZHJ1c2hjaGVu a28gd3JvdGU6Cj4gZ2VudGxlIHJlbWluZGVyCj4KPgo+IE9uIDA1LzA1LzIwMTcgMDc6NDUgQU0s IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+PiBIaSwgRG1pdHJ5IQo+Pgo+PiBPbiAw NC8yMS8yMDE3IDA5OjQwIEFNLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+IEhp LCBEbWl0cnkhCj4+Pgo+Pj4gT24gMDQvMjEvMjAxNyAwNToxMCBBTSwgRG1pdHJ5IFRvcm9raG92 IHdyb3RlOgo+Pj4+IEhpIE9sZWtzYW5kciwKPj4+Pgo+Pj4+IE9uIFRodSwgQXByIDEzLCAyMDE3 IGF0IDAyOjM4OjA0UE0gKzAzMDAsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIAo+Pj4+IHdyb3Rl Ogo+Pj4+PiBGcm9tOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hj aGVua29AZXBhbS5jb20+Cj4+Pj4+Cj4+Pj4+IEV4dGVuZCB4ZW5fa2JkZnJvbnQgdG8gcHJvdmlk ZSBtdWx0aS10b3VjaCBzdXBwb3J0Cj4+Pj4+IHRvIHVucHJpdmlsZWdlZCBkb21haW5zLgo+Pj4+ Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyAKPj4+Pj4gPG9s ZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+Pj4+PiAtLS0KPj4+Pj4gICBkcml2ZXJz L2lucHV0L21pc2MveGVuLWtiZGZyb250LmMgfCAxNDIgCj4+Pj4+ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCj4+Pj4+ICAgMSBmaWxlIGNoYW5nZWQsIDE0MCBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQo+Pj4+Pgo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9p bnB1dC9taXNjL3hlbi1rYmRmcm9udC5jIAo+Pj4+PiBiL2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4t a2JkZnJvbnQuYwo+Pj4+PiBpbmRleCAwMWMyN2I0YzMyODguLmU1ZDA2NGFhYTIzNyAxMDA2NDQK Pj4+Pj4gLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jCj4+Pj4+ICsrKyBi L2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQuYwo+Pj4+PiBAQCAtMTcsNiArMTcsNyBA QAo+Pj4+PiAgICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgo+Pj4+PiAgICNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KPj4+Pj4gICAjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KPj4+Pj4gKyNpbmNs dWRlIDxsaW51eC9pbnB1dC9tdC5oPgo+Pj4+PiAgICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+ Pj4+ICAgICAjaW5jbHVkZSA8YXNtL3hlbi9oeXBlcnZpc29yLmg+Cj4+Pj4+IEBAIC0zNCwxMSAr MzUsMTQgQEAKPj4+Pj4gICBzdHJ1Y3QgeGVua2JkX2luZm8gewo+Pj4+PiAgICAgICBzdHJ1Y3Qg aW5wdXRfZGV2ICprYmQ7Cj4+Pj4+ICAgICAgIHN0cnVjdCBpbnB1dF9kZXYgKnB0cjsKPj4+Pj4g KyAgICBzdHJ1Y3QgaW5wdXRfZGV2ICptdG91Y2g7Cj4+Pj4+ICAgICAgIHN0cnVjdCB4ZW5rYmRf cGFnZSAqcGFnZTsKPj4+Pj4gICAgICAgaW50IGdyZWY7Cj4+Pj4+ICAgICAgIGludCBpcnE7Cj4+ Pj4+ICAgICAgIHN0cnVjdCB4ZW5idXNfZGV2aWNlICp4YmRldjsKPj4+Pj4gICAgICAgY2hhciBw aHlzWzMyXTsKPj4+Pj4gKyAgICAvKiBjdXJyZW50IE1UIHNsb3QvY29udGFjdCBJRCB3ZSBhcmUg aW5qZWN0aW5nIGV2ZW50cyBpbiAqLwo+Pj4+PiArICAgIGludCBtdG91Y2hfY3VyX2NvbnRhY3Rf aWQ7Cj4+Pj4+ICAgfTsKPj4+Pj4gICAgIGVudW0geyBLUEFSQU1fWCwgS1BBUkFNX1ksIEtQQVJB TV9DTlQgfTsKPj4+Pj4gQEAgLTQ3LDYgKzUxLDEyIEBAIG1vZHVsZV9wYXJhbV9hcnJheShwdHJf c2l6ZSwgaW50LCBOVUxMLCAwNDQ0KTsKPj4+Pj4gICBNT0RVTEVfUEFSTV9ERVNDKHB0cl9zaXpl LAo+Pj4+PiAgICAgICAiUG9pbnRpbmcgZGV2aWNlIHdpZHRoLCBoZWlnaHQgaW4gcGl4ZWxzIChk ZWZhdWx0IDgwMCw2MDApIik7Cj4+Pj4+ICAgK2VudW0geyBLUEFSQU1fTVRfWCwgS1BBUkFNX01U X1ksIEtQQVJBTV9NVF9DTlQgfTsKPj4+Pj4gK3N0YXRpYyBpbnQgbXRvdWNoX3NpemVbS1BBUkFN X01UX0NOVF0gPSB7IFhFTkZCX1dJRFRILCAKPj4+Pj4gWEVORkJfSEVJR0hUIH07Cj4+Pj4+ICtt b2R1bGVfcGFyYW1fYXJyYXkobXRvdWNoX3NpemUsIGludCwgTlVMTCwgMDQ0NCk7Cj4+Pj4+ICtN T0RVTEVfUEFSTV9ERVNDKHB0cl9zaXplLAo+Pj4+PiArICAgICJNdWx0aS10b3VjaCBkZXZpY2Ug d2lkdGgsIGhlaWdodCBpbiBwaXhlbHMgKGRlZmF1bHQgODAwLDYwMCkiKTsKPj4+Pj4gKwo+Pj4+ IFdoeSBkbyB5b3UgbmVlZCBzZXBhcmF0ZSBtb2R1bGUgcGFyYW1ldGVycyBmb3IgbXVsdGktdG91 Y2ggZGV2aWNlPwo+Pj4gcGxlYXNlIHNlZSBiZWxvdwo+Pj4+Cj4+Pj4+ICAgc3RhdGljIGludCB4 ZW5rYmRfcmVtb3ZlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICopOwo+Pj4+PiAgIHN0YXRpYyBpbnQg eGVua2JkX2Nvbm5lY3RfYmFja2VuZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqLCBzdHJ1Y3QgCj4+ Pj4+IHhlbmtiZF9pbmZvICopOwo+Pj4+PiAgIHN0YXRpYyB2b2lkIHhlbmtiZF9kaXNjb25uZWN0 X2JhY2tlbmQoc3RydWN0IHhlbmtiZF9pbmZvICopOwo+Pj4+PiBAQCAtMTAwLDYgKzExMCw2MCBA QCBzdGF0aWMgaXJxcmV0dXJuX3QgaW5wdXRfaGFuZGxlcihpbnQgcnEsIHZvaWQgCj4+Pj4+ICpk ZXZfaWQpCj4+Pj4+ICAgICAgICAgICAgICAgICAgIGlucHV0X3JlcG9ydF9yZWwoZGV2LCBSRUxf V0hFRUwsCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1ldmVudC0+cG9zLnJlbF96 KTsKPj4+Pj4gICAgICAgICAgICAgICBicmVhazsKPj4+Pj4gKyAgICAgICAgY2FzZSBYRU5LQkRf VFlQRV9NVE9VQ0g6Cj4+Pj4+ICsgICAgICAgICAgICBkZXYgPSBpbmZvLT5tdG91Y2g7Cj4+Pj4+ ICsgICAgICAgICAgICBpZiAodW5saWtlbHkoIWRldikpCj4+Pj4+ICsgICAgICAgICAgICAgICAg YnJlYWs7Cj4+Pj4+ICsgICAgICAgICAgICBpZiAodW5saWtlbHkoZXZlbnQtPm10b3VjaC5jb250 YWN0X2lkICE9Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgIGluZm8tPm10b3VjaF9jdXJfY29u dGFjdF9pZCkpIHsKPj4+PiBXaHkgaXMgdGhpcyB1bmxpa2VseT8gRG9lcyBjb250YWN0IElEIGNo YW5nZXMgb25jZSBpbiAxMDAwIHBhY2tldHMgb3IKPj4+PiBldmVuIGxlc3M/Cj4+PiBNdSBhc3N1 bXB0aW9uIHdhcyB0aGF0IHJlZ2FyZGxlc3Mgb2YgdGhlIGZhY3QgdGhhdCB3ZSBhcmUgbXVsdGkt dG91Y2gKPj4+IGRldmljZSBzdGlsbCBzaW5nbGUgdG91Y2hlcyB3aWxsIGNvbWUgaW4gbW9yZSBm cmVxdWVudGx5Cj4+PiBCdXQgSSBjYW4gcmVtb3ZlICp1bmxpa2VseSogaWYgbXkgYXNzdW1wdGlv biBpcyBub3QgY29ycmVjdAo+Pj4+PiArIGluZm8tPm10b3VjaF9jdXJfY29udGFjdF9pZCA9Cj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5tdG91Y2guY29udGFjdF9pZDsKPj4+Pj4g KyAgICAgICAgICAgICAgICBpbnB1dF9tdF9zbG90KGRldiwgZXZlbnQtPm10b3VjaC5jb250YWN0 X2lkKTsKPj4+Pj4gKyAgICAgICAgICAgIH0KPj4+Pj4gKyAgICAgICAgICAgIHN3aXRjaCAoZXZl bnQtPm10b3VjaC5ldmVudF90eXBlKSB7Cj4+Pj4+ICsgICAgICAgICAgICBjYXNlIFhFTktCRF9N VF9FVl9ET1dOOgo+Pj4+PiArICAgICAgICAgICAgICAgIGlucHV0X210X3JlcG9ydF9zbG90X3N0 YXRlKGRldiwgTVRfVE9PTF9GSU5HRVIsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHJ1ZSk7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgaW5wdXRfZXZlbnQoZGV2LCBFVl9B QlMsIEFCU19NVF9QT1NJVElPTl9YLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgZXZl bnQtPm10b3VjaC51LnBvcy5hYnNfeCk7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgaW5wdXRfZXZl bnQoZGV2LCBFVl9BQlMsIEFCU19NVF9QT1NJVElPTl9ZLAo+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeSk7Cj4+Pj4+ICsgICAgICAgICAgICAg ICAgaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19YLAo+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeCk7Cj4+Pj4+ICsgICAgICAgICAgICAg ICAgaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19ZLAo+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeSk7Cj4+Pj4+ICsgICAgICAgICAgICAg ICAgYnJlYWs7Cj4+Pj4+ICsgICAgICAgICAgICBjYXNlIFhFTktCRF9NVF9FVl9VUDoKPj4+Pj4g KyAgICAgICAgICAgICAgICBpbnB1dF9tdF9yZXBvcnRfc2xvdF9zdGF0ZShkZXYsIE1UX1RPT0xf RklOR0VSLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKPj4+ Pj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4+Pj4gKyAgICAgICAgICAgIGNhc2UgWEVOS0JE X01UX0VWX01PVElPTjoKPj4+Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9ldmVudChkZXYsIEVW X0FCUywgQUJTX01UX1BPU0lUSU9OX1gsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBl dmVudC0+bXRvdWNoLnUucG9zLmFic194KTsKPj4+Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9l dmVudChkZXYsIEVWX0FCUywgQUJTX01UX1BPU0lUSU9OX1ksCj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPj4+Pj4gKyAgICAgICAgICAg ICAgICBpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1gsCj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic194KTsKPj4+Pj4gKyAgICAgICAgICAg ICAgICBpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1ksCj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPj4+Pj4gKyAgICAgICAgICAg ICAgICBicmVhazsKPj4+Pj4gKyAgICAgICAgICAgIGNhc2UgWEVOS0JEX01UX0VWX1NZTjoKPj4+ Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9tdF9zeW5jX2ZyYW1lKGRldik7Cj4+Pj4+ICsgICAg ICAgICAgICAgICAgYnJlYWs7Cj4+Pj4+ICsgICAgICAgICAgICBjYXNlIFhFTktCRF9NVF9FVl9T SEFQRToKPj4+Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJT X01UX1RPVUNIX01BSk9SLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPm10 b3VjaC51LnNoYXBlLm1ham9yKTsKPj4+Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9ldmVudChk ZXYsIEVWX0FCUywgQUJTX01UX1RPVUNIX01JTk9SLAo+Pj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgZXZlbnQtPm10b3VjaC51LnNoYXBlLm1pbm9yKTsKPj4+Pj4gKyAgICAgICAgICAgICAg ICBicmVhazsKPj4+Pj4gKyAgICAgICAgICAgIGNhc2UgWEVOS0JEX01UX0VWX09SSUVOVDoKPj4+ Pj4gKyAgICAgICAgICAgICAgICBpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01UX09SSUVO VEFUSU9OLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPm10b3VjaC51Lm9y aWVudGF0aW9uKTsKPj4+Pj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4+Pj4gKyAgICAgICAg ICAgIH0KPj4+Pj4gKyAgICAgICAgICAgIC8qIG9ubHkgcmVwb3J0IHN5biB3aGVuIHJlcXVlc3Rl ZCAqLwo+Pj4+PiArICAgICAgICAgICAgaWYgKGV2ZW50LT5tdG91Y2guZXZlbnRfdHlwZSAhPSBY RU5LQkRfTVRfRVZfU1lOKQo+Pj4+PiArICAgICAgICAgICAgICAgIGRldiA9IE5VTEw7Cj4+Pj4+ ICAgICAgICAgICB9Cj4+Pj4+ICAgICAgICAgICBpZiAoZGV2KQo+Pj4+PiAgICAgICAgICAgICAg IGlucHV0X3N5bmMoZGV2KTsKPj4+Pj4gQEAgLTExNSw5ICsxNzksOSBAQCBzdGF0aWMgaW50IHhl bmtiZF9wcm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAKPj4+Pj4gKmRldiwKPj4+Pj4gICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeGVuYnVzX2RldmljZV9pZCAqaWQpCj4+Pj4+ICAg ewo+Pj4+PiAgICAgICBpbnQgcmV0LCBpOwo+Pj4+PiAtICAgIHVuc2lnbmVkIGludCBhYnM7Cj4+ Pj4+ICsgICAgdW5zaWduZWQgaW50IGFicywgdG91Y2g7Cj4+Pj4+ICAgICAgIHN0cnVjdCB4ZW5r YmRfaW5mbyAqaW5mbzsKPj4+Pj4gLSAgICBzdHJ1Y3QgaW5wdXRfZGV2ICprYmQsICpwdHI7Cj4+ Pj4+ICsgICAgc3RydWN0IGlucHV0X2RldiAqa2JkLCAqcHRyLCAqbXRvdWNoOwo+Pj4+PiAgICAg ICAgIGluZm8gPSBremFsbG9jKHNpemVvZigqaW5mbyksIEdGUF9LRVJORUwpOwo+Pj4+PiAgICAg ICBpZiAoIWluZm8pIHsKPj4+Pj4gQEAgLTE1Miw2ICsyMTYsMTcgQEAgc3RhdGljIGludCB4ZW5r YmRfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgCj4+Pj4+ICpkZXYsCj4+Pj4+ICAgICAgICAg ICB9Cj4+Pj4+ICAgICAgIH0KPj4+Pj4gICArICAgIHRvdWNoID0geGVuYnVzX3JlYWRfdW5zaWdu ZWQoZGV2LT5ub2RlbmFtZSwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIFhFTktCRF9GSUVM RF9GRUFUX01UT1VDSCwgMCk7Cj4+Pj4+ICsgICAgaWYgKHRvdWNoKSB7Cj4+Pj4+ICsgICAgICAg IHJldCA9IHhlbmJ1c193cml0ZShYQlRfTklMLCBkZXYtPm5vZGVuYW1lLAo+Pj4+PiArICAgICAg ICAgICAgICAgICAgIFhFTktCRF9GSUVMRF9SRVFfTVRPVUNILCAiMSIpOwo+Pj4+PiArICAgICAg ICBpZiAocmV0KSB7Cj4+Pj4+ICsgICAgICAgICAgICBwcl93YXJuaW5nKCJ4ZW5rYmQ6IGNhbid0 IHJlcXVlc3QgbXVsdGktdG91Y2giKTsKPj4+Pj4gKyAgICAgICAgICAgIHRvdWNoID0gMDsKPj4+ Pj4gKyAgICAgICAgfQo+Pj4+PiArICAgIH0KPj4+Pj4gKwo+Pj4+PiAgICAgICAvKiBrZXlib2Fy ZCAqLwo+Pj4+PiAgICAgICBrYmQgPSBpbnB1dF9hbGxvY2F0ZV9kZXZpY2UoKTsKPj4+Pj4gICAg ICAgaWYgKCFrYmQpCj4+Pj4+IEBAIC0yMDgsNiArMjgzLDY3IEBAIHN0YXRpYyBpbnQgeGVua2Jk X3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlIAo+Pj4+PiAqZGV2LAo+Pj4+PiAgICAgICB9Cj4+ Pj4+ICAgICAgIGluZm8tPnB0ciA9IHB0cjsKPj4+Pj4gICArICAgIC8qIG11bHRpLXRvdWNoIGRl dmljZSAqLwo+Pj4+PiArICAgIGlmICh0b3VjaCkgewo+Pj4+PiArICAgICAgICBpbnQgbnVtX2Nv bnQsIHdpZHRoLCBoZWlnaHQ7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgbXRvdWNoID0gaW5wdXRf YWxsb2NhdGVfZGV2aWNlKCk7Cj4+Pj4+ICsgICAgICAgIGlmICghbXRvdWNoKQo+Pj4+PiArICAg ICAgICAgICAgZ290byBlcnJvcl9ub21lbTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICBudW1fY29u dCA9IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGluZm8tPnhiZGV2LT5ub2RlbmFtZSwKPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIFhFTktCRF9GSUVMRF9NVF9OVU1fQ09OVEFDVFMsCj4+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAxKTsKPj4+Pj4gKyAgICAgICAgd2lkdGggPSB4ZW5i dXNfcmVhZF91bnNpZ25lZChpbmZvLT54YmRldi0+bm9kZW5hbWUsCj4+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgWEVOS0JEX0ZJRUxEX01UX1dJRFRILAo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgIFhFTkZCX1dJRFRIKTsKPj4+Pj4gKyAgICAgICAgaGVpZ2h0ID0geGVuYnVz X3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVuYW1lLAo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICBYRU5LQkRfRklFTERfTVRfSEVJR0hULAo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICBYRU5GQl9IRUlHSFQpOwo+Pj4+IEN1cmlvdXMgd2h5IHlvdSBuZWVkIHNl cGFyYXRlIHBhcmFtZXRlcnMgaGVyZSB0b28uLi4KPj4+IFRoaXMgaXMgYmVjYXVzZSBtdCBwYXJh bWV0ZXJzIGFyZSBkaWZmZXJlbnQgZnJvbSBwdHIKPj4+IGluIGEgd2F5IHRoYXQgdGhleSBhcmUg Y29uZmlndXJhYmxlIHBlciBmcm9udCBkcml2ZXIncwo+Pj4gaW5zdGFuY2UgcmF0aGVyIHRoYW4g cGVyIGJhY2tlbmQsIGUuZy4gaW4gWGVuU3RvcmU6Cj4+Pgo+Pj4gL2xvY2FsL2RvbWFpbi8wL2Jh Y2tlbmQvdmtiZC8xLzAvd2lkdGggPSAiMTkyMCIKPj4+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5k L3ZrYmQvMS8wL2hlaWdodCA9ICIxMDgwIgo+Pj4KPj4+IC9sb2NhbC9kb21haW4vMS9kZXZpY2Uv dmtiZC8wL211bHRpLXRvdWNoLXdpZHRoID0gIjE5MjAiCj4+PiAvbG9jYWwvZG9tYWluLzEvZGV2 aWNlL3ZrYmQvMC9tdWx0aS10b3VjaC1oZWlnaHQgPSAiMTA4MCIKPj4+IC9sb2NhbC9kb21haW4v MS9kZXZpY2UvdmtiZC8wL211bHRpLXRvdWNoLW51bS1jb250YWN0cyA9ICIxMCIKPj4+Cj4+PiAv bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMS9tdWx0aS10b3VjaC13aWR0aCA9ICI4MDAiCj4+ PiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMS9tdWx0aS10b3VjaC1oZWlnaHQgPSAiNjAw Igo+Pj4gL2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2JkLzEvbXVsdGktdG91Y2gtbnVtLWNvbnRh Y3RzID0gIjMiCj4+Pgo+Pj4gVGhlIG1haW4gcmVhc29uIGZvciBzdWNoIGNvbmZpZ3VyYXRpb24g aXMgdGhhdCB5b3UgY2FuCj4+PiBjb25maWd1cmUgbXVsdGlwbGUgbXQgaW5wdXQgZGV2aWNlcyBl dmVuIGZvciB0aGUgc2FtZSBndWVzdAo+Pj4gd2l0aCBkaWZmZXJlbnQgcmVzb2x1dGlvbnMgd2hp Y2ggbWF5IG5vdCBtYXRjaCB0aG9zZQo+Pj4gY29uZmlndXJlZCBmb3IgcHRyLgo+Pj4gKEluIG15 IHVzZS1jYXNlIEkgdXNlIG5ldyBkaXNwbGlmIHByb3RvY29sIFsxXSBpbiBjb25qdW5jdGlvbgo+ Pj4gd2l0aCBtdCBpbnB1dCBkZXZpY2VzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBiYWNrZW5kIGlz IG5vdAo+Pj4gUUVNVSdzIHhlbmZiKQo+Pj4KPj4+IEFzIHRvIG1vZHVsZSBwYXJhbWV0ZXJzLCBJ IGFkZGVkIHRob3NlIHRvIGJlIGNvbnNpc3RlbnQgd2l0aAo+Pj4gcHRyIGRldmljZS4gRG8geW91 IHRoaW5rIHdlIGNhbiBsaXZlIHdpdGhvdXQgdGhlbSBhbmQKPj4+IGRvIHlvdSB3YW50IG1lIHRv IHJlbW92ZSB0aGVtPwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgIG10b3VjaC0+bmFtZSA9ICJYZW4g VmlydHVhbCBNdWx0aS10b3VjaCI7Cj4+Pj4+ICsgICAgICAgIG10b3VjaC0+cGh5cyA9IGluZm8t PnBoeXM7Cj4+Pj4+ICsgICAgICAgIG10b3VjaC0+aWQuYnVzdHlwZSA9IEJVU19QQ0k7Cj4+Pj4+ ICsgICAgICAgIG10b3VjaC0+aWQudmVuZG9yID0gMHg1ODUzOwo+Pj4+PiArICAgICAgICBtdG91 Y2gtPmlkLnByb2R1Y3QgPSAweGZmZmQ7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgX19zZXRfYml0 KEVWX0FCUywgbXRvdWNoLT5ldmJpdCk7Cj4+Pj4+ICsgICAgICAgIF9fc2V0X2JpdChFVl9LRVks IG10b3VjaC0+ZXZiaXQpOwo+Pj4+PiArICAgICAgICBfX3NldF9iaXQoQlROX1RPVUNILCBtdG91 Y2gtPmtleWJpdCk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgaW5wdXRfc2V0X2Fic19wYXJhbXMo bXRvdWNoLCBBQlNfWCwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIDAsIHdpZHRoLCAwLCAw KTsKPj4+Pj4gKyAgICAgICAgaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfWSwKPj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIDAsIGhlaWdodCwgMCwgMCk7Cj4+Pj4+ICsgICAgICAg IGlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX1BSRVNTVVJFLAo+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgMCwgMjU1LCAwLCAwKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICBpbnB1 dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19NVF9UT1VDSF9NQUpPUiwKPj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgIDAsIDI1NSwgMCwgMCk7Cj4+Pj4+ICsgICAgICAgIGlucHV0X3NldF9h YnNfcGFyYW1zKG10b3VjaCwgQUJTX01UX1BPU0lUSU9OX1gsCj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAwLCB3aWR0aCwgMCwgMCk7Cj4+Pj4+ICsgICAgICAgIGlucHV0X3NldF9hYnNfcGFy YW1zKG10b3VjaCwgQUJTX01UX1BPU0lUSU9OX1ksCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAwLCBoZWlnaHQsIDAsIDApOwo+Pj4+PiArICAgICAgICBpbnB1dF9zZXRfYWJzX3BhcmFtcyht dG91Y2gsIEFCU19NVF9QUkVTU1VSRSwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIDAsIDI1 NSwgMCwgMCk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91 Y2gsIG51bV9jb250LCAwKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICBtdG91Y2hfc2l6ZVtLUEFS QU1fTVRfWF0gPSB3aWR0aDsKPj4+Pj4gKyAgICAgICAgbXRvdWNoX3NpemVbS1BBUkFNX01UX1ld ID0gaGVpZ2h0Owo+Pj4+PiArICAgICAgICBpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPSAt MTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICByZXQgPSBpbnB1dF9yZWdpc3Rlcl9kZXZpY2UobXRv dWNoKTsKPj4+Pj4gKyAgICAgICAgaWYgKHJldCkgewo+Pj4+PiArICAgICAgICAgICAgaW5wdXRf ZnJlZV9kZXZpY2UobXRvdWNoKTsKPj4+Pj4gKyAgICAgICAgICAgIHhlbmJ1c19kZXZfZmF0YWwo aW5mby0+eGJkZXYsIHJldCwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICJpbnB1dF9yZWdp c3Rlcl9kZXZpY2UobXRvdWNoKSIpOwo+Pj4+PiArICAgICAgICAgICAgZ290byBlcnJvcjsKPj4+ Pj4gKyAgICAgICAgfQo+Pj4+PiArICAgICAgICBpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQg PSAtMTsKPj4+Pj4gKyAgICAgICAgaW5mby0+bXRvdWNoID0gbXRvdWNoOwo+Pj4+PiArICAgIH0K Pj4+Pj4gKwo+Pj4+PiAgICAgICByZXQgPSB4ZW5rYmRfY29ubmVjdF9iYWNrZW5kKGRldiwgaW5m byk7Cj4+Pj4+ICAgICAgIGlmIChyZXQgPCAwKQo+Pj4+PiAgICAgICAgICAgZ290byBlcnJvcjsK Pj4+Pj4gQEAgLTI0MCw2ICszNzYsOCBAQCBzdGF0aWMgaW50IHhlbmtiZF9yZW1vdmUoc3RydWN0 IHhlbmJ1c19kZXZpY2UgCj4+Pj4+ICpkZXYpCj4+Pj4+ICAgICAgICAgICBpbnB1dF91bnJlZ2lz dGVyX2RldmljZShpbmZvLT5rYmQpOwo+Pj4+PiAgICAgICBpZiAoaW5mby0+cHRyKQo+Pj4+PiAg ICAgICAgICAgaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2UoaW5mby0+cHRyKTsKPj4+Pj4gKyAgICBp ZiAoaW5mby0+bXRvdWNoKQo+Pj4+PiArICAgICAgICBpbnB1dF91bnJlZ2lzdGVyX2RldmljZShp bmZvLT5tdG91Y2gpOwo+Pj4+PiAgICAgICBmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpaW5mby0+ cGFnZSk7Cj4+Pj4+ICAgICAgIGtmcmVlKGluZm8pOwo+Pj4+PiAgICAgICByZXR1cm4gMDsKPj4+ Pj4gLS0gCj4+Pj4+IDIuNy40Cj4+Pj4+Cj4+Pj4gVGhhbmtzLgo+Pj4gVGhhbmsgeW91LAo+Pj4g T2xla3NhbmRyCj4+PiBbMV0gCj4+PiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlu dXgva2VybmVsL2dpdC94ZW4vdGlwLmdpdC9jb21taXQvP2g9Zm9yLWxpbnVzLTQuMTImaWQ9ZTI3 YzUzM2RjNGQwMzM4MjY2Y2NiNmRhYjQyODE1MGQ0ZDYyOWU2YQo+Pj4KPj4KPj4gQXMgYWxsIHRo ZSBkZXBlbmRlbmNpZXMgYXJlIG5vdyBtZXJnZWQgaW50byB0aGUga2VybmVsIGFuZCAqaWYqCj4+ IHRoZSBhYm92ZSBzb3VuZHMgcmVhc29uYWJsZSBmb3IgeW91IGNhbiB3ZSBwbGVhc2UgcHJvY2Vl ZCB3aXRoIHRoaXMgCj4+IHBhdGNoPwo+Pgo+PiBUaGFuayB5b3UsCj4+IE9sZWtzYW5kcgo+CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==