From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B93466001 for ; Tue, 5 Jul 2022 17:32:29 +0000 (UTC) Received: by mail-ed1-f43.google.com with SMTP id r6so4780092edd.7 for ; Tue, 05 Jul 2022 10:32:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hZv/MvaJzJ12Z8fK0e0CUHxmTF9xt4EFwQubLhM9s/Y=; b=AMPV7rk4xh2rBEX8Sk/nvrCexCQ3LHCjKSFE40+c+WEQiZYQH0lfrjCB5kjDaLOJwO SxJ4I9NsBfyFZouYBFlA4X+ZEcqq8w6WiXD7cU6M7hnWqU30Gnk1IhfRJgdqyMfs3xNo HevsrPMzZuPrQXDEF9eU4L5gaK6y7DAcnGQWOT1KsWMTJDTNA4zbzS1GomLNzGEsZmnM LZOaWVMxzMuz9QAWcVDFBYn4ZmVsZT1q1LW++KsW1K6Swpm08TaOgbEhn/IsDJB6F8La D6fuNkZE0E1b2KQ/nfgUZWhRLCrRu/UOuB6Hj2vIDn1HljlbUVStZy5RrM/x3OTxDryc BQwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hZv/MvaJzJ12Z8fK0e0CUHxmTF9xt4EFwQubLhM9s/Y=; b=bjj5URzhXzFkxYhilyrmSU/SCLS6aXPc/5v+IaK4qd5oYcnVZSv+/j2QIEVgJBZf0i y1mmWS1D46+Gx3BOCvgbEBpt4wulvJ0ZiEB5Z+ThPpx1r75BRZUul8eT0b/w+KpfmUjG 1NbwyPgdzw2yNGeiG9thW2IqpjHPDIiWwddj4EsmMvW33XseRGcKxWQJrDVtg0mEcnpn l3t7e7ZA9gK5hXk+tbiRqecUtjgvuOfZdasTP4VapgqHq7XFj2/2qcoP8vB0SUE0V5Pq ArCtqPSJ9JTgJo8d76eonR4zOF67gpLI1A/DVbvVMQ2uUS2GUlAg7jmXYmR2uaqlOqKk yO6g== X-Gm-Message-State: AJIora9h8cmz2KEJYPLOzLD5TFgNskI0TSes6bdNhXMBKREeU5PMCRCn jAwyIWak0rl3tqmgD4/O2ko= X-Google-Smtp-Source: AGRyM1tjBsxr/6Cf+mS9+yoyn08ekChEWeNzhULrN9w6aMjqLgSb6YIo0DQlLKfoFXveqbVFcObxLg== X-Received: by 2002:a05:6402:380a:b0:437:d11f:b8b0 with SMTP id es10-20020a056402380a00b00437d11fb8b0mr48073069edb.425.1657042347939; Tue, 05 Jul 2022 10:32:27 -0700 (PDT) Received: from kista.localnet (213-161-3-76.dynamic.telemach.net. [213.161.3.76]) by smtp.gmail.com with ESMTPSA id w16-20020a1709061f1000b0071d3b6ed4eesm16082817ejj.160.2022.07.05.10.32.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Jul 2022 10:32:27 -0700 (PDT) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Andre Przywara Cc: Samuel Holland , Chen-Yu Tsai , Rob Herring , Krzysztof Kozlowski , Icenowy Zheng , linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: Re: [PATCH v11 3/6] arm64: dts: allwinner: Add Allwinner H616 .dtsi file Date: Tue, 05 Jul 2022 19:32:26 +0200 Message-ID: <5278570.Sb9uPGUboI@kista> In-Reply-To: <20220704225534.3e1a901a@slackpad.lan> References: <20220428230933.15262-1-andre.przywara@arm.com> <22699277.6Emhk5qWAg@kista> <20220704225534.3e1a901a@slackpad.lan> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" Dne ponedeljek, 04. julij 2022 ob 23:58:02 CEST je Andre Przywara napisal(a= ): > On Mon, 04 Jul 2022 20:42:47 +0200 > Jernej =C5=A0krabec wrote: >=20 > Hi Jernej, >=20 > > Dne ponedeljek, 04. julij 2022 ob 15:30:57 CEST je Andre Przywara=20 napisal(a): > > > On Sat, 02 Jul 2022 23:16:53 +0200 > > > Jernej =C5=A0krabec wrote: > > >=20 > > > Hi Jernej, > > >=20 > > > > Dne =C4=8Detrtek, 30. junij 2022 ob 02:04:10 CEST je Andre Przywara= =20 napisal(a): > > > > > On Tue, 03 May 2022 21:05:11 +0200 > > > > > Jernej =C5=A0krabec wrote: > > > > >=20 > > > > > Hi Jernej, > > > > >=20 > > > > > many thanks for taking the time to wade through this file! > > > > >=20 > > > > > > Dne petek, 29. april 2022 ob 01:09:30 CEST je Andre Przywara > >=20 > > napisal(a): > > > > > > > This (relatively) new SoC is similar to the H6, but drops the > >=20 > > (broken) > >=20 > > > > > > > PCIe support and the USB 3.0 controller. It also gets the > > > > > > > management > > > > > > > controller removed, which in turn removes *some*, but not all= of > > > > > > > the > > > > > > > devices formerly dedicated to the ARISC (CPUS). > > > > > > > And while there is still the extra sunxi interrupt controller, > > > > > > > the > > > > > > > package lacks the corresponding NMI pin, so no interrupts for > > > > > > > the > >=20 > > PMIC. > >=20 > > > > > > > The reserved memory node is actually handled by Trusted Firmw= are > >=20 > > now, > >=20 > > > > > > > but U-Boot fails to propagate this to a separately loaded DTB, > > > > > > > so we > > > > > > > keep it in here for now, until U-Boot learns to do this > > > > > > > properly. > > > > > > >=20 > > > > > > > Signed-off-by: Andre Przywara > > > > > > > --- > > > > > > >=20 > > > > > > > .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 574 > > > > > > > +++++++++++++++ > >=20 > > +++ > >=20 > > > > > > > 1 file changed, 574 insertions(+) > > > > > > > create mode 100644 > > > > > > > arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi > > > > > > >=20 > > > > > > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi > > > > > > > b/arch/arm64/ > > > > > >=20 > > > > > > boot/dts/allwinner/sun50i-h616.dtsi > > > > > >=20 > > > > > > > new file mode 100644 > > > > > > > index 000000000000..cc06cdd15ba5 > > > > > > > --- /dev/null > > > > > > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi > > > > > > > @@ -0,0 +1,574 @@ > > > > > > > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > > > > > > > +// Copyright (C) 2020 Arm Ltd. > > > > > > > +// based on the H6 dtsi, which is: > > > > > > > +// Copyright (C) 2017 Icenowy Zheng > > > > > > > + > > > > > > > +#include > > > > > > > +#include > > > > > > > +#include > > > > > > > +#include > > > > > > > +#include > > > > > > > + > > > > > > > +/ { > > > > > > > + interrupt-parent =3D <&gic>; > > > > > > > + #address-cells =3D <2>; > > > > > > > + #size-cells =3D <2>; > > > > > > > + > > > > > > > + cpus { > > > > > > > + #address-cells =3D <1>; > > > > > > > + #size-cells =3D <0>; > > > > > > > + > > > > > > > + cpu0: cpu@0 { > > > > > > > + compatible =3D "arm,cortex-a53"; > > > > > > > + device_type =3D "cpu"; > > > > > > > + reg =3D <0>; > > > > > > > + enable-method =3D "psci"; > > > > > > > + clocks =3D <&ccu CLK_CPUX>; > > > > > > > + }; > > > > > > > + > > > > > > > + cpu1: cpu@1 { > > > > > > > + compatible =3D "arm,cortex-a53"; > > > > > > > + device_type =3D "cpu"; > > > > > > > + reg =3D <1>; > > > > > > > + enable-method =3D "psci"; > > > > > > > + clocks =3D <&ccu CLK_CPUX>; > > > > > > > + }; > > > > > > > + > > > > > > > + cpu2: cpu@2 { > > > > > > > + compatible =3D "arm,cortex-a53"; > > > > > > > + device_type =3D "cpu"; > > > > > > > + reg =3D <2>; > > > > > > > + enable-method =3D "psci"; > > > > > > > + clocks =3D <&ccu CLK_CPUX>; > > > > > > > + }; > > > > > > > + > > > > > > > + cpu3: cpu@3 { > > > > > > > + compatible =3D "arm,cortex-a53"; > > > > > > > + device_type =3D "cpu"; > > > > > > > + reg =3D <3>; > > > > > > > + enable-method =3D "psci"; > > > > > > > + clocks =3D <&ccu CLK_CPUX>; > > > > > > > + }; > > > > > > > + }; > > > > > > > + > > > > > > > + reserved-memory { > > > > > > > + #address-cells =3D <2>; > > > > > > > + #size-cells =3D <2>; > > > > > > > + ranges; > > > > > > > + > > > > > > > + /* 512KiB reserved for ARM Trusted Firmware (BL31)=20 */ > > > > > > > + secmon_reserved: secmon@40000000 { > > > > > > > + reg =3D <0x0 0x40000000 0x0 0x80000>; > > > > > > > + no-map; > > > > > > > + }; > > > > > > > + }; > > > > > >=20 > > > > > > I'm not a fan of above. If anything changes in future in BL31, > > > > > > U-Boot > > > > > > would > > > > > > need to reconfigure it anyway. Can we just skip it? > > > > >=20 > > > > > I am not a fan neither, but last time I checked this is needed to > > > > > boot. > > > > > Indeed TF-A inserts this node, with the right values, into U-Boot= 's > > > > > DT. > > > > > And that's nicely preserved if you use that DT ($fdtcontroladdr) = for > > > > > the kernel as well. > > > > > But if someone *loads* a DTB into U-Boot (to $fdt_addr_r), then > > > > > U-Boot fails to propagate the /reserved-memory node into that cop= y. > > > > > There does not seem to be a global notion of reserved memory in > > > > > U-Boot. > > > > > Some commands (like tftp) explicitly parse the control DT to find > > > > > and > > > > > respect reserved memory regions. bootm does that also, but only to > > > > > avoid placing the ramdisk or DTB into reserved memory. The > > > > > information > > > > > ends up in images->lmb, but is not used to generate or amend nodes > > > > > in > > > > > the target DT. > > > > > So the bits and pieces are there, but it will require some code to > > > > > be > > > > > added to the generic U-Boot code. > > > > >=20 > > > > > So what do you think? Leaving this out will prevent loading DTBs > > > > > into > > > > > U-Boot, at the moment, which sounds bad. I suggest we keep it in, > > > > > for > > > > > now, it should not really hurt. U-Boot will hopefully start to do > > > > > the > > > > > right thing soon, then we can either phase it out here (maybe when > > > > > we > > > > > actually change something in TF-A), or let U-Boot fix it. > > > >=20 > > > > TBH, if "soon" is really soon, I would rather wait with H616 DT unt= il > > > > U- > >=20 > > Boot > >=20 > > > > supports carrying over reserved memory nodes. > > >=20 > > > But this also carries compatibility issues. U-Boot support the H616 f= or > > > more than a year now, and the earliest possible U-Boot release having > > > that > > > propagation code would be the one released in October. > >=20 > > I was hoping you would say July (next U-Boot release) :). >=20 > Well, 2022.07 was supposed to be released today, and even if that is > delayed by a bit, that's obviously far too late ;-) >=20 > > > And then people > > > would still need to update first, so that's quite some months out. > > > And I was actually hoping to get at least the H616 DT patches off my > > > plate, and get them into the tree to have a stable and agreed upon ba= se > > > (before this series turns into a teenager ;-) > >=20 > > Yeah, I would like that too. > >=20 > > > Then we could for instance update the U-Boot H616 support. > > >=20 > > > > Whatever we do now, it will have > > > > compatibility issues. If we introduce reserved memory node now, we > > > > can't > > > > easily drop it later. Bootloaders are not very often updated, but > > > > kernels > >=20 > > and > >=20 > > > > DTB files are, at least in my experience. So when we decide to drop > > > > the > >=20 > > node? > >=20 > > > I think of the three possibilities: > > > - Drop the node now, and ask people to not load DTBs explicitly > > > - Drop the node when U-Boot learned to propagate the reservation > > > - Keep the node > > > the last one is the least painful: having this node in does not really > > > hurt, so we can be very relaxed with this removal decision: > > > - If U-Boot does not add the reserved node, we are covered. > > > - If U-Boot adds the node, it will do so in a way where it deals with > > > existing reservations. So either it doesn't actually change anything,= or > > > it extends the reservation. > > > - Should the TF-A location actually move (and we have no plans or nee= ds > > > to > > > do that), people would only get this by updating the firmware, at whi= ch > > > point the U-Boot part would surely be in place already. We don't real= ly > > > support updating just BL31 in an existing binary firmware image, so y= ou > > > would get an updated U-Boot as well. > > >=20 > > > I think the worst case scenario is that users end up with an unneeded > > > 512K > > > reservation. If they care, a firmware update should solve this proble= m. > > >=20 > > > As for the time to remove that node: we could do that at the time when > > > (or rather: if) we actually change the TF-A reservation. At the moment > > > there are no plans to do this, and the size reservation is more than > > > generous (the current debug build is actually 77 KB or so only). If > > > there > > > is no change, and the node stays in the .dtsi, it doesn't really hurt, > > > see > > > above. > >=20 > > I see your point, but I would like to get some input from Samuel first. > >=20 > > Samuel, what do you think? > >=20 > > > > After 10 years? Alternatively, reserved memory node can be just > > > > dropped > >=20 > > and > >=20 > > > > anyone loading DTB file from outside would need to make sure it's > > > > patched. > >=20 > > But > >=20 > > > > that's unexpected from user perspective, although patching DT files= is > > > > done > >=20 > > by > >=20 > > > > some distros. > > >=20 > > > Yeah, let's not go there. As you know, I already dislike the idea of > > > explicitly loading DTBs at all, but I understand this is what people, > > > and > > > distributions, do, so I'd rather have them covered. Hence the node to > > > work with existing firmware. > >=20 > > Reusing DTB from U-Boot is only useful when you're happy with completen= ess > > of DT and with the lack of bugs in it. Then you can save troubles with > > skipping external DTB load step and life is easier. But as you know, > > features and thus nodes are added in steps and sometimes some bugs are > > fixed, which means it's extremely handy to have easily updatable DTB > > file. >=20 > Yes, definitely, see my reply to Samuel. I just held back with the DT > update in U-Boot because of the conflict between "we only take pure > kernel tree DTs" and "there is a breaking change" (r_intc binding). >=20 > If we find a way forward with the DT stability problem, I am happy to > push for a much more frequent DT update, or even update just the DT in > an existing firmware installation. This can be automated, since the DTB > is just a member in the FIT image, which can be re-assembled with an > updated DTB by some tool or script. Or we use capsule updates, of just > the DTB, separately (if this is possible)? I would like to have forward compatibility too, but IMO it's not very=20 realistic. Sooner or later we'll find something, like r_intc, again that wo= n't=20 be possible to integrate in forward compatible manner.=20 >=20 > > Yes, U-Boot can be > > automated, but it's tedious for distro to maintain one bootloader packa= ge > > per board. Ideally, distro shouldn't care at all about that, >=20 > Yes, I totally agree, distros should not ship firmware. Since leaving > this to the board vendors is not realistic, I wonder if we (as "the > sunxi community") should step up here, and provide binary builds (purely > for convenience reasons) of board firmware? That could be updated from > a running Linux, or put on an SD card, or fetched by distros to > generate an installer? Wasn't there even some central storage offered > lately by Linux, to hold (UEFI) firmware update files? As someone who's working on distro which supports many SoCs from variety of= =20 vendors, I can tell you that we'll ship bootloader integrated into our imag= e=20 for years to come. Anyway, I also like to build U-Boot using my own options= =2E=20 =46or example, I disable HDMI driver for A64, H3 and H5, because it turns o= ut=20 that at least on H5, it can clash with Linux driver. Other distros prefer t= o=20 show some splash screen, etc. One size fits all solution doesn't seems=20 realistic to me. Maybe only if *everything* would be configurable and there= =20 would be a way for distro to preconfigure it. TBH, building U-Boot, Crust and TF-A is easy and ability to customize them = is=20 very handy. >=20 > > but many boards don't > > have designated bootloader storage (SPI NOR flash in AW case), so they > > have to be combined on same storage, partition even, as distro. >=20 > Have you tried eMMC boot partitions? I found them equally convenient as > SPI flash, and while not too many boards actually have SPI flash, > quite some have eMMC (thinking about TV boxes). I recently even > used "dual boot" with a BSP installation. > And even the smallest eMMCs seem to have 4 MB per boot partition, so > plenty of space for U-Boot (plus TF-A plus crust). No, I didn't. I don't see any benefit of using eMMC boot partition over=20 treating eMMC as usual SD card and installing bootloader to sector 16. Anyway, that won't change situation at all. SD card image with integrated=20 bootloader is still king. There are several reasons for that: =2D cheapest boards are most popular and usually have only SD card for stor= age=20 (think OrangePi PC). There is nothing that you can do about it, except=20 including bootloader on SD card image. =2D if you want to switch from Android to our distro, you need bootable SD = card=20 due to higher boot priority (speaking for AW SoCs) =2D not everyone wants to overwrite eMMC. Some prefer keeping Android, so i= t can=20 be used later for whatever purpose. =2D some users have several distros for same board, each on it's own SD car= d.=20 Needless to say, each distro adjusted bootloader to its needs. I like to offer flexibility in boot options, especially because it's curren= tly=20 easy, thanks to integrated customized bootloader and external loading of dt= b=20 files :) >=20 > > On the other hand, > > when building kernel, you automatically build all relevant DTB files, > > which you can then just copy to common place. No device specific handli= ng > > needed. Also, U-Boot doesn't sync DT files every release, so latest > > U-Boot doesn't necessarly mean latest DT. >=20 > Yes, for the compatibility reasons mentioned. I am more than happy to > make this a regular exercise (say at each kernel's -rc3 or so). What about breaking changes? They can be important for new, useful=20 functionality but older kernels won't know what to do. > Sadly, I don't think we're even close to avoiding shipping bootloader in= =20 distro images or even external DTB loading. > > Above is a bit off topic, but I hope you understand why distros opt to = use > > external DTB files (speaking from my own experiences). >=20 > Yes, I understand where they (including LE) are coming from, to provide > a pragmatic solution to the users' problems. And that's why I wanted to > still give the possibility to load a DTB, even though I think this > should not be the standard way. I think loading external DTB support is important and shouldn't be ditched= =20 anytime soon. If I understand correctly, that's an issue only on SoCs with = TF- A, which means only 64-bit AW SoCs. Yes, 32-bit AW SoCs are still a thing a= nd=20 still used and no, I don't want TF-A there :). Best regards, Jernej 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BCEDBC43334 for ; Tue, 5 Jul 2022 17:33:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=l4XSXMAM6ivdtbtiBHlx9KI+ATemJbieHu23gPuh7kA=; b=pbKTbziM+Gm+UG wRjlm/bafC4G7ewR1Lv8G+asYSvJeDFvSolfFfeu/V3OcDsx7eKnXk/NCy54NIM3bwli7lOEWXGiE cvOVuh1sEd9Zx6SVdIg7YcSy37iZmmTGoIS0sLo3hjnHcj3X5cGa9co8hLW+DiaNW4KmAB0HkffDI GJIu62oKiwymscqoPJRXakDmtBOuhBzRCdegeXZwHjEqv5HIiEOS1i5kSH0seqzRNKV8r1z7pi+XB sl2maydpTPKfFQMlkBL3brj1NZzGAblLjphUmIX2wESqbMlapicqVyd91EFAF5639TrHqWFPyZq5D yJKmj7p/9wk75S+CKGSQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o8mPh-001tti-Ef; Tue, 05 Jul 2022 17:32:41 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o8mPW-001tnd-9Z for linux-arm-kernel@lists.infradead.org; Tue, 05 Jul 2022 17:32:33 +0000 Received: by mail-ed1-x52c.google.com with SMTP id r18so16177866edb.9 for ; Tue, 05 Jul 2022 10:32:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hZv/MvaJzJ12Z8fK0e0CUHxmTF9xt4EFwQubLhM9s/Y=; b=AMPV7rk4xh2rBEX8Sk/nvrCexCQ3LHCjKSFE40+c+WEQiZYQH0lfrjCB5kjDaLOJwO SxJ4I9NsBfyFZouYBFlA4X+ZEcqq8w6WiXD7cU6M7hnWqU30Gnk1IhfRJgdqyMfs3xNo HevsrPMzZuPrQXDEF9eU4L5gaK6y7DAcnGQWOT1KsWMTJDTNA4zbzS1GomLNzGEsZmnM LZOaWVMxzMuz9QAWcVDFBYn4ZmVsZT1q1LW++KsW1K6Swpm08TaOgbEhn/IsDJB6F8La D6fuNkZE0E1b2KQ/nfgUZWhRLCrRu/UOuB6Hj2vIDn1HljlbUVStZy5RrM/x3OTxDryc BQwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hZv/MvaJzJ12Z8fK0e0CUHxmTF9xt4EFwQubLhM9s/Y=; b=O4R4HxYU+/6tJ4CzEMDYlLoSMGXVYRH6alxlXNMgsAgF1vrPj4u4MosapmsnVpXu0Z MgTw+4kgc+WmAuX7CW8hnPogboCYTdISQqx1ElVb1AQiG23Fkv//pfTxWfXl6QHj71+P oRhshDB+GQPWMrSrgHWRZVjOOywE+RuFm3FydlyZ97n4jYJW3QaIEd/QJlBiFERve6vd ncheP+lhOFmlk1lMSAao5/q7AfoKXeGJyQwhuGRweaUCicxulyFVHGb09fl9uh9oH+O8 k+uvie7QZuYijU4tUyyBtg/KO4qTxD8iD54OMh6sP5e3bGU4g91vOlHlBNC8+O6ARNTa iMrQ== X-Gm-Message-State: AJIora9K/j6JMyVCCEdAqN7ONkCb+DrmpAZG0O9dD9BLLgwVoXSXz9Or OH6bgMN7A5kGQ2PpYaKZ2zc= X-Google-Smtp-Source: AGRyM1tjBsxr/6Cf+mS9+yoyn08ekChEWeNzhULrN9w6aMjqLgSb6YIo0DQlLKfoFXveqbVFcObxLg== X-Received: by 2002:a05:6402:380a:b0:437:d11f:b8b0 with SMTP id es10-20020a056402380a00b00437d11fb8b0mr48073069edb.425.1657042347939; Tue, 05 Jul 2022 10:32:27 -0700 (PDT) Received: from kista.localnet (213-161-3-76.dynamic.telemach.net. [213.161.3.76]) by smtp.gmail.com with ESMTPSA id w16-20020a1709061f1000b0071d3b6ed4eesm16082817ejj.160.2022.07.05.10.32.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Jul 2022 10:32:27 -0700 (PDT) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Andre Przywara Cc: Samuel Holland , Chen-Yu Tsai , Rob Herring , Krzysztof Kozlowski , Icenowy Zheng , linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: Re: [PATCH v11 3/6] arm64: dts: allwinner: Add Allwinner H616 .dtsi file Date: Tue, 05 Jul 2022 19:32:26 +0200 Message-ID: <5278570.Sb9uPGUboI@kista> In-Reply-To: <20220704225534.3e1a901a@slackpad.lan> References: <20220428230933.15262-1-andre.przywara@arm.com> <22699277.6Emhk5qWAg@kista> <20220704225534.3e1a901a@slackpad.lan> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220705_103230_424480_D98943A4 X-CRM114-Status: GOOD ( 86.44 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RG5lIHBvbmVkZWxqZWssIDA0LiBqdWxpaiAyMDIyIG9iIDIzOjU4OjAyIENFU1QgamUgQW5kcmUg UHJ6eXdhcmEgbmFwaXNhbChhKToKPiBPbiBNb24sIDA0IEp1bCAyMDIyIDIwOjQyOjQ3ICswMjAw Cj4gSmVybmVqIMWga3JhYmVjIDxqZXJuZWouc2tyYWJlY0BnbWFpbC5jb20+IHdyb3RlOgo+IAo+ IEhpIEplcm5laiwKPiAKPiA+IERuZSBwb25lZGVsamVrLCAwNC4ganVsaWogMjAyMiBvYiAxNToz MDo1NyBDRVNUIGplIEFuZHJlIFByenl3YXJhIApuYXBpc2FsKGEpOgo+ID4gPiBPbiBTYXQsIDAy IEp1bCAyMDIyIDIzOjE2OjUzICswMjAwCj4gPiA+IEplcm5laiDFoGtyYWJlYyA8amVybmVqLnNr cmFiZWNAZ21haWwuY29tPiB3cm90ZToKPiA+ID4gCj4gPiA+IEhpIEplcm5laiwKPiA+ID4gCj4g PiA+ID4gRG5lIMSNZXRydGVrLCAzMC4ganVuaWogMjAyMiBvYiAwMjowNDoxMCBDRVNUIGplIEFu ZHJlIFByenl3YXJhIApuYXBpc2FsKGEpOgo+ID4gPiA+ID4gT24gVHVlLCAwMyBNYXkgMjAyMiAy MTowNToxMSArMDIwMAo+ID4gPiA+ID4gSmVybmVqIMWga3JhYmVjIDxqZXJuZWouc2tyYWJlY0Bn bWFpbC5jb20+IHdyb3RlOgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBIaSBKZXJuZWosCj4gPiA+ID4g PiAKPiA+ID4gPiA+IG1hbnkgdGhhbmtzIGZvciB0YWtpbmcgdGhlIHRpbWUgdG8gd2FkZSB0aHJv dWdoIHRoaXMgZmlsZSEKPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBEbmUgcGV0ZWssIDI5LiBhcHJp bCAyMDIyIG9iIDAxOjA5OjMwIENFU1QgamUgQW5kcmUgUHJ6eXdhcmEKPiA+IAo+ID4gbmFwaXNh bChhKToKPiA+ID4gPiA+ID4gPiBUaGlzIChyZWxhdGl2ZWx5KSBuZXcgU29DIGlzIHNpbWlsYXIg dG8gdGhlIEg2LCBidXQgZHJvcHMgdGhlCj4gPiAKPiA+IChicm9rZW4pCj4gPiAKPiA+ID4gPiA+ ID4gPiBQQ0llIHN1cHBvcnQgYW5kIHRoZSBVU0IgMy4wIGNvbnRyb2xsZXIuIEl0IGFsc28gZ2V0 cyB0aGUKPiA+ID4gPiA+ID4gPiBtYW5hZ2VtZW50Cj4gPiA+ID4gPiA+ID4gY29udHJvbGxlciBy ZW1vdmVkLCB3aGljaCBpbiB0dXJuIHJlbW92ZXMgKnNvbWUqLCBidXQgbm90IGFsbCBvZgo+ID4g PiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gPiA+IGRldmljZXMgZm9ybWVybHkgZGVkaWNhdGVkIHRv IHRoZSBBUklTQyAoQ1BVUykuCj4gPiA+ID4gPiA+ID4gQW5kIHdoaWxlIHRoZXJlIGlzIHN0aWxs IHRoZSBleHRyYSBzdW54aSBpbnRlcnJ1cHQgY29udHJvbGxlciwKPiA+ID4gPiA+ID4gPiB0aGUK PiA+ID4gPiA+ID4gPiBwYWNrYWdlIGxhY2tzIHRoZSBjb3JyZXNwb25kaW5nIE5NSSBwaW4sIHNv IG5vIGludGVycnVwdHMgZm9yCj4gPiA+ID4gPiA+ID4gdGhlCj4gPiAKPiA+IFBNSUMuCj4gPiAK PiA+ID4gPiA+ID4gPiBUaGUgcmVzZXJ2ZWQgbWVtb3J5IG5vZGUgaXMgYWN0dWFsbHkgaGFuZGxl ZCBieSBUcnVzdGVkIEZpcm13YXJlCj4gPiAKPiA+IG5vdywKPiA+IAo+ID4gPiA+ID4gPiA+IGJ1 dCBVLUJvb3QgZmFpbHMgdG8gcHJvcGFnYXRlIHRoaXMgdG8gYSBzZXBhcmF0ZWx5IGxvYWRlZCBE VEIsCj4gPiA+ID4gPiA+ID4gc28gd2UKPiA+ID4gPiA+ID4gPiBrZWVwIGl0IGluIGhlcmUgZm9y IG5vdywgdW50aWwgVS1Cb290IGxlYXJucyB0byBkbyB0aGlzCj4gPiA+ID4gPiA+ID4gcHJvcGVy bHkuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6 eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+Cj4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ID4gIC4uLi9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTBp LWg2MTYuZHRzaSB8IDU3NAo+ID4gPiA+ID4gPiA+ICArKysrKysrKysrKysrKysKPiA+IAo+ID4g KysrCj4gPiAKPiA+ID4gPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDU3NCBpbnNlcnRpb25zKCsp Cj4gPiA+ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NAo+ID4gPiA+ID4gPiA+ICBhcmNoL2Fy bTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41MGktaDYxNi5kdHNpCj4gPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1 bjUwaS1oNjE2LmR0c2kKPiA+ID4gPiA+ID4gPiBiL2FyY2gvYXJtNjQvCj4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiBib290L2R0cy9hbGx3aW5uZXIvc3VuNTBpLWg2MTYuZHRzaQo+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiA+ID4gPiA+IGluZGV4 IDAwMDAwMDAwMDAwMC4uY2MwNmNkZDE1YmE1Cj4gPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbAo+ ID4gPiA+ID4gPiA+ICsrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvYWxsd2lubmVyL3N1bjUwaS1o NjE2LmR0c2kKPiA+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDU3NCBAQAo+ID4gPiA+ID4gPiA+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjArIE9SIE1JVCkKPiA+ID4gPiA+ID4g PiArLy8gQ29weXJpZ2h0IChDKSAyMDIwIEFybSBMdGQuCj4gPiA+ID4gPiA+ID4gKy8vIGJhc2Vk IG9uIHRoZSBINiBkdHNpLCB3aGljaCBpczoKPiA+ID4gPiA+ID4gPiArLy8gICBDb3B5cmlnaHQg KEMpIDIwMTcgSWNlbm93eSBaaGVuZyA8aWNlbm93eUBhb3NjLmlvPgo+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVy L2FybS1naWMuaD4KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Nsb2NrL3N1 bjUwaS1oNjE2LWNjdS5oPgo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvY2xv Y2svc3VuNTBpLWg2LXItY2N1Lmg+Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxkdC1iaW5kaW5n cy9yZXNldC9zdW41MGktaDYxNi1jY3UuaD4KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGR0LWJp bmRpbmdzL3Jlc2V0L3N1bjUwaS1oNi1yLWNjdS5oPgo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiArLyB7Cj4gPiA+ID4gPiA+ID4gKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+Owo+ID4g PiA+ID4gPiA+ICsJI2FkZHJlc3MtY2VsbHMgPSA8Mj47Cj4gPiA+ID4gPiA+ID4gKwkjc2l6ZS1j ZWxscyA9IDwyPjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwljcHVzIHsKPiA+ID4g PiA+ID4gPiArCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiA+ID4gPiA+ID4gPiArCQkjc2l6ZS1j ZWxscyA9IDwwPjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwkJY3B1MDogY3B1QDAg ewo+ID4gPiA+ID4gPiA+ICsJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTUzIjsKPiA+ID4g PiA+ID4gPiArCQkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKPiA+ID4gPiA+ID4gPiArCQkJcmVnID0g PDA+Owo+ID4gPiA+ID4gPiA+ICsJCQllbmFibGUtbWV0aG9kID0gInBzY2kiOwo+ID4gPiA+ID4g PiA+ICsJCQljbG9ja3MgPSA8JmNjdSBDTEtfQ1BVWD47Cj4gPiA+ID4gPiA+ID4gKwkJfTsKPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwkJY3B1MTogY3B1QDEgewo+ID4gPiA+ID4gPiA+ ICsJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTUzIjsKPiA+ID4gPiA+ID4gPiArCQkJZGV2 aWNlX3R5cGUgPSAiY3B1IjsKPiA+ID4gPiA+ID4gPiArCQkJcmVnID0gPDE+Owo+ID4gPiA+ID4g PiA+ICsJCQllbmFibGUtbWV0aG9kID0gInBzY2kiOwo+ID4gPiA+ID4gPiA+ICsJCQljbG9ja3Mg PSA8JmNjdSBDTEtfQ1BVWD47Cj4gPiA+ID4gPiA+ID4gKwkJfTsKPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gKwkJY3B1MjogY3B1QDIgewo+ID4gPiA+ID4gPiA+ICsJCQljb21wYXRpYmxl ID0gImFybSxjb3J0ZXgtYTUzIjsKPiA+ID4gPiA+ID4gPiArCQkJZGV2aWNlX3R5cGUgPSAiY3B1 IjsKPiA+ID4gPiA+ID4gPiArCQkJcmVnID0gPDI+Owo+ID4gPiA+ID4gPiA+ICsJCQllbmFibGUt bWV0aG9kID0gInBzY2kiOwo+ID4gPiA+ID4gPiA+ICsJCQljbG9ja3MgPSA8JmNjdSBDTEtfQ1BV WD47Cj4gPiA+ID4gPiA+ID4gKwkJfTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwkJ Y3B1MzogY3B1QDMgewo+ID4gPiA+ID4gPiA+ICsJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgt YTUzIjsKPiA+ID4gPiA+ID4gPiArCQkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKPiA+ID4gPiA+ID4g PiArCQkJcmVnID0gPDM+Owo+ID4gPiA+ID4gPiA+ICsJCQllbmFibGUtbWV0aG9kID0gInBzY2ki Owo+ID4gPiA+ID4gPiA+ICsJCQljbG9ja3MgPSA8JmNjdSBDTEtfQ1BVWD47Cj4gPiA+ID4gPiA+ ID4gKwkJfTsKPiA+ID4gPiA+ID4gPiArCX07Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ ICsJcmVzZXJ2ZWQtbWVtb3J5IHsKPiA+ID4gPiA+ID4gPiArCQkjYWRkcmVzcy1jZWxscyA9IDwy PjsKPiA+ID4gPiA+ID4gPiArCQkjc2l6ZS1jZWxscyA9IDwyPjsKPiA+ID4gPiA+ID4gPiArCQly YW5nZXM7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJCS8qIDUxMktpQiByZXNlcnZl ZCBmb3IgQVJNIFRydXN0ZWQgRmlybXdhcmUgKEJMMzEpIAoqLwo+ID4gPiA+ID4gPiA+ICsJCXNl Y21vbl9yZXNlcnZlZDogc2VjbW9uQDQwMDAwMDAwIHsKPiA+ID4gPiA+ID4gPiArCQkJcmVnID0g PDB4MCAweDQwMDAwMDAwIDB4MCAweDgwMDAwPjsKPiA+ID4gPiA+ID4gPiArCQkJbm8tbWFwOwo+ ID4gPiA+ID4gPiA+ICsJCX07Cj4gPiA+ID4gPiA+ID4gKwl9Owo+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gSSdtIG5vdCBhIGZhbiBvZiBhYm92ZS4gSWYgYW55dGhpbmcgY2hhbmdlcyBpbiBmdXR1 cmUgaW4gQkwzMSwKPiA+ID4gPiA+ID4gVS1Cb290Cj4gPiA+ID4gPiA+IHdvdWxkCj4gPiA+ID4g PiA+IG5lZWQgdG8gcmVjb25maWd1cmUgaXQgYW55d2F5LiBDYW4gd2UganVzdCBza2lwIGl0Pwo+ ID4gPiA+ID4gCj4gPiA+ID4gPiBJIGFtIG5vdCBhIGZhbiBuZWl0aGVyLCBidXQgbGFzdCB0aW1l IEkgY2hlY2tlZCB0aGlzIGlzIG5lZWRlZCB0bwo+ID4gPiA+ID4gYm9vdC4KPiA+ID4gPiA+IElu ZGVlZCBURi1BIGluc2VydHMgdGhpcyBub2RlLCB3aXRoIHRoZSByaWdodCB2YWx1ZXMsIGludG8g VS1Cb290J3MKPiA+ID4gPiA+IERULgo+ID4gPiA+ID4gQW5kIHRoYXQncyBuaWNlbHkgcHJlc2Vy dmVkIGlmIHlvdSB1c2UgdGhhdCBEVCAoJGZkdGNvbnRyb2xhZGRyKSBmb3IKPiA+ID4gPiA+IHRo ZSBrZXJuZWwgYXMgd2VsbC4KPiA+ID4gPiA+IEJ1dCBpZiBzb21lb25lICpsb2FkcyogYSBEVEIg aW50byBVLUJvb3QgKHRvICRmZHRfYWRkcl9yKSwgdGhlbgo+ID4gPiA+ID4gVS1Cb290IGZhaWxz IHRvIHByb3BhZ2F0ZSB0aGUgL3Jlc2VydmVkLW1lbW9yeSBub2RlIGludG8gdGhhdCBjb3B5Lgo+ ID4gPiA+ID4gVGhlcmUgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGdsb2JhbCBub3Rpb24gb2YgcmVz ZXJ2ZWQgbWVtb3J5IGluCj4gPiA+ID4gPiBVLUJvb3QuCj4gPiA+ID4gPiBTb21lIGNvbW1hbmRz IChsaWtlIHRmdHApIGV4cGxpY2l0bHkgcGFyc2UgdGhlIGNvbnRyb2wgRFQgdG8gZmluZAo+ID4g PiA+ID4gYW5kCj4gPiA+ID4gPiByZXNwZWN0IHJlc2VydmVkIG1lbW9yeSByZWdpb25zLiBib290 bSBkb2VzIHRoYXQgYWxzbywgYnV0IG9ubHkgdG8KPiA+ID4gPiA+IGF2b2lkIHBsYWNpbmcgdGhl IHJhbWRpc2sgb3IgRFRCIGludG8gcmVzZXJ2ZWQgbWVtb3J5LiBUaGUKPiA+ID4gPiA+IGluZm9y bWF0aW9uCj4gPiA+ID4gPiBlbmRzIHVwIGluIGltYWdlcy0+bG1iLCBidXQgaXMgbm90IHVzZWQg dG8gZ2VuZXJhdGUgb3IgYW1lbmQgbm9kZXMKPiA+ID4gPiA+IGluCj4gPiA+ID4gPiB0aGUgdGFy Z2V0IERULgo+ID4gPiA+ID4gU28gdGhlIGJpdHMgYW5kIHBpZWNlcyBhcmUgdGhlcmUsIGJ1dCBp dCB3aWxsIHJlcXVpcmUgc29tZSBjb2RlIHRvCj4gPiA+ID4gPiBiZQo+ID4gPiA+ID4gYWRkZWQg dG8gdGhlIGdlbmVyaWMgVS1Cb290IGNvZGUuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFNvIHdoYXQg ZG8geW91IHRoaW5rPyBMZWF2aW5nIHRoaXMgb3V0IHdpbGwgcHJldmVudCBsb2FkaW5nIERUQnMK PiA+ID4gPiA+IGludG8KPiA+ID4gPiA+IFUtQm9vdCwgYXQgdGhlIG1vbWVudCwgd2hpY2ggc291 bmRzIGJhZC4gSSBzdWdnZXN0IHdlIGtlZXAgaXQgaW4sCj4gPiA+ID4gPiBmb3IKPiA+ID4gPiA+ IG5vdywgaXQgc2hvdWxkIG5vdCByZWFsbHkgaHVydC4gVS1Cb290IHdpbGwgaG9wZWZ1bGx5IHN0 YXJ0IHRvIGRvCj4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+IHJpZ2h0IHRoaW5nIHNvb24sIHRoZW4g d2UgY2FuIGVpdGhlciBwaGFzZSBpdCBvdXQgaGVyZSAobWF5YmUgd2hlbgo+ID4gPiA+ID4gd2UK PiA+ID4gPiA+IGFjdHVhbGx5IGNoYW5nZSBzb21ldGhpbmcgaW4gVEYtQSksIG9yIGxldCBVLUJv b3QgZml4IGl0Lgo+ID4gPiA+IAo+ID4gPiA+IFRCSCwgaWYgInNvb24iIGlzIHJlYWxseSBzb29u LCBJIHdvdWxkIHJhdGhlciB3YWl0IHdpdGggSDYxNiBEVCB1bnRpbAo+ID4gPiA+IFUtCj4gPiAK PiA+IEJvb3QKPiA+IAo+ID4gPiA+IHN1cHBvcnRzIGNhcnJ5aW5nIG92ZXIgcmVzZXJ2ZWQgbWVt b3J5IG5vZGVzLgo+ID4gPiAKPiA+ID4gQnV0IHRoaXMgYWxzbyBjYXJyaWVzIGNvbXBhdGliaWxp dHkgaXNzdWVzLiBVLUJvb3Qgc3VwcG9ydCB0aGUgSDYxNiBmb3IKPiA+ID4gbW9yZSB0aGFuIGEg eWVhciBub3csIGFuZCB0aGUgZWFybGllc3QgcG9zc2libGUgVS1Cb290IHJlbGVhc2UgaGF2aW5n Cj4gPiA+IHRoYXQKPiA+ID4gcHJvcGFnYXRpb24gY29kZSB3b3VsZCBiZSB0aGUgb25lIHJlbGVh c2VkIGluIE9jdG9iZXIuCj4gPiAKPiA+IEkgd2FzIGhvcGluZyB5b3Ugd291bGQgc2F5IEp1bHkg KG5leHQgVS1Cb290IHJlbGVhc2UpIDopLgo+IAo+IFdlbGwsIDIwMjIuMDcgd2FzIHN1cHBvc2Vk IHRvIGJlIHJlbGVhc2VkIHRvZGF5LCBhbmQgZXZlbiBpZiB0aGF0IGlzCj4gZGVsYXllZCBieSBh IGJpdCwgdGhhdCdzIG9idmlvdXNseSBmYXIgdG9vIGxhdGUgOy0pCj4gCj4gPiA+IEFuZCB0aGVu IHBlb3BsZQo+ID4gPiB3b3VsZCBzdGlsbCBuZWVkIHRvIHVwZGF0ZSBmaXJzdCwgc28gdGhhdCdz IHF1aXRlIHNvbWUgbW9udGhzIG91dC4KPiA+ID4gQW5kIEkgd2FzIGFjdHVhbGx5IGhvcGluZyB0 byBnZXQgYXQgbGVhc3QgdGhlIEg2MTYgRFQgcGF0Y2hlcyBvZmYgbXkKPiA+ID4gcGxhdGUsIGFu ZCBnZXQgdGhlbSBpbnRvIHRoZSB0cmVlIHRvIGhhdmUgYSBzdGFibGUgYW5kIGFncmVlZCB1cG9u IGJhc2UKPiA+ID4gKGJlZm9yZSB0aGlzIHNlcmllcyB0dXJucyBpbnRvIGEgdGVlbmFnZXIgOy0p Cj4gPiAKPiA+IFllYWgsIEkgd291bGQgbGlrZSB0aGF0IHRvby4KPiA+IAo+ID4gPiBUaGVuIHdl IGNvdWxkIGZvciBpbnN0YW5jZSB1cGRhdGUgdGhlIFUtQm9vdCBINjE2IHN1cHBvcnQuCj4gPiA+ IAo+ID4gPiA+IFdoYXRldmVyIHdlIGRvIG5vdywgaXQgd2lsbCBoYXZlCj4gPiA+ID4gY29tcGF0 aWJpbGl0eSBpc3N1ZXMuIElmIHdlIGludHJvZHVjZSByZXNlcnZlZCBtZW1vcnkgbm9kZSBub3cs IHdlCj4gPiA+ID4gY2FuJ3QKPiA+ID4gPiBlYXNpbHkgZHJvcCBpdCBsYXRlci4gQm9vdGxvYWRl cnMgYXJlIG5vdCB2ZXJ5IG9mdGVuIHVwZGF0ZWQsIGJ1dAo+ID4gPiA+IGtlcm5lbHMKPiA+IAo+ ID4gYW5kCj4gPiAKPiA+ID4gPiBEVEIgZmlsZXMgYXJlLCBhdCBsZWFzdCBpbiBteSBleHBlcmll bmNlLiBTbyB3aGVuIHdlIGRlY2lkZSB0byBkcm9wCj4gPiA+ID4gdGhlCj4gPiAKPiA+IG5vZGU/ Cj4gPiAKPiA+ID4gSSB0aGluayBvZiB0aGUgdGhyZWUgcG9zc2liaWxpdGllczoKPiA+ID4gLSBE cm9wIHRoZSBub2RlIG5vdywgYW5kIGFzayBwZW9wbGUgdG8gbm90IGxvYWQgRFRCcyBleHBsaWNp dGx5Cj4gPiA+IC0gRHJvcCB0aGUgbm9kZSB3aGVuIFUtQm9vdCBsZWFybmVkIHRvIHByb3BhZ2F0 ZSB0aGUgcmVzZXJ2YXRpb24KPiA+ID4gLSBLZWVwIHRoZSBub2RlCj4gPiA+IHRoZSBsYXN0IG9u ZSBpcyB0aGUgbGVhc3QgcGFpbmZ1bDogaGF2aW5nIHRoaXMgbm9kZSBpbiBkb2VzIG5vdCByZWFs bHkKPiA+ID4gaHVydCwgc28gd2UgY2FuIGJlIHZlcnkgcmVsYXhlZCB3aXRoIHRoaXMgcmVtb3Zh bCBkZWNpc2lvbjoKPiA+ID4gLSBJZiBVLUJvb3QgZG9lcyBub3QgYWRkIHRoZSByZXNlcnZlZCBu b2RlLCB3ZSBhcmUgY292ZXJlZC4KPiA+ID4gLSBJZiBVLUJvb3QgYWRkcyB0aGUgbm9kZSwgaXQg d2lsbCBkbyBzbyBpbiBhIHdheSB3aGVyZSBpdCBkZWFscyB3aXRoCj4gPiA+IGV4aXN0aW5nIHJl c2VydmF0aW9ucy4gU28gZWl0aGVyIGl0IGRvZXNuJ3QgYWN0dWFsbHkgY2hhbmdlIGFueXRoaW5n LCBvcgo+ID4gPiBpdCBleHRlbmRzIHRoZSByZXNlcnZhdGlvbi4KPiA+ID4gLSBTaG91bGQgdGhl IFRGLUEgbG9jYXRpb24gYWN0dWFsbHkgbW92ZSAoYW5kIHdlIGhhdmUgbm8gcGxhbnMgb3IgbmVl ZHMKPiA+ID4gdG8KPiA+ID4gZG8gdGhhdCksIHBlb3BsZSB3b3VsZCBvbmx5IGdldCB0aGlzIGJ5 IHVwZGF0aW5nIHRoZSBmaXJtd2FyZSwgYXQgd2hpY2gKPiA+ID4gcG9pbnQgdGhlIFUtQm9vdCBw YXJ0IHdvdWxkIHN1cmVseSBiZSBpbiBwbGFjZSBhbHJlYWR5LiBXZSBkb24ndCByZWFsbHkKPiA+ ID4gc3VwcG9ydCB1cGRhdGluZyBqdXN0IEJMMzEgaW4gYW4gZXhpc3RpbmcgYmluYXJ5IGZpcm13 YXJlIGltYWdlLCBzbyB5b3UKPiA+ID4gd291bGQgZ2V0IGFuIHVwZGF0ZWQgVS1Cb290IGFzIHdl bGwuCj4gPiA+IAo+ID4gPiBJIHRoaW5rIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIGlzIHRoYXQg dXNlcnMgZW5kIHVwIHdpdGggYW4gdW5uZWVkZWQKPiA+ID4gNTEySwo+ID4gPiByZXNlcnZhdGlv bi4gSWYgdGhleSBjYXJlLCBhIGZpcm13YXJlIHVwZGF0ZSBzaG91bGQgc29sdmUgdGhpcyBwcm9i bGVtLgo+ID4gPiAKPiA+ID4gQXMgZm9yIHRoZSB0aW1lIHRvIHJlbW92ZSB0aGF0IG5vZGU6IHdl IGNvdWxkIGRvIHRoYXQgYXQgdGhlIHRpbWUgd2hlbgo+ID4gPiAob3IgcmF0aGVyOiBpZikgd2Ug YWN0dWFsbHkgY2hhbmdlIHRoZSBURi1BIHJlc2VydmF0aW9uLiBBdCB0aGUgbW9tZW50Cj4gPiA+ IHRoZXJlIGFyZSBubyBwbGFucyB0byBkbyB0aGlzLCBhbmQgdGhlIHNpemUgcmVzZXJ2YXRpb24g aXMgbW9yZSB0aGFuCj4gPiA+IGdlbmVyb3VzICh0aGUgY3VycmVudCBkZWJ1ZyBidWlsZCBpcyBh Y3R1YWxseSA3NyBLQiBvciBzbyBvbmx5KS4gSWYKPiA+ID4gdGhlcmUKPiA+ID4gaXMgbm8gY2hh bmdlLCBhbmQgdGhlIG5vZGUgc3RheXMgaW4gdGhlIC5kdHNpLCBpdCBkb2Vzbid0IHJlYWxseSBo dXJ0LAo+ID4gPiBzZWUKPiA+ID4gYWJvdmUuCj4gPiAKPiA+IEkgc2VlIHlvdXIgcG9pbnQsIGJ1 dCBJIHdvdWxkIGxpa2UgdG8gZ2V0IHNvbWUgaW5wdXQgZnJvbSBTYW11ZWwgZmlyc3QuCj4gPiAK PiA+IFNhbXVlbCwgd2hhdCBkbyB5b3UgdGhpbms/Cj4gPiAKPiA+ID4gPiBBZnRlciAxMCB5ZWFy cz8gQWx0ZXJuYXRpdmVseSwgcmVzZXJ2ZWQgbWVtb3J5IG5vZGUgY2FuIGJlIGp1c3QKPiA+ID4g PiBkcm9wcGVkCj4gPiAKPiA+IGFuZAo+ID4gCj4gPiA+ID4gYW55b25lIGxvYWRpbmcgRFRCIGZp bGUgZnJvbSBvdXRzaWRlIHdvdWxkIG5lZWQgdG8gbWFrZSBzdXJlIGl0J3MKPiA+ID4gPiBwYXRj aGVkLgo+ID4gCj4gPiBCdXQKPiA+IAo+ID4gPiA+IHRoYXQncyB1bmV4cGVjdGVkIGZyb20gdXNl ciBwZXJzcGVjdGl2ZSwgYWx0aG91Z2ggcGF0Y2hpbmcgRFQgZmlsZXMgaXMKPiA+ID4gPiBkb25l Cj4gPiAKPiA+IGJ5Cj4gPiAKPiA+ID4gPiBzb21lIGRpc3Ryb3MuCj4gPiA+IAo+ID4gPiBZZWFo LCBsZXQncyBub3QgZ28gdGhlcmUuIEFzIHlvdSBrbm93LCBJIGFscmVhZHkgZGlzbGlrZSB0aGUg aWRlYSBvZgo+ID4gPiBleHBsaWNpdGx5IGxvYWRpbmcgRFRCcyBhdCBhbGwsIGJ1dCBJIHVuZGVy c3RhbmQgdGhpcyBpcyB3aGF0IHBlb3BsZSwKPiA+ID4gYW5kCj4gPiA+IGRpc3RyaWJ1dGlvbnMs IGRvLCBzbyBJJ2QgcmF0aGVyIGhhdmUgdGhlbSBjb3ZlcmVkLiBIZW5jZSB0aGUgbm9kZSB0bwo+ ID4gPiB3b3JrIHdpdGggZXhpc3RpbmcgZmlybXdhcmUuCj4gPiAKPiA+IFJldXNpbmcgRFRCIGZy b20gVS1Cb290IGlzIG9ubHkgdXNlZnVsIHdoZW4geW91J3JlIGhhcHB5IHdpdGggY29tcGxldGVu ZXNzCj4gPiBvZiBEVCBhbmQgd2l0aCB0aGUgbGFjayBvZiBidWdzIGluIGl0LiBUaGVuIHlvdSBj YW4gc2F2ZSB0cm91YmxlcyB3aXRoCj4gPiBza2lwcGluZyBleHRlcm5hbCBEVEIgbG9hZCBzdGVw IGFuZCBsaWZlIGlzIGVhc2llci4gQnV0IGFzIHlvdSBrbm93LAo+ID4gZmVhdHVyZXMgYW5kIHRo dXMgbm9kZXMgYXJlIGFkZGVkIGluIHN0ZXBzIGFuZCBzb21ldGltZXMgc29tZSBidWdzIGFyZQo+ ID4gZml4ZWQsIHdoaWNoIG1lYW5zIGl0J3MgZXh0cmVtZWx5IGhhbmR5IHRvIGhhdmUgZWFzaWx5 IHVwZGF0YWJsZSBEVEIKPiA+IGZpbGUuCj4gCj4gWWVzLCBkZWZpbml0ZWx5LCBzZWUgbXkgcmVw bHkgdG8gU2FtdWVsLiBJIGp1c3QgaGVsZCBiYWNrIHdpdGggdGhlIERUCj4gdXBkYXRlIGluIFUt Qm9vdCBiZWNhdXNlIG9mIHRoZSBjb25mbGljdCBiZXR3ZWVuICJ3ZSBvbmx5IHRha2UgcHVyZQo+ IGtlcm5lbCB0cmVlIERUcyIgYW5kICJ0aGVyZSBpcyBhIGJyZWFraW5nIGNoYW5nZSIgKHJfaW50 YyBiaW5kaW5nKS4KPiAKPiBJZiB3ZSBmaW5kIGEgd2F5IGZvcndhcmQgd2l0aCB0aGUgRFQgc3Rh YmlsaXR5IHByb2JsZW0sIEkgYW0gaGFwcHkgdG8KPiBwdXNoIGZvciBhIG11Y2ggbW9yZSBmcmVx dWVudCBEVCB1cGRhdGUsIG9yIGV2ZW4gdXBkYXRlIGp1c3QgdGhlIERUIGluCj4gYW4gZXhpc3Rp bmcgZmlybXdhcmUgaW5zdGFsbGF0aW9uLiBUaGlzIGNhbiBiZSBhdXRvbWF0ZWQsIHNpbmNlIHRo ZSBEVEIKPiBpcyBqdXN0IGEgbWVtYmVyIGluIHRoZSBGSVQgaW1hZ2UsIHdoaWNoIGNhbiBiZSBy ZS1hc3NlbWJsZWQgd2l0aCBhbgo+IHVwZGF0ZWQgRFRCIGJ5IHNvbWUgdG9vbCBvciBzY3JpcHQu IE9yIHdlIHVzZSBjYXBzdWxlIHVwZGF0ZXMsIG9mIGp1c3QKPiB0aGUgRFRCLCBzZXBhcmF0ZWx5 IChpZiB0aGlzIGlzIHBvc3NpYmxlKT8KCkkgd291bGQgbGlrZSB0byBoYXZlIGZvcndhcmQgY29t cGF0aWJpbGl0eSB0b28sIGJ1dCBJTU8gaXQncyBub3QgdmVyeSAKcmVhbGlzdGljLiBTb29uZXIg b3IgbGF0ZXIgd2UnbGwgZmluZCBzb21ldGhpbmcsIGxpa2Ugcl9pbnRjLCBhZ2FpbiB0aGF0IHdv bid0IApiZSBwb3NzaWJsZSB0byBpbnRlZ3JhdGUgaW4gZm9yd2FyZCBjb21wYXRpYmxlIG1hbm5l ci4gCgo+IAo+ID4gWWVzLCBVLUJvb3QgY2FuIGJlCj4gPiBhdXRvbWF0ZWQsIGJ1dCBpdCdzIHRl ZGlvdXMgZm9yIGRpc3RybyB0byBtYWludGFpbiBvbmUgYm9vdGxvYWRlciBwYWNrYWdlCj4gPiBw ZXIgYm9hcmQuIElkZWFsbHksIGRpc3RybyBzaG91bGRuJ3QgY2FyZSBhdCBhbGwgYWJvdXQgdGhh dCwKPiAKPiBZZXMsIEkgdG90YWxseSBhZ3JlZSwgZGlzdHJvcyBzaG91bGQgbm90IHNoaXAgZmly bXdhcmUuIFNpbmNlIGxlYXZpbmcKPiB0aGlzIHRvIHRoZSBib2FyZCB2ZW5kb3JzIGlzIG5vdCBy ZWFsaXN0aWMsIEkgd29uZGVyIGlmIHdlIChhcyAidGhlCj4gc3VueGkgY29tbXVuaXR5Iikgc2hv dWxkIHN0ZXAgdXAgaGVyZSwgYW5kIHByb3ZpZGUgYmluYXJ5IGJ1aWxkcyAocHVyZWx5Cj4gZm9y IGNvbnZlbmllbmNlIHJlYXNvbnMpIG9mIGJvYXJkIGZpcm13YXJlPyBUaGF0IGNvdWxkIGJlIHVw ZGF0ZWQgZnJvbQo+IGEgcnVubmluZyBMaW51eCwgb3IgcHV0IG9uIGFuIFNEIGNhcmQsIG9yIGZl dGNoZWQgYnkgZGlzdHJvcyB0bwo+IGdlbmVyYXRlIGFuIGluc3RhbGxlcj8gV2Fzbid0IHRoZXJl IGV2ZW4gc29tZSBjZW50cmFsIHN0b3JhZ2Ugb2ZmZXJlZAo+IGxhdGVseSBieSBMaW51eCwgdG8g aG9sZCAoVUVGSSkgZmlybXdhcmUgdXBkYXRlIGZpbGVzPwoKQXMgc29tZW9uZSB3aG8ncyB3b3Jr aW5nIG9uIGRpc3RybyB3aGljaCBzdXBwb3J0cyBtYW55IFNvQ3MgZnJvbSB2YXJpZXR5IG9mIAp2 ZW5kb3JzLCBJIGNhbiB0ZWxsIHlvdSB0aGF0IHdlJ2xsIHNoaXAgYm9vdGxvYWRlciBpbnRlZ3Jh dGVkIGludG8gb3VyIGltYWdlIApmb3IgeWVhcnMgdG8gY29tZS4gQW55d2F5LCBJIGFsc28gbGlr ZSB0byBidWlsZCBVLUJvb3QgdXNpbmcgbXkgb3duIG9wdGlvbnMuIApGb3IgZXhhbXBsZSwgSSBk aXNhYmxlIEhETUkgZHJpdmVyIGZvciBBNjQsIEgzIGFuZCBINSwgYmVjYXVzZSBpdCB0dXJucyBv dXQgCnRoYXQgYXQgbGVhc3Qgb24gSDUsIGl0IGNhbiBjbGFzaCB3aXRoIExpbnV4IGRyaXZlci4g T3RoZXIgZGlzdHJvcyBwcmVmZXIgdG8gCnNob3cgc29tZSBzcGxhc2ggc2NyZWVuLCBldGMuIE9u ZSBzaXplIGZpdHMgYWxsIHNvbHV0aW9uIGRvZXNuJ3Qgc2VlbXMgCnJlYWxpc3RpYyB0byBtZS4g TWF5YmUgb25seSBpZiAqZXZlcnl0aGluZyogd291bGQgYmUgY29uZmlndXJhYmxlIGFuZCB0aGVy ZSAKd291bGQgYmUgYSB3YXkgZm9yIGRpc3RybyB0byBwcmVjb25maWd1cmUgaXQuCgpUQkgsIGJ1 aWxkaW5nIFUtQm9vdCwgQ3J1c3QgYW5kIFRGLUEgaXMgZWFzeSBhbmQgYWJpbGl0eSB0byBjdXN0 b21pemUgdGhlbSBpcyAKdmVyeSBoYW5keS4KCj4gCj4gPiBidXQgbWFueSBib2FyZHMgZG9uJ3QK PiA+IGhhdmUgZGVzaWduYXRlZCBib290bG9hZGVyIHN0b3JhZ2UgKFNQSSBOT1IgZmxhc2ggaW4g QVcgY2FzZSksIHNvIHRoZXkKPiA+IGhhdmUgdG8gYmUgY29tYmluZWQgb24gc2FtZSBzdG9yYWdl LCBwYXJ0aXRpb24gZXZlbiwgYXMgZGlzdHJvLgo+IAo+IEhhdmUgeW91IHRyaWVkIGVNTUMgYm9v dCBwYXJ0aXRpb25zPyBJIGZvdW5kIHRoZW0gZXF1YWxseSBjb252ZW5pZW50IGFzCj4gU1BJIGZs YXNoLCBhbmQgd2hpbGUgbm90IHRvbyBtYW55IGJvYXJkcyBhY3R1YWxseSBoYXZlIFNQSSBmbGFz aCwKPiBxdWl0ZSBzb21lIGhhdmUgZU1NQyAodGhpbmtpbmcgYWJvdXQgVFYgYm94ZXMpLiBJIHJl Y2VudGx5IGV2ZW4KPiB1c2VkICJkdWFsIGJvb3QiIHdpdGggYSBCU1AgaW5zdGFsbGF0aW9uLgo+ IEFuZCBldmVuIHRoZSBzbWFsbGVzdCBlTU1DcyBzZWVtIHRvIGhhdmUgNCBNQiBwZXIgYm9vdCBw YXJ0aXRpb24sIHNvCj4gcGxlbnR5IG9mIHNwYWNlIGZvciBVLUJvb3QgKHBsdXMgVEYtQSBwbHVz IGNydXN0KS4KCk5vLCBJIGRpZG4ndC4gSSBkb24ndCBzZWUgYW55IGJlbmVmaXQgb2YgdXNpbmcg ZU1NQyBib290IHBhcnRpdGlvbiBvdmVyIAp0cmVhdGluZyBlTU1DIGFzIHVzdWFsIFNEIGNhcmQg YW5kIGluc3RhbGxpbmcgYm9vdGxvYWRlciB0byBzZWN0b3IgMTYuCgpBbnl3YXksIHRoYXQgd29u J3QgY2hhbmdlIHNpdHVhdGlvbiBhdCBhbGwuIFNEIGNhcmQgaW1hZ2Ugd2l0aCBpbnRlZ3JhdGVk IApib290bG9hZGVyIGlzIHN0aWxsIGtpbmcuIFRoZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMgZm9y IHRoYXQ6Ci0gY2hlYXBlc3QgYm9hcmRzIGFyZSBtb3N0IHBvcHVsYXIgYW5kIHVzdWFsbHkgaGF2 ZSBvbmx5IFNEIGNhcmQgZm9yIHN0b3JhZ2UgCih0aGluayBPcmFuZ2VQaSBQQykuIFRoZXJlIGlz IG5vdGhpbmcgdGhhdCB5b3UgY2FuIGRvIGFib3V0IGl0LCBleGNlcHQgCmluY2x1ZGluZyBib290 bG9hZGVyIG9uIFNEIGNhcmQgaW1hZ2UuCi0gaWYgeW91IHdhbnQgdG8gc3dpdGNoIGZyb20gQW5k cm9pZCB0byBvdXIgZGlzdHJvLCB5b3UgbmVlZCBib290YWJsZSBTRCBjYXJkIApkdWUgdG8gaGln aGVyIGJvb3QgcHJpb3JpdHkgKHNwZWFraW5nIGZvciBBVyBTb0NzKQotIG5vdCBldmVyeW9uZSB3 YW50cyB0byBvdmVyd3JpdGUgZU1NQy4gU29tZSBwcmVmZXIga2VlcGluZyBBbmRyb2lkLCBzbyBp dCBjYW4gCmJlIHVzZWQgbGF0ZXIgZm9yIHdoYXRldmVyIHB1cnBvc2UuCi0gc29tZSB1c2VycyBo YXZlIHNldmVyYWwgZGlzdHJvcyBmb3Igc2FtZSBib2FyZCwgZWFjaCBvbiBpdCdzIG93biBTRCBj YXJkLiAKTmVlZGxlc3MgdG8gc2F5LCBlYWNoIGRpc3RybyBhZGp1c3RlZCBib290bG9hZGVyIHRv IGl0cyBuZWVkcy4KCkkgbGlrZSB0byBvZmZlciBmbGV4aWJpbGl0eSBpbiBib290IG9wdGlvbnMs IGVzcGVjaWFsbHkgYmVjYXVzZSBpdCdzIGN1cnJlbnRseSAKZWFzeSwgdGhhbmtzIHRvIGludGVn cmF0ZWQgY3VzdG9taXplZCBib290bG9hZGVyIGFuZCBleHRlcm5hbCBsb2FkaW5nIG9mIGR0YiAK ZmlsZXMgOikKCj4gCj4gPiBPbiB0aGUgb3RoZXIgaGFuZCwKPiA+IHdoZW4gYnVpbGRpbmcga2Vy bmVsLCB5b3UgYXV0b21hdGljYWxseSBidWlsZCBhbGwgcmVsZXZhbnQgRFRCIGZpbGVzLAo+ID4g d2hpY2ggeW91IGNhbiB0aGVuIGp1c3QgY29weSB0byBjb21tb24gcGxhY2UuIE5vIGRldmljZSBz cGVjaWZpYyBoYW5kbGluZwo+ID4gbmVlZGVkLiBBbHNvLCBVLUJvb3QgZG9lc24ndCBzeW5jIERU IGZpbGVzIGV2ZXJ5IHJlbGVhc2UsIHNvIGxhdGVzdAo+ID4gVS1Cb290IGRvZXNuJ3QgbmVjZXNz YXJseSBtZWFuIGxhdGVzdCBEVC4KPiAKPiBZZXMsIGZvciB0aGUgY29tcGF0aWJpbGl0eSByZWFz b25zIG1lbnRpb25lZC4gSSBhbSBtb3JlIHRoYW4gaGFwcHkgdG8KPiBtYWtlIHRoaXMgYSByZWd1 bGFyIGV4ZXJjaXNlIChzYXkgYXQgZWFjaCBrZXJuZWwncyAtcmMzIG9yIHNvKS4KCldoYXQgYWJv dXQgYnJlYWtpbmcgY2hhbmdlcz8gVGhleSBjYW4gYmUgaW1wb3J0YW50IGZvciBuZXcsIHVzZWZ1 bCAKZnVuY3Rpb25hbGl0eSBidXQgb2xkZXIga2VybmVscyB3b24ndCBrbm93IHdoYXQgdG8gZG8u Cgo+IFNhZGx5LCBJIGRvbid0IHRoaW5rIHdlJ3JlIGV2ZW4gY2xvc2UgdG8gYXZvaWRpbmcgc2hp cHBpbmcgYm9vdGxvYWRlciBpbiAKZGlzdHJvIGltYWdlcyBvciBldmVuIGV4dGVybmFsIERUQiBs b2FkaW5nLgo+ID4gQWJvdmUgaXMgYSBiaXQgb2ZmIHRvcGljLCBidXQgSSBob3BlIHlvdSB1bmRl cnN0YW5kIHdoeSBkaXN0cm9zIG9wdCB0byB1c2UKPiA+IGV4dGVybmFsIERUQiBmaWxlcyAoc3Bl YWtpbmcgZnJvbSBteSBvd24gZXhwZXJpZW5jZXMpLgo+IAo+IFllcywgSSB1bmRlcnN0YW5kIHdo ZXJlIHRoZXkgKGluY2x1ZGluZyBMRSkgYXJlIGNvbWluZyBmcm9tLCB0byBwcm92aWRlCj4gYSBw cmFnbWF0aWMgc29sdXRpb24gdG8gdGhlIHVzZXJzJyBwcm9ibGVtcy4gQW5kIHRoYXQncyB3aHkg SSB3YW50ZWQgdG8KPiBzdGlsbCBnaXZlIHRoZSBwb3NzaWJpbGl0eSB0byBsb2FkIGEgRFRCLCBl dmVuIHRob3VnaCBJIHRoaW5rIHRoaXMKPiBzaG91bGQgbm90IGJlIHRoZSBzdGFuZGFyZCB3YXku CgpJIHRoaW5rIGxvYWRpbmcgZXh0ZXJuYWwgRFRCIHN1cHBvcnQgaXMgaW1wb3J0YW50IGFuZCBz aG91bGRuJ3QgYmUgZGl0Y2hlZCAKYW55dGltZSBzb29uLiBJZiBJIHVuZGVyc3RhbmQgY29ycmVj dGx5LCB0aGF0J3MgYW4gaXNzdWUgb25seSBvbiBTb0NzIHdpdGggVEYtCkEsIHdoaWNoIG1lYW5z IG9ubHkgNjQtYml0IEFXIFNvQ3MuIFllcywgMzItYml0IEFXIFNvQ3MgYXJlIHN0aWxsIGEgdGhp bmcgYW5kIApzdGlsbCB1c2VkIGFuZCBubywgSSBkb24ndCB3YW50IFRGLUEgdGhlcmUgOikuCgpC ZXN0IHJlZ2FyZHMsCkplcm5lagoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtl cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=