From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH] drm/i915/tgl: Enable HDCP 1.4 and 2.2 on Gen12+ Date: Tue, 9 Jul 2019 05:29:30 +0530 Message-ID: <20190708235930.GA4425@intel.com> References: <20190702055434.14630-1-ramalingam.c@intel.com> <34c0a0fa-038f-d6b7-1cb7-c364d4a3661e@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 342B1895A8 for ; Tue, 9 Jul 2019 06:58:48 +0000 (UTC) Content-Disposition: inline In-Reply-To: <34c0a0fa-038f-d6b7-1cb7-c364d4a3661e@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" Cc: intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gMjAxOS0wNy0wOSBhdCAwOTozOToyNCArMDUzMCwgU2hhcm1hLCBTaGFzaGFuayB3cm90ZToK PiBIZWxsbyBSYW0sCj4gCj4gT24gNy8yLzIwMTkgMTE6MjQgQU0sIFJhbWFsaW5nYW0gQyB3cm90 ZToKPiAKPiA+ICBGcm9tIEdlbjEyIG9ud2FyZHMsIEhEQ1AgSFcgYmxvY2sgaXMgaW1wbGVtZW50 ZWQgd2l0aGluIHRyYW5zY29kZXJzLgo+ID4gVGlsbCBHZW4xMSBIRENQIEhXIGJsb2NrIHdhcyBw YXJ0IG9mIERESS4KPiA+IAo+ID4gSGVuY2UgcmVxdWlyZWQgY2hhbmdlcyBpbiBIVyBwcm9ncmFt bWluZyBpcyBoYW5kbGVkIGhlcmUuCj4gPiAKPiA+IHYyOgo+ID4gICAgX01NSU9fVFJBTlMgaXMg dXNlZCBbTHVjYXMgYW5kIERhbmllbF0KPiA+ICAgIHBsYXRmb3JtIGNoZWNrIGlzIG1vdmVkIGlu dG8gdGhlIGNhbGxlciBbTHVjYXNdCj4gPiB2MzoKPiA+ICAgIHBsYXRmb3JtIGNoZWNrIGlzIG1v dmVkIGludG8gYSBtYWNybyBbU2hhc2hhbmtdCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFJhbWFs aW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYyB8IDE1NSArKysrKysrKysrKysrKy0tLS0t LS0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jIHwgICA5 ICstCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICAgIHwgMTIw ICsrKysrKysrKysrKysrKy0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o ICAgICAgICAgIHwgICA4ICsrCj4gPiAgIDQgZmlsZXMgY2hhbmdlZCwgMjIxIGluc2VydGlvbnMo KyksIDcxIGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2hkY3AuYwo+ID4gaW5kZXggYmMzYTk0ZDQ5MWM0Li4xNGJhNzIzYTM1NjEgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYwo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMKPiA+IEBAIC0x Nyw2ICsxNyw3IEBACj4gPiAgICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiA+ICAgI2luY2x1ZGUg ImludGVsX2hkY3AuaCIKPiA+ICAgI2luY2x1ZGUgImludGVsX3NpZGViYW5kLmgiCj4gPiArI2lu Y2x1ZGUgImludGVsX2Nvbm5lY3Rvci5oIgo+ID4gICAjZGVmaW5lIEtFWV9MT0FEX1RSSUVTCTUK PiA+ICAgI2RlZmluZSBFTkNSWVBUX1NUQVRVU19DSEFOR0VfVElNRU9VVF9NUwk1MAo+ID4gQEAg LTEwNCwyMyArMTA1LDIxIEBAIGJvb2wgaW50ZWxfaGRjcDJfY2FwYWJsZShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgIAlyZXR1cm4gY2FwYWJsZTsKPiA+ICAgfQo+ID4g LXN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9oZGNwX2luX3VzZShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCj4gPiArc3RhdGljIGlubGluZSBib29sIGludGVsX2hkY3BfaW5fdXNl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICsJCQkJICAgICBlbnVtIHBp cGUgcGlwZSwgZW51bSBwb3J0IHBvcnQpCj4gPiAgIHsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+IC0JZW51 bSBwb3J0IHBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7Cj4gPiAgIAl1MzIgcmVnOwo+ ID4gLQlyZWcgPSBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSk7Cj4gPiArCXJlZyA9 IEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkpOwo+ID4gICAJcmV0 dXJuIHJlZyAmIEhEQ1BfU1RBVFVTX0VOQzsKPiBkaXJlY3RseSByZXR1cm4gSTkxNV9SRUFEKEhE Q1BfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSkgJgo+IEhEQ1BfU1RBVFVTX0VOQzsgPwoK U3VyZS4KPiA+ICAgfQo+ID4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9oZGNwMl9pbl91c2Uo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyBpbmxpbmUgYm9v bCBpbnRlbF9oZGNwMl9pbl91c2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gKwkJCQkgICAgICBlbnVtIHBpcGUgcGlwZSwgZW51bSBwb3J0IHBvcnQpCj4gPiAgIHsKPiA+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmJhc2UuZGV2KTsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBv cnQ7Cj4gPiAgIAl1MzIgcmVnOwo+ID4gLQlyZWcgPSBJOTE1X1JFQUQoSERDUDJfU1RBVFVTX0RE SShwb3J0KSk7Cj4gPiArCXJlZyA9IEk5MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHBp cGUsIHBvcnQpKTsKPiA+ICAgCXJldHVybiByZWcgJiBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTOwo+ IHNhbWUgaGVyZQo+ID4gICB9Cj4gPiBAQCAtMjUzLDM3ICsyNTIsNTkgQEAgc3RhdGljIGludCBp bnRlbF93cml0ZV9zaGFfdGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUz MiBzaGFfdGV4dCkKPiA+ICAgfQo+ID4gICBzdGF0aWMKPiA+IC11MzIgaW50ZWxfaGRjcF9nZXRf cmVwZWF0ZXJfY3RsKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ ID4gK3UzMiBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gKwkJCQllbnVtIHBpcGUgcGlwZSwgZW51bSBwb3J0IHBvcnQpCj4g PiAgIHsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ ID4gLQlzd2l0Y2ggKHBvcnQpIHsKPiA+IC0JY2FzZSBQT1JUX0E6Cj4gPiAtCQlyZXR1cm4gSERD UF9ERElBX1JFUF9QUkVTRU5UIHwgSERDUF9ERElBX1NIQTFfTTA7Cj4gPiAtCWNhc2UgUE9SVF9C Ogo+ID4gLQkJcmV0dXJuIEhEQ1BfRERJQl9SRVBfUFJFU0VOVCB8IEhEQ1BfRERJQl9TSEExX00w Owo+ID4gLQljYXNlIFBPUlRfQzoKPiA+IC0JCXJldHVybiBIRENQX0RESUNfUkVQX1BSRVNFTlQg fCBIRENQX0RESUNfU0hBMV9NMDsKPiA+IC0JY2FzZSBQT1JUX0Q6Cj4gPiAtCQlyZXR1cm4gSERD UF9ERElEX1JFUF9QUkVTRU5UIHwgSERDUF9ERElEX1NIQTFfTTA7Cj4gPiAtCWNhc2UgUE9SVF9F Ogo+ID4gLQkJcmV0dXJuIEhEQ1BfRERJRV9SRVBfUFJFU0VOVCB8IEhEQ1BfRERJRV9TSEExX00w Owo+ID4gLQlkZWZhdWx0Ogo+ID4gLQkJYnJlYWs7Cj4gPiAtCX0KPiA+IC0JRFJNX0VSUk9SKCJV bmtub3duIHBvcnQgJWRcbiIsIHBvcnQpOwo+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMikgewo+ID4gKwkJc3dpdGNoIChwaXBlKSB7Cj4gPiArCQljYXNlIFBJUEVfQToKPiA+ICsJ CQlyZXR1cm4gSERDUF9UUkFOU0FfUkVQX1BSRVNFTlQgfAo+ID4gKwkJCSAgICAgICBIRENQX1RS QU5TQV9TSEExX00wOwo+ID4gKwkJY2FzZSBQSVBFX0I6Cj4gPiArCQkJcmV0dXJuIEhEQ1BfVFJB TlNCX1JFUF9QUkVTRU5UIHwKPiA+ICsJCQkgICAgICAgSERDUF9UUkFOU0JfU0hBMV9NMDsKPiA+ ICsJCWNhc2UgUElQRV9DOgo+ID4gKwkJCXJldHVybiBIRENQX1RSQU5TQ19SRVBfUFJFU0VOVCB8 Cj4gPiArCQkJICAgICAgIEhEQ1BfVFJBTlNDX1NIQTFfTTA7Cj4gPiArCQkvKiBGSVhNRTogQWRk IGEgY2FzZSBmb3IgUElQRV9EICovCj4gPiArCQlkZWZhdWx0Ogo+ID4gKwkJCURSTV9FUlJPUigi VW5rbm93biBwaXBlICVkXG4iLCBwaXBlKTsKPiA+ICsJCQlicmVhazsKPiA+ICsJCX0KPiAKPiBy ZXR1cm4gLUVJTlZBTCBoZXJlLCB0aGVuIHdlIGRvbid0IG5lZWQgdGhlIGVsc2UgY29uZGl0aW9u Cj4gCj4gbWF5IGJlIHNvbWV0aGluZyBsaWtlOgo+IAo+IHJldCA9IC1FSU5WQUwKPiAKPiBpZiAo R0VOID49MTIpIHsKPiAKPiDCoMKgwqAgc3dpdGNoKHBpcGUpIHsKPiAKPiDCoMKgwqAgwqDCoMKg IGNhc2UgUElQRUE6IHJldCA9IDsgYnJlYWs7Cj4gCj4gwqDCoMKgIMKgwqDCoCBjYXNlIFBJUEVf QjogcmV0ID07IGJyZWFrOwo+IAo+IMKgwqDCoCDCoMKgwqAgZGVmYXVsdDogRFJNX0VSUk9SKCk7 IGJyZWFrOwo+IAo+IMKgwqDCoCB9Cj4gCj4gwqDCoMKgIHJldHVybiByZXQ7Cj4gCj4gfQo+IAo+ IHN3aXRjaCAocG9ydCkgewo+IAo+IMKgwqDCoMKgwqDCoMKgIGNhc2UgUE9SVF9BOiByZXQgPSA7 Cj4gCj4gwqDCoMKgIMKgwqDCoCBjYXNlIFBPUlRfQjogcmV0ID07Cj4gCj4gwqDCoMKgIMKgwqDC oCBkZWZhdWx0OiBEUk1fRVJST1IoKTsKPiAKPiB9Cj4gCj4gcmV0dXJuIHJldDsKCldhcyBub3Qg dGhpbmtpbmcgdG8gcmVtb3ZlIHRoZSBlbHNlIHBhcnQuIHBlcmhhcHMgd2lsbCBsb29rIGJldHRl cgp3aXRob3V0IGVsc2UuCj4gCj4gPiArCX0gZWxzZSB7Cj4gPiArCQlzd2l0Y2ggKHBvcnQpIHsK PiA+ICsJCWNhc2UgUE9SVF9BOgo+ID4gKwkJCXJldHVybiBIRENQX0RESUFfUkVQX1BSRVNFTlQg fCBIRENQX0RESUFfU0hBMV9NMDsKPiA+ICsJCWNhc2UgUE9SVF9COgo+ID4gKwkJCXJldHVybiBI RENQX0RESUJfUkVQX1BSRVNFTlQgfCBIRENQX0RESUJfU0hBMV9NMDsKPiA+ICsJCWNhc2UgUE9S VF9DOgo+ID4gKwkJCXJldHVybiBIRENQX0RESUNfUkVQX1BSRVNFTlQgfCBIRENQX0RESUNfU0hB MV9NMDsKPiA+ICsJCWNhc2UgUE9SVF9EOgo+ID4gKwkJCXJldHVybiBIRENQX0RESURfUkVQX1BS RVNFTlQgfCBIRENQX0RESURfU0hBMV9NMDsKPiA+ICsJCWNhc2UgUE9SVF9FOgo+ID4gKwkJCXJl dHVybiBIRENQX0RESUVfUkVQX1BSRVNFTlQgfCBIRENQX0RESUVfU0hBMV9NMDsKPiA+ICsJCWRl ZmF1bHQ6Cj4gPiArCQkJRFJNX0VSUk9SKCJVbmtub3duIHBvcnQgJWRcbiIsIHBvcnQpOwo+ID4g KwkJCWJyZWFrOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiAgIAlyZXR1cm4gLUVJTlZBTDsKPiA+ICAg fQo+ID4gICBzdGF0aWMKPiA+IC1pbnQgaW50ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gK2ludCBpbnRlbF9oZGNw X3ZhbGlkYXRlX3ZfcHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4g ICAJCQkJY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSwKPiA+ICAgCQkJCXU4ICpr c3ZfZmlmbywgdTggbnVtX2Rvd25zdHJlYW0sIHU4ICpic3RhdHVzKQo+ID4gICB7Cj4gPiArCXN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9y dChjb25uZWN0b3IpOwo+ID4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ ID4gKwllbnVtIHBpcGUgcGlwZSA9IGNvbm5lY3Rvci0+aGRjcC5waXBlOwo+ID4gKwllbnVtIHBv cnQgcG9ydDsKPiBlbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Pwpz dXJlLgo+ID4gICAJdTMyIHZwcmltZSwgc2hhX3RleHQsIHNoYV9sZWZ0b3ZlcnMsIHJlcF9jdGw7 Cj4gPiAgIAlpbnQgcmV0LCBpLCBqLCBzaGFfaWR4Owo+ID4gICAJZGV2X3ByaXYgPSBpbnRlbF9k aWdfcG9ydC0+YmFzZS5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gPiArCXBvcnQgPSBpbnRlbF9k aWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gICAJLyogUHJvY2VzcyBWJyB2YWx1ZXMgZnJvbSB0aGUg cmVjZWl2ZXIgKi8KPiA+ICAgCWZvciAoaSA9IDA7IGkgPCBEUk1fSERDUF9WX1BSSU1FX05VTV9Q QVJUUzsgaSsrKSB7Cj4gPiBAQCAtMzA2LDcgKzMyNyw3IEBAIGludCBpbnRlbF9oZGNwX3ZhbGlk YXRlX3ZfcHJpbWUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4g PiAgIAlzaGFfaWR4ID0gMDsKPiA+ICAgCXNoYV90ZXh0ID0gMDsKPiA+ICAgCXNoYV9sZWZ0b3Zl cnMgPSAwOwo+ID4gLQlyZXBfY3RsID0gaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGludGVs X2RpZ19wb3J0KTsKPiA+ICsJcmVwX2N0bCA9IGludGVsX2hkY3BfZ2V0X3JlcGVhdGVyX2N0bChk ZXZfcHJpdiwgcGlwZSwgcG9ydCk7Cj4gPiAgIAlJOTE1X1dSSVRFKEhEQ1BfUkVQX0NUTCwgcmVw X2N0bCB8IEhEQ1BfU0hBMV9URVhUXzMyKTsKPiA+ICAgCWZvciAoaSA9IDA7IGkgPCBudW1fZG93 bnN0cmVhbTsgaSsrKSB7Cj4gPiAgIAkJdW5zaWduZWQgaW50IHNoYV9lbXB0eTsKPiA+IEBAIC01 NDQsNyArNTY1LDcgQEAgaW50IGludGVsX2hkY3BfYXV0aF9kb3duc3RyZWFtKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICAgCSAqIFYgcHJpbWUgYXRsZWFzdCB0d2ljZS4K PiA+ICAgCSAqLwo+ID4gICAJZm9yIChpID0gMDsgaSA8IHRyaWVzOyBpKyspIHsKPiA+IC0JCXJl dCA9IGludGVsX2hkY3BfdmFsaWRhdGVfdl9wcmltZShpbnRlbF9kaWdfcG9ydCwgc2hpbSwKPiA+ ICsJCXJldCA9IGludGVsX2hkY3BfdmFsaWRhdGVfdl9wcmltZShjb25uZWN0b3IsIHNoaW0sCj4g PiAgIAkJCQkJCSAga3N2X2ZpZm8sIG51bV9kb3duc3RyZWFtLAo+ID4gICAJCQkJCQkgIGJzdGF0 dXMpOwo+ID4gICAJCWlmICghcmV0KQo+ID4gQEAgLTU3Miw2ICs1OTMsNyBAQCBzdGF0aWMgaW50 IGludGVsX2hkY3BfYXV0aChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAg IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKPiA+ICAgCWNv bnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0gPSBoZGNwLT5zaGltOwo+ID4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IGNv bm5lY3Rvci0+aGRjcC5waXBlOwo+ID4gICAJZW51bSBwb3J0IHBvcnQ7Cj4gPiAgIAl1bnNpZ25l ZCBsb25nIHIwX3ByaW1lX2dlbl9zdGFydDsKPiA+ICAgCWludCByZXQsIGksIHRyaWVzID0gMjsK PiA+IEBAIC02MTEsMTkgKzYzMywyMCBAQCBzdGF0aWMgaW50IGludGVsX2hkY3BfYXV0aChzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgIAkvKiBJbml0aWFsaXplIEFuIHdp dGggMiByYW5kb20gdmFsdWVzIGFuZCBhY3F1aXJlIGl0ICovCj4gPiAgIAlmb3IgKGkgPSAwOyBp IDwgMjsgaSsrKQo+ID4gLQkJSTkxNV9XUklURShQT1JUX0hEQ1BfQU5JTklUKHBvcnQpLCBnZXRf cmFuZG9tX3UzMigpKTsKPiA+IC0JSTkxNV9XUklURShQT1JUX0hEQ1BfQ09ORihwb3J0KSwgSERD UF9DT05GX0NBUFRVUkVfQU4pOwo+ID4gKwkJSTkxNV9XUklURShIRENQX0FOSU5JVChkZXZfcHJp diwgcGlwZSwgcG9ydCksIGdldF9yYW5kb21fdTMyKCkpOwo+ID4gKwlJOTE1X1dSSVRFKEhEQ1Bf Q09ORihkZXZfcHJpdiwgcGlwZSwgcG9ydCksIEhEQ1BfQ09ORl9DQVBUVVJFX0FOKTsKPiA+ICAg CS8qIFdhaXQgZm9yIEFuIHRvIGJlIGFjcXVpcmVkICovCj4gPiAtCWlmIChpbnRlbF93YWl0X2Zv cl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwgUE9SVF9IRENQX1NUQVRVUyhwb3J0KSwKPiA+ ICsJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCZkZXZfcHJpdi0+dW5jb3JlLAo+ID4gKwkJ CQkgICAgSERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLAo+ID4gICAJCQkJICAgIEhE Q1BfU1RBVFVTX0FOX1JFQURZLAo+ID4gICAJCQkJICAgIEhEQ1BfU1RBVFVTX0FOX1JFQURZLCAx KSkgewo+ID4gICAJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIEFuXG4iKTsKPiA+ ICAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiA+ICAgCX0KPiA+IC0JYW4ucmVnWzBdID0gSTkxNV9S RUFEKFBPUlRfSERDUF9BTkxPKHBvcnQpKTsKPiA+IC0JYW4ucmVnWzFdID0gSTkxNV9SRUFEKFBP UlRfSERDUF9BTkhJKHBvcnQpKTsKPiA+ICsJYW4ucmVnWzBdID0gSTkxNV9SRUFEKEhEQ1BfQU5M TyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkpOwo+ID4gKwlhbi5yZWdbMV0gPSBJOTE1X1JFQUQoSERD UF9BTkhJKGRldl9wcml2LCBwaXBlLCBwb3J0KSk7Cj4gPiAgIAlyZXQgPSBzaGltLT53cml0ZV9h bl9ha3N2KGludGVsX2RpZ19wb3J0LCBhbi5zaGltKTsKPiA+ICAgCWlmIChyZXQpCj4gPiAgIAkJ cmV0dXJuIHJldDsKPiA+IEBAIC02NDEsMjQgKzY2NCwyNCBAQCBzdGF0aWMgaW50IGludGVsX2hk Y3BfYXV0aChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgIAkJcmV0dXJu IC1FUEVSTTsKPiA+ICAgCX0KPiA+IC0JSTkxNV9XUklURShQT1JUX0hEQ1BfQktTVkxPKHBvcnQp LCBia3N2LnJlZ1swXSk7Cj4gPiAtCUk5MTVfV1JJVEUoUE9SVF9IRENQX0JLU1ZISShwb3J0KSwg Ymtzdi5yZWdbMV0pOwo+ID4gKwlJOTE1X1dSSVRFKEhEQ1BfQktTVkxPKGRldl9wcml2LCBwaXBl LCBwb3J0KSwgYmtzdi5yZWdbMF0pOwo+ID4gKwlJOTE1X1dSSVRFKEhEQ1BfQktTVkhJKGRldl9w cml2LCBwaXBlLCBwb3J0KSwgYmtzdi5yZWdbMV0pOwo+ID4gICAJcmV0ID0gc2hpbS0+cmVwZWF0 ZXJfcHJlc2VudChpbnRlbF9kaWdfcG9ydCwgJnJlcGVhdGVyX3ByZXNlbnQpOwo+ID4gICAJaWYg KHJldCkKPiA+ICAgCQlyZXR1cm4gcmV0Owo+ID4gICAJaWYgKHJlcGVhdGVyX3ByZXNlbnQpCj4g PiAgIAkJSTkxNV9XUklURShIRENQX1JFUF9DVEwsCj4gPiAtCQkJICAgaW50ZWxfaGRjcF9nZXRf cmVwZWF0ZXJfY3RsKGludGVsX2RpZ19wb3J0KSk7Cj4gPiArCQkJICAgaW50ZWxfaGRjcF9nZXRf cmVwZWF0ZXJfY3RsKGRldl9wcml2LCBwaXBlLCBwb3J0KSk7Cj4gPiAgIAlyZXQgPSBzaGltLT50 b2dnbGVfc2lnbmFsbGluZyhpbnRlbF9kaWdfcG9ydCwgdHJ1ZSk7Cj4gPiAgIAlpZiAocmV0KQo+ ID4gICAJCXJldHVybiByZXQ7Cj4gPiAtCUk5MTVfV1JJVEUoUE9SVF9IRENQX0NPTkYocG9ydCks IEhEQ1BfQ09ORl9BVVRIX0FORF9FTkMpOwo+ID4gKwlJOTE1X1dSSVRFKEhEQ1BfQ09ORihkZXZf cHJpdiwgcGlwZSwgcG9ydCksIEhEQ1BfQ09ORl9BVVRIX0FORF9FTkMpOwo+ID4gICAJLyogV2Fp dCBmb3IgUjAgcmVhZHkgKi8KPiA+IC0JaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChQT1JUX0hEQ1Bf U1RBVFVTKHBvcnQpKSAmCj4gPiArCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoSERDUF9TVEFUVVMo ZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSAmCj4gPiAgIAkJICAgICAoSERDUF9TVEFUVVNfUjBfUkVB RFkgfCBIRENQX1NUQVRVU19FTkMpLCAxKSkgewo+ID4gICAJCURSTV9FUlJPUigiVGltZWQgb3V0 IHdhaXRpbmcgZm9yIFIwIHJlYWR5XG4iKTsKPiA+ICAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiA+ IEBAIC02ODYsMjIgKzcwOSwyMyBAQCBzdGF0aWMgaW50IGludGVsX2hkY3BfYXV0aChzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgIAkJcmV0ID0gc2hpbS0+cmVhZF9yaV9w cmltZShpbnRlbF9kaWdfcG9ydCwgcmkuc2hpbSk7Cj4gPiAgIAkJaWYgKHJldCkKPiA+ICAgCQkJ cmV0dXJuIHJldDsKPiA+IC0JCUk5MTVfV1JJVEUoUE9SVF9IRENQX1JQUklNRShwb3J0KSwgcmku cmVnKTsKPiA+ICsJCUk5MTVfV1JJVEUoSERDUF9SUFJJTUUoZGV2X3ByaXYsIHBpcGUsIHBvcnQp LCByaS5yZWcpOwo+ID4gICAJCS8qIFdhaXQgZm9yIFJpIHByaW1lIG1hdGNoICovCj4gPiAtCQlp ZiAoIXdhaXRfZm9yKEk5MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSAmCj4gPiArCQlp ZiAoIXdhaXRfZm9yKEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkp ICYKPiA+ICAgCQkgICAgKEhEQ1BfU1RBVFVTX1JJX01BVENIIHwgSERDUF9TVEFUVVNfRU5DKSwg MSkpCj4gPiAgIAkJCWJyZWFrOwo+ID4gICAJfQo+ID4gICAJaWYgKGkgPT0gdHJpZXMpIHsKPiA+ ICAgCQlEUk1fREVCVUdfS01TKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgUmkgcHJpbWUgbWF0Y2gg KCV4KVxuIiwKPiA+IC0JCQkgICAgICBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkp Owo+ID4gKwkJCSAgICAgIEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9y dCkpKTsKPiA+ICAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiA+ICAgCX0KPiA+ICAgCS8qIFdhaXQg Zm9yIGVuY3J5cHRpb24gY29uZmlybWF0aW9uICovCj4gPiAtCWlmIChpbnRlbF93YWl0X2Zvcl9y ZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwgUE9SVF9IRENQX1NUQVRVUyhwb3J0KSwKPiA+ICsJ aWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCZkZXZfcHJpdi0+dW5jb3JlLAo+ID4gKwkJCQkg ICAgSERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLAo+ID4gICAJCQkJICAgIEhEQ1Bf U1RBVFVTX0VOQywgSERDUF9TVEFUVVNfRU5DLAo+ID4gICAJCQkJICAgIEVOQ1JZUFRfU1RBVFVT X0NIQU5HRV9USU1FT1VUX01TKSkgewo+ID4gICAJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRp bmcgZm9yIGVuY3J5cHRpb25cbiIpOwo+ID4gQEAgLTcyNiwxNSArNzUwLDE2IEBAIHN0YXRpYyBp bnQgX2ludGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ip Cj4gPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjb25uZWN0b3ItPmJh c2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ID4gICAJZW51bSBw b3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gKwllbnVtIHBpcGUgcGlw ZSA9IGhkY3AtPnBpcGU7Cj4gPiAgIAlpbnQgcmV0Owo+ID4gICAJRFJNX0RFQlVHX0tNUygiWyVz OiVkXSBIRENQIGlzIGJlaW5nIGRpc2FibGVkLi4uXG4iLAo+ID4gICAJCSAgICAgIGNvbm5lY3Rv ci0+YmFzZS5uYW1lLCBjb25uZWN0b3ItPmJhc2UuYmFzZS5pZCk7Cj4gPiAgIAloZGNwLT5oZGNw X2VuY3J5cHRlZCA9IGZhbHNlOwo+ID4gLQlJOTE1X1dSSVRFKFBPUlRfSERDUF9DT05GKHBvcnQp LCAwKTsKPiA+ICsJSTkxNV9XUklURShIRENQX0NPTkYoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLCAw KTsKPiA+ICAgCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwK PiA+IC0JCQkJICAgIFBPUlRfSERDUF9TVEFUVVMocG9ydCksIH4wLCAwLAo+ID4gKwkJCQkgICAg SERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLCB+MCwgMCwKPiA+ICAgCQkJCSAgICBF TkNSWVBUX1NUQVRVU19DSEFOR0VfVElNRU9VVF9NUykpIHsKPiA+ICAgCQlEUk1fRVJST1IoIkZh aWxlZCB0byBkaXNhYmxlIEhEQ1AsIHRpbWVvdXQgY2xlYXJpbmcgc3RhdHVzXG4iKTsKPiA+ICAg CQlyZXR1cm4gLUVUSU1FRE9VVDsKPiA+IEBAIC04MDYsOSArODMxLDExIEBAIHN0YXRpYyBpbnQg aW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiA+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNvbm5lY3Rvci0+YmFz ZS5kZXYtPmRldl9wcml2YXRlOwo+ID4gICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7Cj4gPiAgIAllbnVtIHBv cnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4gPiArCWVudW0gcGlwZSBwaXBl Owo+ID4gICAJaW50IHJldCA9IDA7Cj4gPiAgIAltdXRleF9sb2NrKCZoZGNwLT5tdXRleCk7Cj4g PiArCXBpcGUgPSBoZGNwLT5waXBlOwo+ID4gICAJLyogQ2hlY2tfbGluayB2YWxpZCBvbmx5IHdo ZW4gSERDUDEuNCBpcyBlbmFibGVkICovCj4gPiAgIAlpZiAoaGRjcC0+dmFsdWUgIT0gRFJNX01P REVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJMRUQgfHwKPiA+IEBAIC04MTcsMTAgKzg0NCwxMCBA QCBzdGF0aWMgaW50IGludGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCj4gPiAgIAkJZ290byBvdXQ7Cj4gPiAgIAl9Cj4gPiAtCWlmIChXQVJOX09O KCFpbnRlbF9oZGNwX2luX3VzZShjb25uZWN0b3IpKSkgewo+ID4gKwlpZiAoV0FSTl9PTighaW50 ZWxfaGRjcF9pbl91c2UoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSkgewo+ID4gICAJCURSTV9FUlJP UigiJXM6JWQgSERDUCBsaW5rIHN0b3BwZWQgZW5jcnlwdGlvbiwleFxuIiwKPiA+ICAgCQkJICBj b25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCj4gPiAtCQkJICBJ OTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkpOwo+ID4gKwkJCSAgSTkxNV9SRUFEKEhE Q1BfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSkpOwo+ID4gICAJCXJldCA9IC1FTlhJTzsK PiA+ICAgCQloZGNwLT52YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9ERVNJUkVE Owo+ID4gICAJCXNjaGVkdWxlX3dvcmsoJmhkY3AtPnByb3Bfd29yayk7Cj4gPiBAQCAtMTQ5MSwx MCArMTUxOCwxMSBAQCBzdGF0aWMgaW50IGhkY3AyX2VuYWJsZV9lbmNyeXB0aW9uKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gPiAgIAlzdHJ1Y3Qg aW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gPiAgIAllbnVtIHBvcnQgcG9y dCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSBoZGNw LT5waXBlOwo+ID4gICAJaW50IHJldDsKPiA+IC0JV0FSTl9PTihJOTE1X1JFQUQoSERDUDJfU1RB VFVTX0RESShwb3J0KSkgJiBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKTsKPiA+IC0KPiA+ICsJV0FS Tl9PTihJOTE1X1JFQUQoSERDUDJfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSkgJgo+ID4g KwkJTElOS19FTkNSWVBUSU9OX1NUQVRVUyk7Cj4gPiAgIAlpZiAoaGRjcC0+c2hpbS0+dG9nZ2xl X3NpZ25hbGxpbmcpIHsKPiA+ICAgCQlyZXQgPSBoZGNwLT5zaGltLT50b2dnbGVfc2lnbmFsbGlu ZyhpbnRlbF9kaWdfcG9ydCwgdHJ1ZSk7Cj4gPiAgIAkJaWYgKHJldCkgewo+ID4gQEAgLTE1MDQs MTQgKzE1MzIsMTUgQEAgc3RhdGljIGludCBoZGNwMl9lbmFibGVfZW5jcnlwdGlvbihzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgIAkJfQo+ID4gICAJfQo+ID4gLQlpZiAo STkxNV9SRUFEKEhEQ1AyX1NUQVRVU19EREkocG9ydCkpICYgTElOS19BVVRIX1NUQVRVUykgewo+ ID4gKwlpZiAoSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkpICYg TElOS19BVVRIX1NUQVRVUykgewo+ID4gICAJCS8qIExpbmsgaXMgQXV0aGVudGljYXRlZC4gTm93 IHNldCBmb3IgRW5jcnlwdGlvbiAqLwo+ID4gLQkJSTkxNV9XUklURShIRENQMl9DVExfRERJKHBv cnQpLAo+ID4gLQkJCSAgIEk5MTVfUkVBRChIRENQMl9DVExfRERJKHBvcnQpKSB8Cj4gPiArCQlJ OTE1X1dSSVRFKEhEQ1AyX0NUTChkZXZfcHJpdiwgcGlwZSwgcG9ydCksCj4gPiArCQkJICAgSTkx NV9SRUFEKEhEQ1AyX0NUTChkZXZfcHJpdiwgcGlwZSwgcG9ydCkpIHwKPiA+ICAgCQkJICAgQ1RM X0xJTktfRU5DUllQVElPTl9SRVEpOwo+ID4gICAJfQo+ID4gLQlyZXQgPSBpbnRlbF93YWl0X2Zv cl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwgSERDUDJfU1RBVFVTX0RESShwb3J0KSwKPiA+ ICsJcmV0ID0gaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsCj4gPiAr CQkJCSAgICAgIEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCksCj4gPiAgIAkJCQkg ICAgICBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTLAo+ID4gICAJCQkJICAgICAgTElOS19FTkNSWVBU SU9OX1NUQVRVUywKPiA+ICAgCQkJCSAgICAgIEVOQ1JZUFRfU1RBVFVTX0NIQU5HRV9USU1FT1VU X01TKTsKPiA+IEBAIC0xNTI1LDE0ICsxNTU0LDE3IEBAIHN0YXRpYyBpbnQgaGRjcDJfZGlzYWJs ZV9lbmNyeXB0aW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNl LmRldik7Cj4gPiAgIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7 Cj4gPiAgIAllbnVtIHBvcnQgcG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKPiA+ICsJ ZW51bSBwaXBlIHBpcGUgPSBoZGNwLT5waXBlOwo+ID4gICAJaW50IHJldDsKPiA+IC0JV0FSTl9P TighKEk5MTVfUkVBRChIRENQMl9TVEFUVVNfRERJKHBvcnQpKSAmIExJTktfRU5DUllQVElPTl9T VEFUVVMpKTsKPiA+ICsJV0FSTl9PTighKEk5MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2X3ByaXYs IHBpcGUsIHBvcnQpKSAmCj4gPiArCQlMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKSk7Cj4gPiArCUk5 MTVfV1JJVEUoSERDUDJfQ1RMKGRldl9wcml2LCBwaXBlLCBwb3J0KSwKPiA+ICsJCSAgIEk5MTVf UkVBRChIRENQMl9DVEwoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSAmCj4gPiArCQkgICB+Q1RMX0xJ TktfRU5DUllQVElPTl9SRVEpOwo+ID4gLQlJOTE1X1dSSVRFKEhEQ1AyX0NUTF9EREkocG9ydCks Cj4gPiAtCQkgICBJOTE1X1JFQUQoSERDUDJfQ1RMX0RESShwb3J0KSkgJiB+Q1RMX0xJTktfRU5D UllQVElPTl9SRVEpOwo+ID4gLQo+ID4gLQlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcigm ZGV2X3ByaXYtPnVuY29yZSwgSERDUDJfU1RBVFVTX0RESShwb3J0KSwKPiA+ICsJcmV0ID0gaW50 ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsCj4gPiArCQkJCSAgICAgIEhE Q1AyX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCksCj4gPiAgIAkJCQkgICAgICBMSU5LX0VO Q1JZUFRJT05fU1RBVFVTLCAweDAsCj4gPiAgIAkJCQkgICAgICBFTkNSWVBUX1NUQVRVU19DSEFO R0VfVElNRU9VVF9NUyk7Cj4gPiAgIAlpZiAocmV0ID09IC1FVElNRURPVVQpCj4gPiBAQCAtMTYz MSw5ICsxNjYzLDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcDJfY2hlY2tfbGluayhzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gICAJc3RydWN0 IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ID4gICAJZW51bSBwb3J0IHBv cnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7Cj4gPiArCWVudW0gcGlwZSBwaXBlOwo+ID4g ICAJaW50IHJldCA9IDA7Cj4gPiAgIAltdXRleF9sb2NrKCZoZGNwLT5tdXRleCk7Cj4gPiArCXBp cGUgPSBoZGNwLT5waXBlOwo+ID4gICAJLyogaGRjcDJfY2hlY2tfbGluayBpcyBleHBlY3RlZCBv bmx5IHdoZW4gSERDUDIuMiBpcyBFbmFibGVkICovCj4gPiAgIAlpZiAoaGRjcC0+dmFsdWUgIT0g RFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJMRUQgfHwKPiA+IEBAIC0xNjQyLDkgKzE2 NzYsOSBAQCBzdGF0aWMgaW50IGludGVsX2hkY3AyX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ID4gICAJCWdvdG8gb3V0Owo+ID4gICAJfQo+ID4gLQlpZiAo V0FSTl9PTighaW50ZWxfaGRjcDJfaW5fdXNlKGNvbm5lY3RvcikpKSB7Cj4gPiArCWlmIChXQVJO X09OKCFpbnRlbF9oZGNwMl9pbl91c2UoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSkgewo+ID4gICAJ CURSTV9FUlJPUigiSERDUDIuMiBsaW5rIHN0b3BwZWQgdGhlIGVuY3J5cHRpb24sICV4XG4iLAo+ ID4gLQkJCSAgSTkxNV9SRUFEKEhEQ1AyX1NUQVRVU19EREkocG9ydCkpKTsKPiA+ICsJCQkgIEk5 MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSk7Cj4gPiAgIAkJcmV0 ID0gLUVOWElPOwo+ID4gICAJCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNU SU9OX0RFU0lSRUQ7Cj4gPiAgIAkJc2NoZWR1bGVfd29yaygmaGRjcC0+cHJvcF93b3JrKTsKPiA+ IEBAIC0xODU3LDYgKzE4OTEsOSBAQCBpbnQgaW50ZWxfaGRjcF9lbmFibGUoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gICAJbXV0ZXhfbG9jaygmaGRjcC0+bXV0ZXgpOwo+ ID4gICAJV0FSTl9PTihoZGNwLT52YWx1ZSA9PSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05f RU5BQkxFRCk7Cj4gPiArCS8qIEZJWE1FOiBOZWVkIHRvIHRha2UgdGhlIGRybSBtb2Rlc2V0IGxv Y2sgZm9yIGNvbm5lY3Rpb25fbXV0ZXguICovCj4gQW5kIHdlIGNhbid0IHRha2UgdGhpcyByaWdo dCBub3cgYmVjYXVzZS4uLi4gPwpTb3JyeSB0aGlzIEZJWE1FIGlzIHN1cHBvc2VkIHRvIGJlIHJl bW92ZWQuIGRybSBtb2RlIHNldCBsb2NrIGlzIGFscmVhZHkKYWNxdWlyZWQgYXQgdGhpcyBwb2lu dCBpbiB0aW1lLgo+ID4gKwloZGNwLT5waXBlID0gaW50ZWxfY29ubmVjdG9yX2dldF9waXBlKGNv bm5lY3Rvcik7Cj4gPiArCj4gPiAgIAkvKgo+ID4gICAJICogQ29uc2lkZXJpbmcgdGhhdCBIRENQ Mi4yIGlzIG1vcmUgc2VjdXJlIHRoYW4gSERDUDEuNCwgSWYgdGhlIHNldHVwCj4gPiAgIAkgKiBp cyBjYXBhYmxlIG9mIEhEQ1AyLjIsIGl0IGlzIHByZWZlcnJlZCB0byB1c2UgSERDUDIuMi4KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4gPiBpbmRleCAwZWJl YzY5YmJiZmMuLjIwOTZhZWUxNzRiMiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2hkbWkuYwo+ID4gQEAgLTE0OTEsNyArMTQ5MSwxMCBAQCBib29sIGludGVs X2hkbWlfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0KQo+ID4gICB7Cj4gPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PQo+ID4gICAJCWludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0KPiA+ICsJCQkJaW50ZWxfZGln X3BvcnQtPmhkbWkuYXR0YWNoZWRfY29ubmVjdG9yOwo+ID4gICAJZW51bSBwb3J0IHBvcnQgPSBp bnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IGNvbm5lY3Rv ci0+aGRjcC5waXBlOwo+ID4gICAJaW50IHJldDsKPiA+ICAgCXVuaW9uIHsKPiA+ICAgCQl1MzIg cmVnOwo+ID4gQEAgLTE1MDIsMTMgKzE1MDUsMTMgQEAgYm9vbCBpbnRlbF9oZG1pX2hkY3BfY2hl Y2tfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiA+ICAg CWlmIChyZXQpCj4gPiAgIAkJcmV0dXJuIGZhbHNlOwo+ID4gLQlJOTE1X1dSSVRFKFBPUlRfSERD UF9SUFJJTUUocG9ydCksIHJpLnJlZyk7Cj4gPiArCUk5MTVfV1JJVEUoSERDUF9SUFJJTUUoZGV2 X3ByaXYsIHBpcGUsIHBvcnQpLCByaS5yZWcpOwo+ID4gICAJLyogV2FpdCBmb3IgUmkgcHJpbWUg bWF0Y2ggKi8KPiA+IC0JaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBv cnQpKSAmCj4gPiArCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoSERDUF9TVEFUVVMoZGV2X3ByaXYs IHBpcGUsIHBvcnQpKSAmCj4gPiAgIAkJICAgICAoSERDUF9TVEFUVVNfUklfTUFUQ0ggfCBIRENQ X1NUQVRVU19FTkMpLCAxKSkgewo+ID4gICAJCURSTV9FUlJPUigiUmknIG1pc21hdGNoIGRldGVj dGVkLCBsaW5rIGNoZWNrIGZhaWxlZCAoJXgpXG4iLAo+ID4gLQkJCSAgSTkxNV9SRUFEKFBPUlRf SERDUF9TVEFUVVMocG9ydCkpKTsKPiA+ICsJCQkgIEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZf cHJpdiwgcGlwZSwgcG9ydCkpKTsKPiA+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gPiAgIAl9Cj4gPiAg IAlyZXR1cm4gdHJ1ZTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gaW5kZXggN2U2MDA5 Y2VmYjE4Li4yMzA2ZTgzYjE2ZmMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4g PiBAQCAtOTIyNSwxMiArOTIyNSwyMCBAQCBlbnVtIHNrbF9wb3dlcl9nYXRlIHsKPiA+ICAgLyog SERDUCBSZXBlYXRlciBSZWdpc3RlcnMgKi8KPiA+ICAgI2RlZmluZSBIRENQX1JFUF9DVEwJCQlf TU1JTygweDY2ZDAwKQo+ID4gKyNkZWZpbmUgIEhEQ1BfVFJBTlNBX1JFUF9QUkVTRU5UCUJJVCgz MSkKPiA+ICsjZGVmaW5lICBIRENQX1RSQU5TQl9SRVBfUFJFU0VOVAlCSVQoMzApCj4gPiArI2Rl ZmluZSAgSERDUF9UUkFOU0NfUkVQX1BSRVNFTlQJQklUKDI5KQo+ID4gKyNkZWZpbmUgIEhEQ1Bf VFJBTlNEX1JFUF9QUkVTRU5UCUJJVCgyOCkKPiA+ICAgI2RlZmluZSAgSERDUF9ERElCX1JFUF9Q UkVTRU5UCQlCSVQoMzApCj4gPiAgICNkZWZpbmUgIEhEQ1BfRERJQV9SRVBfUFJFU0VOVAkJQklU KDI5KQo+ID4gICAjZGVmaW5lICBIRENQX0RESUNfUkVQX1BSRVNFTlQJCUJJVCgyOCkKPiA+ICAg I2RlZmluZSAgSERDUF9ERElEX1JFUF9QUkVTRU5UCQlCSVQoMjcpCj4gPiAgICNkZWZpbmUgIEhE Q1BfRERJRl9SRVBfUFJFU0VOVAkJQklUKDI2KQo+ID4gICAjZGVmaW5lICBIRENQX0RESUVfUkVQ X1BSRVNFTlQJCUJJVCgyNSkKPiA+ICsjZGVmaW5lICBIRENQX1RSQU5TQV9TSEExX00wCQkoMSA8 PCAyMCkKPiA+ICsjZGVmaW5lICBIRENQX1RSQU5TQl9TSEExX00wCQkoMiA8PCAyMCkKPiA+ICsj ZGVmaW5lICBIRENQX1RSQU5TQ19TSEExX00wCQkoMyA8PCAyMCkKPiA+ICsjZGVmaW5lICBIRENQ X1RSQU5TRF9TSEExX00wCQkoNCA8PCAyMCkKPiA+ICAgI2RlZmluZSAgSERDUF9ERElCX1NIQTFf TTAJCSgxIDw8IDIwKQo+ID4gICAjZGVmaW5lICBIRENQX0RESUFfU0hBMV9NMAkJKDIgPDwgMjAp Cj4gPiAgICNkZWZpbmUgIEhEQ1BfRERJQ19TSEExX00wCQkoMyA8PCAyMCkKPiA+IEBAIC05Mjcw LDE1ICs5Mjc4LDg5IEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUgewo+ID4gICAJCQkJCSAgX1BPUlRF X0hEQ1BfQVVUSEVOQywgXAo+ID4gICAJCQkJCSAgX1BPUlRGX0hEQ1BfQVVUSEVOQykgKyAoeCkp Cj4gPiAgICNkZWZpbmUgUE9SVF9IRENQX0NPTkYocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhw b3J0LCAweDApCj4gPiArI2RlZmluZSBfVFJBTlNBX0hEQ1BfQ09ORgkJMHg2NjQwMAo+ID4gKyNk ZWZpbmUgX1RSQU5TQl9IRENQX0NPTkYJCTB4NjY1MDAKPiA+ICsjZGVmaW5lIFRSQU5TX0hEQ1Bf Q09ORih0cmFucykJCV9NTUlPX1RSQU5TKHRyYW5zLCBfVFJBTlNBX0hEQ1BfQ09ORiwgXAo+ID4g KwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfQ09ORikKPiA+ICsjZGVmaW5lIEhEQ1BfQ09ORihkZXZf cHJpdiwgcGlwZSwgcG9ydCkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gPiArCQkJ CQlUUkFOU19IRENQX0NPTkYocGlwZSkgOiBcCj4gPiArCQkJCQlQT1JUX0hEQ1BfQ09ORihwb3J0 KSkKPiBBbGlnbm1lbnQKU2hhc2hhbmssCgppbiBkaWZmIHRoaXMgbG9va3MgbWlzYWxpZ25lZC4g QnV0IGluIGZpbGUgdGhpcyBpcyBpbiBwbGFjZS4KCi1SYW0KPiA+ICsKPiA+ICAgI2RlZmluZSAg SERDUF9DT05GX0NBUFRVUkVfQU4JCUJJVCgwKQo+ID4gICAjZGVmaW5lICBIRENQX0NPTkZfQVVU SF9BTkRfRU5DCQkoQklUKDEpIHwgQklUKDApKQo+ID4gICAjZGVmaW5lIFBPUlRfSERDUF9BTklO SVQocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDQpCj4gPiArI2RlZmluZSBfVFJB TlNBX0hEQ1BfQU5JTklUCQkweDY2NDA0Cj4gPiArI2RlZmluZSBfVFJBTlNCX0hEQ1BfQU5JTklU CQkweDY2NTA0Cj4gPiArI2RlZmluZSBUUkFOU19IRENQX0FOSU5JVCh0cmFucykJX01NSU9fVFJB TlModHJhbnMsIFwKPiA+ICsJCQkJCQkgICAgX1RSQU5TQV9IRENQX0FOSU5JVCwgXAo+ID4gKwkJ CQkJCSAgICBfVFJBTlNCX0hEQ1BfQU5JTklUKQo+ID4gKyNkZWZpbmUgSERDUF9BTklOSVQoZGV2 X3ByaXYsIHBpcGUsIHBvcnQpIFwKPiA+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEy ID8gXAo+ID4gKwkJCQkJVFJBTlNfSERDUF9BTklOSVQocGlwZSkgOiBcCj4gPiArCQkJCQlQT1JU X0hEQ1BfQU5JTklUKHBvcnQpKQo+IEFsaWdubWVudAo+ID4gKwo+ID4gICAjZGVmaW5lIFBPUlRf SERDUF9BTkxPKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHg4KQo+ID4gKyNkZWZp bmUgX1RSQU5TQV9IRENQX0FOTE8JCTB4NjY0MDgKPiA+ICsjZGVmaW5lIF9UUkFOU0JfSERDUF9B TkxPCQkweDY2NTA4Cj4gPiArI2RlZmluZSBUUkFOU19IRENQX0FOTE8odHJhbnMpCQlfTU1JT19U UkFOUyh0cmFucywgX1RSQU5TQV9IRENQX0FOTE8sIFwKPiA+ICsJCQkJCQkgICAgX1RSQU5TQl9I RENQX0FOTE8pCj4gPiArI2RlZmluZSBIRENQX0FOTE8oZGV2X3ByaXYsIHBpcGUsIHBvcnQpCShJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAo+ID4gKwkJCQkJVFJBTlNfSERDUF9BTkxPKHBp cGUpIDogXAo+ID4gKwkJCQkJUE9SVF9IRENQX0FOTE8ocG9ydCkpCj4gPiArCj4gQWxpZ25tZW50 Cj4gPiAgICNkZWZpbmUgUE9SVF9IRENQX0FOSEkocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhw b3J0LCAweEMpCj4gPiArI2RlZmluZSBfVFJBTlNBX0hEQ1BfQU5ISQkJMHg2NjQwQwo+ID4gKyNk ZWZpbmUgX1RSQU5TQl9IRENQX0FOSEkJCTB4NjY1MEMKPiA+ICsjZGVmaW5lIFRSQU5TX0hEQ1Bf QU5ISSh0cmFucykJCV9NTUlPX1RSQU5TKHRyYW5zLCBfVFJBTlNBX0hEQ1BfQU5ISSwgXAo+ID4g KwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfQU5ISSkKPiA+ICsjZGVmaW5lIEhEQ1BfQU5ISShkZXZf cHJpdiwgcGlwZSwgcG9ydCkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gPiArCQkJ CQlUUkFOU19IRENQX0FOSEkocGlwZSkgOiBcCj4gPiArCQkJCQlQT1JUX0hEQ1BfQU5ISShwb3J0 KSkKPiA+ICsKPiBBbGlnbm1lbnQKPiA+ICAgI2RlZmluZSBQT1JUX0hEQ1BfQktTVkxPKHBvcnQp CQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHgxMCkKPiA+ICsjZGVmaW5lIF9UUkFOU0FfSERD UF9CS1NWTE8JCTB4NjY0MTAKPiA+ICsjZGVmaW5lIF9UUkFOU0JfSERDUF9CS1NWTE8JCTB4NjY1 MTAKPiA+ICsjZGVmaW5lIFRSQU5TX0hEQ1BfQktTVkxPKHRyYW5zKQlfTU1JT19UUkFOUyh0cmFu cywgXAo+ID4gKwkJCQkJCSAgICBfVFJBTlNBX0hEQ1BfQktTVkxPLCBcCj4gPiArCQkJCQkJICAg IF9UUkFOU0JfSERDUF9CS1NWTE8pCj4gPiArI2RlZmluZSBIRENQX0JLU1ZMTyhkZXZfcHJpdiwg cGlwZSwgcG9ydCkgXAo+ID4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4g PiArCQkJCQlUUkFOU19IRENQX0JLU1ZMTyhwaXBlKSA6IFwKPiA+ICsJCQkJCVBPUlRfSERDUF9C S1NWTE8ocG9ydCkpCj4gPiArCj4gQWxpZ25tZW50Cj4gPiAgICNkZWZpbmUgUE9SVF9IRENQX0JL U1ZISShwb3J0KQkJX1BPUlRfSERDUF9BVVRIRU5DKHBvcnQsIDB4MTQpCj4gPiArI2RlZmluZSBf VFJBTlNBX0hEQ1BfQktTVkhJCQkweDY2NDE0Cj4gPiArI2RlZmluZSBfVFJBTlNCX0hEQ1BfQktT VkhJCQkweDY2NTE0Cj4gPiArI2RlZmluZSBUUkFOU19IRENQX0JLU1ZISSh0cmFucykJX01NSU9f VFJBTlModHJhbnMsIFwKPiA+ICsJCQkJCQkgICAgX1RSQU5TQV9IRENQX0JLU1ZISSwgXAo+ID4g KwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfQktTVkhJKQo+ID4gKyNkZWZpbmUgSERDUF9CS1NWSEko ZGV2X3ByaXYsIHBpcGUsIHBvcnQpIFwKPiA+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDEyID8gXAo+ID4gKwkJCQkJVFJBTlNfSERDUF9CS1NWSEkocGlwZSkgOiBcCj4gPiArCQkJCQlQ T1JUX0hEQ1BfQktTVkhJKHBvcnQpKQo+ID4gKwo+IEFsaWdubWVudAo+ID4gICAjZGVmaW5lIFBP UlRfSERDUF9SUFJJTUUocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDE4KQo+ID4g KyNkZWZpbmUgX1RSQU5TQV9IRENQX1JQUklNRQkJMHg2NjQxOAo+ID4gKyNkZWZpbmUgX1RSQU5T Ql9IRENQX1JQUklNRQkJMHg2NjUxOAo+ID4gKyNkZWZpbmUgVFJBTlNfSERDUF9SUFJJTUUodHJh bnMpCV9NTUlPX1RSQU5TKHRyYW5zLCBcCj4gPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUF9SUFJJ TUUsIFwKPiA+ICsJCQkJCQkgICAgX1RSQU5TQl9IRENQX1JQUklNRSkKPiA+ICsjZGVmaW5lIEhE Q1BfUlBSSU1FKGRldl9wcml2LCBwaXBlLCBwb3J0KSBcCj4gPiArCQkJCQkoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMiA/IFwKPiA+ICsJCQkJCVRSQU5TX0hEQ1BfUlBSSU1FKHBpcGUpIDogXAo+ ID4gKwkJCQkJUE9SVF9IRENQX1JQUklNRShwb3J0KSkKPiA+ICsKPiBBbGlnbm1lbnQKPiA+ICAg I2RlZmluZSBQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwg MHgxQykKPiA+ICsjZGVmaW5lIF9UUkFOU0FfSERDUF9TVEFUVVMJCTB4NjY0MUMKPiA+ICsjZGVm aW5lIF9UUkFOU0JfSERDUF9TVEFUVVMJCTB4NjY1MUMKPiA+ICsjZGVmaW5lIFRSQU5TX0hEQ1Bf U1RBVFVTKHRyYW5zKQlfTU1JT19UUkFOUyh0cmFucywgXAo+ID4gKwkJCQkJCSAgICBfVFJBTlNB X0hEQ1BfU1RBVFVTLCBcCj4gPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9TVEFUVVMpCj4gPiAr I2RlZmluZSBIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkgXAo+ID4gKwkJCQkJKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gPiArCQkJCQlUUkFOU19IRENQX1NUQVRVUyhw aXBlKSA6IFwKPiA+ICsJCQkJCVBPUlRfSERDUF9TVEFUVVMocG9ydCkpCj4gPiArCj4gQWxpZ25t ZW50Cj4gPiAgICNkZWZpbmUgIEhEQ1BfU1RBVFVTX1NUUkVBTV9BX0VOQwlCSVQoMzEpCj4gPiAg ICNkZWZpbmUgIEhEQ1BfU1RBVFVTX1NUUkVBTV9CX0VOQwlCSVQoMzApCj4gPiAgICNkZWZpbmUg IEhEQ1BfU1RBVFVTX1NUUkVBTV9DX0VOQwlCSVQoMjkpCj4gPiBAQCAtOTMwNSwyMyArOTM4Nyw0 MyBAQCBlbnVtIHNrbF9wb3dlcl9nYXRlIHsKPiA+ICAgCQkJCQkgIF9QT1JURF9IRENQMl9CQVNF LCBcCj4gPiAgIAkJCQkJICBfUE9SVEVfSERDUDJfQkFTRSwgXAo+ID4gICAJCQkJCSAgX1BPUlRG X0hEQ1AyX0JBU0UpICsgKHgpKQo+ID4gLQo+ID4gLSNkZWZpbmUgSERDUDJfQVVUSF9EREkocG9y dCkJCV9QT1JUX0hEQ1AyX0JBU0UocG9ydCwgMHg5OCkKPiA+ICsjZGVmaW5lIFBPUlRfSERDUDJf QVVUSChwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LCAweDk4KQo+ID4gKyNkZWZpbmUgX1RS QU5TQV9IRENQMl9BVVRICQkweDY2NDk4Cj4gPiArI2RlZmluZSBfVFJBTlNCX0hEQ1AyX0FVVEgJ CTB4NjY1OTgKPiA+ICsjZGVmaW5lIFRSQU5TX0hEQ1AyX0FVVEgodHJhbnMpCQlfTU1JT19UUkFO Uyh0cmFucywgX1RSQU5TQV9IRENQMl9BVVRILCBcCj4gPiArCQkJCQkJICAgIF9UUkFOU0JfSERD UDJfQVVUSCkKPiBBbGlnbm1lbnQKPiA+ICAgI2RlZmluZSAgIEFVVEhfTElOS19BVVRIRU5USUNB VEVECUJJVCgzMSkKPiA+ICAgI2RlZmluZSAgIEFVVEhfTElOS19UWVBFCQlCSVQoMzApCj4gPiAg ICNkZWZpbmUgICBBVVRIX0ZPUkNFX0NMUl9JTlBVVENUUglCSVQoMTkpCj4gPiAgICNkZWZpbmUg ICBBVVRIX0NMUl9LRVlTCQkJQklUKDE4KQo+ID4gLQo+ID4gLSNkZWZpbmUgSERDUDJfQ1RMX0RE SShwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LCAweEIwKQo+ID4gKyNkZWZpbmUgSERDUDJf QVVUSChkZXZfcHJpdiwgcGlwZSwgcG9ydCkgXAo+ID4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTIgPyBcCj4gPiArCQkJCQkgVFJBTlNfSERDUDJfQVVUSChwaXBlKSA6IFwKPiA+ICsJ CQkJCSBQT1JUX0hEQ1AyX0FVVEgocG9ydCkpCj4gPiArCj4gPiArI2RlZmluZSBQT1JUX0hEQ1Ay X0NUTChwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LCAweEIwKQo+ID4gKyNkZWZpbmUgX1RS QU5TQV9IRENQMl9DVEwJCTB4NjY0QjAKPiA+ICsjZGVmaW5lIF9UUkFOU0JfSERDUDJfQ1RMCQkw eDY2NUIwCj4gPiArI2RlZmluZSBUUkFOU19IRENQMl9DVEwodHJhbnMpCQlfTU1JT19UUkFOUyh0 cmFucywgX1RSQU5TQV9IRENQMl9DVEwsIFwKPiA+ICsJCQkJCQkgICAgX1RSQU5TQl9IRENQMl9D VEwpCj4gPiAgICNkZWZpbmUgICBDVExfTElOS19FTkNSWVBUSU9OX1JFUQlCSVQoMzEpCj4gPiAt Cj4gPiAtI2RlZmluZSBIRENQMl9TVEFUVVNfRERJKHBvcnQpCQlfUE9SVF9IRENQMl9CQVNFKHBv cnQsIDB4QjQpCj4gPiAtI2RlZmluZSAgIFNUUkVBTV9FTkNSWVBUSU9OX1NUQVRVU19BCUJJVCgz MSkKPiA+IC0jZGVmaW5lICAgU1RSRUFNX0VOQ1JZUFRJT05fU1RBVFVTX0IJQklUKDMwKQo+ID4g LSNkZWZpbmUgICBTVFJFQU1fRU5DUllQVElPTl9TVEFUVVNfQwlCSVQoMjkpCj4gPiArI2RlZmlu ZSBIRENQMl9DVEwoZGV2X3ByaXYsIHBpcGUsIHBvcnQpCShJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDEyID8gXAo+ID4gKwkJCQkJVFJBTlNfSERDUDJfQ1RMKHBpcGUpIDogXAo+ID4gKwkJCQkJUE9S VF9IRENQMl9DVEwocG9ydCkpCj4gPiArCj4gQWxpZ25tZW50Cj4gPiArI2RlZmluZSBQT1JUX0hE Q1AyX1NUQVRVUyhwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LCAweEI0KQo+ID4gKyNkZWZp bmUgX1RSQU5TQV9IRENQMl9TVEFUVVMJCTB4NjY0QjQKPiA+ICsjZGVmaW5lIF9UUkFOU0JfSERD UDJfU1RBVFVTCQkweDY2NUI0Cj4gPiArI2RlZmluZSBUUkFOU19IRENQMl9TVEFUVVModHJhbnMp CV9NTUlPX1RSQU5TKHRyYW5zLCBcCj4gPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUDJfU1RBVFVT LCBcCj4gPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUDJfU1RBVFVTKQo+ID4gICAjZGVmaW5lICAg TElOS19UWVBFX1NUQVRVUwkJQklUKDIyKQo+ID4gICAjZGVmaW5lICAgTElOS19BVVRIX1NUQVRV UwkJQklUKDIxKQo+ID4gICAjZGVmaW5lICAgTElOS19FTkNSWVBUSU9OX1NUQVRVUwlCSVQoMjAp Cj4gPiArI2RlZmluZSBIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpIFwKPiA+ICsJ CQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAo+ID4gKwkJCQkJIFRSQU5TX0hEQ1Ay X1NUQVRVUyhwaXBlKSA6IFwKPiA+ICsJCQkJCSBQT1JUX0hEQ1AyX1NUQVRVUyhwb3J0KSkKPiA+ ICAgLyogUGVyLXBpcGUgRERJIEZ1bmN0aW9uIENvbnRyb2wgKi8KPiA+ICAgI2RlZmluZSBfVFJB TlNfRERJX0ZVTkNfQ1RMX0EJCTB4NjA0MDAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g PiBpbmRleCAxZDU4ZjdlYzVkODQuLjUzZjEzZTZhNWE3MyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ID4gQEAgLTM1OSw2ICszNTksMTQgQEAgc3RydWN0IGludGVsX2hkY3Ag ewo+ID4gICAJd2FpdF9xdWV1ZV9oZWFkX3QgY3BfaXJxX3F1ZXVlOwo+ID4gICAJYXRvbWljX3Qg Y3BfaXJxX2NvdW50Owo+ID4gICAJaW50IGNwX2lycV9jb3VudF9jYWNoZWQ7Cj4gPiArCj4gPiAr CS8qCj4gPiArCSAqIEdlbiAxMiBvbndhcmRzLCBIRENQIGlzIHBhcnQgb2YgdHJhbnNjb2Rlcihw cmV2aW91c2x5IERESSkuCj4gPiArCSAqIFNvIGNoYWNoZWluZyB0aGUgcGlwZSBhc3NvY2lhdGVk IHRvIGNvbm5lY3RvciBhdCBoZGNwX2VuYWJsZQo+ID4gKwkgKiB3b3VsZCBoZWxwIGluIHN1YnNl cXVlbnQgZnVuY3Rpb25zIHRvIGRlcml2ZSB0aGUgcmlnaHQgb2Zmc2V0cwo+ID4gKwkgKiBmb3Ig SERDUCByZWdpc3RlcnMuCj4gPiArCSAqLwo+ID4gKwllbnVtIHBpcGUgcGlwZTsKPiA+ICAgfTsK PiA+ICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7Cj4gLSBTaGFzaGFuawpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=