From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH 09/60] drm/bridge: Add connector-related bridge operations and data Date: Fri, 9 Aug 2019 13:55:53 +0200 Message-ID: <3d23b62c-2ddb-3a5d-1aa8-7e569b6def71@samsung.com> References: <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> <20190711155035.GO15868@phenom.ffwll.local> <7797e98a-9587-b501-9869-9393b6fc6bd2@samsung.com> <20190716090039.GW15868@phenom.ffwll.local> <9c21691c-ffd1-43ed-13f8-121271ff053e@samsung.com> <20190808193214.GA6055@pendragon.ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id C21FF6ED8F for ; Fri, 9 Aug 2019 11:55:58 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20190809115557euoutp01b19d4a69bdf48228b2724000cdb6eceb~5PyEqOiPK1384413844euoutp01Q for ; Fri, 9 Aug 2019 11:55:57 +0000 (GMT) In-Reply-To: <20190808193214.GA6055@pendragon.ideasonboard.com> Content-Language: en-US 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 T24gMDguMDguMjAxOSAyMTozMiwgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiBIZWxsbywKPgo+ IE9uIFR1ZSwgSnVsIDE2LCAyMDE5IGF0IDAzOjU3OjIxUE0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEg d3JvdGU6Cj4+IE9uIDE2LjA3LjIwMTkgMTE6MDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+PiBP biBGcmksIEp1bCAxMiwgMjAxOSBhdCAxMTowMTozOEFNICswMjAwLCBBbmRyemVqIEhhamRhIHdy b3RlOgo+Pj4+IE9uIDExLjA3LjIwMTkgMTc6NTAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+ IE9uIFRodSwgSnVsIDExLCAyMDE5IGF0IDA1OjEyOjI2UE0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEg d3JvdGU6Cj4+Pj4+PiBPbiAxMS4wNy4yMDE5IDE1OjE4LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ Pj4+Pj4+IE9uIFRodSwgSnVsIDExLCAyMDE5IGF0IDAyOjQxOjAxUE0gKzAyMDAsIEFuZHJ6ZWog SGFqZGEgd3JvdGU6Cj4+Pj4+Pj4+IE9uIDExLjA3LjIwMTkgMDk6MzUsIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4+Pj4+Pj4+PiBPbiBXZWQsIEp1bCAxMCwgMjAxOSBhdCAwMjoxMjoxNFBNICswMjAw LCBBbmRyemVqIEhhamRhIHdyb3RlOgo+Pj4+Pj4+Pj4+IEhpIExhdXJlbnQsCj4+Pj4+Pj4+Pj4K Pj4+Pj4+Pj4+PiBJIGxpa2UgdGhlIGFwcHJvYWNoLCBjdXJyZW50IHByYWN0aWNlIHdoZW4gYWxt b3N0IGV2ZXJ5IGJyaWRnZSBzaG91bGQKPj4+Pj4+Pj4+PiBvcHRpb25hbGx5IGltcGxlbWVudCBj b25uZWN0b3IsIG9yIGFsdGVybmF0aXZlbHkgZG93bnN0cmVhbSBicmlkZ2Ugb3IKPj4+Pj4+Pj4+ PiBwYW5lbCBpcyB2ZXJ5IHBhaW5mdWwuCj4+Pj4+Pj4+PiBZZWFoIEkgdGhpbmsgdGhpcyBsb29r cyBtb3N0bHkgcmVhc29uYWJsZS4gU29tZSBhcGkgZGVzaWduIGNvbW1lbnRzIG9uIHRvcAo+Pj4+ Pj4+Pj4gb2YgQW5kcnplaicsIHdpdGggdGhlIGZhaXIgd2FybmluZyB0aGF0IEkgZGlkbid0IGJv dGhlciB0byByZWFkIHVwIG9uIGhvdwo+Pj4+Pj4+Pj4gaXQncyBhbGwgdXNlZCBpbiB0aGUgZW5k LiBJIHByb2JhYmx5IHNob3VsZCBnbyBhbmQgZG8gdGhhdCwgYXQgbGVhc3QgdG8KPj4+Pj4+Pj4+ IGdldCBhIGZlZWxpbmcgZm9yIHdoYXQgeW91ciBocGRfY2IgdXN1YWxseSBkb2VzLgo+Pj4+Pj4+ Pj4KPj4+Pj4+Pj4+PiBNb3JlIGNvbW1lbnRzIGlubGluZWQuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ PiBPbiAwNy4wNy4yMDE5IDIwOjE4LCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+Pj4+Pj4+Pj4+ PiBUbyBzdXBwb3J0IGltcGxlbWVudGF0aW9uIG9mIERSTSBjb25uZWN0b3JzIG9uIHRvcCBvZiBE Uk0gYnJpZGdlcwo+Pj4+Pj4+Pj4+PiBpbnN0ZWFkIG9mIGJ5IGJyaWRnZXMsIHRoZSBkcm1fYnJp ZGdlIG5lZWRzIHRvIGV4cG9zZSBuZXcgb3BlcmF0aW9ucyBhbmQKPj4+Pj4+Pj4+Pj4gZGF0YToK Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gLSBPdXRwdXQgZGV0ZWN0aW9uLCBob3QtcGx1ZyBub3Rp ZmljYXRpb24sIG1vZGUgcmV0cmlldmFsIGFuZCBFRElECj4+Pj4+Pj4+Pj4+ICAgcmV0cmlldmFs IG9wZXJhdGlvbnMKPj4+Pj4+Pj4+Pj4gLSBCaXRtYXNrIG9mIHN1cHBvcnRlZCBvcGVyYXRpb25z Cj4+Pj4+Pj4+Pj4gV2h5IGRvIHdlIG5lZWQgdGhlc2UgYml0bWFzayBhdCBhbGw/IFdoeSBjYW5u b3Qgd2UgcmVseSBvbiBwcmVzZW5jZSBvZgo+Pj4+Pj4+Pj4+IG9wZXJhdGlvbidzIGNhbGxiYWNr Pwo+Pj4+Pj4+Pj4gWWVhaCBhbHNvIG5vdCBhIGh1Z2UgZmFuIG9mIHRoZXNlIGJpdG1hc2tzLiBT bWVsbHMgbGlrZQo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IERSSVZFUl9HRU18RFJJVkVSX01PREVTRVQs IGFuZCBJIHBlcnNvbmFsbHkgcmVhbGx5IGhhdGUgdGhvc2UuIEVhc3kgdG8KPj4+Pj4+Pj4+IGFk ZCwgZ2VuZXJhbGx5IGdvb2QgZXhjdXNlIHRvIG5vdCBoYXZlIHRvIHRoaW5rIHRocm91Z2ggdGhl IGRlc2lnbiBiZXR3ZWVuCj4+Pj4+Pj4+PiBkaWZmZXJlbnQgcGFydHMgb2YgZHJpdmVycyAtICJq dXN0IiBhZGQgYW5vdGhlciBmbGFnLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gLSBCcmlkZ2Ugb3V0 cHV0IHR5cGUKPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gQWRkIGFuZCBkb2N1bWVudCB0aGVzZS4K Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gVGhyZWUgbmV3IGJyaWRnZSBoZWxwZXIgZnVuY3Rpb25z IGFyZSBhbHNvIGFkZGVkIHRvIGhhbmRsZSBob3QgcGx1Zwo+Pj4+Pj4+Pj4+PiBub3RpZmljYXRp b24gaW4gYSB3YXkgdGhhdCBpcyBhcyB0cmFuc3BhcmVudCBhcyBwb3NzaWJsZSBmb3IgdGhlCj4+ Pj4+Pj4+Pj4+IGJyaWRnZXMuCj4+Pj4+Pj4+Pj4gRG9jdW1lbnRhdGlvbiBvZiBuZXcgb3BzZXMg ZG9lcyBub3QgZXhwbGFpbiBob3cgaXQgc2hvdWxkIGNvb3BlcmF0ZSB3aXRoCj4+Pj4+Pj4+Pj4g YnJpZGdlIGNoYWluaW5nLCBJIHN1cHBvc2UgdGhleSBzaG91bGQgYmUgY2hhaW5lZCBleHBsaWNp dGx5LCBhbSBJCj4+Pj4+Pj4+Pj4gcmlnaHQ/IE1vcmUgY29tbWVudHMgYWJvdXQgaXQgbGF0ZXIu Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8 bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+Pj4+Pj4+Pj4+PiAtLS0KPj4+Pj4+ Pj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMgfCAgOTIgKysrKysrKysrKysrKysr KysrKwo+Pj4+Pj4+Pj4+PiAgaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oICAgICB8IDE3MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+Pj4+Pj4+Pj4+PiAgMiBmaWxlcyBjaGFu Z2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+ Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fYnJpZGdlLmMKPj4+Pj4+Pj4+Pj4gaW5kZXggNTE5NTc3ZjM2M2UzLi4zYzJh MjU1ZGY3YWYgMTAwNjQ0Cj4+Pj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJp ZGdlLmMKPj4+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+Pj4+ Pj4+Pj4+PiBAQCAtNzAsNiArNzAsOCBAQCBzdGF0aWMgTElTVF9IRUFEKGJyaWRnZV9saXN0KTsK Pj4+Pj4+Pj4+Pj4gICAqLwo+Pj4+Pj4+Pj4+PiAgdm9pZCBkcm1fYnJpZGdlX2FkZChzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlKQo+Pj4+Pj4+Pj4+PiAgewo+Pj4+Pj4+Pj4+PiArCW11dGV4X2lu aXQoJmJyaWRnZS0+aHBkX211dGV4KTsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiAgCW11dGV4 X2xvY2soJmJyaWRnZV9sb2NrKTsKPj4+Pj4+Pj4+Pj4gIAlsaXN0X2FkZF90YWlsKCZicmlkZ2Ut Pmxpc3QsICZicmlkZ2VfbGlzdCk7Cj4+Pj4+Pj4+Pj4+ICAJbXV0ZXhfdW5sb2NrKCZicmlkZ2Vf bG9jayk7Cj4+Pj4+Pj4+Pj4+IEBAIC04Niw2ICs4OCw4IEBAIHZvaWQgZHJtX2JyaWRnZV9yZW1v dmUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPj4+Pj4+Pj4+Pj4gIAltdXRleF9sb2NrKCZi cmlkZ2VfbG9jayk7Cj4+Pj4+Pj4+Pj4+ICAJbGlzdF9kZWxfaW5pdCgmYnJpZGdlLT5saXN0KTsK Pj4+Pj4+Pj4+Pj4gIAltdXRleF91bmxvY2soJmJyaWRnZV9sb2NrKTsKPj4+Pj4+Pj4+Pj4gKwo+ Pj4+Pj4+Pj4+PiArCW11dGV4X2Rlc3Ryb3koJmJyaWRnZS0+aHBkX211dGV4KTsKPj4+Pj4+Pj4+ Pj4gIH0KPj4+Pj4+Pj4+Pj4gIEVYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9yZW1vdmUpOwo+Pj4+ Pj4+Pj4+PiAgCj4+Pj4+Pj4+Pj4+IEBAIC00NjMsNiArNDY3LDk0IEBAIHZvaWQgZHJtX2F0b21p Y19icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4+Pj4+Pj4+Pj4+ICB9 Cj4+Pj4+Pj4+Pj4+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZSk7Cj4+ Pj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4+Pj4gKy8qKgo+Pj4+Pj4+Pj4+PiArICogZHJtX2JyaWRnZV9o cGRfZW5hYmxlIC0gZW5hYmxlIGhvdCBwbHVnIGRldGVjdGlvbiBmb3IgdGhlIGJyaWRnZQo+Pj4+ Pj4+Pj4+PiArICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4+Pj4+Pj4+Pj4+ ICsgKiBAY2I6IGhvdC1wbHVnIGRldGVjdGlvbiBjYWxsYmFjawo+Pj4+Pj4+Pj4+PiArICogQGRh dGE6IGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBob3QtcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sK Pj4+Pj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+Pj4+ICsgKiBDYWxsICZkcm1fYnJpZGdlX2Z1bmNzLmhw ZF9lbmFibGUgYW5kIHJlZ2lzdGVyIHRoZSBnaXZlbiBAY2IgYW5kIEBkYXRhIGFzCj4+Pj4+Pj4+ Pj4+ICsgKiBob3QgcGx1ZyBub3RpZmljYXRpb24gY2FsbGJhY2suIEZyb20gbm93IG9uIHRoZSBA Y2Igd2lsbCBiZSBjYWxsZWQgd2l0aAo+Pj4+Pj4+Pj4+PiArICogQGRhdGEgd2hlbiBhbiBvdXRw dXQgc3RhdHVzIGNoYW5nZSBpcyBkZXRlY3RlZCBieSB0aGUgYnJpZGdlLCB1bnRpbCBob3QgcGx1 Zwo+Pj4+Pj4+Pj4+PiArICogbm90aWZpY2F0aW9uIGdldHMgZGlzYWJsZWQgd2l0aCBkcm1fYnJp ZGdlX2hwZF9kaXNhYmxlKCkuCj4+Pj4+Pj4+Pj4+ICsgKgo+Pj4+Pj4+Pj4+PiArICogSG90IHBs dWcgZGV0ZWN0aW9uIGlzIHN1cHBvcnRlZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQRCBm bGFnIGlzIHNldCBpbgo+Pj4+Pj4+Pj4+PiArICogYnJpZGdlLT5vcHMuIFRoaXMgZnVuY3Rpb24g c2hhbGwgbm90IGJlIGNhbGxlZCB3aGVuIHRoZSBmbGFnIGlzIG5vdCBzZXQuCj4+Pj4+Pj4+Pj4+ ICsgKgo+Pj4+Pj4+Pj4+PiArICogT25seSBvbmUgaG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNr IGNhbiBiZSByZWdpc3RlcmVkIGF0IGEgdGltZSwgaXQgaXMgYW4KPj4+Pj4+Pj4+Pj4gKyAqIGVy cm9yIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIGhvdCBwbHVnIGRldGVjdGlvbiBpcyBhbHJl YWR5IGVuYWJsZWQgZm9yCj4+Pj4+Pj4+Pj4+ICsgKiB0aGUgYnJpZGdlLgo+Pj4+Pj4+Pj4+PiAr ICovCj4+Pj4+Pj4+Pj4gVG8gc2ltcGxpZnkgYXJjaGl0ZWN0dXJlIG1heWJlIHdvdWxkIGJlIGJl dHRlciB0byBlbmFibGUgaHBkIGp1c3Qgb24KPj4+Pj4+Pj4+PiBicmlkZ2UgYXR0YWNoOgo+Pj4+ Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gYnJpZGdlLT5ocGRfY2IgPSBjYjsKPj4+Pj4+Pj4+Pgo+Pj4+Pj4+ Pj4+IGJyaWRnZS0+aHBkX2RhdGEgPSBkYXRhOwo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gcmV0ID0g ZHJtX2JyaWRnZV9hdHRhY2goLi4uKTsKPj4+Pj4+Pj4+IFllYWggSSBsaWtlIHRoaXMgbW9yZS4g VGhlIG90aGVyIHByb2JsZW0gaGVyZSBpcywgd2hhdCBpZiB5b3UgbmVlZCBtb3JlCj4+Pj4+Pj4+ PiB0aGFuIDEgY2FsbGJhY2sgcmVnaXN0ZXJzIG9uIHRoZSBzYW1lIGJyaWRnZSBoZHAgc2lnbmFs Pwo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBUaGlzIHdheSB3ZSBjb3VsZCBhdm9pZCBhZGRpbmcgbmV3 IGNhbGxiYWNrcyBocGRfKGVuYWJsZXxkaXNhYmxlKQo+Pj4+Pj4+Pj4+IHdpdGhvdXQgYmlnIHNh Y3JpZmljZXMuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBPbmUgbW9yZSB0aGluZzogSFBEIGluIERp c3BsYXlQb3J0L0hETUkgYmVzaWRlIHNpZ25hbGxpbmcgcGx1Zy91bnBsdWcsCj4+Pj4+Pj4+Pj4g bm90aWZpZXMgYWJvdXQgc2luayBzdGF0dXMgY2hhbmdlLCBob3cgaXQgdHJhbnNsYXRlcyB0byB0 aGlzIGNiPwo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2VuYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+Pj4+Pj4+Pj4+PiArCQkJICAgdm9pZCAoKmNi KSh2b2lkICpkYXRhLAo+Pj4+Pj4+Pj4+PiArCQkJCSAgICAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9z dGF0dXMgc3RhdHVzKSwKPj4+Pj4+Pj4+Pj4gKwkJCSAgIHZvaWQgKmRhdGEpCj4+Pj4+Pj4+Pj4+ ICt7Cj4+Pj4+Pj4+Pj4+ICsJaWYgKCFicmlkZ2UgfHwgIWJyaWRnZS0+ZnVuY3MtPmhwZF9lbmFi bGUpCj4+Pj4+Pj4+Pj4+ICsJCXJldHVybjsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArCW11 dGV4X2xvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiAr CWlmIChXQVJOKGJyaWRnZS0+aHBkX2NiLCAiSG90IHBsdWcgZGV0ZWN0aW9uIGFscmVhZHkgZW5h YmxlZFxuIikpCj4+Pj4+Pj4+Pj4+ICsJCWdvdG8gdW5sb2NrOwo+Pj4+Pj4+Pj4+PiArCj4+Pj4+ Pj4+Pj4+ICsJYnJpZGdlLT5ocGRfY2IgPSBjYjsKPj4+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmhwZF9k YXRhID0gZGF0YTsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+ZnVuY3MtPmhw ZF9lbmFibGUoYnJpZGdlKTsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArdW5sb2NrOgo+Pj4+ Pj4+Pj4+PiArCW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+Pj4+Pj4+Pj4+PiAr fQo+Pj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfZW5hYmxlKTsK Pj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArLyoqCj4+Pj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdl X2hwZF9kaXNhYmxlIC0gZGlzYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24gZm9yIHRoZSBicmlkZ2UK Pj4+Pj4+Pj4+Pj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+Pj4+Pj4+ Pj4+PiArICoKPj4+Pj4+Pj4+Pj4gKyAqIENhbGwgJmRybV9icmlkZ2VfZnVuY3MuaHBkX2Rpc2Fi bGUgYW5kIHVucmVnaXN0ZXIgdGhlIGhvdCBwbHVnIGRldGVjdGlvbgo+Pj4+Pj4+Pj4+PiArICog Y2FsbGJhY2sgcHJldmlvdXNseSByZWdpc3RlcmVkIHdpdGggZHJtX2JyaWRnZV9ocGRfZW5hYmxl KCkuIE9uY2UgdGhpcwo+Pj4+Pj4+Pj4+PiArICogZnVuY3Rpb24gcmV0dXJucyB0aGUgY2FsbGJh Y2sgd2lsbCBub3QgYmUgY2FsbGVkIGJ5IHRoZSBicmlkZ2Ugd2hlbiBhbgo+Pj4+Pj4+Pj4+PiAr ICogb3V0cHV0IHN0YXR1cyBjaGFuZ2Ugb2NjdXJzLgo+Pj4+Pj4+Pj4+PiArICoKPj4+Pj4+Pj4+ Pj4gKyAqIEhvdCBwbHVnIGRldGVjdGlvbiBpcyBzdXBwb3J0ZWQgb25seSBpZiB0aGUgRFJNX0JS SURHRV9PUF9IUEQgZmxhZyBpcyBzZXQgaW4KPj4+Pj4+Pj4+Pj4gKyAqIGJyaWRnZS0+b3BzLiBU aGlzIGZ1bmN0aW9uIHNoYWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB0aGUgZmxhZyBpcyBub3Qgc2V0 Lgo+Pj4+Pj4+Pj4+PiArICovCj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2Rpc2Fi bGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPj4+Pj4+Pj4+Pj4gK3sKPj4+Pj4+Pj4+Pj4g KwlpZiAoIWJyaWRnZSB8fCAhYnJpZGdlLT5mdW5jcy0+aHBkX2Rpc2FibGUpCj4+Pj4+Pj4+Pj4+ ICsJCXJldHVybjsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArCW11dGV4X2xvY2soJmJyaWRn ZS0+aHBkX211dGV4KTsKPj4+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmZ1bmNzLT5ocGRfZGlzYWJsZShi cmlkZ2UpOwo+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+ICsJYnJpZGdlLT5ocGRfY2IgPSBOVUxM Owo+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+aHBkX2RhdGEgPSBOVUxMOwo+Pj4+Pj4+Pj4+PiArCW11 dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+Pj4+Pj4+Pj4+PiArfQo+Pj4+Pj4+Pj4+ PiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfZGlzYWJsZSk7Cj4+Pj4+Pj4+Pj4+ ICsKPj4+Pj4+Pj4+Pj4gKy8qKgo+Pj4+Pj4+Pj4+PiArICogZHJtX2JyaWRnZV9ocGRfbm90aWZ5 IC0gbm90aWZ5IGhvdCBwbHVnIGRldGVjdGlvbiBldmVudHMKPj4+Pj4+Pj4+Pj4gKyAqIEBicmlk Z2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+Pj4+Pj4+Pj4+PiArICogQHN0YXR1czogb3V0 cHV0IGNvbm5lY3Rpb24gc3RhdHVzCj4+Pj4+Pj4+Pj4+ICsgKgo+Pj4+Pj4+Pj4+PiArICogQnJp ZGdlIGRyaXZlcnMgc2hhbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHJlcG9ydCBob3QgcGx1ZyBl dmVudHMgd2hlbiB0aGV5Cj4+Pj4+Pj4+Pj4+ICsgKiBkZXRlY3QgYSBjaGFuZ2UgaW4gdGhlIG91 dHB1dCBzdGF0dXMsIHdoZW4gaG90IHBsdWcgZGV0ZWN0aW9uIGhhcyBiZWVuCj4+Pj4+Pj4+Pj4+ ICsgKiBlbmFibGVkIGJ5IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy5ocGRfZW5hYmxlIGNhbGxiYWNr Lgo+Pj4+Pj4+Pj4+PiArICoKPj4+Pj4+Pj4+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gc2hhbGwgYmUg Y2FsbGVkIGluIGEgY29udGV4dCB0aGF0IGNhbiBzbGVlcC4KPj4+Pj4+Pj4+Pj4gKyAqLwo+Pj4+ Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKPj4+Pj4+Pj4+Pj4gKwkJCSAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVz KQo+Pj4+Pj4+Pj4+PiArewo+Pj4+Pj4+Pj4+PiArCW11dGV4X2xvY2soJmJyaWRnZS0+aHBkX211 dGV4KTsKPj4+Pj4+Pj4+Pj4gKwlpZiAoYnJpZGdlLT5ocGRfY2IpCj4+Pj4+Pj4+Pj4+ICsJCWJy aWRnZS0+aHBkX2NiKGJyaWRnZS0+aHBkX2RhdGEsIHN0YXR1cyk7Cj4+Pj4+Pj4+PiBTbyB0aGlz IGlzbid0IHF1aXRlIHdoYXQgSSBoYWQgaW4gbWluZC4gSW5zdGVhZCBzb21ldGhpbmcgbGlrZSB0 aGlzOgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IAkvKiBpdGVyYXRlcyBvdmVyIGFsbCBicmlkZ2VzIGlu IHRoZSBjaGFpbiBjb250YWluaW5nIEBicmlkZ2UgKi8KPj4+Pj4+Pj4+IAlmb3JfZWFjaF9icmlk Z2UodG1wX2JyaWRnZSwgYnJpZGdlKSB7Cj4+Pj4+Pj4+PiAJCWlmICh0bXBfYnJpZGdlID09IGJy aWRnZSkKPj4+Pj4+Pj4+IAkJCWNvbnRpbnVlOwo+Pj4+Pj4+Pj4gCQlpZiAoYnJpZGdlLT5ocGRf bm90aWZ5KTsKPj4+Pj4+Pj4+IAkJCWJyaWRnZS0+aHBkX25vdGlmeSh0bXBfYnJpZGdlLCBicmlk Z2UsIHN0YXR1cyk7Cj4+Pj4+Pj4+PiAJfQo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IAllbmNvZGVyID0g ZW5jb2Rlcl9mb3JfYnJpZGdlKGJyaWRnZSk7Cj4+Pj4+Pj4+PiAJaWYgKGVuY29kZXItPmhlbHBl cl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSkKPj4+Pj4+Pj4+IAkJZW5jb2Rlci0+aGVscGVy X3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KGVuY29kZXIsIGJyaWRnZSwgc3RhdHVzKTsKPj4+ Pj4+Pj4+Cj4+Pj4+Pj4+PiAJZGV2ID0gYnJpZGdlLT5kZXYKPj4+Pj4+Pj4+IAlpZiAoZGV2LT5t b2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkpCj4+Pj4+Pj4+PiAJ CWRldi0+bW9kZV9jb25maWcuaGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KGRldiwg YnJpZGdlLCBzdGF0dXMpCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gTm8gcmVnaXN0ZXIgY2FsbGJhY2sg bmVlZGVkLCBubyBsb2NraW5nIG5lZWRlZCwgZXZlcnlvbmUgZ2V0cyBleGFjdGx5IHRoZQo+Pj4+ Pj4+Pj4gaHBkIHRoZXkgd2FudC9uZWVkLgo+Pj4+Pj4+PiBBcyBJIHVuZGVyc3RhbmQgeW91IHdh bnQgdG8gbm90aWZ5IGV2ZXJ5IG1lbWJlciBvZiB0aGUgcGlwZWxpbmUuCj4+Pj4+Pj4+Cj4+Pj4+ Pj4+IEkgdGhpbmsgaXQgc2hvdWxkIGJlIGVub3VnaCB0byBub3RpZnkgb25seSB0aGUgc291cmNl LCBhbmQgdGhlbiBzb3VyY2UKPj4+Pj4+Pj4gc2hvdWxkIGRlY2lkZSBpZi93aGVuIHRoZSBocGQg c2hvdWxkIGJlIHByb3BhZ2F0ZWQgdXBzdHJlYW0uCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IEl0IGxvb2tz IG1vcmUgZ2VuZXJpYyBmb3IgbWUuCj4+Pj4+Pj4gSSdtIG5vdCBwYXJzaW5nIC4uLiBkbyB5b3Ug dGhpbmsgbXkgaWRlYSBpcyBtb3JlIGdlbmVyaWMgYW5kIHVzZWZ1bCwgb3IKPj4+Pj4+PiB0aGUg b25lIGZyb20gTGF1cmVudD8gS2luZGEgY29uZnVzZWQgaGVyZS4KPj4+Pj4+IFJlZ2FyZGluZyBn ZW5lcmFsIGlkZWE6Cj4+Pj4+Pgo+Pj4+Pj4gMS4gTGF1cmVudCdzIGFwcHJvYWNoIGlzIHRvIG5v dGlmeSBvbmx5IGNvbnN1bWVyLCBJIGd1ZXNzIHVzdWFsbHkgdmlkZW8KPj4+Pj4+IHNvdXJjZS4K Pj4+Pj4+Cj4+Pj4+PiAyLiBZb3VyIGlzIHRvIG5vdGlmeSBhbGwgb3RoZXIgYnJpZGdlcyBhbmQg ZW5jb2Rlci4KPj4+Pj4+Cj4+Pj4+PiBBbmQgSSBwcmVmZXIgMXN0IGFwcHJvYWNoLCB3aHk6Cj4+ Pj4+Pgo+Pj4+Pj4gLSB0aGUgc291cmNlIGNhbiBkZWNpZGUgaWYvd2hlbiBhbmQgdG8gd2hvIHBy b3BhZ2F0ZSB0aGUgc2lnbmFsLAo+Pj4+Pj4KPj4+Pj4+IC0gaXMgbW9yZSBnZW5lcmljLCBmb3Ig ZXhhbXBsZSBpZiBicmlkZ2Ugc2VuZCBzaWduYWwgdG8gdHdvCj4+Pj4+PiBtb25pdG9ycy9wYW5l bHMsIGl0IGNhbiBkZWxheSBocGQgcHJvcGFnYXRpb24gdGlsbCBib3RoIHNpbmtzIGFyZSBwcmVz ZW50LAo+Pj4+PiBXaXRoIExhdXJlbnQncyBhcHByb2FjaCB0aGUgYnJpZGdlIGNhbm5vdCBzZW5k IHRoZSBocGQgdG8gbW9yZSB0aGFuIG9uZQo+Pj4+PiBjb25zdW1lci4gVGhlcmUncyBvbmx5IDEg Y2FsbGJhY2suIFNvIHlvdSdyZSBleGFtcGxlIGRvZXNuJ3Qgd29yay4KPj4+PiBJZiB0aGVyZSB3 aWxsIGJlIHR3byBjb25zdW1lcnMsIHRoZXJlIHdpbGwgYmUgdHdvIGJyaWRnZSBhdHRhY2htZW50 cywKPj4+PiB0aHVzIHRoZXJlIHdpbGwgYmUgdHdvIG5vdGlmaWNhdGlvbnMsIGl0IHNob3VsZCB3 b3JrLgo+Pj4gMiBjb25zdW1lcnMsIDEgcHJvZHVjZXIuIFRoZXJlJ3Mgb25seSBfb25lXyBjYWxs YmFjayBpbiB0aGUgcHJvZHVjZXIuIFRoZQo+Pj4gY2FsbGJhY2sgaXMgcmVnaXN0ZXJlZCBvbiB0 aGUgcHJvZHVjZSBicmlkZ2UsIG5vdCBvbiB0aGUgY29uc3VtZXIgYnJpZGdlCj4+PiAob3IgSSdt IHRvdGFsbGx5IG1pc3JlYWRpbmcgd2hhdCBMYXVyZW50IGRvZXMgaGVyZSkuCj4+IEkgaGF2ZSBh c3N1bWVkIHRoYXQgaWYgZGV2aWNlcyBleHBvc2VzIHR3byBoYXJkd2FyZSBzaW5rIGludGVyZmFj ZXMgaXQKPj4gd2lsbCBleHBvc2UgdHdvIHNlcGFyYXRlIGJyaWRnZXMgLSBvZiBjb3Vyc2UgaXQg d2lsbCBub3Qgd29yayB3aXRoCj4+ICJicmlkZ2UgY2hhaW5pbmciIHRoaW5nLCBidXQgdGhpcyBp cyBhIGRpZmZlcmVudCBzdG9yeS4KPiBEYW5pZWwgaXMgcmlnaHQgdGhhdCB0aGUgY3VycmVudCBp bXBsZW1lbnRhdGlvbiBvbmx5IGFsbG93cyBvbmUKPiBjb25zdW1lci4gVGhpcyBpcyBob3dldmVy IG5vdCBhIGxpbWl0YXRpb24gb2YgdGhlIEFQSSwgYnV0IG9mIGl0cwo+IGltcGxlbWVudGF0aW9u LCBhcyBJIG9ubHkgbmVlZGVkIGEgc2luZ2xlIGNvbnN1bWVyLiBUaGUgaGVscGVycyBpbiB0aGlz Cj4gc2VyaWVzIGVuc3VyZSB0aGF0IG5laXRoZXIgdGhlIGNvbnN1bWVyIG5vciB0aGUgcHJvZHVj ZXIgcG9rZSBpbiB0aGUKPiBkcm1fYnJpZGdlIHN0cnVjdHVyZSB0byBjYWxsIGJhY2sgdG8gdGhl IEhQRCBoYW5kbGVyOgo+Cj4gLSBUaGUgY29uc3VtZXIgY2FsbHMgZHJtX2JyaWRnZV9ocGRfZW5h YmxlKCkgYW5kCj4gICBkcm1fYnJpZGdlX2hwZF9kaXNhYmxlKCksIHdoaWNoIGNvdWxkIG9mZmVy IGEgcmVmZXJlbmNlLWNvdW50ZWQKPiAgIGJlaGF2aW91ciBpZiBkZXNpcmVkIHdpdGhvdXQgY2hh bmdlcyB0byB0aGUgY29uc3VtZXIuCj4KPiAtIFRoZSBwcm9kdWNlciBnZXRzIGNvbmZpZ3VyZWQg YnkgLmhwZF9lbmFibGUoKSBhbmQgLmhwZF9kaXNhYmxlKCksCj4gICB3aGljaCBjb3VsZCBhbHNv IGVhc2lseSBhY2NvbW1vZGF0ZSByZWZlcmVuY2UtY291bnRpbmcgaW4gdGhlIGRybQo+ICAgYnJp ZGdlIGNvcmUgd2l0aG91dCBjaGFuZ2VzIHRvIHRoZSBwcm9kdWNlci4KPgo+IC0gVGhlIHByb2R1 Y2VyIG5vdGlmaWVzIEhQRCB3aXRoIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpLCB3aGljaCBjb3Vs ZAo+ICAgZWFzaWx5IGJlIGV4dGVuZGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29uc3VtZXJzIHdp dGhvdXQgY2hhbmdlcyB0bwo+ICAgdGhlIHByb2R1Y2VyLgo+Cj4gVGhpcyBpcyBhY3R1YWxseSBt eSBzZWNvbmQgdmVyc2lvbiBvZiB0aGUgSFBEIG1lY2hhbmlzbS4gVGhlIGZpcnN0Cj4gdmVyc2lv biB3YXMgbmV2ZXIgcG9zdGVkLCBwb2tlZCBpbnRvIGRybV9icmlkZ2UsIGFuZCByZXF1aXJlZCB0 aGUKPiBwcm9kdWNlciB0byBiZSBhd2FyZSBvZiB0aGUgY2FsbGJhY2tzLiBBZnRlciBkaXNjdXNz aW5nIHRoaXMgcHJpdmF0ZWx5Cj4gd2l0aCBEYW5pZWwsIEkgY2FtZSB1cCB3aXRoIHRoZSBpbXBs ZW1lbnRhdGlvbiBpbiB0aGlzIHNlcmllcyB0aGF0LAo+IHdoaWxlIG5vdCBzdXBwb3J0aW5nIG11 bHRpcGxlIGNvbnN1bWVycyBub3csIG1ha2VzIGl0IGVhc3kgdG8gZXh0ZW5kCj4gbGF0ZXIgd2l0 aG91dCBtaW5pbWFsIGVmZm9ydC4KPgo+IERhbmllbCdzIHByb3Bvc2VkIGltcGxlbWVudGF0aW9u IGFib3ZlIGxvb2tzIHJlYXNvbmFibGUgdG8gbWUsIHByb3ZpZGVkCj4gd2UgY2FuIGl0ZXJhdGUg b3ZlciB0aGUgYnJpZGdlcyBpbiBhbiBvcmRlciB0aGF0IGRvbid0IGRlcGVuZCBvbiB0aGUKPiBw b3NpdGlvbiBvZiB0aGUgcHJvZHVjZXIgaW4gdGhlIGNoYWluIChzaG91bGQgYmUgZWFzeSB0byBz b2x2ZSBieQo+IHN0YXJ0aW5nIGF0IHRoZSBlbmNvZGVyIGZvciBpbnN0YW5jZSkuIEl0IGhvd2V2 ZXIgbG9va3MgYSBiaXQgbGlrZSBhCj4gbWlkbGF5ZXIgdG8gbWUgOi0pIFRoYXQncyB3aHkgSSBo YXZlIGEgc2ltaWxhciBpbXBsZW1lbnRhdGlvbiBpbiB0aGUKPiBjb25uZWN0b3ItYnJpZGdlIGhl bHBlciwgd2hpY2ggY291bGQgYmUgZXh0ZW5kZWQgdG8gY2FsbAo+IGVuY29kZXItPmhlbHBlcl9w cml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSgpIGFuZAo+IGRldi0+bW9kZV9jb25maWcuaGVscGVy X3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KCkgaW5zdGVhZCBvZgo+IGhhcmRjb2RpbmcgZHJt X2ttc19oZWxwZXJfaG90cGx1Z19ldmVudCgpLiBNb3ZpbmcgdGhlIGNvZGUgdG8KPiBkcm1fYnJp ZGdlX2hwZF9ub3RpZnkoKSB3b3VsZCBvbiB0aGUgb3RoZXIgaGFuZCBzZXQgdGhlIG5vdGlmaWNh dGlvbgo+IHNlcXVlbmNlIHRvd2FyZHMgdGhlIGVuY29kZXIgYW5kIGRyaXZlciBpbiBzdG9uZS4g RGFuaWVsLCBkbyB5b3UgdGhpbmsKPiB0aGF0IHdvdWxkIGJlIGJldHRlciA/Cj4KPiBJIHdvdWxk IGxpa2UgdG8gcmVtaW5kIGV2ZXJ5Ym9keSB0aGF0IHRoaXMgc2VyaWVzIGlzbid0IHRoZSBsYXN0 IEkgd2lsbAo+IGV2ZXIgc3VibWl0LCBhbmQgSSBwbGFuIHRvIGRvIG1vcmUgd29yayBvbiBkcm1f YnJpZGdlIGFuZCBkcm1fcGFuZWwuIEknbQo+IG9wZW4gdG8gc3VnZ2VzdGlvbnMsIGFuZCBjYW4g YWRkcmVzcyBwcm9ibGVtcyBvbiB0b3Agb2YgdGhlc2UgcGF0Y2hlcywKPiBwcm92aWRlZCBvYnZp b3VzbHkgdGhhdCB0aGlzIHNlcmllcyBkb2Vzbid0IGdvIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24u Cj4gSSdtIG9mIGNvdXJzZSBhbHNvIHdpbGxpbmcgdG8gcmV3b3JrIHRoaXMgc2VyaWVzLCBidXQg Z2l2ZW4gdGhlIGFtb3VudAo+IG9mIHdvcmsgd2UgaGF2ZSBpbiB0aGUgZHJtX2JyaWRnZSByZWFs bSwgSSBjYW4ndCBmaXggZXZlcnl0aGluZyBpbiBvbmUKPiBnbyA6LSkKPgo+Pj4+Pj4gLSBpdCBy ZXNlbWJsZXMgaGFyZHdhcmUgd2lyZXMgOikKPj4+Pj4gVGhpcyBpc24ndCBmb3IgdGhlIGh3IHdp cmVzIGFmYWl1aS4gVGhlIGh3IGhwZCB0ZXJtaW5hdGVzIGluIHRoZSBzb3VyY2UKPj4+Pj4gYnJp ZGdlLCB3aGljaCB0aGVuIGNhbGxzIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHRvIGluZm9ybSBh bnlvbmUgZWxzZQo+Pj4+PiBpbnRlcmVzdGVkIGluIHRoYXQgaHBkIHNpbmdhbC4gVGhpcyBpbmNs dWRlczoKPj4+Pj4gLSBPdGhlciBicmlkZ2VzLCBlLmcuIGlmIHRoZXkgcHJvdmlkZSBDRUMgc3Vw cG9ydC4KPj4+Pj4gLSBPdGhlciBicmlkZ2VzLCBtYXliZSB0aGV5IG5lZWQgdG8gcmUtcnVuIHRo ZSBIRENQIHN0YXRlIGVuZ2luZQo+Pj4+PiAtIE92ZXJhbGwgZHJpdmVyLCBzbyBpdCBjYW4gdXBk YXRlIHRoZSBtb2Rlcy9jb25uZWN0b3Igc3RhdHVzIGFuZCBzZW5kIHRoZQo+Pj4+PiAgIHVldmVu dCB0byB0aGUgZHJpdmVyLgo+Pj4+PiAtIE92ZXJhbGwgZGlzcGxheSBwaXBlbGluZSBmb3IgdGhp cyBzcGVjaWZpYyBicmlkZ2UsIG1heWJlIHlvdSBuZWVkIHRvCj4+Pj4+ICAgc2h1dCBkb3duL3Jl LWVuYWJsZSB0aGUgcGlwZSBiZWNhdXNlICRyZWFzb25zLgo+Pj4+PiAgCj4+Pj4+IFRoYXQncyBh dCBsZWFzdCBteSB1bmRlcnN0YW5kaW5nIGZyb20gbG90cyBvZiBjaGF0cyB3aXRoIExhdXJlbnQg YWJvdXQKPj4+Pj4gd2hhdCBoZSB3YW50cyB0byBkbyBoZXJlLgo+IFRoYXQncyBjb3JyZWN0LCBh bmQgdGhhdCdzIHdoYXQgSSB3YXMgdHJ5aW5nIHRvIGltcGxlbWVudCA6LSkgVGhlCj4gbm90aWZp Y2F0aW9uLCBpbiB0aGlzIHBhdGNoIHNlcmllcywgZ29lcyBmcm9tIHRoZSBwcm9kdWNlciBicmlk Z2UgdG8gYQo+IGNlbnRyYWwgcGxhY2UgKG5hbWVseSB0aGUgY29ubmVjdG9yLCB3aXRoIGEgaGVs cGVyIGltcGxlbWVudGF0aW9uCj4gYXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhpcyBzZXJpZXMsIGJ1 dCBjdXN0b20gaW1wbGVtZW50YXRpb25zIGluIGRpc3BsYXkKPiBkcml2ZXJzIGFyZSBmaW5lIGlm IG5lZWRlZCkgdGhhdCB0aGVuIGRpc3BhdGNoZXMgdGhlIG5vdGlmaWNhdGlvbiB0byBhbGwKPiBi cmlkZ2VzICh0aHJvdWdoIHRoZSAubG9zdF9ob3RwbHVnKCkgb3BlcmF0aW9uLCB3aGljaCB3ZSBj b3VsZCByZXBsYWNlCj4gYnkgYW4gLmhwZF9ub3RpZnkoKSBvcGVyYXRpb24pIGZvciB0aGUgZmly c3QgdHdvIHB1cnBvc2VzIGxpc3RlZCBhYm92ZSwKPiBhbmQgdGhlbiB0byB0aGUgb3ZlcmFsbCBk cml2ZXIuIFRoZSBvbmx5IHRoaW5nIEkgZG9uJ3Qgc3VwcG9ydCB5ZXQgaXMKPiBkaXNwYXRjaGlu ZyB0byB0aGUgZGlzcGxheSBwaXBlbGluZSAoaXRlbSA0IGluIHRoZSBsaXN0IGFib3ZlKSBhcyBJ IGhhZAo+IG5vIG5lZWQgZm9yIHRoYXQsIGFuZCBkaWRuJ3Qgd2FudCB0byBkZXZlbG9wIGFuIEFQ SSB3aXRoIG5vIHVzZXIuIFRoaXMKPiB3b3VsZCBob3dldmVyIG5vdCBiZSBkaWZmaWN1bHQgdG8g ZG8gd2hlbiBuZWVkZWQsIHRoZSBuZWVkIGlzIHRha2VuIGludG8KPiBhY2NvdW50IGluIHRoZSBw cm9wb3NlZCBpbXBsZW1lbnRhdGlvbi4KPgo+Pj4+IEkgZG8gbm90IGtub3cgdGhlIGZ1bGwgcGlj dHVyZSwgYnV0IHRoZSBzb2x1dGlvbiB3aGVyZSBwYXJ0aWN1bGFyIGJyaWRnZQo+Pj4+IG5vdGlm aWVzIGV2ZXJ5dGhpbmcgdW5jb25kaXRpb25hbGx5IHNlZW1zIHRvIG1lIG11Y2ggbGVzcyBmbGV4 aWJsZS4KPj4+Pgo+Pj4+IElmIEhQRCBzaWduYWxzIGlzIHJlY2VpdmVkIGJ5IHRoZSBjb25zdW1l ciwgaWYgdGhlcmUgYXJlIG5vIG9ic3RhY2xlcyBpdAo+Pj4+IGNhbiBwcm9wYWdhdGUgaXQgZnVy dGhlciwgdXBzdHJlYW0gYnJpZGdlL2VuY29kZXIgb3IgdG8gZHJtIGNvcmUgLSBpdAo+Pj4+IHdp bGwgbWltaWMgeW91ciBzY2VuYXJpby4KPj4+Pgo+Pj4+IEJ1dCB0aGVyZSBhcmUgYWxzbyBvdGhl ciBzY2VuYXJpb3Mgd2hlcmUgYnJpZGdlIGRvZXMgbm90IHdhbnQgdG8KPj4+PiBwcm9wYWdhdGUg c2lnbmFsLCBiZWNhdXNlIGZvciBleGFtcGxlOgo+Pj4+Cj4+Pj4gLSBpdCB3YW50cyB0byB3YWl0 IGZvciBvdGhlciBzaW5rcyB0byB3YWtlIHVwLAo+Pj4gVGhlIG90aGVyIHNpbmsgY2FuIGp1c3Qg ZG8gdGhhdCBpbiB0aGVpciBocGQgY2FsbGJhY2suCj4+Pgo+Pj4+IC0gaXQgcHJvcGFnYXRlcyBI UEQgc2lnbmFsIHZpYSBoYXJkd2FyZSB3aXJlLAo+Pj4gQWdhaW4sIHRoZSBvdGhlciBzaW5rIGNh biBqdXN0IG5vdCBsaXN0ZW4gdG8gc3cgaHBkIGluIHRoYXQgY2FzZSwgYW5kIHVzZQo+Pj4gdGhl IHdpcmUvaHcgaHBkIGludGVycnVwdC4KPj4gSWYgaXQgc2hvdWxkIGlnbm9yZSBIUEQsIHdoeSBp dCBzaG91bGQgcmVjZWl2ZSBpdCBhdCBhbGwgLSBpdCBpcwo+PiB1bm5lY2Vzc2FyeSBub2lzZS4g QW5kIEkgYW0gYWZyYWlkIHdpdGggbW9yZSBjb21wbGljYXRlZCBwaXBlbGluZXMgaXQKPj4gd2ls bCBiZSBpbXBvc3NpYmxlIGZvciBwYXJ0aWN1bGFyIGNvbXBvbmVudCAoYnJpZGdlL2VuY29kZXIv d2hhdGV2ZXIpIHRvCj4+IGRpc3Rpbmd1aXNoIGlmIEhQRCBub3RpZmljYXRpb24gd2hpY2ggY2Ft ZSBmcm9tIG5vbi1kaXJlY3RseSBjb25uZWN0ZWQKPj4gY29tcG9uZW50IHNob3VsZCBiZSBpZ25v cmVkIG9yIG5vdC4KPj4KPj4+PiAtIGZpcnN0IGl0IHdhbnRzIHRvIHZlcmlmeSBpZiB0aGUgc2lu ayBpcyB2YWxpZC9jb21wYXRpYmxlL2F1dGhvcml6ZWQKPj4+PiBkZXZpY2UuCj4+PiBOb3cgeW91 IGxvc3QgbWUuIFdoeSB3b3VsZCBzb21lb25lIGdsdWUgaW5jb21wYXRpYmxlIElQIGludG8gYSBT b0Mgb3IKPj4+IGJvYXJkPwo+PiBCcmlkZ2UgY2FuIGhhdmUgZXh0ZXJuYWwgY29ubmVjdG9ycywg YW5kIHRoZSB1c2VyIGNhbiBjb25uZWN0IHRoZXJlCj4+IGFueXRoaW5nLgo+Pgo+Pj4+IEluIGdl bmVyYWwgSFBEIGlzIGlucHV0IHNpZ25hbCBmb3Igbm90aWZ5IG9mIHN0YXRlIGNoYW5nZXMgb24g cGFydGljdWxhcgo+Pj4+IGJ1cywgaW4gY2FzZSBvZiB0eXBpY2FsIHZpZGVvIGJyaWRnZSBvbiBp dHMgb3V0cHV0IHZpZGVvIGJ1cy4KPj4+Pgo+Pj4+IEluIGNhc2Ugb2YgYnJpZGdlcyB0aGV5IGhh dmUgYWxzbyBpbnB1dCB2aWRlbyBidXNlcywgYW5kIHRoZXkgY2FuIHNlbmQKPj4+PiBIUEQgc2ln bmFsIHZpYSB0aGlzIGJ1cywgYnV0IHRoaXMgaXMgaW5kZWVkIGRpZmZlcmVudCBIUEQgc2lnbmFs LCBldmVuCj4+Pj4gaWYgZm9yIG1vc3QgY2FzZXMgdGhleSBsb29rcyBzaW1pbGFyLgo+Pj4gQWgs IEkgdGhpbmsgdGhpcyBpcyBhIHByb2JsZW0gd2Ugd2lsbCBldmVudHVhbGx5IGhhdmUuIEJ1dCBp dCdzIG5vdAo+Pj4gc29tZXRoaW5nIHdlJ3JlIGN1cnJlbnRseSBzb2x2aW5nIGhlcmUgYXQgYWxs IEkgdGhpbmsuCj4+IEN1cnJlbnRseSBzaWk4NjIwIGRldmljZSBpbiB0bTIgc2VuZHMgaHBkIHNp Z25hbCB1cHN0cmVhbSB2aWEgaGFyZHdhcmUKPj4gbGluZSwgc28gdGhpcyBpcyBub3Qgc29tZXRo aW5nIGZyb20gZmFyIGZ1dHVyZS4gQW5kIEkgZ3Vlc3Mgd2l0aCBIUEQKPj4gYnJvYWRjYXN0aW5n IGl0IGNvdWxkIGJlIHJhY3kvZXJyb3IgcHJvbmUsIGZvciBleGFtcGxlIEVESUQgcmVhZGluZyBj YW4KPj4gZmFpbCBkdWUgdG8gYnJpZGdlIGJlaW5nIG5vdCByZWFkeSAoZGRjIG9mIHNpaTg2MjAg aXMgY29ubmVjdGVkIHRvIGkyYwo+PiBjb250cm9sbGVyIHZpYSBodyB3aXJlcyBhbHNvKS4KPj4K Pj4+Pj4+IEFuZCByZWdhcmRpbmcgaW1wbGVtZW50YXRpb246Cj4+Pj4+Pgo+Pj4+Pj4gMS4gTGF1 cmVudCBwcm9wb3NlcyB0byByZWdpc3RlciBjYWxsYmFjayBkcm1fYnJpZGdlX2hwZF9lbmFibGUu Cj4+Pj4+Pgo+Pj4+Pj4gMi4gWW91IHByb3Bvc2UgdG8gYWRkIG9wcyBocGRfbm90aWZ5IGluIGJy aWRnZXMgYW5kIGVuY29kZXJzLgo+Pj4+Pj4KPj4+Pj4+IFlvdXIgcHJvcG9zaXRpb24gaXMgbW9y ZSBzdHJhaWdodGZvcndhcmQsIGJ1dCBpZiB3ZSB3YW50IHRvIG5vdGlmeSBvbmx5Cj4+Pj4+PiBz b3VyY2Ugd2Ugc2hvdWxkIGxvY2F0ZSBpdCBieSBwYXJzaW5nIG5vdGlmaWNhdGlvbiBjaGFpbiAo d2hhdCBhYm91dAo+Pj4+Pj4gdW5jaGFpbmVkIGJyaWRnZXMpLCBvciBzdG9yZSBwb2ludGVyIHNv bWV3aGVyZSBkdXJpbmcgYXR0YWNobWVudC4KPj4+Pj4+Cj4+Pj4+PiBJdCBzdGlsbCBsZWF2ZXMg dXMgd2l0aCB0aGlzIHVnbHkgZHVhbGlzbSAtIHNvdXJjZSBpcyBlbmNvZGVyIG9yIGJyaWRnZSwK Pj4+Pj4+IHNpbWlsYXJseSB0byBzaW5rIGFzIGJyaWRnZSBvciBwYW5lbCwgYnV0IGZpeGluZyBp dCBjYW4gYmUgZG9uZSBsYXRlci4KPj4+Pj4gVWggSSB0aGluayB3ZSdyZSBub3QgdGFsa2luZyBh Ym91dCB0aGUgc2FtZSB0aGluZyByZWFsbHkuIE15IHVuZGVyc3RhbmRpbmcKPj4+Pj4gaXMgdGhh dCB0aGlzIGNhbGxiYWNrIGlzIGlmIHNvbWVvbmUgKG91dHNpZGUgb2YgdGhpcyBicmlkZ2UpIGlz IGludGVyZXN0ZWQKPj4+Pj4gaW4gYSBocGQgc2lnbmFsIF9mcm9tXyB0aGlzIGJyaWRnZS4gV2hp Y2ggbWVhbnMgeW91IGNhbiBvbmx5IGV2ZXIgaGF2ZSAxCj4+Pj4+IGxpc3RlbmVyLgo+Pj4+IERv IHdlIGhhdmUgcmVhbCBsaWZlIGV4YW1wbGVzPwo+Pj4+Cj4+Pj4gSSB3YW50IHRvIGRpc3Rpbmd1 aXNoIHR3byBzaXR1YXRpb25zOgo+Pj4+Cj4+Pj4gLSBhbm90aGVyIGRldmljZSB3YW50cyB0byBr bm93IGlmIGlucHV0IGJ1cyBvZiB0aGUgYnJpZGdlIGhhcyBjaGFuZ2VkIHN0YXRlLAo+Pj4+Cj4+ Pj4gLSBhbm90aGVyIGRldmljZSB3YW50cyB0byBrbm93IGlmIG91dHB1dCBidXMgb2YgdGhlIGJy aWRnZSBoYXMgY2hhbmdlZAo+Pj4+IHN0YXRlLgo+Pj4gVWgsIHRoYXQncyB3aGF0IGRybV9icmlk Z2Vfc3RhdGUgaXMgZm9yIChpZiBpdCBldmVyIGhhcHBlbnMpLiBUaGF0J3MgaG93Cj4+PiBicmlk Z2VzIGNhbiBleGNoYW5nZSBzdGF0ZSBhbmQgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBhbm90aGVy LiBocGQgaXMKPj4+IGFib3V0IHRoZSBwaHlzaWNhbCB3b3JsZCwgaS5lLiAiaXMgdGhlcmUgYSBj YWJsZSBwbHVnZ2VkIGludG8gdGhlIHBvcnQKPj4+IEknbSBkcml2aW5nPyIuIFdlJ3JlIG5vdCBn b2luZyB0byB1c2UgZmFrZSBocGQgdG8gdXBkYXRlIGJyaWRnZSBzdGF0ZSBhbmQKPj4+IGZ1biBz dHVmZiBsaWtlIHRoYXQsIHdlIGhhdmUgdGhlIGF0b21pY19jaGVjayBtYWNoaW5lcnkgZm9yIHRo aXMuCj4+IE15IHF1ZXN0aW9uIHdhcyBpZiB3ZSBoYXZlIHJlYWwgZXhhbXBsZXMgdGhhdCB1cHN0 cmVhbSBkZXZpY2UgcmVxdWlyZXMKPj4ga25vd2xlZGdlIGFib3V0IHN0YXRlIG9mIG91dHB1dCBs aW5lIG9mIHRoZSBicmlkZ2U/Cj4+Cj4+IFRvIGJlIG1vcmUgcHJlY2lzZSwgd2UgaGF2ZSBmb2xs b3dpbmcgZGlzcGxheSBwaXBlbGluZToKPj4KPj4gQS0tPkItLT5DCj4+Cj4+IEFuZCBDIHNlbmRz IEhQRCB0byBCIChpZSBzaWduYWwgdGhhdCBzdGF0ZSBvZiBsaW5lIGJldHdlZW4gQiBhbmQgQwo+ PiBjaGFuZ2VkKS4gRG9lcyBBIHJlYWxseSB3YW50cyB0byBrbm93IHRoaXMgaW5mb3JtYXRpb24/ IG9yIGl0IHNob3VsZAo+PiBqdXN0IG5lZWQgdG8ga25vdyBpZiBzdGF0ZSBvZiBsaW5lIEEtLT5C IGNoYW5nZWQ/Cj4gVGhlcmUncyBvbmUgcmVhbCBsaWZlIGV4YW1wbGUsIHdoZXJlIEEgaXMgYW4g SERNSSBlbmNvZGVyLCBCIGlzIGFuIEhETUkKPiBFU0QgcHJvdGVjdG9yIGFuZCBsZXZlbCBzaGlm dGVyLCBhbmQgQyBpcyB0aGUgcGh5c2ljYWwgSERNSSBjb25uZWN0b3IuCj4gV2hlbiB0aGUgSERN SSBjYWJsZSBpcyB1bnBsdWdnZWQsIHRoZSBDRUMgY29udHJvbGxlciBwYXJ0IG9mIEEgbmVlZHMg dG8KPiBiZSBub3RpZmllZCBpbiBvcmRlciB0byByZXNldCB0aGUgQ0VDIHN0YXRlIG1hY2hpbmUu IE9uZSBjb3VsZCBob3dldmVyCj4gYXJndWUgdGhhdCBpbiB0aGF0IGNhc2UgdGhlIEEtQiBsaW5r IHN0YXRlIGNoYW5nZXMgdG9vLCBidXQgdGhlCj4gaW1wb3J0YW50IHBhcnQgaXMgdGhhdCBIUEQg ZGV0ZWN0aW9uIGlzIG5vdCBwZXJmb3JtZWQgYnkgQSwgd2hpbGUgQQo+IG5lZWRzIHRvIGJlIGlu Zm9ybWVkIG9mIGxvc3QgaG90cGx1Zy4KCgpJIGhhdmUgbm8gZnVsbCBwaWN0dXJlIGJ1dCBJIGd1 ZXNzIGluIHRoaXMgY2FzZSBDIHNlbmRzIEhQRCB0byBCIHVzaW5nCmhhcmR3YXJlIHdpcmUsIGFu ZCB0aGVuIEIgc2VuZHMgSFBEIHRvIEEgYWxzbyB2aWEgd2lyZSwgc28gSSB3b3VsZG4ndApzYXkg dGhhdCBCIGRvZXMgbm90IHBhcnRpY2lwYXRlIGluIEhQRCB0cmFuc21pc3Npb24vZm9yd2FyZGlu ZywKCnNvbWUgc2hpZnRlcnMgd2l0aCAnYWR2YW5jZWQgcG93ZXIgc2F2aW5nJyBjYW4gZXZlbiBw ZXJmb3JtIHdha2UtdXAgb2YKdXBzdHJlYW0gcGluIGxvZ2ljIGFmdGVyIHJlY2VpdmluZyBIUEQg b24gZG93bnN0cmVhbSwgc28gSFBEIHNlbnQgZnJvbSBCCnRvIEEgaXMgaW5kZWVkIGRpZmZlcmVu dCB0aGFuIEhQRCBzZW50IGZyb20gQyB0byBCLgoKQnR3LCB3aXRoIHRoZSBhYm92ZSBsb2dpYyBv ZiBwcm9wYWdhdGlvbiBvZiBIUEQgY2FsbGJhY2sgKHByb3Bvc2VkIGJ5CkRhbmllbCkgSSBndWVz cyBpdCB3aWxsIHdvcmsgdGhpcyB3YXk6CgotIEEgd2lsbCByZWNlaXZlIEhQRCBzaWduYWwgdmlh IEhXLAoKLSB0aGVuIEIgYW5kIEMgd2lsbCByZWNlaXZlIEhQRCBjYWxsYmFjayB2aWEgZnJhbWV3 b3JrLgoKQW0gSSByaWdodD8KCgpSZWdhcmRzCgpBbmRyemVqCgoKPgo+Pj4+PiBZb3Ugc2VlbSB0 byBoYXZlIHNvbWUgb3RoZXIgaWRlYSBoZXJlLgo+Pj4+Pgo+Pj4+Pj4+Pj4+PiArCW11dGV4X3Vu bG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+Pj4+Pj4+Pj4+PiArfQo+Pj4+Pj4+Pj4+PiArRVhQ T1JUX1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfbm90aWZ5KTsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+ Pj4+Pj4+PiAgI2lmZGVmIENPTkZJR19PRgo+Pj4+Pj4+Pj4+PiAgLyoqCj4+Pj4+Pj4+Pj4+ICAg KiBvZl9kcm1fZmluZF9icmlkZ2UgLSBmaW5kIHRoZSBicmlkZ2UgY29ycmVzcG9uZGluZyB0byB0 aGUgZGV2aWNlIG5vZGUgaW4KPj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2Ry bV9icmlkZ2UuaCBiL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+Pj4+Pj4+Pj4+PiBpbmRleCAw OGRjMTVmOTNkZWQuLmI5NDQ1YWE1YjFlZiAxMDA2NDQKPj4+Pj4+Pj4+Pj4gLS0tIGEvaW5jbHVk ZS9kcm0vZHJtX2JyaWRnZS5oCj4+Pj4+Pj4+Pj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9icmlk Z2UuaAo+Pj4+Pj4+Pj4+PiBAQCAtMjMsOCArMjMsOSBAQAo+Pj4+Pj4+Pj4+PiAgI2lmbmRlZiBf X0RSTV9CUklER0VfSF9fCj4+Pj4+Pj4+Pj4+ICAjZGVmaW5lIF9fRFJNX0JSSURHRV9IX18KPj4+ Pj4+Pj4+Pj4gIAo+Pj4+Pj4+Pj4+PiAtI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPj4+Pj4+Pj4+ Pj4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+Pj4+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4 L2xpc3QuaD4KPj4+Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgo+Pj4+Pj4+Pj4+ PiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZV9vYmplY3QuaD4KPj4+Pj4+Pj4+Pj4gICNpbmNsdWRl IDxkcm0vZHJtX21vZGVzLmg+Cj4+Pj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4+Pj4gQEAgLTMzNCw2ICsz MzUsMTEwIEBAIHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHsKPj4+Pj4+Pj4+Pj4gIAkgKi8KPj4+ Pj4+Pj4+Pj4gIAl2b2lkICgqYXRvbWljX3Bvc3RfZGlzYWJsZSkoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSwKPj4+Pj4+Pj4+Pj4gIAkJCQkgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKTsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+Pj4+PiArCSAqIEBk ZXRlY3Q6Cj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4gKwkgKiBDaGVjayBpZiBhbnl0aGlu ZyBpcyBhdHRhY2hlZCB0byB0aGUgYnJpZGdlIG91dHB1dC4KPj4+Pj4+Pj4+Pj4gKwkgKgo+Pj4+ Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGlmIG5vdCBpbXBsZW1lbnRl ZCB0aGUgYnJpZGdlIHdpbGwgYmUKPj4+Pj4+Pj4+Pj4gKwkgKiBjb25zaWRlcmVkIGFzIGFsd2F5 cyBoYXZpbmcgYSBjb21wb25lbnQgYXR0YWNoZWQgdG8gaXRzIG91dHB1dC4KPj4+Pj4+Pj4+Pj4g KwkgKiBCcmlkZ2VzIHRoYXQgaW1wbGVtZW50IHRoaXMgY2FsbGJhY2sgc2hhbGwgc2V0IHRoZQo+ Pj4+Pj4+Pj4+PiArCSAqIERSTV9CUklER0VfT1BfREVURUNUIGZsYWcgaW4gdGhlaXIgJmRybV9i cmlkZ2UtPm9wcy4KPj4+Pj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+Pj4+PiArCSAqIFJFVFVSTlM6Cj4+ Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4gKwkgKiBkcm1fY29ubmVjdG9yX3N0YXR1cyBpbmRp Y2F0aW5nIHRoZSBicmlkZ2Ugb3V0cHV0IHN0YXR1cy4KPj4+Pj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+ Pj4+Pj4gKwllbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzICgqZGV0ZWN0KShzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlKTsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+Pj4+ PiArCSAqIEBnZXRfbW9kZXM6Cj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4gKwkgKiBGaWxs IGFsbCBtb2RlcyBjdXJyZW50bHkgdmFsaWQgZm9yIHRoZSBzaW5rIGludG8gdGhlICZkcm1fY29u bmVjdG9yCj4+Pj4+Pj4+Pj4+ICsJICogd2l0aCBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4+Pj4+ Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgQGdldF9tb2RlcyBjYWxsYmFjayBpcyBt b3N0bHkgaW50ZW5kZWQgdG8gc3VwcG9ydCBub24tcHJvYmFibGUKPj4+Pj4+Pj4+Pj4gKwkgKiBk aXNwbGF5cyBzdWNoIGFzIG1hbnkgZml4ZWQgcGFuZWxzLiBCcmlkZ2VzIHRoYXQgc3VwcG9ydCBy ZWFkaW5nCj4+Pj4+Pj4+Pj4+ICsJICogRURJRCBzaGFsbCBsZWF2ZSBAZ2V0X21vZGVzIHVuaW1w bGVtZW50ZWQgYW5kIGltcGxlbWVudCB0aGUKPj4+Pj4+Pj4+Pj4gKwkgKiAmZHJtX2JyaWRnZV9m dW5jcy0+Z2V0X2VkaWQgY2FsbGJhY2sgaW5zdGVhZC4KPj4+Pj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+ Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1l bnQgaXQgc2hhbGwgc2V0IHRoZQo+Pj4+Pj4+Pj4+PiArCSAqIERSTV9CUklER0VfT1BfTU9ERVMg ZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ Pj4+ICsJICogUkVUVVJOUzoKPj4+Pj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+Pj4+PiArCSAqIFRoZSBu dW1iZXIgb2YgbW9kZXMgYWRkZWQgYnkgY2FsbGluZyBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4+ Pj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+Pj4+ICsJaW50ICgqZ2V0X21vZGVzKShzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlLAo+Pj4+Pj4+Pj4+PiArCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpOwo+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+Pj4+ICsJ ICogQGdldF9lZGlkOgo+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+Pj4+ICsJICogUmVhZCBhbmQg cGFyc2UgdGhlIEVESUQgZGF0YSBvZiB0aGUgY29ubmVjdGVkIGRpc3BsYXkuCj4+Pj4+Pj4+Pj4+ ICsJICoKPj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgQGdldF9lZGlkIGNhbGxiYWNrIGlzIHRoZSBwcmVm ZXJyZWQgd2F5IG9mIHJlcG9ydGluZyBtb2RlCj4+Pj4+Pj4+Pj4+ICsJICogaW5mb3JtYXRpb24g Zm9yIGEgZGlzcGxheSBjb25uZWN0ZWQgdG8gdGhlIGJyaWRnZSBvdXRwdXQuIEJyaWRnZXMKPj4+ Pj4+Pj4+Pj4gKwkgKiB0aGF0IHN1cHBvcnQgcmVhZGluZCBFRElEIHNoYWxsIGltcGxlbWVudCB0 aGlzIGNhbGxiYWNrIGFuZCBsZWF2ZQo+Pj4+Pj4+Pj4+PiArCSAqIHRoZSBAZ2V0X21vZGVzIGNh bGxiYWNrIHVuaW1wbGVtZW50ZWQuCj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4gKwkgKiBU aGUgY2FsbGVyIG9mIHRoaXMgb3BlcmF0aW9uIHNoYWxsIGZpcnN0IHZlcmlmeSB0aGUgb3V0cHV0 Cj4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgYW5kIHJlZnJhaW4gZnJvbSByZWFk aW5nIEVESUQgZnJvbSBhIGRpc2Nvbm5lY3RlZAo+Pj4+Pj4+Pj4+PiArCSAqIG91dHB1dC4KPj4+ Pj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwu IEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgaXQgc2hhbGwgc2V0IHRoZQo+Pj4+Pj4+Pj4+PiArCSAq IERSTV9CUklER0VfT1BfRURJRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4+Pj4+ Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4gKwkgKiBSRVRVUk5TOgo+Pj4+Pj4+Pj4+PiArCSAqCj4+ Pj4+Pj4+Pj4+ICsJICogQW4gZWRpZCBzdHJ1Y3R1cmUgbmV3bHkgYWxsb2NhdGVkIHdpdGgga21h bGxvYygpIChvciBzaW1pbGFyKSBvbgo+Pj4+Pj4+Pj4+PiArCSAqIHN1Y2Nlc3MsIG9yIE5VTEwg b3RoZXJ3aXNlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nCj4+Pj4+Pj4+ Pj4+ICsJICogdGhlIHJldHVybmVkIGVkaWQgc3RydWN0dXJlIHdpdGgga2ZyZWUoKS4KPj4+Pj4+ Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgZWRpZCAqKCpnZXRfZWRpZCkoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSwKPj4+Pj4+Pj4+Pj4gKwkJCQkgc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3Rvcik7Cj4+Pj4+Pj4+Pj4gSXQgb3ZlcmxhcHMgd2l0aCBnZXRfbW9kZXMsIEkg Z3Vlc3MgcHJlc2VuY2Ugb2Ygb25lIG9wcyBzaG91bGQgZGlzYWxsb3cKPj4+Pj4+Pj4+PiBwcmVz ZW5jZSBvZiBhbm90aGVyIG9uZT8KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IEkgYW0gbm90IHJlYWxs eSBjb252aW5jZWQgd2UgbmVlZCB0aGlzIG9wIGF0IGFsbCwgY2Fubm90IHdlIGp1c3QgYXNzaWdu Cj4+Pj4+Pj4+Pj4gc29tZSBoZWxwZXIgZnVuY3Rpb24gdG8gLmdldF9tb2RlcyBjYiwgd2hpY2gg d2lsbCBkbyB0aGUgc2FtZT8KPj4+Pj4+Pj4+IFBsYW4gQik6IGRpdGNoIC0+Z2V0X2VkaWQsIHJl cXVpcmUgdGhhdCB0aGUgZHJpdmVyIGhhcyAtPmdldF9tb2RlcyBpbiB0aGF0Cj4+Pj4+Pj4+PiBj YXNlLCBhbmQgcmVxdWlyZSB0aGF0IGlmIGl0IGhhcyBhbiBlZGlkIGl0IG11c3QgZmlsbCBvdXQg Y29ubmVjdG9yLT5pbmZvCj4+Pj4+Pj4+PiBhbmQgY29ubmVjdG9yLT5lZGlkIGNvcnJlY3RseS4K Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBCdHcgaWYgYSBocGQgaGFwcGVucywgd2hvJ3MgcmVzcG9uaWJs ZSBmb3IgbWFraW5nIHN1cmUgdGhlIGVkaWQvbW9kZSBsaXN0Cj4+Pj4+Pj4+PiBpbiB0aGUgY29u bmVjdG9yIGlzIHVwLXRvLWRhdGU/IFdpdGggeW91ciBjdXJyZW50IGNhbGxiYWNrIGRlc2lnbiB0 aGF0J3MKPj4+Pj4+Pj4+IHVwIHRvIHRoZSBjYWxsYmFjaywgd2hpY2ggZG9lc24ndCBmZWVsIGdy ZWF0LiBNYXliZSAgZHJtX2JyaWRnZV9ocGRfbm90aWZ5Cj4+Pj4+Pj4+PiBzaG91bGQgZ3VhcmFu dGVlIHRoYXQgaXQnbGwgZmlyc3Qgd2FsayB0aGUgY29ubmVjdG9ycyB0byB1cGRhdGUgc3RhdHVz IGFuZAo+Pj4+Pj4+Pj4gZWRpZC9tb2RlIGxpc3QgZm9yIHRoZSBmaW5hbCBkcm1fY29ubmVjdG9y LiBBbmQgdGhlbiBpbnN0ZWFkIG9mIGp1c3QKPj4+Pj4+Pj4+IHBhc3NpbmcgdGhlIHNpbXBsZSAi c3RhdHVzIiwgaXQnbGwgcGFzcyB0aGUgY29ubmVjdG9yLCB3aXRoIGV2ZXJ5dGhpbmcKPj4+Pj4+ Pj4+IGNvcnJlY3RseSB1cGRhdGVkLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IE90aGVyd2lzZSBldmVy eW9uZSBpbnRlcmVzdGVkIGluIHRoYXQgaHBkIHNpZ25hbCB3aWxsIGdvIGFuZCByZS1mZXRjaCB0 aGUKPj4+Pj4+Pj4+IGVkaWQsIHdoaWNoIGlzIG5vdCBzbyBhd2Vzb21lIDotKQo+Pj4+Pj4+Pj4K Pj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+Pj4+PiArCSAqIEBsb3N0X2hv dHBsdWc6Cj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4gKwkgKiBOb3RpZnkgdGhlIGJyaWRn ZSBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24uCj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4g KwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBpdCBtYXkgYmUgaW1wbGVtZW50ZWQgYnkg YnJpZGdlcyB0aGF0Cj4+Pj4+Pj4+Pj4+ICsJICogbmVlZCB0byBiZSBub3RpZmllZCBvZiBkaXNw bGF5IGRpc2Nvbm5lY3Rpb24gZm9yIGludGVybmFsIHJlYXNvbnMuCj4+Pj4+Pj4+Pj4+ICsJICog T25lIHVzZSBjYXNlIGlzIHRvIHJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBDRUMgY29udHJv bGxlcnMgZm9yCj4+Pj4+Pj4+Pj4+ICsJICogSERNSSBicmlkZ2VzLgo+Pj4+Pj4+Pj4+PiArCSAq Lwo+Pj4+Pj4+Pj4+PiArCXZvaWQgKCpsb3N0X2hvdHBsdWcpKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UpOwo+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+Pj4+ICsJICog QGhwZF9lbmFibGU6Cj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4gKwkgKiBFbmFibGUgaG90 IHBsdWcgZGV0ZWN0aW9uLiBGcm9tIG5vdyBvbiB0aGUgYnJpZGdlIHNoYWxsIGNhbGwKPj4+Pj4+ Pj4+Pj4gKwkgKiBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSBlYWNoIHRpbWUgYSBjaGFuZ2UgaXMg ZGV0ZWN0ZWQgaW4gdGhlIG91dHB1dAo+Pj4+Pj4+Pj4+PiArCSAqIGNvbm5lY3Rpb24gc3RhdHVz LCB1bnRpbCBob3QgcGx1ZyBkZXRlY3Rpb24gZ2V0cyBkaXNhYmxlZCB3aXRoCj4+Pj4+Pj4+Pj4+ ICsJICogQGhwZF9kaXNhYmxlLgo+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+Pj4+ICsJICogVGhp cyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgc2hhbGwgb25seSBiZSBpbXBsZW1lbnRlZCBieSBi cmlkZ2VzCj4+Pj4+Pj4+Pj4+ICsJICogdGhhdCBzdXBwb3J0IGhvdC1wbHVnIG5vdGlmaWNhdGlv biB3aXRob3V0IHBvbGxpbmcuIEJyaWRnZXMgdGhhdAo+Pj4+Pj4+Pj4+PiArCSAqIGltcGxlbWVu dCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhwZF9kaXNhYmxlIGNhbGxiYWNrIGFuZCBz ZXQKPj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpbiB0aGVpciAm ZHJtX2JyaWRnZS0+b3BzLgo+Pj4+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+Pj4+PiArCXZvaWQgKCpo cGRfZW5hYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPj4+Pj4+Pj4+Pj4gKwo+Pj4+ Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+Pj4+PiArCSAqIEBocGRfZGlzYWJsZToKPj4+Pj4+Pj4+Pj4g KwkgKgo+Pj4+Pj4+Pj4+PiArCSAqIERpc2FibGUgaG90IHBsdWcgZGV0ZWN0aW9uLiBPbmNlIHRo aXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnJpZGdlCj4+Pj4+Pj4+Pj4+ICsJICogc2hhbGwgbm90 IGNhbGwgZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCkgd2hlbiBhIGNoYW5nZSBpbiB0aGUgb3V0cHV0 Cj4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgb2NjdXJzLgo+Pj4+Pj4+Pj4+PiAr CSAqCj4+Pj4+Pj4+Pj4+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgc2hhbGwg b25seSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzCj4+Pj4+Pj4+Pj4+ICsJICogdGhhdCBzdXBw b3J0IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBvbGxpbmcuIEJyaWRnZXMgdGhhdAo+ Pj4+Pj4+Pj4+PiArCSAqIGltcGxlbWVudCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhw ZF9lbmFibGUgY2FsbGJhY2sgYW5kIHNldAo+Pj4+Pj4+Pj4+PiArCSAqIHRoZSBEUk1fQlJJREdF X09QX0hQRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4+Pj4+Pj4+Pj4+ICsJICov Cj4+Pj4+Pj4+Pj4+ICsJdm9pZCAoKmhwZF9kaXNhYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKTsKPj4+Pj4+Pj4+Pj4gIH07Cj4+Pj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4+Pj4gIC8qKgo+Pj4+ Pj4+Pj4+PiBAQCAtMzcyLDYgKzQ3NywzOCBAQCBzdHJ1Y3QgZHJtX2JyaWRnZV90aW1pbmdzIHsK Pj4+Pj4+Pj4+Pj4gIAlib29sIGR1YWxfbGluazsKPj4+Pj4+Pj4+Pj4gIH07Cj4+Pj4+Pj4+Pj4+ ICAKPj4+Pj4+Pj4+Pj4gKy8qKgo+Pj4+Pj4+Pj4+PiArICogZW51bSBkcm1fYnJpZGdlX29wcyAt IEJpdG1hc2sgb2Ygb3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZQo+Pj4+Pj4+Pj4+ PiArICovCj4+Pj4+Pj4+Pj4+ICtlbnVtIGRybV9icmlkZ2Vfb3BzIHsKPj4+Pj4+Pj4+Pj4gKwkv KioKPj4+Pj4+Pj4+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9ERVRFQ1Q6IFRoZSBicmlkZ2UgY2Fu IGRldGVjdCBkaXNwbGF5cyBjb25uZWN0ZWQgdG8KPj4+Pj4+Pj4+Pj4gKwkgKiBpdHMgb3V0cHV0 LiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQgdGhlCj4+Pj4+Pj4+ Pj4+ICsJICogJmRybV9icmlkZ2VfZnVuY3MtPmRldGVjdCBjYWxsYmFjay4KPj4+Pj4+Pj4+Pj4g KwkgKi8KPj4+Pj4+Pj4+Pj4gKwlEUk1fQlJJREdFX09QX0RFVEVDVCA9IEJJVCgwKSwKPj4+Pj4+ Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9FRElEOiBUaGUgYnJp ZGdlIGNhbiByZXRyaWV2ZSB0aGUgRURJRCBvZiB0aGUgZGlzcGxheQo+Pj4+Pj4+Pj4+PiArCSAq IGNvbm5lY3RlZCB0byBpdHMgb3V0cHV0LiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxhZyBzaGFs bCBpbXBsZW1lbnQKPj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgJmRybV9icmlkZ2VfZnVuY3MtPmdldF9l ZGlkIGNhbGxiYWNrLgo+Pj4+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+Pj4+PiArCURSTV9CUklER0Vf T1BfRURJRCA9IEJJVCgxKSwKPj4+Pj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4+Pj4gKwkgKiBARFJN X0JSSURHRV9PUF9IUEQ6IFRoZSBicmlkZ2UgY2FuIGRldGVjdCBob3QtcGx1ZyBhbmQgaG90LXVu cGx1Zwo+Pj4+Pj4+Pj4+PiArCSAqIHdpdGhvdXQgcmVxdWlyaW5nIHBvbGxpbmcuIEJyaWRnZXMg dGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsCj4+Pj4+Pj4+Pj4+ICsJICogaW1wbGVtZW50IHRoZSAm ZHJtX2JyaWRnZV9mdW5jcy0+aHBkX2VuYWJsZSBhbmQKPj4+Pj4+Pj4+Pj4gKwkgKiAmZHJtX2Jy aWRnZV9mdW5jcy0+ZGlzYWJsZV9ocGRfY2IgY2FsbGJhY2tzLgo+Pj4+Pj4+Pj4+PiArCSAqLwo+ Pj4+Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfSFBEID0gQklUKDIpLAo+Pj4+Pj4+Pj4+PiArCS8q Kgo+Pj4+Pj4+Pj4+PiArCSAqIEBEUk1fQlJJREdFX09QX01PREVTOiBUaGUgYnJpZGdlIGNhbiBy ZXRyaWV2aW5nIHRoZSBtb2RlcyBzdXBwb3J0ZWQKPj4+Pj4+Pj4+Pj4gKwkgKiBieSB0aGUgZGlz cGxheSBhdCBpdHMgb3V0cHV0LiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcmVhZGluZCBFRElECj4+ Pj4+Pj4+Pj4+ICsJICogd2hpY2ggaXMgc2VwYXJhdGVseSBjb3ZlcmVkIGJ5IEBEUk1fQlJJREdF X09QX0VESUQuIEJyaWRnZXMgdGhhdCBzZXQKPj4+Pj4+Pj4+Pj4gKwkgKiB0aGlzIGZsYWcgc2hh bGwgaW1wbGVtZW50IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X21vZGVzIGNhbGxiYWNrLgo+ Pj4+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfTU9ERVMgPSBCSVQo MyksCj4+Pj4+Pj4+Pj4+ICt9Owo+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+ICAvKioKPj4+Pj4+ Pj4+Pj4gICAqIHN0cnVjdCBkcm1fYnJpZGdlIC0gY2VudHJhbCBEUk0gYnJpZGdlIGNvbnRyb2wg c3RydWN0dXJlCj4+Pj4+Pj4+Pj4+ICAgKi8KPj4+Pj4+Pj4+Pj4gQEAgLTM5OCw2ICs1MzUsMjkg QEAgc3RydWN0IGRybV9icmlkZ2Ugewo+Pj4+Pj4+Pj4+PiAgCWNvbnN0IHN0cnVjdCBkcm1fYnJp ZGdlX2Z1bmNzICpmdW5jczsKPj4+Pj4+Pj4+Pj4gIAkvKiogQGRyaXZlcl9wcml2YXRlOiBwb2lu dGVyIHRvIHRoZSBicmlkZ2UgZHJpdmVyJ3MgaW50ZXJuYWwgY29udGV4dCAqLwo+Pj4+Pj4+Pj4+ PiAgCXZvaWQgKmRyaXZlcl9wcml2YXRlOwo+Pj4+Pj4+Pj4+PiArCS8qKiBAb3BzOiBiaXRtYXNr IG9mIG9wZXJhdGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBicmlkZ2UgKi8KPj4+Pj4+Pj4+Pj4gKwll bnVtIGRybV9icmlkZ2Vfb3BzIG9wczsKPj4+Pj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4+Pj4gKwkg KiBAdHlwZTogVHlwZSBvZiB0aGUgY29ubmVjdGlvbiBhdCB0aGUgYnJpZGdlIG91dHB1dAo+Pj4+ Pj4+Pj4+PiArCSAqIChEUk1fTU9ERV9DT05ORUNUT1JfKikuIEZvciBicmlkZ2VzIGF0IHRoZSBl bmQgb2YgdGhpcyBjaGFpbiB0aGlzCj4+Pj4+Pj4+Pj4+ICsJICogaWRlbnRpZmllcyB0aGUgdHlw ZSBvZiBjb25uZWN0ZWQgZGlzcGxheS4KPj4+Pj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4+Pj4gKwlp bnQgdHlwZTsKPj4+Pj4+Pj4+Pj4gKwkvKiogcHJpdmF0ZTogKi8KPj4+Pj4+Pj4+Pj4gKwkvKioK Pj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX211dGV4OiBQcm90ZWN0cyB0aGUgQGhwZF9jYiBhbmQgQGhw ZF9kYXRhIGZpZWxkcy4KPj4+Pj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgbXV0 ZXggaHBkX211dGV4Owo+Pj4+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+Pj4+PiArCSAqIEBocGRfY2I6 IEhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjaywgcmVnaXN0ZXJlZCB3aXRoCj4+Pj4+Pj4+Pj4+ ICsJICogZHJtX2JyaWRnZV9ocGRfZW5hYmxlKCkuCj4+Pj4+Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+ Pj4+ICsJdm9pZCAoKmhwZF9jYikodm9pZCAqZGF0YSwgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1 cyBzdGF0dXMpOwo+Pj4+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+Pj4+PiArCSAqIEBocGRfZGF0YTog UHJpdmF0ZSBkYXRhIHBhc3NlZCB0byB0aGUgSG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4+ Pj4+Pj4+Pj4+ICsJICogQGhwZF9jYi4KPj4+Pj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4+Pj4gKwl2 b2lkICpocGRfZGF0YTsKPj4+Pj4+Pj4+Pj4gIH07Cj4+Pj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4+Pj4g IHZvaWQgZHJtX2JyaWRnZV9hZGQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4+Pj4+Pj4+ Pj4+IEBAIC00MjgsNiArNTg4LDE0IEBAIHZvaWQgZHJtX2F0b21pY19icmlkZ2VfcHJlX2VuYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+Pj4+Pj4+Pj4+PiAgdm9pZCBkcm1fYXRvbWlj X2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPj4+Pj4+Pj4+Pj4gIAkJ CSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4+Pj4+Pj4+Pj4+ICAKPj4+ Pj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsCj4+Pj4+Pj4+Pj4+ICsJCQkgICB2b2lkICgqY2IpKHZvaWQgKmRhdGEsCj4+Pj4+Pj4+ Pj4+ICsJCQkJICAgICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpLAo+Pj4+Pj4+ Pj4+PiArCQkJICAgdm9pZCAqZGF0YSk7Cj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBk X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4+Pj4+Pj4+Pj4+ICt2b2lkIGRy bV9icmlkZ2VfaHBkX25vdGlmeShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+Pj4+Pj4+Pj4+ PiArCQkJICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpOwo+Pj4+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+Pj4+ICAjaWZkZWYgQ09ORklHX0RSTV9QQU5FTF9CUklER0UKPj4+Pj4+Pj4+Pj4g IHN0cnVjdCBkcm1fYnJpZGdlICpkcm1fcGFuZWxfYnJpZGdlX2FkZChzdHJ1Y3QgZHJtX3BhbmVs ICpwYW5lbCwKPj4+Pj4+Pj4+Pj4gIAkJCQkJdTMyIGNvbm5lY3Rvcl90eXBlKTsKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=