From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [RFC 1/4] drm: Add writeback connector type Date: Fri, 23 Feb 2018 11:39:06 -0500 Message-ID: <20180223163906.GN223881@art_vandelay> References: <20180223131758.18362-1-robdclark@gmail.com> <20180223131758.18362-2-robdclark@gmail.com> <20180223155935.GJ223881@art_vandelay> <20180223162104.GX9111@e110455-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180223162104.GX9111-A/Nd4k6kWRHZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Liviu Dudau Cc: Jonathan Corbet , David Airlie , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Maarten Lankhorst , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Rob Clark , Sean Paul , Gustavo Padovan , Mihail Atanassov , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Brian Starkey List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBGZWIgMjMsIDIwMTggYXQgMDQ6MjE6MDVQTSArMDAwMCwgTGl2aXUgRHVkYXUgd3Jv dGU6Cj4gT24gRnJpLCBGZWIgMjMsIDIwMTggYXQgMTA6NTk6MzVBTSAtMDUwMCwgU2VhbiBQYXVs IHdyb3RlOgo+ID4gT24gRnJpLCBGZWIgMjMsIDIwMTggYXQgMDg6MTc6NTFBTSAtMDUwMCwgUm9i IENsYXJrIHdyb3RlOgo+ID4gPiBGcm9tOiBCcmlhbiBTdGFya2V5IDxicmlhbi5zdGFya2V5QGFy bS5jb20+Cj4gPiA+IAo+ID4gPiBXcml0ZWJhY2sgY29ubmVjdG9ycyByZXByZXNlbnQgd3JpdGVi YWNrIGVuZ2luZXMgd2hpY2ggY2FuIHdyaXRlIHRoZQo+ID4gPiBDUlRDIG91dHB1dCB0byBhIG1l bW9yeSBmcmFtZWJ1ZmZlci4gQWRkIGEgd3JpdGViYWNrIGNvbm5lY3RvciB0eXBlIGFuZAo+ID4g PiByZWxhdGVkIHN1cHBvcnQgZnVuY3Rpb25zLgo+ID4gPiAKPiA+ID4gRHJpdmVycyBzaG91bGQg aW5pdGlhbGl6ZSBhIHdyaXRlYmFjayBjb25uZWN0b3Igd2l0aAo+ID4gPiBkcm1fd3JpdGViYWNr X2Nvbm5lY3Rvcl9pbml0KCkgd2hpY2ggdGFrZXMgY2FyZSBvZiBzZXR0aW5nIHVwIGFsbCB0aGUK PiA+ID4gd3JpdGViYWNrLXNwZWNpZmljIGRldGFpbHMgb24gdG9wIG9mIHRoZSBub3JtYWwgZnVu Y3Rpb25hbGl0eSBvZgo+ID4gPiBkcm1fY29ubmVjdG9yX2luaXQoKS4KPiA+ID4gCj4gPiA+IFdy aXRlYmFjayBjb25uZWN0b3JzIGhhdmUgYSBXUklURUJBQ0tfRkJfSUQgcHJvcGVydHksIHVzZWQg dG8gc2V0IHRoZQo+ID4gPiBvdXRwdXQgZnJhbWVidWZmZXIsIGFuZCBhIFdSSVRFQkFDS19QSVhF TF9GT1JNQVRTIGJsb2IgdXNlZCB0byBleHBvc2UgdGhlCj4gPiA+IHN1cHBvcnRlZCB3cml0ZWJh Y2sgZm9ybWF0cyB0byB1c2Vyc3BhY2UuCj4gPiA+IAo+ID4gPiBXaGVuIGEgZnJhbWVidWZmZXIg aXMgYXR0YWNoZWQgdG8gYSB3cml0ZWJhY2sgY29ubmVjdG9yIHdpdGggdGhlCj4gPiA+IFdSSVRF QkFDS19GQl9JRCBwcm9wZXJ0eSwgaXQgaXMgdXNlZCBvbmx5IG9uY2UgKGZvciB0aGUgY29tbWl0 IGluIHdoaWNoCj4gPiA+IGl0IHdhcyBpbmNsdWRlZCksIGFuZCB1c2Vyc3BhY2UgY2FuIG5ldmVy IHJlYWQgYmFjayB0aGUgdmFsdWUgb2YKPiA+ID4gV1JJVEVCQUNLX0ZCX0lELiBXUklURUJBQ0tf RkJfSUQgY2FuIG9ubHkgYmUgc2V0IGlmIHRoZSBjb25uZWN0b3IgaXMKPiA+ID4gYXR0YWNoZWQg dG8gYSBDUlRDLgo+ID4gPiAKPiA+ID4gQ2hhbmdlcyBzaW5jZSB2MToKPiA+ID4gIC0gQWRkZWQg ZHJtX3dyaXRlYmFjay5jICsgZG9jdW1lbnRhdGlvbgo+ID4gPiAgLSBBZGRlZCBoZWxwZXIgdG8g aW5pdGlhbGl6ZSB3cml0ZWJhY2sgY29ubmVjdG9yIGluIG9uZSBnbwo+ID4gPiAgLSBBZGRlZCBj b3JlIGNoZWNrcwo+ID4gPiAgLSBTcXVhc2hlZCBpbnRvIGEgc2luZ2xlIGNvbW1pdAo+ID4gPiAg LSBEcm9wcGVkIHRoZSBjbGllbnQgY2FwCj4gPiA+ICAtIFdyaXRlYmFjayBmcmFtZWJ1ZmZlcnMg YXJlIG5vIGxvbmdlciBwZXJzaXN0ZW50Cj4gPiA+IAo+ID4gPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ ID4gPiAgRGFuaWVsIFZldHRlcjoKPiA+ID4gIC0gU3ViY2xhc3MgZHJtX2Nvbm5lY3RvciB0byBk cm1fd3JpdGViYWNrX2Nvbm5lY3Rvcgo+ID4gPiAgLSBSZWxheCBjaGVjayB0byBhbGxvdyBDUlRD IHRvIGJlIHNldCB3aXRob3V0IGFuIEZCCj4gPiA+ICAtIEFkZCBzb21lIHdyaXRlYmFja18gcHJl Zml4ZXMKPiA+ID4gIC0gRHJvcCBQSVhFTF9GT1JNQVRTX1NJWkUgcHJvcGVydHksIGFzIGl0IHdh cyB1bm5lY2Vzc2FyeQo+ID4gPiAgR3VzdGF2byBQYWRvdmFuOgo+ID4gPiAgLSBBZGQgZHJtX3dy aXRlYmFja19qb2IgdG8gaGFuZGxlIHdyaXRlYmFjayBzaWduYWxsaW5nIGNlbnRyYWxseQo+ID4g PiAKPiA+ID4gQ2hhbmdlcyBzaW5jZSB2MzoKPiA+ID4gIC0gUmViYXNlZAo+ID4gPiAgLSBSZW5h bWUgUElYRUxfRk9STUFUUyAtPiBXUklURUJBQ0tfUElYRUxfRk9STUFUUwo+ID4gPiAKPiA+ID4g Q2hhbmdlcyBzaW5jZSB2NDoKPiA+ID4gIC0gQWRkZWQgYXRvbWljX2NvbW1pdCgpIHZmdW5jIHRv IGNvbm5lY3RvciBoZWxwZXIgZnVuY3MsIHNvIHRoYXQKPiA+ID4gICAgd3JpdGViYWNrIGpvYnMg YXJlIGNvbW1pdHRlZCBmcm9tIGF0b21pYyBoZWxwZXJzCj4gPiA+IAo+ID4gPiBTaWduZWQtb2Zm LWJ5OiBCcmlhbiBTdGFya2V5IDxicmlhbi5zdGFya2V5QGFybS5jb20+Cj4gPiA+IFtyZWJhc2Vk IGFuZCBmaXhlZCBjb25mbGljdHNdCj4gPiA+IFNpZ25lZC1vZmYtYnk6IE1paGFpbCBBdGFuYXNz b3YgPG1paGFpbC5hdGFuYXNzb3ZAYXJtLmNvbT4KPiA+ID4gU2lnbmVkLW9mZi1ieTogTGl2aXUg RHVkYXUgPGxpdml1LmR1ZGF1QGFybS5jb20+Cj4gPiA+IFtyZWJhc2VkIGFuZCBhZGRlZCBhdG9t aWNfY29tbWl0KCkgdmZ1bmMgZm9yIHdyaXRlYmFjayBqb2JzXQo+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgRG9jdW1l bnRhdGlvbi9ncHUvZHJtLWttcy5yc3QgICAgICAgICAgICB8ICAgOSArKwo+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArLQo+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgICAgICB8IDEzMCArKysrKysrKysrKysrKysr Cj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyAgICAgIHwgIDMwICsr KysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgICAgICAgICAgfCAgIDQg Ky0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMgICAgICAgICAgfCAyNTcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX2F0 b21pYy5oICAgICAgICAgICAgICAgICB8ICAgMyArCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fY29u bmVjdG9yLmggICAgICAgICAgICAgIHwgIDEzICsrCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fbW9k ZV9jb25maWcuaCAgICAgICAgICAgIHwgIDE0ICsrCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fbW9k ZXNldF9oZWxwZXJfdnRhYmxlcy5oIHwgIDExICsrCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fd3Jp dGViYWNrLmggICAgICAgICAgICAgIHwgIDg5ICsrKysrKysrKysrCj4gPiA+ICBpbmNsdWRlL3Vh cGkvZHJtL2RybV9tb2RlLmggICAgICAgICAgICAgIHwgICAxICsKPiA+ID4gIDEyIGZpbGVzIGNo YW5nZWQsIDU2MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ID4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMKPiA+ID4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fd3JpdGViYWNrLmgKPiA+ID4gCj4gPiA+IGRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1 L2RybS1rbXMucnN0Cj4gPiA+IGluZGV4IDJkY2Y1YjQyMDE1ZC4uZTc1OTBkZDJmNzFlIDEwMDY0 NAo+ID4gPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdAo+ID4gPiArKysgYi9E b2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdAo+ID4gPiBAQCAtMzcwLDYgKzM3MCwxNSBAQCBD b25uZWN0b3IgRnVuY3Rpb25zIFJlZmVyZW5jZQo+ID4gPiAgLi4ga2VybmVsLWRvYzo6IGRyaXZl cnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+ID4gICAgIDpleHBvcnQ6Cj4gPiA+ICAKPiA+ ID4gK1dyaXRlYmFjayBDb25uZWN0b3JzCj4gPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4g PiArCj4gPiA+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV93cml0ZWJhY2su Ywo+ID4gPiArICA6ZG9jOiBvdmVydmlldwo+ID4gPiArCj4gPiA+ICsuLiBrZXJuZWwtZG9jOjog ZHJpdmVycy9ncHUvZHJtL2RybV93cml0ZWJhY2suYwo+ID4gPiArICA6ZXhwb3J0Ogo+ID4gPiAr Cj4gPiA+ICBFbmNvZGVyIEFic3RyYWN0aW9uCj4gPiA+ICA9PT09PT09PT09PT09PT09PT09Cj4g PiA+ICAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4gPiBpbmRleCA1MDA5M2ZmNDQ3OWIuLjNkNzA4OTU5YjIy NCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4gPiBAQCAtMTgsNyArMTgsNyBAQCBkcm0teSAg ICAgICA6PQlkcm1fYXV0aC5vIGRybV9idWZzLm8gZHJtX2NhY2hlLm8gXAo+ID4gPiAgCQlkcm1f ZW5jb2Rlci5vIGRybV9tb2RlX29iamVjdC5vIGRybV9wcm9wZXJ0eS5vIFwKPiA+ID4gIAkJZHJt X3BsYW5lLm8gZHJtX2NvbG9yX21nbXQubyBkcm1fcHJpbnQubyBcCj4gPiA+ICAJCWRybV9kdW1i X2J1ZmZlcnMubyBkcm1fbW9kZV9jb25maWcubyBkcm1fdmJsYW5rLm8gXAo+ID4gPiAtCQlkcm1f c3luY29iai5vIGRybV9sZWFzZS5vCj4gPiA+ICsJCWRybV9zeW5jb2JqLm8gZHJtX2xlYXNlLm8g ZHJtX3dyaXRlYmFjay5vCj4gPiA+ICAKPiA+ID4gIGRybS0kKENPTkZJR19EUk1fTElCX1JBTkRP TSkgKz0gbGliL2RybV9yYW5kb20ubwo+ID4gPiAgZHJtLSQoQ09ORklHX0RSTV9WTSkgKz0gZHJt X3ZtLm8KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPiA+IGluZGV4IDQ2NzMzZDUzNDU4Ny4uMDE5 ZjEzMWZlOGJlIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5j Cj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ID4gQEAgLTMwLDYg KzMwLDcgQEAKPiA+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ID4gPiAgI2luY2x1 ZGUgPGRybS9kcm1fbW9kZS5oPgo+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiA+ ID4gKyNpbmNsdWRlIDxkcm0vZHJtX3dyaXRlYmFjay5oPgo+ID4gPiAgI2luY2x1ZGUgPGxpbnV4 L3N5bmNfZmlsZS5oPgo+ID4gPiAgCj4gPiA+ICAjaW5jbHVkZSAiZHJtX2NydGNfaW50ZXJuYWwu aCIKPiA+ID4gQEAgLTYzOCw2ICs2MzksNDYgQEAgc3RhdGljIHZvaWQgZHJtX2F0b21pY19jcnRj X3ByaW50X3N0YXRlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwKPiA+ID4gIAkJY3J0Yy0+ZnVuY3Mt PmF0b21pY19wcmludF9zdGF0ZShwLCBzdGF0ZSk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gKy8q Kgo+ID4gPiArICogZHJtX2F0b21pY19jb25uZWN0b3JfY2hlY2sgLSBjaGVjayBjb25uZWN0b3Ig c3RhdGUKPiA+ID4gKyAqIEBjb25uZWN0b3I6IGNvbm5lY3RvciB0byBjaGVjawo+ID4gPiArICog QHN0YXRlOiBjb25uZWN0b3Igc3RhdGUgdG8gY2hlY2sKPiA+ID4gKyAqCj4gPiA+ICsgKiBQcm92 aWRlcyBjb3JlIHNhbml0eSBjaGVja3MgZm9yIGNvbm5lY3RvciBzdGF0ZS4KPiA+ID4gKyAqCj4g PiA+ICsgKiBSRVRVUk5TOgo+ID4gPiArICogWmVybyBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG9u IGZhaWx1cmUKPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIGludCBkcm1fYXRvbWljX2Nvbm5lY3Rv cl9jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiArCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9j cnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4gPiArCXN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAq d3JpdGViYWNrX2pvYiA9IHN0YXRlLT53cml0ZWJhY2tfam9iOwo+ID4gPiArCj4gPiA+ICsJaWYg KChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJB Q0spIHx8Cj4gPiA+ICsJICAgICF3cml0ZWJhY2tfam9iKQo+ID4gPiArCQlyZXR1cm4gMDsKPiA+ ID4gKwo+ID4gPiArCWlmICh3cml0ZWJhY2tfam9iLT5mYiAmJiAhc3RhdGUtPmNydGMpIHsKPiA+ ID4gKwkJRFJNX0RFQlVHX0FUT01JQygiW0NPTk5FQ1RPUjolZDolc10gZnJhbWVidWZmZXIgd2l0 aG91dCBDUlRDXG4iLAo+ID4gPiArCQkJCSBjb25uZWN0b3ItPmJhc2UuaWQsIGNvbm5lY3Rvci0+ bmFtZSk7Cj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiAr CWlmIChzdGF0ZS0+Y3J0YykKPiA+ID4gKwkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4 aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUtPnN0YXRlLAo+ID4gPiArCQkJCQkJCQlzdGF0ZS0+Y3J0 Yyk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAod3JpdGViYWNrX2pvYi0+ZmIgJiYgIWNydGNfc3RhdGUt PmFjdGl2ZSkgewo+ID4gCj4gPiBDaGVja2luZyBmb3Igd3JpdGViYWNrX2pvYi0+ZmIgaXMgcmVk dW5kYW50IGhlcmUgYW5kIGFib3ZlIHNpbmNlIGl0J3MgY2hlY2tlZAo+ID4gZmlyc3QgdGhpbmcg YXMgZWFybHkgZXhpdCBjcml0ZXJpYS4KPiAKPiBJIHNvbWVob3cgZG9uJ3Qgc2VlIHRoYXQgY2hl Y2suIFdlIGNoZWNrIGlmICghd3JpdGViYWNfam9iKSBhbmQgdGhlbiBhbGwKPiBvdGhlciBjaGVj a3MgYXJlIGxvZ2ljIGFuZHMgd2l0aCBvdGhlciBjb25kaXRpb25zLCBzbyBJIHRoaW5rIHRoZSBj aGVjawo+IGhlcmUgaXMgc3RpbGwgcmVsZXZhbnQuCgpBaCwgeWVhaCwgdGhlIGZpcnN0IGNoZWNr IGRvZXNuJ3QgY2hlY2sgZm9yIC0+ZmIgKEkgaW1hZ2luZWQgaXQgb24gdGhlIGVuZCBvZgp3cml0 ZWJhY2tfam9iLiBBdCBhbnkgcmF0ZSwgaWYgeW91IGFkZCBhIGNoZWNrIGZvciAhLT5mYiBpbiB0 aGUgZmlyc3QgY29uZGl0aW9uYWwKeW91IGRvbid0IG5lZWQgaXQgaGVyZSBvciBpbiB0aGUgc2Vj b25kIGNoZWNrLgoKPiAKPiA+IAo+ID4gPiArCQlEUk1fREVCVUdfQVRPTUlDKCJbQ09OTkVDVE9S OiVkOiVzXSBoYXMgZnJhbWVidWZmZXIsIGJ1dCBbQ1JUQzolZF0gaXMgb2ZmXG4iLAo+ID4gPiAr CQkJCSBjb25uZWN0b3ItPmJhc2UuaWQsIGNvbm5lY3Rvci0+bmFtZSwKPiA+ID4gKwkJCQkgc3Rh dGUtPmNydGMtPmJhc2UuaWQpOwo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gKwl9Cj4g PiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAgLyoqCj4gPiA+ ICAgKiBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZSAtIGdldCBwbGFuZSBzdGF0ZQo+ID4gPiAg ICogQHN0YXRlOiBnbG9iYWwgYXRvbWljIHN0YXRlIG9iamVjdAo+ID4gPiBAQCAtMTIzMCw2ICsx MjcxLDEyIEBAIHN0YXRpYyBpbnQgZHJtX2F0b21pY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ICAJCQlyZXR1cm4gLUVJTlZBTDsK PiA+ID4gIAkJfQo+ID4gPiAgCQlzdGF0ZS0+Y29udGVudF9wcm90ZWN0aW9uID0gdmFsOwo+ID4g PiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT53cml0ZWJhY2tfZmJfaWRfcHJvcGVy dHkpIHsKPiA+ID4gKwkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBkcm1fZnJhbWVidWZm ZXJfbG9va3VwKGRldiwgTlVMTCwgdmFsKTsKPiA+ID4gKwkJaW50IHJldCA9IGRybV9hdG9taWNf c2V0X3dyaXRlYmFja19mYl9mb3JfY29ubmVjdG9yKHN0YXRlLCBmYik7Cj4gPiA+ICsJCWlmIChm YikKPiA+ID4gKwkJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShmYik7Cj4gPiA+ICsJCXJl dHVybiByZXQ7Cj4gPiA+ICAJfSBlbHNlIGlmIChjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfc2V0 X3Byb3BlcnR5KSB7Cj4gPiA+ICAJCXJldHVybiBjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfc2V0 X3Byb3BlcnR5KGNvbm5lY3RvciwKPiA+ID4gIAkJCQlzdGF0ZSwgcHJvcGVydHksIHZhbCk7Cj4g PiA+IEBAIC0xMzExLDYgKzEzNTgsOSBAQCBkcm1fYXRvbWljX2Nvbm5lY3Rvcl9nZXRfcHJvcGVy dHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gIAkJKnZhbCA9IHN0YXRl LT5zY2FsaW5nX21vZGU7Cj4gPiA+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3It PmNvbnRlbnRfcHJvdGVjdGlvbl9wcm9wZXJ0eSkgewo+ID4gPiAgCQkqdmFsID0gc3RhdGUtPmNv bnRlbnRfcHJvdGVjdGlvbjsKPiA+ID4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ d3JpdGViYWNrX2ZiX2lkX3Byb3BlcnR5KSB7Cj4gPiA+ICsJCS8qIFdyaXRlYmFjayBmcmFtZWJ1 ZmZlciBpcyBvbmUtc2hvdCwgd3JpdGUgYW5kIGZvcmdldCAqLwo+ID4gPiArCQkqdmFsID0gMDsK PiA+ID4gIAl9IGVsc2UgaWYgKGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHkp IHsKPiA+ID4gIAkJcmV0dXJuIGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHko Y29ubmVjdG9yLAo+ID4gPiAgCQkJCXN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKPiA+ID4gQEAgLTE1 MTgsNiArMTU2OCw3NSBAQCBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0b3Ioc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsCj4gPiA+ICB9Cj4gPiA+ICBFWFBPUlRf U1lNQk9MKGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcik7Cj4gPiA+ICAKPiA+ID4g Ky8qCj4gPiA+ICsgKiBkcm1fYXRvbWljX2dldF93cml0ZWJhY2tfam9iIC0gcmV0dXJuIG9yIGFs bG9jYXRlIGEgd3JpdGViYWNrIGpvYgo+ID4gPiArICogQGNvbm5fc3RhdGU6IENvbm5lY3RvciBz dGF0ZSB0byBnZXQgdGhlIGpvYiBmb3IKPiA+ID4gKyAqCj4gPiA+ICsgKiBXcml0ZWJhY2sgam9i cyBoYXZlIGEgZGlmZmVyZW50IGxpZmV0aW1lIHRvIHRoZSBhdG9taWMgc3RhdGUgdGhleSBhcmUK PiA+ID4gKyAqIGFzc29jaWF0ZWQgd2l0aC4gVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiB0YWtl cyBjYXJlIG9mIGFsbG9jYXRpbmcgYSBqb2IKPiA+ID4gKyAqIGlmIHRoZXJlIGlzbid0IHlldCBv bmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25uZWN0b3Igc3RhdGUsIG90aGVyd2lzZQo+ID4gPiAr ICogaXQganVzdCByZXR1cm5zIHRoZSBleGlzdGluZyBqb2IuCj4gPiA+ICsgKgo+ID4gPiArICog UmV0dXJuczogVGhlIHdyaXRlYmFjayBqb2IgZm9yIHRoZSBnaXZlbiBjb25uZWN0b3Igc3RhdGUK PiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqCj4gPiA+ ICtkcm1fYXRvbWljX2dldF93cml0ZWJhY2tfam9iKHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRl ICpjb25uX3N0YXRlKQo+ID4gPiArewo+ID4gPiArCVdBUk5fT04oY29ubl9zdGF0ZS0+Y29ubmVj dG9yLT5jb25uZWN0b3JfdHlwZSAhPQo+ID4gPiArCQlEUk1fTU9ERV9DT05ORUNUT1JfV1JJVEVC QUNLKTsKPiA+ID4gKwo+ID4gPiArCWlmICghY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYikKPiA+ ID4gKwkJY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYiA9Cj4gPiA+ICsJCQlremFsbG9jKHNpemVv ZigqY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYiksIEdGUF9LRVJORUwpOwo+ID4gPiArCj4gPiA+ ICsJcmV0dXJuIGNvbm5fc3RhdGUtPndyaXRlYmFja19qb2I7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gKy8qKgo+ID4gPiArICogZHJtX2F0b21pY19zZXRfd3JpdGViYWNrX2ZiX2Zvcl9jb25uZWN0 b3IgLSBzZXQgd3JpdGViYWNrIGZyYW1lYnVmZmVyCj4gPiA+ICsgKiBAY29ubl9zdGF0ZTogYXRv bWljIHN0YXRlIG9iamVjdCBmb3IgdGhlIGNvbm5lY3Rvcgo+ID4gPiArICogQGZiOiBmYiB0byB1 c2UgZm9yIHRoZSBjb25uZWN0b3IKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGlzIGlzIHVzZWQgdG8g c2V0IHRoZSBmcmFtZWJ1ZmZlciBmb3IgYSB3cml0ZWJhY2sgY29ubmVjdG9yLCB3aGljaCBvdXRw dXRzCj4gPiA+ICsgKiB0byBhIGJ1ZmZlciBpbnN0ZWFkIG9mIGFuIGFjdHVhbCBwaHlzaWNhbCBj b25uZWN0b3IuCj4gPiA+ICsgKiBDaGFuZ2luZyB0aGUgYXNzaWduZWQgZnJhbWVidWZmZXIgcmVx dWlyZXMgdXMgdG8gZ3JhYiBhIHJlZmVyZW5jZSB0byB0aGUgbmV3Cj4gPiA+ICsgKiBmYiBhbmQg ZHJvcCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBvbGQgZmIsIGlmIHRoZXJlIGlzIG9uZS4gVGhpcyBm dW5jdGlvbgo+ID4gPiArICogdGFrZXMgY2FyZSBvZiBhbGwgdGhlc2UgZGV0YWlscyBiZXNpZGVz IHVwZGF0aW5nIHRoZSBwb2ludGVyIGluIHRoZQo+ID4gPiArICogc3RhdGUgb2JqZWN0IGl0c2Vs Zi4KPiA+ID4gKyAqCj4gPiA+ICsgKiBOb3RlOiBUaGUgb25seSB3YXkgY29ubl9zdGF0ZSBjYW4g YWxyZWFkeSBoYXZlIGFuIGZiIHNldCBpcyBpZiB0aGUgY29tbWl0Cj4gPiA+ICsgKiBzZXRzIHRo ZSBwcm9wZXJ0eSBtb3JlIHRoYW4gb25jZS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBTZWUgYWxzbzog ZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCgpCj4gPiA+ICsgKgo+ID4gPiArICogUmV0dXJu czogMCBvbiBzdWNjZXNzCj4gPiA+ICsgKi8KPiA+ID4gK2ludCBkcm1fYXRvbWljX3NldF93cml0 ZWJhY2tfZmJfZm9yX2Nvbm5lY3RvcigKPiA+ID4gKwkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5fc3RhdGUsCj4gPiA+ICsJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+ID4g PiArewo+ID4gPiArCXN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iID0KPiA+ID4gKwkJZHJt X2F0b21pY19nZXRfd3JpdGViYWNrX2pvYihjb25uX3N0YXRlKTsKPiA+ID4gKwlpZiAoIWpvYikK PiA+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsKPiA+ID4gKwlpZiAoam9iLT5mYikKPiA+ ID4gKwkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGpvYi0+ZmIpOwo+ID4gPiArCWlmIChm YikKPiA+ID4gKwkJZHJtX2ZyYW1lYnVmZmVyX3JlZmVyZW5jZShmYik7Cj4gPiA+ICsJam9iLT5m YiA9IGZiOwo+ID4gPiArCj4gPiA+ICsJaWYgKGZiKQo+ID4gPiArCQlEUk1fREVCVUdfQVRPTUlD KCJTZXQgW0ZCOiVkXSBmb3IgY29ubmVjdG9yIHN0YXRlICVwXG4iLAo+ID4gPiArCQkJCSBmYi0+ YmFzZS5pZCwgY29ubl9zdGF0ZSk7Cj4gPiA+ICsJZWxzZQo+ID4gPiArCQlEUk1fREVCVUdfQVRP TUlDKCJTZXQgW05PRkJdIGZvciBjb25uZWN0b3Igc3RhdGUgJXBcbiIsCj4gPiA+ICsJCQkJIGNv bm5fc3RhdGUpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICtFWFBP UlRfU1lNQk9MKGRybV9hdG9taWNfc2V0X3dyaXRlYmFja19mYl9mb3JfY29ubmVjdG9yKTsKPiA+ ID4gKwo+ID4gPiAgLyoqCj4gPiA+ICAgKiBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9jb25uZWN0 b3JzIC0gYWRkIGNvbm5lY3RvcnMgZm9yIGNydGMKPiA+ID4gICAqIEBzdGF0ZTogYXRvbWljIHN0 YXRlCj4gPiA+IEBAIC0xNjM2LDYgKzE3NTUsOCBAQCBpbnQgZHJtX2F0b21pY19jaGVja19vbmx5 KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ID4gIAlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZTsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiA+ ICAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4gPiArCXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uOwo+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0YXRlOwo+ID4gPiAgCWludCBpLCByZXQgPSAwOwo+ID4gPiAgCj4gPiA+ICAJRFJNX0RFQlVH X0FUT01JQygiY2hlY2tpbmcgJXBcbiIsIHN0YXRlKTsKPiA+ID4gQEAgLTE2NTgsNiArMTc3OSwx NSBAQCBpbnQgZHJtX2F0b21pY19jaGVja19vbmx5KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiA+ID4gIAkJfQo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiArCWZvcl9lYWNoX25ld19j b25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm4sIGNvbm5fc3RhdGUsIGkpIHsKPiA+ID4gKwkJ cmV0ID0gZHJtX2F0b21pY19jb25uZWN0b3JfY2hlY2soY29ubiwgY29ubl9zdGF0ZSk7Cj4gPiA+ ICsJCWlmIChyZXQpIHsKPiA+ID4gKwkJCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNUT1I6JWQ6 JXNdIGF0b21pYyBjb3JlIGNoZWNrIGZhaWxlZFxuIiwKPiA+ID4gKwkJCQkJIGNvbm4tPmJhc2Uu aWQsIGNvbm4tPm5hbWUpOwo+ID4gPiArCQkJcmV0dXJuIHJldDsKPiA+ID4gKwkJfQo+ID4gPiAr CX0KPiA+ID4gKwo+ID4gPiAgCWlmIChjb25maWctPmZ1bmNzLT5hdG9taWNfY2hlY2spCj4gPiA+ ICAJCXJldCA9IGNvbmZpZy0+ZnVuY3MtPmF0b21pY19jaGVjayhzdGF0ZS0+ZGV2LCBzdGF0ZSk7 Cj4gPiA+ICAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+ID4gaW5kZXgg YWUzY2JmZTllMDFjLi4xMmI5MTA3NTVkODQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jCj4gPiA+IEBAIC0zMCw2ICszMCw3IEBACj4gPiA+ICAjaW5jbHVkZSA8 ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KPiA+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVs cGVyLmg+Cj4gPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPiA+ICsj aW5jbHVkZSA8ZHJtL2RybV93cml0ZWJhY2suaD4KPiA+ID4gICNpbmNsdWRlIDxsaW51eC9kbWEt ZmVuY2UuaD4KPiA+ID4gIAo+ID4gPiAgI2luY2x1ZGUgImRybV9jcnRjX2hlbHBlcl9pbnRlcm5h bC5oIgo+ID4gPiBAQCAtMTE1OSw2ICsxMTYwLDI3IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJf Y29tbWl0X21vZGVzZXRfZGlzYWJsZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gIH0K PiA+ID4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZGlz YWJsZXMpOwo+ID4gPiAgCj4gPiA+ICtzdGF0aWMgdm9pZCBjb21taXRfd3JpdGViYWNrcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gPiA+ICsJ c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlOwo+ID4gPiArCWludCBp Owo+ID4gPiArCj4gPiA+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3Rh dGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUsIGkpIHsKPiA+ID4gKwkJY29uc3Qgc3RydWN0 IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpmdW5jczsKPiA+ID4gKwo+ID4gPiArCQlmdW5j cyA9IGNvbm5lY3Rvci0+aGVscGVyX3ByaXZhdGU7Cj4gPiA+ICsKPiA+ID4gKwkJaWYgKG5ld19j b25uX3N0YXRlLT53cml0ZWJhY2tfam9iICYmCj4gPiA+ICsJCSAgICBuZXdfY29ubl9zdGF0ZS0+ d3JpdGViYWNrX2pvYi0+ZmIpIHsKPiA+ID4gKwkJCVdBUk5fT04oY29ubmVjdG9yLT5jb25uZWN0 b3JfdHlwZSAhPQo+ID4gPiArCQkJCURSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spOwo+ID4g PiArCQkJZnVuY3MtPmF0b21pY19jb21taXQoY29ubmVjdG9yLAo+ID4gPiArCQkJCQkgICAgIG5l d19jb25uX3N0YXRlLT53cml0ZWJhY2tfam9iKTsKPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4g K30KPiA+ID4gKwo+ID4gPiAgLyoqCj4gPiA+ICAgKiBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRf bW9kZXNldF9lbmFibGVzIC0gbW9kZXNldCBjb21taXQgdG8gZW5hYmxlIG91dHB1dHMKPiA+ID4g ICAqIEBkZXY6IERSTSBkZXZpY2UKPiA+ID4gQEAgLTEyMzgsNiArMTI2MCw4IEBAIHZvaWQgZHJt X2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ID4gPiAgCj4gPiA+ICAJCWRybV9icmlkZ2VfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7 Cj4gPiA+ICAJfQo+ID4gPiArCj4gPiA+ICsJY29tbWl0X3dyaXRlYmFja3MoZGV2LCBvbGRfc3Rh dGUpOwo+ID4gPiAgfQo+ID4gPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jb21t aXRfbW9kZXNldF9lbmFibGVzKTsKPiA+ID4gIAo+ID4gPiBAQCAtMzYyNyw2ICszNjUxLDkgQEAg X19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ICAJaWYgKHN0YXRlLT5jcnRjKQo+ID4gPiAgCQlk cm1fY29ubmVjdG9yX2dldChjb25uZWN0b3IpOwo+ID4gPiAgCXN0YXRlLT5jb21taXQgPSBOVUxM Owo+ID4gPiArCj4gPiA+ICsJLyogRG9uJ3QgY29weSBvdmVyIGEgd3JpdGViYWNrIGpvYiwgdGhl eSBhcmUgdXNlZCBvbmx5IG9uY2UgKi8KPiA+ID4gKwlzdGF0ZS0+d3JpdGViYWNrX2pvYiA9IE5V TEw7Cj4gPiA+ICB9Cj4gPiA+ICBFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19oZWxwZXJfY29u bmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSk7Cj4gPiA+ICAKPiA+ID4gQEAgLTM3NTYsNiArMzc4Myw5 IEBAIF9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlKQo+ID4gPiAgCj4gPiA+ICAJaWYgKHN0YXRlLT5jb21t aXQpCj4gPiA+ICAJCWRybV9jcnRjX2NvbW1pdF9wdXQoc3RhdGUtPmNvbW1pdCk7Cj4gPiA+ICsK PiA+ID4gKwlpZiAoc3RhdGUtPndyaXRlYmFja19qb2IpCj4gPiA+ICsJCWRybV93cml0ZWJhY2tf Y2xlYW51cF9qb2Ioc3RhdGUtPndyaXRlYmFja19qb2IpOwo+ID4gPiAgfQo+ID4gPiAgRVhQT1JU X1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlKTsKPiA+ ID4gIAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+ID4gaW5kZXggMTZiOWMzODEwYWYy Li5hZGQ0N2YwNmFlNzAgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29u bmVjdG9yLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+ID4g PiBAQCAtODcsNiArODcsNyBAQCBzdGF0aWMgc3RydWN0IGRybV9jb25uX3Byb3BfZW51bV9saXN0 IGRybV9jb25uZWN0b3JfZW51bV9saXN0W10gPSB7Cj4gPiA+ICAJeyBEUk1fTU9ERV9DT05ORUNU T1JfVklSVFVBTCwgIlZpcnR1YWwiIH0sCj4gPiA+ICAJeyBEUk1fTU9ERV9DT05ORUNUT1JfRFNJ LCAiRFNJIiB9LAo+ID4gPiAgCXsgRFJNX01PREVfQ09OTkVDVE9SX0RQSSwgIkRQSSIgfSwKPiA+ ID4gKwl7IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0ssICJXcml0ZWJhY2siIH0sCj4gPiA+ ICB9Owo+ID4gPiAgCj4gPiA+ICB2b2lkIGRybV9jb25uZWN0b3JfaWRhX2luaXQodm9pZCkKPiA+ ID4gQEAgLTI0OSw3ICsyNTAsOCBAQCBpbnQgZHJtX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gPiA+ICAJY29uZmlnLT5udW1fY29ubmVjdG9yKys7Cj4gPiA+ICAJc3Bp bl91bmxvY2tfaXJxKCZjb25maWctPmNvbm5lY3Rvcl9saXN0X2xvY2spOwo+ID4gPiAgCj4gPiA+ IC0JaWYgKGNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9WSVJUVUFMKQo+ID4g PiArCWlmIChjb25uZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCAmJgo+ ID4gPiArCSAgICBjb25uZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfV1JJVEVCQUNL KQo+ID4gPiAgCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAo+ ID4gPiAgCQkJCQkgICAgICBjb25maWctPmVkaWRfcHJvcGVydHksCj4gPiA+ICAJCQkJCSAgICAg IDApOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV93cml0ZWJhY2suYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMKPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5kYTYxZjkyOWNiYzMKPiA+ID4gLS0tIC9kZXYv bnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3dyaXRlYmFjay5jCj4gPiA+IEBA IC0wLDAgKzEsMjU3IEBACj4gPiA+ICsvKgo+ID4gPiArICogKEMpIENPUFlSSUdIVCAyMDE2IEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ID4gPiArICogQXV0aG9yOiBCcmlhbiBT dGFya2V5IDxicmlhbi5zdGFya2V5QGFybS5jb20+Cj4gPiA+ICsgKgo+ID4gPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmUgYW5kIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUg dGVybXMgb2YgdGhlCj4gPiA+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9u IDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCj4gPiA+ICsgKiBGb3VuZGF0aW9u LCBhbmQgYW55IHVzZSBieSB5b3Ugb2YgdGhpcyBwcm9ncmFtIGlzIHN1YmplY3QgdG8gdGhlIHRl cm1zCj4gPiA+ICsgKiBvZiBzdWNoIEdOVSBsaWNlbmNlLgo+ID4gPiArICovCj4gPiA+ICsKPiA+ ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX21v ZGVzZXRfaGVscGVyX3Z0YWJsZXMuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX3Byb3BlcnR5 Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV93cml0ZWJhY2suaD4KPiA+ID4gKyNpbmNsdWRl IDxkcm0vZHJtUC5oPgo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIERPQzogb3ZlcnZpZXcK PiA+ID4gKyAqCj4gPiA+ICsgKiBXcml0ZWJhY2sgY29ubmVjdG9ycyBhcmUgdXNlZCB0byBleHBv c2UgaGFyZHdhcmUgd2hpY2ggY2FuIHdyaXRlIHRoZSBvdXRwdXQKPiA+ID4gKyAqIGZyb20gYSBD UlRDIHRvIGEgbWVtb3J5IGJ1ZmZlci4gVGhleSBhcmUgdXNlZCBhbmQgYWN0IHNpbWlsYXJseSB0 byBvdGhlcgo+ID4gPiArICogdHlwZXMgb2YgY29ubmVjdG9ycywgd2l0aCBzb21lIGltcG9ydGFu dCBkaWZmZXJlbmNlczoKPiA+ID4gKyAqICAtIFdyaXRlYmFjayBjb25uZWN0b3JzIGRvbid0IHBy b3ZpZGUgYSB3YXkgdG8gb3V0cHV0IHZpc3VhbGx5IHRvIHRoZSB1c2VyLgo+ID4gPiArICogIC0g V3JpdGViYWNrIGNvbm5lY3RvcnMgc2hvdWxkIGFsd2F5cyByZXBvcnQgYXMgImRpc2Nvbm5lY3Rl ZCIgKHNvIHRoYXQKPiA+ID4gKyAqICAgIGNsaWVudHMgd2hpY2ggZG9uJ3QgdW5kZXJzdGFuZCB0 aGVtIHdpbGwgaWdub3JlIHRoZW0pLgo+ID4gCj4gPiBIYXZlIHdlIGNvbnNpZGVyZWQgaGlkaW5n IHdyaXRlYmFjayBiZWhpbmQgYSBjbGllbnQgY2FwIGluc3RlYWQ/Cj4gCj4gWWVzLCBjaGFuZ2Vs b2cgc2F5cyB0aGF0IHRoZSBjbGllbnQgY2FwIHdhcyBkcm9wcGVkIGluIHYyIGJhc2VkIG9uCj4g ZmVlZGJhY2sgKGFzIGZhciBhcyBJIHJlbWVtYmVyKS4gCj4gCj4gPiAKPiA+ID4gKyAqICAtIFdy aXRlYmFjayBjb25uZWN0b3JzIGRvbid0IGhhdmUgRURJRC4KPiA+ID4gKyAqCj4gPiA+ICsgKiBB IGZyYW1lYnVmZmVyIG1heSBvbmx5IGJlIGF0dGFjaGVkIHRvIGEgd3JpdGViYWNrIGNvbm5lY3Rv ciB3aGVuIHRoZQo+ID4gPiArICogY29ubmVjdG9yIGlzIGF0dGFjaGVkIHRvIGEgQ1JUQy4gVGhl IFdSSVRFQkFDS19GQl9JRCBwcm9wZXJ0eSB3aGljaCBzZXRzIHRoZQo+ID4gPiArICogZnJhbWVi dWZmZXIgYXBwbGllcyBvbmx5IHRvIGEgc2luZ2xlIGNvbW1pdCAoc2VlIGJlbG93KS4gQSBmcmFt ZWJ1ZmZlciBtYXkKPiA+ID4gKyAqIG5vdCBiZSBhdHRhY2hlZCB3aGlsZSB0aGUgQ1JUQyBpcyBv ZmYuCj4gPiA+ICsgKgo+ID4gPiArICogV3JpdGViYWNrIGNvbm5lY3RvcnMgaGF2ZSBzb21lIGFk ZGl0aW9uYWwgcHJvcGVydGllcywgd2hpY2ggdXNlcnNwYWNlCj4gPiA+ICsgKiBjYW4gdXNlIHRv IHF1ZXJ5IGFuZCBjb250cm9sIHRoZW06Cj4gPiA+ICsgKgo+ID4gPiArICogICJXUklURUJBQ0tf RkJfSUQiOgo+ID4gPiArICoJV3JpdGUtb25seSBvYmplY3QgcHJvcGVydHkgc3RvcmluZyBhIERS TV9NT0RFX09CSkVDVF9GQjogaXQgc3RvcmVzIHRoZQo+ID4gPiArICoJZnJhbWVidWZmZXIgdG8g YmUgd3JpdHRlbiBieSB0aGUgd3JpdGViYWNrIGNvbm5lY3Rvci4gVGhpcyBwcm9wZXJ0eSBpcwo+ ID4gPiArICoJc2ltaWxhciB0byB0aGUgRkJfSUQgcHJvcGVydHkgb24gcGxhbmVzLCBidXQgd2ls bCBhbHdheXMgcmVhZCBhcyB6ZXJvCj4gPiA+ICsgKglhbmQgaXMgbm90IHByZXNlcnZlZCBhY3Jv c3MgY29tbWl0cy4KPiA+ID4gKyAqCVVzZXJzcGFjZSBtdXN0IHNldCB0aGlzIHByb3BlcnR5IHRv IGFuIG91dHB1dCBidWZmZXIgZXZlcnkgdGltZSBpdAo+ID4gPiArICoJd2lzaGVzIHRoZSBidWZm ZXIgdG8gZ2V0IGZpbGxlZC4KPiA+ID4gKyAqCj4gPiA+ICsgKiAgIldSSVRFQkFDS19QSVhFTF9G T1JNQVRTIjoKPiA+ID4gKyAqCUltbXV0YWJsZSBibG9iIHByb3BlcnR5IHRvIHN0b3JlIHRoZSBz dXBwb3J0ZWQgcGl4ZWwgZm9ybWF0cyB0YWJsZS4gVGhlCj4gPiA+ICsgKglkYXRhIGlzIGFuIGFy cmF5IG9mIHUzMiBEUk1fRk9STUFUXyogZm91cmNjIHZhbHVlcy4KPiA+ID4gKyAqCVVzZXJzcGFj ZSBjYW4gdXNlIHRoaXMgYmxvYiB0byBmaW5kIG91dCB3aGF0IHBpeGVsIGZvcm1hdHMgYXJlIHN1 cHBvcnRlZAo+ID4gPiArICoJYnkgdGhlIGNvbm5lY3RvcidzIHdyaXRlYmFjayBlbmdpbmUuCj4g PiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArc3RhdGljIGJvb2wgY3JlYXRlX3dyaXRlYmFja19wcm9w ZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRy bV9wcm9wZXJ0eSAqcHJvcDsKPiA+ID4gKwo+ID4gPiArCWlmICghZGV2LT5tb2RlX2NvbmZpZy53 cml0ZWJhY2tfZmJfaWRfcHJvcGVydHkpIHsKPiA+IAo+ID4gU29tZXdoYXQgYW4gYXNpZGUsIGJ1 dCB3ZSBzaG91bGQgcHJvYmFibHkgY29tZSB1cCB3aXRoIG1vcmUgZm9ybWFsIHJ1bGVzIG9uCj4g PiB3aGVyZSB0byBzdGljayBwcm9wZXJ0aWVzLiBXZSBoYXZlIHNvbWUgaW4gZHJtX2Nvbm5lY3Rv ciwgd2hpY2ggSSBpbnRlcnByZXQgYXMKPiA+ICJjb25uZWN0b3Itb25seSBwcm9wZXJ0aWVzIiwg YnV0IHdlIGFsc28gaGF2ZSBhIGJ1bmNoIGluIG1vZGVfY29uZmlnLgo+ID4gCj4gPiBGb3Igb3B0 aW9uYWwgcHJvcGVydGllcyB3aGljaCB3aWxsIGdlbmVyYWxseSBvbmx5IGFwcGx5IHRvIG9uZSBj b25uZWN0b3Igb24gYQo+ID4gc3lzdGVtLCBJJ2QgYmUgaW5jbGluZWQgdG8gcHV0IGl0IGluIGNv bm5lY3Rvci4gCj4gCj4gSSBjYW4gbW92ZSB0aGUgd3JpdGViYWNrLXJlbGF0ZWQgcHJvcGVydGll cyBpbnRvIHRoZSBjb25uZWN0b3IgaW4gdGhlCj4gbmV4dCBzZXJpZXMuCj4gCgpFaXRoZXIgd2F5 IHdvcmtzIGZvciBtZSwgbm8gbmVlZCB0byBkbyB0aGlzIGlmIHlvdSdyZSBoYXBweSB3aXRoIGl0 LCBJIHdhcyBqdXN0CmlkbHkgbXVzaW5nLgoKPiAKPiA+IAo+ID4gPiArCQlwcm9wID0gZHJtX3By b3BlcnR5X2NyZWF0ZV9vYmplY3QoZGV2LCBEUk1fTU9ERV9QUk9QX0FUT01JQywKPiA+ID4gKwkJ CQkJCSAgIldSSVRFQkFDS19GQl9JRCIsCj4gPiA+ICsJCQkJCQkgIERSTV9NT0RFX09CSkVDVF9G Qik7Cj4gPiA+ICsJCWlmICghcHJvcCkKPiA+ID4gKwkJCXJldHVybiBmYWxzZTsKPiA+ID4gKwkJ ZGV2LT5tb2RlX2NvbmZpZy53cml0ZWJhY2tfZmJfaWRfcHJvcGVydHkgPSBwcm9wOwo+ID4gPiAr CX0KPiA+ID4gKwo+ID4gPiArCWlmICghZGV2LT5tb2RlX2NvbmZpZy53cml0ZWJhY2tfcGl4ZWxf Zm9ybWF0c19wcm9wZXJ0eSkgewo+ID4gPiArCQlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZShk ZXYsIERSTV9NT0RFX1BST1BfQkxPQiB8IERSTV9NT0RFX1BST1BfSU1NVVRBQkxFLAo+ID4gPiAr CQkJCQkgICAiV1JJVEVCQUNLX1BJWEVMX0ZPUk1BVFMiLCAwKTsKPiA+IAo+ID4gRG9lcyBpdCBt YWtlIHNlbnNlIHRvIGV4cG9zZSB0aGUgZm9ybWF0cyBpZiB1L3MgZG9lc24ndCBzdXBwb3J0IGF0 b21pYyBhbmQgY2FuJ3QKPiA+IHVzZSB3cml0ZWJhY2s/IFBlcmhhcHMgdGhpcyBzaG91bGQgYWxz byBiZSBEUk1fTU9ERV9QUk9QX0FUT01JQy4KPiAKPiBBZ3JlZSwgcHJvYmFibHkgYWxsIHRoZSB3 cml0ZWJhY2sgcHJvcGVydGllcyBzaG91bGQgb25seSBiZSBhdmFpbGFibGUgaWYKPiB0aGUgY2xp ZW50IHNlbGVjdHMgRFJNX01PREVfUFJPUF9BVE9NSUMuCj4gCj4gPiAKPiA+IAo+ID4gPiArCQlp ZiAoIXByb3ApCj4gPiA+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJCWRldi0+bW9kZV9jb25m aWcud3JpdGViYWNrX3BpeGVsX2Zvcm1hdHNfcHJvcGVydHkgPSBwcm9wOwo+ID4gPiArCX0KPiA+ ID4gKwo+ID4gPiArCXJldHVybiB0cnVlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGRybV93cml0ZWJhY2tfZW5jb2Rlcl9mdW5j cyA9IHsKPiA+ID4gKwkuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAsCj4gPiA+ICt9Owo+ ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQg LSBJbml0aWFsaXplIGEgd3JpdGViYWNrIGNvbm5lY3RvciBhbmQgaXRzIHByb3BlcnRpZXMKPiA+ ID4gKyAqIEBkZXY6IERSTSBkZXZpY2UKPiA+ID4gKyAqIEB3Yl9jb25uZWN0b3I6IFdyaXRlYmFj ayBjb25uZWN0b3IgdG8gaW5pdGlhbGl6ZQo+ID4gPiArICogQGNvbl9mdW5jczogQ29ubmVjdG9y IGZ1bmNzIHZ0YWJsZQo+ID4gPiArICogQGVuY19oZWxwZXJfZnVuY3M6IEVuY29kZXIgaGVscGVy IGZ1bmNzIHZ0YWJsZSB0byBiZSB1c2VkIGJ5IHRoZSBpbnRlcm5hbCBlbmNvZGVyCj4gPiA+ICsg KiBAZm9ybWF0czogQXJyYXkgb2Ygc3VwcG9ydGVkIHBpeGVsIGZvcm1hdHMgZm9yIHRoZSB3cml0 ZWJhY2sgZW5naW5lCj4gPiA+ICsgKiBAbl9mb3JtYXRzOiBMZW5ndGggb2YgdGhlIGZvcm1hdHMg YXJyYXkKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdGhlIHdyaXRl YmFjay1jb25uZWN0b3Itc3BlY2lmaWMgcHJvcGVydGllcyBpZiB0aGV5Cj4gPiA+ICsgKiBoYXZl IG5vdCBiZWVuIGFscmVhZHkgY3JlYXRlZCwgaW5pdGlhbGl6ZXMgdGhlIGNvbm5lY3RvciBhcwo+ ID4gPiArICogdHlwZSBEUk1fTU9ERV9DT05ORUNUT1JfV1JJVEVCQUNLLCBhbmQgY29ycmVjdGx5 IGluaXRpYWxpemVzIHRoZSBwcm9wZXJ0eQo+ID4gPiArICogdmFsdWVzLiBJdCB3aWxsIGFsc28g Y3JlYXRlIGFuIGludGVybmFsIGVuY29kZXIgYXNzb2NpYXRlZCB3aXRoIHRoZQo+ID4gPiArICog ZHJtX3dyaXRlYmFja19jb25uZWN0b3IgYW5kIHNldCBpdCB0byB1c2UgdGhlIEBlbmNfaGVscGVy X2Z1bmNzIHZ0YWJsZSBmb3IKPiA+ID4gKyAqIHRoZSBlbmNvZGVyIGhlbHBlci4KPiA+ID4gKyAq Cj4gPiA+ICsgKiBEcml2ZXJzIHNob3VsZCBhbHdheXMgdXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVh ZCBvZiBkcm1fY29ubmVjdG9yX2luaXQoKSB0bwo+ID4gPiArICogc2V0IHVwIHdyaXRlYmFjayBj b25uZWN0b3JzLgo+ID4gPiArICoKPiA+ID4gKyAqIFJldHVybnM6IDAgb24gc3VjY2Vzcywgb3Ig YSBuZWdhdGl2ZSBlcnJvciBjb2RlCj4gPiA+ICsgKi8KPiA+ID4gK2ludCBkcm1fd3JpdGViYWNr X2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICsJCQkJIHN0cnVj dCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yLAo+ID4gPiArCQkJCSBjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyAqY29uX2Z1bmNzLAo+ID4gPiArCQkJCSBjb25z dCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzICplbmNfaGVscGVyX2Z1bmNzLAo+ID4g PiArCQkJCSBjb25zdCB1MzIgKmZvcm1hdHMsIGludCBuX2Zvcm1hdHMpCj4gPiA+ICt7Cj4gPiA+ ICsJaW50IHJldDsKPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2I7Cj4gPiA+ ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZ3Yl9jb25uZWN0b3ItPmJhc2U7 Cj4gPiA+ICsJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25m aWc7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIWNyZWF0ZV93cml0ZWJhY2tfcHJvcGVydGllcyhkZXYp KQo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gKwo+ID4gPiArCWJsb2IgPSBkcm1fcHJv cGVydHlfY3JlYXRlX2Jsb2IoZGV2LCBuX2Zvcm1hdHMgKiBzaXplb2YoKmZvcm1hdHMpLAo+ID4g PiArCQkJCQlmb3JtYXRzKTsKPiA+ID4gKwlpZiAoSVNfRVJSKGJsb2IpKQo+ID4gPiArCQlyZXR1 cm4gUFRSX0VSUihibG9iKTsKPiA+ID4gKwo+ID4gPiArCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQo JndiX2Nvbm5lY3Rvci0+ZW5jb2RlciwgZW5jX2hlbHBlcl9mdW5jcyk7Cj4gPiA+ICsJcmV0ID0g ZHJtX2VuY29kZXJfaW5pdChkZXYsICZ3Yl9jb25uZWN0b3ItPmVuY29kZXIsCj4gPiA+ICsJCQkg ICAgICAgJmRybV93cml0ZWJhY2tfZW5jb2Rlcl9mdW5jcywKPiA+ID4gKwkJCSAgICAgICBEUk1f TU9ERV9FTkNPREVSX1ZJUlRVQUwsIE5VTEwpOwo+ID4gPiArCWlmIChyZXQpCj4gPiA+ICsJCWdv dG8gZmFpbDsKPiA+ID4gKwo+ID4gPiArCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAw Owo+ID4gPiArCj4gPiA+ICsJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRldiwgY29ubmVjdG9y LCBjb25fZnVuY3MsCj4gPiA+ICsJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spOwo+ ID4gPiArCWlmIChyZXQpCj4gPiA+ICsJCWdvdG8gY29ubmVjdG9yX2ZhaWw7Cj4gPiA+ICsKPiA+ ID4gKwlyZXQgPSBkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLAo+ ID4gPiArCQkJCQkJJndiX2Nvbm5lY3Rvci0+ZW5jb2Rlcik7Cj4gPiA+ICsJaWYgKHJldCkKPiA+ ID4gKwkJZ290byBhdHRhY2hfZmFpbDsKPiA+ID4gKwo+ID4gPiArCUlOSVRfTElTVF9IRUFEKCZ3 Yl9jb25uZWN0b3ItPmpvYl9xdWV1ZSk7Cj4gPiA+ICsJc3Bpbl9sb2NrX2luaXQoJndiX2Nvbm5l Y3Rvci0+am9iX2xvY2spOwo+ID4gPiArCj4gPiA+ICsJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVy dHkoJmNvbm5lY3Rvci0+YmFzZSwKPiA+ID4gKwkJCQkgICBjb25maWctPndyaXRlYmFja19mYl9p ZF9wcm9wZXJ0eSwgMCk7Cj4gPiA+ICsKPiA+ID4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0 eSgmY29ubmVjdG9yLT5iYXNlLAo+ID4gPiArCQkJCSAgIGNvbmZpZy0+d3JpdGViYWNrX3BpeGVs X2Zvcm1hdHNfcHJvcGVydHksCj4gPiA+ICsJCQkJICAgYmxvYi0+YmFzZS5pZCk7Cj4gPiA+ICsJ d2JfY29ubmVjdG9yLT5waXhlbF9mb3JtYXRzX2Jsb2JfcHRyID0gYmxvYjsKPiA+ID4gKwo+ID4g PiArCXJldHVybiAwOwo+ID4gPiArCj4gPiA+ICthdHRhY2hfZmFpbDoKPiA+ID4gKwlkcm1fY29u bmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKPiA+ID4gK2Nvbm5lY3Rvcl9mYWlsOgo+ID4gPiAr CWRybV9lbmNvZGVyX2NsZWFudXAoJndiX2Nvbm5lY3Rvci0+ZW5jb2Rlcik7Cj4gPiA+ICtmYWls Ogo+ID4gPiArCWRybV9wcm9wZXJ0eV91bnJlZmVyZW5jZV9ibG9iKGJsb2IpOwo+ID4gPiArCXJl dHVybiByZXQ7Cj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MKGRybV93cml0ZWJhY2tfY29u bmVjdG9yX2luaXQpOwo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIGRybV93cml0ZWJhY2tf cXVldWVfam9iIC0gUXVldWUgYSB3cml0ZWJhY2sgam9iIGZvciBsYXRlciBzaWduYWxsaW5nCj4g PiA+ICsgKiBAd2JfY29ubmVjdG9yOiBUaGUgd3JpdGViYWNrIGNvbm5lY3RvciB0byBxdWV1ZSBh IGpvYiBvbgo+ID4gPiArICogQGpvYjogVGhlIGpvYiB0byBxdWV1ZQo+ID4gPiArICoKPiA+ID4g KyAqIFRoaXMgZnVuY3Rpb24gYWRkcyBhIGpvYiB0byB0aGUgam9iX3F1ZXVlIGZvciBhIHdyaXRl YmFjayBjb25uZWN0b3IuIEl0Cj4gPiA+ICsgKiBzaG91bGQgYmUgY29uc2lkZXJlZCB0byB0YWtl IG93bmVyc2hpcCBvZiB0aGUgd3JpdGViYWNrIGpvYiwgYW5kIHNvIGFueSBvdGhlcgo+ID4gPiAr ICogcmVmZXJlbmNlcyB0byB0aGUgam9iIG11c3QgYmUgY2xlYXJlZCBhZnRlciBjYWxsaW5nIHRo aXMgZnVuY3Rpb24uCj4gPiA+ICsgKgo+ID4gPiArICogRHJpdmVycyBtdXN0IGVuc3VyZSB0aGF0 IGZvciBhIGdpdmVuIHdyaXRlYmFjayBjb25uZWN0b3IsIGpvYnMgYXJlIHF1ZXVlZCBpbgo+ID4g PiArICogZXhhY3RseSB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IHdpbGwgYmUgY29tcGxldGVkIGJ5 IHRoZSBoYXJkd2FyZSAoYW5kCj4gPiA+ICsgKiBzaWduYWxlZCB2aWEgZHJtX3dyaXRlYmFja19z aWduYWxfY29tcGxldGlvbikuCj4gPiA+ICsgKgo+ID4gPiArICogRm9yIGV2ZXJ5IGNhbGwgdG8g ZHJtX3dyaXRlYmFja19xdWV1ZV9qb2IoKSB0aGVyZSBtdXN0IGJlIGV4YWN0bHkgb25lIGNhbGwg dG8KPiA+ID4gKyAqIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oKQo+ID4gPiArICoK PiA+ID4gKyAqIFNlZSBhbHNvOiBkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKCkKPiA+ ID4gKyAqLwo+ID4gPiArdm9pZCBkcm1fd3JpdGViYWNrX3F1ZXVlX2pvYihzdHJ1Y3QgZHJtX3dy aXRlYmFja19jb25uZWN0b3IgKndiX2Nvbm5lY3RvciwKPiA+ID4gKwkJCSAgICAgc3RydWN0IGRy bV93cml0ZWJhY2tfam9iICpqb2IpCj4gPiA+ICt7Cj4gPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFn czsKPiA+ID4gKwo+ID4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZ3Yl9jb25uZWN0b3ItPmpvYl9s b2NrLCBmbGFncyk7Cj4gPiA+ICsJbGlzdF9hZGRfdGFpbCgmam9iLT5saXN0X2VudHJ5LCAmd2Jf Y29ubmVjdG9yLT5qb2JfcXVldWUpOwo+ID4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJndi X2Nvbm5lY3Rvci0+am9iX2xvY2ssIGZsYWdzKTsKPiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1C T0woZHJtX3dyaXRlYmFja19xdWV1ZV9qb2IpOwo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAq IGRybV93cml0ZWJhY2tfY2xlYW51cF9qb2IgLSBDbGVhbnVwIGFuZCBmcmVlIGEgd3JpdGViYWNr IGpvYgo+ID4gPiArICogQGpvYjogVGhlIHdyaXRlYmFjayBqb2IgdG8gZnJlZQo+ID4gPiArICoK PiA+ID4gKyAqIERyb3BzIGFueSByZWZlcmVuY2VzIGhlbGQgYnkgdGhlIHdyaXRlYmFjayBqb2Is IGFuZCBmcmVlcyB0aGUgc3RydWN0dXJlLgo+ID4gPiArICovCj4gPiA+ICt2b2lkIGRybV93cml0 ZWJhY2tfY2xlYW51cF9qb2Ioc3RydWN0IGRybV93cml0ZWJhY2tfam9iICpqb2IpCj4gPiA+ICt7 Cj4gPiA+ICsJaWYgKCFqb2IpCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiArCWlmIChq b2ItPmZiKQo+ID4gPiArCQlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2Uoam9iLT5mYik7Cj4g PiA+ICsJa2ZyZWUoam9iKTsKPiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1CT0woZHJtX3dyaXRl YmFja19jbGVhbnVwX2pvYik7Cj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ICsgKiBAY2xlYW51cF93 b3JrOiBkZWZlcnJlZCBjbGVhbnVwIG9mIGEgd3JpdGViYWNrIGpvYgo+ID4gPiArICoKPiA+ID4g KyAqIFRoZSBqb2IgY2Fubm90IGJlIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gZHJtX3dyaXRlYmFj a19zaWduYWxfY29tcGxldGlvbiwKPiA+ID4gKyAqIGJlY2F1c2UgaXQgbWF5IGJlIGNhbGxlZCBp biBpbnRlcnJ1cHQgY29udGV4dC4gRHJvcHBpbmcgdGhlIGZyYW1lYnVmZmVyCj4gPiA+ICsgKiBy ZWZlcmVuY2UgY2FuIHNsZWVwLCBhbmQgc28gdGhlIGNsZWFudXAgaXMgZGVmZXJyZWQgdG8gYSB3 b3JrcXVldWUuCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyB2b2lkIGNsZWFudXBfd29yayhzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV93cml0ZWJh Y2tfam9iICpqb2IgPSBjb250YWluZXJfb2Yod29yaywKPiA+ID4gKwkJCQkJCSAgICAgc3RydWN0 IGRybV93cml0ZWJhY2tfam9iLAo+ID4gPiArCQkJCQkJICAgICBjbGVhbnVwX3dvcmspOwo+ID4g PiArCWRybV93cml0ZWJhY2tfY2xlYW51cF9qb2Ioam9iKTsKPiA+IAo+ID4gVElMIHRoYXQgeW91 IGNhbiBmcmVlIHdvcmsgd2hpbGUgdXNpbmcgaXQuCj4gCj4gV2FzIG5vdCBhd2FyZSB0aGF0IGl0 IGlzIHBvc3NpYmxlLiBJIGNhbiB1cGRhdGUgdGhlIGNvZGUgdG8gZG8gaXQuCgpUaGF0J3Mgd2hh dCdzIGhhcHBlbmluZyBub3csIGFmYWljdC4gZHJtX3dyaXRlYmFja19jbGVhbnVwX2pvYigpIGZy ZWVzIGpvYiwgd2hpY2gKY29udGFpbnMgd29yayBpbiB0aGlzIGZ1bmN0aW9uLgoKU2VhbgoKPiAK PiBUaGFua3MgZm9yIHRoZSBmZWVkYmFjayBhbmQgcmV2aWV3IQo+IAo+IEJlc3QgcmVnYXJkcywK PiBMaXZpdQo+IAo+ID4gCj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogZHJt X3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbiAtIFNpZ25hbCB0aGUgY29tcGxldGlvbiBvZiBh IHdyaXRlYmFjayBqb2IKPiA+ID4gKyAqIEB3Yl9jb25uZWN0b3I6IFRoZSB3cml0ZWJhY2sgY29u bmVjdG9yIHdob3NlIGpvYiBpcyBjb21wbGV0ZQo+ID4gPiArICoKPiA+ID4gKyAqIERyaXZlcnMg c2hvdWxkIGNhbGwgdGhpcyB0byBzaWduYWwgdGhlIGNvbXBsZXRpb24gb2YgYSBwcmV2aW91c2x5 IHF1ZXVlZAo+ID4gPiArICogd3JpdGViYWNrIGpvYi4gSXQgc2hvdWxkIGJlIGNhbGxlZCBhcyBz b29uIGFzIHBvc3NpYmxlIGFmdGVyIHRoZSBoYXJkd2FyZQo+ID4gPiArICogaGFzIGZpbmlzaGVk IHdyaXRpbmcsIGFuZCBtYXkgYmUgY2FsbGVkIGZyb20gaW50ZXJydXB0IGNvbnRleHQuCj4gPiA+ ICsgKiBJdCBpcyB0aGUgZHJpdmVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgZm9y IGEgZ2l2ZW4gY29ubmVjdG9yLCB0aGUKPiA+ID4gKyAqIGhhcmR3YXJlIGNvbXBsZXRlcyB3cml0 ZWJhY2sgam9icyBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGFyZSBxdWV1ZWQuCj4gPiA+ICsg Kgo+ID4gPiArICogVW5sZXNzIHRoZSBkcml2ZXIgaXMgaG9sZGluZyBpdHMgb3duIHJlZmVyZW5j ZSB0byB0aGUgZnJhbWVidWZmZXIsIGl0IG11c3QKPiA+ID4gKyAqIG5vdCBiZSBhY2Nlc3NlZCBh ZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCj4gPiA+ICsgKgo+ID4gPiArICogU2VlIGFsc286 IGRybV93cml0ZWJhY2tfcXVldWVfam9iKCkKPiA+ID4gKyAqLwo+ID4gPiArdm9pZAo+ID4gPiAr ZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbihzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25u ZWN0b3IgKndiX2Nvbm5lY3RvcikKPiA+ID4gK3sKPiA+ID4gKwl1bnNpZ25lZCBsb25nIGZsYWdz Owo+ID4gPiArCXN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iOwo+ID4gPiArCj4gPiA+ICsJ c3Bpbl9sb2NrX2lycXNhdmUoJndiX2Nvbm5lY3Rvci0+am9iX2xvY2ssIGZsYWdzKTsKPiA+ID4g Kwlqb2IgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJndiX2Nvbm5lY3Rvci0+am9iX3F1ZXVl LAo+ID4gPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IsCj4gPiA+ICsJCQkJ ICAgICAgIGxpc3RfZW50cnkpOwo+ID4gPiArCWlmIChqb2IpCj4gPiA+ICsJCWxpc3RfZGVsKCZq b2ItPmxpc3RfZW50cnkpOwo+ID4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJndiX2Nvbm5l Y3Rvci0+am9iX2xvY2ssIGZsYWdzKTsKPiA+ID4gKwo+ID4gPiArCWlmIChXQVJOX09OKCFqb2Ip KQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gKwlJTklUX1dPUksoJmpvYi0+Y2xlYW51 cF93b3JrLCBjbGVhbnVwX3dvcmspOwo+ID4gPiArCXF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3Es ICZqb2ItPmNsZWFudXBfd29yayk7Cj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MKGRybV93 cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24pOwo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX2F0b21pYy5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4gPiA+IGluZGV4IGNm MTM4NDJhNmRiZC4uZDdiMDI2M2NjNWNmIDEwMDY0NAo+ID4gPiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fYXRvbWljLmgKPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4gPiA+IEBA IC01OTQsNiArNTk0LDkgQEAgdm9pZCBkcm1fYXRvbWljX3NldF9mZW5jZV9mb3JfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gPiA+ICBpbnQgX19tdXN0X2NoZWNr Cj4gPiA+ICBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0b3Ioc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsCj4gPiA+ICAJCQkJICBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwo+ID4gPiAraW50IGRybV9hdG9taWNfc2V0X3dyaXRlYmFja19mYl9mb3JfY29ubmVjdG9y KAo+ID4gPiArCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwKPiA+ID4g KwkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOwo+ID4gPiAgaW50IF9fbXVzdF9jaGVjawo+ ID4gPiAgZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyhzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUsCj4gPiA+ICAJCQkJICAgc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiA+ ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBiL2luY2x1ZGUvZHJt L2RybV9jb25uZWN0b3IuaAo+ID4gPiBpbmRleCA3NThhMTc2ZTdiNTcuLjg3MDFlYmNjNjhiMyAx MDA2NDQKPiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPiA+ICsrKyBi L2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4gPiBAQCAtNDI1LDYgKzQyNSwxOSBAQCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSB7Cj4gPiA+ICAJICogcHJvdGVjdGlvbi4gVGhpcyBp cyBtb3N0IGNvbW1vbmx5IHVzZWQgZm9yIEhEQ1AuCj4gPiA+ICAJICovCj4gPiA+ICAJdW5zaWdu ZWQgaW50IGNvbnRlbnRfcHJvdGVjdGlvbjsKPiA+ID4gKwo+ID4gPiArCS8qKgo+ID4gPiArCSAq IEB3cml0ZWJhY2tfam9iOiBXcml0ZWJhY2sgam9iIGZvciB3cml0ZWJhY2sgY29ubmVjdG9ycwo+ ID4gPiArCSAqCj4gPiA+ICsJICogSG9sZHMgdGhlIGZyYW1lYnVmZmVyIGZvciBhIHdyaXRlYmFj ayBjb25uZWN0b3IuIEFzIHRoZSB3cml0ZWJhY2sKPiA+ID4gKwkgKiBjb21wbGV0aW9uIG1heSBi ZSBhc3luY2hyb25vdXMgdG8gdGhlIG5vcm1hbCBjb21taXQgY3ljbGUsIHRoZQo+ID4gPiArCSAq IHdyaXRlYmFjayBqb2IgbGlmZXRpbWUgaXMgbWFuYWdlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIG5v cm1hbCBhdG9taWMKPiA+ID4gKwkgKiBzdGF0ZSBieSB0aGlzIG9iamVjdC4KPiA+ID4gKwkgKgo+ ID4gPiArCSAqIFNlZSBhbHNvOiBkcm1fd3JpdGViYWNrX3F1ZXVlX2pvYigpIGFuZAo+ID4gPiAr CSAqIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oKQo+ID4gPiArCSAqLwo+ID4gPiAr CXN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqd3JpdGViYWNrX2pvYjsKPiA+ID4gIH07Cj4gPiA+ ICAKPiA+ID4gIC8qKgo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29u ZmlnLmggYi9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaAo+ID4gPiBpbmRleCA3NTY5ZjIy ZmZlZjYuLmMwMTJlMTE0OGVjMCAxMDA2NDQKPiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX21v ZGVfY29uZmlnLmgKPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiA+ ID4gQEAgLTc3OSw2ICs3NzksMjAgQEAgc3RydWN0IGRybV9tb2RlX2NvbmZpZyB7Cj4gPiA+ICAJ ICovCj4gPiA+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcGFuZWxfb3JpZW50YXRpb25fcHJvcGVy dHk7Cj4gPiA+ICAKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBAd3JpdGViYWNrX2ZiX2lkX3Byb3Bl cnR5OiBQcm9wZXJ0eSBmb3Igd3JpdGViYWNrIGNvbm5lY3RvcnMsIHN0b3JpbmcKPiA+ID4gKwkg KiB0aGUgSUQgb2YgdGhlIG91dHB1dCBmcmFtZWJ1ZmZlci4KPiA+ID4gKwkgKiBTZWUgYWxzbzog ZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCgpCj4gPiA+ICsJICovCj4gPiA+ICsJc3RydWN0 IGRybV9wcm9wZXJ0eSAqd3JpdGViYWNrX2ZiX2lkX3Byb3BlcnR5Owo+ID4gPiArCS8qKgo+ID4g PiArCSAqIEB3cml0ZWJhY2tfcGl4ZWxfZm9ybWF0c19wcm9wZXJ0eTogUHJvcGVydHkgZm9yIHdy aXRlYmFjayBjb25uZWN0b3JzLAo+ID4gPiArCSAqIHN0b3JpbmcgYW4gYXJyYXkgb2YgdGhlIHN1 cHBvcnRlZCBwaXhlbCBmb3JtYXRzIGZvciB0aGUgd3JpdGViYWNrCj4gPiA+ICsJICogZW5naW5l IChyZWFkLW9ubHkpLgo+ID4gPiArCSAqIFNlZSBhbHNvOiBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rv cl9pbml0KCkKPiA+ID4gKwkgKi8KPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp3cml0ZWJh Y2tfcGl4ZWxfZm9ybWF0c19wcm9wZXJ0eTsKPiA+ID4gKwo+ID4gPiAgCS8qIGR1bWIgaW9jdGwg cGFyYW1ldGVycyAqLwo+ID4gPiAgCXVpbnQzMl90IHByZWZlcnJlZF9kZXB0aCwgcHJlZmVyX3No YWRvdzsKPiA+ID4gIAo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX21vZGVzZXRf aGVscGVyX3Z0YWJsZXMuaCBiL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVz LmgKPiA+ID4gaW5kZXggM2U3NmNhODA1YjBmLi45N2QzYTgxMGJjODUgMTAwNjQ0Cj4gPiA+IC0t LSBhL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmgKPiA+ID4gKysrIGIv aW5jbHVkZS9kcm0vZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJsZXMuaAo+ID4gPiBAQCAtOTc0LDYg Kzk3NCwxNyBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mgewo+ID4gPiAgCSAq Lwo+ID4gPiAgCWludCAoKmF0b21pY19jaGVjaykoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPiA+ID4gIAkJCSAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUpOwo+ ID4gPiArCj4gPiA+ICsJLyoqCj4gPiA+ICsJICogQGF0b21pY19jb21taXQ6Cj4gPiA+ICsJICoK PiA+ID4gKwkgKiBGb3Igd3JpdGUtYmFjayBjb25uZWN0b3JzLCB0aGlzIGlzIHRoZSBwb2ludCB0 byBjb21taXQgdGhlIHdyaXRlLQo+ID4gPiArCSAqIGJhY2sgam9iIHRvIGh3Lgo+ID4gPiArCSAq Cj4gPiA+ICsJICogVGhpcyBjYWxsYmFjayBpcyB1c2VkIGJ5IHRoZSBhdG9taWMgbW9kZXNldCBo ZWxwZXJzLgo+ID4gPiArCSAqLwo+ID4gPiArCXZvaWQgKCphdG9taWNfY29tbWl0KShzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiArCQkJICAgICAgc3RydWN0IGRybV93cml0 ZWJhY2tfam9iICp3cml0ZWJhY2tfam9iKTsKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gIC8qKgo+ ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3dyaXRlYmFjay5oIGIvaW5jbHVkZS9k cm0vZHJtX3dyaXRlYmFjay5oCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4 IDAwMDAwMDAwMDAwMC4uMGJiOTVmZDQ5MDdkCj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX3dyaXRlYmFjay5oCj4gPiA+IEBAIC0wLDAgKzEsODkgQEAKPiA+ ID4gKy8qCj4gPiA+ICsgKiAoQykgQ09QWVJJR0hUIDIwMTYgQVJNIExpbWl0ZWQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCj4gPiA+ICsgKiBBdXRob3I6IEJyaWFuIFN0YXJrZXkgPGJyaWFuLnN0YXJr ZXlAYXJtLmNvbT4KPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZSBhbmQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKPiA+ID4g KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUKPiA+ID4gKyAqIEZvdW5kYXRpb24sIGFuZCBhbnkgdXNlIGJ5IHlv dSBvZiB0aGlzIHByb2dyYW0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMKPiA+ID4gKyAqIG9mIHN1 Y2ggR05VIGxpY2VuY2UuCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2lmbmRlZiBfX0RSTV9X UklURUJBQ0tfSF9fCj4gPiA+ICsjZGVmaW5lIF9fRFJNX1dSSVRFQkFDS19IX18KPiA+ID4gKyNp bmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fZW5j b2Rlci5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgo+ID4gPiArCj4gPiA+ ICtzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3Igewo+ID4gPiArCXN0cnVjdCBkcm1fY29u bmVjdG9yIGJhc2U7Cj4gPiA+ICsKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBAZW5jb2RlcjogSW50 ZXJuYWwgZW5jb2RlciB1c2VkIGJ5IHRoZSBjb25uZWN0b3IgdG8gZnVsZmlsbAo+ID4gPiArCSAq IHRoZSBEUk0gZnJhbWV3b3JrIHJlcXVpcmVtZW50cy4gVGhlIHVzZXJzIG9mIHRoZQo+ID4gPiAr CSAqIEBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciBjb250cm9sIHRoZSBiZWhhdmlvdXIgb2YgdGhl IEBlbmNvZGVyCj4gPiA+ICsJICogYnkgcGFzc2luZyB0aGUgQGVuY19mdW5jcyBwYXJhbWV0ZXIg dG8gZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCgpCj4gPiA+ICsJICogZnVuY3Rpb24uCj4g PiA+ICsJICovCj4gPiA+ICsJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gPiA+ICsKPiA+ ID4gKwkvKioKPiA+ID4gKwkgKiBAcGl4ZWxfZm9ybWF0c19ibG9iX3B0cjoKPiA+ID4gKwkgKgo+ ID4gPiArCSAqIERSTSBibG9iIHByb3BlcnR5IGRhdGEgZm9yIHRoZSBwaXhlbCBmb3JtYXRzIGxp c3Qgb24gd3JpdGViYWNrCj4gPiA+ICsJICogY29ubmVjdG9ycwo+ID4gPiArCSAqIFNlZSBhbHNv IGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQoKQo+ID4gPiArCSAqLwo+ID4gPiArCXN0cnVj dCBkcm1fcHJvcGVydHlfYmxvYiAqcGl4ZWxfZm9ybWF0c19ibG9iX3B0cjsKPiA+ID4gKwo+ID4g PiArCS8qKiBAam9iX2xvY2s6IFByb3RlY3RzIGpvYl9xdWV1ZSAqLwo+ID4gPiArCXNwaW5sb2Nr X3Qgam9iX2xvY2s7Cj4gPiA+ICsKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBAam9iX3F1ZXVlOgo+ ID4gPiArCSAqCj4gPiA+ICsJICogSG9sZHMgYSBsaXN0IG9mIGEgY29ubmVjdG9yJ3Mgd3JpdGVi YWNrIGpvYnM7IHRoZSBsYXN0IGl0ZW0gaXMgdGhlCj4gPiA+ICsJICogbW9zdCByZWNlbnQuIFRo ZSBmaXJzdCBpdGVtIG1heSBiZSBlaXRoZXIgd2FpdGluZyBmb3IgdGhlIGhhcmR3YXJlCj4gPiA+ ICsJICogdG8gYmVnaW4gd3JpdGluZywgb3IgY3VycmVudGx5IGJlaW5nIHdyaXR0ZW4uCj4gPiA+ ICsJICoKPiA+ID4gKwkgKiBTZWUgYWxzbzogZHJtX3dyaXRlYmFja19xdWV1ZV9qb2IoKSBhbmQK PiA+ID4gKwkgKiBkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKCkKPiA+ID4gKwkgKi8K PiA+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGpvYl9xdWV1ZTsKPiA+ID4gK307Cj4gPiA+ICsjZGVm aW5lIHRvX3diX2Nvbm5lY3Rvcih4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRybV93cml0ZWJh Y2tfY29ubmVjdG9yLCBiYXNlKQo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgZHJtX3dyaXRlYmFja19q b2Igewo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBjbGVhbnVwX3dvcms6Cj4gPiA+ICsJICoKPiA+ ID4gKwkgKiBVc2VkIHRvIGFsbG93IGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24gdG8g ZGVmZXIgZHJvcHBpbmcgdGhlCj4gPiA+ICsJICogZnJhbWVidWZmZXIgcmVmZXJlbmNlIHRvIGEg d29ya3F1ZXVlLgo+ID4gPiArCSAqLwo+ID4gPiArCXN0cnVjdCB3b3JrX3N0cnVjdCBjbGVhbnVw X3dvcms7Cj4gPiA+ICsJLyoqCj4gPiA+ICsJICogQGxpc3RfZW50cnk6Cj4gPiA+ICsJICoKPiA+ ID4gKwkgKiBMaXN0IGl0ZW0gZm9yIHRoZSBjb25uZWN0b3IncyBAam9iX3F1ZXVlCj4gPiA+ICsJ ICovCj4gPiA+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0X2VudHJ5Owo+ID4gPiArCS8qKgo+ID4g PiArCSAqIEBmYjoKPiA+ID4gKwkgKgo+ID4gPiArCSAqIEZyYW1lYnVmZmVyIHRvIGJlIHdyaXR0 ZW4gdG8gYnkgdGhlIHdyaXRlYmFjayBjb25uZWN0b3IuIERvIG5vdCBzZXQKPiA+ID4gKwkgKiBk aXJlY3RseSwgdXNlIGRybV9hdG9taWNfc2V0X3dyaXRlYmFja19mYl9mb3JfY29ubmVjdG9yKCkK PiA+ID4gKwkgKi8KPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiA+ID4gK307 Cj4gPiA+ICsKPiA+ID4gK2ludCBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gPiA+ICsJCQkJIHN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rv ciAqd2JfY29ubmVjdG9yLAo+ID4gPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9m dW5jcyAqY29uX2Z1bmNzLAo+ID4gPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVs cGVyX2Z1bmNzICplbmNfaGVscGVyX2Z1bmNzLAo+ID4gPiArCQkJCSBjb25zdCB1MzIgKmZvcm1h dHMsIGludCBuX2Zvcm1hdHMpOwo+ID4gPiArCj4gPiA+ICt2b2lkIGRybV93cml0ZWJhY2tfcXVl dWVfam9iKHN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yLAo+ID4g PiArCQkJICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYik7Cj4gPiA+ICsKPiA+ID4g K3ZvaWQgZHJtX3dyaXRlYmFja19jbGVhbnVwX2pvYihzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2Ig KmpvYik7Cj4gPiA+ICt2b2lkIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oc3RydWN0 IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICp3Yl9jb25uZWN0b3IpOwo+ID4gPiArI2VuZGlmCj4g PiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmggYi9pbmNsdWRlL3Vh cGkvZHJtL2RybV9tb2RlLmgKPiA+ID4gaW5kZXggMmM1NzU3OTRmYjUyLi43YjQ3ZTE4NGU5NWUg MTAwNjQ0Cj4gPiA+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+ID4gPiArKysg Yi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPiA+ID4gQEAgLTMzOCw2ICszMzgsNyBAQCBl bnVtIGRybV9tb2RlX3N1YmNvbm5lY3RvciB7Cj4gPiA+ICAjZGVmaW5lIERSTV9NT0RFX0NPTk5F Q1RPUl9WSVJUVUFMICAgICAgMTUKPiA+ID4gICNkZWZpbmUgRFJNX01PREVfQ09OTkVDVE9SX0RT SQkJMTYKPiA+ID4gICNkZWZpbmUgRFJNX01PREVfQ09OTkVDVE9SX0RQSQkJMTcKPiA+ID4gKyNk ZWZpbmUgRFJNX01PREVfQ09OTkVDVE9SX1dSSVRFQkFDSwkxOAo+ID4gPiAgCj4gPiA+ICBzdHJ1 Y3QgZHJtX21vZGVfZ2V0X2Nvbm5lY3RvciB7Cj4gPiA+ICAKPiA+ID4gLS0gCj4gPiA+IDIuMTQu Mwo+ID4gPiAKPiA+IAo+ID4gLS0gCj4gPiBTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBH b29nbGUgLyBDaHJvbWl1bSBPUwo+IAo+IC0tIAo+ID09PT09PT09PT09PT09PT09PT09Cj4gfCBJ IHdvdWxkIGxpa2UgdG8gfAo+IHwgZml4IHRoZSB3b3JsZCwgIHwKPiB8IGJ1dCB0aGV5J3JlIG5v dCB8Cj4gfCBnaXZpbmcgbWUgdGhlICAgfAo+ICBcIHNvdXJjZSBjb2RlISAgLwo+ICAgLS0tLS0t LS0tLS0tLS0tCj4gICAgIMKvXF8o44OEKV8vwq8KCi0tIApTZWFuIFBhdWwsIFNvZnR3YXJlIEVu Z2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9mcmVlZHJlbm8K