From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Stach Subject: Re: about mmap dma-buf and sync Date: Fri, 21 Aug 2015 12:28:33 +0200 Message-ID: <1440152913.31432.68.camel@pengutronix.de> References: <55D50442.5080102@intel.com> <55D57837.4080301@vmware.com> <20150820145340.GA2309@gmail.com> <55D62CE0.5060904@shipmail.org> <20150820203437.GA3973@gmail.com> <55D6B633.2070103@vmware.com> 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.pengutronix.de [92.198.50.35]) by gabe.freedesktop.org (Postfix) with ESMTPS id DDD636EA1C for ; Fri, 21 Aug 2015 03:28:39 -0700 (PDT) In-Reply-To: <55D6B633.2070103@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Hellstrom Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org QW0gRnJlaXRhZywgZGVuIDIxLjA4LjIwMTUsIDA3OjI1ICswMjAwIHNjaHJpZWIgVGhvbWFzIEhl bGxzdHJvbToKPiBPbiAwOC8yMC8yMDE1IDEwOjM0IFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+ ID4gT24gVGh1LCBBdWcgMjAsIDIwMTUgYXQgMDk6Mzk6MTJQTSArMDIwMCwgVGhvbWFzIEhlbGxz dHJvbSB3cm90ZToKPiA+PiBPbiAwOC8yMC8yMDE1IDA0OjUzIFBNLCBKZXJvbWUgR2xpc3NlIHdy b3RlOgo+ID4+PiBPbiBUaHUsIEF1ZyAyMCwgMjAxNSBhdCAwODo0ODoyM0FNICswMjAwLCBUaG9t YXMgSGVsbHN0cm9tIHdyb3RlOgo+ID4+Pj4gSGksIFRpYWdvIQo+ID4+Pj4KPiA+Pj4+IE9uIDA4 LzIwLzIwMTUgMTI6MzMgQU0sIFRpYWdvIFZpZ25hdHRpIHdyb3RlOgo+ID4+Pj4+IEhleSBUaG9t YXMsIHlvdSBoYXZlbid0IGFuc3dlcmVkIG15IGVtYWlsIGFib3V0IG1ha2luZyBTWU5DXyogbWFu ZGF0b3J5Ogo+ID4+Pj4+Cj4gPj4+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNo aXZlcy9kcmktZGV2ZWwvMjAxNS1BdWd1c3QvMDg4Mzc2Lmh0bWwKPiA+Pj4+IEhtbSwgZm9yIHNv bWUgcmVhc29uIGl0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBteSBtYWlsIGFwcCwgYnV0IEkgZm91bmQg aXQKPiA+Pj4+IGluIHRoZSBhcmNoaXZlcy4gQW4gYXR0ZW1wdCB0byBleHBsYWluIHRoZSBzaXR1 YXRpb24gZnJvbSB0aGUgdm13Z2Z4Cj4gPj4+PiBwZXJzcGVjdGl2ZS4KPiA+Pj4+Cj4gPj4+PiBU aGUgZmFjdCB0aGF0IHRoZSBpbnRlcmZhY2UgaXMgZ2VuZXJpYyBtZWFucyB0aGF0IHBlb3BsZSB3 aWxsIHN0YXJ0Cj4gPj4+PiB1c2luZyBpdCBmb3IgdGhlIHplcm8tY29weSBjYXNlLiBUaGVyZSBo YXMgYmVlbiBhIGNvdXBsZSBvZiBtb3JlIG9yIGxlc3MKPiA+Pj4+IGhhY2tpc2ggYXR0ZW1wdHMg dG8gZG8gdGhpcyBiZWZvcmUsIGFuZCBpZiBpdCdzIGEgX2RyaXZlcl8gaW50ZXJmYWNlIHdlCj4g Pj4+PiBkb24ndCBuZWVkIHRvIGJlIHRoYXQgY2FyZWZ1bCBidXQgaWYgaXQgaXMgYSBfZ2VuZXJp Y18gaW50ZXJmYWNlIHdlIG5lZWQKPiA+Pj4+IHRvIGJlIHZlcnkgY2FyZWZ1bCB0byBtYWtlIGl0 IGZpdCAqYWxsKiB0aGUgaGFyZHdhcmUgb3V0IHRoZXJlIGFuZCB0aGF0Cj4gPj4+PiB3ZSBtYWtl IGFsbCBwb3RlbnRpYWwgdXNlcnMgdXNlIHRoZSBpbnRlcmZhY2UgaW4gYSB3YXkgdGhhdCBjb25m b3Jtcwo+ID4+Pj4gd2l0aCB0aGUgaW50ZXJmYWNlIHNwZWNpZmljYXRpb24uCj4gPj4+Pgo+ID4+ Pj4gV2hhdCB3aWxsIGhhcHBlbiBvdGhlcndpc2UgaXMgdGhhdCBhcHBzIHdyaXR0ZW4gZm9yIGNv aGVyZW50IGZhc3QKPiA+Pj4+IGhhcmR3YXJlIG1pZ2h0LCBmb3IgZXhhbXBsZSwgaWdub3JlIGNh bGxpbmcgdGhlIFNZTkMgYXBpLCBqdXN0IGJlY2F1c2UKPiA+Pj4+IHRoZSBhcHAgd3JpdGVyIG9u bHkgY2FyZWQgYWJvdXQgaGlzIG93biBoYXJkd2FyZSBvbiB3aGljaCB0aGUgYXBwIHdvcmtzCj4g Pj4+PiBmaW5lLiBUaGF0IHdvdWxkIGZhaWwgbWlzZXJhYmx5IGlmIHRoZSBzYW1lIGFwcCB3YXMg cnVuIG9uIGluY29oZXJlbnQKPiA+Pj4+IGhhcmR3YXJlLCBvciB0aGUgaW5jb2hlcmVudCBoYXJk d2FyZSBkcml2ZXIgbWFpbnRhaW5lcnMgd291bGQgYmUgZm9yY2VkCj4gPj4+PiB0byBiYXNlIGFu IGltcGxlbWVudGF0aW9uIG9uIHBhZ2UtZmF1bHRzIHdoaWNoIHdvdWxkIGJlIHZlcnkgc2xvdy4K PiA+Pj4+Cj4gPj4+PiBTbyBhc3N1bWUgdGhlIGZvbGxvd2luZyB1c2UgY2FzZTogQW4gYXBwIHVw ZGF0ZXMgYSAxMHgxMCBhcmVhIHVzaW5nIHRoZQo+ID4+Pj4gQ1BVIG9uIGEgMTYwMHgxMjAwIGRt YS1idWYsIGFuZCBpdCB3aWxsIHRoZW4gdXNlIHRoZSBkbWEtYnVmIGZvcgo+ID4+Pj4gdGV4dHVy aW5nLiBPbiBzb21lIGhhcmR3YXJlIHRoZSBkbWEtYnVmIG1pZ2h0IGJlIHRpbGVkIGluIGEgdmVy eQo+ID4+Pj4gc3BlY2lmaWMgd2F5LCBvbiB2bXdnZnggdGhlIGRtYS1idWYgaXMgYSBHUFUgYnVm ZmVyIG9uIHRoZSBob3N0LCBvbmx5Cj4gPj4+PiBhY2Nlc3NpYmxlIHVzaW5nIERNQS4gT24gdm13 Z2Z4IHRoZSBTWU5DIG9wZXJhdGlvbiBtdXN0IGNhcnJ5IG91dCBhCj4gPj4+PiAxMHgxMCBETUEg ZnJvbSB0aGUgaG9zdCBHUFUgYnVmZmVyIHRvIGEgZ3Vlc3QgQ1BVIGJ1ZmZlciBiZWZvcmUgdGhl IENQVQo+ID4+Pj4gd3JpdGUgYW5kIGEgRE1BIGJhY2sgYWdhaW4gYWZ0ZXIgdGhlIHdyaXRlLCBi ZWZvcmUgR1BVIHVzYWdlLiBPbiB0aGUKPiA+Pj4+IHRpbGVkIGFyY2hpdGVjdHVyZSB0aGUgU1lO QyBvcGVyYXRpb24gbXVzdCB1bnRpbGUgYmVmb3JlIENQVSBhY2Nlc3MgYW5kCj4gPj4+PiBwcm9i YWJseSB0aWxlIGFnYWluIGJlZm9yZSBHUFUgYWNjZXNzLgo+ID4+Pj4KPiA+Pj4+IElmIHdlIG5v dyBoYXZlIGEgb25lLWRpbWVuc2lvbmFsIFNZTkMgYXBpLCBpbiB0aGlzIHBhcnRpY3VsYXIgY2Fz ZSB3ZSdkCj4gPj4+PiBlaXRoZXIgbmVlZCB0byBzeW5jIGEgZmFyIHRvbyBsYXJnZSBhcmVhICgx NjAweDEwKSBvciBjYWxsIFNZTkMgMTAgdGltZXMKPiA+Pj4+IGJlZm9yZSB3cml0aW5nLCBhbmQg dGhlbiBhZ2FpbiBhZnRlciB3cml0aW5nLiBJZiB0aGUgYXBwIGZvcmdvdCB0byBjYWxsCj4gPj4+ PiBTWU5DIHdlIG11c3QgZXJyb3IuCj4gPj4+Pgo+ID4+Pj4gU28gdG8gc3VtbWFyaXplLCB0aGUg ZmFjdCB0aGF0IHRoZSBpbnRlcmZhY2UgaXMgZ2VuZXJpYyBJTU8gbWVhbnM6Cj4gPj4+Pgo+ID4+ Pj4gMSkgQW55IHVzZXIgbXVzdCBiZSBhYmxlIHRvIG1ha2UgdmFsaWQgYXNzdW1wdGlvbnMgYWJv dXQgdGhlIGludGVybmFsCj4gPj4+PiBmb3JtYXQgb2YgdGhlIGRtYS1idWYuICh1bnRpbGVkLCBj b2xvciBmb3JtYXQsIHN0cmlkZSBldGMuKQo+ID4+Pj4gMikgQW55IHVzZXIgKm11c3QqIGNhbGwg U1lOQyBiZWZvcmUgYW5kIGFmdGVyIENQVSBhY2Nlc3MuIE9uIGNvaGVyZW50Cj4gPj4+PiBhcmNo aXRlY3R1cmVzLCB0aGUgU1lOQyBpcyBhIE5VTEwgb3BlcmF0aW9uIGFueXdheSwgYW5kIHRoYXQg c2hvdWxkIGJlCj4gPj4+PiBkb2N1bWVudGVkIHNvbWV3aGVyZSBzbyB0aGF0IG1haW50YWluZXJz IG9mIGRyaXZlcnMgb2YgdW5jb2hlcmVudAo+ID4+Pj4gYXJjaGl0ZWN0dXJlcyBoYXZlIHNvbWV3 aGVyZSB0byBwb2ludCB0aGVpciBmaW5nZXJzLgo+ID4+Pj4gMykgRHJpdmVyLXNwZWNpZmljIGlt cGxlbWVudGF0aW9ucyBtdXN0IGJlIGFsbG93ZWQgdG8gZXJyb3IgKHNlZ2ZhdWx0KQo+ID4+Pj4g aWYgU1lOQyBoYXMgbm90IGJlZW4gdXNlZC4KPiA+Pj4gSSB0aGluayBoZXJlIHlvdSBhcmUgdG9v IGxheCwgdGhlIGNvbW1vbiBjb2RlIG11c3Qgc2VnZmF1bHQgb3IKPiA+Pj4gZXJyb3IgYmFkbHkg aWYgU1lOQyBoYXMgbm90IGJlZW4gdXNlIGluIGFsbCBjYXNlcyBldmVuIG9uIGNhY2hlCj4gPj4+ IGNvaGVyZW50IGFyY2guIFRoZSBkZXZpY2UgZHJpdmVyIHN5bmMgY2FsbGJhY2sgY2FuIHN0aWxs IGJlIGEKPiA+Pj4gbm8gb3BlcmF0aW9uLiBCdXQgaSB0aGluayB0aGF0IHdlIG5lZWQgdG8gaW5z aXN0IHN0cm9uZ2x5IG9uIGEKPiA+Pj4gcHJvcGVyIHN5bmMgY2FsbCBiZWluZyBtYWRlIChhbmQg d2Ugc2hvdWxkIGZvcmJpZCBlbXB0eSBhcmVhCj4gPj4+IHN5bmMgY2FsbCkuIFRoaXMgd291bGQg YmUgdGhlIG9ubHkgd2F5IHRvIG1ha2Ugc3VyZSB1c2Vyc3BhY2UKPiA+Pj4gYmVoYXZlIHByb3Bl cmx5IGFzIG90aGVyd2lzZSB3ZSBlbmR1cCBpbiB0aGUgc2l0dWF0aW9uIHlvdSB3ZXJlCj4gPj4+ IGRlc2NyaWJpbmcgYWJvdmUsIHdoZXJlIHRoZSBhcHAgaXMgZGVzaWduIG9uIGEgY2FjaGUgY29o ZXJlbnQKPiA+Pj4gYXJjaCBhbmQgd29ya3MgZmluZSB0aGVyZSBidXQgYnJva2UgaW4gc3VidGxl IHdheSBvbiBub24gY2FjaGUKPiA+Pj4gY29oZXJlbnQgYXJjaCBhbmQgYXBwIGRldmVsb3BlciBp cyBjbHVlbGVzcyBvZiB3aHkuCj4gPj4+Cj4gPj4+IEkganVzdCBkbyBub3QgdHJ1c3QgdXNlcnNw YWNlLgo+ID4+IEkgYWdyZWUgYW5kIGlkZWFsbHkgaSdkIHdhbnQgaXQgdGhpcyB3YXkgYXMgd2Vs bC4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdAo+ID4+IHBvc3NpYmxlPyBDYW4gdGhpcyBiZSBkb25l IHdpdGhvdXQgYSBmYXVsdCgpIGhhbmRsZXIgaW4gdGhlIGdlbmVyaWMKPiA+PiBrZXJuZWwgY29k ZT8KPiA+Pgo+ID4+Pj4gNCkgVGhlIHVzZS1jYXNlIHN0YXRlZCBhYm92ZSBjbGVhcmx5IHNob3dz IHRoZSBiZW5lZml0IG9mIGEKPiA+Pj4+IDItZGltZW5zaW9uYWwgc3luYyBpbnRlcmZhY2UgKHdl IHdhbnQgdG8gc3luYyB0aGUgMTB4MTAgcmVnaW9uKSwgYnV0Cj4gPj4+PiB3aGF0IGlmIHNvbWVv bmUgaW4gdGhlIGZ1dHVyZSB3YW50cyB0byB1c2UgdGhpcyBpbnRlcmZhY2UgZm9yIGEgM0QKPiA+ Pj4+IHRleHR1cmU/IFdpbGwgYSAyRCBzeW5jIHN1ZmZpY2U/IENhbiB3ZSBtYWtlIHRoZSBTWU5D IGludGVyZmFjZQo+ID4+Pj4gZXh0ZW5kYWJsZSBpbiBhIHdheSB0aGF0IGFuIGVudW0gc3luY190 eXBlIG1lbWJlciBkZWZpbmVzIHRoZSBsYXlvdXQgb2YKPiA+Pj4+IHRoZSBhcmd1bWVudCwgYW5k IGluaXRpYWxseSB3ZSBpbXBsZW1lbnQgb25seSAxZCwgMmQgc3luYywgbGVhdmluZyAzZAo+ID4+ Pj4gZm9yIHRoZSBmdXR1cmU/Cj4gPj4+Pgo+ID4+Pj4gQWxzbywgSSBhZ3JlZSB0aGVyZSBpcyBw cm9iYWJseSBubyBnb29kIHdheSB0byBnZW5lcmljYWxseSBpbXBsZW1lbnQgYW4KPiA+Pj4+IGVy cm9yIGlmIFNZTkMgaGFzIG5vdCBiZWVuIGNhbGxlZC4gVGhhdCBuZWVkcyB0byBiZSBsZWZ0IGFz IGFuIG9wdGlvbiB0bwo+ID4+Pj4gZHJpdmVycy4KPiA+Pj4gSSB0aGluayB0aGVyZSBpcywganVz dCBmb3JiaWQgYW55IGZ1cnRoZXIgdXNlIG9mIHRoZSBkbWEgYnVmZmVyLCBtYXJrCj4gPj4+IGl0 IGFzIGludmFsaWQgYW5kIHByaW50ayBhIGJpZyBlcnJvci4gVXNlcnNwYWNlIGFwcCBkZXZlbG9w ZXIgd2lsbAo+ID4+PiBxdWlja2x5IHNlZSB0aGF0IHNvbWV0aGluZyBpcyB3cm9uZyBhbmQgbG9v a2luZyBhdCBrZXJuZWwgbG9nIHNob3VsZAo+ID4+PiBleHBsYWluIHdoeS4KPiA+PiBUaGUgcHJv YmxlbSBpcyBpZiBzb21lb25lIGNhbGxzIG1tYXAoKSBhbmQgdGhlbiBkZWNpZGVzIHRvIG5vdCBh Y2Nlc3MKPiA+PiB0aGUgYnVmZmVyIGJlZm9yZSBtdW5tYXAoKSBvciBHUFUgdXNhZ2UuIEhvdyBk byB3ZSByZWNvZ25pemUgdGhhdCBjYXNlCj4gPj4gYW5kIHNlcGFyYXRlIGl0IGZyb20gYSBDUFUg YWNjZXNzIG9jY3VyZWQgb3V0c2lkZSBhIHN5bmM/IFdlIGNvdWxkLCBhcwo+ID4+IG1lbnRpb25l ZCBhYm92ZSBoYXZlIGEgZmF1bHQoKSBoYW5kbGVyIGluIHRoZSBnZW5lcmljIGtlcm5lbCBjb2Rl IGFuZAo+ID4+IG1ha2Ugc3VyZSBkcml2ZXJzIGRvbid0IHBvcHVsYXRlIFBURXMgdW50aWwgdGhl IGZpcnN0IGZhdWx0KCkuIEFub3RoZXIKPiA+PiBvcHRpb24gd291bGQgYmUgdG8gc2NhbiBhbGwg UFRFcyBmb3IgYW4gImFjY2Vzc2VkIiBmbGFnLCBidXQgSSdtIG5vdAo+ID4+IGV2ZW4gc3VyZSBh bGwgQ1BVIGFyY2hpdGVjdHVyZXMgaGF2ZSBzdWNoIGEgZmxhZz8KPiA+Pgo+ID4+IEJ1dCB0aGVy ZSBtaWdodCBiZSBhIHNpbXBsZXIgc29sdXRpb24gdGhhdCBJIGhhdmUgb3Zlcmxvb2tlZD8KPiA+ IEFsbCBhcmNoIGhhdmUgYSBkaXJ0eSBmbGFnLCBzbyB5b3UgY291bGQgY2hlY2sgdGhhdCwgYXMg YWxsIHdlCj4gPiByZWFsbHkgY2FyZSBhYm91dCBpcyBDUFUgd3JpdGUgYWNjZXNzLiBTbyBhbGwg eW91IG5lZWQgaXMgY2xlYXJpbmcKPiA+IHRoZSBkaXJ0eSBiaXQgYWZ0ZXIgZWFjaCBzdWNjZXNz ZnVsbCBHUFUgY29tbWFuZCBzdHJlYW0gaW9jdGwKPiA+IGFuZCBjaGVja2luZyB0aGF0IG5vIGRp cnR5IGJpdCBpcyBzZXQgaW4gYSByZWdpb24gbm90IGNvdmVyIGJ5Cj4gPiBhIGZsdXNoKCkuIE5v dGUgdGhhdCB0aGUgY2xlYXIgYW5kIGNoZWNrIGNhbiBoYXBwZW4gaW4gdGhlIHNhbWUKPiA+IGZ1 bmN0aW9uIGFzIHBhcnQgb2YgYnVmZmVyIHZhbGlkYXRpb24gZm9yIHRoZSBHUFUgY29tbWFuZCBz dHJlYW0uCj4gCj4gQWN0dWFsbHksIEkgZG8gdGhpbmsgd2UgY2FyZSBhYm91dCByZWFkaW5nIGFz IHdlbGwsIHNpbmNlIHJlYWRpbmcKPiB3aXRob3V0IGZsdXNoaW5nIGFueXRoaW5nIHdyaXR0ZW4g YnkgdGhlIEdQVSB3aWxsCj4geWllbGQgZ2FyYmFnZSBvbiBhIG5vbi1jb2hlcmVudCBhcmNoaXRl Y3R1cmUuIEluc3RlYWQgd2UgbWlnaHQgY2hlY2sgZm9yCj4gdGhlIFBBR0VfQUNDRVNTRUQgYml0 Lgo+IAo+IFNvIHRoZSBmdWxsIHZlcnNpb24gb2YgdGhpcyB3b3VsZCBrZWVwIHRyYWNrIG9mIGFs bCBzeW5jZWQgcmVnaW9ucyBhbmQKPiBhdCBidWZmZXIgdmFsaWRhdGlvbiB0aW1lLCBvciB1bm1h cCB0aW1lIGVycm9yIGlmIHRoZXJlCj4gaXMgYSBwYWdlIGNvbXBsZXRlbHkgb3V0c2lkZSB0aGUg dW5pb24gb2YgYWxsIHN5bmNlZCByZWdpb25zIGluIGFueSBWTUEKPiBiZWxvbmdpbmcgdG8gdGhl IGRtYS1idWYgYWRkcmVzcyBzcGFjZSwgdGhlbiB1bm1hcmsgYWxsIGFjY2Vzc2VkIFBURXMKPiBh bmQgaW52YWxpZGF0ZSBUTEJzIGFjY29yZGluZ2x5LCB0eXBpY2FsbHkgY2F1c2luZyBhIGdsb2Jh bCBUTEIgZmx1c2guCj4gWWVhaCwgd2UgY291bGQgcHJvYmFibHkgcHV0IHRvZ2V0aGVyIGEgaGVs cGVyIGZ1bmN0aW9uIHRoYXQgZG9lcyB0aGlzLAo+IGJ1dCBpdCB3aWxsIGJlIGV4cGVuc2l2ZSB0 byBydW4gYW5kIHRoZSB3aG9sZSBwb2ludCBvZiB0aGlzIEFQSSBpcyB0byBiZQo+IGFibGUgdG8g aW1wcm92ZSBwZXJmb3JtYW5jZS4KPiAKPiBJTU8gd2Ugc2hvdWxkIHByb2JhYmx5IGRvIHRoaXMg YW5kIGFmdGVyIHJlbGV2YW50IHBlcmZvcm1hbmNlIHRlc3RpbmcKPiBkZWNpZGUgd2hldGhlciB0 byBlaXRoZXIgZXhwb3NlIGEgd2F5IHRvIHR1cm4gaXQgb2ZmLCBlaXRoZXIgdXNpbmcgYQo+IGNv bXBpbGUtdGltZSBvcHRpb24gb3IgcnVuLXRpbWUsIGxpa2UgYSBmbGFnIGluIHRoZSBTWU5DIGlv Y3RsLgo+IApDYW4ndCB3ZSBqdXN0IHNwZWNpZnkgdGhhdCBhbnkgYWNjZXNzIHdpdGhvdXQgYSBT WU5DIG1heSB5aWVsZCB1bmRlZmluZWQKcmVzdWx0cz8gQSBzZWdmYXVsdCBpcyBvbmUgb2YgdGhl IG5pY2VyIHJlYWN0aW9ucyBpbiB0aGF0IGNhc2UgYW5kCnRvdGFsbHkgdmFsaWQuCgpJIGRvbid0 IHRoaW5rIHdlIHdhbnQgdG8gc2xvdyBkb3duIHRoZSBjb21tb24gcGF0aCBieSBQVEUgZmlkZGxp bmcganVzdAp0byB2YWxpZGF0ZSB1c2Vyc3BhY2UgaW5wdXQuIEJ1dCBpdCBtYXkgYmUgcG9zc2li bGUgdG8gaGF2ZSBhIGRlYnVnCm9wdGlvbiB3aGVyZSB3ZSBqdXN0IGV4cG9zZSBhbiBleHBsaWNp dCBub24tY29oZXJlbnQgY29weSBvZiB0aGUgZG1hLWJ1Zgp0aHJvdWdoIG1tYXAgYW5kIG9ubHkg Y29weSBkYXRhIHRvIHRoZSByZWFsIGJ1ZmZlciBvbiBTWU5DLiBUaGVuIHNwZWNpZnkKdGhhdCBh biBhcHBsaWNhdGlvbiBtdXN0IHdvcmsgd2l0aCB0aGlzIG9wdGlvbiBlbmFibGVkLCBvciBpdCBp c24ndApjb25mb3JtaW5nIHRvIHRoZSBzcGVjLgoKUmVnYXJkcywKTHVjYXMKCi0tIApQZW5ndXRy b25peCBlLksuICAgICAgICAgICAgIHwgTHVjYXMgU3RhY2ggICAgICAgICAgICAgICAgIHwKSW5k dXN0cmlhbCBMaW51eCBTb2x1dGlvbnMgICB8IGh0dHA6Ly93d3cucGVuZ3V0cm9uaXguZGUvICB8 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=