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, 1 Apr 2010 15:33:36 +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-f199.google.com (mail-qy0-f199.google.com [209.85.221.199]) by alsa0.perex.cz (Postfix) with ESMTP id 3CC3C2448B for ; Thu, 1 Apr 2010 09:33:59 +0200 (CEST) Received: by qyk37 with SMTP id 37so964681qyk.8 for ; Thu, 01 Apr 2010 00:33:56 -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 T24gV2VkLCBNYXIgMzEsIDIwMTAgYXQgODo0NiBQTSwgSGFvamlhbiBaaHVhbmcKPGhhb2ppYW4u emh1YW5nQGdtYWlsLmNvbT4gd3JvdGU6Cj4gRnJvbSBiNTJhMGQyNjg3ZTgyZjgxZDM4MTk4Y2I0 NTBiNmEzOWE5ZTUzODUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+IEZyb206IEhhb2ppYW4g Wmh1YW5nIDxoYW9qaWFuLnpodWFuZ0BtYXJ2ZWxsLmNvbT4KPiBEYXRlOiBXZWQsIDMxIE1hciAy MDEwIDE1OjA4OjU1IC0wNDAwCj4gU3ViamVjdDogW1BBVENIXSBbQVJNXSBweGE6IGFkZCBuYW1l c3BhY2Ugb24gc3NwCj4KPiBJbiBvcmRlciB0byBwcmV2ZW50IGNvZGUgYW1iaWd1b3VzLCBhZGQg bmFtZXNwYWNlIG9uIGZ1bmN0aW9ucyBpbiBzc3AgZHJpdmVyLgo+CgpIYW9qaWFuLAoKVGhpcyBp cyBub3QgbmVjZXNzYXJ5LCBwcm92aWRlZCB0aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgc3RhdGlj IGFscmVhZHkuClVubGVzcyB0aGlzIGRyaXZlciBpcyBnb2luZyB0byBzdXBwb3J0IGEgZGlmZmVy ZW50IFNTUCwgaW4gd2hpY2ggY2FzZSBhCnNlcGFyYXRlIGRyaXZlciBpcyBuZWVkZWQgdGhlbi4K CldoYXQncyB0aGUgcmVhbCBtb3RpdmF0aW9uIGJlaGluZCB0aGlzPwoKPiBTaWduZWQtb2ZmLWJ5 OiBIYW9qaWFuIFpodWFuZyA8aGFvamlhbi56aHVhbmdAbWFydmVsbC5jb20+Cj4gLS0tCj4gwqBh cmNoL2FybS9wbGF0LXB4YS9pbmNsdWRlL3BsYXQvc3NwLmggfCDCoCAxMiArKy0tCj4gwqBhcmNo L2FybS9wbGF0LXB4YS9zc3AuYyDCoCDCoCDCoCDCoCDCoCDCoCDCoHwgwqAgMjIgKysrLS0tCj4g wqBkcml2ZXJzL3NwaS9weGEyeHhfc3BpLmMgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoDggKy0K PiDCoHNvdW5kL3NvYy9weGEvcHhhLXNzcC5jIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoDEzMiAr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gwqA0IGZpbGVzIGNoYW5nZWQsIDg3 IGluc2VydGlvbnMoKyksIDg3IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJt L3BsYXQtcHhhL2luY2x1ZGUvcGxhdC9zc3AuaAo+IGIvYXJjaC9hcm0vcGxhdC1weGEvaW5jbHVk ZS9wbGF0L3NzcC5oCj4gaW5kZXggZDE2ZDc5YS4uZmU0MzE1MCAxMDA2NDQKPiAtLS0gYS9hcmNo L2FybS9wbGF0LXB4YS9pbmNsdWRlL3BsYXQvc3NwLmgKPiArKysgYi9hcmNoL2FybS9wbGF0LXB4 YS9pbmNsdWRlL3BsYXQvc3NwLmgKPiBAQCAtMTU5LDI4ICsxNTksMjggQEAgc3RydWN0IHNzcF9k ZXZpY2Ugewo+IMKgfTsKPgo+IMKgLyoqCj4gLSAqIHNzcF93cml0ZV9yZWcgLSBXcml0ZSB0byBh IFNTUCByZWdpc3Rlcgo+ICsgKiBweGFfc3NwX3dyaXRlX3JlZyAtIFdyaXRlIHRvIGEgU1NQIHJl Z2lzdGVyCj4gwqAqCj4gwqAqIEBkZXY6IFNTUCBkZXZpY2UgdG8gYWNjZXNzCj4gwqAqIEByZWc6 IFJlZ2lzdGVyIHRvIHdyaXRlIHRvCj4gwqAqIEB2YWw6IFZhbHVlIHRvIGJlIHdyaXR0ZW4uCj4g wqAqLwo+IC1zdGF0aWMgaW5saW5lIHZvaWQgc3NwX3dyaXRlX3JlZyhzdHJ1Y3Qgc3NwX2Rldmlj ZSAqZGV2LCB1MzIgcmVnLCB1MzIgdmFsKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcHhhX3NzcF93 cml0ZV9yZWcoc3RydWN0IHNzcF9kZXZpY2UgKmRldiwgdTMyIHJlZywgdTMyIHZhbCkKPiDCoHsK PiDCoCDCoCDCoCDCoF9fcmF3X3dyaXRlbCh2YWwsIGRldi0+bW1pb19iYXNlICsgcmVnKTsKPiDC oH0KPgo+IMKgLyoqCj4gLSAqIHNzcF9yZWFkX3JlZyAtIFJlYWQgZnJvbSBhIFNTUCByZWdpc3Rl cgo+ICsgKiBweGFfc3NwX3JlYWRfcmVnIC0gUmVhZCBmcm9tIGEgU1NQIHJlZ2lzdGVyCj4gwqAq Cj4gwqAqIEBkZXY6IFNTUCBkZXZpY2UgdG8gYWNjZXNzCj4gwqAqIEByZWc6IFJlZ2lzdGVyIHRv IHJlYWQgZnJvbQo+IMKgKi8KPiAtc3RhdGljIGlubGluZSB1MzIgc3NwX3JlYWRfcmVnKHN0cnVj dCBzc3BfZGV2aWNlICpkZXYsIHUzMiByZWcpCj4gK3N0YXRpYyBpbmxpbmUgdTMyIHB4YV9zc3Bf cmVhZF9yZWcoc3RydWN0IHNzcF9kZXZpY2UgKmRldiwgdTMyIHJlZykKPiDCoHsKPiDCoCDCoCDC oCDCoHJldHVybiBfX3Jhd19yZWFkbChkZXYtPm1taW9fYmFzZSArIHJlZyk7Cj4gwqB9Cj4KPiAt c3RydWN0IHNzcF9kZXZpY2UgKnNzcF9yZXF1ZXN0KGludCBwb3J0LCBjb25zdCBjaGFyICpsYWJl bCk7Cj4gLXZvaWQgc3NwX2ZyZWUoc3RydWN0IHNzcF9kZXZpY2UgKik7Cj4gK3N0cnVjdCBzc3Bf ZGV2aWNlICpweGFfc3NwX3JlcXVlc3QoaW50IHBvcnQsIGNvbnN0IGNoYXIgKmxhYmVsKTsKPiAr dm9pZCBweGFfc3NwX2ZyZWUoc3RydWN0IHNzcF9kZXZpY2UgKik7Cj4gwqAjZW5kaWYgLyogX19B U01fQVJDSF9TU1BfSCAqLwo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXB4YS9zc3AuYyBi L2FyY2gvYXJtL3BsYXQtcHhhL3NzcC5jCj4gaW5kZXggY2ZlYmNkOC4uNTExODA1ZSAxMDA2NDQK PiAtLS0gYS9hcmNoL2FybS9wbGF0LXB4YS9zc3AuYwo+ICsrKyBiL2FyY2gvYXJtL3BsYXQtcHhh L3NzcC5jCj4gQEAgLTM3LDcgKzM3LDcgQEAKPiDCoHN0YXRpYyBERUZJTkVfTVVURVgoc3NwX2xv Y2spOwo+IMKgc3RhdGljIExJU1RfSEVBRChzc3BfbGlzdCk7Cj4KPiAtc3RydWN0IHNzcF9kZXZp Y2UgKnNzcF9yZXF1ZXN0KGludCBwb3J0LCBjb25zdCBjaGFyICpsYWJlbCkKPiArc3RydWN0IHNz cF9kZXZpY2UgKnB4YV9zc3BfcmVxdWVzdChpbnQgcG9ydCwgY29uc3QgY2hhciAqbGFiZWwpCj4g wqB7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwID0gTlVMTDsKPgo+IEBAIC01 OCw5ICs1OCw5IEBAIHN0cnVjdCBzc3BfZGV2aWNlICpzc3BfcmVxdWVzdChpbnQgcG9ydCwgY29u c3QgY2hhciAqbGFiZWwpCj4KPiDCoCDCoCDCoCDCoHJldHVybiBzc3A7Cj4gwqB9Cj4gLUVYUE9S VF9TWU1CT0woc3NwX3JlcXVlc3QpOwo+ICtFWFBPUlRfU1lNQk9MKHB4YV9zc3BfcmVxdWVzdCk7 Cj4KPiAtdm9pZCBzc3BfZnJlZShzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQo+ICt2b2lkIHB4YV9z c3BfZnJlZShzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQo+IMKgewo+IMKgIMKgIMKgIMKgbXV0ZXhf bG9jaygmc3NwX2xvY2spOwo+IMKgIMKgIMKgIMKgaWYgKHNzcC0+dXNlX2NvdW50KSB7Cj4gQEAg LTcwLDkgKzcwLDkgQEAgdm9pZCBzc3BfZnJlZShzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwKQo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgZGV2X2Vycigmc3NwLT5wZGV2LT5kZXYsICJkZXZpY2UgYWxy ZWFkeSBmcmVlXG4iKTsKPiDCoCDCoCDCoCDCoG11dGV4X3VubG9jaygmc3NwX2xvY2spOwo+IMKg fQo+IC1FWFBPUlRfU1lNQk9MKHNzcF9mcmVlKTsKPiArRVhQT1JUX1NZTUJPTChweGFfc3NwX2Zy ZWUpOwo+Cj4gLXN0YXRpYyBpbnQgX19kZXZpbml0IHNzcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQo+ICtzdGF0aWMgaW50IF9fZGV2aW5pdCBweGFfc3NwX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gwqB7Cj4gwqAgwqAgwqAgwqBjb25zdCBzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlX2lkICppZCA9IHBsYXRmb3JtX2dldF9kZXZpY2VfaWQocGRldik7Cj4g wqAgwqAgwqAgwqBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiBAQCAtMTY0LDcgKzE2NCw3IEBAIGVy cl9mcmVlOgo+IMKgIMKgIMKgIMKgcmV0dXJuIHJldDsKPiDCoH0KPgo+IC1zdGF0aWMgaW50IF9f ZGV2ZXhpdCBzc3BfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3N0YXRp YyBpbnQgX19kZXZleGl0IHB4YV9zc3BfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCj4gwqB7Cj4gwqAgwqAgwqAgwqBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiDCoCDCoCDCoCDC oHN0cnVjdCBzc3BfZGV2aWNlICpzc3A7Cj4gQEAgLTE5Niw5ICsxOTYsOSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHBsYXRmb3JtX2RldmljZV9pZCBzc3BfaWRfdGFibGVbXSA9IHsKPiDCoCDCoCDC oCDCoHsgfSwKPiDCoH07Cj4KPiAtc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3NwX2Ry aXZlciA9IHsKPiAtIMKgIMKgIMKgIC5wcm9iZSDCoCDCoCDCoCDCoCDCoD0gc3NwX3Byb2JlLAo+ IC0gwqAgwqAgwqAgLnJlbW92ZSDCoCDCoCDCoCDCoCA9IF9fZGV2ZXhpdF9wKHNzcF9yZW1vdmUp LAo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBweGFfc3NwX2RyaXZlciA9IHsKPiAr IMKgIMKgIMKgIC5wcm9iZSDCoCDCoCDCoCDCoCDCoD0gcHhhX3NzcF9wcm9iZSwKPiArIMKgIMKg IMKgIC5yZW1vdmUgwqAgwqAgwqAgwqAgPSBfX2RldmV4aXRfcChweGFfc3NwX3JlbW92ZSksCj4g wqAgwqAgwqAgwqAuZHJpdmVyIMKgIMKgIMKgIMKgID0gewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgLm93bmVyIMKgPSBUSElTX01PRFVMRSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC5uYW1l IMKgID0gInB4YTJ4eC1zc3AiLAo+IEBAIC0yMDgsMTIgKzIwOCwxMiBAQCBzdGF0aWMgc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBzc3BfZHJpdmVyID0gewo+Cj4gwqBzdGF0aWMgaW50IF9faW5pdCBw eGFfc3NwX2luaXQodm9pZCkKPiDCoHsKPiAtIMKgIMKgIMKgIHJldHVybiBwbGF0Zm9ybV9kcml2 ZXJfcmVnaXN0ZXIoJnNzcF9kcml2ZXIpOwo+ICsgwqAgwqAgwqAgcmV0dXJuIHBsYXRmb3JtX2Ry aXZlcl9yZWdpc3RlcigmcHhhX3NzcF9kcml2ZXIpOwo+IMKgfQo+Cj4gwqBzdGF0aWMgdm9pZCBf X2V4aXQgcHhhX3NzcF9leGl0KHZvaWQpCj4gwqB7Cj4gLSDCoCDCoCDCoCBwbGF0Zm9ybV9kcml2 ZXJfdW5yZWdpc3Rlcigmc3NwX2RyaXZlcik7Cj4gKyDCoCDCoCDCoCBwbGF0Zm9ybV9kcml2ZXJf dW5yZWdpc3RlcigmcHhhX3NzcF9kcml2ZXIpOwo+IMKgfQo+Cj4gwqBhcmNoX2luaXRjYWxsKHB4 YV9zc3BfaW5pdCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3B4YTJ4eF9zcGkuYyBiL2Ry aXZlcnMvc3BpL3B4YTJ4eF9zcGkuYwo+IGluZGV4IDRhNjRkYTcuLjJmZDdkNWEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9zcGkvcHhhMnh4X3NwaS5jCj4gKysrIGIvZHJpdmVycy9zcGkvcHhhMnh4 X3NwaS5jCj4gQEAgLTE0NjQsNyArMTQ2NCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHB4YTJ4eF9z cGlfcHJvYmUoc3RydWN0Cj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+Cj4gwqAgwqAgwqAgwqBw bGF0Zm9ybV9pbmZvID0gZGV2LT5wbGF0Zm9ybV9kYXRhOwo+Cj4gLSDCoCDCoCDCoCBzc3AgPSBz c3BfcmVxdWVzdChwZGV2LT5pZCwgcGRldi0+bmFtZSk7Cj4gKyDCoCDCoCDCoCBzc3AgPSBweGFf c3NwX3JlcXVlc3QocGRldi0+aWQsIHBkZXYtPm5hbWUpOwo+IMKgIMKgIMKgIMKgaWYgKHNzcCA9 PSBOVUxMKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkZXZfZXJyKCZwZGV2LT5kZXYsICJm YWlsZWQgdG8gcmVxdWVzdCBTU1AlZFxuIiwgcGRldi0+aWQpOwo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgcmV0dXJuIC1FTk9ERVY7Cj4gQEAgLTE0NzQsNyArMTQ3NCw3IEBAIHN0YXRpYyBpbnQg X19pbml0IHB4YTJ4eF9zcGlfcHJvYmUoc3RydWN0Cj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ IMKgIMKgIMKgIMKgbWFzdGVyID0gc3BpX2FsbG9jX21hc3RlcihkZXYsIHNpemVvZihzdHJ1Y3Qg ZHJpdmVyX2RhdGEpICsgMTYpOwo+IMKgIMKgIMKgIMKgaWYgKCFtYXN0ZXIpIHsKPiDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGRldl9lcnIoJnBkZXYtPmRldiwgImNhbm5vdCBhbGxvYyBzcGlfbWFz dGVyXG4iKTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNzcF9mcmVlKHNzcCk7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBweGFfc3NwX2ZyZWUoc3NwKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHJldHVybiAtRU5PTUVNOwo+IMKgIMKgIMKgIMKgfQo+IMKgIMKgIMKgIMKgZHJ2X2RhdGEg PSBzcGlfbWFzdGVyX2dldF9kZXZkYXRhKG1hc3Rlcik7Cj4gQEAgLTE2MDMsNyArMTYwMyw3IEBA IG91dF9lcnJvcl9pcnFfYWxsb2M6Cj4KPiDCoG91dF9lcnJvcl9tYXN0ZXJfYWxsb2M6Cj4gwqAg wqAgwqAgwqBzcGlfbWFzdGVyX3B1dChtYXN0ZXIpOwo+IC0gwqAgwqAgwqAgc3NwX2ZyZWUoc3Nw KTsKPiArIMKgIMKgIMKgIHB4YV9zc3BfZnJlZShzc3ApOwo+IMKgIMKgIMKgIMKgcmV0dXJuIHN0 YXR1czsKPiDCoH0KPgo+IEBAIC0xNjQ3LDcgKzE2NDcsNyBAQCBzdGF0aWMgaW50IHB4YTJ4eF9z cGlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gwqAgwqAgwqAgwqBmcmVl X2lycShzc3AtPmlycSwgZHJ2X2RhdGEpOwo+Cj4gwqAgwqAgwqAgwqAvKiBSZWxlYXNlIFNTUCAq Lwo+IC0gwqAgwqAgwqAgc3NwX2ZyZWUoc3NwKTsKPiArIMKgIMKgIMKgIHB4YV9zc3BfZnJlZShz c3ApOwo+Cj4gwqAgwqAgwqAgwqAvKiBEaXNjb25uZWN0IGZyb20gdGhlIFNQSSBmcmFtZXdvcmsg Ki8KPiDCoCDCoCDCoCDCoHNwaV91bnJlZ2lzdGVyX21hc3RlcihkcnZfZGF0YS0+bWFzdGVyKTsK PiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL3B4YS9weGEtc3NwLmMgYi9zb3VuZC9zb2MvcHhhL3B4 YS1zc3AuYwo+IGluZGV4IDRjYTkyNDUuLmVkNTRiZWYgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29j L3B4YS9weGEtc3NwLmMKPiArKysgYi9zb3VuZC9zb2MvcHhhL3B4YS1zc3AuYwo+IEBAIC01NSwx NSArNTUsMTUgQEAgc3RydWN0IHNzcF9wcml2IHsKPiDCoHN0YXRpYyB2b2lkIGR1bXBfcmVnaXN0 ZXJzKHN0cnVjdCBzc3BfZGV2aWNlICpzc3ApCj4gwqB7Cj4gwqAgwqAgwqAgwqBkZXZfZGJnKCZz c3AtPnBkZXYtPmRldiwgIlNTQ1IwIDB4JTA4eCBTU0NSMSAweCUwOHggU1NUTyAweCUwOHhcbiIs Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKSwgc3Nw X3JlYWRfcmVnKHNzcCwgU1NDUjEpLAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzc3BfcmVh ZF9yZWcoc3NwLCBTU1RPKSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHB4YV9zc3BfcmVh ZF9yZWcoc3NwLCBTU0NSMCksIHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMSksCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU1RPKSk7Cj4KPiDCoCDC oCDCoCDCoGRldl9kYmcoJnNzcC0+cGRldi0+ZGV2LCAiU1NQU1AgMHglMDh4IFNTU1IgMHglMDh4 IFNTQUNEIDB4JTA4eFxuIiwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3NwX3JlYWRfcmVn KHNzcCwgU1NQU1ApLCBzc3BfcmVhZF9yZWcoc3NwLCBTU1NSKSwKPiAtIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgc3NwX3JlYWRfcmVnKHNzcCwgU1NBQ0QpKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTUFNQKSwgcHhhX3NzcF9yZWFkX3JlZyhzc3As IFNTU1IpLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBweGFfc3NwX3JlYWRfcmVnKHNzcCwg U1NBQ0QpKTsKPiDCoH0KPgo+IC1zdGF0aWMgdm9pZCBzc3BfZW5hYmxlKHN0cnVjdCBzc3BfZGV2 aWNlICpzc3ApCj4gK3N0YXRpYyB2b2lkIHB4YV9zc3BfZW5hYmxlKHN0cnVjdCBzc3BfZGV2aWNl ICpzc3ApCj4gwqB7Cj4gwqAgwqAgwqAgwqB1aW50MzJfdCBzc2NyMDsKPgo+IEBAIC03MSw3ICs3 MSw3IEBAIHN0YXRpYyB2b2lkIHNzcF9lbmFibGUoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCkKPiDC oCDCoCDCoCDCoF9fcmF3X3dyaXRlbChzc2NyMCwgc3NwLT5tbWlvX2Jhc2UgKyBTU0NSMCk7Cj4g wqB9Cj4KPiAtc3RhdGljIHZvaWQgc3NwX2Rpc2FibGUoc3RydWN0IHNzcF9kZXZpY2UgKnNzcCkK PiArc3RhdGljIHZvaWQgcHhhX3NzcF9kaXNhYmxlKHN0cnVjdCBzc3BfZGV2aWNlICpzc3ApCj4g wqB7Cj4gwqAgwqAgwqAgwqB1aW50MzJfdCBzc2NyMDsKPgo+IEBAIC04NSw3ICs4NSw3IEBAIHN0 cnVjdCBweGEyeHhfcGNtX2RtYV9kYXRhIHsKPiDCoH07Cj4KPiDCoHN0YXRpYyBzdHJ1Y3QgcHhh Mnh4X3BjbV9kbWFfcGFyYW1zICoKPiAtc3NwX2dldF9kbWFfcGFyYW1zKHN0cnVjdCBzc3BfZGV2 aWNlICpzc3AsIGludCB3aWR0aDQsIGludCBvdXQpCj4gK3B4YV9zc3BfZ2V0X2RtYV9wYXJhbXMo c3RydWN0IHNzcF9kZXZpY2UgKnNzcCwgaW50IHdpZHRoNCwgaW50IG91dCkKPiDCoHsKPiDCoCDC oCDCoCDCoHN0cnVjdCBweGEyeHhfcGNtX2RtYV9kYXRhICpkbWE7Cj4KPiBAQCAtMTE3LDcgKzEx Nyw3IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9zdGFydHVwKHN0cnVjdAo+IHNuZF9wY21fc3Vic3Ry ZWFtICpzdWJzdHJlYW0sCj4KPiDCoCDCoCDCoCDCoGlmICghY3B1X2RhaS0+YWN0aXZlKSB7Cj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjbGtfZW5hYmxlKHNzcC0+Y2xrKTsKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHNzcF9kaXNhYmxlKHNzcCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBw eGFfc3NwX2Rpc2FibGUoc3NwKTsKPiDCoCDCoCDCoCDCoH0KPgo+IMKgIMKgIMKgIMKgaWYgKGNw dV9kYWktPmRtYV9kYXRhKSB7Cj4gQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgdm9pZCBweGFf c3NwX3NodXRkb3duKHN0cnVjdAo+IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCj4gwqAg wqAgwqAgwqBzdHJ1Y3Qgc3NwX2RldmljZSAqc3NwID0gcHJpdi0+c3NwOwo+Cj4gwqAgwqAgwqAg wqBpZiAoIWNwdV9kYWktPmFjdGl2ZSkgewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3NwX2Rp c2FibGUoc3NwKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB4YV9zc3BfZGlzYWJsZShzc3Ap Owo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2xrX2Rpc2FibGUoc3NwLT5jbGspOwo+IMKgIMKg IMKgIMKgfQo+Cj4gQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc3VzcGVu ZChzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWkpCj4gwqAgwqAgwqAgwqBwcml2LT50byDCoD0g X19yYXdfcmVhZGwoc3NwLT5tbWlvX2Jhc2UgKyBTU1RPKTsKPiDCoCDCoCDCoCDCoHByaXYtPnBz cCA9IF9fcmF3X3JlYWRsKHNzcC0+bW1pb19iYXNlICsgU1NQU1ApOwo+Cj4gLSDCoCDCoCDCoCBz c3BfZGlzYWJsZShzc3ApOwo+ICsgwqAgwqAgwqAgcHhhX3NzcF9kaXNhYmxlKHNzcCk7Cj4gwqAg wqAgwqAgwqBjbGtfZGlzYWJsZShzc3AtPmNsayk7Cj4gwqAgwqAgwqAgwqByZXR1cm4gMDsKPiDC oH0KPiBAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9yZXN1bWUoc3RydWN0 IHNuZF9zb2NfZGFpICpjcHVfZGFpKQo+IMKgIMKgIMKgIMKgX19yYXdfd3JpdGVsKHByaXYtPnBz cCwgc3NwLT5tbWlvX2Jhc2UgKyBTU1BTUCk7Cj4KPiDCoCDCoCDCoCDCoGlmIChjcHVfZGFpLT5h Y3RpdmUpCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3BfZW5hYmxlKHNzcCk7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBweGFfc3NwX2VuYWJsZShzc3ApOwo+IMKgIMKgIMKgIMKgZWxzZQo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2xrX2Rpc2FibGUoc3NwLT5jbGspOwo+Cj4gQEAgLTE5 Nyw5ICsxOTcsOSBAQCBzdGF0aWMgaW50IHB4YV9zc3BfcmVzdW1lKHN0cnVjdCBzbmRfc29jX2Rh aSAqY3B1X2RhaSkKPiDCoCogc3NwX3NldF9jbGtkaXYgLSBzZXQgU1NQIGNsb2NrIGRpdmlkZXIK PiDCoCogQGRpdjogc2VyaWFsIGNsb2NrIHJhdGUgZGl2aWRlcgo+IMKgKi8KPiAtc3RhdGljIHZv aWQgc3NwX3NldF9zY3Ioc3RydWN0IHNzcF9kZXZpY2UgKnNzcCwgdTMyIGRpdikKPiArc3RhdGlj IHZvaWQgcHhhX3NzcF9zZXRfc2NyKHN0cnVjdCBzc3BfZGV2aWNlICpzc3AsIHUzMiBkaXYpCj4g wqB7Cj4gLSDCoCDCoCDCoCB1MzIgc3NjcjAgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCk7Cj4g KyDCoCDCoCDCoCB1MzIgc3NjcjAgPSBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApOwo+Cj4g wqAgwqAgwqAgwqBpZiAoY3B1X2lzX3B4YTI1eCgpICYmIHNzcC0+dHlwZSA9PSBQWEEyNXhfU1NQ KSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzc2NyMCAmPSB+MHgwMDAwZmYwMDsKPiBAQCAt MjA4LDE1ICsyMDgsMTUgQEAgc3RhdGljIHZvaWQgc3NwX3NldF9zY3Ioc3RydWN0IHNzcF9kZXZp Y2UgKnNzcCwgdTMyIGRpdikKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNzY3IwICY9IH4weDAw MGZmZjAwOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3NjcjAgfD0gKGRpdiAtIDEpIDw8IDg7 IMKgIMKgIC8qIDEuLjQwOTYgKi8KPiDCoCDCoCDCoCDCoH0KPiAtIMKgIMKgIMKgIHNzcF93cml0 ZV9yZWcoc3NwLCBTU0NSMCwgc3NjcjApOwo+ICsgwqAgwqAgwqAgcHhhX3NzcF93cml0ZV9yZWco c3NwLCBTU0NSMCwgc3NjcjApOwo+IMKgfQo+Cj4gwqAvKioKPiAtICogc3NwX2dldF9jbGtkaXYg LSBnZXQgU1NQIGNsb2NrIGRpdmlkZXIKPiArICogcHhhX3NzcF9nZXRfY2xrZGl2IC0gZ2V0IFNT UCBjbG9jayBkaXZpZGVyCj4gwqAqLwo+IC1zdGF0aWMgdTMyIHNzcF9nZXRfc2NyKHN0cnVjdCBz c3BfZGV2aWNlICpzc3ApCj4gK3N0YXRpYyB1MzIgcHhhX3NzcF9nZXRfc2NyKHN0cnVjdCBzc3Bf ZGV2aWNlICpzc3ApCj4gwqB7Cj4gLSDCoCDCoCDCoCB1MzIgc3NjcjAgPSBzc3BfcmVhZF9yZWco c3NwLCBTU0NSMCk7Cj4gKyDCoCDCoCDCoCB1MzIgc3NjcjAgPSBweGFfc3NwX3JlYWRfcmVnKHNz cCwgU1NDUjApOwo+IMKgIMKgIMKgIMKgdTMyIGRpdjsKPgo+IMKgIMKgIMKgIMKgaWYgKGNwdV9p c19weGEyNXgoKSAmJiBzc3AtPnR5cGUgPT0gUFhBMjV4X1NTUCkKPiBAQCAtMjM2LDcgKzIzNiw3 IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9zZXRfZGFpX3N5c2NsayhzdHJ1Y3QKPiBzbmRfc29jX2Rh aSAqY3B1X2RhaSwKPiDCoCDCoCDCoCDCoHN0cnVjdCBzc3BfZGV2aWNlICpzc3AgPSBwcml2LT5z c3A7Cj4gwqAgwqAgwqAgwqBpbnQgdmFsOwo+Cj4gLSDCoCDCoCDCoCB1MzIgc3NjcjAgPSBzc3Bf cmVhZF9yZWcoc3NwLCBTU0NSMCkgJgo+ICsgwqAgwqAgwqAgdTMyIHNzY3IwID0gcHhhX3NzcF9y ZWFkX3JlZyhzc3AsIFNTQ1IwKSAmCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB+KFNTQ1IwX0VD UyB8IMKgU1NDUjBfTkNTIHwgU1NDUjBfTU9EIHwgU1NDUjBfQUNTKTsKPgo+IMKgIMKgIMKgIMKg ZGV2X2RiZygmc3NwLT5wZGV2LT5kZXYsCj4gQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgaW50 IHB4YV9zc3Bfc2V0X2RhaV9zeXNjbGsoc3RydWN0Cj4gc25kX3NvY19kYWkgKmNwdV9kYWksCj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsKPiDCoCDCoCDCoCDCoGNhc2UgUFhBX1NTUF9D TEtfQVVESU86Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBwcml2LT5zeXNjbGsgPSAwOwo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgc3NwX3NldF9zY3Ioc3NwLCAxKTsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHB4YV9zc3Bfc2V0X3Njcihzc3AsIDEpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgc3NjcjAgfD0gU1NDUjBfQUNTOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4g wqAgwqAgwqAgwqBkZWZhdWx0Ogo+IEBAIC0yNzUsOCArMjc1LDggQEAgc3RhdGljIGludCBweGFf c3NwX3NldF9kYWlfc3lzY2xrKHN0cnVjdAo+IHNuZF9zb2NfZGFpICpjcHVfZGFpLAo+IMKgIMKg IMKgIMKgICogb24gUFhBMnh4LiDCoE9uIFBYQTN4eCBpdCBtdXN0IGJlIGVuYWJsZWQgd2hlbiBk b2luZyBzby4gKi8KPiDCoCDCoCDCoCDCoGlmICghY3B1X2lzX3B4YTN4eCgpKQo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgY2xrX2Rpc2FibGUoc3NwLT5jbGspOwo+IC0gwqAgwqAgwqAgdmFsID0g c3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApIHwgc3NjcjA7Cj4gLSDCoCDCoCDCoCBzc3Bfd3JpdGVf cmVnKHNzcCwgU1NDUjAsIHZhbCk7Cj4gKyDCoCDCoCDCoCB2YWwgPSBweGFfc3NwX3JlYWRfcmVn KHNzcCwgU1NDUjApIHwgc3NjcjA7Cj4gKyDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3As IFNTQ1IwLCB2YWwpOwo+IMKgIMKgIMKgIMKgaWYgKCFjcHVfaXNfcHhhM3h4KCkpCj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBjbGtfZW5hYmxlKHNzcC0+Y2xrKTsKPgo+IEBAIC0yOTUsMTEgKzI5 NSwxMSBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV9jbGtkaXYoc3RydWN0Cj4gc25kX3Nv Y19kYWkgKmNwdV9kYWksCj4KPiDCoCDCoCDCoCDCoHN3aXRjaCAoZGl2X2lkKSB7Cj4gwqAgwqAg wqAgwqBjYXNlIFBYQV9TU1BfQVVESU9fRElWX0FDRFM6Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDC oCB2YWwgPSAoc3NwX3JlYWRfcmVnKHNzcCwgU1NBQ0QpICYgfjB4NykgfCBTU0FDRF9BQ0RTKGRp dik7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0QsIHZh bCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YWwgPSAocHhhX3NzcF9yZWFkX3JlZyhzc3As IFNTQUNEKSAmIH4weDcpIHwgU1NBQ0RfQUNEUyhkaXYpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0FDRCwgdmFsKTsKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgY2FzZSBQWEFfU1NQX0FVRElPX0RJVl9TQ0RCOgo+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFsID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NBQ0QpOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFsID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQUNE KTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHZhbCAmPSB+U1NBQ0RfU0NEQjsKPiDCoCNpZiBk ZWZpbmVkKENPTkZJR19QWEEzeHgpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoY3B1X2lz X3B4YTN4eCgpKQo+IEBAIC0zMjIsMTAgKzMyMiwxMCBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0 X2RhaV9jbGtkaXYoc3RydWN0Cj4gc25kX3NvY19kYWkgKmNwdV9kYWksCj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBkZWZhdWx0Ogo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg cmV0dXJuIC1FSU5WQUw7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NBQ0QsIHZhbCk7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQUNELCB2YWwpOwo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gwqAgwqAgwqAgwqBjYXNlIFBYQV9TU1BfRElWX1NDUjoK PiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNzcF9zZXRfc2NyKHNzcCwgZGl2KTsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHB4YV9zc3Bfc2V0X3Njcihzc3AsIGRpdik7Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBicmVhazsKPiDCoCDCoCDCoCDCoGRlZmF1bHQ6Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqByZXR1cm4gLUVOT0RFVjsKPiBAQCAtMzQyLDExICszNDIsMTEgQEAgc3RhdGljIGlu dCBweGFfc3NwX3NldF9kYWlfcGxsKHN0cnVjdAo+IHNuZF9zb2NfZGFpICpjcHVfZGFpLCBpbnQg cGxsX2lkLAo+IMKgewo+IMKgIMKgIMKgIMKgc3RydWN0IHNzcF9wcml2ICpwcml2ID0gY3B1X2Rh aS0+cHJpdmF0ZV9kYXRhOwo+IMKgIMKgIMKgIMKgc3RydWN0IHNzcF9kZXZpY2UgKnNzcCA9IHBy aXYtPnNzcDsKPiAtIMKgIMKgIMKgIHUzMiBzc2FjZCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQUNE KSAmIH4weDcwOwo+ICsgwqAgwqAgwqAgdTMyIHNzYWNkID0gcHhhX3NzcF9yZWFkX3JlZyhzc3As IFNTQUNEKSAmIH4weDcwOwo+Cj4gwqAjaWYgZGVmaW5lZChDT05GSUdfUFhBM3h4KQo+IMKgIMKg IMKgIMKgaWYgKGNwdV9pc19weGEzeHgoKSkKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNzcF93 cml0ZV9yZWcoc3NwLCBTU0FDREQsIDApOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhhX3Nz cF93cml0ZV9yZWcoc3NwLCBTU0FDREQsIDApOwo+IMKgI2VuZGlmCj4KPiDCoCDCoCDCoCDCoHN3 aXRjaCAoZnJlcV9vdXQpIHsKPiBAQCAtMzg0LDcgKzM4NCw3IEBAIHN0YXRpYyBpbnQgcHhhX3Nz cF9zZXRfZGFpX3BsbChzdHJ1Y3Qgc25kX3NvY19kYWkKPiAqY3B1X2RhaSwgaW50IHBsbF9pZCwK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHZhbCA9IHRtcDsKPgo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdmFsID0gKHZhbCA8PCAxNikgfCA2NDsKPiAt IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNzcF93cml0ZV9yZWcoc3NwLCBTU0FD REQsIHZhbCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBweGFfc3NwX3dy aXRlX3JlZyhzc3AsIFNTQUNERCwgdmFsKTsKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgc3NhY2QgfD0gKDB4NiA8PCA0KTsKPgo+IEBAIC0zOTgsNyArMzk4LDcgQEAgc3Rh dGljIGludCBweGFfc3NwX3NldF9kYWlfcGxsKHN0cnVjdCBzbmRfc29jX2RhaQo+ICpjcHVfZGFp LCBpbnQgcGxsX2lkLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIC1FSU5WQUw7Cj4g wqAgwqAgwqAgwqB9Cj4KPiAtIMKgIMKgIMKgIHNzcF93cml0ZV9yZWcoc3NwLCBTU0FDRCwgc3Nh Y2QpOwo+ICsgwqAgwqAgwqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0FDRCwgc3NhY2QpOwo+ Cj4gwqAgwqAgwqAgwqByZXR1cm4gMDsKPiDCoH0KPiBAQCAtNDEzLDcgKzQxMyw3IEBAIHN0YXRp YyBpbnQgcHhhX3NzcF9zZXRfZGFpX3RkbV9zbG90KHN0cnVjdAo+IHNuZF9zb2NfZGFpICpjcHVf ZGFpLAo+IMKgIMKgIMKgIMKgc3RydWN0IHNzcF9kZXZpY2UgKnNzcCA9IHByaXYtPnNzcDsKPiDC oCDCoCDCoCDCoHUzMiBzc2NyMDsKPgo+IC0gwqAgwqAgwqAgc3NjcjAgPSBzc3BfcmVhZF9yZWco c3NwLCBTU0NSMCk7Cj4gKyDCoCDCoCDCoCBzc2NyMCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBT U0NSMCk7Cj4gwqAgwqAgwqAgwqBzc2NyMCAmPSB+KFNTQ1IwX01PRCB8IFNTQ1IwX1Nsb3RzUGVy RnJtKDgpIHwgU1NDUjBfRURTUyB8IFNTQ1IwX0RTUyk7Cj4KPiDCoCDCoCDCoCDCoC8qIHNldCBz bG90IHdpZHRoICovCj4gQEAgLTQzMCwxMCArNDMwLDEwIEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9z ZXRfZGFpX3RkbV9zbG90KHN0cnVjdAo+IHNuZF9zb2NfZGFpICpjcHVfZGFpLAo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgc3NjcjAgfD0gU1NDUjBfU2xvdHNQZXJGcm0oc2xvdHMpOwo+Cj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBzZXQgYWN0aXZlIHNsb3QgbWFzayAqLwo+IC0gwqAgwqAg wqAgwqAgwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhzc3AsIFNTVFNBLCB0eF9tYXNrKTsKPiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHNzcF93cml0ZV9yZWcoc3NwLCBTU1JTQSwgcnhfbWFzayk7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTVFNBLCB0eF9t YXNrKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NS U0EsIHJ4X21hc2spOwo+IMKgIMKgIMKgIMKgfQo+IC0gwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhz c3AsIFNTQ1IwLCBzc2NyMCk7Cj4gKyDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNT Q1IwLCBzc2NyMCk7Cj4KPiDCoCDCoCDCoCDCoHJldHVybiAwOwo+IMKgfQo+IEBAIC00NDgsMTIg KzQ0OCwxMiBAQCBzdGF0aWMgaW50IHB4YV9zc3Bfc2V0X2RhaV90cmlzdGF0ZShzdHJ1Y3QKPiBz bmRfc29jX2RhaSAqY3B1X2RhaSwKPiDCoCDCoCDCoCDCoHN0cnVjdCBzc3BfZGV2aWNlICpzc3Ag PSBwcml2LT5zc3A7Cj4gwqAgwqAgwqAgwqB1MzIgc3NjcjE7Cj4KPiAtIMKgIMKgIMKgIHNzY3Ix ID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjEpOwo+ICsgwqAgwqAgwqAgc3NjcjEgPSBweGFfc3Nw X3JlYWRfcmVnKHNzcCwgU1NDUjEpOwo+IMKgIMKgIMKgIMKgaWYgKHRyaXN0YXRlKQo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgc3NjcjEgJj0gflNTQ1IxX1RURTsKPiDCoCDCoCDCoCDCoGVsc2UK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNzY3IxIHw9IFNTQ1IxX1RURTsKPiAtIMKgIMKgIMKg IHNzcF93cml0ZV9yZWcoc3NwLCBTU0NSMSwgc3NjcjEpOwo+ICsgwqAgwqAgwqAgcHhhX3NzcF93 cml0ZV9yZWcoc3NwLCBTU0NSMSwgc3NjcjEpOwo+Cj4gwqAgwqAgwqAgwqByZXR1cm4gMDsKPiDC oH0KPiBAQCAtNDc3LDE0ICs0NzcsMTQgQEAgc3RhdGljIGludCBweGFfc3NwX3NldF9kYWlfZm10 KHN0cnVjdAo+IHNuZF9zb2NfZGFpICpjcHVfZGFpLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg cmV0dXJuIDA7Cj4KPiDCoCDCoCDCoCDCoC8qIHdlIGNhbiBvbmx5IGNoYW5nZSB0aGUgc2V0dGlu Z3MgaWYgdGhlIHBvcnQgaXMgbm90IGluIHVzZSAqLwo+IC0gwqAgwqAgwqAgaWYgKHNzcF9yZWFk X3JlZyhzc3AsIFNTQ1IwKSAmIFNTQ1IwX1NTRSkgewo+ICsgwqAgwqAgwqAgaWYgKHB4YV9zc3Bf cmVhZF9yZWcoc3NwLCBTU0NSMCkgJiBTU0NSMF9TU0UpIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoGRldl9lcnIoJnNzcC0+cGRldi0+ZGV2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgImNhbid0IGNoYW5nZSBoYXJkd2FyZSBkYWkgZm9ybWF0OiBzdHJlYW0gaXMgaW4g dXNlIik7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm4gLUVJTlZBTDsKPiDCoCDCoCDC oCDCoH0KPgo+IMKgIMKgIMKgIMKgLyogcmVzZXQgcG9ydCBzZXR0aW5ncyAqLwo+IC0gwqAgwqAg wqAgc3NjcjAgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU0NSMCkgJgo+ICsgwqAgwqAgwqAgc3NjcjAg PSBweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApICYKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oChTU0NSMF9FQ1MgfCDCoFNTQ1IwX05DUyB8IFNTQ1IwX01PRCB8IFNTQ1IwX0FDUyk7Cj4gwqAg wqAgwqAgwqBzc2NyMSA9IFNTQ1IxX1J4VHJlc2goOCkgfCBTU0NSMV9UeFRyZXNoKDcpOwo+IMKg IMKgIMKgIMKgc3Nwc3AgPSAwOwo+IEBAIC01MzYsOSArNTM2LDkgQEAgc3RhdGljIGludCBweGFf c3NwX3NldF9kYWlfZm10KHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSwKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoHJldHVybiAtRUlOVkFMOwo+IMKgIMKgIMKgIMKgfQo+Cj4gLSDCoCDCoCDC oCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjAsIHNzY3IwKTsKPiAtIMKgIMKgIMKgIHNzcF93cml0 ZV9yZWcoc3NwLCBTU0NSMSwgc3NjcjEpOwo+IC0gwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhzc3As IFNTUFNQLCBzc3BzcCk7Cj4gKyDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1Iw LCBzc2NyMCk7Cj4gKyDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCBzc2Ny MSk7Cj4gKyDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTUFNQLCBzc3BzcCk7Cj4K PiDCoCDCoCDCoCDCoGR1bXBfcmVnaXN0ZXJzKHNzcCk7Cj4KPiBAQCAtNTY3LDcgKzU2Nyw3IEBA IHN0YXRpYyBpbnQgcHhhX3NzcF9od19wYXJhbXMoc3RydWN0Cj4gc25kX3BjbV9zdWJzdHJlYW0g KnN1YnN0cmVhbSwKPiDCoCDCoCDCoCDCoHUzMiBzc2NyMDsKPiDCoCDCoCDCoCDCoHUzMiBzc3Bz cDsKPiDCoCDCoCDCoCDCoGludCB3aWR0aCA9IHNuZF9wY21fZm9ybWF0X3BoeXNpY2FsX3dpZHRo KHBhcmFtc19mb3JtYXQocGFyYW1zKSk7Cj4gLSDCoCDCoCDCoCBpbnQgdHRzYSA9IHNzcF9yZWFk X3JlZyhzc3AsIFNTVFNBKSAmIDB4ZjsKPiArIMKgIMKgIMKgIGludCB0dHNhID0gcHhhX3NzcF9y ZWFkX3JlZyhzc3AsIFNTVFNBKSAmIDB4ZjsKPgo+IMKgIMKgIMKgIMKgLyogZ2VuZXJhdGUgY29y cmVjdCBETUEgcGFyYW1zICovCj4gwqAgwqAgwqAgwqBpZiAoY3B1X2RhaS0+ZG1hX2RhdGEpCj4g QEAgLTU3NywyMCArNTc3LDIwIEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9od19wYXJhbXMoc3RydWN0 Cj4gc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKPiDCoCDCoCDCoCDCoCAqIHRvIGZvcmNl IDE2LWJpdCBmcmFtZSB3aWR0aCBvbiB0aGUgd2lyZSAoZm9yIFMxNl9MRSksIGV2ZW4KPiDCoCDC oCDCoCDCoCAqIHdpdGggdHdvIGNoYW5uZWxzLiBVc2UgMTYtYml0IERNQSB0cmFuc2ZlcnMgZm9y IHRoaXMgY2FzZS4KPiDCoCDCoCDCoCDCoCAqLwo+IC0gwqAgwqAgwqAgY3B1X2RhaS0+ZG1hX2Rh dGEgPSBzc3BfZ2V0X2RtYV9wYXJhbXMoc3NwLAo+ICsgwqAgwqAgwqAgY3B1X2RhaS0+ZG1hX2Rh dGEgPSBweGFfc3NwX2dldF9kbWFfcGFyYW1zKHNzcCwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCgoY2huID09IDIpICYmICh0dHNhICE9IDEpKSB8fCAod2lkdGggPT0gMzIp LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3Vic3RyZWFtLT5zdHJlYW0g PT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSyk7Cj4KPiDCoCDCoCDCoCDCoC8qIHdlIGNhbiBv bmx5IGNoYW5nZSB0aGUgc2V0dGluZ3MgaWYgdGhlIHBvcnQgaXMgbm90IGluIHVzZSAqLwo+IC0g wqAgwqAgwqAgaWYgKHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKSAmIFNTQ1IwX1NTRSkKPiArIMKg IMKgIMKgIGlmIChweGFfc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjApICYgU1NDUjBfU1NFKQo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIDA7Cj4KPiDCoCDCoCDCoCDCoC8qIGNsZWFyIHNl bGVjdGVkIFNTUCBiaXRzICovCj4gLSDCoCDCoCDCoCBzc2NyMCA9IHNzcF9yZWFkX3JlZyhzc3As IFNTQ1IwKSAmIH4oU1NDUjBfRFNTIHwgU1NDUjBfRURTUyk7Cj4gLSDCoCDCoCDCoCBzc3Bfd3Jp dGVfcmVnKHNzcCwgU1NDUjAsIHNzY3IwKTsKPiArIMKgIMKgIMKgIHNzY3IwID0gcHhhX3NzcF9y ZWFkX3JlZyhzc3AsIFNTQ1IwKSAmIH4oU1NDUjBfRFNTIHwgU1NDUjBfRURTUyk7Cj4gKyDCoCDC oCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IwLCBzc2NyMCk7Cj4KPiDCoCDCoCDCoCDC oC8qIGJpdCBzaXplICovCj4gLSDCoCDCoCDCoCBzc2NyMCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNT Q1IwKTsKPiArIMKgIMKgIMKgIHNzY3IwID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1IwKTsK PiDCoCDCoCDCoCDCoHN3aXRjaCAocGFyYW1zX2Zvcm1hdChwYXJhbXMpKSB7Cj4gwqAgwqAgwqAg wqBjYXNlIFNORFJWX1BDTV9GT1JNQVRfUzE2X0xFOgo+IMKgI2lmZGVmIENPTkZJR19QWEEzeHgK PiBAQCAtNjA2LDEzICs2MDYsMTMgQEAgc3RhdGljIGludCBweGFfc3NwX2h3X3BhcmFtcyhzdHJ1 Y3QKPiBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgc3NjcjAgfD0gKFNTQ1IwX0VEU1MgfCBTU0NSMF9EYXRhU2l6ZSgxNikpOwo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gwqAgwqAgwqAgwqB9Cj4gLSDCoCDCoCDCoCBzc3Bfd3Jp dGVfcmVnKHNzcCwgU1NDUjAsIHNzY3IwKTsKPiArIMKgIMKgIMKgIHB4YV9zc3Bfd3JpdGVfcmVn KHNzcCwgU1NDUjAsIHNzY3IwKTsKPgo+IMKgIMKgIMKgIMKgc3dpdGNoIChwcml2LT5kYWlfZm10 ICYgU05EX1NPQ19EQUlGTVRfRk9STUFUX01BU0spIHsKPiDCoCDCoCDCoCDCoGNhc2UgU05EX1NP Q19EQUlGTVRfSTJTOgo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqBzc3BzcCA9IHNzcF9yZWFkX3Jl Zyhzc3AsIFNTUFNQKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3Nwc3AgPSBweGFfc3NwX3Jl YWRfcmVnKHNzcCwgU1NQU1ApOwo+Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoKHNzcF9n ZXRfc2NyKHNzcCkgPT0gNCkgJiYgKHdpZHRoID09IDE2KSkgewo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgaWYgKChweGFfc3NwX2dldF9zY3Ioc3NwKSA9PSA0KSAmJiAod2lkdGggPT0gMTYpKSB7 Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBUaGlzIGlzIGEgc3BlY2lh bCBjYXNlIHdoZXJlIHRoZSBiaXRjbGsgaXMgNjRmcwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgKiBhbmQgd2UncmUgbm90IGRlYWxpbmcgd2l0aCAyKjMyIGJpdHMgb2YgYXVk aW8KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogc2FtcGxlcy4KPiBAQCAt NjQ2LDcgKzY0Niw3IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF9od19wYXJhbXMoc3RydWN0Cj4gc25k X3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHNzcHNwIHw9IFNTUFNQX0RNWVNUUlQoMSk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB9Cj4KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNzcF93cml0ZV9yZWcoc3NwLCBTU1BTUCwg c3Nwc3ApOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBT U1BTUCwgc3Nwc3ApOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gwqAgwqAgwqAg wqBkZWZhdWx0Ogo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gQEAgLTY3Nyw0NSAr Njc3LDQ1IEBAIHN0YXRpYyBpbnQgcHhhX3NzcF90cmlnZ2VyKHN0cnVjdAo+IHNuZF9wY21fc3Vi c3RyZWFtICpzdWJzdHJlYW0sIGludCBjbWQsCj4KPiDCoCDCoCDCoCDCoHN3aXRjaCAoY21kKSB7 Cj4gwqAgwqAgwqAgwqBjYXNlIFNORFJWX1BDTV9UUklHR0VSX1JFU1VNRToKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHNzcF9lbmFibGUoc3NwKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB4 YV9zc3BfZW5hYmxlKHNzcCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsKPiDCoCDC oCDCoCDCoGNhc2UgU05EUlZfUENNX1RSSUdHRVJfUEFVU0VfUkVMRUFTRToKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHZhbCA9IHNzcF9yZWFkX3JlZyhzc3AsIFNTQ1IxKTsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHZhbCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU0NSMSk7Cj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBpZiAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVB TV9QTEFZQkFDSykKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHZhbCB8PSBT U0NSMV9UU1JFOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZWxzZQo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgdmFsIHw9IFNTQ1IxX1JTUkU7Cj4gLSDCoCDCoCDCoCDCoCDC oCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEsIHZhbCk7Cj4gLSDCoCDCoCDCoCDCoCDC oCDCoCDCoCB2YWwgPSBzc3BfcmVhZF9yZWcoc3NwLCBTU1NSKTsKPiAtIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHNzcF93cml0ZV9yZWcoc3NwLCBTU1NSLCB2YWwpOwo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMSwgdmFsKTsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHZhbCA9IHB4YV9zc3BfcmVhZF9yZWcoc3NwLCBTU1NSKTsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHB4YV9zc3Bfd3JpdGVfcmVnKHNzcCwgU1NTUiwgdmFsKTsKPiDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgY2FzZSBTTkRSVl9QQ01fVFJJR0dF Ul9TVEFSVDoKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZhbCA9IHNzcF9yZWFkX3JlZyhzc3As IFNTQ1IxKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZhbCA9IHB4YV9zc3BfcmVhZF9yZWco c3NwLCBTU0NSMSk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoc3Vic3RyZWFtLT5zdHJl YW0gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoHZhbCB8PSBTU0NSMV9UU1JFOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ZWxzZQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdmFsIHw9IFNTQ1IxX1JT UkU7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNzcCwgU1NDUjEsIHZh bCk7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3BfZW5hYmxlKHNzcCk7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCB2YWwpOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcHhhX3NzcF9lbmFibGUoc3NwKTsKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVE9QOgo+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFsID0gc3NwX3JlYWRfcmVnKHNzcCwgU1NDUjEpOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFsID0gcHhhX3NzcF9yZWFkX3JlZyhzc3AsIFNTQ1Ix KTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChzdWJzdHJlYW0tPnN0cmVhbSA9PSBTTkRS Vl9QQ01fU1RSRUFNX1BMQVlCQUNLKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgdmFsICY9IH5TU0NSMV9UU1JFOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZWxzZQo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdmFsICY9IH5TU0NSMV9SU1JFOwo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgc3NwX3dyaXRlX3JlZyhzc3AsIFNTQ1IxLCB2YWwpOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcHhhX3NzcF93cml0ZV9yZWcoc3NwLCBTU0NSMSwgdmFsKTsK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgY2FzZSBTTkRSVl9Q Q01fVFJJR0dFUl9TVVNQRU5EOgo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3NwX2Rpc2FibGUo c3NwKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB4YV9zc3BfZGlzYWJsZShzc3ApOwo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gwqAgwqAgwqAgwqBjYXNlIFNORFJWX1BDTV9U UklHR0VSX1BBVVNFX1BVU0g6Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YWwgPSBzc3BfcmVh ZF9yZWcoc3NwLCBTU0NSMSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YWwgPSBweGFfc3Nw X3JlYWRfcmVnKHNzcCwgU1NDUjEpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHN1YnN0 cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0spCj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB2YWwgJj0gflNTQ1IxX1RTUkU7Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBlbHNlCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB2YWwg Jj0gflNTQ1IxX1JTUkU7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzc3Bfd3JpdGVfcmVnKHNz cCwgU1NDUjEsIHZhbCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBweGFfc3NwX3dyaXRlX3Jl Zyhzc3AsIFNTQ1IxLCB2YWwpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4KPiDC oCDCoCDCoCDCoGRlZmF1bHQ6Cj4gQEAgLTczNyw3ICs3MzcsNyBAQCBzdGF0aWMgaW50IHB4YV9z c3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiDCoCDCoCDCoCDCoGlmICgh cHJpdikKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiAtRU5PTUVNOwo+Cj4gLSDCoCDC oCDCoCBwcml2LT5zc3AgPSBzc3BfcmVxdWVzdChkYWktPmlkICsgMSwgIlNvQyBhdWRpbyIpOwo+ ICsgwqAgwqAgwqAgcHJpdi0+c3NwID0gcHhhX3NzcF9yZXF1ZXN0KGRhaS0+aWQgKyAxLCAiU29D IGF1ZGlvIik7Cj4gwqAgwqAgwqAgwqBpZiAocHJpdi0+c3NwID09IE5VTEwpIHsKPiDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHJldCA9IC1FTk9ERVY7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBn b3RvIGVycl9wcml2Owo+IEBAIC03NTcsNyArNzU3LDcgQEAgc3RhdGljIHZvaWQgcHhhX3NzcF9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQo+IMKgewo+ IMKgIMKgIMKgIMKgc3RydWN0IHNzcF9wcml2ICpwcml2ID0gZGFpLT5wcml2YXRlX2RhdGE7Cj4g LSDCoCDCoCDCoCBzc3BfZnJlZShwcml2LT5zc3ApOwo+ICsgwqAgwqAgwqAgcHhhX3NzcF9mcmVl KHByaXYtPnNzcCk7Cj4gwqB9Cj4KPiDCoCNkZWZpbmUgUFhBX1NTUF9SQVRFUyAoU05EUlZfUENN X1JBVEVfODAwMCB8IFNORFJWX1BDTV9SQVRFXzExMDI1IHxcCj4gLS0KPiAxLjUuNi41Cj4KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWxzYS1kZXZlbCBt YWlsaW5nIGxpc3QKQWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3JnCmh0dHA6Ly9tYWlsbWFuLmFs c2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNhLWRldmVsCg==