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: Thu, 11 Jul 2019 17:50:35 +0200 Message-ID: <20190711155035.GO15868@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> <1d48919c-e876-152c-0f05-64eb4c62fcaf@samsung.com> <20190711131816.GM15868@phenom.ffwll.local> <6bbb03e6-0228-a3ea-f1bb-8ed6e52114d7@samsung.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 1BE0E6E16D for ; Thu, 11 Jul 2019 15:50:40 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id m10so6301547edv.6 for ; Thu, 11 Jul 2019 08:50:40 -0700 (PDT) Content-Disposition: inline In-Reply-To: <6bbb03e6-0228-a3ea-f1bb-8ed6e52114d7@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Hajda Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Laurent Pinchart , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdWwgMTEsIDIwMTkgYXQgMDU6MTI6MjZQTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3 cm90ZToKPiBPbiAxMS4wNy4yMDE5IDE1OjE4LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gT24g VGh1LCBKdWwgMTEsIDIwMTkgYXQgMDI6NDE6MDFQTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3cm90 ZToKPiA+PiBPbiAxMS4wNy4yMDE5IDA5OjM1LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+PiBP biBXZWQsIEp1bCAxMCwgMjAxOSBhdCAwMjoxMjoxNFBNICswMjAwLCBBbmRyemVqIEhhamRhIHdy b3RlOgo+ID4+Pj4gSGkgTGF1cmVudCwKPiA+Pj4+Cj4gPj4+Pgo+ID4+Pj4gSSBsaWtlIHRoZSBh cHByb2FjaCwgY3VycmVudCBwcmFjdGljZSB3aGVuIGFsbW9zdCBldmVyeSBicmlkZ2Ugc2hvdWxk Cj4gPj4+PiBvcHRpb25hbGx5IGltcGxlbWVudCBjb25uZWN0b3IsIG9yIGFsdGVybmF0aXZlbHkg ZG93bnN0cmVhbSBicmlkZ2Ugb3IKPiA+Pj4+IHBhbmVsIGlzIHZlcnkgcGFpbmZ1bC4KPiA+Pj4g WWVhaCBJIHRoaW5rIHRoaXMgbG9va3MgbW9zdGx5IHJlYXNvbmFibGUuIFNvbWUgYXBpIGRlc2ln biBjb21tZW50cyBvbiB0b3AKPiA+Pj4gb2YgQW5kcnplaicsIHdpdGggdGhlIGZhaXIgd2Fybmlu ZyB0aGF0IEkgZGlkbid0IGJvdGhlciB0byByZWFkIHVwIG9uIGhvdwo+ID4+PiBpdCdzIGFsbCB1 c2VkIGluIHRoZSBlbmQuIEkgcHJvYmFibHkgc2hvdWxkIGdvIGFuZCBkbyB0aGF0LCBhdCBsZWFz dCB0bwo+ID4+PiBnZXQgYSBmZWVsaW5nIGZvciB3aGF0IHlvdXIgaHBkX2NiIHVzdWFsbHkgZG9l cy4KPiA+Pj4KPiA+Pj4+IE1vcmUgY29tbWVudHMgaW5saW5lZC4KPiA+Pj4+Cj4gPj4+PiBPbiAw Ny4wNy4yMDE5IDIwOjE4LCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4+Pj4+IFRvIHN1cHBv cnQgaW1wbGVtZW50YXRpb24gb2YgRFJNIGNvbm5lY3RvcnMgb24gdG9wIG9mIERSTSBicmlkZ2Vz Cj4gPj4+Pj4gaW5zdGVhZCBvZiBieSBicmlkZ2VzLCB0aGUgZHJtX2JyaWRnZSBuZWVkcyB0byBl eHBvc2UgbmV3IG9wZXJhdGlvbnMgYW5kCj4gPj4+Pj4gZGF0YToKPiA+Pj4+Pgo+ID4+Pj4+IC0g T3V0cHV0IGRldGVjdGlvbiwgaG90LXBsdWcgbm90aWZpY2F0aW9uLCBtb2RlIHJldHJpZXZhbCBh bmQgRURJRAo+ID4+Pj4+ICAgcmV0cmlldmFsIG9wZXJhdGlvbnMKPiA+Pj4+PiAtIEJpdG1hc2sg b2Ygc3VwcG9ydGVkIG9wZXJhdGlvbnMKPiA+Pj4+IFdoeSBkbyB3ZSBuZWVkIHRoZXNlIGJpdG1h c2sgYXQgYWxsPyBXaHkgY2Fubm90IHdlIHJlbHkgb24gcHJlc2VuY2Ugb2YKPiA+Pj4+IG9wZXJh dGlvbidzIGNhbGxiYWNrPwo+ID4+PiBZZWFoIGFsc28gbm90IGEgaHVnZSBmYW4gb2YgdGhlc2Ug Yml0bWFza3MuIFNtZWxscyBsaWtlCj4gPj4+IERSSVZFUl9HRU18RFJJVkVSX01PREVTRVQsIGFu ZCBJIHBlcnNvbmFsbHkgcmVhbGx5IGhhdGUgdGhvc2UuIEVhc3kgdG8KPiA+Pj4gYWRkLCBnZW5l cmFsbHkgZ29vZCBleGN1c2UgdG8gbm90IGhhdmUgdG8gdGhpbmsgdGhyb3VnaCB0aGUgZGVzaWdu IGJldHdlZW4KPiA+Pj4gZGlmZmVyZW50IHBhcnRzIG9mIGRyaXZlcnMgLSAianVzdCIgYWRkIGFu b3RoZXIgZmxhZy4KPiA+Pj4+PiAtIEJyaWRnZSBvdXRwdXQgdHlwZQo+ID4+Pj4+Cj4gPj4+Pj4g QWRkIGFuZCBkb2N1bWVudCB0aGVzZS4KPiA+Pj4+Pgo+ID4+Pj4+IFRocmVlIG5ldyBicmlkZ2Ug aGVscGVyIGZ1bmN0aW9ucyBhcmUgYWxzbyBhZGRlZCB0byBoYW5kbGUgaG90IHBsdWcKPiA+Pj4+ PiBub3RpZmljYXRpb24gaW4gYSB3YXkgdGhhdCBpcyBhcyB0cmFuc3BhcmVudCBhcyBwb3NzaWJs ZSBmb3IgdGhlCj4gPj4+Pj4gYnJpZGdlcy4KPiA+Pj4+IERvY3VtZW50YXRpb24gb2YgbmV3IG9w c2VzIGRvZXMgbm90IGV4cGxhaW4gaG93IGl0IHNob3VsZCBjb29wZXJhdGUgd2l0aAo+ID4+Pj4g YnJpZGdlIGNoYWluaW5nLCBJIHN1cHBvc2UgdGhleSBzaG91bGQgYmUgY2hhaW5lZCBleHBsaWNp dGx5LCBhbSBJCj4gPj4+PiByaWdodD8gTW9yZSBjb21tZW50cyBhYm91dCBpdCBsYXRlci4KPiA+ Pj4+Cj4gPj4+Pgo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJl bnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPiA+Pj4+PiAtLS0KPiA+Pj4+PiAgZHJpdmVy cy9ncHUvZHJtL2RybV9icmlkZ2UuYyB8ICA5MiArKysrKysrKysrKysrKysrKysrCj4gPj4+Pj4g IGluY2x1ZGUvZHJtL2RybV9icmlkZ2UuaCAgICAgfCAxNzAgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0KPiA+Pj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQo+ID4+Pj4+Cj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYnJpZGdlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gPj4+Pj4g aW5kZXggNTE5NTc3ZjM2M2UzLi4zYzJhMjU1ZGY3YWYgMTAwNjQ0Cj4gPj4+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYnJpZGdlLmMKPiA+Pj4+PiBAQCAtNzAsNiArNzAsOCBAQCBzdGF0aWMgTElTVF9IRUFEKGJy aWRnZV9saXN0KTsKPiA+Pj4+PiAgICovCj4gPj4+Pj4gIHZvaWQgZHJtX2JyaWRnZV9hZGQoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+Pj4+PiAgewo+ID4+Pj4+ICsJbXV0ZXhfaW5pdCgm YnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+Pj4+ICsKPiA+Pj4+PiAgCW11dGV4X2xvY2soJmJyaWRn ZV9sb2NrKTsKPiA+Pj4+PiAgCWxpc3RfYWRkX3RhaWwoJmJyaWRnZS0+bGlzdCwgJmJyaWRnZV9s aXN0KTsKPiA+Pj4+PiAgCW11dGV4X3VubG9jaygmYnJpZGdlX2xvY2spOwo+ID4+Pj4+IEBAIC04 Niw2ICs4OCw4IEBAIHZvaWQgZHJtX2JyaWRnZV9yZW1vdmUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSkKPiA+Pj4+PiAgCW11dGV4X2xvY2soJmJyaWRnZV9sb2NrKTsKPiA+Pj4+PiAgCWxpc3Rf ZGVsX2luaXQoJmJyaWRnZS0+bGlzdCk7Cj4gPj4+Pj4gIAltdXRleF91bmxvY2soJmJyaWRnZV9s b2NrKTsKPiA+Pj4+PiArCj4gPj4+Pj4gKwltdXRleF9kZXN0cm95KCZicmlkZ2UtPmhwZF9tdXRl eCk7Cj4gPj4+Pj4gIH0KPiA+Pj4+PiAgRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX3JlbW92ZSk7 Cj4gPj4+Pj4gIAo+ID4+Pj4+IEBAIC00NjMsNiArNDY3LDk0IEBAIHZvaWQgZHJtX2F0b21pY19i cmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4gIH0KPiA+Pj4+ PiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUpOwo+ID4+Pj4+ICAKPiA+ Pj4+PiArLyoqCj4gPj4+Pj4gKyAqIGRybV9icmlkZ2VfaHBkX2VuYWJsZSAtIGVuYWJsZSBob3Qg cGx1ZyBkZXRlY3Rpb24gZm9yIHRoZSBicmlkZ2UKPiA+Pj4+PiArICogQGJyaWRnZTogYnJpZGdl IGNvbnRyb2wgc3RydWN0dXJlCj4gPj4+Pj4gKyAqIEBjYjogaG90LXBsdWcgZGV0ZWN0aW9uIGNh bGxiYWNrCj4gPj4+Pj4gKyAqIEBkYXRhOiBkYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgaG90LXBs dWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPj4+Pj4gKyAqCj4gPj4+Pj4gKyAqIENhbGwgJmRybV9i cmlkZ2VfZnVuY3MuaHBkX2VuYWJsZSBhbmQgcmVnaXN0ZXIgdGhlIGdpdmVuIEBjYiBhbmQgQGRh dGEgYXMKPiA+Pj4+PiArICogaG90IHBsdWcgbm90aWZpY2F0aW9uIGNhbGxiYWNrLiBGcm9tIG5v dyBvbiB0aGUgQGNiIHdpbGwgYmUgY2FsbGVkIHdpdGgKPiA+Pj4+PiArICogQGRhdGEgd2hlbiBh biBvdXRwdXQgc3RhdHVzIGNoYW5nZSBpcyBkZXRlY3RlZCBieSB0aGUgYnJpZGdlLCB1bnRpbCBo b3QgcGx1Zwo+ID4+Pj4+ICsgKiBub3RpZmljYXRpb24gZ2V0cyBkaXNhYmxlZCB3aXRoIGRybV9i cmlkZ2VfaHBkX2Rpc2FibGUoKS4KPiA+Pj4+PiArICoKPiA+Pj4+PiArICogSG90IHBsdWcgZGV0 ZWN0aW9uIGlzIHN1cHBvcnRlZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGlz IHNldCBpbgo+ID4+Pj4+ICsgKiBicmlkZ2UtPm9wcy4gVGhpcyBmdW5jdGlvbiBzaGFsbCBub3Qg YmUgY2FsbGVkIHdoZW4gdGhlIGZsYWcgaXMgbm90IHNldC4KPiA+Pj4+PiArICoKPiA+Pj4+PiAr ICogT25seSBvbmUgaG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrIGNhbiBiZSByZWdpc3RlcmVk IGF0IGEgdGltZSwgaXQgaXMgYW4KPiA+Pj4+PiArICogZXJyb3IgdG8gY2FsbCB0aGlzIGZ1bmN0 aW9uIHdoZW4gaG90IHBsdWcgZGV0ZWN0aW9uIGlzIGFscmVhZHkgZW5hYmxlZCBmb3IKPiA+Pj4+ PiArICogdGhlIGJyaWRnZS4KPiA+Pj4+PiArICovCj4gPj4+PiBUbyBzaW1wbGlmeSBhcmNoaXRl Y3R1cmUgbWF5YmUgd291bGQgYmUgYmV0dGVyIHRvIGVuYWJsZSBocGQganVzdCBvbgo+ID4+Pj4g YnJpZGdlIGF0dGFjaDoKPiA+Pj4+Cj4gPj4+PiBicmlkZ2UtPmhwZF9jYiA9IGNiOwo+ID4+Pj4K PiA+Pj4+IGJyaWRnZS0+aHBkX2RhdGEgPSBkYXRhOwo+ID4+Pj4KPiA+Pj4+IHJldCA9IGRybV9i cmlkZ2VfYXR0YWNoKC4uLik7Cj4gPj4+IFllYWggSSBsaWtlIHRoaXMgbW9yZS4gVGhlIG90aGVy IHByb2JsZW0gaGVyZSBpcywgd2hhdCBpZiB5b3UgbmVlZCBtb3JlCj4gPj4+IHRoYW4gMSBjYWxs YmFjayByZWdpc3RlcnMgb24gdGhlIHNhbWUgYnJpZGdlIGhkcCBzaWduYWw/Cj4gPj4+Cj4gPj4+ Cj4gPj4+PiBUaGlzIHdheSB3ZSBjb3VsZCBhdm9pZCBhZGRpbmcgbmV3IGNhbGxiYWNrcyBocGRf KGVuYWJsZXxkaXNhYmxlKQo+ID4+Pj4gd2l0aG91dCBiaWcgc2FjcmlmaWNlcy4KPiA+Pj4+Cj4g Pj4+Pgo+ID4+Pj4gT25lIG1vcmUgdGhpbmc6IEhQRCBpbiBEaXNwbGF5UG9ydC9IRE1JIGJlc2lk ZSBzaWduYWxsaW5nIHBsdWcvdW5wbHVnLAo+ID4+Pj4gbm90aWZpZXMgYWJvdXQgc2luayBzdGF0 dXMgY2hhbmdlLCBob3cgaXQgdHJhbnNsYXRlcyB0byB0aGlzIGNiPwo+ID4+Pj4KPiA+Pj4+Cj4g Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UsCj4gPj4+Pj4gKwkJCSAgIHZvaWQgKCpjYikodm9pZCAqZGF0YSwKPiA+Pj4+PiArCQkJCSAg ICAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzKSwKPiA+Pj4+PiArCQkJICAgdm9p ZCAqZGF0YSkKPiA+Pj4+PiArewo+ID4+Pj4+ICsJaWYgKCFicmlkZ2UgfHwgIWJyaWRnZS0+ZnVu Y3MtPmhwZF9lbmFibGUpCj4gPj4+Pj4gKwkJcmV0dXJuOwo+ID4+Pj4+ICsKPiA+Pj4+PiArCW11 dGV4X2xvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+Pj4+PiArCj4gPj4+Pj4gKwlpZiAoV0FS TihicmlkZ2UtPmhwZF9jYiwgIkhvdCBwbHVnIGRldGVjdGlvbiBhbHJlYWR5IGVuYWJsZWRcbiIp KQo+ID4+Pj4+ICsJCWdvdG8gdW5sb2NrOwo+ID4+Pj4+ICsKPiA+Pj4+PiArCWJyaWRnZS0+aHBk X2NiID0gY2I7Cj4gPj4+Pj4gKwlicmlkZ2UtPmhwZF9kYXRhID0gZGF0YTsKPiA+Pj4+PiArCj4g Pj4+Pj4gKwlicmlkZ2UtPmZ1bmNzLT5ocGRfZW5hYmxlKGJyaWRnZSk7Cj4gPj4+Pj4gKwo+ID4+ Pj4+ICt1bmxvY2s6Cj4gPj4+Pj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211dGV4KTsK PiA+Pj4+PiArfQo+ID4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1fYnJpZGdlX2hwZF9lbmFi bGUpOwo+ID4+Pj4+ICsKPiA+Pj4+PiArLyoqCj4gPj4+Pj4gKyAqIGRybV9icmlkZ2VfaHBkX2Rp c2FibGUgLSBkaXNhYmxlIGhvdCBwbHVnIGRldGVjdGlvbiBmb3IgdGhlIGJyaWRnZQo+ID4+Pj4+ ICsgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+Pj4+PiArICoKPiA+Pj4+ PiArICogQ2FsbCAmZHJtX2JyaWRnZV9mdW5jcy5ocGRfZGlzYWJsZSBhbmQgdW5yZWdpc3RlciB0 aGUgaG90IHBsdWcgZGV0ZWN0aW9uCj4gPj4+Pj4gKyAqIGNhbGxiYWNrIHByZXZpb3VzbHkgcmVn aXN0ZXJlZCB3aXRoIGRybV9icmlkZ2VfaHBkX2VuYWJsZSgpLiBPbmNlIHRoaXMKPiA+Pj4+PiAr ICogZnVuY3Rpb24gcmV0dXJucyB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2FsbGVkIGJ5IHRo ZSBicmlkZ2Ugd2hlbiBhbgo+ID4+Pj4+ICsgKiBvdXRwdXQgc3RhdHVzIGNoYW5nZSBvY2N1cnMu Cj4gPj4+Pj4gKyAqCj4gPj4+Pj4gKyAqIEhvdCBwbHVnIGRldGVjdGlvbiBpcyBzdXBwb3J0ZWQg b25seSBpZiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpcyBzZXQgaW4KPiA+Pj4+PiArICog YnJpZGdlLT5vcHMuIFRoaXMgZnVuY3Rpb24gc2hhbGwgbm90IGJlIGNhbGxlZCB3aGVuIHRoZSBm bGFnIGlzIG5vdCBzZXQuCj4gPj4+Pj4gKyAqLwo+ID4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBk X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+Pj4+PiArewo+ID4+Pj4+ICsJ aWYgKCFicmlkZ2UgfHwgIWJyaWRnZS0+ZnVuY3MtPmhwZF9kaXNhYmxlKQo+ID4+Pj4+ICsJCXJl dHVybjsKPiA+Pj4+PiArCj4gPj4+Pj4gKwltdXRleF9sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7 Cj4gPj4+Pj4gKwlicmlkZ2UtPmZ1bmNzLT5ocGRfZGlzYWJsZShicmlkZ2UpOwo+ID4+Pj4+ICsK PiA+Pj4+PiArCWJyaWRnZS0+aHBkX2NiID0gTlVMTDsKPiA+Pj4+PiArCWJyaWRnZS0+aHBkX2Rh dGEgPSBOVUxMOwo+ID4+Pj4+ICsJbXV0ZXhfdW5sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4g Pj4+Pj4gK30KPiA+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfZGlzYWJs ZSk7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsvKioKPiA+Pj4+PiArICogZHJtX2JyaWRnZV9ocGRfbm90 aWZ5IC0gbm90aWZ5IGhvdCBwbHVnIGRldGVjdGlvbiBldmVudHMKPiA+Pj4+PiArICogQGJyaWRn ZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gPj4+Pj4gKyAqIEBzdGF0dXM6IG91dHB1dCBj b25uZWN0aW9uIHN0YXR1cwo+ID4+Pj4+ICsgKgo+ID4+Pj4+ICsgKiBCcmlkZ2UgZHJpdmVycyBz aGFsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gcmVwb3J0IGhvdCBwbHVnIGV2ZW50cyB3aGVuIHRo ZXkKPiA+Pj4+PiArICogZGV0ZWN0IGEgY2hhbmdlIGluIHRoZSBvdXRwdXQgc3RhdHVzLCB3aGVu IGhvdCBwbHVnIGRldGVjdGlvbiBoYXMgYmVlbgo+ID4+Pj4+ICsgKiBlbmFibGVkIGJ5IHRoZSAm ZHJtX2JyaWRnZV9mdW5jcy5ocGRfZW5hYmxlIGNhbGxiYWNrLgo+ID4+Pj4+ICsgKgo+ID4+Pj4+ ICsgKiBUaGlzIGZ1bmN0aW9uIHNoYWxsIGJlIGNhbGxlZCBpbiBhIGNvbnRleHQgdGhhdCBjYW4g c2xlZXAuCj4gPj4+Pj4gKyAqLwo+ID4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX25vdGlmeShz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+ICsJCQkgICBlbnVtIGRybV9jb25uZWN0 b3Jfc3RhdHVzIHN0YXR1cykKPiA+Pj4+PiArewo+ID4+Pj4+ICsJbXV0ZXhfbG9jaygmYnJpZGdl LT5ocGRfbXV0ZXgpOwo+ID4+Pj4+ICsJaWYgKGJyaWRnZS0+aHBkX2NiKQo+ID4+Pj4+ICsJCWJy aWRnZS0+aHBkX2NiKGJyaWRnZS0+aHBkX2RhdGEsIHN0YXR1cyk7Cj4gPj4+IFNvIHRoaXMgaXNu J3QgcXVpdGUgd2hhdCBJIGhhZCBpbiBtaW5kLiBJbnN0ZWFkIHNvbWV0aGluZyBsaWtlIHRoaXM6 Cj4gPj4+Cj4gPj4+IAkvKiBpdGVyYXRlcyBvdmVyIGFsbCBicmlkZ2VzIGluIHRoZSBjaGFpbiBj b250YWluaW5nIEBicmlkZ2UgKi8KPiA+Pj4gCWZvcl9lYWNoX2JyaWRnZSh0bXBfYnJpZGdlLCBi cmlkZ2UpIHsKPiA+Pj4gCQlpZiAodG1wX2JyaWRnZSA9PSBicmlkZ2UpCj4gPj4+IAkJCWNvbnRp bnVlOwo+ID4+PiAJCWlmIChicmlkZ2UtPmhwZF9ub3RpZnkpOwo+ID4+PiAJCQlicmlkZ2UtPmhw ZF9ub3RpZnkodG1wX2JyaWRnZSwgYnJpZGdlLCBzdGF0dXMpOwo+ID4+PiAJfQo+ID4+Pgo+ID4+ PiAJZW5jb2RlciA9IGVuY29kZXJfZm9yX2JyaWRnZShicmlkZ2UpOwo+ID4+PiAJaWYgKGVuY29k ZXItPmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSkKPiA+Pj4gCQllbmNvZGVyLT5o ZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoZW5jb2RlciwgYnJpZGdlLCBzdGF0dXMp Owo+ID4+Pgo+ID4+PiAJZGV2ID0gYnJpZGdlLT5kZXYKPiA+Pj4gCWlmIChkZXYtPm1vZGVfY29u ZmlnLmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSkKPiA+Pj4gCQlkZXYtPm1vZGVf Y29uZmlnLmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeShkZXYsIGJyaWRnZSwgc3Rh dHVzKQo+ID4+Pgo+ID4+PiBObyByZWdpc3RlciBjYWxsYmFjayBuZWVkZWQsIG5vIGxvY2tpbmcg bmVlZGVkLCBldmVyeW9uZSBnZXRzIGV4YWN0bHkgdGhlCj4gPj4+IGhwZCB0aGV5IHdhbnQvbmVl ZC4KPiA+Pgo+ID4+IEFzIEkgdW5kZXJzdGFuZCB5b3Ugd2FudCB0byBub3RpZnkgZXZlcnkgbWVt YmVyIG9mIHRoZSBwaXBlbGluZS4KPiA+Pgo+ID4+IEkgdGhpbmsgaXQgc2hvdWxkIGJlIGVub3Vn aCB0byBub3RpZnkgb25seSB0aGUgc291cmNlLCBhbmQgdGhlbiBzb3VyY2UKPiA+PiBzaG91bGQg ZGVjaWRlIGlmL3doZW4gdGhlIGhwZCBzaG91bGQgYmUgcHJvcGFnYXRlZCB1cHN0cmVhbS4KPiA+ Pgo+ID4+IEl0IGxvb2tzIG1vcmUgZ2VuZXJpYyBmb3IgbWUuCj4gPiBJJ20gbm90IHBhcnNpbmcg Li4uIGRvIHlvdSB0aGluayBteSBpZGVhIGlzIG1vcmUgZ2VuZXJpYyBhbmQgdXNlZnVsLCBvcgo+ ID4gdGhlIG9uZSBmcm9tIExhdXJlbnQ/IEtpbmRhIGNvbmZ1c2VkIGhlcmUuCj4gCj4gCj4gUmVn YXJkaW5nIGdlbmVyYWwgaWRlYToKPiAKPiAxLiBMYXVyZW50J3MgYXBwcm9hY2ggaXMgdG8gbm90 aWZ5IG9ubHkgY29uc3VtZXIsIEkgZ3Vlc3MgdXN1YWxseSB2aWRlbwo+IHNvdXJjZS4KPiAKPiAy LiBZb3VyIGlzIHRvIG5vdGlmeSBhbGwgb3RoZXIgYnJpZGdlcyBhbmQgZW5jb2Rlci4KPiAKPiAK PiBBbmQgSSBwcmVmZXIgMXN0IGFwcHJvYWNoLCB3aHk6Cj4gCj4gLSB0aGUgc291cmNlIGNhbiBk ZWNpZGUgaWYvd2hlbiBhbmQgdG8gd2hvIHByb3BhZ2F0ZSB0aGUgc2lnbmFsLAo+IAo+IC0gaXMg bW9yZSBnZW5lcmljLCBmb3IgZXhhbXBsZSBpZiBicmlkZ2Ugc2VuZCBzaWduYWwgdG8gdHdvCj4g bW9uaXRvcnMvcGFuZWxzLCBpdCBjYW4gZGVsYXkgaHBkIHByb3BhZ2F0aW9uIHRpbGwgYm90aCBz aW5rcyBhcmUgcHJlc2VudCwKCldpdGggTGF1cmVudCdzIGFwcHJvYWNoIHRoZSBicmlkZ2UgY2Fu bm90IHNlbmQgdGhlIGhwZCB0byBtb3JlIHRoYW4gb25lCmNvbnN1bWVyLiBUaGVyZSdzIG9ubHkg MSBjYWxsYmFjay4gU28geW91J3JlIGV4YW1wbGUgZG9lc24ndCB3b3JrLgoKPiAtIGl0IHJlc2Vt YmxlcyBoYXJkd2FyZSB3aXJlcyA6KQoKVGhpcyBpc24ndCBmb3IgdGhlIGh3IHdpcmVzIGFmYWl1 aS4gVGhlIGh3IGhwZCB0ZXJtaW5hdGVzIGluIHRoZSBzb3VyY2UKYnJpZGdlLCB3aGljaCB0aGVu IGNhbGxzIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHRvIGluZm9ybSBhbnlvbmUgZWxzZQppbnRl cmVzdGVkIGluIHRoYXQgaHBkIHNpbmdhbC4gVGhpcyBpbmNsdWRlczoKLSBPdGhlciBicmlkZ2Vz LCBlLmcuIGlmIHRoZXkgcHJvdmlkZSBDRUMgc3VwcG9ydC4KLSBPdGhlciBicmlkZ2VzLCBtYXli ZSB0aGV5IG5lZWQgdG8gcmUtcnVuIHRoZSBIRENQIHN0YXRlIGVuZ2luZQotIE92ZXJhbGwgZHJp dmVyLCBzbyBpdCBjYW4gdXBkYXRlIHRoZSBtb2Rlcy9jb25uZWN0b3Igc3RhdHVzIGFuZCBzZW5k IHRoZQogIHVldmVudCB0byB0aGUgZHJpdmVyLgotIE92ZXJhbGwgZGlzcGxheSBwaXBlbGluZSBm b3IgdGhpcyBzcGVjaWZpYyBicmlkZ2UsIG1heWJlIHlvdSBuZWVkIHRvCiAgc2h1dCBkb3duL3Jl LWVuYWJsZSB0aGUgcGlwZSBiZWNhdXNlICRyZWFzb25zLgogClRoYXQncyBhdCBsZWFzdCBteSB1 bmRlcnN0YW5kaW5nIGZyb20gbG90cyBvZiBjaGF0cyB3aXRoIExhdXJlbnQgYWJvdXQKd2hhdCBo ZSB3YW50cyB0byBkbyBoZXJlLgoKPiBBbmQgcmVnYXJkaW5nIGltcGxlbWVudGF0aW9uOgo+IAo+ IDEuIExhdXJlbnQgcHJvcG9zZXMgdG8gcmVnaXN0ZXIgY2FsbGJhY2sgZHJtX2JyaWRnZV9ocGRf ZW5hYmxlLgo+IAo+IDIuIFlvdSBwcm9wb3NlIHRvIGFkZCBvcHMgaHBkX25vdGlmeSBpbiBicmlk Z2VzIGFuZCBlbmNvZGVycy4KPiAKPiAKPiBZb3VyIHByb3Bvc2l0aW9uIGlzIG1vcmUgc3RyYWln aHRmb3J3YXJkLCBidXQgaWYgd2Ugd2FudCB0byBub3RpZnkgb25seQo+IHNvdXJjZSB3ZSBzaG91 bGQgbG9jYXRlIGl0IGJ5IHBhcnNpbmcgbm90aWZpY2F0aW9uIGNoYWluICh3aGF0IGFib3V0Cj4g dW5jaGFpbmVkIGJyaWRnZXMpLCBvciBzdG9yZSBwb2ludGVyIHNvbWV3aGVyZSBkdXJpbmcgYXR0 YWNobWVudC4KPiAKPiBJdCBzdGlsbCBsZWF2ZXMgdXMgd2l0aCB0aGlzIHVnbHkgZHVhbGlzbSAt IHNvdXJjZSBpcyBlbmNvZGVyIG9yIGJyaWRnZSwKPiBzaW1pbGFybHkgdG8gc2luayBhcyBicmlk Z2Ugb3IgcGFuZWwsIGJ1dCBmaXhpbmcgaXQgY2FuIGJlIGRvbmUgbGF0ZXIuCgpVaCBJIHRoaW5r IHdlJ3JlIG5vdCB0YWxraW5nIGFib3V0IHRoZSBzYW1lIHRoaW5nIHJlYWxseS4gTXkgdW5kZXJz dGFuZGluZwppcyB0aGF0IHRoaXMgY2FsbGJhY2sgaXMgaWYgc29tZW9uZSAob3V0c2lkZSBvZiB0 aGlzIGJyaWRnZSkgaXMgaW50ZXJlc3RlZAppbiBhIGhwZCBzaWduYWwgX2Zyb21fIHRoaXMgYnJp ZGdlLiBXaGljaCBtZWFucyB5b3UgY2FuIG9ubHkgZXZlciBoYXZlIDEKbGlzdGVuZXIuCgpZb3Ug c2VlbSB0byBoYXZlIHNvbWUgb3RoZXIgaWRlYSBoZXJlLgotRGFuaWVsCgo+IAo+IAo+IFJlZ2Fy ZHMKPiAKPiBBbmRyemVqCj4gCj4gCj4gPiAtRGFuaWVsCj4gPgo+ID4+Cj4gPj4gUmVnYXJkcwo+ ID4+Cj4gPj4gQW5kcnplago+ID4+Cj4gPj4KPiA+Pj4+PiArCW11dGV4X3VubG9jaygmYnJpZGdl LT5ocGRfbXV0ZXgpOwo+ID4+Pj4+ICt9Cj4gPj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9i cmlkZ2VfaHBkX25vdGlmeSk7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICAjaWZkZWYgQ09ORklHX09GCj4g Pj4+Pj4gIC8qKgo+ID4+Pj4+ICAgKiBvZl9kcm1fZmluZF9icmlkZ2UgLSBmaW5kIHRoZSBicmlk Z2UgY29ycmVzcG9uZGluZyB0byB0aGUgZGV2aWNlIG5vZGUgaW4KPiA+Pj4+PiBkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4g Pj4+Pj4gaW5kZXggMDhkYzE1ZjkzZGVkLi5iOTQ0NWFhNWIxZWYgMTAwNjQ0Cj4gPj4+Pj4gLS0t IGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJt X2JyaWRnZS5oCj4gPj4+Pj4gQEAgLTIzLDggKzIzLDkgQEAKPiA+Pj4+PiAgI2lmbmRlZiBfX0RS TV9CUklER0VfSF9fCj4gPj4+Pj4gICNkZWZpbmUgX19EUk1fQlJJREdFX0hfXwo+ID4+Pj4+ICAK PiA+Pj4+PiAtI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiA+Pj4+PiAgI2luY2x1ZGUgPGxpbnV4 L2N0eXBlLmg+Cj4gPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gPj4+Pj4gKyNpbmNs dWRlIDxsaW51eC9tdXRleC5oPgo+ID4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9tb2RlX29iamVj dC5oPgo+ID4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgo+ID4+Pj4+ICAKPiA+Pj4+ PiBAQCAtMzM0LDYgKzMzNSwxMTAgQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgewo+ID4+Pj4+ ICAJICovCj4gPj4+Pj4gIAl2b2lkICgqYXRvbWljX3Bvc3RfZGlzYWJsZSkoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSwKPiA+Pj4+PiAgCQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpOwo+ID4+Pj4+ICsKPiA+Pj4+PiArCS8qKgo+ID4+Pj4+ICsJICogQGRldGVjdDoKPiA+ Pj4+PiArCSAqCj4gPj4+Pj4gKwkgKiBDaGVjayBpZiBhbnl0aGluZyBpcyBhdHRhY2hlZCB0byB0 aGUgYnJpZGdlIG91dHB1dC4KPiA+Pj4+PiArCSAqCj4gPj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNr IGlzIG9wdGlvbmFsLCBpZiBub3QgaW1wbGVtZW50ZWQgdGhlIGJyaWRnZSB3aWxsIGJlCj4gPj4+ Pj4gKwkgKiBjb25zaWRlcmVkIGFzIGFsd2F5cyBoYXZpbmcgYSBjb21wb25lbnQgYXR0YWNoZWQg dG8gaXRzIG91dHB1dC4KPiA+Pj4+PiArCSAqIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgdGhpcyBj YWxsYmFjayBzaGFsbCBzZXQgdGhlCj4gPj4+Pj4gKwkgKiBEUk1fQlJJREdFX09QX0RFVEVDVCBm bGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPj4+Pj4gKwkgKgo+ID4+Pj4+ICsJICog UkVUVVJOUzoKPiA+Pj4+PiArCSAqCj4gPj4+Pj4gKwkgKiBkcm1fY29ubmVjdG9yX3N0YXR1cyBp bmRpY2F0aW5nIHRoZSBicmlkZ2Ugb3V0cHV0IHN0YXR1cy4KPiA+Pj4+PiArCSAqLwo+ID4+Pj4+ ICsJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyAoKmRldGVjdCkoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSk7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsJLyoqCj4gPj4+Pj4gKwkgKiBAZ2V0X21vZGVz Ogo+ID4+Pj4+ICsJICoKPiA+Pj4+PiArCSAqIEZpbGwgYWxsIG1vZGVzIGN1cnJlbnRseSB2YWxp ZCBmb3IgdGhlIHNpbmsgaW50byB0aGUgJmRybV9jb25uZWN0b3IKPiA+Pj4+PiArCSAqIHdpdGgg ZHJtX21vZGVfcHJvYmVkX2FkZCgpLgo+ID4+Pj4+ICsJICoKPiA+Pj4+PiArCSAqIFRoZSBAZ2V0 X21vZGVzIGNhbGxiYWNrIGlzIG1vc3RseSBpbnRlbmRlZCB0byBzdXBwb3J0IG5vbi1wcm9iYWJs ZQo+ID4+Pj4+ICsJICogZGlzcGxheXMgc3VjaCBhcyBtYW55IGZpeGVkIHBhbmVscy4gQnJpZGdl cyB0aGF0IHN1cHBvcnQgcmVhZGluZwo+ID4+Pj4+ICsJICogRURJRCBzaGFsbCBsZWF2ZSBAZ2V0 X21vZGVzIHVuaW1wbGVtZW50ZWQgYW5kIGltcGxlbWVudCB0aGUKPiA+Pj4+PiArCSAqICZkcm1f YnJpZGdlX2Z1bmNzLT5nZXRfZWRpZCBjYWxsYmFjayBpbnN0ZWFkLgo+ID4+Pj4+ICsJICoKPiA+ Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1l bnQgaXQgc2hhbGwgc2V0IHRoZQo+ID4+Pj4+ICsJICogRFJNX0JSSURHRV9PUF9NT0RFUyBmbGFn IGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPj4+Pj4gKwkgKgo+ID4+Pj4+ICsJICogUkVU VVJOUzoKPiA+Pj4+PiArCSAqCj4gPj4+Pj4gKwkgKiBUaGUgbnVtYmVyIG9mIG1vZGVzIGFkZGVk IGJ5IGNhbGxpbmcgZHJtX21vZGVfcHJvYmVkX2FkZCgpLgo+ID4+Pj4+ICsJICovCj4gPj4+Pj4g KwlpbnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4gKwkJ CSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+Pj4+PiArCj4gPj4+Pj4gKwkv KioKPiA+Pj4+PiArCSAqIEBnZXRfZWRpZDoKPiA+Pj4+PiArCSAqCj4gPj4+Pj4gKwkgKiBSZWFk IGFuZCBwYXJzZSB0aGUgRURJRCBkYXRhIG9mIHRoZSBjb25uZWN0ZWQgZGlzcGxheS4KPiA+Pj4+ PiArCSAqCj4gPj4+Pj4gKwkgKiBUaGUgQGdldF9lZGlkIGNhbGxiYWNrIGlzIHRoZSBwcmVmZXJy ZWQgd2F5IG9mIHJlcG9ydGluZyBtb2RlCj4gPj4+Pj4gKwkgKiBpbmZvcm1hdGlvbiBmb3IgYSBk aXNwbGF5IGNvbm5lY3RlZCB0byB0aGUgYnJpZGdlIG91dHB1dC4gQnJpZGdlcwo+ID4+Pj4+ICsJ ICogdGhhdCBzdXBwb3J0IHJlYWRpbmQgRURJRCBzaGFsbCBpbXBsZW1lbnQgdGhpcyBjYWxsYmFj ayBhbmQgbGVhdmUKPiA+Pj4+PiArCSAqIHRoZSBAZ2V0X21vZGVzIGNhbGxiYWNrIHVuaW1wbGVt ZW50ZWQuCj4gPj4+Pj4gKwkgKgo+ID4+Pj4+ICsJICogVGhlIGNhbGxlciBvZiB0aGlzIG9wZXJh dGlvbiBzaGFsbCBmaXJzdCB2ZXJpZnkgdGhlIG91dHB1dAo+ID4+Pj4+ICsJICogY29ubmVjdGlv biBzdGF0dXMgYW5kIHJlZnJhaW4gZnJvbSByZWFkaW5nIEVESUQgZnJvbSBhIGRpc2Nvbm5lY3Rl ZAo+ID4+Pj4+ICsJICogb3V0cHV0Lgo+ID4+Pj4+ICsJICoKPiA+Pj4+PiArCSAqIFRoaXMgY2Fs bGJhY2sgaXMgb3B0aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgaXQgc2hhbGwgc2V0IHRo ZQo+ID4+Pj4+ICsJICogRFJNX0JSSURHRV9PUF9FRElEIGZsYWcgaW4gdGhlaXIgJmRybV9icmlk Z2UtPm9wcy4KPiA+Pj4+PiArCSAqCj4gPj4+Pj4gKwkgKiBSRVRVUk5TOgo+ID4+Pj4+ICsJICoK PiA+Pj4+PiArCSAqIEFuIGVkaWQgc3RydWN0dXJlIG5ld2x5IGFsbG9jYXRlZCB3aXRoIGttYWxs b2MoKSAob3Igc2ltaWxhcikgb24KPiA+Pj4+PiArCSAqIHN1Y2Nlc3MsIG9yIE5VTEwgb3RoZXJ3 aXNlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nCj4gPj4+Pj4gKwkgKiB0 aGUgcmV0dXJuZWQgZWRpZCBzdHJ1Y3R1cmUgd2l0aCBrZnJlZSgpLgo+ID4+Pj4+ICsJICovCj4g Pj4+Pj4gKwlzdHJ1Y3QgZWRpZCAqKCpnZXRfZWRpZCkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSwKPiA+Pj4+PiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+Pj4+ IEl0IG92ZXJsYXBzIHdpdGggZ2V0X21vZGVzLCBJIGd1ZXNzIHByZXNlbmNlIG9mIG9uZSBvcHMg c2hvdWxkIGRpc2FsbG93Cj4gPj4+PiBwcmVzZW5jZSBvZiBhbm90aGVyIG9uZT8KPiA+Pj4+Cj4g Pj4+PiBJIGFtIG5vdCByZWFsbHkgY29udmluY2VkIHdlIG5lZWQgdGhpcyBvcCBhdCBhbGwsIGNh bm5vdCB3ZSBqdXN0IGFzc2lnbgo+ID4+Pj4gc29tZSBoZWxwZXIgZnVuY3Rpb24gdG8gLmdldF9t b2RlcyBjYiwgd2hpY2ggd2lsbCBkbyB0aGUgc2FtZT8KPiA+Pj4gUGxhbiBCKTogZGl0Y2ggLT5n ZXRfZWRpZCwgcmVxdWlyZSB0aGF0IHRoZSBkcml2ZXIgaGFzIC0+Z2V0X21vZGVzIGluIHRoYXQK PiA+Pj4gY2FzZSwgYW5kIHJlcXVpcmUgdGhhdCBpZiBpdCBoYXMgYW4gZWRpZCBpdCBtdXN0IGZp bGwgb3V0IGNvbm5lY3Rvci0+aW5mbwo+ID4+PiBhbmQgY29ubmVjdG9yLT5lZGlkIGNvcnJlY3Rs eS4KPiA+Pj4KPiA+Pj4gQnR3IGlmIGEgaHBkIGhhcHBlbnMsIHdobydzIHJlc3BvbmlibGUgZm9y IG1ha2luZyBzdXJlIHRoZSBlZGlkL21vZGUgbGlzdAo+ID4+PiBpbiB0aGUgY29ubmVjdG9yIGlz IHVwLXRvLWRhdGU/IFdpdGggeW91ciBjdXJyZW50IGNhbGxiYWNrIGRlc2lnbiB0aGF0J3MKPiA+ Pj4gdXAgdG8gdGhlIGNhbGxiYWNrLCB3aGljaCBkb2Vzbid0IGZlZWwgZ3JlYXQuIE1heWJlICBk cm1fYnJpZGdlX2hwZF9ub3RpZnkKPiA+Pj4gc2hvdWxkIGd1YXJhbnRlZSB0aGF0IGl0J2xsIGZp cnN0IHdhbGsgdGhlIGNvbm5lY3RvcnMgdG8gdXBkYXRlIHN0YXR1cyBhbmQKPiA+Pj4gZWRpZC9t b2RlIGxpc3QgZm9yIHRoZSBmaW5hbCBkcm1fY29ubmVjdG9yLiBBbmQgdGhlbiBpbnN0ZWFkIG9m IGp1c3QKPiA+Pj4gcGFzc2luZyB0aGUgc2ltcGxlICJzdGF0dXMiLCBpdCdsbCBwYXNzIHRoZSBj b25uZWN0b3IsIHdpdGggZXZlcnl0aGluZwo+ID4+PiBjb3JyZWN0bHkgdXBkYXRlZC4KPiA+Pj4K PiA+Pj4gT3RoZXJ3aXNlIGV2ZXJ5b25lIGludGVyZXN0ZWQgaW4gdGhhdCBocGQgc2lnbmFsIHdp bGwgZ28gYW5kIHJlLWZldGNoIHRoZQo+ID4+PiBlZGlkLCB3aGljaCBpcyBub3Qgc28gYXdlc29t ZSA6LSkKPiA+Pj4gLURhbmllbAo+ID4+Pgo+ID4+Pj4gUmVnYXJkcwo+ID4+Pj4KPiA+Pj4+IEFu ZHJ6ZWoKPiA+Pj4+Cj4gPj4+Pgo+ID4+Pj4+ICsKPiA+Pj4+PiArCS8qKgo+ID4+Pj4+ICsJICog QGxvc3RfaG90cGx1ZzoKPiA+Pj4+PiArCSAqCj4gPj4+Pj4gKwkgKiBOb3RpZnkgdGhlIGJyaWRn ZSBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24uCj4gPj4+Pj4gKwkgKgo+ID4+Pj4+ICsJICogVGhp cyBjYWxsYmFjayBpcyBvcHRpb25hbCwgaXQgbWF5IGJlIGltcGxlbWVudGVkIGJ5IGJyaWRnZXMg dGhhdAo+ID4+Pj4+ICsJICogbmVlZCB0byBiZSBub3RpZmllZCBvZiBkaXNwbGF5IGRpc2Nvbm5l Y3Rpb24gZm9yIGludGVybmFsIHJlYXNvbnMuCj4gPj4+Pj4gKwkgKiBPbmUgdXNlIGNhc2UgaXMg dG8gcmVzZXQgdGhlIGludGVybmFsIHN0YXRlIG9mIENFQyBjb250cm9sbGVycyBmb3IKPiA+Pj4+ PiArCSAqIEhETUkgYnJpZGdlcy4KPiA+Pj4+PiArCSAqLwo+ID4+Pj4+ICsJdm9pZCAoKmxvc3Rf aG90cGx1Zykoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsJ LyoqCj4gPj4+Pj4gKwkgKiBAaHBkX2VuYWJsZToKPiA+Pj4+PiArCSAqCj4gPj4+Pj4gKwkgKiBF bmFibGUgaG90IHBsdWcgZGV0ZWN0aW9uLiBGcm9tIG5vdyBvbiB0aGUgYnJpZGdlIHNoYWxsIGNh bGwKPiA+Pj4+PiArCSAqIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIGVhY2ggdGltZSBhIGNoYW5n ZSBpcyBkZXRlY3RlZCBpbiB0aGUgb3V0cHV0Cj4gPj4+Pj4gKwkgKiBjb25uZWN0aW9uIHN0YXR1 cywgdW50aWwgaG90IHBsdWcgZGV0ZWN0aW9uIGdldHMgZGlzYWJsZWQgd2l0aAo+ID4+Pj4+ICsJ ICogQGhwZF9kaXNhYmxlLgo+ID4+Pj4+ICsJICoKPiA+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sg aXMgb3B0aW9uYWwgYW5kIHNoYWxsIG9ubHkgYmUgaW1wbGVtZW50ZWQgYnkgYnJpZGdlcwo+ID4+ Pj4+ICsJICogdGhhdCBzdXBwb3J0IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBvbGxp bmcuIEJyaWRnZXMgdGhhdAo+ID4+Pj4+ICsJICogaW1wbGVtZW50IGl0IHNoYWxsIGFsc28gaW1w bGVtZW50IHRoZSBAaHBkX2Rpc2FibGUgY2FsbGJhY2sgYW5kIHNldAo+ID4+Pj4+ICsJICogdGhl IERSTV9CUklER0VfT1BfSFBEIGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9wcy4KPiA+Pj4+ PiArCSAqLwo+ID4+Pj4+ICsJdm9pZCAoKmhwZF9lbmFibGUpKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UpOwo+ID4+Pj4+ICsKPiA+Pj4+PiArCS8qKgo+ID4+Pj4+ICsJICogQGhwZF9kaXNhYmxl Ogo+ID4+Pj4+ICsJICoKPiA+Pj4+PiArCSAqIERpc2FibGUgaG90IHBsdWcgZGV0ZWN0aW9uLiBP bmNlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnJpZGdlCj4gPj4+Pj4gKwkgKiBzaGFsbCBu b3QgY2FsbCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSB3aGVuIGEgY2hhbmdlIGluIHRoZSBvdXRw dXQKPiA+Pj4+PiArCSAqIGNvbm5lY3Rpb24gc3RhdHVzIG9jY3Vycy4KPiA+Pj4+PiArCSAqCj4g Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsIGFuZCBzaGFsbCBvbmx5IGJlIGlt cGxlbWVudGVkIGJ5IGJyaWRnZXMKPiA+Pj4+PiArCSAqIHRoYXQgc3VwcG9ydCBob3QtcGx1ZyBu b3RpZmljYXRpb24gd2l0aG91dCBwb2xsaW5nLiBCcmlkZ2VzIHRoYXQKPiA+Pj4+PiArCSAqIGlt cGxlbWVudCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhwZF9lbmFibGUgY2FsbGJhY2sg YW5kIHNldAo+ID4+Pj4+ICsJICogdGhlIERSTV9CUklER0VfT1BfSFBEIGZsYWcgaW4gdGhlaXIg JmRybV9icmlkZ2UtPm9wcy4KPiA+Pj4+PiArCSAqLwo+ID4+Pj4+ICsJdm9pZCAoKmhwZF9kaXNh YmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+Pj4+PiAgfTsKPiA+Pj4+PiAgCj4g Pj4+Pj4gIC8qKgo+ID4+Pj4+IEBAIC0zNzIsNiArNDc3LDM4IEBAIHN0cnVjdCBkcm1fYnJpZGdl X3RpbWluZ3Mgewo+ID4+Pj4+ICAJYm9vbCBkdWFsX2xpbms7Cj4gPj4+Pj4gIH07Cj4gPj4+Pj4g IAo+ID4+Pj4+ICsvKioKPiA+Pj4+PiArICogZW51bSBkcm1fYnJpZGdlX29wcyAtIEJpdG1hc2sg b2Ygb3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZQo+ID4+Pj4+ICsgKi8KPiA+Pj4+ PiArZW51bSBkcm1fYnJpZGdlX29wcyB7Cj4gPj4+Pj4gKwkvKioKPiA+Pj4+PiArCSAqIEBEUk1f QlJJREdFX09QX0RFVEVDVDogVGhlIGJyaWRnZSBjYW4gZGV0ZWN0IGRpc3BsYXlzIGNvbm5lY3Rl ZCB0bwo+ID4+Pj4+ICsJICogaXRzIG91dHB1dC4gQnJpZGdlcyB0aGF0IHNldCB0aGlzIGZsYWcg c2hhbGwgaW1wbGVtZW50IHRoZQo+ID4+Pj4+ICsJICogJmRybV9icmlkZ2VfZnVuY3MtPmRldGVj dCBjYWxsYmFjay4KPiA+Pj4+PiArCSAqLwo+ID4+Pj4+ICsJRFJNX0JSSURHRV9PUF9ERVRFQ1Qg PSBCSVQoMCksCj4gPj4+Pj4gKwkvKioKPiA+Pj4+PiArCSAqIEBEUk1fQlJJREdFX09QX0VESUQ6 IFRoZSBicmlkZ2UgY2FuIHJldHJpZXZlIHRoZSBFRElEIG9mIHRoZSBkaXNwbGF5Cj4gPj4+Pj4g KwkgKiBjb25uZWN0ZWQgdG8gaXRzIG91dHB1dC4gQnJpZGdlcyB0aGF0IHNldCB0aGlzIGZsYWcg c2hhbGwgaW1wbGVtZW50Cj4gPj4+Pj4gKwkgKiB0aGUgJmRybV9icmlkZ2VfZnVuY3MtPmdldF9l ZGlkIGNhbGxiYWNrLgo+ID4+Pj4+ICsJICovCj4gPj4+Pj4gKwlEUk1fQlJJREdFX09QX0VESUQg PSBCSVQoMSksCj4gPj4+Pj4gKwkvKioKPiA+Pj4+PiArCSAqIEBEUk1fQlJJREdFX09QX0hQRDog VGhlIGJyaWRnZSBjYW4gZGV0ZWN0IGhvdC1wbHVnIGFuZCBob3QtdW5wbHVnCj4gPj4+Pj4gKwkg KiB3aXRob3V0IHJlcXVpcmluZyBwb2xsaW5nLiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxhZyBz aGFsbAo+ID4+Pj4+ICsJICogaW1wbGVtZW50IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy0+aHBkX2Vu YWJsZSBhbmQKPiA+Pj4+PiArCSAqICZkcm1fYnJpZGdlX2Z1bmNzLT5kaXNhYmxlX2hwZF9jYiBj YWxsYmFja3MuCj4gPj4+Pj4gKwkgKi8KPiA+Pj4+PiArCURSTV9CUklER0VfT1BfSFBEID0gQklU KDIpLAo+ID4+Pj4+ICsJLyoqCj4gPj4+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9NT0RFUzogVGhl IGJyaWRnZSBjYW4gcmV0cmlldmluZyB0aGUgbW9kZXMgc3VwcG9ydGVkCj4gPj4+Pj4gKwkgKiBi eSB0aGUgZGlzcGxheSBhdCBpdHMgb3V0cHV0LiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcmVhZGlu ZCBFRElECj4gPj4+Pj4gKwkgKiB3aGljaCBpcyBzZXBhcmF0ZWx5IGNvdmVyZWQgYnkgQERSTV9C UklER0VfT1BfRURJRC4gQnJpZGdlcyB0aGF0IHNldAo+ID4+Pj4+ICsJICogdGhpcyBmbGFnIHNo YWxsIGltcGxlbWVudCB0aGUgJmRybV9icmlkZ2VfZnVuY3MtPmdldF9tb2RlcyBjYWxsYmFjay4K PiA+Pj4+PiArCSAqLwo+ID4+Pj4+ICsJRFJNX0JSSURHRV9PUF9NT0RFUyA9IEJJVCgzKSwKPiA+ Pj4+PiArfTsKPiA+Pj4+PiArCj4gPj4+Pj4gIC8qKgo+ID4+Pj4+ICAgKiBzdHJ1Y3QgZHJtX2Jy aWRnZSAtIGNlbnRyYWwgRFJNIGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+ID4+Pj4+ICAgKi8K PiA+Pj4+PiBAQCAtMzk4LDYgKzUzNSwyOSBAQCBzdHJ1Y3QgZHJtX2JyaWRnZSB7Cj4gPj4+Pj4g IAljb25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyAqZnVuY3M7Cj4gPj4+Pj4gIAkvKiogQGRy aXZlcl9wcml2YXRlOiBwb2ludGVyIHRvIHRoZSBicmlkZ2UgZHJpdmVyJ3MgaW50ZXJuYWwgY29u dGV4dCAqLwo+ID4+Pj4+ICAJdm9pZCAqZHJpdmVyX3ByaXZhdGU7Cj4gPj4+Pj4gKwkvKiogQG9w czogYml0bWFzayBvZiBvcGVyYXRpb25zIHN1cHBvcnRlZCBieSB0aGUgYnJpZGdlICovCj4gPj4+ Pj4gKwllbnVtIGRybV9icmlkZ2Vfb3BzIG9wczsKPiA+Pj4+PiArCS8qKgo+ID4+Pj4+ICsJICog QHR5cGU6IFR5cGUgb2YgdGhlIGNvbm5lY3Rpb24gYXQgdGhlIGJyaWRnZSBvdXRwdXQKPiA+Pj4+ PiArCSAqIChEUk1fTU9ERV9DT05ORUNUT1JfKikuIEZvciBicmlkZ2VzIGF0IHRoZSBlbmQgb2Yg dGhpcyBjaGFpbiB0aGlzCj4gPj4+Pj4gKwkgKiBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIGNvbm5l Y3RlZCBkaXNwbGF5Lgo+ID4+Pj4+ICsJICovCj4gPj4+Pj4gKwlpbnQgdHlwZTsKPiA+Pj4+PiAr CS8qKiBwcml2YXRlOiAqLwo+ID4+Pj4+ICsJLyoqCj4gPj4+Pj4gKwkgKiBAaHBkX211dGV4OiBQ cm90ZWN0cyB0aGUgQGhwZF9jYiBhbmQgQGhwZF9kYXRhIGZpZWxkcy4KPiA+Pj4+PiArCSAqLwo+ ID4+Pj4+ICsJc3RydWN0IG11dGV4IGhwZF9tdXRleDsKPiA+Pj4+PiArCS8qKgo+ID4+Pj4+ICsJ ICogQGhwZF9jYjogSG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrLCByZWdpc3RlcmVkIHdpdGgK PiA+Pj4+PiArCSAqIGRybV9icmlkZ2VfaHBkX2VuYWJsZSgpLgo+ID4+Pj4+ICsJICovCj4gPj4+ Pj4gKwl2b2lkICgqaHBkX2NiKSh2b2lkICpkYXRhLCBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVz IHN0YXR1cyk7Cj4gPj4+Pj4gKwkvKioKPiA+Pj4+PiArCSAqIEBocGRfZGF0YTogUHJpdmF0ZSBk YXRhIHBhc3NlZCB0byB0aGUgSG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPj4+Pj4gKwkg KiBAaHBkX2NiLgo+ID4+Pj4+ICsJICovCj4gPj4+Pj4gKwl2b2lkICpocGRfZGF0YTsKPiA+Pj4+ PiAgfTsKPiA+Pj4+PiAgCj4gPj4+Pj4gIHZvaWQgZHJtX2JyaWRnZV9hZGQoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4gQEAgLTQyOCw2ICs1ODgsMTQgQEAgdm9pZCBkcm1fYXRv bWljX2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4g IHZvaWQgZHJtX2F0b21pY19icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Us Cj4gPj4+Pj4gIAkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gPj4+ Pj4gIAo+ID4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlLAo+ID4+Pj4+ICsJCQkgICB2b2lkICgqY2IpKHZvaWQgKmRhdGEsCj4gPj4+Pj4g KwkJCQkgICAgICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cyksCj4gPj4+Pj4gKwkJ CSAgIHZvaWQgKmRhdGEpOwo+ID4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfbm90 aWZ5KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4gKwkJCSAgIGVudW0gZHJtX2Nv bm5lY3Rvcl9zdGF0dXMgc3RhdHVzKTsKPiA+Pj4+PiArCj4gPj4+Pj4gICNpZmRlZiBDT05GSUdf RFJNX1BBTkVMX0JSSURHRQo+ID4+Pj4+ICBzdHJ1Y3QgZHJtX2JyaWRnZSAqZHJtX3BhbmVsX2Jy aWRnZV9hZGQoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwsCj4gPj4+Pj4gIAkJCQkJdTMyIGNvbm5l Y3Rvcl90eXBlKTsKPiAKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=