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.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED 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 BE17CC433ED for ; Fri, 30 Apr 2021 08:58:37 +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 AEBDF6144D for ; Fri, 30 Apr 2021 08:58:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AEBDF6144D 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 DA6EA6F46B; Fri, 30 Apr 2021 08:58:35 +0000 (UTC) Received: from mail-oi1-x229.google.com (mail-oi1-x229.google.com [IPv6:2607:f8b0:4864:20::229]) by gabe.freedesktop.org (Postfix) with ESMTPS id ED7166F46B for ; Fri, 30 Apr 2021 08:58:34 +0000 (UTC) Received: by mail-oi1-x229.google.com with SMTP id k25so69330021oic.4 for ; Fri, 30 Apr 2021 01:58:34 -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=mvGD3xj7wqrPgbf3oc0RND0ErOCW/NirS0c9nDM3RFQ=; b=Dg5rgCVg55wRaYXysfQb7n7CEjo99Lr5Xuz214W7nPUkEXQ8Fu/oGvbhK3XeEEqLXm VSA2iyeHHr1/lMPFQFStTz17DpjSx0a12/uHjx18cG71aYbWLNuLuaB6rvkNnu32Qnjq czx5TOTh6qCSJIjxNt+2pNLG5IdlhJ/uGclrE= 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=mvGD3xj7wqrPgbf3oc0RND0ErOCW/NirS0c9nDM3RFQ=; b=sZ57mDN9X0YEIVWdnHtV2BLyxk0q7Hu6p8yOMEc1J6Ansegv2jX65cqxdHpcyr1oub 3HFzGYsCNMKDYqTJDUlclmMrPNujKLnEBixKrg4AHpdtDfIKlOweHDkxkL2R/O0nsF0O gNtJFY+LU+ByMBC3qKYDaEdW/ia17AwWt0HuXEzuJufQq+arUwieNkkx8xuYBeDAx5vB 9hX6xp4uhvcwPWTHPdVfjVXtOIbbXTlMFWMVjQoN0tQ9Us4jQHie4wEc7iTAfuCSY2IJ FEAECi7+792AXZY8D3sb4Ky24GiatL/gNTHletKQ1e5VGMewIG+WYCjw1lOCWG7V/S7A gaUQ== X-Gm-Message-State: AOAM532xyaqLQFCnX7jiPw11sUAkw/3ApqLcAxZ5gRlYdKNt6GtkRBf9 7iMAF73knboEGV55JY65pwXrXEg/PSugbNglGF4hIQ== X-Google-Smtp-Source: ABdhPJyv5A+amCnCqE9x03tjSIQT7jk1jsg7QHl1LcLF2So6DnfRUYEhMckbf05B6RLVnBzlWK6nd/6HqpdAd7Wc1vA= X-Received: by 2002:a05:6808:699:: with SMTP id k25mr10049226oig.101.1619773114129; Fri, 30 Apr 2021 01:58:34 -0700 (PDT) MIME-Version: 1.0 References: <19ca36c3-306e-5021-0243-3289c38ef067@gmail.com> <72f21ab9-9376-b366-2b69-94ea65e332c1@gmail.com> In-Reply-To: From: Daniel Vetter Date: Fri, 30 Apr 2021 10:58:22 +0200 Message-ID: Subject: Re: [Mesa-dev] [RFC] Linux Graphics Next: Explicit fences everywhere and no BO fences - initial proposal To: Alex Deucher 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: =?UTF-8?Q?Christian_K=C3=B6nig?= , ML Mesa-dev , dri-devel Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gVGh1LCBBcHIgMjksIDIwMjEgYXQgMToxMiBQTSBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3 bGwuY2g+IHdyb3RlOgo+Cj4gT24gV2VkLCBBcHIgMjgsIDIwMjEgYXQgMDQ6Mzk6MjRQTSAtMDQw MCwgQWxleCBEZXVjaGVyIHdyb3RlOgo+ID4gT24gV2VkLCBBcHIgMjgsIDIwMjEgYXQgMTA6MzUg QU0gRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90ZToKPiA+ID4KPiA+ID4gT24g V2VkLCBBcHIgMjgsIDIwMjEgYXQgMDM6Mzc6NDlQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5pZyB3 cm90ZToKPiA+ID4gPiBBbSAyOC4wNC4yMSB1bSAxNTozNCBzY2hyaWViIERhbmllbCBWZXR0ZXI6 Cj4gPiA+ID4gPiBPbiBXZWQsIEFwciAyOCwgMjAyMSBhdCAwMzoxMToyN1BNICswMjAwLCBDaHJp c3RpYW4gS8O2bmlnIHdyb3RlOgo+ID4gPiA+ID4gPiBBbSAyOC4wNC4yMSB1bSAxNDoyNiBzY2hy aWViIERhbmllbCBWZXR0ZXI6Cj4gPiA+ID4gPiA+ID4gT24gV2VkLCBBcHIgMjgsIDIwMjEgYXQg MDI6MjE6NTRQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiA+ID4gPiA+IE9u IFdlZCwgQXByIDI4LCAyMDIxIGF0IDEyOjMxOjA5UE0gKzAyMDAsIENocmlzdGlhbiBLw7ZuaWcg d3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+IEFtIDI4LjA0LjIxIHVtIDEyOjA1IHNjaHJpZWIgRGFu aWVsIFZldHRlcjoKPiA+ID4gPiA+ID4gPiA+ID4gPiBPbiBUdWUsIEFwciAyNywgMjAyMSBhdCAw MjowMToyMFBNIC0wNDAwLCBBbGV4IERldWNoZXIgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4g PiBPbiBUdWUsIEFwciAyNywgMjAyMSBhdCAxOjM1IFBNIFNpbW9uIFNlciA8Y29udGFjdEBlbWVy c2lvbi5mcj4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IE9uIFR1ZXNkYXksIEFwcmls IDI3dGgsIDIwMjEgYXQgNzozMSBQTSwgTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXgu ZGU+IHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gT2suIFNvIHRoYXQgd291bGQgb25seSBtYWtlIHRoZSBmb2xsb3dpbmcgdXNlIGNhc2Vz IGJyb2tlbiBmb3Igbm93Ogo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IC0gYW1kIHJlbmRlciAtPiBleHRlcm5hbCBncHUKPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IC0gYW1kIHZpZGVvIGVuY29kZSAtPiBuZXR3b3JrIGRldmljZQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IEZXSVcsICJvbmx5IiBicmVha2luZyBhbWQgcmVuZGVyIC0+ IGV4dGVybmFsIGdwdSB3aWxsIG1ha2UgdXMgcHJldHR5Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gdW5oYXBweQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJIGNvbmN1ci4gSSBoYXZlIHF1aXRl IGEgZmV3IHVzZXJzIHdpdGggYSBtdWx0aS1HUFUgc2V0dXAgaW52b2x2aW5nCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IEFNRCBoYXJkd2FyZS4KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gTm90ZSwgaWYgdGhpcyBicm9rZW5uZXNzIGNhbid0IGJlIGF2b2lk ZWQsIEknZCBwcmVmZXIgYSB0byBnZXQgYSBjbGVhcgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBl cnJvciwgYW5kIG5vdCBiYWQgcmVzdWx0cyBvbiBzY3JlZW4gYmVjYXVzZSBub3RoaW5nIGlzIHN5 bmNocm9uaXplZAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhbnltb3JlLgo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gSXQncyBhbiB1cGNvbWluZyByZXF1aXJlbWVudCBmb3Igd2luZG93c1sxXSwgc28g eW91IGFyZSBsaWtlbHkgdG8KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHN0YXJ0IHNlZWluZyB0aGlz IGFjcm9zcyBhbGwgR1BVIHZlbmRvcnMgdGhhdCBzdXBwb3J0IHdpbmRvd3MuICBJCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiB0aGluayB0aGUgdGltaW5nIGRlcGVuZHMgb24gaG93IHF1aWNrbHkgdGhl IGxlZ2FjeSBoYXJkd2FyZSBzdXBwb3J0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzdGlja3MgYXJv dW5kIGZvciBlYWNoIHZlbmRvci4KPiA+ID4gPiA+ID4gPiA+ID4gPiBZZWFoIGJ1dCBodyBzY2hl ZHVsaW5nIGRvZXNuJ3QgbWVhbiB0aGUgaHcgaGFzIHRvIGJlIGNvbnN0cnVjdGVkIHRvIG5vdAo+ ID4gPiA+ID4gPiA+ID4gPiA+IHN1cHBvcnQgaXNvbGF0aW5nIHRoZSByaW5nYnVmZmVyIGF0IGFs bC4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEUuZy4gZXZlbiBpZiB0 aGUgaHcgbG9zZXMgdGhlIGJpdCB0byBwdXQgdGhlIHJpbmdidWZmZXIgb3V0c2lkZSBvZiB0aGUK PiA+ID4gPiA+ID4gPiA+ID4gPiB1c2Vyc3BhY2UgZ3B1IHZtLCBpZiB5b3UgaGF2ZSBwYWdldGFi bGVzIEknbSBzZXJpb3VzbHkgaG9waW5nIHlvdSBoYXZlIHIvbwo+ID4gPiA+ID4gPiA+ID4gPiA+ IHB0ZSBmbGFncy4gT3RoZXJ3aXNlIHRoZSBlbnRpcmUgInNoYXJlIGFkZHJlc3Mgc3BhY2Ugd2l0 aCBjcHUgc2lkZSwKPiA+ID4gPiA+ID4gPiA+ID4gPiBzZWFtbGVzc2x5IiB0aGluZyBpcyBvdXQg b2YgdGhlIHdpbmRvdy4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEFu ZCB3aXRoIHRoYXQgci9vIGJpdCBvbiB0aGUgcmluZ2J1ZmZlciB5b3UgY2FuIG9uY2UgbW9yZSBm b3JjZSBzdWJtaXQKPiA+ID4gPiA+ID4gPiA+ID4gPiB0aHJvdWdoIGtlcm5lbCBzcGFjZSwgYW5k IGFsbCB0aGUgbGVnYWN5IGRtYV9mZW5jZSBiYXNlZCBzdHVmZiBrZWVwcwo+ID4gPiA+ID4gPiA+ ID4gPiA+IHdvcmtpbmcuIEFuZCB3ZSBkb24ndCBoYXZlIHRvIGludmVudCBzb21lIGhvcnJlbmRv dXMgdXNlcnNwYWNlIGZlbmNlIGJhc2VkCj4gPiA+ID4gPiA+ID4gPiA+ID4gaW1wbGljaXQgc3lu YyBtZWNoYW5pc20gaW4gdGhlIGtlcm5lbCwgYnV0IGNhbiBpbnN0ZWFkIGRvIHRoaXMgdHJhbnNp dGlvbgo+ID4gPiA+ID4gPiA+ID4gPiA+IHByb3Blcmx5IHdpdGggZHJtX3N5bmNvYmogdGltZWxp bmUgZXhwbGljaXQgc3luYyBhbmQgcHJvdG9jb2wgcmV2aW5nLgo+ID4gPiA+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQXQgbGVhc3QgSSB0aGluayB5b3UnZCBoYXZlIHRvIHdvcmsg ZXh0cmEgaGFyZCB0byBjcmVhdGUgYSBncHUgd2hpY2gKPiA+ID4gPiA+ID4gPiA+ID4gPiBjYW5u b3QgcG9zc2libHkgYmUgaW50ZXJjZXB0ZWQgYnkgdGhlIGtlcm5lbCwgZXZlbiB3aGVuIGl0J3Mg ZGVzaWduZWQgdG8KPiA+ID4gPiA+ID4gPiA+ID4gPiBzdXBwb3J0IHVzZXJzcGFjZSBkaXJlY3Qg c3VibWl0IG9ubHkuCj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBPciBh cmUgeW91ciBodyBlbmdpbmVlcnMgbW9yZSBjcmVhdGl2ZSBoZXJlIGFuZCB3ZSdyZSBzY3Jld2Vk Pwo+ID4gPiA+ID4gPiA+ID4gPiBUaGUgdXBjb21taW5nIGhhcmR3YXJlIGdlbmVyYXRpb24gd2ls bCBoYXZlIHRoaXMgaGFyZHdhcmUgc2NoZWR1bGVyIGFzIGEKPiA+ID4gPiA+ID4gPiA+ID4gbXVz dCBoYXZlLCBidXQgdGhlcmUgYXJlIGNlcnRhaW4gd2F5cyB3ZSBjYW4gc3RpbGwgc3RpY2sgdG8g dGhlIG9sZAo+ID4gPiA+ID4gPiA+ID4gPiBhcHByb2FjaDoKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gPiA+ID4gMS4gVGhlIG5ldyBoYXJkd2FyZSBzY2hlZHVsZXIgY3VycmVudGx5IHN0 aWxsIHN1cHBvcnRzIGtlcm5lbCBxdWV1ZXMgd2hpY2gKPiA+ID4gPiA+ID4gPiA+ID4gZXNzZW50 aWFsbHkgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBoYXJkd2FyZSByaW5nIGJ1ZmZlci4KPiA+ID4g PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gMi4gTWFwcGluZyB0aGUgdG9wIGxldmVsIHJp bmcgYnVmZmVyIGludG8gdGhlIFZNIGF0IGxlYXN0IHBhcnRpYWxseSBzb2x2ZXMKPiA+ID4gPiA+ ID4gPiA+ID4gdGhlIHByb2JsZW0uIFRoaXMgd2F5IHlvdSBjYW4ndCBtYW5pcHVsYXRlIHRoZSBy aW5nIGJ1ZmZlciBjb250ZW50LCBidXQgdGhlCj4gPiA+ID4gPiA+ID4gPiA+IGxvY2F0aW9uIGZv ciB0aGUgZmVuY2UgbXVzdCBzdGlsbCBiZSB3cml0ZWFibGUuCj4gPiA+ID4gPiA+ID4gPiBZZWFo IGFsbG93aW5nIHVzZXJzcGFjZSB0byBsaWUgYWJvdXQgY29tcGxldGlvbiBmZW5jZXMgaW4gdGhp cyBtb2RlbCBpcwo+ID4gPiA+ID4gPiA+ID4gb2suIFRob3VnaCBJIGhhdmVuJ3QgdGhvdWdodCB0 aHJvdWdoIGZ1bGwgY29uc2VxdWVuY2VzIG9mIHRoYXQsIGJ1dCBJCj4gPiA+ID4gPiA+ID4gPiB0 aGluayBpdCdzIG5vdCBhbnkgd29yc2UgdGhhbiB1c2Vyc3BhY2UgbHlpbmcgYWJvdXQgd2hpY2gg YnVmZmVycy9hZGRyZXNzCj4gPiA+ID4gPiA+ID4gPiBpdCB1c2VzIGluIHRoZSBjdXJyZW50IG1v ZGVsIC0gd2UgcmVseSBvbiBodyB2bSBwdGVzIHRvIGNhdGNoIHRoYXQgc3R1ZmYuCj4gPiA+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gQWxzbyBpdCBtaWdodCBiZSBnb29kIHRvIHN3aXRjaCB0 byBhIG5vbi1yZWNvdmVyYWJsZSBjdHggbW9kZWwgZm9yIHRoZXNlLgo+ID4gPiA+ID4gPiA+ID4g VGhhdCdzIGFscmVhZHkgd2hhdCB3ZSBkbyBpbiBpOTE1IChvcHQtaW4sIGJ1dCBhbGwgY3VycmVu dCB1bWQgdXNlIHRoYXQKPiA+ID4gPiA+ID4gPiA+IG1vZGUpLiBTbyBhbnkgaGFuZy93YXRjaGRv ZyBqdXN0IGtpbGxzIHRoZSBlbnRpcmUgY3R4IGFuZCB5b3UgZG9uJ3QgaGF2ZQo+ID4gPiA+ID4g PiA+ID4gdG8gd29ycnkgYWJvdXQgdXNlcnNwYWNlIGRvaW5nIHNvbWV0aGluZyBmdW5ueSB3aXRo IGl0J3MgcmluZ2J1ZmZlci4KPiA+ID4gPiA+ID4gPiA+IFNpbXBsaWZpZXMgZXZlcnl0aGluZy4K PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBBbHNvIG9mYyB1c2Vyc3BhY2UgZmVuY2lu ZyBzdGlsbCBkaXNhbGxvd2VkLCBidXQgc2luY2UgdXNlcnNwYWNlIHdvdWxkCj4gPiA+ID4gPiA+ ID4gPiBxdWV1IHVwIGFsbCB3cml0ZXMgdG8gaXRzIHJpbmdidWZmZXIgdGhyb3VnaCB0aGUgZHJt L3NjaGVkdWxlciwgd2UnZAo+ID4gPiA+ID4gPiA+ID4gaGFuZGxlIGRlcGVuZGVuY2llcyB0aHJv dWdoIHRoYXQgc3RpbGwuIE5vdCBncmVhdCwgYnV0IHdvcmthYmxlLgo+ID4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiA+IFRoaW5raW5nIGFib3V0IHRoaXMsIG5vdCBldmVuIG1hcHBpbmcgdGhl IHJpbmdidWZmZXIgci9vIGlzIHJlcXVpcmVkLCBpdCdzCj4gPiA+ID4gPiA+ID4gPiBqdXN0IHRo YXQgd2UgbXVzdCBxdWV1ZSB0aGluZ3MgdGhyb3VnIHRoZSBrZXJuZWwgdG8gcmVzb2x2ZSBkZXBl bmRlbmNpZXMKPiA+ID4gPiA+ID4gPiA+IGFuZCBldmVyeXRoaW5nIHdpdGhvdXQgYnJlYWtpbmcg ZG1hX2ZlbmNlLiBJZiB1c2Vyc3BhY2UgbGllcywgdGRyIHdpbGwKPiA+ID4gPiA+ID4gPiA+IHNo b290IGl0IGFuZCB0aGUga2VybmVsIHN0b3BzIHJ1bm5pbmcgdGhhdCBjb250ZXh0IGVudGlyZWx5 Lgo+ID4gPiA+ID4gPiBUaGlua2luZyBtb3JlIGFib3V0IHRoYXQgYXBwcm9hY2ggSSBkb24ndCB0 aGluayB0aGF0IGl0IHdpbGwgd29yayBjb3JyZWN0bHkuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ IFNlZSB3ZSBub3Qgb25seSBuZWVkIHRvIHdyaXRlIHRoZSBmZW5jZSBhcyBzaWduYWwgdGhhdCBh biBJQiBpcyBzdWJtaXR0ZWQsCj4gPiA+ID4gPiA+IGJ1dCBhbHNvIGFkanVzdCBhIGJ1bmNoIG9m IHByaXZpbGVnZWQgaGFyZHdhcmUgcmVnaXN0ZXJzLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBX aGVuIHVzZXJzcGFjZSBjb3VsZCBkbyB0aGF0IGZyb20gaXRzIElCcyBhcyB3ZWxsIHRoZW4gdGhl cmUgaXMgbm90aGluZwo+ID4gPiA+ID4gPiBibG9ja2luZyBpdCBmcm9tIHJlcHJvZ3JhbW1pbmcg dGhlIHBhZ2UgdGFibGUgYmFzZSBhZGRyZXNzIGZvciBleGFtcGxlLgo+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiBXZSBjb3VsZCBkbyB0aG9zZSB3cml0ZXMgd2l0aCB0aGUgQ1BVIGFzIHdlbGwsIGJ1 dCB0aGF0IHdvdWxkIGJlIGEgaHVnZQo+ID4gPiA+ID4gPiBwZXJmb3JtYW5jZSBkcm9wIGJlY2F1 c2Ugb2YgdGhlIGFkZGl0aW9uYWwgbGF0ZW5jeS4KPiA+ID4gPiA+IFRoYXQncyBub3Qgd2hhdCBJ J20gc3VnZ2VzdGluZy4gSSdtIHN1Z2dlc3RpbmcgeW91IGhhdmUgdGhlIHF1ZXVlIGFuZAo+ID4g PiA+ID4gZXZlcnl0aGluZyBpbiB1c2Vyc3BhY2UsIGxpa2UgaW4gd29uZG93cy4gRmVuY2VzIGFy ZSBleGFjdGx5IGhhbmRsZWQgbGlrZQo+ID4gPiA+ID4gb24gd2luZG93cyB0b28uIFRoZSBkaWZm ZXJlbmNlIGlzOgo+ID4gPiA+ID4KPiA+ID4gPiA+IC0gQWxsIG5ldyBhZGRpdGlvbnMgdG8gdGhl IHJpbmdidWZmZXIgYXJlIGRvbmUgdGhyb3VnaCBhIGtlcm5lbCBpb2N0bAo+ID4gPiA+ID4gICAg Y2FsbCwgdXNpbmcgdGhlIGRybS9zY2hlZHVsZXIgdG8gcmVzb2x2ZSBkZXBlbmRlbmNpZXMuCj4g PiA+ID4gPgo+ID4gPiA+ID4gLSBNZW1vcnkgbWFuYWdlbWVudCBpcyBhbHNvIGRvbmUgbGlrZSB0 b2RheSBpbnQgdGhhdCBpb2N0bC4KPiA+ID4gPiA+Cj4gPiA+ID4gPiAtIFREUiBtYWtlcyBzdXJl IHRoYXQgaWYgdXNlcnNwYWNlIGFidXNlcyB0aGUgY29udHJhY3QgKHdoaWNoIGl0IGNhbiwgYnV0 Cj4gPiA+ID4gPiAgICBpdCBjYW4gZG8gdGhhdCBhbHJlYWR5IHRvZGF5IGJlY2F1c2UgdGhlcmUn cyBhbHNvIG5vIGNvbW1hbmQgcGFyc2VyIHRvCj4gPiA+ID4gPiAgICBlLmcuIHN0b3AgZ3B1IHNl bWFwaG9yZXMpIHRoZSBlbnRpcmUgY29udGV4dCBpcyBzaG90IGFuZCB0ZXJtaW5hbGx5Cj4gPiA+ ID4gPiAgICBraWxsZWQuIFVzZXJzcGFjZSBoYXMgdG8gdGhlbiBzZXQgdXAgYSBuZXcgb25lLiBU aGlzIGlzbid0IGhvdyBhbWRncHUKPiA+ID4gPiA+ICAgIHJlY292ZXJ5IHdvcmtzIHJpZ2h0IG5v dywgYnV0IGk5MTUgc3VwcG9ydHMgaXQgYW5kIEkgdGhpbmsgaXQncyBhbHNvIHRoZQo+ID4gPiA+ ID4gICAgYmV0dGVyIG1vZGVsIGZvciB1c2Vyc3BhY2UgZXJyb3IgcmVjb3ZlcnkgYW55d2F5Lgo+ ID4gPiA+ID4KPiA+ID4gPiA+IFNvIGZyb20gaHcgcG92IHRoaXMgd2lsbCBsb29rIF9leGFjdGx5 XyBsaWtlIHdpbmRvd3MsIGV4Y2VwdCB3ZSBuZXZlciBwYWdlCj4gPiA+ID4gPiBmYXVsdC4KPiA+ ID4gPiA+Cj4gPiA+ID4gPiAgRnJvbSBzdyBwb3YgdGhpcyB3aWxsIGxvb2sgX2V4YWN0bHlfIGxp a2UgY3VycmVudCBrZXJuZWwgcmluZ2J1ZiBtb2RlbCwKPiA+ID4gPiA+IHdpdGggZXhhY3RseSBz YW1lIGRtYV9mZW5jZSBzZW1hbnRpY3MuIElmIHVzZXJzcGFjZSBsaWVzLCBkb2VzIHNvbWV0aGlu Zwo+ID4gPiA+ID4gc3R1cGlkIG9yIG90aGVyd2lzZSBicmVha3MgdGhlIHVhcGkgY29udHJhY3Qs IHZtIHB0ZXMgc3RvcCBpbnZhbGlkIGFjY2Vzcwo+ID4gPiA+ID4gYW5kIHRkciBraWxscyBpdCBp ZiBpdCB0YWtlcyB0b28gbG9uZy4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBXaGVyZSBkbyB5b3UgbmVl ZCBwcml2aWxlZGdlIElCIHdyaXRlcyBvciBhbnl0aGluZyBsaWtlIHRoYXQ/Cj4gPiA+ID4KPiA+ ID4gPiBGb3Igd3JpdGluZyB0aGUgZmVuY2UgdmFsdWUgYW5kIHNldHRpbmcgdXAgdGhlIHByaW9y aXR5IGFuZCBWTSByZWdpc3RlcnMuCj4gPiA+Cj4gPiA+IEknbSBjb25mdXNlZC4gSG93IGRvZXMg dGhpcyB3b3JrIG9uIHdpbmRvd3MgdGhlbiB3aXRoIHB1cmUgdXNlcnNwYWNlCj4gPiA+IHN1Ym1p dD8gV2luZG93cyB1c2Vyc3BhY2Ugc2V0cyBpdHMgcHJpb3J0aWVzIGFuZCB2bSByZWdpc3RlcnMg aXRzZWxmIGZyb20KPiA+ID4gdXNlcnNwYWNlPwo+ID4KPiA+IFdoZW4gdGhlIHVzZXIgYWxsb2Nh dGVzIHVzZXJtb2RlIHF1ZXVlcywgdGhlIGtlcm5lbCBkcml2ZXIgc2V0cyB1cCBhCj4gPiBxdWV1 ZSBkZXNjcmlwdG9yIGluIHRoZSBrZXJuZWwgd2hpY2ggZGVmaW5lcyB0aGUgbG9jYXRpb24gb2Yg dGhlIHF1ZXVlCj4gPiBpbiBtZW1vcnksIHdoYXQgcHJpb3JpdHkgaXQgaGFzLCB3aGF0IHBhZ2Ug dGFibGVzIGl0IHNob3VsZCB1c2UsIGV0Yy4KPiA+IFVzZXIgbW9kZSBjYW4gdGhlbiBzdGFydCB3 cml0aW5nIGNvbW1hbmRzIHRvIGl0cyBxdWV1ZXMuICBXaGVuIHRoZXkKPiA+IGFyZSByZWFkeSBm b3IgdGhlIGhhcmR3YXJlIHRvIHN0YXJ0IGV4ZWN1dGluZyB0aGVtLCB0aGV5IHJpbmcgYQo+ID4g ZG9vcmJlbGwgd2hpY2ggc2lnbmFscyB0aGUgc2NoZWR1bGVyIGFuZCBpdCBtYXBzIHRoZSBxdWV1 ZSBkZXNjcmlwdG9ycwo+ID4gdG8gSFcgcXVldWUgc2xvdHMgYW5kIHRoZXkgc3RhcnQgZXhlY3V0 aW5nLiAgVGhlIHVzZXIgb25seSBoYXMgYWNjZXNzCj4gPiB0byBpdCdzIHF1ZXVlcyBhbmQgYW55 IGJ1ZmZlcnMgaXQgaGFzIG1hcHBlZCBpbiBpdCdzIEdQVSB2aXJ0dWFsCj4gPiBhZGRyZXNzIHNw YWNlLiAgV2hpbGUgdGhlIHF1ZXVlcyBhcmUgc2NoZWR1bGVkLCB0aGUgdXNlciBjYW4ga2VlcAo+ ID4gc3VibWl0dGluZyB3b3JrIHRvIHRoZW0gYW5kIHRoZXkgd2lsbCBrZWVwIGV4ZWN1dGluZyB1 bmxlc3MgdGhleSBnZXQKPiA+IHByZWVtcHRlZCBieSB0aGUgc2NoZWR1bGVyIGR1ZSB0byBvdmVy c3Vic2NyaXB0aW9uIG9yIGEgcHJpb3JpdHkgY2FsbAo+ID4gb3IgYSByZXF1ZXN0IGZyb20gdGhl IGtlcm5lbCBkcml2ZXIgdG8gcHJlZW1wdCwgZXRjLgo+Cj4gWWVhaCwgd29ya3MgbGlrZSB3aXRo IG91ciBzdHVmZi4KPgo+IEkgZG9uJ3Qgc2VlIGEgcHJvYmxlbSB0YmguIEl0J3Mgc2xpZ2h0bHkg c2lsbHkgZ29pbmcgdGhlIGRldG91ciB3aXRoIHRoZQo+IGtlcm5lbCBpb2N0bCwgYW5kIGl0J3Mg YW5ub3lpbmcgdGhhdCB5b3Ugc3RpbGwgaGF2ZSB0byB1c2UgZHJtL3NjaGVkdWxlcgo+IHRvIHJl c29sdmUgZGVwZW5kZW5jaWVzIGluc3RlYWQgb2YgZ3B1IHNlbWFwaG9yZXMgYW5kIGFsbCB0aGF0 LiBCdXQgdGhpcwo+IG9ubHkgYXBwbGllcyB0byBsZWdhY3kgd2luc3lzIG1vZGUsIGNvbXB1dGUg KGUuZy4gdmsgd2l0aG91dCB3aW5zeXMpIGNhbgo+IHVzZSB0aGUgZnVsbCBwb3dlci4gSnVzdCBu ZWVkcyBhIGZsYWcgb3Igc29tZXRoaW5nIHdoZW4gc2V0dGluZyB1cCB0aGUKPiBjb250ZXh0Lgo+ Cj4gQW5kIGJlc3QgcGFydCBpcyB0aGF0IGZyb20gaHcgcG92IHRoaXMgcmVhbGx5IGlzIGluZGlz dGluZ3Vpc2hhYmxlIGZyb20KPiB0aGUgZnVsbCBvbiB1c2Vyc3BhY2Ugc3VibWl0IG1vZGVsLgo+ Cj4gVGhlIHRoaW5nIHdoZXJlIGl0IGdldHMgYW5ub3lpbmcgaXMgd2hlbiB5b3UgdXNlIG9uZSBv ZiB0aGVzZSBuZXcgY3B1Cj4gaW5zdHJ1Y3Rpb25zIHdoaWNoIGRvIGRpcmVjdCBzdWJtaXQgdG8g aHcgYW5kIHBhc3MgYWxvbmcgdGhlIHBhc2lkIGlkCj4gYmVoaW5kIHRoZSBzY2VuZXMuIFRoYXQn cyB0cnVseSBzb21ldGhpbmcgeW91IGNhbid0IGludGVyY2VwdCBhbnltb3JlIGluCj4gdGhlIGtl cm5lbCBhbmQgZmFrZSB0aGUgbGVnYWN5IGRtYV9mZW5jZSB3b3JsZC4KPgo+IEJ1dCB3aGF0IHlv dSdyZSBkZXNjcmliaW5nIGhlcmUgc291bmRzIGxpa2UgYm9nIHN0YW5kYXJkIHN0dWZmLCBhbmQg YWxzbwo+IHByZXR0eSBlYXN5IHRvIGtlZXAgd29ya2luZyB3aXRoIGV4YWN0bHkgdGhlIGN1cnJl bnQgbW9kZWwuCj4KPiBPZmMgd2UnbGwgd2FudCB0byBwdXNoIGZvcndhcmQgYSBtb3JlIG1vZGVy biBtb2RlbCB0aGF0IGJldHRlciBzdWl0cwo+IG1vZGVybiBncHVzLCBidXQgSSBkb24ndCBzZWUg YW55IGhhcmQgcmVxdWlyZW1lbnQgaGVyZSBmcm9tIHRoZSBodyBzaWRlLgoKQWRkaW5nIGEgYml0 IG1vcmUgZGV0YWlsIG9uIHdoYXQgSSBoYXZlIGluIG1pbmQ6CgotIG1lbW9yeSBtYW5hZ2VtZW50 IHdvcmtzIGxpa2UgYW1kZ3B1IGRvZXMgdG9kYXksIHNvIGFsbCBidWZmZXJzIGFyZQpwcmUtYm91 bmQgdG8gdGhlIGdwdSB2bSwgd2Uga2VlcCB0aGUgZW50aXJlIGJvIHNldCBtYXJrZWQgYXMgYnVz eSB3aXRoCnRoZSBidWxrIGxydSB0cmljayBmb3IgZXZlcnkgY29tbWFuZCBzdWJtaXNzaW9uLgoK LSBmb3IgdGhlIHJpbmdidWZmZXIsIHVzZXJzcGFjZSBhbGxjb2F0ZXMgYSBzdWl0YWJseSBzaXpl ZCBibyBmb3IKcmluZ2J1ZmZlciwgcmluZy90YWlsL3NlcW5vIGFuZCB3aGF0ZXZlciBlbHNlIGl0 IG5lZWRzCgotIHVzZXJzcGFjZSB0aGVuIGFza3MgdGhlIGtlcm5lbCB0byBtYWtlIHRoYXQgaW50 byBhIGh3IGNvbnRleHQsIHdpdGgKYWxsIHRoZSBwcml2aWxlZGdlcyBzZXR1cC4gRG9vcmJlbGwg d2lsbCBvbmx5IGJlIG1hcHBlZCBpbnRvIGtlcm5lbAooaHcgY2FuJ3QgdGVsbCB0aGUgZGlmZmVy ZW5jZSBhbnl3YXkpLCBidXQgaWYgaXQgaGFwcGVucyB0byBhbHNvIGJlCnZpc2libGUgdG8gdXNl cnNwYWNlIHRoYXQncyBubyBwcm9ibGVtLiBXZSBhc3N1bWUgdXNlcnNwYWNlIGNhbiByaW5nCnRo ZSBkb29yYmVsbCBhbnl0aW1lIGl0IHdhbnRzIHRvLgoKLSB3ZSBkbyBkb3VibGUgbWVtb3J5IG1h bmFnZW1lbnQ6IE9uZSBkbWFfZmVuY2Ugd29ya3Mgc2ltaWxhciB0byB0aGUKYW1ka2ZkIHByZWVt cHQgZmVuY2UsIGV4Y2VwdCBpdCBkb2Vzbid0IHByZWVtcHQgYnV0IGRvZXMgYW55dGhpbmcKcmVx dWlyZWQgdG8gbWFrZSB0aGUgaHcgY29udGV4dCB1bnJ1bm5hYmxlIGFuZCB0YWtlIGl0IG91dCBv ZiB0aGUgaHcKc2NoZWR1bGVyIGVudGlyZWx5LiBUaGlzIG1pZ2h0IGludm9sdmUgdW5tYXBwaW5n IHRoZSBkb29yYmVsbCBpZgp1c2Vyc3BhY2UgaGFzIGFjY2VzcyB0byBpdC4KCi0gYnV0IHdlIGFs c28gZG8gY2xhc3NpYyBlbmQtb2YtYmF0Y2ggZmVuY2VzLCBzbyB0aGF0IGltcGxpY2l0IGZlbmNp bmcKYW5kIGFsbCB0aGF0IGtlZXBzIHdvcmtpbmcuIFRoZSAibWFrZSBodyBjdHggdW5ydW5uYWJs ZSIgZmVuY2UgbXVzdAphbHNvIHdhaXQgZm9yIGFsbCBvZiB0aGVzZSBwZW5kaW5nIHN1Ym1pc3Np b25zIHRvIGNvbXBsZXRlLgoKLSBmb3IgdGhlIGFjdHVhbCBlbmQtb2YtYmF0Y2hidWZmZXIgZG1h X2ZlbmNlIGl0J3MgYWxtb3N0IGFsbCBmYWtlZCwKYnV0IHdpdGggc29tZSBjaGVja3MgaW4gdGhl IGtlcm5lbCB0byBrZWVwIHVwIHRoZSBndWFyYW50ZWVzLiBjcyBmbG93CmlzIHJvdWdobHkKCjEu IHVzZXJzcGFjZSBkaXJlY3RseSB3cml0ZXMgaW50byB0aGUgdXNlcnNwYWNlIHJpbmdidWZmZXIu IEl0IG5lZWRzCnRvIGZvbGxvdyB0aGUga2VybmVsJ3MgcnVsZSBmb3IgdGhpcyBpZiBpdCB3YW50 cyB0aGluZ3MgdG8gd29yawpjb3JyZWN0bHksIGJ1dCB3ZSBhc3N1bWUgZXZpbCB1c2Vyc3BhY2Ug aXMgYWxsb3dlZCB0byB3cml0ZSB3aGF0ZXZlcgppdCB3YW50cyB0byB0aGUgcmluZywgYW5kIGNo YW5nZSB0aGF0IHdoZW5ldmVyIGl0IHdhbnRzLiBVc2Vyc3BhY2UKZG9lcyBub3QgdXBkYXRlIHJp bmcgaGVhZC90YWlsIHBvaW50ZXJzLgoKMi4gY3MgaW9jdGwganVzdCBjb250YWluczogYSkgaGVh ZCAodGhlIHRoaW5nIHVzZXJzcGFjZSBhZHZhbmNlcywgdGFpbAppcyB3aGVyZSB0aGUgZ3B1IGNv bnN1bWVzKSBwb2ludGVyIHZhbHVlIHRvIHdyaXRlIHRvIGtpY2sgb2YgdGhpcyBuZXcKYmF0Y2gg YikgaW4tZmVuY2VzIGIpIG91dC1mZW5jZS4KCjMuIGtlcm5lbCBkcm0vc2NoZWR1bGVyIGhhbmRs ZXMgdGhpcyBsaWtlIGFueSBvdGhlciByZXF1ZXN0IGFuZCBmaXJzdAp3YWl0cyBmb3IgdGhlIGlu LWZlbmNlcyB0byBhbGwgc2lnbmFsLCB0aGVuIGl0IGV4ZWN1dGVzIHRoZSBDUy4gRm9yCmV4ZWN1 dGlvbiBpdCBzaW1wbHkgd3JpdGVzIHRoZSBwcm92aWRlZCBoZWFkIHZhbHVlIGludG8gdGhlIHJp bmcncwptZXRhZGF0YSwgYW5kIHJpbmdzIHRoZSBkb29yYmVsbHMuIE5vIGNoZWNrcy4gV2UgYXNz dW1lIHVzZXJzcGFjZSBjYW4KdXBkYXRlIHRoZSB0YWlsIHdoZW5ldmVyIGl0IGZlZWxzIGxpa2Us IHNvIGNoZWNraW5nIHRoZSBoZWFkIHZhbHVlIGlzCnBvaW50bGVzcyBhbnl3YXkuCgo0LiB0aGUg ZW50aXJlIGNvcnJlY3RuZXNzIGlzIG9ubHkgZGVwZW5kaW5nIHVwb24gdGhlIGRtYV9mZW5jZXMK d29ya2luZyBhcyB0aGV5IHNob3VsZC4gRm9yIHRoYXQgd2UgbmVlZCBzb21lIHZlcnkgc3RyaWN0 IHJ1bGVzIG9uCndoZW4gdGhlIGVuZC1vZi1iYXRjaGJ1ZmZlciBkbWFfZmVuY2Ugc2lnbmFsczoK LSB0aGUgZHJtL3NjaGVkdWxlciBtdXN0IGhhdmUgbWFya2VkIHRoZSByZXF1ZXN0IGFzIHJ1bm5h YmxlIGFscmVhZHksCmkuZS4gYWxsIGRlcGVuZGVuY2llcyBhcmUgZnVsbGZpbGxlZC4gVGhpcyBp cyB0byBwcmV2ZW50IHRoZSBmZW5jZXMKZnJvbSBzaWduYWxsaW5nIGluIHRoZSB3cm9uZyBvcmRl ci4KLSB0aGUgZmVuY2UgZnJvbSB0aGUgcHJldmlvdXMgYmF0Y2ggbXVzdCBoYXZlIHNpZ25hbGxl ZCBhbHJlYWR5LCBhZ2Fpbgp0byBndWFyYW50ZWUgaW4tb3JkZXIgc2lnbmFsbGluZyAoZXZlbiBp ZiB1c2Vyc3BhY2UgZG9lcyBzb21ldGhpbmcKc3R1cGlkIGFuZCByZW9yZGVycyBob3cgdGhpbmdz IGNvbXBsZXRlKQotIHRoZSBmZW5jZSBtdXN0IG5ldmVyIGp1bXAgYmFjayB0byB1bnNpZ25hbGxl ZCwgc28gdGhlIGxvY2tsZXNzCmZhc3RwYXRoIHRoYXQganVzdCBjaGVja3MgdGhlIHNlcW5vIGlz IGEgbm8tZ28KCjUuIGlmIGRybS9zY2hlZHVsZXIgdGRyIGRlY2lkZXMgaXQncyB0YWtpbmcgdG9v IGxvbmcgd2UgdGhyb3cgdGhlCmVudGlyZSBjb250ZXh0IGF3YXksIGZvcmJpdCBmdXJ0aGVyIGNv bW1hbmQgc3VibWlzc2lvbiBvbiBpdCAodGhyb3VnaAp0aGUgaW9jdGwsIHVzZXJzcGFjZSBjYW4g a2VlcCB3cml0aW5nIHRvIHRoZSByaW5nIHdoYXRldmVyIGl0IHdhbnRzKQphbmQgZmFpbCBhbGwg aW4tZmxpZ2h0IGJ1ZmZlcnMgd2l0aCBhbiBlcnJvci4gTm9uLWV2aWwgdXNlcnNwYWNlIGNhbgp0 aGVuIHJlY292ZXIgYnkgcmUtY3JlYXRpbmcgYSBuZXcgcmluZ2J1ZmZlciB3aXRoIGV2ZXJ5dGhp bmcuCgpJJ3ZlIHBvbmRlcmVkIHRoaXMgbm93IGZvciBhIGJpdCBhbmQgSSByZWFsbHkgY2FuJ3Qg c3BvdCB0aGUgaG9sZXMuCkFuZCBJIHRoaW5rIGl0IHNob3VsZCBhbGwgd29yaywgYm90aCBmb3Ig aHcgYW5kIGtlcm5lbC9sZWdhY3kKZG1hX2ZlbmNlIHVzZS1jYXNlLgotRGFuaWVsCi0tIApEYW5p ZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxv Zy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK