From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7B57FC433B4 for ; Tue, 4 May 2021 11:13:29 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2DE2E611AE for ; Tue, 4 May 2021 11:13:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2DE2E611AE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2A4AF89F69; Tue, 4 May 2021 11:13:27 +0000 (UTC) Received: from mail-oi1-x22d.google.com (mail-oi1-x22d.google.com [IPv6:2607:f8b0:4864:20::22d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2A5B789F75 for ; Tue, 4 May 2021 11:13:25 +0000 (UTC) Received: by mail-oi1-x22d.google.com with SMTP id e25so8395281oii.2 for ; Tue, 04 May 2021 04:13:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=469yS1EUmkj1sNZVCzuONiB/BsJHodimlZhJJm7Fo3c=; b=ARUjpwCEj7mr0qTZAUGmxIxUK/yBXKY/+ac4CnE1PzNOLwJzX/dsWdiEpzYGa4HyEK kNnR5KD2IXc9OXRhJ15HlA27fyruDM6Y85zrEMy1E/Fy8E3UjntwweCmD9Mv/qjywPv6 uTyNLSxJgq8ktXify6fcADZ1FkP0F7dRzYRhE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=469yS1EUmkj1sNZVCzuONiB/BsJHodimlZhJJm7Fo3c=; b=nd1FJGfvT55JKetJjL4xfjZUt+XdVQ6EUDU8hdRccOKvS7Lgo2tcNrxsBVUDXy1hr0 eq2wsOLr2tBlA8k9FGAoy7dQOAWshTiI3T7tyJ0U/03iOcZ761h2DJPEVYGN+7K5jVlj eNr/YRLmAxnD2EaS+kthy4fu5Fmy+rSR6oKUZgdykVFyz1OMm1mF6ImUDq4KvCtFkkFb UHFyR1VPyAHDgGpRwsI5Gjbg2Wi8LglRabyfmSjzU0xgus1oZujDNj+ht6b6Xc63/vJY SkYUWa4wIJKBO0pDcSWxkEUrAErrALuZjjP/m0OuGhQ6NiAGzj0J4vQz7gDGzLpOS90Q WoOg== X-Gm-Message-State: AOAM533ybFgSCe0sgFAoCNfWrz9CovXjTzBHMC/VyP9AvpG0ge+Ae8Iy 5wYPatbOEG53ElXliBC4EmbN0nGA5w9XgSx+KvFBEg== X-Google-Smtp-Source: ABdhPJzBCo+b1/PKRyqEwcy8Pqo0rPiXk562j1EOgu9DE27b8ABJj4l/5mRNLCyqZKQLrFnd5foga+WcK4LyaQ87BgE= X-Received: by 2002:a05:6808:699:: with SMTP id k25mr2510034oig.101.1620126805256; Tue, 04 May 2021 04:13:25 -0700 (PDT) MIME-Version: 1.0 References: <1bd8105b-4a2a-2ad9-0b3c-a81590282f2e@gmail.com> <9ccfe4b2-91f0-b8e5-6327-bf3c8b6d1a24@gmail.com> <7227e6fb-1108-1096-ab2c-017d6422e90b@gmail.com> In-Reply-To: <7227e6fb-1108-1096-ab2c-017d6422e90b@gmail.com> From: Daniel Vetter Date: Tue, 4 May 2021 13:13:13 +0200 Message-ID: Subject: Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal To: =?UTF-8?Q?Christian_K=C3=B6nig?= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel , ML Mesa-dev , =?UTF-8?Q?Michel_D=C3=A4nzer?= , Jason Ekstrand , =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gVHVlLCBNYXkgNCwgMjAyMSBhdCAxMjo1MyBQTSBDaHJpc3RpYW4gS8O2bmlnCjxja29lbmln LmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbT4gd3JvdGU6Cj4KPiBBbSAwNC4wNS4yMSB1bSAxMTo0 NyBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4gPiBbU05JUF0KPiA+PiBZZWFoLCBpdCBqdXN0IHRh a2VzIHRvIGxvbmcgZm9yIHRoZSBwcmVlbXB0aW9uIHRvIGNvbXBsZXRlIHRvIGJlIHJlYWxseQo+ ID4+IHVzZWZ1bCBmb3IgdGhlIGZlYXR1cmUgd2UgYXJlIGRpc2N1c3NpbmcgaGVyZS4KPiA+Pgo+ ID4+IEFzIEkgc2FpZCB3aGVuIHRoZSBrZXJuZWwgcmVxdWVzdHMgdG8gcHJlZW1wdCBhIHF1ZXVl IHdlIGNhbiBlYXNpbHkgZXhwZWN0IGEKPiA+PiB0aW1lb3V0IG9mIH4xMDBtcyB1bnRpbCB0aGF0 IGNvbWVzIGJhY2suIEZvciBjb21wdXRlIHRoYXQgaXMgZXZlbiBpbiB0aGUKPiA+PiBtdWx0aXBs ZSBzZWNvbmRzIHJhbmdlLgo+ID4gMTAwbXMgZm9yIHByZWVtcHRpbmcgYW4gaWRsZSByZXF1ZXN0 IHNvdW5kcyBsaWtlIGJyb2tlbiBodyB0byBtZS4gT2YKPiA+IGNvdXJzZSBwcmVlbXRpbmcgc29t ZXRoaW5nIHRoYXQgYWN0dWFsbHkgcnVucyB0YWtlcyBhIHdoaWxlLCB0aGF0J3MKPiA+IG5vdGhp bmcgbmV3LiBCdXQgaXQncyBhbHNvIG5vdCB0aGUgdGhpbmcgd2UncmUgdGFsa2luZyBhYm91dCBo ZXJlLiBJcyB0aGlzCj4gPiAxMDBtcyBhY3R1YWwgbnVtYmVycyBmcm9tIGh3IGZvciBhbiBhY3R1 YWwgaWRsZSByaW5nYnVmZmVyPwo+Cj4gV2VsbCAxMDBtcyBpcyBqdXN0IGFuIGV4YW1wbGUgb2Yg dGhlIHNjaGVkdWxlciBncmFudWxhcml0eS4gTGV0IG1lCj4gZXhwbGFpbiBpbiBhIHdpZGVyIGNv bnRleHQuCj4KPiBUaGUgaGFyZHdhcmUgY2FuIGhhdmUgWCBxdWV1ZXMgbWFwcGVkIGF0IHRoZSBz YW1lIHRpbWUgYW5kIGV2ZXJ5IFkgdGltZQo+IGludGVydmFsIHRoZSBoYXJkd2FyZSBzY2hlZHVs ZXIgY2hlY2tzIGlmIHRob3NlIHF1ZXVlcyBoYXZlIGNoYW5nZWQgYW5kCj4gb25seSBpZiB0aGV5 IGhhdmUgY2hhbmdlZCB0aGUgbmVjZXNzYXJ5IHN0ZXBzIHRvIHJlbG9hZCB0aGVtIGFyZSBzdGFy dGVkLgo+Cj4gTXVsdGlwbGUgcXVldWVzIGNhbiBiZSByZW5kZXJpbmcgYXQgdGhlIHNhbWUgdGlt ZSwgc28geW91IGNhbiBoYXZlIFggYXMKPiBhIGhpZ2ggcHJpb3JpdHkgcXVldWUgYWN0aXZlIGFu ZCBqdXN0IHdhaXRpbmcgZm9yIGEgc2lnbmFsIHRvIHN0YXJ0IGFuZAo+IHRoZSBjbGllbnQgcmVu ZGVyaW5nIG9uZSBmcmFtZSBhZnRlciBhbm90aGVyIGFuZCBhIHRoaXJkIGJhY2tncm91bmQKPiBj b21wdXRlIHRhc2sgbWluaW5nIGJpdGNvaW5zIGZvciB5b3UuCj4KPiBBcyBsb25nIGFzIGV2ZXJ5 dGhpbmcgaXMgc3RhdGljIHRoaXMgaXMgcGVyZmVjdGx5IHBlcmZvcm1hbnQuIEFkZGluZyBhCj4g cXVldWUgdG8gdGhlIGxpc3Qgb2YgYWN0aXZlIHF1ZXVlcyBpcyBhbHNvIHJlbGF0aXZlbHkgc2lt cGxlLCBidXQgdGFraW5nCj4gb25lIGRvd24gcmVxdWlyZXMgeW91IHRvIHdhaXQgdW50aWwgd2Ug YXJlIHN1cmUgdGhlIGhhcmR3YXJlIGhhcyBzZWVuCj4gdGhlIGNoYW5nZSBhbmQgcmVsb2FkZWQg dGhlIHF1ZXVlcy4KPgo+IFRoaW5rIG9mIGl0IGFzIGFuIFJDVSBncmFjZSBwZXJpb2QuIFRoaXMg aXMgc2ltcGx5IG5vdCBzb21ldGhpbmcgd2hpY2gKPiBpcyBtYWRlIHRvIGJlIHVzZWQgY29uc3Rh bnRseSwgYnV0IHJhdGhlciBqdXN0IGF0IHByb2Nlc3MgdGVybWluYXRpb24uCgpVaCAuLi4gdGhh dCBpbmRlZWQgc291bmRzIHJhdGhlciBicm9rZW4uCgpPdG9oIGl0J3MganVzdCBhIGRtYV9mZW5j ZSB0aGF0J2Qgd2UnZCBpbmplY3QgYXMgdGhpcyB1bmxvYWQtZmVuY2UuIFNvCmJ5IGFuZCBsYXJn ZSBldmVyeW9uZSBzaG91bGQgYWxyZWFkeSBiZSBhYmxlIHRvIGNvcGUgd2l0aCBpdCB0YWtpbmcg YQpiaXQgbG9uZ2VyLiBTbyBmcm9tIGEgZGVzaWduIHBvdiBJIGRvbid0IHNlZSBhIGh1Z2UgcHJv YmxlbSwgYnV0IEkKZ3Vlc3MgeW91IGd1eXMgd29udCBiZSBoYXBweSBzaW5jZSBpdCBtZWFucyBv biBhbWQgaHcgdGhlcmUgd2lsbCBiZQpyYW5kb20gdW5zaWdodGx5IHN0YWxscyBpbiBkZXNrdG9w IGxpbnV4IHVzYWdlLgoKPiA+PiBUaGUgInByZWVtcHRpb24iIGZlYXR1cmUgaXMgcmVhbGx5IGNh bGxlZCBzdXNwZW5kIGFuZCBtYWRlIGp1c3QgZm9yIHRoZSBjYXNlCj4gPj4gd2hlbiB3ZSB3YW50 IHRvIHB1dCBhIHByb2Nlc3MgdG8gc2xlZXAgb3IgbmVlZCB0byBmb3JjZWZ1bGx5IGtpbGwgaXQg Zm9yCj4gPj4gbWlzYmVoYXZpb3Igb3Igc3R1ZmYgbGlrZSB0aGF0LiBJdCBpcyBub3QgbWVhbnQg dG8gYmUgdXNlZCBpbiBub3JtYWwKPiA+PiBvcGVyYXRpb24uCj4gPj4KPiA+PiBJZiB3ZSBvbmx5 IGF0dGFjaCBpdCBvbiAtPm1vdmUgdGhlbiB5ZWFoIG1heWJlIGEgbGFzdCByZXNvcnQgcG9zc2li aWxpdHkgdG8KPiA+PiBkbyBpdCB0aGlzIHdheSwgYnV0IEkgdGhpbmsgaW4gdGhhdCBjYXNlIHdl IGNvdWxkIHJhdGhlciBzdGljayB3aXRoIGtlcm5lbAo+ID4+IHN1Ym1pc3Npb25zLgo+ID4gV2Vs bCB0aGlzIGlzIGEgaHlicmlkIHVzZXJzcGFjZSByaW5nICsga2VybmVsIGF1Z21ldGVkIHN1Ym1p dCBtb2RlLCBzbyB5b3UKPiA+IGNhbiBrZWVwIGRtYS1mZW5jZXMgd29ya2luZy4gQmVjYXVzZSB0 aGUgZG1hLWZlbmNlIHN0dWZmIHdvbnQgd29yayB3aXRoCj4gPiBwdXJlIHVzZXJzcGFjZSBzdWJt aXQsIEkgdGhpbmsgdGhhdCBjb25jbHVzaW9uIGlzIHJhdGhlciBzb2xpZC4gT25jZSBtb3JlCj4g PiBldmVuIGFmdGVyIHRoaXMgbG9uZyB0aHJlYWQgaGVyZS4KPgo+IFdoZW4gYXNzaXN0ZWQgd2l0 aCB1bmxvYWQgZmVuY2VzLCB0aGVuIHllcy4gUHJvYmxlbSBpcyB0aGF0IEkgY2FuJ3Qgc2VlCj4g aG93IHdlIGNvdWxkIGltcGxlbWVudCB0aG9zZSBwZXJmb3JtYW50IGN1cnJlbnRseS4KCklzIHRo ZXJlIHJlYWxseSBubyB3YXkgdG8gZml4IGZ3IGhlcmU/IExpa2UgaWYgcHJvY2VzcyBzdGFydC90 ZWFyZG93bgp0YWtlcyAxMDBtcywgdGhhdCdzIGdvaW5nIHRvIHN1Y2sgbm8gbWF0dGVyIHdoYXQu Cgo+ID4+PiBBbHNvLCBpZiB1c2Vyc3BhY2UgbGllcyB0byB1cyBhbmQga2VlcHMgcHVzaGluZyBj cmFwIGludG8gdGhlIHJpbmcKPiA+Pj4gYWZ0ZXIgaXQncyBzdXBwb3NlZCB0byBiZSBpZGxlOiBV c2Vyc3BhY2UgaXMgYWxyZWFkeSBhbGxvd2VkIHRvIHdhc3RlCj4gPj4+IGdwdSB0aW1lLiBJZiB5 b3UncmUgdG9vIHdvcnJpZWQgYWJvdXQgdGhpcyBzZXQgYSBmYWlybHkgYWdncmVzc2l2ZQo+ID4+ PiBwcmVlbXB0IHRpbWVvdXQgb24gdGhlIHVubG9hZCBmZW5jZSwgYW5kIGtpbGwgdGhlIGNvbnRl eHQgaWYgaXQgdGFrZXMKPiA+Pj4gbG9uZ2VyIHRoYW4gd2hhdCBwcmVlbXB0aW5nIGFuIGlkbGUg cmluZyBzaG91bGQgdGFrZSAoYmVjYXVzZSB0aGF0Cj4gPj4+IHdvdWxkIGluZGljYXRlIGJyb2tl bi9ldmlsIHVzZXJzcGFjZSkuCj4gPj4gSSB0aGluayB5b3UgaGF2ZSB0aGUgd3JvbmcgZXhwZWN0 YXRpb24gaGVyZS4gSXQgaXMgcGVyZmVjdGx5IHZhbGlkIGFuZAo+ID4+IGV4cGVjdGVkIGZvciB1 c2Vyc3BhY2UgdG8ga2VlcCB3cml0aW5nIGNvbW1hbmRzIGludG8gdGhlIHJpbmcgYnVmZmVyLgo+ ID4+Cj4gPj4gQWZ0ZXIgYWxsIHdoZW4gb25lIGZyYW1lIGlzIGNvbXBsZXRlZCB0aGV5IHdhbnQg dG8gaW1tZWRpYXRlbHkgc3RhcnQKPiA+PiByZW5kZXJpbmcgdGhlIG5leHQgb25lLgo+ID4gU3Vy ZSwgZm9yIHRoZSB0cnVlIHVzZXJzcGFjZSBkaXJlY3Qgc3VibWl0IG1vZGVsLiBCdXQgd2l0aCB0 aGF0IHlvdSBkb24ndAo+ID4gZ2V0IGRtYS1mZW5jZSwgd2hpY2ggbWVhbnMgdGhpcyBncHUgd2ls bCBub3Qgd29yayBmb3IgM2QgYWNjZWwgb24gYW55Cj4gPiBjdXJyZW50IGxpbnV4IGRlc2t0b3Au Cj4KPiBJJ20gbm90IHN1cmUgb2YgdGhhdC4gSSd2ZSBsb29rZWQgYSBiaXQgaW50byBob3cgd2Ug Y291bGQgYWRkIHVzZXIKPiBmZW5jZXMgdG8gZG1hX3Jlc3Ygb2JqZWN0cyBhbmQgdGhhdCBpc24n dCB0aGF0IGhhcmQgYWZ0ZXIgYWxsLgoKSSB0aGluayBhcyBhIHByb29mIG9mIGNvbmNlcHQgaXQn cyBmaW5lLCBidXQgYXMgYW4gYWN0dWFsIHNvbHV0aW9uIC4uLgpwbHMgbm8uIFR3byByZWFzb25z OgotIGltcGxpY2l0IHN5bmMgaXMgYmFkCi0gdGhpcyBkb2Vzbid0IGZpeCBhbnl0aGluZyBmb3Ig ZXhwbGljaXQgc3luYyB1c2luZyBkbWFfZmVuY2UgaW4gdGVybXMKb2Ygc3luY19maWxlIG9yIGRy bV9zeW5jb2JqLgoKU28gaWYgd2UgZ28gd2l0aCB0aGUgcm91dGUgb2YgcGFwZXJpbmcgb3ZlciB0 aGlzIGluIHRoZSBrZXJuZWwsIHRoZW4KaXQnbGwgYmUgYSB0b24gbW9yZSB3b3JrIHRoYW4ganVz dCBoYWNraW5nIHNvbWV0aGluZyBpbnRvIGRtYV9yZXN2LgoKPiA+IFdoaWNoIHN1Y2tzLCBoZW5j ZSBzb21lIGh5YnJpZCBtb2RlbCBvZiB1c2luZyB0aGUgdXNlcnNwYWNlIHJpbmcgYW5kCj4gPiBr ZXJuZWwgYXVnbWVudGVkIHN1Ym1pdCBpcyBuZWVkZWQuIFdoaWNoIHdhcyBteSBpZGVhLgo+Cj4g WWVhaCwgSSB0aGluayB3aGVuIG91ciBmaXJtd2FyZSBmb2xrcyB3b3VsZCByZWFsbHkgcmVtb3Zl IHRoZSBrZXJuZWwKPiBxdWV1ZSBhbmQgd2Ugc3RpbGwgZG9uJ3QgaGF2ZQoKWWVhaCBJIHRoaW5r IGtlcm5lbCBxdWV1ZSBjYW4gYmUgcmVtb3ZlZC4gQnV0IHRoZSBwcmljZSBpcyB0aGF0IHlvdQpu ZWVkIHJlYXNvbmFibGUgZmFzdCBwcmVlbXB0IG9mIGlkbGUgY29udGV4dHMuCgpJIHJlYWxseSBj YW4ndCB1bmRlcnN0YW5kIGhvdyB0aGlzIGNhbiB0YWtlIG11bHRpcGxlIG1zLCBzb21ldGhpbmcK ZmVlbHMgdmVyeSBicm9rZW4gaW4gdGhlIGRlc2lnbiBvZiB0aGUgZncgKHNpbmNlIG9idmlvdXNs eSB0aGUgaHcgY2FuCnByZWVtcHQgYW4gaWRsZSBjb250ZXh0IHRvIGFub3RoZXIgb25lIHByZXR0 eSBmYXN0LCBvciB5b3UnZCByZW5kZXIKYW55IG11bHRpLWNsaWVudCBkZXNrdG9wIGFzIGEgc2xp ZGVzaG93IGF0IGJlc3QpLgoKPiA+Cj4gPj4gW1NOSVBdCj4gPj4gQ2FuJ3QgZmluZCB0aGF0IG9m IGhhbmQgZWl0aGVyLCBidXQgc2VlIHRoZSBhbWRncHVfbm9yZXRyeSBtb2R1bGUgb3B0aW9uLgo+ ID4+Cj4gPj4gSXQgYmFzaWNhbGx5IHRlbGxzIHRoZSBoYXJkd2FyZSBpZiByZXRyeSBwYWdlIGZh dWx0cyBzaG91bGQgYmUgc3VwcG9ydGVkIG9yCj4gPj4gbm90IGJlY2F1c2UgdGhpcyB3aG9sZSBU TEIgc2h1dGRvd24gdGhpbmcgd2hlbiB0aGV5IGFyZSBzdXBwb3J0ZWQgaXMKPiA+PiBleHRyZW1l bHkgY29zdGx5Lgo+ID4gSG0gc28gc3luY2hyb25vdXMgdGxiIHNob290ZG93biBpcyBhIGxvdCBt b3JlIGNvc3RseSB3aGVuIHlvdSBhbGxvdwo+ID4gcmV0cnlpbmcgb2YgcGFnZSBmYXVsdHM/Cj4K PiBQYXJ0aWFsbHkgY29ycmVjdCwgeWVzLgo+Cj4gU2VlIHdoZW4geW91IGhhdmUgcmV0cnkgcGFn ZSBmYXVsdHMgZW5hYmxlZCBhbmQgdW5tYXAgc29tZXRoaW5nIHlvdSBuZWVkCj4gdG8gbWFrZSBz dXJlIHRoYXQgZXZlcnlib2R5IHdoaWNoIGNvdWxkIGhhdmUgcG90ZW50aWFsbHkgdHJhbnNsYXRl ZCB0aGF0Cj4gcGFnZSBhbmQgaGFzIGEgVExCIGlzIGVpdGhlciBpbnZhbGlkYXRlZCBvciB3YWl0 ZWQgdW50aWwgdGhlIGFjY2VzcyBpcwo+IGNvbXBsZXRlZC4KPgo+IFNpbmNlIGV2ZXJ5IENVIGNv dWxkIGJlIHVzaW5nIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgdGFrZXMgYWdlcyB0bwo+IGNvbXBs ZXRlZCBjb21wYXJlZCB0byB0aGUgbm9ybWFsIGludmFsaWRhdGlvbiB3aGVyZSB5b3UganVzdCBp bnZhbGlkYXRlCj4gdGhlIEwxL0wyIGFuZCBhcmUgZG9uZS4KPgo+IEFkZGl0aW9uYWwgdG8gdGhh dCB0aGUgcmVjb3ZlcnkgYWRkcyBzb21lIGV4dHJhIG92ZXJoZWFkIHRvIGV2ZXJ5IG1lbW9yeQo+ IGFjY2Vzcywgc28gZXZlbiB3aXRob3V0IGEgZmF1bHQgeW91IGFyZSBxdWl0ZSBhIGJpdCBzbG93 ZXIgaWYgdGhpcyBpcwo+IGVuYWJsZWQuCgpXZWxsIHllcyBpdCdzIGNvbXBsaWNhdGVkLCBhbmQg aXQncyBldmVuIG1vcmUgZnVuIHdoZW4gdGhlIHRsYgppbnZhbGlkYXRlIGNvbWVzIGluIHRocm91 Z2ggdGhlIElPTU1VIHRocm91Z2ggQVRTLgoKQnV0IGFsc28gaWYgeW91IGRvbid0IHlvdXIgaHcg aXMganVzdCBicm9rZW4gZnJvbSBhIHNlY3VyaXR5IHBvdiwgbm8KcGFnZSBmYXVsdCBoYW5kbGlu ZyBmb3IgeW91LiBTbyBpdCdzIHJlYWxseSBub3Qgb3B0aW9uYWwuCgo+ID4gVGhhdCBzb3VuZHMg YmFkLCBiZWNhdXNlIGZvciBmdWxsIGhtbSBtb2RlIHlvdSBuZWVkIHRvIGJlIGFibGUgdG8gcmV0 cnkKPiA+IHBhZ2VmYXVsdHMuIFdlbGwgYXQgbGVhc3QgdGhlIFBBU0lEL0FUUy9JT01NVSBzaWRl IHdpbGwgZG8gdGhhdCwgYW5kIG1pZ2h0IGp1c3QKPiA+IGhhbmcgeW91ciBncHUgZm9yIGEgbG9u ZyB0aW1lIHdoaWxlIGl0J3Mgd2FpdGluZyBmb3IgdGhlIHZhLT5wYSBsb29rdXAKPiA+IHJlc3Bv bnNlIHRvIHJldHVybi4gU28gcmV0cnlpbmcgbG9va3VwcyBzaG91bGRuJ3QgYmUgYW55IGRpZmZl cmVudCByZWFsbHkuCj4gPgo+ID4gQW5kIHlvdSBhbHNvIG5lZWQgZmFpcmx5IGZhc3Qgc3luY2hy b25vdXMgdGxiIHNob290ZG93biBmb3IgaG1tLiBTbyBpZgo+ID4geW91ciBodyBoYXMgYSBwcm9i bGVtIHdpdGggYm90aCB0b2dldGhlciB0aGF0IHNvdW5kcyBiYWQuCj4KPiBDb21wbGV0ZWx5IGFn cmVlLiBBbmQgc2luY2UgaXQgd2FzIG15IGpvYiB0byB2YWxpZGF0ZSB0aGUgaW1wbGVtZW50YXRp b24KPiBvbiBWZWdhMTAgSSB3YXMgYWxzbyB0aGUgZmlyc3Qgb25lIHRvIHJlYWxpemUgdGhhdC4K Pgo+IEZlbGl4LCBhIGNvdXBsZSBvZiBvdGhlcnMgYW5kIG1lIGFyZSB0cnlpbmcgdG8gd29yayBh cm91bmQgdGhvc2UKPiByZXN0cmljdGlvbnMgZXZlciBzaW5jZS4KPgo+ID4gSSB3YXMgbW9yZSB0 aGlua2luZyBhYm91dCBoYW5kbGluZyBpdCBhbGwgaW4gdGhlIGtlcm5lbC4KPiA+IFllYWggY2Fu IGRvLCBqdXN0IG1lYW5zIHRoYXQgeW91IGFsc28gaGF2ZSB0byBjb3B5IHRoZSByaW5nYnVmZmVy IHN0dWZmCj4gPiBvdmVyIGZyb20gdXNlcnNwYWNlIHRvIHRoZSBrZXJuZWwuCj4KPiBUaGF0IGlz IG15IGxlYXN0IHdvcnJ5LiBUaGUgSUJzIGFyZSBqdXN0IGFkZHIrbGVuZ3RoLiwgc28gbm8gbW9y ZSB0aGFuCj4gMTYgYnl0ZXMgZm9yIGVhY2ggSUIuCgpBaCBvaywgbWF5YmUgSSdtIGJpYXNlZCBm cm9tIGRybS9pOTE1IHdoZXJlIGFuIGliIGxhdW5jaCArIHNlcW5vIGlzCnJhdGhlciBsb25nLCBi ZWNhdXNlIHRoZSBodyBmb2xrcyBrZWVwIHBpbGluZyBtb3JlIHdvcmthcm91bmRzIGFuZAphZGRp dGlvbmFsIGZsdXNoZXMgb24gdG9wLiBMaWtlIG9uIHNvbWUgaHcgdGhlIHJlY29tbWVuZGVkIHcv YSB3YXMgdG8KanVzdCBpc3N1ZSAzMiBncHUgY2FjaGUgZmx1c2hlcyBvciBzb21ldGhpbmcgbGlr ZSB0aGF0IChvdGhlcndpc2UgdGhlCnNlcW5vIHdyaXRlIGNvdWxkIGFycml2ZSBiZWZvcmUgdGhl IGdwdSBhY3R1YWxseSBmaW5pc2hlZCBmbHVzaGluZykKOi0vCgpDaGVlcnMsIERhbmllbAoKPiA+ IEl0IGFsc28gbWVhbnMgdGhhdCB0aGVyZSdzIG1vcmUgZGlmZmVyZW5jZXMgaW4gaG93IHlvdXIg dXNlcnNwYWNlIHdvcmtzCj4gPiBiZXR3ZWVuIGZ1bGwgdXNlcnNwYWNlIG1vZGUgKG5lY2Vzc2Fy eSBmb3IgY29tcHV0ZSkgYW5kIGxlZ2FjeSBkbWEtZmVuY2UKPiA+IG1vZGUgKG5lY2Vzc2FyeSBm b3IgZGVza3RvcCAzZCkuIFdoaWNoIGlzIGVzcGVjaWFsbHkgYmlnIGZ1biBmb3IgdnVsa2FuLAo+ ID4gc2luY2UgdGhhdCB3aWxsIGhhdmUgdG8gZG8gYm90aC4KPgo+IFRoYXQgaXMgdGhlIGJpZ2dl ciBwcm9ibGVtLgo+Cj4gQ2hyaXN0aWFuLgo+Cj4gPgo+ID4gQnV0IHRoZW4gYW1kIGlzIHN0aWxs IGhhbmdpbmcgb250byB0aGUgYW1kZ3B1IHZzIGFtZGtmZCBzcGxpdCwgc28geW91J3JlCj4gPiBn b2luZyBmb3IgbWF4IHBhaW4gaW4gdGhpcyBhcmVhIGFueXdheSA6LVAKPiA+IC1EYW5pZWwKPgoK Ci0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpo dHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK