From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC] drm/atomic+msm: add helper to implement legacy dirtyfb Date: Wed, 4 Apr 2018 14:16:17 +0200 Message-ID: <20180404121617.GK3881@phenom.ffwll.local> References: <20180403224225.26776-1-robdclark@gmail.com> <307adb15-412a-1fe2-f116-27fe5b4a657d@shipmail.org> <20180404084320.GA3881@phenom.ffwll.local> <20180404095604.GD3881@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Rob Clark Cc: Thomas Hellstrom , David Airlie , linux-arm-msm , Maarten Lankhorst , Linux Kernel Mailing List , dri-devel , Noralf =?iso-8859-1?Q?Tr=F8nnes?= , Sean Paul , Lukasz Spintzyk , Gustavo Padovan , Deepak Singh Rawat , freedreno , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= List-Id: linux-arm-msm@vger.kernel.org T24gV2VkLCBBcHIgMDQsIDIwMTggYXQgMDc6NDA6MzJBTSAtMDQwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+IE9uIFdlZCwgQXByIDQsIDIwMTggYXQgNTo1NiBBTSwgRGFuaWVsIFZldHRlciA8ZGFuaWVs QGZmd2xsLmNoPiB3cm90ZToKPiA+IE9uIFdlZCwgQXByIDA0LCAyMDE4IGF0IDExOjEwOjA4QU0g KzAyMDAsIFRob21hcyBIZWxsc3Ryb20gd3JvdGU6Cj4gPj4gT24gMDQvMDQvMjAxOCAxMDo0MyBB TSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+PiA+IE9uIFdlZCwgQXByIDA0LCAyMDE4IGF0IDEw OjIyOjIxQU0gKzAyMDAsIFRob21hcyBIZWxsc3Ryb20gd3JvdGU6Cj4gPj4gPiA+IEhpLAo+ID4+ ID4gPgo+ID4+ID4gPiBPbiAwNC8wNC8yMDE4IDA4OjU4IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3Rl Ogo+ID4+ID4gPiA+IE9uIFdlZCwgQXByIDQsIDIwMTggYXQgMTI6NDIgQU0sIFJvYiBDbGFyayA8 cm9iZGNsYXJrQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPj4gPiA+ID4gPiBBZGQgYW4gYXRvbWljIGhl bHBlciB0byBpbXBsZW1lbnQgZGlydHlmYiBzdXBwb3J0LiAgVGhpcyBpcyBuZWVkZWQgdG8KPiA+ PiA+ID4gPiA+IHN1cHBvcnQgRFNJIGNvbW1hbmQtbW9kZSBwYW5lbHMgd2l0aCB4MTEgdXNlcnNw YWNlIChpZS4gd2hlbiB3ZSBjYW4ndAo+ID4+ID4gPiA+ID4gcmVseSBvbiBwYWdlZmxpcHMgdG8g dHJpZ2dlciBhIGZsdXNoIHRvIHRoZSBwYW5lbCkuCj4gPj4gPiA+ID4gPgo+ID4+ID4gPiA+ID4g VG8gc2lnbmFsIHRvIHRoZSBkcml2ZXIgdGhhdCB0aGUgYXN5bmMgYXRvbWljIHVwZGF0ZSBuZWVk cyB0bwo+ID4+ID4gPiA+ID4gc3luY2hyb25pemUgd2l0aCBmZW5jZXMsIGV2ZW4gdGhvdWdoIHRo ZSBmYiBkaWRuJ3QgY2hhbmdlLCB0aGUKPiA+PiA+ID4gPiA+IGRybV9hdG9taWNfc3RhdGU6OmRp cnR5IGZsYWcgaXMgYWRkZWQuCj4gPj4gPiA+ID4gPgo+ID4+ID4gPiA+ID4gU2lnbmVkLW9mZi1i eTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgo+ID4+ID4gPiA+ID4gLS0tCj4gPj4g PiA+ID4gPiBCYWNrZ3JvdW5kOiB0aGVyZSBhcmUgYSBudW1iZXIgb2YgZGlmZmVyZW50IGZvbGtz IHdvcmtpbmcgb24gZ2V0dGluZwo+ID4+ID4gPiA+ID4gdXBzdHJlYW0ga2VybmVsIHdvcmtpbmcg b24gdmFyaW91cyBkaWZmZXJlbnQgcGhvbmVzL3RhYmxldHMgd2l0aCBxY29tCj4gPj4gPiA+ID4g PiBTb0Mncy4uIG1hbnkgb2YgdGhlbSBoYXZlIGNvbW1hbmQgbW9kZSBwYW5lbHMsIHNvIHdlIGtp bmQgb2YgbmVlZCBhCj4gPj4gPiA+ID4gPiB3YXkgdG8gc3VwcG9ydCB0aGUgbGVnYWN5IGRpcnR5 ZmIgaW9jdGwgZm9yIHgxMSBzdXBwb3J0Lgo+ID4+ID4gPiA+ID4KPiA+PiA+ID4gPiA+IEkga25v dyB0aGVyZSBpcyB3b3JrIG9uIGEgcHJvcHJlciBub24tbGVnYWN5IGF0b21pYyBwcm9wZXJ0eSBm b3IKPiA+PiA+ID4gPiA+IHVzZXJzcGFjZSB0byBjb21tdW5pY2F0ZSBkaXJ0eS1yZWN0KHMpIHRv IHRoZSBrZXJuZWwsIHNvIHRoaXMgY2FuCj4gPj4gPiA+ID4gPiBiZSBpbXByb3ZlZCBmcm9tIHRy aWdnZXJpbmcgYSBmdWxsLWZyYW1lIGZsdXNoIG9uY2UgdGhhdCBpcyBpbgo+ID4+ID4gPiA+ID4g cGxhY2UuICBCdXQgd2Uga2luZGEgbmVlZGEgYSBzdG9wLWdhcCBzb2x1dGlvbi4KPiA+PiA+ID4g PiA+Cj4gPj4gPiA+ID4gPiBJIGhhZCBjb25zaWRlcmVkIGFuIGluLWRyaXZlciBzb2x1dGlvbiBm b3IgdGhpcywgYnV0IHRoaW5ncyBnZXQgYQo+ID4+ID4gPiA+ID4gYml0IHRyaWNreSBpZiB1c2Vy c3BhY2UgYW5kcyB1cCBjb21iaW5pbmcgZGlydHlmYiBpb2N0bHMgd2l0aCBwYWdlLQo+ID4+ID4g PiA+ID4gZmxpcHMsIGJlY2F1c2Ugd2UgbmVlZCB0byBzeW5jaHJvbml6ZSBzZXR0aW5nIHZhcmlv dXMgQ1RMLkZMVVNIIGJpdHMKPiA+PiA+ID4gPiA+IHdpdGggc2V0dGluZyB0aGUgQ1RMLlNUQVJU IGJpdC4gIChpZS4gcmVhbGx5IGFsbCB3ZSBuZWVkIHRvIGRvIGZvcgo+ID4+ID4gPiA+ID4gY21k IG1vZGUgcGFuZWxzIGlzIGJhbmcgQ1RMLlNUQVJULCBidXQgaXMgdGhpcyBlbmRzIHVwIHJhY2lu ZyB3aXRoCj4gPj4gPiA+ID4gPiBwYWdlZmxpcHMgc2V0dGluZyBGTFVTSCBiaXRzLCB0aGVuIGJh ZCB0aGluZ3MuKSAgVGhlIGVhc2llc3Qgc29sbgo+ID4+ID4gPiA+ID4gaXMgdG8gd3JhcCB0aGlz IHVwIGFzIGFuIGF0b21pYyBjb21taXQgYW5kIHJlbHkgb24gdGhlIHdvcmtlciB0bwo+ID4+ID4g PiA+ID4gc2VyaWFsaXplIHRoaW5ncy4gIEhlbmNlIGFkZGluZyBhbiBhdG9taWMgZGlydHlmYiBo ZWxwZXIuCj4gPj4gPiA+ID4gPgo+ID4+ID4gPiA+ID4gSSBndWVzcyBhdCBsZWFzdCB0aGUgaGVs cGVyLCB3aXRoIHNvbWUgc21hbGwgYWRkaXRpb24gdG8gdHJhbnNsYXRlCj4gPj4gPiA+ID4gPiBh bmQgcGFzcy10aHJ1IHRoZSBkaXJ0eSByZWN0KHMpIGlzIHVzZWZ1bCB0byB0aGUgZmluYWwgYXRv bWljIGRpcnR5LQo+ID4+ID4gPiA+ID4gcmVjdCBwcm9wZXJ0eSBzb2x1dGlvbi4gIERlcGVuZGlu ZyBvbiBob3cgZmFyIG9mZiB0aGF0IGlzLCBhIHN0b3AtCj4gPj4gPiA+ID4gPiBnYXAgc29sdXRp b24gY291bGQgYmUgdXNlZnVsLgo+ID4+ID4gPiA+IEFkZGluZyBOb3JhbGYsIHdobyBpaXJjIGFs cmVhZHkgcG9zdGVkIHRoZSBmdWxsIGRpcnR5IGhlbHBlcnMgYWxyZWFkeSBzb21ld2hlcmUuCj4g Pj4gPiA+ID4gLURhbmllbAo+ID4+ID4gPiBJJ3ZlIGFza2VkIERlZXBhayB0byBSRkMgdGhlIGNv cmUgY2hhbmdlcyBzdWdnZXN0ZWQgZm9yIHRoZSBmdWxsIGRpcnR5IGJsb2IKPiA+PiA+ID4gb24g ZHJpLWRldmVsLiBJdCBidWlsZHMgb24gRGlzcGxheUxpbmsncyBzdWdnZXN0aW9uLCB3aXRoIGEg c2ltcGxlIGhlbHBlciB0bwo+ID4+ID4gPiBnZXQgdG8gdGhlIGRlc2lyZWQgY29vcmRpbmF0ZXMu Cj4gPj4gPiA+Cj4gPj4gPiA+IE9uZSB0aGluZyB0byBwZXJoYXBzIGRpc2N1c3MgaXMgaG93IHdl IHdvdWxkIGxpa2UgdG8gZml0IHRoaXMgd2l0aAo+ID4+ID4gPiBmcm9udC1idWZmZXIgcmVuZGVy aW5nIGFuZCB0aGUgZGlydHkgaW9jdGwuIEluIHRoZSBwYWdlLWZsaXAgY29udGV4dCwgdGhlCj4g Pj4gPiA+IGRpcnR5IHJlY3RzLCBsaWtlIGVnbCdzIHN3YXBidWZmZXJfd2l0aF9kYW1hZ2UgaXMg YSBoaW50IHRvIHJlc3RyaWN0IHRoZQo+ID4+ID4gPiBkYW1hZ2UgcmVnaW9uIHRoYXQgY2FuIGJl IGZ1bGx5IGlnbm9yZWQgYnkgdGhlIGRyaXZlciwgbmV3IGNvbnRlbnQgaXMKPiA+PiA+ID4gaW5k aWNhdGVkIGJ5IGEgbmV3IGZyYW1lYnVmZmVyLgo+ID4+ID4gPgo+ID4+ID4gPiBXZSBjb3VsZCBk byB0aGUgc2FtZSBmb3IgZnJvbnRidWZmZXIgcmVuZGVyaW5nOiBFaXRoZXIgc2V0IGEgZGlydHkg ZmxhZyBsaWtlCj4gPj4gPiA+IHlvdSBkbyBoZXJlLCBvciBwcm92aWRlIGEgY29udGVudF9hZ2Ug c3RhdGUgbWVtYmVyLiBTaW5jZSB3ZSBjbGVhciB0aGUgZGlydHkKPiA+PiA+ID4gZmxhZyBvbiBz dGF0ZSBjb3BpZXMsIEkgZ3Vlc3MgdGhhdCB3b3VsZCBiZSBzdWZmaWNpZW50LiBUaGUgYmxvYiBy ZWN0YW5nbGVzCj4gPj4gPiA+IHdvdWxkIHRoZW4gYmVjb21lIGEgaGludCB0byByZXN0cmljdCB0 aGUgZGFtYWdlIHJlZ2lvbi4KPiA+PiA+IEknbSBub3QgZW50aXJlbHkgZm9sbG93aW5nIGhlcmUg LSBJIHRob3VnaHQgZm9yIGZyb250YnVmZmVyIHJlbmRlcmluZyB0aGUKPiA+PiA+IGRpcnR5IHJl Y3RzIGhhdmUgYWx3YXlzIGp1c3QgYmVlbiBhIGhpbnQsIGFuZCB0aGF0IHRoZSBkcml2ZXIgd2Fz IGFsd2F5cwo+ID4+ID4gZnJlZSB0byByZS11cGxvYWQgdGhlIGVudGlyZSBidWZmZXIgdG8gdGhl IHNjcmVlbi4KPiA+PiA+Cj4gPj4gPiBBbmQgdGhyb3VnaCBhIGhlbHBlciBsaWtlIFJvYidzIHBy b3Bvc2luZyBoZXJlIChhbmQgaGF2ZSBmbG9hdGVkIGFyb3VuZCBpbgo+ID4+ID4gZGlmZmVyZW50 IHZlcnNpb25zIGFscmVhZHkpIHdlJ2QgZXNzZW50aWFsbHkgbWFwIGEgZnJvbnRidWZmZXIgZGly dHlmYgo+ID4+ID4gY2FsbCB0byBhIGZha2UgZmxpcCB3aXRoIGRpcnR5IHJlY3QuIE1hbnVhbCB1 cGxvYWQgZHJpdmVycyBhbHJlYWR5IG5lZWQgdG8KPiA+PiA+IHVwbG9hZCB0aGUgZW50aXJlIHNj cmVlbiBpZiB0aGV5IGdldCBhIGZsaXAsIHNpbmNlIHNvbWUgdXNlcnNwYWNlIHVzZXMKPiA+PiA+ IHRoYXQgdG8gZmx1c2ggb3V0IGZyb250YnVmZmVyIHJlbmRlcmluZyAoaW5zdGVhZCBvZiBjYWxs aW5nIGRpcnR5ZmIpLgo+ID4+ID4KPiA+PiA+IFNvIGZyb20gdGhhdCBwb3YgdGhlIG5ldyBkaXJ0 eSBmbGFnIGlzIGtpbmRhIG5vdCBuZWNlc3NhcnkgaW1vLgo+ID4+ID4KPiA+PiA+ID4gQW5vdGhl ciBhcHByb2FjaCB3b3VsZCBiZSB0byBoYXZlIHRoZSBwcmVzZW5jZSBvZiBkaXJ0eSByZWN0cyB3 aXRob3V0Cj4gPj4gPiA+IGZyYW1lYnVmZmVyIGNoYW5nZSB0byBpbmRpY2F0ZSBmcm9udGJ1ZmZl ciByZW5kZXJpbmcuCj4gPj4gPiA+Cj4gPj4gPiA+IEkgdGhpbmsgSSBsaWtlIHRoZSBmaXJzdCBh cHByb2FjaCBiZXN0LCBhbHRob3VnaCBpdCBtYXkgYmUgdGVtcHRpbmcgZm9yCj4gPj4gPiA+IHVz ZXItc3BhY2UgYXBwcyB0byBqdXN0IHNldCB0aGUgZGlydHkgYml0IGluc3RlYWQgb2YgcHJvdmlk aW5nIHRoZSBmdWxsCj4gPj4gPiA+IGRhbWFnZSByZWdpb24uCj4gPj4gPiBPciBJJ20gbm90IGZv bGxvd2luZyB5b3UgaGVyZSwgYmVjYXVzZSBJIGRvbid0IHF1aXRlIHNlZSB0aGUgZGlmZmVyZW5j ZQo+ID4+ID4gYmV0d2VlbiBkaXJ0eWZiIGFuZCBhIGZsaXAuCj4gPj4gPiAtRGFuaWVsCj4gPj4K PiA+PiBPSywgbGV0IG1lIHJlcGhyYXNlOgo+ID4+Cj4gPj4gRnJvbSB0aGUgZHJpdmVyJ3MgcG9p bnQtb2YtdmlldywgaW4gdGhlIGF0b21pYyB3b3JsZCwgbmV3IGNvbnRlbnQgYW5kIHRoZQo+ID4+ IG5lZWQgZm9yIG1hbnVhbCB1cGxvYWQgaXMgaW5kaWNhdGVkIGJ5IGEgY2hhbmdlIGluIGZiIGF0 dGFjaGVkIHRvIHRoZSBwbGFuZS4KPiA+Pgo+ID4+IFdpdGggUm9iJ3MgcGF0Y2ggaGVyZSwgKGNv cnJlY3QgbWUgaWYgSSdtIHdyb25nKSBpbiBhZGRpdGlvbiBuZXcgY29udGVudCBhbmQKPiA+PiB0 aGUgbmVlZCBmb3IgbWFudWFsIHVwbG9hZCBpcyBpZGVudGlmaWVkIGJ5IHRoZSBkaXJ0eSBmbGFn LCAoc2luY2UgdGhlIGZiCj4gPj4gc3RheXMgdGhlIHNhbWUgYW5kIHRoZSBkcml2ZXIgdGh1cyBu ZXZlciBpZGVudGlmaWVzIGEgcGFnZS1mbGlwKS4KPiA+Cj4gPiBIbSwgSSdtIG5vdCBlbnRpcmVs eSBzdXJlIFJvYidzIGFwcHJvYWNoIGlzIGNvcnJlY3QuIEltbyBhIHBhZ2VmbGlwCj4gPiAoYXRv bWljIG9yIG5vdCkgc2hvdWxkIHJlc3VsdCBpbiB0aGUgZW50aXJlIGJ1ZmZlciBnZXR0aW5nIHVw bG9hZGVkLiBUaGUKPiA+IGRpcnR5IGZsYWcgaXMga2luZGEgcmVkdW5kYW50LCBhIGZsaXAgd2l0 aCB0aGUgc2FtZSBidWZmZXIgd29ya3MgdGhlIHNhbWUKPiA+IHdheSBhcyBhIGRpcnR5ZmIgd2l0 aCB0aGUgZW50aXJlIGJ1ZmZlciBhcyB0aGUgZGlydHkgcmVjdGFuZ2xlLgo+IAo+IFVzZXJzcGFj ZSBjb3VsZCBkbyBhIHBhZ2VmbGlwLCBidXQgKHdpdGggYnVmZmVyLWFnZSBleHRlbnNpb24pIG9u bHkKPiByZS1yZW5kZXIgcGFydCBvZiB0aGUgZnJhbWUuICBTbyB0aGVyZSBpcyBhIHVzZS1jYXNl IGZvciBmdWxsIGZyYW1lCj4gcGFnZWZsaXAgd2l0aCBoaW50cyBhYm91dCB3aGF0IHJlZ2lvbihz KSBjaGFuZ2VkIHNpbmNlIHByZXZpb3VzIGZyYW1lLgo+IAo+IChPZiBjb3Vyc2UgdXNlcnNwYWNl IGNvdWxkIHNjcmV3IHRoYXQgdXAgYW5kIGdldCBkaWZmZXJlbnQgcmVzdWx0cyBvbgo+ICJjb21t YW5kIiB2cyAidmlkZW8iIHN0eWxlIGRpc3BsYXkuLiBpbiB0aGF0IGNhc2UsIGl0IGdldHMgdG8g a2VlcAo+IGJvdGggcGllY2VzKQoKSSdtIG5vdCBhZ2FpbnN0IGRpcnR5IG9uIGZsaXBzIHdpdGgg dGhlIHNhbWUgYnVmZmVyIGFzIGFuIG9wdGltaXphdGlvbi4KRGlzYWdyZWVtZW50IGhlcmUgaXMg YXJvdW5kIHdoZXRoZXIgYSBmbGlwIHRvIHRoZSBzYW1lIGJ1ZmZlciBtZWFuczoKYSkgbm90aGlu ZyBjaGFuZ2VkLCB1cGxvYWQgbm90aGluZwpiKSBlbnRpcmUgYnVmZmVyIG1pZ2h0IGhhdmUgY2hh bmdlZAoKSSdtIHByb3Bvc2luZyB3ZSBzdGFuZGFyZGl6ZSBvbiBiKSAod2l0aCBtYXliZSB0aGUg ZXhjZXB0aW9uIG9mIGxlZ2FjeQpjdXJzb3IgaW9jdGxzIGJlY2F1c2UgdGhvc2UgYXJlIHNwZWNp YWwpIGFuZCBhZGQgdGhlIGRpcnR5IHJlY3RzIGFzIGFuCm9wdGlvbiB0byBvcHRpbWl6ZSB0aGlz IG1vcmUuCgpFaXRoZXIgd2F5IHlvdSdkIGFsd2F5cyBoYXZlIHRvIGZvbGxvdyB0aGUgaW1wbGlj aXQgZmVuY2UgKHdoaWNoIGlzIHdoYXQKeW91ciBtc20gaHVuayBzZWVtcyB0byBiZSBkb2luZywg YnV0IG9ubHkgZm9yIGRpcnR5ZmIpLgotRGFuaWVsCgo+IAo+IEJSLAo+IC1SCj4gCj4gCj4gPj4g SW4gYm90aCB0aGVzZSBzaXR1YXRpb25zLCBjbGlwIHJlY3RzIGNhbiBwcm92aWRlIGEgaGludCB0 byByZXN0cmljdCB0aGUKPiA+PiBkaXJ0eSByZWdpb24uCj4gPj4KPiA+PiBOb3cgSSB3YXMgdGhp bmtpbmcgYWJvdXQgdGhlIHByZWZlcnJlZCB3YXkgZm9yIHVzZXItc3BhY2UgdG8gY29tbXVuaWNh dGUKPiA+PiBmcm9udCBidWZmZXIgcmVuZGVyaW5nIHRocm91Z2ggdGhlIGF0b21pYyBpb2N0bDoK PiA+Pgo+ID4+IDEpIEV4cG9zZSBhIGRpcnR5IChvciBjb250ZW50X2FnZSBwcm9wZXJ0eSkKPiA+ PiAyKSBBdHRhY2ggYSBjbGlwLXJlY3QgYmxvYiBwcm9wZXJ0eS4KPiA+PiAzKSBGYWtlIGEgcGFn ZS1mbGlwIGJ5IHBpbmctcG9uZ2luZyB0d28gZnJhbWUtYnVmZmVycyBwb2ludGluZyB0byB0aGUg c2FtZQo+ID4+IHVuZGVybHlpbmcgYnVmZmVyIG9iamVjdC4KPiA+Pgo+ID4+IEFyZSB5b3Ugc2F5 aW5nIHRoYXQgcGVvcGxlIGFyZSBhbHJlYWR5IHVzaW5nIDMpIGFuZCB3ZSBzaG91bGQga2VlcCB1 c2luZwo+ID4+IHRoYXQ/Cj4gPgo+ID4gSSdtIHNheWluZyB0aGV5J3JlIHVzaW5nIDNiKSwgZmxp cCB0aGUgc2FtZSBidWZmZXIgd3JhcHBlZCBpbiB0aGUgc2FtZQo+ID4gZHJtX2ZyYW1lYnVmZmVy LCBhbmQgZXhwZWN0IGl0IHRvIHdvcmsuCj4gPgo+ID4gVGhlIG9ubHkgYWR2YW50YWdlIGRpcnR5 ZmIgaGFzIGlzIHRoYXQgaXQgYWxsb3dzIHlvdSB0byBzdXBwbHkgdGhlCj4gPiBvcHRpbWl6ZWQg dXBsb2FkIHJlY3RhbmdsZXMsIGJ1dCBhdCB0aGUgY29zdCBvZiBhIGZ1bm55IGFwaSAoaXQncyB3 b3JraW5nCj4gPiBvbiB0aGUgZmIsIG5vdCB0aGUgcGxhbmUvY3J0YyB5b3Ugd2FudCB0byB1cGxv YWQpIGFuZCBsYWNrIG9mIGRybV9ldmVudCB0bwo+ID4gY29uZmlybSB3aGVuIGV4YWN0bHkgeW91 IHVwbG9hZGVkIHlvdXIgc3R1ZmYuIEJ1dCBpbW8gdGhleSBzaG91bGQgYmUgdGhlCj4gPiBzYW1l IHVuZGVybHlpbmcgb3BlcmF0aW9uLgo+ID4KPiA+IEFsc28gbm90ZSB0aGF0IGF0b21pYyBoZWxw ZXJzIGRvbid0IG9wdGltaXplIG91dCBwbGFuZSBmbGlwcyBmb3Igc2FtZQo+ID4gYnVmZmVycy4g V2Ugb25seSBvcHRpbWl6ZSBvdXQgc29tZSBvZiB0aGUgd2FpdGluZywgaW4gYSBmYWlsZWQgYXR0 ZW1wdCBhdAo+ID4gbWFraW5nIGN1cnNvcnMgc3RhbGwgbGVzcywgYnV0IHRoYXQncyBub3QgZml4 ZWQgd2l0aCB0aGUgYXN5bmMgcGxhbmUKPiA+IHVwZGF0ZSBzdHVmZi4gQW5kIHdlIGNhbiBvYnZp b3VzbHkgb3B0aW1pemUgb3V0IHRoZSBwcmVwYXJlL2NsZWFudXAgaG9va3MsCj4gPiBiZWNhdXNl IHRoZSBidWZmZXIgc2hvdWxkIGJlIHBpbm5lZCBhbHJlYWR5Lgo+ID4KPiA+IFNvIGltbyBmb3Ig YSBxdWljayBmaXggSSB0aGluayB3ZSBuZWVkOgo+ID4gMSkgRml4IGRyaXZlcnMgKG9yIGF0IGxl YXN0IG1zbSkgdG8gdXBsb2FkIGJ1ZmZlcnMgZm9yIG1hbnVhbCB1cGxvYWQgb24KPiA+IGFsbCBm bGlwcyAod2VsbCwgYWxsIHNjcmVlbiB1cGRhdGVzKS4gUHJvYmFibHkgc2hvdWxkIGRvIHRoZSBm ZW5jZSB3YWl0aW5nCj4gPiB1bmNvbmRpdGlvbmFsbHkgdG9vIChhbmQgaGFuZGxlIGN1cnNvcnMg d2l0aCB0aGUgbmV3IGFzeW5jIHN0dWZmKS4KPiA+IDIpIFRpbnkgaGVscGVyIHRoYXQgcmVtYXBz IGEgZGlydHlmYiBjYWxsIGludG8gYSBub25ibG9ja2luZyBhdG9taWMKPiA+IGNvbW1pdCwgd2hp Y2ggY3VycmVudGx5IG1lYW5zIHdlJ3JlIHRocm93aW5nIHRoZSBkaXJ0eSByZWN0IG9wdGltaXph dGlvbgo+ID4gaW50byB0aGUgd2luZC4gQnV0IHRoYXQgY291bGQgZWFzaWx5IGJlIGFkZGVkIHRv IHRoZSBkcm1fcGxhbmVfc3RhdGUsCj4gPiB3aXRob3V0IGV4cG9zaW5nIGl0IHRvIHVzZXJzcGFj ZSBhcyBhIHByb3BlcnR5IGp1c3QgeWV0Lgo+ID4KPiA+IENoZWVycywgRGFuaWVsCj4gPiAtLQo+ ID4gRGFuaWVsIFZldHRlcgo+ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9u Cj4gPiBodHRwOi8vYmxvZy5mZndsbC5jaAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QK RnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=