From mboxrd@z Thu Jan 1 00:00:00 1970 From: robh@kernel.org (Rob Herring) Date: Mon, 12 Nov 2018 10:41:21 -0600 Subject: [PATCH] ARM: dts: imx: Add Y Soft IOTA Draco, Hydra and Ursa boards In-Reply-To: <1541086962-52626-1-git-send-email-michal.vokac@ysoft.com> References: <1541086962-52626-1-git-send-email-michal.vokac@ysoft.com> Message-ID: <5bea0e99.1c69fb81.18be0.5162@mx.google.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, Nov 01, 2018 at 03:43:26PM +0000, Vok?? Michal wrote: > These are i.MX6S/DL based SBCs embedded in various Y Soft products. > All share the same board design but have slightly different HW > configuration. > > Ursa > - i.MX6S SoC, 512MB RAM DDR3, 4GB eMMC, microSD > - parallel WVGA 7" LCD with touch panel > - 1x Eth (QCA8334 switch) > - USB OTG > - USB host (micro-B) > > Draco > - i.MX6S SoC, 512MB RAM DDR3, 4GB eMMC, microSD > - parallel WVGA 7" LCD with touch panel > - 2x Eth (QCA8334 switch) > - USB OTG > - USB host (micro-B) > - RGB LED (I2C LP5562) > - 3.5mm audio jack + codec (LM49350) > > Hydra > - i.MX6DL SoC, 2GB RAM DDR3, 4GB eMMC, microSD > - I2C OLED display, capacitive matrix keys > - 2x Eth (QCA8334 switch) > - USB OTG > - RGB LED (I2C LP5562) > - 3.5mm audio jack + codec (LM49350) > - HDMI > - miniPCIe slot > > Cc: Andrew Lunn > Signed-off-by: Michal Vok?? > --- > > All the boards are booting fine but not everything is enabled/supported > yet though. There is few things that will need some effort to get them > fully working. > > - HDMI: nothing specific, it just does not have the priority > - OLED display: reset signal inversion, wrong display resolution,... > - capacitive keys: polled driver for MPR121 needed as we do not have > the interrupt line > - Eth switch: need tweaks in i.MX RGMII pin group control registers > - audio codec: no existing driver yet (in mainline) > > So expect patches targeting the mentioned issues and updates to the dts > files enabling additional HW. > > CC-ing Andrew since he was interested in this board as it has a DSA > Ethernet switch populated. > > Thanks, > Michal > > arch/arm/boot/dts/Makefile | 3 + > arch/arm/boot/dts/imx6dl-yapp4-common.dtsi | 535 +++++++++++++++++++++++++++++ > arch/arm/boot/dts/imx6dl-yapp4-draco.dts | 57 +++ > arch/arm/boot/dts/imx6dl-yapp4-hydra.dts | 33 ++ > arch/arm/boot/dts/imx6dl-yapp4-ursa.dts | 53 +++ > 5 files changed, 681 insertions(+) > create mode 100644 arch/arm/boot/dts/imx6dl-yapp4-common.dtsi > create mode 100644 arch/arm/boot/dts/imx6dl-yapp4-draco.dts > create mode 100644 arch/arm/boot/dts/imx6dl-yapp4-hydra.dts > create mode 100644 arch/arm/boot/dts/imx6dl-yapp4-ursa.dts > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > index b5bd3de..cf24410 100644 > --- a/arch/arm/boot/dts/Makefile > +++ b/arch/arm/boot/dts/Makefile > @@ -441,6 +441,9 @@ dtb-$(CONFIG_SOC_IMX6Q) += \ > imx6dl-wandboard.dtb \ > imx6dl-wandboard-revb1.dtb \ > imx6dl-wandboard-revd1.dtb \ > + imx6dl-yapp4-draco.dtb \ > + imx6dl-yapp4-hydra.dtb \ > + imx6dl-yapp4-ursa.dtb \ > imx6q-apalis-eval.dtb \ > imx6q-apalis-ixora.dtb \ > imx6q-apalis-ixora-v1.1.dtb \ > diff --git a/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi b/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi > new file mode 100644 > index 0000000..9925523 > --- /dev/null > +++ b/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi > @@ -0,0 +1,535 @@ > +// SPDX-License-Identifier: GPL-2.0 > +// > +// Copyright (C) 2015-2018 Y Soft Corporation, a.s. > + > +#include > +#include > + > +/ { > + backlight: backlight { > + compatible = "pwm-backlight"; > + pwms = <&pwm1 0 500000 PWM_POLARITY_INVERTED>; > + brightness-levels = <0 32 64 128 255>; > + default-brightness-level = <32>; > + num-interpolated-steps = <8>; > + power-supply = <&sw2_reg>; > + status = "disabled"; > + }; > + > + lcd_display: display { > + compatible = "fsl,imx-parallel-display"; > + #address-cells = <1>; > + #size-cells = <0>; > + interface-pix-fmt = "rgb24"; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_ipu1>; > + status = "disabled"; > + > + port at 0 { > + reg = <0>; > + > + lcd_display_in: endpoint { > + remote-endpoint = <&ipu1_di0_disp0>; > + }; > + }; > + > + port at 1 { > + reg = <1>; > + > + lcd_display_out: endpoint { > + remote-endpoint = <&lcd_panel_in>; > + }; > + }; > + }; > + > + panel: panel { > + compatible = "dataimage,scf0700c48ggu18"; > + power-supply = <&sw2_reg>; > + status = "disabled"; > + > + port { > + lcd_panel_in: endpoint { > + remote-endpoint = <&lcd_display_out>; > + }; > + }; > + }; > + > + regulators { > + compatible = "simple-bus"; > + #address-cells = <1>; > + #size-cells = <0>; These are all just individual board level regulators? If so, drop the simple-bus and move these up to the top-level. > + > + reg_usb_otg_vbus: regulator at 0 { > + compatible = "regulator-fixed"; > + reg = <0>; Dropping reg and unit-address in the process. > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_usbotg_vbus>; > + regulator-name = "usb_otg_vbus"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + status = "okay"; > + }; > + > + reg_usb_h1_vbus: regulator at 1 { > + compatible = "regulator-fixed"; > + reg = <1>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_usbh1_vbus>; > + regulator-name = "usb_h1_vbus"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + gpio = <&gpio1 29 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + status = "disabled"; > + }; > + > + reg_pcie: regulator at 2 { > + compatible = "regulator-fixed"; > + reg = <2>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_pcie_reg>; > + regulator-name = "MPCIE_3V3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + gpio = <&gpio3 19 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + status = "disabled"; > + }; > + }; > +}; > + > +&fec { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_enet>; > + phy-mode = "rgmii-id"; > + phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_HIGH>; > + phy-reset-duration = <20>; > + phy-supply = <&sw2_reg>; > + phy-handle = <ðphy0>; > + status = "okay"; > + > + mdio { > + #address-cells = <1>; > + #size-cells = <0>; > + > + phy_port2: phy at 1 { > + reg = <1>; > + }; > + > + phy_port3: phy at 2 { > + reg = <2>; > + }; > + > + switch at 0 { > + compatible = "qca,qca8334"; > + reg = <0>; > + > + switch_ports: ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + ethphy0: port at 0 { > + reg = <0>; > + label = "cpu"; > + phy-mode = "rgmii"; > + ethernet = <&fec>; > + fixed-link { > + speed = <1000>; > + full-duplex; > + }; > + }; > + > + port at 2 { > + reg = <2>; > + label = "eth2"; > + phy-handle = <&phy_port2>; > + }; > + > + port at 3 { > + reg = <3>; > + label = "eth1"; > + phy-handle = <&phy_port3>; > + }; > + }; > + }; > + }; > +}; > + > +&i2c2 { > + clock-frequency = <100000>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_i2c2>; > + status = "okay"; > + > + eeprom at 57 { > + compatible = "atmel,24c128"; > + reg = <0x57>; > + pagesize = <64>; > + status = "okay"; > + }; > + > + leds: leds at 30 { led-controller at ... > + compatible = "ti,lp5562"; > + label = "lp5562_leds"; > + reg = <0x30>; > + clock-mode = /bits/ 8 <1>; > + status = "disabled"; Kind of strange to have these disables. I think disabled should mean present in the h/w, but not used/enabled. Either this should be present on all boards and enabled or be moved to the per board dts. > + > + chan0 { > + chan-name = "R"; > + led-cur = /bits/ 8 <0x20>; > + max-cur = /bits/ 8 <0x60>; > + }; > + > + chan1 { > + chan-name = "G"; > + led-cur = /bits/ 8 <0x20>; > + max-cur = /bits/ 8 <0x60>; > + }; > + > + chan2 { > + chan-name = "B"; > + led-cur = /bits/ 8 <0x20>; > + max-cur = /bits/ 8 <0x60>; > + }; > + > + chan3 { > + chan-name = "W"; > + led-cur = /bits/ 8 <0x0>; > + max-cur = /bits/ 8 <0x0>; > + }; > + }; > + > + pfuze200 at 8 { pmic at 8 > + compatible = "fsl,pfuze200"; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_pmic>; > + reg = <0x8>; > + > + regulators { > + sw1a_reg: sw1ab { > + regulator-min-microvolt = <300000>; > + regulator-max-microvolt = <1875000>; > + regulator-boot-on; > + regulator-always-on; > + regulator-ramp-delay = <6250>; > + }; > + > + sw2_reg: sw2 { > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + sw3a_reg: sw3a { > + regulator-min-microvolt = <400000>; > + regulator-max-microvolt = <1975000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + sw3b_reg: sw3b { > + regulator-min-microvolt = <400000>; > + regulator-max-microvolt = <1975000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + swbst_reg: swbst { > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5150000>; > + }; > + > + snvs_reg: vsnvs { > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <3000000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + vref_reg: vrefddr { > + regulator-boot-on; > + regulator-always-on; > + }; > + > + vgen1_reg: vgen1 { > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <1550000>; > + }; > + > + vgen2_reg: vgen2 { > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <1550000>; > + }; > + > + vgen3_reg: vgen3 { > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + vgen4_reg: vgen4 { > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + vgen5_reg: vgen5 { > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + vgen6_reg: vgen6 { > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + }; > + }; > +}; > + > +&iomuxc { > + pinctrl_enet: enetgrp { > + fsl,pins = < > + MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1B020 > + MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1B020 > + MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1B020 > + MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1B020 > + MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1B020 > + MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1B020 > + MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1B020 > + MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1B020 > + MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1B020 > + MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1B020 > + MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1B020 > + MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1B020 > + MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1B020 > + MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1B020 > + MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1B010 > + MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x1B010 > + MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25 0x1B098 > + >; > + }; > + > + pinctrl_i2c2: i2c2grp { > + fsl,pins = < > + MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b899 > + MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b899 > + >; > + }; > + > + pinctrl_ipu1: ipu1grp { > + fsl,pins = < > + MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10 > + MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x10 > + MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x10 > + MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x10 > + MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x10 > + MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x10 > + MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x10 > + MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x10 > + MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x10 > + MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x10 > + MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x10 > + MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x10 > + MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x10 > + MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x10 > + MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x10 > + MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x10 > + MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x10 > + MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x10 > + MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x10 > + MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x10 > + MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x10 > + MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x10 > + MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x10 > + MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x10 > + MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x10 > + MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x10 > + MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x10 > + >; > + }; > + > + pinctrl_pcie: pciegrp { > + fsl,pins = < > + MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x1b098 > + MX6QDL_PAD_KEY_COL4__GPIO4_IO14 0x1b098 > + MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20 0x1b098 > + >; > + }; > + > + pinctrl_pcie_reg: pciereggrp { > + fsl,pins = < > + MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x1b098 > + >; > + }; > + > + pinctrl_pmic: pmicgrp { > + fsl,pins = < > + MX6QDL_PAD_GPIO_18__GPIO7_IO13 0x1b098 > + >; > + }; > + > + pinctrl_backlight_pwm: pwm1grp { > + fsl,pins = < > + MX6QDL_PAD_GPIO_9__PWM1_OUT 0x8 > + >; > + }; > + > + pinctrl_uart1: uart1grp { > + fsl,pins = < > + MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0a8 > + MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0a8 > + >; > + }; > + > + pinctrl_usbh1: usbh1grp { > + fsl,pins = < > + MX6QDL_PAD_EIM_D30__USB_H1_OC 0x1b098 > + >; > + }; > + > + pinctrl_usbh1_vbus: usbh1-vbus { > + fsl,pins = < > + MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x98 > + >; > + }; > + > + pinctrl_usbotg: usbotggrp { > + fsl,pins = < > + MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x1b098 > + MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x1b098 > + >; > + }; > + > + pinctrl_usbotg_vbus: usbotg-vbus { > + fsl,pins = < > + MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x98 > + >; > + }; > + > + pinctrl_usdhc3: usdhc3grp { > + fsl,pins = < > + MX6QDL_PAD_EIM_A16__GPIO2_IO22 0x1b018 > + MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x1b018 > + MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059 > + MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059 > + MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059 > + MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 > + MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 > + MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 > + >; > + }; > + > + pinctrl_usdhc4: usdhc4grp { > + fsl,pins = < > + MX6QDL_PAD_SD4_CMD__SD4_CMD 0x1f069 > + MX6QDL_PAD_SD4_CLK__SD4_CLK 0x10069 > + MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17069 > + MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17069 > + MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17069 > + MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17069 > + MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17069 > + MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17069 > + MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17069 > + MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17069 > + >; > + }; > + > + pinctrl_wdog: wdoggrp { > + fsl,pins = < > + MX6QDL_PAD_GPIO_1__WDOG2_B 0x1b0b0 > + >; > + }; > +}; > + > +&ipu1_di0_disp0 { > + remote-endpoint = <&lcd_display_in>; > +}; > + > +&pcie { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_pcie>; > + reset-gpio = <&gpio7 12 GPIO_ACTIVE_LOW>; > + vpcie-supply = <®_pcie>; > + status = "disabled"; > +}; > + > +&pwm1 { > + #pwm-cells = <3>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_backlight_pwm>; > + status = "disabled"; > +}; > + > +&uart1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_uart1>; > + status = "okay"; > +}; > + > +&usbh1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_usbh1>; > + vbus-supply = <®_usb_h1_vbus>; > + status = "disabled"; > +}; > + > +&usbotg { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_usbotg>; > + vbus-supply = <®_usb_otg_vbus>; > + srp-disable; > + hnp-disable; > + adp-disable; > + status = "okay"; > +}; > + > +&usbphy1 { > + fsl,tx-d-cal = <106>; > + status = "okay"; > +}; > + > +&usbphy2 { > + fsl,tx-d-cal = <109>; > + status = "disabled"; > +}; > + > +&usdhc3 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_usdhc3>; > + bus-width = <4>; > + cd-gpios = <&gpio7 8 GPIO_ACTIVE_LOW>; > + wp-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>; > + no-1-8-v; > + keep-power-in-suspend; > + enable-sdio-wakeup; > + vmmc-supply = <&sw2_reg>; > + status = "disabled"; > +}; > + > +&usdhc4 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_usdhc4>; > + bus-width = <8>; > + non-removable; > + no-1-8-v; > + keep-power-in-suspend; > + vmmc-supply = <&sw2_reg>; > + status = "okay"; > +}; > + > +&wdog1 { > + status = "disabled"; > +}; > + > +&wdog2 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_wdog>; > + fsl,ext-reset-output; > + status = "okay"; > +}; > diff --git a/arch/arm/boot/dts/imx6dl-yapp4-draco.dts b/arch/arm/boot/dts/imx6dl-yapp4-draco.dts > new file mode 100644 > index 0000000..fb62f31 > --- /dev/null > +++ b/arch/arm/boot/dts/imx6dl-yapp4-draco.dts > @@ -0,0 +1,57 @@ > +// SPDX-License-Identifier: GPL-2.0 > +// > +// Copyright (C) 2015-2018 Y Soft Corporation, a.s. > + > +/dts-v1/; > + > +#include "imx6dl.dtsi" > +#include "imx6dl-yapp4-common.dtsi" > + > +/ { > + model = "Y Soft IOTA Draco i.MX6Solo board"; > + compatible = "ysoft,imx6dl-yapp4-draco", "fsl,imx6dl"; Is this documented? > + > + cpus { > + /delete-node/ cpu at 1; > + }; > + > + memory at 10000000 { > + reg = <0x10000000 0x20000000>; > + }; > +}; > + > +&backlight { > + status = "okay"; > +}; > + > +&lcd_display { > + status = "okay"; > +}; > + > +&leds { > + status = "okay"; > +}; > + > +&panel { > + status = "okay"; > +}; > + > +&pwm1 { > + status = "okay"; > +}; > + > +®_usb_h1_vbus { > + status = "okay"; > +}; > + > +&usbh1 { > + status = "okay"; > +}; > + > +&usbphy2 { > + status = "okay"; > +}; > + > +&usdhc3 { > + status = "okay"; > +}; > diff --git a/arch/arm/boot/dts/imx6dl-yapp4-hydra.dts b/arch/arm/boot/dts/imx6dl-yapp4-hydra.dts > new file mode 100644 > index 0000000..799fb4c > --- /dev/null > +++ b/arch/arm/boot/dts/imx6dl-yapp4-hydra.dts > @@ -0,0 +1,33 @@ > +// SPDX-License-Identifier: GPL-2.0 > +// > +// Copyright (C) 2015-2018 Y Soft Corporation, a.s. > + > +/dts-v1/; > + > +#include "imx6dl.dtsi" > +#include "imx6dl-yapp4-common.dtsi" > + > +/ { > + model = "Y Soft IOTA Hydra i.MX6DualLite board"; > + compatible = "ysoft,imx6dl-yapp4-hydra", "fsl,imx6dl"; > + > + memory at 10000000 { > + reg = <0x10000000 0x80000000>; > + }; > +}; > + > +&leds { > + status = "okay"; > +}; > + > +&pcie { > + status = "okay"; > +}; > + > +®_pcie { > + status = "okay"; > +}; > + > +&usdhc3 { > + status = "okay"; > +}; > diff --git a/arch/arm/boot/dts/imx6dl-yapp4-ursa.dts b/arch/arm/boot/dts/imx6dl-yapp4-ursa.dts > new file mode 100644 > index 0000000..23af972 > --- /dev/null > +++ b/arch/arm/boot/dts/imx6dl-yapp4-ursa.dts > @@ -0,0 +1,53 @@ > +// SPDX-License-Identifier: GPL-2.0 > +// > +// Copyright (C) 2015-2018 Y Soft Corporation, a.s. > + > +/dts-v1/; > + > +#include "imx6dl.dtsi" > +#include "imx6dl-yapp4-common.dtsi" > + > +/ { > + model = "Y Soft IOTA Ursa i.MX6Solo board"; > + compatible = "ysoft,imx6dl-yapp4-ursa", "fsl,imx6dl"; > + > + cpus { > + /delete-node/ cpu at 1; > + }; > + > + memory at 10000000 { > + reg = <0x10000000 0x20000000>; > + }; > +}; > + > +&backlight { > + status = "okay"; > +}; > + > +&lcd_display { > + status = "okay"; > +}; > + > +&panel { > + status = "okay"; > +}; > + > +&pwm1 { > + status = "okay"; > +}; > + > +®_usb_h1_vbus { > + status = "okay"; > +}; > + > +&switch_ports { > + /delete-node/ port at 2; > +}; > + > +&usbh1 { > + status = "okay"; > +}; > + > +&usbphy2 { > + status = "okay"; > +}; > -- > 2.1.4 > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH] ARM: dts: imx: Add Y Soft IOTA Draco, Hydra and Ursa boards Date: Mon, 12 Nov 2018 10:41:21 -0600 Message-ID: <5bea0e99.1c69fb81.18be0.5162@mx.google.com> References: <1541086962-52626-1-git-send-email-michal.vokac@ysoft.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1541086962-52626-1-git-send-email-michal.vokac@ysoft.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: =?utf-8?B?Vm9rw6HEjQ==?= Michal Cc: Mark Rutland , "devicetree@vger.kernel.org" , Andrew Lunn , Sascha Hauer , "linux-kernel@vger.kernel.org" , NXP Linux Team , Fabio Estevam , Shawn Guo , "linux-arm-kernel@lists.infradead.org" List-Id: devicetree@vger.kernel.org T24gVGh1LCBOb3YgMDEsIDIwMTggYXQgMDM6NDM6MjZQTSArMDAwMCwgVm9rw6HEjSBNaWNoYWwg d3JvdGU6Cj4gVGhlc2UgYXJlIGkuTVg2Uy9ETCBiYXNlZCBTQkNzIGVtYmVkZGVkIGluIHZhcmlv dXMgWSBTb2Z0IHByb2R1Y3RzLgo+IEFsbCBzaGFyZSB0aGUgc2FtZSBib2FyZCBkZXNpZ24gYnV0 IGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IEhXCj4gY29uZmlndXJhdGlvbi4KPiAKPiBVcnNhCj4g LSBpLk1YNlMgU29DLCA1MTJNQiBSQU0gRERSMywgNEdCIGVNTUMsIG1pY3JvU0QKPiAtIHBhcmFs bGVsIFdWR0EgNyIgTENEIHdpdGggdG91Y2ggcGFuZWwKPiAtIDF4IEV0aCAoUUNBODMzNCBzd2l0 Y2gpCj4gLSBVU0IgT1RHCj4gLSBVU0IgaG9zdCAobWljcm8tQikKPiAKPiBEcmFjbwo+IC0gaS5N WDZTIFNvQywgNTEyTUIgUkFNIEREUjMsIDRHQiBlTU1DLCBtaWNyb1NECj4gLSBwYXJhbGxlbCBX VkdBIDciIExDRCB3aXRoIHRvdWNoIHBhbmVsCj4gLSAyeCBFdGggKFFDQTgzMzQgc3dpdGNoKQo+ IC0gVVNCIE9URwo+IC0gVVNCIGhvc3QgKG1pY3JvLUIpCj4gLSBSR0IgTEVEIChJMkMgTFA1NTYy KQo+IC0gMy41bW0gYXVkaW8gamFjayArIGNvZGVjIChMTTQ5MzUwKQo+IAo+IEh5ZHJhCj4gLSBp Lk1YNkRMIFNvQywgMkdCIFJBTSBERFIzLCA0R0IgZU1NQywgbWljcm9TRAo+IC0gSTJDIE9MRUQg ZGlzcGxheSwgY2FwYWNpdGl2ZSBtYXRyaXgga2V5cwo+IC0gMnggRXRoIChRQ0E4MzM0IHN3aXRj aCkKPiAtIFVTQiBPVEcKPiAtIFJHQiBMRUQgKEkyQyBMUDU1NjIpCj4gLSAzLjVtbSBhdWRpbyBq YWNrICsgY29kZWMgKExNNDkzNTApCj4gLSBIRE1JCj4gLSBtaW5pUENJZSBzbG90Cj4gCj4gQ2M6 IEFuZHJldyBMdW5uIDxhbmRyZXdAbHVubi5jaD4KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgVm9r w6HEjSA8bWljaGFsLnZva2FjQHlzb2Z0LmNvbT4KPiAtLS0KPiAKPiBBbGwgdGhlIGJvYXJkcyBh cmUgYm9vdGluZyBmaW5lIGJ1dCBub3QgZXZlcnl0aGluZyBpcyBlbmFibGVkL3N1cHBvcnRlZAo+ IHlldCB0aG91Z2guIFRoZXJlIGlzIGZldyB0aGluZ3MgdGhhdCB3aWxsIG5lZWQgc29tZSBlZmZv cnQgdG8gZ2V0IHRoZW0KPiBmdWxseSB3b3JraW5nLgo+IAo+ICAtIEhETUk6IG5vdGhpbmcgc3Bl Y2lmaWMsIGl0IGp1c3QgZG9lcyBub3QgaGF2ZSB0aGUgcHJpb3JpdHkKPiAgLSBPTEVEIGRpc3Bs YXk6IHJlc2V0IHNpZ25hbCBpbnZlcnNpb24sIHdyb25nIGRpc3BsYXkgcmVzb2x1dGlvbiwuLi4K PiAgLSBjYXBhY2l0aXZlIGtleXM6IHBvbGxlZCBkcml2ZXIgZm9yIE1QUjEyMSBuZWVkZWQgYXMg d2UgZG8gbm90IGhhdmUgCj4gICAgdGhlIGludGVycnVwdCBsaW5lCj4gIC0gRXRoIHN3aXRjaDog bmVlZCB0d2Vha3MgaW4gaS5NWCBSR01JSSBwaW4gZ3JvdXAgY29udHJvbCByZWdpc3RlcnMKPiAg LSBhdWRpbyBjb2RlYzogbm8gZXhpc3RpbmcgZHJpdmVyIHlldCAoaW4gbWFpbmxpbmUpCj4gCj4g U28gZXhwZWN0IHBhdGNoZXMgdGFyZ2V0aW5nIHRoZSBtZW50aW9uZWQgaXNzdWVzIGFuZCB1cGRh dGVzIHRvIHRoZSBkdHMKPiBmaWxlcyBlbmFibGluZyBhZGRpdGlvbmFsIEhXLgo+ICAKPiBDQy1p bmcgQW5kcmV3IHNpbmNlIGhlIHdhcyBpbnRlcmVzdGVkIGluIHRoaXMgYm9hcmQgYXMgaXQgaGFz IGEgRFNBCj4gRXRoZXJuZXQgc3dpdGNoIHBvcHVsYXRlZC4KPiAKPiBUaGFua3MsCj4gTWljaGFs Cj4gCj4gIGFyY2gvYXJtL2Jvb3QvZHRzL01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMyAr Cj4gIGFyY2gvYXJtL2Jvb3QvZHRzL2lteDZkbC15YXBwNC1jb21tb24uZHRzaSB8IDUzNSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBhcmNoL2FybS9ib290L2R0cy9pbXg2ZGwteWFw cDQtZHJhY28uZHRzICAgfCAgNTcgKysrCj4gIGFyY2gvYXJtL2Jvb3QvZHRzL2lteDZkbC15YXBw NC1oeWRyYS5kdHMgICB8ICAzMyArKwo+ICBhcmNoL2FybS9ib290L2R0cy9pbXg2ZGwteWFwcDQt dXJzYS5kdHMgICAgfCAgNTMgKysrCj4gIDUgZmlsZXMgY2hhbmdlZCwgNjgxIGluc2VydGlvbnMo KykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL2Jvb3QvZHRzL2lteDZkbC15YXBwNC1j b21tb24uZHRzaQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vYm9vdC9kdHMvaW14NmRs LXlhcHA0LWRyYWNvLmR0cwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vYm9vdC9kdHMv aW14NmRsLXlhcHA0LWh5ZHJhLmR0cwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vYm9v dC9kdHMvaW14NmRsLXlhcHA0LXVyc2EuZHRzCj4gCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jv b3QvZHRzL01ha2VmaWxlIGIvYXJjaC9hcm0vYm9vdC9kdHMvTWFrZWZpbGUKPiBpbmRleCBiNWJk M2RlLi5jZjI0NDEwIDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJtL2Jvb3QvZHRzL01ha2VmaWxlCj4g KysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvTWFrZWZpbGUKPiBAQCAtNDQxLDYgKzQ0MSw5IEBAIGR0 Yi0kKENPTkZJR19TT0NfSU1YNlEpICs9IFwKPiAgCWlteDZkbC13YW5kYm9hcmQuZHRiIFwKPiAg CWlteDZkbC13YW5kYm9hcmQtcmV2YjEuZHRiIFwKPiAgCWlteDZkbC13YW5kYm9hcmQtcmV2ZDEu ZHRiIFwKPiArCWlteDZkbC15YXBwNC1kcmFjby5kdGIgXAo+ICsJaW14NmRsLXlhcHA0LWh5ZHJh LmR0YiBcCj4gKwlpbXg2ZGwteWFwcDQtdXJzYS5kdGIgXAo+ICAJaW14NnEtYXBhbGlzLWV2YWwu ZHRiIFwKPiAgCWlteDZxLWFwYWxpcy1peG9yYS5kdGIgXAo+ICAJaW14NnEtYXBhbGlzLWl4b3Jh LXYxLjEuZHRiIFwKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvaW14NmRsLXlhcHA0 LWNvbW1vbi5kdHNpIGIvYXJjaC9hcm0vYm9vdC9kdHMvaW14NmRsLXlhcHA0LWNvbW1vbi5kdHNp Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi45OTI1NTIzCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtL2Jvb3QvZHRzL2lteDZkbC15YXBwNC1jb21tb24uZHRz aQo+IEBAIC0wLDAgKzEsNTM1IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wCj4gKy8vCj4gKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IFkgU29mdCBDb3Jwb3JhdGlv biwgYS5zLgo+ICsKPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oPgo+ICsjaW5j bHVkZSA8ZHQtYmluZGluZ3MvcHdtL3B3bS5oPgo+ICsKPiArLyB7Cj4gKwliYWNrbGlnaHQ6IGJh Y2tsaWdodCB7Cj4gKwkJY29tcGF0aWJsZSA9ICJwd20tYmFja2xpZ2h0IjsKPiArCQlwd21zID0g PCZwd20xIDAgNTAwMDAwIFBXTV9QT0xBUklUWV9JTlZFUlRFRD47Cj4gKwkJYnJpZ2h0bmVzcy1s ZXZlbHMgPSA8MCAzMiA2NCAxMjggMjU1PjsKPiArCQlkZWZhdWx0LWJyaWdodG5lc3MtbGV2ZWwg PSA8MzI+Owo+ICsJCW51bS1pbnRlcnBvbGF0ZWQtc3RlcHMgPSA8OD47Cj4gKwkJcG93ZXItc3Vw cGx5ID0gPCZzdzJfcmVnPjsKPiArCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ICsJfTsKPiArCj4g KwlsY2RfZGlzcGxheTogZGlzcGxheSB7Cj4gKwkJY29tcGF0aWJsZSA9ICJmc2wsaW14LXBhcmFs bGVsLWRpc3BsYXkiOwo+ICsJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsJCSNzaXplLWNlbGxz ID0gPDA+Owo+ICsJCWludGVyZmFjZS1waXgtZm10ID0gInJnYjI0IjsKPiArCQlwaW5jdHJsLW5h bWVzID0gImRlZmF1bHQiOwo+ICsJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9pcHUxPjsKPiArCQlz dGF0dXMgPSAiZGlzYWJsZWQiOwo+ICsKPiArCQlwb3J0QDAgewo+ICsJCQlyZWcgPSA8MD47Cj4g Kwo+ICsJCQlsY2RfZGlzcGxheV9pbjogZW5kcG9pbnQgewo+ICsJCQkJcmVtb3RlLWVuZHBvaW50 ID0gPCZpcHUxX2RpMF9kaXNwMD47Cj4gKwkJCX07Cj4gKwkJfTsKPiArCj4gKwkJcG9ydEAxIHsK PiArCQkJcmVnID0gPDE+Owo+ICsKPiArCQkJbGNkX2Rpc3BsYXlfb3V0OiBlbmRwb2ludCB7Cj4g KwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmxjZF9wYW5lbF9pbj47Cj4gKwkJCX07Cj4gKwkJfTsK PiArCX07Cj4gKwo+ICsJcGFuZWw6IHBhbmVsIHsKPiArCQljb21wYXRpYmxlID0gImRhdGFpbWFn ZSxzY2YwNzAwYzQ4Z2d1MTgiOwo+ICsJCXBvd2VyLXN1cHBseSA9IDwmc3cyX3JlZz47Cj4gKwkJ c3RhdHVzID0gImRpc2FibGVkIjsKPiArCj4gKwkJcG9ydCB7Cj4gKwkJCWxjZF9wYW5lbF9pbjog ZW5kcG9pbnQgewo+ICsJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZsY2RfZGlzcGxheV9vdXQ+Owo+ ICsJCQl9Owo+ICsJCX07Cj4gKwl9Owo+ICsKPiArCXJlZ3VsYXRvcnMgewo+ICsJCWNvbXBhdGli bGUgPSAic2ltcGxlLWJ1cyI7Cj4gKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJI3NpemUt Y2VsbHMgPSA8MD47CgpUaGVzZSBhcmUgYWxsIGp1c3QgaW5kaXZpZHVhbCBib2FyZCBsZXZlbCBy ZWd1bGF0b3JzPyBJZiBzbywgZHJvcCB0aGUgCnNpbXBsZS1idXMgYW5kIG1vdmUgdGhlc2UgdXAg dG8gdGhlIHRvcC1sZXZlbC4KPiArCj4gKwkJcmVnX3VzYl9vdGdfdmJ1czogcmVndWxhdG9yQDAg ewo+ICsJCQljb21wYXRpYmxlID0gInJlZ3VsYXRvci1maXhlZCI7Cj4gKwkJCXJlZyA9IDwwPjsK CkRyb3BwaW5nIHJlZyBhbmQgdW5pdC1hZGRyZXNzIGluIHRoZSBwcm9jZXNzLgoKPiArCQkJcGlu Y3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKPiArCQkJcGluY3RybC0wID0gPCZwaW5jdHJsX3VzYm90 Z192YnVzPjsKPiArCQkJcmVndWxhdG9yLW5hbWUgPSAidXNiX290Z192YnVzIjsKPiArCQkJcmVn dWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NTAwMDAwMD47Cj4gKwkJCXJlZ3VsYXRvci1tYXgtbWlj cm92b2x0ID0gPDUwMDAwMDA+Owo+ICsJCQlncGlvID0gPCZncGlvMyAyMiBHUElPX0FDVElWRV9I SUdIPjsKPiArCQkJZW5hYmxlLWFjdGl2ZS1oaWdoOwo+ICsJCQlzdGF0dXMgPSAib2theSI7Cj4g KwkJfTsKPiArCj4gKwkJcmVnX3VzYl9oMV92YnVzOiByZWd1bGF0b3JAMSB7Cj4gKwkJCWNvbXBh dGlibGUgPSAicmVndWxhdG9yLWZpeGVkIjsKPiArCQkJcmVnID0gPDE+Owo+ICsJCQlwaW5jdHJs LW5hbWVzID0gImRlZmF1bHQiOwo+ICsJCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfdXNiaDFfdmJ1 cz47Cj4gKwkJCXJlZ3VsYXRvci1uYW1lID0gInVzYl9oMV92YnVzIjsKPiArCQkJcmVndWxhdG9y LW1pbi1taWNyb3ZvbHQgPSA8NTAwMDAwMD47Cj4gKwkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0 ID0gPDUwMDAwMDA+Owo+ICsJCQlncGlvID0gPCZncGlvMSAyOSBHUElPX0FDVElWRV9ISUdIPjsK PiArCQkJZW5hYmxlLWFjdGl2ZS1oaWdoOwo+ICsJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ICsJ CX07Cj4gKwo+ICsJCXJlZ19wY2llOiByZWd1bGF0b3JAMiB7Cj4gKwkJCWNvbXBhdGlibGUgPSAi cmVndWxhdG9yLWZpeGVkIjsKPiArCQkJcmVnID0gPDI+Owo+ICsJCQlwaW5jdHJsLW5hbWVzID0g ImRlZmF1bHQiOwo+ICsJCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfcGNpZV9yZWc+Owo+ICsJCQly ZWd1bGF0b3ItbmFtZSA9ICJNUENJRV8zVjMiOwo+ICsJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9s dCA9IDwzMzAwMDAwPjsKPiArCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47 Cj4gKwkJCWdwaW8gPSA8JmdwaW8zIDE5IEdQSU9fQUNUSVZFX0hJR0g+Owo+ICsJCQllbmFibGUt YWN0aXZlLWhpZ2g7Cj4gKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7Cj4gKwkJfTsKPiArCX07Cj4g K307Cj4gKwo+ICsmZmVjIHsKPiArCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4gKwlwaW5j dHJsLTAgPSA8JnBpbmN0cmxfZW5ldD47Cj4gKwlwaHktbW9kZSA9ICJyZ21paS1pZCI7Cj4gKwlw aHktcmVzZXQtZ3Bpb3MgPSA8JmdwaW8xIDI1IEdQSU9fQUNUSVZFX0hJR0g+Owo+ICsJcGh5LXJl c2V0LWR1cmF0aW9uID0gPDIwPjsKPiArCXBoeS1zdXBwbHkgPSA8JnN3Ml9yZWc+Owo+ICsJcGh5 LWhhbmRsZSA9IDwmZXRocGh5MD47Cj4gKwlzdGF0dXMgPSAib2theSI7Cj4gKwo+ICsJbWRpbyB7 Cj4gKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJI3NpemUtY2VsbHMgPSA8MD47Cj4gKwo+ ICsJCXBoeV9wb3J0MjogcGh5QDEgewo+ICsJCQlyZWcgPSA8MT47Cj4gKwkJfTsKPiArCj4gKwkJ cGh5X3BvcnQzOiBwaHlAMiB7Cj4gKwkJCXJlZyA9IDwyPjsKPiArCQl9Owo+ICsKPiArCQlzd2l0 Y2hAMCB7Cj4gKwkJCWNvbXBhdGlibGUgPSAicWNhLHFjYTgzMzQiOwo+ICsJCQlyZWcgPSA8MD47 Cj4gKwo+ICsJCQlzd2l0Y2hfcG9ydHM6IHBvcnRzIHsKPiArCQkJCSNhZGRyZXNzLWNlbGxzID0g PDE+Owo+ICsJCQkJI3NpemUtY2VsbHMgPSA8MD47Cj4gKwo+ICsJCQkJZXRocGh5MDogcG9ydEAw IHsKPiArCQkJCQlyZWcgPSA8MD47Cj4gKwkJCQkJbGFiZWwgPSAiY3B1IjsKPiArCQkJCQlwaHkt bW9kZSA9ICJyZ21paSI7Cj4gKwkJCQkJZXRoZXJuZXQgPSA8JmZlYz47Cj4gKwkJCQkJZml4ZWQt bGluayB7Cj4gKwkJCQkJCXNwZWVkID0gPDEwMDA+Owo+ICsJCQkJCQlmdWxsLWR1cGxleDsKPiAr CQkJCQl9Owo+ICsJCQkJfTsKPiArCj4gKwkJCQlwb3J0QDIgewo+ICsJCQkJCXJlZyA9IDwyPjsK PiArCQkJCQlsYWJlbCA9ICJldGgyIjsKPiArCQkJCQlwaHktaGFuZGxlID0gPCZwaHlfcG9ydDI+ Owo+ICsJCQkJfTsKPiArCj4gKwkJCQlwb3J0QDMgewo+ICsJCQkJCXJlZyA9IDwzPjsKPiArCQkJ CQlsYWJlbCA9ICJldGgxIjsKPiArCQkJCQlwaHktaGFuZGxlID0gPCZwaHlfcG9ydDM+Owo+ICsJ CQkJfTsKPiArCQkJfTsKPiArCQl9Owo+ICsJfTsKPiArfTsKPiArCj4gKyZpMmMyIHsKPiArCWNs b2NrLWZyZXF1ZW5jeSA9IDwxMDAwMDA+Owo+ICsJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsK PiArCXBpbmN0cmwtMCA9IDwmcGluY3RybF9pMmMyPjsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiAr Cj4gKwllZXByb21ANTcgewo+ICsJCWNvbXBhdGlibGUgPSAiYXRtZWwsMjRjMTI4IjsKPiArCQly ZWcgPSA8MHg1Nz47Cj4gKwkJcGFnZXNpemUgPSA8NjQ+Owo+ICsJCXN0YXR1cyA9ICJva2F5IjsK PiArCX07Cj4gKwo+ICsJbGVkczogbGVkc0AzMCB7CgpsZWQtY29udHJvbGxlckAuLi4KCj4gKwkJ Y29tcGF0aWJsZSA9ICJ0aSxscDU1NjIiOwo+ICsJCWxhYmVsID0gImxwNTU2Ml9sZWRzIjsKPiAr CQlyZWcgPSA8MHgzMD47Cj4gKwkJY2xvY2stbW9kZSA9IC9iaXRzLyA4IDwxPjsKPiArCQlzdGF0 dXMgPSAiZGlzYWJsZWQiOwoKS2luZCBvZiBzdHJhbmdlIHRvIGhhdmUgdGhlc2UgZGlzYWJsZXMu IEkgdGhpbmsgZGlzYWJsZWQgc2hvdWxkIG1lYW4gCnByZXNlbnQgaW4gdGhlIGgvdywgYnV0IG5v dCB1c2VkL2VuYWJsZWQuIEVpdGhlciB0aGlzIHNob3VsZCBiZSBwcmVzZW50IApvbiBhbGwgYm9h cmRzIGFuZCBlbmFibGVkIG9yIGJlIG1vdmVkIHRvIHRoZSBwZXIgYm9hcmQgZHRzLgoKPiArCj4g KwkJY2hhbjAgewo+ICsJCQljaGFuLW5hbWUgPSAiUiI7Cj4gKwkJCWxlZC1jdXIgPSAvYml0cy8g OCA8MHgyMD47Cj4gKwkJCW1heC1jdXIgPSAvYml0cy8gOCA8MHg2MD47Cj4gKwkJfTsKPiArCj4g KwkJY2hhbjEgewo+ICsJCQljaGFuLW5hbWUgPSAiRyI7Cj4gKwkJCWxlZC1jdXIgPSAvYml0cy8g OCA8MHgyMD47Cj4gKwkJCW1heC1jdXIgPSAvYml0cy8gOCA8MHg2MD47Cj4gKwkJfTsKPiArCj4g KwkJY2hhbjIgewo+ICsJCQljaGFuLW5hbWUgPSAiQiI7Cj4gKwkJCWxlZC1jdXIgPSAvYml0cy8g OCA8MHgyMD47Cj4gKwkJCW1heC1jdXIgPSAvYml0cy8gOCA8MHg2MD47Cj4gKwkJfTsKPiArCj4g KwkJY2hhbjMgewo+ICsJCQljaGFuLW5hbWUgPSAiVyI7Cj4gKwkJCWxlZC1jdXIgPSAvYml0cy8g OCA8MHgwPjsKPiArCQkJbWF4LWN1ciA9IC9iaXRzLyA4IDwweDA+Owo+ICsJCX07Cj4gKwl9Owo+ ICsKPiArCXBmdXplMjAwQDggewoKcG1pY0A4Cgo+ICsJCWNvbXBhdGlibGUgPSAiZnNsLHBmdXpl MjAwIjsKPiArCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwo+ICsJCXBpbmN0cmwtMCA9IDwm cGluY3RybF9wbWljPjsKPiArCQlyZWcgPSA8MHg4PjsKPiArCj4gKwkJcmVndWxhdG9ycyB7Cj4g KwkJCXN3MWFfcmVnOiBzdzFhYiB7Cj4gKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwz MDAwMDA+Owo+ICsJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTg3NTAwMD47Cj4gKwkJ CQlyZWd1bGF0b3ItYm9vdC1vbjsKPiArCQkJCXJlZ3VsYXRvci1hbHdheXMtb247Cj4gKwkJCQly ZWd1bGF0b3ItcmFtcC1kZWxheSA9IDw2MjUwPjsKPiArCQkJfTsKPiArCj4gKwkJCXN3Ml9yZWc6 IHN3MiB7Cj4gKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw4MDAwMDA+Owo+ICsJCQkJ cmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47Cj4gKwkJCQlyZWd1bGF0b3ItYm9v dC1vbjsKPiArCQkJCXJlZ3VsYXRvci1hbHdheXMtb247Cj4gKwkJCX07Cj4gKwo+ICsJCQlzdzNh X3JlZzogc3czYSB7Cj4gKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw0MDAwMDA+Owo+ ICsJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTk3NTAwMD47Cj4gKwkJCQlyZWd1bGF0 b3ItYm9vdC1vbjsKPiArCQkJCXJlZ3VsYXRvci1hbHdheXMtb247Cj4gKwkJCX07Cj4gKwo+ICsJ CQlzdzNiX3JlZzogc3czYiB7Cj4gKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw0MDAw MDA+Owo+ICsJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTk3NTAwMD47Cj4gKwkJCQly ZWd1bGF0b3ItYm9vdC1vbjsKPiArCQkJCXJlZ3VsYXRvci1hbHdheXMtb247Cj4gKwkJCX07Cj4g Kwo+ICsJCQlzd2JzdF9yZWc6IHN3YnN0IHsKPiArCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0 ID0gPDUwMDAwMDA+Owo+ICsJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8NTE1MDAwMD47 Cj4gKwkJCX07Cj4gKwo+ICsJCQlzbnZzX3JlZzogdnNudnMgewo+ICsJCQkJcmVndWxhdG9yLW1p bi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47Cj4gKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9 IDwzMDAwMDAwPjsKPiArCQkJCXJlZ3VsYXRvci1ib290LW9uOwo+ICsJCQkJcmVndWxhdG9yLWFs d2F5cy1vbjsKPiArCQkJfTsKPiArCj4gKwkJCXZyZWZfcmVnOiB2cmVmZGRyIHsKPiArCQkJCXJl Z3VsYXRvci1ib290LW9uOwo+ICsJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKPiArCQkJfTsKPiAr Cj4gKwkJCXZnZW4xX3JlZzogdmdlbjEgewo+ICsJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQg PSA8ODAwMDAwPjsKPiArCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE1NTAwMDA+Owo+ ICsJCQl9Owo+ICsKPiArCQkJdmdlbjJfcmVnOiB2Z2VuMiB7Cj4gKwkJCQlyZWd1bGF0b3ItbWlu LW1pY3Jvdm9sdCA9IDw4MDAwMDA+Owo+ICsJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8 MTU1MDAwMD47Cj4gKwkJCX07Cj4gKwo+ICsJCQl2Z2VuM19yZWc6IHZnZW4zIHsKPiArCQkJCXJl Z3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+Owo+ICsJCQkJcmVndWxhdG9yLW1heC1t aWNyb3ZvbHQgPSA8MzMwMDAwMD47Cj4gKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOwo+ICsJCQl9 Owo+ICsKPiArCQkJdmdlbjRfcmVnOiB2Z2VuNCB7Cj4gKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jv dm9sdCA9IDwxODAwMDAwPjsKPiArCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAw MDA+Owo+ICsJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKPiArCQkJfTsKPiArCj4gKwkJCXZnZW41 X3JlZzogdmdlbjUgewo+ICsJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTgwMDAwMD47 Cj4gKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKPiArCQkJCXJlZ3Vs YXRvci1hbHdheXMtb247Cj4gKwkJCX07Cj4gKwo+ICsJCQl2Z2VuNl9yZWc6IHZnZW42IHsKPiAr CQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+Owo+ICsJCQkJcmVndWxhdG9y LW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47Cj4gKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOwo+ ICsJCQl9Owo+ICsJCX07Cj4gKwl9Owo+ICt9Owo+ICsKPiArJmlvbXV4YyB7Cj4gKwlwaW5jdHJs X2VuZXQ6IGVuZXRncnAgewo+ICsJCWZzbCxwaW5zID0gPAo+ICsJCQlNWDZRRExfUEFEX0VORVRf TURJT19fRU5FVF9NRElPCQkweDFCMDIwCj4gKwkJCU1YNlFETF9QQURfRU5FVF9NRENfX0VORVRf TURDCQkweDFCMDIwCj4gKwkJCU1YNlFETF9QQURfUkdNSUlfVFhDX19SR01JSV9UWEMJCTB4MUIw MjAKPiArCQkJTVg2UURMX1BBRF9SR01JSV9URDBfX1JHTUlJX1REMAkJMHgxQjAyMAo+ICsJCQlN WDZRRExfUEFEX1JHTUlJX1REMV9fUkdNSUlfVEQxCQkweDFCMDIwCj4gKwkJCU1YNlFETF9QQURf UkdNSUlfVEQyX19SR01JSV9URDIJCTB4MUIwMjAKPiArCQkJTVg2UURMX1BBRF9SR01JSV9URDNf X1JHTUlJX1REMwkJMHgxQjAyMAo+ICsJCQlNWDZRRExfUEFEX1JHTUlJX1RYX0NUTF9fUkdNSUlf VFhfQ1RMCTB4MUIwMjAKPiArCQkJTVg2UURMX1BBRF9SR01JSV9SWENfX1JHTUlJX1JYQwkJMHgx QjAyMAo+ICsJCQlNWDZRRExfUEFEX1JHTUlJX1JEMF9fUkdNSUlfUkQwCQkweDFCMDIwCj4gKwkJ CU1YNlFETF9QQURfUkdNSUlfUkQxX19SR01JSV9SRDEJCTB4MUIwMjAKPiArCQkJTVg2UURMX1BB RF9SR01JSV9SRDJfX1JHTUlJX1JEMgkJMHgxQjAyMAo+ICsJCQlNWDZRRExfUEFEX1JHTUlJX1JE M19fUkdNSUlfUkQzCQkweDFCMDIwCj4gKwkJCU1YNlFETF9QQURfUkdNSUlfUlhfQ1RMX19SR01J SV9SWF9DVEwJMHgxQjAyMAo+ICsJCQlNWDZRRExfUEFEX0VORVRfUkVGX0NMS19fRU5FVF9UWF9D TEsJMHgxQjAxMAo+ICsJCQlNWDZRRExfUEFEX0dQSU9fMTZfX0VORVRfUkVGX0NMSwkweDFCMDEw Cj4gKwkJCU1YNlFETF9QQURfRU5FVF9DUlNfRFZfX0dQSU8xX0lPMjUJMHgxQjA5OAo+ICsJCT47 Cj4gKwl9Owo+ICsKPiArCXBpbmN0cmxfaTJjMjogaTJjMmdycCB7Cj4gKwkJZnNsLHBpbnMgPSA8 Cj4gKwkJCU1YNlFETF9QQURfS0VZX0NPTDNfX0kyQzJfU0NMCTB4NDAwMWI4OTkKPiArCQkJTVg2 UURMX1BBRF9LRVlfUk9XM19fSTJDMl9TREEJMHg0MDAxYjg5OQo+ICsJCT47Cj4gKwl9Owo+ICsK PiArCXBpbmN0cmxfaXB1MTogaXB1MWdycCB7Cj4gKwkJZnNsLHBpbnMgPSA8Cj4gKwkJCU1YNlFE TF9QQURfREkwX0RJU1BfQ0xLX19JUFUxX0RJMF9ESVNQX0NMSwkweDEwCj4gKwkJCU1YNlFETF9Q QURfREkwX1BJTjJfX0lQVTFfREkwX1BJTjAyCQkweDEwCj4gKwkJCU1YNlFETF9QQURfREkwX1BJ TjNfX0lQVTFfREkwX1BJTjAzCQkweDEwCj4gKwkJCU1YNlFETF9QQURfRElTUDBfREFUMF9fSVBV MV9ESVNQMF9EQVRBMDAJMHgxMAo+ICsJCQlNWDZRRExfUEFEX0RJU1AwX0RBVDFfX0lQVTFfRElT UDBfREFUQTAxCTB4MTAKPiArCQkJTVg2UURMX1BBRF9ESVNQMF9EQVQyX19JUFUxX0RJU1AwX0RB VEEwMgkweDEwCj4gKwkJCU1YNlFETF9QQURfRElTUDBfREFUM19fSVBVMV9ESVNQMF9EQVRBMDMJ MHgxMAo+ICsJCQlNWDZRRExfUEFEX0RJU1AwX0RBVDRfX0lQVTFfRElTUDBfREFUQTA0CTB4MTAK PiArCQkJTVg2UURMX1BBRF9ESVNQMF9EQVQ1X19JUFUxX0RJU1AwX0RBVEEwNQkweDEwCj4gKwkJ CU1YNlFETF9QQURfRElTUDBfREFUNl9fSVBVMV9ESVNQMF9EQVRBMDYJMHgxMAo+ICsJCQlNWDZR RExfUEFEX0RJU1AwX0RBVDdfX0lQVTFfRElTUDBfREFUQTA3CTB4MTAKPiArCQkJTVg2UURMX1BB RF9ESVNQMF9EQVQ4X19JUFUxX0RJU1AwX0RBVEEwOAkweDEwCj4gKwkJCU1YNlFETF9QQURfRElT UDBfREFUOV9fSVBVMV9ESVNQMF9EQVRBMDkJMHgxMAo+ICsJCQlNWDZRRExfUEFEX0RJU1AwX0RB VDEwX19JUFUxX0RJU1AwX0RBVEExMAkweDEwCj4gKwkJCU1YNlFETF9QQURfRElTUDBfREFUMTFf X0lQVTFfRElTUDBfREFUQTExCTB4MTAKPiArCQkJTVg2UURMX1BBRF9ESVNQMF9EQVQxMl9fSVBV MV9ESVNQMF9EQVRBMTIJMHgxMAo+ICsJCQlNWDZRRExfUEFEX0RJU1AwX0RBVDEzX19JUFUxX0RJ U1AwX0RBVEExMwkweDEwCj4gKwkJCU1YNlFETF9QQURfRElTUDBfREFUMTRfX0lQVTFfRElTUDBf REFUQTE0CTB4MTAKPiArCQkJTVg2UURMX1BBRF9ESVNQMF9EQVQxNV9fSVBVMV9ESVNQMF9EQVRB MTUJMHgxMAo+ICsJCQlNWDZRRExfUEFEX0RJU1AwX0RBVDE2X19JUFUxX0RJU1AwX0RBVEExNgkw eDEwCj4gKwkJCU1YNlFETF9QQURfRElTUDBfREFUMTdfX0lQVTFfRElTUDBfREFUQTE3CTB4MTAK PiArCQkJTVg2UURMX1BBRF9ESVNQMF9EQVQxOF9fSVBVMV9ESVNQMF9EQVRBMTgJMHgxMAo+ICsJ CQlNWDZRRExfUEFEX0RJU1AwX0RBVDE5X19JUFUxX0RJU1AwX0RBVEExOQkweDEwCj4gKwkJCU1Y NlFETF9QQURfRElTUDBfREFUMjBfX0lQVTFfRElTUDBfREFUQTIwCTB4MTAKPiArCQkJTVg2UURM X1BBRF9ESVNQMF9EQVQyMV9fSVBVMV9ESVNQMF9EQVRBMjEJMHgxMAo+ICsJCQlNWDZRRExfUEFE X0RJU1AwX0RBVDIyX19JUFUxX0RJU1AwX0RBVEEyMgkweDEwCj4gKwkJCU1YNlFETF9QQURfRElT UDBfREFUMjNfX0lQVTFfRElTUDBfREFUQTIzCTB4MTAKPiArCQk+Owo+ICsJfTsKPiArCj4gKwlw aW5jdHJsX3BjaWU6IHBjaWVncnAgewo+ICsJCWZzbCxwaW5zID0gPAo+ICsJCQlNWDZRRExfUEFE X0dQSU9fMTdfX0dQSU83X0lPMTIJCTB4MWIwOTgKPiArCQkJTVg2UURMX1BBRF9LRVlfQ09MNF9f R1BJTzRfSU8xNAkJMHgxYjA5OAo+ICsJCQlNWDZRRExfUEFEX0NTSTBfREFUQV9FTl9fR1BJTzVf SU8yMAkweDFiMDk4Cj4gKwkJPjsKPiArCX07Cj4gKwo+ICsJcGluY3RybF9wY2llX3JlZzogcGNp ZXJlZ2dycCB7Cj4gKwkJZnNsLHBpbnMgPSA8Cj4gKwkJCU1YNlFETF9QQURfRUlNX0QxOV9fR1BJ TzNfSU8xOQkJMHgxYjA5OAo+ICsJCT47Cj4gKwl9Owo+ICsKPiArCXBpbmN0cmxfcG1pYzogcG1p Y2dycCB7Cj4gKwkJZnNsLHBpbnMgPSA8Cj4gKwkJCU1YNlFETF9QQURfR1BJT18xOF9fR1BJTzdf SU8xMwkJMHgxYjA5OAo+ICsJCT47Cj4gKwl9Owo+ICsKPiArCXBpbmN0cmxfYmFja2xpZ2h0X3B3 bTogcHdtMWdycCB7Cj4gKwkJZnNsLHBpbnMgPSA8Cj4gKwkJCU1YNlFETF9QQURfR1BJT185X19Q V00xX09VVAkweDgKPiArCQk+Owo+ICsJfTsKPiArCj4gKwlwaW5jdHJsX3VhcnQxOiB1YXJ0MWdy cCB7Cj4gKwkJZnNsLHBpbnMgPSA8Cj4gKwkJCU1YNlFETF9QQURfQ1NJMF9EQVQxMF9fVUFSVDFf VFhfREFUQQkweDFiMGE4Cj4gKwkJCU1YNlFETF9QQURfQ1NJMF9EQVQxMV9fVUFSVDFfUlhfREFU QQkweDFiMGE4Cj4gKwkJPjsKPiArCX07Cj4gKwo+ICsJcGluY3RybF91c2JoMTogdXNiaDFncnAg ewo+ICsJCWZzbCxwaW5zID0gPAo+ICsJCQlNWDZRRExfUEFEX0VJTV9EMzBfX1VTQl9IMV9PQwkJ MHgxYjA5OAo+ICsJCT47Cj4gKwl9Owo+ICsKPiArCXBpbmN0cmxfdXNiaDFfdmJ1czogdXNiaDEt dmJ1cyB7Cj4gKwkJZnNsLHBpbnMgPSA8Cj4gKwkJCU1YNlFETF9QQURfRU5FVF9UWEQxX19HUElP MV9JTzI5CTB4OTgKPiArCQk+Owo+ICsJfTsKPiArCj4gKwlwaW5jdHJsX3VzYm90ZzogdXNib3Rn Z3JwIHsKPiArCQlmc2wscGlucyA9IDwKPiArCQkJTVg2UURMX1BBRF9FTkVUX1JYX0VSX19VU0Jf T1RHX0lECTB4MWIwOTgKPiArCQkJTVg2UURMX1BBRF9FSU1fRDIxX19VU0JfT1RHX09DCQkweDFi MDk4Cj4gKwkJPjsKPiArCX07Cj4gKwo+ICsJcGluY3RybF91c2JvdGdfdmJ1czogdXNib3RnLXZi dXMgewo+ICsJCWZzbCxwaW5zID0gPAo+ICsJCQlNWDZRRExfUEFEX0VJTV9EMjJfX0dQSU8zX0lP MjIJMHg5OAo+ICsJCT47Cj4gKwl9Owo+ICsKPiArCXBpbmN0cmxfdXNkaGMzOiB1c2RoYzNncnAg ewo+ICsJCWZzbCxwaW5zID0gPAo+ICsJCQlNWDZRRExfUEFEX0VJTV9BMTZfX0dQSU8yX0lPMjIJ MHgxYjAxOAo+ICsJCQlNWDZRRExfUEFEX1NEM19SU1RfX0dQSU83X0lPMDgJMHgxYjAxOAo+ICsJ CQlNWDZRRExfUEFEX1NEM19DTURfX1NEM19DTUQJMHgxNzA1OQo+ICsJCQlNWDZRRExfUEFEX1NE M19DTEtfX1NEM19DTEsJMHgxMDA1OQo+ICsJCQlNWDZRRExfUEFEX1NEM19EQVQwX19TRDNfREFU QTAJMHgxNzA1OQo+ICsJCQlNWDZRRExfUEFEX1NEM19EQVQxX19TRDNfREFUQTEJMHgxNzA1OQo+ ICsJCQlNWDZRRExfUEFEX1NEM19EQVQyX19TRDNfREFUQTIJMHgxNzA1OQo+ICsJCQlNWDZRRExf UEFEX1NEM19EQVQzX19TRDNfREFUQTMJMHgxNzA1OQo+ICsJCT47Cj4gKwl9Owo+ICsKPiArCXBp bmN0cmxfdXNkaGM0OiB1c2RoYzRncnAgewo+ICsJCWZzbCxwaW5zID0gPAo+ICsJCQlNWDZRRExf UEFEX1NENF9DTURfX1NENF9DTUQJMHgxZjA2OQo+ICsJCQlNWDZRRExfUEFEX1NENF9DTEtfX1NE NF9DTEsJMHgxMDA2OQo+ICsJCQlNWDZRRExfUEFEX1NENF9EQVQwX19TRDRfREFUQTAJMHgxNzA2 OQo+ICsJCQlNWDZRRExfUEFEX1NENF9EQVQxX19TRDRfREFUQTEJMHgxNzA2OQo+ICsJCQlNWDZR RExfUEFEX1NENF9EQVQyX19TRDRfREFUQTIJMHgxNzA2OQo+ICsJCQlNWDZRRExfUEFEX1NENF9E QVQzX19TRDRfREFUQTMJMHgxNzA2OQo+ICsJCQlNWDZRRExfUEFEX1NENF9EQVQ0X19TRDRfREFU QTQJMHgxNzA2OQo+ICsJCQlNWDZRRExfUEFEX1NENF9EQVQ1X19TRDRfREFUQTUJMHgxNzA2OQo+ ICsJCQlNWDZRRExfUEFEX1NENF9EQVQ2X19TRDRfREFUQTYJMHgxNzA2OQo+ICsJCQlNWDZRRExf UEFEX1NENF9EQVQ3X19TRDRfREFUQTcJMHgxNzA2OQo+ICsJCT47Cj4gKwl9Owo+ICsKPiArCXBp bmN0cmxfd2RvZzogd2RvZ2dycCB7Cj4gKwkJZnNsLHBpbnMgPSA8Cj4gKwkJCU1YNlFETF9QQURf R1BJT18xX19XRE9HMl9CCTB4MWIwYjAKPiArCQk+Owo+ICsJfTsKPiArfTsKPiArCj4gKyZpcHUx X2RpMF9kaXNwMCB7Cj4gKwlyZW1vdGUtZW5kcG9pbnQgPSA8JmxjZF9kaXNwbGF5X2luPjsKPiAr fTsKPiArCj4gKyZwY2llIHsKPiArCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4gKwlwaW5j dHJsLTAgPSA8JnBpbmN0cmxfcGNpZT47Cj4gKwlyZXNldC1ncGlvID0gPCZncGlvNyAxMiBHUElP X0FDVElWRV9MT1c+Owo+ICsJdnBjaWUtc3VwcGx5ID0gPCZyZWdfcGNpZT47Cj4gKwlzdGF0dXMg PSAiZGlzYWJsZWQiOwo+ICt9Owo+ICsKPiArJnB3bTEgewo+ICsJI3B3bS1jZWxscyA9IDwzPjsK PiArCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4gKwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxf YmFja2xpZ2h0X3B3bT47Cj4gKwlzdGF0dXMgPSAiZGlzYWJsZWQiOwo+ICt9Owo+ICsKPiArJnVh cnQxIHsKPiArCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4gKwlwaW5jdHJsLTAgPSA8JnBp bmN0cmxfdWFydDE+Owo+ICsJc3RhdHVzID0gIm9rYXkiOwo+ICt9Owo+ICsKPiArJnVzYmgxIHsK PiArCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7Cj4gKwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxf dXNiaDE+Owo+ICsJdmJ1cy1zdXBwbHkgPSA8JnJlZ191c2JfaDFfdmJ1cz47Cj4gKwlzdGF0dXMg PSAiZGlzYWJsZWQiOwo+ICt9Owo+ICsKPiArJnVzYm90ZyB7Cj4gKwlwaW5jdHJsLW5hbWVzID0g ImRlZmF1bHQiOwo+ICsJcGluY3RybC0wID0gPCZwaW5jdHJsX3VzYm90Zz47Cj4gKwl2YnVzLXN1 cHBseSA9IDwmcmVnX3VzYl9vdGdfdmJ1cz47Cj4gKwlzcnAtZGlzYWJsZTsKPiArCWhucC1kaXNh YmxlOwo+ICsJYWRwLWRpc2FibGU7Cj4gKwlzdGF0dXMgPSAib2theSI7Cj4gK307Cj4gKwo+ICsm dXNicGh5MSB7Cj4gKwlmc2wsdHgtZC1jYWwgPSA8MTA2PjsKPiArCXN0YXR1cyA9ICJva2F5IjsK PiArfTsKPiArCj4gKyZ1c2JwaHkyIHsKPiArCWZzbCx0eC1kLWNhbCA9IDwxMDk+Owo+ICsJc3Rh dHVzID0gImRpc2FibGVkIjsKPiArfTsKPiArCj4gKyZ1c2RoYzMgewo+ICsJcGluY3RybC1uYW1l cyA9ICJkZWZhdWx0IjsKPiArCXBpbmN0cmwtMCA9IDwmcGluY3RybF91c2RoYzM+Owo+ICsJYnVz LXdpZHRoID0gPDQ+Owo+ICsJY2QtZ3Bpb3MgPSA8JmdwaW83IDggR1BJT19BQ1RJVkVfTE9XPjsK PiArCXdwLWdwaW9zID0gPCZncGlvMiAyMiBHUElPX0FDVElWRV9ISUdIPjsKPiArCW5vLTEtOC12 Owo+ICsJa2VlcC1wb3dlci1pbi1zdXNwZW5kOwo+ICsJZW5hYmxlLXNkaW8td2FrZXVwOwo+ICsJ dm1tYy1zdXBwbHkgPSA8JnN3Ml9yZWc+Owo+ICsJc3RhdHVzID0gImRpc2FibGVkIjsKPiArfTsK PiArCj4gKyZ1c2RoYzQgewo+ICsJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKPiArCXBpbmN0 cmwtMCA9IDwmcGluY3RybF91c2RoYzQ+Owo+ICsJYnVzLXdpZHRoID0gPDg+Owo+ICsJbm9uLXJl bW92YWJsZTsKPiArCW5vLTEtOC12Owo+ICsJa2VlcC1wb3dlci1pbi1zdXNwZW5kOwo+ICsJdm1t Yy1zdXBwbHkgPSA8JnN3Ml9yZWc+Owo+ICsJc3RhdHVzID0gIm9rYXkiOwo+ICt9Owo+ICsKPiAr Jndkb2cxIHsKPiArCXN0YXR1cyA9ICJkaXNhYmxlZCI7Cj4gK307Cj4gKwo+ICsmd2RvZzIgewo+ ICsJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKPiArCXBpbmN0cmwtMCA9IDwmcGluY3RybF93 ZG9nPjsKPiArCWZzbCxleHQtcmVzZXQtb3V0cHV0Owo+ICsJc3RhdHVzID0gIm9rYXkiOwo+ICt9 Owo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9pbXg2ZGwteWFwcDQtZHJhY28uZHRz IGIvYXJjaC9hcm0vYm9vdC9kdHMvaW14NmRsLXlhcHA0LWRyYWNvLmR0cwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZmI2MmYzMQo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9hcmNoL2FybS9ib290L2R0cy9pbXg2ZGwteWFwcDQtZHJhY28uZHRzCj4gQEAgLTAsMCArMSw1 NyBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvLwo+ICsvLyBD b3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBZIFNvZnQgQ29ycG9yYXRpb24sIGEucy4KPiArCj4gKy9k dHMtdjEvOwo+ICsKPiArI2luY2x1ZGUgImlteDZkbC5kdHNpIgo+ICsjaW5jbHVkZSAiaW14NmRs LXlhcHA0LWNvbW1vbi5kdHNpIgo+ICsKPiArLyB7Cj4gKwltb2RlbCA9ICJZIFNvZnQgSU9UQSBE cmFjbyBpLk1YNlNvbG8gYm9hcmQiOwo+ICsJY29tcGF0aWJsZSA9ICJ5c29mdCxpbXg2ZGwteWFw cDQtZHJhY28iLCAiZnNsLGlteDZkbCI7CgpJcyB0aGlzIGRvY3VtZW50ZWQ/Cgo+ICsKPiArCWNw dXMgewo+ICsJCS9kZWxldGUtbm9kZS8gY3B1QDE7Cj4gKwl9Owo+ICsKPiArCW1lbW9yeUAxMDAw MDAwMCB7Cj4gKwkJcmVnID0gPDB4MTAwMDAwMDAgMHgyMDAwMDAwMD47Cj4gKwl9Owo+ICt9Owo+ ICsKPiArJmJhY2tsaWdodCB7Cj4gKwlzdGF0dXMgPSAib2theSI7Cj4gK307Cj4gKwo+ICsmbGNk X2Rpc3BsYXkgewo+ICsJc3RhdHVzID0gIm9rYXkiOwo+ICt9Owo+ICsKPiArJmxlZHMgewo+ICsJ c3RhdHVzID0gIm9rYXkiOwo+ICt9Owo+ICsKPiArJnBhbmVsIHsKPiArCXN0YXR1cyA9ICJva2F5 IjsKPiArfTsKPiArCj4gKyZwd20xIHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArfTsKPiArCj4g KyZyZWdfdXNiX2gxX3ZidXMgewo+ICsJc3RhdHVzID0gIm9rYXkiOwo+ICt9Owo+ICsKPiArJnVz YmgxIHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArfTsKPiArCj4gKyZ1c2JwaHkyIHsKPiArCXN0 YXR1cyA9ICJva2F5IjsKPiArfTsKPiArCj4gKyZ1c2RoYzMgewo+ICsJc3RhdHVzID0gIm9rYXki Owo+ICt9Owo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9pbXg2ZGwteWFwcDQtaHlk cmEuZHRzIGIvYXJjaC9hcm0vYm9vdC9kdHMvaW14NmRsLXlhcHA0LWh5ZHJhLmR0cwo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNzk5ZmI0Ywo+IC0tLSAvZGV2L251bGwK PiArKysgYi9hcmNoL2FybS9ib290L2R0cy9pbXg2ZGwteWFwcDQtaHlkcmEuZHRzCj4gQEAgLTAs MCArMSwzMyBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvLwo+ ICsvLyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBZIFNvZnQgQ29ycG9yYXRpb24sIGEucy4KPiAr Cj4gKy9kdHMtdjEvOwo+ICsKPiArI2luY2x1ZGUgImlteDZkbC5kdHNpIgo+ICsjaW5jbHVkZSAi aW14NmRsLXlhcHA0LWNvbW1vbi5kdHNpIgo+ICsKPiArLyB7Cj4gKwltb2RlbCA9ICJZIFNvZnQg SU9UQSBIeWRyYSBpLk1YNkR1YWxMaXRlIGJvYXJkIjsKPiArCWNvbXBhdGlibGUgPSAieXNvZnQs aW14NmRsLXlhcHA0LWh5ZHJhIiwgImZzbCxpbXg2ZGwiOwo+ICsKPiArCW1lbW9yeUAxMDAwMDAw MCB7Cj4gKwkJcmVnID0gPDB4MTAwMDAwMDAgMHg4MDAwMDAwMD47Cj4gKwl9Owo+ICt9Owo+ICsK PiArJmxlZHMgewo+ICsJc3RhdHVzID0gIm9rYXkiOwo+ICt9Owo+ICsKPiArJnBjaWUgewo+ICsJ c3RhdHVzID0gIm9rYXkiOwo+ICt9Owo+ICsKPiArJnJlZ19wY2llIHsKPiArCXN0YXR1cyA9ICJv a2F5IjsKPiArfTsKPiArCj4gKyZ1c2RoYzMgewo+ICsJc3RhdHVzID0gIm9rYXkiOwo+ICt9Owo+ IGRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9pbXg2ZGwteWFwcDQtdXJzYS5kdHMgYi9h cmNoL2FybS9ib290L2R0cy9pbXg2ZGwteWFwcDQtdXJzYS5kdHMKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLjIzYWY5NzIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJj aC9hcm0vYm9vdC9kdHMvaW14NmRsLXlhcHA0LXVyc2EuZHRzCj4gQEAgLTAsMCArMSw1MyBAQAo+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvLwo+ICsvLyBDb3B5cmln aHQgKEMpIDIwMTUtMjAxOCBZIFNvZnQgQ29ycG9yYXRpb24sIGEucy4KPiArCj4gKy9kdHMtdjEv Owo+ICsKPiArI2luY2x1ZGUgImlteDZkbC5kdHNpIgo+ICsjaW5jbHVkZSAiaW14NmRsLXlhcHA0 LWNvbW1vbi5kdHNpIgo+ICsKPiArLyB7Cj4gKwltb2RlbCA9ICJZIFNvZnQgSU9UQSBVcnNhIGku TVg2U29sbyBib2FyZCI7Cj4gKwljb21wYXRpYmxlID0gInlzb2Z0LGlteDZkbC15YXBwNC11cnNh IiwgImZzbCxpbXg2ZGwiOwo+ICsKPiArCWNwdXMgewo+ICsJCS9kZWxldGUtbm9kZS8gY3B1QDE7 Cj4gKwl9Owo+ICsKPiArCW1lbW9yeUAxMDAwMDAwMCB7Cj4gKwkJcmVnID0gPDB4MTAwMDAwMDAg MHgyMDAwMDAwMD47Cj4gKwl9Owo+ICt9Owo+ICsKPiArJmJhY2tsaWdodCB7Cj4gKwlzdGF0dXMg PSAib2theSI7Cj4gK307Cj4gKwo+ICsmbGNkX2Rpc3BsYXkgewo+ICsJc3RhdHVzID0gIm9rYXki Owo+ICt9Owo+ICsKPiArJnBhbmVsIHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArfTsKPiArCj4g KyZwd20xIHsKPiArCXN0YXR1cyA9ICJva2F5IjsKPiArfTsKPiArCj4gKyZyZWdfdXNiX2gxX3Zi dXMgewo+ICsJc3RhdHVzID0gIm9rYXkiOwo+ICt9Owo+ICsKPiArJnN3aXRjaF9wb3J0cyB7Cj4g KwkvZGVsZXRlLW5vZGUvIHBvcnRAMjsKPiArfTsKPiArCj4gKyZ1c2JoMSB7Cj4gKwlzdGF0dXMg PSAib2theSI7Cj4gK307Cj4gKwo+ICsmdXNicGh5MiB7Cj4gKwlzdGF0dXMgPSAib2theSI7Cj4g K307Cj4gLS0gCj4gMi4xLjQKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2Vy bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==