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=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,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 18C26C433E6 for ; Thu, 11 Mar 2021 13:31:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CA6F764FE0 for ; Thu, 11 Mar 2021 13:31:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233487AbhCKNa7 (ORCPT ); Thu, 11 Mar 2021 08:30:59 -0500 Received: from mx07-00178001.pphosted.com ([185.132.182.106]:9648 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233710AbhCKNac (ORCPT ); Thu, 11 Mar 2021 08:30:32 -0500 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 12BDN16E027258; Thu, 11 Mar 2021 14:30:14 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h=subject : to : cc : references : from : message-id : date : mime-version : in-reply-to : content-type : content-transfer-encoding; s=selector1; bh=t+dy4CSZsNmzfzQgH5uYC9Jt29sMTR/fF4B8g1ToJIc=; b=fTsgBXozjRbf24RMNeX3PX0/zzlPiCdOTHwbWKKOD5gIwgtyOYJf28EIfEjmDqKG6g1o nf5d4QWhxE2Bmy88aoxA5AYmAoJhJfzhx3BDoVyXRIMkRP543QUncNiXS0wQeYNBQrWY wpmeB8YOiUVqAnQ01sgHfpf7p5HMX4T9YtonJepS1cYConMwJOt2jo/9OhJyfHosU5tr fCRYv8iUNJAYk6KGmSo4Vcp+LP6vNtXddt4OS9Snqc8+/2whnN1g99Wewk+Zpd+GUlS3 +G8tz6+faIndjq0hqlbbWXPQ5Fx1A1JtvVjXbPEyL6WPwenuMn2aSljVRK7qO4BaThi0 5A== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 3740377043-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Mar 2021 14:30:14 +0100 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 3278F10002A; Thu, 11 Mar 2021 14:30:14 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag2node3.st.com [10.75.127.6]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id EFA17245D74; Thu, 11 Mar 2021 14:30:13 +0100 (CET) Received: from lmecxl0912.lme.st.com (10.75.127.51) by SFHDAG2NODE3.st.com (10.75.127.6) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 11 Mar 2021 14:30:12 +0100 Subject: Re: [PATCH 5/8] ARM: dts: stm32: introduce stm32h7-pinctrl.dtsi to support stm32h75x To: dillon min CC: Rob Herring , Maxime Coquelin , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , , Linux ARM , Linux Kernel Mailing List , , Vladimir Murzin , References: <1614758717-18223-1-git-send-email-dillon.minfei@gmail.com> <1614758717-18223-6-git-send-email-dillon.minfei@gmail.com> From: Alexandre TORGUE Message-ID: <2c816d16-9925-c52f-6ead-a0112026df28@foss.st.com> Date: Thu, 11 Mar 2021 14:30:12 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [10.75.127.51] X-ClientProxiedBy: SFHDAG1NODE2.st.com (10.75.127.2) To SFHDAG2NODE3.st.com (10.75.127.6) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369,18.0.761 definitions=2021-03-11_04:2021-03-10,2021-03-11 signatures=0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Dillon On 3/11/21 1:23 PM, dillon min wrote: > Hi Alexandre > > On Thu, Mar 11, 2021 at 6:40 PM Alexandre TORGUE > wrote: >> >> Hi Dillon >> >> On 3/3/21 9:05 AM, dillon.minfei@gmail.com wrote: >>> From: dillon min >>> >>> To support stm32h750 and stm32h743, we need a base stm32h7-pinctrl.dtsi >>> as stm32h743 & h750 has almost the same interface. so, just rename >>> stm32h743-pinctrl.dtsi to stm32h7-pinctrl.dtsi >>> >> >> You do not "just" rename but you keel also the old version. I don't >> agree with this approach. You have first to rename >> stm32h743-pinctrl.dtsi to stm32h7-pinctrl.dtsi (keeping copyright as >> they are please) and modify existing H7 boards which currently use >> stm32h743-pinctrl.dtsi. >> Then you create a second patch adding your pingroups. > For stm32h7's new board support , I guess following the stm32f7/stm32f4's style Yes sorry, I read it too quickly > is a reasonable way to do it, but add a little optimization。 > which means : > old structure > stm32h7-pinctrl.dtsi --> stm32h743-pinctrl.dtsi (referenced by > stm32h743i-disco, -eval) > |--> stm32h750-pinctrl.dtsi > (referenced by stm32h750i-art-pi, etc) > add art-pi other board's pin definition in stm32h750-pinctrl.dtsi with > xxx_pins_a, xxx_pins_b > xxx_pins_a used for art-pi, xxx_pins_b used for other boards. > > after more boards add in support, there will be more xxx_pin_c, .... defined > > as the pin map is according to the hardware schematic diagram io connection. > so, why not move xxx_pin_x to a board specific place. such as > stm32h750i-art-pi.dts > > new structure: > 1, rename stm32h743-pinctrl.dtsi to stm32h7-pinctrl.dtsi (only > preserve gpioa...k,) > 2, move xxx_pins_x from stm32h7-pinctrl.dtsi to > stm32h7xx-disco/eval/art-pi/etc.dts (as they depends on hardware > schematic) > > stm32h7-pinctrl.dtsi --> stm32h743i-discon.dts > |--> stm32h743i-eval.dts > |--> stm32h750i-art-pi.dts > |--> stm32h7xxx.dts > would you agree this ? :) it remember me an old discussion we had with Ahmad or Marek. My first feeling is "The group definition follow the SoC, and the group choice is done on the board". But As said in the past I have to think more about this topic and check how it could be reorganize (as it would be nice to have the same approach for MPU and MCU boards.) I'll try to post something soon. Waiting that this patch looks. As you mainly change the name can you keep please header (copyright) as they were initially. >> >> Now regarding "st,stm32h750-pinctrl", I see a patch dealing with this >> new binding but no update on driver side. Do I miss something ? what are >> differences between h743 and h750 regarding pinctrl ? > Oh, i forget to add pin driver under drivers/pinctrl/stm32/ > will add it next time. >> >> Regards >> Alex >> >>> Signed-off-by: dillon min >>> --- >>> arch/arm/boot/dts/stm32h7-pinctrl.dtsi | 392 +++++++++++++++++++++++++++++++ >>> arch/arm/boot/dts/stm32h743-pinctrl.dtsi | 307 +----------------------- >>> 2 files changed, 398 insertions(+), 301 deletions(-) >>> create mode 100644 arch/arm/boot/dts/stm32h7-pinctrl.dtsi >>> >>> diff --git a/arch/arm/boot/dts/stm32h7-pinctrl.dtsi b/arch/arm/boot/dts/stm32h7-pinctrl.dtsi >>> new file mode 100644 >>> index 000000000000..7d4b5d683ccc >>> --- /dev/null >>> +++ b/arch/arm/boot/dts/stm32h7-pinctrl.dtsi >>> @@ -0,0 +1,392 @@ >>> +/* >>> + * Copyright 2021 - Dillon Min >>> + * >>> + * This file is dual-licensed: you can use it either under the terms >>> + * of the GPL or the X11 license, at your option. Note that this dual >>> + * licensing only applies to this file, and not this project as a >>> + * whole. >>> + * >>> + * a) This file is free software; you can redistribute it and/or >>> + * modify it under the terms of the GNU General Public License as >>> + * published by the Free Software Foundation; either version 2 of the >>> + * License, or (at your option) any later version. >>> + * >>> + * This file is distributed in the hope that it will be useful, >>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>> + * GNU General Public License for more details. >>> + * >>> + * Or, alternatively, >>> + * >>> + * b) Permission is hereby granted, free of charge, to any person >>> + * obtaining a copy of this software and associated documentation >>> + * files (the "Software"), to deal in the Software without >>> + * restriction, including without limitation the rights to use, >>> + * copy, modify, merge, publish, distribute, sublicense, and/or >>> + * sell copies of the Software, and to permit persons to whom the >>> + * Software is furnished to do so, subject to the following >>> + * conditions: >>> + * >>> + * The above copyright notice and this permission notice shall be >>> + * included in all copies or substantial portions of the Software. >>> + * >>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, >>> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES >>> + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND >>> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT >>> + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, >>> + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING >>> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >>> + * OTHER DEALINGS IN THE SOFTWARE. >>> + */ >>> + >>> +#include >>> + >>> +/ { >>> + soc { >>> + pinctrl: pin-controller { >>> + #address-cells = <1>; >>> + #size-cells = <1>; >>> + ranges = <0 0x58020000 0x3000>; >>> + interrupt-parent = <&exti>; >>> + st,syscfg = <&syscfg 0x8>; >>> + pins-are-numbered; >>> + >>> + gpioa: gpio@58020000 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x0 0x400>; >>> + clocks = <&rcc GPIOA_CK>; >>> + st,bank-name = "GPIOA"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpiob: gpio@58020400 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x400 0x400>; >>> + clocks = <&rcc GPIOB_CK>; >>> + st,bank-name = "GPIOB"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpioc: gpio@58020800 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x800 0x400>; >>> + clocks = <&rcc GPIOC_CK>; >>> + st,bank-name = "GPIOC"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpiod: gpio@58020c00 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0xc00 0x400>; >>> + clocks = <&rcc GPIOD_CK>; >>> + st,bank-name = "GPIOD"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpioe: gpio@58021000 { >>> + gpio-controller; > >>> + reg = <0x1000 0x400>; >>> + clocks = <&rcc GPIOE_CK>; >>> + st,bank-name = "GPIOE"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpiof: gpio@58021400 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x1400 0x400>; >>> + clocks = <&rcc GPIOF_CK>; >>> + st,bank-name = "GPIOF"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpiog: gpio@58021800 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x1800 0x400>; >>> + clocks = <&rcc GPIOG_CK>; >>> + st,bank-name = "GPIOG"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpioh: gpio@58021c00 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x1c00 0x400>; >>> + clocks = <&rcc GPIOH_CK>; >>> + st,bank-name = "GPIOH"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpioi: gpio@58022000 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x2000 0x400>; >>> + clocks = <&rcc GPIOI_CK>; >>> + st,bank-name = "GPIOI"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpioj: gpio@58022400 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x2400 0x400>; >>> + clocks = <&rcc GPIOJ_CK>; >>> + st,bank-name = "GPIOJ"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + gpiok: gpio@58022800 { >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x2800 0x400>; >>> + clocks = <&rcc GPIOK_CK>; >>> + st,bank-name = "GPIOK"; >>> + interrupt-controller; >>> + #interrupt-cells = <2>; >>> + }; >>> + >>> + i2c1_pins_a: i2c1-0 { >>> + pins { >>> + pinmux = , /* I2C1_SCL */ >>> + ; /* I2C1_SDA */ >>> + bias-disable; >>> + drive-open-drain; >>> + slew-rate = <0>; >>> + }; >>> + }; >>> + >>> + ethernet_rmii: rmii-0 { >>> + pins { >>> + pinmux = , >>> + , >>> + , >>> + , >>> + , >>> + , >>> + , >>> + , >>> + ; >>> + slew-rate = <2>; >>> + }; >>> + }; >>> + >>> + sdmmc1_b4_pins_a: sdmmc1-b4-0 { >>> + pins { >>> + pinmux = , /* SDMMC1_D0 */ >>> + , /* SDMMC1_D1 */ >>> + , /* SDMMC1_D2 */ >>> + , /* SDMMC1_D3 */ >>> + , /* SDMMC1_CK */ >>> + ; /* SDMMC1_CMD */ >>> + slew-rate = <3>; >>> + drive-push-pull; >>> + bias-disable; >>> + }; >>> + }; >>> + >>> + sdmmc1_b4_od_pins_a: sdmmc1-b4-od-0 { >>> + pins1 { >>> + pinmux = , /* SDMMC1_D0 */ >>> + , /* SDMMC1_D1 */ >>> + , /* SDMMC1_D2 */ >>> + , /* SDMMC1_D3 */ >>> + ; /* SDMMC1_CK */ >>> + slew-rate = <3>; >>> + drive-push-pull; >>> + bias-disable; >>> + }; >>> + pins2{ >>> + pinmux = ; /* SDMMC1_CMD */ >>> + slew-rate = <3>; >>> + drive-open-drain; >>> + bias-disable; >>> + }; >>> + }; >>> + >>> + sdmmc1_b4_sleep_pins_a: sdmmc1-b4-sleep-0 { >>> + pins { >>> + pinmux = , /* SDMMC1_D0 */ >>> + , /* SDMMC1_D1 */ >>> + , /* SDMMC1_D2 */ >>> + , /* SDMMC1_D3 */ >>> + , /* SDMMC1_CK */ >>> + ; /* SDMMC1_CMD */ >>> + }; >>> + }; >>> + >>> + sdmmc2_b4_pins_a: sdmmc2-b4-0 { >>> + pins { >>> + pinmux = , /* SDMMC1_D0 */ >>> + , /* SDMMC1_D1 */ >>> + , /* SDMMC1_D2 */ >>> + , /* SDMMC1_D3 */ >>> + , /* SDMMC1_CK */ >>> + ; /* SDMMC1_CMD */ >>> + slew-rate = <3>; >>> + drive-push-pull; >>> + bias-disable; >>> + }; >>> + }; >>> + >>> + sdmmc2_b4_od_pins_a: sdmmc2-b4-od-0 { >>> + pins1 { >>> + pinmux = , /* SDMMC2_D0 */ >>> + , /* SDMMC1_D1 */ >>> + , /* SDMMC1_D2 */ >>> + , /* SDMMC1_D3 */ >>> + ; /* SDMMC1_CK */ >>> + slew-rate = <3>; >>> + drive-push-pull; >>> + bias-disable; >>> + }; >>> + pins2{ >>> + pinmux = ; /* SDMMC1_CMD */ >>> + slew-rate = <3>; >>> + drive-open-drain; >>> + bias-disable; >>> + }; >>> + }; >>> + >>> + sdmmc2_b4_sleep_pins_a: sdmmc2-b4-sleep-0 { >>> + pins { >>> + pinmux = , /* SDMMC1_D0 */ >>> + , /* SDMMC1_D1 */ >>> + , /* SDMMC1_D2 */ >>> + , /* SDMMC1_D3 */ >>> + , /* SDMMC1_CK */ >>> + ; /* SDMMC1_CMD */ >>> + }; >>> + }; >>> + >>> + sdmmc1_dir_pins_a: sdmmc1-dir-0 { >>> + pins1 { >>> + pinmux = , /* SDMMC1_D0DIR */ >>> + , /* SDMMC1_D123DIR */ >>> + ; /* SDMMC1_CDIR */ >>> + slew-rate = <3>; >>> + drive-push-pull; >>> + bias-pull-up; >>> + }; >>> + pins2{ >>> + pinmux = ; /* SDMMC1_CKIN */ >>> + bias-pull-up; >>> + }; >>> + }; >>> + >>> + sdmmc1_dir_sleep_pins_a: sdmmc1-dir-sleep-0 { >>> + pins { >>> + pinmux = , /* SDMMC1_D0DIR */ >>> + , /* SDMMC1_D123DIR */ >>> + , /* SDMMC1_CDIR */ >>> + ; /* SDMMC1_CKIN */ >>> + }; >>> + }; >>> + >>> + usart1_pins: usart1-0 { >>> + pins1 { >>> + pinmux = ; /* USART1_TX */ >>> + bias-disable; >>> + drive-push-pull; >>> + slew-rate = <0>; >>> + }; >>> + pins2 { >>> + pinmux = ; /* USART1_RX */ >>> + bias-disable; >>> + }; >>> + }; >>> + >>> + usart2_pins: usart2-0 { >>> + pins1 { >>> + pinmux = ; /* USART2_TX */ >>> + bias-disable; >>> + drive-push-pull; >>> + slew-rate = <0>; >>> + }; >>> + pins2 { >>> + pinmux = ; /* USART2_RX */ >>> + bias-disable; >>> + }; >>> + }; >>> + >>> + usart3_pins: usart3-0 { >>> + pins1 { >>> + pinmux = ; /* USART3_TX */ >>> + bias-disable; >>> + drive-push-pull; >>> + slew-rate = <0>; >>> + }; >>> + pins2 { >>> + pinmux = ; /* USART3_RX */ >>> + bias-disable; >>> + }; >>> + }; >>> + >>> + uart4_pins: uart4-0 { >>> + pins1 { >>> + pinmux = ; /* UART4_TX */ >>> + bias-disable; >>> + drive-push-pull; >>> + slew-rate = <0>; >>> + }; >>> + pins2 { >>> + pinmux = ; /* UART4_RX */ >>> + bias-disable; >>> + }; >>> + }; >>> + >>> + usbotg_hs_pins_a: usbotg-hs-0 { >>> + pins { >>> + pinmux = , /* ULPI_NXT */ >>> + , /* ULPI_DIR> */ >>> + , /* ULPI_STP> */ >>> + , /* ULPI_CK> */ >>> + , /* ULPI_D0> */ >>> + , /* ULPI_D1> */ >>> + , /* ULPI_D2> */ >>> + , /* ULPI_D3> */ >>> + , /* ULPI_D4> */ >>> + , /* ULPI_D5> */ >>> + , /* ULPI_D6> */ >>> + ; /* ULPI_D7> */ >>> + bias-disable; >>> + drive-push-pull; >>> + slew-rate = <2>; >>> + }; >>> + }; >>> + >>> + spi1_pins: spi1-0 { >>> + pins1 { >>> + pinmux = , >>> + /* SPI1_CLK */ >>> + ; >>> + /* SPI1_MOSI */ >>> + bias-disable; >>> + drive-push-pull; >>> + slew-rate = <2>; >>> + }; >>> + pins2 { >>> + pinmux = ; >>> + /* SPI1_MISO */ >>> + bias-disable; >>> + }; >>> + }; >>> + }; >>> + }; >>> +}; >>> diff --git a/arch/arm/boot/dts/stm32h743-pinctrl.dtsi b/arch/arm/boot/dts/stm32h743-pinctrl.dtsi >>> index fa5dcb6a5fdd..6b1e115307b9 100644 >>> --- a/arch/arm/boot/dts/stm32h743-pinctrl.dtsi >>> +++ b/arch/arm/boot/dts/stm32h743-pinctrl.dtsi >>> @@ -1,306 +1,11 @@ >>> +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) >>> /* >>> - * Copyright 2017 - Alexandre Torgue >>> - * >>> - * This file is dual-licensed: you can use it either under the terms >>> - * of the GPL or the X11 license, at your option. Note that this dual >>> - * licensing only applies to this file, and not this project as a >>> - * whole. >>> - * >>> - * a) This file is free software; you can redistribute it and/or >>> - * modify it under the terms of the GNU General Public License as >>> - * published by the Free Software Foundation; either version 2 of the >>> - * License, or (at your option) any later version. >>> - * >>> - * This file is distributed in the hope that it will be useful, >>> - * but WITHOUT ANY WARRANTY; without even the implied warranty of >>> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>> - * GNU General Public License for more details. >>> - * >>> - * Or, alternatively, >>> - * >>> - * b) Permission is hereby granted, free of charge, to any person >>> - * obtaining a copy of this software and associated documentation >>> - * files (the "Software"), to deal in the Software without >>> - * restriction, including without limitation the rights to use, >>> - * copy, modify, merge, publish, distribute, sublicense, and/or >>> - * sell copies of the Software, and to permit persons to whom the >>> - * Software is furnished to do so, subject to the following >>> - * conditions: >>> - * >>> - * The above copyright notice and this permission notice shall be >>> - * included in all copies or substantial portions of the Software. >>> - * >>> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, >>> - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES >>> - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND >>> - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT >>> - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, >>> - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING >>> - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >>> - * OTHER DEALINGS IN THE SOFTWARE. >>> + * Copyright (C) STMicroelectronics 2017 - All Rights Reserved >>> + * Author: Alexandre Torgue for STMicroelectronics. >>> */ >>> >>> -#include >>> +#include "stm32h7-pinctrl.dtsi" >>> >>> -/ { >>> - soc { >>> - pin-controller { >>> - #address-cells = <1>; >>> - #size-cells = <1>; >>> - compatible = "st,stm32h743-pinctrl"; >>> - ranges = <0 0x58020000 0x3000>; >>> - interrupt-parent = <&exti>; >>> - st,syscfg = <&syscfg 0x8>; >>> - pins-are-numbered; >>> - >>> - gpioa: gpio@58020000 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x0 0x400>; >>> - clocks = <&rcc GPIOA_CK>; >>> - st,bank-name = "GPIOA"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpiob: gpio@58020400 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x400 0x400>; >>> - clocks = <&rcc GPIOB_CK>; >>> - st,bank-name = "GPIOB"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpioc: gpio@58020800 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x800 0x400>; >>> - clocks = <&rcc GPIOC_CK>; >>> - st,bank-name = "GPIOC"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpiod: gpio@58020c00 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0xc00 0x400>; >>> - clocks = <&rcc GPIOD_CK>; >>> - st,bank-name = "GPIOD"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpioe: gpio@58021000 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x1000 0x400>; >>> - clocks = <&rcc GPIOE_CK>; >>> - st,bank-name = "GPIOE"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpiof: gpio@58021400 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x1400 0x400>; >>> - clocks = <&rcc GPIOF_CK>; >>> - st,bank-name = "GPIOF"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpiog: gpio@58021800 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x1800 0x400>; >>> - clocks = <&rcc GPIOG_CK>; >>> - st,bank-name = "GPIOG"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpioh: gpio@58021c00 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x1c00 0x400>; >>> - clocks = <&rcc GPIOH_CK>; >>> - st,bank-name = "GPIOH"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpioi: gpio@58022000 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x2000 0x400>; >>> - clocks = <&rcc GPIOI_CK>; >>> - st,bank-name = "GPIOI"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpioj: gpio@58022400 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x2400 0x400>; >>> - clocks = <&rcc GPIOJ_CK>; >>> - st,bank-name = "GPIOJ"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - gpiok: gpio@58022800 { >>> - gpio-controller; >>> - #gpio-cells = <2>; >>> - reg = <0x2800 0x400>; >>> - clocks = <&rcc GPIOK_CK>; >>> - st,bank-name = "GPIOK"; >>> - interrupt-controller; >>> - #interrupt-cells = <2>; >>> - }; >>> - >>> - i2c1_pins_a: i2c1-0 { >>> - pins { >>> - pinmux = , /* I2C1_SCL */ >>> - ; /* I2C1_SDA */ >>> - bias-disable; >>> - drive-open-drain; >>> - slew-rate = <0>; >>> - }; >>> - }; >>> - >>> - ethernet_rmii: rmii-0 { >>> - pins { >>> - pinmux = , >>> - , >>> - , >>> - , >>> - , >>> - , >>> - , >>> - , >>> - ; >>> - slew-rate = <2>; >>> - }; >>> - }; >>> - >>> - sdmmc1_b4_pins_a: sdmmc1-b4-0 { >>> - pins { >>> - pinmux = , /* SDMMC1_D0 */ >>> - , /* SDMMC1_D1 */ >>> - , /* SDMMC1_D2 */ >>> - , /* SDMMC1_D3 */ >>> - , /* SDMMC1_CK */ >>> - ; /* SDMMC1_CMD */ >>> - slew-rate = <3>; >>> - drive-push-pull; >>> - bias-disable; >>> - }; >>> - }; >>> - >>> - sdmmc1_b4_od_pins_a: sdmmc1-b4-od-0 { >>> - pins1 { >>> - pinmux = , /* SDMMC1_D0 */ >>> - , /* SDMMC1_D1 */ >>> - , /* SDMMC1_D2 */ >>> - , /* SDMMC1_D3 */ >>> - ; /* SDMMC1_CK */ >>> - slew-rate = <3>; >>> - drive-push-pull; >>> - bias-disable; >>> - }; >>> - pins2{ >>> - pinmux = ; /* SDMMC1_CMD */ >>> - slew-rate = <3>; >>> - drive-open-drain; >>> - bias-disable; >>> - }; >>> - }; >>> - >>> - sdmmc1_b4_sleep_pins_a: sdmmc1-b4-sleep-0 { >>> - pins { >>> - pinmux = , /* SDMMC1_D0 */ >>> - , /* SDMMC1_D1 */ >>> - , /* SDMMC1_D2 */ >>> - , /* SDMMC1_D3 */ >>> - , /* SDMMC1_CK */ >>> - ; /* SDMMC1_CMD */ >>> - }; >>> - }; >>> - >>> - sdmmc1_dir_pins_a: sdmmc1-dir-0 { >>> - pins1 { >>> - pinmux = , /* SDMMC1_D0DIR */ >>> - , /* SDMMC1_D123DIR */ >>> - ; /* SDMMC1_CDIR */ >>> - slew-rate = <3>; >>> - drive-push-pull; >>> - bias-pull-up; >>> - }; >>> - pins2{ >>> - pinmux = ; /* SDMMC1_CKIN */ >>> - bias-pull-up; >>> - }; >>> - }; >>> - >>> - sdmmc1_dir_sleep_pins_a: sdmmc1-dir-sleep-0 { >>> - pins { >>> - pinmux = , /* SDMMC1_D0DIR */ >>> - , /* SDMMC1_D123DIR */ >>> - , /* SDMMC1_CDIR */ >>> - ; /* SDMMC1_CKIN */ >>> - }; >>> - }; >>> - >>> - usart1_pins: usart1-0 { >>> - pins1 { >>> - pinmux = ; /* USART1_TX */ >>> - bias-disable; >>> - drive-push-pull; >>> - slew-rate = <0>; >>> - }; >>> - pins2 { >>> - pinmux = ; /* USART1_RX */ >>> - bias-disable; >>> - }; >>> - }; >>> - >>> - usart2_pins: usart2-0 { >>> - pins1 { >>> - pinmux = ; /* USART2_TX */ >>> - bias-disable; >>> - drive-push-pull; >>> - slew-rate = <0>; >>> - }; >>> - pins2 { >>> - pinmux = ; /* USART2_RX */ >>> - bias-disable; >>> - }; >>> - }; >>> - >>> - usbotg_hs_pins_a: usbotg-hs-0 { >>> - pins { >>> - pinmux = , /* ULPI_NXT */ >>> - , /* ULPI_DIR> */ >>> - , /* ULPI_STP> */ >>> - , /* ULPI_CK> */ >>> - , /* ULPI_D0> */ >>> - , /* ULPI_D1> */ >>> - , /* ULPI_D2> */ >>> - , /* ULPI_D3> */ >>> - , /* ULPI_D4> */ >>> - , /* ULPI_D5> */ >>> - , /* ULPI_D6> */ >>> - ; /* ULPI_D7> */ >>> - bias-disable; >>> - drive-push-pull; >>> - slew-rate = <2>; >>> - }; >>> - }; >>> - }; >>> - }; >>> +&pinctrl{ >>> + compatible = "st,stm32h743-pinctrl"; >>> }; >>> 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=-15.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,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 B3C8DC433E0 for ; Thu, 11 Mar 2021 13:32:11 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 D5B7B64E41 for ; Thu, 11 Mar 2021 13:32:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D5B7B64E41 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=foss.st.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:CC:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=bkDlD3wb9RI5+gLPRw8Ujyd1CEx7z6F75Hn2Q4BU8pQ=; b=YYx6/+lUz3GvPhyShjTPjtt5i B2rT/x1v4qMsxfF+YPxSqTMLpDK+wW2cg3ca9qMTm+AKmllbDD/UkEfogx3FeJF+KzkKdD1Kme/Ft Izc8jjW0dt3UjkuFoBTF4q8Zh4lHUMefeL9dTlv6IfPuEroNCAHkT50dPkj0LxBzqRzSj7vT7Duba a39hvzPkU3sQ9ehTA0hgSdJZBw6VDSK3kgF3p8lTWst4EfloOgGRcXOpoFKDulB6VHpak8PYKmtFm ld2P+n7FZnyubjmf5YOXv+eok7VNB0Uu/6aeroRCdUKiUw9xTY6To6hzdilIxar6C75qAXtKqfPdC y5b6hsjxg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lKLOf-009DpO-Iw; Thu, 11 Mar 2021 13:30:37 +0000 Received: from mx07-00178001.pphosted.com ([185.132.182.106]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lKLOT-009Dnd-SV for linux-arm-kernel@lists.infradead.org; Thu, 11 Mar 2021 13:30:29 +0000 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 12BDN16E027258; Thu, 11 Mar 2021 14:30:14 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h=subject : to : cc : references : from : message-id : date : mime-version : in-reply-to : content-type : content-transfer-encoding; s=selector1; bh=t+dy4CSZsNmzfzQgH5uYC9Jt29sMTR/fF4B8g1ToJIc=; b=fTsgBXozjRbf24RMNeX3PX0/zzlPiCdOTHwbWKKOD5gIwgtyOYJf28EIfEjmDqKG6g1o nf5d4QWhxE2Bmy88aoxA5AYmAoJhJfzhx3BDoVyXRIMkRP543QUncNiXS0wQeYNBQrWY wpmeB8YOiUVqAnQ01sgHfpf7p5HMX4T9YtonJepS1cYConMwJOt2jo/9OhJyfHosU5tr fCRYv8iUNJAYk6KGmSo4Vcp+LP6vNtXddt4OS9Snqc8+/2whnN1g99Wewk+Zpd+GUlS3 +G8tz6+faIndjq0hqlbbWXPQ5Fx1A1JtvVjXbPEyL6WPwenuMn2aSljVRK7qO4BaThi0 5A== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 3740377043-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Mar 2021 14:30:14 +0100 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 3278F10002A; Thu, 11 Mar 2021 14:30:14 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag2node3.st.com [10.75.127.6]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id EFA17245D74; Thu, 11 Mar 2021 14:30:13 +0100 (CET) Received: from lmecxl0912.lme.st.com (10.75.127.51) by SFHDAG2NODE3.st.com (10.75.127.6) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 11 Mar 2021 14:30:12 +0100 Subject: Re: [PATCH 5/8] ARM: dts: stm32: introduce stm32h7-pinctrl.dtsi to support stm32h75x To: dillon min CC: Rob Herring , Maxime Coquelin , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , , Linux ARM , Linux Kernel Mailing List , , Vladimir Murzin , References: <1614758717-18223-1-git-send-email-dillon.minfei@gmail.com> <1614758717-18223-6-git-send-email-dillon.minfei@gmail.com> From: Alexandre TORGUE Message-ID: <2c816d16-9925-c52f-6ead-a0112026df28@foss.st.com> Date: Thu, 11 Mar 2021 14:30:12 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-Originating-IP: [10.75.127.51] X-ClientProxiedBy: SFHDAG1NODE2.st.com (10.75.127.2) To SFHDAG2NODE3.st.com (10.75.127.6) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-03-11_04:2021-03-10, 2021-03-11 signatures=0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210311_133026_121729_70063E40 X-CRM114-Status: GOOD ( 44.96 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgRGlsbG9uCgpPbiAzLzExLzIxIDE6MjMgUE0sIGRpbGxvbiBtaW4gd3JvdGU6Cj4gSGkgQWxl eGFuZHJlCj4gCj4gT24gVGh1LCBNYXIgMTEsIDIwMjEgYXQgNjo0MCBQTSBBbGV4YW5kcmUgVE9S R1VFCj4gPGFsZXhhbmRyZS50b3JndWVAZm9zcy5zdC5jb20+IHdyb3RlOgo+Pgo+PiBIaSBEaWxs b24KPj4KPj4gT24gMy8zLzIxIDk6MDUgQU0sIGRpbGxvbi5taW5mZWlAZ21haWwuY29tIHdyb3Rl Ogo+Pj4gRnJvbTogZGlsbG9uIG1pbiA8ZGlsbG9uLm1pbmZlaUBnbWFpbC5jb20+Cj4+Pgo+Pj4g VG8gc3VwcG9ydCBzdG0zMmg3NTAgYW5kIHN0bTMyaDc0Mywgd2UgbmVlZCBhIGJhc2Ugc3RtMzJo Ny1waW5jdHJsLmR0c2kKPj4+IGFzIHN0bTMyaDc0MyAmIGg3NTAgaGFzIGFsbW9zdCB0aGUgc2Ft ZSBpbnRlcmZhY2UuIHNvLCBqdXN0IHJlbmFtZQo+Pj4gc3RtMzJoNzQzLXBpbmN0cmwuZHRzaSB0 byBzdG0zMmg3LXBpbmN0cmwuZHRzaQo+Pj4KPj4KPj4gWW91IGRvIG5vdCAianVzdCIgcmVuYW1l IGJ1dCB5b3Uga2VlbCBhbHNvIHRoZSBvbGQgdmVyc2lvbi4gSSBkb24ndAo+PiBhZ3JlZSB3aXRo IHRoaXMgYXBwcm9hY2guIFlvdSBoYXZlIGZpcnN0IHRvIHJlbmFtZQo+PiBzdG0zMmg3NDMtcGlu Y3RybC5kdHNpIHRvIHN0bTMyaDctcGluY3RybC5kdHNpIChrZWVwaW5nIGNvcHlyaWdodCBhcwo+ PiB0aGV5IGFyZSBwbGVhc2UpIGFuZCBtb2RpZnkgZXhpc3RpbmcgSDcgYm9hcmRzIHdoaWNoIGN1 cnJlbnRseSB1c2UKPj4gc3RtMzJoNzQzLXBpbmN0cmwuZHRzaS4KPj4gVGhlbiB5b3UgY3JlYXRl IGEgc2Vjb25kIHBhdGNoIGFkZGluZyB5b3VyIHBpbmdyb3Vwcy4KPiBGb3Igc3RtMzJoNydzIG5l dyBib2FyZCBzdXBwb3J0ICwgSSBndWVzcyBmb2xsb3dpbmcgdGhlIHN0bTMyZjcvc3RtMzJmNCdz IHN0eWxlCgpZZXMgc29ycnksIEkgcmVhZCBpdCB0b28gcXVpY2tseQoKPiBpcyBhIHJlYXNvbmFi bGUgd2F5IHRvIGRvIGl0LCBidXQgYWRkIGEgbGl0dGxlIG9wdGltaXphdGlvbuOAggo+IHdoaWNo IG1lYW5zIDoKPiBvbGQgc3RydWN0dXJlCj4gc3RtMzJoNy1waW5jdHJsLmR0c2kgLS0+IHN0bTMy aDc0My1waW5jdHJsLmR0c2kgIChyZWZlcmVuY2VkIGJ5Cj4gc3RtMzJoNzQzaS1kaXNjbywgLWV2 YWwpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tPiBzdG0zMmg3NTAtcGlu Y3RybC5kdHNpCj4gKHJlZmVyZW5jZWQgYnkgc3RtMzJoNzUwaS1hcnQtcGksIGV0YykKPiBhZGQg YXJ0LXBpIG90aGVyIGJvYXJkJ3MgcGluIGRlZmluaXRpb24gaW4gc3RtMzJoNzUwLXBpbmN0cmwu ZHRzaSB3aXRoCj4geHh4X3BpbnNfYSwgeHh4X3BpbnNfYgo+IHh4eF9waW5zX2EgdXNlZCBmb3Ig YXJ0LXBpLCB4eHhfcGluc19iIHVzZWQgZm9yIG90aGVyIGJvYXJkcy4KPiAKPiBhZnRlciBtb3Jl IGJvYXJkcyBhZGQgaW4gc3VwcG9ydCwgdGhlcmUgd2lsbCBiZSBtb3JlIHh4eF9waW5fYywgLi4u LiBkZWZpbmVkCj4gCj4gYXMgdGhlIHBpbiBtYXAgaXMgYWNjb3JkaW5nIHRvIHRoZSBoYXJkd2Fy ZSBzY2hlbWF0aWMgZGlhZ3JhbSBpbyBjb25uZWN0aW9uLgo+IHNvLCB3aHkgbm90IG1vdmUgeHh4 X3Bpbl94IHRvIGEgYm9hcmQgc3BlY2lmaWMgcGxhY2UuIHN1Y2ggYXMKPiBzdG0zMmg3NTBpLWFy dC1waS5kdHMKPiAKPiBuZXcgc3RydWN0dXJlOgo+IDEsIHJlbmFtZSBzdG0zMmg3NDMtcGluY3Ry bC5kdHNpIHRvIHN0bTMyaDctcGluY3RybC5kdHNpIChvbmx5Cj4gcHJlc2VydmUgZ3Bpb2EuLi5r LCkKPiAyLCBtb3ZlIHh4eF9waW5zX3ggZnJvbSBzdG0zMmg3LXBpbmN0cmwuZHRzaSB0bwo+IHN0 bTMyaDd4eC1kaXNjby9ldmFsL2FydC1waS9ldGMuZHRzIChhcyB0aGV5IGRlcGVuZHMgb24gaGFy ZHdhcmUKPiBzY2hlbWF0aWMpCj4gCj4gc3RtMzJoNy1waW5jdHJsLmR0c2kgLS0+IHN0bTMyaDc0 M2ktZGlzY29uLmR0cwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLT4gc3Rt MzJoNzQzaS1ldmFsLmR0cwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLT4g c3RtMzJoNzUwaS1hcnQtcGkuZHRzCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fC0tPiBzdG0zMmg3eHh4LmR0cwo+IHdvdWxkIHlvdSBhZ3JlZSB0aGlzID8KCjopIGl0IHJlbWVt YmVyIG1lIGFuIG9sZCBkaXNjdXNzaW9uIHdlIGhhZCB3aXRoIEFobWFkIG9yIE1hcmVrLiBNeSBm aXJzdCAKZmVlbGluZyBpcyAiVGhlIGdyb3VwIGRlZmluaXRpb24gZm9sbG93IHRoZSBTb0MsIGFu ZCB0aGUgZ3JvdXAgY2hvaWNlIGlzIApkb25lIG9uIHRoZSBib2FyZCIuIEJ1dCBBcyBzYWlkIGlu IHRoZSBwYXN0IEkgaGF2ZSB0byB0aGluayBtb3JlIGFib3V0IAp0aGlzIHRvcGljIGFuZCBjaGVj ayBob3cgaXQgY291bGQgYmUgcmVvcmdhbml6ZSAoYXMgaXQgd291bGQgYmUgbmljZSB0byAKaGF2 ZSB0aGUgc2FtZSBhcHByb2FjaCBmb3IgTVBVIGFuZCBNQ1UgYm9hcmRzLikgSSdsbCB0cnkgdG8g cG9zdCAKc29tZXRoaW5nIHNvb24uIFdhaXRpbmcgdGhhdCB0aGlzIHBhdGNoIGxvb2tzLiBBcyB5 b3UgbWFpbmx5IGNoYW5nZSB0aGUgCm5hbWUgY2FuIHlvdSBrZWVwIHBsZWFzZSBoZWFkZXIgKGNv cHlyaWdodCkgYXMgdGhleSB3ZXJlIGluaXRpYWxseS4KCj4+Cj4+IE5vdyByZWdhcmRpbmcgInN0 LHN0bTMyaDc1MC1waW5jdHJsIiwgSSBzZWUgYSBwYXRjaCBkZWFsaW5nIHdpdGggdGhpcwo+PiBu ZXcgYmluZGluZyBidXQgbm8gdXBkYXRlIG9uIGRyaXZlciBzaWRlLiBEbyBJIG1pc3Mgc29tZXRo aW5nID8gd2hhdCBhcmUKPj4gZGlmZmVyZW5jZXMgYmV0d2VlbiBoNzQzIGFuZCBoNzUwIHJlZ2Fy ZGluZyBwaW5jdHJsID8KPiBPaCwgaSBmb3JnZXQgdG8gYWRkIHBpbiBkcml2ZXIgdW5kZXIgZHJp dmVycy9waW5jdHJsL3N0bTMyLwo+IHdpbGwgYWRkIGl0IG5leHQgdGltZS4KPj4KPj4gUmVnYXJk cwo+PiBBbGV4Cj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBkaWxsb24gbWluIDxkaWxsb24ubWluZmVp QGdtYWlsLmNvbT4KPj4+IC0tLQo+Pj4gICAgYXJjaC9hcm0vYm9vdC9kdHMvc3RtMzJoNy1waW5j dHJsLmR0c2kgICB8IDM5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+PiAgICBh cmNoL2FybS9ib290L2R0cy9zdG0zMmg3NDMtcGluY3RybC5kdHNpIHwgMzA3ICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+Pj4gICAgMiBmaWxlcyBjaGFuZ2VkLCAzOTggaW5zZXJ0aW9ucygrKSwg MzAxIGRlbGV0aW9ucygtKQo+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL2Jvb3Qv ZHRzL3N0bTMyaDctcGluY3RybC5kdHNpCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jv b3QvZHRzL3N0bTMyaDctcGluY3RybC5kdHNpIGIvYXJjaC9hcm0vYm9vdC9kdHMvc3RtMzJoNy1w aW5jdHJsLmR0c2kKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAwMDAw MDAuLjdkNGI1ZDY4M2NjYwo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvYXJjaC9hcm0vYm9v dC9kdHMvc3RtMzJoNy1waW5jdHJsLmR0c2kKPj4+IEBAIC0wLDAgKzEsMzkyIEBACj4+PiArLyoK Pj4+ICsgKiBDb3B5cmlnaHQgMjAyMSAtIERpbGxvbiBNaW4gPGRpbGxvbi5taW5mZWlAZ21haWwu Y29tPgo+Pj4gKyAqCj4+PiArICogVGhpcyBmaWxlIGlzIGR1YWwtbGljZW5zZWQ6IHlvdSBjYW4g dXNlIGl0IGVpdGhlciB1bmRlciB0aGUgdGVybXMKPj4+ICsgKiBvZiB0aGUgR1BMIG9yIHRoZSBY MTEgbGljZW5zZSwgYXQgeW91ciBvcHRpb24uIE5vdGUgdGhhdCB0aGlzIGR1YWwKPj4+ICsgKiBs aWNlbnNpbmcgb25seSBhcHBsaWVzIHRvIHRoaXMgZmlsZSwgYW5kIG5vdCB0aGlzIHByb2plY3Qg YXMgYQo+Pj4gKyAqIHdob2xlLgo+Pj4gKyAqCj4+PiArICogIGEpIFRoaXMgZmlsZSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPj4+ICsgKiAgICAgbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMKPj4+ICsgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlCj4+PiArICogICAgIExpY2Vuc2UsIG9yIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+PiArICoKPj4+ICsgKiAgICAgVGhpcyBmaWxl IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+PiAr ICogICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCj4+PiArICogICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPj4+ICsgKiAgICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4+ICsgKgo+Pj4gKyAqIE9yLCBhbHRlcm5h dGl2ZWx5LAo+Pj4gKyAqCj4+PiArICogIGIpIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4+PiArICogICAgIG9idGFpbmluZyBhIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uCj4+PiArICog ICAgIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQKPj4+ICsgKiAgICAgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g dGhlIHJpZ2h0cyB0byB1c2UsCj4+PiArICogICAgIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgo+Pj4gKyAqICAgICBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+Pj4g KyAqICAgICBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZwo+Pj4gKyAqICAgICBjb25kaXRpb25zOgo+Pj4gKyAqCj4+PiArICogICAgIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl Cj4+PiArICogICAgIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlIFNvZnR3YXJlLgo+Pj4gKyAqCj4+PiArICogICAgIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+Pj4gKyAqICAg ICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMKPj4+ICsgKiAgICAgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQKPj4+ICsgKiAgICAgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKPj4+ICsgKiAgICAgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCj4+PiAr ICogICAgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORwo+Pj4gKyAqICAgICBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCj4+PiArICogICAgIE9USEVSIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KPj4+ICsgKi8KPj4+ICsKPj4+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3Mv cGluY3RybC9zdG0zMi1waW5mdW5jLmg+Cj4+PiArCj4+PiArLyB7Cj4+PiArICAgICBzb2Mgewo+ Pj4gKyAgICAgICAgICAgICBwaW5jdHJsOiBwaW4tY29udHJvbGxlciB7Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4+PiArICAgICAgICAgICAgICAgICAg ICAgI3NpemUtY2VsbHMgPSA8MT47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgcmFuZ2VzID0g PDAgMHg1ODAyMDAwMCAweDMwMDA+Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGludGVycnVw dC1wYXJlbnQgPSA8JmV4dGk+Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHN0LHN5c2NmZyA9 IDwmc3lzY2ZnIDB4OD47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgcGlucy1hcmUtbnVtYmVy ZWQ7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAgZ3Bpb2E6IGdwaW9ANTgwMjAwMDAg ewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Bpby1jb250cm9sbGVyOwo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2dwaW8tY2VsbHMgPSA8Mj47Cj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHgwIDB4NDAwPjsKPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNsb2NrcyA9IDwmcmNjIEdQSU9BX0NLPjsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0LGJhbmstbmFtZSA9ICJHUElPQSI7Cj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47Cj4+PiArICAg ICAgICAgICAgICAgICAgICAgfTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBncGlv YjogZ3Bpb0A1ODAyMDQwMCB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGlv LWNvbnRyb2xsZXI7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZ3Bpby1jZWxs cyA9IDwyPjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDQwMCAw eDQwMD47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja3MgPSA8JnJjYyBH UElPQl9DSz47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCxiYW5rLW5hbWUg PSAiR1BJT0IiOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0LWNv bnRyb2xsZXI7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW50ZXJydXB0LWNl bGxzID0gPDI+Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiArCj4+PiArICAgICAg ICAgICAgICAgICAgICAgZ3Bpb2M6IGdwaW9ANTgwMjA4MDAgewo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3Bpby1jb250cm9sbGVyOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgI2dwaW8tY2VsbHMgPSA8Mj47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZWcgPSA8MHg4MDAgMHg0MDA+Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2xvY2tzID0gPCZyY2MgR1BJT0NfQ0s+Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3QsYmFuay1uYW1lID0gIkdQSU9DIjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgI2ludGVycnVwdC1jZWxscyA9IDwyPjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICB9 Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGdwaW9kOiBncGlvQDU4MDIwYzAwIHsK Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwaW8tY29udHJvbGxlcjsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICNncGlvLWNlbGxzID0gPDI+Owo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4YzAwIDB4NDAwPjsKPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNsb2NrcyA9IDwmcmNjIEdQSU9EX0NLPjsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0LGJhbmstbmFtZSA9ICJHUElPRCI7Cj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47Cj4+PiArICAg ICAgICAgICAgICAgICAgICAgfTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBncGlv ZTogZ3Bpb0A1ODAyMTAwMCB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGlv LWNvbnRyb2xsZXI7Cj4gCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8 MHgxMDAwIDB4NDAwPjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrcyA9 IDwmcmNjIEdQSU9FX0NLPjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0LGJh bmstbmFtZSA9ICJHUElPRSI7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRl cnJ1cHQtY29udHJvbGxlcjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbnRl cnJ1cHQtY2VsbHMgPSA8Mj47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICBncGlvZjogZ3Bpb0A1ODAyMTQwMCB7Cj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncGlvLWNvbnRyb2xsZXI7Cj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjZ3Bpby1jZWxscyA9IDwyPjsKPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlZyA9IDwweDE0MDAgMHg0MDA+Owo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2xvY2tzID0gPCZyY2MgR1BJT0ZfQ0s+Owo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3QsYmFuay1uYW1lID0gIkdQSU9GIjsKPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOwo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgI2ludGVycnVwdC1jZWxscyA9IDwyPjsKPj4+ICsgICAgICAgICAgICAg ICAgICAgICB9Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGdwaW9nOiBncGlvQDU4 MDIxODAwIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwaW8tY29udHJvbGxl cjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNncGlvLWNlbGxzID0gPDI+Owo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4MTgwMCAweDQwMD47Cj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja3MgPSA8JnJjYyBHUElPR19DSz47 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCxiYW5rLW5hbWUgPSAiR1BJT0ci Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0LWNvbnRyb2xsZXI7 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW50ZXJydXB0LWNlbGxzID0gPDI+ Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiArCj4+PiArICAgICAgICAgICAgICAg ICAgICAgZ3Bpb2g6IGdwaW9ANTgwMjFjMDAgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3Bpby1jb250cm9sbGVyOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg I2dwaW8tY2VsbHMgPSA8Mj47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcg PSA8MHgxYzAwIDB4NDAwPjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2Nr cyA9IDwmcmNjIEdQSU9IX0NLPjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 LGJhbmstbmFtZSA9ICJHUElPSCI7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnRlcnJ1cHQtY29udHJvbGxlcjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNp bnRlcnJ1cHQtY2VsbHMgPSA8Mj47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsK Pj4+ICsgICAgICAgICAgICAgICAgICAgICBncGlvaTogZ3Bpb0A1ODAyMjAwMCB7Cj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBncGlvLWNvbnRyb2xsZXI7Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjZ3Bpby1jZWxscyA9IDwyPjsKPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlZyA9IDwweDIwMDAgMHg0MDA+Owo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2xvY2tzID0gPCZyY2MgR1BJT0lfQ0s+Owo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3QsYmFuay1uYW1lID0gIkdQSU9JIjsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOwo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgI2ludGVycnVwdC1jZWxscyA9IDwyPjsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICB9Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGdwaW9qOiBncGlv QDU4MDIyNDAwIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwaW8tY29udHJv bGxlcjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNncGlvLWNlbGxzID0gPDI+ Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4MjQwMCAweDQwMD47 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja3MgPSA8JnJjYyBHUElPSl9D Sz47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCxiYW5rLW5hbWUgPSAiR1BJ T0oiOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0LWNvbnRyb2xs ZXI7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW50ZXJydXB0LWNlbGxzID0g PDI+Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiArCj4+PiArICAgICAgICAgICAg ICAgICAgICAgZ3Bpb2s6IGdwaW9ANTgwMjI4MDAgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3Bpby1jb250cm9sbGVyOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgI2dwaW8tY2VsbHMgPSA8Mj47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWcgPSA8MHgyODAwIDB4NDAwPjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs b2NrcyA9IDwmcmNjIEdQSU9LX0NLPjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0LGJhbmstbmFtZSA9ICJHUElPSyI7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBpMmMxX3BpbnNfYTogaTJjMS0wIHsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbnMgewo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwaW5tdXggPSA8U1RNMzJfUElOTVVYKCdCJywgNiwgQUY0KT4s IC8qIEkyQzFfU0NMICovCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0InLCA3LCBBRjQpPjsgLyogSTJDMV9TREEgKi8KPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1kaXNhYmxlOwo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZS1vcGVuLWRyYWluOwo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8MD47 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgIH07Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAgZXRoZXJuZXRfcm1paTog cm1paS0wIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbnMgewo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5tdXggPSA8U1RNMzJfUElOTVVY KCdHJywgMTEsIEFGMTEpPiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnRycsIDEzLCBBRjExKT4sCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0cnLCAx MiwgQUYxMSk+LAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8U1RNMzJfUElOTVVYKCdDJywgNCwgQUYxMSk+LAo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdDJywgNSwgQUYxMSk+ LAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RN MzJfUElOTVVYKCdBJywgNywgQUYxMSk+LAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdDJywgMSwgQUYxMSk+LAo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVY KCdBJywgMiwgQUYxMSk+LAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdBJywgMSwgQUYxMSk+Owo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8Mj47Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiAr Cj4+PiArICAgICAgICAgICAgICAgICAgICAgc2RtbWMxX2I0X3BpbnNfYTogc2RtbWMxLWI0LTAg ewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlucyB7Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm11eCA9IDxTVE0zMl9QSU5NVVgoJ0MnLCA4 LCBBRjEyKT4sIC8qIFNETU1DMV9EMCAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdDJywgOSwgQUYxMik+LCAvKiBTRE1N QzFfRDEgKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPFNUTTMyX1BJTk1VWCgnQycsIDEwLCBBRjEyKT4sIC8qIFNETU1DMV9EMiAqLwo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVY KCdDJywgMTEsIEFGMTIpPiwgLyogU0RNTUMxX0QzICovCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0MnLCAxMiwgQUYxMik+ LCAvKiBTRE1NQzFfQ0sgKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnRCcsIDIsIEFGMTIpPjsgLyogU0RNTUMxX0NNRCAq Lwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8 Mz47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlLXB1c2gt cHVsbDsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1kaXNh YmxlOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICB9Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNkbW1jMV9iNF9v ZF9waW5zX2E6IHNkbW1jMS1iNC1vZC0wIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBpbnMxIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlu bXV4ID0gPFNUTTMyX1BJTk1VWCgnQycsIDgsIEFGMTIpPiwgLyogU0RNTUMxX0QwICovCj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5N VVgoJ0MnLCA5LCBBRjEyKT4sIC8qIFNETU1DMV9EMSAqLwo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdDJywgMTAsIEFGMTIp PiwgLyogU0RNTUMxX0QyICovCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0MnLCAxMSwgQUYxMik+LCAvKiBTRE1NQzFfRDMg Ki8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNU TTMyX1BJTk1VWCgnQycsIDEyLCBBRjEyKT47IC8qIFNETU1DMV9DSyAqLwo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8Mz47Cj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlLXB1c2gtcHVsbDsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1kaXNhYmxlOwo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBpbnMyewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5t dXggPSA8U1RNMzJfUElOTVVYKCdEJywgMiwgQUYxMik+OyAvKiBTRE1NQzFfQ01EICovCj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsZXctcmF0ZSA9IDwzPjsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmUtb3Blbi1kcmFpbjsK Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1kaXNhYmxlOwo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsgICAgICAgICAgICAgICAg ICAgICB9Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNkbW1jMV9iNF9zbGVlcF9w aW5zX2E6IHNkbW1jMS1iNC1zbGVlcC0wIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBpbnMgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5t dXggPSA8U1RNMzJfUElOTVVYKCdDJywgOCwgQU5BTE9HKT4sIC8qIFNETU1DMV9EMCAqLwo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElO TVVYKCdDJywgOSwgQU5BTE9HKT4sIC8qIFNETU1DMV9EMSAqLwo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdDJywgMTAsIEFO QUxPRyk+LCAvKiBTRE1NQzFfRDIgKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQycsIDExLCBBTkFMT0cpPiwgLyogU0RN TUMxX0QzICovCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxTVE0zMl9QSU5NVVgoJ0MnLCAxMiwgQU5BTE9HKT4sIC8qIFNETU1DMV9DSyAqLwo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElO TVVYKCdEJywgMiwgQU5BTE9HKT47IC8qIFNETU1DMV9DTUQgKi8KPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH07Cj4+PiArICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICBzZG1tYzJfYjRfcGluc19hOiBzZG1tYzItYjQtMCB7Cj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5zIHsKPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0gPFNUTTMyX1BJTk1VWCgnQicsIDE0LCBB RjkpPiwgLyogU0RNTUMxX0QwICovCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0InLCAxNSwgQUY5KT4sIC8qIFNETU1DMV9E MSAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 U1RNMzJfUElOTVVYKCdCJywgMywgQUY5KT4sIC8qIFNETU1DMV9EMiAqLwo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdCJywg NCwgQUY5KT4sIC8qIFNETU1DMV9EMyAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdEJywgNiwgQUYxMSk+LCAvKiBTRE1N QzFfQ0sgKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPFNUTTMyX1BJTk1VWCgnRCcsIDcsIEFGMTEpPjsgLyogU0RNTUMxX0NNRCAqLwo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8Mz47Cj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlLXB1c2gtcHVsbDsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1kaXNhYmxlOwo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsgICAgICAgICAgICAgICAgICAg ICB9Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNkbW1jMl9iNF9vZF9waW5zX2E6 IHNkbW1jMi1iNC1vZC0wIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbnMx IHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0gPFNU TTMyX1BJTk1VWCgnQicsIDE0LCBBRjkpPiwgLyogU0RNTUMyX0QwICovCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0InLCAx NSwgQUY5KT4sIC8qIFNETU1DMV9EMSAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdCJywgMywgQUY5KT4sIC8qIFNETU1D MV9EMiAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8U1RNMzJfUElOTVVYKCdCJywgNCwgQUY5KT4sIC8qIFNETU1DMV9EMyAqLwo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdE JywgNiwgQUYxMSk+OyAvKiBTRE1NQzFfQ0sgKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2xldy1yYXRlID0gPDM+Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkcml2ZS1wdXNoLXB1bGw7Cj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH07Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5zMnsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0gPFNUTTMyX1BJ Tk1VWCgnRCcsIDcsIEFGMTEpPjsgLyogU0RNTUMxX0NNRCAqLwo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8Mz47Cj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlLW9wZW4tZHJhaW47Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH07Cj4+PiArICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsK Pj4+ICsgICAgICAgICAgICAgICAgICAgICBzZG1tYzJfYjRfc2xlZXBfcGluc19hOiBzZG1tYzIt YjQtc2xlZXAtMCB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5zIHsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0gPFNUTTMyX1BJ Tk1VWCgnQicsIDE0LCBBTkFMT0cpPiwgLyogU0RNTUMxX0QwICovCj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0InLCAxNSwg QU5BTE9HKT4sIC8qIFNETU1DMV9EMSAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdCJywgMywgQU5BTE9HKT4sIC8qIFNE TU1DMV9EMiAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8U1RNMzJfUElOTVVYKCdCJywgNCwgQU5BTE9HKT4sIC8qIFNETU1DMV9EMyAqLwo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElO TVVYKCdEJywgNiwgQU5BTE9HKT4sIC8qIFNETU1DMV9DSyAqLwo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdEJywgNywgQU5B TE9HKT47IC8qIFNETU1DMV9DTUQgKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH07Cj4+PiArICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAg ICAgICAgICBzZG1tYzFfZGlyX3BpbnNfYTogc2RtbWMxLWRpci0wIHsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBpbnMxIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGlubXV4ID0gPFNUTTMyX1BJTk1VWCgnQycsIDYsIEFGOCk+LCAvKiBTRE1N QzFfRDBESVIgKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPFNUTTMyX1BJTk1VWCgnQycsIDcsIEFGOCk+LCAvKiBTRE1NQzFfRDEyM0RJUiAqLwo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJf UElOTVVYKCdCJywgOSwgQUY3KT47IC8qIFNETU1DMV9DRElSICovCj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNsZXctcmF0ZSA9IDwzPjsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmUtcHVzaC1wdWxsOwo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWFzLXB1bGwtdXA7Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGluczJ7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm11eCA9 IDxTVE0zMl9QSU5NVVgoJ0InLCA4LCBBRjcpPjsgLyogU0RNTUMxX0NLSU4gKi8KPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1wdWxsLXVwOwo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICB9Owo+ Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNkbW1jMV9kaXJfc2xlZXBfcGluc19hOiBz ZG1tYzEtZGlyLXNsZWVwLTAgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlu cyB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm11eCA9IDxT VE0zMl9QSU5NVVgoJ0MnLCA2LCBBTkFMT0cpPiwgLyogU0RNTUMxX0QwRElSICovCj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgo J0MnLCA3LCBBTkFMT0cpPiwgLyogU0RNTUMxX0QxMjNESVIgKi8KPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQicsIDksIEFO QUxPRyk+LCAvKiBTRE1NQzFfQ0RJUiAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdCJywgOCwgQU5BTE9HKT47IC8qIFNE TU1DMV9DS0lOICovCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIH07Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAgdXNh cnQxX3BpbnM6IHVzYXJ0MS0wIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBp bnMxIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0g PFNUTTMyX1BJTk1VWCgnQicsIDE0LCBBRjQpPjsgLyogVVNBUlQxX1RYICovCj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmUtcHVzaC1wdWxsOwo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8MD47Cj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGluczIgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw aW5tdXggPSA8U1RNMzJfUElOTVVYKCdCJywgMTUsIEFGNCk+OyAvKiBVU0FSVDFfUlggKi8KPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1kaXNhYmxlOwo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ICsgICAgICAgICAgICAgICAgICAg ICB9Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHVzYXJ0Ml9waW5zOiB1c2FydDIt MCB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5zMSB7Cj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm11eCA9IDxTVE0zMl9QSU5NVVgoJ0Qn LCA1LCBBRjcpPjsgLyogVVNBUlQyX1RYICovCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZHJpdmUtcHVzaC1wdWxsOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8MD47Cj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGluczIgewo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5tdXggPSA8U1RNMzJfUElO TVVYKCdEJywgNiwgQUY3KT47IC8qIFVTQVJUMl9SWCAqLwo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBiaWFzLWRpc2FibGU7Cj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiArCj4+PiArICAg ICAgICAgICAgICAgICAgICAgdXNhcnQzX3BpbnM6IHVzYXJ0My0wIHsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBpbnMxIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGlubXV4ID0gPFNUTTMyX1BJTk1VWCgnQicsIDEwLCBBRjcpPjsgLyogVVNB UlQzX1RYICovCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMt ZGlzYWJsZTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmUt cHVzaC1wdWxsOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3 LXJhdGUgPSA8MD47Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGluczIgewo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwaW5tdXggPSA8U1RNMzJfUElOTVVYKCdCJywgMTEsIEFGNyk+ OyAvKiBVU0FSVDNfUlggKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYmlhcy1kaXNhYmxlOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAg IHVhcnQ0X3BpbnM6IHVhcnQ0LTAgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGluczEgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5tdXgg PSA8U1RNMzJfUElOTVVYKCdBJywgMCwgQUY4KT47IC8qIFVBUlQ0X1RYICovCj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmUtcHVzaC1wdWxsOwo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8MD47Cj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGluczIgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw aW5tdXggPSA8U1RNMzJfUElOTVVYKCdJJywgOSwgQUY4KT47IC8qIFVBUlQ0X1JYICovCj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiArICAgICAgICAgICAgICAgICAgICAg fTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICB1c2JvdGdfaHNfcGluc19hOiB1c2Jv dGctaHMtMCB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5zIHsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0gPFNUTTMyX1BJTk1V WCgnSCcsIDQsIEFGMTApPiwgIC8qIFVMUElfTlhUICovCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnSScsIDEx LCBBRjEwKT4sIC8qIFVMUElfRElSPiAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0MnLCAwLCBBRjEwKT4s ICAvKiBVTFBJX1NUUD4gKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdBJywgNSwgQUYxMCk+LCAgLyogVUxQ SV9DSz4gKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdBJywgMywgQUYxMCk+LCAgLyogVUxQSV9EMD4gKi8K Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8U1RNMzJfUElOTVVYKCdCJywgMCwgQUYxMCk+LCAgLyogVUxQSV9EMT4gKi8KPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJf UElOTVVYKCdCJywgMSwgQUYxMCk+LCAgLyogVUxQSV9EMj4gKi8KPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdC JywgMTAsIEFGMTApPiwgLyogVUxQSV9EMz4gKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdCJywgMTEsIEFG MTApPiwgLyogVUxQSV9END4gKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdCJywgMTIsIEFGMTApPiwgLyog VUxQSV9ENT4gKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdCJywgMTMsIEFGMTApPiwgLyogVUxQSV9ENj4g Ki8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8U1RNMzJfUElOTVVYKCdCJywgNSwgQUYxMCk+OyAgLyogVUxQSV9ENz4gKi8KPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1kaXNhYmxlOwo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZS1wdXNoLXB1bGw7Cj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsZXctcmF0ZSA9IDwyPjsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiArICAgICAgICAgICAgICAgICAg ICAgfTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBzcGkxX3BpbnM6IHNwaTEtMCB7 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5zMSB7Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm11eCA9IDxTVE0zMl9QSU5NVVgoJ0EnLCA1 LCBBRjUpPiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBTUEkxX0NMSyAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdCJywgNSwgQUY1KT47Cj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BJMV9NT1NJICovCj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmUtcHVzaC1wdWxsOwo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8Mj47Cj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGluczIgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwaW5tdXggPSA8U1RNMzJfUElOTVVYKCdHJywgOSwgQUY1KT47Cj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BJMV9NSVNPICovCj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiArICAgICAgICAgICAgICAgICAgICAgfTsK Pj4+ICsgICAgICAgICAgICAgfTsKPj4+ICsgICAgIH07Cj4+PiArfTsKPj4+IGRpZmYgLS1naXQg YS9hcmNoL2FybS9ib290L2R0cy9zdG0zMmg3NDMtcGluY3RybC5kdHNpIGIvYXJjaC9hcm0vYm9v dC9kdHMvc3RtMzJoNzQzLXBpbmN0cmwuZHRzaQo+Pj4gaW5kZXggZmE1ZGNiNmE1ZmRkLi42YjFl MTE1MzA3YjkgMTAwNjQ0Cj4+PiAtLS0gYS9hcmNoL2FybS9ib290L2R0cy9zdG0zMmg3NDMtcGlu Y3RybC5kdHNpCj4+PiArKysgYi9hcmNoL2FybS9ib290L2R0cy9zdG0zMmg3NDMtcGluY3RybC5k dHNpCj4+PiBAQCAtMSwzMDYgKzEsMTEgQEAKPj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogKEdQTC0yLjArIE9SIEJTRC0zLUNsYXVzZSkKPj4+ICAgIC8qCj4+PiAtICogQ29weXJpZ2h0 IDIwMTcgLSBBbGV4YW5kcmUgVG9yZ3VlIDxhbGV4YW5kcmUudG9yZ3VlQHN0LmNvbT4KPj4+IC0g Kgo+Pj4gLSAqIFRoaXMgZmlsZSBpcyBkdWFsLWxpY2Vuc2VkOiB5b3UgY2FuIHVzZSBpdCBlaXRo ZXIgdW5kZXIgdGhlIHRlcm1zCj4+PiAtICogb2YgdGhlIEdQTCBvciB0aGUgWDExIGxpY2Vuc2Us IGF0IHlvdXIgb3B0aW9uLiBOb3RlIHRoYXQgdGhpcyBkdWFsCj4+PiAtICogbGljZW5zaW5nIG9u bHkgYXBwbGllcyB0byB0aGlzIGZpbGUsIGFuZCBub3QgdGhpcyBwcm9qZWN0IGFzIGEKPj4+IC0g KiB3aG9sZS4KPj4+IC0gKgo+Pj4gLSAqICBhKSBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4+PiAtICogICAgIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCj4+PiAtICog ICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZQo+Pj4gLSAqICAgICBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgo+Pj4gLSAqCj4+PiAtICogICAgIFRoaXMgZmlsZSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+Pj4gLSAqICAgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zgo+Pj4gLSAqICAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCj4+PiAtICogICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCj4+PiAtICoKPj4+IC0gKiBPciwgYWx0ZXJuYXRpdmVseSwKPj4+ IC0gKgo+Pj4gLSAqICBiKSBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbgo+Pj4gLSAqICAgICBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgo+Pj4gLSAqICAgICBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0Cj4+PiAtICog ICAgIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMg dG8gdXNlLAo+Pj4gLSAqICAgICBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKPj4+IC0gKiAgICAgc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPj4+IC0gKiAgICAgU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKPj4+ IC0gKiAgICAgY29uZGl0aW9uczoKPj4+IC0gKgo+Pj4gLSAqICAgICBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQo+Pj4gLSAqICAg ICBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT b2Z0d2FyZS4KPj4+IC0gKgo+Pj4gLSAqICAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPj4+IC0gKiAgICAgRVhQUkVTUyBP UiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTCj4+ PiAtICogICAgIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5ECj4+PiAtICogICAgIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCj4+PiAtICogICAgIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAo+Pj4gLSAqICAgICBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK Pj4+IC0gKiAgICAgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUgo+Pj4gLSAqICAgICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdB UkUuCj4+PiArICogQ29weXJpZ2h0IChDKSBTVE1pY3JvZWxlY3Ryb25pY3MgMjAxNyAtIEFsbCBS aWdodHMgUmVzZXJ2ZWQKPj4+ICsgKiBBdXRob3I6IEFsZXhhbmRyZSBUb3JndWUgIDxhbGV4YW5k cmUudG9yZ3VlQHN0LmNvbT4gZm9yIFNUTWljcm9lbGVjdHJvbmljcy4KPj4+ICAgICAqLwo+Pj4K Pj4+IC0jaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGluY3RybC9zdG0zMi1waW5mdW5jLmg+Cj4+PiAr I2luY2x1ZGUgInN0bTMyaDctcGluY3RybC5kdHNpIgo+Pj4KPj4+IC0vIHsKPj4+IC0gICAgIHNv YyB7Cj4+PiAtICAgICAgICAgICAgIHBpbi1jb250cm9sbGVyIHsKPj4+IC0gICAgICAgICAgICAg ICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAj c2l6ZS1jZWxscyA9IDwxPjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0g InN0LHN0bTMyaDc0My1waW5jdHJsIjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICByYW5nZXMg PSA8MCAweDU4MDIwMDAwIDB4MzAwMD47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgaW50ZXJy dXB0LXBhcmVudCA9IDwmZXh0aT47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgc3Qsc3lzY2Zn ID0gPCZzeXNjZmcgMHg4PjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICBwaW5zLWFyZS1udW1i ZXJlZDsKPj4+IC0KPj4+IC0gICAgICAgICAgICAgICAgICAgICBncGlvYTogZ3Bpb0A1ODAyMDAw MCB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGlvLWNvbnRyb2xsZXI7Cj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZ3Bpby1jZWxscyA9IDwyPjsKPj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDAgMHg0MDA+Owo+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tzID0gPCZyY2MgR1BJT0FfQ0s+Owo+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QsYmFuay1uYW1lID0gIkdQSU9BIjsKPj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOwo+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgI2ludGVycnVwdC1jZWxscyA9IDwyPjsKPj4+IC0g ICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gLQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGdw aW9iOiBncGlvQDU4MDIwNDAwIHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdw aW8tY29udHJvbGxlcjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICNncGlvLWNl bGxzID0gPDI+Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4NDAw IDB4NDAwPjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrcyA9IDwmcmNj IEdQSU9CX0NLPjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0LGJhbmstbmFt ZSA9ICJHUElPQiI7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQt Y29udHJvbGxlcjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbnRlcnJ1cHQt Y2VsbHMgPSA8Mj47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgfTsKPj4+IC0KPj4+IC0gICAg ICAgICAgICAgICAgICAgICBncGlvYzogZ3Bpb0A1ODAyMDgwMCB7Cj4+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBncGlvLWNvbnRyb2xsZXI7Cj4+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjZ3Bpby1jZWxscyA9IDwyPjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlZyA9IDwweDgwMCAweDQwMD47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjbG9ja3MgPSA8JnJjYyBHUElPQ19DSz47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdCxiYW5rLW5hbWUgPSAiR1BJT0MiOwo+Pj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50ZXJydXB0LWNvbnRyb2xsZXI7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjaW50ZXJydXB0LWNlbGxzID0gPDI+Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAg IH07Cj4+PiAtCj4+PiAtICAgICAgICAgICAgICAgICAgICAgZ3Bpb2Q6IGdwaW9ANTgwMjBjMDAg ewo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Bpby1jb250cm9sbGVyOwo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2dwaW8tY2VsbHMgPSA8Mj47Cj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHhjMDAgMHg0MDA+Owo+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tzID0gPCZyY2MgR1BJT0RfQ0s+Owo+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QsYmFuay1uYW1lID0gIkdQSU9EIjsKPj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOwo+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgI2ludGVycnVwdC1jZWxscyA9IDwyPjsKPj4+IC0g ICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gLQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGdw aW9lOiBncGlvQDU4MDIxMDAwIHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdw aW8tY29udHJvbGxlcjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICNncGlvLWNl bGxzID0gPDI+Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4MTAw MCAweDQwMD47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja3MgPSA8JnJj YyBHUElPRV9DSz47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCxiYW5rLW5h bWUgPSAiR1BJT0UiOwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0 LWNvbnRyb2xsZXI7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW50ZXJydXB0 LWNlbGxzID0gPDI+Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiAtCj4+PiAtICAg ICAgICAgICAgICAgICAgICAgZ3Bpb2Y6IGdwaW9ANTgwMjE0MDAgewo+Pj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3Bpby1jb250cm9sbGVyOwo+Pj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgI2dwaW8tY2VsbHMgPSA8Mj47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZWcgPSA8MHgxNDAwIDB4NDAwPjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNsb2NrcyA9IDwmcmNjIEdQSU9GX0NLPjsKPj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0LGJhbmstbmFtZSA9ICJHUElPRiI7Cj4+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKPj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47Cj4+PiAtICAgICAgICAgICAgICAgICAg ICAgfTsKPj4+IC0KPj4+IC0gICAgICAgICAgICAgICAgICAgICBncGlvZzogZ3Bpb0A1ODAyMTgw MCB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGlvLWNvbnRyb2xsZXI7Cj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZ3Bpby1jZWxscyA9IDwyPjsKPj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDE4MDAgMHg0MDA+Owo+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tzID0gPCZyY2MgR1BJT0dfQ0s+Owo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QsYmFuay1uYW1lID0gIkdQSU9HIjsKPj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOwo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2ludGVycnVwdC1jZWxscyA9IDwyPjsKPj4+ IC0gICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gLQo+Pj4gLSAgICAgICAgICAgICAgICAgICAg IGdwaW9oOiBncGlvQDU4MDIxYzAwIHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdwaW8tY29udHJvbGxlcjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICNncGlv LWNlbGxzID0gPDI+Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4 MWMwMCAweDQwMD47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja3MgPSA8 JnJjYyBHUElPSF9DSz47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCxiYW5r LW5hbWUgPSAiR1BJT0giOwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJy dXB0LWNvbnRyb2xsZXI7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW50ZXJy dXB0LWNlbGxzID0gPDI+Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiAtCj4+PiAt ICAgICAgICAgICAgICAgICAgICAgZ3Bpb2k6IGdwaW9ANTgwMjIwMDAgewo+Pj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3Bpby1jb250cm9sbGVyOwo+Pj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgI2dwaW8tY2VsbHMgPSA8Mj47Cj4+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZWcgPSA8MHgyMDAwIDB4NDAwPjsKPj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNsb2NrcyA9IDwmcmNjIEdQSU9JX0NLPjsKPj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0LGJhbmstbmFtZSA9ICJHUElPSSI7Cj4+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKPj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47Cj4+PiAtICAgICAgICAgICAgICAg ICAgICAgfTsKPj4+IC0KPj4+IC0gICAgICAgICAgICAgICAgICAgICBncGlvajogZ3Bpb0A1ODAy MjQwMCB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGlvLWNvbnRyb2xsZXI7 Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZ3Bpby1jZWxscyA9IDwyPjsKPj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDI0MDAgMHg0MDA+Owo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tzID0gPCZyY2MgR1BJT0pfQ0s+Owo+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QsYmFuay1uYW1lID0gIkdQSU9KIjsK Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOwo+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2ludGVycnVwdC1jZWxscyA9IDwyPjsK Pj4+IC0gICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gLQo+Pj4gLSAgICAgICAgICAgICAgICAg ICAgIGdwaW9rOiBncGlvQDU4MDIyODAwIHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdwaW8tY29udHJvbGxlcjsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICNn cGlvLWNlbGxzID0gPDI+Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0g PDB4MjgwMCAweDQwMD47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja3Mg PSA8JnJjYyBHUElPS19DSz47Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCxi YW5rLW5hbWUgPSAiR1BJT0siOwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ZXJydXB0LWNvbnRyb2xsZXI7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW50 ZXJydXB0LWNlbGxzID0gPDI+Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiAtCj4+ PiAtICAgICAgICAgICAgICAgICAgICAgaTJjMV9waW5zX2E6IGkyYzEtMCB7Cj4+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwaW5zIHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGlubXV4ID0gPFNUTTMyX1BJTk1VWCgnQicsIDYsIEFGNCk+LCAvKiBJ MkMxX1NDTCAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8U1RNMzJfUElOTVVYKCdCJywgNywgQUY0KT47IC8qIEkyQzFfU0RBICovCj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmUtb3Blbi1kcmFpbjsKPj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xldy1yYXRlID0gPDA+Owo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+IC0gICAgICAgICAgICAgICAgICAg ICB9Owo+Pj4gLQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGV0aGVybmV0X3JtaWk6IHJtaWkt MCB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5zIHsKPj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0gPFNUTTMyX1BJTk1VWCgnRycs IDExLCBBRjExKT4sCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxTVE0zMl9QSU5NVVgoJ0cnLCAxMywgQUYxMSk+LAo+Pj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdHJywgMTIsIEFG MTEpPiwKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PFNUTTMyX1BJTk1VWCgnQycsIDQsIEFGMTEpPiwKPj4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQycsIDUsIEFGMTEpPiwKPj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJ Tk1VWCgnQScsIDcsIEFGMTEpPiwKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQycsIDEsIEFGMTEpPiwKPj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQScs IDIsIEFGMTEpPiwKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPFNUTTMyX1BJTk1VWCgnQScsIDEsIEFGMTEpPjsKPj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2xldy1yYXRlID0gPDI+Owo+Pj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfTsKPj4+IC0gICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gLQo+Pj4g LSAgICAgICAgICAgICAgICAgICAgIHNkbW1jMV9iNF9waW5zX2E6IHNkbW1jMS1iNC0wIHsKPj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbnMgewo+Pj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwaW5tdXggPSA8U1RNMzJfUElOTVVYKCdDJywgOCwgQUYx Mik+LCAvKiBTRE1NQzFfRDAgKi8KPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQycsIDksIEFGMTIpPiwgLyogU0RNTUMxX0Qx ICovCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxT VE0zMl9QSU5NVVgoJ0MnLCAxMCwgQUYxMik+LCAvKiBTRE1NQzFfRDIgKi8KPj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQycs IDExLCBBRjEyKT4sIC8qIFNETU1DMV9EMyAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdDJywgMTIsIEFGMTIpPiwgLyog U0RNTUMxX0NLICovCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxTVE0zMl9QSU5NVVgoJ0QnLCAyLCBBRjEyKT47IC8qIFNETU1DMV9DTUQgKi8KPj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xldy1yYXRlID0gPDM+Owo+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZS1wdXNoLXB1bGw7 Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsK Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiAtICAgICAgICAgICAgICAg ICAgICAgfTsKPj4+IC0KPj4+IC0gICAgICAgICAgICAgICAgICAgICBzZG1tYzFfYjRfb2RfcGlu c19hOiBzZG1tYzEtYjQtb2QtMCB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw aW5zMSB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm11eCA9 IDxTVE0zMl9QSU5NVVgoJ0MnLCA4LCBBRjEyKT4sIC8qIFNETU1DMV9EMCAqLwo+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdD JywgOSwgQUYxMik+LCAvKiBTRE1NQzFfRDEgKi8KPj4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQycsIDEwLCBBRjEyKT4sIC8q IFNETU1DMV9EMiAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8U1RNMzJfUElOTVVYKCdDJywgMTEsIEFGMTIpPiwgLyogU0RNTUMxX0QzICovCj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9Q SU5NVVgoJ0MnLCAxMiwgQUYxMik+OyAvKiBTRE1NQzFfQ0sgKi8KPj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2xldy1yYXRlID0gPDM+Owo+Pj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZS1wdXNoLXB1bGw7Cj4+PiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH07Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw aW5zMnsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0g PFNUTTMyX1BJTk1VWCgnRCcsIDIsIEFGMTIpPjsgLyogU0RNTUMxX0NNRCAqLwo+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8Mz47Cj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlLW9wZW4tZHJhaW47Cj4+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlzYWJsZTsKPj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiAtICAgICAgICAgICAgICAgICAgICAg fTsKPj4+IC0KPj4+IC0gICAgICAgICAgICAgICAgICAgICBzZG1tYzFfYjRfc2xlZXBfcGluc19h OiBzZG1tYzEtYjQtc2xlZXAtMCB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw aW5zIHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0g PFNUTTMyX1BJTk1VWCgnQycsIDgsIEFOQUxPRyk+LCAvKiBTRE1NQzFfRDAgKi8KPj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgn QycsIDksIEFOQUxPRyk+LCAvKiBTRE1NQzFfRDEgKi8KPj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQycsIDEwLCBBTkFMT0cp PiwgLyogU0RNTUMxX0QyICovCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0MnLCAxMSwgQU5BTE9HKT4sIC8qIFNETU1DMV9E MyAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 U1RNMzJfUElOTVVYKCdDJywgMTIsIEFOQUxPRyk+LCAvKiBTRE1NQzFfQ0sgKi8KPj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgn RCcsIDIsIEFOQUxPRyk+OyAvKiBTRE1NQzFfQ01EICovCj4+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiAtCj4+PiAtICAg ICAgICAgICAgICAgICAgICAgc2RtbWMxX2Rpcl9waW5zX2E6IHNkbW1jMS1kaXItMCB7Cj4+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5zMSB7Cj4+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBpbm11eCA9IDxTVE0zMl9QSU5NVVgoJ0MnLCA2LCBBRjgp PiwgLyogU0RNTUMxX0QwRElSICovCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0MnLCA3LCBBRjgpPiwgLyogU0RNTUMxX0Qx MjNESVIgKi8KPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPFNUTTMyX1BJTk1VWCgnQicsIDksIEFGNyk+OyAvKiBTRE1NQzFfQ0RJUiAqLwo+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGV3LXJhdGUgPSA8Mz47Cj4+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlLXB1c2gtcHVsbDsKPj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1wdWxsLXVwOwo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBpbnMyewo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwaW5tdXggPSA8U1RNMzJfUElOTVVYKCdCJywgOCwgQUY3KT47IC8qIFNETU1DMV9DS0lOICov Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtcHVsbC11cDsK Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiAtICAgICAgICAgICAgICAg ICAgICAgfTsKPj4+IC0KPj4+IC0gICAgICAgICAgICAgICAgICAgICBzZG1tYzFfZGlyX3NsZWVw X3BpbnNfYTogc2RtbWMxLWRpci1zbGVlcC0wIHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBpbnMgewo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw aW5tdXggPSA8U1RNMzJfUElOTVVYKCdDJywgNiwgQU5BTE9HKT4sIC8qIFNETU1DMV9EMERJUiAq Lwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RN MzJfUElOTVVYKCdDJywgNywgQU5BTE9HKT4sIC8qIFNETU1DMV9EMTIzRElSICovCj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgo J0InLCA5LCBBTkFMT0cpPiwgLyogU0RNTUMxX0NESVIgKi8KPj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQicsIDgsIEFOQUxP Ryk+OyAvKiBTRE1NQzFfQ0tJTiAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fTsKPj4+IC0gICAgICAgICAgICAgICAgICAgICB9Owo+Pj4gLQo+Pj4gLSAgICAgICAgICAgICAg ICAgICAgIHVzYXJ0MV9waW5zOiB1c2FydDEtMCB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwaW5zMSB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBpbm11eCA9IDxTVE0zMl9QSU5NVVgoJ0InLCAxNCwgQUY0KT47IC8qIFVTQVJUMV9UWCAqLwo+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWFzLWRpc2FibGU7Cj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlLXB1c2gtcHVsbDsK Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xldy1yYXRlID0gPDA+ Owo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBpbnMyIHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGlubXV4ID0gPFNUTTMyX1BJTk1VWCgnQicsIDE1LCBBRjQpPjsgLyogVVNBUlQx X1JYICovCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYXMtZGlz YWJsZTsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4+PiAtICAgICAgICAg ICAgICAgICAgICAgfTsKPj4+IC0KPj4+IC0gICAgICAgICAgICAgICAgICAgICB1c2FydDJfcGlu czogdXNhcnQyLTAgewo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGluczEgewo+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5tdXggPSA8U1RNMzJf UElOTVVYKCdEJywgNSwgQUY3KT47IC8qIFVTQVJUMl9UWCAqLwo+Pj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBiaWFzLWRpc2FibGU7Cj4+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRyaXZlLXB1c2gtcHVsbDsKPj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2xldy1yYXRlID0gPDA+Owo+Pj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfTsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBp bnMyIHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubXV4ID0g PFNUTTMyX1BJTk1VWCgnRCcsIDYsIEFGNyk+OyAvKiBVU0FSVDJfUlggKi8KPj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlhcy1kaXNhYmxlOwo+Pj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfTsKPj4+IC0gICAgICAgICAgICAgICAgICAgICB9Owo+Pj4g LQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHVzYm90Z19oc19waW5zX2E6IHVzYm90Zy1ocy0w IHsKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbnMgewo+Pj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5tdXggPSA8U1RNMzJfUElOTVVYKCdIJywg NCwgQUYxMCk+LCAgLyogVUxQSV9OWFQgKi8KPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U1RNMzJfUElOTVVYKCdJJywgMTEsIEFGMTAp PiwgLyogVUxQSV9ESVI+ICovCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPFNUTTMyX1BJTk1VWCgnQycsIDAsIEFGMTApPiwgIC8qIFVM UElfU1RQPiAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0EnLCA1LCBBRjEwKT4sICAvKiBVTFBJX0NLPiAq Lwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxTVE0zMl9QSU5NVVgoJ0EnLCAzLCBBRjEwKT4sICAvKiBVTFBJX0QwPiAqLwo+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0z Ml9QSU5NVVgoJ0InLCAwLCBBRjEwKT4sICAvKiBVTFBJX0QxPiAqLwo+Pj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgo J0InLCAxLCBBRjEwKT4sICAvKiBVTFBJX0QyPiAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0InLCAxMCwg QUYxMCk+LCAvKiBVTFBJX0QzPiAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0InLCAxMSwgQUYxMCk+LCAv KiBVTFBJX0Q0PiAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxTVE0zMl9QSU5NVVgoJ0InLCAxMiwgQUYxMCk+LCAvKiBVTFBJX0Q1 PiAqLwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxTVE0zMl9QSU5NVVgoJ0InLCAxMywgQUYxMCk+LCAvKiBVTFBJX0Q2PiAqLwo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxT VE0zMl9QSU5NVVgoJ0InLCA1LCBBRjEwKT47ICAvKiBVTFBJX0Q3PiAqLwo+Pj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWFzLWRpc2FibGU7Cj4+PiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlLXB1c2gtcHVsbDsKPj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xldy1yYXRlID0gPDI+Owo+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfTsKPj4+IC0gICAgICAgICAgICAgICAgICAgICB9Owo+ Pj4gLSAgICAgICAgICAgICB9Owo+Pj4gLSAgICAgfTsKPj4+ICsmcGluY3RybHsKPj4+ICsgICAg IGNvbXBhdGlibGUgPSAic3Qsc3RtMzJoNzQzLXBpbmN0cmwiOwo+Pj4gICAgfTsKPj4+CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg==