From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: about mmap dma-buf and sync Date: Fri, 21 Aug 2015 12:51:37 +0200 Message-ID: <55D702B9.2060904@vmware.com> 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> <1440152913.31432.68.camel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp-outbound-1.vmware.com (smtp-outbound-1.vmware.com [208.91.2.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id E48BE6E0A4 for ; Fri, 21 Aug 2015 03:51:44 -0700 (PDT) In-Reply-To: <1440152913.31432.68.camel@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lucas Stach Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gMDgvMjEvMjAxNSAxMjoyOCBQTSwgTHVjYXMgU3RhY2ggd3JvdGU6Cj4gQW0gRnJlaXRhZywg ZGVuIDIxLjA4LjIwMTUsIDA3OjI1ICswMjAwIHNjaHJpZWIgVGhvbWFzIEhlbGxzdHJvbToKPj4g T24gMDgvMjAvMjAxNSAxMDozNCBQTSwgSmVyb21lIEdsaXNzZSB3cm90ZToKPj4+IE9uIFRodSwg QXVnIDIwLCAyMDE1IGF0IDA5OjM5OjEyUE0gKzAyMDAsIFRob21hcyBIZWxsc3Ryb20gd3JvdGU6 Cj4+Pj4gT24gMDgvMjAvMjAxNSAwNDo1MyBQTSwgSmVyb21lIEdsaXNzZSB3cm90ZToKPj4+Pj4g T24gVGh1LCBBdWcgMjAsIDIwMTUgYXQgMDg6NDg6MjNBTSArMDIwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPj4+Pj4+IEhpLCBUaWFnbyEKPj4+Pj4+Cj4+Pj4+PiBPbiAwOC8yMC8yMDE1IDEy OjMzIEFNLCBUaWFnbyBWaWduYXR0aSB3cm90ZToKPj4+Pj4+PiBIZXkgVGhvbWFzLCB5b3UgaGF2 ZW4ndCBhbnN3ZXJlZCBteSBlbWFpbCBhYm91dCBtYWtpbmcgU1lOQ18qIG1hbmRhdG9yeToKPj4+ Pj4+Pgo+Pj4+Pj4+IGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/dT1o dHRwLTNBX19saXN0cy5mcmVlZGVza3RvcC5vcmdfYXJjaGl2ZXNfZHJpLTJEZGV2ZWxfMjAxNS0y REF1Z3VzdF8wODgzNzYuaHRtbCZkPUJRSUNhUSZjPVNxY2wwRXo2TTBYOGFlTTY3TEtJaURKQVhW ZUF3LVlpaFZNTnRYdC11RXMmcj12cHVrUGtCdHBvTlFwMklVS3VGdmlPbVBOWVdWS21lbjNKZWV1 NTV6bUVBJm09UVVqQW1Gb1lPVXdCU191Q1FjcDRSaFdOZC1MYTRDOG5rRk8xeHVmUERpMCZzPURJ YU9fUFdITHB0N2FfTlkwVEw5WExRamVXWFRXLWlQSVdPLXZsTjZCWUkmZT0gCj4+Pj4+PiBIbW0s IGZvciBzb21lIHJlYXNvbiBpdCBkb2Vzbid0IHNob3cgdXAgaW4gbXkgbWFpbCBhcHAsIGJ1dCBJ IGZvdW5kIGl0Cj4+Pj4+PiBpbiB0aGUgYXJjaGl2ZXMuIEFuIGF0dGVtcHQgdG8gZXhwbGFpbiB0 aGUgc2l0dWF0aW9uIGZyb20gdGhlIHZtd2dmeAo+Pj4+Pj4gcGVyc3BlY3RpdmUuCj4+Pj4+Pgo+ Pj4+Pj4gVGhlIGZhY3QgdGhhdCB0aGUgaW50ZXJmYWNlIGlzIGdlbmVyaWMgbWVhbnMgdGhhdCBw ZW9wbGUgd2lsbCBzdGFydAo+Pj4+Pj4gdXNpbmcgaXQgZm9yIHRoZSB6ZXJvLWNvcHkgY2FzZS4g VGhlcmUgaGFzIGJlZW4gYSBjb3VwbGUgb2YgbW9yZSBvciBsZXNzCj4+Pj4+PiBoYWNraXNoIGF0 dGVtcHRzIHRvIGRvIHRoaXMgYmVmb3JlLCBhbmQgaWYgaXQncyBhIF9kcml2ZXJfIGludGVyZmFj ZSB3ZQo+Pj4+Pj4gZG9uJ3QgbmVlZCB0byBiZSB0aGF0IGNhcmVmdWwgYnV0IGlmIGl0IGlzIGEg X2dlbmVyaWNfIGludGVyZmFjZSB3ZSBuZWVkCj4+Pj4+PiB0byBiZSB2ZXJ5IGNhcmVmdWwgdG8g bWFrZSBpdCBmaXQgKmFsbCogdGhlIGhhcmR3YXJlIG91dCB0aGVyZSBhbmQgdGhhdAo+Pj4+Pj4g d2UgbWFrZSBhbGwgcG90ZW50aWFsIHVzZXJzIHVzZSB0aGUgaW50ZXJmYWNlIGluIGEgd2F5IHRo YXQgY29uZm9ybXMKPj4+Pj4+IHdpdGggdGhlIGludGVyZmFjZSBzcGVjaWZpY2F0aW9uLgo+Pj4+ Pj4KPj4+Pj4+IFdoYXQgd2lsbCBoYXBwZW4gb3RoZXJ3aXNlIGlzIHRoYXQgYXBwcyB3cml0dGVu IGZvciBjb2hlcmVudCBmYXN0Cj4+Pj4+PiBoYXJkd2FyZSBtaWdodCwgZm9yIGV4YW1wbGUsIGln bm9yZSBjYWxsaW5nIHRoZSBTWU5DIGFwaSwganVzdCBiZWNhdXNlCj4+Pj4+PiB0aGUgYXBwIHdy aXRlciBvbmx5IGNhcmVkIGFib3V0IGhpcyBvd24gaGFyZHdhcmUgb24gd2hpY2ggdGhlIGFwcCB3 b3Jrcwo+Pj4+Pj4gZmluZS4gVGhhdCB3b3VsZCBmYWlsIG1pc2VyYWJseSBpZiB0aGUgc2FtZSBh cHAgd2FzIHJ1biBvbiBpbmNvaGVyZW50Cj4+Pj4+PiBoYXJkd2FyZSwgb3IgdGhlIGluY29oZXJl bnQgaGFyZHdhcmUgZHJpdmVyIG1haW50YWluZXJzIHdvdWxkIGJlIGZvcmNlZAo+Pj4+Pj4gdG8g YmFzZSBhbiBpbXBsZW1lbnRhdGlvbiBvbiBwYWdlLWZhdWx0cyB3aGljaCB3b3VsZCBiZSB2ZXJ5 IHNsb3cuCj4+Pj4+Pgo+Pj4+Pj4gU28gYXNzdW1lIHRoZSBmb2xsb3dpbmcgdXNlIGNhc2U6IEFu IGFwcCB1cGRhdGVzIGEgMTB4MTAgYXJlYSB1c2luZyB0aGUKPj4+Pj4+IENQVSBvbiBhIDE2MDB4 MTIwMCBkbWEtYnVmLCBhbmQgaXQgd2lsbCB0aGVuIHVzZSB0aGUgZG1hLWJ1ZiBmb3IKPj4+Pj4+ IHRleHR1cmluZy4gT24gc29tZSBoYXJkd2FyZSB0aGUgZG1hLWJ1ZiBtaWdodCBiZSB0aWxlZCBp biBhIHZlcnkKPj4+Pj4+IHNwZWNpZmljIHdheSwgb24gdm13Z2Z4IHRoZSBkbWEtYnVmIGlzIGEg R1BVIGJ1ZmZlciBvbiB0aGUgaG9zdCwgb25seQo+Pj4+Pj4gYWNjZXNzaWJsZSB1c2luZyBETUEu IE9uIHZtd2dmeCB0aGUgU1lOQyBvcGVyYXRpb24gbXVzdCBjYXJyeSBvdXQgYQo+Pj4+Pj4gMTB4 MTAgRE1BIGZyb20gdGhlIGhvc3QgR1BVIGJ1ZmZlciB0byBhIGd1ZXN0IENQVSBidWZmZXIgYmVm b3JlIHRoZSBDUFUKPj4+Pj4+IHdyaXRlIGFuZCBhIERNQSBiYWNrIGFnYWluIGFmdGVyIHRoZSB3 cml0ZSwgYmVmb3JlIEdQVSB1c2FnZS4gT24gdGhlCj4+Pj4+PiB0aWxlZCBhcmNoaXRlY3R1cmUg dGhlIFNZTkMgb3BlcmF0aW9uIG11c3QgdW50aWxlIGJlZm9yZSBDUFUgYWNjZXNzIGFuZAo+Pj4+ Pj4gcHJvYmFibHkgdGlsZSBhZ2FpbiBiZWZvcmUgR1BVIGFjY2Vzcy4KPj4+Pj4+Cj4+Pj4+PiBJ ZiB3ZSBub3cgaGF2ZSBhIG9uZS1kaW1lbnNpb25hbCBTWU5DIGFwaSwgaW4gdGhpcyBwYXJ0aWN1 bGFyIGNhc2Ugd2UnZAo+Pj4+Pj4gZWl0aGVyIG5lZWQgdG8gc3luYyBhIGZhciB0b28gbGFyZ2Ug YXJlYSAoMTYwMHgxMCkgb3IgY2FsbCBTWU5DIDEwIHRpbWVzCj4+Pj4+PiBiZWZvcmUgd3JpdGlu ZywgYW5kIHRoZW4gYWdhaW4gYWZ0ZXIgd3JpdGluZy4gSWYgdGhlIGFwcCBmb3Jnb3QgdG8gY2Fs bAo+Pj4+Pj4gU1lOQyB3ZSBtdXN0IGVycm9yLgo+Pj4+Pj4KPj4+Pj4+IFNvIHRvIHN1bW1hcml6 ZSwgdGhlIGZhY3QgdGhhdCB0aGUgaW50ZXJmYWNlIGlzIGdlbmVyaWMgSU1PIG1lYW5zOgo+Pj4+ Pj4KPj4+Pj4+IDEpIEFueSB1c2VyIG11c3QgYmUgYWJsZSB0byBtYWtlIHZhbGlkIGFzc3VtcHRp b25zIGFib3V0IHRoZSBpbnRlcm5hbAo+Pj4+Pj4gZm9ybWF0IG9mIHRoZSBkbWEtYnVmLiAodW50 aWxlZCwgY29sb3IgZm9ybWF0LCBzdHJpZGUgZXRjLikKPj4+Pj4+IDIpIEFueSB1c2VyICptdXN0 KiBjYWxsIFNZTkMgYmVmb3JlIGFuZCBhZnRlciBDUFUgYWNjZXNzLiBPbiBjb2hlcmVudAo+Pj4+ Pj4gYXJjaGl0ZWN0dXJlcywgdGhlIFNZTkMgaXMgYSBOVUxMIG9wZXJhdGlvbiBhbnl3YXksIGFu ZCB0aGF0IHNob3VsZCBiZQo+Pj4+Pj4gZG9jdW1lbnRlZCBzb21ld2hlcmUgc28gdGhhdCBtYWlu dGFpbmVycyBvZiBkcml2ZXJzIG9mIHVuY29oZXJlbnQKPj4+Pj4+IGFyY2hpdGVjdHVyZXMgaGF2 ZSBzb21ld2hlcmUgdG8gcG9pbnQgdGhlaXIgZmluZ2Vycy4KPj4+Pj4+IDMpIERyaXZlci1zcGVj aWZpYyBpbXBsZW1lbnRhdGlvbnMgbXVzdCBiZSBhbGxvd2VkIHRvIGVycm9yIChzZWdmYXVsdCkK Pj4+Pj4+IGlmIFNZTkMgaGFzIG5vdCBiZWVuIHVzZWQuCj4+Pj4+IEkgdGhpbmsgaGVyZSB5b3Ug YXJlIHRvbyBsYXgsIHRoZSBjb21tb24gY29kZSBtdXN0IHNlZ2ZhdWx0IG9yCj4+Pj4+IGVycm9y IGJhZGx5IGlmIFNZTkMgaGFzIG5vdCBiZWVuIHVzZSBpbiBhbGwgY2FzZXMgZXZlbiBvbiBjYWNo ZQo+Pj4+PiBjb2hlcmVudCBhcmNoLiBUaGUgZGV2aWNlIGRyaXZlciBzeW5jIGNhbGxiYWNrIGNh biBzdGlsbCBiZSBhCj4+Pj4+IG5vIG9wZXJhdGlvbi4gQnV0IGkgdGhpbmsgdGhhdCB3ZSBuZWVk IHRvIGluc2lzdCBzdHJvbmdseSBvbiBhCj4+Pj4+IHByb3BlciBzeW5jIGNhbGwgYmVpbmcgbWFk ZSAoYW5kIHdlIHNob3VsZCBmb3JiaWQgZW1wdHkgYXJlYQo+Pj4+PiBzeW5jIGNhbGwpLiBUaGlz IHdvdWxkIGJlIHRoZSBvbmx5IHdheSB0byBtYWtlIHN1cmUgdXNlcnNwYWNlCj4+Pj4+IGJlaGF2 ZSBwcm9wZXJseSBhcyBvdGhlcndpc2Ugd2UgZW5kdXAgaW4gdGhlIHNpdHVhdGlvbiB5b3Ugd2Vy ZQo+Pj4+PiBkZXNjcmliaW5nIGFib3ZlLCB3aGVyZSB0aGUgYXBwIGlzIGRlc2lnbiBvbiBhIGNh Y2hlIGNvaGVyZW50Cj4+Pj4+IGFyY2ggYW5kIHdvcmtzIGZpbmUgdGhlcmUgYnV0IGJyb2tlIGlu IHN1YnRsZSB3YXkgb24gbm9uIGNhY2hlCj4+Pj4+IGNvaGVyZW50IGFyY2ggYW5kIGFwcCBkZXZl bG9wZXIgaXMgY2x1ZWxlc3Mgb2Ygd2h5Lgo+Pj4+Pgo+Pj4+PiBJIGp1c3QgZG8gbm90IHRydXN0 IHVzZXJzcGFjZS4KPj4+PiBJIGFncmVlIGFuZCBpZGVhbGx5IGknZCB3YW50IGl0IHRoaXMgd2F5 IGFzIHdlbGwuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQKPj4+PiBwb3NzaWJsZT8gQ2FuIHRoaXMg YmUgZG9uZSB3aXRob3V0IGEgZmF1bHQoKSBoYW5kbGVyIGluIHRoZSBnZW5lcmljCj4+Pj4ga2Vy bmVsIGNvZGU/Cj4+Pj4KPj4+Pj4+IDQpIFRoZSB1c2UtY2FzZSBzdGF0ZWQgYWJvdmUgY2xlYXJs eSBzaG93cyB0aGUgYmVuZWZpdCBvZiBhCj4+Pj4+PiAyLWRpbWVuc2lvbmFsIHN5bmMgaW50ZXJm YWNlICh3ZSB3YW50IHRvIHN5bmMgdGhlIDEweDEwIHJlZ2lvbiksIGJ1dAo+Pj4+Pj4gd2hhdCBp ZiBzb21lb25lIGluIHRoZSBmdXR1cmUgd2FudHMgdG8gdXNlIHRoaXMgaW50ZXJmYWNlIGZvciBh IDNECj4+Pj4+PiB0ZXh0dXJlPyBXaWxsIGEgMkQgc3luYyBzdWZmaWNlPyBDYW4gd2UgbWFrZSB0 aGUgU1lOQyBpbnRlcmZhY2UKPj4+Pj4+IGV4dGVuZGFibGUgaW4gYSB3YXkgdGhhdCBhbiBlbnVt IHN5bmNfdHlwZSBtZW1iZXIgZGVmaW5lcyB0aGUgbGF5b3V0IG9mCj4+Pj4+PiB0aGUgYXJndW1l bnQsIGFuZCBpbml0aWFsbHkgd2UgaW1wbGVtZW50IG9ubHkgMWQsIDJkIHN5bmMsIGxlYXZpbmcg M2QKPj4+Pj4+IGZvciB0aGUgZnV0dXJlPwo+Pj4+Pj4KPj4+Pj4+IEFsc28sIEkgYWdyZWUgdGhl cmUgaXMgcHJvYmFibHkgbm8gZ29vZCB3YXkgdG8gZ2VuZXJpY2FsbHkgaW1wbGVtZW50IGFuCj4+ Pj4+PiBlcnJvciBpZiBTWU5DIGhhcyBub3QgYmVlbiBjYWxsZWQuIFRoYXQgbmVlZHMgdG8gYmUg bGVmdCBhcyBhbiBvcHRpb24gdG8KPj4+Pj4+IGRyaXZlcnMuCj4+Pj4+IEkgdGhpbmsgdGhlcmUg aXMsIGp1c3QgZm9yYmlkIGFueSBmdXJ0aGVyIHVzZSBvZiB0aGUgZG1hIGJ1ZmZlciwgbWFyawo+ Pj4+PiBpdCBhcyBpbnZhbGlkIGFuZCBwcmludGsgYSBiaWcgZXJyb3IuIFVzZXJzcGFjZSBhcHAg ZGV2ZWxvcGVyIHdpbGwKPj4+Pj4gcXVpY2tseSBzZWUgdGhhdCBzb21ldGhpbmcgaXMgd3Jvbmcg YW5kIGxvb2tpbmcgYXQga2VybmVsIGxvZyBzaG91bGQKPj4+Pj4gZXhwbGFpbiB3aHkuCj4+Pj4g VGhlIHByb2JsZW0gaXMgaWYgc29tZW9uZSBjYWxscyBtbWFwKCkgYW5kIHRoZW4gZGVjaWRlcyB0 byBub3QgYWNjZXNzCj4+Pj4gdGhlIGJ1ZmZlciBiZWZvcmUgbXVubWFwKCkgb3IgR1BVIHVzYWdl LiBIb3cgZG8gd2UgcmVjb2duaXplIHRoYXQgY2FzZQo+Pj4+IGFuZCBzZXBhcmF0ZSBpdCBmcm9t IGEgQ1BVIGFjY2VzcyBvY2N1cmVkIG91dHNpZGUgYSBzeW5jPyBXZSBjb3VsZCwgYXMKPj4+PiBt ZW50aW9uZWQgYWJvdmUgaGF2ZSBhIGZhdWx0KCkgaGFuZGxlciBpbiB0aGUgZ2VuZXJpYyBrZXJu ZWwgY29kZSBhbmQKPj4+PiBtYWtlIHN1cmUgZHJpdmVycyBkb24ndCBwb3B1bGF0ZSBQVEVzIHVu dGlsIHRoZSBmaXJzdCBmYXVsdCgpLiBBbm90aGVyCj4+Pj4gb3B0aW9uIHdvdWxkIGJlIHRvIHNj YW4gYWxsIFBURXMgZm9yIGFuICJhY2Nlc3NlZCIgZmxhZywgYnV0IEknbSBub3QKPj4+PiBldmVu IHN1cmUgYWxsIENQVSBhcmNoaXRlY3R1cmVzIGhhdmUgc3VjaCBhIGZsYWc/Cj4+Pj4KPj4+PiBC dXQgdGhlcmUgbWlnaHQgYmUgYSBzaW1wbGVyIHNvbHV0aW9uIHRoYXQgSSBoYXZlIG92ZXJsb29r ZWQ/Cj4+PiBBbGwgYXJjaCBoYXZlIGEgZGlydHkgZmxhZywgc28geW91IGNvdWxkIGNoZWNrIHRo YXQsIGFzIGFsbCB3ZQo+Pj4gcmVhbGx5IGNhcmUgYWJvdXQgaXMgQ1BVIHdyaXRlIGFjY2Vzcy4g U28gYWxsIHlvdSBuZWVkIGlzIGNsZWFyaW5nCj4+PiB0aGUgZGlydHkgYml0IGFmdGVyIGVhY2gg c3VjY2Vzc2Z1bGwgR1BVIGNvbW1hbmQgc3RyZWFtIGlvY3RsCj4+PiBhbmQgY2hlY2tpbmcgdGhh dCBubyBkaXJ0eSBiaXQgaXMgc2V0IGluIGEgcmVnaW9uIG5vdCBjb3ZlciBieQo+Pj4gYSBmbHVz aCgpLiBOb3RlIHRoYXQgdGhlIGNsZWFyIGFuZCBjaGVjayBjYW4gaGFwcGVuIGluIHRoZSBzYW1l Cj4+PiBmdW5jdGlvbiBhcyBwYXJ0IG9mIGJ1ZmZlciB2YWxpZGF0aW9uIGZvciB0aGUgR1BVIGNv bW1hbmQgc3RyZWFtLgo+PiBBY3R1YWxseSwgSSBkbyB0aGluayB3ZSBjYXJlIGFib3V0IHJlYWRp bmcgYXMgd2VsbCwgc2luY2UgcmVhZGluZwo+PiB3aXRob3V0IGZsdXNoaW5nIGFueXRoaW5nIHdy aXR0ZW4gYnkgdGhlIEdQVSB3aWxsCj4+IHlpZWxkIGdhcmJhZ2Ugb24gYSBub24tY29oZXJlbnQg YXJjaGl0ZWN0dXJlLiBJbnN0ZWFkIHdlIG1pZ2h0IGNoZWNrIGZvcgo+PiB0aGUgUEFHRV9BQ0NF U1NFRCBiaXQuCj4+Cj4+IFNvIHRoZSBmdWxsIHZlcnNpb24gb2YgdGhpcyB3b3VsZCBrZWVwIHRy YWNrIG9mIGFsbCBzeW5jZWQgcmVnaW9ucyBhbmQKPj4gYXQgYnVmZmVyIHZhbGlkYXRpb24gdGlt ZSwgb3IgdW5tYXAgdGltZSBlcnJvciBpZiB0aGVyZQo+PiBpcyBhIHBhZ2UgY29tcGxldGVseSBv dXRzaWRlIHRoZSB1bmlvbiBvZiBhbGwgc3luY2VkIHJlZ2lvbnMgaW4gYW55IFZNQQo+PiBiZWxv bmdpbmcgdG8gdGhlIGRtYS1idWYgYWRkcmVzcyBzcGFjZSwgdGhlbiB1bm1hcmsgYWxsIGFjY2Vz c2VkIFBURXMKPj4gYW5kIGludmFsaWRhdGUgVExCcyBhY2NvcmRpbmdseSwgdHlwaWNhbGx5IGNh dXNpbmcgYSBnbG9iYWwgVExCIGZsdXNoLgo+PiBZZWFoLCB3ZSBjb3VsZCBwcm9iYWJseSBwdXQg dG9nZXRoZXIgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBkb2VzIHRoaXMsCj4+IGJ1dCBpdCB3aWxs IGJlIGV4cGVuc2l2ZSB0byBydW4gYW5kIHRoZSB3aG9sZSBwb2ludCBvZiB0aGlzIEFQSSBpcyB0 byBiZQo+PiBhYmxlIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCj4+Cj4+IElNTyB3ZSBzaG91bGQg cHJvYmFibHkgZG8gdGhpcyBhbmQgYWZ0ZXIgcmVsZXZhbnQgcGVyZm9ybWFuY2UgdGVzdGluZwo+ PiBkZWNpZGUgd2hldGhlciB0byBlaXRoZXIgZXhwb3NlIGEgd2F5IHRvIHR1cm4gaXQgb2ZmLCBl aXRoZXIgdXNpbmcgYQo+PiBjb21waWxlLXRpbWUgb3B0aW9uIG9yIHJ1bi10aW1lLCBsaWtlIGEg ZmxhZyBpbiB0aGUgU1lOQyBpb2N0bC4KPj4KPiBDYW4ndCB3ZSBqdXN0IHNwZWNpZnkgdGhhdCBh bnkgYWNjZXNzIHdpdGhvdXQgYSBTWU5DIG1heSB5aWVsZCB1bmRlZmluZWQKPiByZXN1bHRzPyBB IHNlZ2ZhdWx0IGlzIG9uZSBvZiB0aGUgbmljZXIgcmVhY3Rpb25zIGluIHRoYXQgY2FzZSBhbmQK PiB0b3RhbGx5IHZhbGlkLgoKQnV0IHRoYXQgd2lsbCwgYXMgSmVyb21lIHBvaW50cyBvdXQsIHBy b2JhYmx5IGxlYXZlIHZhbGlkIHJlc3VsdHMgb24KY29tbW9uIGNvaGVyZW50IGhhcmR3YXJlLAph bmQgdGhlIGxhenkgYXBwIHdyaXRlciB3b3VsZCBiZSBjbHVlbGVzcyB0byBvciB3b3VsZG4ndCBj YXJlIGFib3V0IHdoeQppdCBkb2Vzbid0IHdvcmsgb24Kb3RoZXIgaGFyZHdhcmUuCgo+Cj4gSSBk b24ndCB0aGluayB3ZSB3YW50IHRvIHNsb3cgZG93biB0aGUgY29tbW9uIHBhdGggYnkgUFRFIGZp ZGRsaW5nIGp1c3QKPiB0byB2YWxpZGF0ZSB1c2Vyc3BhY2UgaW5wdXQuIEJ1dCBpdCBtYXkgYmUg cG9zc2libGUgdG8gaGF2ZSBhIGRlYnVnCj4gb3B0aW9uIHdoZXJlIHdlIGp1c3QgZXhwb3NlIGFu IGV4cGxpY2l0IG5vbi1jb2hlcmVudCBjb3B5IG9mIHRoZSBkbWEtYnVmCj4gdGhyb3VnaCBtbWFw IGFuZCBvbmx5IGNvcHkgZGF0YSB0byB0aGUgcmVhbCBidWZmZXIgb24gU1lOQy4gVGhlbiBzcGVj aWZ5Cj4gdGhhdCBhbiBhcHBsaWNhdGlvbiBtdXN0IHdvcmsgd2l0aCB0aGlzIG9wdGlvbiBlbmFi bGVkLCBvciBpdCBpc24ndAo+IGNvbmZvcm1pbmcgdG8gdGhlIHNwZWMuCgpBbm90aGVyIG9wdGlv biB0aGF0IHdvdWxkbid0IGRlZ3JhZGUgcGVyZm9ybWFuY2UgbXVjaCB3b3VsZCBiZSB0bwpyZXF1 aXJlIGRyaXZlcnMgbm90IHRvIHBvcHVsYXRlClBURXMgdW50aWwgZmlyc3QgYWNjZXNzLiBUaGVu IGluIHRoYXQgZmlyc3QgYWNjZXNzIGNoZWNrIGZvciBzeW5jLiAoV2UKd3JhcCB0aGUgZmF1bHQo KSkKCj4KPiBSZWdhcmRzLAo+IEx1Y2FzCj4KVGhvbWFzCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=