From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 7/7] drm/syncobj: use the timeline point in drm_syncobj_find_fence Date: Fri, 23 Nov 2018 13:40:16 +0100 Message-ID: <2ea59bf7-371b-7777-4d68-cf464aab2f93@gmail.com> References: <20181115111245.30161-1-christian.koenig@amd.com> <20181115111245.30161-8-christian.koenig@amd.com> <7857f8af-7046-66a4-e679-3e788b5750c1@amd.com> <3a57870c-75ee-e706-1967-870f4757d6ff@gmail.com> <1c8fb095-2a82-12f3-d8e2-6b437a795d0f@amd.com> <7b04004c-4a6a-8c25-cb2a-5995027f16ee@gmail.com> <20181123122637.GJ4266@phenom.ffwll.local> 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: Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5DCC6E337 for ; Fri, 23 Nov 2018 12:40:19 +0000 (UTC) Received: by mail-wr1-x442.google.com with SMTP id q18so12196175wrx.9 for ; Fri, 23 Nov 2018 04:40:19 -0800 (PST) In-Reply-To: <20181123122637.GJ4266@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , "Koenig, Christian" Cc: "daniel.vetter@ffwll.ch" , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org QW0gMjMuMTEuMTggdW0gMTM6MjYgc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIEZyaSwgTm92 IDIzLCAyMDE4IGF0IDEyOjAyOjQxUE0gKzAwMDAsIEtvZW5pZywgQ2hyaXN0aWFuIHdyb3RlOgo+ PiBBbSAyMy4xMS4xOCB1bSAxMjowMyBzY2hyaWViIENocmlzdGlhbiBLw7ZuaWc6Cj4+PiBBbSAy My4xMS4xOCB1bSAxMTo1NiBzY2hyaWViIHpob3VjbTE6Cj4+Pj4KPj4+PiBPbiAyMDE45bm0MTHm nIgyM+aXpSAxODoxMCwgS29lbmlnLCBDaHJpc3RpYW4gd3JvdGU6Cj4+Pj4+IEFtIDIzLjExLjE4 IHVtIDAzOjM2IHNjaHJpZWIgemhvdWNtMToKPj4+Pj4+IE9uIDIwMTjlubQxMeaciDIy5pelIDE5 OjMwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4+Pj4+IEFtIDIyLjExLjE4IHVtIDA3OjUy IHNjaHJpZWIgemhvdWNtMToKPj4+Pj4+Pj4gT24gMjAxOOW5tDEx5pyIMTXml6UgMTk6MTIsIENo cmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+Pj4+Pj4+PiBJbXBsZW1lbnQgZmluZGluZyB0aGUgcmln aHQgdGltZWxpbmUgcG9pbnQgaW4KPj4+Pj4+Pj4+IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UuCj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0 aWFuLmtvZW5pZ0BhbWQuY29tPgo+Pj4+Pj4+Pj4gLS0tCj4+Pj4+Pj4+PiAgwqDCoCBkcml2ZXJz L2dwdS9kcm0vZHJtX3N5bmNvYmouYyB8IDEwICsrKysrKysrKy0KPj4+Pj4+Pj4+ICDCoMKgIDEg ZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4+Pj4+Pj4+Cj4+ Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKPj4+Pj4+ Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKPj4+Pj4+Pj4+IGluZGV4IDU4OWQ4 ODRjY2Q1OC4uZDQyYzUxNTIwZGE0IDEwMDY0NAo+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9zeW5jb2JqLmMKPj4+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3lu Y29iai5jCj4+Pj4+Pj4+PiBAQCAtMzA3LDkgKzMwNywxNyBAQCBpbnQgZHJtX3N5bmNvYmpfZmlu ZF9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUKPj4+Pj4+Pj4+ICpmaWxlX3ByaXZhdGUsCj4+Pj4+Pj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9FTlQ7Cj4+Pj4+Pj4+PiAgwqDCoCDC oMKgwqDCoMKgICpmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTsKPj4+Pj4+ Pj4+IC3CoMKgwqAgaWYgKCEqZmVuY2UpIHsKPj4+Pj4+Pj4+ICvCoMKgwqAgaWYgKCEqZmVuY2Up Cj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVJTlZBTDsKPj4+Pj4+Pj4+ ICsKPj4+Pj4+Pj4+ICvCoMKgwqAgaWYgKCFyZXQgJiYgcG9pbnQpIHsKPj4+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCBkbWFfZmVuY2VfY2hhaW5fZm9yX2VhY2goKmZlbmNlKSB7Cj4+Pj4+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXRvX2RtYV9mZW5jZV9jaGFpbigqZmVuY2UpIHx8 Cj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgqZmVuY2UpLT5zZXFu byA8PSBwb2ludCkKPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl YWs7Cj4+Pj4+Pj4+IFRoaXMgY29uZGl0aW9uIGlzbid0IGVub3VnaCB0byBmaW5kIHByb3BlciBw b2ludC4KPj4+Pj4+Pj4gRm9yIHR3byBleGFtcGxlczoKPj4+Pj4+Pj4gYS4gTm8gZ2FyYmFnZSBj b2xsZWN0aW9uIGhhcHBlbnMsIHRoZSBwb2ludHMgaW4gY2hhaW4gYXJlCj4+Pj4+Pj4+IDEtLS0t My0tLS02LS0tLTktLS0tMTItLS0xOC0tLTIwLCBpZiB1c2VyIHdhbnRzIHRvIGdldCBwb2ludDE3 LCB0aGVuCj4+Pj4+Pj4+IHdlIHNob3VsZCByZXR1cm4gbm9kZSAxOC4KPj4+Pj4+PiBBbmQgdGhh dCBpcyBleGFjdGx5IHdoYXQncyB3cm9uZyBpbiB0aGUgb3JpZ2luYWwgbG9naWMuIEluIHRoaXMg Y2FzZQo+Pj4+Pj4+IHdlIG5lZWQgdG8gcmV0dXJuIDEyLCBub3QgMTggYmVjYXVzZSBwb2ludCAx NyBjb3VsZCBoYXZlIGFscmVhZHkgYmVlbgo+Pj4+Pj4+IGdhcmJhZ2UgY29sbGVjdGVkLgo+Pj4+ Pj4gSSBkb24ndCB0aGluayBzbywgdGhlICdhJyBjYXNlIEkgYWxyZWFkeSBhc3N1bWUgdGhlcmUg aXNuJ3QgZ2FyYmFnZQo+Pj4+Pj4gY29sbGVjdGlvbi4gSWYgdXNlciB3YW50cyB0byBnZXQgcG9p bnQxNywgdGhlbiB3ZSBzaG91bGQgcmV0dXJuCj4+Pj4+PiBub2RlIDE4Lgo+Pj4+Pj4gdGltZWxp bmUgbWVhbnMgcG9pbnRbTl3CoCBtdXN0IGJlIHNpZ25hbGVkIGxhdGVyIHRoYW4gcG9pbnRbTi0x XS4KPj4+Pj4+IFBvaW50WzEyXSBqdXN0IGNhbiBtYWtlIHN1cmUgcG9pbnRbMV0gfnBvaW50WzEy XSBhcmUgc2lnbmFsZWQuCj4+Pj4+PiBQb2ludFsxOF0gc2lnbmFsIGNhbiBtYWtlIHN1cmUgcG9p bnRbMTddIGlzIHNpZ25hbGVkLgo+Pj4+Pj4gU28gdGhpcyBjYXNlIHdlIG5lZWQgdG8gcmV0dXJu IDE4LCBub3QgMTIsIHdoaWNoIGlzIGtleSB0aW1lbGluZQo+Pj4+Pj4gY29uY2VwdC4KPj4+Pj4g Tm8sIGV4YWN0bHkgdGhhdCdzIGluY29ycmVjdC4gV2hlbiB3ZSBhc2sgZm9yIDE3IGFuZCBjYW4n dCBmaW5kIGl0IHRoZW4KPj4+Pj4gdGhpcyBtZWFucyBpdCBlaXRoZXIgbmV2ZXIgZXhpc3RlZCBv ciB0aGF0IGl0IGlzIHNpZ25hbGVkIGFscmVhZHkuCj4+Pj4+Cj4+Pj4+IFJldHVybmluZyBhIGxv d2VyIG51bWJlciBpbiB0aGlzIGNhc2Ugb3IgZXZlbiBhIHN0dWIgZmVuY2UgaXMgcGVyZmVjdGx5 Cj4+Pj4+IGZpbmUgc2luY2Ugd2Ugb25seSBuZWVkIHRvIHdhaXQgZm9yIHRoYXQgb25lIGluIHRo aXMgY2FzZS4KPj4+Pj4KPj4+Pj4gSWYgd2UgcmV0dXJuIDE4IGluIHRoaXMgY2FzZSB0aGVuIHdl IGFkZCBpbmNvcnJlY3Qgc3luY2hyb25pemF0aW9uIHdoZW4KPj4+Pj4gdGhlcmUgc2hvdWxkbid0 IGJlIGFueS4KPj4+PiBObywgVGhhdCB3aWxsIG1ha2UgdGltZWxpbmUgbm90IHdvcmsgYXQgYWxs IGFuZCBicmVhayB0aW1lbGluZQo+Pj4+IHNlbWFudGljcyB0b3RhbGx5Lgo+Pj4+Cj4+Pj4gSWYg dGhlcmUgYXJlbid0IHBvaW50MTggYW5kIHBvaW50MjAsIHRoZSBjaGFpbiBpcwo+Pj4+IDEtLS0t My0tLS02LS0tLTktLS0tMTIsIGlmIHVzZXIgd2FudHMgdG8gZ2V0IHBvaW50IDE3LCB5b3UgYWxz bwo+Pj4+IHJldHVybiAxMj8gaWYgeWVzLCB3aGljaCBhYnNvbHV0ZWx5IGlzIGluY29ycmVjdC4g VGhlIGFuc3dlciBzaG91bGQKPj4+PiBiZSBOTywgcmlnaHQ/IHBvaW50MTcgc2hvdWxkIGJlIHdh aXRlZCBvbiB0aGVyZSB1bnRpbCBhIGJpZ2dlciBwb2ludAo+Pj4+IGlzIGNvbWluZy4KPj4+IENv cnJlY3QsIGJ1dCB0aGlzIGlzIGEgZGlmZmVyZW50IGNhc2UuIEluIHRoaXMgc2l0dWF0aW9uIHdl IGVpdGhlcgo+Pj4gcmV0dXJuIGFuIGVycm9yIG9yIHdhaXQgZm9yIHBvaW50IDE3IChvciBzb21l dGhpbmcgPj0xNykgdG8gc2hvdyB1cC4KPj4+Cj4+PiBUaGUga2V5IGRpZmZlcmVuY2UgaXMgaWYg cG9pbnQgMTcgc2hvd3MgdXAgdGhlbiB3ZSByZXR1cm4gcG9pbnQgMTcsCj4+PiBidXQgaWYgcG9p bnQgMTggc2hvd3MgdXAgdGhlbiB3ZSBuZWVkIHRvIHJldHVybiBwb2ludCAxMi4KPj4+Cj4+Pj4g Rm9yIGNoYWluIGlzIDEtLS0tMy0tLS02LS0tLTktLS0tMTItLS0xOC0tLTIwLCBpZiB1c2VyIHdh bnRzIHRvIHdhaXQKPj4+PiBvbiBhbnkgb25lIG9mIHBvaW50cyAxMywxNCwxNSwxNiwxNywxOCwg d2UgbXVzdCB3YWl0IGZvciBwb2ludCAxOCwKPj4+PiB0aGlzIGlzIHRpbWVsaW5lIHNlbWFudGlj Lgo+Pj4gQWgsIG5vdyBJIHVuZGVyc3RhbmQuIFlvdSBhcmUgc3RpbGwgc3RpY2tpbmcgd2l0aCB0 aGUgYXNzdW1wdGlvbiBvZiBhCj4+PiBmZW5jZSBudW1iZXIsIHJpZ2h0Pwo+Pj4KPj4+IEluIG90 aGVyIHdvcmRzIHdoYXQgeW91IGltcGx5IGhlcmUgaXMgdGhhdCB3ZSBoYXZlIHRoZSBzYW1lIHNl bWFudGljCj4+PiBhcyB3aGVuIHNvbWVib2R5IHdhaXRzIGZvciBhIG1lbW9yeSBsb2NhdGlvbiB0 byBiZSB3cml0dGVuIGJ5IG51bWJlcgo+Pj4gMTcsIHJpZ2h0PyBJbiB0aGlzIGNhc2UgdGhlIHNl bWFudGljcyB5b3UgZGVzY3JpYmUgaGVyZSBpbmRlZWQgYXBwbGllcy4KPj4+Cj4+PiBCdXQgdGhh dCBpcyBjZXJ0YWlubHkgbm90IHdoYXQgd2Ugd2FudCB0byBpbXBsZW1lbnQgb3Igb3RoZXJ3aXNl IHdlCj4+PiB3aWxsIG5ldmVyIGJlIGFibGUgdG8gZ2FyYmFnZSBjb2xsZWN0IHRoZSBudW1iZXJz IGluIGJldHdlZW4uCj4+Pgo+Pj4gU28gaWYgVnVsa2FuIGhhcyB0aGlzIHJlcXVpcmVtZW50IHRo ZW4gd2UgbmVlZCB0byByZWplY3QgdGhhdC4KPj4gQmFja2luZyBvZiBhbmQgcmVjb25zaWRlcmlu ZyB0aGlzIEkgY2FtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0IHdoYXQgeW91Cj4+IHN1Z2dlc3Qg aGVyZSBpcyBhY3R1YWxseSB0aGUgbW9zdCBkZWZlbnNpdmUgc29sdXRpb24uCj4+Cj4+IEluIG90 aGVyIHdvcmRzIGl0IGlzIHRoZSBzb2x1dGlvbiB3aGVyZSBpdCdzIG1vc3QgbGlrZWx5IHRoYXQg bm90aGluZwo+PiBnb2VzIHdyb25nIGJlY2F1c2UgdGhlIHdvcnN0IHRoaW5nIHRoYXQgY2FuIGhh cHBlbiBpcyB0aGF0IHdlCj4+IHN5bmNocm9uaXplIHRvIG11Y2gsIGJ1dCBuZXZlciB0byBsZXNz Lgo+Pgo+PiBHb2luZyB0byB0aGluayBhYm91dCBpdCBob3cgd2UgY2FuIGJyaW5nIHRoYXQgaW50 byBhbGlnbm1lbnQgd2l0aCB0aGUKPj4gcHJvcG9zZWQgZ2FyYmFnZSBjb2xsZWN0aW9uLgo+IFNo b3VsZCB3ZSBpbXBsZW1lbnQgdGhlIHRlc3RzIGZpcnN0IChlaXRoZXIgYXMgaW4ta2VybmVsIHVu aXQgdGVzdHMsIGxpa2UKPiB3ZSBoYXZlIHNvbWUsIG9yIGluIGlndCBvbiB0b3Agb2YgdmdlbSks IGFncmVlIG9uIHRoZSBzZW1hbnRpY3Mgd2Ugd2FudCwKPiB0aGVuIHdvcmsgb24gdGhlIGltcGxl bWVudGF0aW9uPwo+Cj4gQWxsIHRoZXNlIGRpc2N1c3Npb25zIGFuZCBnb3RjaGFzIGFuZCAib29w cyBhbm90aGVyIGNvcm5lciBjYXNlIHdlIG1pc3NlZCIKPiB3aGVuIG9ubHkgbG9va2luZyBhdCB0 aGUgaW1wbGVtZW50YXRpb24gZmVlbHMgbGlrZSBpdCBjb3VsZCB3b3JrIG91dAo+IGJldHRlciBp ZiB3ZSBhdHRhY2sgdGhpcyBmcm9tIHRoZSBvdGhlciBzaWRlIG9mIHRoZSB1YXBpIGJhcnJpZXIg Li4uCgpXZWxsIEkgYWdyZWUgdGhhdCB0aGlzICJvb3BzIGFub3RoZXIgY29ybmVyIGNhc2Ugd2Ug bWlzc2VkIiBpcyBleGFjdGx5IAp0aGUga2V5IHByb2JsZW0gaGVyZS4KCkJ1dCB3aGVuIHRoZSBr ZXJuZWwgZGV2ZWxvcGVycyBpbXBsZW1lbnQgdGhlIHRlc3QgY2FzZXMgd2UganVzdCBtb3ZlIHRo ZSAKaXNzdWUgdG8gYW5vdGhlciBwbGFjZSBhbmQgbm90IGZ1bmRhbWVudGFsbHkgc29sdmUgaXQu CgpXaGF0IHdlIHNob3VsZCBkbyBpcyB0byBwdXNoIHRoZSBhbnYvcmFkdi9hbWR2bGsgZGV2cyB0 byBnbyBhaGVhZCBhbmQgCmltcGxlbWVudCB0ZXN0IGNhc2VzIGZvciBhbGwgdGhlIHVnbHkgY29y bmVyIGNhc2VzIHRoZXkgaGF2ZSBpbiBtaW5kLgoKQWRkaXRpb25hbCB0byB0aGF0IEkgcmVhbGx5 IHRoaW5rIHRoYXQgdGhlIFVBUEkgRGF2aWQoQ2h1bk1pbmcpIGNhbWUgdXAgCndpdGggaXMgYWN0 dWFsbHkgcHJldHR5IHNvbGlkLCBzbyBldmVyeXRoaW5nIHNob3VsZCBhY3R1YWxseSBiZSBnb29k IHRvIApnbyB0byBkbyB0aGlzLgoKUmVnYXJkcywKQ2hyaXN0aWFuLgoKPgo+IEp1c3QgYSB0aG91 Z2h0Lgo+IC1EYW5pZWwKPgo+PiBUaGFua3MsCj4+IENocmlzdGlhbi4KPj4KPj4+IFJlZ2FyZHMs Cj4+PiBDaHJpc3RpYW4uCj4+Pgo+Pj4+IFlvdSBjYW4gYWxzbyBjaGVjayBzd19zeW5jLmMgZm9y IHRpbWVsaW5lIG1lYW5pbmcuCj4+Pj4KPj4+PiAtRGF2aWQKPj4+Pj4gQ2hyaXN0aWFuLgo+Pj4+ Pgo+Pj4+Pj4gLURhdmlkCj4+Pj4+Pj4+IGIuIGdhcmJhZ2UgY29sbGVjdGlvbiBoYXBwZW5zIG9u IHBvaW50NiwgY2hhaW4gd291bGQgYmUgdXBkYXRlZCB0bwo+Pj4+Pj4+PiAxLS0tMy0tLTktLS0x Mi0tLTE4LS0tMjAsIGlmIHVzZXIgd2FudHMgdG8gZ2V0IHBvaW50NSwgdGhlbiB3ZQo+Pj4+Pj4+ PiBzaG91bGQgcmV0dXJuIG5vZGUgMywgYnV0IGlmIHVzZXIgd2FudHMgdG8gZ2V0IHBvaW50IDcs IHRoZW4gd2UKPj4+Pj4+Pj4gc2hvdWxkIHJldHVybiBub2RlIDkuCj4+Pj4+Pj4gV2h5PyBUaGF0 IGRvZXNuJ3Qgc2VlbSB0byBtYWtlIGFueSBzZW5zZSB0byBtZS4KPj4+Pj4+Pgo+Pj4+Pj4+PiBJ IHN0aWxsIGhhdmUgbm8gaWRlYSBob3cgdG8gc2F0aXNmeSBhbGwgdGhlc2UgcmVxdWlyZW1lbnRz IHdpdGggeW91cgo+Pj4+Pj4+PiBjdXJyZW50IGNoYWluLWZlbmNlLiBBbGwgdGhlc2UgbG9naWMg anVzdCBhcmUgc2FtZSB3ZSBlbmNvdW50ZXJlZAo+Pj4+Pj4+PiBiZWZvcmUsIHdlJ3JlIHdhbGtp bmcgdGhlbSBhZ2Fpbi4gQWZ0ZXIgc29sdmluZyB0aGVzZSBwcm9ibGVtcywgSQo+Pj4+Pj4+PiBn dWVzcyBhbGwgZGVzaWduIGlzIHNpbWlsYXIgYXMgYmVmb3JlLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJ biBmYWN0LCBJIGRvbid0IGtub3cgd2hhdCBwcm9ibGVtIHByZXZpb3VzIGRlc2lnbiBoYXMsIG1h eWJlIHRoZXJlCj4+Pj4+Pj4+IGFyZSBzb21lIGJ1Z3MsIGNhbid0IHdlIGZpeCB0aGVzZSBidWdz IGJ5IHRpbWUgZ29pbmc/IFdobyBjYW4gbWFrZQo+Pj4+Pj4+PiBzdXJlIGhpcyBpbXBsZW1lbnRh dGlvbiBuZXZlciBoYXZlIGJ1Z3M/Cj4+Pj4+Pj4gV2VsbCB0aGVyZSB3aGVyZSBudW1lcm91cyBw cm9ibGVtcyB3aXRoIHRoZSBvcmlnaW5hbCBkZXNpZ24uIEZvcgo+Pj4+Pj4+IGV4YW1wbGUgd2Ug bmVlZCB0byByZWplY3QgdGhlIHJlcXVpcmVtZW50IHRoYXQgdGltZWxpbmUgZmVuY2VzIGFyZSBp bgo+Pj4+Pj4+IG9yZGVyIGJlY2F1c2UgdGhhdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgaW4gdGhlIGtl cm5lbC4KPj4+Pj4+Pgo+Pj4+Pj4+IFdoZW4gdXNlcnNwYWNlIGRvZXMgc29tZXRoaW5nIGxpa2Ug c3VibWl0dGluZyBmZW5jZXMgaW4gdGhlIG9yZGVyIDEsCj4+Pj4+Pj4gNSwgMyB0aGVuIGl0IGlz IGJyb2tlbiBhbmQgY2FuIGtlZXAgdGhlIHBpZWNlcy4gSW4gb3RoZXIgd29yZHMgdGhlCj4+Pj4+ Pj4ga2VybmVsIHNob3VsZCBub3QgY2FyZSBhYm91dCB0aGF0LCBidXQgcmF0aGVyIG1ha2Ugc3Vy ZSB0aGF0IGl0IG5ldmVyCj4+Pj4+Pj4gbG9vc2VzIGFueSBzeW5jaHJvbml6YXRpb24gbm8gbWF0 dGVyIHdoYXQuCj4+Pj4+Pj4KPj4+Pj4+PiBSZWdhcmRzLAo+Pj4+Pj4+IENocmlzdGlhbi4KPj4+ Pj4+Pgo+Pj4+Pj4+PiAtRGF2aWQKPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+Pj4+ PiAgwqDCoMKgwqDCoMKgIH0KPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqAgZHJt X3N5bmNvYmpfcHV0KHN5bmNvYmopOwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0 Owo+Pj4+Pj4+Pj4gIMKgwqAgfQo+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4+Pj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+Pj4+IGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==