From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [RFC] drm/i915: Rename global i915 to i915_params Date: Tue, 12 Sep 2017 16:43:48 +0100 Message-ID: <7a7d6af0-c46e-2d67-ac8a-044be6884d34@linux.intel.com> References: <20170912152809.17716-1-michal.wajdeczko@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id AB4F66E69D for ; Tue, 12 Sep 2017 15:43:52 +0000 (UTC) In-Reply-To: <20170912152809.17716-1-michal.wajdeczko@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: Michal Wajdeczko , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEyLzA5LzIwMTcgMTY6MjgsIE1pY2hhbCBXYWpkZWN6a28gd3JvdGU6Cj4gT3VyIGdsb2Jh bCBzdHJ1Y3Qgd2l0aCBwYXJhbXMgaXMgbmFtZWQgZXhhY3RseSB0aGUgc2FtZSB3YXkKPiBhcyBu ZXcgcHJlZmVycmVkIG5hbWUgZm9yIHRoZSBkcm1faTkxNV9wcml2YXRlIGZ1bmN0aW9uIHBhcmFt ZXRlci4KPiAKPiBUbyBhdm9pZCBzdWNoIG5hbWUgcmV1c2UgYW5kIGFsbG93IGZ1cnRoZXIgY2xl YW51cCBvZiBkZXByZWNhdGVkCj4gZGV2X3ByaXYgbGV0cyB1c2UgZGlmZmVyZW50IG5hbWUgZm9y IHRoZSBnbG9iYWwuCgpUaGUgc2l0dWF0aW9uIHdpdGggbmV3IGFuZCBvbGQgaTkxNSBpcyBhIGJp dCBhbm5veWluZyBzbyBJIHN1cHBvcnQgc29tZSAKYWN0aW9uLgoKVGhpcyBhcHByb2FjaCBzb3Vu ZHMgZ29vZCBlbm91Z2ggdG8gbWUsIHdpdGggdGhlIG9ubHkgdGhvdWdodCBJIGhhZCBpZiAKaXQg d291bGQgcGVyaGFwcyBiZSB3b3J0aCB3cmFwcGluZyB0aGlzIGluIGEgbWFjcm8gbGlrZToKCiNk ZWZpbmUgaTkxNV9tb2RwYXJhbShuYW1lKSAoaTkxNV9wYXJhbXMuIyNuYW1lKQoKVGhpcyB3YXMg d2Ugd291bGQgZnV0dXJlIHByb29mIG1vcmUgcmVuYW1lcy4gV291bGQgaXQgYWxzbyBiZSBhIGJp dCAKbmljZXIgdG8gcmVhZD8gTm90IHN1cmUuIEFueXdheSwganVzdCBhIHRob3VnaHQuCgpSZWdh cmRzLAoKVHZydGtvCgo+IEFjdHVhbCByZW5hbWUgd2FzIGRvbmUgd2l0aCBDb2NjaW5lbGxlIGhl bHAuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3pr b0BpbnRlbC5jb20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr Pgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlbmRlci5jICAgICAgICAgICAg IHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAg ICAgfCAgMTQgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAg ICAgICAgIHwgIDMzICsrKysrLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgICAgICAgICAgIHwgIDEwICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyAgICAgICAgICAgICAgIHwgICA2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmMgICAgICAgfCAgMTIgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jICAgICAgICAgICB8ICAgNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgICAgIHwgICA2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyAgICAgICAgICAgIHwgMTAzICsrKysrKysrKysrKysrKyst LS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5oICAgICAgICAg ICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgICAgICAg ICAgICB8ICAgNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAgICAg ICAgICAgIHwgICA2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgICAg ICAgICAgICAgfCAgIDYgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jICAg ICAgICAgICAgICB8ICAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNl X2luZm8uYyAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgICAgICAgICAgfCAgMTIgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jICAgICAgICAgICAgICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX2F1eF9iYWNrbGlnaHQuYyB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggICAgICAgICAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYyAgICAgICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiYy5jICAgICAgICAgICAgICB8ICAxMSArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICAgICB8ICAxMiArLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2cuYyAgICAgICAgICB8ICAyNCArKystLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d2dC5jICAgICAgICAgICAgICB8ICAxMiArLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jICAgICAgICB8ICAgMiArLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMgICAgICAgICAgICAgIHwgICA0ICstCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgfCAgIDggKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyAgICAgICAgICAgICB8ICAgNCArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYyAgICAgICAgIHwgICAyICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jICAgICAgICAgICAgfCAgIDgg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgICAgICB8ICAg NiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgICAgICAgICAgICAgIHwg IDEwICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgICAg IHwgICA4ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgICAg ICAgfCAgMTQgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyAgICAgICAg ICAgICAgIHwgIDUwICsrKysrKy0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VuY29yZS5jICAgICAgICAgICB8ICAyMSArKystLS0KPiAgIDM5IGZpbGVzIGNoYW5nZWQsIDIz NSBpbnNlcnRpb25zKCspLCAyMDkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9yZW5kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9y ZW5kZXIuYwo+IGluZGV4IDJlYTU0MjIuLmQ0YTk1MWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L3JlbmRlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3JlbmRlci5jCj4gQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgdm9pZCBzd2l0Y2hfbW1pb190 b192Z3B1KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCBpbnQgcmluZ19pZCkKPiAgIAkJICovCj4g ICAJCWlmIChtbWlvLT5pbl9jb250ZXh0ICYmCj4gICAJCQkJKChjdHhfY3RybCAmIGluaGliaXRf bWFzaykgIT0gaW5oaWJpdF9tYXNrKSAmJgo+IC0JCQkJaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ ICsJCQkJaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykKPiAgIAkJCWNvbnRpbnVlOwo+ICAg Cj4gICAJCWlmIChtbWlvLT5tYXNrKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4g aW5kZXggNjMzODAxOC4uMzIzZmJmMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIGludCBpOTE1X2NhcGFiaWxpdGllcyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gICAjdW5kZWYgUFJJTlRfRkxBRwo+ICAgCj4g ICAJa2VybmVsX3BhcmFtX2xvY2soVEhJU19NT0RVTEUpOwo+IC0jZGVmaW5lIFBSSU5UX1BBUkFN KFQsIHgpIHNlcV9wcmludF9wYXJhbShtLCAjeCwgI1QsICZpOTE1LngpOwo+ICsjZGVmaW5lIFBS SU5UX1BBUkFNKFQsIHgpIHNlcV9wcmludF9wYXJhbShtLCAjeCwgI1QsICZpOTE1X3BhcmFtcy54 KTsKPiAgIAlJOTE1X1BBUkFNU19GT1JfRUFDSChQUklOVF9QQVJBTSk7Cj4gICAjdW5kZWYgUFJJ TlRfUEFSQU0KPiAgIAlrZXJuZWxfcGFyYW1fdW5sb2NrKFRISVNfTU9EVUxFKTsKPiBAQCAtMTI2 Niw3ICsxMjY2LDcgQEAgc3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAgCWlmICh3YWl0cXVldWVfYWN0aXZlKCZkZXZfcHJp di0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKSkKPiAgIAkJc2VxX3B1dHMobSwgInN0cnVjdF9tdXRl eCBibG9ja2VkIGZvciByZXNldFxuIik7Cj4gICAKPiAtCWlmICghaTkxNS5lbmFibGVfaGFuZ2No ZWNrKSB7Cj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9oYW5nY2hlY2spIHsKPiAgIAkJc2Vx X3B1dHMobSwgIkhhbmdjaGVjayBkaXNhYmxlZFxuIik7Cj4gICAJCXJldHVybiAwOwo+ICAgCX0K PiBAQCAtMTcwMSw3ICsxNzAxLDcgQEAgc3RhdGljIGludCBpOTE1X2lwc19zdGF0dXMoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOwo+ICAgCj4gICAJc2VxX3ByaW50ZihtLCAiRW5hYmxlZCBieSBrZXJuZWwgcGFyYW1l dGVyOiAlc1xuIiwKPiAtCQkgICB5ZXNubyhpOTE1LmVuYWJsZV9pcHMpKTsKPiArCQkgICB5ZXNu byhpOTE1X3BhcmFtcy5lbmFibGVfaXBzKSk7Cj4gICAKPiAgIAlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA4KSB7Cj4gICAJCXNlcV9wdXRzKG0sICJDdXJyZW50bHk6IHVua25vd25cbiIpOwo+ IEBAIC0yMDE2LDcgKzIwMTYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHVtcF9scmMoc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4g ICAJaW50IHJldDsKPiAgIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKPiArCWlm ICghaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAgCQlzZXFfcHJpbnRmKG0sICJM b2dpY2FsIFJpbmcgQ29udGV4dHMgYXJlIGRpc2FibGVkXG4iKTsKPiAgIAkJcmV0dXJuIDA7Cj4g ICAJfQo+IEBAIC0yNTk2LDcgKzI1OTYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvZ19jb250 cm9sX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkKPiAgIAlpZiAoIWRldl9wcml2LT5ndWMubG9n LnZtYSkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAtCSp2YWwgPSBpOTE1Lmd1Y19sb2df bGV2ZWw7Cj4gKwkqdmFsID0gaTkxNV9wYXJhbXMuZ3VjX2xvZ19sZXZlbDsKPiAgIAo+ICAgCXJl dHVybiAwOwo+ICAgfQo+IEBAIC0zMzE0LDcgKzMzMTQsNyBAQCBzdGF0aWMgaW50IGk5MTVfZW5n aW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAJCXNlcV9wcmlu dGYobSwgIlx0QkJBRERSOiAweCUwOHhfJTA4eFxuIiwKPiAgIAkJCSAgIHVwcGVyXzMyX2JpdHMo YWRkciksIGxvd2VyXzMyX2JpdHMoYWRkcikpOwo+ICAgCj4gLQkJaWYgKGk5MTUuZW5hYmxlX2V4 ZWNsaXN0cykgewo+ICsJCWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gICAJ CQl1MzIgcHRyLCByZWFkLCB3cml0ZTsKPiAgIAkJCXVuc2lnbmVkIGludCBpZHg7Cj4gICAKPiBA QCAtMzQwNSw3ICszNDA1LDcgQEAgc3RhdGljIGludCBpOTE1X3NlbWFwaG9yZV9zdGF0dXMoc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQ7Cj4gICAJaW50IGosIHJldDsKPiAgIAo+IC0JaWYgKCFpOTE1LnNlbWFwaG9yZXMpIHsKPiAr CWlmICghaTkxNV9wYXJhbXMuc2VtYXBob3Jlcykgewo+ICAgCQlzZXFfcHV0cyhtLCAiU2VtYXBo b3JlcyBhcmUgZGlzYWJsZWRcbiIpOwo+ICAgCQlyZXR1cm4gMDsKPiAgIAl9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gaW5kZXggNWMxMTFlYS4uOGI5OWFjNCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwo+IEBAIC01OCwxMiArNTgsMTIgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpOTE1 X2xvYWRfZmFpbF9jb3VudDsKPiAgIAo+ICAgYm9vbCBfX2k5MTVfaW5qZWN0X2xvYWRfZmFpbHVy ZShjb25zdCBjaGFyICpmdW5jLCBpbnQgbGluZSkKPiAgIHsKPiAtCWlmIChpOTE1X2xvYWRfZmFp bF9jb3VudCA+PSBpOTE1LmluamVjdF9sb2FkX2ZhaWx1cmUpCj4gKwlpZiAoaTkxNV9sb2FkX2Zh aWxfY291bnQgPj0gaTkxNV9wYXJhbXMuaW5qZWN0X2xvYWRfZmFpbHVyZSkKPiAgIAkJcmV0dXJu IGZhbHNlOwo+ICAgCj4gLQlpZiAoKytpOTE1X2xvYWRfZmFpbF9jb3VudCA9PSBpOTE1LmluamVj dF9sb2FkX2ZhaWx1cmUpIHsKPiArCWlmICgrK2k5MTVfbG9hZF9mYWlsX2NvdW50ID09IGk5MTVf cGFyYW1zLmluamVjdF9sb2FkX2ZhaWx1cmUpIHsKPiAgIAkJRFJNX0lORk8oIkluamVjdGluZyBm YWlsdXJlIGF0IGNoZWNrcG9pbnQgJXUgWyVzOiVkXVxuIiwKPiAtCQkJIGk5MTUuaW5qZWN0X2xv YWRfZmFpbHVyZSwgZnVuYywgbGluZSk7Cj4gKwkJCSBpOTE1X3BhcmFtcy5pbmplY3RfbG9hZF9m YWlsdXJlLCBmdW5jLCBsaW5lKTsKPiAgIAkJcmV0dXJuIHRydWU7Cj4gICAJfQo+ICAgCj4gQEAg LTEwNiw4ICsxMDYsOCBAQCBfX2k5MTVfcHJpbnRrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgY29uc3QgY2hhciAqbGV2ZWwsCj4gICAKPiAgIHN0YXRpYyBib29sIGk5MTVfZXJy b3JfaW5qZWN0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0J cmV0dXJuIGk5MTUuaW5qZWN0X2xvYWRfZmFpbHVyZSAmJgo+IC0JICAgICAgIGk5MTVfbG9hZF9m YWlsX2NvdW50ID09IGk5MTUuaW5qZWN0X2xvYWRfZmFpbHVyZTsKPiArCXJldHVybiBpOTE1X3Bh cmFtcy5pbmplY3RfbG9hZF9mYWlsdXJlICYmCj4gKwkgICAgICAgaTkxNV9sb2FkX2ZhaWxfY291 bnQgPT0gaTkxNV9wYXJhbXMuaW5qZWN0X2xvYWRfZmFpbHVyZTsKPiAgIH0KPiAgIAo+ICAgI2Rl ZmluZSBpOTE1X2xvYWRfZXJyb3IoZGV2X3ByaXYsIGZtdCwgLi4uKQkJCQkgICAgIFwKPiBAQCAt MzIxLDcgKzMyMSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQl2YWx1ZSA9IFVTRVNfUFBHVFQoZGV2X3ByaXYpOwo+ ICAgCQlicmVhazsKPiAgIAljYXNlIEk5MTVfUEFSQU1fSEFTX1NFTUFQSE9SRVM6Cj4gLQkJdmFs dWUgPSBpOTE1LnNlbWFwaG9yZXM7Cj4gKwkJdmFsdWUgPSBpOTE1X3BhcmFtcy5zZW1hcGhvcmVz Owo+ICAgCQlicmVhazsKPiAgIAljYXNlIEk5MTVfUEFSQU1fSEFTX1NFQ1VSRV9CQVRDSEVTOgo+ ICAgCQl2YWx1ZSA9IGNhcGFibGUoQ0FQX1NZU19BRE1JTik7Cj4gQEAgLTM0MCw3ICszNDAsNyBA QCBzdGF0aWMgaW50IGk5MTVfZ2V0cGFyYW0oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKPiAgIAkJCXJldHVybiAtRU5PREVWOwo+ICAgCQlicmVhazsKPiAgIAljYXNlIEk5MTVf UEFSQU1fSEFTX0dQVV9SRVNFVDoKPiAtCQl2YWx1ZSA9IGk5MTUuZW5hYmxlX2hhbmdjaGVjayAm JiBpbnRlbF9oYXNfZ3B1X3Jlc2V0KGRldl9wcml2KTsKPiArCQl2YWx1ZSA9IGk5MTVfcGFyYW1z LmVuYWJsZV9oYW5nY2hlY2sgJiYgaW50ZWxfaGFzX2dwdV9yZXNldChkZXZfcHJpdik7Cj4gICAJ CWlmICh2YWx1ZSAmJiBpbnRlbF9oYXNfcmVzZXRfZW5naW5lKGRldl9wcml2KSkKPiAgIAkJCXZh bHVlID0gMjsKPiAgIAkJYnJlYWs7Cj4gQEAgLTEwMzEsOSArMTAzMSw5IEBAIHN0YXRpYyB2b2lk IGk5MTVfZHJpdmVyX2NsZWFudXBfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gICAKPiAgIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0JaTkxNS5lbmFibGVfZXhlY2xpc3Rz ID0KPiArCWk5MTVfcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMgPQo+ICAgCQlpbnRlbF9zYW5pdGl6 ZV9lbmFibGVfZXhlY2xpc3RzKGRldl9wcml2LAo+IC0JCQkJCQlpOTE1LmVuYWJsZV9leGVjbGlz dHMpOwo+ICsJCQkJCQlpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKTsKPiAgIAo+ICAgCS8q Cj4gICAJICogaTkxNS5lbmFibGVfcHBndHQgaXMgcmVhZC1vbmx5LCBzbyBkbyBhbiBlYXJseSBw YXNzIHRvIHZhbGlkYXRlIHRoZQo+IEBAIC0xMDQxLDEyICsxMDQxLDE1IEBAIHN0YXRpYyB2b2lk IGludGVsX3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgCSAqIGRvIHRoaXMgbm93IHNvIHRoYXQgd2UgY2FuIHByaW50IG91dCBhbnkgbG9nIG1l c3NhZ2VzIG9uY2UgcmF0aGVyCj4gICAJICogdGhhbiBldmVyeSB0aW1lIHdlIGNoZWNrIGludGVs X2VuYWJsZV9wcGd0dCgpLgo+ICAgCSAqLwo+IC0JaTkxNS5lbmFibGVfcHBndHQgPQo+IC0JCWlu dGVsX3Nhbml0aXplX2VuYWJsZV9wcGd0dChkZXZfcHJpdiwgaTkxNS5lbmFibGVfcHBndHQpOwo+ IC0JRFJNX0RFQlVHX0RSSVZFUigicHBndHQgbW9kZTogJWlcbiIsIGk5MTUuZW5hYmxlX3BwZ3R0 KTsKPiArCWk5MTVfcGFyYW1zLmVuYWJsZV9wcGd0dCA9Cj4gKwkJaW50ZWxfc2FuaXRpemVfZW5h YmxlX3BwZ3R0KGRldl9wcml2LAo+ICsJCQkJCSAgICBpOTE1X3BhcmFtcy5lbmFibGVfcHBndHQp Owo+ICsJRFJNX0RFQlVHX0RSSVZFUigicHBndHQgbW9kZTogJWlcbiIsIGk5MTVfcGFyYW1zLmVu YWJsZV9wcGd0dCk7Cj4gICAKPiAtCWk5MTUuc2VtYXBob3JlcyA9IGludGVsX3Nhbml0aXplX3Nl bWFwaG9yZXMoZGV2X3ByaXYsIGk5MTUuc2VtYXBob3Jlcyk7Cj4gLQlEUk1fREVCVUdfRFJJVkVS KCJ1c2UgR1BVIHNlbWFwaG9yZXM/ICVzXG4iLCB5ZXNubyhpOTE1LnNlbWFwaG9yZXMpKTsKPiAr CWk5MTVfcGFyYW1zLnNlbWFwaG9yZXMgPSBpbnRlbF9zYW5pdGl6ZV9zZW1hcGhvcmVzKGRldl9w cml2LAo+ICsJCQkJCQkJICAgaTkxNV9wYXJhbXMuc2VtYXBob3Jlcyk7Cj4gKwlEUk1fREVCVUdf RFJJVkVSKCJ1c2UgR1BVIHNlbWFwaG9yZXM/ICVzXG4iLAo+ICsJCQkgeWVzbm8oaTkxNV9wYXJh bXMuc2VtYXBob3JlcykpOwo+ICAgCj4gICAJaW50ZWxfdWNfc2FuaXRpemVfb3B0aW9ucyhkZXZf cHJpdik7Cj4gICAKPiBAQCAtMTI3Nyw3ICsxMjgwLDcgQEAgaW50IGk5MTVfZHJpdmVyX2xvYWQo c3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCj4g ICAJaW50IHJldDsKPiAgIAo+ICAgCS8qIEVuYWJsZSBudWNsZWFyIHBhZ2VmbGlwIG9uIElMSysg Ki8KPiAtCWlmICghaTkxNS5udWNsZWFyX3BhZ2VmbGlwICYmIG1hdGNoX2luZm8tPmdlbiA8IDUp Cj4gKwlpZiAoIWk5MTVfcGFyYW1zLm51Y2xlYXJfcGFnZWZsaXAgJiYgbWF0Y2hfaW5mby0+Z2Vu IDwgNSkKPiAgIAkJZHJpdmVyLmRyaXZlcl9mZWF0dXJlcyAmPSB+RFJJVkVSX0FUT01JQzsKPiAg IAo+ICAgCXJldCA9IC1FTk9NRU07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMWNj MzFhNS4uMDhiYzJjNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC05Myw3ICs5 Myw3IEBACj4gICAjZGVmaW5lIEk5MTVfU1RBVEVfV0FSTihjb25kaXRpb24sIGZvcm1hdC4uLikg KHsJCQlcCj4gICAJaW50IF9fcmV0X3dhcm5fb24gPSAhIShjb25kaXRpb24pOwkJCQlcCj4gICAJ aWYgKHVubGlrZWx5KF9fcmV0X3dhcm5fb24pKQkJCQkJXAo+IC0JCWlmICghV0FSTihpOTE1LnZl cmJvc2Vfc3RhdGVfY2hlY2tzLCBmb3JtYXQpKQkJXAo+ICsJCWlmICghV0FSTihpOTE1X3BhcmFt cy52ZXJib3NlX3N0YXRlX2NoZWNrcywgZm9ybWF0KSkJXAo+ICAgCQkJRFJNX0VSUk9SKGZvcm1h dCk7CQkJCVwKPiAgIAl1bmxpa2VseShfX3JldF93YXJuX29uKTsJCQkJCVwKPiAgIH0pCj4gQEAg LTMwNzQsOSArMzA3NCw5IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAgCj4gICAjZGVmaW5lIEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMo ZGV2X3ByaXYpIFwKPiAgIAkJKChkZXZfcHJpdiktPmluZm8uaGFzX2xvZ2ljYWxfcmluZ19jb250 ZXh0cykKPiAtI2RlZmluZSBVU0VTX1BQR1RUKGRldl9wcml2KQkJKGk5MTUuZW5hYmxlX3BwZ3R0 KQo+IC0jZGVmaW5lIFVTRVNfRlVMTF9QUEdUVChkZXZfcHJpdikJKGk5MTUuZW5hYmxlX3BwZ3R0 ID49IDIpCj4gLSNkZWZpbmUgVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldl9wcml2KQkoaTkxNS5l bmFibGVfcHBndHQgPT0gMykKPiArI2RlZmluZSBVU0VTX1BQR1RUKGRldl9wcml2KQkJKGk5MTVf cGFyYW1zLmVuYWJsZV9wcGd0dCkKPiArI2RlZmluZSBVU0VTX0ZVTExfUFBHVFQoZGV2X3ByaXYp CShpOTE1X3BhcmFtcy5lbmFibGVfcHBndHQgPj0gMikKPiArI2RlZmluZSBVU0VTX0ZVTExfNDhC SVRfUFBHVFQoZGV2X3ByaXYpCShpOTE1X3BhcmFtcy5lbmFibGVfcHBndHQgPT0gMykKPiAgIAo+ ICAgI2RlZmluZSBIQVNfT1ZFUkxBWShkZXZfcHJpdikJCSAoKGRldl9wcml2KS0+aW5mby5oYXNf b3ZlcmxheSkKPiAgICNkZWZpbmUgT1ZFUkxBWV9ORUVEU19QSFlTSUNBTChkZXZfcHJpdikgXAo+ IEBAIC0zMjc0LDcgKzMyNzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9xdWV1ZV9oYW5n Y2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAgCXVuc2ln bmVkIGxvbmcgZGVsYXk7Cj4gICAKPiAtCWlmICh1bmxpa2VseSghaTkxNS5lbmFibGVfaGFuZ2No ZWNrKSkKPiArCWlmICh1bmxpa2VseSghaTkxNV9wYXJhbXMuZW5hYmxlX2hhbmdjaGVjaykpCj4g ICAJCXJldHVybjsKPiAgIAo+ICAgCS8qIERvbid0IGNvbnRpbnVhbGx5IGRlZmVyIHRoZSBoYW5n Y2hlY2sgc28gdGhhdCBpdCBpcyBhbHdheXMgcnVuIGF0Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gaW5kZXggZjQ0NTU4Ny4uYzFmMTJlOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ IEBAIC0zMDQ2LDcgKzMwNDYsNyBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfc2V0X3dlZGdlZChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJICogcGlubmVkIGluIHBsYWNlLgo+ICAg CSAqLwo+ICAgCj4gLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gKwlpZiAoaTkxNV9w YXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAgCQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9y dCA9IGVuZ2luZS0+ZXhlY2xpc3RfcG9ydDsKPiAgIAkJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAg IAkJdW5zaWduZWQgaW50IG47Cj4gQEAgLTQ3NzQsNyArNDc3NCw3IEBAIGJvb2wgaW50ZWxfc2Fu aXRpemVfc2VtYXBob3JlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2 YWx1ZSkKPiAgIAkJcmV0dXJuIGZhbHNlOwo+ICAgCj4gICAJLyogVE9ETzogbWFrZSBzZW1hcGhv cmVzIGFuZCBFeGVjbGlzdHMgcGxheSBuaWNlbHkgdG9nZXRoZXIgKi8KPiAtCWlmIChpOTE1LmVu YWJsZV9leGVjbGlzdHMpCj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykKPiAg IAkJcmV0dXJuIGZhbHNlOwo+ICAgCj4gICAJaWYgKHZhbHVlID49IDApCj4gQEAgLTQ3OTUsNyAr NDc5NSw3IEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIAo+ICAgCWRldl9wcml2LT5tbS51bm9yZGVyZWRfdGltZWxpbmUgPSBkbWFfZmVu Y2VfY29udGV4dF9hbGxvYygxKTsKPiAgIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMp IHsKPiArCWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAgCQlkZXZfcHJp di0+Z3QucmVzdW1lID0gaW50ZWxfbGVnYWN5X3N1Ym1pc3Npb25fcmVzdW1lOwo+ICAgCQlkZXZf cHJpdi0+Z3QuY2xlYW51cF9lbmdpbmUgPSBpbnRlbF9lbmdpbmVfY2xlYW51cDsKPiAgIAl9IGVs c2Ugewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCA1OGEy YTQ0Li5jZTk3NjE1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu Ywo+IEBAIC0zMTQsNyArMzE0LDcgQEAgX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJICogcHJlc2VudCBvciBub3QgaW4gdXNlIHdlIHN0 aWxsIG5lZWQgYSBzbWFsbCBiaWFzIGFzIHJpbmcgd3JhcGFyb3VuZAo+ICAgCSAqIGF0IG9mZnNl dCAwIHNvbWV0aW1lcyBoYW5ncy4gTm8gaWRlYSB3aHkuCj4gICAJICovCj4gLQlpZiAoSEFTX0dV QyhkZXZfcHJpdikgJiYgaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcpCj4gKwlpZiAoSEFTX0dVQyhk ZXZfcHJpdikgJiYgaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nKQo+ICAgCQljdHgtPmdn dHRfb2Zmc2V0X2JpYXMgPSBHVUNfV09QQ01fVE9QOwo+ICAgCWVsc2UKPiAgIAkJY3R4LT5nZ3R0 X29mZnNldF9iaWFzID0gSTkxNV9HVFRfUEFHRV9TSVpFOwo+IEBAIC00MDcsNyArNDA3LDcgQEAg aTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZ3Z0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJ aTkxNV9nZW1fY29udGV4dF9zZXRfY2xvc2VkKGN0eCk7IC8qIG5vdCB1c2VyIGFjY2Vzc2libGUg Ki8KPiAgIAlpOTE1X2dlbV9jb250ZXh0X2NsZWFyX2Jhbm5hYmxlKGN0eCk7Cj4gICAJaTkxNV9n ZW1fY29udGV4dF9zZXRfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oY3R4KTsKPiAtCWlmICghaTkx NS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNf c3VibWlzc2lvbikKPiAgIAkJY3R4LT5yaW5nX3NpemUgPSA1MTIgKiBQQUdFX1NJWkU7IC8qIE1h eCByaW5nIGJ1ZmZlciBzaXplICovCj4gICAKPiAgIAlHRU1fQlVHX09OKGk5MTVfZ2VtX2NvbnRl eHRfaXNfa2VybmVsKGN0eCkpOwo+IEBAIC00MzEsNyArNDMxLDcgQEAgaW50IGk5MTVfZ2VtX2Nv bnRleHRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCj4gICAJ aWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSAmJgo+ICAgCSAgICBIQVNfTE9HSUNBTF9S SU5HX0NPTlRFWFRTKGRldl9wcml2KSkgewo+IC0JCWlmICghaTkxNS5lbmFibGVfZXhlY2xpc3Rz KSB7Cj4gKwkJaWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gICAJCQlEUk1f SU5GTygiT25seSBFWEVDTElTVCBtb2RlIGlzIHN1cHBvcnRlZCBpbiB2Z3B1LlxuIik7Cj4gICAJ CQlyZXR1cm4gLUVJTlZBTDsKPiAgIAkJfQo+IEBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBpOTE1 X2dlbV9jb250ZXh0c19sb3N0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg IAl9Cj4gICAKPiAgIAkvKiBGb3JjZSB0aGUgR1BVIHN0YXRlIHRvIGJlIHJlc3RvcmVkIG9uIGVu YWJsaW5nICovCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICsJaWYgKCFpOTE1 X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gICAJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHg7Cj4gICAKPiAgIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZkZXZfcHJpdi0+Y29u dGV4dHMubGlzdCwgbGluaykgewo+IEBAIC01NjgsNyArNTY4LDcgQEAgbWlfc2V0X2NvbnRleHQo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBmbGFncykKPiAgIAllbnVtIGlu dGVsX2VuZ2luZV9pZCBpZDsKPiAgIAljb25zdCBpbnQgbnVtX3JpbmdzID0KPiAgIAkJLyogVXNl IGFuIGV4dGVuZGVkIHcvYSBvbiBnZW43IGlmIHNpZ25hbGxpbmcgZnJvbSBvdGhlciByaW5ncyAq Lwo+IC0JCShpOTE1LnNlbWFwaG9yZXMgJiYgSU5URUxfR0VOKGRldl9wcml2KSA9PSA3KSA/Cj4g KwkJKGk5MTVfcGFyYW1zLnNlbWFwaG9yZXMgJiYgSU5URUxfR0VOKGRldl9wcml2KSA9PSA3KSA/ Cj4gICAJCUlOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcmluZ3MgLSAxIDoKPiAgIAkJMDsKPiAg IAlpbnQgbGVuOwo+IEBAIC04MzcsNyArODM3LDcgQEAgaW50IGk5MTVfc3dpdGNoX2NvbnRleHQo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4gICAKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxk KCZyZXEtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKGk5MTUuZW5hYmxlX2V4ZWNs aXN0cykKPiArCWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKQo+ICAgCQlyZXR1cm4g MDsKPiAgIAo+ICAgCWlmICghcmVxLT5jdHgtPmVuZ2luZVtlbmdpbmUtPmlkXS5zdGF0ZSkgewo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCA3Njg3 NDgzLi44MmQ4M2NmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYwo+IEBAIC0xNTg3LDcgKzE1ODcsNyBAQCBzdGF0aWMgaW50IGViX3ByZWZhdWx0X3Jl bG9jYXRpb25zKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+ICAgCWNvbnN0IHVu c2lnbmVkIGludCBjb3VudCA9IGViLT5idWZmZXJfY291bnQ7Cj4gICAJdW5zaWduZWQgaW50IGk7 Cj4gICAKPiAtCWlmICh1bmxpa2VseShpOTE1LnByZWZhdWx0X2Rpc2FibGUpKQo+ICsJaWYgKHVu bGlrZWx5KGk5MTVfcGFyYW1zLnByZWZhdWx0X2Rpc2FibGUpKQo+ICAgCQlyZXR1cm4gMDsKPiAg IAo+ICAgCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMKPiBpbmRleCAwOWU1MjRkLi44ZjZmODA1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMTgwLDcgKzE4MCw3IEBAIGludCBpbnRlbF9zYW5pdGl6 ZV9lbmFibGVfcHBndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQly ZXR1cm4gMDsKPiAgIAl9Cj4gICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggJiYg aTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4 ICYmIGk5MTVfcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpIHsKPiAgIAkJaWYgKGhhc19mdWxsXzQ4 Yml0X3BwZ3R0KQo+ICAgCQkJcmV0dXJuIDM7Cj4gICAKPiBAQCAtMTk3Miw3ICsxOTcyLDcgQEAg aW50IGk5MTVfcHBndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gICAJLyogSW4gdGhlIGNhc2Ugb2YgZXhlY2xpc3RzLCBQUEdUVCBpcyBlbmFibGVkIGJ5IHRo ZSBjb250ZXh0IGRlc2NyaXB0b3IKPiAgIAkgKiBhbmQgdGhlIFBEUHMgYXJlIGNvbnRhaW5lZCB3 aXRoaW4gdGhlIGNvbnRleHQgaXRzZWxmLiAgV2UgZG9uJ3QKPiAgIAkgKiBuZWVkIHRvIGRvIGFu eXRoaW5nIGhlcmUuICovCj4gLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ICsJaWYgKGk5 MTVfcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gICAJaWYg KCFVU0VTX1BQR1RUKGRldl9wcml2KSkKPiBAQCAtMzEwMiw3ICszMTAyLDcgQEAgaW50IGk5MTVf Z2d0dF9wcm9iZV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJICog Y3VycmVudGx5IGRvbid0IGhhdmUgYW55IGJpdHMgc3BhcmUgdG8gcGFzcyBpbiB0aGlzIHVwcGVy Cj4gICAJICogcmVzdHJpY3Rpb24hCj4gICAJICovCj4gLQlpZiAoSEFTX0dVQyhkZXZfcHJpdikg JiYgaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcpIHsKPiArCWlmIChIQVNfR1VDKGRldl9wcml2KSAm JiBpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX2xvYWRpbmcpIHsKPiAgIAkJZ2d0dC0+YmFzZS50b3Rh bCA9IG1pbl90KHU2NCwgZ2d0dC0+YmFzZS50b3RhbCwgR1VDX0dHVFRfVE9QKTsKPiAgIAkJZ2d0 dC0+bWFwcGFibGVfZW5kID0gbWluKGdndHQtPm1hcHBhYmxlX2VuZCwgZ2d0dC0+YmFzZS50b3Rh bCk7Cj4gICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IGluZGV4IGVk NWExZWIuLmEwZWZlMDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMK PiBAQCAtMTU1NCw3ICsxNTU0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fY2FwdHVyZV9ndWNf bG9nX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJCSAg ICBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAgewo+ICAgCS8qIENhcHR1cmluZyBs b2cgYnVmIGNvbnRlbnRzIHdvbid0IGJlIHVzZWZ1bCBpZiBsb2dnaW5nIHdhcyBkaXNhYmxlZCAq Lwo+IC0JaWYgKCFkZXZfcHJpdi0+Z3VjLmxvZy52bWEgfHwgKGk5MTUuZ3VjX2xvZ19sZXZlbCA8 IDApKQo+ICsJaWYgKCFkZXZfcHJpdi0+Z3VjLmxvZy52bWEgfHwgKGk5MTVfcGFyYW1zLmd1Y19s b2dfbGV2ZWwgPCAwKSkKPiAgIAkJcmV0dXJuOwo+ICAgCj4gICAJZXJyb3ItPmd1Y19sb2cgPSBp OTE1X2Vycm9yX29iamVjdF9jcmVhdGUoZGV2X3ByaXYsCj4gQEAgLTE2OTYsNyArMTY5Niw3IEBA IHN0YXRpYyBpbnQgY2FwdHVyZSh2b2lkICpkYXRhKQo+ICAgCQlrdGltZV90b190aW1ldmFsKGt0 aW1lX3N1YihrdGltZV9nZXQoKSwKPiAgIAkJCQkJICAgZXJyb3ItPmk5MTUtPmd0Lmxhc3RfaW5p dF90aW1lKSk7Cj4gICAKPiAtCWVycm9yLT5wYXJhbXMgPSBpOTE1Owo+ICsJZXJyb3ItPnBhcmFt cyA9IGk5MTVfcGFyYW1zOwo+ICAgI2RlZmluZSBEVVAoVCwgeCkgZHVwX3BhcmFtKCNULCAmZXJy b3ItPnBhcmFtcy54KTsKPiAgIAlJOTE1X1BBUkFNU19GT1JfRUFDSChEVVApOwo+ICAgI3VuZGVm IERVUAo+IEBAIC0xNzUxLDcgKzE3NTEsNyBAQCB2b2lkIGk5MTVfY2FwdHVyZV9lcnJvcl9zdGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJc3RydWN0IGk5MTVfZ3B1 X3N0YXRlICplcnJvcjsKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAgCj4gLQlpZiAoIWk5 MTUuZXJyb3JfY2FwdHVyZSkKPiArCWlmICghaTkxNV9wYXJhbXMuZXJyb3JfY2FwdHVyZSkKPiAg IAkJcmV0dXJuOwo+ICAgCj4gICAJaWYgKFJFQURfT05DRShkZXZfcHJpdi0+Z3B1X2Vycm9yLmZp cnN0X2Vycm9yKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf c3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5j Cj4gaW5kZXggNDhhMWU5My4uM2UyYzY0NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW50IGludGVsX2d1 Y19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWlmIChndWMt PmZ3LmxvYWRfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCj4gICAJCXJldHVy biAwOwo+ICAgCj4gLQlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCj4gKwlpZiAoaTkxNV9w YXJhbXMuZ3VjX2xvZ19sZXZlbCA+PSAwKQo+ICAgCQlnZW45X2VuYWJsZV9ndWNfaW50ZXJydXB0 cyhkZXZfcHJpdik7Cj4gICAKPiAgIAljdHggPSBkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQ7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggNWQzOTFlNi4uM2VkMDQ5ZSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0xMzE5LDcgKzEzMTksNyBAQCBnZW44X2NzX2lycV9o YW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIGlpciwgaW50IHRlc3Rf c2hpZnQpCj4gICAKPiAgIAlpZiAoaWlyICYgKEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCB0 ZXN0X3NoaWZ0KSkgewo+ICAgCQlub3RpZnlfcmluZyhlbmdpbmUpOwo+IC0JCXRhc2tsZXQgfD0g aTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb247Cj4gKwkJdGFza2xldCB8PSBpOTE1X3BhcmFtcy5l bmFibGVfZ3VjX3N1Ym1pc3Npb247Cj4gICAJfQo+ICAgCj4gICAJaWYgKHRhc2tsZXQpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCj4gaW5kZXggOGFiMDAzZC4uZTI2YmMxMyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYwo+IEBAIC0yNSw3ICsyNSw3IEBACj4gICAjaW5j bHVkZSAiaTkxNV9wYXJhbXMuaCIKPiAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAgCj4gLXN0 cnVjdCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHkgPSB7Cj4gK3N0cnVjdCBpOTE1X3Bh cmFtcyBpOTE1X3BhcmFtcyBfX3JlYWRfbW9zdGx5ID0gewo+ICAgCS5tb2Rlc2V0ID0gLTEsCj4g ICAJLnBhbmVsX2lnbm9yZV9saWQgPSAxLAo+ICAgCS5zZW1hcGhvcmVzID0gLTEsCj4gQEAgLTY3 LDIyICs2NywyMyBAQCBzdHJ1Y3QgaTkxNV9wYXJhbXMgaTkxNSBfX3JlYWRfbW9zdGx5ID0gewo+ ICAgCS5lbmFibGVfZ3Z0ID0gZmFsc2UsCj4gICB9Owo+ICAgCj4gLW1vZHVsZV9wYXJhbV9uYW1l ZChtb2Rlc2V0LCBpOTE1Lm1vZGVzZXQsIGludCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1l ZChtb2Rlc2V0LCBpOTE1X3BhcmFtcy5tb2Rlc2V0LCBpbnQsIDA0MDApOwo+ICAgTU9EVUxFX1BB Uk1fREVTQyhtb2Rlc2V0LAo+ICAgCSJVc2Uga2VybmVsIG1vZGVzZXR0aW5nIFtLTVNdICgwPWRp c2FibGUsICIKPiAgIAkiMT1vbiwgLTE9Zm9yY2UgdmdhIGNvbnNvbGUgcHJlZmVyZW5jZSBbZGVm YXVsdF0pIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShwYW5lbF9pZ25vcmVf bGlkLCBpOTE1LnBhbmVsX2lnbm9yZV9saWQsIGludCwgMDYwMCk7Cj4gK21vZHVsZV9wYXJhbV9u YW1lZF91bnNhZmUocGFuZWxfaWdub3JlX2xpZCwgaTkxNV9wYXJhbXMucGFuZWxfaWdub3JlX2xp ZCwgaW50LAo+ICsJCQkgIDA2MDApOwo+ICAgTU9EVUxFX1BBUk1fREVTQyhwYW5lbF9pZ25vcmVf bGlkLAo+ICAgCSJPdmVycmlkZSBsaWQgc3RhdHVzICgwPWF1dG9kZXRlY3QsIDE9YXV0b2RldGVj dCBkaXNhYmxlZCBbZGVmYXVsdF0sICIKPiAgIAkiLTE9Zm9yY2UgbGlkIGNsb3NlZCwgLTI9Zm9y Y2UgbGlkIG9wZW4pIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShzZW1hcGhv cmVzLCBpOTE1LnNlbWFwaG9yZXMsIGludCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91 bnNhZmUoc2VtYXBob3JlcywgaTkxNV9wYXJhbXMuc2VtYXBob3JlcywgaW50LCAwNDAwKTsKPiAg IE1PRFVMRV9QQVJNX0RFU0Moc2VtYXBob3JlcywKPiAgIAkiVXNlIHNlbWFwaG9yZXMgZm9yIGlu dGVyLXJpbmcgc3luYyAiCj4gICAJIihkZWZhdWx0OiAtMSAodXNlIHBlci1jaGlwIGRlZmF1bHRz KSkiKTsKPiAgIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9yYzYsIGk5MTUu ZW5hYmxlX3JjNiwgaW50LCAwNDAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShlbmFi bGVfcmM2LCBpOTE1X3BhcmFtcy5lbmFibGVfcmM2LCBpbnQsIDA0MDApOwo+ICAgTU9EVUxFX1BB Uk1fREVTQyhlbmFibGVfcmM2LAo+ICAgCSJFbmFibGUgcG93ZXItc2F2aW5nIHJlbmRlciBDLXN0 YXRlIDYuICIKPiAgIAkiRGlmZmVyZW50IHN0YWdlcyBjYW4gYmUgc2VsZWN0ZWQgdmlhIGJpdG1h c2sgdmFsdWVzICIKPiBAQCAtOTAsMTAwICs5MSwxMTAgQEAgTU9EVUxFX1BBUk1fREVTQyhlbmFi bGVfcmM2LAo+ICAgCSJGb3IgZXhhbXBsZSwgMyB3b3VsZCBlbmFibGUgcmM2IGFuZCBkZWVwIHJj NiwgYW5kIDcgd291bGQgZW5hYmxlIGV2ZXJ5dGhpbmcuICIKPiAgIAkiZGVmYXVsdDogLTEgKHVz ZSBwZXItY2hpcCBkZWZhdWx0KSIpOwo+ICAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUo ZW5hYmxlX2RjLCBpOTE1LmVuYWJsZV9kYywgaW50LCAwNDAwKTsKPiArbW9kdWxlX3BhcmFtX25h bWVkX3Vuc2FmZShlbmFibGVfZGMsIGk5MTVfcGFyYW1zLmVuYWJsZV9kYywgaW50LCAwNDAwKTsK PiAgIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2RjLAo+ICAgCSJFbmFibGUgcG93ZXItc2F2aW5n IGRpc3BsYXkgQy1zdGF0ZXMuICIKPiAgIAkiKC0xPWF1dG8gW2RlZmF1bHRdOyAwPWRpc2FibGU7 IDE9dXAgdG8gREM1OyAyPXVwIHRvIERDNikiKTsKPiAgIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRf dW5zYWZlKGVuYWJsZV9mYmMsIGk5MTUuZW5hYmxlX2ZiYywgaW50LCAwNjAwKTsKPiArbW9kdWxl X3BhcmFtX25hbWVkX3Vuc2FmZShlbmFibGVfZmJjLCBpOTE1X3BhcmFtcy5lbmFibGVfZmJjLCBp bnQsIDA2MDApOwo+ICAgTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfZmJjLAo+ICAgCSJFbmFibGUg ZnJhbWUgYnVmZmVyIGNvbXByZXNzaW9uIGZvciBwb3dlciBzYXZpbmdzICIKPiAgIAkiKGRlZmF1 bHQ6IC0xICh1c2UgcGVyLWNoaXAgZGVmYXVsdCkpIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFtX25h bWVkX3Vuc2FmZShsdmRzX2NoYW5uZWxfbW9kZSwgaTkxNS5sdmRzX2NoYW5uZWxfbW9kZSwgaW50 LCAwNDAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShsdmRzX2NoYW5uZWxfbW9kZSwg aTkxNV9wYXJhbXMubHZkc19jaGFubmVsX21vZGUsCj4gKwkJCSAgaW50LCAwNDAwKTsKPiAgIE1P RFVMRV9QQVJNX0RFU0MobHZkc19jaGFubmVsX21vZGUsCj4gICAJICJTcGVjaWZ5IExWRFMgY2hh bm5lbCBtb2RlICIKPiAgIAkgIigwPXByb2JlIEJJT1MgW2RlZmF1bHRdLCAxPXNpbmdsZS1jaGFu bmVsLCAyPWR1YWwtY2hhbm5lbCkiKTsKPiAgIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZl KGx2ZHNfdXNlX3NzYywgaTkxNS5wYW5lbF91c2Vfc3NjLCBpbnQsIDA2MDApOwo+ICttb2R1bGVf cGFyYW1fbmFtZWRfdW5zYWZlKGx2ZHNfdXNlX3NzYywgaTkxNV9wYXJhbXMucGFuZWxfdXNlX3Nz YywgaW50LCAwNjAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MobHZkc191c2Vfc3NjLAo+ICAgCSJV c2UgU3ByZWFkIFNwZWN0cnVtIENsb2NrIHdpdGggcGFuZWxzIFtMVkRTL2VEUF0gIgo+ICAgCSIo ZGVmYXVsdDogYXV0byBmcm9tIFZCVCkiKTsKPiAgIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5z YWZlKHZidF9zZHZvX3BhbmVsX3R5cGUsIGk5MTUudmJ0X3Nkdm9fcGFuZWxfdHlwZSwgaW50LCAw NDAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZSh2YnRfc2R2b19wYW5lbF90eXBlLAo+ ICsJCQkgIGk5MTVfcGFyYW1zLnZidF9zZHZvX3BhbmVsX3R5cGUsIGludCwgMDQwMCk7Cj4gICBN T0RVTEVfUEFSTV9ERVNDKHZidF9zZHZvX3BhbmVsX3R5cGUsCj4gICAJIk92ZXJyaWRlL0lnbm9y ZSBzZWxlY3Rpb24gb2YgU0RWTyBwYW5lbCBtb2RlIGluIHRoZSBWQlQgIgo+ICAgCSIoLTI9aWdu b3JlLCAtMT1hdXRvIFtkZWZhdWx0XSwgaW5kZXggaW4gVkJUIEJJT1MgdGFibGUpIik7Cj4gICAK PiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShyZXNldCwgaTkxNS5yZXNldCwgaW50LCAwNjAw KTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShyZXNldCwgaTkxNV9wYXJhbXMucmVzZXQs IGludCwgMDYwMCk7Cj4gICBNT0RVTEVfUEFSTV9ERVNDKHJlc2V0LCAiQXR0ZW1wdCBHUFUgcmVz ZXRzICgwPWRpc2FibGVkLCAxPWZ1bGwgZ3B1IHJlc2V0LCAyPWVuZ2luZSByZXNldCBbZGVmYXVs dF0pIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZSh2YnRfZmlybXdhcmUsIGk5 MTUudmJ0X2Zpcm13YXJlLCBjaGFycCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNh ZmUodmJ0X2Zpcm13YXJlLCBpOTE1X3BhcmFtcy52YnRfZmlybXdhcmUsIGNoYXJwLCAwNDAwKTsK PiAgIE1PRFVMRV9QQVJNX0RFU0ModmJ0X2Zpcm13YXJlLAo+ICAgCQkgIkxvYWQgVkJUIGZyb20g c3BlY2lmaWVkIGZpbGUgdW5kZXIgL2xpYi9maXJtd2FyZSIpOwo+ICAgCj4gICAjaWYgSVNfRU5B QkxFRChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUikKPiAtbW9kdWxlX3BhcmFtX25hbWVk KGVycm9yX2NhcHR1cmUsIGk5MTUuZXJyb3JfY2FwdHVyZSwgYm9vbCwgMDYwMCk7Cj4gK21vZHVs ZV9wYXJhbV9uYW1lZChlcnJvcl9jYXB0dXJlLCBpOTE1X3BhcmFtcy5lcnJvcl9jYXB0dXJlLCBi b29sLCAwNjAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MoZXJyb3JfY2FwdHVyZSwKPiAgIAkiUmVj b3JkIHRoZSBHUFUgc3RhdGUgZm9sbG93aW5nIGEgaGFuZy4gIgo+ICAgCSJUaGlzIGluZm9ybWF0 aW9uIGluIC9zeXMvY2xhc3MvZHJtL2NhcmQ8Tj4vZXJyb3IgaXMgdml0YWwgZm9yICIKPiAgIAki dHJpYWdpbmcgYW5kIGRlYnVnZ2luZyBoYW5ncy4iKTsKPiAgICNlbmRpZgo+ICAgCj4gLW1vZHVs ZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX2hhbmdjaGVjaywgaTkxNS5lbmFibGVfaGFuZ2No ZWNrLCBib29sLCAwNjQ0KTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShlbmFibGVfaGFu Z2NoZWNrLCBpOTE1X3BhcmFtcy5lbmFibGVfaGFuZ2NoZWNrLAo+ICsJCQkgIGJvb2wsIDA2NDQp Owo+ICAgTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfaGFuZ2NoZWNrLAo+ICAgCSJQZXJpb2RpY2Fs bHkgY2hlY2sgR1BVIGFjdGl2aXR5IGZvciBkZXRlY3RpbmcgaGFuZ3MuICIKPiAgIAkiV0FSTklO RzogRGlzYWJsaW5nIHRoaXMgY2FuIGNhdXNlIHN5c3RlbSB3aWRlIGhhbmdzLiAiCj4gICAJIihk ZWZhdWx0OiB0cnVlKSIpOwo+ICAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxl X3BwZ3R0LCBpOTE1LmVuYWJsZV9wcGd0dCwgaW50LCAwNDAwKTsKPiArbW9kdWxlX3BhcmFtX25h bWVkX3Vuc2FmZShlbmFibGVfcHBndHQsIGk5MTVfcGFyYW1zLmVuYWJsZV9wcGd0dCwgaW50LCAw NDAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX3BwZ3R0LAo+ICAgCSJPdmVycmlkZSBQ UEdUVCB1c2FnZS4gIgo+ICAgCSIoLTE9YXV0byBbZGVmYXVsdF0sIDA9ZGlzYWJsZWQsIDE9YWxp YXNpbmcsIDI9ZnVsbCwgMz1mdWxsIHdpdGggZXh0ZW5kZWQgYWRkcmVzcyBzcGFjZSkiKTsKPiAg IAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9leGVjbGlzdHMsIGk5MTUuZW5h YmxlX2V4ZWNsaXN0cywgaW50LCAwNDAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShl bmFibGVfZXhlY2xpc3RzLCBpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzLCBpbnQsCj4gKwkJ CSAgMDQwMCk7Cj4gICBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9leGVjbGlzdHMsCj4gICAJIk92 ZXJyaWRlIGV4ZWNsaXN0cyB1c2FnZS4gIgo+ICAgCSIoLTE9YXV0byBbZGVmYXVsdF0sIDA9ZGlz YWJsZWQsIDE9ZW5hYmxlZCkiKTsKPiAgIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVu YWJsZV9wc3IsIGk5MTUuZW5hYmxlX3BzciwgaW50LCAwNjAwKTsKPiArbW9kdWxlX3BhcmFtX25h bWVkX3Vuc2FmZShlbmFibGVfcHNyLCBpOTE1X3BhcmFtcy5lbmFibGVfcHNyLCBpbnQsIDA2MDAp Owo+ICAgTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfcHNyLCAiRW5hYmxlIFBTUiAiCj4gICAJCSAi KDA9ZGlzYWJsZWQsIDE9ZW5hYmxlZCAtIGxpbmsgbW9kZSBjaG9zZW4gcGVyLXBsYXRmb3JtLCAy PWZvcmNlIGxpbmstc3RhbmRieSBtb2RlLCAzPWZvcmNlIGxpbmstb2ZmIG1vZGUpICIKPiAgIAkJ ICJEZWZhdWx0OiAtMSAodXNlIHBlci1jaGlwIGRlZmF1bHQpIik7Cj4gICAKPiAtbW9kdWxlX3Bh cmFtX25hbWVkX3Vuc2FmZShhbHBoYV9zdXBwb3J0LCBpOTE1LmFscGhhX3N1cHBvcnQsIGJvb2ws IDA0MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGFscGhhX3N1cHBvcnQsIGk5MTVf cGFyYW1zLmFscGhhX3N1cHBvcnQsIGJvb2wsCj4gKwkJCSAgMDQwMCk7Cj4gICBNT0RVTEVfUEFS TV9ERVNDKGFscGhhX3N1cHBvcnQsCj4gICAJIkVuYWJsZSBhbHBoYSBxdWFsaXR5IGRyaXZlciBz dXBwb3J0IGZvciBsYXRlc3QgaGFyZHdhcmUuICIKPiAgIAkiU2VlIGFsc28gQ09ORklHX0RSTV9J OTE1X0FMUEhBX1NVUFBPUlQuIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShk aXNhYmxlX3Bvd2VyX3dlbGwsIGk5MTUuZGlzYWJsZV9wb3dlcl93ZWxsLCBpbnQsIDA0MDApOwo+ ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGRpc2FibGVfcG93ZXJfd2VsbCwgaTkxNV9wYXJh bXMuZGlzYWJsZV9wb3dlcl93ZWxsLAo+ICsJCQkgIGludCwgMDQwMCk7Cj4gICBNT0RVTEVfUEFS TV9ERVNDKGRpc2FibGVfcG93ZXJfd2VsbCwKPiAgIAkiRGlzYWJsZSBkaXNwbGF5IHBvd2VyIHdl bGxzIHdoZW4gcG9zc2libGUgIgo+ICAgCSIoLTE9YXV0byBbZGVmYXVsdF0sIDA9cG93ZXIgd2Vs bHMgYWx3YXlzIG9uLCAxPXBvd2VyIHdlbGxzIGRpc2FibGVkIHdoZW4gcG9zc2libGUpIik7Cj4g ICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShlbmFibGVfaXBzLCBpOTE1LmVuYWJsZV9p cHMsIGludCwgMDYwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX2lwcywg aTkxNV9wYXJhbXMuZW5hYmxlX2lwcywgaW50LCAwNjAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0Mo ZW5hYmxlX2lwcywgIkVuYWJsZSBJUFMgKGRlZmF1bHQ6IHRydWUpIik7Cj4gICAKPiAtbW9kdWxl X3BhcmFtX25hbWVkKGZhc3Rib290LCBpOTE1LmZhc3Rib290LCBib29sLCAwNjAwKTsKPiArbW9k dWxlX3BhcmFtX25hbWVkKGZhc3Rib290LCBpOTE1X3BhcmFtcy5mYXN0Ym9vdCwgYm9vbCwgMDYw MCk7Cj4gICBNT0RVTEVfUEFSTV9ERVNDKGZhc3Rib290LAo+ICAgCSJUcnkgdG8gc2tpcCB1bm5l Y2Vzc2FyeSBtb2RlIHNldHMgYXQgYm9vdCB0aW1lIChkZWZhdWx0OiBmYWxzZSkiKTsKPiAgIAo+ IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKHByZWZhdWx0X2Rpc2FibGUsIGk5MTUucHJlZmF1 bHRfZGlzYWJsZSwgYm9vbCwgMDYwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUocHJl ZmF1bHRfZGlzYWJsZSwgaTkxNV9wYXJhbXMucHJlZmF1bHRfZGlzYWJsZSwKPiArCQkJICBib29s LCAwNjAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MocHJlZmF1bHRfZGlzYWJsZSwKPiAgIAkiRGlz YWJsZSBwYWdlIHByZWZhdWx0aW5nIGZvciBwcmVhZC9wd3JpdGUvcmVsb2MgKGRlZmF1bHQ6ZmFs c2UpLiAiCj4gICAJIkZvciBkZXZlbG9wZXJzIG9ubHkuIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFt X25hbWVkX3Vuc2FmZShsb2FkX2RldGVjdF90ZXN0LCBpOTE1LmxvYWRfZGV0ZWN0X3Rlc3QsIGJv b2wsIDA2MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGxvYWRfZGV0ZWN0X3Rlc3Qs IGk5MTVfcGFyYW1zLmxvYWRfZGV0ZWN0X3Rlc3QsCj4gKwkJCSAgYm9vbCwgMDYwMCk7Cj4gICBN T0RVTEVfUEFSTV9ERVNDKGxvYWRfZGV0ZWN0X3Rlc3QsCj4gICAJIkZvcmNlLWVuYWJsZSB0aGUg VkdBIGxvYWQgZGV0ZWN0IGNvZGUgZm9yIHRlc3RpbmcgKGRlZmF1bHQ6ZmFsc2UpLiAiCj4gICAJ IkZvciBkZXZlbG9wZXJzIG9ubHkuIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2Fm ZShmb3JjZV9yZXNldF9tb2Rlc2V0X3Rlc3QsIGk5MTUuZm9yY2VfcmVzZXRfbW9kZXNldF90ZXN0 LCBib29sLCAwNjAwKTsKPiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShmb3JjZV9yZXNldF9t b2Rlc2V0X3Rlc3QsCj4gKwkJCSAgaTkxNV9wYXJhbXMuZm9yY2VfcmVzZXRfbW9kZXNldF90ZXN0 LCBib29sLCAwNjAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MoZm9yY2VfcmVzZXRfbW9kZXNldF90 ZXN0LAo+ICAgCSJGb3JjZSBhIG1vZGVzZXQgZHVyaW5nIGdwdSByZXNldCBmb3IgdGVzdGluZyAo ZGVmYXVsdDpmYWxzZSkuICIKPiAgIAkiRm9yIGRldmVsb3BlcnMgb25seS4iKTsKPiAgIAo+IC1t b2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGludmVydF9icmlnaHRuZXNzLCBpOTE1LmludmVydF9i cmlnaHRuZXNzLCBpbnQsIDA2MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGludmVy dF9icmlnaHRuZXNzLCBpOTE1X3BhcmFtcy5pbnZlcnRfYnJpZ2h0bmVzcywKPiArCQkJICBpbnQs IDA2MDApOwo+ICAgTU9EVUxFX1BBUk1fREVTQyhpbnZlcnRfYnJpZ2h0bmVzcywKPiAgIAkiSW52 ZXJ0IGJhY2tsaWdodCBicmlnaHRuZXNzICIKPiAgIAkiKC0xIGZvcmNlIG5vcm1hbCwgMCBtYWNo aW5lIGRlZmF1bHRzLCAxIGZvcmNlIGludmVyc2lvbiksIHBsZWFzZSAiCj4gQEAgLTE5MSw2OSAr MjAyLDc5IEBAIE1PRFVMRV9QQVJNX0RFU0MoaW52ZXJ0X2JyaWdodG5lc3MsCj4gICAJInRvIGRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcsIGlmIHlvdXIgbWFjaGluZSBuZWVkcyBpdC4g Igo+ICAgCSJJdCB3aWxsIHRoZW4gYmUgaW5jbHVkZWQgaW4gYW4gdXBjb21pbmcgbW9kdWxlIHZl cnNpb24uIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkKGRpc2FibGVfZGlzcGxheSwgaTkx NS5kaXNhYmxlX2Rpc3BsYXksIGJvb2wsIDA0MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWQoZGlz YWJsZV9kaXNwbGF5LCBpOTE1X3BhcmFtcy5kaXNhYmxlX2Rpc3BsYXksIGJvb2wsIDA0MDApOwo+ ICAgTU9EVUxFX1BBUk1fREVTQyhkaXNhYmxlX2Rpc3BsYXksICJEaXNhYmxlIGRpc3BsYXkgKGRl ZmF1bHQ6IGZhbHNlKSIpOwo+ICAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxl X2NtZF9wYXJzZXIsIGk5MTUuZW5hYmxlX2NtZF9wYXJzZXIsIGJvb2wsIDA0MDApOwo+ICttb2R1 bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9jbWRfcGFyc2VyLCBpOTE1X3BhcmFtcy5lbmFi bGVfY21kX3BhcnNlciwKPiArCQkJICBib29sLCAwNDAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0Mo ZW5hYmxlX2NtZF9wYXJzZXIsCj4gICAJCSAiRW5hYmxlIGNvbW1hbmQgcGFyc2luZyAodHJ1ZT1l bmFibGVkIFtkZWZhdWx0XSwgZmFsc2U9ZGlzYWJsZWQpIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFt X25hbWVkX3Vuc2FmZSh1c2VfbW1pb19mbGlwLCBpOTE1LnVzZV9tbWlvX2ZsaXAsIGludCwgMDYw MCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUodXNlX21taW9fZmxpcCwgaTkxNV9wYXJh bXMudXNlX21taW9fZmxpcCwgaW50LCAwNjAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0ModXNlX21t aW9fZmxpcCwKPiAgIAkJICJ1c2UgTU1JTyBmbGlwcyAoLTE9bmV2ZXIsIDA9ZHJpdmVyIGRpc2Ny ZXRpb24gW2RlZmF1bHRdLCAxPWFsd2F5cykiKTsKPiAgIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWQo bW1pb19kZWJ1ZywgaTkxNS5tbWlvX2RlYnVnLCBpbnQsIDA2MDApOwo+ICttb2R1bGVfcGFyYW1f bmFtZWQobW1pb19kZWJ1ZywgaTkxNV9wYXJhbXMubW1pb19kZWJ1ZywgaW50LCAwNjAwKTsKPiAg IE1PRFVMRV9QQVJNX0RFU0MobW1pb19kZWJ1ZywKPiAgIAkiRW5hYmxlIHRoZSBNTUlPIGRlYnVn IGNvZGUgZm9yIHRoZSBmaXJzdCBOIGZhaWx1cmVzIChkZWZhdWx0OiBvZmYpLiAiCj4gICAJIlRo aXMgbWF5IG5lZ2F0aXZlbHkgYWZmZWN0IHBlcmZvcm1hbmNlLiIpOwo+ICAgCj4gLW1vZHVsZV9w YXJhbV9uYW1lZCh2ZXJib3NlX3N0YXRlX2NoZWNrcywgaTkxNS52ZXJib3NlX3N0YXRlX2NoZWNr cywgYm9vbCwgMDYwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZCh2ZXJib3NlX3N0YXRlX2NoZWNr cywgaTkxNV9wYXJhbXMudmVyYm9zZV9zdGF0ZV9jaGVja3MsCj4gKwkJICAgYm9vbCwgMDYwMCk7 Cj4gICBNT0RVTEVfUEFSTV9ERVNDKHZlcmJvc2Vfc3RhdGVfY2hlY2tzLAo+ICAgCSJFbmFibGUg dmVyYm9zZSBsb2dzIChpZS4gV0FSTl9PTigpKSBpbiBjYXNlIG9mIHVuZXhwZWN0ZWQgaHcgc3Rh dGUgY29uZGl0aW9ucy4iKTsKPiAgIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKG51Y2xl YXJfcGFnZWZsaXAsIGk5MTUubnVjbGVhcl9wYWdlZmxpcCwgYm9vbCwgMDQwMCk7Cj4gK21vZHVs ZV9wYXJhbV9uYW1lZF91bnNhZmUobnVjbGVhcl9wYWdlZmxpcCwgaTkxNV9wYXJhbXMubnVjbGVh cl9wYWdlZmxpcCwKPiArCQkJICBib29sLCAwNDAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MobnVj bGVhcl9wYWdlZmxpcCwKPiAgIAkJICJGb3JjZSBlbmFibGUgYXRvbWljIGZ1bmN0aW9uYWxpdHkg b24gcGxhdGZvcm1zIHRoYXQgZG9uJ3QgaGF2ZSBmdWxsIHN1cHBvcnQgeWV0LiIpOwo+ICAgCj4g ICAvKiBXQSB0byBnZXQgYXdheSB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmcgaW4gVkJUIGZvciBl YXJseSBwbGF0Zm9ybXMuV2lsbCBiZSByZW1vdmVkICovCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91 bnNhZmUoZWRwX3Zzd2luZywgaTkxNS5lZHBfdnN3aW5nLCBpbnQsIDA0MDApOwo+ICttb2R1bGVf cGFyYW1fbmFtZWRfdW5zYWZlKGVkcF92c3dpbmcsIGk5MTVfcGFyYW1zLmVkcF92c3dpbmcsIGlu dCwgMDQwMCk7Cj4gICBNT0RVTEVfUEFSTV9ERVNDKGVkcF92c3dpbmcsCj4gICAJCSAiSWdub3Jl L092ZXJyaWRlIHZzd2luZyBwcmUtZW1waCB0YWJsZSBzZWxlY3Rpb24gZnJvbSBWQlQgIgo+ICAg CQkgIigwPXVzZSB2YWx1ZSBmcm9tIHZidCBbZGVmYXVsdF0sIDE9bG93IHBvd2VyIHN3aW5nKDIw MG1WKSwiCj4gICAJCSAiMj1kZWZhdWx0IHN3aW5nKDQwMG1WKSkiKTsKPiAgIAo+IC1tb2R1bGVf cGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9ndWNfbG9hZGluZywgaTkxNS5lbmFibGVfZ3VjX2xv YWRpbmcsIGludCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX2d1 Y19sb2FkaW5nLCBpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX2xvYWRpbmcsCj4gKwkJCSAgaW50LCAw NDAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2d1Y19sb2FkaW5nLAo+ICAgCQkiRW5h YmxlIEd1QyBmaXJtd2FyZSBsb2FkaW5nICIKPiAgIAkJIigtMT1hdXRvLCAwPW5ldmVyIFtkZWZh dWx0XSwgMT1pZiBhdmFpbGFibGUsIDI9cmVxdWlyZWQpIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFt X25hbWVkX3Vuc2FmZShlbmFibGVfZ3VjX3N1Ym1pc3Npb24sIGk5MTUuZW5hYmxlX2d1Y19zdWJt aXNzaW9uLCBpbnQsIDA0MDApOwo+ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9n dWNfc3VibWlzc2lvbiwKPiArCQkJICBpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24s IGludCwgMDQwMCk7Cj4gICBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9ndWNfc3VibWlzc2lvbiwK PiAgIAkJIkVuYWJsZSBHdUMgc3VibWlzc2lvbiAiCj4gICAJCSIoLTE9YXV0bywgMD1uZXZlciBb ZGVmYXVsdF0sIDE9aWYgYXZhaWxhYmxlLCAyPXJlcXVpcmVkKSIpOwo+ICAgCj4gLW1vZHVsZV9w YXJhbV9uYW1lZChndWNfbG9nX2xldmVsLCBpOTE1Lmd1Y19sb2dfbGV2ZWwsIGludCwgMDQwMCk7 Cj4gK21vZHVsZV9wYXJhbV9uYW1lZChndWNfbG9nX2xldmVsLCBpOTE1X3BhcmFtcy5ndWNfbG9n X2xldmVsLCBpbnQsIDA0MDApOwo+ICAgTU9EVUxFX1BBUk1fREVTQyhndWNfbG9nX2xldmVsLAo+ ICAgCSJHdUMgZmlybXdhcmUgbG9nZ2luZyBsZXZlbCAoLTE6ZGlzYWJsZWQgKGRlZmF1bHQpLCAw LTM6ZW5hYmxlZCkiKTsKPiAgIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGd1Y19maXJt d2FyZV9wYXRoLCBpOTE1Lmd1Y19maXJtd2FyZV9wYXRoLCBjaGFycCwgMDQwMCk7Cj4gK21vZHVs ZV9wYXJhbV9uYW1lZF91bnNhZmUoZ3VjX2Zpcm13YXJlX3BhdGgsIGk5MTVfcGFyYW1zLmd1Y19m aXJtd2FyZV9wYXRoLAo+ICsJCQkgIGNoYXJwLCAwNDAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0Mo Z3VjX2Zpcm13YXJlX3BhdGgsCj4gICAJIkd1QyBmaXJtd2FyZSBwYXRoIHRvIHVzZSBpbnN0ZWFk IG9mIHRoZSBkZWZhdWx0IG9uZSIpOwo+ICAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUo aHVjX2Zpcm13YXJlX3BhdGgsIGk5MTUuaHVjX2Zpcm13YXJlX3BhdGgsIGNoYXJwLCAwNDAwKTsK PiArbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShodWNfZmlybXdhcmVfcGF0aCwgaTkxNV9wYXJh bXMuaHVjX2Zpcm13YXJlX3BhdGgsCj4gKwkJCSAgY2hhcnAsIDA0MDApOwo+ICAgTU9EVUxFX1BB Uk1fREVTQyhodWNfZmlybXdhcmVfcGF0aCwKPiAgIAkiSHVDIGZpcm13YXJlIHBhdGggdG8gdXNl IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgb25lIik7Cj4gICAKPiAtbW9kdWxlX3BhcmFtX25hbWVk X3Vuc2FmZShlbmFibGVfZHBfbXN0LCBpOTE1LmVuYWJsZV9kcF9tc3QsIGJvb2wsIDA2MDApOwo+ ICttb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9kcF9tc3QsIGk5MTVfcGFyYW1zLmVu YWJsZV9kcF9tc3QsIGJvb2wsCj4gKwkJCSAgMDYwMCk7Cj4gICBNT0RVTEVfUEFSTV9ERVNDKGVu YWJsZV9kcF9tc3QsCj4gICAJIkVuYWJsZSBtdWx0aS1zdHJlYW0gdHJhbnNwb3J0IChNU1QpIGZv ciBuZXcgRGlzcGxheVBvcnQgc2lua3MuIChkZWZhdWx0OiB0cnVlKSIpOwo+IC1tb2R1bGVfcGFy YW1fbmFtZWRfdW5zYWZlKGluamVjdF9sb2FkX2ZhaWx1cmUsIGk5MTUuaW5qZWN0X2xvYWRfZmFp bHVyZSwgdWludCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoaW5qZWN0X2xv YWRfZmFpbHVyZSwKPiArCQkJICBpOTE1X3BhcmFtcy5pbmplY3RfbG9hZF9mYWlsdXJlLCB1aW50 LCAwNDAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MoaW5qZWN0X2xvYWRfZmFpbHVyZSwKPiAgIAki Rm9yY2UgYW4gZXJyb3IgYWZ0ZXIgYSBudW1iZXIgb2YgZmFpbHVyZSBjaGVjayBwb2ludHMgKDA6 ZGlzYWJsZWQgKGRlZmF1bHQpLCBOOmZvcmNlIGZhaWx1cmUgYXQgdGhlIE50aCBmYWlsdXJlIGNo ZWNrIHBvaW50KSIpOwo+IC1tb2R1bGVfcGFyYW1fbmFtZWQoZW5hYmxlX2RwY2RfYmFja2xpZ2h0 LCBpOTE1LmVuYWJsZV9kcGNkX2JhY2tsaWdodCwgYm9vbCwgMDYwMCk7Cj4gK21vZHVsZV9wYXJh bV9uYW1lZChlbmFibGVfZHBjZF9iYWNrbGlnaHQsIGk5MTVfcGFyYW1zLmVuYWJsZV9kcGNkX2Jh Y2tsaWdodCwKPiArCQkgICBib29sLCAwNjAwKTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxl X2RwY2RfYmFja2xpZ2h0LAo+ICAgCSJFbmFibGUgc3VwcG9ydCBmb3IgRFBDRCBiYWNrbGlnaHQg Y29udHJvbCAoZGVmYXVsdDpmYWxzZSkiKTsKPiAgIAo+IC1tb2R1bGVfcGFyYW1fbmFtZWQoZW5h YmxlX2d2dCwgaTkxNS5lbmFibGVfZ3Z0LCBib29sLCAwNDAwKTsKPiArbW9kdWxlX3BhcmFtX25h bWVkKGVuYWJsZV9ndnQsIGk5MTVfcGFyYW1zLmVuYWJsZV9ndnQsIGJvb2wsIDA0MDApOwo+ICAg TU9EVUxFX1BBUk1fREVTQyhlbmFibGVfZ3Z0LAo+ICAgCSJFbmFibGUgc3VwcG9ydCBmb3IgSW50 ZWwgR1ZULWcgZ3JhcGhpY3MgdmlydHVhbGl6YXRpb24gaG9zdCBzdXBwb3J0KGRlZmF1bHQ6ZmFs c2UpIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5oCj4gaW5kZXggYWM4NDQ3MC4uYzU4 YzE0MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuaAo+IEBAIC03Niw3ICs3Niw3 IEBAIHN0cnVjdCBpOTE1X3BhcmFtcyB7Cj4gICB9Owo+ICAgI3VuZGVmIE1FTUJFUgo+ICAgCj4g LWV4dGVybiBzdHJ1Y3QgaTkxNV9wYXJhbXMgaTkxNSBfX3JlYWRfbW9zdGx5Owo+ICtleHRlcm4g c3RydWN0IGk5MTVfcGFyYW1zIGk5MTVfcGFyYW1zIF9fcmVhZF9tb3N0bHk7Cj4gICAKPiAgICNl bmRpZgo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gaW5kZXggMTI5ODc3Yi4uNmJjZTgy YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+IEBAIC02MzgsNyArNjM4LDcgQEAgc3Rh dGljIGludCBpOTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0 IHBjaV9kZXZpY2VfaWQgKmVudCkKPiAgIAkJKHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqKSBl bnQtPmRyaXZlcl9kYXRhOwo+ICAgCWludCBlcnI7Cj4gICAKPiAtCWlmIChJU19BTFBIQV9TVVBQ T1JUKGludGVsX2luZm8pICYmICFpOTE1LmFscGhhX3N1cHBvcnQpIHsKPiArCWlmIChJU19BTFBI QV9TVVBQT1JUKGludGVsX2luZm8pICYmICFpOTE1X3BhcmFtcy5hbHBoYV9zdXBwb3J0KSB7Cj4g ICAJCURSTV9JTkZPKCJUaGUgZHJpdmVyIHN1cHBvcnQgZm9yIHlvdXIgaGFyZHdhcmUgaW4gdGhp cyBrZXJuZWwgdmVyc2lvbiBpcyBhbHBoYSBxdWFsaXR5XG4iCj4gICAJCQkgIlNlZSBDT05GSUdf RFJNX0k5MTVfQUxQSEFfU1VQUE9SVCBvciBpOTE1LmFscGhhX3N1cHBvcnQgbW9kdWxlIHBhcmFt ZXRlclxuIgo+ICAgCQkJICJ0byBlbmFibGUgc3VwcG9ydCBpbiB0aGlzIGtlcm5lbCB2ZXJzaW9u LCBvciBjaGVjayBmb3Iga2VybmVsIHVwZGF0ZXMuXG4iKTsKPiBAQCAtNjk2LDEwICs2OTYsMTAg QEAgc3RhdGljIGludCBfX2luaXQgaTkxNV9pbml0KHZvaWQpCj4gICAJICogdmdhX3RleHRfbW9k ZV9mb3JjZSBib290IG9wdGlvbi4KPiAgIAkgKi8KPiAgIAo+IC0JaWYgKGk5MTUubW9kZXNldCA9 PSAwKQo+ICsJaWYgKGk5MTVfcGFyYW1zLm1vZGVzZXQgPT0gMCkKPiAgIAkJdXNlX2ttcyA9IGZh bHNlOwo+ICAgCj4gLQlpZiAodmdhY29uX3RleHRfZm9yY2UoKSAmJiBpOTE1Lm1vZGVzZXQgPT0g LTEpCj4gKwlpZiAodmdhY29uX3RleHRfZm9yY2UoKSAmJiBpOTE1X3BhcmFtcy5tb2Rlc2V0ID09 IC0xKQo+ICAgCQl1c2Vfa21zID0gZmFsc2U7Cj4gICAKPiAgIAlpZiAoIXVzZV9rbXMpIHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IGluZGV4IDk0MTg1ZDYuLjBmYThkN2QgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0xMjEzLDcgKzEyMTMsNyBAQCBzdGF0aWMgaW50 IG9hX2dldF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4g ICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZf cHJpdjsKPiAgIAo+IC0JaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiArCWlmIChpOTE1X3Bh cmFtcy5lbmFibGVfZXhlY2xpc3RzKQo+ICAgCQlkZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZpY19j dHhfaWQgPSBzdHJlYW0tPmN0eC0+aHdfaWQ7Cj4gICAJZWxzZSB7Cj4gICAJCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbUkNTXTsKPiBAQCAtMTI1OSw3 ICsxMjU5LDcgQEAgc3RhdGljIHZvaWQgb2FfcHV0X3JlbmRlcl9jdHhfaWQoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2Owo+ICAgCj4gLQlpZiAoaTkxNS5lbmFibGVfZXhl Y2xpc3RzKSB7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAgCQlk ZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPSBJTlZBTElEX0NUWF9JRDsKPiAgIAl9 IGVsc2Ugewo+ICAgCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBkZXZfcHJpdi0+ ZW5naW5lW1JDU107Cj4gQEAgLTM0MDUsNyArMzQwNSw3IEBAIHZvaWQgaTkxNV9wZXJmX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQlkZXZfcHJpdi0+cGVyZi5v YS50aW1lc3RhbXBfZnJlcXVlbmN5ID0gMTI1MDAwMDA7Cj4gICAKPiAgIAkJZGV2X3ByaXYtPnBl cmYub2Eub2FfZm9ybWF0cyA9IGhzd19vYV9mb3JtYXRzOwo+IC0JfSBlbHNlIGlmIChpOTE1LmVu YWJsZV9leGVjbGlzdHMpIHsKPiArCX0gZWxzZSBpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2V4ZWNs aXN0cykgewo+ICAgCQkvKiBOb3RlOiB0aGF0IGFsdGhvdWdoIHdlIGNvdWxkIHRoZW9yZXRpY2Fs bHkgYWxzbyBzdXBwb3J0IHRoZQo+ICAgCQkgKiBsZWdhY3kgcmluZ2J1ZmZlciBtb2RlIG9uIEJE VyAoYW5kIGVhcmxpZXIgaXRlcmF0aW9ucyBvZgo+ICAgCQkgKiB0aGlzIGRyaXZlciwgYmVmb3Jl IHVwc3RyZWFtaW5nIGRpZCB0aGlzKSBpdCBkaWRuJ3Qgc2VlbQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9iaW9zLmMKPiBpbmRleCA1OTQ5NzUwLi4wNDM1ZjgwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Jpb3MuYwo+IEBAIC0zNTYsNyArMzU2LDcgQEAgcGFyc2Vfc2R2b19wYW5lbF9kYXRhKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqcGFuZWxfZml4ZWRfbW9kZTsKPiAgIAlpbnQgaW5kZXg7Cj4gICAKPiAtCWluZGV4ID0g aTkxNS52YnRfc2R2b19wYW5lbF90eXBlOwo+ICsJaW5kZXggPSBpOTE1X3BhcmFtcy52YnRfc2R2 b19wYW5lbF90eXBlOwo+ICAgCWlmIChpbmRleCA9PSAtMikgewo+ICAgCQlEUk1fREVCVUdfS01T KCJJZ25vcmUgU0RWTyBwYW5lbCBtb2RlIGZyb20gQklPUyBWQlQgdGFibGVzLlxuIik7Cj4gICAJ CXJldHVybjsKPiBAQCAtNjc1LDggKzY3NSw4IEBAIHBhcnNlX2VkcChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gICAJCXVp bnQ4X3QgdnN3aW5nOwo+ICAgCj4gICAJCS8qIERvbid0IHJlYWQgZnJvbSBWQlQgaWYgbW9kdWxl IHBhcmFtZXRlciBoYXMgdmFsaWQgdmFsdWUqLwo+IC0JCWlmIChpOTE1LmVkcF92c3dpbmcpIHsK PiAtCQkJZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZyA9IGk5MTUuZWRwX3Zzd2luZyA9PSAx Owo+ICsJCWlmIChpOTE1X3BhcmFtcy5lZHBfdnN3aW5nKSB7Cj4gKwkJCWRldl9wcml2LT52YnQu ZWRwLmxvd192c3dpbmcgPSBpOTE1X3BhcmFtcy5lZHBfdnN3aW5nID09IDE7Cj4gICAJCX0gZWxz ZSB7Cj4gICAJCQl2c3dpbmcgPSAoZWRwLT5lZHBfdnN3aW5nX3ByZWVtcGggPj4gKHBhbmVsX3R5 cGUgKiA0KSkgJiAweEY7Cj4gICAJCQlkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nID0gdnN3 aW5nID09IDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBpbmRleCBhNzdkZDgwLi41MWI3 ZjQ1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBAQCAtNzEyLDcgKzcxMiw3IEBA IGludGVsX2NydF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgIAkg KiBicm9rZW4gbW9uaXRvciAod2l0aG91dCBlZGlkKSB0byB3b3JrIGJlaGluZCBhIGJyb2tlbiBr dm0gKHRoYXQgZmFpbHMKPiAgIAkgKiB0byBoYXZlIHRoZSByaWdodCByZXNpc3RvcnMgZm9yIEhQ IGRldGVjdGlvbikgbmVlZHMgdG8gZml4IHRoaXMgdXAuCj4gICAJICogRm9yIG5vdyBqdXN0IGJh aWwgb3V0LiAqLwo+IC0JaWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2X3ByaXYpICYmICFpOTE1Lmxv YWRfZGV0ZWN0X3Rlc3QpIHsKPiArCWlmIChJOTE1X0hBU19IT1RQTFVHKGRldl9wcml2KSAmJiAh aTkxNV9wYXJhbXMubG9hZF9kZXRlY3RfdGVzdCkgewo+ICAgCQlzdGF0dXMgPSBjb25uZWN0b3Jf c3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiAgIAkJZ290byBvdXQ7Cj4gICAJfQo+IEBAIC03MzAsNyAr NzMwLDcgQEAgaW50ZWxfY3J0X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ICAgCQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKPiAgIAkJCXN0YXR1cyA9 IGludGVsX2NydF9sb2FkX2RldGVjdChjcnQsCj4gICAJCQkJdG9faW50ZWxfY3J0Yyhjb25uZWN0 b3ItPnN0YXRlLT5jcnRjKS0+cGlwZSk7Cj4gLQkJZWxzZSBpZiAoaTkxNS5sb2FkX2RldGVjdF90 ZXN0KQo+ICsJCWVsc2UgaWYgKGk5MTVfcGFyYW1zLmxvYWRfZGV0ZWN0X3Rlc3QpCj4gICAJCQlz dGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiAgIAkJZWxzZQo+ICAgCQkJ c3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c191bmtub3duOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGV2aWNlX2luZm8uYwo+IGluZGV4IDQzODMxYjAuLjMxNmM1NzQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiBAQCAtMzQzLDcgKzM0Myw3IEBA IHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgIAkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMTsKPiAgIAl9 Cj4gICAKPiAtCWlmIChpOTE1LmRpc2FibGVfZGlzcGxheSkgewo+ICsJaWYgKGk5MTVfcGFyYW1z LmRpc2FibGVfZGlzcGxheSkgewo+ICAgCQlEUk1fSU5GTygiRGlzcGxheSBkaXNhYmxlZCAobW9k dWxlIHBhcmFtZXRlcilcbiIpOwo+ICAgCQlpbmZvLT5udW1fcGlwZXMgPSAwOwo+ICAgCX0gZWxz ZSBpZiAoaW5mby0+bnVtX3BpcGVzID4gMCAmJgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiBpbmRleCAwODcxODA3Li40YTNhMDYzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+IEBAIC0zNzAxLDcgKzM3MDEsNyBAQCB2b2lkIGludGVsX3ByZXBhcmVf cmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCj4gICAKPiAgIAkv KiByZXNldCBkb2Vzbid0IHRvdWNoIHRoZSBkaXNwbGF5ICovCj4gLQlpZiAoIWk5MTUuZm9yY2Vf cmVzZXRfbW9kZXNldF90ZXN0ICYmCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmZvcmNlX3Jlc2V0X21v ZGVzZXRfdGVzdCAmJgo+ICAgCSAgICAhZ3B1X3Jlc2V0X2Nsb2JiZXJzX2Rpc3BsYXkoZGV2X3By aXYpKQo+ICAgCQlyZXR1cm47Cj4gICAKPiBAQCAtMzc1Nyw3ICszNzU3LDcgQEAgdm9pZCBpbnRl bF9maW5pc2hfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWlu dCByZXQ7Cj4gICAKPiAgIAkvKiByZXNldCBkb2Vzbid0IHRvdWNoIHRoZSBkaXNwbGF5ICovCj4g LQlpZiAoIWk5MTUuZm9yY2VfcmVzZXRfbW9kZXNldF90ZXN0ICYmCj4gKwlpZiAoIWk5MTVfcGFy YW1zLmZvcmNlX3Jlc2V0X21vZGVzZXRfdGVzdCAmJgo+ICAgCSAgICAhZ3B1X3Jlc2V0X2Nsb2Ji ZXJzX2Rpc3BsYXkoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm47Cj4gICAKPiBAQCAtNjMxMiw3ICs2 MzEyLDcgQEAgc3RhdGljIHZvaWQgaHN3X2NvbXB1dGVfaXBzX2NvbmZpZyhzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7 Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ ICAgCj4gLQlwaXBlX2NvbmZpZy0+aXBzX2VuYWJsZWQgPSBpOTE1LmVuYWJsZV9pcHMgJiYKPiAr CXBpcGVfY29uZmlnLT5pcHNfZW5hYmxlZCA9IGk5MTVfcGFyYW1zLmVuYWJsZV9pcHMgJiYKPiAg IAkJaHN3X2NydGNfc3VwcG9ydHNfaXBzKGNydGMpICYmCj4gICAJCXBpcGVfY29uZmlnX3N1cHBv cnRzX2lwcyhkZXZfcHJpdiwgcGlwZV9jb25maWcpOwo+ICAgfQo+IEBAIC02NDkzLDggKzY0OTMs OCBAQCBpbnRlbF9saW5rX2NvbXB1dGVfbV9uKGludCBiaXRzX3Blcl9waXhlbCwgaW50IG5sYW5l cywKPiAgIAo+ICAgc3RhdGljIGlubGluZSBib29sIGludGVsX3BhbmVsX3VzZV9zc2Moc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0JaWYgKGk5MTUucGFuZWxfdXNl X3NzYyA+PSAwKQo+IC0JCXJldHVybiBpOTE1LnBhbmVsX3VzZV9zc2MgIT0gMDsKPiArCWlmIChp OTE1X3BhcmFtcy5wYW5lbF91c2Vfc3NjID49IDApCj4gKwkJcmV0dXJuIGk5MTVfcGFyYW1zLnBh bmVsX3VzZV9zc2MgIT0gMDsKPiAgIAlyZXR1cm4gZGV2X3ByaXYtPnZidC5sdmRzX3VzZV9zc2MK PiAgIAkJJiYgIShkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfTFZEU19TU0NfRElTQUJMRSk7Cj4g ICB9Cj4gQEAgLTEyMDgzLDcgKzEyMDgzLDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY2hl Y2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJCXJldHVybiByZXQ7Cj4gICAJCX0KPiAg IAo+IC0JCWlmIChpOTE1LmZhc3Rib290ICYmCj4gKwkJaWYgKGk5MTVfcGFyYW1zLmZhc3Rib290 ICYmCj4gICAJCSAgICBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldl9wcml2LAo+ICAgCQkJ CQl0b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKSwKPiAgIAkJCQkJcGlwZV9jb25m aWcsIHRydWUpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggODg3OTUzYy4uNTAx YzY2MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0zODI2LDcgKzM4MjYsNyBA QCBpbnRlbF9kcF9jYW5fbXN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gICB7Cj4gICAJ dTggbXN0bV9jYXA7Cj4gICAKPiAtCWlmICghaTkxNS5lbmFibGVfZHBfbXN0KQo+ICsJaWYgKCFp OTE1X3BhcmFtcy5lbmFibGVfZHBfbXN0KQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAgIAlp ZiAoIWludGVsX2RwLT5jYW5fbXN0KQo+IEBAIC0zODQ0LDcgKzM4NDQsNyBAQCBpbnRlbF9kcF9j YW5fbXN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gICBzdGF0aWMgdm9pZAo+ICAgaW50 ZWxfZHBfY29uZmlndXJlX21zdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAgewo+IC0J aWYgKCFpOTE1LmVuYWJsZV9kcF9tc3QpCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9kcF9t c3QpCj4gICAJCXJldHVybjsKPiAgIAo+ICAgCWlmICghaW50ZWxfZHAtPmNhbl9tc3QpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYwo+IGluZGV4IGQy ODMwYmEuLjg1Mjk4ODBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX2F1eF9iYWNrbGlnaHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw X2F1eF9iYWNrbGlnaHQuYwo+IEBAIC0yNjQsNyArMjY0LDcgQEAgaW50IGludGVsX2RwX2F1eF9p bml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0 b3IpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZpbnRlbF9jb25uZWN0 b3ItPnBhbmVsOwo+ICAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2RwY2RfYmFja2xpZ2h0KQo+ICsJ aWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfZHBjZF9iYWNrbGlnaHQpCj4gICAJCXJldHVybiAtRU5P REVWOwo+ICAgCj4gICAJaWYgKCFpbnRlbF9kcF9hdXhfZGlzcGxheV9jb250cm9sX2NhcGFibGUo aW50ZWxfY29ubmVjdG9yKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDMwNzgw NzYuLjA5ZTZmNDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xOTAyLDcg KzE5MDIsNyBAQCB2b2lkIGludGVsX2luaXRfaXBjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gICB2b2lkIGludGVsX2VuYWJsZV9pcGMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKPiAgIHN0YXRpYyBpbmxpbmUgaW50IGludGVsX2VuYWJsZV9yYzYodm9p ZCkKPiAgIHsKPiAtCXJldHVybiBpOTE1LmVuYWJsZV9yYzY7Cj4gKwlyZXR1cm4gaTkxNV9wYXJh bXMuZW5hYmxlX3JjNjsKPiAgIH0KPiAgIAo+ICAgLyogaW50ZWxfc2R2by5jICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCAzYWU4OWE5ZC4uNzllMTk4YSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTE1Myw3ICsx NTMsNyBAQCBfX2ludGVsX2VuZ2luZV9jb250ZXh0X3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1OCBjbGFzcykKPiAgIAkJY2FzZSA5Ogo+ICAgCQkJcmV0dXJuIEdFTjlf TFJfQ09OVEVYVF9SRU5ERVJfU0laRTsKPiAgIAkJY2FzZSA4Ogo+IC0JCQlyZXR1cm4gaTkxNS5l bmFibGVfZXhlY2xpc3RzID8KPiArCQkJcmV0dXJuIGk5MTVfcGFyYW1zLmVuYWJsZV9leGVjbGlz dHMgPwo+ICAgCQkJICAgICAgIEdFTjhfTFJfQ09OVEVYVF9SRU5ERVJfU0laRSA6Cj4gICAJCQkg ICAgICAgR0VOOF9DWFRfVE9UQUxfU0laRTsKPiAgIAkJY2FzZSA3Ogo+IEBAIC0zMDEsNyArMzAx LDcgQEAgaW50IGludGVsX2VuZ2luZXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gICAJCQkmaW50ZWxfZW5naW5lX2NsYXNzZXNbZW5naW5lLT5jbGFzc107Cj4gICAJ CWludCAoKmluaXQpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gICAKPiAtCQlp ZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ICsJCWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZXhl Y2xpc3RzKQo+ICAgCQkJaW5pdCA9IGNsYXNzX2luZm8tPmluaXRfZXhlY2xpc3RzOwo+ICAgCQll bHNlCj4gICAJCQlpbml0ID0gY2xhc3NfaW5mby0+aW5pdF9sZWdhY3k7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZmJjLmMKPiBpbmRleCA1OGE3NzJkLi5lMWM0ZTcxIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZmJjLmMKPiBAQCAtODU5LDcgKzg1OSw3IEBAIHN0YXRpYyBib29sIGludGVsX2ZiY19j YW5fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJcmV0dXJu IGZhbHNlOwo+ICAgCX0KPiAgIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9mYmMpIHsKPiArCWlmICgh aTkxNV9wYXJhbXMuZW5hYmxlX2ZiYykgewo+ICAgCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAiZGlz YWJsZWQgcGVyIG1vZHVsZSBwYXJhbSBvciBieSBkZWZhdWx0IjsKPiAgIAkJcmV0dXJuIGZhbHNl Owo+ICAgCX0KPiBAQCAtMTMxMCw4ICsxMzEwLDggQEAgdm9pZCBpbnRlbF9mYmNfaW5pdF9waXBl X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgICAqLwo+ICAgc3Rh dGljIGludCBpbnRlbF9zYW5pdGl6ZV9mYmNfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgIHsKPiAtCWlmIChpOTE1LmVuYWJsZV9mYmMgPj0gMCkKPiAtCQlyZXR1 cm4gISFpOTE1LmVuYWJsZV9mYmM7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2ZiYyA+PSAw KQo+ICsJCXJldHVybiAhIWk5MTVfcGFyYW1zLmVuYWJsZV9mYmM7Cj4gICAKPiAgIAlpZiAoIUhB U19GQkMoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm4gMDsKPiBAQCAtMTM1NSw4ICsxMzU1LDkgQEAg dm9pZCBpbnRlbF9mYmNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g ICAJaWYgKG5lZWRfZmJjX3Z0ZF93YShkZXZfcHJpdikpCj4gICAJCW1rd3JpdGVfZGV2aWNlX2lu Zm8oZGV2X3ByaXYpLT5oYXNfZmJjID0gZmFsc2U7Cj4gICAKPiAtCWk5MTUuZW5hYmxlX2ZiYyA9 IGludGVsX3Nhbml0aXplX2ZiY19vcHRpb24oZGV2X3ByaXYpOwo+IC0JRFJNX0RFQlVHX0tNUygi U2FuaXRpemVkIGVuYWJsZV9mYmMgdmFsdWU6ICVkXG4iLCBpOTE1LmVuYWJsZV9mYmMpOwo+ICsJ aTkxNV9wYXJhbXMuZW5hYmxlX2ZiYyA9IGludGVsX3Nhbml0aXplX2ZiY19vcHRpb24oZGV2X3By aXYpOwo+ICsJRFJNX0RFQlVHX0tNUygiU2FuaXRpemVkIGVuYWJsZV9mYmMgdmFsdWU6ICVkXG4i LAo+ICsJCSAgICAgIGk5MTVfcGFyYW1zLmVuYWJsZV9mYmMpOwo+ICAgCj4gICAJaWYgKCFIQVNf RkJDKGRldl9wcml2KSkgewo+ICAgCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAidW5zdXBwb3J0ZWQg YnkgdGhpcyBjaGlwc2V0IjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j Cj4gaW5kZXggOGIwYWU3Zi4uYWQ3OTA1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKPiBAQCAtMTMxLDE0ICsxMzEsMTQgQEAgc3RhdGljIHZvaWQgZ3VjX3Bh cmFtc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgCXBh cmFtc1tHVUNfQ1RMX0xPR19QQVJBTVNdID0gZ3VjLT5sb2cuZmxhZ3M7Cj4gICAKPiAtCWlmIChp OTE1Lmd1Y19sb2dfbGV2ZWwgPj0gMCkgewo+ICsJaWYgKGk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2 ZWwgPj0gMCkgewo+ICAgCQlwYXJhbXNbR1VDX0NUTF9ERUJVR10gPQo+IC0JCQlpOTE1Lmd1Y19s b2dfbGV2ZWwgPDwgR1VDX0xPR19WRVJCT1NJVFlfU0hJRlQ7Cj4gKwkJCWk5MTVfcGFyYW1zLmd1 Y19sb2dfbGV2ZWwgPDwgR1VDX0xPR19WRVJCT1NJVFlfU0hJRlQ7Cj4gICAJfSBlbHNlCj4gICAJ CXBhcmFtc1tHVUNfQ1RMX0RFQlVHXSA9IEdVQ19MT0dfRElTQUJMRUQ7Cj4gICAKPiAgIAkvKiBJ ZiBHdUMgc3VibWlzc2lvbiBpcyBlbmFibGVkLCBzZXQgdXAgYWRkaXRpb25hbCBwYXJhbWV0ZXJz IGhlcmUgKi8KPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+ICsJaWYgKGk5 MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+ICAgCQl1MzIgYWRzID0gZ3VjX2dn dHRfb2Zmc2V0KGd1Yy0+YWRzX3ZtYSkgPj4gUEFHRV9TSElGVDsKPiAgIAkJdTMyIHBncyA9IGd1 Y19nZ3R0X29mZnNldChkZXZfcHJpdi0+Z3VjLnN0YWdlX2Rlc2NfcG9vbCk7Cj4gICAJCXUzMiBj dHhfaW5fMTYgPSBHVUNfTUFYX1NUQUdFX0RFU0NSSVBUT1JTIC8gMTY7Cj4gQEAgLTM2OCw3ICsz NjgsNyBAQCBpbnQgaW50ZWxfZ3VjX2luaXRfaHcoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAg CWd1Yy0+ZncubG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOwo+ICAgCj4g ICAJRFJNX0lORk8oIkd1QyAlcyAoZmlybXdhcmUgJXMgW3ZlcnNpb24gJXUuJXVdKVxuIiwKPiAt CQkgaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPyAic3VibWlzc2lvbiBlbmFibGVkIiA6ICJs b2FkZWQiLAo+ICsJCSBpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPyAic3VibWlz c2lvbiBlbmFibGVkIiA6ICJsb2FkZWQiLAo+ICAgCQkgZ3VjLT5mdy5wYXRoLAo+ICAgCQkgZ3Vj LT5mdy5tYWpvcl92ZXJfZm91bmQsIGd1Yy0+ZncubWlub3JfdmVyX2ZvdW5kKTsKPiAgIAo+IEBA IC0zOTAsOCArMzkwLDggQEAgaW50IGludGVsX2d1Y19zZWxlY3RfZncoc3RydWN0IGludGVsX2d1 YyAqZ3VjKQo+ICAgCWd1Yy0+ZncubG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT05F Owo+ICAgCWd1Yy0+ZncudHlwZSA9IElOVEVMX1VDX0ZXX1RZUEVfR1VDOwo+ICAgCj4gLQlpZiAo aTkxNS5ndWNfZmlybXdhcmVfcGF0aCkgewo+IC0JCWd1Yy0+ZncucGF0aCA9IGk5MTUuZ3VjX2Zp cm13YXJlX3BhdGg7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZ3VjX2Zpcm13YXJlX3BhdGgpIHsKPiAr CQlndWMtPmZ3LnBhdGggPSBpOTE1X3BhcmFtcy5ndWNfZmlybXdhcmVfcGF0aDsKPiAgIAkJZ3Vj LT5mdy5tYWpvcl92ZXJfd2FudGVkID0gMDsKPiAgIAkJZ3VjLT5mdy5taW5vcl92ZXJfd2FudGVk ID0gMDsKPiAgIAl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2cuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2cuYwo+IGluZGV4IDE2ZDNiODcuLmQwMjNlNTcgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCj4gQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0 aWMgaW50IGd1Y19sb2dfcmVsYXlfZmlsZV9jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ ICAgCXN0cnVjdCBkZW50cnkgKmxvZ19kaXI7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JaWYgKGk5 MTUuZ3VjX2xvZ19sZXZlbCA8IDApCj4gKwlpZiAoaTkxNV9wYXJhbXMuZ3VjX2xvZ19sZXZlbCA8 IDApCj4gICAJCXJldHVybiAwOwo+ICAgCj4gICAJLyogRm9yIG5vdyBjcmVhdGUgdGhlIGxvZyBm aWxlIGluIC9zeXMva2VybmVsL2RlYnVnL2RyaS8wIGRpciAqLwo+IEBAIC00ODAsNyArNDgwLDcg QEAgc3RhdGljIGludCBndWNfbG9nX2xhdGVfc2V0dXAoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ ICAgCWd1Y19sb2dfcnVudGltZV9kZXN0cm95KGd1Yyk7Cj4gICBlcnI6Cj4gICAJLyogbG9nZ2lu ZyB3aWxsIHJlbWFpbiBvZmYgKi8KPiAtCWk5MTUuZ3VjX2xvZ19sZXZlbCA9IC0xOwo+ICsJaTkx NV9wYXJhbXMuZ3VjX2xvZ19sZXZlbCA9IC0xOwo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAK PiBAQCAtNTAyLDcgKzUwMiw3IEBAIHN0YXRpYyB2b2lkIGd1Y19mbHVzaF9sb2dzKHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBndWNfdG9faTkxNShndWMpOwo+ICAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2d1Y19zdWJt aXNzaW9uIHx8IChpOTE1Lmd1Y19sb2dfbGV2ZWwgPCAwKSkKPiArCWlmICghaTkxNV9wYXJhbXMu ZW5hYmxlX2d1Y19zdWJtaXNzaW9uIHx8IChpOTE1X3BhcmFtcy5ndWNfbG9nX2xldmVsIDwgMCkp Cj4gICAJCXJldHVybjsKPiAgIAo+ICAgCS8qIEZpcnN0IGRpc2FibGUgdGhlIGludGVycnVwdHMs IHdpbGwgYmUgcmVuYWJsZWQgYWZ0ZXJ3YXJkcyAqLwo+IEBAIC01MjksOCArNTI5LDggQEAgaW50 IGludGVsX2d1Y19sb2dfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIAo+ICAgCUdF TV9CVUdfT04oZ3VjLT5sb2cudm1hKTsKPiAgIAo+IC0JaWYgKGk5MTUuZ3VjX2xvZ19sZXZlbCA+ IEdVQ19MT0dfVkVSQk9TSVRZX01BWCkKPiAtCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSBHVUNfTE9H X1ZFUkJPU0lUWV9NQVg7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZ3VjX2xvZ19sZXZlbCA+IEdVQ19M T0dfVkVSQk9TSVRZX01BWCkKPiArCQlpOTE1X3BhcmFtcy5ndWNfbG9nX2xldmVsID0gR1VDX0xP R19WRVJCT1NJVFlfTUFYOwo+ICAgCj4gICAJLyogVGhlIGZpcnN0IHBhZ2UgaXMgdG8gc2F2ZSBs b2cgYnVmZmVyIHN0YXRlLiBBbGxvY2F0ZSBvbmUKPiAgIAkgKiBleHRyYSBwYWdlIGZvciBvdGhl cnMgaW4gY2FzZSBmb3Igb3ZlcmxhcCAqLwo+IEBAIC01NTUsNyArNTU1LDcgQEAgaW50IGludGVs X2d1Y19sb2dfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIAo+ICAgCWd1Yy0+bG9n LnZtYSA9IHZtYTsKPiAgIAo+IC0JaWYgKGk5MTUuZ3VjX2xvZ19sZXZlbCA+PSAwKSB7Cj4gKwlp ZiAoaTkxNV9wYXJhbXMuZ3VjX2xvZ19sZXZlbCA+PSAwKSB7Cj4gICAJCXJldCA9IGd1Y19sb2df cnVudGltZV9jcmVhdGUoZ3VjKTsKPiAgIAkJaWYgKHJldCA8IDApCj4gICAJCQlnb3RvIGVycl92 bWE7Cj4gQEAgLTU3Niw3ICs1NzYsNyBAQCBpbnQgaW50ZWxfZ3VjX2xvZ19jcmVhdGUoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+ICAgCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmxv Zy52bWEpOwo+ICAgZXJyOgo+ICAgCS8qIGxvZ2dpbmcgd2lsbCBiZSBvZmYgKi8KPiAtCWk5MTUu Z3VjX2xvZ19sZXZlbCA9IC0xOwo+ICsJaTkxNV9wYXJhbXMuZ3VjX2xvZ19sZXZlbCA9IC0xOwo+ ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiBAQCAtNjAwLDcgKzYwMCw3IEBAIGludCBpOTE1 X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBj b250cm9sX3ZhbCkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAgIAkvKiBUaGlzIGNvbWJp bmF0aW9uIGRvZXNuJ3QgbWFrZSBzZW5zZSAmIHdvbid0IGhhdmUgYW55IGVmZmVjdCAqLwo+IC0J aWYgKCFsb2dfcGFyYW0ubG9nZ2luZ19lbmFibGVkICYmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPCAw KSkKPiArCWlmICghbG9nX3BhcmFtLmxvZ2dpbmdfZW5hYmxlZCAmJiAoaTkxNV9wYXJhbXMuZ3Vj X2xvZ19sZXZlbCA8IDApKQo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+ICAgCXJldCA9IGd1Y19sb2df Y29udHJvbChndWMsIGxvZ19wYXJhbS52YWx1ZSk7Cj4gQEAgLTYxMCw3ICs2MTAsNyBAQCBpbnQg aTkxNV9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 NjQgY29udHJvbF92YWwpCj4gICAJfQo+ICAgCj4gICAJaWYgKGxvZ19wYXJhbS5sb2dnaW5nX2Vu YWJsZWQpIHsKPiAtCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSBsb2dfcGFyYW0udmVyYm9zaXR5Owo+ ICsJCWk5MTVfcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPSBsb2dfcGFyYW0udmVyYm9zaXR5Owo+ICAg Cj4gICAJCS8qIElmIGxvZ19sZXZlbCB3YXMgc2V0IGFzIC0xIGF0IGJvb3QgdGltZSwgdGhlbiB0 aGUgcmVsYXkgY2hhbm5lbCBmaWxlCj4gICAJCSAqIHdvdWxkbid0IGhhdmUgYmVlbiBjcmVhdGVk IGJ5IG5vdyBhbmQgaW50ZXJydXB0cyBhbHNvIHdvdWxkIG5vdCBoYXZlCj4gQEAgLTYzMyw3ICs2 MzMsNyBAQCBpbnQgaTkxNV9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1NjQgY29udHJvbF92YWwpCj4gICAJCWd1Y19mbHVzaF9sb2dzKGd1Yyk7Cj4g ICAKPiAgIAkJLyogQXMgbG9nZ2luZyBpcyBkaXNhYmxlZCwgdXBkYXRlIGxvZyBsZXZlbCB0byBy ZWZsZWN0IHRoYXQgKi8KPiAtCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSAtMTsKPiArCQlpOTE1X3Bh cmFtcy5ndWNfbG9nX2xldmVsID0gLTE7Cj4gICAJfQo+ICAgCj4gICAJcmV0dXJuIHJldDsKPiBA QCAtNjQxLDcgKzY0MSw3IEBAIGludCBpOTE1X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBjb250cm9sX3ZhbCkKPiAgIAo+ICAgdm9pZCBpOTE1 X2d1Y19sb2dfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAg ewo+IC0JaWYgKCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiB8fCBpOTE1Lmd1Y19sb2dfbGV2 ZWwgPCAwKQo+ICsJaWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gfHwgaTkx NV9wYXJhbXMuZ3VjX2xvZ19sZXZlbCA8IDApCj4gICAJCXJldHVybjsKPiAgIAo+ICAgCW11dGV4 X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiBAQCAtNjUxLDcgKzY1MSw3IEBA IHZvaWQgaTkxNV9ndWNfbG9nX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIAo+ICAgdm9pZCBpOTE1X2d1Y19sb2dfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gLQlpZiAoIWk5MTUuZW5hYmxlX2d1Y19zdWJt aXNzaW9uKQo+ICsJaWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gICAJ CXJldHVybjsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Z0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndnQuYwo+IGluZGV4IGMxN2VkMGUuLjM5MTBmMTMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Z0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndnQuYwo+IEBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBi b29sIGlzX3N1cHBvcnRlZF9kZXZpY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgICovCj4gICB2b2lkIGludGVsX2d2dF9zYW5pdGl6ZV9vcHRpb25zKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCWlmICghaTkxNS5lbmFibGVfZ3Z0KQo+ ICsJaWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfZ3Z0KQo+ICAgCQlyZXR1cm47Cj4gICAKPiAgIAlp ZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpKSB7Cj4gQEAgLTczLDcgKzczLDcgQEAgdm9p ZCBpbnRlbF9ndnRfc2FuaXRpemVfb3B0aW9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gICAKPiAgIAlyZXR1cm47Cj4gICBiYWlsOgo+IC0JaTkxNS5lbmFibGVfZ3Z0ID0g MDsKPiArCWk5MTVfcGFyYW1zLmVuYWJsZV9ndnQgPSAwOwo+ICAgfQo+ICAgCj4gICAvKioKPiBA QCAtOTAsMTcgKzkwLDE3IEBAIGludCBpbnRlbF9ndnRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JaWYgKCFpOTE1LmVu YWJsZV9ndnQpIHsKPiArCWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX2d2dCkgewo+ICAgCQlEUk1f REVCVUdfRFJJVkVSKCJHVlQtZyBpcyBkaXNhYmxlZCBieSBrZXJuZWwgcGFyYW1zXG4iKTsKPiAg IAkJcmV0dXJuIDA7Cj4gICAJfQo+ICAgCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykg ewo+ICsJaWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gICAJCURSTV9FUlJP UigiaTkxNSBHVlQtZyBsb2FkaW5nIGZhaWxlZCBkdWUgdG8gZGlzYWJsZWQgZXhlY2xpc3RzIG1v ZGVcbiIpOwo+ICAgCQlyZXR1cm4gLUVJTzsKPiAgIAl9Cj4gICAKPiAtCWlmIChpOTE1LmVuYWJs ZV9ndWNfc3VibWlzc2lvbikgewo+ICsJaWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlz c2lvbikgewo+ICAgCQlEUk1fRVJST1IoImk5MTUgR1ZULWcgbG9hZGluZyBmYWlsZWQgZHVlIHRv IEdyYXBoaWNzIHZpcnR1YWxpemF0aW9uIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIHdpdGggR3VDIHN1 Ym1pc3Npb25cbiIpOwo+ICAgCQlyZXR1cm4gLUVJTzsKPiAgIAl9Cj4gQEAgLTEyMyw3ICsxMjMs NyBAQCBpbnQgaW50ZWxfZ3Z0X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgCXJldHVybiAwOwo+ICAgCj4gICBiYWlsOgo+IC0JaTkxNS5lbmFibGVfZ3Z0ID0gMDsK PiArCWk5MTVfcGFyYW1zLmVuYWJsZV9ndnQgPSAwOwo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKPiBpbmRleCBkOWQ4N2Q5Li5h MGI0NDc4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVj ay5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKPiBAQCAt NDI4LDcgKzQyOCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQoc3RydWN0 IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCXVuc2lnbmVkIGludCBodW5nID0gMCwgc3R1Y2sgPSAw Owo+ICAgCWludCBidXN5X2NvdW50ID0gMDsKPiAgIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9oYW5n Y2hlY2spCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9oYW5nY2hlY2spCj4gICAJCXJldHVy bjsKPiAgIAo+ICAgCWlmICghUkVBRF9PTkNFKGRldl9wcml2LT5ndC5hd2FrZSkpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaHVjLmMKPiBpbmRleCA2MTQ1ZmEwLi4xNTdjNzg4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaHVjLmMKPiBAQCAtMTU1LDggKzE1NSw4IEBAIHZvaWQgaW50ZWxfaHVjX3Nl bGVjdF9mdyhzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCj4gICAJaHVjLT5mdy5sb2FkX3N0YXR1cyA9 IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7Cj4gICAJaHVjLT5mdy50eXBlID0gSU5URUxfVUNfRldf VFlQRV9IVUM7Cj4gICAKPiAtCWlmIChpOTE1Lmh1Y19maXJtd2FyZV9wYXRoKSB7Cj4gLQkJaHVj LT5mdy5wYXRoID0gaTkxNS5odWNfZmlybXdhcmVfcGF0aDsKPiArCWlmIChpOTE1X3BhcmFtcy5o dWNfZmlybXdhcmVfcGF0aCkgewo+ICsJCWh1Yy0+ZncucGF0aCA9IGk5MTVfcGFyYW1zLmh1Y19m aXJtd2FyZV9wYXRoOwo+ICAgCQlodWMtPmZ3Lm1ham9yX3Zlcl93YW50ZWQgPSAwOwo+ICAgCQlo dWMtPmZ3Lm1pbm9yX3Zlcl93YW50ZWQgPSAwOwo+ICAgCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShk ZXZfcHJpdikpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IGQ4OWUxYjguLjFm ZWNiZDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0yNDQsNyArMjQ0LDcg QEAgaW50IGludGVsX3Nhbml0aXplX2VuYWJsZV9leGVjbGlzdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBpbnQgZW5hYmwKPiAgIAo+ICAgCWlmIChIQVNfTE9HSUNBTF9SSU5H X0NPTlRFWFRTKGRldl9wcml2KSAmJgo+ICAgCSAgICBVU0VTX1BQR1RUKGRldl9wcml2KSAmJgo+ IC0JICAgIGk5MTUudXNlX21taW9fZmxpcCA+PSAwKQo+ICsJICAgIGk5MTVfcGFyYW1zLnVzZV9t bWlvX2ZsaXAgPj0gMCkKPiAgIAkJcmV0dXJuIDE7Cj4gICAKPiAgIAlyZXR1cm4gMDsKPiBAQCAt OTE0LDcgKzkxNCw3IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX3JlcXVlc3RfYWxsb2Moc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCSAqLwo+ICAgCXJlcXVlc3QtPnJl c2VydmVkX3NwYWNlICs9IEVYRUNMSVNUU19SRVFVRVNUX1NJWkU7Cj4gICAKPiAtCWlmIChpOTE1 LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+ICsJaWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9ndWNf c3VibWlzc2lvbikgewo+ICAgCQkvKgo+ICAgCQkgKiBDaGVjayB0aGF0IHRoZSBHdUMgaGFzIHNw YWNlIGZvciB0aGUgcmVxdWVzdCBiZWZvcmUKPiAgIAkJICogZ29pbmcgYW55IGZ1cnRoZXIsIGFz IHRoZSBpOTE1X2FkZF9yZXF1ZXN0KCkgY2FsbAo+IEBAIC05NTAsNyArOTUwLDcgQEAgc3RhdGlj IGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCj4gICAJcmV0dXJuIDA7Cj4gICAKPiAgIGVycl91bnJlc2VydmU6Cj4gLQlpZiAo aTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2d1 Y19zdWJtaXNzaW9uKQo+ICAgCQlpOTE1X2d1Y193cV91bnJlc2VydmUocmVxdWVzdCk7Cj4gICBl cnI6Cj4gICAJcmV0dXJuIHJldDsKPiBAQCAtMTI4NSw3ICsxMjg1LDcgQEAgc3RhdGljIGludCBn ZW44X2luaXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg CQlzdWJtaXQgPSB0cnVlOwo+ICAgCX0KPiAgIAo+IC0JaWYgKHN1Ym1pdCAmJiAhaTkxNS5lbmFi bGVfZ3VjX3N1Ym1pc3Npb24pCj4gKwlpZiAoc3VibWl0ICYmICFpOTE1X3BhcmFtcy5lbmFibGVf Z3VjX3N1Ym1pc3Npb24pCj4gICAJCWV4ZWNsaXN0c19zdWJtaXRfcG9ydHMoZW5naW5lKTsKPiAg IAo+ICAgCXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9sdmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMKPiBpbmRleCBhOTgx M2FlLi40OTFmZGY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2 ZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+IEBAIC04ODAs OCArODgwLDggQEAgc3RhdGljIGJvb2wgY29tcHV0ZV9pc19kdWFsX2xpbmtfbHZkcyhzdHJ1Y3Qg aW50ZWxfbHZkc19lbmNvZGVyICpsdmRzX2VuY29kZXIpCj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAgCj4gICAJLyogdXNlIHRoZSBtb2R1 bGUgb3B0aW9uIHZhbHVlIGlmIHNwZWNpZmllZCAqLwo+IC0JaWYgKGk5MTUubHZkc19jaGFubmVs X21vZGUgPiAwKQo+IC0JCXJldHVybiBpOTE1Lmx2ZHNfY2hhbm5lbF9tb2RlID09IDI7Cj4gKwlp ZiAoaTkxNV9wYXJhbXMubHZkc19jaGFubmVsX21vZGUgPiAwKQo+ICsJCXJldHVybiBpOTE1X3Bh cmFtcy5sdmRzX2NoYW5uZWxfbW9kZSA9PSAyOwo+ICAgCj4gICAJLyogc2luZ2xlIGNoYW5uZWwg TFZEUyBpcyBsaW1pdGVkIHRvIDExMiBNSHogKi8KPiAgIAlpZiAobHZkc19lbmNvZGVyLT5hdHRh Y2hlZF9jb25uZWN0b3ItPmJhc2UucGFuZWwuZml4ZWRfbW9kZS0+Y2xvY2sKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX29wcmVnaW9uLmMKPiBpbmRleCA5ODE1NGVmLi4xMGUzYTRhZSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYwo+IEBAIC05MjEsNyArOTIxLDcgQEAg c3RhdGljIGludCBpbnRlbF9sb2FkX3ZidF9maXJtd2FyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX29wcmVnaW9uICpvcHJlZ2lvbiA9 ICZkZXZfcHJpdi0+b3ByZWdpb247Cj4gICAJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyA9IE5V TEw7Cj4gLQljb25zdCBjaGFyICpuYW1lID0gaTkxNS52YnRfZmlybXdhcmU7Cj4gKwljb25zdCBj aGFyICpuYW1lID0gaTkxNV9wYXJhbXMudmJ0X2Zpcm13YXJlOwo+ICAgCWludCByZXQ7Cj4gICAK PiAgIAlpZiAoIW5hbWUgfHwgISpuYW1lKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ IGluZGV4IGQ0ZGQyNDguLjYyZTI1ZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcGFuZWwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVs LmMKPiBAQCAtMzc5LDEzICszNzksMTMgQEAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cwo+ICAg aW50ZWxfcGFuZWxfZGV0ZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg IHsKPiAgIAkvKiBBc3N1bWUgdGhhdCB0aGUgQklPUyBkb2VzIG5vdCBsaWUgdGhyb3VnaCB0aGUg T3BSZWdpb24uLi4gKi8KPiAtCWlmICghaTkxNS5wYW5lbF9pZ25vcmVfbGlkICYmIGRldl9wcml2 LT5vcHJlZ2lvbi5saWRfc3RhdGUpIHsKPiArCWlmICghaTkxNV9wYXJhbXMucGFuZWxfaWdub3Jl X2xpZCAmJiBkZXZfcHJpdi0+b3ByZWdpb24ubGlkX3N0YXRlKSB7Cj4gICAJCXJldHVybiAqZGV2 X3ByaXYtPm9wcmVnaW9uLmxpZF9zdGF0ZSAmIDB4MSA/Cj4gICAJCQljb25uZWN0b3Jfc3RhdHVz X2Nvbm5lY3RlZCA6Cj4gICAJCQljb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiAgIAl9 Cj4gICAKPiAtCXN3aXRjaCAoaTkxNS5wYW5lbF9pZ25vcmVfbGlkKSB7Cj4gKwlzd2l0Y2ggKGk5 MTVfcGFyYW1zLnBhbmVsX2lnbm9yZV9saWQpIHsKPiAgIAljYXNlIC0yOgo+ICAgCQlyZXR1cm4g Y29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cj4gICAJY2FzZSAtMToKPiBAQCAtNDY1LDEwICs0 NjUsMTAgQEAgc3RhdGljIHUzMiBpbnRlbF9wYW5lbF9jb21wdXRlX2JyaWdodG5lc3Moc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAgCj4gICAJV0FSTl9PTihwYW5lbC0+YmFj a2xpZ2h0Lm1heCA9PSAwKTsKPiAgIAo+IC0JaWYgKGk5MTUuaW52ZXJ0X2JyaWdodG5lc3MgPCAw KQo+ICsJaWYgKGk5MTVfcGFyYW1zLmludmVydF9icmlnaHRuZXNzIDwgMCkKPiAgIAkJcmV0dXJu IHZhbDsKPiAgIAo+IC0JaWYgKGk5MTUuaW52ZXJ0X2JyaWdodG5lc3MgPiAwIHx8Cj4gKwlpZiAo aTkxNV9wYXJhbXMuaW52ZXJ0X2JyaWdodG5lc3MgPiAwIHx8Cj4gICAJICAgIGRldl9wcml2LT5x dWlya3MgJiBRVUlSS19JTlZFUlRfQlJJR0hUTkVTUykgewo+ICAgCQlyZXR1cm4gcGFuZWwtPmJh Y2tsaWdodC5tYXggLSB2YWwgKyBwYW5lbC0+YmFja2xpZ2h0Lm1pbjsKPiAgIAl9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggZmE5MDU1YS4uMTIyNTg1MyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwo+IEBAIC03ODI2LDcgKzc4MjYsNyBAQCB2b2lkIGludGVsX2luaXRfZ3Rf cG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkgKiBSUE0g ZGVwZW5kcyBvbiBSQzYgdG8gc2F2ZSByZXN0b3JlIHRoZSBHVCBIVyBjb250ZXh0LCBzbyBtYWtl IFJDNiBhCj4gICAJICogcmVxdWlyZW1lbnQuCj4gICAJICovCj4gLQlpZiAoIWk5MTUuZW5hYmxl X3JjNikgewo+ICsJaWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfcmM2KSB7Cj4gICAJCURSTV9JTkZP KCJSQzYgZGlzYWJsZWQsIGRpc2FibGluZyBydW50aW1lIFBNIHN1cHBvcnRcbiIpOwo+ICAgCQlp bnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gICAJfQo+IEBAIC03ODgzLDcgKzc4ODMs NyBAQCB2b2lkIGludGVsX2NsZWFudXBfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gICAJCXZh bGxleXZpZXdfY2xlYW51cF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+ICAgCj4gLQlpZiAoIWk5 MTUuZW5hYmxlX3JjNikKPiArCWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX3JjNikKPiAgIAkJaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICAgfQo+ICAgCj4gQEAgLTgwMDUsNyArODAw NSw3IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfYXV0b2VuYWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0 IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCWlmIChJU19FUlIocmVxKSkKPiAgIAkJZ290byB1bmxv Y2s7Cj4gICAKPiAtCWlmICghaTkxNS5lbmFibGVfZXhlY2xpc3RzICYmIGk5MTVfc3dpdGNoX2Nv bnRleHQocmVxKSA9PSAwKQo+ICsJaWYgKCFpOTE1X3BhcmFtcy5lbmFibGVfZXhlY2xpc3RzICYm IGk5MTVfc3dpdGNoX2NvbnRleHQocmVxKSA9PSAwKQo+ICAgCQlyY3MtPmluaXRfY29udGV4dChy ZXEpOwo+ICAgCj4gICAJLyogTWFyayB0aGUgZGV2aWNlIGJ1c3ksIGNhbGxpbmcgaW50ZWxfZW5h YmxlX2d0X3Bvd2Vyc2F2ZSgpICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBpbmRleCBm ZGQ5ZTNkLi43NjczN2ZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Bzci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBAQCAtMzk1 LDcgKzM5NSw3IEBAIHN0YXRpYyBib29sIGludGVsX3Bzcl9tYXRjaF9jb25kaXRpb25zKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAl9Cj4gICAKPiAt CWlmICghaTkxNS5lbmFibGVfcHNyKSB7Cj4gKwlpZiAoIWk5MTVfcGFyYW1zLmVuYWJsZV9wc3Ip IHsKPiAgIAkJRFJNX0RFQlVHX0tNUygiUFNSIGRpc2FibGUgYnkgZmxhZ1xuIik7Cj4gICAJCXJl dHVybiBmYWxzZTsKPiAgIAl9Cj4gQEAgLTkzNyw4ICs5MzcsOCBAQCB2b2lkIGludGVsX3Bzcl9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJSFNXX0VEUF9QU1Jf QkFTRSA6IEJEV19FRFBfUFNSX0JBU0U7Cj4gICAKPiAgIAkvKiBQZXIgcGxhdGZvcm0gZGVmYXVs dDogYWxsIGRpc2FibGVkLiAqLwo+IC0JaWYgKGk5MTUuZW5hYmxlX3BzciA9PSAtMSkKPiAtCQlp OTE1LmVuYWJsZV9wc3IgPSAwOwo+ICsJaWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9wc3IgPT0gLTEp Cj4gKwkJaTkxNV9wYXJhbXMuZW5hYmxlX3BzciA9IDA7Cj4gICAKPiAgIAkvKiBTZXQgbGlua19z dGFuZGJ5IHggbGlua19vZmYgZGVmYXVsdHMgKi8KPiAgIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJp dikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiBAQCAtOTUyLDExICs5NTIsMTEgQEAgdm9p ZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJ CWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9saW5r Owo+ICAgCj4gICAJLyogT3ZlcnJpZGUgbGlua19zdGFuZGJ5IHggbGlua19vZmYgZGVmYXVsdHMg Ki8KPiAtCWlmIChpOTE1LmVuYWJsZV9wc3IgPT0gMiAmJiAhZGV2X3ByaXYtPnBzci5saW5rX3N0 YW5kYnkpIHsKPiArCWlmIChpOTE1X3BhcmFtcy5lbmFibGVfcHNyID09IDIgJiYgIWRldl9wcml2 LT5wc3IubGlua19zdGFuZGJ5KSB7Cj4gICAJCURSTV9ERUJVR19LTVMoIlBTUjogRm9yY2luZyBs aW5rIHN0YW5kYnlcbiIpOwo+ICAgCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IHRydWU7 Cj4gICAJfQo+IC0JaWYgKGk5MTUuZW5hYmxlX3BzciA9PSAzICYmIGRldl9wcml2LT5wc3IubGlu a19zdGFuZGJ5KSB7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX3BzciA9PSAzICYmIGRldl9w cml2LT5wc3IubGlua19zdGFuZGJ5KSB7Cj4gICAJCURSTV9ERUJVR19LTVMoIlBTUjogRm9yY2lu ZyBtYWluIGxpbmsgb2ZmXG4iKTsKPiAgIAkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBm YWxzZTsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGlu ZGV4IDI2ODM0MjQuLmQyYzFjMGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCj4gQEAgLTE5ODQsNyArMTk4NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jpbmdf aW5pdF9zZW1hcGhvcmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgCWludCByZXQsIGk7Cj4gICAKPiAt CWlmICghaTkxNS5zZW1hcGhvcmVzKQo+ICsJaWYgKCFpOTE1X3BhcmFtcy5zZW1hcGhvcmVzKQo+ ICAgCQlyZXR1cm47Cj4gICAKPiAgIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4ICYmICFk ZXZfcHJpdi0+c2VtYXBob3JlKSB7Cj4gQEAgLTIwODQsNyArMjA4NCw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3JpbmdfaW5pdF9zZW1hcGhvcmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gICBlcnI6Cj4gICAJRFJNX0RF QlVHX0RSSVZFUigiRmFpbGVkIHRvIGFsbG9jYXRlIHNwYWNlIGZvciBzZW1hcGhvcmVzLCBkaXNh YmxpbmdcbiIpOwo+IC0JaTkxNS5zZW1hcGhvcmVzID0gMDsKPiArCWk5MTVfcGFyYW1zLnNlbWFw aG9yZXMgPSAwOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX2luaXRfaXJx KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtMjEzOSw3ICsyMTM5LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAKPiAgIAllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYiA9IGk5 eHhfZW1pdF9icmVhZGNydW1iOwo+ICAgCWVuZ2luZS0+ZW1pdF9icmVhZGNydW1iX3N6ID0gaTl4 eF9lbWl0X2JyZWFkY3J1bWJfc3o7Cj4gLQlpZiAoaTkxNS5zZW1hcGhvcmVzKSB7Cj4gKwlpZiAo aTkxNV9wYXJhbXMuc2VtYXBob3Jlcykgewo+ICAgCQlpbnQgbnVtX3JpbmdzOwo+ICAgCj4gICAJ CWVuZ2luZS0+ZW1pdF9icmVhZGNydW1iID0gZ2VuNl9zZW1hX2VtaXRfYnJlYWRjcnVtYjsKPiBA QCAtMjE4Myw3ICsyMTgzLDcgQEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJZW5naW5lLT5lbWl0X2JyZWFkY3J1 bWIgPSBnZW44X3JlbmRlcl9lbWl0X2JyZWFkY3J1bWI7Cj4gICAJCWVuZ2luZS0+ZW1pdF9icmVh ZGNydW1iX3N6ID0gZ2VuOF9yZW5kZXJfZW1pdF9icmVhZGNydW1iX3N6Owo+ICAgCQllbmdpbmUt PmVtaXRfZmx1c2ggPSBnZW44X3JlbmRlcl9yaW5nX2ZsdXNoOwo+IC0JCWlmIChpOTE1LnNlbWFw aG9yZXMpIHsKPiArCQlpZiAoaTkxNV9wYXJhbXMuc2VtYXBob3Jlcykgewo+ICAgCQkJaW50IG51 bV9yaW5nczsKPiAgIAo+ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsID0gZ2VuOF9yY3Nf c2lnbmFsOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBpbmRleCBh M2JmYjlmLi5lMzBiMTBhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYwo+IEBAIC0yNDEzLDcgKzI0MTMsNyBAQCBzdGF0aWMgdWludDMyX3QgZ2V0X2FsbG93ZWRf ZGNfbWFzayhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCW1h c2sgPSAwOwo+ICAgCX0KPiAgIAo+IC0JaWYgKCFpOTE1LmRpc2FibGVfcG93ZXJfd2VsbCkKPiAr CWlmICghaTkxNV9wYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxsKQo+ICAgCQltYXhfZGMgPSAwOwo+ ICAgCj4gICAJaWYgKGVuYWJsZV9kYyA+PSAwICYmIGVuYWJsZV9kYyA8PSBtYXhfZGMpIHsKPiBA QCAtMjQ3MSwxMCArMjQ3MSwxMCBAQCBpbnQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9wb3dl cl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOwo+ICAg Cj4gLQlpOTE1LmRpc2FibGVfcG93ZXJfd2VsbCA9IHNhbml0aXplX2Rpc2FibGVfcG93ZXJfd2Vs bF9vcHRpb24oZGV2X3ByaXYsCj4gLQkJCQkJCSAgICAgaTkxNS5kaXNhYmxlX3Bvd2VyX3dlbGwp Owo+ICsJaTkxNV9wYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxsID0gc2FuaXRpemVfZGlzYWJsZV9w b3dlcl93ZWxsX29wdGlvbihkZXZfcHJpdiwKPiArCQkJCQkJICAgICBpOTE1X3BhcmFtcy5kaXNh YmxlX3Bvd2VyX3dlbGwpOwo+ICAgCWRldl9wcml2LT5jc3IuYWxsb3dlZF9kY19tYXNrID0gZ2V0 X2FsbG93ZWRfZGNfbWFzayhkZXZfcHJpdiwKPiAtCQkJCQkJCSAgICBpOTE1LmVuYWJsZV9kYyk7 Cj4gKwkJCQkJCQkgICAgaTkxNV9wYXJhbXMuZW5hYmxlX2RjKTsKPiAgIAo+ICAgCUJVSUxEX0JV R19PTihQT1dFUl9ET01BSU5fTlVNID4gNjQpOwo+ICAgCj4gQEAgLTI1MzUsNyArMjUzNSw3IEBA IHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgIAlpbnRlbF9kaXNwbGF5X3NldF9pbml0X3Bvd2VyKGRldl9wcml2LCB0cnVl KTsKPiAgIAo+ICAgCS8qIFJlbW92ZSB0aGUgcmVmY291bnQgd2UgdG9vayB0byBrZWVwIHBvd2Vy IHdlbGwgc3VwcG9ydCBkaXNhYmxlZC4gKi8KPiAtCWlmICghaTkxNS5kaXNhYmxlX3Bvd2VyX3dl bGwpCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmRpc2FibGVfcG93ZXJfd2VsbCkKPiAgIAkJaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKPiAgIAo+ICAg CS8qCj4gQEAgLTI5OTUsNyArMjk5NSw3IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0 X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCByZXN1bWUpCj4gICAJ LyogRm9yIG5vdywgd2UgbmVlZCB0aGUgcG93ZXIgd2VsbCB0byBiZSBhbHdheXMgZW5hYmxlZC4g Ki8KPiAgIAlpbnRlbF9kaXNwbGF5X3NldF9pbml0X3Bvd2VyKGRldl9wcml2LCB0cnVlKTsKPiAg IAkvKiBEaXNhYmxlIHBvd2VyIHN1cHBvcnQgaWYgdGhlIHVzZXIgYXNrZWQgc28uICovCj4gLQlp ZiAoIWk5MTUuZGlzYWJsZV9wb3dlcl93ZWxsKQo+ICsJaWYgKCFpOTE1X3BhcmFtcy5kaXNhYmxl X3Bvd2VyX3dlbGwpCj4gICAJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dF Ul9ET01BSU5fSU5JVCk7Cj4gICAJaW50ZWxfcG93ZXJfZG9tYWluc19zeW5jX2h3KGRldl9wcml2 KTsKPiAgIAlwb3dlcl9kb21haW5zLT5pbml0aWFsaXppbmcgPSBmYWxzZTsKPiBAQCAtMzAxNCw3 ICszMDE0LDcgQEAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3N1c3BlbmQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCSAqIEV2ZW4gaWYgcG93ZXIgd2VsbCBzdXBwb3J0 IHdhcyBkaXNhYmxlZCB3ZSBzdGlsbCB3YW50IHRvIGRpc2FibGUKPiAgIAkgKiBwb3dlciB3ZWxs cyB3aGlsZSB3ZSBhcmUgc3lzdGVtIHN1c3BlbmRlZC4KPiAgIAkgKi8KPiAtCWlmICghaTkxNS5k aXNhYmxlX3Bvd2VyX3dlbGwpCj4gKwlpZiAoIWk5MTVfcGFyYW1zLmRpc2FibGVfcG93ZXJfd2Vs bCkKPiAgIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9J TklUKTsKPiAgIAo+ICAgCWlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VjLmMKPiBpbmRleCAwMTc4YmE0Li5lZDA2ODZkIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91Yy5jCj4gQEAgLTYzLDM1ICs2MywzNSBAQCBzdGF0aWMgaW50IF9faW50ZWxfdWNfcmVz ZXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgdm9pZCBpbnRlbF91 Y19zYW5pdGl6ZV9vcHRpb25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg IHsKPiAgIAlpZiAoIUhBU19HVUMoZGV2X3ByaXYpKSB7Cj4gLQkJaWYgKGk5MTUuZW5hYmxlX2d1 Y19sb2FkaW5nID4gMCB8fAo+IC0JCSAgICBpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA+IDAp Cj4gKwkJaWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZyA+IDAgfHwKPiArCQkgICAg aTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID4gMCkKPiAgIAkJCURSTV9JTkZPKCJJ Z25vcmluZyBHdUMgb3B0aW9ucywgbm8gaGFyZHdhcmVcbiIpOwo+ICAgCj4gLQkJaTkxNS5lbmFi bGVfZ3VjX2xvYWRpbmcgPSAwOwo+IC0JCWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID0gMDsK PiArCQlpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX2xvYWRpbmcgPSAwOwo+ICsJCWk5MTVfcGFyYW1z LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IDA7Cj4gICAJCXJldHVybjsKPiAgIAl9Cj4gICAKPiAg IAkvKiBBIG5lZ2F0aXZlIHZhbHVlIG1lYW5zICJ1c2UgcGxhdGZvcm0gZGVmYXVsdCIgKi8KPiAt CWlmIChpOTE1LmVuYWJsZV9ndWNfbG9hZGluZyA8IDApCj4gLQkJaTkxNS5lbmFibGVfZ3VjX2xv YWRpbmcgPSBIQVNfR1VDX1VDT0RFKGRldl9wcml2KTsKPiArCWlmIChpOTE1X3BhcmFtcy5lbmFi bGVfZ3VjX2xvYWRpbmcgPCAwKQo+ICsJCWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZyA9 IEhBU19HVUNfVUNPREUoZGV2X3ByaXYpOwo+ICAgCj4gICAJLyogVmVyaWZ5IGZpcm13YXJlIHZl cnNpb24gKi8KPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykgewo+ICsJaWYgKGk5MTVf cGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZykgewo+ICAgCQlpZiAoSEFTX0hVQ19VQ09ERShkZXZf cHJpdikpCj4gICAJCQlpbnRlbF9odWNfc2VsZWN0X2Z3KCZkZXZfcHJpdi0+aHVjKTsKPiAgIAo+ ICAgCQlpZiAoaW50ZWxfZ3VjX3NlbGVjdF9mdygmZGV2X3ByaXYtPmd1YykpCj4gLQkJCWk5MTUu ZW5hYmxlX2d1Y19sb2FkaW5nID0gMDsKPiArCQkJaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19sb2Fk aW5nID0gMDsKPiAgIAl9Cj4gICAKPiAgIAkvKiBDYW4ndCBlbmFibGUgZ3VjIHN1Ym1pc3Npb24g d2l0aG91dCBndWMgbG9hZGVkICovCj4gLQlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQo+ IC0JCWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID0gMDsKPiArCWlmICghaTkxNV9wYXJhbXMu ZW5hYmxlX2d1Y19sb2FkaW5nKQo+ICsJCWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lv biA9IDA7Cj4gICAKPiAgIAkvKiBBIG5lZ2F0aXZlIHZhbHVlIG1lYW5zICJ1c2UgcGxhdGZvcm0g ZGVmYXVsdCIgKi8KPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA8IDApCj4gLQkJ aTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPSBIQVNfR1VDX1NDSEVEKGRldl9wcml2KTsKPiAr CWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPCAwKQo+ICsJCWk5MTVfcGFy YW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IEhBU19HVUNfU0NIRUQoZGV2X3ByaXYpOwo+ICAg fQo+ICAgCj4gICBzdGF0aWMgdm9pZCBnZW44X2d1Y19yYWlzZV9pcnEoc3RydWN0IGludGVsX2d1 YyAqZ3VjKQo+IEBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2luaXRfc2VuZF9y ZWdzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIAo+ICAgc3RhdGljIHZvaWQgZ3VjX2NhcHR1 cmVfbG9hZF9lcnJfbG9nKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgIHsKPiAtCWlmICghZ3Vj LT5sb2cudm1hIHx8IGk5MTUuZ3VjX2xvZ19sZXZlbCA8IDApCj4gKwlpZiAoIWd1Yy0+bG9nLnZt YSB8fCBpOTE1X3BhcmFtcy5ndWNfbG9nX2xldmVsIDwgMCkKPiAgIAkJcmV0dXJuOwo+ICAgCj4g ICAJaWYgKCFndWMtPmxvYWRfZXJyX2xvZykKPiBAQCAtMzMzLDcgKzMzMyw3IEBAIGludCBpbnRl bF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKPiAgIAlpbnQgcmV0LCBhdHRlbXB0 czsKPiAgIAo+IC0JaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKPiArCWlmICghaTkxNV9w YXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nKQo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+ICAgCWd1Y19k aXNhYmxlX2NvbW11bmljYXRpb24oZ3VjKTsKPiBAQCAtMzQyLDcgKzM0Miw3IEBAIGludCBpbnRl bF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkvKiBX ZSBuZWVkIHRvIG5vdGlmeSB0aGUgZ3VjIHdoZW5ldmVyIHdlIGNoYW5nZSB0aGUgR0dUVCAqLwo+ ICAgCWk5MTVfZ2d0dF9lbmFibGVfZ3VjKGRldl9wcml2KTsKPiAgIAo+IC0JaWYgKGk5MTUuZW5h YmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19zdWJt aXNzaW9uKSB7Cj4gICAJCS8qCj4gICAJCSAqIFRoaXMgaXMgc3R1ZmYgd2UgbmVlZCB0byBoYXZl IGF2YWlsYWJsZSBhdCBmdyBsb2FkIHRpbWUKPiAgIAkJICogaWYgd2UgYXJlIHBsYW5uaW5nIHRv IGVuYWJsZSBzdWJtaXNzaW9uIGxhdGVyCj4gQEAgLTM5MSw4ICszOTEsOCBAQCBpbnQgaW50ZWxf dWNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCWdvdG8g ZXJyX2xvZ19jYXB0dXJlOwo+ICAgCj4gICAJaW50ZWxfZ3VjX2F1dGhfaHVjKGRldl9wcml2KTsK PiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+IC0JCWlmIChpOTE1Lmd1Y19s b2dfbGV2ZWwgPj0gMCkKPiArCWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24p IHsKPiArCQlpZiAoaTkxNV9wYXJhbXMuZ3VjX2xvZ19sZXZlbCA+PSAwKQo+ICAgCQkJZ2VuOV9l bmFibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwo+ICAgCj4gICAJCXJldCA9IGk5MTVfZ3Vj X3N1Ym1pc3Npb25fZW5hYmxlKGRldl9wcml2KTsKPiBAQCAtNDE3LDIzICs0MTcsMjMgQEAgaW50 IGludGVsX3VjX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAg ZXJyX2xvZ19jYXB0dXJlOgo+ICAgCWd1Y19jYXB0dXJlX2xvYWRfZXJyX2xvZyhndWMpOwo+ICAg ZXJyX3N1Ym1pc3Npb246Cj4gLQlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gKwlp ZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQo+ICAgCQlpOTE1X2d1Y19zdWJt aXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwo+ICAgZXJyX2d1YzoKPiAgIAlpOTE1X2dndHRfZGlzYWJs ZV9ndWMoZGV2X3ByaXYpOwo+ICAgCj4gICAJRFJNX0VSUk9SKCJHdUMgaW5pdCBmYWlsZWRcbiIp Owo+IC0JaWYgKGk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nID4gMSB8fCBpOTE1LmVuYWJsZV9ndWNf c3VibWlzc2lvbiA+IDEpCj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nID4g MSB8fCBpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPiAxKQo+ICAgCQlyZXQgPSAt RUlPOwo+ICAgCWVsc2UKPiAgIAkJcmV0ID0gMDsKPiAgIAo+IC0JaWYgKGk5MTUuZW5hYmxlX2d1 Y19zdWJtaXNzaW9uKSB7Cj4gLQkJaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPSAwOwo+ICsJ aWYgKGk5MTVfcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+ICsJCWk5MTVfcGFyYW1z LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IDA7Cj4gICAJCURSTV9OT1RFKCJGYWxsaW5nIGJhY2sg ZnJvbSBHdUMgc3VibWlzc2lvbiB0byBleGVjbGlzdCBtb2RlXG4iKTsKPiAgIAl9Cj4gICAKPiAt CWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nID0gMDsKPiArCWk5MTVfcGFyYW1zLmVuYWJsZV9ndWNf bG9hZGluZyA9IDA7Cj4gICAJRFJNX05PVEUoIkd1QyBmaXJtd2FyZSBsb2FkaW5nIGRpc2FibGVk XG4iKTsKPiAgIAo+ICAgCXJldHVybiByZXQ7Cj4gQEAgLTQ0MywxNSArNDQzLDE1IEBAIHZvaWQg aW50ZWxfdWNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7 Cj4gICAJZ3VjX2ZyZWVfbG9hZF9lcnJfbG9nKCZkZXZfcHJpdi0+Z3VjKTsKPiAgIAo+IC0JaWYg KCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKPiArCWlmICghaTkxNV9wYXJhbXMuZW5hYmxlX2d1 Y19sb2FkaW5nKQo+ICAgCQlyZXR1cm47Cj4gICAKPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfc3Vi bWlzc2lvbikKPiArCWlmIChpOTE1X3BhcmFtcy5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gICAJ CWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7Cj4gICAKPiAgIAlndWNfZGlz YWJsZV9jb21tdW5pY2F0aW9uKCZkZXZfcHJpdi0+Z3VjKTsKPiAgIAo+IC0JaWYgKGk5MTUuZW5h YmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gKwlpZiAoaTkxNV9wYXJhbXMuZW5hYmxlX2d1Y19zdWJt aXNzaW9uKSB7Cj4gICAJCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4g ICAJCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7Cj4gICAJfQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VuY29yZS5jCj4gaW5kZXggMWIzOGViOS4uNTQ0YTc5MyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTQzNiw3ICs0MzYsOCBAQCB2b2lkIGlu dGVsX3VuY29yZV9yZXN1bWVfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgCj4gICB2b2lkIGludGVsX3VuY29yZV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gLQlpOTE1LmVuYWJsZV9yYzYgPSBzYW5pdGl6ZV9yYzZf b3B0aW9uKGRldl9wcml2LCBpOTE1LmVuYWJsZV9yYzYpOwo+ICsJaTkxNV9wYXJhbXMuZW5hYmxl X3JjNiA9IHNhbml0aXplX3JjNl9vcHRpb24oZGV2X3ByaXYsCj4gKwkJCQkJCSAgICAgaTkxNV9w YXJhbXMuZW5hYmxlX3JjNik7Cj4gICAKPiAgIAkvKiBCSU9TIG9mdGVuIGxlYXZlcyBSQzYgZW5h YmxlZCwgYnV0IGRpc2FibGUgaXQgZm9yIGh3IGluaXQgKi8KPiAgIAlpbnRlbF9zYW5pdGl6ZV9n dF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+IEBAIC01MDcsMTAgKzUwOCwxMCBAQCB2b2lkIGludGVs X3VuY29yZV9mb3JjZXdha2VfdXNlcl9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgCQlkZXZfcHJpdi0+dW5jb3JlLnVzZXJfZm9yY2V3YWtlLnNhdmVkX21taW9fY2hl Y2sgPQo+ICAgCQkJZGV2X3ByaXYtPnVuY29yZS51bmNsYWltZWRfbW1pb19jaGVjazsKPiAgIAkJ ZGV2X3ByaXYtPnVuY29yZS51c2VyX2ZvcmNld2FrZS5zYXZlZF9tbWlvX2RlYnVnID0KPiAtCQkJ aTkxNS5tbWlvX2RlYnVnOwo+ICsJCQlpOTE1X3BhcmFtcy5tbWlvX2RlYnVnOwo+ICAgCj4gICAJ CWRldl9wcml2LT51bmNvcmUudW5jbGFpbWVkX21taW9fY2hlY2sgPSAwOwo+IC0JCWk5MTUubW1p b19kZWJ1ZyA9IDA7Cj4gKwkJaTkxNV9wYXJhbXMubW1pb19kZWJ1ZyA9IDA7Cj4gICAJfQo+ICAg CXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiAgIH0KPiBAQCAtNTMy LDcgKzUzMyw3IEBAIHZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV91c2VyX3B1dChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAKPiAgIAkJZGV2X3ByaXYtPnVuY29yZS51 bmNsYWltZWRfbW1pb19jaGVjayA9Cj4gICAJCQlkZXZfcHJpdi0+dW5jb3JlLnVzZXJfZm9yY2V3 YWtlLnNhdmVkX21taW9fY2hlY2s7Cj4gLQkJaTkxNS5tbWlvX2RlYnVnID0KPiArCQlpOTE1X3Bh cmFtcy5tbWlvX2RlYnVnID0KPiAgIAkJCWRldl9wcml2LT51bmNvcmUudXNlcl9mb3JjZXdha2Uu c2F2ZWRfbW1pb19kZWJ1ZzsKPiAgIAo+ICAgCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dF9f bG9ja2VkKGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiBAQCAtODQxLDcgKzg0Miw3IEBAIF9f dW5jbGFpbWVkX3JlZ19kZWJ1ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g ICAJCSAiVW5jbGFpbWVkICVzIHJlZ2lzdGVyIDB4JXhcbiIsCj4gICAJCSByZWFkID8gInJlYWQg ZnJvbSIgOiAid3JpdGUgdG8iLAo+ICAgCQkgaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSkpCj4g LQkJaTkxNS5tbWlvX2RlYnVnLS07IC8qIE9ubHkgcmVwb3J0IHRoZSBmaXJzdCBOIGZhaWx1cmVz ICovCj4gKwkJaTkxNV9wYXJhbXMubW1pb19kZWJ1Zy0tOyAvKiBPbmx5IHJlcG9ydCB0aGUgZmly c3QgTiBmYWlsdXJlcyAqLwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIHZvaWQKPiBAQCAt ODUwLDcgKzg1MSw3IEBAIHVuY2xhaW1lZF9yZWdfZGVidWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAgCQkgICAgY29uc3QgYm9vbCByZWFkLAo+ICAgCQkgICAgY29uc3Qg Ym9vbCBiZWZvcmUpCj4gICB7Cj4gLQlpZiAobGlrZWx5KCFpOTE1Lm1taW9fZGVidWcpKQo+ICsJ aWYgKGxpa2VseSghaTkxNV9wYXJhbXMubW1pb19kZWJ1ZykpCj4gICAJCXJldHVybjsKPiAgIAo+ ICAgCV9fdW5jbGFpbWVkX3JlZ19kZWJ1ZyhkZXZfcHJpdiwgcmVnLCByZWFkLCBiZWZvcmUpOwo+ IEBAIC0xNzEzLDcgKzE3MTQsNyBAQCB0eXBlZGVmIGludCAoKnJlc2V0X2Z1bmMpKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICosIHVuc2lnbmVkIGVuZ2luZV9tYXNrKTsKPiAgIAo+ICAgc3RhdGlj IHJlc2V0X2Z1bmMgaW50ZWxfZ2V0X2dwdV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gICB7Cj4gLQlpZiAoIWk5MTUucmVzZXQpCj4gKwlpZiAoIWk5MTVfcGFyYW1z LnJlc2V0KQo+ICAgCQlyZXR1cm4gTlVMTDsKPiAgIAo+ICAgCWlmIChJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuID49IDgpCj4gQEAgLTE3NzMsNyArMTc3NCw3IEBAIGJvb2wgaW50ZWxfaGFzX3Jl c2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJ cmV0dXJuIChkZXZfcHJpdi0+aW5mby5oYXNfcmVzZXRfZW5naW5lICYmCj4gICAJCSFkZXZfcHJp di0+Z3VjLmV4ZWNidWZfY2xpZW50ICYmCj4gLQkJaTkxNS5yZXNldCA+PSAyKTsKPiArCQlpOTE1 X3BhcmFtcy5yZXNldCA+PSAyKTsKPiAgIH0KPiAgIAo+ICAgaW50IGludGVsX2d1Y19yZXNldChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTE3OTgsNyArMTc5OSw3IEBA IGJvb2wgaW50ZWxfdW5jb3JlX3VuY2xhaW1lZF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgIGJvb2wKPiAgIGludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9f ZGV0ZWN0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCWlm ICh1bmxpa2VseShpOTE1Lm1taW9fZGVidWcgfHwKPiArCWlmICh1bmxpa2VseShpOTE1X3BhcmFt cy5tbWlvX2RlYnVnIHx8Cj4gICAJCSAgICAgZGV2X3ByaXYtPnVuY29yZS51bmNsYWltZWRfbW1p b19jaGVjayA8PSAwKSkKPiAgIAkJcmV0dXJuIGZhbHNlOwo+ICAgCj4gQEAgLTE4MDYsNyArMTgw Nyw3IEBAIGludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9uKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJRFJNX0RFQlVHKCJVbmNsYWltZWQgcmVn aXN0ZXIgZGV0ZWN0ZWQsICIKPiAgIAkJCSAgImVuYWJsaW5nIG9uZXNob3QgdW5jbGFpbWVkIHJl Z2lzdGVyIHJlcG9ydGluZy4gIgo+ICAgCQkJICAiUGxlYXNlIHVzZSBpOTE1Lm1taW9fZGVidWc9 TiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpOwo+IC0JCWk5MTUubW1pb19kZWJ1ZysrOwo+ICsJ CWk5MTVfcGFyYW1zLm1taW9fZGVidWcrKzsKPiAgIAkJZGV2X3ByaXYtPnVuY29yZS51bmNsYWlt ZWRfbW1pb19jaGVjay0tOwo+ICAgCQlyZXR1cm4gdHJ1ZTsKPiAgIAl9Cj4gCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=