From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Miao Subject: Re: [PATCH 1/4] pxa: add namespace on ssp Date: Thu, 22 Apr 2010 06:17:29 +0800 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qy0-f187.google.com (mail-qy0-f187.google.com [209.85.221.187]) by alsa0.perex.cz (Postfix) with ESMTP id 6E39F24660 for ; Thu, 22 Apr 2010 00:17:52 +0200 (CEST) Received: by qyk17 with SMTP id 17so2633092qyk.9 for ; Wed, 21 Apr 2010 15:17:50 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: Haojian Zhuang Cc: alsa-devel@alsa-project.org, Mark Brown , linux-arm-kernel , Liam Girdwood List-Id: alsa-devel@alsa-project.org T24gU2F0LCBBcHIgMTcsIDIwMTAgYXQgMTozNCBQTSwgSGFvamlhbiBaaHVhbmcKPGhhb2ppYW4u emh1YW5nQGdtYWlsLmNvbT4gd3JvdGU6Cj4gRnJvbSBiNTJhMGQyNjg3ZTgyZjgxZDM4MTk4Y2I0 NTBiNmEzOWE5ZTUzODUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+IEZyb206IEhhb2ppYW4g Wmh1YW5nIDxoYW9qaWFuLnpodWFuZ0BtYXJ2ZWxsLmNvbT4KPiBEYXRlOiBXZWQsIDMxIE1hciAy MDEwIDE1OjA4OjU1IC0wNDAwCj4gU3ViamVjdDogW1BBVENIXSBbQVJNXSBweGE6IGFkZCBuYW1l c3BhY2Ugb24gc3NwCj4KPiBJbiBvcmRlciB0byBwcmV2ZW50IGNvZGUgYW1iaWd1b3VzLCBhZGQg bmFtZXNwYWNlIG9uIGZ1bmN0aW9ucyBpbiBzc3AgZHJpdmVyLgo+CgpNYXJrLAoKU29ycnkgSSdt IHN0aWxsIG5vdCBjb252aW5jZWQgdGhhdCB0aGlzIGlzIGEgbmVjZXNzYXJ5IGNoYW5nZSwgY291 bGQKeW91IHBvaW50IG1lIHRvIHNvbWUgcGxhY2Ugd2hlcmUgdGhlcmUgYXJlIG5hbWluZyBjb25m bGljdHM/CgpUaGFua3MKCj4gU2lnbmVkLW9mZi1ieTogSGFvamlhbiBaaHVhbmcgPGhhb2ppYW4u emh1YW5nQG1hcnZlbGwuY29tPgo+IC0tLQo+IMKgYXJjaC9hcm0vcGxhdC1weGEvaW5jbHVkZS9w bGF0L3NzcC5oIHwgwqAgMTIgKystLQo+IMKgYXJjaC9hcm0vcGxhdC1weGEvc3NwLmMgwqAgwqAg wqAgwqAgwqAgwqAgwqB8IMKgIDIyICsrKy0tLQo+IMKgZHJpdmVycy9zcGkvcHhhMnh4X3NwaS5j IMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqA4ICstCj4gwqBzb3VuZC9zb2MvcHhhL3B4YS1zc3Au YyDCoCDCoCDCoCDCoCDCoCDCoCDCoHwgwqAxMzIgKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLQo+IMKgNCBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA4NyBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXB4YS9pbmNsdWRlL3BsYXQvc3Nw LmgKPiBiL2FyY2gvYXJtL3BsYXQtcHhhL2luY2x1ZGUvcGxhdC9zc3AuaAo+IGluZGV4IGQxNmQ3 OWEuLmZlNDMxNTAgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm0vcGxhdC1weGEvaW5jbHVkZS9wbGF0 L3NzcC5oCj4gKysrIGIvYXJjaC9hcm0vcGxhdC1weGEvaW5jbHVkZS9wbGF0L3NzcC5oCj4gQEAg LTE1OSwyOCArMTU5LDI4IEBAIHN0cnVjdCBzc3BfZGV2aWNlIHsKPiDCoH07Cj4KPiDCoC8qKgo+ IC0gKiBzc3Bfd3JpdGVfcmVnIC0gV3JpdGUgdG8gYSBTU1AgcmVnaXN0ZXIKPiArICogcHhhX3Nz cF93cml0ZV9yZWcgLSBXcml0ZSB0byBhIFNTUCByZWdpc3Rlcgo+IMKgKgo+IMKgKiBAZGV2OiBT U1AgZGV2aWNlIHRvIGFjY2Vzcwo+IMKgKiBAcmVnOiBSZWdpc3RlciB0byB3cml0ZSB0bwo+IMKg KiBAdmFsOiBWYWx1ZSB0byBiZSB3cml0dGVuLgo+IMKgKi8KPiAtc3RhdGljIGlubGluZSB2b2lk IHNzcF93cml0ZV9yZWcoc3RydWN0IHNzcF9kZXZpY2UgKmRldiwgdTMyIHJlZywgdTMyIHZhbCkK PiArc3RhdGljIGlubGluZSB2b2lkIHB4YV9zc3Bfd3JpdGVfcmVnKHN0cnVjdCBzc3BfZGV2aWNl ICpkZXYsIHUzMiByZWcsIHUzMiB2YWwpCj4gwqB7Cj4gwqAgwqAgwqAgwqBfX3Jhd193cml0ZWwo dmFsLCBkZXYtPm1taW9fYmFzZSArIHJlZyk7Cj4gwqB9Cj4KPiDCoC8qKgo+IC0gKiBzc3BfcmVh ZF9yZWcgLSBSZWFkIGZyb20gYSBTU1AgcmVnaXN0ZXIKPiArICogcHhhX3NzcF9yZWFkX3JlZyAt IFJlYWQgZnJvbSBhIFNTUCByZWdpc3Rlcgo+IMKgKgo+IMKgKiBAZGV2OiBTU1AgZGV2aWNlIHRv IGFjY2Vzcwo+IMKgKiBAcmVnOiBSZWdpc3RlciB0byByZWFkIGZyb20KPiDCoCovCj4gLXN0YXRp YyBpbmxpbmUgdTMyIHNzcF9yZWFkX3JlZyhzdHJ1Y3Qgc3NwX2RldmljZSAqZGV2LCB1MzIgcmVn KQo+ICtzdGF0aWMgaW5saW5lIHUzMiBweGFfc3NwX3JlYWRfcmVnKHN0cnVjdCBzc3BfZGV2aWNl ICpkZXYsIHUzMiByZWcpCj4gwqB7Cj4gwqAgwqAgwqAgwqByZXR1cm4gX19yYXdfcmVhZGwoZGV2 LT5tbWlvX2Jhc2UgKyByZWcpOwo+IMKgfQo+Cj4gLXN0cnVjdCBzc3BfZGV2aWNlICpzc3BfcmVx dWVzdChpbnQgcG9ydCwgY29uc3QgY2hhciAqbGFiZWwpOwo+IC12b2lkIHNzcF9mcmVlKHN0cnVj dCBzc3BfZGV2aWNlICopOwo+ICtzdHJ1Y3Qgc3NwX2RldmljZSAqcHhhX3NzcF9yZXF1ZXN0KGlu dCBwb3J0LCBjb25zdCBjaGFyICpsYWJlbCk7Cj4gK3ZvaWQgcHhhX3NzcF9mcmVlKHN0cnVjdCBz c3BfZGV2aWNlICopOwo+IMKgI2VuZGlmIC8qIF9fQVNNX0FSQ0hfU1NQX0ggKi8KPiBkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vcGxhdC1weGEvc3NwLmMgYi9hcmNoL2FybS9wbGF0LXB4YS9zc3AuYwo+ IGluZGV4IGNmZWJjZDguLjUxMTgwNWUgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm0vcGxhdC1weGEv c3NwLmMKPiArKysgYi9hcmNoL2FybS9wbGF0LXB4YS9zc3AuYwo+IEBAIC0zNyw3ICszNyw3IEBA Cj4gwqBzdGF0aWMgREVGSU5FX01VVEVYKHNzcF9sb2NrKTsKPiDCoHN0YXRpYyBMSVNUX0hFQUQo c3NwX2xpc3QpOwo+Cj4gLXN0cnVjdCBzc3BfZGV2aWNlICpzc3BfcmVxdWVzdChpbnQgcG9ydCwg Y29uc3QgY2hhciAqbGFiZWwpCj4gK3N0cnVjdCBzc3BfZGV2aWNlICpweGFfc3NwX3JlcXVlc3Qo aW50IHBvcnQsIGNvbnN0IGNoYXIgKmxhYmVsKQo+IMKgewo+IMKgIMKgIMKgIMKgc3RydWN0IHNz cF9kZXZpY2UgKnNzcCA9IE5VTEw7Cj4KPiBAQCAtNTgsOSArNTgsOSBAQCBzdHJ1Y3Qgc3NwX2Rl dmljZSAqc3NwX3JlcXVlc3QoaW50IHBvcnQsIGNvbnN0IGNoYXIgKmxhYmVsKQo+Cj4gwqAgwqAg wqAgwqByZXR1cm4gc3NwOwo+IMKgfQo+IC1FWFBPUlRfU1lNQk9MKHNzcF9yZXF1ZXN0KTsKPiAr RVhQT1JUX1NZTUJPTChweGFfc3NwX3JlcXVlc3QpOwo+Cj4gLXZvaWQgc3NwX2ZyZWUoc3RydWN0 IHNzcF9kZXZpY2UgKnNzcCkKPiArdm9pZCBweGFfc3NwX2ZyZWUoc3RydWN0IHNzcF9kZXZpY2Ug KnNzcCkKPiDCoHsKPiDCoCDCoCDCoCDCoG11dGV4X2xvY2soJnNzcF9sb2NrKTsKPiDCoCDCoCDC oCDCoGlmIChzc3AtPnVzZV9jb3VudCkgewo+IEBAIC03MCw5ICs3MCw5IEBAIHZvaWQgc3NwX2Zy ZWUoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRldl9l cnIoJnNzcC0+cGRldi0+ZGV2LCAiZGV2aWNlIGFscmVhZHkgZnJlZVxuIik7Cj4gwqAgwqAgwqAg wqBtdXRleF91bmxvY2soJnNzcF9sb2NrKTsKPiDCoH0KPiAtRVhQT1JUX1NZTUJPTChzc3BfZnJl ZSk7Cj4gK0VYUE9SVF9TWU1CT0wocHhhX3NzcF9mcmVlKTsKPgo+IC1zdGF0aWMgaW50IF9fZGV2 aW5pdCBzc3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArc3RhdGljIGlu dCBfX2RldmluaXQgcHhhX3NzcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ IMKgewo+IMKgIMKgIMKgIMKgY29uc3Qgc3RydWN0IHBsYXRmb3JtX2RldmljZV9pZCAqaWQgPSBw bGF0Zm9ybV9nZXRfZGV2aWNlX2lkKHBkZXYpOwo+IMKgIMKgIMKgIMKgc3RydWN0IHJlc291cmNl ICpyZXM7Cj4gQEAgLTE2NCw3ICsxNjQsNyBAQCBlcnJfZnJlZToKPiDCoCDCoCDCoCDCoHJldHVy biByZXQ7Cj4gwqB9Cj4KPiAtc3RhdGljIGludCBfX2RldmV4aXQgc3NwX3JlbW92ZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICtzdGF0aWMgaW50IF9fZGV2ZXhpdCBweGFfc3NwX3Jl bW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+IMKgewo+IMKgIMKgIMKgIMKgc3Ry dWN0IHJlc291cmNlICpyZXM7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwOwo+ IEBAIC0xOTYsOSArMTk2LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Vf aWQgc3NwX2lkX3RhYmxlW10gPSB7Cj4gwqAgwqAgwqAgwqB7IH0sCj4gwqB9Owo+Cj4gLXN0YXRp YyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNzcF9kcml2ZXIgPSB7Cj4gLSDCoCDCoCDCoCAucHJv YmUgwqAgwqAgwqAgwqAgwqA9IHNzcF9wcm9iZSwKPiAtIMKgIMKgIMKgIC5yZW1vdmUgwqAgwqAg wqAgwqAgPSBfX2RldmV4aXRfcChzc3BfcmVtb3ZlKSwKPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgcHhhX3NzcF9kcml2ZXIgPSB7Cj4gKyDCoCDCoCDCoCAucHJvYmUgwqAgwqAgwqAg wqAgwqA9IHB4YV9zc3BfcHJvYmUsCj4gKyDCoCDCoCDCoCAucmVtb3ZlIMKgIMKgIMKgIMKgID0g X19kZXZleGl0X3AocHhhX3NzcF9yZW1vdmUpLAo+IMKgIMKgIMKgIMKgLmRyaXZlciDCoCDCoCDC oCDCoCA9IHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC5vd25lciDCoD0gVEhJU19NT0RVTEUs Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAubmFtZSDCoCA9ICJweGEyeHgtc3NwIiwKPiBAQCAt MjA4LDEyICsyMDgsMTIgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3NwX2RyaXZl ciA9IHsKPgo+IMKgc3RhdGljIGludCBfX2luaXQgcHhhX3NzcF9pbml0KHZvaWQpCj4gwqB7Cj4g LSDCoCDCoCDCoCByZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZzc3BfZHJpdmVyKTsK PiArIMKgIMKgIMKgIHJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnB4YV9zc3BfZHJp dmVyKTsKPiDCoH0KPgo+IMKgc3RhdGljIHZvaWQgX19leGl0IHB4YV9zc3BfZXhpdCh2b2lkKQo+ IMKgewo+IC0gwqAgwqAgwqAgcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnNzcF9kcml2ZXIp Owo+ICsgwqAgwqAgwqAgcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnB4YV9zc3BfZHJpdmVy KTsKPiDCoH0KPgo+IMKgYXJjaF9pbml0Y2FsbChweGFfc3NwX2luaXQpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3NwaS9weGEyeHhfc3BpLmMgYi9kcml2ZXJzL3NwaS9weGEyeHhfc3BpLmMKPiBp bmRleCA0YTY0ZGE3Li4yZmQ3ZDVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3BpL3B4YTJ4eF9z cGkuYwo+ICsrKyBiL2RyaXZlcnMvc3BpL3B4YTJ4eF9zcGkuYwo+IEBAIC0xNDY0LDcgKzE0NjQs NyBAQCBzdGF0aWMgaW50IF9faW5pdCBweGEyeHhfc3BpX3Byb2JlKHN0cnVjdAo+IHBsYXRmb3Jt X2RldmljZSAqcGRldikKPgo+IMKgIMKgIMKgIMKgcGxhdGZvcm1faW5mbyA9IGRldi0+cGxhdGZv cm1fZGF0YTsKPgo+IC0gwqAgwqAgwqAgc3NwID0gc3NwX3JlcXVlc3QocGRldi0+aWQsIHBkZXYt Pm5hbWUpOwo+ICsgwqAgwqAgwqAgc3NwID0gcHhhX3NzcF9yZXF1ZXN0KHBkZXYtPmlkLCBwZGV2 LT5uYW1lKTsKPiDCoCDCoCDCoCDCoGlmIChzc3AgPT0gTlVMTCkgewo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIHJlcXVlc3QgU1NQJWRcbiIs IHBkZXYtPmlkKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiAtRU5PREVWOwo+IEBA IC0xNDc0LDcgKzE0NzQsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBweGEyeHhfc3BpX3Byb2JlKHN0 cnVjdAo+IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiDCoCDCoCDCoCDCoG1hc3RlciA9IHNwaV9h bGxvY19tYXN0ZXIoZGV2LCBzaXplb2Yoc3RydWN0IGRyaXZlcl9kYXRhKSArIDE2KTsKPiDCoCDC oCDCoCDCoGlmICghbWFzdGVyKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkZXZfZXJyKCZw ZGV2LT5kZXYsICJjYW5ub3QgYWxsb2Mgc3BpX21hc3RlclxuIik7Cj4gLSDCoCDCoCDCoCDCoCDC oCDCoCDCoCBzc3BfZnJlZShzc3ApOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhhX3NzcF9m cmVlKHNzcCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm4gLUVOT01FTTsKPiDCoCDC oCDCoCDCoH0KPiDCoCDCoCDCoCDCoGRydl9kYXRhID0gc3BpX21hc3Rlcl9nZXRfZGV2ZGF0YSht YXN0ZXIpOwo+IEBAIC0xNjAzLDcgKzE2MDMsNyBAQCBvdXRfZXJyb3JfaXJxX2FsbG9jOgo+Cj4g wqBvdXRfZXJyb3JfbWFzdGVyX2FsbG9jOgo+IMKgIMKgIMKgIMKgc3BpX21hc3Rlcl9wdXQobWFz dGVyKTsKPiAtIMKgIMKgIMKgIHNzcF9mcmVlKHNzcCk7Cj4gKyDCoCDCoCDCoCBweGFfc3NwX2Zy ZWUoc3NwKTsKPiDCoCDCoCDCoCDCoHJldHVybiBzdGF0dXM7Cj4gwqB9Cj4KPiBAQCAtMTY0Nyw3 ICsxNjQ3LDcgQEAgc3RhdGljIGludCBweGEyeHhfc3BpX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQo+IMKgIMKgIMKgIMKgZnJlZV9pcnEoc3NwLT5pcnEsIGRydl9kYXRhKTsK Pgo+IMKgIMKgIMKgIMKgLyogUmVsZWFzZSBTU1AgKi8KPiAtIMKgIMKgIMKgIHNzcF9mcmVlKHNz cCk7Cj4gKyDCoCDCoCDCoCBweGFfc3NwX2ZyZWUoc3NwKTsKPgo+IMKgIMKgIMKgIMKgLyogRGlz Y29ubmVjdCBmcm9tIHRoZSBTUEkgZnJhbWV3b3JrICovCj4gwqAgwqAgwqAgwqBzcGlfdW5yZWdp c3Rlcl9tYXN0ZXIoZHJ2X2RhdGEtPm1hc3Rlcik7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9w eGEvcHhhLXNzcC5jIGIvc291bmQvc29jL3B4YS9weGEtc3NwLmMKPiBpbmRleCA0Y2E5MjQ1Li5l ZDU0YmVmIDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9weGEvcHhhLXNzcC5jCj4gKysrIGIvc291 bmQvc29jL3B4YS9weGEtc3NwLmMKPiBAQCAtNTUsMTUgKzU1LDE1IEBAIHN0cnVjdCBzc3BfcHJp diB7Cj4gwqBzdGF0aWMgdm9pZCBkdW1wX3JlZ2lzdGVycyhzdHJ1Y3Qgc3NwX2RldmljZSAqc3Nw KQo+IMKgewo+IMKgIMKgIMKgIMKgZGV2X2RiZygmc3NwLT5wZGV2LT5kZXYsICJTU0NSMCAweCUw OHggU1NDUjEgMHglMDh4IFNTVE8gMHglMDh4XG4iLAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBzc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCksIHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IxKSwKPiAt IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3NwX3JlYWRfcmVnKHNzcCwgU1NUTykpOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApLCBweGFfc3Nw X3JlYWRfcmVnKHNzcCwgU1NDUjEpLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBweGFfc3Nw X3JlYWRfcmVnKHNzcCwgU1NUTykpOwo+Cj4gwqAgwqAgwqAgwqBkZXZfZGJnKCZzc3AtPnBkZXYt PmRldiwgIlNTUFNQIDB4JTA4eCBTU1NSIDB4JTA4eCBTU0FDRCAweCUwOHhcbiIsCj4gLSDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHNzcF9yZWFkX3JlZyhzc3AsIFNTUFNQKSwgc3NwX3JlYWRfcmVn KHNzcCwgU1NTUiksCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNzcF9yZWFkX3JlZyhzc3As IFNTQUNEKSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHB4YV9zc3BfcmVhZF9yZWcoc3Nw LCBTU1BTUCksIHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU1NSKSwKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQUNEKSk7Cj4gwqB9Cj4KPiAtc3RhdGlj IHZvaWQgc3NwX2VuYWJsZShzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQo+ICtzdGF0aWMgdm9pZCBw eGFfc3NwX2VuYWJsZShzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQo+IMKgewo+IMKgIMKgIMKgIMKg dWludDMyX3Qgc3NjcjA7Cj4KPiBAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCBzc3BfZW5h YmxlKHN0cnVjdCBzc3BfZGV2aWNlICpzc3ApCj4gwqAgwqAgwqAgwqBfX3Jhd193cml0ZWwoc3Nj cjAsIHNzcC0+bW1pb19iYXNlICsgU1NDUjApOwo+IMKgfQo+Cj4gLXN0YXRpYyB2b2lkIHNzcF9k aXNhYmxlKHN0cnVjdCBzc3BfZGV2aWNlICpzc3ApCj4gK3N0YXRpYyB2b2lkIHB4YV9zc3BfZGlz YWJsZShzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQo+IMKgewo+IMKgIMKgIMKgIMKgdWludDMyX3Qg c3NjcjA7Cj4KPiBAQCAtODUsNyArODUsNyBAQCBzdHJ1Y3QgcHhhMnh4X3BjbV9kbWFfZGF0YSB7 Cj4gwqB9Owo+Cj4gwqBzdGF0aWMgc3RydWN0IHB4YTJ4eF9wY21fZG1hX3BhcmFtcyAqCj4gLXNz cF9nZXRfZG1hX3BhcmFtcyhzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwLCBpbnQgd2lkdGg0LCBpbnQg b3V0KQo+ICtweGFfc3NwX2dldF9kbWFfcGFyYW1zKHN0cnVjdCBzc3BfZGV2aWNlICpzc3AsIGlu dCB3aWR0aDQsIGludCBvdXQpCj4gwqB7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgcHhhMnh4X3BjbV9k bWFfZGF0YSAqZG1hOwo+Cj4gQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgaW50IHB4YV9zc3Bf c3RhcnR1cChzdHJ1Y3QKPiBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAo+Cj4gwqAgwqAg wqAgwqBpZiAoIWNwdV9kYWktPmFjdGl2ZSkgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2xr X2VuYWJsZShzc3AtPmNsayk7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3BfZGlzYWJsZShz c3ApOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhhX3NzcF9kaXNhYmxlKHNzcCk7Cj4gwqAg wqAgwqAgwqB9Cj4KPiDCoCDCoCDCoCDCoGlmIChjcHVfZGFpLT5kbWFfZGF0YSkgewo+IEBAIC0x MzYsNyArMTM2LDcgQEAgc3RhdGljIHZvaWQgcHhhX3NzcF9zaHV0ZG93bihzdHJ1Y3QKPiBzbmRf cGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAo+IMKgIMKgIMKgIMKgc3RydWN0IHNzcF9kZXZpY2Ug KnNzcCA9IHByaXYtPnNzcDsKPgo+IMKgIMKgIMKgIMKgaWYgKCFjcHVfZGFpLT5hY3RpdmUpIHsK PiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNzcF9kaXNhYmxlKHNzcCk7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCBweGFfc3NwX2Rpc2FibGUoc3NwKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oGNsa19kaXNhYmxlKHNzcC0+Y2xrKTsKPiDCoCDCoCDCoCDCoH0KPgo+IEBAIC0xNjEsNyArMTYx LDcgQEAgc3RhdGljIGludCBweGFfc3NwX3N1c3BlbmQoc3RydWN0IHNuZF9zb2NfZGFpICpjcHVf ZGFpKQo+IMKgIMKgIMKgIMKgcHJpdi0+dG8gwqA9IF9fcmF3X3JlYWRsKHNzcC0+bW1pb19iYXNl ICsgU1NUTyk7Cj4gwqAgwqAgwqAgwqBwcml2LT5wc3AgPSBfX3Jhd19yZWFkbChzc3AtPm1taW9f YmFzZSArIFNTUFNQKTsKPgo+IC0gwqAgwqAgwqAgc3NwX2Rpc2FibGUoc3NwKTsKPiArIMKgIMKg IMKgIHB4YV9zc3BfZGlzYWJsZShzc3ApOwo+IMKgIMKgIMKgIMKgY2xrX2Rpc2FibGUoc3NwLT5j bGspOwo+IMKgIMKgIMKgIMKgcmV0dXJuIDA7Cj4gwqB9Cj4gQEAgLTE4MSw3ICsxODEsNyBAQCBz dGF0aWMgaW50IHB4YV9zc3BfcmVzdW1lKHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSkKPiDC oCDCoCDCoCDCoF9fcmF3X3dyaXRlbChwcml2LT5wc3AsIHNzcC0+bW1pb19iYXNlICsgU1NQU1Ap Owo+Cj4gwqAgwqAgwqAgwqBpZiAoY3B1X2RhaS0+YWN0aXZlKQo+IC0gwqAgwqAgwqAgwqAgwqAg wqAgwqAgc3NwX2VuYWJsZShzc3ApOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhhX3NzcF9l bmFibGUoc3NwKTsKPiDCoCDCoCDCoCDCoGVsc2UKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNs a19kaXNhYmxlKHNzcC0+Y2xrKTsKPgo+IEBAIC0xOTcsOSArMTk3LDkgQEAgc3RhdGljIGludCBw eGFfc3NwX3Jlc3VtZShzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWkpCj4gwqAqIHNzcF9zZXRf Y2xrZGl2IC0gc2V0IFNTUCBjbG9jayBkaXZpZGVyCj4gwqAqIEBkaXY6IHNlcmlhbCBjbG9jayBy YXRlIGRpdmlkZXIKPiDCoCovCj4gLXN0YXRpYyB2b2lkIHNzcF9zZXRfc2NyKHN0cnVjdCBzc3Bf ZGV2aWNlICpzc3AsIHUzMiBkaXYpCj4gK3N0YXRpYyB2b2lkIHB4YV9zc3Bfc2V0X3NjcihzdHJ1 Y3Qgc3NwX2RldmljZSAqc3NwLCB1MzIgZGl2KQo+IMKgewo+IC0gwqAgwqAgwqAgdTMyIHNzY3Iw ID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApOwo+ICsgwqAgwqAgwqAgdTMyIHNzY3IwID0gcHhh X3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKTsKPgo+IMKgIMKgIMKgIMKgaWYgKGNwdV9pc19weGEy NXgoKSAmJiBzc3AtPnR5cGUgPT0gUFhBMjV4X1NTUCkgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgc3NjcjAgJj0gfjB4MDAwMGZmMDA7Cj4gQEAgLTIwOCwxNSArMjA4LDE1IEBAIHN0YXRpYyB2 b2lkIHNzcF9zZXRfc2NyKHN0cnVjdCBzc3BfZGV2aWNlICpzc3AsIHUzMiBkaXYpCj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBzc2NyMCAmPSB+MHgwMDBmZmYwMDsKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHNzY3IwIHw9IChkaXYgLSAxKSA8PCA4OyDCoCDCoCAvKiAxLi40MDk2ICovCj4gwqAg wqAgwqAgwqB9Cj4gLSDCoCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjAsIHNzY3IwKTsK PiArIMKgIMKgIMKgIHB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjAsIHNzY3IwKTsKPiDCoH0K Pgo+IMKgLyoqCj4gLSAqIHNzcF9nZXRfY2xrZGl2IC0gZ2V0IFNTUCBjbG9jayBkaXZpZGVyCj4g KyAqIHB4YV9zc3BfZ2V0X2Nsa2RpdiAtIGdldCBTU1AgY2xvY2sgZGl2aWRlcgo+IMKgKi8KPiAt c3RhdGljIHUzMiBzc3BfZ2V0X3NjcihzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQo+ICtzdGF0aWMg dTMyIHB4YV9zc3BfZ2V0X3NjcihzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQo+IMKgewo+IC0gwqAg wqAgwqAgdTMyIHNzY3IwID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApOwo+ICsgwqAgwqAgwqAg dTMyIHNzY3IwID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKTsKPiDCoCDCoCDCoCDCoHUz MiBkaXY7Cj4KPiDCoCDCoCDCoCDCoGlmIChjcHVfaXNfcHhhMjV4KCkgJiYgc3NwLT50eXBlID09 IFBYQTI1eF9TU1ApCj4gQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0 X2RhaV9zeXNjbGsoc3RydWN0Cj4gc25kX3NvY19kYWkgKmNwdV9kYWksCj4gwqAgwqAgwqAgwqBz dHJ1Y3Qgc3NwX2RldmljZSAqc3NwID0gcHJpdi0+c3NwOwo+IMKgIMKgIMKgIMKgaW50IHZhbDsK Pgo+IC0gwqAgwqAgwqAgdTMyIHNzY3IwID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApICYKPiAr IMKgIMKgIMKgIHUzMiBzc2NyMCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCkgJgo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgfihTU0NSMF9FQ1MgfCDCoFNTQ1IwX05DUyB8IFNTQ1IwX01P RCB8IFNTQ1IwX0FDUyk7Cj4KPiDCoCDCoCDCoCDCoGRldl9kYmcoJnNzcC0+cGRldi0+ZGV2LAo+ IEBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIGludCBweGFfc3NwX3NldF9kYWlfc3lzY2xrKHN0 cnVjdAo+IHNuZF9zb2NfZGFpICpjcHVfZGFpLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJl YWs7Cj4gwqAgwqAgwqAgwqBjYXNlIFBYQV9TU1BfQ0xLX0FVRElPOgo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgcHJpdi0+c3lzY2xrID0gMDsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNzcF9z ZXRfc2NyKHNzcCwgMSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBweGFfc3NwX3NldF9zY3Io c3NwLCAxKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNzY3IwIHw9IFNTQ1IwX0FDUzsKPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgZGVmYXVsdDoKPiBAQCAt Mjc1LDggKzI3NSw4IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX3N5c2NsayhzdHJ1Y3QK PiBzbmRfc29jX2RhaSAqY3B1X2RhaSwKPiDCoCDCoCDCoCDCoCAqIG9uIFBYQTJ4eC4gwqBPbiBQ WEEzeHggaXQgbXVzdCBiZSBlbmFibGVkIHdoZW4gZG9pbmcgc28uICovCj4gwqAgwqAgwqAgwqBp ZiAoIWNwdV9pc19weGEzeHgoKSkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNsa19kaXNhYmxl KHNzcC0+Y2xrKTsKPiAtIMKgIMKgIMKgIHZhbCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKSB8 IHNzY3IwOwo+IC0gwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCB2YWwpOwo+ICsg wqAgwqAgwqAgdmFsID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKSB8IHNzY3IwOwo+ICsg wqAgwqAgwqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMCwgdmFsKTsKPiDCoCDCoCDCoCDC oGlmICghY3B1X2lzX3B4YTN4eCgpKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2xrX2VuYWJs ZShzc3AtPmNsayk7Cj4KPiBAQCAtMjk1LDExICsyOTUsMTEgQEAgc3RhdGljIGludCBweGFfc3Nw X3NldF9kYWlfY2xrZGl2KHN0cnVjdAo+IHNuZF9zb2NfZGFpICpjcHVfZGFpLAo+Cj4gwqAgwqAg wqAgwqBzd2l0Y2ggKGRpdl9pZCkgewo+IMKgIMKgIMKgIMKgY2FzZSBQWEFfU1NQX0FVRElPX0RJ Vl9BQ0RTOgo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFsID0gKHNzcF9yZWFkX3JlZyhzc3As IFNTQUNEKSAmIH4weDcpIHwgU1NBQ0RfQUNEUyhkaXYpOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAg wqAgc3NwX3dyaXRlX3JlZyhzc3AsIFNTQUNELCB2YWwpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgdmFsID0gKHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0FDRCkgJiB+MHg3KSB8IFNTQUNEX0FD RFMoZGl2KTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwg U1NBQ0QsIHZhbCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsKPiDCoCDCoCDCoCDC oGNhc2UgUFhBX1NTUF9BVURJT19ESVZfU0NEQjoKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZh bCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQUNEKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZh bCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0FDRCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB2YWwgJj0gflNTQUNEX1NDREI7Cj4gwqAjaWYgZGVmaW5lZChDT05GSUdfUFhBM3h4KQo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGNwdV9pc19weGEzeHgoKSkKPiBAQCAtMzIyLDEwICsz MjIsMTAgQEAgc3RhdGljIGludCBweGFfc3NwX3NldF9kYWlfY2xrZGl2KHN0cnVjdAo+IHNuZF9z b2NfZGFpICpjcHVfZGFpLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZGVmYXVsdDoKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiAtRUlOVkFMOwo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgfQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhz c3AsIFNTQUNELCB2YWwpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhhX3NzcF93cml0ZV9y ZWcoc3NwLCBTU0FDRCwgdmFsKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJyZWFrOwo+IMKg IMKgIMKgIMKgY2FzZSBQWEFfU1NQX0RJVl9TQ1I6Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBz c3Bfc2V0X3Njcihzc3AsIGRpdik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBweGFfc3NwX3Nl dF9zY3Ioc3NwLCBkaXYpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gwqAgwqAg wqAgwqBkZWZhdWx0Ogo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIC1FTk9ERVY7Cj4g QEAgLTM0MiwxMSArMzQyLDExIEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX3BsbChzdHJ1 Y3QKPiBzbmRfc29jX2RhaSAqY3B1X2RhaSwgaW50IHBsbF9pZCwKPiDCoHsKPiDCoCDCoCDCoCDC oHN0cnVjdCBzc3BfcHJpdiAqcHJpdiA9IGNwdV9kYWktPnByaXZhdGVfZGF0YTsKPiDCoCDCoCDC oCDCoHN0cnVjdCBzc3BfZGV2aWNlICpzc3AgPSBwcml2LT5zc3A7Cj4gLSDCoCDCoCDCoCB1MzIg c3NhY2QgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU0FDRCkgJiB+MHg3MDsKPiArIMKgIMKgIMKgIHUz MiBzc2FjZCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0FDRCkgJiB+MHg3MDsKPgo+IMKgI2lm IGRlZmluZWQoQ09ORklHX1BYQTN4eCkKPiDCoCDCoCDCoCDCoGlmIChjcHVfaXNfcHhhM3h4KCkp Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0RELCAwKTsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0RELCAw KTsKPiDCoCNlbmRpZgo+Cj4gwqAgwqAgwqAgwqBzd2l0Y2ggKGZyZXFfb3V0KSB7Cj4gQEAgLTM4 NCw3ICszODQsNyBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV9wbGwoc3RydWN0IHNuZF9z b2NfZGFpCj4gKmNwdV9kYWksIGludCBwbGxfaWQsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqB2YWwgPSB0bXA7Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHZhbCA9ICh2YWwgPDwgMTYpIHwgNjQ7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0RELCB2YWwpOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0FDREQsIHZhbCk7 Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNzYWNkIHw9ICgweDYgPDwg NCk7Cj4KPiBAQCAtMzk4LDcgKzM5OCw3IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX3Bs bChzdHJ1Y3Qgc25kX3NvY19kYWkKPiAqY3B1X2RhaSwgaW50IHBsbF9pZCwKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoHJldHVybiAtRUlOVkFMOwo+IMKgIMKgIMKgIMKgfQo+Cj4gLSDCoCDCoCDC oCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0QsIHNzYWNkKTsKPiArIMKgIMKgIMKgIHB4YV9zc3Bf d3JpdGVfcmVnKHNzcCwgU1NBQ0QsIHNzYWNkKTsKPgo+IMKgIMKgIMKgIMKgcmV0dXJuIDA7Cj4g wqB9Cj4gQEAgLTQxMyw3ICs0MTMsNyBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV90ZG1f c2xvdChzdHJ1Y3QKPiBzbmRfc29jX2RhaSAqY3B1X2RhaSwKPiDCoCDCoCDCoCDCoHN0cnVjdCBz c3BfZGV2aWNlICpzc3AgPSBwcml2LT5zc3A7Cj4gwqAgwqAgwqAgwqB1MzIgc3NjcjA7Cj4KPiAt IMKgIMKgIMKgIHNzY3IwID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApOwo+ICsgwqAgwqAgwqAg c3NjcjAgPSBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApOwo+IMKgIMKgIMKgIMKgc3NjcjAg Jj0gfihTU0NSMF9NT0QgfCBTU0NSMF9TbG90c1BlckZybSg4KSB8IFNTQ1IwX0VEU1MgfCBTU0NS MF9EU1MpOwo+Cj4gwqAgwqAgwqAgwqAvKiBzZXQgc2xvdCB3aWR0aCAqLwo+IEBAIC00MzAsMTAg KzQzMCwxMCBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV90ZG1fc2xvdChzdHJ1Y3QKPiBz bmRfc29jX2RhaSAqY3B1X2RhaSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNzY3IwIHw9IFNT Q1IwX1Nsb3RzUGVyRnJtKHNsb3RzKTsKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLyogc2V0 IGFjdGl2ZSBzbG90IG1hc2sgKi8KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNzcF93cml0ZV9y ZWcoc3NwLCBTU1RTQSwgdHhfbWFzayk7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3Bfd3Jp dGVfcmVnKHNzcCwgU1NSU0EsIHJ4X21hc2spOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhh X3NzcF93cml0ZV9yZWcoc3NwLCBTU1RTQSwgdHhfbWFzayk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTUlNBLCByeF9tYXNrKTsKPiDCoCDCoCDCoCDC oH0KPiAtIMKgIMKgIMKgIHNzcF93cml0ZV9yZWcoc3NwLCBTU0NSMCwgc3NjcjApOwo+ICsgwqAg wqAgwqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMCwgc3NjcjApOwo+Cj4gwqAgwqAgwqAg wqByZXR1cm4gMDsKPiDCoH0KPiBAQCAtNDQ4LDEyICs0NDgsMTIgQEAgc3RhdGljIGludCBweGFf c3NwX3NldF9kYWlfdHJpc3RhdGUoc3RydWN0Cj4gc25kX3NvY19kYWkgKmNwdV9kYWksCj4gwqAg wqAgwqAgwqBzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwID0gcHJpdi0+c3NwOwo+IMKgIMKgIMKgIMKg dTMyIHNzY3IxOwo+Cj4gLSDCoCDCoCDCoCBzc2NyMSA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1Ix KTsKPiArIMKgIMKgIMKgIHNzY3IxID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IxKTsKPiDC oCDCoCDCoCDCoGlmICh0cmlzdGF0ZSkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNzY3IxICY9 IH5TU0NSMV9UVEU7Cj4gwqAgwqAgwqAgwqBlbHNlCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBz c2NyMSB8PSBTU0NSMV9UVEU7Cj4gLSDCoCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEs IHNzY3IxKTsKPiArIMKgIMKgIMKgIHB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEsIHNzY3Ix KTsKPgo+IMKgIMKgIMKgIMKgcmV0dXJuIDA7Cj4gwqB9Cj4gQEAgLTQ3NywxNCArNDc3LDE0IEBA IHN0YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX2ZtdChzdHJ1Y3QKPiBzbmRfc29jX2RhaSAqY3B1 X2RhaSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiAwOwo+Cj4gwqAgwqAgwqAgwqAv KiB3ZSBjYW4gb25seSBjaGFuZ2UgdGhlIHNldHRpbmdzIGlmIHRoZSBwb3J0IGlzIG5vdCBpbiB1 c2UgKi8KPiAtIMKgIMKgIMKgIGlmIChzc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCkgJiBTU0NSMF9T U0UpIHsKPiArIMKgIMKgIMKgIGlmIChweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApICYgU1ND UjBfU1NFKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkZXZfZXJyKCZzc3AtPnBkZXYtPmRl diwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJjYW4ndCBjaGFuZ2UgaGFy ZHdhcmUgZGFpIGZvcm1hdDogc3RyZWFtIGlzIGluIHVzZSIpOwo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgcmV0dXJuIC1FSU5WQUw7Cj4gwqAgwqAgwqAgwqB9Cj4KPiDCoCDCoCDCoCDCoC8qIHJl c2V0IHBvcnQgc2V0dGluZ3MgKi8KPiAtIMKgIMKgIMKgIHNzY3IwID0gc3NwX3JlYWRfcmVnKHNz cCwgU1NDUjApICYKPiArIMKgIMKgIMKgIHNzY3IwID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNT Q1IwKSAmCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoU1NDUjBfRUNTIHwgwqBTU0NSMF9OQ1Mg fCBTU0NSMF9NT0QgfCBTU0NSMF9BQ1MpOwo+IMKgIMKgIMKgIMKgc3NjcjEgPSBTU0NSMV9SeFRy ZXNoKDgpIHwgU1NDUjFfVHhUcmVzaCg3KTsKPiDCoCDCoCDCoCDCoHNzcHNwID0gMDsKPiBAQCAt NTM2LDkgKzUzNiw5IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX2ZtdChzdHJ1Y3Qgc25k X3NvY19kYWkgKmNwdV9kYWksCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm4gLUVJTlZB TDsKPiDCoCDCoCDCoCDCoH0KPgo+IC0gwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1Iw LCBzc2NyMCk7Cj4gLSDCoCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEsIHNzY3IxKTsK PiAtIMKgIMKgIMKgIHNzcF93cml0ZV9yZWcoc3NwLCBTU1BTUCwgc3Nwc3ApOwo+ICsgwqAgwqAg wqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMCwgc3NjcjApOwo+ICsgwqAgwqAgwqAgcHhh X3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMSwgc3NjcjEpOwo+ICsgwqAgwqAgwqAgcHhhX3NzcF93 cml0ZV9yZWcoc3NwLCBTU1BTUCwgc3Nwc3ApOwo+Cj4gwqAgwqAgwqAgwqBkdW1wX3JlZ2lzdGVy cyhzc3ApOwo+Cj4gQEAgLTU2Nyw3ICs1NjcsNyBAQCBzdGF0aWMgaW50IHB4YV9zc3BfaHdfcGFy YW1zKHN0cnVjdAo+IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCj4gwqAgwqAgwqAgwqB1 MzIgc3NjcjA7Cj4gwqAgwqAgwqAgwqB1MzIgc3Nwc3A7Cj4gwqAgwqAgwqAgwqBpbnQgd2lkdGgg PSBzbmRfcGNtX2Zvcm1hdF9waHlzaWNhbF93aWR0aChwYXJhbXNfZm9ybWF0KHBhcmFtcykpOwo+ IC0gwqAgwqAgwqAgaW50IHR0c2EgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU1RTQSkgJiAweGY7Cj4g KyDCoCDCoCDCoCBpbnQgdHRzYSA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU1RTQSkgJiAweGY7 Cj4KPiDCoCDCoCDCoCDCoC8qIGdlbmVyYXRlIGNvcnJlY3QgRE1BIHBhcmFtcyAqLwo+IMKgIMKg IMKgIMKgaWYgKGNwdV9kYWktPmRtYV9kYXRhKQo+IEBAIC01NzcsMjAgKzU3NywyMCBAQCBzdGF0 aWMgaW50IHB4YV9zc3BfaHdfcGFyYW1zKHN0cnVjdAo+IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0sCj4gwqAgwqAgwqAgwqAgKiB0byBmb3JjZSAxNi1iaXQgZnJhbWUgd2lkdGggb24gdGhl IHdpcmUgKGZvciBTMTZfTEUpLCBldmVuCj4gwqAgwqAgwqAgwqAgKiB3aXRoIHR3byBjaGFubmVs cy4gVXNlIDE2LWJpdCBETUEgdHJhbnNmZXJzIGZvciB0aGlzIGNhc2UuCj4gwqAgwqAgwqAgwqAg Ki8KPiAtIMKgIMKgIMKgIGNwdV9kYWktPmRtYV9kYXRhID0gc3NwX2dldF9kbWFfcGFyYW1zKHNz cCwKPiArIMKgIMKgIMKgIGNwdV9kYWktPmRtYV9kYXRhID0gcHhhX3NzcF9nZXRfZG1hX3BhcmFt cyhzc3AsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoKGNobiA9PSAyKSAm JiAodHRzYSAhPSAxKSkgfHwgKHdpZHRoID09IDMyKSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fUExBWUJB Q0spOwo+Cj4gwqAgwqAgwqAgwqAvKiB3ZSBjYW4gb25seSBjaGFuZ2UgdGhlIHNldHRpbmdzIGlm IHRoZSBwb3J0IGlzIG5vdCBpbiB1c2UgKi8KPiAtIMKgIMKgIMKgIGlmIChzc3BfcmVhZF9yZWco c3NwLCBTU0NSMCkgJiBTU0NSMF9TU0UpCj4gKyDCoCDCoCDCoCBpZiAocHhhX3NzcF9yZWFkX3Jl Zyhzc3AsIFNTQ1IwKSAmIFNTQ1IwX1NTRSkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVy biAwOwo+Cj4gwqAgwqAgwqAgwqAvKiBjbGVhciBzZWxlY3RlZCBTU1AgYml0cyAqLwo+IC0gwqAg wqAgwqAgc3NjcjAgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCkgJiB+KFNTQ1IwX0RTUyB8IFNT Q1IwX0VEU1MpOwo+IC0gwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBzc2NyMCk7 Cj4gKyDCoCDCoCDCoCBzc2NyMCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCkgJiB+KFNT Q1IwX0RTUyB8IFNTQ1IwX0VEU1MpOwo+ICsgwqAgwqAgwqAgcHhhX3NzcF93cml0ZV9yZWcoc3Nw LCBTU0NSMCwgc3NjcjApOwo+Cj4gwqAgwqAgwqAgwqAvKiBiaXQgc2l6ZSAqLwo+IC0gwqAgwqAg wqAgc3NjcjAgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCk7Cj4gKyDCoCDCoCDCoCBzc2NyMCA9 IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCk7Cj4gwqAgwqAgwqAgwqBzd2l0Y2ggKHBhcmFt c19mb3JtYXQocGFyYW1zKSkgewo+IMKgIMKgIMKgIMKgY2FzZSBTTkRSVl9QQ01fRk9STUFUX1Mx Nl9MRToKPiDCoCNpZmRlZiBDT05GSUdfUFhBM3h4Cj4gQEAgLTYwNiwxMyArNjA2LDEzIEBAIHN0 YXRpYyBpbnQgcHhhX3NzcF9od19wYXJhbXMoc3RydWN0Cj4gc25kX3BjbV9zdWJzdHJlYW0gKnN1 YnN0cmVhbSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNzY3IwIHw9IChTU0NSMF9FRFNTIHwg U1NDUjBfRGF0YVNpemUoMTYpKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJyZWFrOwo+IMKg IMKgIMKgIMKgfQo+IC0gwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBzc2NyMCk7 Cj4gKyDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBzc2NyMCk7Cj4KPiDC oCDCoCDCoCDCoHN3aXRjaCAocHJpdi0+ZGFpX2ZtdCAmIFNORF9TT0NfREFJRk1UX0ZPUk1BVF9N QVNLKSB7Cj4gwqAgwqAgwqAgwqBjYXNlIFNORF9TT0NfREFJRk1UX0kyUzoKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgc3Nwc3AgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU1BTUCk7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoHNzcHNwID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTUFNQKTsKPgo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKChzc3BfZ2V0X3Njcihzc3ApID09IDQpICYmICh3aWR0 aCA9PSAxNikpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmICgocHhhX3NzcF9nZXRfc2Ny KHNzcCkgPT0gNCkgJiYgKHdpZHRoID09IDE2KSkgewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgLyogVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgYml0Y2xrIGlz IDY0ZnMKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogYW5kIHdlJ3JlIG5v dCBkZWFsaW5nIHdpdGggMiozMiBiaXRzIG9mIGF1ZGlvCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAqIHNhbXBsZXMuCj4gQEAgLTY0Niw3ICs2NDYsNyBAQCBzdGF0aWMgaW50 IHB4YV9zc3BfaHdfcGFyYW1zKHN0cnVjdAo+IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0s Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzc3BzcCB8PSBTU1BTUF9ETVlT VFJUKDEpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+Cj4gLSDCoCDCoCDCoCDCoCDCoCDC oCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NQU1AsIHNzcHNwKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NQU1AsIHNzcHNwKTsKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgZGVmYXVsdDoKPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoGJyZWFrOwo+IEBAIC02NzcsNDUgKzY3Nyw0NSBAQCBzdGF0aWMgaW50IHB4YV9z c3BfdHJpZ2dlcihzdHJ1Y3QKPiBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgY21k LAo+Cj4gwqAgwqAgwqAgwqBzd2l0Y2ggKGNtZCkgewo+IMKgIMKgIMKgIMKgY2FzZSBTTkRSVl9Q Q01fVFJJR0dFUl9SRVNVTUU6Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3BfZW5hYmxlKHNz cCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBweGFfc3NwX2VuYWJsZShzc3ApOwo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gwqAgwqAgwqAgwqBjYXNlIFNORFJWX1BDTV9UUklH R0VSX1BBVVNFX1JFTEVBU0U6Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YWwgPSBzc3BfcmVh ZF9yZWcoc3NwLCBTU0NSMSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YWwgPSBweGFfc3Nw X3JlYWRfcmVnKHNzcCwgU1NDUjEpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHN1YnN0 cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0spCj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB2YWwgfD0gU1NDUjFfVFNSRTsKPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoGVsc2UKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHZhbCB8 PSBTU0NSMV9SU1JFOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhzc3As IFNTQ1IxLCB2YWwpOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFsID0gc3NwX3JlYWRfcmVn KHNzcCwgU1NTUik7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwg U1NTUiwgdmFsKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB4YV9zc3Bfd3JpdGVfcmVnKHNz cCwgU1NDUjEsIHZhbCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YWwgPSBweGFfc3NwX3Jl YWRfcmVnKHNzcCwgU1NTUik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBweGFfc3NwX3dyaXRl X3JlZyhzc3AsIFNTU1IsIHZhbCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsKPiDC oCDCoCDCoCDCoGNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RBUlQ6Cj4gLSDCoCDCoCDCoCDCoCDC oCDCoCDCoCB2YWwgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU0NSMSk7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCB2YWwgPSBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjEpOwo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgaWYgKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fUExB WUJBQ0spCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB2YWwgfD0gU1NDUjFf VFNSRTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVsc2UKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHZhbCB8PSBTU0NSMV9SU1JFOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAg wqAgc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCB2YWwpOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAg wqAgc3NwX2VuYWJsZShzc3ApOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhhX3NzcF93cml0 ZV9yZWcoc3NwLCBTU0NSMSwgdmFsKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB4YV9zc3Bf ZW5hYmxlKHNzcCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsKPiDCoCDCoCDCoCDC oGNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RPUDoKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZh bCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IxKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZh bCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMSk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBpZiAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykKPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHZhbCAmPSB+U1NDUjFfVFNSRTsKPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVsc2UKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHZhbCAmPSB+U1NDUjFfUlNSRTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNzcF93 cml0ZV9yZWcoc3NwLCBTU0NSMSwgdmFsKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB4YV9z c3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEsIHZhbCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBi cmVhazsKPiDCoCDCoCDCoCDCoGNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1VTUEVORDoKPiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHNzcF9kaXNhYmxlKHNzcCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBweGFfc3NwX2Rpc2FibGUoc3NwKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJyZWFr Owo+IMKgIMKgIMKgIMKgY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9QQVVTRV9QVVNIOgo+IC0gwqAg wqAgwqAgwqAgwqAgwqAgwqAgdmFsID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjEpOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgdmFsID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IxKTsKPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChzdWJzdHJlYW0tPnN0cmVhbSA9PSBTTkRSVl9QQ01f U1RSRUFNX1BMQVlCQUNLKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdmFs ICY9IH5TU0NSMV9UU1JFOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZWxzZQo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdmFsICY9IH5TU0NSMV9SU1JFOwo+IC0gwqAgwqAg wqAgwqAgwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCB2YWwpOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMSwgdmFsKTsKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGJyZWFrOwo+Cj4gwqAgwqAgwqAgwqBkZWZhdWx0Ogo+IEBAIC03 MzcsNyArNzM3LDcgQEAgc3RhdGljIGludCBweGFfc3NwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYsCj4gwqAgwqAgwqAgwqBpZiAoIXByaXYpCj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqByZXR1cm4gLUVOT01FTTsKPgo+IC0gwqAgwqAgwqAgcHJpdi0+c3NwID0gc3NwX3JlcXVl c3QoZGFpLT5pZCArIDEsICJTb0MgYXVkaW8iKTsKPiArIMKgIMKgIMKgIHByaXYtPnNzcCA9IHB4 YV9zc3BfcmVxdWVzdChkYWktPmlkICsgMSwgIlNvQyBhdWRpbyIpOwo+IMKgIMKgIMKgIMKgaWYg KHByaXYtPnNzcCA9PSBOVUxMKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXQgPSAtRU5P REVWOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ290byBlcnJfcHJpdjsKPiBAQCAtNzU3LDcg Kzc1Nyw3IEBAIHN0YXRpYyB2b2lkIHB4YV9zc3BfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBz dHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSkKPiDCoHsKPiDCoCDCoCDCoCDCoHN0cnVjdCBzc3BfcHJp diAqcHJpdiA9IGRhaS0+cHJpdmF0ZV9kYXRhOwo+IC0gwqAgwqAgwqAgc3NwX2ZyZWUocHJpdi0+ c3NwKTsKPiArIMKgIMKgIMKgIHB4YV9zc3BfZnJlZShwcml2LT5zc3ApOwo+IMKgfQo+Cj4gwqAj ZGVmaW5lIFBYQV9TU1BfUkFURVMgKFNORFJWX1BDTV9SQVRFXzgwMDAgfCBTTkRSVl9QQ01fUkFU RV8xMTAyNSB8XAo+IC0tCj4gMS41LjYuNQo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0CkFsc2EtZGV2ZWxAYWxz YS1wcm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5hbHNhLXByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8vYWxzYS1kZXZlbAo=