From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Stach Subject: Re: [PATCH RFCv2 0/4] Etnaviv DRM driver again Date: Thu, 22 Oct 2015 10:19:42 +0200 Message-ID: <1445501982.3173.12.camel@pengutronix.de> References: <1441980614-19216-1-git-send-email-l.stach@pengutronix.de> <20151020093627.GV13786@phenom.ffwll.local> <20151021170401.GI32532@n2100.arm.linux.org.uk> <20151022071259.GJ16848@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.4.pengutronix.de [92.198.50.35]) by gabe.freedesktop.org (Postfix) with ESMTPS id DAE4D6EF58 for ; Thu, 22 Oct 2015 01:19:46 -0700 (PDT) In-Reply-To: <20151022071259.GJ16848@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Russell King - ARM Linux , kernel@pengutronix.de, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QW0gRG9ubmVyc3RhZywgZGVuIDIyLjEwLjIwMTUsIDA5OjEyICswMjAwIHNjaHJpZWIgRGFuaWVs IFZldHRlcjoKPiBPbiBXZWQsIE9jdCAyMSwgMjAxNSBhdCAwNjowNDowMVBNICswMTAwLCBSdXNz ZWxsIEtpbmcgLSBBUk0gTGludXggd3JvdGU6Cj4gPiBPbiBUdWUsIE9jdCAyMCwgMjAxNSBhdCAx MTozNjoyN0FNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBGcmksIFNlcCAx MSwgMjAxNSBhdCAwNDoxMDoxMFBNICswMjAwLCBMdWNhcyBTdGFjaCB3cm90ZToKPiA+ID4gPiBI ZXkgYWxsLAo+ID4gPiA+IAo+ID4gPiA+IHRoaXMgaXMgYSBuZXcgcG9zdGluZyBvZiB0aGUgRXRu YXZpdiBEUk0gZHJpdmVyIGZvciBWaXZhbnRlIGVtYmVkZGVkIEdQVXMuCj4gPiA+ID4gVGhpcyB0 aW1lIEkndmUgc3F1YXNoZWQgYWxsIHBhdGNoZXMgdG8gdGhlIERSTSBkcml2ZXIgaXRzZWxmIGlu dG8gYSBzaW5nbGUgY29tbWl0Cj4gPiA+ID4gdG8gbWFrZSBpdCBlYXNpZXIgZm9yIHBlb3BsZSB0 byBsb29rIGF0IGFuZCByZXZpZXcgdGhpcyBzdHVmZi4KPiA+ID4gPiAKPiA+ID4gPiBBc2lkZSBm cm9tIHNxdWFzaGluZyBvZiBzb21lIG9mIHRoZSB0cml2aWFsIGJ1Z2ZpeGVzIEkgaW50ZW5kIHRv IGtlZXAgYWxsIHRoZQo+ID4gPiA+IGluZGl2aWR1YWwgY29tbWl0cyBhcm91bmQgdG8gcmV0YWlu IHRoZSBhdXRob3JzaGlwIG9mIHBlb3BsZSB3b3JraW5nIG9uIHRoaXMKPiA+ID4gPiBkcml2ZXIu IElmIHlvdSB3YW50IHRvIGxvb2sgYXQgdGhlIHN0cmVhbSBvZiBjb21taXRzIHBsZWFzZSBmZXRj aAo+ID4gPiA+IAo+ID4gPiA+IGdpdDovL2dpdC5wZW5ndXRyb25peC5kZS9naXQvbHN0L2xpbnV4 LmdpdCBldG5hdml2LWZvci11cHN0cmVhbQo+ID4gPiAKPiA+ID4gRmluYWxseSB1bmxhemllZCBh bmQgbG9va2VkIGF0IHRoaXMsIGFzc3VtaW5nIGl0J3MgdjIuIFBpbGVzIG9mIGNvbW1lbnRzOgo+ ID4gPiAKPiA+ID4gLSBQbGVhc2UgZG9uJ3QgdXNlIGRldi0+c3RydWN0X211dGV4IGluIG5ldyBk cml2ZXIgY29kZS4gV2l0aCBsYXRlc3QKPiA+ID4gICBsaW51eC1uZXh0IHRoZXJlJ3Mgbm8gcmVh c29uIGF0IGFsbCBmb3IgZHJpdmVyJ3MgdG8gdXNlIGl0LCBhbmQgZG9pbmcgc28KPiA+ID4gICB3 aWxsIG1hc3NpdmVseSBlbmN1bWJlciB5b3VyIGRyaXZlciB3aXRoIGV2ZXJ5dGhpbmcgZWxzZS4K PiA+ID4gCj4gPiA+ICAgVGhlcmUncyBhIGJpdCBhIHRyaWNrIGludm9sdmVkIHNpbmNlIGFzLWlz IHN0cnVjdF9tdXRleCBhbGxvd3MgeW91IHRvIGRvCj4gPiA+ICAgaG9ycmlibGUgbGVha3kgbG9j a2luZyBkZXNpZ25zIGFyb3VuZCBnZW1fZnJlZV9vYmplY3QuIE9uIGEgcXVpY2sgbG9vawo+ID4g PiAgIHRvIGZpeCB0aGlzIHlvdSBwcm9iYWJseSBuZWVkIGEgbXV0ZXggZm9yIHRoZSBkcm1fbW0g YW5kIHZhcmlvdXMgbGlzdHMsCj4gPiA+ICAgcGx1cyBwZXIgb2JqZWN0IHJlc2VydmF0aW9ucy4g IFRyaWNreSBwYXJ0IGlzIHRoZSBldmljdGlvbiBsb2dpYyBpbgo+ID4gPiAgIGV0bmF2aXZfaW9t bXVfbWFwX2dlbSwgd2hlcmUgeW91IG5lZWQgdG8gdHJ5bG9jayBldmljdGlvbiBjYW5kaWRhdGVz LiBJZgo+ID4gPiAgIHlvdSBjYW4ndCBsb2NrIHRoZW0geW91IGNhbid0IGV2aWN0IHRoZW0gYW55 d2F5LCBzbyBubyBoYXJtIGRvbmUuCj4gPiA+IAo+ID4gPiAgIElmIHRoYXQncyB0b28gbXVjaCBq dXN0IHJlcGxhY2UgaXQgd2l0aCB5b3VyIG93biBsb2NrIGFuZCB0cnlsb2NrIGluCj4gPiA+ICAg Z2VtX2ZyZWVfb2JqZWN0LCBwdW50aW5nIHRvIGEgd29ya2VyIGlmIHRoYXQgZmFpbHMgKHR0bSBo YXMgYQo+ID4gPiAgIGRlZmVycmVkX2ZyZWUgbGlzdCBmb3IgdGhhdCwgcHJvdGVjdGVkIGJ5IGEg c3BpbmxvY2spLgo+ID4gPiAKPiA+ID4gLSAtPmxvYWQgYW5kIC0+dW5sb2FkIGFyZSBkZXByZWNh dGVkIGhvb2tzIGJlY2F1cyBmdW5kYW1lbnRhbGx5IHJhY3kgKGFuZAo+ID4gPiAgIHdlIGNhbid0 IGZpeCBpdCBzaW5jZSBpdCB3b3VsZCBicmVhayBkcmkgMSBjcmFwKS4gUGxlYXNlIHVzZSBpbnN0 ZWFkOgo+ID4gPiAKPiA+ID4gCWRybV9kZXZfYWxsb2MoKTsKPiA+ID4gCS8qIGxvYWQgY29kZSAq Lwo+ID4gPiAJZHJtX2Rldl9yZWdpc3RlcigpOwo+ID4gPiAKPiA+ID4gICBhbmQKPiA+ID4gCj4g PiA+IAlkcm1fZGV2X3VucmVnaXN0ZXIoKTsKPiA+ID4gCS8qIHVubG9hZCBjb2RlICovCj4gPiA+ IAlkcm1fZGV2X3VucmVmKCk7Cj4gPiA+IAo+ID4gPiAgIExhdXJlbnQganVzdCBzZW50IGEgbmlj ZSBwYXRjaCBmb3IgcmNhciB0byBkbyB0aGF0IGNvbnZlcnNpb24uIFRoYXQgd2lsbAo+ID4gPiAg IGFsc28gZ2V0IHJpZCBvZiB0aGUgZGVwcmVjYXRlZCBkcm1fcGxhdGZvcm1faW5pdCBhbmQgZHJt X2Rldl9wdXQuCj4gPiA+IAo+ID4gPiAtIGNoZWNrIHBhZCBmb3IgMCBpbiBnZW1faW5mbyBpb2N0 bC4KPiA+IAo+ID4gTXkgdHJlZSBhbHJlYWR5IGRvZXMgdGhpcywgYW5kIGFmYWlrIGl0IHdhcyBw YXJ0IG9mIENocmlzdGlhbidzIHBhdGNoZXMuCj4gPiBJJ20gbm90IHN1cmUgd2hldGhlciBMdWNh cycgcGF0Y2hlcyBhcmUgbWlzc2luZyBzb21ldGhpbmcuCj4gPiAKPiA+ICtzdGF0aWMgaW50IGV0 bmF2aXZfaW9jdGxfZ2VtX2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK PiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gPiArewo+ID4gKyAg ICAgICBzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX2luZm8gKmFyZ3MgPSBkYXRhOwo+ID4gKyAgICAg ICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKPiA+ICsgICAgICAgaW50IHJldCA9IDA7Cj4g PiArCj4gPiArICAgICAgIGlmIChhcmdzLT5wYWQpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7Cj4gPiAKPiA+IERpZCB5b3UgbWlzcyBpdD8KPiAKPiBUaGF0IHdhc24ndCB0aGVy ZSwgSSBndWVzcyBJIGxvb2tlZCBhdCBhbiBvdXRkYXRlZCB0cmVlIDooKQoKVGhlIHRyZWUgeW91 J3ZlIGxvb2tlZCBhdCB3YXMgdXAtdG8tZGF0ZSB1bnRpbCB5ZXN0ZXJkYXkgd2hlbiBSdXNzZWxs CnB1bGxlZCBwYXRjaGVzIGludG8gaGlzIHRyZWUgYW5kIGJ1aWxkIGF0b3Agb2YgdGhhdC4gSSd2 ZSBqdXN0IGxvb2tlZCBhdAp0aGF0IHRyZWUgYWdhaW4gYW5kIGl0IGNlcnRhaW5seSBpbmNsdWRl cyB0aGUgYWJvdmUgY2hlY2suCgo+ID4gCj4gPiA+IC0gdGhlIGZsYWdzIGNoZWNrIGZvciBnZW1f bmV3IHNlZW1zIGxlYWt5IHNpbmNlIHlvdSBvbmx5IGNoZWNrIGZvciBmbGFncyAmCj4gPiA+ICAg RVROQV9CT19DQUNIRV9NQVNLLgo+ID4gCj4gPiBGaXhlZCBpbiBldG5hdml2X2lvY3RsX2dlbV9u ZXcoKS4KPiA+IAo+ID4gPiAtIHNpbWlsYXIgaW5wdXQgdmFsaWRhdGlvbiBpc3N1ZSBmb3Igb3Ag aW4gZ2VtX2NwdV9wcmVwCj4gPiAKPiA+IEZpeGVkIGluIGV0bmF2aXZfaW9jdGxfZ2VtX2NwdV9w cmVwKCkuCj4gPiAKPiA+ID4gLSBtYXliZSBhZGQgYSBmbGFncy9vcCB0byBmdXR1cmUtcHJvb2Yg Z2VtX2NwdV9maW5pIGp1c3QgaW4gY2FzZT8gTWlnaHQgYmUKPiA+ID4gICB1c2VmdWwgdG8gb3B0 aW1pemUgY2FjaGUgZmx1c2hpbmcuCj4gPiAKPiA+IEhhdmluZyBqdXN0IG1lcmdlZCBMdWNhcycg cGF0Y2gsIHdoaWNoIGNhcnJpZXMgdGhlIG9wIGZyb20gZ2VtX2NwdV9wcmVwKCkKPiA+IG92ZXIg dG8gZ2VtX2NwdV9maW5pKCksIEknbSB3b25kZXJpbmcgaWYgdGhpcyBpcyBoaWRpbmcgYSBwb3Rl bnRpYWwKPiA+IHByb2JsZW0gLSB3aGF0IGlmIHR3byB0aHJlYWRzIGNhbGwgZ2VtX2NwdV9wcmVw KCkgYnV0IHdpdGggZGlmZmVyZW50ICdvcCcKPiA+IGFyZ3VtZW50cy4gIFNlZW1zIHJhdGhlciBm cmFnaWxlLCBhcyAnZXRuYXZpdl9vYmotPmxhc3RfY3B1X3ByZXBfb3AnCj4gPiBiZWNvbWVzIHJh dGhlciBpbmRldGVybWluYW50Lgo+IAo+IEhtLCBkcm9wcGluZyBsYXN0X2NwdV9wcmVwX29wIGFu ZCBhZGRpbmcgaXQgdG8gdGhlIGZpbmkgaW9jdGwgbWlnaHQgYmUgYW4KPiBvcHRpb24uIEJ1dCBJ IGhhdmUgbm8gaWRlYSB3aGV0aGVyIHRoZSBkbWEgYXBpIGxpa2VzIHRoYXQgcmVhbGx5LiBXcnQK PiBzYWZldHkgSSBkb24ndCB0aGluayB0aGVyZSdzIGEgY29uY2VybiBoZXJlIC0gaWYgdXNlcnNw YWNlIGRlY2lkZXMgdG8gYmUKPiBidWdneSB3cnQgY29oZXJlbmN5IHRyYWNraW5nIGl0J2xsIGdl dCBhbGwgdGhlIHBpZWNlcy4KPiAKWWVzLCB0aGlzIGlzIHVuc2FmZSByaWdodCBub3cgd2l0aCBt dWx0aXBsZSB0aHJlYWRzLgoKQnV0IEkgdGhpbmsgd2UgY2FuJ3QganVzdCBhbGxvdyBtdWx0aXBs ZSB1c2Vyc3BhY2UgdGhyZWFkcyB0byBwcmVwYXJlIGEKYnVmZmVyIHdpdGggZGlmZmVyZW50IE9Q cywgSSdtIG5vdCBldmVuIHN1cmUgaXQncyBhIGdvb2QgaWRlYSB0byBsZXQgMgp0aHJlYWRzIHBy ZXBhcmUgdGhlIGJ1ZmZlciBhdCB0aGUgc2FtZSB0aW1lIGF0IGFsbCAoZXZlbiBpZiB0aGUgT1Bz IGFyZQpjb21wYXRpYmxlLCB0aGlzIGdldHMgcmVhbGx5IGZ1bm55IGFib3V0IHdoZW4gdG8gd3Jp dGUgYmFjayB0aGUgY2FjaGVzKS4KU28gSSB0aGluayB3ZSBuZWVkIHRvIGJsb2NrIHRoZSBzZWNv bmQgdGhyZWFkIHVudGlsIHRoZSBmaXJzdCBvbmUgZG9lcyBhCmZpbmkuCgpUaGlzIG1pZ2h0IGhh dmUgc29tZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIGJ1dCBpdCBtYWtlcyBpdCBhIGxvdApl YXNpZXIgdG8gZ2V0IHRoZSBjb2hlcmVuY3kgcnVsZXMgc3RyYWlnaHQuCgo+ID4gPiAtIHRoZSBu YW1pbmcgaW4gZ2VtX3N1Ym1pdF9yZWxvYyBjb25mdXNlcyBtZSBhIGJpdCwgYnV0IHRoYXQncyBq dXN0IGEKPiA+ID4gICBiaWtlc2hlZCA7LSkKPiA+ID4gCj4gPiA+IC0gZ2VtX3N1Ym1pdCBzZWVt cyB0byBtaXNzIGEgZmxhZywgaW1lIGRlZmluaXRlbHkgbmVlZGVkIChqdXN0IHRvIGJlIGFibGUK PiA+ID4gICB0byBleHRlbmQgdG8gZnV0dXJlIGh3IGl0ZXJhdGlvbnMpCj4gPiAKPiA+IEdydW1i bGUsIGFub3RoZXIgQVBJIHJldmlzaW9uIEknbGwgbmVlZCB0byBtYWludGFpbiBpbiB0aGUgRERY IGRyaXZlci4KPiA+IChFdmVuIHRob3VnaCB0aGlzIGlzbid0IGluIG1haW5saW5lLCBJJ20gYWxy ZWFkeSB1cCB0byB0aHJlZSBkaWZmZXJlbnQKPiA+IGtlcm5lbCBBUElzIGZvciBldG5hZHJtLikg IElmIHdlIGRvIHRoaXMsIEknbGwgd2FudCB0byBsdW1wIGl0IHRvZ2V0aGVyCj4gPiB3aXRoIG90 aGVyIEFQSSBjaGFuZ2VzIChsaWtlIHRoZSBvbmUgYmVsb3cgZm9yIGZsYWdzKSBzbyBJJ2xsIHdh aXQgdW50aWwKPiA+IHdlJ3ZlIGdvdCBhbiBhbnN3ZXIgdG8gdGhlIGdlbV93YWl0X2ZlbmNlIHF1 ZXN0aW9uLgo+ID4gCj4gPiA+IC0gZ2VtX3N1Ym1pdC0+ZXhlY19zdGF0ZSBkb2Vzbid0IHNlZW0g dG8gYmUgdmFsaWRhdGVkIChpdCdzIGp1c3QgYW4gaWYKPiA+ID4gICAoZXhlY19zdGF0ZSA9PSAy RCkgLi4uIGVsc2UgLi4uIGluIGNtZF9zZWxlY3RfcGlwZSkKPiA+IAo+ID4gRml4ZWQuCj4gPiAK PiA+ID4gLSBhbGwgdGhlIGFycmF5IGFsbG9jYXRpb25zIGFyZW4ndCBjaGVja2VkIGZvciBpbnRl Z2VyIG92ZXJmbG93cyBpbgo+ID4gPiAgIGdlbV9zdWJtaXQuIEp1c3QgdXNlIGttYWxsb2NfYXJy YXkgb3Igc2ltaWxhciB0byBnZXQgdGhpcyByaWdodC4gVGhhdAo+ID4gPiAgIG1lYW5zIHlvdSBu ZWVkIHRvIGFsbG9jYXRpb25zIGluIHN1Ym1pdF9jcmVhdGUsIGJ1dCBpbW8gYmV0dGVyIHNhZmUg dGhhbgo+ID4gPiAgIHNlY3VyaXR5LWJ1Z2d5LiBTaW1pbGFyIHByb2JsZW0gaW4gc3VibWl0X3Jl bG9jLCBidXQgdGhlcmUKPiA+ID4gICBjb3B5X2Zyb21fdXNlciB3aWxsIHByb3RlY3QgeW91IHNp bmNlIHlvdSBvbmx5IGNvcHkgaW5kaXZpZHVhbCBzdHJ1Y3RzLgo+ID4gPiAgIFN0aWxsIGEgYml0 IGZyYWdpbGUuCj4gPiAKPiA+IEknbSBub3Qgc3VyZSBrbWFsbG9jX2FycmF5KCkgaXMgdGhlIHJp Z2h0IGFuc3dlciB0aGVyZSwgYnV0IEknbGwgbG9vawo+ID4gaW50byBpdCAtIEknZCByZWFsbHkg bGlrZSB0byBhdm9pZCBkb2luZyBsb3RzIG9mIHNtYWxsIGttYWxsb2MoKXMgYWxsCj4gPiBvdmVy IHRoZSBwbGFjZSBhcyBlYWNoIG9uZSBoYXMgYSBub24temVybyBjb3N0LiAgVGhlIG1vcmUgd2Ug Y2FuIGx1bXAKPiA+IHRvZ2V0aGVyLCB0aGUgYmV0dGVyIC0gYnV0IGl0IGhhcyB0byBiZSBkb25l IHNhZmVseS4KPiAKPiBUaGF0IHdhcyBqdXN0IG15IHByZWZlcmVuY2Ugc2luY2UgSSBoYXZlIGEg aGFyZCB0aW1lIHJlYXNvbmluaW5nIGFib3V0Cj4gb3ZlcmZsb3cgY2hlY2tzIHNvIGxpa2UgdG8g YXZvaWQgdGhlbS4KPiAKPiA+ID4gLSBmbGFncyBmb3IgZ2VtX3dhaXRfZmVuY2UgcGVyaGFwcz8g UHJvYmFibHkgbm90IG5lZWRlZCBldmVyLgo+ID4gCj4gPiBXZSBjb3VsZCwgdG8gYmUgb24gdGhl IHNhZmUgc2lkZSwgYWRkIHNvbWUgcGFkZGluZyB0byB0aGUgc3RydWN0LCBhbmQKPiA+IG5vdCBj YWxsIGl0ICJmbGFncyIgdW50aWwgd2UgbmVlZCBmbGFncy4gIENocmlzdGlhbiwgTHVjYXMsIGFu eSB0aG91Z2h0cwo+ID4gZnJvbSB0aGUgM0QgYW5kIFZHIHBvaW50IG9mIHZpZXcgb24gdGhpcz8K PiAKPiBXaGF0ZXZlciB5b3UgY2FsbCBpdCB5b3UgbXVzdCBjaGVjayB0aGF0IGl0J3MgMCwgb3Ro ZXJ3aXNlIGl0J2xsIGJlCj4gZ2FyYmFnZS1maWxsZWQgYnkgc29tZSB1c2Vyc3BhY2UgYW5kIHVu dXNlYWJsZS4KPiAKSWYgd2UgYWxyZWFkeSBuZWVkIHRvIGNoZWNrIGZvciAwLCB3ZSBtaWdodCBh cyB3ZWxsIGNhbGwgaXQgZmxhZ3MuIEkKbmVlZCB0byB0aGluayBhYm91dCB0aGlzIGEgYml0IG1v cmUgaWYgSSBjYW4gY29uY2VpdmUgYW55IHVzYWdlLgoKPiA+ID4gLSBnZW1fdXNlcnB0ciBzaG91 bGQgcHJvYmFibHkgY2hlY2sgZm9yIHBhZ2UgYWxpZ25tZW50IHNpbmNlIHRoYXQncyB0aGUKPiA+ ID4gICBvbmx5IHVuaXQgeW91IGNhbiBtYXAgaW50byB0aGUgaW9tbXUuIEF0IGxlYXN0IEkgZGlk bid0IHNwb3QgdGhhdCBjaGVjawo+ID4gPiAgIGFueXdoZXJlLgo+ID4gCj4gPiBBZGRlZCAoZXZl biB0aG91Z2ggaXQnbGwgcHJvYmFibHkgYnJlYWsgWHZpZGVvLi4uKSAgSSdsbCBnaXZlIGl0IGEg dGVzdAo+ID4gbGF0ZXIgdGhpcyBhZnRlcm5vb24vZXZlbmluZy4KPiAKPiBTYW1lIGlzc3VlIG9u IHRoZSBpbnRlbCBzaWRlLCB3ZSBqdXN0IGV4cGVjdCB1c2Vyc3BhY2UgdG8gcm91bmQgdGhpbmdz IHRvCj4gcGFnZXMuIFNhbWUgbGlrZSBtbWFwcGluZyBhIGZpbGUuCj4gCj4gPiA+IFJhbmRvbSBy ZWFkaW5nIGFsbCBhcm91bmQgYW5kIGxvb2tzIHByZXR0eSBvdmVyYWxsLgo+ID4gPiAKPiA+ID4g T25lIG1vcmUgcXVlc3Rpb246IERvIHlvdSBoYXZlIHZhbGlkYXRpb24gdGVzdHMgZm9yIHRoZSBi YXNpYyBpb2N0bAo+ID4gPiBpbnRlcmZhY2VzPyBJJ2QgbGlrZSB0byBwdXNoIGlndCBhcyB0aGUg Z2VuZXJhbCBkcm0gZ3B1IHRlc3RzIHN1aXRlLCBhbmQKPiA+ID4gd2Ugbm93IGhhdmUgc3VwcG9y dCB0byBydW4gdGVzdGNhc2VzIG9uIG5vbi1pOTE1IGRyaXZlcnMuIFNvbWUgYXJlIGdlbmVyaWMK PiA+ID4gYW5kIHJ1biBldmVyeXdoZXJlIChsb3RzIG1vcmUgbmVlZCB0byBiZSBjb252ZXJ0ZWQg dG8gYmUgZ2VuZXJpYyksIGJ1dCBJJ2QKPiA+ID4gYWxzbyB3ZWxjb21lIGRyaXZlci1zcGVjaWZp YyB0ZXN0cywgbWF5YmUgaW4gYW4gZXRuYXZpdiBzdWJkaXJlY3RvcnkuCj4gPiAKPiA+IEkgZG9u J3QgdGhpbmsgd2UgaGF2ZSAtIG15IHZhbGlkYXRpb24gaXMgImRvZXMgaXQgd29yayB3aXRoIG15 IEREWAo+ID4gZHJpdmVyIHdpdGhvdXQgcmVuZGVyaW5nIGVycm9ycyIgd2hpY2ggc28gZmFyIGhh cyBwcm92ZW4gdG8gYmUgZ29vZAo+ID4gYXQgZmluZGluZyBidWdzLiAgVGhpcyBkb2Vzbid0IHVz ZSBsaWJkcm0tZXRuYXZpdiBhcyBJIG5lZWQgdG8gbWFpbnRhaW4KPiA+IGNvbXBhdGliaWxpdHkg d2l0aCBsaWJldG5hdml2J3MgQVBJICh0aGUgb3JpZ2luYWwgb3BlbiBzb3VyY2UgbGlicmFyeQo+ ID4gdGhhdCB0YWxrcyB0byBWaXZhbnRlJ3Mgb3BlbiBzb3VyY2Uga2VybmVsIHNwYWNlKSB0byBh dm9pZCBoYXZpbmcgdG8KPiA+IG1haW50YWluIHR3byBuZWFyLWlkZW50aWNhbCBHUFUgYmFja2Vu ZHMuCj4gPiAKPiA+IENocmlzdGlhbiB1c2VzIGhpcyBsaWJkcm0tZXRuYXZpdiBsaWJyYXJ5IHBs dWdnZWQgaW50byBtZXNhLiAgU28gd2UKPiA+IGhhdmUgdHdvIGluZGVwZW5kZW50bHkgY3JlYXRl ZCBhbmQgbWFpbnRhaW5lZCBjb2RlIGJhc2VzIHRhbGtpbmcgdG8KPiA+IHRoaXMga2VybmVsIGlu dGVyZmFjZS4KPiAKPiBJbWUgd2l0aCBpZ3QgdGhlIHZhbHVlIG9mIGEgdGVzdHN1aXRlIGlzIG1v cmUgaW4gZXhlcmNpc2luZyBjb3JuZXIgY2FzZXMsCj4gdG8gYXZvaWQgdG9vIG11Y2ggdHJvdWJs ZSB3aXRoIHNlY3VyaXR5IGhvbGVzIChkbyB3ZSB2YWxpZGF0ZSByZWFsbHkKPiBldmVyeXRoaW5n KS4gQW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNyZWF0ZSBzcGVjaWZpYyB0ZXN0Y2FzZXMgZm9y IGJ1Z3MKPiB5b3UnbGwgZmluZCB3aGljaCBhcmUgaGFyZCB0byByZXByb2R1Y2UgYnkganVzdCBy dW5uaW5nIHBpZ2xpdCBvdmVyIG1lc2EKPiBvciB4dHMmcmVuZGVyY2hlY2sgb3ZlciB0aGUgZGR4 LiBBbmQgZXNwZWNpYWxseSBmb3IgdGhvc2UgYnVncyBpdCdzIG5pY2UKPiB0byBoYXZlIHNvbWUg YmFzaWMgdGVzdHMgaW4gcGxhY2Ugc28gaXQgd29uJ3QgdGFrZSB5b3UgZm9yZXZlciAod2hpY2gK PiBtZWFucyBubyBvbmUgd2lsbCBkbyBpdCkgdG8gd3JpdGUgdGhlIGNvcm5lci1jYXNlIHRlc3Rz IGZvciB3aGVuIHlvdSBkbwo+IGhpdCBzb21lIG9ic2N1cmUgYnVnLgoKV2UgZG9uJ3QgaGF2ZSBh bnkgdGVzdHMgcmlnaHQgbm93IGFzIGl0J3MgYWxyZWFkeSBlbm91Z2ggd29yayB0byBrZWVwCnRo ZSBleGlzdGluZyB1c2Vyc3BhY2UgcGFydHMgaW4gc3luYyB3aXRoIHRoZSBjaGFuZ2luZyBBUEku IEkgYWdyZWUgdGhhdApoYXZpbmcgc2ltcGxlIHRlc3RzIGZvciBjb3JuZXIgY2FzZXMgYW5kIGRp c2NvdmVyZWQgaXNzdWVzIGlzIGEgZ29vZAppZGVhIG9uY2UgdGhlIEFQSSBpcyBoYW1tZXJlZCBv dXQuCgpSZWdhcmRzLApMdWNhcwoKLS0gClBlbmd1dHJvbml4IGUuSy4gICAgICAgICAgICAgfCBM dWNhcyBTdGFjaCAgICAgICAgICAgICAgICAgfApJbmR1c3RyaWFsIExpbnV4IFNvbHV0aW9ucyAg IHwgaHR0cDovL3d3dy5wZW5ndXRyb25peC5kZS8gIHwKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==