From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id C18238914A for ; Thu, 9 May 2019 13:50:30 +0000 (UTC) From: Jani Nikula In-Reply-To: <20190509123809.15507-5-daniel.t.mrzyglod@intel.com> References: <20190509123809.15507-1-daniel.t.mrzyglod@intel.com> <20190509123809.15507-5-daniel.t.mrzyglod@intel.com> Date: Thu, 09 May 2019 16:52:34 +0300 Message-ID: <87d0krlopp.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v5 4/5] lib/intel_mmio: remove igt_global_mmio and move it to mmio_data List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Mrzyglod , igt-dev@lists.freedesktop.org List-ID: T24gVGh1LCAwOSBNYXkgMjAxOSwgRGFuaWVsIE1yenlnbG9kIDxkYW5pZWwudC5tcnp5Z2xvZEBp bnRlbC5jb20+IHdyb3RlOgo+IHRoaXMgcGF0Y2ggcmVtb3ZlIG5lZWQgZm9yIGlndF9nbG9iYWxf bW1pbyBmcm9tIGxpYnJhcnkgc3BhY2UuCj4gVGhlIHJlYXNvbiB0aGF0IGl0IHdhcyBtb3ZlZCBp cyB0aGUgaWRlYSB0byBzdXBwb3J0IG11bHRpcGxlCj4gZGV2aWNlcyBhdCBvbmNlLgo+Cj4gU2ln bmVkLW9mZi1ieTogRGFuaWVsIE1yenlnbG9kIDxkYW5pZWwudC5tcnp5Z2xvZEBpbnRlbC5jb20+ Cj4gLS0tCj4gIGJlbmNobWFya3MvZ2VtX2xhdGVuY3kuYyAgICAgIHwgICA1ICstCj4gIGJlbmNo bWFya3MvZ2VtX3dzaW0uYyAgICAgICAgIHwgICA2ICstCj4gIGxpYi9pbnRlbF9pby5oICAgICAg ICAgICAgICAgIHwgIDc4ICsrKysrKysrKysrKystLS0tLS0tLQo+ICBsaWIvaW50ZWxfaW9zZi5j ICAgICAgICAgICAgICB8ICA3NCArKysrKysrKysrKy0tLS0tLS0tLQo+ICBsaWIvaW50ZWxfbW1p by5jICAgICAgICAgICAgICB8IDEyMyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t Cj4gIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jIHwgICA3ICstCj4gIHRlc3RzL2k5MTUv Z2VtX2V4ZWNfcGFyc2UuYyAgIHwgIDE0ICsrLS0KPiAgdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3Au YyAgICAgfCAgIDcgKy0KPiAgdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jICAgICAgfCAgIDcgKy0K PiAgdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMgICAgICAgfCAgIDUgKy0KPiAgdG9vbHMvaW50ZWxf ZGlzcGxheV9wb2xsZXIuYyAgfCAgIDcgKy0KPiAgdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jICAg ICAgfCAgMTQgKystLQo+ICB0b29scy9pbnRlbF9ncHVfdGltZS5jICAgICAgICB8ICAgNSArLQo+ ICB0b29scy9pbnRlbF9pbmZvZnJhbWVzLmMgICAgICB8ICAgNyArLQo+ICB0b29scy9pbnRlbF9s M19wYXJpdHkuYyAgICAgICB8ICAxNCArKy0tCj4gIHRvb2xzL2ludGVsX2xpZC5jICAgICAgICAg ICAgIHwgICA2ICstCj4gIHRvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jICAgIHwgICA3ICstCj4g IHRvb2xzL2ludGVsX3BlcmZfY291bnRlcnMuYyAgIHwgIDE3ICsrKy0tCj4gIHRvb2xzL2ludGVs X3JlZy5jICAgICAgICAgICAgIHwgIDMxICsrKysrKy0tLQo+ICB0b29scy9pbnRlbF9yZWdfY2hl Y2tlci5jICAgICB8ICAgNiArLQo+ICB0b29scy9pbnRlbF93YXRlcm1hcmsuYyAgICAgICB8ICA0 NCArKysrKysrLS0tLS0KPiAgMjEgZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlvbnMoKyksIDE5 MiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMg Yi9iZW5jaG1hcmtzL2dlbV9sYXRlbmN5LmMKPiBpbmRleCBjM2ZjNGJmMC4uYmNhYWVjZWYgMTAw NjQ0Cj4gLS0tIGEvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCj4gKysrIGIvYmVuY2htYXJrcy9n ZW1fbGF0ZW5jeS5jCj4gQEAgLTU1LDYgKzU1LDggQEAKPiAgc3RhdGljIGludCBkb25lOwo+ICBz dGF0aWMgaW50IGZkOwo+ICBzdGF0aWMgdm9sYXRpbGUgdWludDMyX3QgKnRpbWVzdGFtcF9yZWc7 Cj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKPiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1t aW9fZGF0YTsKPiAgCj4gICNkZWZpbmUgUkVHKHgpICh2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9s YXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHgpCj4gICNkZWZpbmUgUkVHX09GRlNFVCh4 KSAoKHZvbGF0aWxlIGNoYXIgKikoeCkgLSAodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1p bykKPiBAQCAtNDU2LDcgKzQ1OCw4IEBAIHN0YXRpYyBpbnQgcnVuKGludCBzZWNvbmRzLAo+ICAJ aWYgKGdlbiA8IDYpCj4gIAkJcmV0dXJuIElHVF9FWElUX1NLSVA7IC8qIE5lZWRzIEJDUyB0aW1l c3RhbXAgKi8KPiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNp X2RldmljZSgpLCBmYWxzZSwgZmQpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1t aW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKPiArCWlndF9nbG9i YWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlpZiAoZ2VuID09IDYpCj4gIAkJ dGltZXN0YW1wX3JlZyA9IFJFRyhSQ1NfVElNRVNUQU1QKTsKPiBkaWZmIC0tZ2l0IGEvYmVuY2ht YXJrcy9nZW1fd3NpbS5jIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5jCj4gaW5kZXggYWZiOTY0NGQu Ljg2YWY1OGNiIDEwMDY0NAo+IC0tLSBhL2JlbmNobWFya3MvZ2VtX3dzaW0uYwo+ICsrKyBiL2Jl bmNobWFya3MvZ2VtX3dzaW0uYwo+IEBAIC0yMDYsNiArMjA2LDkgQEAgc3RydWN0IHdvcmtsb2Fk Cj4gIAl9IGJ1c3lfYmFsYW5jZXI7Cj4gIH07Cj4gIAo+ICt2b2lkICppZ3RfZ2xvYmFsX21taW87 Cj4gK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7Cj4gKwo+ICBzdGF0aWMgY29u c3QgdW5zaWduZWQgaW50IG5vcF9jYWxpYnJhdGlvbl91cyA9IDEwMDA7Cj4gIHN0YXRpYyB1bnNp Z25lZCBsb25nIG5vcF9jYWxpYnJhdGlvbjsKPiAgCj4gQEAgLTIyMjMsNyArMjIyNiw4IEBAIHN0 YXRpYyB2b2lkIGluaXRfY2xvY2tzKHZvaWQpCj4gIAl1aW50MzJfdCByY3Nfc3RhcnQsIHJjc19l bmQ7Cj4gIAlkb3VibGUgb3ZlcmhlYWQsIHQ7Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKPiArCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIGZhbHNl LCBmZCk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87Cj4gIAo+ICAJ aWYgKHZlcmJvc2UgPD0gMSkKPiAgCQlyZXR1cm47Cj4gZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9p by5oIGIvbGliL2ludGVsX2lvLmgKPiBpbmRleCAwNjc0YjQyYy4uNWY5ZWE3MjQgMTAwNjQ0Cj4g LS0tIGEvbGliL2ludGVsX2lvLmgKPiArKysgYi9saWIvaW50ZWxfaW8uaAo+IEBAIC0zMCwxNyAr MzAsNDEgQEAKPiAgCj4gICNpbmNsdWRlIDxzdGRpbnQuaD4KPiAgI2luY2x1ZGUgPHBjaWFjY2Vz cy5oPgo+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ICAKPiAgLyogcmVnaXN0ZXIgYWNjZXNzIGhl bHBlcnMgZnJvbSBpbnRlbF9tbWlvLmMgKi8KPiAtZXh0ZXJuIHZvaWQgKmlndF9nbG9iYWxfbW1p bzsKPiAtdm9pZCBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHN0cnVjdCBwY2lfZGV2aWNlICpwY2lf ZGV2KTsKPiAtdm9pZCBpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSk7Cj4gK3N0 cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSB7Cj4gKwl1aW50MzJfdCBiYXNlOwo+ICsJdWludDMy X3Qgc2l6ZTsKPiArCXVpbnQzMl90IGZsYWdzOwo+ICt9Owo+ICsKPiArc3RydWN0IGludGVsX3Jl Z2lzdGVyX21hcCB7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKm1hcDsKPiArCXVp bnQzMl90IHRvcDsKPiArCXVpbnQzMl90IGFsaWdubWVudF9tYXNrOwo+ICt9Owo+ICsKPiArc3Ry dWN0IF9tbWlvX2RhdGEgewo+ICsJaW50IGluaXRlZDsKPiArCWJvb2wgc2FmZTsKPiArCXVpbnQz Ml90IGk5MTVfZGV2aWQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIG1hcDsKPiArCWlu dCBrZXk7Cj4gKwl2b2lkICppZ3RfbW1pbzsKPiArfTsKPiArCj4gK3ZvaWQgaW50ZWxfbW1pb191 c2VfcGNpX2JhcihzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLAo+ICsJCQkgICAgc3RydWN0 IHBjaV9kZXZpY2UgKnBjaV9kZXYpOwo+ICt2b2lkIGludGVsX21taW9fdXNlX2R1bXBfZmlsZShz dHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCBjaGFyICpmaWxlKTsKPiAgCj4gLWludCBpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50IHNh ZmUsIGludCBmZCk7Cj4gLXZvaWQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCk7Cj4g LXVpbnQzMl90IGludGVsX3JlZ2lzdGVyX3JlYWQodWludDMyX3QgcmVnKTsKPiAtdm9pZCBpbnRl bF9yZWdpc3Rlcl93cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7Cj4gLWludCBpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uodm9pZCk7Cj4gK2ludCBpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfaW5pdChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLAo+ICsJCQkgICAg ICAgc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBzYWZlLCBpbnQgZmQpOwo+ICt2b2lk IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEp Owo+ICt1aW50MzJfdCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlv X2RhdGEsIHVpbnQzMl90IHJlZyk7Cj4gK3ZvaWQgaW50ZWxfcmVnaXN0ZXJfd3JpdGUoc3RydWN0 IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAo+ICsJCQkgIHVpbnQzMl90IHZh bCk7Cj4gK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2Uoc3RydWN0IF9t bWlvX2RhdGEgKm1taW9fZGF0YSk7Cj4gIAo+ICB1aW50MzJfdCBJTlJFRyh2b2lkICppZ3RfbW1p bywgdWludDMyX3QgcmVnKTsKPiAgdWludDE2X3QgSU5SRUcxNih2b2lkICppZ3RfbW1pbywgdWlu dDMyX3QgcmVnKTsKPiBAQCAtNTAsMTcgKzc0LDI0IEBAIHZvaWQgT1VUUkVHMTYodm9pZCAqaWd0 X21taW8sIHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKTsKPiAgdm9pZCBPVVRSRUc4KHZvaWQg KmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKTsKPiAgCj4gIC8qIHNpZGViYW5k IGFjY2VzcyBmdW5jdGlvbnMgZnJvbSBpbnRlbF9pb3NmLmMgKi8KPiAtdWludDMyX3QgaW50ZWxf ZHBpb19yZWdfcmVhZCh1aW50MzJfdCByZWcsIGludCBwaHkpOwo+IC12b2lkIGludGVsX2RwaW9f cmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBpbnQgcGh5KTsKPiAtdWludDMy X3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZCh1aW50MzJfdCByZWcpOwo+IC12b2lkIGludGVsX2Zs aXNkc2lfcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKPiAtdWludDMyX3Qg aW50ZWxfaW9zZl9zYl9yZWFkKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZyk7Cj4gLXZvaWQg aW50ZWxfaW9zZl9zYl93cml0ZSh1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcsIHVpbnQzMl90 IHZhbCk7Cj4gK3VpbnQzMl90IGludGVsX2RwaW9fcmVnX3JlYWQoc3RydWN0IF9tbWlvX2RhdGEg Km1taW9fZGF0YSwgdWludDMyX3QgcmVnLAo+ICsJCQkgICAgIGludCBwaHkpOwo+ICt2b2lkIGlu dGVsX2RwaW9fcmVnX3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90 IHJlZywKPiArCQkJICB1aW50MzJfdCB2YWwsIGludCBwaHkpOwo+ICt1aW50MzJfdCBpbnRlbF9m bGlzZHNpX3JlZ19yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJl Zyk7Cj4gK3ZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1t aW9fZGF0YSwgdWludDMyX3QgcmVnLAo+ICsJCQkgICAgIHVpbnQzMl90IHZhbCk7Cj4gK3VpbnQz Ml90IGludGVsX2lvc2Zfc2JfcmVhZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50 MzJfdCBwb3J0LAo+ICsJCQkgICAgdWludDMyX3QgcmVnKTsKPiArdm9pZCBpbnRlbF9pb3NmX3Ni X3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQsCj4gKwkJ CSB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7Cj4gIAo+IC1pbnQgaW50ZWxfcHVuaXRfcmVh ZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKTsKPiAtaW50IGludGVsX3B1bml0X3dyaXRl KHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7Cj4gLWludCBpbnRlbF9uY19yZWFkKHVpbnQz Ml90IGFkZHIsIHVpbnQzMl90ICp2YWwpOwo+IC1pbnQgaW50ZWxfbmNfd3JpdGUodWludDMyX3Qg YWRkciwgdWludDMyX3QgdmFsKTsKPiAraW50IGludGVsX3B1bml0X3JlYWQoc3RydWN0IF9tbWlv X2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwKPiArCQkgICAgIHVpbnQzMl90ICp2YWwp Owo+ICtpbnQgaW50ZWxfcHVuaXRfd3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwg dWludDMyX3QgYWRkciwKPiArCQkgICAgICB1aW50MzJfdCB2YWwpOwo+ICtpbnQgaW50ZWxfbmNf cmVhZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJf dCAqdmFsKTsKPiAraW50IGludGVsX25jX3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2Rh dGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7Cj4gIAo+ICAvKiByZWdpc3RlciBtYXBz IGZyb20gaW50ZWxfcmVnX21hcC5jICovCj4gICNpZm5kZWYgX19HVEtfRE9DX0lHTk9SRV9fCj4g QEAgLTcxLDE3ICsxMDIsOCBAQCBpbnQgaW50ZWxfbmNfd3JpdGUodWludDMyX3QgYWRkciwgdWlu dDMyX3QgdmFsKTsKPiAgI2RlZmluZSBJTlRFTF9SQU5HRV9SVwkJKElOVEVMX1JBTkdFX1JFQUQg fCBJTlRFTF9SQU5HRV9XUklURSkKPiAgI2RlZmluZSBJTlRFTF9SQU5HRV9FTkQJCSgxPDwzMSkK PiAgCj4gLXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSB7Cj4gLQl1aW50MzJfdCBiYXNlOwo+ IC0JdWludDMyX3Qgc2l6ZTsKPiAtCXVpbnQzMl90IGZsYWdzOwo+IC19Owo+ICAKPiAtc3RydWN0 IGludGVsX3JlZ2lzdGVyX21hcCB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKm1h cDsKPiAtCXVpbnQzMl90IHRvcDsKPiAtCXVpbnQzMl90IGFsaWdubWVudF9tYXNrOwo+IC19Owo+ ICsvL3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7Cj4gIHN0cnVjdCBpbnRlbF9y ZWdpc3Rlcl9tYXAgaW50ZWxfZ2V0X3JlZ2lzdGVyX21hcCh1aW50MzJfdCBkZXZpZCk7Cj4gIHN0 cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKHN0cnVj dCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IG1vZGUp Owo+ICAjZW5kaWYgLyogX19HVEtfRE9DX0lHTk9SRV9fICovCj4gZGlmZiAtLWdpdCBhL2xpYi9p bnRlbF9pb3NmLmMgYi9saWIvaW50ZWxfaW9zZi5jCj4gaW5kZXggM2I1YTEzNzAuLjJlMjNkZDI5 IDEwMDY0NAo+IC0tLSBhL2xpYi9pbnRlbF9pb3NmLmMKPiArKysgYi9saWIvaW50ZWxfaW9zZi5j Cj4gQEAgLTE5LDggKzE5LDggQEAKPiAgLyogUHJpdmF0ZSByZWdpc3RlciB3cml0ZSwgZG91Ymxl LXdvcmQgYWRkcmVzc2luZywgbm9uLXBvc3RlZCAqLwo+ICAjZGVmaW5lIFNCX0NSV1JEQV9OUCAg IDB4MDcKPiAgCj4gLXN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVp bnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAo+IC0JCQkgICB1aW50MzJfdCAqdmFsKQo+ICtz dGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyhzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1 aW50MzJfdCBwb3J0LAo+ICsJCQkgICB1aW50OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwgdWlu dDMyX3QgKnZhbCkKPiAgewo+ICAJaW50IHRpbWVvdXQgPSAwOwo+ICAJdWludDMyX3QgY21kLCBk ZXZmbiwgYmUsIGJhcjsKPiBAQCAtMzQsMjIgKzM0LDI0IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGVi YW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAo+ICAJ CShwb3J0IDw8IElPU0ZfUE9SVF9TSElGVCkgfCAoYmUgPDwgSU9TRl9CWVRFX0VOQUJMRVNfU0hJ RlQpIHwKPiAgCQkoYmFyIDw8IElPU0ZfQkFSX1NISUZUKTsKPiAgCj4gLQlpZiAoaW50ZWxfcmVn aXN0ZXJfcmVhZChWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYgSU9TRl9TQl9CVVNZKSB7Cj4gKwlp ZiAoaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEsIFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkg Jgo+ICsJICAgIElPU0ZfU0JfQlVTWSkgewo+ICAJCWlndF93YXJuKCJ3YXJuaW5nOiBwY29kZSAo JXMpIG1haWxib3ggYWNjZXNzIGZhaWxlZFxuIiwgaXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIp Owo+ICAJCXJldHVybiAtRUFHQUlOOwo+ICAJfQo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX3dyaXRl KFZMVl9JT1NGX0FERFIsIGFkZHIpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfd3JpdGUobW1pb19kYXRh LCBWTFZfSU9TRl9BRERSLCBhZGRyKTsKPiAgCWlmICghaXNfcmVhZCkKPiAtCQlpbnRlbF9yZWdp c3Rlcl93cml0ZShWTFZfSU9TRl9EQVRBLCAqdmFsKTsKPiArCQlpbnRlbF9yZWdpc3Rlcl93cml0 ZShtbWlvX2RhdGEsIFZMVl9JT1NGX0RBVEEsICp2YWwpOwo+ICAKPiAtCWludGVsX3JlZ2lzdGVy X3dyaXRlKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgY21kKTsKPiArCWludGVsX3JlZ2lzdGVyX3dy aXRlKG1taW9fZGF0YSwgVkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOwo+ICAKPiAgCWRvIHsK PiAgCQl1c2xlZXAoMSk7Cj4gIAkJdGltZW91dCsrOwo+IC0JfSB3aGlsZSAoaW50ZWxfcmVnaXN0 ZXJfcmVhZChWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYgSU9TRl9TQl9CVVNZICYmCj4gLQkJIHRp bWVvdXQgPCBUSU1FT1VUX1VTKTsKPiArCX0gd2hpbGUgKGludGVsX3JlZ2lzdGVyX3JlYWQobW1p b19kYXRhLT5pZ3RfbW1pbywKPiArCQkJCSAgICAgVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmCj4g KwkJSU9TRl9TQl9CVVNZICYmIHRpbWVvdXQgPCBUSU1FT1VUX1VTKTsKPiAgCj4gIAlpZiAodGlt ZW91dCA+PSBUSU1FT1VUX1VTKSB7Cj4gIAkJaWd0X3dhcm4oInRpbWVvdXQgd2FpdGluZyBmb3Ig cGNvZGUgJXMgKCVkKSB0byBmaW5pc2hcbiIsIGlzX3JlYWQgPyAicmVhZCIgOiAid3JpdGUiLCBh ZGRyKTsKPiBAQCAtNTcsOCArNTksOCBAQCBzdGF0aWMgaW50IHZsdl9zaWRlYmFuZF9ydyh1aW50 MzJfdCBwb3J0LCB1aW50OF90IG9wY29kZSwgdWludDMyX3QgYWRkciwKPiAgCX0KPiAgCj4gIAlp ZiAoaXNfcmVhZCkKPiAtCQkqdmFsID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChWTFZfSU9TRl9EQVRB KTsKPiAtCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RBVEEsIDApOwo+ICsJCSp2YWwg PSBpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0YS0+aWd0X21taW8sIFZMVl9JT1NGX0RBVEEp Owo+ICsJaW50ZWxfcmVnaXN0ZXJfd3JpdGUobW1pb19kYXRhLT5pZ3RfbW1pbywgVkxWX0lPU0Zf REFUQSwgMCk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtNzMsOSArNzUsMTAgQEAgc3Rh dGljIGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUsIHVp bnQzMl90IGFkZHIsCj4gICAqIFJldHVybnM6Cj4gICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNj ZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgo+ICAgKi8KPiAt aW50IGludGVsX3B1bml0X3JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKPiAraW50 IGludGVsX3B1bml0X3JlYWQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3Qg YWRkciwgdWludDMyX3QgKnZhbCkKPiAgewo+IC0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NG X1BPUlRfUFVOSVQsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKPiArCXJldHVybiB2bHZfc2lk ZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfUFVOSVQsIFNCX0NSUkREQV9OUCwgYWRkciwK PiArCQkJICAgICAgIHZhbCk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC04OCw5ICs5MSwxMCBAQCBp bnQgaW50ZWxfcHVuaXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQo+ICAgKiBS ZXR1cm5zOgo+ICAgKiAwIHdoZW4gdGhlIHJlZ2lzdGVyIGFjY2VzcyBzdWNjZWVkZWQsIG5lZ2F0 aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZS4KPiAgICovCj4gLWludCBpbnRlbF9wdW5pdF93cml0 ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCj4gK2ludCBpbnRlbF9wdW5pdF93cml0ZShz dHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwp Cj4gIHsKPiAtCXJldHVybiB2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX1BVTklULCBTQl9DUldS REFfTlAsIGFkZHIsICZ2YWwpOwo+ICsJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEs IElPU0ZfUE9SVF9QVU5JVCwgU0JfQ1JXUkRBX05QLCBhZGRyLAo+ICsJCQkgICAgICAgJnZhbCk7 Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0xMDMsOSArMTA3LDEwIEBAIGludCBpbnRlbF9wdW5pdF93 cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCj4gICAqIFJldHVybnM6Cj4gICAqIDAg d2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwgbmVnYXRpdmUgZXJybm8gY29kZSBv biBmYWlsdXJlLgo+ICAgKi8KPiAtaW50IGludGVsX25jX3JlYWQodWludDMyX3QgYWRkciwgdWlu dDMyX3QgKnZhbCkKPiAraW50IGludGVsX25jX3JlYWQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9f ZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgKnZhbCkKPiAgewo+IC0JcmV0dXJuIHZsdl9z aWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKPiArCXJl dHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfTkMsIFNCX0NSUkREQV9O UCwgYWRkciwKPiArCQkJICAgICAgIHZhbCk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0xMTgsOSAr MTIzLDEwIEBAIGludCBpbnRlbF9uY19yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwp Cj4gICAqIFJldHVybnM6Cj4gICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRl ZCwgbmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgo+ICAgKi8KPiAtaW50IGludGVsX25j X3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKPiAraW50IGludGVsX25jX3dyaXRl KHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZh bCkKPiAgewo+IC0JcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSV1JE QV9OUCwgYWRkciwgJnZhbCk7Cj4gKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwg SU9TRl9QT1JUX05DLCBTQl9DUldSREFfTlAsIGFkZHIsCj4gKwkJCSAgICAgICAmdmFsKTsKPiAg fQo+ICAKPiAgLyoqCj4gQEAgLTEzMywxNCArMTM5LDE2IEBAIGludCBpbnRlbF9uY193cml0ZSh1 aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCj4gICAqIFJldHVybnM6Cj4gICAqIFRoZSB2YWx1 ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgo+ICAgKi8KPiAtdWludDMyX3QgaW50ZWxfZHBpb19y ZWdfcmVhZCh1aW50MzJfdCByZWcsIGludCBwaHkpCj4gK3VpbnQzMl90IGludGVsX2RwaW9fcmVn X3JlYWQoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCBpbnQgcGh5 KQo+ICB7Cj4gIAl1aW50MzJfdCB2YWw7Cj4gIAo+ICAJaWYgKHBoeSA9PSAwKQo+IC0JCXZsdl9z aWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJTywgU0JfTVJEX05QLCByZWcsICZ2YWwpOwo+ICsJCXZs dl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9EUElPLCBTQl9NUkRfTlAsIHJlZywK PiArCQkJCSZ2YWwpOwo+ICAJZWxzZQo+IC0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJ T18yLCBTQl9NUkRfTlAsIHJlZywgJnZhbCk7Cj4gKwkJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0 YSwgSU9TRl9QT1JUX0RQSU9fMiwgU0JfTVJEX05QLCByZWcsCj4gKwkJCQkmdmFsKTsKPiAgCXJl dHVybiB2YWw7Cj4gIH0KPiAgCj4gQEAgLTE1MiwzOCArMTYwLDQwIEBAIHVpbnQzMl90IGludGVs X2RwaW9fcmVnX3JlYWQodWludDMyX3QgcmVnLCBpbnQgcGh5KQo+ICAgKgo+ICAgKiAzMi1iaXQg d3JpdGUgb2YgdGhlIHJlZ2lzdGVyIGF0IEBvZmZzZXQgdGhyb3VnaCB0aGUgRFBJTyBzaWRlYmFu ZCBwb3J0Lgo+ICAgKi8KPiAtdm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZSh1aW50MzJfdCByZWcs IHVpbnQzMl90IHZhbCwgaW50IHBoeSkKPiArdm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZShzdHJ1 Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCwgaW50 IHBoeSkKPiAgewo+ICAJaWYgKHBoeSA9PSAwKQo+IC0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BP UlRfRFBJTywgU0JfTVdSX05QLCByZWcsICZ2YWwpOwo+ICsJCXZsdl9zaWRlYmFuZF9ydyhtbWlv X2RhdGEsIElPU0ZfUE9SVF9EUElPLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7Cj4gIAllbHNlCj4g LQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9EUElPXzIsIFNCX01XUl9OUCwgcmVnLCAmdmFs KTsKPiArCQl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BPUlRfRFBJT18yLCBTQl9N V1JfTlAsIHJlZywKPiArCQkJCSZ2YWwpOwo+ICB9Cj4gIAo+IC11aW50MzJfdCBpbnRlbF9mbGlz ZHNpX3JlZ19yZWFkKHVpbnQzMl90IHJlZykKPiArdWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdf cmVhZChzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpCj4gIHsKPiAg CXVpbnQzMl90IHZhbCA9IDA7Cj4gIAo+IC0Jdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9GTElT RFNJLCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7Cj4gKwl2bHZfc2lkZWJhbmRfcncobW1pb19k YXRhLCBJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOwo+ICAKPiAg CXJldHVybiB2YWw7Cj4gIH0KPiAgCj4gLXZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUodWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4gK3ZvaWQgaW50ZWxfZmxpc2RzaV9yZWdfd3JpdGUo c3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwp Cj4gIHsKPiAtCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JXUkRBX05Q LCByZWcsICZ2YWwpOwo+ICsJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX0ZM SVNEU0ksIFNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKPiAgfQo+ICAKPiAtdWludDMyX3QgaW50 ZWxfaW9zZl9zYl9yZWFkKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZykKPiArdWludDMyX3Qg aW50ZWxfaW9zZl9zYl9yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90 IHBvcnQsIHVpbnQzMl90IHJlZykKPiAgewo+ICAJdWludDMyX3QgdmFsOwo+ICAKPiAtCXZsdl9z aWRlYmFuZF9ydyhwb3J0LCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7Cj4gKwl2bHZfc2lkZWJh bmRfcncobW1pb19kYXRhLCBwb3J0LCBTQl9DUlJEREFfTlAsIHJlZywgJnZhbCk7Cj4gIAo+ICAJ cmV0dXJuIHZhbDsKPiAgfQo+ICAKPiAtdm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHVpbnQzMl90 IHBvcnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+ICt2b2lkIGludGVsX2lvc2Zfc2Jf d3JpdGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKPiArCQkJ IHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+ICB7Cj4gLQl2bHZfc2lkZWJhbmRfcncocG9y dCwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwo+ICsJdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0 YSwgcG9ydCwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2xp Yi9pbnRlbF9tbWlvLmMgYi9saWIvaW50ZWxfbW1pby5jCj4gaW5kZXggZDQ3M2NkOWIuLjQyYWZm MmI3IDEwMDY0NAo+IC0tLSBhL2xpYi9pbnRlbF9tbWlvLmMKPiArKysgYi9saWIvaW50ZWxfbW1p by5jCj4gQEAgLTY1LDMyICs2NSwxNyBAQAo+ICAKPiAgI2RlZmluZSBGQUtFS0VZIDB4MjQ2OGFj ZTAKPiAgCj4gLS8qKgo+IC0gKiBpZ3RfZ2xvYmFsX21taW86Cj4gLSAqCj4gLSAqIFBvaW50ZXIg dG8gdGhlIHJlZ2lzdGVyIHJhbmdlLCBpbml0aWFsaXplZCB1c2luZyBpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdCgpCj4gLSAqIG9yIGludGVsX21taW9fdXNlX2R1bXBfZmlsZSgpLiBJdCBpcyBu b3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZGlyZWN0bHkuCj4gLSAqLwo+IC12b2lkICppZ3Rf Z2xvYmFsX21taW87Cj4gLQo+IC1zdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgewo+IC0JaW50IGlu aXRlZDsKPiAtCWJvb2wgc2FmZTsKPiAtCXVpbnQzMl90IGk5MTVfZGV2aWQ7Cj4gLQlzdHJ1Y3Qg aW50ZWxfcmVnaXN0ZXJfbWFwIG1hcDsKPiAtCWludCBrZXk7Cj4gLX0gbW1pb19kYXRhOwo+IC0K PiAgLyoqCj4gICAqIGludGVsX21taW9fdXNlX2R1bXBfZmlsZToKPiArICogQG1taW9fZGF0YTog IG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCj4gICAqIEBmaWxlOiBuYW1lIG9mIHRo ZSByZWdpc3RlciBkdW1wIGZpbGUgdG8gb3Blbgo+ICAgKgo+IC0gKiBTZXRzIHVwICNpZ3RfZ2xv YmFsX21taW8gdG8gcG9pbnQgYXQgdGhlIGRhdGEgY29udGFpbmVkIGluIEBmaWxlLiBUaGlzIGFs bG93cwo+IC0gKiB0aGUgc2FtZSBjb2RlIHRvIGdldCByZXVzZWQgZm9yIGR1bXBpbmcgYW5kIGRl Y29kaW5nIGZyb20gcnVubmluZyBoYXJkd2FyZSBhcwo+IC0gKiBmcm9tIHJlZ2lzdGVyIGR1bXBz Lgo+ICsgKiBTZXRzIGFsc28gdXAgbW1pb19kYXRhLT5pZ3RfbW1pbyB0byBwb2ludCBhdCB0aGUg ZGF0YSBjb250YWluZWQKPiArICogaW4gQGZpbGUuIFRoaXMgYWxsb3dzIHRoZSBzYW1lIGNvZGUg dG8gZ2V0IHJldXNlZCBmb3IgZHVtcGluZyBhbmQgZGVjb2RpbmcKPiArICogZnJvbSBydW5uaW5n IGhhcmR3YXJlIGFzIGZyb20gcmVnaXN0ZXIgZHVtcHMuCj4gICAqLwo+ICB2b2lkCj4gLWludGVs X21taW9fdXNlX2R1bXBfZmlsZShjaGFyICpmaWxlKQo+ICtpbnRlbF9tbWlvX3VzZV9kdW1wX2Zp bGUoc3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSwgY2hhciAqZmlsZSkKPiAgewo+ICAJaW50 IGZkOwo+ICAJc3RydWN0IHN0YXQgc3Q7Cj4gQEAgLTEwMCwyMiArODUsMjMgQEAgaW50ZWxfbW1p b191c2VfZHVtcF9maWxlKGNoYXIgKmZpbGUpCj4gIAkJICAgICAgIkNvdWxkbid0IG9wZW4gJXNc biIsIGZpbGUpOwo+ICAKPiAgCWZzdGF0KGZkLCAmc3QpOwo+IC0JaWd0X2dsb2JhbF9tbWlvID0g bW1hcChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEUs IGZkLCAwKTsKPiAtCWlndF9mYWlsX29uX2YoaWd0X2dsb2JhbF9tbWlvID09IE1BUF9GQUlMRUQs Cj4gKwltbWlvX2RhdGEtPmlndF9tbWlvID0gbW1hcChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JF QUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKPiArCWlndF9mYWlsX29uX2YobW1p b19kYXRhLT5pZ3RfbW1pbyA9PSBNQVBfRkFJTEVELAo+ICAJCSAgICAgICJDb3VsZG4ndCBtbWFw ICVzXG4iLCBmaWxlKTsKPiAgCWNsb3NlKGZkKTsKPiAgfQo+ICAKPiAgLyoqCj4gICAqIGludGVs X21taW9fdXNlX3BjaV9iYXI6Cj4gKyAqIEBtbWlvX2RhdGE6ICBtbWlvIHN0cnVjdHVyZSBmb3Ig SU8gb3BlcmF0aW9ucwo+ICAgKiBAcGNpX2RldjogaW50ZWwgZ3JhY3BoaXMgcGNpIGRldmljZQo+ ICAgKgo+IC0gKiBTZXRzIHVwICNpZ3RfZ2xvYmFsX21taW8gdG8gcG9pbnQgYXQgdGhlIG1taW8g YmFyLgo+ICsgKiBGaWxsIGEgbW1pb19kYXRhIHN0dWN0dXJlIHdpdGggaWd0X21taW8gdG8gcG9p bnQgYXQgdGhlIG1taW8gYmFyLgo+ICAgKgo+ICAgKiBAcGNpX2RldiBjYW4gYmUgb2J0YWluZWQg ZnJvbSBpbnRlbF9nZXRfcGNpX2RldmljZSgpLgo+ICAgKi8KPiAgdm9pZAo+IC1pbnRlbF9tbWlv X3VzZV9wY2lfYmFyKHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2KQo+ICtpbnRlbF9tbWlvX3Vz ZV9wY2lfYmFyKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNl ICpwY2lfZGV2KQo+ICB7Cj4gIAl1aW50MzJfdCBkZXZpZCwgZ2VuOwo+ICAJaW50IG1taW9fYmFy LCBtbWlvX3NpemU7Cj4gQEAgLTEzOSw3ICsxMjUsNyBAQCBpbnRlbF9tbWlvX3VzZV9wY2lfYmFy KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2KQo+ICAJCQkJICAgICAgcGNpX2Rldi0+cmVnaW9u c1ttbWlvX2Jhcl0uYmFzZV9hZGRyLAo+ICAJCQkJICAgICAgbW1pb19zaXplLAo+ICAJCQkJICAg ICAgUENJX0RFVl9NQVBfRkxBR19XUklUQUJMRSwKPiAtCQkJCSAgICAgICZpZ3RfZ2xvYmFsX21t aW8pOwo+ICsJCQkJICAgICAgJm1taW9fZGF0YS0+aWd0X21taW8pOwo+ICAKPiAgCWlndF9mYWls X29uX2YoZXJyb3IgIT0gMCwKPiAgCQkgICAgICAiQ291bGRuJ3QgbWFwIE1NSU8gcmVnaW9uXG4i KTsKPiBAQCAtMTUzLDYgKzEzOSw3IEBAIHJlbGVhc2VfZm9yY2V3YWtlX2xvY2soaW50IGZkKQo+ ICAKPiAgLyoqCj4gICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0Ogo+ICsgKiBAbW1pb19k YXRhOiAgbW1pbyBzdHJ1Y3R1cmUgZm9yIElPIG9wZXJhdGlvbnMKPiAgICogQHBjaV9kZXY6IGlu dGVsIGdyYXBoaWNzIHBjaSBkZXZpY2UKPiAgICogQHNhZmU6IHVzZSBzYWZlIHJlZ2lzdGVyIGFj Y2VzcyB0YWJsZXMKPiAgICoKPiBAQCAtMTYwLDc2ICsxNDcsNzkgQEAgcmVsZWFzZV9mb3JjZXdh a2VfbG9jayhpbnQgZmQpCj4gICAqIGhhbmRsaW5nIGFuZCBhbHNvIGFsbG93cyByZWdpc3RlciBh Y2Nlc3MgdG8gYmUgY2hlY2tlZCB3aXRoIGFuIGV4cGxpY2l0Cj4gICAqIHdoaXRlbGlzdC4KPiAg ICoKPiAtICogSXQgYWxzbyBpbml0aWFsaXplcyAjaWd0X2dsb2JhbF9tbWlvIGxpa2UgaW50ZWxf bW1pb191c2VfcGNpX2JhcigpLgo+ICsgKiBJdCBhbHNvIGluaXRpYWxpemVzIG1taW9fZGF0YS0+ aWd0X21taW8gbGlrZSBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCkuCj4gICAqCj4gICAqIEBwY2lf ZGV2IGNhbiBiZSBvYnRhaW5lZCBmcm9tIGludGVsX2dldF9wY2lfZGV2aWNlKCkuCj4gICAqLwo+ ICBpbnQKPiAtaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IHBjaV9kZXZpY2UgKnBj aV9kZXYsIGludCBzYWZlLCBpbnQgZmQpCj4gK2ludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0 cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBp bnQgc2FmZSwgaW50IGZkKQo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCS8qIGFmdGVyIG9sZCBB UEkgaXMgZGVwcmVjYXRlZCwgcmVtb3ZlIHRoaXMgKi8KPiAtCWlmIChpZ3RfZ2xvYmFsX21taW8g PT0gTlVMTCkKPiAtCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHBjaV9kZXYpOwo+ICsJaWYgKG1t aW9fZGF0YS0+aWd0X21taW8gPT0gTlVMTCkKPiArCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKG1t aW9fZGF0YSwgcGNpX2Rldik7Cj4gIAo+IC0JaWd0X2Fzc2VydChpZ3RfZ2xvYmFsX21taW8gIT0g TlVMTCk7Cj4gKwlpZ3RfYXNzZXJ0KG1taW9fZGF0YS0+aWd0X21taW8gIT0gTlVMTCk7Cj4gIAo+ IC0JaWYgKG1taW9fZGF0YS5pbml0ZWQpCj4gKwlpZiAobW1pb19kYXRhLT5pbml0ZWQpCj4gIAkJ cmV0dXJuIC0xOwo+ICAKPiAtCW1taW9fZGF0YS5zYWZlID0gKHNhZmUgIT0gMCAmJgo+ICsJbW1p b19kYXRhLT5zYWZlID0gKHNhZmUgIT0gMCAmJgo+ICAJCQlpbnRlbF9nZW4ocGNpX2Rldi0+ZGV2 aWNlX2lkKSA+PSA0KSA/IHRydWUgOiBmYWxzZTsKPiAtCW1taW9fZGF0YS5pOTE1X2RldmlkID0g cGNpX2Rldi0+ZGV2aWNlX2lkOwo+IC0JaWYgKG1taW9fZGF0YS5zYWZlKQo+IC0JCW1taW9fZGF0 YS5tYXAgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKG1taW9fZGF0YS5pOTE1X2RldmlkKTsKPiAr CW1taW9fZGF0YS0+aTkxNV9kZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKPiArCWlmIChtbWlv X2RhdGEtPnNhZmUpCj4gKwkJbW1pb19kYXRhLT5tYXAgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFw KG1taW9fZGF0YS0+aTkxNV9kZXZpZCk7Cj4gIAo+ICAJLyogRmluZCB3aGVyZSB0aGUgZm9yY2V3 YWtlIGxvY2sgaXMuIEZvcmNld2FrZSBkb2Vzbid0IGV4aXN0Cj4gIAkgKiBnZW4gPCA2LCBidXQg dGhlIGRlYnVnZnMgc2hvdWxkIGRvIHRoZSByaWdodCB0aGluZ3MgZm9yIHVzLgo+ICAJICovCj4g IAlyZXQgPSBpZ3Rfb3Blbl9mb3JjZXdha2VfaGFuZGxlKGZkKTsKPiAgCWlmIChyZXQgPT0gLTEp Cj4gLQkJbW1pb19kYXRhLmtleSA9IEZBS0VLRVk7Cj4gKwkJbW1pb19kYXRhLT5rZXkgPSBGQUtF S0VZOwo+ICAJZWxzZQo+IC0JCW1taW9fZGF0YS5rZXkgPSByZXQ7Cj4gKwkJbW1pb19kYXRhLT5r ZXkgPSByZXQ7Cj4gIAo+IC0JbW1pb19kYXRhLmluaXRlZCsrOwo+ICsJbW1pb19kYXRhLT5pbml0 ZWQrKzsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWludGVsX3JlZ2lz dGVyX2FjY2Vzc19uZWVkc193YWtlKHZvaWQpCj4gK2ludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVk c193YWtlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEpCj4gIHsKPiAtCXJldHVybiBtbWlv X2RhdGEua2V5ICE9IEZBS0VLRVk7Cj4gKwlyZXR1cm4gbW1pb19kYXRhLT5rZXkgIT0gRkFLRUtF WTsKPiAgfQo+ICAKPiAgLyoqCj4gICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtl d2FrZToKPiArICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25z Cj4gICAqCj4gICAqIFJldHVybnM6Cj4gICAqIE5vbi16ZXJvIHdoZW4gZm9yY2V3YWtlIGluaXRp YWxpemF0aW9uIGZhaWxlZC4KPiAgICovCj4gLWludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVl ZHNfZmFrZXdha2Uodm9pZCkKPiAraW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtl d2FrZShzdHJ1Y3QgX21taW9fZGF0YSAqbW1pb19kYXRhKQo+ICB7Cj4gLQlyZXR1cm4gbW1pb19k YXRhLmtleSA9PSBGQUtFS0VZOwo+ICsJcmV0dXJuIG1taW9fZGF0YS0+a2V5ID09IEZBS0VLRVk7 Cj4gIH0KPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaToKPiArICog QG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25zCj4gICAqCj4gICAq IENsZWFuIHVwIHRoZSByZWdpc3RlciBhY2Nlc3MgaGVscGVyIGluaXRpYWxpemVkIHdpdGgKPiAg ICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KPiAgICovCj4gIHZvaWQKPiAtaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCkKPiAraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko c3RydWN0IF9tbWlvX2RhdGEgKm1taW9fZGF0YSkKPiAgewo+IC0JaWYgKG1taW9fZGF0YS5rZXkg JiYgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25lZWRzX3dha2UoKSkKPiAtCQlyZWxlYXNlX2ZvcmNl d2FrZV9sb2NrKG1taW9fZGF0YS5rZXkpOwo+IC0JbW1pb19kYXRhLmluaXRlZC0tOwo+ICsJaWYg KG1taW9fZGF0YS0+a2V5ICYmIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKG1taW9f ZGF0YSkpCj4gKwkJcmVsZWFzZV9mb3JjZXdha2VfbG9jayhtbWlvX2RhdGEtPmtleSk7Cj4gKwlt bWlvX2RhdGEtPmluaXRlZC0tOwo+ICB9Cj4gIAo+ICAvKioKPiAgICogaW50ZWxfcmVnaXN0ZXJf cmVhZDoKPiArICogQG1taW9fZGF0YTogIG1taW8gc3RydWN0dXJlIGZvciBJTyBvcGVyYXRpb25z Cj4gICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAo+ICAgKgo+ICAgKiAzMi1iaXQgcmVhZCBvZiB0 aGUgcmVnaXN0ZXIgYXQgQG9mZnNldC4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhl IG5ldwo+IEBAIC0yNDIsMjAgKzIzMiwyMCBAQCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2 b2lkKQo+ICAgKiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4KPiAgICovCj4gIHVp bnQzMl90Cj4gLWludGVsX3JlZ2lzdGVyX3JlYWQodWludDMyX3QgcmVnKQo+ICtpbnRlbF9yZWdp c3Rlcl9yZWFkKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZykKPiAg ewo+ICAJc3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlICpyYW5nZTsKPiAgCXVpbnQzMl90IHJl dDsKPiAgCj4gLQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5pbml0ZWQpOwo+ICsJaWd0X2Fzc2VydCht bWlvX2RhdGEtPmluaXRlZCk7Cj4gIAo+IC0JaWYgKGludGVsX2dlbihtbWlvX2RhdGEuaTkxNV9k ZXZpZCkgPj0gNikKPiAtCQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5rZXkgIT0gLTEpOwo+ICsJaWYg KGludGVsX2dlbihtbWlvX2RhdGEtPmk5MTVfZGV2aWQpID49IDYpCj4gKwkJaWd0X2Fzc2VydCht bWlvX2RhdGEtPmtleSAhPSAtMSk7Cj4gIAo+IC0JaWYgKCFtbWlvX2RhdGEuc2FmZSkKPiArCWlm ICghbW1pb19kYXRhLT5zYWZlKQo+ICAJCWdvdG8gcmVhZF9vdXQ7Cj4gIAo+IC0JcmFuZ2UgPSBp bnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLm1hcCwKPiArCXJhbmdlID0gaW50ZWxf Z2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0YS0+bWFwLAo+ICAJCQkJCSByZWcsCj4gIAkJCQkJ IElOVEVMX1JBTkdFX1JFQUQpOwo+ICAKPiBAQCAtMjY2LDEzICsyNTYsMTQgQEAgaW50ZWxfcmVn aXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpCj4gIAl9Cj4gIAo+ICByZWFkX291dDoKPiAtCXJldCA9 ICoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8g KyByZWcpOwo+ICsJcmV0ID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAq KW1taW9fZGF0YS0+aWd0X21taW8gKyByZWcpOwo+ICBvdXQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9 Cj4gIAo+ICAvKioKPiAgICogaW50ZWxfcmVnaXN0ZXJfd3JpdGU6Cj4gKyAqIEBtbWlvX2RhdGE6 ICBtbWlvIHN0cnVjdHVyZSBmb3IgSU8gb3BlcmF0aW9ucwo+ICAgKiBAcmVnOiByZWdpc3RlciBv ZmZzZXQKPiAgICogQHZhbDogdmFsdWUgdG8gd3JpdGUKPiAgICoKPiBAQCAtMjgzLDE5ICsyNzQs MTkgQEAgb3V0Ogo+ICAgKiB3aGl0ZSBsaXN0cy4KPiAgICovCj4gIHZvaWQKPiAtaW50ZWxfcmVn aXN0ZXJfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4gK2ludGVsX3JlZ2lzdGVy X3dyaXRlKHN0cnVjdCBfbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgdWludDMy X3QgdmFsKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKnJhbmdlOwo+ICAK PiAtCWlndF9hc3NlcnQobW1pb19kYXRhLmluaXRlZCk7Cj4gKwlpZ3RfYXNzZXJ0KG1taW9fZGF0 YS0+aW5pdGVkKTsKPiAgCj4gLQlpZiAoaW50ZWxfZ2VuKG1taW9fZGF0YS5pOTE1X2RldmlkKSA+ PSA2KQo+IC0JCWlndF9hc3NlcnQobW1pb19kYXRhLmtleSAhPSAtMSk7Cj4gKwlpZiAoaW50ZWxf Z2VuKG1taW9fZGF0YS0+aTkxNV9kZXZpZCkgPj0gNikKPiArCQlpZ3RfYXNzZXJ0KG1taW9fZGF0 YS0+a2V5ICE9IC0xKTsKPiAgCj4gLQlpZiAoIW1taW9fZGF0YS5zYWZlKQo+ICsJaWYgKCFtbWlv X2RhdGEtPnNhZmUpCj4gIAkJZ290byB3cml0ZV9vdXQ7Cj4gIAo+IC0JcmFuZ2UgPSBpbnRlbF9n ZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRhLm1hcCwKPiArCXJhbmdlID0gaW50ZWxfZ2V0X3Jl Z2lzdGVyX3JhbmdlKG1taW9fZGF0YS0+bWFwLAo+ICAJCQkJCSByZWcsCj4gIAkJCQkJIElOVEVM X1JBTkdFX1dSSVRFKTsKPiAgCj4gQEAgLTMwMyw3ICsyOTQsNyBAQCBpbnRlbF9yZWdpc3Rlcl93 cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKPiAgCQkgICAgICAiUmVnaXN0ZXIgd3Jp dGUgYmxvY2tlZCBmb3Igc2FmZXR5ICIiKCoweCUwOHggPSAweCV4KVxuIiwgcmVnLCB2YWwpOwo+ ICAKPiAgd3JpdGVfb3V0Ogo+IC0JKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hh ciAqKWlndF9nbG9iYWxfbW1pbyArIHJlZykgPSB2YWw7Cj4gKwkqKHZvbGF0aWxlIHVpbnQzMl90 ICopKCh2b2xhdGlsZSBjaGFyICopbW1pb19kYXRhLT5pZ3RfbW1pbyArIHJlZykgPSB2YWw7Cj4g IH0KPiAgCj4gIAo+IEBAIC0zMTUsNyArMzA2LDcgQEAgd3JpdGVfb3V0Ogo+ICAgKiAzMi1iaXQg cmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgb2Zmc2V0IEByZWcuIFRoaXMgZnVuY3Rpb24gb25seSB3 b3JrcyB3aGVuIHRoZQo+ICAgKiBuZXcgcmVnaXN0ZXIgYWNjZXNzIGhlbHBlciBpcyBpbml0aWFs aXplZCB3aXRoIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkuCj4gICAqCj4gLSAqIFRoaXMg ZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBz YWZldHkgY2hlY2tzLgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSBp Z3RfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCj4gICAqCj4gICAqIFJldHVybnM6Cj4gICAq IFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgo+IEBAIC0zMzMsNyArMzI0LDcgQEAg dWludDMyX3QgSU5SRUcodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZykKPiAgICogMTYtYml0 IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IG9mZnNldCBAcmVnLiBUaGlzIGZ1bmN0aW9uIG9ubHkg d29ya3Mgd2hlbiB0aGUKPiAgICogbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaXMgaW5pdGlh bGl6ZWQgd2l0aCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgo+ICAgKgo+IC0gKiBUaGlz IGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2JhbF9tbWlvIHdpdGhvdXQg c2FmZXR5IGNoZWNrcy4KPiArICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUg aWd0X21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgo+ICAgKgo+ICAgKiBSZXR1cm5zOgo+ICAg KiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4KPiBAQCAtMzUxLDcgKzM0Miw3IEBA IHVpbnQxNl90IElOUkVHMTYodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZykKPiAgICogOC1i aXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgb2Zmc2V0IEByZWcuIFRoaXMgZnVuY3Rpb24gb25s eSB3b3JrcyB3aGVuIHRoZQo+ICAgKiBuZXcgcmVnaXN0ZXIgYWNjZXNzIGhlbHBlciBpcyBpbml0 aWFsaXplZCB3aXRoIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkuCj4gICAqCj4gLSAqIFRo aXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91 dCBzYWZldHkgY2hlY2tzLgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRo ZSBpZ3RfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCj4gICAqCj4gICAqIFJldHVybnM6Cj4g ICAqIFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgo+IEBAIC0zNzEsNyArMzYyLDcg QEAgdWludDhfdCBJTlJFRzgodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZykKPiAgICogd2hl biB0aGUgbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aAo+ICAg KiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgo+ICAgKgo+IC0gKiBUaGlzIGZ1bmN0aW9u IGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2JhbF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNo ZWNrcy4KPiArICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgaWd0X21taW8g d2l0aG91dCBzYWZldHkgY2hlY2tzLgo+ICAgKi8KPiAgdm9pZCBPVVRSRUcodm9pZCAqaWd0X21t aW8sIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+ICB7Cj4gQEAgLTM4Nyw3ICszNzgsNyBA QCB2b2lkIE9VVFJFRyh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwp Cj4gICAqIHdoZW4gdGhlIG5ldyByZWdpc3RlciBhY2Nlc3MgaGVscGVyIGlzIGluaXRpYWxpemVk IHdpdGgKPiAgICogaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KPiAgICoKPiAtICogVGhp cyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgI2lndF9nbG9iYWxfbW1pbyB3aXRob3V0 IHNhZmV0eSBjaGVja3MuCj4gKyAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhl IGlndF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KPiAgICovCj4gIHZvaWQgT1VUUkVHMTYo dm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKQo+ICB7Cj4gQEAgLTQw NCw3ICszOTUsNyBAQCB2b2lkIE9VVFJFRzE2KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcs IHVpbnQxNl90IHZhbCkKPiAgICogd2hlbiB0aGUgbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIg aXMgaW5pdGlhbGl6ZWQgd2l0aAo+ICAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgo+ ICAgKgo+IC0gKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2Jh bF9tbWlvIHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KPiArICogVGhpcyBmdW5jdGlvbiBkaXJlY3Rs eSBhY2Nlc3NlcyB0aGUgaWd0X21taW8gd2l0aG91dCBzYWZldHkgY2hlY2tzLgo+ICAgKi8KPiAg dm9pZCBPVVRSRUc4KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQo+ ICB7Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jIGIvdGVzdHMv aTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKPiBpbmRleCBlNTZkNjI3OC4uNjM3OWVkYWUgMTAwNjQ0 Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKPiArKysgYi90ZXN0cy9pOTE1 L2dlbV9leGVjX2xhdGVuY3kuYwo+IEBAIC02Miw2ICs2Miw5IEBACj4gIHN0YXRpYyB1bnNpZ25l ZCBpbnQgcmluZ19zaXplOwo+ICBzdGF0aWMgZG91YmxlIHJjc19jbG9jazsKPiAgCj4gK3ZvaWQg KmlndF9nbG9iYWxfbW1pbzsKPiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsK PiArCj4gIHN0YXRpYyB2b2lkCj4gIHBvbGxfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGNv bnN0IGNoYXIgKm5hbWUpCj4gIHsKPiBAQCAtNjY3LDcgKzY3MCw5IEBAIGlndF9tYWluCj4gIAkJ aWYgKHJpbmdfc2l6ZSA+IDEwMjQpCj4gIAkJCXJpbmdfc2l6ZSA9IDEwMjQ7Cj4gIAo+IC0JCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBk ZXZpY2UpOwo+ICsJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVs X2dldF9wY2lfZGV2aWNlKCksIGZhbHNlLCBkZXZpY2UpOwo+ICsJCWlndF9nbG9iYWxfbW1pbyA9 IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiArCj4gIAkJcmNzX2Nsb2NrID0gY2xvY2tyYXRlKGRldmlj ZSwgUkNTX1RJTUVTVEFNUCk7Cj4gIAkJaWd0X2luZm8oIlJDUyB0aW1lc3RhbXAgY2xvY2s6ICUu MGZLSHosICUuMWZuc1xuIiwKPiAgCQkJIHJjc19jbG9jayAvIDFlMywgMWU5IC8gcmNzX2Nsb2Nr KTsKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19wYXJzZS5jIGIvdGVzdHMvaTkx NS9nZW1fZXhlY19wYXJzZS5jCj4gaW5kZXggNjJlOGQwYTUuLjk4YjA1MjY3IDEwMDY0NAo+IC0t LSBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4 ZWNfcGFyc2UuYwo+IEBAIC01OCw2ICs1OCw5IEBACj4gIAo+ICBzdGF0aWMgaW50IHBhcnNlcl92 ZXJzaW9uOwo+ICAKPiArdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+ICtzdGF0aWMgc3RydWN0IF9t bWlvX2RhdGEgbW1pb19kYXRhOwo+ICsKPiAgc3RhdGljIGludCBjb21tYW5kX3BhcnNlcl92ZXJz aW9uKGludCBmZCkKPiAgewo+ICAJaW50IHZlcnNpb24gPSAtMTsKPiBAQCAtMjg0LDkgKzI4Nyw5 IEBAIHRlc3RfbHJpKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCBzdHJ1Y3QgdGVzdF9scmkgKnRl c3QpCj4gIAkJICB0ZXN0LT5uYW1lLCB0ZXN0LT5yZWcsIHRlc3QtPnRlc3RfdmFsLAo+ICAJCSAg ZXhwZWN0ZWRfZXJybm8sIGV4cGVjdCk7Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUodGVz dC0+cmVnLCB0ZXN0LT5pbml0X3ZhbCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmbW1pb19k YXRhLCB0ZXN0LT5yZWcsIHRlc3QtPmluaXRfdmFsKTsKPiAgCj4gLQlpZ3RfYXNzZXJ0X2VxX3Uz MigoaW50ZWxfcmVnaXN0ZXJfcmVhZCh0ZXN0LT5yZWcpICYKPiArCWlndF9hc3NlcnRfZXFfdTMy KChpbnRlbF9yZWdpc3Rlcl9yZWFkKCZtbWlvX2RhdGEsIHRlc3QtPnJlZykgJgo+ICAJCQkgICB0 ZXN0LT5yZWFkX21hc2spLAo+ICAJCQkgIHRlc3QtPmluaXRfdmFsKTsKPiAgCj4gQEAgLTI5Niw3 ICsyOTksNyBAQCB0ZXN0X2xyaShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgc3RydWN0IHRlc3Rf bHJpICp0ZXN0KQo+ICAJCSAgIGV4cGVjdGVkX2Vycm5vKTsKPiAgCWdlbV9zeW5jKGZkLCBoYW5k bGUpOwo+ICAKPiAtCWlndF9hc3NlcnRfZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFkKHRlc3Qt PnJlZykgJgo+ICsJaWd0X2Fzc2VydF9lcV91MzIoKGludGVsX3JlZ2lzdGVyX3JlYWQoJm1taW9f ZGF0YSwgdGVzdC0+cmVnKSAmCj4gIAkJCSAgIHRlc3QtPnJlYWRfbWFzayksCj4gIAkJCSAgZXhw ZWN0KTsKPiAgfQo+IEBAIC01MzAsNyArNTMzLDggQEAgaWd0X21haW4KPiAgI3VuZGVmIFJFRwo+ ICAKPiAgCQlpZ3RfZml4dHVyZSB7Cj4gLQkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGlu dGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGZkKTsKPiArCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZmQpOwo+ICsJCQlp Z3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87Cj4gIAkJfQo+ICAKPiAgCQlmb3Ig KGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUobHJpcyk7IGkrKykgewo+IEBAIC01NDMsNyArNTQ3 LDcgQEAgaWd0X21haW4KPiAgCQl9Cj4gIAo+ICAJCWlndF9maXh0dXJlIHsKPiAtCQkJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKPiArCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko Jm1taW9fZGF0YSk7Cj4gIAkJfQo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9p OTE1X3BtX2xwc3AuYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKPiBpbmRleCBmNjljODhm Ni4uY2JiZTZhNGIgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwo+ICsr KyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKPiBAQCAtMzAsNiArMzAsOCBAQAo+ICAjaW5j bHVkZSA8ZmNudGwuaD4KPiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICAKPiArdm9pZCAqaWd0X2ds b2JhbF9tbWlvOwo+ICtzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwo+ICAKPiAg c3RhdGljIGJvb2wgc3VwcG9ydHNfbHBzcCh1aW50MzJfdCBkZXZpZCkKPiAgewo+IEBAIC0yMTAs NyArMjEyLDggQEAgaWd0X21haW4KPiAgCj4gIAkJaWd0X3JlcXVpcmUoc3VwcG9ydHNfbHBzcChk ZXZpZCkpOwo+ICAKPiAtCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNp X2RldmljZSgpLCAwLCBkcm1fZmQpOwo+ICsJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZt bWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7Cj4gKwkJaWd0X2ds b2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCQlrbXN0ZXN0X3NldF92dF9n cmFwaGljc19tb2RlKCk7Cj4gIAl9Cj4gQEAgLTIyNyw3ICsyMzAsNyBAQCBpZ3RfbWFpbgo+ICAJ aWd0X2ZpeHR1cmUgewo+ICAJCWludCBpOwo+ICAKPiAtCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgpOwo+ICsJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwo+ICAJ CWZvciAoaSA9IDA7IGkgPCBkcm1fcmVzLT5jb3VudF9jb25uZWN0b3JzOyBpKyspCj4gIAkJCWRy bU1vZGVGcmVlQ29ubmVjdG9yKGRybV9jb25uZWN0b3JzW2ldKTsKPiAgCQlkcm1Nb2RlRnJlZVJl c291cmNlcyhkcm1fcmVzKTsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5j IGIvdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jCj4gaW5kZXggNjc4ZTFkMDguLjExOWZlY2UxIDEw MDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX2F1ZGlvX2R1bXAuYwo+ICsrKyBiL3Rvb2xzL2ludGVs X2F1ZGlvX2R1bXAuYwo+IEBAIC00MSw2ICs0MSw4IEBAIHN0YXRpYyB1aW50MzJfdCBkZXZpZDsK PiAgCj4gIHN0YXRpYyBpbnQgYXVkX3JlZ19iYXNlID0gMDsJLyogYmFzZSBhZGRyZXNzIG9mIGF1 ZGlvIHJlZ2lzdGVycyAqLwo+ICBzdGF0aWMgaW50IGRpc3BfcmVnX2Jhc2UgPSAwOwkvKiBiYXNl IGFkZHJlc3Mgb2YgZGlzcGxheSByZWdpc3RlcnMgKi8KPiArdm9pZCAqaWd0X2dsb2JhbF9tbWlv Owo+ICtzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwo+ICAKPiAgI2RlZmluZSBJ U19IQVNXRUxMX1BMVVMoZGV2aWQpICAoSVNfSEFTV0VMTChkZXZpZCkgfHwgSVNfQlJPQURXRUxM KGRldmlkKSkKPiAgCj4gQEAgLTI0OTgsOSArMjUwMCwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCj4gIAlkb19zZWxmX3Rlc3RzKCk7Cj4gIAo+ICAJaWYgKGFyZ2MgPT0gMikK PiAtCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoYXJndlsxXSk7Cj4gKwkJaW50ZWxfbW1pb191 c2VfZHVtcF9maWxlKCZtbWlvX2RhdGEsIGFyZ3ZbMV0pOwo+ICAJZWxzZQo+IC0JCWludGVsX21t aW9fdXNlX3BjaV9iYXIocGNpX2Rldik7Cj4gKwkJaW50ZWxfbW1pb191c2VfcGNpX2JhcigmbW1p b19kYXRhLCBwY2lfZGV2KTsKPiArCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1p bzsKPiAgCj4gIAlwcmludGYoIiVzIGF1ZGlvIHJlZ2lzdGVyczpcblxuIiwgaW50ZWxfZ2V0X2Rl dmljZV9pbmZvKGRldmlkKS0+Y29kZW5hbWUpOwo+ICAJaWYgKElTX1ZBTExFWVZJRVcoZGV2aWQp KSB7Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jIGIvdG9vbHMvaW50ZWxf YmFja2xpZ2h0LmMKPiBpbmRleCBiZGJmOWFmMy4uMWJkMzVmNDMgMTAwNjQ0Cj4gLS0tIGEvdG9v bHMvaW50ZWxfYmFja2xpZ2h0LmMKPiArKysgYi90b29scy9pbnRlbF9iYWNrbGlnaHQuYwo+IEBA IC0zNSwxMiArMzUsMTUgQEAKPiAgI2luY2x1ZGUgImludGVsX3JlZy5oIgo+ICAKPiAgLyogWFhY IFBDSCBvbmx5IHRvZGF5ICovCj4gK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7 Cj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKPiAgCj4gIGludCBtYWluKGludCBhcmdjLCBjaGFy KiogYXJndikKPiAgewo+ICAJdWludDMyX3QgY3VycmVudCwgbWF4Owo+ICAKPiAtCWludGVsX21t aW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7Cj4gKwlpbnRlbF9tbWlvX3Vz ZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCkpOwo+ICsJaWd0X2ds b2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCWN1cnJlbnQgPSBJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIEJMQ19QV01fQ1BVX0NUTCkgJiBCQUNLTElHSFRfRFVUWV9DWUNMRV9N QVNLOwo+ICAJbWF4ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENfUFdNX1BDSF9DVEwyKSA+ PiAxNjsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYyBiL3Rvb2xz L2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMKPiBpbmRleCBlMTA5NGQzOS4uYWY3ZTQwY2MgMTAwNjQ0 Cj4gLS0tIGEvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwo+ICsrKyBiL3Rvb2xzL2ludGVs X2Rpc3BsYXlfcG9sbGVyLmMKPiBAQCAtNTksNiArNTksOCBAQCBlbnVtIHRlc3Qgewo+ICAKPiAg c3RhdGljIHVpbnQzMl90IHZsdl9vZmZzZXQ7Cj4gIHN0YXRpYyB1aW50MTZfdCBwaXBlX29mZnNl dFszXSA9IHsgMCwgMHgxMDAwLCAweDIwMDAsIH07Cj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsK PiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKPiAgCj4gICNkZWZpbmUgUElQ RV9SRUcocGlwZSwgcmVnX2EpIChwaXBlX29mZnNldFsocGlwZSldICsgKHJlZ19hKSkKPiAgCj4g QEAgLTExODcsNyArMTE4OSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4g IAkJYnJlYWs7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo Jm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwo+ICsJaWd0X2dsb2Jh bF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCXByaW50ZigiJXM/XG4iLCB0ZXN0 X25hbWUodGVzdCwgcGlwZSwgYml0LCB0ZXN0X3BpeGVsY291bnQpKTsKPiAgCj4gQEAgLTEyNjIs NyArMTI2NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJYXNzZXJ0 KDApOwo+ICAJfQo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7Cj4gKwlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKPiAgCj4gIAlpZiAocXVpdCkKPiAg CQlyZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jIGIvdG9v bHMvaW50ZWxfZm9yY2V3YWtlZC5jCj4gaW5kZXggMDJmYmY4ODguLmU1MmRiNWVkIDEwMDY0NAo+ IC0tLSBhL3Rvb2xzL2ludGVsX2ZvcmNld2FrZWQuYwo+ICsrKyBiL3Rvb2xzL2ludGVsX2ZvcmNl d2FrZWQuYwo+IEBAIC0zOSw2ICszOSw4IEBACj4gICNpbmNsdWRlICJkcm10ZXN0LmgiCj4gIAo+ ICBib29sIGRhZW1vbml6ZWQ7Cj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKPiArc3RhdGljIHN0 cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKPiAgCj4gICNkZWZpbmUgSU5GT19QUklOVCguLi4p IFwKPiAgCWRvIHsgXAo+IEBAIC01OSw3ICs2MSw3IEBAIGhlbHAoY2hhciAqcHJvZykgewo+ICBz dGF0aWMgaW50Cj4gIGlzX2FsaXZlKHZvaWQpIHsKPiAgCS8qIFJlYWQgdGhlIHRpbWVzdGFtcCwg d2hpY2ggc2hvdWxkICphbG1vc3QqIGFsd2F5cyBiZSAhMCAqLwo+IC0JcmV0dXJuIChpbnRlbF9y ZWdpc3Rlcl9yZWFkKDB4MjM1OCkgIT0gMCk7Cj4gKwlyZXR1cm4gKGludGVsX3JlZ2lzdGVyX3Jl YWQoJm1taW9fZGF0YSwgMHgyMzU4KSAhPSAwKTsKPiAgfQo+ICAKPiAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKPiBAQCAtODAsNyArODIsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQo+ICAJCUlORk9fUFJJTlQoInN0YXJ0ZWQgZGFlbW9uIik7Cj4gIAl9Cj4g IAo+IC0JcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZp Y2UoKSwgMSwgLTEpOwo+ICsJcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9f ZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMSwgLTEpOwo+ICsJaWd0X2dsb2JhbF9tbWlv ID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAJaWYgKHJldCkgewo+ICAJCUlORk9fUFJJTlQoIkNv dWxkbid0IGluaXQgcmVnaXN0ZXIgYWNjZXNzXG4iKTsKPiAgCQlleGl0KDEpOwo+IEBAIC05MCwx NCArOTMsMTUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgCXdoaWxlKDEp IHsKPiAgCQlpZiAoIWlzX2FsaXZlKCkpIHsKPiAgCQkJSU5GT19QUklOVCgiZ3B1IHJlc2V0PyBy ZXN0YXJ0aW5nIGRhZW1vblxuIik7Cj4gLQkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7 Cj4gLQkJCXJldCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2 aWNlKCksIDEsIC0xKTsKPiArCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0 YSk7Cj4gKwkJCXJldCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGlu dGVsX2dldF9wY2lfZGV2aWNlKCksIDEsIC0xKTsKPiArCQkJaWd0X2dsb2JhbF9tbWlvID0gbW1p b19kYXRhLmlndF9tbWlvOwo+ICAJCQlpZiAocmV0KQo+ICAJCQkJSU5GT19QUklOVCgiUmVnIGFj Y2VzcyBpbml0IGZhaWxcbiIpOwo+ICAJCX0KPiAgCQlzbGVlcCgxKTsKPiAgCX0KPiAtCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgm bW1pb19kYXRhKTsKPiAgCUlORk9fUFJJTlQoIkZvcmNld2FrZSB1bmxvY2tcbiIpOwo+ICAKPiAg CWlmIChkYWVtb25pemVkKSB7Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMg Yi90b29scy9pbnRlbF9ncHVfdGltZS5jCj4gaW5kZXggNzkyNDBmZDMuLjBjZmMxMDhiIDEwMDY0 NAo+IC0tLSBhL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKPiArKysgYi90b29scy9pbnRlbF9ncHVf dGltZS5jCj4gQEAgLTQxLDYgKzQxLDggQEAKPiAgI2RlZmluZSBTQU1QTEVTX1BFUl9TRUMgICAg ICAgICAgICAgMTAwMDAKPiAgCj4gIHN0YXRpYyB2b2xhdGlsZSBpbnQgZ29kZG87Cj4gK3ZvaWQg KmlndF9nbG9iYWxfbW1pbzsKPiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsK PiAgCj4gIHN0YXRpYyBwaWRfdCBzcGF3bihjaGFyICoqYXJndikKPiAgewo+IEBAIC02Nyw3ICs2 OSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPiAgCXN0YXRpYyBzdHJ1Y3Qg cnVzYWdlIHJ1c2FnZTsKPiAgCWludCBzdGF0dXM7Cj4gIAo+IC0JaW50ZWxfbW1pb191c2VfcGNp X2JhcihpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKPiArCWludGVsX21taW9fdXNlX3BjaV9iYXIo Jm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8g PSBtbWlvX2RhdGEuaWd0X21taW87Cj4gIAo+ICAJaWYgKGFyZ2MgPT0gMSkgewo+ICAJCWZwcmlu dGYoc3RkZXJyLCAidXNhZ2U6ICVzIGNtZCBbYXJncy4uLl1cbiIsIGFyZ3ZbMF0pOwo+IGRpZmYg LS1naXQgYS90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMgYi90b29scy9pbnRlbF9pbmZvZnJhbWVz LmMKPiBpbmRleCA2ODlmNWZhYS4uNjMzYTVlMTAgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvaW50ZWxf aW5mb2ZyYW1lcy5jCj4gKysrIGIvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCj4gQEAgLTI2Miw2 ICsyNjIsOCBAQCBjb25zdCBjaGFyICpkaXBfZnJlcXVlbmN5X25hbWVzW10gPSB7Cj4gIAkicmVz ZXJ2ZWQgKGludmFsaWQpIgo+ICB9Owo+ICAKPiArdm9pZCAqaWd0X2dsb2JhbF9tbWlvOwo+ICtz dGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwo+ICBzdHJ1Y3QgcGNpX2RldmljZSAq cGNpX2RldjsKPiAgaW50IGdlbiA9IDA7Cj4gIAo+IEBAIC0xMTA4LDcgKzExMTAsOCBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJICAgICAgICIgcGVyZmVjdGx5OiB0aGUg S2VybmVsIG1pZ2h0IHVuZG8gb3VyIGNoYW5nZXMuXG4iKTsKPiAgCj4gIAlwY2lfZGV2ID0gaW50 ZWxfZ2V0X3BjaV9kZXZpY2UoKTsKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHBjaV9k ZXYsIDAsIC0xKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIHBj aV9kZXYsIDAsIC0xKTsKPiArCWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsK PiAgCWludGVsX2NoZWNrX3BjaCgpOwo+ICAKPiAgCWlmIChJU19HRU40KHBjaV9kZXYtPmRldmlj ZV9pZCkpCj4gQEAgLTEyNTYsNiArMTI1OSw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCj4gIAl9Cj4gIAo+ICBvdXQ6Cj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgp Owo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7Cj4gIAlyZXR1cm4g cmV0Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5jIGIvdG9vbHMv aW50ZWxfbDNfcGFyaXR5LmMKPiBpbmRleCBkOGM5OTdhZi4uN2E0NjFhNTQgMTAwNjQ0Cj4gLS0t IGEvdG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMKPiArKysgYi90b29scy9pbnRlbF9sM19wYXJpdHku Ywo+IEBAIC00NCw2ICs0NCw4IEBACj4gICNpbmNsdWRlICJpbnRlbF9sM19wYXJpdHkuaCIKPiAg Cj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgZGV2aWQ7Cj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsK PiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKPiAgLyogTDMgc2l6ZSBpcyBh bHdheXMgYSBmdW5jdGlvbiBvZiBiYW5rcy4gVGhlIG51bWJlciBvZiBiYW5rcyBjYW5ub3QgYmUK PiAgICogZGV0ZXJtaW5lZCBieSBudW1iZXIgb2Ygc2xpY2VzIGhvd2V2ZXIgKi8KPiAgc3RhdGlj IGlubGluZSBpbnQgbnVtX2JhbmtzKHZvaWQpIHsKPiBAQCAtMTg5LDcgKzE5MSw4IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAlpZiAoaW50ZWxfZ2VuKGRldmlkKSA8IDcg fHwgSVNfVkFMTEVZVklFVyhkZXZpZCkpCj4gIAkJZXhpdCg3Nyk7Cj4gIAo+IC0JYXNzZXJ0KGlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIGRldmlj ZSkgPT0gMCk7Cj4gKwlhc3NlcnQoaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0 YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgZGV2aWNlKSA9PSAwKTsKPiArCWlndF9nbG9i YWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlkaXIgPSBpZ3Rfc3lzZnNfb3Bl bihkZXZpY2UpOwo+ICAKPiBAQCAtMjExLDcgKzIxNCw3IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCj4gIAkgKiBub3cuIEp1c3QgYmUgYXdhcmUgb2YgdGhpcyBpZiBmb3Igc29t ZSByZWFzb24gYSBoYW5nIGlzIHJlcG9ydGVkCj4gIAkgKiB3aGVuIHVzaW5nIHRoaXMgdG9vbC4K PiAgCSAqLwo+IC0JZGZ0ID0gaW50ZWxfcmVnaXN0ZXJfcmVhZCgweGIwMzgpOwo+ICsJZGZ0ID0g aW50ZWxfcmVnaXN0ZXJfcmVhZCgmbW1pb19kYXRhLCAweGIwMzgpOwo+ICAKPiAgCXdoaWxlICgx KSB7Cj4gIAkJaW50IGMsIG9wdGlvbl9pbmRleCA9IDA7Cj4gQEAgLTM1NywxMCArMzYwLDExIEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJCQlhc3NlcnQoaSA8IDIpOwo+ ICAJCQkJZGZ0IHw9IGkgPDwgMTsgLyogc2xpY2UgKi8KPiAgCQkJCWRmdCB8PSAxIDw8IDA7IC8q IGVuYWJsZSAqLwo+IC0JCQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoMHhiMDM4LCBkZnQpOwo+ICsJ CQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoJm1taW9fZGF0YSwgMHhiMDM4LCBkZnQpOwo+ICAJCQkJ YnJlYWs7Cj4gIAkJCWNhc2UgJ3UnOgo+IC0JCQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoMHhiMDM4 LCBkZnQgJiB+KDE8PDApKTsKPiArCQkJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEs IDB4YjAzOCwgZGZ0ICYKPiArCQkJCQkJICAgICB+KDEgPDwgMCkpOwo+ICAJCQkJYnJlYWs7Cj4g IAkJCWNhc2UgJ0wnOgo+ICAJCQkJYnJlYWs7Cj4gQEAgLTM2OSw3ICszNzMsNyBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCX0KPiAgCX0KPiAgCj4gLQlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSgpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9f ZGF0YSk7Cj4gIAlpZiAoYWN0aW9uID09ICdsJykKPiAgCQlleGl0KEVYSVRfU1VDQ0VTUyk7Cj4g IAo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9saWQuYyBiL3Rvb2xzL2ludGVsX2xpZC5jCj4g aW5kZXggMmI1OTdlZmIuLmI0ZjI2YjYwIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX2xpZC5j Cj4gKysrIGIvdG9vbHMvaW50ZWxfbGlkLmMKPiBAQCAtNTIsNiArNTIsOSBAQCBlbnVtIGxpZF9z dGF0dXMgewo+ICAjZGVmaW5lIEFDUElfQlVUVE9OICIvcHJvYy9hY3BpL2J1dHRvbi8iCj4gICNk ZWZpbmUgQUNQSV9MSUQgIi9wcm9jL2FjcGkvYnV0dG9uL2xpZC8iCj4gIAo+ICt2b2lkICppZ3Rf Z2xvYmFsX21taW87Cj4gK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7Cj4gKwo+ ICBzdGF0aWMgaW50IGk4MzBfbHZkc19hY3BpX2xpZF9zdGF0ZSh2b2lkKQo+ICB7Cj4gIAlpbnQg ZmQ7Cj4gQEAgLTExOSw3ICsxMjIsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp Cj4gIHsKPiAgCWludCBzd2YxNCwgYWNwaV9saWQ7Cj4gIAo+IC0JaW50ZWxfbW1pb191c2VfcGNp X2JhcihpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKPiArCWludGVsX21taW9fdXNlX3BjaV9iYXIo Jm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8g PSBtbWlvX2RhdGEuaWd0X21taW87Cj4gIAo+ICAJd2hpbGUgKDEpIHsKPiAgCQlzd2YxNCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgU1dGMTQpOwo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9w YW5lbF9maXR0ZXIuYyBiL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jCj4gaW5kZXggMjY4NDNk N2MuLjk2NjNkMGNjIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jCj4g KysrIGIvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMKPiBAQCAtMzUsNiArMzUsOCBAQAo+ICAj aW5jbHVkZSAiaW50ZWxfcmVnLmgiCj4gICNpbmNsdWRlICJkcm10ZXN0LmgiCj4gIAo+ICt2b2lk ICppZ3RfZ2xvYmFsX21taW87Cj4gK3N0YXRpYyBzdHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7 Cj4gIGludCBnZW47Cj4gIAo+ICB1aW50MzJfdCBIVE9UQUxbXSAgICAgPSB7IDB4NjAwMDAsIDB4 NjEwMDAsIDB4NjIwMDAgfTsKPiBAQCAtMjgwLDcgKzI4Miw4IEBAIGludCBtYWluIChpbnQgYXJn YywgY2hhciAqYXJndltdKQo+ICAJICAgICAgICJzb2x1dGlvbiB0aGF0IG1heSBvciBtYXkgbm90 IHdvcmsuIFVzZSBpdCBhdCB5b3VyIG93biByaXNrLlxuIik7Cj4gIAo+ICAJcGNpX2RldiA9IGlu dGVsX2dldF9wY2lfZGV2aWNlKCk7Cj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChwY2lf ZGV2LCAwLCAtMSk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBw Y2lfZGV2LCAwLCAtMSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87 Cj4gIAlkZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKPiAgCj4gIAlpZiAoIUhBU19QQ0hfU1BM SVQoZGV2aWQpKSB7Cj4gQEAgLTM0Miw2ICszNDUsNiBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKPiAgCX0KPiAgCj4gIG91dDoKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKPiAgCXJl dHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5j IGIvdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVycy5jCj4gaW5kZXggNTBjNGJjZTYuLjM4ZjcxNDE5 IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX3BlcmZfY291bnRlcnMuYwo+ICsrKyBiL3Rvb2xz L2ludGVsX3BlcmZfY291bnRlcnMuYwo+IEBAIC0zMDAsNiArMzAwLDggQEAgdWludDMyX3QgKnRv dGFsczsKPiAgdWludDMyX3QgKmxhc3RfY291bnRlcjsKPiAgc3RhdGljIGRybV9pbnRlbF9idWZt Z3IgKmJ1Zm1ncjsKPiAgc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKPiArdm9pZCAq aWd0X2dsb2JhbF9tbWlvOwo+ICtzdGF0aWMgc3RydWN0IF9tbWlvX2RhdGEgbW1pb19kYXRhOwo+ ICAKPiAgLyogRFcwICovCj4gICNkZWZpbmUgR0VONV9NSV9SRVBPUlRfUEVSRl9DT1VOVCAoKDB4 MjYgPDwgMjMpIHwgKDMgLSAyKSkKPiBAQCAtNDgzLDEyICs0ODUsMTUgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCj4gIAo+ICAJaWYgKG9hY29udHJvbCkgewo+ICAJCS8qIEZvcmNld2Fr ZSAqLwo+IC0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNl KCksIDAsIGZkKTsKPiArCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBp bnRlbF9nZXRfcGNpX2RldmljZSgpLAo+ICsJCQkJCSAgIDAsIGZkKTsKPiArCQlpZ3RfZ2xvYmFs X21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87Cj4gIAo+ICAJCS8qIEVuYWJsZSBwZXJmb3JtYW5j ZSBjb3VudGVycyAqLwo+IC0JCWludGVsX3JlZ2lzdGVyX3dyaXRlKE9BQ09OVFJPTCwKPiAtCQkJ Y291bnRlcl9mb3JtYXQgPDwgT0FDT05UUk9MX0NPVU5URVJfU0VMRUNUX1NISUZUIHwKPiAtCQkJ UEVSRk9STUFOQ0VfQ09VTlRFUl9FTkFCTEUpOwo+ICsJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZt bWlvX2RhdGEsIE9BQ09OVFJPTCwKPiArCQkJCSAgICAgY291bnRlcl9mb3JtYXQgPDwKPiArCQkJ CSAgICAgT0FDT05UUk9MX0NPVU5URVJfU0VMRUNUX1NISUZUIHwKPiArCQkJCSAgICAgUEVSRk9S TUFOQ0VfQ09VTlRFUl9FTkFCTEUpOwo+ICAJfQo+ICAKPiAgCXRvdGFscyA9IGNhbGxvYyhjb3Vu dGVyX2NvdW50LCBzaXplb2YodWludDMyX3QpKTsKPiBAQCAtNTIwLDEwICs1MjUsMTAgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gIAo+ICAJaWYgKG9hY29udHJvbCkgewo+ICAJCS8q IERpc2FibGUgcGVyZm9ybWFuY2UgY291bnRlcnMgKi8KPiAtCQlpbnRlbF9yZWdpc3Rlcl93cml0 ZShPQUNPTlRST0wsIDApOwo+ICsJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZtbWlvX2RhdGEsIE9B Q09OVFJPTCwgMCk7Cj4gIAo+ICAJCS8qIEZvcmNld2FrZSAqLwo+IC0JCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCk7Cj4gKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0 YSk7Cj4gIAl9Cj4gIAo+ICAJZnJlZSh0b3RhbHMpOwo+IGRpZmYgLS1naXQgYS90b29scy9pbnRl bF9yZWcuYyBiL3Rvb2xzL2ludGVsX3JlZy5jCj4gaW5kZXggMmU3NGI2MDEuLjFjNzhhZjBiIDEw MDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX3JlZy5jCj4gKysrIGIvdG9vbHMvaW50ZWxfcmVnLmMK PiBAQCAtODQsNiArODQsOSBAQCBzdHJ1Y3QgY29uZmlnIHsKPiAgCWludCB2ZXJib3NpdHk7Cj4g IH07Cj4gIAo+ICt2b2lkICppZ3RfZ2xvYmFsX21taW87Cj4gK3N0YXRpYyBzdHJ1Y3QgX21taW9f ZGF0YSBtbWlvX2RhdGE7CgpTYWQgdHJvbWJvbmUgZm9yIHRoZXNlIHVnbHkgZHVja2xpbmdzLiBT YW1lIGV2ZXJ5d2hlcmUsIHJlYWxseSwgYnV0IGhlcmUKaXQgaHVydHMgbWUgYmVjYXVzZSBJIHB1 dCBlZmZvcnQgaW50byBhdm9pZGluZyAqYWxsKiBub24tbG9jYWwgZGF0YSB3aGVuCkkgd3JvdGUg dGhlIHRvb2wuCgpUaGVyZSdzIHN0cnVjdCBjb25maWcgdGhhdCBnZXRzIHBhc3NlZCBhcm91bmQg YWxsIG92ZXIgdGhlIHBsYWNlLiBUaGF0J3MKd2hlcmUgdGhpcyBiZWxvbmdzLiBEb24ndCB0YWtl IHRoZSBzaG9ydGN1dHMuCgpPciBkb2VzIGlndF9nbG9iYWxfbW1pbyBoYXZlIHRvIGJlIG5vbi1z dGF0aWM/IFRoZW4gd2hhdCdzIHRoZSBwb2ludD8KCkJSLApKYW5pLgoKCj4gKwo+ICAvKiBwb3J0 IGRlc2MgbXVzdCBoYXZlIGJlZW4gc2V0ICovCj4gIHN0YXRpYyBpbnQgc2V0X3JlZ19ieV9hZGRy KHN0cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLAo+ICAJCQkgICB1aW50MzJf dCBhZGRyKQo+IEBAIC0zOTAsNyArMzkzLDggQEAgc3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0 cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCAqdmFscCkKPiAg CQkJCXJlZy0+cG9ydF9kZXNjLm5hbWUpOwo+ICAJCQlyZXR1cm4gLTE7Cj4gIAkJfQo+IC0JCXZh bCA9IGludGVsX2lvc2Zfc2JfcmVhZChyZWctPnBvcnRfZGVzYy5wb3J0LCByZWctPmFkZHIpOwo+ ICsJCXZhbCA9IGludGVsX2lvc2Zfc2JfcmVhZCgmbW1pb19kYXRhLCByZWctPnBvcnRfZGVzYy5w b3J0LAo+ICsJCQkJCSByZWctPmFkZHIpOwo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAgCQlm cHJpbnRmKHN0ZGVyciwgInBvcnQgJWQgbm90IHN1cHBvcnRlZFxuIiwgcmVnLT5wb3J0X2Rlc2Mu cG9ydCk7Cj4gQEAgLTQ2Miw3ICs0NjYsOCBAQCBzdGF0aWMgaW50IHdyaXRlX3JlZ2lzdGVyKHN0 cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCB2YWwpCj4gIAkJ CQlyZWctPnBvcnRfZGVzYy5uYW1lKTsKPiAgCQkJcmV0dXJuIC0xOwo+ICAJCX0KPiAtCQlpbnRl bF9pb3NmX3NiX3dyaXRlKHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkciwgdmFsKTsKPiAr CQlpbnRlbF9pb3NmX3NiX3dyaXRlKCZtbWlvX2RhdGEsIHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJl Zy0+YWRkciwKPiArCQkJCSAgICB2YWwpOwo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAgCQlm cHJpbnRmKHN0ZGVyciwgInBvcnQgJWQgbm90IHN1cHBvcnRlZFxuIiwgcmVnLT5wb3J0X2Rlc2Mu cG9ydCk7Cj4gQEAgLTU1Niw5ICs1NjEsMTAgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfcmVhZChz dHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAl9Cj4gIAo+ ICAJaWYgKGNvbmZpZy0+bW1pb2ZpbGUpCj4gLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNv bmZpZy0+bW1pb2ZpbGUpOwo+ICsJCWludGVsX21taW9fdXNlX2R1bXBfZmlsZSgmbW1pb19kYXRh LCBjb25maWctPm1taW9maWxlKTsKPiAgCWVsc2UKPiAtCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdChjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKPiArCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdCgmbW1pb19kYXRhLCBjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKPiArCWlndF9nbG9iYWxf bW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlmb3IgKGkgPSAxOyBpIDwgYXJnYzsg aSsrKSB7Cj4gIAkJc3RydWN0IHJlZyByZWc7Cj4gQEAgLTU3NCw3ICs1ODAsNyBAQCBzdGF0aWMg aW50IGludGVsX3JlZ19yZWFkKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmko KTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwo+ICAKPiAgCXJl dHVybiBFWElUX1NVQ0NFU1M7Cj4gIH0KPiBAQCAtNTg4LDcgKzU5NCw4IEBAIHN0YXRpYyBpbnQg aW50ZWxfcmVnX3dyaXRlKHN0cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKPiAgCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwo+ICAJfQo+ICAKPiAtCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KGNvbmZpZy0+cGNpX2RldiwgMCwgLTEpOwo+ICsJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7Cj4gKwlp Z3RfZ2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87Cj4gIAo+ICAJZm9yIChpID0gMTsg aSA8IGFyZ2M7IGkgKz0gMikgewo+ICAJCXN0cnVjdCByZWcgcmVnOwo+IEBAIC02MTMsNyArNjIw LDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfd3JpdGUoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBp bnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCXdyaXRlX3JlZ2lzdGVyKGNvbmZpZywgJnJlZywg dmFsKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+ICsJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7Cj4gIAo+ICAJcmV0dXJuIEVYSVRf U1VDQ0VTUzsKPiAgfQo+IEBAIC02MjQsOSArNjMxLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVn X2R1bXAoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJ aW50IGk7Cj4gIAo+ICAJaWYgKGNvbmZpZy0+bW1pb2ZpbGUpCj4gLQkJaW50ZWxfbW1pb191c2Vf ZHVtcF9maWxlKGNvbmZpZy0+bW1pb2ZpbGUpOwo+ICsJCWludGVsX21taW9fdXNlX2R1bXBfZmls ZSgmbW1pb19kYXRhLCBjb25maWctPm1taW9maWxlKTsKPiAgCWVsc2UKPiAtCQlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfaW5pdChjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKPiArCQlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRhLCBjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKPiAr CWlndF9nbG9iYWxfbW1pbyA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlmb3IgKGkgPSAw OyBpIDwgY29uZmlnLT5yZWdjb3VudDsgaSsrKSB7Cj4gIAkJcmVnID0gJmNvbmZpZy0+cmVnc1tp XTsKPiBAQCAtNjM4LDcgKzY0Niw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcmVnX2R1bXAoc3RydWN0 IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCWR1bXBfcmVnaXN0 ZXIoY29uZmlnLCAmY29uZmlnLT5yZWdzW2ldKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9yZWdpc3Rl cl9hY2Nlc3NfZmluaSgpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0 YSk7Cj4gIAo+ICAJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKPiAgfQo+IEBAIC02NTIsNyArNjYwLDgg QEAgc3RhdGljIGludCBpbnRlbF9yZWdfc25hcHNob3Qoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBp bnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCXJldHVybiBFWElUX0ZBSUxVUkU7Cj4gIAl9Cj4g IAo+IC0JaW50ZWxfbW1pb191c2VfcGNpX2Jhcihjb25maWctPnBjaV9kZXYpOwo+ICsJaW50ZWxf bW1pb191c2VfcGNpX2JhcigmbW1pb19kYXRhLCBjb25maWctPnBjaV9kZXYpOwo+ICsJaWd0X2ds b2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCS8qIFhYWDogZXJyb3IgaGFu ZGxpbmcgKi8KPiAgCWlmICh3cml0ZSgxLCBpZ3RfZ2xvYmFsX21taW8sIGNvbmZpZy0+cGNpX2Rl di0+cmVnaW9uc1ttbWlvX2Jhcl0uc2l6ZSkgPT0gLTEpCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2lu dGVsX3JlZ19jaGVja2VyLmMgYi90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jCj4gaW5kZXggYjE0 YTA2ZWEuLmM4ODMxOTAxIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMK PiArKysgYi90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jCj4gQEAgLTMyLDYgKzMyLDkgQEAKPiAg c3RhdGljIHVpbnQzMl90IGRldmlkOwo+ICBzdGF0aWMgaW50IGdlbjsKPiAgCj4gK3N0YXRpYyBz dHJ1Y3QgX21taW9fZGF0YSBtbWlvX2RhdGE7Cj4gK3ZvaWQgKmlndF9nbG9iYWxfbW1pbzsKPiAr Cj4gIHN0YXRpYyB1aW50MzJfdAo+ICByZWFkX2FuZF9wcmludF9yZWcoY29uc3QgY2hhciAqbmFt ZSwgdWludDMyX3QgcmVnKQo+ICB7Cj4gQEAgLTM0NSw3ICszNDgsOCBAQCBpbnQgbWFpbihpbnQg YXJnYywgY2hhcioqIGFyZ3YpCj4gIAo+ICAJZGV2ID0gaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKTsK PiAgCWRldmlkID0gZGV2LT5kZXZpY2VfaWQ7Cj4gLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGRl dik7Cj4gKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKCZtbWlvX2RhdGEsIGRldik7Cj4gKwlpZ3Rf Z2xvYmFsX21taW8gPSBtbWlvX2RhdGEuaWd0X21taW87Cj4gIAo+ICAJaWYgKElTX0dFTjcoZGV2 aWQpKQo+ICAJCWdlbiA9IDc7Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3dhdGVybWFyay5j IGIvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMKPiBpbmRleCAwMGJkZDEyMC4uM2YyNjdmYTYgMTAw NjQ0Cj4gLS0tIGEvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMKPiArKysgYi90b29scy9pbnRlbF93 YXRlcm1hcmsuYwo+IEBAIC0zNSw2ICszNSw4IEBACj4gIAo+ICBzdGF0aWMgdWludDMyX3QgZGlz cGxheV9iYXNlOwo+ICBzdGF0aWMgdWludDMyX3QgZGV2aWQ7Cj4gK3ZvaWQgKmlndF9nbG9iYWxf bW1pbzsKPiArc3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIG1taW9fZGF0YTsKPiAgCj4gIHN0YXRp YyB1aW50MzJfdCByZWFkX3JlZyh1aW50MzJfdCBhZGRyKQo+ICB7Cj4gQEAgLTI0OSw3ICsyNTEs OCBAQCBzdGF0aWMgdm9pZCBza2xfd21fZHVtcCh2b2lkKQo+ICAJdWludDMyX3QgcGxhbmVfY3Rs W251bV9waXBlc11bbWF4X3BsYW5lc107Cj4gIAl1aW50MzJfdCB3bV9saW5ldGltZVtudW1fcGlw ZXNdOwo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2 aWNlKCksIDAsIC0xKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEs IGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKPiArCWlndF9nbG9iYWxfbW1pbyA9IG1t aW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlmb3IgKHBpcGUgPSAwOyBwaXBlIDwgbnVtX3BpcGVz OyBwaXBlKyspIHsKPiAgCQlpbnQgbnVtX3BsYW5lcyA9IHNrbF9udW1fcGxhbmVzKGRldmlkLCBw aXBlKTsKPiBAQCAtNDY5LDcgKzQ3Miw4IEBAIHN0YXRpYyB2b2lkIGlsa193bV9kdW1wKHZvaWQp Cj4gIAlpbnQgbnVtX3BpcGVzID0gaW50ZWxfZ2VuKGRldmlkKSA+PSA3ID8gMyA6IDI7Cj4gIAlz dHJ1Y3QgaWxrX3dtIHdtID0ge307Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo aW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwo+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwo+ICsJaWd0 X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkg PCBudW1fcGlwZXM7IGkrKykgewo+ICAJCWRzcGNudHJbaV0gPSByZWFkX3JlZygweDcwMTgwICsg aSAqIDB4MTAwMCk7Cj4gQEAgLTUwNSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCBpbGtfd21fZHVt cCh2b2lkKQo+ICAJaWYgKElTX0JST0FEV0VMTChkZXZpZCkgfHwgSVNfSEFTV0VMTChkZXZpZCkp Cj4gIAkJd21fbWlzYyA9IHJlYWRfcmVnKDB4NDUyNjApOwo+ICAKPiAtCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRh KTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BpcGVzOyBpKyspCj4gIAkJcHJpbnRmKCIg ICAgV01fUElQRV8lYyA9IDB4JTA4eFxuIiwgcGlwZV9uYW1lKGkpLCB3bV9waXBlW2ldKTsKPiBA QCAtNjE5LDcgKzYyMyw4IEBAIHN0YXRpYyB2b2lkIHZsdl93bV9kdW1wKHZvaWQpCj4gIAl1aW50 MzJfdCBkc3Bfc3NfcG0sIGRkcl9zZXR1cDI7Cj4gIAlzdHJ1Y3QgZ21jaF93bSB3bXNbTUFYX1BM QU5FXSA9IHt9Owo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9w Y2lfZGV2aWNlKCksIDAsIC0xKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlv X2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKPiArCWlndF9nbG9iYWxfbW1p byA9IG1taW9fZGF0YS5pZ3RfbW1pbzsKPiAgCj4gIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMw KTsKPiAgCWRzcGFyYjIgPSByZWFkX3JlZygweDcwMDYwKTsKPiBAQCAtNjUwLDEzICs2NTUsMTMg QEAgc3RhdGljIHZvaWQgdmx2X3dtX2R1bXAodm9pZCkKPiAgCj4gIAkJZGRsMyA9IHJlYWRfcmVn KDB4NzAwNTgpOwo+ICAKPiAtCQlpbnRlbF9wdW5pdF9yZWFkKDB4MzYsICZkc3Bfc3NfcG0pOwo+ IC0JCWludGVsX3B1bml0X3JlYWQoMHgxMzksICZkZHJfc2V0dXAyKTsKPiArCQlpbnRlbF9wdW5p dF9yZWFkKCZtbWlvX2RhdGEsIDB4MzYsICZkc3Bfc3NfcG0pOwo+ICsJCWludGVsX3B1bml0X3Jl YWQoJm1taW9fZGF0YSwgMHgxMzksICZkZHJfc2V0dXAyKTsKPiAgCX0gZWxzZSB7Cj4gIAkJZnc3 ID0gcmVhZF9yZWcoMHg3MDA3Yyk7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2ZpbmkoKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOwo+ICAK PiAgCXByaW50ZigiICAgICAgICBGVzEgPSAweCUwOHhcbiIsIGZ3MSk7Cj4gIAlwcmludGYoIiAg ICAgICAgRlcyID0gMHglMDh4XG4iLCBmdzIpOwo+IEBAIC04MzUsNyArODQwLDggQEAgc3RhdGlj IHZvaWQgZzR4X3dtX2R1bXAodm9pZCkKPiAgCXVpbnQzMl90IG1pX2FyYl9zdGF0ZTsKPiAgCXN0 cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwo+ICsJaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwg LTEpOwo+ICsJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCWRz cGFjbnRyID0gcmVhZF9yZWcoMHg3MDE4MCk7Cj4gIAlkc3BiY250ciA9IHJlYWRfcmVnKDB4NzEx ODApOwo+IEBAIC04NDYsNyArODUyLDcgQEAgc3RhdGljIHZvaWQgZzR4X3dtX2R1bXAodm9pZCkK PiAgCW1pX2Rpc3BsYXlfcG93ZXJfZG93biA9IHJlYWRfcmVnKDB4MjBlMCk7Cj4gIAltaV9hcmJf c3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKPiAgCj4g IAlwcmludGYoIiAgICAgICAgICAgICBEU1BBQ05UUiA9IDB4JTA4eFxuIiwgZHNwYWNudHIpOwo+ ICAJcHJpbnRmKCIgICAgICAgICAgICAgRFNQQkNOVFIgPSAweCUwOHhcbiIsIGRzcGJjbnRyKTsK PiBAQCAtOTIxLDcgKzkyNyw4IEBAIHN0YXRpYyB2b2lkIGdlbjRfd21fZHVtcCh2b2lkKQo+ICAJ dWludDMyX3QgbWlfYXJiX3N0YXRlOwo+ICAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0g PSB7fTsKPiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2Rl dmljZSgpLCAwLCAtMSk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19kYXRh LCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8gPSBt bWlvX2RhdGEuaWd0X21taW87Cj4gIAo+ICAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7Cj4g IAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKPiBAQCAtOTMwLDcgKzkzNyw3IEBAIHN0YXRpYyB2 b2lkIGdlbjRfd21fZHVtcCh2b2lkKQo+ICAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9y ZWcoMHgyMGUwKTsKPiAgCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7Cj4gIAo+IC0J aW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCZtbWlvX2RhdGEpOwo+ICAKPiAgCXByaW50ZigiICAgICAgICAgICAgICAgICAgRlcxID0g MHglMDh4XG4iLCBmdzEpOwo+ICAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzIgPSAweCUw OHhcbiIsIGZ3Mik7Cj4gQEAgLTk5Miw3ICs5OTksOCBAQCBzdGF0aWMgdm9pZCBwbnZfd21fZHVt cCh2b2lkKQo+ICAJdWludDMyX3QgY2JyOwo+ICAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFO RV0gPSB7fTsKPiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNp X2RldmljZSgpLCAwLCAtMSk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgmbW1pb19k YXRhLCBpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7Cj4gKwlpZ3RfZ2xvYmFsX21taW8g PSBtbWlvX2RhdGEuaWd0X21taW87Cj4gIAo+ICAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7 Cj4gIAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKPiBAQCAtMTAwMiw3ICsxMDEwLDcgQEAgc3Rh dGljIHZvaWQgcG52X3dtX2R1bXAodm9pZCkKPiAgCW1pX2Rpc3BsYXlfcG93ZXJfZG93biA9IHJl YWRfcmVnKDB4MjBlMCk7Cj4gIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwo+ICAK PiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7Cj4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgmbW1pb19kYXRhKTsKPiAgCj4gIAlwcmludGYoIiAgICAgICAgICAgICAgIERTUEFS QiA9IDB4JTA4eFxuIiwgZHNwYXJiKTsKPiAgCXByaW50ZigiICAgICAgICAgICAgICAgICAgRlcx ID0gMHglMDh4XG4iLCBmdzEpOwo+IEBAIC0xMDgyLDcgKzEwOTAsOCBAQCBzdGF0aWMgdm9pZCBn ZW4zX3dtX2R1bXAodm9pZCkKPiAgCXVpbnQzMl90IG1pX2FyYl9zdGF0ZTsKPiAgCXN0cnVjdCBn bWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwo+ICsJaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwo+ ICsJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCWRzcGFyYiA9 IHJlYWRfcmVnKDB4NzAwMzApOwo+ICAJaW5zdHBtID0gcmVhZF9yZWcoMHgyMGMwKTsKPiBAQCAt MTA5MCw3ICsxMDk5LDcgQEAgc3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCj4gIAlmd19i bGNfc2VsZiA9IHJlYWRfcmVnKDB4MjBlMCk7Cj4gIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygw eDIwZTQpOwo+ICAKPiAtCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7Cj4gKwlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgmbW1pb19kYXRhKTsKPiAgCj4gIAlwcmludGYoIiAgICAgIERT UEFSQiA9IDB4JTA4eFxuIiwgZHNwYXJiKTsKPiAgCXByaW50ZigiICAgICAgRldfQkxDID0gMHgl MDE2IiBQUkl4NjQgIlxuIiwgZndfYmxjKTsKPiBAQCAtMTE1MSw3ICsxMTYwLDggQEAgc3RhdGlj IHZvaWQgZ2VuMl93bV9kdW1wKHZvaWQpCj4gIAl1aW50MzJfdCBtaV9zdGF0ZTsKPiAgCXN0cnVj dCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307Cj4gIAo+IC0JaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOwo+ICsJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoJm1taW9fZGF0YSwgaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEp Owo+ICsJaWd0X2dsb2JhbF9tbWlvID0gbW1pb19kYXRhLmlndF9tbWlvOwo+ICAKPiAgCWRzcGFy YiA9IHJlYWRfcmVnKDB4NzAwMzApOwo+ICAJbWVtX21vZGUgPSByZWFkX3JlZygweDIwY2MpOwo+ IEBAIC0xMTU5LDcgKzExNjksNyBAQCBzdGF0aWMgdm9pZCBnZW4yX3dtX2R1bXAodm9pZCkKPiAg CWZ3X2JsY19zZWxmID0gcmVhZF9yZWcoMHgyMGUwKTsKPiAgCW1pX3N0YXRlID0gcmVhZF9yZWco MHgyMGU0KTsKPiAgCj4gLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+ICsJaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJm1taW9fZGF0YSk7Cj4gIAo+ICAJcHJpbnRmKCIgICAgIERT UEFSQiA9IDB4JTA4eFxuIiwgZHNwYXJiKTsKPiAgCXByaW50ZigiICAgTUVNX01PREUgPSAweCUw OHhcbiIsIG1lbV9tb2RlKTsKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3Jh cGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==