From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 09/60] drm/bridge: Add connector-related bridge operations and data Date: Wed, 14 Aug 2019 15:03:29 +0200 Message-ID: <20190814130329.GF7444@phenom.ffwll.local> References: <20190707180852.5512-1-laurent.pinchart@ideasonboard.com> <20190707181937.6250-1-laurent.pinchart@ideasonboard.com> <20190707181937.6250-6-laurent.pinchart@ideasonboard.com> <1f98e5f0-d513-d3f2-420d-80e0e0c3c71b@samsung.com> <20190711073548.GD15868@phenom.ffwll.local> <20190808181948.GW6055@pendragon.ideasonboard.com> <20190808183631.GX6055@pendragon.ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id F1F8689EEB for ; Wed, 14 Aug 2019 13:03:33 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id a21so7003237edt.11 for ; Wed, 14 Aug 2019 06:03:33 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190808183631.GX6055@pendragon.ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBBdWcgMDgsIDIwMTkgYXQgMDk6MzY6MzFQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBPbiBUaHUsIEF1ZyAwOCwgMjAxOSBhdCAwOToxOTo0OFBNICswMzAwLCBMYXVy ZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gT24gVGh1LCBKdWwgMTEsIDIwMTkgYXQgMDk6MzU6NDhB TSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gT24gV2VkLCBKdWwgMTAsIDIwMTkg YXQgMDI6MTI6MTRQTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiA+ID4+IEhpIExhdXJl bnQsCj4gPiA+PiAKPiA+ID4+IEkgbGlrZSB0aGUgYXBwcm9hY2gsIGN1cnJlbnQgcHJhY3RpY2Ug d2hlbiBhbG1vc3QgZXZlcnkgYnJpZGdlIHNob3VsZAo+ID4gPj4gb3B0aW9uYWxseSBpbXBsZW1l bnQgY29ubmVjdG9yLCBvciBhbHRlcm5hdGl2ZWx5IGRvd25zdHJlYW0gYnJpZGdlIG9yCj4gPiA+ PiBwYW5lbCBpcyB2ZXJ5IHBhaW5mdWwuCj4gPiA+IAo+ID4gPiBZZWFoIEkgdGhpbmsgdGhpcyBs b29rcyBtb3N0bHkgcmVhc29uYWJsZS4gU29tZSBhcGkgZGVzaWduIGNvbW1lbnRzIG9uIHRvcAo+ ID4gPiBvZiBBbmRyemVqJywgd2l0aCB0aGUgZmFpciB3YXJuaW5nIHRoYXQgSSBkaWRuJ3QgYm90 aGVyIHRvIHJlYWQgdXAgb24gaG93Cj4gPiA+IGl0J3MgYWxsIHVzZWQgaW4gdGhlIGVuZC4gSSBw cm9iYWJseSBzaG91bGQgZ28gYW5kIGRvIHRoYXQsIGF0IGxlYXN0IHRvCj4gPiA+IGdldCBhIGZl ZWxpbmcgZm9yIHdoYXQgeW91ciBocGRfY2IgdXN1YWxseSBkb2VzLgo+ID4gPiAKPiA+ID4+IE1v cmUgY29tbWVudHMgaW5saW5lZC4KPiA+ID4+IAo+ID4gPj4gT24gMDcuMDcuMjAxOSAyMDoxOCwg TGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+ID4+PiBUbyBzdXBwb3J0IGltcGxlbWVudGF0aW9u IG9mIERSTSBjb25uZWN0b3JzIG9uIHRvcCBvZiBEUk0gYnJpZGdlcwo+ID4gPj4+IGluc3RlYWQg b2YgYnkgYnJpZGdlcywgdGhlIGRybV9icmlkZ2UgbmVlZHMgdG8gZXhwb3NlIG5ldyBvcGVyYXRp b25zIGFuZAo+ID4gPj4+IGRhdGE6Cj4gPiA+Pj4KPiA+ID4+PiAtIE91dHB1dCBkZXRlY3Rpb24s IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiwgbW9kZSByZXRyaWV2YWwgYW5kIEVESUQKPiA+ID4+PiAg IHJldHJpZXZhbCBvcGVyYXRpb25zCj4gPiA+Pj4gLSBCaXRtYXNrIG9mIHN1cHBvcnRlZCBvcGVy YXRpb25zCj4gPiA+PiAKPiA+ID4+IAo+ID4gPj4gV2h5IGRvIHdlIG5lZWQgdGhlc2UgYml0bWFz ayBhdCBhbGw/IFdoeSBjYW5ub3Qgd2UgcmVseSBvbiBwcmVzZW5jZSBvZgo+ID4gPj4gb3BlcmF0 aW9uJ3MgY2FsbGJhY2s/Cj4gPiA+IAo+ID4gPiBZZWFoIGFsc28gbm90IGEgaHVnZSBmYW4gb2Yg dGhlc2UgYml0bWFza3MuIFNtZWxscyBsaWtlCj4gPiA+IERSSVZFUl9HRU18RFJJVkVSX01PREVT RVQsIGFuZCBJIHBlcnNvbmFsbHkgcmVhbGx5IGhhdGUgdGhvc2UuIEVhc3kgdG8KPiA+ID4gYWRk LCBnZW5lcmFsbHkgZ29vZCBleGN1c2UgdG8gbm90IGhhdmUgdG8gdGhpbmsgdGhyb3VnaCB0aGUg ZGVzaWduIGJldHdlZW4KPiA+ID4gZGlmZmVyZW50IHBhcnRzIG9mIGRyaXZlcnMgLSAianVzdCIg YWRkIGFub3RoZXIgZmxhZy4KPiA+IAo+ID4gVGhlIHJlYXNvbiBpcyB0aGF0IGEgYnJpZGdlIG1h eSBzdXBwb3J0IGFuIG9wZXJhdGlvbiAoYXMgaW4gaW1wbGVtZW50ZWQKPiA+IGluIHRoZSBicmlk Z2UgaGFyZHdhcmUpLCBidXQgdGhhdCBvcGVyYXRpb24gbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24g YQo+ID4gcGFydGljdWxhciBib2FyZC4gRm9yIGluc3RhbmNlIGFuIEhETUkgZW5jb2RlciBtYXkg c3VwcG9ydCByZWFkaW5nIEVESUQKPiA+IHdoZW4gdGhlIEREQyBsaW5lcyBhcmUgY29ubmVjdGVk IHRvIHRoZSBlbmNvZGVyLCBidXQgYSBib2FyZCBtYXkgY29ubmVjdAo+ID4gdGhlIEREQyBsaW5l cyB0byBhbiBJMkMgcG9ydCBvZiB0aGUgU29DLiBXZSB0aHVzIG5lZWQgdG8gZGVjb3VwbGUKPiA+ IGlmIGEgcGFydGljdWxhciBpbnN0YW5jZSBvZiB0aGUgZGV2aWNlIHN1cHBvcnRzIHRoZSBvcGVy YXRpb24gKGV4cG9zZWQKPiA+IGJ5IHRoZSBvcHMgZmxhZ3MpIGZyb20gdGhlIGZ1bmN0aW9uIHBv aW50ZXJzLgo+ID4gCj4gPiBXZSBjb3VsZCBvZiBjb3Vyc2UgYWxsb2NhdGUgdGhlIGRybV9icmlk Z2VfZnVuY3Mgc3RydWN0dXJlIGR5bmFtaWNhbGx5Cj4gPiBmb3IgZWFjaCBicmlkZ2UgaW5zdGFu Y2UsIGFuZCBmaWxsIGl0IHdpdGggZnVuY3Rpb24gcG9pbnRlcnMgbWFudWFsbHksCj4gPiBsZWF2 aW5nIHRoZSB1bnVzZWQgb3BzIGFsd2F5cyBOVUxMLCBidXQgdGhhdCB3b3VsZCByZXF1aXJlIG1h a2luZyB0aGUKPiA+IHN0cnVjdHVyZSB3cml0YWJsZSwgd2hpY2ggaXMgY29uc2lkZXJlZCBhIHNl Y3VyaXR5IGlzc3VlLiBUaGF0J3Mgd2h5IEkKPiA+IGRlY2lkZWQgdG8ga2VlcCB0aGUgZHJtX2Jy aWRnZV9mdW5jcyBzdHJ1Y3R1cmUgYXMgYSBnbG9iYWwgc3RhdGljIGNvbnN0Cj4gPiBzdHJ1Y3R1 cmUsIGFuZCBhZGQgYW4gb3BzIGJpdG1hc2suCj4gPiAKPiA+ID4+PiAtIEJyaWRnZSBvdXRwdXQg dHlwZQo+ID4gPj4+Cj4gPiA+Pj4gQWRkIGFuZCBkb2N1bWVudCB0aGVzZS4KPiA+ID4+Pgo+ID4g Pj4+IFRocmVlIG5ldyBicmlkZ2UgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYWxzbyBhZGRlZCB0byBo YW5kbGUgaG90IHBsdWcKPiA+ID4+PiBub3RpZmljYXRpb24gaW4gYSB3YXkgdGhhdCBpcyBhcyB0 cmFuc3BhcmVudCBhcyBwb3NzaWJsZSBmb3IgdGhlCj4gPiA+Pj4gYnJpZGdlcy4KPiA+ID4+IAo+ ID4gPj4gRG9jdW1lbnRhdGlvbiBvZiBuZXcgb3BzZXMgZG9lcyBub3QgZXhwbGFpbiBob3cgaXQg c2hvdWxkIGNvb3BlcmF0ZSB3aXRoCj4gPiA+PiBicmlkZ2UgY2hhaW5pbmcsIEkgc3VwcG9zZSB0 aGV5IHNob3VsZCBiZSBjaGFpbmVkIGV4cGxpY2l0bHksIGFtIEkKPiA+ID4+IHJpZ2h0PyBNb3Jl IGNvbW1lbnRzIGFib3V0IGl0IGxhdGVyLgo+ID4gCj4gPiBObywgdGhlIHdob2xlIHBvaW50IGlz IHRoYXQgdGhleSBzaG91bGQgbm90IGJlIGNoYWluZWQgYXQgYWxsLiBBIGJyaWRnZQo+ID4gZG9l cyBub3QgaGF2ZSB0byBwcm9wYWdhdGUsIGZvciBpbnN0YW5jZSwgLmdldF9lZGlkKCkgdG8gdGhl IG5leHQKPiA+IGJyaWRnZS4gVGhhdCdzIG9uZSBvZiB0aGUgY29yZSBkZXNpZ24gcHJpbmNpcGxl cyBpbiB0aGlzIHNlcmllcywgSSB3YW50Cj4gPiB0byBrZWVwIHRoZSBicmlkZ2VzIGFzIHNpbXBs ZSBhcyBwb3NzaWJsZSwgYW5kIG1vdmUgdGhlIGNvbXBsZXhpdHkgb2YKPiA+IHRoZSBib2lsZXJw bGF0ZSBjb2RlIHRoYXQgaXMgY3VycmVudGx5IGNvcGllZCBhbGwgYXJvdW5kIHRvIGhlbHBlcnMu IFNlZQo+ID4gcGF0Y2ggImRybTogQWRkIGhlbHBlciB0byBjcmVhdGUgYSBjb25uZWN0b3IgZm9y IGEgY2hhaW4gb2YgYnJpZGdlcyIgZm9yCj4gPiBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0 aGlzIGlzIHVzZWQsIHdpdGggYSBoZWxwZXIgdGhhdCBkZWxlZ2F0ZXMKPiA+IHRoZSBjb25uZWN0 b3Igb3BlcmF0aW9ucyB0byB0aGUgY29ycmVjdCBicmlkZ2UgaW4gdGhlIGNoYWluIGJhc2VkIG9u IHRoZQo+ID4gb3BzIHJlcG9ydGVkIGJ5IGVhY2ggYnJpZGdlLgo+ID4gCj4gPiA+Pj4gU2lnbmVk LW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQu Y29tPgo+ID4gPj4+IC0tLQo+ID4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIHwg IDkyICsrKysrKysrKysrKysrKysrKysKPiA+ID4+PiAgaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5o ICAgICB8IDE3MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gPj4+ICAy IGZpbGVzIGNoYW5nZWQsIDI2MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gPiA+Pj4K PiA+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPiA+ID4+PiBpbmRleCA1MTk1NzdmMzYzZTMuLjNjMmEy NTVkZjdhZiAxMDA2NDQKPiA+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5j Cj4gPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4gPj4+IEBAIC03 MCw2ICs3MCw4IEBAIHN0YXRpYyBMSVNUX0hFQUQoYnJpZGdlX2xpc3QpOwo+ID4gPj4+ICAgKi8K PiA+ID4+PiAgdm9pZCBkcm1fYnJpZGdlX2FkZChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ ID4gPj4+ICB7Cj4gPiA+Pj4gKwltdXRleF9pbml0KCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPiA+ Pj4gKwo+ID4gPj4+ICAJbXV0ZXhfbG9jaygmYnJpZGdlX2xvY2spOwo+ID4gPj4+ICAJbGlzdF9h ZGRfdGFpbCgmYnJpZGdlLT5saXN0LCAmYnJpZGdlX2xpc3QpOwo+ID4gPj4+ICAJbXV0ZXhfdW5s b2NrKCZicmlkZ2VfbG9jayk7Cj4gPiA+Pj4gQEAgLTg2LDYgKzg4LDggQEAgdm9pZCBkcm1fYnJp ZGdlX3JlbW92ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gPj4+ICAJbXV0ZXhfbG9j aygmYnJpZGdlX2xvY2spOwo+ID4gPj4+ICAJbGlzdF9kZWxfaW5pdCgmYnJpZGdlLT5saXN0KTsK PiA+ID4+PiAgCW11dGV4X3VubG9jaygmYnJpZGdlX2xvY2spOwo+ID4gPj4+ICsKPiA+ID4+PiAr CW11dGV4X2Rlc3Ryb3koJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+ID4+PiAgfQo+ID4gPj4+ICBF WFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfcmVtb3ZlKTsKPiA+ID4+PiAgCj4gPiA+Pj4gQEAgLTQ2 Myw2ICs0NjcsOTQgQEAgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSwKPiA+ID4+PiAgfQo+ID4gPj4+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9t aWNfYnJpZGdlX2VuYWJsZSk7Cj4gPiA+Pj4gIAo+ID4gPj4+ICsvKioKPiA+ID4+PiArICogZHJt X2JyaWRnZV9ocGRfZW5hYmxlIC0gZW5hYmxlIGhvdCBwbHVnIGRldGVjdGlvbiBmb3IgdGhlIGJy aWRnZQo+ID4gPj4+ICsgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+ID4+ PiArICogQGNiOiBob3QtcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sKPiA+ID4+PiArICogQGRhdGE6 IGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBob3QtcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sKPiA+ ID4+PiArICoKPiA+ID4+PiArICogQ2FsbCAmZHJtX2JyaWRnZV9mdW5jcy5ocGRfZW5hYmxlIGFu ZCByZWdpc3RlciB0aGUgZ2l2ZW4gQGNiIGFuZCBAZGF0YSBhcwo+ID4gPj4+ICsgKiBob3QgcGx1 ZyBub3RpZmljYXRpb24gY2FsbGJhY2suIEZyb20gbm93IG9uIHRoZSBAY2Igd2lsbCBiZSBjYWxs ZWQgd2l0aAo+ID4gPj4+ICsgKiBAZGF0YSB3aGVuIGFuIG91dHB1dCBzdGF0dXMgY2hhbmdlIGlz IGRldGVjdGVkIGJ5IHRoZSBicmlkZ2UsIHVudGlsIGhvdCBwbHVnCj4gPiA+Pj4gKyAqIG5vdGlm aWNhdGlvbiBnZXRzIGRpc2FibGVkIHdpdGggZHJtX2JyaWRnZV9ocGRfZGlzYWJsZSgpLgo+ID4g Pj4+ICsgKgo+ID4gPj4+ICsgKiBIb3QgcGx1ZyBkZXRlY3Rpb24gaXMgc3VwcG9ydGVkIG9ubHkg aWYgdGhlIERSTV9CUklER0VfT1BfSFBEIGZsYWcgaXMgc2V0IGluCj4gPiA+Pj4gKyAqIGJyaWRn ZS0+b3BzLiBUaGlzIGZ1bmN0aW9uIHNoYWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB0aGUgZmxhZyBp cyBub3Qgc2V0Lgo+ID4gPj4+ICsgKgo+ID4gPj4+ICsgKiBPbmx5IG9uZSBob3QgcGx1ZyBkZXRl Y3Rpb24gY2FsbGJhY2sgY2FuIGJlIHJlZ2lzdGVyZWQgYXQgYSB0aW1lLCBpdCBpcyBhbgo+ID4g Pj4+ICsgKiBlcnJvciB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiBob3QgcGx1ZyBkZXRlY3Rp b24gaXMgYWxyZWFkeSBlbmFibGVkIGZvcgo+ID4gPj4+ICsgKiB0aGUgYnJpZGdlLgo+ID4gPj4+ ICsgKi8KPiA+ID4+IAo+ID4gPj4gVG8gc2ltcGxpZnkgYXJjaGl0ZWN0dXJlIG1heWJlIHdvdWxk IGJlIGJldHRlciB0byBlbmFibGUgaHBkIGp1c3Qgb24KPiA+ID4+IGJyaWRnZSBhdHRhY2g6Cj4g PiA+PiAKPiA+ID4+IGJyaWRnZS0+aHBkX2NiID0gY2I7Cj4gPiA+PiAKPiA+ID4+IGJyaWRnZS0+ aHBkX2RhdGEgPSBkYXRhOwo+ID4gPj4gCj4gPiA+PiByZXQgPSBkcm1fYnJpZGdlX2F0dGFjaCgu Li4pOwo+ID4gPiAKPiA+ID4gWWVhaCBJIGxpa2UgdGhpcyBtb3JlLiBUaGUgb3RoZXIgcHJvYmxl bSBoZXJlIGlzLCB3aGF0IGlmIHlvdSBuZWVkIG1vcmUKPiA+ID4gdGhhbiAxIGNhbGxiYWNrIHJl Z2lzdGVycyBvbiB0aGUgc2FtZSBicmlkZ2UgaGRwIHNpZ25hbD8KPiA+IAo+ID4gVGhhdCdzIHdo eSBJIGRlY2lkZWQgdG8gaGlkZSBoaWRlIEhQRCB0aHJvdWdoIGhlbHBlcnMsCj4gPiBkcm1fYnJp ZGdlX2hwZF9lbmFibGUoKSBhbmQgZHJtX2JyaWRnZV9ocGRfZGlzYWJsZSgpIG9uIHRoZSBsaXN0 ZW5lcgo+ID4gc2lkZSwgYW5kIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIG9uIHRoZSBldmVudCBy ZXBvcnRlciBzaWRlLiBXaGlsZSB0aGUKPiA+IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgbGlt aXRlZCB0byBhIHNpbmdsZSBsaXN0ZW5lciwgb25seSB0aGUgaGVscGVycwo+ID4gd291bGQgbmVl ZCB0byBiZSBjaGFuZ2VkIHRvIGV4dGVuZCB0aGF0IHRvIG11bHRpcGxlIGxpc3RlbmVycy4KPiA+ IAo+ID4gTm90ZSB0aGF0IHRoZSAuaHBkX2VuYWJsZSgpIGFuZCAuaHBkX2Rpc2FibGUoKSBvcGVy YXRpb25zIGFsc28gYWxsb3cgdGhlCj4gPiBicmlkZ2UgdG8gZGlzYWJsZSBIUEQgZGV0ZWN0aW9u IHdoZW4gbm90IHVzZWQuIERvaW5nIHNvIGtlZXBzIHRoZSBicmlkZ2UKPiA+IHNpbXBsZSwgaXQg b25seSBuZWVkcyB0byBjYXJlIGFib3V0IHJlcG9ydGluZyBIUEQgZXZlbnRzIHdoZW4gdGhleSdy ZQo+ID4gZW5hYmxlZCwgd2l0aG91dCBjYXJpbmcgd2hvIChpZiBhbnlvbmUpIGlzIGxpc3Rlbmlu ZywgYW5kIGdldHMgY2xlYXIKPiA+IGluc3RydWN0aW9ucyBvbiB3aGV0aGVyIHRvIGVuYWJsZSBv ciBkaXNhYmxlIHRoZSBIUEQgaGFyZHdhcmUgKGluIGNhc2UKPiA+IGl0IGNhbiBiZSBkaXNhYmxl ZCkuCj4gPiAKPiA+ID4+IFRoaXMgd2F5IHdlIGNvdWxkIGF2b2lkIGFkZGluZyBuZXcgY2FsbGJh Y2tzIGhwZF8oZW5hYmxlfGRpc2FibGUpCj4gPiA+PiB3aXRob3V0IGJpZyBzYWNyaWZpY2VzLgo+ ID4gPj4gCj4gPiA+PiBPbmUgbW9yZSB0aGluZzogSFBEIGluIERpc3BsYXlQb3J0L0hETUkgYmVz aWRlIHNpZ25hbGxpbmcgcGx1Zy91bnBsdWcsCj4gPiA+PiBub3RpZmllcyBhYm91dCBzaW5rIHN0 YXR1cyBjaGFuZ2UsIGhvdyBpdCB0cmFuc2xhdGVzIHRvIHRoaXMgY2I/Cj4gPiAKPiA+IFRoaXMg aXMgc29tZXRoaW5nIHRoaXMgc2VyaWVzIGRvZXNuJ3QgaW1wbGVtZW50LiBJIGRvbid0IHRoaW5r IGl0IHdvdWxkCj4gPiBiZSBhIGJpZyBkZWFsLCBidXQgbXkga25vd2xlZGdlIG9mIEhQRCAoZXNw ZWNpYWxseSBmb3IgRGlzcGxheVBvcnQpIGVuZHMKPiA+IGhlcmUuIElmIHlvdSBjYW4gZWxhYm9y YXRlIG9uIHdoYXQgd291bGQgYmUgbmVlZGVkLCBJIGNhbiBpbXBsZW1lbnQKPiA+IHRoYXQuCj4g PiAKPiA+ID4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSwKPiA+ID4+PiArCQkJICAgdm9pZCAoKmNiKSh2b2lkICpkYXRhLAo+ID4gPj4+ICsJ CQkJICAgICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpLAo+ID4gPj4+ICsJCQkg ICB2b2lkICpkYXRhKQo+ID4gPj4+ICt7Cj4gPiA+Pj4gKwlpZiAoIWJyaWRnZSB8fCAhYnJpZGdl LT5mdW5jcy0+aHBkX2VuYWJsZSkKPiA+ID4+PiArCQlyZXR1cm47Cj4gPiA+Pj4gKwo+ID4gPj4+ ICsJbXV0ZXhfbG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPj4+ICsKPiA+ID4+PiArCWlm IChXQVJOKGJyaWRnZS0+aHBkX2NiLCAiSG90IHBsdWcgZGV0ZWN0aW9uIGFscmVhZHkgZW5hYmxl ZFxuIikpCj4gPiA+Pj4gKwkJZ290byB1bmxvY2s7Cj4gPiA+Pj4gKwo+ID4gPj4+ICsJYnJpZGdl LT5ocGRfY2IgPSBjYjsKPiA+ID4+PiArCWJyaWRnZS0+aHBkX2RhdGEgPSBkYXRhOwo+ID4gPj4+ ICsKPiA+ID4+PiArCWJyaWRnZS0+ZnVuY3MtPmhwZF9lbmFibGUoYnJpZGdlKTsKPiA+ID4+PiAr Cj4gPiA+Pj4gK3VubG9jazoKPiA+ID4+PiArCW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0 ZXgpOwo+ID4gPj4+ICt9Cj4gPiA+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9icmlkZ2VfaHBk X2VuYWJsZSk7Cj4gPiA+Pj4gKwo+ID4gPj4+ICsvKioKPiA+ID4+PiArICogZHJtX2JyaWRnZV9o cGRfZGlzYWJsZSAtIGRpc2FibGUgaG90IHBsdWcgZGV0ZWN0aW9uIGZvciB0aGUgYnJpZGdlCj4g PiA+Pj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+ID4gPj4+ICsgKgo+ ID4gPj4+ICsgKiBDYWxsICZkcm1fYnJpZGdlX2Z1bmNzLmhwZF9kaXNhYmxlIGFuZCB1bnJlZ2lz dGVyIHRoZSBob3QgcGx1ZyBkZXRlY3Rpb24KPiA+ID4+PiArICogY2FsbGJhY2sgcHJldmlvdXNs eSByZWdpc3RlcmVkIHdpdGggZHJtX2JyaWRnZV9ocGRfZW5hYmxlKCkuIE9uY2UgdGhpcwo+ID4g Pj4+ICsgKiBmdW5jdGlvbiByZXR1cm5zIHRoZSBjYWxsYmFjayB3aWxsIG5vdCBiZSBjYWxsZWQg YnkgdGhlIGJyaWRnZSB3aGVuIGFuCj4gPiA+Pj4gKyAqIG91dHB1dCBzdGF0dXMgY2hhbmdlIG9j Y3Vycy4KPiA+ID4+PiArICoKPiA+ID4+PiArICogSG90IHBsdWcgZGV0ZWN0aW9uIGlzIHN1cHBv cnRlZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGlzIHNldCBpbgo+ID4gPj4+ ICsgKiBicmlkZ2UtPm9wcy4gVGhpcyBmdW5jdGlvbiBzaGFsbCBub3QgYmUgY2FsbGVkIHdoZW4g dGhlIGZsYWcgaXMgbm90IHNldC4KPiA+ID4+PiArICovCj4gPiA+Pj4gK3ZvaWQgZHJtX2JyaWRn ZV9ocGRfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gPj4+ICt7Cj4gPiA+ Pj4gKwlpZiAoIWJyaWRnZSB8fCAhYnJpZGdlLT5mdW5jcy0+aHBkX2Rpc2FibGUpCj4gPiA+Pj4g KwkJcmV0dXJuOwo+ID4gPj4+ICsKPiA+ID4+PiArCW11dGV4X2xvY2soJmJyaWRnZS0+aHBkX211 dGV4KTsKPiA+ID4+PiArCWJyaWRnZS0+ZnVuY3MtPmhwZF9kaXNhYmxlKGJyaWRnZSk7Cj4gPiA+ Pj4gKwo+ID4gPj4+ICsJYnJpZGdlLT5ocGRfY2IgPSBOVUxMOwo+ID4gPj4+ICsJYnJpZGdlLT5o cGRfZGF0YSA9IE5VTEw7Cj4gPiA+Pj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211dGV4 KTsKPiA+ID4+PiArfQo+ID4gPj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1fYnJpZGdlX2hwZF9k aXNhYmxlKTsKPiA+ID4+PiArCj4gPiA+Pj4gKy8qKgo+ID4gPj4+ICsgKiBkcm1fYnJpZGdlX2hw ZF9ub3RpZnkgLSBub3RpZnkgaG90IHBsdWcgZGV0ZWN0aW9uIGV2ZW50cwo+ID4gPj4+ICsgKiBA YnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+ID4+PiArICogQHN0YXR1czogb3V0 cHV0IGNvbm5lY3Rpb24gc3RhdHVzCj4gPiA+Pj4gKyAqCj4gPiA+Pj4gKyAqIEJyaWRnZSBkcml2 ZXJzIHNoYWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byByZXBvcnQgaG90IHBsdWcgZXZlbnRzIHdo ZW4gdGhleQo+ID4gPj4+ICsgKiBkZXRlY3QgYSBjaGFuZ2UgaW4gdGhlIG91dHB1dCBzdGF0dXMs IHdoZW4gaG90IHBsdWcgZGV0ZWN0aW9uIGhhcyBiZWVuCj4gPiA+Pj4gKyAqIGVuYWJsZWQgYnkg dGhlICZkcm1fYnJpZGdlX2Z1bmNzLmhwZF9lbmFibGUgY2FsbGJhY2suCj4gPiA+Pj4gKyAqCj4g PiA+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gc2hhbGwgYmUgY2FsbGVkIGluIGEgY29udGV4dCB0aGF0 IGNhbiBzbGVlcC4KPiA+ID4+PiArICovCj4gPiA+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfbm90 aWZ5KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPiA+Pj4gKwkJCSAgIGVudW0gZHJtX2Nv bm5lY3Rvcl9zdGF0dXMgc3RhdHVzKQo+ID4gPj4+ICt7Cj4gPiA+Pj4gKwltdXRleF9sb2NrKCZi cmlkZ2UtPmhwZF9tdXRleCk7Cj4gPiA+Pj4gKwlpZiAoYnJpZGdlLT5ocGRfY2IpCj4gPiA+Pj4g KwkJYnJpZGdlLT5ocGRfY2IoYnJpZGdlLT5ocGRfZGF0YSwgc3RhdHVzKTsKPiA+ID4gCj4gPiA+ IFNvIHRoaXMgaXNuJ3QgcXVpdGUgd2hhdCBJIGhhZCBpbiBtaW5kLiBJbnN0ZWFkIHNvbWV0aGlu ZyBsaWtlIHRoaXM6Cj4gPiA+IAo+ID4gPiAJLyogaXRlcmF0ZXMgb3ZlciBhbGwgYnJpZGdlcyBp biB0aGUgY2hhaW4gY29udGFpbmluZyBAYnJpZGdlICovCj4gPiA+IAlmb3JfZWFjaF9icmlkZ2Uo dG1wX2JyaWRnZSwgYnJpZGdlKSB7Cj4gPiA+IAkJaWYgKHRtcF9icmlkZ2UgPT0gYnJpZGdlKQo+ ID4gPiAJCQljb250aW51ZTsKPiA+ID4gCQlpZiAoYnJpZGdlLT5ocGRfbm90aWZ5KTsKPiA+ID4g CQkJYnJpZGdlLT5ocGRfbm90aWZ5KHRtcF9icmlkZ2UsIGJyaWRnZSwgc3RhdHVzKTsKPiA+ID4g CX0KPiA+ID4gCj4gPiA+IAllbmNvZGVyID0gZW5jb2Rlcl9mb3JfYnJpZGdlKGJyaWRnZSk7Cj4g PiA+IAlpZiAoZW5jb2Rlci0+aGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KQo+ID4g PiAJCWVuY29kZXItPmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeShlbmNvZGVyLCBi cmlkZ2UsIHN0YXR1cyk7Cj4gPiA+IAo+ID4gPiAJZGV2ID0gYnJpZGdlLT5kZXYKPiA+ID4gCWlm IChkZXYtPm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSkKPiA+ ID4gCQlkZXYtPm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeShk ZXYsIGJyaWRnZSwgc3RhdHVzKQo+ID4gPiAKPiA+ID4gTm8gcmVnaXN0ZXIgY2FsbGJhY2sgbmVl ZGVkLCBubyBsb2NraW5nIG5lZWRlZCwgZXZlcnlvbmUgZ2V0cyBleGFjdGx5IHRoZQo+ID4gPiBo cGQgdGhleSB3YW50L25lZWQuCj4gPiAKPiA+IEknbGwgcmVwbHkgdG8gdGhpcyBmdXJ0aGVyIGRv d24gdGhlIG1haWwgdGhyZWFkLCB0byBhZGRyZXNzIGFkZGl0aW9uYWwKPiA+IGNvbW1lbnRzLgo+ ID4gCj4gPiA+Pj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+ID4+PiAr fQo+ID4gPj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1fYnJpZGdlX2hwZF9ub3RpZnkpOwo+ID4g Pj4+ICsKPiA+ID4+PiAgI2lmZGVmIENPTkZJR19PRgo+ID4gPj4+ICAvKioKPiA+ID4+PiAgICog b2ZfZHJtX2ZpbmRfYnJpZGdlIC0gZmluZCB0aGUgYnJpZGdlIGNvcnJlc3BvbmRpbmcgdG8gdGhl IGRldmljZSBub2RlIGluCj4gPiA+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9icmlk Z2UuaCBiL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ID4gPj4+IGluZGV4IDA4ZGMxNWY5M2Rl ZC4uYjk0NDVhYTViMWVmIDEwMDY0NAo+ID4gPj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9icmlk Z2UuaAo+ID4gPj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ID4gPj4+IEBAIC0y Myw4ICsyMyw5IEBACj4gPiA+Pj4gICNpZm5kZWYgX19EUk1fQlJJREdFX0hfXwo+ID4gPj4+ICAj ZGVmaW5lIF9fRFJNX0JSSURHRV9IX18KPiA+ID4+PiAgCj4gPiA+Pj4gLSNpbmNsdWRlIDxsaW51 eC9saXN0Lmg+Cj4gPiA+Pj4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+ID4gPj4+ICsjaW5j bHVkZSA8bGludXgvbGlzdC5oPgo+ID4gPj4+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KPiA+ ID4+PiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZV9vYmplY3QuaD4KPiA+ID4+PiAgI2luY2x1ZGUg PGRybS9kcm1fbW9kZXMuaD4KPiA+ID4+PiAgCj4gPiA+Pj4gQEAgLTMzNCw2ICszMzUsMTEwIEBA IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHsKPiA+ID4+PiAgCSAqLwo+ID4gPj4+ICAJdm9pZCAo KmF0b21pY19wb3N0X2Rpc2FibGUpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPiA+Pj4g IAkJCQkgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+ID4+PiArCj4gPiA+ Pj4gKwkvKioKPiA+ID4+PiArCSAqIEBkZXRlY3Q6Cj4gPiA+Pj4gKwkgKgo+ID4gPj4+ICsJICog Q2hlY2sgaWYgYW55dGhpbmcgaXMgYXR0YWNoZWQgdG8gdGhlIGJyaWRnZSBvdXRwdXQuCj4gPiA+ Pj4gKwkgKgo+ID4gPj4+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCwgaWYgbm90IGlt cGxlbWVudGVkIHRoZSBicmlkZ2Ugd2lsbCBiZQo+ID4gPj4+ICsJICogY29uc2lkZXJlZCBhcyBh bHdheXMgaGF2aW5nIGEgY29tcG9uZW50IGF0dGFjaGVkIHRvIGl0cyBvdXRwdXQuCj4gPiA+Pj4g KwkgKiBCcmlkZ2VzIHRoYXQgaW1wbGVtZW50IHRoaXMgY2FsbGJhY2sgc2hhbGwgc2V0IHRoZQo+ ID4gPj4+ICsJICogRFJNX0JSSURHRV9PUF9ERVRFQ1QgZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRn ZS0+b3BzLgo+ID4gPj4+ICsJICoKPiA+ID4+PiArCSAqIFJFVFVSTlM6Cj4gPiA+Pj4gKwkgKgo+ ID4gPj4+ICsJICogZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgaW5kaWNhdGluZyB0aGUgYnJpZGdlIG91 dHB1dCBzdGF0dXMuCj4gPiA+Pj4gKwkgKi8KPiA+ID4+PiArCWVudW0gZHJtX2Nvbm5lY3Rvcl9z dGF0dXMgKCpkZXRlY3QpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ID4gPj4+ICsKPiA+ ID4+PiArCS8qKgo+ID4gPj4+ICsJICogQGdldF9tb2RlczoKPiA+ID4+PiArCSAqCj4gPiA+Pj4g KwkgKiBGaWxsIGFsbCBtb2RlcyBjdXJyZW50bHkgdmFsaWQgZm9yIHRoZSBzaW5rIGludG8gdGhl ICZkcm1fY29ubmVjdG9yCj4gPiA+Pj4gKwkgKiB3aXRoIGRybV9tb2RlX3Byb2JlZF9hZGQoKS4K PiA+ID4+PiArCSAqCj4gPiA+Pj4gKwkgKiBUaGUgQGdldF9tb2RlcyBjYWxsYmFjayBpcyBtb3N0 bHkgaW50ZW5kZWQgdG8gc3VwcG9ydCBub24tcHJvYmFibGUKPiA+ID4+PiArCSAqIGRpc3BsYXlz IHN1Y2ggYXMgbWFueSBmaXhlZCBwYW5lbHMuIEJyaWRnZXMgdGhhdCBzdXBwb3J0IHJlYWRpbmcK PiA+ID4+PiArCSAqIEVESUQgc2hhbGwgbGVhdmUgQGdldF9tb2RlcyB1bmltcGxlbWVudGVkIGFu ZCBpbXBsZW1lbnQgdGhlCj4gPiA+Pj4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X2VkaWQg Y2FsbGJhY2sgaW5zdGVhZC4KPiA+ID4+PiArCSAqCj4gPiA+Pj4gKwkgKiBUaGlzIGNhbGxiYWNr IGlzIG9wdGlvbmFsLiBCcmlkZ2VzIHRoYXQgaW1wbGVtZW50IGl0IHNoYWxsIHNldCB0aGUKPiA+ ID4+PiArCSAqIERSTV9CUklER0VfT1BfTU9ERVMgZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+ b3BzLgo+ID4gPj4+ICsJICoKPiA+ID4+PiArCSAqIFJFVFVSTlM6Cj4gPiA+Pj4gKwkgKgo+ID4g Pj4+ICsJICogVGhlIG51bWJlciBvZiBtb2RlcyBhZGRlZCBieSBjYWxsaW5nIGRybV9tb2RlX3By b2JlZF9hZGQoKS4KPiA+ID4+PiArCSAqLwo+ID4gPj4+ICsJaW50ICgqZ2V0X21vZGVzKShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4gPj4+ICsJCQkgc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3Rvcik7Cj4gPiA+Pj4gKwo+ID4gPj4+ICsJLyoqCj4gPiA+Pj4gKwkgKiBAZ2V0X2Vk aWQ6Cj4gPiA+Pj4gKwkgKgo+ID4gPj4+ICsJICogUmVhZCBhbmQgcGFyc2UgdGhlIEVESUQgZGF0 YSBvZiB0aGUgY29ubmVjdGVkIGRpc3BsYXkuCj4gPiA+Pj4gKwkgKgo+ID4gPj4+ICsJICogVGhl IEBnZXRfZWRpZCBjYWxsYmFjayBpcyB0aGUgcHJlZmVycmVkIHdheSBvZiByZXBvcnRpbmcgbW9k ZQo+ID4gPj4+ICsJICogaW5mb3JtYXRpb24gZm9yIGEgZGlzcGxheSBjb25uZWN0ZWQgdG8gdGhl IGJyaWRnZSBvdXRwdXQuIEJyaWRnZXMKPiA+ID4+PiArCSAqIHRoYXQgc3VwcG9ydCByZWFkaW5k IEVESUQgc2hhbGwgaW1wbGVtZW50IHRoaXMgY2FsbGJhY2sgYW5kIGxlYXZlCj4gPiA+Pj4gKwkg KiB0aGUgQGdldF9tb2RlcyBjYWxsYmFjayB1bmltcGxlbWVudGVkLgo+ID4gPj4+ICsJICoKPiA+ ID4+PiArCSAqIFRoZSBjYWxsZXIgb2YgdGhpcyBvcGVyYXRpb24gc2hhbGwgZmlyc3QgdmVyaWZ5 IHRoZSBvdXRwdXQKPiA+ID4+PiArCSAqIGNvbm5lY3Rpb24gc3RhdHVzIGFuZCByZWZyYWluIGZy b20gcmVhZGluZyBFRElEIGZyb20gYSBkaXNjb25uZWN0ZWQKPiA+ID4+PiArCSAqIG91dHB1dC4K PiA+ID4+PiArCSAqCj4gPiA+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLiBCcmlk Z2VzIHRoYXQgaW1wbGVtZW50IGl0IHNoYWxsIHNldCB0aGUKPiA+ID4+PiArCSAqIERSTV9CUklE R0VfT1BfRURJRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPiA+Pj4gKwkgKgo+ ID4gPj4+ICsJICogUkVUVVJOUzoKPiA+ID4+PiArCSAqCj4gPiA+Pj4gKwkgKiBBbiBlZGlkIHN0 cnVjdHVyZSBuZXdseSBhbGxvY2F0ZWQgd2l0aCBrbWFsbG9jKCkgKG9yIHNpbWlsYXIpIG9uCj4g PiA+Pj4gKwkgKiBzdWNjZXNzLCBvciBOVUxMIG90aGVyd2lzZS4gVGhlIGNhbGxlciBpcyByZXNw b25zaWJsZSBmb3IgZnJlZWluZwo+ID4gPj4+ICsJICogdGhlIHJldHVybmVkIGVkaWQgc3RydWN0 dXJlIHdpdGgga2ZyZWUoKS4KPiA+ID4+PiArCSAqLwo+ID4gPj4+ICsJc3RydWN0IGVkaWQgKigq Z2V0X2VkaWQpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPiA+Pj4gKwkJCQkgc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiA+PiAKPiA+ID4+IEl0IG92ZXJsYXBzIHdp dGggZ2V0X21vZGVzLCBJIGd1ZXNzIHByZXNlbmNlIG9mIG9uZSBvcHMgc2hvdWxkIGRpc2FsbG93 Cj4gPiA+PiBwcmVzZW5jZSBvZiBhbm90aGVyIG9uZT8KPiA+ID4+IAo+ID4gPj4gSSBhbSBub3Qg cmVhbGx5IGNvbnZpbmNlZCB3ZSBuZWVkIHRoaXMgb3AgYXQgYWxsLCBjYW5ub3Qgd2UganVzdCBh c3NpZ24KPiA+ID4+IHNvbWUgaGVscGVyIGZ1bmN0aW9uIHRvIC5nZXRfbW9kZXMgY2IsIHdoaWNo IHdpbGwgZG8gdGhlIHNhbWU/Cj4gPiA+IAo+ID4gPiBQbGFuIEIpOiBkaXRjaCAtPmdldF9lZGlk LCByZXF1aXJlIHRoYXQgdGhlIGRyaXZlciBoYXMgLT5nZXRfbW9kZXMgaW4gdGhhdAo+ID4gPiBj YXNlLCBhbmQgcmVxdWlyZSB0aGF0IGlmIGl0IGhhcyBhbiBlZGlkIGl0IG11c3QgZmlsbCBvdXQg Y29ubmVjdG9yLT5pbmZvCj4gPiA+IGFuZCBjb25uZWN0b3ItPmVkaWQgY29ycmVjdGx5Lgo+ID4g Cj4gPiBJIHRoaW5rIHRoYXQncyBkb2FibGUsIEknbGwgaGF2ZSBhIGxvb2suCj4gCj4gU28gSSBo YWQgYSBsb29rLCBhbmQgd2hpbGUgdGhpcyBpcyBkb2FibGUsIGl0IHdvdWxkIGVzc2VudGlhbGx5 IG1lYW4KPiB0aGF0IGFsbCBicmlkZ2VzIHRoYXQgcmV0cmlldmUgbW9kZXMgZnJvbSBFRElEIHdv dWxkIGhhdmUgdG8gcm9sbCBvdXQKPiB0aGVpciBvd24gdmVyc2lvbiBvZiB0aGUgZm9sbG93aW5n IGNvZGU6Cj4gCj4gc3RhdGljIGludCBkcm1fYnJpZGdlX2Nvbm5lY3Rvcl9nZXRfbW9kZXNfZWRp ZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+IAkJCQkJICAgICAgIHN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2UpCj4gewo+IAllbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1 czsKPiAJc3RydWN0IGVkaWQgKmVkaWQ7Cj4gCWludCBuOwo+IAo+IAlzdGF0dXMgPSBkcm1fYnJp ZGdlX2Nvbm5lY3Rvcl9kZXRlY3QoY29ubmVjdG9yLCBmYWxzZSk7Cj4gCWlmIChzdGF0dXMgIT0g Y29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpCj4gCQlnb3RvIG5vX2VkaWQ7Cj4gCj4gCWVkaWQg PSBicmlkZ2UtPmZ1bmNzLT5nZXRfZWRpZChicmlkZ2UsIGNvbm5lY3Rvcik7Cj4gCWlmICghZWRp ZCB8fCAhZHJtX2VkaWRfaXNfdmFsaWQoZWRpZCkpIHsKPiAJCWtmcmVlKGVkaWQpOwo+IAkJZ290 byBub19lZGlkOwo+IAl9Cj4gCj4gCWRybV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHko Y29ubmVjdG9yLCBlZGlkKTsKPiAJbiA9IGRybV9hZGRfZWRpZF9tb2Rlcyhjb25uZWN0b3IsIGVk aWQpOwo+IAo+IAlrZnJlZShlZGlkKTsKPiAJcmV0dXJuIG47Cj4gCj4gbm9fZWRpZDoKPiAJZHJt X2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIE5VTEwpOwo+IAlyZXR1 cm4gMDsKPiB9Cj4gCj4gSXMgdGhpcyBkZXNpcmVkID8KCldlIHN0b3JlIHRoZSBlZGlkLCBhbmQg d2Ugc3RvcmUgYSBsb3Qgb2YgZGVjb2RlZCBpbmZvcm1hdGlvbiBpbgpkcm1fY29ubmVjdG9yLT5k aXNwbGF5X2luZm8uIENhbid0IHRoZXkganVzdCBsb29rIHRoZXJlPyBSZS1mZXRjaGluZyB0aGUK ZWRpZCBkZWZpbml0ZWx5IHNvdW5kcyBsaWtlIHRoZSB3cm9uZyB0aGluZyB0byBkby4KCldlIG1p Z2h0IHJ1biBpbnRvIHNvbWUgb3JkZXJpbmcgaXNzdWUgaGVyZSBJIGd1ZXNzIHdpdGggaG90cGx1 Z3MgYW5kIHdobydzCmZldGNoaW5nIHRoZSBlZGlkIGFuZCBldmVyeXRoaW5nIGxpa2UgdGhhdC4K CkFsc28gbWF5YmUgSSdtIG1pc3NpbmcgdGhlIHBvaW50IGhlcmUsIGFuZCB0aGlua2luZyB0b28g bXVjaCBvZgotPmdldF9tb2RlcyBvbiB0aGUgY29ubmVjdG9yLiBCdXQgdGhlbiBJJ20gbm90IGNs ZWFyIG9uIHdoeSB0aGUgYnJpZGdlCm5lZWRzIHRoZSBjb25uZWN0b3IsIGFuZCB3aHkgaXQgaW5z dGVhZCBjYW4ndCBqdXN0IHJldHVybiB0aGUgZWRpZCBpdCBjYW4KcmVhZCBhbmQgbGV0IHRoZSBj YWxsZXIvY29yZSBmaWd1cmUgb3V0IGV2ZXJ5dGhpbmcgZWxzZT8KLURhbmllbAoKPiAKPiA+ID4g QnR3IGlmIGEgaHBkIGhhcHBlbnMsIHdobydzIHJlc3BvbmlibGUgZm9yIG1ha2luZyBzdXJlIHRo ZSBlZGlkL21vZGUgbGlzdAo+ID4gPiBpbiB0aGUgY29ubmVjdG9yIGlzIHVwLXRvLWRhdGU/IFdp dGggeW91ciBjdXJyZW50IGNhbGxiYWNrIGRlc2lnbiB0aGF0J3MKPiA+ID4gdXAgdG8gdGhlIGNh bGxiYWNrLCB3aGljaCBkb2Vzbid0IGZlZWwgZ3JlYXQuIE1heWJlICBkcm1fYnJpZGdlX2hwZF9u b3RpZnkKPiA+ID4gc2hvdWxkIGd1YXJhbnRlZSB0aGF0IGl0J2xsIGZpcnN0IHdhbGsgdGhlIGNv bm5lY3RvcnMgdG8gdXBkYXRlIHN0YXR1cyBhbmQKPiA+ID4gZWRpZC9tb2RlIGxpc3QgZm9yIHRo ZSBmaW5hbCBkcm1fY29ubmVjdG9yLiBBbmQgdGhlbiBpbnN0ZWFkIG9mIGp1c3QKPiA+ID4gcGFz c2luZyB0aGUgc2ltcGxlICJzdGF0dXMiLCBpdCdsbCBwYXNzIHRoZSBjb25uZWN0b3IsIHdpdGgg ZXZlcnl0aGluZwo+ID4gPiBjb3JyZWN0bHkgdXBkYXRlZC4KPiA+ID4gCj4gPiA+IE90aGVyd2lz ZSBldmVyeW9uZSBpbnRlcmVzdGVkIGluIHRoYXQgaHBkIHNpZ25hbCB3aWxsIGdvIGFuZCByZS1m ZXRjaCB0aGUKPiA+ID4gZWRpZCwgd2hpY2ggaXMgbm90IHNvIGF3ZXNvbWUgOi0pCj4gPiAKPiA+ IFdpdGggdGhlIGN1cnJlbnQgZGVzaWduIHRoZXJlJ3MgYSBzaW5nbGUgbGlzdGVuZXIsIHNvIGl0 J3Mgbm90IGEgYmlnCj4gPiBkZWFsIDotKSBGdXJ0aGVybW9yZSwgdGhlIGxpc3RlbmVyIGlzIHRo ZSBoZWxwZXIgdGhhdCBjcmVhdGVzIGEKPiA+IGNvbm5lY3RvciBvbiB0b3Agb2YgYSBjaGFpbiBv ZiBicmlkZ2VzLCBzbyBpdCdzIGEgcHJldHR5IGdvb2QgcGxhY2UgdG8KPiA+IGhhbmRsZSB0aGlz LiBTZWUgdGhlIGNhbGwgdG8gZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudCgpIGluCj4gPiBk cm1fYnJpZGdlX2Nvbm5lY3Rvcl9ocGRfY2IoKS4KPiA+IAo+ID4gSSdtIGFsbCBmb3IgcmV3b3Jr aW5nIEhQRCBhbmQgbW9kZSBmZXRjaGluZywgYnV0IEkgdGhpbmsgaXQncyBhIGJpdCB0b28KPiA+ IGJpZyBvZiBhIHJlcXVpcmVtZW50IGFzIGEgcHJlcmVxdWlzaXRlIGZvciB0aGlzIHNlcmllcyAo b3IgYXMgcGFydCBvZgo+ID4gdGhpcyBzZXJpZXMpLiBXZSBoYXZlIGhhcmR3YXJlIHRoYXQgY2Fu IHJlcG9ydCBIUEQgd2l0aCB2YXJpb3VzIGxldmVsIG9mCj4gPiBkZXRhaWxzIChmcm9tICJzb21l dGhpbmcgaGFwcGVuZWQgb24gYSBjb25uZWN0b3IiIHRvICJ0aGlzIHBhcnRpY3VsYXIKPiA+IGV2 ZW50IGhhcHBlbmVkIG9uIHRoaXMgcGFydGljdWxhciBjb25uZWN0b3IiKSwgYW5kIHdlIGNoYW5u ZWwgdGhhdAo+ID4gdGhyb3VnaCBoZWxwZXJzIHN1Y2ggYXMgZHJtX2ttc19oZWxwZXJfaG90cGx1 Z19ldmVudCgpIHRoYXQgbG9zZSB0aGUKPiA+IGRldGFpbHMgYW5kIGdvIHRocm91Z2ggYSBoZWF2 eSBtZWNoYW5pc20gdG8gcmVmZXRjaCBldmVyeXRoaW5nLiBJCj4gPiB1bmRlcnN0YW5kIHRoaXMg aXMgbmVlZGVkIGluIG1hbnkgY2FzZXMsIGJ1dCBJIHRoaW5rIHRoZXJlJ3Mgcm9vbSBmb3IKPiA+ IGltcHJvdmVtZW50LiBUaGlzIHNlcmllcywgaW4gbXkgb3BpbmlvbiwgZG9lc24ndCBnbyBpbiB0 aGUgd3JvbmcKPiA+IGRpcmVjdGlvbiBpbiB0aGF0IHJlZ2FyZCwgYXMgaXQgZXZlbnR1YWxseSBj YWxscwo+ID4gZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudCgpLCBzbyBJIHRoaW5rIGltcHJv dmVtZW50cyB3b3VsZCBtYWtlIHNlbnNlCj4gPiBvbiB0b3Agb2YgaXQuIEknbSBldmVuIHdpbGxp bmcgdG8gd29yayBvbiB0aGlzLCBwcm92aWRlZCBJIGdldCBmZWVkYmFjawo+ID4gb24gd2hhdCBp cyBkZXNpcmVkLgo+ID4gCj4gPiA+Pj4gKwkvKioKPiA+ID4+PiArCSAqIEBsb3N0X2hvdHBsdWc6 Cj4gPiA+Pj4gKwkgKgo+ID4gPj4+ICsJICogTm90aWZ5IHRoZSBicmlkZ2Ugb2YgZGlzcGxheSBk aXNjb25uZWN0aW9uLgo+ID4gPj4+ICsJICoKPiA+ID4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMg b3B0aW9uYWwsIGl0IG1heSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzIHRoYXQKPiA+ID4+PiAr CSAqIG5lZWQgdG8gYmUgbm90aWZpZWQgb2YgZGlzcGxheSBkaXNjb25uZWN0aW9uIGZvciBpbnRl cm5hbCByZWFzb25zLgo+ID4gPj4+ICsJICogT25lIHVzZSBjYXNlIGlzIHRvIHJlc2V0IHRoZSBp bnRlcm5hbCBzdGF0ZSBvZiBDRUMgY29udHJvbGxlcnMgZm9yCj4gPiA+Pj4gKwkgKiBIRE1JIGJy aWRnZXMuCj4gPiA+Pj4gKwkgKi8KPiA+ID4+PiArCXZvaWQgKCpsb3N0X2hvdHBsdWcpKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ID4gPj4+ICsKPiA+ID4+PiArCS8qKgo+ID4gPj4+ICsJ ICogQGhwZF9lbmFibGU6Cj4gPiA+Pj4gKwkgKgo+ID4gPj4+ICsJICogRW5hYmxlIGhvdCBwbHVn IGRldGVjdGlvbi4gRnJvbSBub3cgb24gdGhlIGJyaWRnZSBzaGFsbCBjYWxsCj4gPiA+Pj4gKwkg KiBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSBlYWNoIHRpbWUgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQg aW4gdGhlIG91dHB1dAo+ID4gPj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMsIHVudGlsIGhvdCBw bHVnIGRldGVjdGlvbiBnZXRzIGRpc2FibGVkIHdpdGgKPiA+ID4+PiArCSAqIEBocGRfZGlzYWJs ZS4KPiA+ID4+PiArCSAqCj4gPiA+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsIGFu ZCBzaGFsbCBvbmx5IGJlIGltcGxlbWVudGVkIGJ5IGJyaWRnZXMKPiA+ID4+PiArCSAqIHRoYXQg c3VwcG9ydCBob3QtcGx1ZyBub3RpZmljYXRpb24gd2l0aG91dCBwb2xsaW5nLiBCcmlkZ2VzIHRo YXQKPiA+ID4+PiArCSAqIGltcGxlbWVudCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhw ZF9kaXNhYmxlIGNhbGxiYWNrIGFuZCBzZXQKPiA+ID4+PiArCSAqIHRoZSBEUk1fQlJJREdFX09Q X0hQRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPiA+Pj4gKwkgKi8KPiA+ID4+ PiArCXZvaWQgKCpocGRfZW5hYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+ID4+ PiArCj4gPiA+Pj4gKwkvKioKPiA+ID4+PiArCSAqIEBocGRfZGlzYWJsZToKPiA+ID4+PiArCSAq Cj4gPiA+Pj4gKwkgKiBEaXNhYmxlIGhvdCBwbHVnIGRldGVjdGlvbi4gT25jZSB0aGlzIGZ1bmN0 aW9uIHJldHVybnMgdGhlIGJyaWRnZQo+ID4gPj4+ICsJICogc2hhbGwgbm90IGNhbGwgZHJtX2Jy aWRnZV9ocGRfbm90aWZ5KCkgd2hlbiBhIGNoYW5nZSBpbiB0aGUgb3V0cHV0Cj4gPiA+Pj4gKwkg KiBjb25uZWN0aW9uIHN0YXR1cyBvY2N1cnMuCj4gPiA+Pj4gKwkgKgo+ID4gPj4+ICsJICogVGhp cyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgc2hhbGwgb25seSBiZSBpbXBsZW1lbnRlZCBieSBi cmlkZ2VzCj4gPiA+Pj4gKwkgKiB0aGF0IHN1cHBvcnQgaG90LXBsdWcgbm90aWZpY2F0aW9uIHdp dGhvdXQgcG9sbGluZy4gQnJpZGdlcyB0aGF0Cj4gPiA+Pj4gKwkgKiBpbXBsZW1lbnQgaXQgc2hh bGwgYWxzbyBpbXBsZW1lbnQgdGhlIEBocGRfZW5hYmxlIGNhbGxiYWNrIGFuZCBzZXQKPiA+ID4+ PiArCSAqIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5v cHMuCj4gPiA+Pj4gKwkgKi8KPiA+ID4+PiArCXZvaWQgKCpocGRfZGlzYWJsZSkoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSk7Cj4gPiA+Pj4gIH07Cj4gPiA+Pj4gIAo+ID4gPj4+ICAvKioKPiA+ ID4+PiBAQCAtMzcyLDYgKzQ3NywzOCBAQCBzdHJ1Y3QgZHJtX2JyaWRnZV90aW1pbmdzIHsKPiA+ ID4+PiAgCWJvb2wgZHVhbF9saW5rOwo+ID4gPj4+ICB9Owo+ID4gPj4+ICAKPiA+ID4+PiArLyoq Cj4gPiA+Pj4gKyAqIGVudW0gZHJtX2JyaWRnZV9vcHMgLSBCaXRtYXNrIG9mIG9wZXJhdGlvbnMg c3VwcG9ydGVkIGJ5IHRoZSBicmlkZ2UKPiA+ID4+PiArICovCj4gPiA+Pj4gK2VudW0gZHJtX2Jy aWRnZV9vcHMgewo+ID4gPj4+ICsJLyoqCj4gPiA+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9ERVRF Q1Q6IFRoZSBicmlkZ2UgY2FuIGRldGVjdCBkaXNwbGF5cyBjb25uZWN0ZWQgdG8KPiA+ID4+PiAr CSAqIGl0cyBvdXRwdXQuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsIGltcGxlbWVu dCB0aGUKPiA+ID4+PiArCSAqICZkcm1fYnJpZGdlX2Z1bmNzLT5kZXRlY3QgY2FsbGJhY2suCj4g PiA+Pj4gKwkgKi8KPiA+ID4+PiArCURSTV9CUklER0VfT1BfREVURUNUID0gQklUKDApLAo+ID4g Pj4+ICsJLyoqCj4gPiA+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9FRElEOiBUaGUgYnJpZGdlIGNh biByZXRyaWV2ZSB0aGUgRURJRCBvZiB0aGUgZGlzcGxheQo+ID4gPj4+ICsJICogY29ubmVjdGVk IHRvIGl0cyBvdXRwdXQuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsIGltcGxlbWVu dAo+ID4gPj4+ICsJICogdGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfZWRpZCBjYWxsYmFjay4K PiA+ID4+PiArCSAqLwo+ID4gPj4+ICsJRFJNX0JSSURHRV9PUF9FRElEID0gQklUKDEpLAo+ID4g Pj4+ICsJLyoqCj4gPiA+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9IUEQ6IFRoZSBicmlkZ2UgY2Fu IGRldGVjdCBob3QtcGx1ZyBhbmQgaG90LXVucGx1Zwo+ID4gPj4+ICsJICogd2l0aG91dCByZXF1 aXJpbmcgcG9sbGluZy4gQnJpZGdlcyB0aGF0IHNldCB0aGlzIGZsYWcgc2hhbGwKPiA+ID4+PiAr CSAqIGltcGxlbWVudCB0aGUgJmRybV9icmlkZ2VfZnVuY3MtPmhwZF9lbmFibGUgYW5kCj4gPiA+ Pj4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy0+ZGlzYWJsZV9ocGRfY2IgY2FsbGJhY2tzLgo+ID4g Pj4+ICsJICovCj4gPiA+Pj4gKwlEUk1fQlJJREdFX09QX0hQRCA9IEJJVCgyKSwKPiA+ID4+PiAr CS8qKgo+ID4gPj4+ICsJICogQERSTV9CUklER0VfT1BfTU9ERVM6IFRoZSBicmlkZ2UgY2FuIHJl dHJpZXZpbmcgdGhlIG1vZGVzIHN1cHBvcnRlZAo+ID4gPj4+ICsJICogYnkgdGhlIGRpc3BsYXkg YXQgaXRzIG91dHB1dC4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHJlYWRpbmQgRURJRAo+ID4gPj4+ ICsJICogd2hpY2ggaXMgc2VwYXJhdGVseSBjb3ZlcmVkIGJ5IEBEUk1fQlJJREdFX09QX0VESUQu IEJyaWRnZXMgdGhhdCBzZXQKPiA+ID4+PiArCSAqIHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQg dGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfbW9kZXMgY2FsbGJhY2suCj4gPiA+Pj4gKwkgKi8K PiA+ID4+PiArCURSTV9CUklER0VfT1BfTU9ERVMgPSBCSVQoMyksCj4gPiA+Pj4gK307Cj4gPiA+ Pj4gKwo+ID4gPj4+ICAvKioKPiA+ID4+PiAgICogc3RydWN0IGRybV9icmlkZ2UgLSBjZW50cmFs IERSTSBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+ID4+PiAgICovCj4gPiA+Pj4gQEAgLTM5 OCw2ICs1MzUsMjkgQEAgc3RydWN0IGRybV9icmlkZ2Ugewo+ID4gPj4+ICAJY29uc3Qgc3RydWN0 IGRybV9icmlkZ2VfZnVuY3MgKmZ1bmNzOwo+ID4gPj4+ICAJLyoqIEBkcml2ZXJfcHJpdmF0ZTog cG9pbnRlciB0byB0aGUgYnJpZGdlIGRyaXZlcidzIGludGVybmFsIGNvbnRleHQgKi8KPiA+ID4+ PiAgCXZvaWQgKmRyaXZlcl9wcml2YXRlOwo+ID4gPj4+ICsJLyoqIEBvcHM6IGJpdG1hc2sgb2Yg b3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZSAqLwo+ID4gPj4+ICsJZW51bSBkcm1f YnJpZGdlX29wcyBvcHM7Cj4gPiA+Pj4gKwkvKioKPiA+ID4+PiArCSAqIEB0eXBlOiBUeXBlIG9m IHRoZSBjb25uZWN0aW9uIGF0IHRoZSBicmlkZ2Ugb3V0cHV0Cj4gPiA+Pj4gKwkgKiAoRFJNX01P REVfQ09OTkVDVE9SXyopLiBGb3IgYnJpZGdlcyBhdCB0aGUgZW5kIG9mIHRoaXMgY2hhaW4gdGhp cwo+ID4gPj4+ICsJICogaWRlbnRpZmllcyB0aGUgdHlwZSBvZiBjb25uZWN0ZWQgZGlzcGxheS4K PiA+ID4+PiArCSAqLwo+ID4gPj4+ICsJaW50IHR5cGU7Cj4gPiA+Pj4gKwkvKiogcHJpdmF0ZTog Ki8KPiA+ID4+PiArCS8qKgo+ID4gPj4+ICsJICogQGhwZF9tdXRleDogUHJvdGVjdHMgdGhlIEBo cGRfY2IgYW5kIEBocGRfZGF0YSBmaWVsZHMuCj4gPiA+Pj4gKwkgKi8KPiA+ID4+PiArCXN0cnVj dCBtdXRleCBocGRfbXV0ZXg7Cj4gPiA+Pj4gKwkvKioKPiA+ID4+PiArCSAqIEBocGRfY2I6IEhv dCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjaywgcmVnaXN0ZXJlZCB3aXRoCj4gPiA+Pj4gKwkgKiBk cm1fYnJpZGdlX2hwZF9lbmFibGUoKS4KPiA+ID4+PiArCSAqLwo+ID4gPj4+ICsJdm9pZCAoKmhw ZF9jYikodm9pZCAqZGF0YSwgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpOwo+ID4g Pj4+ICsJLyoqCj4gPiA+Pj4gKwkgKiBAaHBkX2RhdGE6IFByaXZhdGUgZGF0YSBwYXNzZWQgdG8g dGhlIEhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjawo+ID4gPj4+ICsJICogQGhwZF9jYi4KPiA+ ID4+PiArCSAqLwo+ID4gPj4+ICsJdm9pZCAqaHBkX2RhdGE7Cj4gPiA+Pj4gIH07Cj4gPiA+Pj4g IAo+ID4gPj4+ICB2b2lkIGRybV9icmlkZ2VfYWRkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Owo+ID4gPj4+IEBAIC00MjgsNiArNTg4LDE0IEBAIHZvaWQgZHJtX2F0b21pY19icmlkZ2VfcHJl X2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4gPj4+ICB2b2lkIGRybV9hdG9t aWNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4gPj4+ICAJCQkg ICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4gPj4+ICAKPiA+ID4+PiAr dm9pZCBkcm1fYnJpZGdlX2hwZF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ ID4+PiArCQkJICAgdm9pZCAoKmNiKSh2b2lkICpkYXRhLAo+ID4gPj4+ICsJCQkJICAgICAgZW51 bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpLAo+ID4gPj4+ICsJCQkgICB2b2lkICpkYXRh KTsKPiA+ID4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UpOwo+ID4gPj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX25vdGlmeShzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlLAo+ID4gPj4+ICsJCQkgICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVz IHN0YXR1cyk7Cj4gPiA+Pj4gKwo+ID4gPj4+ICAjaWZkZWYgQ09ORklHX0RSTV9QQU5FTF9CUklE R0UKPiA+ID4+PiAgc3RydWN0IGRybV9icmlkZ2UgKmRybV9wYW5lbF9icmlkZ2VfYWRkKHN0cnVj dCBkcm1fcGFuZWwgKnBhbmVsLAo+ID4gPj4+ICAJCQkJCXUzMiBjb25uZWN0b3JfdHlwZSk7Cj4g Cj4gLS0gCj4gUmVnYXJkcywKPiAKPiBMYXVyZW50IFBpbmNoYXJ0CgotLSAKRGFuaWVsIFZldHRl cgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwu Y2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs