From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH 09/60] drm/bridge: Add connector-related bridge operations and data Date: Wed, 14 Aug 2019 08:23:12 +0200 Message-ID: References: <1d48919c-e876-152c-0f05-64eb4c62fcaf@samsung.com> <20190711131816.GM15868@phenom.ffwll.local> <6bbb03e6-0228-a3ea-f1bb-8ed6e52114d7@samsung.com> <20190711155035.GO15868@phenom.ffwll.local> <7797e98a-9587-b501-9869-9393b6fc6bd2@samsung.com> <20190716090039.GW15868@phenom.ffwll.local> <9c21691c-ffd1-43ed-13f8-121271ff053e@samsung.com> <20190808193214.GA6055@pendragon.ideasonboard.com> <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 mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id 23D336E262 for ; Wed, 14 Aug 2019 06:23:18 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20190814062316euoutp028f7123206b3ef71167754d87322ffd12~6teCB_T4c0105101051euoutp02j for ; Wed, 14 Aug 2019 06:23:16 +0000 (GMT) In-Reply-To: <20190810224313.GG4788@pendragon.ideasonboard.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Sean Paul List-Id: dri-devel@lists.freedesktop.org SGkgTGF1cmVudCwKClNvcnJ5IGZvciBsYXRlIHJlc3BvbnNlLgoKCk9uIDExLjA4LjIwMTkgMDA6 NDMsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gSGkgQW5kcnplaiwKPgo+IE9uIEZyaSwgQXVn IDA5LCAyMDE5IGF0IDAxOjU1OjUzUE0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4+IE9u IDA4LjA4LjIwMTkgMjE6MzIsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4+PiBPbiBUdWUsIEp1 bCAxNiwgMjAxOSBhdCAwMzo1NzoyMVBNICswMjAwLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+Pj4+ IE9uIDE2LjA3LjIwMTkgMTE6MDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+IE9uIEZyaSwg SnVsIDEyLCAyMDE5IGF0IDExOjAxOjM4QU0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4+ Pj4+PiBPbiAxMS4wNy4yMDE5IDE3OjUwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+Pj4+IE9u IFRodSwgSnVsIDExLCAyMDE5IGF0IDA1OjEyOjI2UE0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3Jv dGU6Cj4+Pj4+Pj4+IE9uIDExLjA3LjIwMTkgMTU6MTgsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+ Pj4+Pj4+PiBPbiBUaHUsIEp1bCAxMSwgMjAxOSBhdCAwMjo0MTowMVBNICswMjAwLCBBbmRyemVq IEhhamRhIHdyb3RlOgo+Pj4+Pj4+Pj4+IE9uIDExLjA3LjIwMTkgMDk6MzUsIERhbmllbCBWZXR0 ZXIgd3JvdGU6Cj4+Pj4+Pj4+Pj4+IE9uIFdlZCwgSnVsIDEwLCAyMDE5IGF0IDAyOjEyOjE0UE0g KzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4+Pj4+Pj4+Pj4+PiBIaSBMYXVyZW50LAo+Pj4+ Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+IEkgbGlrZSB0aGUgYXBwcm9hY2gsIGN1cnJlbnQgcHJhY3Rp Y2Ugd2hlbiBhbG1vc3QgZXZlcnkgYnJpZGdlIHNob3VsZAo+Pj4+Pj4+Pj4+Pj4gb3B0aW9uYWxs eSBpbXBsZW1lbnQgY29ubmVjdG9yLCBvciBhbHRlcm5hdGl2ZWx5IGRvd25zdHJlYW0gYnJpZGdl IG9yCj4+Pj4+Pj4+Pj4+PiBwYW5lbCBpcyB2ZXJ5IHBhaW5mdWwuCj4+Pj4+Pj4+Pj4+IFllYWgg SSB0aGluayB0aGlzIGxvb2tzIG1vc3RseSByZWFzb25hYmxlLiBTb21lIGFwaSBkZXNpZ24gY29t bWVudHMgb24gdG9wCj4+Pj4+Pj4+Pj4+IG9mIEFuZHJ6ZWonLCB3aXRoIHRoZSBmYWlyIHdhcm5p bmcgdGhhdCBJIGRpZG4ndCBib3RoZXIgdG8gcmVhZCB1cCBvbiBob3cKPj4+Pj4+Pj4+Pj4gaXQn cyBhbGwgdXNlZCBpbiB0aGUgZW5kLiBJIHByb2JhYmx5IHNob3VsZCBnbyBhbmQgZG8gdGhhdCwg YXQgbGVhc3QgdG8KPj4+Pj4+Pj4+Pj4gZ2V0IGEgZmVlbGluZyBmb3Igd2hhdCB5b3VyIGhwZF9j YiB1c3VhbGx5IGRvZXMuCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiBNb3JlIGNvbW1lbnRzIGlu bGluZWQuCj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4gT24gMDcuMDcuMjAxOSAyMDoxOCwgTGF1 cmVudCBQaW5jaGFydCB3cm90ZToKPj4+Pj4+Pj4+Pj4+PiBUbyBzdXBwb3J0IGltcGxlbWVudGF0 aW9uIG9mIERSTSBjb25uZWN0b3JzIG9uIHRvcCBvZiBEUk0gYnJpZGdlcwo+Pj4+Pj4+Pj4+Pj4+ IGluc3RlYWQgb2YgYnkgYnJpZGdlcywgdGhlIGRybV9icmlkZ2UgbmVlZHMgdG8gZXhwb3NlIG5l dyBvcGVyYXRpb25zIGFuZAo+Pj4+Pj4+Pj4+Pj4+IGRhdGE6Cj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+ Pj4+Pj4+PiAtIE91dHB1dCBkZXRlY3Rpb24sIGhvdC1wbHVnIG5vdGlmaWNhdGlvbiwgbW9kZSBy ZXRyaWV2YWwgYW5kIEVESUQKPj4+Pj4+Pj4+Pj4+PiAgIHJldHJpZXZhbCBvcGVyYXRpb25zCj4+ Pj4+Pj4+Pj4+Pj4gLSBCaXRtYXNrIG9mIHN1cHBvcnRlZCBvcGVyYXRpb25zCj4+Pj4+Pj4+Pj4+ PiBXaHkgZG8gd2UgbmVlZCB0aGVzZSBiaXRtYXNrIGF0IGFsbD8gV2h5IGNhbm5vdCB3ZSByZWx5 IG9uIHByZXNlbmNlIG9mCj4+Pj4+Pj4+Pj4+PiBvcGVyYXRpb24ncyBjYWxsYmFjaz8KPj4+Pj4+ Pj4+Pj4gWWVhaCBhbHNvIG5vdCBhIGh1Z2UgZmFuIG9mIHRoZXNlIGJpdG1hc2tzLiBTbWVsbHMg bGlrZQo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBEUklWRVJfR0VNfERSSVZFUl9NT0RFU0VULCBh bmQgSSBwZXJzb25hbGx5IHJlYWxseSBoYXRlIHRob3NlLiBFYXN5IHRvCj4+Pj4+Pj4+Pj4+IGFk ZCwgZ2VuZXJhbGx5IGdvb2QgZXhjdXNlIHRvIG5vdCBoYXZlIHRvIHRoaW5rIHRocm91Z2ggdGhl IGRlc2lnbiBiZXR3ZWVuCj4+Pj4+Pj4+Pj4+IGRpZmZlcmVudCBwYXJ0cyBvZiBkcml2ZXJzIC0g Imp1c3QiIGFkZCBhbm90aGVyIGZsYWcuCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gLSBCcmlk Z2Ugb3V0cHV0IHR5cGUKPj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+IEFkZCBhbmQgZG9jdW1l bnQgdGhlc2UuCj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+PiBUaHJlZSBuZXcgYnJpZGdlIGhl bHBlciBmdW5jdGlvbnMgYXJlIGFsc28gYWRkZWQgdG8gaGFuZGxlIGhvdCBwbHVnCj4+Pj4+Pj4+ Pj4+Pj4gbm90aWZpY2F0aW9uIGluIGEgd2F5IHRoYXQgaXMgYXMgdHJhbnNwYXJlbnQgYXMgcG9z c2libGUgZm9yIHRoZQo+Pj4+Pj4+Pj4+Pj4+IGJyaWRnZXMuCj4+Pj4+Pj4+Pj4+PiBEb2N1bWVu dGF0aW9uIG9mIG5ldyBvcHNlcyBkb2VzIG5vdCBleHBsYWluIGhvdyBpdCBzaG91bGQgY29vcGVy YXRlIHdpdGgKPj4+Pj4+Pj4+Pj4+IGJyaWRnZSBjaGFpbmluZywgSSBzdXBwb3NlIHRoZXkgc2hv dWxkIGJlIGNoYWluZWQgZXhwbGljaXRseSwgYW0gSQo+Pj4+Pj4+Pj4+Pj4gcmlnaHQ/IE1vcmUg Y29tbWVudHMgYWJvdXQgaXQgbGF0ZXIuCj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+IFNpZ25l ZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJk LmNvbT4KPj4+Pj4+Pj4+Pj4+PiAtLS0KPj4+Pj4+Pj4+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9icmlkZ2UuYyB8ICA5MiArKysrKysrKysrKysrKysrKysrCj4+Pj4+Pj4+Pj4+Pj4gIGluY2x1 ZGUvZHJtL2RybV9icmlkZ2UuaCAgICAgfCAxNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KPj4+Pj4+Pj4+Pj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRn ZS5jCj4+Pj4+Pj4+Pj4+Pj4gaW5kZXggNTE5NTc3ZjM2M2UzLi4zYzJhMjU1ZGY3YWYgMTAwNjQ0 Cj4+Pj4+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+Pj4+Pj4+ Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPj4+Pj4+Pj4+Pj4+PiBA QCAtNzAsNiArNzAsOCBAQCBzdGF0aWMgTElTVF9IRUFEKGJyaWRnZV9saXN0KTsKPj4+Pj4+Pj4+ Pj4+PiAgICovCj4+Pj4+Pj4+Pj4+Pj4gIHZvaWQgZHJtX2JyaWRnZV9hZGQoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSkKPj4+Pj4+Pj4+Pj4+PiAgewo+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfaW5p dCgmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+Pj4+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+Pj4+PiAgCW11 dGV4X2xvY2soJmJyaWRnZV9sb2NrKTsKPj4+Pj4+Pj4+Pj4+PiAgCWxpc3RfYWRkX3RhaWwoJmJy aWRnZS0+bGlzdCwgJmJyaWRnZV9saXN0KTsKPj4+Pj4+Pj4+Pj4+PiAgCW11dGV4X3VubG9jaygm YnJpZGdlX2xvY2spOwo+Pj4+Pj4+Pj4+Pj4+IEBAIC04Niw2ICs4OCw4IEBAIHZvaWQgZHJtX2Jy aWRnZV9yZW1vdmUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPj4+Pj4+Pj4+Pj4+PiAgCW11 dGV4X2xvY2soJmJyaWRnZV9sb2NrKTsKPj4+Pj4+Pj4+Pj4+PiAgCWxpc3RfZGVsX2luaXQoJmJy aWRnZS0+bGlzdCk7Cj4+Pj4+Pj4+Pj4+Pj4gIAltdXRleF91bmxvY2soJmJyaWRnZV9sb2NrKTsK Pj4+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+Pj4gKwltdXRleF9kZXN0cm95KCZicmlkZ2UtPmhw ZF9tdXRleCk7Cj4+Pj4+Pj4+Pj4+Pj4gIH0KPj4+Pj4+Pj4+Pj4+PiAgRVhQT1JUX1NZTUJPTChk cm1fYnJpZGdlX3JlbW92ZSk7Cj4+Pj4+Pj4+Pj4+Pj4gIAo+Pj4+Pj4+Pj4+Pj4+IEBAIC00NjMs NiArNDY3LDk0IEBAIHZvaWQgZHJtX2F0b21pY19icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJp ZGdlICpicmlkZ2UsCj4+Pj4+Pj4+Pj4+Pj4gIH0KPj4+Pj4+Pj4+Pj4+PiAgRVhQT1JUX1NZTUJP TChkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUpOwo+Pj4+Pj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4+Pj4+ PiArLyoqCj4+Pj4+Pj4+Pj4+Pj4gKyAqIGRybV9icmlkZ2VfaHBkX2VuYWJsZSAtIGVuYWJsZSBo b3QgcGx1ZyBkZXRlY3Rpb24gZm9yIHRoZSBicmlkZ2UKPj4+Pj4+Pj4+Pj4+PiArICogQGJyaWRn ZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4+Pj4+Pj4+Pj4+Pj4gKyAqIEBjYjogaG90LXBs dWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4+Pj4+Pj4+Pj4+Pj4gKyAqIEBkYXRhOiBkYXRhIHRvIGJl IHBhc3NlZCB0byB0aGUgaG90LXBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4+Pj4+Pj4+Pj4+Pj4g KyAqCj4+Pj4+Pj4+Pj4+Pj4gKyAqIENhbGwgJmRybV9icmlkZ2VfZnVuY3MuaHBkX2VuYWJsZSBh bmQgcmVnaXN0ZXIgdGhlIGdpdmVuIEBjYiBhbmQgQGRhdGEgYXMKPj4+Pj4+Pj4+Pj4+PiArICog aG90IHBsdWcgbm90aWZpY2F0aW9uIGNhbGxiYWNrLiBGcm9tIG5vdyBvbiB0aGUgQGNiIHdpbGwg YmUgY2FsbGVkIHdpdGgKPj4+Pj4+Pj4+Pj4+PiArICogQGRhdGEgd2hlbiBhbiBvdXRwdXQgc3Rh dHVzIGNoYW5nZSBpcyBkZXRlY3RlZCBieSB0aGUgYnJpZGdlLCB1bnRpbCBob3QgcGx1Zwo+Pj4+ Pj4+Pj4+Pj4+ICsgKiBub3RpZmljYXRpb24gZ2V0cyBkaXNhYmxlZCB3aXRoIGRybV9icmlkZ2Vf aHBkX2Rpc2FibGUoKS4KPj4+Pj4+Pj4+Pj4+PiArICoKPj4+Pj4+Pj4+Pj4+PiArICogSG90IHBs dWcgZGV0ZWN0aW9uIGlzIHN1cHBvcnRlZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQRCBm bGFnIGlzIHNldCBpbgo+Pj4+Pj4+Pj4+Pj4+ICsgKiBicmlkZ2UtPm9wcy4gVGhpcyBmdW5jdGlv biBzaGFsbCBub3QgYmUgY2FsbGVkIHdoZW4gdGhlIGZsYWcgaXMgbm90IHNldC4KPj4+Pj4+Pj4+ Pj4+PiArICoKPj4+Pj4+Pj4+Pj4+PiArICogT25seSBvbmUgaG90IHBsdWcgZGV0ZWN0aW9uIGNh bGxiYWNrIGNhbiBiZSByZWdpc3RlcmVkIGF0IGEgdGltZSwgaXQgaXMgYW4KPj4+Pj4+Pj4+Pj4+ PiArICogZXJyb3IgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gaG90IHBsdWcgZGV0ZWN0aW9u IGlzIGFscmVhZHkgZW5hYmxlZCBmb3IKPj4+Pj4+Pj4+Pj4+PiArICogdGhlIGJyaWRnZS4KPj4+ Pj4+Pj4+Pj4+PiArICovCj4+Pj4+Pj4+Pj4+PiBUbyBzaW1wbGlmeSBhcmNoaXRlY3R1cmUgbWF5 YmUgd291bGQgYmUgYmV0dGVyIHRvIGVuYWJsZSBocGQganVzdCBvbgo+Pj4+Pj4+Pj4+Pj4gYnJp ZGdlIGF0dGFjaDoKPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiBicmlkZ2UtPmhwZF9jYiA9IGNi Owo+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+IGJyaWRnZS0+aHBkX2RhdGEgPSBkYXRhOwo+Pj4+ Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+IHJldCA9IGRybV9icmlkZ2VfYXR0YWNoKC4uLik7Cj4+Pj4+ Pj4+Pj4+IFllYWggSSBsaWtlIHRoaXMgbW9yZS4gVGhlIG90aGVyIHByb2JsZW0gaGVyZSBpcywg d2hhdCBpZiB5b3UgbmVlZCBtb3JlCj4+Pj4+Pj4+Pj4+IHRoYW4gMSBjYWxsYmFjayByZWdpc3Rl cnMgb24gdGhlIHNhbWUgYnJpZGdlIGhkcCBzaWduYWw/Cj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+ PiBUaGlzIHdheSB3ZSBjb3VsZCBhdm9pZCBhZGRpbmcgbmV3IGNhbGxiYWNrcyBocGRfKGVuYWJs ZXxkaXNhYmxlKQo+Pj4+Pj4+Pj4+Pj4gd2l0aG91dCBiaWcgc2FjcmlmaWNlcy4KPj4+Pj4+Pj4+ Pj4+Cj4+Pj4+Pj4+Pj4+PiBPbmUgbW9yZSB0aGluZzogSFBEIGluIERpc3BsYXlQb3J0L0hETUkg YmVzaWRlIHNpZ25hbGxpbmcgcGx1Zy91bnBsdWcsCj4+Pj4+Pj4+Pj4+PiBub3RpZmllcyBhYm91 dCBzaW5rIHN0YXR1cyBjaGFuZ2UsIGhvdyBpdCB0cmFuc2xhdGVzIHRvIHRoaXMgY2I/Cj4+Pj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2VuYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlLAo+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICB2b2lkICgqY2IpKHZvaWQg KmRhdGEsCj4+Pj4+Pj4+Pj4+Pj4gKwkJCQkgICAgICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVz IHN0YXR1cyksCj4+Pj4+Pj4+Pj4+Pj4gKwkJCSAgIHZvaWQgKmRhdGEpCj4+Pj4+Pj4+Pj4+Pj4g K3sKPj4+Pj4+Pj4+Pj4+PiArCWlmICghYnJpZGdlIHx8ICFicmlkZ2UtPmZ1bmNzLT5ocGRfZW5h YmxlKQo+Pj4+Pj4+Pj4+Pj4+ICsJCXJldHVybjsKPj4+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+ Pj4gKwltdXRleF9sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4+Pj4+Pj4+Pj4+Pj4gKwo+Pj4+ Pj4+Pj4+Pj4+ICsJaWYgKFdBUk4oYnJpZGdlLT5ocGRfY2IsICJIb3QgcGx1ZyBkZXRlY3Rpb24g YWxyZWFkeSBlbmFibGVkXG4iKSkKPj4+Pj4+Pj4+Pj4+PiArCQlnb3RvIHVubG9jazsKPj4+Pj4+ Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmhwZF9jYiA9IGNiOwo+Pj4+Pj4+Pj4+ Pj4+ICsJYnJpZGdlLT5ocGRfZGF0YSA9IGRhdGE7Cj4+Pj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ Pj4+ICsJYnJpZGdlLT5mdW5jcy0+aHBkX2VuYWJsZShicmlkZ2UpOwo+Pj4+Pj4+Pj4+Pj4+ICsK Pj4+Pj4+Pj4+Pj4+PiArdW5sb2NrOgo+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfdW5sb2NrKCZicmlk Z2UtPmhwZF9tdXRleCk7Cj4+Pj4+Pj4+Pj4+Pj4gK30KPj4+Pj4+Pj4+Pj4+PiArRVhQT1JUX1NZ TUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfZW5hYmxlKTsKPj4+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+ Pj4+Pj4gKy8qKgo+Pj4+Pj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9kaXNhYmxlIC0gZGlz YWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24gZm9yIHRoZSBicmlkZ2UKPj4+Pj4+Pj4+Pj4+PiArICog QGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4+Pj4+Pj4+Pj4+Pj4gKyAqCj4+Pj4+ Pj4+Pj4+Pj4gKyAqIENhbGwgJmRybV9icmlkZ2VfZnVuY3MuaHBkX2Rpc2FibGUgYW5kIHVucmVn aXN0ZXIgdGhlIGhvdCBwbHVnIGRldGVjdGlvbgo+Pj4+Pj4+Pj4+Pj4+ICsgKiBjYWxsYmFjayBw cmV2aW91c2x5IHJlZ2lzdGVyZWQgd2l0aCBkcm1fYnJpZGdlX2hwZF9lbmFibGUoKS4gT25jZSB0 aGlzCj4+Pj4+Pj4+Pj4+Pj4gKyAqIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNhbGxiYWNrIHdpbGwg bm90IGJlIGNhbGxlZCBieSB0aGUgYnJpZGdlIHdoZW4gYW4KPj4+Pj4+Pj4+Pj4+PiArICogb3V0 cHV0IHN0YXR1cyBjaGFuZ2Ugb2NjdXJzLgo+Pj4+Pj4+Pj4+Pj4+ICsgKgo+Pj4+Pj4+Pj4+Pj4+ ICsgKiBIb3QgcGx1ZyBkZXRlY3Rpb24gaXMgc3VwcG9ydGVkIG9ubHkgaWYgdGhlIERSTV9CUklE R0VfT1BfSFBEIGZsYWcgaXMgc2V0IGluCj4+Pj4+Pj4+Pj4+Pj4gKyAqIGJyaWRnZS0+b3BzLiBU aGlzIGZ1bmN0aW9uIHNoYWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB0aGUgZmxhZyBpcyBub3Qgc2V0 Lgo+Pj4+Pj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9k aXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+Pj4+Pj4+Pj4+Pj4gK3sKPj4+Pj4+ Pj4+Pj4+PiArCWlmICghYnJpZGdlIHx8ICFicmlkZ2UtPmZ1bmNzLT5ocGRfZGlzYWJsZSkKPj4+ Pj4+Pj4+Pj4+PiArCQlyZXR1cm47Cj4+Pj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+Pj4+ICsJbXV0 ZXhfbG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+Pj4+Pj4+Pj4+Pj4+ICsJYnJpZGdlLT5mdW5j cy0+aHBkX2Rpc2FibGUoYnJpZGdlKTsKPj4+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+Pj4gKwli cmlkZ2UtPmhwZF9jYiA9IE5VTEw7Cj4+Pj4+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmhwZF9kYXRhID0g TlVMTDsKPj4+Pj4+Pj4+Pj4+PiArCW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ Pj4+Pj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9icmlk Z2VfaHBkX2Rpc2FibGUpOwo+Pj4+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+Pj4+PiArLyoqCj4+Pj4+ Pj4+Pj4+Pj4gKyAqIGRybV9icmlkZ2VfaHBkX25vdGlmeSAtIG5vdGlmeSBob3QgcGx1ZyBkZXRl Y3Rpb24gZXZlbnRzCj4+Pj4+Pj4+Pj4+Pj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0 cnVjdHVyZQo+Pj4+Pj4+Pj4+Pj4+ICsgKiBAc3RhdHVzOiBvdXRwdXQgY29ubmVjdGlvbiBzdGF0 dXMKPj4+Pj4+Pj4+Pj4+PiArICoKPj4+Pj4+Pj4+Pj4+PiArICogQnJpZGdlIGRyaXZlcnMgc2hh bGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHJlcG9ydCBob3QgcGx1ZyBldmVudHMgd2hlbiB0aGV5 Cj4+Pj4+Pj4+Pj4+Pj4gKyAqIGRldGVjdCBhIGNoYW5nZSBpbiB0aGUgb3V0cHV0IHN0YXR1cywg d2hlbiBob3QgcGx1ZyBkZXRlY3Rpb24gaGFzIGJlZW4KPj4+Pj4+Pj4+Pj4+PiArICogZW5hYmxl ZCBieSB0aGUgJmRybV9icmlkZ2VfZnVuY3MuaHBkX2VuYWJsZSBjYWxsYmFjay4KPj4+Pj4+Pj4+ Pj4+PiArICoKPj4+Pj4+Pj4+Pj4+PiArICogVGhpcyBmdW5jdGlvbiBzaGFsbCBiZSBjYWxsZWQg aW4gYSBjb250ZXh0IHRoYXQgY2FuIHNsZWVwLgo+Pj4+Pj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4+ Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSwKPj4+Pj4+Pj4+Pj4+PiArCQkJICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMp Cj4+Pj4+Pj4+Pj4+Pj4gK3sKPj4+Pj4+Pj4+Pj4+PiArCW11dGV4X2xvY2soJmJyaWRnZS0+aHBk X211dGV4KTsKPj4+Pj4+Pj4+Pj4+PiArCWlmIChicmlkZ2UtPmhwZF9jYikKPj4+Pj4+Pj4+Pj4+ PiArCQlicmlkZ2UtPmhwZF9jYihicmlkZ2UtPmhwZF9kYXRhLCBzdGF0dXMpOwo+Pj4+Pj4+Pj4+ PiBTbyB0aGlzIGlzbid0IHF1aXRlIHdoYXQgSSBoYWQgaW4gbWluZC4gSW5zdGVhZCBzb21ldGhp bmcgbGlrZSB0aGlzOgo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiAJLyogaXRlcmF0ZXMgb3ZlciBh bGwgYnJpZGdlcyBpbiB0aGUgY2hhaW4gY29udGFpbmluZyBAYnJpZGdlICovCj4+Pj4+Pj4+Pj4+ IAlmb3JfZWFjaF9icmlkZ2UodG1wX2JyaWRnZSwgYnJpZGdlKSB7Cj4+Pj4+Pj4+Pj4+IAkJaWYg KHRtcF9icmlkZ2UgPT0gYnJpZGdlKQo+Pj4+Pj4+Pj4+PiAJCQljb250aW51ZTsKPj4+Pj4+Pj4+ Pj4gCQlpZiAoYnJpZGdlLT5ocGRfbm90aWZ5KTsKPj4+Pj4+Pj4+Pj4gCQkJYnJpZGdlLT5ocGRf bm90aWZ5KHRtcF9icmlkZ2UsIGJyaWRnZSwgc3RhdHVzKTsKPj4+Pj4+Pj4+Pj4gCX0KPj4+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+Pj4gCWVuY29kZXIgPSBlbmNvZGVyX2Zvcl9icmlkZ2UoYnJpZGdlKTsK Pj4+Pj4+Pj4+Pj4gCWlmIChlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3Rp ZnkpCj4+Pj4+Pj4+Pj4+IAkJZW5jb2Rlci0+aGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90 aWZ5KGVuY29kZXIsIGJyaWRnZSwgc3RhdHVzKTsKPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gCWRl diA9IGJyaWRnZS0+ZGV2Cj4+Pj4+Pj4+Pj4+IAlpZiAoZGV2LT5tb2RlX2NvbmZpZy5oZWxwZXJf cHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkpCj4+Pj4+Pj4+Pj4+IAkJZGV2LT5tb2RlX2NvbmZp Zy5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoZGV2LCBicmlkZ2UsIHN0YXR1cykK Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gTm8gcmVnaXN0ZXIgY2FsbGJhY2sgbmVlZGVkLCBubyBs b2NraW5nIG5lZWRlZCwgZXZlcnlvbmUgZ2V0cyBleGFjdGx5IHRoZQo+Pj4+Pj4+Pj4+PiBocGQg dGhleSB3YW50L25lZWQuCj4+Pj4+Pj4+Pj4gQXMgSSB1bmRlcnN0YW5kIHlvdSB3YW50IHRvIG5v dGlmeSBldmVyeSBtZW1iZXIgb2YgdGhlIHBpcGVsaW5lLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4g SSB0aGluayBpdCBzaG91bGQgYmUgZW5vdWdoIHRvIG5vdGlmeSBvbmx5IHRoZSBzb3VyY2UsIGFu ZCB0aGVuIHNvdXJjZQo+Pj4+Pj4+Pj4+IHNob3VsZCBkZWNpZGUgaWYvd2hlbiB0aGUgaHBkIHNo b3VsZCBiZSBwcm9wYWdhdGVkIHVwc3RyZWFtLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gSXQgbG9v a3MgbW9yZSBnZW5lcmljIGZvciBtZS4KPj4+Pj4+Pj4+IEknbSBub3QgcGFyc2luZyAuLi4gZG8g eW91IHRoaW5rIG15IGlkZWEgaXMgbW9yZSBnZW5lcmljIGFuZCB1c2VmdWwsIG9yCj4+Pj4+Pj4+ PiB0aGUgb25lIGZyb20gTGF1cmVudD8gS2luZGEgY29uZnVzZWQgaGVyZS4KPj4+Pj4+Pj4gUmVn YXJkaW5nIGdlbmVyYWwgaWRlYToKPj4+Pj4+Pj4KPj4+Pj4+Pj4gMS4gTGF1cmVudCdzIGFwcHJv YWNoIGlzIHRvIG5vdGlmeSBvbmx5IGNvbnN1bWVyLCBJIGd1ZXNzIHVzdWFsbHkgdmlkZW8KPj4+ Pj4+Pj4gc291cmNlLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAyLiBZb3VyIGlzIHRvIG5vdGlmeSBhbGwg b3RoZXIgYnJpZGdlcyBhbmQgZW5jb2Rlci4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gQW5kIEkgcHJlZmVy IDFzdCBhcHByb2FjaCwgd2h5Ogo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAtIHRoZSBzb3VyY2UgY2FuIGRl Y2lkZSBpZi93aGVuIGFuZCB0byB3aG8gcHJvcGFnYXRlIHRoZSBzaWduYWwsCj4+Pj4+Pj4+Cj4+ Pj4+Pj4+IC0gaXMgbW9yZSBnZW5lcmljLCBmb3IgZXhhbXBsZSBpZiBicmlkZ2Ugc2VuZCBzaWdu YWwgdG8gdHdvCj4+Pj4+Pj4+IG1vbml0b3JzL3BhbmVscywgaXQgY2FuIGRlbGF5IGhwZCBwcm9w YWdhdGlvbiB0aWxsIGJvdGggc2lua3MgYXJlIHByZXNlbnQsCj4+Pj4+Pj4gV2l0aCBMYXVyZW50 J3MgYXBwcm9hY2ggdGhlIGJyaWRnZSBjYW5ub3Qgc2VuZCB0aGUgaHBkIHRvIG1vcmUgdGhhbiBv bmUKPj4+Pj4+PiBjb25zdW1lci4gVGhlcmUncyBvbmx5IDEgY2FsbGJhY2suIFNvIHlvdSdyZSBl eGFtcGxlIGRvZXNuJ3Qgd29yay4KPj4+Pj4+IElmIHRoZXJlIHdpbGwgYmUgdHdvIGNvbnN1bWVy cywgdGhlcmUgd2lsbCBiZSB0d28gYnJpZGdlIGF0dGFjaG1lbnRzLAo+Pj4+Pj4gdGh1cyB0aGVy ZSB3aWxsIGJlIHR3byBub3RpZmljYXRpb25zLCBpdCBzaG91bGQgd29yay4KPj4+Pj4gMiBjb25z dW1lcnMsIDEgcHJvZHVjZXIuIFRoZXJlJ3Mgb25seSBfb25lXyBjYWxsYmFjayBpbiB0aGUgcHJv ZHVjZXIuIFRoZQo+Pj4+PiBjYWxsYmFjayBpcyByZWdpc3RlcmVkIG9uIHRoZSBwcm9kdWNlIGJy aWRnZSwgbm90IG9uIHRoZSBjb25zdW1lciBicmlkZ2UKPj4+Pj4gKG9yIEknbSB0b3RhbGxseSBt aXNyZWFkaW5nIHdoYXQgTGF1cmVudCBkb2VzIGhlcmUpLgo+Pj4+IEkgaGF2ZSBhc3N1bWVkIHRo YXQgaWYgZGV2aWNlcyBleHBvc2VzIHR3byBoYXJkd2FyZSBzaW5rIGludGVyZmFjZXMgaXQKPj4+ PiB3aWxsIGV4cG9zZSB0d28gc2VwYXJhdGUgYnJpZGdlcyAtIG9mIGNvdXJzZSBpdCB3aWxsIG5v dCB3b3JrIHdpdGgKPj4+PiAiYnJpZGdlIGNoYWluaW5nIiB0aGluZywgYnV0IHRoaXMgaXMgYSBk aWZmZXJlbnQgc3RvcnkuCj4+PiBEYW5pZWwgaXMgcmlnaHQgdGhhdCB0aGUgY3VycmVudCBpbXBs ZW1lbnRhdGlvbiBvbmx5IGFsbG93cyBvbmUKPj4+IGNvbnN1bWVyLiBUaGlzIGlzIGhvd2V2ZXIg bm90IGEgbGltaXRhdGlvbiBvZiB0aGUgQVBJLCBidXQgb2YgaXRzCj4+PiBpbXBsZW1lbnRhdGlv biwgYXMgSSBvbmx5IG5lZWRlZCBhIHNpbmdsZSBjb25zdW1lci4gVGhlIGhlbHBlcnMgaW4gdGhp cwo+Pj4gc2VyaWVzIGVuc3VyZSB0aGF0IG5laXRoZXIgdGhlIGNvbnN1bWVyIG5vciB0aGUgcHJv ZHVjZXIgcG9rZSBpbiB0aGUKPj4+IGRybV9icmlkZ2Ugc3RydWN0dXJlIHRvIGNhbGwgYmFjayB0 byB0aGUgSFBEIGhhbmRsZXI6Cj4+Pgo+Pj4gLSBUaGUgY29uc3VtZXIgY2FsbHMgZHJtX2JyaWRn ZV9ocGRfZW5hYmxlKCkgYW5kCj4+PiAgIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoKSwgd2hpY2gg Y291bGQgb2ZmZXIgYSByZWZlcmVuY2UtY291bnRlZAo+Pj4gICBiZWhhdmlvdXIgaWYgZGVzaXJl ZCB3aXRob3V0IGNoYW5nZXMgdG8gdGhlIGNvbnN1bWVyLgo+Pj4KPj4+IC0gVGhlIHByb2R1Y2Vy IGdldHMgY29uZmlndXJlZCBieSAuaHBkX2VuYWJsZSgpIGFuZCAuaHBkX2Rpc2FibGUoKSwKPj4+ ICAgd2hpY2ggY291bGQgYWxzbyBlYXNpbHkgYWNjb21tb2RhdGUgcmVmZXJlbmNlLWNvdW50aW5n IGluIHRoZSBkcm0KPj4+ICAgYnJpZGdlIGNvcmUgd2l0aG91dCBjaGFuZ2VzIHRvIHRoZSBwcm9k dWNlci4KPj4+Cj4+PiAtIFRoZSBwcm9kdWNlciBub3RpZmllcyBIUEQgd2l0aCBkcm1fYnJpZGdl X2hwZF9ub3RpZnkoKSwgd2hpY2ggY291bGQKPj4+ICAgZWFzaWx5IGJlIGV4dGVuZGVkIHRvIHN1 cHBvcnQgbXVsdGlwbGUgY29uc3VtZXJzIHdpdGhvdXQgY2hhbmdlcyB0bwo+Pj4gICB0aGUgcHJv ZHVjZXIuCj4+Pgo+Pj4gVGhpcyBpcyBhY3R1YWxseSBteSBzZWNvbmQgdmVyc2lvbiBvZiB0aGUg SFBEIG1lY2hhbmlzbS4gVGhlIGZpcnN0Cj4+PiB2ZXJzaW9uIHdhcyBuZXZlciBwb3N0ZWQsIHBv a2VkIGludG8gZHJtX2JyaWRnZSwgYW5kIHJlcXVpcmVkIHRoZQo+Pj4gcHJvZHVjZXIgdG8gYmUg YXdhcmUgb2YgdGhlIGNhbGxiYWNrcy4gQWZ0ZXIgZGlzY3Vzc2luZyB0aGlzIHByaXZhdGVseQo+ Pj4gd2l0aCBEYW5pZWwsIEkgY2FtZSB1cCB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0aGlz IHNlcmllcyB0aGF0LAo+Pj4gd2hpbGUgbm90IHN1cHBvcnRpbmcgbXVsdGlwbGUgY29uc3VtZXJz IG5vdywgbWFrZXMgaXQgZWFzeSB0byBleHRlbmQKPj4+IGxhdGVyIHdpdGhvdXQgbWluaW1hbCBl ZmZvcnQuCj4+Pgo+Pj4gRGFuaWVsJ3MgcHJvcG9zZWQgaW1wbGVtZW50YXRpb24gYWJvdmUgbG9v a3MgcmVhc29uYWJsZSB0byBtZSwgcHJvdmlkZWQKPj4+IHdlIGNhbiBpdGVyYXRlIG92ZXIgdGhl IGJyaWRnZXMgaW4gYW4gb3JkZXIgdGhhdCBkb24ndCBkZXBlbmQgb24gdGhlCj4+PiBwb3NpdGlv biBvZiB0aGUgcHJvZHVjZXIgaW4gdGhlIGNoYWluIChzaG91bGQgYmUgZWFzeSB0byBzb2x2ZSBi eQo+Pj4gc3RhcnRpbmcgYXQgdGhlIGVuY29kZXIgZm9yIGluc3RhbmNlKS4gSXQgaG93ZXZlciBs b29rcyBhIGJpdCBsaWtlIGEKPj4+IG1pZGxheWVyIHRvIG1lIDotKSBUaGF0J3Mgd2h5IEkgaGF2 ZSBhIHNpbWlsYXIgaW1wbGVtZW50YXRpb24gaW4gdGhlCj4+PiBjb25uZWN0b3ItYnJpZGdlIGhl bHBlciwgd2hpY2ggY291bGQgYmUgZXh0ZW5kZWQgdG8gY2FsbAo+Pj4gZW5jb2Rlci0+aGVscGVy X3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KCkgYW5kCj4+PiBkZXYtPm1vZGVfY29uZmlnLmhl bHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSgpIGluc3RlYWQgb2YKPj4+IGhhcmRjb2Rp bmcgZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudCgpLiBNb3ZpbmcgdGhlIGNvZGUgdG8KPj4+ IGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHdvdWxkIG9uIHRoZSBvdGhlciBoYW5kIHNldCB0aGUg bm90aWZpY2F0aW9uCj4+PiBzZXF1ZW5jZSB0b3dhcmRzIHRoZSBlbmNvZGVyIGFuZCBkcml2ZXIg aW4gc3RvbmUuIERhbmllbCwgZG8geW91IHRoaW5rCj4+PiB0aGF0IHdvdWxkIGJlIGJldHRlciA/ Cj4+Pgo+Pj4gSSB3b3VsZCBsaWtlIHRvIHJlbWluZCBldmVyeWJvZHkgdGhhdCB0aGlzIHNlcmll cyBpc24ndCB0aGUgbGFzdCBJIHdpbGwKPj4+IGV2ZXIgc3VibWl0LCBhbmQgSSBwbGFuIHRvIGRv IG1vcmUgd29yayBvbiBkcm1fYnJpZGdlIGFuZCBkcm1fcGFuZWwuIEknbQo+Pj4gb3BlbiB0byBz dWdnZXN0aW9ucywgYW5kIGNhbiBhZGRyZXNzIHByb2JsZW1zIG9uIHRvcCBvZiB0aGVzZSBwYXRj aGVzLAo+Pj4gcHJvdmlkZWQgb2J2aW91c2x5IHRoYXQgdGhpcyBzZXJpZXMgZG9lc24ndCBnbyBp biB0aGUgd3JvbmcgZGlyZWN0aW9uLgo+Pj4gSSdtIG9mIGNvdXJzZSBhbHNvIHdpbGxpbmcgdG8g cmV3b3JrIHRoaXMgc2VyaWVzLCBidXQgZ2l2ZW4gdGhlIGFtb3VudAo+Pj4gb2Ygd29yayB3ZSBo YXZlIGluIHRoZSBkcm1fYnJpZGdlIHJlYWxtLCBJIGNhbid0IGZpeCBldmVyeXRoaW5nIGluIG9u ZQo+Pj4gZ28gOi0pCj4+Pgo+Pj4+Pj4+PiAtIGl0IHJlc2VtYmxlcyBoYXJkd2FyZSB3aXJlcyA6 KQo+Pj4+Pj4+IFRoaXMgaXNuJ3QgZm9yIHRoZSBodyB3aXJlcyBhZmFpdWkuIFRoZSBodyBocGQg dGVybWluYXRlcyBpbiB0aGUgc291cmNlCj4+Pj4+Pj4gYnJpZGdlLCB3aGljaCB0aGVuIGNhbGxz IGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHRvIGluZm9ybSBhbnlvbmUgZWxzZQo+Pj4+Pj4+IGlu dGVyZXN0ZWQgaW4gdGhhdCBocGQgc2luZ2FsLiBUaGlzIGluY2x1ZGVzOgo+Pj4+Pj4+IC0gT3Ro ZXIgYnJpZGdlcywgZS5nLiBpZiB0aGV5IHByb3ZpZGUgQ0VDIHN1cHBvcnQuCj4+Pj4+Pj4gLSBP dGhlciBicmlkZ2VzLCBtYXliZSB0aGV5IG5lZWQgdG8gcmUtcnVuIHRoZSBIRENQIHN0YXRlIGVu Z2luZQo+Pj4+Pj4+IC0gT3ZlcmFsbCBkcml2ZXIsIHNvIGl0IGNhbiB1cGRhdGUgdGhlIG1vZGVz L2Nvbm5lY3RvciBzdGF0dXMgYW5kIHNlbmQgdGhlCj4+Pj4+Pj4gICB1ZXZlbnQgdG8gdGhlIGRy aXZlci4KPj4+Pj4+PiAtIE92ZXJhbGwgZGlzcGxheSBwaXBlbGluZSBmb3IgdGhpcyBzcGVjaWZp YyBicmlkZ2UsIG1heWJlIHlvdSBuZWVkIHRvCj4+Pj4+Pj4gICBzaHV0IGRvd24vcmUtZW5hYmxl IHRoZSBwaXBlIGJlY2F1c2UgJHJlYXNvbnMuCj4+Pj4+Pj4gIAo+Pj4+Pj4+IFRoYXQncyBhdCBs ZWFzdCBteSB1bmRlcnN0YW5kaW5nIGZyb20gbG90cyBvZiBjaGF0cyB3aXRoIExhdXJlbnQgYWJv dXQKPj4+Pj4+PiB3aGF0IGhlIHdhbnRzIHRvIGRvIGhlcmUuCj4+PiBUaGF0J3MgY29ycmVjdCwg YW5kIHRoYXQncyB3aGF0IEkgd2FzIHRyeWluZyB0byBpbXBsZW1lbnQgOi0pIFRoZQo+Pj4gbm90 aWZpY2F0aW9uLCBpbiB0aGlzIHBhdGNoIHNlcmllcywgZ29lcyBmcm9tIHRoZSBwcm9kdWNlciBi cmlkZ2UgdG8gYQo+Pj4gY2VudHJhbCBwbGFjZSAobmFtZWx5IHRoZSBjb25uZWN0b3IsIHdpdGgg YSBoZWxwZXIgaW1wbGVtZW50YXRpb24KPj4+IGF2YWlsYWJsZSBhcyBwYXJ0IG9mIHRoaXMgc2Vy aWVzLCBidXQgY3VzdG9tIGltcGxlbWVudGF0aW9ucyBpbiBkaXNwbGF5Cj4+PiBkcml2ZXJzIGFy ZSBmaW5lIGlmIG5lZWRlZCkgdGhhdCB0aGVuIGRpc3BhdGNoZXMgdGhlIG5vdGlmaWNhdGlvbiB0 byBhbGwKPj4+IGJyaWRnZXMgKHRocm91Z2ggdGhlIC5sb3N0X2hvdHBsdWcoKSBvcGVyYXRpb24s IHdoaWNoIHdlIGNvdWxkIHJlcGxhY2UKPj4+IGJ5IGFuIC5ocGRfbm90aWZ5KCkgb3BlcmF0aW9u KSBmb3IgdGhlIGZpcnN0IHR3byBwdXJwb3NlcyBsaXN0ZWQgYWJvdmUsCj4+PiBhbmQgdGhlbiB0 byB0aGUgb3ZlcmFsbCBkcml2ZXIuIFRoZSBvbmx5IHRoaW5nIEkgZG9uJ3Qgc3VwcG9ydCB5ZXQg aXMKPj4+IGRpc3BhdGNoaW5nIHRvIHRoZSBkaXNwbGF5IHBpcGVsaW5lIChpdGVtIDQgaW4gdGhl IGxpc3QgYWJvdmUpIGFzIEkgaGFkCj4+PiBubyBuZWVkIGZvciB0aGF0LCBhbmQgZGlkbid0IHdh bnQgdG8gZGV2ZWxvcCBhbiBBUEkgd2l0aCBubyB1c2VyLiBUaGlzCj4+PiB3b3VsZCBob3dldmVy IG5vdCBiZSBkaWZmaWN1bHQgdG8gZG8gd2hlbiBuZWVkZWQsIHRoZSBuZWVkIGlzIHRha2VuIGlu dG8KPj4+IGFjY291bnQgaW4gdGhlIHByb3Bvc2VkIGltcGxlbWVudGF0aW9uLgo+Pj4KPj4+Pj4+ IEkgZG8gbm90IGtub3cgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IHRoZSBzb2x1dGlvbiB3aGVyZSBw YXJ0aWN1bGFyIGJyaWRnZQo+Pj4+Pj4gbm90aWZpZXMgZXZlcnl0aGluZyB1bmNvbmRpdGlvbmFs bHkgc2VlbXMgdG8gbWUgbXVjaCBsZXNzIGZsZXhpYmxlLgo+Pj4+Pj4KPj4+Pj4+IElmIEhQRCBz aWduYWxzIGlzIHJlY2VpdmVkIGJ5IHRoZSBjb25zdW1lciwgaWYgdGhlcmUgYXJlIG5vIG9ic3Rh Y2xlcyBpdAo+Pj4+Pj4gY2FuIHByb3BhZ2F0ZSBpdCBmdXJ0aGVyLCB1cHN0cmVhbSBicmlkZ2Uv ZW5jb2RlciBvciB0byBkcm0gY29yZSAtIGl0Cj4+Pj4+PiB3aWxsIG1pbWljIHlvdXIgc2NlbmFy aW8uCj4+Pj4+Pgo+Pj4+Pj4gQnV0IHRoZXJlIGFyZSBhbHNvIG90aGVyIHNjZW5hcmlvcyB3aGVy ZSBicmlkZ2UgZG9lcyBub3Qgd2FudCB0bwo+Pj4+Pj4gcHJvcGFnYXRlIHNpZ25hbCwgYmVjYXVz ZSBmb3IgZXhhbXBsZToKPj4+Pj4+Cj4+Pj4+PiAtIGl0IHdhbnRzIHRvIHdhaXQgZm9yIG90aGVy IHNpbmtzIHRvIHdha2UgdXAsCj4+Pj4+Pgo+Pj4+PiBUaGUgb3RoZXIgc2luayBjYW4ganVzdCBk byB0aGF0IGluIHRoZWlyIGhwZCBjYWxsYmFjay4KPj4+Pj4KPj4+Pj4+IC0gaXQgcHJvcGFnYXRl cyBIUEQgc2lnbmFsIHZpYSBoYXJkd2FyZSB3aXJlLAo+Pj4+PiBBZ2FpbiwgdGhlIG90aGVyIHNp bmsgY2FuIGp1c3Qgbm90IGxpc3RlbiB0byBzdyBocGQgaW4gdGhhdCBjYXNlLCBhbmQgdXNlCj4+ Pj4+IHRoZSB3aXJlL2h3IGhwZCBpbnRlcnJ1cHQuCj4+Pj4+Cj4+Pj4gSWYgaXQgc2hvdWxkIGln bm9yZSBIUEQsIHdoeSBpdCBzaG91bGQgcmVjZWl2ZSBpdCBhdCBhbGwgLSBpdCBpcwo+Pj4+IHVu bmVjZXNzYXJ5IG5vaXNlLiBBbmQgSSBhbSBhZnJhaWQgd2l0aCBtb3JlIGNvbXBsaWNhdGVkIHBp cGVsaW5lcyBpdAo+Pj4+IHdpbGwgYmUgaW1wb3NzaWJsZSBmb3IgcGFydGljdWxhciBjb21wb25l bnQgKGJyaWRnZS9lbmNvZGVyL3doYXRldmVyKSB0bwo+Pj4+IGRpc3Rpbmd1aXNoIGlmIEhQRCBu b3RpZmljYXRpb24gd2hpY2ggY2FtZSBmcm9tIG5vbi1kaXJlY3RseSBjb25uZWN0ZWQKPj4+PiBj b21wb25lbnQgc2hvdWxkIGJlIGlnbm9yZWQgb3Igbm90Lgo+Pj4+Cj4+Pj4+PiAtIGZpcnN0IGl0 IHdhbnRzIHRvIHZlcmlmeSBpZiB0aGUgc2luayBpcyB2YWxpZC9jb21wYXRpYmxlL2F1dGhvcml6 ZWQKPj4+Pj4+IGRldmljZS4KPj4+Pj4gTm93IHlvdSBsb3N0IG1lLiBXaHkgd291bGQgc29tZW9u ZSBnbHVlIGluY29tcGF0aWJsZSBJUCBpbnRvIGEgU29DIG9yCj4+Pj4+IGJvYXJkPwo+Pj4+IEJy aWRnZSBjYW4gaGF2ZSBleHRlcm5hbCBjb25uZWN0b3JzLCBhbmQgdGhlIHVzZXIgY2FuIGNvbm5l Y3QgdGhlcmUKPj4+PiBhbnl0aGluZy4KPj4+Pgo+Pj4+Pj4gSW4gZ2VuZXJhbCBIUEQgaXMgaW5w dXQgc2lnbmFsIGZvciBub3RpZnkgb2Ygc3RhdGUgY2hhbmdlcyBvbiBwYXJ0aWN1bGFyCj4+Pj4+ PiBidXMsIGluIGNhc2Ugb2YgdHlwaWNhbCB2aWRlbyBicmlkZ2Ugb24gaXRzIG91dHB1dCB2aWRl byBidXMuCj4+Pj4+Pgo+Pj4+Pj4gSW4gY2FzZSBvZiBicmlkZ2VzIHRoZXkgaGF2ZSBhbHNvIGlu cHV0IHZpZGVvIGJ1c2VzLCBhbmQgdGhleSBjYW4gc2VuZAo+Pj4+Pj4gSFBEIHNpZ25hbCB2aWEg dGhpcyBidXMsIGJ1dCB0aGlzIGlzIGluZGVlZCBkaWZmZXJlbnQgSFBEIHNpZ25hbCwgZXZlbgo+ Pj4+Pj4gaWYgZm9yIG1vc3QgY2FzZXMgdGhleSBsb29rcyBzaW1pbGFyLgo+Pj4+PiBBaCwgSSB0 aGluayB0aGlzIGlzIGEgcHJvYmxlbSB3ZSB3aWxsIGV2ZW50dWFsbHkgaGF2ZS4gQnV0IGl0J3Mg bm90Cj4+Pj4+IHNvbWV0aGluZyB3ZSdyZSBjdXJyZW50bHkgc29sdmluZyBoZXJlIGF0IGFsbCBJ IHRoaW5rLgo+Pj4+IEN1cnJlbnRseSBzaWk4NjIwIGRldmljZSBpbiB0bTIgc2VuZHMgaHBkIHNp Z25hbCB1cHN0cmVhbSB2aWEgaGFyZHdhcmUKPj4+PiBsaW5lLCBzbyB0aGlzIGlzIG5vdCBzb21l dGhpbmcgZnJvbSBmYXIgZnV0dXJlLiBBbmQgSSBndWVzcyB3aXRoIEhQRAo+Pj4+IGJyb2FkY2Fz dGluZyBpdCBjb3VsZCBiZSByYWN5L2Vycm9yIHByb25lLCBmb3IgZXhhbXBsZSBFRElEIHJlYWRp bmcgY2FuCj4+Pj4gZmFpbCBkdWUgdG8gYnJpZGdlIGJlaW5nIG5vdCByZWFkeSAoZGRjIG9mIHNp aTg2MjAgaXMgY29ubmVjdGVkIHRvIGkyYwo+Pj4+IGNvbnRyb2xsZXIgdmlhIGh3IHdpcmVzIGFs c28pLgo+Pj4+Cj4+Pj4+Pj4+IEFuZCByZWdhcmRpbmcgaW1wbGVtZW50YXRpb246Cj4+Pj4+Pj4+ Cj4+Pj4+Pj4+IDEuIExhdXJlbnQgcHJvcG9zZXMgdG8gcmVnaXN0ZXIgY2FsbGJhY2sgZHJtX2Jy aWRnZV9ocGRfZW5hYmxlLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAyLiBZb3UgcHJvcG9zZSB0byBhZGQg b3BzIGhwZF9ub3RpZnkgaW4gYnJpZGdlcyBhbmQgZW5jb2RlcnMuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+ IFlvdXIgcHJvcG9zaXRpb24gaXMgbW9yZSBzdHJhaWdodGZvcndhcmQsIGJ1dCBpZiB3ZSB3YW50 IHRvIG5vdGlmeSBvbmx5Cj4+Pj4+Pj4+IHNvdXJjZSB3ZSBzaG91bGQgbG9jYXRlIGl0IGJ5IHBh cnNpbmcgbm90aWZpY2F0aW9uIGNoYWluICh3aGF0IGFib3V0Cj4+Pj4+Pj4+IHVuY2hhaW5lZCBi cmlkZ2VzKSwgb3Igc3RvcmUgcG9pbnRlciBzb21ld2hlcmUgZHVyaW5nIGF0dGFjaG1lbnQuCj4+ Pj4+Pj4+Cj4+Pj4+Pj4+IEl0IHN0aWxsIGxlYXZlcyB1cyB3aXRoIHRoaXMgdWdseSBkdWFsaXNt IC0gc291cmNlIGlzIGVuY29kZXIgb3IgYnJpZGdlLAo+Pj4+Pj4+PiBzaW1pbGFybHkgdG8gc2lu ayBhcyBicmlkZ2Ugb3IgcGFuZWwsIGJ1dCBmaXhpbmcgaXQgY2FuIGJlIGRvbmUgbGF0ZXIuCj4+ Pj4+Pj4gVWggSSB0aGluayB3ZSdyZSBub3QgdGFsa2luZyBhYm91dCB0aGUgc2FtZSB0aGluZyBy ZWFsbHkuIE15IHVuZGVyc3RhbmRpbmcKPj4+Pj4+PiBpcyB0aGF0IHRoaXMgY2FsbGJhY2sgaXMg aWYgc29tZW9uZSAob3V0c2lkZSBvZiB0aGlzIGJyaWRnZSkgaXMgaW50ZXJlc3RlZAo+Pj4+Pj4+ IGluIGEgaHBkIHNpZ25hbCBfZnJvbV8gdGhpcyBicmlkZ2UuIFdoaWNoIG1lYW5zIHlvdSBjYW4g b25seSBldmVyIGhhdmUgMQo+Pj4+Pj4+IGxpc3RlbmVyLgo+Pj4+Pj4gRG8gd2UgaGF2ZSByZWFs IGxpZmUgZXhhbXBsZXM/Cj4+Pj4+Pgo+Pj4+Pj4gSSB3YW50IHRvIGRpc3Rpbmd1aXNoIHR3byBz aXR1YXRpb25zOgo+Pj4+Pj4KPj4+Pj4+IC0gYW5vdGhlciBkZXZpY2Ugd2FudHMgdG8ga25vdyBp ZiBpbnB1dCBidXMgb2YgdGhlIGJyaWRnZSBoYXMgY2hhbmdlZCBzdGF0ZSwKPj4+Pj4+Cj4+Pj4+ PiAtIGFub3RoZXIgZGV2aWNlIHdhbnRzIHRvIGtub3cgaWYgb3V0cHV0IGJ1cyBvZiB0aGUgYnJp ZGdlIGhhcyBjaGFuZ2VkCj4+Pj4+PiBzdGF0ZS4KPj4+Pj4gVWgsIHRoYXQncyB3aGF0IGRybV9i cmlkZ2Vfc3RhdGUgaXMgZm9yIChpZiBpdCBldmVyIGhhcHBlbnMpLiBUaGF0J3MgaG93Cj4+Pj4+ IGJyaWRnZXMgY2FuIGV4Y2hhbmdlIHN0YXRlIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIGFu b3RoZXIuIGhwZCBpcwo+Pj4+PiBhYm91dCB0aGUgcGh5c2ljYWwgd29ybGQsIGkuZS4gImlzIHRo ZXJlIGEgY2FibGUgcGx1Z2dlZCBpbnRvIHRoZSBwb3J0Cj4+Pj4+IEknbSBkcml2aW5nPyIuIFdl J3JlIG5vdCBnb2luZyB0byB1c2UgZmFrZSBocGQgdG8gdXBkYXRlIGJyaWRnZSBzdGF0ZSBhbmQK Pj4+Pj4gZnVuIHN0dWZmIGxpa2UgdGhhdCwgd2UgaGF2ZSB0aGUgYXRvbWljX2NoZWNrIG1hY2hp bmVyeSBmb3IgdGhpcy4KPj4+PiBNeSBxdWVzdGlvbiB3YXMgaWYgd2UgaGF2ZSByZWFsIGV4YW1w bGVzIHRoYXQgdXBzdHJlYW0gZGV2aWNlIHJlcXVpcmVzCj4+Pj4ga25vd2xlZGdlIGFib3V0IHN0 YXRlIG9mIG91dHB1dCBsaW5lIG9mIHRoZSBicmlkZ2U/Cj4+Pj4KPj4+PiBUbyBiZSBtb3JlIHBy ZWNpc2UsIHdlIGhhdmUgZm9sbG93aW5nIGRpc3BsYXkgcGlwZWxpbmU6Cj4+Pj4KPj4+PiBBLS0+ Qi0tPkMKPj4+Pgo+Pj4+IEFuZCBDIHNlbmRzIEhQRCB0byBCIChpZSBzaWduYWwgdGhhdCBzdGF0 ZSBvZiBsaW5lIGJldHdlZW4gQiBhbmQgQwo+Pj4+IGNoYW5nZWQpLiBEb2VzIEEgcmVhbGx5IHdh bnRzIHRvIGtub3cgdGhpcyBpbmZvcm1hdGlvbj8gb3IgaXQgc2hvdWxkCj4+Pj4ganVzdCBuZWVk IHRvIGtub3cgaWYgc3RhdGUgb2YgbGluZSBBLS0+QiBjaGFuZ2VkPwo+Pj4gVGhlcmUncyBvbmUg cmVhbCBsaWZlIGV4YW1wbGUsIHdoZXJlIEEgaXMgYW4gSERNSSBlbmNvZGVyLCBCIGlzIGFuIEhE TUkKPj4+IEVTRCBwcm90ZWN0b3IgYW5kIGxldmVsIHNoaWZ0ZXIsIGFuZCBDIGlzIHRoZSBwaHlz aWNhbCBIRE1JIGNvbm5lY3Rvci4KPj4+IFdoZW4gdGhlIEhETUkgY2FibGUgaXMgdW5wbHVnZ2Vk LCB0aGUgQ0VDIGNvbnRyb2xsZXIgcGFydCBvZiBBIG5lZWRzIHRvCj4+PiBiZSBub3RpZmllZCBp biBvcmRlciB0byByZXNldCB0aGUgQ0VDIHN0YXRlIG1hY2hpbmUuIE9uZSBjb3VsZCBob3dldmVy Cj4+PiBhcmd1ZSB0aGF0IGluIHRoYXQgY2FzZSB0aGUgQS1CIGxpbmsgc3RhdGUgY2hhbmdlcyB0 b28sIGJ1dCB0aGUKPj4+IGltcG9ydGFudCBwYXJ0IGlzIHRoYXQgSFBEIGRldGVjdGlvbiBpcyBu b3QgcGVyZm9ybWVkIGJ5IEEsIHdoaWxlIEEKPj4+IG5lZWRzIHRvIGJlIGluZm9ybWVkIG9mIGxv c3QgaG90cGx1Zy4KPj4gSSBoYXZlIG5vIGZ1bGwgcGljdHVyZSBidXQgSSBndWVzcyBpbiB0aGlz IGNhc2UgQyBzZW5kcyBIUEQgdG8gQiB1c2luZwo+PiBoYXJkd2FyZSB3aXJlLCBhbmQgdGhlbiBC IHNlbmRzIEhQRCB0byBBIGFsc28gdmlhIHdpcmUsIHNvIEkgd291bGRuJ3QKPj4gc2F5IHRoYXQg QiBkb2VzIG5vdCBwYXJ0aWNpcGF0ZSBpbiBIUEQgdHJhbnNtaXNzaW9uL2ZvcndhcmRpbmcsCj4g Tm8sIGluIHRoaXMgY2FzZSBBIGRvZXNuJ3QgcmVjZWl2ZSBhbnkgaGFyZHdhcmUgSFBEIHNpZ25h bCwgaXQgcmVxdWlyZXMKPiBIUEQgbm90aWZpY2F0aW9uIHRocm91Z2ggc29mdHdhcmUuCj4KPj4g c29tZSBzaGlmdGVycyB3aXRoICdhZHZhbmNlZCBwb3dlciBzYXZpbmcnIGNhbiBldmVuIHBlcmZv cm0gd2FrZS11cCBvZgo+PiB1cHN0cmVhbSBwaW4gbG9naWMgYWZ0ZXIgcmVjZWl2aW5nIEhQRCBv biBkb3duc3RyZWFtLCBzbyBIUEQgc2VudCBmcm9tIEIKPj4gdG8gQSBpcyBpbmRlZWQgZGlmZmVy ZW50IHRoYW4gSFBEIHNlbnQgZnJvbSBDIHRvIEIuCj4+Cj4+IEJ0dywgd2l0aCB0aGUgYWJvdmUg bG9naWMgb2YgcHJvcGFnYXRpb24gb2YgSFBEIGNhbGxiYWNrIChwcm9wb3NlZCBieQo+PiBEYW5p ZWwpIEkgZ3Vlc3MgaXQgd2lsbCB3b3JrIHRoaXMgd2F5Ogo+Pgo+PiAtIEEgd2lsbCByZWNlaXZl IEhQRCBzaWduYWwgdmlhIEhXLAo+Pgo+PiAtIHRoZW4gQiBhbmQgQyB3aWxsIHJlY2VpdmUgSFBE IGNhbGxiYWNrIHZpYSBmcmFtZXdvcmsuCj4+Cj4+IEFtIEkgcmlnaHQ/Cj4gSXQncyB0aGUgb3Ro ZXIgd2F5IGFyb3VuZC4KPgo+IEluIHRoaXMgY2FzZSB0aGUgSFBEIHNpZ25hbCBmcm9tIHRoZSBj b25uZWN0b3IgKEMpIGlzIHJvdXRlZCB0byBhbiBpbnB1dAo+IG9mIHRoZSBFU0QgY2hpcCAoQiku IFRoZSBFU0QgY2hpcCBvdXRwdXRzIGEgc2hpZnRlZCBIUEQgaGFyZHdhcmUgc2lnbmFsCj4gY29u bmVjdGVkIHRvIGEgR1BJTyBvZiB0aGUgU29DLiBUaGUgZHJpdmVyIGZvciAoQikgdGh1cyByZWdp c3RlcnMgYSBHUElPCj4gSVJRIGFuZCByZWNlaXZlIHRoZSBoYXJkd2FyZSBIUEQgbm90aWZpY2F0 aW9uLiBUaGUgZHJpdmVyIGZvciB0aGUgSERNSQo+IGVuY29kZXIgKEEpIG5lZWRzIHRvIHJlY2Vp dmUgSFBEIG5vdGlmaWNhdGlvbiBpbiBzb2Z0d2FyZSwgdGhyb3VnaCB0aGUKPiBmcmFtZXdvcmsu CgoKSWYgdGhpcyBpcyBHUElPIEkgd29uZGVyIHdoeSBkbyBub3QgcXVlcnkgdGhpcyBncGlvIGJ5 IGVuY29kZXIgZGlyZWN0bHksCnJ1bGVzIG9mIG93bmVyc2hpcCBvZiBzdWNoIGdwaW9zIHNlZW1z IHRvIGJlIGdyZXkgYXJlYSwgc28gaW4gc3VjaCBjYXNlCkkgd291bGQgYWR2aXNlIHRvIHB1dCBp dCBpbiB0aGUgZHJpdmVyIHdobyByZWFsbHkgbmVlZHMgaXQuCgpUaGlzIHdheSBpdCB3aWxsIGJl IG11Y2ggc2ltcGxlci4KCgpHb2luZyBiYWNrIHRvIEhQRCBub3RpZmljYXRpb25zLCBhcyBJIHNh aWQgZWFybGllciBicm9hZGNhc3RpbmcgSFBECm5vdGlmaWNhdGlvbiB1bmNvbmRpdGlvbmFsbHkg dG8gZXZlcnkgbWVtYmVyIG9mIHRoZSBjaGFpbiB3aXRoIGhvcGUgdGhhdAp0aGUgbWVtYmVyIHdp bGwgYmUgYWJsZSB0byBmaWx0ZXItb3V0IHVuZGVzaXJlZCBub3RpZmljYXRpb24gc2VlbXMgdG8g bWUKaW5jb3JyZWN0IC0gbWF5YmUgaXQgY2FuIHNvbHZlIHNvbWUgcHJvYmxlbXMgYnV0IGlzIG5v dCBmbGV4aWJsZSBlbm91Z2gKdG8gYmUgdXNhYmxlIGluIG90aGVyIHNjZW5hcmlvcy4KCklmIG15 IGFyZ3VtZW50cyBkbyBub3QgY29udmluY2UgeW91IHBsZWFzZSBqdXN0IGNvbnRpbnVlIHdpdGgg eW91cgppZGVhcywgd2UgY2FuIGFsd2F5cyBhZGQgTk9fSFBEX0JST0FEQ0FTVCBzb21ld2hlcmUg OikKCgpSZWdhcmRzCgpBbmRyemVqCgoKPgo+Pj4+Pj4+IFlvdSBzZWVtIHRvIGhhdmUgc29tZSBv dGhlciBpZGVhIGhlcmUuCj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+PiArCW11dGV4X3VubG9jaygmYnJp ZGdlLT5ocGRfbXV0ZXgpOwo+Pj4+Pj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+Pj4+Pj4gK0VYUE9SVF9T WU1CT0xfR1BMKGRybV9icmlkZ2VfaHBkX25vdGlmeSk7Cj4+Pj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+ Pj4+Pj4+ICAjaWZkZWYgQ09ORklHX09GCj4+Pj4+Pj4+Pj4+Pj4gIC8qKgo+Pj4+Pj4+Pj4+Pj4+ ICAgKiBvZl9kcm1fZmluZF9icmlkZ2UgLSBmaW5kIHRoZSBicmlkZ2UgY29ycmVzcG9uZGluZyB0 byB0aGUgZGV2aWNlIG5vZGUgaW4KPj4+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX2JyaWRnZS5oIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4+Pj4+Pj4+Pj4+Pj4g aW5kZXggMDhkYzE1ZjkzZGVkLi5iOTQ0NWFhNWIxZWYgMTAwNjQ0Cj4+Pj4+Pj4+Pj4+Pj4gLS0t IGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4+Pj4+Pj4+Pj4+Pj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX2JyaWRnZS5oCj4+Pj4+Pj4+Pj4+Pj4gQEAgLTIzLDggKzIzLDkgQEAKPj4+Pj4+Pj4+ Pj4+PiAgI2lmbmRlZiBfX0RSTV9CUklER0VfSF9fCj4+Pj4+Pj4+Pj4+Pj4gICNkZWZpbmUgX19E Uk1fQlJJREdFX0hfXwo+Pj4+Pj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4+Pj4+PiAtI2luY2x1ZGUgPGxp bnV4L2xpc3QuaD4KPj4+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+Cj4+Pj4+ Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4+Pj4+Pj4+Pj4+Pj4gKyNpbmNsdWRl IDxsaW51eC9tdXRleC5oPgo+Pj4+Pj4+Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9tb2RlX29i amVjdC5oPgo+Pj4+Pj4+Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgo+Pj4+Pj4+ Pj4+Pj4+ICAKPj4+Pj4+Pj4+Pj4+PiBAQCAtMzM0LDYgKzMzNSwxMTAgQEAgc3RydWN0IGRybV9i cmlkZ2VfZnVuY3Mgewo+Pj4+Pj4+Pj4+Pj4+ICAJICovCj4+Pj4+Pj4+Pj4+Pj4gIAl2b2lkICgq YXRvbWljX3Bvc3RfZGlzYWJsZSkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPj4+Pj4+Pj4+ Pj4+PiAgCQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+Pj4+Pj4+Pj4+ Pj4+ICsKPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+Pj4+Pj4+ICsJICogQGRldGVjdDoKPj4+ Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBDaGVjayBpZiBhbnl0aGluZyBpcyBh dHRhY2hlZCB0byB0aGUgYnJpZGdlIG91dHB1dC4KPj4+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBpZiBub3QgaW1wbGVtZW50ZWQg dGhlIGJyaWRnZSB3aWxsIGJlCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBjb25zaWRlcmVkIGFzIGFsd2F5 cyBoYXZpbmcgYSBjb21wb25lbnQgYXR0YWNoZWQgdG8gaXRzIG91dHB1dC4KPj4+Pj4+Pj4+Pj4+ PiArCSAqIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgdGhpcyBjYWxsYmFjayBzaGFsbCBzZXQgdGhl Cj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBEUk1fQlJJREdFX09QX0RFVEVDVCBmbGFnIGluIHRoZWlyICZk cm1fYnJpZGdlLT5vcHMuCj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+Pj4+Pj4+ICsJICogUkVU VVJOUzoKPj4+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBkcm1fY29ubmVjdG9y X3N0YXR1cyBpbmRpY2F0aW5nIHRoZSBicmlkZ2Ugb3V0cHV0IHN0YXR1cy4KPj4+Pj4+Pj4+Pj4+ PiArCSAqLwo+Pj4+Pj4+Pj4+Pj4+ICsJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyAoKmRldGVj dCkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4+Pj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ Pj4+ICsJLyoqCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBAZ2V0X21vZGVzOgo+Pj4+Pj4+Pj4+Pj4+ICsJ ICoKPj4+Pj4+Pj4+Pj4+PiArCSAqIEZpbGwgYWxsIG1vZGVzIGN1cnJlbnRseSB2YWxpZCBmb3Ig dGhlIHNpbmsgaW50byB0aGUgJmRybV9jb25uZWN0b3IKPj4+Pj4+Pj4+Pj4+PiArCSAqIHdpdGgg ZHJtX21vZGVfcHJvYmVkX2FkZCgpLgo+Pj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4+PiAr CSAqIFRoZSBAZ2V0X21vZGVzIGNhbGxiYWNrIGlzIG1vc3RseSBpbnRlbmRlZCB0byBzdXBwb3J0 IG5vbi1wcm9iYWJsZQo+Pj4+Pj4+Pj4+Pj4+ICsJICogZGlzcGxheXMgc3VjaCBhcyBtYW55IGZp eGVkIHBhbmVscy4gQnJpZGdlcyB0aGF0IHN1cHBvcnQgcmVhZGluZwo+Pj4+Pj4+Pj4+Pj4+ICsJ ICogRURJRCBzaGFsbCBsZWF2ZSBAZ2V0X21vZGVzIHVuaW1wbGVtZW50ZWQgYW5kIGltcGxlbWVu dCB0aGUKPj4+Pj4+Pj4+Pj4+PiArCSAqICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfZWRpZCBjYWxs YmFjayBpbnN0ZWFkLgo+Pj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4+PiArCSAqIFRoaXMg Y2FsbGJhY2sgaXMgb3B0aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgaXQgc2hhbGwgc2V0 IHRoZQo+Pj4+Pj4+Pj4+Pj4+ICsJICogRFJNX0JSSURHRV9PUF9NT0RFUyBmbGFnIGluIHRoZWly ICZkcm1fYnJpZGdlLT5vcHMuCj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+Pj4+Pj4+ICsJICog UkVUVVJOUzoKPj4+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgbnVtYmVy IG9mIG1vZGVzIGFkZGVkIGJ5IGNhbGxpbmcgZHJtX21vZGVfcHJvYmVkX2FkZCgpLgo+Pj4+Pj4+ Pj4+Pj4+ICsJICovCj4+Pj4+Pj4+Pj4+Pj4gKwlpbnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UsCj4+Pj4+Pj4+Pj4+Pj4gKwkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKTsKPj4+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4+ Pj4+PiArCSAqIEBnZXRfZWRpZDoKPj4+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+Pj4+Pj4gKwkg KiBSZWFkIGFuZCBwYXJzZSB0aGUgRURJRCBkYXRhIG9mIHRoZSBjb25uZWN0ZWQgZGlzcGxheS4K Pj4+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgQGdldF9lZGlkIGNhbGxi YWNrIGlzIHRoZSBwcmVmZXJyZWQgd2F5IG9mIHJlcG9ydGluZyBtb2RlCj4+Pj4+Pj4+Pj4+Pj4g KwkgKiBpbmZvcm1hdGlvbiBmb3IgYSBkaXNwbGF5IGNvbm5lY3RlZCB0byB0aGUgYnJpZGdlIG91 dHB1dC4gQnJpZGdlcwo+Pj4+Pj4+Pj4+Pj4+ICsJICogdGhhdCBzdXBwb3J0IHJlYWRpbmQgRURJ RCBzaGFsbCBpbXBsZW1lbnQgdGhpcyBjYWxsYmFjayBhbmQgbGVhdmUKPj4+Pj4+Pj4+Pj4+PiAr CSAqIHRoZSBAZ2V0X21vZGVzIGNhbGxiYWNrIHVuaW1wbGVtZW50ZWQuCj4+Pj4+Pj4+Pj4+Pj4g KwkgKgo+Pj4+Pj4+Pj4+Pj4+ICsJICogVGhlIGNhbGxlciBvZiB0aGlzIG9wZXJhdGlvbiBzaGFs bCBmaXJzdCB2ZXJpZnkgdGhlIG91dHB1dAo+Pj4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBz dGF0dXMgYW5kIHJlZnJhaW4gZnJvbSByZWFkaW5nIEVESUQgZnJvbSBhIGRpc2Nvbm5lY3RlZAo+ Pj4+Pj4+Pj4+Pj4+ICsJICogb3V0cHV0Lgo+Pj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4+ PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQg aXQgc2hhbGwgc2V0IHRoZQo+Pj4+Pj4+Pj4+Pj4+ICsJICogRFJNX0JSSURHRV9PUF9FRElEIGZs YWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9wcy4KPj4+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+ Pj4+Pj4gKwkgKiBSRVRVUk5TOgo+Pj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4+PiArCSAq IEFuIGVkaWQgc3RydWN0dXJlIG5ld2x5IGFsbG9jYXRlZCB3aXRoIGttYWxsb2MoKSAob3Igc2lt aWxhcikgb24KPj4+Pj4+Pj4+Pj4+PiArCSAqIHN1Y2Nlc3MsIG9yIE5VTEwgb3RoZXJ3aXNlLiBU aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0 aGUgcmV0dXJuZWQgZWRpZCBzdHJ1Y3R1cmUgd2l0aCBrZnJlZSgpLgo+Pj4+Pj4+Pj4+Pj4+ICsJ ICovCj4+Pj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgZWRpZCAqKCpnZXRfZWRpZCkoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSwKPj4+Pj4+Pj4+Pj4+PiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKTsKPj4+Pj4+Pj4+Pj4+IEl0IG92ZXJsYXBzIHdpdGggZ2V0X21vZGVzLCBJIGd1 ZXNzIHByZXNlbmNlIG9mIG9uZSBvcHMgc2hvdWxkIGRpc2FsbG93Cj4+Pj4+Pj4+Pj4+PiBwcmVz ZW5jZSBvZiBhbm90aGVyIG9uZT8KPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiBJIGFtIG5vdCBy ZWFsbHkgY29udmluY2VkIHdlIG5lZWQgdGhpcyBvcCBhdCBhbGwsIGNhbm5vdCB3ZSBqdXN0IGFz c2lnbgo+Pj4+Pj4+Pj4+Pj4gc29tZSBoZWxwZXIgZnVuY3Rpb24gdG8gLmdldF9tb2RlcyBjYiwg d2hpY2ggd2lsbCBkbyB0aGUgc2FtZT8KPj4+Pj4+Pj4+Pj4gUGxhbiBCKTogZGl0Y2ggLT5nZXRf ZWRpZCwgcmVxdWlyZSB0aGF0IHRoZSBkcml2ZXIgaGFzIC0+Z2V0X21vZGVzIGluIHRoYXQKPj4+ Pj4+Pj4+Pj4gY2FzZSwgYW5kIHJlcXVpcmUgdGhhdCBpZiBpdCBoYXMgYW4gZWRpZCBpdCBtdXN0 IGZpbGwgb3V0IGNvbm5lY3Rvci0+aW5mbwo+Pj4+Pj4+Pj4+PiBhbmQgY29ubmVjdG9yLT5lZGlk IGNvcnJlY3RseS4KPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gQnR3IGlmIGEgaHBkIGhhcHBlbnMs IHdobydzIHJlc3BvbmlibGUgZm9yIG1ha2luZyBzdXJlIHRoZSBlZGlkL21vZGUgbGlzdAo+Pj4+ Pj4+Pj4+PiBpbiB0aGUgY29ubmVjdG9yIGlzIHVwLXRvLWRhdGU/IFdpdGggeW91ciBjdXJyZW50 IGNhbGxiYWNrIGRlc2lnbiB0aGF0J3MKPj4+Pj4+Pj4+Pj4gdXAgdG8gdGhlIGNhbGxiYWNrLCB3 aGljaCBkb2Vzbid0IGZlZWwgZ3JlYXQuIE1heWJlICBkcm1fYnJpZGdlX2hwZF9ub3RpZnkKPj4+ Pj4+Pj4+Pj4gc2hvdWxkIGd1YXJhbnRlZSB0aGF0IGl0J2xsIGZpcnN0IHdhbGsgdGhlIGNvbm5l Y3RvcnMgdG8gdXBkYXRlIHN0YXR1cyBhbmQKPj4+Pj4+Pj4+Pj4gZWRpZC9tb2RlIGxpc3QgZm9y IHRoZSBmaW5hbCBkcm1fY29ubmVjdG9yLiBBbmQgdGhlbiBpbnN0ZWFkIG9mIGp1c3QKPj4+Pj4+ Pj4+Pj4gcGFzc2luZyB0aGUgc2ltcGxlICJzdGF0dXMiLCBpdCdsbCBwYXNzIHRoZSBjb25uZWN0 b3IsIHdpdGggZXZlcnl0aGluZwo+Pj4+Pj4+Pj4+PiBjb3JyZWN0bHkgdXBkYXRlZC4KPj4+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+Pj4gT3RoZXJ3aXNlIGV2ZXJ5b25lIGludGVyZXN0ZWQgaW4gdGhhdCBo cGQgc2lnbmFsIHdpbGwgZ28gYW5kIHJlLWZldGNoIHRoZQo+Pj4+Pj4+Pj4+PiBlZGlkLCB3aGlj aCBpcyBub3Qgc28gYXdlc29tZSA6LSkKPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+PiArCj4+Pj4+ Pj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4+Pj4+PiArCSAqIEBsb3N0X2hvdHBsdWc6Cj4+Pj4+Pj4+ Pj4+Pj4gKwkgKgo+Pj4+Pj4+Pj4+Pj4+ICsJICogTm90aWZ5IHRoZSBicmlkZ2Ugb2YgZGlzcGxh eSBkaXNjb25uZWN0aW9uLgo+Pj4+Pj4+Pj4+Pj4+ICsJICoKPj4+Pj4+Pj4+Pj4+PiArCSAqIFRo aXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGl0IG1heSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2Vz IHRoYXQKPj4+Pj4+Pj4+Pj4+PiArCSAqIG5lZWQgdG8gYmUgbm90aWZpZWQgb2YgZGlzcGxheSBk aXNjb25uZWN0aW9uIGZvciBpbnRlcm5hbCByZWFzb25zLgo+Pj4+Pj4+Pj4+Pj4+ICsJICogT25l IHVzZSBjYXNlIGlzIHRvIHJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBDRUMgY29udHJvbGxl cnMgZm9yCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBIRE1JIGJyaWRnZXMuCj4+Pj4+Pj4+Pj4+Pj4gKwkg Ki8KPj4+Pj4+Pj4+Pj4+PiArCXZvaWQgKCpsb3N0X2hvdHBsdWcpKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UpOwo+Pj4+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+Pj4+Pj4+Pj4+ Pj4+ICsJICogQGhwZF9lbmFibGU6Cj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+Pj4+Pj4+Pj4+Pj4+ICsJ ICogRW5hYmxlIGhvdCBwbHVnIGRldGVjdGlvbi4gRnJvbSBub3cgb24gdGhlIGJyaWRnZSBzaGFs bCBjYWxsCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSBlYWNoIHRp bWUgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQgaW4gdGhlIG91dHB1dAo+Pj4+Pj4+Pj4+Pj4+ICsJICog Y29ubmVjdGlvbiBzdGF0dXMsIHVudGlsIGhvdCBwbHVnIGRldGVjdGlvbiBnZXRzIGRpc2FibGVk IHdpdGgKPj4+Pj4+Pj4+Pj4+PiArCSAqIEBocGRfZGlzYWJsZS4KPj4+Pj4+Pj4+Pj4+PiArCSAq Cj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsIGFuZCBzaGFsbCBv bmx5IGJlIGltcGxlbWVudGVkIGJ5IGJyaWRnZXMKPj4+Pj4+Pj4+Pj4+PiArCSAqIHRoYXQgc3Vw cG9ydCBob3QtcGx1ZyBub3RpZmljYXRpb24gd2l0aG91dCBwb2xsaW5nLiBCcmlkZ2VzIHRoYXQK Pj4+Pj4+Pj4+Pj4+PiArCSAqIGltcGxlbWVudCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUg QGhwZF9kaXNhYmxlIGNhbGxiYWNrIGFuZCBzZXQKPj4+Pj4+Pj4+Pj4+PiArCSAqIHRoZSBEUk1f QlJJREdFX09QX0hQRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4+Pj4+Pj4+Pj4+ Pj4gKwkgKi8KPj4+Pj4+Pj4+Pj4+PiArCXZvaWQgKCpocGRfZW5hYmxlKShzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlKTsKPj4+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPj4+Pj4+ Pj4+Pj4+PiArCSAqIEBocGRfZGlzYWJsZToKPj4+Pj4+Pj4+Pj4+PiArCSAqCj4+Pj4+Pj4+Pj4+ Pj4gKwkgKiBEaXNhYmxlIGhvdCBwbHVnIGRldGVjdGlvbi4gT25jZSB0aGlzIGZ1bmN0aW9uIHJl dHVybnMgdGhlIGJyaWRnZQo+Pj4+Pj4+Pj4+Pj4+ICsJICogc2hhbGwgbm90IGNhbGwgZHJtX2Jy aWRnZV9ocGRfbm90aWZ5KCkgd2hlbiBhIGNoYW5nZSBpbiB0aGUgb3V0cHV0Cj4+Pj4+Pj4+Pj4+ Pj4gKwkgKiBjb25uZWN0aW9uIHN0YXR1cyBvY2N1cnMuCj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+Pj4+ Pj4+Pj4+Pj4+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgc2hhbGwgb25seSBi ZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGF0IHN1cHBvcnQg aG90LXBsdWcgbm90aWZpY2F0aW9uIHdpdGhvdXQgcG9sbGluZy4gQnJpZGdlcyB0aGF0Cj4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBpbXBsZW1lbnQgaXQgc2hhbGwgYWxzbyBpbXBsZW1lbnQgdGhlIEBocGRf ZW5hYmxlIGNhbGxiYWNrIGFuZCBzZXQKPj4+Pj4+Pj4+Pj4+PiArCSAqIHRoZSBEUk1fQlJJREdF X09QX0hQRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4+Pj4+Pj4+Pj4+Pj4gKwkg Ki8KPj4+Pj4+Pj4+Pj4+PiArCXZvaWQgKCpocGRfZGlzYWJsZSkoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSk7Cj4+Pj4+Pj4+Pj4+Pj4gIH07Cj4+Pj4+Pj4+Pj4+Pj4gIAo+Pj4+Pj4+Pj4+Pj4+ ICAvKioKPj4+Pj4+Pj4+Pj4+PiBAQCAtMzcyLDYgKzQ3NywzOCBAQCBzdHJ1Y3QgZHJtX2JyaWRn ZV90aW1pbmdzIHsKPj4+Pj4+Pj4+Pj4+PiAgCWJvb2wgZHVhbF9saW5rOwo+Pj4+Pj4+Pj4+Pj4+ ICB9Owo+Pj4+Pj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4+Pj4+PiArLyoqCj4+Pj4+Pj4+Pj4+Pj4gKyAq IGVudW0gZHJtX2JyaWRnZV9vcHMgLSBCaXRtYXNrIG9mIG9wZXJhdGlvbnMgc3VwcG9ydGVkIGJ5 IHRoZSBicmlkZ2UKPj4+Pj4+Pj4+Pj4+PiArICovCj4+Pj4+Pj4+Pj4+Pj4gK2VudW0gZHJtX2Jy aWRnZV9vcHMgewo+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBARFJNX0JS SURHRV9PUF9ERVRFQ1Q6IFRoZSBicmlkZ2UgY2FuIGRldGVjdCBkaXNwbGF5cyBjb25uZWN0ZWQg dG8KPj4+Pj4+Pj4+Pj4+PiArCSAqIGl0cyBvdXRwdXQuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBm bGFnIHNoYWxsIGltcGxlbWVudCB0aGUKPj4+Pj4+Pj4+Pj4+PiArCSAqICZkcm1fYnJpZGdlX2Z1 bmNzLT5kZXRlY3QgY2FsbGJhY2suCj4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4+Pj4+PiAr CURSTV9CUklER0VfT1BfREVURUNUID0gQklUKDApLAo+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9FRElEOiBUaGUgYnJpZGdlIGNhbiByZXRyaWV2 ZSB0aGUgRURJRCBvZiB0aGUgZGlzcGxheQo+Pj4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGVkIHRv IGl0cyBvdXRwdXQuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsIGltcGxlbWVudAo+ Pj4+Pj4+Pj4+Pj4+ICsJICogdGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfZWRpZCBjYWxsYmFj ay4KPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+Pj4+Pj4+ICsJRFJNX0JSSURHRV9PUF9FRElE ID0gQklUKDEpLAo+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBARFJNX0JS SURHRV9PUF9IUEQ6IFRoZSBicmlkZ2UgY2FuIGRldGVjdCBob3QtcGx1ZyBhbmQgaG90LXVucGx1 Zwo+Pj4+Pj4+Pj4+Pj4+ICsJICogd2l0aG91dCByZXF1aXJpbmcgcG9sbGluZy4gQnJpZGdlcyB0 aGF0IHNldCB0aGlzIGZsYWcgc2hhbGwKPj4+Pj4+Pj4+Pj4+PiArCSAqIGltcGxlbWVudCB0aGUg JmRybV9icmlkZ2VfZnVuY3MtPmhwZF9lbmFibGUgYW5kCj4+Pj4+Pj4+Pj4+Pj4gKwkgKiAmZHJt X2JyaWRnZV9mdW5jcy0+ZGlzYWJsZV9ocGRfY2IgY2FsbGJhY2tzLgo+Pj4+Pj4+Pj4+Pj4+ICsJ ICovCj4+Pj4+Pj4+Pj4+Pj4gKwlEUk1fQlJJREdFX09QX0hQRCA9IEJJVCgyKSwKPj4+Pj4+Pj4+ Pj4+PiArCS8qKgo+Pj4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfTU9ERVM6IFRoZSBi cmlkZ2UgY2FuIHJldHJpZXZpbmcgdGhlIG1vZGVzIHN1cHBvcnRlZAo+Pj4+Pj4+Pj4+Pj4+ICsJ ICogYnkgdGhlIGRpc3BsYXkgYXQgaXRzIG91dHB1dC4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHJl YWRpbmQgRURJRAo+Pj4+Pj4+Pj4+Pj4+ICsJICogd2hpY2ggaXMgc2VwYXJhdGVseSBjb3ZlcmVk IGJ5IEBEUk1fQlJJREdFX09QX0VESUQuIEJyaWRnZXMgdGhhdCBzZXQKPj4+Pj4+Pj4+Pj4+PiAr CSAqIHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQgdGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRf bW9kZXMgY2FsbGJhY2suCj4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4+Pj4+PiArCURSTV9C UklER0VfT1BfTU9ERVMgPSBCSVQoMyksCj4+Pj4+Pj4+Pj4+Pj4gK307Cj4+Pj4+Pj4+Pj4+Pj4g Kwo+Pj4+Pj4+Pj4+Pj4+ICAvKioKPj4+Pj4+Pj4+Pj4+PiAgICogc3RydWN0IGRybV9icmlkZ2Ug LSBjZW50cmFsIERSTSBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPj4+Pj4+Pj4+Pj4+PiAgICov Cj4+Pj4+Pj4+Pj4+Pj4gQEAgLTM5OCw2ICs1MzUsMjkgQEAgc3RydWN0IGRybV9icmlkZ2Ugewo+ Pj4+Pj4+Pj4+Pj4+ICAJY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgKmZ1bmNzOwo+Pj4+ Pj4+Pj4+Pj4+ICAJLyoqIEBkcml2ZXJfcHJpdmF0ZTogcG9pbnRlciB0byB0aGUgYnJpZGdlIGRy aXZlcidzIGludGVybmFsIGNvbnRleHQgKi8KPj4+Pj4+Pj4+Pj4+PiAgCXZvaWQgKmRyaXZlcl9w cml2YXRlOwo+Pj4+Pj4+Pj4+Pj4+ICsJLyoqIEBvcHM6IGJpdG1hc2sgb2Ygb3BlcmF0aW9ucyBz dXBwb3J0ZWQgYnkgdGhlIGJyaWRnZSAqLwo+Pj4+Pj4+Pj4+Pj4+ICsJZW51bSBkcm1fYnJpZGdl X29wcyBvcHM7Cj4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4+Pj4+PiArCSAqIEB0eXBlOiBU eXBlIG9mIHRoZSBjb25uZWN0aW9uIGF0IHRoZSBicmlkZ2Ugb3V0cHV0Cj4+Pj4+Pj4+Pj4+Pj4g KwkgKiAoRFJNX01PREVfQ09OTkVDVE9SXyopLiBGb3IgYnJpZGdlcyBhdCB0aGUgZW5kIG9mIHRo aXMgY2hhaW4gdGhpcwo+Pj4+Pj4+Pj4+Pj4+ICsJICogaWRlbnRpZmllcyB0aGUgdHlwZSBvZiBj b25uZWN0ZWQgZGlzcGxheS4KPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+Pj4+Pj4+Pj4+Pj4+ICsJaW50 IHR5cGU7Cj4+Pj4+Pj4+Pj4+Pj4gKwkvKiogcHJpdmF0ZTogKi8KPj4+Pj4+Pj4+Pj4+PiArCS8q Kgo+Pj4+Pj4+Pj4+Pj4+ICsJICogQGhwZF9tdXRleDogUHJvdGVjdHMgdGhlIEBocGRfY2IgYW5k IEBocGRfZGF0YSBmaWVsZHMuCj4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPj4+Pj4+Pj4+Pj4+PiArCXN0 cnVjdCBtdXRleCBocGRfbXV0ZXg7Cj4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPj4+Pj4+Pj4+Pj4+PiAr CSAqIEBocGRfY2I6IEhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjaywgcmVnaXN0ZXJlZCB3aXRo Cj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUoKS4KPj4+Pj4+Pj4+Pj4+ PiArCSAqLwo+Pj4+Pj4+Pj4+Pj4+ICsJdm9pZCAoKmhwZF9jYikodm9pZCAqZGF0YSwgZW51bSBk cm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpOwo+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4+Pj4+Pj4+ Pj4+Pj4gKwkgKiBAaHBkX2RhdGE6IFByaXZhdGUgZGF0YSBwYXNzZWQgdG8gdGhlIEhvdCBwbHVn IGRldGVjdGlvbiBjYWxsYmFjawo+Pj4+Pj4+Pj4+Pj4+ICsJICogQGhwZF9jYi4KPj4+Pj4+Pj4+ Pj4+PiArCSAqLwo+Pj4+Pj4+Pj4+Pj4+ICsJdm9pZCAqaHBkX2RhdGE7Cj4+Pj4+Pj4+Pj4+Pj4g IH07Cj4+Pj4+Pj4+Pj4+Pj4gIAo+Pj4+Pj4+Pj4+Pj4+ICB2b2lkIGRybV9icmlkZ2VfYWRkKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+Pj4+Pj4+Pj4+Pj4+IEBAIC00MjgsNiArNTg4LDE0 IEBAIHZvaWQgZHJtX2F0b21pY19icmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlLAo+Pj4+Pj4+Pj4+Pj4+ICB2b2lkIGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+Pj4+Pj4+Pj4+Pj4+ICAJCQkgICAgICBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+Pj4+Pj4+Pj4+Pj4+ICAKPj4+Pj4+Pj4+Pj4+PiArdm9p ZCBkcm1fYnJpZGdlX2hwZF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPj4+Pj4+ Pj4+Pj4+PiArCQkJICAgdm9pZCAoKmNiKSh2b2lkICpkYXRhLAo+Pj4+Pj4+Pj4+Pj4+ICsJCQkJ ICAgICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpLAo+Pj4+Pj4+Pj4+Pj4+ICsJ CQkgICB2b2lkICpkYXRhKTsKPj4+Pj4+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9kaXNh YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+Pj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9i cmlkZ2VfaHBkX25vdGlmeShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+Pj4+Pj4+Pj4+Pj4+ ICsJCQkgICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cyk7Cj4+Pj4+Pj4+Pj4+Pj4g Kwo+Pj4+Pj4+Pj4+Pj4+ICAjaWZkZWYgQ09ORklHX0RSTV9QQU5FTF9CUklER0UKPj4+Pj4+Pj4+ Pj4+PiAgc3RydWN0IGRybV9icmlkZ2UgKmRybV9wYW5lbF9icmlkZ2VfYWRkKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsLAo+Pj4+Pj4+Pj4+Pj4+ICAJCQkJCXUzMiBjb25uZWN0b3JfdHlwZSk7CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs