From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dhinakaran Pandiyan Subject: Re: [PATCH] drm/i915: Allow control of PSR at runtime through debugfs, v3. Date: Fri, 27 Jul 2018 22:23:09 -0700 Message-ID: <1532755389.7639.59.camel@intel.com> References: <1532586735.3356.99.camel@intel.com> <20180726090604.12142-1-maarten.lankhorst@linux.intel.com> <1532662071.3356.153.camel@intel.com> <4a19b092-2a57-233c-1c6e-3ec6c3aea7d6@linux.intel.com> Reply-To: dhinakaran.pandiyan@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id D2E416E0A3 for ; Sat, 28 Jul 2018 04:58:09 +0000 (UTC) In-Reply-To: <4a19b092-2a57-233c-1c6e-3ec6c3aea7d6@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE4LTA3LTI3IGF0IDEwOjQxICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBPcCAyNy0wNy0xOCBvbSAwNToyNyBzY2hyZWVmIERoaW5ha2FyYW4gUGFuZGl5YW46Cj4g PiAKPiA+IE9uIFRodSwgMjAxOC0wNy0yNiBhdCAxMTowNiArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gPiA+IAo+ID4gPiBDdXJyZW50bHkgdGVzdHMgbW9kaWZ5IGk5MTUuZW5hYmxl X3BzciBhbmQgdGhlbiBkbyBhIG1vZGVzZXQKPiA+ID4gY3ljbGUKPiA+ID4gdG8gY2hhbmdlIFBT Ui4gV2UgY2FuIHdyaXRlIGEgdmFsdWUgdG8gaTkxNV9lZHBfcHNyX3N0YXR1cyB0bwo+ID4gPiBm b3JjZQo+ID4gPiBhIGNlcnRhaW4gdmFsdWUgd2l0aG91dCBhIG1vZGVzZXQuCj4gPiA+IAo+ID4g PiBUbyByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHVzZXJzcGFjZSwgd2UgYWxzbyBz dGlsbCBhbGxvdwo+ID4gPiB0aGUgb3ZlcnJpZGUgdGhyb3VnaCB0aGUgbW9kdWxlIHBhcmFtZXRl ciwgYW5kIGFkZCBzb21lIHRyYWNraW5nCj4gPiA+IHRvIGNoZWNrIHdoZXRoZXIgYSBkZWJ1Z2Zz IG1vZGUgaXMgc3BlY2lmaWVkLgo+ID4gPiAKPiA+ID4gQ2hhbmdlcyBzaW5jZSB2MToKPiA+ID4g LSBSZW5hbWUgZGV2X3ByaXYtPnBzci5lbmFibGVkIHRvIC5kcCwgYW5kIC5od19jb25maWd1cmVk IHRvCj4gPiA+IC5lbmFibGVkLgo+ID4gPiAtIEZpeCBpOTE1X3Bzcl9kZWJ1Z2ZzX21vZGUgdG8g bWF0Y2ggdGhlIHdyaXRlcyB0byBkZWJ1Z2ZzLgo+ID4gPiAtIFJlbmFtZSBfX2k5MTVfZWRwX3Bz cl93cml0ZSB0byBpbnRlbF9wc3Jfc2V0X2RlYnVnZnNfbW9kZSwKPiA+ID4gc2ltcGxpZnkKPiA+ ID4gwqAgaXQgYW5kIG1vdmUgaXQgdG8gaW50ZWxfcHNyLmMuIFRoaXMga2VlcHMgYWxsIGludGVy bmFscyBpbgo+ID4gPiBpbnRlbF9wc3IuYwo+ID4gPiAtIFBlcmZvcm0gYW4gaW50ZXJydXB0aWJs ZSB3YWl0IGZvciBodyBjb21wbGV0aW9uIG91dHNpZGUgb2YgdGhlCj4gPiA+IHBzcgo+ID4gPiDC oCBsb2NrLCBpbnN0ZWFkIG9mIGJlaW5nIGZvcmNlZCB0byB0cnl3YWl0IGFuZCByZXR1cm4gLUVC VVNZLgo+ID4gPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ID4gPiAtIFJlYmFzZSBvbiB0b3Agb2YgaW50 ZWxfcHNyIGNoYW5nZXMuCj4gPiBUaGFua3MgZm9yIHJlc2VuZGluZyB0aGlzLCBJIGhhdmUgc29t ZSBxdWVzdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUKPiA+IHBhdGNoIGJldHRlci4KPiA+IAo+ID4g PiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hv cnN0QGxpbnV4LmludGVsLmMKPiA+ID4gb20+Cj4gPiA+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJp Z28udml2aUBpbnRlbC5jb20+Cj4gPiA+IENjOiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWth cmFuLnBhbmRpeWFuQGludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfMKgwqA3NSArKysrKysrKysrKystLQo+ID4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgfMKgwqDCoDkgKy0KPiA+ID4gwqBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaMKgwqDCoMKgfMKgwqDCoDMgKwo+ID4gPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jwqDCoMKgwqB8IDE1NAo+ID4gPiArKysr KysrKysrKysrKysrKysrKysrKysKPiA+ID4gLS0tLQo+ID4gPiDCoDQgZmlsZXMgY2hhbmdlZCwg MjE0IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ID4gaW5kZXggNTlkYzA2MTBlYTQ0Li5iMjkw NGJiMmJlNDkgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4g PiA+IEBAIC0yNjg5LDE0ICsyNjg5LDExIEBAIHBzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwgc3RydWN0IHNlcV9maWxlICptKQo+ID4gPiDC oAo+ID4gPiDCoHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCj4gPiA+IMKgewo+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLQo+ID4gPiA+IAo+ID4gPiA+IHByaXZhdGUpOwo+ ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7Cj4g PiA+IMKgCXUzMiBwc3JwZXJmID0gMDsKPiA+ID4gwqAJYm9vbCBlbmFibGVkID0gZmFsc2U7Cj4g PiA+IMKgCWJvb2wgc2lua19zdXBwb3J0Owo+ID4gPiDCoAo+ID4gPiAtCWlmICghSEFTX1BTUihk ZXZfcHJpdikpCj4gPiA+IC0JCXJldHVybiAtRU5PREVWOwo+ID4gPiAtCj4gPiA+IMKgCXNpbmtf c3VwcG9ydCA9IGRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0Owo+ID4gPiDCoAlzZXFfcHJpbnRm KG0sICJTaW5rX1N1cHBvcnQ6ICVzXG4iLAo+ID4gPiB5ZXNubyhzaW5rX3N1cHBvcnQpKTsKPiA+ ID4gwqAJaWYgKCFzaW5rX3N1cHBvcnQpCj4gPiA+IEBAIC0yNzA1LDcgKzI3MDIsNyBAQCBzdGF0 aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0Cj4gPiA+IHNlcV9maWxlCj4gPiA+ICpt LCB2b2lkICpkYXRhKQo+ID4gPiDCoAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4g PiA+IMKgCj4gPiA+IMKgCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiA+IC0J c2VxX3ByaW50ZihtLCAiRW5hYmxlZDogJXNcbiIsIHllc25vKChib29sKWRldl9wcml2LQo+ID4g PiA+IAo+ID4gPiA+IHBzci5lbmFibGVkKSk7Cj4gPiA+ICsJc2VxX3ByaW50ZihtLCAiRW5hYmxl ZDogJXNcbiIsIHllc25vKGRldl9wcml2LQo+ID4gPiA+IAo+ID4gPiA+IHBzci5lbmFibGVkKSk7 Cj4gPiA+IMKgCXNlcV9wcmludGYobSwgIkJ1c3kgZnJvbnRidWZmZXIgYml0czogMHglMDN4XG4i LAo+ID4gPiDCoAkJwqDCoMKgZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMpOwo+ ID4gPiDCoAo+ID4gPiBAQCAtMjc3Niw2ICsyNzczLDcyIEBACj4gPiA+IERFRklORV9TSU1QTEVf QVRUUklCVVRFKGk5MTVfZWRwX3Bzcl9kZWJ1Z19mb3BzLAo+ID4gPiDCoAkJCWk5MTVfZWRwX3Bz cl9kZWJ1Z19nZXQsCj4gPiA+IGk5MTVfZWRwX3Bzcl9kZWJ1Z19zZXQsCj4gPiA+IMKgCQkJIiVs bHVcbiIpOwo+ID4gPiDCoAo+ID4gPiArc3RhdGljIHNzaXplX3QgaTkxNV9lZHBfcHNyX3dyaXRl KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyCj4gPiA+IF9fdXNlciAqdWJ1ZiwKPiA+ID4g KwkJCQnCoMKgc2l6ZV90IGxlbiwgbG9mZl90ICpvZmZwKQo+ID4gPiArewo+ID4gPiArCXN0cnVj dCBzZXFfZmlsZSAqbSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ID4gPiArCXN0cnVjdCBkcm1fbW9k ZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4gPiA+ICsJaW50IHJldCwgdmFsOwo+ID4gPiArCj4gPiA+ ICsJaWYgKCFkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKPiA+ID4gKwkJcmV0dXJuIC1FTk9E RVY7Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBrc3RydG9pbnRfZnJvbV91c2VyKHVidWYsIGxlbiwg MTAsICZ2YWwpOwo+ID4gPiArCWlmIChyZXQgPCAwKSB7Cj4gPiA+ICsJCWJvb2wgZW5hYmxlOwo+ ID4gPiArCQlyZXQgPSBrc3RydG9ib29sX2Zyb21fdXNlcih1YnVmLCBsZW4sICZlbmFibGUpOwo+ ID4gPiArCj4gPiA+ICsJCWlmIChyZXQgPCAwKQo+ID4gPiArCQkJcmV0dXJuIHJldDsKPiA+ID4g Kwo+ID4gPiArCQl2YWwgPSBlbmFibGU7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJaWYgKHZh bCAhPSBQU1JfREVCVUdGU19NT0RFX0RFRkFVTFQgJiYKPiA+ID4gKwnCoMKgwqDCoHZhbCAhPSBQ U1JfREVCVUdGU19NT0RFX0RJU0FCTEVEICYmCj4gPiA+ICsJwqDCoMKgwqB2YWwgIT0gUFNSX0RF QlVHRlNfTU9ERV9FTkFCTEVEKQo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gKwo+ID4g PiArCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiA+ID4gKwo+ID4gPiArCWRybV9t b2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LAo+ID4gPiBEUk1fTU9ERVNFVF9BQ1FVSVJFX0lOVEVS UlVQVElCTEUpOwo+ID4gPiArCj4gPiA+ICtyZXRyeToKPiA+ID4gKwlyZXQgPSBpbnRlbF9wc3Jf c2V0X2RlYnVnZnNfbW9kZShkZXZfcHJpdiwgJmN0eCwgdmFsKTsKPiA+ID4gKwlpZiAocmV0ID09 IC1FQlVTWSkgewo+ID4gPiArCQlyZXQgPSBkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ID4g PiArCQlpZiAoIXJldCkKPiA+ID4gKwkJCWdvdG8gcmV0cnk7Cj4gPiA+ICsJfQo+ID4gPiArCj4g PiA+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+ID4gKwlkcm1fbW9kZXNldF9h Y3F1aXJlX2ZpbmkoJmN0eCk7Cj4gPiBEZWFkbG9ja2VkIGhlcmUgZHVyaW5nIHRlc3RpbmcKPiA+ IAo+ID4gJCBlY2hvIDAgPsKgwqAvc3lzL2tlcm5lbC9kZWJ1Zy9kcmkvMC9pOTE1X2VkcF9wc3Jf c3RhdHVzCj4gPiBiYXNoOiBlY2hvOiB3cml0ZSBlcnJvcjogUmVzb3VyY2UgZGVhZGxvY2sgYXZv aWRlZAo+IE9vcHMsIHRoYXQgY2hlY2sgc2hvdWxkIGJlOiAiaWYgKHJldCA9PSAtRURFQURMSyki Cj4gCj4gVGhhdCBzaG91bGQgZml4IHlvdXIgZXJyb3IuIDopCj4gPiAKPiA+IFsgMTI0OC44NTY2 NzFdIFdBUk5JTkc6IENQVTogMiBQSUQ6IDE3ODggYXQKPiA+IGRyaXZlcnMvZ3B1L2RybS9kcm1f bW9kZXNldF9sb2NrLmM6MjIzCj4gPiBkcm1fbW9kZXNldF9kcm9wX2xvY2tzKzB4NTYvMHg2MAo+ ID4gW2RybV0KPiA+IFsgMTI0OC44NTY3NTddIE1vZHVsZXMgbGlua2VkIGluOiByZmNvbW0gY21h YyBibmVwIGFyYzQgaXdsbXZtCj4gPiBubHNfaXNvODg1OV8xIG1hYzgwMjExIHNuZF9oZGFfY29k ZWNfaGRtaSBzbmRfaGRhX2NvZGVjX3JlYWx0ZWsKPiA+IHNuZF9oZGFfY29kZWNfZ2VuZXJpYyBz bmRfaGRhX2ludGVsIHNuZF9oZGFfY29kZWMgc25kX2h3ZGVwCj4gPiBzbmRfaGRhX2NvcmUgaXds d2lmaSBzbmRfcGNtIHNuZF9zZXFfbWlkaSBzbmRfc2VxX21pZGlfZXZlbnQKPiA+IHNuZF9yYXdt aWRpIGludGVsX3JhcGwgYnR1c2IgYnRydGwgc25kX3NlcSBidGJjbQo+ID4geDg2X3BrZ190ZW1w X3RoZXJtYWwKPiA+IGJ0aW50ZWwgaW50ZWxfcG93ZXJjbGFtcCBibHVldG9vdGggY29yZXRlbXAg Y3JjdDEwZGlmX3BjbG11bAo+ID4gY3JjMzJfcGNsbXVsIHNuZF90aW1lciBzbmRfc2VxX2Rldmlj ZSBnaGFzaF9jbG11bG5pX2ludGVsIGNmZzgwMjExCj4gPiBhZXNuaV9pbnRlbCBzbmQgYWVzX3g4 Nl82NCBjcnlwdG9fc2ltZCBjcnlwdGQgc291bmRjb3JlCj4gPiBlY2RoX2dlbmVyaWMKPiA+IGds dWVfaGVscGVyIGlucHV0X2xlZHMgbWVpX21lIG1laSBpbnRlbF9wY2hfdGhlcm1hbCBtYWNfaGlk Cj4gPiBwYXJwb3J0X3BjCj4gPiBwcGRldiBscCBwYXJwb3J0IGF1dG9mczQgaTkxNSBpMmNfYWxn b19iaXQgZHJtX2ttc19oZWxwZXIKPiA+IHN5c2NvcHlhcmVhCj4gPiBzeXNmaWxscmVjdCBzeXNp bWdibHQgZmJfc3lzX2ZvcHMgZHJtIGUxMDAwZSBwc21vdXNlIGFoY2kgbGliYWhjaQo+ID4gdmlk ZW8KPiA+IFsgMTI0OC44NTcyODhdIENQVTogMiBQSUQ6IDE3ODggQ29tbTogYmFzaCBOb3QgdGFp bnRlZCA0LjE4LjAtCj4gPiByYzZkcm0tCj4gPiB0aXAgIzEzOAo+ID4gWyAxMjQ4Ljg1NzI5N10g SGFyZHdhcmUgbmFtZTogTEVOT1ZPIDIwRjZDVE8xV1cvMjBGNkNUTzFXVywgQklPUwo+ID4gUjAy RVQ0OFcgKDEuMjEgKSAwNi8wMS8yMDE2Cj4gPiBbIDEyNDguODU3MzU0XSBSSVA6IDAwMTA6ZHJt X21vZGVzZXRfZHJvcF9sb2NrcysweDU2LzB4NjAgW2RybV0KPiA+IFsgMTI0OC44NTczNjNdIENv ZGU6IDUwIDA4IDQ4IDhkIGI4IDUwIGZmIGZmIGZmIDQ4IDg5IDUxIDA4IDQ4IDg5Cj4gPiAwYSA0 OAo+ID4gODkgMDAgNDggODkgNDAgMDggZTggYTggOTAgN2QgYzkgNDggOGIgNDMgNzAgNDkgMzkg YzQgNzUgZDIgNWIgNDEKPiA+IDVjIDVkCj4gPiBjMyA8MGY+IDBiIGViIGJjIDY2IDBmIDFmIDQ0 IDAwIDAwIDBmIDFmIDQ0IDAwIDAwIDQ4IDhiIDk3IGQwIDBhIDAwCj4gPiAwMAo+ID4gWyAxMjQ4 Ljg1Nzg2MF0gUlNQOiAwMDE4OmZmZmZhNGRkMDFmYWJjZjggRUZMQUdTOiAwMDAxMDI4Ngo+ID4g WyAxMjQ4Ljg1Nzg3OF0gUkFYOiAwMDAwMDAwMGZmZmZmZmRkIFJCWDogZmZmZmE0ZGQwMWZhYmQy OCBSQ1g6Cj4gPiAwMDAwMDAwMDAwMDAwMDAwCj4gPiBbIDEyNDguODU3ODg5XSBSRFg6IDAwMDAw MDAwMDAwMDAwMDAgUlNJOiBmZmZmOTdiYjg4NDc2ODk4IFJESToKPiA+IGZmZmZhNGRkMDFmYWJk MjgKPiA+IFsgMTI0OC44NTc4OThdIFJCUDogZmZmZmE0ZGQwMWZhYmQwOCBSMDg6IDAwMDAwMDAw MDAwMDAwMDAgUjA5Ogo+ID4gMDAwMDAwMDAwMDAwMDAwMQo+ID4gWyAxMjQ4Ljg1NzkwOF0gUjEw OiAwMDAwMDAwMDAwMDAwMDAxIFIxMTogMDAwMDAwMDAwMDAwMDAwMCBSMTI6Cj4gPiAwMDAwMDAw MDAwMDAwMDAyCj4gPiBbIDEyNDguODU3OTE4XSBSMTM6IDAwMDA1NjAzY2RiNjA4ODAgUjE0OiAw MDAwMDAwMDAwMDAwMDAyIFIxNToKPiA+IGZmZmZhNGRkMDFmYWJlZTgKPiA+IFsgMTI0OC44NTc5 MzBdIEZTOsKgwqAwMDAwN2Y4M2IxZGVhNzQwKDAwMDApCj4gPiBHUzpmZmZmOTdiYjk5YTAwMDAw KDAwMDApCj4gPiBrbmxHUzowMDAwMDAwMDAwMDAwMDAwCj4gPiBbIDEyNDguODU3OTQwXSBDUzrC oMKgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMKPiA+IFsgMTI0 OC44NTc5NTBdIENSMjogMDAwMDU2MDNjZGI2MDg4MCBDUjM6IDAwMDAwMDAyMTQzMzgwMDMgQ1I0 Ogo+ID4gMDAwMDAwMDAwMDM2MDZlMAo+ID4gWyAxMjQ4Ljg1Nzk1OV0gQ2FsbCBUcmFjZToKPiA+ IFsgMTI0OC44NTgwOTRdwqDCoGk5MTVfZWRwX3Bzcl93cml0ZSsweGQ1LzB4MTgwIFtpOTE1XQo+ ID4gWyAxMjQ4Ljg1ODE3Ml3CoMKgZnVsbF9wcm94eV93cml0ZSsweDVmLzB4OTAKPiA+IFsgMTI0 OC44NTgyMDddwqDCoF9fdmZzX3dyaXRlKzB4M2EvMHgxYTAKPiA+IFsgMTI0OC44NTgyMjddwqDC oD8gcmN1X3JlYWRfbG9ja19zY2hlZF9oZWxkKzB4NzkvMHg4MAo+ID4gWyAxMjQ4Ljg1ODI0M13C oMKgPyByY3Vfc3luY19sb2NrZGVwX2Fzc2VydCsweDMyLzB4NjAKPiA+IFsgMTI0OC44NTgyNjBd wqDCoD8gX19zYl9zdGFydF93cml0ZSsweDEzNS8weDE5MAo+ID4gWyAxMjQ4Ljg1ODI3NV3CoMKg PyB2ZnNfd3JpdGUrMHgxOTMvMHgxYzAKPiA+IFsgMTI0OC44NTgzMDZdwqDCoHZmc193cml0ZSsw eGM2LzB4MWMwCj4gPiBbIDEyNDguODU4MzM1XcKgwqBrc3lzX3dyaXRlKzB4NTgvMHhjMAo+ID4g WyAxMjQ4Ljg1ODM3MF3CoMKgX194NjRfc3lzX3dyaXRlKzB4MWEvMHgyMAo+ID4gWyAxMjQ4Ljg1 ODM4N13CoMKgZG9fc3lzY2FsbF82NCsweDY1LzB4MWIwCj4gPiBbIDEyNDguODU4NDA5XcKgwqBl bnRyeV9TWVNDQUxMXzY0X2FmdGVyX2h3ZnJhbWUrMHg0OS8weGJlCj4gPiBbIDEyNDguODU4NDIz XSBSSVA6IDAwMzM6MHg3ZjgzYjE0ZjIxNTQKPiA+IFsgMTI0OC44NTg0MzBdIENvZGU6IDg5IDAy IDQ4IGM3IGMwIGZmIGZmIGZmIGZmIGMzIDY2IDJlIDBmIDFmIDg0Cj4gPiAwMCAwMAo+ID4gMDAg MDAgMDAgNjYgOTAgNDggOGQgMDUgYjEgMDcgMmUgMDAgOGIgMDAgODUgYzAgNzUgMTMgYjggMDEg MDAgMDAKPiA+IDAwIDBmCj4gPiAwNSA8NDg+IDNkIDAwIGYwIGZmIGZmIDc3IDU0IGYzIGMzIDY2 IDkwIDQxIDU0IDU1IDQ5IDg5IGQ0IDUzIDQ4IDg5Cj4gPiBmNQo+ID4gWyAxMjQ4Ljg1ODkyOF0g UlNQOiAwMDJiOjAwMDA3ZmZlZTczMjAxNjggRUZMQUdTOiAwMDAwMDI0Ngo+ID4gT1JJR19SQVg6 Cj4gPiAwMDAwMDAwMDAwMDAwMDAxCj4gPiBbIDEyNDguODU4OTQ2XSBSQVg6IGZmZmZmZmZmZmZm ZmZmZGEgUkJYOiAwMDAwMDAwMDAwMDAwMDAyIFJDWDoKPiA+IDAwMDA3ZjgzYjE0ZjIxNTQKPiA+ IFsgMTI0OC44NTg5NTZdIFJEWDogMDAwMDAwMDAwMDAwMDAwMiBSU0k6IDAwMDA1NjAzY2RiNjA4 ODAgUkRJOgo+ID4gMDAwMDAwMDAwMDAwMDAwMQo+ID4gWyAxMjQ4Ljg1ODk2NV0gUkJQOiAwMDAw NTYwM2NkYjYwODgwIFIwODogMDAwMDAwMDAwMDAwMDAwYSBSMDk6Cj4gPiAwMDAwMDAwMDAwMDAw MDAxCj4gPiBbIDEyNDguODU4OTc1XSBSMTA6IDAwMDAwMDAwMDAwMDAwMGEgUjExOiAwMDAwMDAw MDAwMDAwMjQ2IFIxMjoKPiA+IDAwMDA3ZjgzYjE3Y2U3NjAKPiA+IFsgMTI0OC44NTg5ODRdIFIx MzogMDAwMDAwMDAwMDAwMDAwMiBSMTQ6IDAwMDA3ZjgzYjE3Y2EyYTAgUjE1Ogo+ID4gMDAwMDdm ODNiMTdjOTc2MAo+ID4gWyAxMjQ4Ljg1OTA0M10gaXJxIGV2ZW50IHN0YW1wOiA1OTc2OAo+ID4g WyAxMjQ4Ljg1OTA1OF0gaGFyZGlycXMgbGFzdMKgwqBlbmFibGVkIGF0ICg1OTc2Nyk6Cj4gPiBb PGZmZmZmZmZmODlhMzFkYzY+XQo+ID4gX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKzB4MzYv MHg2MAo+ID4gWyAxMjQ4Ljg1OTA3Ml0gaGFyZGlycXMgbGFzdCBkaXNhYmxlZCBhdCAoNTk3Njgp Ogo+ID4gWzxmZmZmZmZmZjg5YzAxMzA5Pl0KPiA+IGVycm9yX2VudHJ5KzB4ODkvMHgxMTAKPiA+ IFsgMTI0OC44NTkwODddIHNvZnRpcnFzIGxhc3TCoMKgZW5hYmxlZCBhdCAoNTk3MjQpOgo+ID4g WzxmZmZmZmZmZjg5ZTAwMzc4Pl0KPiA+IF9fZG9fc29mdGlycSsweDM3OC8weDRlMwo+ID4gWyAx MjQ4Ljg1OTEwMF0gc29mdGlycXMgbGFzdCBkaXNhYmxlZCBhdCAoNTk3MTEpOgo+ID4gWzxmZmZm ZmZmZjg5MDk4ZTBkPl0KPiA+IGlycV9leGl0KzB4Y2QvMHhlMAo+ID4gWyAxMjQ4Ljg1OTE1Nl0g V0FSTklORzogQ1BVOiAyIFBJRDogMTc4OCBhdAo+ID4gZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rl c2V0X2xvY2suYzoyMjMKPiA+IGRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MrMHg1Ni8weDYwCj4gPiBb ZHJtXQo+ID4gWyAxMjQ4Ljg1OTE2Nl0gLS0tWyBlbmQgdHJhY2UgYjcyMjJmOTIzOWQzMDY1YiBd LS0KPiBBbmQgdGhpcyB3YXJuaW5nLgo+ID4gCj4gPiAKPiA+ID4gCj4gPiA+ICsKPiA+ID4gKwlp bnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gcmV0 ID86IGxlbjsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBpOTE1X2VkcF9wc3Jf b3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZQo+ID4gPiAqZmlsZSkKPiA+ID4g K3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBpbm9kZS0+aV9w cml2YXRlOwo+ID4gPiArCj4gPiA+ICsJaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKPiA+ID4gKwkJ cmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gc2luZ2xlX29wZW4oZmlsZSwg aTkxNV9lZHBfcHNyX3N0YXR1cywgZGV2X3ByaXYpOwo+ID4gV2hhdCBkbyB5b3UgdGhpbmsgb2Yg dXNpbmcgImk5MTVfZWRwX3Bzcl9kZWJ1ZyIgaW5zdGVhZD8KPiBBbGwgZm9yIGl0Lgo+ID4gCj4g PiA+IAo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3Bl cmF0aW9ucyBpOTE1X2VkcF9wc3Jfb3BzID0gewo+ID4gPiArCS5vd25lciA9IFRISVNfTU9EVUxF LAo+ID4gPiArCS5vcGVuID0gaTkxNV9lZHBfcHNyX29wZW4sCj4gPiA+ICsJLnJlYWQgPSBzZXFf cmVhZCwKPiA+ID4gKwkubGxzZWVrID0gc2VxX2xzZWVrLAo+ID4gPiArCS5yZWxlYXNlID0gc2lu Z2xlX3JlbGVhc2UsCj4gPiA+ICsJLndyaXRlID0gaTkxNV9lZHBfcHNyX3dyaXRlCj4gPiA+ICt9 Owo+ID4gPiArCj4gPiA+IMKgc3RhdGljIGludCBpOTE1X2VuZXJneV91SihzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCj4gPiA+IMKgewo+ID4gPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0KPiA+ID4gPiAKPiA+ID4gPiBwcml2YXRl KTsKPiA+ID4gQEAgLTQ3MjAsNyArNDc4Myw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lu Zm9fbGlzdAo+ID4gPiBpOTE1X2RlYnVnZnNfbGlzdFtdID0gewo+ID4gPiDCoAl7Imk5MTVfc3dp enpsZV9pbmZvIiwgaTkxNV9zd2l6emxlX2luZm8sIDB9LAo+ID4gPiDCoAl7Imk5MTVfcHBndHRf aW5mbyIsIGk5MTVfcHBndHRfaW5mbywgMH0sCj4gPiA+IMKgCXsiaTkxNV9sbGMiLCBpOTE1X2xs YywgMH0sCj4gPiA+IC0JeyJpOTE1X2VkcF9wc3Jfc3RhdHVzIiwgaTkxNV9lZHBfcHNyX3N0YXR1 cywgMH0sCj4gPiA+IMKgCXsiaTkxNV9lbmVyZ3lfdUoiLCBpOTE1X2VuZXJneV91SiwgMH0sCj4g PiA+IMKgCXsiaTkxNV9ydW50aW1lX3BtX3N0YXR1cyIsIGk5MTVfcnVudGltZV9wbV9zdGF0dXMs IDB9LAo+ID4gPiDCoAl7Imk5MTVfcG93ZXJfZG9tYWluX2luZm8iLCBpOTE1X3Bvd2VyX2RvbWFp bl9pbmZvLCAwfSwKPiA+ID4gQEAgLTQ3NDQsNiArNDgwNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKPiA+ID4gwqAJY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0 aW9ucyAqZm9wczsKPiA+ID4gwqB9IGk5MTVfZGVidWdmc19maWxlc1tdID0gewo+ID4gPiDCoAl7 Imk5MTVfd2VkZ2VkIiwgJmk5MTVfd2VkZ2VkX2ZvcHN9LAo+ID4gPiArCXsiaTkxNV9lZHBfcHNy X3N0YXR1cyIsICZpOTE1X2VkcF9wc3Jfb3BzfSwKPiA+ID4gwqAJeyJpOTE1X2NhY2hlX3NoYXJp bmciLCAmaTkxNV9jYWNoZV9zaGFyaW5nX2ZvcHN9LAo+ID4gPiDCoAl7Imk5MTVfcmluZ19taXNz ZWRfaXJxIiwgJmk5MTVfcmluZ19taXNzZWRfaXJxX2ZvcHN9LAo+ID4gPiDCoAl7Imk5MTVfcmlu Z190ZXN0X2lycSIsICZpOTE1X3JpbmdfdGVzdF9pcnFfZm9wc30sCj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBpbmRleCAwZjQ5Zjk5ODhkZmEuLmQ4NTgzNzcwZThhNiAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+IEBAIC02MTIsNyArNjEy LDggQEAgc3RydWN0IGk5MTVfZHJycyB7Cj4gPiA+IMKgc3RydWN0IGk5MTVfcHNyIHsKPiA+ID4g wqAJc3RydWN0IG11dGV4IGxvY2s7Cj4gPiA+IMKgCWJvb2wgc2lua19zdXBwb3J0Owo+ID4gPiAt CXN0cnVjdCBpbnRlbF9kcCAqZW5hYmxlZDsKPiA+ID4gKwlib29sIGVuYWJsZWQ7Cj4gPiA+ICsJ c3RydWN0IGludGVsX2RwICpkcDsKPiA+IFNlcGFyYXRlIHBhdGNoIGZvciB0aGlzIGNoYW5nZT8g SG93IGFib3V0IGtlZXBpbmcgaTkxNV9wc3IuZHAKPiA+IGFsd2F5cwo+ID4gdmFsaWQ/Cj4gSSdt IGtlZXBpbmcgaTkxNV9wc3IuZHAgb25seSB2YWxpZCB3aGVuIHRoZSBtb2Rlc2V0IGNhbGxzCj4g aW50ZWxfcHNyX2VuYWJsZSwgdW50aWwgdGhlIG1vZGVzZXQgZGlzYWJsZSBjYWxscyBpbnRlbF9w c3JfZGlzYWJsZSgpCj4gaTkxNV9wc3IuZHAgaXMgdXNlZCB0byBhbHNvIGluZGljYXRlIHRoYXQg d2UgY2FuIGN1cnJlbnRseSBlbmFibGUKPiBQU1IuIC5lbmFibGVkIGlzIHVzZWQgdG8gZGV0ZXJt aW5lIGl0J3MgY3VycmVudGx5IGVuYWJsZWQuCj4gCgpSZWFsaXplZCAuZHAgbWlnaHQgbWVhbiBz b21ldGhpbmcgZWxzZSBhZnRlciBJIGhpdCBzZW5kLiBUaGFua3MgZm9yCmV4cGxhaW5pbmcgaXQu CgpJIHRoaW5rIHRoZSBmaWVsZCB3YXJyYW50cyByZW5hbWluZywgbm90IHRoZSBsZWFzdCBiZWNh dXNlIG5vdwoucHNyMl9lbmFibGVkIG1lYW5zIGNhbiBlbmFibGUgUFNSMgouZW5hYmxlZCBtZWFu cyBwc3IxIG9yIHBzcjIgaXMgY3VycmVudGx5IGVuYWJsZWQKLmRwIG1lYW5zIGNhbiBlbmFibGUg cHNyMSBvciBwc3IyCgpob3cgYWJvdXQgaGF2aW5nCgp7Cglib29sIGVuYWJsZV9yZWFkeTsKCWJv b2wgZW5hYmxlOwoJc3RydWN0IGludGVsX2RwICpkcDsKfQoKV2hlcmUgLmRwIGlzIGp1c3QgYSBw b2ludGVyIHRvIGludGVsX2RwLCBubyBoaWRkZW4gbWVhbmluZyBhdHRhY2hlZC4KR2l2ZW4gdGhh dCB0aGUgY29kZSBjdXJyZW50bHkgc3VwcG9ydHMgUFNSIG9uIG9ubHkgb25lIGVuY29kZXIsIHdl IGNhbgphc3NpZ24gZHAgPSBpbnRlbF9kcCBkdXJpbmcgaW5pdC7CoAoKCj4gPiAKPiA+ID4gCj4g PiA+IMKgCWJvb2wgYWN0aXZlOwo+ID4gPiDCoAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKPiA+ ID4gwqAJdW5zaWduZWQgYnVzeV9mcm9udGJ1ZmZlcl9iaXRzOwo+ID4gPiBAQCAtNjI1LDYgKzYy NiwxMiBAQCBzdHJ1Y3QgaTkxNV9wc3Igewo+ID4gPiDCoAlib29sIGRlYnVnOwo+ID4gPiDCoAlr dGltZV90IGxhc3RfZW50cnlfYXR0ZW1wdDsKPiA+ID4gwqAJa3RpbWVfdCBsYXN0X2V4aXQ7Cj4g PiA+ICsKPiA+ID4gKwllbnVtIGk5MTVfcHNyX2RlYnVnZnNfbW9kZSB7Cj4gPiA+ICsJCVBTUl9E RUJVR0ZTX01PREVfREVGQVVMVCA9IC0xLAo+ID4gPiArCQlQU1JfREVCVUdGU19NT0RFX0RJU0FC TEVELAo+ID4gPiArCQlQU1JfREVCVUdGU19NT0RFX0VOQUJMRUQKPiA+IElmIHdlIGFkZCBhbm90 aGVyIGVudW0sIHdlIGNhbiB3cml0ZSB0ZXN0cyB0byBlbmFibGUgUFNSMSBvbiBQU1IyCj4gPiBw YW5lbHMuCj4gPiAJCVBTUl9ERUJVR0ZTX01PREVfUFNSMQo+ID4gCQlQU1JfREVCVUdGU19NT0RF X1BTUjIKPiBTaG91bGQgYmUgZWFzeSB0byBhZGQsIGJ1dCBhbm5veWluZyB0byB0b2dnbGUuCj4g Cj4gTWF5YmUgc29tZSBmb2xsb3d1cD8KPiA+IAo+ID4gPiAKPiA+ID4gKwl9IGRlYnVnZnNfbW9k ZTsKPiA+ID4gwqB9Owo+ID4gPiDCoAo+ID4gPiDCoGVudW0gaW50ZWxfcGNoIHsKPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gaW5kZXggYzI3NWY5MTI0NGE2Li43NTFl ZDI1N2ZiYmEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IEBA IC0xOTI2LDYgKzE5MjYsOSBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2Rw Cj4gPiA+ICppbnRlbF9kcCwKPiA+ID4gwqAJCcKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlCj4gPiA+ICpjcnRjX3N0YXRlKTsKPiA+ID4gwqB2b2lkIGludGVsX3Bzcl9k aXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+IMKgCQnCoMKgwqDCoMKgwqBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gPiAqb2xkX2NydGNfc3RhdGUpOwo+ID4g PiAraW50IGludGVsX3Bzcl9zZXRfZGVidWdmc19tb2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gKwkJCcKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9tb2Rl c2V0X2FjcXVpcmVfY3R4Cj4gPiA+ICpjdHgsCj4gPiA+ICsJCQnCoMKgwqDCoMKgwqDCoGVudW0g aTkxNV9wc3JfZGVidWdmc19tb2RlIG1vZGUpOwo+ID4gPiDCoHZvaWQgaW50ZWxfcHNyX2ludmFs aWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiDCoAkJCcKgwqB1 bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRzLAo+ID4gPiDCoAkJCcKgwqBlbnVtIGZiX29wX29yaWdp biBvcmlnaW4pOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cHNyLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+ID4gPiBpbmRl eCA0YmQ1NzY4NzMxZWUuLjk3NDI0YWU3NjlmMyAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcHNyLmMKPiA+ID4gQEAgLTU2LDYgKzU2LDE2IEBACj4gPiA+IMKgI2luY2x1ZGUgImlu dGVsX2Rydi5oIgo+ID4gPiDCoCNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ID4gPiDCoAo+ID4gPiAr c3RhdGljIGJvb2wgcHNyX2dsb2JhbF9lbmFibGVkKGVudW0gaTkxNV9wc3JfZGVidWdmc19tb2Rl IG1vZGUpCj4gPiA+ICt7Cj4gPiA+ICsJaWYgKG1vZGUgPT0gUFNSX0RFQlVHRlNfTU9ERV9ERUZB VUxUKQo+ID4gPiArCQlyZXR1cm4gaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzcjsKPiA+ID4gKwll bHNlIGlmIChtb2RlID09IFBTUl9ERUJVR0ZTX01PREVfRElTQUJMRUQpCj4gPiA+ICsJCXJldHVy biBmYWxzZTsKPiA+ID4gKwllbHNlCj4gPiA+ICsJCXJldHVybiB0cnVlOwo+ID4gPiArfQo+ID4g PiArCj4gPiA+IMKgdm9pZCBpbnRlbF9wc3JfaXJxX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ID4gPiBib29sCj4gPiA+IGRlYnVnKQo+ID4gPiDCoHsKPiA+ID4g wqAJdTMyIGRlYnVnX21hc2ssIG1hc2s7Cj4gPiA+IEBAIC00NzEsMTEgKzQ4MSw2IEBAIHZvaWQg aW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdAo+ID4gPiBpbnRlbF9kcAo+ID4gPiAqaW50 ZWxfZHAsCj4gPiA+IMKgCWlmICghQ0FOX1BTUihkZXZfcHJpdikpCj4gPiA+IMKgCQlyZXR1cm47 Cj4gPiA+IMKgCj4gPiA+IC0JaWYgKCFpOTE1X21vZHBhcmFtcy5lbmFibGVfcHNyKSB7Cj4gPiA+ IC0JCURSTV9ERUJVR19LTVMoIlBTUiBkaXNhYmxlIGJ5IGZsYWdcbiIpOwo+ID4gPiAtCQlyZXR1 cm47Cj4gPiA+IC0JfQo+ID4gPiAtCj4gPiA+IMKgCS8qCj4gPiA+IMKgCcKgKiBIU1cgc3BlYyBl eHBsaWNpdGx5IHNheXMgUFNSIGlzIHRpZWQgdG8gcG9ydCBBLgo+ID4gPiDCoAnCoCogQkRXKyBw bGF0Zm9ybXMgd2l0aCBEREkgaW1wbGVtZW50YXRpb24gb2YgUFNSIGhhdmUKPiA+ID4gZGlmZmVy ZW50Cj4gPiA+IEBAIC01MTcsNyArNTIyLDExIEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29u ZmlnKHN0cnVjdAo+ID4gPiBpbnRlbF9kcAo+ID4gPiAqaW50ZWxfZHAsCj4gPiA+IMKgCj4gPiA+ IMKgCWNydGNfc3RhdGUtPmhhc19wc3IgPSB0cnVlOwo+ID4gPiDCoAljcnRjX3N0YXRlLT5oYXNf cHNyMiA9IGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKGludGVsX2RwLAo+ID4gPiBjcnRjX3N0YXRl KTsKPiA+ID4gLQlEUk1fREVCVUdfS01TKCJFbmFibGluZyBQU1Ilc1xuIiwgY3J0Y19zdGF0ZS0+ aGFzX3BzcjIgPwo+ID4gPiAiMiIKPiA+ID4gOiAiIik7Cj4gPiA+ICsKPiA+ID4gKwlpZiAocHNy X2dsb2JhbF9lbmFibGVkKGRldl9wcml2LT5wc3IuZGVidWdmc19tb2RlKSkKPiA+ID4gKwkJRFJN X0RFQlVHX0tNUygiRW5hYmxpbmcgUFNSJXNcbiIsIGNydGNfc3RhdGUtCj4gPiA+ID4gCj4gPiA+ ID4gaGFzX3BzcjIgPyAiMiIgOiAiIik7Cj4gPiBUaGlzIGdldHMgcHJpbnRlZCBkdXJpbmcgYSBt b2Rlc2V0IHRoYXQgaXMgc2h1dHRpbmcgZG93biB0aGUgY3J0Yy4KPiA+IAo+ID4gPiAKPiA+ID4g KwllbHNlCj4gPiA+ICsJCURSTV9ERUJVR19LTVMoIlBTUiBkaXNhYmxlIGJ5IGZsYWdcbiIpOwo+ ID4gPiAKPiA+ID4gwqB9Cj4gPiBTbywgbmVpdGhlciBkZWJ1Z2ZzIG5vciBtb2RwYXJhbSBoYXMg YW55IGVmZmVjdCBvbiBjcnRjX3N0YXRlLQo+ID4gPmhhc19wc3IKPiA+IG9yIGNydGNfc3RhdGUt Pmhhc19wc3IyLiBXaHkgd2FzIHRoaXMgY2hlY2sgbW92ZWQgdG8gdGhlIGVuZD/CoAo+IFdlIGNh bGN1bGF0ZSBjcnRjX3N0YXRlLT5oYXNfcHNyKDIpIHRvIHNlZSBpZiBQU1IgY2FuIGJlIGVuYWJs ZWQKPiBoYXJkd2FyZSB3aXNlLgo+IAo+IFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhhdCB0aGUgc3Rh dGUgaXMgY29ycmVjdGx5IHdyaXR0ZW4gaW4KPiBpbnRlbF9wc3JfZW5hYmxlLCBldmVuIGlmIHdl IG1heSBub3QgZW5hYmxlIFBTUiBieSBkZWZhdWx0Lgo+ID4gCj4gPiBXZSBjb3VsZCBhbHNvIHJl d3JpdGUgdGhlIGRlYnVnIG1lc3NhZ2UgdG8gbG9vayBzaW1pbGFyIHRvIHRoZQo+ID4gb3RoZXIK PiA+IGNvbXB1dGVfY29uZmlnIGZ1bmN0aW9ucwo+IFRoZSBkZWJ1ZyBtZXNzYWdlIGNvdWxkIGJl IHJlbW92ZWQsIG9yIG1vdmVkIHRvIGludGVsX3Bzcl9lbmFibGUuCmxldCdzIG1vdmUgZW5hYmxl IGRlYnVnIG1lc3NhZ2VzIHRvIHBzcl9lbmFibGVfbG9ja2VkKCkgYW5kCnBzcl9kaXNhYmxlX2xv Y2tlZCgpCgo+ID4gCj4gPiA+IAo+ID4gPiDCoAo+ID4gPiDCoHN0YXRpYyB2b2lkIGludGVsX3Bz cl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiBAQCAtNTg5LDYgKzU5 OCwyMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QKPiA+ID4g aW50ZWxfZHAgKmludGVsX2RwLAo+ID4gPiDCoAl9Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ID4gPiAr c3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUKPiA+ID4gKmRldl9wcml2LAo+ID4gPiArCQkJCcKgwqDCoMKgY29uc3Qgc3RydWN0Cj4gPiA+ IGludGVsX2NydGNfc3RhdGUKPiA+ID4gKmNydGNfc3RhdGUpCj4gPiA+ICt7Cj4gPiA+ICsJc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZHA7Cj4gPiA+ICsKPiA+ID4g KwlpZiAoZGV2X3ByaXYtPnBzci5lbmFibGVkKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ IFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZnJvbSBpbnRlbF9wc3Jfc2V0X2RlYnVnZnNfbW9k ZSgpIERvZXNuJ3QKPiA+IHRoaXMgYWxsb3cgZGVidWdmcyB0byBlbmFibGUgUFNSIGV2ZW4gaWYg bW9kZSByZWxhdGVkIGNoZWNrcyBpbgo+ID4gcHNyX2NvbXB1dGVfY29uZmlnKCkgaGFkIGZhaWxl ZD8gRm9yIGUuZy4sIGNydGNfc3RhdGUtPmhhc19wc3Igd2FzCj4gPiBmYWxzZS4KPiBObywgc2Vl IGludGVsX3Bzcl9lbmFibGUuIEl0IG9ubHkgc2V0cyB1cCBzdGF0ZSB3aGVuIGNydGNfc3RhdGUt Cj4gPmhhc19wc3IgaXMgdHJ1ZS4gVGhpcyBpcyBhbHNvIHdoeSB0aGUgY2hlY2sgaW4KPiBpbnRl bF9wc3JfY29tcHV0ZV9jb25maWcgaXMgbW92ZWQuCj4gPiAKPiA+ID4gCj4gPiA+ICsJaW50ZWxf cHNyX3NldHVwX3ZzYyhpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7Cj4gPiA+ICsJaW50ZWxfcHNyX2Vu YWJsZV9zaW5rKGludGVsX2RwKTsKPiA+ID4gKwlpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShpbnRl bF9kcCwgY3J0Y19zdGF0ZSk7Cj4gPiA+ICsJZGV2X3ByaXYtPnBzci5lbmFibGVkID0gdHJ1ZTsK PiA+ID4gKwo+ID4gPiArCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gwqAvKioKPiA+ID4gwqAgKiBpbnRlbF9wc3JfZW5hYmxlIC0gRW5hYmxlIFBT Ugo+ID4gPiDCoCAqIEBpbnRlbF9kcDogSW50ZWwgRFAKPiA+ID4gQEAgLTYxMSw3ICs2MzYsNyBA QCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9kcCwK PiA+ID4gwqAKPiA+ID4gwqAJV0FSTl9PTihkZXZfcHJpdi0+ZHJycy5kcCk7Cj4gPiA+IMKgCW11 dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiA+IC0JaWYgKGRldl9wcml2LT5wc3Iu ZW5hYmxlZCkgewo+ID4gPiArCWlmIChkZXZfcHJpdi0+cHNyLmRwKSB7Cj4gPiBDaGVjayBmb3Ig ZGV2X3ByaXYtPnBzci5lbmFibGVkIGluc3RlYWQ/Cj4gVGhpcyBpcyBoYW5kbGVkIGluIGludGVs X3Bzcl9lbmFibGVfbG9ja2VkKCkuCj4gCj4gaW50ZWxfcHNyX2VuYWJsZSBjb25maWd1cmVzIHRo ZSBzdGF0ZSwgYnV0IG1heSBub3QgZW5hYmxlIFBTUiByaWdodAo+IGF3YXkgaWYgZGlzYWJsZWQg YnkgbW9kcGFyYW0gb3IgZGVidWdmcy4KPiA+IAo+ID4gCj4gPiA+IAo+ID4gPiDCoAkJRFJNX0RF QlVHX0tNUygiUFNSIGFscmVhZHkgaW4gdXNlXG4iKTsKPiA+ID4gwqAJCWdvdG8gdW5sb2NrOwo+ ID4gPiDCoAl9Cj4gPiA+IEBAIC02MTksMTIgKzY0NCwxMCBAQCB2b2lkIGludGVsX3Bzcl9lbmFi bGUoc3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9kcCwKPiA+ID4gwqAJZGV2X3ByaXYtPnBz ci5wc3IyX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsKPiA+ID4gwqAJZGV2X3ByaXYt PnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOwo+ID4gPiDCoAo+ID4gPiAtCWludGVsX3Bz cl9zZXR1cF92c2MoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwo+ID4gPiAtCWludGVsX3Bzcl9lbmFi bGVfc2luayhpbnRlbF9kcCk7Cj4gPiA+IC0JaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2UoaW50ZWxf ZHAsIGNydGNfc3RhdGUpOwo+ID4gPiAtCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGludGVsX2Rw Owo+ID4gPiArCWRldl9wcml2LT5wc3IuZHAgPSBpbnRlbF9kcDsKPiA+IE5vdyB0aGF0IHRoZXJl IGlzIHBzci5lbmFibGVkLCBzaG91bGQgd2UgYWx3YXlzIGtlZXAgdGhpcyBwb2ludGVyCj4gPiB2 YWxpZD/CoAo+IE5vLgo+ID4gCj4gPiA+IAo+ID4gPiDCoAo+ID4gPiAtCWludGVsX3Bzcl9hY3Rp dmF0ZShpbnRlbF9kcCk7Cj4gPiA+ICsJaWYgKHBzcl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdi0+ cHNyLmRlYnVnZnNfbW9kZSkpCj4gPiBPa2F5LCBub3cgSSBzZWUgd2h5IHlvdSBoYXZlIHBzcl9n bG9iYWxfZW5hYmxlZCgpIGFzIHRoZSBsYXN0IGNoZWNrCj4gPiBpbgo+ID4gcHNyX2NvbXB1dGVf Y29uZmlnKCkuCj4gOikKPiA+IAo+ID4gPiAKPiA+ID4gKwkJaW50ZWxfcHNyX2VuYWJsZV9sb2Nr ZWQoZGV2X3ByaXYsIGNydGNfc3RhdGUpOwo+ID4gPiDCoAo+ID4gPiDCoHVubG9jazoKPiA+ID4g wqAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gPiBAQCAtNjg4LDcgKzcx MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChzdHJ1Y3QKPiA+ID4g aW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiDCoAkvKiBEaXNhYmxlIFBTUiBvbiBTaW5rICovCj4g PiA+IMKgCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX0VOX0NGRywg MCk7Cj4gPiA+IMKgCj4gPiA+IC0JZGV2X3ByaXYtPnBzci5lbmFibGVkID0gTlVMTDsKPiA+ID4g KwlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSBmYWxzZTsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+ IMKgLyoqCj4gPiA+IEBAIC03MTIsNyArNzM1LDE0IEBAIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUo c3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9kcCwKPiA+ID4gwqAJCXJldHVybjsKPiA+ID4g wqAKPiA+ID4gwqAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4gKwlpZiAo aW50ZWxfZHAgIT0gZGV2X3ByaXYtPnBzci5kcCkgewo+ID4gPiArCQltdXRleF91bmxvY2soJmRl dl9wcml2LT5wc3IubG9jayk7Cj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ ID4gwqAJaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKGludGVsX2RwKTsKPiA+ID4gKwo+ID4gPiAr CWRldl9wcml2LT5wc3IuZHAgPSBOVUxMOwo+ID4gSXMgdGhlcmUgc3RpbGwgYSBuZWVkIHRvIHVz ZSB0aGlzIGZpZWxkIGFzIGZsYWc/Cj4gWWVzLgo+ID4gCj4gPiA+IAo+ID4gPiDCoAltdXRleF9s dW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gPiDCoAljYW5jZWxfd29ya19zeW5jKCZk ZXZfcHJpdi0+cHNyLndvcmspOwo+ID4gPiDCoH0KPiA+ID4gQEAgLTc1NiwxMyArNzg2LDExIEBA IGludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QKPiA+ID4gaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gPiA+IMKgCj4gPiA+IMKgc3RhdGljIGJvb2wgX19w c3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRl dl9wcml2KQo+ID4gPiDCoHsKPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwOwo+ID4g PiDCoAlpOTE1X3JlZ190IHJlZzsKPiA+ID4gwqAJdTMyIG1hc2s7Cj4gPiA+IMKgCWludCBlcnI7 Cj4gPiA+IMKgCj4gPiA+IC0JaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7Cj4gPiA+ IC0JaWYgKCFpbnRlbF9kcCkKPiA+ID4gKwlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkKPiA+ ID4gwqAJCXJldHVybiBmYWxzZTsKPiA+ID4gwqAKPiA+ID4gwqAJaWYgKGRldl9wcml2LT5wc3Iu cHNyMl9lbmFibGVkKSB7Cj4gPiA+IEBAIC03ODQsNiArODEyLDg5IEBAIHN0YXRpYyBib29sCj4g PiA+IF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiA+ID4gwqAJcmV0dXJuIGVyciA9PSAwICYmIGRldl9wcml2LT5wc3Iu ZW5hYmxlZDsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+ICtzdGF0aWMgc3RydWN0IGRybV9jcnRj ICoKPiA+ID4gK2ZpbmRfaWRsZV9jcnRjX2Zvcl9lbmNvZGVyKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciwKPiA+ID4gKwkJCcKgwqDCoHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAq Y3R4KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25u X2l0ZXI7Cj4gPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKPiA+ ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ID4gPiArCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsKPiA+ID4gKwlib29sIGZvdW5kID0gZmFsc2U7Cj4gPiA+ICsJaW50IHJldDsK PiA+ID4gKwo+ID4gPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5f aXRlcik7Cj4gPiA+ICsJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNv bm5faXRlcikKPiA+ID4gKwkJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlciA9PSBl bmNvZGVyKSB7Cj4gPiA+ICsJCQlmb3VuZCA9IHRydWU7Cj4gPiA+ICsJCQlicmVhazsKPiA+ID4g KwkJfQo+ID4gPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29ubl9pdGVyKTsKPiA+ ID4gKwo+ID4gPiArCWlmIChXQVJOX09OKCFmb3VuZCkpCj4gPiA+ICsJCXJldHVybiBFUlJfUFRS KC1FSU5WQUwpOwo+ID4gPiArCj4gPiA+ICsJY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7 Cj4gPiA+ICsJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsIGN0eCk7Cj4gPiA+ ICsJaWYgKHJldCkKPiA+ID4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiA+ID4gKwo+ID4gPiAr CWlmIChjb25uZWN0b3ItPnN0YXRlLT5jb21taXQpCj4gPiA+ICsJCXJldCA9Cj4gPiA+IHdhaXRf Zm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgmY29ubmVjdG9yLQo+ID4gPiA+IAo+ID4gPiA+ IHN0YXRlLT5jb21taXQtPmh3X2RvbmUpOwo+ID4gPiArCWlmICghcmV0ICYmIGNydGMtPnN0YXRl LT5jb21taXQpCj4gPiA+ICsJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJs ZSgmY3J0Yy0KPiA+ID4gPiAKPiA+ID4gPiBzdGF0ZS0+Y29tbWl0LT5od19kb25lKTsKPiA+ID4g KwlpZiAocmV0KQo+ID4gPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gPiArCj4gPiA+ICsJ cmV0dXJuIGNydGM7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK2ludCBpbnRlbF9wc3Jfc2V0X2Rl YnVnZnNfbW9kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYsCj4gPiA+ ICsJCQnCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eAo+ID4gPiAq Y3R4LAo+ID4gPiArCQkJwqDCoMKgwqDCoMKgwqBlbnVtIGk5MTVfcHNyX2RlYnVnZnNfbW9kZSBt b2RlKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYt PmRybTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4gPiA+ICsJc3RydWN0 IGRybV9jcnRjICpjcnRjOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsJYm9vbCBlbmFibGU7Cj4g PiA+ICsKPiA+ID4gKwlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZkZXYtCj4gPiA+ID5tb2RlX2Nv bmZpZy5jb25uZWN0aW9uX211dGV4LAo+ID4gPiBjdHgpOwo+ID4gPiArCWlmIChyZXQpCj4gPiA+ ICsJCXJldHVybiByZXQ7Cj4gPiA+ICsKPiA+ID4gKwllbmFibGUgPSBwc3JfZ2xvYmFsX2VuYWJs ZWQobW9kZSk7Cj4gPiA+ICsKPiA+ID4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp Owo+ID4gPiArCj4gPiA+ICsJZG8gewo+ID4gPiArCQlpZiAoIWRldl9wcml2LT5wc3IuZHApIHsK PiA+ID4gKwkJCWRldl9wcml2LT5wc3IuZGVidWdmc19tb2RlID0gbW9kZTsKPiA+ID4gKwkJCWdv dG8gZW5kOwo+ID4gPiArCQl9Cj4gPiA+ICsJCWVuY29kZXIgPSAmZHBfdG9fZGlnX3BvcnQoZGV2 X3ByaXYtPnBzci5kcCktCj4gPiA+ID4gCj4gPiA+ID4gYmFzZS5iYXNlOwo+ID4gPiArCQltdXRl eF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiA+ICsKPiA+ID4gKwkJY3J0YyA9IGZp bmRfaWRsZV9jcnRjX2Zvcl9lbmNvZGVyKGVuY29kZXIsIGN0eCk7Cj4gPiA+ICsJCWlmIChJU19F UlIoY3J0YykpCj4gPiA+ICsJCQlyZXR1cm4gUFRSX0VSUihjcnRjKTsKPiA+ID4gKwo+ID4gPiAr CQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gPiArCX0gd2hpbGUgKGRldl9w cml2LT5wc3IuZHAgIT0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpKTsKPiA+IFdoZW4gd2lsbCB0 aGlzIG5vdCBiZSB0cnVlPwo+IG5vbmJsb2NraW5nIG1vZGVzZXQsIGZvciBleGFtcGxlLgoKV2l0 aCBwc3IuZHAgPSBpbnRlbF9kcCBzdGF0aWNhbGx5IGFzc2lnbmVkIGluIHBzcl9pbml0X2RwY2Qo KSwgY2FuIHdlCmdldCByaWQgb2YgdGhpcyBjaGVjaz8gQW5kIHRoZSBjb25uZWN0b3IgbG9vcCBp bgpmaW5kX2lkbGVfY3J0Y19mb3JfZW5jb2RlcigpIGNhbiBqdXN0IGJlIGludGVsX2RwLT5hdHRh Y2hlZF9jb25uZWN0b3IuCgoKPiA+IAo+ID4gPiAKPiA+ID4gKwo+ID4gPiArCWlmICghZW5hYmxl KQo+ID4gPiArCQlpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoZW5jX3RvX2ludGVsX2RwKGVuY29k ZXIKPiA+ID4gKSk7Cj4gPiA+ICsKPiA+ID4gKwlkZXZfcHJpdi0+cHNyLmRlYnVnZnNfbW9kZSA9 IG1vZGU7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoZW5hYmxlKQo+ID4gYnNwZWMgc2F5cyBQU1IgZW5h YmxlIHNlcXVlbmNlIHJlcXVpcmVzICI6IFRoZSBhc3NvY2lhdGVkCj4gPiB0cmFuc2NvZGVyCj4g PiBhbmQgcG9ydCBhcmUgcnVubmluZyBhbmQgQXV4IGNoYW5uZWwgYXNzb2NpYXRlZCB3aXRoIHRo aXMgcG9ydCBoYXMKPiA+IElPCj4gPiBwb3dlciBlbmFibGVkIiBTaG91bGRuJ3QgY3J0Y19zdGF0 ZS0+YWN0aXZlIGJlIGNoZWNrZWQuCj4gSXQncyBpbXBsaWVkIGJ5IGhhdmluZyBwc3IuZHAgIT0g TlVMTAo+ID4gCj4gPiA+IAo+ID4gPiArCQlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJp diwKPiA+ID4gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSkpOwo+ID4gPiArCj4gPiA+ ICtlbmQ6Cj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gPiAr CXJldHVybiByZXQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gwqBzdGF0aWMgdm9pZCBpbnRlbF9w c3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gPiA+IMKgewo+ID4gPiDCoAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ID4gPiBAQCAtODExLDcgKzkyMiw4IEBA IHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdAo+ID4gPiAqd29y aykKPiA+ID4gwqAJaWYgKGRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHx8IGRl dl9wcml2LQo+ID4gPiA+IAo+ID4gPiA+IHBzci5hY3RpdmUpCj4gPiA+IMKgCQlnb3RvIHVubG9j azsKPiA+ID4gwqAKPiA+ID4gLQlpbnRlbF9wc3JfYWN0aXZhdGUoZGV2X3ByaXYtPnBzci5lbmFi bGVkKTsKPiA+ID4gKwlpbnRlbF9wc3JfYWN0aXZhdGUoZGV2X3ByaXYtPnBzci5kcAo+ID4gPiAr KTsKPiA+IFNwdXJpb3VzIG5ldyBsaW5lLgo+IEluZGVlZCEKPiA+IAo+ID4gPiAKPiA+ID4gwqB1 bmxvY2s6Cj4gPiA+IMKgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4g wqB9Cj4gPiA+IEBAIC04NjYsNyArOTc4LDcgQEAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShz dHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYsCj4gPiA+IMKgCQly ZXR1cm47Cj4gPiA+IMKgCX0KPiA+ID4gwqAKPiA+ID4gLQljcnRjID0gZHBfdG9fZGlnX3BvcnQo ZGV2X3ByaXYtPnBzci5lbmFibGVkKS0KPiA+ID4gPiAKPiA+ID4gPiBiYXNlLmJhc2UuY3J0YzsK PiA+ID4gKwljcnRjID0gZHBfdG9fZGlnX3BvcnQoZGV2X3ByaXYtPnBzci5kcCktPmJhc2UuYmFz ZS5jcnRjOwo+ID4gPiDCoAlwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiA+ID4g wqAKPiA+ID4gwqAJZnJvbnRidWZmZXJfYml0cyAmPSBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFT SyhwaXBlKTsKPiA+ID4gQEAgLTkwOSw3ICsxMDIxLDcgQEAgdm9pZCBpbnRlbF9wc3JfZmx1c2go c3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2LAo+ID4gPiDCoAkJcmV0dXJu Owo+ID4gPiDCoAl9Cj4gPiA+IMKgCj4gPiA+IC0JY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9w cml2LT5wc3IuZW5hYmxlZCktCj4gPiA+ID4gCj4gPiA+ID4gYmFzZS5iYXNlLmNydGM7Cj4gPiA+ ICsJY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZHApLT5iYXNlLmJhc2UuY3J0 YzsKPiA+ID4gwqAJcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gPiA+IMKgCj4g PiA+IMKgCWZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0socGlw ZSk7Cj4gPiA+IEBAIC05NzEsNiArMTA4Myw4IEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2KQo+ID4gPiDCoAkJLyogRm9yIG5ldyBw bGF0Zm9ybXMgbGV0J3MgcmVzcGVjdCBWQlQgYmFjawo+ID4gPiBhZ2FpbiAqLwo+ID4gPiDCoAkJ ZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBkZXZfcHJpdi0KPiA+ID4gPiAKPiA+ID4gPiB2 YnQucHNyLmZ1bGxfbGluazsKPiA+ID4gwqAKPiA+ID4gKwlkZXZfcHJpdi0+cHNyLmRlYnVnZnNf bW9kZSA9IFBTUl9ERUJVR0ZTX01PREVfREVGQVVMVDsKPiA+ID4gKwo+ID4gPiDCoAlJTklUX1dP UksoJmRldl9wcml2LT5wc3Iud29yaywgaW50ZWxfcHNyX3dvcmspOwo+ID4gPiDCoAltdXRleF9p bml0KCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gPiDCoH0KPiA+ID4gQEAgLTk5MSw3ICsxMTA1 LDcgQEAgdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGludGVsX2RwCj4gPiA+ICpp bnRlbF9kcCkKPiA+ID4gwqAKPiA+ID4gwqAJbXV0ZXhfbG9jaygmcHNyLT5sb2NrKTsKPiA+ID4g wqAKPiA+ID4gLQlpZiAocHNyLT5lbmFibGVkICE9IGludGVsX2RwKQo+ID4gPiArCWlmICghcHNy LT5lbmFibGVkIHx8IHBzci0+ZHAgIT0gaW50ZWxfZHApCj4gPiA+IMKgCQlnb3RvIGV4aXQ7Cj4g PiA+IMKgCj4gPiA+IMKgCWlmIChkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1eCwgRFBf UFNSX1NUQVRVUywKPiA+ID4gJnZhbCkKPiA+ID4gIT0gMSkgewo+IApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK