From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 1/6] dma-buf: add dynamic DMA-buf handling v10 Date: Fri, 21 Jun 2019 14:06:54 +0200 Message-ID: <78db8951-2e62-2a9d-3d87-3b458fbba880@gmail.com> References: <20190618115455.1253-1-christian.koenig@amd.com> <20190621092022.GB12905@phenom.ffwll.local> <46bc08a3-1b84-c819-dbb5-882e95ab23e5@gmail.com> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , =?UTF-8?Q?Christian_K=c3=b6nig?= Cc: intel-gfx , dri-devel , amd-gfx list List-Id: intel-gfx@lists.freedesktop.org QW0gMjEuMDYuMTkgdW0gMTI6MzIgc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIEZyaSwgSnVu IDIxLCAyMDE5IGF0IDExOjU1IEFNIENocmlzdGlhbiBLw7ZuaWcKPiA8Y2tvZW5pZy5sZWljaHR6 dW1lcmtlbkBnbWFpbC5jb20+IHdyb3RlOgo+PiBBbSAyMS4wNi4xOSB1bSAxMToyMCBzY2hyaWVi IERhbmllbCBWZXR0ZXI6Cj4+PiBPbiBUdWUsIEp1biAxOCwgMjAxOSBhdCAwMTo1NDo1MFBNICsw MjAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4gW1NOSVBdCj4+PiBJbW8gdGhlIGJlbG93 IHNlbWFudGljcyB3b3VsZCBiZSBtdWNoIGNsZWFuZXI6Cj4+Pgo+Pj4gLSBpbnZhbGlkYXRlIG1h eSBhZGQgbmV3IGZlbmNlcwo+Pj4gLSBpbnZhbGlkYXRlIF9tdXN0XyB1bm1hcCBpdHMgbWFwcGlu Z3MKPj4+IC0gYW4gdW5tYXAgbXVzdCB3YWl0IGZvciBjdXJyZW50IGZlbmNlcyBiZWZvcmUgdGhl IG1hcHBpbmcgY2FuIGJlCj4+PiAgICAgcmVsZWFzZWQuCj4+Pgo+Pj4gSW1vIHRoZXJlJ3Mgbm8g cmVhc29uIHdoeSB1bm1hcCBpcyBzcGVjaWFsLCBhbmQgdGhlIG9ubHkgdGhpbmcgd2hlcmUgd2UK Pj4+IGRvbid0IHVzZSBmZW5jZXMgdG8gZ2F0ZSBhY2Nlc3MgdG8gcmVzb3VyY2VzL21lbW9yeSB3 aGVuIGl0J3MgaW4gdGhlCj4+PiBwcm9jZXNzIG9mIGdldHRpbmcgbW92ZWQgYXJvdW5kLgo+PiBX ZWxsIGluIGdlbmVyYWwgSSB3YW50IHRvIGF2b2lkIHdhaXRpbmcgZm9yIGZlbmNlcyBhcyBtdWNo IGFzIHBvc3NpYmxlLgo+PiBCdXQgdGhlIGtleSBwb2ludCBoZXJlIGlzIHRoYXQgdGhpcyBhY3R1 YWxseSB3b24ndCBoZWxwIHdpdGggdGhlIHByb2JsZW0KPj4gSSdtIHRyeWluZyB0byBzb2x2ZS4K PiBUaGUgcG9pbnQgb2YgdXNpbmcgZmVuY2VzIGlzIG5vdCB0byB3YWl0IG9uIHRoZW0uIEkgbWVh biBpZiB5b3UgaGF2ZQo+IHRoZSBzaGFkb3cgdHRtIGJvIG9uIHRoZSBscnUgeW91IGFsc28gZG9u J3Qgd2FpdCBmb3IgdGhhdCBmZW5jZSB0bwo+IHJldGlyZSBiZWZvcmUgeW91IGluc2VydCB0aGUg c2hhZG93IGJvIG9udG8gdGhlIGxydS4gWW91IGRvbid0IGV2ZW4KPiB3YWl0IHdoZW4geW91IHRy eSB0byB1c2UgdGhhdCBtZW1vcnkgYWdhaW4sIHlvdSBqdXN0IHBpcGVsaW5lIG1vcmUKPiBzdHVm ZiBvbiB0b3AuCgpDb3JyZWN0LgoKT2ssIGlmIEkgdW5kZXJzdGFuZCBpdCBjb3JyZWN0bHkgeW91 ciBzdWdnZXN0aW9uIGlzIHRvIG1vdmUgdGhlIApyZXNwb25zaWJpbGl0eSB0byBkZWxheSBkZXN0 cnVjdGlvbiBvZiBtYXBwaW5ncyB1bnRpbCB0aGV5IGFyZSBubyBsb25nZXIgCnVzZWQgZnJvbSB0 aGUgaW1wb3J0ZXIgdG8gdGhlIGV4cG9ydGVyIGJhc2VkIG9uIHRoZSBmZW5jZXMgb2YgdGhlIApy ZXNlcnZhdGlvbiBvYmplY3QuCgpJIHNlcmlvdXNseSBkb24ndCB0aGluayB0aGF0IHRoaXMgaXMg YSBnb29kIGlkZWEgYmVjYXVzZSB5b3UgbmVlZCB0byAKbW92ZSB0aGUgdHJhY2tpbmcgd2hvIGlz IHVzaW5nIHdoaWNoIG1hcHBpbmcgZnJvbSB0aGUgaW1wb3J0ZXIgdG8gdGhlIApleHBvcnRlciBh cyB3ZWxsLiBTbyBkdXBsaWNhdGluZyBxdWl0ZSBhIGJ1bmNoIG9mIGhvdXNla2VlcGluZy4KCk9u IHRoZSBvdGhlciBoYW5kIHRoYXQgd2UgaGF2ZSB0aGlzIGhvdXNlIGtlZXBpbmcgaW4gdGhlIGlt cG9ydGVyIApiZWNhdXNlIHdlIGdldCBpdCBmb3IgZnJlZSBmcm9tIFRUTS4gQnV0IEkgY2FuJ3Qg dGhpbmsgb2YgYSB3YXkgb3RoZXIgCm1lbW9yeSBtYW5hZ2VtZW50IGJhY2tlbmRzIHdvdWxkIGRv IHRoaXMgd2l0aG91dCBrZWVwaW5nIHRoZSBzZyB0YWJsZSAKYXJvdW5kIGVpdGhlci4KCj4gSW4g dGhlIGVuZCBpdCB3aWxsIGJlIHRoZSBleGFjdCBzYW1lIGFtb3VudCBvZiBmZW5jZXMgYW5kIHdh aXRpbmcgaW4KPiBib3RoIHNvbHV0aW9ucy4gT25lIGp1c3QgbGVha3MgbGVzcyBpbXBsZW1lbnRh dGlvbnQgZGV0YWlscyAoYXQgbGVhc3QKPiBpbiBteSBvcGluaW9uKSBhY3Jvc3MgdGhlIGRtYS1i dWYgYm9yZGVyLgoKSSBhZ3JlZSB0aGF0IGxlYWtpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBv dmVyIHRoZSBETUEtYnVmIGJvcmRlciBpcyBhIApiYWQgaWRlYS4KCkJ1dCBJIGNhbiBhc3N1cmUg eW91IHRoYXQgdGhpcyBoYXMgYWJzb2x1dGVseSBub3RoaW5nIHRvZG8gd2l0aCB0aGUgCmdob3N0 IG9iamVjdCBoYW5kbGluZyBvZiBUVE0uIGdob3N0IG9iamVjdHMgZG9lc24ndCBldmVuIHJlY2Vp dmUgYW4gCmludmFsaWRhdGlvbiwgdGhleSBhcmUganVzdCBhIHBvc3NpYmxlIGltcGxlbWVudGF0 aW9uIG9mIHRoZSBkZWxheWVkIApkZXN0cnVjdGlvbiBvZiBzZyB0YWJsZXMuCgo+Pj4gYnR3IHRo aXMgaXMgbGlrZSB0aGUgMm5kIG9yIDNyZCB0aW1lIEknbSB0eXBpbmcgdGhpcywgaGF2ZW4ndCBz ZWVuIHlvdXIKPj4+IHRob3VnaHRzIG9uIHRoaXMgeWV0Lgo+PiBZZWFoLCBhbmQgSSdtIHJlc3Bv bmRpbmcgZm9yIHRoZSAzcmQgdGltZSBub3cgdGhhdCB5b3UgYXJlCj4+IG1pc3VuZGVyc3RhbmRp bmcgd2h5IHdlIG5lZWQgdGhpcyBoZXJlIDopCj4+Cj4+IE1heWJlIEkgY2FuIG1ha2UgdGhhdCBj bGVhciB3aXRoIGFuIGV4YW1wbGU6Cj4+Cj4+IDEuIFlvdSBnb3QgYSBzaGFyaW5nIGJldHdlZW4g ZGV2aWNlIEEgKGV4cG9ydGVyKSBhbmQgQiAoaW1wb3J0ZXIpIHdoaWNoCj4+IHVzZXMgUDJQLgo+ Pgo+PiAyLiBOb3cgZGV2aWNlIEMgKGltcG9ydGVyKSBjb21lcyBhbG9uZyBhbmQgd2FudHMgdG8g dXNlIHRoZSBETUEtYnVmCj4+IG9iamVjdCBhcyB3ZWxsLgo+Pgo+PiAzLiBUaGUgaGFuZGxpbmcg bm93IGZpZ3VyZXMgb3V0IHRoYXQgd2UgY2FuJ3QgZG8gUDJQIGJldHdlZW4gZGV2aWNlIEEKPj4g YW5kIGRldmljZSBDIChmb3Igd2hhdGV2ZXIgcmVhc29uKS4KPj4KPj4gNC4gVGhlIG1hcF9hdHRh Y2htZW50IGltcGxlbWVudGF0aW9uIGluIGRldmljZSBkcml2ZXIgQSBkb2Vzbid0IHdhbnQgdG8K Pj4gZmFpbCB3aXRoIC1FQlVTWSBhbmQgbWlncmF0ZXMgdGhlIERNQS1idWYgc29tZXdoZXJlIHdo ZXJlIGJvdGggZGV2aWNlIEEKPj4gYW5kIGRldmljZSBDIGNhbiBhY2Nlc3MgaXQuCj4+Cj4+IDUu IFRoaXMgbWlncmF0aW9uIHdpbGwgcmVzdWx0IGluIHNlbmRpbmcgYW4gaW52YWxpZGF0aW9uIGV2 ZW50IGFyb3VuZC4KPj4gQW5kIGhlcmUgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHNlbmQgdGhp cyBpbnZhbGlkYXRpb24gZXZlbnQgdG8gZGV2aWNlCj4+IEMsIGJlY2F1c2Ugd2Uga25vdyB0aGF0 IGRldmljZSBDIGlzIGFjdHVhbGx5IGNhdXNpbmcgdGhpcyBldmVudCBhbmQKPj4gZG9lc24ndCBo YXZlIGEgdmFsaWQgbWFwcGluZy4KPiBIbSBJIHRob3VnaHQgdGhlIGxhc3QgdGltZSBhcm91bmQg dGhlcmUgd2FzIGEgZGlmZmVyZW50IHNjZW5hcmlvLCB3aXRoCj4ganVzdCBvbmUgaW1wb3J0ZXI6 Cj4KPiAtIGltcG9ydGVyIGhhcyBhIG1hcHBpbmcsIGdldHMgYW4gLT5pbnZhbGlkYXRlIGNhbGwu Cj4gLSBpbXBvcnRlciBhcnJhbmdlcyBmb3IgdGhlIG1hcHBpbmdzL3VzYWdlIHRvIGdldCB0b3Ju IGRvd24sIG1heWJlCj4gdXBkYXRpbmcgZmVuY2VzLCBhbGwgZnJvbSAtPmludmFsaWRhdGUuIEJ1 dCB0aGUgbWFwcGluZyBpdHNlbGYgd29udAo+IGRpc2FwcGVhci4KPiAtIGV4cG9ydGVyIG1vdmVz IGJ1ZmZlciB0byBuZXcgcGxhY2VzIChmb3Igd2hhdGV2ZXIgcmVhc29ucyBpdCBmZWx0Cj4gdGhh dCB3YXMgdGhlIHRoaW5nIHRvIGRvKS4KPiAtIGltcG9ydGVyIGRvZXMgYW5vdGhlciBleGVjYnVm LCB0aGUgZXhwb3J0ZXIgbmVlZHMgdG8gbW92ZSB0aGUgYnVmZmVyCj4gYmFjay4gQWdhaW4gaXQg Y2FsbHMgLT5pbnZhbGlkYXRlLCBidXQgb24gYSBtYXBwaW5nIGl0IGFscmVhZHkgaGFzCj4gY2Fs bGVkIC0+aW52YWxpZGF0ZSBvbiwgYW5kIHRvIHByZXZlbnQgdGhhdCBzaWxsaW5lc3Mgd2UgdGFr ZSB0aGUKPiBpbXBvcnRlciB0ZW1wb3Jhcnkgb2ZmIHRoZSBsaXN0LgoKTWhtLCBzdHJhbmdlIEkg ZG9uJ3QgcmVtZW1iZXIgZ2l2aW5nIHRoaXMgZXhwbGFuYXRpb24uIEl0IGFsc28gZG9lc24ndCAK bWFrZSB0byBtdWNoIHNlbnNlLCBidXQgc2VlIGJlbG93LgoKPiBZb3VyIHNjZW5hcmlvIGhlcmUg aXMgbmV3LCBhbmQgaWlyYyBteSBzdWdnZXN0aW9uIGJhY2sgdGhlbiB3YXMgdG8KPiBjb3VudCB0 aGUgbnVtYmVyIG9mIHBlbmRpbmcgbWFwcGluZ3Mgc28geW91IGRvbid0IGdvIGFyb3VuZCBjYWxs aW5nCj4gLT5pbnZhbGlkYXRlIG9uIG1hcHBpbmdzIHRoYXQgZG9uJ3QgZXhpc3QuCgpXZWxsIHRo ZSBrZXkgcG9pbnQgaXMgd2UgZG9uJ3QgY2FsbCBpbnZhbGlkYXRlIG9uIG1hcHBpbmdzLCBidXQg d2UgY2FsbCAKaW52YWxpZGF0ZSBvbiBhdHRhY2htZW50cy4KCldoZW4gdGhlIGludmFsaWRhdGUg b24gYW4gYXR0YWNobWVudCBpcyByZWNlaXZlZCBhbGwgdGhlIGltcG9ydGVyIHNob3VsZCAKYXQg bGVhc3Qgc3RhcnQgdG8gdGVhciBkb3duIGFsbCBtYXBwaW5ncy4KCj4gQnV0IGV2ZW4gaWYgeW91 IGZpeCB5b3VyIHNjZW5hcmlvIGhlcmUgdGhlcmUncyBzdGlsbCB0aGUgaXNzdWUgdGhhdCB3ZQo+ IGNhbiByZWNlaXZlIGludmFsaWRhdGVzIG9uIGEgbWFwcGluZyB3ZSd2ZSBhbHJlYWR5IHRvcm4g ZG93biBhbmQgd2hpY2gKPiBpcyBvbiB0aGUgcHJvY2VzcyBvZiBkaXNhcHBlYXJpbmcuIFRoYXQn cyBraW5kYSB0aGUgcGFydCBJIGRvbid0IHRoaW5rCj4gaXMgZ3JlYXQgc2VtYW50aWNzLgoKWWVh aCwgdGhhdCBpcyBhIHJhdGhlciB2YWxpZCBwb2ludC4KCkN1cnJlbnRseSBpdCBpcyBwZXJmZWN0 bHkgdmFsaWQgdG8gcmVjZWl2ZSBhbiBpbnZhbGlkYXRpb24gd2hlbiB5b3UgCmRvbid0IGV2ZW4g aGF2ZSBhbnkgbWFwcGluZ3MgYXQgYWxsLgoKQnV0IHRoaXMgaXMgaW50ZW50aW9uYWwsIGJlY2F1 c2Ugb3RoZXJ3aXNlIEkgd291bGQgbmVlZCB0byBtb3ZlIHRoZSAKaG91c2VrZWVwaW5nIHdoaWNo IG1hcHBpbmdzIGFyZSBjdXJyZW50bHkgbWFkZSBmcm9tIHRoZSBpbXBvcnRlciB0byB0aGUgCmV4 cG9ydGVyLgoKQW5kIGFzIGV4cGxhaW5lZCBhYm92ZSB0aGF0IHdvdWxkIGVzc2VudGlhbGx5IG1l YW4gZG91YmxlIGhvdXNla2VlcGluZy4KCj4gW1NOSVBdCj4+IFRoZSByZWFzb24gSSBkb24ndCBo YXZlIHRoYXQgb24gdW5tYXAgaXMgdGhhdCBJIHRoaW5rIG1pZ3JhdGluZyB0aGluZ3MKPj4gb24g dW5tYXAgZG9lc24ndCBtYWtlIHNlbnNlLiBJZiB5b3UgdGhpbmsgb3RoZXJ3aXNlIGl0IGNlcnRh aW5seSBkb2VzCj4+IG1ha2Ugc2Vuc2UgdG8gYWRkIHRoYXQgdGhlcmUgYXMgd2VsbC4KPiBUaGUg cHJvYmxlbSBpc24ndCB0aGUgcmVjdXJzaW9uLCBidXQgdGhlIGJvb2sta2VlcGluZy4gVGhlcmUn cyBpbW8gdHdvIGNhc2VzOgoKQ29tcGxldGVseSBhZ3JlZSwgeWVzLgoKPiAtIHlvdXIgc2NlbmFy aW8sIHdoZXJlIHlvdSBjYWxsIC0+aW52YWxpZGF0ZSBvbiBhbiBhdHRhY2htZW50IHdoaWNoCj4g ZG9lc24ndCBoYXZlIGEgbWFwcGluZy4gSSdsbCBjYWxsIHRoYXQgdmVyeSBsYXp5IGFjY291bnRp bmcsIGZlZWxzCj4gbGlrZSBhIGJ1ZyA6LSkgSXQncyBhbHNvIHZlcnkgZWFzeSB0byBmaXggYnkg a2VlcGluZyB0cmFjayB3aG8KPiBhY3R1YWxseSBoYXMgYSBtYXBwaW5nLCBhbmQgdGhlbiB5b3Ug Zml4IGl0IGV2ZXJ5d2hlcmUsIG5vdCBqdXN0IGZvcgo+IHRoZSBzcGVjaWZpYyBjYXNlIG9mIGEg cmVjdXJzaW9uIGludG8gdGhlIHNhbWUgY2FsbGVyLgoKWWVhaCwgZXhhY3RseS4gVW5mb3J0dW5h dGVseSBpdCdzIG5vdCBzbyBlYXN5IHRvIGhhbmRsZSBhcyBqdXN0IGEgY291bnRlci4KCldoZW4g c29tZWJvZHkgdW5tYXBzIGEgbWFwcGluZyB5b3UgbmVlZCB0byBrbm93IGlmIHRoYXQgaXMgYWxy ZWFkeSAKaW52YWxpZGF0ZWQgb3Igbm90LiBBbmQgdGhpcyByZXF1aXJlcyB0cmFja2luZyBvZiBl YWNoIG1hcHBpbmcuCgo+IC0gY2FsbGluZyBpbnZhbGlkYXRlIG11bHRpcGxlIHRpbWVzLiBUaGF0 J3MgbXkgc2NlbmFyaW8gKG9yIHlvdXIgb2xkZXIKPiBvbmUpLCB3aGVyZSB5b3UgY2FsbCBpbnZh bGlkYXRlIGFnYWluIG9uIHNvbWV0aGluZyB0aGF0J3MgYWxyZWFkeQo+IGludmFsaWRhdGVkLiBK dXN0IGtlZXBpbmcgdHJhY2sgb2Ygd2hvIGFjdHVhbGx5IGhhcyBhIG1hcHBpbmcgd29udCBmaXgK PiB0aGF0LCBpbW8gdGhlIHByb3BlciBmaXggaXMgdG8gdG8gcGlwZWxpbmUgdGhlIHVubWFwcGlu ZyB1c2luZyBmZW5jZXMuCgpVbm1hcHBpbmcgdXNpbmcgZmVuY2VzIGlzIGV4YWN0bHkgd2hhdCBJ IGltcGxlbWVudGVkIHVzaW5nIHRoZSBUVE0gZ2hvc3QgCm9iamVjdHMuCgpUaGUgcXVlc3Rpb24g aXMgcmVhbGx5IHdobyBzaG91bGQgaW1wbGVtZW50cyB0aGlzPyBUaGUgZXhwb3J0ZXIgb3IgdGhl IAppbXBvcnRlcj8KCj4gQnV0IEkgZ3Vlc3MgdGhlcmUncyBvdGhlciBmaXhlcyB0b28gcG9zc2li bGUuCj4KPiBFaXRoZXIgd2F5IG5vbmUgb2YgdGhpcyBpcyBhYm91dCByZWN1cnNpb24sIEkgdGhp bmsgdGhlIHJlY3Vyc2l2ZSBjYXNlCj4gaXMgc2ltcGx5IHRoZSBvbmUgd2hlcmUgeW91J3ZlIGhp dCB0aGlzIGFscmVhZHkuIERyaXZlcnMgd2lsbCBoYXZlIHRvCj4gaGFuZGxlIGFsbCB0aGVzZSBh ZGRpdGlvbmFsIC0+aW52YWxpZGF0ZXMgbm8gbWF0dGVyIHdoYXQgd2l0aCB5b3VyCj4gY3VycmVu dCBwcm9wb3NhbC4gQWZ0ZXIgYWxsIHRoZSBwb2ludCBoZXJlIGlzIHRoYXQgdGhlIGV4cG9ydGVy IGNhbgo+IG1vdmUgdGhlIGJ1ZmZlcnMgYXJvdW5kIHdoZW5ldmVyIGl0IGZlZWxzIGxpa2UsIGZv ciB3aGF0ZXZlciByZWFzb25zLgoKVGhlIHJlY3Vyc2lvbiBjYXNlIGlzIHN0aWxsIHBlcmZlY3Rs eSB2YWxpZC4gSW4gdGhlIGltcG9ydGVyIEkgbmVlZCB0byAKaWdub3JlIGludmFsaWRhdGlvbnMg d2hpY2ggYXJlIGNhdXNlZCBieSBjcmVhdGluZyBhIG1hcHBpbmcuCgpPdGhlcndpc2UgaXQgaXMg cGVyZmVjdGx5IHBvc3NpYmxlIHRoYXQgd2UgaW52YWxpZGF0ZSBhIG1hcHBpbmcgYmVjYXVzZSAK b2YgaXRzIGNyZWF0aW9uIHdoaWNoIHdpbGwgcmVzdWx0IGluIGNyZWF0aW5nIGEgbmV3IG9uZS4u Li4KClNvIGV2ZW4gaWYgeW91IGZpeCB1cCB5b3VyIG1hcHBpbmcgY2FzZSwgeW91IGFic29sdXRl bHkgc3RpbGwgbmVlZCB0aGlzIAp0byBwcmV2ZW50IHJlY3Vyc2lvbiA6KQoKPiBGb3Igc29sdXRp b25zIEkgdGhpbmsgdGhlcmUncyByb3VnaGx5IHRocmVlOgo+IC0gaW1wb3J0ZXJzIG5lZWQgdG8g ZGVhbC4gWW91IGRvbid0IGxpa2UgdGhhdCwgSSBhZ3JlZQo+IC0gZXhwb3J0ZXJzIG5lZWQgdG8g ZGVhbCwgcHJvYmFibHkgbm90IG11Y2ggYmV0dGVyLCBidXQgSSB0aGluawo+IHN0cmljdGVyIGNv bnRyYWN0IGlzIGJldHRlciBpbiBpdHNlbGYgYXQgbGVhc3QuCj4gLSBkbWEtYnVmLmMga2VlcHMg YmV0dGVyIHRyYWNrIG9mIG1hcHBpbmdzIGFuZCB3aGljaCBoYXZlIGJlZW4KPiBpbnZhbGlkYXRl ZCBhbHJlYWR5Cj4KPiBXZSBjb3VsZCBhbHNvIGNvbWJpbmUgdGhlIGxhc3QgdHdvIHdpdGggc29t ZSBoZWxwZXJzLCBlLmcuIGlmIHlvdXIKPiBleHBvcnRlciByZWFsbHkgZXhwZWN0cyBpbXBvcnRl cnMgdG8gZGVsYXkgdGhlIHVubWFwIHVudGlsIGl0J3Mgbm8KPiBsb25nZXIgaW4gdXNlLCB0aGVu IHdlIGNvdWxkIGRvIGEgc21hbGwgaGVscGVyIHdoaWNoIHB1dHMgYWxsIHRoZXNlCj4gdW5tYXBz IG9udG8gYSBsaXN0IHdpdGggYSB3b3JrZXIuIEJ1dCBJIHRoaW5rIHlvdSB3YW50IHRvIGludGVn cmF0ZQo+IHRoYXQgaW50byB5b3VyIGV4cG9ydGVycyBscnUgbWFuYWdlbWVudCBkaXJlY3RseS4K Pgo+PiBTbyB0aGlzIGlzIGp1c3QgdGhlIG1vc3QgZGVmZW5zaXZlIHRoaW5nIEkgd2FzIGFibGUg dG8gY29tZSB1cCB3aXRoLAo+PiB3aGljaCBsZWF2ZXMgdGhlIGxlYXN0IHBvc3NpYmlsaXR5IGZv ciBkcml2ZXJzIHRvIGRvIHNvbWV0aGluZyBzdHVwaWQuCj4gTWF5YmUgd2UncmUgc3RpbGwgdGFs a2luZyBwYXN0IGVhY2ggYW5vdGhlciwgYnV0IEkgZmVlbCBsaWtlIHRoZSBiaWcKPiBpc3N1ZXMg YXJlIGFsbCBzdGlsbCB0aGVyZS4gUHJvYmxlbSBpZGVudGlmaWVkLCB5ZXMsIHNvbHZlZCwgbm8u CgpZZWFoLCBhZ3JlZWQgeW91ciBsYXN0IG1haWwgc291bmRlZCBsaWtlIHdlIGFyZSBhYnNvbHV0 ZWx5IG9uIHRoZSBzYW1lIApwYWdlIG9uIHRoZSBwcm9ibGVtIG5vdy4KCkNocmlzdGlhbi4KCj4K PiBUaGFua3MsIERhbmllbAo+Cj4+IFRoYW5rcywKPj4gQ2hyaXN0aWFuLgo+PgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4