From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH RFCv2 0/4] Etnaviv DRM driver again Date: Thu, 22 Oct 2015 09:12:59 +0200 Message-ID: <20151022071259.GJ16848@phenom.ffwll.local> References: <1441980614-19216-1-git-send-email-l.stach@pengutronix.de> <20151020093627.GV13786@phenom.ffwll.local> <20151021170401.GI32532@n2100.arm.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f174.google.com (mail-wi0-f174.google.com [209.85.212.174]) by gabe.freedesktop.org (Postfix) with ESMTPS id 26E556E13B for ; Thu, 22 Oct 2015 00:13:04 -0700 (PDT) Received: by wicfx6 with SMTP id fx6so122073853wic.1 for ; Thu, 22 Oct 2015 00:13:02 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20151021170401.GI32532@n2100.arm.linux.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Russell King - ARM Linux Cc: kernel@pengutronix.de, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBPY3QgMjEsIDIwMTUgYXQgMDY6MDQ6MDFQTSArMDEwMCwgUnVzc2VsbCBLaW5nIC0g QVJNIExpbnV4IHdyb3RlOgo+IE9uIFR1ZSwgT2N0IDIwLCAyMDE1IGF0IDExOjM2OjI3QU0gKzAy MDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBGcmksIFNlcCAxMSwgMjAxNSBhdCAwNDox MDoxMFBNICswMjAwLCBMdWNhcyBTdGFjaCB3cm90ZToKPiA+ID4gSGV5IGFsbCwKPiA+ID4gCj4g PiA+IHRoaXMgaXMgYSBuZXcgcG9zdGluZyBvZiB0aGUgRXRuYXZpdiBEUk0gZHJpdmVyIGZvciBW aXZhbnRlIGVtYmVkZGVkIEdQVXMuCj4gPiA+IFRoaXMgdGltZSBJJ3ZlIHNxdWFzaGVkIGFsbCBw YXRjaGVzIHRvIHRoZSBEUk0gZHJpdmVyIGl0c2VsZiBpbnRvIGEgc2luZ2xlIGNvbW1pdAo+ID4g PiB0byBtYWtlIGl0IGVhc2llciBmb3IgcGVvcGxlIHRvIGxvb2sgYXQgYW5kIHJldmlldyB0aGlz IHN0dWZmLgo+ID4gPiAKPiA+ID4gQXNpZGUgZnJvbSBzcXVhc2hpbmcgb2Ygc29tZSBvZiB0aGUg dHJpdmlhbCBidWdmaXhlcyBJIGludGVuZCB0byBrZWVwIGFsbCB0aGUKPiA+ID4gaW5kaXZpZHVh bCBjb21taXRzIGFyb3VuZCB0byByZXRhaW4gdGhlIGF1dGhvcnNoaXAgb2YgcGVvcGxlIHdvcmtp bmcgb24gdGhpcwo+ID4gPiBkcml2ZXIuIElmIHlvdSB3YW50IHRvIGxvb2sgYXQgdGhlIHN0cmVh bSBvZiBjb21taXRzIHBsZWFzZSBmZXRjaAo+ID4gPiAKPiA+ID4gZ2l0Oi8vZ2l0LnBlbmd1dHJv bml4LmRlL2dpdC9sc3QvbGludXguZ2l0IGV0bmF2aXYtZm9yLXVwc3RyZWFtCj4gPiAKPiA+IEZp bmFsbHkgdW5sYXppZWQgYW5kIGxvb2tlZCBhdCB0aGlzLCBhc3N1bWluZyBpdCdzIHYyLiBQaWxl cyBvZiBjb21tZW50czoKPiA+IAo+ID4gLSBQbGVhc2UgZG9uJ3QgdXNlIGRldi0+c3RydWN0X211 dGV4IGluIG5ldyBkcml2ZXIgY29kZS4gV2l0aCBsYXRlc3QKPiA+ICAgbGludXgtbmV4dCB0aGVy ZSdzIG5vIHJlYXNvbiBhdCBhbGwgZm9yIGRyaXZlcidzIHRvIHVzZSBpdCwgYW5kIGRvaW5nIHNv Cj4gPiAgIHdpbGwgbWFzc2l2ZWx5IGVuY3VtYmVyIHlvdXIgZHJpdmVyIHdpdGggZXZlcnl0aGlu ZyBlbHNlLgo+ID4gCj4gPiAgIFRoZXJlJ3MgYSBiaXQgYSB0cmljayBpbnZvbHZlZCBzaW5jZSBh cy1pcyBzdHJ1Y3RfbXV0ZXggYWxsb3dzIHlvdSB0byBkbwo+ID4gICBob3JyaWJsZSBsZWFreSBs b2NraW5nIGRlc2lnbnMgYXJvdW5kIGdlbV9mcmVlX29iamVjdC4gT24gYSBxdWljayBsb29rCj4g PiAgIHRvIGZpeCB0aGlzIHlvdSBwcm9iYWJseSBuZWVkIGEgbXV0ZXggZm9yIHRoZSBkcm1fbW0g YW5kIHZhcmlvdXMgbGlzdHMsCj4gPiAgIHBsdXMgcGVyIG9iamVjdCByZXNlcnZhdGlvbnMuICBU cmlja3kgcGFydCBpcyB0aGUgZXZpY3Rpb24gbG9naWMgaW4KPiA+ICAgZXRuYXZpdl9pb21tdV9t YXBfZ2VtLCB3aGVyZSB5b3UgbmVlZCB0byB0cnlsb2NrIGV2aWN0aW9uIGNhbmRpZGF0ZXMuIElm Cj4gPiAgIHlvdSBjYW4ndCBsb2NrIHRoZW0geW91IGNhbid0IGV2aWN0IHRoZW0gYW55d2F5LCBz byBubyBoYXJtIGRvbmUuCj4gPiAKPiA+ICAgSWYgdGhhdCdzIHRvbyBtdWNoIGp1c3QgcmVwbGFj ZSBpdCB3aXRoIHlvdXIgb3duIGxvY2sgYW5kIHRyeWxvY2sgaW4KPiA+ICAgZ2VtX2ZyZWVfb2Jq ZWN0LCBwdW50aW5nIHRvIGEgd29ya2VyIGlmIHRoYXQgZmFpbHMgKHR0bSBoYXMgYQo+ID4gICBk ZWZlcnJlZF9mcmVlIGxpc3QgZm9yIHRoYXQsIHByb3RlY3RlZCBieSBhIHNwaW5sb2NrKS4KPiA+ IAo+ID4gLSAtPmxvYWQgYW5kIC0+dW5sb2FkIGFyZSBkZXByZWNhdGVkIGhvb2tzIGJlY2F1cyBm dW5kYW1lbnRhbGx5IHJhY3kgKGFuZAo+ID4gICB3ZSBjYW4ndCBmaXggaXQgc2luY2UgaXQgd291 bGQgYnJlYWsgZHJpIDEgY3JhcCkuIFBsZWFzZSB1c2UgaW5zdGVhZDoKPiA+IAo+ID4gCWRybV9k ZXZfYWxsb2MoKTsKPiA+IAkvKiBsb2FkIGNvZGUgKi8KPiA+IAlkcm1fZGV2X3JlZ2lzdGVyKCk7 Cj4gPiAKPiA+ICAgYW5kCj4gPiAKPiA+IAlkcm1fZGV2X3VucmVnaXN0ZXIoKTsKPiA+IAkvKiB1 bmxvYWQgY29kZSAqLwo+ID4gCWRybV9kZXZfdW5yZWYoKTsKPiA+IAo+ID4gICBMYXVyZW50IGp1 c3Qgc2VudCBhIG5pY2UgcGF0Y2ggZm9yIHJjYXIgdG8gZG8gdGhhdCBjb252ZXJzaW9uLiBUaGF0 IHdpbGwKPiA+ICAgYWxzbyBnZXQgcmlkIG9mIHRoZSBkZXByZWNhdGVkIGRybV9wbGF0Zm9ybV9p bml0IGFuZCBkcm1fZGV2X3B1dC4KPiA+IAo+ID4gLSBjaGVjayBwYWQgZm9yIDAgaW4gZ2VtX2lu Zm8gaW9jdGwuCj4gCj4gTXkgdHJlZSBhbHJlYWR5IGRvZXMgdGhpcywgYW5kIGFmYWlrIGl0IHdh cyBwYXJ0IG9mIENocmlzdGlhbidzIHBhdGNoZXMuCj4gSSdtIG5vdCBzdXJlIHdoZXRoZXIgTHVj YXMnIHBhdGNoZXMgYXJlIG1pc3Npbmcgc29tZXRoaW5nLgo+IAo+ICtzdGF0aWMgaW50IGV0bmF2 aXZfaW9jdGxfZ2VtX2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAr ICAgICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICt7Cj4gKyAgICAgICBzdHJ1 Y3QgZHJtX2V0bmF2aXZfZ2VtX2luZm8gKmFyZ3MgPSBkYXRhOwo+ICsgICAgICAgc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmo7Cj4gKyAgICAgICBpbnQgcmV0ID0gMDsKPiArCj4gKyAgICAgICBp ZiAoYXJncy0+cGFkKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAKPiBEaWQg eW91IG1pc3MgaXQ/CgpUaGF0IHdhc24ndCB0aGVyZSwgSSBndWVzcyBJIGxvb2tlZCBhdCBhbiBv dXRkYXRlZCB0cmVlIDooKQo+IAo+ID4gLSB0aGUgZmxhZ3MgY2hlY2sgZm9yIGdlbV9uZXcgc2Vl bXMgbGVha3kgc2luY2UgeW91IG9ubHkgY2hlY2sgZm9yIGZsYWdzICYKPiA+ICAgRVROQV9CT19D QUNIRV9NQVNLLgo+IAo+IEZpeGVkIGluIGV0bmF2aXZfaW9jdGxfZ2VtX25ldygpLgo+IAo+ID4g LSBzaW1pbGFyIGlucHV0IHZhbGlkYXRpb24gaXNzdWUgZm9yIG9wIGluIGdlbV9jcHVfcHJlcAo+ IAo+IEZpeGVkIGluIGV0bmF2aXZfaW9jdGxfZ2VtX2NwdV9wcmVwKCkuCj4gCj4gPiAtIG1heWJl IGFkZCBhIGZsYWdzL29wIHRvIGZ1dHVyZS1wcm9vZiBnZW1fY3B1X2ZpbmkganVzdCBpbiBjYXNl PyBNaWdodCBiZQo+ID4gICB1c2VmdWwgdG8gb3B0aW1pemUgY2FjaGUgZmx1c2hpbmcuCj4gCj4g SGF2aW5nIGp1c3QgbWVyZ2VkIEx1Y2FzJyBwYXRjaCwgd2hpY2ggY2FycmllcyB0aGUgb3AgZnJv bSBnZW1fY3B1X3ByZXAoKQo+IG92ZXIgdG8gZ2VtX2NwdV9maW5pKCksIEknbSB3b25kZXJpbmcg aWYgdGhpcyBpcyBoaWRpbmcgYSBwb3RlbnRpYWwKPiBwcm9ibGVtIC0gd2hhdCBpZiB0d28gdGhy ZWFkcyBjYWxsIGdlbV9jcHVfcHJlcCgpIGJ1dCB3aXRoIGRpZmZlcmVudCAnb3AnCj4gYXJndW1l bnRzLiAgU2VlbXMgcmF0aGVyIGZyYWdpbGUsIGFzICdldG5hdml2X29iai0+bGFzdF9jcHVfcHJl cF9vcCcKPiBiZWNvbWVzIHJhdGhlciBpbmRldGVybWluYW50LgoKSG0sIGRyb3BwaW5nIGxhc3Rf Y3B1X3ByZXBfb3AgYW5kIGFkZGluZyBpdCB0byB0aGUgZmluaSBpb2N0bCBtaWdodCBiZSBhbgpv cHRpb24uIEJ1dCBJIGhhdmUgbm8gaWRlYSB3aGV0aGVyIHRoZSBkbWEgYXBpIGxpa2VzIHRoYXQg cmVhbGx5LiBXcnQKc2FmZXR5IEkgZG9uJ3QgdGhpbmsgdGhlcmUncyBhIGNvbmNlcm4gaGVyZSAt IGlmIHVzZXJzcGFjZSBkZWNpZGVzIHRvIGJlCmJ1Z2d5IHdydCBjb2hlcmVuY3kgdHJhY2tpbmcg aXQnbGwgZ2V0IGFsbCB0aGUgcGllY2VzLgoKPiA+IC0gdGhlIG5hbWluZyBpbiBnZW1fc3VibWl0 X3JlbG9jIGNvbmZ1c2VzIG1lIGEgYml0LCBidXQgdGhhdCdzIGp1c3QgYQo+ID4gICBiaWtlc2hl ZCA7LSkKPiA+IAo+ID4gLSBnZW1fc3VibWl0IHNlZW1zIHRvIG1pc3MgYSBmbGFnLCBpbWUgZGVm aW5pdGVseSBuZWVkZWQgKGp1c3QgdG8gYmUgYWJsZQo+ID4gICB0byBleHRlbmQgdG8gZnV0dXJl IGh3IGl0ZXJhdGlvbnMpCj4gCj4gR3J1bWJsZSwgYW5vdGhlciBBUEkgcmV2aXNpb24gSSdsbCBu ZWVkIHRvIG1haW50YWluIGluIHRoZSBERFggZHJpdmVyLgo+IChFdmVuIHRob3VnaCB0aGlzIGlz bid0IGluIG1haW5saW5lLCBJJ20gYWxyZWFkeSB1cCB0byB0aHJlZSBkaWZmZXJlbnQKPiBrZXJu ZWwgQVBJcyBmb3IgZXRuYWRybS4pICBJZiB3ZSBkbyB0aGlzLCBJJ2xsIHdhbnQgdG8gbHVtcCBp dCB0b2dldGhlcgo+IHdpdGggb3RoZXIgQVBJIGNoYW5nZXMgKGxpa2UgdGhlIG9uZSBiZWxvdyBm b3IgZmxhZ3MpIHNvIEknbGwgd2FpdCB1bnRpbAo+IHdlJ3ZlIGdvdCBhbiBhbnN3ZXIgdG8gdGhl IGdlbV93YWl0X2ZlbmNlIHF1ZXN0aW9uLgo+IAo+ID4gLSBnZW1fc3VibWl0LT5leGVjX3N0YXRl IGRvZXNuJ3Qgc2VlbSB0byBiZSB2YWxpZGF0ZWQgKGl0J3MganVzdCBhbiBpZgo+ID4gICAoZXhl Y19zdGF0ZSA9PSAyRCkgLi4uIGVsc2UgLi4uIGluIGNtZF9zZWxlY3RfcGlwZSkKPiAKPiBGaXhl ZC4KPiAKPiA+IC0gYWxsIHRoZSBhcnJheSBhbGxvY2F0aW9ucyBhcmVuJ3QgY2hlY2tlZCBmb3Ig aW50ZWdlciBvdmVyZmxvd3MgaW4KPiA+ICAgZ2VtX3N1Ym1pdC4gSnVzdCB1c2Uga21hbGxvY19h cnJheSBvciBzaW1pbGFyIHRvIGdldCB0aGlzIHJpZ2h0LiBUaGF0Cj4gPiAgIG1lYW5zIHlvdSBu ZWVkIHRvIGFsbG9jYXRpb25zIGluIHN1Ym1pdF9jcmVhdGUsIGJ1dCBpbW8gYmV0dGVyIHNhZmUg dGhhbgo+ID4gICBzZWN1cml0eS1idWdneS4gU2ltaWxhciBwcm9ibGVtIGluIHN1Ym1pdF9yZWxv YywgYnV0IHRoZXJlCj4gPiAgIGNvcHlfZnJvbV91c2VyIHdpbGwgcHJvdGVjdCB5b3Ugc2luY2Ug eW91IG9ubHkgY29weSBpbmRpdmlkdWFsIHN0cnVjdHMuCj4gPiAgIFN0aWxsIGEgYml0IGZyYWdp bGUuCj4gCj4gSSdtIG5vdCBzdXJlIGttYWxsb2NfYXJyYXkoKSBpcyB0aGUgcmlnaHQgYW5zd2Vy IHRoZXJlLCBidXQgSSdsbCBsb29rCj4gaW50byBpdCAtIEknZCByZWFsbHkgbGlrZSB0byBhdm9p ZCBkb2luZyBsb3RzIG9mIHNtYWxsIGttYWxsb2MoKXMgYWxsCj4gb3ZlciB0aGUgcGxhY2UgYXMg ZWFjaCBvbmUgaGFzIGEgbm9uLXplcm8gY29zdC4gIFRoZSBtb3JlIHdlIGNhbiBsdW1wCj4gdG9n ZXRoZXIsIHRoZSBiZXR0ZXIgLSBidXQgaXQgaGFzIHRvIGJlIGRvbmUgc2FmZWx5LgoKVGhhdCB3 YXMganVzdCBteSBwcmVmZXJlbmNlIHNpbmNlIEkgaGF2ZSBhIGhhcmQgdGltZSByZWFzb25pbmlu ZyBhYm91dApvdmVyZmxvdyBjaGVja3Mgc28gbGlrZSB0byBhdm9pZCB0aGVtLgoKPiA+IC0gZmxh Z3MgZm9yIGdlbV93YWl0X2ZlbmNlIHBlcmhhcHM/IFByb2JhYmx5IG5vdCBuZWVkZWQgZXZlci4K PiAKPiBXZSBjb3VsZCwgdG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgYWRkIHNvbWUgcGFkZGluZyB0 byB0aGUgc3RydWN0LCBhbmQKPiBub3QgY2FsbCBpdCAiZmxhZ3MiIHVudGlsIHdlIG5lZWQgZmxh Z3MuICBDaHJpc3RpYW4sIEx1Y2FzLCBhbnkgdGhvdWdodHMKPiBmcm9tIHRoZSAzRCBhbmQgVkcg cG9pbnQgb2YgdmlldyBvbiB0aGlzPwoKV2hhdGV2ZXIgeW91IGNhbGwgaXQgeW91IG11c3QgY2hl Y2sgdGhhdCBpdCdzIDAsIG90aGVyd2lzZSBpdCdsbCBiZQpnYXJiYWdlLWZpbGxlZCBieSBzb21l IHVzZXJzcGFjZSBhbmQgdW51c2VhYmxlLgoKPiA+IC0gZ2VtX3VzZXJwdHIgc2hvdWxkIHByb2Jh Ymx5IGNoZWNrIGZvciBwYWdlIGFsaWdubWVudCBzaW5jZSB0aGF0J3MgdGhlCj4gPiAgIG9ubHkg dW5pdCB5b3UgY2FuIG1hcCBpbnRvIHRoZSBpb21tdS4gQXQgbGVhc3QgSSBkaWRuJ3Qgc3BvdCB0 aGF0IGNoZWNrCj4gPiAgIGFueXdoZXJlLgo+IAo+IEFkZGVkIChldmVuIHRob3VnaCBpdCdsbCBw cm9iYWJseSBicmVhayBYdmlkZW8uLi4pICBJJ2xsIGdpdmUgaXQgYSB0ZXN0Cj4gbGF0ZXIgdGhp cyBhZnRlcm5vb24vZXZlbmluZy4KClNhbWUgaXNzdWUgb24gdGhlIGludGVsIHNpZGUsIHdlIGp1 c3QgZXhwZWN0IHVzZXJzcGFjZSB0byByb3VuZCB0aGluZ3MgdG8KcGFnZXMuIFNhbWUgbGlrZSBt bWFwcGluZyBhIGZpbGUuCgo+ID4gUmFuZG9tIHJlYWRpbmcgYWxsIGFyb3VuZCBhbmQgbG9va3Mg cHJldHR5IG92ZXJhbGwuCj4gPiAKPiA+IE9uZSBtb3JlIHF1ZXN0aW9uOiBEbyB5b3UgaGF2ZSB2 YWxpZGF0aW9uIHRlc3RzIGZvciB0aGUgYmFzaWMgaW9jdGwKPiA+IGludGVyZmFjZXM/IEknZCBs aWtlIHRvIHB1c2ggaWd0IGFzIHRoZSBnZW5lcmFsIGRybSBncHUgdGVzdHMgc3VpdGUsIGFuZAo+ ID4gd2Ugbm93IGhhdmUgc3VwcG9ydCB0byBydW4gdGVzdGNhc2VzIG9uIG5vbi1pOTE1IGRyaXZl cnMuIFNvbWUgYXJlIGdlbmVyaWMKPiA+IGFuZCBydW4gZXZlcnl3aGVyZSAobG90cyBtb3JlIG5l ZWQgdG8gYmUgY29udmVydGVkIHRvIGJlIGdlbmVyaWMpLCBidXQgSSdkCj4gPiBhbHNvIHdlbGNv bWUgZHJpdmVyLXNwZWNpZmljIHRlc3RzLCBtYXliZSBpbiBhbiBldG5hdml2IHN1YmRpcmVjdG9y eS4KPiAKPiBJIGRvbid0IHRoaW5rIHdlIGhhdmUgLSBteSB2YWxpZGF0aW9uIGlzICJkb2VzIGl0 IHdvcmsgd2l0aCBteSBERFgKPiBkcml2ZXIgd2l0aG91dCByZW5kZXJpbmcgZXJyb3JzIiB3aGlj aCBzbyBmYXIgaGFzIHByb3ZlbiB0byBiZSBnb29kCj4gYXQgZmluZGluZyBidWdzLiAgVGhpcyBk b2Vzbid0IHVzZSBsaWJkcm0tZXRuYXZpdiBhcyBJIG5lZWQgdG8gbWFpbnRhaW4KPiBjb21wYXRp YmlsaXR5IHdpdGggbGliZXRuYXZpdidzIEFQSSAodGhlIG9yaWdpbmFsIG9wZW4gc291cmNlIGxp YnJhcnkKPiB0aGF0IHRhbGtzIHRvIFZpdmFudGUncyBvcGVuIHNvdXJjZSBrZXJuZWwgc3BhY2Up IHRvIGF2b2lkIGhhdmluZyB0bwo+IG1haW50YWluIHR3byBuZWFyLWlkZW50aWNhbCBHUFUgYmFj a2VuZHMuCj4gCj4gQ2hyaXN0aWFuIHVzZXMgaGlzIGxpYmRybS1ldG5hdml2IGxpYnJhcnkgcGx1 Z2dlZCBpbnRvIG1lc2EuICBTbyB3ZQo+IGhhdmUgdHdvIGluZGVwZW5kZW50bHkgY3JlYXRlZCBh bmQgbWFpbnRhaW5lZCBjb2RlIGJhc2VzIHRhbGtpbmcgdG8KPiB0aGlzIGtlcm5lbCBpbnRlcmZh Y2UuCgpJbWUgd2l0aCBpZ3QgdGhlIHZhbHVlIG9mIGEgdGVzdHN1aXRlIGlzIG1vcmUgaW4gZXhl cmNpc2luZyBjb3JuZXIgY2FzZXMsCnRvIGF2b2lkIHRvbyBtdWNoIHRyb3VibGUgd2l0aCBzZWN1 cml0eSBob2xlcyAoZG8gd2UgdmFsaWRhdGUgcmVhbGx5CmV2ZXJ5dGhpbmcpLiBBbmQgdG8gbWFr ZSBpdCBlYXNpZXIgdG8gY3JlYXRlIHNwZWNpZmljIHRlc3RjYXNlcyBmb3IgYnVncwp5b3UnbGwg ZmluZCB3aGljaCBhcmUgaGFyZCB0byByZXByb2R1Y2UgYnkganVzdCBydW5uaW5nIHBpZ2xpdCBv dmVyIG1lc2EKb3IgeHRzJnJlbmRlcmNoZWNrIG92ZXIgdGhlIGRkeC4gQW5kIGVzcGVjaWFsbHkg Zm9yIHRob3NlIGJ1Z3MgaXQncyBuaWNlCnRvIGhhdmUgc29tZSBiYXNpYyB0ZXN0cyBpbiBwbGFj ZSBzbyBpdCB3b24ndCB0YWtlIHlvdSBmb3JldmVyICh3aGljaAptZWFucyBubyBvbmUgd2lsbCBk byBpdCkgdG8gd3JpdGUgdGhlIGNvcm5lci1jYXNlIHRlc3RzIGZvciB3aGVuIHlvdSBkbwpoaXQg c29tZSBvYnNjdXJlIGJ1Zy4KLURhbmllbAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdp bmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK