From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [RFC 14/15] drm/i915: Use new IS_GEN range helpers Date: Thu, 8 Feb 2018 14:34:38 +0000 Message-ID: References: <20180208130606.15556-1-tvrtko.ursulin@linux.intel.com> <20180208130606.15556-15-tvrtko.ursulin@linux.intel.com> <20180208142225.GC5453@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3AB146E62E for ; Thu, 8 Feb 2018 14:34:43 +0000 (UTC) In-Reply-To: <20180208142225.GC5453@intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Tvrtko Ursulin Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA4LzAyLzIwMTggMTQ6MjIsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiBPbiBUaHUsIEZl YiAwOCwgMjAxOCBhdCAwMTowNjowNVBNICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4g RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4KPj4gQ29j Y2luZWxsZSB0cmFuc2Zvcm1hdGlvbjoKPj4KPj4gICBAQAo+PiAgIGV4cHJlc3Npb24gcCwgZzsK Pj4gICBAQAo+PiAgICgKPj4gICAtSU5URUxfR0VOKHApID4gZwo+PiAgICtJU19HRU5fR1QocCwg ZykKPiAKPiBJIHRoaW5rIHRoaXMgc3R1ZmYgbWFrZXMgdGhlIGNvZGUgcHJldHR5IGNsb3NlIHRv IGlsbGVnaWJsZS4KPiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSBldmVuIG1vcmUgc28gYmVjYXVz ZSAiR1QiIGFjdHVhbGx5Cj4gbWVhbnMgc29tZXRoaW5nIHZlcnkgZGlmZmVyZW50IHRvIHVzLgoK T2ggaG93IHRydWUhIEFuZCBJIGRpZCBub3QgcmVhbGl6ZSBpdCBhdCBhbGwgd2hpbGUgd3JpdGlu ZyBpdCEgOikKCkFueXdheSwgc29tZXRoaW5nIGxpa2UgdGhpcywgcmVnYXJkbGVzcyBvZiBhIG5h bWUsIGlzIG5lZWRlZCBpZiBwZW9wbGUgCndhbnQgdGhpcyB0byBiZSBlZmZlY3RpdmUuIFNpbmNl IHRoZSBjaGVja3MgaGF2ZSB0byBiZSBtb3ZlZCB0byBrbm93biBhdCAKY29tcGlsZSB0aW1lLiBP ciBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGFwcHJvYWNoIHdpbGwgYmUgbmVlZGVkLgoKUmVnYXJk cywKClR2cnRrbwoKPj4gICB8Cj4+ICAgLUlOVEVMX0dFTihwKSA8IGcKPj4gICArSVNfR0VOX0xU KHAsIGcpCj4+ICAgfAo+PiAgIC1JTlRFTF9HRU4ocCkgPj0gZwo+PiAgICtJU19HRU5fR1RFKHAs IGcpCj4+ICAgfAo+PiAgIC1JTlRFTF9HRU4ocCkgPD0gZwo+PiAgICtJU19HRU5fTFRFKHAsIGcp Cj4+ICAgKQo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3Vs aW5AaW50ZWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyAgICAgICAgICAgICAgICB8ICA4NiArKysrLS0tLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgICAgICAgICB8ICAxNiArLQo+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICAgICAgIHwgIDE0ICstCj4+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgICAgICAgfCAgMTgg Ky0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAgICAg ICB8ICAgMiArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5j ICAgICAgICAgIHwgICA0ICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgICAgICAgICAgICAgICAgfCAgMzAgKystLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3JlcXVlc3QuYyAgICAgICAgICAgIHwgICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgICAgICAgICAgICAgfCAgIDYgKy0KPj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYyAgICAgICAgICAgICB8ICAgOCArLQo+PiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICAgICAgICAgIHwgIDQw ICsrLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgICAg ICAgICAgfCAgNTggKysrLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMg ICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BtdS5jICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggICAgICAgICAgICAgICAgICAgIHwgICA0ICstCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KPj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgICAgICAgICAgICAgICB8ICAgMiAr LQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jICAgICAgICAg IHwgICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5j ICAgICAgICAgICAgICAgICB8ICAgOCArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NvbG9yLmMgICAgICAgICAgICAgICAgIHwgICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY3J0LmMgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KPj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgICAgICAgICAgICAgICB8ICAxMCArLQo+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMgICAgICAgICAgIHwgIDE0ICst Cj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgICAgICAgICAg fCAxOTQgKysrKysrKysrKy0tLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYyAgICAgICAgICAgICAgICAgICAgfCAgMjggKy0tCj4+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyAgICAgICAgICAgICAgfCAgIDQgKy0KPj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgICAgICB8ICAyMiArLS0KPj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAgICAgICAgICAgICAgICAgICB8ICAz MCArKy0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jICAg ICAgICAgfCAgIDIgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2su YyAgICAgICAgICAgICB8ICAgMiArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk Y3AuYyAgICAgICAgICAgICAgICAgIHwgICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRtaS5jICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KPj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgICAgICB8ICAgNiArLQo+PiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyAgICAgICAgICAgICAgICAgIHwgIDEwICstCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAgICAg ICAgICB8ICAgMiArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAg ICAgICAgICAgICAgIHwgIDEwICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlw ZV9jcmMuYyAgICAgICAgICAgICAgfCAgIDIgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jICAgICAgICAgICAgICAgICAgICB8IDEwMCArKysrKy0tLS0tLQo+PiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICAgICAgICAgICAgICAgIHwgICA2ICstCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgICAgICAgICAgfCAg MzQgKystLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYyAgICAgICAgICAg ICAgICAgIHwgIDE0ICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMg ICAgICAgICAgICAgICAgfCAgMzAgKystLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3R2LmMgICAgICAgICAgICAgICAgICAgIHwgICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdW5jb3JlLmMgICAgICAgICAgICAgICAgfCAgMjAgKy0tCj4+ICAgLi4uL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMgICAgfCAgIDQgKy0KPj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jICB8ICAgMiAr LQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyAg IHwgIDEyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdj aGVjay5jICAgfCAgIDggKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50 ZWxfdW5jb3JlLmMgICAgICB8ICAgMiArLQo+PiAgIDUxIGZpbGVzIGNoYW5nZWQsIDQ1NyBpbnNl cnRpb25zKCspLCA0NTcgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4+IGluZGV4IDM4NDlkZWQzNTRlMy4uMGNlZGJjYzhjNmUyIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiBAQCAtNzA4LDcgKzcwOCw3IEBAIHN0YXRpYyBp bnQgaTkxNV9pbnRlcnJ1cHRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4+ ICAgCQkJICAgSTkxNV9SRUFEKEdFTjhfUENVX0lJUikpOwo+PiAgIAkJc2VxX3ByaW50ZihtLCAi UENVIGludGVycnVwdCBlbmFibGU6XHQlMDh4XG4iLAo+PiAgIAkJCSAgIEk5MTVfUkVBRChHRU44 X1BDVV9JRVIpKTsKPj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ PiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpIHsKPj4gICAJCXNlcV9wcmlu dGYobSwgIk1hc3RlciBJbnRlcnJ1cHQgQ29udHJvbDpcdCUwOHhcbiIsCj4+ICAgCQkJICAgSTkx NV9SRUFEKEdFTjhfTUFTVEVSX0lSUSkpOwo+PiAgIAo+PiBAQCAtODQ1LDcgKzg0NSw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9pbnRlcnJ1cHRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRh dGEpCj4+ICAgCQlzZXFfcHJpbnRmKG0sICJHcmFwaGljcyBJbnRlcnJ1cHQgbWFzazoJCSUwOHhc biIsCj4+ICAgCQkJICAgSTkxNV9SRUFEKEdUSU1SKSk7Cj4+ICAgCX0KPj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA2KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKSB7 Cj4+ICAgCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPj4gICAJCQlz ZXFfcHJpbnRmKG0sCj4+ICAgCQkJCSAgICJHcmFwaGljcyBJbnRlcnJ1cHQgbWFzayAoJXMpOgkl MDh4XG4iLAo+PiBAQCAtMTA1Niw3ICsxMDU2LDcgQEAgc3RhdGljIGludCBpOTE1X2ZyZXF1ZW5j eV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiAgIAkJCSAgICJlZmZp Y2llbnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIsCj4+ICAgCQkJICAgaW50ZWxfZ3B1X2Zy ZXEoZGV2X3ByaXYsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsKPj4gICAJCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnBjdV9sb2NrKTsKPj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNikgewo+PiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpIHsKPj4gICAJ CXUzMiBycF9zdGF0ZV9saW1pdHM7Cj4+ICAgCQl1MzIgZ3RfcGVyZl9zdGF0dXM7Cj4+ICAgCQl1 MzIgcnBfc3RhdGVfY2FwOwo+PiBAQCAtMTA4MCw3ICsxMDgwLDcgQEAgc3RhdGljIGludCBpOTE1 X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiAgIAkJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+PiAg IAo+PiAgIAkJcmVxZiA9IEk5MTVfUkVBRChHRU42X1JQTlNXUkVRKTsKPj4gLQkJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+ PiAgIAkJCXJlcWYgPj49IDIzOwo+PiAgIAkJZWxzZSB7Cj4+ICAgCQkJcmVxZiAmPSB+R0VONl9U VVJCT19ESVNBQkxFOwo+PiBAQCAtMTEzMyw3ICsxMTMzLDcgQEAgc3RhdGljIGludCBpOTE1X2Zy ZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiAgIAkJCSAg IHJwcy0+cG1faW50cm1za19tYnopOwo+PiAgIAkJc2VxX3ByaW50ZihtLCAiR1RfUEVSRl9TVEFU VVM6IDB4JTA4eFxuIiwgZ3RfcGVyZl9zdGF0dXMpOwo+PiAgIAkJc2VxX3ByaW50ZihtLCAiUmVu ZGVyIHAtc3RhdGUgcmF0aW86ICVkXG4iLAo+PiAtCQkJICAgKGd0X3BlcmZfc3RhdHVzICYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSA/IDB4MWZmMDAgOiAweGZmMDApKSA+PiA4KTsKPj4gKwkJ CSAgIChndF9wZXJmX3N0YXR1cyAmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSA/IDB4MWZmMDAg OiAweGZmMDApKSA+PiA4KTsKPj4gICAJCXNlcV9wcmludGYobSwgIlJlbmRlciBwLXN0YXRlIFZJ RDogJWRcbiIsCj4+ICAgCQkJICAgZ3RfcGVyZl9zdGF0dXMgJiAweGZmKTsKPj4gICAJCXNlcV9w cmludGYobSwgIlJlbmRlciBwLXN0YXRlIGxpbWl0OiAlZFxuIiwKPj4gQEAgLTEyMTgsMTMgKzEy MTgsMTMgQEAgc3RhdGljIHZvaWQgaTkxNV9pbnN0ZG9uZV9pbmZvKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPj4gICAJc2VxX3ByaW50ZihtLCAiXHRcdElOU1RET05FOiAweCUw OHhcbiIsCj4+ICAgCQkgICBpbnN0ZG9uZS0+aW5zdGRvbmUpOwo+PiAgIAo+PiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDw9IDMpCj4+ICsJaWYgKElTX0dFTl9MVEUoZGV2X3ByaXYsIDMpKQo+ PiAgIAkJcmV0dXJuOwo+PiAgIAo+PiAgIAlzZXFfcHJpbnRmKG0sICJcdFx0U0NfSU5TVERPTkU6 IDB4JTA4eFxuIiwKPj4gICAJCSAgIGluc3Rkb25lLT5zbGljZV9jb21tb24pOwo+PiAgIAo+PiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDYpCj4+ICsJaWYgKElTX0dFTl9MVEUoZGV2X3By aXYsIDYpKQo+PiAgIAkJcmV0dXJuOwo+PiAgIAo+PiAgIAlmb3JfZWFjaF9pbnN0ZG9uZV9zbGlj ZV9zdWJzbGljZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKQo+PiBAQCAtMTQ3OCw3ICsxNDc4 LDcgQEAgc3RhdGljIGludCBnZW42X2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4+ICAg CXRyYWNlX2k5MTVfcmVnX3J3KGZhbHNlLCBHRU42X0dUX0NPUkVfU1RBVFVTLCBndF9jb3JlX3N0 YXR1cywgNCwgdHJ1ZSk7Cj4+ICAgCj4+ICAgCXJjY3RsMSA9IEk5MTVfUkVBRChHRU42X1JDX0NP TlRST0wpOwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPj4gKwlpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPj4gICAJCWdlbjlfcG93ZXJnYXRlX2VuYWJsZSA9IEk5 MTVfUkVBRChHRU45X1BHX0VOQUJMRSk7Cj4+ICAgCQlnZW45X3Bvd2VyZ2F0ZV9zdGF0dXMgPSBJ OTE1X1JFQUQoR0VOOV9QV1JHVF9ET01BSU5fU1RBVFVTKTsKPj4gICAJfQo+PiBAQCAtMTQ5MSw3 ICsxNDkxLDcgQEAgc3RhdGljIGludCBnZW42X2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0p Cj4+ICAgCQkgICB5ZXNubyhyY2N0bDEgJiBHRU42X1JDX0NUTF9SQzFlX0VOQUJMRSkpOwo+PiAg IAlzZXFfcHJpbnRmKG0sICJSQzYgRW5hYmxlZDogJXNcbiIsCj4+ICAgCQkgICB5ZXNubyhyY2N0 bDEgJiBHRU42X1JDX0NUTF9SQzZfRU5BQkxFKSk7Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkgewo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+PiAgIAkJc2Vx X3ByaW50ZihtLCAiUmVuZGVyIFdlbGwgR2F0aW5nIEVuYWJsZWQ6ICVzXG4iLAo+PiAgIAkJCXll c25vKGdlbjlfcG93ZXJnYXRlX2VuYWJsZSAmIEdFTjlfUkVOREVSX1BHX0VOQUJMRSkpOwo+PiAg IAkJc2VxX3ByaW50ZihtLCAiTWVkaWEgV2VsbCBHYXRpbmcgRW5hYmxlZDogJXNcbiIsCj4+IEBA IC0xNTI1LDcgKzE1MjUsNyBAQCBzdGF0aWMgaW50IGdlbjZfZHJwY19pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSkKPj4gICAKPj4gICAJc2VxX3ByaW50ZihtLCAiQ29yZSBQb3dlciBEb3duOiAlc1xu IiwKPj4gICAJCSAgIHllc25vKGd0X2NvcmVfc3RhdHVzICYgR0VONl9DT1JFX0NQRF9TVEFURV9N QVNLKSk7Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+PiArCWlmIChJU19H RU5fR1RFKGRldl9wcml2LCA5KSkgewo+PiAgIAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIFBvd2Vy IFdlbGw6ICVzXG4iLAo+PiAgIAkJCShnZW45X3Bvd2VyZ2F0ZV9zdGF0dXMgJgo+PiAgIAkJCSBH RU45X1BXUkdUX1JFTkRFUl9TVEFUVVNfTUFTSykgPyAiVXAiIDogIkRvd24iKTsKPj4gQEAgLTE1 NTksNyArMTU1OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcnBjX2luZm8oc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCj4+ICAgCj4+ICAgCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4gICAJCWVyciA9IHZsdl9kcnBjX2luZm8o bSk7Cj4+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+PiArCWVsc2UgaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKQo+PiAgIAkJZXJyID0gZ2VuNl9kcnBjX2luZm8obSk7 Cj4+ICAgCWVsc2UKPj4gICAJCWVyciA9IGlyb25sYWtlX2RycGNfaW5mbyhtKTsKPj4gQEAgLTE2 MDYsMTEgKzE2MDYsMTEgQEAgc3RhdGljIGludCBpOTE1X2ZiY19zdGF0dXMoc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp1bnVzZWQpCj4+ICAgCWlmIChpbnRlbF9mYmNfaXNfYWN0aXZlKGRldl9w cml2KSkgewo+PiAgIAkJdTMyIG1hc2s7Cj4+ICAgCj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDgpCj4+ICsJCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4KSkKPj4gICAJCQltYXNr ID0gSTkxNV9SRUFEKElWQl9GQkNfU1RBVFVTMikgJiBCRFdfRkJDX0NPTVBfU0VHX01BU0s7Cj4+ IC0JCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykKPj4gKwkJZWxzZSBpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgNykpCj4+ICAgCQkJbWFzayA9IEk5MTVfUkVBRChJVkJfRkJDX1NU QVRVUzIpICYgSVZCX0ZCQ19DT01QX1NFR19NQVNLOwo+PiAtCQllbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDUpCj4+ICsJCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKQo+ PiAgIAkJCW1hc2sgPSBJOTE1X1JFQUQoSUxLX0RQRkNfU1RBVFVTKSAmIElMS19EUEZDX0NPTVBf U0VHX01BU0s7Cj4+ICAgCQllbHNlIGlmIChJU19HNFgoZGV2X3ByaXYpKQo+PiAgIAkJCW1hc2sg PSBJOTE1X1JFQUQoRFBGQ19TVEFUVVMpICYgRFBGQ19DT01QX1NFR19NQVNLOwo+PiBAQCAtMTYz MSw3ICsxNjMxLDcgQEAgc3RhdGljIGludCBpOTE1X2ZiY19mYWxzZV9jb2xvcl9nZXQodm9pZCAq ZGF0YSwgdTY0ICp2YWwpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkYXRhOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNyB8fCAh SEFTX0ZCQyhkZXZfcHJpdikpCj4+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNykgfHwgIUhB U19GQkMoZGV2X3ByaXYpKQo+PiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4+ICAgCj4+ICAgCSp2YWwg PSBkZXZfcHJpdi0+ZmJjLmZhbHNlX2NvbG9yOwo+PiBAQCAtMTY0NCw3ICsxNjQ0LDcgQEAgc3Rh dGljIGludCBpOTE1X2ZiY19mYWxzZV9jb2xvcl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPj4g ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKPj4gICAJdTMyIHJl ZzsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDcgfHwgIUhBU19GQkMoZGV2 X3ByaXYpKQo+PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDcpIHx8ICFIQVNfRkJDKGRldl9w cml2KSkKPj4gICAJCXJldHVybiAtRU5PREVWOwo+PiAgIAo+PiAgIAltdXRleF9sb2NrKCZkZXZf cHJpdi0+ZmJjLmxvY2spOwo+PiBAQCAtMTY3Niw3ICsxNjc2LDcgQEAgc3RhdGljIGludCBpOTE1 X2lwc19zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4+ICAgCXNlcV9w cmludGYobSwgIkVuYWJsZWQgYnkga2VybmVsIHBhcmFtZXRlcjogJXNcbiIsCj4+ICAgCQkgICB5 ZXNubyhpOTE1X21vZHBhcmFtcy5lbmFibGVfaXBzKSk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOCkgewo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4KSkgewo+ PiAgIAkJc2VxX3B1dHMobSwgIkN1cnJlbnRseTogdW5rbm93blxuIik7Cj4+ICAgCX0gZWxzZSB7 Cj4+ICAgCQlpZiAoSTkxNV9SRUFEKElQU19DVEwpICYgSVBTX0VOQUJMRSkKPj4gQEAgLTE2OTgs NyArMTY5OCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCj4+ICAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPj4g ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsK Pj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA5KSkKPj4gICAJCS8qIG5vIGdsb2JhbCBTUiBzdGF0dXM7IGluc3BlY3Qg cGVyLXBsYW5lIFdNICovOwo+PiAgIAllbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkK Pj4gICAJCXNyX2VuYWJsZWQgPSBJOTE1X1JFQUQoV00xX0xQX0lMSykgJiBXTTFfTFBfU1JfRU47 Cj4+IEBAIC0xOTc4LDcgKzE5NzgsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3dpenpsZV9pbmZvKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gICAJCQkgICBJOTE1X1JFQUQxNihDMERS QjMpKTsKPj4gICAJCXNlcV9wcmludGYobSwgIkMxRFJCMyA9IDB4JTA0eFxuIiwKPj4gICAJCQkg ICBJOTE1X1JFQUQxNihDMURSQjMpKTsKPj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNikgewo+PiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpIHsKPj4g ICAJCXNlcV9wcmludGYobSwgIk1BRF9ESU1NX0MwID0gMHglMDh4XG4iLAo+PiAgIAkJCSAgIEk5 MTVfUkVBRChNQURfRElNTV9DMCkpOwo+PiAgIAkJc2VxX3ByaW50ZihtLCAiTUFEX0RJTU1fQzEg PSAweCUwOHhcbiIsCj4+IEBAIC0xOTg3LDcgKzE5ODcsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3dp enpsZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gICAJCQkgICBJOTE1 X1JFQUQoTUFEX0RJTU1fQzIpKTsKPj4gICAJCXNlcV9wcmludGYobSwgIlRJTEVDVEwgPSAweCUw OHhcbiIsCj4+ICAgCQkJICAgSTkxNV9SRUFEKFRJTEVDVEwpKTsKPj4gLQkJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOCkKPj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKQo+PiAg IAkJCXNlcV9wcmludGYobSwgIkdBTVRBUkJNT0RFID0gMHglMDh4XG4iLAo+PiAgIAkJCQkgICBJ OTE1X1JFQUQoR0FNVEFSQk1PREUpKTsKPj4gICAJCWVsc2UKPj4gQEAgLTIwOTUsOSArMjA5NSw5 IEBAIHN0YXRpYyBpbnQgaTkxNV9wcGd0dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq ZGF0YSkKPj4gICAKPj4gICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+PiAgIAo+ PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2 X3ByaXYsIDgpKQo+PiAgIAkJZ2VuOF9wcGd0dF9pbmZvKG0sIGRldl9wcml2KTsKPj4gLQllbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShk ZXZfcHJpdiwgNikpCj4+ICAgCQlnZW42X3BwZ3R0X2luZm8obSwgZGV2X3ByaXYpOwo+PiAgIAo+ PiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UoZmlsZSwgJmRldi0+ZmlsZWxpc3QsIGxo ZWFkKSB7Cj4+IEBAIC0yMTkxLDcgKzIxOTEsNyBAQCBzdGF0aWMgaW50IGk5MTVfcnBzX2Jvb3N0 X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+PiAgIAkJICAgYXRvbWljX3Jl YWQoJnJwcy0+Ym9vc3RzKSk7Cj4+ICAgCW11dGV4X3VubG9jaygmZGV2LT5maWxlbGlzdF9tdXRl eCk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNiAmJgo+PiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA2KSAmJgo+PiAgIAkgICAgcnBzLT5lbmFibGVkICYmCj4+ICAg CSAgICBkZXZfcHJpdi0+Z3QuYWN0aXZlX3JlcXVlc3RzKSB7Cj4+ICAgCQl1MzIgcnB1cCwgcnB1 cGVpOwo+PiBAQCAtMjIyMiw3ICsyMjIyLDcgQEAgc3RhdGljIGludCBpOTE1X3Jwc19ib29zdF9p bmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gICBzdGF0aWMgaW50IGk5MTVf bGxjKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gICB7Cj4+ICAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPj4g LQljb25zdCBib29sIGVkcmFtID0gSU5URUxfR0VOKGRldl9wcml2KSA+IDg7Cj4+ICsJY29uc3Qg Ym9vbCBlZHJhbSA9IElTX0dFTl9HVChkZXZfcHJpdiwgOCk7Cj4+ICAgCj4+ICAgCXNlcV9wcmlu dGYobSwgIkxMQzogJXNcbiIsIHllc25vKEhBU19MTEMoZGV2X3ByaXYpKSk7Cj4+ICAgCXNlcV9w cmludGYobSwgIiVzOiAlbGx1TUJcbiIsIGVkcmFtID8gImVEUkFNIiA6ICJlTExDIiwKPj4gQEAg LTI2NzUsNyArMjY3NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9lbmVyZ3lfdUooc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQo+PiAgIAl1bnNpZ25lZCBsb25nIGxvbmcgcG93ZXI7Cj4+ICAg CXUzMiB1bml0czsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCj4+ICsJ aWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNikpCj4+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPj4gICAK Pj4gICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+PiBAQCAtMzI5MCw3ICszMjkw LDcgQEAgc3RhdGljIGludCBpOTE1X2RkYl9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQo+PiAgIAllbnVtIHBpcGUgcGlwZTsKPj4gICAJaW50IHBsYW5lOwo+PiAgIAo+PiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkKPj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2 LCA5KSkKPj4gICAJCXJldHVybiAtRU5PREVWOwo+PiAgIAo+PiAgIAlkcm1fbW9kZXNldF9sb2Nr X2FsbChkZXYpOwo+PiBAQCAtMzY4OSw3ICszNjg5LDcgQEAgc3RhdGljIHZvaWQgd21fbGF0ZW5j eV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgdWludDE2X3Qgd21bOF0pCj4+ICAgCQkg KiAtIFdNMSsgbGF0ZW5jeSB2YWx1ZXMgaW4gMC41dXMgdW5pdHMKPj4gICAJCSAqIC0gbGF0ZW5j aWVzIGFyZSBpbiB1cyBvbiBnZW45L3Zsdi9jaHYKPj4gICAJCSAqLwo+PiAtCQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5IHx8Cj4+ICsJCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSB8 fAo+PiAgIAkJICAgIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8Cj4+ICAgCQkgICAgSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikgfHwKPj4gICAJCSAgICBJU19HNFgoZGV2X3ByaXYpKQo+PiBAQCAt MzcwOSw3ICszNzA5LDcgQEAgc3RhdGljIGludCBwcmlfd21fbGF0ZW5jeV9zaG93KHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gbS0+cHJpdmF0ZTsKPj4gICAJY29uc3QgdWludDE2X3QgKmxhdGVuY2llczsKPj4g ICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA5KSkKPj4gICAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5j eTsKPj4gICAJZWxzZQo+PiAgIAkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5 Owo+PiBAQCAtMzcyNCw3ICszNzI0LDcgQEAgc3RhdGljIGludCBzcHJfd21fbGF0ZW5jeV9zaG93 KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKPj4gICAJY29uc3QgdWludDE2X3QgKmxhdGVu Y2llczsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4gICAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5z a2xfbGF0ZW5jeTsKPj4gICAJZWxzZQo+PiAgIAkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndtLnNw cl9sYXRlbmN5Owo+PiBAQCAtMzczOSw3ICszNzM5LDcgQEAgc3RhdGljIGludCBjdXJfd21fbGF0 ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKPj4gICAJY29uc3QgdWludDE2 X3QgKmxhdGVuY2llczsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4gICAJCWxhdGVuY2llcyA9IGRldl9w cml2LT53bS5za2xfbGF0ZW5jeTsKPj4gICAJZWxzZQo+PiAgIAkJbGF0ZW5jaWVzID0gZGV2X3By aXYtPndtLmN1cl9sYXRlbmN5Owo+PiBAQCAtMzc1Myw3ICszNzUzLDcgQEAgc3RhdGljIGludCBw cmlfd21fbGF0ZW5jeV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxl KQo+PiAgIHsKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gaW5vZGUt PmlfcHJpdmF0ZTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlT X0c0WChkZXZfcHJpdikpCj4+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNSkgJiYgIUlTX0c0 WChkZXZfcHJpdikpCj4+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPj4gICAKPj4gICAJcmV0dXJuIHNp bmdsZV9vcGVuKGZpbGUsIHByaV93bV9sYXRlbmN5X3Nob3csIGRldl9wcml2KTsKPj4gQEAgLTM4 MzIsNyArMzgzMiw3IEBAIHN0YXRpYyBzc2l6ZV90IHByaV93bV9sYXRlbmN5X3dyaXRlKHN0cnVj dCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPj4gICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKPj4gICAJdWludDE2X3QgKmxhdGVu Y2llczsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4gICAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5z a2xfbGF0ZW5jeTsKPj4gICAJZWxzZQo+PiAgIAkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndtLnBy aV9sYXRlbmN5Owo+PiBAQCAtMzg0Nyw3ICszODQ3LDcgQEAgc3RhdGljIHNzaXplX3Qgc3ByX3dt X2xhdGVuY3lfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVm LAo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ PiAgIAl1aW50MTZfdCAqbGF0ZW5jaWVzOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDkpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJbGF0ZW5j aWVzID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5Owo+PiAgIAllbHNlCj4+ICAgCQlsYXRlbmNp ZXMgPSBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3k7Cj4+IEBAIC0zODYyLDcgKzM4NjIsNyBAQCBz dGF0aWMgc3NpemVfdCBjdXJfd21fbGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29u c3QgY2hhciBfX3VzZXIgKnVidWYsCj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IG0tPnByaXZhdGU7Cj4+ICAgCXVpbnQxNl90ICpsYXRlbmNpZXM7Cj4+ICAgCj4+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgOSkpCj4+ICAgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7Cj4+ICAg CWVsc2UKPj4gICAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeTsKPj4gQEAg LTQxMDAsNyArNDEwMCw3IEBAIGk5MTVfbWF4X2ZyZXFfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFs KQo+PiAgIHsKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsK Pj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCj4+ICsJaWYgKElTX0dFTl9M VChkZXZfcHJpdiwgNikpCj4+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPj4gICAKPj4gICAJKnZhbCA9 IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+Z3RfcG0ucnBzLm1heF9mcmVxX3Nv ZnRsaW1pdCk7Cj4+IEBAIC00MTE1LDcgKzQxMTUsNyBAQCBpOTE1X21heF9mcmVxX3NldCh2b2lk ICpkYXRhLCB1NjQgdmFsKQo+PiAgIAl1MzIgaHdfbWF4LCBod19taW47Cj4+ICAgCWludCByZXQ7 Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQo+PiArCWlmIChJU19HRU5f TFQoZGV2X3ByaXYsIDYpKQo+PiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4+ICAgCj4+ICAgCURSTV9E RUJVR19EUklWRVIoIk1hbnVhbGx5IHNldHRpbmcgbWF4IGZyZXEgdG8gJWxsdVxuIiwgdmFsKTsK Pj4gQEAgLTQxNTYsNyArNDE1Niw3IEBAIGk5MTVfbWluX2ZyZXFfZ2V0KHZvaWQgKmRhdGEsIHU2 NCAqdmFsKQo+PiAgIHsKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGF0YTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCj4+ICsJaWYgKElT X0dFTl9MVChkZXZfcHJpdiwgNikpCj4+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPj4gICAKPj4gICAJ KnZhbCA9IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+Z3RfcG0ucnBzLm1pbl9m cmVxX3NvZnRsaW1pdCk7Cj4+IEBAIC00MTcxLDcgKzQxNzEsNyBAQCBpOTE1X21pbl9mcmVxX3Nl dCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+PiAgIAl1MzIgaHdfbWF4LCBod19taW47Cj4+ICAgCWlu dCByZXQ7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQo+PiArCWlmIChJ U19HRU5fTFQoZGV2X3ByaXYsIDYpKQo+PiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4+ICAgCj4+ICAg CURSTV9ERUJVR19EUklWRVIoIk1hbnVhbGx5IHNldHRpbmcgbWluIGZyZXEgdG8gJWxsdVxuIiwg dmFsKTsKPj4gQEAgLTQ0NjksNyArNDQ2OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zc2V1X3N0YXR1 cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPj4gICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+PiAgIAlzdHJ1 Y3Qgc3NldV9kZXZfaW5mbyBzc2V1Owo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgOCkKPj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA4KSkKPj4gICAJCXJldHVybiAtRU5P REVWOwo+PiAgIAo+PiAgIAlzZXFfcHV0cyhtLCAiU1NFVSBEZXZpY2UgSW5mb1xuIik7Cj4+IEBA IC00NDg2LDcgKzQ0ODYsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3NldV9zdGF0dXMoc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4+ICAgCQlicm9hZHdlbGxfc3NldV9kZXZpY2Vfc3Rh dHVzKGRldl9wcml2LCAmc3NldSk7Cj4+ICAgCX0gZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikp IHsKPj4gICAJCWdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAmc3NldSk7Cj4+IC0J fSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7Cj4+ICsJfSBlbHNlIGlmIChJ U19HRU5fR1RFKGRldl9wcml2LCAxMCkpIHsKPj4gICAJCWdlbjEwX3NzZXVfZGV2aWNlX3N0YXR1 cyhkZXZfcHJpdiwgJnNzZXUpOwo+PiAgIAl9Cj4+ICAgCj4+IEBAIC00NTAxLDcgKzQ1MDEsNyBA QCBzdGF0aWMgaW50IGk5MTVfZm9yY2V3YWtlX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3Ry dWN0IGZpbGUgKmZpbGUpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IGlub2RlLT5pX3ByaXZhdGU7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA8IDYp Cj4+ICsJaWYgKElTX0dFTl9MVChpOTE1LCA2KSkKPj4gICAJCXJldHVybiAwOwo+PiAgIAo+PiAg IAlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPj4gQEAgLTQ1MTQsNyArNDUxNCw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9mb3JjZXdha2VfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZmlsZSAqZmlsZSkKPj4gICB7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gaW5vZGUtPmlfcHJpdmF0ZTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNikK Pj4gKwlpZiAoSVNfR0VOX0xUKGk5MTUsIDYpKQo+PiAgIAkJcmV0dXJuIDA7Cj4+ICAgCj4+ICAg CWludGVsX3VuY29yZV9mb3JjZXdha2VfdXNlcl9wdXQoaTkxNSk7Cj4+IEBAIC00NjEyLDcgKzQ2 MTIsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJyc19jdGxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwp Cj4+ICAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+PiAgIAlzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNykKPj4g KwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA3KSkKPj4gICAJCXJldHVybiAtRU5PREVWOwo+PiAg IAo+PiAgIAlkcm1fbW9kZXNldF9sb2NrX2FsbChkZXYpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKPj4gaW5kZXggYmI2MDVlMGI5OTZjLi44ZTEwOGViMjMzZWUgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwo+PiBAQCAtNDU5LDEyICs0NTksMTIgQEAgc3RhdGljIGludCBpOTE1X2dl dF9icmlkZ2VfZGV2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICBzdGF0 aWMgaW50Cj4+ICAgaW50ZWxfYWxsb2NfbWNoYmFyX3Jlc291cmNlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPj4gICB7Cj4+IC0JaW50IHJlZyA9IElOVEVMX0dFTihkZXZfcHJp dikgPj0gNCA/IE1DSEJBUl9JOTY1IDogTUNIQkFSX0k5MTU7Cj4+ICsJaW50IHJlZyA9IElTX0dF Tl9HVEUoZGV2X3ByaXYsIDQpID8gTUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKPj4gICAJdTMy IHRlbXBfbG8sIHRlbXBfaGkgPSAwOwo+PiAgIAl1NjQgbWNoYmFyX2FkZHI7Cj4+ICAgCWludCBy ZXQ7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKPj4gKwlpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgNCkpCj4+ICAgCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2X3By aXYtPmJyaWRnZV9kZXYsIHJlZyArIDQsICZ0ZW1wX2hpKTsKPj4gICAJcGNpX3JlYWRfY29uZmln X2R3b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcsICZ0ZW1wX2xvKTsKPj4gICAJbWNoYmFy X2FkZHIgPSAoKHU2NCl0ZW1wX2hpIDw8IDMyKSB8IHRlbXBfbG87Cj4+IEBAIC00OTEsNyArNDkx LDcgQEAgaW50ZWxfYWxsb2NfbWNoYmFyX3Jlc291cmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4gICAJCXJldHVybiByZXQ7Cj4+ICAgCX0KPj4gICAKPj4gLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA0KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkK Pj4gICAJCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2X3ByaXYtPmJyaWRnZV9kZXYsIHJlZyAr IDQsCj4+ICAgCQkJCSAgICAgICB1cHBlcl8zMl9iaXRzKGRldl9wcml2LT5tY2hfcmVzLnN0YXJ0 KSk7Cj4+ICAgCj4+IEBAIC01MDQsNyArNTA0LDcgQEAgaW50ZWxfYWxsb2NfbWNoYmFyX3Jlc291 cmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICBzdGF0aWMgdm9pZAo+ PiAgIGludGVsX3NldHVwX21jaGJhcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4+ICAgewo+PiAtCWludCBtY2hiYXJfcmVnID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA0ID8g TUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKPj4gKwlpbnQgbWNoYmFyX3JlZyA9IElTX0dFTl9H VEUoZGV2X3ByaXYsIDQpID8gTUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKPj4gICAJdTMyIHRl bXA7Cj4+ICAgCWJvb2wgZW5hYmxlZDsKPj4gICAKPj4gQEAgLTU0Myw3ICs1NDMsNyBAQCBpbnRl bF9zZXR1cF9tY2hiYXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHN0 YXRpYyB2b2lkCj4+ICAgaW50ZWxfdGVhcmRvd25fbWNoYmFyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPj4gICB7Cj4+IC0JaW50IG1jaGJhcl9yZWcgPSBJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDQgPyBNQ0hCQVJfSTk2NSA6IE1DSEJBUl9JOTE1Owo+PiArCWludCBtY2hiYXJf cmVnID0gSVNfR0VOX0dURShkZXZfcHJpdiwgNCkgPyBNQ0hCQVJfSTk2NSA6IE1DSEJBUl9JOTE1 Owo+PiAgIAo+PiAgIAlpZiAoZGV2X3ByaXYtPm1jaGJhcl9uZWVkX2Rpc2FibGUpIHsKPj4gICAJ CWlmIChJU19JOTE1RyhkZXZfcHJpdikgfHwgSVNfSTkxNUdNKGRldl9wcml2KSkgewo+PiBAQCAt OTgzLDcgKzk4Myw3IEBAIHN0YXRpYyBpbnQgaTkxNV9tbWlvX3NldHVwKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAJICogdGhlIHJlZ2lzdGVyIEJBUiByZW1haW5zIHRo ZSBzYW1lIHNpemUgZm9yIGFsbCB0aGUgZWFybGllcgo+PiAgIAkgKiBnZW5lcmF0aW9ucyB1cCB0 byBJcm9ubGFrZS4KPj4gICAJICovCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1KQo+ PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDUpKQo+PiAgIAkJbW1pb19zaXplID0gNTEyICog MTAyNDsKPj4gICAJZWxzZQo+PiAgIAkJbW1pb19zaXplID0gMiAqIDEwMjQgKiAxMDI0Owo+PiBA QCAtMTE4MSw3ICsxMTgxLDcgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2h3KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAJICogcHJvcGVybHkgZGVhZCBhZnRl cndhcmRzLiBTbyB3ZSdsbCBqdXN0IGRpc2FibGUgdGhlbSBmb3IgYWxsCj4+ICAgCSAqIHByZS1n ZW41IGNoaXBzZXRzLgo+PiAgIAkgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1 KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7Cj4+ICAgCQlpZiAocGNpX2Vu YWJsZV9tc2kocGRldikgPCAwKQo+PiAgIAkJCURSTV9ERUJVR19EUklWRVIoImNhbid0IGVuYWJs ZSBNU0kiKTsKPj4gICAJfQo+PiBAQCAtMTY3Miw3ICsxNjcyLDcgQEAgc3RhdGljIGludCBpOTE1 X2RybV9zdXNwZW5kX2xhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBoaWJlcm5hdGlv bikKPj4gICAJICogRnVqaXRzdSBGU0MgUzcxMTAKPj4gICAJICogQWNlciBBc3BpcmUgMTgzMFQK Pj4gICAJICovCj4+IC0JaWYgKCEoaGliZXJuYXRpb24gJiYgSU5URUxfR0VOKGRldl9wcml2KSA8 IDYpKQo+PiArCWlmICghKGhpYmVybmF0aW9uICYmIElTX0dFTl9MVChkZXZfcHJpdiwgNikpKQo+ PiAgIAkJcGNpX3NldF9wb3dlcl9zdGF0ZShwZGV2LCBQQ0lfRDNob3QpOwo+PiAgIAo+PiAgIAlk ZXZfcHJpdi0+c3VzcGVuZGVkX3RvX2lkbGUgPSBzdXNwZW5kX3RvX2lkbGUoZGV2X3ByaXYpOwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggYjY2ZjI4OGJkZTdkLi4xZDhjMzE4ZGRl ZmYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtMjg1NSw3ICsyODU1LDcg QEAgaW50ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ ICAgICogaW50ZXJydXB0cy4KPj4gICAgKi8KPj4gICAjZGVmaW5lIEhBU19BVVhfSVJRKGRldl9w cml2KSAgIHRydWUKPj4gLSNkZWZpbmUgSEFTX0dNQlVTX0lSUShkZXZfcHJpdikgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNCkKPj4gKyNkZWZpbmUgSEFTX0dNQlVTX0lSUShkZXZfcHJpdikgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+PiAgIAo+PiAgIC8qIFdpdGggdGhlIDk0NSBhbmQgbGF0 ZXIsIFkgdGlsaW5nIGdvdCBhZGp1c3RlZCBzbyB0aGF0IGl0IHdhcyAzMiAxMjgtYnl0ZQo+PiAg ICAqIHJvd3MsIHdoaWNoIGNoYW5nZWQgdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgYW5kIGZl bmNlIHByb2dyYW1taW5nLgo+PiBAQCAtMjg2Niw3ICsyODY2LDcgQEAgaW50ZWxfaW5mbyhjb25z dCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgI2RlZmluZSBTVVBQT1JU U19UVihkZXZfcHJpdikJCSgoZGV2X3ByaXYpLT5pbmZvLnN1cHBvcnRzX3R2KQo+PiAgICNkZWZp bmUgSTkxNV9IQVNfSE9UUExVRyhkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFzX2hvdHBs dWcpCj4+ICAgCj4+IC0jZGVmaW5lIEhBU19GV19CTEMoZGV2X3ByaXYpIAkoSU5URUxfR0VOKGRl dl9wcml2KSA+IDIpCj4+ICsjZGVmaW5lIEhBU19GV19CTEMoZGV2X3ByaXYpIAkoSVNfR0VOX0dU KGRldl9wcml2LCAyKSkKPj4gICAjZGVmaW5lIEhBU19GQkMoZGV2X3ByaXYpCSgoZGV2X3ByaXYp LT5pbmZvLmhhc19mYmMpCj4+ICAgI2RlZmluZSBIQVNfQ1VSX0ZCQyhkZXZfcHJpdikJKCFIQVNf R01DSF9ESVNQTEFZKGRldl9wcml2KSAmJiBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDcp Cj4+ICAgCj4+IEBAIC0yOTUxLDcgKzI5NTEsNyBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAKPj4gICAjZGVmaW5lIEhBU19HTUNIX0RJ U1BMQVkoZGV2X3ByaXYpICgoZGV2X3ByaXYpLT5pbmZvLmhhc19nbWNoX2Rpc3BsYXkpCj4+ICAg Cj4+IC0jZGVmaW5lIEhBU19MU1BDT04oZGV2X3ByaXYpIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpCj4+ICsjZGVmaW5lIEhBU19MU1BDT04oZGV2X3ByaXYpIChJU19HRU5fR1RFKGRldl9wcml2 LCA5KSkKPj4gICAKPj4gICAvKiBEUEYgPT0gZHluYW1pYyBwYXJpdHkgZmVhdHVyZSAqLwo+PiAg ICNkZWZpbmUgSEFTX0wzX0RQRihkZXZfcHJpdikgKChkZXZfcHJpdiktPmluZm8uaGFzX2wzX2Rw ZikKPj4gQEAgLTI5NzQsNyArMjk3NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF92dGRf YWN0aXZlKHZvaWQpCj4+ICAgCj4+ICAgc3RhdGljIGlubGluZSBib29sIGludGVsX3NjYW5vdXRf bmVlZHNfdnRkX3dhKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICB7Cj4+ IC0JcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gNiAmJiBpbnRlbF92dGRfYWN0aXZlKCk7 Cj4+ICsJcmV0dXJuIElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpICYmIGludGVsX3Z0ZF9hY3RpdmUo KTsKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIGlubGluZSBib29sCj4+IEBAIC0zNTYxLDcgKzM1 NjEsNyBAQCB2b2lkIGk5MTVfZ2VtX2ZsdXNoX2dndHRfd3JpdGVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4+ICAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX2NoaXBz ZXRfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4gICAJ d21iKCk7Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQo+PiArCWlmIChJU19HRU5f TFQoZGV2X3ByaXYsIDYpKQo+PiAgIAkJaW50ZWxfZ3R0X2NoaXBzZXRfZmx1c2goKTsKPj4gICB9 Cj4+ICAgCj4+IEBAIC0zOTk2LDcgKzM5OTYsNyBAQCBzdGF0aWMgaW5saW5lIGk5MTVfcmVnX3Qg aTkxNV92Z2FjbnRybF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAg IHsKPj4gICAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKQo+PiAgIAkJcmV0dXJuIFZMVl9WR0FDTlRSTDsKPj4gLQllbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDUpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNSkp Cj4+ICAgCQlyZXR1cm4gQ1BVX1ZHQUNOVFJMOwo+PiAgIAllbHNlCj4+ICAgCQlyZXR1cm4gVkdB Q05UUkw7Cj4+IEBAIC00MTY0LDcgKzQxNjQsNyBAQCBpbnQgcmVtYXBfaW9fbWFwcGluZyhzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPj4gICAKPj4gICBzdGF0aWMgaW5saW5lIGludCBpbnRl bF9od3NfY3NiX3dyaXRlX2luZGV4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+PiAg IHsKPj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDEwKQo+PiArCWlmIChJU19HRU5fR1RFKGk5 MTUsIDEwKSkKPj4gICAJCXJldHVybiBDTkxfSFdTX0NTQl9XUklURV9JTkRFWDsKPj4gICAJZWxz ZQo+PiAgIAkJcmV0dXJuIEk5MTVfSFdTX0NTQl9XUklURV9JTkRFWDsKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4+IGluZGV4IDFkNTIwOGYyNGI2MC4uOWExY2VlM2E1OTBiIDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gQEAgLTM4Niw3ICszODYsNyBAQCBpOTE1X2dlbV9vYmpl Y3Rfd2FpdF9mZW5jZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwKPj4gICAJICogZWFjaCBjbGll bnQgdG8gd2FpdGJvb3N0IG9uY2UgaW4gYSBidXN5IHBlcmlvZC4KPj4gICAJICovCj4+ICAgCWlm IChycHNfY2xpZW50ICYmICFpOTE1X2dlbV9yZXF1ZXN0X3N0YXJ0ZWQocnEpKSB7Cj4+IC0JCWlm IChJTlRFTF9HRU4ocnEtPmk5MTUpID49IDYpCj4+ICsJCWlmIChJU19HRU5fR1RFKHJxLT5pOTE1 LCA2KSkKPj4gICAJCQlnZW42X3Jwc19ib29zdChycSwgcnBzX2NsaWVudCk7Cj4+ICAgCX0KPj4g ICAKPj4gQEAgLTMxNDgsNyArMzE0OCw3IEBAIHZvaWQgaTkxNV9nZW1fcmVzZXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAlpZiAoZGV2X3ByaXYtPmd0LmF3YWtlKSB7 Cj4+ICAgCQlpbnRlbF9zYW5pdGl6ZV9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+PiAgIAkJaW50 ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDYpCj4+ICsJCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkKPj4gICAJCQln ZW42X3Jwc19idXN5KGRldl9wcml2KTsKPj4gICAJfQo+PiAgIH0KPj4gQEAgLTM0NzQsNyArMzQ3 NCw3IEBAIGk5MTVfZ2VtX2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKPj4gICAJR0VNX0JVR19PTihlcG9jaCA9PSBJOTE1X0VQT0NIX0lOVkFMSUQpOwo+PiAgIAly ZWFybV9oYW5nY2hlY2sgPSBmYWxzZTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA2KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkKPj4gICAJCWdlbjZfcnBz X2lkbGUoZGV2X3ByaXYpOwo+PiAgIAo+PiAgIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZf cHJpdiwgUE9XRVJfRE9NQUlOX0dUX0lSUSk7Cj4+IEBAIC00ODgyLDcgKzQ4ODIsNyBAQCB2b2lk IGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+PiAgIAkg KiBpdCBtYXkgaW1wYWN0IHRoZSBkaXNwbGF5IGFuZCB3ZSBhcmUgdW5jZXJ0YWluIGFib3V0IHRo ZSBzdGFiaWxpdHkKPj4gICAJICogb2YgdGhlIHJlc2V0LCBzbyB0aGlzIGNvdWxkIGJlIGFwcGxp ZWQgdG8gZXZlbiBlYXJsaWVyIGdlbi4KPj4gICAJICovCj4+IC0JaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA1KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoaTkxNSwgNSkpIHsKPj4gICAJCWludCByZXNl dCA9IGludGVsX2dwdV9yZXNldChpOTE1LCBBTExfRU5HSU5FUyk7Cj4+ICAgCQlXQVJOX09OKHJl c2V0ICYmIHJlc2V0ICE9IC1FTk9ERVYpOwo+PiAgIAl9Cj4+IEBAIC01MDEwLDcgKzUwMTAsNyBA QCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPj4g ICAKPj4gICB2b2lkIGk5MTVfZ2VtX2luaXRfc3dpenpsaW5nKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPj4gICB7Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1IHx8 Cj4+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNSkgfHwKPj4gICAJICAgIGRldl9wcml2LT5t bS5iaXRfNl9zd2l6emxlX3ggPT0gSTkxNV9CSVRfNl9TV0laWkxFX05PTkUpCj4+ICAgCQlyZXR1 cm47Cj4+ICAgCj4+IEBAIC01MDg0LDcgKzUwODQsNyBAQCBpbnQgaTkxNV9nZW1faW5pdF9odyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCS8qIERvdWJsZSBsYXllciBz ZWN1cml0eSBibGFua2V0LCBzZWUgaTkxNV9nZW1faW5pdCgpICovCj4+ICAgCWludGVsX3VuY29y ZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPj4gICAKPj4gLQlpZiAo SEFTX0VEUkFNKGRldl9wcml2KSAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkKPj4gKwlpZiAo SEFTX0VEUkFNKGRldl9wcml2KSAmJiBJU19HRU5fTFQoZGV2X3ByaXYsIDkpKQo+PiAgIAkJSTkx NV9XUklURShIU1dfSURJQ1IsIEk5MTVfUkVBRChIU1dfSURJQ1IpIHwgSURJSEFTSE1TSygweGYp KTsKPj4gICAKPj4gICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+PiBAQCAtNTA5Niw3ICs1 MDk2LDcgQEAgaW50IGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+PiAgIAkJCXUzMiB0ZW1wID0gSTkxNV9SRUFEKEdFTjdfTVNHX0NUTCk7Cj4+ICAg CQkJdGVtcCAmPSB+KFdBSVRfRk9SX1BDSF9GTFJfQUNLIHwgV0FJVF9GT1JfUENIX1JFU0VUX0FD Syk7Cj4+ICAgCQkJSTkxNV9XUklURShHRU43X01TR19DVEwsIHRlbXApOwo+PiAtCQl9IGVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewo+PiArCQl9IGVsc2UgaWYgKElTX0dFTl9H VEUoZGV2X3ByaXYsIDcpKSB7Cj4+ICAgCQkJdTMyIHRlbXAgPSBJOTE1X1JFQUQoSFNXX05ERV9S U1RXUk5fT1BUKTsKPj4gICAJCQl0ZW1wICY9IH5SRVNFVF9QQ0hfSEFORFNIQUtFX0VOQUJMRTsK Pj4gICAJCQlJOTE1X1dSSVRFKEhTV19OREVfUlNUV1JOX09QVCwgdGVtcCk7Cj4+IEBAIC01NDIw LDEwICs1NDIwLDEwIEBAIGk5MTVfZ2VtX2xvYWRfaW5pdF9mZW5jZXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4gICAJaW50IGk7Cj4+ICAgCj4+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gNyAmJiAhSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgJiYKPj4g KwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNykgJiYgIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYp ICYmCj4+ICAgCSAgICAhSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4+ICAgCQlkZXZfcHJpdi0+ bnVtX2ZlbmNlX3JlZ3MgPSAzMjsKPj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDQgfHwKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSB8fAo+PiAgIAkJIElT X0k5NDVHKGRldl9wcml2KSB8fCBJU19JOTQ1R00oZGV2X3ByaXYpIHx8Cj4+ICAgCQkgSVNfRzMz KGRldl9wcml2KSB8fCBJU19QSU5FVklFVyhkZXZfcHJpdikpCj4+ICAgCQlkZXZfcHJpdi0+bnVt X2ZlbmNlX3JlZ3MgPSAxNjsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYwo+PiBpbmRleCA0NDAxMDY4ZmY0NjguLmYyZGE2ZTZkMjNjMCAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiBAQCAtMjUyMiw3ICsy NTIyLDcgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAo+PiAgIAkJZXhlYzJfbGlzdFtpXS5yZWxvY3NfcHRyID0gZXhlY19saXN0W2ldLnJl bG9jc19wdHI7Cj4+ICAgCQlleGVjMl9saXN0W2ldLmFsaWdubWVudCA9IGV4ZWNfbGlzdFtpXS5h bGlnbm1lbnQ7Cj4+ICAgCQlleGVjMl9saXN0W2ldLm9mZnNldCA9IGV4ZWNfbGlzdFtpXS5vZmZz ZXQ7Cj4+IC0JCWlmIChJTlRFTF9HRU4odG9faTkxNShkZXYpKSA8IDQpCj4+ICsJCWlmIChJU19H RU5fTFQodG9faTkxNShkZXYpLCA0KSkKPj4gICAJCQlleGVjMl9saXN0W2ldLmZsYWdzID0gRVhF Q19PQkpFQ1RfTkVFRFNfRkVOQ0U7Cj4+ICAgCQllbHNlCj4+ICAgCQkJZXhlYzJfbGlzdFtpXS5m bGFncyA9IDA7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9m ZW5jZV9yZWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCj4+ IGluZGV4IGI4MzM4ZDc1YzZmMy4uZmU2OWU5NzBkMWVkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+PiBAQCAtNTU3LDcgKzU1Nyw3IEBAIGk5MTVf Z2VtX2RldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4gICAJdWludDMyX3Qgc3dpenpsZV94ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047 Cj4+ICAgCXVpbnQzMl90IHN3aXp6bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOOwo+ PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggfHwgSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkgfHwgSVNfVkFMTEVZ VklFVyhkZXZfcHJpdikpIHsKPj4gICAJCS8qCj4+ICAgCQkgKiBPbiBCRFcrLCBzd2l6emxpbmcg aXMgbm90IHVzZWQuIFdlIGxlYXZlIHRoZSBDUFUgbWVtb3J5Cj4+ICAgCQkgKiBjb250cm9sbGVy IGluIGNoYXJnZSBvZiBvcHRpbWl6aW5nIG1lbW9yeSBhY2Nlc3NlcyB3aXRob3V0Cj4+IEBAIC01 NjcsNyArNTY3LDcgQEAgaTkxNV9nZW1fZGV0ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAkJICovCj4+ICAgCQlzd2l6emxlX3ggPSBJOTE1 X0JJVF82X1NXSVpaTEVfTk9ORTsKPj4gICAJCXN3aXp6bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpM RV9OT05FOwo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4+ICsJ fSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+PiAgIAkJaWYgKGRldl9wcml2 LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUpIHsKPj4gICAJCQlpZiAoSTkxNV9SRUFEKERJU1BfQVJC X0NUTCkgJgo+PiAgIAkJCSAgICBESVNQX1RJTEVfU1VSRkFDRV9TV0laWkxJTkcpIHsKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPj4gaW5kZXggMGMwZjFhZmZkZGFkLi42ZmIwOTQ5 ZmFjYjQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4+IEBAIC0xNTQs NyArMTU0LDcgQEAgaW50IGludGVsX3Nhbml0aXplX2VuYWJsZV9wcGd0dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCSAqIFdlIGRvbid0IGFsbG93IGRpc2FibGluZyBQ UEdUVCBmb3IgZ2VuOSsgYXMgaXQncyBhIHJlcXVpcmVtZW50IGZvcgo+PiAgIAkgKiBleGVjbGlz dHMsIHRoZSBzb2xlIG1lY2hhbmlzbSBhdmFpbGFibGUgdG8gc3VibWl0IHdvcmsuCj4+ICAgCSAq Lwo+PiAtCWlmIChlbmFibGVfcHBndHQgPT0gMCAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkK Pj4gKwlpZiAoZW5hYmxlX3BwZ3R0ID09IDAgJiYgSVNfR0VOX0xUKGRldl9wcml2LCA5KSkKPj4g ICAJCXJldHVybiAwOwo+PiAgIAo+PiAgIAlpZiAoZW5hYmxlX3BwZ3R0ID09IDEpCj4+IEBAIC0y MTA5LDcgKzIxMDksNyBAQCBzdGF0aWMgaW50IF9faHdfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQsCj4+ICAgCXBwZ3R0LT5iYXNlLmk5MTUgPSBkZXZfcHJpdjsKPj4gICAJ cHBndHQtPmJhc2UuZG1hID0gJmRldl9wcml2LT5kcm0ucGRldi0+ZGV2Owo+PiAgIAo+PiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkKPj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA4 KSkKPj4gICAJCXJldHVybiBnZW42X3BwZ3R0X2luaXQocHBndHQpOwo+PiAgIAllbHNlCj4+ICAg CQlyZXR1cm4gZ2VuOF9wcGd0dF9pbml0KHBwZ3R0KTsKPj4gQEAgLTIxNzAsNyArMjE3MCw3IEBA IHN0YXRpYyB2b2lkIGd0dF93cml0ZV93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4+ICAgCSAqIGRyaXZlci4KPj4gICAJICovCj4+ICAgCWlmIChIQVNfUEFH RV9TSVpFUyhkZXZfcHJpdiwgSTkxNV9HVFRfUEFHRV9TSVpFXzY0SykgJiYKPj4gLQkgICAgSU5U RUxfR0VOKGRldl9wcml2KSA8PSAxMCkKPj4gKwkgICAgSVNfR0VOX0xURShkZXZfcHJpdiwgMTAp KQo+PiAgIAkJSTkxNV9XUklURShHRU44X0dBTVdfRUNPX0RFVl9SV19JQSwKPj4gICAJCQkgICBJ OTE1X1JFQUQoR0VOOF9HQU1XX0VDT19ERVZfUldfSUEpIHwKPj4gICAJCQkgICBHQU1XX0VDT19F TkFCTEVfNjRLX0lQU19GSUVMRCk7Cj4+IEBAIC0yMTkzLDcgKzIxOTMsNyBAQCBpbnQgaTkxNV9w cGd0dF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAJCWdl bjZfcHBndHRfZW5hYmxlKGRldl9wcml2KTsKPj4gICAJZWxzZSBpZiAoSVNfR0VONyhkZXZfcHJp dikpCj4+ICAgCQlnZW43X3BwZ3R0X2VuYWJsZShkZXZfcHJpdik7Cj4+IC0JZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA4KQo+PiArCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDgpKQo+PiAgIAkJZ2VuOF9wcGd0dF9lbmFibGUoZGV2X3ByaXYpOwo+PiAgIAllbHNlCj4+ICAg CQlNSVNTSU5HX0NBU0UoSU5URUxfR0VOKGRldl9wcml2KSk7Cj4+IEBAIC0yMzM4LDkgKzIzMzgs OSBAQCBzdGF0aWMgdm9pZCBnZW44X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHZvaWQgaTkxNV9jaGVja19hbmRfY2xlYXJfZmF1 bHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICB7Cj4+ICAgCS8qIEZy b20gR0VOOCBvbndhcmRzIHdlIG9ubHkgaGF2ZSBvbmUgJ0FsbCBFbmdpbmUgRmF1bHQgUmVnaXN0 ZXInICovCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPj4gKwlpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgOCkpCj4+ICAgCQlnZW44X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoZGV2 X3ByaXYpOwo+PiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPj4gKwllbHNl IGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkKPj4gICAJCWdlbjZfY2hlY2tfYW5kX2NsZWFy X2ZhdWx0cyhkZXZfcHJpdik7Cj4+ICAgCWVsc2UKPj4gICAJCXJldHVybjsKPj4gQEAgLTIzNTMs NyArMjM1Myw3IEBAIHZvaWQgaTkxNV9nZW1fc3VzcGVuZF9ndHRfbWFwcGluZ3Moc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAkvKiBEb24ndCBib3RoZXIgbWVzc2luZyB3 aXRoIGZhdWx0cyBwcmUgR0VONiBhcyB3ZSBoYXZlIGxpdHRsZQo+PiAgIAkgKiBkb2N1bWVudGF0 aW9uIHN1cHBvcnRpbmcgdGhhdCBpdCdzIGEgZ29vZCBpZGVhLgo+PiAgIAkgKi8KPj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDYpCj4+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNikp Cj4+ICAgCQlyZXR1cm47Cj4+ICAgCj4+ICAgCWk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhk ZXZfcHJpdik7Cj4+IEBAIC0yOTk5LDcgKzI5OTksNyBAQCBzdGF0aWMgaW50IGdndHRfcHJvYmVf Y29tbW9uKHN0cnVjdCBpOTE1X2dndHQgKmdndHQsIHU2NCBzaXplKQo+PiAgIAkgKiByZXNvcnQg dG8gYW4gdW5jYWNoZWQgbWFwcGluZy4gVGhlIFdDIGlzc3VlIGlzIGVhc2lseSBjYXVnaHQgYnkg dGhlCj4+ICAgCSAqIHJlYWRiYWNrIGNoZWNrIHdoZW4gd3JpdGluZyBHVFQgUFRFIGVudHJpZXMu Cj4+ICAgCSAqLwo+PiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDEwKQo+PiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSB8fCBJU19HRU5fR1RF KGRldl9wcml2LCAxMCkpCj4+ICAgCQlnZ3R0LT5nc20gPSBpb3JlbWFwX25vY2FjaGUocGh5c19h ZGRyLCBzaXplKTsKPj4gICAJZWxzZQo+PiAgIAkJZ2d0dC0+Z3NtID0gaW9yZW1hcF93YyhwaHlz X2FkZHIsIHNpemUpOwo+PiBAQCAtMzI5NCw3ICszMjk0LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBf cHJpdmF0ZV9wYXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAo+PiAg IAlwcGF0LT5pOTE1ID0gZGV2X3ByaXY7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTApCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDEwKSkKPj4gICAJCWNubF9z ZXR1cF9wcml2YXRlX3BwYXQocHBhdCk7Cj4+ICAgCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpIHx8IElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+PiAgIAkJY2h2X3NldHVwX3ByaXZhdGVf cHBhdChwcGF0KTsKPj4gQEAgLTMzMzQsNyArMzMzNCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9nbWNo X3Byb2JlKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCj4+ICAgCj4+ICAgCXBjaV9yZWFkX2NvbmZp Z193b3JkKHBkZXYsIFNOQl9HTUNIX0NUUkwsICZzbmJfZ21jaF9jdGwpOwo+PiAgIAo+PiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgOSkpIHsKPj4gICAJCXNpemUgPSBnZW44X2dldF90b3RhbF9ndHRfc2l6ZShzbmJfZ21jaF9j dGwpOwo+PiAgIAl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4+ICAgCQlz aXplID0gY2h2X2dldF90b3RhbF9ndHRfc2l6ZShzbmJfZ21jaF9jdGwpOwo+PiBAQCAtMzQxOCw3 ICszNDE4LDcgQEAgc3RhdGljIGludCBnZW42X2dtY2hfcHJvYmUoc3RydWN0IGk5MTVfZ2d0dCAq Z2d0dCkKPj4gICAJCWdndHQtPmJhc2UucHRlX2VuY29kZSA9IGhzd19wdGVfZW5jb2RlOwo+PiAg IAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gICAJCWdndHQtPmJhc2UucHRl X2VuY29kZSA9IGJ5dF9wdGVfZW5jb2RlOwo+PiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNykKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA3KSkKPj4gICAJCWdn dHQtPmJhc2UucHRlX2VuY29kZSA9IGl2Yl9wdGVfZW5jb2RlOwo+PiAgIAllbHNlCj4+ICAgCQln Z3R0LT5iYXNlLnB0ZV9lbmNvZGUgPSBzbmJfcHRlX2VuY29kZTsKPj4gQEAgLTM0ODEsOSArMzQ4 MSw5IEBAIGludCBpOTE1X2dndHRfcHJvYmVfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+PiAgIAlnZ3R0LT5iYXNlLmk5MTUgPSBkZXZfcHJpdjsKPj4gICAJZ2d0dC0+YmFz ZS5kbWEgPSAmZGV2X3ByaXYtPmRybS5wZGV2LT5kZXY7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPD0gNSkKPj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNSkpCj4+ICAg CQlyZXQgPSBpOTE1X2dtY2hfcHJvYmUoZ2d0dCk7Cj4+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDgpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA4KSkKPj4gICAJ CXJldCA9IGdlbjZfZ21jaF9wcm9iZShnZ3R0KTsKPj4gICAJZWxzZQo+PiAgIAkJcmV0ID0gZ2Vu OF9nbWNoX3Byb2JlKGdndHQpOwo+PiBAQCAtMzU3NCw3ICszNTc0LDcgQEAgaW50IGk5MTVfZ2d0 dF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAKPj4gICBp bnQgaTkxNV9nZ3R0X2VuYWJsZV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4+ICAgewo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNiAmJiAhaW50ZWxfZW5hYmxl X2d0dCgpKQo+PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDYpICYmICFpbnRlbF9lbmFibGVf Z3R0KCkpCj4+ICAgCQlyZXR1cm4gLUVJTzsKPj4gICAKPj4gICAJcmV0dXJuIDA7Cj4+IEBAIC0z NjMxLDcgKzM2MzEsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZ3R0X21hcHBpbmdzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAKPj4gICAJZ2d0dC0+YmFzZS5jbG9z ZWQgPSBmYWxzZTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4+ ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKSB7Cj4+ICAgCQlzdHJ1Y3QgaW50ZWxfcHBh dCAqcHBhdCA9ICZkZXZfcHJpdi0+cHBhdDsKPj4gICAKPj4gICAJCWJpdG1hcF9zZXQocHBhdC0+ ZGlydHksIDAsIHBwYXQtPm1heF9lbnRyaWVzKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlcXVlc3QuYwo+PiBpbmRleCBhOGViMjJhOTViMGYuLjM4YTMzNTJlODI3YSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+PiBAQCAtMjc5LDcgKzI3 OSw3IEBAIHN0YXRpYyB2b2lkIG1hcmtfYnVzeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPj4gICAKPj4gICAJaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShpOTE1KTsKPj4gICAJaTkx NV91cGRhdGVfZ2Z4X3ZhbChpOTE1KTsKPj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCj4+ ICsJaWYgKElTX0dFTl9HVEUoaTkxNSwgNikpCj4+ICAgCQlnZW42X3Jwc19idXN5KGk5MTUpOwo+ PiAgIAlpOTE1X3BtdV9ndF91bnBhcmtlZChpOTE1KTsKPj4gICAKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fc3RvbGVuLmMKPj4gaW5kZXggZjE4ZGE5ZTJiZThlLi41YzcyNDZkYjA2YTIg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4+IEBAIC05MSw3 ICs5MSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9hZGp1c3Rfc3RvbGVuKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPj4gICAJICovCj4+ICAgCj4+ICAgCS8qIE1ha2Ugc3VyZSB3ZSBk b24ndCBjbG9iYmVyIHRoZSBHVFQgaWYgaXQncyB3aXRoaW4gc3RvbGVuIG1lbW9yeSAqLwo+PiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQgJiYKPj4gKwlpZiAoSVNfR0VOX0xURShkZXZf cHJpdiwgNCkgJiYKPj4gICAJICAgICFJU19HMzMoZGV2X3ByaXYpICYmICFJU19QSU5FVklFVyhk ZXZfcHJpdikgJiYgIUlTX0c0WChkZXZfcHJpdikpIHsKPj4gICAJCXN0cnVjdCByZXNvdXJjZSBz dG9sZW5bMl0gPSB7KmRzbSwgKmRzbX07Cj4+ICAgCQlzdHJ1Y3QgcmVzb3VyY2UgZ2d0dF9yZXM7 Cj4+IEBAIC0zMzYsNyArMzM2LDcgQEAgaW50IGk5MTVfZ2VtX2luaXRfc3RvbGVuKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAJCXJldHVybiAwOwo+PiAgIAl9Cj4+ICAg Cj4+IC0JaWYgKGludGVsX3Z0ZF9hY3RpdmUoKSAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkg ewo+PiArCWlmIChpbnRlbF92dGRfYWN0aXZlKCkgJiYgSVNfR0VOX0xUKGRldl9wcml2LCA4KSkg ewo+PiAgIAkJRFJNX0lORk8oIkRNQVIgYWN0aXZlLCBkaXNhYmxpbmcgdXNlIG9mIHN0b2xlbiBt ZW1vcnlcbiIpOwo+PiAgIAkJcmV0dXJuIDA7Cj4+ICAgCX0KPj4gQEAgLTQxMiw3ICs0MTIsNyBA QCBpbnQgaTkxNV9nZW1faW5pdF9zdG9sZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+PiAgIAo+PiAgIAlzdG9sZW5fdXNhYmxlX3N0YXJ0ID0gMDsKPj4gICAJLyogV2FTa2lw U3RvbGVuTWVtb3J5Rmlyc3RQYWdlOmJkdysgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA4KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4KSkKPj4gICAJCXN0b2xlbl91 c2FibGVfc3RhcnQgPSA0MDk2Owo+PiAgIAo+PiAgIAlkZXZfcHJpdi0+c3RvbGVuX3VzYWJsZV9z aXplID0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGlu Zy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKPj4gaW5kZXggZDlk YzlkZjUyM2I1Li44YTFlNzA4MjU3OWEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3RpbGluZy5jCj4+IEBAIC04MCw3ICs4MCw3IEBAIHUzMiBpOTE1X2dlbV9mZW5jZV9zaXpl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+PiAgIAo+PiAgIAlHRU1fQlVHX09OKCFz dHJpZGUpOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCkgewo+PiArCWlmIChJ U19HRU5fR1RFKGk5MTUsIDQpKSB7Cj4+ICAgCQlzdHJpZGUgKj0gaTkxNV9nZW1fdGlsZV9oZWln aHQodGlsaW5nKTsKPj4gICAJCUdFTV9CVUdfT04oIUlTX0FMSUdORUQoc3RyaWRlLCBJOTY1X0ZF TkNFX1BBR0UpKTsKPj4gICAJCXJldHVybiByb3VuZHVwKHNpemUsIHN0cmlkZSk7Cj4+IEBAIC0x MjAsNyArMTIwLDcgQEAgdTMyIGk5MTVfZ2VtX2ZlbmNlX2FsaWdubWVudChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHNpemUsCj4+ICAgCWlmICh0aWxpbmcgPT0gSTkxNV9USUxJ TkdfTk9ORSkKPj4gICAJCXJldHVybiBJOTE1X0dUVF9NSU5fQUxJR05NRU5UOwo+PiAgIAo+PiAt CWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCkKPj4gKwlpZiAoSVNfR0VOX0dURShpOTE1LCA0KSkK Pj4gICAJCXJldHVybiBJOTY1X0ZFTkNFX1BBR0U7Cj4+ICAgCj4+ICAgCS8qCj4+IEBAIC0xNDgs MTAgKzE0OCwxMCBAQCBpOTE1X3RpbGluZ19vayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+PiAgIAkvKiBjaGVjayBtYXhpbXVtIHN0cmlkZSAmIG9iamVjdCBzaXplICovCj4+ICAg CS8qIGk5NjUrIHN0b3JlcyB0aGUgZW5kIGFkZHJlc3Mgb2YgdGhlIGd0dCBtYXBwaW5nIGluIHRo ZSBmZW5jZQo+PiAgIAkgKiByZWcsIHNvIGRvbnQgYm90aGVyIHRvIGNoZWNrIHRoZSBzaXplICov Cj4+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA3KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoaTkx NSwgNykpIHsKPj4gICAJCWlmIChzdHJpZGUgLyAxMjggPiBHRU43X0ZFTkNFX01BWF9QSVRDSF9W QUwpCj4+ICAgCQkJcmV0dXJuIGZhbHNlOwo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUp ID49IDQpIHsKPj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoaTkxNSwgNCkpIHsKPj4gICAJCWlm IChzdHJpZGUgLyAxMjggPiBJOTY1X0ZFTkNFX01BWF9QSVRDSF9WQUwpCj4+ICAgCQkJcmV0dXJu IGZhbHNlOwo+PiAgIAl9IGVsc2Ugewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKPj4gaW5kZXggNjdjOTAyNDEyMTkzLi5jNWE3ZWQ0ZDljMWUgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+PiBAQCAtMzc2LDEzICszNzYsMTMgQEAgc3RhdGlj IHZvaWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1 ZiAqbSwKPj4gICAJZXJyX3ByaW50ZihtLCAiICBJTlNURE9ORTogMHglMDh4XG4iLAo+PiAgIAkJ ICAgZWUtPmluc3Rkb25lLmluc3Rkb25lKTsKPj4gICAKPj4gLQlpZiAoZWUtPmVuZ2luZV9pZCAh PSBSQ1MgfHwgSU5URUxfR0VOKG0tPmk5MTUpIDw9IDMpCj4+ICsJaWYgKGVlLT5lbmdpbmVfaWQg IT0gUkNTIHx8IElTX0dFTl9MVEUobS0+aTkxNSwgMykpCj4+ICAgCQlyZXR1cm47Cj4+ICAgCj4+ ICAgCWVycl9wcmludGYobSwgIiAgU0NfSU5TVERPTkU6IDB4JTA4eFxuIiwKPj4gICAJCSAgIGVl LT5pbnN0ZG9uZS5zbGljZV9jb21tb24pOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4obS0+aTkx NSkgPD0gNikKPj4gKwlpZiAoSVNfR0VOX0xURShtLT5pOTE1LCA2KSkKPj4gICAJCXJldHVybjsK Pj4gICAKPj4gICAJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc2xp Y2UsIHN1YnNsaWNlKQo+PiBAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3By aW50X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+PiAgIAkJCSAg IHVwcGVyXzMyX2JpdHMoc3RhcnQpLCBsb3dlcl8zMl9iaXRzKHN0YXJ0KSwKPj4gICAJCQkgICB1 cHBlcl8zMl9iaXRzKGVuZCksIGxvd2VyXzMyX2JpdHMoZW5kKSk7Cj4+ICAgCX0KPj4gLQlpZiAo SU5URUxfR0VOKG0tPmk5MTUpID49IDQpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShtLT5pOTE1LCA0 KSkgewo+PiAgIAkJZXJyX3ByaW50ZihtLCAiICBCQkFERFI6IDB4JTA4eF8lMDh4XG4iLAo+PiAg IAkJCSAgICh1MzIpKGVlLT5iYmFkZHI+PjMyKSwgKHUzMillZS0+YmJhZGRyKTsKPj4gICAJCWVy cl9wcmludGYobSwgIiAgQkJfU1RBVEU6IDB4JTA4eFxuIiwgZWUtPmJic3RhdGUpOwo+PiBAQCAt NDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2VuZ2luZShzdHJ1Y3QgZHJt X2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+PiAgIAllcnJfcHJpbnRmKG0sICIgIElOU1RQTTog MHglMDh4XG4iLCBlZS0+aW5zdHBtKTsKPj4gICAJZXJyX3ByaW50ZihtLCAiICBGQUREUjogMHgl MDh4ICUwOHhcbiIsIHVwcGVyXzMyX2JpdHMoZWUtPmZhZGRyKSwKPj4gICAJCSAgIGxvd2VyXzMy X2JpdHMoZWUtPmZhZGRyKSk7Cj4+IC0JaWYgKElOVEVMX0dFTihtLT5pOTE1KSA+PSA2KSB7Cj4+ ICsJaWYgKElTX0dFTl9HVEUobS0+aTkxNSwgNikpIHsKPj4gICAJCWVycl9wcmludGYobSwgIiAg UkMgUFNNSTogMHglMDh4XG4iLCBlZS0+cmNfcHNtaSk7Cj4+ICAgCQllcnJfcHJpbnRmKG0sICIg IEZBVUxUX1JFRzogMHglMDh4XG4iLCBlZS0+ZmF1bHRfcmVnKTsKPj4gICAJCWVycl9wcmludGYo bSwgIiAgU1lOQ18wOiAweCUwOHhcbiIsCj4+IEBAIC00NzgsNyArNDc4LDcgQEAgc3RhdGljIHZv aWQgZXJyb3JfcHJpbnRfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0s Cj4+ICAgCWlmIChVU0VTX1BQR1RUKG0tPmk5MTUpKSB7Cj4+ICAgCQllcnJfcHJpbnRmKG0sICIg IEdGWF9NT0RFOiAweCUwOHhcbiIsIGVlLT52bV9pbmZvLmdmeF9tb2RlKTsKPj4gICAKPj4gLQkJ aWYgKElOVEVMX0dFTihtLT5pOTE1KSA+PSA4KSB7Cj4+ICsJCWlmIChJU19HRU5fR1RFKG0tPmk5 MTUsIDgpKSB7Cj4+ICAgCQkJaW50IGk7Cj4+ICAgCQkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykK Pj4gICAJCQkJZXJyX3ByaW50ZihtLCAiICBQRFAlZDogMHglMDE2bGx4XG4iLAo+PiBAQCAtNjkx LDEwICs2OTEsMTAgQEAgaW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkx NV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4+ICAgCWZvciAoaSA9IDA7IGkgPCBlcnJvci0+bmZlbmNl OyBpKyspCj4+ICAgCQllcnJfcHJpbnRmKG0sICIgIGZlbmNlWyVkXSA9ICUwOGxseFxuIiwgaSwg ZXJyb3ItPmZlbmNlW2ldKTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2 KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKSB7Cj4+ICAgCQllcnJfcHJpbnRm KG0sICJFUlJPUjogMHglMDh4XG4iLCBlcnJvci0+ZXJyb3IpOwo+PiAgIAo+PiAtCQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA4KQo+PiArCQlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkp Cj4+ICAgCQkJZXJyX3ByaW50ZihtLCAiRkFVTFRfVExCX0RBVEE6IDB4JTA4eCAweCUwOHhcbiIs Cj4+ICAgCQkJCSAgIGVycm9yLT5mYXVsdF9kYXRhMSwgZXJyb3ItPmZhdWx0X2RhdGEwKTsKPj4g ICAKPj4gQEAgLTEwODcsMTAgKzEwODcsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3Jk X2ZlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgewo+PiAgIAlp bnQgaTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKSB7Cj4+ICAgCQlmb3IgKGkgPSAwOyBpIDwgZGV2X3By aXYtPm51bV9mZW5jZV9yZWdzOyBpKyspCj4+ICAgCQkJZXJyb3ItPmZlbmNlW2ldID0gSTkxNV9S RUFENjQoRkVOQ0VfUkVHX0dFTjZfTE8oaSkpOwo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA0KSB7Cj4+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkg ewo+PiAgIAkJZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fZmVuY2VfcmVnczsgaSsrKQo+ PiAgIAkJCWVycm9yLT5mZW5jZVtpXSA9IEk5MTVfUkVBRDY0KEZFTkNFX1JFR185NjVfTE8oaSkp Owo+PiAgIAl9IGVsc2Ugewo+PiBAQCAtMTE5Miw5ICsxMTkyLDkgQEAgc3RhdGljIHZvaWQgZXJy b3JfcmVjb3JkX2VuZ2luZV9yZWdpc3RlcnMoc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwK Pj4gICB7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ aTkxNTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKSB7Cj4+ICAgCQllZS0+cmNfcHNtaSA9IEk5MTVfUkVB RChSSU5HX1BTTUlfQ1RMKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4+IC0JCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDgpIHsKPj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKSB7Cj4+ ICAgCQkJZWUtPmZhdWx0X3JlZyA9IEk5MTVfUkVBRChHRU44X1JJTkdfRkFVTFRfUkVHKTsKPj4g ICAJCX0gZWxzZSB7Cj4+ICAgCQkJZ2VuNl9yZWNvcmRfc2VtYXBob3JlX3N0YXRlKGVuZ2luZSwg ZWUpOwo+PiBAQCAtMTIwMiwxMyArMTIwMiwxMyBAQCBzdGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRf ZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAo+PiAgIAkJfQo+ PiAgIAl9Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+PiArCWlm IChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+PiAgIAkJZWUtPmZhZGRyID0gSTkxNV9SRUFE KFJJTkdfRE1BX0ZBREQoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPj4gICAJCWVlLT5pcGVpciA9IEk5 MTVfUkVBRChSSU5HX0lQRUlSKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4+ICAgCQllZS0+aXBlaHIg PSBJOTE1X1JFQUQoUklOR19JUEVIUihlbmdpbmUtPm1taW9fYmFzZSkpOwo+PiAgIAkJZWUtPmlu c3RwcyA9IEk5MTVfUkVBRChSSU5HX0lOU1RQUyhlbmdpbmUtPm1taW9fYmFzZSkpOwo+PiAgIAkJ ZWUtPmJiYWRkciA9IEk5MTVfUkVBRChSSU5HX0JCQUREUihlbmdpbmUtPm1taW9fYmFzZSkpOwo+ PiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4+ICsJCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA4KSkgewo+PiAgIAkJCWVlLT5mYWRkciB8PSAodTY0KSBJOTE1X1JFQUQoUklO R19ETUFfRkFERF9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpKSA8PCAzMjsKPj4gICAJCQllZS0+YmJh ZGRyIHw9ICh1NjQpIEk5MTVfUkVBRChSSU5HX0JCQUREUl9VRFcoZW5naW5lLT5tbWlvX2Jhc2Up KSA8PCAzMjsKPj4gICAJCX0KPj4gQEAgLTEyMzAsNyArMTIzMCw3IEBAIHN0YXRpYyB2b2lkIGVy cm9yX3JlY29yZF9lbmdpbmVfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3Is Cj4+ICAgCWVlLT5oZWFkID0gSTkxNV9SRUFEX0hFQUQoZW5naW5lKTsKPj4gICAJZWUtPnRhaWwg PSBJOTE1X1JFQURfVEFJTChlbmdpbmUpOwo+PiAgIAllZS0+Y3RsID0gSTkxNV9SRUFEX0NUTChl bmdpbmUpOwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMikKPj4gKwlpZiAoSVNfR0VO X0dUKGRldl9wcml2LCAyKSkKPj4gICAJCWVlLT5tb2RlID0gSTkxNV9SRUFEX01PREUoZW5naW5l KTsKPj4gICAKPj4gICAJaWYgKCFIV1NfTkVFRFNfUEhZU0lDQUwoZGV2X3ByaXYpKSB7Cj4+IEBA IC0xMjgwLDcgKzEyODAsNyBAQCBzdGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lz dGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAo+PiAgIAkJZWxzZSBpZiAoSVNfR0VO NyhkZXZfcHJpdikpCj4+ICAgCQkJZWUtPnZtX2luZm8ucHBfZGlyX2Jhc2UgPQo+PiAgIAkJCQlJ OTE1X1JFQUQoUklOR19QUF9ESVJfQkFTRShlbmdpbmUpKTsKPj4gLQkJZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA4KQo+PiArCQllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4 KSkKPj4gICAJCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4+ICAgCQkJCWVlLT52bV9pbmZv LnBkcFtpXSA9Cj4+ICAgCQkJCQlJOTE1X1JFQUQoR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCBp KSk7Cj4+IEBAIC0xNjQ3LDcgKzE2NDcsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVn X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJaWYgKElTX0dF TjcoZGV2X3ByaXYpKQo+PiAgIAkJZXJyb3ItPmVycl9pbnQgPSBJOTE1X1JFQUQoR0VON19FUlJf SU5UKTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKSB7Cj4+ICAgCQllcnJvci0+ZmF1bHRfZGF0YTAgPSBJ OTE1X1JFQUQoR0VOOF9GQVVMVF9UTEJfREFUQTApOwo+PiAgIAkJZXJyb3ItPmZhdWx0X2RhdGEx ID0gSTkxNV9SRUFEKEdFTjhfRkFVTFRfVExCX0RBVEExKTsKPj4gICAJfQo+PiBAQCAtMTY1OSwx NiArMTY1OSwxNiBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJfQo+PiAgIAo+PiAgIAkvKiAyOiBSZWdp c3RlcnMgd2hpY2ggYmVsb25nIHRvIG11bHRpcGxlIGdlbmVyYXRpb25zICovCj4+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gNykKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNykp Cj4+ICAgCQllcnJvci0+Zm9yY2V3YWtlID0gSTkxNV9SRUFEX0ZXKEZPUkNFV0FLRV9NVCk7Cj4+ ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+PiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA2KSkgewo+PiAgIAkJZXJyb3ItPmRlcnJtciA9IEk5MTVfUkVBRChERVJS TVIpOwo+PiAgIAkJZXJyb3ItPmVycm9yID0gSTkxNV9SRUFEKEVSUk9SX0dFTjYpOwo+PiAgIAkJ ZXJyb3ItPmRvbmVfcmVnID0gSTkxNV9SRUFEKERPTkVfUkVHKTsKPj4gICAJfQo+PiAgIAo+PiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3By aXYsIDUpKQo+PiAgIAkJZXJyb3ItPmNjaWQgPSBJOTE1X1JFQUQoQ0NJRCk7Cj4+ICAgCj4+ICAg CS8qIDM6IEZlYXR1cmUgc3BlY2lmaWMgcmVnaXN0ZXJzICovCj4+IEBAIC0xNjc4LDcgKzE2Nzgs NyBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPj4gICAJfQo+PiAgIAo+PiAgIAkvKiA0OiBFdmVyeXRoaW5nIGVs c2UgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4+ICsJaWYgKElTX0dF Tl9HVEUoZGV2X3ByaXYsIDgpKSB7Cj4+ICAgCQllcnJvci0+aWVyID0gSTkxNV9SRUFEKEdFTjhf REVfTUlTQ19JRVIpOwo+PiAgIAkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKPj4gICAJCQllcnJv ci0+Z3RpZXJbaV0gPSBJOTE1X1JFQUQoR0VOOF9HVF9JRVIoaSkpOwo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKPj4gaW5kZXggYjg4NmJkNDU5YWNjLi5mMDJkNjgyYTVjYTkgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYwo+PiBAQCAtMzA4LDE3ICszMDgsMTcgQEAgdm9pZCBnZW41X2Rp c2FibGVfZ3RfaXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdWludDMyX3Qg bWFzaykKPj4gICAKPj4gICBzdGF0aWMgaTkxNV9yZWdfdCBnZW42X3BtX2lpcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgewo+PiAtCXJldHVybiBJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDggPyBHRU44X0dUX0lJUigyKSA6IEdFTjZfUE1JSVI7Cj4+ICsJcmV0dXJuIElT X0dFTl9HVEUoZGV2X3ByaXYsIDgpID8gR0VOOF9HVF9JSVIoMikgOiBHRU42X1BNSUlSOwo+PiAg IH0KPj4gICAKPj4gICBzdGF0aWMgaTkxNV9yZWdfdCBnZW42X3BtX2ltcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgewo+PiAtCXJldHVybiBJTlRFTF9HRU4oZGV2X3By aXYpID49IDggPyBHRU44X0dUX0lNUigyKSA6IEdFTjZfUE1JTVI7Cj4+ICsJcmV0dXJuIElTX0dF Tl9HVEUoZGV2X3ByaXYsIDgpID8gR0VOOF9HVF9JTVIoMikgOiBHRU42X1BNSU1SOwo+PiAgIH0K Pj4gICAKPj4gICBzdGF0aWMgaTkxNV9yZWdfdCBnZW42X3BtX2llcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgewo+PiAtCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDggPyBHRU44X0dUX0lFUigyKSA6IEdFTjZfUE1JRVI7Cj4+ICsJcmV0dXJuIElTX0dFTl9H VEUoZGV2X3ByaXYsIDgpID8gR0VOOF9HVF9JRVIoMikgOiBHRU42X1BNSUVSOwo+PiAgIH0KPj4g ICAKPj4gICAvKioKPj4gQEAgLTU4NSw3ICs1ODUsNyBAQCB1MzIgaTkxNV9waXBlc3RhdF9lbmFi bGVfbWFzayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCj4+ICAgCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4+ICAgCj4+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA1KQo+PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDUpKQo+ PiAgIAkJZ290byBvdXQ7Cj4+ICAgCj4+ICAgCS8qCj4+IEBAIC02NzYsNyArNjc2LDcgQEAgc3Rh dGljIHZvaWQgaTkxNV9lbmFibGVfYXNsZV9waXBlc3RhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4+ICAgCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4+ ICAgCj4+ICAgCWk5MTVfZW5hYmxlX3BpcGVzdGF0KGRldl9wcml2LCBQSVBFX0IsIFBJUEVfTEVH QUNZX0JMQ19FVkVOVF9TVEFUVVMpOwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQp Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+PiAgIAkJaTkxNV9lbmFibGVfcGlw ZXN0YXQoZGV2X3ByaXYsIFBJUEVfQSwKPj4gICAJCQkJICAgICBQSVBFX0xFR0FDWV9CTENfRVZF TlRfU1RBVFVTKTsKPj4gICAKPj4gQEAgLTk0Nyw3ICs5NDcsNyBAQCBzdGF0aWMgYm9vbCBpOTE1 X2dldF9jcnRjX3NjYW5vdXRwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHBpcGUsCj4+ICAgCWlmIChzdGltZSkKPj4gICAJCSpzdGltZSA9IGt0aW1lX2dldCgpOwo+PiAg IAo+PiAtCWlmIChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVM X0dFTihkZXZfcHJpdikgPj0gNSkgewo+PiArCWlmIChJU19HRU4yKGRldl9wcml2KSB8fCBJU19H NFgoZGV2X3ByaXYpIHx8IElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7Cj4+ICAgCQkvKiBObyBv YnZpb3VzIHBpeGVsY291bnQgcmVnaXN0ZXIuIE9ubHkgcXVlcnkgdmVydGljYWwKPj4gICAJCSAq IHNjYW5vdXQgcG9zaXRpb24gZnJvbSBEaXNwbGF5IHNjYW4gbGluZSByZWdpc3Rlci4KPj4gICAJ CSAqLwo+PiBAQCAtMTAwNyw3ICsxMDA3LDcgQEAgc3RhdGljIGJvb2wgaTkxNV9nZXRfY3J0Y19z Y2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+PiAg IAllbHNlCj4+ICAgCQlwb3NpdGlvbiArPSB2dG90YWwgLSB2YmxfZW5kOwo+PiAgIAo+PiAtCWlm IChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZf cHJpdikgPj0gNSkgewo+PiArCWlmIChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3By aXYpIHx8IElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7Cj4+ICAgCQkqdnBvcyA9IHBvc2l0aW9u Owo+PiAgIAkJKmhwb3MgPSAwOwo+PiAgIAl9IGVsc2Ugewo+PiBAQCAtMTY1Miw3ICsxNjUyLDcg QEAgc3RhdGljIHZvaWQgZGlzcGxheV9waXBlX2NyY19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCQkgKiBkb24ndCB0cnVzdCB0aGF0IG9uZSBlaXRo ZXIuCj4+ICAgCQkgKi8KPj4gICAJCWlmIChwaXBlX2NyYy0+c2tpcHBlZCA9PSAwIHx8Cj4+IC0J CSAgICAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4ICYmIHBpcGVfY3JjLT5za2lwcGVkID09IDEp KSB7Cj4+ICsJCSAgICAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkgJiYgcGlwZV9jcmMtPnNraXBw ZWQgPT0gMSkpIHsKPj4gICAJCQlwaXBlX2NyYy0+c2tpcHBlZCsrOwo+PiAgIAkJCXNwaW5fdW5s b2NrKCZwaXBlX2NyYy0+bG9jayk7Cj4+ICAgCQkJcmV0dXJuOwo+PiBAQCAtMTcwMiwxMiArMTcw MiwxMiBAQCBzdGF0aWMgdm9pZCBpOXh4X3BpcGVfY3JjX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICB7Cj4+ICAgCXVpbnQzMl90IHJlczEsIHJlczI7 Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMykKPj4gKwlpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgMykpCj4+ICAgCQlyZXMxID0gSTkxNV9SRUFEKFBJUEVfQ1JDX1JFU19S RVMxX0k5MTUocGlwZSkpOwo+PiAgIAllbHNlCj4+ICAgCQlyZXMxID0gMDsKPj4gICAKPj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1IHx8IElTX0c0WChkZXZfcHJpdikpCj4+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpIHx8IElTX0c0WChkZXZfcHJpdikpCj4+ICAgCQlyZXMy ID0gSTkxNV9SRUFEKFBJUEVfQ1JDX1JFU19SRVMyX0c0WChwaXBlKSk7Cj4+ICAgCWVsc2UKPj4g ICAJCXJlczIgPSAwOwo+PiBAQCAtMTczNiw3ICsxNzM2LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9y cHNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcG1f aWlyKQo+PiAgIAkJc3Bpbl91bmxvY2soJmRldl9wcml2LT5pcnFfbG9jayk7Cj4+ICAgCX0KPj4g ICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+PiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA4KSkKPj4gICAJCXJldHVybjsKPj4gICAKPj4gICAJaWYgKEhBU19WRUJPWChk ZXZfcHJpdikpIHsKPj4gQEAgLTI0ODIsNyArMjQ4Miw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBp cm9ubGFrZV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4+ICAgCWlmIChndF9paXIp IHsKPj4gICAJCUk5MTVfV1JJVEUoR1RJSVIsIGd0X2lpcik7Cj4+ICAgCQlyZXQgPSBJUlFfSEFO RExFRDsKPj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPj4gKwkJaWYgKElTX0dF Tl9HVEUoZGV2X3ByaXYsIDYpKQo+PiAgIAkJCXNuYl9ndF9pcnFfaGFuZGxlcihkZXZfcHJpdiwg Z3RfaWlyKTsKPj4gICAJCWVsc2UKPj4gICAJCQlpbGtfZ3RfaXJxX2hhbmRsZXIoZGV2X3ByaXYs IGd0X2lpcik7Cj4+IEBAIC0yNDkyLDEzICsyNDkyLDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBp cm9ubGFrZV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4+ICAgCWlmIChkZV9paXIp IHsKPj4gICAJCUk5MTVfV1JJVEUoREVJSVIsIGRlX2lpcik7Cj4+ICAgCQlyZXQgPSBJUlFfSEFO RExFRDsKPj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykKPj4gKwkJaWYgKElTX0dF Tl9HVEUoZGV2X3ByaXYsIDcpKQo+PiAgIAkJCWl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKGRldl9w cml2LCBkZV9paXIpOwo+PiAgIAkJZWxzZQo+PiAgIAkJCWlsa19kaXNwbGF5X2lycV9oYW5kbGVy KGRldl9wcml2LCBkZV9paXIpOwo+PiAgIAl9Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNikgewo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+PiAgIAkJ dTMyIHBtX2lpciA9IEk5MTVfUkVBRChHRU42X1BNSUlSKTsKPj4gICAJCWlmIChwbV9paXIpIHsK Pj4gICAJCQlJOTE1X1dSSVRFKEdFTjZfUE1JSVIsIHBtX2lpcik7Cj4+IEBAIC0yNTY3LDcgKzI1 NjcsNyBAQCBnZW44X2RlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTMyIG1hc3Rlcl9jdGwpCj4+ICAgCQkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4+ICAgCj4+ ICAgCQkJdG1wX21hc2sgPSBHRU44X0FVWF9DSEFOTkVMX0E7Cj4+IC0JCQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA5KQo+PiArCQkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAg IAkJCQl0bXBfbWFzayB8PSBHRU45X0FVWF9DSEFOTkVMX0IgfAo+PiAgIAkJCQkJICAgIEdFTjlf QVVYX0NIQU5ORUxfQyB8Cj4+ICAgCQkJCQkgICAgR0VOOV9BVVhfQ0hBTk5FTF9EOwo+PiBAQCAt MjYzMyw3ICsyNjMzLDcgQEAgZ2VuOF9kZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXN0ZXJfY3RsKQo+PiAgIAkJCWludGVsX2NwdV9maWZvX3Vu ZGVycnVuX2lycV9oYW5kbGVyKGRldl9wcml2LCBwaXBlKTsKPj4gICAKPj4gICAJCWZhdWx0X2Vy cm9ycyA9IGlpcjsKPj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwkJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJCWZhdWx0X2Vycm9ycyAmPSBHRU45X0RF X1BJUEVfSVJRX0ZBVUxUX0VSUk9SUzsKPj4gICAJCWVsc2UKPj4gICAJCQlmYXVsdF9lcnJvcnMg Jj0gR0VOOF9ERV9QSVBFX0lSUV9GQVVMVF9FUlJPUlM7Cj4+IEBAIC0yODAyLDcgKzI4MDIsNyBA QCBzdGF0aWMgdm9pZCBpOTE1X2NsZWFyX2Vycm9yX3JlZ2lzdGVycyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCWlmICghSVNfR0VOMihkZXZfcHJpdikpCj4+ICAgCQlJ OTE1X1dSSVRFKFBHVEJMX0VSLCBJOTE1X1JFQUQoUEdUQkxfRVIpKTsKPj4gICAKPj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDQpCj4+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNCkp Cj4+ICAgCQlJOTE1X1dSSVRFKElQRUlSLCBJOTE1X1JFQUQoSVBFSVIpKTsKPj4gICAJZWxzZQo+ PiAgIAkJSTkxNV9XUklURShJUEVJUl9JOTY1LCBJOTE1X1JFQUQoSVBFSVJfSTk2NSkpOwo+PiBA QCAtMjk0NCw3ICsyOTQ0LDcgQEAgc3RhdGljIGludCBpcm9ubGFrZV9lbmFibGVfdmJsYW5rKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQo+PiAgIHsKPj4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+PiAgIAl1bnNp Z25lZCBsb25nIGlycWZsYWdzOwo+PiAtCXVpbnQzMl90IGJpdCA9IElOVEVMX0dFTihkZXZfcHJp dikgPj0gNyA/Cj4+ICsJdWludDMyX3QgYml0ID0gSVNfR0VOX0dURShkZXZfcHJpdiwgNykgPwo+ PiAgIAkJREVfUElQRV9WQkxBTktfSVZCKHBpcGUpIDogREVfUElQRV9WQkxBTksocGlwZSk7Cj4+ ICAgCj4+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZsYWdz KTsKPj4gQEAgLTI5OTQsNyArMjk5NCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2Rpc2FibGVf dmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQo+PiAgIHsK Pj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ PiAgIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+PiAtCXVpbnQzMl90IGJpdCA9IElOVEVMX0dF TihkZXZfcHJpdikgPj0gNyA/Cj4+ICsJdWludDMyX3QgYml0ID0gSVNfR0VOX0dURShkZXZfcHJp diwgNykgPwo+PiAgIAkJREVfUElQRV9WQkxBTktfSVZCKHBpcGUpIDogREVfUElQRV9WQkxBTkso cGlwZSk7Cj4+ICAgCj4+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ss IGlycWZsYWdzKTsKPj4gQEAgLTMwNDYsNyArMzA0Niw3IEBAIHN0YXRpYyB2b2lkIGlieF9pcnFf cHJlX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAgc3RhdGljIHZvaWQg Z2VuNV9ndF9pcnFfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAg IHsKPj4gICAJR0VOM19JUlFfUkVTRVQoR1QpOwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDYpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKQo+PiAgIAkJR0VOM19JUlFf UkVTRVQoR0VONl9QTSk7Cj4+ICAgfQo+PiAgIAo+PiBAQCAtMzMzMCwxMiArMzMzMCwxMiBAQCBz dGF0aWMgdm9pZCBpbGtfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4+ICAgewo+PiAgIAl1MzIgaG90cGx1Z19pcnFzLCBlbmFibGVkX2lycXM7Cj4+ICAg Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+PiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA4KSkgewo+PiAgIAkJaG90cGx1Z19pcnFzID0gR0VOOF9QT1JUX0RQX0FfSE9U UExVRzsKPj4gICAJCWVuYWJsZWRfaXJxcyA9IGludGVsX2hwZF9lbmFibGVkX2lycXMoZGV2X3By aXYsIGhwZF9iZHcpOwo+PiAgIAo+PiAgIAkJYmR3X3VwZGF0ZV9wb3J0X2lycShkZXZfcHJpdiwg aG90cGx1Z19pcnFzLCBlbmFibGVkX2lycXMpOwo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA3KSB7Cj4+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA3KSkg ewo+PiAgIAkJaG90cGx1Z19pcnFzID0gREVfRFBfQV9IT1RQTFVHX0lWQjsKPj4gICAJCWVuYWJs ZWRfaXJxcyA9IGludGVsX2hwZF9lbmFibGVkX2lycXMoZGV2X3ByaXYsIGhwZF9pdmIpOwo+PiAg IAo+PiBAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgc3RhdGljIHZvaWQgZ2VuNV9ndF9pcnFfcG9zdGlu c3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gICAKPj4gICAJR0VOM19JUlFfSU5JVChH VCwgZGV2X3ByaXYtPmd0X2lycV9tYXNrLCBndF9pcnFzKTsKPj4gICAKPj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA2KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKSB7 Cj4+ICAgCQkvKgo+PiAgIAkJICogUlBTIGludGVycnVwdHMgd2lsbCBnZXQgZW5hYmxlZC9kaXNh YmxlZCBvbiBkZW1hbmQgd2hlbiBSUFMKPj4gICAJCSAqIGl0c2VsZiBpcyBlbmFibGVkL2Rpc2Fi bGVkLgo+PiBAQCAtMzQ2OCw3ICszNDY4LDcgQEAgc3RhdGljIGludCBpcm9ubGFrZV9pcnFfcG9z dGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+PiAgIAl1MzIgZGlzcGxheV9tYXNrLCBl eHRyYV9tYXNrOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKPj4g KwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNykpIHsKPj4gICAJCWRpc3BsYXlfbWFzayA9IChE RV9NQVNURVJfSVJRX0NPTlRST0wgfCBERV9HU0VfSVZCIHwKPj4gICAJCQkJREVfUENIX0VWRU5U X0lWQiB8IERFX0FVWF9DSEFOTkVMX0FfSVZCKTsKPj4gICAJCWV4dHJhX21hc2sgPSAoREVfUElQ RUNfVkJMQU5LX0lWQiB8IERFX1BJUEVCX1ZCTEFOS19JVkIgfAo+PiBAQCAtMzU5Niw3ICszNTk2 LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9kZV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAl1MzIgZGVfbWlzY19tYXNrZWQgPSBHRU44X0RFX01J U0NfR1NFOwo+PiAgIAllbnVtIHBpcGUgcGlwZTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4+ICAg CQlkZV9waXBlX21hc2tlZCB8PSBHRU45X0RFX1BJUEVfSVJRX0ZBVUxUX0VSUk9SUzsKPj4gICAJ CWRlX3BvcnRfbWFza2VkIHw9IEdFTjlfQVVYX0NIQU5ORUxfQiB8IEdFTjlfQVVYX0NIQU5ORUxf QyB8Cj4+ICAgCQkJCSAgR0VOOV9BVVhfQ0hBTk5FTF9EOwo+PiBAQCAtNDA0OCwxNiArNDA0OCwx NiBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4gICAJICoKPj4gICAJICogVE9ETzogdmVyaWZ5IGlmIHRoaXMgY2FuIGJlIHJlcHJvZHVj ZWQgb24gVkxWLENIVi4KPj4gICAJICovCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0g NykKPj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNykpCj4+ICAgCQlycHMtPnBtX2ludHJt c2tfbWJ6IHw9IEdFTjZfUE1fUlBfVVBfRUlfRVhQSVJFRDsKPj4gICAKPj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA4KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4KSkKPj4g ICAJCXJwcy0+cG1faW50cm1za19tYnogfD0gR0VOOF9QTUlOVFJfRElTQUJMRV9SRURJUkVDVF9U T19HVUM7Cj4+ICAgCj4+ICAgCWlmIChJU19HRU4yKGRldl9wcml2KSkgewo+PiAgIAkJLyogR2Vu MiBkb2Vzbid0IGhhdmUgYSBoYXJkd2FyZSBmcmFtZSBjb3VudGVyICovCj4+ICAgCQlkZXYtPm1h eF92YmxhbmtfY291bnQgPSAwOwo+PiAtCX0gZWxzZSBpZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPj4gKwl9IGVsc2UgaWYgKElTX0c0WChkZXZfcHJp dikgfHwgSVNfR0VOX0dURShkZXZfcHJpdiwgNSkpIHsKPj4gICAJCWRldi0+bWF4X3ZibGFua19j b3VudCA9IDB4ZmZmZmZmZmY7IC8qIGZ1bGwgMzIgYml0IGNvdW50ZXIgKi8KPj4gICAJCWRldi0+ ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIgPSBnNHhfZ2V0X3ZibGFua19jb3VudGVyOwo+PiAg IAl9IGVsc2Ugewo+PiBAQCAtNDEwNCw3ICs0MTA0LDcgQEAgdm9pZCBpbnRlbF9pcnFfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCQlkZXYtPmRyaXZlci0+ZW5h YmxlX3ZibGFuayA9IGk5NjVfZW5hYmxlX3ZibGFuazsKPj4gICAJCWRldi0+ZHJpdmVyLT5kaXNh YmxlX3ZibGFuayA9IGk5NjVfZGlzYWJsZV92Ymxhbms7Cj4+ICAgCQlkZXZfcHJpdi0+ZGlzcGxh eS5ocGRfaXJxX3NldHVwID0gaTkxNV9ocGRfaXJxX3NldHVwOwo+PiAtCX0gZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9w cml2LCA4KSkgewo+PiAgIAkJZGV2LT5kcml2ZXItPmlycV9oYW5kbGVyID0gZ2VuOF9pcnFfaGFu ZGxlcjsKPj4gICAJCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFsbCA9IGdlbjhfaXJxX3Jlc2V0 Owo+PiAgIAkJZGV2LT5kcml2ZXItPmlycV9wb3N0aW5zdGFsbCA9IGdlbjhfaXJxX3Bvc3RpbnN0 YWxsOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+PiBpbmRleCBmMGNmZGVjZTE0YWUuLmQz MTYwNWViYWQ2OSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPj4gQEAgLTMyNTMs NyArMzI1Myw3IEBAIGludCBpOTE1X3BlcmZfYWRkX2NvbmZpZ19pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAo+PiAgIAkJZ290byByZWdfZXJyOwo+PiAgIAl9Cj4+ICAg Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA4KSB7Cj4+ICsJaWYgKElTX0dFTl9MVChk ZXZfcHJpdiwgOCkpIHsKPj4gICAJCWlmIChhcmdzLT5uX2ZsZXhfcmVncyAhPSAwKSB7Cj4+ICAg CQkJZXJyID0gLUVJTlZBTDsKPj4gICAJCQlnb3RvIHJlZ19lcnI7Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9wbXUuYwo+PiBpbmRleCBhMGY1NjkyNTUzMmUuLjdhOTlhMmU3ZWVkYSAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BtdS5jCj4+IEBAIC0zMTksNyArMzE5LDcgQEAgZW5naW5lX2V2ZW50X3N0 YXR1cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ICAgCWNhc2UgSTkxNV9TQU1Q TEVfV0FJVDoKPj4gICAJCWJyZWFrOwo+PiAgIAljYXNlIEk5MTVfU0FNUExFX1NFTUE6Cj4+IC0J CWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDYpCj4+ICsJCWlmIChJU19HRU5fTFQoZW5n aW5lLT5pOTE1LCA2KSkKPj4gICAJCQlyZXR1cm4gLUVOT0RFVjsKPj4gICAJCWJyZWFrOwo+PiAg IAlkZWZhdWx0Ogo+PiBAQCAtMzM5LDcgKzMzOSw3IEBAIGNvbmZpZ19zdGF0dXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU2NCBjb25maWcpCj4+ICAgCQkJcmV0dXJuIC1FTk9ERVY7 Cj4+ICAgCQkvKiBGYWxsLXRocm91Z2guICovCj4+ICAgCWNhc2UgSTkxNV9QTVVfUkVRVUVTVEVE X0ZSRVFVRU5DWToKPj4gLQkJaWYgKElOVEVMX0dFTihpOTE1KSA8IDYpCj4+ICsJCWlmIChJU19H RU5fTFQoaTkxNSwgNikpCj4+ICAgCQkJcmV0dXJuIC1FTk9ERVY7Cj4+ICAgCQlicmVhazsKPj4g ICAJY2FzZSBJOTE1X1BNVV9JTlRFUlJVUFRTOgo+PiBAQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9p ZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPj4gICB7 Cj4+ICAgCWludCByZXQ7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA8PSAyKSB7Cj4+ ICsJaWYgKElTX0dFTl9MVEUoaTkxNSwgMikpIHsKPj4gICAJCURSTV9JTkZPKCJQTVUgbm90IHN1 cHBvcnRlZCBmb3IgdGhpcyBHUFUuIik7Cj4+ICAgCQlyZXR1cm47Cj4+ICAgCX0KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4+IGluZGV4IGU5Yzc5YjU2MDgyMy4uZmQzOTQ4ZjFkNDRhIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gQEAgLTM3OTIsNyArMzc5Miw3IEBAIGVudW0g aTkxNV9wb3dlcl93ZWxsX2lkIHsKPj4gICAjZGVmaW5lIElOVEVSVkFMXzFfMjhfVVModXMpCXJv dW5kdXAoKCh1cykgKiAxMDApID4+IDcsIDI1KQo+PiAgICNkZWZpbmUgSU5URVJWQUxfMV8zM19V Uyh1cykJKCgodXMpICogMykgICA+PiAyKQo+PiAgICNkZWZpbmUgSU5URVJWQUxfMF84MzNfVVMo dXMpCSgoKHVzKSAqIDYpIC8gNSkKPj4gLSNkZWZpbmUgR1RfSU5URVJWQUxfRlJPTV9VUyhkZXZf cHJpdiwgdXMpIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgPyBcCj4+ICsjZGVmaW5lIEdUX0lO VEVSVkFMX0ZST01fVVMoZGV2X3ByaXYsIHVzKSAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkgPyBc Cj4+ICAgCQkJCShJU19HRU45X0xQKGRldl9wcml2KSA/IFwKPj4gICAJCQkJSU5URVJWQUxfMF84 MzNfVVModXMpIDogXAo+PiAgIAkJCQlJTlRFUlZBTF8xXzMzX1VTKHVzKSkgOiBcCj4+IEBAIC0z ODAxLDcgKzM4MDEsNyBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCB7Cj4+ICAgI2RlZmluZSBJ TlRFUlZBTF8xXzI4X1RPX1VTKGludGVydmFsKSAgKCgoaW50ZXJ2YWwpIDw8IDcpIC8gMTAwKQo+ PiAgICNkZWZpbmUgSU5URVJWQUxfMV8zM19UT19VUyhpbnRlcnZhbCkgICgoKGludGVydmFsKSA8 PCAyKSAvIDMpCj4+ICAgI2RlZmluZSBJTlRFUlZBTF8wXzgzM19UT19VUyhpbnRlcnZhbCkgKCgo aW50ZXJ2YWwpICogNSkgIC8gNikKPj4gLSNkZWZpbmUgR1RfUE1fSU5URVJWQUxfVE9fVVMoZGV2 X3ByaXYsIGludGVydmFsKSAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5ID8gXAo+PiArI2RlZmlu ZSBHVF9QTV9JTlRFUlZBTF9UT19VUyhkZXZfcHJpdiwgaW50ZXJ2YWwpIChJU19HRU5fR1RFKGRl dl9wcml2LCA5KSA/IFwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSVNfR0VOOV9M UChkZXZfcHJpdikgPyBcCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URVJWQUxf MF84MzNfVE9fVVMoaW50ZXJ2YWwpIDogXAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElOVEVSVkFMXzFfMzNfVE9fVVMoaW50ZXJ2YWwpKSA6IFwKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zdXNwZW5kLmMKPj4gaW5kZXggOGYzYWE0ZGMwYzk4Li5hZmU4ZGE0ODc2NjAgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4+IEBAIC0zMiwyNSArMzIsMjUgQEAKPj4g ICBzdGF0aWMgdm9pZCBpOTE1X3NhdmVfZGlzcGxheShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4+ICAgewo+PiAgIAkvKiBEaXNwbGF5IGFyYml0cmF0aW9uIGNvbnRyb2wgKi8K Pj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0KQo+PiArCWlmIChJU19HRU5fTFRFKGRl dl9wcml2LCA0KSkKPj4gICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVEU1BBUkIgPSBJOTE1X1JF QUQoRFNQQVJCKTsKPj4gICAKPj4gICAJLyogc2F2ZSBGQkMgaW50ZXJ2YWwgKi8KPj4gLQlpZiAo SEFTX0ZCQyhkZXZfcHJpdikgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYmICFJU19HNFgo ZGV2X3ByaXYpKQo+PiArCWlmIChIQVNfRkJDKGRldl9wcml2KSAmJiBJU19HRU5fTFRFKGRldl9w cml2LCA0KSAmJiAhSVNfRzRYKGRldl9wcml2KSkKPj4gICAJCWRldl9wcml2LT5yZWdmaWxlLnNh dmVGQkNfQ09OVFJPTCA9IEk5MTVfUkVBRChGQkNfQ09OVFJPTCk7Cj4+ICAgfQo+PiAgIAo+PiAg IHN0YXRpYyB2b2lkIGk5MTVfcmVzdG9yZV9kaXNwbGF5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4gICB7Cj4+ICAgCS8qIERpc3BsYXkgYXJiaXRyYXRpb24gKi8KPj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0KQo+PiArCWlmIChJU19HRU5fTFRFKGRldl9wcml2 LCA0KSkKPj4gICAJCUk5MTVfV1JJVEUoRFNQQVJCLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlRFNQ QVJCKTsKPj4gICAKPj4gICAJLyogb25seSByZXN0b3JlIEZCQyBpbmZvIG9uIHRoZSBwbGF0Zm9y bSB0aGF0IHN1cHBvcnRzIEZCQyovCj4+ICAgCWludGVsX2ZiY19nbG9iYWxfZGlzYWJsZShkZXZf cHJpdik7Cj4+ICAgCj4+ICAgCS8qIHJlc3RvcmUgRkJDIGludGVydmFsICovCj4+IC0JaWYgKEhB U19GQkMoZGV2X3ByaXYpICYmIElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCAmJiAhSVNfRzRYKGRl dl9wcml2KSkKPj4gKwlpZiAoSEFTX0ZCQyhkZXZfcHJpdikgJiYgSVNfR0VOX0xURShkZXZfcHJp diwgNCkgJiYgIUlTX0c0WChkZXZfcHJpdikpCj4+ICAgCQlJOTE1X1dSSVRFKEZCQ19DT05UUk9M LCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlRkJDX0NPTlRST0wpOwo+PiAgIAo+PiAgIAlpOTE1X3Jl ZGlzYWJsZV92Z2EoZGV2X3ByaXYpOwo+PiBAQCAtNzAsNyArNzAsNyBAQCBpbnQgaTkxNV9zYXZl X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAJCQkJICAgICAm ZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUdDREdNQlVTKTsKPj4gICAKPj4gICAJLyogQ2FjaGUgbW9k ZSBzdGF0ZSAqLwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNykKPj4gKwlpZiAoSVNf R0VOX0xUKGRldl9wcml2LCA3KSkKPj4gICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVDQUNIRV9N T0RFXzAgPSBJOTE1X1JFQUQoQ0FDSEVfTU9ERV8wKTsKPj4gICAKPj4gICAJLyogTWVtb3J5IEFy Yml0cmF0aW9uIHN0YXRlICovCj4+IEBAIC0xMTQsNyArMTE0LDcgQEAgaW50IGk5MTVfcmVzdG9y ZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCWk5MTVfcmVz dG9yZV9kaXNwbGF5KGRldl9wcml2KTsKPj4gICAKPj4gICAJLyogQ2FjaGUgbW9kZSBzdGF0ZSAq Lwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNykKPj4gKwlpZiAoSVNfR0VOX0xUKGRl dl9wcml2LCA3KSkKPj4gICAJCUk5MTVfV1JJVEUoQ0FDSEVfTU9ERV8wLCBkZXZfcHJpdi0+cmVn ZmlsZS5zYXZlQ0FDSEVfTU9ERV8wIHwKPj4gICAJCQkgICAweGZmZmYwMDAwKTsKPj4gICAKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+PiBpbmRleCBjNzRhMjBiODAxODIuLjNkOGZkNTg5 MTJjYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+PiBAQCAtNjExLDcgKzYx MSw3IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4+ICAgCXJldCA9IDA7Cj4+ICAgCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8 fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4gICAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxl cygma2Rldi0+a29iaiwgdmx2X2F0dHJzKTsKPj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDYpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4+ICAgCQly ZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMoJmtkZXYtPmtvYmosIGdlbjZfYXR0cnMpOwo+PiAgIAlp ZiAocmV0KQo+PiAgIAkJRFJNX0VSUk9SKCJSUFMgc3lzZnMgc2V0dXAgZmFpbGVkXG4iKTsKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPj4gaW5kZXggMGVlMzIy NzU5OTRhLi5lNTlhNTBiNDRlODUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pY19wbGFuZS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pY19wbGFuZS5jCj4+IEBAIC0xNzIsNyArMTcyLDcgQEAgaW50IGludGVsX3BsYW5lX2F0 b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf Y3J0Y18KPj4gICAJICogWS10aWxpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBJRi1JRCBJbnRlcmxh Y2UgbW9kZSBpbgo+PiAgIAkgKiBHRU45IGFuZCBhYm92ZS4KPj4gICAJICovCj4+IC0JaWYgKHN0 YXRlLT5mYiAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYgY3J0Y19zdGF0ZS0+YmFzZS5l bmFibGUgJiYKPj4gKwlpZiAoc3RhdGUtPmZiICYmIElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpICYm IGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlICYmCj4+ICAgCSAgICBhZGp1c3RlZF9tb2RlLT5mbGFn cyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7Cj4+ICAgCQlpZiAoc3RhdGUtPmZiLT5tb2Rp ZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+PiAgIAkJICAgIHN0YXRlLT5mYi0+ bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSB7Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXVkaW8uYwo+PiBpbmRleCBmZjQ1NWM3MjQ3NzUuLmY4NzA1MTM4YmY0YSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4+IEBAIC03MDQsNyArNzA0LDcgQEAgdm9p ZCBpbnRlbF9pbml0X2F1ZGlvX2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4gICAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KSkgewo+PiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZW5h YmxlID0gaWxrX2F1ZGlvX2NvZGVjX2VuYWJsZTsKPj4gICAJCWRldl9wcml2LT5kaXNwbGF5LmF1 ZGlvX2NvZGVjX2Rpc2FibGUgPSBpbGtfYXVkaW9fY29kZWNfZGlzYWJsZTsKPj4gLQl9IGVsc2Ug aWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ PiArCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfR0VOX0dURShkZXZfcHJp diwgOCkpIHsKPj4gICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZSA9IGhz d19hdWRpb19jb2RlY19lbmFibGU7Cj4+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2Rl Y19kaXNhYmxlID0gaHN3X2F1ZGlvX2NvZGVjX2Rpc2FibGU7Cj4+ICAgCX0gZWxzZSBpZiAoSEFT X1BDSF9TUExJVChkZXZfcHJpdikpIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NkY2xrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4+ IGluZGV4IGFhYjZkMTUzOGZmZi4uYjEzZmI5OTkzNDBjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NkY2xrLmMKPj4gQEAgLTE4OTUsNyArMTg5NSw3IEBAIHZvaWQgaW50ZWxfc2V0X2Nk Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICBzdGF0aWMgaW50IGlu dGVsX3BpeGVsX3JhdGVfdG9fY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+PiAgIAkJCQkgICAgIGludCBwaXhlbF9yYXRlKQo+PiAgIHsKPj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMCkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgMTApKQo+PiAg IAkJcmV0dXJuIERJVl9ST1VORF9VUChwaXhlbF9yYXRlLCAyKTsKPj4gICAJZWxzZSBpZiAoSVNf R0VNSU5JTEFLRShkZXZfcHJpdikpCj4+ICAgCQkvKgo+PiBAQCAtMTk1MCw3ICsxOTUwLDcgQEAg aW50IGludGVsX2NydGNfY29tcHV0ZV9taW5fY2RjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4+ICAgCS8qIEFjY29yZGluZyB0byBCU3BlYywgIlRoZSBDRCBj bG9jayBmcmVxdWVuY3kgbXVzdCBiZSBhdCBsZWFzdCB0d2ljZQo+PiAgIAkgKiB0aGUgZnJlcXVl bmN5IG9mIHRoZSBBemFsaWEgQkNMSy4iIGFuZCBCQ0xLIGlzIDk2IE1IeiBieSBkZWZhdWx0Lgo+ PiAgIAkgKi8KPj4gLQlpZiAoY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvICYmIElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSkKPj4gKwlpZiAoY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvICYmIElTX0dFTl9HVEUo ZGV2X3ByaXYsIDkpKQo+PiAgIAkJbWluX2NkY2xrID0gbWF4KDIgKiA5NjAwMCwgbWluX2NkY2xr KTsKPj4gICAKPj4gICAJLyoKPj4gQEAgLTIyMjAsNyArMjIyMCw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfY29tcHV0ZV9tYXhfZG90Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK Pj4gICB7Cj4+ICAgCWludCBtYXhfY2RjbGtfZnJlcSA9IGRldl9wcml2LT5tYXhfY2RjbGtfZnJl cTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPj4gKwlpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgMTApKQo+PiAgIAkJcmV0dXJuIDIgKiBtYXhfY2RjbGtfZnJlcTsK Pj4gICAJZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4+ICAgCQkvKgo+PiBAQCAt MjIzMyw3ICsyMjMzLDcgQEAgc3RhdGljIGludCBpbnRlbF9jb21wdXRlX21heF9kb3RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAkJcmV0dXJuIG1heF9jZGNsa19m cmVxOwo+PiAgIAllbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4gICAJCXJldHVy biBtYXhfY2RjbGtfZnJlcSo5NS8xMDA7Cj4+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDQpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA0KSkKPj4gICAJCXJldHVy biAyKm1heF9jZGNsa19mcmVxKjkwLzEwMDsKPj4gICAJZWxzZQo+PiAgIAkJcmV0dXJuIG1heF9j ZGNsa19mcmVxKjkwLzEwMDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4+IGluZGV4 IGFhNjZlOTUyYTk1ZC4uMzFjOWE1YjYyMjk3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jb2xvci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NvbG9yLmMKPj4gQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfY3Nj X21hdHJpeChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+ICAgCUk5MTVfV1JJ VEUoUElQRV9DU0NfUFJFT0ZGX01FKHBpcGUpLCAwKTsKPj4gICAJSTkxNV9XUklURShQSVBFX0NT Q19QUkVPRkZfTE8ocGlwZSksIDApOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID4gNikgewo+PiArCWlmIChJU19HRU5fR1QoZGV2X3ByaXYsIDYpKSB7Cj4+ICAgCQl1aW50MTZf dCBwb3N0b2ZmID0gMDsKPj4gICAKPj4gICAJCWlmIChpbnRlbF9jcnRjX3N0YXRlLT5saW1pdGVk X2NvbG9yX3JhbmdlKQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+PiBpbmRleCAxY2Q0YTdj MjJiZDUuLjg3MTU3Njc5MDY2OCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY3J0LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPj4g QEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRfc2V0X2RwbXMoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ICAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPj4g ICAJdTMyIGFkcGE7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKPj4g KwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNSkpCj4+ICAgCQlhZHBhID0gQURQQV9IT1RQTFVH X0JJVFM7Cj4+ICAgCWVsc2UKPj4gICAJCWFkcGEgPSAwOwo+PiBAQCAtNzk5LDcgKzc5OSw3IEBA IGludGVsX2NydF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gICAJ aWYgKHJldCA+IDApIHsKPj4gICAJCWlmIChpbnRlbF9jcnRfZGV0ZWN0X2RkYyhjb25uZWN0b3Ip KQo+PiAgIAkJCXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+PiAtCQllbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKPj4gKwkJZWxzZSBpZiAoSVNfR0VOX0xUKGRl dl9wcml2LCA0KSkKPj4gICAJCQlzdGF0dXMgPSBpbnRlbF9jcnRfbG9hZF9kZXRlY3QoY3J0LAo+ PiAgIAkJCQl0b19pbnRlbF9jcnRjKGNvbm5lY3Rvci0+c3RhdGUtPmNydGMpLT5waXBlKTsKPj4g ICAJCWVsc2UgaWYgKGk5MTVfbW9kcGFyYW1zLmxvYWRfZGV0ZWN0X3Rlc3QpCj4+IEBAIC04NTQs NyArODU0LDcgQEAgdm9pZCBpbnRlbF9jcnRfcmVzZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmRldik7Cj4+ICAgCXN0cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2VuY29kZXJf dG9fY3J0KHRvX2ludGVsX2VuY29kZXIoZW5jb2RlcikpOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDUpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNSkpIHsK Pj4gICAJCXUzMiBhZHBhOwo+PiAgIAo+PiAgIAkJYWRwYSA9IEk5MTVfUkVBRChjcnQtPmFkcGFf cmVnKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPj4gaW5kZXggOGNhMzc2YWNhOGJkLi41 YWU5Y2QwMmNkMzkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4+IEBAIC0xNDU4 LDcgKzE0NTgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+PiAgIHsKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4+ICAgCj4+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPD0gOCkKPj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgOCkp Cj4+ICAgCQloc3dfZGRpX2Nsb2NrX2dldChlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Cj4+ICAgCWVs c2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+PiAgIAkJc2tsX2RkaV9jbG9ja19nZXQoZW5j b2RlciwgcGlwZV9jb25maWcpOwo+PiBAQCAtMjE1Miw3ICsyMTUyLDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfZGRpX2Nsa19zZWxlY3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ICAg Cj4+ICAgCQlJOTE1X1dSSVRFKERQTExfQ1RSTDIsIHZhbCk7Cj4+ICAgCj4+IC0JfSBlbHNlIGlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkgewo+PiArCX0gZWxzZSBpZiAoSVNfR0VOX0xUKGRl dl9wcml2LCA5KSkgewo+PiAgIAkJSTkxNV9XUklURShQT1JUX0NMS19TRUwocG9ydCksIGhzd19w bGxfdG9fZGRpX3BsbF9zZWwocGxsKSk7Cj4+ICAgCX0KPj4gICAKPj4gQEAgLTIxNzAsNyArMjE3 MCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9jbGtfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcikKPj4gICAJZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4+ICAg CQlJOTE1X1dSSVRFKERQTExfQ1RSTDIsIEk5MTVfUkVBRChEUExMX0NUUkwyKSB8Cj4+ICAgCQkJ ICAgRFBMTF9DVFJMMl9ERElfQ0xLX09GRihwb3J0KSk7Cj4+IC0JZWxzZSBpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDkpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA5KSkKPj4g ICAJCUk5MTVfV1JJVEUoUE9SVF9DTEtfU0VMKHBvcnQpLCBQT1JUX0NMS19TRUxfTk9ORSk7Cj4+ ICAgfQo+PiAgIAo+PiBAQCAtMjIwNyw3ICsyMjA3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRp X3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ICAgCWlmICgh aXNfbXN0KQo+PiAgIAkJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLCBEUk1fTU9ERV9EUE1T X09OKTsKPj4gICAJaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9kcCk7Cj4+IC0JaWYg KHBvcnQgIT0gUE9SVF9BIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwlpZiAocG9y dCAhPSBQT1JUX0EgfHwgSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4+ICAgCQlpbnRlbF9kcF9z dG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+PiAgIH0KPj4gICAKPj4gQEAgLTI0MDksNyArMjQw OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kZGlfZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4+ICAgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50 ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+PiAgIAllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBv cnQ7Cj4+ICAgCj4+IC0JaWYgKHBvcnQgPT0gUE9SVF9BICYmIElOVEVMX0dFTihkZXZfcHJpdikg PCA5KQo+PiArCWlmIChwb3J0ID09IFBPUlRfQSAmJiBJU19HRU5fTFQoZGV2X3ByaXYsIDkpKQo+ PiAgIAkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKPj4gICAKPj4gICAJaW50 ZWxfZWRwX2JhY2tsaWdodF9vbihjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4+IGluZGV4IGFlNmY1YjdiNzk3OC4uMDY4 NzA1YzkxMzMyIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZp Y2VfaW5mby5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZv LmMKPj4gQEAgLTM4MCw3ICszODAsNyBAQCBzdGF0aWMgdTMyIHJlYWRfdGltZXN0YW1wX2ZyZXF1 ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCXUzMiBmMTlfMl9t aHogPSAxOTIwMDsKPj4gICAJdTMyIGYyNF9taHogPSAyNDAwMDsKPj4gICAKPj4gLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8PSA0KSB7Cj4+ICsJaWYgKElTX0dFTl9MVEUoZGV2X3ByaXYsIDQp KSB7Cj4+ICAgCQkvKiBQUk1zIHNheToKPj4gICAJCSAqCj4+ICAgCQkgKiAgICAgIlRoZSB2YWx1 ZSBpbiB0aGlzIHJlZ2lzdGVyIGluY3JlbWVudHMgb25jZSBldmVyeSAxNgo+PiBAQCAtMzg4LDcg KzM4OCw3IEBAIHN0YXRpYyB1MzIgcmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAJCSAqICAgICAgKOKAnENMS0NGR+KAnSkgTUNI QkFSIHJlZ2lzdGVyKQo+PiAgIAkJICovCj4+ICAgCQlyZXR1cm4gZGV2X3ByaXYtPnJhd2Nsa19m cmVxIC8gMTY7Cj4+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDgpIHsKPj4g Kwl9IGVsc2UgaWYgKElTX0dFTl9MVEUoZGV2X3ByaXYsIDgpKSB7Cj4+ICAgCQkvKiBQUk1zIHNh eToKPj4gICAJCSAqCj4+ICAgCQkgKiAgICAgIlRoZSBQQ1UgVFNDIGNvdW50cyAxMG5zIGluY3Jl bWVudHM7IHRoaXMgdGltZXN0YW1wCj4+IEBAIC0zOTYsNyArMzk2LDcgQEAgc3RhdGljIHUzMiBy ZWFkX3RpbWVzdGFtcF9mcmVxdWVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+PiAgIAkJICogICAgICByb2xsaW5nIG92ZXIgZXZlcnkgMS41IGhvdXJzKS4KPj4gICAJCSAq Lwo+PiAgIAkJcmV0dXJuIGYxMl81X21oejsKPj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPD0gOSkgewo+PiArCX0gZWxzZSBpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgOSkpIHsK Pj4gICAJCXUzMiBjdGNfcmVnID0gSTkxNV9SRUFEKENUQ19NT0RFKTsKPj4gICAJCXUzMiBmcmVx ID0gMDsKPj4gICAKPj4gQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMgdTMyIHJlYWRfdGltZXN0 YW1wX2ZyZXF1ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCQl9 Cj4+ICAgCj4+ICAgCQlyZXR1cm4gZnJlcTsKPj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPD0gMTApIHsKPj4gKwl9IGVsc2UgaWYgKElTX0dFTl9MVEUoZGV2X3ByaXYsIDEwKSkg ewo+PiAgIAkJdTMyIGN0Y19yZWcgPSBJOTE1X1JFQUQoQ1RDX01PREUpOwo+PiAgIAkJdTMyIGZy ZXEgPSAwOwo+PiAgIAkJdTMyIHJwbV9jb25maWdfcmVnID0gMDsKPj4gQEAgLTQ4MCw3ICs0ODAs NyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGV2 aWNlX2luZm8gKmluZm8pCj4+ICAgCQljb250YWluZXJfb2YoaW5mbywgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUsIGluZm8pOwo+PiAgIAllbnVtIHBpcGUgcGlwZTsKPj4gICAKPj4gLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMCkgewo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCAx MCkpIHsKPj4gICAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4+ICAgCQkJaW5mby0+ bnVtX3NjYWxlcnNbcGlwZV0gPSAyOwo+PiAgIAl9IGVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYp KSB7Cj4+IEBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1l X2luaXQoc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbmZvKQo+PiAgIAl9IGVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4+ICAg CQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+PiAgIAkJCWluZm8tPm51bV9zcHJpdGVz W3BpcGVdID0gMjsKPj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSB8fCBJ U19HNFgoZGV2X3ByaXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA1 KSB8fCBJU19HNFgoZGV2X3ByaXYpKSB7Cj4+ICAgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBw aXBlKQo+PiAgIAkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMTsKPj4gICAJfQo+PiBAQCAt NTgwLDcgKzU4MCw3IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVj dCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbykKPj4gICAJCWJyb2Fkd2VsbF9zc2V1X2luZm9faW5p dChkZXZfcHJpdik7Cj4+ICAgCWVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYpKQo+PiAgIAkJZ2Vu OV9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSAxMCkKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCAxMCkpCj4+ICAg CQlnZW4xMF9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4+ICAgCj4+ICAgCS8qIEluaXRpYWxp emUgY29tbWFuZCBzdHJlYW0gdGltZXN0YW1wIGZyZXF1ZW5jeSAqLwo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4+IGluZGV4IDBkNTIwN2RiZmRhYy4uMDBlZmM0ZTZiN2NlIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IEBAIC0xMDQ0LDcgKzEw NDQsNyBAQCBpbnRlbF93YWl0X2Zvcl9waXBlX29mZihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhvbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPj4gICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4+ICAgCj4+ IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+PiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA0KSkgewo+PiAgIAkJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gb2xk X2NydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwo+PiAgIAkJaTkxNV9yZWdfdCByZWcgPSBQSVBF Q09ORihjcHVfdHJhbnNjb2Rlcik7Cj4+ICAgCj4+IEBAIC0xNTQyLDcgKzE1NDIsNyBAQCBzdGF0 aWMgdm9pZCBpOXh4X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAgCVBP U1RJTkdfUkVBRChyZWcpOwo+PiAgIAl1ZGVsYXkoMTUwKTsKPj4gICAKPj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA0KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKSB7 Cj4+ICAgCQlJOTE1X1dSSVRFKERQTExfTUQoY3J0Yy0+cGlwZSksCj4+ICAgCQkJICAgY3J0Y19z dGF0ZS0+ZHBsbF9od19zdGF0ZS5kcGxsX21kKTsKPj4gICAJfSBlbHNlIHsKPj4gQEAgLTIwMjks MTIgKzIwMjksMTIgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9jdXJzb3JfYWxpZ25tZW50 KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHIKPj4gICAKPj4gICBzdGF0aWMg dW5zaWduZWQgaW50IGludGVsX2xpbmVhcl9hbGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4gICAJCXJldHVybiAyNTYg KiAxMDI0Owo+PiAgIAllbHNlIGlmIChJU19JOTY1RyhkZXZfcHJpdikgfHwgSVNfSTk2NUdNKGRl dl9wcml2KSB8fAo+PiAgIAkJIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpKQo+PiAgIAkJcmV0dXJuIDEyOCAqIDEwMjQ7Cj4+IC0JZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA0KQo+PiArCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDQpKQo+PiAgIAkJcmV0dXJuIDQgKiAxMDI0Owo+PiAgIAllbHNlCj4+ICAgCQlyZXR1cm4gMDsK Pj4gQEAgLTIwNTMsNyArMjA1Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfc3VyZl9h bGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4+ICAgCWNhc2UgRFJN X0ZPUk1BVF9NT0RfTElORUFSOgo+PiAgIAkJcmV0dXJuIGludGVsX2xpbmVhcl9hbGlnbm1lbnQo ZGV2X3ByaXYpOwo+PiAgIAljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgo+PiAtCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCQlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwg OSkpCj4+ICAgCQkJcmV0dXJuIDI1NiAqIDEwMjQ7Cj4+ICAgCQlyZXR1cm4gMDsKPj4gICAJY2Fz ZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6Cj4+IEBAIC0zMTYzLDcgKzMxNjMsNyBAQCBz dGF0aWMgdTMyIGk5eHhfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+PiAgIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxM KGRldl9wcml2KSkKPj4gICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1BJUEVfQ1NDX0VOQUJMRTsK Pj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpCj4+ICsJaWYgKElTX0dFTl9M VChkZXZfcHJpdiwgNCkpCj4+ICAgCQlkc3BjbnRyIHw9IERJU1BQTEFORV9TRUxfUElQRShjcnRj LT5waXBlKTsKPj4gICAKPj4gICAJc3dpdGNoIChmYi0+Zm9ybWF0LT5mb3JtYXQpIHsKPj4gQEAg LTMxOTMsNyArMzE5Myw3IEBAIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4+ICAgCQlyZXR1cm4gMDsKPj4gICAJfQo+ PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQgJiYKPj4gKwlpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgNCkgJiYKPj4gICAJICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1B VF9NT0RfWF9USUxFRCkKPj4gICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1RJTEVEOwo+PiAgIAo+ PiBAQCAtMzIxNiw3ICszMjE2LDcgQEAgaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+PiAgIAo+PiAgIAlpbnRlbF9hZGRf ZmJfb2Zmc2V0cygmc3JjX3gsICZzcmNfeSwgcGxhbmVfc3RhdGUsIDApOwo+PiAgIAo+PiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDQpKQo+PiAgIAkJb2Zmc2V0ID0gaW50ZWxfY29tcHV0ZV90aWxlX29mZnNldCgmc3JjX3gsICZz cmNfeSwKPj4gICAJCQkJCQkgICBwbGFuZV9zdGF0ZSwgMCk7Cj4+ICAgCWVsc2UKPj4gQEAgLTMy NjAsMTQgKzMyNjAsMTQgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKPj4gICAKPj4gICAJbGluZWFyX29mZnNldCA9IGludGVsX2ZiX3h5 X3RvX2xpbmVhcih4LCB5LCBwbGFuZV9zdGF0ZSwgMCk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNCkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpCj4+ICAg CQlkc3BhZGRyX29mZnNldCA9IHBsYW5lX3N0YXRlLT5tYWluLm9mZnNldDsKPj4gICAJZWxzZQo+ PiAgIAkJZHNwYWRkcl9vZmZzZXQgPSBsaW5lYXJfb2Zmc2V0Owo+PiAgIAo+PiAgIAlzcGluX2xv Y2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7Cj4+ICAgCj4+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7Cj4+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJp diwgNCkpIHsKPj4gICAJCS8qIHBpcGVzcmMgYW5kIGRzcHNpemUgY29udHJvbCB0aGUgc2l6ZSB0 aGF0IGlzIHNjYWxlZCBmcm9tLAo+PiAgIAkJICogd2hpY2ggc2hvdWxkIGFsd2F5cyBiZSB0aGUg dXNlcidzIHJlcXVlc3RlZCBzaXplLgo+PiAgIAkJICovCj4+IEBAIC0zMjkxLDcgKzMyOTEsNyBA QCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l LAo+PiAgIAkJCSAgICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArCj4+ ICAgCQkJICAgICAgZHNwYWRkcl9vZmZzZXQpOwo+PiAgIAkJSTkxNV9XUklURV9GVyhEU1BPRkZT RVQoaTl4eF9wbGFuZSksICh5IDw8IDE2KSB8IHgpOwo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA0KSB7Cj4+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0 KSkgewo+PiAgIAkJSTkxNV9XUklURV9GVyhEU1BTVVJGKGk5eHhfcGxhbmUpLAo+PiAgIAkJCSAg ICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArCj4+ICAgCQkJICAgICAg ZHNwYWRkcl9vZmZzZXQpOwo+PiBAQCAtMzMxNyw3ICszMzE3LDcgQEAgc3RhdGljIHZvaWQgaTl4 eF9kaXNhYmxlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4+ICAgCXNwaW5fbG9j a19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPj4gICAKPj4gICAJ STkxNV9XUklURV9GVyhEU1BDTlRSKGk5eHhfcGxhbmUpLCAwKTsKPj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA0KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkKPj4gICAJ CUk5MTVfV1JJVEVfRlcoRFNQU1VSRihpOXh4X3BsYW5lKSwgMCk7Cj4+ICAgCWVsc2UKPj4gICAJ CUk5MTVfV1JJVEVfRlcoRFNQQUREUihpOXh4X3BsYW5lKSwgMCk7Cj4+IEBAIC0zNTM4LDcgKzM1 MzgsNyBAQCB1MzIgc2tsX3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPj4gICAKPj4gICAJcGxhbmVfY3RsID0gUExBTkVfQ1RMX0VOQUJMRTsKPj4g ICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDEwICYmICFJU19HRU1JTklMQUtFKGRl dl9wcml2KSkgewo+PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDEwKSAmJiAhSVNfR0VNSU5J TEFLRShkZXZfcHJpdikpIHsKPj4gICAJCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX2FscGhh KGZiLT5mb3JtYXQtPmZvcm1hdCk7Cj4+ICAgCQlwbGFuZV9jdGwgfD0KPj4gICAJCQlQTEFORV9D VExfUElQRV9HQU1NQV9FTkFCTEUgfAo+PiBAQCAtMzU1MCw3ICszNTUwLDcgQEAgdTMyIHNrbF9w bGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4+ICAg CXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX3RpbGluZyhmYi0+bW9kaWZpZXIpOwo+PiAgIAlw bGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF9yb3RhdGUocm90YXRpb24gJiBEUk1fTU9ERV9ST1RB VEVfTUFTSyk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApCj4+ICsJ aWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDEwKSkKPj4gICAJCXBsYW5lX2N0bCB8PSBjbmxfcGxh bmVfY3RsX2ZsaXAocm90YXRpb24gJgo+PiAgIAkJCQkJCURSTV9NT0RFX1JFRkxFQ1RfTUFTSyk7 Cj4+ICAgCj4+IEBAIC0zNjE4LDcgKzM2MTgsNyBAQCBfX2ludGVsX2Rpc3BsYXlfcmVzdW1lKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAgc3RhdGljIGJvb2wgZ3B1X3Jlc2V0X2Nsb2JiZXJz X2Rpc3BsYXkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4gICAJ cmV0dXJuIGludGVsX2hhc19ncHVfcmVzZXQoZGV2X3ByaXYpICYmCj4+IC0JCUlOVEVMX0dFTihk ZXZfcHJpdikgPCA1ICYmICFJU19HNFgoZGV2X3ByaXYpOwo+PiArCQlJU19HRU5fTFQoZGV2X3By aXYsIDUpICYmICFJU19HNFgoZGV2X3ByaXYpOwo+PiAgIH0KPj4gICAKPj4gICB2b2lkIGludGVs X3ByZXBhcmVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiBAQCAt Mzc1Nyw3ICszNzU3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX3BpcGVfY29uZmlnKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGEKPj4gICAJCSAgIChuZXdf Y3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpKTsKPj4gICAKPj4gICAJLyogb24gc2t5bGFrZSB0 aGlzIGlzIGRvbmUgYnkgZGV0YWNoaW5nIHNjYWxlcnMgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4+ICAg CQlza2xfZGV0YWNoX3NjYWxlcnMoY3J0Yyk7Cj4+ICAgCj4+ICAgCQlpZiAobmV3X2NydGNfc3Rh dGUtPnBjaF9wZml0LmVuYWJsZWQpCj4+IEBAIC00NjgzLDcgKzQ2ODMsNyBAQCBza2xfdXBkYXRl X3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgYm9vbCBmb3JjZV9k ZXRhY2gsCj4+ICAgCSAqIE9uY2UgTlYxMiBpcyBlbmFibGVkLCBoYW5kbGUgaXQgaGVyZSB3aGls ZSBhbGxvY2F0aW5nIHNjYWxlcgo+PiAgIAkgKiBmb3IgTlYxMi4KPj4gICAJICovCj4+IC0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSAmJgo+ PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSAmJiBjcnRjX3N0YXRlLT5iYXNlLmVuYWJs ZSAmJgo+PiAgIAkgICAgbmVlZF9zY2FsaW5nICYmIGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJN X01PREVfRkxBR19JTlRFUkxBQ0UpIHsKPj4gICAJCURSTV9ERUJVR19LTVMoIlBpcGUvUGxhbmUg c2NhbGluZyBub3Qgc3VwcG9ydGVkIHdpdGggSUYtSUQgbW9kZVxuIik7Cj4+ICAgCQlyZXR1cm4g LUVJTlZBTDsKPj4gQEAgLTU0NzcsNyArNTQ3Nyw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0 Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+PiAgIAlpZiAo cHNsX2Nsa2dhdGVfd2EpCj4+ICAgCQlnbGtfcGlwZV9zY2FsZXJfY2xvY2tfZ2F0aW5nX3dhKGRl dl9wcml2LCBwaXBlLCB0cnVlKTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4gICAJCXNreWxha2VfcGZp dF9lbmFibGUoaW50ZWxfY3J0Yyk7Cj4+ICAgCWVsc2UKPj4gICAJCWlyb25sYWtlX3BmaXRfZW5h YmxlKGludGVsX2NydGMpOwo+PiBAQCAtNTYyMyw3ICs1NjIzLDcgQEAgc3RhdGljIHZvaWQgaGFz d2VsbF9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRl LAo+PiAgIAlpZiAoIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVyKSkKPj4gICAJCWlu dGVsX2RkaV9kaXNhYmxlX3RyYW5zY29kZXJfZnVuYyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIp Owo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4+ICsJaWYgKElTX0dF Tl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJc2t5bGFrZV9zY2FsZXJfZGlzYWJsZShpbnRlbF9j cnRjKTsKPj4gICAJZWxzZQo+PiAgIAkJaXJvbmxha2VfcGZpdF9kaXNhYmxlKGludGVsX2NydGMs IGZhbHNlKTsKPj4gQEAgLTYzMDcsNyArNjMwNyw3IEBAIHN0YXRpYyBib29sIGludGVsX2NydGNf c3VwcG9ydHNfZG91YmxlX3dpZGUoY29uc3Qgc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+ICAg CWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOwo+PiAgIAo+PiAgIAkvKiBHREcgZG91YmxlIHdpZGUgb24gZWl0aGVyIHBpcGUs IG90aGVyd2lzZSBwaXBlIEEgb25seSAqLwo+PiAtCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNCAmJgo+PiArCXJldHVybiBJU19HRU5fTFQoZGV2X3ByaXYsIDQpICYmCj4+ICAgCQkoY3J0 Yy0+cGlwZSA9PSBQSVBFX0EgfHwgSVNfSTkxNUcoZGV2X3ByaXYpKTsKPj4gICB9Cj4+ICAgCj4+ IEBAIC02MzY3LDcgKzYzNjcsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfY29tcHV0ZV9jb25m aWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7 Cj4+ICAgCWludCBjbG9ja19saW1pdCA9IGRldl9wcml2LT5tYXhfZG90Y2xrX2ZyZXE7Cj4+ICAg Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7Cj4+ICsJaWYgKElTX0dFTl9MVChk ZXZfcHJpdiwgNCkpIHsKPj4gICAJCWNsb2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9jZGNsa19m cmVxICogOSAvIDEwOwo+PiAgIAo+PiAgIAkJLyoKPj4gQEAgLTY0MjAsNyArNjQyMCw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPj4gICAJLyogQ2FudGlnYSsgY2Fubm90IGhhbmRsZSBtb2RlcyB3aXRoIGEgaHN5bmMgZnJv bnQgcG9yY2ggb2YgMC4KPj4gICAJICogV2FQcnVuZU1vZGVXaXRoSW5jb3JyZWN0SHN5bmNPZmZz ZXQ6Y3RnLGVsayxpbGssc25iLGl2Yix2bHYsaHN3Lgo+PiAgIAkgKi8KPj4gLQlpZiAoKElOVEVM X0dFTihkZXZfcHJpdikgPiA0IHx8IElTX0c0WChkZXZfcHJpdikpICYmCj4+ICsJaWYgKChJU19H RU5fR1QoZGV2X3ByaXYsIDQpIHx8IElTX0c0WChkZXZfcHJpdikpICYmCj4+ICAgCQlhZGp1c3Rl ZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID09IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkp Cj4+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPj4gICAKPj4gQEAgLTY1NzcsNyArNjU3Nyw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4+ICAgCWludCBwaXBlID0gY3J0Yy0+cGlwZTsKPj4gICAJZW51bSB0cmFuc2NvZGVy IHRyYW5zY29kZXIgPSBjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwo+PiAgIAo+PiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgNSkpIHsKPj4gICAJCUk5MTVfV1JJVEUoUElQRV9EQVRBX00xKHRyYW5zY29kZXIpLCBUVV9T SVpFKG1fbi0+dHUpIHwgbV9uLT5nbWNoX20pOwo+PiAgIAkJSTkxNV9XUklURShQSVBFX0RBVEFf TjEodHJhbnNjb2RlciksIG1fbi0+Z21jaF9uKTsKPj4gICAJCUk5MTVfV1JJVEUoUElQRV9MSU5L X00xKHRyYW5zY29kZXIpLCBtX24tPmxpbmtfbSk7Cj4+IEBAIC02NTg3LDcgKzY1ODcsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+PiAgIAkJICogcmVnaXN0ZXJzIGFyZSBub3QgdW5uZWNlc3NhcmlseSBhY2Nlc3Nl ZCkuCj4+ICAgCQkgKi8KPj4gICAJCWlmIChtMl9uMiAmJiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikgfHwKPj4gLQkJICAgIElOVEVMX0dFTihkZXZfcHJpdikgPCA4KSAmJiBjcnRjLT5jb25maWct Pmhhc19kcnJzKSB7Cj4+ICsJCSAgICBJU19HRU5fTFQoZGV2X3ByaXYsIDgpKSAmJiBjcnRjLT5j b25maWctPmhhc19kcnJzKSB7Cj4+ICAgCQkJSTkxNV9XUklURShQSVBFX0RBVEFfTTIodHJhbnNj b2RlciksCj4+ICAgCQkJCQlUVV9TSVpFKG0yX24yLT50dSkgfCBtMl9uMi0+Z21jaF9tKTsKPj4g ICAJCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9OMih0cmFuc2NvZGVyKSwgbTJfbjItPmdtY2hfbik7 Cj4+IEBAIC02OTcxLDcgKzY5NzEsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NvbXB1dGVfZHBsbChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gICAJCWRwbGwgfD0gRFBMTEJfTFZEU19QMl9DTE9D S19ESVZfMTQ7Cj4+ICAgCQlicmVhazsKPj4gICAJfQo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDQpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+PiAgIAkJZHBsbCB8 PSAoNiA8PCBQTExfTE9BRF9QVUxTRV9QSEFTRV9TSElGVCk7Cj4+ICAgCj4+ICAgCWlmIChjcnRj X3N0YXRlLT5zZHZvX3R2X2Nsb2NrKQo+PiBAQCAtNjk4NSw3ICs2OTg1LDcgQEAgc3RhdGljIHZv aWQgaTl4eF9jb21wdXRlX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAgCWRwbGwg fD0gRFBMTF9WQ09fRU5BQkxFOwo+PiAgIAljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLmRwbGwg PSBkcGxsOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPj4gKwlp ZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpIHsKPj4gICAJCXUzMiBkcGxsX21kID0gKGNydGNf c3RhdGUtPnBpeGVsX211bHRpcGxpZXIgLSAxKQo+PiAgIAkJCTw8IERQTExfTURfVURJX01VTFRJ UExJRVJfU0hJRlQ7Cj4+ICAgCQljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLmRwbGxfbWQgPSBk cGxsX21kOwo+PiBAQCAtNzA1OCw3ICs3MDU4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3Bp cGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPj4gICAJCQl2c3luY3No aWZ0ICs9IGFkanVzdGVkX21vZGUtPmNydGNfaHRvdGFsOwo+PiAgIAl9Cj4+ICAgCj4+IC0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPiAzKQo+PiArCWlmIChJU19HRU5fR1QoZGV2X3ByaXYsIDMp KQo+PiAgIAkJSTkxNV9XUklURShWU1lOQ1NISUZUKGNwdV90cmFuc2NvZGVyKSwgdnN5bmNzaGlm dCk7Cj4+ICAgCj4+ICAgCUk5MTVfV1JJVEUoSFRPVEFMKGNwdV90cmFuc2NvZGVyKSwKPj4gQEAg LTcyMTcsNyArNzIxNyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3BpcGVjb25mKHN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjKQo+PiAgIAl9Cj4+ICAgCj4+ICAgCWlmIChpbnRlbF9jcnRj LT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJM QUNFKSB7Cj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCB8fAo+PiArCQlpZiAoSVNf R0VOX0xUKGRldl9wcml2LCA0KSB8fAo+PiAgIAkJICAgIGludGVsX2NydGNfaGFzX3R5cGUoaW50 ZWxfY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfU0RWTykpCj4+ICAgCQkJcGlwZWNvbmYgfD0g UElQRUNPTkZfSU5URVJMQUNFX1dfRklFTERfSU5ESUNBVElPTjsKPj4gICAJCWVsc2UKPj4gQEAg LTc0MjgsNyArNzQyOCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZ2V0X3BmaXRfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPj4gICAJdWludDMyX3QgdG1wOwo+PiAgIAo+ PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDMgJiYKPj4gKwlpZiAoSVNfR0VOX0xURShk ZXZfcHJpdiwgMykgJiYKPj4gICAJICAgIChJU19JODMwKGRldl9wcml2KSB8fCAhSVNfTU9CSUxF KGRldl9wcml2KSkpCj4+ICAgCQlyZXR1cm47Cj4+ICAgCj4+IEBAIC03NDM3LDcgKzc0MzcsNyBA QCBzdGF0aWMgdm9pZCBpOXh4X2dldF9wZml0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPj4gICAJCXJldHVybjsKPj4gICAKPj4gICAJLyogQ2hlY2sgd2hldGhlciB0aGUgcGZpdCBp cyBhdHRhY2hlZCB0byBvdXIgcGlwZS4gKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 IDQpIHsKPj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA0KSkgewo+PiAgIAkJaWYgKGNydGMt PnBpcGUgIT0gUElQRV9CKQo+PiAgIAkJCXJldHVybjsKPj4gICAJfSBlbHNlIHsKPj4gQEAgLTc1 MDYsNyArNzUwNiw3IEBAIGk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+PiAgIAo+PiAgIAl2YWwgPSBJOTE1X1JFQUQoRFNQQ05UUihpOXh4X3Bs YW5lKSk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+PiArCWlm IChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+PiAgIAkJaWYgKHZhbCAmIERJU1BQTEFORV9U SUxFRCkgewo+PiAgIAkJCXBsYW5lX2NvbmZpZy0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKPj4g ICAJCQlmYi0+bW9kaWZpZXIgPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPj4gQEAgLTc1MjAs NyArNzUyMCw3IEBAIGk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+PiAgIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxM KGRldl9wcml2KSkgewo+PiAgIAkJb2Zmc2V0ID0gSTkxNV9SRUFEKERTUE9GRlNFVChpOXh4X3Bs YW5lKSk7Cj4+ICAgCQliYXNlID0gSTkxNV9SRUFEKERTUFNVUkYoaTl4eF9wbGFuZSkpICYgMHhm ZmZmZjAwMDsKPj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+PiAr CX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpIHsKPj4gICAJCWlmIChwbGFuZV9j b25maWctPnRpbGluZykKPj4gICAJCQlvZmZzZXQgPSBJOTE1X1JFQUQoRFNQVElMRU9GRihpOXh4 X3BsYW5lKSk7Cj4+ICAgCQllbHNlCj4+IEBAIC03NjI2LDcgKzc2MjYsNyBAQCBzdGF0aWMgYm9v bCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gICAJICAg ICh0bXAgJiBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1QpKQo+PiAgIAkJcGlwZV9jb25maWct PmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNCkKPj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA0KSkKPj4gICAJCXBpcGVf Y29uZmlnLT5kb3VibGVfd2lkZSA9IHRtcCAmIFBJUEVDT05GX0RPVUJMRV9XSURFOwo+PiAgIAo+ PiAgIAlpbnRlbF9nZXRfcGlwZV90aW1pbmdzKGNydGMsIHBpcGVfY29uZmlnKTsKPj4gQEAgLTc2 MzQsNyArNzYzNCw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+PiAgIAo+PiAgIAlpOXh4X2dldF9wZml0X2NvbmZpZyhjcnRjLCBw aXBlX2NvbmZpZyk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+ PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+PiAgIAkJLyogTm8gd2F5IHRvIHJl YWQgaXQgb3V0IG9uIHBpcGVzIEIgYW5kIEMgKi8KPj4gICAJCWlmIChJU19DSEVSUllWSUVXKGRl dl9wcml2KSAmJiBjcnRjLT5waXBlICE9IFBJUEVfQSkKPj4gICAJCQl0bXAgPSBkZXZfcHJpdi0+ Y2h2X2RwbGxfbWRbY3J0Yy0+cGlwZV07Cj4+IEBAIC04MTk0LDcgKzgxOTQsNyBAQCBzdGF0aWMg dm9pZCBoYXN3ZWxsX3NldF9waXBlbWlzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+ICAgCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4gICAJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNvbmZpZyA9IGludGVsX2NydGMtPmNvbmZpZzsKPj4g ICAKPj4gLQlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkpIHsKPj4gKwlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fCBJU19HRU5fR1RFKGRl dl9wcml2LCA5KSkgewo+PiAgIAkJdTMyIHZhbCA9IDA7Cj4+ICAgCj4+ICAgCQlzd2l0Y2ggKGlu dGVsX2NydGMtPmNvbmZpZy0+cGlwZV9icHApIHsKPj4gQEAgLTg0MjUsNyArODQyNSw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX2dldF9tX24oc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwo+PiAgIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4+ICAg Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgewo+PiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA1KSkgewo+PiAgIAkJbV9uLT5saW5rX20gPSBJOTE1X1JFQUQoUElQRV9MSU5L X00xKHRyYW5zY29kZXIpKTsKPj4gICAJCW1fbi0+bGlua19uID0gSTkxNV9SRUFEKFBJUEVfTElO S19OMSh0cmFuc2NvZGVyKSk7Cj4+ICAgCQltX24tPmdtY2hfbSA9IEk5MTVfUkVBRChQSVBFX0RB VEFfTTEodHJhbnNjb2RlcikpCj4+IEBAIC04NDM3LDcgKzg0MzcsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9jcHVfdHJhbnNjb2Rlcl9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiAg IAkJICogZ2VuIDwgOCkgYW5kIGlmIERSUlMgaXMgc3VwcG9ydGVkICh0byBtYWtlIHN1cmUgdGhl Cj4+ICAgCQkgKiByZWdpc3RlcnMgYXJlIG5vdCB1bm5lY2Vzc2FyaWx5IHJlYWQpLgo+PiAgIAkJ ICovCj4+IC0JCWlmIChtMl9uMiAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCAmJgo+PiArCQlp ZiAobTJfbjIgJiYgSVNfR0VOX0xUKGRldl9wcml2LCA4KSAmJgo+PiAgIAkJCWNydGMtPmNvbmZp Zy0+aGFzX2RycnMpIHsKPj4gICAJCQltMl9uMi0+bGlua19tID0gSTkxNV9SRUFEKFBJUEVfTElO S19NMih0cmFuc2NvZGVyKSk7Cj4+ICAgCQkJbTJfbjItPmxpbmtfbiA9CUk5MTVfUkVBRChQSVBF X0xJTktfTjIodHJhbnNjb2RlcikpOwo+PiBAQCAtODUzNiwxMiArODUzNiwxMiBAQCBza3lsYWtl X2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gICAK Pj4gICAJdmFsID0gSTkxNV9SRUFEKFBMQU5FX0NUTChwaXBlLCBwbGFuZV9pZCkpOwo+PiAgIAo+ PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+PiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCAxMSkpCj4+ICAgCQlwaXhlbF9mb3JtYXQgPSB2YWwgJiBJQ0xfUExBTkVfQ1RMX0ZP Uk1BVF9NQVNLOwo+PiAgIAllbHNlCj4+ICAgCQlwaXhlbF9mb3JtYXQgPSB2YWwgJiBQTEFORV9D VExfRk9STUFUX01BU0s7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAg fHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgMTApIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4+ICAgCQlhbHBoYSA9IEk5MTVf UkVBRChQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxhbmVfaWQpKTsKPj4gICAJCWFscGhhICY9IFBM QU5FX0NPTE9SX0FMUEhBX01BU0s7Cj4+ICAgCX0gZWxzZSB7Cj4+IEBAIC05MTg4LDcgKzkxODgs NyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2dldF9kZGlfcG9ydF9zdGF0ZShzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPj4gICAJICogRERJIEUuIFNvIGp1c3QgY2hlY2sgd2hldGhlciB0aGlzIHBp cGUgaXMgd2lyZWQgdG8gRERJIEUgYW5kIHdoZXRoZXIKPj4gICAJICogdGhlIFBDSCB0cmFuc2Nv ZGVyIGlzIG9uLgo+PiAgIAkgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgJiYK Pj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA5KSAmJgo+PiAgIAkgICAgKHBvcnQgPT0gUE9S VF9FKSAmJiBJOTE1X1JFQUQoTFBUX1RSQU5TQ09ORikgJiBUUkFOU19FTkFCTEUpIHsKPj4gICAJ CXBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIgPSB0cnVlOwo+PiAgIAo+PiBAQCAtOTIzOCwx MSArOTIzOCwxMSBAQCBzdGF0aWMgYm9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPj4gICAJcGlwZV9jb25maWctPmdhbW1hX21vZGUgPQo+PiAgIAkJ STkxNV9SRUFEKEdBTU1BX01PREUoY3J0Yy0+cGlwZSkpICYgR0FNTUFfTU9ERV9NT0RFX01BU0s7 Cj4+ICAgCj4+IC0JaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9w cml2KSA+PSA5KSB7Cj4+ICsJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSVNfR0VOX0dU RShkZXZfcHJpdiwgOSkpIHsKPj4gICAJCXUzMiB0bXAgPSBJOTE1X1JFQUQoUElQRU1JU0MoY3J0 Yy0+cGlwZSkpOwo+PiAgIAkJYm9vbCBjbHJzcGFjZV95dXYgPSB0bXAgJiBQSVBFTUlTQ19PVVRQ VVRfQ09MT1JTUEFDRV9ZVVY7Cj4+ICAgCj4+IC0JCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2 KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7Cj4+ICsJCWlmIChJU19HRU1JTklMQUtF KGRldl9wcml2KSB8fCBJU19HRU5fR1RFKGRldl9wcml2LCAxMCkpIHsKPj4gICAJCQlib29sIGJs ZW5kX21vZGVfNDIwID0gdG1wICYKPj4gICAJCQkJCSAgICAgIFBJUEVNSVNDX1lVVjQyMF9NT0RF X0ZVTExfQkxFTkQ7Cj4+ICAgCj4+IEBAIC05MjU4LDcgKzkyNTgsNyBAQCBzdGF0aWMgYm9vbCBo YXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gICAJcG93 ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMtPnBpcGUpOwo+ PiAgIAlpZiAoaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93 ZXJfZG9tYWluKSkgewo+PiAgIAkJcG93ZXJfZG9tYWluX21hc2sgfD0gQklUX1VMTChwb3dlcl9k b21haW4pOwo+PiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCQlpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgOSkpCj4+ICAgCQkJc2t5bGFrZV9nZXRfcGZpdF9jb25maWcoY3J0 YywgcGlwZV9jb25maWcpOwo+PiAgIAkJZWxzZQo+PiAgIAkJCWlyb25sYWtlX2dldF9wZml0X2Nv bmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7Cj4+IEBAIC0xMDIyNyw3ICsxMDIyNyw3IEBAIGludCBp bnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpvbGRfY3J0Y19zdGF0Cj4+ICAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmZiOwo+PiAgIAlpbnQgcmV0Owo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkgJiYgcGxhbmUtPmlkICE9IFBMQU5FX0NVUlNPUikgewo+PiArCWlmIChJU19H RU5fR1RFKGRldl9wcml2LCA5KSAmJiBwbGFuZS0+aWQgIT0gUExBTkVfQ1VSU09SKSB7Cj4+ICAg CQlyZXQgPSBza2xfdXBkYXRlX3NjYWxlcl9wbGFuZSgKPj4gICAJCQl0b19pbnRlbF9jcnRjX3N0 YXRlKGNydGNfc3RhdGUpLAo+PiAgIAkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRl KSk7Cj4+IEBAIC0xMDI3NiwyMSArMTAyNzYsMjEgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19j YWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQK Pj4gICAJCQkgdHVybl9vZmYsIHR1cm5fb24sIG1vZGVfY2hhbmdlZCk7Cj4+ICAgCj4+ICAgCWlm ICh0dXJuX29uKSB7Cj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSAmJiAhSVNfRzRY KGRldl9wcml2KSkKPj4gKwkJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNSkgJiYgIUlTX0c0WChk ZXZfcHJpdikpCj4+ICAgCQkJcGlwZV9jb25maWctPnVwZGF0ZV93bV9wcmUgPSB0cnVlOwo+PiAg IAo+PiAgIAkJLyogbXVzdCBkaXNhYmxlIGN4c3IgYXJvdW5kIHBsYW5lIGVuYWJsZS9kaXNhYmxl ICovCj4+ICAgCQlpZiAocGxhbmUtPmlkICE9IFBMQU5FX0NVUlNPUikKPj4gICAJCQlwaXBlX2Nv bmZpZy0+ZGlzYWJsZV9jeHNyID0gdHJ1ZTsKPj4gICAJfSBlbHNlIGlmICh0dXJuX29mZikgewo+ PiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlTX0c0WChkZXZfcHJpdikpCj4+ ICsJCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDUpICYmICFJU19HNFgoZGV2X3ByaXYpKQo+PiAg IAkJCXBpcGVfY29uZmlnLT51cGRhdGVfd21fcG9zdCA9IHRydWU7Cj4+ICAgCj4+ICAgCQkvKiBt dXN0IGRpc2FibGUgY3hzciBhcm91bmQgcGxhbmUgZW5hYmxlL2Rpc2FibGUgKi8KPj4gICAJCWlm IChwbGFuZS0+aWQgIT0gUExBTkVfQ1VSU09SKQo+PiAgIAkJCXBpcGVfY29uZmlnLT5kaXNhYmxl X2N4c3IgPSB0cnVlOwo+PiAgIAl9IGVsc2UgaWYgKGludGVsX3dtX25lZWRfdXBkYXRlKCZwbGFu ZS0+YmFzZSwgcGxhbmVfc3RhdGUpKSB7Cj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NSAmJiAhSVNfRzRYKGRldl9wcml2KSkgewo+PiArCQlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA1 KSAmJiAhSVNfRzRYKGRldl9wcml2KSkgewo+PiAgIAkJCS8qIEZJWE1FIGJvbGxvY2tzICovCj4+ ICAgCQkJcGlwZV9jb25maWctPnVwZGF0ZV93bV9wcmUgPSB0cnVlOwo+PiAgIAkJCXBpcGVfY29u ZmlnLT51cGRhdGVfd21fcG9zdCA9IHRydWU7Cj4+IEBAIC0xMDQwNywxMSArMTA0MDcsMTEgQEAg c3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4+ICAgCQkJcmV0dXJuIHJldDsKPj4gICAJCX0KPj4gICAJfSBlbHNlIGlmIChkZXZfcHJpdi0+ ZGlzcGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93bSkgewo+PiAtCQlpZiAoSEFTX1BDSF9TUExJ VChkZXZfcHJpdikgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCj4+ICsJCWlmIChIQVNfUENI X1NQTElUKGRldl9wcml2KSAmJiBJU19HRU5fTFQoZGV2X3ByaXYsIDkpKQo+PiAgIAkJCXBpcGVf Y29uZmlnLT53bS5pbGsuaW50ZXJtZWRpYXRlID0gcGlwZV9jb25maWctPndtLmlsay5vcHRpbWFs Owo+PiAgIAl9Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+PiAr CWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+PiAgIAkJaWYgKG1vZGVfY2hhbmdlZCkK Pj4gICAJCQlyZXQgPSBza2xfdXBkYXRlX3NjYWxlcl9jcnRjKHBpcGVfY29uZmlnKTsKPj4gICAK Pj4gQEAgLTEwNDk5LDcgKzEwNDk5LDcgQEAgY29tcHV0ZV9iYXNlbGluZV9waXBlX2JwcChzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gICAJaWYgKChJU19HNFgoZGV2X3ByaXYpIHx8IElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpIHx8Cj4+ICAgCSAgICBJU19DSEVSUllWSUVXKGRldl9wcml2KSkp Cj4+ICAgCQlicHAgPSAxMCozOwo+PiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NSkKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA1KSkKPj4gICAJCWJwcCA9IDEy KjM7Cj4+ICAgCWVsc2UKPj4gICAJCWJwcCA9IDgqMzsKPj4gQEAgLTEwNjQxLDcgKzEwNjQxLDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPj4gICAJCSAgICAgIHBpcGVfY29uZmlnLT5waXBlX3NyY193LCBwaXBlX2NvbmZpZy0+ cGlwZV9zcmNfaCwKPj4gICAJCSAgICAgIHBpcGVfY29uZmlnLT5waXhlbF9yYXRlKTsKPj4gICAK Pj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA5KSkKPj4gICAJCURSTV9ERUJVR19LTVMoIm51bV9zY2FsZXJzOiAlZCwgc2NhbGVy X3VzZXJzOiAweCV4LCBzY2FsZXJfaWQ6ICVkXG4iLAo+PiAgIAkJCSAgICAgIGNydGMtPm51bV9z Y2FsZXJzLAo+PiAgIAkJCSAgICAgIHBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGUuc2NhbGVyX3Vz ZXJzLAo+PiBAQCAtMTA2ODIsNyArMTA2ODIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3Bp cGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiAgIAkJCSAgICAgIHBsYW5lLT5i YXNlLmlkLCBwbGFuZS0+bmFtZSwKPj4gICAJCQkgICAgICBmYi0+YmFzZS5pZCwgZmItPndpZHRo LCBmYi0+aGVpZ2h0LAo+PiAgIAkJCSAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUoZmItPmZvcm1h dC0+Zm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSkKPj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJCURSTV9ERUJV R19LTVMoIlx0c2NhbGVyOiVkIHNyYyAlZHglZCslZCslZCBkc3QgJWR4JWQrJWQrJWRcbiIsCj4+ ICAgCQkJCSAgICAgIHN0YXRlLT5zY2FsZXJfaWQsCj4+ICAgCQkJCSAgICAgIHN0YXRlLT5iYXNl LnNyYy54MSA+PiAxNiwKPj4gQEAgLTExMTY3LDcgKzExMTY3LDcgQEAgaW50ZWxfcGlwZV9jb25m aWdfY29tcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCVBJUEVf Q09ORl9DSEVDS19JKGxhbmVfY291bnQpOwo+PiAgIAlQSVBFX0NPTkZfQ0hFQ0tfWChsYW5lX2xh dF9vcHRpbV9tYXNrKTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDgpIHsK Pj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA4KSkgewo+PiAgIAkJUElQRV9DT05GX0NIRUNL X01fTihkcF9tX24pOwo+PiAgIAo+PiAgIAkJaWYgKGN1cnJlbnRfY29uZmlnLT5oYXNfZHJycykK Pj4gQEAgLTExMTkzLDcgKzExMTkzLDcgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCj4+ICAgCVBJUEVfQ09ORl9DSEVD S19JKHBpeGVsX211bHRpcGxpZXIpOwo+PiAgIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChoYXNfaGRt aV9zaW5rKTsKPj4gLQlpZiAoKElOVEVMX0dFTihkZXZfcHJpdikgPCA4ICYmICFJU19IQVNXRUxM KGRldl9wcml2KSkgfHwKPj4gKwlpZiAoKElTX0dFTl9MVChkZXZfcHJpdiwgOCkgJiYgIUlTX0hB U1dFTEwoZGV2X3ByaXYpKSB8fAo+PiAgIAkgICAgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwg SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4+ICAgCQlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChsaW1p dGVkX2NvbG9yX3JhbmdlKTsKPj4gICAKPj4gQEAgLTExMjIwLDcgKzExMjIwLDcgQEAgaW50ZWxf cGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ ICAgCj4+ICAgCVBJUEVfQ09ORl9DSEVDS19YKGdtY2hfcGZpdC5jb250cm9sKTsKPj4gICAJLyog cGZpdCByYXRpb3MgYXJlIGF1dG9jb21wdXRlZCBieSB0aGUgaHcgb24gZ2VuNCsgKi8KPj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpCj4+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwg NCkpCj4+ICAgCQlQSVBFX0NPTkZfQ0hFQ0tfWChnbWNoX3BmaXQucGdtX3JhdGlvcyk7Cj4+ICAg CVBJUEVfQ09ORl9DSEVDS19YKGdtY2hfcGZpdC5sdmRzX2JvcmRlcl9iaXRzKTsKPj4gICAKPj4g QEAgLTExMjY2LDcgKzExMjY2LDcgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9w bGwuY3RybCk7Cj4+ICAgCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9wbGwuZGl2KTsKPj4gICAKPj4g LQlpZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCj4+ICsJ aWYgKElTX0c0WChkZXZfcHJpdikgfHwgSVNfR0VOX0dURShkZXZfcHJpdiwgNSkpCj4+ICAgCQlQ SVBFX0NPTkZfQ0hFQ0tfSShwaXBlX2JwcCk7Cj4+ICAgCj4+ICAgCVBJUEVfQ09ORl9DSEVDS19D TE9DS19GVVpaWShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayk7Cj4+IEBAIC0xMTMxNiw3 ICsxMTMxNiw3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4+ICAgCWNvbnN0IGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4g ICAJaW50IHBsYW5lLCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJp dik7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5IHx8ICFuZXdfc3RhdGUt PmFjdGl2ZSkKPj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA5KSB8fCAhbmV3X3N0YXRlLT5h Y3RpdmUpCj4+ICAgCQlyZXR1cm47Cj4+ICAgCj4+ICAgCXNrbF9waXBlX3dtX2dldF9od19zdGF0 ZShjcnRjLCAmaHdfd20pOwo+PiBAQCAtMTIyOTMsNyArMTIyOTMsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ PiAgIAkJCQkgKgo+PiAgIAkJCQkgKiBObyBjbHVlIHdoYXQgdGhpcyBpcyBzdXBwb3NlZCB0byBh Y2hpZXZlLgo+PiAgIAkJCQkgKi8KPj4gLQkJCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KQo+PiArCQkJCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4gICAJCQkJCWRldl9wcml2 LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhpbnRlbF9zdGF0ZSwKPj4gICAJCQkJCQkJCQkg ICAgIHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpKTsKPj4gICAJCQl9Cj4+IEBA IC0xMjQ4NSw3ICsxMjQ4NSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgIAkgKiBGSVhNRSBkb2luZyB3YXRlcm1hcmtzIGFuZCBm YiBjbGVhbnVwIGZyb20gYSB2Ymxhbmsgd29ya2VyCj4+ICAgCSAqIChhc3N1bWluZyB3ZSBoYWQg YW55KSB3b3VsZCBzb2x2ZSB0aGVzZSBwcm9ibGVtcy4KPj4gICAJICovCj4+IC0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPCA5ICYmIHN0YXRlLT5sZWdhY3lfY3Vyc29yX3VwZGF0ZSkgewo+PiAr CWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDkpICYmIHN0YXRlLT5sZWdhY3lfY3Vyc29yX3VwZGF0 ZSkgewo+PiAgIAkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+PiAg IAkJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4+ICAgCQlpbnQgaTsKPj4gQEAgLTEyNTkyLDcg KzEyNTkyLDcgQEAgc3RhdGljIHZvaWQgYWRkX3Jwc19ib29zdF9hZnRlcl92Ymxhbmsoc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+PiAgIAlpZiAoIWRtYV9mZW5jZV9pc19pOTE1KGZlbmNlKSkKPj4g ICAJCXJldHVybjsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKHRvX2k5MTUoY3J0Yy0+ZGV2KSkg PCA2KQo+PiArCWlmIChJU19HRU5fTFQodG9faTkxNShjcnRjLT5kZXYpLCA2KSkKPj4gICAJCXJl dHVybjsKPj4gICAKPj4gICAJaWYgKGRybV9jcnRjX3ZibGFua19nZXQoY3J0YykpCj4+IEBAIC0x Mjc3MCw3ICsxMjc3MCw3IEBAIHNrbF9tYXhfc2NhbGUoc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlCj4+ICAgCWNydGNfY2xv Y2sgPSBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPj4gICAJbWF4 X2RvdGNsayA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKS0+ Y2RjbGsubG9naWNhbC5jZGNsazsKPj4gICAKPj4gLQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJp dikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPj4gKwlpZiAoSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikgfHwgSVNfR0VOX0dURShkZXZfcHJpdiwgMTApKQo+PiAgIAkJbWF4X2RvdGNsayAq PSAyOwo+PiAgIAo+PiAgIAlpZiAoV0FSTl9PTl9PTkNFKCFjcnRjX2Nsb2NrIHx8IG1heF9kb3Rj bGsgPCBjcnRjX2Nsb2NrKSkKPj4gQEAgLTEyODAxLDcgKzEyODAxLDcgQEAgaW50ZWxfY2hlY2tf cHJpbWFyeV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+PiAgIAlzdHJ1Y3QgZHJt X3JlY3QgY2xpcCA9IHt9Owo+PiAgIAlpbnQgcmV0Owo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPj4g ICAJCS8qIHVzZSBzY2FsZXIgd2hlbiBjb2xvcmtleSBpcyBub3QgcmVxdWlyZWQgKi8KPj4gICAJ CWlmICghc3RhdGUtPmNrZXkuZmxhZ3MpIHsKPj4gICAJCQltaW5fc2NhbGUgPSAxOwo+PiBAQCAt MTI4MjUsNyArMTI4MjUsNyBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUsCj4+ICAgCWlmICghc3RhdGUtPmJhc2UuZmIpCj4+ICAgCQlyZXR1cm4g MDsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4+ICsJaWYgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4+ICAgCQlyZXQgPSBza2xfY2hlY2tfcGxhbmVfc3Vy ZmFjZShjcnRjX3N0YXRlLCBzdGF0ZSk7Cj4+ICAgCQlpZiAocmV0KQo+PiAgIAkJCXJldHVybiBy ZXQ7Cj4+IEBAIC0xMjgzOSw3ICsxMjgzOSw3IEBAIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPj4gICAJCXN0YXRlLT5jdGwgPSBpOXh4X3BsYW5l X2N0bChjcnRjX3N0YXRlLCBzdGF0ZSk7Cj4+ICAgCX0KPj4gICAKPj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPj4gKwlpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgMTApIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+PiAgIAkJ c3RhdGUtPmNvbG9yX2N0bCA9IGdsa19wbGFuZV9jb2xvcl9jdGwoY3J0Y19zdGF0ZSwgc3RhdGUp Owo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gQEAgLTEyODc0LDcgKzEyODc0LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+PiAg IAo+PiAgIAlpZiAoaW50ZWxfY3N0YXRlLT51cGRhdGVfcGlwZSkKPj4gICAJCWludGVsX3VwZGF0 ZV9waXBlX2NvbmZpZyhvbGRfaW50ZWxfY3N0YXRlLCBpbnRlbF9jc3RhdGUpOwo+PiAtCWVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA5KSkKPj4gICAJCXNrbF9kZXRhY2hfc2NhbGVycyhpbnRlbF9jcnRjKTsKPj4gICAK Pj4gICBvdXQ6Cj4+IEBAIC0xMjk5OCw5ICsxMjk5OCw5IEBAIHN0YXRpYyBib29sIGludGVsX3By aW1hcnlfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4+ICAgCSAgICBtb2RpZmllciAhPSBEUk1fRk9STUFUX01PRF9MSU5FQVIpCj4+ICAgCQlyZXR1 cm4gZmFsc2U7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwlp ZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4+ICAgCQlyZXR1cm4gc2tsX21vZF9zdXBwb3J0 ZWQoZm9ybWF0LCBtb2RpZmllcik7Cj4+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA0KQo+PiArCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+PiAgIAkJcmV0dXJu IGk5NjVfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsKPj4gICAJZWxzZQo+PiAgIAkJ cmV0dXJuIGk4eHhfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsKPj4gQEAgLTEzMTk3 LDcgKzEzMTk3LDcgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPj4gICAKPj4gICAJcHJpbWFyeS0+ Y2FuX3NjYWxlID0gZmFsc2U7Cj4+ICAgCXByaW1hcnktPm1heF9kb3duc2NhbGUgPSAxOwo+PiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZf cHJpdiwgOSkpIHsKPj4gICAJCXByaW1hcnktPmNhbl9zY2FsZSA9IHRydWU7Cj4+ICAgCQlzdGF0 ZS0+c2NhbGVyX2lkID0gLTE7Cj4+ICAgCX0KPj4gQEAgLTEzMjA2LDcgKzEzMjA2LDcgQEAgaW50 ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBlbnVtIHBpcGUgcGlwZSkKPj4gICAJICogT24gZ2VuMi8zIG9ubHkgcGxhbmUgQSBjYW4gZG8g RkJDLCBidXQgdGhlIHBhbmVsIGZpdHRlciBhbmQgTFZEUwo+PiAgIAkgKiBwb3J0IGlzIGhvb2tl ZCB0byBwaXBlIEIuIEhlbmNlIHdlIHdhbnQgcGxhbmUgQSBmZWVkaW5nIHBpcGUgQi4KPj4gICAJ ICovCj4+IC0JaWYgKEhBU19GQkMoZGV2X3ByaXYpICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA0 KQo+PiArCWlmIChIQVNfRkJDKGRldl9wcml2KSAmJiBJU19HRU5fTFQoZGV2X3ByaXYsIDQpKQo+ PiAgIAkJcHJpbWFyeS0+aTl4eF9wbGFuZSA9IChlbnVtIGk5eHhfcGxhbmVfaWQpICFwaXBlOwo+ PiAgIAllbHNlCj4+ICAgCQlwcmltYXJ5LT5pOXh4X3BsYW5lID0gKGVudW0gaTl4eF9wbGFuZV9p ZCkgcGlwZTsKPj4gQEAgLTEzMjE0LDcgKzEzMjE0LDcgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9j cmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkK Pj4gICAJcHJpbWFyeS0+ZnJvbnRidWZmZXJfYml0ID0gSU5URUxfRlJPTlRCVUZGRVIocGlwZSwg cHJpbWFyeS0+aWQpOwo+PiAgIAlwcmltYXJ5LT5jaGVja19wbGFuZSA9IGludGVsX2NoZWNrX3By aW1hcnlfcGxhbmU7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+PiAgIAkJaW50ZWxfcHJpbWFyeV9m b3JtYXRzID0gc2tsX3ByaW1hcnlfZm9ybWF0czsKPj4gICAJCW51bV9mb3JtYXRzID0gQVJSQVlf U0laRShza2xfcHJpbWFyeV9mb3JtYXRzKTsKPj4gICAKPj4gQEAgLTEzMjI2LDcgKzEzMjI2LDcg QEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPj4gICAJCXByaW1hcnktPnVwZGF0ZV9wbGFuZSA9IHNr bF91cGRhdGVfcGxhbmU7Cj4+ICAgCQlwcmltYXJ5LT5kaXNhYmxlX3BsYW5lID0gc2tsX2Rpc2Fi bGVfcGxhbmU7Cj4+ICAgCQlwcmltYXJ5LT5nZXRfaHdfc3RhdGUgPSBza2xfcGxhbmVfZ2V0X2h3 X3N0YXRlOwo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4+ICsJ fSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+PiAgIAkJaW50ZWxfcHJpbWFy eV9mb3JtYXRzID0gaTk2NV9wcmltYXJ5X2Zvcm1hdHM7Cj4+ICAgCQludW1fZm9ybWF0cyA9IEFS UkFZX1NJWkUoaTk2NV9wcmltYXJ5X2Zvcm1hdHMpOwo+PiAgIAkJbW9kaWZpZXJzID0gaTl4eF9m b3JtYXRfbW9kaWZpZXJzOwo+PiBAQCAtMTMyNDQsMTQgKzEzMjQ0LDE0IEBAIGludGVsX3ByaW1h cnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBw aXBlIHBpcGUpCj4+ICAgCQlwcmltYXJ5LT5nZXRfaHdfc3RhdGUgPSBpOXh4X3BsYW5lX2dldF9o d19zdGF0ZTsKPj4gICAJfQo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJcmV0ID0gZHJtX3VuaXZl cnNhbF9wbGFuZV9pbml0KCZkZXZfcHJpdi0+ZHJtLCAmcHJpbWFyeS0+YmFzZSwKPj4gICAJCQkJ CSAgICAgICAwLCAmaW50ZWxfcGxhbmVfZnVuY3MsCj4+ICAgCQkJCQkgICAgICAgaW50ZWxfcHJp bWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKPj4gICAJCQkJCSAgICAgICBtb2RpZmllcnMsCj4+ ICAgCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwKPj4gICAJCQkJCSAgICAgICAi cGxhbmUgMSVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKPj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDUgfHwgSVNfRzRYKGRldl9wcml2KSkKPj4gKwllbHNlIGlmIChJU19HRU5fR1RF KGRldl9wcml2LCA1KSB8fCBJU19HNFgoZGV2X3ByaXYpKQo+PiAgIAkJcmV0ID0gZHJtX3VuaXZl cnNhbF9wbGFuZV9pbml0KCZkZXZfcHJpdi0+ZHJtLCAmcHJpbWFyeS0+YmFzZSwKPj4gICAJCQkJ CSAgICAgICAwLCAmaW50ZWxfcGxhbmVfZnVuY3MsCj4+ICAgCQkJCQkgICAgICAgaW50ZWxfcHJp bWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKPj4gQEAgLTEzMjY5LDEyICsxMzI2OSwxMiBAQCBp bnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGVudW0gcGlwZSBwaXBlKQo+PiAgIAlpZiAocmV0KQo+PiAgIAkJZ290byBmYWlsOwo+PiAg IAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7Cj4+ICsJaWYgKElTX0dFTl9H VEUoZGV2X3ByaXYsIDEwKSkgewo+PiAgIAkJc3VwcG9ydGVkX3JvdGF0aW9ucyA9Cj4+ICAgCQkJ RFJNX01PREVfUk9UQVRFXzAgfCBEUk1fTU9ERV9ST1RBVEVfOTAgfAo+PiAgIAkJCURSTV9NT0RF X1JPVEFURV8xODAgfCBEUk1fTU9ERV9ST1RBVEVfMjcwIHwKPj4gICAJCQlEUk1fTU9ERV9SRUZM RUNUX1g7Cj4+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPj4gKwl9 IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4+ICAgCQlzdXBwb3J0ZWRfcm90 YXRpb25zID0KPj4gICAJCQlEUk1fTU9ERV9ST1RBVEVfMCB8IERSTV9NT0RFX1JPVEFURV85MCB8 Cj4+ICAgCQkJRFJNX01PREVfUk9UQVRFXzE4MCB8IERSTV9NT0RFX1JPVEFURV8yNzA7Cj4+IEBA IC0xMzI4MiwxNCArMTMyODIsMTQgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPj4gICAJCXN1cHBv cnRlZF9yb3RhdGlvbnMgPQo+PiAgIAkJCURSTV9NT0RFX1JPVEFURV8wIHwgRFJNX01PREVfUk9U QVRFXzE4MCB8Cj4+ICAgCQkJRFJNX01PREVfUkVGTEVDVF9YOwo+PiAtCX0gZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9w cml2LCA0KSkgewo+PiAgIAkJc3VwcG9ydGVkX3JvdGF0aW9ucyA9Cj4+ICAgCQkJRFJNX01PREVf Uk9UQVRFXzAgfCBEUk1fTU9ERV9ST1RBVEVfMTgwOwo+PiAgIAl9IGVsc2Ugewo+PiAgIAkJc3Vw cG9ydGVkX3JvdGF0aW9ucyA9IERSTV9NT0RFX1JPVEFURV8wOwo+PiAgIAl9Cj4+ICAgCj4+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgNCkpCj4+ICAgCQlkcm1fcGxhbmVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KCZwcmltYXJ5 LT5iYXNlLAo+PiAgIAkJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8wLAo+PiAgIAkJCQkJCSAgIHN1 cHBvcnRlZF9yb3RhdGlvbnMpOwo+PiBAQCAtMTMzNjIsMTMgKzEzMzYyLDEzIEBAIGludGVsX2N1 cnNvcl9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAg IAlpZiAocmV0KQo+PiAgIAkJZ290byBmYWlsOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDQpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+PiAgIAkJZHJt X3BsYW5lX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eSgmY3Vyc29yLT5iYXNlLAo+PiAgIAkJCQkJ CSAgIERSTV9NT0RFX1JPVEFURV8wLAo+PiAgIAkJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8wIHwK Pj4gICAJCQkJCQkgICBEUk1fTU9ERV9ST1RBVEVfMTgwKTsKPj4gICAKPj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4g ICAJCXN0YXRlLT5zY2FsZXJfaWQgPSAtMTsKPj4gICAKPj4gICAJZHJtX3BsYW5lX2hlbHBlcl9h ZGQoJmN1cnNvci0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4+IEBAIC0xMzU0 OCw3ICsxMzU0OCw3IEBAIHN0YXRpYyBib29sIGhhc19lZHBfYShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4+ICAgCj4+ICAgc3RhdGljIGJvb2wgaW50ZWxfY3J0X3ByZXNlbnQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4g ICAJCXJldHVybiBmYWxzZTsKPj4gICAKPj4gICAJaWYgKElTX0hTV19VTFQoZGV2X3ByaXYpIHx8 IElTX0JEV19VTFQoZGV2X3ByaXYpKQo+PiBAQCAtMTM5MjksNyArMTM5MjksNyBAQCBzdGF0aWMg aW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRl bF9mYiwKPj4gICAJCS8qIGZhbGwgdGhyb3VnaCAqLwo+PiAgIAljYXNlIEk5MTVfRk9STUFUX01P RF9ZX1RJTEVEOgo+PiAgIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoKPj4gLQkJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCA5KSB7Cj4+ICsJCWlmIChJU19HRU5fTFQoZGV2X3ByaXYs IDkpKSB7Cj4+ICAgCQkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgdGlsaW5nIDB4JWxseCFc biIsCj4+ICAgCQkJCSAgICAgIG1vZGVfY21kLT5tb2RpZmllclswXSk7Cj4+ICAgCQkJZ290byBl cnI7Cj4+IEBAIC0xMzk0Nyw3ICsxMzk0Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZm ZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiLAo+PiAgIAkgKiBnZW4y LzMgZGlzcGxheSBlbmdpbmUgdXNlcyB0aGUgZmVuY2UgaWYgcHJlc2VudCwKPj4gICAJICogc28g dGhlIHRpbGluZyBtb2RlIG11c3QgbWF0Y2ggdGhlIGZiIG1vZGlmaWVyIGV4YWN0bHkuCj4+ICAg CSAqLwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCAmJgo+PiArCWlmIChJU19HRU5f TFQoZGV2X3ByaXYsIDQpICYmCj4+ICAgCSAgICB0aWxpbmcgIT0gaW50ZWxfZmJfbW9kaWZpZXJf dG9fdGlsaW5nKG1vZGVfY21kLT5tb2RpZmllclswXSkpIHsKPj4gICAJCURSTV9ERUJVR19LTVMo InRpbGluZ19tb2RlIG11c3QgbWF0Y2ggZmIgbW9kaWZpZXIgZXhhY3RseSBvbiBnZW4yLzNcbiIp Owo+PiAgIAkJZ290byBlcnI7Cj4+IEBAIC0xMzk4MSw3ICsxMzk4MSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2Zi LAo+PiAgIAljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Cj4+ICAgCQlicmVhazsKPj4gICAJY2Fz ZSBEUk1fRk9STUFUX1hSR0IxNTU1Ogo+PiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+IDMp IHsKPj4gKwkJaWYgKElTX0dFTl9HVChkZXZfcHJpdiwgMykpIHsKPj4gICAJCQlEUk1fREVCVUdf S01TKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+PiAgIAkJCQkgICAgICBkcm1f Z2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQsICZmb3JtYXRfbmFtZSkpOwo+ PiAgIAkJCWdvdG8gZXJyOwo+PiBAQCAtMTM5ODksNyArMTM5ODksNyBAQCBzdGF0aWMgaW50IGlu dGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiwK Pj4gICAJCWJyZWFrOwo+PiAgIAljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6Cj4+ICAgCQlpZiAo IUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJgo+ PiAtCQkgICAgSU5URUxfR0VOKGRldl9wcml2KSA8IDkpIHsKPj4gKwkJICAgIElTX0dFTl9MVChk ZXZfcHJpdiwgOSkpIHsKPj4gICAJCQlEUk1fREVCVUdfS01TKCJ1bnN1cHBvcnRlZCBwaXhlbCBm b3JtYXQ6ICVzXG4iLAo+PiAgIAkJCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21k LT5waXhlbF9mb3JtYXQsICZmb3JtYXRfbmFtZSkpOwo+PiAgIAkJCWdvdG8gZXJyOwo+PiBAQCAt MTM5OTgsNyArMTM5OTgsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3Ry dWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiwKPj4gICAJY2FzZSBEUk1fRk9STUFUX1hC R1I4ODg4Ogo+PiAgIAljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6Cj4+ICAgCWNhc2UgRFJN X0ZPUk1BVF9YQkdSMjEwMTAxMDoKPj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7 Cj4+ICsJCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDQpKSB7Cj4+ICAgCQkJRFJNX0RFQlVHX0tN UygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPj4gICAJCQkJICAgICAgZHJtX2dl dF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPj4g ICAJCQlnb3RvIGVycjsKPj4gQEAgLTE0MDE1LDcgKzE0MDE1LDcgQEAgc3RhdGljIGludCBpbnRl bF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIsCj4+ ICAgCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+PiAgIAljYXNlIERSTV9GT1JNQVRfWVZZVToKPj4g ICAJY2FzZSBEUk1fRk9STUFUX1ZZVVk6Cj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NSAmJiAhSVNfRzRYKGRldl9wcml2KSkgewo+PiArCQlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA1 KSAmJiAhSVNfRzRYKGRldl9wcml2KSkgewo+PiAgIAkJCURSTV9ERUJVR19LTVMoInVuc3VwcG9y dGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4+ICAgCQkJCSAgICAgIGRybV9nZXRfZm9ybWF0X25h bWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1lKSk7Cj4+ICAgCQkJZ290byBl cnI7Cj4+IEBAIC0xNDE2Miw3ICsxNDE2Miw3IEBAIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5X2hv b2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICB7Cj4+ICAgCWludGVs X2luaXRfY2RjbGtfaG9va3MoZGV2X3ByaXYpOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPj4gICAJ CWRldl9wcml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZpZyA9IGhhc3dlbGxfZ2V0X3BpcGVfY29u ZmlnOwo+PiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnID0K Pj4gICAJCQlza3lsYWtlX2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZzsKPj4gQEAgLTE0MjQxLDcg KzE0MjQxLDcgQEAgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXlfaG9va3Moc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJh aW4gPSBoc3dfZmRpX2xpbmtfdHJhaW47Cj4+ICAgCX0KPj4gICAKPj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4gICAJ CWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9jcnRjcyA9IHNrbF91cGRhdGVfY3J0Y3M7Cj4+ICAg CWVsc2UKPj4gICAJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9jcnRjcyA9IGludGVsX3VwZGF0 ZV9jcnRjczsKPj4gQEAgLTE0Nzc0LDcgKzE0Nzc0LDcgQEAgaW50ZWxfc2FuaXRpemVfcGxhbmVf bWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgewo+PiAgIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA0KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkKPj4gICAJCXJldHVybjsK Pj4gICAKPj4gICAJZm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2X3ByaXYtPmRybSwgY3J0Yykgewo+ PiBAQCAtMTUyMTAsNyArMTUyMTAsNyBAQCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZf cHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPj4gICAJCXZsdl93bV9nZXRfaHdf c3RhdGUoZGV2KTsKPj4gICAJCXZsdl93bV9zYW5pdGl6ZShkZXZfcHJpdik7Cj4+IC0JfSBlbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPj4gKwl9IGVsc2UgaWYgKElTX0dFTl9H VEUoZGV2X3ByaXYsIDkpKSB7Cj4+ICAgCQlza2xfd21fZ2V0X2h3X3N0YXRlKGRldik7Cj4+ICAg CX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpIHsKPj4gICAJCWlsa193bV9nZXRf aHdfc3RhdGUoZGV2KTsKPj4gQEAgLTE1MzYxLDcgKzE1MzYxLDcgQEAgdm9pZCBpbnRlbF9jb25u ZWN0b3JfYXR0YWNoX2VuY29kZXIoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ PiAgICAqLwo+PiAgIGludCBpbnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3RhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIHN0YXRlKQo+PiAgIHsKPj4gLQl1bnNpZ25lZCBy ZWcgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYgPyBTTkJfR01DSF9DVFJMIDogSU5URUxfR01D SF9DVFJMOwo+PiArCXVuc2lnbmVkIHJlZyA9IElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpID8gU05C X0dNQ0hfQ1RSTCA6IElOVEVMX0dNQ0hfQ1RSTDsKPj4gICAJdTE2IGdtY2hfY3RybDsKPj4gICAK Pj4gICAJaWYgKHBjaV9yZWFkX2NvbmZpZ193b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcs ICZnbWNoX2N0cmwpKSB7Cj4+IEBAIC0xNTQ2NywxMyArMTU0NjcsMTMgQEAgaW50ZWxfZGlzcGxh eV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK Pj4gICAKPj4gICAJCWVycm9yLT5wbGFuZVtpXS5jb250cm9sID0gSTkxNV9SRUFEKERTUENOVFIo aSkpOwo+PiAgIAkJZXJyb3ItPnBsYW5lW2ldLnN0cmlkZSA9IEk5MTVfUkVBRChEU1BTVFJJREUo aSkpOwo+PiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSAzKSB7Cj4+ICsJCWlmIChJU19H RU5fTFRFKGRldl9wcml2LCAzKSkgewo+PiAgIAkJCWVycm9yLT5wbGFuZVtpXS5zaXplID0gSTkx NV9SRUFEKERTUFNJWkUoaSkpOwo+PiAgIAkJCWVycm9yLT5wbGFuZVtpXS5wb3MgPSBJOTE1X1JF QUQoRFNQUE9TKGkpKTsKPj4gICAJCX0KPj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0g NyAmJiAhSVNfSEFTV0VMTChkZXZfcHJpdikpCj4+ICsJCWlmIChJU19HRU5fTFRFKGRldl9wcml2 LCA3KSAmJiAhSVNfSEFTV0VMTChkZXZfcHJpdikpCj4+ICAgCQkJZXJyb3ItPnBsYW5lW2ldLmFk ZHIgPSBJOTE1X1JFQUQoRFNQQUREUihpKSk7Cj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDQpIHsKPj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKSB7Cj4+ICAgCQkJZXJy b3ItPnBsYW5lW2ldLnN1cmZhY2UgPSBJOTE1X1JFQUQoRFNQU1VSRihpKSk7Cj4+ICAgCQkJZXJy b3ItPnBsYW5lW2ldLnRpbGVfb2Zmc2V0ID0gSTkxNV9SRUFEKERTUFRJTEVPRkYoaSkpOwo+PiAg IAkJfQo+PiBAQCAtMTU1MzgsMTMgKzE1NTM4LDEzIEBAIGludGVsX2Rpc3BsYXlfcHJpbnRfZXJy b3Jfc3RhdGUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPj4gICAJCWVycl9w cmludGYobSwgIlBsYW5lIFslZF06XG4iLCBpKTsKPj4gICAJCWVycl9wcmludGYobSwgIiAgQ05U UjogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLmNvbnRyb2wpOwo+PiAgIAkJZXJyX3ByaW50Ziht LCAiICBTVFJJREU6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5zdHJpZGUpOwo+PiAtCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8PSAzKSB7Cj4+ICsJCWlmIChJU19HRU5fTFRFKGRldl9wcml2 LCAzKSkgewo+PiAgIAkJCWVycl9wcmludGYobSwgIiAgU0laRTogJTA4eFxuIiwgZXJyb3ItPnBs YW5lW2ldLnNpemUpOwo+PiAgIAkJCWVycl9wcmludGYobSwgIiAgUE9TOiAlMDh4XG4iLCBlcnJv ci0+cGxhbmVbaV0ucG9zKTsKPj4gICAJCX0KPj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg PD0gNyAmJiAhSVNfSEFTV0VMTChkZXZfcHJpdikpCj4+ICsJCWlmIChJU19HRU5fTFRFKGRldl9w cml2LCA3KSAmJiAhSVNfSEFTV0VMTChkZXZfcHJpdikpCj4+ICAgCQkJZXJyX3ByaW50ZihtLCAi ICBBRERSOiAlMDh4XG4iLCBlcnJvci0+cGxhbmVbaV0uYWRkcik7Cj4+IC0JCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDQpIHsKPj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKSB7 Cj4+ICAgCQkJZXJyX3ByaW50ZihtLCAiICBTVVJGOiAlMDh4XG4iLCBlcnJvci0+cGxhbmVbaV0u c3VyZmFjZSk7Cj4+ICAgCQkJZXJyX3ByaW50ZihtLCAiICBUSUxFT0ZGOiAlMDh4XG4iLCBlcnJv ci0+cGxhbmVbaV0udGlsZV9vZmZzZXQpOwo+PiAgIAkJfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPj4gaW5kZXggYWJiZTFlNGUwYWY1Li4zMTlkMGQwMGY0Y2EgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYwo+PiBAQCAtMTQ2Nyw3ICsxNDY3LDcgQEAgc3RhdGljIGk5MTVfcmVnX3Qg c2tsX2F1eF9kYXRhX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAg c3RhdGljIGk5MTVfcmVnX3QgaW50ZWxfYXV4X2N0bF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+PiAgIAkJCQkgICAgZW51bSBwb3J0IHBvcnQpCj4+ICAgewo+PiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDkpKQo+PiAgIAkJcmV0dXJuIHNrbF9hdXhfY3RsX3JlZyhkZXZfcHJpdiwgcG9ydCk7Cj4+ICAg CWVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKQo+PiAgIAkJcmV0dXJuIGlsa19hdXhf Y3RsX3JlZyhkZXZfcHJpdiwgcG9ydCk7Cj4+IEBAIC0xNDc4LDcgKzE0NzgsNyBAQCBzdGF0aWMg aTkxNV9yZWdfdCBpbnRlbF9hdXhfY3RsX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4+ICAgc3RhdGljIGk5MTVfcmVnX3QgaW50ZWxfYXV4X2RhdGFfcmVnKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJCQkJICAgICBlbnVtIHBvcnQgcG9ydCwg aW50IGluZGV4KQo+PiAgIHsKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiAr CWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4gICAJCXJldHVybiBza2xfYXV4X2RhdGFf cmVnKGRldl9wcml2LCBwb3J0LCBpbmRleCk7Cj4+ICAgCWVsc2UgaWYgKEhBU19QQ0hfU1BMSVQo ZGV2X3ByaXYpKQo+PiAgIAkJcmV0dXJuIGlsa19hdXhfZGF0YV9yZWcoZGV2X3ByaXYsIHBvcnQs IGluZGV4KTsKPj4gQEAgLTE3MjYsNyArMTcyNiw3IEBAIGludGVsX2RwX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiAgIAo+PiAgIAkJaW50ZWxfZml4ZWRf cGFuZWxfbW9kZShwYW5lbF9tb2RlLCBhZGp1c3RlZF9tb2RlKTsKPj4gICAKPj4gLQkJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+PiArCQlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwg OSkpIHsKPj4gICAJCQlpbnQgcmV0Owo+PiAgIAkJCXJldCA9IHNrbF91cGRhdGVfc2NhbGVyX2Ny dGMocGlwZV9jb25maWcpOwo+PiAgIAkJCWlmIChyZXQpCj4+IEBAIC0zMjA4LDcgKzMyMDgsNyBA QCBpbnRlbF9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+PiAgIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2RwX3RvX2Rl dihpbnRlbF9kcCkpOwo+PiAgIAllbnVtIHBvcnQgcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVs X2RwKS0+YmFzZS5wb3J0Owo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp IHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPj4gICAJCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZTsKPj4g ICAJCXJldHVybiBpbnRlbF9kZGlfZHBfdm9sdGFnZV9tYXgoZW5jb2Rlcik7Cj4+ICAgCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp Cj4+IEBAIC0zMjI3LDcgKzMyMjcsNyBAQCBpbnRlbF9kcF9wcmVfZW1waGFzaXNfbWF4KHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3Qgdm9sdGFnZV9zd2luZykKPj4gICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9kcF90b19kZXYoaW50 ZWxfZHApKTsKPj4gICAJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCkt PmJhc2UucG9ydDsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4+ ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4+ICAgCQlzd2l0Y2ggKHZvbHRhZ2Vf c3dpbmcgJiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX01BU0spIHsKPj4gICAJCWNhc2UgRFBfVFJB SU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wOgo+PiAgIAkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1Q SF9MRVZFTF8zOwo+PiBAQCAtMzc2MCw3ICszNzYwLDcgQEAgaW50ZWxfZWRwX2luaXRfZHBjZChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+PiAgIAkJRFJNX0RFQlVHX0tNUygiRGV0ZWN0ZWQg RURQIFBTUiBQYW5lbC5cbiIpOwo+PiAgIAl9Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSAmJgo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSAmJgo+PiAgIAkg ICAgKGludGVsX2RwLT5wc3JfZHBjZFswXSAmIERQX1BTUjJfSVNfU1VQUE9SVEVEKSkgewo+PiAg IAkJdWludDhfdCBmcmFtZV9zeW5jX2NhcDsKPj4gICAKPj4gQEAgLTU0NjgsMTAgKzU0NjgsMTAg QEAgYm9vbCBpbnRlbF9kcF9pc19wb3J0X2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGVudW0gcG9ydCBwb3J0KQo+PiAgIAkgKiBlRFAgbm90IHN1cHBvcnRlZCBvbiBnNHgu IHNvIGJhaWwgb3V0IGVhcmx5IGp1c3QKPj4gICAJICogZm9yIGEgYml0IGV4dHJhIHNhZmV0eSBp biBjYXNlIHRoZSBWQlQgaXMgYm9ua2Vycy4KPj4gICAJICovCj4+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCA1KQo+PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDUpKQo+PiAgIAkJcmV0 dXJuIGZhbHNlOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAmJiBwb3J0 ID09IFBPUlRfQSkKPj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA5KSAmJiBwb3J0ID09IFBP UlRfQSkKPj4gICAJCXJldHVybiB0cnVlOwo+PiAgIAo+PiAgIAlyZXR1cm4gaW50ZWxfYmlvc19p c19wb3J0X2VkcChkZXZfcHJpdiwgcG9ydCk7Cj4+IEBAIC01ODMwLDcgKzU4MzAsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4+ICAgCQlyZXR1cm47Cj4+ICAgCX0KPj4gICAKPj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA4ICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+PiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA4KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPj4g ICAJCXN3aXRjaCAoaW5kZXgpIHsKPj4gICAJCWNhc2UgRFJSU19ISUdIX1JSOgo+PiAgIAkJCWlu dGVsX2RwX3NldF9tX24oaW50ZWxfY3J0YywgTTFfTjEpOwo+PiBAQCAtNTg0Miw3ICs1ODQyLDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfc2V0X2RycnNfc3RhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+PiAgIAkJZGVmYXVsdDoKPj4gICAJCQlEUk1fRVJST1IoIlVuc3Vw cG9ydGVkIHJlZnJlc2hyYXRlIHR5cGVcbiIpOwo+PiAgIAkJfQo+PiAtCX0gZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+IDYpIHsKPj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVChkZXZfcHJp diwgNikpIHsKPj4gICAJCWk5MTVfcmVnX3QgcmVnID0gUElQRUNPTkYoY3J0Y19zdGF0ZS0+Y3B1 X3RyYW5zY29kZXIpOwo+PiAgIAkJdTMyIHZhbDsKPj4gICAKPj4gQEAgLTYxMTUsNyArNjExNSw3 IEBAIGludGVsX2RwX2RycnNfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is Cj4+ICAgCUlOSVRfREVMQVlFRF9XT1JLKCZkZXZfcHJpdi0+ZHJycy53b3JrLCBpbnRlbF9lZHBf ZHJyc19kb3duY2xvY2tfd29yayk7Cj4+ICAgCW11dGV4X2luaXQoJmRldl9wcml2LT5kcnJzLm11 dGV4KTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA2KSB7Cj4+ICsJaWYg KElTX0dFTl9MVEUoZGV2X3ByaXYsIDYpKSB7Cj4+ICAgCQlEUk1fREVCVUdfS01TKCJEUlJTIHN1 cHBvcnRlZCBmb3IgR2VuNyBhbmQgYWJvdmVcbiIpOwo+PiAgIAkJcmV0dXJuIE5VTEw7Cj4+ICAg CX0KPj4gQEAgLTYzNTMsNyArNjM1Myw3IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+PiAgIAlpbnRlbF9kcC0+YWN0 aXZlX3BpcGUgPSBJTlZBTElEX1BJUEU7Cj4+ICAgCj4+ICAgCS8qIGludGVsX2RwIHZmdW5jcyAq Lwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4+ICsJaWYgKElTX0dFTl9HVEUo ZGV2X3ByaXYsIDkpKQo+PiAgIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IHNr bF9nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7Cj4+ICAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3By aXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4+ICAgCQlpbnRlbF9kcC0+Z2V0X2F1eF9j bG9ja19kaXZpZGVyID0gaHN3X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPj4gQEAgLTYzNjIsNyAr NjM2Miw3IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0LAo+PiAgIAllbHNlCj4+ICAgCQlpbnRlbF9kcC0+Z2V0X2F1eF9j bG9ja19kaXZpZGVyID0gZzR4X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPj4gICAKPj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5 KSkKPj4gICAJCWludGVsX2RwLT5nZXRfYXV4X3NlbmRfY3RsID0gc2tsX2dldF9hdXhfc2VuZF9j dGw7Cj4+ICAgCWVsc2UKPj4gICAJCWludGVsX2RwLT5nZXRfYXV4X3NlbmRfY3RsID0gZzR4X2dl dF9hdXhfc2VuZF9jdGw7Cj4+IEBAIC02NTAxLDcgKzY1MDEsNyBAQCBib29sIGludGVsX2RwX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgIAkJaW50ZWxfZW5jb2Rl ci0+ZW5hYmxlID0gdmx2X2VuYWJsZV9kcDsKPj4gICAJCWludGVsX2VuY29kZXItPmRpc2FibGUg PSB2bHZfZGlzYWJsZV9kcDsKPj4gICAJCWludGVsX2VuY29kZXItPnBvc3RfZGlzYWJsZSA9IHZs dl9wb3N0X2Rpc2FibGVfZHA7Cj4+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDUpIHsKPj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7Cj4+ICAgCQlp bnRlbF9lbmNvZGVyLT5wcmVfZW5hYmxlID0gZzR4X3ByZV9lbmFibGVfZHA7Cj4+ICAgCQlpbnRl bF9lbmNvZGVyLT5lbmFibGUgPSBnNHhfZW5hYmxlX2RwOwo+PiAgIAkJaW50ZWxfZW5jb2Rlci0+ ZGlzYWJsZSA9IGlsa19kaXNhYmxlX2RwOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxf bWdyLmMKPj4gaW5kZXggNTFjNWFlNGU5MTE2Li43YmRlNmI5ODUzZTMgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+PiBAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQg aW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPj4gICAJ dW5zaWduZWQgY3J0Y19tYXNrID0gMSA8PCBkcm1fY3J0Y19pbmRleCgmY3J0Yy0+YmFzZSk7Cj4+ ICAgCj4+ICAgCS8qIFBDSCBvbmx5IGF2YWlsYWJsZSBvbiBJTEsrICovCj4+IC0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPCA1KQo+PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDUpKQo+PiAg IAkJcmV0dXJuOwo+PiAgIAo+PiAgIAlpZiAocGxsID09IE5VTEwpCj4+IEBAIC0xODYwLDcgKzE4 NjAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcGxsX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPj4gICB7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkpIHsKPj4g KwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA5KSkgewo+PiAgIAkJdWludDMyX3QgdmFsID0gSTkx NV9SRUFEKExDUExMX0NUTCk7Cj4+ICAgCj4+ICAgCQkvKgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYwo+PiBpbmRleCA3ZWViZmJiOTVlODkuLjk3MDZiZDhkOWU3NyAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPj4gQEAgLTE5Myw3ICsx OTMsNyBAQCBfX2ludGVsX2VuZ2luZV9jb250ZXh0X3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1OCBjbGFzcykKPj4gICAJY2FzZSBWSURFT19ERUNPREVfQ0xBU1M6Cj4+ ICAgCWNhc2UgVklERU9fRU5IQU5DRU1FTlRfQ0xBU1M6Cj4+ICAgCWNhc2UgQ09QWV9FTkdJTkVf Q0xBU1M6Cj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkKPj4gKwkJaWYgKElTX0dF Tl9MVChkZXZfcHJpdiwgOCkpCj4+ICAgCQkJcmV0dXJuIDA7Cj4+ICAgCQlyZXR1cm4gR0VOOF9M Ul9DT05URVhUX09USEVSX1NJWkU7Cj4+ICAgCX0KPj4gQEAgLTY5NiwxMCArNjk2LDEwIEBAIHU2 NCBpbnRlbF9lbmdpbmVfZ2V0X2FjdGl2ZV9oZWFkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5p OTE1Owo+PiAgIAl1NjQgYWN0aGQ7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOCkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpCj4+ICAgCQlhY3RoZCA9IEk5 MTVfUkVBRDY0XzJ4MzIoUklOR19BQ1RIRChlbmdpbmUtPm1taW9fYmFzZSksCj4+ICAgCQkJCQkg UklOR19BQ1RIRF9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPj4gLQllbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDQpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkp Cj4+ICAgCQlhY3RoZCA9IEk5MTVfUkVBRChSSU5HX0FDVEhEKGVuZ2luZS0+bW1pb19iYXNlKSk7 Cj4+ICAgCWVsc2UKPj4gICAJCWFjdGhkID0gSTkxNV9SRUFEKEFDVEhEKTsKPj4gQEAgLTcxMiw3 ICs3MTIsNyBAQCB1NjQgaW50ZWxfZW5naW5lX2dldF9sYXN0X2JhdGNoX2hlYWQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4+ICAgCXU2NCBiYmFkZHI7Cj4+ICAgCj4+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkp Cj4+ICAgCQliYmFkZHIgPSBJOTE1X1JFQUQ2NF8yeDMyKFJJTkdfQkJBRERSKGVuZ2luZS0+bW1p b19iYXNlKSwKPj4gICAJCQkJCSAgUklOR19CQkFERFJfVURXKGVuZ2luZS0+bW1pb19iYXNlKSk7 Cj4+ICAgCWVsc2UKPj4gQEAgLTE0NzIsNyArMTQ3Miw3IEBAIHN0YXRpYyBib29sIHJpbmdfaXNf aWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAgCQlpZGxlID0gZmFsc2U7 Cj4+ICAgCj4+ICAgCS8qIE5vIGJpdCBmb3IgZ2VuMiwgc28gYXNzdW1lIHRoZSBDUyBwYXJzZXIg aXMgaWRsZSAqLwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMiAmJiAhKEk5MTVfUkVB RF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpKQo+PiArCWlmIChJU19HRU5fR1QoZGV2X3ByaXYs IDIpICYmICEoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURMRSkpCj4+ICAgCQlpZGxl ID0gZmFsc2U7Cj4+ICAgCj4+ICAgCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPj4g QEAgLTE3NzcsNyArMTc3Nyw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAo+PiAgIAlkcm1fcHJpbnRmKG0sICJcdFJJTkdfQ1RMOiAgIDB4 JTA4eCVzXG4iLAo+PiAgIAkJICAgSTkxNV9SRUFEKFJJTkdfQ1RMKGVuZ2luZS0+bW1pb19iYXNl KSksCj4+ICAgCQkgICBJOTE1X1JFQUQoUklOR19DVEwoZW5naW5lLT5tbWlvX2Jhc2UpKSAmIChS SU5HX1dBSVQgfCBSSU5HX1dBSVRfU0VNQVBIT1JFKSA/ICIgW3dhaXRpbmddIiA6ICIiKTsKPj4g LQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPiAyKSB7Cj4+ICsJaWYgKElTX0dFTl9HVChl bmdpbmUtPmk5MTUsIDIpKSB7Cj4+ICAgCQlkcm1fcHJpbnRmKG0sICJcdFJJTkdfTU9ERTogIDB4 JTA4eCVzXG4iLAo+PiAgIAkJCSAgIEk5MTVfUkVBRChSSU5HX01JX01PREUoZW5naW5lLT5tbWlv X2Jhc2UpKSwKPj4gICAJCQkgICBJOTE1X1JFQUQoUklOR19NSV9NT0RFKGVuZ2luZS0+bW1pb19i YXNlKSkgJiAoTU9ERV9JRExFKSA/ICIgW2lkbGVdIiA6ICIiKTsKPj4gQEAgLTE4MDAsMTYgKzE4 MDAsMTYgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4+ICAgCWFkZHIgPSBpbnRlbF9lbmdpbmVfZ2V0X2xhc3RfYmF0Y2hfaGVhZChlbmdp bmUpOwo+PiAgIAlkcm1fcHJpbnRmKG0sICJcdEJCQUREUjogMHglMDh4XyUwOHhcbiIsCj4+ICAg CQkgICB1cHBlcl8zMl9iaXRzKGFkZHIpLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTsKPj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4 KSkKPj4gICAJCWFkZHIgPSBJOTE1X1JFQUQ2NF8yeDMyKFJJTkdfRE1BX0ZBREQoZW5naW5lLT5t bWlvX2Jhc2UpLAo+PiAgIAkJCQkJUklOR19ETUFfRkFERF9VRFcoZW5naW5lLT5tbWlvX2Jhc2Up KTsKPj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4+ICsJZWxzZSBpZiAo SVNfR0VOX0dURShkZXZfcHJpdiwgNCkpCj4+ICAgCQlhZGRyID0gSTkxNV9SRUFEKFJJTkdfRE1B X0ZBREQoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPj4gICAJZWxzZQo+PiAgIAkJYWRkciA9IEk5MTVf UkVBRChETUFfRkFERF9JOFhYKTsKPj4gICAJZHJtX3ByaW50ZihtLCAiXHRETUFfRkFERFI6IDB4 JTA4eF8lMDh4XG4iLAo+PiAgIAkJICAgdXBwZXJfMzJfYml0cyhhZGRyKSwgbG93ZXJfMzJfYml0 cyhhZGRyKSk7Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+PiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+PiAgIAkJZHJtX3ByaW50ZihtLCAiXHRJUEVJUjog MHglMDh4XG4iLAo+PiAgIAkJCSAgIEk5MTVfUkVBRChSSU5HX0lQRUlSKGVuZ2luZS0+bW1pb19i YXNlKSkpOwo+PiAgIAkJZHJtX3ByaW50ZihtLCAiXHRJUEVIUjogMHglMDh4XG4iLAo+PiBAQCAt MTg2OSw3ICsxODY5LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCj4+ICAgCQl9Cj4+ICAgCQlkcm1fcHJpbnRmKG0sICJcdFx0SFcgYWN0 aXZlPyAweCV4XG4iLCBleGVjbGlzdHMtPmFjdGl2ZSk7Cj4+ICAgCQlyY3VfcmVhZF91bmxvY2so KTsKPj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA2KSB7Cj4+ICsJfSBlbHNl IGlmIChJU19HRU5fR1QoZGV2X3ByaXYsIDYpKSB7Cj4+ICAgCQlkcm1fcHJpbnRmKG0sICJcdFBQ X0RJUl9CQVNFOiAweCUwOHhcbiIsCj4+ICAgCQkJICAgSTkxNV9SRUFEKFJJTkdfUFBfRElSX0JB U0UoZW5naW5lKSkpOwo+PiAgIAkJZHJtX3ByaW50ZihtLCAiXHRQUF9ESVJfQkFTRV9SRUFEOiAw eCUwOHhcbiIsCj4+IEBAIC0xODk5LDcgKzE4OTksNyBAQCB2b2lkIGludGVsX2VuZ2luZV9kdW1w KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4gICAJfQo+PiAgIAlzcGluX3VubG9j a19pcnEoJmItPnJiX2xvY2spOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDYpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpIHsKPj4gICAJCWRybV9wcmlu dGYobSwgIlx0UklOR19JTVI6ICUwOHhcbiIsIEk5MTVfUkVBRF9JTVIoZW5naW5lKSk7Cj4+ICAg CX0KPj4gICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPj4gaW5kZXggMGFkODU0MDk1YzM4 Li4zMGRhNjA4NWY4NGUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2ZiYy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4+IEBAIC00 OCwxNyArNDgsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGZiY19zdXBwb3J0ZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAo+PiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBm YmNfb25fcGlwZV9hX29ubHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAg IHsKPj4gLQlyZXR1cm4gSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2 KSA+PSA4Owo+PiArCXJldHVybiBJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19HRU5fR1RFKGRl dl9wcml2LCA4KTsKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIGlubGluZSBib29sIGZiY19vbl9w bGFuZV9hX29ubHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4g LQlyZXR1cm4gSU5URUxfR0VOKGRldl9wcml2KSA8IDQ7Cj4+ICsJcmV0dXJuIElTX0dFTl9MVChk ZXZfcHJpdiwgNCk7Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBub19mYmNf b25fbXVsdGlwbGVfcGlwZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAg IHsKPj4gLQlyZXR1cm4gSU5URUxfR0VOKGRldl9wcml2KSA8PSAzOwo+PiArCXJldHVybiBJU19H RU5fTFRFKGRldl9wcml2LCAzKTsKPj4gICB9Cj4+ICAgCj4+ICAgLyoKPj4gQEAgLTk2LDcgKzk2 LDcgQEAgc3RhdGljIGludCBpbnRlbF9mYmNfY2FsY3VsYXRlX2NmYl9zaXplKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJaW50ZWxfZmJjX2dldF9wbGFuZV9zb3VyY2Vf c2l6ZShjYWNoZSwgTlVMTCwgJmxpbmVzKTsKPj4gICAJaWYgKElTX0dFTjcoZGV2X3ByaXYpKQo+ PiAgIAkJbGluZXMgPSBtaW4obGluZXMsIDIwNDgpOwo+PiAtCWVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOCkKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4KSkKPj4g ICAJCWxpbmVzID0gbWluKGxpbmVzLCAyNTYwKTsKPj4gICAKPj4gICAJLyogSGFyZHdhcmUgbmVl ZHMgdGhlIGZ1bGwgYnVmZmVyIHN0cmlkZSwgbm90IGp1c3QgdGhlIGFjdGl2ZSBhcmVhLiAqLwo+ PiBAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbjdfZmJjX2FjdGl2YXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAKPj4gICBzdGF0aWMgYm9vbCBpbnRl bF9mYmNfaHdfaXNfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4g ICB7Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKPj4gKwlpZiAoSVNfR0VOX0dU RShkZXZfcHJpdiwgNSkpCj4+ICAgCQlyZXR1cm4gaWxrX2ZiY19pc19hY3RpdmUoZGV2X3ByaXYp Owo+PiAgIAllbHNlIGlmIChJU19HTTQ1KGRldl9wcml2KSkKPj4gICAJCXJldHVybiBnNHhfZmJj X2lzX2FjdGl2ZShkZXZfcHJpdik7Cj4+IEBAIC0zNzEsOSArMzcxLDkgQEAgc3RhdGljIHZvaWQg aW50ZWxfZmJjX2h3X2FjdGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK Pj4gICAKPj4gICAJZmJjLT5hY3RpdmUgPSB0cnVlOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDcpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDcpKQo+PiAgIAkJ Z2VuN19mYmNfYWN0aXZhdGUoZGV2X3ByaXYpOwo+PiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNSkKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA1KSkKPj4gICAJ CWlsa19mYmNfYWN0aXZhdGUoZGV2X3ByaXYpOwo+PiAgIAllbHNlIGlmIChJU19HTTQ1KGRldl9w cml2KSkKPj4gICAJCWc0eF9mYmNfYWN0aXZhdGUoZGV2X3ByaXYpOwo+PiBAQCAtMzg3LDcgKzM4 Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiY19od19kZWFjdGl2YXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAKPj4gICAJZmJjLT5hY3RpdmUgPSBmYWxzZTsKPj4g ICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KQo+PiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA1KSkKPj4gICAJCWlsa19mYmNfZGVhY3RpdmF0ZShkZXZfcHJpdik7Cj4+ICAg CWVsc2UgaWYgKElTX0dNNDUoZGV2X3ByaXYpKQo+PiAgIAkJZzR4X2ZiY19kZWFjdGl2YXRlKGRl dl9wcml2KTsKPj4gQEAgLTU2OCw3ICs1NjgsNyBAQCBzdGF0aWMgaW50IGZpbmRfY29tcHJlc3Np b25fdGhyZXNob2xkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAKPj4g ICAJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlX2luX3JhbmdlKGRldl9wcml2LCBu b2RlLCBzaXplID4+PSAxLAo+PiAgIAkJCQkJCSAgIDQwOTYsIDAsIGVuZCk7Cj4+IC0JaWYgKHJl dCAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQpIHsKPj4gKwlpZiAocmV0ICYmIElTX0dFTl9M VEUoZGV2X3ByaXYsIDQpKSB7Cj4+ICAgCQlyZXR1cm4gMDsKPj4gICAJfSBlbHNlIGlmIChyZXQp IHsKPj4gICAJCWNvbXByZXNzaW9uX3RocmVzaG9sZCA8PD0gMTsKPj4gQEAgLTYwMSw3ICs2MDEs NyBAQCBzdGF0aWMgaW50IGludGVsX2ZiY19hbGxvY19jZmIoc3RydWN0IGludGVsX2NydGMgKmNy dGMpCj4+ICAgCj4+ICAgCWZiYy0+dGhyZXNob2xkID0gcmV0Owo+PiAgIAo+PiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDUpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKQo+ PiAgIAkJSTkxNV9XUklURShJTEtfRFBGQ19DQl9CQVNFLCBmYmMtPmNvbXByZXNzZWRfZmIuc3Rh cnQpOwo+PiAgIAllbHNlIGlmIChJU19HTTQ1KGRldl9wcml2KSkgewo+PiAgIAkJSTkxNV9XUklU RShEUEZDX0NCX0JBU0UsIGZiYy0+Y29tcHJlc3NlZF9mYi5zdGFydCk7Cj4+IEBAIC03MjQsMTAg KzcyNCwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNfaHdfdHJhY2tpbmdfY292ZXJzX3NjcmVl bihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPj4gICAJc3RydWN0IGludGVsX2ZiYyAqZmJjID0g JmRldl9wcml2LT5mYmM7Cj4+ICAgCXVuc2lnbmVkIGludCBlZmZlY3RpdmVfdywgZWZmZWN0aXZl X2gsIG1heF93LCBtYXhfaDsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4 IHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDgpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4+ICAgCQltYXhfdyA9IDQwOTY7Cj4+ICAg CQltYXhfaCA9IDQwOTY7Cj4+IC0JfSBlbHNlIGlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVM X0dFTihkZXZfcHJpdikgPj0gNSkgewo+PiArCX0gZWxzZSBpZiAoSVNfRzRYKGRldl9wcml2KSB8 fCBJU19HRU5fR1RFKGRldl9wcml2LCA1KSkgewo+PiAgIAkJbWF4X3cgPSA0MDk2Owo+PiAgIAkJ bWF4X2ggPSAyMDQ4Owo+PiAgIAl9IGVsc2Ugewo+PiBAQCAtODIwLDcgKzgyMCw3IEBAIHN0YXRp YyBib29sIGludGVsX2ZiY19jYW5fYWN0aXZhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+ ICAgCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAiZnJhbWVidWZmZXIgbm90IHRpbGVkIG9yIGZlbmNl ZCI7Cj4+ICAgCQlyZXR1cm4gZmFsc2U7Cj4+ICAgCX0KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8PSA0ICYmICFJU19HNFgoZGV2X3ByaXYpICYmCj4+ICsJaWYgKElTX0dFTl9MVEUoZGV2 X3ByaXYsIDQpICYmICFJU19HNFgoZGV2X3ByaXYpICYmCj4+ICAgCSAgICBjYWNoZS0+cGxhbmUu cm90YXRpb24gIT0gRFJNX01PREVfUk9UQVRFXzApIHsKPj4gICAJCWZiYy0+bm9fZmJjX3JlYXNv biA9ICJyb3RhdGlvbiB1bnN1cHBvcnRlZCI7Cj4+ICAgCQlyZXR1cm4gZmFsc2U7Cj4+IEBAIC0x MzI1LDcgKzEzMjUsNyBAQCBzdGF0aWMgaW50IGludGVsX3Nhbml0aXplX2ZiY19vcHRpb24oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAlpZiAoIUhBU19GQkMoZGV2X3By aXYpKQo+PiAgIAkJcmV0dXJuIDA7Cj4+ICAgCj4+IC0JaWYgKElTX0JST0FEV0VMTChkZXZfcHJp dikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19CUk9BRFdFTEwoZGV2 X3ByaXYpIHx8IElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJcmV0dXJuIDE7Cj4+ICAg Cj4+ICAgCXJldHVybiAwOwo+PiBAQCAtMTM4Miw3ICsxMzgyLDcgQEAgdm9pZCBpbnRlbF9mYmNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCX0KPj4gICAKPj4g ICAJLyogVGhpcyB2YWx1ZSB3YXMgcHVsbGVkIG91dCBvZiBzb21lb25lJ3MgaGF0ICovCj4+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCAmJiAhSVNfR000NShkZXZfcHJpdikpCj4+ICsJ aWYgKElTX0dFTl9MVEUoZGV2X3ByaXYsIDQpICYmICFJU19HTTQ1KGRldl9wcml2KSkKPj4gICAJ CUk5MTVfV1JJVEUoRkJDX0NPTlRST0wsIDUwMCA8PCBGQkNfQ1RMX0lOVEVSVkFMX1NISUZUKTsK Pj4gICAKPj4gICAJLyogV2Ugc3RpbGwgZG9uJ3QgaGF2ZSBhbnkgc29ydCBvZiBoYXJkd2FyZSBz dGF0ZSByZWFkb3V0IGZvciBGQkMsIHNvCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9maWZvX3VuZGVycnVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m aWZvX3VuZGVycnVuLmMKPj4gaW5kZXggNzdjMTIzY2M4ODE3Li4wNTIxMjA4MDQxYWIgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZpZm9fdW5kZXJydW4uYwo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9maWZvX3VuZGVycnVuLmMKPj4gQEAgLTI2 NCw3ICsyNjQsNyBAQCBzdGF0aWMgYm9vbCBfX2ludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9y ZXBvcnRpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gICAJCWlyb25sYWtlX3NldF9maWZv X3VuZGVycnVuX3JlcG9ydGluZyhkZXYsIHBpcGUsIGVuYWJsZSk7Cj4+ICAgCWVsc2UgaWYgKElT X0dFTjcoZGV2X3ByaXYpKQo+PiAgIAkJaXZ5YnJpZGdlX3NldF9maWZvX3VuZGVycnVuX3JlcG9y dGluZyhkZXYsIHBpcGUsIGVuYWJsZSwgb2xkKTsKPj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDgpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpCj4+ICAg CQlicm9hZHdlbGxfc2V0X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldiwgcGlwZSwgZW5hYmxl KTsKPj4gICAKPj4gICAJcmV0dXJuIG9sZDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFu Z2NoZWNrLmMKPj4gaW5kZXggNDJlNDVhZTg3MzkzLi4zZTRkYjFjMDMyOWQgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jCj4+IEBAIC05Nyw3ICs5Nyw3IEBAIHNl bWFwaG9yZV93YWl0c19mb3Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgKnNl cW5vKQo+PiAgIAkgKiByaW5nYnVmZmVyIGl0c2VsZi4KPj4gICAJICovCj4+ICAgCWhlYWQgPSBJ OTE1X1JFQURfSEVBRChlbmdpbmUpICYgSEVBRF9BRERSOwo+PiAtCWJhY2t3YXJkcyA9IChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDgpID8gNSA6IDQ7Cj4+ICsJYmFja3dhcmRzID0gKElTX0dFTl9H VEUoZGV2X3ByaXYsIDgpKSA/IDUgOiA0Owo+PiAgIAl2YWRkciA9ICh2b2lkIF9faW9tZW0gKill bmdpbmUtPmJ1ZmZlci0+dmFkZHI7Cj4+ICAgCj4+ICAgCWZvciAoaSA9IGJhY2t3YXJkczsgaTsg LS1pKSB7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4gaW5kZXggMTRjYTVkMzA1N2E3 Li45YzVlZTJkYWU5ZmEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4gQEAg LTY1MSw3ICs2NTEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZGNwX3Byb3Bfd29yayhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCj4+ICAgYm9vbCBpc19oZGNwX3N1cHBvcnRlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0KQo+PiAgIHsKPj4gICAJLyog UE9SVCBFIGRvZXNuJ3QgaGF2ZSBIRENQLCBhbmQgUE9SVCBGIGlzIGRpc2FibGVkICovCj4+IC0J cmV0dXJuICgoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4IHx8IElTX0hBU1dFTEwoZGV2X3ByaXYp KSAmJgo+PiArCXJldHVybiAoKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpIHx8IElTX0hBU1dFTEwo ZGV2X3ByaXYpKSAmJgo+PiAgIAkJIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIHBvcnQgPCBQ T1JUX0UpOwo+PiAgIH0KPj4gICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+PiBpbmRl eCBmNWQ3YmZiNDMwMDYuLmVhNjRkZjUwODA1MiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkbWkuYwo+PiBAQCAtMTQ4MSwxMSArMTQ4MSwxMSBAQCBzdGF0aWMgaW50IGludGVsX2hkbWlf c291cmNlX21heF90bWRzX2Nsb2NrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+PiAg IAkJJmRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5mb1tlbmNvZGVyLT5wb3J0XTsKPj4gICAJaW50 IG1heF90bWRzX2Nsb2NrOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEw IHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2 LCAxMCkgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4+ICAgCQltYXhfdG1kc19jbG9jayA9 IDU5NDAwMDsKPj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggfHwgSVNfSEFT V0VMTChkZXZfcHJpdikpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkgfHwg SVNfSEFTV0VMTChkZXZfcHJpdikpCj4+ICAgCQltYXhfdG1kc19jbG9jayA9IDMwMDAwMDsKPj4g LQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCj4+ICsJZWxzZSBpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgNSkpCj4+ICAgCQltYXhfdG1kc19jbG9jayA9IDIyNTAwMDsKPj4gICAJ ZWxzZQo+PiAgIAkJbWF4X3RtZHNfY2xvY2sgPSAxNjUwMDA7Cj4+IEBAIC0xNzU0LDcgKzE3NTQs NyBAQCBib29sIGludGVsX2hkbWlfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4+ICAgCj4+ICAgCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0gNDsKPj4gICAK Pj4gLQlpZiAoc2NkYy0+c2NyYW1ibGluZy5zdXBwb3J0ZWQgJiYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTAgfHwKPj4gKwlpZiAoc2NkYy0+c2NyYW1ibGluZy5zdXBwb3J0ZWQgJiYgKElTX0dF Tl9HVEUoZGV2X3ByaXYsIDEwKSB8fAo+PiAgIAkJCQkJICAgSVNfR0VNSU5JTEFLRShkZXZfcHJp dikpKSB7Cj4+ICAgCQlpZiAoc2NkYy0+c2NyYW1ibGluZy5sb3dfcmF0ZXMpCj4+ICAgCQkJcGlw ZV9jb25maWctPmhkbWlfc2NyYW1ibGluZyA9IHRydWU7Cj4+IEBAIC0yMzI0LDcgKzIzMjQsNyBA QCB2b2lkIGludGVsX2hkbWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqaW50ZWxfZGlnX3BvcnQsCj4+ICAgCWNvbm5lY3Rvci0+ZG91Ymxlc2Nhbl9hbGxvd2VkID0g MDsKPj4gICAJY29ubmVjdG9yLT5zdGVyZW9fYWxsb3dlZCA9IDE7Cj4+ICAgCj4+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4+ICsJ aWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDEwKSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkK Pj4gICAJCWNvbm5lY3Rvci0+eWNiY3JfNDIwX2FsbG93ZWQgPSB0cnVlOwo+PiAgIAo+PiAgIAlp bnRlbF9oZG1pLT5kZGNfYnVzID0gaW50ZWxfaGRtaV9kZGNfcGluKGRldl9wcml2LCBwb3J0KTsK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gaW5kZXggMzgwYzA4MzhkOGIzLi4xYTA4ZjZi ZGFmNTAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IEBAIC0xNDg4LDcgKzE0 ODgsNyBAQCBzdGF0aWMgdm9pZCBlbmFibGVfZXhlY2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPj4gICAJICogZGVlcGVyIEZJRk8gaXQncyBub3QgbmVlZGVkIGFuZCBpdCdz IG5vdCB3b3J0aCBhZGRpbmcKPj4gICAJICogbW9yZSBzdGF0ZW1lbnRzIHRvIHRoZSBpcnEgaGFu ZGxlciB0byBzdXBwb3J0IGl0Lgo+PiAgIAkgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSAxMSkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgMTEpKQo+PiAgIAkJSTkxNV9X UklURShSSU5HX01PREVfR0VONyhlbmdpbmUpLAo+PiAgIAkJCSAgIF9NQVNLRURfQklUX0RJU0FC TEUoR0VOMTFfR0ZYX0RJU0FCTEVfTEVHQUNZX01PREUpKTsKPj4gICAJZWxzZQo+PiBAQCAtMjA1 Nyw3ICsyMDU3LDcgQEAgaW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4+ICAgCQllbmdpbmUtPmlycV9rZWVwX21hc2sgfD0gR1RfUkVO REVSX0wzX1BBUklUWV9FUlJPUl9JTlRFUlJVUFQ7Cj4+ICAgCj4+ICAgCS8qIE92ZXJyaWRlIHNv bWUgZm9yIHJlbmRlciByaW5nLiAqLwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJZW5naW5lLT5pbml0X2h3 ID0gZ2VuOV9pbml0X3JlbmRlcl9yaW5nOwo+PiAgIAllbHNlCj4+ICAgCQllbmdpbmUtPmluaXRf aHcgPSBnZW44X2luaXRfcmVuZGVyX3Jpbmc7Cj4+IEBAIC0yMTAwLDcgKzIxMDAsNyBAQCBtYWtl X3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAkgKiBObyBleHBs aWNpdCBSUENTIHJlcXVlc3QgaXMgbmVlZGVkIHRvIGVuc3VyZSBmdWxsCj4+ICAgCSAqIHNsaWNl L3N1YnNsaWNlL0VVIGVuYWJsZW1lbnQgcHJpb3IgdG8gR2VuOS4KPj4gICAJKi8KPj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDkpCj4+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgOSkp Cj4+ICAgCQlyZXR1cm4gMDsKPj4gICAKPj4gICAJLyoKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2 ZHMuYwo+PiBpbmRleCA0Njc3YWMwYjEwZDcuLjU3NzM4NWNiM2M4ZCAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2x2ZHMuYwo+PiBAQCAtMTM5LDEyICsxMzksMTIgQEAgc3RhdGljIHZvaWQg aW50ZWxfbHZkc19nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiAg IAo+PiAgIAlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+ PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkKPj4gKwlpZiAoSVNfR0VOX0xU KGRldl9wcml2LCA1KSkKPj4gICAJCXBpcGVfY29uZmlnLT5nbWNoX3BmaXQubHZkc19ib3JkZXJf Yml0cyA9Cj4+ICAgCQkJdG1wICYgTFZEU19CT1JERVJfRU5BQkxFOwo+PiAgIAo+PiAgIAkvKiBn ZW4yLzMgc3RvcmUgZGl0aGVyIHN0YXRlIGluIHBmaXQgY29udHJvbCwgbmVlZHMgdG8gbWF0Y2gg Ki8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKPj4gKwlpZiAoSVNfR0VOX0xU KGRldl9wcml2LCA0KSkgewo+PiAgIAkJdG1wID0gSTkxNV9SRUFEKFBGSVRfQ09OVFJPTCk7Cj4+ ICAgCj4+ICAgCQlwaXBlX2NvbmZpZy0+Z21jaF9wZml0LmNvbnRyb2wgfD0gdG1wICYgUEFORUxf OFRPNl9ESVRIRVJfRU5BQkxFOwo+PiBAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2x2ZHNfcHBzX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4+ICAgCS8qIENvbnZlcnQgZnJvbSAxMDBtcyB0byAxMDB1cyB1bml0cyAqLwo+PiAgIAlw cHMtPnQ0ID0gdmFsICogMTAwMDsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 PSA0ICYmCj4+ICsJaWYgKElTX0dFTl9MVEUoZGV2X3ByaXYsIDQpICYmCj4+ICAgCSAgICBwcHMt PnQxX3QyID09IDAgJiYgcHBzLT50NSA9PSAwICYmIHBwcy0+dDMgPT0gMCAmJiBwcHMtPnR4ID09 IDApIHsKPj4gICAJCURSTV9ERUJVR19LTVMoIlBhbmVsIHBvd2VyIHRpbWluZ3MgdW5pbml0aWFs aXplZCwgIgo+PiAgIAkJCSAgICAgICJzZXR0aW5nIGRlZmF1bHRzXG4iKTsKPj4gQEAgLTM5Niw3 ICszOTYsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9sdmRzX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+PiAgIAl1bnNpZ25lZCBpbnQgbHZkc19icHA7 Cj4+ICAgCj4+ICAgCS8qIFNob3VsZCBuZXZlciBoYXBwZW4hISAqLwo+PiAtCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDwgNCAmJiBpbnRlbF9jcnRjLT5waXBlID09IDApIHsKPj4gKwlpZiAoSVNf R0VOX0xUKGRldl9wcml2LCA0KSAmJiBpbnRlbF9jcnRjLT5waXBlID09IDApIHsKPj4gICAJCURS TV9FUlJPUigiQ2FuJ3Qgc3VwcG9ydCBMVkRTIG9uIHBpcGUgQVxuIik7Cj4+ICAgCQlyZXR1cm4g ZmFsc2U7Cj4+ICAgCX0KPj4gQEAgLTkxNCw3ICs5MTQsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9s dmRzX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCj4+ ICAgCS8qIE90aGVyd2lzZSBMVkRTIHdhcyBvbmx5IGF0dGFjaGVkIHRvIG1vYmlsZSBwcm9kdWN0 cywKPj4gICAJICogZXhjZXB0IGZvciB0aGUgaW5nbG9yaW91cyA4MzBnbSAqLwo+PiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQgJiYKPj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwg NCkgJiYKPj4gICAJICAgIElTX01PQklMRShkZXZfcHJpdikgJiYgIUlTX0k4MzAoZGV2X3ByaXYp KQo+PiAgIAkJcmV0dXJuIHRydWU7Cj4+ICAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMK Pj4gaW5kZXggYWJiN2E4YzFlMzQwLi4wMmIyNzY4YjU1NmUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9tb2NzLmMKPj4gQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgYm9vbCBnZXRfbW9j c19zZXR0aW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCQl0YWJs ZS0+dGFibGUgPSBicm94dG9uX21vY3NfdGFibGU7Cj4+ICAgCQlyZXN1bHQgPSB0cnVlOwo+PiAg IAl9IGVsc2Ugewo+PiAtCQlXQVJOX09OQ0UoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5LAo+PiAr CQlXQVJOX09OQ0UoSVNfR0VOX0dURShkZXZfcHJpdiwgOSksCj4+ICAgCQkJICAiUGxhdGZvcm0g dGhhdCBzaG91bGQgaGF2ZSBhIE1PQ1MgdGFibGUgZG9lcyBub3QuXG4iKTsKPj4gICAJfQo+PiAg IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4+IGluZGV4IDQxZTk0NjVkNDRh OC4uNzUyMDg1YTJhMmQwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9vdmVybGF5LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5j Cj4+IEBAIC05NDUsNyArOTQ1LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlX3BmaXRfdnNjYWxlX3Jh dGlvKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+PiAgIAkvKiBYWFg6IFRoaXMgaXMg bm90IHRoZSBzYW1lIGxvZ2ljIGFzIGluIHRoZSB4b3JnIGRyaXZlciwgYnV0IG1vcmUgaW4KPj4g ICAJICogbGluZSB3aXRoIHRoZSBpbnRlbCBkb2N1bWVudGF0aW9uIGZvciB0aGUgaTk2NQo+PiAg IAkgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4+ICsJaWYgKElTX0dF Tl9HVEUoZGV2X3ByaXYsIDQpKSB7Cj4+ICAgCQkvKiBvbiBpOTY1IHVzZSB0aGUgUEdNIHJlZyB0 byByZWFkIG91dCB0aGUgYXV0b3NjYWxlciB2YWx1ZXMgKi8KPj4gICAJCXJhdGlvID0gSTkxNV9S RUFEKFBGSVRfUEdNX1JBVElPUykgPj4gUEZJVF9WRVJUX1NDQUxFX1NISUZUXzk2NTsKPj4gICAJ fSBlbHNlIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVs LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4+IGluZGV4IDc4YTUzYzhi MTc4OS4uNTU3MjQ5NTgzZjhlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wYW5lbC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMK Pj4gQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIGludGVsX2dtY2hfcGFuZWxfZml0dGluZyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPj4gICAJCWJyZWFrOwo+PiAgIAljYXNlIERSTV9N T0RFX1NDQUxFX0FTUEVDVDoKPj4gICAJCS8qIFNjYWxlIGJ1dCBwcmVzZXJ2ZSB0aGUgYXNwZWN0 IHJhdGlvICovCj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4+ICsJCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA0KSkKPj4gICAJCQlpOTY1X3NjYWxlX2FzcGVjdChwaXBlX2Nv bmZpZywgJnBmaXRfY29udHJvbCk7Cj4+ICAgCQllbHNlCj4+ICAgCQkJaTl4eF9zY2FsZV9hc3Bl Y3QocGlwZV9jb25maWcsICZwZml0X2NvbnRyb2wsCj4+IEBAIC0zNDAsNyArMzQwLDcgQEAgdm9p ZCBpbnRlbF9nbWNoX3BhbmVsX2ZpdHRpbmcoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMs Cj4+ICAgCQlpZiAocGlwZV9jb25maWctPnBpcGVfc3JjX2ggIT0gYWRqdXN0ZWRfbW9kZS0+Y3J0 Y192ZGlzcGxheSB8fAo+PiAgIAkJICAgIHBpcGVfY29uZmlnLT5waXBlX3NyY193ICE9IGFkanVz dGVkX21vZGUtPmNydGNfaGRpc3BsYXkpIHsKPj4gICAJCQlwZml0X2NvbnRyb2wgfD0gUEZJVF9F TkFCTEU7Cj4+IC0JCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+PiArCQkJaWYgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+PiAgIAkJCQlwZml0X2NvbnRyb2wgfD0gUEZJVF9TQ0FM SU5HX0FVVE87Cj4+ICAgCQkJZWxzZQo+PiAgIAkJCQlwZml0X2NvbnRyb2wgfD0gKFZFUlRfQVVU T19TQ0FMRSB8Cj4+IEBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBpbnRlbF9nbWNoX3BhbmVsX2Zp dHRpbmcoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4+ICAgCj4+ICAgCS8qIDk2NSsg d2FudHMgZnV6enkgZml0dGluZyAqLwo+PiAgIAkvKiBGSVhNRTogaGFuZGxlIG11bHRpcGxlIHBh bmVscyBieSBmYWlsaW5nIGdyYWNlZnVsbHkgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA0KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkKPj4gICAJCXBmaXRfY29u dHJvbCB8PSAoKGludGVsX2NydGMtPnBpcGUgPDwgUEZJVF9QSVBFX1NISUZUKSB8Cj4+ICAgCQkJ CSBQRklUX0ZJTFRFUl9GVVpaWSk7Cj4+ICAgCj4+IEBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBp bnRlbF9nbWNoX3BhbmVsX2ZpdHRpbmcoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4+ ICAgCX0KPj4gICAKPj4gICAJLyogTWFrZSBzdXJlIHByZS05NjUgc2V0IGRpdGhlciBjb3JyZWN0 bHkgZm9yIDE4YnBwIHBhbmVscy4gKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQg JiYgcGlwZV9jb25maWctPnBpcGVfYnBwID09IDE4KQo+PiArCWlmIChJU19HRU5fTFQoZGV2X3By aXYsIDQpICYmIHBpcGVfY29uZmlnLT5waXBlX2JwcCA9PSAxOCkKPj4gICAJCXBmaXRfY29udHJv bCB8PSBQQU5FTF84VE82X0RJVEhFUl9FTkFCTEU7Cj4+ICAgCj4+ICAgCXBpcGVfY29uZmlnLT5n bWNoX3BmaXQuY29udHJvbCA9IHBmaXRfY29udHJvbDsKPj4gQEAgLTQ5Nyw3ICs0OTcsNyBAQCBz dGF0aWMgdTMyIGk5eHhfZ2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCj4+ICAgCXUzMiB2YWw7Cj4+ICAgCj4+ICAgCXZhbCA9IEk5MTVfUkVBRChCTENfUFdN X0NUTCkgJiBCQUNLTElHSFRfRFVUWV9DWUNMRV9NQVNLOwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNCkKPj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA0KSkKPj4gICAJCXZhbCA+ Pj0gMTsKPj4gICAKPj4gICAJaWYgKHBhbmVsLT5iYWNrbGlnaHQuY29tYmluYXRpb25fbW9kZSkg ewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMKPj4gaW5kZXggMWY1Y2Q1NzJh N2ZmLi4wMTdiZDI2MDJjOTkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BpcGVfY3JjLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9j cmMuYwo+PiBAQCAtNjA0LDcgKzYwNCw3IEBAIHN0YXRpYyBpbnQgZ2V0X25ld19jcmNfY3RsX3Jl ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgewo+PiAgIAlpZiAoSVNf R0VOMihkZXZfcHJpdikpCj4+ICAgCQlyZXR1cm4gaTh4eF9waXBlX2NyY19jdGxfcmVnKHNvdXJj ZSwgdmFsKTsKPj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkKPj4gKwllbHNl IGlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDUpKQo+PiAgIAkJcmV0dXJuIGk5eHhfcGlwZV9jcmNf Y3RsX3JlZyhkZXZfcHJpdiwgcGlwZSwgc291cmNlLCB2YWwpOwo+PiAgIAllbHNlIGlmIChJU19W QUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4gICAJCXJl dHVybiB2bHZfcGlwZV9jcmNfY3RsX3JlZyhkZXZfcHJpdiwgcGlwZSwgc291cmNlLCB2YWwpOwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPj4gaW5kZXggN2ExMTJkMDc1YzI0Li4zNzQyMWZlNGMw YTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+PiBAQCAtMjU3MSw5ICsyNTcxLDkg QEAgc3RhdGljIHVpbnQzMl90IGlsa19jb21wdXRlX2ZiY193bShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlLAo+PiAgIHN0YXRpYyB1bnNpZ25lZCBpbnQKPj4gICBpbGtfZGlz cGxheV9maWZvX3NpemUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ PiAgIHsKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+PiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA4KSkKPj4gICAJCXJldHVybiAzMDcyOwo+PiAtCWVsc2UgaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNykKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA3 KSkKPj4gICAJCXJldHVybiA3Njg7Cj4+ICAgCWVsc2UKPj4gICAJCXJldHVybiA1MTI7Cj4+IEBA IC0yNTgzLDEwICsyNTgzLDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQKPj4gICBpbGtfcGxhbmVf d21fcmVnX21heChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAg CQkgICAgIGludCBsZXZlbCwgYm9vbCBpc19zcHJpdGUpCj4+ICAgewo+PiAtCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDgpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKQo+PiAg IAkJLyogQkRXIHByaW1hcnkvc3ByaXRlIHBsYW5lIHdhdGVybWFya3MgKi8KPj4gICAJCXJldHVy biBsZXZlbCA9PSAwID8gMjU1IDogMjA0NzsKPj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDcpCj4+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNykpCj4+ICAgCQkv KiBJVkIvSFNXIHByaW1hcnkvc3ByaXRlIHBsYW5lIHdhdGVybWFya3MgKi8KPj4gICAJCXJldHVy biBsZXZlbCA9PSAwID8gMTI3IDogMTAyMzsKPj4gICAJZWxzZSBpZiAoIWlzX3Nwcml0ZSkKPj4g QEAgLTI2MDAsNyArMjYwMCw3IEBAIGlsa19wbGFuZV93bV9yZWdfbWF4KGNvbnN0IHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICBzdGF0aWMgdW5zaWduZWQgaW50Cj4+ICAg aWxrX2N1cnNvcl93bV9yZWdfbWF4KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgaW50IGxldmVsKQo+PiAgIHsKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3 KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA3KSkKPj4gICAJCXJldHVybiBsZXZlbCA9 PSAwID8gNjMgOiAyNTU7Cj4+ICAgCWVsc2UKPj4gICAJCXJldHVybiBsZXZlbCA9PSAwID8gMzEg OiA2MzsKPj4gQEAgLTI2MDgsNyArMjYwOCw3IEBAIGlsa19jdXJzb3Jfd21fcmVnX21heChjb25z dCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBsZXZlbCkKPj4gICAKPj4g ICBzdGF0aWMgdW5zaWduZWQgaW50IGlsa19mYmNfd21fcmVnX21heChjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgewo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDgpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKQo+PiAgIAkJcmV0dXJu IDMxOwo+PiAgIAllbHNlCj4+ICAgCQlyZXR1cm4gMTU7Cj4+IEBAIC0yNjM3LDcgKzI2MzcsNyBA QCBzdGF0aWMgdW5zaWduZWQgaW50IGlsa19wbGFuZV93bV9tYXgoY29uc3Qgc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPj4gICAJCSAqIEZJRk8gc2l6ZSBpcyBvbmx5IGhhbGYgb2YgdGhlIHNlbGYK Pj4gICAJCSAqIHJlZnJlc2ggRklGTyBzaXplIG9uIElMSy9TTkIuCj4+ICAgCQkgKi8KPj4gLQkJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNikKPj4gKwkJaWYgKElTX0dFTl9MVEUoZGV2X3By aXYsIDYpKQo+PiAgIAkJCWZpZm9fc2l6ZSAvPSAyOwo+PiAgIAl9Cj4+ICAgCj4+IEBAIC0yNzk4 LDcgKzI3OTgsNyBAQCBoc3dfY29tcHV0ZV9saW5ldGltZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlKQo+PiAgIHN0YXRpYyB2b2lkIGludGVsX3JlYWRfd21fbGF0ZW5j eShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCQkJCSAgdWludDE2X3Qg d21bOF0pCj4+ICAgewo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPj4gKwlp ZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPj4gICAJCXVpbnQzMl90IHZhbDsKPj4gICAJ CWludCByZXQsIGk7Cj4+ICAgCQlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2 ZWwoZGV2X3ByaXYpOwo+PiBAQCAtMjg4MywxNCArMjg4MywxNCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9yZWFkX3dtX2xhdGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAg IAkJd21bMl0gPSAoc3NrcGQgPj4gMTIpICYgMHhGRjsKPj4gICAJCXdtWzNdID0gKHNza3BkID4+ IDIwKSAmIDB4MUZGOwo+PiAgIAkJd21bNF0gPSAoc3NrcGQgPj4gMzIpICYgMHgxRkY7Cj4+IC0J fSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPj4gKwl9IGVsc2UgaWYgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDYpKSB7Cj4+ICAgCQl1aW50MzJfdCBzc2twZCA9IEk5MTVfUkVB RChNQ0hfU1NLUEQpOwo+PiAgIAo+PiAgIAkJd21bMF0gPSAoc3NrcGQgPj4gU1NLUERfV00wX1NI SUZUKSAmIFNTS1BEX1dNX01BU0s7Cj4+ICAgCQl3bVsxXSA9IChzc2twZCA+PiBTU0tQRF9XTTFf U0hJRlQpICYgU1NLUERfV01fTUFTSzsKPj4gICAJCXdtWzJdID0gKHNza3BkID4+IFNTS1BEX1dN Ml9TSElGVCkgJiBTU0tQRF9XTV9NQVNLOwo+PiAgIAkJd21bM10gPSAoc3NrcGQgPj4gU1NLUERf V00zX1NISUZUKSAmIFNTS1BEX1dNX01BU0s7Cj4+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDUpIHsKPj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7 Cj4+ICAgCQl1aW50MzJfdCBtbHRyID0gSTkxNV9SRUFEKE1MVFJfSUxLKTsKPj4gICAKPj4gICAJ CS8qIElMSyBwcmltYXJ5IExQMCBsYXRlbmN5IGlzIDcwMCBucyAqLwo+PiBAQCAtMjkyNSwxMSAr MjkyNSwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9maXh1cF9jdXJfd21fbGF0ZW5jeShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgaW50IGlsa193bV9tYXhfbGV2ZWwoY29u c3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4gICAJLyogaG93 IG1hbnkgV00gbGV2ZWxzIGFyZSB3ZSBleHBlY3RpbmcgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPj4gICAJCXJl dHVybiA3Owo+PiAgIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdF TEwoZGV2X3ByaXYpKQo+PiAgIAkJcmV0dXJuIDQ7Cj4+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA2KQo+PiArCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKQo+PiAg IAkJcmV0dXJuIDM7Cj4+ICAgCWVsc2UKPj4gICAJCXJldHVybiAyOwo+PiBAQCAtMjk1NCw3ICsy OTU0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCQkgKiAtIGxhdGVuY2llcyBhcmUgaW4gdXMgb24g Z2VuOS4KPj4gICAJCSAqIC0gYmVmb3JlIHRoZW4sIFdNMSsgbGF0ZW5jeSB2YWx1ZXMgYXJlIGlu IDAuNXVzIHVuaXRzCj4+ICAgCQkgKi8KPj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkKPj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJCWxhdGVuY3kgKj0g MTA7Cj4+ICAgCQllbHNlIGlmIChsZXZlbCA+IDApCj4+ICAgCQkJbGF0ZW5jeSAqPSA1Owo+PiBA QCAtMzA5MCw3ICszMDkwLDcgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4+ICAgCXVzYWJsZV9sZXZlbCA9IG1heF9sZXZl bDsKPj4gICAKPj4gICAJLyogSUxLL1NOQjogTFAyKyB3YXRlcm1hcmtzIG9ubHkgdy9vIHNwcml0 ZXMgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA2ICYmIHBpcGVfd20tPnNwcml0 ZXNfZW5hYmxlZCkKPj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNikgJiYgcGlwZV93bS0+ c3ByaXRlc19lbmFibGVkKQo+PiAgIAkJdXNhYmxlX2xldmVsID0gMTsKPj4gICAKPj4gICAJLyog SUxLL1NOQi9JVkI6IExQMSsgd2F0ZXJtYXJrcyBvbmx5IHcvbyBzY2FsaW5nICovCj4+IEBAIC0z MjM1LDEyICszMjM1LDEyIEBAIHN0YXRpYyB2b2lkIGlsa193bV9tZXJnZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+PiAgIAlpbnQgbGFzdF9lbmFibGVkX2xldmVsID0gbWF4X2xldmVsOwo+PiAg IAo+PiAgIAkvKiBJTEsvU05CL0lWQjogTFAxKyB3YXRlcm1hcmtzIG9ubHkgdy8gc2luZ2xlIHBp cGUgKi8KPj4gLQlpZiAoKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNiB8fCBJU19JVllCUklER0Uo ZGV2X3ByaXYpKSAmJgo+PiArCWlmICgoSVNfR0VOX0xURShkZXZfcHJpdiwgNikgfHwgSVNfSVZZ QlJJREdFKGRldl9wcml2KSkgJiYKPj4gICAJICAgIGNvbmZpZy0+bnVtX3BpcGVzX2FjdGl2ZSA+ IDEpCj4+ICAgCQlsYXN0X2VuYWJsZWRfbGV2ZWwgPSAwOwo+PiAgIAo+PiAgIAkvKiBJTEs6IEZC QyBXTSBtdXN0IGJlIGRpc2FibGVkIGFsd2F5cyAqLwo+PiAtCW1lcmdlZC0+ZmJjX3dtX2VuYWJs ZWQgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDY7Cj4+ICsJbWVyZ2VkLT5mYmNfd21fZW5hYmxl ZCA9IElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpOwo+PiAgIAo+PiAgIAkvKiBtZXJnZSBlYWNoIFdN MSsgbGV2ZWwgKi8KPj4gICAJZm9yIChsZXZlbCA9IDE7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2 ZWwrKykgewo+PiBAQCAtMzMzMCw3ICszMzMwLDcgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVf d21fcmVzdWx0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgIAkJaWYgKHItPmVuYWJsZSkK Pj4gICAJCQlyZXN1bHRzLT53bV9scFt3bV9scCAtIDFdIHw9IFdNMV9MUF9TUl9FTjsKPj4gICAK Pj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPj4gKwkJaWYgKElTX0dFTl9HVEUo ZGV2X3ByaXYsIDgpKQo+PiAgIAkJCXJlc3VsdHMtPndtX2xwW3dtX2xwIC0gMV0gfD0KPj4gICAJ CQkJci0+ZmJjX3ZhbCA8PCBXTTFfTFBfRkJDX1NISUZUX0JEVzsKPj4gICAJCWVsc2UKPj4gQEAg LTMzNDEsNyArMzM0MSw3IEBAIHN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX3Jlc3VsdHMoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPj4gICAJCSAqIEFsd2F5cyBzZXQgV00xU19MUF9FTiB3aGVu IHNwcl92YWwgIT0gMCwgZXZlbiBpZiB0aGUKPj4gICAJCSAqIGxldmVsIGlzIGRpc2FibGVkLiBE b2luZyBvdGhlcndpc2UgY291bGQgY2F1c2UgdW5kZXJydW5zLgo+PiAgIAkJICovCj4+IC0JCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDYgJiYgci0+c3ByX3ZhbCkgewo+PiArCQlpZiAoSVNf R0VOX0xURShkZXZfcHJpdiwgNikgJiYgci0+c3ByX3ZhbCkgewo+PiAgIAkJCVdBUk5fT04od21f bHAgIT0gMSk7Cj4+ICAgCQkJcmVzdWx0cy0+d21fbHBfc3ByW3dtX2xwIC0gMV0gPSBXTTFTX0xQ X0VOIHwgci0+c3ByX3ZhbDsKPj4gICAJCX0gZWxzZQo+PiBAQCAtMzU0Niw3ICszNTQ2LDcgQEAg c3RhdGljIHZvaWQgaWxrX3dyaXRlX3dtX3ZhbHVlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4+ICAgCSAgICBwcmV2aW91cy0+d21fbHBfc3ByWzBdICE9IHJlc3VsdHMtPndt X2xwX3NwclswXSkKPj4gICAJCUk5MTVfV1JJVEUoV00xU19MUF9JTEssIHJlc3VsdHMtPndtX2xw X3NwclswXSk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewo+PiAr CWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA3KSkgewo+PiAgIAkJaWYgKGRpcnR5ICYgV01fRElS VFlfTFAoMikgJiYgcHJldmlvdXMtPndtX2xwX3NwclsxXSAhPSByZXN1bHRzLT53bV9scF9zcHJb MV0pCj4+ICAgCQkJSTkxNV9XUklURShXTTJTX0xQX0lWQiwgcmVzdWx0cy0+d21fbHBfc3ByWzFd KTsKPj4gICAJCWlmIChkaXJ0eSAmIFdNX0RJUlRZX0xQKDMpICYmIHByZXZpb3VzLT53bV9scF9z cHJbMl0gIT0gcmVzdWx0cy0+d21fbHBfc3ByWzJdKQo+PiBAQCAtMzc4NSw3ICszNzg1LDcgQEAg c2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+PiAgIAlkZGJfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5kZGJfc2l6ZTsKPj4gICAJ V0FSTl9PTihkZGJfc2l6ZSA9PSAwKTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDExKQo+PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDExKSkKPj4gICAJCWRkYl9zaXpl IC09IDQ7IC8qIDQgYmxvY2tzIGZvciBieXBhc3MgcGF0aCBhbGxvY2F0aW9uICovCj4+ICAgCj4+ ICAgCS8qCj4+IEBAIC0zOTk2LDcgKzM5OTYsNyBAQCBpbnQgc2tsX2NoZWNrX3BpcGVfbWF4X3Bp eGVsX3JhdGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4+ICAgCWNydGNfY2xvY2sg PSBjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4+ICAgCWRvdGNsayA9IHRv X2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSktPmNkY2xrLmxvZ2ljYWwuY2RjbGs7Cj4+ICAgCj4+ IC0JaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTApCj4+ICsJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTl9HVEUoZGV2X3By aXYsIDEwKSkKPj4gICAJCWRvdGNsayAqPSAyOwo+PiAgIAo+PiAgIAlwaXBlX21heF9waXhlbF9y YXRlID0gZGl2X3JvdW5kX3VwX3UzMl9maXhlZDE2KGRvdGNsaywgcGlwZV9kb3duc2NhbGUpOwo+ PiBAQCAtNDMzMCw3ICs0MzMwLDcgQEAgc2tsX3dtX21ldGhvZDEoY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1aW50MzJfdCBwaXhlbF9yYXRlLAo+PiAgIAl3bV9pbnRl cm1lZGlhdGVfdmFsID0gbGF0ZW5jeSAqIHBpeGVsX3JhdGUgKiBjcHA7Cj4+ICAgCXJldCA9IGRp dl9maXhlZDE2KHdtX2ludGVybWVkaWF0ZV92YWwsIDEwMDAgKiBkYnVmX2Jsb2NrX3NpemUpOwo+ PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+PiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCAxMCkpCj4+ICAgCQlyZXQgPSBhZGRfZml4ZWQxNl91MzIocmV0LCAxKTsK Pj4gICAKPj4gICAJcmV0dXJuIHJldDsKPj4gQEAgLTQ0MzgsNyArNDQzOCw3IEBAIHNrbF9jb21w dXRlX3BsYW5lX3dtX3BhcmFtcyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4+ICAgCXdwLT5wbGFuZV9waXhlbF9yYXRlID0gc2tsX2FkanVzdGVkX3BsYW5lX3BpeGVs X3JhdGUoY3N0YXRlLAo+PiAgIAkJCQkJCQkgICAgIGludGVsX3BzdGF0ZSk7Cj4+ICAgCj4+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZf cHJpdiwgMTEpICYmCj4+ICAgCSAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVEICYmIHdwLT5jcHAgPT0gOCkKPj4gICAJCXdwLT5kYnVmX2Jsb2NrX3NpemUgPSAyNTY7 Cj4+ICAgCWVsc2UKPj4gQEAgLTQ0NzMsNyArNDQ3Myw3IEBAIHNrbF9jb21wdXRlX3BsYW5lX3dt X3BhcmFtcyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCQkJ CQkgICB3cC0+eV9taW5fc2NhbmxpbmVzLAo+PiAgIAkJCQkJICAgd3AtPmRidWZfYmxvY2tfc2l6 ZSk7Cj4+ICAgCj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+PiArCQlpZiAo SVNfR0VOX0dURShkZXZfcHJpdiwgMTApKQo+PiAgIAkJCWludGVybV9wYnBsKys7Cj4+ICAgCj4+ ICAgCQl3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lID0gZGl2X2ZpeGVkMTYoaW50ZXJtX3BicGws Cj4+IEBAIC00NTczLDcgKzQ1NzMsNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dt KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJCX0KPj4gICAJ fQo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Cj4+ICsJaWYgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDExKSkgewo+PiAgIAkJaWYgKHdwLT55X3RpbGVkKSB7Cj4+ICAg CQkJdWludDMyX3QgZXh0cmFfbGluZXM7Cj4+ICAgCQkJdWludF9maXhlZF8xNl8xNl90IGZwX21p bl9kaXNwX2J1Zl9uZWVkZWQ7Cj4+IEBAIC00NzA1LDE0ICs0NzA1LDE0IEBAIHN0YXRpYyB2b2lk IHNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSwKPj4gICAJCWdvdG8gZXhpdDsKPj4gICAKPj4gICAJLyogVHJhbnNpdGlvbiBXTSBhcmUgbm90 IHJlY29tbWVuZGVkIGJ5IEhXIHRlYW0gZm9yIEdFTjkgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8PSA5KQo+PiArCWlmIChJU19HRU5fTFRFKGRldl9wcml2LCA5KSkKPj4gICAJCWdv dG8gZXhpdDsKPj4gICAKPj4gICAJLyogVHJhbnNpdGlvbiBXTSBkb24ndCBtYWtlIGFueSBzZW5z ZSBpZiBpcGMgaXMgZGlzYWJsZWQgKi8KPj4gICAJaWYgKCFkZXZfcHJpdi0+aXBjX2VuYWJsZWQp Cj4+ICAgCQlnb3RvIGV4aXQ7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTApCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDEwKSkKPj4gICAJCXRyYW5zX21pbiA9 IDQ7Cj4+ICAgCj4+ICAgCXRyYW5zX29mZnNldF9iID0gdHJhbnNfbWluICsgdHJhbnNfYW1vdW50 Owo+PiBAQCAtNDgzNSw3ICs0ODM1LDcgQEAgc3RhdGljIHZvaWQgc2tsX3dyaXRlX3BsYW5lX3dt KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+PiAgIAo+PiAgIAlza2xfZGRiX2VudHJ5 X3dyaXRlKGRldl9wcml2LCBQTEFORV9CVUZfQ0ZHKHBpcGUsIHBsYW5lX2lkKSwKPj4gICAJCQkg ICAgJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8IDExKQo+PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDExKSkKPj4gICAJCXNrbF9k ZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsCj4+ICAgCQkJCSAgICBQTEFORV9OVjEyX0JVRl9DRkco cGlwZSwgcGxhbmVfaWQpLAo+PiAgIAkJCQkgICAgJmRkYi0+eV9wbGFuZVtwaXBlXVtwbGFuZV9p ZF0pOwo+PiBAQCAtNTI0OSw3ICs1MjQ5LDcgQEAgc3RhdGljIHZvaWQgaWxrX3Byb2dyYW1fd2F0 ZXJtYXJrcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCWlsa193bV9t ZXJnZShkZXYsICZjb25maWcsICZtYXgsICZscF93bV8xXzIpOwo+PiAgIAo+PiAgIAkvKiA1LzYg c3BsaXQgb25seSBpbiBzaW5nbGUgcGlwZSBjb25maWcgb24gSVZCKyAqLwo+PiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDcgJiYKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNykg JiYKPj4gICAJICAgIGNvbmZpZy5udW1fcGlwZXNfYWN0aXZlID09IDEgJiYgY29uZmlnLnNwcml0 ZXNfZW5hYmxlZCkgewo+PiAgIAkJaWxrX2NvbXB1dGVfd21fbWF4aW11bXMoZGV2LCAxLCAmY29u ZmlnLCBJTlRFTF9EREJfUEFSVF81XzYsICZtYXgpOwo+PiAgIAkJaWxrX3dtX21lcmdlKGRldiwg JmNvbmZpZywgJm1heCwgJmxwX3dtXzVfNik7Cj4+IEBAIC01ODQ4LDcgKzU4NDgsNyBAQCB2b2lk IGlsa193bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gICAJaHctPndt X2xwWzJdID0gSTkxNV9SRUFEKFdNM19MUF9JTEspOwo+PiAgIAo+PiAgIAlody0+d21fbHBfc3By WzBdID0gSTkxNV9SRUFEKFdNMVNfTFBfSUxLKTsKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA3KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDcpKSB7Cj4+ICAgCQlody0+ d21fbHBfc3ByWzFdID0gSTkxNV9SRUFEKFdNMlNfTFBfSVZCKTsKPj4gICAJCWh3LT53bV9scF9z cHJbMl0gPSBJOTE1X1JFQUQoV00zU19MUF9JVkIpOwo+PiAgIAl9Cj4+IEBAIC02MDc2LDcgKzYw NzYsNyBAQCBzdGF0aWMgdTMyIGludGVsX3Jwc19saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1OCB2YWwpCj4+ICAgCSAqIHRoZSBodyBydW5zIGF0IHRoZSBtaW5pbWFs IGNsb2NrIGJlZm9yZSBzZWxlY3RpbmcgdGhlIGRlc2lyZWQKPj4gICAJICogZnJlcXVlbmN5LCBp ZiB0aGUgZG93biB0aHJlc2hvbGQgZXhwaXJlcyBpbiB0aGF0IHdpbmRvdyB3ZSB3aWxsIG5vdAo+ PiAgIAkgKiByZWNlaXZlIGEgZG93biBpbnRlcnJ1cHQuICovCj4+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkgewo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+PiAg IAkJbGltaXRzID0gKHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KSA8PCAyMzsKPj4gICAJCWlmICh2 YWwgPD0gcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQpCj4+ICAgCQkJbGltaXRzIHw9IChycHMtPm1p bl9mcmVxX3NvZnRsaW1pdCkgPDwgMTQ7Cj4+IEBAIC02MjIyLDcgKzYyMjIsNyBAQCBzdGF0aWMg aW50IGdlbjZfc2V0X3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHZh bCkKPj4gICAJaWYgKHZhbCAhPSBycHMtPmN1cl9mcmVxKSB7Cj4+ICAgCQlnZW42X3NldF9ycHNf dGhyZXNob2xkcyhkZXZfcHJpdiwgdmFsKTsKPj4gICAKPj4gLQkJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSkKPj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJCUk5 MTVfV1JJVEUoR0VONl9SUE5TV1JFUSwKPj4gICAJCQkJICAgR0VOOV9GUkVRVUVOQ1kodmFsKSk7 Cj4+ICAgCQllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2 X3ByaXYpKQo+PiBAQCAtNjY1MCw3ICs2NjUwLDcgQEAgc3RhdGljIHZvaWQgZ2VuOV9lbmFibGVf cmM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAJSTkxNV9XUklURShH RU42X1JDX0NPTlRST0wsIDApOwo+PiAgIAo+PiAgIAkvKiAyYjogUHJvZ3JhbSBSQzYgdGhyZXNo b2xkcy4qLwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7Cj4+ICsJaWYgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDEwKSkgewo+PiAgIAkJSTkxNV9XUklURShHRU42X1JDNl9XQUtF X1JBVEVfTElNSVQsIDU0IDw8IDE2IHwgODUpOwo+PiAgIAkJSTkxNV9XUklURShHRU4xMF9NRURJ QV9XQUtFX1JBVEVfTElNSVQsIDE1MCk7Cj4+ICAgCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZf cHJpdikpIHsKPj4gQEAgLTY5NDAsNyArNjk0MCw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfdXBkYXRl X3JpbmdfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCQkJICog Tm8gZmxvb3IgcmVxdWlyZWQgZm9yIHJpbmcgZnJlcXVlbmN5IG9uIFNLTC4KPj4gICAJCQkgKi8K Pj4gICAJCQlyaW5nX2ZyZXEgPSBncHVfZnJlcTsKPj4gLQkJfSBlbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDgpIHsKPj4gKwkJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4 KSkgewo+PiAgIAkJCS8qIG1heCgyICogR1QsIEREUikuIE5COiBHVCBpcyA1ME1IeiB1bml0cyAq Lwo+PiAgIAkJCXJpbmdfZnJlcSA9IG1heChtaW5fcmluZ19mcmVxLCBncHVfZnJlcSk7Cj4+ICAg CQl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4+IEBAIC03OTU3LDcgKzc5NTcs NyBAQCB2b2lkIGludGVsX2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4gICAJCWNoZXJyeXZpZXdfaW5pdF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYp Owo+PiAgIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gICAJCXZhbGxleXZp ZXdfaW5pdF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+PiAtCWVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNikKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkKPj4g ICAJCWdlbjZfaW5pdF9ycHNfZnJlcXVlbmNpZXMoZGV2X3ByaXYpOwo+PiAgIAo+PiAgIAkvKiBE ZXJpdmUgaW5pdGlhbCB1c2VyIHByZWZlcmVuY2VzL2xpbWl0cyBmcm9tIHRoZSBoYXJkd2FyZSBs aW1pdHMgKi8KPj4gQEAgLTgwMTIsNyArODAxMiw3IEBAIHZvaWQgaW50ZWxfY2xlYW51cF9ndF9w b3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgICAqLwo+PiAg IHZvaWQgaW50ZWxfc3VzcGVuZF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+PiAgIHsKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCj4+ICsJ aWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNikpCj4+ICAgCQlyZXR1cm47Cj4+ICAgCj4+ICAgCS8q IGdlbjZfcnBzX2lkbGUoKSB3aWxsIGJlIGNhbGxlZCBsYXRlciB0byBkaXNhYmxlIGludGVycnVw dHMgKi8KPj4gQEAgLTgwNDYsMTMgKzgwNDYsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGlzYWJs ZV9yYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAlpZiAoIWRldl9w cml2LT5ndF9wbS5yYzYuZW5hYmxlZCkKPj4gICAJCXJldHVybjsKPj4gICAKPj4gLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkK Pj4gICAJCWdlbjlfZGlzYWJsZV9yYzYoZGV2X3ByaXYpOwo+PiAgIAllbHNlIGlmIChJU19DSEVS UllWSUVXKGRldl9wcml2KSkKPj4gICAJCWNoZXJyeXZpZXdfZGlzYWJsZV9yYzYoZGV2X3ByaXYp Owo+PiAgIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gICAJCXZhbGxleXZp ZXdfZGlzYWJsZV9yYzYoZGV2X3ByaXYpOwo+PiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNikKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkKPj4gICAJCWdl bjZfZGlzYWJsZV9yYzYoZGV2X3ByaXYpOwo+PiAgIAo+PiAgIAlkZXZfcHJpdi0+Z3RfcG0ucmM2 LmVuYWJsZWQgPSBmYWxzZTsKPj4gQEAgLTgwNjUsMTMgKzgwNjUsMTMgQEAgc3RhdGljIHZvaWQg aW50ZWxfZGlzYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAg IAlpZiAoIWRldl9wcml2LT5ndF9wbS5ycHMuZW5hYmxlZCkKPj4gICAJCXJldHVybjsKPj4gICAK Pj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA5KSkKPj4gICAJCWdlbjlfZGlzYWJsZV9ycHMoZGV2X3ByaXYpOwo+PiAgIAllbHNl IGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4gICAJCWNoZXJyeXZpZXdfZGlzYWJsZV9y cHMoZGV2X3ByaXYpOwo+PiAgIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4g ICAJCXZhbGxleXZpZXdfZGlzYWJsZV9ycHMoZGV2X3ByaXYpOwo+PiAtCWVsc2UgaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNikKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2 KSkKPj4gICAJCWdlbjZfZGlzYWJsZV9ycHMoZGV2X3ByaXYpOwo+PiAgIAllbHNlIGlmIChJU19J Uk9OTEFLRV9NKGRldl9wcml2KSkKPj4gICAJCWlyb25sYWtlX2Rpc2FibGVfZHJwcyhkZXZfcHJp dik7Cj4+IEBAIC04MTE0LDExICs4MTE0LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9y YzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAkJY2hlcnJ5dmlld19l bmFibGVfcmM2KGRldl9wcml2KTsKPj4gICAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJp dikpCj4+ICAgCQl2YWxsZXl2aWV3X2VuYWJsZV9yYzYoZGV2X3ByaXYpOwo+PiAtCWVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9w cml2LCA5KSkKPj4gICAJCWdlbjlfZW5hYmxlX3JjNihkZXZfcHJpdik7Cj4+ICAgCWVsc2UgaWYg KElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4+ICAgCQlnZW44X2VuYWJsZV9yYzYoZGV2X3ByaXYp Owo+PiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPj4gKwllbHNlIGlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA2KSkKPj4gICAJCWdlbjZfZW5hYmxlX3JjNihkZXZfcHJpdik7 Cj4+ICAgCj4+ICAgCWRldl9wcml2LT5ndF9wbS5yYzYuZW5hYmxlZCA9IHRydWU7Cj4+IEBAIC04 MTM3LDExICs4MTM3LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9ycHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAkJY2hlcnJ5dmlld19lbmFibGVfcnBzKGRl dl9wcml2KTsKPj4gICAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkgewo+PiAg IAkJdmFsbGV5dmlld19lbmFibGVfcnBzKGRldl9wcml2KTsKPj4gLQl9IGVsc2UgaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkgewo+PiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgOSkpIHsKPj4gICAJCWdlbjlfZW5hYmxlX3JwcyhkZXZfcHJpdik7Cj4+ICAgCX0gZWxzZSBp ZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+PiAgIAkJZ2VuOF9lbmFibGVfcnBzKGRldl9w cml2KTsKPj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+PiArCX0g ZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpIHsKPj4gICAJCWdlbjZfZW5hYmxlX3Jw cyhkZXZfcHJpdik7Cj4+ICAgCX0gZWxzZSBpZiAoSVNfSVJPTkxBS0VfTShkZXZfcHJpdikpIHsK Pj4gICAJCWlyb25sYWtlX2VuYWJsZV9kcnBzKGRldl9wcml2KTsKPj4gQEAgLTkwNTYsNyArOTA1 Niw3IEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4+ICAgCQlpOTE1X2lyb25sYWtlX2dldF9tZW1fZnJlcShkZXZfcHJpdik7Cj4+ICAgCj4+ ICAgCS8qIEZvciBGSUZPIHdhdGVybWFyayB1cGRhdGVzICovCj4+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkgewo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+PiAg IAkJc2tsX3NldHVwX3dtX2xhdGVuY3koZGV2X3ByaXYpOwo+PiAgIAkJZGV2X3ByaXYtPmRpc3Bs YXkuaW5pdGlhbF93YXRlcm1hcmtzID0gc2tsX2luaXRpYWxfd207Cj4+ICAgCQlkZXZfcHJpdi0+ ZGlzcGxheS5hdG9taWNfdXBkYXRlX3dhdGVybWFya3MgPSBza2xfYXRvbWljX3VwZGF0ZV9jcnRj X3dtOwo+PiBAQCAtOTIwMiw3ICs5MjAyLDcgQEAgaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyICp2YWwKPj4g ICAJKnZhbCA9IEk5MTVfUkVBRF9GVyhHRU42X1BDT0RFX0RBVEEpOwo+PiAgIAlJOTE1X1dSSVRF X0ZXKEdFTjZfUENPREVfREFUQSwgMCk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPiA2KQo+PiArCWlmIChJU19HRU5fR1QoZGV2X3ByaXYsIDYpKQo+PiAgIAkJc3RhdHVzID0g Z2VuN19jaGVja19tYWlsYm94X3N0YXR1cyhkZXZfcHJpdik7Cj4+ICAgCWVsc2UKPj4gICAJCXN0 YXR1cyA9IGdlbjZfY2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYpOwo+PiBAQCAtOTI1MCw3 ICs5MjUwLDcgQEAgaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlX3RpbWVvdXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgIAo+PiAgIAlJOTE1X1dSSVRFX0ZXKEdFTjZf UENPREVfREFUQSwgMCk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA2KQo+ PiArCWlmIChJU19HRU5fR1QoZGV2X3ByaXYsIDYpKQo+PiAgIAkJc3RhdHVzID0gZ2VuN19jaGVj a19tYWlsYm94X3N0YXR1cyhkZXZfcHJpdik7Cj4+ICAgCWVsc2UKPj4gICAJCXN0YXR1cyA9IGdl bjZfY2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYpOwo+PiBAQCAtOTM3OSw3ICs5Mzc5LDcg QEAgc3RhdGljIGludCBjaHZfZnJlcV9vcGNvZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBpbnQgdmFsKQo+PiAgIAo+PiAgIGludCBpbnRlbF9ncHVfZnJlcShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpCj4+ICAgewo+PiAtCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+PiAg IAkJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKHZhbCAqIEdUX0ZSRVFVRU5DWV9NVUxUSVBMSUVS LAo+PiAgIAkJCQkJIEdFTjlfRlJFUV9TQ0FMRVIpOwo+PiAgIAllbHNlIGlmIChJU19DSEVSUllW SUVXKGRldl9wcml2KSkKPj4gQEAgLTkzOTIsNyArOTM5Miw3IEBAIGludCBpbnRlbF9ncHVfZnJl cShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpCj4+ICAgCj4+ICAg aW50IGludGVsX2ZyZXFfb3Bjb2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg aW50IHZhbCkKPj4gICB7Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwlp ZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4+ICAgCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NF U1QodmFsICogR0VOOV9GUkVRX1NDQUxFUiwKPj4gICAJCQkJCSBHVF9GUkVRVUVOQ1lfTVVMVElQ TElFUik7Cj4+ICAgCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiBAQCAtOTUz Nyw3ICs5NTM3LDcgQEAgdTMyIGludGVsX2dldF9jYWdmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIHJwc3RhdCkKPj4gICB7Cj4+ICAgCXUzMiBjYWdmOwo+PiAgIAo+PiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3By aXYsIDkpKQo+PiAgIAkJY2FnZiA9IChycHN0YXQgJiBHRU45X0NBR0ZfTUFTSykgPj4gR0VOOV9D QUdGX1NISUZUOwo+PiAgIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9B RFdFTEwoZGV2X3ByaXYpKQo+PiAgIAkJY2FnZiA9IChycHN0YXQgJiBIU1dfQ0FHRl9NQVNLKSA+ PiBIU1dfQ0FHRl9TSElGVDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPj4gaW5kZXggMmVm Mzc0ZjkzNmI5Li4xMTZjY2UxOTRhYzkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Bzci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5j Cj4+IEBAIC0xMjYsNyArMTI2LDcgQEAgc3RhdGljIHZvaWQgdmx2X3Bzcl9lbmFibGVfc2luayhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+PiAgIHN0YXRpYyBpOTE1X3JlZ190IHBzcl9hdXhf Y3RsX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCQkJCSAgICAg ICBlbnVtIHBvcnQgcG9ydCkKPj4gICB7Cj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4+ICAgCQlyZXR1cm4gRFBfQVVY X0NIX0NUTChwb3J0KTsKPj4gICAJZWxzZQo+PiAgIAkJcmV0dXJuIEVEUF9QU1JfQVVYX0NUTDsK Pj4gQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgaTkxNV9yZWdfdCBwc3JfYXV4X2N0bF9yZWco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgIHN0YXRpYyBpOTE1X3JlZ190 IHBzcl9hdXhfZGF0YV9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAg IAkJCQkJZW51bSBwb3J0IHBvcnQsIGludCBpbmRleCkKPj4gICB7Cj4+IC0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOSkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4+ICAg CQlyZXR1cm4gRFBfQVVYX0NIX0RBVEEocG9ydCwgaW5kZXgpOwo+PiAgIAllbHNlCj4+ICAgCQly ZXR1cm4gRURQX1BTUl9BVVhfREFUQShpbmRleCk7Cj4+IEBAIC01MjEsNyArNTIxLDcgQEAgdm9p ZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+ICAgCWRldl9w cml2LT5wc3IuZW5hYmxlX3NvdXJjZShpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7Cj4+ICAgCWRldl9w cml2LT5wc3IuZW5hYmxlZCA9IGludGVsX2RwOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPj4gICAJ CWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7Cj4+ICAgCX0gZWxzZSB7Cj4+ICAgCQkvKgo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4+IGluZGV4IGM5MWQ3MTA2 ZmJjZi4uMmM0YWQ4OWQ5ZDU3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCj4+IEBAIC0zNDYsNyArMzQ2LDcgQEAgc3RhdGljIHZvaWQgcmluZ19zZXR1cF9w aHlzX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gICAJdTMy IGFkZHI7Cj4+ICAgCj4+ICAgCWFkZHIgPSBkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haC0+YnVz YWRkcjsKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+PiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA0KSkKPj4gICAJCWFkZHIgfD0gKGRldl9wcml2LT5zdGF0dXNfcGFnZV9k bWFoLT5idXNhZGRyID4+IDI4KSAmIDB4ZjA7Cj4+ICAgCUk5MTVfV1JJVEUoSFdTX1BHQSwgYWRk cik7Cj4+ICAgfQo+PiBAQCAtMzg2LDcgKzM4Niw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jpbmdf c2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiAgIAkJ bW1pbyA9IFJJTkdfSFdTX1BHQShlbmdpbmUtPm1taW9fYmFzZSk7Cj4+ICAgCX0KPj4gICAKPj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9w cml2LCA2KSkKPj4gICAJCUk5MTVfV1JJVEUoUklOR19IV1NUQU0oZW5naW5lLT5tbWlvX2Jhc2Up LCAweGZmZmZmZmZmKTsKPj4gICAKPj4gICAJSTkxNV9XUklURShtbWlvLCBlbmdpbmUtPnN0YXR1 c19wYWdlLmdndHRfb2Zmc2V0KTsKPj4gQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMgYm9vbCBz dG9wX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiAgIHsKPj4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+PiAgIAo+PiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMikgewo+PiArCWlmIChJU19HRU5fR1QoZGV2X3By aXYsIDIpKSB7Cj4+ICAgCQlJOTE1X1dSSVRFX01PREUoZW5naW5lLCBfTUFTS0VEX0JJVF9FTkFC TEUoU1RPUF9SSU5HKSk7Cj4+ICAgCQlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3By aXYsCj4+ICAgCQkJCQkgICAgUklOR19NSV9NT0RFKGVuZ2luZS0+bW1pb19iYXNlKSwKPj4gQEAg LTUyMSw3ICs1MjEsNyBAQCBzdGF0aWMgaW50IGluaXRfcmluZ19jb21tb24oc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+PiAgIAo+PiAgIAlpbnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hl Y2soZW5naW5lKTsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+IDIpCj4+ICsJ aWYgKElTX0dFTl9HVChkZXZfcHJpdiwgMikpCj4+ICAgCQlJOTE1X1dSSVRFX01PREUoZW5naW5l LCBfTUFTS0VEX0JJVF9ESVNBQkxFKFNUT1BfUklORykpOwo+PiAgIAo+PiAgIG91dDoKPj4gQEAg LTY1NSw3ICs2NTUsNyBAQCBzdGF0aWMgaW50IGluaXRfcmVuZGVyX3Jpbmcoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+PiAgIAlpZiAoSVNfR0VOKGRldl9wcml2LCA2LCA3KSkKPj4g ICAJCUk5MTVfV1JJVEUoSU5TVFBNLCBfTUFTS0VEX0JJVF9FTkFCTEUoSU5TVFBNX0ZPUkNFX09S REVSSU5HKSk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPj4gKwlp ZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4+ICAgCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUs IH5lbmdpbmUtPmlycV9rZWVwX21hc2spOwo+PiAgIAo+PiAgIAlyZXR1cm4gaW5pdF93b3JrYXJv dW5kc19yaW5nKGVuZ2luZSk7Cj4+IEBAIC0xMzYwLDcgKzEzNjAsNyBAQCB2b2lkIGludGVsX2Vu Z2luZV9jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gICB7Cj4+ICAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPj4gICAK Pj4gLQlXQVJOX09OKElOVEVMX0dFTihkZXZfcHJpdikgPiAyICYmCj4+ICsJV0FSTl9PTihJU19H RU5fR1QoZGV2X3ByaXYsIDIpICYmCj4+ICAgCQkoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1P REVfSURMRSkgPT0gMCk7Cj4+ICAgCj4+ICAgCWludGVsX3JpbmdfdW5waW4oZW5naW5lLT5idWZm ZXIpOwo+PiBAQCAtMTkwMCw3ICsxOTAwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19pbml0 X3NlbWFwaG9yZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgIAlpZiAo IUhBU19MRUdBQ1lfU0VNQVBIT1JFUyhkZXZfcHJpdikpCj4+ICAgCQlyZXR1cm47Cj4+ICAgCj4+ IC0JR0VNX0JVR19PTihJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNik7Cj4+ICsJR0VNX0JVR19PTihJ U19HRU5fTFQoZGV2X3ByaXYsIDYpKTsKPj4gICAJZW5naW5lLT5zZW1hcGhvcmUuc3luY190byA9 IGdlbjZfcmluZ19zeW5jX3RvOwo+PiAgIAllbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwgPSBnZW42 X3NpZ25hbDsKPj4gICAKPj4gQEAgLTE5NTcsMTUgKzE5NTcsMTUgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcmluZ19pbml0X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAg ewo+PiAgIAllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQ VCA8PCBlbmdpbmUtPmlycV9zaGlmdDsKPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA2KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKSB7Cj4+ICAgCQllbmdp bmUtPmlycV9lbmFibGUgPSBnZW42X2lycV9lbmFibGU7Cj4+ICAgCQllbmdpbmUtPmlycV9kaXNh YmxlID0gZ2VuNl9pcnFfZGlzYWJsZTsKPj4gICAJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIg PSBnZW42X3NlcW5vX2JhcnJpZXI7Cj4+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDUpIHsKPj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7Cj4+ICAg CQllbmdpbmUtPmlycV9lbmFibGUgPSBnZW41X2lycV9lbmFibGU7Cj4+ICAgCQllbmdpbmUtPmly cV9kaXNhYmxlID0gZ2VuNV9pcnFfZGlzYWJsZTsKPj4gICAJCWVuZ2luZS0+aXJxX3NlcW5vX2Jh cnJpZXIgPSBnZW41X3NlcW5vX2JhcnJpZXI7Cj4+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDMpIHsKPj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDMpKSB7 Cj4+ICAgCQllbmdpbmUtPmlycV9lbmFibGUgPSBpOXh4X2lycV9lbmFibGU7Cj4+ICAgCQllbmdp bmUtPmlycV9kaXNhYmxlID0gaTl4eF9pcnFfZGlzYWJsZTsKPj4gICAJfSBlbHNlIHsKPj4gQEAg LTE5OTMsNyArMTk5Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3JpbmdfZGVmYXVsdF92ZnVuY3Mo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgIAkJCQkgICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAgewo+PiAgIAkvKiBnZW44KyBhcmUgb25seSBz dXBwb3J0ZWQgd2l0aCBleGVjbGlzdHMgKi8KPj4gLQlHRU1fQlVHX09OKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOCk7Cj4+ICsJR0VNX0JVR19PTihJU19HRU5fR1RFKGRldl9wcml2LCA4KSk7Cj4+ ICAgCj4+ICAgCWludGVsX3JpbmdfaW5pdF9pcnEoZGV2X3ByaXYsIGVuZ2luZSk7Cj4+ICAgCWlu dGVsX3JpbmdfaW5pdF9zZW1hcGhvcmVzKGRldl9wcml2LCBlbmdpbmUpOwo+PiBAQCAtMjAyMSw5 ICsyMDIxLDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCj4+ICAgCWVuZ2luZS0+c2V0X2RlZmF1 bHRfc3VibWlzc2lvbiA9IGk5eHhfc2V0X2RlZmF1bHRfc3VibWlzc2lvbjsKPj4gICAKPj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2 LCA2KSkKPj4gICAJCWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGdlbjZfZW1pdF9iYl9zdGFydDsK Pj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4+ICsJZWxzZSBpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgNCkpCj4+ICAgCQllbmdpbmUtPmVtaXRfYmJfc3RhcnQgPSBpOTY1 X2VtaXRfYmJfc3RhcnQ7Cj4+ICAgCWVsc2UgaWYgKElTX0k4MzAoZGV2X3ByaXYpIHx8IElTX0k4 NDVHKGRldl9wcml2KSkKPj4gICAJCWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGk4MzBfZW1pdF9i Yl9zdGFydDsKPj4gQEAgLTIwNDEsNyArMjA0MSw3IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9y aW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAgCWlmIChIQVNf TDNfRFBGKGRldl9wcml2KSkKPj4gICAJCWVuZ2luZS0+aXJxX2tlZXBfbWFzayA9IEdUX1JFTkRF Ul9MM19QQVJJVFlfRVJST1JfSU5URVJSVVBUOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDYpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpIHsKPj4gICAJ CWVuZ2luZS0+aW5pdF9jb250ZXh0ID0gaW50ZWxfcmNzX2N0eF9pbml0Owo+PiAgIAkJZW5naW5l LT5lbWl0X2ZsdXNoID0gZ2VuN19yZW5kZXJfcmluZ19mbHVzaDsKPj4gICAJCWlmIChJU19HRU42 KGRldl9wcml2KSkKPj4gQEAgLTIwNDksNyArMjA0OSw3IEBAIGludCBpbnRlbF9pbml0X3JlbmRl cl9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAgCX0gZWxz ZSBpZiAoSVNfR0VONShkZXZfcHJpdikpIHsKPj4gICAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdl bjRfcmVuZGVyX3JpbmdfZmx1c2g7Cj4+ICAgCX0gZWxzZSB7Cj4+IC0JCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgNCkKPj4gKwkJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNCkpCj4+ICAgCQkJ ZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMl9yZW5kZXJfcmluZ19mbHVzaDsKPj4gICAJCWVsc2UK Pj4gICAJCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoOwo+PiBA QCAtMjA2NSw3ICsyMDY1LDcgQEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gICAJaWYgKHJldCkKPj4gICAJCXJldHVy biByZXQ7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+PiArCWlm IChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+PiAgIAkJcmV0ID0gaW50ZWxfZW5naW5lX2Ny ZWF0ZV9zY3JhdGNoKGVuZ2luZSwgUEFHRV9TSVpFKTsKPj4gICAJCWlmIChyZXQpCj4+ICAgCQkJ cmV0dXJuIHJldDsKPj4gQEAgLTIwODQsNyArMjA4NCw3IEBAIGludCBpbnRlbF9pbml0X2JzZF9y aW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAgCj4+ICAgCWlu dGVsX3JpbmdfZGVmYXVsdF92ZnVuY3MoZGV2X3ByaXYsIGVuZ2luZSk7Cj4+ICAgCj4+IC0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2 LCA2KSkgewo+PiAgIAkJLyogZ2VuNiBic2QgbmVlZHMgYSBzcGVjaWFsIHdhIGZvciB0YWlsIHVw ZGF0ZXMgKi8KPj4gICAJCWlmIChJU19HRU42KGRldl9wcml2KSkKPj4gICAJCQllbmdpbmUtPnNl dF9kZWZhdWx0X3N1Ym1pc3Npb24gPSBnZW42X2JzZF9zZXRfZGVmYXVsdF9zdWJtaXNzaW9uOwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jCj4+IGluZGV4IDBiZjk3ZWQ1ZmZhYy4uM2RkNWYy YzI0NGQ5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jCj4+IEBAIC0xMzM1LDEz ICsxMzM1LDEzIEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPj4gICAJCXJldHVybjsKPj4gICAKPj4gICAJLyog U2V0IHRoZSBTRFZPIGNvbnRyb2wgcmVncy4gKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA0KSB7Cj4+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKSB7Cj4+ICAgCQkvKiBU aGUgcmVhbCBtb2RlIHBvbGFyaXR5IGlzIHNldCBieSB0aGUgU0RWTyBjb21tYW5kcywgdXNpbmcK Pj4gICAJCSAqIHN0cnVjdCBpbnRlbF9zZHZvX2R0ZC4gKi8KPj4gICAJCXNkdm94ID0gU0RWT19W U1lOQ19BQ1RJVkVfSElHSCB8IFNEVk9fSFNZTkNfQUNUSVZFX0hJR0g7Cj4+ICAgCQlpZiAoIUhB U19QQ0hfU1BMSVQoZGV2X3ByaXYpICYmIGNydGNfc3RhdGUtPmxpbWl0ZWRfY29sb3JfcmFuZ2Up Cj4+ICAgCQkJc2R2b3ggfD0gSERNSV9DT0xPUl9SQU5HRV8xNl8yMzU7Cj4+IC0JCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDwgNSkKPj4gKwkJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNSkpCj4+ ICAgCQkJc2R2b3ggfD0gU0RWT19CT1JERVJfRU5BQkxFOwo+PiAgIAl9IGVsc2Ugewo+PiAgIAkJ c2R2b3ggPSBJOTE1X1JFQUQoaW50ZWxfc2R2by0+c2R2b19yZWcpOwo+PiBAQCAtMTM1OCwxMSAr MTM1OCwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3ByZV9lbmFibGUoc3RydWN0IGludGVs X2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4+ICAgCQlzZHZveCB8PSBTRFZPX1BJUEVfU0VMKGNy dGMtPnBpcGUpOwo+PiAgIAo+PiAgIAlpZiAoY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvKSB7Cj4+IC0J CVdBUk5fT05fT05DRShJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCk7Cj4+ICsJCVdBUk5fT05fT05D RShJU19HRU5fTFQoZGV2X3ByaXYsIDQpKTsKPj4gICAJCXNkdm94IHw9IFNEVk9fQVVESU9fRU5B QkxFOwo+PiAgIAl9Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+ PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+PiAgIAkJLyogZG9uZSBpbiBjcnRj X21vZGVfc2V0IGFzIHRoZSBkcGxsX21kIHJlZyBtdXN0IGJlIHdyaXR0ZW4gZWFybHkgKi8KPj4g ICAJfSBlbHNlIGlmIChJU19JOTQ1RyhkZXZfcHJpdikgfHwgSVNfSTk0NUdNKGRldl9wcml2KSB8 fAo+PiAgIAkJICAgSVNfRzMzKGRldl9wcml2KSB8fCBJU19QSU5FVklFVyhkZXZfcHJpdikpIHsK Pj4gQEAgLTEzNzMsNyArMTM3Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fcHJlX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPj4gICAJfQo+PiAgIAo+PiAg IAlpZiAoaW5wdXRfZHRkLnBhcnQyLnNkdm9fZmxhZ3MgJiBTRFZPX05FRURfVE9fU1RBTEwgJiYK Pj4gLQkgICAgSU5URUxfR0VOKGRldl9wcml2KSA8IDUpCj4+ICsJICAgIElTX0dFTl9MVChkZXZf cHJpdiwgNSkpCj4+ICAgCQlzZHZveCB8PSBTRFZPX1NUQUxMX1NFTEVDVDsKPj4gICAJaW50ZWxf c2R2b193cml0ZV9zZHZveChpbnRlbF9zZHZvLCBzZHZveCk7Cj4+ICAgfQo+PiBAQCAtMjQzMyw3 ICsyNDMzLDcgQEAgaW50ZWxfc2R2b19hZGRfaGRtaV9wcm9wZXJ0aWVzKHN0cnVjdCBpbnRlbF9z ZHZvICppbnRlbF9zZHZvLAo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5iYXNlLmRldik7Cj4+ICAgCj4+ICAgCWludGVsX2F0 dGFjaF9mb3JjZV9hdWRpb19wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLmJhc2UpOwo+PiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQgJiYgSVNfTU9CSUxFKGRldl9wcml2KSkgewo+PiAr CWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSAmJiBJU19NT0JJTEUoZGV2X3ByaXYpKSB7Cj4+ ICAgCQlpbnRlbF9hdHRhY2hfYnJvYWRjYXN0X3JnYl9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNl LmJhc2UpOwo+PiAgIAl9Cj4+ICAgCWludGVsX2F0dGFjaF9hc3BlY3RfcmF0aW9fcHJvcGVydHko JmNvbm5lY3Rvci0+YmFzZS5iYXNlKTsKPj4gQEAgLTI1MDIsNyArMjUwMiw3IEBAIGludGVsX3Nk dm9fZHZpX2luaXQoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sIGludCBkZXZpY2UpCj4+ ICAgCWNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPSBEUk1fTU9ERV9DT05ORUNUT1JfRFZJRDsK Pj4gICAKPj4gICAJLyogZ2VuMyBkb2Vzbid0IGRvIHRoZSBoZG1pIGJpdHMgaW4gdGhlIFNEVk8g cmVnaXN0ZXIgKi8KPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0ICYmCj4+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpICYmCj4+ICAgCSAgICBpbnRlbF9zZHZvX2lzX2hkbWlf Y29ubmVjdG9yKGludGVsX3Nkdm8sIGRldmljZSkpIHsKPj4gICAJCWNvbm5lY3Rvci0+Y29ubmVj dG9yX3R5cGUgPSBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUE7Cj4+ICAgCQlpbnRlbF9zZHZvLT5p c19oZG1pID0gdHJ1ZTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gaW5kZXgg M2JlMjJjMGZjZmI1Li5hMjhjNWY4M2ZhMDIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jCj4+IEBAIC0yNjMsNyArMjYzLDcgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lLAo+PiAgIAo+PiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3By aXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4+ICsJaWYgKElTX0dFTl9H VEUoZGV2X3ByaXYsIDEwKSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPj4gICAJCUk5MTVf V1JJVEVfRlcoUExBTkVfQ09MT1JfQ1RMKHBpcGUsIHBsYW5lX2lkKSwKPj4gICAJCQkgICAgICBw bGFuZV9zdGF0ZS0+Y29sb3JfY3RsKTsKPj4gICAJaWYgKGtleS0+ZmxhZ3MpIHsKPj4gQEAgLTg2 NSw3ICs4NjUsNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwKPj4gICAJc3RydWN0IGRybV9yZWN0ICpzcmMgPSAmc3RhdGUtPmJhc2Uuc3JjOwo+ PiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKmRzdCA9ICZzdGF0ZS0+YmFzZS5kc3Q7Cj4+ICAgCXN0cnVj dCBkcm1fcmVjdCBjbGlwID0ge307Cj4+IC0JaW50IG1heF9zdHJpZGUgPSBJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkgPyAzMjc2OCA6IDE2Mzg0Owo+PiArCWludCBtYXhfc3RyaWRlID0gSVNfR0VO X0dURShkZXZfcHJpdiwgOSkgPyAzMjc2OCA6IDE2Mzg0Owo+PiAgIAlpbnQgaHNjYWxlLCB2c2Nh bGU7Cj4+ICAgCWludCBtYXhfc2NhbGUsIG1pbl9zY2FsZTsKPj4gICAJYm9vbCBjYW5fc2NhbGU7 Cj4+IEBAIC04OTIsNyArODkyLDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUsCj4+ICAgCX0KPj4gICAKPj4gICAJLyogc2V0dXAgY2FuX3NjYWxl LCBtaW5fc2NhbGUsIG1heF9zY2FsZSAqLwo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPj4gICAJCS8qIHVzZSBz Y2FsZXIgd2hlbiBjb2xvcmtleSBpcyBub3QgcmVxdWlyZWQgKi8KPj4gICAJCWlmICghc3RhdGUt PmNrZXkuZmxhZ3MpIHsKPj4gICAJCQljYW5fc2NhbGUgPSAxOwo+PiBAQCAtMTAxMiw4ICsxMDEy LDggQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs Cj4+ICAgCj4+ICAgCQl3aWR0aF9ieXRlcyA9ICgoc3JjX3ggKiBjcHApICYgNjMpICsgc3JjX3cg KiBjcHA7Cj4+ICAgCj4+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAmJiAoc3JjX3cg PiAyMDQ4IHx8IHNyY19oID4gMjA0OCB8fAo+PiAtCQkgICAgd2lkdGhfYnl0ZXMgPiA0MDk2IHx8 IGZiLT5waXRjaGVzWzBdID4gNDA5NikpIHsKPj4gKwkJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwg OSkgJiYgKHNyY193ID4gMjA0OCB8fCBzcmNfaCA+IDIwNDggfHwKPj4gKwkJCQkJICAgICAgIHdp ZHRoX2J5dGVzID4gNDA5NiB8fCBmYi0+cGl0Y2hlc1swXSA+IDQwOTYpKSB7Cj4+ICAgCQkJRFJN X0RFQlVHX0tNUygiU291cmNlIGRpbWVuc2lvbnMgZXhjZWVkIGhhcmR3YXJlIGxpbWl0c1xuIik7 Cj4+ICAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICAgCQl9Cj4+IEBAIC0xMDMxLDcgKzEwMzEsNyBA QCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPj4g ICAJZHN0LT55MSA9IGNydGNfeTsKPj4gICAJZHN0LT55MiA9IGNydGNfeSArIGNydGNfaDsKPj4g ICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4+ICsJaWYgKElTX0dFTl9H VEUoZGV2X3ByaXYsIDkpKSB7Cj4+ICAgCQlyZXQgPSBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShj cnRjX3N0YXRlLCBzdGF0ZSk7Cj4+ICAgCQlpZiAocmV0KQo+PiAgIAkJCXJldHVybiByZXQ7Cj4+ IEBAIC0xMDQzLDcgKzEwNDMsNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKPj4gICAJCQlyZXR1cm4gcmV0Owo+PiAgIAo+PiAgIAkJc3RhdGUt PmN0bCA9IHZsdl9zcHJpdGVfY3RsKGNydGNfc3RhdGUsIHN0YXRlKTsKPj4gLQl9IGVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewo+PiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShk ZXZfcHJpdiwgNykpIHsKPj4gICAJCXJldCA9IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdGF0 ZSk7Cj4+ICAgCQlpZiAocmV0KQo+PiAgIAkJCXJldHVybiByZXQ7Cj4+IEBAIC0xMDU3LDcgKzEw NTcsNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwKPj4gICAJCXN0YXRlLT5jdGwgPSBnNHhfc3ByaXRlX2N0bChjcnRjX3N0YXRlLCBzdGF0ZSk7 Cj4+ICAgCX0KPj4gICAKPj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19H RU1JTklMQUtFKGRldl9wcml2KSkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgMTApIHx8 IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+PiAgIAkJc3RhdGUtPmNvbG9yX2N0bCA9IGdsa19w bGFuZV9jb2xvcl9jdGwoY3J0Y19zdGF0ZSwgc3RhdGUpOwo+PiAgIAo+PiAgIAlyZXR1cm4gMDsK Pj4gQEAgLTEyOTAsMTEgKzEyOTAsMTEgQEAgc3RhdGljIGJvb2wgaW50ZWxfc3ByaXRlX3BsYW5l X2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiAgIAkgICAg bW9kaWZpZXIgIT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSKQo+PiAgIAkJcmV0dXJuIGZhbHNlOwo+ PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4+ICsJaWYgKElTX0dFTl9H VEUoZGV2X3ByaXYsIDkpKQo+PiAgIAkJcmV0dXJuIHNrbF9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwg bW9kaWZpZXIpOwo+PiAgIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19D SEVSUllWSUVXKGRldl9wcml2KSkKPj4gICAJCXJldHVybiB2bHZfbW9kX3N1cHBvcnRlZChmb3Jt YXQsIG1vZGlmaWVyKTsKPj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4+ ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4+ICAgCQlyZXR1cm4gc25iX21v ZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7Cj4+ICAgCWVsc2UKPj4gICAJCXJldHVybiBn NHhfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsKPj4gQEAgLTEzMTcsNyArMTMxNyw3 IEBAIGJvb2wgc2tsX3BsYW5lX2hhc19jY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+PiAgIAlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQo+PiAgIAkJcmV0dXJuIGZh bHNlOwo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+PiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCAxMCkpCj4+ICAgCQlyZXR1cm4gdHJ1ZTsKPj4gICAKPj4gICAJ aWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+PiBAQCAtMTM1NCw3ICsxMzU0LDcgQEAgaW50 ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4+ICAgCX0KPj4gICAJaW50ZWxfcGxhbmUtPmJhc2Uuc3RhdGUgPSAmc3RhdGUtPmJhc2U7Cj4+ ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+PiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA5KSkgewo+PiAgIAkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IHRydWU7 Cj4+ICAgCQlzdGF0ZS0+c2NhbGVyX2lkID0gLTE7Cj4+ICAgCj4+IEBAIC0xMzgwLDcgKzEzODAs NyBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPj4gICAJCXBsYW5lX2Zvcm1hdHMgPSB2bHZfcGxhbmVfZm9ybWF0czsKPj4gICAJ CW51bV9wbGFuZV9mb3JtYXRzID0gQVJSQVlfU0laRSh2bHZfcGxhbmVfZm9ybWF0cyk7Cj4+ICAg CQltb2RpZmllcnMgPSBpOXh4X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnM7Cj4+IC0JfSBlbHNlIGlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKPj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUo ZGV2X3ByaXYsIDcpKSB7Cj4+ICAgCQlpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSkgewo+PiAg IAkJCWludGVsX3BsYW5lLT5jYW5fc2NhbGUgPSB0cnVlOwo+PiAgIAkJCWludGVsX3BsYW5lLT5t YXhfZG93bnNjYWxlID0gMjsKPj4gQEAgLTE0MTQsNyArMTQxNCw3IEBAIGludGVsX3Nwcml0ZV9w bGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgIAkJfQo+ PiAgIAl9Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+PiArCWlm IChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+PiAgIAkJc3VwcG9ydGVkX3JvdGF0aW9ucyA9 Cj4+ICAgCQkJRFJNX01PREVfUk9UQVRFXzAgfCBEUk1fTU9ERV9ST1RBVEVfOTAgfAo+PiAgIAkJ CURSTV9NT0RFX1JPVEFURV8xODAgfCBEUk1fTU9ERV9ST1RBVEVfMjcwOwo+PiBAQCAtMTQzNSw3 ICsxNDM1LDcgQEAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4+ICAgCj4+ICAgCXBvc3NpYmxlX2NydGNzID0gKDEgPDwgcGlwZSk7 Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPj4gKwlpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgOSkpCj4+ICAgCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQo JmRldl9wcml2LT5kcm0sICZpbnRlbF9wbGFuZS0+YmFzZSwKPj4gICAJCQkJCSAgICAgICBwb3Nz aWJsZV9jcnRjcywgJmludGVsX3Nwcml0ZV9wbGFuZV9mdW5jcywKPj4gICAJCQkJCSAgICAgICBw bGFuZV9mb3JtYXRzLCBudW1fcGxhbmVfZm9ybWF0cywKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3R2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5j Cj4+IGluZGV4IGIzZGFiYzIxOWU2YS4uZTliZWQ4OWNjMWY3IDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3R2LmMKPj4gQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3R2 X3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ICAgCj4+ICAgCXNl dF9jb2xvcl9jb252ZXJzaW9uKGRldl9wcml2LCBjb2xvcl9jb252ZXJzaW9uKTsKPj4gICAKPj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+PiArCWlmIChJU19HRU5fR1RFKGRldl9w cml2LCA0KSkKPj4gICAJCUk5MTVfV1JJVEUoVFZfQ0xSX0tOT0JTLCAweDAwNDA0MDAwKTsKPj4g ICAJZWxzZQo+PiAgIAkJSTkxNV9XUklURShUVl9DTFJfS05PQlMsIDB4MDA2MDYwMDApOwo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+PiBpbmRleCA3Mzk1OWFlNTYyNDEuLjRhZTcy YzJmMTkyMSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPj4gQEAgLTQz NSw3ICs0MzUsNyBAQCB1NjQgaW50ZWxfdW5jb3JlX2VkcmFtX3NpemUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAkvKiBUaGUgbmVlZGVkIGNhcGFiaWxpdHkgYml0cyBm b3Igc2l6ZSBjYWxjdWxhdGlvbgo+PiAgIAkgKiBhcmUgbm90IHRoZXJlIHdpdGggcHJlIGdlbjkg c28gcmV0dXJuIDEyOE1CIGFsd2F5cy4KPj4gICAJICovCj4+IC0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPCA5KQo+PiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDkpKQo+PiAgIAkJcmV0dXJu IDEyOCAqIDEwMjQgKiAxMDI0Owo+PiAgIAo+PiAgIAlyZXR1cm4gZ2VuOV9lZHJhbV9zaXplKGRl dl9wcml2KTsKPj4gQEAgLTQ0NSw3ICs0NDUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVf ZWRyYW1fZGV0ZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICB7Cj4+ ICAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fAo+PiAgIAkgICAgSVNfQlJPQURXRUxMKGRl dl9wcml2KSB8fAo+PiAtCSAgICBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPj4gKwkgICAg SVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPj4gICAJCWRldl9wcml2LT5lZHJhbV9jYXAgPSBf X3Jhd19pOTE1X3JlYWQzMihkZXZfcHJpdiwKPj4gICAJCQkJCQkJSFNXX0VEUkFNX0NBUCk7Cj4+ ICAgCj4+IEBAIC04MzcsNyArODM3LDcgQEAgZmluZF9md19kb21haW4oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgb2Zmc2V0KQo+PiAgIAl7IC5zdGFydCA9IChzKSwgLmVu ZCA9IChlKSwgLmRvbWFpbnMgPSAoZCkgfQo+PiAgIAo+PiAgICNkZWZpbmUgSEFTX0ZXVEFCTEUo ZGV2X3ByaXYpIFwKPj4gLQkoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IFwKPj4gKwkoSVNf R0VOX0dURShkZXZfcHJpdiwgOSkgfHwgXAo+PiAgIAkgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikg fHwgXAo+PiAgIAkgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4+ICAgCj4+IEBAIC0xMjUzLDcg KzEyNTMsNyBAQCBzdGF0aWMgdm9pZCBmd19kb21haW5faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4+ICAgCj4+ICAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2Rv bWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgewo+PiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDUgfHwgaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3By aXYpKQo+PiArCWlmIChJU19HRU5fTFRFKGRldl9wcml2LCA1KSB8fCBpbnRlbF92Z3B1X2FjdGl2 ZShkZXZfcHJpdikpCj4+ICAgCQlyZXR1cm47Cj4+ICAgCj4+ICAgCWlmIChJU19HRU42KGRldl9w cml2KSkgewo+PiBAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3Jl X2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAg CQlkZXZfcHJpdi0+dW5jb3JlLmZ3X2NsZWFyID0gX01BU0tFRF9CSVRfRElTQUJMRShGT1JDRVdB S0VfS0VSTkVMKTsKPj4gICAJfQo+PiAgIAo+PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPj4gICAJCWRldl9wcml2 LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPQo+PiAgIAkJCWZ3X2RvbWFpbnNfZ2V0X3dp dGhfZmFsbGJhY2s7Cj4+ICAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0 ID0gZndfZG9tYWluc19wdXQ7Cj4+IEBAIC0xNTQxLDcgKzE1NDEsNyBAQCBzdGF0aWMgdm9pZCBp OTE1X3N0b3BfZW5naW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPj4gICAJZW51bSBpbnRlbF9lbmdpbmVf aWQgaWQ7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAzKQo+PiArCWlmIChJ U19HRU5fTFQoZGV2X3ByaXYsIDMpKQo+PiAgIAkJcmV0dXJuOwo+PiAgIAo+PiAgIAlmb3JfZWFj aF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgZGV2X3ByaXYsIGVuZ2luZV9tYXNrLCBpZCkKPj4gQEAg LTE4NzQsOSArMTg3NCw5IEBAIHN0YXRpYyByZXNldF9mdW5jIGludGVsX2dldF9ncHVfcmVzZXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAlpZiAoIWk5MTVfbW9kcGFy YW1zLnJlc2V0KQo+PiAgIAkJcmV0dXJuIE5VTEw7Cj4+ICAgCj4+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOCkKPj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpCj4+ICAgCQly ZXR1cm4gZ2VuOF9yZXNldF9lbmdpbmVzOwo+PiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNikKPj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkKPj4gICAJCXJl dHVybiBnZW42X3Jlc2V0X2VuZ2luZXM7Cj4+ICAgCWVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYp KQo+PiAgIAkJcmV0dXJuIGlyb25sYWtlX2RvX3Jlc2V0Owo+PiBAQCAtMTg4NCw3ICsxODg0LDcg QEAgc3RhdGljIHJlc2V0X2Z1bmMgaW50ZWxfZ2V0X2dwdV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCQlyZXR1cm4gZzR4X2RvX3Jlc2V0Owo+PiAgIAllbHNl IGlmIChJU19HMzMoZGV2X3ByaXYpIHx8IElTX1BJTkVWSUVXKGRldl9wcml2KSkKPj4gICAJCXJl dHVybiBnMzNfZG9fcmVzZXQ7Cj4+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAz KQo+PiArCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDMpKQo+PiAgIAkJcmV0dXJuIGk5 MTVfZG9fcmVzZXQ7Cj4+ICAgCWVsc2UKPj4gICAJCXJldHVybiBOVUxMOwo+PiBAQCAtMTk4Nyw3 ICsxOTg3LDcgQEAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVhZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgCj4+ICAgCWlmIChIQVNfRldUQUJMRShkZXZfcHJp dikpIHsKPj4gICAJCWZ3X2RvbWFpbnMgPSBfX2Z3dGFibGVfcmVnX3JlYWRfZndfZG9tYWlucyhv ZmZzZXQpOwo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4+ICsJ fSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+PiAgIAkJZndfZG9tYWlucyA9 IF9fZ2VuNl9yZWdfcmVhZF9md19kb21haW5zKG9mZnNldCk7Cj4+ICAgCX0gZWxzZSB7Cj4+ICAg CQlXQVJOX09OKCFJU19HRU4oZGV2X3ByaXYsIDIsIDUpKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+PiBpbmRleCA3YTBk MWUxN2MxYWQuLjhkZWVkNTU2OWI3YSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+PiBAQCAtMjA0LDEyICsyMDQs MTIgQEAgc3RhdGljIGludCBncHVfc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4+ICAgCQlyZXR1cm4gUFRSX0VSUihjcyk7Cj4+ICAgCX0KPj4gICAKPj4gLQlpZiAoSU5URUxf R0VOKGk5MTUpID49IDgpIHsKPj4gKwlpZiAoSVNfR0VOX0dURShpOTE1LCA4KSkgewo+PiAgIAkJ KmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IDEgPDwgMjI7Cj4+ICAgCQkqY3MrKyA9 IGxvd2VyXzMyX2JpdHMoaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgb2Zmc2V0KTsKPj4gICAJCSpj cysrID0gdXBwZXJfMzJfYml0cyhpOTE1X2dndHRfb2Zmc2V0KHZtYSkgKyBvZmZzZXQpOwo+PiAg IAkJKmNzKysgPSB2Owo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDQpIHsKPj4g Kwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoaTkxNSwgNCkpIHsKPj4gICAJCSpjcysrID0gTUlfU1RP UkVfRFdPUkRfSU1NX0dFTjQgfCAxIDw8IDIyOwo+PiAgIAkJKmNzKysgPSAwOwo+PiAgIAkJKmNz KysgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSkgKyBvZmZzZXQ7Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+PiBpbmRleCA1NmE4MDNk MTE5MTYuLjEyZWM3YjM5Y2U3NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4+IEBAIC0xNTksNyArMTU5LDcgQEAgc3Rh dGljIGludCBncHVfZmlsbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiAgIAl9 Cj4+ICAgCj4+ICAgCWZsYWdzID0gMDsKPj4gLQlpZiAoSU5URUxfR0VOKHZtLT5pOTE1KSA8PSA1 KQo+PiArCWlmIChJU19HRU5fTFRFKHZtLT5pOTE1LCA1KSkKPj4gICAJCWZsYWdzIHw9IEk5MTVf RElTUEFUQ0hfU0VDVVJFOwo+PiAgIAo+PiAgIAllcnIgPSBlbmdpbmUtPmVtaXRfYmJfc3RhcnQo cnEsCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2Jq ZWN0LmMKPj4gaW5kZXggZjMyYWE2YmI3OWUyLi4yYzhmNTAwZWQ3ZjcgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMKPj4gQEAg LTM1NSw3ICszNTUsNyBAQCBzdGF0aWMgaW50IGlndF9wYXJ0aWFsX3RpbGluZyh2b2lkICphcmcp Cj4+ICAgCQkgICAgdGlsZS5zd2l6emxlID09IEk5MTVfQklUXzZfU1dJWlpMRV85XzEwXzE3KQo+ PiAgIAkJCWNvbnRpbnVlOwo+PiAgIAo+PiAtCQlpZiAoSU5URUxfR0VOKGk5MTUpIDw9IDIpIHsK Pj4gKwkJaWYgKElTX0dFTl9MVEUoaTkxNSwgMikpIHsKPj4gICAJCQl0aWxlLmhlaWdodCA9IDE2 Owo+PiAgIAkJCXRpbGUud2lkdGggPSAxMjg7Cj4+ICAgCQkJdGlsZS5zaXplID0gMTE7Cj4+IEBA IC0zNzAsOSArMzcwLDkgQEAgc3RhdGljIGludCBpZ3RfcGFydGlhbF90aWxpbmcodm9pZCAqYXJn KQo+PiAgIAkJCXRpbGUuc2l6ZSA9IDEyOwo+PiAgIAkJfQo+PiAgIAo+PiAtCQlpZiAoSU5URUxf R0VOKGk5MTUpIDwgNCkKPj4gKwkJaWYgKElTX0dFTl9MVChpOTE1LCA0KSkKPj4gICAJCQltYXhf cGl0Y2ggPSA4MTkyIC8gdGlsZS53aWR0aDsKPj4gLQkJZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUp IDwgNykKPj4gKwkJZWxzZSBpZiAoSVNfR0VOX0xUKGk5MTUsIDcpKQo+PiAgIAkJCW1heF9waXRj aCA9IDEyOCAqIEk5NjVfRkVOQ0VfTUFYX1BJVENIX1ZBTCAvIHRpbGUud2lkdGg7Cj4+ICAgCQll bHNlCj4+ICAgCQkJbWF4X3BpdGNoID0gMTI4ICogR0VON19GRU5DRV9NQVhfUElUQ0hfVkFMIC8g dGlsZS53aWR0aDsKPj4gQEAgLTM4NSw3ICszODUsNyBAQCBzdGF0aWMgaW50IGlndF9wYXJ0aWFs X3RpbGluZyh2b2lkICphcmcpCj4+ICAgCQkJaWYgKGVycikKPj4gICAJCQkJZ290byBvdXRfdW5s b2NrOwo+PiAgIAo+PiAtCQkJaWYgKHBpdGNoID4gMiAmJiBJTlRFTF9HRU4oaTkxNSkgPj0gNCkg ewo+PiArCQkJaWYgKHBpdGNoID4gMiAmJiBJU19HRU5fR1RFKGk5MTUsIDQpKSB7Cj4+ICAgCQkJ CXRpbGUuc3RyaWRlID0gdGlsZS53aWR0aCAqIChwaXRjaCAtIDEpOwo+PiAgIAkJCQllcnIgPSBj aGVja19wYXJ0aWFsX21hcHBpbmcob2JqLCAmdGlsZSwgZW5kKTsKPj4gICAJCQkJaWYgKGVyciA9 PSAtRUlOVFIpCj4+IEBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIGludCBpZ3RfcGFydGlhbF90 aWxpbmcodm9pZCAqYXJnKQo+PiAgIAkJCQkJZ290byBvdXRfdW5sb2NrOwo+PiAgIAkJCX0KPj4g ICAKPj4gLQkJCWlmIChwaXRjaCA8IG1heF9waXRjaCAmJiBJTlRFTF9HRU4oaTkxNSkgPj0gNCkg ewo+PiArCQkJaWYgKHBpdGNoIDwgbWF4X3BpdGNoICYmIElTX0dFTl9HVEUoaTkxNSwgNCkpIHsK Pj4gICAJCQkJdGlsZS5zdHJpZGUgPSB0aWxlLndpZHRoICogKHBpdGNoICsgMSk7Cj4+ICAgCQkJ CWVyciA9IGNoZWNrX3BhcnRpYWxfbWFwcGluZyhvYmosICZ0aWxlLCBlbmQpOwo+PiAgIAkJCQlp ZiAoZXJyID09IC1FSU5UUikKPj4gQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgaW50IGlndF9w YXJ0aWFsX3RpbGluZyh2b2lkICphcmcpCj4+ICAgCQkJfQo+PiAgIAkJfQo+PiAgIAo+PiAtCQlp ZiAoSU5URUxfR0VOKGk5MTUpID49IDQpIHsKPj4gKwkJaWYgKElTX0dFTl9HVEUoaTkxNSwgNCkp IHsKPj4gICAJCQlmb3JfZWFjaF9wcmltZV9udW1iZXIocGl0Y2gsIG1heF9waXRjaCkgewo+PiAg IAkJCQl0aWxlLnN0cmlkZSA9IHRpbGUud2lkdGggKiBwaXRjaDsKPj4gICAJCQkJZXJyID0gY2hl Y2tfcGFydGlhbF9tYXBwaW5nKG9iaiwgJnRpbGUsIGVuZCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPj4gaW5kZXggZDFkMmMyNDU2 ZjY5Li45MmJjMDU5YTc4ZjQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPj4gQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMg aW50IGVtaXRfcmVjdXJzZV9iYXRjaChzdHJ1Y3QgaGFuZyAqaCwKPj4gICAJfQo+PiAgIAo+PiAg IAliYXRjaCA9IGgtPmJhdGNoOwo+PiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgewo+PiAr CWlmIChJU19HRU5fR1RFKGk5MTUsIDgpKSB7Cj4+ICAgCQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RX T1JEX0lNTV9HRU40Owo+PiAgIAkJKmJhdGNoKysgPSBsb3dlcl8zMl9iaXRzKGh3c19hZGRyZXNz KGh3cywgcnEpKTsKPj4gICAJCSpiYXRjaCsrID0gdXBwZXJfMzJfYml0cyhod3NfYWRkcmVzcyho d3MsIHJxKSk7Cj4+IEBAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGljIGludCBlbWl0X3JlY3Vyc2Vf YmF0Y2goc3RydWN0IGhhbmcgKmgsCj4+ICAgCQkqYmF0Y2grKyA9IE1JX0JBVENIX0JVRkZFUl9T VEFSVCB8IDEgPDwgOCB8IDE7Cj4+ICAgCQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHModm1hLT5u b2RlLnN0YXJ0KTsKPj4gICAJCSpiYXRjaCsrID0gdXBwZXJfMzJfYml0cyh2bWEtPm5vZGUuc3Rh cnQpOwo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpIHsKPj4gKwl9IGVsc2Ug aWYgKElTX0dFTl9HVEUoaTkxNSwgNikpIHsKPj4gICAJCSpiYXRjaCsrID0gTUlfU1RPUkVfRFdP UkRfSU1NX0dFTjQ7Cj4+ICAgCQkqYmF0Y2grKyA9IDA7Cj4+ICAgCQkqYmF0Y2grKyA9IGxvd2Vy XzMyX2JpdHMoaHdzX2FkZHJlc3MoaHdzLCBycSkpOwo+PiBAQCAtMTYzLDcgKzE2Myw3IEBAIHN0 YXRpYyBpbnQgZW1pdF9yZWN1cnNlX2JhdGNoKHN0cnVjdCBoYW5nICpoLAo+PiAgIAkJKmJhdGNo KysgPSBNSV9BUkJfQ0hFQ0s7Cj4+ICAgCQkqYmF0Y2grKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFS VCB8IDEgPDwgODsKPj4gICAJCSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3Rh cnQpOwo+PiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDQpIHsKPj4gKwl9IGVsc2Ug aWYgKElTX0dFTl9HVEUoaTkxNSwgNCkpIHsKPj4gICAJCSpiYXRjaCsrID0gTUlfU1RPUkVfRFdP UkRfSU1NX0dFTjQgfCAxIDw8IDIyOwo+PiAgIAkJKmJhdGNoKysgPSAwOwo+PiAgIAkJKmJhdGNo KysgPSBsb3dlcl8zMl9iaXRzKGh3c19hZGRyZXNzKGh3cywgcnEpKTsKPj4gQEAgLTE5Myw3ICsx OTMsNyBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzZV9iYXRjaChzdHJ1Y3QgaGFuZyAqaCwKPj4g ICAJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChoLT5pOTE1KTsKPj4gICAKPj4gICAJZmxhZ3MgPSAw Owo+PiAtCWlmIChJTlRFTF9HRU4odm0tPmk5MTUpIDw9IDUpCj4+ICsJaWYgKElTX0dFTl9MVEUo dm0tPmk5MTUsIDUpKQo+PiAgIAkJZmxhZ3MgfD0gSTkxNV9ESVNQQVRDSF9TRUNVUkU7Cj4+ICAg Cj4+ICAgCWVyciA9IHJxLT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEsIHZtYS0+bm9kZS5zdGFy dCwgUEFHRV9TSVpFLCBmbGFncyk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaW50ZWxfdW5jb3JlLmMKPj4gaW5kZXggMmY2MzY3NjQzMTcxLi43MTc3Zjk3ZTcyZWYgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91bmNvcmUu Ywo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMK Pj4gQEAgLTE3Myw3ICsxNzMsNyBAQCBpbnQgaW50ZWxfdW5jb3JlX2xpdmVfc2VsZnRlc3RzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+PiAgIAkvKiBDb25maXJtIHRoZSB0YWJsZSB3 ZSBsb2FkIGlzIHN0aWxsIHZhbGlkICovCj4+ICAgCWVyciA9IGludGVsX2Z3X3RhYmxlX2NoZWNr KGk5MTUtPnVuY29yZS5md19kb21haW5zX3RhYmxlLAo+PiAgIAkJCQkgICBpOTE1LT51bmNvcmUu ZndfZG9tYWluc190YWJsZV9lbnRyaWVzLAo+PiAtCQkJCSAgIElOVEVMX0dFTihpOTE1KSA+PSA5 KTsKPj4gKwkJCQkgICBJU19HRU5fR1RFKGk5MTUsIDkpKTsKPj4gICAJaWYgKGVycikKPj4gICAJ CXJldHVybiBlcnI7Cj4+ICAgCj4+IC0tIAo+PiAyLjE0LjEKPj4KPj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=