From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 1/5] drm: Add helpers to kick off self refresh mode in drivers Date: Tue, 2 Apr 2019 09:49:00 +0200 Message-ID: <20190402074900.GZ2665@phenom.ffwll.local> References: <20190326204509.96515-1-sean@poorly.run> <20190327181500.GP2665@phenom.ffwll.local> <20190328210303.GM114153@art_vandelay> <20190329082110.GA2665@phenom.ffwll.local> <20190329131659.GO114153@art_vandelay> <20190329153632.GP2665@phenom.ffwll.local> <20190329181011.GP114153@art_vandelay> <20190401134930.GS114153@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id CA5318929A for ; Tue, 2 Apr 2019 07:49:05 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id p20so10726702eds.6 for ; Tue, 02 Apr 2019 00:49:05 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190401134930.GS114153@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: Zain Wang , David Airlie , Jose Souza , Tomasz Figa , Maxime Ripard , Sean Paul , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBBcHIgMDEsIDIwMTkgYXQgMDk6NDk6MzBBTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IE9uIEZyaSwgTWFyIDI5LCAyMDE5IGF0IDA4OjIxOjMxUE0gKzAxMDAsIERhbmllbCBWZXR0 ZXIgd3JvdGU6Cj4gPiBPbiBGcmksIE1hciAyOSwgMjAxOSBhdCA3OjEwIFBNIFNlYW4gUGF1bCA8 c2VhbkBwb29ybHkucnVuPiB3cm90ZToKPiA+ID4KPiA+ID4gT24gRnJpLCBNYXIgMjksIDIwMTkg YXQgMDQ6MzY6MzJQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiBPbiBGcmks IE1hciAyOSwgMjAxOSBhdCAwOToxNjo1OUFNIC0wNDAwLCBTZWFuIFBhdWwgd3JvdGU6Cj4gPiA+ ID4gPiBPbiBGcmksIE1hciAyOSwgMjAxOSBhdCAwOToyMToxMEFNICswMTAwLCBEYW5pZWwgVmV0 dGVyIHdyb3RlOgo+ID4gPiA+ID4gPiBPbiBUaHUsIE1hciAyOCwgMjAxOSBhdCAwNTowMzowM1BN IC0wNDAwLCBTZWFuIFBhdWwgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gT24gV2VkLCBNYXIgMjcsIDIw MTkgYXQgMDc6MTU6MDBQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiA+ID4g PiA+IE9uIFR1ZSwgTWFyIDI2LCAyMDE5IGF0IDA0OjQ0OjU0UE0gLTA0MDAsIFNlYW4gUGF1bCB3 cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4gRnJvbTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1 bS5vcmc+Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+IFRoaXMgcGF0Y2ggYWRk cyBhIG5ldyBkcm0gaGVscGVyIGxpYnJhcnkgdG8gaGVscCBkcml2ZXJzIGltcGxlbWVudAo+ID4g PiA+ID4gPiA+ID4gPiBzZWxmIHJlZnJlc2guIERyaXZlcnMgY2hvb3NpbmcgdG8gdXNlIGl0IHdp bGwgcmVnaXN0ZXIgY3J0Y3MgYW5kCj4gPiA+ID4gPiA+ID4gPiA+IHdpbGwgcmVjZWl2ZSBjYWxs YmFja3Mgd2hlbiBpdCdzIHRpbWUgdG8gZW50ZXIgb3IgZXhpdCBzZWxmIHJlZnJlc2gKPiA+ID4g PiA+ID4gPiA+ID4gbW9kZS4KPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gSW4g aXRzIGN1cnJlbnQgZm9ybSwgaXQgaGFzIGEgdGltZXIgd2hpY2ggd2lsbCB0cmlnZ2VyIGFmdGVy IGEKPiA+ID4gPiA+ID4gPiA+ID4gZHJpdmVyLXNwZWNpZmllZCBhbW91bnQgb2YgaW5hY3Rpdml0 eS4gV2hlbiB0aGUgdGltZXIgdHJpZ2dlcnMsIHRoZQo+ID4gPiA+ID4gPiA+ID4gPiBoZWxwZXJz IHdpbGwgc3VibWl0IGEgbmV3IGF0b21pYyBjb21taXQgdG8gc2h1dCB0aGUgcmVmcmVzaGluZyBw aXBlCj4gPiA+ID4gPiA+ID4gPiA+IG9mZi4gT24gdGhlIG5leHQgYXRvbWljIGNvbW1pdCwgdGhl IGRybSBjb3JlIHdpbGwgcmV2ZXJ0IHRoZSBzZWxmCj4gPiA+ID4gPiA+ID4gPiA+IHJlZnJlc2gg c3RhdGUgYW5kIGJyaW5nIGV2ZXJ5dGhpbmcgYmFjayB1cCB0byBiZSBhY3RpdmVseSBkcml2ZW4u Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+IEZyb20gdGhlIGRyaXZlcidzIHBl cnNwZWN0aXZlLCB0aGlzIHdvcmtzIGxpa2UgYSByZWd1bGFyIGRpc2FibGUvZW5hYmxlCj4gPiA+ ID4gPiA+ID4gPiA+IGN5Y2xlLiBUaGUgZHJpdmVyIG5lZWQgb25seSBjaGVjayB0aGUgJ3NlbGZf cmVmcmVzaF9hY3RpdmUnIGFuZC9vcgo+ID4gPiA+ID4gPiA+ID4gPiAnc2VsZl9yZWZyZXNoX2No YW5nZWQnIHN0YXRlIGluIGNydGNfc3RhdGUgYW5kIGNvbm5lY3Rvcl9zdGF0ZS4gSXQKPiA+ID4g PiA+ID4gPiA+ID4gc2hvdWxkIGluaXRpYXRlIHNlbGYgcmVmcmVzaCBtb2RlIG9uIHRoZSBwYW5l bCBhbmQgZW50ZXIgYW4gb2ZmIG9yCj4gPiA+ID4gPiA+ID4gPiA+IGxvdy1wb3dlciBzdGF0ZS4K PiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gQ2hhbmdlcyBpbiB2MjoKPiA+ID4g PiA+ID4gPiA+ID4gLSBzL3Bzci9zZWxmX3JlZnJlc2gvIChEYW5pZWwpCj4gPiA+ID4gPiA+ID4g PiA+IC0gaW50ZWdyYXRlZCB0aGUgcHNyIGV4aXQgaW50byB0aGUgY29tbWl0IHRoYXQgd2FrZXMg aXQgdXAgKEpvc2UvRGFuaWVsKQo+ID4gPiA+ID4gPiA+ID4gPiAtIG1hZGUgdGhlIHBzciBzdGF0 ZSBwZXItY3J0YyAoSm9zZS9EYW5pZWwpCj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g PiA+IExpbmsgdG8gdjE6IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9t c2dpZC8yMDE5MDIyODIxMDkzOS44MzM4Ni0yLXNlYW5AcG9vcmx5LnJ1bgo+ID4gPiA+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNo Pgo+ID4gPiA+ID4gPiA+ID4gPiBDYzogSm9zZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+ Cj4gPiA+ID4gPiA+ID4gPiA+IENjOiBaYWluIFdhbmcgPHd6ekByb2NrLWNoaXBzLmNvbT4KPiA+ ID4gPiA+ID4gPiA+ID4gQ2M6IFRvbWFzeiBGaWdhIDx0ZmlnYUBjaHJvbWl1bS5vcmc+Cj4gPiA+ ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0u b3JnPgo+ID4gPiA+ID4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ID4gPiA+ID4gIERvY3VtZW50YXRp b24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgICAgIHwgICA5ICsKPiA+ID4gPiA+ID4gPiA+ID4g IGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAzICstCj4gPiA+ ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAgICAgICAgICB8 ICAgNCArCj4gPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxw ZXIuYyAgICAgICB8ICAzNiArKystCj4gPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYyB8ICAgOCArCj4gPiA+ID4gPiA+ID4gPiA+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMgICAgICAgICB8ICAgNSArLQo+ID4gPiA+ID4g PiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmMgfCAyMTIg KysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiA+ID4gPiA+ID4gPiAgaW5jbHVkZS9kcm0vZHJt X2F0b21pYy5oICAgICAgICAgICAgICAgICAgfCAgMTUgKysKPiA+ID4gPiA+ID4gPiA+ID4gIGlu Y2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICAgICAgICAgIHwgIDMxICsrKysKPiA+ID4g PiA+ID4gPiA+ID4gIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgICAgICAgICAgIHwg IDE5ICsrCj4gPiA+ID4gPiA+ID4gPiA+ICBpbmNsdWRlL2RybS9kcm1fc2VsZl9yZWZyZXNoX2hl bHBlci5oICAgICB8ICAyMyArKysKPiA+ID4gPiA+ID4gPiA+ID4gIDExIGZpbGVzIGNoYW5nZWQs IDM2MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiA+ID4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5j Cj4gPiA+ID4gPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX3Nl bGZfcmVmcmVzaF9oZWxwZXIuaAo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+ IC9zbmlwCj4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBpbmRleCA0OTg1Mzg0ZTUxZjYuLmVj OTBjNTI3ZGVlZCAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfc3RhdGVfaGVscGVyLmMKPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVfaGVscGVyLmMKPiA+ID4gPiA+ID4gPiA+ID4gQEAg LTEwNSw2ICsxMDUsMTAgQEAgdm9pZCBfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRl X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPiA+ID4gPiA+ID4gICAgIHN0YXRl LT5jb21taXQgPSBOVUxMOwo+ID4gPiA+ID4gPiA+ID4gPiAgICAgc3RhdGUtPmV2ZW50ID0gTlVM TDsKPiA+ID4gPiA+ID4gPiA+ID4gICAgIHN0YXRlLT5wYWdlZmxpcF9mbGFncyA9IDA7Cj4gPiA+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKyAgIC8qIFNlbGYgcmVmcmVzaCBzaG91 bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ldyB1cGRhdGUgaXMgYXZhaWxhYmxlICovCj4gPiA+ID4g PiA+ID4gPiA+ICsgICBzdGF0ZS0+YWN0aXZlID0gZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2ZWx5 X2FjdGl2ZShzdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ICsgICBzdGF0ZS0+c2VsZl9yZWZyZXNo X2FjdGl2ZSA9IGZhbHNlOwo+ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPiAg RVhQT1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlKTsK PiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTM3MCw2ICszNzQsMTAgQEAg X19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ ICAgICAvKiBEb24ndCBjb3B5IG92ZXIgYSB3cml0ZWJhY2sgam9iLCB0aGV5IGFyZSB1c2VkIG9u bHkgb25jZSAqLwo+ID4gPiA+ID4gPiA+ID4gPiAgICAgc3RhdGUtPndyaXRlYmFja19qb2IgPSBO VUxMOwo+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAvKiBTZWxmIHJl ZnJlc2ggc2hvdWxkIGJlIGNhbmNlbGVkIHdoZW4gYSBuZXcgdXBkYXRlIGlzIGF2YWlsYWJsZSAq Lwo+ID4gPiA+ID4gPiA+ID4gPiArICAgc3RhdGUtPnNlbGZfcmVmcmVzaF9jaGFuZ2VkID0gc3Rh dGUtPnNlbGZfcmVmcmVzaF9hY3RpdmU7Cj4gPiA+ID4gPiA+ID4gPiA+ICsgICBzdGF0ZS0+c2Vs Zl9yZWZyZXNoX2FjdGl2ZSA9IGZhbHNlOwo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ IFdoeSB0aGUgZHVwbGljYXRpb24gaW4gc2VsZi1yZWZyZXNoIHRyYWNraW5nPyBDb25uZWN0b3Jz IG5ldmVyIGhhdmUgYQo+ID4gPiA+ID4gPiA+ID4gZGlmZmVyZW50IHNlbGYtcmVmcmVzaCBzdGF0 ZSwgYW5kIHlvdSBjYW4gYWx3YXlzIGxvb2sgYXQgdGhlIHJpZ2h0Cj4gPiA+ID4gPiA+ID4gPiBj cnRjX3N0YXRlLiBEdXBsaWNhdGlvbiBqdXN0IGdpdmVzIHVzIHRoZSBjaGFuY2UgdG8gc2NyZXcg dXAgYW5kIGdldCBvdXQKPiA+ID4gPiA+ID4gPiA+IG9mIHN5bmMgKGUuZy4gaWYgdGhlIGNydGMg Zm9yIGEgY29ubmVjdG9yIGNoYW5nZXMpLgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+IE9uIGRpc2FibGUgdGhlIGNydGMgaXMgY2xlYXJlZCBmcm9tIGNvbm5lY3Rv cl9zdGF0ZSwgc28gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8KPiA+ID4gPiA+ID4gPiBpdC4gSWYg SSBhZGQgdGhlIGFwcHJvcHJpYXRlIGF0b21pY19lbmFibGUvZGlzYWJsZSBob29rcyBhcyBzdWdn ZXN0ZWQgYmVsb3csIHdlCj4gPiA+ID4gPiA+ID4gc2hvdWxkIGJlIGFibGUgdG8gbnVrZSB0aGVz ZS4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gWWVhaCB3ZSdkIG5lZWQgdGhlIG9sZCBzdGF0ZSB0 byBsb29rIGF0IHRoZSBjcnRjIGFuZCBhbGwgdGhhdC4gV2hpY2ggaXMgYQo+ID4gPiA+ID4gPiBs b3QgbW9yZSB0cmlja2llci4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gU2luY2UgaXQncyBzdWNo IGEgc3BlY2lhbCBjYXNlLCBzaG91bGQgd2UgaGF2ZSBhIGRlZGljYXRlZCBjYWxsYmFjayBmb3IK PiA+ID4gPiA+ID4gdGhlIGRpcmVjdCBzZWxmLXJlZnJlc2ggLT4gY29tcGxldGVseSBvZmYgdHJh bnNpdGlvbj8gSXQnbGwgYmUgYXN5bWV0cmljLAo+ID4gPiA+ID4gPiBidXQgdGhhdCdzIHRoZSBu YXR1cmUgb2YgdGhpcyBJIHRoaW5rLgo+ID4gPiA+ID4KPiA+ID4gPiA+IFJpZ2h0LCB0aGUgYXN5 bW1ldHJ5IGlzIHJlYWxseSBhbm5veWluZyBoZXJlLiBJZiB0aGUgZHJpdmVyIGlzIFNSLWF3YXJl LCBpdCBtYWtlcwo+ID4gPiA+ID4gc2Vuc2Ugc2luY2UgU1ItYWN0aXZlIHRvIGRpc2FibGUgaXMg YSByZWFsIHRyYW5zaXRpb24uIEhvd2V2ZXIgaWYgdGhlIGRyaXZlciBpcwo+ID4gPiA+ID4gbm90 IFNSLWF3YXJlIChpZTogaXQganVzdCBnZXRzIHR1cm5lZCBvZmYgd2hlbiBTUiBiZWNvbWVzIGFj dGl2ZSksIHRoZSBkaXNhYmxlCj4gPiA+ID4gPiBmdW5jdGlvbiBnZXRzIGNhbGxlZCB0d2ljZSB3 aXRob3V0IGFuIGVuYWJsZS4gU28gdGhhdCBjaGFuZ2VzIHRoZSAiZm9yIGV2ZXJ5Cj4gPiA+ID4g PiBlbmFibGUgdGhlcmUgaXMgYSBkaXNhYmxlIGFuZCB2aWNlIHZlcnNhIiBhc3N1bXB0aW9uLgo+ ID4gPiA+ID4KPiA+ID4gPiA+IFRoaXMgaXMgb25lIG9mIHRoZSBiZW5lZml0cyBvZiB0aGUgdjEg ZGVzaWduLCBTUiB3YXMgYm9sdGVkIG9uIGFuZCBubyBleGlzdGluZwo+ID4gPiA+ID4gcnVsZXMg KGFzeW5jL25vX21vZGVzZXQvZW5hYmxlLWRpc2FibGUgcGFpcnMpIHdlcmUgW2V4cGxpY2l0bHld IGJyb2tlbi4gVGhhdCdzCj4gPiA+ID4gPiBub3QgdG8gc2F5IGl0IHdhcyBiZXR0ZXIsIGl0IHdh c24ndCwgYnV0IGl0IHdhcyBhIGJpZyBjb25zaWRlcmF0aW9uLgo+ID4gPiA+ID4KPiA+ID4gPiA+ IFNvLCB3aGF0IHRvIGRvLgo+ID4gPiA+ID4KPiA+ID4gPiA+IEkgcmVhbGx5IGxpa2UgdGhlIGlk ZWEgdGhhdCBkcml2ZXJzIHNob3VsZG4ndCBoYXZlIHRvIGJlIFNSLWF3YXJlIHRvIGJlIGludm9s dmVkCj4gPiA+ID4gPiBpbiB0aGUgcGlwZWxpbmUuIFNvIGlmIHdlIGFkZCBhIGhvb2sgZm9yIHRo aXMgbGlrZSB5b3Ugc3VnZ2VzdCwgd2UgY291bGQgYXZvaWQKPiA+ID4gPiA+IGNhbGxpbmcgZGlz YWJsZSB0d2ljZSBvbiBhbnl0aGluZyBub3QgU1ItYXdhcmUuIFdlIHdvdWxkIG5lZWQgdG8gYWRk IHRoZSBob29rIG9uCj4gPiA+ID4gPiBjcnRjL2VuY29kZXIvYnJpZGdlIHRvIG1ha2Ugc3VyZSB5 b3UgY291bGQgbWl4IG4nIG1hdGNoIFNSLWF3YXJlIGFuZAo+ID4gPiA+ID4gbm9uLVNSLWF3YXJl IGRldmljZXMuCj4gPiA+ID4gPgo+ID4gPiA+ID4gSXQgcHJvYmFibHkgbWFrZXMgc2Vuc2UgdG8g anVzdCBhZGQgbWF0Y2hpbmcgU1IgaG9va3MgYXQgdGhpcyBwb2ludC4gU2luY2UgaWYKPiA+ID4g PiA+IHRoZSBkcml2ZXIgaXMgZG9pbmcgc29tZXRoaW5nIHNwZWNpYWwgaW4gZGlzYWJsZSwgaXQn bGwgbmVlZCB0byBkbyBzb21ldGhpbmcKPiA+ID4gPiA+IHNwZWNpYWwgaW4gZW5hYmxlLiBJdCBh bHNvIHJlc2VydmVzIGVuYWJsZSBhbmQgZGlzYWJsZSBmb3Igd2hhdCB0aGV5J3ZlCj4gPiA+ID4g PiB0cmFkaXRpb25hbGx5IGRvbmUuIElmIGEgZGV2aWNlIGlzIG5vdCBTUi1hd2FyZSwgaXQnbGwg anVzdCBmYWxsIGJhY2sgdG8gdGhlCj4gPiA+ID4gPiBmdWxsIGVuYWJsZS9kaXNhYmxlIGFuZCB3 ZSdsbCBtYWtlIHN1cmUgdG8gbm90IGRvdWJsZSB1cCBvbiB0aGUgZGlzYWJsZSBpbiB0aGUKPiA+ ID4gPiA+IGhlbHBlcnMuCj4gPiA+ID4gPgo+ID4gPiA+ID4gU28gd2UnbGwga2VlcCBzeW1tZXRy eSwgYW5kIGF2b2lkIGhhdmluZyBhbiBhd2Z1bCBob29rIG5hbWUgbGlrZQo+ID4gPiA+ID4gZGlz YWJsZV9mcm9tX3NlbGZfcmVmcmVzaC4uIHl1Y2shCj4gPiA+ID4gPgo+ID4gPiA+ID4gVGhvdWdo dHM/Cj4gPiA+ID4KPiA+ID4gPiBJIGxpa2UgdGhlIGFzeW1ldHJ5IGFjdHVhbGx5LCBpdCBoYXMg Z3Jvd24gb24gYSBiaXQgd2hpbGUgd29ya2luZyBvdXQgYW5kCj4gPiA+ID4gcG9uZGVyaW5nIHRo aXMgOi0pCj4gPiA+ID4KPiA+ID4KPiA+ID4gSSdtIG5vdCBxdWl0ZSB0aGVyZSB3aXRoIHlvdSwg SSBzdGlsbCB0aGluayBpdCdzIGJldHRlciB0byBzcGxpdCBpdCBhbGwgb3V0Lgo+ID4gPgo+ID4g PiA+IEJlbmVmaXRzOgo+ID4gPiA+IC0gd2Uga2VlcCB0aGUgMTAwJSBzeW1tZXRyeSBvZiBlbmFi bGUvZGlzYWJsZSBob29rcwo+ID4gPiA+IC0gc2VsZi1yZWZyZXNoIGF3YXJlIGNvbm5lY3RvciBj b2RlIGFsc28gZ2V0cyBhIGJpdCBzaW1wbGVyIEkgdGhpbms6IGluCj4gPiA+ID4gICB0aGUgbm9y bWFsIGVuYWJsZS9kaXNhYmxlIGhvb2tzIGl0IGNhbiBqdXN0IGNoZWNrIGZvcgo+ID4gPiA+ICAg Y29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgZm9yIHNy IHN0YXRlIGNoYW5nZXMKPiA+ID4gPiAgIHdoaWxlIHRoZSBwaXBlIGlzIGxvZ2ljYWxseSBzdGF5 aW5nIG9uCj4gPiA+ID4gLSB0aGUgb25lIGFzeW1tZXRyaWMgY2FzZSBkdWUgdG8gdGhpcyBkZXNp Z24gd2hlcmUgd2UgZGlzYWJsZSB0aGUgcGlwZQo+ID4gPiA+ICAgaGFyZGVyIGhhcyBhbiBhd2t3 YXJkIHNwZWNpYWwgaG9vaywgd2hpY2ggZ2l2ZXMgdXMgYSBncmVhdCBvcHBvcnR1bml0eQo+ID4g PiA+ICAgdG8gZXhwbGFpbiB3aHkgaXQncyBuZWVkZWQKPiA+ID4gPiAtIG5vdGhpbmcgY2hhbmdl cyBmb3Igbm9uLXNyIGF3YXJlIGRyaXZlcnMKPiA+ID4gPiAtIGFsc28gbm8gbmVlZCB0byBkdXBs aWNhdGUgc3Igc3RhdGUgaW50byBjb25uZWN0b3JzLCBzaW5jZSBpdCdzIGFsbAo+ID4gPiA+ICAg ZmFpcmx5IGV4cGxpdCBhbHJlYWR5IGluIGFsbCB0aHJlZSBzdGF0ZSB0cmFuc2l0aW9ucy4KPiA+ ID4KPiA+ID4gVG8gYmUgZmFpciwgb25seSBvbmUgb2YgdGhlc2UgaXMgZXhjbHVzaXZlIHRvIGFz eW1tZXRyeSwgYW5kIGl0J3MgdGhlIG9uZSB0aGF0Cj4gPiA+IHByb3ZpZGVzIHRoZSBvcHBvcnR1 bml0eSB0byBhZGQgYSBjb21tZW50LiBJZiB0aGUgc3IgZnVuY3Rpb25zIGFyZSBzeW1tZXRyaWMs Cj4gPiA+IHRoZSBjb2RlIGJlY29tZXMgbXVjaCBtb3JlICJub3JtYWwiIGFuZCBsZXNzIGRlc2Vy dmluZyBvZiB0aGUgZXhwbGFuYXRpb24uCj4gPiA+Cj4gPiA+IFRoZSByZWFzb24gSSB3b3VsZCBs aWtlIHRvIHNwbGl0IG91dCBlbnRyeSBhbmQgZXhpdCBpcyB0aGF0IGl0IG1ha2VzIHRoZSBkcml2 ZXIKPiA+ID4gY29kZSBhIGJpdCBlYXNpZXIgdG8gcmF0aW9uYWxpemUuIEN1cnJlbnRseSB3ZSBu ZWVkIHRvIGNoZWNrIHRoZSBzdGF0ZSBhdCB0aGUKPiA+ID4gYmVnaW5uaW5nIG9mIGVuYWJsZS9k aXNhYmxlIHRvIGRldGVybWluZSB3aGV0aGVyIHdlIHdhbnQgdGhlIGZ1bGwgZW5hYmxlL2Rpc2Fi bGUKPiA+ID4gb3IgdGhlIHBzciBleGl0L2VudGVyLiBTbyB0aGUgc3JfZGlzYWJsZSBmdW5jdGlv biB3b3VsZCByZWFsbHkganVzdCBiZSBwbGFpbgo+ID4gPiBvbGQgZGlzYWJsZSB3aXRob3V0IHRo ZSBzcGVjaWFsIGNhc2luZyBhdCB0aGUgdG9wLiBJbiB0aGF0IGNhc2UsIHdlIGRvbid0IGV2ZW4K PiA+ID4gbmVlZCB0aGUgc2VwYXJhdGUgZnVuY3Rpb24sIHdlIGNvdWxkIGp1c3QgbGltaXQgZGlz YWJsZSBjYWxscyBvbmx5IG9uIHRob3NlCj4gPiA+IG9iamVjdHMgd2hpY2ggYXJlIGVmZmVjdGl2 ZWx5IG9uIChhY3RpdmUgfHwgc3IpLiBUaGF0IHN0YXJ0cyBzb3VuZGluZyBhIGxvdCBsaWtlCj4g PiA+IHdoYXQgd2UgYWxyZWFkeSBoYXZlIGhlcmUuCj4gPiA+Cj4gPiA+IEZ1cnRoZXIsIGRvaW5n IFNSIGluIGVuYWJsZS9kaXNhYmxlIGlzIHJlYWxseSBqdXN0IGxlZ2FjeSBmcm9tIHYxIHdoaWNo IHRyaWVkIHRvCj4gPiA+IGtlZXAgYXMgbXVjaCB0aGUgc2FtZSBhcyBwb3NzaWJsZS4gTm93IHRo YXQgd2UncmUgImluIGl0IiwgSSB0aGluayBpdCBtYWtlcwo+ID4gPiBzZW5zZSB0byBnbyBhbGwg aW4gYW5kIG1ha2UgU1IgYSBmaXJzdCBjbGFzcyBjaXRpemVuLgo+ID4gCj4gPiBIbSwgcXVlc3Rp b24gaXM6IEhvdyBtYW55IGhvb2tzIGRvIHlvdSBuZWVkPyBKdXN0IHNvbWV0aGluZyBvbiB0aGUK PiA+IGNvbm5lY3Rvciwgb3Igb24gdGhlIGVuY29kZXIsIG9yIGV2ZXJ5d2hlcmU/Cj4gCj4gYnJp ZGdlL2VuY29kZXIvY3J0YyBhbGwgZG8gc3BlY2lhbCB0aGluZ3MgZHVyaW5nIFNSIHRyYW5zaXRp b25zLCBJIGRvbid0IHRoaW5rCj4gY29ubmVjdG9yIGlzIG5lY2Vzc2FyeS4gVGhpcyBpcyB0aGUg c2FtZSBmb3IgYW55IC5zcl9kaXNhYmxlIGZ1bmN0aW9uLCBldmVyeW9uZQo+IHdvdWxkIG5lZWQg dG8gaW1wbGVtZW50IGl0LgoKSG0sIHRoYXQncyBhIGxvdCBvZiBuZXcgY2FsbGJhY2tzIC4uLgoK PiA+IEFuZCBob3cgZG8geW91IGhhbmRsZSB0aGUKPiA+IHZhcmlvdXMgc3RhdGUgdHJhbnNpdGlv bnMuIE9uIHRoZSBkaXNhYmxlIHNpZGUgd2UgaGF2ZToKPiA+IC0gYWN0aXZlIG9uIC0+IGFjdGl2 ZSBvZmYsIG5vIHNyICh1c2Vyc3BhY2UgZGlzYWJsZXMgY3J0YykKPiA+IC0gYWN0aXZlIG9uLCBz ciBvZmYgLT4gYWN0aXZlIG9vZmYsIHNyIG9uIChzciB0aW1lciBmaXJlcyBhbmQgc3VzcGVuZHMg Y3J0YykKPiA+IC0gYWN0aXZlIG9mZiwgc3Igb24gLT4gYWN0aXZlIG9mZiwgc3Igb2ZmICh1c2Vy c3BhY2UgZGlzYWJsZSBjcnRjCj4gPiB3aGlsZSBjcnRjIGlzIGluIHNyKQo+ID4gVGhlc2UgYXJl IGFsbCAibG9naWNhbCBhY3RpdmUgb24iIC0+ICJzb21ldGhpbmciIHRyYW5zaXRpb25zIHdoZXJl IHdlCj4gPiBkaXNhYmxlIHNvbWV0aGluZyAoY3J0Yywgb3IgZGlzcGxheSBvciBib3RoKQo+ID4g Cj4gPiBTbyBpbiBhIHdheSB5b3UnZCBuZWVkIDMgaG9va3MgaGVyZSBmb3IgdGhlIGZ1bGwgbWF0 cml4Lgo+ID4gQW5kIHRoZXkgYWxsCj4gPiBraW5kYSBkaXNhYmxlIHNvbWV0aGluZy4gT24gdGhl IGVuYWJsZSBzaWRlIHdlIGhhdmU6Cj4gPiAtIGFjdGl2ZSBvZmYsIHNyIG9mZiAtPiBhY3RpdmUg b24sIHNyIG9mZiAodXNlcnNwYWNlIGVuYWJsZXMgY3J0YykKPiA+IC0gYWN0aXZlIG9mZiwgc3Ig b24gLT4gYWN0aXZlIG9uLCBzciBvZmYgKHVzZXJzcGFjZSBkb2VzIGEgcGFnZWZsaXAsIHN0b3Bz IHNyKQo+ID4gSGVyZSB3ZSBlaXRoZXIgZW5hYmxlIHRoZSBjcnRjIChkaXNwbGF5IGFscmVhZHkg b24pIG9yIGJvdGguIFNpbmNlIHdlCj4gPiBvbmx5IGdvIGludG8gc3Igd2l0aCB0aGUgdGltZXIg dGhlcmUncyBubyAzcmQgY2FzZSBvZiBvbmx5IGVuYWJsaW5nCj4gPiB0aGUgZGlzcGxheS4gU28g c3RpbGwgYXN5bWV0cmljLCBldmVuIHdpdGggbG90cyBtb3JlIGhvb2tzLgo+IAo+IFdlIGRvbid0 IG5lZWQgdGhlIChhY3RpdmUgb2ZmLCBzciBvbikgLT4gKGFjdGl2ZSBvZmYsIHNyIG9mZikgKHRo aXJkKSBjYXNlCj4gYWJvdmUsIGl0J3MgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LiBKdXN0IGRvaW5n IGEgZnVsbCBkaXNhYmxlIGlzIHN1ZmZpY2llbnQsCj4gc28geW91IHdvdWxkIGhhdmUgc3ltbWV0 cnkgaW4gdGhlIGVuYWJsZS9kaXNhYmxlIGNhbGxzIGFuZCBhc3ltbWV0cnkgaW4gdGhlCj4gc3Ig Y2FsbHMuIFRoaXMgaXMgc2ltaWxhciB0byBlbmFibGluZyBhIHBsYW5lLCBvciB0dXJuaW5nIG90 aGVyIEhXIGZlYXR1cmVzIG9uCj4gd2hpbGUgZW5hYmxlZC4gU1IgaXMgYWZ0ZXIgYWxsIGp1c3Qg YSBmZWF0dXJlIG9mIHRoZSBoYXJkd2FyZS4KCkhtIHllYWggSSBndWVzcyB3ZSBjYW4gdHJlYXQg aXQgbGlrZSBwbGFuZSBkaXNhYmxpbmcsIHdoaWNoIGltcGxpY2l0bHkKaGFwcGVucyBpbiBjcnRj LT5kaXNhYmxlIHRvby4gT3IgdGhlIGltcGxpY2l0IHBsYW5lIGVuYWJsZSBpbiBjcnRjLT5lbmFi bGUKKGFsdGhvdWdoIHRoYXQgY2FzZSBkb2Vzbid0IGV4aXN0IGZvciBzciwgc2luY2Ugd2UgbmV2 ZXIgZ28gZGlyZWN0bHkgaW50bwpzcikuCgo+ID4gSWYgeW91IHdhbnQgdGhlIGZ1bGwgbWF0cml4 LCB0aGVyZSdzIGdvaW5nIHRvIGJlIGEgX2xvdF8gb2YgaG9va3MuIEkKPiA+IHRoaW5rIHNsaWdo dGx5IG1vcmUgYXdrd2FyZCBkcml2ZXIsIGJ1dCBsZXNzIGhvb2tzIGlzIGJldHRlci4gSGVuY2UK PiA+IHRoZSBzbGlnaHRseSBhd2t3YXJkIG1pZGRsZSBncm91bmQgb2YgYSBzcGVjaWFsIGRpc2Fi bGVfZnJvbV9zciBob29rLgo+ID4gQnV0IG1heWJlIHRoZXJlJ3MgYSBiZXR0ZXIgb3B0aW9uIHNv bWV3aGVyZSBlbHNlIC4uLgo+IAo+IFRoZXJlJ3MgcmVhbGx5IG5vIHJlYXNvbiB0byBldmVuIGhh dmUgdGhlIHNyX2Rpc2FibGUgZnVuY3Rpb24uIFRoZSAuZGlzYWJsZQo+IGZ1bmN0aW9uIGluIHRo ZSBkcml2ZXIgd2lsbCBhbHJlYWR5IG5lZWQgc3BlY2lhbCBjYXNpbmcgdG8gZGV0ZWN0IHBzcl9l bnRyeQo+IHZzIGZ1bGwgZGlzYWJsZSwgc28gaXQnZCBiZSBiZXR0ZXIgdG8ganVzdCBjYWxsIGRp c2FibGUgdHdpY2UuIFRoZSAuc3JfZGlzYWJsZQo+IGZ1bmN0aW9uIHdvdWxkIGFsd2F5cyBqdXN0 IGRvIGEgZnVsbCBkaXNhYmxlIChpZTogdGhlIC5kaXNhYmxlIGltcGxlbWVudGF0aW9uCj4gd2l0 aG91dCB0aGUgc3IgY2hlY2tzIGF0IHRoZSB0b3ApLgo+IAo+IFNvIHRoZSBkZWJhdGUgc2hvdWxk IGJlOiBhZGQgc3JfZW5hYmxlL2Rpc2FibGUgcGFpciBvZiBob29rcywgb3Igb3ZlcmxvYWQKPiBk aXNhYmxlIHdpdGggYXN5bW1ldHJ5IChjdXJyZW50IGltcGxlbWVudGF0aW9uKS4KCkkgZ3Vlc3Mg dGhhdCBtZWFucyB3ZSdyZSBiYWNrIHRvIG5vIG5ldyBob29rcywgYW5kIHRoZSBkcml2ZXIganVz dCBkdHJ0CmluIHRoZSBleGlzdGluZyBob29rcyB3aXRoIHRoZSBzdGF0ZSB0cmFuc2l0aW9uIGJp dHMgd2UgaGF2ZT8gSSB0aG91Z2h0CnRoZSBpc3N1ZSB3aXRoIHRoYXQgaXMgdGhhdCB3ZSBjYW4n dCBnZXQgYXQgYWxsIHRoZSByaWdodCBiaXRzLCBoZW5jZSB0aGUKc3JfZGlzYWJsZSBzcGVjaWFs IGNhc2UgaG9vay4KCk9yIGlzIHlvdXIgcGxhbiB0byByb2xsIG91dCBhIGZ1bGwgbmV3IHNldCBv ZiBob29rcywgZXF1aXBwZWQgd2l0aApvbGQvbmV3X3N0YXRlIGZvciBldmVyeXRoaW5nPyBJIHRo aW5rIHdlJ2Qgb25seSBuZWVkIG9sZC9uZXdfc3RhdGUgZm9yIHRoZQpvYmplY3QgYXQgaGFuZCwg c2luY2Ugd2l0aCB0aGUgb2xkX3N0YXRlIHlvdSBjYW4gZ2V0IGF0IGRybV9hdG9taWNfc3RhdGUs CndoaWNoIGFsbG93cyB5b3UgdG8gZ2V0IGFueXRoaW5nIGVsc2UgcmVhbGx5LgoKT3Igc2hvdWxk IHdlIGp1c3QgYWRkIGRybV9hdG9taWNfc3RhdGUgKnN0YXRlIHRvIGFsbCB0aGVzZSBob29rcz8g VGhhdCdkCnByb2JhYmx5IHRoZSBtb3N0IGZsZXhpYmxlIGxvbmctdGVybSB0aGluZy4gQ291bGQg ZXZlbiBiZSBkb25lIHdpdGggY29jY2ksCnNvIHdlIGRvbid0IG5lZWQgbmV3IGF0b21pY19kaXNh YmxlMiBjYWxscyBhbmQgc2lsbHkgdGhpbmdzIGxpa2UgdGhhdC4KLURhbmllbAo+IAo+IFNlYW4K PiAKPiA+IC1EYW5pZWwKPiA+IAo+ID4gPgo+ID4gPiBTZWFuCj4gPiA+Cj4gPiA+ID4KPiA+ID4g PiAtIFNSIG9uIGNhbiBvbmx5IGhhcHBlbiBpZiB0aGUgbG9naWNhbCBjcnRjX3N0YXRlLT5hY3Rp dmUgaXMgb24gYW5kIHN0YXlzIG9uCj4gPiA+ID4gLSBTUiBjYW4gZ2V0IGRpc2FibGVkIGluIDIg c3ViY2FzZXMKPiA+ID4gPiAgIC0gbG9naWNhbCBhY3RpdmUgc3RhdGUgc3RheXMgb24gLT4gaGFu ZGxlZCB3aXRoIGV4aXN0aW5nIGhvb2tzCj4gPiA+ID4gICAtIGxvZ2ljYWwgYWN0aXZlIHN0YXRl IGFsc28gZ29lcyBvZmYgLT4gZXhpc3RpbmcgaG9va3MgYWxsIHNraXAgKGJlY2F1c2UKPiA+ID4g PiAgICAgYWN0aXZlPWZhbHNlIC0+IGFjdGl2ZT1mYWxzZSBpcyBhIG5vLW9wKSwgdGhlIHNwZWNp YWwgLT5zcl9kaXNhYmxlCj4gPiA+ID4gICAgIHRha2VzIGNhcmUKPiA+ID4gPgo+ID4gPiA+IEl0 IGZlZWxzIGxpa2UgdGhpcyBpcyBjbGVhbiwgaW50ZWdyYXRlcyB3ZWxsIHdpdGggYXRvbWljIGhl bHBlcnMgb3ZlcmFsbAo+ID4gPiA+IGFuZCBpdCBldmVuIG1ha2VzIHNlbnNlLiBBdCBsZWFzdCB0 byBteSBzbGlnaHRseSBveHlnZW4gZGVwcml2ZWQgbWluZAo+ID4gPiA+IHJpZ2h0IG5vdyAuLi4K PiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPiAgRVhQT1JUX1NZ TUJPTChfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUpOwo+ID4g PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+IC9zbmlwCj4gPiA+ID4gPgo+ID4gPiA+ ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5j bHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPiA+ID4gPiA+ID4gPiA+IGluZGV4IGM4MDYxOTky ZDZjYi4uMGFlN2U4MTJlYzYyIDEwMDY0NAo+ID4gPiA+ID4gPiA+ID4gPiAtLS0gYS9pbmNsdWRl L2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0v ZHJtX2Nvbm5lY3Rvci5oCj4gPiA+ID4gPiA+ID4gPiA+IEBAIC01MDEsNiArNTAxLDM3IEBAIHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIHsKPiA+ID4gPiA+ID4gPiA+ID4gICAgIC8qKiBAdHY6 IFRWIGNvbm5lY3RvciBzdGF0ZSAqLwo+ID4gPiA+ID4gPiA+ID4gPiAgICAgc3RydWN0IGRybV90 dl9jb25uZWN0b3Jfc3RhdGUgdHY7Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ ICsgICAvKioKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAqIEBzZWxmX3JlZnJlc2hfY2hhbmdlZDoK PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAqCj4gPiA+ID4gPiA+ID4gPiA+ICsgICAgKiBTZXQgdHJ1 ZSB3aGVuIHNlbGYgcmVmcmVzaCBzdGF0dXMgaGFzIGNoYW5nZWQuIFRoaXMgaXMgdXNlZnVsIGZv cgo+ID4gPiA+ID4gPiA+ID4gPiArICAgICogdXNlIGluIGVuY29kZXIvYnJpZGdlIGVuYWJsZSB3 aGVyZSB0aGUgb2xkIHN0YXRlIGlzIHVuYXZhaWxhYmxlIHRvCj4gPiA+ID4gPiA+ID4gPiA+ICsg ICAgKiB0aGUgZHJpdmVyIGFuZCBpdCBuZWVkcyB0byBrbm93IHdoZXRoZXIgdGhlIGVuYWJsZSB0 cmFuc2l0aW9uIGlzIGEKPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAqIGZ1bGwgdHJhbnNpdGlvbiwg b3IgaWYgaXQganVzdCBuZWVkcyB0byBleGl0IHNlbGYgcmVmcmVzaCBtb2RlLgo+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+IFVoLCB3ZSBqdXN0IG5lZWQgcHJvcGVyIGF0b21pYyBjYWxs YmFja3Mgd2l0aCBhbGwgdGhlIHN0YXRlcyBhdmFpbGFibGUuCj4gPiA+ID4gPiA+ID4gPiBPbmNl IHlvdSBoYXZlIG9uZSwgeW91IGNhbiBnZXQgYXQgdGhlIG90aGVycy4KPiA+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBXZWxsLCBzdXJlLCB3ZSBjb3VsZCBkbyB0aGF0 IHRvbyA6KQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiB0YmggSSdtIG5vdCBzdXJlIHdoZXRoZXIg dGhhdCdzIHJlYWxseSBiZXR0ZXIsIHRoZSBkdXBsaWNhdGlvbiBqdXN0IGlya3MKPiA+ID4gPiA+ ID4gbWUuIFdpdGggYSBuZXcgY2FsbGJhY2sgZm9yIHRoZSBzcGVjaWFsIHNlbGYtcmVmcmVzaCBk aXNhYmxlIChJIGd1ZXNzIHdlCj4gPiA+ID4gPiA+IG9ubHkgbmVlZCB0aGF0IG9uIHRoZSBjb25u ZWN0b3IpLCBwbHVzIGxvb2tpbmcgYXQKPiA+ID4gPiA+ID4gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0 Yy0+c3RhdGUtPnNlbGZfcmVmcmVzaCwgSSB0aGluayB3ZSdkIGJlIGNvdmVyZWQKPiA+ID4gPiA+ ID4gYXMtaXM/IE9yIGlzIHRoZXJlIGEgY29ybmVyIGNhc2UgSSdtIHN0aWxsIG1pc3Npbmc/Cj4g PiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gSSB0aGluayB3ZSBjYW4gcmVtb3ZlIHNlbGZf cmVmcmVzaF9jaGFuZ2VkL3NlbGZfcmVmcmVzaF9hY3RpdmUgaWYgd2UgaW1wbGVtZW50Cj4gPiA+ ID4gPiBkZWRpY2F0ZWQgaG9va3MgZm9yIHNlbGZfcmVmcmVzaF9lbnRlci9leGl0LiBXZSdsbCB3 YW50IHRvIGtlZXAKPiA+ID4gPiA+IHNlbGZfcmVmcmVzaF9hd2FyZSBhcm91bmQgc2luY2UgdGhl IHByZXNlbmNlIG9mIHRoZSBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbnMKPiA+ID4gPiA+IGRvZXMg bm90IGltcGx5IHRoZSBwYW5lbCBjb25uZWN0ZWQgc3VwcG9ydHMgU1IuCj4gPiA+ID4KPiA+ID4g PiBZdXAsIHNlbGZfcmVmcmVzaF9hd2FyZSBpcyBuZWVkZWQuCj4gPiA+ID4KPiA+ID4gPiA+IEFz IG1lbnRpb25lZCBhYm92ZSwgd2UnbGwgbmVlZCB0aGVzZSBob29rcyBvbiBldmVyeXRoaW5nIGlu IHRoZSBwaXBlbGluZSB0byBiZQo+ID4gPiA+ID4gZnVsbHkgY292ZXJlZC4KPiA+ID4gPgo+ID4g PiA+IExldCdzIGp1c3QgZG8gdGhlIC0+c3JfZGlzYWJsZSBob29rIGZvciBub3cuIEkgZG9uJ3Qg dGhpbmsgd2UgbmVlZCBhbGwgdGhlCj4gPiA+ID4gb3RoZXJzIHJlYWxseS4KPiA+ID4gPgo+ID4g PiA+IENoZWVycywgRGFuaWVsCj4gPiA+ID4gLS0KPiA+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+ ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiA+ID4gaHR0cDovL2Js b2cuZmZ3bGwuY2gKPiA+ID4KPiA+ID4gLS0KPiA+ID4gU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdp bmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKPiA+IAo+ID4gCj4gPiAKPiA+IC0tIAo+ID4gRGFu aWVsIFZldHRlcgo+ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiAr NDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4gCj4gLS0gCj4gU2Vh biBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKCi0tIApEYW5p ZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxv Zy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=