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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 31E93CA9EC0 for ; Wed, 30 Oct 2019 03:49:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 022CF2080F for ; Wed, 30 Oct 2019 03:49:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727302AbfJ3Dty (ORCPT ); Tue, 29 Oct 2019 23:49:54 -0400 Received: from mx2.suse.de ([195.135.220.15]:56788 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726871AbfJ3Dtx (ORCPT ); Tue, 29 Oct 2019 23:49:53 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id B046FB39F; Wed, 30 Oct 2019 03:49:50 +0000 (UTC) Subject: Re: [PATCH 3/3] ARM: dts: Prepare Realtek RTD1195 and MeLE X1000 To: Rob Herring Cc: linux-realtek-soc@lists.infradead.org, LAKML , Mark Rutland , devicetree@vger.kernel.org, "linux-kernel@vger.kernel.org" References: <20191021021035.7032-1-afaerber@suse.de> <20191021021035.7032-4-afaerber@suse.de> <20191029154129.GA24908@bogus> <6e6087af-6a62-f0ff-07af-48e4836c38e6@suse.de> From: =?UTF-8?Q?Andreas_F=c3=a4rber?= Organization: SUSE Software Solutions Germany GmbH Message-ID: <63c3b9b5-e409-7f43-cd03-9b4b2ee57056@suse.de> Date: Wed, 30 Oct 2019 04:49:50 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 29.10.19 um 21:40 schrieb Rob Herring: > On Tue, Oct 29, 2019 at 10:52 AM Andreas Färber wrote: >> Am 29.10.19 um 16:41 schrieb Rob Herring: >>> On Mon, Oct 21, 2019 at 04:10:35AM +0200, Andreas Färber wrote: >>>> Add Device Trees for Realtek RTD1195 SoC and MeLE X1000 TV box. >>>> >>>> Reuse the existing RTD1295 watchdog compatible for now. >>>> >>>> Signed-off-by: Andreas Färber >>>> --- >>>> arch/arm/boot/dts/Makefile | 2 + >>>> arch/arm/boot/dts/rtd1195-mele-x1000.dts | 30 ++++++++ >>>> arch/arm/boot/dts/rtd1195.dtsi | 128 +++++++++++++++++++++++++++++++ >>>> 3 files changed, 160 insertions(+) >>>> create mode 100644 arch/arm/boot/dts/rtd1195-mele-x1000.dts >>>> create mode 100644 arch/arm/boot/dts/rtd1195.dtsi >>>> >>>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile >>>> index 73d33611c372..89a951485da8 100644 >>>> --- a/arch/arm/boot/dts/Makefile >>>> +++ b/arch/arm/boot/dts/Makefile >>>> @@ -858,6 +858,8 @@ dtb-$(CONFIG_ARCH_QCOM) += \ >>>> dtb-$(CONFIG_ARCH_RDA) += \ >>>> rda8810pl-orangepi-2g-iot.dtb \ >>>> rda8810pl-orangepi-i96.dtb >>>> +dtb-$(CONFIG_ARCH_REALTEK) += \ >>>> + rtd1195-mele-x1000.dtb >>>> dtb-$(CONFIG_ARCH_REALVIEW) += \ >>>> arm-realview-pb1176.dtb \ >>>> arm-realview-pb11mp.dtb \ >>>> diff --git a/arch/arm/boot/dts/rtd1195-mele-x1000.dts b/arch/arm/boot/dts/rtd1195-mele-x1000.dts >>>> new file mode 100644 >>>> index 000000000000..ce9a255950d3 >>>> --- /dev/null >>>> +++ b/arch/arm/boot/dts/rtd1195-mele-x1000.dts >>>> @@ -0,0 +1,30 @@ >>>> +// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) >>>> +/* >>>> + * Copyright (c) 2017 Andreas Färber >>> >>> 2019? >> >> Nope, I am flushing out old queues, and updating SPDX line does not >> really warrant a copyright bump IMO. The changes below would though. Updated here, but not yet for the .dtsi. >>>> + */ >>>> + >>>> +/dts-v1/; >>>> + >>>> +#include "rtd1195.dtsi" >>>> + >>>> +/ { >>>> + compatible = "mele,x1000", "realtek,rtd1195"; >>>> + model = "MeLE X1000"; >>>> + >>>> + aliases { >>>> + serial0 = &uart0; >>>> + }; >>>> + >>>> + chosen { >>>> + stdout-path = "serial0:115200n8"; >>>> + }; >>>> + >>>> + memory { >>> >>> memory@0 >> >> Will test. Fixed. (No duplicate node from U-Boot.) >>>> + device_type = "memory"; >>>> + reg = <0x0 0x40000000>; >>>> + }; >>>> +}; >>>> + >>>> +&uart0 { >>>> + status = "okay"; >>>> +}; >>>> diff --git a/arch/arm/boot/dts/rtd1195.dtsi b/arch/arm/boot/dts/rtd1195.dtsi >>>> new file mode 100644 >>>> index 000000000000..475740c67d26 >>>> --- /dev/null >>>> +++ b/arch/arm/boot/dts/rtd1195.dtsi >>>> @@ -0,0 +1,128 @@ >>>> +// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) >>>> +/* >>>> + * Copyright (c) 2017 Andreas Färber >>>> + */ >>>> + >>>> +/memreserve/ 0x00000000 0x0000c000; /* boot code */ >>>> +/memreserve/ 0x0000c000 0x000f4000; >>>> +/memreserve/ 0x01b00000 0x00400000; /* audio */ >>>> +/memreserve/ 0x01ffe000 0x00004000; /* rpc ringbuf */ >>>> +/memreserve/ 0x10000000 0x00100000; /* secure */ >>>> +/memreserve/ 0x17fff000 0x00001000; >>>> +/memreserve/ 0x18000000 0x00100000; /* rbus */ >>>> +/memreserve/ 0x18100000 0x01000000; /* nor */ >>> >>> You shouldn't have the same entries here and in /reserved-memory. There >>> was a time before /reserved-memory was fully supported, but we should be >>> well past that now. >> >> I am dealing with a v2012.07 based downstream U-Boot that I do not have >> sources for, so I wouldn't be so sure there... It will only respect >> memreserve I think, whereas reserved-memory below is for the kernel, no? > > Sigh... Well, that may be too old. :( > > I could be wrong too and no one ever added /reserved-memory support > for u-boot. The intent was never that one was for u-boot and the other > for the kernel. The kernel handles both. reserved-memory was to > overcome the limitations of memreserve. What I meant was that some versions of U-Boot process and print memreserve regions _before_ booting into the kernel, i.e. we don't want U-Boot's bootX commands to write data into the reserved regions. /reserved-memory allows the kernel/bootloader to associate memory regions with drivers via memory-region node references and to steer whether or not the reserved memory remains mapped. >>>> +#include >>>> + >>>> +/ { >>>> + compatible = "realtek,rtd1195"; >>>> + interrupt-parent = <&gic>; >>>> + #address-cells = <1>; >>>> + #size-cells = <1>; >>>> + >>>> + cpus { >>>> + #address-cells = <1>; >>>> + #size-cells = <0>; >>>> + >>>> + cpu0: cpu@0 { >>>> + device_type = "cpu"; >>>> + compatible = "arm,cortex-a7"; >>>> + reg = <0x0>; >>>> + clock-frequency = <1000000000>; >>>> + }; >>>> + >>>> + cpu1: cpu@1 { >>>> + device_type = "cpu"; >>>> + compatible = "arm,cortex-a7"; >>>> + reg = <0x1>; >>>> + clock-frequency = <1000000000>; >>>> + }; >>>> + }; >>>> + >>>> + reserved-memory { >>>> + #address-cells = <1>; >>>> + #size-cells = <1>; >>>> + ranges; >>>> + >>>> + secure@10000000 { >>>> + reg = <0x10000000 0x100000>; >>>> + no-map; >>>> + }; >>>> + >>>> + rbus@18000000 { >>>> + reg = <0x18000000 0x100000>; >>>> + no-map; >>> >>> This doesn't look right as it overlaps the register space. >> >> Will try dropping it. James? My testing (with irqchip patches) shows that leaving the memreserve in place and dropping this node leads to the following error: [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] ------------[ cut here ]------------ [ 0.000000] WARNING: CPU: 0 PID: 0 at arch/arm/mm/ioremap.c:304 __arm_ioremap_pfn_caller+0x1e4/0x208 [ 0.000000] Modules linked in: [ 0.000000] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.0-rc5-next-20191029+ #152 [ 0.000000] Hardware name: Generic DT based system [ 0.000000] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 0.000000] [] (show_stack) from [] (dump_stack+0x78/0x8c) [ 0.000000] [] (dump_stack) from [] (__warn+0xbc/0xd8) [ 0.000000] [] (__warn) from [] (warn_slowpath_fmt+0x64/0xc4) [ 0.000000] [] (warn_slowpath_fmt) from [] (__arm_ioremap_pfn_caller+0x1e4/0x208) [ 0.000000] [] (__arm_ioremap_pfn_caller) from [] (ioremap+0x20/0x28) [ 0.000000] [] (ioremap) from [] (of_iomap+0x40/0x64) [ 0.000000] [] (of_iomap) from [] (rtd119x_irq_mux_init+0x3c/0x134) [ 0.000000] [] (rtd119x_irq_mux_init) from [] (of_irq_init+0x194/0x2b4) [ 0.000000] [] (of_irq_init) from [] (init_IRQ+0x24/0x78) [ 0.000000] [] (init_IRQ) from [] (start_kernel+0x29c/0x488) [ 0.000000] [] (start_kernel) from [<00000000>] (0x0) [ 0.000000] random: get_random_bytes called from print_oops_end_marker+0x24/0x4c with crng_init=0 [ 0.000000] ---[ end trace 0000000000000000 ]--- [ 0.000000] 8<--- cut here --- [ 0.000000] Unable to handle kernel NULL pointer dereference at virtual address 00000040 [ 0.000000] pgd = (ptrval) [ 0.000000] [00000040] *pgd=80000000104003, *pmd=00000000 [ 0.000000] Internal error: Oops: a06 [#1] PREEMPT SMP ARM [ 0.000000] Modules linked in: [ 0.000000] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 5.4.0-rc5-next-20191029+ #152 [ 0.000000] Hardware name: Generic DT based system [ 0.000000] PC is at rtd119x_irq_mux_init+0x94/0x134 [ 0.000000] LR is at 0x0 [ 0.000000] pc : [] lr : [<00000000>] psr: a00000d3 [ 0.000000] sp : c1001f38 ip : eb001d80 fp : c0bdb7d0 [ 0.000000] r10: 00000100 r9 : 00000122 r8 : 00000000 [ 0.000000] r7 : c0a4dd8c r6 : ef5f8fbc r5 : eb001d40 r4 : 00000040 [ 0.000000] r3 : 00000004 r2 : 00000000 r1 : 00000000 r0 : 00000040 [ 0.000000] Flags: NzCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment user [ 0.000000] Control: 30c5387d Table: 00103000 DAC: fffffffd [ 0.000000] Process swapper/0 (pid: 0, stack limit = 0x(ptrval)) [ 0.000000] Stack: (0xc1001f38 to 0xc1002000) [ 0.000000] 1f20: 00000122 00000100 [ 0.000000] 1f40: eb001cc0 ef5f9a20 c1001f64 c1001f6c eb001d00 c0e21e48 c105b2ec c0284348 [ 0.000000] 1f60: 00000000 eb001d00 eb001d00 c1001f6c c1001f6c c1003e50 00000001 c0e32a30 [ 0.000000] 1f80: c1003e40 c10617dc c1035d80 ffffffff cccccccd 00000001 c0e32a40 c0e029f4 [ 0.000000] 1fa0: cccccccd c0e00c00 ffffffff ffffffff 00000000 c0e00584 00000000 ef5f7e00 [ 0.000000] 1fc0: 00000000 c0e32a40 00000000 c1003e50 00000000 c0e00330 00000000 30c0387d [ 0.000000] 1fe0: 0000138a 01ff2000 410fc075 30c5387d 00000000 00000000 00000000 00000000 [ 0.000000] [] (rtd119x_irq_mux_init) from [] (of_irq_init+0x194/0x2b4) [ 0.000000] [] (of_irq_init) from [] (init_IRQ+0x24/0x78) [ 0.000000] [] (init_IRQ) from [] (start_kernel+0x29c/0x488) [ 0.000000] [] (start_kernel) from [<00000000>] (0x0) [ 0.000000] Code: e5853004 e5970008 e0844000 e5854008 (e5848000) [ 0.000000] ---[ end trace f68728a0d3053b52 ]--- [ 0.000000] Kernel panic - not syncing: Attempted to kill the idle task! [ 0.000000] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]--- This appears to be in part a bug in my error handling of of_iomap - it returns NULL, not PTR_ERR(). But even with that fixed I get fatal errors at some point. The workaround I have is a custom mach-realtek machine_desc with .map_io assigning explicit .virtual addresses and MT_DEVICE for these ranges. I also experimented with .reserve removing three memblocks, so we have a puzzle of four places messing with the same memory regions and some combinations working in the end, unclear why exactly. >>>> + }; >>>> + >>>> + nor@18100000 { >>>> + reg = <0x18100000 0x1000000>; >>>> + no-map; >>>> + }; >> >> Same issue here, I guess? > > Yes. I fear the only conclusion right now would be to defer RTD1195 to v5.6 so that at least RTD129x parts can progress for v5.5? Unless we can agree on a subset to at least showcase initial earlycon output and allow us to add nodes, such as reset controllers, as we add/enable drivers. Regards, Andreas -- SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Felix Imendörffer HRB 36809 (AG Nürnberg) 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=-8.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham 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 954DECA9EAF for ; Wed, 30 Oct 2019 03:49:57 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 68F1B2080F for ; Wed, 30 Oct 2019 03:49:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Oe/jmF0d" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 68F1B2080F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=wclxVcQymXlI3laxAMbmTtj6mn/aW+I0MhfpiVI1J3o=; b=Oe/jmF0dYIoiXd IVEVyFFpC6qPoqqoQiGkYcmyzMnOgbhcz4ZMkgT2QQqNH7mpjBE+/jOrXFj6ZD/l6+MgIMl9cAcn8 Bfl321RmFXi6Xg6u58/Yqr3HBPQjl45d39jUR1bbTMgpMtVXlnqMsHrhXn0M2p2UWVBrKRcJoS69x oTUUaM0HaYTF3VR233hZhGrHw1qMxFqg6Jb4bIYBbSlY3FKHaaoa3X7Mys0o0Ax+aBaDPHHfdMB8b JzEnlOE0uSt2YKb0sY3yS5vgBM9m78/BA4M55MacGjUWOVeO1pwlYtL/faMIvs8mctKubpWqm+LUk CBzKehPtDa/BkOYL/cfA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iPezb-0001xD-Sf; Wed, 30 Oct 2019 03:49:55 +0000 Received: from mx2.suse.de ([195.135.220.15] helo=mx1.suse.de) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iPezY-0001wZ-Ki; Wed, 30 Oct 2019 03:49:54 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id B046FB39F; Wed, 30 Oct 2019 03:49:50 +0000 (UTC) Subject: Re: [PATCH 3/3] ARM: dts: Prepare Realtek RTD1195 and MeLE X1000 To: Rob Herring References: <20191021021035.7032-1-afaerber@suse.de> <20191021021035.7032-4-afaerber@suse.de> <20191029154129.GA24908@bogus> <6e6087af-6a62-f0ff-07af-48e4836c38e6@suse.de> From: =?UTF-8?Q?Andreas_F=c3=a4rber?= Organization: SUSE Software Solutions Germany GmbH Message-ID: <63c3b9b5-e409-7f43-cd03-9b4b2ee57056@suse.de> Date: Wed, 30 Oct 2019 04:49:50 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191029_204952_976331_BDC9CCAA X-CRM114-Status: GOOD ( 24.06 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , devicetree@vger.kernel.org, "linux-kernel@vger.kernel.org" , LAKML , linux-realtek-soc@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org QW0gMjkuMTAuMTkgdW0gMjE6NDAgc2NocmllYiBSb2IgSGVycmluZzoKPiBPbiBUdWUsIE9jdCAy OSwgMjAxOSBhdCAxMDo1MiBBTSBBbmRyZWFzIEbDpHJiZXIgPGFmYWVyYmVyQHN1c2UuZGU+IHdy b3RlOgo+PiBBbSAyOS4xMC4xOSB1bSAxNjo0MSBzY2hyaWViIFJvYiBIZXJyaW5nOgo+Pj4gT24g TW9uLCBPY3QgMjEsIDIwMTkgYXQgMDQ6MTA6MzVBTSArMDIwMCwgQW5kcmVhcyBGw6RyYmVyIHdy b3RlOgo+Pj4+IEFkZCBEZXZpY2UgVHJlZXMgZm9yIFJlYWx0ZWsgUlREMTE5NSBTb0MgYW5kIE1l TEUgWDEwMDAgVFYgYm94Lgo+Pj4+Cj4+Pj4gUmV1c2UgdGhlIGV4aXN0aW5nIFJURDEyOTUgd2F0 Y2hkb2cgY29tcGF0aWJsZSBmb3Igbm93Lgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogQW5kcmVh cyBGw6RyYmVyIDxhZmFlcmJlckBzdXNlLmRlPgo+Pj4+IC0tLQo+Pj4+ICBhcmNoL2FybS9ib290 L2R0cy9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAyICsKPj4+PiAgYXJjaC9hcm0vYm9vdC9k dHMvcnRkMTE5NS1tZWxlLXgxMDAwLmR0cyB8ICAzMCArKysrKysrKwo+Pj4+ICBhcmNoL2FybS9i b290L2R0cy9ydGQxMTk1LmR0c2kgICAgICAgICAgIHwgMTI4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPj4+PiAgMyBmaWxlcyBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKQo+Pj4+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vYm9vdC9kdHMvcnRkMTE5NS1tZWxlLXgxMDAw LmR0cwo+Pj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vYm9vdC9kdHMvcnRkMTE5NS5k dHNpCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvTWFrZWZpbGUgYi9h cmNoL2FybS9ib290L2R0cy9NYWtlZmlsZQo+Pj4+IGluZGV4IDczZDMzNjExYzM3Mi4uODlhOTUx NDg1ZGE4IDEwMDY0NAo+Pj4+IC0tLSBhL2FyY2gvYXJtL2Jvb3QvZHRzL01ha2VmaWxlCj4+Pj4g KysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvTWFrZWZpbGUKPj4+PiBAQCAtODU4LDYgKzg1OCw4IEBA IGR0Yi0kKENPTkZJR19BUkNIX1FDT00pICs9IFwKPj4+PiAgZHRiLSQoQ09ORklHX0FSQ0hfUkRB KSArPSBcCj4+Pj4gICAgICByZGE4ODEwcGwtb3JhbmdlcGktMmctaW90LmR0YiBcCj4+Pj4gICAg ICByZGE4ODEwcGwtb3JhbmdlcGktaTk2LmR0Ygo+Pj4+ICtkdGItJChDT05GSUdfQVJDSF9SRUFM VEVLKSArPSBcCj4+Pj4gKyAgICBydGQxMTk1LW1lbGUteDEwMDAuZHRiCj4+Pj4gIGR0Yi0kKENP TkZJR19BUkNIX1JFQUxWSUVXKSArPSBcCj4+Pj4gICAgICBhcm0tcmVhbHZpZXctcGIxMTc2LmR0 YiBcCj4+Pj4gICAgICBhcm0tcmVhbHZpZXctcGIxMW1wLmR0YiBcCj4+Pj4gZGlmZiAtLWdpdCBh L2FyY2gvYXJtL2Jvb3QvZHRzL3J0ZDExOTUtbWVsZS14MTAwMC5kdHMgYi9hcmNoL2FybS9ib290 L2R0cy9ydGQxMTk1LW1lbGUteDEwMDAuZHRzCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+ PiBpbmRleCAwMDAwMDAwMDAwMDAuLmNlOWEyNTU5NTBkMwo+Pj4+IC0tLSAvZGV2L251bGwKPj4+ PiArKysgYi9hcmNoL2FybS9ib290L2R0cy9ydGQxMTk1LW1lbGUteDEwMDAuZHRzCj4+Pj4gQEAg LTAsMCArMSwzMCBAQAo+Pj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAt b3ItbGF0ZXIgT1IgQlNELTItQ2xhdXNlKQo+Pj4+ICsvKgo+Pj4+ICsgKiBDb3B5cmlnaHQgKGMp IDIwMTcgQW5kcmVhcyBGw6RyYmVyCj4+Pgo+Pj4gMjAxOT8KPj4KPj4gTm9wZSwgSSBhbSBmbHVz aGluZyBvdXQgb2xkIHF1ZXVlcywgYW5kIHVwZGF0aW5nIFNQRFggbGluZSBkb2VzIG5vdAo+PiBy ZWFsbHkgd2FycmFudCBhIGNvcHlyaWdodCBidW1wIElNTy4gVGhlIGNoYW5nZXMgYmVsb3cgd291 bGQgdGhvdWdoLgoKVXBkYXRlZCBoZXJlLCBidXQgbm90IHlldCBmb3IgdGhlIC5kdHNpLgoKPj4+ PiArICovCj4+Pj4gKwo+Pj4+ICsvZHRzLXYxLzsKPj4+PiArCj4+Pj4gKyNpbmNsdWRlICJydGQx MTk1LmR0c2kiCj4+Pj4gKwo+Pj4+ICsvIHsKPj4+PiArICAgIGNvbXBhdGlibGUgPSAibWVsZSx4 MTAwMCIsICJyZWFsdGVrLHJ0ZDExOTUiOwo+Pj4+ICsgICAgbW9kZWwgPSAiTWVMRSBYMTAwMCI7 Cj4+Pj4gKwo+Pj4+ICsgICAgYWxpYXNlcyB7Cj4+Pj4gKyAgICAgICAgICAgIHNlcmlhbDAgPSAm dWFydDA7Cj4+Pj4gKyAgICB9Owo+Pj4+ICsKPj4+PiArICAgIGNob3NlbiB7Cj4+Pj4gKyAgICAg ICAgICAgIHN0ZG91dC1wYXRoID0gInNlcmlhbDA6MTE1MjAwbjgiOwo+Pj4+ICsgICAgfTsKPj4+ PiArCj4+Pj4gKyAgICBtZW1vcnkgewo+Pj4KPj4+IG1lbW9yeUAwCj4+Cj4+IFdpbGwgdGVzdC4K CkZpeGVkLiAoTm8gZHVwbGljYXRlIG5vZGUgZnJvbSBVLUJvb3QuKQoKPj4+PiArICAgICAgICAg ICAgZGV2aWNlX3R5cGUgPSAibWVtb3J5IjsKPj4+PiArICAgICAgICAgICAgcmVnID0gPDB4MCAw eDQwMDAwMDAwPjsKPj4+PiArICAgIH07Cj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICsmdWFydDAgewo+ Pj4+ICsgICAgc3RhdHVzID0gIm9rYXkiOwo+Pj4+ICt9Owo+Pj4+IGRpZmYgLS1naXQgYS9hcmNo L2FybS9ib290L2R0cy9ydGQxMTk1LmR0c2kgYi9hcmNoL2FybS9ib290L2R0cy9ydGQxMTk1LmR0 c2kKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNDc1 NzQwYzY3ZDI2Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2FyY2gvYXJtL2Jvb3QvZHRz L3J0ZDExOTUuZHRzaQo+Pj4+IEBAIC0wLDAgKzEsMTI4IEBACj4+Pj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vci1sYXRlciBPUiBCU0QtMi1DbGF1c2UpCj4+Pj4gKy8q Cj4+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAxNyBBbmRyZWFzIEbDpHJiZXIKPj4+PiArICovCj4+ Pj4gKwo+Pj4+ICsvbWVtcmVzZXJ2ZS8gMHgwMDAwMDAwMCAweDAwMDBjMDAwOyAvKiBib290IGNv ZGUgKi8KPj4+PiArL21lbXJlc2VydmUvIDB4MDAwMGMwMDAgMHgwMDBmNDAwMDsKPj4+PiArL21l bXJlc2VydmUvIDB4MDFiMDAwMDAgMHgwMDQwMDAwMDsgLyogYXVkaW8gKi8KPj4+PiArL21lbXJl c2VydmUvIDB4MDFmZmUwMDAgMHgwMDAwNDAwMDsgLyogcnBjIHJpbmdidWYgKi8KPj4+PiArL21l bXJlc2VydmUvIDB4MTAwMDAwMDAgMHgwMDEwMDAwMDsgLyogc2VjdXJlICovCj4+Pj4gKy9tZW1y ZXNlcnZlLyAweDE3ZmZmMDAwIDB4MDAwMDEwMDA7Cj4+Pj4gKy9tZW1yZXNlcnZlLyAweDE4MDAw MDAwIDB4MDAxMDAwMDA7IC8qIHJidXMgKi8KPj4+PiArL21lbXJlc2VydmUvIDB4MTgxMDAwMDAg MHgwMTAwMDAwMDsgLyogbm9yICovCj4+Pgo+Pj4gWW91IHNob3VsZG4ndCBoYXZlIHRoZSBzYW1l IGVudHJpZXMgaGVyZSBhbmQgaW4gL3Jlc2VydmVkLW1lbW9yeS4gVGhlcmUKPj4+IHdhcyBhIHRp bWUgYmVmb3JlIC9yZXNlcnZlZC1tZW1vcnkgd2FzIGZ1bGx5IHN1cHBvcnRlZCwgYnV0IHdlIHNo b3VsZCBiZQo+Pj4gd2VsbCBwYXN0IHRoYXQgbm93Lgo+Pgo+PiBJIGFtIGRlYWxpbmcgd2l0aCBh IHYyMDEyLjA3IGJhc2VkIGRvd25zdHJlYW0gVS1Cb290IHRoYXQgSSBkbyBub3QgaGF2ZQo+PiBz b3VyY2VzIGZvciwgc28gSSB3b3VsZG4ndCBiZSBzbyBzdXJlIHRoZXJlLi4uIEl0IHdpbGwgb25s eSByZXNwZWN0Cj4+IG1lbXJlc2VydmUgSSB0aGluaywgd2hlcmVhcyByZXNlcnZlZC1tZW1vcnkg YmVsb3cgaXMgZm9yIHRoZSBrZXJuZWwsIG5vPwo+IAo+IFNpZ2guLi4gV2VsbCwgdGhhdCBtYXkg YmUgdG9vIG9sZC4gOigKPiAKPiBJIGNvdWxkIGJlIHdyb25nIHRvbyBhbmQgbm8gb25lIGV2ZXIg YWRkZWQgL3Jlc2VydmVkLW1lbW9yeSBzdXBwb3J0Cj4gZm9yIHUtYm9vdC4gVGhlIGludGVudCB3 YXMgbmV2ZXIgdGhhdCBvbmUgd2FzIGZvciB1LWJvb3QgYW5kIHRoZSBvdGhlcgo+IGZvciB0aGUg a2VybmVsLiBUaGUga2VybmVsIGhhbmRsZXMgYm90aC4gcmVzZXJ2ZWQtbWVtb3J5IHdhcyB0bwo+ IG92ZXJjb21lIHRoZSBsaW1pdGF0aW9ucyBvZiBtZW1yZXNlcnZlLgoKV2hhdCBJIG1lYW50IHdh cyB0aGF0IHNvbWUgdmVyc2lvbnMgb2YgVS1Cb290IHByb2Nlc3MgYW5kIHByaW50Cm1lbXJlc2Vy dmUgcmVnaW9ucyBfYmVmb3JlXyBib290aW5nIGludG8gdGhlIGtlcm5lbCwgaS5lLiB3ZSBkb24n dCB3YW50ClUtQm9vdCdzIGJvb3RYIGNvbW1hbmRzIHRvIHdyaXRlIGRhdGEgaW50byB0aGUgcmVz ZXJ2ZWQgcmVnaW9ucy4KL3Jlc2VydmVkLW1lbW9yeSBhbGxvd3MgdGhlIGtlcm5lbC9ib290bG9h ZGVyIHRvIGFzc29jaWF0ZSBtZW1vcnkKcmVnaW9ucyB3aXRoIGRyaXZlcnMgdmlhIG1lbW9yeS1y ZWdpb24gbm9kZSByZWZlcmVuY2VzIGFuZCB0byBzdGVlcgp3aGV0aGVyIG9yIG5vdCB0aGUgcmVz ZXJ2ZWQgbWVtb3J5IHJlbWFpbnMgbWFwcGVkLgoKPj4+PiArI2luY2x1ZGUgPGR0LWJpbmRpbmdz L2ludGVycnVwdC1jb250cm9sbGVyL2FybS1naWMuaD4KPj4+PiArCj4+Pj4gKy8gewo+Pj4+ICsg ICAgY29tcGF0aWJsZSA9ICJyZWFsdGVrLHJ0ZDExOTUiOwo+Pj4+ICsgICAgaW50ZXJydXB0LXBh cmVudCA9IDwmZ2ljPjsKPj4+PiArICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Owo+Pj4+ICsgICAg I3NpemUtY2VsbHMgPSA8MT47Cj4+Pj4gKwo+Pj4+ICsgICAgY3B1cyB7Cj4+Pj4gKyAgICAgICAg ICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Owo+Pj4+ICsgICAgICAgICAgICAjc2l6ZS1jZWxscyA9 IDwwPjsKPj4+PiArCj4+Pj4gKyAgICAgICAgICAgIGNwdTA6IGNwdUAwIHsKPj4+PiArICAgICAg ICAgICAgICAgICAgICBkZXZpY2VfdHlwZSA9ICJjcHUiOwo+Pj4+ICsgICAgICAgICAgICAgICAg ICAgIGNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNyI7Cj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgcmVnID0gPDB4MD47Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgY2xvY2stZnJlcXVlbmN5 ID0gPDEwMDAwMDAwMDA+Owo+Pj4+ICsgICAgICAgICAgICB9Owo+Pj4+ICsKPj4+PiArICAgICAg ICAgICAgY3B1MTogY3B1QDEgewo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIGRldmljZV90eXBl ID0gImNwdSI7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sY29y dGV4LWE3IjsKPj4+PiArICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHgxPjsKPj4+PiArICAg ICAgICAgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwMDAwMD47Cj4+Pj4gKyAg ICAgICAgICAgIH07Cj4+Pj4gKyAgICB9Owo+Pj4+ICsKPj4+PiArICAgIHJlc2VydmVkLW1lbW9y eSB7Cj4+Pj4gKyAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Owo+Pj4+ICsgICAgICAg ICAgICAjc2l6ZS1jZWxscyA9IDwxPjsKPj4+PiArICAgICAgICAgICAgcmFuZ2VzOwo+Pj4+ICsK Pj4+PiArICAgICAgICAgICAgc2VjdXJlQDEwMDAwMDAwIHsKPj4+PiArICAgICAgICAgICAgICAg ICAgICByZWcgPSA8MHgxMDAwMDAwMCAweDEwMDAwMD47Cj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgbm8tbWFwOwo+Pj4+ICsgICAgICAgICAgICB9Owo+Pj4+ICsKPj4+PiArICAgICAgICAgICAg cmJ1c0AxODAwMDAwMCB7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4MTgwMDAw MDAgMHgxMDAwMDA+Owo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIG5vLW1hcDsKPj4+Cj4+PiBU aGlzIGRvZXNuJ3QgbG9vayByaWdodCBhcyBpdCBvdmVybGFwcyB0aGUgcmVnaXN0ZXIgc3BhY2Uu Cj4+Cj4+IFdpbGwgdHJ5IGRyb3BwaW5nIGl0LiBKYW1lcz8KCk15IHRlc3RpbmcgKHdpdGggaXJx Y2hpcCBwYXRjaGVzKSBzaG93cyB0aGF0IGxlYXZpbmcgdGhlIG1lbXJlc2VydmUgaW4KcGxhY2Ug YW5kIGRyb3BwaW5nIHRoaXMgbm9kZSBsZWFkcyB0byB0aGUgZm9sbG93aW5nIGVycm9yOgoKWyAg ICAwLjAwMDAwMF0gTlJfSVJRUzogMTYsIG5yX2lycXM6IDE2LCBwcmVhbGxvY2F0ZWQgaXJxczog MTYKWyAgICAwLjAwMDAwMF0gLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tClsg ICAgMC4wMDAwMDBdIFdBUk5JTkc6IENQVTogMCBQSUQ6IDAgYXQgYXJjaC9hcm0vbW0vaW9yZW1h cC5jOjMwNApfX2FybV9pb3JlbWFwX3Bmbl9jYWxsZXIrMHgxZTQvMHgyMDgKWyAgICAwLjAwMDAw MF0gTW9kdWxlcyBsaW5rZWQgaW46ClsgICAgMC4wMDAwMDBdIENQVTogMCBQSUQ6IDAgQ29tbTog c3dhcHBlci8wIE5vdCB0YWludGVkCjUuNC4wLXJjNS1uZXh0LTIwMTkxMDI5KyAjMTUyClsgICAg MC4wMDAwMDBdIEhhcmR3YXJlIG5hbWU6IEdlbmVyaWMgRFQgYmFzZWQgc3lzdGVtClsgICAgMC4w MDAwMDBdIFs8YzAyMmY0Njg+XSAodW53aW5kX2JhY2t0cmFjZSkgZnJvbSBbPGMwMjJiY2EwPl0K KHNob3dfc3RhY2srMHgxMC8weDE0KQpbICAgIDAuMDAwMDAwXSBbPGMwMjJiY2EwPl0gKHNob3df c3RhY2spIGZyb20gWzxjMDhhYjdjMD5dCihkdW1wX3N0YWNrKzB4NzgvMHg4YykKWyAgICAwLjAw MDAwMF0gWzxjMDhhYjdjMD5dIChkdW1wX3N0YWNrKSBmcm9tIFs8YzAyM2UzNDQ+XQooX193YXJu KzB4YmMvMHhkOCkKWyAgICAwLjAwMDAwMF0gWzxjMDIzZTM0ND5dIChfX3dhcm4pIGZyb20gWzxj MDIzZTNjND5dCih3YXJuX3Nsb3dwYXRoX2ZtdCsweDY0LzB4YzQpClsgICAgMC4wMDAwMDBdIFs8 YzAyM2UzYzQ+XSAod2Fybl9zbG93cGF0aF9mbXQpIGZyb20gWzxjMDIzNTljOD5dCihfX2FybV9p b3JlbWFwX3Bmbl9jYWxsZXIrMHgxZTQvMHgyMDgpClsgICAgMC4wMDAwMDBdIFs8YzAyMzU5Yzg+ XSAoX19hcm1faW9yZW1hcF9wZm5fY2FsbGVyKSBmcm9tIFs8YzAyMzVhODg+XQooaW9yZW1hcCsw eDIwLzB4MjgpClsgICAgMC4wMDAwMDBdIFs8YzAyMzVhODg+XSAoaW9yZW1hcCkgZnJvbSBbPGMw NzM5MzE4Pl0gKG9mX2lvbWFwKzB4NDAvMHg2NCkKWyAgICAwLjAwMDAwMF0gWzxjMDczOTMxOD5d IChvZl9pb21hcCkgZnJvbSBbPGMwZTE5OWM4Pl0KKHJ0ZDExOXhfaXJxX211eF9pbml0KzB4M2Mv MHgxMzQpClsgICAgMC4wMDAwMDBdIFs8YzBlMTk5Yzg+XSAocnRkMTE5eF9pcnFfbXV4X2luaXQp IGZyb20gWzxjMGUyMWU0OD5dCihvZl9pcnFfaW5pdCsweDE5NC8weDJiNCkKWyAgICAwLjAwMDAw MF0gWzxjMGUyMWU0OD5dIChvZl9pcnFfaW5pdCkgZnJvbSBbPGMwZTAyOWY0Pl0KKGluaXRfSVJR KzB4MjQvMHg3OCkKWyAgICAwLjAwMDAwMF0gWzxjMGUwMjlmND5dIChpbml0X0lSUSkgZnJvbSBb PGMwZTAwYzAwPl0KKHN0YXJ0X2tlcm5lbCsweDI5Yy8weDQ4OCkKWyAgICAwLjAwMDAwMF0gWzxj MGUwMGMwMD5dIChzdGFydF9rZXJuZWwpIGZyb20gWzwwMDAwMDAwMD5dICgweDApClsgICAgMC4w MDAwMDBdIHJhbmRvbTogZ2V0X3JhbmRvbV9ieXRlcyBjYWxsZWQgZnJvbQpwcmludF9vb3BzX2Vu ZF9tYXJrZXIrMHgyNC8weDRjIHdpdGggY3JuZ19pbml0PTAKWyAgICAwLjAwMDAwMF0gLS0tWyBl bmQgdHJhY2UgMDAwMDAwMDAwMDAwMDAwMCBdLS0tClsgICAgMC4wMDAwMDBdIDg8LS0tIGN1dCBo ZXJlIC0tLQpbICAgIDAuMDAwMDAwXSBVbmFibGUgdG8gaGFuZGxlIGtlcm5lbCBOVUxMIHBvaW50 ZXIgZGVyZWZlcmVuY2UgYXQKdmlydHVhbCBhZGRyZXNzIDAwMDAwMDQwClsgICAgMC4wMDAwMDBd IHBnZCA9IChwdHJ2YWwpClsgICAgMC4wMDAwMDBdIFswMDAwMDA0MF0gKnBnZD04MDAwMDAwMDEw NDAwMywgKnBtZD0wMDAwMDAwMApbICAgIDAuMDAwMDAwXSBJbnRlcm5hbCBlcnJvcjogT29wczog YTA2IFsjMV0gUFJFRU1QVCBTTVAgQVJNClsgICAgMC4wMDAwMDBdIE1vZHVsZXMgbGlua2VkIGlu OgpbICAgIDAuMDAwMDAwXSBDUFU6IDAgUElEOiAwIENvbW06IHN3YXBwZXIvMCBUYWludGVkOiBH ICAgICAgICBXCiA1LjQuMC1yYzUtbmV4dC0yMDE5MTAyOSsgIzE1MgpbICAgIDAuMDAwMDAwXSBI YXJkd2FyZSBuYW1lOiBHZW5lcmljIERUIGJhc2VkIHN5c3RlbQpbICAgIDAuMDAwMDAwXSBQQyBp cyBhdCBydGQxMTl4X2lycV9tdXhfaW5pdCsweDk0LzB4MTM0ClsgICAgMC4wMDAwMDBdIExSIGlz IGF0IDB4MApbICAgIDAuMDAwMDAwXSBwYyA6IFs8YzBlMTlhMjA+XSAgICBsciA6IFs8MDAwMDAw MDA+XSAgICBwc3I6IGEwMDAwMGQzClsgICAgMC4wMDAwMDBdIHNwIDogYzEwMDFmMzggIGlwIDog ZWIwMDFkODAgIGZwIDogYzBiZGI3ZDAKWyAgICAwLjAwMDAwMF0gcjEwOiAwMDAwMDEwMCAgcjkg OiAwMDAwMDEyMiAgcjggOiAwMDAwMDAwMApbICAgIDAuMDAwMDAwXSByNyA6IGMwYTRkZDhjICBy NiA6IGVmNWY4ZmJjICByNSA6IGViMDAxZDQwICByNCA6IDAwMDAwMDQwClsgICAgMC4wMDAwMDBd IHIzIDogMDAwMDAwMDQgIHIyIDogMDAwMDAwMDAgIHIxIDogMDAwMDAwMDAgIHIwIDogMDAwMDAw NDAKWyAgICAwLjAwMDAwMF0gRmxhZ3M6IE56Q3YgIElSUXMgb2ZmICBGSVFzIG9mZiAgTW9kZSBT VkNfMzIgIElTQSBBUk0KU2VnbWVudCB1c2VyClsgICAgMC4wMDAwMDBdIENvbnRyb2w6IDMwYzUz ODdkICBUYWJsZTogMDAxMDMwMDAgIERBQzogZmZmZmZmZmQKWyAgICAwLjAwMDAwMF0gUHJvY2Vz cyBzd2FwcGVyLzAgKHBpZDogMCwgc3RhY2sgbGltaXQgPSAweChwdHJ2YWwpKQpbICAgIDAuMDAw MDAwXSBTdGFjazogKDB4YzEwMDFmMzggdG8gMHhjMTAwMjAwMCkKWyAgICAwLjAwMDAwMF0gMWYy MDoKICAgMDAwMDAxMjIgMDAwMDAxMDAKWyAgICAwLjAwMDAwMF0gMWY0MDogZWIwMDFjYzAgZWY1 ZjlhMjAgYzEwMDFmNjQgYzEwMDFmNmMgZWIwMDFkMDAKYzBlMjFlNDggYzEwNWIyZWMgYzAyODQz NDgKWyAgICAwLjAwMDAwMF0gMWY2MDogMDAwMDAwMDAgZWIwMDFkMDAgZWIwMDFkMDAgYzEwMDFm NmMgYzEwMDFmNmMKYzEwMDNlNTAgMDAwMDAwMDEgYzBlMzJhMzAKWyAgICAwLjAwMDAwMF0gMWY4 MDogYzEwMDNlNDAgYzEwNjE3ZGMgYzEwMzVkODAgZmZmZmZmZmYgY2NjY2NjY2QKMDAwMDAwMDEg YzBlMzJhNDAgYzBlMDI5ZjQKWyAgICAwLjAwMDAwMF0gMWZhMDogY2NjY2NjY2QgYzBlMDBjMDAg ZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAKYzBlMDA1ODQgMDAwMDAwMDAgZWY1ZjdlMDAKWyAg ICAwLjAwMDAwMF0gMWZjMDogMDAwMDAwMDAgYzBlMzJhNDAgMDAwMDAwMDAgYzEwMDNlNTAgMDAw MDAwMDAKYzBlMDAzMzAgMDAwMDAwMDAgMzBjMDM4N2QKWyAgICAwLjAwMDAwMF0gMWZlMDogMDAw MDEzOGEgMDFmZjIwMDAgNDEwZmMwNzUgMzBjNTM4N2QgMDAwMDAwMDAKMDAwMDAwMDAgMDAwMDAw MDAgMDAwMDAwMDAKWyAgICAwLjAwMDAwMF0gWzxjMGUxOWEyMD5dIChydGQxMTl4X2lycV9tdXhf aW5pdCkgZnJvbSBbPGMwZTIxZTQ4Pl0KKG9mX2lycV9pbml0KzB4MTk0LzB4MmI0KQpbICAgIDAu MDAwMDAwXSBbPGMwZTIxZTQ4Pl0gKG9mX2lycV9pbml0KSBmcm9tIFs8YzBlMDI5ZjQ+XQooaW5p dF9JUlErMHgyNC8weDc4KQpbICAgIDAuMDAwMDAwXSBbPGMwZTAyOWY0Pl0gKGluaXRfSVJRKSBm cm9tIFs8YzBlMDBjMDA+XQooc3RhcnRfa2VybmVsKzB4MjljLzB4NDg4KQpbICAgIDAuMDAwMDAw XSBbPGMwZTAwYzAwPl0gKHN0YXJ0X2tlcm5lbCkgZnJvbSBbPDAwMDAwMDAwPl0gKDB4MCkKWyAg ICAwLjAwMDAwMF0gQ29kZTogZTU4NTMwMDQgZTU5NzAwMDggZTA4NDQwMDAgZTU4NTQwMDggKGU1 ODQ4MDAwKQpbICAgIDAuMDAwMDAwXSAtLS1bIGVuZCB0cmFjZSBmNjg3MjhhMGQzMDUzYjUyIF0t LS0KWyAgICAwLjAwMDAwMF0gS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IEF0dGVtcHRlZCB0 byBraWxsIHRoZSBpZGxlIHRhc2shClsgICAgMC4wMDAwMDBdIC0tLVsgZW5kIEtlcm5lbCBwYW5p YyAtIG5vdCBzeW5jaW5nOiBBdHRlbXB0ZWQgdG8ga2lsbAp0aGUgaWRsZSB0YXNrISBdLS0tCgpU aGlzIGFwcGVhcnMgdG8gYmUgaW4gcGFydCBhIGJ1ZyBpbiBteSBlcnJvciBoYW5kbGluZyBvZiBv Zl9pb21hcCAtIGl0CnJldHVybnMgTlVMTCwgbm90IFBUUl9FUlIoKS4gQnV0IGV2ZW4gd2l0aCB0 aGF0IGZpeGVkIEkgZ2V0IGZhdGFsIGVycm9ycwphdCBzb21lIHBvaW50LgoKVGhlIHdvcmthcm91 bmQgSSBoYXZlIGlzIGEgY3VzdG9tIG1hY2gtcmVhbHRlayBtYWNoaW5lX2Rlc2Mgd2l0aCAubWFw X2lvCmFzc2lnbmluZyBleHBsaWNpdCAudmlydHVhbCBhZGRyZXNzZXMgYW5kIE1UX0RFVklDRSBm b3IgdGhlc2UgcmFuZ2VzLiBJCmFsc28gZXhwZXJpbWVudGVkIHdpdGggLnJlc2VydmUgcmVtb3Zp bmcgdGhyZWUgbWVtYmxvY2tzLCBzbyB3ZSBoYXZlIGEKcHV6emxlIG9mIGZvdXIgcGxhY2VzIG1l c3Npbmcgd2l0aCB0aGUgc2FtZSBtZW1vcnkgcmVnaW9ucyBhbmQgc29tZQpjb21iaW5hdGlvbnMg d29ya2luZyBpbiB0aGUgZW5kLCB1bmNsZWFyIHdoeSBleGFjdGx5LgoKPj4+PiArICAgICAgICAg ICAgfTsKPj4+PiArCj4+Pj4gKyAgICAgICAgICAgIG5vckAxODEwMDAwMCB7Cj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgcmVnID0gPDB4MTgxMDAwMDAgMHgxMDAwMDAwPjsKPj4+PiArICAgICAg ICAgICAgICAgICAgICBuby1tYXA7Cj4+Pj4gKyAgICAgICAgICAgIH07Cj4+Cj4+IFNhbWUgaXNz dWUgaGVyZSwgSSBndWVzcz8KPiAKPiBZZXMuCgpJIGZlYXIgdGhlIG9ubHkgY29uY2x1c2lvbiBy aWdodCBub3cgd291bGQgYmUgdG8gZGVmZXIgUlREMTE5NSB0byB2NS42CnNvIHRoYXQgYXQgbGVh c3QgUlREMTI5eCBwYXJ0cyBjYW4gcHJvZ3Jlc3MgZm9yIHY1LjU/IFVubGVzcyB3ZSBjYW4KYWdy ZWUgb24gYSBzdWJzZXQgdG8gYXQgbGVhc3Qgc2hvd2Nhc2UgaW5pdGlhbCBlYXJseWNvbiBvdXRw dXQgYW5kIGFsbG93CnVzIHRvIGFkZCBub2Rlcywgc3VjaCBhcyByZXNldCBjb250cm9sbGVycywg YXMgd2UgYWRkL2VuYWJsZSBkcml2ZXJzLgoKUmVnYXJkcywKQW5kcmVhcwoKLS0gClNVU0UgU29m dHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSApNYXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJl cmcsIEdlcm1hbnkKR0Y6IEZlbGl4IEltZW5kw7ZyZmZlcgpIUkIgMzY4MDkgKEFHIE7DvHJuYmVy ZykKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFy bS1rZXJuZWwK