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: Wed, 14 Aug 2019 13:04:03 +0300 Message-ID: <20190814100403.GC5009@pendragon.ideasonboard.com> References: <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> <3d23b62c-2ddb-3a5d-1aa8-7e569b6def71@samsung.com> <20190810224313.GG4788@pendragon.ideasonboard.com> 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 9544C6E4AD for ; Wed, 14 Aug 2019 10:04:08 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Hajda Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Sean Paul List-Id: dri-devel@lists.freedesktop.org SGkgQW5kcnplaiwKCk9uIFdlZCwgQXVnIDE0LCAyMDE5IGF0IDA4OjIzOjEyQU0gKzAyMDAsIEFu ZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gSGkgTGF1cmVudCwKPiAKPiBTb3JyeSBmb3IgbGF0ZSByZXNw b25zZS4KCk5vIHdvcnJpZXMuCgo+IE9uIDExLjA4LjIwMTkgMDA6NDMsIExhdXJlbnQgUGluY2hh cnQgd3JvdGU6Cj4gPiBPbiBGcmksIEF1ZyAwOSwgMjAxOSBhdCAwMTo1NTo1M1BNICswMjAwLCBB bmRyemVqIEhhamRhIHdyb3RlOgo+ID4+IE9uIDA4LjA4LjIwMTkgMjE6MzIsIExhdXJlbnQgUGlu Y2hhcnQgd3JvdGU6Cj4gPj4+IE9uIFR1ZSwgSnVsIDE2LCAyMDE5IGF0IDAzOjU3OjIxUE0gKzAy MDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gPj4+PiBPbiAxNi4wNy4yMDE5IDExOjAwLCBEYW5p ZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4+IE9uIEZyaSwgSnVsIDEyLCAyMDE5IGF0IDExOjAxOjM4 QU0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gPj4+Pj4+IE9uIDExLjA3LjIwMTkgMTc6 NTAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4+Pj4+PiBPbiBUaHUsIEp1bCAxMSwgMjAxOSBh dCAwNToxMjoyNlBNICswMjAwLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+ID4+Pj4+Pj4+IE9uIDEx LjA3LjIwMTkgMTU6MTgsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4+Pj4+Pj4+IE9uIFRodSwg SnVsIDExLCAyMDE5IGF0IDAyOjQxOjAxUE0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4g Pj4+Pj4+Pj4+PiBPbiAxMS4wNy4yMDE5IDA5OjM1LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+ Pj4+Pj4+Pj4+IE9uIFdlZCwgSnVsIDEwLCAyMDE5IGF0IDAyOjEyOjE0UE0gKzAyMDAsIEFuZHJ6 ZWogSGFqZGEgd3JvdGU6Cj4gPj4+Pj4+Pj4+Pj4+IEhpIExhdXJlbnQsCj4gPj4+Pj4+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4+Pj4+IEkgbGlrZSB0aGUgYXBwcm9hY2gsIGN1cnJlbnQgcHJhY3RpY2Ugd2hl biBhbG1vc3QgZXZlcnkgYnJpZGdlIHNob3VsZAo+ID4+Pj4+Pj4+Pj4+PiBvcHRpb25hbGx5IGlt cGxlbWVudCBjb25uZWN0b3IsIG9yIGFsdGVybmF0aXZlbHkgZG93bnN0cmVhbSBicmlkZ2Ugb3IK PiA+Pj4+Pj4+Pj4+Pj4gcGFuZWwgaXMgdmVyeSBwYWluZnVsLgo+ID4+Pj4+Pj4+Pj4+IFllYWgg SSB0aGluayB0aGlzIGxvb2tzIG1vc3RseSByZWFzb25hYmxlLiBTb21lIGFwaSBkZXNpZ24gY29t bWVudHMgb24gdG9wCj4gPj4+Pj4+Pj4+Pj4gb2YgQW5kcnplaicsIHdpdGggdGhlIGZhaXIgd2Fy bmluZyB0aGF0IEkgZGlkbid0IGJvdGhlciB0byByZWFkIHVwIG9uIGhvdwo+ID4+Pj4+Pj4+Pj4+ IGl0J3MgYWxsIHVzZWQgaW4gdGhlIGVuZC4gSSBwcm9iYWJseSBzaG91bGQgZ28gYW5kIGRvIHRo YXQsIGF0IGxlYXN0IHRvCj4gPj4+Pj4+Pj4+Pj4gZ2V0IGEgZmVlbGluZyBmb3Igd2hhdCB5b3Vy IGhwZF9jYiB1c3VhbGx5IGRvZXMuCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4gTW9yZSBj b21tZW50cyBpbmxpbmVkLgo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+PiBPbiAwNy4wNy4y MDE5IDIwOjE4LCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4+Pj4+Pj4+Pj4+Pj4gVG8gc3Vw cG9ydCBpbXBsZW1lbnRhdGlvbiBvZiBEUk0gY29ubmVjdG9ycyBvbiB0b3Agb2YgRFJNIGJyaWRn ZXMKPiA+Pj4+Pj4+Pj4+Pj4+IGluc3RlYWQgb2YgYnkgYnJpZGdlcywgdGhlIGRybV9icmlkZ2Ug bmVlZHMgdG8gZXhwb3NlIG5ldyBvcGVyYXRpb25zIGFuZAo+ID4+Pj4+Pj4+Pj4+Pj4gZGF0YToK PiA+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PiAtIE91dHB1dCBkZXRlY3Rpb24sIGhvdC1w bHVnIG5vdGlmaWNhdGlvbiwgbW9kZSByZXRyaWV2YWwgYW5kIEVESUQKPiA+Pj4+Pj4+Pj4+Pj4+ ICAgcmV0cmlldmFsIG9wZXJhdGlvbnMKPiA+Pj4+Pj4+Pj4+Pj4+IC0gQml0bWFzayBvZiBzdXBw b3J0ZWQgb3BlcmF0aW9ucwo+ID4+Pj4+Pj4+Pj4+PiBXaHkgZG8gd2UgbmVlZCB0aGVzZSBiaXRt YXNrIGF0IGFsbD8gV2h5IGNhbm5vdCB3ZSByZWx5IG9uIHByZXNlbmNlIG9mCj4gPj4+Pj4+Pj4+ Pj4+IG9wZXJhdGlvbidzIGNhbGxiYWNrPwo+ID4+Pj4+Pj4+Pj4+IFllYWggYWxzbyBub3QgYSBo dWdlIGZhbiBvZiB0aGVzZSBiaXRtYXNrcy4gU21lbGxzIGxpa2UKPiA+Pj4+Pj4+Pj4+Pgo+ID4+ Pj4+Pj4+Pj4+IERSSVZFUl9HRU18RFJJVkVSX01PREVTRVQsIGFuZCBJIHBlcnNvbmFsbHkgcmVh bGx5IGhhdGUgdGhvc2UuIEVhc3kgdG8KPiA+Pj4+Pj4+Pj4+PiBhZGQsIGdlbmVyYWxseSBnb29k IGV4Y3VzZSB0byBub3QgaGF2ZSB0byB0aGluayB0aHJvdWdoIHRoZSBkZXNpZ24gYmV0d2Vlbgo+ ID4+Pj4+Pj4+Pj4+IGRpZmZlcmVudCBwYXJ0cyBvZiBkcml2ZXJzIC0gImp1c3QiIGFkZCBhbm90 aGVyIGZsYWcuCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4+IC0gQnJpZGdlIG91dHB1dCB0 eXBlCj4gPj4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4gQWRkIGFuZCBkb2N1bWVudCB0aGVz ZS4KPiA+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PiBUaHJlZSBuZXcgYnJpZGdlIGhlbHBl ciBmdW5jdGlvbnMgYXJlIGFsc28gYWRkZWQgdG8gaGFuZGxlIGhvdCBwbHVnCj4gPj4+Pj4+Pj4+ Pj4+PiBub3RpZmljYXRpb24gaW4gYSB3YXkgdGhhdCBpcyBhcyB0cmFuc3BhcmVudCBhcyBwb3Nz aWJsZSBmb3IgdGhlCj4gPj4+Pj4+Pj4+Pj4+PiBicmlkZ2VzLgo+ID4+Pj4+Pj4+Pj4+PiBEb2N1 bWVudGF0aW9uIG9mIG5ldyBvcHNlcyBkb2VzIG5vdCBleHBsYWluIGhvdyBpdCBzaG91bGQgY29v cGVyYXRlIHdpdGgKPiA+Pj4+Pj4+Pj4+Pj4gYnJpZGdlIGNoYWluaW5nLCBJIHN1cHBvc2UgdGhl eSBzaG91bGQgYmUgY2hhaW5lZCBleHBsaWNpdGx5LCBhbSBJCj4gPj4+Pj4+Pj4+Pj4+IHJpZ2h0 PyBNb3JlIGNvbW1lbnRzIGFib3V0IGl0IGxhdGVyLgo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBp ZGVhc29uYm9hcmQuY29tPgo+ID4+Pj4+Pj4+Pj4+Pj4gLS0tCj4gPj4+Pj4+Pj4+Pj4+PiAgZHJp dmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyB8ICA5MiArKysrKysrKysrKysrKysrKysrCj4gPj4+ Pj4+Pj4+Pj4+PiAgaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oICAgICB8IDE3MCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4+Pj4+Pj4+Pj4+Pj4gIDIgZmlsZXMgY2hhbmdl ZCwgMjYxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+ Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPiA+Pj4+Pj4+Pj4+Pj4+IGluZGV4IDUxOTU3N2Yz NjNlMy4uM2MyYTI1NWRmN2FmIDEwMDY0NAo+ID4+Pj4+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9icmlkZ2UuYwo+ID4+Pj4+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9icmlkZ2UuYwo+ID4+Pj4+Pj4+Pj4+Pj4gQEAgLTcwLDYgKzcwLDggQEAgc3RhdGljIExJ U1RfSEVBRChicmlkZ2VfbGlzdCk7Cj4gPj4+Pj4+Pj4+Pj4+PiAgICovCj4gPj4+Pj4+Pj4+Pj4+ PiAgdm9pZCBkcm1fYnJpZGdlX2FkZChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4+Pj4+ Pj4+Pj4+Pj4gIHsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfaW5pdCgmYnJpZGdlLT5ocGRfbXV0 ZXgpOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4gIAltdXRleF9sb2NrKCZicmlk Z2VfbG9jayk7Cj4gPj4+Pj4+Pj4+Pj4+PiAgCWxpc3RfYWRkX3RhaWwoJmJyaWRnZS0+bGlzdCwg JmJyaWRnZV9saXN0KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICAJbXV0ZXhfdW5sb2NrKCZicmlkZ2VfbG9j ayk7Cj4gPj4+Pj4+Pj4+Pj4+PiBAQCAtODYsNiArODgsOCBAQCB2b2lkIGRybV9icmlkZ2VfcmVt b3ZlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gPj4+Pj4+Pj4+Pj4+PiAgCW11dGV4X2xv Y2soJmJyaWRnZV9sb2NrKTsKPiA+Pj4+Pj4+Pj4+Pj4+ICAJbGlzdF9kZWxfaW5pdCgmYnJpZGdl LT5saXN0KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICAJbXV0ZXhfdW5sb2NrKCZicmlkZ2VfbG9jayk7Cj4g Pj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+PiArCW11dGV4X2Rlc3Ryb3koJmJyaWRnZS0+ aHBkX211dGV4KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICB9Cj4gPj4+Pj4+Pj4+Pj4+PiAgRVhQT1JUX1NZ TUJPTChkcm1fYnJpZGdlX3JlbW92ZSk7Cj4gPj4+Pj4+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4+Pj4+ PiBAQCAtNDYzLDYgKzQ2Nyw5NCBAQCB2b2lkIGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+Pj4+Pj4+Pj4gIH0KPiA+Pj4+Pj4+Pj4+Pj4+ ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZSk7Cj4gPj4+Pj4+Pj4+Pj4+ PiAgCj4gPj4+Pj4+Pj4+Pj4+PiArLyoqCj4gPj4+Pj4+Pj4+Pj4+PiArICogZHJtX2JyaWRnZV9o cGRfZW5hYmxlIC0gZW5hYmxlIGhvdCBwbHVnIGRldGVjdGlvbiBmb3IgdGhlIGJyaWRnZQo+ID4+ Pj4+Pj4+Pj4+Pj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+ID4+Pj4+ Pj4+Pj4+Pj4gKyAqIEBjYjogaG90LXBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPj4+Pj4+Pj4+ Pj4+PiArICogQGRhdGE6IGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBob3QtcGx1ZyBkZXRlY3Rp b24gY2FsbGJhY2sKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIENhbGwg JmRybV9icmlkZ2VfZnVuY3MuaHBkX2VuYWJsZSBhbmQgcmVnaXN0ZXIgdGhlIGdpdmVuIEBjYiBh bmQgQGRhdGEgYXMKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBob3QgcGx1ZyBub3RpZmljYXRpb24gY2Fs bGJhY2suIEZyb20gbm93IG9uIHRoZSBAY2Igd2lsbCBiZSBjYWxsZWQgd2l0aAo+ID4+Pj4+Pj4+ Pj4+Pj4gKyAqIEBkYXRhIHdoZW4gYW4gb3V0cHV0IHN0YXR1cyBjaGFuZ2UgaXMgZGV0ZWN0ZWQg YnkgdGhlIGJyaWRnZSwgdW50aWwgaG90IHBsdWcKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBub3RpZmlj YXRpb24gZ2V0cyBkaXNhYmxlZCB3aXRoIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoKS4KPiA+Pj4+ Pj4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIEhvdCBwbHVnIGRldGVjdGlvbiBpcyBz dXBwb3J0ZWQgb25seSBpZiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpcyBzZXQgaW4KPiA+ Pj4+Pj4+Pj4+Pj4+ICsgKiBicmlkZ2UtPm9wcy4gVGhpcyBmdW5jdGlvbiBzaGFsbCBub3QgYmUg Y2FsbGVkIHdoZW4gdGhlIGZsYWcgaXMgbm90IHNldC4KPiA+Pj4+Pj4+Pj4+Pj4+ICsgKgo+ID4+ Pj4+Pj4+Pj4+Pj4gKyAqIE9ubHkgb25lIGhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjayBjYW4g YmUgcmVnaXN0ZXJlZCBhdCBhIHRpbWUsIGl0IGlzIGFuCj4gPj4+Pj4+Pj4+Pj4+PiArICogZXJy b3IgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gaG90IHBsdWcgZGV0ZWN0aW9uIGlzIGFscmVh ZHkgZW5hYmxlZCBmb3IKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiB0aGUgYnJpZGdlLgo+ID4+Pj4+Pj4+ Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+Pj4+PiBUbyBzaW1wbGlmeSBhcmNoaXRlY3R1cmUgbWF5YmUg d291bGQgYmUgYmV0dGVyIHRvIGVuYWJsZSBocGQganVzdCBvbgo+ID4+Pj4+Pj4+Pj4+PiBicmlk Z2UgYXR0YWNoOgo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+PiBicmlkZ2UtPmhwZF9jYiA9 IGNiOwo+ID4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+PiBicmlkZ2UtPmhwZF9kYXRhID0gZGF0 YTsKPiA+Pj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4gcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2go Li4uKTsKPiA+Pj4+Pj4+Pj4+PiBZZWFoIEkgbGlrZSB0aGlzIG1vcmUuIFRoZSBvdGhlciBwcm9i bGVtIGhlcmUgaXMsIHdoYXQgaWYgeW91IG5lZWQgbW9yZQo+ID4+Pj4+Pj4+Pj4+IHRoYW4gMSBj YWxsYmFjayByZWdpc3RlcnMgb24gdGhlIHNhbWUgYnJpZGdlIGhkcCBzaWduYWw/Cj4gPj4+Pj4+ Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4gVGhpcyB3YXkgd2UgY291bGQgYXZvaWQgYWRkaW5nIG5ldyBj YWxsYmFja3MgaHBkXyhlbmFibGV8ZGlzYWJsZSkKPiA+Pj4+Pj4+Pj4+Pj4gd2l0aG91dCBiaWcg c2FjcmlmaWNlcy4KPiA+Pj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4gT25lIG1vcmUgdGhpbmc6 IEhQRCBpbiBEaXNwbGF5UG9ydC9IRE1JIGJlc2lkZSBzaWduYWxsaW5nIHBsdWcvdW5wbHVnLAo+ ID4+Pj4+Pj4+Pj4+PiBub3RpZmllcyBhYm91dCBzaW5rIHN0YXR1cyBjaGFuZ2UsIGhvdyBpdCB0 cmFuc2xhdGVzIHRvIHRoaXMgY2I/Cj4gPj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PiArdm9p ZCBkcm1fYnJpZGdlX2hwZF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+ Pj4+Pj4+Pj4+ICsJCQkgICB2b2lkICgqY2IpKHZvaWQgKmRhdGEsCj4gPj4+Pj4+Pj4+Pj4+PiAr CQkJCSAgICAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzKSwKPiA+Pj4+Pj4+Pj4+ Pj4+ICsJCQkgICB2b2lkICpkYXRhKQo+ID4+Pj4+Pj4+Pj4+Pj4gK3sKPiA+Pj4+Pj4+Pj4+Pj4+ ICsJaWYgKCFicmlkZ2UgfHwgIWJyaWRnZS0+ZnVuY3MtPmhwZF9lbmFibGUpCj4gPj4+Pj4+Pj4+ Pj4+PiArCQlyZXR1cm47Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+PiArCW11dGV4 X2xvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+ Pj4+ICsJaWYgKFdBUk4oYnJpZGdlLT5ocGRfY2IsICJIb3QgcGx1ZyBkZXRlY3Rpb24gYWxyZWFk eSBlbmFibGVkXG4iKSkKPiA+Pj4+Pj4+Pj4+Pj4+ICsJCWdvdG8gdW5sb2NrOwo+ID4+Pj4+Pj4+ Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmhwZF9jYiA9IGNiOwo+ID4+Pj4+Pj4+ Pj4+Pj4gKwlicmlkZ2UtPmhwZF9kYXRhID0gZGF0YTsKPiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+ Pj4+Pj4+Pj4+ICsJYnJpZGdlLT5mdW5jcy0+aHBkX2VuYWJsZShicmlkZ2UpOwo+ID4+Pj4+Pj4+ Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4gK3VubG9jazoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhf dW5sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPj4+Pj4+Pj4+Pj4+PiArfQo+ID4+Pj4+Pj4+ Pj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9icmlkZ2VfaHBkX2VuYWJsZSk7Cj4gPj4+Pj4+ Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+PiArLyoqCj4gPj4+Pj4+Pj4+Pj4+PiArICogZHJtX2Jy aWRnZV9ocGRfZGlzYWJsZSAtIGRpc2FibGUgaG90IHBsdWcgZGV0ZWN0aW9uIGZvciB0aGUgYnJp ZGdlCj4gPj4+Pj4+Pj4+Pj4+PiArICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJl Cj4gPj4+Pj4+Pj4+Pj4+PiArICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBDYWxsICZkcm1fYnJpZGdl X2Z1bmNzLmhwZF9kaXNhYmxlIGFuZCB1bnJlZ2lzdGVyIHRoZSBob3QgcGx1ZyBkZXRlY3Rpb24K PiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBjYWxsYmFjayBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgd2l0aCBk cm1fYnJpZGdlX2hwZF9lbmFibGUoKS4gT25jZSB0aGlzCj4gPj4+Pj4+Pj4+Pj4+PiArICogZnVu Y3Rpb24gcmV0dXJucyB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2FsbGVkIGJ5IHRoZSBicmlk Z2Ugd2hlbiBhbgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIG91dHB1dCBzdGF0dXMgY2hhbmdlIG9jY3Vy cy4KPiA+Pj4+Pj4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIEhvdCBwbHVnIGRldGVj dGlvbiBpcyBzdXBwb3J0ZWQgb25seSBpZiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpcyBz ZXQgaW4KPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBicmlkZ2UtPm9wcy4gVGhpcyBmdW5jdGlvbiBzaGFs bCBub3QgYmUgY2FsbGVkIHdoZW4gdGhlIGZsYWcgaXMgbm90IHNldC4KPiA+Pj4+Pj4+Pj4+Pj4+ ICsgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+Pj4+Pj4+Pj4+Pj4+ICt7Cj4gPj4+Pj4+Pj4+Pj4+PiAr CWlmICghYnJpZGdlIHx8ICFicmlkZ2UtPmZ1bmNzLT5ocGRfZGlzYWJsZSkKPiA+Pj4+Pj4+Pj4+ Pj4+ICsJCXJldHVybjsKPiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhf bG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmZ1bmNz LT5ocGRfZGlzYWJsZShicmlkZ2UpOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4g KwlicmlkZ2UtPmhwZF9jYiA9IE5VTEw7Cj4gPj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+aHBkX2Rh dGEgPSBOVUxMOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211 dGV4KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9H UEwoZHJtX2JyaWRnZV9ocGRfZGlzYWJsZSk7Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ Pj4+PiArLyoqCj4gPj4+Pj4+Pj4+Pj4+PiArICogZHJtX2JyaWRnZV9ocGRfbm90aWZ5IC0gbm90 aWZ5IGhvdCBwbHVnIGRldGVjdGlvbiBldmVudHMKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBAYnJpZGdl OiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBAc3RhdHVzOiBv dXRwdXQgY29ubmVjdGlvbiBzdGF0dXMKPiA+Pj4+Pj4+Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+Pj4+ Pj4gKyAqIEJyaWRnZSBkcml2ZXJzIHNoYWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byByZXBvcnQg aG90IHBsdWcgZXZlbnRzIHdoZW4gdGhleQo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIGRldGVjdCBhIGNo YW5nZSBpbiB0aGUgb3V0cHV0IHN0YXR1cywgd2hlbiBob3QgcGx1ZyBkZXRlY3Rpb24gaGFzIGJl ZW4KPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBlbmFibGVkIGJ5IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy5o cGRfZW5hYmxlIGNhbGxiYWNrLgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4+PiAr ICogVGhpcyBmdW5jdGlvbiBzaGFsbCBiZSBjYWxsZWQgaW4gYSBjb250ZXh0IHRoYXQgY2FuIHNs ZWVwLgo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRn ZV9ocGRfbm90aWZ5KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4+Pj4+Pj4+PiAr CQkJICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpCj4gPj4+Pj4+Pj4+Pj4+PiAr ewo+ID4+Pj4+Pj4+Pj4+Pj4gKwltdXRleF9sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPj4+ Pj4+Pj4+Pj4+PiArCWlmIChicmlkZ2UtPmhwZF9jYikKPiA+Pj4+Pj4+Pj4+Pj4+ICsJCWJyaWRn ZS0+aHBkX2NiKGJyaWRnZS0+aHBkX2RhdGEsIHN0YXR1cyk7Cj4gPj4+Pj4+Pj4+Pj4gU28gdGhp cyBpc24ndCBxdWl0ZSB3aGF0IEkgaGFkIGluIG1pbmQuIEluc3RlYWQgc29tZXRoaW5nIGxpa2Ug dGhpczoKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IAkvKiBpdGVyYXRlcyBvdmVyIGFsbCBi cmlkZ2VzIGluIHRoZSBjaGFpbiBjb250YWluaW5nIEBicmlkZ2UgKi8KPiA+Pj4+Pj4+Pj4+PiAJ Zm9yX2VhY2hfYnJpZGdlKHRtcF9icmlkZ2UsIGJyaWRnZSkgewo+ID4+Pj4+Pj4+Pj4+IAkJaWYg KHRtcF9icmlkZ2UgPT0gYnJpZGdlKQo+ID4+Pj4+Pj4+Pj4+IAkJCWNvbnRpbnVlOwo+ID4+Pj4+ Pj4+Pj4+IAkJaWYgKGJyaWRnZS0+aHBkX25vdGlmeSk7Cj4gPj4+Pj4+Pj4+Pj4gCQkJYnJpZGdl LT5ocGRfbm90aWZ5KHRtcF9icmlkZ2UsIGJyaWRnZSwgc3RhdHVzKTsKPiA+Pj4+Pj4+Pj4+PiAJ fQo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gCWVuY29kZXIgPSBlbmNvZGVyX2Zvcl9icmlk Z2UoYnJpZGdlKTsKPiA+Pj4+Pj4+Pj4+PiAJaWYgKGVuY29kZXItPmhlbHBlcl9wcml2YXRlLT5i cmlkZ2VfaHBkX25vdGlmeSkKPiA+Pj4+Pj4+Pj4+PiAJCWVuY29kZXItPmhlbHBlcl9wcml2YXRl LT5icmlkZ2VfaHBkX25vdGlmeShlbmNvZGVyLCBicmlkZ2UsIHN0YXR1cyk7Cj4gPj4+Pj4+Pj4+ Pj4KPiA+Pj4+Pj4+Pj4+PiAJZGV2ID0gYnJpZGdlLT5kZXYKPiA+Pj4+Pj4+Pj4+PiAJaWYgKGRl di0+bW9kZV9jb25maWcuaGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KQo+ID4+Pj4+ Pj4+Pj4+IAkJZGV2LT5tb2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3Rp ZnkoZGV2LCBicmlkZ2UsIHN0YXR1cykKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IE5vIHJl Z2lzdGVyIGNhbGxiYWNrIG5lZWRlZCwgbm8gbG9ja2luZyBuZWVkZWQsIGV2ZXJ5b25lIGdldHMg ZXhhY3RseSB0aGUKPiA+Pj4+Pj4+Pj4+PiBocGQgdGhleSB3YW50L25lZWQuCj4gPj4+Pj4+Pj4+ PiBBcyBJIHVuZGVyc3RhbmQgeW91IHdhbnQgdG8gbm90aWZ5IGV2ZXJ5IG1lbWJlciBvZiB0aGUg cGlwZWxpbmUuCj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gSSB0aGluayBpdCBzaG91bGQgYmUg ZW5vdWdoIHRvIG5vdGlmeSBvbmx5IHRoZSBzb3VyY2UsIGFuZCB0aGVuIHNvdXJjZQo+ID4+Pj4+ Pj4+Pj4gc2hvdWxkIGRlY2lkZSBpZi93aGVuIHRoZSBocGQgc2hvdWxkIGJlIHByb3BhZ2F0ZWQg dXBzdHJlYW0uCj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gSXQgbG9va3MgbW9yZSBnZW5lcmlj IGZvciBtZS4KPiA+Pj4+Pj4+Pj4gSSdtIG5vdCBwYXJzaW5nIC4uLiBkbyB5b3UgdGhpbmsgbXkg aWRlYSBpcyBtb3JlIGdlbmVyaWMgYW5kIHVzZWZ1bCwgb3IKPiA+Pj4+Pj4+Pj4gdGhlIG9uZSBm cm9tIExhdXJlbnQ/IEtpbmRhIGNvbmZ1c2VkIGhlcmUuCj4gPj4+Pj4+Pj4gUmVnYXJkaW5nIGdl bmVyYWwgaWRlYToKPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IDEuIExhdXJlbnQncyBhcHByb2FjaCBp cyB0byBub3RpZnkgb25seSBjb25zdW1lciwgSSBndWVzcyB1c3VhbGx5IHZpZGVvCj4gPj4+Pj4+ Pj4gc291cmNlLgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gMi4gWW91ciBpcyB0byBub3RpZnkgYWxs IG90aGVyIGJyaWRnZXMgYW5kIGVuY29kZXIuCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBBbmQgSSBw cmVmZXIgMXN0IGFwcHJvYWNoLCB3aHk6Cj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiAtIHRoZSBzb3Vy Y2UgY2FuIGRlY2lkZSBpZi93aGVuIGFuZCB0byB3aG8gcHJvcGFnYXRlIHRoZSBzaWduYWwsCj4g Pj4+Pj4+Pj4KPiA+Pj4+Pj4+PiAtIGlzIG1vcmUgZ2VuZXJpYywgZm9yIGV4YW1wbGUgaWYgYnJp ZGdlIHNlbmQgc2lnbmFsIHRvIHR3bwo+ID4+Pj4+Pj4+IG1vbml0b3JzL3BhbmVscywgaXQgY2Fu IGRlbGF5IGhwZCBwcm9wYWdhdGlvbiB0aWxsIGJvdGggc2lua3MgYXJlIHByZXNlbnQsCj4gPj4+ Pj4+PiBXaXRoIExhdXJlbnQncyBhcHByb2FjaCB0aGUgYnJpZGdlIGNhbm5vdCBzZW5kIHRoZSBo cGQgdG8gbW9yZSB0aGFuIG9uZQo+ID4+Pj4+Pj4gY29uc3VtZXIuIFRoZXJlJ3Mgb25seSAxIGNh bGxiYWNrLiBTbyB5b3UncmUgZXhhbXBsZSBkb2Vzbid0IHdvcmsuCj4gPj4+Pj4+IElmIHRoZXJl IHdpbGwgYmUgdHdvIGNvbnN1bWVycywgdGhlcmUgd2lsbCBiZSB0d28gYnJpZGdlIGF0dGFjaG1l bnRzLAo+ID4+Pj4+PiB0aHVzIHRoZXJlIHdpbGwgYmUgdHdvIG5vdGlmaWNhdGlvbnMsIGl0IHNo b3VsZCB3b3JrLgo+ID4+Pj4+IDIgY29uc3VtZXJzLCAxIHByb2R1Y2VyLiBUaGVyZSdzIG9ubHkg X29uZV8gY2FsbGJhY2sgaW4gdGhlIHByb2R1Y2VyLiBUaGUKPiA+Pj4+PiBjYWxsYmFjayBpcyBy ZWdpc3RlcmVkIG9uIHRoZSBwcm9kdWNlIGJyaWRnZSwgbm90IG9uIHRoZSBjb25zdW1lciBicmlk Z2UKPiA+Pj4+PiAob3IgSSdtIHRvdGFsbGx5IG1pc3JlYWRpbmcgd2hhdCBMYXVyZW50IGRvZXMg aGVyZSkuCj4gPj4+PiBJIGhhdmUgYXNzdW1lZCB0aGF0IGlmIGRldmljZXMgZXhwb3NlcyB0d28g aGFyZHdhcmUgc2luayBpbnRlcmZhY2VzIGl0Cj4gPj4+PiB3aWxsIGV4cG9zZSB0d28gc2VwYXJh dGUgYnJpZGdlcyAtIG9mIGNvdXJzZSBpdCB3aWxsIG5vdCB3b3JrIHdpdGgKPiA+Pj4+ICJicmlk Z2UgY2hhaW5pbmciIHRoaW5nLCBidXQgdGhpcyBpcyBhIGRpZmZlcmVudCBzdG9yeS4KPiA+Pj4g RGFuaWVsIGlzIHJpZ2h0IHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seSBhbGxv d3Mgb25lCj4gPj4+IGNvbnN1bWVyLiBUaGlzIGlzIGhvd2V2ZXIgbm90IGEgbGltaXRhdGlvbiBv ZiB0aGUgQVBJLCBidXQgb2YgaXRzCj4gPj4+IGltcGxlbWVudGF0aW9uLCBhcyBJIG9ubHkgbmVl ZGVkIGEgc2luZ2xlIGNvbnN1bWVyLiBUaGUgaGVscGVycyBpbiB0aGlzCj4gPj4+IHNlcmllcyBl bnN1cmUgdGhhdCBuZWl0aGVyIHRoZSBjb25zdW1lciBub3IgdGhlIHByb2R1Y2VyIHBva2UgaW4g dGhlCj4gPj4+IGRybV9icmlkZ2Ugc3RydWN0dXJlIHRvIGNhbGwgYmFjayB0byB0aGUgSFBEIGhh bmRsZXI6Cj4gPj4+Cj4gPj4+IC0gVGhlIGNvbnN1bWVyIGNhbGxzIGRybV9icmlkZ2VfaHBkX2Vu YWJsZSgpIGFuZAo+ID4+PiAgIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoKSwgd2hpY2ggY291bGQg b2ZmZXIgYSByZWZlcmVuY2UtY291bnRlZAo+ID4+PiAgIGJlaGF2aW91ciBpZiBkZXNpcmVkIHdp dGhvdXQgY2hhbmdlcyB0byB0aGUgY29uc3VtZXIuCj4gPj4+Cj4gPj4+IC0gVGhlIHByb2R1Y2Vy IGdldHMgY29uZmlndXJlZCBieSAuaHBkX2VuYWJsZSgpIGFuZCAuaHBkX2Rpc2FibGUoKSwKPiA+ Pj4gICB3aGljaCBjb3VsZCBhbHNvIGVhc2lseSBhY2NvbW1vZGF0ZSByZWZlcmVuY2UtY291bnRp bmcgaW4gdGhlIGRybQo+ID4+PiAgIGJyaWRnZSBjb3JlIHdpdGhvdXQgY2hhbmdlcyB0byB0aGUg cHJvZHVjZXIuCj4gPj4+Cj4gPj4+IC0gVGhlIHByb2R1Y2VyIG5vdGlmaWVzIEhQRCB3aXRoIGRy bV9icmlkZ2VfaHBkX25vdGlmeSgpLCB3aGljaCBjb3VsZAo+ID4+PiAgIGVhc2lseSBiZSBleHRl bmRlZCB0byBzdXBwb3J0IG11bHRpcGxlIGNvbnN1bWVycyB3aXRob3V0IGNoYW5nZXMgdG8KPiA+ Pj4gICB0aGUgcHJvZHVjZXIuCj4gPj4+Cj4gPj4+IFRoaXMgaXMgYWN0dWFsbHkgbXkgc2Vjb25k IHZlcnNpb24gb2YgdGhlIEhQRCBtZWNoYW5pc20uIFRoZSBmaXJzdAo+ID4+PiB2ZXJzaW9uIHdh cyBuZXZlciBwb3N0ZWQsIHBva2VkIGludG8gZHJtX2JyaWRnZSwgYW5kIHJlcXVpcmVkIHRoZQo+ ID4+PiBwcm9kdWNlciB0byBiZSBhd2FyZSBvZiB0aGUgY2FsbGJhY2tzLiBBZnRlciBkaXNjdXNz aW5nIHRoaXMgcHJpdmF0ZWx5Cj4gPj4+IHdpdGggRGFuaWVsLCBJIGNhbWUgdXAgd2l0aCB0aGUg aW1wbGVtZW50YXRpb24gaW4gdGhpcyBzZXJpZXMgdGhhdCwKPiA+Pj4gd2hpbGUgbm90IHN1cHBv cnRpbmcgbXVsdGlwbGUgY29uc3VtZXJzIG5vdywgbWFrZXMgaXQgZWFzeSB0byBleHRlbmQKPiA+ Pj4gbGF0ZXIgd2l0aG91dCBtaW5pbWFsIGVmZm9ydC4KPiA+Pj4KPiA+Pj4gRGFuaWVsJ3MgcHJv cG9zZWQgaW1wbGVtZW50YXRpb24gYWJvdmUgbG9va3MgcmVhc29uYWJsZSB0byBtZSwgcHJvdmlk ZWQKPiA+Pj4gd2UgY2FuIGl0ZXJhdGUgb3ZlciB0aGUgYnJpZGdlcyBpbiBhbiBvcmRlciB0aGF0 IGRvbid0IGRlcGVuZCBvbiB0aGUKPiA+Pj4gcG9zaXRpb24gb2YgdGhlIHByb2R1Y2VyIGluIHRo ZSBjaGFpbiAoc2hvdWxkIGJlIGVhc3kgdG8gc29sdmUgYnkKPiA+Pj4gc3RhcnRpbmcgYXQgdGhl IGVuY29kZXIgZm9yIGluc3RhbmNlKS4gSXQgaG93ZXZlciBsb29rcyBhIGJpdCBsaWtlIGEKPiA+ Pj4gbWlkbGF5ZXIgdG8gbWUgOi0pIFRoYXQncyB3aHkgSSBoYXZlIGEgc2ltaWxhciBpbXBsZW1l bnRhdGlvbiBpbiB0aGUKPiA+Pj4gY29ubmVjdG9yLWJyaWRnZSBoZWxwZXIsIHdoaWNoIGNvdWxk IGJlIGV4dGVuZGVkIHRvIGNhbGwKPiA+Pj4gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGUtPmJyaWRn ZV9ocGRfbm90aWZ5KCkgYW5kCj4gPj4+IGRldi0+bW9kZV9jb25maWcuaGVscGVyX3ByaXZhdGUt PmJyaWRnZV9ocGRfbm90aWZ5KCkgaW5zdGVhZCBvZgo+ID4+PiBoYXJkY29kaW5nIGRybV9rbXNf aGVscGVyX2hvdHBsdWdfZXZlbnQoKS4gTW92aW5nIHRoZSBjb2RlIHRvCj4gPj4+IGRybV9icmlk Z2VfaHBkX25vdGlmeSgpIHdvdWxkIG9uIHRoZSBvdGhlciBoYW5kIHNldCB0aGUgbm90aWZpY2F0 aW9uCj4gPj4+IHNlcXVlbmNlIHRvd2FyZHMgdGhlIGVuY29kZXIgYW5kIGRyaXZlciBpbiBzdG9u ZS4gRGFuaWVsLCBkbyB5b3UgdGhpbmsKPiA+Pj4gdGhhdCB3b3VsZCBiZSBiZXR0ZXIgPwo+ID4+ Pgo+ID4+PiBJIHdvdWxkIGxpa2UgdG8gcmVtaW5kIGV2ZXJ5Ym9keSB0aGF0IHRoaXMgc2VyaWVz IGlzbid0IHRoZSBsYXN0IEkgd2lsbAo+ID4+PiBldmVyIHN1Ym1pdCwgYW5kIEkgcGxhbiB0byBk byBtb3JlIHdvcmsgb24gZHJtX2JyaWRnZSBhbmQgZHJtX3BhbmVsLiBJJ20KPiA+Pj4gb3BlbiB0 byBzdWdnZXN0aW9ucywgYW5kIGNhbiBhZGRyZXNzIHByb2JsZW1zIG9uIHRvcCBvZiB0aGVzZSBw YXRjaGVzLAo+ID4+PiBwcm92aWRlZCBvYnZpb3VzbHkgdGhhdCB0aGlzIHNlcmllcyBkb2Vzbid0 IGdvIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24uCj4gPj4+IEknbSBvZiBjb3Vyc2UgYWxzbyB3aWxs aW5nIHRvIHJld29yayB0aGlzIHNlcmllcywgYnV0IGdpdmVuIHRoZSBhbW91bnQKPiA+Pj4gb2Yg d29yayB3ZSBoYXZlIGluIHRoZSBkcm1fYnJpZGdlIHJlYWxtLCBJIGNhbid0IGZpeCBldmVyeXRo aW5nIGluIG9uZQo+ID4+PiBnbyA6LSkKPiA+Pj4KPiA+Pj4+Pj4+PiAtIGl0IHJlc2VtYmxlcyBo YXJkd2FyZSB3aXJlcyA6KQo+ID4+Pj4+Pj4gVGhpcyBpc24ndCBmb3IgdGhlIGh3IHdpcmVzIGFm YWl1aS4gVGhlIGh3IGhwZCB0ZXJtaW5hdGVzIGluIHRoZSBzb3VyY2UKPiA+Pj4+Pj4+IGJyaWRn ZSwgd2hpY2ggdGhlbiBjYWxscyBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSB0byBpbmZvcm0gYW55 b25lIGVsc2UKPiA+Pj4+Pj4+IGludGVyZXN0ZWQgaW4gdGhhdCBocGQgc2luZ2FsLiBUaGlzIGlu Y2x1ZGVzOgo+ID4+Pj4+Pj4gLSBPdGhlciBicmlkZ2VzLCBlLmcuIGlmIHRoZXkgcHJvdmlkZSBD RUMgc3VwcG9ydC4KPiA+Pj4+Pj4+IC0gT3RoZXIgYnJpZGdlcywgbWF5YmUgdGhleSBuZWVkIHRv IHJlLXJ1biB0aGUgSERDUCBzdGF0ZSBlbmdpbmUKPiA+Pj4+Pj4+IC0gT3ZlcmFsbCBkcml2ZXIs IHNvIGl0IGNhbiB1cGRhdGUgdGhlIG1vZGVzL2Nvbm5lY3RvciBzdGF0dXMgYW5kIHNlbmQgdGhl Cj4gPj4+Pj4+PiAgIHVldmVudCB0byB0aGUgZHJpdmVyLgo+ID4+Pj4+Pj4gLSBPdmVyYWxsIGRp c3BsYXkgcGlwZWxpbmUgZm9yIHRoaXMgc3BlY2lmaWMgYnJpZGdlLCBtYXliZSB5b3UgbmVlZCB0 bwo+ID4+Pj4+Pj4gICBzaHV0IGRvd24vcmUtZW5hYmxlIHRoZSBwaXBlIGJlY2F1c2UgJHJlYXNv bnMuCj4gPj4+Pj4+PiAgCj4gPj4+Pj4+PiBUaGF0J3MgYXQgbGVhc3QgbXkgdW5kZXJzdGFuZGlu ZyBmcm9tIGxvdHMgb2YgY2hhdHMgd2l0aCBMYXVyZW50IGFib3V0Cj4gPj4+Pj4+PiB3aGF0IGhl IHdhbnRzIHRvIGRvIGhlcmUuCj4gPj4+IFRoYXQncyBjb3JyZWN0LCBhbmQgdGhhdCdzIHdoYXQg SSB3YXMgdHJ5aW5nIHRvIGltcGxlbWVudCA6LSkgVGhlCj4gPj4+IG5vdGlmaWNhdGlvbiwgaW4g dGhpcyBwYXRjaCBzZXJpZXMsIGdvZXMgZnJvbSB0aGUgcHJvZHVjZXIgYnJpZGdlIHRvIGEKPiA+ Pj4gY2VudHJhbCBwbGFjZSAobmFtZWx5IHRoZSBjb25uZWN0b3IsIHdpdGggYSBoZWxwZXIgaW1w bGVtZW50YXRpb24KPiA+Pj4gYXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhpcyBzZXJpZXMsIGJ1dCBj dXN0b20gaW1wbGVtZW50YXRpb25zIGluIGRpc3BsYXkKPiA+Pj4gZHJpdmVycyBhcmUgZmluZSBp ZiBuZWVkZWQpIHRoYXQgdGhlbiBkaXNwYXRjaGVzIHRoZSBub3RpZmljYXRpb24gdG8gYWxsCj4g Pj4+IGJyaWRnZXMgKHRocm91Z2ggdGhlIC5sb3N0X2hvdHBsdWcoKSBvcGVyYXRpb24sIHdoaWNo IHdlIGNvdWxkIHJlcGxhY2UKPiA+Pj4gYnkgYW4gLmhwZF9ub3RpZnkoKSBvcGVyYXRpb24pIGZv ciB0aGUgZmlyc3QgdHdvIHB1cnBvc2VzIGxpc3RlZCBhYm92ZSwKPiA+Pj4gYW5kIHRoZW4gdG8g dGhlIG92ZXJhbGwgZHJpdmVyLiBUaGUgb25seSB0aGluZyBJIGRvbid0IHN1cHBvcnQgeWV0IGlz Cj4gPj4+IGRpc3BhdGNoaW5nIHRvIHRoZSBkaXNwbGF5IHBpcGVsaW5lIChpdGVtIDQgaW4gdGhl IGxpc3QgYWJvdmUpIGFzIEkgaGFkCj4gPj4+IG5vIG5lZWQgZm9yIHRoYXQsIGFuZCBkaWRuJ3Qg d2FudCB0byBkZXZlbG9wIGFuIEFQSSB3aXRoIG5vIHVzZXIuIFRoaXMKPiA+Pj4gd291bGQgaG93 ZXZlciBub3QgYmUgZGlmZmljdWx0IHRvIGRvIHdoZW4gbmVlZGVkLCB0aGUgbmVlZCBpcyB0YWtl biBpbnRvCj4gPj4+IGFjY291bnQgaW4gdGhlIHByb3Bvc2VkIGltcGxlbWVudGF0aW9uLgo+ID4+ Pgo+ID4+Pj4+PiBJIGRvIG5vdCBrbm93IHRoZSBmdWxsIHBpY3R1cmUsIGJ1dCB0aGUgc29sdXRp b24gd2hlcmUgcGFydGljdWxhciBicmlkZ2UKPiA+Pj4+Pj4gbm90aWZpZXMgZXZlcnl0aGluZyB1 bmNvbmRpdGlvbmFsbHkgc2VlbXMgdG8gbWUgbXVjaCBsZXNzIGZsZXhpYmxlLgo+ID4+Pj4+Pgo+ ID4+Pj4+PiBJZiBIUEQgc2lnbmFscyBpcyByZWNlaXZlZCBieSB0aGUgY29uc3VtZXIsIGlmIHRo ZXJlIGFyZSBubyBvYnN0YWNsZXMgaXQKPiA+Pj4+Pj4gY2FuIHByb3BhZ2F0ZSBpdCBmdXJ0aGVy LCB1cHN0cmVhbSBicmlkZ2UvZW5jb2RlciBvciB0byBkcm0gY29yZSAtIGl0Cj4gPj4+Pj4+IHdp bGwgbWltaWMgeW91ciBzY2VuYXJpby4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gQnV0IHRoZXJlIGFyZSBh bHNvIG90aGVyIHNjZW5hcmlvcyB3aGVyZSBicmlkZ2UgZG9lcyBub3Qgd2FudCB0bwo+ID4+Pj4+ PiBwcm9wYWdhdGUgc2lnbmFsLCBiZWNhdXNlIGZvciBleGFtcGxlOgo+ID4+Pj4+Pgo+ID4+Pj4+ PiAtIGl0IHdhbnRzIHRvIHdhaXQgZm9yIG90aGVyIHNpbmtzIHRvIHdha2UgdXAsCj4gPj4+Pj4+ Cj4gPj4+Pj4gVGhlIG90aGVyIHNpbmsgY2FuIGp1c3QgZG8gdGhhdCBpbiB0aGVpciBocGQgY2Fs bGJhY2suCj4gPj4+Pj4KPiA+Pj4+Pj4gLSBpdCBwcm9wYWdhdGVzIEhQRCBzaWduYWwgdmlhIGhh cmR3YXJlIHdpcmUsCj4gPj4+Pj4gQWdhaW4sIHRoZSBvdGhlciBzaW5rIGNhbiBqdXN0IG5vdCBs aXN0ZW4gdG8gc3cgaHBkIGluIHRoYXQgY2FzZSwgYW5kIHVzZQo+ID4+Pj4+IHRoZSB3aXJlL2h3 IGhwZCBpbnRlcnJ1cHQuCj4gPj4+Pj4KPiA+Pj4+IElmIGl0IHNob3VsZCBpZ25vcmUgSFBELCB3 aHkgaXQgc2hvdWxkIHJlY2VpdmUgaXQgYXQgYWxsIC0gaXQgaXMKPiA+Pj4+IHVubmVjZXNzYXJ5 IG5vaXNlLiBBbmQgSSBhbSBhZnJhaWQgd2l0aCBtb3JlIGNvbXBsaWNhdGVkIHBpcGVsaW5lcyBp dAo+ID4+Pj4gd2lsbCBiZSBpbXBvc3NpYmxlIGZvciBwYXJ0aWN1bGFyIGNvbXBvbmVudCAoYnJp ZGdlL2VuY29kZXIvd2hhdGV2ZXIpIHRvCj4gPj4+PiBkaXN0aW5ndWlzaCBpZiBIUEQgbm90aWZp Y2F0aW9uIHdoaWNoIGNhbWUgZnJvbSBub24tZGlyZWN0bHkgY29ubmVjdGVkCj4gPj4+PiBjb21w b25lbnQgc2hvdWxkIGJlIGlnbm9yZWQgb3Igbm90Lgo+ID4+Pj4KPiA+Pj4+Pj4gLSBmaXJzdCBp dCB3YW50cyB0byB2ZXJpZnkgaWYgdGhlIHNpbmsgaXMgdmFsaWQvY29tcGF0aWJsZS9hdXRob3Jp emVkCj4gPj4+Pj4+IGRldmljZS4KPiA+Pj4+PiBOb3cgeW91IGxvc3QgbWUuIFdoeSB3b3VsZCBz b21lb25lIGdsdWUgaW5jb21wYXRpYmxlIElQIGludG8gYSBTb0Mgb3IKPiA+Pj4+PiBib2FyZD8K PiA+Pj4+IEJyaWRnZSBjYW4gaGF2ZSBleHRlcm5hbCBjb25uZWN0b3JzLCBhbmQgdGhlIHVzZXIg Y2FuIGNvbm5lY3QgdGhlcmUKPiA+Pj4+IGFueXRoaW5nLgo+ID4+Pj4KPiA+Pj4+Pj4gSW4gZ2Vu ZXJhbCBIUEQgaXMgaW5wdXQgc2lnbmFsIGZvciBub3RpZnkgb2Ygc3RhdGUgY2hhbmdlcyBvbiBw YXJ0aWN1bGFyCj4gPj4+Pj4+IGJ1cywgaW4gY2FzZSBvZiB0eXBpY2FsIHZpZGVvIGJyaWRnZSBv biBpdHMgb3V0cHV0IHZpZGVvIGJ1cy4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gSW4gY2FzZSBvZiBicmlk Z2VzIHRoZXkgaGF2ZSBhbHNvIGlucHV0IHZpZGVvIGJ1c2VzLCBhbmQgdGhleSBjYW4gc2VuZAo+ ID4+Pj4+PiBIUEQgc2lnbmFsIHZpYSB0aGlzIGJ1cywgYnV0IHRoaXMgaXMgaW5kZWVkIGRpZmZl cmVudCBIUEQgc2lnbmFsLCBldmVuCj4gPj4+Pj4+IGlmIGZvciBtb3N0IGNhc2VzIHRoZXkgbG9v a3Mgc2ltaWxhci4KPiA+Pj4+PiBBaCwgSSB0aGluayB0aGlzIGlzIGEgcHJvYmxlbSB3ZSB3aWxs IGV2ZW50dWFsbHkgaGF2ZS4gQnV0IGl0J3Mgbm90Cj4gPj4+Pj4gc29tZXRoaW5nIHdlJ3JlIGN1 cnJlbnRseSBzb2x2aW5nIGhlcmUgYXQgYWxsIEkgdGhpbmsuCj4gPj4+PiBDdXJyZW50bHkgc2lp ODYyMCBkZXZpY2UgaW4gdG0yIHNlbmRzIGhwZCBzaWduYWwgdXBzdHJlYW0gdmlhIGhhcmR3YXJl Cj4gPj4+PiBsaW5lLCBzbyB0aGlzIGlzIG5vdCBzb21ldGhpbmcgZnJvbSBmYXIgZnV0dXJlLiBB bmQgSSBndWVzcyB3aXRoIEhQRAo+ID4+Pj4gYnJvYWRjYXN0aW5nIGl0IGNvdWxkIGJlIHJhY3kv ZXJyb3IgcHJvbmUsIGZvciBleGFtcGxlIEVESUQgcmVhZGluZyBjYW4KPiA+Pj4+IGZhaWwgZHVl IHRvIGJyaWRnZSBiZWluZyBub3QgcmVhZHkgKGRkYyBvZiBzaWk4NjIwIGlzIGNvbm5lY3RlZCB0 byBpMmMKPiA+Pj4+IGNvbnRyb2xsZXIgdmlhIGh3IHdpcmVzIGFsc28pLgo+ID4+Pj4KPiA+Pj4+ Pj4+PiBBbmQgcmVnYXJkaW5nIGltcGxlbWVudGF0aW9uOgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4g MS4gTGF1cmVudCBwcm9wb3NlcyB0byByZWdpc3RlciBjYWxsYmFjayBkcm1fYnJpZGdlX2hwZF9l bmFibGUuCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiAyLiBZb3UgcHJvcG9zZSB0byBhZGQgb3BzIGhw ZF9ub3RpZnkgaW4gYnJpZGdlcyBhbmQgZW5jb2RlcnMuCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBZ b3VyIHByb3Bvc2l0aW9uIGlzIG1vcmUgc3RyYWlnaHRmb3J3YXJkLCBidXQgaWYgd2Ugd2FudCB0 byBub3RpZnkgb25seQo+ID4+Pj4+Pj4+IHNvdXJjZSB3ZSBzaG91bGQgbG9jYXRlIGl0IGJ5IHBh cnNpbmcgbm90aWZpY2F0aW9uIGNoYWluICh3aGF0IGFib3V0Cj4gPj4+Pj4+Pj4gdW5jaGFpbmVk IGJyaWRnZXMpLCBvciBzdG9yZSBwb2ludGVyIHNvbWV3aGVyZSBkdXJpbmcgYXR0YWNobWVudC4K PiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IEl0IHN0aWxsIGxlYXZlcyB1cyB3aXRoIHRoaXMgdWdseSBk dWFsaXNtIC0gc291cmNlIGlzIGVuY29kZXIgb3IgYnJpZGdlLAo+ID4+Pj4+Pj4+IHNpbWlsYXJs eSB0byBzaW5rIGFzIGJyaWRnZSBvciBwYW5lbCwgYnV0IGZpeGluZyBpdCBjYW4gYmUgZG9uZSBs YXRlci4KPiA+Pj4+Pj4+IFVoIEkgdGhpbmsgd2UncmUgbm90IHRhbGtpbmcgYWJvdXQgdGhlIHNh bWUgdGhpbmcgcmVhbGx5LiBNeSB1bmRlcnN0YW5kaW5nCj4gPj4+Pj4+PiBpcyB0aGF0IHRoaXMg Y2FsbGJhY2sgaXMgaWYgc29tZW9uZSAob3V0c2lkZSBvZiB0aGlzIGJyaWRnZSkgaXMgaW50ZXJl c3RlZAo+ID4+Pj4+Pj4gaW4gYSBocGQgc2lnbmFsIF9mcm9tXyB0aGlzIGJyaWRnZS4gV2hpY2gg bWVhbnMgeW91IGNhbiBvbmx5IGV2ZXIgaGF2ZSAxCj4gPj4+Pj4+PiBsaXN0ZW5lci4KPiA+Pj4+ Pj4gRG8gd2UgaGF2ZSByZWFsIGxpZmUgZXhhbXBsZXM/Cj4gPj4+Pj4+Cj4gPj4+Pj4+IEkgd2Fu dCB0byBkaXN0aW5ndWlzaCB0d28gc2l0dWF0aW9uczoKPiA+Pj4+Pj4KPiA+Pj4+Pj4gLSBhbm90 aGVyIGRldmljZSB3YW50cyB0byBrbm93IGlmIGlucHV0IGJ1cyBvZiB0aGUgYnJpZGdlIGhhcyBj aGFuZ2VkIHN0YXRlLAo+ID4+Pj4+Pgo+ID4+Pj4+PiAtIGFub3RoZXIgZGV2aWNlIHdhbnRzIHRv IGtub3cgaWYgb3V0cHV0IGJ1cyBvZiB0aGUgYnJpZGdlIGhhcyBjaGFuZ2VkCj4gPj4+Pj4+IHN0 YXRlLgo+ID4+Pj4+IFVoLCB0aGF0J3Mgd2hhdCBkcm1fYnJpZGdlX3N0YXRlIGlzIGZvciAoaWYg aXQgZXZlciBoYXBwZW5zKS4gVGhhdCdzIGhvdwo+ID4+Pj4+IGJyaWRnZXMgY2FuIGV4Y2hhbmdl IHN0YXRlIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIGFub3RoZXIuIGhwZCBpcwo+ID4+Pj4+ IGFib3V0IHRoZSBwaHlzaWNhbCB3b3JsZCwgaS5lLiAiaXMgdGhlcmUgYSBjYWJsZSBwbHVnZ2Vk IGludG8gdGhlIHBvcnQKPiA+Pj4+PiBJJ20gZHJpdmluZz8iLiBXZSdyZSBub3QgZ29pbmcgdG8g dXNlIGZha2UgaHBkIHRvIHVwZGF0ZSBicmlkZ2Ugc3RhdGUgYW5kCj4gPj4+Pj4gZnVuIHN0dWZm IGxpa2UgdGhhdCwgd2UgaGF2ZSB0aGUgYXRvbWljX2NoZWNrIG1hY2hpbmVyeSBmb3IgdGhpcy4K PiA+Pj4+IE15IHF1ZXN0aW9uIHdhcyBpZiB3ZSBoYXZlIHJlYWwgZXhhbXBsZXMgdGhhdCB1cHN0 cmVhbSBkZXZpY2UgcmVxdWlyZXMKPiA+Pj4+IGtub3dsZWRnZSBhYm91dCBzdGF0ZSBvZiBvdXRw dXQgbGluZSBvZiB0aGUgYnJpZGdlPwo+ID4+Pj4KPiA+Pj4+IFRvIGJlIG1vcmUgcHJlY2lzZSwg d2UgaGF2ZSBmb2xsb3dpbmcgZGlzcGxheSBwaXBlbGluZToKPiA+Pj4+Cj4gPj4+PiBBLS0+Qi0t PkMKPiA+Pj4+Cj4gPj4+PiBBbmQgQyBzZW5kcyBIUEQgdG8gQiAoaWUgc2lnbmFsIHRoYXQgc3Rh dGUgb2YgbGluZSBiZXR3ZWVuIEIgYW5kIEMKPiA+Pj4+IGNoYW5nZWQpLiBEb2VzIEEgcmVhbGx5 IHdhbnRzIHRvIGtub3cgdGhpcyBpbmZvcm1hdGlvbj8gb3IgaXQgc2hvdWxkCj4gPj4+PiBqdXN0 IG5lZWQgdG8ga25vdyBpZiBzdGF0ZSBvZiBsaW5lIEEtLT5CIGNoYW5nZWQ/Cj4gPj4+IFRoZXJl J3Mgb25lIHJlYWwgbGlmZSBleGFtcGxlLCB3aGVyZSBBIGlzIGFuIEhETUkgZW5jb2RlciwgQiBp cyBhbiBIRE1JCj4gPj4+IEVTRCBwcm90ZWN0b3IgYW5kIGxldmVsIHNoaWZ0ZXIsIGFuZCBDIGlz IHRoZSBwaHlzaWNhbCBIRE1JIGNvbm5lY3Rvci4KPiA+Pj4gV2hlbiB0aGUgSERNSSBjYWJsZSBp cyB1bnBsdWdnZWQsIHRoZSBDRUMgY29udHJvbGxlciBwYXJ0IG9mIEEgbmVlZHMgdG8KPiA+Pj4g YmUgbm90aWZpZWQgaW4gb3JkZXIgdG8gcmVzZXQgdGhlIENFQyBzdGF0ZSBtYWNoaW5lLiBPbmUg Y291bGQgaG93ZXZlcgo+ID4+PiBhcmd1ZSB0aGF0IGluIHRoYXQgY2FzZSB0aGUgQS1CIGxpbmsg c3RhdGUgY2hhbmdlcyB0b28sIGJ1dCB0aGUKPiA+Pj4gaW1wb3J0YW50IHBhcnQgaXMgdGhhdCBI UEQgZGV0ZWN0aW9uIGlzIG5vdCBwZXJmb3JtZWQgYnkgQSwgd2hpbGUgQQo+ID4+PiBuZWVkcyB0 byBiZSBpbmZvcm1lZCBvZiBsb3N0IGhvdHBsdWcuCj4gPj4gSSBoYXZlIG5vIGZ1bGwgcGljdHVy ZSBidXQgSSBndWVzcyBpbiB0aGlzIGNhc2UgQyBzZW5kcyBIUEQgdG8gQiB1c2luZwo+ID4+IGhh cmR3YXJlIHdpcmUsIGFuZCB0aGVuIEIgc2VuZHMgSFBEIHRvIEEgYWxzbyB2aWEgd2lyZSwgc28g SSB3b3VsZG4ndAo+ID4+IHNheSB0aGF0IEIgZG9lcyBub3QgcGFydGljaXBhdGUgaW4gSFBEIHRy YW5zbWlzc2lvbi9mb3J3YXJkaW5nLAo+ID4gTm8sIGluIHRoaXMgY2FzZSBBIGRvZXNuJ3QgcmVj ZWl2ZSBhbnkgaGFyZHdhcmUgSFBEIHNpZ25hbCwgaXQgcmVxdWlyZXMKPiA+IEhQRCBub3RpZmlj YXRpb24gdGhyb3VnaCBzb2Z0d2FyZS4KPiA+Cj4gPj4gc29tZSBzaGlmdGVycyB3aXRoICdhZHZh bmNlZCBwb3dlciBzYXZpbmcnIGNhbiBldmVuIHBlcmZvcm0gd2FrZS11cCBvZgo+ID4+IHVwc3Ry ZWFtIHBpbiBsb2dpYyBhZnRlciByZWNlaXZpbmcgSFBEIG9uIGRvd25zdHJlYW0sIHNvIEhQRCBz ZW50IGZyb20gQgo+ID4+IHRvIEEgaXMgaW5kZWVkIGRpZmZlcmVudCB0aGFuIEhQRCBzZW50IGZy b20gQyB0byBCLgo+ID4+Cj4gPj4gQnR3LCB3aXRoIHRoZSBhYm92ZSBsb2dpYyBvZiBwcm9wYWdh dGlvbiBvZiBIUEQgY2FsbGJhY2sgKHByb3Bvc2VkIGJ5Cj4gPj4gRGFuaWVsKSBJIGd1ZXNzIGl0 IHdpbGwgd29yayB0aGlzIHdheToKPiA+Pgo+ID4+IC0gQSB3aWxsIHJlY2VpdmUgSFBEIHNpZ25h bCB2aWEgSFcsCj4gPj4KPiA+PiAtIHRoZW4gQiBhbmQgQyB3aWxsIHJlY2VpdmUgSFBEIGNhbGxi YWNrIHZpYSBmcmFtZXdvcmsuCj4gPj4KPiA+PiBBbSBJIHJpZ2h0Pwo+IAo+ID4gSXQncyB0aGUg b3RoZXIgd2F5IGFyb3VuZC4KPiA+Cj4gPiBJbiB0aGlzIGNhc2UgdGhlIEhQRCBzaWduYWwgZnJv bSB0aGUgY29ubmVjdG9yIChDKSBpcyByb3V0ZWQgdG8gYW4gaW5wdXQKPiA+IG9mIHRoZSBFU0Qg Y2hpcCAoQikuIFRoZSBFU0QgY2hpcCBvdXRwdXRzIGEgc2hpZnRlZCBIUEQgaGFyZHdhcmUgc2ln bmFsCj4gPiBjb25uZWN0ZWQgdG8gYSBHUElPIG9mIHRoZSBTb0MuIFRoZSBkcml2ZXIgZm9yIChC KSB0aHVzIHJlZ2lzdGVycyBhIEdQSU8KPiA+IElSUSBhbmQgcmVjZWl2ZSB0aGUgaGFyZHdhcmUg SFBEIG5vdGlmaWNhdGlvbi4gVGhlIGRyaXZlciBmb3IgdGhlIEhETUkKPiA+IGVuY29kZXIgKEEp IG5lZWRzIHRvIHJlY2VpdmUgSFBEIG5vdGlmaWNhdGlvbiBpbiBzb2Z0d2FyZSwgdGhyb3VnaCB0 aGUKPiA+IGZyYW1ld29yay4KPiAKPiBJZiB0aGlzIGlzIEdQSU8gSSB3b25kZXIgd2h5IGRvIG5v dCBxdWVyeSB0aGlzIGdwaW8gYnkgZW5jb2RlciBkaXJlY3RseSwKPiBydWxlcyBvZiBvd25lcnNo aXAgb2Ygc3VjaCBncGlvcyBzZWVtcyB0byBiZSBncmV5IGFyZWEsIHNvIGluIHN1Y2ggY2FzZQo+ IEkgd291bGQgYWR2aXNlIHRvIHB1dCBpdCBpbiB0aGUgZHJpdmVyIHdobyByZWFsbHkgbmVlZHMg aXQuCj4gCj4gVGhpcyB3YXkgaXQgd2lsbCBiZSBtdWNoIHNpbXBsZXIuCgpGaXJzdCB0byBmYWxs LCBtdWx0aXBsZSBkcml2ZXJzIG1heSBuZWVkIHRvIGJlIGluZm9ybWVkIG9mIEhQRCBldmVudHMK Y29taW5nIGZyb20gYSBHUElPLCBzbyB3ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSBpdCBpbiBt dWx0aXBsZSBwbGFjZXMsCmFuZCBJIGRvbid0IHRoaW5rIHRoZSBHUElPIGZyYW1ld29yayBhbGxv d3MgYWNxdWlyaW5nIGEgR1BJTyBtdWx0aXBsZQp0aW1lcy4KClRoZW4sIHRoZSBHUElPIGlzIGRl c2NyaWJlZCBpbiBEVCwgYW5kIERUIGRvZXNuJ3QgY2FyZSBhYm91dCB3aGljaApkcml2ZXIgbmVl ZHMgSFBEIGV2ZW50cy4gRFQgc3BlY2lmaWVzIHRoZSBHUElPIGluIHRoZSBub2RlIG9mIHRoZSBk ZXZpY2UKaXQgYmVsb25ncyB0bywgdGhpcyBpcyBkZWZpbmVkIGluIERUIGJpbmRpbmdzLCBhbmQg bXVzdCBiZSB0aGUgc2FtZSBvbgphbGwgYm9hcmRzLCB3aGlsZSBkZXBlbmRpbmcgb24gdGhlIGJv YXJkIGRpZmZlcmVudCBkZXZpY2VzIG1heSBuZWVkIHRvCmJlIGluZm9ybWVkIG9mIEhQRCBldmVu dHMuCgpGb3IgdGhvc2UgdHdvIHJlYXNvbnMgSFBEIEdQSU8gaGFuZGxpbmcgYW5kIGNvbnN1bXB0 aW9uIG9mIEhQRCBldmVudHMKY2FuJ3QgYWx3YXlzIGJlIGdyb3VwZWQgaW4gdGhlIHNhbWUgZHJp dmVyLgoKPiBHb2luZyBiYWNrIHRvIEhQRCBub3RpZmljYXRpb25zLCBhcyBJIHNhaWQgZWFybGll ciBicm9hZGNhc3RpbmcgSFBECj4gbm90aWZpY2F0aW9uIHVuY29uZGl0aW9uYWxseSB0byBldmVy eSBtZW1iZXIgb2YgdGhlIGNoYWluIHdpdGggaG9wZSB0aGF0Cj4gdGhlIG1lbWJlciB3aWxsIGJl IGFibGUgdG8gZmlsdGVyLW91dCB1bmRlc2lyZWQgbm90aWZpY2F0aW9uIHNlZW1zIHRvIG1lCj4g aW5jb3JyZWN0IC0gbWF5YmUgaXQgY2FuIHNvbHZlIHNvbWUgcHJvYmxlbXMgYnV0IGlzIG5vdCBm bGV4aWJsZSBlbm91Z2gKPiB0byBiZSB1c2FibGUgaW4gb3RoZXIgc2NlbmFyaW9zLgo+IAo+IElm IG15IGFyZ3VtZW50cyBkbyBub3QgY29udmluY2UgeW91IHBsZWFzZSBqdXN0IGNvbnRpbnVlIHdp dGggeW91cgo+IGlkZWFzLCB3ZSBjYW4gYWx3YXlzIGFkZCBOT19IUERfQlJPQURDQVNUIHNvbWV3 aGVyZSA6KQoKOi0pIEkgd291bGQgbGlrZSB0byB1bmRlcnN0YW5kIHRoZSBwcm9ibGVtcyB5b3Un cmUgcmVmZXJyaW5nIHRvIHRob3VnaCwKYW5kIGhvcGVmdWxseSBzb2x2ZSB0aGVtLiBJZiB5b3Ug Y291bGQgZGVzY3JpYmUgb25lIG9mIHRoZSBzY2VuYXJpb3MKd2hlcmUgeW91IHRoaW5rIHRoaXMg bWVjaGFuaXNtIHdvdWxkbid0IGJlIHVzYWJsZSB0aGF0IHdvdWxkIGhlbHAuIEluCnRoZSBtZWFu dGltZSBJIHdpbGwgcG9zdCBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBzZXJpZXMgd2l0aCB0aGVzZQpv cGVyYXRpb25zIGtlcHQgYXMtaXMgdG8gZ2V0IHRoZSByZXN0IG9mIHRoZSBwYXRjaGVzIHJldmll d2VkLgoKPiA+Pj4+Pj4+IFlvdSBzZWVtIHRvIGhhdmUgc29tZSBvdGhlciBpZGVhIGhlcmUuCj4g Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211dGV4 KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwo ZHJtX2JyaWRnZV9ocGRfbm90aWZ5KTsKPiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+ ICAjaWZkZWYgQ09ORklHX09GCj4gPj4+Pj4+Pj4+Pj4+PiAgLyoqCj4gPj4+Pj4+Pj4+Pj4+PiAg ICogb2ZfZHJtX2ZpbmRfYnJpZGdlIC0gZmluZCB0aGUgYnJpZGdlIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGRldmljZSBub2RlIGluCj4gPj4+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX2JyaWRnZS5oIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPj4+Pj4+Pj4+Pj4+ PiBpbmRleCAwOGRjMTVmOTNkZWQuLmI5NDQ1YWE1YjFlZiAxMDA2NDQKPiA+Pj4+Pj4+Pj4+Pj4+ IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ID4+Pj4+Pj4+Pj4+Pj4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPj4+Pj4+Pj4+Pj4+PiBAQCAtMjMsOCArMjMsOSBAQAo+ ID4+Pj4+Pj4+Pj4+Pj4gICNpZm5kZWYgX19EUk1fQlJJREdFX0hfXwo+ID4+Pj4+Pj4+Pj4+Pj4g ICNkZWZpbmUgX19EUk1fQlJJREdFX0hfXwo+ID4+Pj4+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+Pj4+ Pj4gLSNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gPj4+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGxp bnV4L2N0eXBlLmg+Cj4gPj4+Pj4+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiA+ Pj4+Pj4+Pj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KPiA+Pj4+Pj4+Pj4+Pj4+ICAj aW5jbHVkZSA8ZHJtL2RybV9tb2RlX29iamVjdC5oPgo+ID4+Pj4+Pj4+Pj4+Pj4gICNpbmNsdWRl IDxkcm0vZHJtX21vZGVzLmg+Cj4gPj4+Pj4+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4+Pj4+PiBAQCAt MzM0LDYgKzMzNSwxMTAgQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgewo+ID4+Pj4+Pj4+Pj4+ Pj4gIAkgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICAJdm9pZCAoKmF0b21pY19wb3N0X2Rpc2FibGUpKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4+Pj4+Pj4+PiAgCQkJCSAgICBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+ Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQGRldGVjdDoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJ ICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQ2hlY2sgaWYgYW55dGhpbmcgaXMgYXR0YWNoZWQgdG8g dGhlIGJyaWRnZSBvdXRwdXQuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiAr CSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGlmIG5vdCBpbXBsZW1lbnRlZCB0aGUgYnJp ZGdlIHdpbGwgYmUKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogY29uc2lkZXJlZCBhcyBhbHdheXMgaGF2 aW5nIGEgY29tcG9uZW50IGF0dGFjaGVkIHRvIGl0cyBvdXRwdXQuCj4gPj4+Pj4+Pj4+Pj4+PiAr CSAqIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgdGhpcyBjYWxsYmFjayBzaGFsbCBzZXQgdGhlCj4g Pj4+Pj4+Pj4+Pj4+PiArCSAqIERSTV9CUklER0VfT1BfREVURUNUIGZsYWcgaW4gdGhlaXIgJmRy bV9icmlkZ2UtPm9wcy4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICog UkVUVVJOUzoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogZHJtX2Nv bm5lY3Rvcl9zdGF0dXMgaW5kaWNhdGluZyB0aGUgYnJpZGdlIG91dHB1dCBzdGF0dXMuCj4gPj4+ Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gKwllbnVtIGRybV9jb25uZWN0b3Jfc3Rh dHVzICgqZGV0ZWN0KShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+Pj4+Pj4+Pj4+Pj4+ ICsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEBnZXRfbW9kZXM6 Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEZpbGwgYWxsIG1vZGVz IGN1cnJlbnRseSB2YWxpZCBmb3IgdGhlIHNpbmsgaW50byB0aGUgJmRybV9jb25uZWN0b3IKPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICogd2l0aCBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4gPj4+Pj4+Pj4+ Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIFRoZSBAZ2V0X21vZGVzIGNhbGxiYWNrIGlz IG1vc3RseSBpbnRlbmRlZCB0byBzdXBwb3J0IG5vbi1wcm9iYWJsZQo+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKiBkaXNwbGF5cyBzdWNoIGFzIG1hbnkgZml4ZWQgcGFuZWxzLiBCcmlkZ2VzIHRoYXQgc3Vw cG9ydCByZWFkaW5nCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEVESUQgc2hhbGwgbGVhdmUgQGdldF9t b2RlcyB1bmltcGxlbWVudGVkIGFuZCBpbXBsZW1lbnQgdGhlCj4gPj4+Pj4+Pj4+Pj4+PiArCSAq ICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfZWRpZCBjYWxsYmFjayBpbnN0ZWFkLgo+ID4+Pj4+Pj4+ Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFs LiBCcmlkZ2VzIHRoYXQgaW1wbGVtZW50IGl0IHNoYWxsIHNldCB0aGUKPiA+Pj4+Pj4+Pj4+Pj4+ ICsJICogRFJNX0JSSURHRV9PUF9NT0RFUyBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMu Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIFJFVFVSTlM6Cj4gPj4+ Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIFRoZSBudW1iZXIgb2YgbW9kZXMg YWRkZWQgYnkgY2FsbGluZyBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4gPj4+Pj4+Pj4+Pj4+PiAr CSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gKwlpbnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UsCj4gPj4+Pj4+Pj4+Pj4+PiArCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpOwo+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+ Pj4+Pj4+ICsJICogQGdldF9lZGlkOgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+ Pj4gKwkgKiBSZWFkIGFuZCBwYXJzZSB0aGUgRURJRCBkYXRhIG9mIHRoZSBjb25uZWN0ZWQgZGlz cGxheS4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogVGhlIEBnZXRf ZWRpZCBjYWxsYmFjayBpcyB0aGUgcHJlZmVycmVkIHdheSBvZiByZXBvcnRpbmcgbW9kZQo+ID4+ Pj4+Pj4+Pj4+Pj4gKwkgKiBpbmZvcm1hdGlvbiBmb3IgYSBkaXNwbGF5IGNvbm5lY3RlZCB0byB0 aGUgYnJpZGdlIG91dHB1dC4gQnJpZGdlcwo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGF0IHN1cHBv cnQgcmVhZGluZCBFRElEIHNoYWxsIGltcGxlbWVudCB0aGlzIGNhbGxiYWNrIGFuZCBsZWF2ZQo+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgQGdldF9tb2RlcyBjYWxsYmFjayB1bmltcGxlbWVudGVk Lgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgY2FsbGVyIG9m IHRoaXMgb3BlcmF0aW9uIHNoYWxsIGZpcnN0IHZlcmlmeSB0aGUgb3V0cHV0Cj4gPj4+Pj4+Pj4+ Pj4+PiArCSAqIGNvbm5lY3Rpb24gc3RhdHVzIGFuZCByZWZyYWluIGZyb20gcmVhZGluZyBFRElE IGZyb20gYSBkaXNjb25uZWN0ZWQKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogb3V0cHV0Lgo+ID4+Pj4+ Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlv bmFsLiBCcmlkZ2VzIHRoYXQgaW1wbGVtZW50IGl0IHNoYWxsIHNldCB0aGUKPiA+Pj4+Pj4+Pj4+ Pj4+ICsJICogRFJNX0JSSURHRV9PUF9FRElEIGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9w cy4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogUkVUVVJOUzoKPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQW4gZWRpZCBzdHJ1Y3R1cmUg bmV3bHkgYWxsb2NhdGVkIHdpdGgga21hbGxvYygpIChvciBzaW1pbGFyKSBvbgo+ID4+Pj4+Pj4+ Pj4+Pj4gKwkgKiBzdWNjZXNzLCBvciBOVUxMIG90aGVyd2lzZS4gVGhlIGNhbGxlciBpcyByZXNw b25zaWJsZSBmb3IgZnJlZWluZwo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgcmV0dXJuZWQgZWRp ZCBzdHJ1Y3R1cmUgd2l0aCBrZnJlZSgpLgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+ Pj4+Pj4+ICsJc3RydWN0IGVkaWQgKigqZ2V0X2VkaWQpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UsCj4gPj4+Pj4+Pj4+Pj4+PiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KTsKPiA+Pj4+Pj4+Pj4+Pj4gSXQgb3ZlcmxhcHMgd2l0aCBnZXRfbW9kZXMsIEkgZ3Vlc3MgcHJl c2VuY2Ugb2Ygb25lIG9wcyBzaG91bGQgZGlzYWxsb3cKPiA+Pj4+Pj4+Pj4+Pj4gcHJlc2VuY2Ug b2YgYW5vdGhlciBvbmU/Cj4gPj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+IEkgYW0gbm90IHJl YWxseSBjb252aW5jZWQgd2UgbmVlZCB0aGlzIG9wIGF0IGFsbCwgY2Fubm90IHdlIGp1c3QgYXNz aWduCj4gPj4+Pj4+Pj4+Pj4+IHNvbWUgaGVscGVyIGZ1bmN0aW9uIHRvIC5nZXRfbW9kZXMgY2Is IHdoaWNoIHdpbGwgZG8gdGhlIHNhbWU/Cj4gPj4+Pj4+Pj4+Pj4gUGxhbiBCKTogZGl0Y2ggLT5n ZXRfZWRpZCwgcmVxdWlyZSB0aGF0IHRoZSBkcml2ZXIgaGFzIC0+Z2V0X21vZGVzIGluIHRoYXQK PiA+Pj4+Pj4+Pj4+PiBjYXNlLCBhbmQgcmVxdWlyZSB0aGF0IGlmIGl0IGhhcyBhbiBlZGlkIGl0 IG11c3QgZmlsbCBvdXQgY29ubmVjdG9yLT5pbmZvCj4gPj4+Pj4+Pj4+Pj4gYW5kIGNvbm5lY3Rv ci0+ZWRpZCBjb3JyZWN0bHkuCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiBCdHcgaWYgYSBo cGQgaGFwcGVucywgd2hvJ3MgcmVzcG9uaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhlIGVkaWQvbW9k ZSBsaXN0Cj4gPj4+Pj4+Pj4+Pj4gaW4gdGhlIGNvbm5lY3RvciBpcyB1cC10by1kYXRlPyBXaXRo IHlvdXIgY3VycmVudCBjYWxsYmFjayBkZXNpZ24gdGhhdCdzCj4gPj4+Pj4+Pj4+Pj4gdXAgdG8g dGhlIGNhbGxiYWNrLCB3aGljaCBkb2Vzbid0IGZlZWwgZ3JlYXQuIE1heWJlICBkcm1fYnJpZGdl X2hwZF9ub3RpZnkKPiA+Pj4+Pj4+Pj4+PiBzaG91bGQgZ3VhcmFudGVlIHRoYXQgaXQnbGwgZmly c3Qgd2FsayB0aGUgY29ubmVjdG9ycyB0byB1cGRhdGUgc3RhdHVzIGFuZAo+ID4+Pj4+Pj4+Pj4+ IGVkaWQvbW9kZSBsaXN0IGZvciB0aGUgZmluYWwgZHJtX2Nvbm5lY3Rvci4gQW5kIHRoZW4gaW5z dGVhZCBvZiBqdXN0Cj4gPj4+Pj4+Pj4+Pj4gcGFzc2luZyB0aGUgc2ltcGxlICJzdGF0dXMiLCBp dCdsbCBwYXNzIHRoZSBjb25uZWN0b3IsIHdpdGggZXZlcnl0aGluZwo+ID4+Pj4+Pj4+Pj4+IGNv cnJlY3RseSB1cGRhdGVkLgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gT3RoZXJ3aXNlIGV2 ZXJ5b25lIGludGVyZXN0ZWQgaW4gdGhhdCBocGQgc2lnbmFsIHdpbGwgZ28gYW5kIHJlLWZldGNo IHRoZQo+ID4+Pj4+Pj4+Pj4+IGVkaWQsIHdoaWNoIGlzIG5vdCBzbyBhd2Vzb21lIDotKQo+ID4+ Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBAbG9zdF9ob3RwbHVnOgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBOb3RpZnkgdGhlIGJyaWRnZSBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24u Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sg aXMgb3B0aW9uYWwsIGl0IG1heSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzIHRoYXQKPiA+Pj4+ Pj4+Pj4+Pj4+ICsJICogbmVlZCB0byBiZSBub3RpZmllZCBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rp b24gZm9yIGludGVybmFsIHJlYXNvbnMuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIE9uZSB1c2UgY2Fz ZSBpcyB0byByZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgQ0VDIGNvbnRyb2xsZXJzIGZvcgo+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBIRE1JIGJyaWRnZXMuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ ID4+Pj4+Pj4+Pj4+Pj4gKwl2b2lkICgqbG9zdF9ob3RwbHVnKShzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlKTsKPiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+ Pj4+Pj4+PiArCSAqIEBocGRfZW5hYmxlOgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+ Pj4+Pj4gKwkgKiBFbmFibGUgaG90IHBsdWcgZGV0ZWN0aW9uLiBGcm9tIG5vdyBvbiB0aGUgYnJp ZGdlIHNoYWxsIGNhbGwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogZHJtX2JyaWRnZV9ocGRfbm90aWZ5 KCkgZWFjaCB0aW1lIGEgY2hhbmdlIGlzIGRldGVjdGVkIGluIHRoZSBvdXRwdXQKPiA+Pj4+Pj4+ Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMsIHVudGlsIGhvdCBwbHVnIGRldGVjdGlvbiBn ZXRzIGRpc2FibGVkIHdpdGgKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQGhwZF9kaXNhYmxlLgo+ID4+ Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9w dGlvbmFsIGFuZCBzaGFsbCBvbmx5IGJlIGltcGxlbWVudGVkIGJ5IGJyaWRnZXMKPiA+Pj4+Pj4+ Pj4+Pj4+ICsJICogdGhhdCBzdXBwb3J0IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBv bGxpbmcuIEJyaWRnZXMgdGhhdAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBpbXBsZW1lbnQgaXQgc2hh bGwgYWxzbyBpbXBsZW1lbnQgdGhlIEBocGRfZGlzYWJsZSBjYWxsYmFjayBhbmQgc2V0Cj4gPj4+ Pj4+Pj4+Pj4+PiArCSAqIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGluIHRoZWlyICZkcm1f YnJpZGdlLT5vcHMuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gKwl2b2lk ICgqaHBkX2VuYWJsZSkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+ PiArCj4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX2Rpc2Fi bGU6Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIERpc2FibGUgaG90 IHBsdWcgZGV0ZWN0aW9uLiBPbmNlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnJpZGdlCj4g Pj4+Pj4+Pj4+Pj4+PiArCSAqIHNoYWxsIG5vdCBjYWxsIGRybV9icmlkZ2VfaHBkX25vdGlmeSgp IHdoZW4gYSBjaGFuZ2UgaW4gdGhlIG91dHB1dAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBjb25uZWN0 aW9uIHN0YXR1cyBvY2N1cnMuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+PiAr CSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwgYW5kIHNoYWxsIG9ubHkgYmUgaW1wbGVtZW50 ZWQgYnkgYnJpZGdlcwo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGF0IHN1cHBvcnQgaG90LXBsdWcg bm90aWZpY2F0aW9uIHdpdGhvdXQgcG9sbGluZy4gQnJpZGdlcyB0aGF0Cj4gPj4+Pj4+Pj4+Pj4+ PiArCSAqIGltcGxlbWVudCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhwZF9lbmFibGUg Y2FsbGJhY2sgYW5kIHNldAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgRFJNX0JSSURHRV9PUF9I UEQgZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8K PiA+Pj4+Pj4+Pj4+Pj4+ICsJdm9pZCAoKmhwZF9kaXNhYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlKTsKPiA+Pj4+Pj4+Pj4+Pj4+ICB9Owo+ID4+Pj4+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+ Pj4+Pj4gIC8qKgo+ID4+Pj4+Pj4+Pj4+Pj4gQEAgLTM3Miw2ICs0NzcsMzggQEAgc3RydWN0IGRy bV9icmlkZ2VfdGltaW5ncyB7Cj4gPj4+Pj4+Pj4+Pj4+PiAgCWJvb2wgZHVhbF9saW5rOwo+ID4+ Pj4+Pj4+Pj4+Pj4gIH07Cj4gPj4+Pj4+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4+Pj4+PiArLyoqCj4g Pj4+Pj4+Pj4+Pj4+PiArICogZW51bSBkcm1fYnJpZGdlX29wcyAtIEJpdG1hc2sgb2Ygb3BlcmF0 aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZQo+ID4+Pj4+Pj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+ Pj4+Pj4+Pj4gK2VudW0gZHJtX2JyaWRnZV9vcHMgewo+ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfREVURUNUOiBUaGUgYnJpZGdlIGNhbiBk ZXRlY3QgZGlzcGxheXMgY29ubmVjdGVkIHRvCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIGl0cyBvdXRw dXQuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsIGltcGxlbWVudCB0aGUKPiA+Pj4+ Pj4+Pj4+Pj4+ICsJICogJmRybV9icmlkZ2VfZnVuY3MtPmRldGVjdCBjYWxsYmFjay4KPiA+Pj4+ Pj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfREVURUNUID0g QklUKDApLAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQERSTV9C UklER0VfT1BfRURJRDogVGhlIGJyaWRnZSBjYW4gcmV0cmlldmUgdGhlIEVESUQgb2YgdGhlIGRp c3BsYXkKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGVkIHRvIGl0cyBvdXRwdXQuIEJyaWRn ZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsIGltcGxlbWVudAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkg KiB0aGUgJmRybV9icmlkZ2VfZnVuY3MtPmdldF9lZGlkIGNhbGxiYWNrLgo+ID4+Pj4+Pj4+Pj4+ Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4+Pj4+ICsJRFJNX0JSSURHRV9PUF9FRElEID0gQklUKDEpLAo+ ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1Bf SFBEOiBUaGUgYnJpZGdlIGNhbiBkZXRlY3QgaG90LXBsdWcgYW5kIGhvdC11bnBsdWcKPiA+Pj4+ Pj4+Pj4+Pj4+ICsJICogd2l0aG91dCByZXF1aXJpbmcgcG9sbGluZy4gQnJpZGdlcyB0aGF0IHNl dCB0aGlzIGZsYWcgc2hhbGwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogaW1wbGVtZW50IHRoZSAmZHJt X2JyaWRnZV9mdW5jcy0+aHBkX2VuYWJsZSBhbmQKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogJmRybV9i cmlkZ2VfZnVuY3MtPmRpc2FibGVfaHBkX2NiIGNhbGxiYWNrcy4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJ ICovCj4gPj4+Pj4+Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfSFBEID0gQklUKDIpLAo+ID4+Pj4+ Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfTU9ERVM6 IFRoZSBicmlkZ2UgY2FuIHJldHJpZXZpbmcgdGhlIG1vZGVzIHN1cHBvcnRlZAo+ID4+Pj4+Pj4+ Pj4+Pj4gKwkgKiBieSB0aGUgZGlzcGxheSBhdCBpdHMgb3V0cHV0LiBUaGlzIGRvZXMgbm90IGlu Y2x1ZGUgcmVhZGluZCBFRElECj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIHdoaWNoIGlzIHNlcGFyYXRl bHkgY292ZXJlZCBieSBARFJNX0JSSURHRV9PUF9FRElELiBCcmlkZ2VzIHRoYXQgc2V0Cj4gPj4+ Pj4+Pj4+Pj4+PiArCSAqIHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQgdGhlICZkcm1fYnJpZGdl X2Z1bmNzLT5nZXRfbW9kZXMgY2FsbGJhY2suCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+ Pj4+Pj4+Pj4gKwlEUk1fQlJJREdFX09QX01PREVTID0gQklUKDMpLAo+ID4+Pj4+Pj4+Pj4+Pj4g K307Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+PiAgLyoqCj4gPj4+Pj4+Pj4+Pj4+ PiAgICogc3RydWN0IGRybV9icmlkZ2UgLSBjZW50cmFsIERSTSBicmlkZ2UgY29udHJvbCBzdHJ1 Y3R1cmUKPiA+Pj4+Pj4+Pj4+Pj4+ICAgKi8KPiA+Pj4+Pj4+Pj4+Pj4+IEBAIC0zOTgsNiArNTM1 LDI5IEBAIHN0cnVjdCBkcm1fYnJpZGdlIHsKPiA+Pj4+Pj4+Pj4+Pj4+ICAJY29uc3Qgc3RydWN0 IGRybV9icmlkZ2VfZnVuY3MgKmZ1bmNzOwo+ID4+Pj4+Pj4+Pj4+Pj4gIAkvKiogQGRyaXZlcl9w cml2YXRlOiBwb2ludGVyIHRvIHRoZSBicmlkZ2UgZHJpdmVyJ3MgaW50ZXJuYWwgY29udGV4dCAq Lwo+ID4+Pj4+Pj4+Pj4+Pj4gIAl2b2lkICpkcml2ZXJfcHJpdmF0ZTsKPiA+Pj4+Pj4+Pj4+Pj4+ ICsJLyoqIEBvcHM6IGJpdG1hc2sgb2Ygb3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRn ZSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gKwllbnVtIGRybV9icmlkZ2Vfb3BzIG9wczsKPiA+Pj4+Pj4+ Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEB0eXBlOiBUeXBlIG9mIHRoZSBjb25u ZWN0aW9uIGF0IHRoZSBicmlkZ2Ugb3V0cHV0Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIChEUk1fTU9E RV9DT05ORUNUT1JfKikuIEZvciBicmlkZ2VzIGF0IHRoZSBlbmQgb2YgdGhpcyBjaGFpbiB0aGlz Cj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgY29ubmVjdGVkIGRp c3BsYXkuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gKwlpbnQgdHlwZTsK PiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoqIHByaXZhdGU6ICovCj4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX211dGV4OiBQcm90ZWN0cyB0aGUgQGhwZF9jYiBhbmQg QGhwZF9kYXRhIGZpZWxkcy4KPiA+Pj4+Pj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+Pj4+PiAr CXN0cnVjdCBtdXRleCBocGRfbXV0ZXg7Cj4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+ Pj4+Pj4gKwkgKiBAaHBkX2NiOiBIb3QgcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2ssIHJlZ2lzdGVy ZWQgd2l0aAo+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUoKS4KPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+Pj4+PiArCXZvaWQgKCpocGRfY2IpKHZvaWQg KmRhdGEsIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzKTsKPiA+Pj4+Pj4+Pj4+Pj4+ ICsJLyoqCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEBocGRfZGF0YTogUHJpdmF0ZSBkYXRhIHBhc3Nl ZCB0byB0aGUgSG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPj4+Pj4+Pj4+Pj4+PiArCSAq IEBocGRfY2IuCj4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4gKwl2b2lkICpo cGRfZGF0YTsKPiA+Pj4+Pj4+Pj4+Pj4+ICB9Owo+ID4+Pj4+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+ Pj4+Pj4gIHZvaWQgZHJtX2JyaWRnZV9hZGQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4g Pj4+Pj4+Pj4+Pj4+PiBAQCAtNDI4LDYgKzU4OCwxNCBAQCB2b2lkIGRybV9hdG9taWNfYnJpZGdl X3ByZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+Pj4+Pj4+ICB2 b2lkIGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ ID4+Pj4+Pj4+Pj4+Pj4gIAkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7 Cj4gPj4+Pj4+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9l bmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICB2 b2lkICgqY2IpKHZvaWQgKmRhdGEsCj4gPj4+Pj4+Pj4+Pj4+PiArCQkJCSAgICAgIGVudW0gZHJt X2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzKSwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICB2b2lkICpk YXRhKTsKPiA+Pj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hw ZF9ub3RpZnkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+Pj4+Pj4+ICsJCQkg ICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cyk7Cj4gPj4+Pj4+Pj4+Pj4+PiArCj4g Pj4+Pj4+Pj4+Pj4+PiAgI2lmZGVmIENPTkZJR19EUk1fUEFORUxfQlJJREdFCj4gPj4+Pj4+Pj4+ Pj4+PiAgc3RydWN0IGRybV9icmlkZ2UgKmRybV9wYW5lbF9icmlkZ2VfYWRkKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsLAo+ID4+Pj4+Pj4+Pj4+Pj4gIAkJCQkJdTMyIGNvbm5lY3Rvcl90eXBlKTsK Ci0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWw=