From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RfC PATCH] Add udmabuf misc device Date: Mon, 9 Apr 2018 10:12:27 +0200 Message-ID: <20180409081226.GE31310@phenom.ffwll.local> References: <20180313154826.20436-1-kraxel@redhat.com> <20180313161035.GL4788@phenom.ffwll.local> <20180314080301.366zycak3whqvvqx@sirius.home.kraxel.org> <20180406001117.GD31612@mdroper-desk.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x235.google.com (mail-wm0-x235.google.com [IPv6:2a00:1450:400c:c09::235]) by gabe.freedesktop.org (Postfix) with ESMTPS id 759EB6E0B3 for ; Mon, 9 Apr 2018 08:12:31 +0000 (UTC) Received: by mail-wm0-x235.google.com with SMTP id r82so14790424wme.0 for ; Mon, 09 Apr 2018 01:12:31 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180406001117.GD31612@mdroper-desk.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Matt Roper Cc: Dongwon Kim , Tomeu Vizoso , Oleksandr Andrushchenko , David Airlie , open list , dri-devel , qemu-devel@nongnu.org, "moderated list:DMA BUFFER SHARING FRAMEWORK" , Gerd Hoffmann , "open list:DMA BUFFER SHARING FRAMEWORK" List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBBcHIgMDUsIDIwMTggYXQgMDU6MTE6MTdQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBUaHUsIEFwciAwNSwgMjAxOCBhdCAxMDozMjowNFBNICswMjAwLCBEYW5pZWwgVmV0 dGVyIHdyb3RlOgo+ID4gUHVsbGluZyB0aGlzIG91dCBvZiB0aGUgc2hhZG93cyBhZ2Fpbi4KPiA+ IAo+ID4gV2Ugbm93IGFsc28gaGF2ZSB4ZW4temNvcHkgZnJvbSBPbGVrc2FuZHIgYW5kIHRoZSBo eXBlciBkbWFidWYgc3R1ZmYKPiA+IGZyb20gTWF0dCBhbmQgRG9uZ3dvbmcuCj4gPiAKPiA+IEF0 IGxlYXN0IGZyb20gdGhlIGludGVsIHNpZGUgdGhlcmUgc2VlbXMgdG8gYmUgdGhlIGlkZWEgdG8g anVzdCBoYXZlIDEKPiA+IHNwZWNpYWwgZGV2aWNlIHRoYXQgY2FuIGhhbmRsZSBjcm9zcy1ndWVz L2hvc3Qgc2hhcmluZyBmb3IgYWxsIGtpbmRzCj4gPiBvZiBoeXBlcnZpc29ycywgc28gSSBndWVz cyB5b3UgYWxsIG5lZWQgdG8gd29yayB0b2dldGhlciA6LSkKPiA+IAo+ID4gT3Igd2UgdGhyb3cg b3V0IHRoZSBpZGVhIHRoYXQgaHlwZXIgZG1hYnVmIHdpbGwgYmUgY3Jvc3MtaHlwZXJ2aXNvcgo+ ID4gKG5vdCBzdXJlIGhvdyB1c2VmdWwvcmVhc29uYWJsZSB0aGF0IGlzLCBzb21lb25lIHBsZWFz ZSBjb252aW5jZSBtZQo+ID4gb25lIHdheSBvciB0aGUgb3RoZXIpLgo+ID4gCj4gPiBDaGVlcnMs IERhbmllbAo+IAo+IERvbmd3b24gKERXKSBpcyB0aGUgb25lIGRvaW5nIGFsbCB0aGUgcmVhbCB3 b3JrIG9uIGh5cGVyX2RtYWJ1ZiwgYnV0IEknbQo+IGZhbWlsaWFyIHdpdGggdGhlIHVzZSBjYXNl cyBoZSdzIHRyeWluZyB0byBhZGRyZXNzLCBhbmQgSSB0aGluayB0aGVyZQo+IGFyZSBhIGNvdXBs ZSBoaWdoLWxldmVsIGdvYWxzIG9mIGhpcyB3b3JrIHRoYXQgYXJlIHdvcnRoIGNhbGxpbmcgb3V0 IGFzCj4gd2UgZGlzY3VzcyB0aGUgdmFyaW91cyBvcHRpb25zIGZvciBzaGFyaW5nIGJ1ZmZlcnMg cHJvZHVjZWQgaW4gb25lIFZNCj4gd2l0aCBhIGNvbnN1bWVyIHJ1bm5pbmcgaW4gYW5vdGhlciBW TToKPiAKPiAgKiBXZSBzaG91bGQgdHJ5IHRvIGtlZXAgdGhlIGludGVyZmFjZS91c2FnZSBzZXBh cmF0ZSBmcm9tIHRoZQo+ICAgIHVuZGVybHlpbmcgaHlwZXJ2aXNvciBpbXBsZW1lbnRhdGlvbiBk ZXRhaWxzLiAgSS5lLiwgaW4gRFcncyBkZXNpZ24KPiAgICB0aGUgc2luay9zb3VyY2UgZHJpdmVy cyB0aGF0IGhhbmRsZSB0aGUgYWN0dWFsIGJ1ZmZlciBwYXNzaW5nIGluIHRoZQo+ICAgIHR3byBW TSdzIHNob3VsZCBwcm92aWRlIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdGhhdCBkb2VzIG5vdCBkZXBl bmQgb24gYQo+ICAgIHNwZWNpZmljIGh5cGVydmlzb3IuICBCZWhpbmQgdGhlIHNjZW5lcyB0aGVy ZSBjb3VsZCBiZSB2YXJpb3VzCj4gICAgaW1wbGVtZW50YXRpb25zIGZvciBzcGVjaWZpYyBoeXBl cnZpc29ycyAoWGVuLCBLVk0sIEFDUk4sIGV0Yy4pLCBhbmQKPiAgICBzb21lIG9mIHRob3NlIGJh Y2tlbmRzIG1heSBoYXZlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zLCBidXQgaXQgd291bGQKPiAg ICBiZSBiZXN0IGlmIHVzZXJzcGFjZSBkaWRuJ3QgaGF2ZSB0byBrbm93IHRoZSBzcGVjaWZpYyBo eXBlcnZpc29yCj4gICAgcnVubmluZyBvbiB0aGUgc3lzdGVtIGFuZCBjb3VsZCBqdXN0IHF1ZXJ5 IHRoZSBnZW5lcmFsIGNhcGFiaWxpdGllcwo+ICAgIGF2YWlsYWJsZSB0byBpdC4gIFdlJ3ZlIGFs cmVhZHkgZ290IHByb2plY3RzIGluIGZsaWdodCB0aGF0IGFyZQo+ICAgIHdhbnRpbmcgdGhpcyBm dW5jdGlvbmFsaXR5IG9uIFhlbiBhbmQgQUNSTiB0b2RheS4KClR3byBjb21tZW50cyBvbiB0aGlz OgoKLSBKdXN0IGJlY2F1c2UgaXQncyBpbiBkcml2ZXJzL2dwdSBkb2Vzbid0IG1lYW4geW91IGNh bid0IHVzZSBpdCBmb3IKICBhbnl0aGluZyBlbHNlLiBFLmcuIHRoZSB4ZW4temNvcHkgZHJpdmVy IGNhbiB2ZXJ5IG11Y2ggYmUgdXNlZCBmb3IgYW55CiAgZG1hLWJ1ZiwgdGhlcmUncyBub3RoaW5n IGdwdSBzcGVjaWZpYyB3aXRoIGl0IC0gd2VsbCBiZXNpZGVzIHRoYXQgaXQKICByZXN1c2VzIHNv bWUgdXNlZnVsIERSTSBpb2N0bHMsIGJ1dCBpZiB0aGF0IGFubm95cyB5b3UganVzdCBkbyBhICNk ZWZpbmUKICBUT1RBTExZX0dFTkVSSUMgRFJNIGFuZCBiZSBkb25lIDotKQoKLSBFc3BlY2lhbGx5 IHRoZSBrdm0gbWVtb3J5IGFuZCBoeXBlcnZpc29yIG1vZGVsIHNlZW1zIHRvdGFsbHkgZGlmZmVy ZW50CiAgZnJvbSBvdGhlciBoeXBlcnZpc29ycywgZS5nLiBubyByZWFsIHVzZSBmb3IgZ3Vlc3Qt Z3Vlc3Qgc2hhcmluZyAod2hpY2gKICBkb2Vzbid0IGdvIHRocm91Z2ggdGhlIGhvc3QpIGFuZCBv dGhlciBjYXNlcy4gU28gdHJ5aW5nIHRvIG1ha2UKICBzb21ldGhpbmcgMTAwJSBnZW5lcmljIHNl ZW1zIGxpa2UgYSBiYWQgaWRlYS4KCiAgV3J0IG1ha2luZyBpdCBnZW5lcmljOiBKdXN0IHVzZSBn ZW5lcmljIGludGVyZmFjZXMgLSBpZiB5b3UgY2FuIHNvbWVob3cKICB1c2UgeGVuLWZyb250IGZv ciB0aGUgZGlzcGxheSBzaGFyaW5nLCB0aGVuIGEpIG5vIG5lZWQgZm9yIGh5cGVyLWRtYWJ1Zgog IGFuZCBiKSBhbHJlYWR5IGZ1bGx5IGdlbmVyaWMgc2luY2UgaXQgbG9va3MgbGlrZSBhIG5vcm1h bCBkcm0gZGV2aWNlIHRvCiAgdGhlIGd1ZXN0IHVzZXJzcGFjZS4KCj4gICogVGhlIGdlbmVyYWwg aW50ZXJmYWNlIHNob3VsZCBiZSBhYmxlIHRvIGV4cHJlc3Mgc2hhcmluZyBmcm9tIGFueQo+ICAg IGd1ZXN0Omd1ZXN0LCBub3QganVzdCBndWVzdDpob3N0LiAgQXJiaXRyYXJ5IEc6RyBzaGFyaW5n IG1pZ2h0IGJlCj4gICAgc29tZXRoaW5nIHNvbWUgaHlwZXJ2aXNvcnMgc2ltcGx5IGFyZW4ndCBh YmxlIHRvIHN1cHBvcnQsIGJ1dCB0aGUKPiAgICB1c2Vyc3BhY2UgQVBJIGl0c2VsZiBzaG91bGRu J3QgbWFrZSBhc3N1bXB0aW9ucyBvciByZXN0cmljdCB0aGF0LiAgSQo+ICAgIHRoaW5rIGlkZWFs bHkgdGhlIHNoYXJpbmcgQVBJIHdvdWxkIGluY2x1ZGUgc29tZSBraW5kIG9mCj4gICAgcXVlcnlf dGFyZ2V0cyBpbnRlcmZhY2UgdGhhdCB3b3VsZCByZXR1cm4gYSBsaXN0IG9mIFZNJ3MgdGhhdCB5 b3VyCj4gICAgY3VycmVudCBPUyBpcyBhbGxvd2VkIHRvIHNoYXJlIHdpdGg7IHRoYXQgbGlzdCB3 b3VsZCBiZSBkZXBlbmQgb24gdGhlCj4gICAgcG9saWN5IGVzdGFibGlzaGVkIGJ5IHRoZSBzeXN0 ZW0gaW50ZWdyYXRvciwgYnV0IG9idmlvdXNseSB3b3VsZG4ndAo+ICAgIGluY2x1ZGUgdGFyZ2V0 cyB0aGF0IHRoZSBoeXBlcnZpc29yIGl0c2VsZiB3b3VsZG4ndCBiZSBjYXBhYmxlIG9mCj4gICAg aGFuZGxpbmcuCgpVaCAuLi4gaGFzIGEgcHJvcGVyIHNlY3VyaXR5IGFyY2hpdGVjdCBhbmFseXpl ZCB0aGlzIGlkZWE/Cgo+ICAqIEEgbG90IG9mIHRoZSBpbml0aWFsIHVzZSBjYXNlcyBhcmUgaW4g dGhlIHJlYWxtIG9mIGdyYXBoaWNzLCBidXQgdGhpcwo+ICAgIHNob3VsZG4ndCBiZSBhIGdyYXBo aWNzLXNwZWNpZmljIEFQSS4gIEJ1ZmZlcnMgbWlnaHQgY29udGFpbiBvdGhlcgo+ICAgIHR5cGVz IG9mIGNvbnRlbnQgYXMgd2VsbCAoZS5nLiwgYXVkaW8pLiAgUmVhbGx5IHRoZSBjb250ZW50IHBy b2R1Y2VyCj4gICAgY291bGQgcG90ZW50aWFsbHkgYmUgYW55IGRyaXZlciAob3IgdXNlcnNwYWNl KSBydW5uaW5nIGluIHRoZSBWTSB0aGF0Cj4gICAga25vd3MgaG93IHRvIGltcG9ydC9leHBvcnQg ZG1hX2J1ZidzIChvciBtYXliZSBqdXN0IGltcG9ydCBnaXZlbgo+ICAgIGRhbnZldCdzIHN1Z2dl c3Rpb24gdGhhdCB3ZSBzaG91bGQgbWFrZSB0aGUgc2luayBkcml2ZXIgZG8gYWxsIHRoZQo+ICAg IGFjdHVhbCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgYW55IGJ1ZmZlcnMgdGhhdCBtYXkgYmUgc2hh cmVkKS4KClNlZSBhYm92ZSwganVzdCBiZWNhdXNlIGl0IHVzZXMgZHJtIGlvY3RscyBkb2Vzbid0 IG1ha2UgaXQgZ2Z4IHNwZWNpZmljLgoKT3RvaCBtYWtpbmcgaXQgZXZlbiBtb3JlIGdyYXBoaWNz IHNwZWNpZmljIG1pZ2h0IGJlIGV2ZW4gYmV0dGVyLCBpLmUuIGp1c3QKc2hhcmluZyB0aGUgYmFj a2VuZCB0ZWNoIChncmFudCB0YWJsZXMgb3Igd2hhdGV2ZXIpLCBidXQgaGF2aW5nIGRlZGljYXRl ZApmcm9udC1lbnRzIGZvciBlYWNoIHVzZS1jYXNlIHNvIHRoZXJlJ3MgbGVzcyBjb2RlIHRvIHR5 cGUuCgo+ICAqIFdlIG5lZWQgdG8gYmUgYWJsZSB0byBoYW5kbGUgY3Jvc3MtVk0gY29vcmRpbmF0 aW9uIG9mIGJ1ZmZlciB1c2FnZSBhcwo+ICAgIHdlbGwsIHNvIEkgdGhpbmsgd2UnZCB3YW50IHRv IGluY2x1ZGUgZmVuY2UgZm9yd2FyZGluZyBzdXBwb3J0IGluIHRoZQo+ICAgIEFQSSBhcyB3ZWxs IHRvIHNpZ25hbCBiYWNrIGFuZCBmb3J0aCBhYm91dCBwcm9kdWN0aW9uL2NvbnN1bXB0aW9uCj4g ICAgY29tcGxldGlvbi4gIEFuZCBvZiBjb3Vyc2UgZG9jdW1lbnQgcmVhbGx5IHdlbGwgd2hhdCBz aG91bGQgaGFwcGVuCj4gICAgaWYsIGZvciBleGFtcGxlLCB0aGUgZW50aXJlIFZNIHlvdSdyZSBz aGFyaW5nIHdpdGgvZnJvbSBkaWVzLgoKSW1wbGljaXQgZmVuY2luZyBoYXMgYmVlbiBwcm92ZW4g dG8gYmUgYSBiYWQgaWRlYS4gUGxlYXNlIGRvIGV4cGxpY2l0CnBhc3Npbmcgb2YgZG1hX2ZlbmNl cyAocGx1cyBhc3NvcnRlZCBwcm90b2NvbCkuCgo+ICAqIFRoZSBzaGFyaW5nIEFQSSBjb3VsZCBi ZSB1c2VkIHRvIHNoYXJlIG11bHRpcGxlIGtpbmRzIG9mIGNvbnRlbnQgaW4gYQo+ICAgIHNpbmds ZSBzeXN0ZW0uICBUaGUgc2hhcmluZyBzaW5rIGRyaXZlciBydW5uaW5nIGluIHRoZSBjb250ZW50 Cj4gICAgcHJvZHVjZXIncyBWTSBzaG91bGQgYWNjZXB0IHNvbWUgYWRkaXRpb25hbCBtZXRhZGF0 YSB0aGF0IHdpbGwgYmUKPiAgICBwYXNzZWQgb3ZlciB0byB0aGUgdGFyZ2V0IFZNIGFzIHdlbGwu ICBUaGUgc2hhcmluZyBzb3VyY2UgZHJpdmVyCj4gICAgcnVubmluZyBpbiB0aGUgY29udGVudCBj b25zdW1lcidzIFZNIHdvdWxkIHRoZW4gYmUgYWJsZSB0byB1c2UgdGhpcwo+ICAgIG1ldGFkYXRh IHRvIGRldGVybWluZSB0aGUgcHVycG9zZSBvZiBhIG5ldyBidWZmZXIgdGhhdCBhcnJpdmVzIGFu ZAo+ICAgIGZpbHRlci9kaXNwYXRjaCBpdCB0byB0aGUgYXBwcm9wcmlhdGUgY29uc3VtZXIuCgpJ ZiB5b3Ugd2FudCBtZXRhZGF0YSwgd2h5IG5vdCB1c2UgeGVuLWZyb250IG9yIHNvbWV0aGluZyBz aW1pbGFyIHRvIGhhdmUgYQp3ZWxsLWRlZmluZWQgbWVhbnMgdG8gdHJhbnNmZXIgZXZlcnl0aGlu Zz8gT25lIG9mIHRoZSBrZXkgZGVzaWduIGRlY2lzaW9ucwpvZiBkbWEtYnVmIHdhcyB0byBfbm90 XyBoYXZlIG1ldGFkYXRhLCBqdXN0IGJ1ZmZlciBzaGFyaW5nLgotRGFuaWVsCgo+IAo+IAo+IEZv ciByZWZlcmVuY2UsIHRoZSB0ZXJtaW5vbG9neSBJJ20gdXNpbmcgaXMKPiAKPiAgLy0tLS0tLS0t LS1cICBkbWFfYnVmICAgLy0tLS0tLVwgSFYgLy0tLS0tLS0tXCAgZG1hX2J1ZiAgIC8tLS0tLS0t LS0tXAo+ICB8IFByb2R1Y2VyIHwtLS0tLS0tLS0tLT58IFNpbmsgfCBIViB8IFNvdXJjZSB8LS0t LS0tLS0tLS0+fCBDb25zdW1lciB8Cj4gIFwtLS0tLS0tLS0tLyAgIGlvY3RscyAgIFwtLS0tLS0v IEhWIFwtLS0tLS0tLS8gIHVldmVudHMgICBcLS0tLS0tLS0tLS8KPiAKPiAKPiAKPiBJbiB0aGUg cmVhbG0gb2YgZ3JhcGhpY3MsICJQcm9kdWNlciIgY291bGQgcG90ZW50aWFsbHkgYmUgc29tZXRo aW5nIGxpa2UKPiBhbiBFR0wgY2xpZW50IHRoYXQgc2VuZHMgdGhlIGJ1ZmZlciBhdCBjb250ZXh0 IHNldHVwIGFuZCB0aGVuIHNpZ25hbHMKPiB3aXRoIGZlbmNlcyBvbiBlYWNoIFN3YXBCdWZmZXJz LiAgIkNvbnN1bWVyIiBjb3VsZCBiZSBhIFdheWxhbmQgY2xpZW50Cj4gdGhhdCBwcm94aWVzIHRo ZSBidWZmZXJzIGludG8gc3VyZmFjZXMgb3IgZGlzcGF0Y2hlcyB0aGVtIHRvIG90aGVyCj4gdXNl cnNwYWNlIHNvZnR3YXJlIHRoYXQncyB3YWl0aW5nIGZvciBidWZmZXJzLgo+IAo+IFdpdGggdGhl IGh5cGVyX2RtYWJ1ZiBhcHByb2FjaCwgdGhlcmUncyBhIGxvdCBvZiBBQkkgZGV0YWlscyB0aGF0 IG5lZWQKPiB0byBiZSB3b3JrZWQgb3V0IGFuZCByZWFsbHkgY2xlYXJseSBkb2N1bWVudGVkIGJl Zm9yZSB3ZSB3b3JyeSB0b28gbXVjaAo+IGFib3V0IHRoZSBiYWNrZW5kIGh5cGVydmlzb3Itc3Bl Y2lmaWMgc3R1ZmYuCj4gCj4gSSdtIG5vdCBzdXBlciBmYW1pbGlhciB3aXRoIHhlbi16Y29weSBh bmQgdWRtYWJ1ZiwgYnV0IGl0IHNvdW5kcyBsaWtlCj4gdGhleSdyZSBhcHByb2FjaGluZyBzaW1p bGFyIHByb2JsZW1zIGZyb20gc2xpZ2h0bHkgZGlmZmVyZW50IGRpcmVjdGlvbnMsCj4gc28gd2Ug c2hvdWxkIG1ha2Ugc3VyZSB3ZSBjYW4gY29tZSB1cCB3aXRoIHNvbWV0aGluZyB0aGF0IHNhdGlz Zmllcwo+IGV2ZXJ5b25lJ3MgcmVxdWlyZW1lbnRzLiAKPiAKPiAKPiBNYXR0Cj4gCj4gPiAKPiA+ IE9uIFdlZCwgTWFyIDE0LCAyMDE4IGF0IDk6MDMgQU0sIEdlcmQgSG9mZm1hbm4gPGtyYXhlbEBy ZWRoYXQuY29tPiB3cm90ZToKPiA+ID4gICBIaSwKPiA+ID4KPiA+ID4+IEVpdGhlciBtbG9jayBh Y2NvdW50IChiZWNhdXNlIGl0J3MgbWxvY2tlZCBkZWZhY3RvKSwgYW5kIGdldF91c2VyX3BhZ2Vz Cj4gPiA+PiB3b24ndCBkbyB0aGF0IGZvciB5b3UuCj4gPiA+Pgo+ID4gPj4gT3IgeW91IHdyaXRl IHRoZSBmdWxsLWJsb3duIHVzZXJwdHIgaW1wbGVtZW50YXRpb24sIGluY2x1ZGluZyBtbXVfbm90 aWZpZXIKPiA+ID4+IHN1cHBvcnQgKHNlZSBpOTE1IG9yIGFtZGdwdSksIGJ1dCB0aGF0IGFsc28g cmVxdWlyZXMgQ2hyaXN0aWFuIEvDtm5pZ3MKPiA+ID4+IGxhdGVzdCAtPmludmFsaWRhdGVfbWFw cGluZyBSRkMgZm9yIGRtYS1idWYgKHNpbmNlIGF0bSBleHBvcnRpbmcgdXNlcnB0cgo+ID4gPj4g YnVmZmVycyBpcyBhIG5vLWdvKS4KPiA+ID4KPiA+ID4gSSBndWVzcyBJJ2xsIGxvb2sgYXQgbWxv Y2sgYWNjb3VudGluZyBmb3Igc3RhcnRlcnMgdGhlbi4gIEVhc2llciBmb3IKPiA+ID4gbm93LCBh bmQgbGVhdmVzIHRoZSBkb29yIG9wZW4gdG8gc3dpdGNoIHRvIHVzZXJwdHIgbGF0ZXIgYXMgdGhp cyBzaG91bGQKPiA+ID4gYmUgdHJhbnNwYXJlbnQgdG8gdXNlcnNwYWNlLgo+ID4gPgo+ID4gPj4g PiBLbm93biBpc3N1ZTogIERyaXZlciBBUEkgaXNuJ3QgY29tcGxldGUgeWV0LiAgTmVlZCBhZGQg c29tZSBmbGFncywgZm9yCj4gPiA+PiA+IGV4YW1wbGUgdG8gc3VwcG9ydCByZWFkLW9ubHkgYnVm ZmVycy4KPiA+ID4+Cj4gPiA+PiBkbWEtYnVmIGhhcyBubyBjb25jZXB0IG9mIHJlYWQtb25seS4g SSBkb24ndCB0aGluayB3ZSBjYW4gZXZlbiBlbmZvcmNlCj4gPiA+PiB0aGF0IChub3QgbWFueSBp b21tdXMgY2FuIGVuZm9yY2UgdGhpcyBpaXJjKSwgc28gcHJldHR5IG11Y2ggbmVlZCB0bwo+ID4g Pj4gcmVxdWlyZSByL3cgbWVtb3J5Lgo+ID4gPgo+ID4gPiBBaCwgb2suICBKdXN0IHNhdyB0aGUg J3dyaXRlJyBhcmcgZm9yIGdldF91c2VyX3BhZ2VzX2Zhc3QgYW5kIGZpZ3VyZWQgd2UKPiA+ID4g bWlnaHQgc3VwcG9ydCB0aGF0LCBidXQgaWYgaW9tbXVzIGNhbid0IGhhbmRsZSB0aGF0IGFueXdh eSBpdCdzCj4gPiA+IHBvaW50bGVzcyBpbmRlZWQuCj4gPiA+Cj4gPiA+PiA+IENjOiBEYXZpZCBB aXJsaWUgPGFpcmxpZWRAbGludXguaWU+Cj4gPiA+PiA+IENjOiBUb21ldSBWaXpvc28gPHRvbWV1 LnZpem9zb0Bjb2xsYWJvcmEuY29tPgo+ID4gPj4gPiBTaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZt YW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KPiA+ID4+Cj4gPiA+PiBidHcgdGhlcmUncyBhbHNvIHRo ZSBoeXBlcmRtYWJ1ZiBzdHVmZiBmcm9tIHRoZSB4ZW4gZm9sa3MsIGJ1dCBpbW8gdGhlaXIKPiA+ ID4+IHNvbHV0aW9uIG9mIGZvcndhcmRpbmcgdGhlIGVudGlyZSBkbWEtYnVmIGFwaSBpcyBvdmVy IHRoZSB0b3AuIFRoaXMgaGVyZQo+ID4gPj4gbG9va3MgX211Y2hfIGJldHRlciwgcGxzIGNjIGFs bCB0aGUgaHlwZXJkbWFidWYgcGVvcGxlIG9uIHlvdXIgbmV4dAo+ID4gPj4gdmVyc2lvbi4KPiA+ ID4KPiA+ID4gRnVuIGZhY3Q6IGdvb2dsaW5nIGZvciAiaHlwZXJkbWFidWYiIGZvdW5kIG1lIHlv dXIgbWFpbCBhbmQgbm90aGluZyBlbHNlIDotbwo+ID4gPiAoVHJ5aW5nICJoeXBlciBkbWFidWYi IGluc3RlYWQgd29ya2VkIGJldHRlciB0aGVuKS4KPiA+ID4KPiA+ID4gWWVzLCB3aWxsIGNjIHRo ZW0gb24gdGhlIG5leHQgdmVyc2lvbi4gIE5vdCBzdXJlIGl0J2xsIGhlbHAgbXVjaCBvbiB4ZW4K PiA+ID4gdGhvdWdoIGR1ZSB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYmVpbmcgdmVyeSBkaWZm ZXJlbnQuICBCYXNpY2FsbHkgeGVuCj4gPiA+IG93bnMgdGhlIG1lbW9yeSwgbm90IHRoZSBrZXJu ZWwgb2YgdGhlIGNvbnRyb2wgZG9tYWluIChkb20wKSwgc28KPiA+ID4gY3JlYXRpbmcgZG1hYnVm cyBmb3IgZ3Vlc3QgbWVtb3J5IGNodW5rcyBpc24ndCB0aGF0IHNpbXBsZSAuLi4KPiA+ID4KPiA+ ID4gQWxzbyBpdCdzIG5vdCBjbGVhciB3aGVuZXZlciB0aGV5IHJlYWxseSBuZWVkIGd1ZXN0IC0+ IGd1ZXN0IGV4cG9ydHMgb3IKPiA+ID4gZ3Vlc3QgLT4gZG9tMCBleHBvcnRzLgo+ID4gPgo+ID4g Pj4gT3ZlcmFsbCBJIGxpa2UgdGhlIGlkZWEsIGJ1dCB0b28gbGF6eSB0byByZXZpZXcuCj4gPiA+ Cj4gPiA+IENvb2wuICBHZW5lcmFsIGNvbW1lbnRzIG9uIHRoZSBpZGVhIHdhcyBhbGwgSSB3YXMg bG9va2luZyBmb3IgZm9yIHRoZQo+ID4gPiBtb21lbnQuICBTcGFyZSB5b3IgcmV2aWV3IGN5Y2xl cyBmb3IgdGhlIG5leHQgdmVyc2lvbiA7KQo+ID4gPgo+ID4gPj4gT2gsIHNvbWUga3NlbGZ0ZXN0 cyBmb3IgdGhpcyBzdHVmZiB3b3VsZCBiZSBsb3ZlbHkuCj4gPiA+Cj4gPiA+IEknbGwgbG9vayBp bnRvIGl0Lgo+ID4gPgo+ID4gPiB0aGFua3MsCj4gPiA+ICAgR2VyZAo+ID4gPgo+ID4gPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiBkcmktZGV2 ZWwgbWFpbGluZyBsaXN0Cj4gPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwKPiA+IAo+ID4gCj4gPiAKPiA+IC0tIAo+ID4gRGFuaWVsIFZldHRlcgo+ID4gU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiArNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0 dHA6Ly9ibG9nLmZmd2xsLmNoCj4gCj4gLS0gCj4gTWF0dCBSb3Blcgo+IEdyYXBoaWNzIFNvZnR3 YXJlIEVuZ2luZWVyCj4gSW9URyBQbGF0Zm9ybSBFbmFibGluZyAmIERldmVsb3BtZW50Cj4gSW50 ZWwgQ29ycG9yYXRpb24KPiAoOTE2KSAzNTYtMjc5NQoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdh cmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=