From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 09/60] drm/bridge: Add connector-related bridge operations and data Date: Mon, 26 Aug 2019 18:57:26 +0300 Message-ID: <20190826155726.GH5031@pendragon.ideasonboard.com> References: <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> <20190814123510.GC7444@phenom.ffwll.local> <20190819223209.GV5011@pendragon.ideasonboard.com> <20190820083046.GA11147@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5D2F36E25C for ; Mon, 26 Aug 2019 15:57:34 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190820083046.GA11147@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Sean Paul List-Id: dri-devel@lists.freedesktop.org SGkgRGFuaWVsLAoKT24gVHVlLCBBdWcgMjAsIDIwMTkgYXQgMTA6MzA6NDZBTSArMDIwMCwgRGFu aWVsIFZldHRlciB3cm90ZToKPiBPbiBUdWUsIEF1ZyAyMCwgMjAxOSBhdCAwMTozMjowOUFNICsw MzAwLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gT24gV2VkLCBBdWcgMTQsIDIwMTkgYXQg MDI6MzU6MTBQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+PiBPbiBUaHUsIEF1ZyAw OCwgMjAxOSBhdCAxMDozMjoxNFBNICswMzAwLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4+ PiBPbiBUdWUsIEp1bCAxNiwgMjAxOSBhdCAwMzo1NzoyMVBNICswMjAwLCBBbmRyemVqIEhhamRh IHdyb3RlOgo+ID4+Pj4gT24gMTYuMDcuMjAxOSAxMTowMCwgRGFuaWVsIFZldHRlciB3cm90ZToK PiA+Pj4+PiBPbiBGcmksIEp1bCAxMiwgMjAxOSBhdCAxMTowMTozOEFNICswMjAwLCBBbmRyemVq IEhhamRhIHdyb3RlOgo+ID4+Pj4+PiBPbiAxMS4wNy4yMDE5IDE3OjUwLCBEYW5pZWwgVmV0dGVy IHdyb3RlOgo+ID4+Pj4+Pj4gT24gVGh1LCBKdWwgMTEsIDIwMTkgYXQgMDU6MTI6MjZQTSArMDIw MCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiA+Pj4+Pj4+PiBPbiAxMS4wNy4yMDE5IDE1OjE4LCBE YW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4+Pj4+PiBPbiBUaHUsIEp1bCAxMSwgMjAxOSBhdCAw Mjo0MTowMVBNICswMjAwLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+ID4+Pj4+Pj4+Pj4gT24gMTEu MDcuMjAxOSAwOTozNSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+Pj4+Pj4+Pj4+PiBPbiBXZWQs IEp1bCAxMCwgMjAxOSBhdCAwMjoxMjoxNFBNICswMjAwLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+ ID4+Pj4+Pj4+Pj4+PiBIaSBMYXVyZW50LAo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+PiBJ IGxpa2UgdGhlIGFwcHJvYWNoLCBjdXJyZW50IHByYWN0aWNlIHdoZW4gYWxtb3N0IGV2ZXJ5IGJy aWRnZSBzaG91bGQKPiA+Pj4+Pj4+Pj4+Pj4gb3B0aW9uYWxseSBpbXBsZW1lbnQgY29ubmVjdG9y LCBvciBhbHRlcm5hdGl2ZWx5IGRvd25zdHJlYW0gYnJpZGdlIG9yCj4gPj4+Pj4+Pj4+Pj4+IHBh bmVsIGlzIHZlcnkgcGFpbmZ1bC4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IFllYWggSSB0 aGluayB0aGlzIGxvb2tzIG1vc3RseSByZWFzb25hYmxlLiBTb21lIGFwaSBkZXNpZ24gY29tbWVu dHMgb24gdG9wCj4gPj4+Pj4+Pj4+Pj4gb2YgQW5kcnplaicsIHdpdGggdGhlIGZhaXIgd2Fybmlu ZyB0aGF0IEkgZGlkbid0IGJvdGhlciB0byByZWFkIHVwIG9uIGhvdwo+ID4+Pj4+Pj4+Pj4+IGl0 J3MgYWxsIHVzZWQgaW4gdGhlIGVuZC4gSSBwcm9iYWJseSBzaG91bGQgZ28gYW5kIGRvIHRoYXQs IGF0IGxlYXN0IHRvCj4gPj4+Pj4+Pj4+Pj4gZ2V0IGEgZmVlbGluZyBmb3Igd2hhdCB5b3VyIGhw ZF9jYiB1c3VhbGx5IGRvZXMuCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4gTW9yZSBjb21t ZW50cyBpbmxpbmVkLgo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+PiBPbiAwNy4wNy4yMDE5 IDIwOjE4LCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4+Pj4+Pj4+Pj4+Pj4gVG8gc3VwcG9y dCBpbXBsZW1lbnRhdGlvbiBvZiBEUk0gY29ubmVjdG9ycyBvbiB0b3Agb2YgRFJNIGJyaWRnZXMK PiA+Pj4+Pj4+Pj4+Pj4+IGluc3RlYWQgb2YgYnkgYnJpZGdlcywgdGhlIGRybV9icmlkZ2UgbmVl ZHMgdG8gZXhwb3NlIG5ldyBvcGVyYXRpb25zIGFuZAo+ID4+Pj4+Pj4+Pj4+Pj4gZGF0YToKPiA+ Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PiAtIE91dHB1dCBkZXRlY3Rpb24sIGhvdC1wbHVn IG5vdGlmaWNhdGlvbiwgbW9kZSByZXRyaWV2YWwgYW5kIEVESUQKPiA+Pj4+Pj4+Pj4+Pj4+ICAg cmV0cmlldmFsIG9wZXJhdGlvbnMKPiA+Pj4+Pj4+Pj4+Pj4+IC0gQml0bWFzayBvZiBzdXBwb3J0 ZWQgb3BlcmF0aW9ucwo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+PiBXaHkgZG8gd2UgbmVl ZCB0aGVzZSBiaXRtYXNrIGF0IGFsbD8gV2h5IGNhbm5vdCB3ZSByZWx5IG9uIHByZXNlbmNlIG9m Cj4gPj4+Pj4+Pj4+Pj4+IG9wZXJhdGlvbidzIGNhbGxiYWNrPwo+ID4+Pj4+Pj4+Pj4+IFllYWgg YWxzbyBub3QgYSBodWdlIGZhbiBvZiB0aGVzZSBiaXRtYXNrcy4gU21lbGxzIGxpa2UKPiA+Pj4+ Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IERSSVZFUl9HRU18RFJJVkVSX01PREVTRVQsIGFuZCBJIHBl cnNvbmFsbHkgcmVhbGx5IGhhdGUgdGhvc2UuIEVhc3kgdG8KPiA+Pj4+Pj4+Pj4+PiBhZGQsIGdl bmVyYWxseSBnb29kIGV4Y3VzZSB0byBub3QgaGF2ZSB0byB0aGluayB0aHJvdWdoIHRoZSBkZXNp Z24gYmV0d2Vlbgo+ID4+Pj4+Pj4+Pj4+IGRpZmZlcmVudCBwYXJ0cyBvZiBkcml2ZXJzIC0gImp1 c3QiIGFkZCBhbm90aGVyIGZsYWcuCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4+IC0gQnJp ZGdlIG91dHB1dCB0eXBlCj4gPj4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4gQWRkIGFuZCBk b2N1bWVudCB0aGVzZS4KPiA+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PiBUaHJlZSBuZXcg YnJpZGdlIGhlbHBlciBmdW5jdGlvbnMgYXJlIGFsc28gYWRkZWQgdG8gaGFuZGxlIGhvdCBwbHVn Cj4gPj4+Pj4+Pj4+Pj4+PiBub3RpZmljYXRpb24gaW4gYSB3YXkgdGhhdCBpcyBhcyB0cmFuc3Bh cmVudCBhcyBwb3NzaWJsZSBmb3IgdGhlCj4gPj4+Pj4+Pj4+Pj4+PiBicmlkZ2VzLgo+ID4+Pj4+ Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+PiBEb2N1bWVudGF0aW9uIG9mIG5ldyBvcHNlcyBkb2VzIG5v dCBleHBsYWluIGhvdyBpdCBzaG91bGQgY29vcGVyYXRlIHdpdGgKPiA+Pj4+Pj4+Pj4+Pj4gYnJp ZGdlIGNoYWluaW5nLCBJIHN1cHBvc2UgdGhleSBzaG91bGQgYmUgY2hhaW5lZCBleHBsaWNpdGx5 LCBhbSBJCj4gPj4+Pj4+Pj4+Pj4+IHJpZ2h0PyBNb3JlIGNvbW1lbnRzIGFib3V0IGl0IGxhdGVy Lgo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQ aW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+ID4+Pj4+Pj4+Pj4+ Pj4gLS0tCj4gPj4+Pj4+Pj4+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyB8ICA5 MiArKysrKysrKysrKysrKysrKysrCj4gPj4+Pj4+Pj4+Pj4+PiAgaW5jbHVkZS9kcm0vZHJtX2Jy aWRnZS5oICAgICB8IDE3MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4+ Pj4+Pj4+Pj4+Pj4gIDIgZmlsZXMgY2hhbmdlZCwgMjYxIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKPiA+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9icmlkZ2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPiA+ Pj4+Pj4+Pj4+Pj4+IGluZGV4IDUxOTU3N2YzNjNlMy4uM2MyYTI1NWRmN2FmIDEwMDY0NAo+ID4+ Pj4+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4+Pj4+Pj4+ Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4+Pj4+Pj4+Pj4+Pj4g QEAgLTcwLDYgKzcwLDggQEAgc3RhdGljIExJU1RfSEVBRChicmlkZ2VfbGlzdCk7Cj4gPj4+Pj4+ Pj4+Pj4+PiAgICovCj4gPj4+Pj4+Pj4+Pj4+PiAgdm9pZCBkcm1fYnJpZGdlX2FkZChzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4+Pj4+Pj4+Pj4+Pj4gIHsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJ bXV0ZXhfaW5pdCgmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+ Pj4+Pj4+Pj4gIAltdXRleF9sb2NrKCZicmlkZ2VfbG9jayk7Cj4gPj4+Pj4+Pj4+Pj4+PiAgCWxp c3RfYWRkX3RhaWwoJmJyaWRnZS0+bGlzdCwgJmJyaWRnZV9saXN0KTsKPiA+Pj4+Pj4+Pj4+Pj4+ ICAJbXV0ZXhfdW5sb2NrKCZicmlkZ2VfbG9jayk7Cj4gPj4+Pj4+Pj4+Pj4+PiBAQCAtODYsNiAr ODgsOCBAQCB2b2lkIGRybV9icmlkZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Cj4gPj4+Pj4+Pj4+Pj4+PiAgCW11dGV4X2xvY2soJmJyaWRnZV9sb2NrKTsKPiA+Pj4+Pj4+Pj4+ Pj4+ICAJbGlzdF9kZWxfaW5pdCgmYnJpZGdlLT5saXN0KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICAJbXV0 ZXhfdW5sb2NrKCZicmlkZ2VfbG9jayk7Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+ PiArCW11dGV4X2Rlc3Ryb3koJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICB9 Cj4gPj4+Pj4+Pj4+Pj4+PiAgRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX3JlbW92ZSk7Cj4gPj4+ Pj4+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4+Pj4+PiBAQCAtNDYzLDYgKzQ2Nyw5NCBAQCB2b2lkIGRy bV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+ Pj4+Pj4+Pj4gIH0KPiA+Pj4+Pj4+Pj4+Pj4+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfYnJp ZGdlX2VuYWJsZSk7Cj4gPj4+Pj4+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4+Pj4+PiArLyoqCj4gPj4+ Pj4+Pj4+Pj4+PiArICogZHJtX2JyaWRnZV9ocGRfZW5hYmxlIC0gZW5hYmxlIGhvdCBwbHVnIGRl dGVjdGlvbiBmb3IgdGhlIGJyaWRnZQo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIEBicmlkZ2U6IGJyaWRn ZSBjb250cm9sIHN0cnVjdHVyZQo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIEBjYjogaG90LXBsdWcgZGV0 ZWN0aW9uIGNhbGxiYWNrCj4gPj4+Pj4+Pj4+Pj4+PiArICogQGRhdGE6IGRhdGEgdG8gYmUgcGFz c2VkIHRvIHRoZSBob3QtcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sKPiA+Pj4+Pj4+Pj4+Pj4+ICsg Kgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIENhbGwgJmRybV9icmlkZ2VfZnVuY3MuaHBkX2VuYWJsZSBh bmQgcmVnaXN0ZXIgdGhlIGdpdmVuIEBjYiBhbmQgQGRhdGEgYXMKPiA+Pj4+Pj4+Pj4+Pj4+ICsg KiBob3QgcGx1ZyBub3RpZmljYXRpb24gY2FsbGJhY2suIEZyb20gbm93IG9uIHRoZSBAY2Igd2ls bCBiZSBjYWxsZWQgd2l0aAo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIEBkYXRhIHdoZW4gYW4gb3V0cHV0 IHN0YXR1cyBjaGFuZ2UgaXMgZGV0ZWN0ZWQgYnkgdGhlIGJyaWRnZSwgdW50aWwgaG90IHBsdWcK PiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBub3RpZmljYXRpb24gZ2V0cyBkaXNhYmxlZCB3aXRoIGRybV9i cmlkZ2VfaHBkX2Rpc2FibGUoKS4KPiA+Pj4+Pj4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+Pj4+Pj4g KyAqIEhvdCBwbHVnIGRldGVjdGlvbiBpcyBzdXBwb3J0ZWQgb25seSBpZiB0aGUgRFJNX0JSSURH RV9PUF9IUEQgZmxhZyBpcyBzZXQgaW4KPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBicmlkZ2UtPm9wcy4g VGhpcyBmdW5jdGlvbiBzaGFsbCBub3QgYmUgY2FsbGVkIHdoZW4gdGhlIGZsYWcgaXMgbm90IHNl dC4KPiA+Pj4+Pj4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIE9ubHkgb25lIGhvdCBw bHVnIGRldGVjdGlvbiBjYWxsYmFjayBjYW4gYmUgcmVnaXN0ZXJlZCBhdCBhIHRpbWUsIGl0IGlz IGFuCj4gPj4+Pj4+Pj4+Pj4+PiArICogZXJyb3IgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4g aG90IHBsdWcgZGV0ZWN0aW9uIGlzIGFscmVhZHkgZW5hYmxlZCBmb3IKPiA+Pj4+Pj4+Pj4+Pj4+ ICsgKiB0aGUgYnJpZGdlLgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+Pj4+PiBUbyBz aW1wbGlmeSBhcmNoaXRlY3R1cmUgbWF5YmUgd291bGQgYmUgYmV0dGVyIHRvIGVuYWJsZSBocGQg anVzdCBvbgo+ID4+Pj4+Pj4+Pj4+PiBicmlkZ2UgYXR0YWNoOgo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+ Pj4+Pj4+Pj4+PiBicmlkZ2UtPmhwZF9jYiA9IGNiOwo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ Pj4+PiBicmlkZ2UtPmhwZF9kYXRhID0gZGF0YTsKPiA+Pj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+ Pj4gcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goLi4uKTsKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ Pj4+IFllYWggSSBsaWtlIHRoaXMgbW9yZS4gVGhlIG90aGVyIHByb2JsZW0gaGVyZSBpcywgd2hh dCBpZiB5b3UgbmVlZCBtb3JlCj4gPj4+Pj4+Pj4+Pj4gdGhhbiAxIGNhbGxiYWNrIHJlZ2lzdGVy cyBvbiB0aGUgc2FtZSBicmlkZ2UgaGRwIHNpZ25hbD8KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ Pj4+PiBUaGlzIHdheSB3ZSBjb3VsZCBhdm9pZCBhZGRpbmcgbmV3IGNhbGxiYWNrcyBocGRfKGVu YWJsZXxkaXNhYmxlKQo+ID4+Pj4+Pj4+Pj4+PiB3aXRob3V0IGJpZyBzYWNyaWZpY2VzLgo+ID4+ Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+PiBPbmUgbW9yZSB0aGluZzogSFBEIGluIERpc3BsYXlQ b3J0L0hETUkgYmVzaWRlIHNpZ25hbGxpbmcgcGx1Zy91bnBsdWcsCj4gPj4+Pj4+Pj4+Pj4+IG5v dGlmaWVzIGFib3V0IHNpbmsgc3RhdHVzIGNoYW5nZSwgaG93IGl0IHRyYW5zbGF0ZXMgdG8gdGhp cyBjYj8KPiA+Pj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBk X2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkJCSAg IHZvaWQgKCpjYikodm9pZCAqZGF0YSwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJCQkJICAgICAgZW51bSBk cm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpLAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkJCSAgIHZvaWQg KmRhdGEpCj4gPj4+Pj4+Pj4+Pj4+PiArewo+ID4+Pj4+Pj4+Pj4+Pj4gKwlpZiAoIWJyaWRnZSB8 fCAhYnJpZGdlLT5mdW5jcy0+aHBkX2VuYWJsZSkKPiA+Pj4+Pj4+Pj4+Pj4+ICsJCXJldHVybjsK PiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfbG9jaygmYnJpZGdlLT5o cGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4gKwlpZiAoV0FSTihi cmlkZ2UtPmhwZF9jYiwgIkhvdCBwbHVnIGRldGVjdGlvbiBhbHJlYWR5IGVuYWJsZWRcbiIpKQo+ ID4+Pj4+Pj4+Pj4+Pj4gKwkJZ290byB1bmxvY2s7Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+ Pj4+Pj4+PiArCWJyaWRnZS0+aHBkX2NiID0gY2I7Cj4gPj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+ aHBkX2RhdGEgPSBkYXRhOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4gKwlicmlk Z2UtPmZ1bmNzLT5ocGRfZW5hYmxlKGJyaWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+ Pj4+Pj4+PiArdW5sb2NrOgo+ID4+Pj4+Pj4+Pj4+Pj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+ aHBkX211dGV4KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4+Pj4+PiArRVhQT1JUX1NZ TUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfZW5hYmxlKTsKPiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+ Pj4+Pj4+Pj4+ICsvKioKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9kaXNhYmxl IC0gZGlzYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24gZm9yIHRoZSBicmlkZ2UKPiA+Pj4+Pj4+Pj4+ Pj4+ICsgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+Pj4+Pj4+Pj4+Pj4+ ICsgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIENhbGwgJmRybV9icmlkZ2VfZnVuY3MuaHBkX2Rpc2Fi bGUgYW5kIHVucmVnaXN0ZXIgdGhlIGhvdCBwbHVnIGRldGVjdGlvbgo+ID4+Pj4+Pj4+Pj4+Pj4g KyAqIGNhbGxiYWNrIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB3aXRoIGRybV9icmlkZ2VfaHBkX2Vu YWJsZSgpLiBPbmNlIHRoaXMKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBmdW5jdGlvbiByZXR1cm5zIHRo ZSBjYWxsYmFjayB3aWxsIG5vdCBiZSBjYWxsZWQgYnkgdGhlIGJyaWRnZSB3aGVuIGFuCj4gPj4+ Pj4+Pj4+Pj4+PiArICogb3V0cHV0IHN0YXR1cyBjaGFuZ2Ugb2NjdXJzLgo+ID4+Pj4+Pj4+Pj4+ Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4+PiArICogSG90IHBsdWcgZGV0ZWN0aW9uIGlzIHN1cHBvcnRl ZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGlzIHNldCBpbgo+ID4+Pj4+Pj4+ Pj4+Pj4gKyAqIGJyaWRnZS0+b3BzLiBUaGlzIGZ1bmN0aW9uIHNoYWxsIG5vdCBiZSBjYWxsZWQg d2hlbiB0aGUgZmxhZyBpcyBub3Qgc2V0Lgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+ Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKQo+ID4+Pj4+Pj4+Pj4+Pj4gK3sKPiA+Pj4+Pj4+Pj4+Pj4+ICsJaWYgKCFicmlkZ2UgfHwg IWJyaWRnZS0+ZnVuY3MtPmhwZF9kaXNhYmxlKQo+ID4+Pj4+Pj4+Pj4+Pj4gKwkJcmV0dXJuOwo+ ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4gKwltdXRleF9sb2NrKCZicmlkZ2UtPmhw ZF9tdXRleCk7Cj4gPj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+ZnVuY3MtPmhwZF9kaXNhYmxlKGJy aWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+aHBkX2Ni ID0gTlVMTDsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJYnJpZGdlLT5ocGRfZGF0YSA9IE5VTEw7Cj4gPj4+ Pj4+Pj4+Pj4+PiArCW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+ Pj4+Pj4gK30KPiA+Pj4+Pj4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1fYnJpZGdlX2hw ZF9kaXNhYmxlKTsKPiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+ICsvKioKPiA+Pj4+ Pj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9ub3RpZnkgLSBub3RpZnkgaG90IHBsdWcgZGV0 ZWN0aW9uIGV2ZW50cwo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9s IHN0cnVjdHVyZQo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIEBzdGF0dXM6IG91dHB1dCBjb25uZWN0aW9u IHN0YXR1cwo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4+PiArICogQnJpZGdlIGRy aXZlcnMgc2hhbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHJlcG9ydCBob3QgcGx1ZyBldmVudHMg d2hlbiB0aGV5Cj4gPj4+Pj4+Pj4+Pj4+PiArICogZGV0ZWN0IGEgY2hhbmdlIGluIHRoZSBvdXRw dXQgc3RhdHVzLCB3aGVuIGhvdCBwbHVnIGRldGVjdGlvbiBoYXMgYmVlbgo+ID4+Pj4+Pj4+Pj4+ Pj4gKyAqIGVuYWJsZWQgYnkgdGhlICZkcm1fYnJpZGdlX2Z1bmNzLmhwZF9lbmFibGUgY2FsbGJh Y2suCj4gPj4+Pj4+Pj4+Pj4+PiArICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9u IHNoYWxsIGJlIGNhbGxlZCBpbiBhIGNvbnRleHQgdGhhdCBjYW4gc2xlZXAuCj4gPj4+Pj4+Pj4+ Pj4+PiArICovCj4gPj4+Pj4+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICBlbnVtIGRybV9j b25uZWN0b3Jfc3RhdHVzIHN0YXR1cykKPiA+Pj4+Pj4+Pj4+Pj4+ICt7Cj4gPj4+Pj4+Pj4+Pj4+ PiArCW11dGV4X2xvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJaWYg KGJyaWRnZS0+aHBkX2NiKQo+ID4+Pj4+Pj4+Pj4+Pj4gKwkJYnJpZGdlLT5ocGRfY2IoYnJpZGdl LT5ocGRfZGF0YSwgc3RhdHVzKTsKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IFNvIHRoaXMg aXNuJ3QgcXVpdGUgd2hhdCBJIGhhZCBpbiBtaW5kLiBJbnN0ZWFkIHNvbWV0aGluZyBsaWtlIHRo aXM6Cj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiAJLyogaXRlcmF0ZXMgb3ZlciBhbGwgYnJp ZGdlcyBpbiB0aGUgY2hhaW4gY29udGFpbmluZyBAYnJpZGdlICovCj4gPj4+Pj4+Pj4+Pj4gCWZv cl9lYWNoX2JyaWRnZSh0bXBfYnJpZGdlLCBicmlkZ2UpIHsKPiA+Pj4+Pj4+Pj4+PiAJCWlmICh0 bXBfYnJpZGdlID09IGJyaWRnZSkKPiA+Pj4+Pj4+Pj4+PiAJCQljb250aW51ZTsKPiA+Pj4+Pj4+ Pj4+PiAJCWlmIChicmlkZ2UtPmhwZF9ub3RpZnkpOwo+ID4+Pj4+Pj4+Pj4+IAkJCWJyaWRnZS0+ aHBkX25vdGlmeSh0bXBfYnJpZGdlLCBicmlkZ2UsIHN0YXR1cyk7Cj4gPj4+Pj4+Pj4+Pj4gCX0K PiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IAllbmNvZGVyID0gZW5jb2Rlcl9mb3JfYnJpZGdl KGJyaWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4gCWlmIChlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZS0+YnJp ZGdlX2hwZF9ub3RpZnkpCj4gPj4+Pj4+Pj4+Pj4gCQllbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZS0+ YnJpZGdlX2hwZF9ub3RpZnkoZW5jb2RlciwgYnJpZGdlLCBzdGF0dXMpOwo+ID4+Pj4+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4+Pj4gCWRldiA9IGJyaWRnZS0+ZGV2Cj4gPj4+Pj4+Pj4+Pj4gCWlmIChkZXYt Pm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSkKPiA+Pj4+Pj4+ Pj4+PiAJCWRldi0+bW9kZV9jb25maWcuaGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5 KGRldiwgYnJpZGdlLCBzdGF0dXMpCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiBObyByZWdp c3RlciBjYWxsYmFjayBuZWVkZWQsIG5vIGxvY2tpbmcgbmVlZGVkLCBldmVyeW9uZSBnZXRzIGV4 YWN0bHkgdGhlCj4gPj4+Pj4+Pj4+Pj4gaHBkIHRoZXkgd2FudC9uZWVkLgo+ID4+Pj4+Pj4+Pj4K PiA+Pj4+Pj4+Pj4+IEFzIEkgdW5kZXJzdGFuZCB5b3Ugd2FudCB0byBub3RpZnkgZXZlcnkgbWVt YmVyIG9mIHRoZSBwaXBlbGluZS4KPiA+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+PiBJIHRoaW5rIGl0 IHNob3VsZCBiZSBlbm91Z2ggdG8gbm90aWZ5IG9ubHkgdGhlIHNvdXJjZSwgYW5kIHRoZW4gc291 cmNlCj4gPj4+Pj4+Pj4+PiBzaG91bGQgZGVjaWRlIGlmL3doZW4gdGhlIGhwZCBzaG91bGQgYmUg cHJvcGFnYXRlZCB1cHN0cmVhbS4KPiA+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+PiBJdCBsb29rcyBt b3JlIGdlbmVyaWMgZm9yIG1lLgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBJJ20gbm90IHBhcnNp bmcgLi4uIGRvIHlvdSB0aGluayBteSBpZGVhIGlzIG1vcmUgZ2VuZXJpYyBhbmQgdXNlZnVsLCBv cgo+ID4+Pj4+Pj4+PiB0aGUgb25lIGZyb20gTGF1cmVudD8gS2luZGEgY29uZnVzZWQgaGVyZS4K PiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IFJlZ2FyZGluZyBnZW5lcmFsIGlkZWE6Cj4gPj4+Pj4+Pj4K PiA+Pj4+Pj4+PiAxLiBMYXVyZW50J3MgYXBwcm9hY2ggaXMgdG8gbm90aWZ5IG9ubHkgY29uc3Vt ZXIsIEkgZ3Vlc3MgdXN1YWxseSB2aWRlbwo+ID4+Pj4+Pj4+IHNvdXJjZS4KPiA+Pj4+Pj4+Pgo+ ID4+Pj4+Pj4+IDIuIFlvdXIgaXMgdG8gbm90aWZ5IGFsbCBvdGhlciBicmlkZ2VzIGFuZCBlbmNv ZGVyLgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gQW5kIEkgcHJlZmVyIDFzdCBhcHByb2FjaCwgd2h5 Ogo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gLSB0aGUgc291cmNlIGNhbiBkZWNpZGUgaWYvd2hlbiBh bmQgdG8gd2hvIHByb3BhZ2F0ZSB0aGUgc2lnbmFsLAo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gLSBp cyBtb3JlIGdlbmVyaWMsIGZvciBleGFtcGxlIGlmIGJyaWRnZSBzZW5kIHNpZ25hbCB0byB0d28K PiA+Pj4+Pj4+PiBtb25pdG9ycy9wYW5lbHMsIGl0IGNhbiBkZWxheSBocGQgcHJvcGFnYXRpb24g dGlsbCBib3RoIHNpbmtzIGFyZSBwcmVzZW50LAo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IFdpdGggTGF1 cmVudCdzIGFwcHJvYWNoIHRoZSBicmlkZ2UgY2Fubm90IHNlbmQgdGhlIGhwZCB0byBtb3JlIHRo YW4gb25lCj4gPj4+Pj4+PiBjb25zdW1lci4gVGhlcmUncyBvbmx5IDEgY2FsbGJhY2suIFNvIHlv dSdyZSBleGFtcGxlIGRvZXNuJ3Qgd29yay4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gSWYgdGhlcmUgd2ls bCBiZSB0d28gY29uc3VtZXJzLCB0aGVyZSB3aWxsIGJlIHR3byBicmlkZ2UgYXR0YWNobWVudHMs Cj4gPj4+Pj4+IHRodXMgdGhlcmUgd2lsbCBiZSB0d28gbm90aWZpY2F0aW9ucywgaXQgc2hvdWxk IHdvcmsuCj4gPj4+Pj4KPiA+Pj4+PiAyIGNvbnN1bWVycywgMSBwcm9kdWNlci4gVGhlcmUncyBv bmx5IF9vbmVfIGNhbGxiYWNrIGluIHRoZSBwcm9kdWNlci4gVGhlCj4gPj4+Pj4gY2FsbGJhY2sg aXMgcmVnaXN0ZXJlZCBvbiB0aGUgcHJvZHVjZSBicmlkZ2UsIG5vdCBvbiB0aGUgY29uc3VtZXIg YnJpZGdlCj4gPj4+Pj4gKG9yIEknbSB0b3RhbGxseSBtaXNyZWFkaW5nIHdoYXQgTGF1cmVudCBk b2VzIGhlcmUpLgo+ID4+Pj4gCj4gPj4+PiBJIGhhdmUgYXNzdW1lZCB0aGF0IGlmIGRldmljZXMg ZXhwb3NlcyB0d28gaGFyZHdhcmUgc2luayBpbnRlcmZhY2VzIGl0Cj4gPj4+PiB3aWxsIGV4cG9z ZSB0d28gc2VwYXJhdGUgYnJpZGdlcyAtIG9mIGNvdXJzZSBpdCB3aWxsIG5vdCB3b3JrIHdpdGgK PiA+Pj4+ICJicmlkZ2UgY2hhaW5pbmciIHRoaW5nLCBidXQgdGhpcyBpcyBhIGRpZmZlcmVudCBz dG9yeS4KPiA+Pj4gCj4gPj4+IERhbmllbCBpcyByaWdodCB0aGF0IHRoZSBjdXJyZW50IGltcGxl bWVudGF0aW9uIG9ubHkgYWxsb3dzIG9uZQo+ID4+PiBjb25zdW1lci4gVGhpcyBpcyBob3dldmVy IG5vdCBhIGxpbWl0YXRpb24gb2YgdGhlIEFQSSwgYnV0IG9mIGl0cwo+ID4+PiBpbXBsZW1lbnRh dGlvbiwgYXMgSSBvbmx5IG5lZWRlZCBhIHNpbmdsZSBjb25zdW1lci4gVGhlIGhlbHBlcnMgaW4g dGhpcwo+ID4+PiBzZXJpZXMgZW5zdXJlIHRoYXQgbmVpdGhlciB0aGUgY29uc3VtZXIgbm9yIHRo ZSBwcm9kdWNlciBwb2tlIGluIHRoZQo+ID4+PiBkcm1fYnJpZGdlIHN0cnVjdHVyZSB0byBjYWxs IGJhY2sgdG8gdGhlIEhQRCBoYW5kbGVyOgo+ID4+PiAKPiA+Pj4gLSBUaGUgY29uc3VtZXIgY2Fs bHMgZHJtX2JyaWRnZV9ocGRfZW5hYmxlKCkgYW5kCj4gPj4+ICAgZHJtX2JyaWRnZV9ocGRfZGlz YWJsZSgpLCB3aGljaCBjb3VsZCBvZmZlciBhIHJlZmVyZW5jZS1jb3VudGVkCj4gPj4+ICAgYmVo YXZpb3VyIGlmIGRlc2lyZWQgd2l0aG91dCBjaGFuZ2VzIHRvIHRoZSBjb25zdW1lci4KPiA+Pj4g Cj4gPj4+IC0gVGhlIHByb2R1Y2VyIGdldHMgY29uZmlndXJlZCBieSAuaHBkX2VuYWJsZSgpIGFu ZCAuaHBkX2Rpc2FibGUoKSwKPiA+Pj4gICB3aGljaCBjb3VsZCBhbHNvIGVhc2lseSBhY2NvbW1v ZGF0ZSByZWZlcmVuY2UtY291bnRpbmcgaW4gdGhlIGRybQo+ID4+PiAgIGJyaWRnZSBjb3JlIHdp dGhvdXQgY2hhbmdlcyB0byB0aGUgcHJvZHVjZXIuCj4gPj4+IAo+ID4+PiAtIFRoZSBwcm9kdWNl ciBub3RpZmllcyBIUEQgd2l0aCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSwgd2hpY2ggY291bGQK PiA+Pj4gICBlYXNpbHkgYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBjb25zdW1lcnMg d2l0aG91dCBjaGFuZ2VzIHRvCj4gPj4+ICAgdGhlIHByb2R1Y2VyLgo+ID4+PiAKPiA+Pj4gVGhp cyBpcyBhY3R1YWxseSBteSBzZWNvbmQgdmVyc2lvbiBvZiB0aGUgSFBEIG1lY2hhbmlzbS4gVGhl IGZpcnN0Cj4gPj4+IHZlcnNpb24gd2FzIG5ldmVyIHBvc3RlZCwgcG9rZWQgaW50byBkcm1fYnJp ZGdlLCBhbmQgcmVxdWlyZWQgdGhlCj4gPj4+IHByb2R1Y2VyIHRvIGJlIGF3YXJlIG9mIHRoZSBj YWxsYmFja3MuIEFmdGVyIGRpc2N1c3NpbmcgdGhpcyBwcml2YXRlbHkKPiA+Pj4gd2l0aCBEYW5p ZWwsIEkgY2FtZSB1cCB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0aGlzIHNlcmllcyB0aGF0 LAo+ID4+PiB3aGlsZSBub3Qgc3VwcG9ydGluZyBtdWx0aXBsZSBjb25zdW1lcnMgbm93LCBtYWtl cyBpdCBlYXN5IHRvIGV4dGVuZAo+ID4+PiBsYXRlciB3aXRob3V0IG1pbmltYWwgZWZmb3J0Lgo+ ID4+PiAKPiA+Pj4gRGFuaWVsJ3MgcHJvcG9zZWQgaW1wbGVtZW50YXRpb24gYWJvdmUgbG9va3Mg cmVhc29uYWJsZSB0byBtZSwgcHJvdmlkZWQKPiA+Pj4gd2UgY2FuIGl0ZXJhdGUgb3ZlciB0aGUg YnJpZGdlcyBpbiBhbiBvcmRlciB0aGF0IGRvbid0IGRlcGVuZCBvbiB0aGUKPiA+Pj4gcG9zaXRp b24gb2YgdGhlIHByb2R1Y2VyIGluIHRoZSBjaGFpbiAoc2hvdWxkIGJlIGVhc3kgdG8gc29sdmUg YnkKPiA+Pj4gc3RhcnRpbmcgYXQgdGhlIGVuY29kZXIgZm9yIGluc3RhbmNlKS4gSXQgaG93ZXZl ciBsb29rcyBhIGJpdCBsaWtlIGEKPiA+Pj4gbWlkbGF5ZXIgdG8gbWUgOi0pIFRoYXQncyB3aHkg SSBoYXZlIGEgc2ltaWxhciBpbXBsZW1lbnRhdGlvbiBpbiB0aGUKPiA+Pj4gY29ubmVjdG9yLWJy aWRnZSBoZWxwZXIsIHdoaWNoIGNvdWxkIGJlIGV4dGVuZGVkIHRvIGNhbGwKPiA+Pj4gZW5jb2Rl ci0+aGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KCkgYW5kCj4gPj4+IGRldi0+bW9k ZV9jb25maWcuaGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KCkgaW5zdGVhZCBvZgo+ ID4+PiBoYXJkY29kaW5nIGRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoKS4gTW92aW5nIHRo ZSBjb2RlIHRvCj4gPj4+IGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHdvdWxkIG9uIHRoZSBvdGhl ciBoYW5kIHNldCB0aGUgbm90aWZpY2F0aW9uCj4gPj4+IHNlcXVlbmNlIHRvd2FyZHMgdGhlIGVu Y29kZXIgYW5kIGRyaXZlciBpbiBzdG9uZS4gRGFuaWVsLCBkbyB5b3UgdGhpbmsKPiA+Pj4gdGhh dCB3b3VsZCBiZSBiZXR0ZXIgPwo+ID4+IAo+ID4+IFNvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4g dGhlIG1pZGxheWVyIGFuZCB0aGUgaGVscGVyIGlzIHRoYXQgdGhlIGhlbHBlcgo+ID4+IGNhbiBi ZSBpZ25vcmVkLiBXaGljaCB0aGUgYWJvdmUgc3RpbGwgY2FuOgo+ID4+IAo+ID4+IC0gcHJvZHVj ZXIgY2FuIGNob29zZSB0byBub3QgY2FsbCB0aGF0IGZ1bmN0aW9uCj4gPj4gLSBjb25zdW1lciBj YW4gY2hvb3NlIG5vdCB0byBoYXZlIHRoZSBjYWxsYmFjawo+ID4+IAo+ID4+IE5vdyBncmVhdCBo ZWxwZXJzIGFsbG93IHlvdSB0byBpZ25vcmUgb25seSBwYXJ0cyBvZiB0aGVtLCBzbyB0aGF0IHlv dSBjYW4KPiA+PiBtaXgmbWF0Y2guIFdoaWNoIGFnYWluIEkgdGhpbmsgd2l0aCB0aGUgYnJpZGdl IHN0dWZmIHdlJ3JlIGRpc2N1c3NpbmcgaGVyZQo+ID4+IGlzIGFzc3VyZWQuCj4gPiAKPiA+IFRo YXQncyBhIGJpdCBkaWZmaWN1bHQgZm9yIHRoZSBmaXJzdCBwYXJ0LCBhcyBpZiB0aGUgcHJvZHVj ZXIgZG9lc24ndAo+ID4gbm90aWZ5IG9mIEhQRCBldmVudHMsIGNvbnN1bWVycyB3b24ndCBiZSBh YmxlIHRvIGdldCB0aGVtIDotKSBUaGUgc2Vjb25kCj4gPiBwYXJ0LCBjb25zdW1lcnMgbm90IGhh dmluZyB0aGUgY2FsbGJhY2ssIGlzIGFscmVhZHkgc3VwcG9ydGVkLgo+ID4gCj4gPj4gU28gdGhl IGZpbmFsIGJpdCBpcyBob3cgb3BpbmlvbmF0ZWQgYSBoZWxwZXIgY2FuIGJlLCBhbmQgaW1vIGl0 IGNhbiBiZQo+ID4+IHZlcnkgb3BpbmlvbmF0ZWQgYW5kIHN0cmljdCBhbmQgaW5mbGV4aWJsZS4g VGhhdCBtZWFucyBpdCB3b24ndCBiZSB1c2VmdWwKPiA+PiBmb3IgZXZlcnkgcG9zc2libGUgY2Fz ZSwgYnV0IHRob3NlIGNhbiBiZSBoYW5kbGVkIGJ5IHNpbXBseSBub3QgdXNpbmcgdGhlCj4gPj4g aGVscGVyIChvciB0aGF0IHBhcnQgb2YgdGhlIGhlbHBlcnMpLiBFeGFtcGxlcwo+ID4+IAo+ID4+ IC0gc2ltcGxlIGRpc3BsYXkgcGlwZSBpcyB2ZXJ5IG9waW5pb25hdGVkLCBidXQgdHJhZGVzIHRo YXQgaW4gZm9yIGJlaW5nCj4gPj4gICB2ZXJ5IHVzZWZ1bCBmb3IgcmVhbGx5IHNpbXBsZSBkaXNw bGF5cwo+ID4+IAo+ID4+IC0gc2ltaWxhciB3aXRoIGF0b21pYyBoZWxwZXJzLCB0aGVyZSdzIGEg dmVyeSBzdHJvbmcgc3VnZ2VzdGlvbiB0aGF0ICJpZgo+ID4+ICAgaXQgZG9lc24ndCBmaXQsIHdy aXRlIHlvdXIgb3duIGNvbW1pdF90YWlsKCkiCj4gPiAKPiA+IChPbiBhIHNpZGUgbm90ZSwgZG9p bmcgc28gaXMgcXVpdGUgY29tcGxleCwgYW5kIEkgdW5kZXJzdGFuZCB3aHkgbm9ib2R5Cj4gPiB3 YW50cyB0byByZWFsbHkgZGl0Y2ggdGhlIGF0b21pYyBoZWxwZXJzKQo+IAo+IEJ1dCBtb3N0IGRy aXZlcnMgZG8gb3ZlcndyaXRlIHBhcnRzIG9mIGl0LCB3aGljaCBpcyBraW5kYSBteSBwb2ludDoK PiBFdmVyeW9uZSBzdGlsbCBrZWVwcyB1c2luZyBhdCBsZWFzdCBzb21lIHBhcnRzIG9mIGF0b21p YywgYW5kIGJlbmVmaXR0aW5nCj4gZnJvbSB0aGUgb3BpbmlvbmF0ZWQgZ3VpZGVsaW5lcyB0aG9z ZSBoYXZlLgoKQWgsIHllcywgcmV1c2luZyB0aGUgZXhpc3RpbmcgaGVscGVycyB0byB0d2VhayB0 aGUgYmVoYXZpb3VyIGlzIGluZGVlZApmaW5lIChhbHRob3VnaCBiYXNlZCBvbiBteSBleHBlcmll bmNlIHdpdGggdGhlIHJjYXItZHUgZHJpdmVyLCBpdCBvZnRlbgp0cmFkZXMgb25lIHNldCBvZiBp c3N1ZXMgZm9yIGFub3RoZXIsIGJ1dCB0aGF0IG1heSBiZSBiZWNhdXNlIG1vcmUKaGVscGVycyB3 b3VsZCBiZSBuZWVkZWQgZm9yIGRpZmZlcmVudCBjbGFzc2VzIG9mIGRldmljZXMpLgoKPiA+PiBB bmQgSSB0aGluayBicmlkZ2UgaGVscGVycyBwcm9iYWJseSBhbHNvIG5lZWQgZmFpcmx5IG9waW5p b2F0ZWQsIHNpbXBseSB0bwo+ID4+IG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgYnJpZGdlIGRyaXZl cnMgd29yayB0b2dldGhlciBpbiBhIGNvaGVyZW50IGZhc2hpb24uCj4gPj4gSWYgd2UgYWxsb3cg dG9vIG11Y2ggZmxleGliaWxpdHkgZXZlcnlvbmUgYmVuZHMgdGhlIHJ1bGVzIGEgYml0LCBhbmQK PiA+PiBub3RoaW5nIGZpdHMuCj4gPiAKPiA+IEkgYWdyZWUgd2l0aCB5b3Ugb24gdGhhdC4KPiA+ IAo+ID4+IFdydCB5b3VyIHF1ZXN0aW9uOiBPbmUgb3B0aW9uIHdvdWxkIGJlIHRvIGRvIHRoZSBz YW1lIHRoaW5nIGxpa2Ugc2hhcmVkCj4gPj4gaW50ZXJydXB0IGxpbmUgaGFuZGxlcnMuIEFzIHNv b24gYXMgdGhlIGZpcnN0IGludGVycnVwdCBoYW5kbGVyIHNheXMgIkknCj4gPj4gdmUgaGFuZGxl ZCB0aGlzIG9uZSIgd2Ugc3RvcCBwcm9jZXNzaW5nLiBCdXQgdGhhdCBtaWdodCBsZWFkIHRvIG1v cmUKPiA+PiBjb25mdXNpb24gYWJvdXQgd2hvJ3MgcmVzcG9uc2libGUgZm9yIGFuIGludGVycnVw dC4KPiA+IAo+ID4gSSBkb24ndCB0aGluayB0aGF0J3MgYSBnb29kIGlkZWEsIGFzIG1vcmUgdGhh biBvbmUgY29uc3VtZXIgbWF5IG5lZWQgdG8KPiA+IHByb2Nlc3MgdGhlIGV2ZW50LiBBIHJlYWwg bGlmZSBleGFtcGxlIHdpdGggdHdvIGNvbnN1bWVycyB3b3VsZCBiZSBhIENFQwo+ID4gY29udHJv bGxlciBwYXJ0IG9mIGEgYnJpZGdlIG5lZWRpbmcgdG8gZ2V0IGluZm9ybWVkIGFib3V0IEhETUkK PiA+IHBsdWcvdW5wbHVnIHRvIHNldCB0aGUgQ0VDIGFkZHJlc3MgaW4gdGhlIGRldmljZSAodGhp cyBub3RpZmljYXRpb24gaXMKPiA+IGhhbmRsZWQgdGhyb3VnaCB0aGUgYnJpZGdlIG5vdGlmaWNh dGlvbiBvcGVyYXRpb24pLCBhbmQgdGhlIGRpc3BsYXkKPiA+IGRyaXZlciBuZWVkaW5nIHRvIHJl cG9ydCBIUEQgdG8gdGhlIERSTSBjb3JlLgo+ID4gCj4gPiBBcyBJJ20gc3RpbGwgbm90IHN1cmUg d2h5IHlvdSB0aGluayBJIHNob3VsZCByZXBsYWNlIHRoZSBleGlzdGluZwo+ID4gaW1wbGVtZW50 YXRpb24gd2l0aCB5b3VyIGFib3ZlIHByb3Bvc2FsLCBzbyBJJ2xsIGtlZXAgdGhlIGV4aXN0aW5n IGNvZGUKPiA+IGZvciB0aGUgdjIgdGhhdCBJIHdpbGwgcG9zdCBzb29uIHVudGlsIHdlIGNvbXBs ZXRlIHRoaXMgZGlzY3Vzc2lvbi4KPiA+IAo+ID4gVG8gaG9wZWZ1bGx5IGhlbHAgd2l0aCB0aGUg ZGlzY3Vzc2lvbiwgSSB3b3VsZCBsaWtlIHRvIHJlcGVhdCBteSBtYWluCj4gPiBhcmd1bWVudCA6 IG1vdmluZyB0aGUgZGlzcGF0Y2hpbmcgb2YgdGhlIG5vdGlmaWNhdGlvbiB0bwo+ID4gZHJtX2Jy aWRnZV9ocGRfbm90aWZ5KCkgc2V0cyB0aGUgb3JkZXIgaW4gd2hpY2ggY29tcG9uZW50cyAoYnJp ZGdlcywKPiA+IGVuY29kZXJzLCBkcml2ZXJzKSBhcmUgbm90aWZpZWQgaW4gc3RvbmUsIHdoaWxl IGtlZXBpbmcgaXQgaW4gdGhlCj4gPiBkcm1fYnJpZGdlX2Nvbm5lY3RvciBoZWxwZXIgYWxsb3dz IGRyaXZlcnMgdG8gbm90IHVzZSB0aGUgaGVscGVyIGFuZAo+ID4gY29tZSB1cCB3aXRoIGEgZGlm ZmVyZW50IGltcGxlbWVudGF0aW9uIHRoYXQgZml0cyB0aGVpciBuZWVkcyBiZXR0ZXIuCj4gCj4g VGhhdCAic2V0IHRoaW5ncyBpbiBzdG9uZSIgaXMgYWN0dWFsbHkgd2hhdCBJIHdhbnQuIFdlbGws IG5vdCBzdG9uZSwgYnV0Cj4gcmVhbGx5IGNsZWFyIHNlbWFudGljcy4gWW91J3JlIGVzc2VudGlh bGx5IGNyZWF0aW5nIGEgbm90aWZpZXIsIGV4Y2VwdAo+IHRoZXJlJ3Mgb25seSBldmVyeSBvbmUg bm90aWZpZWQgZW50aXR5IGF0IG1vc3QuIEltZSBiYWQgdGhpbmdzIGhhcHBlbiB3aXRoCj4gbm90 aWZpZXJzLCBpdCdzIHVuYXZvaWRhYmxlLgo+IAo+IFNvIG1heWJlIHdoYXQgd2UgbmVlZCBpbnN0 ZWFkIGlzIGEgYnJpZGdlX2hwZF9wcm9jZXNzIGNhbGxiYWNrIChpbgo+IG1vZGVfY29uZmlnLmhl bHBlcnMgb3Igd2hlcmV2ZXIsIG9yIG9uIHRoZSBlbmNvZGVyLCBkdW5ubyksIHdpdGggdGhlIGFi b3ZlCj4gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4gQnV0IHlvdSBjYW4gdGhlbiBvdmVyd3JpdGUg aXQuCgpUaGF0IHNvdW5kcyByZWFzb25hYmxlLCBidXQgSSB0aGluayBJJ2QgbWFrZSBpdCBhIGNv bm5lY3RvciBjYWxsYmFjawppbnN0ZWFkLCBhcyBpdCdzIHJlYWxseSBhYm91dCBhIGNoYWluIG9m IGJyaWRnZXMgKyBjb25uZWN0b3IuIFdoYXQgZG8KeW91IHRoaW5rID8KCj4gT3IgYW5vdGhlciBv cHRpb24gd291bGQgYmUgdGhhdCBhdCBsZWFzdCBvbiBEVCBwbGF0Zm9ybXMsIERUIGdldHMgdG8g c3BlYwo+IHRoZSBlbnRpcmUgaHBkIHJvdXRpbmcuCj4gCj4gSSBqdXN0IGZlYXIgdGhhdCBpZiB3 ZSBsZXQgYnJpZGdlIGRyaXZlcnMgYWxsIG1hbmFnZSB0aGlzIHRoZW1zZWx2ZXMgd2UnbGwKPiBl bmQgdXAgd2l0aCBhIGZvcm1hZGlibGUgbWVzcyBvZiBzbGlnaHQgaW5jb21wYXRpYmlsaXRpZXMu CgpCcmlkZ2VzIGRyaXZlcnMgZG9uJ3QgbWFuYWdlIHRoaXMgdGhlbXNlbHZlcyBpbiB0aGUgY3Vy cmVudCBwcm9wb3NhbCA6LSkKVGhlIGJlaGF2aW91ciBpcyBpbXBsZW1lbnRlZCBpbiBhIGhlbHBl ciwgd2hpY2ggcmVnaXN0ZXJzIGl0c2VsZiBhcyBhCmxpc3RlbmVyIGZvciBIUEQuIERyaXZlcnMg ZG9uJ3QgaGF2ZSB0byB1c2UgdGhhdCBoZWxwZXIuCgpJIGNhbiByZXBsYWNlIHRoYXQgcmVnaXN0 cmF0aW9uIG1lY2hhbmlzbSB3aXRoIGEgY29ubmVjdG9yIGNhbGwgYWxyZWFkeQppZiB5b3UgcHJl ZmVyLgoKPiA+Pj4gSSB3b3VsZCBsaWtlIHRvIHJlbWluZCBldmVyeWJvZHkgdGhhdCB0aGlzIHNl cmllcyBpc24ndCB0aGUgbGFzdCBJIHdpbGwKPiA+Pj4gZXZlciBzdWJtaXQsIGFuZCBJIHBsYW4g dG8gZG8gbW9yZSB3b3JrIG9uIGRybV9icmlkZ2UgYW5kIGRybV9wYW5lbC4gSSdtCj4gPj4+IG9w ZW4gdG8gc3VnZ2VzdGlvbnMsIGFuZCBjYW4gYWRkcmVzcyBwcm9ibGVtcyBvbiB0b3Agb2YgdGhl c2UgcGF0Y2hlcywKPiA+Pj4gcHJvdmlkZWQgb2J2aW91c2x5IHRoYXQgdGhpcyBzZXJpZXMgZG9l c24ndCBnbyBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uLgo+ID4+PiBJJ20gb2YgY291cnNlIGFsc28g d2lsbGluZyB0byByZXdvcmsgdGhpcyBzZXJpZXMsIGJ1dCBnaXZlbiB0aGUgYW1vdW50Cj4gPj4+ IG9mIHdvcmsgd2UgaGF2ZSBpbiB0aGUgZHJtX2JyaWRnZSByZWFsbSwgSSBjYW4ndCBmaXggZXZl cnl0aGluZyBpbiBvbmUKPiA+Pj4gZ28gOi0pCj4gPj4+IAo+ID4+Pj4+Pj4+IC0gaXQgcmVzZW1i bGVzIGhhcmR3YXJlIHdpcmVzIDopCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gVGhpcyBpc24ndCBmb3Ig dGhlIGh3IHdpcmVzIGFmYWl1aS4gVGhlIGh3IGhwZCB0ZXJtaW5hdGVzIGluIHRoZSBzb3VyY2UK PiA+Pj4+Pj4+IGJyaWRnZSwgd2hpY2ggdGhlbiBjYWxscyBkcm1fYnJpZGdlX2hwZF9ub3RpZnko KSB0byBpbmZvcm0gYW55b25lIGVsc2UKPiA+Pj4+Pj4+IGludGVyZXN0ZWQgaW4gdGhhdCBocGQg c2luZ2FsLiBUaGlzIGluY2x1ZGVzOgo+ID4+Pj4+Pj4gLSBPdGhlciBicmlkZ2VzLCBlLmcuIGlm IHRoZXkgcHJvdmlkZSBDRUMgc3VwcG9ydC4KPiA+Pj4+Pj4+IC0gT3RoZXIgYnJpZGdlcywgbWF5 YmUgdGhleSBuZWVkIHRvIHJlLXJ1biB0aGUgSERDUCBzdGF0ZSBlbmdpbmUKPiA+Pj4+Pj4+IC0g T3ZlcmFsbCBkcml2ZXIsIHNvIGl0IGNhbiB1cGRhdGUgdGhlIG1vZGVzL2Nvbm5lY3RvciBzdGF0 dXMgYW5kIHNlbmQgdGhlCj4gPj4+Pj4+PiAgIHVldmVudCB0byB0aGUgZHJpdmVyLgo+ID4+Pj4+ Pj4gLSBPdmVyYWxsIGRpc3BsYXkgcGlwZWxpbmUgZm9yIHRoaXMgc3BlY2lmaWMgYnJpZGdlLCBt YXliZSB5b3UgbmVlZCB0bwo+ID4+Pj4+Pj4gICBzaHV0IGRvd24vcmUtZW5hYmxlIHRoZSBwaXBl IGJlY2F1c2UgJHJlYXNvbnMuCj4gPj4+Pj4+PiAgCj4gPj4+Pj4+PiBUaGF0J3MgYXQgbGVhc3Qg bXkgdW5kZXJzdGFuZGluZyBmcm9tIGxvdHMgb2YgY2hhdHMgd2l0aCBMYXVyZW50IGFib3V0Cj4g Pj4+Pj4+PiB3aGF0IGhlIHdhbnRzIHRvIGRvIGhlcmUuCj4gPj4+IAo+ID4+PiBUaGF0J3MgY29y cmVjdCwgYW5kIHRoYXQncyB3aGF0IEkgd2FzIHRyeWluZyB0byBpbXBsZW1lbnQgOi0pIFRoZQo+ ID4+PiBub3RpZmljYXRpb24sIGluIHRoaXMgcGF0Y2ggc2VyaWVzLCBnb2VzIGZyb20gdGhlIHBy b2R1Y2VyIGJyaWRnZSB0byBhCj4gPj4+IGNlbnRyYWwgcGxhY2UgKG5hbWVseSB0aGUgY29ubmVj dG9yLCB3aXRoIGEgaGVscGVyIGltcGxlbWVudGF0aW9uCj4gPj4+IGF2YWlsYWJsZSBhcyBwYXJ0 IG9mIHRoaXMgc2VyaWVzLCBidXQgY3VzdG9tIGltcGxlbWVudGF0aW9ucyBpbiBkaXNwbGF5Cj4g Pj4+IGRyaXZlcnMgYXJlIGZpbmUgaWYgbmVlZGVkKSB0aGF0IHRoZW4gZGlzcGF0Y2hlcyB0aGUg bm90aWZpY2F0aW9uIHRvIGFsbAo+ID4+PiBicmlkZ2VzICh0aHJvdWdoIHRoZSAubG9zdF9ob3Rw bHVnKCkgb3BlcmF0aW9uLCB3aGljaCB3ZSBjb3VsZCByZXBsYWNlCj4gPj4+IGJ5IGFuIC5ocGRf bm90aWZ5KCkgb3BlcmF0aW9uKSBmb3IgdGhlIGZpcnN0IHR3byBwdXJwb3NlcyBsaXN0ZWQgYWJv dmUsCj4gPj4+IGFuZCB0aGVuIHRvIHRoZSBvdmVyYWxsIGRyaXZlci4gVGhlIG9ubHkgdGhpbmcg SSBkb24ndCBzdXBwb3J0IHlldCBpcwo+ID4+PiBkaXNwYXRjaGluZyB0byB0aGUgZGlzcGxheSBw aXBlbGluZSAoaXRlbSA0IGluIHRoZSBsaXN0IGFib3ZlKSBhcyBJIGhhZAo+ID4+PiBubyBuZWVk IGZvciB0aGF0LCBhbmQgZGlkbid0IHdhbnQgdG8gZGV2ZWxvcCBhbiBBUEkgd2l0aCBubyB1c2Vy LiBUaGlzCj4gPj4+IHdvdWxkIGhvd2V2ZXIgbm90IGJlIGRpZmZpY3VsdCB0byBkbyB3aGVuIG5l ZWRlZCwgdGhlIG5lZWQgaXMgdGFrZW4gaW50bwo+ID4+PiBhY2NvdW50IGluIHRoZSBwcm9wb3Nl ZCBpbXBsZW1lbnRhdGlvbi4KPiA+Pj4gCj4gPj4+Pj4+IEkgZG8gbm90IGtub3cgdGhlIGZ1bGwg cGljdHVyZSwgYnV0IHRoZSBzb2x1dGlvbiB3aGVyZSBwYXJ0aWN1bGFyIGJyaWRnZQo+ID4+Pj4+ PiBub3RpZmllcyBldmVyeXRoaW5nIHVuY29uZGl0aW9uYWxseSBzZWVtcyB0byBtZSBtdWNoIGxl c3MgZmxleGlibGUuCj4gPj4+Pj4+Cj4gPj4+Pj4+IElmIEhQRCBzaWduYWxzIGlzIHJlY2VpdmVk IGJ5IHRoZSBjb25zdW1lciwgaWYgdGhlcmUgYXJlIG5vIG9ic3RhY2xlcyBpdAo+ID4+Pj4+PiBj YW4gcHJvcGFnYXRlIGl0IGZ1cnRoZXIsIHVwc3RyZWFtIGJyaWRnZS9lbmNvZGVyIG9yIHRvIGRy bSBjb3JlIC0gaXQKPiA+Pj4+Pj4gd2lsbCBtaW1pYyB5b3VyIHNjZW5hcmlvLgo+ID4+Pj4+Pgo+ ID4+Pj4+PiBCdXQgdGhlcmUgYXJlIGFsc28gb3RoZXIgc2NlbmFyaW9zIHdoZXJlIGJyaWRnZSBk b2VzIG5vdCB3YW50IHRvCj4gPj4+Pj4+IHByb3BhZ2F0ZSBzaWduYWwsIGJlY2F1c2UgZm9yIGV4 YW1wbGU6Cj4gPj4+Pj4+Cj4gPj4+Pj4+IC0gaXQgd2FudHMgdG8gd2FpdCBmb3Igb3RoZXIgc2lu a3MgdG8gd2FrZSB1cCwKPiA+Pj4+Pgo+ID4+Pj4+IFRoZSBvdGhlciBzaW5rIGNhbiBqdXN0IGRv IHRoYXQgaW4gdGhlaXIgaHBkIGNhbGxiYWNrLgo+ID4+Pj4+Cj4gPj4+Pj4+IC0gaXQgcHJvcGFn YXRlcyBIUEQgc2lnbmFsIHZpYSBoYXJkd2FyZSB3aXJlLAo+ID4+Pj4+Cj4gPj4+Pj4gQWdhaW4s IHRoZSBvdGhlciBzaW5rIGNhbiBqdXN0IG5vdCBsaXN0ZW4gdG8gc3cgaHBkIGluIHRoYXQgY2Fz ZSwgYW5kIHVzZQo+ID4+Pj4+IHRoZSB3aXJlL2h3IGhwZCBpbnRlcnJ1cHQuCj4gPj4+PiAKPiA+ Pj4+IElmIGl0IHNob3VsZCBpZ25vcmUgSFBELCB3aHkgaXQgc2hvdWxkIHJlY2VpdmUgaXQgYXQg YWxsIC0gaXQgaXMKPiA+Pj4+IHVubmVjZXNzYXJ5IG5vaXNlLiBBbmQgSSBhbSBhZnJhaWQgd2l0 aCBtb3JlIGNvbXBsaWNhdGVkIHBpcGVsaW5lcyBpdAo+ID4+Pj4gd2lsbCBiZSBpbXBvc3NpYmxl IGZvciBwYXJ0aWN1bGFyIGNvbXBvbmVudCAoYnJpZGdlL2VuY29kZXIvd2hhdGV2ZXIpIHRvCj4g Pj4+PiBkaXN0aW5ndWlzaCBpZiBIUEQgbm90aWZpY2F0aW9uIHdoaWNoIGNhbWUgZnJvbSBub24t ZGlyZWN0bHkgY29ubmVjdGVkCj4gPj4+PiBjb21wb25lbnQgc2hvdWxkIGJlIGlnbm9yZWQgb3Ig bm90Lgo+ID4+Pj4gCj4gPj4+Pj4+IC0gZmlyc3QgaXQgd2FudHMgdG8gdmVyaWZ5IGlmIHRoZSBz aW5rIGlzIHZhbGlkL2NvbXBhdGlibGUvYXV0aG9yaXplZAo+ID4+Pj4+PiBkZXZpY2UuCj4gPj4+ Pj4KPiA+Pj4+PiBOb3cgeW91IGxvc3QgbWUuIFdoeSB3b3VsZCBzb21lb25lIGdsdWUgaW5jb21w YXRpYmxlIElQIGludG8gYSBTb0Mgb3IKPiA+Pj4+PiBib2FyZD8KPiA+Pj4+IAo+ID4+Pj4gQnJp ZGdlIGNhbiBoYXZlIGV4dGVybmFsIGNvbm5lY3RvcnMsIGFuZCB0aGUgdXNlciBjYW4gY29ubmVj dCB0aGVyZQo+ID4+Pj4gYW55dGhpbmcuCj4gPj4+PiAKPiA+Pj4+Pj4gSW4gZ2VuZXJhbCBIUEQg aXMgaW5wdXQgc2lnbmFsIGZvciBub3RpZnkgb2Ygc3RhdGUgY2hhbmdlcyBvbiBwYXJ0aWN1bGFy Cj4gPj4+Pj4+IGJ1cywgaW4gY2FzZSBvZiB0eXBpY2FsIHZpZGVvIGJyaWRnZSBvbiBpdHMgb3V0 cHV0IHZpZGVvIGJ1cy4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gSW4gY2FzZSBvZiBicmlkZ2VzIHRoZXkg aGF2ZSBhbHNvIGlucHV0IHZpZGVvIGJ1c2VzLCBhbmQgdGhleSBjYW4gc2VuZAo+ID4+Pj4+PiBI UEQgc2lnbmFsIHZpYSB0aGlzIGJ1cywgYnV0IHRoaXMgaXMgaW5kZWVkIGRpZmZlcmVudCBIUEQg c2lnbmFsLCBldmVuCj4gPj4+Pj4+IGlmIGZvciBtb3N0IGNhc2VzIHRoZXkgbG9va3Mgc2ltaWxh ci4KPiA+Pj4+Pgo+ID4+Pj4+IEFoLCBJIHRoaW5rIHRoaXMgaXMgYSBwcm9ibGVtIHdlIHdpbGwg ZXZlbnR1YWxseSBoYXZlLiBCdXQgaXQncyBub3QKPiA+Pj4+PiBzb21ldGhpbmcgd2UncmUgY3Vy cmVudGx5IHNvbHZpbmcgaGVyZSBhdCBhbGwgSSB0aGluay4KPiA+Pj4+IAo+ID4+Pj4gQ3VycmVu dGx5IHNpaTg2MjAgZGV2aWNlIGluIHRtMiBzZW5kcyBocGQgc2lnbmFsIHVwc3RyZWFtIHZpYSBo YXJkd2FyZQo+ID4+Pj4gbGluZSwgc28gdGhpcyBpcyBub3Qgc29tZXRoaW5nIGZyb20gZmFyIGZ1 dHVyZS4gQW5kIEkgZ3Vlc3Mgd2l0aCBIUEQKPiA+Pj4+IGJyb2FkY2FzdGluZyBpdCBjb3VsZCBi ZSByYWN5L2Vycm9yIHByb25lLCBmb3IgZXhhbXBsZSBFRElEIHJlYWRpbmcgY2FuCj4gPj4+PiBm YWlsIGR1ZSB0byBicmlkZ2UgYmVpbmcgbm90IHJlYWR5IChkZGMgb2Ygc2lpODYyMCBpcyBjb25u ZWN0ZWQgdG8gaTJjCj4gPj4+PiBjb250cm9sbGVyIHZpYSBodyB3aXJlcyBhbHNvKS4KPiA+Pj4+ IAo+ID4+Pj4+Pj4+IEFuZCByZWdhcmRpbmcgaW1wbGVtZW50YXRpb246Cj4gPj4+Pj4+Pj4KPiA+ Pj4+Pj4+PiAxLiBMYXVyZW50IHByb3Bvc2VzIHRvIHJlZ2lzdGVyIGNhbGxiYWNrIGRybV9icmlk Z2VfaHBkX2VuYWJsZS4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IDIuIFlvdSBwcm9wb3NlIHRvIGFk ZCBvcHMgaHBkX25vdGlmeSBpbiBicmlkZ2VzIGFuZCBlbmNvZGVycy4KPiA+Pj4+Pj4+Pgo+ID4+ Pj4+Pj4+IFlvdXIgcHJvcG9zaXRpb24gaXMgbW9yZSBzdHJhaWdodGZvcndhcmQsIGJ1dCBpZiB3 ZSB3YW50IHRvIG5vdGlmeSBvbmx5Cj4gPj4+Pj4+Pj4gc291cmNlIHdlIHNob3VsZCBsb2NhdGUg aXQgYnkgcGFyc2luZyBub3RpZmljYXRpb24gY2hhaW4gKHdoYXQgYWJvdXQKPiA+Pj4+Pj4+PiB1 bmNoYWluZWQgYnJpZGdlcyksIG9yIHN0b3JlIHBvaW50ZXIgc29tZXdoZXJlIGR1cmluZyBhdHRh Y2htZW50Lgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gSXQgc3RpbGwgbGVhdmVzIHVzIHdpdGggdGhp cyB1Z2x5IGR1YWxpc20gLSBzb3VyY2UgaXMgZW5jb2RlciBvciBicmlkZ2UsCj4gPj4+Pj4+Pj4g c2ltaWxhcmx5IHRvIHNpbmsgYXMgYnJpZGdlIG9yIHBhbmVsLCBidXQgZml4aW5nIGl0IGNhbiBi ZSBkb25lIGxhdGVyLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IFVoIEkgdGhpbmsgd2UncmUgbm90IHRh bGtpbmcgYWJvdXQgdGhlIHNhbWUgdGhpbmcgcmVhbGx5LiBNeSB1bmRlcnN0YW5kaW5nCj4gPj4+ Pj4+PiBpcyB0aGF0IHRoaXMgY2FsbGJhY2sgaXMgaWYgc29tZW9uZSAob3V0c2lkZSBvZiB0aGlz IGJyaWRnZSkgaXMgaW50ZXJlc3RlZAo+ID4+Pj4+Pj4gaW4gYSBocGQgc2lnbmFsIF9mcm9tXyB0 aGlzIGJyaWRnZS4gV2hpY2ggbWVhbnMgeW91IGNhbiBvbmx5IGV2ZXIgaGF2ZSAxCj4gPj4+Pj4+ PiBsaXN0ZW5lci4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gRG8gd2UgaGF2ZSByZWFsIGxpZmUgZXhhbXBs ZXM/Cj4gPj4+Pj4+Cj4gPj4+Pj4+IEkgd2FudCB0byBkaXN0aW5ndWlzaCB0d28gc2l0dWF0aW9u czoKPiA+Pj4+Pj4KPiA+Pj4+Pj4gLSBhbm90aGVyIGRldmljZSB3YW50cyB0byBrbm93IGlmIGlu cHV0IGJ1cyBvZiB0aGUgYnJpZGdlIGhhcyBjaGFuZ2VkIHN0YXRlLAo+ID4+Pj4+Pgo+ID4+Pj4+ PiAtIGFub3RoZXIgZGV2aWNlIHdhbnRzIHRvIGtub3cgaWYgb3V0cHV0IGJ1cyBvZiB0aGUgYnJp ZGdlIGhhcyBjaGFuZ2VkCj4gPj4+Pj4+IHN0YXRlLgo+ID4+Pj4+Cj4gPj4+Pj4gVWgsIHRoYXQn cyB3aGF0IGRybV9icmlkZ2Vfc3RhdGUgaXMgZm9yIChpZiBpdCBldmVyIGhhcHBlbnMpLiBUaGF0 J3MgaG93Cj4gPj4+Pj4gYnJpZGdlcyBjYW4gZXhjaGFuZ2Ugc3RhdGUgYW5kIGluZm9ybWF0aW9u IGFib3V0IGVhY2ggYW5vdGhlci4gaHBkIGlzCj4gPj4+Pj4gYWJvdXQgdGhlIHBoeXNpY2FsIHdv cmxkLCBpLmUuICJpcyB0aGVyZSBhIGNhYmxlIHBsdWdnZWQgaW50byB0aGUgcG9ydAo+ID4+Pj4+ IEknbSBkcml2aW5nPyIuIFdlJ3JlIG5vdCBnb2luZyB0byB1c2UgZmFrZSBocGQgdG8gdXBkYXRl IGJyaWRnZSBzdGF0ZSBhbmQKPiA+Pj4+PiBmdW4gc3R1ZmYgbGlrZSB0aGF0LCB3ZSBoYXZlIHRo ZSBhdG9taWNfY2hlY2sgbWFjaGluZXJ5IGZvciB0aGlzLgo+ID4+Pj4gCj4gPj4+PiBNeSBxdWVz dGlvbiB3YXMgaWYgd2UgaGF2ZSByZWFsIGV4YW1wbGVzIHRoYXQgdXBzdHJlYW0gZGV2aWNlIHJl cXVpcmVzCj4gPj4+PiBrbm93bGVkZ2UgYWJvdXQgc3RhdGUgb2Ygb3V0cHV0IGxpbmUgb2YgdGhl IGJyaWRnZT8KPiA+Pj4+IAo+ID4+Pj4gVG8gYmUgbW9yZSBwcmVjaXNlLCB3ZSBoYXZlIGZvbGxv d2luZyBkaXNwbGF5IHBpcGVsaW5lOgo+ID4+Pj4gCj4gPj4+PiBBLS0+Qi0tPkMKPiA+Pj4+IAo+ ID4+Pj4gQW5kIEMgc2VuZHMgSFBEIHRvIEIgKGllIHNpZ25hbCB0aGF0IHN0YXRlIG9mIGxpbmUg YmV0d2VlbiBCIGFuZCBDCj4gPj4+PiBjaGFuZ2VkKS4gRG9lcyBBIHJlYWxseSB3YW50cyB0byBr bm93IHRoaXMgaW5mb3JtYXRpb24/IG9yIGl0IHNob3VsZAo+ID4+Pj4ganVzdCBuZWVkIHRvIGtu b3cgaWYgc3RhdGUgb2YgbGluZSBBLS0+QiBjaGFuZ2VkPwo+ID4+PiAKPiA+Pj4gVGhlcmUncyBv bmUgcmVhbCBsaWZlIGV4YW1wbGUsIHdoZXJlIEEgaXMgYW4gSERNSSBlbmNvZGVyLCBCIGlzIGFu IEhETUkKPiA+Pj4gRVNEIHByb3RlY3RvciBhbmQgbGV2ZWwgc2hpZnRlciwgYW5kIEMgaXMgdGhl IHBoeXNpY2FsIEhETUkgY29ubmVjdG9yLgo+ID4+PiBXaGVuIHRoZSBIRE1JIGNhYmxlIGlzIHVu cGx1Z2dlZCwgdGhlIENFQyBjb250cm9sbGVyIHBhcnQgb2YgQSBuZWVkcyB0bwo+ID4+PiBiZSBu b3RpZmllZCBpbiBvcmRlciB0byByZXNldCB0aGUgQ0VDIHN0YXRlIG1hY2hpbmUuIE9uZSBjb3Vs ZCBob3dldmVyCj4gPj4+IGFyZ3VlIHRoYXQgaW4gdGhhdCBjYXNlIHRoZSBBLUIgbGluayBzdGF0 ZSBjaGFuZ2VzIHRvbywgYnV0IHRoZQo+ID4+PiBpbXBvcnRhbnQgcGFydCBpcyB0aGF0IEhQRCBk ZXRlY3Rpb24gaXMgbm90IHBlcmZvcm1lZCBieSBBLCB3aGlsZSBBCj4gPj4+IG5lZWRzIHRvIGJl IGluZm9ybWVkIG9mIGxvc3QgaG90cGx1Zy4KPiA+Pj4gCj4gPj4+Pj4+PiBZb3Ugc2VlbSB0byBo YXZlIHNvbWUgb3RoZXIgaWRlYSBoZXJlLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0 ZXhfdW5sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPj4+Pj4+Pj4+Pj4+PiArfQo+ID4+Pj4+ Pj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9icmlkZ2VfaHBkX25vdGlmeSk7Cj4gPj4+ Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+PiAgI2lmZGVmIENPTkZJR19PRgo+ID4+Pj4+Pj4+ Pj4+Pj4gIC8qKgo+ID4+Pj4+Pj4+Pj4+Pj4gICAqIG9mX2RybV9maW5kX2JyaWRnZSAtIGZpbmQg dGhlIGJyaWRnZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBkZXZpY2Ugbm9kZSBpbgo+ID4+Pj4+Pj4+ Pj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaCBiL2luY2x1ZGUvZHJt L2RybV9icmlkZ2UuaAo+ID4+Pj4+Pj4+Pj4+Pj4gaW5kZXggMDhkYzE1ZjkzZGVkLi5iOTQ0NWFh NWIxZWYgMTAwNjQ0Cj4gPj4+Pj4+Pj4+Pj4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYnJpZGdl LmgKPiA+Pj4+Pj4+Pj4+Pj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ID4+Pj4+ Pj4+Pj4+Pj4gQEAgLTIzLDggKzIzLDkgQEAKPiA+Pj4+Pj4+Pj4+Pj4+ICAjaWZuZGVmIF9fRFJN X0JSSURHRV9IX18KPiA+Pj4+Pj4+Pj4+Pj4+ICAjZGVmaW5lIF9fRFJNX0JSSURHRV9IX18KPiA+ Pj4+Pj4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+Pj4+Pj4+IC0jaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ ID4+Pj4+Pj4+Pj4+Pj4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+ID4+Pj4+Pj4+Pj4+Pj4g KyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gPj4+Pj4+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4 L211dGV4Lmg+Cj4gPj4+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZV9vYmplY3Qu aD4KPiA+Pj4+Pj4+Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgo+ID4+Pj4+Pj4+ Pj4+Pj4gIAo+ID4+Pj4+Pj4+Pj4+Pj4gQEAgLTMzNCw2ICszMzUsMTEwIEBAIHN0cnVjdCBkcm1f YnJpZGdlX2Z1bmNzIHsKPiA+Pj4+Pj4+Pj4+Pj4+ICAJICovCj4gPj4+Pj4+Pj4+Pj4+PiAgCXZv aWQgKCphdG9taWNfcG9zdF9kaXNhYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+ Pj4+Pj4+Pj4+Pj4gIAkJCQkgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+ Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAq IEBkZXRlY3Q6Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIENoZWNr IGlmIGFueXRoaW5nIGlzIGF0dGFjaGVkIHRvIHRoZSBicmlkZ2Ugb3V0cHV0Lgo+ID4+Pj4+Pj4+ Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFs LCBpZiBub3QgaW1wbGVtZW50ZWQgdGhlIGJyaWRnZSB3aWxsIGJlCj4gPj4+Pj4+Pj4+Pj4+PiAr CSAqIGNvbnNpZGVyZWQgYXMgYWx3YXlzIGhhdmluZyBhIGNvbXBvbmVudCBhdHRhY2hlZCB0byBp dHMgb3V0cHV0Lgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBCcmlkZ2VzIHRoYXQgaW1wbGVtZW50IHRo aXMgY2FsbGJhY2sgc2hhbGwgc2V0IHRoZQo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBEUk1fQlJJREdF X09QX0RFVEVDVCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPj4+Pj4+Pj4+Pj4+ PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIFJFVFVSTlM6Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAq Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIGRybV9jb25uZWN0b3Jfc3RhdHVzIGluZGljYXRpbmcgdGhl IGJyaWRnZSBvdXRwdXQgc3RhdHVzLgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4+ Pj4+ICsJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyAoKmRldGVjdCkoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+ Pj4+Pj4+Pj4+Pj4gKwkgKiBAZ2V0X21vZGVzOgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBGaWxsIGFsbCBtb2RlcyBjdXJyZW50bHkgdmFsaWQgZm9yIHRoZSBzaW5r IGludG8gdGhlICZkcm1fY29ubmVjdG9yCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIHdpdGggZHJtX21v ZGVfcHJvYmVkX2FkZCgpLgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkg KiBUaGUgQGdldF9tb2RlcyBjYWxsYmFjayBpcyBtb3N0bHkgaW50ZW5kZWQgdG8gc3VwcG9ydCBu b24tcHJvYmFibGUKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogZGlzcGxheXMgc3VjaCBhcyBtYW55IGZp eGVkIHBhbmVscy4gQnJpZGdlcyB0aGF0IHN1cHBvcnQgcmVhZGluZwo+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKiBFRElEIHNoYWxsIGxlYXZlIEBnZXRfbW9kZXMgdW5pbXBsZW1lbnRlZCBhbmQgaW1wbGVt ZW50IHRoZQo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X2VkaWQg Y2FsbGJhY2sgaW5zdGVhZC4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJ ICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4gQnJpZGdlcyB0aGF0IGltcGxlbWVudCBpdCBz aGFsbCBzZXQgdGhlCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIERSTV9CUklER0VfT1BfTU9ERVMgZmxh ZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBSRVRVUk5TOgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+ Pj4gKwkgKiBUaGUgbnVtYmVyIG9mIG1vZGVzIGFkZGVkIGJ5IGNhbGxpbmcgZHJtX21vZGVfcHJv YmVkX2FkZCgpLgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICsJaW50ICgq Z2V0X21vZGVzKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkJ CSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+ Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEBnZXRfZWRpZDoKPiA+Pj4+ Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogUmVhZCBhbmQgcGFyc2UgdGhlIEVE SUQgZGF0YSBvZiB0aGUgY29ubmVjdGVkIGRpc3BsYXkuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4g Pj4+Pj4+Pj4+Pj4+PiArCSAqIFRoZSBAZ2V0X2VkaWQgY2FsbGJhY2sgaXMgdGhlIHByZWZlcnJl ZCB3YXkgb2YgcmVwb3J0aW5nIG1vZGUKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogaW5mb3JtYXRpb24g Zm9yIGEgZGlzcGxheSBjb25uZWN0ZWQgdG8gdGhlIGJyaWRnZSBvdXRwdXQuIEJyaWRnZXMKPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICogdGhhdCBzdXBwb3J0IHJlYWRpbmQgRURJRCBzaGFsbCBpbXBsZW1l bnQgdGhpcyBjYWxsYmFjayBhbmQgbGVhdmUKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogdGhlIEBnZXRf bW9kZXMgY2FsbGJhY2sgdW5pbXBsZW1lbnRlZC4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+ Pj4+Pj4+Pj4+ICsJICogVGhlIGNhbGxlciBvZiB0aGlzIG9wZXJhdGlvbiBzaGFsbCBmaXJzdCB2 ZXJpZnkgdGhlIG91dHB1dAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBjb25uZWN0aW9uIHN0YXR1cyBh bmQgcmVmcmFpbiBmcm9tIHJlYWRpbmcgRURJRCBmcm9tIGEgZGlzY29ubmVjdGVkCj4gPj4+Pj4+ Pj4+Pj4+PiArCSAqIG91dHB1dC4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4gQnJpZGdlcyB0aGF0IGltcGxlbWVudCBp dCBzaGFsbCBzZXQgdGhlCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIERSTV9CUklER0VfT1BfRURJRCBm bGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+ Pj4+Pj4+Pj4+PiArCSAqIFJFVFVSTlM6Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+ Pj4+PiArCSAqIEFuIGVkaWQgc3RydWN0dXJlIG5ld2x5IGFsbG9jYXRlZCB3aXRoIGttYWxsb2Mo KSAob3Igc2ltaWxhcikgb24KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogc3VjY2Vzcywgb3IgTlVMTCBv dGhlcndpc2UuIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcKPiA+Pj4+Pj4+ Pj4+Pj4+ICsJICogdGhlIHJldHVybmVkIGVkaWQgc3RydWN0dXJlIHdpdGgga2ZyZWUoKS4KPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+Pj4+PiArCXN0cnVjdCBlZGlkICooKmdldF9l ZGlkKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkJCQkgc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPj4+Pj4+Pj4+Pj4+IEl0IG92ZXJsYXBz IHdpdGggZ2V0X21vZGVzLCBJIGd1ZXNzIHByZXNlbmNlIG9mIG9uZSBvcHMgc2hvdWxkIGRpc2Fs bG93Cj4gPj4+Pj4+Pj4+Pj4+IHByZXNlbmNlIG9mIGFub3RoZXIgb25lPwo+ID4+Pj4+Pj4+Pj4+ Pgo+ID4+Pj4+Pj4+Pj4+PiBJIGFtIG5vdCByZWFsbHkgY29udmluY2VkIHdlIG5lZWQgdGhpcyBv cCBhdCBhbGwsIGNhbm5vdCB3ZSBqdXN0IGFzc2lnbgo+ID4+Pj4+Pj4+Pj4+PiBzb21lIGhlbHBl ciBmdW5jdGlvbiB0byAuZ2V0X21vZGVzIGNiLCB3aGljaCB3aWxsIGRvIHRoZSBzYW1lPwo+ID4+ Pj4+Pj4+Pj4+IFBsYW4gQik6IGRpdGNoIC0+Z2V0X2VkaWQsIHJlcXVpcmUgdGhhdCB0aGUgZHJp dmVyIGhhcyAtPmdldF9tb2RlcyBpbiB0aGF0Cj4gPj4+Pj4+Pj4+Pj4gY2FzZSwgYW5kIHJlcXVp cmUgdGhhdCBpZiBpdCBoYXMgYW4gZWRpZCBpdCBtdXN0IGZpbGwgb3V0IGNvbm5lY3Rvci0+aW5m bwo+ID4+Pj4+Pj4+Pj4+IGFuZCBjb25uZWN0b3ItPmVkaWQgY29ycmVjdGx5Lgo+ID4+Pj4+Pj4+ Pj4+Cj4gPj4+Pj4+Pj4+Pj4gQnR3IGlmIGEgaHBkIGhhcHBlbnMsIHdobydzIHJlc3BvbmlibGUg Zm9yIG1ha2luZyBzdXJlIHRoZSBlZGlkL21vZGUgbGlzdAo+ID4+Pj4+Pj4+Pj4+IGluIHRoZSBj b25uZWN0b3IgaXMgdXAtdG8tZGF0ZT8gV2l0aCB5b3VyIGN1cnJlbnQgY2FsbGJhY2sgZGVzaWdu IHRoYXQncwo+ID4+Pj4+Pj4+Pj4+IHVwIHRvIHRoZSBjYWxsYmFjaywgd2hpY2ggZG9lc24ndCBm ZWVsIGdyZWF0LiBNYXliZSAgZHJtX2JyaWRnZV9ocGRfbm90aWZ5Cj4gPj4+Pj4+Pj4+Pj4gc2hv dWxkIGd1YXJhbnRlZSB0aGF0IGl0J2xsIGZpcnN0IHdhbGsgdGhlIGNvbm5lY3RvcnMgdG8gdXBk YXRlIHN0YXR1cyBhbmQKPiA+Pj4+Pj4+Pj4+PiBlZGlkL21vZGUgbGlzdCBmb3IgdGhlIGZpbmFs IGRybV9jb25uZWN0b3IuIEFuZCB0aGVuIGluc3RlYWQgb2YganVzdAo+ID4+Pj4+Pj4+Pj4+IHBh c3NpbmcgdGhlIHNpbXBsZSAic3RhdHVzIiwgaXQnbGwgcGFzcyB0aGUgY29ubmVjdG9yLCB3aXRo IGV2ZXJ5dGhpbmcKPiA+Pj4+Pj4+Pj4+PiBjb3JyZWN0bHkgdXBkYXRlZC4KPiA+Pj4+Pj4+Pj4+ Pgo+ID4+Pj4+Pj4+Pj4+IE90aGVyd2lzZSBldmVyeW9uZSBpbnRlcmVzdGVkIGluIHRoYXQgaHBk IHNpZ25hbCB3aWxsIGdvIGFuZCByZS1mZXRjaCB0aGUKPiA+Pj4+Pj4+Pj4+PiBlZGlkLCB3aGlj aCBpcyBub3Qgc28gYXdlc29tZSA6LSkKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQGxvc3RfaG90cGx1ZzoK PiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogTm90aWZ5IHRoZSBicmlk Z2Ugb2YgZGlzcGxheSBkaXNjb25uZWN0aW9uLgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBpdCBtYXkgYmUgaW1wbGVt ZW50ZWQgYnkgYnJpZGdlcyB0aGF0Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIG5lZWQgdG8gYmUgbm90 aWZpZWQgb2YgZGlzcGxheSBkaXNjb25uZWN0aW9uIGZvciBpbnRlcm5hbCByZWFzb25zLgo+ID4+ Pj4+Pj4+Pj4+Pj4gKwkgKiBPbmUgdXNlIGNhc2UgaXMgdG8gcmVzZXQgdGhlIGludGVybmFsIHN0 YXRlIG9mIENFQyBjb250cm9sbGVycyBmb3IKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogSERNSSBicmlk Z2VzLgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICsJdm9pZCAoKmxvc3Rf aG90cGx1Zykoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4g Pj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX2VuYWJsZToKPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogRW5hYmxlIGhvdCBwbHVnIGRl dGVjdGlvbi4gRnJvbSBub3cgb24gdGhlIGJyaWRnZSBzaGFsbCBjYWxsCj4gPj4+Pj4+Pj4+Pj4+ PiArCSAqIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIGVhY2ggdGltZSBhIGNoYW5nZSBpcyBkZXRl Y3RlZCBpbiB0aGUgb3V0cHV0Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIGNvbm5lY3Rpb24gc3RhdHVz LCB1bnRpbCBob3QgcGx1ZyBkZXRlY3Rpb24gZ2V0cyBkaXNhYmxlZCB3aXRoCj4gPj4+Pj4+Pj4+ Pj4+PiArCSAqIEBocGRfZGlzYWJsZS4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+ Pj4+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgc2hhbGwgb25seSBiZSBpbXBs ZW1lbnRlZCBieSBicmlkZ2VzCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIHRoYXQgc3VwcG9ydCBob3Qt cGx1ZyBub3RpZmljYXRpb24gd2l0aG91dCBwb2xsaW5nLiBCcmlkZ2VzIHRoYXQKPiA+Pj4+Pj4+ Pj4+Pj4+ICsJICogaW1wbGVtZW50IGl0IHNoYWxsIGFsc28gaW1wbGVtZW50IHRoZSBAaHBkX2Rp c2FibGUgY2FsbGJhY2sgYW5kIHNldAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgRFJNX0JSSURH RV9PUF9IUEQgZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICsJdm9pZCAoKmhwZF9lbmFibGUpKHN0cnVjdCBkcm1fYnJp ZGdlICpicmlkZ2UpOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICogQGhwZF9kaXNhYmxlOgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+ Pj4+Pj4+Pj4+Pj4gKwkgKiBEaXNhYmxlIGhvdCBwbHVnIGRldGVjdGlvbi4gT25jZSB0aGlzIGZ1 bmN0aW9uIHJldHVybnMgdGhlIGJyaWRnZQo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBzaGFsbCBub3Qg Y2FsbCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSB3aGVuIGEgY2hhbmdlIGluIHRoZSBvdXRwdXQK PiA+Pj4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgb2NjdXJzLgo+ID4+Pj4+Pj4+ Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFs IGFuZCBzaGFsbCBvbmx5IGJlIGltcGxlbWVudGVkIGJ5IGJyaWRnZXMKPiA+Pj4+Pj4+Pj4+Pj4+ ICsJICogdGhhdCBzdXBwb3J0IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBvbGxpbmcu IEJyaWRnZXMgdGhhdAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBpbXBsZW1lbnQgaXQgc2hhbGwgYWxz byBpbXBsZW1lbnQgdGhlIEBocGRfZW5hYmxlIGNhbGxiYWNrIGFuZCBzZXQKPiA+Pj4+Pj4+Pj4+ Pj4+ICsJICogdGhlIERSTV9CUklER0VfT1BfSFBEIGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2Ut Pm9wcy4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+Pj4+PiArCXZvaWQgKCpocGRf ZGlzYWJsZSkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+PiAgfTsK PiA+Pj4+Pj4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+Pj4+Pj4+ICAvKioKPiA+Pj4+Pj4+Pj4+Pj4+IEBA IC0zNzIsNiArNDc3LDM4IEBAIHN0cnVjdCBkcm1fYnJpZGdlX3RpbWluZ3Mgewo+ID4+Pj4+Pj4+ Pj4+Pj4gIAlib29sIGR1YWxfbGluazsKPiA+Pj4+Pj4+Pj4+Pj4+ICB9Owo+ID4+Pj4+Pj4+Pj4+ Pj4gIAo+ID4+Pj4+Pj4+Pj4+Pj4gKy8qKgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIGVudW0gZHJtX2Jy aWRnZV9vcHMgLSBCaXRtYXNrIG9mIG9wZXJhdGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBicmlkZ2UK PiA+Pj4+Pj4+Pj4+Pj4+ICsgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICtlbnVtIGRybV9icmlkZ2Vfb3Bz IHsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEBEUk1fQlJJREdF X09QX0RFVEVDVDogVGhlIGJyaWRnZSBjYW4gZGV0ZWN0IGRpc3BsYXlzIGNvbm5lY3RlZCB0bwo+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBpdHMgb3V0cHV0LiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxh ZyBzaGFsbCBpbXBsZW1lbnQgdGhlCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqICZkcm1fYnJpZGdlX2Z1 bmNzLT5kZXRlY3QgY2FsbGJhY2suCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+ Pj4gKwlEUk1fQlJJREdFX09QX0RFVEVDVCA9IEJJVCgwKSwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoq Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEBEUk1fQlJJREdFX09QX0VESUQ6IFRoZSBicmlkZ2UgY2Fu IHJldHJpZXZlIHRoZSBFRElEIG9mIHRoZSBkaXNwbGF5Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIGNv bm5lY3RlZCB0byBpdHMgb3V0cHV0LiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxhZyBzaGFsbCBp bXBsZW1lbnQKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogdGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRf ZWRpZCBjYWxsYmFjay4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+Pj4+PiArCURS TV9CUklER0VfT1BfRURJRCA9IEJJVCgxKSwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+ Pj4+Pj4+PiArCSAqIEBEUk1fQlJJREdFX09QX0hQRDogVGhlIGJyaWRnZSBjYW4gZGV0ZWN0IGhv dC1wbHVnIGFuZCBob3QtdW5wbHVnCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIHdpdGhvdXQgcmVxdWly aW5nIHBvbGxpbmcuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsCj4gPj4+Pj4+Pj4+ Pj4+PiArCSAqIGltcGxlbWVudCB0aGUgJmRybV9icmlkZ2VfZnVuY3MtPmhwZF9lbmFibGUgYW5k Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqICZkcm1fYnJpZGdlX2Z1bmNzLT5kaXNhYmxlX2hwZF9jYiBj YWxsYmFja3MuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gKwlEUk1fQlJJ REdFX09QX0hQRCA9IEJJVCgyKSwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+Pj4+ PiArCSAqIEBEUk1fQlJJREdFX09QX01PREVTOiBUaGUgYnJpZGdlIGNhbiByZXRyaWV2aW5nIHRo ZSBtb2RlcyBzdXBwb3J0ZWQKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogYnkgdGhlIGRpc3BsYXkgYXQg aXRzIG91dHB1dC4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHJlYWRpbmQgRURJRAo+ID4+Pj4+Pj4+ Pj4+Pj4gKwkgKiB3aGljaCBpcyBzZXBhcmF0ZWx5IGNvdmVyZWQgYnkgQERSTV9CUklER0VfT1Bf RURJRC4gQnJpZGdlcyB0aGF0IHNldAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGlzIGZsYWcgc2hh bGwgaW1wbGVtZW50IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X21vZGVzIGNhbGxiYWNrLgo+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICsJRFJNX0JSSURHRV9PUF9NT0RF UyA9IEJJVCgzKSwKPiA+Pj4+Pj4+Pj4+Pj4+ICt9Owo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+ Pj4+Pj4+Pj4gIC8qKgo+ID4+Pj4+Pj4+Pj4+Pj4gICAqIHN0cnVjdCBkcm1fYnJpZGdlIC0gY2Vu dHJhbCBEUk0gYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gPj4+Pj4+Pj4+Pj4+PiAgICovCj4g Pj4+Pj4+Pj4+Pj4+PiBAQCAtMzk4LDYgKzUzNSwyOSBAQCBzdHJ1Y3QgZHJtX2JyaWRnZSB7Cj4g Pj4+Pj4+Pj4+Pj4+PiAgCWNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzICpmdW5jczsKPiA+ Pj4+Pj4+Pj4+Pj4+ICAJLyoqIEBkcml2ZXJfcHJpdmF0ZTogcG9pbnRlciB0byB0aGUgYnJpZGdl IGRyaXZlcidzIGludGVybmFsIGNvbnRleHQgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICAJdm9pZCAqZHJp dmVyX3ByaXZhdGU7Cj4gPj4+Pj4+Pj4+Pj4+PiArCS8qKiBAb3BzOiBiaXRtYXNrIG9mIG9wZXJh dGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBicmlkZ2UgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICsJZW51bSBk cm1fYnJpZGdlX29wcyBvcHM7Cj4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKiBAdHlwZTogVHlwZSBvZiB0aGUgY29ubmVjdGlvbiBhdCB0aGUgYnJpZGdlIG91dHB1dAo+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiAoRFJNX01PREVfQ09OTkVDVE9SXyopLiBGb3IgYnJpZGdlcyBh dCB0aGUgZW5kIG9mIHRoaXMgY2hhaW4gdGhpcwo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBpZGVudGlm aWVzIHRoZSB0eXBlIG9mIGNvbm5lY3RlZCBkaXNwbGF5Lgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8K PiA+Pj4+Pj4+Pj4+Pj4+ICsJaW50IHR5cGU7Cj4gPj4+Pj4+Pj4+Pj4+PiArCS8qKiBwcml2YXRl OiAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQGhwZF9tdXRl eDogUHJvdGVjdHMgdGhlIEBocGRfY2IgYW5kIEBocGRfZGF0YSBmaWVsZHMuCj4gPj4+Pj4+Pj4+ Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgbXV0ZXggaHBkX211dGV4Owo+ID4+ Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQGhwZF9jYjogSG90IHBsdWcg ZGV0ZWN0aW9uIGNhbGxiYWNrLCByZWdpc3RlcmVkIHdpdGgKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICog ZHJtX2JyaWRnZV9ocGRfZW5hYmxlKCkuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+ Pj4+Pj4gKwl2b2lkICgqaHBkX2NiKSh2b2lkICpkYXRhLCBlbnVtIGRybV9jb25uZWN0b3Jfc3Rh dHVzIHN0YXR1cyk7Cj4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBA aHBkX2RhdGE6IFByaXZhdGUgZGF0YSBwYXNzZWQgdG8gdGhlIEhvdCBwbHVnIGRldGVjdGlvbiBj YWxsYmFjawo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX2NiLgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkg Ki8KPiA+Pj4+Pj4+Pj4+Pj4+ICsJdm9pZCAqaHBkX2RhdGE7Cj4gPj4+Pj4+Pj4+Pj4+PiAgfTsK PiA+Pj4+Pj4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+Pj4+Pj4+ICB2b2lkIGRybV9icmlkZ2VfYWRkKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ID4+Pj4+Pj4+Pj4+Pj4gQEAgLTQyOCw2ICs1ODgs MTQgQEAgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UsCj4gPj4+Pj4+Pj4+Pj4+PiAgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+Pj4+Pj4+ICAJCQkgICAgICBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4+Pj4+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+ Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UsCj4gPj4+Pj4+Pj4+Pj4+PiArCQkJICAgdm9pZCAoKmNiKSh2b2lkICpkYXRhLAo+ID4+Pj4+ Pj4+Pj4+Pj4gKwkJCQkgICAgICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cyksCj4g Pj4+Pj4+Pj4+Pj4+PiArCQkJICAgdm9pZCAqZGF0YSk7Cj4gPj4+Pj4+Pj4+Pj4+PiArdm9pZCBk cm1fYnJpZGdlX2hwZF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ID4+Pj4+ Pj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfbm90aWZ5KHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsCj4gPj4+Pj4+Pj4+Pj4+PiArCQkJICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBz dGF0dXMpOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4gICNpZmRlZiBDT05GSUdf RFJNX1BBTkVMX0JSSURHRQo+ID4+Pj4+Pj4+Pj4+Pj4gIHN0cnVjdCBkcm1fYnJpZGdlICpkcm1f cGFuZWxfYnJpZGdlX2FkZChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwKPiA+Pj4+Pj4+Pj4+Pj4+ ICAJCQkJCXUzMiBjb25uZWN0b3JfdHlwZSk7CgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hh cnQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs