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: Tue, 20 Aug 2019 01:45:02 +0300 Message-ID: <20190819224502.GW5011@pendragon.ideasonboard.com> References: <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> <20190814100403.GC5009@pendragon.ideasonboard.com> <20190814124006.GD7444@phenom.ffwll.local> <50b65a02-e9aa-c97f-6ada-31bcac4da93c@samsung.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 [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id D3F886E40F for ; Mon, 19 Aug 2019 22:45:10 +0000 (UTC) Content-Disposition: inline In-Reply-To: <50b65a02-e9aa-c97f-6ada-31bcac4da93c@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Hajda Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Sean Paul List-Id: dri-devel@lists.freedesktop.org SGkgQW5kcnplaiwKCk9uIE1vbiwgQXVnIDE5LCAyMDE5IGF0IDEwOjM4OjM1QU0gKzAyMDAsIEFu ZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gT24gMTQuMDguMjAxOSAxNDo0MCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiA+IE9uIFdlZCwgQXVnIDE0LCAyMDE5IGF0IDAxOjA0OjAzUE0gKzAzMDAsIExhdXJl bnQgUGluY2hhcnQgd3JvdGU6Cj4gPj4gT24gV2VkLCBBdWcgMTQsIDIwMTkgYXQgMDg6MjM6MTJB TSArMDIwMCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiA+Pj4gT24gMTEuMDguMjAxOSAwMDo0Mywg TGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+Pj4+IE9uIEZyaSwgQXVnIDA5LCAyMDE5IGF0IDAx OjU1OjUzUE0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gPj4+Pj4gT24gMDguMDguMjAx OSAyMTozMiwgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+Pj4+Pj4gT24gVHVlLCBKdWwgMTYs IDIwMTkgYXQgMDM6NTc6MjFQTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiA+Pj4+Pj4+ IE9uIDE2LjA3LjIwMTkgMTE6MDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4+Pj4+Pj4gT24g RnJpLCBKdWwgMTIsIDIwMTkgYXQgMTE6MDE6MzhBTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3cm90 ZToKPiA+Pj4+Pj4+Pj4gT24gMTEuMDcuMjAxOSAxNzo1MCwgRGFuaWVsIFZldHRlciB3cm90ZToK PiA+Pj4+Pj4+Pj4+IE9uIFRodSwgSnVsIDExLCAyMDE5IGF0IDA1OjEyOjI2UE0gKzAyMDAsIEFu ZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gPj4+Pj4+Pj4+Pj4gT24gMTEuMDcuMjAxOSAxNToxOCwgRGFu aWVsIFZldHRlciB3cm90ZToKPiA+Pj4+Pj4+Pj4+Pj4gT24gVGh1LCBKdWwgMTEsIDIwMTkgYXQg MDI6NDE6MDFQTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiA+Pj4+Pj4+Pj4+Pj4+IE9u IDExLjA3LjIwMTkgMDk6MzUsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4+Pj4+Pj4+Pj4+Pj4g T24gV2VkLCBKdWwgMTAsIDIwMTkgYXQgMDI6MTI6MTRQTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3 cm90ZToKPiA+Pj4+Pj4+Pj4+Pj4+Pj4gSGkgTGF1cmVudCwKPiA+Pj4+Pj4+Pj4+Pj4+Pj4KPiA+ Pj4+Pj4+Pj4+Pj4+Pj4gSSBsaWtlIHRoZSBhcHByb2FjaCwgY3VycmVudCBwcmFjdGljZSB3aGVu IGFsbW9zdCBldmVyeSBicmlkZ2Ugc2hvdWxkCj4gPj4+Pj4+Pj4+Pj4+Pj4+IG9wdGlvbmFsbHkg aW1wbGVtZW50IGNvbm5lY3Rvciwgb3IgYWx0ZXJuYXRpdmVseSBkb3duc3RyZWFtIGJyaWRnZSBv cgo+ID4+Pj4+Pj4+Pj4+Pj4+PiBwYW5lbCBpcyB2ZXJ5IHBhaW5mdWwuCj4gPj4+Pj4+Pj4+Pj4+ Pj4gWWVhaCBJIHRoaW5rIHRoaXMgbG9va3MgbW9zdGx5IHJlYXNvbmFibGUuIFNvbWUgYXBpIGRl c2lnbiBjb21tZW50cyBvbiB0b3AKPiA+Pj4+Pj4+Pj4+Pj4+PiBvZiBBbmRyemVqJywgd2l0aCB0 aGUgZmFpciB3YXJuaW5nIHRoYXQgSSBkaWRuJ3QgYm90aGVyIHRvIHJlYWQgdXAgb24gaG93Cj4g Pj4+Pj4+Pj4+Pj4+Pj4gaXQncyBhbGwgdXNlZCBpbiB0aGUgZW5kLiBJIHByb2JhYmx5IHNob3Vs ZCBnbyBhbmQgZG8gdGhhdCwgYXQgbGVhc3QgdG8KPiA+Pj4+Pj4+Pj4+Pj4+PiBnZXQgYSBmZWVs aW5nIGZvciB3aGF0IHlvdXIgaHBkX2NiIHVzdWFsbHkgZG9lcy4KPiA+Pj4+Pj4+Pj4+Pj4+Pgo+ ID4+Pj4+Pj4+Pj4+Pj4+PiBNb3JlIGNvbW1lbnRzIGlubGluZWQuCj4gPj4+Pj4+Pj4+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4+Pj4+Pj4+IE9uIDA3LjA3LjIwMTkgMjA6MTgsIExhdXJlbnQgUGluY2hhcnQg d3JvdGU6Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBUbyBzdXBwb3J0IGltcGxlbWVudGF0aW9uIG9mIERS TSBjb25uZWN0b3JzIG9uIHRvcCBvZiBEUk0gYnJpZGdlcwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gaW5z dGVhZCBvZiBieSBicmlkZ2VzLCB0aGUgZHJtX2JyaWRnZSBuZWVkcyB0byBleHBvc2UgbmV3IG9w ZXJhdGlvbnMgYW5kCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBkYXRhOgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4K PiA+Pj4+Pj4+Pj4+Pj4+Pj4+IC0gT3V0cHV0IGRldGVjdGlvbiwgaG90LXBsdWcgbm90aWZpY2F0 aW9uLCBtb2RlIHJldHJpZXZhbCBhbmQgRURJRAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gICByZXRyaWV2 YWwgb3BlcmF0aW9ucwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gLSBCaXRtYXNrIG9mIHN1cHBvcnRlZCBv cGVyYXRpb25zCj4gPj4+Pj4+Pj4+Pj4+Pj4+IFdoeSBkbyB3ZSBuZWVkIHRoZXNlIGJpdG1hc2sg YXQgYWxsPyBXaHkgY2Fubm90IHdlIHJlbHkgb24gcHJlc2VuY2Ugb2YKPiA+Pj4+Pj4+Pj4+Pj4+ Pj4gb3BlcmF0aW9uJ3MgY2FsbGJhY2s/Cj4gPj4+Pj4+Pj4+Pj4+Pj4gWWVhaCBhbHNvIG5vdCBh IGh1Z2UgZmFuIG9mIHRoZXNlIGJpdG1hc2tzLiBTbWVsbHMgbGlrZQo+ID4+Pj4+Pj4+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4+Pj4+Pj4gRFJJVkVSX0dFTXxEUklWRVJfTU9ERVNFVCwgYW5kIEkgcGVyc29u YWxseSByZWFsbHkgaGF0ZSB0aG9zZS4gRWFzeSB0bwo+ID4+Pj4+Pj4+Pj4+Pj4+IGFkZCwgZ2Vu ZXJhbGx5IGdvb2QgZXhjdXNlIHRvIG5vdCBoYXZlIHRvIHRoaW5rIHRocm91Z2ggdGhlIGRlc2ln biBiZXR3ZWVuCj4gPj4+Pj4+Pj4+Pj4+Pj4gZGlmZmVyZW50IHBhcnRzIG9mIGRyaXZlcnMgLSAi anVzdCIgYWRkIGFub3RoZXIgZmxhZy4KPiA+Pj4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4+ Pj4gLSBCcmlkZ2Ugb3V0cHV0IHR5cGUKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+ Pj4+PiBBZGQgYW5kIGRvY3VtZW50IHRoZXNlLgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+ Pj4+Pj4+Pj4+IFRocmVlIG5ldyBicmlkZ2UgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYWxzbyBhZGRl ZCB0byBoYW5kbGUgaG90IHBsdWcKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+IG5vdGlmaWNhdGlvbiBpbiBh IHdheSB0aGF0IGlzIGFzIHRyYW5zcGFyZW50IGFzIHBvc3NpYmxlIGZvciB0aGUKPiA+Pj4+Pj4+ Pj4+Pj4+Pj4+IGJyaWRnZXMuCj4gPj4+Pj4+Pj4+Pj4+Pj4+IERvY3VtZW50YXRpb24gb2YgbmV3 IG9wc2VzIGRvZXMgbm90IGV4cGxhaW4gaG93IGl0IHNob3VsZCBjb29wZXJhdGUgd2l0aAo+ID4+ Pj4+Pj4+Pj4+Pj4+PiBicmlkZ2UgY2hhaW5pbmcsIEkgc3VwcG9zZSB0aGV5IHNob3VsZCBiZSBj aGFpbmVkIGV4cGxpY2l0bHksIGFtIEkKPiA+Pj4+Pj4+Pj4+Pj4+Pj4gcmlnaHQ/IE1vcmUgY29t bWVudHMgYWJvdXQgaXQgbGF0ZXIuCj4gPj4+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+Pj4+ PiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFz b25ib2FyZC5jb20+Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAtLS0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICBk cml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIHwgIDkyICsrKysrKysrKysrKysrKysrKysKPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+ICBpbmNsdWRlL2RybS9kcm1fYnJpZGdlLmggICAgIHwgMTcwICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgMiBmaWxl cyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4+Pj4+Pj4+Pj4+ Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2JyaWRnZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4+Pj4+Pj4+Pj4+Pj4+ Pj4gaW5kZXggNTE5NTc3ZjM2M2UzLi4zYzJhMjU1ZGY3YWYgMTAwNjQ0Cj4gPj4+Pj4+Pj4+Pj4+ Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gPj4+Pj4+Pj4+Pj4+Pj4+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBA QCAtNzAsNiArNzAsOCBAQCBzdGF0aWMgTElTVF9IRUFEKGJyaWRnZV9saXN0KTsKPiA+Pj4+Pj4+ Pj4+Pj4+Pj4+ICAgKi8KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICB2b2lkIGRybV9icmlkZ2VfYWRkKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgewo+ID4+Pj4+Pj4+ Pj4+Pj4+Pj4gKwltdXRleF9pbml0KCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPj4+Pj4+Pj4+Pj4+ Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgCW11dGV4X2xvY2soJmJyaWRnZV9sb2NrKTsKPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+ICAJbGlzdF9hZGRfdGFpbCgmYnJpZGdlLT5saXN0LCAmYnJpZGdlX2xp c3QpOwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIAltdXRleF91bmxvY2soJmJyaWRnZV9sb2NrKTsKPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+IEBAIC04Niw2ICs4OCw4IEBAIHZvaWQgZHJtX2JyaWRnZV9yZW1vdmUo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICAJbXV0ZXhfbG9j aygmYnJpZGdlX2xvY2spOwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIAlsaXN0X2RlbF9pbml0KCZicmlk Z2UtPmxpc3QpOwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIAltdXRleF91bmxvY2soJmJyaWRnZV9sb2Nr KTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfZGVzdHJv eSgmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIH0KPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+ICBFWFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfcmVtb3ZlKTsKPiA+Pj4+Pj4+Pj4+Pj4+ Pj4+ICAKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+IEBAIC00NjMsNiArNDY3LDk0IEBAIHZvaWQgZHJtX2F0 b21pY19icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4+Pj4+ Pj4+Pj4+PiAgfQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19i cmlkZ2VfZW5hYmxlKTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsv KioKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUgLSBlbmFibGUg aG90IHBsdWcgZGV0ZWN0aW9uIGZvciB0aGUgYnJpZGdlCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICog QGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICog QGNiOiBob3QtcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBA ZGF0YTogZGF0YSB0byBiZSBwYXNzZWQgdG8gdGhlIGhvdC1wbHVnIGRldGVjdGlvbiBjYWxsYmFj awo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICogQ2FsbCAmZHJt X2JyaWRnZV9mdW5jcy5ocGRfZW5hYmxlIGFuZCByZWdpc3RlciB0aGUgZ2l2ZW4gQGNiIGFuZCBA ZGF0YSBhcwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIGhvdCBwbHVnIG5vdGlmaWNhdGlvbiBjYWxs YmFjay4gRnJvbSBub3cgb24gdGhlIEBjYiB3aWxsIGJlIGNhbGxlZCB3aXRoCj4gPj4+Pj4+Pj4+ Pj4+Pj4+PiArICogQGRhdGEgd2hlbiBhbiBvdXRwdXQgc3RhdHVzIGNoYW5nZSBpcyBkZXRlY3Rl ZCBieSB0aGUgYnJpZGdlLCB1bnRpbCBob3QgcGx1Zwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIG5v dGlmaWNhdGlvbiBnZXRzIGRpc2FibGVkIHdpdGggZHJtX2JyaWRnZV9ocGRfZGlzYWJsZSgpLgo+ ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICogSG90IHBsdWcgZGV0 ZWN0aW9uIGlzIHN1cHBvcnRlZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGlz IHNldCBpbgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIGJyaWRnZS0+b3BzLiBUaGlzIGZ1bmN0aW9u IHNoYWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB0aGUgZmxhZyBpcyBub3Qgc2V0Lgo+ID4+Pj4+Pj4+ Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICogT25seSBvbmUgaG90IHBsdWcgZGV0 ZWN0aW9uIGNhbGxiYWNrIGNhbiBiZSByZWdpc3RlcmVkIGF0IGEgdGltZSwgaXQgaXMgYW4KPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBlcnJvciB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiBob3Qg cGx1ZyBkZXRlY3Rpb24gaXMgYWxyZWFkeSBlbmFibGVkIGZvcgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4g KyAqIHRoZSBicmlkZ2UuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICovCj4gPj4+Pj4+Pj4+Pj4+Pj4+ IFRvIHNpbXBsaWZ5IGFyY2hpdGVjdHVyZSBtYXliZSB3b3VsZCBiZSBiZXR0ZXIgdG8gZW5hYmxl IGhwZCBqdXN0IG9uCj4gPj4+Pj4+Pj4+Pj4+Pj4+IGJyaWRnZSBhdHRhY2g6Cj4gPj4+Pj4+Pj4+ Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+Pj4+IGJyaWRnZS0+aHBkX2NiID0gY2I7Cj4gPj4+Pj4+Pj4+ Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+Pj4+IGJyaWRnZS0+aHBkX2RhdGEgPSBkYXRhOwo+ID4+Pj4+ Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4+PiByZXQgPSBkcm1fYnJpZGdlX2F0dGFjaCguLi4p Owo+ID4+Pj4+Pj4+Pj4+Pj4+IFllYWggSSBsaWtlIHRoaXMgbW9yZS4gVGhlIG90aGVyIHByb2Js ZW0gaGVyZSBpcywgd2hhdCBpZiB5b3UgbmVlZCBtb3JlCj4gPj4+Pj4+Pj4+Pj4+Pj4gdGhhbiAx IGNhbGxiYWNrIHJlZ2lzdGVycyBvbiB0aGUgc2FtZSBicmlkZ2UgaGRwIHNpZ25hbD8KPiA+Pj4+ Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4+PiBUaGlzIHdheSB3ZSBjb3VsZCBhdm9pZCBhZGRp bmcgbmV3IGNhbGxiYWNrcyBocGRfKGVuYWJsZXxkaXNhYmxlKQo+ID4+Pj4+Pj4+Pj4+Pj4+PiB3 aXRob3V0IGJpZyBzYWNyaWZpY2VzLgo+ID4+Pj4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4+ PiBPbmUgbW9yZSB0aGluZzogSFBEIGluIERpc3BsYXlQb3J0L0hETUkgYmVzaWRlIHNpZ25hbGxp bmcgcGx1Zy91bnBsdWcsCj4gPj4+Pj4+Pj4+Pj4+Pj4+IG5vdGlmaWVzIGFib3V0IHNpbmsgc3Rh dHVzIGNoYW5nZSwgaG93IGl0IHRyYW5zbGF0ZXMgdG8gdGhpcyBjYj8KPiA+Pj4+Pj4+Pj4+Pj4+ Pj4KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2VuYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkJCSAgIHZvaWQgKCpjYiko dm9pZCAqZGF0YSwKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJCQkJICAgICAgZW51bSBkcm1fY29ubmVj dG9yX3N0YXR1cyBzdGF0dXMpLAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkJCSAgIHZvaWQgKmRhdGEp Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArewo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwlpZiAoIWJyaWRnZSB8 fCAhYnJpZGdlLT5mdW5jcy0+aHBkX2VuYWJsZSkKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJCXJldHVy bjsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfbG9jaygm YnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4+ Pj4gKwlpZiAoV0FSTihicmlkZ2UtPmhwZF9jYiwgIkhvdCBwbHVnIGRldGVjdGlvbiBhbHJlYWR5 IGVuYWJsZWRcbiIpKQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkJZ290byB1bmxvY2s7Cj4gPj4+Pj4+ Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+aHBkX2NiID0gY2I7Cj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+aHBkX2RhdGEgPSBkYXRhOwo+ID4+Pj4+Pj4+Pj4+ Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmZ1bmNzLT5ocGRfZW5hYmxlKGJy aWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArdW5sb2NrOgo+ ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwo ZHJtX2JyaWRnZV9ocGRfZW5hYmxlKTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+ICsvKioKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9kaXNhYmxl IC0gZGlzYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24gZm9yIHRoZSBicmlkZ2UKPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+ICsgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIENhbGwgJmRybV9icmlkZ2VfZnVuY3Mu aHBkX2Rpc2FibGUgYW5kIHVucmVnaXN0ZXIgdGhlIGhvdCBwbHVnIGRldGVjdGlvbgo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4gKyAqIGNhbGxiYWNrIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB3aXRoIGRybV9i cmlkZ2VfaHBkX2VuYWJsZSgpLiBPbmNlIHRoaXMKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBmdW5j dGlvbiByZXR1cm5zIHRoZSBjYWxsYmFjayB3aWxsIG5vdCBiZSBjYWxsZWQgYnkgdGhlIGJyaWRn ZSB3aGVuIGFuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICogb3V0cHV0IHN0YXR1cyBjaGFuZ2Ugb2Nj dXJzLgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICogSG90IHBs dWcgZGV0ZWN0aW9uIGlzIHN1cHBvcnRlZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQRCBm bGFnIGlzIHNldCBpbgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIGJyaWRnZS0+b3BzLiBUaGlzIGZ1 bmN0aW9uIHNoYWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB0aGUgZmxhZyBpcyBub3Qgc2V0Lgo+ID4+ Pj4+Pj4+Pj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9o cGRfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4g K3sKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJaWYgKCFicmlkZ2UgfHwgIWJyaWRnZS0+ZnVuY3MtPmhw ZF9kaXNhYmxlKQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkJcmV0dXJuOwo+ID4+Pj4+Pj4+Pj4+Pj4+ Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwltdXRleF9sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7 Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+ZnVuY3MtPmhwZF9kaXNhYmxlKGJyaWRnZSk7 Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+aHBkX2Ni ID0gTlVMTDsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJYnJpZGdlLT5ocGRfZGF0YSA9IE5VTEw7Cj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4+ Pj4+Pj4+Pj4+Pj4+Pj4gK30KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChk cm1fYnJpZGdlX2hwZF9kaXNhYmxlKTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+ICsvKioKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9ub3RpZnkg LSBub3RpZnkgaG90IHBsdWcgZGV0ZWN0aW9uIGV2ZW50cwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAq IEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAq IEBzdGF0dXM6IG91dHB1dCBjb25uZWN0aW9uIHN0YXR1cwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAq Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICogQnJpZGdlIGRyaXZlcnMgc2hhbGwgY2FsbCB0aGlzIGZ1 bmN0aW9uIHRvIHJlcG9ydCBob3QgcGx1ZyBldmVudHMgd2hlbiB0aGV5Cj4gPj4+Pj4+Pj4+Pj4+ Pj4+PiArICogZGV0ZWN0IGEgY2hhbmdlIGluIHRoZSBvdXRwdXQgc3RhdHVzLCB3aGVuIGhvdCBw bHVnIGRldGVjdGlvbiBoYXMgYmVlbgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqIGVuYWJsZWQgYnkg dGhlICZkcm1fYnJpZGdlX2Z1bmNzLmhwZF9lbmFibGUgY2FsbGJhY2suCj4gPj4+Pj4+Pj4+Pj4+ Pj4+PiArICoKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9uIHNoYWxsIGJlIGNh bGxlZCBpbiBhIGNvbnRleHQgdGhhdCBjYW4gc2xlZXAuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArICov Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICBlbnVtIGRybV9jb25u ZWN0b3Jfc3RhdHVzIHN0YXR1cykKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICt7Cj4gPj4+Pj4+Pj4+Pj4+ Pj4+PiArCW11dGV4X2xvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ ICsJaWYgKGJyaWRnZS0+aHBkX2NiKQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkJYnJpZGdlLT5ocGRf Y2IoYnJpZGdlLT5ocGRfZGF0YSwgc3RhdHVzKTsKPiA+Pj4+Pj4+Pj4+Pj4+PiBTbyB0aGlzIGlz bid0IHF1aXRlIHdoYXQgSSBoYWQgaW4gbWluZC4gSW5zdGVhZCBzb21ldGhpbmcgbGlrZSB0aGlz Ogo+ID4+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+Pj4gCS8qIGl0ZXJhdGVzIG92ZXIgYWxs IGJyaWRnZXMgaW4gdGhlIGNoYWluIGNvbnRhaW5pbmcgQGJyaWRnZSAqLwo+ID4+Pj4+Pj4+Pj4+ Pj4+IAlmb3JfZWFjaF9icmlkZ2UodG1wX2JyaWRnZSwgYnJpZGdlKSB7Cj4gPj4+Pj4+Pj4+Pj4+ Pj4gCQlpZiAodG1wX2JyaWRnZSA9PSBicmlkZ2UpCj4gPj4+Pj4+Pj4+Pj4+Pj4gCQkJY29udGlu dWU7Cj4gPj4+Pj4+Pj4+Pj4+Pj4gCQlpZiAoYnJpZGdlLT5ocGRfbm90aWZ5KTsKPiA+Pj4+Pj4+ Pj4+Pj4+PiAJCQlicmlkZ2UtPmhwZF9ub3RpZnkodG1wX2JyaWRnZSwgYnJpZGdlLCBzdGF0dXMp Owo+ID4+Pj4+Pj4+Pj4+Pj4+IAl9Cj4gPj4+Pj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4+PiAJ ZW5jb2RlciA9IGVuY29kZXJfZm9yX2JyaWRnZShicmlkZ2UpOwo+ID4+Pj4+Pj4+Pj4+Pj4+IAlp ZiAoZW5jb2Rlci0+aGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KQo+ID4+Pj4+Pj4+ Pj4+Pj4+IAkJZW5jb2Rlci0+aGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KGVuY29k ZXIsIGJyaWRnZSwgc3RhdHVzKTsKPiA+Pj4+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4+IAlk ZXYgPSBicmlkZ2UtPmRldgo+ID4+Pj4+Pj4+Pj4+Pj4+IAlpZiAoZGV2LT5tb2RlX2NvbmZpZy5o ZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkpCj4gPj4+Pj4+Pj4+Pj4+Pj4gCQlkZXYt Pm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeShkZXYsIGJyaWRn ZSwgc3RhdHVzKQo+ID4+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+Pj4gTm8gcmVnaXN0ZXIg Y2FsbGJhY2sgbmVlZGVkLCBubyBsb2NraW5nIG5lZWRlZCwgZXZlcnlvbmUgZ2V0cyBleGFjdGx5 IHRoZQo+ID4+Pj4+Pj4+Pj4+Pj4+IGhwZCB0aGV5IHdhbnQvbmVlZC4KPiA+Pj4+Pj4+Pj4+Pj4+ IEFzIEkgdW5kZXJzdGFuZCB5b3Ugd2FudCB0byBub3RpZnkgZXZlcnkgbWVtYmVyIG9mIHRoZSBw aXBlbGluZS4KPiA+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PiBJIHRoaW5rIGl0IHNob3Vs ZCBiZSBlbm91Z2ggdG8gbm90aWZ5IG9ubHkgdGhlIHNvdXJjZSwgYW5kIHRoZW4gc291cmNlCj4g Pj4+Pj4+Pj4+Pj4+PiBzaG91bGQgZGVjaWRlIGlmL3doZW4gdGhlIGhwZCBzaG91bGQgYmUgcHJv cGFnYXRlZCB1cHN0cmVhbS4KPiA+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+PiBJdCBsb29r cyBtb3JlIGdlbmVyaWMgZm9yIG1lLgo+ID4+Pj4+Pj4+Pj4+PiBJJ20gbm90IHBhcnNpbmcgLi4u IGRvIHlvdSB0aGluayBteSBpZGVhIGlzIG1vcmUgZ2VuZXJpYyBhbmQgdXNlZnVsLCBvcgo+ID4+ Pj4+Pj4+Pj4+PiB0aGUgb25lIGZyb20gTGF1cmVudD8gS2luZGEgY29uZnVzZWQgaGVyZS4KPiA+ Pj4+Pj4+Pj4+PiBSZWdhcmRpbmcgZ2VuZXJhbCBpZGVhOgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+ Pj4+Pj4gMS4gTGF1cmVudCdzIGFwcHJvYWNoIGlzIHRvIG5vdGlmeSBvbmx5IGNvbnN1bWVyLCBJ IGd1ZXNzIHVzdWFsbHkgdmlkZW8KPiA+Pj4+Pj4+Pj4+PiBzb3VyY2UuCj4gPj4+Pj4+Pj4+Pj4K PiA+Pj4+Pj4+Pj4+PiAyLiBZb3VyIGlzIHRvIG5vdGlmeSBhbGwgb3RoZXIgYnJpZGdlcyBhbmQg ZW5jb2Rlci4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IEFuZCBJIHByZWZlciAxc3QgYXBw cm9hY2gsIHdoeToKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IC0gdGhlIHNvdXJjZSBjYW4g ZGVjaWRlIGlmL3doZW4gYW5kIHRvIHdobyBwcm9wYWdhdGUgdGhlIHNpZ25hbCwKPiA+Pj4+Pj4+ Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IC0gaXMgbW9yZSBnZW5lcmljLCBmb3IgZXhhbXBsZSBpZiBicmlk Z2Ugc2VuZCBzaWduYWwgdG8gdHdvCj4gPj4+Pj4+Pj4+Pj4gbW9uaXRvcnMvcGFuZWxzLCBpdCBj YW4gZGVsYXkgaHBkIHByb3BhZ2F0aW9uIHRpbGwgYm90aCBzaW5rcyBhcmUgcHJlc2VudCwKPiA+ Pj4+Pj4+Pj4+IFdpdGggTGF1cmVudCdzIGFwcHJvYWNoIHRoZSBicmlkZ2UgY2Fubm90IHNlbmQg dGhlIGhwZCB0byBtb3JlIHRoYW4gb25lCj4gPj4+Pj4+Pj4+PiBjb25zdW1lci4gVGhlcmUncyBv bmx5IDEgY2FsbGJhY2suIFNvIHlvdSdyZSBleGFtcGxlIGRvZXNuJ3Qgd29yay4KPiA+Pj4+Pj4+ Pj4gSWYgdGhlcmUgd2lsbCBiZSB0d28gY29uc3VtZXJzLCB0aGVyZSB3aWxsIGJlIHR3byBicmlk Z2UgYXR0YWNobWVudHMsCj4gPj4+Pj4+Pj4+IHRodXMgdGhlcmUgd2lsbCBiZSB0d28gbm90aWZp Y2F0aW9ucywgaXQgc2hvdWxkIHdvcmsuCj4gPj4+Pj4+Pj4gMiBjb25zdW1lcnMsIDEgcHJvZHVj ZXIuIFRoZXJlJ3Mgb25seSBfb25lXyBjYWxsYmFjayBpbiB0aGUgcHJvZHVjZXIuIFRoZQo+ID4+ Pj4+Pj4+IGNhbGxiYWNrIGlzIHJlZ2lzdGVyZWQgb24gdGhlIHByb2R1Y2UgYnJpZGdlLCBub3Qg b24gdGhlIGNvbnN1bWVyIGJyaWRnZQo+ID4+Pj4+Pj4+IChvciBJJ20gdG90YWxsbHkgbWlzcmVh ZGluZyB3aGF0IExhdXJlbnQgZG9lcyBoZXJlKS4KPiA+Pj4+Pj4+IEkgaGF2ZSBhc3N1bWVkIHRo YXQgaWYgZGV2aWNlcyBleHBvc2VzIHR3byBoYXJkd2FyZSBzaW5rIGludGVyZmFjZXMgaXQKPiA+ Pj4+Pj4+IHdpbGwgZXhwb3NlIHR3byBzZXBhcmF0ZSBicmlkZ2VzIC0gb2YgY291cnNlIGl0IHdp bGwgbm90IHdvcmsgd2l0aAo+ID4+Pj4+Pj4gImJyaWRnZSBjaGFpbmluZyIgdGhpbmcsIGJ1dCB0 aGlzIGlzIGEgZGlmZmVyZW50IHN0b3J5Lgo+ID4+Pj4+PiBEYW5pZWwgaXMgcmlnaHQgdGhhdCB0 aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IGFsbG93cyBvbmUKPiA+Pj4+Pj4gY29uc3Vt ZXIuIFRoaXMgaXMgaG93ZXZlciBub3QgYSBsaW1pdGF0aW9uIG9mIHRoZSBBUEksIGJ1dCBvZiBp dHMKPiA+Pj4+Pj4gaW1wbGVtZW50YXRpb24sIGFzIEkgb25seSBuZWVkZWQgYSBzaW5nbGUgY29u c3VtZXIuIFRoZSBoZWxwZXJzIGluIHRoaXMKPiA+Pj4+Pj4gc2VyaWVzIGVuc3VyZSB0aGF0IG5l aXRoZXIgdGhlIGNvbnN1bWVyIG5vciB0aGUgcHJvZHVjZXIgcG9rZSBpbiB0aGUKPiA+Pj4+Pj4g ZHJtX2JyaWRnZSBzdHJ1Y3R1cmUgdG8gY2FsbCBiYWNrIHRvIHRoZSBIUEQgaGFuZGxlcjoKPiA+ Pj4+Pj4KPiA+Pj4+Pj4gLSBUaGUgY29uc3VtZXIgY2FsbHMgZHJtX2JyaWRnZV9ocGRfZW5hYmxl KCkgYW5kCj4gPj4+Pj4+ICAgZHJtX2JyaWRnZV9ocGRfZGlzYWJsZSgpLCB3aGljaCBjb3VsZCBv ZmZlciBhIHJlZmVyZW5jZS1jb3VudGVkCj4gPj4+Pj4+ICAgYmVoYXZpb3VyIGlmIGRlc2lyZWQg d2l0aG91dCBjaGFuZ2VzIHRvIHRoZSBjb25zdW1lci4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gLSBUaGUg cHJvZHVjZXIgZ2V0cyBjb25maWd1cmVkIGJ5IC5ocGRfZW5hYmxlKCkgYW5kIC5ocGRfZGlzYWJs ZSgpLAo+ID4+Pj4+PiAgIHdoaWNoIGNvdWxkIGFsc28gZWFzaWx5IGFjY29tbW9kYXRlIHJlZmVy ZW5jZS1jb3VudGluZyBpbiB0aGUgZHJtCj4gPj4+Pj4+ICAgYnJpZGdlIGNvcmUgd2l0aG91dCBj aGFuZ2VzIHRvIHRoZSBwcm9kdWNlci4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gLSBUaGUgcHJvZHVjZXIg bm90aWZpZXMgSFBEIHdpdGggZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCksIHdoaWNoIGNvdWxkCj4g Pj4+Pj4+ICAgZWFzaWx5IGJlIGV4dGVuZGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29uc3VtZXJz IHdpdGhvdXQgY2hhbmdlcyB0bwo+ID4+Pj4+PiAgIHRoZSBwcm9kdWNlci4KPiA+Pj4+Pj4KPiA+ Pj4+Pj4gVGhpcyBpcyBhY3R1YWxseSBteSBzZWNvbmQgdmVyc2lvbiBvZiB0aGUgSFBEIG1lY2hh bmlzbS4gVGhlIGZpcnN0Cj4gPj4+Pj4+IHZlcnNpb24gd2FzIG5ldmVyIHBvc3RlZCwgcG9rZWQg aW50byBkcm1fYnJpZGdlLCBhbmQgcmVxdWlyZWQgdGhlCj4gPj4+Pj4+IHByb2R1Y2VyIHRvIGJl IGF3YXJlIG9mIHRoZSBjYWxsYmFja3MuIEFmdGVyIGRpc2N1c3NpbmcgdGhpcyBwcml2YXRlbHkK PiA+Pj4+Pj4gd2l0aCBEYW5pZWwsIEkgY2FtZSB1cCB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBp biB0aGlzIHNlcmllcyB0aGF0LAo+ID4+Pj4+PiB3aGlsZSBub3Qgc3VwcG9ydGluZyBtdWx0aXBs ZSBjb25zdW1lcnMgbm93LCBtYWtlcyBpdCBlYXN5IHRvIGV4dGVuZAo+ID4+Pj4+PiBsYXRlciB3 aXRob3V0IG1pbmltYWwgZWZmb3J0Lgo+ID4+Pj4+Pgo+ID4+Pj4+PiBEYW5pZWwncyBwcm9wb3Nl ZCBpbXBsZW1lbnRhdGlvbiBhYm92ZSBsb29rcyByZWFzb25hYmxlIHRvIG1lLCBwcm92aWRlZAo+ ID4+Pj4+PiB3ZSBjYW4gaXRlcmF0ZSBvdmVyIHRoZSBicmlkZ2VzIGluIGFuIG9yZGVyIHRoYXQg ZG9uJ3QgZGVwZW5kIG9uIHRoZQo+ID4+Pj4+PiBwb3NpdGlvbiBvZiB0aGUgcHJvZHVjZXIgaW4g dGhlIGNoYWluIChzaG91bGQgYmUgZWFzeSB0byBzb2x2ZSBieQo+ID4+Pj4+PiBzdGFydGluZyBh dCB0aGUgZW5jb2RlciBmb3IgaW5zdGFuY2UpLiBJdCBob3dldmVyIGxvb2tzIGEgYml0IGxpa2Ug YQo+ID4+Pj4+PiBtaWRsYXllciB0byBtZSA6LSkgVGhhdCdzIHdoeSBJIGhhdmUgYSBzaW1pbGFy IGltcGxlbWVudGF0aW9uIGluIHRoZQo+ID4+Pj4+PiBjb25uZWN0b3ItYnJpZGdlIGhlbHBlciwg d2hpY2ggY291bGQgYmUgZXh0ZW5kZWQgdG8gY2FsbAo+ID4+Pj4+PiBlbmNvZGVyLT5oZWxwZXJf cHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoKSBhbmQKPiA+Pj4+Pj4gZGV2LT5tb2RlX2NvbmZp Zy5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoKSBpbnN0ZWFkIG9mCj4gPj4+Pj4+ IGhhcmRjb2RpbmcgZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudCgpLiBNb3ZpbmcgdGhlIGNv ZGUgdG8KPiA+Pj4+Pj4gZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCkgd291bGQgb24gdGhlIG90aGVy IGhhbmQgc2V0IHRoZSBub3RpZmljYXRpb24KPiA+Pj4+Pj4gc2VxdWVuY2UgdG93YXJkcyB0aGUg ZW5jb2RlciBhbmQgZHJpdmVyIGluIHN0b25lLiBEYW5pZWwsIGRvIHlvdSB0aGluawo+ID4+Pj4+ PiB0aGF0IHdvdWxkIGJlIGJldHRlciA/Cj4gPj4+Pj4+Cj4gPj4+Pj4+IEkgd291bGQgbGlrZSB0 byByZW1pbmQgZXZlcnlib2R5IHRoYXQgdGhpcyBzZXJpZXMgaXNuJ3QgdGhlIGxhc3QgSSB3aWxs Cj4gPj4+Pj4+IGV2ZXIgc3VibWl0LCBhbmQgSSBwbGFuIHRvIGRvIG1vcmUgd29yayBvbiBkcm1f YnJpZGdlIGFuZCBkcm1fcGFuZWwuIEknbQo+ID4+Pj4+PiBvcGVuIHRvIHN1Z2dlc3Rpb25zLCBh bmQgY2FuIGFkZHJlc3MgcHJvYmxlbXMgb24gdG9wIG9mIHRoZXNlIHBhdGNoZXMsCj4gPj4+Pj4+ IHByb3ZpZGVkIG9idmlvdXNseSB0aGF0IHRoaXMgc2VyaWVzIGRvZXNuJ3QgZ28gaW4gdGhlIHdy b25nIGRpcmVjdGlvbi4KPiA+Pj4+Pj4gSSdtIG9mIGNvdXJzZSBhbHNvIHdpbGxpbmcgdG8gcmV3 b3JrIHRoaXMgc2VyaWVzLCBidXQgZ2l2ZW4gdGhlIGFtb3VudAo+ID4+Pj4+PiBvZiB3b3JrIHdl IGhhdmUgaW4gdGhlIGRybV9icmlkZ2UgcmVhbG0sIEkgY2FuJ3QgZml4IGV2ZXJ5dGhpbmcgaW4g b25lCj4gPj4+Pj4+IGdvIDotKQo+ID4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IC0gaXQgcmVzZW1ibGVz IGhhcmR3YXJlIHdpcmVzIDopCj4gPj4+Pj4+Pj4+PiBUaGlzIGlzbid0IGZvciB0aGUgaHcgd2ly ZXMgYWZhaXVpLiBUaGUgaHcgaHBkIHRlcm1pbmF0ZXMgaW4gdGhlIHNvdXJjZQo+ID4+Pj4+Pj4+ Pj4gYnJpZGdlLCB3aGljaCB0aGVuIGNhbGxzIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHRvIGlu Zm9ybSBhbnlvbmUgZWxzZQo+ID4+Pj4+Pj4+Pj4gaW50ZXJlc3RlZCBpbiB0aGF0IGhwZCBzaW5n YWwuIFRoaXMgaW5jbHVkZXM6Cj4gPj4+Pj4+Pj4+PiAtIE90aGVyIGJyaWRnZXMsIGUuZy4gaWYg dGhleSBwcm92aWRlIENFQyBzdXBwb3J0Lgo+ID4+Pj4+Pj4+Pj4gLSBPdGhlciBicmlkZ2VzLCBt YXliZSB0aGV5IG5lZWQgdG8gcmUtcnVuIHRoZSBIRENQIHN0YXRlIGVuZ2luZQo+ID4+Pj4+Pj4+ Pj4gLSBPdmVyYWxsIGRyaXZlciwgc28gaXQgY2FuIHVwZGF0ZSB0aGUgbW9kZXMvY29ubmVjdG9y IHN0YXR1cyBhbmQgc2VuZCB0aGUKPiA+Pj4+Pj4+Pj4+ICAgdWV2ZW50IHRvIHRoZSBkcml2ZXIu Cj4gPj4+Pj4+Pj4+PiAtIE92ZXJhbGwgZGlzcGxheSBwaXBlbGluZSBmb3IgdGhpcyBzcGVjaWZp YyBicmlkZ2UsIG1heWJlIHlvdSBuZWVkIHRvCj4gPj4+Pj4+Pj4+PiAgIHNodXQgZG93bi9yZS1l bmFibGUgdGhlIHBpcGUgYmVjYXVzZSAkcmVhc29ucy4KPiA+Pj4+Pj4+Pj4+ICAKPiA+Pj4+Pj4+ Pj4+IFRoYXQncyBhdCBsZWFzdCBteSB1bmRlcnN0YW5kaW5nIGZyb20gbG90cyBvZiBjaGF0cyB3 aXRoIExhdXJlbnQgYWJvdXQKPiA+Pj4+Pj4+Pj4+IHdoYXQgaGUgd2FudHMgdG8gZG8gaGVyZS4K PiA+Pj4+Pj4gVGhhdCdzIGNvcnJlY3QsIGFuZCB0aGF0J3Mgd2hhdCBJIHdhcyB0cnlpbmcgdG8g aW1wbGVtZW50IDotKSBUaGUKPiA+Pj4+Pj4gbm90aWZpY2F0aW9uLCBpbiB0aGlzIHBhdGNoIHNl cmllcywgZ29lcyBmcm9tIHRoZSBwcm9kdWNlciBicmlkZ2UgdG8gYQo+ID4+Pj4+PiBjZW50cmFs IHBsYWNlIChuYW1lbHkgdGhlIGNvbm5lY3Rvciwgd2l0aCBhIGhlbHBlciBpbXBsZW1lbnRhdGlv bgo+ID4+Pj4+PiBhdmFpbGFibGUgYXMgcGFydCBvZiB0aGlzIHNlcmllcywgYnV0IGN1c3RvbSBp bXBsZW1lbnRhdGlvbnMgaW4gZGlzcGxheQo+ID4+Pj4+PiBkcml2ZXJzIGFyZSBmaW5lIGlmIG5l ZWRlZCkgdGhhdCB0aGVuIGRpc3BhdGNoZXMgdGhlIG5vdGlmaWNhdGlvbiB0byBhbGwKPiA+Pj4+ Pj4gYnJpZGdlcyAodGhyb3VnaCB0aGUgLmxvc3RfaG90cGx1ZygpIG9wZXJhdGlvbiwgd2hpY2gg d2UgY291bGQgcmVwbGFjZQo+ID4+Pj4+PiBieSBhbiAuaHBkX25vdGlmeSgpIG9wZXJhdGlvbikg Zm9yIHRoZSBmaXJzdCB0d28gcHVycG9zZXMgbGlzdGVkIGFib3ZlLAo+ID4+Pj4+PiBhbmQgdGhl biB0byB0aGUgb3ZlcmFsbCBkcml2ZXIuIFRoZSBvbmx5IHRoaW5nIEkgZG9uJ3Qgc3VwcG9ydCB5 ZXQgaXMKPiA+Pj4+Pj4gZGlzcGF0Y2hpbmcgdG8gdGhlIGRpc3BsYXkgcGlwZWxpbmUgKGl0ZW0g NCBpbiB0aGUgbGlzdCBhYm92ZSkgYXMgSSBoYWQKPiA+Pj4+Pj4gbm8gbmVlZCBmb3IgdGhhdCwg YW5kIGRpZG4ndCB3YW50IHRvIGRldmVsb3AgYW4gQVBJIHdpdGggbm8gdXNlci4gVGhpcwo+ID4+ Pj4+PiB3b3VsZCBob3dldmVyIG5vdCBiZSBkaWZmaWN1bHQgdG8gZG8gd2hlbiBuZWVkZWQsIHRo ZSBuZWVkIGlzIHRha2VuIGludG8KPiA+Pj4+Pj4gYWNjb3VudCBpbiB0aGUgcHJvcG9zZWQgaW1w bGVtZW50YXRpb24uCj4gPj4+Pj4+Cj4gPj4+Pj4+Pj4+IEkgZG8gbm90IGtub3cgdGhlIGZ1bGwg cGljdHVyZSwgYnV0IHRoZSBzb2x1dGlvbiB3aGVyZSBwYXJ0aWN1bGFyIGJyaWRnZQo+ID4+Pj4+ Pj4+PiBub3RpZmllcyBldmVyeXRoaW5nIHVuY29uZGl0aW9uYWxseSBzZWVtcyB0byBtZSBtdWNo IGxlc3MgZmxleGlibGUuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IElmIEhQRCBzaWduYWxzIGlz IHJlY2VpdmVkIGJ5IHRoZSBjb25zdW1lciwgaWYgdGhlcmUgYXJlIG5vIG9ic3RhY2xlcyBpdAo+ ID4+Pj4+Pj4+PiBjYW4gcHJvcGFnYXRlIGl0IGZ1cnRoZXIsIHVwc3RyZWFtIGJyaWRnZS9lbmNv ZGVyIG9yIHRvIGRybSBjb3JlIC0gaXQKPiA+Pj4+Pj4+Pj4gd2lsbCBtaW1pYyB5b3VyIHNjZW5h cmlvLgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBCdXQgdGhlcmUgYXJlIGFsc28gb3RoZXIgc2Nl bmFyaW9zIHdoZXJlIGJyaWRnZSBkb2VzIG5vdCB3YW50IHRvCj4gPj4+Pj4+Pj4+IHByb3BhZ2F0 ZSBzaWduYWwsIGJlY2F1c2UgZm9yIGV4YW1wbGU6Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IC0g aXQgd2FudHMgdG8gd2FpdCBmb3Igb3RoZXIgc2lua3MgdG8gd2FrZSB1cCwKPiA+Pj4+Pj4+Pj4K PiA+Pj4+Pj4+PiBUaGUgb3RoZXIgc2luayBjYW4ganVzdCBkbyB0aGF0IGluIHRoZWlyIGhwZCBj YWxsYmFjay4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiAtIGl0IHByb3BhZ2F0ZXMgSFBEIHNpZ25h bCB2aWEgaGFyZHdhcmUgd2lyZSwKPiA+Pj4+Pj4+PiBBZ2FpbiwgdGhlIG90aGVyIHNpbmsgY2Fu IGp1c3Qgbm90IGxpc3RlbiB0byBzdyBocGQgaW4gdGhhdCBjYXNlLCBhbmQgdXNlCj4gPj4+Pj4+ Pj4gdGhlIHdpcmUvaHcgaHBkIGludGVycnVwdC4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4gSWYgaXQg c2hvdWxkIGlnbm9yZSBIUEQsIHdoeSBpdCBzaG91bGQgcmVjZWl2ZSBpdCBhdCBhbGwgLSBpdCBp cwo+ID4+Pj4+Pj4gdW5uZWNlc3Nhcnkgbm9pc2UuIEFuZCBJIGFtIGFmcmFpZCB3aXRoIG1vcmUg Y29tcGxpY2F0ZWQgcGlwZWxpbmVzIGl0Cj4gPj4+Pj4+PiB3aWxsIGJlIGltcG9zc2libGUgZm9y IHBhcnRpY3VsYXIgY29tcG9uZW50IChicmlkZ2UvZW5jb2Rlci93aGF0ZXZlcikgdG8KPiA+Pj4+ Pj4+IGRpc3Rpbmd1aXNoIGlmIEhQRCBub3RpZmljYXRpb24gd2hpY2ggY2FtZSBmcm9tIG5vbi1k aXJlY3RseSBjb25uZWN0ZWQKPiA+Pj4+Pj4+IGNvbXBvbmVudCBzaG91bGQgYmUgaWdub3JlZCBv ciBub3QuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4+PiAtIGZpcnN0IGl0IHdhbnRzIHRvIHZlcmlmeSBp ZiB0aGUgc2luayBpcyB2YWxpZC9jb21wYXRpYmxlL2F1dGhvcml6ZWQKPiA+Pj4+Pj4+Pj4gZGV2 aWNlLgo+ID4+Pj4+Pj4+IE5vdyB5b3UgbG9zdCBtZS4gV2h5IHdvdWxkIHNvbWVvbmUgZ2x1ZSBp bmNvbXBhdGlibGUgSVAgaW50byBhIFNvQyBvcgo+ID4+Pj4+Pj4+IGJvYXJkPwo+ID4+Pj4+Pj4g QnJpZGdlIGNhbiBoYXZlIGV4dGVybmFsIGNvbm5lY3RvcnMsIGFuZCB0aGUgdXNlciBjYW4gY29u bmVjdCB0aGVyZQo+ID4+Pj4+Pj4gYW55dGhpbmcuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBJbiBn ZW5lcmFsIEhQRCBpcyBpbnB1dCBzaWduYWwgZm9yIG5vdGlmeSBvZiBzdGF0ZSBjaGFuZ2VzIG9u IHBhcnRpY3VsYXIKPiA+Pj4+Pj4+Pj4gYnVzLCBpbiBjYXNlIG9mIHR5cGljYWwgdmlkZW8gYnJp ZGdlIG9uIGl0cyBvdXRwdXQgdmlkZW8gYnVzLgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBJbiBj YXNlIG9mIGJyaWRnZXMgdGhleSBoYXZlIGFsc28gaW5wdXQgdmlkZW8gYnVzZXMsIGFuZCB0aGV5 IGNhbiBzZW5kCj4gPj4+Pj4+Pj4+IEhQRCBzaWduYWwgdmlhIHRoaXMgYnVzLCBidXQgdGhpcyBp cyBpbmRlZWQgZGlmZmVyZW50IEhQRCBzaWduYWwsIGV2ZW4KPiA+Pj4+Pj4+Pj4gaWYgZm9yIG1v c3QgY2FzZXMgdGhleSBsb29rcyBzaW1pbGFyLgo+ID4+Pj4+Pj4+IEFoLCBJIHRoaW5rIHRoaXMg aXMgYSBwcm9ibGVtIHdlIHdpbGwgZXZlbnR1YWxseSBoYXZlLiBCdXQgaXQncyBub3QKPiA+Pj4+ Pj4+PiBzb21ldGhpbmcgd2UncmUgY3VycmVudGx5IHNvbHZpbmcgaGVyZSBhdCBhbGwgSSB0aGlu ay4KPiA+Pj4+Pj4+IEN1cnJlbnRseSBzaWk4NjIwIGRldmljZSBpbiB0bTIgc2VuZHMgaHBkIHNp Z25hbCB1cHN0cmVhbSB2aWEgaGFyZHdhcmUKPiA+Pj4+Pj4+IGxpbmUsIHNvIHRoaXMgaXMgbm90 IHNvbWV0aGluZyBmcm9tIGZhciBmdXR1cmUuIEFuZCBJIGd1ZXNzIHdpdGggSFBECj4gPj4+Pj4+ PiBicm9hZGNhc3RpbmcgaXQgY291bGQgYmUgcmFjeS9lcnJvciBwcm9uZSwgZm9yIGV4YW1wbGUg RURJRCByZWFkaW5nIGNhbgo+ID4+Pj4+Pj4gZmFpbCBkdWUgdG8gYnJpZGdlIGJlaW5nIG5vdCBy ZWFkeSAoZGRjIG9mIHNpaTg2MjAgaXMgY29ubmVjdGVkIHRvIGkyYwo+ID4+Pj4+Pj4gY29udHJv bGxlciB2aWEgaHcgd2lyZXMgYWxzbykuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IEFuZCByZWdh cmRpbmcgaW1wbGVtZW50YXRpb246Cj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiAxLiBMYXVy ZW50IHByb3Bvc2VzIHRvIHJlZ2lzdGVyIGNhbGxiYWNrIGRybV9icmlkZ2VfaHBkX2VuYWJsZS4K PiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IDIuIFlvdSBwcm9wb3NlIHRvIGFkZCBvcHMgaHBk X25vdGlmeSBpbiBicmlkZ2VzIGFuZCBlbmNvZGVycy4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ Pj4+IFlvdXIgcHJvcG9zaXRpb24gaXMgbW9yZSBzdHJhaWdodGZvcndhcmQsIGJ1dCBpZiB3ZSB3 YW50IHRvIG5vdGlmeSBvbmx5Cj4gPj4+Pj4+Pj4+Pj4gc291cmNlIHdlIHNob3VsZCBsb2NhdGUg aXQgYnkgcGFyc2luZyBub3RpZmljYXRpb24gY2hhaW4gKHdoYXQgYWJvdXQKPiA+Pj4+Pj4+Pj4+ PiB1bmNoYWluZWQgYnJpZGdlcyksIG9yIHN0b3JlIHBvaW50ZXIgc29tZXdoZXJlIGR1cmluZyBh dHRhY2htZW50Lgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gSXQgc3RpbGwgbGVhdmVzIHVz IHdpdGggdGhpcyB1Z2x5IGR1YWxpc20gLSBzb3VyY2UgaXMgZW5jb2RlciBvciBicmlkZ2UsCj4g Pj4+Pj4+Pj4+Pj4gc2ltaWxhcmx5IHRvIHNpbmsgYXMgYnJpZGdlIG9yIHBhbmVsLCBidXQgZml4 aW5nIGl0IGNhbiBiZSBkb25lIGxhdGVyLgo+ID4+Pj4+Pj4+Pj4gVWggSSB0aGluayB3ZSdyZSBu b3QgdGFsa2luZyBhYm91dCB0aGUgc2FtZSB0aGluZyByZWFsbHkuIE15IHVuZGVyc3RhbmRpbmcK PiA+Pj4+Pj4+Pj4+IGlzIHRoYXQgdGhpcyBjYWxsYmFjayBpcyBpZiBzb21lb25lIChvdXRzaWRl IG9mIHRoaXMgYnJpZGdlKSBpcyBpbnRlcmVzdGVkCj4gPj4+Pj4+Pj4+PiBpbiBhIGhwZCBzaWdu YWwgX2Zyb21fIHRoaXMgYnJpZGdlLiBXaGljaCBtZWFucyB5b3UgY2FuIG9ubHkgZXZlciBoYXZl IDEKPiA+Pj4+Pj4+Pj4+IGxpc3RlbmVyLgo+ID4+Pj4+Pj4+PiBEbyB3ZSBoYXZlIHJlYWwgbGlm ZSBleGFtcGxlcz8KPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gSSB3YW50IHRvIGRpc3Rpbmd1aXNo IHR3byBzaXR1YXRpb25zOgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiAtIGFub3RoZXIgZGV2aWNl IHdhbnRzIHRvIGtub3cgaWYgaW5wdXQgYnVzIG9mIHRoZSBicmlkZ2UgaGFzIGNoYW5nZWQgc3Rh dGUsCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IC0gYW5vdGhlciBkZXZpY2Ugd2FudHMgdG8ga25v dyBpZiBvdXRwdXQgYnVzIG9mIHRoZSBicmlkZ2UgaGFzIGNoYW5nZWQKPiA+Pj4+Pj4+Pj4gc3Rh dGUuCj4gPj4+Pj4+Pj4gVWgsIHRoYXQncyB3aGF0IGRybV9icmlkZ2Vfc3RhdGUgaXMgZm9yIChp ZiBpdCBldmVyIGhhcHBlbnMpLiBUaGF0J3MgaG93Cj4gPj4+Pj4+Pj4gYnJpZGdlcyBjYW4gZXhj aGFuZ2Ugc3RhdGUgYW5kIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggYW5vdGhlci4gaHBkIGlzCj4g Pj4+Pj4+Pj4gYWJvdXQgdGhlIHBoeXNpY2FsIHdvcmxkLCBpLmUuICJpcyB0aGVyZSBhIGNhYmxl IHBsdWdnZWQgaW50byB0aGUgcG9ydAo+ID4+Pj4+Pj4+IEknbSBkcml2aW5nPyIuIFdlJ3JlIG5v dCBnb2luZyB0byB1c2UgZmFrZSBocGQgdG8gdXBkYXRlIGJyaWRnZSBzdGF0ZSBhbmQKPiA+Pj4+ Pj4+PiBmdW4gc3R1ZmYgbGlrZSB0aGF0LCB3ZSBoYXZlIHRoZSBhdG9taWNfY2hlY2sgbWFjaGlu ZXJ5IGZvciB0aGlzLgo+ID4+Pj4+Pj4gTXkgcXVlc3Rpb24gd2FzIGlmIHdlIGhhdmUgcmVhbCBl eGFtcGxlcyB0aGF0IHVwc3RyZWFtIGRldmljZSByZXF1aXJlcwo+ID4+Pj4+Pj4ga25vd2xlZGdl IGFib3V0IHN0YXRlIG9mIG91dHB1dCBsaW5lIG9mIHRoZSBicmlkZ2U/Cj4gPj4+Pj4+Pgo+ID4+ Pj4+Pj4gVG8gYmUgbW9yZSBwcmVjaXNlLCB3ZSBoYXZlIGZvbGxvd2luZyBkaXNwbGF5IHBpcGVs aW5lOgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IEEtLT5CLS0+Qwo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IEFu ZCBDIHNlbmRzIEhQRCB0byBCIChpZSBzaWduYWwgdGhhdCBzdGF0ZSBvZiBsaW5lIGJldHdlZW4g QiBhbmQgQwo+ID4+Pj4+Pj4gY2hhbmdlZCkuIERvZXMgQSByZWFsbHkgd2FudHMgdG8ga25vdyB0 aGlzIGluZm9ybWF0aW9uPyBvciBpdCBzaG91bGQKPiA+Pj4+Pj4+IGp1c3QgbmVlZCB0byBrbm93 IGlmIHN0YXRlIG9mIGxpbmUgQS0tPkIgY2hhbmdlZD8KPiA+Pj4+Pj4gVGhlcmUncyBvbmUgcmVh bCBsaWZlIGV4YW1wbGUsIHdoZXJlIEEgaXMgYW4gSERNSSBlbmNvZGVyLCBCIGlzIGFuIEhETUkK PiA+Pj4+Pj4gRVNEIHByb3RlY3RvciBhbmQgbGV2ZWwgc2hpZnRlciwgYW5kIEMgaXMgdGhlIHBo eXNpY2FsIEhETUkgY29ubmVjdG9yLgo+ID4+Pj4+PiBXaGVuIHRoZSBIRE1JIGNhYmxlIGlzIHVu cGx1Z2dlZCwgdGhlIENFQyBjb250cm9sbGVyIHBhcnQgb2YgQSBuZWVkcyB0bwo+ID4+Pj4+PiBi ZSBub3RpZmllZCBpbiBvcmRlciB0byByZXNldCB0aGUgQ0VDIHN0YXRlIG1hY2hpbmUuIE9uZSBj b3VsZCBob3dldmVyCj4gPj4+Pj4+IGFyZ3VlIHRoYXQgaW4gdGhhdCBjYXNlIHRoZSBBLUIgbGlu ayBzdGF0ZSBjaGFuZ2VzIHRvbywgYnV0IHRoZQo+ID4+Pj4+PiBpbXBvcnRhbnQgcGFydCBpcyB0 aGF0IEhQRCBkZXRlY3Rpb24gaXMgbm90IHBlcmZvcm1lZCBieSBBLCB3aGlsZSBBCj4gPj4+Pj4+ IG5lZWRzIHRvIGJlIGluZm9ybWVkIG9mIGxvc3QgaG90cGx1Zy4KPiA+Pj4+PiBJIGhhdmUgbm8g ZnVsbCBwaWN0dXJlIGJ1dCBJIGd1ZXNzIGluIHRoaXMgY2FzZSBDIHNlbmRzIEhQRCB0byBCIHVz aW5nCj4gPj4+Pj4gaGFyZHdhcmUgd2lyZSwgYW5kIHRoZW4gQiBzZW5kcyBIUEQgdG8gQSBhbHNv IHZpYSB3aXJlLCBzbyBJIHdvdWxkbid0Cj4gPj4+Pj4gc2F5IHRoYXQgQiBkb2VzIG5vdCBwYXJ0 aWNpcGF0ZSBpbiBIUEQgdHJhbnNtaXNzaW9uL2ZvcndhcmRpbmcsCj4gPj4+PiBObywgaW4gdGhp cyBjYXNlIEEgZG9lc24ndCByZWNlaXZlIGFueSBoYXJkd2FyZSBIUEQgc2lnbmFsLCBpdCByZXF1 aXJlcwo+ID4+Pj4gSFBEIG5vdGlmaWNhdGlvbiB0aHJvdWdoIHNvZnR3YXJlLgo+ID4+Pj4KPiA+ Pj4+PiBzb21lIHNoaWZ0ZXJzIHdpdGggJ2FkdmFuY2VkIHBvd2VyIHNhdmluZycgY2FuIGV2ZW4g cGVyZm9ybSB3YWtlLXVwIG9mCj4gPj4+Pj4gdXBzdHJlYW0gcGluIGxvZ2ljIGFmdGVyIHJlY2Vp dmluZyBIUEQgb24gZG93bnN0cmVhbSwgc28gSFBEIHNlbnQgZnJvbSBCCj4gPj4+Pj4gdG8gQSBp cyBpbmRlZWQgZGlmZmVyZW50IHRoYW4gSFBEIHNlbnQgZnJvbSBDIHRvIEIuCj4gPj4+Pj4KPiA+ Pj4+PiBCdHcsIHdpdGggdGhlIGFib3ZlIGxvZ2ljIG9mIHByb3BhZ2F0aW9uIG9mIEhQRCBjYWxs YmFjayAocHJvcG9zZWQgYnkKPiA+Pj4+PiBEYW5pZWwpIEkgZ3Vlc3MgaXQgd2lsbCB3b3JrIHRo aXMgd2F5Ogo+ID4+Pj4+Cj4gPj4+Pj4gLSBBIHdpbGwgcmVjZWl2ZSBIUEQgc2lnbmFsIHZpYSBI VywKPiA+Pj4+Pgo+ID4+Pj4+IC0gdGhlbiBCIGFuZCBDIHdpbGwgcmVjZWl2ZSBIUEQgY2FsbGJh Y2sgdmlhIGZyYW1ld29yay4KPiA+Pj4+Pgo+ID4+Pj4+IEFtIEkgcmlnaHQ/Cj4gPj4+PiBJdCdz IHRoZSBvdGhlciB3YXkgYXJvdW5kLgo+ID4+Pj4KPiA+Pj4+IEluIHRoaXMgY2FzZSB0aGUgSFBE IHNpZ25hbCBmcm9tIHRoZSBjb25uZWN0b3IgKEMpIGlzIHJvdXRlZCB0byBhbiBpbnB1dAo+ID4+ Pj4gb2YgdGhlIEVTRCBjaGlwIChCKS4gVGhlIEVTRCBjaGlwIG91dHB1dHMgYSBzaGlmdGVkIEhQ RCBoYXJkd2FyZSBzaWduYWwKPiA+Pj4+IGNvbm5lY3RlZCB0byBhIEdQSU8gb2YgdGhlIFNvQy4g VGhlIGRyaXZlciBmb3IgKEIpIHRodXMgcmVnaXN0ZXJzIGEgR1BJTwo+ID4+Pj4gSVJRIGFuZCBy ZWNlaXZlIHRoZSBoYXJkd2FyZSBIUEQgbm90aWZpY2F0aW9uLiBUaGUgZHJpdmVyIGZvciB0aGUg SERNSQo+ID4+Pj4gZW5jb2RlciAoQSkgbmVlZHMgdG8gcmVjZWl2ZSBIUEQgbm90aWZpY2F0aW9u IGluIHNvZnR3YXJlLCB0aHJvdWdoIHRoZQo+ID4+Pj4gZnJhbWV3b3JrLgo+ID4+PiBJZiB0aGlz IGlzIEdQSU8gSSB3b25kZXIgd2h5IGRvIG5vdCBxdWVyeSB0aGlzIGdwaW8gYnkgZW5jb2RlciBk aXJlY3RseSwKPiA+Pj4gcnVsZXMgb2Ygb3duZXJzaGlwIG9mIHN1Y2ggZ3Bpb3Mgc2VlbXMgdG8g YmUgZ3JleSBhcmVhLCBzbyBpbiBzdWNoIGNhc2UKPiA+Pj4gSSB3b3VsZCBhZHZpc2UgdG8gcHV0 IGl0IGluIHRoZSBkcml2ZXIgd2hvIHJlYWxseSBuZWVkcyBpdC4KPiA+Pj4KPiA+Pj4gVGhpcyB3 YXkgaXQgd2lsbCBiZSBtdWNoIHNpbXBsZXIuCj4gPj4gRmlyc3QgdG8gZmFsbCwgbXVsdGlwbGUg ZHJpdmVycyBtYXkgbmVlZCB0byBiZSBpbmZvcm1lZCBvZiBIUEQgZXZlbnRzCj4gPj4gY29taW5n IGZyb20gYSBHUElPLCBzbyB3ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSBpdCBpbiBtdWx0aXBs ZSBwbGFjZXMsCj4gPj4gYW5kIEkgZG9uJ3QgdGhpbmsgdGhlIEdQSU8gZnJhbWV3b3JrIGFsbG93 cyBhY3F1aXJpbmcgYSBHUElPIG11bHRpcGxlCj4gPj4gdGltZXMuCj4gPj4KPiA+PiBUaGVuLCB0 aGUgR1BJTyBpcyBkZXNjcmliZWQgaW4gRFQsIGFuZCBEVCBkb2Vzbid0IGNhcmUgYWJvdXQgd2hp Y2gKPiA+PiBkcml2ZXIgbmVlZHMgSFBEIGV2ZW50cy4gRFQgc3BlY2lmaWVzIHRoZSBHUElPIGlu IHRoZSBub2RlIG9mIHRoZSBkZXZpY2UKPiA+PiBpdCBiZWxvbmdzIHRvLCB0aGlzIGlzIGRlZmlu ZWQgaW4gRFQgYmluZGluZ3MsIGFuZCBtdXN0IGJlIHRoZSBzYW1lIG9uCj4gPj4gYWxsIGJvYXJk cywgd2hpbGUgZGVwZW5kaW5nIG9uIHRoZSBib2FyZCBkaWZmZXJlbnQgZGV2aWNlcyBtYXkgbmVl ZCB0bwo+ID4+IGJlIGluZm9ybWVkIG9mIEhQRCBldmVudHMuCj4gPj4KPiA+PiBGb3IgdGhvc2Ug dHdvIHJlYXNvbnMgSFBEIEdQSU8gaGFuZGxpbmcgYW5kIGNvbnN1bXB0aW9uIG9mIEhQRCBldmVu dHMKPiA+PiBjYW4ndCBhbHdheXMgYmUgZ3JvdXBlZCBpbiB0aGUgc2FtZSBkcml2ZXIuCj4gPj4K PiA+Pj4gR29pbmcgYmFjayB0byBIUEQgbm90aWZpY2F0aW9ucywgYXMgSSBzYWlkIGVhcmxpZXIg YnJvYWRjYXN0aW5nIEhQRAo+ID4+PiBub3RpZmljYXRpb24gdW5jb25kaXRpb25hbGx5IHRvIGV2 ZXJ5IG1lbWJlciBvZiB0aGUgY2hhaW4gd2l0aCBob3BlIHRoYXQKPiA+Pj4gdGhlIG1lbWJlciB3 aWxsIGJlIGFibGUgdG8gZmlsdGVyLW91dCB1bmRlc2lyZWQgbm90aWZpY2F0aW9uIHNlZW1zIHRv IG1lCj4gPj4+IGluY29ycmVjdCAtIG1heWJlIGl0IGNhbiBzb2x2ZSBzb21lIHByb2JsZW1zIGJ1 dCBpcyBub3QgZmxleGlibGUgZW5vdWdoCj4gPj4+IHRvIGJlIHVzYWJsZSBpbiBvdGhlciBzY2Vu YXJpb3MuCj4gPj4+Cj4gPj4+IElmIG15IGFyZ3VtZW50cyBkbyBub3QgY29udmluY2UgeW91IHBs ZWFzZSBqdXN0IGNvbnRpbnVlIHdpdGggeW91cgo+ID4+PiBpZGVhcywgd2UgY2FuIGFsd2F5cyBh ZGQgTk9fSFBEX0JST0FEQ0FTVCBzb21ld2hlcmUgOikKPiA+PiA6LSkgSSB3b3VsZCBsaWtlIHRv IHVuZGVyc3RhbmQgdGhlIHByb2JsZW1zIHlvdSdyZSByZWZlcnJpbmcgdG8gdGhvdWdoLAo+ID4+ IGFuZCBob3BlZnVsbHkgc29sdmUgdGhlbS4gSWYgeW91IGNvdWxkIGRlc2NyaWJlIG9uZSBvZiB0 aGUgc2NlbmFyaW9zCj4gPj4gd2hlcmUgeW91IHRoaW5rIHRoaXMgbWVjaGFuaXNtIHdvdWxkbid0 IGJlIHVzYWJsZSB0aGF0IHdvdWxkIGhlbHAuIEluCj4gPj4gdGhlIG1lYW50aW1lIEkgd2lsbCBw b3N0IGEgbmV3IHZlcnNpb24gb2YgdGhlIHNlcmllcyB3aXRoIHRoZXNlCj4gPj4gb3BlcmF0aW9u cyBrZXB0IGFzLWlzIHRvIGdldCB0aGUgcmVzdCBvZiB0aGUgcGF0Y2hlcyByZXZpZXdlZC4KPiA+ IFNlZSBteSBsaXR0bGUgdGhpbmcgYWJvdXQgbWlkbGF5ZXJzLCBJIHRoaW5rIG1pZGxheWVycyB3 aXRoIGxvdHMgb2YgZmxhZ3MKPiA+IGZvciBldmVyeXRoaW5nIGFyZW4ndCBhIGdvb2QgaWRlYS4g VGhleSBzaG91bGQgYmUgbW9yZSBvcGluaW9uYXRlZCBhYm91dAo+ID4gaG93IHRoaW5ncyB3b3Jr Lgo+ID4KPiA+IFNvIGlmIHRoZXJlJ3MgYSBjYXNlIHdoZXJlIHRoaXMgYnJvYWRjYXN0aW5nIG9m IHZhcmlvdXMgdGhpbmdzIGRvZXNuJ3QKPiA+IHdvcmssIGxldCdzIGRpZyBpbnRvIGl0Lgo+ID4g LURhbmllbAo+IAo+IE9LLCBhbG1vc3QgcmVhbCBsaWZlIGV4YW1wbGU6Cj4gCj4gQSAtPiBCIC0+ IEMKPiAKPiBBIC0gUkdCL0hETUkgY29udmVydGVyLAo+IAo+IEIgLSBIRE1JL01ITCBjb252ZXJ0 ZXIsCj4gCj4gQyAtIHVVU0IgY29udHJvbGxlciAoTVVJQykuCj4gCj4gCj4gQyAtIGRldGVjdHMg cHJlc2VuY2Ugb2YgTUhMIHNpbmsgYW5kIHJvdXRlcyBNSEwgbGluZXMgdG8gQiBpbiBzdWNoIGNh c2UuCj4gCj4gQiAtIGhhcyBubyBoYXJkd2FyZSBsb2dpYyB0byBkZXRlY3QgSFBELCBidXQgaXQn cyBmaXJtd2FyZSBjYW4gcmVhZCBFRElECj4gZnJvbSBkb3duc3RyZWFtIGNvbXBvbmVudCB2aWEg SFcgbGluZXMgYW5kIGl0IGhhcyBoYXJkd2FyZSBsaW5lcyB0bwo+IHVwc3RyZWFtIGNvbXBvbmVu dCB0byBzZW5kIEVESUQsCj4gCj4gQSAtIGNhbiByZWFkIEVESUQgZnJvbSBCIHZpYSBoYXJkd2Fy ZSBsaW5lcywgYnV0IGRvZXMgbm90IGhhdmUgaGFyZHdhcmUgSFBELgoKSXQgcHJvYmFibHkgZG9l c24ndCBtYXR0ZXIgbXVjaCBmb3IgdGhlIG92ZXJhbGwgZGlzY3Vzc2lvbiwgYnV0IG91dCBvZgpj dXJpb3NpdHksIGRvZXMgQiBoYXZlIGEgQ0JVUyBpbnRlcmZhY2UgdG93YXJkcyBDIGFuZCBhIERE QyAoSTJDKQppbnRlcmZhY2UgdG93YXJkcyBBID8gQW5kIGRvZXMgQSByZWFkIHRoZSBFRElEIG9u IEREQyBhbmQgZXhwb3NlIGl0CnRvd2FyZHMgdGhlIFNvQyB0aHJvdWdoIGEgY3VzdG9tIHByb3Rv Y29sIChmb3IgaW5zdGFuY2UgYXMgdGhlIEFEVjc1MTEKZG9lcyksIG9yIGRvZXMgaXQgZm9yd2Fy ZCB0aGUgRERDIGxpbmVzIHRvIHRoZSBTb0MgPwoKPiBTbyBob3cgaXQgc2hvdWxkIHdvcmsgKGFj Y29yZGluZyB0byBzcGVjaWZpY2F0aW9uKToKPiAKPiAxLiBDIGRldGVjdHMgTUhMIHNpbmsuCj4g Cj4gMi4gQyBzd2l0Y2hlcyBoaXMgbXV4IHRvIHJvdXRlIGxpbmVzIHRvIEIuCj4gCj4gMy4gQyBz ZW5kcyBIUEQgbm90aWZpY2F0aW9uIHRvIEIuCj4gCj4gNC4gQiBwb3dlcnMgb24sIGl0cyBmaXJt d2FyZSByZWFkcyBFRElEIGZyb20gZG93bnN0cmVhbSBsaW5lcyAocG9zc2libHkKPiBhZGp1c3Rp bmcgaXQpIGFuZCBtYWtlcyBpdCBhdmFpbGFibGUgdG8gdXBzdHJlYW0gY29tcG9uZW50IEEuCj4g Cj4gNS4gQiBzZW5kcyBIUEQgbm90aWZpY2F0aW9uIHRvIEEuCj4gCj4gCj4gSSBkbyBub3Qga25v dyBob3cgaXQgY291bGQgd29yayB3aXRoIEhQRCBicm9hZGNhc3RpbmcuCj4gCj4gSSBndWVzcyBD IHNob3VsZCBiZSBIUEQgcHJvdmlkZXIsIGJ1dCBpbiBjYXNlIG9mIEhQRCBicm9hZGNhc3Rpbmcg QSBhbmQKPiBCIHdvdWxkIHJlY2VpdmUgbm90aWZpY2F0aW9uIGluIHRoZSBzYW1lIHRpbWUsIGFz IGEgcmVzdWx0IEEgd291bGQgc3RhcnQKPiByZWFkaW5nIEVESUQgdG9vIGVhcmx5IC0gZmFpbC4K ClRoYXQncyBhbiBpbnRlcmVzdGluZyBjYXNlIGluZGVlZC4gTm93IEkgdW5kZXJzdGFuZCB3aGF0 IHlvdSBtZWFudAplYXJsaWVyLgoKVGhlIEhQRCBub3RpZmljYXRpb24gZnJvbSBDIHRvIEIgaXMg cHVyZWx5IGludGVybmFsLCBhbmQgc2hvdWxkIG5vdCBiZQp2aXNpYmxlIGZyb20gYSBEUk0vS01T IHBvaW50IG9mIHZpZXcuIEl0IGp1c3QgaGFwcGVucyB0aGF0IHRoaXMgaGFyZHdhcmUKc2V0dXAg aGFzIGEgbW9yZSBjb21wbGV4IEhQRCBzZXF1ZW5jZSB0aGF0IHJlcXVpcmVzIHNvZnR3YXJlCmlu dGVydmVudGlvbiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzZXF1ZW5jZS4gQXMgc3VjaCwgaWYgd2Ug Zm9yZ2V0IGFib3V0CnRoaXMgcGF0Y2ggc2VyaWVzIGZvciBhIG1pbnV0ZSwgQyB3b3VsZCBuZWVk IGEgY3VzdG9tIEFQSSB0byBzZW5kIE1ITApub3RpZmljYXRpb24gdG8gQiwgYW5kIHRoZSBIUEQg Zm9yIERSTS9LTVMgd291bGQgYmUgbm90aWZpZWQgYnkgQiwgcmlnaHQKPwoKSSB0aGluayBpdCdz IHBvc3NpYmxlIHRvIGhhbmRsZSBib3RoIHRoZSBNSEwgbm90aWZpY2F0aW9uIGFuZCB0aGUKdXNl ci12aXNpYmxlIEhQRCBub3RpZmljYXRpb24gdGhyb3VnaCB0aGUgc2FtZSBicmlkZ2UgQVBJLCBw cm92aWRlZCB0aGF0CndlIG9mZmVyIGEgd2F5IGZvciBhIGJyaWRnZSB0byBibG9jayBmb3J3YXJk aW5nIG9mIHRoZSBIUEQgbm90aWZpY2F0aW9uLgpUaGlzIHdpbGwgYWxzbyByZXF1aXJlIGNhbGxp bmcgdGhlIEhQRCBub3RpZmllcnMgb24gYnJpZGdlcyBpbiB0aGUgc2luawp0byBzb3VyY2Ugb3Jk ZXIuIEJvdGggYXJlIGRvYWJsZSwgdGhlIGJyaWRnZSBIUEQgbm90aWZpZXIgb3BlcmF0aW9uCmNv dWxkIHJldHVybiBhIGJvb2wgdGhhdCBibG9ja3MgcHJvcGFnYXRpb24gb2YgdGhlIG5vdGlmaWNh dGlvbi4gV291bGQKdGhhdCB3b3JrIGZvciB5b3UgPwoKPiA+Pj4+Pj4+Pj4+IFlvdSBzZWVtIHRv IGhhdmUgc29tZSBvdGhlciBpZGVhIGhlcmUuCj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Pj4+ Pj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ ICt9Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRf bm90aWZ5KTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICAjaWZkZWYg Q09ORklHX09GCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgLyoqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgICog b2ZfZHJtX2ZpbmRfYnJpZGdlIC0gZmluZCB0aGUgYnJpZGdlIGNvcnJlc3BvbmRpbmcgdG8gdGhl IGRldmljZSBub2RlIGluCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX2JyaWRnZS5oIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPj4+Pj4+Pj4+Pj4+ Pj4+PiBpbmRleCAwOGRjMTVmOTNkZWQuLmI5NDQ1YWE1YjFlZiAxMDA2NDQKPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4g KysrIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBAQCAtMjMs OCArMjMsOSBAQAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gICNpZm5kZWYgX19EUk1fQlJJREdFX0hfXwo+ ID4+Pj4+Pj4+Pj4+Pj4+Pj4gICNkZWZpbmUgX19EUk1fQlJJREdFX0hfXwo+ID4+Pj4+Pj4+Pj4+ Pj4+Pj4gIAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gLSNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gPj4+ Pj4+Pj4+Pj4+Pj4+PiAgI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+Cj4gPj4+Pj4+Pj4+Pj4+Pj4+ PiArI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsjaW5jbHVkZSA8 bGludXgvbXV0ZXguaD4KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9tb2Rl X29iamVjdC5oPgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gICNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+ Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBAQCAtMzM0LDYgKzMzNSwx MTAgQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgewo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIAkgKi8K PiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICAJdm9pZCAoKmF0b21pY19wb3N0X2Rpc2FibGUpKHN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgCQkJCSAgICBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+ Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogQGRldGVjdDoKPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogQ2hlY2sgaWYgYW55dGhpbmcgaXMg YXR0YWNoZWQgdG8gdGhlIGJyaWRnZSBvdXRwdXQuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqCj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGlmIG5vdCBp bXBsZW1lbnRlZCB0aGUgYnJpZGdlIHdpbGwgYmUKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogY29u c2lkZXJlZCBhcyBhbHdheXMgaGF2aW5nIGEgY29tcG9uZW50IGF0dGFjaGVkIHRvIGl0cyBvdXRw dXQuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgdGhpcyBj YWxsYmFjayBzaGFsbCBzZXQgdGhlCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIERSTV9CUklER0Vf T1BfREVURUNUIGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9wcy4KPiA+Pj4+Pj4+Pj4+Pj4+ Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogUkVUVVJOUzoKPiA+Pj4+Pj4+Pj4+Pj4+ Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgaW5k aWNhdGluZyB0aGUgYnJpZGdlIG91dHB1dCBzdGF0dXMuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAq Lwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwllbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzICgqZGV0ZWN0 KShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+ Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIEBnZXRfbW9kZXM6Cj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIEZpbGwgYWxsIG1v ZGVzIGN1cnJlbnRseSB2YWxpZCBmb3IgdGhlIHNpbmsgaW50byB0aGUgJmRybV9jb25uZWN0b3IK PiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogd2l0aCBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4gPj4+ Pj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIFRoZSBAZ2V0X21vZGVz IGNhbGxiYWNrIGlzIG1vc3RseSBpbnRlbmRlZCB0byBzdXBwb3J0IG5vbi1wcm9iYWJsZQo+ID4+ Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBkaXNwbGF5cyBzdWNoIGFzIG1hbnkgZml4ZWQgcGFuZWxzLiBC cmlkZ2VzIHRoYXQgc3VwcG9ydCByZWFkaW5nCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIEVESUQg c2hhbGwgbGVhdmUgQGdldF9tb2RlcyB1bmltcGxlbWVudGVkIGFuZCBpbXBsZW1lbnQgdGhlCj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfZWRpZCBjYWxsYmFj ayBpbnN0ZWFkLgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkg KiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLiBCcmlkZ2VzIHRoYXQgaW1wbGVtZW50IGl0IHNo YWxsIHNldCB0aGUKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogRFJNX0JSSURHRV9PUF9NT0RFUyBm bGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqCj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIFJFVFVSTlM6Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqCj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIFRoZSBudW1iZXIgb2YgbW9kZXMgYWRkZWQgYnkgY2FsbGlu ZyBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4gKwlpbnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Us Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip Owo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+ Pj4+Pj4+Pj4+ICsJICogQGdldF9lZGlkOgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4gKwkgKiBSZWFkIGFuZCBwYXJzZSB0aGUgRURJRCBkYXRhIG9mIHRoZSBjb25u ZWN0ZWQgZGlzcGxheS4KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ ICsJICogVGhlIEBnZXRfZWRpZCBjYWxsYmFjayBpcyB0aGUgcHJlZmVycmVkIHdheSBvZiByZXBv cnRpbmcgbW9kZQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBpbmZvcm1hdGlvbiBmb3IgYSBkaXNw bGF5IGNvbm5lY3RlZCB0byB0aGUgYnJpZGdlIG91dHB1dC4gQnJpZGdlcwo+ID4+Pj4+Pj4+Pj4+ Pj4+Pj4gKwkgKiB0aGF0IHN1cHBvcnQgcmVhZGluZCBFRElEIHNoYWxsIGltcGxlbWVudCB0aGlz IGNhbGxiYWNrIGFuZCBsZWF2ZQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgQGdldF9tb2Rl cyBjYWxsYmFjayB1bmltcGxlbWVudGVkLgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgY2FsbGVyIG9mIHRoaXMgb3BlcmF0aW9uIHNoYWxsIGZpcnN0 IHZlcmlmeSB0aGUgb3V0cHV0Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIGNvbm5lY3Rpb24gc3Rh dHVzIGFuZCByZWZyYWluIGZyb20gcmVhZGluZyBFRElEIGZyb20gYSBkaXNjb25uZWN0ZWQKPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogb3V0cHV0Lgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+ Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLiBCcmlkZ2VzIHRo YXQgaW1wbGVtZW50IGl0IHNoYWxsIHNldCB0aGUKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogRFJN X0JSSURHRV9PUF9FRElEIGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9wcy4KPiA+Pj4+Pj4+ Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogUkVUVVJOUzoKPiA+Pj4+Pj4+ Pj4+Pj4+Pj4+ICsJICoKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogQW4gZWRpZCBzdHJ1Y3R1cmUg bmV3bHkgYWxsb2NhdGVkIHdpdGgga21hbGxvYygpIChvciBzaW1pbGFyKSBvbgo+ID4+Pj4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBzdWNjZXNzLCBvciBOVUxMIG90aGVyd2lzZS4gVGhlIGNhbGxlciBpcyBy ZXNwb25zaWJsZSBmb3IgZnJlZWluZwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgcmV0dXJu ZWQgZWRpZCBzdHJ1Y3R1cmUgd2l0aCBrZnJlZSgpLgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKi8K PiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJc3RydWN0IGVkaWQgKigqZ2V0X2VkaWQpKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UsCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yKTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4gSXQgb3ZlcmxhcHMgd2l0aCBnZXRf bW9kZXMsIEkgZ3Vlc3MgcHJlc2VuY2Ugb2Ygb25lIG9wcyBzaG91bGQgZGlzYWxsb3cKPiA+Pj4+ Pj4+Pj4+Pj4+Pj4gcHJlc2VuY2Ugb2YgYW5vdGhlciBvbmU/Cj4gPj4+Pj4+Pj4+Pj4+Pj4+Cj4g Pj4+Pj4+Pj4+Pj4+Pj4+IEkgYW0gbm90IHJlYWxseSBjb252aW5jZWQgd2UgbmVlZCB0aGlzIG9w IGF0IGFsbCwgY2Fubm90IHdlIGp1c3QgYXNzaWduCj4gPj4+Pj4+Pj4+Pj4+Pj4+IHNvbWUgaGVs cGVyIGZ1bmN0aW9uIHRvIC5nZXRfbW9kZXMgY2IsIHdoaWNoIHdpbGwgZG8gdGhlIHNhbWU/Cj4g Pj4+Pj4+Pj4+Pj4+Pj4gUGxhbiBCKTogZGl0Y2ggLT5nZXRfZWRpZCwgcmVxdWlyZSB0aGF0IHRo ZSBkcml2ZXIgaGFzIC0+Z2V0X21vZGVzIGluIHRoYXQKPiA+Pj4+Pj4+Pj4+Pj4+PiBjYXNlLCBh bmQgcmVxdWlyZSB0aGF0IGlmIGl0IGhhcyBhbiBlZGlkIGl0IG11c3QgZmlsbCBvdXQgY29ubmVj dG9yLT5pbmZvCj4gPj4+Pj4+Pj4+Pj4+Pj4gYW5kIGNvbm5lY3Rvci0+ZWRpZCBjb3JyZWN0bHku Cj4gPj4+Pj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+Pj4+PiBCdHcgaWYgYSBocGQgaGFwcGVucywg d2hvJ3MgcmVzcG9uaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhlIGVkaWQvbW9kZSBsaXN0Cj4gPj4+ Pj4+Pj4+Pj4+Pj4gaW4gdGhlIGNvbm5lY3RvciBpcyB1cC10by1kYXRlPyBXaXRoIHlvdXIgY3Vy cmVudCBjYWxsYmFjayBkZXNpZ24gdGhhdCdzCj4gPj4+Pj4+Pj4+Pj4+Pj4gdXAgdG8gdGhlIGNh bGxiYWNrLCB3aGljaCBkb2Vzbid0IGZlZWwgZ3JlYXQuIE1heWJlICBkcm1fYnJpZGdlX2hwZF9u b3RpZnkKPiA+Pj4+Pj4+Pj4+Pj4+PiBzaG91bGQgZ3VhcmFudGVlIHRoYXQgaXQnbGwgZmlyc3Qg d2FsayB0aGUgY29ubmVjdG9ycyB0byB1cGRhdGUgc3RhdHVzIGFuZAo+ID4+Pj4+Pj4+Pj4+Pj4+ IGVkaWQvbW9kZSBsaXN0IGZvciB0aGUgZmluYWwgZHJtX2Nvbm5lY3Rvci4gQW5kIHRoZW4gaW5z dGVhZCBvZiBqdXN0Cj4gPj4+Pj4+Pj4+Pj4+Pj4gcGFzc2luZyB0aGUgc2ltcGxlICJzdGF0dXMi LCBpdCdsbCBwYXNzIHRoZSBjb25uZWN0b3IsIHdpdGggZXZlcnl0aGluZwo+ID4+Pj4+Pj4+Pj4+ Pj4+IGNvcnJlY3RseSB1cGRhdGVkLgo+ID4+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+Pj4g T3RoZXJ3aXNlIGV2ZXJ5b25lIGludGVyZXN0ZWQgaW4gdGhhdCBocGQgc2lnbmFsIHdpbGwgZ28g YW5kIHJlLWZldGNoIHRoZQo+ID4+Pj4+Pj4+Pj4+Pj4+IGVkaWQsIHdoaWNoIGlzIG5vdCBzbyBh d2Vzb21lIDotKQo+ID4+Pj4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+ Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBAbG9zdF9ob3RwbHVnOgo+ ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBOb3RpZnkgdGhl IGJyaWRnZSBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24uCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAq Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGl0IG1h eSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzIHRoYXQKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICog bmVlZCB0byBiZSBub3RpZmllZCBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24gZm9yIGludGVybmFs IHJlYXNvbnMuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIE9uZSB1c2UgY2FzZSBpcyB0byByZXNl dCB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgQ0VDIGNvbnRyb2xsZXJzIGZvcgo+ID4+Pj4+Pj4+Pj4+ Pj4+Pj4gKwkgKiBIRE1JIGJyaWRnZXMuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4gKwl2b2lkICgqbG9zdF9ob3RwbHVnKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+ Pj4+Pj4+Pj4+Pj4+PiArCSAqIEBocGRfZW5hYmxlOgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBFbmFibGUgaG90IHBsdWcgZGV0ZWN0aW9uLiBGcm9tIG5v dyBvbiB0aGUgYnJpZGdlIHNoYWxsIGNhbGwKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogZHJtX2Jy aWRnZV9ocGRfbm90aWZ5KCkgZWFjaCB0aW1lIGEgY2hhbmdlIGlzIGRldGVjdGVkIGluIHRoZSBv dXRwdXQKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMsIHVudGlsIGhv dCBwbHVnIGRldGVjdGlvbiBnZXRzIGRpc2FibGVkIHdpdGgKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJ ICogQGhwZF9kaXNhYmxlLgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4+Pj4+Pj4+Pj4+Pj4+ Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsIGFuZCBzaGFsbCBvbmx5IGJlIGltcGxl bWVudGVkIGJ5IGJyaWRnZXMKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogdGhhdCBzdXBwb3J0IGhv dC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBvbGxpbmcuIEJyaWRnZXMgdGhhdAo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4gKwkgKiBpbXBsZW1lbnQgaXQgc2hhbGwgYWxzbyBpbXBsZW1lbnQgdGhlIEBo cGRfZGlzYWJsZSBjYWxsYmFjayBhbmQgc2V0Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIHRoZSBE Uk1fQlJJREdFX09QX0hQRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPj4+Pj4+ Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwl2b2lkICgqaHBkX2VuYWJsZSko c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+ Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX2Rpc2FibGU6Cj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIERpc2FibGUgaG90 IHBsdWcgZGV0ZWN0aW9uLiBPbmNlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnJpZGdlCj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIHNoYWxsIG5vdCBjYWxsIGRybV9icmlkZ2VfaHBkX25vdGlm eSgpIHdoZW4gYSBjaGFuZ2UgaW4gdGhlIG91dHB1dAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBj b25uZWN0aW9uIHN0YXR1cyBvY2N1cnMuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPj4+Pj4+ Pj4+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwgYW5kIHNoYWxsIG9ubHkg YmUgaW1wbGVtZW50ZWQgYnkgYnJpZGdlcwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGF0IHN1 cHBvcnQgaG90LXBsdWcgbm90aWZpY2F0aW9uIHdpdGhvdXQgcG9sbGluZy4gQnJpZGdlcyB0aGF0 Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIGltcGxlbWVudCBpdCBzaGFsbCBhbHNvIGltcGxlbWVu dCB0aGUgQGhwZF9lbmFibGUgY2FsbGJhY2sgYW5kIHNldAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkg KiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJdm9pZCAoKmhwZF9k aXNhYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICB9 Owo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIC8qKgo+ID4+Pj4+Pj4+ Pj4+Pj4+Pj4gQEAgLTM3Miw2ICs0NzcsMzggQEAgc3RydWN0IGRybV9icmlkZ2VfdGltaW5ncyB7 Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgCWJvb2wgZHVhbF9saW5rOwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4g IH07Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArLyoqCj4gPj4+Pj4+ Pj4+Pj4+Pj4+PiArICogZW51bSBkcm1fYnJpZGdlX29wcyAtIEJpdG1hc2sgb2Ygb3BlcmF0aW9u cyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4gK2VudW0gZHJtX2JyaWRnZV9vcHMgewo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkv KioKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfREVURUNUOiBUaGUgYnJp ZGdlIGNhbiBkZXRlY3QgZGlzcGxheXMgY29ubmVjdGVkIHRvCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAr CSAqIGl0cyBvdXRwdXQuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsIGltcGxlbWVu dCB0aGUKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogJmRybV9icmlkZ2VfZnVuY3MtPmRldGVjdCBj YWxsYmFjay4KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCURS TV9CUklER0VfT1BfREVURUNUID0gQklUKDApLAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfRURJRDogVGhlIGJyaWRnZSBjYW4g cmV0cmlldmUgdGhlIEVESUQgb2YgdGhlIGRpc3BsYXkKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICog Y29ubmVjdGVkIHRvIGl0cyBvdXRwdXQuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxs IGltcGxlbWVudAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgJmRybV9icmlkZ2VfZnVuY3Mt PmdldF9lZGlkIGNhbGxiYWNrLgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+ICsJRFJNX0JSSURHRV9PUF9FRElEID0gQklUKDEpLAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4g KwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0VfT1BfSFBEOiBUaGUgYnJp ZGdlIGNhbiBkZXRlY3QgaG90LXBsdWcgYW5kIGhvdC11bnBsdWcKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ ICsJICogd2l0aG91dCByZXF1aXJpbmcgcG9sbGluZy4gQnJpZGdlcyB0aGF0IHNldCB0aGlzIGZs YWcgc2hhbGwKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogaW1wbGVtZW50IHRoZSAmZHJtX2JyaWRn ZV9mdW5jcy0+aHBkX2VuYWJsZSBhbmQKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogJmRybV9icmlk Z2VfZnVuY3MtPmRpc2FibGVfaHBkX2NiIGNhbGxiYWNrcy4KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJ ICovCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfSFBEID0gQklUKDIpLAo+ID4+ Pj4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJICogQERSTV9CUklER0Vf T1BfTU9ERVM6IFRoZSBicmlkZ2UgY2FuIHJldHJpZXZpbmcgdGhlIG1vZGVzIHN1cHBvcnRlZAo+ ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBieSB0aGUgZGlzcGxheSBhdCBpdHMgb3V0cHV0LiBUaGlz IGRvZXMgbm90IGluY2x1ZGUgcmVhZGluZCBFRElECj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIHdo aWNoIGlzIHNlcGFyYXRlbHkgY292ZXJlZCBieSBARFJNX0JSSURHRV9PUF9FRElELiBCcmlkZ2Vz IHRoYXQgc2V0Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1l bnQgdGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfbW9kZXMgY2FsbGJhY2suCj4gPj4+Pj4+Pj4+ Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwlEUk1fQlJJREdFX09QX01PREVTID0g QklUKDMpLAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gK307Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCj4gPj4+ Pj4+Pj4+Pj4+Pj4+PiAgLyoqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgICogc3RydWN0IGRybV9icmlk Z2UgLSBjZW50cmFsIERSTSBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+Pj4+Pj4+Pj4+Pj4+ Pj4+ICAgKi8KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+IEBAIC0zOTgsNiArNTM1LDI5IEBAIHN0cnVjdCBk cm1fYnJpZGdlIHsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICAJY29uc3Qgc3RydWN0IGRybV9icmlkZ2Vf ZnVuY3MgKmZ1bmNzOwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIAkvKiogQGRyaXZlcl9wcml2YXRlOiBw b2ludGVyIHRvIHRoZSBicmlkZ2UgZHJpdmVyJ3MgaW50ZXJuYWwgY29udGV4dCAqLwo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4gIAl2b2lkICpkcml2ZXJfcHJpdmF0ZTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJ LyoqIEBvcHM6IGJpdG1hc2sgb2Ygb3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZSAq Lwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwllbnVtIGRybV9icmlkZ2Vfb3BzIG9wczsKPiA+Pj4+Pj4+ Pj4+Pj4+Pj4+ICsJLyoqCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIEB0eXBlOiBUeXBlIG9mIHRo ZSBjb25uZWN0aW9uIGF0IHRoZSBicmlkZ2Ugb3V0cHV0Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAq IChEUk1fTU9ERV9DT05ORUNUT1JfKikuIEZvciBicmlkZ2VzIGF0IHRoZSBlbmQgb2YgdGhpcyBj aGFpbiB0aGlzCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIGlkZW50aWZpZXMgdGhlIHR5cGUgb2Yg Y29ubmVjdGVkIGRpc3BsYXkuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+ Pj4+Pj4gKwlpbnQgdHlwZTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJLyoqIHByaXZhdGU6ICovCj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX211dGV4 OiBQcm90ZWN0cyB0aGUgQGhwZF9jYiBhbmQgQGhwZF9kYXRhIGZpZWxkcy4KPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+ICsJICovCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCXN0cnVjdCBtdXRleCBocGRfbXV0ZXg7 Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwkgKiBAaHBkX2Ni OiBIb3QgcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2ssIHJlZ2lzdGVyZWQgd2l0aAo+ID4+Pj4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUoKS4KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ ICsJICovCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCXZvaWQgKCpocGRfY2IpKHZvaWQgKmRhdGEsIGVu dW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzKTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJLyoq Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqIEBocGRfZGF0YTogUHJpdmF0ZSBkYXRhIHBhc3NlZCB0 byB0aGUgSG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAq IEBocGRfY2IuCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwl2 b2lkICpocGRfZGF0YTsKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICB9Owo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4g IAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIHZvaWQgZHJtX2JyaWRnZV9hZGQoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBAQCAtNDI4LDYgKzU4OCwxNCBAQCB2b2lk IGRybV9hdG9taWNfYnJpZGdlX3ByZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwK PiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICB2b2lkIGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIAkJCSAgICAgIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiAgCj4gPj4+Pj4+Pj4+ Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICB2b2lkICgqY2IpKHZvaWQgKmRhdGEsCj4g Pj4+Pj4+Pj4+Pj4+Pj4+PiArCQkJCSAgICAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3Rh dHVzKSwKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICB2b2lkICpkYXRhKTsKPiA+Pj4+Pj4+Pj4+ Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSk7Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICBlbnVtIGRy bV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cyk7Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+ Pj4+Pj4+Pj4+PiAgI2lmZGVmIENPTkZJR19EUk1fUEFORUxfQlJJREdFCj4gPj4+Pj4+Pj4+Pj4+ Pj4+PiAgc3RydWN0IGRybV9icmlkZ2UgKmRybV9wYW5lbF9icmlkZ2VfYWRkKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsLAo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIAkJCQkJdTMyIGNvbm5lY3Rvcl90eXBl KTsKCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWw=