/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/*
 * SCSS variables defining a range of font sizes.
 *
 * These are defined in `rem` so that they scale with the `font-size` of the root element (which is adjustable via the
 * "Font size" setting). They exist to make the job of converting designs (which tend to be based in pixels) into CSS
 * easier.
 *
 * That means that, slightly confusingly, `$font-10px` is only *actually* 10px at the default font size: at a base
 * `font-size` of 15, it is actually 15px.
 */

/* Path from root SCSS file (such as `light.pcss`) to `res` dir in the source tree */

/* This value is overridden by external themes in `element-web`. */

/* the 'src' links are relative to the bundle.css, which is in a subdirectory.
 */

/* Inter unexpectedly contains various codepoints which collide with emoji, even
   when variation-16 is applied to request the emoji variant.  From eyeballing
   the emoji picker, these are: 20e3, 23cf, 24c2, 25a0-25c1, 2665, 2764, 2b06, 2b1c.
   Therefore we define a unicode-range to load which excludes the glyphs
   (to avoid having to maintain a fork of Inter). */

@font-face {
    font-family: "Inter";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    unicode-range: U+0000-20e2, U+20e4-23ce, U+23d0-24c1, U+24c3-259f, U+25c2-2664, U+2666-2763, U+2765-2b05,
    U+2b07-2b1b, U+2b1d-10FFFF;
    src: url(../../fonts/Inter/Inter-Regular.bed7225.woff2) format("woff2"),
        url(../../fonts/Inter/Inter-Regular.bf50ebd.woff) format("woff");
}

@font-face {
    font-family: "Inter";
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    unicode-range: U+0000-20e2, U+20e4-23ce, U+23d0-24c1, U+24c3-259f, U+25c2-2664, U+2666-2763, U+2765-2b05,
    U+2b07-2b1b, U+2b1d-10FFFF;
    src: url(../../fonts/Inter/Inter-Italic.faebbae.woff2) format("woff2"),
        url(../../fonts/Inter/Inter-Italic.5d145f0.woff) format("woff");
}

@font-face {
    font-family: "Inter";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    unicode-range: U+0000-20e2, U+20e4-23ce, U+23d0-24c1, U+24c3-259f, U+25c2-2664, U+2666-2763, U+2765-2b05,
    U+2b07-2b1b, U+2b1d-10FFFF;
    src: url(../../fonts/Inter/Inter-Medium.6be58ea.woff2) format("woff2"),
        url(../../fonts/Inter/Inter-Medium.3a921b8.woff) format("woff");
}

@font-face {
    font-family: "Inter";
    font-style: italic;
    font-weight: 500;
    font-display: swap;
    unicode-range: U+0000-20e2, U+20e4-23ce, U+23d0-24c1, U+24c3-259f, U+25c2-2664, U+2666-2763, U+2765-2b05,
    U+2b07-2b1b, U+2b1d-10FFFF;
    src: url(../../fonts/Inter/Inter-MediumItalic.2bbf830.woff2) format("woff2"),
        url(../../fonts/Inter/Inter-MediumItalic.b247e87.woff) format("woff");
}

@font-face {
    font-family: "Inter";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    unicode-range: U+0000-20e2, U+20e4-23ce, U+23d0-24c1, U+24c3-259f, U+25c2-2664, U+2666-2763, U+2765-2b05,
    U+2b07-2b1b, U+2b1d-10FFFF;
    src: url(../../fonts/Inter/Inter-SemiBold.d5a91eb.woff2) format("woff2"),
        url(../../fonts/Inter/Inter-SemiBold.14478d3.woff) format("woff");
}

@font-face {
    font-family: "Inter";
    font-style: italic;
    font-weight: 600;
    font-display: swap;
    unicode-range: U+0000-20e2, U+20e4-23ce, U+23d0-24c1, U+24c3-259f, U+25c2-2664, U+2666-2763, U+2765-2b05,
    U+2b07-2b1b, U+2b1d-10FFFF;
    src: url(../../fonts/Inter/Inter-SemiBoldItalic.17942dd.woff2) format("woff2"),
        url(../../fonts/Inter/Inter-SemiBoldItalic.72033b9.woff) format("woff");
}

@font-face {
    font-family: "Inter";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    unicode-range: U+0000-20e2, U+20e4-23ce, U+23d0-24c1, U+24c3-259f, U+25c2-2664, U+2666-2763, U+2765-2b05,
    U+2b07-2b1b, U+2b1d-10FFFF;
    src: url(../../fonts/Inter/Inter-Bold.7824a90.woff2) format("woff2"),
        url(../../fonts/Inter/Inter-Bold.c0bf89b.woff) format("woff");
}

@font-face {
    font-family: "Inter";
    font-style: italic;
    font-weight: 700;
    font-display: swap;
    unicode-range: U+0000-20e2, U+20e4-23ce, U+23d0-24c1, U+24c3-259f, U+25c2-2664, U+2666-2763, U+2765-2b05,
    U+2b07-2b1b, U+2b1d-10FFFF;
    src: url(../../fonts/Inter/Inter-BoldItalic.57f0f97.woff2) format("woff2"),
        url(../../fonts/Inter/Inter-BoldItalic.e151f4f.woff) format("woff");
}

/* latin-ext */

@font-face {
    font-family: "Inconsolata";
    font-style: normal;
    font-weight: 400;
    src: local("Inconsolata Regular"), local("Inconsolata-Regular"),
        url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlX5qhExfHwNJU.97270d9.woff2) format("woff2");
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */

@font-face {
    font-family: "Inconsolata";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: local("Inconsolata Regular"), local("Inconsolata-Regular"),
        url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlZ5qhExfHw.cb56c56.woff2) format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC,
        U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* latin-ext */

@font-face {
    font-family: "Inconsolata";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: local("Inconsolata Bold"), local("Inconsolata-Bold"),
        url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71n5_zaDpwm80E.ac17e29.woff2) format("woff2");
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */

@font-face {
    font-family: "Inconsolata";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: local("Inconsolata Bold"), local("Inconsolata-Bold"),
        url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71p5_zaDpwm.4e23ceb.woff2) format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC,
        U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Nunito and Inter lacks combining diacritics, so these will fall through
   to the next font. Helevetica's diacritics sometimes do not combine
   nicely (on OSX, at least) and result in a huge horizontal mess.
   Arial empirically gets it right, hence prioritising Arial here. */

/* We fall through to Twemoji for emoji rather than falling through
   to native Emoji fonts (if any) to ensure cross-browser consistency */

/* Noto Color Emoji contains digits, in fixed-width, therefore causing
   digits in flowed text to stand out.
   TODO: Consider putting all emoji fonts to the end rather than the front. */

/* Colors from Figma Compound https://www.figma.com/file/X4XTH9iS2KGJ2wFKDqkyed/Compound?node-id=559%3A120 */

/* ******************** */

/* XXX: workaround for Safari 15.3 linear-gradient bug */

/* ******************** */

/* Reused Figma non-compound colors */

/* ******************** */

/* ******************** */

/* Theme specific colors */

/* ******************** */

/* ******************** */

/* Colors that aren't in Figma and are theme specific - we need to get rid of these */

/* ******************** */

/* ******************** */

/* Colors that aren't in Figma - we need to get rid of these */

/* ******************** */

/* ******************** */

/* Blockquote */

/* ******************** */

/* ******************** */

/* Tooltip */

/* ******************** */

/* ******************** */

/* Widget */

/* ******************** */

/* ******************** */

/* Menu */

/* ******************** */

/* ******************** */

/* Settings */

/* ******************** */

/* ******************** */

/* Room */

/* ******************** */

/* ******************** */

/* RoomHeader */

/* ******************** */

/* ******************** */

/* Rich-text-editor */

/* ******************** */

/* ******************** */

/* Presence */

/* ******************** */

/* ******************** */

/* Inputs */

/* ******************** */

/* ******************** */

/* Dialog */

/* ******************** */

/* ******************** */

/* ImageBody */

/* ******************** */

/* ******************** */

/* RoomList */

/* ******************** */

/* ******************** */

/* e2e */

/* ******************** */

/* ******************** */

/* Tabbed views */

/* ******************** */

/* ******************** */

/* Buttons */

/* ******************** */

/* TODO: Verify color */

/* ******************** */

/* Toggle switch */

/* ******************** */

/* ******************** */

/* Authpage */

/* ******************** */

/* ******************** */

/* Message action bar */

/* ******************** */

/* ******************** */

/* Reaction row */

/* ******************** */

/* ******************** */

/* Voice messages */

/* ******************** */

/* These two don't change between themes. They are the $alert, but we don't want */

/* custom themes to affect them by accident. */

/* ******************** */

/* Bubble tiles */

/* ******************** */

/* ******************** */

/* Lightbox */

/* ******************** */

/* ******************** */

/* VoIP */

/* ******************** */

/* XXX: Color from dark theme */

/* All of these are from dark theme */

/* This one is from light theme */

/* ******************** */

/* One-off colors */

/* ******************** */

/* ******************** */

/* One-off global colors - these apply to both themes */

/* ******************** */

/* ******************** */

/* blur amounts for left left panel (only for element theme) */

/* ******************** */

:root {
    --lp-background-blur: 40px;
}

/* ******************** */

/* Icon URLs */

/* ******************** */

/* ******************** */

/* Location sharing */

/* ******************** */

/* ******************** */

/* Voice Broadcast */

/* ******************** */

/* ******************** */

body {
    color-scheme: light;
}

/* ******************** */

/* diff highlight colors */

/* ******************** */

.hljs-addition {
    background: #dfd;
}

.hljs-deletion {
    background: #fdd;
}

/* ******************** */

/* Colors from Figma Compound https://www.figma.com/file/X4XTH9iS2KGJ2wFKDqkyed/Compound?node-id=559%3A741 */

/* ******************** */

/* XXX: workaround for Safari 15.3 linear-gradient bug */

/* This color is not intended for use in the app */

/* ******************** */

/* Reused Figma non-compound colors */

/* ******************** */

/* ******************** */

/* Theme specific colors */

/* ******************** */

/* ******************** */

/* Colors that aren't in Figma and are theme specific - we need to get rid of these */

/* ******************** */

/* ******************** */

/* Colors that aren't in Figma - we need to get rid of these */

/* ******************** */

/* ******************** */

/* Tooltip */

/* ******************** */

/* ******************** */

/* Widget */

/* ******************** */

/* ******************** */

/* Menu */

/* ******************** */

/* ******************** */

/* Settings */

/* ******************** */

/* ******************** */

/* Room */

/* ******************** */

/* ******************** */

/* RoomHeader */

/* ******************** */

/* ******************** */

/* Rich-text-editor */

/* ******************** */

/* ******************** */

/* Inputs */

/* ******************** */

/* ******************** */

/* Dialog */

/* ******************** */

/* ******************** */

/* RoomList */

/* ******************** */

/* ******************** */

/* Tabbed views */

/* ******************** */

/* ******************** */

/* Buttons */

/* ******************** */

/* ******************** */

/* Toggle switch */

/* ******************** */

/* ******************** */

/* Authpage */

/* ******************** */

/* ******************** */

/* Message action bar */

/* ******************** */

/* ******************** */

/* Reaction row */

/* ******************** */

/* ******************** */

/* Voice messages */

/* ******************** */

/* ******************** */

/* Bubble tiles */

/* ******************** */

/* ******************** */

/* Lightbox */

/* ******************** */

/* ******************** */

/* VoIP */

/* ******************** */

/* ******************** */

/* Location sharing */

/* ******************** */

/* ******************** */

/* Location sharing */

/* ******************** */

.maplibregl-ctrl-attrib-button {
    color: #15191e;
}

/* ******************** */

/* Voice Broadcast */

/* ******************** */

/* ******************** */

/* One-off colors */

/* ******************** */

/* ******************** */

/* blur amounts for left left panel (only for element theme) */

/* ******************** */

:root {
    --lp-background-blur: 45px;
}

/* ******************** */

body {
    color-scheme: dark;
}

/* Nasty hacks to apply a filter to arbitrary monochrome artwork to make it */

/* better match the theme.  Typically applied to dark grey 'off' buttons or */

/* light grey 'on' buttons. */

/* ******************** */

.mx_filterFlipColor {
    -webkit-filter: invert(1);
            filter: invert(1);
}

/* ******************** */

/* markdown overrides */

/* ******************** */

.mx_EventTile_content .markdown-body table tr {
            background-color: #000000;
        }

.mx_EventTile_content .markdown-body table tr:nth-child(2n) {
            background-color: #080808;
        }

/* ******************** */

/* diff highlight colors */

/* ******************** */

.hljs-tag {
    color: inherit; /* Without this they'd be weirdly blue which doesn't match the theme */
}

.hljs-addition {
    background: #1a4b59;
}

.hljs-deletion {
    background: #53232a;
}

/* ******************** */

/* Splash Page Gradient */

.mx_SplashPage::before {
    background-image: radial-gradient(
            53.85% 66.75% at 87.55% 0%,
            hsla(0, 0%, 11%, 0.15) 0%,
            hsla(250, 100%, 88%, 0) 100%
        ),
        radial-gradient(41.93% 41.93% at 0% 0%, hsla(0, 0%, 38%, 0.28) 0%, hsla(250, 100%, 88%, 0) 100%),
        radial-gradient(100% 100% at 0% 0%, hsla(250, 100%, 88%, 0.3) 0%, hsla(0, 100%, 86%, 0) 100%),
        radial-gradient(106.35% 96.26% at 100% 0%, hsla(25, 100%, 88%, 0.4) 0%, hsla(167, 76%, 82%, 0) 100%) !important;
}

/* sidebar blurred avatar background */

/**/

/* if backdrop-filter is supported, */

/* set the user avatar (if any) as a background so */

/* it can be blurred by the tag panel and room list */

.mx_RoomSublist_showNButton {
    background-color: transparent !important;
}

a:hover,
a:link,
a:visited {
    text-decoration: none;
}

/* autogenerated by rethemendex.sh */

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/**
 * React Transition Group animations are prefixed with 'mx_rtg--' so that we
 * know they should not be used anywhere outside of React Transition Groups.
*/

.mx_rtg--fade-enter {
    opacity: 0;
}

.mx_rtg--fade-enter-active {
    opacity: 1;
    -webkit-transition: opacity 300ms ease;
    transition: opacity 300ms ease;
}

.mx_rtg--fade-exit {
    opacity: 1;
}

.mx_rtg--fade-exit-active {
    opacity: 0;
    -webkit-transition: opacity 300ms ease;
    transition: opacity 300ms ease;
}

:root {
    --hover-transition: 0.08s cubic-bezier(0.46, 0.03, 0.52, 0.96); /* quadratic */
}

@-webkit-keyframes mx--anim-pulse {
    0% {
        opacity: 1;
    }
    50% {
        opacity: 0.7;
    }
    100% {
        opacity: 1;
    }
}

@keyframes mx--anim-pulse {
    0% {
        opacity: 1;
    }
    50% {
        opacity: 0.7;
    }
    100% {
        opacity: 1;
    }
}

@-webkit-keyframes mx_Dialog_lightbox_background_keyframes {
    from {
        opacity: 0;
    }
    to {
        opacity: 0.85;
    }
}

@keyframes mx_Dialog_lightbox_background_keyframes {
    from {
        opacity: 0;
    }
    to {
        opacity: 0.85;
    }
}

@-webkit-keyframes mx_ImageView_panel_keyframes {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes mx_ImageView_panel_keyframes {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@media (prefers-reduced-motion) {
    @-webkit-keyframes mx--anim-pulse {
        /* Override all keyframes in reduced-motion */
    }
    @keyframes mx--anim-pulse {
        /* Override all keyframes in reduced-motion */
    }

    @-webkit-keyframes mx_Dialog_lightbox_background_keyframes {
        /* Override all keyframes in reduced-motion */
    }

    @keyframes mx_Dialog_lightbox_background_keyframes {
        /* Override all keyframes in reduced-motion */
    }

    @-webkit-keyframes mx_ImageView_panel_keyframes {
        /* Override all keyframes in reduced-motion */
    }

    @keyframes mx_ImageView_panel_keyframes {
        /* Override all keyframes in reduced-motion */
    }

    .mx_rtg--fade-enter-active {
        -webkit-transition: none;
        transition: none;
    }
    .mx_rtg--fade-exit-active {
        -webkit-transition: none;
        transition: none;
    }
}

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2017 - 2019 New Vector Ltd
Copyright 2019 - 2021 The Matrix.org Foundation C.I.C

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

:root {
    --font-normal: 400;
    --font-semi-bold: 600;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* SCSS variables representing a range of standard lengths.
 *
 * Avoid using these in new code: we cannot adjust their values without causing massive confusion, so they are
 * effectively equivalent to using hardcoded values.
 *
 * In future, we plan to introduce variables named according to their purpose rather than their size. Additionally,
 * we want switch to custom CSS properties (https://github.com/vector-im/element-web/issues/21656), so we might have
 * `--spacing-standard` or something. For now, you might as well use hardcoded px values for lengths (except for font
 * sizes, for which see the `$font-<N>px` variables).
 */

.mapboxgl-map,.maplibregl-map{-webkit-tap-highlight-color:rgb(0 0 0/0);font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative}

.mapboxgl-canvas,.maplibregl-canvas{left:0;position:absolute;top:0}

.mapboxgl-map:-webkit-full-screen, .maplibregl-map:-webkit-full-screen{height:100%;width:100%}

.mapboxgl-map:-ms-fullscreen, .maplibregl-map:-ms-fullscreen{height:100%;width:100%}

.mapboxgl-map:fullscreen,.maplibregl-map:fullscreen{height:100%;width:100%}

.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass,.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:-webkit-grab;cursor:grab;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}

.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer,.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}

.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active,.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:-webkit-grabbing;cursor:grabbing}

.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}

.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{-ms-touch-action:pinch-zoom;touch-action:pinch-zoom}

.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{-ms-touch-action:none;touch-action:none}

.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right,.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}

.mapboxgl-ctrl-top-left,.maplibregl-ctrl-top-left{left:0;top:0}

.mapboxgl-ctrl-top-right,.maplibregl-ctrl-top-right{right:0;top:0}

.mapboxgl-ctrl-bottom-left,.maplibregl-ctrl-bottom-left{bottom:0;left:0}

.mapboxgl-ctrl-bottom-right,.maplibregl-ctrl-bottom-right{bottom:0;right:0}

.mapboxgl-ctrl,.maplibregl-ctrl{clear:both;pointer-events:auto;-webkit-transform:translate(0);transform:translate(0)}

.mapboxgl-ctrl-top-left .mapboxgl-ctrl,.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}

.mapboxgl-ctrl-top-right .mapboxgl-ctrl,.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}

.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl,.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}

.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl,.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}

.mapboxgl-ctrl-group,.maplibregl-ctrl-group{background:#fff;border-radius:4px}

.mapboxgl-ctrl-group:not(:empty),.maplibregl-ctrl-group:not(:empty){-webkit-box-shadow:0 0 0 2px rgba(0,0,0,.1);box-shadow:0 0 0 2px rgba(0,0,0,.1)}

@media (-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty),.maplibregl-ctrl-group:not(:empty){-webkit-box-shadow:0 0 0 2px ButtonText;box-shadow:0 0 0 2px ButtonText}}

.mapboxgl-ctrl-group button,.maplibregl-ctrl-group button{background-color:transparent;border:0;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}

.mapboxgl-ctrl-group button+button,.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}

.mapboxgl-ctrl button .mapboxgl-ctrl-icon,.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}

@media (-ms-high-contrast:active){.mapboxgl-ctrl-icon,.maplibregl-ctrl-icon{background-color:transparent}.mapboxgl-ctrl-group button+button,.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}

.mapboxgl-ctrl button::-moz-focus-inner,.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}

.mapboxgl-ctrl-attrib-button:focus,.mapboxgl-ctrl-group button:focus,.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{-webkit-box-shadow:0 0 2px 2px #0096ff;box-shadow:0 0 2px 2px #0096ff}

.mapboxgl-ctrl button:disabled,.maplibregl-ctrl button:disabled{cursor:not-allowed}

.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}

.mapboxgl-ctrl button:not(:disabled):hover,.maplibregl-ctrl button:not(:disabled):hover{background-color:rgb(0 0 0/5%)}

.mapboxgl-ctrl-group button:focus:focus-visible,.maplibregl-ctrl-group button:focus:focus-visible{-webkit-box-shadow:0 0 2px 2px #0096ff;box-shadow:0 0 2px 2px #0096ff}

.mapboxgl-ctrl-group button:focus:not(:focus-visible),.maplibregl-ctrl-group button:focus:not(:focus-visible){-webkit-box-shadow:none;box-shadow:none}

.mapboxgl-ctrl-group button:focus:first-child,.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}

.mapboxgl-ctrl-group button:focus:last-child,.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}

.mapboxgl-ctrl-group button:focus:only-child,.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}

.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}

@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}

@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}

.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}

@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}

@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}

.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath d='m10.5 16 4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}

@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath d='m10.5 16 4 8 4-8h-8z' fill='%23999'/%3E%3C/svg%3E")}}

@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath d='m10.5 16 4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}}

.mapboxgl-ctrl button.mapboxgl-ctrl-terrain .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='%23333'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-terrain-enabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='%2333b5e5'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='m14 5 1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}

.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{-webkit-animation:maplibregl-spin 2s linear infinite;animation:maplibregl-spin 2s linear infinite}

@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='m14 5 1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}}

@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='m14 5 1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}}

@-webkit-keyframes maplibregl-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}

@keyframes maplibregl-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}

a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}

a.mapboxgl-ctrl-logo.mapboxgl-compact,a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}

@media (-ms-high-contrast:active){a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E")}}

@media (-ms-high-contrast:black-on-white){a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E")}}

.mapboxgl-ctrl.mapboxgl-ctrl-attrib,.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}

@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact,.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;-webkit-box-sizing:content-box;box-sizing:content-box;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner,.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-top-left .mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-inner,.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgb(0 0 0/5%)}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}

@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}

@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}

.mapboxgl-ctrl-attrib a,.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}

.mapboxgl-ctrl-attrib a:hover,.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}

.mapboxgl-attrib-empty,.maplibregl-attrib-empty{display:none}

.mapboxgl-ctrl-scale,.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;-webkit-box-sizing:border-box;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px}

.mapboxgl-popup,.maplibregl-popup{display:-webkit-box;display:-ms-flexbox;display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}

.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right,.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}

.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right,.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}

.mapboxgl-popup-anchor-left,.maplibregl-popup-anchor-left{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}

.mapboxgl-popup-anchor-right,.maplibregl-popup-anchor-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}

.mapboxgl-popup-tip,.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}

.mapboxgl-popup-anchor-top .mapboxgl-popup-tip,.maplibregl-popup-anchor-top .maplibregl-popup-tip{-ms-flex-item-align:center;align-self:center;border-bottom-color:#fff;border-top:none}

.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{-ms-flex-item-align:start;align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}

.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{-ms-flex-item-align:end;align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}

.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{-ms-flex-item-align:center;align-self:center;border-bottom:none;border-top-color:#fff}

.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{-ms-flex-item-align:start;align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}

.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{-ms-flex-item-align:end;align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}

.mapboxgl-popup-anchor-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-left .maplibregl-popup-tip{-ms-flex-item-align:center;align-self:center;border-left:none;border-right-color:#fff}

.mapboxgl-popup-anchor-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-right .maplibregl-popup-tip{-ms-flex-item-align:center;align-self:center;border-left-color:#fff;border-right:none}

.mapboxgl-popup-close-button,.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}

.mapboxgl-popup-close-button:hover,.maplibregl-popup-close-button:hover{background-color:rgb(0 0 0/5%)}

.mapboxgl-popup-content,.maplibregl-popup-content{background:#fff;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto;position:relative}

.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content,.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}

.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content,.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}

.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content,.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}

.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content,.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}

.mapboxgl-popup-track-pointer,.maplibregl-popup-track-pointer{display:none}

.mapboxgl-popup-track-pointer *,.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}

.mapboxgl-map:hover .mapboxgl-popup-track-pointer,.maplibregl-map:hover .maplibregl-popup-track-pointer{display:-webkit-box;display:-ms-flexbox;display:flex}

.mapboxgl-map:active .mapboxgl-popup-track-pointer,.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}

.mapboxgl-marker,.maplibregl-marker{left:0;position:absolute;top:0;will-change:transform}

.mapboxgl-user-location-dot,.maplibregl-user-location-dot{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}

.mapboxgl-user-location-dot:before,.maplibregl-user-location-dot:before{-webkit-animation:maplibregl-user-location-dot-pulse 2s infinite;animation:maplibregl-user-location-dot-pulse 2s infinite;background-color:#1da1f2;border-radius:50%;content:"";height:15px;position:absolute;width:15px}

.mapboxgl-user-location-dot:after,.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;-webkit-box-shadow:0 0 3px rgba(0,0,0,.35);box-shadow:0 0 3px rgba(0,0,0,.35);-webkit-box-sizing:border-box;box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}

@-webkit-keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}70%{opacity:0;-webkit-transform:scale(3);transform:scale(3)}to{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}

@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}70%{opacity:0;-webkit-transform:scale(3);transform:scale(3)}to{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}

.mapboxgl-user-location-dot-stale,.maplibregl-user-location-dot-stale{background-color:#aaa}

.mapboxgl-user-location-dot-stale:after,.maplibregl-user-location-dot-stale:after{display:none}

.mapboxgl-user-location-accuracy-circle,.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}

.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active,.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}

.mapboxgl-boxzoom,.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}

.maplibregl-cooperative-gesture-screen{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:rgba(0,0,0,.4);bottom:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.4em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;left:0;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;right:0;top:0;-webkit-transition:opacity 1s ease 1s;transition:opacity 1s ease 1s}

.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;-webkit-transition:opacity .05s;transition:opacity .05s}

.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}

@media (hover:none), (max-width:480px){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}

:root {
    font-size: 10px;

    --container-border-width: 8px;
    --container-gap-width: 8px; /* only even numbers should be used because otherwise we get 0.5px margin values. */
    --transition-short: 0.1s;
    --transition-standard: 0.3s;
    --buttons-dialog-gap-row: 8px;
    --buttons-dialog-gap-column: 8px;
    --MBody-border-radius: 8px;

    /* Expected z-indexes for dialogs:
        4000 - Default wrapper index
        4009 - Static dialog background
        4010 - Static dialog itself
        4011 - Standard dialog background
        4012 - Standard dialog itself

       These are set up such that the static dialog always appears
       underneath the standard dialogs.
     */
    --dialog-zIndex-wrapper-default: 4000;
    --dialog-zIndex-static-background: 4009;
    --dialog-zIndex-static: calc(var(--dialog-zIndex-static-background) + 1); /* 4010 */
    --dialog-zIndex-standard-background: calc(var(--dialog-zIndex-static) + 1); /* 4011 */
    --dialog-zIndex-standard: calc(var(--dialog-zIndex-standard-background) + 1); /* 4012 */
}

@media only percy {
    :root {
        --percy-color-avatar: #ac3ba8;
        --percy-color-displayName: #368bd6;
        --percy-color-replyChain-border: #368bd6;
    }
}

@media (prefers-reduced-motion) {
    :root {
        --transition-short: 0;
        --transition-standard: 0;
    }
}

html {
    /* hack to stop overscroll bounce on OSX and iOS.
       N.B. Breaks things when we have legitimate horizontal overscroll */
    height: 100%;
    overflow: hidden;
    /* Stop similar overscroll bounce in Firefox Nightly for macOS */
    -ms-scroll-chaining: none;
        overscroll-behavior: none;
}

body {
    font-family: "Inter", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Arial", "Helvetica", sans-serif,
    "Noto Color Emoji";
    font-size: 1.5rem;
    background-color: #15191e;
    color: #ffffff;
    border: 0px;
    margin: 0px;

    /* needed to match the designs correctly on macOS */
    /* see https://github.com/vector-im/element-web/issues/11425 */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

pre,
code {
    font-family: "Inconsolata", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Courier", monospace,
    "Noto Color Emoji";
    font-size: 100% !important;
}

.error,
.warning,
.text-error,
.text-warning {
    color: #ff5b55;
}

.text-success {
    color: #0dbd8b;
}

.text-muted {
    color: #91a1c0;
}

b {
    /* On Firefox, the default weight for `<b>` is `bolder` which results in no bold */
    /* effect since we only have specific weights of our fonts available. */
    font-weight: bold;
}

h2 {
    color: #ffffff;
    font-weight: 400;
    font-size: 1.8rem;
    margin-top: 16px;
    margin-bottom: 16px;
}

a:hover,
a:link,
a:visited {
    color: #238cf5;
}

input[type="text"],
input[type="search"],
input[type="password"] {
    font-family: inherit;
    padding: 9px;
    font-size: 1.4rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    min-width: 0;
}

input[type="text"].mx_textinput_icon,
input[type="search"].mx_textinput_icon {
    padding-left: 36px;
    background-repeat: no-repeat;
    background-position: 10px center;
}

/* FIXME THEME - Tint by CSS rather than referencing a duplicate asset */

input[type="text"].mx_textinput_icon.mx_textinput_search,
input[type="search"].mx_textinput_icon.mx_textinput_search {
    background-image: url(../../img/feather-customised/search-input.1871d4f.svg);
}

/* dont search UI as not all browsers support it, */

/* we implement it ourselves where needed instead */

input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
    display: none;
}

/* Override Firefox's UA style so we get a consistent look across browsers */

input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
    opacity: 1;
    opacity: initial;
}

input::-moz-placeholder, textarea::-moz-placeholder {
    opacity: 1;
    opacity: initial;
}

input:-ms-input-placeholder, textarea:-ms-input-placeholder {
    opacity: 1;
    opacity: initial;
}

input::-ms-input-placeholder, textarea::-ms-input-placeholder {
    opacity: 1;
    opacity: initial;
}

input::placeholder,
textarea::placeholder {
    opacity: 1;
    opacity: initial;
}

input[type="text"],
input[type="password"],
textarea {
    background-color: transparent;
    color: #ffffff;
}

/* Required by Firefox */

textarea {
    color: #ffffff;
}

input[type="text"]:focus,
input[type="password"]:focus,
textarea:focus {
    outline: none;
    -webkit-box-shadow: none;
            box-shadow: none;
}

/* This is used to hide the standard outline added by browsers for */

/* accessible (focusable) components. Not intended for buttons, but */

/* should be used on things like focusable containers where the outline */

/* is usually not helping anyone. */

*:focus:not(.focus-visible) {
    outline: none;
}

/* override defaults */

fieldset {
    display: inline-block;
    margin-inline: unset;
    padding-block: unset;
    padding-inline: unset;
    min-inline-size: unset;
    border: none;
}

summary {
    cursor: pointer;
}

legend {
    padding-inline: unset;
    border: none;
}

/* .mx_textinput is a container for a text input */

/* + some other controls like buttons, ... */

/* it has the appearance of a text box so the controls */

/* appear to be part of the input */

.mx_Dialog .mx_textinput > input[type="text"],
    .mx_Dialog .mx_textinput > input[type="search"],
    .mx_MatrixChat_wrapper .mx_textinput > input[type="text"],
    .mx_MatrixChat_wrapper .mx_textinput > input[type="search"] {
        border: none;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        color: #ffffff;
    }

.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"],
    .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"],
    .mx_Dialog .mx_textinput,
    .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"],
    .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"],
    .mx_MatrixChat_wrapper .mx_textinput {
        display: block;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        background-color: transparent;
        color: #61708b;
        border-radius: 4px;
        border: 1px solid rgba(255,255,255, 0.1);
        /* these things should probably not be defined globally */
        margin: 9px;
    }

.mx_Dialog .mx_textinput, .mx_MatrixChat_wrapper .mx_textinput {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]::-webkit-input-placeholder, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]::-webkit-input-placeholder, .mx_Dialog .mx_textinput input::-webkit-input-placeholder, .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]::-webkit-input-placeholder, .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]::-webkit-input-placeholder, .mx_MatrixChat_wrapper .mx_textinput input::-webkit-input-placeholder {
        color: rgba(97,112,139, 0.75);
    }

.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]::-moz-placeholder, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]::-moz-placeholder, .mx_Dialog .mx_textinput input::-moz-placeholder, .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]::-moz-placeholder, .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]::-moz-placeholder, .mx_MatrixChat_wrapper .mx_textinput input::-moz-placeholder {
        color: rgba(97,112,139, 0.75);
    }

.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]:-ms-input-placeholder, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]:-ms-input-placeholder, .mx_Dialog .mx_textinput input:-ms-input-placeholder, .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]:-ms-input-placeholder, .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]:-ms-input-placeholder, .mx_MatrixChat_wrapper .mx_textinput input:-ms-input-placeholder {
        color: rgba(97,112,139, 0.75);
    }

.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]::-ms-input-placeholder, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]::-ms-input-placeholder, .mx_Dialog .mx_textinput input::-ms-input-placeholder, .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]::-ms-input-placeholder, .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]::-ms-input-placeholder, .mx_MatrixChat_wrapper .mx_textinput input::-ms-input-placeholder {
        color: rgba(97,112,139, 0.75);
    }

.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]::placeholder,
    .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]::placeholder,
    .mx_Dialog .mx_textinput input::placeholder,
    .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"]::placeholder,
    .mx_MatrixChat_wrapper :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"]::placeholder,
    .mx_MatrixChat_wrapper .mx_textinput input::placeholder {
        color: rgba(97,112,139, 0.75);
    }

/*** panels ***/

.dark-panel {
    background-color: #20252b;
}

.dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"],
    .dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"],
    .dark-panel .mx_textinput {
        color: #61708b;
        background-color: #15191e;
        border: none;
    }

.light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="text"],
    .light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type="search"],
    .light-panel .mx_textinput {
        color: #61708b;
        background-color: #f2f5f8;
        border: none;
    }

/* Prevent ugly dotted highlight around selected elements in Firefox */

::-moz-focus-inner {
    border: 0;
}

/* These are magic constants which are excluded from tinting, to let themes */

/* (which only have CSS) tell the app what their non-tinted */

/* colourscheme is by inspecting the stylesheet DOM. */

/* They are not used for layout!! */

#mx_theme_accentColor {
    color: #0dbd8b;
}

#mx_theme_secondaryAccentColor {
    color: #f2f5f8;
}

.mx_Dialog_wrapper {
    position: fixed;
    z-index: 4000;
    z-index: var(--dialog-zIndex-wrapper-default);
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
}

.mx_Dialog {
    background-color: #15191e;
    color: #c8c8cd;
    z-index: calc(calc(calc(4009 + 1) + 1) + 1);
    z-index: var(--dialog-zIndex-standard);
    font-size: 1.5rem;
    position: relative;
    padding: 24px;
    max-height: 80%;
    -webkit-box-shadow: 2px 15px 30px 0 rgba(0, 0, 0, 0.48);
            box-shadow: 2px 15px 30px 0 rgba(0, 0, 0, 0.48);
    border-radius: 8px;
    overflow-y: auto;
}

.mx_Dialog_staticWrapper .mx_Dialog {
        z-index: calc(4009 + 1);
        z-index: var(--dialog-zIndex-static);
        contain: content;
    }

.mx_Dialog_lightbox .mx_Dialog {
        border-radius: 0px;
        background-color: transparent;
        width: 100%;
        height: 100%;
        max-width: 100%;
        max-height: 100%;
        pointer-events: none;
        padding: 0;
    }

/* Styles copied/inspired by GroupLayout, ReplyTile, and EventTile variants. */

.mx_Dialog .markdown-body {
        font-family: inherit !important;
        white-space: normal !important;
        line-height: inherit !important;
        color: inherit; /* inherit the colour from the dark or light theme by default (but not for code blocks) */
        font-size: 1.4rem;
    }

.mx_Dialog .markdown-body pre,
        .mx_Dialog .markdown-body code {
            font-family: "Inconsolata", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Courier", monospace,
    "Noto Color Emoji" !important;
            background-color: #2a3039;
        }

/* this selector wrongly applies to code blocks too but we will unset it in the next one */

.mx_Dialog .markdown-body code {
            white-space: pre-wrap; /* don't collapse spaces in inline code blocks */
        }

.mx_Dialog .markdown-body pre {
            /* have to use overlay rather than auto otherwise Linux and Windows */
            /* Chrome gets very confused about vertical spacing: */
            /* https://github.com/vector-im/vector-web/issues/754 */
            overflow-x: overlay;
            overflow-y: visible;
        }

.mx_Dialog .markdown-body pre::-webkit-scrollbar-corner {
                background: transparent;
            }

.mx_Dialog .markdown-body pre code {
                white-space: pre;
            }

/* we want code blocks to be scrollable and not wrap */

.mx_Dialog .markdown-body pre code > * {
                    display: inline;
                }

.mx_Dialog .markdown-body h1,
        .mx_Dialog .markdown-body h2,
        .mx_Dialog .markdown-body h3,
        .mx_Dialog .markdown-body h4,
        .mx_Dialog .markdown-body h5,
        .mx_Dialog .markdown-body h6 {
            font-family: inherit !important;
            color: inherit;
        }

/* Make h1 and h2 the same size as h3. */

.mx_Dialog .markdown-body h1,
        .mx_Dialog .markdown-body h2 {
            font-size: 1.5em;
            border-bottom: none !important; /* override GFM */
        }

.mx_Dialog .markdown-body a {
            color: #238cf5;
        }

.mx_Dialog .markdown-body blockquote {
            border-left: 2px solid #dddddd;
            border-radius: 2px;
            padding: 0 10px;
        }

.mx_Dialog_fixedWidth {
    width: 60vw;
    max-width: 704px;
}

.mx_Dialog_background {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #000000;
    opacity: 0.8;
    z-index: calc(calc(4009 + 1) + 1);
    z-index: var(--dialog-zIndex-standard-background);
}

.mx_Dialog_background.mx_Dialog_staticBackground {
        z-index: 4009;
        z-index: var(--dialog-zIndex-static-background);
    }

.mx_Dialog_wrapperWithStaticUnder .mx_Dialog_background {
        /* Roughly half of what it would normally be - we don't want to black out */
        /* the app, just make it clear that the dialogs are stacked. */
        opacity: 0.4;
    }

.mx_Dialog_lightbox .mx_Dialog_background {
        opacity: 0.85;
        background-color: #000000;
        -webkit-animation-name: mx_Dialog_lightbox_background_keyframes;
                animation-name: mx_Dialog_lightbox_background_keyframes;
        -webkit-animation-duration: 300ms;
                animation-duration: 300ms;
    }

.mx_Dialog_titleImage {
    vertical-align: sub;
    width: 25px;
    height: 25px;
    margin-left: -2px;
    margin-right: 4px;
    margin-bottom: 2px;
}

.mx_Dialog_title {
    color: #ffffff;
    display: inline-block;
    width: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_Dialog_title.danger {
        color: #ff5b55;
    }

.mx_Dialog_header {
    position: relative;
    padding: 3px 0;
    margin-bottom: 10px;
}

.mx_Dialog_header.mx_Dialog_headerWithButton > .mx_Dialog_title {
        text-align: center;
    }

.mx_Dialog_header.mx_Dialog_headerWithCancel {
        padding-right: 20px; /* leave space for the 'X' cancel button */
    }

.mx_Dialog_header.mx_Dialog_headerWithCancelOnly {
        padding: 0 20px 0 0;
        margin: 0;
    }

.mx_Dialog_cancelButton {
    -webkit-mask: url(../../img/cancel.12c5c12.svg);
            mask: url(../../img/cancel.12c5c12.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: cover;
            mask-size: cover;
    background-color: #9fa9ba;
    cursor: pointer;
    position: unset;
    width: unset;
    height: unset;
    width: 18px;
    height: 18px;
    position: absolute;
    top: 10px;
    right: 0;
}

.mx_Dialog_content {
    margin: 24px 0 68px;
    font-size: 1.4rem;
    color: #ffffff;
    word-wrap: break-word;
}

.mx_Dialog_buttons {
    margin-top: 20px;
    -webkit-margin-start: auto;
            margin-inline-start: auto;
    text-align: right;
}

.mx_Dialog_buttons .mx_Dialog_buttons_additive {
        /* The consumer is responsible for positioning their elements. */
        float: left;
    }

.mx_Dialog_buttons .mx_Dialog_buttons_row {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end;
        text-align: left;
        text-align: initial;
        -webkit-margin-start: auto;
                margin-inline-start: auto;

        /* default gap among elements */
        grid-column-gap: 8px;
        -webkit-column-gap: 8px;
           -moz-column-gap: 8px;
                column-gap: 8px;
        grid-column-gap: var(--buttons-dialog-gap-column);
        -webkit-column-gap: var(--buttons-dialog-gap-column);
           -moz-column-gap: var(--buttons-dialog-gap-column);
                column-gap: var(--buttons-dialog-gap-column);
        grid-row-gap: 8px;
        row-gap: 8px;
        grid-row-gap: var(--buttons-dialog-gap-row);
        row-gap: var(--buttons-dialog-gap-row);
    }

.mx_Dialog_buttons .mx_Dialog_buttons_row button {
            margin: 0 !important; /* override the margin settings */
        }

/* XXX: Our button style are a mess: buttons that happen to appear in dialogs get special styles applied
 * to them that no button anywhere else in the app gets by default. In practice, buttons in other places
 * in the app look the same by being AccessibleButtons, or possibly by having explict button classes.
 * We should go through and have one consistent set of styles for buttons throughout the app.
 * For now, I am duplicating the selectors here for mx_Dialog and mx_DialogButtons.
 *
 * Elements that should not be styled like a dialog button are mentioned in a :not() pseudo-class.
 * For the widest browser support, we use multiple :not pseudo-classes instead of :not(.a, .b).
 */

.mx_Dialog button:not(.mx_Dialog_nonDialogButton):not([class|="maplibregl"]):not(.mx_AccessibleButton),
.mx_Dialog input[type="submit"],
.mx_Dialog_buttons button:not(.mx_Dialog_nonDialogButton):not(.mx_AccessibleButton),
.mx_Dialog_buttons input[type="submit"] {
    /* align images in buttons (eg spinners) */
    vertical-align: middle;
    border: 0px;
    border-radius: 8px;
    font-family: "Inter", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Arial", "Helvetica", sans-serif,
    "Noto Color Emoji";
    font-size: 1.4rem;
    color: #ffffff;
    background-color: #0dbd8b;
    width: auto;
    padding: 7px;
    padding-left: 1.5em;
    padding-right: 1.5em;
    cursor: pointer;
    display: inline-block;

    /* flip colours for the secondary ones */
}

.mx_Dialog button:not(.mx_Dialog_nonDialogButton):not([class|="maplibregl"]):not(.mx_AccessibleButton):not(.focus-visible), .mx_Dialog input[type="submit"]:not(.focus-visible), .mx_Dialog_buttons button:not(.mx_Dialog_nonDialogButton):not(.mx_AccessibleButton):not(.focus-visible), .mx_Dialog_buttons input[type="submit"]:not(.focus-visible) {
        outline: none;
    }

.mx_Dialog button:not(.mx_Dialog_nonDialogButton):not([class|="maplibregl"]):not(.mx_AccessibleButton),
.mx_Dialog input[type="submit"],
.mx_Dialog_buttons button:not(.mx_Dialog_nonDialogButton):not(.mx_AccessibleButton),
.mx_Dialog_buttons input[type="submit"] {
    margin-left: 0px;
    margin-right: 8px;
    margin-right: var(--buttons-dialog-gap-column);
    margin-bottom: 5px;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    border: 1px solid #0dbd8b;
    color: #0dbd8b;
    background-color: transparent;
    font-family: inherit;
}

.mx_Dialog button:not(.mx_Dialog_nonDialogButton):not([class|="maplibregl"]):not(.mx_AccessibleButton):last-child {
    margin-right: 0px;
}

.mx_Dialog button:not(.mx_Dialog_nonDialogButton):not([class|="maplibregl"]):not(.mx_AccessibleButton):focus,
.mx_Dialog input[type="submit"]:focus,
.mx_Dialog_buttons button:not(.mx_Dialog_nonDialogButton):not(.mx_AccessibleButton):focus,
.mx_Dialog_buttons input[type="submit"]:focus {
    -webkit-filter: brightness(105%);
            filter: brightness(105%);
}

.mx_Dialog button.mx_Dialog_primary:not(.mx_Dialog_nonDialogButton):not([class|="maplibregl"]),
.mx_Dialog input[type="submit"].mx_Dialog_primary,
.mx_Dialog_buttons button.mx_Dialog_primary:not(.mx_Dialog_nonDialogButton):not(.mx_AccessibleButton),
.mx_Dialog_buttons input[type="submit"].mx_Dialog_primary {
    color: #ffffff;
    background-color: #0dbd8b;
    min-width: 156px;
}

.mx_Dialog button.danger:not(.mx_Dialog_nonDialogButton):not([class|="maplibregl"]),
.mx_Dialog input[type="submit"].danger,
.mx_Dialog_buttons button.danger:not(.mx_Dialog_nonDialogButton):not(.mx_AccessibleButton),
.mx_Dialog_buttons input[type="submit"].danger {
    background-color: #ff5b55;
    border: solid 1px #ff5b55;
    color: #ffffff;
}

.mx_Dialog button.warning:not(.mx_Dialog_nonDialogButton):not([class|="maplibregl"]),
.mx_Dialog input[type="submit"].warning {
    border: solid 1px #ff5b55;
    color: #ff5b55;
}

.mx_Dialog button:not(.mx_Dialog_nonDialogButton):not([class|="maplibregl"]):not(.mx_AccessibleButton):disabled,
.mx_Dialog input[type="submit"]:disabled,
.mx_Dialog_buttons button:not(.mx_Dialog_nonDialogButton):not(.mx_AccessibleButton):disabled,
.mx_Dialog_buttons input[type="submit"]:disabled {
    background-color: #c8c8cd;
    border: solid 1px #c8c8cd;
    opacity: 0.7;
}

/* Spinner Dialog overide */

.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog {
    width: auto;
    border-radius: 8px;
    padding: 8px;
    -webkit-box-shadow: none;
            box-shadow: none;

    /* Don't show scroll-bars on spinner dialogs */
    overflow-x: hidden;
    overflow-y: hidden;
}

/* TODO: Review mx_GeneralButton usage to see if it can use a different class */

/* These classes were brought in from the old UserSettings and are included here to avoid */

/* breaking the app. */

/* Ref: https://github.com/vector-im/element-web/issues/8420 */

.mx_GeneralButton {
    /* align images in buttons (eg spinners) */
    vertical-align: middle;
    border: 0px;
    border-radius: 8px;
    font-family: "Inter", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Arial", "Helvetica", sans-serif,
    "Noto Color Emoji";
    font-size: 1.4rem;
    color: #ffffff;
    background-color: #0dbd8b;
    width: auto;
    padding: 7px;
    padding-left: 1.5em;
    padding-right: 1.5em;
    cursor: pointer;
    display: inline-block;
}

.mx_GeneralButton:not(.focus-visible) {
        outline: none;
    }

.mx_GeneralButton {
    display: inline;
    margin: auto;
}

.mx_TextInputDialog_label {
    text-align: left;
    padding-bottom: 12px;
}

.mx_TextInputDialog_input {
    font-size: 1.5rem;
    border-radius: 3px;
    border: 1px solid rgba(231, 231, 231, 0.2);
    padding: 9px;
    color: #ffffff;
    background-color: #15191e;
}

.mx_button_row {
    margin-top: 69px;
}

/* username colors */

/* used by SenderProfile & RoomPreviewBar */

.mx_Username_color1 {
    color: #368bd6;
}

.mx_Username_color2 {
    color: #ac3ba8;
}

.mx_Username_color3 {
    color: #0dbd8b;
}

.mx_Username_color4 {
    color: #e64f7a;
}

.mx_Username_color5 {
    color: #ff812d;
}

.mx_Username_color6 {
    color: #2dc2c5;
}

.mx_Username_color7 {
    color: #5c56f5;
}

.mx_Username_color8 {
    color: #74d12c;
}

/*Responsive design*/

@media (max-width: 1024px) {
    .mx_Dialog {
        width: 60% !important;
    }
    .mx_Dialog_fixedWidth {
        width: auto !important;
        max-width: auto !important;
    }
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BeaconListItem {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    padding: 12px 0;

    border-bottom: 1px solid #21262c;

    cursor: pointer;
}

.mx_BeaconListItem_avatarIcon {
    -webkit-box-flex: 0;
        -ms-flex: 0 0;
            flex: 0 0;
    height: 32px;
    width: 32px;
}

.mx_BeaconListItem_avatar {
    -webkit-box-flex: 0;
        -ms-flex: 0 0;
            flex: 0 0;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;

    margin-right: 8px;
    border: 2px solid #5c56f5;
    border-radius: 50%;
}

.mx_BeaconListItem_info {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
    width: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
}

.mx_BeaconListItem_status {
    /* override beacon status padding */
    padding: 0 !important;
    margin-bottom: 8px;
}

.mx_BeaconListItem_status .mx_BeaconStatus_label {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_BeaconListItem_lastUpdated {
    color: #8e99a4;
    font-size: 1rem;
}

.mx_BeaconListItem_interactions {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BeaconStatus {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;

    -webkit-box-sizing: border-box;

            box-sizing: border-box;
    padding: 8px;

    color: var(--color);
    font-size: 1.2rem;
}

.mx_BeaconStatus_Loading,
.mx_BeaconStatus_Stopped {
    --color: #8e99a4;
}

.mx_BeaconStatus_Active,
.mx_BeaconStatus_Error {
    --color: #ffffff;
}

.mx_BeaconStatus_icon {
    height: 32px;
    width: 32px;

    -webkit-box-flex: 0;

        -ms-flex: 0 0 32px;

            flex: 0 0 32px;
    margin-right: 8px;
}

.mx_BeaconStatus_description {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    line-height: 1.4rem;

    padding-right: 8px;

    white-space: nowrap;
    overflow: hidden;
}

.mx_BeaconStatus_description .mx_BeaconStatus_description_status {
        text-overflow: ellipsis;
        overflow: hidden;
    }

.mx_BeaconStatus_expiryTime {
    color: #a9b2bc;
}

.mx_BeaconStatus_label {
    margin-bottom: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BeaconStatusTooltip {
    position: absolute;
    top: 42px;
    max-width: 150px;
    height: 38px;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    padding-top: 8px;
}

.mx_BeaconStatusTooltip_inner {
    position: relative;
    height: 100%;
    border-radius: 4px;
    background: #20252b;
    -webkit-box-shadow: 4px 4px 12px 0 #15191e;
            box-shadow: 4px 4px 12px 0 #15191e;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BeaconViewDialog_wrapper .mx_Dialog {
    padding: 0px;

    /* Unset contain and position to allow the close button
    to appear outside the dialog */
    contain: unset;
    position: unset;
}

.mx_BeaconViewDialog {
    /* subtract 0.5px to prevent single-pixel margin due to rounding */
    width: calc(80vw - 0.5px);
    height: calc(80vh - 0.5px);
    overflow: hidden;

    /* sidebar is absolutely positioned inside */
    position: relative;
}

.mx_BeaconViewDialog .mx_Dialog_header {
        margin: 0px;
        padding: 0px;
        position: unset;
    }

.mx_BeaconViewDialog .mx_Dialog_header .mx_Dialog_title {
            display: none;
        }

.mx_BeaconViewDialog .mx_Dialog_header .mx_Dialog_cancelButton {
            z-index: 4010;
            position: fixed;
            right: 5vw;
            top: 5vh;
            width: 20px;
            height: 20px;
            background-color: #ffffff;
        }

.mx_BeaconViewDialog_map {
    width: 80vw;
    height: 80vh;
    border-radius: 8px;
}

.mx_BeaconViewDialog_mapFallbackMessage {
    color: #a9b2bc;
    margin-bottom: 16px;
}

.mx_BeaconViewDialog_viewListButton {
    position: absolute;
    top: 24px;
    left: 24px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DialogOwnBeaconStatus {
    position: absolute;
    bottom: 32px;
    width: 300px;
    margin-left: -150px;
    left: 50%;

    -webkit-box-sizing: border-box;

            box-sizing: border-box;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -webkit-box-pack: stretch;
        -ms-flex-pack: stretch;
            justify-content: stretch;

    background: #15191e;
    border-radius: 8px;
    -webkit-box-shadow: 4px 4px 12px 0 #15191e;
            box-shadow: 4px 4px 12px 0 #15191e;

    padding: 0 12px;
}

.mx_DialogOwnBeaconStatus_avatarIcon {
    -webkit-box-flex: 0;
        -ms-flex: 0 0;
            flex: 0 0;
    height: 32px;
    width: 32px;
    margin: 8px 0 8px 0;
}

.mx_DialogOwnBeaconStatus_avatar {
    -webkit-box-flex: 0;
        -ms-flex: 0 0;
            flex: 0 0;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;

    border: 2px solid #5c56f5;
    border-radius: 50%;
    margin: 8px 0 8px 0;
}

.mx_DialogOwnBeaconStatus_status {
    -webkit-box-flex: 1;
        -ms-flex: 1 1;
            flex: 1 1;
    padding-right: 0;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DialogSidebar {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 265px;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;

    -webkit-box-sizing: border-box;

            box-sizing: border-box;
    padding: 16px;

    background-color: #15191e;
    -webkit-box-shadow: 0px 4px 4px #15191e;
            box-shadow: 0px 4px 4px #15191e;
}

.mx_DialogSidebar .mx_DialogSidebar_header {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: justify;
            -ms-flex-pack: justify;
                justify-content: space-between;

        -webkit-box-flex: 0;

            -ms-flex: 0 0;

                flex: 0 0;
        margin-bottom: 16px;

        color: #ffffff;
    }

.mx_DialogSidebar .mx_DialogSidebar_header .mx_DialogSidebar_closeButtonIcon {
            color: #8e99a4;
            height: 12px;
        }

.mx_DialogSidebar .mx_DialogSidebar_list {
        list-style: none;
        padding: 0;
        margin: 0;
        -webkit-box-flex: 1;
            -ms-flex: 1 1 0px;
                flex: 1 1 0;
        width: 100%;
        overflow: auto;
    }

.mx_DialogSidebar_noResults {
    font-size: 1.4rem;
    color: #a9b2bc;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LeftPanelLiveShareWarning {
    width: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;

    padding: 4px;
    text-align: center;

    background-color: #0dbd8b;
    color: #fff;
    font-size: 1rem;

    /* panel backdrops overlay the whole sidepanel */
    /* go above to get hover for title */
    z-index: 1;
}

.mx_LeftPanelLiveShareWarning__error {
    background-color: #ff5b55;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LiveTimeRemaining {
    color: #a9b2bc;
    font-size: 1.2rem;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_OwnBeaconStatus_button {
    margin-left: 8px;
}

.mx_EventTile[data-layout="bubble"] .mx_OwnBeaconStatus_button {
    /* align to top to make room for timestamp */
    /* in bubble view */
    -ms-flex-item-align: start;
        align-self: start;
}

.mx_OwnBeaconStatus_destructiveButton {
    /* override button link_inline styles */
    color: #ff5b55 !important;
    font-weight: 600 !important;
    font-weight: var(--font-semi-bold) !important;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomLiveShareWarning {
    width: 100%;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    -webkit-box-sizing: border-box;

            box-sizing: border-box;
    padding: 12px 16px;

    color: #ffffff;
    background-color: #21262c;
    cursor: pointer;
}

.mx_RoomLiveShareWarning_icon {
    height: 32px;
    width: 32px;
    margin-right: 8px;
}

.mx_RoomLiveShareWarning_label {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    font-size: 1.5rem;
}

.mx_RoomLiveShareWarning_spinner {
    margin-right: 16px;
}

.mx_RoomLiveShareWarning_closeButton {
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    font-size: inherit;
    font-family: inherit;
    line-height: inherit;
    cursor: pointer;
    margin-left: 16px;
}

.mx_RoomLiveShareWarning_stopButton {
    margin-left: 16px;
}

.mx_RoomLiveShareWarning_closeButtonIcon {
    height: 1.8rem;
    padding: 4px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ShareLatestLocation_icon {
    height: 13px;
    width: 13px;
    color: #a9b2bc;
}

/* double class to be more specific than the general mx_CopyableText CSS rule */

/* override copyable text style to make compact */

.mx_CopyableText.mx_ShareLatestLocation_copy .mx_CopyableText_copyButton {
        height: 13px;
        margin-left: 8px !important;
        position: relative;
        top: -1px;
        width: 13px;
    }

.mx_CopyableText.mx_ShareLatestLocation_copy .mx_CopyableText_copyButton::before {
            background-color: #a9b2bc;
            height: 13px;
            width: 13px;
        }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_StyledLiveBeaconIcon {
    -webkit-box-flex: 0;
        -ms-flex-positive: 0;
            flex-grow: 0;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    border-width: 2px;
    border-style: solid;
    border-radius: 50%;

    background-color: #5c56f5;
    border-color: #5c56f5;
    padding: 2px;
    /* colors icon */
    color: white;
}

.mx_StyledLiveBeaconIcon.mx_StyledLiveBeaconIcon_error {
    background-color: #ff5b55;
    border-color: #ff5b55;
}

.mx_StyledLiveBeaconIcon.mx_StyledLiveBeaconIcon_idle {
    background-color: #6f7882;
    border-color: #6f7882;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_KebabContextMenu_icon {
    width: 24px;
    color: #a9b2bc;
}

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PollDetailHeader {
    /* override accessiblebutton style*/
    font-size: 1.5rem !important;
}

.mx_PollDetailHeader_icon {
    height: 15px;
    width: 15px;
    margin-right: 8px;
    vertical-align: middle;
}

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PollListItem {
    width: 100%;
}

.mx_PollListItem_content {
    width: 100%;
    display: grid;
    -webkit-box-pack: left;
        -ms-flex-pack: left;
            justify-content: left;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    grid-gap: 8px;
    grid-template-columns: auto auto auto;
    grid-template-rows: auto;
    cursor: pointer;

    color: #ffffff;
}

.mx_PollListItem_icon {
    height: 14px;
    width: 14px;
    color: #6f7882;
    padding-left: 8px;
}

.mx_PollListItem_question {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PollListItemEnded {
    width: 100%;
}

.mx_PollListItemEnded_content {
    width: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    color: #ffffff;
    cursor: pointer;
}

.mx_PollListItemEnded_title {
    display: grid;
    -webkit-box-pack: left;
        -ms-flex-pack: left;
            justify-content: left;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    grid-gap: 8px;
    grid-template-columns: -webkit-min-content 1fr -webkit-min-content;
    grid-template-columns: min-content 1fr min-content;
    grid-template-rows: auto;
}

.mx_PollListItemEnded_icon {
    height: 14px;
    width: 14px;
    color: #6f7882;
    padding-left: 8px;
}

.mx_PollListItemEnded_date {
    font-size: 1.2rem;
    color: #a9b2bc;
}

.mx_PollListItemEnded_question {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mx_PollListItemEnded_answers {
    display: grid;
    grid-gap: 8px;
    margin-top: 12px;
}

.mx_PollListItemEnded_voteCount {
    /* 6px to match PollOption padding*/
    margin: 8px 0 0 6px;
}

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 - 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AppPermission > div {
        margin-bottom: 12px;
    }

.mx_AppPermission h4 {
        margin: 0;
        padding: 0;
    }

.mx_AppPermission .mx_AppPermission_smallText {
        font-size: 1.2rem;
    }

.mx_AppPermission .mx_AppPermission_bolder {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_AppPermission .mx_AppPermission_helpIcon {
        margin-top: 1px;
        margin-right: 2px;
        width: 10px;
        height: 10px;
        display: inline-block;
    }

.mx_AppPermission .mx_AppPermission_helpIcon::before {
            display: inline-block;
            background-color: #0dbd8b;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: 12px;
                    mask-size: 12px;
            width: 12px;
            height: 12px;
            -webkit-mask-position: center;
                    mask-position: center;
            content: "";
            vertical-align: middle;
            -webkit-mask-image: url(../../img/feather-customised/help-circle.6f50a41.svg);
                    mask-image: url(../../img/feather-customised/help-circle.6f50a41.svg);
        }

.mx_Tooltip.mx_Tooltip--appPermission {
    -webkit-box-shadow: none;
            box-shadow: none;
    background-color: rgba(38, 39, 43, 0.82);
    color: #ffffff;
    border: none;
    border-radius: 3px;
    padding: 6px 8px;
}

.mx_Tooltip.mx_Tooltip--appPermission.mx_Tooltip--appPermission--dark .mx_Tooltip_chevron::after {
            border-right-color: rgba(38, 39, 43, 0.82);
        }

.mx_Tooltip.mx_Tooltip--appPermission ul {
        list-style-position: inside;
        padding-left: 2px;
        margin-left: 0;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_FilterDropdown .mx_Dropdown_menu {
        margin-top: 4px;
        left: unset;
        right: -12px;
        width: 232px;
        padding: 12px;

        border: 1px solid #394049;
        border-radius: 8px;
        -webkit-box-shadow: 0px 1px 3px rgba(23, 25, 28, 0.05);
                box-shadow: 0px 1px 3px rgba(23, 25, 28, 0.05);

        background-color: #21262c;
    }

.mx_FilterDropdown .mx_Dropdown_menu .mx_Dropdown_option_highlight {
            background-color: transparent;
        }

.mx_FilterDropdown .mx_Dropdown_input {
        height: 24px;
        background-color: transparent;
        border-color: transparent;
        color: #a9b2bc;
        border-radius: 4px;
    }

.mx_FilterDropdown .mx_Dropdown_input:focus,
        .mx_FilterDropdown .mx_Dropdown_input:hover {
            background-color: #394049;
            border-color: #394049;
        }

.mx_FilterDropdown .mx_Dropdown_arrow {
        background: #a9b2bc;
    }

.mx_FilterDropdown_option {
    position: relative;
    width: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    padding: 8px 0 8px 20px;

    font-size: 1.2rem;
    line-height: 1.5rem;
    color: #ffffff;
}

.mx_FilterDropdown_optionSelectedIcon {
    height: 14px;
    width: 14px;
    position: absolute;
    top: 8px;
    left: 0;
}

.mx_FilterDropdown_optionLabel {
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    display: block;
}

.mx_FilterDropdown_optionDescription {
    color: #a9b2bc;
    margin-top: 4px;
}

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_FilterTabGroup {
    color: #ffffff;
}

.mx_FilterTabGroup label {
        margin-right: 12px;
        cursor: pointer;
    }

.mx_FilterTabGroup label span {
            display: inline-block;
            line-height: 2.4rem;
        }

.mx_FilterTabGroup input[type="radio"] {
        -webkit-appearance: none;
           -moz-appearance: none;
                appearance: none;
        margin: 0;
        padding: 0;
    }

.mx_FilterTabGroup input[type="radio"]:focus + span, .mx_FilterTabGroup input[type="radio"]:hover + span {
                color: #a9b2bc;
            }

.mx_FilterTabGroup input[type="radio"]:checked + span {
            color: #0dbd8b;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            /* underline*/
            -webkit-box-shadow: 0 1.5px 0 0 currentColor;
                    box-shadow: 0 1.5px 0 0 currentColor;
        }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LearnMore_button {
    margin-left: 4px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EnableLiveShare {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    padding: 32px 16px;
    text-align: center;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_EnableLiveShare_heading {
    padding-top: 24px;
}

.mx_EnableLiveShare_icon {
    height: 58px;
    width: 58px;
}

.mx_EnableLiveShare_description {
    padding: 0 24px;
    margin-bottom: 32px;
    line-height: 2rem;
}

.mx_EnableLiveShare_button {
    margin-top: 32px;
    height: 48px;
    width: 100%;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LiveDurationDropdown {
    margin-bottom: 16px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LocationShareMenu {
    width: 375px;
    height: 460px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MapError {
    padding: 100px 32px 0;
    text-align: center;

    --mx-map-error-icon-color: #a9b2bc;
    --mx-map-error-icon-size: 58px;
}

.mx_MapError.mx_MapError_isMinimised {
    height: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    padding: 24px;
    background-color: rgba(33,38,44, 0.9);
    font-size: 1.2rem;
    line-height: 1.6rem;

    --mx-map-error-icon-color: #ff5b55;
    --mx-map-error-icon-size: 26px;
}

.mx_MapError.mx_MapError_isMinimised .mx_MapError_message {
        margin: 0;
        max-width: 275px;
    }

.mx_MapError.mx_MapError_isMinimised .mx_MapError_heading {
        padding-top: 8px;
        /* override h3 heading size */
        font-size: inherit !important;
        font-weight: normal !important;
    }

.mx_MapError_message {
    margin: 16px 0 32px;
}

.mx_MapError_heading {
    padding-top: 24px;
}

.mx_MapError_icon {
    height: var(--mx-map-error-icon-size);
}

.mx_MapError_icon path {
        fill: var(--mx-map-error-icon-color);
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MapFallback {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: relative;
    z-index: 0;

    background-color: #21262c;
}

.mx_MapFallback_bg {
    position: absolute;
    top: 0;
    left: 0;
    min-height: 100%;
    min-width: 100%;
    color: #394049;
    z-index: -1;

    pointer-events: none;
}

.mx_MapFallback_icon {
    width: 65px;
    margin-bottom: 16px;
    color: #6f7882;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Marker_defaultColor {
    color: #0dbd8b;
}

.mx_Marker_border {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    -webkit-filter: drop-shadow(0px 3px 5px rgba(0, 0, 0, 0.2));
            filter: drop-shadow(0px 3px 5px rgba(0, 0, 0, 0.2));
    background-color: currentColor;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

/* caret down */

.mx_Marker_border::before {
        content: "";
        border-left: 5px solid transparent;
        border-right: 5px solid transparent;
        border-top: 5px solid currentColor;
        position: absolute;
        bottom: -4px;
    }

.mx_Marker_icon {
    color: white;
    height: 20px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ShareDialogButtons {
    position: absolute;
    width: 100%;
    height: 0;
    top: 0;
}

.mx_ShareDialogButtons_button {
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    font-size: inherit;
    font-family: inherit;
    line-height: inherit;
    cursor: pointer;
    height: 24px;
    width: 24px;
    border-radius: 50%;
    background-color: #394049;
    opacity: 0.8;
    text-align: center;
    color: #a9b2bc;
    position: absolute;
    top: 16px;
}

.mx_ShareDialogButtons_button:hover,
    .mx_ShareDialogButtons_button:focus {
        opacity: 1;
    }

.mx_ShareDialogButtons_button.left {
        left: 16px;
    }

.mx_ShareDialogButtons_button.right {
        right: 16px;
    }

.mx_ShareDialogButtons_button-icon {
    height: 10px;
    margin-top: 3px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ShareType {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    padding: 60px 12px 32px;

    color: #ffffff;
}

.mx_ShareType .mx_ShareType_wrapper_options {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        grid-row-gap: 12px;
        row-gap: 12px;
        width: 100%;
        margin-top: 12px;
    }

.mx_ShareType .mx_ShareType_wrapper_options .mx_ShareType_option {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: start;
                -ms-flex-pack: start;
                    justify-content: flex-start;
            padding: 8px 20px;
            background: none;

            border: 1px solid #394049;
            border-radius: 8px;

            font-size: 1.5rem;
            font-family: inherit;
            line-height: inherit;
            color: #ffffff;
        }

.mx_ShareType .mx_ShareType_wrapper_options .mx_ShareType_option:hover,
            .mx_ShareType .mx_ShareType_wrapper_options .mx_ShareType_option:focus {
                border-color: #0dbd8b;
            }

.mx_ShareType_badge {
    height: 60px;
    width: 60px;
    margin-bottom: 20px;
    background-color: #0dbd8b;
    border-radius: 50%;
    border: 14px solid #0dbd8b;
    /* colors icon */
    color: white;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_ShareType_heading {
    padding-bottom: 32px;
    text-align: center;
}

.mx_ShareType_option-icon {
    height: 40px;
    width: 40px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    margin-right: 12px;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 40px;
            flex: 0 0 40px;
    border-width: 2px;
    border-style: solid;
    border-radius: 50%;
}

/* Live is styled by StyledLiveBeaconIcon */

.mx_ShareType_option-icon.Own {
        border-color: #0dbd8b;
    }

.mx_ShareType_option-icon.Pin {
        border-color: #0dbd8b;
        background-color: #0dbd8b;
        padding: 7px;
        /* colors icon */
        color: white;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ZoomButtons {
    position: absolute;
    bottom: 32px;
    right: 24px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    grid-row-gap: 8px;
    row-gap: 8px;
}

.mx_ZoomButtons .mx_ZoomButtons_button {

        border-radius: 4px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        height: 24px;
        width: 24px;
        background: #15191e;
        -webkit-box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.25);
                box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.25);
    }

.mx_ZoomButtons .mx_ZoomButtons_button .mx_ZoomButtons_icon {

            height: 10px;
            width: 10px;
            color: #ffffff;
        }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MBeaconBody {
    position: relative;
    height: 220px;
    max-width: 325px;
    width: 100%;

    border-radius: 8px;

    border-radius: var(--MBody-border-radius);
    overflow: hidden;
}

.mx_MBeaconBody.mx_MBeaconBody_withoutMap {
    height: auto;
}

.mx_MBeaconBody.mx_MBeaconBody_withoutMap .mx_MBeaconBody_chin {
        position: relative;
        background-color: transparent;
    }

.mx_MBeaconBody_withoutMapContent {
    background-color: rgba(33,38,44, 0.9);
    border-radius: 4px;
}

.mx_MBeaconBody_withoutMapInfoLastUpdated {
    /* 48px lines up with icon in BeaconStatus */
    margin-top: -8px;
    padding: 0 8px 8px 48px;

    color: #8e99a4;
    font-size: 1rem;
}

.mx_MBeaconBody_map {
    height: 100%;
    width: 100%;
    z-index: 0; /* keeps the entire map under the message action bars */

    cursor: pointer;
}

.mx_MBeaconBody_mapFallback,
.mx_MBeaconBody_mapError {
    /* pushes spinner/icon up */
    /* to appear more centered with the footer */
    padding-bottom: 50px !important;
}

.mx_MBeaconBody_mapErrorInteractive {
    cursor: pointer;
}

.mx_MBeaconBody_mapFallback {
    cursor: default;
}

.mx_MBeaconBody_chin {
    position: absolute;
    bottom: 0;
    width: 100%;
    background-color: rgba(21,25,30, 0.85);
}

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line .mx_MBeaconBody {
    max-width: 100%;
    width: 450px;
}

.mx_ReplyTile .mx_MBeaconBody {
    /* Prevent clicking a beacon within a reply */
    pointer-events: none;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MediaProcessingError_Icon {
    margin-right: 4px;
    vertical-align: text-top;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_WidgetPip {
    width: 320px;
    height: 220px;
    border-radius: 8px;
    contain: paint;
    color: #ffffff;
    cursor: pointer;
}

.mx_WidgetPip_header,
.mx_WidgetPip_footer {
    position: absolute;
    left: 0;
    height: 60px;
    width: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    -webkit-transition: opacity ease 0.15s;
    transition: opacity ease 0.15s;
}

.mx_WidgetPip:not(:hover) > .mx_WidgetPip_header, .mx_WidgetPip:not(:hover) > .mx_WidgetPip_footer {
        opacity: 0;
    }

.mx_WidgetPip_header {
    top: 0;
    padding: 12px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    font-size: 1.2rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.9)), to(rgba(0, 0, 0, 0)));
    background: linear-gradient(rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0));
}

.mx_WidgetPip_backButton {
    height: 24px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    grid-gap: 12px;
    gap: 12px;
}

.mx_WidgetPip_backButton > .mx_Icon {
        color: #c1c6cd;
        padding: 0;
    }

.mx_WidgetPip_footer {
    bottom: 0;
    padding: 12px 8px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    -webkit-box-align: end;
        -ms-flex-align: end;
            align-items: flex-end;
    background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.9)));
    background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.9));
}

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PollOption {
    border: 1px solid #394049;
    border-radius: 8px;
    padding: 6px 12px;
    background-color: #15191e;
}

.mx_PollOption .mx_StyledRadioButton_content,
    .mx_PollOption .mx_PollOption_endedOption {
        padding-top: 2px;
        margin-right: 0px;
    }

.mx_PollOption .mx_StyledRadioButton_spacer {
        display: none;
    }

.mx_PollOption,
/* label has cursor: default in user-agent stylesheet */
/* override */
.mx_PollOption_live-option {
    cursor: pointer;
}

.mx_PollOption_content {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
}

.mx_PollOption_optionVoteCount {
    color: #a9b2bc;
    font-size: 1.2rem;
    white-space: nowrap;
}

.mx_PollOption_winnerIcon {
    height: 12px;
    width: 12px;
    color: #0dbd8b;
    margin-right: 4px;
    vertical-align: middle;
}

.mx_PollOption_checked {
    border-color: #0dbd8b;

    /* override checked radio button styling*/
}

.mx_PollOption_checked .mx_PollOption_popularityBackground .mx_PollOption_popularityAmount {
            background-color: #0dbd8b;
        }

/* to show checkmark instead*/

.mx_PollOption_checked .mx_StyledRadioButton_checked input[type="radio"] + div {
            border-width: 2px;
            border-color: #0dbd8b;
            background-color: #0dbd8b;
            background-image: url(../../img/element-icons/check-white.1e3d7f7.svg);
            background-size: 12px;
            background-repeat: no-repeat;
            background-position: center;
        }

.mx_PollOption_checked .mx_StyledRadioButton_checked input[type="radio"] + div div {
                visibility: hidden;
            }

/* options not actionable in these states */

.mx_PollOption_checked,
.mx_PollOption_ended {
    pointer-events: none;
}

.mx_PollOption_popularityBackground {
    width: 100%;
    height: 8px;
    margin-right: 12px;
    border-radius: 8px;
    background-color: #21262c;
    margin-top: 8px;
}

.mx_PollOption_popularityBackground .mx_PollOption_popularityAmount {
        width: 0%;
        height: 8px;
        border-radius: 8px;
        background-color: #6f7882;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CurrentDeviceSection_deviceDetails {
    /* align with text of session tile*/
    margin-left: 56px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DeviceDetailHeading {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_DeviceDetailHeading_renameCta {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}

.mx_DeviceDetailHeading_renameForm {
    display: grid;
    grid-gap: 16px;
    -webkit-box-pack: left;
        -ms-flex-pack: left;
            justify-content: left;
    grid-template-columns: 100%;
}

.mx_DeviceDetailHeading_renameFormButtons {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    grid-gap: 8px;
    gap: 8px;
}

.mx_DeviceDetailHeading_renameFormButtons .mx_Spinner {
        width: auto;
        -webkit-box-flex: 0;
            -ms-flex-positive: 0;
                flex-grow: 0;
    }

.mx_DeviceDetailHeading_renameFormInput {
    /* override field styles*/
    margin: 0 0 4px 0 !important;
}

.mx_DeviceDetailHeading_renameFormHeading {
    margin: 0;
}

.mx_DeviceDetailHeading_renameFormError {
    color: #ff5b55;
    padding-right: 4px;
    display: block;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DeviceDetails {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;

    margin-top: 16px;
    padding: 24px;
    border-radius: 8px;
    border: 1px solid #394049;
}

.mx_DeviceDetails_section {
    padding-bottom: 20px;
    margin-bottom: 20px;
    border-bottom: 1px solid #394049;

    display: grid;
    grid-gap: 24px;
    -webkit-box-pack: left;
        -ms-flex-pack: left;
            justify-content: left;
    grid-template-columns: 100%;
}

.mx_DeviceDetails_section:last-child {
        padding-bottom: 0;
        border-bottom: 0;
        margin-bottom: 0;
    }

.mx_DeviceDetails_sectionHeading {
    margin: 0;
}

.mx_DeviceDetails_sectionHeading .mx_DeviceDetails_sectionSubheading {
        display: block;
        font-size: 1.2rem;
        color: #a9b2bc;
        line-height: 1.4rem;
        margin-top: 4px;
    }

.mx_DeviceDetails_metadataTable {
    font-size: 1.2rem;
    color: #a9b2bc;

    width: 100%;

    border-spacing: 0;
}

.mx_DeviceDetails_metadataTable th {
        text-transform: uppercase;
        font-weight: normal;
        text-align: left;
    }

.mx_DeviceDetails_metadataTable td {
        padding-top: 8px;
    }

.mx_DeviceDetails_metadataTable .mxDeviceDetails_metadataLabel {
        width: 160px;
    }

.mx_DeviceDetails_metadataTable .mxDeviceDetails_metadataValue {
        color: #ffffff;
    }

.mx_DeviceDetails_signOutButtonContent {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    grid-gap: 4px;
    gap: 4px;
}

.mx_DeviceDetails_pushNotifications {
    display: block;
}

.mx_DeviceDetails_pushNotifications .mx_ToggleSwitch {
        float: right;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DeviceExpandDetailsButton {
    height: 32px;
    width: 32px;
    background: transparent;

    border-radius: 4px;
    color: #a9b2bc;

    --icon-transform: rotate(-90deg);
}

.mx_DeviceExpandDetailsButton:hover {
        background: #394049;
    }

.mx_DeviceExpandDetailsButton.mx_DeviceExpandDetailsButton_expanded {
    --icon-transform: rotate(0deg);

    background: #21262c;
}

.mx_DeviceExpandDetailsButton.mx_DeviceExpandDetailsButton_expanded:hover {
        background: #394049;
    }

.mx_DeviceExpandDetailsButton_icon {
    height: 16px;
    width: 16px;

    -webkit-transition: all 0.3s;

    transition: all 0.3s;
    -webkit-transform: var(--icon-transform);
            transform: var(--icon-transform);
    -webkit-transform-origin: center;
            transform-origin: center;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DeviceSecurityCard {
    width: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;

    padding: 16px;

    border: 1px solid #394049;
    border-radius: 8px;
}

.mx_DeviceSecurityCard_icon {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 40px;
            flex: 0 0 40px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    margin-right: 16px;
    border-radius: 8px;

    height: 40px;
    width: 40px;

    color: var(--icon-color);
    background-color: var(--background-color);
}

.mx_DeviceSecurityCard_icon.Verified {
        --icon-color: #0dbd8b;
        --background-color: rgba(13,189,139, 0.06);
    }

.mx_DeviceSecurityCard_icon.Unverified {
        --icon-color: #ff5b55;
        --background-color: rgba(255,91,85, 0.06);
    }

.mx_DeviceSecurityCard_icon.Inactive {
        --icon-color: #a9b2bc;
        --background-color: #21262c;
    }

.mx_DeviceSecurityCard_content {
    -webkit-box-flex: 1;
        -ms-flex: 1 1;
            flex: 1 1;
}

.mx_DeviceSecurityCard_heading {
    margin: 0 0 4px 0;
}

.mx_DeviceSecurityCard_description {
    margin: 0;
    font-size: 1.2rem;
    color: #a9b2bc;
}

.mx_DeviceSecurityCard_actions {
    margin-top: 16px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DeviceTile {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    width: 100%;
}

.mx_DeviceTile_interactive {
    cursor: pointer;
}

.mx_DeviceTile_info {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
}

.mx_DeviceTile_metadata {
    margin-top: 4px;
    font-size: 1.2rem;
    color: #a9b2bc;
    line-height: 1.4rem;
}

.mx_DeviceTile_inactiveIcon {
    height: 14px;
    margin-right: 8px;
    vertical-align: middle;
}

.mx_DeviceTile_actions {
    display: grid;
    grid-gap: 8px;
    grid-auto-flow: column;
    margin-left: 8px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DeviceTypeIcon {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    position: relative;
    margin-right: 8px;
    /* creates space for verification icon to overlap */
    padding: 0 8px 8px 0;
}

.mx_DeviceTypeIcon_deviceIconWrapper {
    --background-color: #21262c;
    --icon-color: #a9b2bc;

    height: 40px;
    width: 40px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;

    border: 8px solid var(--background-color);
    border-radius: 50%;
    color: var(--icon-color);
    background-color: var(--background-color);
}

.mx_DeviceTypeIcon_selected .mx_DeviceTypeIcon_deviceIconWrapper {
    --background-color: #ffffff;
    --icon-color: #15191e;
}

.mx_DeviceTypeIcon_deviceIcon {
    height: 24px;
    width: 24px;
}

.mx_DeviceTypeIcon_verificationIcon {
    position: absolute;
    bottom: 0;
    right: 0;
    height: 24px;
    width: 24px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    padding: 4px;

    border: 1px solid #394049;
    border-radius: 50%;
    background-color: #15191e;

    color: var(--v-icon-color);
}

.mx_DeviceTypeIcon_verificationIcon.verified {
        --v-icon-color: #0dbd8b;
    }

.mx_DeviceTypeIcon_verificationIcon.unverified {
        --v-icon-color: #ff5b55;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_FilteredDeviceList .mx_Dropdown {
        -webkit-box-flex: 1;
            -ms-flex: 1 0 80px;
                flex: 1 0 80px;
    }

.mx_FilteredDeviceList_list {
    list-style-type: none;
    display: grid;
    grid-gap: 16px;
    margin: 0;
    padding: 0 16px;
}

.mx_FilteredDeviceList_listItem {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_FilteredDeviceList_securityCard {
    margin-bottom: 32px;
}

.mx_FilteredDeviceList_noResults {
    width: 100%;
    text-align: center;
    margin-bottom: 32px;
}

.mx_FilteredDeviceList_headerButton {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    /* override inline button styling*/
    display: -webkit-box !important;
    display: -ms-flexbox !important;
    display: flex !important;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    grid-gap: 8px;
    gap: 8px;
}

.mx_FilteredDeviceList_deviceDetails {
    /* align with text of session tile*/
    margin-left: 88px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_FilteredDeviceListHeader {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    grid-gap: 16px;
    gap: 16px;

    width: 100%;
    height: 48px;
    padding: 0 16px;
    margin-bottom: 32px;

    background-color: #21262c;
    border-radius: 8px;
    color: #a9b2bc;
}

.mx_FilteredDeviceListHeader_label {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 100%;
            flex: 1 1 100%;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SecurityRecommendations_spacing {
    height: 16px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SelectableDeviceTile {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    width: 100%;
}

.mx_SelectableDeviceTile_checkbox {
    -webkit-box-flex: 1;
        -ms-flex: 1 0;
            flex: 1 0;
}

.mx_SelectableDeviceTile_checkbox .mx_Checkbox_background + div {
        -webkit-box-flex: 1;
            -ms-flex: 1 0;
                flex: 1 0;
        /* override more specific selector */
        margin-left: 16px !important;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SettingsSubsection {
    width: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_SettingsSubsection_description {
    margin-top: 8px;
}

.mx_SettingsSubsection_text {
    width: 100%;
    -webkit-box-sizing: inherit;
            box-sizing: inherit;
    font-size: 1.5rem;
    color: #a9b2bc;
}

.mx_SettingsSubsection_content {
    width: 100%;
    display: grid;
    grid-gap: 8px;
    /* setting minwidth 0 makes columns definitely sized*/
    /* fixing horizontal overflow*/
    grid-template-columns: minmax(0, 1fr);
    justify-items: flex-start;
    margin-top: 24px;
}

.mx_SettingsSubsection_content summary {
        color: #0dbd8b;
    }

.mx_SettingsSubsection_content details[open] summary {
            margin-bottom: 8px;
        }

.mx_SettingsSubsection_content.mx_SettingsSubsection_contentStretch {
        justify-items: stretch;
    }

.mx_SettingsSubsection_content.mx_SettingsSubsection_noHeading {
        margin-top: 0;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SettingsSubsectionHeading {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;

    grid-gap: 8px;

    gap: 8px;
}

.mx_SettingsSubsectionHeading_heading {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 100%;
            flex: 1 1 100%;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_QuickThemeSwitcher {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_QuickThemeSwitcher .mx_Dropdown {
        min-width: 100px;
        margin-left: auto;
        height: -webkit-min-content;
        height: -moz-min-content;
        height: min-content;
    }

.mx_QuickThemeSwitcher .mx_Dropdown_menu {
        max-height: 70px;
    }

.mx_QuickThemeSwitcher_heading {
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    font-size: 1.2rem;
    line-height: 1.5rem;
    color: #a9b2bc;
    text-transform: uppercase;
    display: inline-block;
    margin: 0;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Caption {
    font-size: 1.2rem;
    color: #a9b2bc;
}

.mx_Caption.mx_Caption_error {
        color: #ff5b55;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/*
 * Compound icon

 * {@link https://www.figma.com/file/X4XTH9iS2KGJ2wFKDqkyed}
 */

.mx_Icon {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_Icon_accent {
    color: #0dbd8b;
}

.mx_Icon_bg-accent-light {
    background-color: rgba(13,189,139, 0.1);
}

.mx_Icon_alert {
    color: #ff5b55;
}

.mx_Icon_circle-40 {
    border-radius: 20px;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 40px;
            flex: 0 0 40px;
    height: 40px;
    padding: 0 12px;
    width: 40px;
}

.mx_Icon_8 {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 8px;
            flex: 0 0 8px;
    height: 8px;
    width: 8px;
}

.mx_Icon_10 {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 10px;
            flex: 0 0 10px;
    height: 10px;
    width: 10px;
}

.mx_Icon_12 {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 12px;
            flex: 0 0 12px;
    height: 12px;
    width: 12px;
}

.mx_Icon_16 {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 16px;
            flex: 0 0 16px;
    height: 16px;
    width: 16px;
}

.mx_Icon_24 {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 24px;
            flex: 0 0 24px;
    height: 24px;
    width: 24px;
}

.mx_Icon_32 {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 32px;
            flex: 0 0 32px;
    height: 32px;
    width: 32px;
}

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SuccessDialog {
    text-align: center;
}

.mx_SuccessDialog .mx_Icon {
        -webkit-mask-box-image: 16px;
                mask-border: 16px;
    }

.mx_SuccessDialog .mx_Dialog_header {
        margin: 0 0 16px;
        padding: 0;
    }

.mx_SuccessDialog .mx_Dialog_title {
        margin: 0;
    }

.mx_SuccessDialog .mx_Dialog_content {
        color: #a9b2bc;
        margin: 0 0 40px;
    }

.mx_SuccessDialog .mx_Dialog_buttons .mx_Dialog_buttons_row {
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
        }

.mx_SuccessDialog .mx_Dialog_buttons .mx_Dialog_buttons_row button.mx_Dialog_primary {
                height: 48px;
                min-width: 328px;
            }

/*
Copyright 2018 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* make any scrollbar grey and thin */

html {
    scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
}

/* scrollbar-width is not inherited (but -color is, why?!), */

/* so declare it on every element */

* {
    scrollbar-width: thin;
}

::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

::-webkit-scrollbar-thumb {
    border-radius: 3px;
    background-color: rgba(255, 255, 255, 0.2);
}

/* make auto-hide scrollbars not transparent again on hover */

.mx_AutoHideScrollbar:hover {
    scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
}

.mx_AutoHideScrollbar:hover::-webkit-scrollbar-thumb {
        background-color: rgba(255, 255, 255, 0.2);
    }

/* make scrollbars transparent for autohide scrollbars */

.mx_AutoHideScrollbar {
    overflow-x: hidden;
    overflow-y: auto;
    overflow-y: overlay; /* where supported */
    -ms-overflow-style: -ms-autohiding-scrollbar;
}

.mx_AutoHideScrollbar::-webkit-scrollbar {
        background-color: transparent;
    }

.mx_AutoHideScrollbar::-webkit-scrollbar-thumb {
        background-color: transparent;
    }

.mx_AutoHideScrollbar {

    scrollbar-color: transparent transparent;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AutocompleteInput {
    position: relative;
}

.mx_AutocompleteInput_search_icon {
    margin-left: 8px;
    fill: #a9b2bc;
}

.mx_AutocompleteInput_editor {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    overflow-x: hidden;
    overflow-y: auto;
    border: 1px solid rgba(231, 231, 231, 0.2);
    border-radius: 4px;
    -webkit-transition: border-color 0.25s;
    transition: border-color 0.25s;
}

.mx_AutocompleteInput_editor > input {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        min-width: 40%;
        resize: none;
        /* `!important` is required to bypass global input styles.*/
        margin: 0 !important;
        padding: 8px 9px;
        border: none !important;
        color: #ffffff !important;
        font-weight: normal !important;
    }

.mx_AutocompleteInput_editor > input::-webkit-input-placeholder {
            color: #ffffff !important;
            font-weight: normal !important;
        }

.mx_AutocompleteInput_editor > input::-moz-placeholder {
            color: #ffffff !important;
            font-weight: normal !important;
        }

.mx_AutocompleteInput_editor > input:-ms-input-placeholder {
            color: #ffffff !important;
            font-weight: normal !important;
        }

.mx_AutocompleteInput_editor > input::-ms-input-placeholder {
            color: #ffffff !important;
            font-weight: normal !important;
        }

.mx_AutocompleteInput_editor > input::placeholder {
            color: #ffffff !important;
            font-weight: normal !important;
        }

.mx_AutocompleteInput_editor--focused {
    border-color: #0086e6;
}

.mx_AutocompleteInput_editor--has-suggestions {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.mx_AutocompleteInput_editor_selection {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin-left: 8px;
}

.mx_AutocompleteInput_editor_selection_pill {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    border-radius: 12px;
    padding-left: 8px;
    padding-right: 8px;
    background-color: #368bd6;
    color: #ffffff;
    font-size: 1.2rem;
}

.mx_AutocompleteInput_editor_selection_remove_button {
    padding: 0 4px;
}

.mx_AutocompleteInput_matches {
    position: absolute;
    left: 0;
    right: 0;
    background-color: #15191e;
    border: 1px solid #0086e6;
    border-top-color: rgba(231, 231, 231, 0.2);
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
    z-index: 1000;
}

.mx_AutocompleteInput_suggestion {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: 8px;
    cursor: pointer;
}

.mx_AutocompleteInput_suggestion > * {
        -webkit-user-select: none;
           -moz-user-select: none;
            -ms-user-select: none;
                user-select: none;
    }

.mx_AutocompleteInput_suggestion:hover {
        background-color: #394049;
        border-bottom-left-radius: 4px;
        border-bottom-right-radius: 4px;
    }

.mx_AutocompleteInput_suggestion--selected {
    background-color: #394049;
}

.mx_AutocompleteInput_suggestion--selected:last-child {
        border-bottom-left-radius: 4px;
        border-bottom-right-radius: 4px;
    }

.mx_AutocompleteInput_suggestion_title {
    margin-right: 8px;
}

.mx_AutocompleteInput_suggestion_description {
    color: #a9b2bc;
    font-size: 1.2rem;
}

/*
Copyright 2021 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BackdropPanel {
    position: absolute;
    left: 0;
    top: 0;
    height: 100vh;
    width: 100%;
    overflow: hidden;
    -webkit-filter: blur(45px);
            filter: blur(45px);
    -webkit-filter: blur(var(--lp-background-blur));
            filter: blur(var(--lp-background-blur));
    /* Force a new layer for the backdropPanel so it's better hardware supported */
    -webkit-transform: translateZ(0);
            transform: translateZ(0);
}

.mx_BackdropPanel--image {
    position: absolute;
    top: 0;
    left: 0;
    min-height: 100%;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}

.mx_CompatibilityPage {
    width: 100%;
    height: 100%;
    background-color: #e55;
}

.mx_CompatibilityPage_box {
    position: absolute;
    inset: 0;
    margin: auto;
    width: 500px;
    height: 300px;
    border: 1px solid;
    padding: 10px;
    background-color: #fcc;
}

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ContextualMenu_wrapper {
    position: fixed;
    z-index: 5000;
}

.mx_ContextualMenu_background {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 1;
}

.mx_ContextualMenu {
    border-radius: 8px;
    -webkit-box-shadow: 4px 4px 12px 0 #15191e;
            box-shadow: 4px 4px 12px 0 #15191e;
    background-color: #20252b;
    color: #ffffff;
    position: absolute;
    font-size: 1.4rem;
    z-index: 5001;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
}

.mx_ContextualMenu_right {
    right: 16px;
}

.mx_ContextualMenu.mx_ContextualMenu_withChevron_right {
    right: 8px;
}

.mx_ContextualMenu_chevron_right {
    position: absolute;
    right: -8px;
    top: 0px;
    width: 0;
    height: 0;
    border-top: 8px solid transparent;
    border-left: 8px solid #20252b;
    border-bottom: 8px solid transparent;
}

.mx_ContextualMenu_left {
    left: 0;
}

.mx_ContextualMenu.mx_ContextualMenu_withChevron_left {
    left: 8px;
}

.mx_ContextualMenu_chevron_left {
    position: absolute;
    left: -8px;
    top: 0px;
    width: 0;
    height: 0;
    border-top: 8px solid transparent;
    border-right: 8px solid #20252b;
    border-bottom: 8px solid transparent;
}

.mx_ContextualMenu_top {
    top: 0;
}

.mx_ContextualMenu.mx_ContextualMenu_withChevron_top {
    top: 8px;
}

.mx_ContextualMenu_chevron_top {
    position: absolute;
    left: 0px;
    top: -8px;
    width: 0;
    height: 0;
    border-left: 8px solid transparent;
    border-bottom: 8px solid #20252b;
    border-right: 8px solid transparent;
}

.mx_ContextualMenu_bottom {
    bottom: 0;
}

.mx_ContextualMenu.mx_ContextualMenu_withChevron_bottom {
    bottom: 8px;
}

.mx_ContextualMenu_chevron_bottom {
    position: absolute;
    left: 0px;
    bottom: -8px;
    width: 0;
    height: 0;
    border-left: 8px solid transparent;
    border-top: 8px solid #20252b;
    border-right: 8px solid transparent;
}

.mx_ContextualMenu_rightAligned {
    -webkit-transform: translateX(-100%);
            transform: translateX(-100%);
}

.mx_ContextualMenu_bottomAligned {
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%);
}

/*Responsive design*/

@media (max-width: 1024px){
    /* .mx_ContextualMenu_wrapper{
        left: 0 !important;
    } */
    .mx_ContextualMenu_background{
        left: 0 !important;
    }
    .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType{
        width: auto !important;
    }
    .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu{
        width: 100vw !important;
    }
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ErrorMessage {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #ff5b55;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    font-size: 1.2rem;
    grid-gap: 8px;
    gap: 8px;
    line-height: 1.2em;
    min-height: 2.4em;
}

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

@-webkit-keyframes mx_FileDropTarget_animation {
    from {
        opacity: 0;
    }
    to {
        opacity: 0.95;
    }
}

@keyframes mx_FileDropTarget_animation {
    from {
        opacity: 0;
    }
    to {
        opacity: 0.95;
    }
}

.mx_FileDropTarget {
    min-width: 0;
    width: 100%;
    height: 100%;

    font-size: 1.8rem;
    text-align: center;

    pointer-events: none;

    background-color: #15191e;
    opacity: 0.95;

    position: absolute;
    z-index: 3000;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    -webkit-animation: mx_FileDropTarget_animation;

            animation: mx_FileDropTarget_animation;
    -webkit-animation-duration: 0.5s;
            animation-duration: 0.5s;
}

@-webkit-keyframes mx_FileDropTarget_image_animation {
    from {
        -webkit-transform: scaleX(0);
                transform: scaleX(0);
    }
    to {
        -webkit-transform: scaleX(1);
                transform: scaleX(1);
    }
}

@keyframes mx_FileDropTarget_image_animation {
    from {
        -webkit-transform: scaleX(0);
                transform: scaleX(0);
    }
    to {
        -webkit-transform: scaleX(1);
                transform: scaleX(1);
    }
}

.mx_FileDropTarget_image {
    width: 32px;
    -webkit-animation: mx_FileDropTarget_image_animation;
            animation: mx_FileDropTarget_image_animation;
    -webkit-animation-duration: 0.5s;
            animation-duration: 0.5s;
    margin-bottom: 16px;
}

/*
Copyright 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_FilePanel {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
    overflow-y: auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.mx_FilePanel .mx_RoomView_messageListWrapper {
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_FilePanel .mx_RoomView_MessageList {
        width: 100%;
    }

.mx_FilePanel .mx_RoomView_MessageList h2 {
            display: none;
        }

/* FIXME: rather than having EventTile's default CSS be for MessagePanel,
   we should make EventTile a base CSS class and customise it specifically
   for usage in {Message,File,Notification}Panel. */

.mx_FilePanel .mx_EventTile_avatar {
        display: none;
    }

/* Overrides for the attachment body tiles */

.mx_FilePanel .mx_EventTile {
        word-break: break-word;
        margin-top: 10px;
        padding-top: 0;
    }

.mx_FilePanel .mx_EventTile .mx_EventTile_line {
            -webkit-padding-start: 0;
                    padding-inline-start: 0;
        }

.mx_FilePanel .mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line, .mx_FilePanel .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line, .mx_FilePanel .mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line {
                    -webkit-box-shadow: none;
                            box-shadow: none;
                }

.mx_FilePanel .mx_EventTile .mx_MFileBody {
            line-height: 2.4rem;
        }

.mx_FilePanel .mx_EventTile .mx_MFileBody_download {
            padding-top: 8px;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: justify;
                -ms-flex-pack: justify;
                    justify-content: space-between;
            font-size: 1.4rem;
            color: #b9bec6;
        }

.mx_FilePanel .mx_EventTile .mx_MFileBody_download .mx_MImageBody_size {
                font-size: 1.4rem;
                text-align: right;
                white-space: nowrap;
            }

.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink {
            -webkit-box-flex: 1;
                -ms-flex: 1 1 auto;
                    flex: 1 1 auto;
            color: #c8c8cd;
        }

/* anchor link as wrapper */

.mx_FilePanel .mx_EventTile .mx_EventTile_senderDetailsLink {
            text-decoration: none;
        }

.mx_FilePanel .mx_EventTile .mx_EventTile_senderDetailsLink .mx_EventTile_senderDetails {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-pack: justify;
                    -ms-flex-pack: justify;
                        justify-content: space-between;
                margin-top: -2px;
            }

.mx_FilePanel .mx_EventTile .mx_EventTile_senderDetailsLink .mx_EventTile_senderDetails .mx_DisambiguatedProfile {
                    color: #b9bec6; /* for ellipsis. Color of displayName and mxid is inherited */
                }

.mx_FilePanel .mx_EventTile .mx_EventTile_senderDetailsLink .mx_EventTile_senderDetails .mx_MessageTimestamp {
                    text-align: right;
                    font-size: 1.4rem;
                }

.mx_FilePanel .mx_EventTile_line {
        -webkit-margin-end: 0;
                margin-inline-end: 0;
        -webkit-padding-start: 0;
                padding-inline-start: 0;
    }

.mx_FilePanel_empty::before {
    --maskImage: url(../../img/element-icons/room/files.ee097b4.svg); /* See: _RightPanel.pcss */
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_GenericDropdownMenu_button {
    padding: 3px 4px 3px 8px;
    border-radius: 4px;
    line-height: 1.5;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    font-size: 1.2rem;
    color: #a9b2bc;
}

.mx_GenericDropdownMenu_button:hover,
.mx_GenericDropdownMenu_button[aria-expanded="true"] {
    background: #394049;
}

.mx_GenericDropdownMenu_button::before {
    content: "";
    width: 18px;
    height: 18px;
    background: currentColor;
    -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
            mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
    -webkit-mask-size: 100%;
            mask-size: 100%;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    float: right;
}

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_ContextualMenu {
        position: static;
        position: initial;

        font-size: 1.2rem;
        color: #a9b2bc;
        padding-top: 10px;
        padding-bottom: 10px;

        border: 1px solid #394049;
        -webkit-box-shadow: 0 1px 3px rgba(23, 25, 28, 0.05);
                box-shadow: 0 1px 3px rgba(23, 25, 28, 0.05);
    }

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_ContextualMenu_chevron_top {
        left: auto;
        right: 22px;
        border-bottom-color: #394049;
    }

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_ContextualMenu_chevron_top::after {
            content: "";
            border: inherit;
            border-bottom-color: #20252b;
            position: absolute;
            top: 1px;
            left: -8px;
        }

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_GenericDropdownMenu_divider {
        display: block;
        height: 0;
        margin-left: 4px;
        margin-right: 19px;
        border-top: 1px solid #394049;
    }

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_GenericDropdownMenu_Option {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        padding: 10px 20px 10px 30px;
        position: relative;
    }

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_GenericDropdownMenu_Option > .mx_GenericDropdownMenu_Option--label {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;

            margin: 0;
        }

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_GenericDropdownMenu_Option > .mx_GenericDropdownMenu_Option--label span:first-child {
                color: #ffffff;
                font-weight: 600;
                font-weight: var(--font-semi-bold);
            }

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_GenericDropdownMenu_Option.mx_GenericDropdownMenu_Option--header > .mx_GenericDropdownMenu_Option--label span:first-child {
            font-size: 1.5rem;
        }

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_GenericDropdownMenu_Option.mx_GenericDropdownMenu_Option--item:hover {
                background-color: #343a46;
            }

.mx_ContextualMenu_wrapper.mx_GenericDropdownMenu_wrapper .mx_GenericDropdownMenu_Option.mx_GenericDropdownMenu_Option--item[aria-checked="true"]::before {
                content: "";
                width: 12px;
                height: 12px;
                margin-left: -20px;
                margin-right: 8px;
                -webkit-mask-image: url(../../img/feather-customised/check.94da327.svg);
                        mask-image: url(../../img/feather-customised/check.94da327.svg);
                -webkit-mask-size: 100%;
                        mask-size: 100%;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                background-color: #ffffff;
                display: inline-block;
                vertical-align: middle;
            }

.mx_GenericErrorPage {
    width: 100%;
    height: 100%;
    background-color: #fff;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
}

.mx_GenericErrorPage_box {
    display: inline;
    width: 500px;
    min-height: 125px;
    border: 1px solid #f22;
    padding: 10px 10px 20px;
    background-color: #fcc;
}

/*
Copyright 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_HomePage {
    max-width: 960px;
    width: 100%;
    height: 100%;
    margin-left: auto;
    margin-right: auto;
}

.mx_HomePage_default {
    text-align: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.mx_HomePage_default .mx_HomePage_default_wrapper {
        margin: auto;
    }

.mx_HomePage_default img {
        height: 48px;
    }

.mx_HomePage_default h1 {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 3.2rem;
        line-height: 4.4rem;
        margin-bottom: 4px;
    }

.mx_HomePage_default h2 {
        margin-top: 4px;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.8rem;
        line-height: 2.5rem;
        color: #91a1c0;
    }

.mx_HomePage_default .mx_MiniAvatarUploader {
        margin: 0 auto;
    }

.mx_HomePage_default .mx_HomePage_default_buttons {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        margin: 60px auto 0;
        width: -webkit-fit-content;
        width: -moz-fit-content;
        width: fit-content;
    }

.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton {
            padding: 73px 8px 15px; /* top: 20px top padding + 40px icon + 13px margin */

            width: 160px;
            min-height: 132px;
            margin: 20px;
            position: relative;
            display: inline-block;
            border-radius: 8px;
            vertical-align: top;
            word-break: break-word;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;

            font-weight: 600;

            font-weight: var(--font-semi-bold);
            font-size: 1.5rem;
            line-height: 2rem;
            color: #fff; /* on all themes */
            background-color: #0dbd8b;
        }

.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton::before {
                top: 20px;
                left: 60px; /* (160px-40px)/2 */
                width: 40px;
                height: 40px;

                content: "";
                position: absolute;
                background-color: #fff; /* on all themes */
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-size: contain;
                        mask-size: contain;
            }

.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_sendDm::before {
                -webkit-mask-image: url(../../img/element-icons/feedback.94401b2.svg);
                        mask-image: url(../../img/element-icons/feedback.94401b2.svg);
            }

.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_explore::before {
                -webkit-mask-image: url(../../img/element-icons/roomlist/explore.3bcee74.svg);
                        mask-image: url(../../img/element-icons/roomlist/explore.3bcee74.svg);
            }

.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_createGroup::before {
                -webkit-mask-image: url(../../img/element-icons/group-members.483392b.svg);
                        mask-image: url(../../img/element-icons/group-members.483392b.svg);
            }

/*Responsive Design*/

@media (max-width: 1024px){
    .mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton{
        width: 90px !important;
        margin: 10px !important;
    }
    .mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton::before{
        left: 25px !important;
    }
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LargeLoader {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    height: 100%;
}

.mx_LargeLoader .mx_Spinner {
        -webkit-box-flex: unset;
            -ms-flex: unset;
                flex: unset;
        height: auto;
        margin-bottom: 32px;
        margin-top: 33vh;
    }

.mx_LargeLoader .mx_LargeLoader_text {
        font-size: 24px;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        padding: 0 16px;
        position: relative;
        text-align: center;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MatrixChat--with-avatar .mx_LeftPanel,
    .mx_MatrixChat--with-avatar .mx_LeftPanel .mx_LeftPanel_roomListContainer {
        background-color: transparent;
    }

.mx_LeftPanel_outerWrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    max-width: 50%;
    position: relative;

    /* Contain the amount of layers rendered by constraining what actually needs re-layering via css */
    contain: layout paint;
}

.mx_LeftPanel_wrapper,
.mx_LeftPanel {
    --collapsedWidth: 68px;
}

.mx_LeftPanel_wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    height: 100%;
}

/* ensure space panel is still scrollable with an outer wrapper */

.mx_LeftPanel_wrapper .mx_LeftPanel_wrapper--user {
        background-color: rgba(33,38,44, 0.9);
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        overflow: hidden;
        position: relative;
    }

.mx_LeftPanel_wrapper .mx_LeftPanel_wrapper--user[data-collapsed] {
           
        }

.mx_LeftPanel {
    background-color: rgba(33,38,44, 0.9);

    /* Create a row-based flexbox for the space panel and the room list */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    contain: content;
    position: relative;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    overflow: hidden;

    /* Note: The 'room list' in this context is actually everything that isn't the tag */
}

/* panel, such as the menu options, breadcrumbs, filtering, etc */

.mx_LeftPanel .mx_LeftPanel_roomListContainer {
        background-color: rgba(33,38,44, 0.9);
        -webkit-box-flex: 1;
            -ms-flex: 1 0 0px;
                flex: 1 0 0;
        min-width: 0;
        /* Create another flexbox (this time a column) for the room list components */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader {
            /* 12px top, 12px sides, 20px bottom (using 13px bottom to account
             * for internal whitespace in the breadcrumbs)
             */
            padding: 12px;
            -ms-flex-negative: 0;
                flex-shrink: 0; /* to convince safari's layout engine the flexbox is fine */

            /* Create another flexbox column for the rows to stack within */
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
        }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer {
            overflow-y: hidden;
            overflow-x: scroll;
            margin: 12px 12px 0 12px;
            -webkit-box-flex: 0;
                -ms-flex: 0 0 auto;
                    flex: 0 0 auto;
            /* Create yet another flexbox, this time within the row, to ensure items stay */
            /* aligned correctly. This is also a row-based flexbox. */
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            contain: content;
        }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_leftOverflow {
                -webkit-mask-image: -webkit-gradient(linear, left top, right top, from(transparent), color-stop(5%, black));
                -webkit-mask-image: linear-gradient(90deg, transparent, black 5%);
                        mask-image: -webkit-gradient(linear, left top, right top, from(transparent), color-stop(5%, black));
                        mask-image: linear-gradient(90deg, transparent, black 5%);
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow {
                -webkit-mask-image: -webkit-gradient(linear, left top, right top, from(black), color-stop(95%, black), to(transparent));
                -webkit-mask-image: linear-gradient(90deg, black, black 95%, transparent);
                        mask-image: -webkit-gradient(linear, left top, right top, from(black), color-stop(95%, black), to(transparent));
                        mask-image: linear-gradient(90deg, black, black 95%, transparent);
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow.mx_IndicatorScrollbar_leftOverflow {
                -webkit-mask-image: -webkit-gradient(linear, left top, right top, from(transparent), color-stop(5%, black), color-stop(95%, black), to(transparent));
                -webkit-mask-image: linear-gradient(90deg, transparent, black 5%, black 95%, transparent);
                        mask-image: -webkit-gradient(linear, left top, right top, from(transparent), color-stop(5%, black), color-stop(95%, black), to(transparent));
                        mask-image: linear-gradient(90deg, transparent, black 5%, black 95%, transparent);
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer {
            margin: 0 12px;
            padding: 12px 0 8px;
            border-bottom: 1px solid #394049;

            -ms-flex-negative: 0;

                flex-shrink: 0; /* to convince safari's layout engine the flexbox is fine */

            /* Create a flexbox to organize the inputs */
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
        }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer + .mx_RoomListHeader {
                margin-top: 12px;
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_dialPadButton {
                width: 32px;
                height: 32px;
                border-radius: 8px;
                background-color: rgba(141,151,165, 0.2);
                position: relative;
                margin-left: 8px;
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_dialPadButton::before {
                    content: "";
                    position: absolute;
                    top: 8px;
                    left: 8px;
                    width: 16px;
                    height: 16px;
                    -webkit-mask-image: url(../../img/element-icons/call/dialpad.6276d21.svg);
                            mask-image: url(../../img/element-icons/call/dialpad.6276d21.svg);
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-size: contain;
                            mask-size: contain;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    background-color: #a9b2bc;
                }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton,
            .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_recentsButton {
                width: 32px;
                height: 32px;
                border-radius: 8px;
                background-color: rgba(141,151,165, 0.2);
                position: relative;
                margin-left: 8px;
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton::before, .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_recentsButton::before {
                    content: "";
                    position: absolute;
                    top: 8px;
                    left: 8px;
                    width: 16px;
                    height: 16px;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-size: contain;
                            mask-size: contain;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    background-color: #a9b2bc;
                }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton:hover, .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_recentsButton:hover {
                    background-color: #8e99a4;
                }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton:hover::before, .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_recentsButton:hover::before {
                        background-color: #15191e;
                    }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton::before {
                -webkit-mask-image: url(../../img/element-icons/roomlist/explore.3bcee74.svg);
                        mask-image: url(../../img/element-icons/roomlist/explore.3bcee74.svg);
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_recentsButton::before {
                -webkit-mask-image: url(../../img/element-icons/clock.96a6b33.svg);
                        mask-image: url(../../img/element-icons/clock.96a6b33.svg);
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_RoomListHeader:first-child {
            margin-top: 12px;
        }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper {
            /* Make the y-scrollbar more responsive */
            padding-right: 2px;
            overflow: hidden;
            margin-top: 10px; /* so we're not up against the search/filter */
            -webkit-box-flex: 1;
                -ms-flex: 1 0 0px;
                    flex: 1 0 0;
        }

/* needed in Safari to properly set flex-basis */

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyBottom {
                padding-bottom: 32px;
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyTop {
                padding-top: 32px;
            }

.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_actualRoomListContainer {
            position: relative; /* for sticky headers */
            height: 100%; /* ensure scrolling still works */
        }

/* These styles override the defaults for the minimized (66px) layout */

.mx_LeftPanel.mx_LeftPanel_minimized {
        -webkit-box-flex: 0;
            -ms-flex-positive: 0;
                flex-grow: 0;
        min-width: unset;
        width: unset !important;
    }

.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer {
            width: var(--collapsedWidth);
        }

.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader {
                -webkit-box-orient: horizontal;
                -webkit-box-direction: normal;
                    -ms-flex-direction: row;
                        flex-direction: row;
                -webkit-box-pack: center;
                    -ms-flex-pack: center;
                        justify-content: center;
            }

.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer {
                /* Organize the flexbox into a centered column layout */
                -webkit-box-orient: vertical;
                -webkit-box-direction: normal;
                    -ms-flex-direction: column;
                        flex-direction: column;
                -webkit-box-pack: center;
                    -ms-flex-pack: center;
                        justify-content: center;
            }

.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_dialPadButton {
                    margin-left: 0;
                    margin-top: 8px;
                    background-color: transparent;
                }

.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton,
                .mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_recentsButton {
                    margin-left: 0;
                    margin-top: 8px;
                }

/**/

.LeftPanel_closeBtn {
    display: none;
}

#mobile_Panel {
    display: none;
}

/*Responsive design*/

@media (max-width: 1024px) {
    .mx_LeftPanel_outerWrapper {
        display: none;
    }

    #mobile_Panel {
        /* border: 2px solid red; */
        display: none;
        position: fixed;
        top: 0;
        left: 0;
        width: 100vw; /* Full viewport width */
        height: 100vh; /* Full viewport height */
        background-color: #fff; /* Background color */
        z-index: 1000; /* High z-index to overlay other content */
        -webkit-transition: all 0.3s ease;
        transition: all 0.3s ease;
    } /* Smooth transition */

        #mobile_Panel .mx_LeftPanel_wrapper--user {
            width: 100vw;
        }

    .LeftPanel_closeBtn {
        display: none;
        position: absolute;
        font-size: 35px;
        top: 50px;
        background-color: transparent !important;
        right: 15px;
        z-index: 10;
    }
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MainSplit {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    min-width: 0;
    min-height: 0;
    height: 100%;
}

.mx_MainSplit > .mx_RightPanel_ResizeWrapper {
    padding: 8px;
    padding: var(--container-gap-width);
    /* The resizer should be centered: only half of the gap-width is handled by the right panel. */
    /* The other half by the RoomView. */
    padding-left: calc(8px / 2);
    padding-left: calc(var(--container-gap-width) / 2);
    height: calc(100vh - 51px);
}

/* height of .mx_RoomHeader.light-panel */

.mx_MainSplit > .mx_RightPanel_ResizeWrapper:hover .mx_ResizeHandle--horizontal::before {
        position: absolute;
        top: 50%;
        left: 50%;
        -webkit-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%);

        height: 64px; /* to match width of the ones on roomlist */
        width: 4px;
        border-radius: 4px;

        content: "";

        background-color: #ffffff;
        opacity: 0.8;
    }

/*Responsive design*/

@media (max-width: 1024px){
    .mx_RightPanel_ResizeWrapper{
        position: absolute !important;
        top: 38px;
        right: 0;
        height: 90% !important;
    }
}

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MatrixChat_splash {
    position: relative;
    height: 100%;
}

.mx_MatrixChat_splashButtons {
    text-align: center;
    width: 100%;
    position: absolute;
    bottom: 30px;
}

.mx_MatrixChat_wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;

    width: 100%;
    height: 100%;
}

.mx_MatrixToolbar {
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;

    height: 40px;
}

.mx_MatrixChat {
    position: relative;
    width: 100%;
    height: 100%;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;

    -webkit-box-flex: 1;

        -ms-flex: 1;

            flex: 1;
    min-height: 0;
}

.mx_MatrixChat_syncError {
    color: #ffffff;
    background-color: #df2a8b; /* Only used here */
    border-radius: 5px;
    display: table;
    padding: 30px;
    position: absolute;
    top: 100px;
    left: 50%;
    -webkit-transform: translateX(-50%);
            transform: translateX(-50%);
}

/* not the left panel, and not the resize handle, so the roomview and friends */

.mx_MatrixChat > :not(.mx_LeftPanel):not(.mx_SpacePanel):not(.mx_ResizeHandle):not(.mx_LeftPanel_outerWrapper) {
    background-color: #15191e;

    -webkit-box-flex: 1;

        -ms-flex: 1 1 0px;

            flex: 1 1 0;
    min-width: 0;

    /* To fix https://github.com/vector-im/element-web/issues/3298 where Safari
       needed height 100% all the way down to the HomePage. Height does not
       have to be auto, empirically.
    */
    height: 100%;
}

/* We'd like to remove this, but this makes matrixchat's resizehandle's */

/* negative margin greater than its positive padding. If it's the same */

/* or less, Safari and other WebKit based browsers get confused about overflows somehow and */

/* https://github.com/vector-im/element-web/issues/19863 happens. */

.mx_MatrixChat > .mx_ResizeHandle.mx_ResizeHandle--horizontal {
    margin: 0 calc(-5.5px - 8px / 2) 0 calc(-6.5px + 8px / 2);
    margin: 0 calc(-5.5px - var(--container-gap-width) / 2) 0 calc(-6.5px + var(--container-gap-width) / 2);
    /* The condition to prevent bleeding is: (margin-left + margin-right < -11px) */
    /* (IF there is NO margin on the leftPanel_wrapper) */
    /* The resizeHandle does not change the gap between the left panel and the room view: */
    /*  the resizeHandle width is: */
    /*      11px =  10px (padding) + 1px (width) */
    /*      and the total negative margin is -12px -> */
    /*      the handle requires no space */
    /* right: -6px left: -6px positions the element exactly on the edge of leftPanel. */
    /* left+=1 and right-=1 => resizeHandle moves 1px to the right closer to the center of the gap. */
    /* We want the handle to be in the middle of the gap so it is shifted by (var(--container-gap-width) / 2) */
}

.mx_MatrixChat > .mx_ResizeHandle--horizontal:hover {
    position: relative;
}

.mx_MatrixChat > .mx_ResizeHandle--horizontal:hover::before {
        position: absolute;
        top: 50%;
        left: 50%;
        -webkit-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%);

        height: 64px; /* to match width of the ones on roomlist */
        width: 4px;
        border-radius: 4px;

        content: " ";

        background-color: #ffffff;
        opacity: 0.8;
    }

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MessagePanel_myReadMarker {
    height: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

.mx_MessagePanel_myReadMarker hr {
        border-top: solid 1px #0dbd8b;
        border-bottom: solid 1px #0dbd8b;
        margin-top: 0;
        position: relative;
        top: -1px;
        z-index: 1;
        will-change: width;
        -webkit-transition: width 400ms easeinsine 1s, opacity 400ms easeinsine 1s;
        transition: width 400ms easeinsine 1s, opacity 400ms easeinsine 1s;
        width: 99%;
        opacity: 1;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_NonUrgentToastContainer {
    position: absolute;
    bottom: 30px;
    left: 28px;
    z-index: 101;
}

/* same level as other toasts */

.mx_NonUrgentToastContainer .mx_NonUrgentToastContainer_toast {
        padding: 10px 12px;
        border-radius: 8px;
        width: 320px;
        font-size: 1.3rem;
        margin-top: 8px;

        /* We don't use variables on the colours because we want it to be the same */
        /* in all themes. */
        background-color: #17191c;
        color: #fff;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_NotificationPanel_empty::before {
    --maskImage: url(../../img/element-icons/notifications.b4d3969.svg); /* See: _RightPanel.pcss */
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_QuickSettingsButton {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    border-radius: 8px;
    position: relative;
    margin: 12px auto;
    color: #a9b2bc;
    min-width: 32px;
    min-height: 32px;
    line-height: 32px;
}

.mx_QuickSettingsButton.expanded {
        margin-left: 20px;
        padding-left: 44px; /* align with toggle collapse button text */
        padding-right: 8px;
    }

.mx_QuickSettingsButton::before {
        content: "";
        position: absolute;
        width: 32px;
        height: 32px;
        left: 0;
        -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
                mask-image: url(../../img/element-icons/settings.0c529f2.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: 16px;
                mask-size: 16px;
        background: #a9b2bc;
    }

.mx_QuickSettingsButton:not(.expanded):hover {
        background-color: #6f7882;
    }

.mx_QuickSettingsButton:not(.expanded):hover::before {
            background-color: #ffffff;
        }

.mx_QuickSettingsButton_ContextMenuWrapper .mx_ContextualMenu {
    padding: 16px;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    min-width: 200px;
    contain: unset;
}

/* let the dropdown paint beyond the context menu */

.mx_QuickSettingsButton_ContextMenuWrapper .mx_ContextualMenu > div > h2 {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.5rem;
        line-height: 2.4rem;
        color: #ffffff;
        margin: 0 0 16px;
    }

.mx_QuickSettingsButton_ContextMenuWrapper .mx_ContextualMenu .mx_AccessibleButton_hasKind {
        display: block;
        margin-top: 4px;
    }

.mx_QuickSettingsButton_ContextMenuWrapper .mx_ContextualMenu > div > h4 {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.2rem;
        line-height: 1.5rem;
        text-transform: uppercase;
        color: #8e99a4;
        margin: 20px 0 12px;
    }

.mx_QuickSettingsButton_ContextMenuWrapper .mx_ContextualMenu .mx_QuickSettingsButton_pinToSidebarHeading {
        padding-left: 24px;
        position: relative;
    }

.mx_QuickSettingsButton_ContextMenuWrapper .mx_ContextualMenu .mx_Checkbox {
        margin-bottom: 8px;
    }

.mx_QuickSettingsButton_ContextMenuWrapper .mx_ContextualMenu .mx_QuickSettingsButton_favouritesCheckbox .mx_Checkbox_background + div, .mx_QuickSettingsButton_ContextMenuWrapper .mx_ContextualMenu .mx_QuickSettingsButton_peopleCheckbox .mx_Checkbox_background + div {
            padding-left: 22px;
            position: relative;
            margin-left: 6px;
            font-size: 1.5rem;
            line-height: 2.4rem;
            color: #a9b2bc;
        }

.mx_QuickSettingsButton_ContextMenuWrapper .mx_ContextualMenu .mx_QuickSettingsButton_moreOptionsButton {
        padding-left: 22px;
        margin-left: 22px;
        font-size: 1.5rem;
        line-height: 2.4rem;
        color: #a9b2bc;
        position: relative;
        margin-bottom: 16px;
    }

/* TODO remove when all icons have fill=currentColor*/

.mx_QuickSettingsButton_icon * {
        fill: #a9b2bc;
    }

.mx_QuickSettingsButton_icon {
    color: #a9b2bc;
    width: 16px;
    height: 16px;
    position: absolute;
    left: 0;
    top: 50%;
    -webkit-transform: translateY(-50%);
            transform: translateY(-50%);
}

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RightPanel {
    overflow-x: hidden;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    position: relative;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    border-radius: 8px;
    padding: 8px 0;
    padding: var(--container-border-width) 0;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    height: 100%;
    contain: strict;
}

.mx_RightPanel .mx_RoomView_MessageList {
        padding: 14px 18px; /* top and bottom is 4px smaller to balance with the padding set above */
    }

/** Fixme - factor this out with the main header **/

.mx_RightPanel_threadsButton::before {
    -webkit-mask-image: url(../../img/element-icons/room/thread.b1c1a60.svg);
            mask-image: url(../../img/element-icons/room/thread.b1c1a60.svg);
}

.mx_RightPanel_notifsButton::before {
    -webkit-mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
            mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
    -webkit-mask-position: center;
            mask-position: center;
}

.mx_RightPanel_roomSummaryButton::before {
    -webkit-mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
            mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
    -webkit-mask-position: center;
            mask-position: center;
}

.mx_RightPanel_pinnedMessagesButton::before {
        -webkit-mask-image: url(../../img/element-icons/room/pin.8acecb2.svg);
                mask-image: url(../../img/element-icons/room/pin.8acecb2.svg);
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_RightPanel_timelineCardButton::before {
        -webkit-mask-image: url(../../img/element-icons/feedback.94401b2.svg);
                mask-image: url(../../img/element-icons/feedback.94401b2.svg);
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_RightPanel .mx_MemberList,
.mx_RightPanel .mx_MemberInfo {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
}

.mx_RightPanel .mx_RoomView_messagePanelSpinner {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
    margin: auto;
}

.mx_RightPanel_empty {
    margin-right: -28px;
}

.mx_RightPanel_empty h2 {
        font-weight: 700;
        margin: 16px 0;
    }

.mx_RightPanel_empty h2,
    .mx_RightPanel_empty p {
        font-size: 1.4rem;
    }

.mx_RightPanel_empty::before {
        content: "";
        display: block;
        margin: 11px auto 29px auto;
        height: 42px;
        width: 42px;
        background-color: #b9bec6;
        -webkit-mask-image: var(--maskImage);
                mask-image: var(--maskImage);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_RightPanel_scopeHeader {
    margin: 24px;
    text-align: center;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    font-size: 1.8rem;
    line-height: 2.2rem;
}

.mx_RightPanel_scopeHeader .mx_BaseAvatar {
        margin-right: 8px;
        vertical-align: middle;
    }

.mx_RightPanel_scopeHeader .mx_BaseAvatar_image {
        border-radius: 8px;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* Note: this component expects to be contained within a flexbox */

.mx_RoomSearch {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    min-width: 0;
    border-radius: 8px;
    background-color: rgba(141,151,165, 0.2);
    /* keep border thickness consistent to prevent movement */
    border: 1px solid transparent;
    height: 28px;
    padding: 1px;

    /* Create a flexbox for the icons (easier to manage) */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    cursor: pointer;
}

.mx_RoomSearch .mx_RoomSearch_icon {
        width: 16px;
        height: 16px;
        -webkit-mask: url(../../img/element-icons/roomlist/search.df3ab87.svg);
                mask: url(../../img/element-icons/roomlist/search.df3ab87.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        background-color: #a9b2bc;
        margin-left: 7px;
        margin-bottom: 2px;
        -ms-flex-negative: 0;
            flex-shrink: 0;
    }

.mx_RoomSearch .mx_RoomSearch_spotlightTriggerText {
        font-size: 1.2rem;
        line-height: 1.6rem;
        color: #8e99a4;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        min-width: 0;
        /* the following rules are to match that of a real input field */
        overflow: hidden;
        margin: 9px;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_RoomSearch .mx_RoomSearch_shortcutPrompt {
        border-radius: 6px;
        background-color: rgba(141,151,165, 0.2);
        padding: 2px 4px;
        -webkit-user-select: none;
           -moz-user-select: none;
            -ms-user-select: none;
                user-select: none;
        font-size: 1.2rem;
        line-height: 1.5rem;
        font-family: inherit;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        color: #c8c8cd;
        margin-right: 6px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

.mx_RoomSearch.mx_RoomSearch_minimized {
        height: 32px;
        min-height: 32px;
        width: 32px;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
    }

.mx_RoomSearch.mx_RoomSearch_minimized .mx_RoomSearch_icon {
            margin: 0 auto;
            padding: 1px;
            -ms-flex-item-align: center;
                align-self: center;
        }

.mx_RoomSearch.mx_RoomSearch_minimized .mx_RoomSearch_shortcutPrompt {
            display: none;
        }

.mx_RoomSearch:hover {
        background-color: #8e99a4;
    }

.mx_RoomSearch:hover .mx_RoomSearch_spotlightTriggerText {
            color: #15191e;
        }

.mx_RoomSearch:hover .mx_RoomSearch_shortcutPrompt {
            background-color: #15191e;
            color: #a9b2bc;
        }

.mx_RoomSearch:hover .mx_RoomSearch_icon {
            background-color: #15191e;
        }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages) {
    margin-left: 65px;
    min-height: 50px;
}

.mx_RoomStatusBar_typingIndicatorAvatars {
    width: 52px;
    margin-top: -1px;
    text-align: left;
}

.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image {
    margin-right: -12px;
    border: 1px solid #15191e;
}

.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial {
    padding-left: 1px;
    padding-top: 1px;
}

.mx_RoomStatusBar_typingIndicatorRemaining {
    display: inline-block;
    color: #acacac;
    background-color: #ddd;
    border: 1px solid #15191e;
    border-radius: 40px;
    width: 24px;
    height: 24px;
    line-height: 2.4rem;
    font-size: 0.8em;
    vertical-align: top;
    text-align: center;
    position: absolute;
}

.mx_RoomStatusBar_scrollDownIndicator {
    cursor: pointer;
    padding-left: 1px;
}

.mx_RoomStatusBar_unreadMessagesBar {
    padding-top: 10px;
    color: #ff5b55;
    cursor: pointer;
}

.mx_RoomStatusBar_connectionLostBar {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;

    margin-top: 19px;
    min-height: 58px;
}

.mx_RoomStatusBar_unsentMessages > div[role="alert"] {
        /* cheat some basic alignment */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        min-height: 70px;
        margin: 12px;
        padding-left: 16px;
        background-color: #20252b;
        border-radius: 4px;
    }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge {
        margin-right: 12px;
    }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge {
            /* Override sizing from the default badge */
            width: 24px !important;
            height: 24px !important;
            border-radius: 24px !important;
        }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge .mx_NotificationBadge_count {
                font-size: 1.6rem !important; /* override default */
            }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentTitle {
        color: #ff5b55;
        font-size: 1.5rem;
    }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentDescription {
        font-size: 1.2rem;
    }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar {
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        text-align: right;
        margin-right: 22px;
        color: #91a1c0;
    }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton {
            padding: 5px 10px;
            padding-left: 30px; /* 18px for the icon, 2px margin to text, 10px regular padding */
            display: inline-block;
            position: relative;
            -webkit-user-select: none;
               -moz-user-select: none;
                -ms-user-select: none;
                    user-select: none;
        }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:nth-child(2) {
                border-left: 1px solid rgba(185,190,198, 0.74);
            }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton::before {
                content: "";
                position: absolute;
                left: 10px; /* inset for regular button padding */
                background-color: #91a1c0;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: contain;
                        mask-size: contain;
                width: 18px;
                height: 18px;
                top: 50%; /* text sizes are dynamic */
                -webkit-transform: translateY(-50%);
                        transform: translateY(-50%);
            }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentCancelAllBtn::before {
                -webkit-mask-image: url(../../img/element-icons/trashcan.3e3b8b7.svg);
                        mask-image: url(../../img/element-icons/trashcan.3e3b8b7.svg);
            }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentRetry {
                padding-left: 34px;
            }

/* 28px from above, but +6px to account for the wider icon */

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentRetry::before {
                    -webkit-mask-image: url(../../img/element-icons/retry.2bad236.svg);
                            mask-image: url(../../img/element-icons/retry.2bad236.svg);
                }

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner {
            vertical-align: middle;
            margin-right: 5px;
            top: 1px;
        }

/* just to help the vertical alignment be slightly better */

.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner + span {
                margin-right: 10px; /* same margin/padding as the rightmost button */
            }

.mx_RoomStatusBar_connectionLostBar svg {
    padding-left: 10px;
    padding-right: 10px;
    vertical-align: middle;
    float: left;
}

.mx_RoomStatusBar_connectionLostBar_title {
    color: #ff5b55;
}

.mx_RoomStatusBar_connectionLostBar_desc {
    color: #ffffff;
    font-size: 1.3rem;
    opacity: 0.5;
    padding-bottom: 20px;
}

.mx_RoomStatusBar_resend_link {
    color: #ffffff !important;
    text-decoration: underline !important;
    cursor: pointer;
}

.mx_RoomStatusBar_typingBar {
    height: 50px;
    line-height: 5rem;

    color: #ffffff;
    opacity: 0.5;
    overflow-y: hidden;
    display: block;
}

.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages) {
        min-height: 40px;
    }

.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator {
        margin-top: 10px;
    }

.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar {
        height: 40px;
        line-height: 4rem;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

:root {
    --RoomView_MessageList-padding: 18px;
}

.mx_RoomView_wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    position: relative;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    /* Contain the amount of layers rendered by constraining what actually needs re-layering via css */
    contain: strict;
}

.mx_RoomView {
    word-wrap: break-word;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    position: relative;
}

.mx_RoomView .mx_MainSplit {
        -webkit-box-flex: 1;
            -ms-flex: 1 1 0px;
                flex: 1 1 0;
    }

.mx_RoomView .mx_MessageComposer {
        width: 100%;
        -webkit-box-flex: 0;
            -ms-flex: 0 0 auto;
                flex: 0 0 auto;
        margin-right: 2px;
    }

.mx_RoomView_auxPanel_hiddenHighlights {
    border-bottom: 1px solid transparent;
    padding: 10px 26px;
    color: #ff5b55;
    cursor: pointer;
}

.mx_RoomView_messagePanel {
    width: 100%;
    overflow-y: auto;
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
    overflow-anchor: none;
}

.mx_RoomView_messagePanelSearchSpinner {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    background-image: url(../../img/typing-indicator-2x.fd4568d.gif);
    background-position: center 367px;
    background-size: 25px;
    background-repeat: no-repeat;
    position: relative;
}

.mx_RoomView_messagePanelSearchSpinner::before {
        background-color: #888;
        -webkit-mask: url(../../img/feather-customised/search-input.1871d4f.svg);
                mask: url(../../img/feather-customised/search-input.1871d4f.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: 50px;
                mask-size: 50px;
        content: "";
        position: absolute;
        top: 286px;
        left: 0;
        right: 0;
        height: 50px;
    }

.mx_RoomView_body {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    min-width: 0;
}

.mx_RoomView_body .mx_RoomView_messagePanel,
    .mx_RoomView_body .mx_RoomView_messagePanelSpinner,
    .mx_RoomView_body .mx_RoomView_messagePanelSearchSpinner {
        -webkit-box-ordinal-group: 3;
            -ms-flex-order: 2;
                order: 2;
    }

.mx_RoomView_body .mx_RoomView_timeline {
        /* offset parent for mx_RoomView_topUnreadMessagesBar  */
        position: relative;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        margin-right: calc(8px / 2);
        margin-right: calc(var(--container-gap-width) / 2);
    }

.mx_RoomView_statusArea {
    width: 100%;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;

    max-height: 0px;
    background-color: #15191e;
    z-index: 1000;
    overflow: hidden;

    -webkit-transition: all 0.2s ease-out;

    transition: all 0.2s ease-out;
}

.mx_RoomView_statusArea_expanded {
    max-height: 100px;
}

.mx_RoomView_statusAreaBox {
    margin: auto;
    min-height: 50px;
}

.mx_RoomView_statusAreaBox_line {
    margin-left: 65px;
    border-top: 1px solid transparent;
    height: 1px;
}

.mx_RoomView_messageListWrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    position: relative;
}

.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper {
        -webkit-box-pack: start;
            -ms-flex-pack: start;
                justify-content: flex-start;
    }

.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper > .mx_RoomView_MessageList > li > ol {
            list-style-type: none;
        }

.mx_RoomView_searchResultsPanel a {
        text-decoration: none;
        color: inherit;
    }

.mx_RoomView_empty {
    font-size: 1.3rem;
    padding: 0 24px;
    margin-right: 30px;
    text-align: center;
    margin-bottom: 80px; /* visually center the content (intentional offset) */
}

.mx_RoomView_MessageList {
    list-style-type: none;
    padding: 18px;
    padding: var(--RoomView_MessageList-padding); /* mx_ProfileResizer depends on this value */
    margin: 0;
    /* needed as min-height is set to clientHeight in ScrollPanel
    to prevent shrinking when WhoIsTypingTile is hidden */
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_RoomView_MessageList li {
        clear: both;
    }

.mx_ScrollPanel .mx_RoomView_MessageList {
        position: relative;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end;

        content-visibility: auto;
        contain-intrinsic-size: 50px;
    }

.mx_RoomView--local .mx_ScrollPanel .mx_RoomView_MessageList {
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

/* Rooms with immersive content */

.mx_RoomView_immersive .mx_RoomHeader_wrapper {
    border: unset;
}

.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line {
        margin-top: 2px;
        border: none;
        height: 0px;
    }

.mx_RoomView_inCall .mx_MessageComposer_wrapper {
        border-top: 2px hidden;
        padding-top: 1px;
    }

.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList {
        margin-bottom: 4px;
    }

.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2 {
            margin-top: 6px;
        }

.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox {
        min-height: 42px;
    }

@-webkit-keyframes mx_Indicator_pulse {
    0% {
        -webkit-transform: scale(0.95);
                transform: scale(0.95);
    }

    70% {
        -webkit-transform: scale(1);
                transform: scale(1);
    }

    100% {
        -webkit-transform: scale(0.95);
                transform: scale(0.95);
    }
}

@keyframes mx_Indicator_pulse {
    0% {
        -webkit-transform: scale(0.95);
                transform: scale(0.95);
    }

    70% {
        -webkit-transform: scale(1);
                transform: scale(1);
    }

    100% {
        -webkit-transform: scale(0.95);
                transform: scale(0.95);
    }
}

@-webkit-keyframes mx_Indicator_pulse_shadow {
    0% {
        opacity: 0.7;
    }

    70% {
        -webkit-transform: scale(2.2);
                transform: scale(2.2);
        opacity: 0;
    }

    100% {
        opacity: 0;
    }
}

@keyframes mx_Indicator_pulse_shadow {
    0% {
        opacity: 0.7;
    }

    70% {
        -webkit-transform: scale(2.2);
                transform: scale(2.2);
        opacity: 0;
    }

    100% {
        opacity: 0;
    }
}

.mx_Indicator {
    position: absolute;
    right: -3px;
    top: -3px;
    width: 8px;
    width: var(--RoomHeader-indicator-dot-size);
    height: 8px;
    height: var(--RoomHeader-indicator-dot-size);
    border-radius: 50%;
    -webkit-transform: scale(1);
            transform: scale(1);
    background: rgba(#ff5b55, 1);
    background: rgba(var(--RoomHeader-indicator-pulseColor), 1);
    -webkit-box-shadow: 0 0 0 0 rgba(#ff5b55, 1);
            box-shadow: 0 0 0 0 rgba(#ff5b55, 1);
    -webkit-box-shadow: 0 0 0 0 rgba(var(--RoomHeader-indicator-pulseColor), 1);
            box-shadow: 0 0 0 0 rgba(var(--RoomHeader-indicator-pulseColor), 1);
    -webkit-animation: mx_Indicator_pulse 2s infinite;
            animation: mx_Indicator_pulse 2s infinite;
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1;
}

.mx_Indicator::after {
        content: "";
        position: absolute;
        width: inherit;
        height: inherit;
        top: 0;
        left: 0;
        -webkit-transform: scale(1);
                transform: scale(1);
        -webkit-transform-origin: center center;
                transform-origin: center center;
        -webkit-animation-name: mx_Indicator_pulse_shadow;
                animation-name: mx_Indicator_pulse_shadow;
        -webkit-animation-duration: inherit;
                animation-duration: inherit;
        -webkit-animation-iteration-count: inherit;
                animation-iteration-count: inherit;
        border-radius: 50%;
        background: inherit;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SearchBox {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
    min-width: 0;
}

.mx_SearchBox.mx_SearchBox_blurred:not(:hover) {
        background-color: transparent;
    }

.mx_SearchBox .mx_SearchBox_closeButton {
        cursor: pointer;
        background-image: url(../../img/icons-close.dbfb7ae.svg);
        background-repeat: no-repeat;
        width: 16px;
        height: 16px;
        background-position: center;
        padding: 9px;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SpaceRoomView_landing .mx_AccessibleButton_kind_link {
        font-size: inherit;
    }

.mx_SpaceRoomView_landing .mx_SearchBox {
        margin: 24px 0 16px;
    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_noResults {
        text-align: center;
    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_noResults > div {
            font-size: 1.5rem;
            line-height: 2.4rem;
            color: #a9b2bc;
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_listHeader {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-flow: wrap;
            flex-flow: wrap;
        -webkit-box-pack: justify;
            -ms-flex-pack: justify;
                justify-content: space-between;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        grid-gap: 12px;
        gap: 12px;
        font-size: 1.5rem;
        line-height: 2.4rem;
        color: #ffffff;
        margin-bottom: 12px;
    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_listHeader .mx_SpaceHierarchy_listHeader_header {
            grid-column-start: 1;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            margin: 0;
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_listHeader .mx_SpaceHierarchy_listHeader_buttons {
            grid-column-start: 2;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -ms-flex-flow: wrap;
                flex-flow: wrap;
            grid-gap: 12px;
            gap: 12px;
            min-height: 32px;
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_listHeader .mx_SpaceHierarchy_listHeader_buttons .mx_AccessibleButton {
                padding: 4px 12px;
                font-weight: normal;
            }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_listHeader .mx_AccessibleButton_kind_danger_outline,
        .mx_SpaceRoomView_landing .mx_SpaceHierarchy_listHeader .mx_AccessibleButton_kind_primary_outline {
            padding: 3px 12px; /* to account for the 1px border */
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_error {
        position: relative;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        color: #ff5b55;
        font-size: 1.5rem;
        line-height: 1.8rem;
        margin: 20px auto 12px;
        padding-left: 24px;
        width: -webkit-max-content;
        width: -moz-max-content;
        width: max-content;
    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_error::before {
            content: "";
            position: absolute;
            height: 16px;
            width: 16px;
            left: 0;
            background-image: url(../../img/element-icons/warning-badge.3cf4d1a.svg);
            background-size: cover;
            background-repeat: no-repeat;
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_roomCount > h3 {
            display: inline;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            font-size: 1.8rem;
            line-height: 2.2rem;
            color: #ffffff;
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_roomCount > span {
            margin-left: 8px;
            font-size: 1.5rem;
            line-height: 2.4rem;
            color: #a9b2bc;
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_subspace .mx_BaseAvatar_image {
            border-radius: 8px;
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_subspace_toggle {
        position: absolute;
        left: -1px;
        top: 10px;
        height: 16px;
        width: 16px;
        border-radius: 4px;
        background-color: #15191e;
    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_subspace_toggle::before {
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            height: 16px;
            width: 16px;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-position: center;
                    mask-position: center;
            background-color: #8e99a4;
            -webkit-mask-size: 16px;
                    mask-size: 16px;
            -webkit-transform: rotate(270deg);
                    transform: rotate(270deg);
            -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                    mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_subspace_toggle.mx_SpaceHierarchy_subspace_toggle_shown::before {
            -webkit-transform: rotate(0deg);
                    transform: rotate(0deg);
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_subspace_children {
        position: relative;
        padding-left: 12px;
    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list {
        list-style: none;
        padding: 0;
        margin: 0;
    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper {
            list-style: none;
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile {
                position: relative;
                padding: 8px 16px;
                border-radius: 8px;
                -webkit-box-sizing: border-box;
                        box-sizing: border-box;

                display: -webkit-box;

                display: -ms-flexbox;

                display: flex;
                -ms-flex-wrap: wrap;
                    flex-wrap: wrap;
                grid-gap: 6px 12px;
                gap: 6px 12px;
            }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item {
                    font-weight: 600;
                    font-weight: var(--font-semi-bold);
                    font-size: 1.5rem;
                    line-height: 1.8rem;
                    display: grid;
                    grid-template-columns: 20px auto;
                    grid-gap: 6px 8px;
                    gap: 6px 8px;
                    -webkit-box-align: center;
                        -ms-flex-align: center;
                            align-items: center;
                    -webkit-box-flex: 1;
                        -ms-flex: 1;
                            flex: 1;
                }

/* wrap action buttons */

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_avatar {
                        grid-row: 1;
                        grid-column: 1;
                    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name {
                        grid-row: 1;
                        grid-column: 2;
                    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name .mx_InfoTooltip,
                        .mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name .mx_SpaceHierarchy_roomTile_joined {
                            margin-left: 12px;
                            color: #8e99a4;
                            font-size: 1.2rem;
                            line-height: 1.5rem;
                        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon, .mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name .mx_SpaceHierarchy_roomTile_joined .mx_InfoTooltip_icon {
                                margin-right: 4px;
                                position: relative;
                                vertical-align: text-top;
                            }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon::before, .mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name .mx_SpaceHierarchy_roomTile_joined .mx_InfoTooltip_icon::before {
                                    position: absolute;
                                    top: 0;
                                    left: 0;
                                }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name .mx_InfoTooltip {
                            display: inline-block;
                        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name .mx_SpaceHierarchy_roomTile_joined {
                            display: inline;
                            position: relative;
                            padding-left: 16px;
                        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_name .mx_SpaceHierarchy_roomTile_joined::before {
                                content: "";
                                width: 20px;
                                height: 20px;
                                top: -2px;
                                left: -4px;
                                position: absolute;
                                -webkit-mask-position: center;
                                        mask-position: center;
                                -webkit-mask-size: contain;
                                        mask-size: contain;
                                -webkit-mask-repeat: no-repeat;
                                        mask-repeat: no-repeat;
                                background-color: #0dbd8b;
                                -webkit-mask-image: url(../../img/element-icons/roomlist/checkmark.8e909d3.svg);
                                        mask-image: url(../../img/element-icons/roomlist/checkmark.8e909d3.svg);
                            }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_roomTile_item .mx_SpaceHierarchy_roomTile_info {
                        grid-row: 2;
                        grid-column: 2;
                        font-size: 1.4rem;
                        font-weight: normal;
                        font-weight: initial;
                        line-height: 1.8rem;
                        color: #a9b2bc;
                        display: -webkit-box;
                        -webkit-box-orient: vertical;
                        -webkit-line-clamp: 2;
                        overflow: hidden;
                    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_actions {
                    display: -webkit-box;
                    display: -ms-flexbox;
                    display: flex;
                    -webkit-box-align: center;
                        -ms-flex-align: center;
                            align-items: center;
                    grid-column-gap: 12px;
                    -webkit-column-gap: 12px;
                       -moz-column-gap: 12px;
                            column-gap: 12px;
                    margin-left: auto;
                }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_actions .mx_AccessibleButton {
                        line-height: 2.4rem;
                        padding: 4px 16px;
                        display: inline-block;
                        visibility: hidden;
                    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_actions .mx_AccessibleButton_kind_danger_outline,
                    .mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_actions .mx_AccessibleButton_kind_primary_outline {
                        padding: 3px 16px; /* to account for the 1px border */
                    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_actions .mx_Checkbox {
                        display: -webkit-inline-box;
                        display: -ms-inline-flexbox;
                        display: inline-flex;
                    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile .mx_SpaceHierarchy_actions .mx_Checkbox label {
                            width: 16px;
                            height: 16px;
                        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile:hover,
                .mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile:focus-within {
                    background-color: rgba(38, 39, 43, 0.82);
                }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile:hover .mx_AccessibleButton, .mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile:focus-within .mx_AccessibleButton {
                        visibility: visible;
                    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_list li.mx_SpaceHierarchy_roomTileWrapper .mx_SpaceHierarchy_roomTile.mx_SpaceHierarchy_joining .mx_AccessibleButton {
                        visibility: visible;
                        padding: 4px 18px;
                    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_roomTile::before, .mx_SpaceRoomView_landing .mx_SpaceHierarchy_subspace_children::before {
            content: "";
            position: absolute;
            background-color: rgba(38, 39, 43, 0.82);
            width: 1px;
            height: 100%;
            left: 6px;
            top: 0;
        }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_actions .mx_SpaceHierarchy_actionsText {
            font-weight: normal;
            font-size: 1.2rem;
            line-height: 1.5rem;
            color: #a9b2bc;
        }

.mx_SpaceRoomView_landing > hr {
        border: none;
        height: 1px;
        background-color: rgba(141, 151, 165, 0.2);
        margin: 20px 0;
    }

.mx_SpaceRoomView_landing .mx_SpaceHierarchy_createRoom {
        display: block;
        margin: 16px auto 0;
        width: -webkit-max-content;
        width: -moz-max-content;
        width: max-content;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SpacePanel {
    --activeBackground-color: rgba(141,151,165, 0.2);
    --activeBorder-color: #ffffff;
    --activeBorder-transparent-gap: 1px;
    --gutterSize: 16px;
    --height-nested: 24px;
    --height-topLevel: 32px;

    background-color: rgba(38, 39, 43, 0.82);
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    padding: 0;
    margin: 0;
    position: relative;
    /* Fix for the blurred avatar-background */
    z-index: 1;

    /* Create another flexbox so the Panel fills the container */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_SpacePanel .mx_SpacePanel_toggleCollapse {
        position: absolute;
        width: 18px;
        height: 18px;
        border-radius: 50%;
        background-color: #8e99a4;
        top: 19px; /* v-align with avatar */
        right: -8px;
    }

.mx_SpacePanel .mx_SpacePanel_toggleCollapse::before {
            content: "";
            position: absolute;
            width: inherit;
            height: inherit;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background-color: #15191e;
            -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                    mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
            -webkit-transform: rotate(270deg);
                    transform: rotate(270deg);
        }

.mx_SpacePanel .mx_SpacePanel_toggleCollapse:not(.expanded) {
            opacity: 0;
        }

.mx_SpacePanel .mx_SpacePanel_toggleCollapse:not(.expanded)::before {
                -webkit-mask-position: center 1px;
                        mask-position: center 1px;
            }

.mx_SpacePanel .mx_SpacePanel_toggleCollapse.expanded::before {
            -webkit-transform: rotate(90deg);
                    transform: rotate(90deg);
        }

.mx_SpacePanel:hover .mx_SpacePanel_toggleCollapse {
        opacity: 1;
    }

.mx_SpacePanel ul {
        margin: 0;
        list-style: none;
        padding: 0;
    }

.mx_SpacePanel .mx_SpaceButton_toggleCollapse {
        cursor: pointer;
    }

.mx_SpacePanel .mx_SpaceItem_dragging .mx_SpaceButton_toggleCollapse {
            visibility: hidden;
        }

.mx_SpacePanel .mx_SpaceItem {
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex;
        -ms-flex-flow: wrap;
            flex-flow: wrap;
    }

.mx_SpacePanel .mx_SpaceItem.mx_SpaceItem_narrow {
            -ms-flex-item-align: baseline;
                align-self: baseline;
        }

.mx_SpacePanel .mx_SpaceItem.collapsed > .mx_SpaceButton > .mx_SpaceButton_toggleCollapse {
            padding: 0 10px;
            margin: 0 -10px;
            -webkit-transform: rotate(-90deg);
                    transform: rotate(-90deg);
        }

.mx_SpacePanel .mx_SpaceItem.collapsed > .mx_SpaceTreeLevel {
            display: none;
        }

.mx_SpacePanel .mx_SpaceItem_new {
        position: relative;
    }

.mx_SpacePanel .mx_SpaceItem:not(.hasSubSpaces) > .mx_SpaceButton {
        margin-left: var(--gutterSize);
        min-width: 40px;
    }

.mx_SpacePanel .mx_SpaceButton {
        border-radius: 8px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        padding: 4px 4px 4px 0;
        width: 100%;
        cursor: pointer;
    }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper {
                background-color: var(--activeBackground-color);
            }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active.mx_SpaceButton_narrow .mx_SpaceButton_selectionWrapper {
                padding: var(--activeBorder-transparent-gap);
                border: 3px var(--activeBorder-color) solid;
            }

.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_selectionWrapper {
            position: relative;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            border-radius: 12px;
            padding: 4px;
            width: calc(100% - 32px);
            min-width: 0;
        }

.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_name {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            margin-left: 8px;
            white-space: nowrap;
            display: block;
            text-overflow: ellipsis;
            overflow: hidden;
            font-size: 1.4rem;
            line-height: 1.8rem;
        }

.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_toggleCollapse {
            width: var(--gutterSize);
            padding: 10px 0;
            min-width: var(--gutterSize);
            height: 20px;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: 20px;
                    mask-size: 20px;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background-color: #8e99a4;
            -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                    mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
        }

.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon {
            width: var(--height-topLevel);
            min-width: var(--height-topLevel);
            height: var(--height-topLevel);
            border-radius: 8px;
            position: relative;
        }

.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon::before {
                position: absolute;
                content: "";
                width: var(--height-topLevel);
                height: var(--height-topLevel);
                top: 0;
                left: 0;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-size: 18px;
                        mask-size: 18px;
            }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon, .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_favourites .mx_SpaceButton_icon, .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_people .mx_SpaceButton_icon, .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_orphans .mx_SpaceButton_icon {
                background-color: rgba(141,151,165, 0.2);
            }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon::before, .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_favourites .mx_SpaceButton_icon::before, .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_people .mx_SpaceButton_icon::before, .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_orphans .mx_SpaceButton_icon::before {
                    background-color: #a9b2bc;
                }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon::before {
            -webkit-mask-image: url(../../img/element-icons/home.70cb677.svg);
                    mask-image: url(../../img/element-icons/home.70cb677.svg);
        }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_favourites .mx_SpaceButton_icon::before {
            -webkit-mask-image: url(../../img/element-icons/roomlist/favorite.b47f7d4.svg);
                    mask-image: url(../../img/element-icons/roomlist/favorite.b47f7d4.svg);
        }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_people .mx_SpaceButton_icon::before {
            -webkit-mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
                    mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
        }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_orphans .mx_SpaceButton_icon::before {
            -webkit-mask-image: url(../../img/element-icons/roomlist/hash-circle.6635c7b.svg);
                    mask-image: url(../../img/element-icons/roomlist/hash-circle.6635c7b.svg);
        }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon::before {
                background-color: #ffffff;
                -webkit-mask-image: url(../../img/element-icons/plus.baac2b4.svg);
                        mask-image: url(../../img/element-icons/plus.baac2b4.svg);
                -webkit-transition: all 0.2s ease-in-out;
                transition: all 0.2s ease-in-out; /* TODO transition */
            }

.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon::before {
            -webkit-transform: rotate(45deg);
                    transform: rotate(45deg);
        }

.mx_SpacePanel .mx_SpaceButton .mx_BaseAvatar_image {
            border-radius: 8px;
        }

.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton {
            width: 20px;
            min-width: 20px; /* yay flex */
            height: 20px;
            margin-top: auto;
            margin-bottom: auto;
            display: none;
            position: absolute;
            right: 4px;
        }

.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton::before {
                top: 3px;
                left: 2px;
                content: "";
                width: 16px;
                height: 16px;
                position: absolute;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: contain;
                        mask-size: contain;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-image: url(../../img/element-icons/context-menu.131c13c.svg);
                        mask-image: url(../../img/element-icons/context-menu.131c13c.svg);
                background: #ffffff;
            }

.mx_SpacePanel .mx_SpaceTreeLevel {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        max-width: 250px;
        min-width: 0;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
    }

.mx_SpacePanel .mx_SpaceTreeLevel .mx_BaseAvatar:not(.mx_UserMenu_userAvatar_BaseAvatar) .mx_BaseAvatar_initial {
            color: #a9b2bc;
            border-radius: 8px;
            background-color: rgba(141,151,165, 0.2);
            font-size: 1.5rem !important; /* override inline style */
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            line-height: 1.8rem;
        }

.mx_SpacePanel .mx_SpaceTreeLevel .mx_BaseAvatar:not(.mx_UserMenu_userAvatar_BaseAvatar) .mx_BaseAvatar_initial + .mx_BaseAvatar_image {
                visibility: hidden;
            }

.mx_SpacePanel .mx_SpaceTreeLevel .mx_SpaceTreeLevel {
            /* Indent subspaces*/
            padding-left: 16px;
        }

.mx_SpacePanel .mx_SpaceButton_avatarWrapper {
        position: relative;
    }

.mx_SpacePanel .mx_SpacePanel_badgeContainer {
        /* Create a flexbox to make aligning dot badges easier */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        position: absolute;
        right: -3px;
        top: -3px;
    }

.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge {
            margin: 0 2px; /* centering */
            background-clip: padding-box;
        }

.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot {
            /* make the smaller dot occupy the same width for centering */
            margin: 0 -1px 0 0;
            border: 3px solid rgba(38, 39, 43, 0.82);
        }

.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_2char,
        .mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_3char {
            margin: -5px -5px 0 0;
            border: 2px solid rgba(38, 39, 43, 0.82);
        }

.mx_SpacePanel .mx_SpaceButton:hover:not(.mx_SpaceButton_narrow):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton, .mx_SpacePanel .mx_SpaceButton:focus-within:not(.mx_SpaceButton_narrow):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton, .mx_SpacePanel .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_narrow):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton {
            display: block;
        }

.mx_SpacePanel .mx_SpaceItem:not(.mx_SpaceItem_new) .mx_SpaceButton:hover:not(.mx_SpaceButton_narrow):not(.mx_SpaceButton_invite) .mx_SpaceButton_name, .mx_SpacePanel .mx_SpaceItem:not(.mx_SpaceItem_new) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_narrow):not(.mx_SpaceButton_invite) .mx_SpaceButton_name, .mx_SpacePanel .mx_SpaceItem:not(.mx_SpaceItem_new) .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_narrow):not(.mx_SpaceButton_invite) .mx_SpaceButton_name {
                max-width: calc(100% - 56px);
            }

/* root space buttons are bigger and not indented */

.mx_SpacePanel > .mx_AutoHideScrollbar {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        padding: 0 8px 16px 0;
    }

.mx_SpacePanel > .mx_AutoHideScrollbar > .mx_SpaceButton {
            height: var(--height-topLevel);
        }

.mx_SpacePanel > .mx_AutoHideScrollbar > .mx_SpaceButton.mx_SpaceButton_active::before {
                height: var(--height-topLevel);
            }

.mx_SpacePanel > .mx_AutoHideScrollbar > ul {
            padding-left: 0;
        }

.mx_SpacePanel > .mx_AutoHideScrollbar.mx_IndicatorScrollbar_topOverflow {
            -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(5%, black));
            -webkit-mask-image: linear-gradient(180deg, transparent, black 5%);
                    mask-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(5%, black));
                    mask-image: linear-gradient(180deg, transparent, black 5%);
        }

.mx_SpacePanel > .mx_AutoHideScrollbar.mx_IndicatorScrollbar_bottomOverflow {
            -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(black), color-stop(95%, black), to(transparent));
            -webkit-mask-image: linear-gradient(180deg, black, black 95%, transparent);
                    mask-image: -webkit-gradient(linear, left top, left bottom, from(black), color-stop(95%, black), to(transparent));
                    mask-image: linear-gradient(180deg, black, black 95%, transparent);
        }

.mx_SpacePanel > .mx_AutoHideScrollbar.mx_IndicatorScrollbar_topOverflow.mx_IndicatorScrollbar_bottomOverflow {
            -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(5%, black), color-stop(95%, black), to(transparent));
            -webkit-mask-image: linear-gradient(180deg, transparent, black 5%, black 95%, transparent);
                    mask-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(5%, black), color-stop(95%, black), to(transparent));
                    mask-image: linear-gradient(180deg, transparent, black 5%, black 95%, transparent);
        }

.mx_SpacePanel .mx_UserMenu {
        padding: 0 2px 8px;
        border-bottom: 1px solid #394049;
        margin: 12px 14px 4px 18px;
    }

.mx_SpacePanel_contextMenu {
    max-width: 360px;
}

.mx_SpacePanel_contextMenu .mx_SpacePanel_contextMenu_header {
        margin: 12px 16px 12px;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.5rem;
        line-height: 1.8rem;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_iconHome::before {
        -webkit-mask-image: url(../../img/element-icons/home.70cb677.svg);
                mask-image: url(../../img/element-icons/home.70cb677.svg);
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_iconInvite::before {
        -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
                mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_iconSettings::before {
        -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
                mask-image: url(../../img/element-icons/settings.0c529f2.svg);
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_iconLeave::before {
        -webkit-mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
                mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_iconMembers::before {
        -webkit-mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
                mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_iconPlus::before {
        -webkit-mask-image: url(../../img/element-icons/plus.baac2b4.svg);
                mask-image: url(../../img/element-icons/plus.baac2b4.svg);
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_iconExplore::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/hash-search.4e9dba5.svg);
                mask-image: url(../../img/element-icons/roomlist/hash-search.4e9dba5.svg);
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_iconPreferences::before {
        -webkit-mask-image: url(../../img/element-icons/settings/preference.ee8ee5b.svg);
                mask-image: url(../../img/element-icons/settings/preference.ee8ee5b.svg);
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_noIcon {
        display: none;
    }

.mx_SpacePanel_contextMenu .mx_SpacePanel_noIcon + .mx_IconizedContextMenu_label {
            padding-left: 5px !important; /* override default iconized label style to align with header */
        }

.mx_SpacePanel_contextMenu .mx_SpacePanel_contextMenu_separatorLabel {
        color: #8e99a4;
        font-size: 1rem;
        line-height: 1.2rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        /*margin-left: 8px;*/
    }

.mx_SpacePanel_sharePublicSpace {
    margin: 0;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SpaceRoomView {
    --innerWidth: 428px;

    overflow-y: auto;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
}

.mx_SpaceRoomView .mx_MainSplit > div:first-child {
        padding: 80px 60px;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        max-height: 100%;
        overflow-y: auto;
    }

.mx_SpaceRoomView .mx_MainSplit > div:first-child h1 {
            margin: 0;
            font-size: 2.4rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            color: #ffffff;
            width: -webkit-max-content;
            width: -moz-max-content;
            width: max-content;
        }

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_description {
            font-size: 1.5rem;
            color: #a9b2bc;
            margin-top: 12px;
            margin-bottom: 24px;
            max-width: var(--innerWidth);
        }

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_AddExistingToSpace {
            max-width: var(--innerWidth);
        }

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_AddExistingToSpace .mx_AddExistingToSpace_content {
                height: calc(100vh - 360px);
                max-height: 400px;
            }

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_buttons {
            display: block;
            margin-top: 44px;
            width: var(--innerWidth);
            text-align: right;
        }

/* button alignment right */

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_buttons .mx_AccessibleButton_hasKind {
                padding: 8px 22px;
                margin-left: 16px;
            }

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_buttons input.mx_AccessibleButton {
                border: none; /* override default styles */
            }

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_Field {
            max-width: var(--innerWidth);
        }

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_Field + .mx_Field {
                margin-top: 28px;
            }

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_errorText {
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            font-size: 1.2rem;
            line-height: 1.5rem;
            color: #ff5b55;
            margin-bottom: 28px;
        }

.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_AccessibleButton_disabled {
            cursor: not-allowed;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_landing {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        min-width: 0;
    }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_header {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: justify;
                -ms-flex-pack: justify;
                    justify-content: space-between;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_header .mx_BaseAvatar {
                width: 80px;
            }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_header .mx_BaseAvatar .mx_BaseAvatar_image {
                    border-radius: 12px;
                }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name {
            margin: 24px 0 16px;
            font-size: 1.5rem;
            color: #a9b2bc;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name > span {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-orient: vertical;
                -webkit-box-direction: normal;
                    -ms-flex-flow: column;
                        flex-flow: column;
                grid-gap: 12px 0;
                gap: 12px 0;
            }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name > span h1 {
                    display: inline-block;
                    overflow: hidden;
                    text-overflow: ellipsis;
                    white-space: nowrap;
                    width: 100%;
                }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_inviter .mx_BaseAvatar {
                    margin-right: 4px;
                    vertical-align: middle;
                }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: justify;
                -ms-flex-pack: justify;
                    justify-content: space-between;
            grid-gap: 12px;
            gap: 12px;
            -ms-flex-wrap: wrap;
                flex-wrap: wrap;
            line-height: 2.4rem;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -ms-flex-wrap: wrap;
                    flex-wrap: wrap;
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
                grid-gap: 12px 12px;
                gap: 12px 12px;
            }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_FacePile {
                    display: inline-block;
                }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_FacePile .mx_FacePile_faces {
                        cursor: pointer;
                    }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_SpaceRoomView_landing_inviteButton,
                .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_SpaceRoomView_landing_settingsButton {
                    position: relative;
                }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_SpaceRoomView_landing_inviteButton::before, .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_SpaceRoomView_landing_settingsButton::before {
                        position: absolute;
                        content: "";
                        -webkit-mask-position: center;
                                mask-position: center;
                        -webkit-mask-repeat: no-repeat;
                                mask-repeat: no-repeat;
                    }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_SpaceRoomView_landing_inviteButton {
                    padding: 4px 18px 4px 40px;
                    height: -webkit-min-content;
                    height: -moz-min-content;
                    height: min-content;
                }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_SpaceRoomView_landing_inviteButton::before {
                        left: 8px;
                        height: 16px;
                        width: 16px;
                        background: #fff; /* white icon fill */
                        -webkit-mask-size: 16px;
                                mask-size: 16px;
                        -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
                                mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
                    }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_SpaceRoomView_landing_settingsButton {
                    width: 24px;
                    height: 24px;
                }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_infoBar .mx_SpaceRoomView_landing_infoBar_interactive .mx_SpaceRoomView_landing_settingsButton::before {
                        left: 0;
                        top: 0;
                        height: 24px;
                        width: 24px;
                        background: #8e99a4;
                        -webkit-mask-size: contain;
                                mask-size: contain;
                        -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
                                mask-image: url(../../img/element-icons/settings.0c529f2.svg);
                    }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_topic {
            font-size: 1.5rem;
            margin-top: 12px;
            margin-bottom: 16px;
            white-space: pre-wrap;
            word-wrap: break-word;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SearchBox {
            margin: 0 0 20px;
            -webkit-box-flex: 0;
                -ms-flex: 0;
                    flex: 0;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton {
            position: relative;
            padding: 16px 32px 16px 72px;
            width: 432px;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            border-radius: 8px;
            border: 1px solid rgba(231, 231, 231, 0.2);
            font-size: 1.7rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            margin: 20px 0;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton > div {
        margin-top: 4px;
        font-weight: normal;
        font-size: 1.5rem;
        color: #a9b2bc;
    }

.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton::before {
        position: absolute;
        content: "";
        width: 24px;
        height: 24px;
        top: 17px;
        left: 20px;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: 24px;
                mask-size: 24px;
        background-color: #8e99a4;
    }

.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:hover {
        border-color: #0dbd8b;
    }

.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:hover::before {
            background-color: #0dbd8b;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:hover > span {
            color: #ffffff;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_justMeButton::before {
            -webkit-mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
                    mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
        }

.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_meAndMyTeammatesButton::before {
            -webkit-mask-image: url(../../img/element-icons/group-members.483392b.svg);
                    mask-image: url(../../img/element-icons/group-members.483392b.svg);
        }

.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons {
            color: #a9b2bc;
            margin-top: 28px;
        }

.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton {
                position: relative;
                display: inline-block;
                padding-left: 32px;
                line-height: 24px;
            }

/* to center icons */

.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton::before {
                    content: "";
                    position: absolute;
                    height: 24px;
                    width: 24px;
                    top: 0;
                    left: 0;
                    background-color: #a9b2bc;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-size: contain;
                            mask-size: contain;
                }

.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton + .mx_AccessibleButton {
                    margin-left: 32px;
                }

.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_SpaceRoomView_inviteTeammates_inviteDialogButton {
                color: #0dbd8b;
            }

.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_SpaceRoomView_inviteTeammates_inviteDialogButton::before {
                    -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
                            mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
                    background-color: #0dbd8b;
                }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SplashPage {
    position: relative;
    height: 100%;
}

.mx_SplashPage::before {
        content: "";
        display: block;
        position: absolute;
        z-index: -1;
        opacity: 0.6;
        background-image: radial-gradient(
                53.85% 66.75% at 87.55% 0%,
                hsla(250deg, 76%, 71%, 0.261) 0%,
                hsla(250deg, 100%, 88%, 0) 100%
            ),
            radial-gradient(41.93% 41.93% at 0% 0%, hsla(222deg, 29%, 20%, 0.28) 0%, hsla(250deg, 100%, 88%, 0) 100%),
            radial-gradient(100% 100% at 0% 0%, hsla(250deg, 100%, 88%, 0.174) 0%, hsla(0deg, 100%, 86%, 0) 100%),
            radial-gradient(106.35% 96.26% at 100% 0%, hsla(250deg, 100%, 88%, 0.4) 0%, hsla(167deg, 76%, 82%, 0) 100%);
        /* blur to reduce color banding issues due to alpha-blending multiple gradients */
        -webkit-filter: blur(8px);
                filter: blur(8px);
        inset: -9px;
        -webkit-mask:
            /* mask to dither resulting combined gradient */ url(../../img/noise.e8beb45.png),
            
                -webkit-gradient(
                    linear,
                     left top, left bottom,
                     color-stop(20%, rgba(0, 0, 0, 0.9)),
                     to(rgba(0, 0, 0, 0.2))
                );
        -webkit-mask:
            /* mask to dither resulting combined gradient */ url(../../img/noise.e8beb45.png),
            
                linear-gradient(
                    to bottom,
                     rgba(0, 0, 0, 0.9) 20%,
                     rgba(0, 0, 0, 0.2) 100%
                );
                mask:
            /* mask to dither resulting combined gradient */ url(../../img/noise.e8beb45.png),
            
                -webkit-gradient(
                    linear,
                     left top, left bottom,
                     color-stop(20%, rgba(0, 0, 0, 0.9)),
                     to(rgba(0, 0, 0, 0.2))
                );
                mask:
            /* mask to dither resulting combined gradient */ url(../../img/noise.e8beb45.png),
            
                linear-gradient(
                    to bottom,
                     rgba(0, 0, 0, 0.9) 20%,
                     rgba(0, 0, 0, 0.2) 100%
                );
    }

/*
Copyright 2017 Travis Ralston
Copyright 2019 New Vector Ltd
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_TabbedView {
    margin: 0;
    padding: 0 0 0 16px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    inset: 0;
    margin-top: 8px;
}

.mx_TabbedView_tabsOnLeft {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    position: absolute;
}

.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabLabels {
        width: 170px;
        max-width: 170px;
        position: fixed;
        margin: 0; /* Remove the default value */
        padding: 0; /* Remove the default value */
    }

.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabPanel {
        margin-left: 240px; /* 170px sidebar + 70px padding */
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabLabel_active {
        background-color: #0dbd8b;
        color: #ffffff;
    }

.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabLabel_active .mx_TabbedView_maskedIcon::before {
        background-color: #ffffff;
    }

.mx_TabbedView_tabsOnLeft .mx_TabbedView_maskedIcon {
        width: 16px;
        height: 16px;
        margin-right: 16px;
    }

.mx_TabbedView_tabsOnLeft .mx_TabbedView_maskedIcon::before {
        -webkit-mask-size: 16px;
                mask-size: 16px;
        width: 16px;
        height: 16px;
    }

.mx_TabbedView_tabsOnTop {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabels {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        margin-bottom: 8px;
    }

.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel {
        padding-left: 0px;
        padding-right: 52px;
    }

.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel .mx_TabbedView_tabLabel_text {
            font-size: 15px;
            color: #8e99a4;
        }

.mx_TabbedView_tabsOnTop .mx_TabbedView_tabPanel {
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
    }

.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel_active {
        color: #0dbd8b;
    }

.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel_active .mx_TabbedView_tabLabel_text {
            color: #0dbd8b;
        }

.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel_active .mx_TabbedView_maskedIcon::before {
        background-color: #0dbd8b;
    }

.mx_TabbedView_tabsOnTop .mx_TabbedView_maskedIcon {
        width: 22px;
        height: 22px;
        margin-left: 0px;
        margin-right: 8px;
    }

.mx_TabbedView_tabsOnTop .mx_TabbedView_maskedIcon::before {
        -webkit-mask-size: 22px;
                mask-size: 22px;
        width: inherit;
        height: inherit;
    }

.mx_TabbedView_tabLabels {
    color: #ffffff;
}

.mx_TabbedView_tabLabel {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    vertical-align: text-top;
    cursor: pointer;
    padding: 8px;
    border-radius: 8px;
    font-size: 1.3rem;
    position: relative;
}

.mx_TabbedView_maskedIcon {
    display: inline-block;
}

.mx_TabbedView_maskedIcon::before {
    display: inline-block;
    background-color: #8e99a4;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    content: "";
}

.mx_TabbedView_tabLabel_text {
    vertical-align: middle;
}

.mx_TabbedView_tabPanel {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    min-height: 0; /* firefox */
}

.mx_TabbedView_tabPanelContent {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    overflow: auto;
    min-height: 0; /* firefox */
}

/*Responsive design*/

@media (max-width: 1024px){
    .mx_TabbedView_tabLabel_text{
        display: none;
    }
    .mx_TabbedView_tabsOnLeft .mx_TabbedView_maskedIcon{
        margin-right: 0px;
    }
    .mx_TabbedView_tabsOnLeft .mx_TabbedView_tabPanel {
        margin-left: 45px !important;
    }
    .mx_TabbedView_tabsOnLeft .mx_TabbedView_tabLabels{
        width: auto;
        max-width: auto;
    }
}

/*
Copyright 2019-2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ToastContainer {
    position: absolute;
    top: 0;
    left: 70px;
    z-index: 101;
    padding: 4px;
    display: grid;
    grid-template-rows: 1fr 14px 6px;
}

.mx_ToastContainer.mx_ToastContainer_stacked::before {
        content: "";
        margin: 0 4px;
        grid-row: 2 / 4;
        grid-column: 1;
        background-color: #21262c;
        -webkit-box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.5);
                box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.5);
        border-radius: 8px;
    }

.mx_ToastContainer .mx_Toast_toast {
        grid-row: 1 / 3;
        grid-column: 1;
        background-color: #21262c;
        color: #ffffff;
        -webkit-box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.5);
                box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.5);
        border-radius: 8px;
        overflow: hidden;
        display: grid;
        grid-template-columns: 22px 1fr;
        grid-column-gap: 8px;
        -webkit-column-gap: 8px;
           -moz-column-gap: 8px;
                column-gap: 8px;
        grid-row-gap: 4px;
        row-gap: 4px;
        padding: 8px;
    }

.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon::before,
            .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon::after {
                content: "";
                width: 22px;
                height: 22px;
                grid-column: 1;
                grid-row: 1;
                -webkit-mask-size: 100%;
                        mask-size: 100%;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                background-size: 100%;
                background-repeat: no-repeat;
            }

.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification::after {
                -webkit-mask-image: url(../../img/e2e/normal.33e0430.svg);
                        mask-image: url(../../img/e2e/normal.33e0430.svg);
                background-color: #ffffff;
            }

/* white infill for the hollow svg mask */

.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning::before {
                    background-color: #ffffff;
                    -webkit-mask-image: url(../../img/e2e/normal.33e0430.svg);
                            mask-image: url(../../img/e2e/normal.33e0430.svg);
                    -webkit-mask-size: 80%;
                            mask-size: 80%;
                }

.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning::after {
                    -webkit-mask-image: url(../../img/e2e/warning.d370b49.svg);
                            mask-image: url(../../img/e2e/warning.d370b49.svg);
                    background-color: #ff5b55;
                }

.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_secure_backup::after {
                -webkit-mask-image: url(../../img/feather-customised/secure-backup.6c0a137.svg);
                        mask-image: url(../../img/feather-customised/secure-backup.6c0a137.svg);
                background-color: #ffffff;
            }

.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_labs::after {
                -webkit-mask-image: url(../../img/element-icons/flask.468e13e.svg);
                        mask-image: url(../../img/element-icons/flask.468e13e.svg);
                background-color: #a9b2bc;
            }

.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_title,
            .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_body {
                grid-column: 2;
            }

.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) {
            padding-left: 12px;
        }

.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) .mx_Toast_title {
                grid-column: 1 / -1;
            }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_title,
        .mx_ToastContainer .mx_Toast_toast .mx_Toast_description {
            padding-right: 8px;
        }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_title {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            grid-column-gap: 8px;
            -webkit-column-gap: 8px;
               -moz-column-gap: 8px;
                    column-gap: 8px;
            width: 100%;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
        }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_title h2 {
                margin: 0;
                font-size: 1.5rem;
                font-weight: 600;
                font-weight: var(--font-semi-bold);
                display: inline;
                width: auto;
            }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_title .mx_Toast_title_countIndicator {
                font-size: 1.2rem;
                line-height: 2.2rem;
                color: #a9b2bc;
                -webkit-margin-start: auto;
                        margin-inline-start: auto; /* on the end side of the div */
            }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_body {
            grid-column: 1 / 3;
            grid-row: 2;
        }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: end;
                -ms-flex-pack: end;
                    justify-content: flex-end;
            grid-column-gap: 5px;
            -webkit-column-gap: 5px;
               -moz-column-gap: 5px;
                    column-gap: 5px;
        }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons .mx_AccessibleButton {
                min-width: 96px;
                -webkit-box-sizing: border-box;
                        box-sizing: border-box;
            }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_description {
            max-width: 272px;
            overflow: hidden;
            text-overflow: ellipsis;
            margin: 4px 0 11px 0;
            font-size: 1.2rem;
        }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_description a {
                text-decoration: none;
            }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_detail {
            color: #a9b2bc;
        }

.mx_ToastContainer .mx_Toast_toast .mx_Toast_deviceID {
            font-size: 1rem;
        }

/*
Copyright 2015, 2016, 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UploadBar {
    padding-left: 65px; /* line up with the shield area in the composer */
    position: relative;
}

.mx_UploadBar .mx_ProgressBar {
        width: calc(100% - 40px); /* cheating at a right margin */
    }

.mx_ThreadView .mx_UploadBar {
        padding-left: 0;
    }

.mx_UploadBar_filename {
    margin-top: 5px;
    color: #91a1c0;
    position: relative;
    padding-left: 22px; /* 18px for icon, 4px for padding */
    font-size: 1.5rem;
    vertical-align: middle;
}

.mx_UploadBar_filename::before {
        content: "";
        height: 18px;
        width: 18px;
        position: absolute;
        top: 0;
        left: 0;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        background-color: #91a1c0;
        -webkit-mask-image: url(../../img/element-icons/upload.ea7aa85.svg);
                mask-image: url(../../img/element-icons/upload.ea7aa85.svg);
    }

.mx_UploadBar_cancel {
    position: absolute;
    top: 0;
    right: 0;
    height: 16px;
    width: 16px;
    margin-right: 16px; /* align over rightmost button in composer */
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    background-color: #91a1c0;
    -webkit-mask-image: url(../../img/icons-close.dbfb7ae.svg);
            mask-image: url(../../img/icons-close.dbfb7ae.svg);
}

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UserMenu {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_UserMenu .mx_AccessibleButton {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_UserMenu .mx_AccessibleButton .mx_UserMenu_userAvatar {
            position: relative;
        }

.mx_UserMenu .mx_AccessibleButton .mx_UserMenu_userAvatar .mx_BaseAvatar {
                pointer-events: none; /* makes the avatar non-draggable */
            }

.mx_UserMenu .mx_AccessibleButton .mx_UserMenu_userAvatarLive {
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            background-color: #ff5b55;
            border-radius: 6px;
            color: #ffffff;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            height: 12px;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
            left: 25px;
            position: absolute;
            top: 20px;
            width: 12px;
        }

.mx_UserMenu .mx_UserMenu_name {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.5rem;
        line-height: 2.4rem;
        margin-left: 10px;
    }

.mx_UserMenu .mx_UserMenu_dndBadge {
        position: absolute;
        bottom: -2px;
        right: -7px;
        width: 16px;
        height: 16px;
        border-radius: 50%;
    }

.mx_UserMenu .mx_UserMenu_dndBadge::before {
            content: "";
            width: 16px;
            height: 16px;
            position: absolute;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background-color: #ff5b55;
            -webkit-mask-image: url(../../img/element-icons/roomlist/dnd.87c6c88.svg);
                    mask-image: url(../../img/element-icons/roomlist/dnd.87c6c88.svg);
        }

.mx_IconizedContextMenu.mx_UserMenu_contextMenu {
        width: 258px;
    }

.mx_UserMenu_contextMenu.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton {
            padding-top: 16px;
            padding-bottom: 16px;
        }

.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header {
        padding: 20px;

        /* Create a flexbox to organize the header a bit easier */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name {
            /* Create another flexbox of columns to handle large user IDs */
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            width: calc(100% - 40px);
        }

/* 40px = 32px theme button + 8px margin to theme button */

.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_displayName,
            .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_userId {
                font-size: 1.5rem;

                /* Automatically grow subelements to fit the container */
                -webkit-box-flex: 1;
                    -ms-flex: 1;
                        flex: 1;
                width: 100%;

                /* Ellipsize text overflow */
                text-overflow: ellipsis;
                overflow: hidden;
                white-space: nowrap;
            }

.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_displayName {
                font-weight: bold;
                line-height: 2rem;
            }

.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_userId {
                line-height: 2.4rem;
            }

.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_themeButton {
            min-width: 32px;
            max-width: 32px;
            width: 32px;
            height: 32px;
            margin-left: 8px;
            border-radius: 32px;
            background-color: #e3e8f0;
            cursor: pointer;

            /* to make alignment easier, create flexbox for the image */
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
        }

.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts {
            padding-top: 0;
            display: inline-block;
        }

.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts > span {
                font-weight: 600;
                font-weight: var(--font-semi-bold);
                display: block;
            }

.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts > span + span {
                    margin-top: 8px;
                }

.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon {
        width: 16px;
        height: 16px;
        display: block;
    }

.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon::before {
            content: "";
            width: 16px;
            height: 16px;
            display: block;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background: #ffffff;
        }

.mx_UserMenu_contextMenu .mx_UserMenu_iconHome::before {
        -webkit-mask-image: url(../../img/element-icons/home.70cb677.svg);
                mask-image: url(../../img/element-icons/home.70cb677.svg);
    }

.mx_UserMenu_contextMenu .mx_UserMenu_iconDnd::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/dnd.87c6c88.svg);
                mask-image: url(../../img/element-icons/roomlist/dnd.87c6c88.svg);
    }

.mx_UserMenu_contextMenu .mx_UserMenu_iconDndOff::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/dnd-cross.d9423bf.svg);
                mask-image: url(../../img/element-icons/roomlist/dnd-cross.d9423bf.svg);
    }

.mx_UserMenu_contextMenu .mx_UserMenu_iconBell::before {
        -webkit-mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
                mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
    }

.mx_UserMenu_contextMenu .mx_UserMenu_iconLock::before {
        -webkit-mask-image: url(../../img/element-icons/security.56b436c.svg);
                mask-image: url(../../img/element-icons/security.56b436c.svg);
    }

.mx_UserMenu_contextMenu .mx_UserMenu_iconSettings::before {
        -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
                mask-image: url(../../img/element-icons/settings.0c529f2.svg);
    }

.mx_UserMenu_contextMenu .mx_UserMenu_iconMessage::before {
        -webkit-mask-image: url(../../img/element-icons/feedback.94401b2.svg);
                mask-image: url(../../img/element-icons/feedback.94401b2.svg);
    }

.mx_UserMenu_contextMenu .mx_UserMenu_iconSignOut::before {
        -webkit-mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
                mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
    }

.mx_UserMenu_CustomStatusSection {
    margin: 0 12px 8px;
}

.mx_UserMenu_CustomStatusSection .mx_UserMenu_CustomStatusSection_field {
        position: relative;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
    }

.mx_UserMenu_CustomStatusSection .mx_UserMenu_CustomStatusSection_field.mx_UserMenu_CustomStatusSection_field_hasQuery .mx_UserMenu_CustomStatusSection_clear {
                display: block;
            }

.mx_UserMenu_CustomStatusSection .mx_UserMenu_CustomStatusSection_field > .mx_UserMenu_CustomStatusSection_input {
            border: 1px solid #0dbd8b;
            border-radius: 8px;
            width: 100%;
        }

.mx_UserMenu_CustomStatusSection .mx_UserMenu_CustomStatusSection_field > .mx_UserMenu_CustomStatusSection_input:focus + .mx_UserMenu_CustomStatusSection_clear {
                display: block;
            }

.mx_UserMenu_CustomStatusSection .mx_UserMenu_CustomStatusSection_field > .mx_UserMenu_CustomStatusSection_clear {
            display: none;

            position: absolute;
            top: 50%;
            right: 0;
            -webkit-transform: translateY(-50%);
                    transform: translateY(-50%);

            width: 16px;
            height: 16px;
            margin-right: 8px;
            background-color: #394049;
            border-radius: 50%;
        }

.mx_UserMenu_CustomStatusSection .mx_UserMenu_CustomStatusSection_field > .mx_UserMenu_CustomStatusSection_clear::before {
                content: "";
                position: absolute;
                width: inherit;
                height: inherit;
                -webkit-mask-image: url(../../img/feather-customised/x.816c629.svg);
                        mask-image: url(../../img/feather-customised/x.816c629.svg);
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: 12px;
                        mask-size: 12px;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                background-color: #a9b2bc;
            }

.mx_UserMenu_CustomStatusSection > p {
        font-size: 1.2rem;
        line-height: 1.5rem;
        color: #a9b2bc;
        margin: 4px 0;
    }

.mx_UserMenu_CustomStatusSection .mx_AccessibleButton_kind_primary_outline {
        display: block;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ViewSource pre {
        font-size: 1.2rem;
        padding: 0.5em 1em;
        word-wrap: break-word;
        white-space: pre-wrap;
        overflow-wrap: anywhere;
    }

.mx_ViewSource .mx_ViewSource_header {
        border-bottom: 1px solid #394049;
        padding-bottom: 12px;
        margin-bottom: 12px;
        font-family: monospace;
    }

.mx_ViewSource .mx_ViewSource_header .mx_CopyableText {
            word-break: break-all;
        }

.mx_ViewSource .mx_ViewSource_heading {
        font-size: 1.7rem;
        font-weight: 400;
        color: #ffffff;
        margin-top: 12px;
    }

.mx_ViewSource .mx_ViewSource_details {
        margin-top: 12px;
    }

.mx_ViewSource .mx_CopyableText_border {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        width: 100%;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CompleteSecurity_header {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_CompleteSecurity_headerIcon {
    width: 24px;
    height: 24px;
    margin-right: 4px;
    position: relative;
}

.mx_CompleteSecurity_heroIcon {
    width: 128px;
    height: 128px;
    position: relative;
    margin: 0 auto;
}

.mx_CompleteSecurity_skip {
    -webkit-mask: url(../../img/cancel.12c5c12.svg);
            mask: url(../../img/cancel.12c5c12.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: cover;
            mask-size: cover;
    background-color: #9fa9ba;
    cursor: pointer;
    position: unset;
    width: unset;
    height: unset;
    width: 18px;
    height: 18px;
    position: absolute;
    right: 24px;
}

.mx_CompleteSecurity_body {
    font-size: 1.5rem;
}

.mx_CompleteSecurity_waiting {
    color: #8e99a4;
}

.mx_CompleteSecurity_actionRow {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    margin-top: 2.8rem;
}

.mx_CompleteSecurity_actionRow .mx_AccessibleButton {
        -webkit-margin-start: 18px;
                margin-inline-start: 18px;
    }

.mx_CompleteSecurity_actionRow .mx_AccessibleButton.warning {
            color: #ff5b55;
        }

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Login_submit {
    /* align images in buttons (eg spinners) */
    vertical-align: middle;
    border: 0px;
    border-radius: 8px;
    font-family: "Inter", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Arial", "Helvetica", sans-serif,
    "Noto Color Emoji";
    font-size: 1.4rem;
    color: #ffffff;
    background-color: #0dbd8b;
    width: auto;
    padding: 7px;
    padding-left: 1.5em;
    padding-right: 1.5em;
    cursor: pointer;
    display: inline-block;
}

.mx_Login_submit:not(.focus-visible) {
        outline: none;
    }

.mx_Login_submit {
    font-size: 15px;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    width: 100%;
    margin-top: 24px;
    margin-bottom: 24px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    text-align: center;
}

.mx_Login_submit:disabled {
    opacity: 0.3;
    cursor: default;
}

.mx_Login_loader {
    display: inline;
    position: relative;
    top: 2px;
    left: 8px;
}

.mx_Login_loader .mx_Spinner {
    display: inline;
}

.mx_Login_loader .mx_Spinner img {
    width: 16px;
    height: 16px;
}

.mx_Login_error {
    color: #ff5b55;
    font-weight: bold;
    text-align: center;
    margin-top: 12px;
    margin-bottom: 12px;
}

.mx_Login_error.mx_Login_serverError {
    text-align: left;
    font-weight: normal;
}

.mx_Login_error.mx_Login_serverError.mx_Login_serverErrorNonFatal {
    color: #ff8d13; /* Only used here */
}

.mx_Login_type_container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #ffffff;
}

.mx_Login_type_container .mx_Field {
        margin: 0;
    }

.mx_Login_type_label {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
}

.mx_Login_underlinedServerName {
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    border-bottom: 1px dashed #0dbd8b;
}

div.mx_AccessibleButton_kind_link.mx_Login_forgot {
    display: block;
    margin-top: 24px;
}

div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled {
        cursor: not-allowed;
    }

.mx_Login_spinner {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-line-pack: center;
        align-content: center;
    padding: 14px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Register_mainContent {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    min-height: 270px;
}

.mx_Register_mainContent p {
        font-size: 1.4rem;
        color: #ffffff;
    }

.mx_Register_mainContent p.secondary {
            color: #61708b;
        }

.mx_Register_mainContent > img:first-child {
        margin-bottom: 16px;
        width: -webkit-max-content;
        width: -moz-max-content;
        width: max-content;
    }

.mx_Register_mainContent .mx_Login_submit {
        margin-bottom: 0;
    }

.mx_Register_footerActions {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    padding-top: 16px;
    margin-top: 16px;
    border-top: 1px solid rgba(141, 151, 165, 0.2);
}

.mx_Register_footerActions > * {
        -ms-flex-preferred-size: content;
            flex-basis: content;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SetupEncryptionBody_reset {
    color: #c8c8cd;
    margin-top: 1.4rem;
}

.mx_SetupEncryptionBody_reset .mx_SetupEncryptionBody_reset_link.mx_AccessibleButton_kind_link_inline {
            color: #ff5b55;
        }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MediaBody.mx_AudioPlayer_container {
    padding: 16px 12px 12px 12px;
}

.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_primaryContainer {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
    }

.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_primaryContainer .mx_PlayPauseButton {
            margin-right: 8px;
        }

.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_primaryContainer .mx_AudioPlayer_mediaInfo {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            overflow: hidden;
        }

/* makes the ellipsis on the file name work */

.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_primaryContainer .mx_AudioPlayer_mediaInfo > * {
                display: block;
            }

.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_primaryContainer .mx_AudioPlayer_mediaInfo .mx_AudioPlayer_mediaName {
                color: #ffffff;
                font-size: 1.5rem;
                line-height: 1.5rem;
                text-overflow: ellipsis;
                white-space: nowrap;
                overflow: hidden;
                padding-bottom: 4px; /* mimics the line-height differences in the Figma */
            }

.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_primaryContainer .mx_AudioPlayer_mediaInfo .mx_AudioPlayer_byline {
                font-size: 1.2rem;
                line-height: 1.2rem;
            }

.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_seek {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_seek .mx_SeekBar {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
        }

.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_seek .mx_Clock {
            min-width: 4.2rem; /* for flexbox */
            padding-left: 4px; /* isolate from seek bar */
            text-align: justify;
            white-space: nowrap;
        }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PlayPauseButton {
    position: relative;
    width: 32px;
    height: 32px;
    min-width: 32px; /* for when the button is used in a flexbox */
    min-height: 32px; /* for when the button is used in a flexbox */
    border-radius: 32px;
    background-color: #21262c;
}

.mx_PlayPauseButton::before {
        content: "";
        position: absolute; /* sizing varies by icon */
        background-color: #a9b2bc;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

.mx_PlayPauseButton.mx_PlayPauseButton_disabled::before {
        opacity: 0.5;
    }

.mx_PlayPauseButton.mx_PlayPauseButton_play::before {
        width: 13px;
        height: 16px;
        top: 8px; /* center */
        left: 12px; /* center */
        -webkit-mask-image: url(../../img/element-icons/play.f3fe34a.svg);
                mask-image: url(../../img/element-icons/play.f3fe34a.svg);
    }

.mx_PlayPauseButton.mx_PlayPauseButton_pause::before {
        width: 10px;
        height: 12px;
        top: 10px; /* center */
        left: 11px; /* center */
        -webkit-mask-image: url(../../img/element-icons/pause.f107420.svg);
                mask-image: url(../../img/element-icons/pause.f107420.svg);
    }

/*
Copyright 2021 - 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* Dev note: there's no actual component called <PlaybackContainer />. These classes */

/* are shared amongst multiple voice message components. */

/* Container for live recording and playback controls */

.mx_MediaBody.mx_VoiceMessagePrimaryContainer {
    /* The waveform (right) has a 1px padding on it that we want to account for, otherwise */
    /* inherit from mx_MediaBody */
    padding-right: 11px;

    /* Cheat at alignment a bit */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    contain: content;
}

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_Waveform,
    .mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_RecordingPlayback_timelineLayoutMiddle {
        min-width: 0; /* Prevent a blowout */
    }

/* Waveforms are present in live recording only */

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar {
            background-color: #6f7882;
            height: 100%;
            /* Variable set by a JS component */
            -webkit-transform: scaleY(max(0.05, var(--barHeight)));
                    transform: scaleY(max(0.05, var(--barHeight)));
        }

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar.mx_Waveform_bar_100pct {
                /* Small animation to remove the mechanical feel of progress */
                -webkit-transition: background-color 250ms ease;
                transition: background-color 250ms ease;
                background-color: #a9b2bc;
            }

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_Clock {
        width: 4.2rem; /* we're not using a monospace font, so fake it */
        min-width: 4.2rem; /* force sensible layouts in awkward flexboxes (file panel, for example) */
        padding-right: 6px; /* with the fixed width this ends up as a visual 8px most of the time, as intended. */
        padding-left: 8px; /* isolate from recording circle / play control */
    }

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_RecordingPlayback_timelineLayoutMiddle {
        margin-left: 8px;
        margin-right: 6px;
        position: relative;
        display: inline-block;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        height: 30px;
    }

/* same height as mx_Waveform, needed for automatic vertical centering */

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_RecordingPlayback_timelineLayoutMiddle .mx_Waveform {
            left: 0;
            top: 0;
        }

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_RecordingPlayback_timelineLayoutMiddle .mx_SeekBar {
            position: absolute;
            left: 0;
            height: 30px;
            top: -2px; /* visually vertically centered */

            /* Hide the hairline progress bar since we're at 100% height. Need to have distinct rules */
            /* because CSS is weird. */
            background: none;

            /* Make the thumb easier to see. Like the SeekBar original styles, these need to be */
            /* distinct. We make it transparent so it doesn't show up on the UI, but also larger */
        }

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_RecordingPlayback_timelineLayoutMiddle .mx_SeekBar::before {
                background: none;
            }

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_RecordingPlayback_timelineLayoutMiddle .mx_SeekBar::-moz-range-progress {
                background: none;
            }

/* move and drag the thumb regardless of hitting the thumb, however. */

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_RecordingPlayback_timelineLayoutMiddle .mx_SeekBar::-webkit-slider-thumb {
                width: 10px;
                height: 10px;
                background-color: transparent;
            }

/* so it's easier to grab by mouse users in some browsers. Most browsers let the user */

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_RecordingPlayback_timelineLayoutMiddle .mx_SeekBar::-moz-range-thumb {
                width: 10px;
                height: 10px;
                background-color: transparent;
            }

/* For timeline-rendered playback, the clock is on the other side of the waveform. */

.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_RecordingPlayback_timelineLayoutMiddle + .mx_Clock {
            text-align: right;

            /* Take the padding off the clock because it's accounted for by the `timelineLayoutMiddle` */
            padding: 0;
        }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* CSS inspiration from: */

/* * https://www.w3schools.com/howto/howto_js_rangeslider.asp */

/* * https://stackoverflow.com/a/28283806 */

/* * https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/ */

.mx_SeekBar {
    /* Dev note: we deliberately do not have the -ms-track (and friends) selectors because we don't */
    /* need to support IE. */

    -webkit-appearance: none;

       -moz-appearance: none;

            appearance: none; /* default style override */

    width: 100%;
    height: 1px;
    background: #6f7882;
    outline: none; /* remove blue selection border */
    position: relative; /* for before+after pseudo elements later on */

    cursor: pointer;

    /* This is for webkit support, but we can't limit the functionality of it to just webkit */
    /* browsers. Firefox responds to webkit-prefixed values now, which means we can't use media */

    /* Increase clickable area for the slider (approximately same size as browser default) */
    /* We do it this way to keep the same padding and margins of the element, avoiding margin math. */
}

.mx_SeekBar::-webkit-slider-thumb {
        -webkit-appearance: none;
                appearance: none; /* default style override */

        /* Dev note: This needs to be duplicated with the -moz-range-thumb selector */
        /* because otherwise Edge (webkit) will fail to see the styles and just refuse */
        /* to apply them. */
        width: 8px;
        height: 8px;
        border-radius: 8px;
        background-color: #8e99a4;
        cursor: pointer;
    }

.mx_SeekBar::-moz-range-thumb {
        width: 8px;
        height: 8px;
        border-radius: 8px;
        background-color: #8e99a4;
        cursor: pointer;

        /* Firefox adds a border on the thumb */
        border: none;
    }

/* in firefox, so it's just wasted CPU/GPU time. */

.mx_SeekBar::before {
        /* ::before to ensure it ends up under the thumb */
        content: "";
        background-color: #8e99a4;

        /* Absolute positioning to ensure it overlaps with the existing bar */
        position: absolute;
        top: 0;
        left: 0;

        /* Sizing to match the bar */
        width: 100%;
        height: 1px;

        /* And finally dynamic width without overly hurting the rendering engine. */
        -webkit-transform-origin: 0 100%;
                transform-origin: 0 100%;
        -webkit-transform: scaleX(var(--fillTo));
                transform: scaleX(var(--fillTo));
    }

/* This is firefox's built-in support for the above, with 100% less hacks. */

.mx_SeekBar::-moz-range-progress {
        background-color: #8e99a4;
        height: 1px;
    }

/* or support queries to selectively apply the rule. An upside is that this CSS doesn't work */

.mx_SeekBar:disabled {
        opacity: 0.5;
    }

/* Source: https://front-back.com/expand-clickable-areas-for-a-better-touch-experience/ */

.mx_SeekBar::after {
        content: "";
        position: absolute;
        top: -6px;
        bottom: -6px;
        left: 0;
        right: 0;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Waveform {
    position: relative;
    height: 30px; /* tallest bar can only be 30px */
    top: 1px; /* because of our border trick (see below), we're off by 1px of aligntment */

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; /* so the bars grow from the middle */

    overflow: hidden; /* this is cheaper than a `max-height: calc(100% - 4px)` in the bar's CSS. */

    /* A bar is meant to be a 2x2 circle when at zero height, and otherwise a 2px wide line */
}

/* with rounded caps. */

.mx_Waveform .mx_Waveform_bar {
        width: 0; /* 0px width means we'll end up using the border as our width */
        border: 1px solid transparent; /* transparent means we'll use the background colour */
        border-radius: 2px; /* rounded end caps, based on the border */
        min-height: 0; /* like the width, we'll rely on the border to give us height */
        max-height: 100%; /* this makes the `height: 42%` work on the element */
        margin-left: 1px; /* we want 2px between each bar, so 1px on either side for balance */
        margin-right: 1px;

        /* background color is handled by the parent components */
    }

/*
Copyright 2019 New Vector Ltd
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AuthBody {
    width: 500px;
    font-size: 1.2rem;
    color: #61708b;
    background-color: #15191e;
    border-radius: 0 4px 4px 0;
    padding: 25px 60px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_AuthBody b {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_AuthBody.mx_AuthBody_flex {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_AuthBody h1 {
        font-size: 2.4rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        margin-top: 8px;
        color: #ffffff;
    }

.mx_AuthBody h2 {
        font-size: 1.4rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        color: #61708b;
    }

.mx_AuthBody h2.mx_AuthBody_centered {
        text-align: center;
    }

.mx_AuthBody a:link,
    .mx_AuthBody a:hover,
    .mx_AuthBody a:visited {
        color: #0dbd8b;
        text-decoration: none;
    }

.mx_AuthBody fieldset {
        display: block;
    }

.mx_AuthBody .mx_AuthBody_icon {
        width: 40px;
    }

.mx_AuthBody .mx_AuthBody_lockIcon {
        color: #a9b2bc;
        height: 32px;
        margin-bottom: -3px; /* tweak to align all icons on different forgot password steps*/
    }

.mx_AuthBody .mx_AuthBody_text {
        margin-bottom: 48px;
        margin-top: 0;
    }

.mx_AuthBody input[type="text"],
    .mx_AuthBody input[type="password"] {
        color: #ffffff;
    }

.mx_AuthBody .mx_Field label {
        color: #61708b;
    }

.mx_AuthBody .mx_Field input,
    .mx_AuthBody .mx_Field select {
        color: #ffffff;
        background-color: #15191e;
    }

.mx_AuthBody .mx_Field input:not(:-moz-placeholder-shown) + label, .mx_AuthBody .mx_Field textarea:not(:-moz-placeholder-shown) + label {
        background-color: #15191e;
    }

.mx_AuthBody .mx_Field input:not(:-ms-input-placeholder) + label, .mx_AuthBody .mx_Field textarea:not(:-ms-input-placeholder) + label {
        background-color: #15191e;
    }

.mx_AuthBody .mx_Field_labelAlwaysTopLeft label,
    .mx_AuthBody .mx_Field select + label,
    .mx_AuthBody .mx_Field input:focus + label,
    .mx_AuthBody .mx_Field input:not(:placeholder-shown) + label,
    .mx_AuthBody .mx_Field textarea:focus + label,
    .mx_AuthBody .mx_Field textarea:not(:placeholder-shown) + label {
        background-color: #15191e;
    }

.mx_AuthBody input.error {
        color: #ff5b55;
    }

.mx_AuthBody .mx_Login_submit {
        height: 32px;
        margin-top: 16px;
    }

.mx_AuthBody .mx_ErrorMessage {
        margin-bottom: 12px;
        margin-top: 2px;
    }

.mx_AuthBody .mx_Field input {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
    }

.mx_AuthBody .mx_Field_select::before {
        background-color: #ffffff;
    }

.mx_AuthBody .mx_Dropdown {
        color: #ffffff;
    }

.mx_AuthBody .mx_Dropdown_arrow {
        background: #ffffff;
    }

.mx_AuthBody .mx_Dropdown_menu {
        background-color: #15191e;
    }

.mx_AuthBody .mx_Dropdown_menu .mx_Dropdown_option_highlight {
            background-color: #dddddd;
        }

/* specialisation for password reset views */

.mx_AuthBody.mx_AuthBody_forgot-password {
    font-size: 1.4rem;
    color: #ffffff;
    padding: 50px 32px;
    min-height: 600px;
}

.mx_AuthBody.mx_AuthBody_forgot-password h1 {
        margin: 24px 0;
    }

.mx_AuthBody.mx_AuthBody_forgot-password .mx_AuthBody_button-container {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_AuthBody.mx_AuthBody_forgot-password .mx_Login_submit {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        margin: 0 0 16px;
    }

.mx_AuthBody.mx_AuthBody_forgot-password .mx_AuthBody_text {
        margin-bottom: 32px;
    }

.mx_AuthBody.mx_AuthBody_forgot-password .mx_AuthBody_text p {
            margin: 0 0 8px;
        }

.mx_AuthBody.mx_AuthBody_forgot-password .mx_AuthBody_sign-in-instead-button {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        padding: 4px;
    }

.mx_AuthBody.mx_AuthBody_forgot-password .mx_AuthBody_fieldRow {
        margin-bottom: 24px;
    }

.mx_AuthBody.mx_AuthBody_forgot-password .mx_AccessibleButton.mx_AccessibleButton_hasKind {
        background: none;
    }

.mx_AuthBody.mx_AuthBody_forgot-password .mx_AccessibleButton.mx_AccessibleButton_hasKind:disabled {
            cursor: default;
            opacity: 0.4;
        }

.mx_AuthBody_did-not-receive {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #a9b2bc;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 8px;
    gap: 8px;
}

.mx_AuthBody_resend-button {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    border-radius: 8px;
    color: #0dbd8b;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 4px;
    gap: 4px;
    padding: 4px;
}

.mx_AuthBody_resend-button:hover {
        background-color: #21262c;
    }

.mx_AuthBody_emailPromptIcon {
    width: 57px;
}

.mx_AuthBody_emailPromptIcon--shifted {
    margin-bottom: -17px; /* Prevent layout jump by relative positioning.*/
    position: relative;
    top: -17px; /* This icon is higher than the other icons. Shift up to prevent icon jumping.*/
    width: 57px;
}

.mx_AuthBody_fieldRow {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin-bottom: 10px;
}

.mx_AuthBody_fieldRow > .mx_Field {
    margin: 0 5px;
}

.mx_AuthBody_fieldRow > .mx_Field:first-child {
    margin-left: 0;
}

.mx_AuthBody_fieldRow > .mx_Field:last-child {
    margin-right: 0;
}

.mx_AuthBody_paddedFooter {
    height: 80px; /* height of the submit button + register link */
    padding-top: 28px;
    text-align: center;
}

.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title {
        margin-top: 16px;
        font-size: 1.5rem;
        line-height: 2.4rem;
    }

.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title .mx_InlineSpinner img {
            vertical-align: sub;
            margin-right: 5px;
        }

.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_subtitle {
        margin-top: 8px;
        font-size: 1rem;
        line-height: 1.4rem;
    }

.mx_AuthBody_changeFlow {
    display: block;
    text-align: center;
}

.mx_AuthBody_changeFlow > a {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_SSOButtons + .mx_AuthBody_changeFlow {
    margin-top: 24px;
}

.mx_AuthBody_spinner {
    margin: 1em 0;
}

@media only screen and (max-width: 480px) {
    .mx_AuthBody {
        border-radius: 4px;
        width: auto;
        max-width: 500px;
        padding: 10px;
    }
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AuthFooter {
    text-align: center;
    width: 100%;
    font-size: 1.4rem;
    opacity: 0.72;
    padding: 20px 0;
    background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.8)));
    background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
}

.mx_AuthFooter a:link,
.mx_AuthFooter a:hover,
.mx_AuthFooter a:visited {
    color: #ffffff;
    margin: 0 22px;
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AuthHeader {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    width: 206px;
    padding: 25px 25px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

@media only screen and (max-width: 480px) {
    .mx_AuthHeader {
        display: none;
    }
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AuthHeaderLogo {
    margin-top: 15px;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    padding: 0 25px;
}

.mx_AuthHeaderLogo img {
    width: 100%;
}

@media only screen and (max-width: 480px) {
    .mx_AuthHeaderLogo {
        display: none;
    }
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AuthPage {
    width: 100%;
    min-height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    background-color: #2e3649;
    height: 100vh;
    overflow: auto;
}

.mx_AuthPage_modal {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin: 100px auto auto;
    border-radius: 4px;
    -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.33);
            box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.33);
    background-color: rgba(245, 245, 245, 0.9);
}

@media only screen and (max-height: 768px) {

.mx_AuthPage_modal {
        margin-top: 50px
}
    }

@media only screen and (max-width: 480px) {

.mx_AuthPage_modal {
        margin-top: 0
}
    }

/*Responsive design*/

@media (max-width: 1024px){
    .mx_AuthPage{
        background: #C2ECFF !important;
    }
    .mx_AuthPage_modal{
        margin-top: auto !important;
    }
}

/* Separator for different login methods */

.mx_AuthPage_separator {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    text-align: center;
    margin: 24px 0;
}

.mx_AuthPage_separator::before,
    .mx_AuthPage_separator::after {
        content: "";
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        border-bottom: 1px solid #394049;
    }

.mx_AuthPage_separator span {
        padding: 0 16px;
        color: #a9b2bc;
        font-size: 1.4rem;
        font-weight: 500;
        text-transform: uppercase;
        letter-spacing: 0.5px;
    }

.mx_AuthPage_separator:not(:empty)::before {
            margin-right: 0;
        }

.mx_AuthPage_separator:not(:empty)::after {
            margin-left: 0;
        }

/* Dark theme support */

.mx_theme_dark .mx_AuthPage_separator::before,
        .mx_theme_dark .mx_AuthPage_separator::after {
            border-color: #20252b;
        }

/*
Copyright 2019 New Vector Ltd
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CompleteSecurityBody {
    width: 600px;
    color: #ffffff;
    background-color: #15191e;
    border-radius: 4px;
    padding: 20px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_CompleteSecurityBody h2 {
        font-size: 2.4rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        margin-top: 0;
    }

.mx_CompleteSecurityBody h3 {
        font-size: 1.4rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_CompleteSecurityBody a:link,
    .mx_CompleteSecurityBody a:hover,
    .mx_CompleteSecurityBody a:visited {
        color: #0dbd8b;
        text-decoration: none;
    }

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CountryDropdown .mx_Dropdown_input .mx_Dropdown_option {
    padding: 0 3px;
}

.mx_CountryDropdown .mx_Dropdown_arrow {
    padding-right: 3px;
}

.mx_CountryDropdown_shortOption {
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    height: 100%;
}

.mx_CountryDropdown_option {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

/*
Copyright 2017 Vector Creations Ltd
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_InteractiveAuthEntryComponents .mx_InteractiveAuthEntryComponents_termsSubmit {
        margin-top: 20px;
        margin-bottom: 5px;
        width: 100%;
        -webkit-box-sizing: border-box;
                box-sizing: border-box; /* prevent overflowing */
    }

.mx_InteractiveAuthEntryComponents_msisdnWrapper {
    text-align: center;
}

.mx_InteractiveAuthEntryComponents_msisdnEntry {
    font-size: 200%;
    font-weight: bold;
    border: 1px solid #c7c7c7;
    border-radius: 3px;
    width: 6em;
}

.mx_InteractiveAuthEntryComponents_msisdnEntry:focus {
    border: 1px solid #0dbd8b;
}

.mx_InteractiveAuthEntryComponents_msisdnSubmit {
    margin-top: 4px;
    margin-bottom: 5px;
}

/* XXX: This should be a common button class */

.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled {
    background-color: #c8c8cd;
    cursor: default;
}

.mx_InteractiveAuthEntryComponents_termsPolicy {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_InteractiveAuthEntryComponents_passwordSection {
    width: 300px;
}

.mx_InteractiveAuthEntryComponents_sso_buttons {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    margin-top: 20px;
}

.mx_InteractiveAuthEntryComponents_sso_buttons .mx_AccessibleButton {
        margin-left: 5px;
    }

/* "Resend" button/link */

.mx_InteractiveAuthEntryComponents_emailWrapper .mx_AccessibleButton_kind_link_inline {
        /* We need this to be an inline-block so positioning works correctly */
        display: inline-block !important;
    }

/* Spinner as end adornment of the "resend" button/link */

.mx_InteractiveAuthEntryComponents_emailWrapper .mx_AccessibleButton_kind_link_inline .mx_Spinner {
            /* Spinners are usually block elements, but we need it as inline element */
            display: -webkit-inline-box !important;
            display: -ms-inline-flexbox !important;
            display: inline-flex !important;
            /* Spinners by default fill all available width, but we don't want that */
            width: auto !important;
            /* We need to center the spinner relative to the button/link */
            vertical-align: middle !important;
        }

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AuthBody_language {
    width: 100%;
}

.mx_AuthBody_language .mx_Dropdown_input {
    border: none;
    font-size: 1.4rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    color: #4e5054;
    width: auto;
}

.mx_AuthBody_language .mx_Dropdown_arrow {
    background: #4e5054;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LoginWithQRSection .mx_AccessibleButton {
    margin-right: 12px;
}

.mx_AuthPage .mx_LoginWithQR .mx_AccessibleButton {
        display: block !important;
    }

.mx_AuthPage .mx_LoginWithQR .mx_AccessibleButton + .mx_AccessibleButton {
        margin-top: 8px;
    }

.mx_AuthPage .mx_LoginWithQR .mx_LoginWithQR_separator {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        text-align: center;
    }

.mx_AuthPage .mx_LoginWithQR .mx_LoginWithQR_separator::before,
        .mx_AuthPage .mx_LoginWithQR .mx_LoginWithQR_separator::after {
            content: "";
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            border-bottom: 1px solid #394049;
        }

.mx_AuthPage .mx_LoginWithQR .mx_LoginWithQR_separator:not(:empty)::before {
                margin-right: 1em;
            }

.mx_AuthPage .mx_LoginWithQR .mx_LoginWithQR_separator:not(:empty)::after {
                margin-left: 1em;
            }

.mx_AuthPage .mx_LoginWithQR {

    font-size: 1.5rem;
}

.mx_UserSettingsDialog .mx_LoginWithQR .mx_AccessibleButton + .mx_AccessibleButton {
        margin-left: 12px;
    }

.mx_UserSettingsDialog .mx_LoginWithQR {

    font-size: 1.4rem;
}

.mx_UserSettingsDialog .mx_LoginWithQR h1 {
        font-size: 2.4rem;
        margin-bottom: 0;
    }

.mx_UserSettingsDialog .mx_LoginWithQR li {
        line-height: 1.8;
    }

.mx_UserSettingsDialog .mx_LoginWithQR .mx_QRCode {
        padding: 12px 40px;
        margin: 28px 0;
    }

.mx_UserSettingsDialog .mx_LoginWithQR .mx_LoginWithQR_buttons {
        text-align: center;
    }

.mx_UserSettingsDialog .mx_LoginWithQR .mx_LoginWithQR_qrWrapper {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
    }

.mx_LoginWithQR {
    min-height: 350px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_LoginWithQR .mx_LoginWithQR_centreTitle h1 {
            text-align: centre;
        }

.mx_LoginWithQR h1 > svg.normal {
            color: #a9b2bc;
        }

.mx_LoginWithQR h1 > svg.error {
            color: #ff5b55;
        }

.mx_LoginWithQR h1 > svg.success {
            color: #0dbd8b;
        }

.mx_LoginWithQR h1 > svg {
        height: 1.3em;
        margin-right: 8px;
        vertical-align: middle;
}

.mx_LoginWithQR .mx_LoginWithQR_confirmationDigits {
        text-align: center;
        margin: 48px auto;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 2.4rem;
        color: #ffffff;
    }

.mx_LoginWithQR .mx_LoginWithQR_confirmationAlert {
        border: 1px solid #6f7882;
        border-radius: 8px;
        padding: 8px;
        line-height: 1.5em;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
    }

.mx_LoginWithQR .mx_LoginWithQR_confirmationAlert svg {
            height: 30px;
        }

.mx_LoginWithQR .mx_LoginWithQR_separator {
        margin: 1em 0;
    }

.mx_LoginWithQR ol {
        list-style-position: inside;
        -webkit-padding-start: 0;
                padding-inline-start: 0;
    }

.mx_LoginWithQR ol li::marker {
            color: #0dbd8b;
        }

.mx_LoginWithQR .mx_LoginWithQR_BackButton {
        height: 12px;
        margin-bottom: 24px;
    }

.mx_LoginWithQR .mx_LoginWithQR_BackButton svg {
            height: 100%;
        }

.mx_LoginWithQR .mx_LoginWithQR_main {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
    }

.mx_LoginWithQR .mx_QRCode {
        border: 1px solid #394049;
        border-radius: 8px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_LoginWithQR .mx_LoginWithQR_spinner {
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        height: 100%;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

progress.mx_PassphraseField_progress {
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
    width: 100%;
    border: 0;
    height: 4px;
    position: absolute;
    top: -12px;

    border-radius: "2px";
}

progress.mx_PassphraseField_progress::-moz-progress-bar {
        border-radius: "2px";
    }

progress.mx_PassphraseField_progress::-webkit-progress-bar,
    progress.mx_PassphraseField_progress::-webkit-progress-value {
        border-radius: "2px";
    }

progress.mx_PassphraseField_progress {
    color: #ff5b55;
}

progress.mx_PassphraseField_progress::-moz-progress-bar {
        background-color: #ff5b55;
    }

progress.mx_PassphraseField_progress::-webkit-progress-value {
        background-color: #ff5b55;
    }

progress.mx_PassphraseField_progress[value="2"],
    progress.mx_PassphraseField_progress[value="3"] {
        color: #ff812d;
    }

progress.mx_PassphraseField_progress[value="2"]::-moz-progress-bar, progress.mx_PassphraseField_progress[value="3"]::-moz-progress-bar {
        background-color: #ff812d;
    }

progress.mx_PassphraseField_progress[value="2"]::-webkit-progress-value, progress.mx_PassphraseField_progress[value="3"]::-webkit-progress-value {
        background-color: #ff812d;
    }

progress.mx_PassphraseField_progress[value="4"] {
        color: #0dbd8b;
    }

progress.mx_PassphraseField_progress[value="4"]::-moz-progress-bar {
        background-color: #0dbd8b;
    }

progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value {
        background-color: #0dbd8b;
    }

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Welcome {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_Welcome.mx_WelcomePage_registrationDisabled .mx_ButtonCreateAccount {
            display: none;
        }

.mx_Welcome .mx_AuthBody_language {
    width: 160px;
    margin-bottom: 10px;
}

/*
Copyright 2024 TextRP Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_XRPLWalletLogin {
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
    padding: 0;
}

.mx_XRPLWalletLogin_container {
    background: #15191e;
    border-radius: 16px;
    padding: 32px 24px;
    -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
    border: 1px solid #394049;
}

/* Header Section */

.mx_XRPLWalletLogin_header {
    text-align: center;
    margin-bottom: 32px;
}

.mx_XRPLWalletLogin_logo {
    margin-bottom: 16px;
}

.mx_XRPLWalletLogin_logoIcon {
    font-size: 48px;
    display: inline-block;
    -webkit-animation: pulse 2s infinite;
            animation: pulse 2s infinite;
}

@-webkit-keyframes pulse {
    0% { -webkit-transform: scale(1); transform: scale(1); }
    50% { -webkit-transform: scale(1.05); transform: scale(1.05); }
    100% { -webkit-transform: scale(1); transform: scale(1); }
}

@keyframes pulse {
    0% { -webkit-transform: scale(1); transform: scale(1); }
    50% { -webkit-transform: scale(1.05); transform: scale(1.05); }
    100% { -webkit-transform: scale(1); transform: scale(1); }
}

.mx_XRPLWalletLogin_title {
    margin: 0 0 12px 0;
    font-size: 28px;
    font-weight: 700;
    color: #ffffff;
    line-height: 1.2;
}

.mx_XRPLWalletLogin_subtitle {
    margin: 0;
    font-size: 16px;
    color: #a9b2bc;
    line-height: 1.5;
}

/* Error Banner */

.mx_XRPLWalletLogin_errorBanner {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    grid-gap: 12px;
    gap: 12px;
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 12px;
    padding: 16px;
    margin-bottom: 24px;
}

.mx_XRPLWalletLogin_errorIcon {
    font-size: 20px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-top: 2px;
}

.mx_XRPLWalletLogin_errorContent {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
}

.mx_XRPLWalletLogin_errorContent h4 {
        margin: 0 0 4px 0;
        font-size: 16px;
        font-weight: 600;
        color: #dc2626;
    }

.mx_XRPLWalletLogin_errorContent p {
        margin: 0;
        font-size: 14px;
        color: #7f1d1d;
        line-height: 1.4;
    }

/* Wallet Cards */

.mx_XRPLWalletLogin_wallets {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    grid-gap: 16px;
    gap: 16px;
    margin-bottom: 32px;
}

.mx_XRPLWalletLogin_card {
    width: 100%;
}

.mx_XRPLWalletLogin_cardButton {
    width: 100%;
    padding: 0;
    border: 2px solid rgba(231, 231, 231, 0.2);
    border-radius: 16px;
    background: #15191e;
    cursor: pointer;
    -webkit-transition: all 0.2s ease;
    transition: all 0.2s ease;
    position: relative;
    overflow: hidden;
}

.mx_XRPLWalletLogin_cardButton:hover:not(:disabled) {
        border-color: #0dbd8b;
        -webkit-transform: translateY(-2px);
                transform: translateY(-2px);
        -webkit-box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
                box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
    }

.mx_XRPLWalletLogin_cardButton:disabled {
        opacity: 0.6;
        cursor: not-allowed;
        -webkit-transform: none;
                transform: none;
    }

.mx_XRPLWalletLogin_cardButton:active:not(:disabled) {
        -webkit-transform: translateY(0);
                transform: translateY(0);
    }

.mx_XRPLWalletLogin_cardContent {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: 20px 24px;
    grid-gap: 16px;
    gap: 16px;
}

.mx_XRPLWalletLogin_cardIcon {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: #6f7882;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}

.mx_XRPLWalletLogin_emoji {
    font-size: 24px;
    line-height: 1;
}

.mx_XRPLWalletLogin_cardInfo {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    text-align: left;
}

.mx_XRPLWalletLogin_cardTitle {
    margin: 0 0 4px 0;
    font-size: 18px;
    font-weight: 600;
    color: #ffffff;
    line-height: 1.2;
}

.mx_XRPLWalletLogin_cardDescription {
    margin: 0;
    font-size: 14px;
    color: #a9b2bc;
    line-height: 1.3;
}

.mx_XRPLWalletLogin_cardArrow {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}

.mx_XRPLWalletLogin_arrow {
    font-size: 20px;
    color: #a9b2bc;
    -webkit-transition: -webkit-transform 0.2s ease;
    transition: -webkit-transform 0.2s ease;
    transition: transform 0.2s ease;
    transition: transform 0.2s ease, -webkit-transform 0.2s ease;
}

.mx_XRPLWalletLogin_cardButton:hover:not(:disabled) .mx_XRPLWalletLogin_arrow {
    -webkit-transform: translateX(4px);
            transform: translateX(4px);
}

.mx_XRPLWalletLogin_loadingText {
    font-size: 14px;
    color: #a9b2bc;
    font-weight: 500;
}

/* Wallet-specific styling */

.mx_XRPLWalletLogin_xumm:hover:not(:disabled) {
        border-color: #3052ff;
        background: linear-gradient(135deg, #3052ff08, #3052ff04);
    }

.mx_XRPLWalletLogin_xumm .mx_XRPLWalletLogin_cardIcon {
        background: linear-gradient(135deg, #3052ff, #4461ff);
    }

.mx_XRPLWalletLogin_gem:hover:not(:disabled) {
        border-color: #00d4aa;
        background: linear-gradient(135deg, #00d4aa08, #00d4aa04);
    }

.mx_XRPLWalletLogin_gem .mx_XRPLWalletLogin_cardIcon {
        background: linear-gradient(135deg, #00d4aa, #00e6c0);
    }

.mx_XRPLWalletLogin_crossmark:hover:not(:disabled) {
        border-color: #ff6b6b;
        background: linear-gradient(135deg, #ff6b6b08, #ff6b6b04);
    }

.mx_XRPLWalletLogin_crossmark .mx_XRPLWalletLogin_cardIcon {
        background: linear-gradient(135deg, #ff6b6b, #ff8080);
    }

/* Footer Section */

.mx_XRPLWalletLogin_footer {
    border-top: 1px solid #394049;
    padding-top: 24px;
    text-align: center;
}

.mx_XRPLWalletLogin_security {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    grid-gap: 8px;
    gap: 8px;
    margin-bottom: 16px;
}

.mx_XRPLWalletLogin_securityIcon {
    font-size: 16px;
}

.mx_XRPLWalletLogin_securityText {
    margin: 0;
    font-size: 14px;
    color: #a9b2bc;
    font-weight: 500;
}

.mx_XRPLWalletLogin_help {
    margin-top: 16px;
}

.mx_XRPLWalletLogin_helpText {
    margin: 0;
    font-size: 14px;
    color: #8e99a4;
    line-height: 1.4;
}

.mx_XRPLWalletLogin_helpLink {
    color: #0dbd8b;
    text-decoration: none;
    font-weight: 500;
    margin-left: 4px;
}

.mx_XRPLWalletLogin_helpLink:hover {
        text-decoration: underline;
    }

/* Responsive Design */

@media (max-width: 480px) {
    .mx_XRPLWalletLogin_container {
        padding: 24px 20px;
        border-radius: 12px;
    }
    
    .mx_XRPLWalletLogin_title {
        font-size: 24px;
    }
    
    .mx_XRPLWalletLogin_subtitle {
        font-size: 15px;
    }
    
    .mx_XRPLWalletLogin_cardContent {
        padding: 16px 20px;
        grid-gap: 12px;
        gap: 12px;
    }
    
    .mx_XRPLWalletLogin_cardIcon {
        width: 40px;
        height: 40px;
    }
    
    .mx_XRPLWalletLogin_emoji {
        font-size: 20px;
    }
    
    .mx_XRPLWalletLogin_cardTitle {
        font-size: 16px;
    }
    
    .mx_XRPLWalletLogin_cardDescription {
        font-size: 13px;
    }
}

@media (max-width: 320px) {
    .mx_XRPLWalletLogin_container {
        padding: 20px 16px;
    }
    
    .mx_XRPLWalletLogin_cardContent {
        padding: 14px 16px;
        grid-gap: 10px;
        gap: 10px;
    }
}

/* Dark theme support */

.mx_theme_dark .mx_XRPLWalletLogin_container {
        background: #20252b;
        border-color: rgba(231, 231, 231, 0.2);
        -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
                box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
    }

.mx_theme_dark .mx_XRPLWalletLogin_cardButton {
        background: #20252b;
        border-color: rgba(231, 231, 231, 0.2);
    }

.mx_theme_dark .mx_XRPLWalletLogin_cardButton:hover:not(:disabled) {
            background: #394049;
        }

.mx_theme_dark .mx_XRPLWalletLogin_errorBanner {
        background: #422006;
        border-color: #92400e;
    }

.mx_theme_dark .mx_XRPLWalletLogin_errorBanner .mx_XRPLWalletLogin_errorContent h4 {
                color: #fbbf24;
            }

.mx_theme_dark .mx_XRPLWalletLogin_errorBanner .mx_XRPLWalletLogin_errorContent p {
                color: #d97706;
            }

/*
Copyright 2024 TextRP Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_XRPLAuthCallback {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    min-height: 400px;
    padding: 32px;
}

.mx_XRPLAuthCallback_content {
    text-align: center;
    max-width: 400px;
    width: 100%;
}

.mx_XRPLAuthCallback_header {
    margin-bottom: 24px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_XRPLAuthCallback_success,
.mx_XRPLAuthCallback_error {
    font-size: 48px;
    line-height: 1;
}

.mx_XRPLAuthCallback_title {
    margin: 0 0 16px 0;
    font-size: 24px;
    font-weight: 600;
    color: #ffffff;
}

.mx_XRPLAuthCallback_message {
    margin: 0 0 24px 0;
    font-size: 16px;
    color: #a9b2bc;
    line-height: 1.4;
}

.mx_XRPLAuthCallback_actions {
    margin-top: 24px;
}

.mx_XRPLAuthCallback_retryButton {
    background: #0dbd8b;
    color: #ffffff;
    border: none;
    border-radius: 8px;
    padding: 12px 24px;
    font-size: 16px;
    font-weight: 500;
    cursor: pointer;
    -webkit-transition: all 0.2s ease;
    transition: all 0.2s ease;
}

.mx_XRPLAuthCallback_retryButton:hover {
        background: #0aa274; /* Darker shade of $accent (#0dbd8b) for hover state */
        -webkit-transform: translateY(-1px);
                transform: translateY(-1px);
    }

.mx_XRPLAuthCallback_retryButton:active {
        -webkit-transform: translateY(0);
                transform: translateY(0);
    }

/* Responsive design */

@media (max-width: 480px) {
    .mx_XRPLAuthCallback {
        padding: 20px;
        min-height: 300px;
    }
    
    .mx_XRPLAuthCallback_title {
        font-size: 20px;
    }
    
    .mx_XRPLAuthCallback_message {
        font-size: 14px;
    }
}

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BaseAvatar {
    position: relative;
    /* In at least Firefox, the case of relative positioned inline elements */
    /* (such as mx_BaseAvatar) with absolute positioned children (such as */
    /* mx_BaseAvatar_initial) is a dark corner full of spider webs. It will give */
    /* different results during full reflow of the page vs. incremental reflow */
    /* of small portions. While that's surely a browser bug, we can avoid it by */
    /* using `inline-block` instead of the default `inline`. */
    /* https://github.com/vector-im/element-web/issues/5594 */
    /* https://bugzilla.mozilla.org/show_bug.cgi?id=1535053 */
    /* https://bugzilla.mozilla.org/show_bug.cgi?id=255139 */
    display: inline-block;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}

.mx_BaseAvatar.mx_RoomAvatar_isSpaceRoom.mx_BaseAvatar_image,
        .mx_BaseAvatar.mx_RoomAvatar_isSpaceRoom .mx_BaseAvatar_image {
            border-radius: 8px;
        }

.mx_BaseAvatar_initial {
    position: absolute;
    left: 0;
    color: #ffffff;
    text-align: center;
    speak: none;
    pointer-events: none;
    font-weight: normal;
}

.mx_BaseAvatar_image {
    -o-object-fit: cover;
       object-fit: cover;
    aspect-ratio: 1;
    border-radius: 125px;
    vertical-align: top;
    background-color: #15191e;
}

/* Percy screenshot test specific CSS */

@media only percy {
    /* Stick the default room avatar colour, so it doesn't cause a false diff on the screenshot */
    .mx_BaseAvatar_initial {
        background-color: var(--percy-color-avatar) !important;
        border-radius: 125px;
    }
    .mx_RoomAvatar_isSpaceRoom .mx_BaseAvatar_initial {
        border-radius: 8px;
    }
    .mx_BaseAvatar_initial + .mx_BaseAvatar_image {
        visibility: hidden;
    }
}

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DecoratedRoomAvatar,
.mx_ExtraTile {
    position: relative;
    contain: content;
}

.mx_DecoratedRoomAvatar.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar, .mx_ExtraTile.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar {
        -webkit-mask-image: url(../../img/element-icons/roomlist/decorated-avatar-mask.9b9e82f.svg);
                mask-image: url(../../img/element-icons/roomlist/decorated-avatar-mask.9b9e82f.svg);
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
    }

.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon {
        position: absolute;
        /* the following percentage based sizings are to match the scalable svg mask for the cutout */
        bottom: -6.25%;
        right: -6.25%;
        margin: 12.5%;
        width: 25%;
        height: 25%;
        border-radius: 50%;
    }

.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon::before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon::before {
        content: "";
        width: 100%;
        height: 100%;
        right: 0;
        position: absolute;
        border-radius: 8px;
    }

.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_globe::before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon_globe::before {
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        background: #a9b2bc;
        -webkit-mask-image: url(../../img/globe.216f1db.svg);
                mask-image: url(../../img/globe.216f1db.svg);
    }

.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_offline::before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon_offline::before {
        background-color: #e3e8f0;
    }

.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_online::before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon_online::before {
        background-color: #0dbd8b;
    }

.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_away::before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon_away::before {
        background-color: #d9b072;
    }

.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_busy::before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon_busy::before {
        background-color: #ff5b55;
    }

.mx_DecoratedRoomAvatar .mx_NotificationBadge,
    .mx_DecoratedRoomAvatar .mx_RoomTile_badgeContainer,
    .mx_ExtraTile .mx_NotificationBadge,
    .mx_ExtraTile .mx_RoomTile_badgeContainer {
        position: absolute;
        top: 0;
        right: 0;
        height: 18px;
        width: 18px;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_WidgetAvatar {
    border-radius: 4px;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BetaCard {
    padding: 24px;
    background-color: #21262c;
    border-radius: 8px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    color: #a9b2bc;
}

.mx_BetaCard .mx_BetaCard_columns {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-flow: wrap;
            flex-flow: wrap;
        grid-gap: 20px;
        gap: 20px;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
        }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description .mx_BetaCard_title {
                font-weight: 600;
                font-weight: var(--font-semi-bold);
                font-size: 1.8rem;
                line-height: 2.2rem;
                color: #ffffff;
                margin: 4px 0 14px;

                display: -webkit-box;

                display: -ms-flexbox;

                display: flex;
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
                grid-column-gap: 12px;
                -webkit-column-gap: 12px;
                   -moz-column-gap: 12px;
                        column-gap: 12px;
            }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description .mx_BetaCard_caption {
                font-size: 1.5rem;
                line-height: 2rem;
            }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description .mx_BetaCard_buttons {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -ms-flex-wrap: wrap-reverse;
                    flex-wrap: wrap-reverse;
                grid-gap: 12px;
                gap: 12px;
                margin: 20px auto 0;
            }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description .mx_BetaCard_buttons .mx_AccessibleButton {
                    padding: 7px 40px;
                    width: auto;
                    -webkit-box-flex: 1;
                        -ms-flex: 1;
                            flex: 1;
                    white-space: nowrap;
                }

/* text might overflow */

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description .mx_BetaCard_buttons .mx_AccessibleButton:nth-child(1) {
                        -webkit-box-ordinal-group: 3;
                            -ms-flex-order: 2;
                                order: 2; /* Place feedback button top and right */
                    }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description .mx_BetaCard_refreshWarning {
                margin-top: 8px;
                font-size: 1rem;
                text-align: center;
            }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description .mx_BetaCard_faq {
                margin-top: 20px;
                font-size: 1.2rem;
                line-height: 1.5rem;
            }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description .mx_BetaCard_faq > h4 {
                    margin: 12px 0 0;
                }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_description .mx_BetaCard_faq > p {
                    margin: 0;
                }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_image_wrapper {
            margin: auto 0;
        }

.mx_BetaCard .mx_BetaCard_columns .mx_BetaCard_columns_image_wrapper .mx_BetaCard_columns_image {
                width: 100%;
                max-width: 300px;
                -o-object-fit: contain;
                   object-fit: contain;
                height: 100%;
                border-radius: 4px;
            }

.mx_BetaCard .mx_BetaCard_relatedSettings .mx_SettingsFlag {
            margin: 16px 0 0;
            font-size: 1.5rem;
            line-height: 2.4rem;
            color: #ffffff;
        }

.mx_BetaCard .mx_BetaCard_relatedSettings .mx_SettingsFlag .mx_SettingsFlag_microcopy {
                margin-top: 4px;
                font-size: 1.2rem;
                line-height: 1.5rem;
            }

.mx_BetaCard_betaPill {
    background-color: #238cf5;
    padding: 4px 10px;
    border-radius: 8px;
    text-transform: uppercase;
    font-size: 1.2rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    line-height: 15px;
    color: #ffffff;
    display: inline-block;
    vertical-align: text-bottom;
    word-break: keep-all;
}

/* avoid multiple lines on CJK language */

.mx_BetaCard_betaPill.mx_AccessibleButton {
        cursor: pointer;
    }

/*
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DeviceContextMenu {
    max-width: 252px;
}

.mx_DeviceContextMenu .mx_DeviceContextMenu_device_icon {
        display: none;
    }

.mx_DeviceContextMenu .mx_IconizedContextMenu_label {
        padding-left: 0 !important;
    }

/*
Copyright 2020 - 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* A context menu that largely fits the | [icon]    [label] | format. */

.mx_IconizedContextMenu {
    min-width: 146px;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    /* override default ul styles*/
    margin: 0;
    padding: 0;
}

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList > * {
            padding-left: 20px;
            padding-right: 20px;
        }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_optionList_label {
            font-size: 1.5rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
        }

/* the notFirst class is for cases where the optionList might be under a header of sorts. */

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:nth-child(n + 2),
        .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_optionList_notFirst {
            /* This is a bit of a hack when we could just use a simple border-top property, */
            /* however we have a (kinda) good reason for doing it this way: we need opacity. */
            /* To get the right color, we need an opacity modifier which means we have to work */
            /* around the problem. PostCSS doesn't support the opacity() function, and if we */
            /* use something like postcss-functions we quickly run into an issue where the */
            /* function we would define gets passed a CSS variable for custom themes, which */
            /* can't be converted easily even when considering https://stackoverflow.com/a/41265350/7037379 */
            /**/
        }

/* Therefore, we just hack in a line and border the thing ourselves */

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:nth-child(n + 2)::before, .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_optionList_notFirst::before {
                border-top: 1px solid #ffffff;
                opacity: 0.1;
                content: "";

                /* Counteract the padding problems (width: 100% ignores the 40px padding, */
                /* unless we position it absolutely then it does the right thing). */
                width: 100%;
                position: absolute;
                left: 0;
            }

/* round the top corners of the top button for the hover effect to be bounded */

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:first-child .mx_IconizedContextMenu_item:first-child {
            border-radius: 8px 8px 0 0; /* radius matches .mx_ContextualMenu */
        }

/* round the bottom corners of the bottom button for the hover effect to be bounded */

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:last-child .mx_IconizedContextMenu_item:last-child {
            border-radius: 0 0 8px 8px; /* radius matches .mx_ContextualMenu */
        }

/* round all corners of the only button for the hover effect to be bounded */

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:first-child:last-child .mx_IconizedContextMenu_item:first-child:last-child {
            border-radius: 8px; /* radius matches .mx_ContextualMenu */
        }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_item {
            /* pad the inside of the button so that the hover background is padded too */
            padding-top: 12px;
            padding-bottom: 12px;
            text-decoration: none;
            color: #ffffff;
            font-size: 1.5rem;
            line-height: 2.4rem;

            /* Create a flexbox to more easily define the list items */
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
        }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_item:hover,
            .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_item:focus-visible {
                background-color: #343a46;
            }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_item.mx_AccessibleButton_disabled {
                opacity: 0.5;
                cursor: not-allowed;
            }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_item img,
            .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_item .mx_IconizedContextMenu_icon {
                /* icons */
                width: 16px;
                min-width: 16px;
                max-width: 16px;
            }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_item span.mx_IconizedContextMenu_label {
                /* labels */
                width: 100%;
                -webkit-box-flex: 1;
                    -ms-flex: 1;
                        flex: 1;

                /* Ellipsize any text overflow */
                text-overflow: ellipsis;
                overflow: hidden;
                white-space: nowrap;
            }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_item .mx_IconizedContextMenu_icon + .mx_IconizedContextMenu_label {
                padding-left: 14px;
            }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_item .mx_BetaCard_betaPill {
                margin-left: 16px;
            }

.mx_IconizedContextMenu .mx_IconizedContextMenu_icon {
        position: relative;
        width: 16px;
        height: 16px;
    }

.mx_IconizedContextMenu .mx_IconizedContextMenu_icon::before {
            content: "";
            width: inherit;
            height: inherit;
            position: absolute;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background-color: #a9b2bc;
        }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_IconizedContextMenu_item {
            color: #ff5b55 !important;
        }

.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_IconizedContextMenu_icon::before {
            background-color: #ff5b55;
        }

.mx_IconizedContextMenu .mx_IconizedContextMenu_option_red {
        color: #ff5b55 !important;
    }

.mx_IconizedContextMenu .mx_IconizedContextMenu_option_red .mx_IconizedContextMenu_icon::before {
            background-color: #ff5b55;
        }

.mx_IconizedContextMenu .mx_IconizedContextMenu_active.mx_IconizedContextMenu_item,
        .mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_IconizedContextMenu_item {
            color: #0dbd8b !important;
        }

.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_IconizedContextMenu_icon::before {
            background-color: #0dbd8b;
        }

.mx_IconizedContextMenu.mx_IconizedContextMenu_compact .mx_IconizedContextMenu_optionList > * {
            padding: 8px 16px 8px 11px;
        }

.mx_IconizedContextMenu .mx_IconizedContextMenu_checked,
    .mx_IconizedContextMenu .mx_IconizedContextMenu_unchecked {
        margin-left: 16px;
        margin-right: -5px;
    }

.mx_IconizedContextMenu .mx_IconizedContextMenu_developerTools::before {
        -webkit-mask-image: url(../../img/element-icons/settings/flask.699f7f9.svg);
                mask-image: url(../../img/element-icons/settings/flask.699f7f9.svg);
    }

.mx_IconizedContextMenu .mx_IconizedContextMenu_checked::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/checkmark.8e909d3.svg);
                mask-image: url(../../img/element-icons/roomlist/checkmark.8e909d3.svg);
    }

.mx_IconizedContextMenu .mx_IconizedContextMenu_unchecked::before {
        content: unset;
    }

.mx_IconizedContextMenu .mx_IconizedContextMenu_sublabel {
        margin-left: 20px;
        color: #8e99a4;
    }

.mx_IconizedContextMenu_item.mx_IconizedContextMenu_itemDestructive {
    color: #ff5b55 !important;
}

/*
Copyright 2020 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LegacyCallContextMenu_item {
    width: 205px;
    height: 40px;
    padding-left: 16px;
    line-height: 40px;
    vertical-align: center;
}

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2021 Michael Weimann <mail@michael-weimann.eu>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MessageContextMenu .mx_IconizedContextMenu_icon {
        width: 16px;
        height: 16px;
        display: block;
    }

.mx_MessageContextMenu .mx_IconizedContextMenu_icon::before {
            content: "";
            width: 16px;
            height: 16px;
            display: block;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background: #ffffff;
        }

.mx_MessageContextMenu .mx_MessageContextMenu_iconCollapse::before {
        -webkit-mask-image: url(../../img/element-icons/message/chevron-up.dabdada.svg);
                mask-image: url(../../img/element-icons/message/chevron-up.dabdada.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconReport::before {
        -webkit-mask-image: url(../../img/element-icons/warning-badge.3cf4d1a.svg);
                mask-image: url(../../img/element-icons/warning-badge.3cf4d1a.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconLink::before {
        -webkit-mask-image: url(../../img/element-icons/link.3f7cd42.svg);
                mask-image: url(../../img/element-icons/link.3f7cd42.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconPermalink::before {
        -webkit-mask-image: url(../../img/element-icons/room/share.069290e.svg);
                mask-image: url(../../img/element-icons/room/share.069290e.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconUnhidePreview::before {
        -webkit-mask-image: url(../../img/element-icons/settings/appearance.c35df33.svg);
                mask-image: url(../../img/element-icons/settings/appearance.c35df33.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconOpenInMapSite::before {
        -webkit-mask-image: url(../../img/external-link.5014037.svg);
                mask-image: url(../../img/external-link.5014037.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconEndPoll::before {
        -webkit-mask-image: url(../../img/element-icons/check-white.1e3d7f7.svg);
                mask-image: url(../../img/element-icons/check-white.1e3d7f7.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconForward::before {
        -webkit-mask-image: url(../../img/element-icons/message/fwd.6612dfa.svg);
                mask-image: url(../../img/element-icons/message/fwd.6612dfa.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconRedact::before {
        -webkit-mask-image: url(../../img/element-icons/trashcan.3e3b8b7.svg);
                mask-image: url(../../img/element-icons/trashcan.3e3b8b7.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconResend::before {
        -webkit-mask-image: url(../../img/element-icons/retry.2bad236.svg);
                mask-image: url(../../img/element-icons/retry.2bad236.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconSource::before {
        -webkit-mask-image: url(../../img/element-icons/room/format-bar/code.c3acfbd.svg);
                mask-image: url(../../img/element-icons/room/format-bar/code.c3acfbd.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconQuote::before {
        -webkit-mask-image: url(../../img/element-icons/room/format-bar/quote.5fc8cc0.svg);
                mask-image: url(../../img/element-icons/room/format-bar/quote.5fc8cc0.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconPin::before {
        -webkit-mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
                mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconUnpin::before {
        -webkit-mask-image: url(../../img/element-icons/room/pin.8acecb2.svg);
                mask-image: url(../../img/element-icons/room/pin.8acecb2.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconCopy::before {
        height: 12px;
        left: 2px;
        -webkit-mask-image: url(../../img/element-icons/copy.90230e2.svg);
                mask-image: url(../../img/element-icons/copy.90230e2.svg);
        position: relative;
        width: 12px;
        top: 3px;
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconEdit::before {
        -webkit-mask-image: url(../../img/element-icons/room/message-bar/edit.c76811e.svg);
                mask-image: url(../../img/element-icons/room/message-bar/edit.c76811e.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconReply::before {
        -webkit-mask-image: url(../../img/element-icons/room/message-bar/reply.7b0a0bd.svg);
                mask-image: url(../../img/element-icons/room/message-bar/reply.7b0a0bd.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconReplyInThread::before {
        -webkit-mask-image: url(../../img/element-icons/message/thread.a8dbd69.svg);
                mask-image: url(../../img/element-icons/message/thread.a8dbd69.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconReact::before {
        -webkit-mask-image: url(../../img/element-icons/room/message-bar/emoji.97e3e33.svg);
                mask-image: url(../../img/element-icons/room/message-bar/emoji.97e3e33.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_iconViewInRoom::before {
        -webkit-mask-image: url(../../img/element-icons/view-in-room.45779b8.svg);
                mask-image: url(../../img/element-icons/view-in-room.45779b8.svg);
    }

.mx_MessageContextMenu .mx_MessageContextMenu_jumpToEvent::before {
        -webkit-mask-image: url(../../img/element-icons/child-relationship.132f4cb.svg);
                mask-image: url(../../img/element-icons/child-relationship.132f4cb.svg);
    }

.mx_RoomGeneralContextMenu_iconStar::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/favorite.b47f7d4.svg);
            mask-image: url(../../img/element-icons/roomlist/favorite.b47f7d4.svg);
}

.mx_RoomGeneralContextMenu_iconArrowDown::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/low-priority.1cdb11b.svg);
            mask-image: url(../../img/element-icons/roomlist/low-priority.1cdb11b.svg);
}

.mx_RoomGeneralContextMenu_iconMarkAsRead::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/mark-as-read.8a6306a.svg);
            mask-image: url(../../img/element-icons/roomlist/mark-as-read.8a6306a.svg);
}

.mx_RoomGeneralContextMenu_iconNotificationsDefault::before {
    -webkit-mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
            mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
}

.mx_RoomGeneralContextMenu_iconNotificationsAllMessages::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
            mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
}

.mx_RoomGeneralContextMenu_iconNotificationsMentionsKeywords::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
            mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
}

.mx_RoomGeneralContextMenu_iconNotificationsNone::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
            mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
}

.mx_RoomGeneralContextMenu_iconPeople::before {
    -webkit-mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
            mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
}

.mx_RoomGeneralContextMenu_iconFiles::before {
    -webkit-mask-image: url(../../img/element-icons/room/files.ee097b4.svg);
            mask-image: url(../../img/element-icons/room/files.ee097b4.svg);
}

.mx_RoomGeneralContextMenu_iconPins::before {
    -webkit-mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
            mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
}

.mx_RoomGeneralContextMenu_iconWidgets::before {
    -webkit-mask-image: url(../../img/element-icons/room/apps.4933168.svg);
            mask-image: url(../../img/element-icons/room/apps.4933168.svg);
}

.mx_RoomGeneralContextMenu_iconSettings::before {
    -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
            mask-image: url(../../img/element-icons/settings.0c529f2.svg);
}

.mx_RoomGeneralContextMenu_iconExport::before {
    -webkit-mask-image: url(../../img/element-icons/export.9b2ed5d.svg);
            mask-image: url(../../img/element-icons/export.9b2ed5d.svg);
}

.mx_RoomGeneralContextMenu_iconDeveloperTools::before {
    -webkit-mask-image: url(../../img/element-icons/settings/flask.699f7f9.svg);
            mask-image: url(../../img/element-icons/settings/flask.699f7f9.svg);
}

.mx_RoomGeneralContextMenu_iconCopyLink::before {
    -webkit-mask-image: url(../../img/element-icons/link.3f7cd42.svg);
            mask-image: url(../../img/element-icons/link.3f7cd42.svg);
}

.mx_RoomGeneralContextMenu_iconInvite::before {
    -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
            mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
}

.mx_RoomGeneralContextMenu_iconSignOut::before {
    -webkit-mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
            mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
}

.mx_RoomNotificationContextMenu_iconBell::before {
    -webkit-mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
            mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
}

.mx_RoomNotificationContextMenu_iconBellDot::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
            mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
}

.mx_RoomNotificationContextMenu_iconBellMentions::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
            mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
}

.mx_RoomNotificationContextMenu_iconBellCrossed::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
            mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AddExistingToSpaceDialog_wrapper .mx_Dialog {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_AddExistingToSpace .mx_SearchBox {
        /* To match the space around the title */
        margin: 0 0 15px 0;
        -webkit-box-flex: 0;
            -ms-flex-positive: 0;
                flex-grow: 0;
    }

.mx_AddExistingToSpace .mx_AddExistingToSpace_content {
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
    }

.mx_AddExistingToSpace .mx_AddExistingToSpace_noResults {
        display: block;
        margin-top: 24px;
    }

.mx_AddExistingToSpace .mx_AddExistingToSpace_section {
        margin-right: 12px;
    }

/* provides space for scrollbar so that checkbox and scrollbar do not collide*/

.mx_AddExistingToSpace .mx_AddExistingToSpace_section:not(:first-child) {
            margin-top: 24px;
        }

.mx_AddExistingToSpace .mx_AddExistingToSpace_section > h3 {
            margin: 0;
            color: #a9b2bc;
            font-size: 1.2rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            line-height: 1.5rem;
        }

.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AccessibleButton_kind_link {
            font-size: 1.2rem;
            line-height: 1.5rem;
            margin-top: 8px;
        }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        margin-top: 20px;
    }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span {
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
            font-size: 1.2rem;
            line-height: 1.5rem;
            color: #a9b2bc;
        }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span .mx_ProgressBar {
                height: 8px;
                width: 100%;

                border-radius: 8px;
            }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span .mx_ProgressBar::-moz-progress-bar {
        border-radius: 8px;
    }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span .mx_ProgressBar::-webkit-progress-bar,
    .mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span .mx_ProgressBar::-webkit-progress-value {
        border-radius: 8px;
    }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span .mx_AddExistingToSpaceDialog_progressText {
                margin-top: 8px;
                font-size: 1.5rem;
                line-height: 2.4rem;
                color: #ffffff;
            }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span > * {
                vertical-align: middle;
            }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error {
            padding-left: 12px;
        }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error > img {
                -ms-flex-item-align: center;
                    align-self: center;
            }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorHeading {
                font-weight: 600;
                font-weight: var(--font-semi-bold);
                font-size: 1.5rem;
                line-height: 1.8rem;
                color: #ff5b55;
            }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorCaption {
                margin-top: 4px;
                font-size: 1.2rem;
                line-height: 1.5rem;
                color: #ffffff;
            }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton {
            display: inline-block;
            -ms-flex-item-align: center;
                align-self: center;
        }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_primary {
            padding: 8px 36px;
        }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton {
            margin-left: 12px;
            padding-left: 24px;
            position: relative;
        }

.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton::before {
                content: "";
                position: absolute;
                background-color: #ffffff;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: contain;
                        mask-size: contain;
                -webkit-mask-image: url(../../img/element-icons/retry.2bad236.svg);
                        mask-image: url(../../img/element-icons/retry.2bad236.svg);
                width: 18px;
                height: 18px;
                left: 0;
            }

.mx_AddExistingToSpaceDialog {
    width: 480px;
    color: #ffffff;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    min-height: 0;
    height: 80vh;
}

.mx_AddExistingToSpaceDialog .mx_AddExistingToSpace {
        display: contents;
    }

.mx_SubspaceSelector {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.mx_SubspaceSelector .mx_BaseAvatar_image {
        border-radius: 8px;
        margin: 0;
        vertical-align: unset;
    }

.mx_SubspaceSelector .mx_BaseAvatar {
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex;
        margin: auto 16px auto 5px;
        vertical-align: middle;
    }

.mx_SubspaceSelector > div > h1 {
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            font-size: 1.8rem;
            line-height: 2.2rem;
            margin: 0;
        }

.mx_SubspaceSelector .mx_Dropdown_input {
        border: none;
    }

.mx_SubspaceSelector .mx_Dropdown_input > .mx_Dropdown_option {
            padding-left: 0;
            -webkit-box-flex: unset;
                -ms-flex: unset;
                    flex: unset;
            height: unset;
            color: #a9b2bc;
            font-size: 1.5rem;
            line-height: 2.4rem;
        }

.mx_SubspaceSelector .mx_Dropdown_input > .mx_Dropdown_option .mx_BaseAvatar {
                display: none;
            }

.mx_SubspaceSelector .mx_Dropdown_input .mx_Dropdown_menu .mx_SubspaceSelector_dropdownOptionActive {
                color: #0dbd8b;
                padding-right: 32px;
                position: relative;
            }

.mx_SubspaceSelector .mx_Dropdown_input .mx_Dropdown_menu .mx_SubspaceSelector_dropdownOptionActive::before {
                    content: "";
                    width: 20px;
                    height: 20px;
                    top: 8px;
                    right: 0;
                    position: absolute;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-size: contain;
                            mask-size: contain;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    background-color: #0dbd8b;
                    -webkit-mask-image: url(../../img/element-icons/roomlist/checkmark.8e909d3.svg);
                            mask-image: url(../../img/element-icons/roomlist/checkmark.8e909d3.svg);
                }

.mx_SubspaceSelector .mx_SubspaceSelector_onlySpace {
        color: #a9b2bc;
        font-size: 1.5rem;
        line-height: 2.4rem;
    }

.mx_AddExistingToSpace_entry {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin-top: 12px;
}

.mx_AddExistingToSpace_entry .mx_DecoratedRoomAvatar, 
    .mx_AddExistingToSpace_entry .mx_BaseAvatar.mx_RoomAvatar_isSpaceRoom {
        margin-right: 12px;
    }

.mx_AddExistingToSpace_entry img.mx_RoomAvatar_isSpaceRoom,
    .mx_AddExistingToSpace_entry .mx_RoomAvatar_isSpaceRoom img {
        border-radius: 8px;
    }

.mx_AddExistingToSpace_entry .mx_AddExistingToSpace_entry_name {
        font-size: 1.5rem;
        line-height: 30px;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        margin-right: 12px;
    }

.mx_AddExistingToSpace_entry .mx_Checkbox {
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AnalyticsLearnMoreDialog {
    max-width: 500px;
}

.mx_AnalyticsLearnMoreDialog .mx_AnalyticsLearnMore_image_holder {
        background-image: url(../../img/element-shiny.9ddee3e.svg);
        background-repeat: no-repeat;
        background-position: center top;
        height: 112px;
        padding: 20px 0px;
    }

.mx_AnalyticsLearnMoreDialog .mx_Dialog_content {
        margin-bottom: 0px;
    }

.mx_AnalyticsLearnMoreDialog .mx_AnalyticsLearnMore_copy {
        border-bottom: 1px solid #000000;
        padding-bottom: 20px;
        margin-bottom: 20px;
    }

.mx_AnalyticsLearnMoreDialog a {
        color: #0dbd8b;
        text-decoration: none;
    }

.mx_AnalyticsLearnMoreDialog .mx_AnalyticsLearnMore_bullets {
        padding-left: 0px;
    }

.mx_AnalyticsLearnMoreDialog .mx_AnalyticsLearnMore_bullets li {
        background: url(../../img/tick-circle.07c2a4a.svg) no-repeat;
        list-style-type: none;
        padding: 2px 0px 20px 32px;
        vertical-align: middle;
    }

.mx_AppDownloadDialog {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    grid-gap: 32px;
    gap: 32px;
    color: #ffffff;
}

.mx_AppDownloadDialog.mx_Dialog_fixedWidth {
        width: 640px;
    }

.mx_AppDownloadDialog .mx_AppDownloadDialog_desktop {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        grid-gap: 16px;
        gap: 16px;
    }

.mx_AppDownloadDialog .mx_AppDownloadDialog_mobile {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
        grid-gap: 24px;
        gap: 24px;
    }

.mx_AppDownloadDialog .mx_AppDownloadDialog_mobile .mx_AppDownloadDialog_app {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
            -ms-flex-preferred-size: 50%;
                flex-basis: 50%;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            grid-gap: 16px;
            gap: 16px;
        }

.mx_AppDownloadDialog .mx_AppDownloadDialog_mobile .mx_AppDownloadDialog_app .mx_QRCode {
                /* intentionally hardcoded color to ensure the QR code is readable in any situation */
                background: #ffffff;

                padding: 24px;
                border: 1px solid #394049;
                border-radius: 4px;
                -ms-flex-item-align: stretch;
                    align-self: stretch;
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
                -webkit-box-orient: vertical;
                -webkit-box-direction: normal;
                    -ms-flex-direction: column;
                        flex-direction: column;
            }

.mx_AppDownloadDialog .mx_AppDownloadDialog_mobile .mx_AppDownloadDialog_app .mx_QRCode .mx_VerificationQRCode {
                    height: 144px;
                    width: 144px;
                    -ms-interpolation-mode: nearest-neighbor;
                        image-rendering: -webkit-optimize-contrast;
                        image-rendering: -o-pixelated;
                        image-rendering: pixelated;
                    border-radius: 0;
                }

.mx_AppDownloadDialog .mx_AppDownloadDialog_mobile .mx_AppDownloadDialog_app .mx_AppDownloadDialog_info {
                font-size: 1.2rem;
                color: #8e99a4;
            }

.mx_AppDownloadDialog .mx_AppDownloadDialog_mobile .mx_AppDownloadDialog_app .mx_AppDownloadDialog_links {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-orient: horizontal;
                -webkit-box-direction: normal;
                    -ms-flex-direction: row;
                        flex-direction: row;
                grid-gap: 8px;
                gap: 8px;
            }

.mx_AppDownloadDialog .mx_AppDownloadDialog_mobile .mx_AppDownloadDialog_app .mx_AppDownloadDialog_links .mx_AccessibleButton svg {
                        height: 40px;
                    }

.mx_AppDownloadDialog .mx_AppDownloadDialog_legal p {
            margin: 0;
            font-size: 1.2rem;
            color: #8e99a4;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BugReportDialog .mx_BugReportDialog_download .mx_AccessibleButton_kind_link {
            margin-right: 18px; /* Space between "Downloading logs..." */
        }

/*
Copyright 2021 Robin Townsend <robin@robin.town>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BulkRedactDialog .mx_Checkbox,
    .mx_BulkRedactDialog .mx_BulkRedactDialog_checkboxMicrocopy {
        line-height: 2rem;
    }

.mx_BulkRedactDialog .mx_BulkRedactDialog_checkboxMicrocopy {
        margin-left: 26px;
        color: #a9b2bc;
    }

/*
Copyright 2016 Aviral Dasgupta

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ChangelogDialog_content {
    max-height: 300px;
    overflow: auto;
}

.mx_ChangelogDialog_li {
    padding: 0.2em;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* -------------------------------------------------------------------------------- */

/* DEV NOTE: This stylesheet covers dialogs listed by the compound, including */

/* over multiple React components. The actual inner contents of the dialog should */

/* be in their respective stylesheets. */

/* -------------------------------------------------------------------------------- */

/* Override legacy/default styles for dialogs */

.mx_Dialog_wrapper.mx_CompoundDialog > .mx_Dialog {
    padding: 0; /* we'll manage it ourselves */
    color: #ffffff;
}

.mx_CompoundDialog .mx_Dialog {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_CompoundDialog .mx_CompoundDialog_header {
        padding: 32px 32px 16px 32px;
    }

.mx_CompoundDialog .mx_CompoundDialog_header h1 {
            display: inline-block;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            font-size: 2.4rem;
            margin: 0; /* managed by header class */
        }

.mx_CompoundDialog .mx_CompoundDialog_header .mx_CompoundDialog_cancelButton {
            -webkit-mask: url(../../img/cancel.12c5c12.svg);
                    mask: url(../../img/cancel.12c5c12.svg);
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: cover;
                    mask-size: cover;
            background-color: #9fa9ba;
            cursor: pointer;
            position: unset;
            width: unset;
            height: unset;
            width: 20px;
            height: 20px;

            /* Align with middle of title, 34px from right edge */
            position: absolute;
            top: 34px;
            right: 34px;
        }

.mx_CompoundDialog .mx_CompoundDialog_form {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        min-height: 0;
        max-height: 100%;
    }

.mx_CompoundDialog .mx_CompoundDialog_content {
        overflow: auto;
        padding: 8px 32px;
    }

.mx_CompoundDialog .mx_CompoundDialog_footer {
        padding: 20px 32px;
        text-align: right;
    }

.mx_CompoundDialog .mx_CompoundDialog_footer .mx_AccessibleButton {
            margin-left: 24px;
        }

.mx_ScrollableBaseDialog {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;

    width: 544px; /* fixed */
    height: 516px; /* fixed */
    max-width: 100%;
    min-height: 0;
    max-height: 80%;
}

.mx_ScrollableBaseDialog .mx_CompoundDialog_footer {
        -webkit-box-shadow: 0px -4px 4px rgba(0, 0, 0, 0.05);
                box-shadow: 0px -4px 4px rgba(0, 0, 0, 0.05); /* hardcoded colour for both themes */
        z-index: 1; /* needed to make footer & shadow appear above dialog content */
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ConfirmSpaceUserActionDialog_wrapper .mx_Dialog {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        padding: 24px 32px;
    }

.mx_ConfirmSpaceUserActionDialog {
    width: 440px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    height: 520px;
}

.mx_ConfirmSpaceUserActionDialog .mx_Dialog_content {
        margin: 12px 0;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        overflow-y: auto;
    }

.mx_ConfirmSpaceUserActionDialog .mx_ConfirmUserActionDialog_reasonField {
        margin-bottom: 12px;
    }

.mx_ConfirmSpaceUserActionDialog .mx_ConfirmSpaceUserActionDialog_warning {
        position: relative;
        border-radius: 8px;
        padding: 12px 8px 12px 42px;
        background-color: #20252b;

        font-size: 1.2rem;
        line-height: 1.5rem;
        color: #a9b2bc;
    }

.mx_ConfirmSpaceUserActionDialog .mx_ConfirmSpaceUserActionDialog_warning::before {
            content: "";
            position: absolute;
            left: 10px;
            top: calc(50% - 8px); /* vertical centering */
            height: 16px;
            width: 16px;
            background-color: #a9b2bc;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
                    mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
            -webkit-mask-position: center;
                    mask-position: center;
        }

/*
Copyright 2017 Vector Creations Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ConfirmUserActionDialog .mx_Dialog_content .mx_ConfirmUserActionDialog_user {
    min-height: 48px;
    margin-bottom: 24px;
}

.mx_ConfirmUserActionDialog_avatar {
    float: left;
    margin-right: 20px;
}

.mx_ConfirmUserActionDialog_name {
    padding-top: 2px;
    font-size: 1.8rem;
}

.mx_ConfirmUserActionDialog_userId {
    font-size: 1.3rem;
}

.mx_ConfirmUserActionDialog_reasonField {
    font-size: 1.4rem;
    color: #ffffff;
    background-color: #15191e;
}

/*
Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CreateRoomDialog_details {
    margin-top: 15px;
}

.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary {
        list-style: none;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        cursor: pointer;
        color: #0dbd8b;
    }

/* list-style doesn't do it for webkit */

.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary::-webkit-details-marker {
            display: none;
        }

.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary:not(.focus-visible) {
            outline: none;
        }

.mx_CreateRoomDialog_details > div {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: start;
            -ms-flex-align: start;
                align-items: flex-start;
        margin: 5px 0;
    }

.mx_CreateRoomDialog_details > div input[type="checkbox"] {
            margin-right: 10px;
        }

.mx_CreateRoomDialog_label {
    text-align: left;
    padding-bottom: 12px;
}

.mx_CreateRoomDialog_input_container {
    padding-right: 20px;
}

.mx_CreateRoomDialog_input {
    font-size: 1.5rem;
    border-radius: 3px;
    border: 1px solid rgba(231, 231, 231, 0.2);
    padding: 9px;
    color: #ffffff;
    background-color: #15191e;
    width: 100%;
}

/* needed to make the alias field only grow as wide as needed */

/* as opposed to full width */

.mx_CreateRoomDialog_aliasContainer {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    /* put margin on container so it can collapse with siblings */
    margin: 24px 0 10px;
}

.mx_CreateRoomDialog_aliasContainer .mx_RoomAliasField {
        margin: 0;
    }

.mx_CreateRoomDialog.mx_Dialog_fixedWidth {
        width: 450px;
    }

.mx_CreateRoomDialog .mx_Dialog_content {
        margin-bottom: 40px;
    }

.mx_CreateRoomDialog p,
    .mx_CreateRoomDialog .mx_Field_input label {
        color: #91a1c0;
    }

.mx_CreateRoomDialog .mx_SettingsFlag {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
    }

.mx_CreateRoomDialog .mx_SettingsFlag_label {
        -webkit-box-flex: 1;
            -ms-flex: 1 1 0px;
                flex: 1 1 0;
        min-width: 0;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_CreateRoomDialog .mx_ToggleSwitch {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 auto;
                flex: 0 0 auto;
        margin-left: 30px;
    }

.mx_CreateRoomDialog .mx_Dialog_content > .mx_SettingsFlag {
        margin-top: 24px;
    }

.mx_CreateRoomDialog p {
        margin: 0 85px 0 0;
        font-size: 1.2rem;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CreateSubspaceDialog_wrapper .mx_Dialog {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_CreateSubspaceDialog {
    width: 480px;
    color: #ffffff;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    min-height: 0;
}

.mx_CreateSubspaceDialog .mx_CreateSubspaceDialog_content {
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
    }

.mx_CreateSubspaceDialog .mx_CreateSubspaceDialog_content .mx_CreateSubspaceDialog_betaNotice {
            padding: 12px 16px;
            border-radius: 8px;
            background-color: #20252b;
        }

.mx_CreateSubspaceDialog .mx_CreateSubspaceDialog_content .mx_CreateSubspaceDialog_betaNotice .mx_BetaCard_betaPill {
                margin-right: 8px;
                vertical-align: middle;
            }

.mx_CreateSubspaceDialog .mx_CreateSubspaceDialog_content .mx_JoinRuleDropdown + p {
            color: #91a1c0;
            font-size: 1.2rem;
        }

.mx_CreateSubspaceDialog .mx_CreateSubspaceDialog_footer {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        margin-top: 20px;
    }

.mx_CreateSubspaceDialog .mx_CreateSubspaceDialog_footer .mx_CreateSubspaceDialog_footer_prompt {
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
            font-size: 1.2rem;
            line-height: 1.5rem;
            color: #a9b2bc;
        }

.mx_CreateSubspaceDialog .mx_CreateSubspaceDialog_footer .mx_CreateSubspaceDialog_footer_prompt > * {
                vertical-align: middle;
            }

.mx_CreateSubspaceDialog .mx_CreateSubspaceDialog_footer .mx_AccessibleButton {
            display: inline-block;
            -ms-flex-item-align: center;
                align-self: center;
        }

.mx_CreateSubspaceDialog .mx_CreateSubspaceDialog_footer .mx_AccessibleButton_kind_primary {
            margin-left: 16px;
            padding: 8px 36px;
        }

/*
Copyright 2018 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DeactivateAccountDialog .mx_Dialog_content {
    margin-bottom: 30px;
}

.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section .mx_Field {
    width: 300px;
}

/*
Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DevtoolsDialog_wrapper .mx_Dialog {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_DevtoolsDialog_wrapper .mx_Dialog_fixedWidth {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        min-height: 0;
        max-height: 100%;
    }

.mx_DevtoolsDialog_wrapper .mx_Dialog_fixedWidth .mx_Dialog_buttons button {
            margin-bottom: 0;
        }

.mx_DevTools_content {
    overflow-y: auto;
}

.mx_DevTools_RoomStateExplorer_query {
    margin-bottom: 10px;
}

.mx_DevTools_button {
    font-family: monospace !important;
    margin-bottom: 8px !important;
}

.mx_DevTools_RoomStateExplorer_button_hasSpaces {
    text-decoration: underline;
}

.mx_DevTools_button.mx_DevTools_RoomStateExplorer_button_emptyString {
    font-style: italic;
}

.mx_DevTools_label_left {
    float: left;
}

.mx_DevTools_label_right {
    float: right;
}

.mx_DevTools_label_bottom {
    clear: both;
    border-bottom: 1px solid #e5e5e5;
}

.mx_DevTools_inputRow {
    display: table-row;
}

.mx_DevTools_inputLabelCell {
    display: table-cell;
    font-weight: bold;
    padding-right: 24px;
}

.mx_DevTools_textarea {
    font-size: 1.2rem;
    max-width: 684px;
    min-height: 250px;
    padding: 10px;
}

.mx_DevTools_eventTypeStateKeyGroup {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}

.mx_DevTools_content .mx_Field_input:first-of-type {
    margin-right: 42px;
}

.mx_DevTools_VerificationRequest {
    border: 1px solid #cccccc;
    border-radius: 3px;
    padding: 1px 5px;
    margin-bottom: 6px;
    font-family: "Inconsolata", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Courier", monospace,
    "Noto Color Emoji";
}

.mx_DevTools_VerificationRequest dl {
        display: grid;
        grid-template-columns: -webkit-max-content auto;
        grid-template-columns: max-content auto;
        margin: 0;
    }

.mx_DevTools_VerificationRequest dd {
        grid-column-start: 2;
    }

.mx_DevTools_VerificationRequest dd:empty {
        color: #666666;
    }

.mx_DevTools_VerificationRequest dd:empty::after {
            content: "(empty)";
        }

.mx_DevTools_VerificationRequest dt {
        font-weight: bold;
        grid-column-start: 1;
    }

.mx_DevTools_VerificationRequest dt::after {
        content: ":";
    }

.mx_DevTools_SettingsExplorer table {
        width: 100%;
        table-layout: fixed;
        border-collapse: collapse;
    }

.mx_DevTools_SettingsExplorer table th {
            /* Colour choice: first one autocomplete gave me. */
            border-bottom: 1px solid #0dbd8b;
            text-align: left;
        }

.mx_DevTools_SettingsExplorer table td,
        .mx_DevTools_SettingsExplorer table th {
            width: 360px; /* "feels right" number */

            text-overflow: ellipsis;
            overflow: hidden;
            white-space: nowrap;
        }

.mx_DevTools_SettingsExplorer table td + td,
        .mx_DevTools_SettingsExplorer table th + th {
            width: auto;
        }

.mx_DevTools_SettingsExplorer table tr:hover {
            /* Colour choice: first one autocomplete gave me. */
            background-color: #0dbd8b;
        }

.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_mutable {
        background-color: #0dbd8b;
    }

.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_immutable {
        background-color: #ff5b55;
    }

.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_edit {
        float: right;
        margin-right: 16px;
    }

.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_warning {
        border: 2px solid #ff5b55;
        border-radius: 4px;
        padding: 4px;
        margin-bottom: 8px;
    }

.mx_DevTools_SettingsExplorer_setting {
    /* override default link button color */
    /* as it is the same as the background highlight */
    /* used on focus */
    color: #0086e6 !important;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ExportDialog .mx_ExportDialog_subheading {
        font-size: 1.6rem;
        display: block;
        font-family: "Inter", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Arial", "Helvetica", sans-serif,
    "Noto Color Emoji";
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        color: #ffffff;
        margin-top: 18px;
        margin-bottom: 12px;
    }

.mx_ExportDialog.mx_ExportDialog_Exporting .mx_ExportDialog_options {
            pointer-events: none;
        }

.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_select::before {
            display: none;
        }

.mx_ExportDialog.mx_ExportDialog_Exporting .mx_StyledRadioButton input[type="radio"]:checked + div > div {
            background: #888;
        }

.mx_ExportDialog.mx_ExportDialog_Exporting .mx_StyledRadioButton input[type="radio"]:checked + div {
            border-color: unset;
        }

.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_valid.mx_Field label,
        .mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_valid.mx_Field:focus-within label {
            color: unset;
        }

.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_valid.mx_Field,
        .mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_valid.mx_Field:focus-within {
            border-color: rgba(231, 231, 231, 0.2);
        }

.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Checkbox input[type="checkbox"]:checked + label > .mx_Checkbox_background {
            background: #888;
            border-color: #888;
        }

.mx_ExportDialog .mx_ExportDialog_progress .mx_Dialog_buttons {
            margin-top: unset;
            margin-left: 18px;
        }

.mx_ExportDialog .mx_ExportDialog_progress .mx_Spinner {
            width: unset;
            height: unset;
            -webkit-box-flex: unset;
                -ms-flex: unset;
                    flex: unset;
            margin-right: 10px;
        }

.mx_ExportDialog .mx_ExportDialog_progress {

        display: -webkit-box;

        display: -ms-flexbox;

        display: flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
}

.mx_ExportDialog .mx_StyledRadioButton > .mx_StyledRadioButton_content {
        margin-top: 5px;
        margin-bottom: 5px;
    }

.mx_ExportDialog .mx_Field {
        width: 256px;
    }

.mx_ExportDialog .mx_Field_postfix {
        padding: 9px 10px;
    }

.mx_ExportDialog_attachments-checkbox {
    margin-top: 16px;
}

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_FeedbackDialog hr {
        margin: 24px 0;
        border-color: rgba(231, 231, 231, 0.2);
    }

.mx_FeedbackDialog .mx_Dialog_content {
        margin-bottom: 24px;
    }

.mx_FeedbackDialog .mx_Dialog_content > h2 {
            margin-bottom: 32px;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_section {
        position: relative;
        padding: 12px 52px 12px 68px;
        border-radius: 8px;
        border: 1px solid #394049;
    }

.mx_FeedbackDialog .mx_FeedbackDialog_section + .mx_FeedbackDialog_section {
            margin-top: 16px;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_section > h3 {
            margin-top: 0;
            margin-bottom: 8px;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            font-size: 1.8rem;
            line-height: 2.2rem;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_section > p {
            color: #a9b2bc;
            font-size: 1.5rem;
            line-height: 2.4rem;
            margin: 8px 0 0;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_FeedbackDialog_section_microcopy {
            font-size: 1.2rem;
            line-height: 1.5rem;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_section a,
        .mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link {
            color: #0dbd8b;
            text-decoration: underline;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_section::before,
        .mx_FeedbackDialog .mx_FeedbackDialog_section::after {
            content: "";
            position: absolute;
            width: 40px;
            height: 40px;
            left: 16px;
            top: 12px;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_section::before {
            background-color: #8e99a4;
            border-radius: 8px;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_section::after {
            background: #ffffff; /* TODO */
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: 24px;
                    mask-size: 24px;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_reportBug::after {
            -webkit-mask-image: url(../../img/feather-customised/bug.558664b.svg);
                    mask-image: url(../../img/feather-customised/bug.558664b.svg);
        }

.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_StyledRadioButton {
            display: -webkit-inline-box;
            display: -ms-inline-flexbox;
            display: inline-flex;
            font-size: 20px;
            -webkit-transition: font-size 1s, border 0.5s;
            transition: font-size 1s, border 0.5s;
            border-radius: 50%;
            border: 2px solid transparent;
            margin-top: 12px;
            margin-bottom: 24px;
            vertical-align: top;
            cursor: pointer;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_StyledRadioButton input[type="radio"] + div {
                display: none;
            }

.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_StyledRadioButton .mx_StyledRadioButton_content {
                background: #8e99a4;
                width: 40px;
                height: 40px;
                text-align: center;
                line-height: 40px;
                border-radius: 20px;
                margin: 5px;
            }

.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_StyledRadioButton .mx_StyledRadioButton_spacer {
                display: none;
            }

.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_StyledRadioButton + .mx_StyledRadioButton {
                margin-left: 16px;
            }

.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_StyledRadioButton_checked {
            font-size: 24px;
            border-color: #0dbd8b;
        }

.mx_FeedbackDialog .mx_FeedbackDialog_rateApp::after {
            -webkit-mask-image: url(../../img/element-icons/feedback.94401b2.svg);
                    mask-image: url(../../img/element-icons/feedback.94401b2.svg);
        }

/*
Copyright 2021 Robin Townsend <robin@robin.town>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ForwardDialog {
    width: 520px;
    color: #ffffff;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    min-height: 0;
    height: 80vh;
}

.mx_ForwardDialog > h3 {
        margin: 0 0 6px;
        color: #a9b2bc;
        font-size: 1.2rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        line-height: 1.5rem;
    }

.mx_ForwardDialog > .mx_ForwardDialog_preview {
        max-height: 30%;
        -ms-flex-negative: 0;
            flex-shrink: 0;
        overflow-y: auto;

        /* When forwarding messages from encrypted rooms, EventTile will complain */
        /* that our preview is unencrypted, which doesn't actually matter */
    }

.mx_ForwardDialog > .mx_ForwardDialog_preview .mx_EventTile[data-layout="bubble"] {
            margin-top: 20px;
        }

.mx_ForwardDialog > .mx_ForwardDialog_preview div {
            pointer-events: none;
        }

/* We also hide download links to not encourage users to try interacting */

.mx_ForwardDialog > .mx_ForwardDialog_preview .mx_EventTile_msgOption,
        .mx_ForwardDialog > .mx_ForwardDialog_preview .mx_EventTile_e2eIcon_unencrypted,
        .mx_ForwardDialog > .mx_ForwardDialog_preview .mx_EventTile_e2eIcon_warning,
        .mx_ForwardDialog > .mx_ForwardDialog_preview .mx_MFileBody_download {
            display: none;
        }

.mx_ForwardDialog > hr {
        width: 100%;
        border: none;
        border-top: 1px solid rgba(231, 231, 231, 0.2);
        margin: 12px 0;
    }

.mx_ForwardDialog > .mx_ForwardList {
        display: contents;
    }

.mx_ForwardDialog > .mx_ForwardList .mx_SearchBox {
            /* To match the space around the title */
            margin: 0 0 15px 0;
            -webkit-box-flex: 0;
                -ms-flex-positive: 0;
                    flex-grow: 0;
        }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_content {
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
        }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_noResults {
            display: block;
            margin-top: 24px;
        }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results:not(:first-child) {
                margin-top: 24px;
            }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_resultsList {
                padding-right: 8px;
            }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-pack: justify;
                    -ms-flex-pack: justify;
                        justify-content: space-between;
                height: 32px;
                padding: 6px;
                border-radius: 8px;
            }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry:hover {
                    background-color: rgba(38, 39, 43, 0.82);
                }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_roomButton {
                    display: -webkit-box;
                    display: -ms-flexbox;
                    display: flex;
                    margin-right: 12px;
                    min-width: 0;
                }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_roomButton .mx_DecoratedRoomAvatar {
                        margin-right: 12px;
                    }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_roomButton .mx_ForwardList_entry_name,
                    .mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_roomButton .mx_ForwardList_entry_detail {
                        line-height: 30px;
                        overflow: hidden;
                        white-space: nowrap;
                        text-overflow: ellipsis;
                    }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_roomButton .mx_ForwardList_entry_name {
                        font-size: 1.5rem;
                    }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_roomButton .mx_ForwardList_entry_detail {
                        font-size: 1.2rem;
                        margin-left: 8px;
                        color: #8e99a4;
                    }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_sendButton {
                    position: relative;
                    margin-left: 12px;
                }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_sendButton:not(.mx_ForwardList_canSend) .mx_ForwardList_sendLabel {
                        /* Hide the "Send" label while preserving button size */
                        visibility: hidden;
                    }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_sendButton .mx_ForwardList_sendIcon,
                    .mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_sendButton .mx_NotificationBadge {
                        position: absolute;
                    }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_sendButton .mx_NotificationBadge {
                        /* Match the failed to send indicator's color with the disabled button */
                        background-color: #ffffff;
                    }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_sendButton.mx_ForwardList_sending .mx_ForwardList_sendIcon {
                        background-color: #0dbd8b;
                        -webkit-mask-image: url(../../img/element-icons/circle-sending.3c01d11.svg);
                                mask-image: url(../../img/element-icons/circle-sending.3c01d11.svg);
                        -webkit-mask-position: center;
                                mask-position: center;
                        -webkit-mask-repeat: no-repeat;
                                mask-repeat: no-repeat;
                        -webkit-mask-size: 14px;
                                mask-size: 14px;
                        width: 14px;
                        height: 14px;
                    }

.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results .mx_ForwardList_entry .mx_ForwardList_sendButton.mx_ForwardList_sent .mx_ForwardList_sendIcon {
                        background-color: #0dbd8b;
                        -webkit-mask-image: url(../../img/element-icons/circle-sent.8ba4da4.svg);
                                mask-image: url(../../img/element-icons/circle-sent.8ba4da4.svg);
                        -webkit-mask-position: center;
                                mask-position: center;
                        -webkit-mask-repeat: no-repeat;
                                mask-repeat: no-repeat;
                        -webkit-mask-size: 14px;
                                mask-size: 14px;
                        width: 14px;
                        height: 14px;
                    }

/*Responsive design*/

@media (max-width: 1024px){
    .mx_ForwardDialog{
        width: auto !important;
    }
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_GenericFeatureFeedbackDialog .mx_GenericFeatureFeedbackDialog_subheading {
        color: #ffffff;
        font-size: 1.4rem;
        line-height: 2rem;
        margin-bottom: 24px;
    }

/*
Copyright 2019 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_IncomingSasDialog_opponentProfile_image {
    position: relative;
}

.mx_IncomingSasDialog_opponentProfile h2 {
    display: inline-block;
    margin-left: 10px;
}

/*
Copyright 2019, 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_InviteDialog_flexWrapper .mx_Dialog {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_InviteDialog_transferWrapper .mx_Dialog {
    padding-bottom: 16px;
}

.mx_InviteDialog_addressBar {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    /* Right margin for the design. We could apply this to the whole dialog, but then the scrollbar */
    /* for the user section gets weird. */
    margin: 8px 45px 0 0;
}

.mx_InviteDialog_addressBar .mx_InviteDialog_editor {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        width: 100%; /* Needed to make the Field inside grow */
        background-color: #20252b;
        border-radius: 4px;
        min-height: 25px;
        -webkit-padding-start: 8px;
                padding-inline-start: 8px;
        overflow-x: hidden;
        overflow-y: auto;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }

.mx_InviteDialog_addressBar .mx_InviteDialog_editor .mx_InviteDialog_userTile {
            margin: 6px 6px 0 0;
            display: inline-block;
            min-width: -webkit-max-content;
            min-width: -moz-max-content;
            min-width: max-content; /* prevent manipulation by flexbox */
        }

/* overrides bunch of our default text input styles */

.mx_InviteDialog_addressBar .mx_InviteDialog_editor > input[type="text"] {
            margin: 6px 0 !important;
            height: 24px;
            line-height: 2.4rem;
            font-size: 1.4rem;
            -webkit-padding-start: 12px;
                    padding-inline-start: 12px;
            border: 0 !important;
            outline: 0 !important;
            resize: none;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            min-width: 40%;
            -webkit-box-flex: 1 !important;
                -ms-flex: 1 !important;
                    flex: 1 !important;
            color: #ffffff !important;
        }

.mx_InviteDialog_addressBar .mx_InviteDialog_goButton {
        min-width: 48px;
        -webkit-margin-start: 10px;
                margin-inline-start: 10px;
        height: 25px;
        line-height: 2.5rem;
    }

.mx_InviteDialog_addressBar .mx_InviteDialog_buttonAndSpinner .mx_Spinner {
            /* Width and height are required to trick the layout engine. */
            width: 20px;
            height: 20px;
            -webkit-margin-start: 5px;
                    margin-inline-start: 5px;
            display: inline-block;
            vertical-align: middle;
        }

.mx_InviteDialog_section {
    padding-bottom: 4px;
}

.mx_InviteDialog_section h3 {
        font-size: 1.2rem;
        color: #91a1c0;
        font-weight: bold;
        text-transform: uppercase;
    }

.mx_InviteDialog_section > p {
        margin: 0;
    }

.mx_InviteDialog_section > span {
        color: #ffffff;
    }

.mx_InviteDialog_section .mx_InviteDialog_section_showMore {
        margin: 7px 18px;
        display: block;
    }

.mx_InviteDialog_section_hidden_suggestions_disclaimer {
    padding: 8px 0 16px 0;
    font-size: 1.4rem;
}

.mx_InviteDialog_section_hidden_suggestions_disclaimer > span {
        color: #ffffff;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_InviteDialog_section_hidden_suggestions_disclaimer > p {
        margin: 0;
    }

.mx_InviteDialog_footer {
    border-top: 1px solid rgba(231, 231, 231, 0.2);
}

.mx_InviteDialog_footer > h3 {
        margin: 12px 0;
        font-size: 1.2rem;
        color: #91a1c0;
        font-weight: bold;
        text-transform: uppercase;
    }

.mx_InviteDialog_footer .mx_CopyableText.mx_CopyableText_border {
        width: unset; /* full width */
        margin-bottom: 0;
    }

.mx_InviteDialog_footer .mx_CopyableText.mx_CopyableText_border > a {
            text-decoration: none;
            -ms-flex-negative: 1;
                flex-shrink: 1;
            overflow: hidden;
            text-overflow: ellipsis;
        }

/* Many of these styles are stolen from mx_UserPill, but adjusted for the invite dialog. */

.mx_InviteDialog_userTile {
    -webkit-margin-end: 8px;
            margin-inline-end: 8px;
}

.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill {
        background-color: #368bd6;
        border-radius: 12px;
        display: inline-block;
        height: 24px;
        line-height: 2.4rem;
        padding-inline: 8px;
        color: #ffffff;
    }

/* this is fine without a var because it's for both themes */

.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_SearchResultAvatar {
            border-radius: 20px;
            position: relative;
            left: -5px;
            top: 2px;
        }

.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill img.mx_SearchResultAvatar {
            vertical-align: top;
        }

.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_name {
            vertical-align: top;
        }

.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_SearchResultAvatar_threepidAvatar {
            background-color: #ffffff; /* this is fine without a var because it's for both themes */
        }

.mx_InviteDialog_userTile .mx_InviteDialog_userTile_remove {
        display: inline-block;
        -webkit-margin-start: 4px;
                margin-inline-start: 4px;
    }

.mx_InviteDialog_other {
    /* Prevent the dialog from jumping around randomly when elements change. */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    height: 600px;
    overflow: hidden;
}

.mx_InviteDialog_other .mx_InviteDialog_addressBar {
        -webkit-margin-end: 0;
                margin-inline-end: 0;
    }

.mx_InviteDialog_other .mx_InviteDialog_userSections {
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        -webkit-padding-end: 0;
                padding-inline-end: 0;
    }

.mx_InviteDialog_other .mx_InviteDialog_userSections .mx_InviteDialog_section {
            padding-bottom: 0;
            margin-top: 12px;
        }

.mx_InviteDialog_content {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    overflow: hidden;
}

.mx_InviteDialog_transfer {
    width: auto;
}

.mx_InviteDialog_transfer .mx_InviteDialog_content {
        width: 496px;
        height: 430px;
        overflow: visible;
    }

.mx_InviteDialog_transfer .mx_InviteDialog_content .mx_TabbedView {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            -ms-flex-negative: 1;
                flex-shrink: 1;
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
            min-height: 0;
        }

.mx_InviteDialog_transfer .mx_InviteDialog_content .mx_TabbedView .mx_TabbedView_tabPanel {
                -webkit-box-orient: vertical;
                -webkit-box-direction: normal;
                    -ms-flex-direction: column;
                        flex-direction: column;
            }

.mx_InviteDialog_transfer .mx_InviteDialog_content .mx_TabbedView .mx_TabbedView_tabPanel .mx_TabbedView_tabPanelContent {
                    display: -webkit-box;
                    display: -ms-flexbox;
                    display: flex;
                    -webkit-box-orient: vertical;
                    -webkit-box-direction: normal;
                        -ms-flex-direction: column;
                            flex-direction: column;
                }

.mx_InviteDialog_transfer .mx_InviteDialog_addressBar {
        margin-top: 8px;
    }

.mx_InviteDialog_transfer input[type="checkbox"] {
        -webkit-margin-end: 8px;
                margin-inline-end: 8px;
    }

.mx_InviteDialog_userSections {
    margin-top: 4px;
    overflow-y: auto;
    padding: 0 45px 4px 0;
}

.mx_InviteDialog_helpText {
    margin: 0;
}

.mx_InviteDialog_dialPad {
    width: 224px;
    margin-top: 16px;
    margin-inline: auto;
}

.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField {
        border-top: 0;
        border-inline: 0;
        border-radius: 0;
        margin-top: 0;
        border-color: #6f7882;
    }

.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField:focus-within {
            border-color: #0dbd8b;
        }

.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField input {
            font-size: 18px;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            padding-top: 0;
        }

.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField .mx_Field_postfix {
            /* Remove border separator between postfix and field content */
            border-left: none;
        }

.mx_InviteDialog_dialPad .mx_DialPad {
        grid-row-gap: 16px;
        row-gap: 16px;
        grid-column-gap: 48px;
        -webkit-column-gap: 48px;
           -moz-column-gap: 48px;
                column-gap: 48px;
        margin-inline: auto;
    }

.mx_InviteDialog_transferConsultConnect {
    padding-top: 16px;
    /* This wants a drop shadow the full width of the dialog, so use negative margin to make it full width,
     * then compensate with padding
     */
    padding-inline: 24px;
    margin-inline: calc(-1 * 24px);
    border-top: 1px solid #394049;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_InviteDialog_transferConsultConnect_pushRight {
    -webkit-margin-start: auto;
            margin-inline-start: auto;
}

.mx_InviteDialog_userDirectoryIcon::before {
    -webkit-mask-image: url(../../img/voip/tab-userdirectory.319191d.svg);
            mask-image: url(../../img/voip/tab-userdirectory.319191d.svg);
}

.mx_InviteDialog_dialPadIcon::before {
    -webkit-mask-image: url(../../img/voip/tab-dialpad.0ffd56f.svg);
            mask-image: url(../../img/voip/tab-dialpad.0ffd56f.svg);
}

.mx_InviteDialog_tile {
    cursor: pointer;
    display: grid;
    grid-gap: 8px 12px;
    gap: 8px 12px;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_InviteDialog_tile.mx_InviteDialog_tile--room {
        /* mx_InviteDialog_tile_avatarStack, mx_InviteDialog_tile_nameStack, time */
        grid-template-columns: -webkit-min-content auto auto;
        grid-template-columns: min-content auto auto;
        padding: 4px 8px;
    }

.mx_InviteDialog_tile.mx_InviteDialog_tile--room:hover {
            background-color: #20252b;
            border-radius: 4px;
        }

.mx_InviteDialog_tile.mx_InviteDialog_tile--room .mx_InviteDialog_tile--room_selected {
            border-radius: 36px;
            background-color: #368bd6;
        }

.mx_InviteDialog_tile.mx_InviteDialog_tile--room .mx_InviteDialog_tile--room_selected::before {
                content: "";
                width: 24px;
                height: 24px;
                grid-column: 1;
                grid-row: 1;
                -webkit-mask-image: url(../../img/feather-customised/check.94da327.svg);
                        mask-image: url(../../img/feather-customised/check.94da327.svg);
                -webkit-mask-size: 100%;
                        mask-size: 100%;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                position: absolute;
                top: 6px; /* 50% */
                left: 6px; /* 50% */
                background-color: #ffffff; /* this is fine without a var because it's for both themes */
            }

.mx_InviteDialog_tile.mx_InviteDialog_tile--room .mx_InviteDialog_tile--room_time {
            -webkit-margin-start: auto;
                    margin-inline-start: auto;
            width: -webkit-max-content;
            width: -moz-max-content;
            width: max-content;
            font-size: 1.2rem;
            color: #91a1c0;
        }

.mx_InviteDialog_tile.mx_InviteDialog_tile--room .mx_InviteDialog_tile--room_highlight {
            font-weight: 900;
        }

.mx_InviteDialog_tile.mx_InviteDialog_tile--inviterError {
        grid-template-columns: -webkit-max-content auto;
        grid-template-columns: max-content auto; /* max-content = avatar width */
        margin-bottom: 24px;
    }

.mx_InviteDialog_tile.mx_InviteDialog_tile--inviterError:last-child {
            margin-bottom: 0;
        }

.mx_InviteDialog_tile.mx_InviteDialog_tile--inviterError .mx_InviteDialog_tile--inviterError_errorText {
            grid-row-start: 2;
            grid-column-start: 2;

            font-size: 1.5rem;
            color: #ff5b55;
        }

.mx_InviteDialog_tile * {
        vertical-align: middle;
    }

.mx_InviteDialog_tile .mx_InviteDialog_tile_avatarStack,
    .mx_InviteDialog_tile .mx_InviteDialog_tile--room_selected {
        width: 36px;
        height: 36px;
        display: inline-block;
        position: relative;
    }

.mx_InviteDialog_tile .mx_InviteDialog_tile_avatarStack {
        grid-row-start: 1;
        grid-column-start: 1;
    }

.mx_InviteDialog_tile .mx_InviteDialog_tile_avatarStack > * {
            position: absolute;
            top: 0;
            left: 0;
        }

.mx_InviteDialog_tile .mx_InviteDialog_tile_nameStack {
        grid-row-start: 1;
        grid-column-start: 2;

        display: -webkit-box;

        display: -ms-flexbox;

        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-flow: column;
                flex-flow: column;
        align-self: center;
        -webkit-box-align: baseline;
            -ms-flex-align: baseline;
                align-items: baseline;
        grid-gap: 2px 0;
        gap: 2px 0;
        overflow: hidden;
    }

.mx_InviteDialog_tile .mx_InviteDialog_tile_nameStack .mx_InviteDialog_tile_nameStack_name,
        .mx_InviteDialog_tile .mx_InviteDialog_tile_nameStack .mx_InviteDialog_tile_nameStack_userId {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            max-width: 100%;
        }

.mx_InviteDialog_tile .mx_InviteDialog_tile_nameStack .mx_InviteDialog_tile_nameStack_name {
            font-size: 1.5rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            color: #ffffff;
        }

.mx_InviteDialog_tile .mx_InviteDialog_tile_nameStack .mx_InviteDialog_tile_nameStack_userId {
            font-size: 1.2rem;
            color: #91a1c0;
        }

.mx_InviteDialog_multiInviterError > h4 {
        font-size: 1.5rem;
        line-height: 2.4rem;
        color: #a9b2bc;
        font-weight: normal;
    }

.mx_InviteDialog_identityServer {
    margin-top: 1em;
}

.mx_InviteDialog_oneThreepid {
    font-size: 1.2rem;
    margin: 8px 0;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_JoinRuleDropdown {
    margin-bottom: 8px;
    font-weight: normal;
    font-family: "Inter", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Arial", "Helvetica", sans-serif,
    "Noto Color Emoji";
    font-size: 1.4rem;
    color: #ffffff;
}

.mx_JoinRuleDropdown .mx_Dropdown_input {
        border: 1px solid rgba(231, 231, 231, 0.2);
    }

.mx_JoinRuleDropdown .mx_Dropdown_option {
        font-size: 1.4rem;
        line-height: 3.2rem;
        height: 32px;
        min-height: 32px;
    }

.mx_JoinRuleDropdown .mx_Dropdown_option > div {
            padding-left: 30px;
            position: relative;
        }

.mx_JoinRuleDropdown .mx_Dropdown_option > div::before {
                content: "";
                position: absolute;
                height: 16px;
                width: 16px;
                left: 6px;
                top: 8px;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                background-color: #a9b2bc;
            }

.mx_JoinRuleDropdown .mx_JoinRuleDropdown_invite::before {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        -webkit-mask-image: url(../../img/element-icons/lock.0519ea1.svg);
                mask-image: url(../../img/element-icons/lock.0519ea1.svg);
        -webkit-mask-size: contain;
                mask-size: contain;
        padding: 1px;
    }

.mx_JoinRuleDropdown .mx_JoinRuleDropdown_public::before {
        -webkit-mask-image: url(../../img/globe.216f1db.svg);
                mask-image: url(../../img/globe.216f1db.svg);
        -webkit-mask-size: 12px;
                mask-size: 12px;
    }

.mx_JoinRuleDropdown .mx_JoinRuleDropdown_restricted::before {
        -webkit-mask-image: url(../../img/element-icons/group-members.483392b.svg);
                mask-image: url(../../img/element-icons/group-members.483392b.svg);
        -webkit-mask-size: contain;
                mask-size: contain;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LeaveSpaceDialog_wrapper .mx_Dialog {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        padding: 24px 32px;
    }

.mx_LeaveSpaceDialog_wrapper .mx_Dialog .mx_LeaveSpaceDialog {
            width: 440px;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            -ms-flex-wrap: nowrap;
                flex-wrap: nowrap;
            height: 520px;
        }

.mx_LeaveSpaceDialog_wrapper .mx_Dialog .mx_LeaveSpaceDialog .mx_Dialog_content {
                -webkit-box-flex: 1;
                    -ms-flex-positive: 1;
                        flex-grow: 1;
                margin: 0;
                overflow-y: auto;
            }

.mx_LeaveSpaceDialog_wrapper .mx_Dialog .mx_LeaveSpaceDialog .mx_Dialog_content .mx_LeaveSpaceDialog_section_warning {
                    position: relative;
                    border-radius: 8px;
                    margin: 12px 0 0;
                    padding: 12px 8px 12px 42px;
                    background-color: #20252b;

                    font-size: 1.2rem;
                    line-height: 1.5rem;
                    color: #a9b2bc;
                }

.mx_LeaveSpaceDialog_wrapper .mx_Dialog .mx_LeaveSpaceDialog .mx_Dialog_content .mx_LeaveSpaceDialog_section_warning::before {
                        content: "";
                        position: absolute;
                        left: 10px;
                        top: calc(50% - 8px); /* vertical centering */
                        height: 16px;
                        width: 16px;
                        background-color: #a9b2bc;
                        -webkit-mask-repeat: no-repeat;
                                mask-repeat: no-repeat;
                        -webkit-mask-size: contain;
                                mask-size: contain;
                        -webkit-mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
                                mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
                        -webkit-mask-position: center;
                                mask-position: center;
                    }

.mx_LeaveSpaceDialog_wrapper .mx_Dialog .mx_LeaveSpaceDialog .mx_Dialog_content > p {
                    color: #ffffff;
                }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LocationViewDialog_wrapper .mx_Dialog {
    padding: 0px;

    /* Unset contain and position to allow the close button
    to appear outside the dialog */
    contain: unset;
    position: unset;
}

.mx_LocationViewDialog {
    /* subtract 0.5px to prevent single-pixel margin due to rounding */
    width: calc(80vw - 0.5px);
    height: calc(80vh - 0.5px);
    overflow: hidden;
}

.mx_LocationViewDialog .mx_Dialog_header {
        margin: 0px;
        padding: 0px;
        position: unset;
    }

.mx_LocationViewDialog .mx_Dialog_header .mx_Dialog_title {
            display: none;
        }

.mx_LocationViewDialog .mx_Dialog_header .mx_Dialog_cancelButton {
            z-index: 4010;
            position: absolute;
            right: 5vw;
            top: 5vh;
            width: 20px;
            height: 20px;
            background-color: #ffffff;
        }

.mx_LocationViewDialog_map {
    width: 80vw;
    height: 80vh;
    border-radius: 8px;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ManageRestrictedJoinRuleDialog_wrapper .mx_Dialog {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_ManageRestrictedJoinRuleDialog {
    width: 480px;
    color: #ffffff;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    min-height: 0;
    height: 60vh;
}

.mx_ManageRestrictedJoinRuleDialog .mx_SearchBox {
        /* To match the space around the title */
        margin: 0 0 15px 0;
        -webkit-box-flex: 0;
            -ms-flex-positive: 0;
                flex-grow: 0;
    }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_content {
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
    }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_noResults {
        display: block;
        margin-top: 24px;
    }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section:not(:first-child) {
            margin-top: 24px;
        }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section > h3 {
            margin: 0;
            color: #a9b2bc;
            font-size: 1.2rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            line-height: 1.5rem;
        }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section .mx_ManageRestrictedJoinRuleDialog_entry {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            margin-top: 12px;
        }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section .mx_ManageRestrictedJoinRuleDialog_entry > div {
                -webkit-box-flex: 1;
                    -ms-flex-positive: 1;
                        flex-grow: 1;
            }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section .mx_ManageRestrictedJoinRuleDialog_entry img.mx_RoomAvatar_isSpaceRoom,
            .mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section .mx_ManageRestrictedJoinRuleDialog_entry .mx_RoomAvatar_isSpaceRoom img {
                border-radius: 4px;
            }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section .mx_ManageRestrictedJoinRuleDialog_entry .mx_ManageRestrictedJoinRuleDialog_entry_name {
                margin: 0 8px;
                font-size: 1.5rem;
                line-height: 30px;
                -webkit-box-flex: 1;
                    -ms-flex-positive: 1;
                        flex-grow: 1;
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
            }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section .mx_ManageRestrictedJoinRuleDialog_entry .mx_ManageRestrictedJoinRuleDialog_entry_description {
                margin-top: 8px;
                font-size: 1.2rem;
                line-height: 1.5rem;
                color: #8e99a4;
            }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section .mx_ManageRestrictedJoinRuleDialog_entry .mx_Checkbox {
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
            }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section_spaces .mx_BaseAvatar {
            margin-right: 12px;
        }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section_spaces .mx_BaseAvatar_image {
            border-radius: 8px;
        }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section_info {
        position: relative;
        border-radius: 8px;
        margin: 12px 0;
        padding: 8px 8px 8px 42px;
        background-color: #20252b;

        font-size: 1.2rem;
        line-height: 1.5rem;
        color: #a9b2bc;
    }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_section_info::before {
            content: "";
            position: absolute;
            left: 10px;
            top: calc(50% - 8px); /* vertical centering */
            height: 16px;
            width: 16px;
            background-color: #a9b2bc;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
                    mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
            -webkit-mask-position: center;
                    mask-position: center;
        }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_footer {
        margin-top: 20px;
    }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_footer .mx_ManageRestrictedJoinRuleDialog_footer_buttons {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            width: -webkit-max-content;
            width: -moz-max-content;
            width: max-content;
            margin-left: auto;
        }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_footer .mx_ManageRestrictedJoinRuleDialog_footer_buttons .mx_AccessibleButton {
                display: inline-block;
            }

.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_footer .mx_ManageRestrictedJoinRuleDialog_footer_buttons .mx_AccessibleButton + .mx_AccessibleButton {
                    margin-left: 24px;
                }

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MessageEditHistoryDialog {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    max-height: 60vh;
}

.mx_MessageEditHistoryDialog_scrollPanel {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
}

.mx_MessageEditHistoryDialog_error {
    color: #ff5b55;
    text-align: center;
}

.mx_MessageEditHistoryDialog_edits {
    list-style-type: none;
    font-size: 1.4rem;
    padding: 0;
    color: #ffffff;
}

.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_deletion,
    .mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_insertion {
        padding: 0px 2px;
    }

.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_deletion {
        color: rgb(255, 76, 85);
        background-color: rgba(255, 76, 85, 0.1);
        text-decoration: line-through;
    }

.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_insertion {
        color: rgb(26, 169, 123);
        background-color: rgba(26, 169, 123, 0.1);
        text-decoration: underline;
    }

/* Emulate mx_EventTile[data-layout="group"] */

.mx_MessageEditHistoryDialog_edits .mx_EventTile {
        padding-top: 0;
    }

.mx_MessageEditHistoryDialog_edits .mx_EventTile .mx_MessageTimestamp {
            position: absolute;
            left: 0;
            text-align: center;
        }

.mx_MessageEditHistoryDialog_edits .mx_EventTile .mx_EventTile_line {
            padding-top: var(--EventTile_group_line-spacing-block-start);
            padding-bottom: var(--EventTile_group_line-spacing-block-end);
            padding-left: var(--EventTile_group_line-spacing-inline-start);
            line-height: var(--EventTile_group_line-line-height);
        }

.mx_MessageEditHistoryDialog_edits .mx_EventTile .mx_EventTile_line .mx_EventTile_content {
                margin-right: 0px;
            }

.mx_MessageEditHistoryDialog_edits .mx_MessageActionBar .mx_AccessibleButton {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;

        -webkit-padding-start: 8px;

                padding-inline-start: 8px;
        -webkit-padding-end: 8px;
                padding-inline-end: 8px;

        font-size: 1.5rem;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning {
        margin-bottom: 24px;
    }

.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning > img {
            vertical-align: middle;
            margin-right: 8px;
        }

.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons {
        float: right;
        margin-top: 24px;
    }

.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons .mx_AccessibleButton + .mx_AccessibleButton {
            margin-left: 8px;
        }

.mx_ModalWidgetDialog iframe {
        width: 100%;
        height: 450px;
        border: 0;
        border-radius: 8px;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PollCreateDialog .mx_PollCreateDialog_busy {
        position: absolute;
        inset: 0;
        background-color: rgba(21,25,30, 0.6);
        z-index: 1;
    }

.mx_PollCreateDialog h2 {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.5rem;
        line-height: 2.4rem;
        margin-top: 0;
        margin-bottom: 8px;
    }

.mx_PollCreateDialog h2:nth-child(n + 2) {
            margin-top: 20px;
        }

.mx_PollCreateDialog p {
        color: #a9b2bc;
    }

.mx_PollCreateDialog .mx_PollCreateDialog_option {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        margin-top: 11px;
        margin-bottom: 16px;
    }

/* 11px from the top will collapse, so this creates a 16px gap between options */

.mx_PollCreateDialog .mx_PollCreateDialog_option .mx_Field {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            margin: 0;
        }

.mx_PollCreateDialog .mx_PollCreateDialog_option .mx_PollCreateDialog_removeOption {
            margin-left: 12px;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background-color: #394049;
            cursor: pointer;
            position: relative;
        }

.mx_PollCreateDialog .mx_PollCreateDialog_option .mx_PollCreateDialog_removeOption::before {
                content: "";
                -webkit-mask: url(../../img/element-icons/x-8px.6a5b85d.svg);
                        mask: url(../../img/element-icons/x-8px.6a5b85d.svg);
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: cover;
                        mask-size: cover;
                width: 8px;
                height: 8px;
                position: absolute;
                top: 6px;
                left: 6px;
                background-color: #a9b2bc;
            }

.mx_PollCreateDialog .mx_PollCreateDialog_addOption {
        padding: 0;
        margin-bottom: 40px; /* arbitrary to create scrollable area under the poll */
    }

.mx_PollCreateDialog .mx_AccessibleButton_disabled {
        opacity: 0.4;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RegistrationEmailPromptDialog {
    width: 417px;
}

.mx_RegistrationEmailPromptDialog .mx_Dialog_content {
        margin-bottom: 24px;
        color: #8e99a4;
    }

.mx_RegistrationEmailPromptDialog .mx_Dialog_primary {
        width: 100%;
    }

/*
Copyright 2019 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* ICONS */

/* ========================================================== */

.mx_RoomSettingsDialog_settingsIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
            mask-image: url(../../img/element-icons/settings.0c529f2.svg);
}

.mx_RoomSettingsDialog_voiceIcon::before {
    -webkit-mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
            mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
}

.mx_RoomSettingsDialog_securityIcon::before {
    -webkit-mask-image: url(../../img/element-icons/security.56b436c.svg);
            mask-image: url(../../img/element-icons/security.56b436c.svg);
}

.mx_RoomSettingsDialog_rolesIcon::before {
    -webkit-mask-image: url(../../img/element-icons/room/settings/roles.fda529a.svg);
            mask-image: url(../../img/element-icons/room/settings/roles.fda529a.svg);
}

.mx_RoomSettingsDialog_notificationsIcon::before {
    -webkit-mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
            mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
}

.mx_RoomSettingsDialog_bridgesIcon::before {
    /* This icon is pants, please improve :) */
    -webkit-mask-image: url(../../img/feather-customised/bridge.1978354.svg);
            mask-image: url(../../img/feather-customised/bridge.1978354.svg);
}

.mx_RoomSettingsDialog_pollsIcon::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/poll.6fe3947.svg);
            mask-image: url(../../img/element-icons/room/composer/poll.6fe3947.svg);
}

.mx_RoomSettingsDialog_warningIcon::before {
    -webkit-mask-image: url(../../img/element-icons/room/settings/advanced.20354e9.svg);
            mask-image: url(../../img/element-icons/room/settings/advanced.20354e9.svg);
}

.mx_RoomSettingsDialog .mx_Dialog_title {
    -ms-text-overflow: ellipsis;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    margin: 0 auto;
    padding-right: 80px;
}

/* show a different AvatarSetting placeholder for RoomProfileSettings which is basically a clone of ProfileSettings */

.mx_RoomSettingsDialog .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder::before {
    -webkit-mask: url(../../img/feather-customised/image.4bcd249.svg);
            mask: url(../../img/feather-customised/image.4bcd249.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-size: 36px;
            mask-size: 36px;
    -webkit-mask-position: center;
            mask-position: center;
}

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomSettingsDialog_BridgeList {
    padding: 0;
}

.mx_RoomSettingsDialog_BridgeList li {
        list-style-type: none;
    }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -ms-flex-wrap: wrap;
                flex-wrap: wrap;
            grid-gap: 8px;
            gap: 8px;
            padding: 5px;
            margin-bottom: 8px;

            /* border-style around each bridge list item */
            border-width: 1px 1px;
            border-color: transparent;
            border-style: solid;
            border-radius: 5px;
        }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_icon .mx_RoomSettingsDialog_protocolIcon,
                .mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_icon .mx_RoomSettingsDialog_protocolIcon span,
                .mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_icon .mx_RoomSettingsDialog_noProtocolIcon {
                    -webkit-box-sizing: border-box;
                            box-sizing: border-box;
                    border-radius: 5px;
                    border: 1px solid #181b21;
                }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_icon .mx_RoomSettingsDialog_noProtocolIcon,
                .mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_icon .mx_RoomSettingsDialog_protocolIcon img {
                    border-radius: 5px;
                }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_icon .mx_RoomSettingsDialog_noProtocolIcon {
                    width: 48px;
                    height: 48px;
                    background: #181b21;
                }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_icon .mx_RoomSettingsDialog_protocolIcon img {
                        border-width: 1px 1px;
                        border-color: transparent;
                    }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_icon .mx_RoomSettingsDialog_protocolIcon span {
                        /* Correct letter placement */
                        left: auto;
                    }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data {
                display: inline-block;
                width: 85%;
            }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_column_data_details,
                .mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_column_data_metadata,
                .mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_column_data_metadata li,
                .mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_column_data_protocolName {
                    margin-bottom: 0;
                }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_column_data_details,
                .mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_column_data_metadata {
                    margin-top: 4px;
                }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_column_data_metadata li {
                    margin-top: 8px;
                }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_column_data_protocolName {
                    margin-top: 0;
                    font-size: 16pt;
                    color: #ffffff;
                }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_workspace_channel_details {
                    color: #ffffff;
                    font-weight: 600;
                    font-weight: var(--font-semi-bold);
                }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_workspace_channel_details .mx_RoomSettingsDialog_channel {
                        -webkit-margin-start: 5px;
                                margin-inline-start: 5px;
                    }

.mx_RoomSettingsDialog_BridgeList li.mx_RoomSettingsDialog_BridgeList_listItem .mx_RoomSettingsDialog_column_data .mx_RoomSettingsDialog_metadata {
                    color: #91a1c0;
                    margin-bottom: 0;
                    overflow-y: visible;
                    text-overflow: ellipsis;
                    white-space: normal;
                    padding: 0;
                }

/*
Copyright 2018 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomUpgradeDialog {
    padding-right: 70px;
}

/*
Copyright 2019 - 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomUpgradeWarningDialog {
    max-width: 38vw;
    width: 38vw;
}

.mx_RoomUpgradeWarningDialog .mx_RoomUpgradeWarningDialog_progress .mx_ProgressBar {
            height: 8px;
            width: 100%;

            border-radius: 8px;
        }

.mx_RoomUpgradeWarningDialog .mx_RoomUpgradeWarningDialog_progress .mx_ProgressBar::-moz-progress-bar {
        border-radius: 8px;
    }

.mx_RoomUpgradeWarningDialog .mx_RoomUpgradeWarningDialog_progress .mx_ProgressBar::-webkit-progress-bar,
    .mx_RoomUpgradeWarningDialog .mx_RoomUpgradeWarningDialog_progress .mx_ProgressBar::-webkit-progress-value {
        border-radius: 8px;
    }

.mx_RoomUpgradeWarningDialog .mx_RoomUpgradeWarningDialog_progress .mx_RoomUpgradeWarningDialog_progressText {
            margin-top: 8px;
            font-size: 1.5rem;
            line-height: 2.4rem;
            color: #ffffff;
        }

.mx_RoomUpgradeWarningDialog .mx_SettingsFlag {
    font-weight: 700;
}

.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_ToggleSwitch {
        display: inline-block;
        vertical-align: middle;
        margin-left: 8px;
        float: right;
    }

.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_SettingsFlag_label {
        display: inline-block;
        vertical-align: middle;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content {
        padding-right: 85px;
        color: #ffffff;
    }

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content hr {
            border-color: #ffffff;
            opacity: 0.1;
            border-bottom: none;
        }

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul {
            padding: 16px;
        }

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul li:nth-child(n + 2) {
                margin-top: 16px;
            }

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timestamp {
                display: inline-block;
                width: 115px;
                color: #91a1c0;
                line-height: 24px; /* same as avatar */
                vertical-align: top;
            }

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline {
                display: inline-block;
                width: calc(100% - 155px);
            }

/* 115px timestamp width + 40px right margin */

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_timeline_header span {
                        margin-left: 8px;
                        vertical-align: middle;
                    }

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn {
                    position: relative;
                    margin-top: 8px;
                }

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_ServerOfflineDialog_content_context_txn_desc {
                        width: calc(100% - 100px); /* 100px is an arbitrary margin for the button */
                    }

.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_AccessibleButton {
                        float: right;
                    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ServerPickerDialog {
    width: 468px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_ServerPickerDialog .mx_Dialog_content {
        margin-bottom: 0;
    }

.mx_ServerPickerDialog .mx_Dialog_content > p {
            color: #a9b2bc;
            font-size: 1.4rem;
            margin: 16px 0;
        }

.mx_ServerPickerDialog .mx_Dialog_content > p:first-of-type {
                margin-bottom: 40px;
            }

.mx_ServerPickerDialog .mx_Dialog_content > p:last-of-type {
                margin: 0 24px 24px;
            }

.mx_ServerPickerDialog .mx_Dialog_content > h2 {
            font-size: 1.5rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            color: #a9b2bc;
            margin: 16px 0 16px 8px;
        }

.mx_ServerPickerDialog .mx_Dialog_content > a {
            color: #0dbd8b;
            margin-left: 8px;
        }

.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserverRadio input[type="radio"] + div {
            margin-top: auto;
            margin-bottom: auto;
        }

.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver {
        border-top: none;
        border-left: none;
        border-right: none;
        border-radius: unset;
    }

.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver > input {
            padding-left: 0;
        }

.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver > label {
            margin-left: 0;
        }

.mx_ServerPickerDialog .mx_AccessibleButton_kind_primary {
        width: calc(100% - 64px);
        margin: 0 8px;
        padding: 15px 18px;
    }

/*
Copyright 2017 Vector Creations Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SetEmailDialog_email_input {
    border-radius: 3px;
    border: 1px solid rgba(231, 231, 231, 0.2);
    padding: 9px;
    color: rgba(74, 74, 74, 0.9);
    background-color: #15191e;
    font-size: 1.5rem;
    width: 100%;
    max-width: 280px;
    margin-bottom: 10px;
}

.mx_SetEmailDialog_email_input:focus {
    outline: none;
    -webkit-box-shadow: none;
            box-shadow: none;
    border: 1px solid #0dbd8b;
}

/*
Copyright 2019 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* Not actually a component but things shared by settings components */

.mx_UserSettingsDialog,
.mx_RoomSettingsDialog,
.mx_SpaceSettingsDialog,
.mx_SpacePreferencesDialog {
    width: 90vw;
    max-width: 1000px;
    /* set the height too since tabbed view scrolls itself. */
    height: 80vh;
}

.mx_UserSettingsDialog .mx_TabbedView, .mx_RoomSettingsDialog .mx_TabbedView, .mx_SpaceSettingsDialog .mx_TabbedView, .mx_SpacePreferencesDialog .mx_TabbedView {
        top: 65px;
    }

.mx_UserSettingsDialog .mx_TabbedView .mx_SettingsTab, .mx_RoomSettingsDialog .mx_TabbedView .mx_SettingsTab, .mx_SpaceSettingsDialog .mx_TabbedView .mx_SettingsTab, .mx_SpacePreferencesDialog .mx_TabbedView .mx_SettingsTab {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        min-width: 580px;
        padding-right: 100px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;

        /* Put some padding on the bottom to avoid the settings tab from */
        /* colliding harshly with the dialog when scrolled down. */
        padding-bottom: 100px;
    }

/*
Copyright 2018 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ShareDialog hr {
    margin-top: 25px;
    margin-bottom: 25px;
    border-color: #c8c8cd;
}

.mx_ShareDialog .mx_ShareDialog_content {
    margin: 10px 0;
}

.mx_ShareDialog .mx_ShareDialog_content .mx_CopyableText {
        width: unset;
    }

/* full width */

.mx_ShareDialog .mx_ShareDialog_content .mx_CopyableText > a {
            text-decoration: none;
            -ms-flex-negative: 1;
                flex-shrink: 1;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

.mx_ShareDialog_split {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}

.mx_ShareDialog_qrcode_container {
    float: left;
    height: 256px;
    width: 256px;
    margin-right: 64px;
}

.mx_ShareDialog_qrcode_container + .mx_ShareDialog_social_container {
    width: 299px;
}

.mx_ShareDialog_social_container {
    display: inline-block;
}

.mx_ShareDialog_social_icon {
    display: inline-grid;
    margin-right: 10px;
    margin-bottom: 10px;
}

/*
Copyright Michael Telatynski <7t3chguy@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SlashCommandHelpDialog .mx_SlashCommandHelpDialog_headerRow h2 {
    margin-bottom: 2px;
}

.mx_SlashCommandHelpDialog .mx_Dialog_content {
    margin-top: 12px;
    margin-bottom: 34px;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SpacePreferencesDialog {
    width: 700px;
    height: 400px;
}

.mx_SpacePreferencesDialog > h4 {
        margin: -12px 0 0;
        font-weight: normal;
        font-size: 1.5rem;
        line-height: 2.4rem;
        color: #a9b2bc;
    }

.mx_SpacePreferencesDialog .mx_TabbedView {
        top: 80px;
    }

.mx_SpacePreferencesDialog .mx_TabbedView .mx_SettingsTab {
            min-width: unset;
        }

.mx_SpacePreferencesDialog_appearanceIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings/appearance.c35df33.svg);
            mask-image: url(../../img/element-icons/settings/appearance.c35df33.svg);
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SpaceSettingsDialog {
    color: #ffffff;
}

.mx_SpaceSettingsDialog .mx_SpaceSettings_errorText {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.2rem;
        line-height: 1.5rem;
        color: #ff5b55;
        margin-bottom: 28px;
    }

.mx_SpaceSettingsDialog .mx_ToggleSwitch {
        display: inline-block;
        vertical-align: middle;
        margin-left: 16px;
    }

.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_SettingsTab_section_caption {
            margin-top: 12px;
            margin-bottom: 20px;
        }

.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_StyledRadioButton {
            margin-top: 8px;
            margin-bottom: 4px;
        }

.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_StyledRadioButton .mx_StyledRadioButton_content {
                font-weight: 600;
                font-weight: var(--font-semi-bold);
                line-height: 1.8rem;
                color: #ffffff;
            }

.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_StyledRadioButton + span {
                font-size: 1.5rem;
                line-height: 1.8rem;
                color: #a9b2bc;
                margin-left: 26px;
            }

.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        margin-top: 64px;
    }

.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton {
            display: inline-block;
        }

.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton_kind_link {
            margin-left: auto;
        }

.mx_SpaceSettingsDialog .mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link {
            font-size: 1.4rem;
            margin: 7px 18px;
        }

.mx_SpaceSettingsDialog .mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link.mx_SettingsTab_showAdvanced {
                margin: 18px 0;
            }

.mx_SpaceSettingsDialog .mx_TabbedView_tabLabel .mx_SpaceSettingsDialog_generalIcon::before {
            -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
                    mask-image: url(../../img/element-icons/settings.0c529f2.svg);
        }

.mx_SpaceSettingsDialog .mx_TabbedView_tabLabel .mx_SpaceSettingsDialog_visibilityIcon::before {
            -webkit-mask-image: url(../../img/element-icons/eye.6df327d.svg);
                    mask-image: url(../../img/element-icons/eye.6df327d.svg);
        }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SpotlightDialog_wrapper .mx_Dialog {
    border-radius: 8px;
    overflow-y: visible;
    overflow-y: initial;
    position: relative;
    height: 60%;
    padding: 0;
    contain: unset;
}

/* needed for #mx_SpotlightDialog_keyboardPrompt to not be culled */

.mx_SpotlightDialog_wrapper .mx_Dialog #mx_SpotlightDialog_keyboardPrompt {
        position: absolute;
        padding: 8px;
        border-radius: 8px;
        background-color: #15191e;
        top: -60px; /* relative to the top of the modal */
        left: 50%;
        -webkit-transform: translateX(-50%);
                transform: translateX(-50%);
        font-size: 1.2rem;
        line-height: 1.5rem;
        color: #a9b2bc;
    }

.mx_SpotlightDialog_wrapper .mx_Dialog #mx_SpotlightDialog_keyboardPrompt kbd {
            display: inline-block;
            padding: 2px 4px;
            margin: 0 4px;
            border-radius: 6px;
            background-color: #394049;
            vertical-align: middle;
            color: #8e99a4;
            /* To avoid any styling inherent with <kbd> elements */
            font-family: inherit;
            font-weight: inherit;
            font-size: inherit;
        }

.mx_SpotlightDialog {
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_SpotlightDialog .mx_Dialog_header {
        display: none;
    }

.mx_SpotlightDialog .mx_SpotlightDialog_searchBox {
        margin: 0;
        border: none;
        border-radius: 8px 8px 0 0;
        padding: 12px 16px;
        border-bottom: 1px solid #21262c;
    }

.mx_SpotlightDialog .mx_SpotlightDialog_searchBox > .mx_SpotlightDialog_filter {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -ms-flex-line-pack: center;
                align-content: center;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            border-radius: 8px;
            margin-right: 8px;
            background-color: #394049;
            vertical-align: middle;
            color: #ffffff;
            position: relative;
            padding: 4px 8px 4px 37px;
        }

.mx_SpotlightDialog .mx_SpotlightDialog_searchBox > .mx_SpotlightDialog_filter::before {
                background-color: #a9b2bc;
                content: "";
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: contain;
                        mask-size: contain;
                width: 18px;
                height: 18px;
                position: absolute;
                left: 8px;
                top: 50%;
                -webkit-transform: translateY(-50%);
                        transform: translateY(-50%);
            }

.mx_SpotlightDialog .mx_SpotlightDialog_searchBox > .mx_SpotlightDialog_filter.mx_SpotlightDialog_filterPeople::before {
                -webkit-mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
                        mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
            }

.mx_SpotlightDialog .mx_SpotlightDialog_searchBox > .mx_SpotlightDialog_filter.mx_SpotlightDialog_filterPublicRooms::before {
                -webkit-mask-image: url(../../img/element-icons/roomlist/explore.3bcee74.svg);
                        mask-image: url(../../img/element-icons/roomlist/explore.3bcee74.svg);
            }

.mx_SpotlightDialog .mx_SpotlightDialog_searchBox > .mx_SpotlightDialog_filter .mx_SpotlightDialog_filter--close {
                position: relative;
                display: inline-block;
                width: 16px;
                height: 16px;
                background: #21262c;
                border-radius: 8px;
                margin-left: 8px;
                text-align: center;
                line-height: 16px;
                color: #a9b2bc;
            }

.mx_SpotlightDialog .mx_SpotlightDialog_searchBox > .mx_SpotlightDialog_filter .mx_SpotlightDialog_filter--close::before {
                    background-color: #a9b2bc;
                    content: "";
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-size: contain;
                            mask-size: contain;
                    width: 8px;
                    height: 8px;
                    position: absolute;
                    left: 50%;
                    top: 50%;
                    -webkit-transform: translate(-50%, -50%);
                            transform: translate(-50%, -50%);
                    -webkit-mask-image: url(../../img/cancel-small.6edc931.svg);
                            mask-image: url(../../img/cancel-small.6edc931.svg);
                }

.mx_SpotlightDialog .mx_SpotlightDialog_searchBox > input {
            display: block;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            background-color: transparent;
            width: 100%;
            height: 32px;
            padding: 0;
            color: #8e99a4;
            font-weight: normal;
            font-size: 1.5rem;
            line-height: 2.4rem;
        }

.mx_SpotlightDialog .mx_SpotlightDialog_searchBox > .mx_Spinner {
            -webkit-box-flex: 0;
                -ms-flex-positive: 0;
                    flex-grow: 0;
            width: unset;
            height: unset;
            margin-left: 16px;
        }

.mx_SpotlightDialog #mx_SpotlightDialog_content {
        height: 100%;
        overflow-y: auto;
        padding: 16px;
    }

.mx_SpotlightDialog #mx_SpotlightDialog_content ul {
            padding: 0;
            margin: 0;
        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_section > h4,
            .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_section > .mx_SpotlightDialog_sectionHeader > h4 {
                font-weight: 600;
                font-weight: var(--font-semi-bold);
                font-size: 1.2rem;
                line-height: 1.5rem;
                color: #a9b2bc;
                margin: 0;
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_section > h4 {
                margin-bottom: 8px;
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_section .mx_SpotlightDialog_sectionHeader {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-pack: justify;
                    -ms-flex-pack: justify;
                        justify-content: space-between;
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
                margin-bottom: 8px;
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_section .mx_SpotlightDialog_sectionHeader .mx_SpotlightDialog_options {
                    display: -webkit-box;
                    display: -ms-flexbox;
                    display: flex;
                    grid-gap: 4px;
                    gap: 4px;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_section + .mx_SpotlightDialog_section {
                margin-top: 24px;
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentlyViewed > div {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                white-space: nowrap;
                overflow-x: hidden;
                margin-right: 1px; /* occlude the 1px visible of the very next tile to prevent it looking broken */
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentlyViewed .mx_SpotlightDialog_option {
                border-radius: 8px;
                padding: 4px;
                color: #ffffff;
                font-size: 1.2rem;
                line-height: 1.5rem;
                display: inline-block;
                width: 58px;
                height: 58px;
                min-width: 58px;
                -webkit-box-sizing: border-box;
                        box-sizing: border-box;
                text-align: center;
                overflow: hidden;
                text-overflow: ellipsis;
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentlyViewed .mx_SpotlightDialog_option .mx_DecoratedRoomAvatar {
                    margin: 0 9px 4px; /* maintain centering */
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentlyViewed .mx_SpotlightDialog_option + .mx_SpotlightDialog_option {
                    margin-left: 16px;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentlyViewed .mx_SpotlightDialog_option:hover,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentlyViewed .mx_SpotlightDialog_option[aria-selected="true"] {
                    background-color: #394049;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option {
                padding: 6px 4px;
                border-radius: 8px;
                font-size: 1.5rem;
                line-height: 2.4rem;
                color: #ffffff;
                position: relative;
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
                white-space: nowrap;
                text-overflow: ellipsis;
                overflow: hidden;
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--endAdornment, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--endAdornment, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--endAdornment, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--endAdornment {
                    display: -webkit-inline-box;
                    display: -ms-inline-flexbox;
                    display: inline-flex;
                    -webkit-box-orient: horizontal;
                    -webkit-box-direction: normal;
                        -ms-flex-direction: row;
                            flex-direction: row;
                    margin-left: auto;
                    -webkit-box-align: start;
                        -ms-flex-align: start;
                            align-items: flex-start;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline {
                    -webkit-box-align: start;
                        -ms-flex-align: start;
                            align-items: flex-start;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline .mx_AccessibleButton, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline .mx_AccessibleButton, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline .mx_AccessibleButton, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline .mx_AccessibleButton {
                        padding: 4px 20px;
                        margin: 2px 4px;
                    }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline .mx_SpotlightDialog_enterPrompt, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline .mx_SpotlightDialog_enterPrompt, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline .mx_SpotlightDialog_enterPrompt, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option.mx_SpotlightDialog_result_multiline .mx_SpotlightDialog_enterPrompt {
                        margin-top: 9px;
                        margin-right: 8px;
                    }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option > .mx_SpotlightDialog_metaspaceResult,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option > .mx_DecoratedRoomAvatar,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option > .mx_BaseAvatar,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option > .mx_SpotlightDialog_metaspaceResult,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option > .mx_DecoratedRoomAvatar,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option > .mx_BaseAvatar,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option > .mx_SpotlightDialog_metaspaceResult,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option > .mx_DecoratedRoomAvatar,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option > .mx_BaseAvatar,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option > .mx_SpotlightDialog_metaspaceResult,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option > .mx_DecoratedRoomAvatar,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option > .mx_BaseAvatar {
                    margin-right: 8px;
                    width: 24px;
                    height: 24px;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option > .mx_SpotlightDialog_metaspaceResult .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option > .mx_DecoratedRoomAvatar .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option > .mx_BaseAvatar .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option > .mx_SpotlightDialog_metaspaceResult .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option > .mx_DecoratedRoomAvatar .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option > .mx_BaseAvatar .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option > .mx_SpotlightDialog_metaspaceResult .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option > .mx_DecoratedRoomAvatar .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option > .mx_BaseAvatar .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option > .mx_SpotlightDialog_metaspaceResult .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option > .mx_DecoratedRoomAvatar .mx_BaseAvatar, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option > .mx_BaseAvatar .mx_BaseAvatar {
                        width: inherit;
                        height: inherit;
                    }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails {
                    display: -webkit-box;
                    display: -ms-flexbox;
                    display: flex;
                    -webkit-box-orient: vertical;
                    -webkit-box-direction: normal;
                        -ms-flex-direction: column;
                            flex-direction: column;
                    -webkit-box-flex: 1;
                        -ms-flex-positive: 1;
                            flex-grow: 1;
                    min-width: 0;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader {
                        display: -webkit-box;
                        display: -ms-flexbox;
                        display: flex;
                        -webkit-box-orient: horizontal;
                        -webkit-box-direction: normal;
                            -ms-flex-direction: row;
                                flex-direction: row;
                        line-height: 2.4rem;
                        margin-right: 8px;
                    }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader .mx_SpotlightDialog_result_publicRoomName, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader .mx_SpotlightDialog_result_publicRoomName, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader .mx_SpotlightDialog_result_publicRoomName, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader .mx_SpotlightDialog_result_publicRoomName {
                            color: #ffffff;
                            font-size: 1.5rem;
                            overflow: hidden;
                            text-overflow: ellipsis;
                        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader .mx_SpotlightDialog_result_publicRoomAlias, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader .mx_SpotlightDialog_result_publicRoomAlias, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader .mx_SpotlightDialog_result_publicRoomAlias, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomHeader .mx_SpotlightDialog_result_publicRoomAlias {
                            color: #8e99a4;
                            font-size: 1.2rem;
                            margin-left: 8px;
                            overflow: hidden;
                            text-overflow: ellipsis;
                        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomDescription, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomDescription, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomDescription, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_result_publicRoomDetails .mx_SpotlightDialog_result_publicRoomDescription {
                        color: #a9b2bc;
                        font-size: 1.2rem;
                        white-space: normal;
                        word-wrap: break-word;
                        line-height: 2rem;
                        display: -webkit-box;
                        -webkit-box-orient: vertical;
                        -webkit-line-clamp: 3;
                        overflow: hidden;
                    }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_NotificationBadge, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_NotificationBadge, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_NotificationBadge, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_NotificationBadge {
                    margin-left: 8px;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications {
                    width: 20px;
                    min-width: 20px;
                    height: 20px;
                    margin-top: auto;
                    margin-bottom: auto;
                    position: relative;
                    display: none;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications::before {
                        top: 2px;
                        left: 2px;
                        content: "";
                        width: 16px;
                        height: 16px;
                        position: absolute;
                        -webkit-mask-position: center;
                                mask-position: center;
                        -webkit-mask-size: contain;
                                mask-size: contain;
                        -webkit-mask-repeat: no-repeat;
                                mask-repeat: no-repeat;
                        background: #8e99a4;
                    }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu:hover::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu[aria-selected="true"]::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications:hover::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications[aria-selected="true"]::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu:hover::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu[aria-selected="true"]::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications:hover::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications[aria-selected="true"]::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu:hover::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu[aria-selected="true"]::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications:hover::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications[aria-selected="true"]::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu:hover::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu[aria-selected="true"]::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications:hover::before,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--notifications[aria-selected="true"]::before {
                        background-color: #a9b2bc;
                    }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option .mx_SpotlightDialog_option--menu::before {
                    -webkit-mask-image: url(../../img/element-icons/context-menu.131c13c.svg);
                            mask-image: url(../../img/element-icons/context-menu.131c13c.svg);
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option:hover,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option[aria-selected="true"],
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option:hover,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option[aria-selected="true"],
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option:hover,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option[aria-selected="true"],
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option:hover,
                .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option[aria-selected="true"] {
                    background-color: #21262c;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option:hover .mx_SpotlightDialog_option--menu,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option:hover .mx_SpotlightDialog_option--notifications,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_option--menu,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_option--notifications,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option:hover .mx_SpotlightDialog_option--menu,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option:hover .mx_SpotlightDialog_option--notifications,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_option--menu,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_option--notifications,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option:hover .mx_SpotlightDialog_option--menu,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option:hover .mx_SpotlightDialog_option--notifications,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_option--menu,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_option--notifications,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option:hover .mx_SpotlightDialog_option--menu,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option:hover .mx_SpotlightDialog_option--notifications,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_option--menu,
                    .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_option--notifications {
                        display: block;
                    }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_results .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_enterPrompt, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_enterPrompt, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_enterPrompt, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_hiddenResults .mx_SpotlightDialog_option[aria-selected="true"] .mx_SpotlightDialog_enterPrompt {
                    display: inline-block;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_inviteLink,
        .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_createRoom {
            margin-top: 8px;
        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_inviteLink .mx_AccessibleButton, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_createRoom .mx_AccessibleButton {
                position: relative;
                margin: 0;
                padding: 3px 8px 3px 28px;
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_inviteLink .mx_AccessibleButton::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_createRoom .mx_AccessibleButton::before {
                    content: "";
                    display: block;
                    position: absolute;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-size: contain;
                            mask-size: contain;
                    left: 8px;
                    width: 16px;
                    height: 16px;
                    background: #0dbd8b;
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_inviteLink .mx_AccessibleButton::before {
            -webkit-mask-image: url(../../img/element-icons/link.3f7cd42.svg);
                    mask-image: url(../../img/element-icons/link.3f7cd42.svg);
        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_createRoom .mx_AccessibleButton::before {
            -webkit-mask-image: url(../../img/element-icons/roomlist/hash.e2814db.svg);
                    mask-image: url(../../img/element-icons/roomlist/hash.e2814db.svg);
        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_startChat,
            .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_joinRoomAlias,
            .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_explorePublicRooms,
            .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_startGroupChat {
                padding-left: 32px;
                position: relative;
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_startChat::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_joinRoomAlias::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_explorePublicRooms::before, .mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_startGroupChat::before {
                    background-color: #a9b2bc;
                    content: "";
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-size: contain;
                            mask-size: contain;
                    width: 24px;
                    height: 24px;
                    position: absolute;
                    left: 4px;
                    top: 50%;
                    -webkit-transform: translateY(-50%);
                            transform: translateY(-50%);
                }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_startChat::before {
                -webkit-mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
                        mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_joinRoomAlias::before {
                -webkit-mask-image: url(../../img/element-icons/roomlist/hash-circle.6635c7b.svg);
                        mask-image: url(../../img/element-icons/roomlist/hash-circle.6635c7b.svg);
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_explorePublicRooms::before {
                -webkit-mask-image: url(../../img/element-icons/roomlist/explore.3bcee74.svg);
                        mask-image: url(../../img/element-icons/roomlist/explore.3bcee74.svg);
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_startGroupChat::before {
                -webkit-mask-image: url(../../img/element-icons/group-members.483392b.svg);
                        mask-image: url(../../img/element-icons/group-members.483392b.svg);
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_otherSearches_messageSearchText {
                font-size: 1.5rem;
                line-height: 2.4rem;
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_otherSearches .mx_SpotlightDialog_otherSearches_messageSearchIcon {
                display: inline-block;
                width: 24px;
                height: 24px;
                background-color: #a9b2bc;
                vertical-align: text-bottom;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: contain;
                        mask-size: contain;
                -webkit-mask-image: url(../../img/element-icons/room/search-inset.8f291bd.svg);
                        mask-image: url(../../img/element-icons/room/search-inset.8f291bd.svg);
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_result_details {
            margin-left: 8px;
            margin-right: 8px;
            color: #8e99a4;
            font-size: 1.2rem;
            line-height: 1.5rem;
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_recentSearches > h4 > .mx_AccessibleButton_kind_link {
            float: right;
            font-size: 1.2rem;
            line-height: 1.5rem;
            color: #a9b2bc;
        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_enterPrompt {
            padding: 2px 4px;
            /* To avoid any styling inherent with <kbd> elements */
            font-family: inherit;
            font-weight: inherit;
            font-size: 1.2rem;
            line-height: 1.5rem;
            color: #8e99a4;
            border-radius: 6px;
            background-color: #394049;
            margin-right: 4px;
            display: none;
        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_metaspaceResult {
            background-color: #a9b2bc;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
        }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_metaspaceResult.mx_SpotlightDialog_metaspaceResult_home-space {
                -webkit-mask-image: url(../../img/element-icons/home.70cb677.svg);
                        mask-image: url(../../img/element-icons/home.70cb677.svg);
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_metaspaceResult.mx_SpotlightDialog_metaspaceResult_favourites-space {
                -webkit-mask-image: url(../../img/element-icons/roomlist/favorite.b47f7d4.svg);
                        mask-image: url(../../img/element-icons/roomlist/favorite.b47f7d4.svg);
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_metaspaceResult.mx_SpotlightDialog_metaspaceResult_people-space {
                -webkit-mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
                        mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
            }

.mx_SpotlightDialog #mx_SpotlightDialog_content .mx_SpotlightDialog_metaspaceResult.mx_SpotlightDialog_metaspaceResult_orphans-space {
                -webkit-mask-image: url(../../img/element-icons/roomlist/hash-circle.6635c7b.svg);
                        mask-image: url(../../img/element-icons/roomlist/hash-circle.6635c7b.svg);
            }

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/*
 * To avoid visual glitching of two modals stacking briefly, we customise the
 * terms dialog sizing when it will appear for the integration manager so that
 * it gets the same basic size as the IM's own modal.
 */

.mx_TermsDialog_forIntegrationManager .mx_Dialog {
    width: 60%;
    height: 70%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

.mx_TermsDialog_termsTableHeader {
    font-weight: bold;
    text-align: left;
}

.mx_TermsDialog_termsTable {
    font-size: 1.2rem;
    width: 100%;
}

.mx_TermsDialog_service,
.mx_TermsDialog_summary {
    padding-right: 10px;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UntrustedDeviceDialog .mx_Dialog_title {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_UntrustedDeviceDialog .mx_Dialog_title .mx_E2EIcon {
            margin-left: 0;
        }

.mx_UntrustedDeviceDialog .mx_Dialog_buttons {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end;
        grid-gap: 8px;
        gap: 8px;
    }

/*
Copyright 2019 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UploadConfirmDialog_fileIcon {
    margin-right: 5px;
}

.mx_UploadConfirmDialog_previewOuter {
    text-align: center;
}

.mx_UploadConfirmDialog_previewInner {
    display: inline-block;
    text-align: left;
}

.mx_UploadConfirmDialog_imagePreview {
    max-height: 300px;
    max-width: 100%;
    border-radius: 4px;
    border: 1px solid #9fa9ba;
}

/*
Copyright 2019 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* ICONS */

/* ========================================================== */

.mx_UserSettingsDialog_settingsIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
            mask-image: url(../../img/element-icons/settings.0c529f2.svg);
}

.mx_UserSettingsDialog_appearanceIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings/appearance.c35df33.svg);
            mask-image: url(../../img/element-icons/settings/appearance.c35df33.svg);
}

.mx_UserSettingsDialog_voiceIcon::before {
    -webkit-mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
            mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
}

.mx_UserSettingsDialog_bellIcon::before {
    -webkit-mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
            mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
}

.mx_UserSettingsDialog_iconMessage::before {
    -webkit-mask-image: url(../../img/element-icons/check.e8a053d.svg);
            mask-image: url(../../img/element-icons/check.e8a053d.svg);
}

.mx_UserSettingsDialog_preferencesIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings/preference.ee8ee5b.svg);
            mask-image: url(../../img/element-icons/settings/preference.ee8ee5b.svg);
}

.mx_UserSettingsDialog_keyboardIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings/keyboard.1df1463.svg);
            mask-image: url(../../img/element-icons/settings/keyboard.1df1463.svg);
}

.mx_UserSettingsDialog_sidebarIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings/sidebar.aea11f7.svg);
            mask-image: url(../../img/element-icons/settings/sidebar.aea11f7.svg);
}

.mx_UserSettingsDialog_securityIcon::before {
    -webkit-mask-image: url(../../img/element-icons/security.56b436c.svg);
            mask-image: url(../../img/element-icons/security.56b436c.svg);
}

.mx_UserSettingsDialog_sessionsIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings/devices.d499be6.svg);
            mask-image: url(../../img/element-icons/settings/devices.d499be6.svg);
}

.mx_UserSettingsDialog_helpIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings/help.175fd0e.svg);
            mask-image: url(../../img/element-icons/settings/help.175fd0e.svg);
}

.mx_UserSettingsDialog_labsIcon::before {
    -webkit-mask-image: url(../../img/element-icons/settings/flask.699f7f9.svg);
            mask-image: url(../../img/element-icons/settings/flask.699f7f9.svg);
}

.mx_UserSettingsDialog_mjolnirIcon::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/emoji.fd84fe8.svg);
            mask-image: url(../../img/element-icons/room/composer/emoji.fd84fe8.svg);
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_VerifyEMailDialog {
    height: auto;
    top: 300px;
}

.mx_VerifyEMailDialog .mx_Dialog {
        color: #ffffff;
        font-size: 1.4rem;
        padding: 24px 24px 16px;
        text-align: center;
        width: 485px;
    }

.mx_VerifyEMailDialog .mx_Dialog h1 {
            font-size: 2.4rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
        }

.mx_VerifyEMailDialog .mx_Dialog .mx_VerifyEMailDialog_text-light {
            color: #a9b2bc;
            line-height: 20px;
        }

.mx_VerifyEMailDialog .mx_Dialog .mx_AuthBody_did-not-receive {
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
            margin-bottom: 8px;
        }

.mx_VerifyEMailDialog .mx_Dialog .mx_Dialog_cancelButton {
            right: 10px;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_WidgetCapabilitiesPromptDialog .text-muted {
        font-size: 1.2rem;
    }

.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_content {
        margin-bottom: 16px;
    }

.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap {
        margin-top: 20px;
        font-size: 1.5rem;
        line-height: 1.5rem;
    }

.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap .mx_WidgetCapabilitiesPromptDialog_byline {
            color: #91a1c0;
            margin-left: 26px;
            font-size: 1.2rem;
            line-height: 1.2rem;
        }

.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_buttons {
        margin-top: 40px; /* double normal */
    }

.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag {
        line-height: calc(1.4rem + 7px + 7px); /* 7px top & bottom padding */
        color: #91a1c0;
        font-size: 1.2rem;
    }

.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch {
            /* downsize the switch + ball */
            width: 3.2rem;
            height: 1.5rem;
        }

.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch.mx_ToggleSwitch_on > .mx_ToggleSwitch_ball {
                left: calc(100% - 1.5rem);
            }

.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch .mx_ToggleSwitch_ball {
                width: 1.5rem;
                height: 1.5rem;
                border-radius: 1.5rem;
            }

/*
Copyright 2018, 2019, 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_titleWithIcon::before {
            content: "";
            display: inline-block;
            width: 24px;
            height: 24px;
            -webkit-margin-end: 8px;
                    margin-inline-end: 8px;
            position: relative;
            top: 5px;
            background-color: #ffffff;
        }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_titleWithIcon.mx_AccessSecretStorageDialog_resetBadge::before {
            /* The image isn't capable of masking, so we use a background instead. */
            background-image: url(../../img/element-icons/warning-badge.3cf4d1a.svg);
            background-size: 24px;
            background-color: transparent;
        }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_titleWithIcon.mx_AccessSecretStorageDialog_secureBackupTitle::before {
            -webkit-mask-image: url(../../img/feather-customised/secure-backup.6c0a137.svg);
                    mask-image: url(../../img/feather-customised/secure-backup.6c0a137.svg);
        }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_titleWithIcon.mx_AccessSecretStorageDialog_securePhraseTitle::before {
            -webkit-mask-image: url(../../img/feather-customised/secure-phrase.be40c1d.svg);
                    mask-image: url(../../img/feather-customised/secure-phrase.be40c1d.svg);
        }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_passPhraseInput {
            width: 300px;
            border: 1px solid #0dbd8b;
            border-radius: 5px;
        }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_keyStatus {
            height: 30px;
        }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_recoveryKeyEntry {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
        }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_recoveryKeyEntry .mx_AccessSecretStorageDialog_recoveryKeyEntry_textInput {
                -webkit-box-flex: 1;
                    -ms-flex-positive: 1;
                        flex-grow: 1;
            }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_recoveryKeyEntry .mx_AccessSecretStorageDialog_recoveryKeyEntry_entryControlSeparatorText {
                margin: 16px;
            }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_recoveryKeyEntry .mx_AccessSecretStorageDialog_recoveryKeyEntry_fileInput {
                display: none;
            }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_recoveryKeyFeedback::before {
                content: "";
                display: inline-block;
                vertical-align: bottom;
                width: 20px;
                height: 20px;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: 20px;
                        mask-size: 20px;
                -webkit-margin-end: 5px;
                        margin-inline-end: 5px;
            }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_recoveryKeyFeedback.mx_AccessSecretStorageDialog_recoveryKeyFeedback--valid {
                color: #0dbd8b;
            }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_recoveryKeyFeedback.mx_AccessSecretStorageDialog_recoveryKeyFeedback--valid::before {
                    -webkit-mask-image: url(../../img/feather-customised/check.94da327.svg);
                            mask-image: url(../../img/feather-customised/check.94da327.svg);
                    background-color: #0dbd8b;
                }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_recoveryKeyFeedback.mx_AccessSecretStorageDialog_recoveryKeyFeedback--invalid {
                color: #ff5b55;
            }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_AccessSecretStorageDialog_recoveryKeyFeedback.mx_AccessSecretStorageDialog_recoveryKeyFeedback--invalid::before {
                    -webkit-mask-image: url(../../img/feather-customised/x.816c629.svg);
                            mask-image: url(../../img/feather-customised/x.816c629.svg);
                    background-color: #ff5b55;
                }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_Dialog_buttons { /* 16px icon + 8px padding */

            text-align: left;

            text-align: initial;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-flow: column;
                    flex-flow: column;
            grid-gap: 14px;
            gap: 14px;
        }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_Dialog_buttons .mx_Dialog_buttons_additive {
                float: none;
            }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_Dialog_buttons .mx_Dialog_buttons_additive .mx_AccessSecretStorageDialog_reset {
                    position: relative;
                    -webkit-padding-start: 24px;
                            padding-inline-start: 24px;
                }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_Dialog_buttons .mx_Dialog_buttons_additive .mx_AccessSecretStorageDialog_reset::before {
                        content: "";
                        display: inline-block;
                        position: absolute;
                        height: 16px;
                        width: 16px;
                        left: 0;
                        top: 2px; /* alignment */
                        background-image: url(../../img/element-icons/warning-badge.3cf4d1a.svg);
                        background-size: contain;
                    }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_Dialog_buttons .mx_Dialog_buttons_additive .mx_AccessSecretStorageDialog_reset .mx_AccessSecretStorageDialog_reset_link {
                        color: #ff5b55;
                    }

.mx_AccessSecretStorageDialog .mx_AccessSecretStorageDialog_primaryContainer .mx_Dialog_buttons .mx_Dialog_buttons_row {
                grid-gap: 16px;
                gap: 16px; /* TODO: needs normalization */
                -webkit-padding-start: 24px;
                        padding-inline-start: 24px;
            }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CreateCrossSigningDialog {
    /* Why you ask? Because CompleteSecurityBody is 600px so this is the width */
    /* we end up when in there, but when in our own dialog we set our own width */
    /* so need to fix it to something sensible as otherwise we'd end up either */
    /* really wide or really narrow depending on the phase. I bet you wish you */
    /* never asked. */
    width: 560px;
}

.mx_CreateCrossSigningDialog details .mx_AccessibleButton {
        margin: 1em 0; /* emulate paragraph spacing because we can't put this button in a paragraph due to HTML rules */
    }

.mx_CreateCrossSigningDialog .mx_Dialog_title {
    /* TODO: Consider setting this for all dialog titles. */
    margin-bottom: 1em;
}

/*
Copyright 2018 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CreateKeyBackupDialog .mx_Dialog_title {
    /* TODO: Consider setting this for all dialog titles. */
    margin-bottom: 1em;
}

.mx_CreateKeyBackupDialog_primaryContainer {
    /* FIXME: plinth colour in new theme(s). background-color: $accent; */
    padding: 20px;
}

.mx_CreateKeyBackupDialog_primaryContainer::after {
    content: "";
    clear: both;
    display: block;
}

.mx_CreateKeyBackupDialog_passPhraseContainer {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
}

.mx_CreateKeyBackupDialog_passPhraseInput {
    -webkit-box-flex: 0;
        -ms-flex: none;
            flex: none;
    width: 250px;
    border: 1px solid #0dbd8b;
    border-radius: 5px;
    padding: 10px;
    margin-bottom: 1em;
}

.mx_CreateKeyBackupDialog_passPhraseMatch {
    margin-left: 20px;
}

.mx_CreateKeyBackupDialog_recoveryKeyHeader {
    margin-bottom: 1em;
}

.mx_CreateKeyBackupDialog_recoveryKeyContainer {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.mx_CreateKeyBackupDialog_recoveryKey {
    width: 262px;
    padding: 20px;
    color: #888;
    background-color: #20252b;
    margin-right: 12px;
}

.mx_CreateKeyBackupDialog_recoveryKeyButtons {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_CreateKeyBackupDialog_recoveryKeyButtons button {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    white-space: nowrap;
}

.mx_CreateKeyBackupDialog details .mx_AccessibleButton {
        margin: 1em 0; /* emulate paragraph spacing because we can't put this button in a paragraph due to HTML rules */
    }

/*
Copyright 2018 New Vector Ltd
Copyright 2019, 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CreateSecretStorageDialog {
    /* Why you ask? Because CompleteSecurityBody is 600px so this is the width */
    /* we end up when in there, but when in our own dialog we set our own width */
    /* so need to fix it to something sensible as otherwise we'd end up either */
    /* really wide or really narrow depending on the phase. I bet you wish you */
    /* never asked. */
    width: 560px;
}

.mx_CreateSecretStorageDialog.mx_SuccessDialog {
        padding: 56px;
    }

/* 80px from design - 24px wrapper padding */

.mx_CreateSecretStorageDialog.mx_SuccessDialog .mx_Dialog_title {
            margin-bottom: 16px;
        }

.mx_CreateSecretStorageDialog .mx_SettingsFlag {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
    }

.mx_CreateSecretStorageDialog .mx_SettingsFlag_label {
        -webkit-box-flex: 1;
            -ms-flex: 1 1 0px;
                flex: 1 1 0;
        min-width: 0;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_CreateSecretStorageDialog .mx_ToggleSwitch {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 auto;
                flex: 0 0 auto;
        margin-left: 30px;
    }

.mx_CreateSecretStorageDialog details .mx_AccessibleButton {
        margin: 1em 0; /* emulate paragraph spacing because we can't put this button in a paragraph due to HTML rules */
    }

.mx_CreateSecretStorageDialog .mx_Dialog_title {
    /* TODO: Consider setting this for all dialog titles. */
    margin-bottom: 1em;
}

.mx_CreateSecretStorageDialog_titleWithIcon::before {
    content: "";
    display: inline-block;
    width: 24px;
    height: 24px;
    margin-right: 8px;
    position: relative;
    top: 5px;
    background-color: #ffffff;
}

.mx_CreateSecretStorageDialog_secureBackupTitle::before {
    -webkit-mask-image: url(../../img/feather-customised/secure-backup.6c0a137.svg);
            mask-image: url(../../img/feather-customised/secure-backup.6c0a137.svg);
}

.mx_CreateSecretStorageDialog_securePhraseTitle::before {
    -webkit-mask-image: url(../../img/feather-customised/secure-phrase.be40c1d.svg);
            mask-image: url(../../img/feather-customised/secure-phrase.be40c1d.svg);
}

.mx_CreateSecretStorageDialog_centeredTitle,
.mx_CreateSecretStorageDialog_centeredBody {
    text-align: center;
}

.mx_CreateSecretStorageDialog_primaryContainer {
    /* FIXME: plinth colour in new theme(s). background-color: $accent; */
    padding-top: 20px;
}

.mx_CreateSecretStorageDialog_primaryContainer.mx_CreateSecretStorageDialog_recoveryKeyPrimarycontainer {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_CreateSecretStorageDialog_primaryContainer::after {
    content: "";
    clear: both;
    display: block;
}

.mx_CreateSecretStorageDialog_primaryContainer .mx_StyledRadioButton {
    margin-bottom: 16px;
    padding: 11px;
}

.mx_CreateSecretStorageDialog_optionTitle {
    color: #ffffff;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    font-size: 1.8rem;
    padding-bottom: 10px;
}

.mx_CreateSecretStorageDialog_optionIcon {
    display: inline-block;
    width: 24px;
    height: 24px;
    margin-right: 8px;
    position: relative;
    top: 5px;
    background-color: #ffffff;
}

.mx_CreateSecretStorageDialog_optionIcon_securePhrase {
    -webkit-mask-image: url(../../img/feather-customised/secure-phrase.be40c1d.svg);
            mask-image: url(../../img/feather-customised/secure-phrase.be40c1d.svg);
}

.mx_CreateSecretStorageDialog_optionIcon_secureBackup {
    -webkit-mask-image: url(../../img/feather-customised/secure-backup.6c0a137.svg);
            mask-image: url(../../img/feather-customised/secure-backup.6c0a137.svg);
}

.mx_CreateSecretStorageDialog_passPhraseContainer {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
}

.mx_Field.mx_CreateSecretStorageDialog_passPhraseField {
    margin-top: 0px;
}

.mx_CreateSecretStorageDialog_passPhraseMatch {
    width: 200px;
    margin-left: 20px;
}

.mx_CreateSecretStorageDialog_recoveryKeyContainer {
    display: inline-block;
}

.mx_CreateSecretStorageDialog_recoveryKey {
    font-weight: bold;
    text-align: center;
    padding: 20px;
    color: #888;
    background-color: #20252b;
    border-radius: 6px;
    word-spacing: 1em;
    margin-bottom: 20px;
}

.mx_CreateSecretStorageDialog_recoveryKey code {
        display: inline-block;
        width: 30rem;
    }

.mx_CreateSecretStorageDialog_recoveryKeyButtons {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 16px;
    gap: 16px;
}

.mx_CreateSecretStorageDialog_recoveryKeyButtons_copyBtn {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_CreateSecretStorageDialog_recoveryKeyButtons .mx_AccessibleButton {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    white-space: nowrap;
}

.mx_CreateSecretStorageDialog_continueSpinner {
    margin-top: 33px;
    text-align: right;
}

.mx_CreateSecretStorageDialog_continueSpinner img {
    width: 20px;
    height: 20px;
}

/*Responsive design*/

@media (max-width: 1024px){
    .mx_CreateSecretStorageDialog{
        width: auto !important;
    }
}

/*
Copyright 2018 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_KeyBackupFailedDialog .mx_Dialog_title {
    margin-bottom: 32px;
}

.mx_KeyBackupFailedDialog_title {
    position: relative;
    padding-left: 45px;
    padding-bottom: 10px;
}

.mx_KeyBackupFailedDialog_title::before {
        -webkit-mask: url(../../img/e2e/lock-warning-filled.2f94d9a.svg);
                mask: url(../../img/e2e/lock-warning-filled.2f94d9a.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        background-color: #ffffff;
        content: "";
        position: absolute;
        top: -6px;
        right: 0;
        bottom: 0;
        left: 0;
    }

.mx_KeyBackupFailedDialog .mx_Dialog_buttons {
    margin-top: 36px;
}

/*
Copyright 2018 New Vector Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RestoreKeyBackupDialog_keyStatus {
    height: 30px;
}

.mx_RestoreKeyBackupDialog_primaryContainer {
    /* FIXME: plinth colour in new theme(s). background-color: $accent; */
    padding: 20px;
}

.mx_RestoreKeyBackupDialog_passPhraseInput,
.mx_RestoreKeyBackupDialog_recoveryKeyInput {
    width: 300px;
    border: 1px solid #0dbd8b;
    border-radius: 5px;
    padding: 10px;
}

.mx_RestoreKeyBackupDialog_content > div {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    min-height: 110px; /* Empirically measured */
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_NetworkDropdown_wrapper .mx_ContextualMenu .mx_GenericDropdownMenu_Option.mx_GenericDropdownMenu_Option--header {
            padding-top: 12px;
            padding-bottom: 4px;
            min-width: 160px;
        }

.mx_NetworkDropdown_wrapper .mx_ContextualMenu .mx_GenericDropdownMenu_Option.mx_GenericDropdownMenu_Option--item {
            padding-top: 4px;
            padding-bottom: 4px;
        }

.mx_NetworkDropdown_wrapper .mx_ContextualMenu .mx_GenericDropdownMenu_Option.mx_GenericDropdownMenu_Option--item > .mx_GenericDropdownMenu_Option--label span:first-child {
                font-weight: normal;
            }

.mx_NetworkDropdown_wrapper .mx_ContextualMenu .mx_GenericDropdownMenu_Option > .mx_GenericDropdownMenu_Option--label {
            -webkit-box-orient: horizontal;
            -webkit-box-direction: normal;
                -ms-flex-direction: row;
                    flex-direction: row;
            -webkit-box-align: baseline;
                -ms-flex-align: baseline;
                    align-items: baseline;
            -ms-flex-line-pack: baseline;
                align-content: baseline;
            color: #ffffff;
        }

.mx_NetworkDropdown_wrapper .mx_ContextualMenu .mx_GenericDropdownMenu_Option > .mx_GenericDropdownMenu_Option--label span:not(:first-child) {
                margin-left: 4px;
                color: #a9b2bc;
            }

.mx_NetworkDropdown_wrapper .mx_ContextualMenu .mx_GenericDropdownMenu_divider {
        margin-top: 4px;
        margin-bottom: 4px;
    }

.mx_NetworkDropdown_addServer {
    font-weight: normal;
    font-size: 1.5rem;
}

.mx_NetworkDropdown_removeServer {
    position: relative;
    display: inline-block;
    width: 16px;
    height: 16px;
    background: #394049;
    border-radius: 8px;
    text-align: center;
    line-height: 16px;
    color: #a9b2bc;
    margin-left: auto;
}

.mx_NetworkDropdown_removeServer::before {
        background-color: #a9b2bc;
        content: "";
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
        width: 8px;
        height: 8px;
        position: absolute;
        left: 50%;
        top: 50%;
        -webkit-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%);
        -webkit-mask-image: url(../../img/cancel-small.6edc931.svg);
                mask-image: url(../../img/cancel-small.6edc931.svg);
    }

.mx_NetworkDropdown_dialog .mx_Dialog {
    width: 45vw;
}

/*
Copyright 2017 Vector Creations Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AccessibleButton {
    cursor: pointer;
}

.mx_AccessibleButton.mx_AccessibleButton_disabled {
        cursor: not-allowed;
    }

.mx_AccessibleButton.mx_AccessibleButton_disabled.mx_AccessibleButton_kind_primary,
        .mx_AccessibleButton.mx_AccessibleButton_disabled.mx_AccessibleButton_kind_primary_outline,
        .mx_AccessibleButton.mx_AccessibleButton_disabled.mx_AccessibleButton_kind_primary_sm,
        .mx_AccessibleButton.mx_AccessibleButton_disabled.mx_AccessibleButton_kind_link,
        .mx_AccessibleButton.mx_AccessibleButton_disabled.mx_AccessibleButton_kind_link_accent,
        .mx_AccessibleButton.mx_AccessibleButton_disabled.mx_AccessibleButton_kind_link_inline,
        .mx_AccessibleButton.mx_AccessibleButton_disabled.mx_AccessibleButton_kind_danger_inline,
        .mx_AccessibleButton.mx_AccessibleButton_disabled.mx_AccessibleButton_kind_content_inline,
        .mx_AccessibleButton.mx_AccessibleButton_disabled.mx_AccessibleButton_kind_link_sm {
            opacity: 0.4;
        }

.mx_AccessibleButton.mx_AccessibleButton_hasKind {
        padding: 7px 18px;
        text-align: center;
        border-radius: 8px;
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        font-size: 1.4rem;
        border: none; /* override default <button /> styles */
        word-break: keep-all;
    }

/* prevent button text in Chinese/Japanese/Korean (CJK) from being collapsed */

.mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary_sm,
        .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger_sm,
        .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link_sm {
            padding: 5px 12px;
        }

.mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary_sm {
            color: #ffffff;
            background-color: #0dbd8b;
        }

.mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger_sm {
            color: #ffffff;
            background-color: #ff5b55;
        }

.mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link_sm {
            color: #0dbd8b;
        }

.mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_confirm_sm {
            background-color: #0dbd8b;
        }

.mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_confirm_sm::before {
                -webkit-mask-image: url(../../img/feather-customised/check.94da327.svg);
                        mask-image: url(../../img/feather-customised/check.94da327.svg);
            }

.mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_cancel_sm {
            background-color: #ff5b55;
        }

.mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_cancel_sm::before {
                -webkit-mask-image: url(../../img/feather-customised/x.816c629.svg);
                        mask-image: url(../../img/feather-customised/x.816c629.svg);
            }

.mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_icon {
            padding: 0;
            height: 32px;
            width: 32px;
        }

.mx_AccessibleButton.mx_AccessibleButton_kind_primary,
    .mx_AccessibleButton.mx_AccessibleButton_kind_primary_outline,
    .mx_AccessibleButton.mx_AccessibleButton_kind_secondary {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_primary,
    .mx_AccessibleButton.mx_AccessibleButton_kind_primary_outline {
        border: 1px solid #0dbd8b;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_primary {
        color: #ffffff;
        background-color: #0dbd8b;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_primary_outline {
        color: #0dbd8b;
        background-color: transparent;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_secondary {
        color: #0dbd8b;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_secondary_content {
        color: #a9b2bc;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_danger {
        color: #ffffff;
        background-color: #ff5b55;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_danger.mx_AccessibleButton_disabled {
            color: #ffffff;
            background-color: #f5b6bb;
        }

.mx_AccessibleButton.mx_AccessibleButton_kind_danger_outline {
        color: #ff5b55;
        background-color: transparent;
        border: 1px solid #ff5b55;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_danger_outline.mx_AccessibleButton_disabled {
            color: #f5b6bb;
            border-color: #f5b6bb;
        }

.mx_AccessibleButton.mx_AccessibleButton_kind_danger_sm.mx_AccessibleButton_disabled {
            color: #ffffff;
            background-color: #f5b6bb;
        }

.mx_AccessibleButton.mx_AccessibleButton_kind_link,
    .mx_AccessibleButton.mx_AccessibleButton_kind_link_inline,
    .mx_AccessibleButton.mx_AccessibleButton_kind_danger_inline,
    .mx_AccessibleButton.mx_AccessibleButton_kind_content_inline {
        font-size: inherit;
        font-weight: normal;
        line-height: inherit;
        padding: 0;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_link,
    .mx_AccessibleButton.mx_AccessibleButton_kind_link_inline {
        color: #0dbd8b;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_danger_inline {
        color: #ff5b55;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_content_inline {
        color: #ffffff;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_link_inline,
    .mx_AccessibleButton.mx_AccessibleButton_kind_danger_inline,
    .mx_AccessibleButton.mx_AccessibleButton_kind_content_inline {
        display: inline;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_confirm_sm,
    .mx_AccessibleButton.mx_AccessibleButton_kind_cancel_sm {
        padding: 0px;
        width: 16px;
        height: 16px;
        border-radius: 100%;
        position: relative;
        display: block;
    }

.mx_AccessibleButton.mx_AccessibleButton_kind_confirm_sm::before, .mx_AccessibleButton.mx_AccessibleButton_kind_cancel_sm::before {
            content: "";
            display: block;
            position: absolute;
            inset: 0;
            background-color: #ffffff;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: 80%;
                    mask-size: 80%;
        }

/*
Copyright 2019 New Vector Ltd
Copyright 2022 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CopyableText {
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    max-width: 100%;
}

.mx_CopyableText.mx_CopyableText_border {
        overflow: auto;
        border-radius: 5px;
        border: solid 1px #c8c8cd;
        margin-bottom: 10px;
        margin-top: 10px;
        padding: 10px 0 10px 10px;
    }

.mx_CopyableText .mx_CopyableText_copyButton {
        -ms-flex-negative: 0;
            flex-shrink: 0;
        /* using em here to adapt to the local font size */
        width: 1em;
        height: 1em;
        cursor: pointer;
        padding-left: 12px;
        padding-right: 10px;
        display: block;
        /* If the copy button is used within a scrollable div, make it stick to the right while scrolling */
        position: sticky;
        right: 0;
        /* center to first line */
        top: 0.15em;
        background-color: #15191e;
    }

.mx_CopyableText .mx_CopyableText_copyButton::before {
            content: "";
            -webkit-mask-image: url(../../img/element-icons/copy.90230e2.svg);
                    mask-image: url(../../img/element-icons/copy.90230e2.svg);
            -webkit-mask-position: center center;
                    mask-position: center center;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            background-color: #b9bec6;
            width: 1em;
            height: 1em;
            display: block;
            background-repeat: no-repeat;
        }

/*
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_desktopCapturerSourcePicker {
    overflow: hidden;
}

.mx_desktopCapturerSourcePicker .mx_desktopCapturerSourcePicker_tab {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        -webkit-box-align: start;
            -ms-flex-align: start;
                align-items: flex-start;
        height: 500px;
        overflow: overlay;
    }

.mx_desktopCapturerSourcePicker .mx_desktopCapturerSourcePicker_tab .mx_desktopCapturerSourcePicker_source {
            width: 50%;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
        }

.mx_desktopCapturerSourcePicker .mx_desktopCapturerSourcePicker_tab .mx_desktopCapturerSourcePicker_source .mx_desktopCapturerSourcePicker_source_thumbnail {
                margin: 4px;
                padding: 4px;
                border-width: 2px;
                border-radius: 8px;
                border-style: solid;
                border-color: transparent;
            }

.mx_desktopCapturerSourcePicker .mx_desktopCapturerSourcePicker_tab .mx_desktopCapturerSourcePicker_source .mx_desktopCapturerSourcePicker_source_thumbnail.mx_desktopCapturerSourcePicker_source_thumbnail_selected,
                .mx_desktopCapturerSourcePicker .mx_desktopCapturerSourcePicker_tab .mx_desktopCapturerSourcePicker_source .mx_desktopCapturerSourcePicker_source_thumbnail:hover,
                .mx_desktopCapturerSourcePicker .mx_desktopCapturerSourcePicker_tab .mx_desktopCapturerSourcePicker_source .mx_desktopCapturerSourcePicker_source_thumbnail:focus {
                    border-color: #0dbd8b;
                }

.mx_desktopCapturerSourcePicker .mx_desktopCapturerSourcePicker_tab .mx_desktopCapturerSourcePicker_source .mx_desktopCapturerSourcePicker_source_name {
                margin: 0 4px;
                white-space: nowrap;
                text-overflow: ellipsis;
                overflow: hidden;
            }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DialPadBackspaceButton {
    position: relative;
    height: 28px;
    width: 28px;
}

.mx_DialPadBackspaceButton::before {
        /* force this element to appear on the DOM */
        content: "";

        background-color: #8d97a5;
        width: inherit;
        height: inherit;
        top: 0px;
        left: 0px;
        position: absolute;
        display: inline-block;
        vertical-align: middle;

        -webkit-mask-image: url(../../img/element-icons/call/delete.d67669d.svg);

                mask-image: url(../../img/element-icons/call/delete.d67669d.svg);
        -webkit-mask-position: 8px;
                mask-position: 8px;
        -webkit-mask-size: 20px;
                mask-size: 20px;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
    }

/*
Copyright 2017 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Dropdown {
    position: relative;
    color: #ffffff;
}

.mx_Dropdown_disabled {
    opacity: 0.3;
}

.mx_Dropdown_input {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: relative;
    border-radius: 4px;
    border: 1px solid #c7c7c7;
    font-size: 1.2rem;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}

.mx_Dropdown_input.mx_AccessibleButton_disabled {
    cursor: not-allowed;
}

.mx_Dropdown_input:focus {
    border-color: #238cf5;
}

/* Disable dropdown highlight on focus */

.mx_Dropdown_input.mx_AccessibleButton:focus {
    -webkit-filter: none;
            filter: none;
}

.mx_Dropdown_arrow {
    width: 10px;
    height: 6px;
    padding-right: 9px;
    -webkit-mask: url(../../img/feather-customised/dropdown-arrow.df9edbf.svg);
            mask: url(../../img/feather-customised/dropdown-arrow.df9edbf.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    background: #ffffff;
}

.mx_Dropdown_option {
    height: 35px;
    line-height: 3.5rem;
    /* Overwrites the default padding for any li elements*/
    padding: 0 8px;
}

.mx_Dropdown_input > .mx_Dropdown_option {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_Dropdown_option div {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mx_Dropdown_option img,
.mx_Dropdown_option .mx_Dropdown_option_emoji {
    margin: 5px;
    width: 16px;
    vertical-align: middle;
}

.mx_Dropdown_option_emoji {
    font-size: 1.6rem;
    line-height: 1.6rem;
}

input.mx_Dropdown_option,
input.mx_Dropdown_option:focus {
    font-weight: normal;
    border: 0;
    padding-top: 0;
    padding-bottom: 0;
    /* XXX: hack to prevent text box being too big and pushing */
    /* its parent out / overlapping the dropdown arrow. Only really */
    /* works in the Country dropdown. */
    width: 60%;
}

.mx_Dropdown_menu {
    position: absolute;
    left: -1px;
    right: -1px;
    top: 100%;
    z-index: 2;
    margin: 0;
    padding: 0px;
    border-radius: 4px;
    border: 1px solid #238cf5;
    background-color: #15191e;
    max-height: 200px;
    overflow-y: auto;
}

.mx_Dropdown_menu .mx_Dropdown_option {
    height: auto;
    min-height: 35px;
}

ul.mx_Dropdown_menu li.mx_Dropdown_option {
    list-style: none;
}

.mx_Dropdown_menu .mx_Dropdown_option_highlight {
    background-color: #343a46;
}

.mx_Dropdown_searchPrompt {
    font-weight: normal;
    margin-left: 5px;
    margin-bottom: 5px;
}

/*
Copyright 2017, 2019 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EditableItemList {
    margin-top: 12px;
    margin-bottom: 10px;
}

.mx_EditableItem {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin-bottom: 5px;
}

.mx_EditableItem_delete {
    -webkit-mask: url(../../img/cancel.12c5c12.svg);
            mask: url(../../img/cancel.12c5c12.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: cover;
            mask-size: cover;
    background-color: #9fa9ba;
    cursor: pointer;
    position: unset;
    width: unset;
    height: unset;
    -webkit-box-ordinal-group: 4;
        -ms-flex-order: 3;
            order: 3;
    margin-right: 5px;
    vertical-align: middle;
    width: 14px;
    height: 14px;
    background-color: #ff5b55;
    -webkit-mask-size: 100%;
            mask-size: 100%;
}

.mx_EditableItem_email {
    vertical-align: middle;
}

.mx_EditableItem_promptText {
    margin-right: 10px;
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
}

.mx_EditableItem_confirmBtn {
    margin-right: 5px;
}

.mx_EditableItem_item {
    -webkit-box-flex: 1;
        -ms-flex: auto 1 0px;
            flex: auto 1 0;
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
    width: calc(100% - 14px); /* leave space for the remove button */
    overflow-x: hidden;
    text-overflow: ellipsis;
}

.mx_EditableItemList_label {
    margin-bottom: 5px;
}

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ErrorBoundary {
    width: 100%;
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
}

.mx_ErrorBoundary_body {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    max-width: 400px;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_ErrorBoundary_body .mx_AccessibleButton {
        margin-top: 5px;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ExternalLink {
    color: #0086e6;
}

.mx_ExternalLink_icon {
    display: inline-block;
    -webkit-mask-image: url(../../img/external-link.5014037.svg);
            mask-image: url(../../img/external-link.5014037.svg);
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-size: contain;
            mask-size: contain;
    width: 1.1rem;
    height: 1.1rem;
    margin-left: 0.3rem;
    vertical-align: middle;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_FacePile {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_FacePile .mx_FacePile_faces {
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: reverse;
            -ms-flex-direction: row-reverse;
                flex-direction: row-reverse;
        vertical-align: middle;
        margin: 0 -1px;
    }

/* Overlap the children */

.mx_FacePile .mx_FacePile_faces > * + * {
            margin-right: -8px;
        }

/* to cancel out the border on the edges */

.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_image {
            border: 1px solid #15191e;
            border: 1px solid var(--facepile-background, #15191e);
        }

.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_initial {
            margin: 1px; /* to offset the border on the image */
        }

.mx_FacePile .mx_FacePile_faces .mx_FacePile_more {
            position: relative;
            border-radius: 100%;
            width: 30px;
            height: 30px;
            background-color: rgba(38, 39, 43, 0.82);
        }

.mx_FacePile .mx_FacePile_faces .mx_FacePile_more::before {
                content: "";
                z-index: 1;
                position: absolute;
                top: 0;
                left: 0;
                height: inherit;
                width: inherit;
                background: #8e99a4;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: 20px;
                        mask-size: 20px;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-image: url(../../img/element-icons/room/ellipsis.00cbc80.svg);
                        mask-image: url(../../img/element-icons/room/ellipsis.00cbc80.svg);
            }

.mx_FacePile .mx_FacePile_summary {
        margin-left: 12px;
        font-size: 1.4rem;
        line-height: 2.4rem;
        color: #8e99a4;
    }

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* TODO: Consider unifying with general input styles in _light.pcss */

.mx_Field {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    min-width: 0;
    position: relative;
    margin: 1em 0;
    border-radius: 4px;
    -webkit-transition: border-color 0.25s;
    transition: border-color 0.25s;
    border: 1px solid rgba(231, 231, 231, 0.2);
}

.mx_Field_prefix {
    border-right: 1px solid rgba(231, 231, 231, 0.2);
}

.mx_Field_postfix {
    border-left: 1px solid rgba(231, 231, 231, 0.2);
}

.mx_Field input,
.mx_Field select,
.mx_Field textarea {
    font-family: inherit;
    font-weight: normal;
    font-size: 1.4rem;
    border: none;
    /* Even without a border here, we still need this avoid overlapping the rounded */
    /* corners on the field above. */
    border-radius: 4px;
    padding: 8px 9px;
    color: #ffffff;
    background-color: #15191e;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    min-width: 0;
}

.mx_Field select {
    -moz-appearance: none;
    -webkit-appearance: none;
}

/* Can't add pseudo-elements to a select directly, so we use its parent. */

.mx_Field_select::before {
    content: "";
    position: absolute;
    top: 15px;
    right: 10px;
    width: 10px;
    height: 6px;
    -webkit-mask: url(../../img/feather-customised/dropdown-arrow.df9edbf.svg);
            mask: url(../../img/feather-customised/dropdown-arrow.df9edbf.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    background-color: #ffffff;
    z-index: 1;
    pointer-events: none;
}

.mx_Field:focus-within {
    border-color: #238cf5;
}

.mx_Field input:focus,
.mx_Field select:focus,
.mx_Field textarea:focus {
    outline: 0;
}

.mx_Field input::-webkit-input-placeholder, .mx_Field textarea::-webkit-input-placeholder {
    -webkit-transition: color 0.25s ease-in 0s;
    transition: color 0.25s ease-in 0s;
    color: transparent;
}

.mx_Field input::-moz-placeholder, .mx_Field textarea::-moz-placeholder {
    -moz-transition: color 0.25s ease-in 0s;
    transition: color 0.25s ease-in 0s;
    color: transparent;
}

.mx_Field input:-ms-input-placeholder, .mx_Field textarea:-ms-input-placeholder {
    -ms-transition: color 0.25s ease-in 0s;
    transition: color 0.25s ease-in 0s;
    color: transparent;
}

.mx_Field input::-ms-input-placeholder, .mx_Field textarea::-ms-input-placeholder {
    -ms-transition: color 0.25s ease-in 0s;
    transition: color 0.25s ease-in 0s;
    color: transparent;
}

.mx_Field input::placeholder,
.mx_Field textarea::placeholder {
    -webkit-transition: color 0.25s ease-in 0s;
    transition: color 0.25s ease-in 0s;
    color: transparent;
}

.mx_Field input:placeholder-shown:focus::-webkit-input-placeholder, .mx_Field textarea:placeholder-shown:focus::-webkit-input-placeholder, .mx_Field.mx_Field_placeholderIsHint input::-webkit-input-placeholder {
    -webkit-transition: color 0.25s ease-in 0.1s;
    transition: color 0.25s ease-in 0.1s;
    color: #888;
}

.mx_Field input:placeholder-shown:focus::-moz-placeholder, .mx_Field textarea:placeholder-shown:focus::-moz-placeholder, .mx_Field.mx_Field_placeholderIsHint input::-moz-placeholder {
    -moz-transition: color 0.25s ease-in 0.1s;
    transition: color 0.25s ease-in 0.1s;
    color: #888;
}

.mx_Field input:placeholder-shown:focus:-ms-input-placeholder, .mx_Field textarea:placeholder-shown:focus:-ms-input-placeholder, .mx_Field.mx_Field_placeholderIsHint input:-ms-input-placeholder {
    -ms-transition: color 0.25s ease-in 0.1s;
    transition: color 0.25s ease-in 0.1s;
    color: #888;
}

.mx_Field input:placeholder-shown:focus::-ms-input-placeholder, .mx_Field textarea:placeholder-shown:focus::-ms-input-placeholder, .mx_Field.mx_Field_placeholderIsHint input::-ms-input-placeholder {
    -ms-transition: color 0.25s ease-in 0.1s;
    transition: color 0.25s ease-in 0.1s;
    color: #888;
}

.mx_Field input:-moz-placeholder-shown:focus::placeholder, .mx_Field textarea:-moz-placeholder-shown:focus::placeholder {
    -moz-transition: color 0.25s ease-in 0.1s;
    transition: color 0.25s ease-in 0.1s;
    color: #888;
}

.mx_Field input:-ms-input-placeholder:focus::placeholder, .mx_Field textarea:-ms-input-placeholder:focus::placeholder {
    -ms-transition: color 0.25s ease-in 0.1s;
    transition: color 0.25s ease-in 0.1s;
    color: #888;
}

.mx_Field input:placeholder-shown:focus::placeholder,
.mx_Field textarea:placeholder-shown:focus::placeholder,
.mx_Field.mx_Field_placeholderIsHint input::placeholder {
    -webkit-transition: color 0.25s ease-in 0.1s;
    transition: color 0.25s ease-in 0.1s;
    color: #888;
}

.mx_Field label {
    -webkit-transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s, background-color 0.25s ease-out 0.1s, -webkit-transform 0.25s ease-out 0.1s;
    transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s, background-color 0.25s ease-out 0.1s, -webkit-transform 0.25s ease-out 0.1s;
    transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s, transform 0.25s ease-out 0.1s,
        background-color 0.25s ease-out 0.1s;
    transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s, transform 0.25s ease-out 0.1s,
        background-color 0.25s ease-out 0.1s, -webkit-transform 0.25s ease-out 0.1s;
    background-color: transparent;
    font-size: 1.4rem;
    -webkit-transform: translateY(0);
            transform: translateY(0);
    position: absolute;
    left: 0px;
    margin: 7px 8px;
    padding: 2px;
    pointer-events: none; /* Allow clicks to fall through to the input */
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    max-width: calc(100% - 20px); /* 100% of parent minus margin and padding */
}

.mx_Field input:not(:-moz-placeholder-shown) + label, .mx_Field textarea:not(:-moz-placeholder-shown) + label {
    -moz-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, transform 0.25s ease-out 0s,
        background-color 0.25s ease-out 0s;
    transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, transform 0.25s ease-out 0s,
        background-color 0.25s ease-out 0s;
    font-size: 1rem;
    transform: translateY(-13px);
    padding: 0 2px;
    background-color: #15191e;
    pointer-events: initial;
}

.mx_Field input:not(:-ms-input-placeholder) + label, .mx_Field textarea:not(:-ms-input-placeholder) + label {
    -ms-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, transform 0.25s ease-out 0s,
        background-color 0.25s ease-out 0s;
    transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, transform 0.25s ease-out 0s,
        background-color 0.25s ease-out 0s;
    font-size: 1rem;
    transform: translateY(-13px);
    padding: 0 2px;
    background-color: #15191e;
    pointer-events: initial;
}

.mx_Field_labelAlwaysTopLeft label,
.mx_Field select + label /* Always show a select's label on top to not collide with the value */,
.mx_Field input:focus + label,
.mx_Field input:not(:placeholder-shown) + label,
.mx_Field textarea:focus + label,
.mx_Field textarea:not(:placeholder-shown) + label {
    -webkit-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, background-color 0.25s ease-out 0s, -webkit-transform 0.25s ease-out 0s;
    transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, background-color 0.25s ease-out 0s, -webkit-transform 0.25s ease-out 0s;
    transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, transform 0.25s ease-out 0s,
        background-color 0.25s ease-out 0s;
    transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, transform 0.25s ease-out 0s,
        background-color 0.25s ease-out 0s, -webkit-transform 0.25s ease-out 0s;
    font-size: 1rem;
    -webkit-transform: translateY(-13px);
            transform: translateY(-13px);
    padding: 0 2px;
    background-color: #15191e;
    pointer-events: initial;
}

.mx_Field input:focus + label,
.mx_Field select:focus + label,
.mx_Field textarea:focus + label {
    color: #238cf5;
}

.mx_Field select:disabled,
.mx_Field select:disabled + label,
.mx_Field input:disabled,
.mx_Field input:disabled + label,
.mx_Field textarea:disabled,
.mx_Field textarea:disabled + label {
    background-color: #15191e;
    color: #888;
}

.mx_Field_valid.mx_Field,
    .mx_Field_valid.mx_Field:focus-within {
        border-color: #0dbd8b;
    }

.mx_Field_valid.mx_Field label,
    .mx_Field_valid.mx_Field:focus-within label {
        color: #0dbd8b;
    }

.mx_Field_invalid.mx_Field,
    .mx_Field_invalid.mx_Field:focus-within {
        border-color: #ff5b55;
    }

.mx_Field_invalid.mx_Field label,
    .mx_Field_invalid.mx_Field:focus-within label {
        color: #ff5b55;
    }

.mx_Field_tooltip {
    width: 200px;
}

.mx_Field_tooltip.mx_Field_valid {
    -webkit-animation: mx_fadeout 1s 2s forwards;
            animation: mx_fadeout 1s 2s forwards;
}

/* Customise other components when placed inside a Field */

.mx_Field .mx_Dropdown_input {
    border: medium none currentColor;
    border: initial;
    border-radius: 0;
    border-radius: initial;
}

.mx_Field .mx_CountryDropdown {
    width: 7.8rem;
}

/*
Copyright 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_GenericEventListSummary {
    position: relative;
}

.mx_GenericEventListSummary .mx_GenericEventListSummary_avatars {
        margin-right: 8px;
    }

.mx_GenericEventListSummary .mx_GenericEventListSummary_spacer {
        border-bottom: 1px solid transparent;
        margin-left: 63px;
        line-height: 3rem;
    }

/* TODO: Use a variable */

.mx_IRCLayout .mx_GenericEventListSummary .mx_GenericEventListSummary_spacer {
            line-height: var(--line-height);
        }

.mx_GenericEventListSummary[data-layout="irc"] .mx_GenericEventListSummary_toggle, .mx_GenericEventListSummary[data-layout="group"] .mx_GenericEventListSummary_toggle {
            float: right;
            margin-inline: 0 10px;
        }

.mx_GenericEventListSummary[data-layout="group"] {
        margin-top: 8px;
    }

.mx_GenericEventListSummary[data-layout="bubble"] {
        --maxWidth: 70%;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        margin-left: calc(var(--avatarSize) + var(--gutterSize));
    }

.mx_GenericEventListSummary[data-layout="bubble"] .mx_GenericEventListSummary_toggle {
            margin-block: 0;
        }

.mx_GenericEventListSummary[data-layout="bubble"] .mx_GenericEventListSummary_toggle[aria-expanded="false"] {
                -webkit-box-ordinal-group: 10;
                    -ms-flex-order: 9;
                        order: 9; /* TODO: Remove */
            }

.mx_GenericEventListSummary[data-layout="bubble"] .mx_GenericEventListSummary_toggle[aria-expanded="true"] {
                -webkit-margin-start: auto;
                        margin-inline-start: auto; /* reduce clickable area */
                -webkit-margin-end: var(--EventTile_bubble-margin-inline-end);
                        margin-inline-end: var(--EventTile_bubble-margin-inline-end); /* as the parent has zero margin */
            }

.mx_GenericEventListSummary[data-layout="bubble"] .mx_GenericEventListSummary_spacer {
            display: none;
        }

.mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] {
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: justify;
                -ms-flex-pack: justify;
                    justify-content: space-between;
            grid-column-gap: 5px;
            -webkit-column-gap: 5px;
               -moz-column-gap: 5px;
                    column-gap: 5px;
        }

/* that breaks ScrollPanel's reliance upon offsetTop so we have to have a bit more finesse. */

.mx_GenericEventListSummary[data-layout="bubble"][data-expanded="true"] {
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            margin: 0;
        }

/* ideally we'd use display=contents here for the layout to all work regardless of the *ELS but */

.mx_GenericEventListSummary[data-layout="bubble"]::after {
            content: "";
            clear: both;
        }

.mx_GenericEventListSummary[data-layout="bubble"]:hover::before {
                background: transparent;
            }

.mx_MatrixChat_useCompactLayout .mx_GenericEventListSummary {
        font-size: 1.3rem;
        margin-top: 4px;
    }

.mx_MatrixChat_useCompactLayout .mx_GenericEventListSummary .mx_EventTile_line {
            line-height: 2rem;
        }

.mx_MatrixChat_useCompactLayout .mx_GenericEventListSummary .mx_GenericEventListSummary_spacer {
            line-height: 2.2rem;
        }

.mx_MatrixChat_useCompactLayout .mx_GenericEventListSummary .mx_TextualEvent.mx_GenericEventListSummary_summary {
            font-size: 1.3rem;
        }

.mx_GenericEventListSummary_unstyledList {
    list-style: none;
    padding: 0;
}

.mx_TextualEvent.mx_GenericEventListSummary_summary {
    font-size: 1.4rem;
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
}

.mx_GenericEventListSummary_avatars {
    display: inline-block;
    line-height: 1.2rem;
}

.mx_GenericEventListSummary_avatars .mx_BaseAvatar {
        margin-right: -4px;
        cursor: pointer;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

:root {
    --image-view-panel-height: 68px;
}

.mx_ImageView {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    width: 100%;
    height: 100%;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_ImageView_image_wrapper {
    pointer-events: initial;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    height: 100%;
    overflow: hidden;
}

.mx_ImageView_image {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}

.mx_ImageView_image.mx_ImageView_image_animating {
        -webkit-transition: -webkit-transform 200ms ease 0s;
        transition: -webkit-transform 200ms ease 0s;
        transition: transform 200ms ease 0s;
        transition: transform 200ms ease 0s, -webkit-transform 200ms ease 0s;
    }

.mx_ImageView_image.mx_ImageView_image_animatingLoading {
        -webkit-transition: -webkit-transform 300ms ease 0s;
        transition: -webkit-transform 300ms ease 0s;
        transition: transform 300ms ease 0s;
        transition: transform 300ms ease 0s, -webkit-transform 300ms ease 0s;
    }

.mx_ImageView_panel {
    width: 100%;
    height: 68px;
    height: var(--image-view-panel-height);
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-animation-name: mx_ImageView_panel_keyframes;
            animation-name: mx_ImageView_panel_keyframes;
    -webkit-animation-duration: 300ms;
            animation-duration: 300ms;
}

.mx_ImageView_info_wrapper {
    pointer-events: initial;
    padding-left: 32px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #ffffff;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -ms-flex-preferred-size: 0;
        flex-basis: 0;
}

.mx_ImageView_info {
    padding-left: 12px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_ImageView_info_sender {
    font-weight: bold;
}

.mx_ImageView_title {
    color: #ffffff;
    font-size: 1.2rem;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -ms-flex-preferred-size: 0;
        flex-basis: 0;
    text-align: center;
}

.mx_ImageView_toolbar {
    padding-right: 16px;
    pointer-events: initial;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -ms-flex-preferred-size: 0;
        flex-basis: 0;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    grid-gap: calc(24px - (32px - 22px));
    gap: calc(24px - (32px - 22px));
}

.mx_ImageView_button {
    padding: calc((32px - 22px) / 2);
    display: block;
}

.mx_ImageView_button::before {
        content: "";
        height: 22px;
        width: 22px;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;
        display: block;
        background-color: #8e99a4;
    }

.mx_ImageView_button_rotateCW::before {
    -webkit-mask-image: url(../../img/image-view/rotate-cw.740f145.svg);
            mask-image: url(../../img/image-view/rotate-cw.740f145.svg);
}

.mx_ImageView_button_rotateCCW::before {
    -webkit-mask-image: url(../../img/image-view/rotate-ccw.88f3e8a.svg);
            mask-image: url(../../img/image-view/rotate-ccw.88f3e8a.svg);
}

.mx_ImageView_button_zoomOut::before {
    -webkit-mask-image: url(../../img/image-view/zoom-out.e8004ad.svg);
            mask-image: url(../../img/image-view/zoom-out.e8004ad.svg);
}

.mx_ImageView_button_zoomIn::before {
    -webkit-mask-image: url(../../img/image-view/zoom-in.a8c4f46.svg);
            mask-image: url(../../img/image-view/zoom-in.a8c4f46.svg);
}

.mx_ImageView_button_download::before {
    -webkit-mask-image: url(../../img/image-view/download.fe97451.svg);
            mask-image: url(../../img/image-view/download.fe97451.svg);
}

.mx_ImageView_button_more::before {
    -webkit-mask-image: url(../../img/image-view/more.9d7e5aa.svg);
            mask-image: url(../../img/image-view/more.9d7e5aa.svg);
}

.mx_ImageView_button_close {
    padding: calc(32px - 32px);
    border-radius: 100%;
    background: #21262c;
}

/* same on all themes */

.mx_ImageView_button_close::before {
        width: 32px;
        height: 32px;
        -webkit-mask-image: url(../../img/image-view/close.84ba4f5.svg);
                mask-image: url(../../img/image-view/close.84ba4f5.svg);
        -webkit-mask-size: 40%;
                mask-size: 40%;
    }

@media (prefers-reduced-motion) {
    .mx_ImageView_image_animating {
        -webkit-transition: none !important;
        transition: none !important;
    }

    .mx_ImageView_image_animatingLoading {
        -webkit-transition: none !important;
        transition: none !important;
    }
}

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_InfoTooltip_icon {
    width: 16px;
    height: 16px;
    display: inline-block;
}

.mx_InfoTooltip_icon::before {
    display: inline-block;
    background-color: #91a1c0;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-size: 16px;
            mask-size: 16px;
    width: 16px;
    height: 16px;
    -webkit-mask-position: center;
            mask-position: center;
    content: "";
    vertical-align: middle;
}

.mx_InfoTooltip_icon_info::before {
    -webkit-mask-image: url(../../img/element-icons/info.1c19351.svg);
            mask-image: url(../../img/element-icons/info.1c19351.svg);
}

.mx_InfoTooltip_icon_warning::before {
    -webkit-mask-image: url(../../img/element-icons/warning.7f03cf8.svg);
            mask-image: url(../../img/element-icons/warning.7f03cf8.svg);
}

/*
Copyright 2017 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_InlineSpinner {
    display: inline;
}

.mx_InlineSpinner img,
.mx_InlineSpinner_icon {
    margin: 0px 6px;
    vertical-align: -3px;
}

.mx_InlineSpinner_icon {
    display: inline-block !important; /* Override regular mx_Spinner_icon */
}

/*
Copyright 2019 - 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_InteractiveTooltip_wrapper {
    position: fixed;
    z-index: 3999;
}

.mx_InteractiveTooltip {
    border-radius: 8px;
    background-color: #15191e;
    color: #ffffff;
    position: absolute;
    z-index: 5001;
    -webkit-box-shadow: 0 24px 8px rgb(17 17 26 / 4%), 0 8px 32px rgb(17 17 26 / 4%);
            box-shadow: 0 24px 8px rgb(17 17 26 / 4%), 0 8px 32px rgb(17 17 26 / 4%);
}

.mx_InteractiveTooltip.mx_InteractiveTooltip_withChevron_top {
    top: 10px; /* 8px chevron + 2px spacing */
}

.mx_InteractiveTooltip.mx_InteractiveTooltip_withChevron_left {
    left: 10px; /* 8px chevron + 2px spacing */
}

.mx_InteractiveTooltip.mx_InteractiveTooltip_withChevron_right {
    right: 10px; /* 8px chevron + 2px spacing */
}

.mx_InteractiveTooltip.mx_InteractiveTooltip_withChevron_bottom {
    bottom: 10px; /* 8px chevron + 2px spacing */
}

.mx_InteractiveTooltip_chevron_top {
    position: absolute;
    left: calc(50% - 8px);
    top: -8px;
    width: 0;
    height: 0;
    border-left: 8px solid transparent;
    border-bottom: 8px solid #15191e;
    border-right: 8px solid transparent;
}

/* Adapted from https://codyhouse.co/blog/post/css-rounded-triangles-with-clip-path */

/* by Sebastiano Guerriero (@guerriero_se) */

@supports ((-webkit-clip-path: polygon(0% 0%, 100% 100%, 0% 100%)) or (clip-path: polygon(0% 0%, 100% 100%, 0% 100%))) {
    .mx_InteractiveTooltip_chevron_top {
        height: 16px;
        width: 16px;
        background-color: inherit;
        border: none;
        -webkit-clip-path: polygon(0% 0%, 100% 100%, 0% 100%);
                clip-path: polygon(0% 0%, 100% 100%, 0% 100%);
        -webkit-transform: rotate(135deg);
                transform: rotate(135deg);
        border-radius: 0 0 0 3px;
        top: calc(-8px / 1.414); /* sqrt(2) because of rotation */
    }
}

.mx_InteractiveTooltip_chevron_bottom {
    position: absolute;
    left: calc(50% - 8px);
    bottom: -8px;
    width: 0;
    height: 0;
    border-left: 8px solid transparent;
    border-top: 8px solid #15191e;
    border-right: 8px solid transparent;
}

/* Adapted from https://codyhouse.co/blog/post/css-rounded-triangles-with-clip-path */

/* by Sebastiano Guerriero (@guerriero_se) */

@supports ((-webkit-clip-path: polygon(0% 0%, 100% 100%, 0% 100%)) or (clip-path: polygon(0% 0%, 100% 100%, 0% 100%))) {
    .mx_InteractiveTooltip_chevron_bottom {
        height: 16px;
        width: 16px;
        background-color: inherit;
        border: none;
        -webkit-clip-path: polygon(0% 0%, 100% 100%, 0% 100%);
                clip-path: polygon(0% 0%, 100% 100%, 0% 100%);
        -webkit-transform: rotate(-45deg);
                transform: rotate(-45deg);
        border-radius: 0 0 0 3px;
        bottom: calc(-8px / 1.414); /* sqrt(2) because of rotation */
    }
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_InviteReason {
    position: relative;
    margin-bottom: 1em;
}

.mx_InviteReason .mx_InviteReason_reason {
        visibility: visible;
    }

.mx_InviteReason .mx_InviteReason_view {
        display: none;
        position: absolute;
        inset: 0;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        cursor: pointer;
        color: #a9b2bc;
    }

.mx_InviteReason .mx_InviteReason_view::before {
            content: "";
            margin-right: 8px;
            background-color: #a9b2bc;
            -webkit-mask-image: url(../../img/feather-customised/eye.15b36db.svg);
                    mask-image: url(../../img/feather-customised/eye.15b36db.svg);
            display: inline-block;
            width: 18px;
            height: 14px;
        }

.mx_InviteReason_hidden .mx_InviteReason_reason {
        visibility: hidden;
    }

.mx_InviteReason_hidden .mx_InviteReason_view {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LabelledCheckbox {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 8px;
    gap: 8px;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
}

.mx_LabelledCheckbox .mx_Checkbox {
        margin-top: 3px; /* visually align with label text */
    }

.mx_LabelledCheckbox .mx_LabelledCheckbox_labels {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
    }

.mx_LabelledCheckbox .mx_LabelledCheckbox_labels .mx_LabelledCheckbox_label {
            vertical-align: middle;
        }

.mx_LabelledCheckbox .mx_LabelledCheckbox_labels .mx_LabelledCheckbox_byline {
            display: block;
            padding-top: 4px;
            color: #91a1c0;
            font-size: 1.1rem;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MiniAvatarUploader {
    position: relative;
    width: -webkit-min-content;
    width: -moz-min-content;
    width: min-content;
}

/* this isn't a floating tooltip so override some things to not need to bother with z-index and floating */

.mx_MiniAvatarUploader .mx_Tooltip {
        display: inline-block;
        position: absolute;
        z-index: unset;
        width: -webkit-max-content;
        width: -moz-max-content;
        width: max-content;
        left: 72px;
        /* top edge starting at 50 % of parent - 50 % of itself -> centered vertically */
        top: 50%;
        -webkit-transform: translateY(-50%);
                transform: translateY(-50%);
    }

.mx_MiniAvatarUploader .mx_MiniAvatarUploader_indicator {
        position: absolute;

        height: 26px;
        width: 26px;

        right: -6px;
        bottom: -6px;

        background-color: #15191e;
        border-radius: 50%;
        z-index: 1;
    }

.mx_MiniAvatarUploader .mx_MiniAvatarUploader_indicator .mx_MiniAvatarUploader_cameraIcon {
            height: 100%;
            width: 100%;

            background-color: #a9b2bc;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-image: url(../../img/element-icons/camera.6ef82ed.svg);
                    mask-image: url(../../img/element-icons/camera.6ef82ed.svg);
            -webkit-mask-size: 16px;
                    mask-size: 16px;
            z-index: 2;
        }

.mx_MiniAvatarUploader_input {
    display: none;
}

/*
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Pill {
    padding: 0.1rem 0.4em 0.1rem 0.4em;
    line-height: 1.7rem;
    border-radius: 1.6rem;
    vertical-align: text-top;
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    max-width: 100%;
    overflow: hidden;
    cursor: pointer;

    color: #ffffff !important; /* To override .markdown-body */
    background-color: #343a46 !important;
}

/* To override .markdown-body */

.mx_Pill > * {
        pointer-events: none;
    }

.mx_Pill.mx_UserPill_me,
    .mx_Pill.mx_AtRoomPill {
        background-color: #ff5b55 !important; /* To override .markdown-body */
    }

.mx_Pill:hover {
        background-color: #545a66 !important; /* To override .markdown-body */
    }

.mx_Pill.mx_UserPill_me:hover {
        background-color: #ff6b75 !important; /* To override .markdown-body | same on both themes */
    }

/* We don't want to indicate clickability */

.mx_Pill.mx_AtRoomPill:hover {
        background-color: #ff5b55 !important; /* To override .markdown-body */
        cursor: unset;
    }

.mx_Pill::before,
    .mx_Pill .mx_BaseAvatar {
        -webkit-margin-start: -0.3em;
                margin-inline-start: -0.3em; /* Otherwise the gap is too large */
        -webkit-margin-end: 0.2em;
                margin-inline-end: 0.2em;
        min-width: 1.6rem; /* ensure the avatar is not compressed */
    }

.mx_Pill .mx_Pill_text {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

a.mx_Pill {
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
        text-decoration: none !important; /* To override .markdown-body */
    }

.mx_Pill .mx_Pill_LinkIcon {
        background-color: #0467dd;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        color: #15191e;
        height: 16px;
        padding: 1px;
        width: 16px;
    }

.mx_Pill .mx_Pill_UserIcon {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        color: #a9b2bc;
        height: 16px;
        width: 16px;
    }

/*
Copyright 2019 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PowerSelector {
    width: 100%;
}

.mx_PowerSelector .mx_Field select,
.mx_PowerSelector .mx_Field input {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
}

/*
Copyright 2020, 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

progress.mx_ProgressBar {
    height: 6px;
    width: 60px;
    overflow: hidden;
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
    border: none;

    border-radius: 6px;
}

progress.mx_ProgressBar::-moz-progress-bar {
        border-radius: 6px;
    }

progress.mx_ProgressBar::-webkit-progress-bar,
    progress.mx_ProgressBar::-webkit-progress-value {
        border-radius: 6px;
    }

progress.mx_ProgressBar {
    color: #0dbd8b;
}

progress.mx_ProgressBar::-moz-progress-bar {
        background-color: #0dbd8b;
    }

progress.mx_ProgressBar::-webkit-progress-value {
        background-color: #0dbd8b;
    }

progress.mx_ProgressBar {
    background-color: #21262c;
}

progress.mx_ProgressBar::-webkit-progress-bar {
        background-color: #21262c;
    }

progress.mx_ProgressBar ::-webkit-progress-value {
        -webkit-transition: width 1s;
        transition: width 1s;
    }

progress.mx_ProgressBar ::-moz-progress-bar {
        -moz-transition: padding-bottom 1s;
        transition: padding-bottom 1s;
        padding-bottom: var(--value);
        transform-origin: 0 0;
        transform: rotate(-90deg) translateX(-15px);
        padding-left: 15px;

        height: 0;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_QRCode img {
        border-radius: 8px;
    }

/*
Copyright 2018 Vector Creations Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ReplyChain {
    margin: 0; /* Reset default blockquote margin*/
    padding-left: 10px;
    border-left: 2px solid var(--username-color);
    border-radius: 2px;
}

.mx_ReplyChain .mx_ReplyChain_show.mx_AccessibleButton_kind_link_inline {
            white-space: nowrap; /* Enforce 'In reply to' to be a single line */
            color: #a9b2bc;
            -webkit-transition: color ease 0.15s;
            transition: color ease 0.15s;
        }

.mx_ReplyChain .mx_ReplyChain_show.mx_AccessibleButton_kind_link_inline:hover {
                color: #ffffff;
            }

.mx_ReplyChain.mx_ReplyChain_color1 {
        --username-color: #368bd6;
    }

.mx_ReplyChain.mx_ReplyChain_color2 {
        --username-color: #ac3ba8;
    }

.mx_ReplyChain.mx_ReplyChain_color3 {
        --username-color: #0dbd8b;
    }

.mx_ReplyChain.mx_ReplyChain_color4 {
        --username-color: #e64f7a;
    }

.mx_ReplyChain.mx_ReplyChain_color5 {
        --username-color: #ff812d;
    }

.mx_ReplyChain.mx_ReplyChain_color6 {
        --username-color: #2dc2c5;
    }

.mx_ReplyChain.mx_ReplyChain_color7 {
        --username-color: #5c56f5;
    }

.mx_ReplyChain.mx_ReplyChain_color8 {
        --username-color: #74d12c;
    }

/* Percy screenshot test specific CSS */

@media only percy {
    .mx_ReplyChain {
        /* Override the colour in percy tests for screenshot consistency */
        border-left-color: var(--percy-color-replyChain-border) !important;
    }
}

/*
Copyright 2018 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ResizeHandle {
    cursor: row-resize;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    z-index: 100;
}

.mx_ResizeHandle.mx_ResizeHandle--horizontal {
        margin: 0 -5px;
        padding: 0 5px;
        cursor: col-resize;
    }

.mx_ResizeHandle.mx_ResizeHandle--horizontal > div {
            width: 1px;
            height: 100%;
        }

.mx_ResizeHandle.mx_ResizeHandle--vertical {
        margin: -5px 0;
        padding: 5px 0;
    }

.mx_ResizeHandle.mx_ResizeHandle--vertical > div {
            height: 1px;
        }

/* XXX: bleurgh, what is this? These classes totally break the component */

/* naming scheme; it's completely unclear where or how they're being used */

/* --Matthew */

.mx_Markdown_BOLD {
    font-weight: bold;
}

.mx_Markdown_ITALIC {
    font-style: italic;
    /*
    // interestingly, *not* using the explicit italic font
    // variant seems yield better results.

    // compensate for Nunito italics being terrible
    // https://github.com/google/fonts/issues/172
    transform: skewX(-14deg);
    display: inline-block;
    */
}

.mx_Markdown_CODE {
    padding: 0.2em 0;
    margin: 0;
    font-size: 85%;
    background-color: rgba(0, 0, 0, 0.04);
    border-radius: 3px;
}

.mx_Markdown_HR {
    display: block;
    background: #e9e9e9;
}

.mx_Markdown_STRIKETHROUGH {
    text-decoration: line-through;
}

.mx_Emoji {
    /* Should be 1.8rem for our default message bodies, and scale with the */
    /* surrounding text */
    font-size: max(1.8rem, 1em);
    vertical-align: bottom;
}

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomAliasField {
    /* if parent is a flex container, this allows the */
    /* width to be as wide as needed, and not 100% */
    -webkit-box-flex: 0;
        -ms-flex: 0 1 auto;
            flex: 0 1 auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
    min-width: 0;
    max-width: 100%;
}

.mx_RoomAliasField input {
        width: 150px;
        padding-left: 0;
        padding-right: 0;
    }

.mx_RoomAliasField input::-webkit-input-placeholder {
        color: #888;
        font-weight: normal;
    }

.mx_RoomAliasField input::-moz-placeholder {
        color: #888;
        font-weight: normal;
    }

.mx_RoomAliasField input:-ms-input-placeholder {
        color: #888;
        font-weight: normal;
    }

.mx_RoomAliasField input::-ms-input-placeholder {
        color: #888;
        font-weight: normal;
    }

.mx_RoomAliasField input::placeholder {
        color: #888;
        font-weight: normal;
    }

.mx_RoomAliasField .mx_Field_prefix,
    .mx_RoomAliasField .mx_Field_postfix {
        color: #888;
        border-left: none;
        border-right: none;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        padding: 9px 10px;
        -webkit-box-flex: 0;
            -ms-flex: 0 0 auto;
                flex: 0 0 auto;
    }

.mx_RoomAliasField .mx_Field_postfix {
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
        /* this allows the domain name to show */
        /* as long as it doesn't make the input shrink */
        /* if it's too big, it shows an ellipsis */
        /* 180: 28 for prefix, 152 for input */
        max-width: calc(100% - 180px);
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SSOButtons {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
}

.mx_SSOButtons .mx_SSOButtons_row + .mx_SSOButtons_row {
            margin-top: 16px;
        }

.mx_SSOButtons .mx_SSOButton {
        position: relative;
        width: 100%;
        padding: 20px 32px;
        text-align: center;
        border-radius: 8px;
        display: inline-block;
        font-size: 1.4rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        border: 1px solid rgba(231, 231, 231, 0.2);
        color: #ffffff;
    }

.mx_SSOButtons .mx_SSOButton > img {
            -o-object-fit: contain;
               object-fit: contain;
            position: absolute;
            left: 8px;
            top: 4px;
        }

.mx_SSOButtons .mx_SSOButton:hover {
        background-color: rgba(141,151,165, 0.1);
    }

.mx_SSOButtons .mx_SSOButton_default {
        color: #0dbd8b;
        background-color: transparent;
        border-color: #0dbd8b;
    }

.mx_SSOButtons .mx_SSOButton_default.mx_SSOButton_primary {
        color: #ffffff;
        background-color: #0dbd8b;
    }

.mx_SSOButtons .mx_SSOButton_mini {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        width: 50px; /* 48px + 1px border on all sides */
        height: 50px; /* 48px + 1px border on all sides */
        min-width: 50px; /* prevent crushing by the flexbox */
        padding: 12px;
    }

.mx_SSOButtons .mx_SSOButton_mini > img {
            left: 12px;
            top: 12px;
        }

.mx_SSOButtons .mx_SSOButton_mini + .mx_SSOButton_mini {
            margin-left: 16px;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SearchWarning {
    text-align: center;
    padding: 0 16px;
}

.mx_SearchWarning > * {
        vertical-align: middle;
    }

.mx_SearchWarning > img {
        margin-right: 8px;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ServerPicker {
    margin-bottom: 14px;
    padding-bottom: 16px;
    border-bottom: 1px solid rgba(141, 151, 165, 0.2);
    display: grid;
    grid-template-columns: auto -webkit-min-content;
    grid-template-columns: auto min-content;
    grid-template-rows: auto auto auto;
    font-size: 1.4rem;
    line-height: 2rem;
}

.mx_ServerPicker > h2 {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        margin: 0 0 20px;
        grid-column: 1;
        grid-row: 1;
    }

.mx_ServerPicker .mx_ServerPicker_help {
        width: 20px;
        height: 20px;
        background-color: #8e99a4;
        border-radius: 10px;
        grid-column: 2;
        grid-row: 1;
        margin-left: auto;
        text-align: center;
        color: #ffffff;
        font-size: 16px;
        position: relative;
    }

.mx_ServerPicker .mx_ServerPicker_help::before {
            content: "";
            width: 24px;
            height: 24px;
            position: absolute;
            top: -2px;
            left: -2px;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-image: url(../../img/element-icons/i.c781d86.svg);
                    mask-image: url(../../img/element-icons/i.c781d86.svg);
            background: #ffffff;
        }

.mx_ServerPicker .mx_ServerPicker_server {
        color: #ffffff;
        grid-column: 1;
        grid-row: 2;
        overflow: hidden;
        text-overflow: ellipsis;
        margin-right: 8px;
    }

.mx_ServerPicker .mx_ServerPicker_change {
        grid-column: 2;
        grid-row: 2;
    }

.mx_ServerPicker .mx_ServerPicker_desc {
        margin-top: 4px;
        color: #8e99a4;
        grid-column: 1 / 2;
        grid-row: 3;
    }

.mx_ServerPicker_helpDialog .mx_Dialog_content {
        width: 456px;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SettingsFlag {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    margin-bottom: 4px;
    width: 100%;
}

.mx_SettingsFlag .mx_ToggleSwitch {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 auto;
                flex: 0 0 auto;
    }

.mx_SettingsFlag.mx_SettingsFlag_toggleInFront .mx_ToggleSwitch {
            display: inline-block;
            vertical-align: middle;
            margin-right: 8px;
        }

.mx_SettingsFlag.mx_SettingsFlag_toggleInFront .mx_SettingsFlag_label {
            display: inline-block;
            vertical-align: middle;
        }

.mx_SettingsFlag_label {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    font-size: 1.4rem;
    color: #ffffff;
    padding-right: 10px;
    padding-top: 4px;
}

.mx_SettingsFlag_microcopy {
    margin-top: 4px;
    font-size: 1.2rem;
    line-height: 1.5rem;
    color: #a9b2bc;
}

/* Support code/pre elements in settings flag descriptions */

.mx_SettingsFlag_microcopy pre,
    .mx_SettingsFlag_microcopy code {
        font-family: "Inconsolata", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Courier", monospace,
    "Noto Color Emoji" !important;
        background-color: rgba(0, 0, 0, 0.04);
    }

.mx_SettingsFlag_microcopy .mx_SettingsTab_microcopy_warning::before {
        content: "⚠️ ";
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Slider {
    position: relative;
    margin: 0;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
}

.mx_Slider input[type="range"] {
        height: 2.4em;
        -webkit-appearance: none;
           -moz-appearance: none;
                appearance: none;
        width: 100%;
        background: none;
        font-size: 1em; /* set base multiplier for em units applied later*/

        --active-color: #0dbd8b;
        --selection-dot-size: 2.4em;
    }

.mx_Slider input[type="range"]:disabled {
            cursor: not-allowed;

            --active-color: #394049;
        }

.mx_Slider input[type="range"]:focus:not(.focus-visible) {
            outline: none;
        }

.mx_Slider input[type="range"]::-webkit-slider-runnable-track {
            width: 100%;
            height: 0.4em;
            background: #394049;
            border-radius: 5px;
            border: 0 solid #000000;
        }

.mx_Slider input[type="range"]::-webkit-slider-thumb {
            border: 0 solid #000000;
            width: var(--selection-dot-size);
            height: var(--selection-dot-size);
            background: var(--active-color);
            border-radius: 50%;
            -webkit-appearance: none;
            margin-top: calc(2px + 1.2em - var(--selection-dot-size));
        }

.mx_Slider input[type="range"]:focus::-webkit-slider-runnable-track {
            background: #394049;
        }

.mx_Slider input[type="range"]::-moz-range-track {
            width: 100%;
            height: 0.4em;
            background: #394049;
            border-radius: 5px;
            border: 0 solid #000000;
        }

.mx_Slider input[type="range"]::-moz-range-progress {
            height: 0.4em;
            background: var(--active-color);
            border-radius: 5px;
            border: 0 solid #000000;
        }

.mx_Slider input[type="range"]::-moz-range-thumb {
            border: 0 solid #000000;
            width: var(--selection-dot-size);
            height: var(--selection-dot-size);
            background: var(--active-color);
            border-radius: 50%;
        }

.mx_Slider input[type="range"]::-ms-track {
            width: 100%;
            height: 0.4em;
            background: transparent;
            border-color: transparent;
            color: transparent;
        }

.mx_Slider input[type="range"]::-ms-fill-lower,
        .mx_Slider input[type="range"]::-ms-fill-upper {
            background: #394049;
            border: 0 solid #000000;
            border-radius: 10px;
        }

.mx_Slider input[type="range"]::-ms-thumb {
            margin-top: 1px;
            width: var(--selection-dot-size);
            height: var(--selection-dot-size);
            background: var(--active-color);
            border-radius: 50%;
        }

.mx_Slider input[type="range"]:focus::-ms-fill-upper {
            background: #394049;
        }

.mx_Slider input[type="range"]::-ms-fill-lower,
        .mx_Slider input[type="range"]:focus::-ms-fill-lower {
            background: var(--active-color);
        }

.mx_Slider output {
        position: absolute;
        left: 50%;
        -webkit-transform: translateX(-50%);
                transform: translateX(-50%);

        font-size: 1em; /* set base multiplier for em units applied later*/
        text-align: center;
        top: 3em;
    }

.mx_Slider output .mx_Slider_selection_label {
            color: #91a1c0;
            font-size: 1.4rem;
        }

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Spinner {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    width: 100%;
    height: 100%;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
}

.mx_MatrixChat_middlePanel .mx_Spinner {
    height: auto;
}

@-webkit-keyframes spin {
    from {
        -webkit-transform: rotateZ(0deg);
                transform: rotateZ(0deg);
    }
    to {
        -webkit-transform: rotateZ(360deg);
                transform: rotateZ(360deg);
    }
}

@keyframes spin {
    from {
        -webkit-transform: rotateZ(0deg);
                transform: rotateZ(0deg);
    }
    to {
        -webkit-transform: rotateZ(360deg);
                transform: rotateZ(360deg);
    }
}

.mx_Spinner_icon {
    background-color: #394049;
    -webkit-mask: url(../../img/spinner/spinner-background.334d97c.svg);
            mask: url(../../img/spinner/spinner-background.334d97c.svg);
    -webkit-mask-size: 100%;
            mask-size: 100%;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    width: 100%;
    height: 100%;
}

.mx_Spinner_icon::before {
        background-color: #a9b2bc;
        -webkit-mask: url(../../img/spinner/spinner-foreground.962dd16.svg);
                mask: url(../../img/spinner/spinner-foreground.962dd16.svg);
        -webkit-mask-size: 100%;
                mask-size: 100%;

        width: 100%;
        height: 100%;

        content: "";
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;

        -webkit-animation: 1s linear spin infinite;

                animation: 1s linear spin infinite;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Checkbox {

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
}

.mx_Checkbox input[type="checkbox"] {
        -webkit-appearance: none;
           -moz-appearance: none;
                appearance: none;
        margin: 0;
        padding: 0;
    }

.mx_Checkbox input[type="checkbox"] + label {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;

            -webkit-box-flex: 1;

                -ms-flex-positive: 1;

                    flex-grow: 1;
        }

.mx_Checkbox input[type="checkbox"] + label > .mx_Checkbox_background {
            display: -webkit-inline-box;
            display: -ms-inline-flexbox;
            display: inline-flex;
            position: relative;

            -ms-flex-negative: 0;

                flex-shrink: 0;

            height: 1.6rem;
            width: 1.6rem;
            size: 0.5rem;

            border: 0.15rem solid rgba(145,161,192, 0.5);
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            border-radius: 0.4rem;
        }

.mx_Checkbox input[type="checkbox"] + label > .mx_Checkbox_background .mx_Checkbox_checkmark {
                display: none;

                height: 100%;
                width: 100%;
                -webkit-mask-image: url(../../img/feather-customised/check.94da327.svg);
                        mask-image: url(../../img/feather-customised/check.94da327.svg);
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: 100%;
                        mask-size: 100%;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
            }

.mx_Checkbox input[type="checkbox"]:checked + label > .mx_Checkbox_background .mx_Checkbox_checkmark {
            display: block;
        }

.mx_Checkbox input[type="checkbox"] + label > *:not(.mx_Checkbox_background) {
            margin-left: 10px;
        }

.mx_Checkbox input[type="checkbox"]:disabled + label {
            opacity: 0.5;
            cursor: not-allowed;
        }

.mx_Checkbox input[type="checkbox"].focus-visible + label .mx_Checkbox_background {
                outline-width: 2px;
                outline-style: solid;
                outline-color: Highlight;
            }

/* WebKit gets its native focus styles. */

@media (-webkit-min-device-pixel-ratio: 0) {

.mx_Checkbox input[type="checkbox"].focus-visible + label .mx_Checkbox_background {
        outline-color: -webkit-focus-ring-color;
        outline-style: auto;
            }
    }

.mx_Checkbox.mx_Checkbox_kind_solid input[type="checkbox"] + label > .mx_Checkbox_background .mx_Checkbox_checkmark {
        background: #ffffff;
    }

.mx_Checkbox.mx_Checkbox_kind_solid input[type="checkbox"]:checked + label > .mx_Checkbox_background {
        background: #0dbd8b;
        border-color: #0dbd8b;
    }

.mx_Checkbox.mx_Checkbox_kind_outline input[type="checkbox"] + label > .mx_Checkbox_background .mx_Checkbox_checkmark {
        background: #0dbd8b;
    }

.mx_Checkbox.mx_Checkbox_kind_outline input[type="checkbox"]:checked + label > .mx_Checkbox_background {
        background: transparent;
        border-color: #0dbd8b;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/**
* This component expects the parent to specify a positive padding and
* width
*/

.mx_StyledRadioButton {
    position: relative;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-align: baseline;
        -ms-flex-align: baseline;
            align-items: baseline;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
}

.mx_StyledRadioButton > .mx_StyledRadioButton_content {
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;

        display: -webkit-box;

        display: -ms-flexbox;

        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;

        margin-left: 8px;
        margin-right: 8px;
    }

.mx_StyledRadioButton .mx_StyledRadioButton_spacer {
        -ms-flex-negative: 0;
            flex-shrink: 0;
        -webkit-box-flex: 0;
            -ms-flex-positive: 0;
                flex-grow: 0;

        height: 1.6rem;
        width: 1.6rem;
    }

.mx_StyledRadioButton input[type="radio"] {
        /* Remove the OS's representation */
        margin: 0;
        padding: 0;
        -webkit-appearance: none;
           -moz-appearance: none;
                appearance: none;
    }

.mx_StyledRadioButton input[type="radio"] + div {
            -ms-flex-negative: 0;
                flex-shrink: 0;
            -webkit-box-flex: 0;
                -ms-flex-positive: 0;
                    flex-grow: 0;

            display: -webkit-box;

            display: -ms-flexbox;

            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;

            -webkit-box-sizing: border-box;

                    box-sizing: border-box;
            height: 1.6rem;
            width: 1.6rem;
            margin-left: 2px; /* For the highlight on focus */

            border: 0.15rem solid #6f7882;
            border-radius: 1.6rem;
        }

.mx_StyledRadioButton input[type="radio"] + div > div {
                -webkit-box-sizing: border-box;
                        box-sizing: border-box;

                height: 0.8rem;
                width: 0.8rem;

                border-radius: 0.8rem;
            }

.mx_StyledRadioButton input[type="radio"].focus-visible + div {
                outline-width: 2px;
                outline-style: solid;
                outline-color: Highlight;
            }

/* WebKit gets its native focus styles. */

@media (-webkit-min-device-pixel-ratio: 0) {

.mx_StyledRadioButton input[type="radio"].focus-visible + div {
        outline-color: -webkit-focus-ring-color;
        outline-style: auto;
            }
    }

.mx_StyledRadioButton input[type="radio"]:checked + div {
                border-color: #0dbd8b;
            }

.mx_StyledRadioButton input[type="radio"]:checked + div > div {
                    background: #0dbd8b;
                }

.mx_StyledRadioButton input[type="radio"]:disabled + div,
            .mx_StyledRadioButton input[type="radio"]:disabled + div + span {
                opacity: 0.5;
                cursor: not-allowed;
            }

.mx_StyledRadioButton input[type="radio"]:disabled + div {
                border-color: #6f7882;
            }

.mx_StyledRadioButton input[type="radio"]:checked:disabled + div > div {
                background-color: #6f7882;
            }

.mx_StyledRadioButton .mx_StyledRadioButton_innerLabel {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        position: relative;
        top: 4px;
    }

.mx_StyledRadioButton_outlined {
    border: 1px solid #181b21;
    border-radius: 8px;
}

.mx_StyledRadioButton_checked {
    border-color: #0dbd8b;
}

/*
Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SyntaxHighlight {
    /* inhibit hljs styling */
    background: none !important;
    color: #c8c8cd !important;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_TagComposer .mx_TagComposer_input {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
    }

.mx_TagComposer .mx_TagComposer_input .mx_AccessibleButton {
            min-width: 70px;
            padding: 0 8px; /* override from button styles */
            -ms-flex-item-align: stretch;
                align-self: stretch; /* override default settingstab style */
        }

.mx_TagComposer .mx_TagComposer_input .mx_Field,
        .mx_TagComposer .mx_TagComposer_input .mx_Field input,
        .mx_TagComposer .mx_TagComposer_input .mx_AccessibleButton {
            /* So they look related to each other by feeling the same */
            border-radius: 8px;
        }

.mx_TagComposer .mx_TagComposer_tags {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        margin-top: 12px; /* this plus 12px from the tags makes 24px from the input */
    }

.mx_TagComposer .mx_Tag {
        margin-right: 12px;
        margin-top: 12px;
    }

.mx_Tag {
    font-size: 1.5rem;

    display: -webkit-inline-box;

    display: -ms-inline-flexbox;

    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    grid-gap: 8px;

    gap: 8px;
    padding: 8px;
    border-radius: 8px;

    color: #ffffff;
    background: #394049;
}

.mx_Tag > svg:first-child {
        width: 1em;
        color: #a9b2bc;
        -webkit-transform: scale(1.25);
                transform: scale(1.25);
        -webkit-transform-origin: center;
                transform-origin: center;
    }

.mx_Tag .mx_Tag_delete {
        border-radius: 50%;
        text-align: center;
        width: 1.066666em; /* 16px; */
        height: 1.066666em;
        line-height: 1em;
        color: #a9b2bc;
        background: #21262c;
        position: relative;
    }

.mx_Tag .mx_Tag_delete svg {
            width: 0.5em;
            vertical-align: middle;
        }

/*
Copyright 2019 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_TextWithTooltip_target {
    display: inline;
}

.mx_TextWithTooltip_tooltip {
    display: none;
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ToggleSwitch {
    --ToggleSwitch-min-width: 4.4rem;

    -webkit-transition: background-color 0.2s ease-out 0.1s;

    transition: background-color 0.2s ease-out 0.1s;

    width: 4.4rem;
    height: 2rem;
    border-radius: 1.5rem;
    padding: 2px;

    background-color: #343a46;
    opacity: 0.5;
}

.mx_ToggleSwitch[aria-disabled="true"] {
        cursor: not-allowed;
    }

.mx_ToggleSwitch_enabled {
    cursor: pointer;
    opacity: 1;
}

.mx_ToggleSwitch.mx_ToggleSwitch_on {
    background-color: #0dbd8b;
}

.mx_ToggleSwitch.mx_ToggleSwitch_on > .mx_ToggleSwitch_ball {
        left: calc(100% - 2rem);
    }

.mx_ToggleSwitch_ball {
    position: relative;
    width: 2rem;
    height: 2rem;
    border-radius: 2rem;
    background-color: #ffffff;
    -webkit-transition: left 0.15s ease-out 0.1s;
    transition: left 0.15s ease-out 0.1s;
    left: 0;
}

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

@-webkit-keyframes mx_fadein {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes mx_fadein {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@-webkit-keyframes mx_fadeout {
    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

@keyframes mx_fadeout {
    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

.mx_Tooltip_chevron {
    position: absolute;
    left: -7px;
    top: calc(50% - 6px);
    width: 0;
    height: 0;
    border-top: 7px solid transparent;
    border-right: 7px solid #000000;
    border-bottom: 7px solid transparent;
}

.mx_Tooltip_chevron::after {
    content: "";
    width: 0;
    height: 0;
    border-top: 6px solid transparent;
    border-right: 6px solid #20252b;
    border-bottom: 6px solid transparent;
    position: absolute;
    top: -6px;
    left: 1px;
}

.mx_Tooltip {
    display: none;
    position: fixed;
    border-radius: 8px;
    z-index: 6000; /* Higher than context menu so tooltips can be used everywhere */
    padding: 10px;
    pointer-events: none;
    line-height: 1.4rem;
    font-size: 1.2rem;
    font-weight: 500;
    max-width: 300px;
    word-break: break-word;

    background-color: #21262c; /* Same on both themes */
    color: #ffffff;
    border: 0;
    text-align: center;
}

.mx_Tooltip .mx_Tooltip_chevron {
        display: none;
    }

.mx_Tooltip.mx_Tooltip_visible {
        -webkit-animation: mx_fadein 0.2s forwards;
                animation: mx_fadein 0.2s forwards;
    }

.mx_Tooltip.mx_Tooltip_invisible {
        -webkit-animation: mx_fadeout 0.1s forwards;
                animation: mx_fadeout 0.1s forwards;
    }

.mx_Tooltip ul,
    .mx_Tooltip ol {
        text-align: start; /* for list items */
    }

/* These tooltips use an older style with a chevron */

.mx_Field_tooltip {
    background-color: #20252b;
    color: #ffffff;
    border: 1px solid #000000;
    text-align: unset;
}

.mx_Field_tooltip .mx_Tooltip_chevron {
        display: unset;
    }

.mx_Tooltip_title {
    font-weight: 600;
    font-weight: var(--font-semi-bold);
}

.mx_Tooltip_sub {
    opacity: 0.7;
    margin-top: 4px;
}

/*
Copyright 2017 New Vector Ltd.
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_TooltipButton {
    display: inline-block;
    width: 11px;
    height: 11px;
    margin-left: 5px;

    border: 2px solid #dbdbdb;
    border-radius: 20px;
    color: #dbdbdb;

    -webkit-transition: opacity 0.2s ease-in;

    transition: opacity 0.2s ease-in;
    opacity: 0.6;

    line-height: 1.1rem;
    text-align: center;

    cursor: pointer;
}

.mx_TooltipButton:hover {
    opacity: 1;
}

.mx_TooltipButton_container {
    position: relative;
    top: -18px;
    left: 4px;
}

.mx_TooltipButton_helpText {
    width: 400px;
    text-align: start;
    line-height: 17px !important;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UseCaseSelection {
    display: grid;
    grid-template-rows: 1fr 1fr -webkit-max-content 2fr;
    grid-template-rows: 1fr 1fr max-content 2fr;
    height: 100%;
    grid-gap: 40px;
}

.mx_UseCaseSelection .mx_UseCaseSelection_title {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end;
    }

.mx_UseCaseSelection .mx_UseCaseSelection_title h1 {
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            font-size: 3.2rem;
            text-align: center;
        }

.mx_UseCaseSelection .mx_UseCaseSelection_info {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        grid-gap: 8px;
        gap: 8px;
        align-self: flex-end;
    }

.mx_UseCaseSelection .mx_UseCaseSelection_info h2 {
            margin: 0;
            font-weight: 500;
            font-size: 2.4rem;
            text-align: center;
        }

.mx_UseCaseSelection .mx_UseCaseSelection_info h3 {
            margin: 0;
            font-weight: 400;
            font-size: 1.6rem;
            color: #a9b2bc;
            text-align: center;
        }

.mx_UseCaseSelection .mx_UseCaseSelection_options {
        display: grid;
        grid-template-columns: repeat(auto-fit, 232px);
        grid-gap: 32px;
        gap: 32px;
        align-self: stretch;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_UseCaseSelection .mx_UseCaseSelection_skip {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -ms-flex-item-align: start;
            align-self: flex-start;
    }

.mx_UseCaseSelection_slideIn {
    -webkit-animation-delay: 800ms;
            animation-delay: 800ms;
    -webkit-animation-duration: 300ms;
            animation-duration: 300ms;
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
            animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
    -webkit-animation-name: mx_UseCaseSelection_slideInLong;
            animation-name: mx_UseCaseSelection_slideInLong;
    -webkit-animation-fill-mode: backwards;
            animation-fill-mode: backwards;
    will-change: opacity;
}

.mx_UseCaseSelection_slideInDelayed {
    -webkit-animation-delay: 1500ms;
            animation-delay: 1500ms;
    -webkit-animation-duration: 300ms;
            animation-duration: 300ms;
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
            animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
    -webkit-animation-name: mx_UseCaseSelection_slideInShort;
            animation-name: mx_UseCaseSelection_slideInShort;
    -webkit-animation-fill-mode: backwards;
            animation-fill-mode: backwards;
    will-change: transform, opacity;
}

.mx_UseCaseSelection_selected .mx_UseCaseSelection_slideIn,
    .mx_UseCaseSelection_selected .mx_UseCaseSelection_slideInDelayed {
        -webkit-animation-delay: 800ms;
                animation-delay: 800ms;
        -webkit-animation-duration: 300ms;
                animation-duration: 300ms;
        -webkit-animation-fill-mode: forwards;
                animation-fill-mode: forwards;
        -webkit-animation-name: mx_UseCaseSelection_fadeOut;
                animation-name: mx_UseCaseSelection_fadeOut;
        will-change: opacity;
    }

@-webkit-keyframes mx_UseCaseSelection_slideInLong {
    0% {
        -webkit-transform: translate(0, 20px);
                transform: translate(0, 20px);
        opacity: 0;
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
        opacity: 1;
    }
}

@keyframes mx_UseCaseSelection_slideInLong {
    0% {
        -webkit-transform: translate(0, 20px);
                transform: translate(0, 20px);
        opacity: 0;
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
        opacity: 1;
    }
}

@-webkit-keyframes mx_UseCaseSelection_slideInShort {
    0% {
        -webkit-transform: translate(0, 8px);
                transform: translate(0, 8px);
        opacity: 0;
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
        opacity: 1;
    }
}

@keyframes mx_UseCaseSelection_slideInShort {
    0% {
        -webkit-transform: translate(0, 8px);
                transform: translate(0, 8px);
        opacity: 0;
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
        opacity: 1;
    }
}

@-webkit-keyframes mx_UseCaseSelection_fadeOut {
    0% {
        opacity: 1;
    }
    100% {
        opacity: 0;
    }
}

@keyframes mx_UseCaseSelection_fadeOut {
    0% {
        opacity: 1;
    }
    100% {
        opacity: 0;
    }
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UseCaseSelectionButton {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: 24px 16px;
    background: #15191e;
    border: 1px solid #394049;
    border-radius: 8px;
    text-align: center;
    position: relative;
    -webkit-transition-property: -webkit-box-shadow, -webkit-transform;
    transition-property: -webkit-box-shadow, -webkit-transform;
    transition-property: box-shadow, transform;
    transition-property: box-shadow, transform, -webkit-box-shadow, -webkit-transform;
    -webkit-transition-duration: 300ms;
            transition-duration: 300ms;
}

.mx_UseCaseSelectionButton .mx_UseCaseSelectionButton_icon {
        /* workaround: design expects a layering of two colors */
        background: -webkit-gradient(linear, left bottom, left top, from(rgba(172, 59, 168, 0.15)), to(rgba(172, 59, 168, 0.15))), #ffffff;
        background: linear-gradient(0deg, rgba(172, 59, 168, 0.15), rgba(172, 59, 168, 0.15)), #ffffff;
        border-radius: 14px;
        padding: 8px;
        margin-bottom: 16px;
    }

.mx_UseCaseSelectionButton .mx_UseCaseSelectionButton_icon::before {
            content: "";
            display: block;
            /* this has to remain the same color across all themes,
               as its background has a fixed color as well */
            background: #1e1e1e;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            width: 22px;
            height: 22px;
        }

.mx_UseCaseSelectionButton .mx_UseCaseSelectionButton_icon.mx_UseCaseSelectionButton_messaging::before {
            -webkit-mask-image: url(../../img/element-icons/chat-bubble.6a422c4.svg);
                    mask-image: url(../../img/element-icons/chat-bubble.6a422c4.svg);
        }

.mx_UseCaseSelectionButton .mx_UseCaseSelectionButton_icon.mx_UseCaseSelectionButton_work::before {
            -webkit-mask-image: url(../../img/element-icons/view-community.1e234e8.svg);
                    mask-image: url(../../img/element-icons/view-community.1e234e8.svg);
        }

.mx_UseCaseSelectionButton .mx_UseCaseSelectionButton_icon.mx_UseCaseSelectionButton_community::before {
            -webkit-mask-image: url(../../img/globe.216f1db.svg);
                    mask-image: url(../../img/globe.216f1db.svg);
        }

.mx_UseCaseSelectionButton:hover,
    .mx_UseCaseSelectionButton:focus {
        -webkit-box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);
                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);
        -webkit-transform: translate(0, -8px);
                transform: translate(0, -8px);
    }

.mx_UseCaseSelectionButton .mx_UseCaseSelectionButton_selectedIcon {
        right: -12px;
        top: -12px;
        position: absolute;
        border-radius: 24px;
        background: #0dbd8b;
        padding: 6px;
        -webkit-transition-property: opacity, -webkit-transform;
        transition-property: opacity, -webkit-transform;
        transition-property: opacity, transform;
        transition-property: opacity, transform, -webkit-transform;
        -webkit-transition-duration: 150ms;
                transition-duration: 150ms;
        opacity: 0;
        -webkit-transform: scale(0.6);
                transform: scale(0.6);
    }

.mx_UseCaseSelectionButton .mx_UseCaseSelectionButton_selectedIcon::before {
            content: "";
            display: block;
            background: #15191e;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            width: 12px;
            height: 12px;

            -webkit-mask-image: url(../../img/element-icons/check-white.1e3d7f7.svg);

                    mask-image: url(../../img/element-icons/check-white.1e3d7f7.svg);
        }

.mx_UseCaseSelectionButton.mx_UseCaseSelectionButton_selected {
        border: 2px solid #0dbd8b;
        padding: calc(24px - 1px) calc(16px - 1px);
        -webkit-box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);
                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);
    }

.mx_UseCaseSelectionButton.mx_UseCaseSelectionButton_selected .mx_UseCaseSelectionButton_selectedIcon {
            opacity: 1;
            -webkit-transform: scale(1);
                    transform: scale(1);
        }

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Validation {
    position: relative;
}

.mx_Validation_details {
    padding-left: 20px;
    margin: 0;
}

.mx_Validation_description + .mx_Validation_details {
    margin: 1em 0 0;
}

.mx_Validation_detail {
    position: relative;
    font-weight: normal;
    list-style: none;
    margin-bottom: 0.5em;
}

.mx_Validation_detail:last-child {
        margin-bottom: 0;
    }

.mx_Validation_detail::before {
        content: "";
        position: absolute;
        width: 14px;
        height: 14px;
        top: 0;
        left: -18px;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

.mx_Validation_detail.mx_Validation_valid {
        color: #0dbd8b;
    }

.mx_Validation_detail.mx_Validation_valid::before {
            -webkit-mask-image: url(../../img/feather-customised/check.94da327.svg);
                    mask-image: url(../../img/feather-customised/check.94da327.svg);
            background-color: #0dbd8b;
        }

.mx_Validation_detail.mx_Validation_invalid {
        color: #ff5b55;
    }

.mx_Validation_detail.mx_Validation_invalid::before {
            -webkit-mask-image: url(../../img/feather-customised/x.816c629.svg);
                    mask-image: url(../../img/feather-customised/x.816c629.svg);
            background-color: #ff5b55;
        }

/*
Copyright 2019 Tulir Asokan <tulir@maunium.net>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EmojiPicker {
    width: 340px;
    height: 450px;

    border-radius: 4px;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_EmojiPicker_body {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    overflow-y: scroll;
    scrollbar-width: thin;
    scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
}

.mx_EmojiPicker_header {
    padding: 4px 8px 0;
    border-bottom: 1px solid #616b7f;
}

.mx_EmojiPicker_anchor {
    border: none;
    padding: 8px 8px 6px;
    border-bottom: 2px solid transparent;
    background-color: transparent;
    border-radius: 4px 4px 0 0;

    width: 36px;
    height: 38px;
}

.mx_EmojiPicker_anchor:not(:disabled) {
        cursor: pointer;
    }

.mx_EmojiPicker_anchor:not(:disabled):hover {
        background-color: #343a46;
        border-bottom: 2px solid #0dbd8b;
    }

.mx_EmojiPicker_anchor::before {
    background-color: #ffffff;
    content: "";
    display: inline-block;
    -webkit-mask-size: 100%;
            mask-size: 100%;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    width: 100%;
    height: 100%;
}

.mx_EmojiPicker_anchor:disabled::before {
    background-color: #343a46;
}

.mx_EmojiPicker_anchor_activity::before {
    -webkit-mask-image: url(../../img/emojipicker/activity.46d222c.svg);
            mask-image: url(../../img/emojipicker/activity.46d222c.svg);
}

.mx_EmojiPicker_anchor_custom::before {
    -webkit-mask-image: url(../../img/emojipicker/custom.e928e34.svg);
            mask-image: url(../../img/emojipicker/custom.e928e34.svg);
}

.mx_EmojiPicker_anchor_flags::before {
    -webkit-mask-image: url(../../img/emojipicker/flags.1ec0361.svg);
            mask-image: url(../../img/emojipicker/flags.1ec0361.svg);
}

.mx_EmojiPicker_anchor_foods::before {
    -webkit-mask-image: url(../../img/emojipicker/foods.60f69a7.svg);
            mask-image: url(../../img/emojipicker/foods.60f69a7.svg);
}

.mx_EmojiPicker_anchor_nature::before {
    -webkit-mask-image: url(../../img/emojipicker/nature.b2e0cf4.svg);
            mask-image: url(../../img/emojipicker/nature.b2e0cf4.svg);
}

.mx_EmojiPicker_anchor_objects::before {
    -webkit-mask-image: url(../../img/emojipicker/objects.496fc08.svg);
            mask-image: url(../../img/emojipicker/objects.496fc08.svg);
}

.mx_EmojiPicker_anchor_people::before {
    -webkit-mask-image: url(../../img/emojipicker/people.8e827a6.svg);
            mask-image: url(../../img/emojipicker/people.8e827a6.svg);
}

.mx_EmojiPicker_anchor_places::before {
    -webkit-mask-image: url(../../img/emojipicker/places.c17392c.svg);
            mask-image: url(../../img/emojipicker/places.c17392c.svg);
}

.mx_EmojiPicker_anchor_recent::before {
    -webkit-mask-image: url(../../img/emojipicker/recent.6ba331b.svg);
            mask-image: url(../../img/emojipicker/recent.6ba331b.svg);
}

.mx_EmojiPicker_anchor_symbols::before {
    -webkit-mask-image: url(../../img/emojipicker/symbols.c580c77.svg);
            mask-image: url(../../img/emojipicker/symbols.c580c77.svg);
}

.mx_EmojiPicker_anchor_visible {
    border-bottom: 2px solid #0dbd8b;
}

.mx_EmojiPicker_search {
    margin: 8px;
    border-radius: 4px;
    border: 1px solid rgba(231, 231, 231, 0.2);
    background-color: #15191e;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.mx_EmojiPicker_search input {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        border: none;
        padding: 8px 12px;
        border-radius: 4px 0;
    }

.mx_EmojiPicker_search button {
        border: none;
        background-color: inherit;
        margin: 0;
        padding: 8px;
        -ms-flex-item-align: center;
            align-self: center;
        width: 32px;
        height: 32px;
    }

.mx_EmojiPicker_search_clear {
    cursor: pointer;
}

.mx_EmojiPicker_search_icon {
    width: 16px;
    margin: 8px;
}

.mx_EmojiPicker_search_icon:not(.mx_EmojiPicker_search_clear) {
    pointer-events: none;
}

.mx_EmojiPicker_search_icon::after {
    -webkit-mask: url(../../img/emojipicker/search.59e7b9e.svg) no-repeat;
            mask: url(../../img/emojipicker/search.59e7b9e.svg) no-repeat;
    -webkit-mask-size: 100%;
            mask-size: 100%;
    background-color: #ffffff;
    content: "";
    display: inline-block;
    width: 100%;
    height: 100%;
}

.mx_EmojiPicker_search_clear::after {
    -webkit-mask-image: url(../../img/emojipicker/delete.039cc43.svg);
            mask-image: url(../../img/emojipicker/delete.039cc43.svg);
}

.mx_EmojiPicker_category {
    padding: 0 12px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_EmojiPicker_category_label {
    width: 304px;
}

.mx_EmojiPicker_list {
    width: 304px;
    padding: 0;
    margin: 0;
}

.mx_EmojiPicker_item_wrapper {
    display: inline-block;
    list-style: none;
    width: 38px;
    cursor: pointer;
}

.mx_EmojiPicker_item_wrapper:focus-within {
        background-color: #343a46;
    }

.mx_EmojiPicker_body .mx_EmojiPicker_item_wrapper[tabindex="0"] .mx_EmojiPicker_item {
    background-color: #343a46;
}

.mx_EmojiPicker_item {
    display: inline-block;
    font-size: 2rem;
    padding: 5px;
    width: 100%;
    height: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    text-align: center;
    border-radius: 4px;
}

.mx_EmojiPicker_item:hover {
        background-color: #343a46;
    }

.mx_EmojiPicker_item_selected {
    color: rgba(0, 0, 0, 0.5);
    border: 1px solid #0dbd8b;
    padding: 4px;
}

.mx_EmojiPicker_category_label,
.mx_EmojiPicker_preview_name {
    font-size: 1.6rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    margin: 0;
}

.mx_EmojiPicker_footer {
    border-top: 1px solid #616b7f;
    min-height: 72px;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_EmojiPicker_preview_emoji {
    font-size: 3.2rem;
    padding: 8px 16px;
}

.mx_EmojiPicker_preview_text {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    overflow: hidden;
    padding-top: 1rem;
    padding-bottom: 1rem;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_EmojiPicker_name {
    text-transform: capitalize;
}

.mx_EmojiPicker_shortcode {
    color: #c8c8cd;
    overflow-wrap: break-word;
    font-size: 1.4rem;
}

.mx_EmojiPicker_shortcode::before,
    .mx_EmojiPicker_shortcode::after {
        content: ":";
    }

.mx_EmojiPicker_quick {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -ms-flex-pack: distribute;
        justify-content: space-around;
}

.mx_EmojiPicker_quick_header .mx_EmojiPicker_name {
    margin-right: 4px;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LocationPicker {
    border-radius: 8px;

    height: 100%;
    position: relative;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;

    /* when there are errors loading the map */
}

/* hide it */

.mx_LocationPicker.mx_LocationPicker_hasError .maplibregl-canvas-container,
        .mx_LocationPicker.mx_LocationPicker_hasError .maplibregl-control-container {
            display: none;
        }

/* and can overlap error message/close buttons */

.mx_LocationPicker #mx_LocationPicker_map {
        border-top-left-radius: inherit;
        border-top-right-radius: inherit;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
    }

.mx_LocationPicker #mx_LocationPicker_map .maplibregl-ctrl.maplibregl-ctrl-group,
        .mx_LocationPicker #mx_LocationPicker_map .maplibregl-ctrl.maplibregl-ctrl-attrib {
            margin-right: 16px;
        }

.mx_LocationPicker #mx_LocationPicker_map .maplibregl-ctrl.maplibregl-ctrl-group {
            /* place below the close button */
            /* padding-16 + 24px close button + padding-10 */
            margin-top: 50px;
        }

.mx_LocationPicker #mx_LocationPicker_map .maplibregl-user-location-accuracy-circle {
            display: none;
        }

.mx_LocationPicker #mx_LocationPicker_map .maplibregl-user-location-dot {
            display: none;
        }

/* the canvas is still inserted */

.mx_LocationPicker .mx_LocationPicker_footer {
        -webkit-box-flex: 0;
            -ms-flex: 0;
                flex: 0;
        width: 100%;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        padding: 16px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-pack: stretch;
            -ms-flex-pack: stretch;
                justify-content: stretch;

        border-bottom-left-radius: inherit;
        border-bottom-right-radius: inherit;

        background-color: #20252b;
    }

.mx_LocationPicker_pinText {
    position: absolute;
    top: 16px;
    width: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    text-align: center;
    height: 0;
    pointer-events: none;
}

.mx_LocationPicker_pinText span {
        -webkit-box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.15);
                box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.15);
        border-radius: 8px;
        padding: 8px;
        background-color: #15191e;
        color: #ffffff;

        font-size: 1.2rem;
    }

.mx_LocationPicker_submitButton {
    width: 100%;
    height: 48px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CallEvent_wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    width: 100%;
}

.mx_CallEvent {
    padding: 12px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    min-height: 60px;
    max-width: 600px;
    width: 100%;
    background-color: #21262c;
    border-radius: 8px;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    grid-gap: 8px;
    gap: 8px;
}

.mx_CallEvent > .mx_BaseAvatar,
    .mx_CallEvent > .mx_Icon {
        -ms-flex-item-align: start;
            align-self: flex-start;
    }

.mx_CallEvent > .mx_Icon {
        padding: 0;
        margin: 4px 0;
        color: #a9b2bc;
    }

.mx_CallEvent .mx_LiveContentSummary {
        font-size: 1.2rem;
    }

.mx_CallEvent {

    --facepile-background: #21262c;
}

.mx_CallEvent_title {
    font-size: 1.5rem;
    line-height: 24px; /* in px to match the avatar */
}

.mx_CallEvent_inactive .mx_CallEvent_title::before {
    display: inline-block;
    vertical-align: middle;
    content: "";
    background-color: #a9b2bc;
    -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
            mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
    -webkit-mask-size: 16px;
            mask-size: 16px;
    width: 16px;
    height: 16px;
    margin-right: 8px;
}

.mx_CallEvent_active .mx_CallEvent_title {
    font-weight: 600;
    font-weight: var(--font-semi-bold);
}

.mx_CallEvent_columns {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 12px;
    gap: 12px;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
}

.mx_TimelineCard .mx_CallEvent_columns {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    grid-gap: 8px;
    gap: 8px;
}

.mx_CallEvent_details {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    grid-gap: 6px;
    gap: 6px;
}

.mx_CallEvent_button {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    min-width: 120px;
}

/*
Copyright 2018, 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EventTileBubble.mx_CreateEvent {
    margin: var(--EventTileBubble_margin-block) auto;
}

.mx_EventTileBubble.mx_CreateEvent::before {
        background-color: #b9bec6;
        -webkit-mask-image: url(../../img/element-icons/chat-bubbles.38087ca.svg);
                mask-image: url(../../img/element-icons/chat-bubbles.38087ca.svg);
    }

/*
Copyright 2017 Vector Creations Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DateSeparator {
    clear: both;
    margin: 4px 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    font-size: 1.4rem;
    color: #b9bec6;
}

.mx_DateSeparator > hr {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
    height: 0;
    border: none;
    border-bottom: 1px solid #343a46;
}

.mx_DateSeparator_dateContent {
    padding: 0 25px;
}

.mx_DateSeparator_dateHeading {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    margin: 0;
    font-size: inherit;
    font-weight: inherit;
    color: inherit;
}

.mx_DateSeparator_jumpToDateMenu {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.mx_DateSeparator_chevron {
    -ms-flex-item-align: center;
        align-self: center;
    width: 16px;
    height: 16px;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: contain;
            mask-size: contain;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
            mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
    background-color: #8e99a4;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DecryptionFailureBody {
    color: #a9b2bc;
    font-style: italic;
}

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DisambiguatedProfile {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
}

.mx_DisambiguatedProfile .mx_DisambiguatedProfile_displayName {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        -webkit-margin-end: 0;
                margin-inline-end: 0;
    }

.mx_DisambiguatedProfile .mx_DisambiguatedProfile_mxid {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.1rem;
        -webkit-margin-start: 5px;
                margin-inline-start: 5px;
        opacity: 0.5; /* Match mx_TextualEvent */
        color: #ffffff;
    }

@media only percy {
    .mx_DisambiguatedProfile_displayName {
        /* Override the colour in percy tests for screenshot consistency */
        color: var(--percy-color-displayName) !important;
    }
}

/*
Copyright 2019, 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EventTileBubble {
    --EventTileBubble_margin-block: 10px;

    background-color: #20252b;
    padding: 10px;
    border-radius: 8px;
    /* Reserve space for external timestamps, but also cap the width */
    max-width: min(calc(100% - 2 * 46px), 600px);
    max-width: min(calc(100% - 2 * var(--MessageTimestamp-width)), 600px);
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    display: grid;
    grid-template-columns: 24px minmax(0, 1fr) -webkit-min-content -webkit-min-content;
    grid-template-columns: 24px minmax(0, 1fr) min-content min-content;
}

.mx_EventTileBubble::before,
    .mx_EventTileBubble::after {
        position: relative;
        grid-column: 1;
        grid-row: 1 / 3;
        width: 16px;
        height: 16px;
        content: "";
        inset: 0;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
        margin-top: 4px;
    }

.mx_EventTileBubble .mx_EventTileBubble_title,
    .mx_EventTileBubble .mx_EventTileBubble_subtitle {
        grid-column: 2;
        overflow-wrap: break-word;
    }

.mx_EventTileBubble .mx_EventTileBubble_title {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.5rem;
        grid-row: 1;
    }

.mx_EventTileBubble .mx_EventTileBubble_subtitle {
        font-size: 1.2rem;
        grid-row: 2;
    }

.mx_EventTileBubble .mx_MessageTimestamp {
        grid-column: 4;
        grid-row: 1 / 3;
        align-self: center;
        margin-left: 16px;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_HiddenBody {
    white-space: pre-wrap;
    color: #91a1c0;
    vertical-align: middle;

    padding-left: 20px;
    position: relative;
}

.mx_HiddenBody::before {
        height: 14px;
        width: 14px;
        background-color: #91a1c0;
        -webkit-mask-image: url(../../img/element-icons/hide.fa3b90e.svg);
                mask-image: url(../../img/element-icons/hide.fa3b90e.svg);

        -webkit-mask-repeat: no-repeat;

                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
        content: "";
        position: absolute;
        top: 1px;
        left: 0;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_JumpToDatePicker_form {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    /* This matches the default padding of IconizedContextMenuOption */
    /* (see context_menus/_IconizedContextMenu.pcss) */
    padding-top: 12px;
    padding-bottom: 12px;
}

.mx_JumpToDatePicker_label {
    -ms-flex-item-align: center;
        align-self: center;
    font-size: 1.5rem;
}

.mx_JumpToDatePicker_datePicker {
    margin: 0;
    margin-left: 8px;
}

.mx_JumpToDatePicker_datePicker,
    .mx_JumpToDatePicker_datePicker > input {
        border-radius: 8px;
    }

.mx_JumpToDatePicker_submitButton {
    margin-left: 8px;
}

/*
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LegacyCallEvent_wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    width: 100%;
}

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: justify;
            -ms-flex-pack: justify;
                justify-content: space-between;
        grid-gap: 4px 0;
        gap: 4px 0;

        position: relative;
        margin: 4px 0;
        padding: 12px 24px;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        background-color: #20252b;
        border-radius: 8px;
        width: 65%;
        height: -webkit-fit-content;
        height: -moz-fit-content;
        height: fit-content;
    }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_iconButton {
            display: -webkit-inline-box;
            display: -ms-inline-flexbox;
            display: inline-flex;
        }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_iconButton::before {
                content: "";

                height: 16px;
                width: 16px;
                background-color: #a9b2bc;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-size: contain;
                        mask-size: contain;
                -webkit-mask-position: center;
                        mask-position: center;
            }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_silence::before {
            -webkit-mask-image: url(../../img/voip/silence.b18c857.svg);
                    mask-image: url(../../img/voip/silence.b18c857.svg);
        }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_unSilence::before {
            -webkit-mask-image: url(../../img/voip/un-silence.c7194c2.svg);
                    mask-image: url(../../img/voip/un-silence.c7194c2.svg);
        }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_voice .mx_LegacyCallEvent_type_icon::before,
            .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_voice .mx_LegacyCallEvent_content_button_callBack span::before,
            .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_voice .mx_LegacyCallEvent_content_button_answer span::before {
                -webkit-mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
                        mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
            }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_voice.mx_LegacyCallEvent_rejected .mx_LegacyCallEvent_type_icon::before, .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_voice.mx_LegacyCallEvent_noAnswer .mx_LegacyCallEvent_type_icon::before {
                    -webkit-mask-image: url(../../img/element-icons/call/hangup.9ca0556.svg);
                            mask-image: url(../../img/element-icons/call/hangup.9ca0556.svg);
                }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_video .mx_LegacyCallEvent_type_icon::before,
            .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_video .mx_LegacyCallEvent_content_button_callBack span::before,
            .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_video .mx_LegacyCallEvent_content_button_answer span::before {
                -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
                        mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
            }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_video.mx_LegacyCallEvent_rejected .mx_LegacyCallEvent_type_icon::before, .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_video.mx_LegacyCallEvent_noAnswer .mx_LegacyCallEvent_type_icon::before {
                    -webkit-mask-image: url(../../img/voip/declined-video.8277dd8.svg);
                            mask-image: url(../../img/voip/declined-video.8277dd8.svg);
                }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_missed.mx_LegacyCallEvent_voice .mx_LegacyCallEvent_type_icon::before {
                    -webkit-mask-image: url(../../img/voip/missed-voice.ede6ea7.svg);
                            mask-image: url(../../img/voip/missed-voice.ede6ea7.svg);
                }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_missed.mx_LegacyCallEvent_video .mx_LegacyCallEvent_type_icon::before {
                    -webkit-mask-image: url(../../img/voip/missed-video.e4a422f.svg);
                            mask-image: url(../../img/voip/missed-video.e4a422f.svg);
                }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_info {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: horizontal;
            -webkit-box-direction: normal;
                -ms-flex-direction: row;
                    flex-direction: row;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            width: -webkit-fit-content;
            width: -moz-fit-content;
            width: fit-content;
            max-width: 100%;
        }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_info .mx_LegacyCallEvent_info_basic {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-orient: vertical;
                -webkit-box-direction: normal;
                    -ms-flex-direction: column;
                        flex-direction: column;
                grid-gap: 4px;
                gap: 4px;
                margin-left: 10px; /* To match mx_LegacyCallEvent */
                margin-right: 10px;
                min-width: 0;
            }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_info .mx_LegacyCallEvent_info_basic .mx_LegacyCallEvent_sender {
                    font-weight: 600;
                    font-weight: var(--font-semi-bold);
                    font-size: 1.5rem;
                    line-height: 1.8rem;
                    margin-bottom: 4px;

                    overflow: hidden;
                    white-space: nowrap;
                    text-overflow: ellipsis;
                }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_info .mx_LegacyCallEvent_info_basic .mx_LegacyCallEvent_type {
                    display: -webkit-box;
                    display: -ms-flexbox;
                    display: flex;
                    -webkit-box-align: center;
                        -ms-flex-align: center;
                            align-items: center;
                    font-weight: 400;
                    color: #a9b2bc;
                    font-size: 1.2rem;
                    line-height: 1.3rem;
                }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_info .mx_LegacyCallEvent_info_basic .mx_LegacyCallEvent_type .mx_LegacyCallEvent_type_icon {
                        height: 13px;
                        width: 13px;
                        margin-right: 5px;
                    }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_info .mx_LegacyCallEvent_info_basic .mx_LegacyCallEvent_type .mx_LegacyCallEvent_type_icon::before {
                            content: "";
                            position: absolute;
                            height: 13px;
                            width: 13px;
                            background-color: #a9b2bc;
                            -webkit-mask-repeat: no-repeat;
                                    mask-repeat: no-repeat;
                            -webkit-mask-size: contain;
                                    mask-size: contain;
                        }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_content {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -ms-flex-wrap: wrap;
                flex-wrap: wrap;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            color: #a9b2bc;
            font-size: 1.2rem;
            grid-gap: 12px;
            gap: 12px; /* See mx_IncomingLegacyCallToast_buttons */
            -webkit-margin-start: 42px;
                    margin-inline-start: 42px; /* avatar (32px) + mx_LegacyCallEvent_info_basic margin (10px) */
            word-break: break-word;
            max-width: -webkit-fit-content;
            max-width: -moz-fit-content;
            max-width: fit-content;
        }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_content .mx_LegacyCallEvent_content_button {
                -webkit-box-sizing: border-box;
                        box-sizing: border-box;
                font-weight: 600;
                font-weight: var(--font-semi-bold);
                height: 2.4rem;
                line-height: 2.4rem;
                margin-right: 0;
            }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_content .mx_LegacyCallEvent_content_button span {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_content .mx_LegacyCallEvent_content_button span::before {
            content: "";
            display: inline-block;
            background-color: #ffffff;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            margin-right: 8px;
        }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_content .mx_LegacyCallEvent_content_button {
                padding: 0 12px;
                font-size: inherit;
}

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_content .mx_LegacyCallEvent_content_button span::before {
                    -webkit-mask-size: 16px;
                            mask-size: 16px;
                    width: 16px;
                    height: 16px;
                    -ms-flex-negative: 0;
                        flex-shrink: 0;
                }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_content .mx_LegacyCallEvent_content_button_reject span::before {
                    -webkit-mask-image: url(../../img/element-icons/call/hangup.9ca0556.svg);
                            mask-image: url(../../img/element-icons/call/hangup.9ca0556.svg);
                }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent .mx_LegacyCallEvent_content .mx_LegacyCallEvent_content_tooltip {
                margin-right: 5px;
            }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_narrow {
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            -webkit-box-align: unset;
                -ms-flex-align: unset;
                    align-items: unset;
            grid-gap: 4px 16px;
            gap: 4px 16px;
            height: unset;
            min-width: 290px;
        }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_narrow .mx_LegacyCallEvent_iconButton {
                position: absolute;
                margin-right: 0;
                top: 12px;
                right: 12px;
                height: 16px;
                width: 16px;
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
            }

.mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_narrow .mx_LegacyCallEvent_info {
                -webkit-box-align: unset;
                    -ms-flex-align: unset;
                        align-items: unset;
            }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_e2eIcon + .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent {
            position: relative;

            /* 5px (gap) + 14px (e2e icon size * mask-size) + 9px (margin-left of e2e icon) */
            right: calc(5px + 14px + 9px);
        }

.mx_EventTile_leftAlignedBubble .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent.mx_LegacyCallEvent_narrow {
                grid-gap: 8px 4px;
                gap: 8px 4px;
            }

.mx_IRCLayout .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent {
            -webkit-margin-start: 4px;
                    margin-inline-start: 4px; /* display green line */
        }

/*
Copyright 2017 Vector Creations Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MEmoteBody {
    white-space: pre-wrap;
}

.mx_MEmoteBody_sender {
    cursor: pointer;
}

/*
Copyright 2015 - 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MFileBody_download {
    color: #0dbd8b;
}

.mx_MFileBody_download .mx_MFileBody_download_icon {
        /* 12px instead of 14px to better match surrounding font size */
        width: 12px;
        height: 12px;
        -webkit-mask-size: 12px;
                mask-size: 12px;

        -webkit-mask-position: center;

                mask-position: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-image: url(../../img/download.a6b50e0.svg);
                mask-image: url(../../img/download.a6b50e0.svg);
        background-color: #0dbd8b;
        display: inline-block;
    }

.mx_MFileBody_download a {
    color: #0dbd8b;
    text-decoration: none;
    cursor: pointer;
}

.mx_MFileBody_download object {
    margin-left: -16px;
    padding-right: 4px;
    margin-top: -4px;
    vertical-align: middle;
    pointer-events: none;
}

/* Remove the border and padding for iframes for download links. */

.mx_MFileBody_download iframe {
    margin: 0px;
    padding: 0px;
    border: none;
    width: 100%;
    /* Set the height of the iframe to be 1 line of text.
     * Iframes don't automatically size themselves to fit their content.
     * So either we have to fix the height of the iframe using CSS or
     * use javascript's cross-origin postMessage API to communicate how
     * big the content of the iframe is. */
    height: 1.5em;
}

.mx_MFileBody_info {
    cursor: pointer;
}

.mx_MFileBody_info .mx_MFileBody_info_icon {
        background-color: #21262c;
        border-radius: 20px;
        display: inline-block;
        width: 32px;
        height: 32px;
        position: relative;
        vertical-align: middle;
        margin-right: 12px;
    }

.mx_MFileBody_info .mx_MFileBody_info_icon::before {
            content: "";
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: cover;
                    mask-size: cover;
            -webkit-mask-image: url(../../img/element-icons/room/composer/attach.faa1eed.svg);
                    mask-image: url(../../img/element-icons/room/composer/attach.faa1eed.svg);
            background-color: #a9b2bc;
            width: 15px;
            height: 15px;

            position: absolute;
            top: 8px;
            left: 8px;
        }

.mx_MFileBody_info .mx_MFileBody_info_filename {
        text-overflow: ellipsis;
        overflow: hidden;
        white-space: nowrap;
        display: inline-block;
        width: calc(100% - 32px - 12px); /* 32px icon, 12px margin on the icon */
        vertical-align: middle;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MImageBody_banner {
    position: absolute;
    bottom: 4px;
    left: 4px;
    padding: 4px;
    border-radius: 8px;
    border-radius: var(--MBody-border-radius);
    font-size: 1.5rem;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none; /* prevent banner text from being selected */
    pointer-events: none; /* let the cursor go through to the media underneath */

    /* Trying to match the width of the image is surprisingly difficult, so arbitrarily break it off early. */
    max-width: min(100%, 350px);

    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;

    /* Hardcoded colours because it's the same on all themes */
    background-color: rgba(0, 0, 0, 0.6);
    color: #ffffff;
}

.mx_MImageBody_placeholder {
    /* Position the placeholder on top of the thumbnail, so that the reveal animation can work */
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: 100%;

    background-color: #15191e;
}

.mx_MImageBody_placeholder .mx_Blurhash > canvas {
        -webkit-animation: mx--anim-pulse 1.75s infinite cubic-bezier(0.4, 0, 0.6, 1);
                animation: mx--anim-pulse 1.75s infinite cubic-bezier(0.4, 0, 0.6, 1);
    }

.mx_MImageBody_thumbnail_container {
    border-radius: 8px;
    border-radius: var(--MBody-border-radius);

    /* Necessary for the border radius to apply correctly to the placeholder */
    overflow: hidden;
    contain: paint;
}

.mx_MImageBody_thumbnail {
    display: block;

    /* Force the image to be the full size of the container, even if the */
    /* pixel size is smaller. The problem here is that we don't know what */
    /* thumbnail size the HS is going to give us, but we have to commit to */
    /* a container size immediately and not change it when the image loads */
    /* or we'll get a scroll jump (or have to leave blank space). */
    /* This will obviously result in an upscaled image which will be a bit */
    /* blurry. The best fix would be for the HS to advertise what size thumbnails */
    /* it guarantees to produce. */
    height: 100%;
    width: 100%;
}

.mx_MImageBody_gifLabel {
    position: absolute;
    display: block;
    top: 0px;
    left: 14px;
    padding: 5px;
    border-radius: 5px;
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid rgba(0, 0, 0, 0.2);
    color: #ffffff;
    pointer-events: none;
}

.mx_HiddenImagePlaceholder {
    position: absolute;
    inset: 0;

    /* To center the text in the middle of the frame */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    text-align: center;

    cursor: pointer;
    background-color: #20252b;
}

.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button {
        color: #0dbd8b;
    }

.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span.mx_HiddenImagePlaceholder_eye {
            margin-right: 8px;

            background-color: #0dbd8b;
            -webkit-mask-image: url(../../img/feather-customised/eye.15b36db.svg);
                    mask-image: url(../../img/feather-customised/eye.15b36db.svg);
            display: inline-block;
            width: 18px;
            height: 14px;
        }

.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span:not(.mx_HiddenImagePlaceholder_eye) {
            vertical-align: text-bottom;
        }

.mx_EventTile:hover .mx_HiddenImagePlaceholder {
    background-color: #15191e;
}

/*
Copyright 2020 Tulir Asokan <tulir@maunium.net>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MImageReplyBody {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-column-gap: 4px;
    -webkit-column-gap: 4px;
       -moz-column-gap: 4px;
            column-gap: 4px;
}

.mx_MImageReplyBody .mx_MImageBody_thumbnail_container {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        min-width: 0; /* Prevent a blowout */
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EventTileBubble.mx_MJitsiWidgetEvent::before {
        background-color: #b9bec6; /* XXX: Variable abuse */
        -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
                mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MLocationBody {
    max-width: 100%;
}

.mx_MLocationBody .mx_MLocationBody_map {
        max-width: 100%;
        width: 450px;
        height: 300px;
        z-index: 0; /* keeps the entire map under the message action bar */

        border-radius: 8px;

        border-radius: var(--MBody-border-radius);
        cursor: pointer;
    }

/* In the timeline, we fit the width of the container */

.mx_EventTile_line .mx_MLocationBody .mx_MLocationBody_map {
    max-width: 450px;
    width: 100%;
}

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line .mx_MLocationBody .mx_MLocationBody_map {
    max-width: 100%;
    width: 450px;
}

.mx_DisambiguatedProfile ~ .mx_MLocationBody {
    margin-top: 6px; /* See: https://github.com/matrix-org/matrix-react-sdk/pull/8442 */
}

.mx_ReplyTile .mx_MLocationBody {
    /* Prevent clicking a location within a reply */
    pointer-events: none;
}

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MNoticeBody {
    white-space: pre-wrap;
    opacity: 0.6;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MPollBody {
    margin-top: 8px;
}

.mx_MPollBody h2 {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.5rem;
        line-height: 2.4rem;
        margin-top: 0;
        margin-bottom: 8px;
    }

.mx_MPollBody h2 .mx_MPollBody_edited {
            color: #b9bec6;
            font-size: 1.2rem;
            opacity: 0.6;
        }

.mx_MPollBody h2::before {
        content: "";
        position: relative;
        display: inline-block;
        margin-right: 12px;
        top: 3px;
        left: 3px;
        height: 20px;
        width: 20px;
        background-color: #a9b2bc;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-image: url(../../img/element-icons/room/composer/poll.6fe3947.svg);
                mask-image: url(../../img/element-icons/room/composer/poll.6fe3947.svg);
    }

.mx_MPollBody .mx_MPollBody_totalVotes {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: inline;
                flex-direction: inline;
        -webkit-box-pack: start;
            -ms-flex-pack: start;
                justify-content: start;
        color: #a9b2bc;
        font-size: 1.2rem;
    }

.mx_MPollBody .mx_MPollBody_totalVotes .mx_Spinner {
            -webkit-box-flex: 0;
                -ms-flex: 0;
                    flex: 0;
            margin-left: 8px;
        }

/* Prevent clicking a poll within a reply */

.mx_ReplyTile .mx_MPollBody {
    pointer-events: none;
}

.mx_MPollBody_allOptions {
    display: grid;
    grid-gap: 16px;
    margin-bottom: 8px;
    max-width: 550px;
}

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MPollEndBody_icon {
    height: 14px;
    margin-right: 8px;
    vertical-align: middle;
    color: #a9b2bc;
}

/*
Copyright 2018 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MStickerBody_wrapper {
    padding: 12px 0px;
}

.mx_MStickerBody_tooltip {
    position: absolute;
    top: 50%;
}

.mx_MStickerBody_hidden {
    max-width: 220px;
    text-decoration: none;
    text-align: center;

    /* To center the text in the middle of the frame */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
}

.mx_MStickerBody_placeholder {
    /* centering */
    position: absolute;
    left: calc(50% - 40px);
    top: calc(50% - 40px);
}

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MTextBody {
    white-space: pre-wrap;
}

/*
Copyright 2020 - 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

span.mx_MVideoBody {
    overflow: hidden;
}

span.mx_MVideoBody .mx_MVideoBody_container {
        border-radius: 8px;
        border-radius: var(--MBody-border-radius);
        overflow: hidden;
    }

span.mx_MVideoBody .mx_MVideoBody_container video {
            height: 100%;
            width: 100%;
        }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* A "media body" is any file upload looking thing, apart from images and videos (they */

/* have unique styles). */

.mx_MediaBody {
    background-color: #394049;
    border-radius: 12px;
    max-width: 243px; /* use max-width instead of width so it fits within right panels */

    color: #a9b2bc;
    font-size: 1.4rem;
    line-height: 2.4rem;

    padding: 6px 12px;
}

/*
Copyright 2019 New Vector Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MessageActionBar {
    --MessageActionBar-size-button: 28px;
    --MessageActionBar-size-box: 32px; /* 28px + 2px (margin) * 2 */
    --MessageActionBar-item-hover-background: rgba(141,151,165, 0.2);
    --MessageActionBar-item-hover-borderRadius: 6px;
    --MessageActionBar-item-hover-zIndex: 1;
    --MessageActionBar-star-button-color: #ffa534;

    position: absolute;
    visibility: hidden;
    cursor: pointer;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    height: var(--MessageActionBar-size-box);
    line-height: 2.4rem;
    border-radius: 8px;
    background: #15191e;
    border: 1px solid rgba(231, 231, 231, 0.2);
    top: -32px;
    right: 8px;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    /* Ensure the action bar appears above other things like the read marker */
    /* and sender avatar (for small screens) */
    z-index: 10;
}

/* react button to its tooltip. */

.mx_MessageActionBar::before {
        content: "";
        position: absolute;
        /* tooltip safe mousing area + tooltip overhang + */
        /* action bar + action bar offset from event */
        width: calc(10px + 48px + 100% + 8px);
        /* safe area + action bar */
        height: calc(20px + 100%);
        top: -12px;
        left: -58px;
        z-index: -1;
        cursor: auto;
        cursor: initial;
    }

/* stylelint-disable-next-line max-line-length */

.mx_GenericEventListSummary[data-layout="bubble"]
            .mx_GenericEventListSummary_toggle
            ~ .mx_GenericEventListSummary_unstyledList
            .mx_EventTile_info:first-of-type
            .mx_MessageActionBar::before {
            /* improve clickability of "collapse" link button on bubble layout by reducing width and height values */
            /* mx_GenericEventListSummary_toggle ~: to apply rules to action bar when "collapse" button is available */
            /* mx_EventTile_info:first-of-type: to apply rules to the info event tile just under "collapse" button */
            /* TODO: use a new class name instead */
            width: 100%;
            height: 100%;
            top: 0;
            left: 0;
        }

.mx_EventTile_info .mx_ViewSourceEvent ~ .mx_MessageActionBar::before {
            /* improve clickability of view source event toggle button by removing vertical safe area */
            width: 100%;
            height: 100%;
            top: 0;
            left: 0;
        }

/* previous event while trying to mouse into the action bar or from the */

.mx_MessageActionBar > * {
        white-space: nowrap;
        display: inline-block;
        position: relative;
        margin: 2px;
    }

.mx_MessageActionBar > *:hover {
            background: var(--MessageActionBar-item-hover-background);
            border-radius: var(--MessageActionBar-item-hover-borderRadius);
            z-index: var(--MessageActionBar-item-hover-zIndex);
        }

/* Adds a previous event safe area so that you can't accidentally hover the */

.mx_MessageActionBar .mx_MessageActionBar_iconButton {
        --MessageActionBar-icon-size: 18px;
        width: var(--MessageActionBar-size-button);
        height: var(--MessageActionBar-size-button);
        color: #a9b2bc;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_MessageActionBar .mx_MessageActionBar_iconButton svg {
            height: var(--MessageActionBar-icon-size);
            width: var(--MessageActionBar-icon-size);
            -webkit-box-flex: 0;
                -ms-flex: 0 0 var(--MessageActionBar-icon-size);
                    flex: 0 0 var(--MessageActionBar-icon-size);
        }

.mx_MessageActionBar .mx_MessageActionBar_iconButton:disabled,
        .mx_MessageActionBar .mx_MessageActionBar_iconButton[disabled] {
            cursor: not-allowed;
            opacity: 0.75;
        }

.mx_MessageActionBar .mx_MessageActionBar_iconButton:hover {
            color: #ffffff;
        }

.mx_MessageActionBar .mx_MessageActionBar_iconButton.mx_MessageActionBar_favouriteButton_fillstar {
            color: var(--MessageActionBar-star-button-color);
        }

.mx_MessageActionBar .mx_MessageActionBar_iconButton.mx_MessageActionBar_downloadButton {
            --MessageActionBar-icon-size: 14px;
        }

.mx_MessageActionBar .mx_MessageActionBar_iconButton.mx_MessageActionBar_downloadButton.mx_MessageActionBar_downloadSpinnerButton svg {
                    display: none; /* hide the download icon */
                }

.mx_MessageActionBar .mx_MessageActionBar_iconButton.mx_MessageActionBar_expandCollapseMessageButton {
            --MessageActionBar-icon-size: 12px;
        }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

:root {
    --MessageTimestamp-width: 46px; /* 8 + 30 (avatar) + 8 */
    --MessageTimestamp-max-width: 80px;
    --MessageTimestamp-color: #b9bec6;
}

.mx_MessageTimestamp {
    color: #b9bec6;
    color: var(--MessageTimestamp-color);
    font-size: 1rem;
    -webkit-font-feature-settings: "tnum";
            font-feature-settings: "tnum";
    font-variant-numeric: tabular-nums;
    display: block; /* enable the width setting below */
    width: 46px;
    width: var(--MessageTimestamp-width);
    white-space: nowrap;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MjolnirBody {
    opacity: 0.4;
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ReactionsRow {
    margin: 6px 0;
    color: #ffffff;
}

.mx_ReactionsRow .mx_ReactionsRow_addReactionButton {
        position: relative;
        display: inline-block;
        visibility: hidden; /* show on hover of the .mx_EventTile */
        width: 24px;
        height: 24px;
        vertical-align: middle;
        margin-left: 4px;
        margin-right: 4px;
    }

.mx_ReactionsRow .mx_ReactionsRow_addReactionButton::before {
            content: "";
            position: absolute;
            height: 100%;
            width: 100%;
            -webkit-mask-size: 16px;
                    mask-size: 16px;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-position: center;
                    mask-position: center;
            background-color: #8e99a4;
            -webkit-mask-image: url(../../img/element-icons/room/message-bar/emoji.97e3e33.svg);
                    mask-image: url(../../img/element-icons/room/message-bar/emoji.97e3e33.svg);
        }

.mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active {
            visibility: visible; /* keep showing whilst the context menu is shown */
        }

.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:hover::before, .mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active::before {
                background-color: #ffffff;
            }

.mx_EventTile:hover .mx_ReactionsRow_addReactionButton {
    visibility: visible;
}

.mx_ReactionsRow_showAll {
    color: #8e99a4;
}

.mx_ReactionsRow_showAll.mx_AccessibleButton_kind_link_inline {
        font-size: 1.2rem;
        line-height: 2rem;
        -webkit-margin-start: 4px;
                margin-inline-start: 4px;
        vertical-align: middle;
    }

.mx_ReactionsRow_showAll.mx_AccessibleButton_kind_link_inline:hover {
            color: #ffffff;
        }

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ReactionsRowButton {
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    line-height: 2rem;
    padding: 1px 6px;
    border: 1px solid #616b7f;
    border-radius: 10px;
    background-color: #20252b;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}

.mx_ReactionsRowButton:hover {
        border-color: #b9bec6;
    }

.mx_ReactionsRowButton.mx_ReactionsRowButton_selected {
        background-color: #1f6954;
        border-color: #0dbd8b;
    }

.mx_ReactionsRowButton.mx_AccessibleButton_disabled {
        cursor: not-allowed;
    }

.mx_ReactionsRowButton .mx_ReactionsRowButton_content {
        max-width: 100px;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        padding-right: 4px;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RedactedBody {
    white-space: pre-wrap;
    color: #91a1c0;
    vertical-align: middle;

    padding-left: 20px;
    position: relative;
}

.mx_RedactedBody::before {
        height: 14px;
        width: 14px;
        background-color: #91a1c0;
        -webkit-mask-image: url(../../img/feather-customised/trash.custom.cce34e6.svg);
                mask-image: url(../../img/feather-customised/trash.custom.cce34e6.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
        content: "";
        position: absolute;
        top: 1px;
        left: 0;
    }

/*
Copyright 2017 Vector Creations Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomAvatarEvent {
    opacity: 0.5;
    overflow-y: hidden;
}

.mx_RoomAvatarEvent_avatar {
    display: inline;
    position: relative;
    top: 5px;
}

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_TextualEvent {
    opacity: 0.5;
    overflow-y: hidden;
    line-height: normal;
}

.mx_TextualEvent a {
        color: #0dbd8b;
        cursor: pointer;
    }

.mx_RoomView_searchResultsPanel .mx_TextualEvent {
        opacity: unset; /* Unset the opacity value specified above on the search results panel */
    }

/*
Copyright 2015, 2016 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UnknownBody {
    white-space: pre-wrap;
}

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EventTile_content.mx_ViewSourceEvent {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    opacity: 0.6;
    font-size: 1.2rem;
    width: 100%;
    overflow-x: auto; /* Cancel overflow setting of .mx_EventTile_content */
    line-height: normal;
}

/* Align with avatar and E2E icon */

.mx_EventTile_content.mx_ViewSourceEvent pre,
    .mx_EventTile_content.mx_ViewSourceEvent code {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
    }

.mx_EventTile_content.mx_ViewSourceEvent pre {
        line-height: 1.2;
        margin: 3.5px 0;
    }

.mx_EventTile_content.mx_ViewSourceEvent .mx_ViewSourceEvent_toggle {
        --ViewSourceEvent_toggle-size: 12px;

        visibility: hidden;
        /* override styles from AccessibleButton */
        border-radius: 0;
        /* icon */
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: 0 center;
                mask-position: 0 center;
        -webkit-mask-size: auto var(--ViewSourceEvent_toggle-size);
                mask-size: auto var(--ViewSourceEvent_toggle-size);
        width: var(--ViewSourceEvent_toggle-size);
        min-width: var(--ViewSourceEvent_toggle-size);
        background-color: #0dbd8b;
        -webkit-mask-image: url(../../img/element-icons/maximise-expand.c0495d2.svg);
                mask-image: url(../../img/element-icons/maximise-expand.c0495d2.svg);
    }

.mx_EventTile:hover .mx_EventTile_content.mx_ViewSourceEvent .mx_ViewSourceEvent_toggle {
            visibility: visible;
        }

.mx_EventTile_content.mx_ViewSourceEvent.mx_ViewSourceEvent_expanded .mx_ViewSourceEvent_toggle {
        -ms-flex-item-align: end;
            align-self: flex-end;
        height: var(--ViewSourceEvent_toggle-size);
        -webkit-mask-position: 0 bottom;
                mask-position: 0 bottom;
        margin-bottom: 5px;
        -webkit-mask-image: url(../../img/element-icons/minimise-collapse.f7c74eb.svg);
                mask-image: url(../../img/element-icons/minimise-collapse.f7c74eb.svg);
    }

/*
Copyright 2019, 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EventTileBubble.mx_cryptoEvent {
    margin: var(--EventTileBubble_margin-block) auto;
}

/* white infill for the transparency */

.mx_EventTileBubble.mx_cryptoEvent.mx_cryptoEvent_icon::before {
        background-color: #ffffff;
        -webkit-mask-image: url(../../img/e2e/normal.33e0430.svg);
                mask-image: url(../../img/e2e/normal.33e0430.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: 80%;
                mask-size: 80%;
    }

.mx_EventTileBubble.mx_cryptoEvent.mx_cryptoEvent_icon::after {
        -webkit-mask-image: url(../../img/e2e/normal.33e0430.svg);
                mask-image: url(../../img/e2e/normal.33e0430.svg);
        background-color: #b9bec6;
    }

.mx_EventTileBubble.mx_cryptoEvent.mx_cryptoEvent_icon_verified::after {
        -webkit-mask-image: url(../../img/e2e/verified.315cfad.svg);
                mask-image: url(../../img/e2e/verified.315cfad.svg);
        background-color: #0dbd8b;
    }

.mx_EventTileBubble.mx_cryptoEvent.mx_cryptoEvent_icon_warning::after {
        -webkit-mask-image: url(../../img/e2e/warning.d370b49.svg);
                mask-image: url(../../img/e2e/warning.d370b49.svg);
        background-color: #ff5b55;
    }

.mx_EventTileBubble.mx_cryptoEvent .mx_cryptoEvent_state,
    .mx_EventTileBubble.mx_cryptoEvent .mx_cryptoEvent_buttons {
        grid-column: 3;
        grid-row: 1 / 3;
    }

.mx_EventTileBubble.mx_cryptoEvent .mx_cryptoEvent_buttons {
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        grid-gap: 5px;
        gap: 5px;
    }

.mx_EventTileBubble.mx_cryptoEvent .mx_cryptoEvent_state {
        width: 130px;
        padding: 10px 20px;
        margin: auto 0;
        text-align: center;
        color: #8e99a4;
        overflow-wrap: break-word;
        font-size: 1.2rem;
    }

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PollHistory_content {
    height: 600px;
    width: 100%;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_PollHistory_header.mx_Heading_h2 {
    margin-bottom: 16px;
}

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PollHistoryList {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-flex: 1;
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
    max-height: 100%;
}

.mx_PollHistoryList_list {
    overflow: auto;
    list-style: none;
    margin-block: 0;
    padding-inline: 0;
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
    -ms-flex-line-pack: start;
        align-content: flex-start;
    display: grid;
    grid-gap: 20px;
    padding-right: 64px;
    margin: 32px 0;
}

.mx_PollHistoryList_list.mx_PollHistoryList_list_ENDED {
        grid-gap: 32px;
    }

.mx_PollHistoryList_noResults {
    height: 100%;
    width: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    padding: 0 64px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    text-align: center;

    line-height: 2.4rem;
    color: #a9b2bc;
}

.mx_PollHistoryList_noResults .mx_PollHistoryList_loadMorePolls {
        margin-top: 16px;
    }

.mx_PollHistoryList_loading {
    color: #a9b2bc;
    text-align: center;

    /* center in all free space*/
}

/* when there are no results*/

.mx_PollHistoryList_loading.mx_PollHistoryList_noResultsYet {
        margin: auto auto;
    }

.mx_PollHistoryList_loadMorePolls {
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
}

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BaseCard {
    --BaseCard_padding-inline: 8px;
    --BaseCard_EventTile_line-padding-block: 2px;
    --BaseCard_EventTile-spacing-inline: 36px;
    --BaseCard_header-button-size: 24px;

    padding: 0 var(--BaseCard_padding-inline);
    overflow: hidden;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
}

.mx_BaseCard .mx_BaseCard_header {
        --BaseCard_header_button-margin: 12px;

        margin: 4px 0 12px;
    }

.mx_BaseCard .mx_BaseCard_header > h2 {
            margin: 0 44px;
            font-size: 1.8rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back,
        .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close {
            position: absolute;
            background-color: rgba(141, 151, 165, 0.2);
            width: var(--BaseCard_header-button-size);
            height: var(--BaseCard_header-button-size);
            margin: var(--BaseCard_header_button-margin);
            top: 0;
            border-radius: 50%;
        }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back::before, .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close::before {
                content: "";
                position: absolute;
                height: inherit;
                width: inherit;
                top: 0;
                left: 0;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                background-color: #b9bec6;
            }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back {
            left: 0;
            -webkit-margin-start: calc(var(--BaseCard_header_button-margin) - 4px);
                    margin-inline-start: calc(var(--BaseCard_header_button-margin) - 4px);
        }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back::before {
                -webkit-transform: rotate(90deg);
                        transform: rotate(90deg);
                -webkit-mask-size: 22px;
                        mask-size: 22px;
                -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                        mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
            }

/* Header title with the back button */

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back ~ .mx_BaseCard_header_title {
                width: calc(100% - 60px);
                -webkit-margin-start: var(--BaseCard_header-button-size);
                        margin-inline-start: var(--BaseCard_header-button-size);
            }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back ~ .mx_BaseCard_header_title .mx_BaseCard_header_title_heading {
                    -webkit-margin-start: 6px;
                            margin-inline-start: 6px;
                }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close {
            right: 0;
            -webkit-margin-end: calc(var(--BaseCard_header_button-margin) - 4px);
                    margin-inline-end: calc(var(--BaseCard_header_button-margin) - 4px);
        }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close::before {
                -webkit-mask-image: url(../../img/icons-close.dbfb7ae.svg);
                        mask-image: url(../../img/icons-close.dbfb7ae.svg);
                -webkit-mask-size: 8px;
                        mask-size: 8px;
            }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_header_title {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: justify;
                -ms-flex-pack: justify;
                    justify-content: space-between;
            width: calc(100% - 38px);
            height: 24px;
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
        }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_header_title .mx_BaseCard_header_title_heading {
                color: #a9b2bc;
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
            }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_header_title .mx_BaseCard_header_title_button--option {
                position: relative;
                width: var(--BaseCard_header-button-size);
                height: var(--BaseCard_header-button-size);
            }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_header_title .mx_BaseCard_header_title_button--option::after {
                    content: "";
                    position: absolute;
                    inset-block-start: 0;
                    inset-inline-start: 0;
                    height: 100%;
                    width: 100%;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-image: url(../../img/element-icons/message/overflow-large.dcd9747.svg);
                            mask-image: url(../../img/element-icons/message/overflow-large.dcd9747.svg);
                    background-color: #a9b2bc;
                }

.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_header_title .mx_BaseCard_header_title_button--option:hover::after {
                    background-color: #ffffff;
                }

.mx_BaseCard .mx_AutoHideScrollbar {
        /* collapse the margin into a padding to move the scrollbar into the right gutter */
        margin-right: -8px;
        padding-right: 8px;
        min-height: 0;
        width: 100%;
        height: 100%;
    }

.mx_BaseCard .mx_BaseCard_Group {
        margin: 20px 0 16px;
    }

.mx_BaseCard .mx_BaseCard_Group > * {
            margin-left: 12px;
            margin-right: 12px;
        }

.mx_BaseCard .mx_BaseCard_Group > h2 {
            color: #8e99a4;
            font-size: 1.2rem;
            font-weight: 500;
            margin: 12px;
        }

.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button {
            padding: 10px;
            -webkit-padding-start: 12px;
                    padding-inline-start: 12px;
            margin: 0;
            position: relative;
            font-size: 1.3rem;
            height: 20px;
            line-height: 20px;
            border-radius: 8px;
            overflow: hidden;
            white-space: nowrap;
            text-overflow: ellipsis;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
        }

.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button .mx_BaseCard_Button_sublabel {
                color: #8e99a4;
                margin-left: auto;
            }

.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:hover {
                background-color: rgba(141, 151, 165, 0.1);
            }

.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled {
                padding-right: 12px;
            }

.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled::after {
                    content: unset;
                }

.mx_BaseCard .mx_BaseCard_footer {
        padding-top: 4px;
        text-align: center;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-pack: distribute;
            justify-content: space-around;
    }

.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_kind_secondary {
            color: #a9b2bc;
            background-color: rgba(141, 151, 165, 0.2);
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            font-size: 1.4rem;
        }

.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_disabled {
            cursor: not-allowed;
        }

.mx_FilePanel.mx_BaseCard, .mx_UserInfo.mx_BaseCard, .mx_MemberList.mx_BaseCard {
        padding: 32px 0 0;
    }

.mx_FilePanel.mx_BaseCard .mx_AutoHideScrollbar, .mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar, .mx_MemberList.mx_BaseCard .mx_AutoHideScrollbar {
            margin-right: unset;
            padding-right: unset;
        }

.mx_ContextualMenu_wrapper.mx_BaseCard_header_title .mx_ContextualMenu {
        position: static;
        position: initial;
    }

.mx_ContextualMenu_wrapper.mx_BaseCard_header_title .mx_ContextualMenu span:first-of-type {
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            font-size: inherit;
            color: #ffffff;
        }

.mx_ContextualMenu_wrapper.mx_BaseCard_header_title .mx_ContextualMenu {

        font-size: 1.2rem;
        color: #a9b2bc;
        padding-top: 10px;
        padding-bottom: 10px;

        border: 1px solid #394049;
        -webkit-box-shadow: 0px 1px 3px rgba(23, 25, 28, 0.05);
                box-shadow: 0px 1px 3px rgba(23, 25, 28, 0.05);
}

.mx_ContextualMenu_wrapper.mx_BaseCard_header_title .mx_ContextualMenu_chevron_top {
        left: auto;
        right: 22px;
        border-bottom-color: #394049;
    }

.mx_ContextualMenu_wrapper.mx_BaseCard_header_title .mx_ContextualMenu_chevron_top::after {
            content: "";
            border: inherit;
            border-bottom-color: #20252b;
            position: absolute;
            top: 1px;
            left: -8px;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EncryptionInfo_spinner .mx_Spinner {
        margin-top: 25px;
        margin-bottom: 15px;
    }

.mx_EncryptionInfo_spinner {

    text-align: center;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty_wrapper {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        height: 100%;
    }

.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty_wrapper .mx_PinnedMessagesCard_empty {
            height: -webkit-max-content;
            height: -moz-max-content;
            height: max-content;
            text-align: center;
            margin: auto 40px;
        }

.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty_wrapper .mx_PinnedMessagesCard_empty .mx_PinnedMessagesCard_MessageActionBar {
                pointer-events: none;
                width: -webkit-max-content;
                width: -moz-max-content;
                width: max-content;
                margin: 0 auto;

                /* Cancel the default values for non-interactivity */
                position: unset;
                visibility: visible;
                cursor: unset;
            }

.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty_wrapper .mx_PinnedMessagesCard_empty .mx_PinnedMessagesCard_MessageActionBar::before {
                    content: unset;
                }

.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty_wrapper .mx_PinnedMessagesCard_empty .mx_PinnedMessagesCard_MessageActionBar .mx_MessageActionBar_optionsButton {
                    background: var(--MessageActionBar-item-hover-background);
                    border-radius: var(--MessageActionBar-item-hover-borderRadius);
                    z-index: var(--MessageActionBar-item-hover-zIndex);
                    color: #ffffff;
                }

.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty_wrapper .mx_PinnedMessagesCard_empty .mx_PinnedMessagesCard_empty_header {
                color: #ffffff;
                margin-block: 24px 20px;
            }

.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty_wrapper .mx_PinnedMessagesCard_empty > span {
                font-size: 1.2rem;
                line-height: 1.5rem;
                color: #a9b2bc;
            }

.mx_PinnedMessagesCard .mx_EventTile_body {
        word-break: break-word;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomSummaryCard .mx_BaseCard_header {
        text-align: center;
        margin-top: 20px;
    }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_roomName,
        .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias {
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            white-space: pre-wrap;
            overflow: hidden;
        }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_roomName {
            margin: 12px 0 4px;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
        }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias {
            font-size: 1.3rem;
            color: #a9b2bc;
            text-overflow: ellipsis;
        }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar {
            display: -webkit-inline-box;
            display: -ms-inline-flexbox;
            display: inline-flex;
        }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee {
                display: inline-block;
                position: relative;
                width: 54px;
                height: 54px;
                border-radius: 50%;
                background-color: #737d8c;
                margin-top: -3px; /* alignment */
                margin-left: -10px; /* overlap */
                border: 3px solid #20252b;
            }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee::before {
                    content: "";
                    position: absolute;
                    top: 13px;
                    left: 13px;
                    height: 28px;
                    width: 28px;
                    -webkit-mask-size: cover;
                            mask-size: cover;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-image: url(../../img/e2e/disabled.c080ddd.svg);
                            mask-image: url(../../img/e2e/disabled.c080ddd.svg);
                    background-color: #ffffff;
                }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal {
                background-color: #424446;
            }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal::before {
                    -webkit-mask-image: url(../../img/e2e/normal.33e0430.svg);
                            mask-image: url(../../img/e2e/normal.33e0430.svg);
                }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified {
                background-color: #0dbd8b;
            }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified::before {
                    -webkit-mask-image: url(../../img/e2e/verified.315cfad.svg);
                            mask-image: url(../../img/e2e/verified.315cfad.svg);
                }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning {
                background-color: #ff5b55;
            }

.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning::before {
                    -webkit-mask-image: url(../../img/e2e/warning.d370b49.svg);
                            mask-image: url(../../img/e2e/warning.d370b49.svg);
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button {
            padding-left: 44px;
        }

.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button::before {
                content: "";
                position: absolute;
                top: 8px;
                left: 10px;
                height: 24px;
                width: 24px;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                background-color: #8e99a4;
            }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button {
            /* this button is special so we have to override some of the original styling */
            /* as we will be applying it in its children */
            padding: 0;
            height: auto;
            color: #8e99a4;
        }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app {
                padding: 10px 48px 10px 12px; /* based on typical mx_RoomSummaryCard_Button padding */
                text-overflow: ellipsis;
                overflow: hidden;
            }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app .mx_BaseAvatar_image {
                    vertical-align: top;
                    margin-right: 12px;
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app span {
                    color: #ffffff;
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle,
            .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_maximiseToggle,
            .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options {
                position: absolute;
                top: 0;
                height: 100%; /* to give bigger interactive zone */
                width: 24px;
                padding: 12px 4px;
                -webkit-box-sizing: border-box;
                        box-sizing: border-box;
                min-width: 24px;
            }

/* prevent flexbox crushing */

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:hover::after, .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_maximiseToggle:hover::after, .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:hover::after {
                        content: "";
                        position: absolute;
                        height: 24px;
                        width: 24px;
                        top: 8px; /* equal to padding-top of parent */
                        left: 0;
                        border-radius: 12px;
                        background-color: rgba(141, 151, 165, 0.1);
                    }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle::before, .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_maximiseToggle::before, .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options::before {
                    content: "";
                    position: absolute;
                    height: 16px;
                    width: 16px;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-size: 16px;
                            mask-size: 16px;
                    background-color: #8e99a4;
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle {
                right: 8px;
            }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle::before {
                    -webkit-mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
                            mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_maximiseToggle {
                right: 32px;
            }

/* 24 + 8 */

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_maximiseToggle::before {
                    -webkit-mask-size: 14px;
                            mask-size: 14px;
                    -webkit-mask-image: url(../../img/element-icons/maximise-expand.c0495d2.svg);
                            mask-image: url(../../img/element-icons/maximise-expand.c0495d2.svg);
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options {
                right: 56px; /* 2*24 + 8 */
                display: none;
            }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options::before {
                    -webkit-mask-image: url(../../img/element-icons/room/ellipsis.00cbc80.svg);
                            mask-image: url(../../img/element-icons/room/ellipsis.00cbc80.svg);
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned::after {
                    opacity: 0.2;
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned .mx_RoomSummaryCard_app_pinToggle::before {
                    background-color: #0dbd8b;
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_maximised::after {
                    opacity: 0.2;
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_maximised .mx_RoomSummaryCard_app_maximiseToggle::before {
                    background-color: #0dbd8b;
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_icon_app {
                    padding-right: 72px;
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_app_options {
                    display: unset;
                }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button::before {
                content: unset;
            }

.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button::after {
                top: 8px; /* re-align based on the height change */
                pointer-events: none; /* pass through to the real button */
            }

.mx_RoomSummaryCard .mx_AccessibleButton_kind_link {
        margin-top: 12px;
        margin-bottom: 12px;
        font-size: 1.3rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_RoomSummaryCard_icon_people::before {
    -webkit-mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
            mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
}

.mx_RoomSummaryCard_icon_files::before {
    -webkit-mask-image: url(../../img/element-icons/room/files.ee097b4.svg);
            mask-image: url(../../img/element-icons/room/files.ee097b4.svg);
}

.mx_RoomSummaryCard_icon_pins::before {
    -webkit-mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
            mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
}

.mx_RoomSummaryCard_icon_threads::before {
    -webkit-mask-image: url(../../img/element-icons/message/thread.a8dbd69.svg);
            mask-image: url(../../img/element-icons/message/thread.a8dbd69.svg);
}

.mx_RoomSummaryCard_icon_share::before {
    -webkit-mask-image: url(../../img/element-icons/room/share.069290e.svg);
            mask-image: url(../../img/element-icons/room/share.069290e.svg);
}

.mx_RoomSummaryCard_icon_settings::before {
    -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
            mask-image: url(../../img/element-icons/settings.0c529f2.svg);
}

.mx_RoomSummaryCard_icon_export::before {
    -webkit-mask-image: url(../../img/element-icons/export.9b2ed5d.svg);
            mask-image: url(../../img/element-icons/export.9b2ed5d.svg);
}

.mx_RoomSummaryCard_icon_poll::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/poll.6fe3947.svg);
            mask-image: url(../../img/element-icons/room/composer/poll.6fe3947.svg);
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ThreadPanel {
    height: 100px;
    overflow: visible;
}

.mx_ThreadPanel .mx_BaseCard_header .mx_BaseCard_header_title .mx_AccessibleButton {
                font-size: 12px;
                color: #a9b2bc;
            }

.mx_ThreadPanel .mx_BaseCard_header .mx_BaseCard_header_title .mx_ThreadPanel_dropdown {
                padding: 3px 4px 3px 8px;
                border-radius: 4px;
                line-height: 1.5;
                -webkit-user-select: none;
                   -moz-user-select: none;
                    -ms-user-select: none;
                        user-select: none;
            }

.mx_ThreadPanel .mx_BaseCard_header .mx_BaseCard_header_title .mx_ThreadPanel_dropdown:hover,
                .mx_ThreadPanel .mx_BaseCard_header .mx_BaseCard_header_title .mx_ThreadPanel_dropdown[aria-expanded="true"] {
                    background: #394049;
                }

.mx_ThreadPanel .mx_BaseCard_header .mx_BaseCard_header_title .mx_ThreadPanel_dropdown::before {
                    content: "";
                    width: 18px;
                    height: 18px;
                    background: currentColor;
                    -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                            mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                    -webkit-mask-size: 100%;
                            mask-size: 100%;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    float: right;
                }

.mx_ThreadPanel .mx_AutoHideScrollbar,
    .mx_ThreadPanel .mx_RoomView_messagePanelSpinner {
        background-color: #15191e;
        border-radius: 8px;
        -webkit-padding-end: 0;
                padding-inline-end: 0;
        overflow-y: scroll; /* set gap between the thread tile and the right border */
        height: 100%;
    }

.mx_ThreadPanel .mx_EventTile[data-layout="group"] .mx_MessageActionBar {
            right: 0;
            top: -36px; /* 2px above EventTile */
            z-index: 10; /* See _EventTile.pcss */
        }

/* For style rules of EventTile in a thread, see _EventTile.pcss */

.mx_ThreadPanel.mx_ThreadView {
        max-height: 100%;
    }

.mx_ThreadPanel.mx_ThreadView .mx_ThreadView_timelinePanelWrapper {
            position: relative;
            min-height: 0; /* don't displace the composer */
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
        }

.mx_ThreadPanel.mx_ThreadView .mx_ThreadView_timelinePanelWrapper .mx_FileDropTarget {
                border-radius: 8px;
            }

.mx_ThreadPanel.mx_ThreadView .mx_MessageComposer_sendMessage {
            margin-right: 0;
        }

/* Make use of the space above the composer buttons too*/

.mx_ThreadPanel.mx_ThreadView .mx_Autocomplete {
            width: calc(100% + 140px);
        }

.mx_ThreadPanel.mx_ThreadView.mx_ThreadView_narrow .mx_Autocomplete {
            width: calc(100% + 108px);
        }

/* To avoid the rule from being applied to .mx_ThreadPanel_empty */

.mx_ThreadPanel .mx_RoomView_messagePanel .mx_RoomView_messageListWrapper {
            width: calc(100% + 6px); /* 8px - 2px */
        }

.mx_ThreadPanel .mx_RoomView_MessageList {
        -webkit-padding-start: 8px;
                padding-inline-start: 8px;
        -webkit-padding-end: 8px;
                padding-inline-end: 8px;
        content-visibility: visible;
    }

.mx_ThreadPanel .mx_EventTile,
    .mx_ThreadPanel .mx_GenericEventListSummary {
        /* Account for scrollbar when hovering */
        padding-top: 0;
    }

.mx_ThreadPanel .mx_EventTile .mx_DateSeparator, .mx_ThreadPanel .mx_GenericEventListSummary .mx_DateSeparator {
            display: none;
        }

.mx_ThreadPanel .mx_EventTile.mx_EventTile_clamp:hover, .mx_ThreadPanel .mx_GenericEventListSummary.mx_EventTile_clamp:hover {
            cursor: pointer;
        }

.mx_ThreadPanel .mx_MessageComposer {
        background-color: #15191e;
        border-radius: 8px;
        margin-top: 8px;
        padding: 0 8px;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
    }

.mx_ThreadPanel .mx_MessageTimestamp {
        color: #b9bec6;
        color: var(--MessageTimestamp-color); /* TODO: check whether needed or not */
    }

.mx_ThreadPanel .mx_BaseCard_footer {
        text-align: left;
        font-size: 1.2rem;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end;
        grid-gap: 4px;
        gap: 4px;
        position: relative;
        top: 2px;
        padding-right: 8px;
    }

.mx_ThreadPanel .mx_BaseCard_footer .mx_AccessibleButton_kind_link_inline {
            color: #a9b2bc;
        }

.mx_ThreadPanel_viewInRoom::before {
    -webkit-mask-image: url(../../img/element-icons/view-in-room.45779b8.svg);
            mask-image: url(../../img/element-icons/view-in-room.45779b8.svg);
}

.mx_ThreadPanel_copyLinkToThread::before {
    -webkit-mask-image: url(../../img/element-icons/link.3f7cd42.svg);
            mask-image: url(../../img/element-icons/link.3f7cd42.svg);
}

.mx_ThreadPanel_empty {
    border-radius: 8px;
    background: #15191e;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    padding: 20px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box; /* Include padding and border */
    width: 100%;
}

.mx_ThreadPanel_empty h2 {
        color: #ffffff;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.8rem;
        margin-top: 24px;
        margin-bottom: 10px;
    }

.mx_ThreadPanel_empty p {
        font-size: 1.5rem;
        color: #a9b2bc;
        margin: 10px 0;
    }

.mx_ThreadPanel_empty button {
        border: none;
        background: none;
        color: #0dbd8b;
        font-size: 1.5rem;
    }

.mx_ThreadPanel_empty button:hover,
        .mx_ThreadPanel_empty button:active {
            text-decoration: underline;
            cursor: pointer;
        }

.mx_ThreadPanel_empty .mx_ThreadPanel_empty_tip {
        font-size: 1.2rem;
        line-height: 1.5rem;
    }

.mx_ThreadPanel_empty .mx_ThreadPanel_empty_tip > b {
            font-weight: 600;
            font-weight: var(--font-semi-bold);
        }

.mx_ThreadPanel_largeIcon {
    width: 28px;
    height: 28px;
    padding: 18px;
    background: #21262c;
    border-radius: 50%;
}

.mx_ThreadPanel_largeIcon::after {
        content: "";
        display: inline-block;
        -webkit-mask-image: url(../../img/element-icons/thread-summary.1c5653f.svg);
                mask-image: url(../../img/element-icons/thread-summary.1c5653f.svg);
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        height: 18px;
        min-width: 18px;
        background-color: #a9b2bc !important;
        width: inherit;
        height: inherit;
    }

.mx_ContextualMenu_wrapper .mx_ThreadPanel_Header_FilterOptionItem {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        -webkit-box-pack: justify;
            -ms-flex-pack: justify;
                justify-content: space-between;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        padding: 10px 20px 10px 30px;
        position: relative;
    }

.mx_ContextualMenu_wrapper .mx_ThreadPanel_Header_FilterOptionItem:hover {
            background-color: #21262c;
        }

.mx_ContextualMenu_wrapper .mx_ThreadPanel_Header_FilterOptionItem[aria-checked="true"] :first-child {
                margin-left: -20px;
            }

.mx_ContextualMenu_wrapper .mx_ThreadPanel_Header_FilterOptionItem[aria-checked="true"] :first-child::before {
                content: "";
                width: 12px;
                height: 12px;
                margin-right: 8px;
                -webkit-mask-image: url(../../img/feather-customised/check.94da327.svg);
                        mask-image: url(../../img/feather-customised/check.94da327.svg);
                -webkit-mask-size: 100%;
                        mask-size: 100%;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                background-color: #ffffff;
                display: inline-block;
                vertical-align: middle;
            }

.mx_ContextualMenu_wrapper .mx_ThreadPanel_Header_FilterOptionItem :last-child {
            color: #a9b2bc;
        }

/*
Copyright 2021 - 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_TimelineCard .mx_TimelineCard_timeline {
        overflow: hidden;
        position: relative; /* offset parent for jump to bottom button */
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        border-radius: 8px;
    }

.mx_TimelineCard .mx_NewRoomIntro {
        -webkit-margin-start: var(--BaseCard_EventTile-spacing-inline);
                margin-inline-start: var(--BaseCard_EventTile-spacing-inline);
        -webkit-margin-end: var(--BaseCard_EventTile-spacing-inline);
                margin-inline-end: var(--BaseCard_EventTile-spacing-inline);
    }

.mx_TimelineCard .mx_EventTile_content {
        margin-right: 0;
    }

.mx_TimelineCard .mx_EventTile .mx_ThreadSummary {
            position: relative;
            padding-right: 11px;
        }

.mx_TimelineCard .mx_EventTile .mx_ThreadSummary::after {
                content: "";
                display: block;
                position: absolute;
                left: 0;
                bottom: -16px;
                height: 1px;
                width: 100%;
                border-bottom: 1px solid #616b7f;
            }

.mx_TimelineCard .mx_EventTile[data-layout="irc"],
        .mx_TimelineCard .mx_EventTile[data-layout="group"] {
            --TimelineCard_ReadReceiptGroup-inset-block-start: -6px;
        }

.mx_TimelineCard .mx_EventTile[data-layout="irc"].mx_EventTile_info .mx_EventTile_line,
            .mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_EventTile_line,
            .mx_TimelineCard .mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_line,
            .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_EventTile_line {
                padding: var(--BaseCard_EventTile_line-padding-block) var(--BaseCard_EventTile-spacing-inline);
                -webkit-padding-end: 46px;
                        padding-inline-end: 46px;
                -webkit-padding-end: var(--MessageTimestamp-width);
                        padding-inline-end: var(--MessageTimestamp-width);
            }

/* ensure timestamp is not hidden */

.mx_TimelineCard .mx_EventTile[data-layout="irc"].mx_EventTile_info .mx_EventTile_line .mx_EventTile_e2eIcon, .mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_EventTile_e2eIcon, .mx_TimelineCard .mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_line .mx_EventTile_e2eIcon, .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_EventTile_line .mx_EventTile_e2eIcon {
                    inset-inline-start: 8px;
                }

.mx_TimelineCard .mx_EventTile[data-layout="irc"].mx_EventTile_info .mx_EventTile_avatar, .mx_TimelineCard .mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_avatar {
                    inset-inline-start: 18px;
                }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_EventTile_avatar, .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_EventTile_avatar {
                inset-inline-start: -3px;
            }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_EventTile_msgOption, .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_EventTile_msgOption {
                -webkit-margin-end: 0;
                        margin-inline-end: 0;
            }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_EventTile_msgOption .mx_ReadReceiptGroup, .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_EventTile_msgOption .mx_ReadReceiptGroup {
                    top: var(--TimelineCard_ReadReceiptGroup-inset-block-start);
                }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_DisambiguatedProfile,
            .mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_ReactionsRow,
            .mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_ThreadSummary,
            .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_DisambiguatedProfile,
            .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_ReactionsRow,
            .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_ThreadSummary {
                -webkit-margin-start: var(--BaseCard_EventTile-spacing-inline);
                        margin-inline-start: var(--BaseCard_EventTile-spacing-inline);
            }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_DisambiguatedProfile, .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_DisambiguatedProfile {
                max-width: calc(100% - var(--BaseCard_EventTile-spacing-inline)); /* instead of $left-gutter */
            }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_ReplyTile .mx_DisambiguatedProfile, .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_ReplyTile .mx_DisambiguatedProfile {
                -webkit-margin-start: 0;
                        margin-inline-start: 0;
                max-width: unset;
            }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_MessageTimestamp, .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_MessageTimestamp {
                inset-inline: auto 0;
                font-size: 1.2rem;
            }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_ReactionsRow, .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_ReactionsRow {
                /* See: var(--ThreadView_group_spacing-end) for ReactionsRow on _EventTile.pcss */
                -webkit-margin-end: 8px;
                        margin-inline-end: 8px;
            }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_ThreadSummary, .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_ThreadSummary {
                -webkit-margin-end: 0;
                        margin-inline-end: 0;
                max-width: min(calc(100% - 36px), 600px);
            }

.mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_EventTile_avatar,
            .mx_TimelineCard .mx_EventTile[data-layout="irc"] .mx_MessageTimestamp {
                position: absolute;
            }

.mx_TimelineCard .mx_EventTile[data-layout="group"] {
            /* Read receipt group on compact modern layout */
            /* This is required because mx_TimelineCard is a child element wrapped by mx_MatrixChat_useCompactLayout, */
        }

/* which specifies the default position of mx_ReadReceiptGroup on compact modern layout. */

.mx_MatrixChat_useCompactLayout .mx_TimelineCard .mx_EventTile[data-layout="group"] .mx_ReadReceiptGroup {
                top: var(--TimelineCard_ReadReceiptGroup-inset-block-start);
            }

.mx_TimelineCard .mx_EventTile[data-layout="bubble"]::before {
                z-index: auto; /* enable background color on hover */
            }

.mx_TimelineCard .mx_EventTile[data-layout="bubble"].mx_EventTile_info .mx_MessageActionBar {
                /* 1px: border width */
                inset-inline-end: calc(8px + var(--BaseCard_padding-inline) + 1px);
                inset-inline-end: calc(var(--container-gap-width) + var(--BaseCard_padding-inline) + 1px);
            }

.mx_TimelineCard .mx_EventTile[data-layout="bubble"] .mx_ReactionsRow {
                position: relative; /* display on hover */
            }

.mx_TimelineCard .mx_LegacyCallEvent_wrapper {
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        margin: auto 5px;
    }

.mx_TimelineCard .mx_LegacyCallEvent_wrapper .mx_LegacyCallEvent {
            margin: 4px;
        }

.mx_TimelineCard .mx_GenericEventListSummary[data-layout="irc"] .mx_EventTile_line,
            .mx_TimelineCard .mx_GenericEventListSummary[data-layout="irc"] .mx_GenericEventListSummary_unstyledList > .mx_EventTile_info .mx_EventTile_avatar ~ .mx_EventTile_line,
            .mx_TimelineCard .mx_GenericEventListSummary[data-layout="group"] .mx_EventTile_line,
            .mx_TimelineCard .mx_GenericEventListSummary[data-layout="group"] .mx_GenericEventListSummary_unstyledList > .mx_EventTile_info .mx_EventTile_avatar ~ .mx_EventTile_line {
                -webkit-padding-start: var(--BaseCard_EventTile-spacing-inline);
                        padding-inline-start: var(--BaseCard_EventTile-spacing-inline);
                -webkit-padding-end: 46px;
                        padding-inline-end: 46px;
                -webkit-padding-end: var(--MessageTimestamp-width);
                        padding-inline-end: var(--MessageTimestamp-width); /* ensure timestamp is not hidden */
            }

.mx_TimelineCard .mx_WhoIsTypingTile {
        margin-left: -12px; /* undo padding on the message list */
    }

.mx_TimelineCard .mx_WhoIsTypingTile_avatars {
        -ms-flex-preferred-size: 48px;
            flex-basis: 48px; /* 12 (padding on message list) + 36 (padding on event lines) */
    }

/* RR next to a message on the messsge list */

.mx_TimelineCard .mx_GenericEventListSummary_unstyledList .mx_EventTile[data-layout="bubble"] .mx_ReadReceiptGroup, .mx_TimelineCard .mx_RoomView_MessageList .mx_EventTile[data-layout="bubble"] .mx_ReadReceiptGroup {
                /* 6px: scroll bar width (magic number) */
                /* stylelint-disable-next-line declaration-colon-space-after */
                inset-inline-end: calc(
                    -1 * var(--ReadReceiptGroup_EventBubbleTile-spacing-end) + 8px + 6px
                );
                inset-inline-end: calc(
                    -1 * var(--ReadReceiptGroup_EventBubbleTile-spacing-end) + var(--container-gap-width) + 6px
                );
            }

.mx_TimelineCard .mx_GenericEventListSummary_unstyledList .mx_EventTile[data-layout="bubble"].mx_EventTile_info .mx_ReadReceiptGroup, .mx_TimelineCard .mx_RoomView_MessageList .mx_EventTile[data-layout="bubble"].mx_EventTile_info .mx_ReadReceiptGroup {
                    inset-inline-end: -4px; /* align with RR outside of info tile */
                }

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UserInfo.mx_BaseCard {
    /* UserInfo has a circular image at the top so it fits between the back & close buttons */
    padding-top: 0;
    overflow-y: auto;
    font-size: 1.2rem;
}

.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel {
        cursor: pointer;
        position: absolute;
        top: 0;
        border-radius: 4px;
        background-color: #20252b;
        margin: 9px;
        z-index: 1;
    }

/* render on top of the right panel */

.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel div {
            height: 16px;
            width: 16px;
            padding: 4px;
            -webkit-mask-image: url(../../img/minimise.465c9ab.svg);
                    mask-image: url(../../img/minimise.465c9ab.svg);
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-position: 7px center;
                    mask-position: 7px center;
            background-color: #b9bec6;
        }

.mx_UserInfo.mx_BaseCard h2 {
        font-size: 1.8rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        margin: 18px 0 0 0;
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_container {
        padding: 8px 16px;
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) {
            padding-top: 16px;
            padding-bottom: 0;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) > :not(h3) {
                -webkit-margin-start: 8px;
                        margin-inline-start: 8px;
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-orient: vertical;
                -webkit-box-direction: normal;
                    -ms-flex-flow: column;
                        flex-flow: column;
                -webkit-box-align: start;
                    -ms-flex-align: start;
                        align-items: flex-start;
                grid-row-gap: 8px;
                row-gap: 8px;
            }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_container .mx_UserInfo_container_verifyButton {
            margin-top: 8px;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_separator {
        border-bottom: 1px solid rgba(255,255,255, 0.1);
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetailsContainer {
        padding-top: 0;
        padding-bottom: 0;
        margin-bottom: 8px;
    }

.mx_UserInfo.mx_BaseCard .mx_RoomTile_titleContainer {
        width: 154px;
    }

.mx_UserInfo.mx_BaseCard .mx_RoomTile_badge {
        display: none;
    }

.mx_UserInfo.mx_BaseCard .mx_RoomTile_title {
        width: 160px;
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar {
        margin: 24px 32px 0 32px;
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_UserInfo_avatar_transition {
            max-width: 30vh;
            margin: 0 auto;
            -webkit-transition: 0.5s;
            transition: 0.5s;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_UserInfo_avatar_transition .mx_UserInfo_avatar_transition_child {
                /* use padding-top instead of height to make this element square,
                as the % in padding is a % of the width (including margin,
                that's why we had to put the margin to center on a parent div),
                and not a % of the parent height. */
                padding-top: 100%;
                position: relative;
            }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_UserInfo_avatar_transition .mx_UserInfo_avatar_transition_child .mx_BaseAvatar,
                .mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_UserInfo_avatar_transition .mx_UserInfo_avatar_transition_child .mx_BaseAvatar_initial,
                .mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_UserInfo_avatar_transition .mx_UserInfo_avatar_transition_child .mx_BaseAvatar_image {
                    border-radius: 100%;
                    position: absolute;
                    top: 0;
                    left: 0;
                    width: 100% !important;
                    height: 100% !important;
                }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_UserInfo_avatar_transition .mx_UserInfo_avatar_transition_child .mx_BaseAvatar.mx_BaseAvatar_image {
                        cursor: -webkit-zoom-in;
                        cursor: zoom-in;
                    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_UserInfo_avatar_transition .mx_UserInfo_avatar_transition_child .mx_BaseAvatar .mx_BaseAvatar_initial {
                        z-index: 1;
                        display: -webkit-box;
                        display: -ms-flexbox;
                        display: flex;
                        -webkit-box-align: center;
                            -ms-flex-align: center;
                                align-items: center;
                        -webkit-box-pack: center;
                            -ms-flex-pack: center;
                                justify-content: center;

                        /* override the calculated sizes so that the letter isn't HUGE */
                        font-size: 6rem !important;
                        width: 100% !important;
                        -webkit-transition: font-size 0.5s;
                        transition: font-size 0.5s;
                    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_UserInfo_avatar_transition .mx_UserInfo_avatar_transition_child .mx_BaseAvatar .mx_BaseAvatar_initial + .mx_BaseAvatar_image {
                            cursor: default;
                        }

.mx_UserInfo.mx_BaseCard h3 {
        text-transform: uppercase;
        color: #8e99a4;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.2rem;
        margin: 4px 0;
    }

.mx_UserInfo.mx_BaseCard p {
        margin: 5px 0;
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile {
        text-align: center;
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            font-size: 1.8rem;
            line-height: 2.5rem;
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
            /* We reverse things here so for accessible technologies the name comes before the e2e shield*/
            -webkit-box-orient: horizontal;
            -webkit-box-direction: reverse;
                -ms-flex-direction: row-reverse;
                    flex-direction: row-reverse;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 span {
                /* limit to 2 lines, show an ellipsis if it overflows */
                /* this looks webkit specific but is supported by Firefox 68+ */
                display: -webkit-box;
                -webkit-box-orient: vertical;
                -webkit-line-clamp: 2;

                overflow: hidden;
                word-break: break-all;
                text-overflow: ellipsis;
            }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 .mx_E2EIcon {
                margin-top: 3px; /* visual vertical centering to the top line of text. */
                -webkit-margin-end: 4px;
                        margin-inline-end: 4px; /* margin from displayName */
                min-width: 18px; /* convince flexbox to not collapse it */
            }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile .mx_UserInfo_profileStatus {
            margin-top: 12px;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;

            margin: 6px 0;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-pack: center;
                    -ms-flex-pack: center;
                        justify-content: center;
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
                /* try to make it the same height as the dropdown */
                margin: 11px 0 12px 0;
            }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_Field {
                margin: 0;
            }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_field {
        line-height: 1.6rem;
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_field.mx_UserInfo_destructive {
            color: #ff5b55;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_statusMessage {

        font-size: 1.1rem;
        line-height: 16px;
        opacity: 0.5;
        overflow: hidden;
        word-break: break-word;
        text-overflow: ellipsis;
        display: -webkit-box;
        max-height: calc(16px * 3);
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;
    }

.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar {
        -webkit-box-flex: 1;
            -ms-flex: 1 1 0px;
                flex: 1 1 0;
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            margin: 8px 0;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_verified .mx_UserInfo_device_trusted {
                    color: #0dbd8b;
                }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_unverified .mx_UserInfo_device_trusted {
                    color: #ff5b55;
                }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device .mx_UserInfo_device_name {
                -webkit-box-flex: 1;
                    -ms-flex: 1;
                        flex: 1;
                margin: 0 5px;
                word-break: break-word;
            }

/* both for icon in expand button and device item */

.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_E2EIcon {
            /* don't squeeze */
            -webkit-box-flex: 0;
                -ms-flex: 0 0 auto;
                    flex: 0 0 auto;
            margin: 0;
            width: 12px;
            height: 12px;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_expand {
            grid-column-gap: 5px;
            -webkit-column-gap: 5px;
               -moz-column-gap: 5px;
                    column-gap: 5px; /* cf: mx_UserInfo_device_name */
            margin-bottom: 11px;
            -webkit-box-align: initial;
                -ms-flex-align: initial;
                    align-items: initial; /* Cancel the default property */
        }

.mx_UserInfo.mx_BaseCard.mx_UserInfo_smallAvatar .mx_UserInfo_avatar .mx_UserInfo_avatar_transition {
                max-width: 72px;
                margin: 0 auto;
            }

.mx_UserInfo.mx_BaseCard.mx_UserInfo_smallAvatar .mx_UserInfo_avatar .mx_UserInfo_avatar_transition_child .mx_BaseAvatar .mx_BaseAvatar_initial {
                        font-size: 40px !important; /* override the other override because here the avatar is smaller */
                    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* center the big shield icon */

.mx_VerificationPanel_verified_section .mx_E2EIcon, .mx_VerificationPanel_reciprocate_section .mx_E2EIcon {
        /* Override general user info margin */
        margin: 20px auto !important;
    }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) > div > p {
            margin-top: 0;
            margin-bottom: 0;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) .mx_VerificationPanel_verifyByEmojiButton,
        .mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) .mx_UserInfo_wideButton {
            width: -webkit-fit-content;
            width: -moz-fit-content;
            width: fit-content;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) .mx_EncryptionInfo_spinner,
        .mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) .mx_VerificationShowSas {
            -webkit-margin-start: auto;
                    margin-inline-start: auto;
            -webkit-margin-end: auto;
                    margin-inline-end: auto;
        }

.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) .mx_Spinner,
        .mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) .mx_VerificationShowSas {
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
        }

.mx_UserInfo.mx_BaseCard .mx_EncryptionPanel_cancel {
        -webkit-mask: url(../../img/cancel.12c5c12.svg);
                mask: url(../../img/cancel.12c5c12.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: cover;
                mask-size: cover;
        background-color: #9fa9ba;
        cursor: pointer;
        position: unset;
        width: unset;
        height: unset;
        width: 14px;
        height: 14px;
        background-color: #b9bec6;
        position: absolute;
        z-index: 100;
        top: 14px;
        right: 14px;
    }

.mx_UserInfo.mx_BaseCard .mx_VerificationPanel_qrCode {
        padding: 4px 4px 0 4px;
        background: white;
        border-radius: 4px;
        width: -webkit-max-content;
        width: -moz-max-content;
        width: max-content;
        max-width: 100%;
        /* Override general user info margin */
        margin: 0 auto !important;
    }

.mx_UserInfo.mx_BaseCard .mx_VerificationPanel_qrCode canvas {
            /* override height and width which are set on the element directly */
            height: auto !important;
            width: 100% !important;
            max-width: 240px;
        }

.mx_UserInfo.mx_BaseCard .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton {
            width: 100%;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            padding: 10px;
            display: block;
            margin: 10px 0;
        }

/* Special case styling for EncryptionPanel in a Modal dialog */

.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions, .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        margin-top: 10px;
        margin-bottom: 10px;
        -webkit-box-align: stretch;
            -ms-flex-align: stretch;
                align-items: stretch;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions > .mx_VerificationPanel_QRPhase_betweenText, .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions > .mx_VerificationPanel_QRPhase_betweenText {
            width: 50px;
            vertical-align: middle;
            text-align: center;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
        }

.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption, .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption {
            background-color: #20252b;
            border-radius: 10px;
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            padding: 20px;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            position: relative;
            max-width: 310px;
            -webkit-box-pack: justify;
                -ms-flex-pack: justify;
                    justify-content: space-between;
        }

.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas,
            .mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR,
            .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas,
            .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR {
                width: 220px !important;
                height: 220px !important;
                background-color: #fff;
                border-radius: 4px;
                vertical-align: middle;
                text-align: center;
                padding: 10px;
            }

.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption > p, .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption > p {
                margin-top: 0;
                font-weight: 700;
            }

.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText, .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText {
                font-size: 1.4rem;
                margin: 30px 0;
                text-align: center;
            }

/* EncryptionPanel when verification is done */

/* right align the "Got it" button */

.mx_Dialog .mx_VerificationPanel_verified_section .mx_AccessibleButton, .mx_CompleteSecurity_body .mx_VerificationPanel_verified_section .mx_AccessibleButton {
            float: right;
        }

.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton, .mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton {
            margin-left: 10px;
            padding: 7px 40px;
        }

.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons, .mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: horizontal;
            -webkit-box-direction: normal;
                -ms-flex-direction: row;
                    flex-direction: row;
            -webkit-box-pack: end;
                -ms-flex-pack: end;
                    justify-content: flex-end;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_WidgetCard .mx_AppTileFullWidth {
        max-width: unset;
        width: auto !important;
        height: 100%;
        border: 0;
    }

/*
Copyright 2019 New Vector Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AliasSettings_localAddresses {
    cursor: pointer;
    color: #0dbd8b;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    list-style: none;
}

/* list-style doesn't do it for webkit */

.mx_AliasSettings_localAddresses::-webkit-details-marker {
        display: none;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

:root {
    --AppTile_mini-height: 220px;
}

.mx_AppsDrawer {
    --minWidth: 240px; /* TODO this should be 300px but that's too large */

    margin: 8px;

    margin: var(--container-gap-width);
    /* The left side gap is fully handled by this margin. To prohibit bleeding on webkit browser. */
    margin-right: calc(8px / 2);
    margin-right: calc(var(--container-gap-width) / 2);
    margin-bottom: 0; /* No bottom margin for the correct gap to the CallView below. */
    position: relative;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    overflow: hidden;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
}

.mx_AppsDrawer .mx_AppsContainer_resizerHandleContainer {
        width: 100%;
        height: 10px;
        display: block;
        position: relative;
    }

.mx_AppsDrawer .mx_AppsContainer_resizerHandle {
        cursor: ns-resize;

        /* Override styles from library, making the whole area the target area */
        width: 100% !important;
        height: 100% !important;

        /* This is positioned directly below frame */
        position: absolute;
        bottom: 50% !important; /* override from library */

        /* We then render the pill handle in an ::after to keep it in the handle's */
    }

/* area without being a massive line across the screen */

.mx_AppsDrawer .mx_AppsContainer_resizerHandle::after {
            content: "";
            position: absolute;
            border-radius: 3px;

            height: 4px;
            bottom: 0;

            /* Together, these make the bar 64px wide */
            /* These are also overridden from the library */
            left: calc(50% - 32px);
            right: calc(50% - 32px);
        }

.mx_AppsDrawer:hover .mx_AppsContainer_resizerHandle::after {
            opacity: 0.8;
            background: #ffffff;
        }

.mx_AppsDrawer:hover .mx_ResizeHandle--horizontal::before {
            position: absolute;
            left: 3px;
            top: 50%;
            -webkit-transform: translate(0, -50%);
                    transform: translate(0, -50%);

            height: 64px; /* to match width of the ones on roomlist */
            width: 4px;
            border-radius: 4px;

            content: "";

            background-color: #ffffff;
            opacity: 0.8;
        }

.mx_AppsDrawer .mx_AppTile {
        width: 50%;
        min-width: var(--minWidth);
    }

.mx_AppsDrawer.mx_AppsDrawer--maximised {
        margin-bottom: 8px;
        margin-bottom: var(--container-gap-width);
    }

.mx_AppsDrawer.mx_AppsDrawer--resizing .mx_AppTile_persistedWrapper {
        z-index: 1;
    }

.mx_AppsDrawer.mx_AppsDrawer--2apps .mx_AppTile {
        width: 50%;
    }

.mx_AppsDrawer.mx_AppsDrawer--2apps .mx_AppTile:nth-child(3) {
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
            width: 0 !important;
            min-width: var(--minWidth) !important;
        }

.mx_AppsDrawer.mx_AppsDrawer--3apps .mx_AppTile {
        width: 33%;
    }

.mx_AppsDrawer.mx_AppsDrawer--3apps .mx_AppTile:nth-child(3) {
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
            width: 0 !important;
            min-width: var(--minWidth) !important;
        }

.mx_AppsContainer_resizer {
    margin-bottom: 8px;
    margin-bottom: var(--container-gap-width);
}

.mx_AppsContainer {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    height: 100%;
    width: 100%;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    min-height: 0;
}

.mx_AppsContainer .mx_AppTile:first-of-type {
        border-left-width: 8px;
        border-left-width: var(--container-border-width);
        border-radius: 10px 0 0 10px;
    }

.mx_AppsContainer .mx_AppTile:last-of-type {
        border-right-width: 8px;
        border-right-width: var(--container-border-width);
        border-radius: 0 10px 10px 0;
    }

.mx_AppsContainer .mx_ResizeHandle--horizontal {
        position: relative;
    }

.mx_AppsContainer .mx_ResizeHandle--horizontal > div {
            width: 0;
        }

.mx_AppTile {
    border: 8px solid #20252b;
    border: var(--container-border-width) solid #20252b;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    background-color: #20252b;
}

.mx_AppTileFullWidth {
    width: 100% !important; /* to override the inline style set by the resizer */
    margin: 0;
    padding: 0;
    border: 8px solid #20252b;
    border: var(--container-border-width) solid #20252b;
    border-radius: 8px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    background-color: #20252b;
}

.mx_AppTile_mini {
    width: 100%;
    margin: 0;
    padding: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    height: 220px;
    height: var(--AppTile_mini-height);
}

.mx_AppTile .mx_AppTile_persistedWrapper,
.mx_AppTileFullWidth .mx_AppTile_persistedWrapper,
.mx_AppTile_mini .mx_AppTile_persistedWrapper {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
}

.mx_AppTile_persistedWrapper div {
    width: 100%;
    height: 100%;
}

.mx_AppTileMenuBar {
    margin: 0;
    font-size: 1.2rem;
    background-color: #20252b;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    width: 100%;
    padding-top: 3px;
    padding-bottom: 6px;
}

.mx_AppTileMenuBar .mx_AppTileMenuBar_title {
        line-height: 20px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

.mx_AppTileMenuBar .mx_AppTileMenuBar_title .mx_WidgetAvatar {
            margin-right: 12px;
        }

.mx_AppTileMenuBar .mx_AppTileMenuBar_title > :last-child {
            margin-left: 9px;
        }

.mx_AppTileMenuBar .mx_AppTileMenuBar_widgets {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_AppTileMenuBar .mx_AppTileMenuBar_widgets .mx_AppTileMenuBar_widgets_button {
            --size: 24px; /* Size of the button. Its height and width values should be same */

            margin: 0 4px;
            position: relative;
            height: var(--size);
            width: var(--size);
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
        }

.mx_AppTileMenuBar .mx_AppTileMenuBar_widgets .mx_AppTileMenuBar_widgets_button:hover::after {
                content: "";
                position: absolute;
                height: var(--size);
                width: var(--size);
                background-color: rgba(141,151,165, 0.2);
                border-radius: 50%;
                left: 0;
                top: 0;
            }

.mx_AppTileMenuBar .mx_AppTileMenuBar_widgets .mx_AppTileMenuBar_widgets_button .mx_Icon {
                color: #91a1c0;
            }

.mx_AppTileBody,
.mx_AppTileBody_mini {
    width: 100%;
    overflow: hidden;
    border-radius: 8px;
    height: var(--AppTileBody-height);
}

.mx_AppTileBody iframe, .mx_AppTileBody_mini iframe {
        border: none;
        width: 100%;
        height: 100%;
    }

/* const loadingElement */

.mx_AppTileBody .mx_AppTileBody_fadeInSpinner, .mx_AppTileBody_mini .mx_AppTileBody_fadeInSpinner {
        /* place spinner and the message at the center of mx_AppTileBody */
        height: 100%;
        width: 100%;

        font-weight: bold; /* message next to the spinner */
        -webkit-animation-fill-mode: backwards;
                animation-fill-mode: backwards;
        -webkit-animation-duration: 200ms;
                animation-duration: 200ms;
        -webkit-animation-delay: 500ms;
                animation-delay: 500ms;
        -webkit-animation-name: mx_AppTileBody_fadeInSpinnerAnimation;
                animation-name: mx_AppTileBody_fadeInSpinnerAnimation;
    }

.mx_AppTileBody {
    --AppTileBody-height: 100%;

    background-color: rgba(141,151,165, 0.2);
}

.mx_AppTileBody iframe {
        overflow: hidden;
        padding: 0;
        margin: 0;
        display: block;
    }

.mx_AppTileBody_mini {
    --AppTileBody-height: var(--AppTile_mini-height);
}

.mx_AppTile .mx_AppTileBody,
.mx_AppTileFullWidth .mx_AppTileBody,
.mx_AppTile_mini .mx_AppTileBody_mini {
    height: inherit;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
}

.mx_AppWarning,
.mx_AppPermission {
    text-align: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    height: 100%;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    font-size: 1.6rem;
}

.mx_AppWarning h4, .mx_AppPermission h4 {
        margin: 0;
        padding: 0;
    }

.mx_AppTile_loading {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    font-weight: bold;
    position: relative;
    height: 100%;

    /* match bg of border so that the cut corners have the right fill */
    background-color: rgba(141,151,165, 0.2) !important;
    border-radius: 8px;
}

.mx_AppTile_loading iframe {
        display: none;
    }

@-webkit-keyframes mx_AppTileBody_fadeInSpinnerAnimation {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes mx_AppTileBody_fadeInSpinnerAnimation {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.mx_Autocomplete {
    position: absolute;
    bottom: 0;
    z-index: 1001;
    width: 100%;
    border: 1px solid transparent;
    background: #15191e;
    border-bottom: none;
    border-radius: 8px 8px 0 0;
    overflow: clip;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-shadow: 0px -16px 32px rgba(0, 0, 0, 0.28);
            box-shadow: 0px -16px 32px rgba(0, 0, 0, 0.28);
}

.mx_Autocomplete_ProviderSection {
    border-bottom: 1px solid transparent;
    width: 100%;
}

/* a "block" completion takes up a whole line */

.mx_Autocomplete_Completion_block {
    min-height: 34px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    padding: 0 12px;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    cursor: pointer;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #ffffff;
}

.mx_Autocomplete_Completion_block * {
    margin: 0 3px;
}

.mx_Autocomplete_Completion_pill {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    border-radius: 2rem;
    height: 3.4rem;
    padding: 0.4rem;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    cursor: pointer;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #ffffff;
}

.mx_Autocomplete_Completion_pill > * {
    margin-right: 0.3rem;
}

/* styling for common completion elements */

.mx_Autocomplete_Completion_subtitle {
    font-style: italic;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
}

.mx_Autocomplete_Completion_description {
    color: gray;
    min-width: 150px;
}

.mx_Autocomplete_Completion_container_pill {
    margin: 12px;
    height: 100%;
    overflow-y: scroll;
    max-height: 35vh;
}

.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_title,
    .mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_subtitle,
    .mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_description {
        /* Ellipsis for long names/subtitles/descriptions */
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

.mx_Autocomplete_Completion.selected,
.mx_Autocomplete_Completion:hover {
    background: #343a46;
    outline: none;
}

.mx_Autocomplete_provider_name {
    margin: 12px;
    color: #ffffff;
    font-weight: 400;
    opacity: 0.4;
}

/*
Copyright 2018 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AuxPanel {
    min-width: 0px;
    width: 100%;
    margin: 0px auto;

    overflow: auto;
}

.mx_AuxPanel .mx_AuxPanel_stateViews {
        padding: 5px;
        padding-left: 19px;
        border-bottom: 1px solid transparent;
    }

.mx_AuxPanel .mx_AuxPanel_stateViews_span[data-severity="warning"] {
            font-weight: bold;
            color: orange;
        }

.mx_AuxPanel .mx_AuxPanel_stateViews_span[data-severity="alert"] {
            font-weight: bold;
            color: red;
        }

.mx_AuxPanel .mx_AuxPanel_stateViews_span[data-severity="normal"] {
            font-weight: normal;
        }

.mx_AuxPanel .mx_AuxPanel_stateViews_span[data-severity="notice"] {
            font-weight: normal;
            color: #a2a2a2;
        }

.mx_AuxPanel .mx_AuxPanel_stateViews_span a {
            text-decoration: none;
            color: inherit;
        }

.mx_AuxPanel .mx_AuxPanel_stateViews_delim {
        padding: 0 5px;
        color: #a2a2a2;
    }

/*
Copyright 2019 New Vector Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BasicMessageComposer {
    position: relative;
}

.mx_BasicMessageComposer .mx_BasicMessageComposer_inputEmpty > :first-child::before {
        content: var(--placeholder);
        opacity: 0.333;
        width: 0;
        height: 0;
        overflow: visible;
        display: inline-block;
        pointer-events: none;
        white-space: nowrap;
    }

@-webkit-keyframes visualbell {
        from {
            background-color: #800;
        }
        to {
            background-color: #15191e;
        }
    }

@keyframes visualbell {
        from {
            background-color: #800;
        }
        to {
            background-color: #15191e;
        }
    }

.mx_BasicMessageComposer.mx_BasicMessageComposer_input_error {
        -webkit-animation: 0.2s visualbell;
                animation: 0.2s visualbell;
    }

.mx_BasicMessageComposer .mx_BasicMessageComposer_input {
        white-space: pre-wrap;
        word-wrap: break-word;
        outline: none;
        overflow-x: hidden;
    }

/* navigated through in a single keypress */

.mx_BasicMessageComposer .mx_BasicMessageComposer_input .caretNode {
            -webkit-user-select: all;
               -moz-user-select: all;
                -ms-user-select: all;
                    user-select: all;
        }

/* Force caret nodes to be selected in full so that they can be */

.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill,
            .mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill,
            .mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_SpacePill {
                -webkit-user-select: all;
                   -moz-user-select: all;
                    -ms-user-select: all;
                        user-select: all;
                position: relative;
                cursor: unset; /* We don't want indicate clickability */
                overflow: hidden;
                text-overflow: ellipsis;
                white-space: nowrap;
            }

.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill:hover, .mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill:hover, .mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_SpacePill:hover {
                    /* We don't want indicate clickability | To override the overriding of .markdown-body */
                    background-color: #343a46 !important;
                }

/* avatar psuedo element */

.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill::before, .mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill::before, .mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_SpacePill::before {
                    display: inline-block;
                    content: var(--avatar-letter);
                    width: 1.6rem;
                    min-width: 1.6rem; /* ensure the avatar is not compressed */
                    height: 1.6rem;
                    -webkit-margin-end: 0.24rem;
                            margin-inline-end: 0.24rem;
                    background: var(--avatar-background), #15191e;
                    color: #ffffff;
                    background-repeat: no-repeat;
                    background-size: 1.6rem;
                    border-radius: 1.6rem;
                    text-align: center;
                    font-weight: normal;
                    line-height: 1.6rem;
                    font-size: 1.04rem;
                }

.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_disabled {
            /* Ignore all user input to avoid accidentally triggering the composer */
            pointer-events: none;
        }

.mx_BasicMessageComposer .mx_BasicMessageComposer_AutoCompleteWrapper {
        position: relative;
        height: 0;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DecryptionFailureBar {
    --gap-row: 8px;
    --gap-column: 12px;
    --gap: var(--gap-row) var(--gap-column);
    --size-icon: 24px;

    background-color: #21262c;
    padding: 12px;
    margin-inline: 16px;
    border-radius: 4px;
}

.mx_DecryptionFailureBar.mx_DecryptionFailureBar--withEnd {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-flow: wrap;
            flex-flow: wrap;
        -webkit-box-align: start;
            -ms-flex-align: start;
                align-items: flex-start;
        -webkit-box-pack: justify;
            -ms-flex-pack: justify;
                justify-content: space-between;
        grid-row-gap: calc(var(--gap-row) + 4px);
        row-gap: calc(var(--gap-row) + 4px);
    }

/* Increase spacing between the message and the buttons */

.mx_DecryptionFailureBar.mx_DecryptionFailureBar--withEnd .mx_DecryptionFailureBar_end {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -ms-flex-wrap: wrap;
                flex-wrap: wrap; /* Let the buttons wrapped on a narrow column */
            grid-gap: 8px 8px;
            gap: 8px 8px;
            grid-gap: var(--buttons-dialog-gap-row) var(--buttons-dialog-gap-column);
            gap: var(--buttons-dialog-gap-row) var(--buttons-dialog-gap-column);
            -webkit-margin-start: calc(var(--size-icon) + var(--gap-column));
                    margin-inline-start: calc(var(--size-icon) + var(--gap-column)); /* Align the button(s) and the message */
        }

.mx_DecryptionFailureBar .mx_DecryptionFailureBar_start {
        display: grid;
        grid-gap: var(--gap);
        gap: var(--gap);
        grid-template-areas:
            "status headline"
            ".      message";
        grid-template-columns: var(--size-icon) auto;
    }

.mx_DecryptionFailureBar .mx_DecryptionFailureBar_start .mx_DecryptionFailureBar_start_status {
            grid-area: status;

            display: -webkit-box;

            display: -ms-flexbox;

            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            grid-gap: var(--gap);
            gap: var(--gap);
        }

.mx_DecryptionFailureBar .mx_DecryptionFailureBar_start .mx_DecryptionFailureBar_start_status .mx_Spinner {
                height: unset; /* Unset height: 100% */
            }

.mx_DecryptionFailureBar .mx_DecryptionFailureBar_start .mx_DecryptionFailureBar_start_status .mx_DecryptionFailureBar_start_status_icon {
                min-width: var(--size-icon);
                height: var(--size-icon);
                -webkit-mask-image: url(../../img/e2e/decryption-failure.2c168d0.svg);
                        mask-image: url(../../img/e2e/decryption-failure.2c168d0.svg);
                background-color: #ff5b55;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: contain;
                        mask-size: contain;
            }

.mx_DecryptionFailureBar .mx_DecryptionFailureBar_start .mx_DecryptionFailureBar_start_headline {
            grid-area: headline;

            font-weight: 600;

            font-weight: var(--font-semi-bold);
            font-size: 1.6rem;
            align-self: center;
        }

.mx_DecryptionFailureBar .mx_DecryptionFailureBar_start .mx_DecryptionFailureBar_start_message {
            grid-area: message;

            color: #a9b2bc;
        }

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_E2EIcon {
    width: 16px;
    height: 16px;
    margin: 0 9px;
    position: relative;
    display: block;
}

.mx_E2EIcon_warning::before,
    .mx_E2EIcon_warning::after,
    .mx_E2EIcon_normal::before,
    .mx_E2EIcon_normal::after,
    .mx_E2EIcon_verified::before,
    .mx_E2EIcon_verified::after {
        content: "";
        display: block;
        position: absolute;
        inset: 0;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

/* white infill for the transparency */

.mx_E2EIcon::before {
    background-color: #ffffff;
    -webkit-mask-image: url(../../img/e2e/normal.33e0430.svg);
            mask-image: url(../../img/e2e/normal.33e0430.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: 80%;
            mask-size: 80%;
}

/* transparent-looking border surrounding the shield for when overlain over avatars */

.mx_E2EIcon_bordered {
    -webkit-mask-image: url(../../img/e2e/normal.33e0430.svg);
            mask-image: url(../../img/e2e/normal.33e0430.svg);
    background-color: #20252b;
}

/* shrink the actual badge */

.mx_E2EIcon_bordered::after {
        -webkit-mask-size: 75%;
                mask-size: 75%;
    }

/* shrink the infill of the badge */

.mx_E2EIcon_bordered::before {
        -webkit-mask-size: 60%;
                mask-size: 60%;
    }

.mx_E2EIcon_warning::after {
    -webkit-mask-image: url(../../img/e2e/warning.d370b49.svg);
            mask-image: url(../../img/e2e/warning.d370b49.svg);
    background-color: #ff5b55;
}

.mx_E2EIcon_normal::after {
    -webkit-mask-image: url(../../img/e2e/normal.33e0430.svg);
            mask-image: url(../../img/e2e/normal.33e0430.svg);
    background-color: #b9bec6;
}

.mx_E2EIcon_verified::after {
    -webkit-mask-image: url(../../img/e2e/verified.315cfad.svg);
            mask-image: url(../../img/e2e/verified.315cfad.svg);
    background-color: #0dbd8b;
}

/*
Copyright 2019 New Vector Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EditMessageComposer {
    --EditMessageComposer-padding-inline: 3px;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    max-width: 100%; /* disable overflow */
    width: auto;
    grid-gap: 5px;
    gap: 5px;
    padding: 3px var(--EditMessageComposer-padding-inline);
}

.mx_EditMessageComposer .mx_BasicMessageComposer_input {
        border-radius: 4px;
        border: solid 1px transparent;
        background-color: #15191e;
        max-height: 200px;
        padding: 3px 6px;
    }

.mx_EditMessageComposer .mx_BasicMessageComposer_input:focus {
            border-color: rgba(13,189,139, 0.5); /* Only ever used here */
        }

.mx_EditMessageComposer .mx_EditMessageComposer_buttons {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-flow: row wrap-reverse;
                flex-flow: row wrap-reverse; /* display "Save" over "Cancel" */
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end;
        grid-gap: 5px;
        gap: 5px;
        -webkit-margin-start: auto;
                margin-inline-start: auto;
    }

.mx_EditMessageComposer .mx_EditMessageComposer_buttons .mx_AccessibleButton {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            min-width: 100px; /* magic number to align the edge of the button with the input area */
        }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EmojiButton {
    --size: 26px;
    position: relative;
    cursor: pointer;
    height: var(--size);
    line-height: var(--size);
    width: auto;
    padding-left: var(--size);
    border-radius: 50%;
}

.mx_EmojiButton::before {
        content: "";
        position: absolute;
        top: 3px;
        left: 3px;
        height: 20px;
        width: 20px;
        background-color: #8e99a4;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_EmojiButton::after {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        z-index: 0;
        width: var(--size);
        height: var(--size);
        border-radius: 50%;
    }

.mx_EmojiButton:hover::after {
            background: rgba(13,189,139, 0.1);
        }

.mx_EmojiButton:hover::before {
            background-color: #0dbd8b;
        }

.mx_EmojiButton_highlight {
    background: rgba(13,189,139, 0.25);
}

/* make the icon the accent color too */

.mx_EmojiButton_highlight::before {
        background-color: #0dbd8b !important;
    }

.mx_EmojiButton_icon::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/emoji.fd84fe8.svg);
            mask-image: url(../../img/element-icons/room/composer/emoji.fd84fe8.svg);
}

.mx_MessageComposer_wysiwyg .mx_EmojiButton {
        --size: 26px;
        position: relative;
        cursor: pointer;
        height: var(--size);
        line-height: var(--size);
        width: auto;
        padding-left: var(--size);
        border-radius: 5px;
    }

.mx_MessageComposer_wysiwyg .mx_EmojiButton::before {
        content: "";
        position: absolute;
        top: 3px;
        left: 3px;
        height: 20px;
        width: 20px;
        background-color: #8e99a4;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_MessageComposer_wysiwyg .mx_EmojiButton::after {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        z-index: 0;
        width: var(--size);
        height: var(--size);
        border-radius: 5px;
    }

.mx_MessageComposer_wysiwyg .mx_EmojiButton:hover::after {
            background: rgba(142,153,164, 0.1);
        }

.mx_MessageComposer_wysiwyg .mx_EmojiButton:hover::before {
            background-color: #8e99a4;
        }

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EntityTile {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #ffffff;
    cursor: pointer;
}

.mx_EntityTile .mx_E2EIcon {
        margin: 0;
        position: absolute;
        bottom: 2px;
        right: 7px;
    }

.mx_EntityTile:hover {
    padding-right: 30px;
    position: relative; /* to keep the chevron aligned */
}

.mx_EntityTile:hover::before {
    content: "";
    position: absolute;
    top: calc(50% - 8px); /* center */
    right: -8px;
    -webkit-mask: url(../../img/member_chevron.b867d5a.png);
            mask: url(../../img/member_chevron.b867d5a.png);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    width: 16px;
    height: 16px;
    background-color: #b9bec6;
}

.mx_EntityTile .mx_PresenceLabel {
    display: none;
}

.mx_EntityTile:not(.mx_EntityTile_noHover):hover .mx_PresenceLabel {
    display: block;
}

.mx_EntityTile_invite {
    display: table-cell;
    vertical-align: middle;
    margin-left: 10px;
    width: 26px;
}

.mx_EntityTile_avatar {
    padding-left: 3px;
    padding-right: 12px;
    padding-top: 4px;
    padding-bottom: 4px;
    position: relative;
}

.mx_EntityTile_name {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0;
    overflow: hidden;
    font-size: 1.4rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mx_EntityTile_details {
    overflow: hidden;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
}

.mx_EntityTile_ellipsis .mx_EntityTile_name {
    font-style: italic;
    color: #ffffff;
}

.mx_EntityTile_invitePlaceholder .mx_EntityTile_name {
    font-style: italic;
    color: #ffffff;
}

.mx_EntityTile_unavailable .mx_EntityTile_avatar,
.mx_EntityTile_unavailable .mx_EntityTile_name,
.mx_EntityTile_offline_beenactive .mx_EntityTile_avatar,
.mx_EntityTile_offline_beenactive .mx_EntityTile_name {
    opacity: 0.5;
}

.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar,
.mx_EntityTile_offline_neveractive .mx_EntityTile_name {
    opacity: 0.25;
}

.mx_EntityTile_unknown .mx_EntityTile_avatar,
.mx_EntityTile_unknown .mx_EntityTile_name {
    opacity: 0.25;
}

.mx_EntityTile_subtext {
    font-size: 1.1rem;
    opacity: 0.5;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: clip;
}

.mx_EntityTile_power {
    -webkit-padding-start: 6px;
            padding-inline-start: 6px;
    font-size: 1rem;
    color: #8e99a4;
    max-width: 6em;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mx_EntityTile:hover .mx_EntityTile_power {
    display: none;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomView_body[data-layout="bubble"] .mx_RoomView_timeline,
    .mx_RoomView_body[data-layout="bubble"] .mx_RoomView_statusArea,
    .mx_RoomView_body[data-layout="bubble"] .mx_MessageComposer {
        width: 100%;
        max-width: 1200px;
        margin: 0 auto;
    }

.mx_EventTile[data-layout="bubble"],
.mx_GenericEventListSummary[data-layout="bubble"] {
    --avatarSize: 32px;
    --gutterSize: 11px;
    --cornerRadius: 12px;
    --maxWidth: 70%;

    /* For both event tile and event list summary */
    --EventTile_bubble-margin-inline-start: 49px;
    --EventTile_bubble-margin-inline-end: 60px;

    -webkit-margin-start: var(--EventTile_bubble-margin-inline-start);

            margin-inline-start: var(--EventTile_bubble-margin-inline-start);
    -webkit-margin-end: var(--EventTile_bubble-margin-inline-end);
            margin-inline-end: var(--EventTile_bubble-margin-inline-end);
}

.mx_EventTile[data-layout="bubble"] {
    --EventTile_bubble_line-margin-inline-start: -9px;
    --EventTile_bubble_line-margin-inline-end: -12px;
    --EventTile_bubble_gap-inline: 5px;
}

.mx_EventTile[data-layout="bubble"] .mx_MessageTimestamp {
        width: unset; /* Cancel the default width */
        max-width: 80px;
        max-width: var(--MessageTimestamp-max-width);
    }

.mx_EventTile[data-layout="bubble"] .mx_ThreadSummary {
        clear: both;
        width: -webkit-fit-content;
        width: -moz-fit-content;
        width: fit-content;
    }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_content {
        margin-right: 0;
    }

.mx_EventTile[data-layout="bubble"].mx_EventTile_highlight::before {
            background-color: #25271f;
        }

/* For replies */

.mx_EventTile[data-layout="bubble"] .mx_EventTile {
        padding-top: 0;
    }

.mx_EventTile[data-layout="bubble"]::before {
        content: "";
        position: absolute;
        top: -1px;
        bottom: -1px;
        left: calc(-1 * var(--EventTile_bubble-margin-inline-start));
        right: calc(-1 * var(--EventTile_bubble-margin-inline-end));
        z-index: -1;
        border-radius: 4px;
    }

.mx_EventTile[data-layout="bubble"]:hover::before, .mx_EventTile[data-layout="bubble"].mx_EventTile_selected::before {
            background: #1c2026;
        }

.mx_EventTile[data-layout="bubble"]:hover .mx_EventTile_avatar img, .mx_EventTile[data-layout="bubble"].mx_EventTile_selected .mx_EventTile_avatar img {
                -webkit-box-shadow: 0 0 0 3px #1c2026;
                        box-shadow: 0 0 0 3px #1c2026;
            }

.mx_EventTile[data-layout="bubble"] .mx_DisambiguatedProfile,
    .mx_EventTile[data-layout="bubble"] .mx_EventTile_line {
        --EventBubbleTile_line-max-width: 70%;

        width: -webkit-fit-content;

        width: -moz-fit-content;

        width: fit-content;
        max-width: var(--EventBubbleTile_line-max-width); /* Align message bubble and displayName */
        line-height: 1.8rem; /* fixed line height to prevent emoji from being taller than text */
    }

/* other users profile on bubble layout */

.mx_EventTile[data-layout="bubble"] > .mx_DisambiguatedProfile {
        white-space: normal;
    }

/* display mxid */

.mx_EventTile[data-layout="bubble"] > .mx_DisambiguatedProfile .mx_DisambiguatedProfile_displayName {
            white-space: nowrap; /* truncate long display names */
            -webkit-margin-end: 5px;
                    margin-inline-end: 5px;

            /* For RTL displayName */
            unicode-bidi: embed;
            direction: ltr;
        }

.mx_EventTile[data-layout="bubble"] > .mx_DisambiguatedProfile .mx_DisambiguatedProfile_mxid {
            -webkit-margin-start: 0;
                    margin-inline-start: 0; /* Align mxid with truncated displayName
                inside mx_EventTile[data-layout="bubble"] */
        }

/* (on the main panel and the chat panel with a maximized widget) */

.mx_EventTile[data-layout="bubble"] > .mx_DisambiguatedProfile,
    
    .mx_EventTile[data-layout="bubble"] .mx_EventTile_senderDetails > .mx_DisambiguatedProfile {
        position: relative;
        top: -2px;
        left: 2px;
        font-size: 1.5rem;
    }

/* inside mx_RoomView_MessageList, outside of mx_ReplyTile */

.mx_EventTile[data-layout="bubble"] .mx_MessageActionBar {
        top: -28px;
        z-index: 9; /* above the avatar */
    }

.mx_EventTile[data-layout="bubble"] .mx_MediaBody {
        /* leave space for the timestamp */
        padding-right: 48px;
    }

.mx_EventTile[data-layout="bubble"] .mx_MImageBody .mx_MImageBody_thumbnail_container {
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
            min-height: calc(1.8rem + var(--gutterSize) + var(--gutterSize));
            min-width: calc(1.8rem + var(--gutterSize) + var(--gutterSize));
        }

.mx_EventTile[data-layout="bubble"] .mx_LegacyCallEvent {
        background-color: unset;

        border-style: solid;
        border-width: 1px;
        border-color: #394049;
    }

.mx_EventTile[data-layout="bubble"] .mx_ReactionsRow {
        margin-inline: var(--EventTile_bubble_line-margin-inline-start) var(--EventTile_bubble_line-margin-inline-end);
    }

.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_line {
            border-bottom-right-radius: var(--cornerRadius);
        }

.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_line .mx_MImageBody .mx_MImageBody_thumbnail_container,
            .mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_line .mx_MImageBody::before,
            .mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_line .mx_MVideoBody .mx_MVideoBody_container,
            .mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_line .mx_MediaBody,
            .mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_line .mx_MLocationBody_map,
            .mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_line .mx_MBeaconBody {
                border-bottom-right-radius: var(--cornerRadius) !important;
            }

.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_avatar {
            left: -34px;
        }

.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_MessageActionBar {
            inset-inline-start: calc(100% - var(--MessageActionBar-size-box));
            right: auto;
            right: initial; /* Reset the default value */
        }

.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_ThreadSummary {
            -webkit-margin-start: calc(-1 * var(--gutterSize));
                    margin-inline-start: calc(-1 * var(--gutterSize));
            -webkit-margin-end: auto;
                    margin-inline-end: auto;
        }

.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_ReactionsRow {
            -webkit-box-pack: start;
                -ms-flex-pack: start;
                    justify-content: flex-start;
        }

.mx_EventTile[data-layout="bubble"][data-self="false"] {

        --backgroundColor: #21262c;
}

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line {
            -webkit-margin-start: auto;
                    margin-inline-start: auto;
            border-bottom-left-radius: var(--cornerRadius);
        }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line .mx_MImageBody .mx_MImageBody_thumbnail_container,
            .mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line .mx_MImageBody::before,
            .mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line .mx_MVideoBody .mx_MVideoBody_container,
            .mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line .mx_MediaBody,
            .mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line .mx_MLocationBody_map,
            .mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line .mx_MBeaconBody {
                border-bottom-left-radius: var(--cornerRadius) !important;
            }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_sticker {
            /* align timestamp with those inside bubbles */
            margin-right: 32px;
        }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_ThreadSummary {
            -webkit-margin-start: auto;
                    margin-inline-start: auto;
            -webkit-margin-end: calc(-1 * var(--gutterSize));
                    margin-inline-end: calc(-1 * var(--gutterSize));
        }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_DisambiguatedProfile {
            display: none;
        }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_ReplyTile .mx_DisambiguatedProfile {
            display: block;
            max-width: 100%;
        }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_ReactionsRow {
            -webkit-box-pack: end;
                -ms-flex-pack: end;
                    justify-content: flex-end;
        }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_ReactionsRow > :last-child {
                -webkit-box-ordinal-group: 0;
                    -ms-flex-order: -1;
                        order: -1; /* Moving the "add reaction button" before the reactions */
            }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_avatar {
            top: -19px; /* height of the sender block */
            right: -35px;
        }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_MediaBody {
            background: #133a34;
        }

.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_MessageActionBar {
            inset-inline-end: 0;
        }

.mx_EventTile[data-layout="bubble"][data-self="true"] {

        --backgroundColor: #133a34;
}

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line {
        position: relative;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        grid-gap: 5px var(--EventTile_bubble_gap-inline);
        gap: 5px var(--EventTile_bubble_gap-inline);
        margin-block: 0;
        margin-inline: var(--EventTile_bubble_line-margin-inline-start) var(--EventTile_bubble_line-margin-inline-end);
        border-top-left-radius: var(--cornerRadius);
        border-top-right-radius: var(--cornerRadius);
    }

/* in the DOM depending on the specific rendering context */

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line > a, 
        .mx_EventTile[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp {
            position: absolute;
            padding: 4px 8px;
            bottom: 0;
            right: 0;
            z-index: 3; /* above media and location share maps */
        }

/* the selector here is quite weird because timestamps can appear linked & unlinked and in different places */

/* TODO: Use a common class name instead */

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_mediaLine .mx_MFileBody,
            .mx_EventTile[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_mediaLine .mx_MAudioBody {
                max-width: 100%; /* avoid overflow */
            }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_mediaLine .mx_MVoiceMessageBody {
                /* allow the event to be collapsed, this causes the waveform to get cropped */
                min-width: 0;
            }

/* we put the timestamps for media (other than stickers) atop the media */

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_mediaLine.mx_EventTile_image .mx_MessageTimestamp {
                    border-radius: 8px;
                    border-radius: var(--MBody-border-radius);
                    /* Hardcoded colours because it's the same on all themes */
                    background-color: rgba(0, 0, 0, 0.6);
                    color: #ffffff;
                    padding: 0px 4px 0px 4px;
                }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_sticker > a, 
            .mx_EventTile[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_sticker .mx_MessageActionBar + .mx_MessageTimestamp {
                /* position timestamps for stickers to the right of the un-bubbled sticker */
                right: unset;
                left: 100%;
            }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_sticker .mx_MStickerBody_wrapper {
                padding: 0;
            }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line .mx_MImageBody {
            width: 100%;
            height: 100%;
        }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line .mx_MImageBody .mx_MImageBody_thumbnail.mx_MImageBody_thumbnail--blurhash {
                position: unset;
            }

/* noinspection CssReplaceWithShorthandSafely */

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line .mx_MImageBody .mx_MImageBody_thumbnail_container,
        .mx_EventTile[data-layout="bubble"] .mx_EventTile_line .mx_MVideoBody .mx_MVideoBody_container,
        .mx_EventTile[data-layout="bubble"] .mx_EventTile_line .mx_MediaBody {
            border-radius: unset;
            border-top-left-radius: var(--cornerRadius);
            border-top-right-radius: var(--cornerRadius);
        }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_line .mx_EventTile_e2eIcon {
            -ms-flex-negative: 0;
                flex-shrink: 0; /* keep it at full size */
        }

.mx_EventTile[data-layout="bubble"]:not(.mx_EventTile_noBubble) .mx_EventTile_line:not(.mx_EventTile_mediaLine) {
        /* make the top and bottom padding 1px smaller so that we can pad
            .mx_EventTile_content by 1px */
        /* to avoid anti-zalgo cutting off our larger than text emojis. */
        padding: calc(var(--gutterSize) - 1px);
        padding-right: 60px; /* space for the timestamp */
        background: var(--backgroundColor);
    }

.mx_EventTile[data-layout="bubble"]:not(.mx_EventTile_noBubble) .mx_EventTile_line:not(.mx_EventTile_mediaLine) .mx_EventTile_content {
            padding: 1px;
        }

.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="false"] .mx_EventTile_line {
        border-top-left-radius: 0;
    }

.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="false"] .mx_EventTile_line .mx_MImageBody .mx_MImageBody_thumbnail_container,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="false"] .mx_EventTile_line .mx_MVideoBody .mx_MVideoBody_container,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="false"] .mx_EventTile_line .mx_MImageBody::before,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="false"] .mx_EventTile_line .mx_MediaBody,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="false"] .mx_EventTile_line .mx_MLocationBody_map,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="false"] .mx_EventTile_line .mx_MBeaconBody {
            border-top-left-radius: 0;
        }

.mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line {
        border-bottom-left-radius: var(--cornerRadius);
    }

.mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line .mx_MImageBody .mx_MImageBody_thumbnail_container,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line .mx_MVideoBody .mx_MVideoBody_container,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line .mx_MImageBody::before,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line .mx_MediaBody,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line .mx_MLocationBody_map,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line .mx_MBeaconBody {
            border-bottom-left-radius: var(--cornerRadius);
        }

.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="true"] .mx_EventTile_line {
        border-top-right-radius: 0;
    }

.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="true"] .mx_EventTile_line .mx_MImageBody .mx_MImageBody_thumbnail_container,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="true"] .mx_EventTile_line .mx_MVideoBody .mx_MVideoBody_container,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="true"] .mx_EventTile_line .mx_MImageBody::before,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="true"] .mx_EventTile_line .mx_MediaBody,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="true"] .mx_EventTile_line .mx_MLocationBody_map,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="true"] .mx_EventTile_line .mx_MBeaconBody {
            border-top-right-radius: 0;
        }

.mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line {
        border-bottom-right-radius: var(--cornerRadius);
    }

.mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line .mx_MImageBody .mx_MImageBody_thumbnail_container,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line .mx_MVideoBody .mx_MVideoBody_container,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line .mx_MImageBody::before,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line .mx_MediaBody,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line .mx_MLocationBody_map,
        .mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line .mx_MBeaconBody {
            border-bottom-right-radius: var(--cornerRadius);
        }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_avatar {
        position: absolute;
        top: 0;
        line-height: 1;
        z-index: 9;
    }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_avatar img {
            -webkit-box-shadow: 0 0 0 3px #15191e;
                    box-shadow: 0 0 0 3px #15191e;
            border-radius: 50%;
        }

.mx_EventTile[data-layout="bubble"].mx_EventTile_noSender .mx_EventTile_avatar {
            top: -19px;
        }

.mx_EventTile[data-layout="bubble"] .mx_BaseAvatar,
    .mx_EventTile[data-layout="bubble"] .mx_EventTile_avatar {
        line-height: 1;
    }

.mx_EventTile[data-layout="bubble"][data-has-reply="true"] > .mx_EventTile_line {
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
        }

.mx_EventTile[data-layout="bubble"][data-has-reply="true"] .mx_ReplyChain .mx_EventTile_reply {
                max-width: 90%;
                padding: 0;
            }

.mx_EventTile[data-layout="bubble"][data-has-reply="true"] .mx_ReplyChain .mx_EventTile_reply > a, 
                .mx_EventTile[data-layout="bubble"][data-has-reply="true"] .mx_ReplyChain .mx_EventTile_reply .mx_MessageActionBar + .mx_MessageTimestamp {
                    display: none !important;
                }

.mx_EventTile[data-layout="bubble"][data-has-reply="true"] .mx_ReplyChain .mx_EventTile {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                grid-gap: var(--gutterSize);
                gap: var(--gutterSize);
            }

.mx_EventTile[data-layout="bubble"][data-has-reply="true"] .mx_ReplyChain .mx_EventTile .mx_EventTile_avatar {
                    position: static;
                }

.mx_EventTile[data-layout="bubble"][data-has-reply="true"] .mx_ReplyChain .mx_EventTile .mx_DisambiguatedProfile {
                    display: none;
                }

.mx_EventTile[data-layout="bubble"] .mx_MPollBody {
        width: 550px; /* to prevent timestamp overlapping summary text */
        max-width: 100%;
    }

/* prevent overflowing a reply tile */

.mx_EventTile[data-layout="bubble"] .mx_MPollBody .mx_MPollBody_totalVotes {
            /* align summary text with corner timestamp */
            padding: 4px 0;
        }

.mx_EventTile[data-layout="bubble"].mx_EventTile_bad:hover::before {
                background: transparent;
            }

/* Special layout scenario for "Unable To Decrypt (UTD)" events */

.mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line {
            display: grid;
            grid-template:
                "reply reply" auto
                "shield body" auto
                / auto 1fr;
        }

.mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line .mx_UnknownBody,
            .mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line .mx_ReplyChain_wrapper,
            .mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line .mx_ViewSourceEvent {
                min-width: 0; /* Prevent a grid blowout */
            }

.mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line .mx_EventTile_e2eIcon {
                grid-area: shield;
                margin-top: auto;
                margin-bottom: auto;
            }

.mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line .mx_UnknownBody,
            .mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line .mx_DecryptionFailureBody {
                grid-area: body;
            }

.mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line .mx_ReplyChain_wrapper {
                grid-area: reply;
            }

/* "Unable To Decrypt" layout for hidden events */

.mx_EventTile[data-layout="bubble"].mx_EventTile_bad.mx_EventTile_info .mx_EventTile_line {
                grid-gap: 0 9px;
                gap: 0 9px; /* 9px: margin value of E2E icon */
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
                grid-template:
                    "shield source" auto
                    / auto 1fr;
            }

.mx_EventTile[data-layout="bubble"].mx_EventTile_bad.mx_EventTile_info .mx_EventTile_line .mx_ViewSourceEvent {
                    grid-area: source;
                }

.mx_EventTile[data-layout="bubble"] .mx_MTextBody {
        max-width: 100%;
    }

.mx_EventTile[data-layout="bubble"] .mx_LegacyCallEvent_wrapper,
    .mx_EventTile[data-layout="bubble"] .mx_CallEvent_wrapper {
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_EventTile.mx_EventTile_noBubble[data-layout="bubble"] {
    --backgroundColor: transparent;
}

.mx_EventTile.mx_EventTile_noBubble[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_emote {
        padding-right: 60px; /* align with bubbles text */
        font-style: italic;
    }

.mx_EventTile.mx_EventTile_noBubble[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_emote > a {
            /* timestamp anchor wrapper */
            -ms-flex-item-align: center;
                align-self: center;
            bottom: unset;
            top: unset;
            font-style: normal; /* undo italic above */
        }

.mx_EventTile.mx_EventTile_noBubble[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_emote .mx_MEmoteBody {
            padding: 4px 0;
        }

.mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_line > a, .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_line > a {
        /* hide this timestamp as the tile will render its own */
        display: none;
    }

.mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"],
.mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"],
.mx_EventTile.mx_EventTile_info[data-layout="bubble"] {
    padding: 5px 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
}

.mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_line,
    .mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_info,
    .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_line,
    .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_info,
    .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_line,
    .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_info {
        min-width: 100%;
        /* Preserve alignment with left edge of text in bubbles */
        margin: 0;
    }

.mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"],
.mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"],
.mx_EventTile.mx_EventTile_info[data-layout="bubble"],
.mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] {
    --backgroundColor: transparent;
    --gutterSize: 0;
}

.mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_avatar, .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_avatar, .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_avatar, .mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] .mx_EventTile_avatar {
        position: static;
        -webkit-box-ordinal-group: 0;
            -ms-flex-order: -1;
                order: -1;
        -webkit-margin-end: var(--EventTile_bubble_gap-inline);
                margin-inline-end: var(--EventTile_bubble_gap-inline); /* Same spacing between E2E icon and a hidden event */
    }

.mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_e2eIcon, .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_e2eIcon, .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_e2eIcon, .mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] .mx_EventTile_e2eIcon {
        -webkit-margin-start: 0;
                margin-inline-start: 0; /* mx_EventTile_avatar has margin-inline-end, so margin is not needed here */
        -ms-flex-item-align: center;
            align-self: center;
    }

.mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_line > a, 
        .mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp, 
        .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_line > a, 
        .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp, 
        .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_line > a, 
        .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp, 
        .mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] .mx_EventTile_line > a, 
        .mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp {
            right: auto;
            left: -77px;
            bottom: unset;
            -ms-flex-item-align: center;
                align-self: center;
        }

.mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_line > a .mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_line > a.mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp .mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_bubbleContainer[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp.mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_line > a .mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_line > a.mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp .mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_leftAlignedBubble[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp.mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_line > a .mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_line > a.mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp .mx_MessageTimestamp,
            .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp.mx_MessageTimestamp,
            .mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] .mx_EventTile_line > a .mx_MessageTimestamp,
            .mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] .mx_EventTile_line > a.mx_MessageTimestamp,
            .mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp .mx_MessageTimestamp,
            .mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] .mx_EventTile_line .mx_MessageActionBar + .mx_MessageTimestamp.mx_MessageTimestamp {
                vertical-align: middle;
            }

.mx_GenericEventListSummary[data-layout="bubble"] .mx_EventTile.mx_EventTile_info .mx_EventTile_line {
        /* Avoid overflow of event info by cancelling width settings */
        width: 100%;
        min-width: 0;
        max-width: 100%;
    }

/* increase margin between ELS and the next Event to not have our user avatar overlap the expand/collapse button */

.mx_GenericEventListSummary[data-layout="bubble"][data-expanded="false"] + .mx_EventTile[data-layout="bubble"][data-self="true"] {
        margin-top: 20px;
    }

.mx_GenericEventListSummary[data-layout="bubble"][data-expanded="true"] .mx_EventTile_info {
        padding: 2px 0;
        margin-right: 0;
    }

.mx_GenericEventListSummary[data-layout="bubble"][data-expanded="true"] .mx_EventTile_info .mx_MessageActionBar {
            /* Reset .mx_EventTile[data-layout="bubble"][data-self="false"] .mx_MessageActionBar */
            inset-inline-start: initial;
            inset-inline-end: 48px; /* align with that of right-column bubbles */
        }

.mx_GenericEventListSummary[data-layout="bubble"][data-expanded="true"] .mx_EventTile_info .mx_ReadReceiptGroup {
            /* match alignment to RRs of chat bubbles */
            inset-inline-end: calc(-1 * var(--ReadReceiptGroup_EventBubbleTile-spacing-end) + 60px);
        }

.mx_GenericEventListSummary[data-layout="bubble"][data-expanded="true"] .mx_EventTile_info::before {
            inset-inline-end: 0; /* match alignment of the hover background to that of chat bubbles */
        }

.mx_EventTile_tileError[data-layout="bubble"] .mx_EventTile_line {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; /* restore the centering */
}

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2020-2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EventTile {
    --EventTile_content-margin-inline-end: 34px;
    --EventTile_group_line-spacing-block-start: 1px;
    --EventTile_group_line-spacing-block-end: 3px;
    --EventTile_group_line-spacing-inline-start: 64px;
    --EventTile_group_line-line-height: 2.2rem;
    --EventTile_ThreadSummary-line-height: calc(2 * 1.2rem);

    -ms-flex-negative: 0;

        flex-shrink: 0;
    max-width: 100%;
    clear: both; /* TODO: check if this is necessary */
    padding-top: 18px;
    font-size: 1.4rem;
    position: relative;
}

.mx_EventTile .mx_EventTile_avatar {
        cursor: pointer;
        -webkit-user-select: none;
           -moz-user-select: none;
            -ms-user-select: none;
                user-select: none;
    }

.mx_EventTile .mx_EventTile_body {
        overflow-y: hidden;
    }

.mx_EventTile .mx_EventTile_receiptSent,
    .mx_EventTile .mx_EventTile_receiptSending {
        position: relative;
        display: inline-block;
        width: 16px;
        height: 16px;
    }

.mx_EventTile .mx_EventTile_receiptSent::before, .mx_EventTile .mx_EventTile_receiptSending::before {
            background-color: #8e99a4;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: 16px;
                    mask-size: 16px;
            width: 16px;
            height: 16px;
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
        }

.mx_EventTile .mx_EventTile_receiptSent::before {
        -webkit-mask-image: url(../../img/element-icons/circle-sent.8ba4da4.svg);
                mask-image: url(../../img/element-icons/circle-sent.8ba4da4.svg);
    }

.mx_EventTile .mx_EventTile_receiptSending::before {
        -webkit-mask-image: url(../../img/element-icons/circle-sending.3c01d11.svg);
                mask-image: url(../../img/element-icons/circle-sending.3c01d11.svg);
    }

.mx_EventTile .mx_EventTile_content.mx_EditMessageComposer,
        .mx_EventTile .mx_EventTile_content.mx_EditWysiwygComposer {
            /* Make sure the formatting bar is visible */
            overflow: visible;
        }

.mx_EventTile .mx_EventTile_searchHighlight {
        background-color: #0dbd8b;
        color: #ffffff;
        border-radius: 5px;
        padding-inline: 2px;
        cursor: pointer;
    }

.mx_EventTile .mx_EventTile_searchHighlight a {
            background-color: #0dbd8b;
            color: #ffffff;
        }

.mx_EventTile .mx_EventTileBubble {
        margin-block: var(--EventTileBubble_margin-block);
    }

.mx_EventTile .mx_MImageBody .mx_MImageBody_thumbnail_container {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center; /* on every layout */
        }

.mx_EventTile .mx_DisambiguatedProfile {
        color: #ffffff;
        font-size: 1.4rem;
        display: inline-block;
        padding-bottom: 0px;
        padding-top: 0px;
    }

.mx_EventTile .mx_ReactionsRow {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-flow: wrap;
            flex-flow: wrap;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        grid-gap: 4px;
        gap: 4px;
    }

.mx_EventTile .mx_ReplyChain--expanded .mx_EventTile_body {
            display: block;
            overflow-y: scroll;
        }

.mx_EventTile .mx_ReplyChain--expanded .mx_EventTile_collapsedCodeBlock {
            /* !important needed due to .mx_ReplyTile .mx_EventTile_content .mx_EventTile_pre_container > pre */
            display: block !important;
        }

.mx_RoomView_searchResultsPanel .mx_EventTile.mx_EventTile_contextual {
            opacity: 0.4;
        }

.mx_EventTile.mx_EventTile_highlight,
    .mx_EventTile.mx_EventTile_highlight .markdown-body,
    .mx_EventTile.mx_EventTile_highlight .mx_EventTile_edited {
        color: #ff5b55;
    }

.mx_EventTile.mx_EventTile_bubbleContainer {
        display: grid;
        grid-template-columns: 1fr 100px;
    }

.mx_EventTile.mx_EventTile_bubbleContainer .mx_EventTile_line {
            margin-right: 0;
            grid-column: 1 / 3;
            padding: 0 !important; /* override default padding of mx_EventTile_line so that we can be centered */
        }

.mx_EventTile.mx_EventTile_bubbleContainer .mx_EventTile_msgOption {
            grid-column: 2;
        }

.mx_EventTile.mx_EventTile_bubbleContainer:hover .mx_EventTile_line {
                /* To avoid bubble events being highlighted */
                background-color: inherit !important;
            }

.mx_EventTile.mx_EventTile_isEditing .mx_MessageTimestamp {
        visibility: hidden;
    }

.mx_EventTile[data-layout="irc"],
    .mx_EventTile[data-layout="group"] {
        --selected-message-border-width: 4px;

        /* TODO: adjust the values for IRC layout */
        --EventTile-box-shadow-offset-x: calc(50px + var(--selected-message-border-width));
        --EventTile-box-shadow-spread-radius: -50px;
    }

.mx_EventTile[data-layout="irc"] .mx_EventTile_e2eIcon, .mx_EventTile[data-layout="group"] .mx_EventTile_e2eIcon {
            position: absolute;
        }

.mx_EventTile[data-layout="irc"] .mx_MImageBody .mx_MImageBody_thumbnail_container, .mx_EventTile[data-layout="group"] .mx_MImageBody .mx_MImageBody_thumbnail_container {
                -webkit-box-pack: start;
                    -ms-flex-pack: start;
                        justify-content: flex-start;
                min-height: 4.4rem;
                min-width: 4.4rem;
            }

.mx_EventTile[data-layout="irc"] .mx_EventTile_line,
        .mx_EventTile[data-layout="irc"] .mx_EventTile_reply,
        .mx_EventTile[data-layout="group"] .mx_EventTile_line,
        .mx_EventTile[data-layout="group"] .mx_EventTile_reply {
            position: relative;
            border-radius: 8px;
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_reply, .mx_EventTile[data-layout="group"] .mx_EventTile_reply {
            margin-right: 10px;
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_msgOption, .mx_EventTile[data-layout="group"] .mx_EventTile_msgOption {
            float: right;
            text-align: right;
            position: relative;
            width: 90px;

            /* Hack to stop the height of this pushing the messages apart.
               Replaces margin-top: -6px. This interacts better with a read
               marker being in between. Content overflows. */
            height: 1px;
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_msgOption a, .mx_EventTile[data-layout="group"] .mx_EventTile_msgOption a {
                text-decoration: none;
            }

.mx_EventTile[data-layout="irc"].mx_EventTile_highlight .mx_EventTile_line, .mx_EventTile[data-layout="irc"].mx_EventTile_highlight .markdown-body .mx_EventTile_line, .mx_EventTile[data-layout="group"].mx_EventTile_highlight .mx_EventTile_line, .mx_EventTile[data-layout="group"].mx_EventTile_highlight .markdown-body .mx_EventTile_line {
                background-color: #25271f;
            }

.mx_EventTile[data-layout="irc"].focus-visible:focus-within .mx_EventTile_line, .mx_EventTile[data-layout="irc"].mx_EventTile_actionBarFocused .mx_EventTile_line, .mx_EventTile[data-layout="irc"].mx_EventTile_isEditing .mx_EventTile_line, .mx_EventTile[data-layout="irc"].mx_EventTile_selected .mx_EventTile_line, .mx_EventTile[data-layout="group"].focus-visible:focus-within .mx_EventTile_line, .mx_EventTile[data-layout="group"].mx_EventTile_actionBarFocused .mx_EventTile_line, .mx_EventTile[data-layout="group"].mx_EventTile_isEditing .mx_EventTile_line, .mx_EventTile[data-layout="group"].mx_EventTile_selected .mx_EventTile_line {
                background-color: #21262c;
            }

/* this is used for the tile for the event which is selected via the URL. */

.mx_EventTile[data-layout="irc"].mx_EventTile_isEditing > .mx_EventTile_line, .mx_EventTile[data-layout="irc"].mx_EventTile_selected > .mx_EventTile_line, .mx_EventTile[data-layout="group"].mx_EventTile_isEditing > .mx_EventTile_line, .mx_EventTile[data-layout="group"].mx_EventTile_selected > .mx_EventTile_line {
                /* TODO: ultimately we probably want some transition on here. */
                -webkit-box-shadow: inset var(--EventTile-box-shadow-offset-x) 0 0 var(--EventTile-box-shadow-spread-radius)
                    #0dbd8b;
                        box-shadow: inset var(--EventTile-box-shadow-offset-x) 0 0 var(--EventTile-box-shadow-spread-radius)
                    #0dbd8b;
            }

.mx_EventTile[data-layout="irc"].mx_EventTile_info .mx_EventTile_e2eIcon, .mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_e2eIcon {
                top: 0;
            }

.mx_EventTile[data-layout="irc"].mx_EventTile_continuation .mx_EventTile_line, .mx_EventTile[data-layout="group"].mx_EventTile_continuation .mx_EventTile_line {
            clear: both;
        }

.mx_EventTile[data-layout="irc"]:hover .mx_EventTile_line, .mx_EventTile[data-layout="group"]:hover .mx_EventTile_line {
                background-color: #21262c;
            }

.mx_EventTile[data-layout="irc"]:hover.mx_EventTile_verified .mx_EventTile_line, .mx_EventTile[data-layout="group"]:hover.mx_EventTile_verified .mx_EventTile_line {
                -webkit-box-shadow: inset var(--EventTile-box-shadow-offset-x) 0 0 var(--EventTile-box-shadow-spread-radius)
                    #0dbd8b;
                        box-shadow: inset var(--EventTile-box-shadow-offset-x) 0 0 var(--EventTile-box-shadow-spread-radius)
                    #0dbd8b;
            }

.mx_EventTile[data-layout="irc"]:hover.mx_EventTile_unverified .mx_EventTile_line, .mx_EventTile[data-layout="group"]:hover.mx_EventTile_unverified .mx_EventTile_line {
                -webkit-box-shadow: inset var(--EventTile-box-shadow-offset-x) 0 0 var(--EventTile-box-shadow-spread-radius)
                    #e8bf37;
                        box-shadow: inset var(--EventTile-box-shadow-offset-x) 0 0 var(--EventTile-box-shadow-spread-radius)
                    #e8bf37;
            }

.mx_EventTile[data-layout="irc"]:hover.mx_EventTile_unknown .mx_EventTile_line, .mx_EventTile[data-layout="group"]:hover.mx_EventTile_unknown .mx_EventTile_line {
                -webkit-box-shadow: inset var(--EventTile-box-shadow-offset-x) 0 0 var(--EventTile-box-shadow-spread-radius)
                    #e8bf37;
                        box-shadow: inset var(--EventTile-box-shadow-offset-x) 0 0 var(--EventTile-box-shadow-spread-radius)
                    #e8bf37;
            }

.mx_EventTile[data-layout="bubble"] .mx_EventTileBubble, .mx_EventTile[data-layout="group"] .mx_EventTileBubble {
            margin-inline: auto;
        }

.mx_EventTile[data-layout="bubble"] .mx_ReplyChain, .mx_EventTile[data-layout="group"] .mx_ReplyChain {
            margin-bottom: 8px;
        }

.mx_EventTile[data-layout="irc"] {
        --EventTile_irc_line-padding-block: 1px;

        /* add --right-padding value of MessageTimestamp only */
        /* stylelint-disable-next-line declaration-colon-space-after */
        --EventTile_irc_line_info-margin-inline-start: calc(
            var(--name-width) + var(--icon-width) + 1 * var(--right-padding)
        );

        display: -webkit-box;

        display: -ms-flexbox;

        display: flex;
        -webkit-box-align: start;
            -ms-flex-align: start;
                align-items: flex-start;
        padding-top: 0;
    }

.mx_EventTile[data-layout="irc"] > a {
            text-decoration: none; /* timestamps are links which shouldn't be underlined */
            min-width: 46px;
            min-width: var(--MessageTimestamp-width); /* ensure space for EventTile without timestamp */
        }

.mx_EventTile[data-layout="irc"] > * {
            margin-right: var(--right-padding);
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_avatar,
        .mx_EventTile[data-layout="irc"] .mx_EventTile_e2eIcon {
            height: 1.8rem;
            height: var(--irc-line-height);
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_avatar,
        .mx_EventTile[data-layout="irc"] .mx_DisambiguatedProfile,
        .mx_EventTile[data-layout="irc"] .mx_EventTile_e2eIcon,
        .mx_EventTile[data-layout="irc"] .mx_EventTile_msgOption {
            -ms-flex-negative: 0;
                flex-shrink: 0;
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_avatar {
            -webkit-box-ordinal-group: 2;
                -ms-flex-order: 1;
                    order: 1;
            position: relative;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
        }

/* Need to use important to override the js provided height and width values. */

.mx_EventTile[data-layout="irc"] .mx_EventTile_avatar > .mx_BaseAvatar,
            .mx_EventTile[data-layout="irc"] .mx_EventTile_avatar > .mx_BaseAvatar > * {
                height: 1.4rem !important;
                width: 1.4rem !important;
                font-size: 1rem !important;
                line-height: 1.5rem !important;
            }

.mx_EventTile[data-layout="irc"] .mx_DisambiguatedProfile {
            -webkit-box-ordinal-group: 3;
                -ms-flex-order: 2;
                    order: 2;
            width: var(--name-width);
            -webkit-margin-end: 0;
                    margin-inline-end: 0;
        }

/* override mx_EventTile > * */

.mx_EventTile[data-layout="irc"] .mx_DisambiguatedProfile > .mx_DisambiguatedProfile_displayName {
                width: 100%;
                text-align: end;
                overflow: hidden;
                text-overflow: ellipsis;
            }

.mx_EventTile[data-layout="irc"] .mx_DisambiguatedProfile > .mx_DisambiguatedProfile_mxid {
                visibility: collapse;
                margin-left: 0; /* Override the inherited margin. */
                padding: 0 5px;
            }

.mx_EventTile[data-layout="irc"] .mx_DisambiguatedProfile:hover {
                overflow: visible;
                z-index: 10;
            }

.mx_EventTile[data-layout="irc"] .mx_DisambiguatedProfile:hover > .mx_DisambiguatedProfile_displayName {
                    overflow: visible;
                    display: inline;
                    background-color: #21262c;
                    border-radius: 8px 0 0 8px;
                    padding-right: 8px;
                }

.mx_EventTile[data-layout="irc"] .mx_DisambiguatedProfile:hover > .mx_DisambiguatedProfile_mxid {
                    visibility: visible;
                    opacity: 1;
                    background-color: #21262c;
                }

.mx_EventTile[data-layout="irc"] .mx_EventTile_e2eIcon {
            padding: 0;
            -webkit-box-flex: 0;
                -ms-flex-positive: 0;
                    flex-grow: 0;
            background-position: center;
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_EventTile_e2eIcon,
            .mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_TextualEvent,
            .mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_ViewSourceEvent,
            .mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_MTextBody {
                /* add a 1px padding top and bottom because our larger
                emoji font otherwise gets cropped by anti-zalgo */
                padding: var(--EventTile_irc_line-padding-block) 0;
            }

.mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_EventTile_e2eIcon,
            .mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_TextualEvent,
            .mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_MTextBody {
                display: inline-block;
            }

.mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_ReplyTile .mx_MTextBody {
                    display: -webkit-box; /* Enable -webkit-line-clamp */
                }

.mx_EventTile[data-layout="irc"] .mx_EventTile_line,
        .mx_EventTile[data-layout="irc"] .mx_EventTile_reply {
            -webkit-box-ordinal-group: 4;
                -ms-flex-order: 3;
                    order: 3;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
            -ms-flex-negative: 1;
                flex-shrink: 1;
            min-width: 0;
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_reply {
            -webkit-box-ordinal-group: 5;
                -ms-flex-order: 4;
                    order: 4;
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_msgOption {
            -webkit-box-ordinal-group: 6;
                -ms-flex-order: 5;
                    order: 5;
        }

.mx_EventTile[data-layout="irc"] .mx_EventTile_msgOption .mx_ReadReceiptGroup {
                inset-block-start: -0.3rem; /* (var(--irc-line-height) - avatar height) / 2 */
            }

.mx_EventTile[data-layout="irc"] .mx_ReplyChain {
            margin: 0;
        }

.mx_EventTile[data-layout="irc"] .mx_MessageTimestamp {
            text-align: right;
        }

.mx_EventTile[data-layout="irc"] .mx_EditMessageComposer_buttons {
            position: relative;
        }

.mx_EventTile[data-layout="irc"] .mx_EventTileBubble {
            position: relative;
            left: var(--EventTile_irc_line_info-margin-inline-start);
        }

.mx_EventTile[data-layout="irc"] .mx_EventTileBubble.mx_cryptoEvent {
                left: unset;
            }

.mx_EventTile[data-layout="irc"] .mx_ReplyTile .mx_EventTileBubble {
            left: unset; /* Cancel the value specified above for the tile inside ReplyTile */
        }

.mx_EventTile[data-layout="irc"].mx_EventTile_isEditing > .mx_EventTile_line .mx_EditMessageComposer {
                /* add space for the stroke on box-shadow */
                -webkit-padding-start: calc(
                    var(--selected-message-border-width) + var(--EditMessageComposer-padding-inline)
                );
                        padding-inline-start: calc(
                    var(--selected-message-border-width) + var(--EditMessageComposer-padding-inline)
                );
            }

.mx_EventTile[data-layout="irc"].mx_EventTile_info .mx_EventTile_avatar {
                left: var(--EventTile_irc_line_info-margin-inline-start);
                top: 0;
                margin-right: var(--right-padding);
                padding-block: var(--EventTile_irc_line-padding-block);
            }

.mx_EventTile[data-layout="irc"].mx_EventTile_info .mx_EventTile_line {
                -webkit-margin-start: var(--EventTile_irc_line_info-margin-inline-start);
                        margin-inline-start: var(--EventTile_irc_line_info-margin-inline-start);
            }

.mx_EventTile[data-layout="irc"].mx_EventTile_info .mx_ViewSourceEvent, 
            .mx_EventTile[data-layout="irc"].mx_EventTile_info .mx_TextualEvent {
                line-height: 1.8rem;
                line-height: var(--irc-line-height);
            }

.mx_EventTile[data-layout="irc"].mx_EventTile_emote .mx_EventTile_avatar {
                /* add --right-padding value of MessageTimestamp only */
                margin-left: calc(var(--name-width) + var(--icon-width) + 1 * var(--right-padding));
            }

.mx_EventTile[data-layout="group"] .mx_EventTile_avatar {
            top: 14px;
            left: 8px;
        }

.mx_EventTile[data-layout="group"] .mx_EventTile_line,
        .mx_EventTile[data-layout="group"] .mx_EventTile_reply {
            padding-top: var(--EventTile_group_line-spacing-block-start);
            padding-bottom: var(--EventTile_group_line-spacing-block-end);
            padding-left: var(--EventTile_group_line-spacing-inline-start);
            line-height: var(--EventTile_group_line-line-height);
        }

.mx_EventTile[data-layout="group"] .mx_EventTile_e2eIcon {
            inset: 6px 0 0 44px;
        }

.mx_EventTile[data-layout="group"] .mx_EventTile_msgOption {
            -webkit-margin-end: 10px;
                    margin-inline-end: 10px;
        }

.mx_EventTile[data-layout="group"] .mx_EventTile_msgOption .mx_ReadReceiptGroup {
                /* This aligns the avatar with the last line of the */
                /* message. We want to move it one line up */
                /* See .mx_EventTile[data-layout=group] .mx_EventTile_line in _EventTile.scss */
                inset-block-start: calc(-2.2rem - 3px);
            }

.mx_EventTile[data-layout="group"] .mx_MessageTimestamp {
            position: absolute;
            left: 0;
            text-align: center;
        }

.mx_EventTile[data-layout="group"] .mx_ThreadSummary,
        .mx_EventTile[data-layout="group"] .mx_ThreadSummary_icon {
            margin-left: 64px;
        }

.mx_EventTile[data-layout="group"] .mx_ReactionsRow {
            margin: 4px 64px;
        }

.mx_EventTile[data-layout="group"] > .mx_DisambiguatedProfile {
            line-height: 2rem;
            margin-left: 64px;
            max-width: calc(100% - 64px);
        }

.mx_EventTile[data-layout="group"] > .mx_EventTile_avatar {
            position: absolute;
            z-index: 9;
        }

.mx_RoomView_timeline_rr_enabled .mx_EventTile[data-layout="group"] {

            /* on ELS we need the margin to allow interaction with the expand/collapse button */
            /* which is normally in the RR gutter */
        }

.mx_RoomView_timeline_rr_enabled .mx_EventTile[data-layout="group"] .mx_ThreadSummary,
            .mx_RoomView_timeline_rr_enabled .mx_EventTile[data-layout="group"] .mx_ThreadSummary_icon,
            .mx_RoomView_timeline_rr_enabled .mx_EventTile[data-layout="group"] .mx_EventTile_line {
                margin-right: 80px;
                min-height: 1.4rem;
            }

.mx_RoomView_timeline_rr_enabled .mx_EventTile[data-layout="group"] .mx_ThreadSummary {
                /* leave space on both left & right gutters */
                max-width: min(calc(100% - 64px - 80px), 600px);
            }

.mx_EventTile[data-layout="group"].mx_EventTile_continuation {
            padding-top: 0;
        }

.mx_EventTile[data-layout="group"].mx_EventTile_info {

            padding-top: 0;
        }

.mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_avatar,
            .mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_e2eIcon {
                margin: 3px 0 2px;
            }

.mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_avatar {
                top: auto;
                top: initial;
                inset-inline-start: 64px;
                height: 14px;
            }

.mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_line {
                padding-block: 3px 2px;
                /* 20px: avatar area */
                -webkit-padding-start: calc(var(--EventTile_group_line-spacing-inline-start) + 20px);
                        padding-inline-start: calc(var(--EventTile_group_line-spacing-inline-start) + 20px);
            }

.mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_line .mx_MessageTimestamp {
                    top: 0;
                }

.mx_EventTile[data-layout="group"].mx_EventTile_info.mx_EventTile_selected .mx_EventTile_line {
                /* TODO: check if this would be necessary; */
                -webkit-padding-start: calc(var(--EventTile_group_line-spacing-inline-start) + 20px);
                        padding-inline-start: calc(var(--EventTile_group_line-spacing-inline-start) + 20px);
            }

.mx_EventTile[data-layout="group"]:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line,
            .mx_EventTile[data-layout="group"]:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line,
            .mx_EventTile[data-layout="group"]:hover.mx_EventTile_unknown.mx_EventTile_info .mx_EventTile_line {
                -webkit-padding-start: calc(64px + 18px + var(--selected-message-border-width));
                        padding-inline-start: calc(64px + 18px + var(--selected-message-border-width));
            }

.mx_EventTile[data-layout="bubble"] {
        /* Other half of the gutter is provided by margin-bottom on the last tile
        of the section */
        margin-top: calc(var(--gutterSize) / 2);
        margin-left: var(--EventTile_bubble-margin-inline-start);

        /* Reset default values. TODO: remove */
        max-width: unset;
        padding-top: 0;
    }

.mx_EventTile[data-layout="bubble"] .mx_EventTile_msgOption .mx_ReadReceiptGroup {
                position: absolute;
                inset-block-start: auto;

                /* as close to right gutter without clipping as possible */
                inset-inline-end: calc(-1 * var(--ReadReceiptGroup_EventBubbleTile-spacing-end));

                /* (EventTileLine.line-height - ReadReceiptGroup.height) / 2 */
                /* this centers the ReadReceiptGroup if we’ve got a single line */
                inset-block-end: calc((1.8rem - 24px) / 2);
            }

.mx_EventTile[data-layout="bubble"] .mx_EventTileBubble {
            /* Timestamps are inside the tile, so the width can be less constrained */
            max-width: 600px;
        }

.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation {
            margin-top: 2px;
        }

.mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection {
            /* Other half of the gutter is provided by margin-top on the first
            tile of the section */
            margin-bottom: calc(var(--gutterSize) / 2);
        }

.mx_GenericEventListSummary[data-layout="irc"] .mx_EventTile_line .mx_RedactedBody, .mx_GenericEventListSummary[data-layout="group"] .mx_EventTile_line .mx_RedactedBody {
            line-height: 1; /* remove spacing between lines */
        }

/* Apply only collapsed events block */

.mx_GenericEventListSummary[data-layout="irc"] > .mx_EventTile_line {
            /* add --right-padding value of MessageTimestamp and avatar only */
            /* stylelint-disable-next-line declaration-colon-space-after */
            padding-left: calc(
                var(--name-width) + var(--icon-width) + 46px + 2 * var(--right-padding)
            );
            padding-left: calc(
                var(--name-width) + var(--icon-width) + var(--MessageTimestamp-width) + 2 * var(--right-padding)
            );
        }

.mx_GenericEventListSummary[data-layout="group"] .mx_EventTile_line {
            padding-left: 64px;
        }

.mx_GenericEventListSummary[data-layout="group"] .mx_GenericEventListSummary_unstyledList > .mx_EventTile_info .mx_EventTile_avatar ~ .mx_EventTile_line {
            /* override padding-left $left-gutter */
            -webkit-padding-start: calc(var(--EventTile_group_line-spacing-inline-start) + 20px);
                    padding-inline-start: calc(var(--EventTile_group_line-spacing-inline-start) + 20px);
        }

.mx_EventTile_content {
    /*
    all the overflow-y: hidden; are to trap Zalgos -
    but they introduce an implicit overflow-x: auto.
    so make that explicitly hidden too to avoid random
    horizontal scrollbars occasionally appearing, like in
    https://github.com/vector-im/vector-web/issues/1154
    */
    overflow-y: hidden;
    overflow-x: hidden;
    margin-right: var(--EventTile_content-margin-inline-end);
}

.mx_EventTile_content .mx_EventTile_edited,
    .mx_EventTile_content .mx_EventTile_pendingModeration {
        -webkit-user-select: none;
           -moz-user-select: none;
            -ms-user-select: none;
                user-select: none;
        font-size: 1.2rem;
        color: #b9bec6;
        display: inline-block;
        margin-left: 9px;
    }

.mx_EventTile_content .mx_EventTile_edited {
        cursor: pointer;
    }

.mx_EventTile_content .markdown-body {
        font-family: inherit !important;
        white-space: normal !important;
        line-height: inherit !important;
        color: inherit; /* inherit the colour from the dark or light theme by default (but not for code blocks) */
        font-size: 1.4rem;

        /*
        // actually, removing the Italic TTF provides
        // better results seemingly

        // compensate for Nunito italics being terrible
        // https://github.com/google/fonts/issues/1726
        em {
            transform: skewX(-14deg);
            display: inline-block;
        }
        */
    }

.mx_EventTile_content .markdown-body pre,
        .mx_EventTile_content .markdown-body code {
            font-family: "Inconsolata", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Courier", monospace,
    "Noto Color Emoji" !important;
            background-color: #21262c;
        }

.mx_EventTile_content .markdown-body code:not(pre *) {
            background-color: #21262c;
            border: 1px solid #394049;
            border-radius: 4px;
            /* The horizontal padding is added by gfm.css .markdown-body*/
            padding: 2px 0;
            /* Avoid inline code blocks to be sticked when on multiple lines*/
            line-height: 2.2rem;
            /* Avoid the border to be glued to the other words*/
            margin-right: 2px;
        }

.mx_EventTile_content .markdown-body code {
            white-space: pre-wrap; /* don't collapse spaces in inline code blocks */
        }

.mx_EventTile_content .markdown-body pre {
            /* have to use overlay rather than auto otherwise Linux and Windows */
            /* Chrome gets very confused about vertical spacing: */
            /* https://github.com/vector-im/vector-web/issues/754 */
            overflow-x: overlay;
            overflow-y: visible;
        }

.mx_EventTile_content .markdown-body pre::-webkit-scrollbar-corner {
                background: transparent;
            }

.mx_EventTile_content .markdown-body pre {

            border: 1px solid #394049;
}

.mx_EventTile_content .markdown-body pre code {
                white-space: pre;
            }

/* we want code blocks to be scrollable and not wrap */

.mx_EventTile_content .markdown-body pre code > * {
                    display: inline;
                }

.mx_EventTile_content .markdown-body h1,
        .mx_EventTile_content .markdown-body h2,
        .mx_EventTile_content .markdown-body h3,
        .mx_EventTile_content .markdown-body h4,
        .mx_EventTile_content .markdown-body h5,
        .mx_EventTile_content .markdown-body h6 {
            font-family: inherit !important;
            color: inherit;
        }

/* Make h1 and h2 the same size as h3. */

.mx_EventTile_content .markdown-body h1,
        .mx_EventTile_content .markdown-body h2 {
            font-size: 1.5em;
            border-bottom: none !important; /* override GFM */
        }

.mx_EventTile_content .markdown-body a {
            color: #238cf5;
        }

.mx_EventTile_content .markdown-body blockquote {
            border-left: 2px solid #dddddd;
            border-radius: 2px;
            padding: 0 10px;
        }

/* Override nested lists being lower-roman */

.mx_EventTile_content .markdown-body ol ol,
        .mx_EventTile_content .markdown-body ul ol {
            list-style-type: revert;
        }

/* Make list type disc to match rich text editor */

.mx_EventTile_content .markdown-body ul {
            list-style-type: disc;
        }

/* Spoiler stuff */

.mx_EventTile_spoiler {
    cursor: pointer;
}

.mx_EventTile_spoiler .mx_EventTile_spoiler_reason {
        color: #b9bec6;
        font-size: 1.1rem;
    }

.mx_EventTile_spoiler .mx_EventTile_spoiler_content {
        -webkit-filter: blur(5px) saturate(0.1) sepia(1);
                filter: blur(5px) saturate(0.1) sepia(1);
        -webkit-transition-duration: 0.5s;
                transition-duration: 0.5s;
    }

.mx_EventTile_spoiler.visible > .mx_EventTile_spoiler_content {
        -webkit-filter: none;
                filter: none;
    }

.mx_EventTile_bigEmoji {
    font-size: 48px;
    line-height: 57px;
}

.mx_EventTile_bigEmoji .mx_Emoji {
        font-size: inherit !important;
    }

.mx_EventTile_e2eIcon {
    position: relative;
    width: 14px;
    height: 14px;
    display: block;
    background-repeat: no-repeat;
    background-size: contain;
}

.mx_EventTile_e2eIcon::before,
    .mx_EventTile_e2eIcon::after {
        content: "";
        display: block;
        position: absolute;
        inset: 0;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

.mx_EventTile_e2eIcon::before {
        -webkit-mask-size: 80%;
                mask-size: 80%;
    }

.mx_EventTile_e2eIcon.mx_EventTile_e2eIcon_warning::after {
        -webkit-mask-image: url(../../img/e2e/warning.d370b49.svg);
                mask-image: url(../../img/e2e/warning.d370b49.svg);
        background-color: #ff5b55;
    }

.mx_EventTile_e2eIcon.mx_EventTile_e2eIcon_normal::after {
        -webkit-mask-image: url(../../img/e2e/normal.33e0430.svg);
                mask-image: url(../../img/e2e/normal.33e0430.svg);
        background-color: #b9bec6;
    }

.mx_EventTile_e2eIcon.mx_EventTile_e2eIcon_decryption_failure::after {
        -webkit-mask-image: url(../../img/e2e/decryption-failure.2c168d0.svg);
                mask-image: url(../../img/e2e/decryption-failure.2c168d0.svg);
        background-color: #a9b2bc;
    }

.mx_EventTile_body a:hover {
        text-decoration: underline;
    }

.mx_EventTile_body pre {
        border: 1px solid transparent;
    }

.mx_EventTile:hover .mx_EventTile_body pre,
        .mx_EventTile.focus-visible:focus-within .mx_EventTile_body pre {
            border: 1px solid #8e99a4;
        }

/* selector wrongly applies to pill avatars but those have explicit width/height passed at a higher specificity */

.mx_EventTile_body.markdown-body img {
        -o-object-fit: contain;
           object-fit: contain;
        -o-object-position: left top;
           object-position: left top;
    }

.mx_EventTile_clamp .mx_EventTile_body {
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        text-overflow: ellipsis;
        display: -webkit-box;
    }

.mx_EventTile_body .mx_EventTile_pre_container {
        /* For correct positioning of _copyButton (See TextualBody) */
        position: relative;
    }

.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_button, .mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_button {
                visibility: visible;
            }

.mx_EventTile_body .mx_EventTile_pre_container .mx_EventTile_collapsedCodeBlock {
            max-height: 30vh;
            padding-top: 12px;
            padding-bottom: 12px;
        }

/* Inserted adjacent to <pre> blocks, (See TextualBody) */

.mx_EventTile_body .mx_EventTile_pre_container .mx_EventTile_button {
            position: absolute;
            top: 8px;
            right: 8px;
            width: 19px;
            height: 19px;
            visibility: hidden;
            background-color: #b9bec6;
        }

.mx_EventTile_body .mx_EventTile_pre_container .mx_EventTile_button.mx_EventTile_buttonBottom {
                top: 33px;
            }

.mx_EventTile_body .mx_EventTile_pre_container .mx_EventTile_button.mx_EventTile_collapseButton,
            .mx_EventTile_body .mx_EventTile_pre_container .mx_EventTile_button.mx_EventTile_expandButton {
                -webkit-mask-size: 75%;
                        mask-size: 75%;
            }

.mx_EventTile_body .mx_EventTile_pre_container .mx_EventTile_copyButton {
            height: 17px;
            -webkit-mask-image: url(../../img/element-icons/copy.90230e2.svg);
                    mask-image: url(../../img/element-icons/copy.90230e2.svg);
            -webkit-mask-position: center center;
                    mask-position: center center;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            right: 9px;
            width: 17px;
        }

.mx_EventTile_lineNumbers {
    float: left;
    margin: 0 0.5em 0 -1.5em;
    color: gray;
}

.mx_EventTile_lineNumbers span {
        text-align: right;
        display: block;
        padding-left: 1em;
    }

.mx_EventTile_button {
    display: inline-block;
    cursor: pointer;
}

.mx_EventTile_collapseButton,
.mx_EventTile_expandButton {
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
}

.mx_EventTile_collapseButton {
    -webkit-mask-image: url(../../img/element-icons/minimise-collapse.f7c74eb.svg);
            mask-image: url(../../img/element-icons/minimise-collapse.f7c74eb.svg);
}

.mx_EventTile_expandButton {
    -webkit-mask-image: url(../../img/element-icons/maximise-expand.c0495d2.svg);
            mask-image: url(../../img/element-icons/maximise-expand.c0495d2.svg);
}

.mx_EventTile_tileError {
    color: red;
    text-align: center;

    /* Remove some of the default tile padding so that the error is centered */
    margin-right: 0;
}

.mx_EventTile_tileError .mx_EventTile_line {
        padding-left: 0;
        margin-right: 0;
    }

.mx_EventTile_tileError .mx_EventTile_line span {
            padding: 4px 8px;
        }

.mx_EventTile_tileError a {
        margin-left: 1em;
    }

.mx_EventTile:hover .mx_MessageActionBar,
.mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar,
[data-whatinput="keyboard"] .mx_EventTile:focus-within .mx_MessageActionBar,
.mx_EventTile.focus-visible:focus-within .mx_MessageActionBar {
    visibility: visible;
}

/* Inverse of the above to *disable* the animation on any indicators. This approach */

/* is less pretty, but is easier to target because otherwise we need to define the */

/* animation for when it's shown which means duplicating the style definition in */

/* multiple places. */

.mx_EventTile:not(:hover):not(.mx_EventTile_actionBarFocused):not([data-whatinput="keyboard"] :focus-within):not(.focus-visible:focus-within) .mx_MessageActionBar .mx_Indicator {
        -webkit-animation: none;
                animation: none;
    }

.mx_EventTile[data-shape="ThreadsList"],
.mx_EventTile[data-shape="Notification"] {
    --topOffset: 12px;
    --leftOffset: 48px; /* notification dot next to the timestamp */

    margin: calc(var(--topOffset) + 1px) 0 var(--topOffset); /* include the height of horizontal line */
    padding: 8px 24px 8px 8px;
    border-radius: 8px;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -ms-flex-flow: wrap;
        flex-flow: wrap;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_EventTile[data-shape="ThreadsList"]::after,
    .mx_EventTile[data-shape="ThreadsList"]::before,
    .mx_EventTile[data-shape="Notification"]::after,
    .mx_EventTile[data-shape="Notification"]::before {
        content: "";
        position: absolute;
    }

.mx_EventTile[data-shape="ThreadsList"]::after, .mx_EventTile[data-shape="Notification"]::after { /* exclude the height of horizontal line */
        inset: auto calc(32px - 8px) calc(-1 * var(--topOffset) - 1px) calc(var(--leftOffset) + 8px);

        height: 1px;
        background-color: #394049;
        pointer-events: none; /* disable the message action bar on hover */
    }

.mx_EventTile[data-shape="ThreadsList"]::before, .mx_EventTile[data-shape="Notification"]::before {
        inset: 0;
        pointer-events: none; /* ensures the title for the sender name can be correctly displayed */
    }

/* Display notification dot */

.mx_EventTile[data-shape="ThreadsList"][data-notification]::before,
    .mx_EventTile[data-shape="ThreadsList"] .mx_NotificationBadge,
    .mx_EventTile[data-shape="Notification"][data-notification]::before,
    .mx_EventTile[data-shape="Notification"] .mx_NotificationBadge {
        position: absolute; /* 14px: align the dot with the timestamp row */

        /* !important to fix overly specific CSS selector applied on mx_NotificationBadge */
        width: 8px !important;
        height: 8px !important;
        border-radius: 50%;
        inset: 14px 8px auto auto;
    }

.mx_EventTile[data-shape="ThreadsList"] .mx_NotificationBadge_count, .mx_EventTile[data-shape="Notification"] .mx_NotificationBadge_count {
        display: none;
    }

.mx_EventTile[data-shape="ThreadsList"][data-notification="total"]::before, .mx_EventTile[data-shape="Notification"][data-notification="total"]::before {
        background-color: #fff;
    }

.mx_EventTile[data-shape="ThreadsList"][data-notification="highlight"]::before, .mx_EventTile[data-shape="Notification"][data-notification="highlight"]::before {
        background-color: #ff5b55;
    }

.mx_EventTile[data-shape="ThreadsList"]:last-child::after, .mx_EventTile[data-shape="Notification"]:last-child::after {
            content: unset;
        }

.mx_EventTile[data-shape="ThreadsList"]:last-child, .mx_EventTile[data-shape="Notification"]:last-child {

        margin-bottom: 0;
}

.mx_EventTile[data-shape="ThreadsList"]:first-child, .mx_EventTile[data-shape="Notification"]:first-child {
        margin-top: 0;
    }

.mx_EventTile[data-shape="ThreadsList"] .mx_EventTile_avatar, .mx_EventTile[data-shape="Notification"] .mx_EventTile_avatar {
        inset: 8px auto auto 8px;
    }

.mx_EventTile[data-shape="ThreadsList"] .mx_EventTile_details, .mx_EventTile[data-shape="Notification"] .mx_EventTile_details {
        overflow: hidden;
    }

.mx_EventTile[data-shape="ThreadsList"] .mx_DisambiguatedProfile, .mx_EventTile[data-shape="Notification"] .mx_DisambiguatedProfile {
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
    }

.mx_EventTile[data-shape="ThreadsList"] .mx_DisambiguatedProfile .mx_DisambiguatedProfile_displayName,
        .mx_EventTile[data-shape="ThreadsList"] .mx_DisambiguatedProfile .mx_DisambiguatedProfile_mxid,
        .mx_EventTile[data-shape="Notification"] .mx_DisambiguatedProfile .mx_DisambiguatedProfile_displayName,
        .mx_EventTile[data-shape="Notification"] .mx_DisambiguatedProfile .mx_DisambiguatedProfile_mxid {
            display: block;
            overflow: hidden;
            text-overflow: ellipsis;
        }

.mx_EventTile[data-shape="ThreadsList"] .mx_DisambiguatedProfile .mx_DisambiguatedProfile_displayName, .mx_EventTile[data-shape="Notification"] .mx_DisambiguatedProfile .mx_DisambiguatedProfile_displayName {
            -webkit-box-flex: 0;
                -ms-flex: none;
                    flex: none;
            max-width: 100%;
        }

.mx_EventTile[data-shape="ThreadsList"] .mx_DisambiguatedProfile .mx_DisambiguatedProfile_mxid, .mx_EventTile[data-shape="Notification"] .mx_DisambiguatedProfile .mx_DisambiguatedProfile_mxid {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
        }

.mx_EventTile[data-shape="ThreadsList"] .mx_EventTile_line, .mx_EventTile[data-shape="Notification"] .mx_EventTile_line {
        width: 100%;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        padding-bottom: 0;
        -webkit-padding-start: var(--leftOffset);
                padding-inline-start: var(--leftOffset);
    }

.mx_EventTile[data-shape="ThreadsList"] .mx_MessageTimestamp, .mx_EventTile[data-shape="Notification"] .mx_MessageTimestamp {
        font-size: 1.2rem;
        width: unset; /* Cancel the default width */
        overflow: hidden; /* ensure correct overflow behavior */
        text-overflow: ellipsis;
        position: static;
        position: initial;
        margin-left: auto; /* to ensure it's end-aligned even if it's the only element of its parent */
    }

.mx_EventTile[data-shape="ThreadsList"]:hover, .mx_EventTile[data-shape="Notification"]:hover {
        background-color: #21262c;
    }

/* ThreadsList has always group layout */

.mx_EventTile[data-shape="ThreadsList"][data-layout="group"]:hover .mx_EventTile_line, .mx_EventTile[data-shape="Notification"][data-layout="group"]:hover .mx_EventTile_line {
            background-color: #21262c; /* override $event-selected-color */
            -webkit-box-shadow: none;
                    box-shadow: none; /* don't show the verification left stroke in the thread list */
        }

.mx_EventTile[data-shape="ThreadsList"] .mx_ThreadPanel_replies {
        margin-top: 8px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        position: relative;
    }

.mx_EventTile[data-shape="ThreadsList"] .mx_ThreadPanel_replies::before {
            content: "";
            display: inline-block;
            -webkit-mask-image: url(../../img/element-icons/thread-summary.1c5653f.svg);
                    mask-image: url(../../img/element-icons/thread-summary.1c5653f.svg);
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            height: 18px;
            min-width: 18px;
            background-color: #a9b2bc !important;
        }

.mx_EventTile[data-shape="ThreadsList"] .mx_ThreadPanel_replies .mx_ThreadPanel_replies_amount {
            color: #a9b2bc;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            white-space: nowrap;
            position: relative;
            padding: 0 12px 0 8px;
            line-height: var(--EventTile_ThreadSummary-line-height);
            font-size: 1.2rem; /* Same font size as the counter on the main panel */
        }

.mx_EventTile[data-shape="ThreadsList"] .mx_ThreadPanel_replies .mx_ThreadSummary_content {
            text-overflow: ellipsis;
            overflow: hidden;
            white-space: nowrap;
        }

/* For style rules of ThreadView, see _ThreadPanel.pcss */

.mx_ThreadView {
    --ThreadView_group_spacing-start: 56px; /* 56px: 64px - 8px (padding) */
    --ThreadView_group_spacing-end: 8px;
}

/* same as padding */

.mx_ThreadView .mx_EventTile {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_ThreadView .mx_EventTile .mx_EventTile_roomName {
            display: none;
        }

/* handling for hidden events (e.g reactions) in the thread view */

.mx_ThreadView .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar {
                position: absolute;
                top: 1.5px; /* Align with hidden event content */
                margin-top: 0;
                margin-bottom: 0;
                width: 14px; /* avatar img size */
                height: 14px; /* avatar img size */
            }

.mx_ThreadView .mx_EventTile.mx_EventTile_info .mx_ViewSourceEvent_toggle {
                display: none; /* hide the hidden event expand button, not enough
                space, view source can still be used */
            }

.mx_ThreadView .mx_EventTile.mx_EventTile_info.mx_EventTile_selected .mx_EventTile_line,
            .mx_ThreadView .mx_EventTile.mx_EventTile_info .mx_EventTile_line {

                -webkit-padding-start: 0;

                        padding-inline-start: 0;
                line-height: 1.2rem;
            }

.mx_ThreadView .mx_EventTile.mx_EventTile_info.mx_EventTile_selected .mx_EventTile_line .mx_EventTile_content,
                .mx_ThreadView .mx_EventTile.mx_EventTile_info.mx_EventTile_selected .mx_EventTile_line .mx_RedactedBody,
                .mx_ThreadView .mx_EventTile.mx_EventTile_info .mx_EventTile_line .mx_EventTile_content,
                .mx_ThreadView .mx_EventTile.mx_EventTile_info .mx_EventTile_line .mx_RedactedBody {
                    width: auto;
                    font-size: 1.2rem;
                }

.mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="irc"],
            .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="group"] {
                padding-top: 0;
            }

.mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="irc"] .mx_EventTile_avatar, .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="group"] .mx_EventTile_avatar {
                    /* 14px: avatar width, 4px: align with text */
                    left: calc(46px + 14px - 4px);
                    left: calc(var(--MessageTimestamp-width) + 14px - 4px);
                    z-index: 9; /* position above the hover styling */
                }

.mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="irc"] .mx_MessageTimestamp, .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="group"] .mx_MessageTimestamp {
                    top: 2px; /* Align with avatar */
                }

.mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="irc"].mx_EventTile_selected .mx_EventTile_line .mx_EventTile_content,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="irc"].mx_EventTile_selected .mx_EventTile_line .mx_RedactedBody,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="irc"] .mx_EventTile_line .mx_EventTile_content,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="irc"] .mx_EventTile_line .mx_RedactedBody,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="group"].mx_EventTile_selected .mx_EventTile_line .mx_EventTile_content,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="group"].mx_EventTile_selected .mx_EventTile_line .mx_RedactedBody,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="group"] .mx_EventTile_line .mx_EventTile_content,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="group"] .mx_EventTile_line .mx_RedactedBody {
                        /* 14px: avatar width, 6px: 20px - 14px */
                        -webkit-margin-start: calc(14px + 6px);
                                margin-inline-start: calc(14px + 6px);
                    }

.mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_avatar {
                    inset-inline-start: 0;
                }

.mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="bubble"].mx_EventTile_selected .mx_EventTile_line .mx_EventTile_content,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="bubble"].mx_EventTile_selected .mx_EventTile_line .mx_RedactedBody,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_line .mx_EventTile_content,
                    .mx_ThreadView .mx_EventTile.mx_EventTile_info[data-layout="bubble"] .mx_EventTile_line .mx_RedactedBody {
                        -webkit-margin-start: calc(var(--ThreadView_group_spacing-start) + 14px + 6px);
                                margin-inline-start: calc(var(--ThreadView_group_spacing-start) + 14px + 6px);
                    }

.mx_ThreadView .mx_EventTile[data-layout="irc"],
        .mx_ThreadView .mx_EventTile[data-layout="group"] {
            -webkit-padding-before: 16px;
                    padding-block-start: 16px;
        }

.mx_ThreadView .mx_EventTile[data-layout="irc"] .mx_EventTile_line,
            .mx_ThreadView .mx_EventTile[data-layout="irc"] .mx_ReactionsRow,
            .mx_ThreadView .mx_EventTile[data-layout="group"] .mx_EventTile_line,
            .mx_ThreadView .mx_EventTile[data-layout="group"] .mx_ReactionsRow {
                -webkit-margin-end: var(--ThreadView_group_spacing-end);
                        margin-inline-end: var(--ThreadView_group_spacing-end);
            }

.mx_ThreadView .mx_EventTile[data-layout="irc"] .mx_EventTile_line, .mx_ThreadView .mx_EventTile[data-layout="group"] .mx_EventTile_line {
                padding-block: var(--BaseCard_EventTile_line-padding-block);

                /* Add padding to align message text with summary text */
                /* See: .mx_EventTile[data-layout="group"] .mx_EventTile_line */
                -webkit-padding-start: var(--ThreadView_group_spacing-start);
                        padding-inline-start: var(--ThreadView_group_spacing-start);
            }

.mx_ThreadView .mx_EventTile[data-layout="irc"] .mx_EventTile_line .mx_EventTile_content.mx_EditMessageComposer, .mx_ThreadView .mx_EventTile[data-layout="group"] .mx_EventTile_line .mx_EventTile_content.mx_EditMessageComposer {
                        -webkit-padding-start: 0;
                                padding-inline-start: 0; /* align start of first letter with that of the event body */
                    }

.mx_ThreadView .mx_EventTile[data-layout="irc"] .mx_ReactionsRow, .mx_ThreadView .mx_EventTile[data-layout="group"] .mx_ReactionsRow {
                /* Align with message text and summary text */
                -webkit-margin-start: var(--ThreadView_group_spacing-start);
                        margin-inline-start: var(--ThreadView_group_spacing-start);
            }

.mx_ThreadView .mx_EventTile[data-layout="irc"].mx_EventTile_continuation, .mx_ThreadView .mx_EventTile[data-layout="group"].mx_EventTile_continuation {
                -webkit-padding-before: 0;
                        padding-block-start: 0; /* Cancel padding-block-start */
            }

.mx_ThreadView .mx_EventTile[data-layout="group"] {
            width: 100%;
        }

.mx_ThreadView .mx_EventTile[data-layout="group"] .mx_EventTile_senderDetails {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
                grid-gap: 16px;
                gap: 16px; /* gap between the avatar and the sender ID */
                -webkit-padding-start: 8px;
                        padding-inline-start: 8px;
            }

.mx_ThreadView .mx_EventTile[data-layout="group"] .mx_EventTile_senderDetails a {
                    -webkit-box-flex: 1;
                        -ms-flex: 1;
                            flex: 1;
                    min-width: unset;
                    max-width: 100%;
                    display: -webkit-box;
                    display: -ms-flexbox;
                    display: flex;
                    -webkit-box-align: center;
                        -ms-flex-align: center;
                            align-items: center;
                }

.mx_ThreadView .mx_EventTile[data-layout="group"] .mx_EventTile_senderDetails a .mx_DisambiguatedProfile {
                        margin-left: 8px;
                        -webkit-box-flex: 1;
                            -ms-flex: 1;
                                flex: 1;
                    }

.mx_ThreadView .mx_EventTile[data-layout="group"] .mx_MessageTimestamp {
                position: absolute; /* for IRC layout */
                top: 2px; /* Align with mx_EventTile_content */
            }

.mx_ThreadView .mx_EventTile[data-layout="group"]:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line,
                .mx_ThreadView .mx_EventTile[data-layout="group"]:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line,
                .mx_ThreadView .mx_EventTile[data-layout="group"]:hover.mx_EventTile_unknown.mx_EventTile_info .mx_EventTile_line {
                    -webkit-padding-start: 0;
                            padding-inline-start: 0;
                }

.mx_ThreadView .mx_EventTile[data-layout="bubble"] {
            margin-inline: var(--BaseCard_EventTile-spacing-inline);
        }

.mx_ThreadView .mx_EventTile[data-layout="bubble"]::before {
                inset-inline: calc(-1 * var(--BaseCard_EventTile-spacing-inline));
                z-index: auto; /* enable background color on hover */
            }

.mx_ThreadView .mx_EventTile[data-layout="bubble"] .mx_ReactionsRow {
                position: relative; /* display on hover */
            }

.mx_ThreadView .mx_EventTile[data-layout="bubble"] .mx_EventTile_line.mx_EventTile_mediaLine {
                padding-block: 0;
                -webkit-padding-start: 0;
                        padding-inline-start: 0;
                max-width: var(--EventBubbleTile_line-max-width);
            }

.mx_ThreadView .mx_EventTile[data-layout="bubble"][data-self="true"] {
                -webkit-box-align: end;
                    -ms-flex-align: end;
                        align-items: flex-end;
            }

.mx_ThreadView .mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line.mx_EventTile_mediaLine {
                    margin: 0 var(--EventTile_bubble_line-margin-inline-end) 0 0; /* align with normal messages */
                }

.mx_ThreadView .mx_GenericEventListSummary[data-layout="irc"] > .mx_EventTile_line, .mx_ThreadView .mx_GenericEventListSummary[data-layout="group"] > .mx_EventTile_line {
                -webkit-padding-start: var(--ThreadView_group_spacing-start);
                        padding-inline-start: var(--ThreadView_group_spacing-start); /* align summary text with message text */
                -webkit-padding-end: var(--ThreadView_group_spacing-end);
                        padding-inline-end: var(--ThreadView_group_spacing-end); /* align summary text with message text */
            }

/* Cascading - compact modern layout on the main timeline and the right panel */

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] {
        --MatrixChat_useCompactLayout_group-padding-top: 4px;
        --MatrixChat_useCompactLayout-top-avatar: 2px;
        --MatrixChat_useCompactLayout-top-e2eIcon: 3px;
        --MatrixChat_useCompactLayout_line-spacing-block: 0px;

        padding-top: var(--MatrixChat_useCompactLayout_group-padding-top);
    }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_line,
        .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_reply {
            padding-block: var(--MatrixChat_useCompactLayout_line-spacing-block);
        }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_ReplyChain {
            margin-bottom: 4px;
        }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_info {
            padding-top: 0; /* same as the padding for non-compact .mx_EventTile.mx_EventTile_info */
            font-size: 1.3rem;
        }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_e2eIcon,
            .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_avatar {
                top: 0;
                margin-block: var(--MatrixChat_useCompactLayout_line-spacing-block);
            }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_line,
            .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_info .mx_EventTile_reply {
                line-height: 2rem;
            }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_emote {
            padding-top: 8px;
        }

/* add a bit more space for emotes so that avatars don't collide */

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_emote .mx_EventTile_avatar {
                top: var(--MatrixChat_useCompactLayout-top-avatar);
            }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_emote .mx_EventTile_line,
            .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_emote .mx_EventTile_reply {
                padding-bottom: 1px;
            }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_line,
                .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_reply {
                    padding-bottom: var(--MatrixChat_useCompactLayout_line-spacing-block);
                }

/* Cascading - apply zero padding to every element including mx_EventTile_emote */

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"].mx_EventTile_continuation {
            padding-top: var(--MatrixChat_useCompactLayout_line-spacing-block);
        }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_avatar {
            top: var(--MatrixChat_useCompactLayout-top-avatar);
        }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_e2eIcon {
            top: var(--MatrixChat_useCompactLayout-top-e2eIcon);
        }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_DisambiguatedProfile {
            font-size: 1.3rem;
        }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_msgOption .mx_ReadReceiptGroup {
                /* This aligns the avatar with the last line of the */
                /* message. We want to move it one line up - 2rem */
                inset-block-start: -2rem;
            }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_content .markdown-body p,
            .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_content .markdown-body ul,
            .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_content .markdown-body ol,
            .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_content .markdown-body dl,
            .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_content .markdown-body blockquote,
            .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_content .markdown-body pre,
            .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_EventTile_content .markdown-body table {
                margin-bottom: 4px; /* 1/4 of the non-compact margin-bottom */
            }

.mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"][data-shape="ThreadsList"][data-notification]::before,
        .mx_MatrixChat_useCompactLayout .mx_EventTile[data-layout="group"] .mx_NotificationBadge {
            /* stylelint-disable-next-line declaration-colon-space-after */
            inset-block-start: calc(
                14px - var(--MatrixChat_useCompactLayout_group-padding-top)
            );
        }

.mx_EventTile_details {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    width: -webkit-fill-available;
    width: -moz-available;
    width: stretch;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    grid-gap: 8px;
    gap: 8px;
    margin-left: var(--leftOffset);
}

.mx_EventTile_details .mx_EventTile_truncated {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

/* Media query for mobile UI */

@media only screen and (max-width: 480px) {
    .mx_EventTile_content {
        margin-right: 0;
    }
}

/*
Copyright 2021 Robin Townsend <robin@robin.town>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EventTileBubble.mx_HistoryTile {
    margin: var(--EventTileBubble_margin-block) auto;
}

.mx_EventTileBubble.mx_HistoryTile::before {
        background-color: #b9bec6;
        -webkit-mask-image: url(../../img/element-icons/hide.fa3b90e.svg);
                mask-image: url(../../img/element-icons/hide.fa3b90e.svg);
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

:root {
    --irc-line-height: 1.8rem;
}

.mx_IRCLayout {
    --name-width: 80px; /* cf. ircDisplayNameWidth on Settings.tsx */
    --icon-width: 14px;
    --line-height: var(--irc-line-height);
    --right-padding: 5px;

    line-height: var(--line-height) !important;
}

.mx_IRCLayout blockquote {
        margin: 0;
    }

.mx_IRCLayout .mx_NewRoomIntro > h2 {
            line-height: normal;
            line-height: initial; /* Cancel var(--irc-line-height) */
        }

.mx_IRCLayout .mx_ReplyChain .mx_DisambiguatedProfile {
            width: unset;
            background: transparent;
            -webkit-box-ordinal-group: unset;
                -ms-flex-order: unset;
                    order: unset;
            -ms-flex-negative: unset;
                flex-shrink: unset; /* Unset flex-shrink to prevent long display name blowout */
        }

.mx_IRCLayout .mx_ReplyChain .mx_EventTile_emote > .mx_EventTile_avatar {
                margin-left: 0;
                margin-left: initial;
            }

.mx_IRCLayout .mx_ReplyChain .mx_MessageTimestamp {
            width: auto;
            width: initial;
        }

/**
         * adding the icon back in the document flow
         * if it's not present, there's no unwanted wasted space
         */

.mx_IRCLayout .mx_ReplyChain .mx_EventTile_e2eIcon {
            position: relative;
            -webkit-box-ordinal-group: 0;
                -ms-flex-order: -1;
                    order: -1;
        }

.mx_IRCLayout .mx_ProfileResizer {
        --resizer-width: 15px;
        --resizer-a11y: 3px; /* Magic number, to be replaced with something more proper from the perspective of a11y */

        position: absolute;
        height: 100%;
        width: var(--resizer-width);
        cursor: col-resize;
        z-index: 100;

        /* Add width of every element rendered before the resizer (including padding for the avatar and the display
           name), subtracting the resizer width itself to prevent the resizer from overlapping the text and moving
           the resizer a bit to the left to make it easier to avoid selecting the resizer when highlighting text.
           Please note that MessageTimestamp does not have inline padding. */
        inset-inline-start: calc(
            18px + 46px + var(--icon-width) +
                var(--right-padding) + var(--name-width) + var(--right-padding) - var(--resizer-width) -
                var(--resizer-a11y)
        );
        inset-inline-start: calc(
            var(--RoomView_MessageList-padding) + var(--MessageTimestamp-width) + var(--icon-width) +
                var(--right-padding) + var(--name-width) + var(--right-padding) - var(--resizer-width) -
                var(--resizer-a11y)
        );
    }

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

@charset "utf-8";

.mx_JumpToBottomButton {
    z-index: 1000;
    position: absolute;
    /* 12 because height is 50 but button is only 38 = 12+(50-38) = 24 */
    bottom: 12px;
    right: 24px;
    width: 38px;
    /* give it a fixed height so the badge doesn't make */
    /* it taller and pop upwards when visible */
    height: 50px;
    text-align: center;
}

.mx_JumpToBottomButton_badge {
    position: relative;
    top: -12px;
    border-radius: 16px;
    font-weight: bold;
    font-size: 1.2rem;
    line-height: 1.4rem;
    text-align: center;
    /* to be able to get it centered */
    /* with text-align in parent */
    display: inline-block;
    padding: 0 4px;
    color: #ffffff;
    background-color: #91a1c0;
}

.mx_JumpToBottomButton_highlight .mx_JumpToBottomButton_badge {
    color: #f2f5f8;
    background-color: #ff5b55;
}

.mx_JumpToBottomButton_scrollDown {
    position: relative;
    display: block;
    height: 38px;
    border-radius: 19px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    background: #15191e;
    border: 1.3px solid #91a1c0;
    cursor: pointer;
}

.mx_JumpToBottomButton_scrollDown::before {
    content: "";
    position: absolute;
    inset: 0;
    -webkit-mask-image: url(../../img/element-icons/message/chevron-up.dabdada.svg);
            mask-image: url(../../img/element-icons/message/chevron-up.dabdada.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-size: 20px;
            mask-size: 20px;
    -webkit-mask-position: center 6px;
            mask-position: center 6px;
    -webkit-transform: rotate(180deg);
            transform: rotate(180deg);
    background: #91a1c0;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LinkPreviewGroup .mx_LinkPreviewGroup_hide {
        cursor: pointer;
        width: 18px;
        height: 18px;
    }

.mx_LinkPreviewGroup .mx_LinkPreviewGroup_hide img {
            -webkit-box-flex: 0;
                -ms-flex: 0 0 40px;
                    flex: 0 0 40px;
            visibility: hidden;
        }

.mx_LinkPreviewGroup:hover .mx_LinkPreviewGroup_hide img,
    .mx_LinkPreviewGroup .mx_LinkPreviewGroup_hide.focus-visible:focus img {
        visibility: visible;
    }

.mx_LinkPreviewGroup > .mx_AccessibleButton {
        color: #0dbd8b;
        text-align: center;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LinkPreviewWidget {
    margin: 16px 0 16px auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-column-gap: 4px;
    -webkit-column-gap: 4px;
       -moz-column-gap: 4px;
            column-gap: 4px;
    -webkit-border-start: 2px solid #dddddd;
            border-inline-start: 2px solid #dddddd;
    border-radius: 2px;
    color: #888;
}

.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget {
        margin-top: 6px;
        margin-bottom: 6px;
    }

/* Exclude mx_LinkPreviewGroup_hide from wrapping */

.mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        grid-row-gap: 8px;
        row-gap: 8px;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
    }

.mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption .mx_LinkPreviewWidget_image,
        .mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption .mx_LinkPreviewWidget_caption {
            -webkit-margin-start: 16px;
                    margin-inline-start: 16px;
            min-width: 0; /* Prevent blowout */
        }

.mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption .mx_LinkPreviewWidget_image {
            -webkit-box-flex: 0;
                -ms-flex: 0 0 100px;
                    flex: 0 0 100px;
            text-align: center;
            cursor: pointer;
        }

.mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption .mx_LinkPreviewWidget_caption {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            overflow: hidden; /* cause it to wrap rather than clip */
        }

.mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption .mx_LinkPreviewWidget_title,
        .mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption .mx_LinkPreviewWidget_description {
            display: -webkit-box;
            -webkit-box-orient: vertical;
            overflow: hidden;
            white-space: normal;
        }

.mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption .mx_LinkPreviewWidget_title {
            font-weight: bold;
            -webkit-line-clamp: 2;
        }

.mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption .mx_LinkPreviewWidget_title .mx_LinkPreviewWidget_siteName {
                font-weight: normal;
            }

.mx_LinkPreviewWidget .mx_LinkPreviewWidget_wrapImageCaption .mx_LinkPreviewWidget_description {
            margin-top: 8px;
            word-wrap: break-word;
            -webkit-line-clamp: 3;
        }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LiveContentSummary {
    color: #a9b2bc;
}

.mx_LiveContentSummary .mx_LiveContentSummary_text::before {
            display: inline-block;
            vertical-align: text-bottom;
            content: "";
            background-color: #a9b2bc;
            -webkit-mask-size: 16px;
                    mask-size: 16px;
            width: 16px;
            height: 16px;
            margin-right: 4px;
        }

.mx_LiveContentSummary .mx_LiveContentSummary_text.mx_LiveContentSummary_text_video::before {
            -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
                    mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
        }

.mx_LiveContentSummary .mx_LiveContentSummary_text.mx_LiveContentSummary_text_active {
            color: #0dbd8b;
        }

.mx_LiveContentSummary .mx_LiveContentSummary_text.mx_LiveContentSummary_text_active::before {
                background-color: #0dbd8b;
            }

.mx_LiveContentSummary .mx_LiveContentSummary_participants::before {
        display: inline-block;
        vertical-align: text-bottom;
        content: "";
        background-color: #a9b2bc;
        -webkit-mask-image: url(../../img/element-icons/group-members.483392b.svg);
                mask-image: url(../../img/element-icons/group-members.483392b.svg);
        -webkit-mask-size: 16px;
                mask-size: 16px;
        width: 16px;
        height: 16px;
        margin-right: 2px;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MemberInfo {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    overflow-y: auto;
    margin-top: 8px;
}

.mx_MemberInfo h2 {
        font-size: 1.8rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        margin: 16px 0 16px 15px;
    }

.mx_MemberInfo .mx_RoomTile_titleContainer {
        width: 154px;
    }

.mx_MemberInfo .mx_RoomTile_badge {
        display: none;
    }

.mx_MemberInfo .mx_RoomTile_title {
        width: 160px;
    }

.mx_MemberInfo h3 {
        text-transform: uppercase;
        color: #61708b;
        font-weight: bold;
        font-size: 1.2rem;
        margin: 4px 0;
    }

.mx_MemberInfo_name {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.mx_MemberInfo_name > .mx_E2EIcon {
        margin-right: 0;
    }

.mx_MemberInfo_name h2 {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        overflow-x: auto;
        max-height: 50px;
    }

.mx_MemberInfo_cancel {
    height: 16px;
    width: 16px;
    padding: 10px 0 10px 10px;
    cursor: pointer;
    -webkit-mask-image: url(../../img/minimise.465c9ab.svg);
            mask-image: url(../../img/minimise.465c9ab.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: 16px center;
            mask-position: 16px center;
    background-color: #b9bec6;
}

.mx_MemberInfo_container {
    margin: 0 16px 16px 16px;
}

.mx_MemberInfo_container.mx_MemberInfo_container--profile {
        margin-bottom: 16px;
        font-size: 1.5rem;
        position: relative;
    }

.mx_MemberInfo_avatar {
    background: rgba(38, 39, 43, 0.82);
    margin-bottom: 16px;
}

.mx_MemberInfo_avatar > img {
        height: auto;
        width: 100%;
        max-height: 30vh;
        -o-object-fit: contain;
           object-fit: contain;
        display: block;
    }

.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image {
        cursor: -webkit-zoom-in;
        cursor: zoom-in;
    }

.mx_MemberInfo_field {
    cursor: pointer;
    font-size: 1.5rem;
    color: #ffffff;
    margin-left: 8px;
    margin-bottom: 16px;
    line-height: 2.3rem;
}

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MemberList {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    min-height: 0;
}

.mx_MemberList .mx_Spinner {
        -webkit-box-flex: 1;
            -ms-flex: 1 0 auto;
                flex: 1 0 auto;
    }

.mx_MemberList .mx_SearchBox {
        margin-bottom: 5px;
    }

.mx_MemberList h2 {
        text-transform: uppercase;
        color: #ffffff;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.3rem;
        padding-left: 3px;
        padding-right: 12px;
        margin-top: 8px;
        margin-bottom: 4px;
    }

.mx_MemberList .mx_AutoHideScrollbar {
        -webkit-box-flex: 1;
            -ms-flex: 1 1 0px;
                flex: 1 1 0;
    }

.mx_MemberList .mx_RightPanel_scopeHeader {
        /* vertically align with position on other right panel cards */
        /* to prevent it bouncing as user navigates right panel */
        margin-top: -8px;
    }

.mx_MemberList_chevron {
    position: absolute;
    right: 35px;
    margin-top: -15px;
}

.mx_MemberList_border {
    overflow-y: auto;

    -webkit-box-ordinal-group: 2;

        -ms-flex-order: 1;

            order: 1;
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
}

.mx_MemberList_query {
    height: 16px;
}

/* stricter rule to override the one in _common.pcss */

.mx_MemberList_query[type="text"] {
        font-size: 1.2rem;
    }

.mx_MemberList_wrapper {
    padding: 10px;
}

.mx_MemberList_invite {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    position: relative;
    background-color: #0dbd8b;
    border-radius: 4px;
    margin: 5px 9px 9px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    color: #ffffff;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
}

.mx_MemberList_invite.mx_AccessibleButton_disabled {
    background-color: #888;
    cursor: not-allowed;
}

.mx_MemberList_invite span {
    padding: 8px 0;
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
}

.mx_MemberList_invite span::before {
        content: "";
        display: inline-block;
        background-color: #ffffff;
        -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
                mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: 20px;
                mask-size: 20px;
        width: 20px;
        height: 20px;
        margin-right: 5px;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MessageComposer_wrapper {
    vertical-align: middle;
    margin: auto;
    border-top: 1px solid transparent;
    position: relative;
    padding-left: 42px;
    padding-right: 16px;
}

.mx_MessageComposer_replaced_wrapper {
    margin-left: auto;
    margin-right: auto;
}

.mx_MessageComposer_replaced_valign {
    height: 60px;
    display: table-cell;
    vertical-align: middle;
}

.mx_MessageComposer_roomReplaced_icon {
    float: left;
    margin-right: 20px;
    margin-top: 5px;
    width: 31px;
    height: 31px;
}

.mx_MessageComposer_roomReplaced_header {
    font-weight: bold;
}

.mx_MessageComposer_autocomplete_wrapper {
    position: relative;
    height: 0;
}

.mx_MessageComposer_row {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    width: 100%;
}

.mx_MessageComposer_actions {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    grid-gap: 6px;
    gap: 6px;
}

.mx_MessageComposer .mx_MessageComposer_avatar {
        position: absolute;
        left: 26px;
    }

.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar {
            display: block;
        }

.mx_MessageComposer_composecontrols {
    width: 100%;
}

.mx_MessageComposer_e2eIcon.mx_E2EIcon {
    position: absolute;
    left: 20px;
    margin-right: 0; /* Counteract the E2EIcon class */
    margin-left: 3px; /* Counteract the E2EIcon class */
    width: 12px;
    height: 12px;
}

.mx_MessageComposer_noperm_error {
    width: 100%;
    height: 60px;
    font-style: italic;
    color: #888;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
}

.mx_MessageComposer_input_wrapper {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    cursor: text;
}

.mx_MessageComposer_input {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    vertical-align: middle;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    min-height: 60px;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    font-size: 1.4rem;
    margin-right: 6px;
}

.mx_MessageComposer_input pre {
        background-color: rgba(0, 0, 0, 0.04);
        border-radius: 3px;
        padding: 10px;
    }

.mx_MessageComposer_input textarea {
        display: block;
        width: 100%;
        padding: 0px;
        margin-top: 6px;
        margin-bottom: 6px;
        border: 0px;
        resize: none;
        outline: none;
        -webkit-box-shadow: none;
                box-shadow: none;
        color: #ffffff;
        background-color: #15191e;
        font-size: 1.4rem;
        max-height: 120px;
        overflow: auto;
    }

/* hack for FF as vertical alignment of custom placeholder text is broken */

.mx_MessageComposer_input textarea::-moz-placeholder {
            line-height: 100%;
            color: #0dbd8b;
            opacity: 1;
        }

.mx_MessageComposer_input textarea::-webkit-input-placeholder {
            color: #0dbd8b;
        }

.mx_MessageComposer_editor {
    width: 100%;
    max-height: 120px;
    min-height: 19px;
    overflow-y: auto;
    overflow-x: hidden;
    word-break: break-word;
}

/* really we should be mixing in markdown-body from gfm.css instead */

.mx_MessageComposer_editor > :first-child {
        margin-top: 0 !important;
    }

/* FIXME: rather unpleasant hack to get rid of <p/> margins. */

.mx_MessageComposer_editor > :last-child {
        margin-bottom: 0 !important;
    }

@keyframes visualbell {
    from {
        background-color: #800;
    }
    to {
        background-color: #15191e;
    }
}

.mx_MessageComposer_input_error {
    -webkit-animation: 0.2s visualbell;
            animation: 0.2s visualbell;
}

.mx_MessageComposer_button_highlight {
    background: rgba(13,189,139, 0.25);
}

/* make the icon the accent color too */

.mx_MessageComposer_button_highlight::before {
        background-color: #0dbd8b !important;
    }

.mx_MessageComposer_button {
    --size: 26px;
    position: relative;
    cursor: pointer;
    height: var(--size);
    line-height: var(--size);
    width: auto;
    padding-left: var(--size);
    border-radius: 50%;
}

.mx_MessageComposer_button::before {
        content: "";
        position: absolute;
        top: 3px;
        left: 3px;
        height: 20px;
        width: 20px;
        background-color: #8e99a4;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_MessageComposer_button::after {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        z-index: 0;
        width: var(--size);
        height: var(--size);
        border-radius: 50%;
    }

.mx_MessageComposer_button:hover::after {
            background: rgba(13,189,139, 0.1);
        }

.mx_MessageComposer_button:hover::before {
            background-color: #0dbd8b;
        }

.mx_MessageComposer_button:last-child {
        margin-right: auto;
    }

.mx_MessageComposer_button.mx_MessageComposer_closeButtonMenu::after {
            background: rgba(13,189,139, 0.1);
        }

.mx_MessageComposer_button.mx_MessageComposer_closeButtonMenu::before {
            background-color: #0dbd8b;
        }

.mx_MessageComposer_button.mx_MessageComposer_hangup:not(.mx_AccessibleButton_disabled)::before {
        background-color: #ff5b55;
    }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_wrapper {
        padding-left: 16px;
        margin-top: 6px;
        margin-bottom: 12px;
    }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_row {
        -webkit-box-align: end;
            -ms-flex-align: end;
                align-items: flex-end;
    }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_actions {
        /* Height of the composer editor */
        height: 40px;
    }

.mx_MessageComposer_wysiwyg .mx_MediaBody {
        padding-top: 4px;
        padding-bottom: 4px;
    }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_button {
        --size: 26px;
        position: relative;
        cursor: pointer;
        height: var(--size);
        line-height: var(--size);
        width: auto;
        padding-left: var(--size);
        border-radius: 5px;
    }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_button::before {
        content: "";
        position: absolute;
        top: 3px;
        left: 3px;
        height: 20px;
        width: 20px;
        background-color: #8e99a4;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_button::after {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        z-index: 0;
        width: var(--size);
        height: var(--size);
        border-radius: 5px;
    }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_button:hover::after {
            background: rgba(142,153,164, 0.1);
        }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_button:hover::before {
            background-color: #8e99a4;
        }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_button.mx_MessageComposer_closeButtonMenu::after {
                background: rgba(13,189,139, 0.1);
            }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_button.mx_MessageComposer_closeButtonMenu::before {
                background-color: #0dbd8b;
            }

.mx_MessageComposer_wysiwyg .mx_MessageComposer_button.mx_MessageComposer_hangup:not(.mx_AccessibleButton_disabled)::before {
            background-color: #ff5b55;
        }

.mx_MessageComposer_upload::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/attach.faa1eed.svg);
            mask-image: url(../../img/element-icons/room/composer/attach.faa1eed.svg);
}

.mx_MessageComposer_poll::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/poll.6fe3947.svg);
            mask-image: url(../../img/element-icons/room/composer/poll.6fe3947.svg);
}

.mx_MessageComposer_voiceMessage::before {
    -webkit-mask-image: url(../../img/element-icons/mic.4c7bdcd.svg);
            mask-image: url(../../img/element-icons/mic.4c7bdcd.svg);
}

.mx_MessageComposer_voiceBroadcast::before {
    -webkit-mask-image: url(../../img/element-icons/live.8595de1.svg);
            mask-image: url(../../img/element-icons/live.8595de1.svg);
}

.mx_MessageComposer_plain_text::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/plain_text.57001f6.svg);
            mask-image: url(../../img/element-icons/room/composer/plain_text.57001f6.svg);
}

.mx_MessageComposer_rich_text::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/rich_text.16ae2b9.svg);
            mask-image: url(../../img/element-icons/room/composer/rich_text.16ae2b9.svg);
}

.mx_MessageComposer_location::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/location.33e31a8.svg);
            mask-image: url(../../img/element-icons/room/composer/location.33e31a8.svg);
}

.mx_MessageComposer_stickers::before {
    -webkit-mask-image: url(../../img/element-icons/room/composer/sticker.b1d9443.svg);
            mask-image: url(../../img/element-icons/room/composer/sticker.b1d9443.svg);
}

.mx_MessageComposer_buttonMenu::before {
    -webkit-mask-image: url(../../img/image-view/more.9d7e5aa.svg);
            mask-image: url(../../img/image-view/more.9d7e5aa.svg);
}

.mx_MessageComposer_sendMessage {
    cursor: pointer;
    position: relative;
    width: 32px;
    height: 32px;
    border-radius: 100%;
    background-color: #0dbd8b;
}

.mx_MessageComposer_sendMessage::before {
        position: absolute;
        height: 16px;
        width: 16px;
        top: 8px;
        left: 9px;

        -webkit-mask-image: url(../../img/element-icons/send-message.c5b16f8.svg);

                mask-image: url(../../img/element-icons/send-message.c5b16f8.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;

        background-color: #ffffff;
        content: "";
    }

.mx_MessageComposer_formatting {
    cursor: pointer;
    margin: 0 11px;
    width: 24px;
    height: 18px;
}

.mx_MessageComposer_formatbar_wrapper {
    width: 100%;
    background-color: #20252b;
    -webkit-box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08);
            box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08);
}

.mx_MessageComposer_formatbar {
    margin: auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;

    height: 30px;

    -webkit-box-sizing: border-box;

            box-sizing: border-box;
    padding-left: 62px;

    -webkit-box-orient: horizontal;

    -webkit-box-direction: normal;

        -ms-flex-direction: row;

            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    font-size: 1rem;
    color: #888;
}

.mx_MessageComposer_formatbar * {
        margin-right: 4px;
    }

.mx_MessageComposer_format_button,
.mx_MessageComposer_formatbar_cancel,
.mx_MessageComposer_formatbar_markdown {
    cursor: pointer;
}

.mx_MessageComposer_formatbar_cancel {
    margin-right: 22px;
}

.mx_MessageComposer_formatbar_markdown {
    height: 17px;
    width: 30px;
    margin-right: 64px;
}

.mx_MessageComposer_input_markdownIndicator {
    height: 10px;
    width: 12px;
    padding: 4px 4px 4px 0;
}

.mx_MessageComposer_formatbar_markdown,
.mx_MessageComposer_input_markdownIndicator {
    cursor: pointer;
    -webkit-mask-image: url(../../img/markdown.9e36d49.svg);
            mask-image: url(../../img/markdown.9e36d49.svg);
    -webkit-mask-size: contain;
            mask-size: contain;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    background-color: #8e99a4;
}

.mx_MessageComposer_formatbar_markdown.mx_MessageComposer_markdownDisabled, .mx_MessageComposer_input_markdownIndicator.mx_MessageComposer_markdownDisabled {
        opacity: 0.2;
    }

.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input {
        min-height: 50px;
    }

.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error {
        height: 50px;
    }

/**
 * Unstable compact mode
 */

.mx_MessageComposer.mx_MessageComposer--compact {
    margin-right: 0;
}

.mx_MessageComposer.mx_MessageComposer--compact .mx_MessageComposer_wrapper {
        padding: 0 0 0 25px;
    }

.mx_MessageComposer.mx_MessageComposer--compact:not(.mx_MessageComposer_e2eStatus) .mx_MessageComposer_wrapper {
            padding: 0;
        }

.mx_MessageComposer.mx_MessageComposer--compact .mx_MessageComposer_button:last-child {
        margin-right: 0;
    }

.mx_MessageComposer.mx_MessageComposer--compact .mx_MessageComposer_e2eIcon {
        left: 0;
    }

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MessageComposerFormatBar {
    display: none;
    width: calc(32px * 6);
    height: 32px;
    position: absolute;
    cursor: pointer;
    border-radius: 8px;
    background-color: #15191e;
    border: 1px solid rgba(231, 231, 231, 0.2);
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    /* equal to z-index of mx_ReplyPreview and mx_RoomView_statusArea (1000) */
    /* but as it appears after them in the DOM, will appear on top. */
    z-index: 1000;
}

.mx_MessageComposerFormatBar.mx_MessageComposerFormatBar_shown {
        display: block;
    }

.mx_MessageComposerFormatBar > * {
        white-space: nowrap;
        display: inline-block;
        position: relative;
        margin: 2px;
    }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button {
        width: 28px;
        height: 28px;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        vertical-align: middle;
        background: none;
        border: none;
    }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button:hover {
            background: rgba(141,151,165, 0.2);
            border-radius: 6px;
            z-index: 1;
        }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button::after {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        height: 100%;
        width: 100%;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        background-color: #a9b2bc;
    }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button:hover::after {
        background-color: #ffffff;
    }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconBold::after {
        -webkit-mask-image: url(../../img/element-icons/room/format-bar/bold.b5a09da.svg);
                mask-image: url(../../img/element-icons/room/format-bar/bold.b5a09da.svg);
    }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconItalic::after {
        -webkit-mask-image: url(../../img/element-icons/room/format-bar/italic.65b4e6b.svg);
                mask-image: url(../../img/element-icons/room/format-bar/italic.65b4e6b.svg);
    }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconStrikethrough::after {
        -webkit-mask-image: url(../../img/element-icons/room/format-bar/strikethrough.661354b.svg);
                mask-image: url(../../img/element-icons/room/format-bar/strikethrough.661354b.svg);
    }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconQuote::after {
        -webkit-mask-image: url(../../img/element-icons/room/format-bar/quote.5fc8cc0.svg);
                mask-image: url(../../img/element-icons/room/format-bar/quote.5fc8cc0.svg);
    }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconCode::after {
        -webkit-mask-image: url(../../img/element-icons/room/format-bar/code.c3acfbd.svg);
                mask-image: url(../../img/element-icons/room/format-bar/code.c3acfbd.svg);
    }

.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconInsertLink::after {
        -webkit-mask-image: url(../../img/element-icons/link.3f7cd42.svg);
                mask-image: url(../../img/element-icons/link.3f7cd42.svg);
        -webkit-mask-size: 18px;
                mask-size: 18px;
    }

.mx_MessageComposerFormatBar_buttonTooltip {
    white-space: nowrap;
    font-size: 1.3rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    min-width: 54px;
    text-align: center;
}

.mx_MessageComposerFormatBar_buttonTooltip .mx_MessageComposerFormatBar_tooltipShortcut {
        font-size: 0.9rem;
        opacity: 0.7;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_NewRoomIntro {
    margin: 40px 0 48px 64px;
}

.mx_NewRoomIntro .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover) .mx_MiniAvatarUploader_indicator {
            display: none;
        }

.mx_NewRoomIntro .mx_NewRoomIntro_buttons {
        margin-top: 28px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -ms-flex-flow: wrap;
            flex-flow: wrap;
        grid-gap: 14px 12px;
        gap: 14px 12px;
    }

.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton {
            line-height: 2.4rem;
            display: inline-block;
        }

.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton:not(.mx_AccessibleButton_kind_primary_outline)::before {
                content: "";
                display: inline-block;
                background-color: #ffffff;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-size: 20px;
                        mask-size: 20px;
                width: 20px;
                height: 20px;
                margin-right: 5px;
                vertical-align: text-bottom;
            }

.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_NewRoomIntro_inviteButton::before {
            -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
                    mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
        }

.mx_NewRoomIntro > h2 {
        margin-top: 24px;
        font-size: 2.4rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_NewRoomIntro > p {
        margin: 0;
        font-size: 1.5rem;
        color: #a9b2bc;
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_NotificationBadge {

    /* Badges are structured a bit weirdly to work around issues with non-monospace */
    /* font styles. The badge pill is actually a background div and the count floats */
    /* within that. For example: */
    /*  ( 99+ ) <-- Rounded pill is a _bg class. */
}

.mx_NotificationBadge:not(.mx_NotificationBadge_visible) {
        display: none;
    }

/*     ^- The count is an element floating within that. */

.mx_NotificationBadge.mx_NotificationBadge_visible {
        background-color: #61708b;

        /* Create a flexbox to order the count a bit easier */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_highlighted {
            /* TODO: Use a more specific variable */
            background-color: #ff5b55;
        }

/* These are the 3 background types */

.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_dot {
            background-color: #ffffff; /* increased visibility */

            width: 6px;
            height: 6px;
            border-radius: 6px;
        }

.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_2char {
            width: 1.6rem;
            height: 1.6rem;
            border-radius: 1.6rem;
        }

.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_3char {
            width: 2.6rem;
            height: 1.6rem;
            border-radius: 1.6rem;
        }

/* The following is the floating badge */

.mx_NotificationBadge.mx_NotificationBadge_visible .mx_NotificationBadge_count {
            font-size: 1rem;
            line-height: 1.4rem;
            color: #fff; /* TODO: Variable */
        }

.mx_NotificationBadge_tooltip {
    display: inline-block;
    position: relative;
    top: -25px;
    left: 6px;
}

/*
Copyright 2017 Travis Ralston

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PinnedEventTile {
    min-height: 40px;
    width: 100%;
    padding: 0 4px 12px;

    display: grid;
    grid-template-areas:
        "avatar name remove"
        "content content content"
        "footer footer footer";
    grid-template-rows: -webkit-max-content auto -webkit-max-content;
    grid-template-rows: max-content auto max-content;
    grid-template-columns: 24px auto 24px;
    grid-row-gap: 12px;
    grid-column-gap: 8px;
}

.mx_PinnedEventTile + .mx_PinnedEventTile {
        padding: 12px 4px;
        border-top: 1px solid #000000;
    }

.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar,
    .mx_PinnedEventTile .mx_PinnedEventTile_sender,
    .mx_PinnedEventTile .mx_PinnedEventTile_unpinButton,
    .mx_PinnedEventTile .mx_PinnedEventTile_message,
    .mx_PinnedEventTile .mx_PinnedEventTile_footer {
        min-width: 0; /* Prevent a grid blowout */
    }

.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar {
        grid-area: avatar;
    }

.mx_PinnedEventTile .mx_PinnedEventTile_sender {
        grid-area: name;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.5rem;
        line-height: 2.4rem;
        text-overflow: ellipsis;
        overflow: hidden;
        white-space: nowrap;
    }

.mx_PinnedEventTile .mx_PinnedEventTile_unpinButton {
        visibility: hidden;
        grid-area: remove;
        position: relative;
        width: 24px;
        height: 24px;
        border-radius: 8px;
    }

.mx_PinnedEventTile .mx_PinnedEventTile_unpinButton:hover {
            background-color: rgba(92, 100, 112, 0.3);
        }

.mx_PinnedEventTile .mx_PinnedEventTile_unpinButton::before {
            content: "";
            position: absolute;
            height: inherit;
            width: inherit;
            background: #a9b2bc;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: 8px;
                    mask-size: 8px;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-image: url(../../img/image-view/close.84ba4f5.svg);
                    mask-image: url(../../img/image-view/close.84ba4f5.svg);
        }

.mx_PinnedEventTile .mx_PinnedEventTile_message {
        grid-area: content;
    }

.mx_PinnedEventTile .mx_PinnedEventTile_footer {
        grid-area: footer;
        font-size: 1rem;
        line-height: 12px;
    }

.mx_PinnedEventTile .mx_PinnedEventTile_footer .mx_PinnedEventTile_timestamp {
            color: #a9b2bc;
            display: unset;
            width: unset; /* Cancel the default width value */
        }

.mx_PinnedEventTile .mx_PinnedEventTile_footer .mx_AccessibleButton_kind_link {
            margin-left: 12px;
        }

.mx_PinnedEventTile:hover .mx_PinnedEventTile_unpinButton {
            visibility: visible;
        }

/*
Copyright 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_PresenceLabel {
    font-size: 1.1rem;
    opacity: 0.5;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ReadReceiptGroup {
    --ReadReceiptGroup_EventBubbleTile-spacing-end: 78px;

    position: relative;
    display: inline-block;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    z-index: 1;
}

.mx_ReadReceiptGroup .mx_ReadReceiptGroup_button {
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
        height: 16px;
        padding: 4px;
        border-radius: 6px;
    }

.mx_ReadReceiptGroup .mx_ReadReceiptGroup_button.mx_AccessibleButton:hover {
                background: #21262c;
            }

.mx_ReadReceiptGroup .mx_ReadReceiptGroup_remainder {
        color: #a9b2bc;
        font-size: 1.1rem;
        line-height: 1.6rem;
        margin-right: 4px;
    }

.mx_ReadReceiptGroup .mx_ReadReceiptGroup_container {
        position: relative;
        display: block;
        height: 100%;
    }

.mx_ReadReceiptGroup .mx_ReadReceiptGroup_container .mx_BaseAvatar {
            position: absolute;
            display: inline-block;
            height: 14px;
            width: 14px;
            border: 1px solid #15191e;
            border-radius: 100%;

            will-change: left, top;
            -webkit-transition: left 0.1s ease-out, top 0.3s ease-out;
            transition: left 0.1s ease-out, top 0.3s ease-out;
            -webkit-transition: left var(--transition-short) ease-out, top var(--transition-standard) ease-out;
            transition: left var(--transition-short) ease-out, top var(--transition-standard) ease-out;
        }

.mx_ReadReceiptGroup_popup {
    max-height: 300px;
    width: 220px;
    border-radius: 8px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    text-align: left;
    font-size: 12px;
    line-height: 15px;

    right: 0;
}

.mx_ReadReceiptGroup_popup.mx_ContextualMenu_top {
        top: 8px;
    }

.mx_ReadReceiptGroup_popup.mx_ContextualMenu_bottom {
        bottom: 8px;
    }

.mx_ReadReceiptGroup_popup .mx_ReadReceiptGroup_title {
        font-size: 12px;
        line-height: 15px;
        margin: 16px 16px 8px;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        /* shouldn’t be actually focusable */
        outline: none;
    }

.mx_ReadReceiptGroup_popup .mx_AutoHideScrollbar .mx_ReadReceiptGroup_person {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: horizontal;
            -webkit-box-direction: normal;
                -ms-flex-direction: row;
                    flex-direction: row;
            padding: 4px;
            margin: 0 12px;
            border-radius: 8px;
        }

.mx_ReadReceiptGroup_popup .mx_AutoHideScrollbar .mx_ReadReceiptGroup_person:hover {
                background: #343a46;
            }

.mx_ReadReceiptGroup_popup .mx_AutoHideScrollbar .mx_ReadReceiptGroup_person:last-child {
                margin-bottom: 8px;
            }

.mx_ReadReceiptGroup_popup .mx_AutoHideScrollbar .mx_ReadReceiptGroup_person .mx_BaseAvatar {
                margin: 6px 8px;
                -ms-flex-item-align: center;
                    align-self: center;
                justify-self: center;
            }

.mx_ReadReceiptGroup_popup .mx_AutoHideScrollbar .mx_ReadReceiptGroup_person .mx_ReadReceiptGroup_name {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-orient: vertical;
                -webkit-box-direction: normal;
                    -ms-flex-direction: column;
                        flex-direction: column;
                -webkit-box-flex: 1;
                    -ms-flex-positive: 1;
                        flex-grow: 1;
                -ms-flex-negative: 1;
                    flex-shrink: 1;
                overflow: hidden;
            }

.mx_ReadReceiptGroup_popup .mx_AutoHideScrollbar .mx_ReadReceiptGroup_person .mx_ReadReceiptGroup_name p {
                    margin: 2px 0;
                    text-overflow: ellipsis;
                    overflow: hidden;
                    white-space: nowrap;
                }

.mx_ReadReceiptGroup_popup .mx_AutoHideScrollbar .mx_ReadReceiptGroup_person .mx_ReadReceiptGroup_name .mx_ReadReceiptGroup_secondary {
                    color: #a9b2bc;
                }

.mx_ReadReceiptGroup_person--tooltip {
    overflow-y: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RecentlyViewedButton_ContextMenu {
    padding: 16px 8px 16px 16px;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    max-width: 240px;
    max-height: 400px;
    border: 1px solid rgba(255,255,255, 0.1);
    border-radius: 8px;
    -webkit-box-shadow: 0 8px 4px rgba(0, 0, 0, 0.08);
            box-shadow: 0 8px 4px rgba(0, 0, 0, 0.08);
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_RecentlyViewedButton_ContextMenu > h4 {
        margin: 0 0 12px 0;
    }

.mx_RecentlyViewedButton_ContextMenu > div {
        overflow-y: auto;
    }

.mx_RecentlyViewedButton_ContextMenu > div * {
            margin-right: 4px;
        }

.mx_RecentlyViewedButton_ContextMenu .mx_AccessibleButton {
        margin-top: 2px;
        padding: 4px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        border-radius: 8px;
        min-height: 34px;
    }

.mx_RecentlyViewedButton_ContextMenu .mx_AccessibleButton:hover {
            background-color: rgba(141,151,165, 0.2);
        }

.mx_RecentlyViewedButton_ContextMenu .mx_AccessibleButton .mx_DecoratedRoomAvatar {
            margin-right: 8px;
            width: 24px;
        }

.mx_RecentlyViewedButton_ContextMenu .mx_AccessibleButton .mx_DecoratedRoomAvatar .mx_BaseAvatar {
                width: inherit;
            }

.mx_RecentlyViewedButton_ContextMenu .mx_AccessibleButton .mx_RecentlyViewedButton_entry_label {
            display: grid;
        }

.mx_RecentlyViewedButton_ContextMenu .mx_AccessibleButton .mx_RecentlyViewedButton_entry_label > div {
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
            }

.mx_RecentlyViewedButton_ContextMenu .mx_AccessibleButton .mx_RecentlyViewedButton_entry_spaces {
            font-size: 1.2rem;
            line-height: 1.5rem;
            color: #a9b2bc;
        }

/*
Copyright 2018 Vector Creations Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ReplyPreview {
    border: 1px solid transparent;
    border-bottom: none;
    background: #15191e;
    max-height: 50vh;
    overflow: auto;
}

.mx_ReplyPreview .mx_ReplyPreview_section {
        border-bottom: 1px solid transparent;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-flow: column;
                flex-flow: column;
        grid-row-gap: 8px;
        row-gap: 8px;
        padding: 8px 8px 0 0;
    }

.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_header {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: justify;
                -ms-flex-pack: justify;
                    justify-content: space-between;
            grid-column-gap: 8px;
            -webkit-column-gap: 8px;
               -moz-column-gap: 8px;
                    column-gap: 8px;

            color: #ffffff;
            font-weight: 400;
            opacity: 0.4;
        }

.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_header .mx_ReplyPreview_header_cancel {
                background-color: #ffffff;
                -webkit-mask: url(../../img/cancel.12c5c12.svg);
                        mask: url(../../img/cancel.12c5c12.svg);
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: 18px;
                        mask-size: 18px;
                width: 18px;
                height: 18px;
                min-width: 18px;
                min-height: 18px;
            }

.mx_RoomView_body .mx_ReplyPreview {
        /* Add box-shadow to the reply preview on the main (left) panel only. */
        /* It is not added to the preview on the (right) panel for threads and a chat with a maximized widget. */
        -webkit-box-shadow: 0px -16px 32px rgba(0, 0, 0, 0.28);
                box-shadow: 0px -16px 32px rgba(0, 0, 0, 0.28);
        border-radius: 8px 8px 0 0;
    }

/*
Copyright 2020 Tulir Asokan <tulir@maunium.net>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ReplyTile {
    position: relative;
    padding: 2px 0;
    font-size: 1.4rem;
}

.mx_ReplyTile.mx_ReplyTile_audio .mx_MFileBody_info_icon::before {
        -webkit-mask-image: url(../../img/element-icons/speaker.3733f78.svg);
                mask-image: url(../../img/element-icons/speaker.3733f78.svg);
    }

.mx_ReplyTile.mx_ReplyTile_video .mx_MFileBody_info_icon::before {
        -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
                mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
    }

.mx_ReplyTile > a {
        display: grid;
        grid-template:
            "sender" auto
            "message" auto
            / 100%;
        text-decoration: none;
        color: #a9b2bc;
        -webkit-transition: color ease 0.15s;
        transition: color ease 0.15s;
        grid-gap: 2px;
        gap: 2px;
        max-width: 100%;
    }

/* avoid overflow with wide content*/

.mx_ReplyTile > a:hover {
            color: #ffffff;
        }

.mx_ReplyTile .mx_RedactedBody {
        line-height: 1.8rem;
    }

.mx_ReplyTile .mx_RedactedBody,
    .mx_ReplyTile .mx_HiddenBody {
        padding: 4px 0 2px 20px;
    }

.mx_ReplyTile .mx_RedactedBody::before, .mx_ReplyTile .mx_HiddenBody::before {
            height: 13px;
            width: 13px;
            top: 3px;
        }

/* We do reply size limiting with CSS to avoid duplicating the TextualBody component. */

.mx_ReplyTile .mx_EventTile_content {
        grid-area: message;

        text-overflow: ellipsis;
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
    }

.mx_ReplyTile .mx_EventTile_content .mx_EventTile_body.mx_EventTile_bigEmoji {
            line-height: 2.2rem !important; /* Same as var(--EventTile_group_line-line-height) */
            font-size: 1.4rem !important; /* Override the big emoji override */
        }

/* Hide line numbers and edited indicator*/

.mx_ReplyTile .mx_EventTile_content .mx_EventTile_lineNumbers,
        .mx_ReplyTile .mx_EventTile_content .mx_EventTile_edited {
            display: none;
        }

/* Hack to cut content in <pre> tags too */

.mx_ReplyTile .mx_EventTile_content .mx_EventTile_pre_container > pre {
            overflow-x: scroll;
            overflow-y: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
            padding: 4px;
        }

.mx_ReplyTile .mx_EventTile_content .markdown-body blockquote,
        .mx_ReplyTile .mx_EventTile_content .markdown-body dl,
        .mx_ReplyTile .mx_EventTile_content .markdown-body ol,
        .mx_ReplyTile .mx_EventTile_content .markdown-body p,
        .mx_ReplyTile .mx_EventTile_content .markdown-body pre,
        .mx_ReplyTile .mx_EventTile_content .markdown-body table,
        .mx_ReplyTile .mx_EventTile_content .markdown-body ul {
            margin-bottom: 4px;
        }

.mx_ReplyTile.mx_ReplyTile_info {
        padding-top: 0;
    }

.mx_ReplyTile.mx_ReplyTile_inline > a {
        /* Render replies to emotes inline with the sender avatar */
        grid-template:
            "sender        message" auto
            / -webkit-max-content auto;
        grid-template:
            "sender        message" auto
            / max-content auto;
        grid-gap: 4px;
        gap: 4px; /* increase spacing*/
    }

.mx_ReplyTile .mx_ReplyTile_sender {
        grid-area: sender;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        grid-gap: 4px;
        gap: 4px;
    }

.mx_ReplyTile .mx_ReplyTile_sender .mx_DisambiguatedProfile {
            font-size: 1.4rem;

            display: inline-block; /* anti-zalgo, with overflow hidden*/
            padding: 0;
            margin: 0;

            /* truncate long display names*/
            overflow: hidden;
            white-space: nowrap;
            text-overflow: ellipsis;
        }

.mx_ReplyTile .mx_ReplyTile_sender .mx_BaseAvatar {
            line-height: 14px; /* To match size*/
        }

@media only Percy {
    /* Remove the list style in percy tests for screenshot consistency */
    :is(ul, ol) {
        padding: 0 !important;
        margin: 0 !important;
        list-style: none !important;
    }

        :is(ul, ol) .mx_EventTile_last {
            padding: 0 !important;
        }
}

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomBreadcrumbs {
    width: 100%;

    /* Create a flexbox for the crumbs */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    margin-bottom: 12px;

    /* These classes come from the CSSTransition component. There's many more classes we */
}

.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_crumb {
        margin-right: 8px;
        width: 32px;
    }

/* sliding it into view. */

.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter {
        -webkit-transform: translateX(-40px);
                transform: translateX(-40px); /* 32px for the avatar, 8px for the margin */
    }

/* first triggering the enter state with the newest breadcrumb off screen (-40px) then */

.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter-active {
        -webkit-transform: translateX(0);
                transform: translateX(0);

        /* Timing function is as-requested by design. */
        /* NOTE: The transition time MUST match the value passed to CSSTransition! */
        -webkit-transition: -webkit-transform 640ms cubic-bezier(0.66, 0.02, 0.36, 1);
        transition: -webkit-transform 640ms cubic-bezier(0.66, 0.02, 0.36, 1);
        transition: transform 640ms cubic-bezier(0.66, 0.02, 0.36, 1);
        transition: transform 640ms cubic-bezier(0.66, 0.02, 0.36, 1), -webkit-transform 640ms cubic-bezier(0.66, 0.02, 0.36, 1);
    }

/* could care about, but this is all we worried about for now. The animation works by */

.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_placeholder {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.4rem;
        line-height: 32px; /* specifically to match the height this is not scaled */
        height: 32px;
    }

.mx_RoomBreadcrumbs_Tooltip {
    margin-left: -42px;
    margin-top: -42px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomCallBanner {
    width: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;

    -webkit-box-sizing: border-box;

            box-sizing: border-box;
    padding: 12px 16px;

    color: #ffffff;
    background-color: #21262c;
    cursor: pointer;
}

.mx_RoomCallBanner_text {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_RoomCallBanner_label {
    color: #ffffff;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    padding-right: 8px;
}

.mx_RoomCallBanner_label::before {
        display: inline-block;
        vertical-align: middle;
        content: "";
        background-color: #a9b2bc;
        -webkit-mask-size: 16px;
                mask-size: 16px;
        mask-position-y: center;
        width: 16px;
        height: 1.2em; /* to match line height */
        margin-right: 8px;
        -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
                mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
    }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

:root {
    --RoomHeader-indicator-dot-size: 8px;
    --RoomHeader-indicator-dot-offset: -3px;
    --RoomHeader-indicator-pulseColor: #ff5b55;
}

.qrscan {
    width: 40px;
    height: 40px;
    border-radius: 4px;
    margin-right: 10px;
    cursor: pointer;
}

.qrscan::after {
        content: "";
        position: absolute;
        top: 8px;
        right: 17px;
        height: 32px;
        width: 32px;
        -webkit-mask-image: url(../../img/qr-code.45de701.svg);
                mask-image: url(../../img/qr-code.45de701.svg);
        background-color: #D0D5DD;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

.qrscan2 {
    width: 36px;
    position: absolute;
    top: 10px;
    right: 0px;
    height: 34px;
    border-radius: 4px;
    background-color: #f2f5f8;
    margin-right: 10px;
    cursor: pointer;
}

.qrscan2::after {
        content: "";
        position: absolute;
        top: 5px;
        right: 5px;
        height: 25px;
        width: 25px;
        -webkit-mask-image: url(../../img/qr-code.45de701.svg);
                mask-image: url(../../img/qr-code.45de701.svg);
        background-color: rgb(20, 141, 255);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

.custom-select {
    position: relative;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    margin-right: 10px;
    height: 40px;
    margin-left: 5px;
    font-size: 14px !important;
    cursor: pointer;
    z-index: 3;
    border-radius: 5px;
    border: 1px solid #2b0b5b;
    background-color: #0b0317;
}

.custom-select .selected-option {
        height: 13px;
        padding: 5px;
        margin-left: 5px;
        margin-top: 6px;
        color: #ffffff;
    }

.custom-select .selected-option::after {
            content: "";
            position: absolute;
            top: 10px;
            right: 0px;
            height: 20px;
            width: 20px;
            -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                    mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
            background-color: #0b0317;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
        }

.custom-select .options {
        position: absolute;
        top: 100%;
        left: 0;
        border-radius: 5px;
        right: 0;
        border: 1px solid #ccc;
        border-top: none;
        z-index: 1;
        color: #f0e8fc;
        max-height: 200px;
        overflow-y: auto;
        background-color: #0b0317;
    }

.custom-select .options .option-my {
            height: 30px;
            padding: 5px;
            color: #f0e8fc;
        }

@media (max-width: 480px) {
            .custom-select .options .option-my {
                font-size: 1rem;
                overflow: hidden;
            }
        }

.custom-select .options .option-my:hover {
            background-color: #8949e9;
        }

.mx_RoomHeader {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 50px;
            flex: 0 0 50px;
    border-bottom: 1px solid transparent;
    background-color: #15191e;
}

.mx_RoomHeader .mx_RoomHeader_icon {
        height: 12px;
        width: 12px;
    }

.mx_RoomHeader .mx_RoomHeader_icon.mx_RoomHeader_icon_video {
            height: 14px;
            width: 14px;
            background-color: #a9b2bc;
            -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
                    mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
            -webkit-mask-size: 100%;
                    mask-size: 100%;
        }

.mx_RoomHeader .mx_RoomHeader_icon.mx_E2EIcon {
            margin: 0;
            height: 100%; /* To give the tooltip room to breathe */
        }

.mx_RoomHeader .mx_CallDuration {
        margin-top: calc((1.5rem - 1.3rem) / 2); /* To align with the name */
        font-size: 1.3rem;
    }

.mx_RoomHeader_wrapper {
    height: 44px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    min-width: 0;
    margin: 0 20px 0 16px;
    padding-top: 6px;
    border-bottom: 1px solid #21262c;
}

.mx_RoomHeader_wrapper .mx_InviteOnlyIcon_large {
        margin: 0;
    }

.mx_RoomHeader_wrapper .mx_BetaCard_betaPill {
        margin-right: 8px;
    }

.mx_RoomHeader_name {
    -webkit-box-flex: 0;
        -ms-flex: 0 1 auto;
            flex: 0 1 auto;
    overflow: hidden;
    color: #ffffff;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    font-size: 1.5rem;
    min-height: 24px;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    border-radius: 6px;
    margin: 0 3px;
    padding: 1px 4px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    cursor: pointer;
}

.mx_RoomHeader_name:hover {
        background-color: #394049;
    }

.mx_RoomHeader_name .mx_RoomHeader_nametext {
        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;
    }

.mx_RoomHeader_name .mx_RoomHeader_chevron {
        -ms-flex-item-align: center;
            align-self: center;
        width: 20px;
        height: 20px;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: 20px;
                mask-size: 20px;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
        background-color: #8e99a4;
    }

.mx_RoomHeader_name.mx_RoomHeader_name--textonly {
        cursor: unset;
    }

.mx_RoomHeader_name.mx_RoomHeader_name--textonly:hover {
            background-color: unset;
        }

.mx_RoomHeader_name[aria-expanded="true"] {
        background-color: #394049;
    }

.mx_RoomHeader_name[aria-expanded="true"] .mx_RoomHeader_chevron {
            -webkit-transform: rotate(180deg);
                    transform: rotate(180deg);
        }

.mx_RoomHeader_settingsHint {
    color: #a2a2a2 !important;
}

.mx_RoomHeader_searchStatus {
    font-weight: normal;
    opacity: 0.6;
}

.mx_RoomTopic {
    position: relative;
    cursor: pointer;
}

.mx_RoomHeader_topic {

    -webkit-box-flex: 1;

        -ms-flex: 1;

            flex: 1;
    color: #b9bec6;
    font-weight: 400;
    font-size: 1.3rem;
    line-height: 1.6rem;
    max-height: calc(1.6rem * 2);

    overflow: hidden;
    -webkit-line-clamp: 2; /* See: https://drafts.csswg.org/css-overflow-3/#webkit-line-clamp */
    -webkit-box-orient: vertical;
    display: -webkit-box;
}

.mx_RoomHeader_topic .mx_Emoji {
    /* Undo font size increase to prevent vertical cropping and ensure the same size */
    /* as in plain text emojis */
    font-size: inherit;
}

.mx_RoomHeader_avatar {
    -webkit-box-flex: 0;
        -ms-flex: 0;
            flex: 0;
    margin: 0 7px;
    position: relative;
    cursor: pointer;
}

.mx_RoomHeader_avatar .mx_BaseAvatar_image {
    -o-object-fit: cover;
       object-fit: cover;
}

.mx_RoomHeader_button {
    cursor: pointer;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    margin-left: 1px;
    margin-right: 1px;
    height: 32px;
    width: 32px;
    position: relative;
    border-radius: 100%;
}

.mx_RoomHeader_button::before {
        content: "";
        position: absolute;
        top: 4px; /* center with parent of 32px */
        left: 4px; /* center with parent of 32px */
        height: 24px;
        width: 24px;
        background-color: #8e99a4;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

.mx_RoomHeader_button:hover {
        background: rgba(13,189,139, 0.1);
    }

.mx_RoomHeader_button:hover::before {
            background-color: #0dbd8b;
        }

.slider-container {
    position: relative;
    padding: 0 10px; /* Padding to prevent overflow */
}

.slider {
    -webkit-appearance: none; /* Override default appearance */
    width: calc(100% - 20px); /* Width accounting for padding */
    margin: 24px 10px; /* Space for tooltip */
}

.tooltip {
    padding: 4px 8px;
    border-radius: 4px;
    position: absolute;
    top: -17px; /* Position above the slider */
    -webkit-transform: translateX(-50%);
            transform: translateX(-50%); /* Center the tooltip */
    pointer-events: none; /* Ignore mouse for tooltip */
    background-color: grey;
    color: white;
}

.tooltip::before {
        content: "";
        position: absolute;
        top: 17px;
        left: 34px;
        height: 25px;
        width: 25px;
        -webkit-mask-image: url(../../img/down.725940a.svg);
                mask-image: url(../../img/down.725940a.svg);
        background-color: grey;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

.flags {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    margin-left: 5px;
    padding-right: 10px;
}

#inputCorrect > div > div > div > div > div > input {
    margin: 0;
}

/* For styling the thumb and track of the slider for different browsers, you might need additional CSS. */

.qrCodePrompt {
    padding: 20px;
    background-color: #15191e;
    border: 2px solid rgb(236, 234, 234);
    border-radius: 8px;
    max-width: 500px;
    width: 40%;
    left: 35%;
    z-index: 100;
    position: fixed;
    top: 28%;
}

@media (max-width: 1300px) {
    .qrCodePrompt {
        min-width: 40%;
        left: 30%;
    }
}

.memos {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: right;
        -ms-flex-pack: right;
            justify-content: right;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    margin-top: 5px;
    margin-left: 5px;
    margin-right: 10px;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-flow: column;
            flex-flow: column;
}

.textarea123 {
    border: 1px solid #2b0b5b;
    background-color: #0b0317;
    color: #ffffff;
    border-radius: 4px;
    padding: 5px;
}

.labelfomat {
    width: 50px;
    padding: 5px;
    margin-right: 5px;
    border-radius: 4px;
    text-align: center;
    background-color: #f2f5f8;
    color: #61708b;
}

.inputoflast {
    border: none;
    background-color: #f2f5f8;
    border-radius: 4px;
    padding: 5px;
    color: #61708b;
}

.lastInput {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    width: 100%;
    margin: 5px;
}

.mx_xrp_model {
    position: fixed;
    left: 50%;
    background-color: white;
    top: 40%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    padding: 15px;
    -webkit-transform: translate(-50%, -35%);
            transform: translate(-50%, -35%);
    min-width: 700px;
    width: auto;
    min-height: 455px;
    border: 2px solid rgb(236, 234, 234);
    background: #020105;
    color: #8949e9;
    z-index: 99;
}

.mx_SearchBar_cancel_my {
    background-color: #8e99a4;
    -webkit-mask: url(../../img/cancel.12c5c12.svg);
            mask: url(../../img/cancel.12c5c12.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: right;
            mask-position: right;
    -webkit-mask-size: 18px;
            mask-size: 18px;
    padding: 15px;
    margin: 0 12px 0 3px;
    cursor: pointer;
}

.mx_Field_custom_select {
    background-color: #0b0317 !important;
    color: #f0e8fc !important;
    width: 60%;
    border: 1px solid #2b0b5b !important;
}

.mx_RoomHeader_button_xrp {
    cursor: pointer;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    margin-left: 1px;
    margin-right: 1px;
    height: 24px;
    width: 26px;
    position: relative;
    background: black;
}

.mx_RoomHeader_button_xrp::before {
        content: "";
        position: absolute;
        top: 5px;
        left: 5px;
        height: 15px;
        width: 17px;
        -webkit-mask-image: url(../../img/element-icons/xrp.7ef9f0d.svg);
                mask-image: url(../../img/element-icons/xrp.7ef9f0d.svg);
        background-color: white;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

.mx_xrp_send::before {
        content: "";
        position: absolute;
        top: 5px;
        left: 5px;
        height: 25px;
        width: 25px;
        -webkit-mask-image: url(../../img/element-icons/upload2.d759fed.svg);
                mask-image: url(../../img/element-icons/upload2.d759fed.svg);
        background-color: black;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
    }

.mx_tab_div {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    width: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    height: 100%;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-flow: column;
            flex-flow: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    padding: 20px;
}

.mx_tab_div2 {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    width: 100%;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    height: 100%;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-flow: column;
            flex-flow: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    padding: 20px;
}

.mx_tab_div2 > div {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
}

.mx_tab_div > div {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    width: 100%;
    margin: 5px;
    position: relative;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: left;
        -ms-flex-pack: left;
            justify-content: left;
}

.mx_xrp_receive {
    width: 18px !important;
    height: 18px !important;
}

.mx_xrp_copy {
    width: 20px !important;
    height: 20px !important;
    overflow: hidden;
    margin: 0px 0px -3px 4px;
}

.shift_little {
    position: relative;
    margin: 5px;
    color: #f0e8fc;
    padding-right: 5px;
}

.react-tabs__tab--selected {
    background: #0b0317 !important;
}

.mx_xrp_transaction {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    text-align: center;
}

.mx_RoomHeader_button_unreadIndicator_bg {
    position: absolute;
    right: -3px;
    right: var(--RoomHeader-indicator-dot-offset);
    top: -3px;
    top: var(--RoomHeader-indicator-dot-offset);
    margin: 4px;
    width: 8px;
    width: var(--RoomHeader-indicator-dot-size);
    height: 8px;
    height: var(--RoomHeader-indicator-dot-size);
    border-radius: 50%;
    -webkit-transform: scale(1.6);
            transform: scale(1.6);
    -webkit-transform-origin: center center;
            transform-origin: center center;
    background: rgba(21,25,30, 1);
}

.mx_RoomHeader_button_unreadIndicator {
    position: absolute;
    right: -3px;
    right: var(--RoomHeader-indicator-dot-offset);
    top: -3px;
    top: var(--RoomHeader-indicator-dot-offset);
    margin: 4px;
}

.mx_RoomHeader_button_unreadIndicator.mx_Indicator_red {
        background: rgba(255,91,85, 1);
        -webkit-box-shadow: rgba(255,91,85, 1);
                box-shadow: rgba(255,91,85, 1);
    }

.mx_RoomHeader_button_unreadIndicator.mx_Indicator_gray {
        background: rgba(255,255,255, 1);
        -webkit-box-shadow: rgba(255,255,255, 1);
                box-shadow: rgba(255,255,255, 1);
    }

.mx_RoomHeader_button_unreadIndicator.mx_Indicator_bold {
        background: rgba(255,255,255, 1);
        -webkit-box-shadow: rgba(255,255,255, 1);
                box-shadow: rgba(255,255,255, 1);
    }

.mx_RoomHeader_button--unread::before {
        background-color: #fff !important;
    }

.select_input {
    width: 310px;
    height: 30px;
    padding: 5px;
    margin-left: 5px;
    border-radius: 5px;
}

.amount {
    position: absolute;
    z-index: 1;
    top: 40px;
}

.amount_value {
    color: #ffffff;
}

.select_input2 {
    height: 40px;
    padding: 5px;
    width: 70px;
    margin-inline: 5px;
    color: #ffffff;
    background-color: #020105;
    border-radius: 4px;
    border: none;
}

/* Styling for Chrome, Safari, and other WebKit browsers */

input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none; /* Override default look */
    appearance: none;
    width: 16px; /* Set a specific slider handle width */
    height: 16px; /* Set a specific slider handle height */
    border-radius: 50%; /* Make it circular */
    background: #fff; /* Slider handle color */
    border: 2px solid #91d5ff;
    cursor: pointer; /* Cursor on hover */
    margin-top: -7px; /* Align with the track */
}

input[type="range"]::-webkit-slider-runnable-track {
    width: 100%; /* Full-width */
    height: 1px; /* Slider track height */
    border-radius: 2px; /* Track corner rounding */
    cursor: pointer;
    outline: none;
}

/* Styling for Firefox */

input[type="range"]::-moz-range-thumb {
    width: 16px; /* Set a specific slider handle width */
    height: 16px; /* Set a specific slider handle height */
    border: none; /* Remove default border */
    border-radius: 50%; /* Make it circular */
    background: #fff; /* Slider handle color */
    border: 2px solid #91d5ff;
    cursor: pointer; /* Cursor on hover */
    outline: none;
}

input[type="range"]::-moz-range-track {
    width: 100%; /* Full-width */
    height: 1px; /* Slider track height */
    background: #ccc; /* Track color */
    border-radius: 2px; /* Track corner rounding */
    outline: none;
}

/* Styling for IE and Edge */

input[type="range"]::-ms-thumb {
    width: 16px; /* Set a specific slider handle width */
    height: 16px; /* Set a specific slider handle height */
    background: #fb0101; /* Slider handle color */
    border: 2px solid #91d5ff;
    cursor: pointer; /* Cursor on hover */
    outline: none;
}

input[type="range"]::-ms-track {
    width: 100%; /* Full-width */
    height: 1px; /* Slider track height */
    background: transparent; /* IE uses 'color' to style the track */
    border-color: transparent;
    color: #ddd; /* IE uses 'color' to style the track */
    cursor: pointer;
    outline: none;
}

/* Common styles */

input[type="range"] {
    -webkit-appearance: none; /* Reset default browser styles */
    margin: 10px 0; /* Provide sufficient space */
    width: 100%; /* Full-width */
}

/* Focus styles */

input[type="range"]:focus-within {
    outline: none !important;
    border-color: #eee;
}

input[type="range"]:focus-within::-webkit-slider-runnable-track {
    outline: none !important;
    border-color: #eee;
}

input[type="range"]:focus-within::-moz-range-track {
    outline: none !important;
    border-color: #eee;
}

input[type="range"]:focus-within::-ms-track {
    outline: none !important;
    border-color: #eee;
}

/* Firefox */

input[type="range"]::-moz-range-progress {
    background: #91d5ff; /* Color of the progressed track */
    height: 4px; /* Height of the progressed track */
}

input[type="range"]::-moz-range-track {
    background: #ddd; /* Color of the entire track */
    height: 4px; /* Height of the entire track */
}

/* IE and Edge (pre-Chromium versions) */

input[type="range"]::-ms-fill-lower {
    background: #91d5ff; /* Color of the progressed track */
}

input[type="range"]::-ms-fill-upper {
    background: #ddd; /* Color of the rest of the track */
}

.select_input3 {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    height: 30px;
    border-radius: 4px;
    padding: 5px;
    margin-right: 10px;
    color: #61708b;
    background-color: #f2f5f8;
    border: none;
}

.mx_RoomHeader_button--highlight::before, .mx_RoomHeader_button:hover::before {
        background-color: #0dbd8b !important;
    }

.mx_RoomHeader_forgetButton::before {
    -webkit-mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
            mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
    width: 26px;
}

.mx_RoomHeader_appsButton::before {
    -webkit-mask-image: url(../../img/element-icons/room/apps.4933168.svg);
            mask-image: url(../../img/element-icons/room/apps.4933168.svg);
}

.mx_RoomHeader_appsButton_highlight::before {
    background-color: #0dbd8b;
}

.mx_RoomHeader_searchButton::before {
    -webkit-mask-image: url(../../img/element-icons/room/search-inset.8f291bd.svg);
            mask-image: url(../../img/element-icons/room/search-inset.8f291bd.svg);
}

.mx_RoomHeader_inviteButton::before {
    -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
            mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
}

.mx_RoomHeader_voiceCallButton::before {
    -webkit-mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
            mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);

    /* The call button SVG is padded slightly differently, so match it up to the size */
    /* of the other icons */
    -webkit-mask-size: 20px;
            mask-size: 20px;
    -webkit-mask-position: center;
            mask-position: center;
}

.mx_RoomHeader_videoCallButton::before {
    -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
            mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
}

.mx_RoomHeader_layoutButton--freedom::before,
.mx_RoomHeader_freedomIcon::before {
    -webkit-mask-image: url(../../img/element-icons/call/freedom.1f84c87.svg);
            mask-image: url(../../img/element-icons/call/freedom.1f84c87.svg);
}

.mx_RoomHeader_layoutButton--spotlight::before,
.mx_RoomHeader_spotlightIcon::before {
    -webkit-mask-image: url(../../img/element-icons/call/spotlight.357f9db.svg);
            mask-image: url(../../img/element-icons/call/spotlight.357f9db.svg);
}

.mx_RoomHeader_closeButton::before {
        -webkit-mask-image: url(../../img/cancel.12c5c12.svg);
                mask-image: url(../../img/cancel.12c5c12.svg);
        -webkit-mask-size: 20px;
                mask-size: 20px;
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_RoomHeader_closeButton:hover {
        background: unset;
    }

/* remove background color on hover */

.mx_RoomHeader_closeButton:hover::before {
            background-color: #8e99a4; /* set the default background color */
        }

.mx_RoomHeader_minimiseButton::before {
    -webkit-mask-image: url(../../img/element-icons/reduce.b404e5e.svg);
            mask-image: url(../../img/element-icons/reduce.b404e5e.svg);
}

.mx_RoomHeader_layoutMenu .mx_IconizedContextMenu_icon::before {
    content: "";
    width: 16px;
    height: 16px;
    display: block;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: 20px;
            mask-size: 20px;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    background: #ffffff;
}

@media only screen and (max-width: 480px) {
    .mx_RoomHeader_wrapper {
        padding: 0;
        margin: 0;
    }

    .mx_RoomHeader {
        overflow: hidden;
    }
}

/**/

.LeftPanel_openBtn {
    display: none;
    font-size: 19px;
    margin-left: 7px;
}

/*Responsive Design*/

@media (max-width: 1024px) {
    .LeftPanel_openBtn {
        display: block;
    }
}

/**/

.LeftPanel_openBtn {
    display: none;
    font-size: 19px;
    margin-left: 7px;
}

/*Responsive Design*/

@media (max-width: 1024px) {
    .LeftPanel_openBtn {
        display: block;
    }
}

@media (max-width: 850px) {
    .mx_xrp_model {
        min-width: 90%;
        min-height: 300px;
        padding: 10px;
    }
}

@media (max-width: 480px) {
    .mx_xrp_model {
        max-width: 90%;
        min-height: 200px;
        padding: 5px;
    }
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomInfoLine {
    color: #a9b2bc;
    display: inline-block;
}

.mx_RoomInfoLine::before {
        content: "";
        display: inline-block;
        height: 1.2em;
        mask-position-y: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        background-color: #8e99a4;
        vertical-align: text-bottom;
        margin-right: 6px;
    }

.mx_RoomInfoLine.mx_RoomInfoLine_public::before {
        width: 12px;
        -webkit-mask-size: 12px;
                mask-size: 12px;
        -webkit-mask-image: url(../../img/globe.216f1db.svg);
                mask-image: url(../../img/globe.216f1db.svg);
    }

.mx_RoomInfoLine.mx_RoomInfoLine_private::before {
        width: 10px;
        -webkit-mask-size: 10px;
                mask-size: 10px;
        -webkit-mask-image: url(../../img/element-icons/lock.0519ea1.svg);
                mask-image: url(../../img/element-icons/lock.0519ea1.svg);
    }

.mx_RoomInfoLine.mx_RoomInfoLine_video::before {
        width: 16px;
        -webkit-mask-size: 16px;
                mask-size: 16px;
        -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
                mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
    }

.mx_RoomInfoLine .mx_RoomInfoLine_members {
        color: inherit;
    }

.mx_RoomInfoLine .mx_RoomInfoLine_members::before {
            content: "·"; /* visual separator */
            margin: 0 6px;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomList {
    padding-right: 7px; /* width of the scrollbar, to line things up */
}

.mx_RoomList_iconPlus::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/plus-circle.11d45be.svg);
            mask-image: url(../../img/element-icons/roomlist/plus-circle.11d45be.svg);
}

.mx_RoomList_iconNewRoom::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/hash-plus.cc06c23.svg);
            mask-image: url(../../img/element-icons/roomlist/hash-plus.cc06c23.svg);
}

.mx_RoomList_iconNewVideoRoom::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/hash-video.8c87910.svg);
            mask-image: url(../../img/element-icons/roomlist/hash-video.8c87910.svg);
}

.mx_RoomList_iconAddExistingRoom::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/hash.e2814db.svg);
            mask-image: url(../../img/element-icons/roomlist/hash.e2814db.svg);
}

.mx_RoomList_iconExplore::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/hash-search.4e9dba5.svg);
            mask-image: url(../../img/element-icons/roomlist/hash-search.4e9dba5.svg);
}

.mx_RoomList_iconDialpad::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/dialpad.ce90567.svg);
            mask-image: url(../../img/element-icons/roomlist/dialpad.ce90567.svg);
}

.mx_RoomList_iconStartChat::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/member-plus.7ecbaa1.svg);
            mask-image: url(../../img/element-icons/roomlist/member-plus.7ecbaa1.svg);
}

.mx_RoomList_iconInvite::before {
    -webkit-mask-image: url(../../img/element-icons/room/share.069290e.svg);
            mask-image: url(../../img/element-icons/room/share.069290e.svg);
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomListHeader {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_RoomListHeader .mx_RoomListHeader_contextLessTitle,
    .mx_RoomListHeader .mx_RoomListHeader_contextMenuButton {
        font-size: 1.5rem;
        line-height: 2.4rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        padding: 1px 24px 1px 4px;
        position: relative;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        margin-left: 8px;
        margin-right: auto;
        -webkit-user-select: none;
           -moz-user-select: none;
            -ms-user-select: none;
                user-select: none;
    }

.mx_RoomListHeader .mx_RoomListHeader_contextMenuButton {
        border-radius: 6px;
    }

.mx_RoomListHeader .mx_RoomListHeader_contextMenuButton:hover {
            background-color: #394049;
        }

.mx_RoomListHeader .mx_RoomListHeader_contextMenuButton::before {
            content: "";
            width: 20px;
            height: 20px;
            top: 3px;
            right: 0;
            position: absolute;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background-color: #8e99a4;
            -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                    mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
        }

.mx_RoomListHeader .mx_RoomListHeader_contextMenuButton[aria-expanded="true"] {
            background-color: #394049;
        }

.mx_RoomListHeader .mx_RoomListHeader_contextMenuButton[aria-expanded="true"]::before {
                -webkit-transform: rotate(180deg);
                        transform: rotate(180deg);
            }

.mx_RoomListHeader .mx_RoomListHeader_plusButton {
        width: 32px;
        height: 32px;
        border-radius: 8px;
        position: relative;
        padding: 8px;
        margin-left: 8px;
        margin-right: 12px;
        background-color: rgba(141,151,165, 0.2);
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        -ms-flex-negative: 0;
            flex-shrink: 0;
    }

.mx_RoomListHeader .mx_RoomListHeader_plusButton::before {
            content: "";
            width: 16px;
            height: 16px;
            position: absolute;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background-color: #a9b2bc;
            -webkit-mask-image: url(../../img/element-icons/roomlist/plus.6bf6398.svg);
                    mask-image: url(../../img/element-icons/roomlist/plus.6bf6398.svg);
        }

.mx_RoomListHeader .mx_RoomListHeader_plusButton:hover {
            background-color: #8e99a4;
        }

.mx_RoomListHeader .mx_RoomListHeader_plusButton:hover::before {
                background-color: #15191e;
            }

.mx_RoomListHeader_iconInvite::before {
    -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
            mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
}

.mx_RoomListHeader_iconStartChat::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/member-plus.7ecbaa1.svg);
            mask-image: url(../../img/element-icons/roomlist/member-plus.7ecbaa1.svg);
}

.mx_RoomListHeader_iconNewRoom::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/hash-plus.cc06c23.svg);
            mask-image: url(../../img/element-icons/roomlist/hash-plus.cc06c23.svg);
}

.mx_RoomListHeader_iconNewVideoRoom::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/hash-video.8c87910.svg);
            mask-image: url(../../img/element-icons/roomlist/hash-video.8c87910.svg);
}

.mx_RoomListHeader_iconExplore::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/hash-search.4e9dba5.svg);
            mask-image: url(../../img/element-icons/roomlist/hash-search.4e9dba5.svg);
}

.mx_RoomListHeader_iconPlus::before {
    -webkit-mask-image: url(../../img/element-icons/plus.baac2b4.svg);
            mask-image: url(../../img/element-icons/plus.baac2b4.svg);
}

/*
Copyright 2015 - 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomPreviewBar {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-align-items: center;
}

.mx_RoomPreviewBar h3 {
        font-size: 1.8rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_RoomPreviewBar h3.mx_RoomPreviewBar_spinnerTitle {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: horizontal;
            -webkit-box-direction: normal;
                -ms-flex-direction: row;
                    flex-direction: row;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
        }

.mx_RoomPreviewBar h3,
    .mx_RoomPreviewBar .mx_RoomPreviewBar_message p {
        /* break-word, with fallback to break-all, which is wider supported */
        word-break: break-all;
        word-break: break-word;
    }

.mx_RoomPreviewBar .mx_Spinner {
        width: auto;
        height: auto;
        margin: 10px 10px 10px 0;
        -webkit-box-flex: 0;
            -ms-flex: 0 0 auto;
                flex: 0 0 auto;
    }

.mx_RoomPreviewBar .mx_RoomPreviewBar_footer {
        font-size: 1.2rem;
        line-height: 2rem;
    }

.mx_RoomPreviewBar .mx_RoomPreviewBar_footer .mx_Spinner {
            vertical-align: middle;
            display: inline-block;
        }

.mx_RoomPreviewBar_actions {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.mx_RoomPreviewBar_message {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
}

.mx_RoomPreviewBar_message p {
        overflow-wrap: break-word;
    }

.mx_RoomPreviewBar_panel {
    padding: 8px 8px 8px 20px;

    -webkit-box-orient: horizontal;

    -webkit-box-direction: normal;

        -ms-flex-direction: row;

            flex-direction: row;
}

.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 auto;
                flex: 0 0 auto;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
        padding: 3px 8px;
    }

.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions > * {
            margin-left: 12px;
        }

.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message {
        -webkit-box-flex: 1;
            -ms-flex: 1 0 0px;
                flex: 1 0 0;
        min-width: 0;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message > * {
            margin: 4px;
        }

/* With maximised widgets, the panel fits in better when rounded */

.mx_MainSplit_maximisedWidget .mx_RoomPreviewBar_panel {
    margin: 8px;
    margin: var(--container-gap-width);
    margin-right: calc(8px / 2);
    margin-right: calc(var(--container-gap-width) / 2); /* Shared with right panel */
    margin-top: 0; /* Already covered by apps drawer */
    border-radius: 8px;
}

.mx_RoomPreviewBar_dialog {
    margin: auto;
    -webkit-box-sizing: content;
            box-sizing: content;
    width: 400px;
    border-radius: 4px;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    padding: 20px;
    text-align: center;
}

.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message {
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message > * {
            margin: 5px 0 20px 0;
        }

.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions {
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
    }

.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton {
            padding: 7px 50px; /* extra wide */
        }

.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions > * {
            margin-top: 12px;
        }

.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton.mx_AccessibleButton_kind_primary {
            /* to account for the padding of the primary button which causes inconsistent look between */
            /* subsequent secondary (text) buttons */
            margin-bottom: 7px;
        }

.mx_RoomPreviewBar_inviter {
    font-weight: 600;
    font-weight: var(--font-semi-bold);
}

a.mx_RoomPreviewBar_inviter {
    text-decoration: underline;
    cursor: pointer;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomPreviewCard {
    padding: 32px 24px !important; /* Override SpaceRoomView's default padding */
    margin: auto;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    max-width: 480px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    background-color: #21262c;
    border-radius: 8px;
    position: relative;
    font-size: 1.4rem;
}

.mx_RoomPreviewCard .mx_RoomPreviewCard_notice {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        line-height: 2.4rem;
        color: #ffffff;
        margin-top: 24px;
        position: relative;
        padding-left: calc(20px + 8px);
    }

.mx_RoomPreviewCard .mx_RoomPreviewCard_notice::before {
            content: "";
            position: absolute;
            height: 2.4rem;
            width: 20px;
            left: 0;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
                    mask-image: url(../../img/element-icons/room/room-summary.a377754.svg);
            background-color: #a9b2bc;
        }

.mx_RoomPreviewCard .mx_RoomPreviewCard_inviter {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        margin-bottom: 20px;
        font-size: 1.5rem;
    }

.mx_RoomPreviewCard .mx_RoomPreviewCard_inviter > div {
            margin-left: 8px;
        }

.mx_RoomPreviewCard .mx_RoomPreviewCard_inviter > div .mx_RoomPreviewCard_inviter_name {
                line-height: 1.8rem;
            }

.mx_RoomPreviewCard .mx_RoomPreviewCard_inviter > div .mx_RoomPreviewCard_inviter_mxid {
                color: #a9b2bc;
            }

.mx_RoomPreviewCard .mx_RoomPreviewCard_avatar {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_RoomPreviewCard .mx_RoomPreviewCard_avatar .mx_RoomAvatar_isSpaceRoom.mx_BaseAvatar_image,
            .mx_RoomPreviewCard .mx_RoomPreviewCard_avatar .mx_RoomAvatar_isSpaceRoom .mx_BaseAvatar_image {
                border-radius: 12px;
            }

.mx_RoomPreviewCard .mx_RoomPreviewCard_avatar .mx_RoomPreviewCard_video {
            width: 50px;
            height: 50px;
            border-radius: calc((50px + 2 * 3px) / 2);
            background-color: #0dbd8b;
            border: 3px solid #21262c;

            position: relative;
            left: calc(-50px / 4 - 3px);
        }

.mx_RoomPreviewCard .mx_RoomPreviewCard_avatar .mx_RoomPreviewCard_video::before {
                content: "";
                background-color: #ffffff;
                position: absolute;
                width: 50px;
                height: 50px;
                -webkit-mask-size: 22px;
                        mask-size: 22px;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
                        mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
            }

/* XXX Remove this when video rooms leave beta */

.mx_RoomPreviewCard .mx_RoomPreviewCard_avatar .mx_BetaCard_betaPill {
            position: absolute;
            inset-block-start: 32px;
            inset-inline-end: 24px;
        }

.mx_RoomPreviewCard h1.mx_RoomPreviewCard_name {
        margin: 16px 0 !important; /* Override SpaceRoomView's default margins */
    }

.mx_RoomPreviewCard .mx_RoomPreviewCard_topic {
        line-height: 2.2rem;
        margin-top: 16px;
        max-height: 160px;
        overflow-y: auto;
    }

.mx_RoomPreviewCard .mx_FacePile {
        margin-top: 20px;
    }

.mx_RoomPreviewCard .mx_RoomPreviewCard_joinButtons {
        margin-top: 20px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        grid-gap: 20px;
        gap: 20px;
    }

.mx_RoomPreviewCard .mx_RoomPreviewCard_joinButtons .mx_AccessibleButton {
            max-width: 200px;
            padding: 14px 0;
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomSublist {
    margin-left: 8px;
    margin-bottom: 4px;
}

.mx_RoomSublist.mx_RoomSublist_hidden {
        display: none;
    }

.mx_RoomSublist:not(.mx_RoomSublist_minimized) .mx_RoomSublist_headerContainer {
            height: auto;
        }

.mx_RoomSublist .mx_RoomSublist_headerContainer {
        /* Create a flexbox to make alignment easy */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;

        /* *************************** */
        /* Sticky Headers Start */

        /* Ideally we'd be able to use `position: sticky; top: 0; bottom: 0;` on the */
        /* headerContainer, however due to our layout concerns we actually have to */
        /* calculate it manually so we can sticky things in the right places. We also */
        /* target the headerText instead of the container to reduce jumps when scrolling, */
        /* and to help hide the badges/other buttons that could appear on hover. This */
        /* all works by ensuring the header text has a fixed height when sticky so the */
        /* fixed height of the container can maintain the scroll position. */

        /* The combined height must be set in the LeftPanel component for sticky headers */
        /* to work correctly. */
        padding-bottom: 8px;
        height: 24px;
        color: #8e99a4;
    }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickableContainer {
            width: 100%;
        }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            max-width: 100%;

            /* Create a flexbox to make ordering easy */
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;

            /* We use a generic sticky class for 2 reasons: to reduce style duplication and */
            /* to identify when a header is sticky. If we didn't have a consistent sticky class, */
            /* we'd have to do the "is sticky" checks again on click, as clicking the header */

            /* We don't have a top style because the top is dependent on the room list header's */
            /* height, and is therefore calculated in JS. */
            /* The class, mx_RoomSublist_headerContainer_stickyTop, is applied though. */
        }

/* when sticky scrolls instead of collapses the list. */

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable.mx_RoomSublist_headerContainer_sticky {
                position: fixed;
                height: 32px; /* to match the header container */
                /* width set by JS because of a compat issue between Firefox and Chrome */
                width: calc(100% - 15px);
            }

/* *************************** */

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer {
            /* Create another flexbox row because it's super easy to position the badge this way. */
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
        }

/* Apply the width and margin to the badge so the container doesn't occupy dead space */

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer .mx_NotificationBadge {
                /* Do not set a width so the badges get properly sized */
                margin-left: 8px; /* same as menu+aux buttons */
            }

/* Sticky Headers End */

.mx_RoomSublist .mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_NotificationBadge {
                margin-right: 4px; /* just to push it over a bit, aligning it with the other elements */
            }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton,
        .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton {
            margin-left: 8px; /* should be the same as the notification badge */
            position: relative;
            width: 24px;
            height: 24px;
            border-radius: 8px;
        }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton::before, .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton::before {
                content: "";
                width: 16px;
                height: 16px;
                position: absolute;
                top: 4px;
                left: 4px;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: contain;
                        mask-size: contain;
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                background: #91a1c0;
            }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:hover,
        .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:hover {
            background: rgba(141,151,165, 0.2);
        }

/* Hide the menu button by default */

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton {
            visibility: hidden;
            width: 0;
            margin: 0;
        }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton::before {
            -webkit-mask-image: url(../../img/element-icons/roomlist/plus.6bf6398.svg);
                    mask-image: url(../../img/element-icons/roomlist/plus.6bf6398.svg);
        }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton::before {
            -webkit-mask-image: url(../../img/element-icons/context-menu.131c13c.svg);
                    mask-image: url(../../img/element-icons/context-menu.131c13c.svg);
        }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            max-width: calc(100% - 16px); /* 16px is the badge width */
            line-height: 1.6rem;
            font-size: 1.3rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);

            /* Ellipsize any text overflow */
            text-overflow: ellipsis;
            overflow: hidden;
            white-space: nowrap;
        }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn {
                display: inline-block;
                position: relative;
                width: 14px;
                height: 14px;
                margin-right: 6px;
            }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn::before {
                    content: "";
                    width: 18px;
                    height: 18px;
                    position: absolute;
                    -webkit-mask-position: center;
                            mask-position: center;
                    -webkit-mask-size: contain;
                            mask-size: contain;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    background-color: #8e99a4;
                    -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                            mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                }

.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn.mx_RoomSublist_collapseBtn_collapsed::before {
                    -webkit-transform: rotate(-90deg);
                            transform: rotate(-90deg);
                }

/* stick to top), so we make sure to exclude the first visible sublist. */

.mx_RoomSublist:not(.mx_RoomSublist_hidden) ~ .mx_RoomSublist .mx_RoomSublist_stickableContainer {
        height: 24px;
    }

/* scrolled to the top above the first sublist (whose header can only ever */

.mx_RoomSublist .mx_RoomSublist_resizeBox {
        position: relative;

        /* Create another flexbox column for the tiles */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        overflow: hidden;

        /* Class name comes from the ResizableBox component */
    }

.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles {
            -webkit-box-flex: 1;
                -ms-flex: 1 0 0px;
                    flex: 1 0 0;
            overflow: hidden;
            overflow: clip;
            /* need this to be flex otherwise the overflow hidden from above */
            /* sometimes vertically centers the clipped list ... no idea why it would do this */
            /* as the box model should be top aligned. Happens in both FF and Chromium */
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            -ms-flex-item-align: stretch;
                align-self: stretch;
            /* without this Firefox will prefer pushing the resizer & show more/less button into the overflow */
            min-height: 0;

            -webkit-mask-image: linear-gradient(0deg, transparent, black 4px);

                    mask-image: linear-gradient(0deg, transparent, black 4px);
        }

.mx_RoomSublist .mx_RoomSublist_resizeBox.mx_RoomSublist_resizeBox_forceExpanded .mx_RoomSublist_tiles {
            /* in this state the div can collapse its height entirely in Chromium, */
            /* so prevent that by allowing overflow */
            overflow: visible;
            /* clear the min-height to make it not collapse entirely in a state with no active resizer */
            min-height: unset;
        }

.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles_showNButton {
            -webkit-box-flex: 0;
                -ms-flex: 0 0 32px;
                    flex: 0 0 32px;
        }

.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles {
            -webkit-box-flex: 0;
                -ms-flex: 0 0 4px;
                    flex: 0 0 4px;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
            width: 100%;
        }

/* so that selector is below and one level higher. */

.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandle {
            cursor: ns-resize;
            border-radius: 3px;

            /* Override styles from library */
            max-width: 64px;
            height: 4px !important; /* Update RESIZE_HANDLE_HEIGHT if this changes */

            /* This is positioned directly below the 'show more' button. */
            position: relative !important;
            bottom: 0 !important; /* override from library */
        }

/* The hover state needs to use the whole sublist, not just the resizable box, */

.mx_RoomSublist .mx_RoomSublist_resizeBox:hover .mx_RoomSublist_resizerHandle, .mx_RoomSublist .mx_RoomSublist_resizeBox.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_resizerHandle {
                opacity: 0.8;
                background-color: #ffffff;
            }

/* scroll jumps when they become sticky. However, that leaves a gap when */

.mx_RoomSublist .mx_RoomSublist_showNButton {
        cursor: pointer;
        font-size: 1.3rem;
        line-height: 1.8rem;
        color: #a9b2bc;

        /* Update the render() function for RoomSublist if these change */
        /* Update the ListLayout class for minVisibleTiles if these change. */
        height: 24px;
        padding-bottom: 4px;

        /* We create a flexbox to cheat at alignment */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron {
            position: relative;
            width: 18px;
            height: 18px;
            margin-left: 12px;
            margin-right: 16px;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background: #8e99a4;
            left: -1px; /* adjust for image position */
        }

.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showMoreButtonChevron,
        .mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron {
            -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                    mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
        }

.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron {
            -webkit-transform: rotate(180deg);
                    transform: rotate(180deg);
        }

/* In the general case, we reserve space for each sublist header to prevent */

.mx_RoomSublist.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton, .mx_RoomSublist:not(.mx_RoomSublist_minimized) > .mx_RoomSublist_headerContainer:focus-within .mx_RoomSublist_menuButton, .mx_RoomSublist:not(.mx_RoomSublist_minimized) > .mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton {
            visibility: visible;
            width: 24px;
            margin-left: 8px;
        }

.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer {
            height: auto;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            position: relative;
        }

.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer {
                -webkit-box-ordinal-group: 1;
                    -ms-flex-order: 0;
                        order: 0;
                -ms-flex-item-align: end;
                    align-self: flex-end;
                margin-right: 0;
            }

.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable {
                -webkit-box-ordinal-group: 2;
                    -ms-flex-order: 1;
                        order: 1;
                max-width: 100%;
            }

.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton {
                -webkit-box-ordinal-group: 3;
                    -ms-flex-order: 2;
                        order: 2;
                visibility: visible;
                width: 32px !important; /* !important to override hover styles */
                height: 32px !important; /* !important to override hover styles */
                margin-left: 0 !important; /* !important to override hover styles */
                background-color: rgba(141,151,165, 0.2);
                margin-top: 8px;
            }

.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton::before {
                    top: 8px;
                    left: 8px;
                }

.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_resizeBox {
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
        }

.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton {
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
        }

.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron {
                margin-right: 12px; /* to center */
            }

.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_menuButton {
            height: 16px;
        }

.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton, .mx_RoomSublist.mx_RoomSublist_minimized > .mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton {
                visibility: visible;
                position: absolute;
                bottom: 48px; /* align to middle of name, 40px for aux button (with padding) and 8px for alignment */
                right: 0;
                width: 16px;
                height: 16px;
                border-radius: 0;
                z-index: 1; /* occlude the list name */

                /* This is the same color as the left panel background because it needs */
                /* to occlude the sublist title */
                background-color: rgba(33,38,44, 0.9);
            }

.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton::before, .mx_RoomSublist.mx_RoomSublist_minimized > .mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton::before {
                    top: 0;
                    left: 0;
                }

.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton, .mx_RoomSublist.mx_RoomSublist_minimized > .mx_RoomSublist_headerContainer:hover.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton {
                    bottom: 8px; /* align to the middle of name, 40px less than the `bottom` above. */
                }

.mx_RoomSublist_contextMenu {
    padding: 20px 16px;
    width: 250px;
}

.mx_RoomSublist_contextMenu hr {
        margin-top: 16px;
        margin-bottom: 16px;
        margin-right: 16px; /* additional 16px */
        border: 1px solid #ffffff;
        opacity: 0.1;
    }

.mx_RoomSublist_contextMenu .mx_RoomSublist_contextMenu_title {
        font-size: 1.5rem;
        line-height: 2rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        margin-bottom: 4px;
    }

.mx_RoomSublist_contextMenu .mx_StyledRadioButton,
    .mx_RoomSublist_contextMenu .mx_Checkbox {
        margin-top: 8px;
    }

.mx_RoomSublist_skeletonUI {
    position: relative;
    margin-left: 4px;
    height: 240px;
}

.mx_RoomSublist_skeletonUI::before {
        background: -webkit-gradient(linear, left top, left bottom, from(#3e444c), to(#3e444c00));
        background: linear-gradient(180deg, #3e444c 0%, #3e444c00 100%);

        width: 100%;
        height: 100%;

        content: "";
        position: absolute;
        -webkit-mask-repeat: repeat-y;
                mask-repeat: repeat-y;
        -webkit-mask-size: auto 48px;
                mask-size: auto 48px;
        -webkit-mask-image: url(../../img/element-icons/roomlist/skeleton-ui.15f261b.svg);
                mask-image: url(../../img/element-icons/roomlist/skeleton-ui.15f261b.svg);
    }

.mx_RoomSublist_minimized .mx_RoomSublist_skeletonUI {
    width: 32px; /* cut off the horizontal lines in the svg */
    margin-left: 10px; /* align with sublist + buttons */
}

/*
Copyright 2020 - 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* Note: the room tile expects to be in a flexbox column container */

.mx_RoomTile {
    margin-bottom: 4px;
    padding: 4px;

    /* The tile is also a flexbox row itself */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    contain: content; /* Not strict as it will break when resizing a sublist vertically */
    -webkit-box-sizing: border-box;
            box-sizing: border-box;

    font-size: 1.3rem;
}

.mx_RoomTile.mx_RoomTile_selected,
    .mx_RoomTile:hover,
    .mx_RoomTile:focus-within,
    .mx_RoomTile.mx_RoomTile_hasMenuOpen {
        background-color: rgba(141,151,165, 0.2);
        border-radius: 8px;
    }

.mx_RoomTile .mx_DecoratedRoomAvatar,
    .mx_RoomTile .mx_RoomTile_avatarContainer {
        margin-right: 10px;
    }

.mx_RoomTile .mx_RoomTile_details {
        min-width: 0;
    }

.mx_RoomTile .mx_RoomTile_titleContainer {
        height: 32px;
        min-width: 0;
        -ms-flex-preferred-size: 0;
            flex-basis: 0;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        margin-right: 8px; /* spacing to buttons/badges */

        /* Create a new column layout flexbox for the title parts */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_RoomTile .mx_RoomTile_titleContainer .mx_RoomTile_subtitle {
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            color: #a9b2bc;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            grid-gap: 4px;
            gap: 4px;
            line-height: 1.8rem;
        }

.mx_RoomTile .mx_RoomTile_titleContainer .mx_RoomTile_title,
        .mx_RoomTile .mx_RoomTile_titleContainer .mx_RoomTile_subtitle_text {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

.mx_RoomTile .mx_RoomTile_titleContainer .mx_RoomTile_title {
            font-size: 1.4rem;
            line-height: 1.8rem;
        }

.mx_RoomTile .mx_RoomTile_titleContainer .mx_RoomTile_title.mx_RoomTile_titleHasUnreadEvents {
                font-weight: 600;
                font-weight: var(--font-semi-bold);
            }

.mx_RoomTile .mx_RoomTile_titleContainer .mx_RoomTile_titleWithSubtitle {
            margin-top: -3px; /* shift the title up a bit more */
        }

.mx_RoomTile .mx_RoomTile_notificationsButton {
        margin-left: 4px; /* spacing between buttons */
    }

.mx_RoomTile .mx_RoomTile_badgeContainer {
        height: 16px;
        /* don't set width so that it takes no space when there is no badge to show */
        margin: auto 0; /* vertically align */

        /* Create a flexbox to make aligning dot badges easier */
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge {
            margin-right: 2px; /* centering */
        }

.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge_dot {
            /* make the smaller dot occupy the same width for centering */
            margin-left: 5px;
            margin-right: 7px;
        }

/* The context menu buttons are hidden by default */

.mx_RoomTile .mx_RoomTile_menuButton,
    .mx_RoomTile .mx_RoomTile_notificationsButton {
        width: 20px;
        min-width: 20px; /* yay flex */
        height: 20px;
        margin-top: auto;
        margin-bottom: auto;
        position: relative;
        display: none;
    }

.mx_RoomTile .mx_RoomTile_menuButton::before, .mx_RoomTile .mx_RoomTile_notificationsButton::before {
            top: 2px;
            left: 2px;
            content: "";
            width: 16px;
            height: 16px;
            position: absolute;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background: #ffffff;
        }

/* If the room has an overriden notification setting then we always show the notifications menu button */

.mx_RoomTile .mx_RoomTile_notificationsButton.mx_RoomTile_notificationsButton_show {
        display: block;
    }

.mx_RoomTile .mx_RoomTile_menuButton::before {
        -webkit-mask-image: url(../../img/element-icons/context-menu.131c13c.svg);
                mask-image: url(../../img/element-icons/context-menu.131c13c.svg);
    }

/* Hide the badge container on hover because it'll be a menu button */

.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_badgeContainer, .mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_badgeContainer, .mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_badgeContainer {
                width: 0;
                height: 0;
                display: none;
            }

.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_notificationsButton,
            .mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_menuButton,
            .mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_notificationsButton,
            .mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_menuButton,
            .mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_notificationsButton,
            .mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_menuButton {
                display: block;
            }

.mx_RoomTile.mx_RoomTile_minimized {
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        position: relative;
    }

.mx_RoomTile.mx_RoomTile_minimized .mx_DecoratedRoomAvatar,
        .mx_RoomTile.mx_RoomTile_minimized .mx_RoomTile_avatarContainer {
            margin-right: 0;
        }

/* We use these both in context menus and the room tiles */

.mx_RoomTile_iconBell::before {
    -webkit-mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
            mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
}

.mx_RoomTile_iconBellDot::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
            mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
}

.mx_RoomTile_iconBellCrossed::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
            mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
}

.mx_RoomTile_iconBellMentions::before {
    -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
            mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
}

.mx_RoomTile_contextMenu .mx_RoomTile_iconStar::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/favorite.b47f7d4.svg);
                mask-image: url(../../img/element-icons/roomlist/favorite.b47f7d4.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconArrowDown::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/low-priority.1cdb11b.svg);
                mask-image: url(../../img/element-icons/roomlist/low-priority.1cdb11b.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconNotificationsDefault::before {
        -webkit-mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
                mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconNotificationsAllMessages::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
                mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconNotificationsMentionsKeywords::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
                mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconNotificationsNone::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
                mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconPeople::before {
        -webkit-mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
                mask-image: url(../../img/element-icons/room/members.3c127a3.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconFiles::before {
        -webkit-mask-image: url(../../img/element-icons/room/files.ee097b4.svg);
                mask-image: url(../../img/element-icons/room/files.ee097b4.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconPins::before {
        -webkit-mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
                mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconWidgets::before {
        -webkit-mask-image: url(../../img/element-icons/room/apps.4933168.svg);
                mask-image: url(../../img/element-icons/room/apps.4933168.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconSettings::before {
        -webkit-mask-image: url(../../img/element-icons/settings.0c529f2.svg);
                mask-image: url(../../img/element-icons/settings.0c529f2.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconExport::before {
        -webkit-mask-image: url(../../img/element-icons/export.9b2ed5d.svg);
                mask-image: url(../../img/element-icons/export.9b2ed5d.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconCopyLink::before {
        -webkit-mask-image: url(../../img/element-icons/link.3f7cd42.svg);
                mask-image: url(../../img/element-icons/link.3f7cd42.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconInvite::before {
        -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
                mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
    }

.mx_RoomTile_contextMenu .mx_RoomTile_iconSignOut::before {
        -webkit-mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
                mask-image: url(../../img/element-icons/leave.9ad00a5.svg);
    }

/*
Copyright 2018 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomUpgradeWarningBar {
    max-height: 235px;
    background-color: #20252b;
    padding-left: 20px;
    padding-right: 20px;
    overflow: scroll;
}

.mx_RoomUpgradeWarningBar_wrapped {
    width: 100%;
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    text-align: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-align-items: center;
}

.mx_RoomUpgradeWarningBar_header {
    color: #ff5b55;
    font-weight: bold;
}

.mx_RoomUpgradeWarningBar_body {
    color: #ff5b55;
}

.mx_RoomUpgradeWarningBar_upgradelink {
    color: #ff5b55;
    text-decoration: underline;
}

.mx_RoomUpgradeWarningBar_small {
    color: #888;
    font-size: 70%;
}

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SearchBar {
    /* use `min-height` rather than height, to allow room for the text to wrap if the window is narrow */
    min-height: 56px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    border-bottom: 1px solid transparent;
}

.mx_SearchBar .mx_SearchBar_input {
        --size-button-search: 37px; /* size of the search button inside `input` element */

        /* border: 1px solid $input-border-color; */
        /* font-size: $font-15px; */
        -webkit-box-flex: 1;
            -ms-flex: 1 1 0px;
                flex: 1 1 0;
        margin-left: 22px;

        /* do not allow the input element to shrink below the width needed for the placeholder 'Search…'
           and the search button */
        min-width: calc(7em + var(--size-button-search));
    }

.mx_SearchBar .mx_SearchBar_input input {
            -webkit-box-sizing: border-box;
                    box-sizing: border-box; /* include padding value into width calculation */
        }

.mx_SearchBar .mx_SearchBar_searchButton {
        cursor: pointer;
        width: var(--size-button-search);
        height: var(--size-button-search);
        background-color: #0dbd8b;
        -webkit-mask: url(../../img/feather-customised/search-input.1871d4f.svg);
                mask: url(../../img/feather-customised/search-input.1871d4f.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_SearchBar .mx_SearchBar_buttons {
        display: inherit; /* flex */
        min-width: 0; /* have the close button displayed even on a very narrow timeline */
    }

.mx_SearchBar .mx_SearchBar_button {
        border: 0;
        margin: 0 0 0 22px;
        padding: 5px;
        font-size: 1.5rem;
        cursor: pointer;
        color: #ffffff;
        border-bottom: 2px solid #0dbd8b;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        word-break: break-all; /* prevent the input area and cancel button from being overlapped by BaseCard */
    }

.mx_SearchBar .mx_SearchBar_unselected {
        color: #61708b;
        border-color: transparent;
    }

.mx_SearchBar .mx_SearchBar_cancel {
        background-color: #ff5b55;
        -webkit-mask: url(../../img/cancel.12c5c12.svg);
                mask: url(../../img/cancel.12c5c12.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: 14px;
                mask-size: 14px;
        padding: 9px;
        margin: 0 12px 0 3px;
        cursor: pointer;
    }

/*Responsive design*/

@media (max-width: 1024px){
    .mx_SearchBar .mx_SearchBar_button{
        font-size: 12px !important;
    }
}

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SendMessageComposer {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    font-size: 1.4rem;
    /* fixed line height to prevent emoji from being taller than text */
    line-height: 1.8rem;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    margin-right: 6px;
    /* don't grow wider than available space */
    min-width: 0;
}

.mx_SendMessageComposer .mx_BasicMessageComposer {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        /* min-height at this level so the mx_BasicMessageComposer_input */
        /* still stays vertically centered when less than 55px. */
        /* We also set this to ensure the voice message recording widget */
        /* doesn't cause a jump. */
        min-height: 55px;
    }

.mx_SendMessageComposer .mx_BasicMessageComposer .mx_BasicMessageComposer_input {
            padding: 3px 0;
            /* this will center the contenteditable */
            /* in it's parent vertically */
            /* while keeping the autocomplete at the top */
            /* of the composer. The parent needs to be a flex container for this to work. */
            margin: auto 0;
            /* max-height at this level so autocomplete doesn't get scrolled too */
            max-height: 140px;
            overflow-y: auto;
        }

.mx_Stickers_content {
    overflow: hidden;
}

.mx_Stickers_content_container {
    overflow: hidden;
    height: 300px;
}

#mx_persistedElement_stickerPicker .mx_AppTileFullWidth {
        height: unset;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        border-left: none;
        border-right: none;
        border-bottom: none;
    }

#mx_persistedElement_stickerPicker .mx_AppTileMenuBar {
        padding: 0;
    }

#mx_persistedElement_stickerPicker iframe {
        /* Sticker picker depends on the fixed height previously used for all tiles */
        height: 283px; /* height of the popout minus the AppTile menu bar */
    }

.mx_Stickers_contentPlaceholder {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    text-align: center;
}

.mx_Stickers_contentPlaceholder p {
    max-width: 200px;
}

.mx_Stickers_addLink {
    display: inline;
    cursor: pointer;
    color: #0dbd8b;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ThreadSummary,
.mx_ThreadSummary_content,
.mx_ThreadSummary_icon {
    font-size: 1.2rem;
}

.mx_ThreadSummary,
.mx_ThreadSummary_content {
    color: #a9b2bc;
}

.mx_ThreadSummary,
.mx_ThreadSummary_icon {
    margin-top: 8px;
}

.mx_ThreadSummary {
    min-width: 267px;
    /* leave space on both left & right gutters */
    max-width: min(calc(100% - var(--EventTile_group_line-spacing-inline-start)), 600px);
    width: -webkit-fit-content;
    width: -moz-fit-content;
    width: fit-content;
    height: 40px;
    position: relative;
    background-color: #21262c;
    padding-inline: 12px 16px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    border-radius: 8px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    clear: both;
    overflow: hidden;
    border: 1px solid #21262c;
}

/* always render a border so the hover effect doesn't require a re-layout */

.mx_ThreadSummary .mx_ThreadSummary_chevron {
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        width: 60px;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        /* XXX: We use `$system-transparent` instead of `transparent` to work around a Safari <15.4 bug */
        background: -webkit-gradient(linear, right top, left top, color-stop(50%, #21262c), to(rgba(33,38,44, 0)));
        background: linear-gradient(270deg, #21262c 50%, rgba(33,38,44, 0) 100%);

        opacity: 0;
        -webkit-transform: translateX(60px);
                transform: translateX(60px);
        -webkit-transition: all 0.1s ease-in-out;
        transition: all 0.1s ease-in-out;
    }

.mx_ThreadSummary .mx_ThreadSummary_chevron::before {
            content: "";
            position: absolute;
            top: 50%;
            right: 12px;
            -webkit-transform: translateY(-50%);
                    transform: translateY(-50%);
            width: 12px;
            height: 12px;
            -webkit-mask-image: url(../../img/compound/chevron-right-12px.728250b.svg);
                    mask-image: url(../../img/compound/chevron-right-12px.728250b.svg);
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            background-color: #a9b2bc;
        }

.mx_ThreadSummary:hover,
    .mx_ThreadSummary:focus {
        border-color: #394049;
    }

.mx_ThreadSummary:hover .mx_ThreadSummary_chevron, .mx_ThreadSummary:focus .mx_ThreadSummary_chevron {
            opacity: 1;
            -webkit-transform: translateX(0);
                    transform: translateX(0);
        }

.mx_ThreadSummary::before {
        content: "";
        display: inline-block;
        -webkit-mask-image: url(../../img/element-icons/thread-summary.1c5653f.svg);
                mask-image: url(../../img/element-icons/thread-summary.1c5653f.svg);
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        height: 18px;
        min-width: 18px;
        background-color: #a9b2bc !important;
        -ms-flex-item-align: center;
            align-self: center; /* v-align the threads icon */
    }

.mx_ThreadSummary .mx_ThreadSummary_sender,
    .mx_ThreadSummary .mx_ThreadSummary_content,
    .mx_ThreadSummary .mx_ThreadSummary_replies_amount {
        line-height: var(--EventTile_ThreadSummary-line-height);
    }

.mx_ThreadSummary .mx_ThreadSummary_sender,
    .mx_ThreadSummary .mx_ThreadSummary_content {
        text-overflow: ellipsis;
        overflow: hidden;
        white-space: nowrap;
    }

.mx_ThreadSummary .mx_ThreadSummary_sender {
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_ThreadSummary .mx_ThreadSummary_content {
        margin-left: 4px;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
    }

.mx_ThreadSummary .mx_ThreadSummary_replies_amount {
        color: #a9b2bc;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        white-space: nowrap;
        position: relative;
        padding: 0 12px 0 8px;
    }

.mx_MessagePanel_narrow .mx_ThreadSummary {
        min-width: 0;
        min-width: initial;
        max-width: 100%; /* prevent overflow */
        width: auto;
        width: initial;
    }

.mx_ThreadSummary_avatar {
    -webkit-margin-end: 8px;
            margin-inline-end: 8px;
}

.mx_ThreadSummary_icon {
    display: inline-block;
    margin-bottom: 8px;
}

.mx_ThreadSummary_icon::before {
        content: "";
        display: inline-block;
        -webkit-mask-image: url(../../img/element-icons/thread-summary.1c5653f.svg);
                mask-image: url(../../img/element-icons/thread-summary.1c5653f.svg);
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        height: 18px;
        min-width: 18px;
        background-color: #a9b2bc !important;
        vertical-align: middle;
        -webkit-margin-end: 8px;
                margin-inline-end: 8px;
        margin-top: -2px;
    }

a.mx_ThreadSummary_icon {
        color: #a9b2bc;
    }

/*
Copyright 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

@charset "utf-8";

.mx_TopUnreadMessagesBar {
    z-index: 1000;
    position: absolute;
    top: 24px;
    right: 24px;
    width: 38px;
}

.mx_TopUnreadMessagesBar::after {
    content: "";
    position: absolute;
    top: -8px;
    left: 10.5px;
    width: 4px;
    height: 4px;
    border-radius: 16px;
    background-color: #f2f5f8;
    border: 6px solid #0dbd8b;
    pointer-events: none;
}

.mx_TopUnreadMessagesBar_scrollUp {
    height: 38px;
    border-radius: 19px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    background: #15191e;
    border: 1.3px solid #91a1c0;
    cursor: pointer;
}

.mx_TopUnreadMessagesBar_scrollUp::before {
    content: "";
    position: absolute;
    width: 36px;
    height: 36px;
    -webkit-mask-image: url(../../img/element-icons/message/chevron-up.dabdada.svg);
            mask-image: url(../../img/element-icons/message/chevron-up.dabdada.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-size: 20px;
            mask-size: 20px;
    -webkit-mask-position: center;
            mask-position: center;
    background: #91a1c0;
}

.mx_TopUnreadMessagesBar_markAsRead {
    display: block;
    width: 18px;
    height: 18px;
    background: #15191e;
    border: 1.3px solid #91a1c0;
    border-radius: 10px;
    margin: 5px auto;
}

.mx_TopUnreadMessagesBar_markAsRead::before {
    content: "";
    position: absolute;
    width: 18px;
    height: 18px;
    -webkit-mask-image: url(../../img/cancel.12c5c12.svg);
            mask-image: url(../../img/cancel.12c5c12.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-size: 10px;
            mask-size: 10px;
    -webkit-mask-position: 4px 4px;
            mask-position: 4px 4px;
    background: #91a1c0;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_VoiceRecordComposerTile_stop {
    /* 28px plus a 2px border makes this a 32px square (as intended) */
    width: 28px;
    height: 28px;
    border: 2px solid #6f7882;
    border-radius: 32px;
    margin-right: 2px; /* between us and the waveform component */
    position: relative;
}

.mx_VoiceRecordComposerTile_stop::after {
        content: "";
        width: 14px;
        height: 14px;
        position: absolute;
        top: 7px;
        left: 7px;
        border-radius: 2px;
        background-color: #ff5b55;
    }

.mx_VoiceRecordComposerTile_delete {
    width: 24px;
    height: 24px;
    vertical-align: middle;
    margin-right: 2px; /* distance from left edge of waveform container (container has some margin too) */
    background-color: #6f7882;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-size: contain;
            mask-size: contain;
    -webkit-mask-image: url(../../img/element-icons/trashcan.3e3b8b7.svg);
            mask-image: url(../../img/element-icons/trashcan.3e3b8b7.svg);
}

.mx_VoiceRecordComposerTile_uploadingState {
    margin-right: 10px;
    color: #a9b2bc;
}

.mx_VoiceRecordComposerTile_failedState {
    margin-right: 21px;
}

.mx_VoiceRecordComposerTile_failedState .mx_VoiceRecordComposerTile_uploadState_badge {
        display: inline-block;
        margin-right: 4px;
        vertical-align: middle;
    }

.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer {
    /* Note: remaining class properties are in the PlayerContainer CSS. */

    /* fixed height to reduce layout jumps with the play button appearing */
    /* https://github.com/vector-im/element-web/issues/18431 */
    height: 32px;

    margin: 6px; /* force the composer area to put a gutter around us */
    margin-right: 6px; /* isolate from stop/send button */

    position: relative;
}

/* important for the live circle */

.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording {
        /* We are putting the circle in this padding, so we need +10px from the regular */
        /* padding on the left side. */
        padding-left: 22px;
    }

.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording::before {
            -webkit-animation: recording-pulse 2s infinite;
                    animation: recording-pulse 2s infinite;

            content: "";
            background-color: #ff5b55;
            width: 10px;
            height: 10px;
            position: absolute;
            left: 12px; /* 12px from the left edge for container padding */
            top: 17px; /* vertically center (middle align with clock) */
            border-radius: 10px;
        }

.mx_MessageComposer_wysiwyg .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording::before {
            top: 15px; /* vertically center (middle align with clock) */
        }

/* The keyframes are slightly weird here to help make a ramping/punch effect */

/* for the recording dot. We start and end at 100% opacity to help make the */

/* dot feel a bit like a real lamp that is blinking: the animation ends up */

/* spending a lot of its time showing a steady state without a fade effect. */

/* This lamp effect extends into why the 0% opacity keyframe is not in the */

/* midpoint: lamps take longer to turn off than they do to turn on, and the */

/* extra frames give it a bit of a realistic punch for when the animation is */

/* ramping back up to 100% opacity. */

/* Target animation timings: steady for 1.5s, fade out for 0.3s, fade in for 0.2s */

/* (intended to be used in a loop for 2s animation speed) */

@-webkit-keyframes recording-pulse {
    0% {
        opacity: 1;
    }
    35% {
        opacity: 0;
    }
    65% {
        opacity: 1;
    }
}

@keyframes recording-pulse {
    0% {
        opacity: 1;
    }
    35% {
        opacity: 0;
    }
    65% {
        opacity: 1;
    }
}

/*
Copyright 2018 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_WhoIsTypingTile {
    margin-left: -18px; /* offset padding from mx_RoomView_MessageList to center avatars */
    padding-top: 18px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

/* position the indicator in the same place horizontally as .mx_EventTile_avatar. */

.mx_WhoIsTypingTile_avatars {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 82px;
            flex: 0 0 82px; /* 18 (padding on message list) + 64 (padding on event lines) */
    text-align: center;
}

.mx_WhoIsTypingTile_avatars > :not(:first-child) {
    margin-left: -12px;
}

.mx_WhoIsTypingTile_avatars .mx_BaseAvatar_initial {
    padding-top: 1px;
}

.mx_WhoIsTypingTile_avatars .mx_BaseAvatar {
    border: 1px solid #15191e;
    border-radius: 40px;
}

.mx_WhoIsTypingTile_remainingAvatarPlaceholder {
    position: relative;
    display: inline-block;
    color: #ffffff;
    background-color: #394049;
    border: 1px solid #15191e;
    border-radius: 40px;
    width: 24px;
    height: 24px;
    line-height: 2.4rem;
    font-size: 0.8em;
    vertical-align: top;
    text-align: center;
}

.mx_WhoIsTypingTile_label {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    font-size: 1.4rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    color: #b9bec6;
}

.mx_WhoIsTypingTile_label > span {
    background-image: url(../../img/typing-indicator-2x.fd4568d.gif);
    background-size: 25px;
    background-position: left bottom;
    background-repeat: no-repeat;
    padding-bottom: 15px;
    display: block;
}

.mx_MatrixChat_useCompactLayout .mx_WhoIsTypingTile {
        padding-top: 4px;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_EditWysiwygComposer {
    --EditWysiwygComposer-padding-inline: 3px;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    max-width: 100%; /* disable overflow */
    width: auto;
    grid-gap: 8px;
    gap: 8px;
    padding: 8px var(--EditWysiwygComposer-padding-inline);
}

.mx_EditWysiwygComposer .mx_WysiwygComposer_Editor_content {
        border-radius: 4px;
        border: solid 1px transparent;
        background-color: #15191e;
        max-height: 200px;
        padding: 3px 6px;
    }

.mx_EditWysiwygComposer .mx_WysiwygComposer_Editor_content:focus {
            border-color: rgba(13,189,139, 0.5); /* Only ever used here */
        }

.mx_EditWysiwygComposer .mx_EditWysiwygComposer_buttons {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-flow: row wrap-reverse;
                flex-flow: row wrap-reverse; /* display "Save" over "Cancel" */
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end;
        grid-gap: 5px;
        gap: 5px;
        -webkit-margin-start: auto;
                margin-inline-start: auto;
    }

.mx_EditWysiwygComposer .mx_EditWysiwygComposer_buttons .mx_AccessibleButton {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            min-width: 100px; /* magic number to align the edge of the button with the input area */
        }

.mx_EditWysiwygComposer .mx_FormattingButtons_Button:first-child {
            margin-left: 0px;
        }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SendWysiwygComposer {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    font-size: 1.4rem;
    /* fixed line height to prevent emoji from being taller than text */
    line-height: 1.8rem;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    margin-right: 13px;
    grid-gap: 8px;
    gap: 8px;
}

.mx_SendWysiwygComposer .mx_FormattingButtons {
        margin-left: 12px;
    }

.mx_SendWysiwygComposer .mx_WysiwygComposer_Editor {
        border: 1px solid;
        border-color: #394049;
        padding: 6px 11px 6px 12px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: end;
            -ms-flex-align: end;
                align-items: flex-end;
        grid-gap: 10px;
        gap: 10px;
    }

.mx_SendWysiwygComposer .mx_WysiwygComposer_Editor .mx_E2EIcon {
            margin: 0 0 7px 0;
            width: 12px;
            height: 12px;
        }

.mx_SendWysiwygComposer .mx_WysiwygComposer_Editor[data-is-expanded="true"] {
            border-radius: 14px;
        }

.mx_SendWysiwygComposer .mx_WysiwygComposer_Editor[data-is-expanded="true"] .mx_WysiwygComposer_Editor_container {
                margin-top: 3px;
                margin-bottom: 3px;
            }

.mx_SendWysiwygComposer .mx_WysiwygComposer_Editor[data-is-expanded="false"] {
            border-radius: 40px;
        }

.mx_SendWysiwygComposer .mx_WysiwygComposer_Editor .mx_WysiwygComposer_Editor_container {
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            min-height: 22px;
            margin-bottom: 2px;
            /* don't grow wider than available space */
            width: 0;
        }

.mx_SendWysiwygComposer .mx_WysiwygComposer_Editor .mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content {
                /* this will center the contenteditable */
                /* in it's parent vertically */
                /* while keeping the autocomplete at the top */
                /* of the composer. The parent needs to be a flex container for this to work. */
                margin: auto 0;
                /* the line height is $font-22px (set in _Editor.pcss) and we want to display 16 lines */
                max-height: calc(16 * 2.2rem);
                overflow-y: auto;
            }

.mx_SendWysiwygComposer-focused .mx_WysiwygComposer_Editor {
        border-color: #6f7882;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

@keyframes visualbell {
        from {
            background-color: #800;
        }
        to {
            background-color: #15191e;
        }
    }

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content {
        line-height: 2.2rem;
        white-space: pre-wrap;
        word-wrap: break-word;
        outline: none;
        overflow-x: hidden;
    }

/* navigated through in a single keypress */

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content .caretNode {
            -webkit-user-select: all;
               -moz-user-select: all;
                -ms-user-select: all;
                    user-select: all;
        }

/* we have any other elements*/

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content br:not(:only-child) {
            display: none;
        }

/* we always have a <br/> tag at the end of the html, we need it to be present at first then hide it as soon as*/

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content p {
            margin-top: 0;
            margin-bottom: 0;
            /* this may seem redundant, but we need to handle zero content formatting tags, which occur when we split a*/
            /* formatting tag into paragraphs*/
            min-height: 2.2rem;
        }

/* Force caret nodes to be selected in full so that they can be */

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content ul,
        .mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content ol {
            margin-top: 0;
            margin-bottom: 0;
            -webkit-padding-start: 28px;
                    padding-inline-start: 28px;
        }

/* Make list type disc to match rich text editor */

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content ul {
            list-style-type: disc;
        }

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content blockquote {
            color: #777;
            border-left: 2px solid #dddddd;
            border-radius: 2px;
            padding: 0 10px;

            -webkit-margin-before: 0;

                    margin-block-start: 0;
            -webkit-margin-after: 0;
                    margin-block-end: 0;
            -webkit-margin-start: 0;
                    margin-inline-start: 0;
            -webkit-margin-end: 0;
                    margin-inline-end: 0;
        }

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content > pre {
            font-size: 1.5rem;
            line-height: 2.4rem;

            margin-top: 0;
            margin-bottom: 0;
            padding: 8px 12px;

            background-color: #21262c;
            border: 1px solid #394049;
            border-radius: 2px;
        }

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content code:not(pre *) {
            font-family: "Inconsolata", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", "Courier", monospace,
    "Noto Color Emoji" !important;
            background-color: #21262c;
            border: 1px solid #394049;
            border-radius: 4px;
            padding: 2px;
        }

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content code:not(pre *):empty {
                border: unset;
                padding: unset;
            }

/* this selector represents what will become a pill
        nb despite there being mx_UserPill and mx_RoomPill classes appended to these pills
        in the current composer, there don't appear to be any styles associated with those classes
        in this repo */

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content a[data-mention-type] {
            /* combine mx_Pill from _Pill.pcss */
            padding: 0.1rem 0.4em;
            line-height: 1.7rem;
            border-radius: 1.6rem;
            display: inline;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            max-width: 100%;
            overflow: hidden;

            color: #ffffff;
            background-color: #343a46;

            /* ...with the overrides from _BasicMessageComposer.pcss */
            -webkit-user-select: all;
               -moz-user-select: all;
                -ms-user-select: all;
                    user-select: all;
            position: relative;
            cursor: unset; /* We don't want indicate clickability */
            text-overflow: ellipsis;
            white-space: nowrap;
        }

/* avatar pseudo element */

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content a[data-mention-type]::before {
                /* After consolidation, all of the styling from _Pill.scss was being overridden,
                so take what is in _BasicMessageComposer.pcss as the starting point */
                display: inline-block;
                content: var(--avatar-letter);
                background: var(--avatar-background), #15191e;

                width: 1.6rem;
                min-width: 1.6rem; /* ensure the avatar is not compressed */
                height: 1.6rem;
                line-height: 1.6rem;
                text-align: center;

                /* Get the positioning of the avatar just right for consistency with timeline */
                -webkit-margin-start: -0.4rem;
                        margin-inline-start: -0.4rem;
                -webkit-margin-end: 0.24rem;
                        margin-inline-end: 0.24rem;
                vertical-align: 0.12rem;

                background-repeat: no-repeat;
                background-size: 1.6rem;
                border-radius: 1.6rem;

                color: #ffffff;
                font-weight: normal;
                font-size: 1.04rem;
            }

.mx_WysiwygComposer_Editor_container .mx_WysiwygComposer_Editor_content_placeholder::before {
        content: var(--placeholder);
        width: 0;
        height: 0;
        overflow: visible;
        display: inline-block;
        pointer-events: none;
        white-space: nowrap;
        color: #8e99a4;
    }

.mx_WysiwygComposer_AutoCompleteWrapper {
    position: relative;
}

/* Due to the fact that editing a message now has a larger amount of grey
    colour above it (due to the rich text buttons above the composer), we need
    to give the autocomplete a bit more visual separation by using a border.
    */

.mx_WysiwygComposer_AutoCompleteWrapper > .mx_Autocomplete {
        border: 1px solid #394049;
        border-radius: 8px;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_FormattingButtons {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    grid-gap: 8px;
    gap: 8px;
}

.mx_FormattingButtons .mx_FormattingButtons_Button {
        --size: 28px;
        cursor: pointer;
        height: var(--size);
        width: var(--size);
        background-color: transparent;
        border: none;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        border-radius: 5px;
    }

.mx_FormattingButtons .mx_FormattingButtons_Button_hover:hover {
            background: rgba(169,178,188, 0.1);
        }

.mx_FormattingButtons .mx_FormattingButtons_Button_hover:hover .mx_FormattingButtons_Icon {
                color: #a9b2bc;
            }

.mx_FormattingButtons .mx_FormattingButtons_active {
        background: rgba(13,189,139, 0.1);
    }

.mx_FormattingButtons .mx_FormattingButtons_active .mx_FormattingButtons_Icon {
            color: #0dbd8b;
        }

.mx_FormattingButtons .mx_FormattingButtons_disabled .mx_FormattingButtons_Icon {
            color: #394049;
        }

.mx_FormattingButtons .mx_FormattingButtons_Icon {
        --size: 16px;
        height: var(--size);
        width: var(--size);
        color: #8e99a4;
    }

.mx_FormattingButtons_Tooltip {
    padding: 0 2px 0 2px;
}

.mx_FormattingButtons_Tooltip .mx_FormattingButtons_Tooltip_KeyboardShortcut {
        color: #8e99a4;
    }

.mx_FormattingButtons_Tooltip .mx_FormattingButtons_Tooltip_KeyboardShortcut kbd {
            margin-top: 2px;
            text-align: center;
            display: inline-block;
            text-transform: capitalize;
            font-size: 12px;
            font-family: Inter, sans-serif;
        }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LinkModal {
    padding: 32px;
    max-width: 600px;
    height: 341px;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
}

.mx_LinkModal .mx_LinkModal_content {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
        grid-gap: 8px;
        gap: 8px;
        margin-top: 7px;
    }

.mx_LinkModal .mx_LinkModal_content .mx_LinkModal_Field {
            -webkit-box-flex: initial;
                -ms-flex: initial;
                    flex: initial;
            height: 40px;
        }

.mx_LinkModal .mx_LinkModal_content .mx_LinkModal_buttons {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-flex: 1;
                -ms-flex: 1;
                    flex: 1;
            -webkit-box-align: end;
                -ms-flex-align: end;
                    align-items: flex-end;
        }

.mx_LinkModal .mx_LinkModal_content .mx_LinkModal_buttons .mx_Dialog_buttons {
                display: inline-block;
            }

/*
Copyright 2019, 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AvatarSetting_avatar {
    width: 90px;
    min-width: 90px; /* so it doesn't get crushed by the flexbox in languages with longer words */
    height: 90px;
    margin-top: 8px;
    position: relative;
}

.mx_AvatarSetting_avatar .mx_AvatarSetting_hover {
        -webkit-transition: opacity 0.08s cubic-bezier(0.46, 0.03, 0.52, 0.96);
        transition: opacity 0.08s cubic-bezier(0.46, 0.03, 0.52, 0.96);
        -webkit-transition: opacity var(--hover-transition);
        transition: opacity var(--hover-transition);

        /* position to place the hover bg over the entire thing */
        position: absolute;
        inset: 0;

        pointer-events: none; /* let the pointer fall through the underlying thing */

        line-height: 90px;
        text-align: center;
    }

.mx_AvatarSetting_avatar .mx_AvatarSetting_hover > span {
            color: #ffffff;
            position: relative; /* tricks the layout engine into putting this on top of the bg */
            font-weight: 500;
        }

.mx_AvatarSetting_avatar .mx_AvatarSetting_hover .mx_AvatarSetting_hoverBg {
            /* absolute position to lazily fill the entire container */
            position: absolute;
            inset: 0;

            opacity: 0.5;
            background-color: #394049;
            border-radius: 90px;
        }

.mx_AvatarSetting_avatar.mx_AvatarSetting_avatar_hovering .mx_AvatarSetting_hover {
        opacity: 1;
    }

.mx_AvatarSetting_avatar:not(.mx_AvatarSetting_avatar_hovering) .mx_AvatarSetting_hover {
        opacity: 0;
    }

.mx_AvatarSetting_avatar > * {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
    }

.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_primary {
        margin-top: 8px;
    }

.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_link_sm {
        width: 100%;
    }

.mx_AvatarSetting_avatar > img {
        cursor: pointer;
        -o-object-fit: cover;
           object-fit: cover;
    }

.mx_AvatarSetting_avatar > img,
    .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder {
        display: block;
        height: 90px;
        width: inherit;
        border-radius: 90px;
        cursor: pointer;
    }

.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder::before {
        background-color: #394049;
        -webkit-mask: url(../../img/feather-customised/user.eacfd99.svg);
                mask: url(../../img/feather-customised/user.eacfd99.svg);
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: 36px;
                mask-size: 36px;
        -webkit-mask-position: center;
                mask-position: center;
        content: "";
        position: absolute;
        inset: 0;
    }

.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton {
        width: 32px;
        height: 32px;
        border-radius: 32px;
        background-color: #a9b2bc;

        position: absolute;
        bottom: 0;
        right: 0;
    }

.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton::before {
        content: "";
        display: block;
        width: 100%;
        height: 100%;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: 55%;
                mask-size: 55%;
        background-color: #394049;
        -webkit-mask-image: url(../../img/feather-customised/edit.b9722f3.svg);
                mask-image: url(../../img/feather-customised/edit.b9722f3.svg);
    }

.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder {
    background-color: #21262c;
}

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CrossSigningPanel_statusList {
    border-spacing: 0;
}

.mx_CrossSigningPanel_statusList th {
        text-align: start;
    }

.mx_CrossSigningPanel_statusList td,
    .mx_CrossSigningPanel_statusList th {
        padding: 0;
    }

.mx_CrossSigningPanel_statusList td:first-of-type, .mx_CrossSigningPanel_statusList th:first-of-type {
            -webkit-padding-end: 1em;
                    padding-inline-end: 1em;
        }

.mx_CrossSigningPanel_buttonRow {
    margin: 1em 0;
}

.mx_CrossSigningPanel_buttonRow :nth-child(n + 1) {
        -webkit-margin-end: 10px;
                margin-inline-end: 10px;
    }

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CryptographyPanel_sessionInfo {
    padding: 0em;
    border-spacing: 0px;
}

.mx_CryptographyPanel_sessionInfo > tr {
    vertical-align: baseline;
    padding: 0em;
}

.mx_CryptographyPanel_sessionInfo > tr th {
        text-align: start;
    }

.mx_CryptographyPanel_sessionInfo > tr td,
    .mx_CryptographyPanel_sessionInfo > tr th {
        padding: 0 1em 0 0;
    }

.mx_CryptographyPanel_importExportButtons {
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-flow: wrap;
        flex-flow: wrap;
    grid-row-gap: 8px;
    row-gap: 8px;
    grid-column-gap: 8px;
    -webkit-column-gap: 8px;
       -moz-column-gap: 8px;
            column-gap: 8px;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_FontScalingPanel_preview {
    --FontScalingPanel_preview-padding-block: 9px;

    border: 1px solid #394049;
    border-radius: 10px;
    padding: 0 16px var(--FontScalingPanel_preview-padding-block) 16px;
    pointer-events: none;
    display: flow-root;
}

.mx_FontScalingPanel_preview.mx_IRCLayout {
        padding-top: 9px;
    }

.mx_FontScalingPanel_preview .mx_EventTile[data-layout="bubble"] {
        margin-top: 30px;
    }

.mx_FontScalingPanel_preview .mx_EventTile_msgOption {
        display: none;
    }

.mx_FontScalingPanel_fontSlider {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: 15px 20px 35px;
    background: rgba(57,64,73, 0.2);
    border-radius: 10px;
    font-size: 1rem;
}

.mx_FontScalingPanel_fontSlider .mx_FontScalingPanel_fontSlider_smallText,
    .mx_FontScalingPanel_fontSlider .mx_FontScalingPanel_fontSlider_largeText {
        font-weight: 500;
    }

.mx_FontScalingPanel_fontSlider .mx_FontScalingPanel_fontSlider_smallText {
        font-size: 1.5rem;
        -webkit-padding-end: 20px;
                padding-inline-end: 20px;
    }

.mx_FontScalingPanel_fontSlider .mx_FontScalingPanel_fontSlider_largeText {
        font-size: 1.8rem;
        -webkit-padding-start: 20px;
                padding-inline-start: 20px;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ImageSizePanel_radios {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    grid-gap: 16px;
    gap: 16px;
}

.mx_ImageSizePanel_radios > label {
        margin-right: 68px; /* keep the boxes separate */
        cursor: pointer;
    }

.mx_ImageSizePanel_radios .mx_ImageSizePanel_size {
        background-color: #394049;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: 221px;
                mask-size: 221px;
        -webkit-mask-position: center;
                mask-position: center;
        width: 221px;
        height: 148px;
        margin-bottom: 14px;
    }

/* move radio button away from bottom edge a bit */

.mx_ImageSizePanel_radios .mx_ImageSizePanel_size.mx_ImageSizePanel_sizeDefault {
            -webkit-mask: url(../../img/element-icons/settings/img-size-normal.4cd5cd6.svg);
                    mask: url(../../img/element-icons/settings/img-size-normal.4cd5cd6.svg);
        }

.mx_ImageSizePanel_radios .mx_ImageSizePanel_size.mx_ImageSizePanel_sizeLarge {
            -webkit-mask: url(../../img/element-icons/settings/img-size-large.fa90e60.svg);
                    mask: url(../../img/element-icons/settings/img-size-large.fa90e60.svg);
        }

/*
Copyright 2015, 2016 OpenMarket Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_IntegrationManager .mx_Dialog {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        padding: 0;
        width: 60%;
        height: 70%;
        overflow: hidden;
        max-width: none;
        max-width: initial;
        max-height: none;
        max-height: initial;
    }

.mx_IntegrationManager iframe {
        background-color: #fff;
        border: 0;
        width: 100%;
        height: 100%;
    }

.mx_IntegrationManager h3 {
        margin-block: 20px;
    }

.mx_IntegrationManager .mx_IntegrationManager_loading,
    .mx_IntegrationManager .mx_IntegrationManager_error {
        text-align: center;
    }

.mx_IntegrationManager .mx_IntegrationManager_error h3 {
        color: #ff5b55;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_JoinRuleSettings_upgradeRequired {
    margin-left: 16px;
    padding: 4px 16px;
    border: 1px solid #0dbd8b;
    border-radius: 8px;
    color: #0dbd8b;
    font-size: 1.2rem;
    line-height: 1.5rem;
}

.mx_JoinRuleSettings_spacesWithAccess > h4 {
        color: #a9b2bc;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.2rem;
        line-height: 1.5rem;
        text-transform: uppercase;
    }

.mx_JoinRuleSettings_spacesWithAccess > span {
        font-weight: 500;
        font-size: 1.4rem;
        line-height: 32px; /* matches height of avatar for v-align */
        color: #a9b2bc;
        display: inline-block;
    }

.mx_JoinRuleSettings_spacesWithAccess > span img.mx_RoomAvatar_isSpaceRoom,
        .mx_JoinRuleSettings_spacesWithAccess > span .mx_RoomAvatar_isSpaceRoom img {
            border-radius: 8px;
        }

.mx_JoinRuleSettings_spacesWithAccess > span .mx_BaseAvatar {
            margin-right: 8px;
        }

.mx_JoinRuleSettings_spacesWithAccess > span + span {
            margin-left: 16px;
        }

.mx_JoinRuleSettings_radioButton {
    padding-top: 16px;
}

.mx_JoinRuleSettings_radioButton .mx_StyledRadioButton_content {
        margin-left: 14px;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        font-size: 1.5rem;
        line-height: 2.4rem;
        color: #ffffff;
        display: block;
    }

.mx_JoinRuleSettings_radioButton + span {
        display: inline-block;
        margin-left: 34px;
        margin-bottom: 16px;
        font-size: 1.5rem;
        line-height: 2.4rem;
        color: #a9b2bc;
    }

.mx_JoinRuleSettings_radioButton + span + .mx_StyledRadioButton {
            border-top: 1px solid #394049;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_KeyboardShortcut kbd {
        padding: 5px;
        border-radius: 4px;
        background-color: #20252b;
        min-width: 20px;
        text-align: center;
        display: inline-block;
        border: 1px solid #000000;
        -webkit-box-shadow: 0 2px #000000;
                box-shadow: 0 2px #000000;
        text-transform: capitalize;
    }

/*
Copyright 2020 - 2021 The Matrix.org Foundation C.I.C.
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LayoutSwitcher_RadioButtons {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    grid-gap: 24px;
    gap: 24px;
    width: 100%;

    color: #ffffff;
}

.mx_LayoutSwitcher_RadioButtons > .mx_LayoutSwitcher_RadioButton {
        -webkit-box-flex: 0;
            -ms-flex-positive: 0;
                flex-grow: 0;
        -ms-flex-negative: 1;
            flex-shrink: 1;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;

        -ms-flex-preferred-size: 33%;

            flex-basis: 33%;
        min-width: 0;

        border: 1px solid #394049;
        border-radius: 10px;
    }

.mx_LayoutSwitcher_RadioButtons > .mx_LayoutSwitcher_RadioButton .mx_EventTile_msgOption,
        .mx_LayoutSwitcher_RadioButtons > .mx_LayoutSwitcher_RadioButton .mx_MessageActionBar {
            display: none;
        }

.mx_LayoutSwitcher_RadioButtons > .mx_LayoutSwitcher_RadioButton .mx_LayoutSwitcher_RadioButton_preview {
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            padding: 10px;
            pointer-events: none;
        }

.mx_LayoutSwitcher_RadioButtons > .mx_LayoutSwitcher_RadioButton .mx_LayoutSwitcher_RadioButton_preview .mx_EventTile[data-layout="bubble"] .mx_EventTile_line {
                padding-right: 11px;
            }

.mx_LayoutSwitcher_RadioButtons > .mx_LayoutSwitcher_RadioButton .mx_StyledRadioButton {
            -webkit-box-flex: 0;
                -ms-flex-positive: 0;
                    flex-grow: 0;
            padding: 10px;
        }

.mx_LayoutSwitcher_RadioButtons > .mx_LayoutSwitcher_RadioButton .mx_EventTile_content {
            margin-right: 0;
        }

.mx_LayoutSwitcher_RadioButtons > .mx_LayoutSwitcher_RadioButton.mx_LayoutSwitcher_RadioButton_selected {
            border-color: #0dbd8b;
        }

.mx_LayoutSwitcher_RadioButtons .mx_StyledRadioButton {
        border-top: 1px solid #394049;
    }

.mx_LayoutSwitcher_RadioButtons .mx_StyledRadioButton_checked {
        background-color: rgba(13,189,139, 0.08);
    }

.mx_LayoutSwitcher_RadioButtons .mx_EventTile {
        margin: 0;
    }

.mx_LayoutSwitcher_RadioButtons .mx_EventTile[data-layout="bubble"] {
            margin-right: 40px;
            -ms-flex-negative: 1;
                flex-shrink: 1;
        }

.mx_LayoutSwitcher_RadioButtons .mx_EventTile[data-layout="irc"] > a {
                display: none;
            }

.mx_LayoutSwitcher_RadioButtons .mx_EventTile .mx_EventTile_line {
            max-width: 90%;
        }

/*
Copyright 2015 - 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UserNotifSettings_grid {
    width: calc(100% + 12px); /* +12px to line up center of 'Noisy' column with toggle switches */
    display: grid;
    grid-template-columns: auto repeat(3, 62px);
    place-items: center center;
    grid-gap: 8px;
}

/* Override StyledRadioButton default styles */

.mx_UserNotifSettings_grid .mx_StyledRadioButton {
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
    }

.mx_UserNotifSettings_grid .mx_StyledRadioButton .mx_StyledRadioButton_content {
            display: none;
        }

.mx_UserNotifSettings_grid .mx_StyledRadioButton .mx_StyledRadioButton_spacer {
            display: none;
        }

/* left align section heading*/

.mx_UserNotifSettings_grid .mx_SettingsSubsectionHeading {
        justify-self: start;
    }

.mx_UserNotifSettings_gridRowContainer {
    display: contents;
}

.mx_UserNotifSettings_gridRow {
    display: contents;
}

.mx_UserNotifSettings_gridRowLabel {
    justify-self: start;
    /* <legend> does not accept */
    /* display: inline | inline-block */
    /* force it inline using float */
    float: left;
}

.mx_UserNotifSettings_gridColumnLabel {
    color: #a9b2bc;
    font-size: 1.2rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
}

.mx_UserNotifSettings_gridRowError {
    /* occupy full row*/
    grid-column: 1/-1;
    justify-self: start;
    padding-right: 30%;
    /* collapse half of the grid-gap*/
    margin-top: -4px;
}

.mx_UserNotifSettings_floatingSection {
    margin-top: 40px;
}

.mx_UserNotifSettings_floatingSection > div:first-child {
        /* section header */
        font-size: 1.8rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_UserNotifSettings_floatingSection > table {
        border-collapse: collapse;
        border-spacing: 0;
        margin-top: 8px;
    }

.mx_UserNotifSettings_floatingSection > table tr > td:first-child {
            /* Just for a bit of spacing */
            padding-right: 8px;
        }

.mx_UserNotifSettings_clearNotifsButton {
    margin-top: 8px;
}

.mx_TagComposer {
    margin-top: 35px; /* lots of distance from the last line of the table */
}

.mx_AccessibleButton.mx_NotificationSound_browse {
    margin-right: 10px;
}

/*
Copyright 2019 New Vector Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_GeneralUserSettingsTab_section--discovery_existing_verification {
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_GeneralUserSettingsTab_section--discovery_existing_verification .mx_Field {
        margin: 0 0 0 1em;
    }

.mx_PhoneNumbers_input {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_PhoneNumbers_input > .mx_Field {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
}

.mx_PhoneNumbers_country {
    width: 80px;
}

/*
Copyright 2019, 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ProfileSettings {
    border-bottom: 1px solid #394049;
}

.mx_ProfileSettings .mx_ProfileSettings_avatarUpload {
        display: none;
    }

.mx_ProfileSettings .mx_ProfileSettings_profile {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
    }

.mx_ProfileSettings .mx_ProfileSettings_profile .mx_ProfileSettings_profile_controls {
            -webkit-box-flex: 1;
                -ms-flex-positive: 1;
                    flex-grow: 1;
            -webkit-margin-end: 54px;
                    margin-inline-end: 54px;
        }

.mx_ProfileSettings .mx_ProfileSettings_profile .mx_ProfileSettings_profile_controls .mx_Field {
                margin-top: 8px;
            }

.mx_ProfileSettings .mx_ProfileSettings_profile .mx_ProfileSettings_profile_controls .mx_ProfileSettings_profile_controls_topic {
                margin-top: 8px;
            }

.mx_ProfileSettings .mx_ProfileSettings_profile .mx_ProfileSettings_profile_controls .mx_ProfileSettings_profile_controls_topic > textarea {
                    font-family: inherit;
                    resize: vertical;
                }

.mx_ProfileSettings .mx_ProfileSettings_profile .mx_ProfileSettings_profile_controls .mx_ProfileSettings_profile_controls_topic.mx_ProfileSettings_profile_controls_topic--room textarea {
                    min-height: 4em;
                }

.mx_ProfileSettings .mx_ProfileSettings_profile .mx_ProfileSettings_profile_controls .mx_ProfileSettings_profile_controls_userId {
                -webkit-margin-end: 20px;
                        margin-inline-end: 20px;
            }

.mx_ProfileSettings .mx_ProfileSettings_buttons {
        margin-top: 10px; /* 18px is already accounted for by the <p> above the buttons */
        margin-bottom: 28px;
    }

.mx_ProfileSettings .mx_ProfileSettings_buttons > .mx_AccessibleButton_kind_link {
            font-size: 1.4rem;
            -webkit-margin-end: 10px;
                    margin-inline-end: 10px;
        }

/*
Copyright 2018 New Vector Ltd
Copyright 2019, 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SecureBackupPanel_sigValid,
.mx_SecureBackupPanel_sigInvalid,
.mx_SecureBackupPanel_deviceVerified,
.mx_SecureBackupPanel_deviceNotVerified {
    font-weight: bold;
}

.mx_SecureBackupPanel_sigValid,
.mx_SecureBackupPanel_deviceVerified {
    color: #0dbd8b;
}

.mx_SecureBackupPanel_sigInvalid,
.mx_SecureBackupPanel_deviceNotVerified {
    color: #ff5b55;
}

.mx_SecureBackupPanel_deviceName {
    font-style: italic;
}

.mx_SecureBackupPanel_buttonRow {
    margin: 1em 0;
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-flow: wrap;
        flex-flow: wrap;
    grid-row-gap: 10px;
    row-gap: 10px;
}

.mx_SecureBackupPanel_buttonRow :nth-child(n + 1) {
        -webkit-margin-end: 10px;
                margin-inline-end: 10px;
    }

.mx_SecureBackupPanel_statusList {
    border-spacing: 0;
}

.mx_SecureBackupPanel_statusList th {
        text-align: start;
    }

.mx_SecureBackupPanel_statusList td,
    .mx_SecureBackupPanel_statusList th {
        padding: 0;
    }

.mx_SecureBackupPanel_statusList td:first-of-type, .mx_SecureBackupPanel_statusList th:first-of-type {
            -webkit-padding-end: 1em;
                    padding-inline-end: 1em;
        }

/*
Copyright 2019, 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SetIdServer {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    grid-gap: 8px;
    gap: 8px;
}

.mx_SetIdServer .mx_Field {
        width: 100%;
        margin: 0;
    }

.mx_SetIdServer_tooltip {
    max-width: var(--SettingsTab_tooltip-max-width);
}

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SetIntegrationManager .mx_SettingsFlag {
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_SetIntegrationManager .mx_SettingsFlag .mx_SetIntegrationManager_heading_manager {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -ms-flex-wrap: wrap;
                flex-wrap: wrap;
            grid-column-gap: 4px;
            -webkit-column-gap: 4px;
               -moz-column-gap: 4px;
                    column-gap: 4px;
        }

.mx_SetIntegrationManager .mx_SettingsFlag .mx_ToggleSwitch {
            -ms-flex-item-align: start;
                align-self: flex-start;
            min-width: var(--ToggleSwitch-min-width); /* avoid compression */
        }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SettingsFieldset {
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
}

.mx_SettingsFieldset_legend {
    /* matches h3*/
    font-size: 1.8rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    line-height: 2.2rem;
    display: block;
    color: #ffffff;
    margin-bottom: 10px;
    margin-top: 12px;
}

.mx_SettingsFieldset_description {
    display: block;
    margin-top: 0;
    margin-bottom: 10px;
}

.mx_SettingsFieldset_description p {
        margin-top: 10px;
        margin-bottom: 0;
    }

.mx_SettingsFieldset_description p:first-child {
            margin: 0;
        }

.mx_SettingsFieldset_content {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    grid-gap: 8px;
    gap: 8px;
}

/*
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ExistingSpellCheckLanguage {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_ExistingSpellCheckLanguage_language {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    margin-right: 10px;
}

.mx_GeneralUserSettingsTab_spellCheckLanguageInput {
    margin-bottom: 8px;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_ThemeChoicePanel_themeSelectors {
    color: #ffffff;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}

.mx_ThemeChoicePanel_themeSelectors > .mx_StyledRadioButton {
        padding: 1.6rem;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        border-radius: 10px;
        width: 180px;

        background: #394049;
        opacity: 0.4;

        -ms-flex-negative: 1;

            flex-shrink: 1;
        -webkit-box-flex: 0;
            -ms-flex-positive: 0;
                flex-grow: 0;

        margin-right: 15px;
        margin-top: 10px;

        font-weight: 600;

        font-weight: var(--font-semi-bold);
    }

.mx_ThemeChoicePanel_themeSelectors > .mx_StyledRadioButton > span {
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
        }

.mx_ThemeChoicePanel_themeSelectors > .mx_StyledRadioButton_enabled {
        opacity: 1;
    }

/* These colors need to be hardcoded because they don't change with the theme */

.mx_ThemeChoicePanel_themeSelectors > .mx_StyledRadioButton_enabled.mx_ThemeSelector_light {
            background-color: #f3f8fd;
            color: #2e2f32;
        }

.mx_ThemeChoicePanel_themeSelectors > .mx_StyledRadioButton_enabled.mx_ThemeSelector_dark {
            /* 5% lightened version of 181b21 */
            background-color: #25282e;
            color: #f3f8fd;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UpdateCheckButton_summary {
    margin-left: 16px;
}

/*
Copyright 2023 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SettingsSection {
    --SettingsTab_section-margin-bottom-preferences-labs: 30px;
    --SettingsTab_heading_nth_child-margin-top: 30px;
    --SettingsTab_tooltip-max-width: 120px; /* So it fits in the space provided by the page */

    color: #ffffff;
}

.mx_SettingsSection a {
        color: #0086e6;
    }

.mx_SettingsSection_subSections {
    display: grid;
    grid-template-columns: 1fr;
    grid-gap: 32px;

    padding: 16px 0;
}

/*
Copyright 2019, 2020 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SettingsTab {
    --SettingsTab_tooltip-max-width: 120px; /* So it fits in the space provided by the page */

    color: #ffffff;
}

.mx_SettingsTab a {
        color: #0086e6;
    }

.mx_SettingsTab form {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        grid-gap: 8px;
        gap: 8px;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
    }

/* event when other content is 100% width*/

.mx_SettingsTab .mx_AccessibleButton {
        -ms-flex-item-align: start;
            align-self: flex-start;
        justify-self: flex-start;
    }

/* never want full width buttons*/

.mx_SettingsTab .mx_Field {
        margin: 0;
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1;
    }

.mx_SettingsTab_warningText {
    color: #ff5b55;
}

.mx_SettingsTab_subsectionText {
    color: #a9b2bc;
    font-size: 1.4rem;
    display: block;
    margin-top: 10px;
    -webkit-margin-end: 80px;
            margin-inline-end: 80px; /* Align with the rest of the view */
    margin-bottom: 10px;
    -webkit-margin-start: 0;
            margin-inline-start: 0;
}

.mx_SettingsTab_section {

    margin-bottom: 24px;
}

.mx_SettingsTab_section .mx_SettingsFlag {
        -webkit-margin-end: 80px;
                margin-inline-end: 80px;
        margin-bottom: 10px;
    }

.mx_SettingsTab_section .mx_SettingsFlag .mx_SettingsFlag_label {
            vertical-align: middle;
            display: inline-block;
            max-width: calc(100% - 4.8rem); /* Force word wrap instead of colliding with the switch */
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
        }

.mx_SettingsTab_section .mx_SettingsFlag .mx_ToggleSwitch {
            float: inline-end;
        }

.mx_SettingsTab_section > p {
        -webkit-margin-end: 80px;
                margin-inline-end: 80px;
    }

.mx_SettingsTab_section.mx_SettingsTab_subsectionText .mx_SettingsFlag {
        -webkit-margin-end: 0 !important;
                margin-inline-end: 0 !important;
    }

.mx_SettingsTab_toggleWithDescription {
    margin-top: 24px;
}

.mx_SettingsTab_sections {
    display: grid;
    grid-template-columns: 1fr;
    grid-gap: 32px;

    padding-bottom: 16px;
}

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_NotificationSettingsTab_notificationsSection {
    width: 360px;
}

.mx_NotificationSettingsTab_notificationsSection .mx_StyledRadioButton {
        -webkit-box-orient: horizontal;
        -webkit-box-direction: reverse;
            -ms-flex-direction: row-reverse;
                flex-direction: row-reverse;
        color: #ffffff;
        font-size: 1.5rem;
        line-height: 1.8rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        margin-top: 16px;
        position: relative;
        padding-left: 8px;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_NotificationSettingsTab_notificationsSection .mx_StyledRadioButton::before {
            content: "";
            position: absolute;
            height: 24px;
            width: 24px;
            left: 0;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-size: contain;
                    mask-size: contain;
            background-color: #a9b2bc;
        }

.mx_NotificationSettingsTab_notificationsSection .mx_StyledRadioButton input + div {
            margin-top: 8px;
        }

.mx_NotificationSettingsTab_notificationsSection .mx_StyledRadioButton .mx_NotificationSettingsTab_microCopy {
            color: #a9b2bc;
            font-weight: normal;
            font-size: 1.2rem;
            line-height: 1.5rem;
            margin-right: 32px;
        }

.mx_NotificationSettingsTab_notificationsSection .mx_NotificationSettingsTab_defaultEntry::before {
        -webkit-mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
                mask-image: url(../../img/element-icons/notifications.b4d3969.svg);
    }

.mx_NotificationSettingsTab_notificationsSection .mx_NotificationSettingsTab_allMessagesEntry::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
                mask-image: url(../../img/element-icons/roomlist/notifications-default.913763b.svg);
    }

.mx_NotificationSettingsTab_notificationsSection .mx_NotificationSettingsTab_mentionsKeywordsEntry::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
                mask-image: url(../../img/element-icons/roomlist/notifications-dm.ceba248.svg);
    }

.mx_NotificationSettingsTab_notificationsSection .mx_NotificationSettingsTab_noneEntry::before {
        -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
                mask-image: url(../../img/element-icons/roomlist/notifications-off.94bceac.svg);
    }

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RolesRoomSettingsTab_bannedList {
    margin-bottom: 0;
}

.mx_RolesRoomSettingsTab_unbanBtn {
    margin-right: 10px;
    margin-bottom: 5px;
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SecurityRoomSettingsTab_advancedSection {
    margin-top: 16px;
}

.mx_SecurityRoomSettingsTab_warning {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    grid-column-gap: 4px;
    -webkit-column-gap: 4px;
       -moz-column-gap: 4px;
            column-gap: 4px;
}

/*
Copyright 2020 - 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Field.mx_AppearanceUserSettingsTab_checkboxControlledField {
    width: 256px;
    /* matches checkbox box + padding*/
    /* to align with checkbox label*/
    -webkit-margin-start: calc(1.6rem + 10px);
            margin-inline-start: calc(1.6rem + 10px);
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_GeneralUserSettingsTab_section--discovery_existing {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_GeneralUserSettingsTab_section--discovery_existing_address,
.mx_GeneralUserSettingsTab_section--discovery_existing_promptText {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1;
    margin-right: 10px;
}

.mx_GeneralUserSettingsTab_section--discovery_existing_button {
    margin-left: 5px;
}

.mx_GeneralUserSettingsTab_warningIcon {
    vertical-align: middle;
    margin-right: 8px;
    margin-bottom: 2px;
}

/*
Copyright 2019 New Vector Ltd
Copyright 2022 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_HelpUserSettingsTab code {
        word-break: break-all;
        -webkit-user-select: all;
           -moz-user-select: all;
            -ms-user-select: all;
                user-select: all;
    }

.mx_HelpUserSettingsTab details {
        margin: 16px auto;
    }

.mx_HelpUserSettingsTab details summary {
            margin-bottom: 16px;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_KeyboardShortcut_shortcutList {
    margin: 0;
    padding: 0;
    width: 100%;
    display: grid;
    grid-gap: 4px;
}

.mx_KeyboardShortcut_shortcutRow,
.mx_KeyboardShortcut {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
}

.mx_KeyboardShortcut_shortcutRow {
    grid-column-gap: 8px;
    -webkit-column-gap: 8px;
       -moz-column-gap: 8px;
            column-gap: 8px;
}

.mx_KeyboardShortcut {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    grid-column-gap: 4px;
    -webkit-column-gap: 4px;
       -moz-column-gap: 4px;
            column-gap: 4px;
}

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_MjolnirUserSettingsTab_listItem {
    margin-bottom: 2px;
}

/*
Copyright 2019 New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SecurityUserSettingsTab_bulkOptions {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    grid-column-gap: 8px;
    -webkit-column-gap: 8px;
       -moz-column-gap: 8px;
            column-gap: 8px;
}

.mx_SecurityUserSettingsTab_ignoredUser {
    margin-bottom: 4px;
}

.mx_SecurityUserSettingsTab_ignoredUser .mx_AccessibleButton {
    margin-right: 8px;
}

.mx_SecurityUserSettingsTab_warning {
    color: #ff5b55;
    position: relative;
    padding-left: 40px;
}

.mx_SecurityUserSettingsTab_warning::before {
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: 0 center;
                mask-position: 0 center;
        -webkit-mask-size: 2.4rem;
                mask-size: 2.4rem;
        position: absolute;
        width: 2.4rem;
        height: 2.4rem;
        content: "";
        top: 0;
        left: 0;
        background-color: #ff5b55;
        -webkit-mask-image: url(../../img/feather-customised/alert-triangle.09b6d7d.svg);
                mask-image: url(../../img/feather-customised/alert-triangle.09b6d7d.svg);
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SidebarUserSettingsTab_homeAllRoomsCheckbox {
    margin-left: 24px;
}

.mx_SidebarUserSettingsTab_homeAllRoomsCheckbox + div {
        margin-left: 48px;
    }

.mx_SidebarUserSettingsTab_checkbox {
    margin-bottom: 8px;
}

/* override checkbox styles˚*/

.mx_SidebarUserSettingsTab_checkbox label {
        -webkit-box-align: start !important;
            -ms-flex-align: start !important;
                align-items: flex-start !important;
    }

.mx_SidebarUserSettingsTab_checkbox svg {
        height: 16px;
        width: 16px;
        margin-right: 8px;
        margin-bottom: -1px;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SpaceBasicSettings .mx_Field {
        margin: 24px 0;
    }

.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        margin-top: 24px;
    }

.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer .mx_SpaceBasicSettings_avatar {
            position: relative;
            height: 80px;
            width: 80px;
            background-color: #8e99a4;
            border-radius: 16px;
        }

.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer img.mx_SpaceBasicSettings_avatar {
            width: 80px;
            height: 80px;
            -o-object-fit: cover;
               object-fit: cover;
            border-radius: 16px;
        }

/* only show it when the button is a div and not an img (has avatar) */

.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar {
            cursor: pointer;
        }

.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar::before {
                content: "";
                position: absolute;
                height: 80px;
                width: 80px;
                top: 0;
                left: 0;
                background-color: #ffffff; /* white icon fill */
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: 20px;
                        mask-size: 20px;
                -webkit-mask-image: url(../../img/element-icons/camera.6ef82ed.svg);
                        mask-image: url(../../img/element-icons/camera.6ef82ed.svg);
            }

.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer > input[type="file"] {
            display: none;
        }

.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer > .mx_AccessibleButton_kind_link {
            display: inline-block;
            margin: auto 18px;
            color: #0086e6;
            font-size: 1.4rem; /* See _SpaceSettingsDialog.pcss */
        }

.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer > .mx_SpaceBasicSettings_avatar_remove {
            color: #ff5b55;
        }

.mx_SpaceBasicSettings .mx_AccessibleButton_hasKind {
        margin-left: auto;
        display: block;
        width: -webkit-min-content;
        width: -moz-min-content;
        width: min-content;
    }

.mx_SpaceBasicSettings .mx_AccessibleButton_disabled {
        cursor: not-allowed;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SpaceChildrenPicker {
    margin: 16px 0;
}

.mx_SpaceChildrenPicker .mx_StyledRadioButton + .mx_StyledRadioButton {
        margin-top: 16px;
    }

.mx_SpaceChildrenPicker .mx_SearchBox {
        /* To match the space around the title */
        margin: 0 0 15px 0;
        -webkit-box-flex: 0;
            -ms-flex-positive: 0;
                flex-grow: 0;
        border-radius: 8px;
    }

.mx_SpaceChildrenPicker .mx_SpaceChildrenPicker_noResults {
        display: block;
        margin-top: 24px;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* background blur everything except SpacePanel */

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu_background {
        background-color: #000000;
        opacity: 0.6;
        left: 68px;
    }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu {
        padding: 24px;
        width: 480px;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        background-color: #15191e;
        position: relative;
    }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu > div > h2 {
                font-weight: 600;
                font-weight: var(--font-semi-bold);
                font-size: 1.8rem;
                margin-top: 4px;
            }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu > div > p {
                font-size: 1.5rem;
                color: #a9b2bc;
            }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType {
            position: relative;
            padding: 16px 32px 16px 72px;
            width: 432px;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            border-radius: 8px;
            border: 1px solid rgba(231, 231, 231, 0.2);
            font-size: 1.7rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            margin: 20px 0;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType > div {
        margin-top: 4px;
        font-weight: normal;
        font-size: 1.5rem;
        color: #a9b2bc;
    }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType::before {
        position: absolute;
        content: "";
        width: 24px;
        height: 24px;
        top: 17px;
        left: 20px;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: 24px;
                mask-size: 24px;
        background-color: #8e99a4;
    }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover {
        border-color: #0dbd8b;
    }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover::before {
            background-color: #0dbd8b;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover > span {
            color: #ffffff;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType2 {
            position: relative;
            padding: 16px 32px 16px 72px;
            width: 432px;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            border-radius: 8px;
            border: 1px solid rgba(231, 231, 231, 0.2);
            font-size: 1.7rem;
            font-weight: 600;
            font-weight: var(--font-semi-bold);
            margin: 20px 0;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType2 > div {
        margin-top: 4px;
        font-weight: normal;
        font-size: 1.5rem;
        color: #a9b2bc;
    }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType2::before {
        position: absolute;
        content: "";
        width: 24px;
        height: 24px;
        top: 17px;
        left: 20px;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: 24px;
                mask-size: 24px;
        background-color: #8e99a4;
    }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_public::before {
            -webkit-mask-image: url(../../img/globe.216f1db.svg);
                    mask-image: url(../../img/globe.216f1db.svg);
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .personal1{
            position:absolute;
            right: 21px;
            top: 2px;
            width: 18px;
            height: 22px;
            background: black;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-image: url(../../img/nft-token-13058.2155612.svg);
                    mask-image: url(../../img/nft-token-13058.2155612.svg);
            -webkit-mask-size: 18px;
                    mask-size: 18px;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .disable{
            opacity: 0.3;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .personal{
            position:absolute;
            right:0px;
            top:2px;
            width: 18px;
            height: 22px;
            background: black;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-image: url(../../img/element-icons/lock.0519ea1.svg);
                    mask-image: url(../../img/element-icons/lock.0519ea1.svg);
            -webkit-mask-size: 15px;
                    mask-size: 15px;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_private::before {
            -webkit-mask-image: url(../../img/element-icons/lock.0519ea1.svg);
                    mask-image: url(../../img/element-icons/lock.0519ea1.svg);
            -webkit-mask-size: 18px;
                    mask-size: 18px;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back {
            width: 28px;
            height: 28px;
            position: relative;
            background-color: rgba(141,151,165, 0.2);
            border-radius: 14px;
            margin-bottom: 12px;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back::before {
                content: "";
                position: absolute;
                height: 28px;
                width: 28px;
                top: 0;
                left: 0;
                background-color: #8e99a4;
                -webkit-transform: rotate(90deg);
                        transform: rotate(90deg);
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: 2px 3px;
                        mask-position: 2px 3px;
                -webkit-mask-size: 24px;
                        mask-size: 24px;
                -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                        mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
            }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_kind_primary {
            padding: 8px 22px;
            margin-left: auto;
            display: block;
            width: -webkit-min-content;
            width: -moz-min-content;
            width: min-content;
        }

.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_disabled {
            cursor: not-allowed;
        }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_SpacePublicShare .mx_AccessibleButton {
        position: relative;
        padding: 16px 32px 16px 72px;
        width: 432px;
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        border-radius: 8px;
        border: 1px solid rgba(231, 231, 231, 0.2);
        font-size: 1.7rem;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
        margin: 20px 0;
    }

.mx_SpacePublicShare .mx_AccessibleButton > div {
        margin-top: 4px;
        font-weight: normal;
        font-size: 1.5rem;
        color: #a9b2bc;
    }

.mx_SpacePublicShare .mx_AccessibleButton::before {
        position: absolute;
        content: "";
        width: 24px;
        height: 24px;
        top: 17px;
        left: 20px;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: 24px;
                mask-size: 24px;
        background-color: #8e99a4;
    }

.mx_SpacePublicShare .mx_AccessibleButton:hover {
        border-color: #0dbd8b;
    }

.mx_SpacePublicShare .mx_AccessibleButton:hover::before {
            background-color: #0dbd8b;
        }

.mx_SpacePublicShare .mx_AccessibleButton:hover > span {
            color: #ffffff;
        }

.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_shareButton::before {
            -webkit-mask-image: url(../../img/element-icons/link.3f7cd42.svg);
                    mask-image: url(../../img/element-icons/link.3f7cd42.svg);
        }

.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_inviteButton::before {
            -webkit-mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
                    mask-image: url(../../img/element-icons/room/invite.7232ec2.svg);
        }

/*
Copyright 2019 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_InlineTermsAgreement_cbContainer {
    margin-bottom: 10px;
    font-size: 1.4rem;
}

.mx_InlineTermsAgreement_cbContainer a {
        color: #0dbd8b;
        text-decoration: none;
    }

.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox {
        margin-top: 10px;
    }

.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox input {
            vertical-align: text-bottom;
        }

.mx_InlineTermsAgreement_link {
    display: inline-block;
    -webkit-mask-image: url(../../img/external-link.5014037.svg);
            mask-image: url(../../img/external-link.5014037.svg);
    background-color: #0dbd8b;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-size: contain;
            mask-size: contain;
    width: 12px;
    height: 12px;
    margin-left: 3px;
    vertical-align: middle;
}

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_AnalyticsToast .mx_AccessibleButton_kind_danger_outline {
        background-color: #0dbd8b;
        color: #ffffff;
        border: 1px solid #0dbd8b;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

.mx_AnalyticsToast .mx_AccessibleButton_kind_primary {
        background-color: #0dbd8b;
        color: #ffffff;
        border: 1px solid #0dbd8b;
        font-weight: 600;
        font-weight: var(--font-semi-bold);
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_IncomingCallToast {
    position: relative;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    pointer-events: initial; /* restore pointer events so the user can accept/decline */
    width: 250px;
}

.mx_IncomingCallToast .mx_IncomingCallToast_content {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        margin-left: 8px;
        width: 100%;
        overflow: hidden;
    }

.mx_IncomingCallToast .mx_IncomingCallToast_content .mx_IncomingCallToast_info {
            margin-bottom: 16px;
        }

.mx_IncomingCallToast .mx_IncomingCallToast_content .mx_IncomingCallToast_info .mx_IncomingCallToast_room {
                display: inline-block;

                font-weight: 600;

                font-weight: var(--font-semi-bold);
                font-size: 1.5rem;
                line-height: 2.4rem;

                /* Prevent overlap with the close button */
                width: calc(100% - 16px - 2 * 4px);
                overflow: hidden;
                text-overflow: ellipsis;
                white-space: nowrap;

                margin-bottom: 4px;
            }

.mx_IncomingCallToast .mx_IncomingCallToast_content .mx_IncomingCallToast_info .mx_IncomingCallToast_message {
                font-size: 1.2rem;
                line-height: 1.5rem;

                margin-bottom: 4px;
            }

.mx_IncomingCallToast .mx_IncomingCallToast_content .mx_IncomingCallToast_info .mx_LiveContentSummary {
                font-size: 1.2rem;
                line-height: 1.5rem;
            }

.mx_IncomingCallToast .mx_IncomingCallToast_content .mx_IncomingCallToast_info .mx_LiveContentSummary .mx_LiveContentSummary_participants::before {
                    width: 15px;
                    height: 15px;
                }

.mx_IncomingCallToast .mx_IncomingCallToast_content .mx_IncomingCallToast_joinButton {
            position: relative;

            bottom: 4px;
            right: 4px;

            -ms-flex-item-align: end;

                align-self: flex-end;

            -webkit-box-sizing: border-box;

                    box-sizing: border-box;
            min-width: 120px;

            padding: 4px 0;

            line-height: 2.4rem;
        }

.mx_IncomingCallToast .mx_IncomingCallToast_closeButton {
        position: absolute;

        top: 4px;
        right: 4px;

        display: -webkit-box;

        display: -ms-flexbox;

        display: flex;
        height: 16px;
        width: 16px;
    }

.mx_IncomingCallToast .mx_IncomingCallToast_closeButton::before {
            content: "";

            -webkit-mask-image: url(../../img/cancel.12c5c12.svg);

                    mask-image: url(../../img/cancel.12c5c12.svg);

            height: inherit;
            width: inherit;
            background-color: #a9b2bc;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-position: center;
                    mask-position: center;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_IncomingLegacyCallToast {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    pointer-events: initial;
}

/* restore pointer events so the user can accept/decline */

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        margin-left: 8px;
    }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_LegacyCallEvent_caller {
            font-weight: bold;
            font-size: 1.5rem;
            line-height: 1.8rem;

            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;

            margin-top: 2px;
            margin-right: 6px;

            max-width: 200px;
        }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_LegacyCallEvent_type {
            font-size: 1.2rem;
            line-height: 1.5rem;
            color: #8e99a4;

            margin-top: 4px;
            margin-bottom: 6px;

            display: -webkit-box;

            display: -ms-flexbox;

            display: flex;
            -webkit-box-orient: horizontal;
            -webkit-box-direction: normal;
                -ms-flex-direction: row;
                    flex-direction: row;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
        }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_LegacyCallEvent_type .mx_LegacyCallEvent_type_icon {
                height: 16px;
                width: 16px;
                margin-right: 6px;
            }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_LegacyCallEvent_type .mx_LegacyCallEvent_type_icon::before {
                    content: "";
                    position: absolute;
                    height: inherit;
                    width: inherit;
                    background-color: #8e99a4;
                    -webkit-mask-repeat: no-repeat;
                            mask-repeat: no-repeat;
                    -webkit-mask-size: contain;
                            mask-size: contain;
                }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content.mx_IncomingLegacyCallToast_content_voice .mx_LegacyCallEvent_type .mx_LegacyCallEvent_type_icon::before,
            .mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content.mx_IncomingLegacyCallToast_content_voice .mx_IncomingLegacyCallToast_buttons .mx_IncomingLegacyCallToast_button_accept span::before {
                -webkit-mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
                        mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
            }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content.mx_IncomingLegacyCallToast_content_video .mx_LegacyCallEvent_type .mx_LegacyCallEvent_type_icon::before,
            .mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content.mx_IncomingLegacyCallToast_content_video .mx_IncomingLegacyCallToast_buttons .mx_IncomingLegacyCallToast_button_accept span::before {
                -webkit-mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
                        mask-image: url(../../img/element-icons/call/video-call.86ee0c8.svg);
            }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_IncomingLegacyCallToast_buttons {
            margin-top: 8px;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: horizontal;
            -webkit-box-direction: normal;
                -ms-flex-direction: row;
                    flex-direction: row;
            grid-gap: 12px;
            gap: 12px;
        }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_IncomingLegacyCallToast_buttons .mx_IncomingLegacyCallToast_button {
                -webkit-box-sizing: border-box;
                        box-sizing: border-box;
                font-weight: 600;
                font-weight: var(--font-semi-bold);
                height: 2.4rem;
                line-height: 2.4rem;
                margin-right: 0;
            }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_IncomingLegacyCallToast_buttons .mx_IncomingLegacyCallToast_button span {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_IncomingLegacyCallToast_buttons .mx_IncomingLegacyCallToast_button span::before {
            content: "";
            display: inline-block;
            background-color: #ffffff;
            -webkit-mask-position: center;
                    mask-position: center;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            margin-right: 8px;
        }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_IncomingLegacyCallToast_buttons .mx_IncomingLegacyCallToast_button {
                padding: 0px 8px;
                -ms-flex-negative: 0;
                    flex-shrink: 0;
                -webkit-box-flex: 1;
                    -ms-flex-positive: 1;
                        flex-grow: 1;
                font-size: 1.5rem;
}

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_IncomingLegacyCallToast_buttons .mx_IncomingLegacyCallToast_button span {
                    padding: 8px 0;
                }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_IncomingLegacyCallToast_buttons .mx_IncomingLegacyCallToast_button.mx_IncomingLegacyCallToast_button_accept span::before {
                    -webkit-mask-size: 13px;
                            mask-size: 13px;
                    width: 13px;
                    height: 13px;
                }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_content .mx_IncomingLegacyCallToast_buttons .mx_IncomingLegacyCallToast_button.mx_IncomingLegacyCallToast_button_decline span::before {
                    -webkit-mask-image: url(../../img/element-icons/call/hangup.9ca0556.svg);
                            mask-image: url(../../img/element-icons/call/hangup.9ca0556.svg);
                    -webkit-mask-size: 16px;
                            mask-size: 16px;
                    width: 16px;
                    height: 16px;
                }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_iconButton {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        height: 20px;
        width: 20px;
    }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_iconButton::before {
            content: "";

            height: inherit;
            width: inherit;
            background-color: #8e99a4;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-position: center;
                    mask-position: center;
        }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_silence::before {
        -webkit-mask-image: url(../../img/voip/silence.b18c857.svg);
                mask-image: url(../../img/voip/silence.b18c857.svg);
    }

.mx_IncomingLegacyCallToast .mx_IncomingLegacyCallToast_unSilence::before {
        -webkit-mask-image: url(../../img/voip/un-silence.c7194c2.svg);
                mask-image: url(../../img/voip/un-silence.c7194c2.svg);
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_NonUrgentEchoFailureToast .mx_NonUrgentEchoFailureToast_icon {
        display: inline-block;
        width: 1.8rem;
        height: 1.8rem;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        background-color: #fff; /* we know that non-urgent toasts are always styled the same */
        -webkit-mask-image: url(../../img/element-icons/cloud-off.8cb6697.svg);
                mask-image: url(../../img/element-icons/cloud-off.8cb6697.svg);
        margin-right: 8px;
    }

.mx_NonUrgentEchoFailureToast span {
        /* includes the i18n block */
        vertical-align: middle;
    }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Heading_h1 {
    font-size: 3.2rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    line-height: 3.9rem;
    margin-inline: unset;
    margin-block: unset;
}

.mx_Heading_h2 {
    font-size: 2.4rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    line-height: 2.9rem;
    margin-inline: unset;
    margin-block: unset;
}

.mx_Heading_h3 {
    font-size: 1.8rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    line-height: 2.2rem;
    margin-inline: unset;
    margin-block: unset;
}

.mx_Heading_h4 {
    font-size: 1.5rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    line-height: 2rem;
    margin-inline: unset;
    margin-block: unset;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UserOnboardingButton {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -ms-flex-line-pack: stretch;
        align-content: stretch;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
    border-radius: 8px;
    margin: 8px 8px 0;
    padding: 12px;
}

.mx_UserOnboardingButton.mx_UserOnboardingButton_selected,
    .mx_UserOnboardingButton:hover,
    .mx_UserOnboardingButton:focus-within {
        background-color: rgba(141,151,165, 0.2);
    }

.mx_UserOnboardingButton .mx_UserOnboardingButton_content {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
        grid-gap: 5px;
        gap: 5px;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_UserOnboardingButton .mx_UserOnboardingButton_content .mx_Heading_h4 {
            margin-right: auto;
            font-size: 1.4rem;
            color: #ffffff;
        }

.mx_UserOnboardingButton .mx_UserOnboardingButton_content .mx_UserOnboardingButton_percentage {
            font-size: 1.2rem;
            color: #a9b2bc;
        }

.mx_UserOnboardingButton .mx_UserOnboardingButton_content .mx_UserOnboardingButton_close {
            position: relative;
            -webkit-box-sizing: border-box;
                    box-sizing: border-box;
            width: 14px;
            height: 14px;
            border-radius: 7px;
            border: 1px solid #a9b2bc;
            -ms-flex-negative: 0;
                flex-shrink: 0;
        }

.mx_UserOnboardingButton .mx_UserOnboardingButton_content .mx_UserOnboardingButton_close::before {
                background-color: #a9b2bc;
                content: "";
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: contain;
                        mask-size: contain;
                width: 7px;
                height: 7px;
                position: absolute;
                left: 50%;
                top: 50%;
                -webkit-transform: translate(-50%, -50%);
                        transform: translate(-50%, -50%);
                -webkit-mask-image: url(../../img/element-icons/cancel-rounded.3cc9164.svg);
                        mask-image: url(../../img/element-icons/cancel-rounded.3cc9164.svg);
            }

.mx_UserOnboardingButton .mx_ProgressBar {
        width: auto;
        margin-top: 8px;
        background: #15191e;
    }

.mx_UserOnboardingButton.mx_UserOnboardingButton_completed .mx_ProgressBar {
        display: none;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UserOnboardingHeader {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    padding: 32px;
    border-radius: 16px;
    background: #21262c;
    grid-gap: 64px;
    gap: 64px;

    -webkit-animation-delay: 1500ms;

            animation-delay: 1500ms;
    -webkit-animation-duration: 300ms;
            animation-duration: 300ms;
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
            animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
    -webkit-animation-name: mx_UserOnboardingHeader_slideIn;
            animation-name: mx_UserOnboardingHeader_slideIn;
    -webkit-animation-fill-mode: backwards;
            animation-fill-mode: backwards;
    will-change: opacity, transform;
}

@media (max-width: 1280px) {

.mx_UserOnboardingHeader {
        margin: 32px
}
    }

.mx_UserOnboardingHeader .mx_UserOnboardingHeader_dot {
        color: #0dbd8b;
    }

.mx_UserOnboardingHeader .mx_UserOnboardingHeader_content {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -ms-flex-preferred-size: 50%;
            flex-basis: 50%;
        -ms-flex-negative: 1;
            flex-shrink: 1;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        min-width: 0;
        grid-gap: 24px;
        gap: 24px;
        margin-right: auto;
    }

.mx_UserOnboardingHeader .mx_UserOnboardingHeader_content p {
            margin: 0;
        }

.mx_UserOnboardingHeader .mx_UserOnboardingHeader_content .mx_AccessibleButton {
            margin-top: auto;
            -ms-flex-item-align: start;
                align-self: flex-start;
            padding: 12px 24px;
        }

.mx_UserOnboardingHeader .mx_UserOnboardingHeader_image {
        -ms-flex-preferred-size: 30%;
            flex-basis: 30%;
        -ms-flex-negative: 1;
            flex-shrink: 1;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        -ms-flex-item-align: center;
            align-self: center;
        height: calc(100% + 64px + 64px);
        aspect-ratio: 4 / 3;
        -o-object-fit: contain;
           object-fit: contain;
        min-width: 0;
        min-height: 0;
        margin-top: -64px;
        margin-bottom: -64px;

        -webkit-animation-delay: 1500ms;

                animation-delay: 1500ms;
        -webkit-animation-duration: 300ms;
                animation-duration: 300ms;
        -webkit-animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
                animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
        -webkit-animation-name: mx_UserOnboardingHeader_slideInLong;
                animation-name: mx_UserOnboardingHeader_slideInLong;
        -webkit-animation-fill-mode: backwards;
                animation-fill-mode: backwards;
        will-change: opacity, transform;
    }

@-webkit-keyframes mx_UserOnboardingHeader_slideIn {
    0% {
        -webkit-transform: translate(0, 8px);
                transform: translate(0, 8px);
        opacity: 0;
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
        opacity: 1;
    }
}

@keyframes mx_UserOnboardingHeader_slideIn {
    0% {
        -webkit-transform: translate(0, 8px);
                transform: translate(0, 8px);
        opacity: 0;
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
        opacity: 1;
    }
}

@-webkit-keyframes mx_UserOnboardingHeader_slideInLong {
    0% {
        -webkit-transform: translate(0, 32px);
                transform: translate(0, 32px);
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
    }
}

@keyframes mx_UserOnboardingHeader_slideInLong {
    0% {
        -webkit-transform: translate(0, 32px);
                transform: translate(0, 32px);
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
    }
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UserOnboardingList {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    margin: 0 32px;

    -webkit-animation-duration: 300ms;

            animation-duration: 300ms;
    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
            animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
    -webkit-animation-name: mx_UserOnboardingList_slideIn;
            animation-name: mx_UserOnboardingList_slideIn;
    -webkit-animation-fill-mode: backwards;
            animation-fill-mode: backwards;
    will-change: opacity;
}

.mx_UserOnboardingList .mx_UserOnboardingList_header {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
            -ms-flex-direction: row;
                flex-direction: row;
        grid-gap: 12px;
        gap: 12px;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_UserOnboardingList .mx_UserOnboardingList_header .mx_UserOnboardingList_hint {
            color: #a9b2bc;
        }

.mx_UserOnboardingList .mx_UserOnboardingList_progress {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        counter-reset: user-onboarding;
    }

.mx_UserOnboardingList .mx_UserOnboardingList_progress .mx_ProgressBar {
            width: auto;
            margin-top: 16px;
            height: 16px;

            border-radius: 16px;
        }

.mx_UserOnboardingList .mx_UserOnboardingList_progress .mx_ProgressBar::-moz-progress-bar {
        border-radius: 16px;
    }

.mx_UserOnboardingList .mx_UserOnboardingList_progress .mx_ProgressBar::-webkit-progress-bar,
    .mx_UserOnboardingList .mx_UserOnboardingList_progress .mx_ProgressBar::-webkit-progress-value {
        border-radius: 16px;
    }

.mx_UserOnboardingList .mx_UserOnboardingList_list {
        display: grid;
        grid-template-columns: -webkit-max-content 1fr -webkit-max-content;
        grid-template-columns: max-content 1fr max-content;

        -webkit-appearance: none;

           -moz-appearance: none;

                appearance: none;
        list-style: none;
        margin: 32px 0 0;
        padding: 0;

        grid-gap: 24px;
    }

@-webkit-keyframes mx_UserOnboardingList_slideIn {
    0% {
        -webkit-transform: translate(0, 8px);
                transform: translate(0, 8px);
        opacity: 0;
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
        opacity: 1;
    }
}

@keyframes mx_UserOnboardingList_slideIn {
    0% {
        -webkit-transform: translate(0, 8px);
                transform: translate(0, 8px);
        opacity: 0;
    }
    100% {
        -webkit-transform: translate(0, 0);
                transform: translate(0, 0);
        opacity: 1;
    }
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UserOnboardingPage {
    width: 100%;
    height: 100%;

    align-self: stretch;
    max-width: 1200px;
    margin: 0 auto auto;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;

    grid-gap: 64px;

    gap: 64px;
    padding: 64px 100px;
}

@media (max-width: 1280px) {

.mx_UserOnboardingPage {
        padding: 48px 32px
}
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_UserOnboardingTask {
    display: contents;
}

.mx_UserOnboardingTask .mx_UserOnboardingTask_number {
        counter-increment: user-onboarding;
        grid-column: 1;
        color: #a9b2bc;
        width: 32px;
        height: 32px;
        text-align: center;
        border: 2px solid #394049;
        border-radius: 32px;
        line-height: 32px;
        align-self: center;
        position: relative;
    }

.mx_UserOnboardingTask .mx_UserOnboardingTask_number::before {
            content: counter(user-onboarding);
        }

.mx_UserOnboardingTask .mx_UserOnboardingTask_content {
        grid-column: 2;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        -ms-flex-negative: 1;
            flex-shrink: 1;

        -webkit-transition: all 500ms;

        transition: all 500ms;
    }

.mx_UserOnboardingTask .mx_UserOnboardingTask_content .mx_UserOnboardingTask_description {
            font-size: 1.2rem;
        }

.mx_UserOnboardingTask .mx_UserOnboardingTask_action.mx_AccessibleButton {
        grid-column: 3;
        min-width: 180px;
    }

@media (max-width: 800px) {

.mx_UserOnboardingTask .mx_UserOnboardingTask_action.mx_AccessibleButton {
            grid-column: 2;
            margin-top: -16px
    }
        }

.mx_UserOnboardingTask.mx_UserOnboardingTask_completed .mx_UserOnboardingTask_number::before {
                content: "";
                position: absolute;
                inset: -2px;
                background: #0dbd8b;
                border-radius: 32px;

                -webkit-animation-duration: 300ms;

                        animation-duration: 300ms;
                -webkit-animation-fill-mode: both;
                        animation-fill-mode: both;
                -webkit-animation-name: mx_UserOnboardingTask_spring;
                        animation-name: mx_UserOnboardingTask_spring;
                will-change: opacity, transform;
            }

.mx_UserOnboardingTask.mx_UserOnboardingTask_completed .mx_UserOnboardingTask_number::after {
                background-color: #15191e;
                content: "";
                -webkit-mask-repeat: no-repeat;
                        mask-repeat: no-repeat;
                -webkit-mask-position: center;
                        mask-position: center;
                -webkit-mask-size: contain;
                        mask-size: contain;
                width: 16px;
                height: 16px;
                position: absolute;
                left: calc(50% - 8px);
                top: calc(50% - 8px);
                -webkit-mask-image: url(../../img/element-icons/check-white.1e3d7f7.svg);
                        mask-image: url(../../img/element-icons/check-white.1e3d7f7.svg);

                -webkit-animation-duration: 300ms;

                        animation-duration: 300ms;
                -webkit-animation-fill-mode: both;
                        animation-fill-mode: both;
                -webkit-animation-name: mx_UserOnboardingTask_spring;
                        animation-name: mx_UserOnboardingTask_spring;
                will-change: opacity, transform;
            }

.mx_UserOnboardingTask.mx_UserOnboardingTask_completed .mx_UserOnboardingTask_content {
            opacity: 0.6;
        }

@-webkit-keyframes mx_UserOnboardingTask_spring {
    0% {
        opacity: 0;
        -webkit-transform: scale(0.6);
                transform: scale(0.6);
    }
    50% {
        opacity: 1;
        -webkit-transform: scale(1.2);
                transform: scale(1.2);
    }
    100% {
        opacity: 1;
        -webkit-transform: scale(1);
                transform: scale(1);
    }
}

@keyframes mx_UserOnboardingTask_spring {
    0% {
        opacity: 0;
        -webkit-transform: scale(0.6);
                transform: scale(0.6);
    }
    50% {
        opacity: 1;
        -webkit-transform: scale(1.2);
                transform: scale(1.2);
    }
    100% {
        opacity: 1;
        -webkit-transform: scale(1);
                transform: scale(1);
    }
}

/*
Copyright 2019 New Vector Ltd.
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_VerificationShowSas_decimalSas {
    text-align: center;
    font-weight: bold;
    padding-left: 3px;
    padding-right: 3px;
}

.mx_VerificationShowSas_decimalSas span {
    margin-left: 5px;
    margin-right: 5px;
}

.mx_VerificationShowSas_emojiSas {
    text-align: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    margin: 25px 0;
}

.mx_VerificationShowSas_emojiSas_block {
    display: inline-block;
    margin-bottom: 16px;
    position: relative;
    width: 52px;
}

.mx_Dialog .mx_VerificationShowSas_emojiSas_block,
.mx_AuthPage_modal .mx_VerificationShowSas_emojiSas_block {
    width: 60px;
}

.mx_VerificationShowSas_emojiSas_emoji {
    font-size: 3.2rem;
}

.mx_VerificationShowSas_emojiSas_label {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font-size: 1.2rem;
}

.mx_VerificationShowSas_emojiSas_break {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
}

.mx_VerificationShowSas_buttonRow {
    text-align: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    grid-gap: 9px;
    gap: 9px;
}

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2020 - 2021 The Matrix.org Foundation C.I.C.
Copyright 2021 - 2022 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/* data-whatintent makes more sense here semantically but then the tooltip would stay visible without the button */

/* which looks broken, so we match the behaviour of tooltips which is fine too. */

[data-whatinput="mouse"] .mx_LegacyCallViewButtons.mx_LegacyCallViewButtons_hidden {
    opacity: 0.001; /* opacity 0 can cause a re-layout */
    pointer-events: none;
}

.mx_LegacyCallViewButtons {
    --LegacyCallViewButtons_dropdownButton-size: 16px;

    position: absolute;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    bottom: 32px;
    opacity: 1;
    -webkit-transition: opacity 0.5s;
    transition: opacity 0.5s;
    z-index: 200; /* To be above _all_ feeds */
    grid-gap: 18px;
    gap: 18px;
}

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button {
        cursor: pointer;

        background-color: #21262c;

        border-radius: 100%;
        height: 40px;
        width: 40px;

        display: -webkit-box;

        display: -ms-flexbox;

        display: flex;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;

        position: relative;

        -webkit-box-shadow: 0px 4px 4px 0px #00000026;

                box-shadow: 0px 4px 4px 0px #00000026;
        /* Stateless buttons */
        /* Invisible state */
    }

/* Same on both themes */

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button::before {
            content: "";
            display: inline-block;

            -webkit-mask-repeat: no-repeat;

                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-position: center;
                    mask-position: center;

            background-color: #ffffff;

            height: 24px;
            width: 24px;
        }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_dropdownButton {
            width: var(--LegacyCallViewButtons_dropdownButton-size);
            height: var(--LegacyCallViewButtons_dropdownButton-size);

            position: absolute;
            right: 0;
            bottom: 0;
        }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_dropdownButton::before {
                width: 14px;
                height: 14px;
                -webkit-mask-image: url(../../img/element-icons/message/chevron-up.dabdada.svg);
                        mask-image: url(../../img/element-icons/message/chevron-up.dabdada.svg);
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_dropdownButton.mx_LegacyCallViewButtons_dropdownButton_collapsed::before {
                -webkit-transform: rotate(180deg);
                        transform: rotate(180deg);
            }

/* State buttons */

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_on {
            background-color: #21262c;
        }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_on::before {
                background-color: #ffffff;
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_on.mx_LegacyCallViewButtons_button_mic::before {
                height: 20px;
                -webkit-mask-image: url(../../img/element-icons/mic.4c7bdcd.svg);
                        mask-image: url(../../img/element-icons/mic.4c7bdcd.svg);
                width: 20px;
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_on.mx_LegacyCallViewButtons_button_vid::before {
                -webkit-mask-image: url(../../img/voip/call-view/cam-on.3d61807.svg);
                        mask-image: url(../../img/voip/call-view/cam-on.3d61807.svg);
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_on.mx_LegacyCallViewButtons_button_screensharing {
                background-color: #0dbd8b;
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_on.mx_LegacyCallViewButtons_button_screensharing::before {
                    -webkit-mask-image: url(../../img/voip/call-view/screensharing.6f91dd7.svg);
                            mask-image: url(../../img/voip/call-view/screensharing.6f91dd7.svg);
                    background-color: white; /* Same on both themes */
                }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_on.mx_LegacyCallViewButtons_button_sidebar::before {
                -webkit-mask-image: url(../../img/voip/call-view/sidebar-on.e72268b.svg);
                        mask-image: url(../../img/voip/call-view/sidebar-on.e72268b.svg);
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_off {
            background-color: #ffffff;
        }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_off::before {
                background-color: #21262c;
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_off.mx_LegacyCallViewButtons_button_mic::before {
                height: 20px;
                -webkit-mask-image: url(../../img/element-icons/Mic-off.43bef44.svg);
                        mask-image: url(../../img/element-icons/Mic-off.43bef44.svg);
                width: 20px;
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_off.mx_LegacyCallViewButtons_button_vid::before {
                -webkit-mask-image: url(../../img/voip/call-view/cam-off.bcb327c.svg);
                        mask-image: url(../../img/voip/call-view/cam-off.bcb327c.svg);
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_off.mx_LegacyCallViewButtons_button_screensharing {
                background-color: #21262c;
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_off.mx_LegacyCallViewButtons_button_screensharing::before {
                    -webkit-mask-image: url(../../img/voip/call-view/screensharing.6f91dd7.svg);
                            mask-image: url(../../img/voip/call-view/screensharing.6f91dd7.svg);
                    background-color: #ffffff;
                }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_off.mx_LegacyCallViewButtons_button_sidebar {
                background-color: #21262c;
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_off.mx_LegacyCallViewButtons_button_sidebar::before {
                    -webkit-mask-image: url(../../img/voip/call-view/sidebar-off.61e1311.svg);
                            mask-image: url(../../img/voip/call-view/sidebar-off.61e1311.svg);
                    background-color: #ffffff;
                }

/* Stateless buttons */

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_dialpad::before {
            -webkit-mask-image: url(../../img/voip/call-view/dialpad.395f905.svg);
                    mask-image: url(../../img/voip/call-view/dialpad.395f905.svg);
        }

/* State buttons */

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_hangup {
            background-color: #ff5b55;
        }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_hangup::before {
                -webkit-mask-image: url(../../img/element-icons/call/hangup.9ca0556.svg);
                        mask-image: url(../../img/element-icons/call/hangup.9ca0556.svg);
                background-color: white; /* Same on both themes */
            }

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_more::before {
            -webkit-mask-image: url(../../img/voip/call-view/more.238b413.svg);
                    mask-image: url(../../img/voip/call-view/more.238b413.svg);
        }

/* Invisible state */

.mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_button_invisible {
            visibility: hidden;
            pointer-events: none;
            position: absolute;
        }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CallDuration {
    color: #a9b2bc;
    font-size: 1.2rem;
    white-space: nowrap;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_CallView {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    min-height: 0;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    margin: 8px;
    margin: var(--container-gap-width);
    margin-right: calc(8px / 2);
    margin-right: calc(var(--container-gap-width) / 2);

    background-color: #20252b;
    padding: 8px;
    border-radius: 8px;
}

.mx_CallView .mx_AppTile {
        width: auto;
        height: 100%;
        border: none;
        border-radius: inherit;
        background-color: #15191e;
    }

/* While the lobby is shown, the widget needs to stay loaded but hidden in the background */

.mx_CallView .mx_CallView_lobby ~ .mx_AppTile {
        display: none;
    }

.mx_CallView .mx_CallView_lobby {
        min-height: 0;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        padding: 12px;
        color: #ffffff;
        background-color: #15191e;

        --facepile-background: #15191e;
        border-radius: 8px;

        display: -webkit-box;

        display: -ms-flexbox;

        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        grid-gap: 32px;
        gap: 32px;
    }

.mx_CallView .mx_CallView_lobby .mx_FacePile {
            width: -webkit-fit-content;
            width: -moz-fit-content;
            width: fit-content;
            margin: 8px auto 0;
        }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview {
            position: relative;
            width: 100%;
            max-width: 800px;
            aspect-ratio: 1.5;
            background-color: #21262c;

            border-radius: 20px;
            overflow: hidden;

            display: -webkit-box;

            display: -ms-flexbox;

            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
        }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_BaseAvatar {
                margin: 20px;

                /* Override the explicit dimensions on the element so that this gets sized responsively */
                width: unset !important;
                height: unset !important;
                min-width: 0;
                min-height: 0;
                -webkit-box-flex: 0;
                    -ms-flex: 0 1 200px;
                        flex: 0 1 200px;
            }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview video {
                position: absolute;
                top: 0;
                width: 100%;
                height: 100%;
                -o-object-fit: cover;
                   object-fit: cover;
                display: block;
                -webkit-transform: scaleX(-1);
                        transform: scaleX(-1); /* flip the image */
                background-color: black;
            }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls {
                position: absolute;
                bottom: 0;
                left: 0;
                right: 0;

                background-color: rgba(21,25,30, 0.9);

                display: -webkit-box;

                display: -ms-flexbox;

                display: flex;
                -webkit-box-pack: center;
                    -ms-flex-pack: center;
                        justify-content: center;
                grid-gap: 24px;
                gap: 24px;
            }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper {
                    position: relative;
                    margin: 6px 0 10px;
                }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper .mx_CallView_deviceButton {

                        width: 50px;
                        height: 50px;

                        background-color: #21262c;
                        border-radius: calc(50px / 2);
                    }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper .mx_CallView_deviceButton::before {
                            content: "";
                            display: inline-block;
                            -webkit-mask-repeat: no-repeat;
                                    mask-repeat: no-repeat;
                            -webkit-mask-size: 20px;
                                    mask-size: 20px;
                            -webkit-mask-position: center;
                                    mask-position: center;
                            background-color: #ffffff;
                            height: 100%;
                            width: 100%;
                        }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper .mx_CallView_deviceButton.mx_CallView_deviceButton_audio::before {
                            -webkit-mask-image: url(../../img/element-icons/mic.4c7bdcd.svg);
                                    mask-image: url(../../img/element-icons/mic.4c7bdcd.svg);
                            -webkit-mask-size: 14px;
                                    mask-size: 14px;
                        }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper .mx_CallView_deviceButton.mx_CallView_deviceButton_video::before {
                            -webkit-mask-image: url(../../img/voip/call-view/cam-on.3d61807.svg);
                                    mask-image: url(../../img/voip/call-view/cam-on.3d61807.svg);
                        }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper .mx_CallView_deviceListButton {

                        position: absolute;
                        bottom: 0;
                        right: -2.5px;
                        width: 15px;
                        height: 15px;

                        background-color: #21262c;
                        border-radius: calc(15px / 2);
                    }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper .mx_CallView_deviceListButton::before {
                            content: "";
                            display: inline-block;
                            -webkit-mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                                    mask-image: url(../../img/feather-customised/chevron-down.663d060.svg);
                            -webkit-mask-size: 20px;
                                    mask-size: 20px;
                            -webkit-mask-position: center;
                                    mask-position: center;
                            background-color: #ffffff;
                            height: 100%;
                            width: 100%;
                        }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper.mx_CallView_deviceButtonWrapper_muted .mx_CallView_deviceButton,
                        .mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper.mx_CallView_deviceButtonWrapper_muted .mx_CallView_deviceListButton {
                            background-color: #ffffff;
                        }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper.mx_CallView_deviceButtonWrapper_muted .mx_CallView_deviceButton::before, .mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper.mx_CallView_deviceButtonWrapper_muted .mx_CallView_deviceListButton::before {
                                background-color: #21262c;
                            }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper.mx_CallView_deviceButtonWrapper_muted .mx_CallView_deviceButton.mx_CallView_deviceButton_audio::before {
                                -webkit-mask-image: url(../../img/element-icons/Mic-off.43bef44.svg);
                                        mask-image: url(../../img/element-icons/Mic-off.43bef44.svg);
                                -webkit-mask-size: 18px;
                                        mask-size: 18px;
                            }

.mx_CallView .mx_CallView_lobby .mx_CallView_preview .mx_CallView_controls .mx_CallView_deviceButtonWrapper.mx_CallView_deviceButtonWrapper_muted .mx_CallView_deviceButton.mx_CallView_deviceButton_video::before {
                                -webkit-mask-image: url(../../img/voip/call-view/cam-off.bcb327c.svg);
                                        mask-image: url(../../img/voip/call-view/cam-off.bcb327c.svg);
                            }

.mx_CallView .mx_CallView_lobby .mx_CallView_connectButton {
            padding-left: 50px;
            padding-right: 50px;
        }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DialPad {
    display: grid;
    grid-row-gap: 16px;
    row-gap: 16px;
    grid-column-gap: 0px;
    -webkit-column-gap: 0px;
       -moz-column-gap: 0px;
            column-gap: 0px;
    margin-top: 24px;
    margin-left: auto;
    margin-right: auto;

    /* squeeze the dial pad buttons together horizontally */
    grid-template-columns: repeat(3, 1fr);
}

.mx_DialPad_button {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;

    width: 40px;
    height: 40px;
    background-color: #394049;
    border-radius: 40px;
    font-size: 18px;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    text-align: center;
    vertical-align: middle;
    margin-left: auto;
    margin-right: auto;
}

.mx_DialPad_button .mx_DialPad_buttonSubText {
    font-size: 8px;
}

.mx_DialPad_dialButton {
    /* Always show the dial button in the center grid column */
    grid-column: 2;
    background-color: #0dbd8b;
}

.mx_DialPad_dialButton::before {
        content: "";
        display: inline-block;
        height: 40px;
        width: 40px;
        vertical-align: middle;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: 20px;
                mask-size: 20px;
        -webkit-mask-position: center;
                mask-position: center;
        background-color: #fff; /* on all themes */
        -webkit-mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
                mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
    }

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_DialPadContextMenu_dialPad .mx_DialPad {
    grid-row-gap: 16px;
    row-gap: 16px;
    grid-column-gap: 32px;
    -webkit-column-gap: 32px;
       -moz-column-gap: 32px;
            column-gap: 32px;
}

.mx_DialPadContextMenuWrapper {
    padding: 15px;
}

.mx_DialPadContextMenu_header {
    border: none;
    margin-top: 32px;
    margin-left: 20px;
    margin-right: 20px;

    /* a separator between the input line and the dial buttons */
    border-bottom: 1px solid #6f7882;
    -webkit-transition: border-bottom 0.25s;
    transition: border-bottom 0.25s;
}

.mx_DialPadContextMenu_cancel {
    -webkit-mask: url(../../img/cancel.12c5c12.svg);
            mask: url(../../img/cancel.12c5c12.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: cover;
            mask-size: cover;
    background-color: #9fa9ba;
    cursor: pointer;
    position: unset;
    width: unset;
    height: unset;
    float: right;
    width: 14px;
    height: 14px;
}

.mx_DialPadContextMenu_header:focus-within {
    border-bottom: 1px solid #0dbd8b;
}

.mx_DialPadContextMenu_title {
    color: #91a1c0;
    font-size: 12px;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
}

.mx_DialPadContextMenu_dialled {
    height: 1.5em;
    font-size: 18px;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    border: none;
    margin: 0px;
}

.mx_DialPadContextMenu_dialled input {
    font-size: 18px;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    overflow: hidden;
    max-width: 185px;
    text-align: left;
    padding: 8px 0px;
    background-color: rgb(0, 0, 0, 0);
}

.mx_DialPadContextMenu_dialPad {
    margin: 16px;
}

/*
Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_Dialog_dialPadWrapper .mx_Dialog {
    padding: 0px;
}

.mx_DialPadModal {
    width: 292px;
    height: 370px;
    padding: 16px 0px 0px 0px;
}

.mx_DialPadModal_header {
    margin-top: 32px;
    margin-left: 40px;
    margin-right: 40px;

    /* a separator between the input line and the dial buttons */
    border-bottom: 1px solid #6f7882;
    -webkit-transition: border-bottom 0.25s;
    transition: border-bottom 0.25s;
}

.mx_DialPadModal_header:focus-within {
    border-bottom: 1px solid #0dbd8b;
}

.mx_DialPadModal_title {
    color: #91a1c0;
    font-size: 12px;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
}

.mx_DialPadModal_cancel {
    -webkit-mask: url(../../img/cancel.12c5c12.svg);
            mask: url(../../img/cancel.12c5c12.svg);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: cover;
            mask-size: cover;
    background-color: #9fa9ba;
    cursor: pointer;
    position: unset;
    width: unset;
    height: unset;
    float: right;
    width: 14px;
    height: 14px;
    margin-right: 16px;
}

.mx_DialPadModal_field {
    border: none;
    margin: 0px;
    height: 30px;
}

.mx_DialPadModal_field .mx_Field_postfix {
    /* Remove border separator between postfix and field content */
    border-left: none;
}

.mx_DialPadModal_field input {
    font-size: 18px;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
}

.mx_DialPadModal_dialPad {
    margin-left: 16px;
    margin-right: 16px;
    margin-top: 16px;
}

/*
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LegacyCallPreview {
    -webkit-box-align: end;
        -ms-flex-align: end;
            align-items: flex-end;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    grid-gap: 16px;
    gap: 16px;
    left: 0;
    position: fixed;
    top: 0;
    /* Display above any widget elements */
    z-index: 102;
}

.mx_LegacyCallPreview .mx_VideoFeed_remote.mx_VideoFeed_voice {
        min-height: 150px;
    }

.mx_LegacyCallPreview .mx_VideoFeed_local {
        border-radius: 8px;
        overflow: hidden;
    }

/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2020 - 2021 The Matrix.org Foundation C.I.C.
Copyright 2021 - 2022 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LegacyCallView {
    border-radius: 8px;
    background-color: #20252b;
    padding-left: 8px;
    padding-right: 8px;
    /* XXX: PiPContainer sets pointer-events: none - should probably be set back in a better place */
    pointer-events: initial;
}

.mx_LegacyCallView .mx_LegacyCallView_toast {
        position: absolute;
        top: 74px;

        padding: 4px 8px;

        border-radius: 4px;
        z-index: 50;

        /* Same on both themes */
        color: white;
        background-color: #17191c;
    }

.mx_LegacyCallView .mx_LegacyCallView_content_wrapper {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;

        width: 100%;
        height: 100%;

        overflow: hidden;
    }

.mx_LegacyCallView .mx_LegacyCallView_content_wrapper .mx_LegacyCallView_content {
            position: relative;

            display: -webkit-box;

            display: -ms-flexbox;

            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;

            -webkit-box-flex: 1;

                -ms-flex: 1;

                    flex: 1;
            overflow: hidden;

            border-radius: 10px;

            padding: 10px;
            padding-right: calc(20% + 20px); /* Space for the sidebar */

            background-color: #394049;
        }

.mx_LegacyCallView .mx_LegacyCallView_content_wrapper .mx_LegacyCallView_content .mx_LegacyCallView_status {
                z-index: 50;
                color: #ffffff;
            }

.mx_LegacyCallView .mx_LegacyCallView_content_wrapper .mx_LegacyCallView_content .mx_LegacyCallView_avatarsContainer {
                display: -webkit-box;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-orient: horizontal;
                -webkit-box-direction: normal;
                    -ms-flex-direction: row;
                        flex-direction: row;
                -webkit-box-align: center;
                    -ms-flex-align: center;
                        align-items: center;
                -webkit-box-pack: center;
                    -ms-flex-pack: center;
                        justify-content: center;
            }

.mx_LegacyCallView .mx_LegacyCallView_content_wrapper .mx_LegacyCallView_content .mx_LegacyCallView_avatarsContainer div {
                    margin-left: 12px;
                    margin-right: 12px;
                }

.mx_LegacyCallView .mx_LegacyCallView_content_wrapper .mx_LegacyCallView_content .mx_LegacyCallView_holdBackground {
                position: absolute;
                left: 0;
                right: 0;

                width: 100%;
                height: 100%;

                background-repeat: no-repeat;
                background-size: cover;
                background-position: center;
                -webkit-filter: blur(20px);
                        filter: blur(20px);
            }

.mx_LegacyCallView .mx_LegacyCallView_content_wrapper .mx_LegacyCallView_content .mx_LegacyCallView_holdBackground::after {
                    content: "";
                    display: block;
                    position: absolute;
                    width: 100%;
                    height: 100%;
                    left: 0;
                    right: 0;
                    background-color: rgba(0, 0, 0, 0.6);
                }

.mx_LegacyCallView .mx_LegacyCallView_content_wrapper .mx_LegacyCallView_content.mx_LegacyCallView_content_hold .mx_LegacyCallView_status {
                font-weight: bold;
                text-align: center;
            }

.mx_LegacyCallView .mx_LegacyCallView_content_wrapper .mx_LegacyCallView_content.mx_LegacyCallView_content_hold .mx_LegacyCallView_status::before {
                    display: block;
                    margin-left: auto;
                    margin-right: auto;
                    content: "";
                    width: 40px;
                    height: 40px;
                    background-image: url(../../img/voip/paused.3fd21d4.svg);
                    background-position: center;
                    background-size: cover;
                }

.mx_LegacyCallView_pip .mx_LegacyCallView .mx_LegacyCallView_content_wrapper .mx_LegacyCallView_content.mx_LegacyCallView_content_hold .mx_LegacyCallView_status::before {
                    width: 30px;
                    height: 30px;
                }

.mx_LegacyCallView:not(.mx_LegacyCallView_sidebar) .mx_LegacyCallView_content {
        padding: 0;
        width: 100%;
        height: 100%;
    }

.mx_LegacyCallView:not(.mx_LegacyCallView_sidebar) .mx_LegacyCallView_content .mx_VideoFeed_primary {
            aspect-ratio: unset;
            border: 0;

            width: 100%;
            height: 100%;
        }

.mx_LegacyCallView.mx_LegacyCallView_pip {
        width: 320px;
        padding-bottom: 8px;

        border-radius: 8px;

        background-color: #21262c;
        -webkit-box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.2);
                box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.2);
    }

.mx_LegacyCallView.mx_LegacyCallView_pip .mx_LegacyCallViewButtons {
            bottom: 13px;
        }

.mx_LegacyCallView.mx_LegacyCallView_pip .mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button {
                width: 34px;
                height: 34px;
            }

.mx_LegacyCallView.mx_LegacyCallView_pip .mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button.mx_LegacyCallViewButtons_dropdownButton {
                    width: var(--LegacyCallViewButtons_dropdownButton-size);
                    height: var(--LegacyCallViewButtons_dropdownButton-size);
                }

.mx_LegacyCallView.mx_LegacyCallView_pip .mx_LegacyCallViewButtons .mx_LegacyCallViewButtons_button::before {
                    width: 22px;
                    height: 22px;
                }

.mx_LegacyCallView.mx_LegacyCallView_pip .mx_LegacyCallView_content {
            min-height: 180px;
        }

.mx_LegacyCallView.mx_LegacyCallView_large {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;

        -webkit-box-flex: 1;

            -ms-flex: 1;

                flex: 1;

        padding-bottom: 10px;

        margin: 8px;

        margin: var(--container-gap-width);
        /* The left side gap is fully handled by this margin. To prohibit bleeding on webkit browser. */
        margin-right: calc(8px / 2);
        margin-right: calc(var(--container-gap-width) / 2);
        margin-bottom: 10px;
    }

.mx_LegacyCallView.mx_LegacyCallView_belowWidget {
        margin-top: 0;
    }

/*
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LegacyCallViewForRoom {
    overflow: hidden;
}

.mx_LegacyCallViewForRoom .mx_LegacyCallViewForRoom_ResizeWrapper {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
    }

.mx_LegacyCallViewForRoom .mx_LegacyCallViewForRoom_ResizeWrapper:hover .mx_LegacyCallViewForRoom_ResizeHandle {
            /* Need to use important to override element style attributes */
            /* set by re-resizable */
            width: 100% !important;

            display: -webkit-box;

            display: -ms-flexbox;

            display: flex;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;
        }

.mx_LegacyCallViewForRoom .mx_LegacyCallViewForRoom_ResizeWrapper:hover .mx_LegacyCallViewForRoom_ResizeHandle::after {
                content: "";
                border-radius: 4px;

                height: 4px;
                width: 100%;
                max-width: 64px;

                background-color: #ffffff;
            }

/*
Copyright 2021 The Matrix.org Foundation C.I.C.
Copyright 2021 - 2022 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LegacyCallViewHeader {
    height: 44px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 100%;
}

.mx_LegacyCallViewHeader.mx_LegacyCallViewHeader_pip {
        cursor: -webkit-grab;
        cursor: grab;
    }

.mx_LegacyCallViewHeader_text {
    font-size: 1.2rem;
    font-weight: bold;
    vertical-align: middle;
}

.mx_LegacyCallViewHeader_secondaryCallInfo::before {
        content: "·";
        margin-left: 6px;
        margin-right: 6px;
    }

.mx_LegacyCallViewHeader_controls {
    margin-left: auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 5px;
    gap: 5px;
}

.mx_LegacyCallViewHeader_button {
    display: inline-block;
    vertical-align: middle;
    cursor: pointer;
}

.mx_LegacyCallViewHeader_button::before {
        content: "";
        display: inline-block;
        height: 20px;
        width: 20px;
        vertical-align: middle;
        background-color: #a9b2bc;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;
    }

.mx_LegacyCallViewHeader_button.mx_LegacyCallViewHeader_button_fullscreen::before {
            -webkit-mask-image: url(../../img/element-icons/call/fullscreen.2e2c510.svg);
                    mask-image: url(../../img/element-icons/call/fullscreen.2e2c510.svg);
        }

.mx_LegacyCallViewHeader_button.mx_LegacyCallViewHeader_button_pin::before {
            -webkit-mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
                    mask-image: url(../../img/element-icons/room/pin-upright.92d1884.svg);
        }

.mx_LegacyCallViewHeader_button.mx_LegacyCallViewHeader_button_expand::before {
            -webkit-mask-image: url(../../img/element-icons/call/expand.f4c2ab7.svg);
                    mask-image: url(../../img/element-icons/call/expand.f4c2ab7.svg);
        }

.mx_LegacyCallViewHeader_callInfo {
    margin-left: 12px;
    margin-right: 16px;
    overflow: hidden;
}

.mx_LegacyCallViewHeader_roomName {
    font-weight: bold;
    font-size: 12px;
    line-height: normal;
    line-height: initial;
    height: 15px;

    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mx_LegacyCallView_secondaryCall_roomName {
    margin-left: 4px;
}

.mx_LegacyCallViewHeader_icon {
    display: inline-block;
    margin-right: 6px;
    height: 16px;
    width: 16px;
    vertical-align: middle;
}

.mx_LegacyCallViewHeader_icon::before {
        content: "";
        display: inline-block;
        vertical-align: top;

        height: 16px;
        width: 16px;
        background-color: #a9b2bc;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-position: center;
                mask-position: center;
        -webkit-mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
                mask-image: url(../../img/element-icons/call/voice-call.0692925.svg);
    }

/*
Copyright 2021 - 2022 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LegacyCallViewSidebar {
    position: absolute;
    right: 10px;

    width: 20%;
    height: 100%;
    overflow: auto;

    display: -webkit-box;

    display: -ms-flexbox;

    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: end;
        -ms-flex-align: end;
            align-items: flex-end;
    grid-gap: 12px;
    gap: 12px;
}

.mx_LegacyCallViewSidebar > .mx_VideoFeed {
        width: 100%;
        border-radius: 4px;
    }

.mx_LegacyCallViewSidebar > .mx_VideoFeed.mx_VideoFeed_voice {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-align: center;
                -ms-flex-align: center;
                    align-items: center;
            -webkit-box-pack: center;
                -ms-flex-pack: center;
                    justify-content: center;

            background-color: #21262c;
        }

.mx_LegacyCallViewSidebar.mx_LegacyCallViewSidebar_pipMode {
        top: 16px;
        bottom: unset;
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end;
        grid-gap: 4px;
        gap: 4px;
    }

/*
Copyright 2015, 2016, 2020, 2021 The Matrix.org Foundation C.I.C.
Copyright 2021 - 2022 Šimon Brandner <simon.bra.ag@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_VideoFeed {
    overflow: hidden;
    position: relative;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    border: transparent 2px solid;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    border-radius: 4px;
}

.mx_VideoFeed.mx_VideoFeed_secondary {
        position: absolute;
        right: 24px;
        bottom: 72px;
        width: 20%;
    }

.mx_VideoFeed.mx_VideoFeed_voice {
        background-color: #15191e;

        display: -webkit-box;

        display: -ms-flexbox;

        display: flex;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
    }

.mx_VideoFeed.mx_VideoFeed_voice:not(.mx_VideoFeed_primary) {
            aspect-ratio: 16 / 9;
        }

.mx_VideoFeed .mx_VideoFeed_video {
        height: 100%;
        width: 100%;
        border-radius: 4px;
        background-color: #000000;
    }

.mx_VideoFeed .mx_VideoFeed_video.mx_VideoFeed_video_mirror {
            -webkit-transform: scale(-1, 1);
                    transform: scale(-1, 1);
        }

.mx_VideoFeed .mx_VideoFeed_mic {
        position: absolute;
        left: 6px;
        bottom: 6px;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;

        width: 24px;
        height: 24px;

        background-color: rgba(0, 0, 0, 0.5); /* Same on both themes */
        border-radius: 100%;
    }

.mx_VideoFeed .mx_VideoFeed_mic::before {
            position: absolute;
            content: "";
            width: 17px;
            height: 17px;
            -webkit-mask-repeat: no-repeat;
                    mask-repeat: no-repeat;
            -webkit-mask-size: contain;
                    mask-size: contain;
            -webkit-mask-position: center;
                    mask-position: center;
            background-color: white; /* Same on both themes */
            border-radius: 7px;
        }

.mx_VideoFeed .mx_VideoFeed_mic.mx_VideoFeed_mic_muted::before {
            -webkit-mask-image: url(../../img/element-icons/Mic-off.43bef44.svg);
                    mask-image: url(../../img/element-icons/Mic-off.43bef44.svg);
        }

.mx_VideoFeed .mx_VideoFeed_mic.mx_VideoFeed_mic_unmuted::before {
            -webkit-mask-image: url(../../img/element-icons/mic.4c7bdcd.svg);
                    mask-image: url(../../img/element-icons/mic.4c7bdcd.svg);
        }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_LiveBadge {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    background-color: #ff5b55;
    border-radius: 2px;
    color: #ffffff;
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    font-size: 1.2rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    grid-gap: 4px;
    gap: 4px;
    padding: 2px 4px;
}

.mx_LiveBadge--grey {
    background-color: #6f7882;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_BroadcastPlaybackControlButton {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    background-color: #15191e;
    border-radius: 50%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    height: 32px;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    margin-bottom: 8px;
    width: 32px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_VoiceBroadcastControl {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    background-color: #15191e;
    border-radius: 50%;
    color: #a9b2bc;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 32px;
            flex: 0 0 32px;
    height: 32px;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    width: 32px;
}

.mx_VoiceBroadcastControl-recording {
    color: #ff5b55;
}

.mx_VoiceBroadcastControl-play .mx_Icon {
    left: 1px;
    position: relative;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_VoiceBroadcastHeader {
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 8px;
    gap: 8px;
    line-height: 20px;
    margin-bottom: 16px;
    min-width: 0;
}

.mx_VoiceBroadcastHeader_content {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    min-width: 0;
}

.mx_VoiceBroadcastHeader_room_wrapper {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 4px;
    gap: 4px;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
}

.mx_VoiceBroadcastHeader_room {
    font-size: 1.2rem;
    font-weight: 600;
    font-weight: var(--font-semi-bold);
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mx_VoiceBroadcastHeader_line {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #a9b2bc;
    font-size: 1.2rem;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 4px;
    gap: 4px;
}

.mx_VoiceBroadcastHeader_line .mx_Spinner {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 14px;
                flex: 0 0 14px;
        padding: 1px;
    }

.mx_VoiceBroadcastHeader_line span {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

.mx_VoiceBroadcastHeader_mic--clickable {
    cursor: pointer;
}

/*
Copyright 2023 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_VoiceBroadcastRecordingConnectionError {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #ff5b55;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 12px;
    gap: 12px;
}

.mx_VoiceBroadcastRecordingConnectionError svg path {
        fill: #ff5b55;
    }

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_RoomTile .mx_RoomTile_titleContainer .mx_RoomTile_subtitle.mx_RoomTile_subtitle--voice-broadcast {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    color: #ff5b55;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 4px;
    gap: 4px;
}

/*
Copyright 2022 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

.mx_VoiceBroadcastBody {
    background-color: #394049;
    border-radius: 8px;
    color: #a9b2bc;
    display: inline-block;
    font-size: 1.2rem;
    padding: 12px;
    width: 271px;
}

.mx_VoiceBroadcastBody .mx_Clock {
        line-height: 1;
    }

.mx_VoiceBroadcastBody--pip {
    background-color: #21262c;
    -webkit-box-shadow: 0 2px 8px 0 #0000004a;
            box-shadow: 0 2px 8px 0 #0000004a;
}

.mx_VoiceBroadcastBody--small {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 8px;
    gap: 8px;
    width: 192px;
}

.mx_VoiceBroadcastBody--small .mx_VoiceBroadcastHeader {
        margin-bottom: 0;
    }

.mx_VoiceBroadcastBody--small .mx_VoiceBroadcastControl {
        -ms-flex-item-align: center;
            align-self: center;
    }

.mx_VoiceBroadcastBody--small .mx_LiveBadge {
        margin-top: 4px;
    }

.mx_VoiceBroadcastBody_divider {
    background-color: #394049;
    border: 0;
    height: 1px;
    margin: 12px 0;
}

.mx_VoiceBroadcastBody_controls {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 32px;
    gap: 32px;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    margin-bottom: 8px;
}

.mx_VoiceBroadcastBody_timerow {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
}

.mx_AccessibleButton.mx_VoiceBroadcastBody_blockButton {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    grid-gap: 8px;
    gap: 8px;
}

.mx_VoiceBroadcastBody__small-close {
    right: 8px;
    position: absolute;
    top: 8px;
}

pre code.hljs{display:block;overflow-x:auto;padding:1em}

code.hljs{padding:3px 5px}

.hljs{color:#abb2bf;background:#282c34}

.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}

.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}

.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}

.hljs-literal{color:#56b6c2}

.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}

.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}

.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}

.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}

.hljs-emphasis{font-style:italic}

.hljs-strong{font-weight:700}

.hljs-link{text-decoration:underline}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9fZm9udC1zaXplcy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvdGhlbWVzL2xpZ2h0L2Nzcy9fcGF0aHMucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL3RoZW1lcy9saWdodC9jc3MvX2ZvbnRzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy90aGVtZXMvbGlnaHQvY3NzL19saWdodC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvdGhlbWVzL2RhcmsvY3NzL19kYXJrLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy90aGVtZXMvbGlnaHQvY3NzL19tb2RzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvX2NvbXBvbmVudHMucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9fYW5pbWF0aW9ucy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL19jb21tb24ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9fZm9udC13ZWlnaHRzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvX3NwYWNpbmcucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvbm9kZV9tb2R1bGVzL21hcGxpYnJlLWdsL2Rpc3QvbWFwbGlicmUtZ2wuY3NzIiwid2VicGFjazovLy88bm8gc291cmNlPiIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fQmVhY29uTGlzdEl0ZW0ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fQmVhY29uU3RhdHVzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9iZWFjb24vX0JlYWNvblN0YXR1c1Rvb2x0aXAucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fQmVhY29uVmlld0RpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvYmVhY29uL19EaWFsb2dPd25CZWFjb25TdGF0dXMucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fRGlhbG9nU2lkZWJhci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvYmVhY29uL19MZWZ0UGFuZWxMaXZlU2hhcmVXYXJuaW5nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9iZWFjb24vX0xpdmVUaW1lUmVtYWluaW5nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9iZWFjb24vX093bkJlYWNvblN0YXR1cy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvYmVhY29uL19Sb29tTGl2ZVNoYXJlV2FybmluZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvYmVhY29uL19TaGFyZUxhdGVzdExvY2F0aW9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9iZWFjb24vX1N0eWxlZExpdmVCZWFjb25JY29uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9jb250ZXh0X21lbnVzL19LZWJhYkNvbnRleHRNZW51LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL3BvbGxzL19Qb2xsRGV0YWlsSGVhZGVyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL3BvbGxzL19Qb2xsTGlzdEl0ZW0ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvcG9sbHMvX1BvbGxMaXN0SXRlbUVuZGVkLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9fQXBwUGVybWlzc2lvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvZWxlbWVudHMvX0ZpbHRlckRyb3Bkb3duLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9fRmlsdGVyVGFiR3JvdXAucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL19MZWFybk1vcmUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL19FbmFibGVMaXZlU2hhcmUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL19MaXZlRHVyYXRpb25Ecm9wZG93bi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvbG9jYXRpb24vX0xvY2F0aW9uU2hhcmVNZW51LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9sb2NhdGlvbi9fTWFwRXJyb3IucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL19NYXBGYWxsYmFjay5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvbG9jYXRpb24vX01hcmtlci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvbG9jYXRpb24vX1NoYXJlRGlhbG9nQnV0dG9ucy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvbG9jYXRpb24vX1NoYXJlVHlwZS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvbG9jYXRpb24vX1pvb21CdXR0b25zLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9tZXNzYWdlcy9fTUJlYWNvbkJvZHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL21lc3NhZ2VzL3NoYXJlZC9fTWVkaWFQcm9jZXNzaW5nRXJyb3IucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL3BpcHMvX1dpZGdldFBpcC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvcG9sbHMvX1BvbGxPcHRpb24ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL2RldmljZXMvX0N1cnJlbnREZXZpY2VTZWN0aW9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9kZXZpY2VzL19EZXZpY2VEZXRhaWxIZWFkaW5nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9kZXZpY2VzL19EZXZpY2VEZXRhaWxzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9kZXZpY2VzL19EZXZpY2VFeHBhbmREZXRhaWxzQnV0dG9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9kZXZpY2VzL19EZXZpY2VTZWN1cml0eUNhcmQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL2RldmljZXMvX0RldmljZVRpbGUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL2RldmljZXMvX0RldmljZVR5cGVJY29uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9kZXZpY2VzL19GaWx0ZXJlZERldmljZUxpc3QucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL2RldmljZXMvX0ZpbHRlcmVkRGV2aWNlTGlzdEhlYWRlci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvZGV2aWNlcy9fU2VjdXJpdHlSZWNvbW1lbmRhdGlvbnMucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL2RldmljZXMvX1NlbGVjdGFibGVEZXZpY2VUaWxlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9zaGFyZWQvX1NldHRpbmdzU3Vic2VjdGlvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3Mvc2hhcmVkL19TZXR0aW5nc1N1YnNlY3Rpb25IZWFkaW5nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG9uZW50cy92aWV3cy9zcGFjZXMvX1F1aWNrVGhlbWVTd2l0Y2hlci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvbmVudHMvdmlld3MvdHlwb2dyYXBoeS9fQ2FwdGlvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL2NvbXBvdW5kL19JY29uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3MvY29tcG91bmQvX1N1Y2Nlc3NEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19BdXRvSGlkZVNjcm9sbGJhci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX0F1dG9jb21wbGV0ZUlucHV0LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9fQmFja2Ryb3BQYW5lbC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX0NvbXBhdGliaWxpdHlQYWdlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9fQ29udGV4dHVhbE1lbnUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19FcnJvck1lc3NhZ2UucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19GaWxlRHJvcFRhcmdldC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX0ZpbGVQYW5lbC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX0dlbmVyaWNEcm9wZG93bk1lbnUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19HZW5lcmljRXJyb3JQYWdlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9fSG9tZVBhZ2UucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19MYXJnZUxvYWRlci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX0xlZnRQYW5lbC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX01haW5TcGxpdC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX01hdHJpeENoYXQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19NZXNzYWdlUGFuZWwucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19Ob25VcmdlbnRUb2FzdENvbnRhaW5lci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX05vdGlmaWNhdGlvblBhbmVsLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9fUXVpY2tTZXR0aW5nc0J1dHRvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX1JpZ2h0UGFuZWwucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19Sb29tU2VhcmNoLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9fUm9vbVN0YXR1c0Jhci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX1Jvb21WaWV3LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9fU2VhcmNoQm94LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9fU3BhY2VIaWVyYXJjaHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19TcGFjZVBhbmVsLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9fU3BhY2VSb29tVmlldy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX1NwbGFzaFBhZ2UucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19UYWJiZWRWaWV3LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9fVG9hc3RDb250YWluZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19VcGxvYWRCYXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL19Vc2VyTWVudS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3N0cnVjdHVyZXMvX1ZpZXdTb3VyY2UucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL2F1dGgvX0NvbXBsZXRlU2VjdXJpdHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL2F1dGgvX0xvZ2luLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvc3RydWN0dXJlcy9hdXRoL19SZWdpc3RyYXRpb24ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy9zdHJ1Y3R1cmVzL2F1dGgvX1NldHVwRW5jcnlwdGlvbkJvZHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9hdWRpb19tZXNzYWdlcy9fQXVkaW9QbGF5ZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9hdWRpb19tZXNzYWdlcy9fUGxheVBhdXNlQnV0dG9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvYXVkaW9fbWVzc2FnZXMvX1BsYXliYWNrQ29udGFpbmVyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvYXVkaW9fbWVzc2FnZXMvX1NlZWtCYXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9hdWRpb19tZXNzYWdlcy9fV2F2ZWZvcm0ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9hdXRoL19BdXRoQm9keS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2F1dGgvX0F1dGhGb290ZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9hdXRoL19BdXRoSGVhZGVyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvYXV0aC9fQXV0aEhlYWRlckxvZ28ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9hdXRoL19BdXRoUGFnZS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2F1dGgvX0NvbXBsZXRlU2VjdXJpdHlCb2R5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvYXV0aC9fQ291bnRyeURyb3Bkb3duLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvYXV0aC9fSW50ZXJhY3RpdmVBdXRoRW50cnlDb21wb25lbnRzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvYXV0aC9fTGFuZ3VhZ2VTZWxlY3Rvci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2F1dGgvX0xvZ2luV2l0aFFSLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvYXV0aC9fUGFzc3BocmFzZUZpZWxkLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvYXV0aC9fV2VsY29tZS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2F1dGgvX1hSUExXYWxsZXRMb2dpbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2F1dGgvX1hSUExBdXRoQ2FsbGJhY2sucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9hdmF0YXJzL19CYXNlQXZhdGFyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvYXZhdGFycy9fRGVjb3JhdGVkUm9vbUF2YXRhci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2F2YXRhcnMvX1dpZGdldEF2YXRhci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2JldGEvX0JldGFDYXJkLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvY29udGV4dF9tZW51cy9fRGV2aWNlQ29udGV4dE1lbnUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9jb250ZXh0X21lbnVzL19JY29uaXplZENvbnRleHRNZW51LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvY29udGV4dF9tZW51cy9fTGVnYWN5Q2FsbENvbnRleHRNZW51LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvY29udGV4dF9tZW51cy9fTWVzc2FnZUNvbnRleHRNZW51LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvY29udGV4dF9tZW51cy9fUm9vbUdlbmVyYWxDb250ZXh0TWVudS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2NvbnRleHRfbWVudXMvX1Jvb21Ob3RpZmljYXRpb25Db250ZXh0TWVudS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0FkZEV4aXN0aW5nVG9TcGFjZURpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0FuYWx5dGljc0xlYXJuTW9yZURpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0FwcERvd25sb2FkRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fQnVnUmVwb3J0RGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fQnVsa1JlZGFjdERpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0NoYW5nZWxvZ0RpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0NvbXBvdW5kRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fQ29uZmlybVNwYWNlVXNlckFjdGlvbkRpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0NvbmZpcm1Vc2VyQWN0aW9uRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fQ3JlYXRlUm9vbURpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0NyZWF0ZVN1YnNwYWNlRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fRGVhY3RpdmF0ZUFjY291bnREaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19EZXZ0b29sc0RpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0V4cG9ydERpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0ZlZWRiYWNrRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fRm9yd2FyZERpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0dlbmVyaWNGZWF0dXJlRmVlZGJhY2tEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19JbmNvbWluZ1Nhc0RpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0ludml0ZURpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX0pvaW5SdWxlRHJvcGRvd24ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19MZWF2ZVNwYWNlRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fTG9jYXRpb25WaWV3RGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fTWFuYWdlUmVzdHJpY3RlZEpvaW5SdWxlRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fTWVzc2FnZUVkaXRIaXN0b3J5RGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fTW9kYWxXaWRnZXREaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19Qb2xsQ3JlYXRlRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fUmVnaXN0cmF0aW9uRW1haWxQcm9tcHREaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19Sb29tU2V0dGluZ3NEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19Sb29tU2V0dGluZ3NEaWFsb2dCcmlkZ2VzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fUm9vbVVwZ3JhZGVEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19Sb29tVXBncmFkZVdhcm5pbmdEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19TZXJ2ZXJPZmZsaW5lRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fU2VydmVyUGlja2VyRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fU2V0RW1haWxEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19TZXR0aW5nc0RpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX1NoYXJlRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fU2xhc2hDb21tYW5kSGVscERpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3MvX1NwYWNlUHJlZmVyZW5jZXNEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19TcGFjZVNldHRpbmdzRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fU3BvdGxpZ2h0RGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fVGVybXNEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19VbnRydXN0ZWREZXZpY2VEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19VcGxvYWRDb25maXJtRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fVXNlclNldHRpbmdzRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9fVmVyaWZ5RU1haWxEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL19XaWRnZXRDYXBhYmlsaXRpZXNQcm9tcHREaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaWFsb2dzL3NlY3VyaXR5L19BY2Nlc3NTZWNyZXRTdG9yYWdlRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9zZWN1cml0eS9fQ3JlYXRlQ3Jvc3NTaWduaW5nRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9zZWN1cml0eS9fQ3JlYXRlS2V5QmFja3VwRGlhbG9nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZGlhbG9ncy9zZWN1cml0eS9fQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3Mvc2VjdXJpdHkvX0tleUJhY2t1cEZhaWxlZERpYWxvZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2RpYWxvZ3Mvc2VjdXJpdHkvX1Jlc3RvcmVLZXlCYWNrdXBEaWFsb2cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9kaXJlY3RvcnkvX05ldHdvcmtEcm9wZG93bi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19BY2Nlc3NpYmxlQnV0dG9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX0NvcHlhYmxlVGV4dC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19EZXNrdG9wQ2FwdHVyZXJTb3VyY2VQaWNrZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbGVtZW50cy9fRGlhbFBhZEJhY2tzcGFjZUJ1dHRvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19Ecm9wZG93bi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19FZGl0YWJsZUl0ZW1MaXN0LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX0Vycm9yQm91bmRhcnkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbGVtZW50cy9fRXh0ZXJuYWxMaW5rLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX0ZhY2VQaWxlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX0ZpZWxkLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX0ltYWdlVmlldy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19JbmZvVG9vbHRpcC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19JbmxpbmVTcGlubmVyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX0ludGVyYWN0aXZlVG9vbHRpcC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19JbnZpdGVSZWFzb24ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbGVtZW50cy9fTGFiZWxsZWRDaGVja2JveC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19NaW5pQXZhdGFyVXBsb2FkZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbGVtZW50cy9fUGlsbC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19Qb3dlclNlbGVjdG9yLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX1Byb2dyZXNzQmFyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX1FSQ29kZS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19SZXBseUNoYWluLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX1Jlc2l6ZUhhbmRsZS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19SaWNoVGV4dC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19Sb29tQWxpYXNGaWVsZC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19TU09CdXR0b25zLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX1NlYXJjaFdhcm5pbmcucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbGVtZW50cy9fU2VydmVyUGlja2VyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX1NldHRpbmdzRmxhZy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19TbGlkZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbGVtZW50cy9fU3Bpbm5lci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19TdHlsZWRDaGVja2JveC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19TdHlsZWRSYWRpb0J1dHRvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19TeW50YXhIaWdobGlnaHQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbGVtZW50cy9fVGFnQ29tcG9zZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbGVtZW50cy9fVGV4dFdpdGhUb29sdGlwLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX1RvZ2dsZVN3aXRjaC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19Ub29sdGlwLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX1Rvb2x0aXBCdXR0b24ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbGVtZW50cy9fVXNlQ2FzZVNlbGVjdGlvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL2VsZW1lbnRzL19Vc2VDYXNlU2VsZWN0aW9uQnV0dG9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvZWxlbWVudHMvX1ZhbGlkYXRpb24ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9lbW9qaXBpY2tlci9fRW1vamlQaWNrZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9sb2NhdGlvbi9fTG9jYXRpb25QaWNrZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fQ2FsbEV2ZW50LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX0NyZWF0ZUV2ZW50LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX0RhdGVTZXBhcmF0b3IucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fRGVjcnlwdGlvbkZhaWx1cmVCb2R5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX0Rpc2FtYmlndWF0ZWRQcm9maWxlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX0V2ZW50VGlsZUJ1YmJsZS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL21lc3NhZ2VzL19IaWRkZW5Cb2R5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX0p1bXBUb0RhdGVQaWNrZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fTGVnYWN5Q2FsbEV2ZW50LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX01FbW90ZUJvZHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fTUZpbGVCb2R5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX01JbWFnZUJvZHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fTUltYWdlUmVwbHlCb2R5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX01KaXRzaVdpZGdldEV2ZW50LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX01Mb2NhdGlvbkJvZHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fTU5vdGljZUJvZHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fTVBvbGxCb2R5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX01Qb2xsRW5kQm9keS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL21lc3NhZ2VzL19NU3RpY2tlckJvZHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fTVRleHRCb2R5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX01WaWRlb0JvZHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fTWVkaWFCb2R5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX01lc3NhZ2VBY3Rpb25CYXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fTWVzc2FnZVRpbWVzdGFtcC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL21lc3NhZ2VzL19Nam9sbmlyQm9keS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL21lc3NhZ2VzL19SZWFjdGlvbnNSb3cucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fUmVhY3Rpb25zUm93QnV0dG9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX1JlZGFjdGVkQm9keS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL21lc3NhZ2VzL19Sb29tQXZhdGFyRXZlbnQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9tZXNzYWdlcy9fVGV4dHVhbEV2ZW50LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX1Vua25vd25Cb2R5LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvbWVzc2FnZXMvX1ZpZXdTb3VyY2VFdmVudC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL21lc3NhZ2VzL19jb21tb25fQ3J5cHRvRXZlbnQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9wb2xscy9wb2xsSGlzdG9yeS9fUG9sbEhpc3RvcnkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9wb2xscy9wb2xsSGlzdG9yeS9fUG9sbEhpc3RvcnlMaXN0LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvcmlnaHRfcGFuZWwvX0Jhc2VDYXJkLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvcmlnaHRfcGFuZWwvX0VuY3J5cHRpb25JbmZvLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvcmlnaHRfcGFuZWwvX1Bpbm5lZE1lc3NhZ2VzQ2FyZC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3JpZ2h0X3BhbmVsL19Sb29tU3VtbWFyeUNhcmQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yaWdodF9wYW5lbC9fVGhyZWFkUGFuZWwucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yaWdodF9wYW5lbC9fVGltZWxpbmVDYXJkLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvcmlnaHRfcGFuZWwvX1VzZXJJbmZvLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvcmlnaHRfcGFuZWwvX1ZlcmlmaWNhdGlvblBhbmVsLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvcmlnaHRfcGFuZWwvX1dpZGdldENhcmQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tX3NldHRpbmdzL19BbGlhc1NldHRpbmdzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX0FwcHNEcmF3ZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fQXV0b2NvbXBsZXRlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX0F1eFBhbmVsLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX0Jhc2ljTWVzc2FnZUNvbXBvc2VyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX0RlY3J5cHRpb25GYWlsdXJlQmFyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX0UyRUljb24ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fRWRpdE1lc3NhZ2VDb21wb3Nlci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19FbW9qaUJ1dHRvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19FbnRpdHlUaWxlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX0V2ZW50QnViYmxlVGlsZS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19FdmVudFRpbGUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fSGlzdG9yeVRpbGUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fSVJDTGF5b3V0LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX0p1bXBUb0JvdHRvbUJ1dHRvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19MaW5rUHJldmlld0dyb3VwLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX0xpbmtQcmV2aWV3V2lkZ2V0LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX0xpdmVDb250ZW50U3VtbWFyeS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19NZW1iZXJJbmZvLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX01lbWJlckxpc3QucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fTWVzc2FnZUNvbXBvc2VyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX01lc3NhZ2VDb21wb3NlckZvcm1hdEJhci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19OZXdSb29tSW50cm8ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fTm90aWZpY2F0aW9uQmFkZ2UucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fUGlubmVkRXZlbnRUaWxlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX1ByZXNlbmNlTGFiZWwucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fUmVhZFJlY2VpcHRHcm91cC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19SZWNlbnRseVZpZXdlZEJ1dHRvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19SZXBseVByZXZpZXcucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fUmVwbHlUaWxlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX1Jvb21CcmVhZGNydW1icy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19Sb29tQ2FsbEJhbm5lci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19Sb29tSGVhZGVyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX1Jvb21JbmZvTGluZS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19Sb29tTGlzdC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19Sb29tTGlzdEhlYWRlci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19Sb29tUHJldmlld0Jhci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19Sb29tUHJldmlld0NhcmQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fUm9vbVN1Ymxpc3QucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fUm9vbVRpbGUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fUm9vbVVwZ3JhZGVXYXJuaW5nQmFyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX1NlYXJjaEJhci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL19TZW5kTWVzc2FnZUNvbXBvc2VyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX1N0aWNrZXJzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvX1RocmVhZFN1bW1hcnkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fVG9wVW5yZWFkTWVzc2FnZXNCYXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fVm9pY2VSZWNvcmRDb21wb3NlclRpbGUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy9fV2hvSXNUeXBpbmdUaWxlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvcm9vbXMvd3lzaXd5Z19jb21wb3Nlci9fRWRpdFd5c2l3eWdDb21wb3Nlci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL3d5c2l3eWdfY29tcG9zZXIvX1NlbmRXeXNpd3lnQ29tcG9zZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy93eXNpd3lnX2NvbXBvc2VyL2NvbXBvbmVudHMvX0VkaXRvci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3Jvb21zL3d5c2l3eWdfY29tcG9zZXIvY29tcG9uZW50cy9fRm9ybWF0dGluZ0J1dHRvbnMucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9yb29tcy93eXNpd3lnX2NvbXBvc2VyL2NvbXBvbmVudHMvX0xpbmtNb2RhbC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3NldHRpbmdzL19BdmF0YXJTZXR0aW5nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvX0Nyb3NzU2lnbmluZ1BhbmVsLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvX0NyeXB0b2dyYXBoeVBhbmVsLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvX0ZvbnRTY2FsaW5nUGFuZWwucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy9fSW1hZ2VTaXplUGFuZWwucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy9fSW50ZWdyYXRpb25NYW5hZ2VyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvX0pvaW5SdWxlU2V0dGluZ3MucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy9fS2V5Ym9hcmRTaG9ydGN1dC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3NldHRpbmdzL19MYXlvdXRTd2l0Y2hlci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3NldHRpbmdzL19Ob3RpZmljYXRpb25zLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvX1Bob25lTnVtYmVycy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3NldHRpbmdzL19Qcm9maWxlU2V0dGluZ3MucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy9fU2VjdXJlQmFja3VwUGFuZWwucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy9fU2V0SWRTZXJ2ZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy9fU2V0SW50ZWdyYXRpb25NYW5hZ2VyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvX1NldHRpbmdzRmllbGRzZXQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy9fU3BlbGxDaGVja0xhbmd1YWdlcy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3NldHRpbmdzL19UaGVtZUNob2ljZVBhbmVsLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvX1VwZGF0ZUNoZWNrQnV0dG9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvdGFicy9fU2V0dGluZ3NTZWN0aW9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvdGFicy9fU2V0dGluZ3NUYWIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy90YWJzL3Jvb20vX05vdGlmaWNhdGlvblNldHRpbmdzVGFiLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvdGFicy9yb29tL19Sb2xlc1Jvb21TZXR0aW5nc1RhYi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3NldHRpbmdzL3RhYnMvcm9vbS9fU2VjdXJpdHlSb29tU2V0dGluZ3NUYWIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy90YWJzL3VzZXIvX0FwcGVhcmFuY2VVc2VyU2V0dGluZ3NUYWIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy90YWJzL3VzZXIvX0dlbmVyYWxVc2VyU2V0dGluZ3NUYWIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy90YWJzL3VzZXIvX0hlbHBVc2VyU2V0dGluZ3NUYWIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zZXR0aW5ncy90YWJzL3VzZXIvX0tleWJvYXJkVXNlclNldHRpbmdzVGFiLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvdGFicy91c2VyL19Nam9sbmlyVXNlclNldHRpbmdzVGFiLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc2V0dGluZ3MvdGFicy91c2VyL19TZWN1cml0eVVzZXJTZXR0aW5nc1RhYi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3NldHRpbmdzL3RhYnMvdXNlci9fU2lkZWJhclVzZXJTZXR0aW5nc1RhYi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3NwYWNlcy9fU3BhY2VCYXNpY1NldHRpbmdzLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc3BhY2VzL19TcGFjZUNoaWxkcmVuUGlja2VyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvc3BhY2VzL19TcGFjZUNyZWF0ZU1lbnUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy9zcGFjZXMvX1NwYWNlUHVibGljU2hhcmUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy90ZXJtcy9fSW5saW5lVGVybXNBZ3JlZW1lbnQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy90b2FzdHMvX0FuYWx5dGljc1RvYXN0LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvdG9hc3RzL19JbmNvbWluZ0NhbGxUb2FzdC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3RvYXN0cy9fSW5jb21pbmdMZWdhY3lDYWxsVG9hc3QucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy90b2FzdHMvX05vblVyZ2VudEVjaG9GYWlsdXJlVG9hc3QucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy90eXBvZ3JhcGh5L19IZWFkaW5nLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvdXNlci1vbmJvYXJkaW5nL19Vc2VyT25ib2FyZGluZ0J1dHRvbi5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3VzZXItb25ib2FyZGluZy9fVXNlck9uYm9hcmRpbmdIZWFkZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy91c2VyLW9uYm9hcmRpbmcvX1VzZXJPbmJvYXJkaW5nTGlzdC5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3VzZXItb25ib2FyZGluZy9fVXNlck9uYm9hcmRpbmdQYWdlLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3MvdXNlci1vbmJvYXJkaW5nL19Vc2VyT25ib2FyZGluZ1Rhc2sucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy92ZXJpZmljYXRpb24vX1ZlcmlmaWNhdGlvblNob3dTYXMucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy92b2lwL0xlZ2FjeUNhbGxWaWV3L19MZWdhY3lDYWxsVmlld0J1dHRvbnMucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy92b2lwL19DYWxsRHVyYXRpb24ucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy92b2lwL19DYWxsVmlldy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3ZvaXAvX0RpYWxQYWQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy92b2lwL19EaWFsUGFkQ29udGV4dE1lbnUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy92b2lwL19EaWFsUGFkTW9kYWwucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy92b2lwL19MZWdhY3lDYWxsUHJldmlldy5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZpZXdzL3ZvaXAvX0xlZ2FjeUNhbGxWaWV3LnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvdm9pcC9fTGVnYWN5Q2FsbFZpZXdGb3JSb29tLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdmlld3Mvdm9pcC9fTGVnYWN5Q2FsbFZpZXdIZWFkZXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy92b2lwL19MZWdhY3lDYWxsVmlld1NpZGViYXIucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92aWV3cy92b2lwL19WaWRlb0ZlZWQucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92b2ljZS1icm9hZGNhc3QvYXRvbXMvX0xpdmVCYWRnZS5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZvaWNlLWJyb2FkY2FzdC9hdG9tcy9fUGxheWJhY2tDb250cm9sQnV0dG9uLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdm9pY2UtYnJvYWRjYXN0L2F0b21zL19Wb2ljZUJyb2FkY2FzdENvbnRyb2wucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92b2ljZS1icm9hZGNhc3QvYXRvbXMvX1ZvaWNlQnJvYWRjYXN0SGVhZGVyLnBjc3MiLCJ3ZWJwYWNrOi8vLy4uL1RleHRSUC1NYXRyaXgtUmVhY3QtU0RLL3Jlcy9jc3Mvdm9pY2UtYnJvYWRjYXN0L2F0b21zL19Wb2ljZUJyb2FkY2FzdFJlY29yZGluZ0Nvbm5lY3Rpb25FcnJvci5wY3NzIiwid2VicGFjazovLy8uLi9UZXh0UlAtTWF0cml4LVJlYWN0LVNESy9yZXMvY3NzL3ZvaWNlLWJyb2FkY2FzdC9hdG9tcy9fVm9pY2VCcm9hZGNhc3RSb29tU3VidGl0bGUucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvcmVzL2Nzcy92b2ljZS1icm9hZGNhc3QvbW9sZWN1bGVzL19Wb2ljZUJyb2FkY2FzdEJvZHkucGNzcyIsIndlYnBhY2s6Ly8vLi4vVGV4dFJQLU1hdHJpeC1SZWFjdC1TREsvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9zdHlsZXMvYXRvbS1vbmUtZGFyay5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0NBY0M7O0FBRUQ7Ozs7Ozs7OztFQVNFOztBQ3pCRixvRkFBb0Y7O0FBQ3BGLGtFQUFrRTs7QUNEbEU7RUFDRTs7QUFFRjs7OzttREFJbUQ7O0FBS25EO0lBQ0ksb0JBQW9CO0lBQ3BCLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCOzhCQUFtQztJQUNuQzs4REFDc0U7QUFDMUU7O0FBQ0E7SUFDSSxvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEI7OEJBQW1DO0lBQ25DOzhEQUNxRTtBQUN6RTs7QUFFQTtJQUNJLG9CQUFvQjtJQUNwQixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQjs4QkFBbUM7SUFDbkM7OERBQ3FFO0FBQ3pFOztBQUNBO0lBQ0ksb0JBQW9CO0lBQ3BCLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xC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Qix1QkFBdUI7SUFDdkIsa0JBQXlCO0FBQzdCOztBQUVBO0lBQ0ksb0JBQWE7SUFBYixvQkFBYTtJQUFiLGFBQWE7SUFDYix5QkFBOEI7UUFBOUIsc0JBQThCO1lBQTlCLDhCQUE4QjtBQUNsQzs7QUFFQTtJQUNJLG9CQUFhO0lBQWIsb0JBQWE7SUFBYixhQUFhO0lBQ2IsYUFBZTtJQUFmLFFBQWU7QUFDbkI7O0FBRUE7SUFDSSxVQUFVO0lBQ1Ysa0JBQWtCO0lBQ2xCLFFBQVE7QUFDWjs7QUNsRkEsY0FBYyxhQUFhLENBQUMsZUFBZSxDQUFDLFdBQVc7O0FBQUMsVUFBVSxlQUFlOztBQUFDLE1BQU0sYUFBYSxDQUFDLGtCQUFrQjs7QUFBQywwQkFBMEIsYUFBYSxDQUFDLGlCQUFpQjs7QUFBQyx5Q0FBeUMsYUFBYTs7QUFBQyx1RUFBdUUsYUFBYTs7QUFBQyxjQUFjLGFBQWE7O0FBQUMsaUZBQWlGLGFBQWE7O0FBQUMseUlBQXlJLGFBQWE7O0FBQUMsOEVBQThFLGFBQWE7O0FBQUMsMERBQTBELGFBQWE7O0FBQUMsZUFBZSxpQkFBaUI7O0FBQUMsYUFBYSxlQUFlOztBQUFDLFdBQVcseUJBQXlCIiwiZmlsZSI6ImJ1bmRsZXMvZWIzNDljZTNmOTY0YmM2ZDJhYjkvdGhlbWUtZGFyay5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vKlxuICogU0NTUyB2YXJpYWJsZXMgZGVmaW5pbmcgYSByYW5nZSBvZiBmb250IHNpemVzLlxuICpcbiAqIFRoZXNlIGFyZSBkZWZpbmVkIGluIGByZW1gIHNvIHRoYXQgdGhleSBzY2FsZSB3aXRoIHRoZSBgZm9udC1zaXplYCBvZiB0aGUgcm9vdCBlbGVtZW50ICh3aGljaCBpcyBhZGp1c3RhYmxlIHZpYSB0aGVcbiAqIFwiRm9udCBzaXplXCIgc2V0dGluZykuIFRoZXkgZXhpc3QgdG8gbWFrZSB0aGUgam9iIG9mIGNvbnZlcnRpbmcgZGVzaWducyAod2hpY2ggdGVuZCB0byBiZSBiYXNlZCBpbiBwaXhlbHMpIGludG8gQ1NTXG4gKiBlYXNpZXIuXG4gKlxuICogVGhhdCBtZWFucyB0aGF0LCBzbGlnaHRseSBjb25mdXNpbmdseSwgYCRmb250LTEwcHhgIGlzIG9ubHkgKmFjdHVhbGx5KiAxMHB4IGF0IHRoZSBkZWZhdWx0IGZvbnQgc2l6ZTogYXQgYSBiYXNlXG4gKiBgZm9udC1zaXplYCBvZiAxNSwgaXQgaXMgYWN0dWFsbHkgMTVweC5cbiAqL1xuJGZvbnQtMXB4OiAwLjFyZW07XG4kZm9udC0xLTVweDogMC4xNXJlbTtcbiRmb250LTJweDogMC4ycmVtO1xuJGZvbnQtM3B4OiAwLjNyZW07XG4kZm9udC00cHg6IDAuNHJlbTtcbiRmb250LTVweDogMC41cmVtO1xuJGZvbnQtNnB4OiAwLjZyZW07XG4kZm9udC03cHg6IDAuN3JlbTtcbiRmb250LThweDogMC44cmVtO1xuJGZvbnQtOXB4OiAwLjlyZW07XG4kZm9udC0xMHB4OiAxcmVtO1xuJGZvbnQtMTAtNHB4OiAxLjA0cmVtO1xuJGZvbnQtMTFweDogMS4xcmVtO1xuJGZvbnQtMTJweDogMS4ycmVtO1xuJGZvbnQtMTNweDogMS4zcmVtO1xuJGZvbnQtMTRweDogMS40cmVtO1xuJGZvbnQtMTVweDogMS41cmVtO1xuJGZvbnQtMTZweDogMS42cmVtO1xuJGZvbnQtMTdweDogMS43cmVtO1xuJGZvbnQtMThweDogMS44cmVtO1xuJGZvbnQtMTlweDogMS45cmVtO1xuJGZvbnQtMjBweDogMnJlbTtcbiRmb250LTIxcHg6IDIuMXJlbTtcbiRmb250LTIycHg6IDIuMnJlbTtcbiRmb250LTIzcHg6IDIuM3JlbTtcbiRmb250LTI0cHg6IDIuNHJlbTtcbiRmb250LTI1cHg6IDIuNXJlbTtcbiRmb250LTI2cHg6IDIuNnJlbTtcbiRmb250LTI3cHg6IDIuN3JlbTtcbiRmb250LTI4cHg6IDIuOHJlbTtcbiRmb250LTI5cHg6IDIuOXJlbTtcbiRmb250LTMwcHg6IDNyZW07XG4kZm9udC0zMXB4OiAzLjFyZW07XG4kZm9udC0zMnB4OiAzLjJyZW07XG4kZm9udC0zM3B4OiAzLjNyZW07XG4kZm9udC0zNHB4OiAzLjRyZW07XG4kZm9udC0zNXB4OiAzLjVyZW07XG4kZm9udC0zNnB4OiAzLjZyZW07XG4kZm9udC0zN3B4OiAzLjdyZW07XG4kZm9udC0zOHB4OiAzLjhyZW07XG4kZm9udC0zOXB4OiAzLjlyZW07XG4kZm9udC00MHB4OiA0cmVtO1xuJGZvbnQtNDFweDogNC4xcmVtO1xuJGZvbnQtNDJweDogNC4ycmVtO1xuJGZvbnQtNDNweDogNC4zcmVtO1xuJGZvbnQtNDRweDogNC40cmVtO1xuJGZvbnQtNDVweDogNC41cmVtO1xuJGZvbnQtNDZweDogNC42cmVtO1xuJGZvbnQtNDdweDogNC43cmVtO1xuJGZvbnQtNDhweDogNC44cmVtO1xuJGZvbnQtNDlweDogNC45cmVtO1xuJGZvbnQtNTBweDogNXJlbTtcbiRmb250LTUxcHg6IDUuMXJlbTtcbiRmb250LTUycHg6IDUuMnJlbTtcbiRmb250LTc4cHg6IDcuOHJlbTtcbiRmb250LTg4cHg6IDguOHJlbTtcbiRmb250LTQwMHB4OiA0MHJlbTtcbiIsIi8qIFBhdGggZnJvbSByb290IFNDU1MgZmlsZSAoc3VjaCBhcyBgbGlnaHQucGNzc2ApIHRvIGByZXNgIGRpciBpbiB0aGUgc291cmNlIHRyZWUgKi9cbi8qIFRoaXMgdmFsdWUgaXMgb3ZlcnJpZGRlbiBieSBleHRlcm5hbCB0aGVtZXMgaW4gYGVsZW1lbnQtd2ViYC4gKi9cbiRyZXM6IC4uLy4uLy4uO1xuIiwiLyogdGhlICdzcmMnIGxpbmtzIGFyZSByZWxhdGl2ZSB0byB0aGUgYnVuZGxlLmNzcywgd2hpY2ggaXMgaW4gYSBzdWJkaXJlY3RvcnkuXG4gKi9cblxuLyogSW50ZXIgdW5leHBlY3RlZGx5IGNvbnRhaW5zIHZhcmlvdXMgY29kZXBvaW50cyB3aGljaCBjb2xsaWRlIHdpdGggZW1vamksIGV2ZW5cbiAgIHdoZW4gdmFyaWF0aW9uLTE2IGlzIGFwcGxpZWQgdG8gcmVxdWVzdCB0aGUgZW1vamkgdmFyaWFudC4gIEZyb20gZXllYmFsbGluZ1xuICAgdGhlIGVtb2ppIHBpY2tlciwgdGhlc2UgYXJlOiAyMGUzLCAyM2NmLCAyNGMyLCAyNWEwLTI1YzEsIDI2NjUsIDI3NjQsIDJiMDYsIDJiMWMuXG4gICBUaGVyZWZvcmUgd2UgZGVmaW5lIGEgdW5pY29kZS1yYW5nZSB0byBsb2FkIHdoaWNoIGV4Y2x1ZGVzIHRoZSBnbHlwaHNcbiAgICh0byBhdm9pZCBoYXZpbmcgdG8gbWFpbnRhaW4gYSBmb3JrIG9mIEludGVyKS4gKi9cblxuJGludGVyLXVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0yMGUyLCBVKzIwZTQtMjNjZSwgVSsyM2QwLTI0YzEsIFUrMjRjMy0yNTlmLCBVKzI1YzItMjY2NCwgVSsyNjY2LTI3NjMsIFUrMjc2NS0yYjA1LFxuICAgIFUrMmIwNy0yYjFiLCBVKzJiMWQtMTBGRkZGO1xuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogXCJJbnRlclwiO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB1bmljb2RlLXJhbmdlOiAkaW50ZXItdW5pY29kZS1yYW5nZTtcbiAgICBzcmM6IHVybChcIiQocmVzKS9mb250cy9JbnRlci9JbnRlci1SZWd1bGFyLndvZmYyP3Y9My4xOFwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSxcbiAgICAgICAgdXJsKFwiJChyZXMpL2ZvbnRzL0ludGVyL0ludGVyLVJlZ3VsYXIud29mZj92PTMuMThcIikgZm9ybWF0KFwid29mZlwiKTtcbn1cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiBcIkludGVyXCI7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIHVuaWNvZGUtcmFuZ2U6ICRpbnRlci11bmljb2RlLXJhbmdlO1xuICAgIHNyYzogdXJsKFwiJChyZXMpL2ZvbnRzL0ludGVyL0ludGVyLUl0YWxpYy53b2ZmMj92PTMuMThcIikgZm9ybWF0KFwid29mZjJcIiksXG4gICAgICAgIHVybChcIiQocmVzKS9mb250cy9JbnRlci9JbnRlci1JdGFsaWMud29mZj92PTMuMThcIikgZm9ybWF0KFwid29mZlwiKTtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6IFwiSW50ZXJcIjtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgdW5pY29kZS1yYW5nZTogJGludGVyLXVuaWNvZGUtcmFuZ2U7XG4gICAgc3JjOiB1cmwoXCIkKHJlcykvZm9udHMvSW50ZXIvSW50ZXItTWVkaXVtLndvZmYyP3Y9My4xOFwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSxcbiAgICAgICAgdXJsKFwiJChyZXMpL2ZvbnRzL0ludGVyL0ludGVyLU1lZGl1bS53b2ZmP3Y9My4xOFwiKSBmb3JtYXQoXCJ3b2ZmXCIpO1xufVxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6IFwiSW50ZXJcIjtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgdW5pY29kZS1yYW5nZTogJGludGVyLXVuaWNvZGUtcmFuZ2U7XG4gICAgc3JjOiB1cmwoXCIkKHJlcykvZm9udHMvSW50ZXIvSW50ZXItTWVkaXVtSXRhbGljLndvZmYyP3Y9My4xOFwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSxcbiAgICAgICAgdXJsKFwiJChyZXMpL2ZvbnRzL0ludGVyL0ludGVyLU1lZGl1bUl0YWxpYy53b2ZmP3Y9My4xOFwiKSBmb3JtYXQoXCJ3b2ZmXCIpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogXCJJbnRlclwiO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB1bmljb2RlLXJhbmdlOiAkaW50ZXItdW5pY29kZS1yYW5nZTtcbiAgICBzcmM6IHVybChcIiQocmVzKS9mb250cy9JbnRlci9JbnRlci1TZW1pQm9sZC53b2ZmMj92PTMuMThcIikgZm9ybWF0KFwid29mZjJcIiksXG4gICAgICAgIHVybChcIiQocmVzKS9mb250cy9JbnRlci9JbnRlci1TZW1pQm9sZC53b2ZmP3Y9My4xOFwiKSBmb3JtYXQoXCJ3b2ZmXCIpO1xufVxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6IFwiSW50ZXJcIjtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgdW5pY29kZS1yYW5nZTogJGludGVyLXVuaWNvZGUtcmFuZ2U7XG4gICAgc3JjOiB1cmwoXCIkKHJlcykvZm9udHMvSW50ZXIvSW50ZXItU2VtaUJvbGRJdGFsaWMud29mZjI/dj0zLjE4XCIpIGZvcm1hdChcIndvZmYyXCIpLFxuICAgICAgICB1cmwoXCIkKHJlcykvZm9udHMvSW50ZXIvSW50ZXItU2VtaUJvbGRJdGFsaWMud29mZj92PTMuMThcIikgZm9ybWF0KFwid29mZlwiKTtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6IFwiSW50ZXJcIjtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgdW5pY29kZS1yYW5nZTogJGludGVyLXVuaWNvZGUtcmFuZ2U7XG4gICAgc3JjOiB1cmwoXCIkKHJlcykvZm9udHMvSW50ZXIvSW50ZXItQm9sZC53b2ZmMj92PTMuMThcIikgZm9ybWF0KFwid29mZjJcIiksXG4gICAgICAgIHVybChcIiQocmVzKS9mb250cy9JbnRlci9JbnRlci1Cb2xkLndvZmY/dj0zLjE4XCIpIGZvcm1hdChcIndvZmZcIik7XG59XG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogXCJJbnRlclwiO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICB1bmljb2RlLXJhbmdlOiAkaW50ZXItdW5pY29kZS1yYW5nZTtcbiAgICBzcmM6IHVybChcIiQocmVzKS9mb250cy9JbnRlci9JbnRlci1Cb2xkSXRhbGljLndvZmYyP3Y9My4xOFwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSxcbiAgICAgICAgdXJsKFwiJChyZXMpL2ZvbnRzL0ludGVyL0ludGVyLUJvbGRJdGFsaWMud29mZj92PTMuMThcIikgZm9ybWF0KFwid29mZlwiKTtcbn1cblxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogXCJJbmNvbnNvbGF0YVwiO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIHNyYzogbG9jYWwoXCJJbmNvbnNvbGF0YSBSZWd1bGFyXCIpLCBsb2NhbChcIkluY29uc29sYXRhLVJlZ3VsYXJcIiksXG4gICAgICAgIHVybChcIiQocmVzKS9mb250cy9JbmNvbnNvbGF0YS9RbGRLTlRoTHFSd0gtT0oxVUhqbEtHbFg1cWhFeGZId05KVS53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xufVxuLyogbGF0aW4gKi9cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiBcIkluY29uc29sYXRhXCI7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIHNyYzogbG9jYWwoXCJJbmNvbnNvbGF0YSBSZWd1bGFyXCIpLCBsb2NhbChcIkluY29uc29sYXRhLVJlZ3VsYXJcIiksXG4gICAgICAgIHVybChcIiQocmVzKS9mb250cy9JbmNvbnNvbGF0YS9RbGRLTlRoTHFSd0gtT0oxVUhqbEtHbFo1cWhFeGZIdy53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQyxcbiAgICAgICAgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogXCJJbmNvbnNvbGF0YVwiO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICBzcmM6IGxvY2FsKFwiSW5jb25zb2xhdGEgQm9sZFwiKSwgbG9jYWwoXCJJbmNvbnNvbGF0YS1Cb2xkXCIpLFxuICAgICAgICB1cmwoXCIkKHJlcykvZm9udHMvSW5jb25zb2xhdGEvUWxkWE5UaExxUndILU9KMVVIamxLR0hpdzcxbjVfemFEcHdtODBFLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6IFwiSW5jb25zb2xhdGFcIjtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgc3JjOiBsb2NhbChcIkluY29uc29sYXRhIEJvbGRcIiksIGxvY2FsKFwiSW5jb25zb2xhdGEtQm9sZFwiKSxcbiAgICAgICAgdXJsKFwiJChyZXMpL2ZvbnRzL0luY29uc29sYXRhL1FsZFhOVGhMcVJ3SC1PSjFVSGpsS0dIaXc3MXA1X3phRHB3bS53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcbiAgICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQyxcbiAgICAgICAgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuIiwiLyogTnVuaXRvIGFuZCBJbnRlciBsYWNrcyBjb21iaW5pbmcgZGlhY3JpdGljcywgc28gdGhlc2Ugd2lsbCBmYWxsIHRocm91Z2hcbiAgIHRvIHRoZSBuZXh0IGZvbnQuIEhlbGV2ZXRpY2EncyBkaWFjcml0aWNzIHNvbWV0aW1lcyBkbyBub3QgY29tYmluZVxuICAgbmljZWx5IChvbiBPU1gsIGF0IGxlYXN0KSBhbmQgcmVzdWx0IGluIGEgaHVnZSBob3Jpem9udGFsIG1lc3MuXG4gICBBcmlhbCBlbXBpcmljYWxseSBnZXRzIGl0IHJpZ2h0LCBoZW5jZSBwcmlvcml0aXNpbmcgQXJpYWwgaGVyZS4gKi9cbi8qIFdlIGZhbGwgdGhyb3VnaCB0byBUd2Vtb2ppIGZvciBlbW9qaSByYXRoZXIgdGhhbiBmYWxsaW5nIHRocm91Z2hcbiAgIHRvIG5hdGl2ZSBFbW9qaSBmb250cyAoaWYgYW55KSB0byBlbnN1cmUgY3Jvc3MtYnJvd3NlciBjb25zaXN0ZW5jeSAqL1xuLyogTm90byBDb2xvciBFbW9qaSBjb250YWlucyBkaWdpdHMsIGluIGZpeGVkLXdpZHRoLCB0aGVyZWZvcmUgY2F1c2luZ1xuICAgZGlnaXRzIGluIGZsb3dlZCB0ZXh0IHRvIHN0YW5kIG91dC5cbiAgIFRPRE86IENvbnNpZGVyIHB1dHRpbmcgYWxsIGVtb2ppIGZvbnRzIHRvIHRoZSBlbmQgcmF0aGVyIHRoYW4gdGhlIGZyb250LiAqL1xuJGZvbnQtZmFtaWx5OiBcIkludGVyXCIsIFwiVHdlbW9qaVwiLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJBcmlhbFwiLCBcIkhlbHZldGljYVwiLCBzYW5zLXNlcmlmLFxuICAgIFwiTm90byBDb2xvciBFbW9qaVwiO1xuXG4kbW9ub3NwYWNlLWZvbnQtZmFtaWx5OiBcIkluY29uc29sYXRhXCIsIFwiVHdlbW9qaVwiLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJDb3VyaWVyXCIsIG1vbm9zcGFjZSxcbiAgICBcIk5vdG8gQ29sb3IgRW1vamlcIjtcblxuLyogQ29sb3JzIGZyb20gRmlnbWEgQ29tcG91bmQgaHR0cHM6Ly93d3cuZmlnbWEuY29tL2ZpbGUvWDRYVEg5aVMyS0dKMndGS0Rxa3llZC9Db21wb3VuZD9ub2RlLWlkPTU1OSUzQTEyMCAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRwcmltYXJ5LWNvbnRlbnQ6ICMxNzE5MWM7XG4kc2Vjb25kYXJ5LWNvbnRlbnQ6ICM3MzdkOGM7XG4kdGVydGlhcnktY29udGVudDogIzhkOTdhNTtcbiRxdWF0ZXJuYXJ5LWNvbnRlbnQ6ICNjMWM2Y2Q7XG4kcXVpbmFyeS1jb250ZW50OiAjZTNlOGYwO1xuXG4kc3lzdGVtOiAjZjRmNmZhO1xuJHN5c3RlbS10cmFuc3BhcmVudDogcmdiYSgkc3lzdGVtLCAwKTsgLyogWFhYOiB3b3JrYXJvdW5kIGZvciBTYWZhcmkgMTUuMyBsaW5lYXItZ3JhZGllbnQgYnVnICovXG4kYmFja2dyb3VuZDogI2ZmZmZmZjtcbiRvdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJhY2tncm91bmQsIDAuODUpO1xuXG4kcGFuZWxzOiByZ2JhKCRzeXN0ZW0sIDAuOSk7XG4kcGFuZWwtc2VsZWN0ZWQ6IHJnYmEoJHRlcnRpYXJ5LWNvbnRlbnQsIDAuMyk7XG4kcGFuZWwtaG92ZXI6IHJnYmEoJHRlcnRpYXJ5LWNvbnRlbnQsIDAuMSk7XG4kcGFuZWwtYWN0aW9uczogcmdiYSgkdGVydGlhcnktY29udGVudCwgMC4yKTtcbiRzcGFjZS1uYXY6IHJnYmEoJHRlcnRpYXJ5LWNvbnRlbnQsIDAuMTUpO1xuXG4kYWNjZW50OiAjMGRiZDhiO1xuJGFsZXJ0OiAjZmY1YjU1O1xuJGxpbmtzOiAjMDA4NmU2O1xuJGxpbmstZXh0ZXJuYWw6ICMwNDY3ZGQ7XG5cbiR1c2VybmFtZS12YXJpYW50MS1jb2xvcjogIzM2OGJkNjtcbiR1c2VybmFtZS12YXJpYW50Mi1jb2xvcjogI2FjM2JhODtcbiR1c2VybmFtZS12YXJpYW50My1jb2xvcjogIzBkYmQ4YjtcbiR1c2VybmFtZS12YXJpYW50NC1jb2xvcjogI2U2NGY3YTtcbiR1c2VybmFtZS12YXJpYW50NS1jb2xvcjogI2ZmODEyZDtcbiR1c2VybmFtZS12YXJpYW50Ni1jb2xvcjogIzJkYzJjNTtcbiR1c2VybmFtZS12YXJpYW50Ny1jb2xvcjogIzVjNTZmNTtcbiR1c2VybmFtZS12YXJpYW50OC1jb2xvcjogIzc0ZDEyYztcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFJldXNlZCBGaWdtYSBub24tY29tcG91bmQgY29sb3JzICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGludmVydGVkLWJnLWNvbG9yOiAjMjczMDNhO1xuJGhlYWRlci1wYW5lbC1iZy1jb2xvcjogI2YzZjhmZDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFRoZW1lIHNwZWNpZmljIGNvbG9ycyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRpY29uLWJ1dHRvbi1jb2xvcjogJHF1YXRlcm5hcnktY29udGVudDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIENvbG9ycyB0aGF0IGFyZW4ndCBpbiBGaWdtYSBhbmQgYXJlIHRoZW1lIHNwZWNpZmljIC0gd2UgbmVlZCB0byBnZXQgcmlkIG9mIHRoZXNlICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHNlbGVjdGlvbi1mZy1jb2xvcjogJGJhY2tncm91bmQ7XG4keWVsbG93LWJhY2tncm91bmQ6ICNmZmY4ZTM7XG4kc2Vjb25kYXJ5LWFjY2VudC1jb2xvcjogI2YyZjVmODtcbiRidXR0b24tZmctY29sb3I6ICRiYWNrZ3JvdW5kO1xuJG5ldXRyYWwtYmFkZ2UtY29sb3I6ICNkYmRiZGI7XG4kc3Ryb25nLWlucHV0LWJvcmRlci1jb2xvcjogI2M3YzdjNztcbiRwcmV2aWV3LXdpZGdldC1iYXItY29sb3I6ICNkZGRkZGQ7XG4kYWNjZW50LWZnLWNvbG9yOiAkYmFja2dyb3VuZDtcbiRhY2NlbnQtYWx0OiAjMjM4Y2Y1O1xuJGluZm8tcGxpbnRoLWZnLWNvbG9yOiAjODg4O1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogQ29sb3JzIHRoYXQgYXJlbid0IGluIEZpZ21hIC0gd2UgbmVlZCB0byBnZXQgcmlkIG9mIHRoZXNlICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGRhcmstcGFuZWwtYmctY29sb3I6ICRzZWNvbmRhcnktYWNjZW50LWNvbG9yO1xuJG11dGVkLWZnLWNvbG9yOiAjNjE3MDhiO1xuJGxpZ2h0LWZnLWNvbG9yOiAjNzQ3NDc0O1xuJGZvY3VzLWJnLWNvbG9yOiAkcHJldmlldy13aWRnZXQtYmFyLWNvbG9yO1xuJGluZm8tcGxpbnRoLWJnLWNvbG9yOiAjZjdmN2Y3O1xuJGV2ZW50LXNlbGVjdGVkLWNvbG9yOiAjZjZmN2Y4O1xuJHRvcGxlZnRtZW51LWNvbG9yOiAjMjEyMTIxO1xuJHJvb210b3BpYy1jb2xvcjogIzllOWU5ZTtcbiRzcGFjZVBhbmVsLWJnLWNvbG9yOiByZ2JhKDIzMiwgMjMyLCAyMzIsIDAuNzcpO1xuJHBhbmVsLWdyYWRpZW50OiByZ2JhKDI0MiwgMjQ1LCAyNDgsIDApLCByZ2JhKDI0MiwgMjQ1LCAyNDgsIDEpO1xuJGgzLWNvbG9yOiAjM2QzYjM5O1xuJGV2ZW50LWhpZ2hsaWdodC1iZy1jb2xvcjogJHllbGxvdy1iYWNrZ3JvdW5kO1xuJGhlYWRlci1wYW5lbC10ZXh0LXByaW1hcnktY29sb3I6ICM5MWExYzA7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBCbG9ja3F1b3RlICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGJsb2NrcXVvdGUtYmFyLWNvbG9yOiAkZm9jdXMtYmctY29sb3I7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBUb29sdGlwICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHRvb2x0aXAtdGltZWxpbmUtYmctY29sb3I6ICRpbnZlcnRlZC1iZy1jb2xvcjtcbiR0b29sdGlwLXRpbWVsaW5lLWZnLWNvbG9yOiAkYmFja2dyb3VuZDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFdpZGdldCAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiR3aWRnZXQtbWVudS1iYXItYmctY29sb3I6ICRzZWNvbmRhcnktYWNjZW50LWNvbG9yO1xuJHdpZGdldC1ib2R5LWJnLWNvbG9yOiAkYmFja2dyb3VuZDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIE1lbnUgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kbWVudS1ib3JkZXItY29sb3I6ICNlN2U3ZTc7XG4kbWVudS1iZy1jb2xvcjogJGJhY2tncm91bmQ7XG4kbWVudS1ib3gtc2hhZG93LWNvbG9yOiByZ2JhKDExOCwgMTMxLCAxNTYsIDAuNik7XG4kbWVudS1zZWxlY3RlZC1jb2xvcjogI2Y1ZjhmYTtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFNldHRpbmdzICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHNldHRpbmdzLWdyZXktZmctY29sb3I6ICNhMmEyYTI7XG4kc2V0dGluZ3Mtc3Vic2VjdGlvbi1mZy1jb2xvcjogJG11dGVkLWZnLWNvbG9yO1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogUm9vbSAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRyb29tLWljb24tdW5yZWFkLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBSb29tSGVhZGVyICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHJvb21oZWFkZXItYWRkcm9vbS1iZy1jb2xvcjogcmdiYSg5MiwgMTAwLCAxMTIsIDAuMik7XG4kcm9vbWhlYWRlci1hZGRyb29tLWZnLWNvbG9yOiAjNWM2NDcwO1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogUmljaC10ZXh0LWVkaXRvciAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRwaWxsLWJnLWNvbG9yOiAjYWFhO1xuJHBpbGwtaG92ZXItYmctY29sb3I6ICNjY2M7XG4kcnRlLWJnLWNvbG9yOiAjZTllOWU5O1xuJHJ0ZS1jb2RlLWJnLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogUHJlc2VuY2UgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kcHJlc2VuY2UtYXdheTogI2Q5YjA3MjtcbiRwcmVzZW5jZS1vZmZsaW5lOiAkcXVpbmFyeS1jb250ZW50O1xuJHByZXNlbmNlLWJ1c3k6ICRhbGVydDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIElucHV0cyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRpbnB1dC1ib3JkZXItY29sb3I6ICRtZW51LWJvcmRlci1jb2xvcjtcbiRpbnB1dC1kYXJrZXItYmctY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4kaW5wdXQtZGFya2VyLWZnLWNvbG9yOiAjOWZhOWJhO1xuJGlucHV0LWxpZ2h0ZXItYmctY29sb3I6ICRzZWNvbmRhcnktYWNjZW50LWNvbG9yO1xuJGlucHV0LXVuZGVybGluZS1jb2xvcjogcmdiYSgxNTEsIDE1MSwgMTUxLCAwLjUpO1xuJGlucHV0LWZnLWNvbG9yOiByZ2JhKDc0LCA3NCwgNzQsIDAuOSk7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBEaWFsb2cgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kZGlhbG9nLXRpdGxlLWZnLWNvbG9yOiAjNDU0NzRhO1xuJGRpYWxvZy1iYWNrZHJvcC1jb2xvcjogcmdiYSg0NiwgNDgsIDUxLCAwLjM4KTtcbiRkaWFsb2ctY2xvc2UtZmctY29sb3I6ICNjMWMxYzE7XG4kZGlhbG9nLWNsb3NlLWV4dGVybmFsLWNvbG9yOiAkYmFja2dyb3VuZDtcbiRkaWFsb2ctc2hhZG93LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDgpO1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogSW1hZ2VCb2R5ICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGltYWdlYm9keS1naWZsYWJlbDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuJGltYWdlYm9keS1naWZsYWJlbC1ib3JkZXI6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiRpbWFnZWJvZHktZ2lmbGFiZWwtY29sb3I6ICRiYWNrZ3JvdW5kO1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogUm9vbUxpc3QgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kcm9vbWxpc3QtYmctY29sb3I6IHJnYmEoMjQ1LCAyNDUsIDI0NSwgMC45KTtcbiRyb29tc3VibGlzdC1za2VsZXRvbi11aS1iZzogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgJGJhY2tncm91bmQgMCUsICNmZmZmZmYwMCAxMDAlKTtcbiRyb29tdGlsZS1kZWZhdWx0LWJhZGdlLWJnLWNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBlMmUgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kZTJlLXZlcmlmaWVkLWNvbG9yOiAjMGRiZDhiO1xuJGUyZS11bmtub3duLWNvbG9yOiAjZThiZjM3O1xuJGUyZS11bnZlcmlmaWVkLWNvbG9yOiAjZThiZjM3O1xuJGUyZS13YXJuaW5nLWNvbG9yOiAjZmY1YjU1O1xuJGUyZS12ZXJpZmllZC1jb2xvci1saWdodDogcmdiYSgkZTJlLXZlcmlmaWVkLWNvbG9yLCAwLjA2KTtcbiRlMmUtd2FybmluZy1jb2xvci1saWdodDogcmdiYSgkZTJlLXdhcm5pbmctY29sb3IsIDAuMDYpO1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogVGFiYmVkIHZpZXdzICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHRhYi1sYWJlbC1mZy1jb2xvcjogJGRpYWxvZy10aXRsZS1mZy1jb2xvcjtcbiR0YWItbGFiZWwtYWN0aXZlLWZnLWNvbG9yOiAkYmFja2dyb3VuZDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIEJ1dHRvbnMgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kYnV0dG9uLXByaW1hcnktZmctY29sb3I6ICRiYWNrZ3JvdW5kO1xuJGJ1dHRvbi1zZWNvbmRhcnktYmctY29sb3I6ICRhY2NlbnQtZmctY29sb3I7XG4kYnV0dG9uLWRhbmdlci1mZy1jb2xvcjogJGJhY2tncm91bmQ7XG4kYnV0dG9uLWRhbmdlci1kaXNhYmxlZC1mZy1jb2xvcjogJGJhY2tncm91bmQ7XG4kYnV0dG9uLWRhbmdlci1kaXNhYmxlZC1iZy1jb2xvcjogI2Y1YjZiYjsgLyogVE9ETzogVmVyaWZ5IGNvbG9yICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBUb2dnbGUgc3dpdGNoICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHRvZ2dsZXN3LW9mZi1jb2xvcjogI2MxYzlkNjtcbiR0b2dnbGVzdy1iYWxsLWNvbG9yOiAkYmFja2dyb3VuZDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIEF1dGhwYWdlICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGF1dGhwYWdlLXByaW1hcnktY29sb3I6ICMyMzJmMzI7XG4kYXV0aHBhZ2UtYmctY29sb3I6ICMyZTM2NDk7XG4kYXV0aHBhZ2UtbW9kYWwtYmctY29sb3I6ICRyb29tbGlzdC1iZy1jb2xvcjtcbiRhdXRocGFnZS1mb2N1cy1iZy1jb2xvcjogJGZvY3VzLWJnLWNvbG9yO1xuJGF1dGhwYWdlLWxhbmctY29sb3I6ICM0ZTUwNTQ7XG4kYXV0aHBhZ2Utc2Vjb25kYXJ5LWNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBNZXNzYWdlIGFjdGlvbiBiYXIgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kbWVzc2FnZS1hY3Rpb24tYmFyLWJnLWNvbG9yOiAkYmFja2dyb3VuZDtcbiRtZXNzYWdlLWFjdGlvbi1iYXItZmctY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4kbWVzc2FnZS1hY3Rpb24tYmFyLWJvcmRlci1jb2xvcjogI2U5ZWRmMTtcbiRtZXNzYWdlLWFjdGlvbi1iYXItaG92ZXItYm9yZGVyLWNvbG9yOiAkZm9jdXMtYmctY29sb3I7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBSZWFjdGlvbiByb3cgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kcmVhY3Rpb24tcm93LWJ1dHRvbi1ob3Zlci1ib3JkZXItY29sb3I6ICRmb2N1cy1iZy1jb2xvcjtcbiRyZWFjdGlvbi1yb3ctYnV0dG9uLXNlbGVjdGVkLWJnLWNvbG9yOiAjZTlmZmY5O1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogVm9pY2UgbWVzc2FnZXMgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4vKiBUaGVzZSB0d28gZG9uJ3QgY2hhbmdlIGJldHdlZW4gdGhlbWVzLiBUaGV5IGFyZSB0aGUgJGFsZXJ0LCBidXQgd2UgZG9uJ3Qgd2FudCAqL1xuLyogY3VzdG9tIHRoZW1lcyB0byBhZmZlY3QgdGhlbSBieSBhY2NpZGVudC4gKi9cbiR2b2ljZS1yZWNvcmQtc3RvcC1zeW1ib2wtY29sb3I6ICNmZjViNTU7XG4kdm9pY2UtcmVjb3JkLWxpdmUtY2lyY2xlLWNvbG9yOiAjZmY1YjU1O1xuJHZvaWNlLXJlY29yZC1zdG9wLWJvcmRlci1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiR2b2ljZS1yZWNvcmQtaWNvbi1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBCdWJibGUgdGlsZXMgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kZXZlbnRidWJibGUtc2VsZi1iZzogI2U3ZjhmMztcbiRldmVudGJ1YmJsZS1vdGhlcnMtYmc6ICNlOGVkZjQ7XG4kZXZlbnRidWJibGUtYmctaG92ZXI6ICNmNmY3Zjg7XG4kZXZlbnRidWJibGUtcmVwbHktY29sb3I6ICRxdWF0ZXJuYXJ5LWNvbnRlbnQ7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBMaWdodGJveCAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRsaWdodGJveC1mZy1jb2xvcjogJGJhY2tncm91bmQ7XG4kbGlnaHRib3gtYmFja2dyb3VuZC1iZy1jb2xvcjogIzAwMDtcbiRsaWdodGJveC1iYWNrZ3JvdW5kLWJnLW9wYWNpdHk6IDAuOTU7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBWb0lQICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGNhbGwtdmlldy1idXR0b24tb24tZm9yZWdyb3VuZDogJHNlY29uZGFyeS1jb250ZW50O1xuJGNhbGwtdmlldy1idXR0b24tb24tYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4kY2FsbC12aWV3LWJ1dHRvbi1vZmYtZm9yZWdyb3VuZDogJGJhY2tncm91bmQ7XG4kY2FsbC12aWV3LWJ1dHRvbi1vZmYtYmFja2dyb3VuZDogJHNlY29uZGFyeS1jb250ZW50O1xuJGNhbGwtdmlldy1jb250ZW50LWJhY2tncm91bmQ6ICMyMTI2MmM7XG5cbiR2aWRlby1mZWVkLXNlY29uZGFyeS1iYWNrZ3JvdW5kOiAjMzk0MDQ5OyAvKiBYWFg6IENvbG9yIGZyb20gZGFyayB0aGVtZSAqL1xuJHZvaXBjYWxsLXBsaW50aC1jb2xvcjogJHN5c3RlbTtcblxuLyogQWxsIG9mIHRoZXNlIGFyZSBmcm9tIGRhcmsgdGhlbWUgKi9cbiRjYWxsLXN5c3RlbTogIzIxMjYyYztcbiRjYWxsLWJhY2tncm91bmQ6ICMxNTE5MWU7XG4kY2FsbC1wcmltYXJ5LWNvbnRlbnQ6ICNmZmZmZmY7XG4vKiBUaGlzIG9uZSBpcyBmcm9tIGxpZ2h0IHRoZW1lICovXG4kY2FsbC1saWdodC1xdWF0ZXJuYXJ5LWNvbnRlbnQ6ICNjMWM2Y2Q7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBPbmUtb2ZmIGNvbG9ycyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRwcm9ncmVzc2Jhci1iZy1jb2xvcjogJHBhbmVsLWFjdGlvbnM7XG4ka2JkLWJvcmRlci1jb2xvcjogJG1lc3NhZ2UtYWN0aW9uLWJhci1ib3JkZXItY29sb3I7XG4kdmlzdWFsLWJlbGwtYmctY29sb3I6ICNmYWE7XG4kZXZlbnQtdGltZXN0YW1wLWNvbG9yOiAjYWNhY2FjO1xuJHNsaWRlci1iYWNrZ3JvdW5kLWNvbG9yOiAkdG9nZ2xlc3ctb2ZmLWNvbG9yO1xuJGFwcGVhcmFuY2UtdGFiLWJvcmRlci1jb2xvcjogJGlucHV0LWRhcmtlci1iZy1jb2xvcjtcbiRjb21wb3Nlci1zaGFkb3ctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4kYnJlYWRjcnVtYi1wbGFjZWhvbGRlci1iZy1jb2xvcjogI2U4ZWVmNTtcbiR0aGVtZS1idXR0b24tYmctY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4kcmVzZW5kLWJ1dHRvbi1kaXZpZGVyLWNvbG9yOiAkaW5wdXQtZGFya2VyLWJnLWNvbG9yO1xuJGlubGluZWNvZGUtYm9yZGVyLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuJGlubGluZWNvZGUtYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbiRjb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcbiRzY3JvbGxiYXItdGh1bWItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiRzZWxlY3RlZC1jb2xvcjogJHNlY29uZGFyeS1hY2NlbnQtY29sb3I7XG4kbXhfeHJwX21vZGVsX2JhY2tncm91bmQ6ICNmZmZmZmY7XG4kbXhfeHJwX21vZGVsX2NvbG9yOiAjNjY3MDg1O1xuXG4kY3VzdG9tX3NlbGVjdF9iYWNrZ3JvdW5kOiAjZmZmZmZmO1xuJGN1c3RvbV9zZWxlY3RfY29sb3I6ICMzNDQwNTQ7XG4kY3VzdG9tX3NlbGVjdF9ib3JkZXI6ICNmMGU4ZmM7XG5cbiRxcl9jb2RlX2NvbG9yOiAjNDc1NDY3O1xuJHNlbGVjdGVkX29wdGlvbl9jb2xvcjogIzU2MTZiNjtcblxuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbi8qIE9uZS1vZmYgZ2xvYmFsIGNvbG9ycyAtIHRoZXNlIGFwcGx5IHRvIGJvdGggdGhlbWVzICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHBpbm5lZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4kYXZhdGFyLWluaXRpYWwtY29sb3I6ICRiYWNrZ3JvdW5kO1xuJHByaW1hcnktaGFpcmxpbmUtY29sb3I6IHRyYW5zcGFyZW50O1xuJGZvY3VzLWJyaWdodG5lc3M6IDEwNSU7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBibHVyIGFtb3VudHMgZm9yIGxlZnQgbGVmdCBwYW5lbCAob25seSBmb3IgZWxlbWVudCB0aGVtZSkgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG46cm9vdCB7XG4gICAgLS1scC1iYWNrZ3JvdW5kLWJsdXI6IDQwcHg7XG59XG5cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIEljb24gVVJMcyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRjb3B5LWJ1dHRvbi11cmw6IFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NvcHkuc3ZnXCI7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBMb2NhdGlvbiBzaGFyaW5nICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGxvY2F0aW9uLW1hcmtlci1jb2xvcjogI2ZmZmZmZjtcbiRsb2NhdGlvbi1saXZlLWNvbG9yOiAjNWM1NmY1O1xuJGxvY2F0aW9uLWxpdmUtc2Vjb25kYXJ5LWNvbG9yOiAjZGVkZGZkO1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogVm9pY2UgQnJvYWRjYXN0ICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGxpdmUtYmFkZ2UtY29sb3I6ICNmZmZmZmY7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG5ib2R5IHtcbiAgICBjb2xvci1zY2hlbWU6IGxpZ2h0O1xufVxuXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBkaWZmIGhpZ2hsaWdodCBjb2xvcnMgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4uaGxqcy1hZGRpdGlvbiB7XG4gICAgYmFja2dyb3VuZDogI2RmZDtcbn1cblxuLmhsanMtZGVsZXRpb24ge1xuICAgIGJhY2tncm91bmQ6ICNmZGQ7XG59XG5cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4iLCIvKiBDb2xvcnMgZnJvbSBGaWdtYSBDb21wb3VuZCBodHRwczovL3d3dy5maWdtYS5jb20vZmlsZS9YNFhUSDlpUzJLR0oyd0ZLRHFreWVkL0NvbXBvdW5kP25vZGUtaWQ9NTU5JTNBNzQxICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHByaW1hcnktY29udGVudDogI2ZmZmZmZjtcbiRzZWNvbmRhcnktY29udGVudDogI2E5YjJiYztcbiR0ZXJ0aWFyeS1jb250ZW50OiAjOGU5OWE0O1xuJHF1YXRlcm5hcnktY29udGVudDogIzZmNzg4MjtcbiRxdWluYXJ5LWNvbnRlbnQ6ICMzOTQwNDk7XG5cbiRzeXN0ZW06ICMyMTI2MmM7XG4kc3lzdGVtLXRyYW5zcGFyZW50OiByZ2JhKCRzeXN0ZW0sIDApOyAvKiBYWFg6IHdvcmthcm91bmQgZm9yIFNhZmFyaSAxNS4zIGxpbmVhci1ncmFkaWVudCBidWcgKi9cbiRiYWNrZ3JvdW5kOiAjMTUxOTFlO1xuJG92ZXJsYXktYmFja2dyb3VuZDogcmdiYSgkYmFja2dyb3VuZCwgMC44NSk7XG5cbiRwYW5lbC1iYXNlOiAjOGQ5N2E1OyAvKiBUaGlzIGNvbG9yIGlzIG5vdCBpbnRlbmRlZCBmb3IgdXNlIGluIHRoZSBhcHAgKi9cbiRwYW5lbHM6IHJnYmEoJHN5c3RlbSwgMC45KTtcbiRwYW5lbC1zZWxlY3RlZDogcmdiYSgkcGFuZWwtYmFzZSwgMC4zKTtcbiRwYW5lbC1ob3ZlcjogcmdiYSgkcGFuZWwtYmFzZSwgMC4xKTtcbiRwYW5lbC1hY3Rpb25zOiByZ2JhKCRwYW5lbC1iYXNlLCAwLjIpO1xuJHNwYWNlLW5hdjogcmdiYSgkcGFuZWwtYmFzZSwgMC4xKTtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFJldXNlZCBGaWdtYSBub24tY29tcG91bmQgY29sb3JzICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGludmVydGVkLWJnLWNvbG9yOiAkYmFja2dyb3VuZDtcbiRoZWFkZXItcGFuZWwtYmctY29sb3I6ICMyMDI1MmI7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBUaGVtZSBzcGVjaWZpYyBjb2xvcnMgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kaWNvbi1idXR0b24tY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogQ29sb3JzIHRoYXQgYXJlbid0IGluIEZpZ21hIGFuZCBhcmUgdGhlbWUgc3BlY2lmaWMgLSB3ZSBuZWVkIHRvIGdldCByaWQgb2YgdGhlc2UgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kaGVhZGVyLXBhbmVsLXRleHQtc2Vjb25kYXJ5LWNvbG9yOiAjYzhjOGNkO1xuJHJvb20taGlnaGxpZ2h0LWNvbG9yOiAjMzQzYTQ2O1xuJHRleHQtc2Vjb25kYXJ5LWNvbG9yOiAjYjliZWM2O1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogQ29sb3JzIHRoYXQgYXJlbid0IGluIEZpZ21hIC0gd2UgbmVlZCB0byBnZXQgcmlkIG9mIHRoZXNlICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGRhcmstcGFuZWwtYmctY29sb3I6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG4kbXV0ZWQtZmctY29sb3I6ICRoZWFkZXItcGFuZWwtdGV4dC1wcmltYXJ5LWNvbG9yO1xuJGxpZ2h0LWZnLWNvbG9yOiAkaGVhZGVyLXBhbmVsLXRleHQtc2Vjb25kYXJ5LWNvbG9yO1xuJGZvY3VzLWJnLWNvbG9yOiAkcm9vbS1oaWdobGlnaHQtY29sb3I7XG4kaW5mby1wbGludGgtYmctY29sb3I6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG4kZXZlbnQtc2VsZWN0ZWQtY29sb3I6ICRzeXN0ZW07XG4kdG9wbGVmdG1lbnUtY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4kcm9vbXRvcGljLWNvbG9yOiAkdGV4dC1zZWNvbmRhcnktY29sb3I7XG4kc3BhY2VQYW5lbC1iZy1jb2xvcjogcmdiYSgzOCwgMzksIDQzLCAwLjgyKTtcbiRwYW5lbC1ncmFkaWVudDogcmdiYSgzNCwgMzgsIDQ2LCAwKSwgcmdiYSgzNCwgMzgsIDQ2LCAxKTtcbiRoMy1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiRldmVudC1oaWdobGlnaHQtYmctY29sb3I6ICMyNTI3MWY7XG4kaGVhZGVyLXBhbmVsLXRleHQtcHJpbWFyeS1jb2xvcjogJHRleHQtc2Vjb25kYXJ5LWNvbG9yO1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogVG9vbHRpcCAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiR0b29sdGlwLXRpbWVsaW5lLWJnLWNvbG9yOiAkc3BhY2VQYW5lbC1iZy1jb2xvcjtcbiR0b29sdGlwLXRpbWVsaW5lLWZnLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogV2lkZ2V0ICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHdpZGdldC1tZW51LWJhci1iZy1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcbiR3aWRnZXQtYm9keS1iZy1jb2xvcjogJHBhbmVsLWFjdGlvbnM7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBNZW51ICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJG1lbnUtYm9yZGVyLWNvbG9yOiAjMDAwMDAwO1xuJG1lbnUtYmctY29sb3I6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG4kbWVudS1ib3gtc2hhZG93LWNvbG9yOiAkYmFja2dyb3VuZDtcbiRtZW51LXNlbGVjdGVkLWNvbG9yOiAkcm9vbS1oaWdobGlnaHQtY29sb3I7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBTZXR0aW5ncyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRzZXR0aW5ncy1wcm9maWxlLWJ1dHRvbi1iZy1jb2xvcjogI2U3ZTdlNztcbiRzZXR0aW5ncy1zdWJzZWN0aW9uLWZnLWNvbG9yOiAkdGV4dC1zZWNvbmRhcnktY29sb3I7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBSb29tICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHJvb20taWNvbi11bnJlYWQtY29sb3I6ICNmZmY7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBSb29tSGVhZGVyICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHJvb21oZWFkZXItYWRkcm9vbS1iZy1jb2xvcjogcmdiYSg5MiwgMTAwLCAxMTIsIDAuMyk7XG4kcm9vbWhlYWRlci1hZGRyb29tLWZnLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogUmljaC10ZXh0LWVkaXRvciAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRwaWxsLWJnLWNvbG9yOiAkcm9vbS1oaWdobGlnaHQtY29sb3I7XG4kcGlsbC1ob3Zlci1iZy1jb2xvcjogIzU0NWE2Njtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIElucHV0cyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRpbnB1dC1ib3JkZXItY29sb3I6IHJnYmEoMjMxLCAyMzEsIDIzMSwgMC4yKTtcbiRpbnB1dC1kYXJrZXItYmctY29sb3I6ICMxODFiMjE7XG4kaW5wdXQtZGFya2VyLWZnLWNvbG9yOiAjNjE3MDhiO1xuJGlucHV0LWxpZ2h0ZXItYmctY29sb3I6ICNmMmY1Zjg7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBEaWFsb2cgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kZGlhbG9nLXRpdGxlLWZnLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuJGRpYWxvZy1iYWNrZHJvcC1jb2xvcjogJG1lbnUtYm9yZGVyLWNvbG9yO1xuJGRpYWxvZy1jbG9zZS1mZy1jb2xvcjogIzlmYTliYTtcbiRkaWFsb2ctY2xvc2UtZXh0ZXJuYWwtY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBSb29tTGlzdCAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRyb29tbGlzdC1iZy1jb2xvcjogcmdiYSgkc3lzdGVtLCAwLjkpO1xuJHJvb21zdWJsaXN0LXNrZWxldG9uLXVpLWJnOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjM2U0NDRjIDAlLCAjM2U0NDRjMDAgMTAwJSk7XG4kcm9vbXRpbGUtZGVmYXVsdC1iYWRnZS1iZy1jb2xvcjogJGlucHV0LWRhcmtlci1mZy1jb2xvcjtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFRhYmJlZCB2aWV3cyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiR0YWItbGFiZWwtZmctY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4kdGFiLWxhYmVsLWFjdGl2ZS1mZy1jb2xvcjogJHByaW1hcnktY29udGVudDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIEJ1dHRvbnMgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kYnV0dG9uLXByaW1hcnktZmctY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4kYnV0dG9uLXNlY29uZGFyeS1iZy1jb2xvcjogdHJhbnNwYXJlbnQ7XG4kYnV0dG9uLWRhbmdlci1mZy1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiRidXR0b24tZGFuZ2VyLWRpc2FibGVkLWZnLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogVG9nZ2xlIHN3aXRjaCAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiR0b2dnbGVzdy1vZmYtY29sb3I6ICRyb29tLWhpZ2hsaWdodC1jb2xvcjtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIEF1dGhwYWdlICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGF1dGhwYWdlLXByaW1hcnktY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBNZXNzYWdlIGFjdGlvbiBiYXIgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kbWVzc2FnZS1hY3Rpb24tYmFyLWJnLWNvbG9yOiAkaGVhZGVyLXBhbmVsLWJnLWNvbG9yO1xuJG1lc3NhZ2UtYWN0aW9uLWJhci1mZy1jb2xvcjogJGhlYWRlci1wYW5lbC10ZXh0LXByaW1hcnktY29sb3I7XG4kbWVzc2FnZS1hY3Rpb24tYmFyLWJvcmRlci1jb2xvcjogIzYxNmI3ZjtcbiRtZXNzYWdlLWFjdGlvbi1iYXItaG92ZXItYm9yZGVyLWNvbG9yOiAkaGVhZGVyLXBhbmVsLXRleHQtcHJpbWFyeS1jb2xvcjtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFJlYWN0aW9uIHJvdyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRyZWFjdGlvbi1yb3ctYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcjogJGhlYWRlci1wYW5lbC10ZXh0LXByaW1hcnktY29sb3I7XG4kcmVhY3Rpb24tcm93LWJ1dHRvbi1zZWxlY3RlZC1iZy1jb2xvcjogIzFmNjk1NDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFZvaWNlIG1lc3NhZ2VzICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJHZvaWNlLXJlY29yZC1zdG9wLWJvcmRlci1jb2xvcjogJHF1YXRlcm5hcnktY29udGVudDtcbiR2b2ljZS1yZWNvcmQtaWNvbi1jb2xvcjogJHF1YXRlcm5hcnktY29udGVudDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIEJ1YmJsZSB0aWxlcyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRldmVudGJ1YmJsZS1zZWxmLWJnOiAjMTMzYTM0O1xuJGV2ZW50YnViYmxlLW90aGVycy1iZzogIzIxMjYyYztcbiRldmVudGJ1YmJsZS1iZy1ob3ZlcjogIzFjMjAyNjtcbiRldmVudGJ1YmJsZS1yZXBseS1jb2xvcjogI2MxYzZjZDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIExpZ2h0Ym94ICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGxpZ2h0Ym94LWJhY2tncm91bmQtYmctY29sb3I6ICRtZW51LWJvcmRlci1jb2xvcjtcbiRsaWdodGJveC1iYWNrZ3JvdW5kLWJnLW9wYWNpdHk6IDAuODU7XG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4vKiBWb0lQICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuJGNhbGwtdmlldy1idXR0b24tb24tZm9yZWdyb3VuZDogJHByaW1hcnktY29udGVudDtcbiRjYWxsLXZpZXctYnV0dG9uLW9uLWJhY2tncm91bmQ6ICRzeXN0ZW07XG4kY2FsbC12aWV3LWJ1dHRvbi1vZmYtZm9yZWdyb3VuZDogJHN5c3RlbTtcbiRjYWxsLXZpZXctYnV0dG9uLW9mZi1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb250ZW50O1xuJGNhbGwtdmlldy1jb250ZW50LWJhY2tncm91bmQ6ICRxdWluYXJ5LWNvbnRlbnQ7XG5cbiR2aWRlby1mZWVkLXNlY29uZGFyeS1iYWNrZ3JvdW5kOiAkc3lzdGVtO1xuXG4kY2FsbC1zeXN0ZW06ICRzeXN0ZW07XG4kY2FsbC1iYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiRjYWxsLXByaW1hcnktY29udGVudDogJHByaW1hcnktY29udGVudDtcbiRjYWxsLWxpZ2h0LXF1YXRlcm5hcnktY29udGVudDogI2MxYzZjZDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIExvY2F0aW9uIHNoYXJpbmcgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kbG9jYXRpb24tbGl2ZS1jb2xvcjogIzVjNTZmNTtcbiRsb2NhdGlvbi1saXZlLXNlY29uZGFyeS1jb2xvcjogI2RlZGRmZDtcbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIExvY2F0aW9uIHNoYXJpbmcgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4ubWFwbGlicmVnbC1jdHJsLWF0dHJpYi1idXR0b24ge1xuICAgIGNvbG9yOiAkYmFja2dyb3VuZDtcbn1cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFZvaWNlIEJyb2FkY2FzdCAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbiRsaXZlLWJhZGdlLWNvbG9yOiAjZmZmZmZmO1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogT25lLW9mZiBjb2xvcnMgKi9cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG4kcHJvZ3Jlc3NiYXItYmctY29sb3I6ICRzeXN0ZW07XG4ka2JkLWJvcmRlci1jb2xvcjogJG1lbnUtYm9yZGVyLWNvbG9yO1xuJHZpc3VhbC1iZWxsLWJnLWNvbG9yOiAjODAwO1xuJGV2ZW50LXRpbWVzdGFtcC1jb2xvcjogJHRleHQtc2Vjb25kYXJ5LWNvbG9yO1xuJHNsaWRlci1iYWNrZ3JvdW5kLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuJGFwcGVhcmFuY2UtdGFiLWJvcmRlci1jb2xvcjogJHJvb20taGlnaGxpZ2h0LWNvbG9yO1xuJGNvbXBvc2VyLXNoYWRvdy1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI4KTtcbiRicmVhZGNydW1iLXBsYWNlaG9sZGVyLWJnLWNvbG9yOiAjMjcyYzM1O1xuJHRoZW1lLWJ1dHRvbi1iZy1jb2xvcjogI2UzZThmMDtcbiRyZXNlbmQtYnV0dG9uLWRpdmlkZXItY29sb3I6IHJnYmEoJGhlYWRlci1wYW5lbC10ZXh0LXByaW1hcnktY29sb3IsIDAuNzQpO1xuJGlubGluZWNvZGUtYm9yZGVyLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuJGlubGluZWNvZGUtYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbiRjb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvcjogIzJhMzAzOTtcbiRzY3JvbGxiYXItdGh1bWItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiRteF94cnBfbW9kZWxfYmFja2dyb3VuZDogIzAyMDEwNTtcbiRteF94cnBfbW9kZWxfY29sb3I6ICM4OTQ5ZTk7XG4kY3VzdG9tX3NlbGVjdF9iYWNrZ3JvdW5kOiAjMGIwMzE3O1xuJGN1c3RvbV9zZWxlY3RfYm9yZGVyOiAjMmIwYjViO1xuJGN1c3RvbV9zZWxlY3RfY29sb3I6ICNmMGU4ZmM7XG4kc2VsZWN0ZWRfb3B0aW9uX2NvbG9yOiAjZmZmZmZmO1xuXG4kcXJfY29kZV9jb2xvcjogI0QwRDVERDtcbiRzZWxlY3RlZC1jb2xvcjogJHJvb20taGlnaGxpZ2h0LWNvbG9yO1xuXG5cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIGJsdXIgYW1vdW50cyBmb3IgbGVmdCBsZWZ0IHBhbmVsIChvbmx5IGZvciBlbGVtZW50IHRoZW1lKSAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbjpyb290IHtcbiAgICAtLWxwLWJhY2tncm91bmQtYmx1cjogNDVweDtcbn1cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbmJvZHkge1xuICAgIGNvbG9yLXNjaGVtZTogZGFyaztcbn1cblxuLyogTmFzdHkgaGFja3MgdG8gYXBwbHkgYSBmaWx0ZXIgdG8gYXJiaXRyYXJ5IG1vbm9jaHJvbWUgYXJ0d29yayB0byBtYWtlIGl0ICovXG4vKiBiZXR0ZXIgbWF0Y2ggdGhlIHRoZW1lLiAgVHlwaWNhbGx5IGFwcGxpZWQgdG8gZGFyayBncmV5ICdvZmYnIGJ1dHRvbnMgb3IgKi9cbi8qIGxpZ2h0IGdyZXkgJ29uJyBidXR0b25zLiAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbi5teF9maWx0ZXJGbGlwQ29sb3Ige1xuICAgIGZpbHRlcjogaW52ZXJ0KDEpO1xufVxuLyogKioqKioqKioqKioqKioqKioqKiogKi9cblxuLyogbWFya2Rvd24gb3ZlcnJpZGVzICovXG4vKiAqKioqKioqKioqKioqKioqKioqKiAqL1xuLm14X0V2ZW50VGlsZV9jb250ZW50IC5tYXJrZG93bi1ib2R5IHtcbiAgICB0YWJsZSB7XG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtZW51LWJvcmRlci1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyOm50aC1jaGlsZCgybikge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA4MDgwODtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIGRpZmYgaGlnaGxpZ2h0IGNvbG9ycyAqL1xuLyogKioqKioqKioqKioqKioqKioqKiogKi9cbi5obGpzLXRhZyB7XG4gICAgY29sb3I6IGluaGVyaXQ7IC8qIFdpdGhvdXQgdGhpcyB0aGV5J2QgYmUgd2VpcmRseSBibHVlIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggdGhlIHRoZW1lICovXG59XG5cbi5obGpzLWFkZGl0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAjMWE0YjU5O1xufVxuXG4uaGxqcy1kZWxldGlvbiB7XG4gICAgYmFja2dyb3VuZDogIzUzMjMyYTtcbn1cbi8qICoqKioqKioqKioqKioqKioqKioqICovXG5cbi8qIFNwbGFzaCBQYWdlIEdyYWRpZW50ICovXG4ubXhfU3BsYXNoUGFnZTo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoXG4gICAgICAgICAgICA1My44NSUgNjYuNzUlIGF0IDg3LjU1JSAwJSxcbiAgICAgICAgICAgIGhzbGEoMCwgMCUsIDExJSwgMC4xNSkgMCUsXG4gICAgICAgICAgICBoc2xhKDI1MCwgMTAwJSwgODglLCAwKSAxMDAlXG4gICAgICAgICksXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCg0MS45MyUgNDEuOTMlIGF0IDAlIDAlLCBoc2xhKDAsIDAlLCAzOCUsIDAuMjgpIDAlLCBoc2xhKDI1MCwgMTAwJSwgODglLCAwKSAxMDAlKSxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDEwMCUgMTAwJSBhdCAwJSAwJSwgaHNsYSgyNTAsIDEwMCUsIDg4JSwgMC4zKSAwJSwgaHNsYSgwLCAxMDAlLCA4NiUsIDApIDEwMCUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoMTA2LjM1JSA5Ni4yNiUgYXQgMTAwJSAwJSwgaHNsYSgyNSwgMTAwJSwgODglLCAwLjQpIDAlLCBoc2xhKDE2NywgNzYlLCA4MiUsIDApIDEwMCUpICFpbXBvcnRhbnQ7XG59XG4iLCIvKiBzaWRlYmFyIGJsdXJyZWQgYXZhdGFyIGJhY2tncm91bmQgKi9cbi8vXG4vKiBpZiBiYWNrZHJvcC1maWx0ZXIgaXMgc3VwcG9ydGVkLCAqL1xuLyogc2V0IHRoZSB1c2VyIGF2YXRhciAoaWYgYW55KSBhcyBhIGJhY2tncm91bmQgc28gKi9cbi8qIGl0IGNhbiBiZSBibHVycmVkIGJ5IHRoZSB0YWcgcGFuZWwgYW5kIHJvb20gbGlzdCAqL1xuXG4ubXhfUm9vbVN1Ymxpc3Rfc2hvd05CdXR0b24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG5cbmE6aG92ZXIsXG5hOmxpbmssXG5hOnZpc2l0ZWQge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbiIsIi8qIGF1dG9nZW5lcmF0ZWQgYnkgcmV0aGVtZW5kZXguc2ggKi9cbkBpbXBvcnQgXCIuL19hbmltYXRpb25zLnBjc3NcIjtcbkBpbXBvcnQgXCIuL19jb21tb24ucGNzc1wiO1xuQGltcG9ydCBcIi4vX2ZvbnQtc2l6ZXMucGNzc1wiO1xuQGltcG9ydCBcIi4vX2ZvbnQtd2VpZ2h0cy5wY3NzXCI7XG5AaW1wb3J0IFwiLi9fc3BhY2luZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fQmVhY29uTGlzdEl0ZW0ucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9iZWFjb24vX0JlYWNvblN0YXR1cy5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fQmVhY29uU3RhdHVzVG9vbHRpcC5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fQmVhY29uVmlld0RpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fRGlhbG9nT3duQmVhY29uU3RhdHVzLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3MvYmVhY29uL19EaWFsb2dTaWRlYmFyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3MvYmVhY29uL19MZWZ0UGFuZWxMaXZlU2hhcmVXYXJuaW5nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3MvYmVhY29uL19MaXZlVGltZVJlbWFpbmluZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fT3duQmVhY29uU3RhdHVzLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3MvYmVhY29uL19Sb29tTGl2ZVNoYXJlV2FybmluZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fU2hhcmVMYXRlc3RMb2NhdGlvbi5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2JlYWNvbi9fU3R5bGVkTGl2ZUJlYWNvbkljb24ucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9jb250ZXh0X21lbnVzL19LZWJhYkNvbnRleHRNZW51LnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3MvZGlhbG9ncy9wb2xscy9fUG9sbERldGFpbEhlYWRlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvcG9sbHMvX1BvbGxMaXN0SXRlbS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvcG9sbHMvX1BvbGxMaXN0SXRlbUVuZGVkLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3MvZWxlbWVudHMvX0FwcFBlcm1pc3Npb24ucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9fRmlsdGVyRHJvcGRvd24ucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9fRmlsdGVyVGFiR3JvdXAucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9fTGVhcm5Nb3JlLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3MvbG9jYXRpb24vX0VuYWJsZUxpdmVTaGFyZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL19MaXZlRHVyYXRpb25Ecm9wZG93bi5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL19Mb2NhdGlvblNoYXJlTWVudS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL19NYXBFcnJvci5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL19NYXBGYWxsYmFjay5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL19NYXJrZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9sb2NhdGlvbi9fU2hhcmVEaWFsb2dCdXR0b25zLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3MvbG9jYXRpb24vX1NoYXJlVHlwZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL19ab29tQnV0dG9ucy5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL21lc3NhZ2VzL19NQmVhY29uQm9keS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL21lc3NhZ2VzL3NoYXJlZC9fTWVkaWFQcm9jZXNzaW5nRXJyb3IucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9waXBzL19XaWRnZXRQaXAucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9wb2xscy9fUG9sbE9wdGlvbi5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL2RldmljZXMvX0N1cnJlbnREZXZpY2VTZWN0aW9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvZGV2aWNlcy9fRGV2aWNlRGV0YWlsSGVhZGluZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL2RldmljZXMvX0RldmljZURldGFpbHMucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9kZXZpY2VzL19EZXZpY2VFeHBhbmREZXRhaWxzQnV0dG9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvZGV2aWNlcy9fRGV2aWNlU2VjdXJpdHlDYXJkLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvZGV2aWNlcy9fRGV2aWNlVGlsZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL2RldmljZXMvX0RldmljZVR5cGVJY29uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvZGV2aWNlcy9fRmlsdGVyZWREZXZpY2VMaXN0LnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvZGV2aWNlcy9fRmlsdGVyZWREZXZpY2VMaXN0SGVhZGVyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvZGV2aWNlcy9fU2VjdXJpdHlSZWNvbW1lbmRhdGlvbnMucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9kZXZpY2VzL19TZWxlY3RhYmxlRGV2aWNlVGlsZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL3NoYXJlZC9fU2V0dGluZ3NTdWJzZWN0aW9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3Mvc2hhcmVkL19TZXR0aW5nc1N1YnNlY3Rpb25IZWFkaW5nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdmlld3Mvc3BhY2VzL19RdWlja1RoZW1lU3dpdGNoZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy92aWV3cy90eXBvZ3JhcGh5L19DYXB0aW9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvdW5kL19JY29uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbXBvdW5kL19TdWNjZXNzRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX0F1dG9IaWRlU2Nyb2xsYmFyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX0F1dG9jb21wbGV0ZUlucHV0LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX0JhY2tkcm9wUGFuZWwucGNzc1wiO1xuQGltcG9ydCBcIi4vc3RydWN0dXJlcy9fQ29tcGF0aWJpbGl0eVBhZ2UucGNzc1wiO1xuQGltcG9ydCBcIi4vc3RydWN0dXJlcy9fQ29udGV4dHVhbE1lbnUucGNzc1wiO1xuQGltcG9ydCBcIi4vc3RydWN0dXJlcy9fRXJyb3JNZXNzYWdlLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX0ZpbGVEcm9wVGFyZ2V0LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX0ZpbGVQYW5lbC5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19HZW5lcmljRHJvcGRvd25NZW51LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX0dlbmVyaWNFcnJvclBhZ2UucGNzc1wiO1xuQGltcG9ydCBcIi4vc3RydWN0dXJlcy9fSG9tZVBhZ2UucGNzc1wiO1xuQGltcG9ydCBcIi4vc3RydWN0dXJlcy9fTGFyZ2VMb2FkZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vc3RydWN0dXJlcy9fTGVmdFBhbmVsLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX01haW5TcGxpdC5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19NYXRyaXhDaGF0LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX01lc3NhZ2VQYW5lbC5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19Ob25VcmdlbnRUb2FzdENvbnRhaW5lci5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19Ob3RpZmljYXRpb25QYW5lbC5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19RdWlja1NldHRpbmdzQnV0dG9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX1JpZ2h0UGFuZWwucGNzc1wiO1xuQGltcG9ydCBcIi4vc3RydWN0dXJlcy9fUm9vbVNlYXJjaC5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19Sb29tU3RhdHVzQmFyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX1Jvb21WaWV3LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX1NlYXJjaEJveC5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19TcGFjZUhpZXJhcmNoeS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19TcGFjZVBhbmVsLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX1NwYWNlUm9vbVZpZXcucGNzc1wiO1xuQGltcG9ydCBcIi4vc3RydWN0dXJlcy9fU3BsYXNoUGFnZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19UYWJiZWRWaWV3LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX1RvYXN0Q29udGFpbmVyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvX1VwbG9hZEJhci5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19Vc2VyTWVudS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL19WaWV3U291cmNlLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvYXV0aC9fQ29tcGxldGVTZWN1cml0eS5wY3NzXCI7XG5AaW1wb3J0IFwiLi9zdHJ1Y3R1cmVzL2F1dGgvX0xvZ2luLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvYXV0aC9fUmVnaXN0cmF0aW9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3N0cnVjdHVyZXMvYXV0aC9fU2V0dXBFbmNyeXB0aW9uQm9keS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9hdWRpb19tZXNzYWdlcy9fQXVkaW9QbGF5ZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvYXVkaW9fbWVzc2FnZXMvX1BsYXlQYXVzZUJ1dHRvbi5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9hdWRpb19tZXNzYWdlcy9fUGxheWJhY2tDb250YWluZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvYXVkaW9fbWVzc2FnZXMvX1NlZWtCYXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvYXVkaW9fbWVzc2FnZXMvX1dhdmVmb3JtLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2F1dGgvX0F1dGhCb2R5LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2F1dGgvX0F1dGhGb290ZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvYXV0aC9fQXV0aEhlYWRlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9hdXRoL19BdXRoSGVhZGVyTG9nby5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9hdXRoL19BdXRoUGFnZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9hdXRoL19Db21wbGV0ZVNlY3VyaXR5Qm9keS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9hdXRoL19Db3VudHJ5RHJvcGRvd24ucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvYXV0aC9fSW50ZXJhY3RpdmVBdXRoRW50cnlDb21wb25lbnRzLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2F1dGgvX0xhbmd1YWdlU2VsZWN0b3IucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvYXV0aC9fTG9naW5XaXRoUVIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvYXV0aC9fUGFzc3BocmFzZUZpZWxkLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2F1dGgvX1dlbGNvbWUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvYXV0aC9fWFJQTFdhbGxldExvZ2luLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2F1dGgvX1hSUExBdXRoQ2FsbGJhY2sucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvYXZhdGFycy9fQmFzZUF2YXRhci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9hdmF0YXJzL19EZWNvcmF0ZWRSb29tQXZhdGFyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2F2YXRhcnMvX1dpZGdldEF2YXRhci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9iZXRhL19CZXRhQ2FyZC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9jb250ZXh0X21lbnVzL19EZXZpY2VDb250ZXh0TWVudS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9jb250ZXh0X21lbnVzL19JY29uaXplZENvbnRleHRNZW51LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2NvbnRleHRfbWVudXMvX0xlZ2FjeUNhbGxDb250ZXh0TWVudS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9jb250ZXh0X21lbnVzL19NZXNzYWdlQ29udGV4dE1lbnUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvY29udGV4dF9tZW51cy9fUm9vbUdlbmVyYWxDb250ZXh0TWVudS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9jb250ZXh0X21lbnVzL19Sb29tTm90aWZpY2F0aW9uQ29udGV4dE1lbnUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fQWRkRXhpc3RpbmdUb1NwYWNlRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX0FuYWx5dGljc0xlYXJuTW9yZURpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19BcHBEb3dubG9hZERpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19CdWdSZXBvcnREaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fQnVsa1JlZGFjdERpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19DaGFuZ2Vsb2dEaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fQ29tcG91bmREaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fQ29uZmlybVNwYWNlVXNlckFjdGlvbkRpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19Db25maXJtVXNlckFjdGlvbkRpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19DcmVhdGVSb29tRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX0NyZWF0ZVN1YnNwYWNlRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX0RlYWN0aXZhdGVBY2NvdW50RGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX0RldnRvb2xzRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX0V4cG9ydERpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19GZWVkYmFja0RpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19Gb3J3YXJkRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX0dlbmVyaWNGZWF0dXJlRmVlZGJhY2tEaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fSW5jb21pbmdTYXNEaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fSW52aXRlRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX0pvaW5SdWxlRHJvcGRvd24ucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fTGVhdmVTcGFjZURpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19Mb2NhdGlvblZpZXdEaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fTWFuYWdlUmVzdHJpY3RlZEpvaW5SdWxlRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX01lc3NhZ2VFZGl0SGlzdG9yeURpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19Nb2RhbFdpZGdldERpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19Qb2xsQ3JlYXRlRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX1JlZ2lzdHJhdGlvbkVtYWlsUHJvbXB0RGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX1Jvb21TZXR0aW5nc0RpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19Sb29tU2V0dGluZ3NEaWFsb2dCcmlkZ2VzLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX1Jvb21VcGdyYWRlRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX1Jvb21VcGdyYWRlV2FybmluZ0RpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19TZXJ2ZXJPZmZsaW5lRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX1NlcnZlclBpY2tlckRpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19TZXRFbWFpbERpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19TZXR0aW5nc0RpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19TaGFyZURpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19TbGFzaENvbW1hbmRIZWxwRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX1NwYWNlUHJlZmVyZW5jZXNEaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fU3BhY2VTZXR0aW5nc0RpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL19TcG90bGlnaHREaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fVGVybXNEaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fVW50cnVzdGVkRGV2aWNlRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX1VwbG9hZENvbmZpcm1EaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9fVXNlclNldHRpbmdzRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX1ZlcmlmeUVNYWlsRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3MvX1dpZGdldENhcGFiaWxpdGllc1Byb21wdERpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL3NlY3VyaXR5L19BY2Nlc3NTZWNyZXRTdG9yYWdlRGlhbG9nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2RpYWxvZ3Mvc2VjdXJpdHkvX0NyZWF0ZUNyb3NzU2lnbmluZ0RpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL3NlY3VyaXR5L19DcmVhdGVLZXlCYWNrdXBEaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9zZWN1cml0eS9fQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaWFsb2dzL3NlY3VyaXR5L19LZXlCYWNrdXBGYWlsZWREaWFsb2cucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZGlhbG9ncy9zZWN1cml0eS9fUmVzdG9yZUtleUJhY2t1cERpYWxvZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9kaXJlY3RvcnkvX05ldHdvcmtEcm9wZG93bi5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fQWNjZXNzaWJsZUJ1dHRvbi5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fQ29weWFibGVUZXh0LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19EZXNrdG9wQ2FwdHVyZXJTb3VyY2VQaWNrZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX0RpYWxQYWRCYWNrc3BhY2VCdXR0b24ucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX0Ryb3Bkb3duLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19FZGl0YWJsZUl0ZW1MaXN0LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19FcnJvckJvdW5kYXJ5LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19FeHRlcm5hbExpbmsucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX0ZhY2VQaWxlLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19GaWVsZC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fR2VuZXJpY0V2ZW50TGlzdFN1bW1hcnkucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX0ltYWdlVmlldy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fSW5mb1Rvb2x0aXAucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX0lubGluZVNwaW5uZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX0ludGVyYWN0aXZlVG9vbHRpcC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fSW52aXRlUmVhc29uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19MYWJlbGxlZENoZWNrYm94LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19NaW5pQXZhdGFyVXBsb2FkZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX1BpbGwucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX1Bvd2VyU2VsZWN0b3IucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX1Byb2dyZXNzQmFyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19RUkNvZGUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX1JlcGx5Q2hhaW4ucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX1Jlc2l6ZUhhbmRsZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fUmljaFRleHQucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX1Jvb21BbGlhc0ZpZWxkLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19TU09CdXR0b25zLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19TZWFyY2hXYXJuaW5nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19TZXJ2ZXJQaWNrZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX1NldHRpbmdzRmxhZy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fU2xpZGVyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19TcGlubmVyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19TdHlsZWRDaGVja2JveC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fU3R5bGVkUmFkaW9CdXR0b24ucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX1N5bnRheEhpZ2hsaWdodC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fVGFnQ29tcG9zZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvZWxlbWVudHMvX1RleHRXaXRoVG9vbHRpcC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9lbGVtZW50cy9fVG9nZ2xlU3dpdGNoLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19Ub29sdGlwLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19Ub29sdGlwQnV0dG9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19Vc2VDYXNlU2VsZWN0aW9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19Vc2VDYXNlU2VsZWN0aW9uQnV0dG9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2VsZW1lbnRzL19WYWxpZGF0aW9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL2Vtb2ppcGlja2VyL19FbW9qaVBpY2tlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9sb2NhdGlvbi9fTG9jYXRpb25QaWNrZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX0NhbGxFdmVudC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fQ3JlYXRlRXZlbnQucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX0RhdGVTZXBhcmF0b3IucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX0RlY3J5cHRpb25GYWlsdXJlQm9keS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fRGlzYW1iaWd1YXRlZFByb2ZpbGUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX0V2ZW50VGlsZUJ1YmJsZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fSGlkZGVuQm9keS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fSnVtcFRvRGF0ZVBpY2tlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fTGVnYWN5Q2FsbEV2ZW50LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL21lc3NhZ2VzL19NRW1vdGVCb2R5LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL21lc3NhZ2VzL19NRmlsZUJvZHkucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX01JbWFnZUJvZHkucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX01JbWFnZVJlcGx5Qm9keS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fTUppdHNpV2lkZ2V0RXZlbnQucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX01Mb2NhdGlvbkJvZHkucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX01Ob3RpY2VCb2R5LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL21lc3NhZ2VzL19NUG9sbEJvZHkucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX01Qb2xsRW5kQm9keS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fTVN0aWNrZXJCb2R5LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL21lc3NhZ2VzL19NVGV4dEJvZHkucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX01WaWRlb0JvZHkucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX01lZGlhQm9keS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fTWVzc2FnZUFjdGlvbkJhci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fTWVzc2FnZVRpbWVzdGFtcC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fTWpvbG5pckJvZHkucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX1JlYWN0aW9uc1Jvdy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fUmVhY3Rpb25zUm93QnV0dG9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL21lc3NhZ2VzL19SZWRhY3RlZEJvZHkucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvbWVzc2FnZXMvX1Jvb21BdmF0YXJFdmVudC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fVGV4dHVhbEV2ZW50LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL21lc3NhZ2VzL19Vbmtub3duQm9keS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9tZXNzYWdlcy9fVmlld1NvdXJjZUV2ZW50LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL21lc3NhZ2VzL19jb21tb25fQ3J5cHRvRXZlbnQucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvcG9sbHMvcG9sbEhpc3RvcnkvX1BvbGxIaXN0b3J5LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3BvbGxzL3BvbGxIaXN0b3J5L19Qb2xsSGlzdG9yeUxpc3QucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvcmlnaHRfcGFuZWwvX0Jhc2VDYXJkLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3JpZ2h0X3BhbmVsL19FbmNyeXB0aW9uSW5mby5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yaWdodF9wYW5lbC9fUGlubmVkTWVzc2FnZXNDYXJkLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3JpZ2h0X3BhbmVsL19Sb29tU3VtbWFyeUNhcmQucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvcmlnaHRfcGFuZWwvX1RocmVhZFBhbmVsLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3JpZ2h0X3BhbmVsL19UaW1lbGluZUNhcmQucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvcmlnaHRfcGFuZWwvX1VzZXJJbmZvLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3JpZ2h0X3BhbmVsL19WZXJpZmljYXRpb25QYW5lbC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yaWdodF9wYW5lbC9fV2lkZ2V0Q2FyZC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tX3NldHRpbmdzL19BbGlhc1NldHRpbmdzLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19BcHBzRHJhd2VyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19BdXRvY29tcGxldGUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX0F1eFBhbmVsLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19CYXNpY01lc3NhZ2VDb21wb3Nlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fRGVjcnlwdGlvbkZhaWx1cmVCYXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX0UyRUljb24ucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX0VkaXRNZXNzYWdlQ29tcG9zZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX0Vtb2ppQnV0dG9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19FbnRpdHlUaWxlLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19FdmVudEJ1YmJsZVRpbGUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX0V2ZW50VGlsZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fSGlzdG9yeVRpbGUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX0lSQ0xheW91dC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fSnVtcFRvQm90dG9tQnV0dG9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19MaW5rUHJldmlld0dyb3VwLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19MaW5rUHJldmlld1dpZGdldC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fTGl2ZUNvbnRlbnRTdW1tYXJ5LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19NZW1iZXJJbmZvLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19NZW1iZXJMaXN0LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19NZXNzYWdlQ29tcG9zZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX01lc3NhZ2VDb21wb3NlckZvcm1hdEJhci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fTmV3Um9vbUludHJvLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19Ob3RpZmljYXRpb25CYWRnZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fUGlubmVkRXZlbnRUaWxlLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19QcmVzZW5jZUxhYmVsLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19SZWFkUmVjZWlwdEdyb3VwLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19SZWNlbnRseVZpZXdlZEJ1dHRvbi5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fUmVwbHlQcmV2aWV3LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19SZXBseVRpbGUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX1Jvb21CcmVhZGNydW1icy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fUm9vbUNhbGxCYW5uZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX1Jvb21IZWFkZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX1Jvb21JbmZvTGluZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fUm9vbUxpc3QucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX1Jvb21MaXN0SGVhZGVyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19Sb29tUHJldmlld0Jhci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fUm9vbVByZXZpZXdDYXJkLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19Sb29tU3VibGlzdC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fUm9vbVRpbGUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX1Jvb21VcGdyYWRlV2FybmluZ0Jhci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fU2VhcmNoQmFyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19TZW5kTWVzc2FnZUNvbXBvc2VyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19TdGlja2Vycy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fVGhyZWFkU3VtbWFyeS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy9fVG9wVW5yZWFkTWVzc2FnZXNCYXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvX1ZvaWNlUmVjb3JkQ29tcG9zZXJUaWxlLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL19XaG9Jc1R5cGluZ1RpbGUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvd3lzaXd5Z19jb21wb3Nlci9fRWRpdFd5c2l3eWdDb21wb3Nlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9yb29tcy93eXNpd3lnX2NvbXBvc2VyL19TZW5kV3lzaXd5Z0NvbXBvc2VyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL3d5c2l3eWdfY29tcG9zZXIvY29tcG9uZW50cy9fRWRpdG9yLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3Jvb21zL3d5c2l3eWdfY29tcG9zZXIvY29tcG9uZW50cy9fRm9ybWF0dGluZ0J1dHRvbnMucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvcm9vbXMvd3lzaXd5Z19jb21wb3Nlci9jb21wb25lbnRzL19MaW5rTW9kYWwucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvX0F2YXRhclNldHRpbmcucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvX0Nyb3NzU2lnbmluZ1BhbmVsLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3NldHRpbmdzL19DcnlwdG9ncmFwaHlQYW5lbC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fRm9udFNjYWxpbmdQYW5lbC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fSW1hZ2VTaXplUGFuZWwucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvX0ludGVncmF0aW9uTWFuYWdlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fSm9pblJ1bGVTZXR0aW5ncy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fS2V5Ym9hcmRTaG9ydGN1dC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fTGF5b3V0U3dpdGNoZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvX05vdGlmaWNhdGlvbnMucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvX1Bob25lTnVtYmVycy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fUHJvZmlsZVNldHRpbmdzLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3NldHRpbmdzL19TZWN1cmVCYWNrdXBQYW5lbC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fU2V0SWRTZXJ2ZXIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvX1NldEludGVncmF0aW9uTWFuYWdlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fU2V0dGluZ3NGaWVsZHNldC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fU3BlbGxDaGVja0xhbmd1YWdlcy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fVGhlbWVDaG9pY2VQYW5lbC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy9fVXBkYXRlQ2hlY2tCdXR0b24ucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvdGFicy9fU2V0dGluZ3NTZWN0aW9uLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3NldHRpbmdzL3RhYnMvX1NldHRpbmdzVGFiLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3NldHRpbmdzL3RhYnMvcm9vbS9fTm90aWZpY2F0aW9uU2V0dGluZ3NUYWIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvdGFicy9yb29tL19Sb2xlc1Jvb21TZXR0aW5nc1RhYi5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy90YWJzL3Jvb20vX1NlY3VyaXR5Um9vbVNldHRpbmdzVGFiLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3NldHRpbmdzL3RhYnMvdXNlci9fQXBwZWFyYW5jZVVzZXJTZXR0aW5nc1RhYi5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zZXR0aW5ncy90YWJzL3VzZXIvX0dlbmVyYWxVc2VyU2V0dGluZ3NUYWIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvdGFicy91c2VyL19IZWxwVXNlclNldHRpbmdzVGFiLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3NldHRpbmdzL3RhYnMvdXNlci9fS2V5Ym9hcmRVc2VyU2V0dGluZ3NUYWIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvdGFicy91c2VyL19Nam9sbmlyVXNlclNldHRpbmdzVGFiLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3NldHRpbmdzL3RhYnMvdXNlci9fU2VjdXJpdHlVc2VyU2V0dGluZ3NUYWIucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvc2V0dGluZ3MvdGFicy91c2VyL19TaWRlYmFyVXNlclNldHRpbmdzVGFiLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3NwYWNlcy9fU3BhY2VCYXNpY1NldHRpbmdzLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3NwYWNlcy9fU3BhY2VDaGlsZHJlblBpY2tlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zcGFjZXMvX1NwYWNlQ3JlYXRlTWVudS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy9zcGFjZXMvX1NwYWNlUHVibGljU2hhcmUucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvdGVybXMvX0lubGluZVRlcm1zQWdyZWVtZW50LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3RvYXN0cy9fQW5hbHl0aWNzVG9hc3QucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvdG9hc3RzL19JbmNvbWluZ0NhbGxUb2FzdC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy90b2FzdHMvX0luY29taW5nTGVnYWN5Q2FsbFRvYXN0LnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3RvYXN0cy9fTm9uVXJnZW50RWNob0ZhaWx1cmVUb2FzdC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy90eXBvZ3JhcGh5L19IZWFkaW5nLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3VzZXItb25ib2FyZGluZy9fVXNlck9uYm9hcmRpbmdCdXR0b24ucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3MvdXNlci1vbmJvYXJkaW5nL19Vc2VyT25ib2FyZGluZ0hlYWRlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy91c2VyLW9uYm9hcmRpbmcvX1VzZXJPbmJvYXJkaW5nTGlzdC5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy91c2VyLW9uYm9hcmRpbmcvX1VzZXJPbmJvYXJkaW5nUGFnZS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy91c2VyLW9uYm9hcmRpbmcvX1VzZXJPbmJvYXJkaW5nVGFzay5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy92ZXJpZmljYXRpb24vX1ZlcmlmaWNhdGlvblNob3dTYXMucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvdm9pcC9MZWdhY3lDYWxsVmlldy9fTGVnYWN5Q2FsbFZpZXdCdXR0b25zLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3ZvaXAvX0NhbGxEdXJhdGlvbi5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy92b2lwL19DYWxsVmlldy5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy92b2lwL19EaWFsUGFkLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3ZvaXAvX0RpYWxQYWRDb250ZXh0TWVudS5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy92b2lwL19EaWFsUGFkTW9kYWwucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvdm9pcC9fTGVnYWN5Q2FsbFByZXZpZXcucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvdm9pcC9fTGVnYWN5Q2FsbFZpZXcucGNzc1wiO1xuQGltcG9ydCBcIi4vdmlld3Mvdm9pcC9fTGVnYWN5Q2FsbFZpZXdGb3JSb29tLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3ZvaXAvX0xlZ2FjeUNhbGxWaWV3SGVhZGVyLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZpZXdzL3ZvaXAvX0xlZ2FjeUNhbGxWaWV3U2lkZWJhci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92aWV3cy92b2lwL19WaWRlb0ZlZWQucGNzc1wiO1xuQGltcG9ydCBcIi4vdm9pY2UtYnJvYWRjYXN0L2F0b21zL19MaXZlQmFkZ2UucGNzc1wiO1xuQGltcG9ydCBcIi4vdm9pY2UtYnJvYWRjYXN0L2F0b21zL19QbGF5YmFja0NvbnRyb2xCdXR0b24ucGNzc1wiO1xuQGltcG9ydCBcIi4vdm9pY2UtYnJvYWRjYXN0L2F0b21zL19Wb2ljZUJyb2FkY2FzdENvbnRyb2wucGNzc1wiO1xuQGltcG9ydCBcIi4vdm9pY2UtYnJvYWRjYXN0L2F0b21zL19Wb2ljZUJyb2FkY2FzdEhlYWRlci5wY3NzXCI7XG5AaW1wb3J0IFwiLi92b2ljZS1icm9hZGNhc3QvYXRvbXMvX1ZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nQ29ubmVjdGlvbkVycm9yLnBjc3NcIjtcbkBpbXBvcnQgXCIuL3ZvaWNlLWJyb2FkY2FzdC9hdG9tcy9fVm9pY2VCcm9hZGNhc3RSb29tU3VidGl0bGUucGNzc1wiO1xuQGltcG9ydCBcIi4vdm9pY2UtYnJvYWRjYXN0L21vbGVjdWxlcy9fVm9pY2VCcm9hZGNhc3RCb2R5LnBjc3NcIjtcbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi8qKlxuICogUmVhY3QgVHJhbnNpdGlvbiBHcm91cCBhbmltYXRpb25zIGFyZSBwcmVmaXhlZCB3aXRoICdteF9ydGctLScgc28gdGhhdCB3ZVxuICoga25vdyB0aGV5IHNob3VsZCBub3QgYmUgdXNlZCBhbnl3aGVyZSBvdXRzaWRlIG9mIFJlYWN0IFRyYW5zaXRpb24gR3JvdXBzLlxuKi9cblxuLm14X3J0Zy0tZmFkZS1lbnRlciB7XG4gICAgb3BhY2l0eTogMDtcbn1cbi5teF9ydGctLWZhZGUtZW50ZXItYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMzAwbXMgZWFzZTtcbn1cbi5teF9ydGctLWZhZGUtZXhpdCB7XG4gICAgb3BhY2l0eTogMTtcbn1cbi5teF9ydGctLWZhZGUtZXhpdC1hY3RpdmUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBlYXNlO1xufVxuXG46cm9vdCB7XG4gICAgLS1ob3Zlci10cmFuc2l0aW9uOiAwLjA4cyBjdWJpYy1iZXppZXIoMC40NiwgMC4wMywgMC41MiwgMC45Nik7IC8qIHF1YWRyYXRpYyAqL1xufVxuXG5Aa2V5ZnJhbWVzIG14LS1hbmltLXB1bHNlIHtcbiAgICAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIG14X0RpYWxvZ19saWdodGJveF9iYWNrZ3JvdW5kX2tleWZyYW1lcyB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogJGxpZ2h0Ym94LWJhY2tncm91bmQtYmctb3BhY2l0eTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbXhfSW1hZ2VWaWV3X3BhbmVsX2tleWZyYW1lcyB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikge1xuICAgIEBrZXlmcmFtZXMgbXgtLWFuaW0tcHVsc2Uge1xuICAgICAgICAvKiBPdmVycmlkZSBhbGwga2V5ZnJhbWVzIGluIHJlZHVjZWQtbW90aW9uICovXG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBteF9EaWFsb2dfbGlnaHRib3hfYmFja2dyb3VuZF9rZXlmcmFtZXMge1xuICAgICAgICAvKiBPdmVycmlkZSBhbGwga2V5ZnJhbWVzIGluIHJlZHVjZWQtbW90aW9uICovXG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBteF9JbWFnZVZpZXdfcGFuZWxfa2V5ZnJhbWVzIHtcbiAgICAgICAgLyogT3ZlcnJpZGUgYWxsIGtleWZyYW1lcyBpbiByZWR1Y2VkLW1vdGlvbiAqL1xuICAgIH1cblxuICAgIC5teF9ydGctLWZhZGUtZW50ZXItYWN0aXZlIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG4gICAgLm14X3J0Zy0tZmFkZS1leGl0LWFjdGl2ZSB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5Db3B5cmlnaHQgMjAxNyBWZWN0b3IgQ3JlYXRpb25zIEx0ZFxuQ29weXJpZ2h0IDIwMTcgLSAyMDE5IE5ldyBWZWN0b3IgTHRkXG5Db3B5cmlnaHQgMjAxOSAtIDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQ1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbkBpbXBvcnQgXCIuL19mb250LXNpemVzLnBjc3NcIjtcbkBpbXBvcnQgXCIuL19mb250LXdlaWdodHMucGNzc1wiO1xuQGltcG9ydCBcIi4vX2FuaW1hdGlvbnMucGNzc1wiO1xuQGltcG9ydCBcIi4vX3NwYWNpbmcucGNzc1wiO1xuQGltcG9ydCB1cmwoXCJtYXBsaWJyZS1nbC9kaXN0L21hcGxpYnJlLWdsLmNzc1wiKTtcblxuOnJvb3Qge1xuICAgIGZvbnQtc2l6ZTogMTBweDtcblxuICAgIC0tY29udGFpbmVyLWJvcmRlci13aWR0aDogOHB4O1xuICAgIC0tY29udGFpbmVyLWdhcC13aWR0aDogOHB4OyAvKiBvbmx5IGV2ZW4gbnVtYmVycyBzaG91bGQgYmUgdXNlZCBiZWNhdXNlIG90aGVyd2lzZSB3ZSBnZXQgMC41cHggbWFyZ2luIHZhbHVlcy4gKi9cbiAgICAtLXRyYW5zaXRpb24tc2hvcnQ6IDAuMXM7XG4gICAgLS10cmFuc2l0aW9uLXN0YW5kYXJkOiAwLjNzO1xuICAgIC0tYnV0dG9ucy1kaWFsb2ctZ2FwLXJvdzogJHNwYWNpbmctODtcbiAgICAtLWJ1dHRvbnMtZGlhbG9nLWdhcC1jb2x1bW46ICRzcGFjaW5nLTg7XG4gICAgLS1NQm9keS1ib3JkZXItcmFkaXVzOiA4cHg7XG5cbiAgICAvKiBFeHBlY3RlZCB6LWluZGV4ZXMgZm9yIGRpYWxvZ3M6XG4gICAgICAgIDQwMDAgLSBEZWZhdWx0IHdyYXBwZXIgaW5kZXhcbiAgICAgICAgNDAwOSAtIFN0YXRpYyBkaWFsb2cgYmFja2dyb3VuZFxuICAgICAgICA0MDEwIC0gU3RhdGljIGRpYWxvZyBpdHNlbGZcbiAgICAgICAgNDAxMSAtIFN0YW5kYXJkIGRpYWxvZyBiYWNrZ3JvdW5kXG4gICAgICAgIDQwMTIgLSBTdGFuZGFyZCBkaWFsb2cgaXRzZWxmXG5cbiAgICAgICBUaGVzZSBhcmUgc2V0IHVwIHN1Y2ggdGhhdCB0aGUgc3RhdGljIGRpYWxvZyBhbHdheXMgYXBwZWFyc1xuICAgICAgIHVuZGVybmVhdGggdGhlIHN0YW5kYXJkIGRpYWxvZ3MuXG4gICAgICovXG4gICAgLS1kaWFsb2ctekluZGV4LXdyYXBwZXItZGVmYXVsdDogNDAwMDtcbiAgICAtLWRpYWxvZy16SW5kZXgtc3RhdGljLWJhY2tncm91bmQ6IDQwMDk7XG4gICAgLS1kaWFsb2ctekluZGV4LXN0YXRpYzogY2FsYyh2YXIoLS1kaWFsb2ctekluZGV4LXN0YXRpYy1iYWNrZ3JvdW5kKSArIDEpOyAvKiA0MDEwICovXG4gICAgLS1kaWFsb2ctekluZGV4LXN0YW5kYXJkLWJhY2tncm91bmQ6IGNhbGModmFyKC0tZGlhbG9nLXpJbmRleC1zdGF0aWMpICsgMSk7IC8qIDQwMTEgKi9cbiAgICAtLWRpYWxvZy16SW5kZXgtc3RhbmRhcmQ6IGNhbGModmFyKC0tZGlhbG9nLXpJbmRleC1zdGFuZGFyZC1iYWNrZ3JvdW5kKSArIDEpOyAvKiA0MDEyICovXG59XG5cbkBtZWRpYSBvbmx5IHBlcmN5IHtcbiAgICA6cm9vdCB7XG4gICAgICAgIC0tcGVyY3ktY29sb3ItYXZhdGFyOiAkdXNlcm5hbWUtdmFyaWFudDItY29sb3I7XG4gICAgICAgIC0tcGVyY3ktY29sb3ItZGlzcGxheU5hbWU6ICR1c2VybmFtZS12YXJpYW50MS1jb2xvcjtcbiAgICAgICAgLS1wZXJjeS1jb2xvci1yZXBseUNoYWluLWJvcmRlcjogJHVzZXJuYW1lLXZhcmlhbnQxLWNvbG9yO1xuICAgIH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uKSB7XG4gICAgOnJvb3Qge1xuICAgICAgICAtLXRyYW5zaXRpb24tc2hvcnQ6IDA7XG4gICAgICAgIC0tdHJhbnNpdGlvbi1zdGFuZGFyZDogMDtcbiAgICB9XG59XG5cbmh0bWwge1xuICAgIC8qIGhhY2sgdG8gc3RvcCBvdmVyc2Nyb2xsIGJvdW5jZSBvbiBPU1ggYW5kIGlPUy5cbiAgICAgICBOLkIuIEJyZWFrcyB0aGluZ3Mgd2hlbiB3ZSBoYXZlIGxlZ2l0aW1hdGUgaG9yaXpvbnRhbCBvdmVyc2Nyb2xsICovXG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgLyogU3RvcCBzaW1pbGFyIG92ZXJzY3JvbGwgYm91bmNlIGluIEZpcmVmb3ggTmlnaHRseSBmb3IgbWFjT1MgKi9cbiAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBub25lO1xufVxuXG5ib2R5IHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICBib3JkZXI6IDBweDtcbiAgICBtYXJnaW46IDBweDtcblxuICAgIC8qIG5lZWRlZCB0byBtYXRjaCB0aGUgZGVzaWducyBjb3JyZWN0bHkgb24gbWFjT1MgKi9cbiAgICAvKiBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3ZlY3Rvci1pbS9lbGVtZW50LXdlYi9pc3N1ZXMvMTE0MjUgKi9cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG5wcmUsXG5jb2RlIHtcbiAgICBmb250LWZhbWlseTogJG1vbm9zcGFjZS1mb250LWZhbWlseTtcbiAgICBmb250LXNpemU6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuLmVycm9yLFxuLndhcm5pbmcsXG4udGV4dC1lcnJvcixcbi50ZXh0LXdhcm5pbmcge1xuICAgIGNvbG9yOiAkYWxlcnQ7XG59XG5cbi50ZXh0LXN1Y2Nlc3Mge1xuICAgIGNvbG9yOiAkYWNjZW50O1xufVxuXG4udGV4dC1tdXRlZCB7XG4gICAgY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbn1cblxuYiB7XG4gICAgLyogT24gRmlyZWZveCwgdGhlIGRlZmF1bHQgd2VpZ2h0IGZvciBgPGI+YCBpcyBgYm9sZGVyYCB3aGljaCByZXN1bHRzIGluIG5vIGJvbGQgKi9cbiAgICAvKiBlZmZlY3Qgc2luY2Ugd2Ugb25seSBoYXZlIHNwZWNpZmljIHdlaWdodHMgb2Ygb3VyIGZvbnRzIGF2YWlsYWJsZS4gKi9cbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuaDIge1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1zaXplOiAkZm9udC0xOHB4O1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cblxuYTpob3ZlcixcbmE6bGluayxcbmE6dmlzaXRlZCB7XG4gICAgY29sb3I6ICRhY2NlbnQtYWx0O1xufVxuXG5pbnB1dFt0eXBlPVwidGV4dFwiXSxcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0sXG5pbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0ge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIHBhZGRpbmc6IDlweDtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbmlucHV0W3R5cGU9XCJ0ZXh0XCJdLm14X3RleHRpbnB1dF9pY29uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXS5teF90ZXh0aW5wdXRfaWNvbiB7XG4gICAgcGFkZGluZy1sZWZ0OiAzNnB4O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTBweCBjZW50ZXI7XG59XG5cbi8qIEZJWE1FIFRIRU1FIC0gVGludCBieSBDU1MgcmF0aGVyIHRoYW4gcmVmZXJlbmNpbmcgYSBkdXBsaWNhdGUgYXNzZXQgKi9cbmlucHV0W3R5cGU9XCJ0ZXh0XCJdLm14X3RleHRpbnB1dF9pY29uLm14X3RleHRpbnB1dF9zZWFyY2gsXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdLm14X3RleHRpbnB1dF9pY29uLm14X3RleHRpbnB1dF9zZWFyY2gge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL3NlYXJjaC1pbnB1dC5zdmdcIik7XG59XG5cbi8qIGRvbnQgc2VhcmNoIFVJIGFzIG5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCBpdCwgKi9cbi8qIHdlIGltcGxlbWVudCBpdCBvdXJzZWx2ZXMgd2hlcmUgbmVlZGVkIGluc3RlYWQgKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIE92ZXJyaWRlIEZpcmVmb3gncyBVQSBzdHlsZSBzbyB3ZSBnZXQgYSBjb25zaXN0ZW50IGxvb2sgYWNyb3NzIGJyb3dzZXJzICovXG5pbnB1dDo6cGxhY2Vob2xkZXIsXG50ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuICAgIG9wYWNpdHk6IGluaXRpYWw7XG59XG5cbmlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxudGV4dGFyZWEge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xufVxuXG4vKiBSZXF1aXJlZCBieSBGaXJlZm94ICovXG50ZXh0YXJlYSB7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG59XG5cbmlucHV0W3R5cGU9XCJ0ZXh0XCJdOmZvY3VzLFxuaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmZvY3VzLFxudGV4dGFyZWE6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLyogVGhpcyBpcyB1c2VkIHRvIGhpZGUgdGhlIHN0YW5kYXJkIG91dGxpbmUgYWRkZWQgYnkgYnJvd3NlcnMgZm9yICovXG4vKiBhY2Nlc3NpYmxlIChmb2N1c2FibGUpIGNvbXBvbmVudHMuIE5vdCBpbnRlbmRlZCBmb3IgYnV0dG9ucywgYnV0ICovXG4vKiBzaG91bGQgYmUgdXNlZCBvbiB0aGluZ3MgbGlrZSBmb2N1c2FibGUgY29udGFpbmVycyB3aGVyZSB0aGUgb3V0bGluZSAqL1xuLyogaXMgdXN1YWxseSBub3QgaGVscGluZyBhbnlvbmUuICovXG4qOmZvY3VzOm5vdCguZm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi8qIG92ZXJyaWRlIGRlZmF1bHRzICovXG5maWVsZHNldCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1pbmxpbmU6IHVuc2V0O1xuICAgIHBhZGRpbmctYmxvY2s6IHVuc2V0O1xuICAgIHBhZGRpbmctaW5saW5lOiB1bnNldDtcbiAgICBtaW4taW5saW5lLXNpemU6IHVuc2V0O1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuc3VtbWFyeSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5sZWdlbmQge1xuICAgIHBhZGRpbmctaW5saW5lOiB1bnNldDtcbiAgICBib3JkZXI6IG5vbmU7XG59XG5cbi8qIC5teF90ZXh0aW5wdXQgaXMgYSBjb250YWluZXIgZm9yIGEgdGV4dCBpbnB1dCAqL1xuLyogKyBzb21lIG90aGVyIGNvbnRyb2xzIGxpa2UgYnV0dG9ucywgLi4uICovXG4vKiBpdCBoYXMgdGhlIGFwcGVhcmFuY2Ugb2YgYSB0ZXh0IGJveCBzbyB0aGUgY29udHJvbHMgKi9cbi8qIGFwcGVhciB0byBiZSBwYXJ0IG9mIHRoZSBpbnB1dCAqL1xuXG4ubXhfRGlhbG9nLFxuLm14X01hdHJpeENoYXRfd3JhcHBlciB7XG4gICAgLm14X3RleHRpbnB1dCA+IGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuICAgIC5teF90ZXh0aW5wdXQgPiBpbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICB9XG5cbiAgICA6bm90KC5teF90ZXh0aW5wdXQpOm5vdCgubXhfRmllbGQpOm5vdCgubXhfbm9fdGV4dGlucHV0KSA+IGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuICAgIDpub3QoLm14X3RleHRpbnB1dCk6bm90KC5teF9GaWVsZCk6bm90KC5teF9ub190ZXh0aW5wdXQpID4gaW5wdXRbdHlwZT1cInNlYXJjaFwiXSxcbiAgICAubXhfdGV4dGlucHV0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogJGlucHV0LWRhcmtlci1mZy1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRwcmltYXJ5LWNvbnRlbnQsIDAuMSk7XG4gICAgICAgIC8qIHRoZXNlIHRoaW5ncyBzaG91bGQgcHJvYmFibHkgbm90IGJlIGRlZmluZWQgZ2xvYmFsbHkgKi9cbiAgICAgICAgbWFyZ2luOiA5cHg7XG4gICAgfVxuXG4gICAgLm14X3RleHRpbnB1dCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgOm5vdCgubXhfdGV4dGlucHV0KTpub3QoLm14X0ZpZWxkKTpub3QoLm14X25vX3RleHRpbnB1dCkgPiBpbnB1dFt0eXBlPVwidGV4dFwiXTo6cGxhY2Vob2xkZXIsXG4gICAgOm5vdCgubXhfdGV4dGlucHV0KTpub3QoLm14X0ZpZWxkKTpub3QoLm14X25vX3RleHRpbnB1dCkgPiBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOjpwbGFjZWhvbGRlcixcbiAgICAubXhfdGV4dGlucHV0IGlucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiByZ2JhKCRpbnB1dC1kYXJrZXItZmctY29sb3IsIDAuNzUpO1xuICAgIH1cbn1cblxuLyoqKiBwYW5lbHMgKioqL1xuLmRhcmstcGFuZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkYXJrLXBhbmVsLWJnLWNvbG9yO1xuXG4gICAgOm5vdCgubXhfdGV4dGlucHV0KTpub3QoLm14X0ZpZWxkKTpub3QoLm14X25vX3RleHRpbnB1dCkgPiBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbiAgICA6bm90KC5teF90ZXh0aW5wdXQpOm5vdCgubXhfRmllbGQpOm5vdCgubXhfbm9fdGV4dGlucHV0KSA+IGlucHV0W3R5cGU9XCJzZWFyY2hcIl0sXG4gICAgLm14X3RleHRpbnB1dCB7XG4gICAgICAgIGNvbG9yOiAkaW5wdXQtZGFya2VyLWZnLWNvbG9yO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgIH1cbn1cblxuLmxpZ2h0LXBhbmVsIHtcbiAgICA6bm90KC5teF90ZXh0aW5wdXQpOm5vdCgubXhfRmllbGQpOm5vdCgubXhfbm9fdGV4dGlucHV0KSA+IGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuICAgIDpub3QoLm14X3RleHRpbnB1dCk6bm90KC5teF9GaWVsZCk6bm90KC5teF9ub190ZXh0aW5wdXQpID4gaW5wdXRbdHlwZT1cInNlYXJjaFwiXSxcbiAgICAubXhfdGV4dGlucHV0IHtcbiAgICAgICAgY29sb3I6ICRpbnB1dC1kYXJrZXItZmctY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1saWdodGVyLWJnLWNvbG9yO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxufVxuXG4vKiBQcmV2ZW50IHVnbHkgZG90dGVkIGhpZ2hsaWdodCBhcm91bmQgc2VsZWN0ZWQgZWxlbWVudHMgaW4gRmlyZWZveCAqL1xuOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICBib3JkZXI6IDA7XG59XG5cbi8qIFRoZXNlIGFyZSBtYWdpYyBjb25zdGFudHMgd2hpY2ggYXJlIGV4Y2x1ZGVkIGZyb20gdGludGluZywgdG8gbGV0IHRoZW1lcyAqL1xuLyogKHdoaWNoIG9ubHkgaGF2ZSBDU1MpIHRlbGwgdGhlIGFwcCB3aGF0IHRoZWlyIG5vbi10aW50ZWQgKi9cbi8qIGNvbG91cnNjaGVtZSBpcyBieSBpbnNwZWN0aW5nIHRoZSBzdHlsZXNoZWV0IERPTS4gKi9cbi8qIFRoZXkgYXJlIG5vdCB1c2VkIGZvciBsYXlvdXQhISAqL1xuI214X3RoZW1lX2FjY2VudENvbG9yIHtcbiAgICBjb2xvcjogJGFjY2VudDtcbn1cblxuI214X3RoZW1lX3NlY29uZGFyeUFjY2VudENvbG9yIHtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1hY2NlbnQtY29sb3I7XG59XG5cbi5teF9EaWFsb2dfd3JhcHBlciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6IHZhcigtLWRpYWxvZy16SW5kZXgtd3JhcHBlci1kZWZhdWx0KTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5teF9EaWFsb2cge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkbGlnaHQtZmctY29sb3I7XG4gICAgei1pbmRleDogdmFyKC0tZGlhbG9nLXpJbmRleC1zdGFuZGFyZCk7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAyNHB4O1xuICAgIG1heC1oZWlnaHQ6IDgwJTtcbiAgICBib3gtc2hhZG93OiAycHggMTVweCAzMHB4IDAgJGRpYWxvZy1zaGFkb3ctY29sb3I7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAubXhfRGlhbG9nX3N0YXRpY1dyYXBwZXIgJiB7XG4gICAgICAgIHotaW5kZXg6IHZhcigtLWRpYWxvZy16SW5kZXgtc3RhdGljKTtcbiAgICAgICAgY29udGFpbjogY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfRGlhbG9nX2xpZ2h0Ym94ICYge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC8qIFN0eWxlcyBjb3BpZWQvaW5zcGlyZWQgYnkgR3JvdXBMYXlvdXQsIFJlcGx5VGlsZSwgYW5kIEV2ZW50VGlsZSB2YXJpYW50cy4gKi9cbiAgICAubWFya2Rvd24tYm9keSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7IC8qIGluaGVyaXQgdGhlIGNvbG91ciBmcm9tIHRoZSBkYXJrIG9yIGxpZ2h0IHRoZW1lIGJ5IGRlZmF1bHQgKGJ1dCBub3QgZm9yIGNvZGUgYmxvY2tzKSAqL1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG5cbiAgICAgICAgcHJlLFxuICAgICAgICBjb2RlIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkbW9ub3NwYWNlLWZvbnQtZmFtaWx5ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAvKiB0aGlzIHNlbGVjdG9yIHdyb25nbHkgYXBwbGllcyB0byBjb2RlIGJsb2NrcyB0b28gYnV0IHdlIHdpbGwgdW5zZXQgaXQgaW4gdGhlIG5leHQgb25lICovXG4gICAgICAgIGNvZGUge1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyAvKiBkb24ndCBjb2xsYXBzZSBzcGFjZXMgaW4gaW5saW5lIGNvZGUgYmxvY2tzICovXG4gICAgICAgIH1cblxuICAgICAgICBwcmUge1xuICAgICAgICAgICAgLyogaGF2ZSB0byB1c2Ugb3ZlcmxheSByYXRoZXIgdGhhbiBhdXRvIG90aGVyd2lzZSBMaW51eCBhbmQgV2luZG93cyAqL1xuICAgICAgICAgICAgLyogQ2hyb21lIGdldHMgdmVyeSBjb25mdXNlZCBhYm91dCB2ZXJ0aWNhbCBzcGFjaW5nOiAqL1xuICAgICAgICAgICAgLyogaHR0cHM6Ly9naXRodWIuY29tL3ZlY3Rvci1pbS92ZWN0b3Itd2ViL2lzc3Vlcy83NTQgKi9cbiAgICAgICAgICAgIG92ZXJmbG93LXg6IG92ZXJsYXk7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiB2aXNpYmxlO1xuXG4gICAgICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2RlIHtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlOyAvKiB3ZSB3YW50IGNvZGUgYmxvY2tzIHRvIGJlIHNjcm9sbGFibGUgYW5kIG5vdCB3cmFwICovXG5cbiAgICAgICAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaDEsXG4gICAgICAgIGgyLFxuICAgICAgICBoMyxcbiAgICAgICAgaDQsXG4gICAgICAgIGg1LFxuICAgICAgICBoNiB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBNYWtlIGgxIGFuZCBoMiB0aGUgc2FtZSBzaXplIGFzIGgzLiAqL1xuICAgICAgICBoMSxcbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsgLyogb3ZlcnJpZGUgR0ZNICovXG4gICAgICAgIH1cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYWNjZW50LWFsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJsb2NrcXVvdGUge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAkYmxvY2txdW90ZS1iYXItY29sb3I7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9EaWFsb2dfZml4ZWRXaWR0aCB7XG4gICAgd2lkdGg6IDYwdnc7XG4gICAgbWF4LXdpZHRoOiA3MDRweDtcbn1cblxuLm14X0RpYWxvZ19iYWNrZ3JvdW5kIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkaWFsb2ctYmFja2Ryb3AtY29sb3I7XG4gICAgb3BhY2l0eTogMC44O1xuICAgIHotaW5kZXg6IHZhcigtLWRpYWxvZy16SW5kZXgtc3RhbmRhcmQtYmFja2dyb3VuZCk7XG5cbiAgICAmLm14X0RpYWxvZ19zdGF0aWNCYWNrZ3JvdW5kIHtcbiAgICAgICAgei1pbmRleDogdmFyKC0tZGlhbG9nLXpJbmRleC1zdGF0aWMtYmFja2dyb3VuZCk7XG4gICAgfVxuXG4gICAgLm14X0RpYWxvZ193cmFwcGVyV2l0aFN0YXRpY1VuZGVyICYge1xuICAgICAgICAvKiBSb3VnaGx5IGhhbGYgb2Ygd2hhdCBpdCB3b3VsZCBub3JtYWxseSBiZSAtIHdlIGRvbid0IHdhbnQgdG8gYmxhY2sgb3V0ICovXG4gICAgICAgIC8qIHRoZSBhcHAsIGp1c3QgbWFrZSBpdCBjbGVhciB0aGF0IHRoZSBkaWFsb2dzIGFyZSBzdGFja2VkLiAqL1xuICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgfVxuXG4gICAgLm14X0RpYWxvZ19saWdodGJveCAmIHtcbiAgICAgICAgb3BhY2l0eTogJGxpZ2h0Ym94LWJhY2tncm91bmQtYmctb3BhY2l0eTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0Ym94LWJhY2tncm91bmQtYmctY29sb3I7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBteF9EaWFsb2dfbGlnaHRib3hfYmFja2dyb3VuZF9rZXlmcmFtZXM7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMzAwbXM7XG4gICAgfVxufVxuXG4ubXhfRGlhbG9nX3RpdGxlSW1hZ2Uge1xuICAgIHZlcnRpY2FsLWFsaWduOiBzdWI7XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgaGVpZ2h0OiAyNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDJweDtcbn1cblxuLm14X0RpYWxvZ190aXRsZSB7XG4gICAgY29sb3I6ICRkaWFsb2ctdGl0bGUtZmctY29sb3I7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICAmLmRhbmdlciB7XG4gICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgfVxufVxuXG4ubXhfRGlhbG9nX2hlYWRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDNweCAwO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG5cbiAgICAmLm14X0RpYWxvZ19oZWFkZXJXaXRoQnV0dG9uID4gLm14X0RpYWxvZ190aXRsZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAmLm14X0RpYWxvZ19oZWFkZXJXaXRoQ2FuY2VsIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDsgLyogbGVhdmUgc3BhY2UgZm9yIHRoZSAnWCcgY2FuY2VsIGJ1dHRvbiAqL1xuICAgIH1cblxuICAgICYubXhfRGlhbG9nX2hlYWRlcldpdGhDYW5jZWxPbmx5IHtcbiAgICAgICAgcGFkZGluZzogMCAyMHB4IDAgMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn1cblxuQGRlZmluZS1taXhpbiBjdXN0b21pc2VkQ2FuY2VsQnV0dG9uIHtcbiAgICBtYXNrOiB1cmwoXCIkKHJlcykvaW1nL2NhbmNlbC5zdmdcIik7XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgbWFzay1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGlhbG9nLWNsb3NlLWZnLWNvbG9yO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb3NpdGlvbjogdW5zZXQ7XG4gICAgd2lkdGg6IHVuc2V0O1xuICAgIGhlaWdodDogdW5zZXQ7XG59XG5cbi5teF9EaWFsb2dfY2FuY2VsQnV0dG9uIHtcbiAgICBAbWl4aW4gY3VzdG9taXNlZENhbmNlbEJ1dHRvbjtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTBweDtcbiAgICByaWdodDogMDtcbn1cblxuLm14X0RpYWxvZ19jb250ZW50IHtcbiAgICBtYXJnaW46IDI0cHggMCA2OHB4O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbi5teF9EaWFsb2dfYnV0dG9ucyB7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMjA7XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgIC5teF9EaWFsb2dfYnV0dG9uc19hZGRpdGl2ZSB7XG4gICAgICAgIC8qIFRoZSBjb25zdW1lciBpcyByZXNwb25zaWJsZSBmb3IgcG9zaXRpb25pbmcgdGhlaXIgZWxlbWVudHMuICovXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC5teF9EaWFsb2dfYnV0dG9uc19yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIHRleHQtYWxpZ246IGluaXRpYWw7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGF1dG87XG5cbiAgICAgICAgLyogZGVmYXVsdCBnYXAgYW1vbmcgZWxlbWVudHMgKi9cbiAgICAgICAgY29sdW1uLWdhcDogdmFyKC0tYnV0dG9ucy1kaWFsb2ctZ2FwLWNvbHVtbik7XG4gICAgICAgIHJvdy1nYXA6IHZhcigtLWJ1dHRvbnMtZGlhbG9nLWdhcC1yb3cpO1xuXG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsgLyogb3ZlcnJpZGUgdGhlIG1hcmdpbiBzZXR0aW5ncyAqL1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AZGVmaW5lLW1peGluIG14X0RpYWxvZ0J1dHRvbiB7XG4gICAgLyogYWxpZ24gaW1hZ2VzIGluIGJ1dHRvbnMgKGVnIHNwaW5uZXJzKSAqL1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgYm9yZGVyOiAwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgIGNvbG9yOiAkYnV0dG9uLWZnLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgcGFkZGluZzogN3B4O1xuICAgIHBhZGRpbmctbGVmdDogMS41ZW07XG4gICAgcGFkZGluZy1yaWdodDogMS41ZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICY6bm90KC5mb2N1cy12aXNpYmxlKSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxufVxuXG4vKiBYWFg6IE91ciBidXR0b24gc3R5bGUgYXJlIGEgbWVzczogYnV0dG9ucyB0aGF0IGhhcHBlbiB0byBhcHBlYXIgaW4gZGlhbG9ncyBnZXQgc3BlY2lhbCBzdHlsZXMgYXBwbGllZFxuICogdG8gdGhlbSB0aGF0IG5vIGJ1dHRvbiBhbnl3aGVyZSBlbHNlIGluIHRoZSBhcHAgZ2V0cyBieSBkZWZhdWx0LiBJbiBwcmFjdGljZSwgYnV0dG9ucyBpbiBvdGhlciBwbGFjZXNcbiAqIGluIHRoZSBhcHAgbG9vayB0aGUgc2FtZSBieSBiZWluZyBBY2Nlc3NpYmxlQnV0dG9ucywgb3IgcG9zc2libHkgYnkgaGF2aW5nIGV4cGxpY3QgYnV0dG9uIGNsYXNzZXMuXG4gKiBXZSBzaG91bGQgZ28gdGhyb3VnaCBhbmQgaGF2ZSBvbmUgY29uc2lzdGVudCBzZXQgb2Ygc3R5bGVzIGZvciBidXR0b25zIHRocm91Z2hvdXQgdGhlIGFwcC5cbiAqIEZvciBub3csIEkgYW0gZHVwbGljYXRpbmcgdGhlIHNlbGVjdG9ycyBoZXJlIGZvciBteF9EaWFsb2cgYW5kIG14X0RpYWxvZ0J1dHRvbnMuXG4gKlxuICogRWxlbWVudHMgdGhhdCBzaG91bGQgbm90IGJlIHN0eWxlZCBsaWtlIGEgZGlhbG9nIGJ1dHRvbiBhcmUgbWVudGlvbmVkIGluIGEgOm5vdCgpIHBzZXVkby1jbGFzcy5cbiAqIEZvciB0aGUgd2lkZXN0IGJyb3dzZXIgc3VwcG9ydCwgd2UgdXNlIG11bHRpcGxlIDpub3QgcHNldWRvLWNsYXNzZXMgaW5zdGVhZCBvZiA6bm90KC5hLCAuYikuXG4gKi9cbi5teF9EaWFsb2cgYnV0dG9uOm5vdCgubXhfRGlhbG9nX25vbkRpYWxvZ0J1dHRvbik6bm90KFtjbGFzc3w9XCJtYXBsaWJyZWdsXCJdKTpub3QoLm14X0FjY2Vzc2libGVCdXR0b24pLFxuLm14X0RpYWxvZyBpbnB1dFt0eXBlPVwic3VibWl0XCJdLFxuLm14X0RpYWxvZ19idXR0b25zIGJ1dHRvbjpub3QoLm14X0RpYWxvZ19ub25EaWFsb2dCdXR0b24pOm5vdCgubXhfQWNjZXNzaWJsZUJ1dHRvbiksXG4ubXhfRGlhbG9nX2J1dHRvbnMgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgQG1peGluIG14X0RpYWxvZ0J1dHRvbjtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogdmFyKC0tYnV0dG9ucy1kaWFsb2ctZ2FwLWNvbHVtbik7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuXG4gICAgLyogZmxpcCBjb2xvdXJzIGZvciB0aGUgc2Vjb25kYXJ5IG9uZXMgKi9cbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRhY2NlbnQ7XG4gICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1zZWNvbmRhcnktYmctY29sb3I7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG59XG5cbi5teF9EaWFsb2cgYnV0dG9uOm5vdCgubXhfRGlhbG9nX25vbkRpYWxvZ0J1dHRvbik6bm90KFtjbGFzc3w9XCJtYXBsaWJyZWdsXCJdKTpub3QoLm14X0FjY2Vzc2libGVCdXR0b24pOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1yaWdodDogMHB4O1xufVxuXG4ubXhfRGlhbG9nIGJ1dHRvbjpub3QoLm14X0RpYWxvZ19ub25EaWFsb2dCdXR0b24pOm5vdChbY2xhc3N8PVwibWFwbGlicmVnbFwiXSk6bm90KC5teF9BY2Nlc3NpYmxlQnV0dG9uKTpmb2N1cyxcbi5teF9EaWFsb2cgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpmb2N1cyxcbi5teF9EaWFsb2dfYnV0dG9ucyBidXR0b246bm90KC5teF9EaWFsb2dfbm9uRGlhbG9nQnV0dG9uKTpub3QoLm14X0FjY2Vzc2libGVCdXR0b24pOmZvY3VzLFxuLm14X0RpYWxvZ19idXR0b25zIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06Zm9jdXMge1xuICAgIGZpbHRlcjogYnJpZ2h0bmVzcygkZm9jdXMtYnJpZ2h0bmVzcyk7XG59XG5cbi5teF9EaWFsb2cgYnV0dG9uLm14X0RpYWxvZ19wcmltYXJ5Om5vdCgubXhfRGlhbG9nX25vbkRpYWxvZ0J1dHRvbik6bm90KFtjbGFzc3w9XCJtYXBsaWJyZWdsXCJdKSxcbi5teF9EaWFsb2cgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXS5teF9EaWFsb2dfcHJpbWFyeSxcbi5teF9EaWFsb2dfYnV0dG9ucyBidXR0b24ubXhfRGlhbG9nX3ByaW1hcnk6bm90KC5teF9EaWFsb2dfbm9uRGlhbG9nQnV0dG9uKTpub3QoLm14X0FjY2Vzc2libGVCdXR0b24pLFxuLm14X0RpYWxvZ19idXR0b25zIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ubXhfRGlhbG9nX3ByaW1hcnkge1xuICAgIGNvbG9yOiAkYWNjZW50LWZnLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgbWluLXdpZHRoOiAxNTZweDtcbn1cblxuLm14X0RpYWxvZyBidXR0b24uZGFuZ2VyOm5vdCgubXhfRGlhbG9nX25vbkRpYWxvZ0J1dHRvbik6bm90KFtjbGFzc3w9XCJtYXBsaWJyZWdsXCJdKSxcbi5teF9EaWFsb2cgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXS5kYW5nZXIsXG4ubXhfRGlhbG9nX2J1dHRvbnMgYnV0dG9uLmRhbmdlcjpub3QoLm14X0RpYWxvZ19ub25EaWFsb2dCdXR0b24pOm5vdCgubXhfQWNjZXNzaWJsZUJ1dHRvbiksXG4ubXhfRGlhbG9nX2J1dHRvbnMgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXS5kYW5nZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhbGVydDtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAkYWxlcnQ7XG4gICAgY29sb3I6ICRhY2NlbnQtZmctY29sb3I7XG59XG5cbi5teF9EaWFsb2cgYnV0dG9uLndhcm5pbmc6bm90KC5teF9EaWFsb2dfbm9uRGlhbG9nQnV0dG9uKTpub3QoW2NsYXNzfD1cIm1hcGxpYnJlZ2xcIl0pLFxuLm14X0RpYWxvZyBpbnB1dFt0eXBlPVwic3VibWl0XCJdLndhcm5pbmcge1xuICAgIGJvcmRlcjogc29saWQgMXB4ICRhbGVydDtcbiAgICBjb2xvcjogJGFsZXJ0O1xufVxuXG4ubXhfRGlhbG9nIGJ1dHRvbjpub3QoLm14X0RpYWxvZ19ub25EaWFsb2dCdXR0b24pOm5vdChbY2xhc3N8PVwibWFwbGlicmVnbFwiXSk6bm90KC5teF9BY2Nlc3NpYmxlQnV0dG9uKTpkaXNhYmxlZCxcbi5teF9EaWFsb2cgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpkaXNhYmxlZCxcbi5teF9EaWFsb2dfYnV0dG9ucyBidXR0b246bm90KC5teF9EaWFsb2dfbm9uRGlhbG9nQnV0dG9uKTpub3QoLm14X0FjY2Vzc2libGVCdXR0b24pOmRpc2FibGVkLFxuLm14X0RpYWxvZ19idXR0b25zIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1mZy1jb2xvcjtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAkbGlnaHQtZmctY29sb3I7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4vKiBTcGlubmVyIERpYWxvZyBvdmVyaWRlICovXG4ubXhfRGlhbG9nX3dyYXBwZXIubXhfRGlhbG9nX3NwaW5uZXIgLm14X0RpYWxvZyB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuXG4gICAgLyogRG9uJ3Qgc2hvdyBzY3JvbGwtYmFycyBvbiBzcGlubmVyIGRpYWxvZ3MgKi9cbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xufVxuXG4vKiBUT0RPOiBSZXZpZXcgbXhfR2VuZXJhbEJ1dHRvbiB1c2FnZSB0byBzZWUgaWYgaXQgY2FuIHVzZSBhIGRpZmZlcmVudCBjbGFzcyAqL1xuLyogVGhlc2UgY2xhc3NlcyB3ZXJlIGJyb3VnaHQgaW4gZnJvbSB0aGUgb2xkIFVzZXJTZXR0aW5ncyBhbmQgYXJlIGluY2x1ZGVkIGhlcmUgdG8gYXZvaWQgKi9cbi8qIGJyZWFraW5nIHRoZSBhcHAuICovXG4vKiBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS92ZWN0b3ItaW0vZWxlbWVudC13ZWIvaXNzdWVzLzg0MjAgKi9cbi5teF9HZW5lcmFsQnV0dG9uIHtcbiAgICBAbWl4aW4gbXhfRGlhbG9nQnV0dG9uO1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBtYXJnaW46IGF1dG87XG59XG5cbi5teF9UZXh0SW5wdXREaWFsb2dfbGFiZWwge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgcGFkZGluZy1ib3R0b206IDEycHg7XG59XG5cbi5teF9UZXh0SW5wdXREaWFsb2dfaW5wdXQge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgICBwYWRkaW5nOiA5cHg7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG59XG5cbi5teF9idXR0b25fcm93IHtcbiAgICBtYXJnaW4tdG9wOiA2OXB4O1xufVxuXG4vKiB1c2VybmFtZSBjb2xvcnMgKi9cbi8qIHVzZWQgYnkgU2VuZGVyUHJvZmlsZSAmIFJvb21QcmV2aWV3QmFyICovXG4ubXhfVXNlcm5hbWVfY29sb3IxIHtcbiAgICBjb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQxLWNvbG9yO1xufVxuXG4ubXhfVXNlcm5hbWVfY29sb3IyIHtcbiAgICBjb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQyLWNvbG9yO1xufVxuXG4ubXhfVXNlcm5hbWVfY29sb3IzIHtcbiAgICBjb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQzLWNvbG9yO1xufVxuXG4ubXhfVXNlcm5hbWVfY29sb3I0IHtcbiAgICBjb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQ0LWNvbG9yO1xufVxuXG4ubXhfVXNlcm5hbWVfY29sb3I1IHtcbiAgICBjb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQ1LWNvbG9yO1xufVxuXG4ubXhfVXNlcm5hbWVfY29sb3I2IHtcbiAgICBjb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQ2LWNvbG9yO1xufVxuXG4ubXhfVXNlcm5hbWVfY29sb3I3IHtcbiAgICBjb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQ3LWNvbG9yO1xufVxuXG4ubXhfVXNlcm5hbWVfY29sb3I4IHtcbiAgICBjb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQ4LWNvbG9yO1xufVxuXG5AZGVmaW5lLW1peGluIFByb2dyZXNzQmFyQ29sb3VyICRjb2xvdXIge1xuICAgIGNvbG9yOiAkY29sb3VyO1xuICAgICY6Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG91cjtcbiAgICB9XG4gICAgJjo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXI7XG4gICAgfVxufVxuXG5AZGVmaW5lLW1peGluIFByb2dyZXNzQmFyQmdDb2xvdXIgJGNvbG91ciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG91cjtcbiAgICAmOjotd2Via2l0LXByb2dyZXNzLWJhciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXI7XG4gICAgfVxufVxuXG5AZGVmaW5lLW1peGluIFByb2dyZXNzQmFyQm9yZGVyUmFkaXVzICRyYWRpdXMge1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgJjo6LW1vei1wcm9ncmVzcy1iYXIge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIH1cbiAgICAmOjotd2Via2l0LXByb2dyZXNzLWJhcixcbiAgICAmOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgICB9XG59XG5cbkBkZWZpbmUtbWl4aW4gdW5yZWFsLWZvY3VzIHtcbiAgICBvdXRsaW5lLXdpZHRoOiAycHg7XG4gICAgb3V0bGluZS1zdHlsZTogc29saWQ7XG4gICAgb3V0bGluZS1jb2xvcjogSGlnaGxpZ2h0O1xuXG4gICAgLyogV2ViS2l0IGdldHMgaXRzIG5hdGl2ZSBmb2N1cyBzdHlsZXMuICovXG4gICAgQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDApIHtcbiAgICAgICAgb3V0bGluZS1jb2xvcjogLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO1xuICAgICAgICBvdXRsaW5lLXN0eWxlOiBhdXRvO1xuICAgIH1cbn1cblxuQGRlZmluZS1taXhpbiBCdXR0b25SZXNldERlZmF1bHQge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuQGRlZmluZS1taXhpbiBMZWdhY3lDYWxsQnV0dG9uIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgIG1hcmdpbi1yaWdodDogMDtcblxuICAgIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1mZy1jb2xvcjtcbiAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGRlZmluZS1taXhpbiBUaHJlYWRSZXBsaWVzQW1vdW50IHtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMCAkc3BhY2luZy0xMiAwICRzcGFjaW5nLTg7XG59XG5cbkBkZWZpbmUtbWl4aW4gVGhyZWFkU3VtbWFyeUljb24ge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy90aHJlYWQtc3VtbWFyeS5zdmdcIik7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIGhlaWdodDogMThweDtcbiAgICBtaW4td2lkdGg6IDE4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50ICFpbXBvcnRhbnQ7XG59XG5cbkBkZWZpbmUtbWl4aW4gY29tcG9zZXJCdXR0b25IaWdoTGlnaHQge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoJGFjY2VudCwgMC4yNSk7XG4gICAgLyogbWFrZSB0aGUgaWNvbiB0aGUgYWNjZW50IGNvbG9yIHRvbyAqL1xuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbkBkZWZpbmUtbWl4aW4gY29tcG9zZXJCdXR0b24gJGJvcmRlci1yYWRpdXMsICRob3Zlci1jb2xvciB7XG4gICAgLS1zaXplOiAyNnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZSk7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zaXplKTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAzcHg7XG4gICAgICAgIGxlZnQ6IDNweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGljb24tYnV0dG9uLWNvbG9yO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICB3aWR0aDogdmFyKC0tc2l6ZSk7XG4gICAgICAgIGhlaWdodDogdmFyKC0tc2l6ZSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRob3Zlci1jb2xvciwgMC4xKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vUmVzcG9uc2l2ZSBkZXNpZ25cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAubXhfRGlhbG9nIHtcbiAgICAgICAgd2lkdGg6IDYwJSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubXhfRGlhbG9nX2ZpeGVkV2lkdGgge1xuICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICBtYXgtd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG46cm9vdCB7XG4gICAgLS1mb250LW5vcm1hbDogNDAwO1xuICAgIC0tZm9udC1zZW1pLWJvbGQ6IDYwMDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi8qIFNDU1MgdmFyaWFibGVzIHJlcHJlc2VudGluZyBhIHJhbmdlIG9mIHN0YW5kYXJkIGxlbmd0aHMuXG4gKlxuICogQXZvaWQgdXNpbmcgdGhlc2UgaW4gbmV3IGNvZGU6IHdlIGNhbm5vdCBhZGp1c3QgdGhlaXIgdmFsdWVzIHdpdGhvdXQgY2F1c2luZyBtYXNzaXZlIGNvbmZ1c2lvbiwgc28gdGhleSBhcmVcbiAqIGVmZmVjdGl2ZWx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgaGFyZGNvZGVkIHZhbHVlcy5cbiAqXG4gKiBJbiBmdXR1cmUsIHdlIHBsYW4gdG8gaW50cm9kdWNlIHZhcmlhYmxlcyBuYW1lZCBhY2NvcmRpbmcgdG8gdGhlaXIgcHVycG9zZSByYXRoZXIgdGhhbiB0aGVpciBzaXplLiBBZGRpdGlvbmFsbHksXG4gKiB3ZSB3YW50IHN3aXRjaCB0byBjdXN0b20gQ1NTIHByb3BlcnRpZXMgKGh0dHBzOi8vZ2l0aHViLmNvbS92ZWN0b3ItaW0vZWxlbWVudC13ZWIvaXNzdWVzLzIxNjU2KSwgc28gd2UgbWlnaHQgaGF2ZVxuICogYC0tc3BhY2luZy1zdGFuZGFyZGAgb3Igc29tZXRoaW5nLiBGb3Igbm93LCB5b3UgbWlnaHQgYXMgd2VsbCB1c2UgaGFyZGNvZGVkIHB4IHZhbHVlcyBmb3IgbGVuZ3RocyAoZXhjZXB0IGZvciBmb250XG4gKiBzaXplcywgZm9yIHdoaWNoIHNlZSB0aGUgYCRmb250LTxOPnB4YCB2YXJpYWJsZXMpLlxuICovXG4kc3BhY2luZy0yOiAycHg7XG4kc3BhY2luZy00OiA0cHg7XG4kc3BhY2luZy04OiA4cHg7XG4kc3BhY2luZy0xMjogMTJweDtcbiRzcGFjaW5nLTE2OiAxNnB4O1xuJHNwYWNpbmctMjA6IDIwcHg7XG4kc3BhY2luZy0yNDogMjRweDtcbiRzcGFjaW5nLTI4OiAyOHB4O1xuJHNwYWNpbmctMzI6IDMycHg7XG4kc3BhY2luZy00MDogNDBweDtcbiRzcGFjaW5nLTQ4OiA0OHB4O1xuJHNwYWNpbmctNjQ6IDY0cHg7XG4iLCIubWFwYm94Z2wtbWFwLC5tYXBsaWJyZWdsLW1hcHstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiKDAgMCAwLzApO2ZvbnQ6MTJweC8yMHB4IEhlbHZldGljYSBOZXVlLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWFwYm94Z2wtY2FudmFzLC5tYXBsaWJyZWdsLWNhbnZhc3tsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9Lm1hcGJveGdsLW1hcDpmdWxsc2NyZWVuLC5tYXBsaWJyZWdsLW1hcDpmdWxsc2NyZWVue2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9Lm1hcGJveGdsLWNhbnZhcy1jb250YWluZXIubWFwYm94Z2wtaW50ZXJhY3RpdmUsLm1hcGJveGdsLWN0cmwtZ3JvdXAgYnV0dG9uLm1hcGJveGdsLWN0cmwtY29tcGFzcywubWFwbGlicmVnbC1jYW52YXMtY29udGFpbmVyLm1hcGxpYnJlZ2wtaW50ZXJhY3RpdmUsLm1hcGxpYnJlZ2wtY3RybC1ncm91cCBidXR0b24ubWFwbGlicmVnbC1jdHJsLWNvbXBhc3N7Y3Vyc29yOmdyYWI7LW1vei11c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5tYXBib3hnbC1jYW52YXMtY29udGFpbmVyLm1hcGJveGdsLWludGVyYWN0aXZlLm1hcGJveGdsLXRyYWNrLXBvaW50ZXIsLm1hcGxpYnJlZ2wtY2FudmFzLWNvbnRhaW5lci5tYXBsaWJyZWdsLWludGVyYWN0aXZlLm1hcGxpYnJlZ2wtdHJhY2stcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0ubWFwYm94Z2wtY2FudmFzLWNvbnRhaW5lci5tYXBib3hnbC1pbnRlcmFjdGl2ZTphY3RpdmUsLm1hcGJveGdsLWN0cmwtZ3JvdXAgYnV0dG9uLm1hcGJveGdsLWN0cmwtY29tcGFzczphY3RpdmUsLm1hcGxpYnJlZ2wtY2FudmFzLWNvbnRhaW5lci5tYXBsaWJyZWdsLWludGVyYWN0aXZlOmFjdGl2ZSwubWFwbGlicmVnbC1jdHJsLWdyb3VwIGJ1dHRvbi5tYXBsaWJyZWdsLWN0cmwtY29tcGFzczphY3RpdmV7Y3Vyc29yOmdyYWJiaW5nfS5tYXBib3hnbC1jYW52YXMtY29udGFpbmVyLm1hcGJveGdsLXRvdWNoLXpvb20tcm90YXRlLC5tYXBib3hnbC1jYW52YXMtY29udGFpbmVyLm1hcGJveGdsLXRvdWNoLXpvb20tcm90YXRlIC5tYXBib3hnbC1jYW52YXMsLm1hcGxpYnJlZ2wtY2FudmFzLWNvbnRhaW5lci5tYXBsaWJyZWdsLXRvdWNoLXpvb20tcm90YXRlLC5tYXBsaWJyZWdsLWNhbnZhcy1jb250YWluZXIubWFwbGlicmVnbC10b3VjaC16b29tLXJvdGF0ZSAubWFwbGlicmVnbC1jYW52YXN7dG91Y2gtYWN0aW9uOnBhbi14IHBhbi15fS5tYXBib3hnbC1jYW52YXMtY29udGFpbmVyLm1hcGJveGdsLXRvdWNoLWRyYWctcGFuLC5tYXBib3hnbC1jYW52YXMtY29udGFpbmVyLm1hcGJveGdsLXRvdWNoLWRyYWctcGFuIC5tYXBib3hnbC1jYW52YXMsLm1hcGxpYnJlZ2wtY2FudmFzLWNvbnRhaW5lci5tYXBsaWJyZWdsLXRvdWNoLWRyYWctcGFuLC5tYXBsaWJyZWdsLWNhbnZhcy1jb250YWluZXIubWFwbGlicmVnbC10b3VjaC1kcmFnLXBhbiAubWFwbGlicmVnbC1jYW52YXN7dG91Y2gtYWN0aW9uOnBpbmNoLXpvb219Lm1hcGJveGdsLWNhbnZhcy1jb250YWluZXIubWFwYm94Z2wtdG91Y2gtem9vbS1yb3RhdGUubWFwYm94Z2wtdG91Y2gtZHJhZy1wYW4sLm1hcGJveGdsLWNhbnZhcy1jb250YWluZXIubWFwYm94Z2wtdG91Y2gtem9vbS1yb3RhdGUubWFwYm94Z2wtdG91Y2gtZHJhZy1wYW4gLm1hcGJveGdsLWNhbnZhcywubWFwbGlicmVnbC1jYW52YXMtY29udGFpbmVyLm1hcGxpYnJlZ2wtdG91Y2gtem9vbS1yb3RhdGUubWFwbGlicmVnbC10b3VjaC1kcmFnLXBhbiwubWFwbGlicmVnbC1jYW52YXMtY29udGFpbmVyLm1hcGxpYnJlZ2wtdG91Y2gtem9vbS1yb3RhdGUubWFwbGlicmVnbC10b3VjaC1kcmFnLXBhbiAubWFwbGlicmVnbC1jYW52YXN7dG91Y2gtYWN0aW9uOm5vbmV9Lm1hcGJveGdsLWN0cmwtYm90dG9tLWxlZnQsLm1hcGJveGdsLWN0cmwtYm90dG9tLXJpZ2h0LC5tYXBib3hnbC1jdHJsLXRvcC1sZWZ0LC5tYXBib3hnbC1jdHJsLXRvcC1yaWdodCwubWFwbGlicmVnbC1jdHJsLWJvdHRvbS1sZWZ0LC5tYXBsaWJyZWdsLWN0cmwtYm90dG9tLXJpZ2h0LC5tYXBsaWJyZWdsLWN0cmwtdG9wLWxlZnQsLm1hcGxpYnJlZ2wtY3RybC10b3AtcmlnaHR7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjJ9Lm1hcGJveGdsLWN0cmwtdG9wLWxlZnQsLm1hcGxpYnJlZ2wtY3RybC10b3AtbGVmdHtsZWZ0OjA7dG9wOjB9Lm1hcGJveGdsLWN0cmwtdG9wLXJpZ2h0LC5tYXBsaWJyZWdsLWN0cmwtdG9wLXJpZ2h0e3JpZ2h0OjA7dG9wOjB9Lm1hcGJveGdsLWN0cmwtYm90dG9tLWxlZnQsLm1hcGxpYnJlZ2wtY3RybC1ib3R0b20tbGVmdHtib3R0b206MDtsZWZ0OjB9Lm1hcGJveGdsLWN0cmwtYm90dG9tLXJpZ2h0LC5tYXBsaWJyZWdsLWN0cmwtYm90dG9tLXJpZ2h0e2JvdHRvbTowO3JpZ2h0OjB9Lm1hcGJveGdsLWN0cmwsLm1hcGxpYnJlZ2wtY3RybHtjbGVhcjpib3RoO3BvaW50ZXItZXZlbnRzOmF1dG87dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX0ubWFwYm94Z2wtY3RybC10b3AtbGVmdCAubWFwYm94Z2wtY3RybCwubWFwbGlicmVnbC1jdHJsLXRvcC1sZWZ0IC5tYXBsaWJyZWdsLWN0cmx7ZmxvYXQ6bGVmdDttYXJnaW46MTBweCAwIDAgMTBweH0ubWFwYm94Z2wtY3RybC10b3AtcmlnaHQgLm1hcGJveGdsLWN0cmwsLm1hcGxpYnJlZ2wtY3RybC10b3AtcmlnaHQgLm1hcGxpYnJlZ2wtY3RybHtmbG9hdDpyaWdodDttYXJnaW46MTBweCAxMHB4IDAgMH0ubWFwYm94Z2wtY3RybC1ib3R0b20tbGVmdCAubWFwYm94Z2wtY3RybCwubWFwbGlicmVnbC1jdHJsLWJvdHRvbS1sZWZ0IC5tYXBsaWJyZWdsLWN0cmx7ZmxvYXQ6bGVmdDttYXJnaW46MCAwIDEwcHggMTBweH0ubWFwYm94Z2wtY3RybC1ib3R0b20tcmlnaHQgLm1hcGJveGdsLWN0cmwsLm1hcGxpYnJlZ2wtY3RybC1ib3R0b20tcmlnaHQgLm1hcGxpYnJlZ2wtY3RybHtmbG9hdDpyaWdodDttYXJnaW46MCAxMHB4IDEwcHggMH0ubWFwYm94Z2wtY3RybC1ncm91cCwubWFwbGlicmVnbC1jdHJsLWdyb3Vwe2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjRweH0ubWFwYm94Z2wtY3RybC1ncm91cDpub3QoOmVtcHR5KSwubWFwbGlicmVnbC1jdHJsLWdyb3VwOm5vdCg6ZW1wdHkpe2JveC1zaGFkb3c6MCAwIDAgMnB4IHJnYmEoMCwwLDAsLjEpfUBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6YWN0aXZlKXsubWFwYm94Z2wtY3RybC1ncm91cDpub3QoOmVtcHR5KSwubWFwbGlicmVnbC1jdHJsLWdyb3VwOm5vdCg6ZW1wdHkpe2JveC1zaGFkb3c6MCAwIDAgMnB4IEJ1dHRvblRleHR9fS5tYXBib3hnbC1jdHJsLWdyb3VwIGJ1dHRvbiwubWFwbGlicmVnbC1jdHJsLWdyb3VwIGJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2hlaWdodDoyOXB4O291dGxpbmU6bm9uZTtwYWRkaW5nOjA7d2lkdGg6MjlweH0ubWFwYm94Z2wtY3RybC1ncm91cCBidXR0b24rYnV0dG9uLC5tYXBsaWJyZWdsLWN0cmwtZ3JvdXAgYnV0dG9uK2J1dHRvbntib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS5tYXBib3hnbC1jdHJsIGJ1dHRvbiAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uIC5tYXBsaWJyZWdsLWN0cmwtaWNvbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfUBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6YWN0aXZlKXsubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXBib3hnbC1jdHJsLWdyb3VwIGJ1dHRvbitidXR0b24sLm1hcGxpYnJlZ2wtY3RybC1ncm91cCBidXR0b24rYnV0dG9ue2JvcmRlci10b3A6MXB4IHNvbGlkIEJ1dHRvblRleHR9fS5tYXBib3hnbC1jdHJsIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWFwbGlicmVnbC1jdHJsIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjB9Lm1hcGJveGdsLWN0cmwtYXR0cmliLWJ1dHRvbjpmb2N1cywubWFwYm94Z2wtY3RybC1ncm91cCBidXR0b246Zm9jdXMsLm1hcGxpYnJlZ2wtY3RybC1hdHRyaWItYnV0dG9uOmZvY3VzLC5tYXBsaWJyZWdsLWN0cmwtZ3JvdXAgYnV0dG9uOmZvY3Vze2JveC1zaGFkb3c6MCAwIDJweCAycHggIzAwOTZmZn0ubWFwYm94Z2wtY3RybCBidXR0b246ZGlzYWJsZWQsLm1hcGxpYnJlZ2wtY3RybCBidXR0b246ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5tYXBib3hnbC1jdHJsIGJ1dHRvbjpkaXNhYmxlZCAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uOmRpc2FibGVkIC5tYXBsaWJyZWdsLWN0cmwtaWNvbntvcGFjaXR5Oi4yNX0ubWFwYm94Z2wtY3RybCBidXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIsLm1hcGxpYnJlZ2wtY3RybCBidXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMCAwIDAvNSUpfS5tYXBib3hnbC1jdHJsLWdyb3VwIGJ1dHRvbjpmb2N1czpmb2N1cy12aXNpYmxlLC5tYXBsaWJyZWdsLWN0cmwtZ3JvdXAgYnV0dG9uOmZvY3VzOmZvY3VzLXZpc2libGV7Ym94LXNoYWRvdzowIDAgMnB4IDJweCAjMDA5NmZmfS5tYXBib3hnbC1jdHJsLWdyb3VwIGJ1dHRvbjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpLC5tYXBsaWJyZWdsLWN0cmwtZ3JvdXAgYnV0dG9uOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSl7Ym94LXNoYWRvdzpub25lfS5tYXBib3hnbC1jdHJsLWdyb3VwIGJ1dHRvbjpmb2N1czpmaXJzdC1jaGlsZCwubWFwbGlicmVnbC1jdHJsLWdyb3VwIGJ1dHRvbjpmb2N1czpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwfS5tYXBib3hnbC1jdHJsLWdyb3VwIGJ1dHRvbjpmb2N1czpsYXN0LWNoaWxkLC5tYXBsaWJyZWdsLWN0cmwtZ3JvdXAgYnV0dG9uOmZvY3VzOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowIDAgNHB4IDRweH0ubWFwYm94Z2wtY3RybC1ncm91cCBidXR0b246Zm9jdXM6b25seS1jaGlsZCwubWFwbGlicmVnbC1jdHJsLWdyb3VwIGJ1dHRvbjpmb2N1czpvbmx5LWNoaWxke2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC16b29tLW91dCAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC16b29tLW91dCAubWFwbGlicmVnbC1jdHJsLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzI5JyBoZWlnaHQ9JzI5JyB2aWV3Qm94PScwIDAgMjkgMjknIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzMzMzJyUzRSUzQ3BhdGggZD0nTTEwIDEzYy0uNzUgMC0xLjUuNzUtMS41IDEuNVM5LjI1IDE2IDEwIDE2aDljLjc1IDAgMS41LS43NSAxLjUtMS41UzE5Ljc1IDEzIDE5IDEzaC05eicvJTNFJTNDL3N2ZyUzRVwiKX0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC16b29tLWluIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLXpvb20taW4gLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDI5IDI5JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyMzMzMyclM0UlM0NwYXRoIGQ9J00xNC41IDguNWMtLjc1IDAtMS41Ljc1LTEuNSAxLjV2M2gtM2MtLjc1IDAtMS41Ljc1LTEuNSAxLjVTOS4yNSAxNiAxMCAxNmgzdjNjMCAuNzUuNzUgMS41IDEuNSAxLjVTMTYgMTkuNzUgMTYgMTl2LTNoM2MuNzUgMCAxLjUtLjc1IDEuNS0xLjVTMTkuNzUgMTMgMTkgMTNoLTN2LTNjMC0uNzUtLjc1LTEuNS0xLjUtMS41eicvJTNFJTNDL3N2ZyUzRVwiKX1AbWVkaWEgKC1tcy1oaWdoLWNvbnRyYXN0OmFjdGl2ZSl7Lm1hcGJveGdsLWN0cmwgYnV0dG9uLm1hcGJveGdsLWN0cmwtem9vbS1vdXQgLm1hcGJveGdsLWN0cmwtaWNvbiwubWFwbGlicmVnbC1jdHJsIGJ1dHRvbi5tYXBsaWJyZWdsLWN0cmwtem9vbS1vdXQgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDI5IDI5JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZiclM0UlM0NwYXRoIGQ9J00xMCAxM2MtLjc1IDAtMS41Ljc1LTEuNSAxLjVTOS4yNSAxNiAxMCAxNmg5Yy43NSAwIDEuNS0uNzUgMS41LTEuNVMxOS43NSAxMyAxOSAxM2gtOXonLyUzRSUzQy9zdmclM0VcIil9Lm1hcGJveGdsLWN0cmwgYnV0dG9uLm1hcGJveGdsLWN0cmwtem9vbS1pbiAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC16b29tLWluIC5tYXBsaWJyZWdsLWN0cmwtaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMjknIGhlaWdodD0nMjknIHZpZXdCb3g9JzAgMCAyOSAyOScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnJTNFJTNDcGF0aCBkPSdNMTQuNSA4LjVjLS43NSAwLTEuNS43NS0xLjUgMS41djNoLTNjLS43NSAwLTEuNS43NS0xLjUgMS41UzkuMjUgMTYgMTAgMTZoM3YzYzAgLjc1Ljc1IDEuNSAxLjUgMS41UzE2IDE5Ljc1IDE2IDE5di0zaDNjLjc1IDAgMS41LS43NSAxLjUtMS41UzE5Ljc1IDEzIDE5IDEzaC0zdi0zYzAtLjc1LS43NS0xLjUtMS41LTEuNXonLyUzRSUzQy9zdmclM0VcIil9fUBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6YmxhY2stb24td2hpdGUpey5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLXpvb20tb3V0IC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLXpvb20tb3V0IC5tYXBsaWJyZWdsLWN0cmwtaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMjknIGhlaWdodD0nMjknIHZpZXdCb3g9JzAgMCAyOSAyOScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTEwIDEzYy0uNzUgMC0xLjUuNzUtMS41IDEuNVM5LjI1IDE2IDEwIDE2aDljLjc1IDAgMS41LS43NSAxLjUtMS41UzE5Ljc1IDEzIDE5IDEzaC05eicvJTNFJTNDL3N2ZyUzRVwiKX0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC16b29tLWluIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLXpvb20taW4gLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDI5IDI5JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMTQuNSA4LjVjLS43NSAwLTEuNS43NS0xLjUgMS41djNoLTNjLS43NSAwLTEuNS43NS0xLjUgMS41UzkuMjUgMTYgMTAgMTZoM3YzYzAgLjc1Ljc1IDEuNSAxLjUgMS41UzE2IDE5Ljc1IDE2IDE5di0zaDNjLjc1IDAgMS41LS43NSAxLjUtMS41UzE5Ljc1IDEzIDE5IDEzaC0zdi0zYzAtLjc1LS43NS0xLjUtMS41LTEuNXonLyUzRSUzQy9zdmclM0VcIil9fS5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLWZ1bGxzY3JlZW4gLm1hcGJveGdsLWN0cmwtaWNvbiwubWFwbGlicmVnbC1jdHJsIGJ1dHRvbi5tYXBsaWJyZWdsLWN0cmwtZnVsbHNjcmVlbiAubWFwbGlicmVnbC1jdHJsLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzI5JyBoZWlnaHQ9JzI5JyB2aWV3Qm94PScwIDAgMjkgMjknIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzMzMzJyUzRSUzQ3BhdGggZD0nTTI0IDE2djUuNWMwIDEuNzUtLjc1IDIuNS0yLjUgMi41SDE2di0xbDMtMS41LTQtNS41IDEtMSA1LjUgNCAxLjUtM2gxek02IDE2bDEuNSAzIDUuNS00IDEgMS00IDUuNSAzIDEuNXYxSDcuNUM1Ljc1IDI0IDUgMjMuMjUgNSAyMS41VjE2aDF6bTctMTF2MWwtMyAxLjUgNCA1LjUtMSAxLTUuNS00TDYgMTNINVY3LjVDNSA1Ljc1IDUuNzUgNSA3LjUgNUgxM3ptMTEgMi41YzAtMS43NS0uNzUtMi41LTIuNS0yLjVIMTZ2MWwzIDEuNS00IDUuNSAxIDEgNS41LTQgMS41IDNoMVY3LjV6Jy8lM0UlM0Mvc3ZnJTNFXCIpfS5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLXNocmluayAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1zaHJpbmsgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDI5IDI5JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMTguNSAxNmMtMS43NSAwLTIuNS43NS0yLjUgMi41VjI0aDFsMS41LTMgNS41IDQgMS0xLTQtNS41IDMtMS41di0xaC01LjV6TTEzIDE4LjVjMC0xLjc1LS43NS0yLjUtMi41LTIuNUg1djFsMyAxLjVMNCAyNGwxIDEgNS41LTQgMS41IDNoMXYtNS41em0zLThjMCAxLjc1Ljc1IDIuNSAyLjUgMi41SDI0di0xbC0zLTEuNUwyNSA1bC0xLTEtNS41IDRMMTcgNWgtMXY1LjV6TTEwLjUgMTNjMS43NSAwIDIuNS0uNzUgMi41LTIuNVY1aC0xbC0xLjUgM0w1IDQgNCA1bDQgNS41TDUgMTJ2MWg1LjV6Jy8lM0UlM0Mvc3ZnJTNFXCIpfUBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6YWN0aXZlKXsubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC1mdWxsc2NyZWVuIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLWZ1bGxzY3JlZW4gLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDI5IDI5JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZiclM0UlM0NwYXRoIGQ9J00yNCAxNnY1LjVjMCAxLjc1LS43NSAyLjUtMi41IDIuNUgxNnYtMWwzLTEuNS00LTUuNSAxLTEgNS41IDQgMS41LTNoMXpNNiAxNmwxLjUgMyA1LjUtNCAxIDEtNCA1LjUgMyAxLjV2MUg3LjVDNS43NSAyNCA1IDIzLjI1IDUgMjEuNVYxNmgxem03LTExdjFsLTMgMS41IDQgNS41LTEgMS01LjUtNEw2IDEzSDVWNy41QzUgNS43NSA1Ljc1IDUgNy41IDVIMTN6bTExIDIuNWMwLTEuNzUtLjc1LTIuNS0yLjUtMi41SDE2djFsMyAxLjUtNCA1LjUgMSAxIDUuNS00IDEuNSAzaDFWNy41eicvJTNFJTNDL3N2ZyUzRVwiKX0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC1zaHJpbmsgLm1hcGJveGdsLWN0cmwtaWNvbiwubWFwbGlicmVnbC1jdHJsIGJ1dHRvbi5tYXBsaWJyZWdsLWN0cmwtc2hyaW5rIC5tYXBsaWJyZWdsLWN0cmwtaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMjknIGhlaWdodD0nMjknIHZpZXdCb3g9JzAgMCAyOSAyOScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnJTNFJTNDcGF0aCBkPSdNMTguNSAxNmMtMS43NSAwLTIuNS43NS0yLjUgMi41VjI0aDFsMS41LTMgNS41IDQgMS0xLTQtNS41IDMtMS41di0xaC01LjV6TTEzIDE4LjVjMC0xLjc1LS43NS0yLjUtMi41LTIuNUg1djFsMyAxLjVMNCAyNGwxIDEgNS41LTQgMS41IDNoMXYtNS41em0zLThjMCAxLjc1Ljc1IDIuNSAyLjUgMi41SDI0di0xbC0zLTEuNUwyNSA1bC0xLTEtNS41IDRMMTcgNWgtMXY1LjV6TTEwLjUgMTNjMS43NSAwIDIuNS0uNzUgMi41LTIuNVY1aC0xbC0xLjUgM0w1IDQgNCA1bDQgNS41TDUgMTJ2MWg1LjV6Jy8lM0UlM0Mvc3ZnJTNFXCIpfX1AbWVkaWEgKC1tcy1oaWdoLWNvbnRyYXN0OmJsYWNrLW9uLXdoaXRlKXsubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC1mdWxsc2NyZWVuIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLWZ1bGxzY3JlZW4gLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDI5IDI5JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMjQgMTZ2NS41YzAgMS43NS0uNzUgMi41LTIuNSAyLjVIMTZ2LTFsMy0xLjUtNC01LjUgMS0xIDUuNSA0IDEuNS0zaDF6TTYgMTZsMS41IDMgNS41LTQgMSAxLTQgNS41IDMgMS41djFINy41QzUuNzUgMjQgNSAyMy4yNSA1IDIxLjVWMTZoMXptNy0xMXYxbC0zIDEuNSA0IDUuNS0xIDEtNS41LTRMNiAxM0g1VjcuNUM1IDUuNzUgNS43NSA1IDcuNSA1SDEzem0xMSAyLjVjMC0xLjc1LS43NS0yLjUtMi41LTIuNUgxNnYxbDMgMS41LTQgNS41IDEgMSA1LjUtNCAxLjUgM2gxVjcuNXonLyUzRSUzQy9zdmclM0VcIil9Lm1hcGJveGdsLWN0cmwgYnV0dG9uLm1hcGJveGdsLWN0cmwtc2hyaW5rIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLXNocmluayAubWFwbGlicmVnbC1jdHJsLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzI5JyBoZWlnaHQ9JzI5JyB2aWV3Qm94PScwIDAgMjkgMjknIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00xOC41IDE2Yy0xLjc1IDAtMi41Ljc1LTIuNSAyLjVWMjRoMWwxLjUtMyA1LjUgNCAxLTEtNC01LjUgMy0xLjV2LTFoLTUuNXpNMTMgMTguNWMwLTEuNzUtLjc1LTIuNS0yLjUtMi41SDV2MWwzIDEuNUw0IDI0bDEgMSA1LjUtNCAxLjUgM2gxdi01LjV6bTMtOGMwIDEuNzUuNzUgMi41IDIuNSAyLjVIMjR2LTFsLTMtMS41TDI1IDVsLTEtMS01LjUgNEwxNyA1aC0xdjUuNXpNMTAuNSAxM2MxLjc1IDAgMi41LS43NSAyLjUtMi41VjVoLTFsLTEuNSAzTDUgNCA0IDVsNCA1LjVMNSAxMnYxaDUuNXonLyUzRSUzQy9zdmclM0VcIil9fS5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLWNvbXBhc3MgLm1hcGJveGdsLWN0cmwtaWNvbiwubWFwbGlicmVnbC1jdHJsIGJ1dHRvbi5tYXBsaWJyZWdsLWN0cmwtY29tcGFzcyAubWFwbGlicmVnbC1jdHJsLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzI5JyBoZWlnaHQ9JzI5JyB2aWV3Qm94PScwIDAgMjkgMjknIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzMzMzJyUzRSUzQ3BhdGggZD0nbTEwLjUgMTQgNC04IDQgOGgtOHonLyUzRSUzQ3BhdGggZD0nbTEwLjUgMTYgNCA4IDQtOGgtOHonIGZpbGw9JyUyM2NjYycvJTNFJTNDL3N2ZyUzRVwiKX1AbWVkaWEgKC1tcy1oaWdoLWNvbnRyYXN0OmFjdGl2ZSl7Lm1hcGJveGdsLWN0cmwgYnV0dG9uLm1hcGJveGdsLWN0cmwtY29tcGFzcyAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1jb21wYXNzIC5tYXBsaWJyZWdsLWN0cmwtaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMjknIGhlaWdodD0nMjknIHZpZXdCb3g9JzAgMCAyOSAyOScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnJTNFJTNDcGF0aCBkPSdtMTAuNSAxNCA0LTggNCA4aC04eicvJTNFJTNDcGF0aCBkPSdtMTAuNSAxNiA0IDggNC04aC04eicgZmlsbD0nJTIzOTk5Jy8lM0UlM0Mvc3ZnJTNFXCIpfX1AbWVkaWEgKC1tcy1oaWdoLWNvbnRyYXN0OmJsYWNrLW9uLXdoaXRlKXsubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC1jb21wYXNzIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLWNvbXBhc3MgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDI5IDI5JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMTAuNSAxNCA0LTggNCA4aC04eicvJTNFJTNDcGF0aCBkPSdtMTAuNSAxNiA0IDggNC04aC04eicgZmlsbD0nJTIzY2NjJy8lM0UlM0Mvc3ZnJTNFXCIpfX0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC10ZXJyYWluIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLXRlcnJhaW4gLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIyJyBoZWlnaHQ9JzIyJyB2aWV3Qm94PScwIDAgMjIgMjInIGZpbGw9JyUyMzMzMyclM0UlM0NwYXRoIGQ9J20xLjc1NCAxMy40MDYgNC40NTMtNC44NTEgMy4wOSAzLjA5IDMuMjgxIDMuMjc3Ljk2OS0uOTY5LTMuMzA5LTMuMzEyIDMuODQ0LTQuMTIxIDYuMTQ4IDYuODg2aDEuMDgydi0uODU1bC03LjIwNy04LjA3LTQuODQgNS4xODdMNi4xNjkgNi41N2wtNS40OCA1Ljk2NXYuODcxWk0uNjg4IDE2Ljg0NGgyMC42MjV2MS4zNzVILjY4OFptMCAwJy8lM0UlM0Mvc3ZnJTNFXCIpfS5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLXRlcnJhaW4tZW5hYmxlZCAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC10ZXJyYWluLWVuYWJsZWQgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIyJyBoZWlnaHQ9JzIyJyB2aWV3Qm94PScwIDAgMjIgMjInIGZpbGw9JyUyMzMzYjVlNSclM0UlM0NwYXRoIGQ9J20xLjc1NCAxMy40MDYgNC40NTMtNC44NTEgMy4wOSAzLjA5IDMuMjgxIDMuMjc3Ljk2OS0uOTY5LTMuMzA5LTMuMzEyIDMuODQ0LTQuMTIxIDYuMTQ4IDYuODg2aDEuMDgydi0uODU1bC03LjIwNy04LjA3LTQuODQgNS4xODdMNi4xNjkgNi41N2wtNS40OCA1Ljk2NXYuODcxWk0uNjg4IDE2Ljg0NGgyMC42MjV2MS4zNzVILjY4OFptMCAwJy8lM0UlM0Mvc3ZnJTNFXCIpfS5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZSAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGUgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyMzMzMyclM0UlM0NwYXRoIGQ9J00xMCA0QzkgNCA5IDUgOSA1di4xQTUgNSAwIDAgMCA1LjEgOUg1cy0xIDAtMSAxIDEgMSAxIDFoLjFBNSA1IDAgMCAwIDkgMTQuOXYuMXMwIDEgMSAxIDEtMSAxLTF2LS4xYTUgNSAwIDAgMCAzLjktMy45aC4xczEgMCAxLTEtMS0xLTEtMWgtLjFBNSA1IDAgMCAwIDExIDUuMVY1czAtMS0xLTF6bTAgMi41YTMuNSAzLjUgMCAxIDEgMCA3IDMuNSAzLjUgMCAxIDEgMC03eicvJTNFJTNDY2lyY2xlIGN4PScxMCcgY3k9JzEwJyByPScyJy8lM0UlM0Mvc3ZnJTNFXCIpfS5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZTpkaXNhYmxlZCAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGU6ZGlzYWJsZWQgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2FhYSclM0UlM0NwYXRoIGQ9J00xMCA0QzkgNCA5IDUgOSA1di4xQTUgNSAwIDAgMCA1LjEgOUg1cy0xIDAtMSAxIDEgMSAxIDFoLjFBNSA1IDAgMCAwIDkgMTQuOXYuMXMwIDEgMSAxIDEtMSAxLTF2LS4xYTUgNSAwIDAgMCAzLjktMy45aC4xczEgMCAxLTEtMS0xLTEtMWgtLjFBNSA1IDAgMCAwIDExIDUuMVY1czAtMS0xLTF6bTAgMi41YTMuNSAzLjUgMCAxIDEgMCA3IDMuNSAzLjUgMCAxIDEgMC03eicvJTNFJTNDY2lyY2xlIGN4PScxMCcgY3k9JzEwJyByPScyJy8lM0UlM0NwYXRoIGQ9J20xNCA1IDEgMS05IDktMS0xIDktOXonIGZpbGw9J3JlZCcvJTNFJTNDL3N2ZyUzRVwiKX0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC1nZW9sb2NhdGUubWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLWdlb2xvY2F0ZS5tYXBsaWJyZWdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZSAubWFwbGlicmVnbC1jdHJsLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzI5JyBoZWlnaHQ9JzI5JyB2aWV3Qm94PScwIDAgMjAgMjAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzMzNiNWU1JyUzRSUzQ3BhdGggZD0nTTEwIDRDOSA0IDkgNSA5IDV2LjFBNSA1IDAgMCAwIDUuMSA5SDVzLTEgMC0xIDEgMSAxIDEgMWguMUE1IDUgMCAwIDAgOSAxNC45di4xczAgMSAxIDEgMS0xIDEtMXYtLjFhNSA1IDAgMCAwIDMuOS0zLjloLjFzMSAwIDEtMS0xLTEtMS0xaC0uMUE1IDUgMCAwIDAgMTEgNS4xVjVzMC0xLTEtMXptMCAyLjVhMy41IDMuNSAwIDEgMSAwIDcgMy41IDMuNSAwIDEgMSAwLTd6Jy8lM0UlM0NjaXJjbGUgY3g9JzEwJyBjeT0nMTAnIHI9JzInLyUzRSUzQy9zdmclM0VcIil9Lm1hcGJveGdsLWN0cmwgYnV0dG9uLm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvciAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGUubWFwbGlicmVnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUtZXJyb3IgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2U1ODk3OCclM0UlM0NwYXRoIGQ9J00xMCA0QzkgNCA5IDUgOSA1di4xQTUgNSAwIDAgMCA1LjEgOUg1cy0xIDAtMSAxIDEgMSAxIDFoLjFBNSA1IDAgMCAwIDkgMTQuOXYuMXMwIDEgMSAxIDEtMSAxLTF2LS4xYTUgNSAwIDAgMCAzLjktMy45aC4xczEgMCAxLTEtMS0xLTEtMWgtLjFBNSA1IDAgMCAwIDExIDUuMVY1czAtMS0xLTF6bTAgMi41YTMuNSAzLjUgMCAxIDEgMCA3IDMuNSAzLjUgMCAxIDEgMC03eicvJTNFJTNDY2lyY2xlIGN4PScxMCcgY3k9JzEwJyByPScyJy8lM0UlM0Mvc3ZnJTNFXCIpfS5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLWdlb2xvY2F0ZS5tYXBsaWJyZWdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyMzMzYjVlNSclM0UlM0NwYXRoIGQ9J00xMCA0QzkgNCA5IDUgOSA1di4xQTUgNSAwIDAgMCA1LjEgOUg1cy0xIDAtMSAxIDEgMSAxIDFoLjFBNSA1IDAgMCAwIDkgMTQuOXYuMXMwIDEgMSAxIDEtMSAxLTF2LS4xYTUgNSAwIDAgMCAzLjktMy45aC4xczEgMCAxLTEtMS0xLTEtMWgtLjFBNSA1IDAgMCAwIDExIDUuMVY1czAtMS0xLTF6bTAgMi41YTMuNSAzLjUgMCAxIDEgMCA3IDMuNSAzLjUgMCAxIDEgMC03eicvJTNFJTNDL3N2ZyUzRVwiKX0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC1nZW9sb2NhdGUubWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZC1lcnJvciAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGUubWFwbGlicmVnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yIC5tYXBsaWJyZWdsLWN0cmwtaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMjknIGhlaWdodD0nMjknIHZpZXdCb3g9JzAgMCAyMCAyMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNlNTRlMzMnJTNFJTNDcGF0aCBkPSdNMTAgNEM5IDQgOSA1IDkgNXYuMUE1IDUgMCAwIDAgNS4xIDlINXMtMSAwLTEgMSAxIDEgMSAxaC4xQTUgNSAwIDAgMCA5IDE0Ljl2LjFzMCAxIDEgMSAxLTEgMS0xdi0uMWE1IDUgMCAwIDAgMy45LTMuOWguMXMxIDAgMS0xLTEtMS0xLTFoLS4xQTUgNSAwIDAgMCAxMSA1LjFWNXMwLTEtMS0xem0wIDIuNWEzLjUgMy41IDAgMSAxIDAgNyAzLjUgMy41IDAgMSAxIDAtN3onLyUzRSUzQy9zdmclM0VcIil9Lm1hcGJveGdsLWN0cmwgYnV0dG9uLm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmcgLm1hcGJveGdsLWN0cmwtaWNvbiwubWFwbGlicmVnbC1jdHJsIGJ1dHRvbi5tYXBsaWJyZWdsLWN0cmwtZ2VvbG9jYXRlLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZyAubWFwbGlicmVnbC1jdHJsLWljb257YW5pbWF0aW9uOm1hcGxpYnJlZ2wtc3BpbiAycyBsaW5lYXIgaW5maW5pdGV9QG1lZGlhICgtbXMtaGlnaC1jb250cmFzdDphY3RpdmUpey5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZSAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGUgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZiclM0UlM0NwYXRoIGQ9J00xMCA0QzkgNCA5IDUgOSA1di4xQTUgNSAwIDAgMCA1LjEgOUg1cy0xIDAtMSAxIDEgMSAxIDFoLjFBNSA1IDAgMCAwIDkgMTQuOXYuMXMwIDEgMSAxIDEtMSAxLTF2LS4xYTUgNSAwIDAgMCAzLjktMy45aC4xczEgMCAxLTEtMS0xLTEtMWgtLjFBNSA1IDAgMCAwIDExIDUuMVY1czAtMS0xLTF6bTAgMi41YTMuNSAzLjUgMCAxIDEgMCA3IDMuNSAzLjUgMCAxIDEgMC03eicvJTNFJTNDY2lyY2xlIGN4PScxMCcgY3k9JzEwJyByPScyJy8lM0UlM0Mvc3ZnJTNFXCIpfS5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZTpkaXNhYmxlZCAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGU6ZGlzYWJsZWQgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyMzk5OSclM0UlM0NwYXRoIGQ9J00xMCA0QzkgNCA5IDUgOSA1di4xQTUgNSAwIDAgMCA1LjEgOUg1cy0xIDAtMSAxIDEgMSAxIDFoLjFBNSA1IDAgMCAwIDkgMTQuOXYuMXMwIDEgMSAxIDEtMSAxLTF2LS4xYTUgNSAwIDAgMCAzLjktMy45aC4xczEgMCAxLTEtMS0xLTEtMWgtLjFBNSA1IDAgMCAwIDExIDUuMVY1czAtMS0xLTF6bTAgMi41YTMuNSAzLjUgMCAxIDEgMCA3IDMuNSAzLjUgMCAxIDEgMC03eicvJTNFJTNDY2lyY2xlIGN4PScxMCcgY3k9JzEwJyByPScyJy8lM0UlM0NwYXRoIGQ9J20xNCA1IDEgMS05IDktMS0xIDktOXonIGZpbGw9J3JlZCcvJTNFJTNDL3N2ZyUzRVwiKX0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC1nZW9sb2NhdGUubWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLWdlb2xvY2F0ZS5tYXBsaWJyZWdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZSAubWFwbGlicmVnbC1jdHJsLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzI5JyBoZWlnaHQ9JzI5JyB2aWV3Qm94PScwIDAgMjAgMjAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzMzNiNWU1JyUzRSUzQ3BhdGggZD0nTTEwIDRDOSA0IDkgNSA5IDV2LjFBNSA1IDAgMCAwIDUuMSA5SDVzLTEgMC0xIDEgMSAxIDEgMWguMUE1IDUgMCAwIDAgOSAxNC45di4xczAgMSAxIDEgMS0xIDEtMXYtLjFhNSA1IDAgMCAwIDMuOS0zLjloLjFzMSAwIDEtMS0xLTEtMS0xaC0uMUE1IDUgMCAwIDAgMTEgNS4xVjVzMC0xLTEtMXptMCAyLjVhMy41IDMuNSAwIDEgMSAwIDcgMy41IDMuNSAwIDEgMSAwLTd6Jy8lM0UlM0NjaXJjbGUgY3g9JzEwJyBjeT0nMTAnIHI9JzInLyUzRSUzQy9zdmclM0VcIil9Lm1hcGJveGdsLWN0cmwgYnV0dG9uLm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvciAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGUubWFwbGlicmVnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUtZXJyb3IgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2U1ODk3OCclM0UlM0NwYXRoIGQ9J00xMCA0QzkgNCA5IDUgOSA1di4xQTUgNSAwIDAgMCA1LjEgOUg1cy0xIDAtMSAxIDEgMSAxIDFoLjFBNSA1IDAgMCAwIDkgMTQuOXYuMXMwIDEgMSAxIDEtMSAxLTF2LS4xYTUgNSAwIDAgMCAzLjktMy45aC4xczEgMCAxLTEtMS0xLTEtMWgtLjFBNSA1IDAgMCAwIDExIDUuMVY1czAtMS0xLTF6bTAgMi41YTMuNSAzLjUgMCAxIDEgMCA3IDMuNSAzLjUgMCAxIDEgMC03eicvJTNFJTNDY2lyY2xlIGN4PScxMCcgY3k9JzEwJyByPScyJy8lM0UlM0Mvc3ZnJTNFXCIpfS5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kIC5tYXBib3hnbC1jdHJsLWljb24sLm1hcGxpYnJlZ2wtY3RybCBidXR0b24ubWFwbGlicmVnbC1jdHJsLWdlb2xvY2F0ZS5tYXBsaWJyZWdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyMzMzYjVlNSclM0UlM0NwYXRoIGQ9J00xMCA0QzkgNCA5IDUgOSA1di4xQTUgNSAwIDAgMCA1LjEgOUg1cy0xIDAtMSAxIDEgMSAxIDFoLjFBNSA1IDAgMCAwIDkgMTQuOXYuMXMwIDEgMSAxIDEtMSAxLTF2LS4xYTUgNSAwIDAgMCAzLjktMy45aC4xczEgMCAxLTEtMS0xLTEtMWgtLjFBNSA1IDAgMCAwIDExIDUuMVY1czAtMS0xLTF6bTAgMi41YTMuNSAzLjUgMCAxIDEgMCA3IDMuNSAzLjUgMCAxIDEgMC03eicvJTNFJTNDL3N2ZyUzRVwiKX0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC1nZW9sb2NhdGUubWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZC1lcnJvciAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGUubWFwbGlicmVnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yIC5tYXBsaWJyZWdsLWN0cmwtaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMjknIGhlaWdodD0nMjknIHZpZXdCb3g9JzAgMCAyMCAyMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNlNTRlMzMnJTNFJTNDcGF0aCBkPSdNMTAgNEM5IDQgOSA1IDkgNXYuMUE1IDUgMCAwIDAgNS4xIDlINXMtMSAwLTEgMSAxIDEgMSAxaC4xQTUgNSAwIDAgMCA5IDE0Ljl2LjFzMCAxIDEgMSAxLTEgMS0xdi0uMWE1IDUgMCAwIDAgMy45LTMuOWguMXMxIDAgMS0xLTEtMS0xLTFoLS4xQTUgNSAwIDAgMCAxMSA1LjFWNXMwLTEtMS0xem0wIDIuNWEzLjUgMy41IDAgMSAxIDAgNyAzLjUgMy41IDAgMSAxIDAtN3onLyUzRSUzQy9zdmclM0VcIil9fUBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6YmxhY2stb24td2hpdGUpey5tYXBib3hnbC1jdHJsIGJ1dHRvbi5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZSAubWFwYm94Z2wtY3RybC1pY29uLC5tYXBsaWJyZWdsLWN0cmwgYnV0dG9uLm1hcGxpYnJlZ2wtY3RybC1nZW9sb2NhdGUgLm1hcGxpYnJlZ2wtY3RybC1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyOScgaGVpZ2h0PScyOScgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMTAgNEM5IDQgOSA1IDkgNXYuMUE1IDUgMCAwIDAgNS4xIDlINXMtMSAwLTEgMSAxIDEgMSAxaC4xQTUgNSAwIDAgMCA5IDE0Ljl2LjFzMCAxIDEgMSAxLTEgMS0xdi0uMWE1IDUgMCAwIDAgMy45LTMuOWguMXMxIDAgMS0xLTEtMS0xLTFoLS4xQTUgNSAwIDAgMCAxMSA1LjFWNXMwLTEtMS0xem0wIDIuNWEzLjUgMy41IDAgMSAxIDAgNyAzLjUgMy41IDAgMSAxIDAtN3onLyUzRSUzQ2NpcmNsZSBjeD0nMTAnIGN5PScxMCcgcj0nMicvJTNFJTNDL3N2ZyUzRVwiKX0ubWFwYm94Z2wtY3RybCBidXR0b24ubWFwYm94Z2wtY3RybC1nZW9sb2NhdGU6ZGlzYWJsZWQgLm1hcGJveGdsLWN0cmwtaWNvbiwubWFwbGlicmVnbC1jdHJsIGJ1dHRvbi5tYXBsaWJyZWdsLWN0cmwtZ2VvbG9jYXRlOmRpc2FibGVkIC5tYXBsaWJyZWdsLWN0cmwtaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMjknIGhlaWdodD0nMjknIHZpZXdCb3g9JzAgMCAyMCAyMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjM2NjYnJTNFJTNDcGF0aCBkPSdNMTAgNEM5IDQgOSA1IDkgNXYuMUE1IDUgMCAwIDAgNS4xIDlINXMtMSAwLTEgMSAxIDEgMSAxaC4xQTUgNSAwIDAgMCA5IDE0Ljl2LjFzMCAxIDEgMSAxLTEgMS0xdi0uMWE1IDUgMCAwIDAgMy45LTMuOWguMXMxIDAgMS0xLTEtMS0xLTFoLS4xQTUgNSAwIDAgMCAxMSA1LjFWNXMwLTEtMS0xem0wIDIuNWEzLjUgMy41IDAgMSAxIDAgNyAzLjUgMy41IDAgMSAxIDAtN3onLyUzRSUzQ2NpcmNsZSBjeD0nMTAnIGN5PScxMCcgcj0nMicvJTNFJTNDcGF0aCBkPSdtMTQgNSAxIDEtOSA5LTEtMSA5LTl6JyBmaWxsPSdyZWQnLyUzRSUzQy9zdmclM0VcIil9fUBrZXlmcmFtZXMgbWFwbGlicmVnbC1zcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fWEubWFwYm94Z2wtY3RybC1sb2dvLGEubWFwbGlicmVnbC1jdHJsLWxvZ297YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nODgnIGhlaWdodD0nMjMnIGZpbGw9J25vbmUnJTNFJTNDcGF0aCBkPSdNMTcuNDA4IDE2Ljc5NmgtMS44MjdsMi41MDEtMTIuMDk1aC4xOThsMy4zMjQgNi41MzMuOTg4IDIuMTkuOTg4LTIuMTkgMy4yNTgtNi41MzNoLjE4MWwyLjYgMTIuMDk1aC0xLjgxbC0xLjIxOC01LjY0NC0uMzYyLTEuNzEtLjY1OCAxLjcxLTIuOTI5IDUuNjQ0aC0uMDk4bC0yLjkxNC01LjY0NC0uNzU3LTEuNzEtLjM0NSAxLjcxem0xLjk1OC0zLjQyLS43MjYgMy42NjNhMS4yNTUgMS4yNTUgMCAwIDEtMS4yMzIgMS4wMTFoLTEuODI3YTEuMjU1IDEuMjU1IDAgMCAxLTEuMjI5LTEuNTA5bDIuNTAxLTEyLjA5NWExLjI1NSAxLjI1NSAwIDAgMSAxLjIzLTEuMDAxaC4xOTdhMS4yNTUgMS4yNTUgMCAwIDEgMS4xMi42ODVsMy4xOSA2LjI3MyAzLjEyNS02LjI2M2ExLjI1NSAxLjI1NSAwIDAgMSAxLjEyMy0uNjk1aC4xODFhMS4yNTUgMS4yNTUgMCAwIDEgMS4yMjcuOTkxbDEuNDQzIDYuNzFhNS4xMSA1LjExIDAgMCAxIC4zMTQtLjc4N2wuMDA5LS4wMTZhNC42MjMgNC42MjMgMCAwIDEgMS43NzctMS44ODdjLjc4Mi0uNDYgMS42NjgtLjY2NyAyLjYxMS0uNjY3YTQuNTQ4IDQuNTQ4IDAgMCAxIDEuNy4zMmwuMzA2LjEzNGMuMjEtLjE2LjQ3NC0uMjU2Ljc1OS0uMjU2aDEuNjk0YTEuMjU1IDEuMjU1IDAgMCAxIDEuMjEyLjkyNSAxLjI1NSAxLjI1NSAwIDAgMSAxLjIxMi0uOTI1aDEuNzExYy4yODQgMCAuNTQ1LjA5NC43NTUuMjUyLjYxMy0uMyAxLjMxMi0uNDUgMi4wNzUtLjQ1IDEuMzU2IDAgMi41NTcuNDQ1IDMuNDgyIDEuNC4zMTQuMzE5LjU2Ni42NzYuNzYzIDEuMDY0VjQuNzAxYTEuMjU1IDEuMjU1IDAgMCAxIDEuMjU1LTEuMjU1aDEuODZBMS4yNTUgMS4yNTUgMCAwIDEgNTQuNDQgNC43djkuMTk0aDIuMjE3Yy4xOSAwIC4zNy4wNDMuNTMyLjExOHYtNC43N2MwLS4zNTYuMTQ3LS42NzguMzg1LS45MDZhMi40MTYgMi40MTYgMCAwIDEtLjY4Mi0xLjcxYzAtLjY2NS4yNjctMS4yNTMuNzM1LTEuN2EyLjQ0OCAyLjQ0OCAwIDAgMSAxLjcyMi0uNjc0IDIuNDMgMi40MyAwIDAgMSAxLjcwNS42NzVjLjIxMS4yLjM4MS40My41MDQuNjgzVjQuN2ExLjI1NSAxLjI1NSAwIDAgMSAxLjI1NS0xLjI1NWgxLjc0NEExLjI1NSAxLjI1NSAwIDAgMSA2NS44MTIgNC43djMuMzM1YTQuNzYgNC43NiAwIDAgMSAxLjUyNi0uMjQ2Yy45MzggMCAxLjgxNy4yMTQgMi41OS42OWE0LjQ3IDQuNDcgMCAwIDEgMS42NyAxLjc0M3YtLjk4YTEuMjU1IDEuMjU1IDAgMCAxIDEuMjU2LTEuMjU2aDEuNzc3Yy4yMzMgMCAuNDUxLjA2NC42MzkuMTc0YTMuNDA3IDMuNDA3IDAgMCAxIDEuNTY3LS4zNzJjLjM0NiAwIC44NjEuMDIgMS4yODUuMjMyYTEuMjU1IDEuMjU1IDAgMCAxIC42ODkgMS4wMDQgNC43MyA0LjczIDAgMCAxIC44NTMtLjU4OGMuNzk1LS40NCAxLjY3NS0uNjQ3IDIuNjEtLjY0NyAxLjM4NSAwIDIuNjUuMzkgMy41MjUgMS4zOTYuODM2LjkzOCAxLjE2OCAyLjE3MyAxLjE2OCAzLjUyOCAwIC4zNDMtLjAyLjY5NC0uMDU2IDEuMDUxYTEuMjU1IDEuMjU1IDAgMCAxLS45NDcgMS4wOWwuNDA4Ljk1MmExLjI1NSAxLjI1NSAwIDAgMS0uNDc3IDEuNTUyYy0uNDE4LjI2OC0uOTIuNDYzLTEuNDU4LjYxMi0uNjEzLjE3MS0xLjMwNC4yNDQtMi4wNDkuMjQ0LTEuMDYgMC0yLjA0My0uMjA3LTIuODg2LS42OThsLS4wMTUtLjAwOGMtLjc5OC0uNDgtMS40MTktMS4xMzUtMS44MTgtMS45NjNsLS4wMDQtLjAwOGE1LjgxNSA1LjgxNSAwIDAgMS0uNTQ4LTIuNTEyYzAtLjI4Ni4wMTctLjU2Ny4wNTMtLjg0M2ExLjI1NSAxLjI1NSAwIDAgMS0uMzMzLS4wODZsLS4xNjYtLjAwNGMtLjIyMyAwLS40MjYuMDYyLS42NDMuMjI4LS4wMy4wMjQtLjE0Mi4xMzktLjE0Mi41OXYzLjg4M2ExLjI1NSAxLjI1NSAwIDAgMS0xLjI1NiAxLjI1NmgtMS43NzdhMS4yNTUgMS4yNTUgMCAwIDEtMS4yNTYtMS4yNTZWMTUuNjlsLS4wMzIuMDU3YTQuNzc4IDQuNzc4IDAgMCAxLTEuODYgMS44MzMgNS4wNCA1LjA0IDAgMCAxLTIuNDg0LjYzNCA0LjQ3IDQuNDcgMCAwIDEtMS45MzUtLjQyNCAxLjI1MiAxLjI1MiAwIDAgMS0uNzY0LjI1OGgtMS43MWExLjI1NSAxLjI1NSAwIDAgMS0xLjI1Ni0xLjI1NVY3LjY4N2EyLjQwMiAyLjQwMiAwIDAgMS0uNDI4LjYyNWMuMjUzLjIzLjQxMi41NjEuNDEyLjkzdjcuNTUzYTEuMjU1IDEuMjU1IDAgMCAxLTEuMjU2IDEuMjU1aC0xLjg0M2ExLjI1IDEuMjUgMCAwIDEtLjg5NC0uMzczYy0uMjI4LjIzLS41NDQuMzczLS44OTQuMzczSDUxLjMyYTEuMjU1IDEuMjU1IDAgMCAxLTEuMjU2LTEuMjU1di0xLjI1MWwtLjA2MS4xMTdhNC43MDMgNC43MDMgMCAwIDEtMS43ODIgMS44ODQgNC43NjcgNC43NjcgMCAwIDEtMi40ODUuNjcgNS42IDUuNiAwIDAgMS0xLjQ4NS0uMTg4bC4wMDkgMi43NjRhMS4yNTUgMS4yNTUgMCAwIDEtMS4yNTUgMS4yNTloLTEuNzI5YTEuMjU1IDEuMjU1IDAgMCAxLTEuMjU1LTEuMjU1di0zLjUzN2ExLjI1NSAxLjI1NSAwIDAgMS0xLjE2Ny43OTNoLTEuNjc5YTEuMjUgMS4yNSAwIDAgMS0uNzctLjI2MyA0LjQ3IDQuNDcgMCAwIDEtMS45NDUuNDI5Yy0uODg1IDAtMS43MjQtLjIxLTIuNDk1LS42MzJsLS4wMTctLjAxYTQuOTgzIDQuOTgzIDAgMCAxLTEuMDgxLS44MzYgMS4yNTUgMS4yNTUgMCAwIDEtMS4yNTQgMS4zMTJoLTEuODFhMS4yNTUgMS4yNTUgMCAwIDEtMS4yMjgtLjk5bC0uNzgyLTMuNjI1LTIuMDQ0IDMuOTM5YTEuMjU1IDEuMjU1IDAgMCAxLTEuMTE1LjY3NmgtLjA5OGExLjI1NSAxLjI1NSAwIDAgMS0xLjExNi0uNjhsLTIuMDYxLTMuOTk0ek0zNS45MiAxNi42M2wuMjA3LS4xMTQuMjIzLS4xNWMuMzI5LS4yMzcuNTc0LS40OTkuNzM1LS43ODVsLjA2MS0uMTE4LjAzMyAxLjMzMmgxLjY3OFY5LjI0MmgtMS42OTRsLS4wMzMgMS4yNjdjLS4wODgtLjIyLS4yNjQtLjQzOC0uNTI2LS42NThsLS4wMzItLjAyOGEzLjE2IDMuMTYgMCAwIDAtLjY2OC0uNDI4bC0uMjctLjEyYTMuMjkzIDMuMjkzIDAgMCAwLTEuMjM1LS4yM2MtLjc1NyAwLTEuNDE1LjE2My0xLjk3NC40OTNhMy4zNiAzLjM2IDAgMCAwLTEuMyAxLjM4MmMtLjI5Ny41OTMtLjQ0NCAxLjI4NC0uNDQ0IDIuMDc0IDAgLjguMTcgMS41MDMuNTEgMi4xMDdhMy43OTUgMy43OTUgMCAwIDAgMS4zODIgMS4zODEgMy44ODMgMy44ODMgMCAwIDAgMS44OTMuNDc3Yy41MyAwIDEuMDE1LS4xMSAxLjQ1NS0uMzN6bS0yLjc4OS01LjM4Yy0uMzg0LjQ1LS41NzUgMS4wMzgtLjU3NSAxLjc2MiAwIC43MzUuMTg2IDEuMzMyLjU1OSAxLjc5NC4zODQuNDUuOTMzLjY3NSAxLjY0NS42NzVhMi4yNSAyLjI1IDAgMCAwIC45MzQtLjE5IDIuMTcgMi4xNyAwIDAgMCAuNDY4LS4yOWwuMTc4LS4xNjFhMi4xNjMgMi4xNjMgMCAwIDAgLjM5Ny0uNTYxYy4xNjMtLjMzMy4yNDQtLjcxNy4yNDQtMS4xNXYtLjExNWMwLS40NzItLjA5OC0uODk0LS4yOTYtMS4yNjdsLS4wNDMtLjA3N2EyLjIxMSAyLjIxMSAwIDAgMC0uNjMzLS43MDlsLS4xMy0uMDg2LS4wNDctLjAyOGEyLjA5OSAyLjA5OSAwIDAgMC0xLjA3My0uMjg1Yy0uNzAyIDAtMS4yNDQuMjMxLTEuNjI5LjY5MnptMi4zMTYgMi43MDZjLjE2My0uMTcuMjgtLjQwNy4yOC0uODN2LS4xMTRjMC0uMjkyLS4wNi0uNTA4LS4xNS0uNjhhLjk1OC45NTggMCAwIDAtLjM1My0uMzg5Ljg1MS44NTEgMCAwIDAtLjQ2NC0uMTI3Yy0uNCAwLS41Ni4xMTQtLjY2NC4yMzlsLS4wMS4wMTJjLS4xNDguMTc0LS4yNzUuNDUtLjI3NS45NDUgMCAuNTA2LjEyMi44MDEuMjcuOTkuMDk3LjExLjI2Ni4yMjQuNjguMjI0LjMwMyAwIC41MDQtLjA5LjY4Ny0uMjY5em03LjU0NSAxLjcwNWEyLjYyNiAyLjYyNiAwIDAgMCAuMzMxLjQyM2MuMjEzLjIyLjQ2NC40MDIuNzU1LjU0OGwuMTczLjA3NGMuNDMzLjE3LjkzLjI1NSAxLjQ5LjI1NS42OCAwIDEuMjk1LS4xNjUgMS44NDQtLjQ5M2EzLjQ0NyAzLjQ0NyAwIDAgMCAxLjMxNi0xLjRjLjMyOS0uNjAzLjQ5My0xLjI5OS40OTMtMi4wODkgMC0xLjI3My0uMzMtMi4yNDMtLjk4OC0yLjkxMy0uNjU4LS42OC0xLjUyLTEuMDItMi41ODQtMS4wMi0uNTk4IDAtMS4xMjQuMTE1LTEuNTc1LjM0N2EyLjgwNyAyLjgwNyAwIDAgMC0uNDE1LjI2MmwtLjE5OS4xNjZhMy4zNSAzLjM1IDAgMCAwLS42NC44MlY5LjI0MmgtMS43MTJ2MTEuNTUzaDEuNzI5bC0uMDE3LTUuMTM0em0uNTMtMS4xMzhjLjEzNy4xOTMuMjk3LjM2LjQ4LjVsLjE1NS4xMS4wNTMuMDM0Yy4zNC4xOTcuNzEzLjI5NyAxLjExOS4yOTcuNzE0IDAgMS4yNjItLjIyNSAxLjY0NS0uNjc1LjM4NS0uNDYuNTc2LTEuMDQ4LjU3Ni0xLjc2MiAwLS43NDYtLjE5Mi0xLjMzOC0uNTc2LTEuNzc3LS4zNzItLjQ1LS45Mi0uNjc1LTEuNjQ1LS42NzUtLjI5IDAtLjU2OS4wNTMtLjgzNS4xNmEyLjM2NiAyLjM2NiAwIDAgMC0uMjg0LjEzNiAxLjk5IDEuOTkgMCAwIDAtLjM2My4yNTQgMi4yMzcgMi4yMzcgMCAwIDAtLjQ2LjU2OWwtLjA4Mi4xNjJhMi41NiAyLjU2IDAgMCAwLS4yMTMgMS4wNzJ2LjExNWMwIC40NzEuMDk4Ljg5NC4yOTYgMS4yNjdsLjEzNS4yMTF6bS45NjQtLjgxOGExLjExIDEuMTEgMCAwIDAgLjM2Ny4zODUuOTM3LjkzNyAwIDAgMCAuNDc2LjExOGMuNDIzIDAgLjU5LS4xMTcuNjg3LS4yMy4xNTktLjE5NC4yOC0uNDc4LjI4LS45NSAwLS41My0uMTMzLS44LS4yNjYtLjk1MmwtLjAyMS0uMDI1Yy0uMDc4LS4wOTQtLjIzMS0uMjIxLS42OC0uMjIxYS45OTUuOTk1IDAgMCAwLS41MDMuMTM1bC0uMDEyLjAwN2EuODU5Ljg1OSAwIDAgMC0uMzM1LjM0M2MtLjA3My4xMzMtLjEzMi4zMjQtLjEzMi42MTR2LjExNWExLjQzIDEuNDMgMCAwIDAgLjE0LjY2em0xNS43LTYuMjIyYy4yMzItLjIzLjM0Ni0uNTE2LjM0Ni0uODU2YTEuMDUzIDEuMDUzIDAgMCAwLS4zNDUtLjc5IDEuMTc1IDEuMTc1IDAgMCAwLS44NC0uMzI5Yy0uMzQgMC0uNjI1LjExLS44NTUuMzNhMS4wNTMgMS4wNTMgMCAwIDAtLjM0Ni43OWMwIC4zNC4xMTUuNjI1LjM0Ni44NTUuMjMuMjMuNTE2LjM0Ni44NTYuMzQ2LjM0IDAgLjYyLS4xMTUuODM5LS4zNDZ6bTQuMzM3IDkuMzE0LjAzMy0xLjMzMmMuMTI4LjI2OS4zMjQuNTE4LjU5Ljc0N2wuMDk4LjA4MWEzLjcyNyAzLjcyNyAwIDAgMCAuMzE2LjIyNGwuMjIzLjEyMmEzLjIxIDMuMjEgMCAwIDAgMS40NC4zMjIgMy43ODUgMy43ODUgMCAwIDAgMS44NzUtLjQ3NyAzLjUyIDMuNTIgMCAwIDAgMS4zODItMS4zNjZjLjM1Mi0uNTkzLjUyNi0xLjI5LjUyNi0yLjA5IDAtLjc5LS4xNDctMS40OC0uNDQ0LTIuMDczYTMuMjM1IDMuMjM1IDAgMCAwLTEuMjgzLTEuMzk5Yy0uNTQ5LS4zNC0xLjE5NS0uNTEtMS45NDItLjUxYTMuNDc2IDMuNDc2IDAgMCAwLTEuNTI3LjM0NGwtLjA4Ni4wNDMtLjE2NS4wOWEzLjQxMiAzLjQxMiAwIDAgMC0uMzMuMjE0Yy0uMjg4LjIxLS41MDcuNDQ2LS42NTYuNzA3YTEuODkzIDEuODkzIDAgMCAwLS4wOTkuMTk4bC4wODItMS4yODNWNC43MDFoLTEuNzQ0djEyLjA5NXptLjQ3My0yLjUwOWEyLjQ4MiAyLjQ4MiAwIDAgMCAuNTY2LjdjLjA3OC4wNjUuMTU5LjEyNS4yNDUuMThsLjE0NC4wOGEyLjEwNSAyLjEwNSAwIDAgMCAuOTc1LjIzMmMuNzEzIDAgMS4yNjItLjIyNSAxLjY0NS0uNjc1LjM4NC0uNDYuNTc2LTEuMDUzLjU3Ni0xLjc3OCAwLS43MzQtLjE5Mi0xLjMyNy0uNTc2LTEuNzc3LS4zNzMtLjQ2LS45MjEtLjY5Mi0xLjY0NS0uNjkyYTIuMTggMi4xOCAwIDAgMC0xLjAxNS4yMzVjLS4xNDcuMDc1LS4yODUuMTctLjQxNS4yODJsLS4xNS4xNDJhMi4wODYgMi4wODYgMCAwIDAtLjQyLjU5NGMtLjE0OS4zMi0uMjIzLjY4NS0uMjIzIDEuMXYuMTE1YzAgLjQ3LjA5Ny44OS4yOTMgMS4yNnptMi42MTYtLjI5M2MuMTU3LS4xOTEuMjgtLjQ3OS4yOC0uOTY3IDAtLjUxLS4xMy0uNzktLjI3Ni0uOTYxbC0uMDIxLS4wMjZjLS4wODItLjEtLjIzMi0uMjI1LS42Ny0uMjI1YS44NjguODY4IDAgMCAwLS42ODEuMjc5bC0uMDEyLjAxMWMtLjE1NC4xNTUtLjI3NC4zOC0uMjc0LjgwN3YuMTE1YzAgLjI4NS4wNTcuNDk5LjE0NC42NjlhMS4xMyAxLjEzIDAgMCAwIC4zNjcuNDA1Yy4xMzcuMDgyLjI4LjEyMy40NTUuMTIzLjQyMyAwIC41OS0uMTE4LjY4Ni0uMjN6bTguMjY2LTMuMDEzYy4yMy0uMDg3LjQ3Mi0uMTM0LjcyNC0uMTRsLjA2OS0uMDAyYy4zMjkgMCAuNTQyLjAzMy42NDIuMDk5bC4yNDctMS43OTRjLS4xMy0uMDY2LS4zNy0uMDk5LS43MTctLjA5OWEyLjMgMi4zIDAgMCAwLS41NDUuMDYzIDIuMDg2IDIuMDg2IDAgMCAwLS40MTEuMTQ4IDIuMTggMi4xOCAwIDAgMC0uNC4yNDkgMi40ODIgMi40ODIgMCAwIDAtLjQ4NS40OTkgMi42NTkgMi42NTkgMCAwIDAtLjMyLjU4MWwtLjA1LjEzN3YtMS40OGgtMS43Nzh2Ny41NTNoMS43Nzd2LTMuODg0YzAtLjM2NC4wNTMtLjY3OC4xNTktLjk0M2ExLjQ5IDEuNDkgMCAwIDEgLjQ2Ni0uNjM2IDIuNTIgMi41MiAwIDAgMSAuMzk5LS4yNTMgMi4xOSAyLjE5IDAgMCAxIC4yMjQtLjA5OXptOS43ODQgMi42NTYuMDUtLjkyMmMwLTEuMTYyLS4yODUtMi4wNjItLjg1Ni0yLjY5OC0uNTU5LS42NDctMS40Mi0uOTctMi41ODQtLjk3LS43NDYgMC0xLjQxNS4xNjMtMi4wMDcuNDkzYTMuNDYyIDMuNDYyIDAgMCAwLTEuNCAxLjM4MmMtLjMyOS42MDQtLjQ5MyAxLjMwNi0uNDkzIDIuMTA2IDAgLjcxNC4xNDMgMS4zNzEuNDI4IDEuOTc1LjI4NS41OTMuNzMgMS4wNyAxLjMzMiAxLjQzMi42MDQuMzUxIDEuMzU1LjUyNiAyLjI1NS41MjYuNjQ5IDAgMS4yMDQtLjA2MiAxLjY2OC0uMTg1bC4wNDQtLjAxMi4xMzUtLjA0Yy40MDktLjEyMi43MzYtLjI2My45ODQtLjQyMWwtLjU0Mi0xLjI2N2MtLjIuMTA4LS40MTUuMTk5LS42NDIuMjc0bC0uMjk3LjA4N2MtLjM0LjA4OC0uNzczLjEzMS0xLjMuMTMxLS42MzYgMC0xLjEzNS0uMTQ3LTEuNDk3LS40NDRhMS41NzMgMS41NzMgMCAwIDEtLjE5Mi0uMTkzYy0uMjQ0LS4yOTQtLjQxNS0uNzA1LS41MTItMS4yMzRsLS4wMDQtLjAyMWg1LjQzem0tNS40MjctMS4yNTYtLjAwMy4wMjJoMy43NTJ2LS4xMzhjLS4wMDctLjQ4NS0uMTA0LS44NTctLjI4OC0xLjExOGExLjA1NiAxLjA1NiAwIDAgMC0uMTU2LS4xNzZjLS4zMDctLjI4NS0uNzQ2LS40MjgtMS4zMTYtLjQyOC0uNjU3IDAtMS4xNTUuMjAyLTEuNDk0LjYwNC0uMjUzLjMtLjQxNy43MTItLjQ5NCAxLjIzNHptLTI3LjA1MyAyLjc3VjQuN2gtMS44NnYxMi4wOTVoNS4zMzNWMTUuMTV6bTcuMTAzLTUuOTA4djcuNTUzaC0xLjg0M1Y5LjI0MmgxLjg0M3onIGZpbGw9JyUyMzAwMCcgZmlsbC1vcGFjaXR5PScuNCcgZmlsbC1ydWxlPSdldmVub2RkJy8lM0UlM0NwYXRoIGQ9J20xOS42MyAxMS4xNTEtLjc1Ny0xLjcxLS4zNDUgMS43MS0xLjEyIDUuNjQ0aC0xLjgyN0wxOC4wODMgNC43aC4xOTdsMy4zMjUgNi41MzMuOTg4IDIuMTkuOTg4LTIuMTlMMjYuODM5IDQuN2guMTgxbDIuNiAxMi4wOTVoLTEuODFsLTEuMjE4LTUuNjQ0LS4zNjItMS43MS0uNjU4IDEuNzEtMi45MyA1LjY0NGgtLjA5OGwtMi45MTMtNS42NDR6bTE0LjgzNiA1LjgxYy0uNjggMC0xLjMxMS0uMTYtMS44OTMtLjQ3OGEzLjc5NSAzLjc5NSAwIDAgMS0xLjM4MS0xLjM4MmMtLjM0LS42MDQtLjUxLTEuMzA2LS41MS0yLjEwNiAwLS43OS4xNDctMS40ODIuNDQ0LTIuMDc0YTMuMzY0IDMuMzY0IDAgMCAxIDEuMy0xLjM4MmMuNTU5LS4zMyAxLjIxNy0uNDk0IDEuOTc0LS40OTRhMy4yOTMgMy4yOTMgMCAwIDEgMS4yMzQuMjMxIDMuMzQxIDMuMzQxIDAgMCAxIC45Ny41NzVjLjI2NC4yMi40NC40MzkuNTI3LjY1OWwuMDMzLTEuMjY3aDEuNjk0djcuNTUzSDM3LjE4bC0uMDMzLTEuMzMyYy0uMTg2LjM5NS0uNTI2Ljc0Ni0xLjAyIDEuMDUzYTMuMTY3IDMuMTY3IDAgMCAxLTEuNjYyLjQ0NHptLjI5Ni0xLjQ4MmMuNjI2IDAgMS4xNTItLjIxNCAxLjU4LS42NDIuNDI4LS40NC42NDItMS4wMS42NDItMS43MTF2LS4xMTVjMC0uNDcyLS4wOTgtLjg5NC0uMjk2LTEuMjY3YTIuMjExIDIuMjExIDAgMCAwLS44MDctLjg3MiAyLjA5OCAyLjA5OCAwIDAgMC0xLjExOS0uMzEzYy0uNzAyIDAtMS4yNDUuMjMxLTEuNjI5LjY5Mi0uMzg0LjQ1LS41NzUgMS4wMzctLjU3NSAxLjc2IDAgLjczNi4xODYgMS4zMzMuNTU5IDEuNzk1LjM4NC40NS45MzMuNjc1IDEuNjQ1LjY3NXptNi41MjEtNi4yMzdoMS43MTF2MS40Yy42MDQtMS4wNjUgMS41NDctMS41OTcgMi44My0xLjU5NyAxLjA2NCAwIDEuOTI2LjM0IDIuNTg0IDEuMDIuNjU5LjY3Ljk4OCAxLjY0MS45ODggMi45MTQgMCAuNzktLjE2NCAxLjQ4Ny0uNDkzIDIuMDlhMy40NTYgMy40NTYgMCAwIDEtMS4zMTYgMS4zOTkgMy41MSAzLjUxIDAgMCAxLTEuODQ0LjQ5M2MtLjYzNiAwLTEuMTktLjExLTEuNjYyLS4zMjlhMi42NjUgMi42NjUgMCAwIDEtMS4wODYtLjk3bC4wMTcgNS4xMzRoLTEuNzI4VjkuMjQyem00LjA0OCA2LjIyYy43MTQgMCAxLjI2Mi0uMjI0IDEuNjQ1LS42NzQuMzg1LS40Ni41NzYtMS4wNDguNTc2LTEuNzYyIDAtLjc0Ni0uMTkyLTEuMzM4LS41NzYtMS43NzctLjM3Mi0uNDUtLjkyLS42NzUtMS42NDUtLjY3NS0uMzk1IDAtLjc2OC4wOTgtMS4xMi4yOTYtLjM0LjE4Ny0uNjEzLjQ2LS44MjIuODIzLS4xOTcuMzUxLS4yOTYuNzYzLS4yOTYgMS4yMzR2LjExNWMwIC40NzIuMDk4Ljg5NC4yOTYgMS4yNjcuMjA5LjM2Mi40ODMuNjQ3LjgyMy44NTUuMzQuMTk3LjcxMy4yOTcgMS4xMTkuMjk3eicgZmlsbD0nJTIzZmZmJy8lM0UlM0NwYXRoIGQ9J001MS4zMjUgNC43aDEuODZ2MTAuNDVoMy40NzN2MS42NDZoLTUuMzMzem03LjEyIDQuNTQyaDEuODQzdjcuNTUzaC0xLjg0M3ptLjkwNS0xLjQxNWExLjE1OSAxLjE1OSAwIDAgMS0uODU2LS4zNDYgMS4xNjUgMS4xNjUgMCAwIDEtLjM0Ni0uODU2IDEuMDUzIDEuMDUzIDAgMCAxIC4zNDYtLjc5Yy4yMy0uMjE5LjUxNi0uMzI5Ljg1Ni0uMzI5LjMyOSAwIC42MDkuMTEuODM5LjMzYTEuMDUzIDEuMDUzIDAgMCAxIC4zNDUuNzkgMS4xNTkgMS4xNTkgMCAwIDEtLjM0NS44NTVjLS4yMi4yMy0uNS4zNDYtLjg0LjM0NnptNy44NzUgOS4xMzNhMy4xNjcgMy4xNjcgMCAwIDEtMS42NjItLjQ0NGMtLjQ4Mi0uMzA3LS44MTctLjY1OC0xLjAwNC0xLjA1M2wtLjAzMyAxLjMzMmgtMS43MVY0LjcwMWgxLjc0M3Y0LjY1N2wtLjA4MiAxLjI4M2MuMTg2LS40MzguNTQ4LS44MTIgMS4wODYtMS4xMTlhMy40ODYgMy40ODYgMCAwIDEgMS43NzgtLjQ3N2MuNzQ2IDAgMS4zOTMuMTcgMS45NDIuNTFhMy4yMzUgMy4yMzUgMCAwIDEgMS4yODMgMS40Yy4yOTcuNTkyLjQ0NCAxLjI4Mi40NDQgMi4wNzIgMCAuOC0uMTc1IDEuNDk4LS41MjYgMi4wOWEzLjUyIDMuNTIgMCAwIDEtMS4zODIgMS4zNjYgMy43ODUgMy43ODUgMCAwIDEtMS44NzYuNDc3em0tLjI5Ni0xLjQ4MWMuNzEzIDAgMS4yNi0uMjI1IDEuNjQ1LS42NzUuMzg0LS40Ni41NzctMS4wNTMuNTc3LTEuNzc4IDAtLjczNC0uMTkzLTEuMzI3LS41NzctMS43NzYtLjM3My0uNDYtLjkyMS0uNjkyLTEuNjQ1LS42OTJhMi4xMTUgMi4xMTUgMCAwIDAtMS41OC42NTljLS40MjguNDI4LS42NDIuOTkyLS42NDIgMS42OTR2LjExNWMwIC40NzMuMDk4Ljg5NS4yOTYgMS4yNjdhMi4zODUgMi4zODUgMCAwIDAgLjgwNy44NzIgMi4xIDIuMSAwIDAgMCAxLjExOS4zMTN6bTUuOTI3LTYuMjM3aDEuNzc3djEuNDgxYy4xNzYtLjUwNS40Ni0uOTEuODU2LTEuMjE3YTIuMTQgMi4xNCAwIDAgMSAxLjM0OS0uNDZjLjM1MSAwIC41OTMuMDMyLjcyNC4wOThsLS4yNDcgMS43OTRjLS4wOTktLjA2Ni0uMzEzLS4wOTktLjY0Mi0uMDk5LS41MTYgMC0uOTg4LjE2NC0xLjQxNi40OTQtLjQxNy4zMjktLjYyNi44NTUtLjYyNiAxLjU4djMuODgzaC0xLjc3N1Y5LjI0MnptOS41MzQgNy43MThjLS45IDAtMS42NTEtLjE3NS0yLjI1NS0uNTI2LS42MDMtLjM2Mi0xLjA0Ny0uODQtMS4zMzItMS40MzJhNC41NjcgNC41NjcgMCAwIDEtLjQyOC0xLjk3NWMwLS44LjE2NC0xLjUwMi40OTMtMi4xMDZhMy40NjIgMy40NjIgMCAwIDEgMS40LTEuMzgyYy41OTItLjMzIDEuMjYyLS40OTQgMi4wMDctLjQ5NCAxLjE2MyAwIDIuMDI0LjMyNCAyLjU4NC45Ny41Ny42MzcuODU2IDEuNTM3Ljg1NiAyLjcgMCAuMjk2LS4wMTcuNjAzLS4wNS45MmgtNS40M2MuMTIuNjcuMzU2IDEuMTUzLjcwOCAxLjQ1LjM2Mi4yOTYuODYuNDQzIDEuNDk3LjQ0My41MjYgMCAuOTYtLjA0NCAxLjMtLjEzMWE0LjEyMyA0LjEyMyAwIDAgMCAuOTM4LS4zNjJsLjU0MiAxLjI2N2MtLjI3NC4xNzUtLjY0Ny4zMjktMS4xMTkuNDYtLjQ3Mi4xMzItMS4wNDIuMTk3LTEuNzExLjE5N3ptMS41OTYtNC41NThjLjAxLS42OC0uMTM3LTEuMTU4LS40NDQtMS40MzItLjMwNy0uMjg1LS43NDYtLjQyOC0xLjMxNi0uNDI4LTEuMTUyIDAtMS44MTUuNjItMS45OTEgMS44NmgzLjc1MnonIGZpbGw9JyUyM2UxZTNlOScvJTNFJTNDZyBmaWxsLXJ1bGU9J2V2ZW5vZGQnIHN0cm9rZS13aWR0aD0nMS4wMzYnJTNFJTNDcGF0aCBkPSdtOC4xNjYgMTYuMTQ2LS4wMDIuMDAyYTEuNTQgMS41NCAwIDAgMS0yLjAwOSAwbC0uMDAyLS4wMDItLjA0My0uMDM0LS4wMDItLjAwMi0uMTk5LS4xNjJINC4zNzdhLjY1Ny42NTcgMCAwIDAtLjY1OS42NTl2MS44NGEuNjU3LjY1NyAwIDAgMCAuNjU5LjY1OWg1LjU2NWEuNjU3LjY1NyAwIDAgMCAuNjU5LS42NTl2LTEuODRhLjY1Ny42NTcgMCAwIDAtLjY1OS0uNjU5SDguNDExbC0uMjAyLjE2NHptLTEuMTIxLS45MDVhLjI5LjI5IDAgMCAwIC4xMTMuMDIzLjI4Ni4yODYgMCAwIDAgLjE4OS0uMDdsLjA3Ny0uMDYzYy42MzQtLjUwOCA0LjY3Mi0zLjc0MyA0LjY3Mi03LjU3NSAwLTIuNTUtMi4yMTUtNC42MjUtNC45MzgtNC42MjVTMi4yMjEgNS4wMDYgMi4yMjEgNy41NTZjMCAzLjIyNSAyLjg2IDYuMDI3IDQuMTQ0IDcuMTM3aC4wMDRsLjA0LjAzOC40ODQuNC4wNzcuMDYzYS42MjguNjI4IDAgMCAwIC4wNzQuMDQ3em0tMi41Mi0uNTQ4YTE2Ljg5OCAxNi44OTggMCAwIDEtMS4xODMtMS4zMTVDMi4xODcgMTEuOTQyLjk2NyA5Ljg5Ny45NjcgNy41NTVjMC0zLjMxOSAyLjg1NS01Ljg4IDYuMTkyLTUuODggMy4zMzggMCA2LjE5MyAyLjU2MSA2LjE5MyA1Ljg4MSAwIDIuMzQtMS4yMiA0LjM4Ny0yLjM3NiA1LjgyMmExNi44OTggMTYuODk4IDAgMCAxLTEuMTgyIDEuMzE1aC4xNWExLjkxMiAxLjkxMiAwIDAgMSAxLjkxNCAxLjkxNHYxLjg0YTEuOTEyIDEuOTEyIDAgMCAxLTEuOTE0IDEuOTE0SDQuMzc3YTEuOTEyIDEuOTEyIDAgMCAxLTEuOTE0LTEuOTE0di0xLjg0YTEuOTEyIDEuOTEyIDAgMCAxIDEuOTE0LTEuOTE0em0zLjgyLTYuOTM1YzAgLjY5Mi0uNTUgMS4yMjItMS4xODcgMS4yMjJzLTEuMTg1LS41MjktMS4xODUtMS4yMjIuNTQ4LTEuMjIyIDEuMTg1LTEuMjIyYy42MzggMCAxLjE4Ni41MjkgMS4xODYgMS4yMjJ6bS0xLjE4NiAyLjQ3N2MxLjM0OCAwIDIuNDQyLTEuMTEgMi40NDItMi40NzhTOC41MDcgNS4yOCA3LjE1OSA1LjI4IDQuNzIgNi4zOSA0LjcyIDcuNzU4czEuMDkyIDIuNDc3IDIuNDQgMi40Nzd6bTIuMDQ4IDcuNzFINS4xMTR2LS44MzhoNC4wOTN6JyBmaWxsPSclMjMwMDAnIGZpbGwtb3BhY2l0eT0nLjQnLyUzRSUzQ3BhdGggZD0nTTIuMjIyIDcuNTU1YzAtMi41NSAyLjIxNC00LjYyNSA0LjkzNy00LjYyNSAyLjcyMyAwIDQuOTM4IDIuMDc1IDQuOTM4IDQuNjI1IDAgMy44MzItNC4wMzggNy4wNjgtNC42NzIgNy41NzVsLS4wNzcuMDYzYS4yODYuMjg2IDAgMCAxLS4xODkuMDcuMjg2LjI4NiAwIDAgMS0uMTg4LS4wN2wtLjA3Ny0uMDYzYy0uNjM0LS41MDctNC42NzItMy43NDMtNC42NzItNy41NzV6bTQuOTM3IDIuNjhjMS4zNDggMCAyLjQ0Mi0xLjExIDIuNDQyLTIuNDc4UzguNTA3IDUuMjggNy4xNTkgNS4yOCA0LjcyIDYuMzkgNC43MiA3Ljc1OHMxLjA5MiAyLjQ3NyAyLjQ0IDIuNDc3eicgZmlsbD0nJTIzZTFlM2U5Jy8lM0UlM0NwYXRoIGQ9J000LjM3NyAxNS45NDhhLjY1Ny42NTcgMCAwIDAtLjY1OS42NTl2MS44NGEuNjU3LjY1NyAwIDAgMCAuNjU5LjY1OWg1LjU2NWEuNjU3LjY1NyAwIDAgMCAuNjU5LS42NTl2LTEuODRhLjY1Ny42NTcgMCAwIDAtLjY1OS0uNjU5em00LjgzIDEuMTZINS4xMTR2LjgzOGg0LjA5M3onIGZpbGw9JyUyM2ZmZicvJTNFJTNDL2clM0UlM0Mvc3ZnJTNFXCIpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2hlaWdodDoyM3B4O21hcmdpbjowIDAgLTRweCAtNHB4O292ZXJmbG93OmhpZGRlbjt3aWR0aDo4OHB4fWEubWFwYm94Z2wtY3RybC1sb2dvLm1hcGJveGdsLWNvbXBhY3QsYS5tYXBsaWJyZWdsLWN0cmwtbG9nby5tYXBsaWJyZWdsLWNvbXBhY3R7d2lkdGg6MTRweH1AbWVkaWEgKC1tcy1oaWdoLWNvbnRyYXN0OmFjdGl2ZSl7YS5tYXBib3hnbC1jdHJsLWxvZ28sYS5tYXBsaWJyZWdsLWN0cmwtbG9nb3tiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9Jzg4JyBoZWlnaHQ9JzIzJyBmaWxsPSdub25lJyUzRSUzQ3BhdGggZD0nTTE3LjQwOCAxNi43OTZoLTEuODI3bDIuNTAxLTEyLjA5NWguMTk4bDMuMzI0IDYuNTMzLjk4OCAyLjE5Ljk4OC0yLjE5IDMuMjU4LTYuNTMzaC4xODFsMi42IDEyLjA5NWgtMS44MWwtMS4yMTgtNS42NDQtLjM2Mi0xLjcxLS42NTggMS43MS0yLjkyOSA1LjY0NGgtLjA5OGwtMi45MTQtNS42NDQtLjc1Ny0xLjcxLS4zNDUgMS43MXptMS45NTgtMy40Mi0uNzI2IDMuNjYzYTEuMjU1IDEuMjU1IDAgMCAxLTEuMjMyIDEuMDExaC0xLjgyN2ExLjI1NSAxLjI1NSAwIDAgMS0xLjIyOS0xLjUwOWwyLjUwMS0xMi4wOTVhMS4yNTUgMS4yNTUgMCAwIDEgMS4yMy0xLjAwMWguMTk3YTEuMjU1IDEuMjU1IDAgMCAxIDEuMTIuNjg1bDMuMTkgNi4yNzMgMy4xMjUtNi4yNjNhMS4yNTUgMS4yNTUgMCAwIDEgMS4xMjMtLjY5NWguMTgxYTEuMjU1IDEuMjU1IDAgMCAxIDEuMjI3Ljk5MWwxLjQ0MyA2LjcxYTUuMTEgNS4xMSAwIDAgMSAuMzE0LS43ODdsLjAwOS0uMDE2YTQuNjIzIDQuNjIzIDAgMCAxIDEuNzc3LTEuODg3Yy43ODItLjQ2IDEuNjY4LS42NjcgMi42MTEtLjY2N2E0LjU0OCA0LjU0OCAwIDAgMSAxLjcuMzJsLjMwNi4xMzRjLjIxLS4xNi40NzQtLjI1Ni43NTktLjI1NmgxLjY5NGExLjI1NSAxLjI1NSAwIDAgMSAxLjIxMi45MjUgMS4yNTUgMS4yNTUgMCAwIDEgMS4yMTItLjkyNWgxLjcxMWMuMjg0IDAgLjU0NS4wOTQuNzU1LjI1Mi42MTMtLjMgMS4zMTItLjQ1IDIuMDc1LS40NSAxLjM1NiAwIDIuNTU3LjQ0NSAzLjQ4MiAxLjQuMzE0LjMxOS41NjYuNjc2Ljc2MyAxLjA2NFY0LjcwMWExLjI1NSAxLjI1NSAwIDAgMSAxLjI1NS0xLjI1NWgxLjg2QTEuMjU1IDEuMjU1IDAgMCAxIDU0LjQ0IDQuN3Y5LjE5NGgyLjIxN2MuMTkgMCAuMzcuMDQzLjUzMi4xMTh2LTQuNzdjMC0uMzU2LjE0Ny0uNjc4LjM4NS0uOTA2YTIuNDE2IDIuNDE2IDAgMCAxLS42ODItMS43MWMwLS42NjUuMjY3LTEuMjUzLjczNS0xLjdhMi40NDggMi40NDggMCAwIDEgMS43MjItLjY3NCAyLjQzIDIuNDMgMCAwIDEgMS43MDUuNjc1Yy4yMTEuMi4zODEuNDMuNTA0LjY4M1Y0LjdhMS4yNTUgMS4yNTUgMCAwIDEgMS4yNTUtMS4yNTVoMS43NDRBMS4yNTUgMS4yNTUgMCAwIDEgNjUuODEyIDQuN3YzLjMzNWE0Ljc2IDQuNzYgMCAwIDEgMS41MjYtLjI0NmMuOTM4IDAgMS44MTcuMjE0IDIuNTkuNjlhNC40NyA0LjQ3IDAgMCAxIDEuNjcgMS43NDN2LS45OGExLjI1NSAxLjI1NSAwIDAgMSAxLjI1Ni0xLjI1NmgxLjc3N2MuMjMzIDAgLjQ1MS4wNjQuNjM5LjE3NGEzLjQwNyAzLjQwNyAwIDAgMSAxLjU2Ny0uMzcyYy4zNDYgMCAuODYxLjAyIDEuMjg1LjIzMmExLjI1NSAxLjI1NSAwIDAgMSAuNjg5IDEuMDA0IDQuNzMgNC43MyAwIDAgMSAuODUzLS41ODhjLjc5NS0uNDQgMS42NzUtLjY0NyAyLjYxLS42NDcgMS4zODUgMCAyLjY1LjM5IDMuNTI1IDEuMzk2LjgzNi45MzggMS4xNjggMi4xNzMgMS4xNjggMy41MjggMCAuMzQzLS4wMi42OTQtLjA1NiAxLjA1MWExLjI1NSAxLjI1NSAwIDAgMS0uOTQ3IDEuMDlsLjQwOC45NTJhMS4yNTUgMS4yNTUgMCAwIDEtLjQ3NyAxLjU1MmMtLjQxOC4yNjgtLjkyLjQ2My0xLjQ1OC42MTItLjYxMy4xNzEtMS4zMDQuMjQ0LTIuMDQ5LjI0NC0xLjA2IDAtMi4wNDMtLjIwNy0yLjg4Ni0uNjk4bC0uMDE1LS4wMDhjLS43OTgtLjQ4LTEuNDE5LTEuMTM1LTEuODE4LTEuOTYzbC0uMDA0LS4wMDhhNS44MTUgNS44MTUgMCAwIDEtLjU0OC0yLjUxMmMwLS4yODYuMDE3LS41NjcuMDUzLS44NDNhMS4yNTUgMS4yNTUgMCAwIDEtLjMzMy0uMDg2bC0uMTY2LS4wMDRjLS4yMjMgMC0uNDI2LjA2Mi0uNjQzLjIyOC0uMDMuMDI0LS4xNDIuMTM5LS4xNDIuNTl2My44ODNhMS4yNTUgMS4yNTUgMCAwIDEtMS4yNTYgMS4yNTZoLTEuNzc3YTEuMjU1IDEuMjU1IDAgMCAxLTEuMjU2LTEuMjU2VjE1LjY5bC0uMDMyLjA1N2E0Ljc3OCA0Ljc3OCAwIDAgMS0xLjg2IDEuODMzIDUuMDQgNS4wNCAwIDAgMS0yLjQ4NC42MzQgNC40NyA0LjQ3IDAgMCAxLTEuOTM1LS40MjQgMS4yNTIgMS4yNTIgMCAwIDEtLjc2NC4yNThoLTEuNzFhMS4yNTUgMS4yNTUgMCAwIDEtMS4yNTYtMS4yNTVWNy42ODdhMi40MDIgMi40MDIgMCAwIDEtLjQyOC42MjVjLjI1My4yMy40MTIuNTYxLjQxMi45M3Y3LjU1M2ExLjI1NSAxLjI1NSAwIDAgMS0xLjI1NiAxLjI1NWgtMS44NDNhMS4yNSAxLjI1IDAgMCAxLS44OTQtLjM3M2MtLjIyOC4yMy0uNTQ0LjM3My0uODk0LjM3M0g1MS4zMmExLjI1NSAxLjI1NSAwIDAgMS0xLjI1Ni0xLjI1NXYtMS4yNTFsLS4wNjEuMTE3YTQuNzAzIDQuNzAzIDAgMCAxLTEuNzgyIDEuODg0IDQuNzY3IDQuNzY3IDAgMCAxLTIuNDg1LjY3IDUuNiA1LjYgMCAwIDEtMS40ODUtLjE4OGwuMDA5IDIuNzY0YTEuMjU1IDEuMjU1IDAgMCAxLTEuMjU1IDEuMjU5aC0xLjcyOWExLjI1NSAxLjI1NSAwIDAgMS0xLjI1NS0xLjI1NXYtMy41MzdhMS4yNTUgMS4yNTUgMCAwIDEtMS4xNjcuNzkzaC0xLjY3OWExLjI1IDEuMjUgMCAwIDEtLjc3LS4yNjMgNC40NyA0LjQ3IDAgMCAxLTEuOTQ1LjQyOWMtLjg4NSAwLTEuNzI0LS4yMS0yLjQ5NS0uNjMybC0uMDE3LS4wMWE0Ljk4MyA0Ljk4MyAwIDAgMS0xLjA4MS0uODM2IDEuMjU1IDEuMjU1IDAgMCAxLTEuMjU0IDEuMzEyaC0xLjgxYTEuMjU1IDEuMjU1IDAgMCAxLTEuMjI4LS45OWwtLjc4Mi0zLjYyNS0yLjA0NCAzLjkzOWExLjI1NSAxLjI1NSAwIDAgMS0xLjExNS42NzZoLS4wOThhMS4yNTUgMS4yNTUgMCAwIDEtMS4xMTYtLjY4bC0yLjA2MS0zLjk5NHpNMzUuOTIgMTYuNjNsLjIwNy0uMTE0LjIyMy0uMTVjLjMyOS0uMjM3LjU3NC0uNDk5LjczNS0uNzg1bC4wNjEtLjExOC4wMzMgMS4zMzJoMS42NzhWOS4yNDJoLTEuNjk0bC0uMDMzIDEuMjY3Yy0uMDg4LS4yMi0uMjY0LS40MzgtLjUyNi0uNjU4bC0uMDMyLS4wMjhhMy4xNiAzLjE2IDAgMCAwLS42NjgtLjQyOGwtLjI3LS4xMmEzLjI5MyAzLjI5MyAwIDAgMC0xLjIzNS0uMjNjLS43NTcgMC0xLjQxNS4xNjMtMS45NzQuNDkzYTMuMzYgMy4zNiAwIDAgMC0xLjMgMS4zODJjLS4yOTcuNTkzLS40NDQgMS4yODQtLjQ0NCAyLjA3NCAwIC44LjE3IDEuNTAzLjUxIDIuMTA3YTMuNzk1IDMuNzk1IDAgMCAwIDEuMzgyIDEuMzgxIDMuODgzIDMuODgzIDAgMCAwIDEuODkzLjQ3N2MuNTMgMCAxLjAxNS0uMTEgMS40NTUtLjMzem0tMi43ODktNS4zOGMtLjM4NC40NS0uNTc1IDEuMDM4LS41NzUgMS43NjIgMCAuNzM1LjE4NiAxLjMzMi41NTkgMS43OTQuMzg0LjQ1LjkzMy42NzUgMS42NDUuNjc1YTIuMjUgMi4yNSAwIDAgMCAuOTM0LS4xOSAyLjE3IDIuMTcgMCAwIDAgLjQ2OC0uMjlsLjE3OC0uMTYxYTIuMTYzIDIuMTYzIDAgMCAwIC4zOTctLjU2MWMuMTYzLS4zMzMuMjQ0LS43MTcuMjQ0LTEuMTV2LS4xMTVjMC0uNDcyLS4wOTgtLjg5NC0uMjk2LTEuMjY3bC0uMDQzLS4wNzdhMi4yMTEgMi4yMTEgMCAwIDAtLjYzMy0uNzA5bC0uMTMtLjA4Ni0uMDQ3LS4wMjhhMi4wOTkgMi4wOTkgMCAwIDAtMS4wNzMtLjI4NWMtLjcwMiAwLTEuMjQ0LjIzMS0xLjYyOS42OTJ6bTIuMzE2IDIuNzA2Yy4xNjMtLjE3LjI4LS40MDcuMjgtLjgzdi0uMTE0YzAtLjI5Mi0uMDYtLjUwOC0uMTUtLjY4YS45NTguOTU4IDAgMCAwLS4zNTMtLjM4OS44NTEuODUxIDAgMCAwLS40NjQtLjEyN2MtLjQgMC0uNTYuMTE0LS42NjQuMjM5bC0uMDEuMDEyYy0uMTQ4LjE3NC0uMjc1LjQ1LS4yNzUuOTQ1IDAgLjUwNi4xMjIuODAxLjI3Ljk5LjA5Ny4xMS4yNjYuMjI0LjY4LjIyNC4zMDMgMCAuNTA0LS4wOS42ODctLjI2OXptNy41NDUgMS43MDVhMi42MjYgMi42MjYgMCAwIDAgLjMzMS40MjNjLjIxMy4yMi40NjQuNDAyLjc1NS41NDhsLjE3My4wNzRjLjQzMy4xNy45My4yNTUgMS40OS4yNTUuNjggMCAxLjI5NS0uMTY1IDEuODQ0LS40OTNhMy40NDcgMy40NDcgMCAwIDAgMS4zMTYtMS40Yy4zMjktLjYwMy40OTMtMS4yOTkuNDkzLTIuMDg5IDAtMS4yNzMtLjMzLTIuMjQzLS45ODgtMi45MTMtLjY1OC0uNjgtMS41Mi0xLjAyLTIuNTg0LTEuMDItLjU5OCAwLTEuMTI0LjExNS0xLjU3NS4zNDdhMi44MDcgMi44MDcgMCAwIDAtLjQxNS4yNjJsLS4xOTkuMTY2YTMuMzUgMy4zNSAwIDAgMC0uNjQuODJWOS4yNDJoLTEuNzEydjExLjU1M2gxLjcyOWwtLjAxNy01LjEzNHptLjUzLTEuMTM4Yy4xMzcuMTkzLjI5Ny4zNi40OC41bC4xNTUuMTEuMDUzLjAzNGMuMzQuMTk3LjcxMy4yOTcgMS4xMTkuMjk3LjcxNCAwIDEuMjYyLS4yMjUgMS42NDUtLjY3NS4zODUtLjQ2LjU3Ni0xLjA0OC41NzYtMS43NjIgMC0uNzQ2LS4xOTItMS4zMzgtLjU3Ni0xLjc3Ny0uMzcyLS40NS0uOTItLjY3NS0xLjY0NS0uNjc1LS4yOSAwLS41NjkuMDUzLS44MzUuMTZhMi4zNjYgMi4zNjYgMCAwIDAtLjI4NC4xMzYgMS45OSAxLjk5IDAgMCAwLS4zNjMuMjU0IDIuMjM3IDIuMjM3IDAgMCAwLS40Ni41NjlsLS4wODIuMTYyYTIuNTYgMi41NiAwIDAgMC0uMjEzIDEuMDcydi4xMTVjMCAuNDcxLjA5OC44OTQuMjk2IDEuMjY3bC4xMzUuMjExem0uOTY0LS44MThhMS4xMSAxLjExIDAgMCAwIC4zNjcuMzg1LjkzNy45MzcgMCAwIDAgLjQ3Ni4xMThjLjQyMyAwIC41OS0uMTE3LjY4Ny0uMjMuMTU5LS4xOTQuMjgtLjQ3OC4yOC0uOTUgMC0uNTMtLjEzMy0uOC0uMjY2LS45NTJsLS4wMjEtLjAyNWMtLjA3OC0uMDk0LS4yMzEtLjIyMS0uNjgtLjIyMWEuOTk1Ljk5NSAwIDAgMC0uNTAzLjEzNWwtLjAxMi4wMDdhLjg1OS44NTkgMCAwIDAtLjMzNS4zNDNjLS4wNzMuMTMzLS4xMzIuMzI0LS4xMzIuNjE0di4xMTVhMS40MyAxLjQzIDAgMCAwIC4xNC42NnptMTUuNy02LjIyMmMuMjMyLS4yMy4zNDYtLjUxNi4zNDYtLjg1NmExLjA1MyAxLjA1MyAwIDAgMC0uMzQ1LS43OSAxLjE3NSAxLjE3NSAwIDAgMC0uODQtLjMyOWMtLjM0IDAtLjYyNS4xMS0uODU1LjMzYTEuMDUzIDEuMDUzIDAgMCAwLS4zNDYuNzljMCAuMzQuMTE1LjYyNS4zNDYuODU1LjIzLjIzLjUxNi4zNDYuODU2LjM0Ni4zNCAwIC42Mi0uMTE1LjgzOS0uMzQ2em00LjMzNyA5LjMxNC4wMzMtMS4zMzJjLjEyOC4yNjkuMzI0LjUxOC41OS43NDdsLjA5OC4wODFhMy43MjcgMy43MjcgMCAwIDAgLjMxNi4yMjRsLjIyMy4xMjJhMy4yMSAzLjIxIDAgMCAwIDEuNDQuMzIyIDMuNzg1IDMuNzg1IDAgMCAwIDEuODc1LS40NzcgMy41MiAzLjUyIDAgMCAwIDEuMzgyLTEuMzY2Yy4zNTItLjU5My41MjYtMS4yOS41MjYtMi4wOSAwLS43OS0uMTQ3LTEuNDgtLjQ0NC0yLjA3M2EzLjIzNSAzLjIzNSAwIDAgMC0xLjI4My0xLjM5OWMtLjU0OS0uMzQtMS4xOTUtLjUxLTEuOTQyLS41MWEzLjQ3NiAzLjQ3NiAwIDAgMC0xLjUyNy4zNDRsLS4wODYuMDQzLS4xNjUuMDlhMy40MTIgMy40MTIgMCAwIDAtLjMzLjIxNGMtLjI4OC4yMS0uNTA3LjQ0Ni0uNjU2LjcwN2ExLjg5MyAxLjg5MyAwIDAgMC0uMDk5LjE5OGwuMDgyLTEuMjgzVjQuNzAxaC0xLjc0NHYxMi4wOTV6bS40NzMtMi41MDlhMi40ODIgMi40ODIgMCAwIDAgLjU2Ni43Yy4wNzguMDY1LjE1OS4xMjUuMjQ1LjE4bC4xNDQuMDhhMi4xMDUgMi4xMDUgMCAwIDAgLjk3NS4yMzJjLjcxMyAwIDEuMjYyLS4yMjUgMS42NDUtLjY3NS4zODQtLjQ2LjU3Ni0xLjA1My41NzYtMS43NzggMC0uNzM0LS4xOTItMS4zMjctLjU3Ni0xLjc3Ny0uMzczLS40Ni0uOTIxLS42OTItMS42NDUtLjY5MmEyLjE4IDIuMTggMCAwIDAtMS4wMTUuMjM1Yy0uMTQ3LjA3NS0uMjg1LjE3LS40MTUuMjgybC0uMTUuMTQyYTIuMDg2IDIuMDg2IDAgMCAwLS40Mi41OTRjLS4xNDkuMzItLjIyMy42ODUtLjIyMyAxLjF2LjExNWMwIC40Ny4wOTcuODkuMjkzIDEuMjZ6bTIuNjE2LS4yOTNjLjE1Ny0uMTkxLjI4LS40NzkuMjgtLjk2NyAwLS41MS0uMTMtLjc5LS4yNzYtLjk2MWwtLjAyMS0uMDI2Yy0uMDgyLS4xLS4yMzItLjIyNS0uNjctLjIyNWEuODY4Ljg2OCAwIDAgMC0uNjgxLjI3OWwtLjAxMi4wMTFjLS4xNTQuMTU1LS4yNzQuMzgtLjI3NC44MDd2LjExNWMwIC4yODUuMDU3LjQ5OS4xNDQuNjY5YTEuMTMgMS4xMyAwIDAgMCAuMzY3LjQwNWMuMTM3LjA4Mi4yOC4xMjMuNDU1LjEyMy40MjMgMCAuNTktLjExOC42ODYtLjIzem04LjI2Ni0zLjAxM2MuMjMtLjA4Ny40NzItLjEzNC43MjQtLjE0bC4wNjktLjAwMmMuMzI5IDAgLjU0Mi4wMzMuNjQyLjA5OWwuMjQ3LTEuNzk0Yy0uMTMtLjA2Ni0uMzctLjA5OS0uNzE3LS4wOTlhMi4zIDIuMyAwIDAgMC0uNTQ1LjA2MyAyLjA4NiAyLjA4NiAwIDAgMC0uNDExLjE0OCAyLjE4IDIuMTggMCAwIDAtLjQuMjQ5IDIuNDgyIDIuNDgyIDAgMCAwLS40ODUuNDk5IDIuNjU5IDIuNjU5IDAgMCAwLS4zMi41ODFsLS4wNS4xMzd2LTEuNDhoLTEuNzc4djcuNTUzaDEuNzc3di0zLjg4NGMwLS4zNjQuMDUzLS42NzguMTU5LS45NDNhMS40OSAxLjQ5IDAgMCAxIC40NjYtLjYzNiAyLjUyIDIuNTIgMCAwIDEgLjM5OS0uMjUzIDIuMTkgMi4xOSAwIDAgMSAuMjI0LS4wOTl6bTkuNzg0IDIuNjU2LjA1LS45MjJjMC0xLjE2Mi0uMjg1LTIuMDYyLS44NTYtMi42OTgtLjU1OS0uNjQ3LTEuNDItLjk3LTIuNTg0LS45Ny0uNzQ2IDAtMS40MTUuMTYzLTIuMDA3LjQ5M2EzLjQ2MiAzLjQ2MiAwIDAgMC0xLjQgMS4zODJjLS4zMjkuNjA0LS40OTMgMS4zMDYtLjQ5MyAyLjEwNiAwIC43MTQuMTQzIDEuMzcxLjQyOCAxLjk3NS4yODUuNTkzLjczIDEuMDcgMS4zMzIgMS40MzIuNjA0LjM1MSAxLjM1NS41MjYgMi4yNTUuNTI2LjY0OSAwIDEuMjA0LS4wNjIgMS42NjgtLjE4NWwuMDQ0LS4wMTIuMTM1LS4wNGMuNDA5LS4xMjIuNzM2LS4yNjMuOTg0LS40MjFsLS41NDItMS4yNjdjLS4yLjEwOC0uNDE1LjE5OS0uNjQyLjI3NGwtLjI5Ny4wODdjLS4zNC4wODgtLjc3My4xMzEtMS4zLjEzMS0uNjM2IDAtMS4xMzUtLjE0Ny0xLjQ5Ny0uNDQ0YTEuNTczIDEuNTczIDAgMCAxLS4xOTItLjE5M2MtLjI0NC0uMjk0LS40MTUtLjcwNS0uNTEyLTEuMjM0bC0uMDA0LS4wMjFoNS40M3ptLTUuNDI3LTEuMjU2LS4wMDMuMDIyaDMuNzUydi0uMTM4Yy0uMDA3LS40ODUtLjEwNC0uODU3LS4yODgtMS4xMThhMS4wNTYgMS4wNTYgMCAwIDAtLjE1Ni0uMTc2Yy0uMzA3LS4yODUtLjc0Ni0uNDI4LTEuMzE2LS40MjgtLjY1NyAwLTEuMTU1LjIwMi0xLjQ5NC42MDQtLjI1My4zLS40MTcuNzEyLS40OTQgMS4yMzR6bS0yNy4wNTMgMi43N1Y0LjdoLTEuODZ2MTIuMDk1aDUuMzMzVjE1LjE1em03LjEwMy01LjkwOHY3LjU1M2gtMS44NDNWOS4yNDJoMS44NDN6JyBmaWxsPSclMjMwMDAnIGZpbGwtb3BhY2l0eT0nLjQnIGZpbGwtcnVsZT0nZXZlbm9kZCcvJTNFJTNDcGF0aCBkPSdtMTkuNjMgMTEuMTUxLS43NTctMS43MS0uMzQ1IDEuNzEtMS4xMiA1LjY0NGgtMS44MjdMMTguMDgzIDQuN2guMTk3bDMuMzI1IDYuNTMzLjk4OCAyLjE5Ljk4OC0yLjE5TDI2LjgzOSA0LjdoLjE4MWwyLjYgMTIuMDk1aC0xLjgxbC0xLjIxOC01LjY0NC0uMzYyLTEuNzEtLjY1OCAxLjcxLTIuOTMgNS42NDRoLS4wOThsLTIuOTEzLTUuNjQ0em0xNC44MzYgNS44MWMtLjY4IDAtMS4zMTEtLjE2LTEuODkzLS40NzhhMy43OTUgMy43OTUgMCAwIDEtMS4zODEtMS4zODJjLS4zNC0uNjA0LS41MS0xLjMwNi0uNTEtMi4xMDYgMC0uNzkuMTQ3LTEuNDgyLjQ0NC0yLjA3NGEzLjM2NCAzLjM2NCAwIDAgMSAxLjMtMS4zODJjLjU1OS0uMzMgMS4yMTctLjQ5NCAxLjk3NC0uNDk0YTMuMjkzIDMuMjkzIDAgMCAxIDEuMjM0LjIzMSAzLjM0MSAzLjM0MSAwIDAgMSAuOTcuNTc1Yy4yNjQuMjIuNDQuNDM5LjUyNy42NTlsLjAzMy0xLjI2N2gxLjY5NHY3LjU1M0gzNy4xOGwtLjAzMy0xLjMzMmMtLjE4Ni4zOTUtLjUyNi43NDYtMS4wMiAxLjA1M2EzLjE2NyAzLjE2NyAwIDAgMS0xLjY2Mi40NDR6bS4yOTYtMS40ODJjLjYyNiAwIDEuMTUyLS4yMTQgMS41OC0uNjQyLjQyOC0uNDQuNjQyLTEuMDEuNjQyLTEuNzExdi0uMTE1YzAtLjQ3Mi0uMDk4LS44OTQtLjI5Ni0xLjI2N2EyLjIxMSAyLjIxMSAwIDAgMC0uODA3LS44NzIgMi4wOTggMi4wOTggMCAwIDAtMS4xMTktLjMxM2MtLjcwMiAwLTEuMjQ1LjIzMS0xLjYyOS42OTItLjM4NC40NS0uNTc1IDEuMDM3LS41NzUgMS43NiAwIC43MzYuMTg2IDEuMzMzLjU1OSAxLjc5NS4zODQuNDUuOTMzLjY3NSAxLjY0NS42NzV6bTYuNTIxLTYuMjM3aDEuNzExdjEuNGMuNjA0LTEuMDY1IDEuNTQ3LTEuNTk3IDIuODMtMS41OTcgMS4wNjQgMCAxLjkyNi4zNCAyLjU4NCAxLjAyLjY1OS42Ny45ODggMS42NDEuOTg4IDIuOTE0IDAgLjc5LS4xNjQgMS40ODctLjQ5MyAyLjA5YTMuNDU2IDMuNDU2IDAgMCAxLTEuMzE2IDEuMzk5IDMuNTEgMy41MSAwIDAgMS0xLjg0NC40OTNjLS42MzYgMC0xLjE5LS4xMS0xLjY2Mi0uMzI5YTIuNjY1IDIuNjY1IDAgMCAxLTEuMDg2LS45N2wuMDE3IDUuMTM0aC0xLjcyOFY5LjI0MnptNC4wNDggNi4yMmMuNzE0IDAgMS4yNjItLjIyNCAxLjY0NS0uNjc0LjM4NS0uNDYuNTc2LTEuMDQ4LjU3Ni0xLjc2MiAwLS43NDYtLjE5Mi0xLjMzOC0uNTc2LTEuNzc3LS4zNzItLjQ1LS45Mi0uNjc1LTEuNjQ1LS42NzUtLjM5NSAwLS43NjguMDk4LTEuMTIuMjk2LS4zNC4xODctLjYxMy40Ni0uODIyLjgyMy0uMTk3LjM1MS0uMjk2Ljc2My0uMjk2IDEuMjM0di4xMTVjMCAuNDcyLjA5OC44OTQuMjk2IDEuMjY3LjIwOS4zNjIuNDgzLjY0Ny44MjMuODU1LjM0LjE5Ny43MTMuMjk3IDEuMTE5LjI5N3onIGZpbGw9JyUyM2ZmZicvJTNFJTNDcGF0aCBkPSdNNTEuMzI1IDQuN2gxLjg2djEwLjQ1aDMuNDczdjEuNjQ2aC01LjMzM3ptNy4xMiA0LjU0MmgxLjg0M3Y3LjU1M2gtMS44NDN6bS45MDUtMS40MTVhMS4xNTkgMS4xNTkgMCAwIDEtLjg1Ni0uMzQ2IDEuMTY1IDEuMTY1IDAgMCAxLS4zNDYtLjg1NiAxLjA1MyAxLjA1MyAwIDAgMSAuMzQ2LS43OWMuMjMtLjIxOS41MTYtLjMyOS44NTYtLjMyOS4zMjkgMCAuNjA5LjExLjgzOS4zM2ExLjA1MyAxLjA1MyAwIDAgMSAuMzQ1Ljc5IDEuMTU5IDEuMTU5IDAgMCAxLS4zNDUuODU1Yy0uMjIuMjMtLjUuMzQ2LS44NC4zNDZ6bTcuODc1IDkuMTMzYTMuMTY3IDMuMTY3IDAgMCAxLTEuNjYyLS40NDRjLS40ODItLjMwNy0uODE3LS42NTgtMS4wMDQtMS4wNTNsLS4wMzMgMS4zMzJoLTEuNzFWNC43MDFoMS43NDN2NC42NTdsLS4wODIgMS4yODNjLjE4Ni0uNDM4LjU0OC0uODEyIDEuMDg2LTEuMTE5YTMuNDg2IDMuNDg2IDAgMCAxIDEuNzc4LS40NzdjLjc0NiAwIDEuMzkzLjE3IDEuOTQyLjUxYTMuMjM1IDMuMjM1IDAgMCAxIDEuMjgzIDEuNGMuMjk3LjU5Mi40NDQgMS4yODIuNDQ0IDIuMDcyIDAgLjgtLjE3NSAxLjQ5OC0uNTI2IDIuMDlhMy41MiAzLjUyIDAgMCAxLTEuMzgyIDEuMzY2IDMuNzg1IDMuNzg1IDAgMCAxLTEuODc2LjQ3N3ptLS4yOTYtMS40ODFjLjcxMyAwIDEuMjYtLjIyNSAxLjY0NS0uNjc1LjM4NC0uNDYuNTc3LTEuMDUzLjU3Ny0xLjc3OCAwLS43MzQtLjE5My0xLjMyNy0uNTc3LTEuNzc2LS4zNzMtLjQ2LS45MjEtLjY5Mi0xLjY0NS0uNjkyYTIuMTE1IDIuMTE1IDAgMCAwLTEuNTguNjU5Yy0uNDI4LjQyOC0uNjQyLjk5Mi0uNjQyIDEuNjk0di4xMTVjMCAuNDczLjA5OC44OTUuMjk2IDEuMjY3YTIuMzg1IDIuMzg1IDAgMCAwIC44MDcuODcyIDIuMSAyLjEgMCAwIDAgMS4xMTkuMzEzem01LjkyNy02LjIzN2gxLjc3N3YxLjQ4MWMuMTc2LS41MDUuNDYtLjkxLjg1Ni0xLjIxN2EyLjE0IDIuMTQgMCAwIDEgMS4zNDktLjQ2Yy4zNTEgMCAuNTkzLjAzMi43MjQuMDk4bC0uMjQ3IDEuNzk0Yy0uMDk5LS4wNjYtLjMxMy0uMDk5LS42NDItLjA5OS0uNTE2IDAtLjk4OC4xNjQtMS40MTYuNDk0LS40MTcuMzI5LS42MjYuODU1LS42MjYgMS41OHYzLjg4M2gtMS43NzdWOS4yNDJ6bTkuNTM0IDcuNzE4Yy0uOSAwLTEuNjUxLS4xNzUtMi4yNTUtLjUyNi0uNjAzLS4zNjItMS4wNDctLjg0LTEuMzMyLTEuNDMyYTQuNTY3IDQuNTY3IDAgMCAxLS40MjgtMS45NzVjMC0uOC4xNjQtMS41MDIuNDkzLTIuMTA2YTMuNDYyIDMuNDYyIDAgMCAxIDEuNC0xLjM4MmMuNTkyLS4zMyAxLjI2Mi0uNDk0IDIuMDA3LS40OTQgMS4xNjMgMCAyLjAyNC4zMjQgMi41ODQuOTcuNTcuNjM3Ljg1NiAxLjUzNy44NTYgMi43IDAgLjI5Ni0uMDE3LjYwMy0uMDUuOTJoLTUuNDNjLjEyLjY3LjM1NiAxLjE1My43MDggMS40NS4zNjIuMjk2Ljg2LjQ0MyAxLjQ5Ny40NDMuNTI2IDAgLjk2LS4wNDQgMS4zLS4xMzFhNC4xMjMgNC4xMjMgMCAwIDAgLjkzOC0uMzYybC41NDIgMS4yNjdjLS4yNzQuMTc1LS42NDcuMzI5LTEuMTE5LjQ2LS40NzIuMTMyLTEuMDQyLjE5Ny0xLjcxMS4xOTd6bTEuNTk2LTQuNTU4Yy4wMS0uNjgtLjEzNy0xLjE1OC0uNDQ0LTEuNDMyLS4zMDctLjI4NS0uNzQ2LS40MjgtMS4zMTYtLjQyOC0xLjE1MiAwLTEuODE1LjYyLTEuOTkxIDEuODZoMy43NTJ6JyBmaWxsPSclMjNlMWUzZTknLyUzRSUzQ2cgZmlsbC1ydWxlPSdldmVub2RkJyBzdHJva2Utd2lkdGg9JzEuMDM2JyUzRSUzQ3BhdGggZD0nbTguMTY2IDE2LjE0Ni0uMDAyLjAwMmExLjU0IDEuNTQgMCAwIDEtMi4wMDkgMGwtLjAwMi0uMDAyLS4wNDMtLjAzNC0uMDAyLS4wMDItLjE5OS0uMTYySDQuMzc3YS42NTcuNjU3IDAgMCAwLS42NTkuNjU5djEuODRhLjY1Ny42NTcgMCAwIDAgLjY1OS42NTloNS41NjVhLjY1Ny42NTcgMCAwIDAgLjY1OS0uNjU5di0xLjg0YS42NTcuNjU3IDAgMCAwLS42NTktLjY1OUg4LjQxMWwtLjIwMi4xNjR6bS0xLjEyMS0uOTA1YS4yOS4yOSAwIDAgMCAuMTEzLjAyMy4yODYuMjg2IDAgMCAwIC4xODktLjA3bC4wNzctLjA2M2MuNjM0LS41MDggNC42NzItMy43NDMgNC42NzItNy41NzUgMC0yLjU1LTIuMjE1LTQuNjI1LTQuOTM4LTQuNjI1UzIuMjIxIDUuMDA2IDIuMjIxIDcuNTU2YzAgMy4yMjUgMi44NiA2LjAyNyA0LjE0NCA3LjEzN2guMDA0bC4wNC4wMzguNDg0LjQuMDc3LjA2M2EuNjI4LjYyOCAwIDAgMCAuMDc0LjA0N3ptLTIuNTItLjU0OGExNi44OTggMTYuODk4IDAgMCAxLTEuMTgzLTEuMzE1QzIuMTg3IDExLjk0Mi45NjcgOS44OTcuOTY3IDcuNTU1YzAtMy4zMTkgMi44NTUtNS44OCA2LjE5Mi01Ljg4IDMuMzM4IDAgNi4xOTMgMi41NjEgNi4xOTMgNS44ODEgMCAyLjM0LTEuMjIgNC4zODctMi4zNzYgNS44MjJhMTYuODk4IDE2Ljg5OCAwIDAgMS0xLjE4MiAxLjMxNWguMTVhMS45MTIgMS45MTIgMCAwIDEgMS45MTQgMS45MTR2MS44NGExLjkxMiAxLjkxMiAwIDAgMS0xLjkxNCAxLjkxNEg0LjM3N2ExLjkxMiAxLjkxMiAwIDAgMS0xLjkxNC0xLjkxNHYtMS44NGExLjkxMiAxLjkxMiAwIDAgMSAxLjkxNC0xLjkxNHptMy44Mi02LjkzNWMwIC42OTItLjU1IDEuMjIyLTEuMTg3IDEuMjIycy0xLjE4NS0uNTI5LTEuMTg1LTEuMjIyLjU0OC0xLjIyMiAxLjE4NS0xLjIyMmMuNjM4IDAgMS4xODYuNTI5IDEuMTg2IDEuMjIyem0tMS4xODYgMi40NzdjMS4zNDggMCAyLjQ0Mi0xLjExIDIuNDQyLTIuNDc4UzguNTA3IDUuMjggNy4xNTkgNS4yOCA0LjcyIDYuMzkgNC43MiA3Ljc1OHMxLjA5MiAyLjQ3NyAyLjQ0IDIuNDc3em0yLjA0OCA3LjcxSDUuMTE0di0uODM4aDQuMDkzeicgZmlsbD0nJTIzMDAwJyBmaWxsLW9wYWNpdHk9Jy40Jy8lM0UlM0NwYXRoIGQ9J00yLjIyMiA3LjU1NWMwLTIuNTUgMi4yMTQtNC42MjUgNC45MzctNC42MjUgMi43MjMgMCA0LjkzOCAyLjA3NSA0LjkzOCA0LjYyNSAwIDMuODMyLTQuMDM4IDcuMDY4LTQuNjcyIDcuNTc1bC0uMDc3LjA2M2EuMjg2LjI4NiAwIDAgMS0uMTg5LjA3LjI4Ni4yODYgMCAwIDEtLjE4OC0uMDdsLS4wNzctLjA2M2MtLjYzNC0uNTA3LTQuNjcyLTMuNzQzLTQuNjcyLTcuNTc1em00LjkzNyAyLjY4YzEuMzQ4IDAgMi40NDItMS4xMSAyLjQ0Mi0yLjQ3OFM4LjUwNyA1LjI4IDcuMTU5IDUuMjggNC43MiA2LjM5IDQuNzIgNy43NThzMS4wOTIgMi40NzcgMi40NCAyLjQ3N3onIGZpbGw9JyUyM2UxZTNlOScvJTNFJTNDcGF0aCBkPSdNNC4zNzcgMTUuOTQ4YS42NTcuNjU3IDAgMCAwLS42NTkuNjU5djEuODRhLjY1Ny42NTcgMCAwIDAgLjY1OS42NTloNS41NjVhLjY1Ny42NTcgMCAwIDAgLjY1OS0uNjU5di0xLjg0YS42NTcuNjU3IDAgMCAwLS42NTktLjY1OXptNC44MyAxLjE2SDUuMTE0di44MzhoNC4wOTN6JyBmaWxsPSclMjNmZmYnLyUzRSUzQy9nJTNFJTNDL3N2ZyUzRVwiKX19QG1lZGlhICgtbXMtaGlnaC1jb250cmFzdDpibGFjay1vbi13aGl0ZSl7YS5tYXBib3hnbC1jdHJsLWxvZ28sYS5tYXBsaWJyZWdsLWN0cmwtbG9nb3tiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc4OCcgaGVpZ2h0PScyMycgZmlsbD0nbm9uZSclM0UlM0NwYXRoIGQ9J00xNy40MDggMTYuNzk2aC0xLjgyN2wyLjUwMS0xMi4wOTVoLjE5OGwzLjMyNCA2LjUzMy45ODggMi4xOS45ODgtMi4xOSAzLjI1OC02LjUzM2guMTgxbDIuNiAxMi4wOTVoLTEuODFsLTEuMjE4LTUuNjQ0LS4zNjItMS43MS0uNjU4IDEuNzEtMi45MjkgNS42NDRoLS4wOThsLTIuOTE0LTUuNjQ0LS43NTctMS43MS0uMzQ1IDEuNzF6bTEuOTU4LTMuNDItLjcyNiAzLjY2M2ExLjI1NSAxLjI1NSAwIDAgMS0xLjIzMiAxLjAxMWgtMS44MjdhMS4yNTUgMS4yNTUgMCAwIDEtMS4yMjktMS41MDlsMi41MDEtMTIuMDk1YTEuMjU1IDEuMjU1IDAgMCAxIDEuMjMtMS4wMDFoLjE5N2ExLjI1NSAxLjI1NSAwIDAgMSAxLjEyLjY4NWwzLjE5IDYuMjczIDMuMTI1LTYuMjYzYTEuMjU1IDEuMjU1IDAgMCAxIDEuMTIzLS42OTVoLjE4MWExLjI1NSAxLjI1NSAwIDAgMSAxLjIyNy45OTFsMS40NDMgNi43MWE1LjExIDUuMTEgMCAwIDEgLjMxNC0uNzg3bC4wMDktLjAxNmE0LjYyMyA0LjYyMyAwIDAgMSAxLjc3Ny0xLjg4N2MuNzgyLS40NiAxLjY2OC0uNjY3IDIuNjExLS42NjdhNC41NDggNC41NDggMCAwIDEgMS43LjMybC4zMDYuMTM0Yy4yMS0uMTYuNDc0LS4yNTYuNzU5LS4yNTZoMS42OTRhMS4yNTUgMS4yNTUgMCAwIDEgMS4yMTIuOTI1IDEuMjU1IDEuMjU1IDAgMCAxIDEuMjEyLS45MjVoMS43MTFjLjI4NCAwIC41NDUuMDk0Ljc1NS4yNTIuNjEzLS4zIDEuMzEyLS40NSAyLjA3NS0uNDUgMS4zNTYgMCAyLjU1Ny40NDUgMy40ODIgMS40LjMxNC4zMTkuNTY2LjY3Ni43NjMgMS4wNjRWNC43MDFhMS4yNTUgMS4yNTUgMCAwIDEgMS4yNTUtMS4yNTVoMS44NkExLjI1NSAxLjI1NSAwIDAgMSA1NC40NCA0Ljd2OS4xOTRoMi4yMTdjLjE5IDAgLjM3LjA0My41MzIuMTE4di00Ljc3YzAtLjM1Ni4xNDctLjY3OC4zODUtLjkwNmEyLjQxNiAyLjQxNiAwIDAgMS0uNjgyLTEuNzFjMC0uNjY1LjI2Ny0xLjI1My43MzUtMS43YTIuNDQ4IDIuNDQ4IDAgMCAxIDEuNzIyLS42NzQgMi40MyAyLjQzIDAgMCAxIDEuNzA1LjY3NWMuMjExLjIuMzgxLjQzLjUwNC42ODNWNC43YTEuMjU1IDEuMjU1IDAgMCAxIDEuMjU1LTEuMjU1aDEuNzQ0QTEuMjU1IDEuMjU1IDAgMCAxIDY1LjgxMiA0Ljd2My4zMzVhNC43NiA0Ljc2IDAgMCAxIDEuNTI2LS4yNDZjLjkzOCAwIDEuODE3LjIxNCAyLjU5LjY5YTQuNDcgNC40NyAwIDAgMSAxLjY3IDEuNzQzdi0uOThhMS4yNTUgMS4yNTUgMCAwIDEgMS4yNTYtMS4yNTZoMS43NzdjLjIzMyAwIC40NTEuMDY0LjYzOS4xNzRhMy40MDcgMy40MDcgMCAwIDEgMS41NjctLjM3MmMuMzQ2IDAgLjg2MS4wMiAxLjI4NS4yMzJhMS4yNTUgMS4yNTUgMCAwIDEgLjY4OSAxLjAwNCA0LjczIDQuNzMgMCAwIDEgLjg1My0uNTg4Yy43OTUtLjQ0IDEuNjc1LS42NDcgMi42MS0uNjQ3IDEuMzg1IDAgMi42NS4zOSAzLjUyNSAxLjM5Ni44MzYuOTM4IDEuMTY4IDIuMTczIDEuMTY4IDMuNTI4IDAgLjM0My0uMDIuNjk0LS4wNTYgMS4wNTFhMS4yNTUgMS4yNTUgMCAwIDEtLjk0NyAxLjA5bC40MDguOTUyYTEuMjU1IDEuMjU1IDAgMCAxLS40NzcgMS41NTJjLS40MTguMjY4LS45Mi40NjMtMS40NTguNjEyLS42MTMuMTcxLTEuMzA0LjI0NC0yLjA0OS4yNDQtMS4wNiAwLTIuMDQzLS4yMDctMi44ODYtLjY5OGwtLjAxNS0uMDA4Yy0uNzk4LS40OC0xLjQxOS0xLjEzNS0xLjgxOC0xLjk2M2wtLjAwNC0uMDA4YTUuODE1IDUuODE1IDAgMCAxLS41NDgtMi41MTJjMC0uMjg2LjAxNy0uNTY3LjA1My0uODQzYTEuMjU1IDEuMjU1IDAgMCAxLS4zMzMtLjA4NmwtLjE2Ni0uMDA0Yy0uMjIzIDAtLjQyNi4wNjItLjY0My4yMjgtLjAzLjAyNC0uMTQyLjEzOS0uMTQyLjU5djMuODgzYTEuMjU1IDEuMjU1IDAgMCAxLTEuMjU2IDEuMjU2aC0xLjc3N2ExLjI1NSAxLjI1NSAwIDAgMS0xLjI1Ni0xLjI1NlYxNS42OWwtLjAzMi4wNTdhNC43NzggNC43NzggMCAwIDEtMS44NiAxLjgzMyA1LjA0IDUuMDQgMCAwIDEtMi40ODQuNjM0IDQuNDcgNC40NyAwIDAgMS0xLjkzNS0uNDI0IDEuMjUyIDEuMjUyIDAgMCAxLS43NjQuMjU4aC0xLjcxYTEuMjU1IDEuMjU1IDAgMCAxLTEuMjU2LTEuMjU1VjcuNjg3YTIuNDAyIDIuNDAyIDAgMCAxLS40MjguNjI1Yy4yNTMuMjMuNDEyLjU2MS40MTIuOTN2Ny41NTNhMS4yNTUgMS4yNTUgMCAwIDEtMS4yNTYgMS4yNTVoLTEuODQzYTEuMjUgMS4yNSAwIDAgMS0uODk0LS4zNzNjLS4yMjguMjMtLjU0NC4zNzMtLjg5NC4zNzNINTEuMzJhMS4yNTUgMS4yNTUgMCAwIDEtMS4yNTYtMS4yNTV2LTEuMjUxbC0uMDYxLjExN2E0LjcwMyA0LjcwMyAwIDAgMS0xLjc4MiAxLjg4NCA0Ljc2NyA0Ljc2NyAwIDAgMS0yLjQ4NS42NyA1LjYgNS42IDAgMCAxLTEuNDg1LS4xODhsLjAwOSAyLjc2NGExLjI1NSAxLjI1NSAwIDAgMS0xLjI1NSAxLjI1OWgtMS43MjlhMS4yNTUgMS4yNTUgMCAwIDEtMS4yNTUtMS4yNTV2LTMuNTM3YTEuMjU1IDEuMjU1IDAgMCAxLTEuMTY3Ljc5M2gtMS42NzlhMS4yNSAxLjI1IDAgMCAxLS43Ny0uMjYzIDQuNDcgNC40NyAwIDAgMS0xLjk0NS40MjljLS44ODUgMC0xLjcyNC0uMjEtMi40OTUtLjYzMmwtLjAxNy0uMDFhNC45ODMgNC45ODMgMCAwIDEtMS4wODEtLjgzNiAxLjI1NSAxLjI1NSAwIDAgMS0xLjI1NCAxLjMxMmgtMS44MWExLjI1NSAxLjI1NSAwIDAgMS0xLjIyOC0uOTlsLS43ODItMy42MjUtMi4wNDQgMy45MzlhMS4yNTUgMS4yNTUgMCAwIDEtMS4xMTUuNjc2aC0uMDk4YTEuMjU1IDEuMjU1IDAgMCAxLTEuMTE2LS42OGwtMi4wNjEtMy45OTR6TTM1LjkyIDE2LjYzbC4yMDctLjExNC4yMjMtLjE1Yy4zMjktLjIzNy41NzQtLjQ5OS43MzUtLjc4NWwuMDYxLS4xMTguMDMzIDEuMzMyaDEuNjc4VjkuMjQyaC0xLjY5NGwtLjAzMyAxLjI2N2MtLjA4OC0uMjItLjI2NC0uNDM4LS41MjYtLjY1OGwtLjAzMi0uMDI4YTMuMTYgMy4xNiAwIDAgMC0uNjY4LS40MjhsLS4yNy0uMTJhMy4yOTMgMy4yOTMgMCAwIDAtMS4yMzUtLjIzYy0uNzU3IDAtMS40MTUuMTYzLTEuOTc0LjQ5M2EzLjM2IDMuMzYgMCAwIDAtMS4zIDEuMzgyYy0uMjk3LjU5My0uNDQ0IDEuMjg0LS40NDQgMi4wNzQgMCAuOC4xNyAxLjUwMy41MSAyLjEwN2EzLjc5NSAzLjc5NSAwIDAgMCAxLjM4MiAxLjM4MSAzLjg4MyAzLjg4MyAwIDAgMCAxLjg5My40NzdjLjUzIDAgMS4wMTUtLjExIDEuNDU1LS4zM3ptLTIuNzg5LTUuMzhjLS4zODQuNDUtLjU3NSAxLjAzOC0uNTc1IDEuNzYyIDAgLjczNS4xODYgMS4zMzIuNTU5IDEuNzk0LjM4NC40NS45MzMuNjc1IDEuNjQ1LjY3NWEyLjI1IDIuMjUgMCAwIDAgLjkzNC0uMTkgMi4xNyAyLjE3IDAgMCAwIC40NjgtLjI5bC4xNzgtLjE2MWEyLjE2MyAyLjE2MyAwIDAgMCAuMzk3LS41NjFjLjE2My0uMzMzLjI0NC0uNzE3LjI0NC0xLjE1di0uMTE1YzAtLjQ3Mi0uMDk4LS44OTQtLjI5Ni0xLjI2N2wtLjA0My0uMDc3YTIuMjExIDIuMjExIDAgMCAwLS42MzMtLjcwOWwtLjEzLS4wODYtLjA0Ny0uMDI4YTIuMDk5IDIuMDk5IDAgMCAwLTEuMDczLS4yODVjLS43MDIgMC0xLjI0NC4yMzEtMS42MjkuNjkyem0yLjMxNiAyLjcwNmMuMTYzLS4xNy4yOC0uNDA3LjI4LS44M3YtLjExNGMwLS4yOTItLjA2LS41MDgtLjE1LS42OGEuOTU4Ljk1OCAwIDAgMC0uMzUzLS4zODkuODUxLjg1MSAwIDAgMC0uNDY0LS4xMjdjLS40IDAtLjU2LjExNC0uNjY0LjIzOWwtLjAxLjAxMmMtLjE0OC4xNzQtLjI3NS40NS0uMjc1Ljk0NSAwIC41MDYuMTIyLjgwMS4yNy45OS4wOTcuMTEuMjY2LjIyNC42OC4yMjQuMzAzIDAgLjUwNC0uMDkuNjg3LS4yNjl6bTcuNTQ1IDEuNzA1YTIuNjI2IDIuNjI2IDAgMCAwIC4zMzEuNDIzYy4yMTMuMjIuNDY0LjQwMi43NTUuNTQ4bC4xNzMuMDc0Yy40MzMuMTcuOTMuMjU1IDEuNDkuMjU1LjY4IDAgMS4yOTUtLjE2NSAxLjg0NC0uNDkzYTMuNDQ3IDMuNDQ3IDAgMCAwIDEuMzE2LTEuNGMuMzI5LS42MDMuNDkzLTEuMjk5LjQ5My0yLjA4OSAwLTEuMjczLS4zMy0yLjI0My0uOTg4LTIuOTEzLS42NTgtLjY4LTEuNTItMS4wMi0yLjU4NC0xLjAyLS41OTggMC0xLjEyNC4xMTUtMS41NzUuMzQ3YTIuODA3IDIuODA3IDAgMCAwLS40MTUuMjYybC0uMTk5LjE2NmEzLjM1IDMuMzUgMCAwIDAtLjY0LjgyVjkuMjQyaC0xLjcxMnYxMS41NTNoMS43MjlsLS4wMTctNS4xMzR6bS41My0xLjEzOGMuMTM3LjE5My4yOTcuMzYuNDguNWwuMTU1LjExLjA1My4wMzRjLjM0LjE5Ny43MTMuMjk3IDEuMTE5LjI5Ny43MTQgMCAxLjI2Mi0uMjI1IDEuNjQ1LS42NzUuMzg1LS40Ni41NzYtMS4wNDguNTc2LTEuNzYyIDAtLjc0Ni0uMTkyLTEuMzM4LS41NzYtMS43NzctLjM3Mi0uNDUtLjkyLS42NzUtMS42NDUtLjY3NS0uMjkgMC0uNTY5LjA1My0uODM1LjE2YTIuMzY2IDIuMzY2IDAgMCAwLS4yODQuMTM2IDEuOTkgMS45OSAwIDAgMC0uMzYzLjI1NCAyLjIzNyAyLjIzNyAwIDAgMC0uNDYuNTY5bC0uMDgyLjE2MmEyLjU2IDIuNTYgMCAwIDAtLjIxMyAxLjA3MnYuMTE1YzAgLjQ3MS4wOTguODk0LjI5NiAxLjI2N2wuMTM1LjIxMXptLjk2NC0uODE4YTEuMTEgMS4xMSAwIDAgMCAuMzY3LjM4NS45MzcuOTM3IDAgMCAwIC40NzYuMTE4Yy40MjMgMCAuNTktLjExNy42ODctLjIzLjE1OS0uMTk0LjI4LS40NzguMjgtLjk1IDAtLjUzLS4xMzMtLjgtLjI2Ni0uOTUybC0uMDIxLS4wMjVjLS4wNzgtLjA5NC0uMjMxLS4yMjEtLjY4LS4yMjFhLjk5NS45OTUgMCAwIDAtLjUwMy4xMzVsLS4wMTIuMDA3YS44NTkuODU5IDAgMCAwLS4zMzUuMzQzYy0uMDczLjEzMy0uMTMyLjMyNC0uMTMyLjYxNHYuMTE1YTEuNDMgMS40MyAwIDAgMCAuMTQuNjZ6bTE1LjctNi4yMjJjLjIzMi0uMjMuMzQ2LS41MTYuMzQ2LS44NTZhMS4wNTMgMS4wNTMgMCAwIDAtLjM0NS0uNzkgMS4xNzUgMS4xNzUgMCAwIDAtLjg0LS4zMjljLS4zNCAwLS42MjUuMTEtLjg1NS4zM2ExLjA1MyAxLjA1MyAwIDAgMC0uMzQ2Ljc5YzAgLjM0LjExNS42MjUuMzQ2Ljg1NS4yMy4yMy41MTYuMzQ2Ljg1Ni4zNDYuMzQgMCAuNjItLjExNS44MzktLjM0NnptNC4zMzcgOS4zMTQuMDMzLTEuMzMyYy4xMjguMjY5LjMyNC41MTguNTkuNzQ3bC4wOTguMDgxYTMuNzI3IDMuNzI3IDAgMCAwIC4zMTYuMjI0bC4yMjMuMTIyYTMuMjEgMy4yMSAwIDAgMCAxLjQ0LjMyMiAzLjc4NSAzLjc4NSAwIDAgMCAxLjg3NS0uNDc3IDMuNTIgMy41MiAwIDAgMCAxLjM4Mi0xLjM2NmMuMzUyLS41OTMuNTI2LTEuMjkuNTI2LTIuMDkgMC0uNzktLjE0Ny0xLjQ4LS40NDQtMi4wNzNhMy4yMzUgMy4yMzUgMCAwIDAtMS4yODMtMS4zOTljLS41NDktLjM0LTEuMTk1LS41MS0xLjk0Mi0uNTFhMy40NzYgMy40NzYgMCAwIDAtMS41MjcuMzQ0bC0uMDg2LjA0My0uMTY1LjA5YTMuNDEyIDMuNDEyIDAgMCAwLS4zMy4yMTRjLS4yODguMjEtLjUwNy40NDYtLjY1Ni43MDdhMS44OTMgMS44OTMgMCAwIDAtLjA5OS4xOThsLjA4Mi0xLjI4M1Y0LjcwMWgtMS43NDR2MTIuMDk1em0uNDczLTIuNTA5YTIuNDgyIDIuNDgyIDAgMCAwIC41NjYuN2MuMDc4LjA2NS4xNTkuMTI1LjI0NS4xOGwuMTQ0LjA4YTIuMTA1IDIuMTA1IDAgMCAwIC45NzUuMjMyYy43MTMgMCAxLjI2Mi0uMjI1IDEuNjQ1LS42NzUuMzg0LS40Ni41NzYtMS4wNTMuNTc2LTEuNzc4IDAtLjczNC0uMTkyLTEuMzI3LS41NzYtMS43NzctLjM3My0uNDYtLjkyMS0uNjkyLTEuNjQ1LS42OTJhMi4xOCAyLjE4IDAgMCAwLTEuMDE1LjIzNWMtLjE0Ny4wNzUtLjI4NS4xNy0uNDE1LjI4MmwtLjE1LjE0MmEyLjA4NiAyLjA4NiAwIDAgMC0uNDIuNTk0Yy0uMTQ5LjMyLS4yMjMuNjg1LS4yMjMgMS4xdi4xMTVjMCAuNDcuMDk3Ljg5LjI5MyAxLjI2em0yLjYxNi0uMjkzYy4xNTctLjE5MS4yOC0uNDc5LjI4LS45NjcgMC0uNTEtLjEzLS43OS0uMjc2LS45NjFsLS4wMjEtLjAyNmMtLjA4Mi0uMS0uMjMyLS4yMjUtLjY3LS4yMjVhLjg2OC44NjggMCAwIDAtLjY4MS4yNzlsLS4wMTIuMDExYy0uMTU0LjE1NS0uMjc0LjM4LS4yNzQuODA3di4xMTVjMCAuMjg1LjA1Ny40OTkuMTQ0LjY2OWExLjEzIDEuMTMgMCAwIDAgLjM2Ny40MDVjLjEzNy4wODIuMjguMTIzLjQ1NS4xMjMuNDIzIDAgLjU5LS4xMTguNjg2LS4yM3ptOC4yNjYtMy4wMTNjLjIzLS4wODcuNDcyLS4xMzQuNzI0LS4xNGwuMDY5LS4wMDJjLjMyOSAwIC41NDIuMDMzLjY0Mi4wOTlsLjI0Ny0xLjc5NGMtLjEzLS4wNjYtLjM3LS4wOTktLjcxNy0uMDk5YTIuMyAyLjMgMCAwIDAtLjU0NS4wNjMgMi4wODYgMi4wODYgMCAwIDAtLjQxMS4xNDggMi4xOCAyLjE4IDAgMCAwLS40LjI0OSAyLjQ4MiAyLjQ4MiAwIDAgMC0uNDg1LjQ5OSAyLjY1OSAyLjY1OSAwIDAgMC0uMzIuNTgxbC0uMDUuMTM3di0xLjQ4aC0xLjc3OHY3LjU1M2gxLjc3N3YtMy44ODRjMC0uMzY0LjA1My0uNjc4LjE1OS0uOTQzYTEuNDkgMS40OSAwIDAgMSAuNDY2LS42MzYgMi41MiAyLjUyIDAgMCAxIC4zOTktLjI1MyAyLjE5IDIuMTkgMCAwIDEgLjIyNC0uMDk5em05Ljc4NCAyLjY1Ni4wNS0uOTIyYzAtMS4xNjItLjI4NS0yLjA2Mi0uODU2LTIuNjk4LS41NTktLjY0Ny0xLjQyLS45Ny0yLjU4NC0uOTctLjc0NiAwLTEuNDE1LjE2My0yLjAwNy40OTNhMy40NjIgMy40NjIgMCAwIDAtMS40IDEuMzgyYy0uMzI5LjYwNC0uNDkzIDEuMzA2LS40OTMgMi4xMDYgMCAuNzE0LjE0MyAxLjM3MS40MjggMS45NzUuMjg1LjU5My43MyAxLjA3IDEuMzMyIDEuNDMyLjYwNC4zNTEgMS4zNTUuNTI2IDIuMjU1LjUyNi42NDkgMCAxLjIwNC0uMDYyIDEuNjY4LS4xODVsLjA0NC0uMDEyLjEzNS0uMDRjLjQwOS0uMTIyLjczNi0uMjYzLjk4NC0uNDIxbC0uNTQyLTEuMjY3Yy0uMi4xMDgtLjQxNS4xOTktLjY0Mi4yNzRsLS4yOTcuMDg3Yy0uMzQuMDg4LS43NzMuMTMxLTEuMy4xMzEtLjYzNiAwLTEuMTM1LS4xNDctMS40OTctLjQ0NGExLjU3MyAxLjU3MyAwIDAgMS0uMTkyLS4xOTNjLS4yNDQtLjI5NC0uNDE1LS43MDUtLjUxMi0xLjIzNGwtLjAwNC0uMDIxaDUuNDN6bS01LjQyNy0xLjI1Ni0uMDAzLjAyMmgzLjc1MnYtLjEzOGMtLjAwNy0uNDg1LS4xMDQtLjg1Ny0uMjg4LTEuMTE4YTEuMDU2IDEuMDU2IDAgMCAwLS4xNTYtLjE3NmMtLjMwNy0uMjg1LS43NDYtLjQyOC0xLjMxNi0uNDI4LS42NTcgMC0xLjE1NS4yMDItMS40OTQuNjA0LS4yNTMuMy0uNDE3LjcxMi0uNDk0IDEuMjM0em0tMjcuMDUzIDIuNzdWNC43aC0xLjg2djEyLjA5NWg1LjMzM1YxNS4xNXptNy4xMDMtNS45MDh2Ny41NTNoLTEuODQzVjkuMjQyaDEuODQzeicgZmlsbD0nJTIzMDAwJyBmaWxsLW9wYWNpdHk9Jy40JyBmaWxsLXJ1bGU9J2V2ZW5vZGQnLyUzRSUzQ3BhdGggZD0nbTE5LjYzIDExLjE1MS0uNzU3LTEuNzEtLjM0NSAxLjcxLTEuMTIgNS42NDRoLTEuODI3TDE4LjA4MyA0LjdoLjE5N2wzLjMyNSA2LjUzMy45ODggMi4xOS45ODgtMi4xOUwyNi44MzkgNC43aC4xODFsMi42IDEyLjA5NWgtMS44MWwtMS4yMTgtNS42NDQtLjM2Mi0xLjcxLS42NTggMS43MS0yLjkzIDUuNjQ0aC0uMDk4bC0yLjkxMy01LjY0NHptMTQuODM2IDUuODFjLS42OCAwLTEuMzExLS4xNi0xLjg5My0uNDc4YTMuNzk1IDMuNzk1IDAgMCAxLTEuMzgxLTEuMzgyYy0uMzQtLjYwNC0uNTEtMS4zMDYtLjUxLTIuMTA2IDAtLjc5LjE0Ny0xLjQ4Mi40NDQtMi4wNzRhMy4zNjQgMy4zNjQgMCAwIDEgMS4zLTEuMzgyYy41NTktLjMzIDEuMjE3LS40OTQgMS45NzQtLjQ5NGEzLjI5MyAzLjI5MyAwIDAgMSAxLjIzNC4yMzEgMy4zNDEgMy4zNDEgMCAwIDEgLjk3LjU3NWMuMjY0LjIyLjQ0LjQzOS41MjcuNjU5bC4wMzMtMS4yNjdoMS42OTR2Ny41NTNIMzcuMThsLS4wMzMtMS4zMzJjLS4xODYuMzk1LS41MjYuNzQ2LTEuMDIgMS4wNTNhMy4xNjcgMy4xNjcgMCAwIDEtMS42NjIuNDQ0em0uMjk2LTEuNDgyYy42MjYgMCAxLjE1Mi0uMjE0IDEuNTgtLjY0Mi40MjgtLjQ0LjY0Mi0xLjAxLjY0Mi0xLjcxMXYtLjExNWMwLS40NzItLjA5OC0uODk0LS4yOTYtMS4yNjdhMi4yMTEgMi4yMTEgMCAwIDAtLjgwNy0uODcyIDIuMDk4IDIuMDk4IDAgMCAwLTEuMTE5LS4zMTNjLS43MDIgMC0xLjI0NS4yMzEtMS42MjkuNjkyLS4zODQuNDUtLjU3NSAxLjAzNy0uNTc1IDEuNzYgMCAuNzM2LjE4NiAxLjMzMy41NTkgMS43OTUuMzg0LjQ1LjkzMy42NzUgMS42NDUuNjc1em02LjUyMS02LjIzN2gxLjcxMXYxLjRjLjYwNC0xLjA2NSAxLjU0Ny0xLjU5NyAyLjgzLTEuNTk3IDEuMDY0IDAgMS45MjYuMzQgMi41ODQgMS4wMi42NTkuNjcuOTg4IDEuNjQxLjk4OCAyLjkxNCAwIC43OS0uMTY0IDEuNDg3LS40OTMgMi4wOWEzLjQ1NiAzLjQ1NiAwIDAgMS0xLjMxNiAxLjM5OSAzLjUxIDMuNTEgMCAwIDEtMS44NDQuNDkzYy0uNjM2IDAtMS4xOS0uMTEtMS42NjItLjMyOWEyLjY2NSAyLjY2NSAwIDAgMS0xLjA4Ni0uOTdsLjAxNyA1LjEzNGgtMS43MjhWOS4yNDJ6bTQuMDQ4IDYuMjJjLjcxNCAwIDEuMjYyLS4yMjQgMS42NDUtLjY3NC4zODUtLjQ2LjU3Ni0xLjA0OC41NzYtMS43NjIgMC0uNzQ2LS4xOTItMS4zMzgtLjU3Ni0xLjc3Ny0uMzcyLS40NS0uOTItLjY3NS0xLjY0NS0uNjc1LS4zOTUgMC0uNzY4LjA5OC0xLjEyLjI5Ni0uMzQuMTg3LS42MTMuNDYtLjgyMi44MjMtLjE5Ny4zNTEtLjI5Ni43NjMtLjI5NiAxLjIzNHYuMTE1YzAgLjQ3Mi4wOTguODk0LjI5NiAxLjI2Ny4yMDkuMzYyLjQ4My42NDcuODIzLjg1NS4zNC4xOTcuNzEzLjI5NyAxLjExOS4yOTd6JyBmaWxsPSclMjNmZmYnLyUzRSUzQ3BhdGggZD0nTTUxLjMyNSA0LjdoMS44NnYxMC40NWgzLjQ3M3YxLjY0NmgtNS4zMzN6bTcuMTIgNC41NDJoMS44NDN2Ny41NTNoLTEuODQzem0uOTA1LTEuNDE1YTEuMTU5IDEuMTU5IDAgMCAxLS44NTYtLjM0NiAxLjE2NSAxLjE2NSAwIDAgMS0uMzQ2LS44NTYgMS4wNTMgMS4wNTMgMCAwIDEgLjM0Ni0uNzljLjIzLS4yMTkuNTE2LS4zMjkuODU2LS4zMjkuMzI5IDAgLjYwOS4xMS44MzkuMzNhMS4wNTMgMS4wNTMgMCAwIDEgLjM0NS43OSAxLjE1OSAxLjE1OSAwIDAgMS0uMzQ1Ljg1NWMtLjIyLjIzLS41LjM0Ni0uODQuMzQ2em03Ljg3NSA5LjEzM2EzLjE2NyAzLjE2NyAwIDAgMS0xLjY2Mi0uNDQ0Yy0uNDgyLS4zMDctLjgxNy0uNjU4LTEuMDA0LTEuMDUzbC0uMDMzIDEuMzMyaC0xLjcxVjQuNzAxaDEuNzQzdjQuNjU3bC0uMDgyIDEuMjgzYy4xODYtLjQzOC41NDgtLjgxMiAxLjA4Ni0xLjExOWEzLjQ4NiAzLjQ4NiAwIDAgMSAxLjc3OC0uNDc3Yy43NDYgMCAxLjM5My4xNyAxLjk0Mi41MWEzLjIzNSAzLjIzNSAwIDAgMSAxLjI4MyAxLjRjLjI5Ny41OTIuNDQ0IDEuMjgyLjQ0NCAyLjA3MiAwIC44LS4xNzUgMS40OTgtLjUyNiAyLjA5YTMuNTIgMy41MiAwIDAgMS0xLjM4MiAxLjM2NiAzLjc4NSAzLjc4NSAwIDAgMS0xLjg3Ni40Nzd6bS0uMjk2LTEuNDgxYy43MTMgMCAxLjI2LS4yMjUgMS42NDUtLjY3NS4zODQtLjQ2LjU3Ny0xLjA1My41NzctMS43NzggMC0uNzM0LS4xOTMtMS4zMjctLjU3Ny0xLjc3Ni0uMzczLS40Ni0uOTIxLS42OTItMS42NDUtLjY5MmEyLjExNSAyLjExNSAwIDAgMC0xLjU4LjY1OWMtLjQyOC40MjgtLjY0Mi45OTItLjY0MiAxLjY5NHYuMTE1YzAgLjQ3My4wOTguODk1LjI5NiAxLjI2N2EyLjM4NSAyLjM4NSAwIDAgMCAuODA3Ljg3MiAyLjEgMi4xIDAgMCAwIDEuMTE5LjMxM3ptNS45MjctNi4yMzdoMS43Nzd2MS40ODFjLjE3Ni0uNTA1LjQ2LS45MS44NTYtMS4yMTdhMi4xNCAyLjE0IDAgMCAxIDEuMzQ5LS40NmMuMzUxIDAgLjU5My4wMzIuNzI0LjA5OGwtLjI0NyAxLjc5NGMtLjA5OS0uMDY2LS4zMTMtLjA5OS0uNjQyLS4wOTktLjUxNiAwLS45ODguMTY0LTEuNDE2LjQ5NC0uNDE3LjMyOS0uNjI2Ljg1NS0uNjI2IDEuNTh2My44ODNoLTEuNzc3VjkuMjQyem05LjUzNCA3LjcxOGMtLjkgMC0xLjY1MS0uMTc1LTIuMjU1LS41MjYtLjYwMy0uMzYyLTEuMDQ3LS44NC0xLjMzMi0xLjQzMmE0LjU2NyA0LjU2NyAwIDAgMS0uNDI4LTEuOTc1YzAtLjguMTY0LTEuNTAyLjQ5My0yLjEwNmEzLjQ2MiAzLjQ2MiAwIDAgMSAxLjQtMS4zODJjLjU5Mi0uMzMgMS4yNjItLjQ5NCAyLjAwNy0uNDk0IDEuMTYzIDAgMi4wMjQuMzI0IDIuNTg0Ljk3LjU3LjYzNy44NTYgMS41MzcuODU2IDIuNyAwIC4yOTYtLjAxNy42MDMtLjA1LjkyaC01LjQzYy4xMi42Ny4zNTYgMS4xNTMuNzA4IDEuNDUuMzYyLjI5Ni44Ni40NDMgMS40OTcuNDQzLjUyNiAwIC45Ni0uMDQ0IDEuMy0uMTMxYTQuMTIzIDQuMTIzIDAgMCAwIC45MzgtLjM2MmwuNTQyIDEuMjY3Yy0uMjc0LjE3NS0uNjQ3LjMyOS0xLjExOS40Ni0uNDcyLjEzMi0xLjA0Mi4xOTctMS43MTEuMTk3em0xLjU5Ni00LjU1OGMuMDEtLjY4LS4xMzctMS4xNTgtLjQ0NC0xLjQzMi0uMzA3LS4yODUtLjc0Ni0uNDI4LTEuMzE2LS40MjgtMS4xNTIgMC0xLjgxNS42Mi0xLjk5MSAxLjg2aDMuNzUyeicgZmlsbD0nJTIzZTFlM2U5Jy8lM0UlM0NnIGZpbGwtcnVsZT0nZXZlbm9kZCcgc3Ryb2tlLXdpZHRoPScxLjAzNiclM0UlM0NwYXRoIGQ9J204LjE2NiAxNi4xNDYtLjAwMi4wMDJhMS41NCAxLjU0IDAgMCAxLTIuMDA5IDBsLS4wMDItLjAwMi0uMDQzLS4wMzQtLjAwMi0uMDAyLS4xOTktLjE2Mkg0LjM3N2EuNjU3LjY1NyAwIDAgMC0uNjU5LjY1OXYxLjg0YS42NTcuNjU3IDAgMCAwIC42NTkuNjU5aDUuNTY1YS42NTcuNjU3IDAgMCAwIC42NTktLjY1OXYtMS44NGEuNjU3LjY1NyAwIDAgMC0uNjU5LS42NTlIOC40MTFsLS4yMDIuMTY0em0tMS4xMjEtLjkwNWEuMjkuMjkgMCAwIDAgLjExMy4wMjMuMjg2LjI4NiAwIDAgMCAuMTg5LS4wN2wuMDc3LS4wNjNjLjYzNC0uNTA4IDQuNjcyLTMuNzQzIDQuNjcyLTcuNTc1IDAtMi41NS0yLjIxNS00LjYyNS00LjkzOC00LjYyNVMyLjIyMSA1LjAwNiAyLjIyMSA3LjU1NmMwIDMuMjI1IDIuODYgNi4wMjcgNC4xNDQgNy4xMzdoLjAwNGwuMDQuMDM4LjQ4NC40LjA3Ny4wNjNhLjYyOC42MjggMCAwIDAgLjA3NC4wNDd6bS0yLjUyLS41NDhhMTYuODk4IDE2Ljg5OCAwIDAgMS0xLjE4My0xLjMxNUMyLjE4NyAxMS45NDIuOTY3IDkuODk3Ljk2NyA3LjU1NWMwLTMuMzE5IDIuODU1LTUuODggNi4xOTItNS44OCAzLjMzOCAwIDYuMTkzIDIuNTYxIDYuMTkzIDUuODgxIDAgMi4zNC0xLjIyIDQuMzg3LTIuMzc2IDUuODIyYTE2Ljg5OCAxNi44OTggMCAwIDEtMS4xODIgMS4zMTVoLjE1YTEuOTEyIDEuOTEyIDAgMCAxIDEuOTE0IDEuOTE0djEuODRhMS45MTIgMS45MTIgMCAwIDEtMS45MTQgMS45MTRINC4zNzdhMS45MTIgMS45MTIgMCAwIDEtMS45MTQtMS45MTR2LTEuODRhMS45MTIgMS45MTIgMCAwIDEgMS45MTQtMS45MTR6bTMuODItNi45MzVjMCAuNjkyLS41NSAxLjIyMi0xLjE4NyAxLjIyMnMtMS4xODUtLjUyOS0xLjE4NS0xLjIyMi41NDgtMS4yMjIgMS4xODUtMS4yMjJjLjYzOCAwIDEuMTg2LjUyOSAxLjE4NiAxLjIyMnptLTEuMTg2IDIuNDc3YzEuMzQ4IDAgMi40NDItMS4xMSAyLjQ0Mi0yLjQ3OFM4LjUwNyA1LjI4IDcuMTU5IDUuMjggNC43MiA2LjM5IDQuNzIgNy43NThzMS4wOTIgMi40NzcgMi40NCAyLjQ3N3ptMi4wNDggNy43MUg1LjExNHYtLjgzOGg0LjA5M3onIGZpbGw9JyUyMzAwMCcgZmlsbC1vcGFjaXR5PScuNCcvJTNFJTNDcGF0aCBkPSdNMi4yMjIgNy41NTVjMC0yLjU1IDIuMjE0LTQuNjI1IDQuOTM3LTQuNjI1IDIuNzIzIDAgNC45MzggMi4wNzUgNC45MzggNC42MjUgMCAzLjgzMi00LjAzOCA3LjA2OC00LjY3MiA3LjU3NWwtLjA3Ny4wNjNhLjI4Ni4yODYgMCAwIDEtLjE4OS4wNy4yODYuMjg2IDAgMCAxLS4xODgtLjA3bC0uMDc3LS4wNjNjLS42MzQtLjUwNy00LjY3Mi0zLjc0My00LjY3Mi03LjU3NXptNC45MzcgMi42OGMxLjM0OCAwIDIuNDQyLTEuMTEgMi40NDItMi40NzhTOC41MDcgNS4yOCA3LjE1OSA1LjI4IDQuNzIgNi4zOSA0LjcyIDcuNzU4czEuMDkyIDIuNDc3IDIuNDQgMi40Nzd6JyBmaWxsPSclMjNlMWUzZTknLyUzRSUzQ3BhdGggZD0nTTQuMzc3IDE1Ljk0OGEuNjU3LjY1NyAwIDAgMC0uNjU5LjY1OXYxLjg0YS42NTcuNjU3IDAgMCAwIC42NTkuNjU5aDUuNTY1YS42NTcuNjU3IDAgMCAwIC42NTktLjY1OXYtMS44NGEuNjU3LjY1NyAwIDAgMC0uNjU5LS42NTl6bTQuODMgMS4xNkg1LjExNHYuODM4aDQuMDkzeicgZmlsbD0nJTIzZmZmJy8lM0UlM0MvZyUzRSUzQy9zdmclM0VcIil9fS5tYXBib3hnbC1jdHJsLm1hcGJveGdsLWN0cmwtYXR0cmliLC5tYXBsaWJyZWdsLWN0cmwubWFwbGlicmVnbC1jdHJsLWF0dHJpYntiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC41KTttYXJnaW46MDtwYWRkaW5nOjAgNXB4fUBtZWRpYSBzY3JlZW57Lm1hcGJveGdsLWN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3QsLm1hcGxpYnJlZ2wtY3RybC1hdHRyaWIubWFwbGlicmVnbC1jb21wYWN0e2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjEycHg7Ym94LXNpemluZzpjb250ZW50LWJveDttYXJnaW46MTBweDttaW4taGVpZ2h0OjIwcHg7cGFkZGluZzoycHggMjRweCAycHggMDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWFwYm94Z2wtY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdC1zaG93LC5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLm1hcGxpYnJlZ2wtY29tcGFjdC1zaG93e3BhZGRpbmc6MnB4IDI4cHggMnB4IDhweDt2aXNpYmlsaXR5OnZpc2libGV9Lm1hcGJveGdsLWN0cmwtYm90dG9tLWxlZnQ+Lm1hcGJveGdsLWN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3Qtc2hvdywubWFwYm94Z2wtY3RybC10b3AtbGVmdD4ubWFwYm94Z2wtY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdC1zaG93LC5tYXBsaWJyZWdsLWN0cmwtYm90dG9tLWxlZnQ+Lm1hcGxpYnJlZ2wtY3RybC1hdHRyaWIubWFwbGlicmVnbC1jb21wYWN0LXNob3csLm1hcGxpYnJlZ2wtY3RybC10b3AtbGVmdD4ubWFwbGlicmVnbC1jdHJsLWF0dHJpYi5tYXBsaWJyZWdsLWNvbXBhY3Qtc2hvd3tib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoycHggOHB4IDJweCAyOHB4fS5tYXBib3hnbC1jdHJsLWF0dHJpYi5tYXBib3hnbC1jb21wYWN0IC5tYXBib3hnbC1jdHJsLWF0dHJpYi1pbm5lciwubWFwbGlicmVnbC1jdHJsLWF0dHJpYi5tYXBsaWJyZWdsLWNvbXBhY3QgLm1hcGxpYnJlZ2wtY3RybC1hdHRyaWItaW5uZXJ7ZGlzcGxheTpub25lfS5tYXBib3hnbC1jdHJsLWF0dHJpYi1idXR0b24sLm1hcGxpYnJlZ2wtY3RybC1hdHRyaWItYnV0dG9ue2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjUpO2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDIwIDIwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGwtcnVsZT0nZXZlbm9kZCclM0UlM0NwYXRoIGQ9J000IDEwYTYgNiAwIDEgMCAxMiAwIDYgNiAwIDEgMC0xMiAwbTUtM2ExIDEgMCAxIDAgMiAwIDEgMSAwIDEgMC0yIDBtMCAzYTEgMSAwIDEgMSAyIDB2M2ExIDEgMCAxIDEtMiAwJy8lM0UlM0Mvc3ZnJTNFXCIpO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpub25lO2hlaWdodDoyNHB4O291dGxpbmU6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjI0cHh9Lm1hcGxpYnJlZ2wtY3RybC1hdHRyaWIgc3VtbWFyeS5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLWJ1dHRvbnthcHBlYXJhbmNlOm5vbmU7bGlzdC1zdHlsZTpub25lfS5tYXBsaWJyZWdsLWN0cmwtYXR0cmliIHN1bW1hcnkubWFwbGlicmVnbC1jdHJsLWF0dHJpYi1idXR0b246Oi13ZWJraXQtZGV0YWlscy1tYXJrZXJ7ZGlzcGxheTpub25lfS5tYXBib3hnbC1jdHJsLWJvdHRvbS1sZWZ0IC5tYXBib3hnbC1jdHJsLWF0dHJpYi1idXR0b24sLm1hcGJveGdsLWN0cmwtdG9wLWxlZnQgLm1hcGJveGdsLWN0cmwtYXR0cmliLWJ1dHRvbiwubWFwbGlicmVnbC1jdHJsLWJvdHRvbS1sZWZ0IC5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLWJ1dHRvbiwubWFwbGlicmVnbC1jdHJsLXRvcC1sZWZ0IC5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLWJ1dHRvbntsZWZ0OjB9Lm1hcGJveGdsLWN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3QgLm1hcGJveGdsLWN0cmwtYXR0cmliLWJ1dHRvbiwubWFwYm94Z2wtY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdC1zaG93IC5tYXBib3hnbC1jdHJsLWF0dHJpYi1pbm5lciwubWFwbGlicmVnbC1jdHJsLWF0dHJpYi5tYXBsaWJyZWdsLWNvbXBhY3QgLm1hcGxpYnJlZ2wtY3RybC1hdHRyaWItYnV0dG9uLC5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLm1hcGxpYnJlZ2wtY29tcGFjdC1zaG93IC5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLWlubmVye2Rpc3BsYXk6YmxvY2t9Lm1hcGJveGdsLWN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3Qtc2hvdyAubWFwYm94Z2wtY3RybC1hdHRyaWItYnV0dG9uLC5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLm1hcGxpYnJlZ2wtY29tcGFjdC1zaG93IC5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLWJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOnJnYigwIDAgMC81JSl9Lm1hcGJveGdsLWN0cmwtYm90dG9tLXJpZ2h0Pi5tYXBib3hnbC1jdHJsLWF0dHJpYi5tYXBib3hnbC1jb21wYWN0OmFmdGVyLC5tYXBsaWJyZWdsLWN0cmwtYm90dG9tLXJpZ2h0Pi5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLm1hcGxpYnJlZ2wtY29tcGFjdDphZnRlcntib3R0b206MDtyaWdodDowfS5tYXBib3hnbC1jdHJsLXRvcC1yaWdodD4ubWFwYm94Z2wtY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdDphZnRlciwubWFwbGlicmVnbC1jdHJsLXRvcC1yaWdodD4ubWFwbGlicmVnbC1jdHJsLWF0dHJpYi5tYXBsaWJyZWdsLWNvbXBhY3Q6YWZ0ZXJ7cmlnaHQ6MDt0b3A6MH0ubWFwYm94Z2wtY3RybC10b3AtbGVmdD4ubWFwYm94Z2wtY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdDphZnRlciwubWFwbGlicmVnbC1jdHJsLXRvcC1sZWZ0Pi5tYXBsaWJyZWdsLWN0cmwtYXR0cmliLm1hcGxpYnJlZ2wtY29tcGFjdDphZnRlcntsZWZ0OjA7dG9wOjB9Lm1hcGJveGdsLWN0cmwtYm90dG9tLWxlZnQ+Lm1hcGJveGdsLWN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3Q6YWZ0ZXIsLm1hcGxpYnJlZ2wtY3RybC1ib3R0b20tbGVmdD4ubWFwbGlicmVnbC1jdHJsLWF0dHJpYi5tYXBsaWJyZWdsLWNvbXBhY3Q6YWZ0ZXJ7Ym90dG9tOjA7bGVmdDowfX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6YWN0aXZlKXsubWFwYm94Z2wtY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdDphZnRlciwubWFwbGlicmVnbC1jdHJsLWF0dHJpYi5tYXBsaWJyZWdsLWNvbXBhY3Q6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMjAgMjAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbC1ydWxlPSdldmVub2RkJyBmaWxsPSclMjNmZmYnJTNFJTNDcGF0aCBkPSdNNCAxMGE2IDYgMCAxIDAgMTIgMCA2IDYgMCAxIDAtMTIgMG01LTNhMSAxIDAgMSAwIDIgMCAxIDEgMCAxIDAtMiAwbTAgM2ExIDEgMCAxIDEgMiAwdjNhMSAxIDAgMSAxLTIgMCcvJTNFJTNDL3N2ZyUzRVwiKX19QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OmJsYWNrLW9uLXdoaXRlKXsubWFwYm94Z2wtY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdDphZnRlciwubWFwbGlicmVnbC1jdHJsLWF0dHJpYi5tYXBsaWJyZWdsLWNvbXBhY3Q6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMjAgMjAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbC1ydWxlPSdldmVub2RkJyUzRSUzQ3BhdGggZD0nTTQgMTBhNiA2IDAgMSAwIDEyIDAgNiA2IDAgMSAwLTEyIDBtNS0zYTEgMSAwIDEgMCAyIDAgMSAxIDAgMSAwLTIgMG0wIDNhMSAxIDAgMSAxIDIgMHYzYTEgMSAwIDEgMS0yIDAnLyUzRSUzQy9zdmclM0VcIil9fS5tYXBib3hnbC1jdHJsLWF0dHJpYiBhLC5tYXBsaWJyZWdsLWN0cmwtYXR0cmliIGF7Y29sb3I6cmdiYSgwLDAsMCwuNzUpO3RleHQtZGVjb3JhdGlvbjpub25lfS5tYXBib3hnbC1jdHJsLWF0dHJpYiBhOmhvdmVyLC5tYXBsaWJyZWdsLWN0cmwtYXR0cmliIGE6aG92ZXJ7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5tYXBib3hnbC1hdHRyaWItZW1wdHksLm1hcGxpYnJlZ2wtYXR0cmliLWVtcHR5e2Rpc3BsYXk6bm9uZX0ubWFwYm94Z2wtY3RybC1zY2FsZSwubWFwbGlicmVnbC1jdHJsLXNjYWxle2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjc1KTtib3JkZXI6MnB4IHNvbGlkICMzMzM7Ym9yZGVyLXRvcDojMzMzO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojMzMzO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmc6MCA1cHh9Lm1hcGJveGdsLXBvcHVwLC5tYXBsaWJyZWdsLXBvcHVwe2Rpc3BsYXk6ZmxleDtsZWZ0OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWxsLWNoYW5nZTp0cmFuc2Zvcm19Lm1hcGJveGdsLXBvcHVwLWFuY2hvci10b3AsLm1hcGJveGdsLXBvcHVwLWFuY2hvci10b3AtbGVmdCwubWFwYm94Z2wtcG9wdXAtYW5jaG9yLXRvcC1yaWdodCwubWFwbGlicmVnbC1wb3B1cC1hbmNob3ItdG9wLC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci10b3AtbGVmdCwubWFwbGlicmVnbC1wb3B1cC1hbmNob3ItdG9wLXJpZ2h0e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWJvdHRvbSwubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWJvdHRvbS1sZWZ0LC5tYXBib3hnbC1wb3B1cC1hbmNob3ItYm90dG9tLXJpZ2h0LC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci1ib3R0b20sLm1hcGxpYnJlZ2wtcG9wdXAtYW5jaG9yLWJvdHRvbS1sZWZ0LC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci1ib3R0b20tcmlnaHR7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9Lm1hcGJveGdsLXBvcHVwLWFuY2hvci1sZWZ0LC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci1sZWZ0e2ZsZXgtZGlyZWN0aW9uOnJvd30ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLXJpZ2h0LC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci1yaWdodHtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0ubWFwYm94Z2wtcG9wdXAtdGlwLC5tYXBsaWJyZWdsLXBvcHVwLXRpcHtib3JkZXI6MTBweCBzb2xpZCB0cmFuc3BhcmVudDtoZWlnaHQ6MDt3aWR0aDowO3otaW5kZXg6MX0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLXRvcCAubWFwYm94Z2wtcG9wdXAtdGlwLC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci10b3AgLm1hcGxpYnJlZ2wtcG9wdXAtdGlwe2FsaWduLXNlbGY6Y2VudGVyO2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZjtib3JkZXItdG9wOm5vbmV9Lm1hcGJveGdsLXBvcHVwLWFuY2hvci10b3AtbGVmdCAubWFwYm94Z2wtcG9wdXAtdGlwLC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci10b3AtbGVmdCAubWFwbGlicmVnbC1wb3B1cC10aXB7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZjtib3JkZXItbGVmdDpub25lO2JvcmRlci10b3A6bm9uZX0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLXRvcC1yaWdodCAubWFwYm94Z2wtcG9wdXAtdGlwLC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci10b3AtcmlnaHQgLm1hcGxpYnJlZ2wtcG9wdXAtdGlwe2FsaWduLXNlbGY6ZmxleC1lbmQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6bm9uZX0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWJvdHRvbSAubWFwYm94Z2wtcG9wdXAtdGlwLC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci1ib3R0b20gLm1hcGxpYnJlZ2wtcG9wdXAtdGlwe2FsaWduLXNlbGY6Y2VudGVyO2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wLWNvbG9yOiNmZmZ9Lm1hcGJveGdsLXBvcHVwLWFuY2hvci1ib3R0b20tbGVmdCAubWFwYm94Z2wtcG9wdXAtdGlwLC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci1ib3R0b20tbGVmdCAubWFwbGlicmVnbC1wb3B1cC10aXB7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItbGVmdDpub25lO2JvcmRlci10b3AtY29sb3I6I2ZmZn0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWJvdHRvbS1yaWdodCAubWFwYm94Z2wtcG9wdXAtdGlwLC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci1ib3R0b20tcmlnaHQgLm1hcGxpYnJlZ2wtcG9wdXAtdGlwe2FsaWduLXNlbGY6ZmxleC1lbmQ7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3AtY29sb3I6I2ZmZn0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWxlZnQgLm1hcGJveGdsLXBvcHVwLXRpcCwubWFwbGlicmVnbC1wb3B1cC1hbmNob3ItbGVmdCAubWFwbGlicmVnbC1wb3B1cC10aXB7YWxpZ24tc2VsZjpjZW50ZXI7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQtY29sb3I6I2ZmZn0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLXJpZ2h0IC5tYXBib3hnbC1wb3B1cC10aXAsLm1hcGxpYnJlZ2wtcG9wdXAtYW5jaG9yLXJpZ2h0IC5tYXBsaWJyZWdsLXBvcHVwLXRpcHthbGlnbi1zZWxmOmNlbnRlcjtib3JkZXItbGVmdC1jb2xvcjojZmZmO2JvcmRlci1yaWdodDpub25lfS5tYXBib3hnbC1wb3B1cC1jbG9zZS1idXR0b24sLm1hcGxpYnJlZ2wtcG9wdXAtY2xvc2UtYnV0dG9ue2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowIDNweCAwIDA7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MH0ubWFwYm94Z2wtcG9wdXAtY2xvc2UtYnV0dG9uOmhvdmVyLC5tYXBsaWJyZWdsLXBvcHVwLWNsb3NlLWJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYigwIDAgMC81JSl9Lm1hcGJveGdsLXBvcHVwLWNvbnRlbnQsLm1hcGxpYnJlZ2wtcG9wdXAtY29udGVudHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSk7cGFkZGluZzoxNXB4IDEwcHg7cG9pbnRlci1ldmVudHM6YXV0bztwb3NpdGlvbjpyZWxhdGl2ZX0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLXRvcC1sZWZ0IC5tYXBib3hnbC1wb3B1cC1jb250ZW50LC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci10b3AtbGVmdCAubWFwbGlicmVnbC1wb3B1cC1jb250ZW50e2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLXRvcC1yaWdodCAubWFwYm94Z2wtcG9wdXAtY29udGVudCwubWFwbGlicmVnbC1wb3B1cC1hbmNob3ItdG9wLXJpZ2h0IC5tYXBsaWJyZWdsLXBvcHVwLWNvbnRlbnR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWJvdHRvbS1sZWZ0IC5tYXBib3hnbC1wb3B1cC1jb250ZW50LC5tYXBsaWJyZWdsLXBvcHVwLWFuY2hvci1ib3R0b20tbGVmdCAubWFwbGlicmVnbC1wb3B1cC1jb250ZW50e2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWJvdHRvbS1yaWdodCAubWFwYm94Z2wtcG9wdXAtY29udGVudCwubWFwbGlicmVnbC1wb3B1cC1hbmNob3ItYm90dG9tLXJpZ2h0IC5tYXBsaWJyZWdsLXBvcHVwLWNvbnRlbnR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0ubWFwYm94Z2wtcG9wdXAtdHJhY2stcG9pbnRlciwubWFwbGlicmVnbC1wb3B1cC10cmFjay1wb2ludGVye2Rpc3BsYXk6bm9uZX0ubWFwYm94Z2wtcG9wdXAtdHJhY2stcG9pbnRlciAqLC5tYXBsaWJyZWdsLXBvcHVwLXRyYWNrLXBvaW50ZXIgKntwb2ludGVyLWV2ZW50czpub25lO3VzZXItc2VsZWN0Om5vbmV9Lm1hcGJveGdsLW1hcDpob3ZlciAubWFwYm94Z2wtcG9wdXAtdHJhY2stcG9pbnRlciwubWFwbGlicmVnbC1tYXA6aG92ZXIgLm1hcGxpYnJlZ2wtcG9wdXAtdHJhY2stcG9pbnRlcntkaXNwbGF5OmZsZXh9Lm1hcGJveGdsLW1hcDphY3RpdmUgLm1hcGJveGdsLXBvcHVwLXRyYWNrLXBvaW50ZXIsLm1hcGxpYnJlZ2wtbWFwOmFjdGl2ZSAubWFwbGlicmVnbC1wb3B1cC10cmFjay1wb2ludGVye2Rpc3BsYXk6bm9uZX0ubWFwYm94Z2wtbWFya2VyLC5tYXBsaWJyZWdsLW1hcmtlcntsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtfS5tYXBib3hnbC11c2VyLWxvY2F0aW9uLWRvdCwubWFwbGlicmVnbC11c2VyLWxvY2F0aW9uLWRvdHtiYWNrZ3JvdW5kLWNvbG9yOiMxZGExZjI7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjE1cHg7d2lkdGg6MTVweH0ubWFwYm94Z2wtdXNlci1sb2NhdGlvbi1kb3Q6YmVmb3JlLC5tYXBsaWJyZWdsLXVzZXItbG9jYXRpb24tZG90OmJlZm9yZXthbmltYXRpb246bWFwbGlicmVnbC11c2VyLWxvY2F0aW9uLWRvdC1wdWxzZSAycyBpbmZpbml0ZTtiYWNrZ3JvdW5kLWNvbG9yOiMxZGExZjI7Ym9yZGVyLXJhZGl1czo1MCU7Y29udGVudDpcIlwiO2hlaWdodDoxNXB4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjE1cHh9Lm1hcGJveGdsLXVzZXItbG9jYXRpb24tZG90OmFmdGVyLC5tYXBsaWJyZWdsLXVzZXItbG9jYXRpb24tZG90OmFmdGVye2JvcmRlcjoycHggc29saWQgI2ZmZjtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjAgMCAzcHggcmdiYSgwLDAsMCwuMzUpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb250ZW50OlwiXCI7aGVpZ2h0OjE5cHg7bGVmdDotMnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMnB4O3dpZHRoOjE5cHh9QGtleWZyYW1lcyBtYXBsaWJyZWdsLXVzZXItbG9jYXRpb24tZG90LXB1bHNlezAle29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9NzAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoMyl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSgxKX19Lm1hcGJveGdsLXVzZXItbG9jYXRpb24tZG90LXN0YWxlLC5tYXBsaWJyZWdsLXVzZXItbG9jYXRpb24tZG90LXN0YWxle2JhY2tncm91bmQtY29sb3I6I2FhYX0ubWFwYm94Z2wtdXNlci1sb2NhdGlvbi1kb3Qtc3RhbGU6YWZ0ZXIsLm1hcGxpYnJlZ2wtdXNlci1sb2NhdGlvbi1kb3Qtc3RhbGU6YWZ0ZXJ7ZGlzcGxheTpub25lfS5tYXBib3hnbC11c2VyLWxvY2F0aW9uLWFjY3VyYWN5LWNpcmNsZSwubWFwbGlicmVnbC11c2VyLWxvY2F0aW9uLWFjY3VyYWN5LWNpcmNsZXtiYWNrZ3JvdW5kLWNvbG9yOiMxZGExZjIzMztib3JkZXItcmFkaXVzOjEwMCU7aGVpZ2h0OjFweDt3aWR0aDoxcHh9Lm1hcGJveGdsLWNyb3NzaGFpciwubWFwYm94Z2wtY3Jvc3NoYWlyIC5tYXBib3hnbC1pbnRlcmFjdGl2ZSwubWFwYm94Z2wtY3Jvc3NoYWlyIC5tYXBib3hnbC1pbnRlcmFjdGl2ZTphY3RpdmUsLm1hcGxpYnJlZ2wtY3Jvc3NoYWlyLC5tYXBsaWJyZWdsLWNyb3NzaGFpciAubWFwbGlicmVnbC1pbnRlcmFjdGl2ZSwubWFwbGlicmVnbC1jcm9zc2hhaXIgLm1hcGxpYnJlZ2wtaW50ZXJhY3RpdmU6YWN0aXZle2N1cnNvcjpjcm9zc2hhaXJ9Lm1hcGJveGdsLWJveHpvb20sLm1hcGxpYnJlZ2wtYm94em9vbXtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjJweCBkb3R0ZWQgIzIwMjAyMDtoZWlnaHQ6MDtsZWZ0OjA7b3BhY2l0eTouNTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDowfS5tYXBsaWJyZWdsLWNvb3BlcmF0aXZlLWdlc3R1cmUtc2NyZWVue2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjQpO2JvdHRvbTowO2NvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxLjRlbTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xlZnQ6MDtsaW5lLWhlaWdodDoxLjI7b3BhY2l0eTowO3BhZGRpbmc6MXJlbTtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7dHJhbnNpdGlvbjpvcGFjaXR5IDFzIGVhc2UgMXN9Lm1hcGxpYnJlZ2wtY29vcGVyYXRpdmUtZ2VzdHVyZS1zY3JlZW4ubWFwbGlicmVnbC1zaG93e29wYWNpdHk6MTt0cmFuc2l0aW9uOm9wYWNpdHkgLjA1c30ubWFwbGlicmVnbC1jb29wZXJhdGl2ZS1nZXN0dXJlLXNjcmVlbiAubWFwbGlicmVnbC1tb2JpbGUtbWVzc2FnZXtkaXNwbGF5Om5vbmV9QG1lZGlhIChob3Zlcjpub25lKSwobWF4LXdpZHRoOjQ4MHB4KXsubWFwbGlicmVnbC1jb29wZXJhdGl2ZS1nZXN0dXJlLXNjcmVlbiAubWFwbGlicmVnbC1kZXNrdG9wLW1lc3NhZ2V7ZGlzcGxheTpub25lfS5tYXBsaWJyZWdsLWNvb3BlcmF0aXZlLWdlc3R1cmUtc2NyZWVuIC5tYXBsaWJyZWdsLW1vYmlsZS1tZXNzYWdle2Rpc3BsYXk6YmxvY2t9fSIsbnVsbCwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0JlYWNvbkxpc3RJdGVtIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy0xMiAwO1xuXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRzeXN0ZW07XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5teF9CZWFjb25MaXN0SXRlbV9hdmF0YXJJY29uIHtcbiAgICBmbGV4OiAwIDA7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHdpZHRoOiAzMnB4O1xufVxuXG4ubXhfQmVhY29uTGlzdEl0ZW1fYXZhdGFyIHtcbiAgICBmbGV4OiAwIDA7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkbG9jYXRpb24tbGl2ZS1jb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5teF9CZWFjb25MaXN0SXRlbV9pbmZvIHtcbiAgICBmbGV4OiAxIDEgMDtcbiAgICB3aWR0aDogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG59XG5cbi5teF9CZWFjb25MaXN0SXRlbV9zdGF0dXMge1xuICAgIC8qIG92ZXJyaWRlIGJlYWNvbiBzdGF0dXMgcGFkZGluZyAqL1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy04O1xuXG4gICAgLm14X0JlYWNvblN0YXR1c19sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgfVxufVxuXG4ubXhfQmVhY29uTGlzdEl0ZW1fbGFzdFVwZGF0ZWQge1xuICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICBmb250LXNpemU6ICRmb250LTEwcHg7XG59XG5cbi5teF9CZWFjb25MaXN0SXRlbV9pbnRlcmFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9CZWFjb25TdGF0dXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcblxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZzogJHNwYWNpbmctODtcblxuICAgIGNvbG9yOiB2YXIoLS1jb2xvcik7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xufVxuXG4ubXhfQmVhY29uU3RhdHVzX0xvYWRpbmcsXG4ubXhfQmVhY29uU3RhdHVzX1N0b3BwZWQge1xuICAgIC0tY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xufVxuXG4ubXhfQmVhY29uU3RhdHVzX0FjdGl2ZSxcbi5teF9CZWFjb25TdGF0dXNfRXJyb3Ige1xuICAgIC0tY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG59XG5cbi5teF9CZWFjb25TdGF0dXNfaWNvbiB7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHdpZHRoOiAzMnB4O1xuXG4gICAgZmxleDogMCAwIDMycHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy04O1xufVxuXG4ubXhfQmVhY29uU3RhdHVzX2Rlc2NyaXB0aW9uIHtcbiAgICBmbGV4OiAxIDEgMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTE0cHg7XG5cbiAgICBwYWRkaW5nLXJpZ2h0OiAkc3BhY2luZy04O1xuXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLm14X0JlYWNvblN0YXR1c19kZXNjcmlwdGlvbl9zdGF0dXMge1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG59XG5cbi5teF9CZWFjb25TdGF0dXNfZXhwaXJ5VGltZSB7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbn1cblxuLm14X0JlYWNvblN0YXR1c19sYWJlbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQmVhY29uU3RhdHVzVG9vbHRpcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNDJweDtcbiAgICBtYXgtd2lkdGg6IDE1MHB4O1xuICAgIGhlaWdodDogMzhweDtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICBwYWRkaW5nLXRvcDogJHNwYWNpbmctODtcbn1cblxuLm14X0JlYWNvblN0YXR1c1Rvb2x0aXBfaW5uZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJhY2tncm91bmQ6ICRtZW51LWJnLWNvbG9yO1xuICAgIGJveC1zaGFkb3c6IDRweCA0cHggMTJweCAwICRtZW51LWJveC1zaGFkb3ctY29sb3I7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQmVhY29uVmlld0RpYWxvZ193cmFwcGVyIC5teF9EaWFsb2cge1xuICAgIHBhZGRpbmc6IDBweDtcblxuICAgIC8qIFVuc2V0IGNvbnRhaW4gYW5kIHBvc2l0aW9uIHRvIGFsbG93IHRoZSBjbG9zZSBidXR0b25cbiAgICB0byBhcHBlYXIgb3V0c2lkZSB0aGUgZGlhbG9nICovXG4gICAgY29udGFpbjogdW5zZXQ7XG4gICAgcG9zaXRpb246IHVuc2V0O1xufVxuXG4ubXhfQmVhY29uVmlld0RpYWxvZyB7XG4gICAgLyogc3VidHJhY3QgMC41cHggdG8gcHJldmVudCBzaW5nbGUtcGl4ZWwgbWFyZ2luIGR1ZSB0byByb3VuZGluZyAqL1xuICAgIHdpZHRoOiBjYWxjKDgwdncgLSAwLjVweCk7XG4gICAgaGVpZ2h0OiBjYWxjKDgwdmggLSAwLjVweCk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC8qIHNpZGViYXIgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGluc2lkZSAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5teF9EaWFsb2dfaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgICAgcG9zaXRpb246IHVuc2V0O1xuXG4gICAgICAgIC5teF9EaWFsb2dfdGl0bGUge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9EaWFsb2dfY2FuY2VsQnV0dG9uIHtcbiAgICAgICAgICAgIHotaW5kZXg6IDQwMTA7XG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICByaWdodDogNXZ3O1xuICAgICAgICAgICAgdG9wOiA1dmg7XG4gICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkaWFsb2ctY2xvc2UtZXh0ZXJuYWwtY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9CZWFjb25WaWV3RGlhbG9nX21hcCB7XG4gICAgd2lkdGg6IDgwdnc7XG4gICAgaGVpZ2h0OiA4MHZoO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLm14X0JlYWNvblZpZXdEaWFsb2dfbWFwRmFsbGJhY2tNZXNzYWdlIHtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTE2O1xufVxuXG4ubXhfQmVhY29uVmlld0RpYWxvZ192aWV3TGlzdEJ1dHRvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogJHNwYWNpbmctMjQ7XG4gICAgbGVmdDogJHNwYWNpbmctMjQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRGlhbG9nT3duQmVhY29uU3RhdHVzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAkc3BhY2luZy0zMjtcbiAgICB3aWR0aDogMzAwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IC0xNTBweDtcbiAgICBsZWZ0OiA1MCU7XG5cbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogNHB4IDRweCAxMnB4IDAgJG1lbnUtYm94LXNoYWRvdy1jb2xvcjtcblxuICAgIHBhZGRpbmc6IDAgJHNwYWNpbmctMTI7XG59XG5cbi5teF9EaWFsb2dPd25CZWFjb25TdGF0dXNfYXZhdGFySWNvbiB7XG4gICAgZmxleDogMCAwO1xuICAgIGhlaWdodDogMzJweDtcbiAgICB3aWR0aDogMzJweDtcbiAgICBtYXJnaW46ICRzcGFjaW5nLTggMCAkc3BhY2luZy04IDA7XG59XG5cbi5teF9EaWFsb2dPd25CZWFjb25TdGF0dXNfYXZhdGFyIHtcbiAgICBmbGV4OiAwIDA7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgIGJvcmRlcjogMnB4IHNvbGlkICRsb2NhdGlvbi1saXZlLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBtYXJnaW46ICRzcGFjaW5nLTggMCAkc3BhY2luZy04IDA7XG59XG5cbi5teF9EaWFsb2dPd25CZWFjb25TdGF0dXNfc3RhdHVzIHtcbiAgICBmbGV4OiAxIDE7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9EaWFsb2dTaWRlYmFyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAyNjVweDtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZzogJHNwYWNpbmctMTY7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICBib3gtc2hhZG93OiAwcHggNHB4IDRweCAkbWVudS1ib3gtc2hhZG93LWNvbG9yO1xuXG4gICAgLm14X0RpYWxvZ1NpZGViYXJfaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgICAgIGZsZXg6IDAgMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctMTY7XG5cbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgLm14X0RpYWxvZ1NpZGViYXJfY2xvc2VCdXR0b25JY29uIHtcbiAgICAgICAgICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9EaWFsb2dTaWRlYmFyX2xpc3Qge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZsZXg6IDEgMSAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgfVxufVxuXG4ubXhfRGlhbG9nU2lkZWJhcl9ub1Jlc3VsdHMge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0xlZnRQYW5lbExpdmVTaGFyZVdhcm5pbmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBwYWRkaW5nOiAkc3BhY2luZy00O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMHB4O1xuXG4gICAgLyogcGFuZWwgYmFja2Ryb3BzIG92ZXJsYXkgdGhlIHdob2xlIHNpZGVwYW5lbCAqL1xuICAgIC8qIGdvIGFib3ZlIHRvIGdldCBob3ZlciBmb3IgdGl0bGUgKi9cbiAgICB6LWluZGV4OiAxO1xufVxuXG4ubXhfTGVmdFBhbmVsTGl2ZVNoYXJlV2FybmluZ19fZXJyb3Ige1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhbGVydDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9MaXZlVGltZVJlbWFpbmluZyB7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfT3duQmVhY29uU3RhdHVzX2J1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nLTg7XG59XG5cbi5teF9FdmVudFRpbGVbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0gLm14X093bkJlYWNvblN0YXR1c19idXR0b24ge1xuICAgIC8qIGFsaWduIHRvIHRvcCB0byBtYWtlIHJvb20gZm9yIHRpbWVzdGFtcCAqL1xuICAgIC8qIGluIGJ1YmJsZSB2aWV3ICovXG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG59XG5cbi5teF9Pd25CZWFjb25TdGF0dXNfZGVzdHJ1Y3RpdmVCdXR0b24ge1xuICAgIC8qIG92ZXJyaWRlIGJ1dHRvbiBsaW5rX2lubGluZSBzdHlsZXMgKi9cbiAgICBjb2xvcjogJGFsZXJ0ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKSAhaW1wb3J0YW50O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Jvb21MaXZlU2hhcmVXYXJuaW5nIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy0xMiAkc3BhY2luZy0xNjtcblxuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzeXN0ZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXhfUm9vbUxpdmVTaGFyZVdhcm5pbmdfaWNvbiB7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcbn1cblxuLm14X1Jvb21MaXZlU2hhcmVXYXJuaW5nX2xhYmVsIHtcbiAgICBmbGV4OiAxO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbn1cblxuLm14X1Jvb21MaXZlU2hhcmVXYXJuaW5nX3NwaW5uZXIge1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctMTY7XG59XG5cbi5teF9Sb29tTGl2ZVNoYXJlV2FybmluZ19jbG9zZUJ1dHRvbiB7XG4gICAgQG1peGluIEJ1dHRvblJlc2V0RGVmYXVsdDtcbiAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmctMTY7XG59XG5cbi5teF9Sb29tTGl2ZVNoYXJlV2FybmluZ19zdG9wQnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmctMTY7XG59XG5cbi5teF9Sb29tTGl2ZVNoYXJlV2FybmluZ19jbG9zZUJ1dHRvbkljb24ge1xuICAgIGhlaWdodDogJGZvbnQtMThweDtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy00O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NoYXJlTGF0ZXN0TG9jYXRpb25faWNvbiB7XG4gICAgaGVpZ2h0OiAxM3B4O1xuICAgIHdpZHRoOiAxM3B4O1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG59XG5cbi8qIGRvdWJsZSBjbGFzcyB0byBiZSBtb3JlIHNwZWNpZmljIHRoYW4gdGhlIGdlbmVyYWwgbXhfQ29weWFibGVUZXh0IENTUyBydWxlICovXG4ubXhfQ29weWFibGVUZXh0Lm14X1NoYXJlTGF0ZXN0TG9jYXRpb25fY29weSB7XG4gICAgLyogb3ZlcnJpZGUgY29weWFibGUgdGV4dCBzdHlsZSB0byBtYWtlIGNvbXBhY3QgKi9cbiAgICAubXhfQ29weWFibGVUZXh0X2NvcHlCdXR0b24ge1xuICAgICAgICBoZWlnaHQ6IDEzcHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZy04ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdG9wOiAtMXB4O1xuICAgICAgICB3aWR0aDogMTNweDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgaGVpZ2h0OiAxM3B4O1xuICAgICAgICAgICAgd2lkdGg6IDEzcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU3R5bGVkTGl2ZUJlYWNvbkljb24ge1xuICAgIGZsZXgtZ3JvdzogMDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGxvY2F0aW9uLWxpdmUtY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yOiAkbG9jYXRpb24tbGl2ZS1jb2xvcjtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgLyogY29sb3JzIGljb24gKi9cbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5teF9TdHlsZWRMaXZlQmVhY29uSWNvbi5teF9TdHlsZWRMaXZlQmVhY29uSWNvbl9lcnJvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFsZXJ0O1xuICAgIGJvcmRlci1jb2xvcjogJGFsZXJ0O1xufVxuXG4ubXhfU3R5bGVkTGl2ZUJlYWNvbkljb24ubXhfU3R5bGVkTGl2ZUJlYWNvbkljb25faWRsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHF1YXRlcm5hcnktY29udGVudDtcbiAgICBib3JkZXItY29sb3I6ICRxdWF0ZXJuYXJ5LWNvbnRlbnQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfS2ViYWJDb250ZXh0TWVudV9pY29uIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1BvbGxEZXRhaWxIZWFkZXIge1xuICAgIC8vIG92ZXJyaWRlIGFjY2Vzc2libGVidXR0b24gc3R5bGVcbiAgICBmb250LXNpemU6ICRmb250LTE1cHggIWltcG9ydGFudDtcbn1cblxuLm14X1BvbGxEZXRhaWxIZWFkZXJfaWNvbiB7XG4gICAgaGVpZ2h0OiAxNXB4O1xuICAgIHdpZHRoOiAxNXB4O1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1BvbGxMaXN0SXRlbSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5teF9Qb2xsTGlzdEl0ZW1fY29udGVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBncmlkLWdhcDogJHNwYWNpbmctODtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gYXV0byBhdXRvO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0bztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbn1cblxuLm14X1BvbGxMaXN0SXRlbV9pY29uIHtcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgd2lkdGg6IDE0cHg7XG4gICAgY29sb3I6ICRxdWF0ZXJuYXJ5LWNvbnRlbnQ7XG4gICAgcGFkZGluZy1sZWZ0OiAkc3BhY2luZy04O1xufVxuXG4ubXhfUG9sbExpc3RJdGVtX3F1ZXN0aW9uIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjMgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUG9sbExpc3RJdGVtRW5kZWQge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ubXhfUG9sbExpc3RJdGVtRW5kZWRfY29udGVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm14X1BvbGxMaXN0SXRlbUVuZGVkX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGp1c3RpZnktY29udGVudDogbGVmdDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdyaWQtZ2FwOiAkc3BhY2luZy04O1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWluLWNvbnRlbnQgMWZyIG1pbi1jb250ZW50O1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0bztcbn1cblxuLm14X1BvbGxMaXN0SXRlbUVuZGVkX2ljb24ge1xuICAgIGhlaWdodDogMTRweDtcbiAgICB3aWR0aDogMTRweDtcbiAgICBjb2xvcjogJHF1YXRlcm5hcnktY29udGVudDtcbiAgICBwYWRkaW5nLWxlZnQ6ICRzcGFjaW5nLTg7XG59XG5cbi5teF9Qb2xsTGlzdEl0ZW1FbmRlZF9kYXRlIHtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbn1cblxuLm14X1BvbGxMaXN0SXRlbUVuZGVkX3F1ZXN0aW9uIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5teF9Qb2xsTGlzdEl0ZW1FbmRlZF9hbnN3ZXJzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtZ2FwOiAkc3BhY2luZy04O1xuICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTEyO1xufVxuXG4ubXhfUG9sbExpc3RJdGVtRW5kZWRfdm90ZUNvdW50IHtcbiAgICAvLyA2cHggdG8gbWF0Y2ggUG9sbE9wdGlvbiBwYWRkaW5nXG4gICAgbWFyZ2luOiAkc3BhY2luZy04IDAgMCA2cHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcbkNvcHlyaWdodCAyMDE5IC0gMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9BcHBQZXJtaXNzaW9uIHtcbiAgICA+IGRpdiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgfVxuXG4gICAgaDQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLm14X0FwcFBlcm1pc3Npb25fc21hbGxUZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIH1cblxuICAgIC5teF9BcHBQZXJtaXNzaW9uX2JvbGRlciB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgfVxuXG4gICAgLm14X0FwcFBlcm1pc3Npb25faGVscEljb24ge1xuICAgICAgICBtYXJnaW4tdG9wOiAxcHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMnB4O1xuICAgICAgICB3aWR0aDogMTBweDtcbiAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1zaXplOiAxMnB4O1xuICAgICAgICAgICAgd2lkdGg6IDEycHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2hlbHAtY2lyY2xlLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X1Rvb2x0aXAubXhfVG9vbHRpcC0tYXBwUGVybWlzc2lvbiB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9vbHRpcC10aW1lbGluZS1iZy1jb2xvcjtcbiAgICBjb2xvcjogJHRvb2x0aXAtdGltZWxpbmUtZmctY29sb3I7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBwYWRkaW5nOiA2cHggOHB4O1xuXG4gICAgJi5teF9Ub29sdGlwLS1hcHBQZXJtaXNzaW9uLS1kYXJrIHtcbiAgICAgICAgLm14X1Rvb2x0aXBfY2hldnJvbjo6YWZ0ZXIge1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkdG9vbHRpcC10aW1lbGluZS1iZy1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0ZpbHRlckRyb3Bkb3duIHtcbiAgICAubXhfRHJvcGRvd25fbWVudSB7XG4gICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTQ7XG4gICAgICAgIGxlZnQ6IHVuc2V0O1xuICAgICAgICByaWdodDogLSRzcGFjaW5nLTEyO1xuICAgICAgICB3aWR0aDogMjMycHg7XG4gICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTEyO1xuXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDFweCAzcHggcmdiYSgyMywgMjUsIDI4LCAwLjA1KTtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3lzdGVtO1xuXG4gICAgICAgIC5teF9Ecm9wZG93bl9vcHRpb25faGlnaGxpZ2h0IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0Ryb3Bkb3duX2lucHV0IHtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICAgICAgICY6Zm9jdXMsXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Ecm9wZG93bl9hcnJvdyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICB9XG59XG5cbi5teF9GaWx0ZXJEcm9wZG93bl9vcHRpb24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nLTggMCAkc3BhY2luZy04ICRzcGFjaW5nLTIwO1xuXG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xufVxuXG4ubXhfRmlsdGVyRHJvcGRvd25fb3B0aW9uU2VsZWN0ZWRJY29uIHtcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgd2lkdGg6IDE0cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogJHNwYWNpbmctODtcbiAgICBsZWZ0OiAwO1xufVxuXG4ubXhfRmlsdGVyRHJvcGRvd25fb3B0aW9uTGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5teF9GaWx0ZXJEcm9wZG93bl9vcHRpb25EZXNjcmlwdGlvbiB7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy00O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0ZpbHRlclRhYkdyb3VwIHtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICBsYWJlbCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctMTI7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgJjpmb2N1cyxcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAmICsgc3BhbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6Y2hlY2tlZCArIHNwYW4ge1xuICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICAgICAgLy8gdW5kZXJsaW5lXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDEuNXB4IDAgMCBjdXJyZW50Q29sb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTGVhcm5Nb3JlX2J1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nLTQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRW5hYmxlTGl2ZVNoYXJlIHtcbiAgICBmbGV4OiAxIDEgMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgcGFkZGluZzogJHNwYWNpbmctMzIgJHNwYWNpbmctMTY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5teF9FbmFibGVMaXZlU2hhcmVfaGVhZGluZyB7XG4gICAgcGFkZGluZy10b3A6ICRzcGFjaW5nLTI0O1xufVxuXG4ubXhfRW5hYmxlTGl2ZVNoYXJlX2ljb24ge1xuICAgIGhlaWdodDogNThweDtcbiAgICB3aWR0aDogNThweDtcbn1cblxuLm14X0VuYWJsZUxpdmVTaGFyZV9kZXNjcmlwdGlvbiB7XG4gICAgcGFkZGluZzogMCAkc3BhY2luZy0yNDtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy0zMjtcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMjBweDtcbn1cblxuLm14X0VuYWJsZUxpdmVTaGFyZV9idXR0b24ge1xuICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTMyO1xuICAgIGhlaWdodDogNDhweDtcbiAgICB3aWR0aDogMTAwJTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9MaXZlRHVyYXRpb25Ecm9wZG93biB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctMTY7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTG9jYXRpb25TaGFyZU1lbnUge1xuICAgIHdpZHRoOiAzNzVweDtcbiAgICBoZWlnaHQ6IDQ2MHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NYXBFcnJvciB7XG4gICAgcGFkZGluZzogMTAwcHggJHNwYWNpbmctMzIgMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAtLW14LW1hcC1lcnJvci1pY29uLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgLS1teC1tYXAtZXJyb3ItaWNvbi1zaXplOiA1OHB4O1xufVxuXG4ubXhfTWFwRXJyb3IubXhfTWFwRXJyb3JfaXNNaW5pbWlzZWQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgcGFkZGluZzogJHNwYWNpbmctMjQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbmVscztcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTE2cHg7XG5cbiAgICAtLW14LW1hcC1lcnJvci1pY29uLWNvbG9yOiAkYWxlcnQ7XG4gICAgLS1teC1tYXAtZXJyb3ItaWNvbi1zaXplOiAyNnB4O1xuXG4gICAgLm14X01hcEVycm9yX21lc3NhZ2Uge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIG1heC13aWR0aDogMjc1cHg7XG4gICAgfVxuXG4gICAgLm14X01hcEVycm9yX2hlYWRpbmcge1xuICAgICAgICBwYWRkaW5nLXRvcDogJHNwYWNpbmctODtcbiAgICAgICAgLyogb3ZlcnJpZGUgaDMgaGVhZGluZyBzaXplICovXG4gICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4ubXhfTWFwRXJyb3JfbWVzc2FnZSB7XG4gICAgbWFyZ2luOiAkc3BhY2luZy0xNiAwICRzcGFjaW5nLTMyO1xufVxuXG4ubXhfTWFwRXJyb3JfaGVhZGluZyB7XG4gICAgcGFkZGluZy10b3A6ICRzcGFjaW5nLTI0O1xufVxuXG4ubXhfTWFwRXJyb3JfaWNvbiB7XG4gICAgaGVpZ2h0OiB2YXIoLS1teC1tYXAtZXJyb3ItaWNvbi1zaXplKTtcblxuICAgIHBhdGgge1xuICAgICAgICBmaWxsOiB2YXIoLS1teC1tYXAtZXJyb3ItaWNvbi1jb2xvcik7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01hcEZhbGxiYWNrIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAwO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbn1cblxuLm14X01hcEZhbGxiYWNrX2JnIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgei1pbmRleDogLTE7XG5cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLm14X01hcEZhbGxiYWNrX2ljb24ge1xuICAgIHdpZHRoOiA2NXB4O1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTE2O1xuICAgIGNvbG9yOiAkcXVhdGVybmFyeS1jb250ZW50O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01hcmtlcl9kZWZhdWx0Q29sb3Ige1xuICAgIGNvbG9yOiAkYWNjZW50O1xufVxuXG4ubXhfTWFya2VyX2JvcmRlciB7XG4gICAgd2lkdGg6IDQycHg7XG4gICAgaGVpZ2h0OiA0MnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgLyogY2FyZXQgZG93biAqL1xuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yaWdodDogNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItdG9wOiA1cHggc29saWQgY3VycmVudENvbG9yO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogLTRweDtcbiAgICB9XG59XG5cbi5teF9NYXJrZXJfaWNvbiB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGhlaWdodDogMjBweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NoYXJlRGlhbG9nQnV0dG9ucyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMDtcbiAgICB0b3A6IDA7XG59XG5cbi5teF9TaGFyZURpYWxvZ0J1dHRvbnNfYnV0dG9uIHtcbiAgICBAbWl4aW4gQnV0dG9uUmVzZXREZWZhdWx0O1xuICAgIGhlaWdodDogMjRweDtcbiAgICB3aWR0aDogMjRweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogJHNwYWNpbmctMTY7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgICYubGVmdCB7XG4gICAgICAgIGxlZnQ6ICRzcGFjaW5nLTE2O1xuICAgIH1cblxuICAgICYucmlnaHQge1xuICAgICAgICByaWdodDogJHNwYWNpbmctMTY7XG4gICAgfVxufVxuXG4ubXhfU2hhcmVEaWFsb2dCdXR0b25zX2J1dHRvbi1pY29uIHtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luLXRvcDogM3B4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NoYXJlVHlwZSB7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBwYWRkaW5nOiA2MHB4ICRzcGFjaW5nLTEyICRzcGFjaW5nLTMyO1xuXG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG5cbiAgICAubXhfU2hhcmVUeXBlX3dyYXBwZXJfb3B0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHJvdy1nYXA6ICRzcGFjaW5nLTEyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMTI7XG5cbiAgICAgICAgLm14X1NoYXJlVHlwZV9vcHRpb24ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy04ICRzcGFjaW5nLTIwO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcblxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuXG4gICAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfU2hhcmVUeXBlX2JhZGdlIHtcbiAgICBoZWlnaHQ6IDYwcHg7XG4gICAgd2lkdGg6IDYwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctMjA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYm9yZGVyOiAxNHB4IHNvbGlkICRhY2NlbnQ7XG4gICAgLyogY29sb3JzIGljb24gKi9cbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLm14X1NoYXJlVHlwZV9oZWFkaW5nIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNpbmctMzI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubXhfU2hhcmVUeXBlX29wdGlvbi1pY29uIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nLTEyO1xuICAgIGZsZXg6IDAgMCA0MHB4O1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gICAgLyogTGl2ZSBpcyBzdHlsZWQgYnkgU3R5bGVkTGl2ZUJlYWNvbkljb24gKi9cblxuICAgICYuT3duIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50O1xuICAgIH1cblxuICAgICYuUGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgICAgICBwYWRkaW5nOiA3cHg7XG4gICAgICAgIC8qIGNvbG9ycyBpY29uICovXG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfWm9vbUJ1dHRvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206ICRzcGFjaW5nLTMyO1xuICAgIHJpZ2h0OiAkc3BhY2luZy0yNDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcm93LWdhcDogJHNwYWNpbmctODtcblxuICAgIC5teF9ab29tQnV0dG9uc19idXR0b24ge1xuICAgICAgICAkWm9vbUJ1dHRvbnNfYnV0dG9uLXNpemU6IDI0cHg7XG5cbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiAkWm9vbUJ1dHRvbnNfYnV0dG9uLXNpemU7XG4gICAgICAgIHdpZHRoOiAkWm9vbUJ1dHRvbnNfYnV0dG9uLXNpemU7XG4gICAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICBib3gtc2hhZG93OiAwcHggNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcblxuICAgICAgICAubXhfWm9vbUJ1dHRvbnNfaWNvbiB7XG4gICAgICAgICAgICAkWm9vbUJ1dHRvbnNfaWNvbi1zaXplOiAxMHB4O1xuXG4gICAgICAgICAgICBoZWlnaHQ6ICRab29tQnV0dG9uc19pY29uLXNpemU7XG4gICAgICAgICAgICB3aWR0aDogJFpvb21CdXR0b25zX2ljb24tc2l6ZTtcbiAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01CZWFjb25Cb2R5IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAyMjBweDtcbiAgICBtYXgtd2lkdGg6IDMyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tTUJvZHktYm9yZGVyLXJhZGl1cyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14X01CZWFjb25Cb2R5Lm14X01CZWFjb25Cb2R5X3dpdGhvdXRNYXAge1xuICAgIGhlaWdodDogYXV0bztcblxuICAgIC5teF9NQmVhY29uQm9keV9jaGluIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG59XG5cbi5teF9NQmVhY29uQm9keV93aXRob3V0TWFwQ29udGVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbmVscztcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbi5teF9NQmVhY29uQm9keV93aXRob3V0TWFwSW5mb0xhc3RVcGRhdGVkIHtcbiAgICAvKiA0OHB4IGxpbmVzIHVwIHdpdGggaWNvbiBpbiBCZWFjb25TdGF0dXMgKi9cbiAgICBtYXJnaW4tdG9wOiAtJHNwYWNpbmctODtcbiAgICBwYWRkaW5nOiAwICRzcGFjaW5nLTggJHNwYWNpbmctOCA0OHB4O1xuXG4gICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTBweDtcbn1cblxuLm14X01CZWFjb25Cb2R5X21hcCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDA7IC8qIGtlZXBzIHRoZSBlbnRpcmUgbWFwIHVuZGVyIHRoZSBtZXNzYWdlIGFjdGlvbiBiYXJzICovXG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5teF9NQmVhY29uQm9keV9tYXBGYWxsYmFjayxcbi5teF9NQmVhY29uQm9keV9tYXBFcnJvciB7XG4gICAgLyogcHVzaGVzIHNwaW5uZXIvaWNvbiB1cCAqL1xuICAgIC8qIHRvIGFwcGVhciBtb3JlIGNlbnRlcmVkIHdpdGggdGhlIGZvb3RlciAqL1xuICAgIHBhZGRpbmctYm90dG9tOiA1MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5teF9NQmVhY29uQm9keV9tYXBFcnJvckludGVyYWN0aXZlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5teF9NQmVhY29uQm9keV9tYXBGYWxsYmFjayB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4ubXhfTUJlYWNvbkJvZHlfY2hpbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3ZlcmxheS1iYWNrZ3JvdW5kO1xufVxuXG4ubXhfRXZlbnRUaWxlW2RhdGEtbGF5b3V0PVwiYnViYmxlXCJdIC5teF9FdmVudFRpbGVfbGluZSAubXhfTUJlYWNvbkJvZHkge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB3aWR0aDogNDUwcHg7XG59XG5cbi5teF9SZXBseVRpbGUgLm14X01CZWFjb25Cb2R5IHtcbiAgICAvKiBQcmV2ZW50IGNsaWNraW5nIGEgYmVhY29uIHdpdGhpbiBhIHJlcGx5ICovXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTWVkaWFQcm9jZXNzaW5nRXJyb3JfSWNvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy00O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9XaWRnZXRQaXAge1xuICAgIHdpZHRoOiAzMjBweDtcbiAgICBoZWlnaHQ6IDIyMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjb250YWluOiBwYWludDtcbiAgICBjb2xvcjogJGNhbGwtcHJpbWFyeS1jb250ZW50O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm14X1dpZGdldFBpcF9oZWFkZXIsXG4ubXhfV2lkZ2V0UGlwX2Zvb3RlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSBlYXNlIDAuMTVzO1xuXG4gICAgLm14X1dpZGdldFBpcDpub3QoOmhvdmVyKSA+ICYge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbn1cblxuLm14X1dpZGdldFBpcF9oZWFkZXIge1xuICAgIHRvcDogMDtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy0xMjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChyZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMCkpO1xufVxuXG4ubXhfV2lkZ2V0UGlwX2JhY2tCdXR0b24ge1xuICAgIGhlaWdodDogJHNwYWNpbmctMjQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogJHNwYWNpbmctMTI7XG5cbiAgICA+IC5teF9JY29uIHtcbiAgICAgICAgY29sb3I6ICRjYWxsLWxpZ2h0LXF1YXRlcm5hcnktY29udGVudDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG5cbi5teF9XaWRnZXRQaXBfZm9vdGVyIHtcbiAgICBib3R0b206IDA7XG4gICAgcGFkZGluZzogJHNwYWNpbmctMTIgJHNwYWNpbmctODtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChyZ2JhKDAsIDAsIDAsIDApLCByZ2JhKDAsIDAsIDAsIDAuOSkpO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1BvbGxPcHRpb24ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuXG4gICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uX2NvbnRlbnQsXG4gICAgLm14X1BvbGxPcHRpb25fZW5kZWRPcHRpb24ge1xuICAgICAgICBwYWRkaW5nLXRvcDogMnB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDBweDtcbiAgICB9XG5cbiAgICAubXhfU3R5bGVkUmFkaW9CdXR0b25fc3BhY2VyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5teF9Qb2xsT3B0aW9uLFxuLyogbGFiZWwgaGFzIGN1cnNvcjogZGVmYXVsdCBpbiB1c2VyLWFnZW50IHN0eWxlc2hlZXQgKi9cbi8qIG92ZXJyaWRlICovXG4ubXhfUG9sbE9wdGlvbl9saXZlLW9wdGlvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXhfUG9sbE9wdGlvbl9jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLm14X1BvbGxPcHRpb25fb3B0aW9uVm90ZUNvdW50IHtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ubXhfUG9sbE9wdGlvbl93aW5uZXJJY29uIHtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgd2lkdGg6IDEycHg7XG4gICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy00O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5teF9Qb2xsT3B0aW9uX2NoZWNrZWQge1xuICAgIGJvcmRlci1jb2xvcjogJGFjY2VudDtcblxuICAgIC5teF9Qb2xsT3B0aW9uX3BvcHVsYXJpdHlCYWNrZ3JvdW5kIHtcbiAgICAgICAgLm14X1BvbGxPcHRpb25fcG9wdWxhcml0eUFtb3VudCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gb3ZlcnJpZGUgY2hlY2tlZCByYWRpbyBidXR0b24gc3R5bGluZ1xuICAgIC8vIHRvIHNob3cgY2hlY2ttYXJrIGluc3RlYWRcbiAgICAubXhfU3R5bGVkUmFkaW9CdXR0b25fY2hlY2tlZCB7XG4gICAgICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSArIGRpdiB7XG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2hlY2std2hpdGUuc3ZnXCIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcblxuICAgICAgICAgICAgZGl2IHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIG9wdGlvbnMgbm90IGFjdGlvbmFibGUgaW4gdGhlc2Ugc3RhdGVzICovXG4ubXhfUG9sbE9wdGlvbl9jaGVja2VkLFxuLm14X1BvbGxPcHRpb25fZW5kZWQge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubXhfUG9sbE9wdGlvbl9wb3B1bGFyaXR5QmFja2dyb3VuZCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3lzdGVtO1xuICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTg7XG5cbiAgICAubXhfUG9sbE9wdGlvbl9wb3B1bGFyaXR5QW1vdW50IHtcbiAgICAgICAgd2lkdGg6IDAlO1xuICAgICAgICBoZWlnaHQ6IDhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVhdGVybmFyeS1jb250ZW50O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9DdXJyZW50RGV2aWNlU2VjdGlvbl9kZXZpY2VEZXRhaWxzIHtcbiAgICAvLyBhbGlnbiB3aXRoIHRleHQgb2Ygc2Vzc2lvbiB0aWxlXG4gICAgbWFyZ2luLWxlZnQ6IDU2cHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRGV2aWNlRGV0YWlsSGVhZGluZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubXhfRGV2aWNlRGV0YWlsSGVhZGluZ19yZW5hbWVDdGEge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ubXhfRGV2aWNlRGV0YWlsSGVhZGluZ19yZW5hbWVGb3JtIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtZ2FwOiAkc3BhY2luZy0xNjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxMDAlO1xufVxuXG4ubXhfRGV2aWNlRGV0YWlsSGVhZGluZ19yZW5hbWVGb3JtQnV0dG9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGdhcDogJHNwYWNpbmctODtcblxuICAgIC5teF9TcGlubmVyIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGZsZXgtZ3JvdzogMDtcbiAgICB9XG59XG5cbi5teF9EZXZpY2VEZXRhaWxIZWFkaW5nX3JlbmFtZUZvcm1JbnB1dCB7XG4gICAgLy8gb3ZlcnJpZGUgZmllbGQgc3R5bGVzXG4gICAgbWFyZ2luOiAwIDAgJHNwYWNpbmctNCAwICFpbXBvcnRhbnQ7XG59XG5cbi5teF9EZXZpY2VEZXRhaWxIZWFkaW5nX3JlbmFtZUZvcm1IZWFkaW5nIHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5teF9EZXZpY2VEZXRhaWxIZWFkaW5nX3JlbmFtZUZvcm1FcnJvciB7XG4gICAgY29sb3I6ICRhbGVydDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkc3BhY2luZy00O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0RldmljZURldGFpbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMTY7XG4gICAgcGFkZGluZzogJHNwYWNpbmctMjQ7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRxdWluYXJ5LWNvbnRlbnQ7XG59XG5cbi5teF9EZXZpY2VEZXRhaWxzX3NlY3Rpb24ge1xuICAgIHBhZGRpbmctYm90dG9tOiAkc3BhY2luZy0yMDtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy0yMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcblxuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC1nYXA6ICRzcGFjaW5nLTI0O1xuICAgIGp1c3RpZnktY29udGVudDogbGVmdDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEwMCU7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5teF9EZXZpY2VEZXRhaWxzX3NlY3Rpb25IZWFkaW5nIHtcbiAgICBtYXJnaW46IDA7XG5cbiAgICAubXhfRGV2aWNlRGV0YWlsc19zZWN0aW9uU3ViaGVhZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy00O1xuICAgIH1cbn1cblxuLm14X0RldmljZURldGFpbHNfbWV0YWRhdGFUYWJsZSB7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG5cbiAgICB3aWR0aDogMTAwJTtcblxuICAgIGJvcmRlci1zcGFjaW5nOiAwO1xuXG4gICAgdGgge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZy10b3A6ICRzcGFjaW5nLTg7XG4gICAgfVxuXG4gICAgLm14RGV2aWNlRGV0YWlsc19tZXRhZGF0YUxhYmVsIHtcbiAgICAgICAgd2lkdGg6IDE2MHB4O1xuICAgIH1cblxuICAgIC5teERldmljZURldGFpbHNfbWV0YWRhdGFWYWx1ZSB7XG4gICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIH1cbn1cblxuLm14X0RldmljZURldGFpbHNfc2lnbk91dEJ1dHRvbkNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogJHNwYWNpbmctNDtcbn1cblxuLm14X0RldmljZURldGFpbHNfcHVzaE5vdGlmaWNhdGlvbnMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIC5teF9Ub2dnbGVTd2l0Y2gge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0RldmljZUV4cGFuZERldGFpbHNCdXR0b24ge1xuICAgIGhlaWdodDogMzJweDtcbiAgICB3aWR0aDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuXG4gICAgLS1pY29uLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHF1aW5hcnktY29udGVudDtcbiAgICB9XG59XG5cbi5teF9EZXZpY2VFeHBhbmREZXRhaWxzQnV0dG9uLm14X0RldmljZUV4cGFuZERldGFpbHNCdXR0b25fZXhwYW5kZWQge1xuICAgIC0taWNvbi10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcblxuICAgIGJhY2tncm91bmQ6ICRzeXN0ZW07XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHF1aW5hcnktY29udGVudDtcbiAgICB9XG59XG5cbi5teF9EZXZpY2VFeHBhbmREZXRhaWxzQnV0dG9uX2ljb24ge1xuICAgIGhlaWdodDogMTZweDtcbiAgICB3aWR0aDogMTZweDtcblxuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzO1xuICAgIHRyYW5zZm9ybTogdmFyKC0taWNvbi10cmFuc2Zvcm0pO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9EZXZpY2VTZWN1cml0eUNhcmQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgcGFkZGluZzogJHNwYWNpbmctMTY7XG5cbiAgICBib3JkZXI6IDFweCBzb2xpZCAkcXVpbmFyeS1jb250ZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLm14X0RldmljZVNlY3VyaXR5Q2FyZF9pY29uIHtcbiAgICBmbGV4OiAwIDAgNDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy0xNjtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG5cbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgd2lkdGg6IDQwcHg7XG5cbiAgICBjb2xvcjogdmFyKC0taWNvbi1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgICAmLlZlcmlmaWVkIHtcbiAgICAgICAgLS1pY29uLWNvbG9yOiAkZTJlLXZlcmlmaWVkLWNvbG9yO1xuICAgICAgICAtLWJhY2tncm91bmQtY29sb3I6ICRlMmUtdmVyaWZpZWQtY29sb3ItbGlnaHQ7XG4gICAgfVxuXG4gICAgJi5VbnZlcmlmaWVkIHtcbiAgICAgICAgLS1pY29uLWNvbG9yOiAkZTJlLXdhcm5pbmctY29sb3I7XG4gICAgICAgIC0tYmFja2dyb3VuZC1jb2xvcjogJGUyZS13YXJuaW5nLWNvbG9yLWxpZ2h0O1xuICAgIH1cblxuICAgICYuSW5hY3RpdmUge1xuICAgICAgICAtLWljb24tY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWNvbG9yOiAkc3lzdGVtO1xuICAgIH1cbn1cblxuLm14X0RldmljZVNlY3VyaXR5Q2FyZF9jb250ZW50IHtcbiAgICBmbGV4OiAxIDE7XG59XG4ubXhfRGV2aWNlU2VjdXJpdHlDYXJkX2hlYWRpbmcge1xuICAgIG1hcmdpbjogMCAwICRzcGFjaW5nLTQgMDtcbn1cbi5teF9EZXZpY2VTZWN1cml0eUNhcmRfZGVzY3JpcHRpb24ge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbn1cblxuLm14X0RldmljZVNlY3VyaXR5Q2FyZF9hY3Rpb25zIHtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy0xNjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9EZXZpY2VUaWxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLm14X0RldmljZVRpbGVfaW50ZXJhY3RpdmUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm14X0RldmljZVRpbGVfaW5mbyB7XG4gICAgZmxleDogMSAxIDA7XG59XG5cbi5teF9EZXZpY2VUaWxlX21ldGFkYXRhIHtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy00O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNHB4O1xufVxuXG4ubXhfRGV2aWNlVGlsZV9pbmFjdGl2ZUljb24ge1xuICAgIGhlaWdodDogMTRweDtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nLTg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLm14X0RldmljZVRpbGVfYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLWdhcDogJHNwYWNpbmctODtcbiAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZy04O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0RldmljZVR5cGVJY29uIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy04O1xuICAgIC8qIGNyZWF0ZXMgc3BhY2UgZm9yIHZlcmlmaWNhdGlvbiBpY29uIHRvIG92ZXJsYXAgKi9cbiAgICBwYWRkaW5nOiAwICRzcGFjaW5nLTggJHNwYWNpbmctOCAwO1xufVxuXG4ubXhfRGV2aWNlVHlwZUljb25fZGV2aWNlSWNvbldyYXBwZXIge1xuICAgIC0tYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbiAgICAtLWljb24tY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcblxuICAgIGhlaWdodDogNDBweDtcbiAgICB3aWR0aDogNDBweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgYm9yZGVyOiAkc3BhY2luZy04IHNvbGlkIHZhcigtLWJhY2tncm91bmQtY29sb3IpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBjb2xvcjogdmFyKC0taWNvbi1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvcik7XG59XG5cbi5teF9EZXZpY2VUeXBlSWNvbl9zZWxlY3RlZCAubXhfRGV2aWNlVHlwZUljb25fZGV2aWNlSWNvbldyYXBwZXIge1xuICAgIC0tYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAtLWljb24tY29sb3I6ICRiYWNrZ3JvdW5kO1xufVxuXG4ubXhfRGV2aWNlVHlwZUljb25fZGV2aWNlSWNvbiB7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHdpZHRoOiAyNHB4O1xufVxuXG4ubXhfRGV2aWNlVHlwZUljb25fdmVyaWZpY2F0aW9uSWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbiAgICByaWdodDogMDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy00O1xuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG5cbiAgICBjb2xvcjogdmFyKC0tdi1pY29uLWNvbG9yKTtcblxuICAgICYudmVyaWZpZWQge1xuICAgICAgICAtLXYtaWNvbi1jb2xvcjogJGUyZS12ZXJpZmllZC1jb2xvcjtcbiAgICB9XG5cbiAgICAmLnVudmVyaWZpZWQge1xuICAgICAgICAtLXYtaWNvbi1jb2xvcjogJGUyZS13YXJuaW5nLWNvbG9yO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9GaWx0ZXJlZERldmljZUxpc3Qge1xuICAgIC5teF9Ecm9wZG93biB7XG4gICAgICAgIGZsZXg6IDEgMCA4MHB4O1xuICAgIH1cbn1cblxuLm14X0ZpbHRlcmVkRGV2aWNlTGlzdF9saXN0IHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLWdhcDogJHNwYWNpbmctMTY7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDAgJHNwYWNpbmctMTY7XG59XG5cbi5teF9GaWx0ZXJlZERldmljZUxpc3RfbGlzdEl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLm14X0ZpbHRlcmVkRGV2aWNlTGlzdF9zZWN1cml0eUNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTMyO1xufVxuXG4ubXhfRmlsdGVyZWREZXZpY2VMaXN0X25vUmVzdWx0cyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTMyO1xufVxuXG4ubXhfRmlsdGVyZWREZXZpY2VMaXN0X2hlYWRlckJ1dHRvbiB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgLy8gb3ZlcnJpZGUgaW5saW5lIGJ1dHRvbiBzdHlsaW5nXG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZ2FwOiAkc3BhY2luZy04O1xufVxuXG4ubXhfRmlsdGVyZWREZXZpY2VMaXN0X2RldmljZURldGFpbHMge1xuICAgIC8vIGFsaWduIHdpdGggdGV4dCBvZiBzZXNzaW9uIHRpbGVcbiAgICBtYXJnaW4tbGVmdDogODhweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9GaWx0ZXJlZERldmljZUxpc3RIZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZ2FwOiAkc3BhY2luZy0xNjtcblxuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNDhweDtcbiAgICBwYWRkaW5nOiAwICRzcGFjaW5nLTE2O1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTMyO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbn1cblxuLm14X0ZpbHRlcmVkRGV2aWNlTGlzdEhlYWRlcl9sYWJlbCB7XG4gICAgZmxleDogMSAxIDEwMCU7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU2VjdXJpdHlSZWNvbW1lbmRhdGlvbnNfc3BhY2luZyB7XG4gICAgaGVpZ2h0OiAkc3BhY2luZy0xNjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TZWxlY3RhYmxlRGV2aWNlVGlsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5teF9TZWxlY3RhYmxlRGV2aWNlVGlsZV9jaGVja2JveCB7XG4gICAgZmxleDogMSAwO1xuXG4gICAgLm14X0NoZWNrYm94X2JhY2tncm91bmQgKyBkaXYge1xuICAgICAgICBmbGV4OiAxIDA7XG4gICAgICAgIC8qIG92ZXJyaWRlIG1vcmUgc3BlY2lmaWMgc2VsZWN0b3IgKi9cbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nLTE2ICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NldHRpbmdzU3Vic2VjdGlvbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLm14X1NldHRpbmdzU3Vic2VjdGlvbl9kZXNjcmlwdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNpbmctODtcbn1cblxuLm14X1NldHRpbmdzU3Vic2VjdGlvbl90ZXh0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xufVxuXG4ubXhfU2V0dGluZ3NTdWJzZWN0aW9uX2NvbnRlbnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC1nYXA6ICRzcGFjaW5nLTg7XG4gICAgLy8gc2V0dGluZyBtaW53aWR0aCAwIG1ha2VzIGNvbHVtbnMgZGVmaW5pdGVseSBzaXplZFxuICAgIC8vIGZpeGluZyBob3Jpem9udGFsIG92ZXJmbG93XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICBqdXN0aWZ5LWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTI0O1xuXG4gICAgc3VtbWFyeSB7XG4gICAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgIH1cbiAgICBkZXRhaWxzW29wZW5dIHtcbiAgICAgICAgc3VtbWFyeSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy04O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9TZXR0aW5nc1N1YnNlY3Rpb25fY29udGVudFN0cmV0Y2gge1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgICYubXhfU2V0dGluZ3NTdWJzZWN0aW9uX25vSGVhZGluZyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NldHRpbmdzU3Vic2VjdGlvbkhlYWRpbmcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcblxuICAgIGdhcDogJHNwYWNpbmctODtcbn1cblxuLm14X1NldHRpbmdzU3Vic2VjdGlvbkhlYWRpbmdfaGVhZGluZyB7XG4gICAgZmxleDogMSAxIDEwMCU7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUXVpY2tUaGVtZVN3aXRjaGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAubXhfRHJvcGRvd24ge1xuICAgICAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgaGVpZ2h0OiBtaW4tY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfRHJvcGRvd25fbWVudSB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDcwcHg7XG4gICAgfVxufVxuXG4ubXhfUXVpY2tUaGVtZVN3aXRjaGVyX2hlYWRpbmcge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQ2FwdGlvbiB7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG5cbiAgICAmLm14X0NhcHRpb25fZXJyb3Ige1xuICAgICAgICBjb2xvcjogJGFsZXJ0O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi8qXG4gKiBDb21wb3VuZCBpY29uXG5cbiAqIHtAbGluayBodHRwczovL3d3dy5maWdtYS5jb20vZmlsZS9YNFhUSDlpUzJLR0oyd0ZLRHFreWVkfVxuICovXG5cbi5teF9JY29uIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4ubXhfSWNvbl9hY2NlbnQge1xuICAgIGNvbG9yOiAkYWNjZW50O1xufVxuXG4ubXhfSWNvbl9iZy1hY2NlbnQtbGlnaHQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGFjY2VudCwgMC4xKTtcbn1cblxuLm14X0ljb25fYWxlcnQge1xuICAgIGNvbG9yOiAkYWxlcnQ7XG59XG5cbi5teF9JY29uX2NpcmNsZS00MCB7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBmbGV4OiAwIDAgNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgcGFkZGluZzogMCAxMnB4O1xuICAgIHdpZHRoOiA0MHB4O1xufVxuXG4ubXhfSWNvbl84IHtcbiAgICBmbGV4OiAwIDAgOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIHdpZHRoOiA4cHg7XG59XG5cbi5teF9JY29uXzEwIHtcbiAgICBmbGV4OiAwIDAgMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgd2lkdGg6IDEwcHg7XG59XG5cbi5teF9JY29uXzEyIHtcbiAgICBmbGV4OiAwIDAgMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgd2lkdGg6IDEycHg7XG59XG5cbi5teF9JY29uXzE2IHtcbiAgICBmbGV4OiAwIDAgMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgd2lkdGg6IDE2cHg7XG59XG5cbi5teF9JY29uXzI0IHtcbiAgICBmbGV4OiAwIDAgMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgd2lkdGg6IDI0cHg7XG59XG5cbi5teF9JY29uXzMyIHtcbiAgICBmbGV4OiAwIDAgMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgd2lkdGg6IDMycHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjMgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU3VjY2Vzc0RpYWxvZyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLm14X0ljb24ge1xuICAgICAgICBtYXNrLWJvcmRlcjogJHNwYWNpbmctMTY7XG4gICAgfVxuXG4gICAgLm14X0RpYWxvZ19oZWFkZXIge1xuICAgICAgICBtYXJnaW46IDAgMCAkc3BhY2luZy0xNjtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAubXhfRGlhbG9nX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5teF9EaWFsb2dfY29udGVudCB7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hcmdpbjogMCAwICRzcGFjaW5nLTQwO1xuICAgIH1cblxuICAgIC5teF9EaWFsb2dfYnV0dG9ucyB7XG4gICAgICAgIC5teF9EaWFsb2dfYnV0dG9uc19yb3cge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgICAgIGJ1dHRvbi5teF9EaWFsb2dfcHJpbWFyeSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMzI4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTggTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vKiBtYWtlIGFueSBzY3JvbGxiYXIgZ3JleSBhbmQgdGhpbiAqL1xuaHRtbCB7XG4gICAgc2Nyb2xsYmFyLWNvbG9yOiAkc2Nyb2xsYmFyLXRodW1iLWNvbG9yIHRyYW5zcGFyZW50O1xufVxuLyogc2Nyb2xsYmFyLXdpZHRoIGlzIG5vdCBpbmhlcml0ZWQgKGJ1dCAtY29sb3IgaXMsIHdoeT8hKSwgKi9cbi8qIHNvIGRlY2xhcmUgaXQgb24gZXZlcnkgZWxlbWVudCAqL1xuKiB7XG4gICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xufVxuXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogNnB4O1xuICAgIGhlaWdodDogNnB4O1xufVxuXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHNjcm9sbGJhci10aHVtYi1jb2xvcjtcbn1cblxuLyogbWFrZSBhdXRvLWhpZGUgc2Nyb2xsYmFycyBub3QgdHJhbnNwYXJlbnQgYWdhaW4gb24gaG92ZXIgKi9cbi5teF9BdXRvSGlkZVNjcm9sbGJhcjpob3ZlciB7XG4gICAgc2Nyb2xsYmFyLWNvbG9yOiAkc2Nyb2xsYmFyLXRodW1iLWNvbG9yIHRyYW5zcGFyZW50O1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Nyb2xsYmFyLXRodW1iLWNvbG9yO1xuICAgIH1cbn1cblxuLyogbWFrZSBzY3JvbGxiYXJzIHRyYW5zcGFyZW50IGZvciBhdXRvaGlkZSBzY3JvbGxiYXJzICovXG4ubXhfQXV0b0hpZGVTY3JvbGxiYXIge1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IG92ZXJsYXk7IC8qIHdoZXJlIHN1cHBvcnRlZCAqL1xuICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyO1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIHNjcm9sbGJhci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQXV0b2NvbXBsZXRlSW5wdXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm14X0F1dG9jb21wbGV0ZUlucHV0X3NlYXJjaF9pY29uIHtcbiAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmctODtcbiAgICBmaWxsOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG59XG5cbi5teF9BdXRvY29tcGxldGVJbnB1dF9lZGl0b3Ige1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4yNXM7XG5cbiAgICA+IGlucHV0IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiA0MCU7XG4gICAgICAgIHJlc2l6ZTogbm9uZTtcbiAgICAgICAgLy8gYCFpbXBvcnRhbnRgIGlzIHJlcXVpcmVkIHRvIGJ5cGFzcyBnbG9iYWwgaW5wdXQgc3R5bGVzLlxuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctOCA5cHg7XG4gICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0F1dG9jb21wbGV0ZUlucHV0X2VkaXRvci0tZm9jdXNlZCB7XG4gICAgYm9yZGVyLWNvbG9yOiAkbGlua3M7XG59XG5cbi5teF9BdXRvY29tcGxldGVJbnB1dF9lZGl0b3ItLWhhcy1zdWdnZXN0aW9ucyB7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbn1cblxuLm14X0F1dG9jb21wbGV0ZUlucHV0X2VkaXRvcl9zZWxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nLTg7XG59XG5cbi5teF9BdXRvY29tcGxldGVJbnB1dF9lZGl0b3Jfc2VsZWN0aW9uX3BpbGwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHBhZGRpbmctbGVmdDogJHNwYWNpbmctODtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkc3BhY2luZy04O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR1c2VybmFtZS12YXJpYW50MS1jb2xvcjtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG59XG5cbi5teF9BdXRvY29tcGxldGVJbnB1dF9lZGl0b3Jfc2VsZWN0aW9uX3JlbW92ZV9idXR0b24ge1xuICAgIHBhZGRpbmc6IDAgJHNwYWNpbmctNDtcbn1cblxuLm14X0F1dG9jb21wbGV0ZUlucHV0X21hdGNoZXMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRsaW5rcztcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xuICAgIHotaW5kZXg6IDEwMDA7XG59XG5cbi5teF9BdXRvY29tcGxldGVJbnB1dF9zdWdnZXN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogJHNwYWNpbmctODtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICA+ICoge1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xuICAgIH1cbn1cblxuLm14X0F1dG9jb21wbGV0ZUlucHV0X3N1Z2dlc3Rpb24tLXNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xuICAgIH1cbn1cblxuLm14X0F1dG9jb21wbGV0ZUlucHV0X3N1Z2dlc3Rpb25fdGl0bGUge1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcbn1cblxuLm14X0F1dG9jb21wbGV0ZUlucHV0X3N1Z2dlc3Rpb25fZGVzY3JpcHRpb24ge1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0JhY2tkcm9wUGFuZWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZmlsdGVyOiBibHVyKHZhcigtLWxwLWJhY2tncm91bmQtYmx1cikpO1xuICAgIC8qIEZvcmNlIGEgbmV3IGxheWVyIGZvciB0aGUgYmFja2Ryb3BQYW5lbCBzbyBpdCdzIGJldHRlciBoYXJkd2FyZSBzdXBwb3J0ZWQgKi9cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG59XG5cbi5teF9CYWNrZHJvcFBhbmVsLS1pbWFnZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuIiwiLm14X0NvbXBhdGliaWxpdHlQYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U1NTtcbn1cblxuLm14X0NvbXBhdGliaWxpdHlQYWdlX2JveCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgaGVpZ2h0OiAzMDBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2M7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcbkNvcHlyaWdodCAyMDE5IFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0NvbnRleHR1YWxNZW51X3dyYXBwZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiA1MDAwO1xufVxuXG4ubXhfQ29udGV4dHVhbE1lbnVfYmFja2dyb3VuZCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4ubXhfQ29udGV4dHVhbE1lbnUge1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3gtc2hhZG93OiA0cHggNHB4IDEycHggMCAkbWVudS1ib3gtc2hhZG93LWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtZW51LWJnLWNvbG9yO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgei1pbmRleDogNTAwMTtcbiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG59XG5cbi5teF9Db250ZXh0dWFsTWVudV9yaWdodCB7XG4gICAgcmlnaHQ6IDE2cHg7XG59XG5cbi5teF9Db250ZXh0dWFsTWVudS5teF9Db250ZXh0dWFsTWVudV93aXRoQ2hldnJvbl9yaWdodCB7XG4gICAgcmlnaHQ6IDhweDtcbn1cblxuLm14X0NvbnRleHR1YWxNZW51X2NoZXZyb25fcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogLThweDtcbiAgICB0b3A6IDBweDtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYm9yZGVyLXRvcDogOHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1sZWZ0OiA4cHggc29saWQgJG1lbnUtYmctY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbTogOHB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4ubXhfQ29udGV4dHVhbE1lbnVfbGVmdCB7XG4gICAgbGVmdDogMDtcbn1cblxuLm14X0NvbnRleHR1YWxNZW51Lm14X0NvbnRleHR1YWxNZW51X3dpdGhDaGV2cm9uX2xlZnQge1xuICAgIGxlZnQ6IDhweDtcbn1cblxuLm14X0NvbnRleHR1YWxNZW51X2NoZXZyb25fbGVmdCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IC04cHg7XG4gICAgdG9wOiAwcHg7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlci10b3A6IDhweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmlnaHQ6IDhweCBzb2xpZCAkbWVudS1iZy1jb2xvcjtcbiAgICBib3JkZXItYm90dG9tOiA4cHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi5teF9Db250ZXh0dWFsTWVudV90b3Age1xuICAgIHRvcDogMDtcbn1cblxuLm14X0NvbnRleHR1YWxNZW51Lm14X0NvbnRleHR1YWxNZW51X3dpdGhDaGV2cm9uX3RvcCB7XG4gICAgdG9wOiA4cHg7XG59XG5cbi5teF9Db250ZXh0dWFsTWVudV9jaGV2cm9uX3RvcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDBweDtcbiAgICB0b3A6IC04cHg7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlci1sZWZ0OiA4cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogOHB4IHNvbGlkICRtZW51LWJnLWNvbG9yO1xuICAgIGJvcmRlci1yaWdodDogOHB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4ubXhfQ29udGV4dHVhbE1lbnVfYm90dG9tIHtcbiAgICBib3R0b206IDA7XG59XG5cbi5teF9Db250ZXh0dWFsTWVudS5teF9Db250ZXh0dWFsTWVudV93aXRoQ2hldnJvbl9ib3R0b20ge1xuICAgIGJvdHRvbTogOHB4O1xufVxuXG4ubXhfQ29udGV4dHVhbE1lbnVfY2hldnJvbl9ib3R0b20ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwcHg7XG4gICAgYm90dG9tOiAtOHB4O1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBib3JkZXItbGVmdDogOHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci10b3A6IDhweCBzb2xpZCAkbWVudS1iZy1jb2xvcjtcbiAgICBib3JkZXItcmlnaHQ6IDhweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuLm14X0NvbnRleHR1YWxNZW51X3JpZ2h0QWxpZ25lZCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbn1cblxuLm14X0NvbnRleHR1YWxNZW51X2JvdHRvbUFsaWduZWQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG59XG5cblxuLy9SZXNwb25zaXZlIGRlc2lnblxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCl7XG4gICAgLyogLm14X0NvbnRleHR1YWxNZW51X3dyYXBwZXJ7XG4gICAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB9ICovXG4gICAgLm14X0NvbnRleHR1YWxNZW51X2JhY2tncm91bmR7XG4gICAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLm14X1NwYWNlQ3JlYXRlTWVudV93cmFwcGVyIC5teF9Db250ZXh0dWFsTWVudSAubXhfU3BhY2VDcmVhdGVNZW51VHlwZXtcbiAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG4gICAgLm14X1NwYWNlQ3JlYXRlTWVudV93cmFwcGVyIC5teF9Db250ZXh0dWFsTWVudXtcbiAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7XG4gICAgfVxufSIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9FcnJvck1lc3NhZ2Uge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sb3I6ICRhbGVydDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICBnYXA6ICRzcGFjaW5nLTg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMmVtO1xuICAgIG1pbi1oZWlnaHQ6IDIuNGVtO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuQGtleWZyYW1lcyBteF9GaWxlRHJvcFRhcmdldF9hbmltYXRpb24ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDAuOTU7XG4gICAgfVxufVxuXG4ubXhfRmlsZURyb3BUYXJnZXQge1xuICAgIG1pbi13aWR0aDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICBvcGFjaXR5OiAwLjk1O1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDMwMDA7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIGFuaW1hdGlvbjogbXhfRmlsZURyb3BUYXJnZXRfYW5pbWF0aW9uO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMC41cztcbn1cblxuQGtleWZyYW1lcyBteF9GaWxlRHJvcFRhcmdldF9pbWFnZV9hbmltYXRpb24ge1xuICAgIGZyb20ge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICB9XG59XG5cbi5teF9GaWxlRHJvcFRhcmdldF9pbWFnZSB7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgYW5pbWF0aW9uOiBteF9GaWxlRHJvcFRhcmdldF9pbWFnZV9hbmltYXRpb247XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjVzO1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTYgT3Blbk1hcmtldCBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRmlsZVBhbmVsIHtcbiAgICBvcmRlcjogMjtcbiAgICBmbGV4OiAxIDEgMDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAubXhfUm9vbVZpZXdfbWVzc2FnZUxpc3RXcmFwcGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm14X1Jvb21WaWV3X01lc3NhZ2VMaXN0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIEZJWE1FOiByYXRoZXIgdGhhbiBoYXZpbmcgRXZlbnRUaWxlJ3MgZGVmYXVsdCBDU1MgYmUgZm9yIE1lc3NhZ2VQYW5lbCxcbiAgIHdlIHNob3VsZCBtYWtlIEV2ZW50VGlsZSBhIGJhc2UgQ1NTIGNsYXNzIGFuZCBjdXN0b21pc2UgaXQgc3BlY2lmaWNhbGx5XG4gICBmb3IgdXNhZ2UgaW4ge01lc3NhZ2UsRmlsZSxOb3RpZmljYXRpb259UGFuZWwuICovXG5cbiAgICAubXhfRXZlbnRUaWxlX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLyogT3ZlcnJpZGVzIGZvciB0aGUgYXR0YWNobWVudCBib2R5IHRpbGVzICovXG4gICAgLm14X0V2ZW50VGlsZSB7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuXG4gICAgICAgIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgJi5teF9FdmVudFRpbGVfdmVyaWZpZWQsXG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV91bnZlcmlmaWVkLFxuICAgICAgICAgICAgJi5teF9FdmVudFRpbGVfdW5rbm93biB7XG4gICAgICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTUZpbGVCb2R5IHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyLjRyZW07XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTUZpbGVCb2R5X2Rvd25sb2FkIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAkc3BhY2luZy04O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgICAgIGNvbG9yOiAkZXZlbnQtdGltZXN0YW1wLWNvbG9yO1xuXG4gICAgICAgICAgICAubXhfTUltYWdlQm9keV9zaXplIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9NRmlsZUJvZHlfZG93bmxvYWRMaW5rIHtcbiAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICAgICAgY29sb3I6ICRsaWdodC1mZy1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGFuY2hvciBsaW5rIGFzIHdyYXBwZXIgKi9cbiAgICAgICAgLm14X0V2ZW50VGlsZV9zZW5kZXJEZXRhaWxzTGluayB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfc2VuZGVyRGV0YWlscyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTJweDtcblxuICAgICAgICAgICAgICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkZXZlbnQtdGltZXN0YW1wLWNvbG9yOyAvKiBmb3IgZWxsaXBzaXMuIENvbG9yIG9mIGRpc3BsYXlOYW1lIGFuZCBteGlkIGlzIGluaGVyaXRlZCAqL1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9NZXNzYWdlVGltZXN0YW1wIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogMDtcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgfVxufVxuXG4ubXhfRmlsZVBhbmVsX2VtcHR5OjpiZWZvcmUge1xuICAgIC0tbWFza0ltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9maWxlcy5zdmdcIik7IC8qIFNlZTogX1JpZ2h0UGFuZWwucGNzcyAqL1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0dlbmVyaWNEcm9wZG93bk1lbnVfYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAzcHggNHB4IDNweCA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG59XG5cbi5teF9HZW5lcmljRHJvcGRvd25NZW51X2J1dHRvbjpob3Zlcixcbi5teF9HZW5lcmljRHJvcGRvd25NZW51X2J1dHRvblthcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZDogJHF1aW5hcnktY29udGVudDtcbn1cblxuLm14X0dlbmVyaWNEcm9wZG93bk1lbnVfYnV0dG9uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgd2lkdGg6IDE4cHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9jaGV2cm9uLWRvd24uc3ZnXCIpO1xuICAgIG1hc2stc2l6ZTogMTAwJTtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGZsb2F0OiByaWdodDtcbn1cblxuLm14X0NvbnRleHR1YWxNZW51X3dyYXBwZXIubXhfR2VuZXJpY0Ryb3Bkb3duTWVudV93cmFwcGVyIHtcbiAgICAubXhfQ29udGV4dHVhbE1lbnUge1xuICAgICAgICBwb3NpdGlvbjogaW5pdGlhbDtcblxuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcblxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkcXVpbmFyeS1jb250ZW50O1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgyMywgMjUsIDI4LCAwLjA1KTtcbiAgICB9XG5cbiAgICAubXhfQ29udGV4dHVhbE1lbnVfY2hldnJvbl90b3Age1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICByaWdodDogMjJweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHF1aW5hcnktY29udGVudDtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyOiBpbmhlcml0O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJG1lbnUtYmctY29sb3I7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDFweDtcbiAgICAgICAgICAgIGxlZnQ6IC04cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfR2VuZXJpY0Ryb3Bkb3duTWVudV9kaXZpZGVyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxOXB4O1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfR2VuZXJpY0Ryb3Bkb3duTWVudV9PcHRpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMjBweCAxMHB4IDMwcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICA+IC5teF9HZW5lcmljRHJvcGRvd25NZW51X09wdGlvbi0tbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAgICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAgICAgc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfR2VuZXJpY0Ryb3Bkb3duTWVudV9PcHRpb24tLWhlYWRlciA+IC5teF9HZW5lcmljRHJvcGRvd25NZW51X09wdGlvbi0tbGFiZWwgc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0dlbmVyaWNEcm9wZG93bk1lbnVfT3B0aW9uLS1pdGVtIHtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtZW51LXNlbGVjdGVkLWNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmW2FyaWEtY2hlY2tlZD1cInRydWVcIl06OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0yMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2NoZWNrLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLm14X0dlbmVyaWNFcnJvclBhZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLm14X0dlbmVyaWNFcnJvclBhZ2VfYm94IHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgd2lkdGg6IDUwMHB4O1xuICAgIG1pbi1oZWlnaHQ6IDEyNXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMjI7XG4gICAgcGFkZGluZzogMTBweCAxMHB4IDIwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjYztcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNiBPcGVuTWFya2V0IEx0ZFxuQ29weXJpZ2h0IDIwMTcgVmVjdG9yIENyZWF0aW9ucyBMdGRcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0hvbWVQYWdlIHtcbiAgICBtYXgtd2lkdGg6IDk2MHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi5teF9Ib21lUGFnZV9kZWZhdWx0IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcblxuICAgIC5teF9Ib21lUGFnZV9kZWZhdWx0X3dyYXBwZXIge1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIGgxIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0zMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtNDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgIH1cblxuICAgIGgyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNXB4O1xuICAgICAgICBjb2xvcjogJG11dGVkLWZnLWNvbG9yO1xuICAgIH1cblxuICAgIC5teF9NaW5pQXZhdGFyVXBsb2FkZXIge1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG5cbiAgICAubXhfSG9tZVBhZ2VfZGVmYXVsdF9idXR0b25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luOiA2MHB4IGF1dG8gMDtcbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDczcHggOHB4IDE1cHg7IC8qIHRvcDogMjBweCB0b3AgcGFkZGluZyArIDQwcHggaWNvbiArIDEzcHggbWFyZ2luICovXG5cbiAgICAgICAgICAgIHdpZHRoOiAxNjBweDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEzMnB4O1xuICAgICAgICAgICAgbWFyZ2luOiAyMHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTIwcHg7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZjsgLyogb24gYWxsIHRoZW1lcyAqL1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB0b3A6IDIwcHg7XG4gICAgICAgICAgICAgICAgbGVmdDogNjBweDsgLyogKDE2MHB4LTQwcHgpLzIgKi9cbiAgICAgICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG5cbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyAvKiBvbiBhbGwgdGhlbWVzICovXG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfSG9tZVBhZ2VfYnV0dG9uX3NlbmREbTo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvZmVlZGJhY2suc3ZnXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0hvbWVQYWdlX2J1dHRvbl9leHBsb3JlOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9leHBsb3JlLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9Ib21lUGFnZV9idXR0b25fY3JlYXRlR3JvdXA6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2dyb3VwLW1lbWJlcnMuc3ZnXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vUmVzcG9uc2l2ZSBEZXNpZ25cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpe1xuICAgIC5teF9Ib21lUGFnZV9kZWZhdWx0IC5teF9Ib21lUGFnZV9kZWZhdWx0X2J1dHRvbnMgLm14X0FjY2Vzc2libGVCdXR0b257XG4gICAgICAgIHdpZHRoOiA5MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMTBweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubXhfSG9tZVBhZ2VfZGVmYXVsdCAubXhfSG9tZVBhZ2VfZGVmYXVsdF9idXR0b25zIC5teF9BY2Nlc3NpYmxlQnV0dG9uOjpiZWZvcmV7XG4gICAgICAgIGxlZnQ6IDI1cHggIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTGFyZ2VMb2FkZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIC5teF9TcGlubmVyIHtcbiAgICAgICAgZmxleDogdW5zZXQ7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzJweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMzN2aDtcbiAgICB9XG5cbiAgICAubXhfTGFyZ2VMb2FkZXJfdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgcGFkZGluZzogMCAxNnB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTWF0cml4Q2hhdC0td2l0aC1hdmF0YXIge1xuICAgIC5teF9MZWZ0UGFuZWwsXG4gICAgLm14X0xlZnRQYW5lbCAubXhfTGVmdFBhbmVsX3Jvb21MaXN0Q29udGFpbmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxufVxuXG4ubXhfTGVmdFBhbmVsX291dGVyV3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1heC13aWR0aDogNTAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC8qIENvbnRhaW4gdGhlIGFtb3VudCBvZiBsYXllcnMgcmVuZGVyZWQgYnkgY29uc3RyYWluaW5nIHdoYXQgYWN0dWFsbHkgbmVlZHMgcmUtbGF5ZXJpbmcgdmlhIGNzcyAqL1xuICAgIGNvbnRhaW46IGxheW91dCBwYWludDtcbn1cblxuLm14X0xlZnRQYW5lbF93cmFwcGVyLFxuLm14X0xlZnRQYW5lbCB7XG4gICAgLS1jb2xsYXBzZWRXaWR0aDogNjhweDtcbn1cblxuLm14X0xlZnRQYW5lbF93cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleDogMTtcbiAgICBoZWlnaHQ6IDEwMCU7IC8qIGVuc3VyZSBzcGFjZSBwYW5lbCBpcyBzdGlsbCBzY3JvbGxhYmxlIHdpdGggYW4gb3V0ZXIgd3JhcHBlciAqL1xuXG4gICAgLm14X0xlZnRQYW5lbF93cmFwcGVyLS11c2VyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHJvb21saXN0LWJnLWNvbG9yO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIFxuICAgICAgICAmW2RhdGEtY29sbGFwc2VkXSB7XG4gICAgICAgICAgIFxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfTGVmdFBhbmVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcm9vbWxpc3QtYmctY29sb3I7XG5cbiAgICAvKiBDcmVhdGUgYSByb3ctYmFzZWQgZmxleGJveCBmb3IgdGhlIHNwYWNlIHBhbmVsIGFuZCB0aGUgcm9vbSBsaXN0ICovXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBjb250YWluOiBjb250ZW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC8qIE5vdGU6IFRoZSAncm9vbSBsaXN0JyBpbiB0aGlzIGNvbnRleHQgaXMgYWN0dWFsbHkgZXZlcnl0aGluZyB0aGF0IGlzbid0IHRoZSB0YWcgKi9cbiAgICAvKiBwYW5lbCwgc3VjaCBhcyB0aGUgbWVudSBvcHRpb25zLCBicmVhZGNydW1icywgZmlsdGVyaW5nLCBldGMgKi9cbiAgICAubXhfTGVmdFBhbmVsX3Jvb21MaXN0Q29udGFpbmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHJvb21saXN0LWJnLWNvbG9yO1xuICAgICAgICBmbGV4OiAxIDAgMDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAvKiBDcmVhdGUgYW5vdGhlciBmbGV4Ym94ICh0aGlzIHRpbWUgYSBjb2x1bW4pIGZvciB0aGUgcm9vbSBsaXN0IGNvbXBvbmVudHMgKi9cbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAubXhfTGVmdFBhbmVsX3VzZXJIZWFkZXIge1xuICAgICAgICAgICAgLyogMTJweCB0b3AsIDEycHggc2lkZXMsIDIwcHggYm90dG9tICh1c2luZyAxM3B4IGJvdHRvbSB0byBhY2NvdW50XG4gICAgICAgICAgICAgKiBmb3IgaW50ZXJuYWwgd2hpdGVzcGFjZSBpbiB0aGUgYnJlYWRjcnVtYnMpXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDsgLyogdG8gY29udmluY2Ugc2FmYXJpJ3MgbGF5b3V0IGVuZ2luZSB0aGUgZmxleGJveCBpcyBmaW5lICovXG5cbiAgICAgICAgICAgIC8qIENyZWF0ZSBhbm90aGVyIGZsZXhib3ggY29sdW1uIGZvciB0aGUgcm93cyB0byBzdGFjayB3aXRoaW4gKi9cbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xlZnRQYW5lbF9icmVhZGNydW1ic0NvbnRhaW5lciB7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICAgICAgICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gICAgICAgICAgICBtYXJnaW46IDEycHggMTJweCAwIDEycHg7XG4gICAgICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgICAgIC8qIENyZWF0ZSB5ZXQgYW5vdGhlciBmbGV4Ym94LCB0aGlzIHRpbWUgd2l0aGluIHRoZSByb3csIHRvIGVuc3VyZSBpdGVtcyBzdGF5ICovXG4gICAgICAgICAgICAvKiBhbGlnbmVkIGNvcnJlY3RseS4gVGhpcyBpcyBhbHNvIGEgcm93LWJhc2VkIGZsZXhib3guICovXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGNvbnRhaW46IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgICYubXhfSW5kaWNhdG9yU2Nyb2xsYmFyX2xlZnRPdmVyZmxvdyB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgYmxhY2sgNSUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0luZGljYXRvclNjcm9sbGJhcl9yaWdodE92ZXJmbG93IHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIGJsYWNrLCBibGFjayA5NSUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9JbmRpY2F0b3JTY3JvbGxiYXJfcmlnaHRPdmVyZmxvdy5teF9JbmRpY2F0b3JTY3JvbGxiYXJfbGVmdE92ZXJmbG93IHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCBibGFjayA1JSwgYmxhY2sgOTUlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTGVmdFBhbmVsX2ZpbHRlckNvbnRhaW5lciB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMTJweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMCA4cHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcblxuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7IC8qIHRvIGNvbnZpbmNlIHNhZmFyaSdzIGxheW91dCBlbmdpbmUgdGhlIGZsZXhib3ggaXMgZmluZSAqL1xuXG4gICAgICAgICAgICAvKiBDcmVhdGUgYSBmbGV4Ym94IHRvIG9yZ2FuaXplIHRoZSBpbnB1dHMgKi9cbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICAgICAmICsgLm14X1Jvb21MaXN0SGVhZGVyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfTGVmdFBhbmVsX2RpYWxQYWRCdXR0b24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbmVsLWFjdGlvbnM7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogOHB4O1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiA4cHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jYWxsL2RpYWxwYWQuc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0xlZnRQYW5lbF9leHBsb3JlQnV0dG9uLFxuICAgICAgICAgICAgLm14X0xlZnRQYW5lbF9yZWNlbnRzQnV0dG9uIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwYW5lbC1hY3Rpb25zO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogOHB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGVydGlhcnktY29udGVudDtcblxuICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9MZWZ0UGFuZWxfZXhwbG9yZUJ1dHRvbjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3QvZXhwbG9yZS5zdmdcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9MZWZ0UGFuZWxfcmVjZW50c0J1dHRvbjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2xvY2suc3ZnXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Jvb21MaXN0SGVhZGVyOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTGVmdFBhbmVsX3Jvb21MaXN0V3JhcHBlciB7XG4gICAgICAgICAgICAvKiBNYWtlIHRoZSB5LXNjcm9sbGJhciBtb3JlIHJlc3BvbnNpdmUgKi9cbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDJweDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OyAvKiBzbyB3ZSdyZSBub3QgdXAgYWdhaW5zdCB0aGUgc2VhcmNoL2ZpbHRlciAqL1xuICAgICAgICAgICAgZmxleDogMSAwIDA7IC8qIG5lZWRlZCBpbiBTYWZhcmkgdG8gcHJvcGVybHkgc2V0IGZsZXgtYmFzaXMgKi9cblxuICAgICAgICAgICAgJi5teF9MZWZ0UGFuZWxfcm9vbUxpc3RXcmFwcGVyX3N0aWNreUJvdHRvbSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMycHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfTGVmdFBhbmVsX3Jvb21MaXN0V3JhcHBlcl9zdGlja3lUb3Age1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xlZnRQYW5lbF9hY3R1YWxSb29tTGlzdENvbnRhaW5lciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIGZvciBzdGlja3kgaGVhZGVycyAqL1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOyAvKiBlbnN1cmUgc2Nyb2xsaW5nIHN0aWxsIHdvcmtzICovXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBUaGVzZSBzdHlsZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIGZvciB0aGUgbWluaW1pemVkICg2NnB4KSBsYXlvdXQgKi9cbiAgICAmLm14X0xlZnRQYW5lbF9taW5pbWl6ZWQge1xuICAgICAgICBmbGV4LWdyb3c6IDA7XG4gICAgICAgIG1pbi13aWR0aDogdW5zZXQ7XG4gICAgICAgIHdpZHRoOiB1bnNldCAhaW1wb3J0YW50O1xuXG4gICAgICAgIC5teF9MZWZ0UGFuZWxfcm9vbUxpc3RDb250YWluZXIge1xuICAgICAgICAgICAgd2lkdGg6IHZhcigtLWNvbGxhcHNlZFdpZHRoKTtcblxuICAgICAgICAgICAgLm14X0xlZnRQYW5lbF91c2VySGVhZGVyIHtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfTGVmdFBhbmVsX2ZpbHRlckNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgLyogT3JnYW5pemUgdGhlIGZsZXhib3ggaW50byBhIGNlbnRlcmVkIGNvbHVtbiBsYXlvdXQgKi9cbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgICAgICAgICAgLm14X0xlZnRQYW5lbF9kaWFsUGFkQnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm14X0xlZnRQYW5lbF9leHBsb3JlQnV0dG9uLFxuICAgICAgICAgICAgICAgIC5teF9MZWZ0UGFuZWxfcmVjZW50c0J1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vL1xuXG4uTGVmdFBhbmVsX2Nsb3NlQnRuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuI21vYmlsZV9QYW5lbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLy9SZXNwb25zaXZlIGRlc2lnblxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIC5teF9MZWZ0UGFuZWxfb3V0ZXJXcmFwcGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAjbW9iaWxlX1BhbmVsIHtcbiAgICAgICAgLyogYm9yZGVyOiAycHggc29saWQgcmVkOyAqL1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMHZ3OyAvKiBGdWxsIHZpZXdwb3J0IHdpZHRoICovXG4gICAgICAgIGhlaWdodDogMTAwdmg7IC8qIEZ1bGwgdmlld3BvcnQgaGVpZ2h0ICovXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IC8qIEJhY2tncm91bmQgY29sb3IgKi9cbiAgICAgICAgei1pbmRleDogMTAwMDsgLyogSGlnaCB6LWluZGV4IHRvIG92ZXJsYXkgb3RoZXIgY29udGVudCAqL1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOyAvKiBTbW9vdGggdHJhbnNpdGlvbiAqL1xuXG4gICAgICAgIC5teF9MZWZ0UGFuZWxfd3JhcHBlci0tdXNlciB7XG4gICAgICAgICAgICB3aWR0aDogMTAwdnc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuTGVmdFBhbmVsX2Nsb3NlQnRuIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBmb250LXNpemU6IDM1cHg7XG4gICAgICAgIHRvcDogNTBweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgcmlnaHQ6IDE1cHg7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NYWluU3BsaXQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgbWluLWhlaWdodDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5teF9NYWluU3BsaXQgPiAubXhfUmlnaHRQYW5lbF9SZXNpemVXcmFwcGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1jb250YWluZXItZ2FwLXdpZHRoKTtcbiAgICAvKiBUaGUgcmVzaXplciBzaG91bGQgYmUgY2VudGVyZWQ6IG9ubHkgaGFsZiBvZiB0aGUgZ2FwLXdpZHRoIGlzIGhhbmRsZWQgYnkgdGhlIHJpZ2h0IHBhbmVsLiAqL1xuICAgIC8qIFRoZSBvdGhlciBoYWxmIGJ5IHRoZSBSb29tVmlldy4gKi9cbiAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tY29udGFpbmVyLWdhcC13aWR0aCkgLyAyKTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA1MXB4KTsgLyogaGVpZ2h0IG9mIC5teF9Sb29tSGVhZGVyLmxpZ2h0LXBhbmVsICovXG5cbiAgICAmOmhvdmVyIC5teF9SZXNpemVIYW5kbGUtLWhvcml6b250YWw6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAgICAgaGVpZ2h0OiA2NHB4OyAvKiB0byBtYXRjaCB3aWR0aCBvZiB0aGUgb25lcyBvbiByb29tbGlzdCAqL1xuICAgICAgICB3aWR0aDogNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG5cbiAgICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxufVxuXG4vL1Jlc3BvbnNpdmUgZGVzaWduXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KXtcbiAgICAubXhfUmlnaHRQYW5lbF9SZXNpemVXcmFwcGVye1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICAgICAgdG9wOiAzOHB4O1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgaGVpZ2h0OiA5MCUgIWltcG9ydGFudDtcbiAgICB9XG59IiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01hdHJpeENoYXRfc3BsYXNoIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubXhfTWF0cml4Q2hhdF9zcGxhc2hCdXR0b25zIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMzBweDtcbn1cblxuLm14X01hdHJpeENoYXRfd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcblxuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLm14X01hdHJpeFRvb2xiYXIge1xuICAgIG9yZGVyOiAxO1xuXG4gICAgaGVpZ2h0OiA0MHB4O1xufVxuXG4ubXhfTWF0cml4Q2hhdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICBmbGV4OiAxO1xuICAgIG1pbi1oZWlnaHQ6IDA7XG59XG5cbi5teF9NYXRyaXhDaGF0X3N5bmNFcnJvciB7XG4gICAgY29sb3I6ICRhY2NlbnQtZmctY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RmMmE4YjsgLyogT25seSB1c2VkIGhlcmUgKi9cbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgcGFkZGluZzogMzBweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDBweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vKiBub3QgdGhlIGxlZnQgcGFuZWwsIGFuZCBub3QgdGhlIHJlc2l6ZSBoYW5kbGUsIHNvIHRoZSByb29tdmlldyBhbmQgZnJpZW5kcyAqL1xuLm14X01hdHJpeENoYXQgPiA6bm90KC5teF9MZWZ0UGFuZWwpOm5vdCgubXhfU3BhY2VQYW5lbCk6bm90KC5teF9SZXNpemVIYW5kbGUpOm5vdCgubXhfTGVmdFBhbmVsX291dGVyV3JhcHBlcikge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuXG4gICAgZmxleDogMSAxIDA7XG4gICAgbWluLXdpZHRoOiAwO1xuXG4gICAgLyogVG8gZml4IGh0dHBzOi8vZ2l0aHViLmNvbS92ZWN0b3ItaW0vZWxlbWVudC13ZWIvaXNzdWVzLzMyOTggd2hlcmUgU2FmYXJpXG4gICAgICAgbmVlZGVkIGhlaWdodCAxMDAlIGFsbCB0aGUgd2F5IGRvd24gdG8gdGhlIEhvbWVQYWdlLiBIZWlnaHQgZG9lcyBub3RcbiAgICAgICBoYXZlIHRvIGJlIGF1dG8sIGVtcGlyaWNhbGx5LlxuICAgICovXG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4vKiBXZSdkIGxpa2UgdG8gcmVtb3ZlIHRoaXMsIGJ1dCB0aGlzIG1ha2VzIG1hdHJpeGNoYXQncyByZXNpemVoYW5kbGUncyAqL1xuLyogbmVnYXRpdmUgbWFyZ2luIGdyZWF0ZXIgdGhhbiBpdHMgcG9zaXRpdmUgcGFkZGluZy4gSWYgaXQncyB0aGUgc2FtZSAqL1xuLyogb3IgbGVzcywgU2FmYXJpIGFuZCBvdGhlciBXZWJLaXQgYmFzZWQgYnJvd3NlcnMgZ2V0IGNvbmZ1c2VkIGFib3V0IG92ZXJmbG93cyBzb21laG93IGFuZCAqL1xuLyogaHR0cHM6Ly9naXRodWIuY29tL3ZlY3Rvci1pbS9lbGVtZW50LXdlYi9pc3N1ZXMvMTk4NjMgaGFwcGVucy4gKi9cbi5teF9NYXRyaXhDaGF0ID4gLm14X1Jlc2l6ZUhhbmRsZS5teF9SZXNpemVIYW5kbGUtLWhvcml6b250YWwge1xuICAgIG1hcmdpbjogMCBjYWxjKC01LjVweCAtIHZhcigtLWNvbnRhaW5lci1nYXAtd2lkdGgpIC8gMikgMCBjYWxjKC02LjVweCArIHZhcigtLWNvbnRhaW5lci1nYXAtd2lkdGgpIC8gMik7XG4gICAgLyogVGhlIGNvbmRpdGlvbiB0byBwcmV2ZW50IGJsZWVkaW5nIGlzOiAobWFyZ2luLWxlZnQgKyBtYXJnaW4tcmlnaHQgPCAtMTFweCkgKi9cbiAgICAvKiAoSUYgdGhlcmUgaXMgTk8gbWFyZ2luIG9uIHRoZSBsZWZ0UGFuZWxfd3JhcHBlcikgKi9cbiAgICAvKiBUaGUgcmVzaXplSGFuZGxlIGRvZXMgbm90IGNoYW5nZSB0aGUgZ2FwIGJldHdlZW4gdGhlIGxlZnQgcGFuZWwgYW5kIHRoZSByb29tIHZpZXc6ICovXG4gICAgLyogIHRoZSByZXNpemVIYW5kbGUgd2lkdGggaXM6ICovXG4gICAgLyogICAgICAxMXB4ID0gIDEwcHggKHBhZGRpbmcpICsgMXB4ICh3aWR0aCkgKi9cbiAgICAvKiAgICAgIGFuZCB0aGUgdG90YWwgbmVnYXRpdmUgbWFyZ2luIGlzIC0xMnB4IC0+ICovXG4gICAgLyogICAgICB0aGUgaGFuZGxlIHJlcXVpcmVzIG5vIHNwYWNlICovXG4gICAgLyogcmlnaHQ6IC02cHggbGVmdDogLTZweCBwb3NpdGlvbnMgdGhlIGVsZW1lbnQgZXhhY3RseSBvbiB0aGUgZWRnZSBvZiBsZWZ0UGFuZWwuICovXG4gICAgLyogbGVmdCs9MSBhbmQgcmlnaHQtPTEgPT4gcmVzaXplSGFuZGxlIG1vdmVzIDFweCB0byB0aGUgcmlnaHQgY2xvc2VyIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGdhcC4gKi9cbiAgICAvKiBXZSB3YW50IHRoZSBoYW5kbGUgdG8gYmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZ2FwIHNvIGl0IGlzIHNoaWZ0ZWQgYnkgKHZhcigtLWNvbnRhaW5lci1nYXAtd2lkdGgpIC8gMikgKi9cbn1cblxuLm14X01hdHJpeENoYXQgPiAubXhfUmVzaXplSGFuZGxlLS1ob3Jpem9udGFsOmhvdmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgIGhlaWdodDogNjRweDsgLyogdG8gbWF0Y2ggd2lkdGggb2YgdGhlIG9uZXMgb24gcm9vbWxpc3QgKi9cbiAgICAgICAgd2lkdGg6IDRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjMgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTWVzc2FnZVBhbmVsX215UmVhZE1hcmtlciB7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcblxuICAgIGhyIHtcbiAgICAgICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICRhY2NlbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAkYWNjZW50O1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogLTFweDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgd2lsbC1jaGFuZ2U6IHdpZHRoO1xuICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCA0MDBtcyBlYXNlaW5zaW5lIDFzLCBvcGFjaXR5IDQwMG1zIGVhc2VpbnNpbmUgMXM7XG4gICAgICAgIHdpZHRoOiA5OSU7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X05vblVyZ2VudFRvYXN0Q29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAzMHB4O1xuICAgIGxlZnQ6IDI4cHg7XG4gICAgei1pbmRleDogMTAxOyAvKiBzYW1lIGxldmVsIGFzIG90aGVyIHRvYXN0cyAqL1xuXG4gICAgLm14X05vblVyZ2VudFRvYXN0Q29udGFpbmVyX3RvYXN0IHtcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHdpZHRoOiAzMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xM3B4O1xuICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG5cbiAgICAgICAgLyogV2UgZG9uJ3QgdXNlIHZhcmlhYmxlcyBvbiB0aGUgY29sb3VycyBiZWNhdXNlIHdlIHdhbnQgaXQgdG8gYmUgdGhlIHNhbWUgKi9cbiAgICAgICAgLyogaW4gYWxsIHRoZW1lcy4gKi9cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE3MTkxYztcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X05vdGlmaWNhdGlvblBhbmVsX2VtcHR5OjpiZWZvcmUge1xuICAgIC0tbWFza0ltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbm90aWZpY2F0aW9ucy5zdmdcIik7IC8qIFNlZTogX1JpZ2h0UGFuZWwucGNzcyAqL1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1F1aWNrU2V0dGluZ3NCdXR0b24ge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiAxMnB4IGF1dG87XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICBtaW4td2lkdGg6IDMycHg7XG4gICAgbWluLWhlaWdodDogMzJweDtcbiAgICBsaW5lLWhlaWdodDogMzJweDtcblxuICAgICYuZXhwYW5kZWQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0NHB4OyAvKiBhbGlnbiB3aXRoIHRvZ2dsZSBjb2xsYXBzZSBidXR0b24gdGV4dCAqL1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3Muc3ZnXCIpO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2stc2l6ZTogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIH1cblxuICAgICY6bm90KC5leHBhbmRlZCk6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVhdGVybmFyeS1jb250ZW50O1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfUXVpY2tTZXR0aW5nc0J1dHRvbl9Db250ZXh0TWVudVdyYXBwZXIgLm14X0NvbnRleHR1YWxNZW51IHtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIGNvbnRhaW46IHVuc2V0OyAvKiBsZXQgdGhlIGRyb3Bkb3duIHBhaW50IGJleW9uZCB0aGUgY29udGV4dCBtZW51ICovXG5cbiAgICA+IGRpdiA+IGgyIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gICAgfVxuXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b25faGFzS2luZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgfVxuXG4gICAgPiBkaXYgPiBoNCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgbWFyZ2luOiAyMHB4IDAgMTJweDtcbiAgICB9XG5cbiAgICAubXhfUXVpY2tTZXR0aW5nc0J1dHRvbl9waW5Ub1NpZGViYXJIZWFkaW5nIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyNHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgLm14X0NoZWNrYm94IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIH1cblxuICAgIC5teF9RdWlja1NldHRpbmdzQnV0dG9uX2Zhdm91cml0ZXNDaGVja2JveCxcbiAgICAubXhfUXVpY2tTZXR0aW5nc0J1dHRvbl9wZW9wbGVDaGVja2JveCB7XG4gICAgICAgIC5teF9DaGVja2JveF9iYWNrZ3JvdW5kICsgZGl2IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjJweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfUXVpY2tTZXR0aW5nc0J1dHRvbl9tb3JlT3B0aW9uc0J1dHRvbiB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMjJweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIycHg7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG59XG5cbi5teF9RdWlja1NldHRpbmdzQnV0dG9uX2ljb24ge1xuICAgIC8vIFRPRE8gcmVtb3ZlIHdoZW4gYWxsIGljb25zIGhhdmUgZmlsbD1jdXJyZW50Q29sb3JcbiAgICAqIHtcbiAgICAgICAgZmlsbDogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIH1cbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1JpZ2h0UGFuZWwge1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBwYWRkaW5nOiB2YXIoLS1jb250YWluZXItYm9yZGVyLXdpZHRoKSAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGNvbnRhaW46IHN0cmljdDtcblxuICAgIC5teF9Sb29tVmlld19NZXNzYWdlTGlzdCB7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMThweDsgLyogdG9wIGFuZCBib3R0b20gaXMgNHB4IHNtYWxsZXIgdG8gYmFsYW5jZSB3aXRoIHRoZSBwYWRkaW5nIHNldCBhYm92ZSAqL1xuICAgIH1cbn1cblxuLyoqIEZpeG1lIC0gZmFjdG9yIHRoaXMgb3V0IHdpdGggdGhlIG1haW4gaGVhZGVyICoqL1xuXG4ubXhfUmlnaHRQYW5lbF90aHJlYWRzQnV0dG9uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL3RocmVhZC5zdmdcIik7XG59XG5cbi5teF9SaWdodFBhbmVsX25vdGlmc0J1dHRvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbm90aWZpY2F0aW9ucy5zdmdcIik7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xufVxuXG4ubXhfUmlnaHRQYW5lbF9yb29tU3VtbWFyeUJ1dHRvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9yb29tLXN1bW1hcnkuc3ZnXCIpO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbn1cblxuLm14X1JpZ2h0UGFuZWxfcGlubmVkTWVzc2FnZXNCdXR0b24ge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL3Bpbi5zdmdcIik7XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICB9XG59XG5cbi5teF9SaWdodFBhbmVsX3RpbWVsaW5lQ2FyZEJ1dHRvbiB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2ZlZWRiYWNrLnN2Z1wiKTtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIH1cbn1cblxuLm14X1JpZ2h0UGFuZWwgLm14X01lbWJlckxpc3QsXG4ubXhfUmlnaHRQYW5lbCAubXhfTWVtYmVySW5mbyB7XG4gICAgb3JkZXI6IDI7XG4gICAgZmxleDogMSAxIDA7XG59XG5cbi5teF9SaWdodFBhbmVsIC5teF9Sb29tVmlld19tZXNzYWdlUGFuZWxTcGlubmVyIHtcbiAgICBvcmRlcjogMjtcbiAgICBtYXJnaW46IGF1dG87XG59XG5cbi5teF9SaWdodFBhbmVsX2VtcHR5IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0yOHB4O1xuXG4gICAgaDIge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBtYXJnaW46IDE2cHggMDtcbiAgICB9XG5cbiAgICBoMixcbiAgICBwIHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDExcHggYXV0byAyOXB4IGF1dG87XG4gICAgICAgIGhlaWdodDogNDJweDtcbiAgICAgICAgd2lkdGg6IDQycHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtdGV4dC1wcmltYXJ5LWNvbG9yO1xuICAgICAgICBtYXNrLWltYWdlOiB2YXIoLS1tYXNrSW1hZ2UpO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICB9XG59XG5cbi5teF9SaWdodFBhbmVsX3Njb3BlSGVhZGVyIHtcbiAgICBtYXJnaW46IDI0cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgZm9udC1zaXplOiAkZm9udC0xOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMnB4O1xuXG4gICAgLm14X0Jhc2VBdmF0YXIge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vKiBOb3RlOiB0aGlzIGNvbXBvbmVudCBleHBlY3RzIHRvIGJlIGNvbnRhaW5lZCB3aXRoaW4gYSBmbGV4Ym94ICovXG4ubXhfUm9vbVNlYXJjaCB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwYW5lbC1hY3Rpb25zO1xuICAgIC8qIGtlZXAgYm9yZGVyIHRoaWNrbmVzcyBjb25zaXN0ZW50IHRvIHByZXZlbnQgbW92ZW1lbnQgKi9cbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgcGFkZGluZzogMXB4O1xuXG4gICAgLyogQ3JlYXRlIGEgZmxleGJveCBmb3IgdGhlIGljb25zIChlYXNpZXIgdG8gbWFuYWdlKSAqL1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIC5teF9Sb29tU2VhcmNoX2ljb24ge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBtYXNrOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3Qvc2VhcmNoLnN2Z1wiKTtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBtYXJnaW4tbGVmdDogN3B4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC5teF9Sb29tU2VhcmNoX3Nwb3RsaWdodFRyaWdnZXJUZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTZweDtcbiAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIC8qIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXJlIHRvIG1hdGNoIHRoYXQgb2YgYSByZWFsIGlucHV0IGZpZWxkICovXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogOXB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIH1cblxuICAgIC5teF9Sb29tU2VhcmNoX3Nob3J0Y3V0UHJvbXB0IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFuZWwtYWN0aW9ucztcbiAgICAgICAgcGFkZGluZzogMnB4IDRweDtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBjb2xvcjogJGxpZ2h0LWZnLWNvbG9yO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgJi5teF9Sb29tU2VhcmNoX21pbmltaXplZCB7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgbWluLWhlaWdodDogMzJweDtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICAgICAgLm14X1Jvb21TZWFyY2hfaWNvbiB7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIHBhZGRpbmc6IDFweDtcbiAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tU2VhcmNoX3Nob3J0Y3V0UHJvbXB0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgLm14X1Jvb21TZWFyY2hfc3BvdGxpZ2h0VHJpZ2dlclRleHQge1xuICAgICAgICAgICAgY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Jvb21TZWFyY2hfc2hvcnRjdXRQcm9tcHQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Jvb21TZWFyY2hfaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Sb29tU3RhdHVzQmFyOm5vdCgubXhfUm9vbVN0YXR1c0Jhcl91bnNlbnRNZXNzYWdlcykge1xuICAgIG1hcmdpbi1sZWZ0OiA2NXB4O1xuICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG59XG5cbi5teF9Sb29tU3RhdHVzQmFyX3R5cGluZ0luZGljYXRvckF2YXRhcnMge1xuICAgIHdpZHRoOiA1MnB4O1xuICAgIG1hcmdpbi10b3A6IC0xcHg7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLm14X1Jvb21TdGF0dXNCYXJfdHlwaW5nSW5kaWNhdG9yQXZhdGFycyAubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMTJweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYmFja2dyb3VuZDtcbn1cblxuLm14X1Jvb21TdGF0dXNCYXJfdHlwaW5nSW5kaWNhdG9yQXZhdGFycyAubXhfQmFzZUF2YXRhcl9pbml0aWFsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFweDtcbiAgICBwYWRkaW5nLXRvcDogMXB4O1xufVxuXG4ubXhfUm9vbVN0YXR1c0Jhcl90eXBpbmdJbmRpY2F0b3JSZW1haW5pbmcge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2FjYWNhYztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4ubXhfUm9vbVN0YXR1c0Jhcl9zY3JvbGxEb3duSW5kaWNhdG9yIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcGFkZGluZy1sZWZ0OiAxcHg7XG59XG5cbi5teF9Sb29tU3RhdHVzQmFyX3VucmVhZE1lc3NhZ2VzQmFyIHtcbiAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICBjb2xvcjogJGFsZXJ0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm14X1Jvb21TdGF0dXNCYXJfY29ubmVjdGlvbkxvc3RCYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICBtYXJnaW4tdG9wOiAxOXB4O1xuICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG59XG5cbi5teF9Sb29tU3RhdHVzQmFyX3Vuc2VudE1lc3NhZ2VzIHtcbiAgICA+IGRpdltyb2xlPVwiYWxlcnRcIl0ge1xuICAgICAgICAvKiBjaGVhdCBzb21lIGJhc2ljIGFsaWdubWVudCAqL1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4taGVpZ2h0OiA3MHB4O1xuICAgICAgICBtYXJnaW46IDEycHg7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIH1cblxuICAgIC5teF9Sb29tU3RhdHVzQmFyX3Vuc2VudEJhZGdlIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuXG4gICAgICAgIC5teF9Ob3RpZmljYXRpb25CYWRnZSB7XG4gICAgICAgICAgICAvKiBPdmVycmlkZSBzaXppbmcgZnJvbSB0aGUgZGVmYXVsdCBiYWRnZSAqL1xuICAgICAgICAgICAgd2lkdGg6IDI0cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogMjRweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweCAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAubXhfTm90aWZpY2F0aW9uQmFkZ2VfY291bnQge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTZweCAhaW1wb3J0YW50OyAvKiBvdmVycmlkZSBkZWZhdWx0ICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfUm9vbVN0YXR1c0Jhcl91bnNlbnRUaXRsZSB7XG4gICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICB9XG5cbiAgICAubXhfUm9vbVN0YXR1c0Jhcl91bnNlbnREZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICB9XG5cbiAgICAubXhfUm9vbVN0YXR1c0Jhcl91bnNlbnRCdXR0b25CYXIge1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDIycHg7XG4gICAgICAgIGNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG5cbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7IC8qIDE4cHggZm9yIHRoZSBpY29uLCAycHggbWFyZ2luIHRvIHRleHQsIDEwcHggcmVndWxhciBwYWRkaW5nICovXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJHJlc2VuZC1idXR0b24tZGl2aWRlci1jb2xvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAxMHB4OyAvKiBpbnNldCBmb3IgcmVndWxhciBidXR0b24gcGFkZGluZyAqL1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgICAgICAgIHRvcDogNTAlOyAvKiB0ZXh0IHNpemVzIGFyZSBkeW5hbWljICovXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X1Jvb21TdGF0dXNCYXJfdW5zZW50Q2FuY2VsQWxsQnRuOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy90cmFzaGNhbi5zdmdcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfUm9vbVN0YXR1c0Jhcl91bnNlbnRSZXRyeSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzNHB4OyAvKiAyOHB4IGZyb20gYWJvdmUsIGJ1dCArNnB4IHRvIGFjY291bnQgZm9yIHRoZSB3aWRlciBpY29uICovXG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcmV0cnkuc3ZnXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9JbmxpbmVTcGlubmVyIHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgICAgIHRvcDogMXB4OyAvKiBqdXN0IHRvIGhlbHAgdGhlIHZlcnRpY2FsIGFsaWdubWVudCBiZSBzbGlnaHRseSBiZXR0ZXIgKi9cblxuICAgICAgICAgICAgJiArIHNwYW4ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsgLyogc2FtZSBtYXJnaW4vcGFkZGluZyBhcyB0aGUgcmlnaHRtb3N0IGJ1dHRvbiAqL1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfUm9vbVN0YXR1c0Jhcl9jb25uZWN0aW9uTG9zdEJhciBzdmcge1xuICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZmxvYXQ6IGxlZnQ7XG59XG5cbi5teF9Sb29tU3RhdHVzQmFyX2Nvbm5lY3Rpb25Mb3N0QmFyX3RpdGxlIHtcbiAgICBjb2xvcjogJGFsZXJ0O1xufVxuXG4ubXhfUm9vbVN0YXR1c0Jhcl9jb25uZWN0aW9uTG9zdEJhcl9kZXNjIHtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICBmb250LXNpemU6ICRmb250LTEzcHg7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuXG4ubXhfUm9vbVN0YXR1c0Jhcl9yZXNlbmRfbGluayB7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQgIWltcG9ydGFudDtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm14X1Jvb21TdGF0dXNCYXJfdHlwaW5nQmFyIHtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTUwcHg7XG5cbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubXhfTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0IHtcbiAgICAubXhfUm9vbVN0YXR1c0Jhcjpub3QoLm14X1Jvb21TdGF0dXNCYXJfdW5zZW50TWVzc2FnZXMpIHtcbiAgICAgICAgbWluLWhlaWdodDogNDBweDtcbiAgICB9XG5cbiAgICAubXhfUm9vbVN0YXR1c0Jhcl9pbmRpY2F0b3Ige1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIH1cblxuICAgIC5teF9Sb29tU3RhdHVzQmFyX3R5cGluZ0JhciB7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTQwcHg7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuOnJvb3Qge1xuICAgIC0tUm9vbVZpZXdfTWVzc2FnZUxpc3QtcGFkZGluZzogMThweDtcbn1cblxuLm14X1Jvb21WaWV3X3dyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4OiAxO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAvKiBDb250YWluIHRoZSBhbW91bnQgb2YgbGF5ZXJzIHJlbmRlcmVkIGJ5IGNvbnN0cmFpbmluZyB3aGF0IGFjdHVhbGx5IG5lZWRzIHJlLWxheWVyaW5nIHZpYSBjc3MgKi9cbiAgICBjb250YWluOiBzdHJpY3Q7XG59XG5cbi5teF9Sb29tVmlldyB7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4OiAxO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5teF9NYWluU3BsaXQge1xuICAgICAgICBmbGV4OiAxIDEgMDtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbXBvc2VyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICB9XG59XG5cbi5teF9Sb29tVmlld19hdXhQYW5lbF9oaWRkZW5IaWdobGlnaHRzIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHByaW1hcnktaGFpcmxpbmUtY29sb3I7XG4gICAgcGFkZGluZzogMTBweCAyNnB4O1xuICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXhfUm9vbVZpZXdfbWVzc2FnZVBhbmVsIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGZsZXg6IDEgMSAwO1xuICAgIG92ZXJmbG93LWFuY2hvcjogbm9uZTtcbn1cblxuLm14X1Jvb21WaWV3X21lc3NhZ2VQYW5lbFNlYXJjaFNwaW5uZXIge1xuICAgIGZsZXg6IDE7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy90eXBpbmctaW5kaWNhdG9yLTJ4LmdpZlwiKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgMzY3cHg7XG4gICAgYmFja2dyb3VuZC1zaXplOiAyNXB4O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGluZm8tcGxpbnRoLWZnLWNvbG9yO1xuICAgICAgICBtYXNrOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9zZWFyY2gtaW5wdXQuc3ZnXCIpO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2stc2l6ZTogNTBweDtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDI4NnB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgIH1cbn1cblxuLm14X1Jvb21WaWV3X2JvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcblxuICAgIC5teF9Sb29tVmlld19tZXNzYWdlUGFuZWwsXG4gICAgLm14X1Jvb21WaWV3X21lc3NhZ2VQYW5lbFNwaW5uZXIsXG4gICAgLm14X1Jvb21WaWV3X21lc3NhZ2VQYW5lbFNlYXJjaFNwaW5uZXIge1xuICAgICAgICBvcmRlcjogMjtcbiAgICB9XG5cbiAgICAubXhfUm9vbVZpZXdfdGltZWxpbmUge1xuICAgICAgICAvKiBvZmZzZXQgcGFyZW50IGZvciBteF9Sb29tVmlld190b3BVbnJlYWRNZXNzYWdlc0JhciAgKi9cbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29udGFpbmVyLWdhcC13aWR0aCkgLyAyKTtcbiAgICB9XG59XG5cbi5teF9Sb29tVmlld19zdGF0dXNBcmVhIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbGV4OiAwIDAgYXV0bztcblxuICAgIG1heC1oZWlnaHQ6IDBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLW91dDtcbn1cblxuLm14X1Jvb21WaWV3X3N0YXR1c0FyZWFfZXhwYW5kZWQge1xuICAgIG1heC1oZWlnaHQ6IDEwMHB4O1xufVxuXG4ubXhfUm9vbVZpZXdfc3RhdHVzQXJlYUJveCB7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG59XG5cbi5teF9Sb29tVmlld19zdGF0dXNBcmVhQm94X2xpbmUge1xuICAgIG1hcmdpbi1sZWZ0OiA2NXB4O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkcHJpbWFyeS1oYWlybGluZS1jb2xvcjtcbiAgICBoZWlnaHQ6IDFweDtcbn1cblxuLm14X1Jvb21WaWV3X21lc3NhZ2VMaXN0V3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubXhfUm9vbVZpZXdfc2VhcmNoUmVzdWx0c1BhbmVsIHtcbiAgICAubXhfUm9vbVZpZXdfbWVzc2FnZUxpc3RXcmFwcGVyIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICAgICAgID4gLm14X1Jvb21WaWV3X01lc3NhZ2VMaXN0ID4gbGkgPiBvbCB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG59XG5cbi5teF9Sb29tVmlld19lbXB0eSB7XG4gICAgZm9udC1zaXplOiAkZm9udC0xM3B4O1xuICAgIHBhZGRpbmc6IDAgMjRweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDMwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDgwcHg7IC8qIHZpc3VhbGx5IGNlbnRlciB0aGUgY29udGVudCAoaW50ZW50aW9uYWwgb2Zmc2V0KSAqL1xufVxuXG4ubXhfUm9vbVZpZXdfTWVzc2FnZUxpc3Qge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBwYWRkaW5nOiB2YXIoLS1Sb29tVmlld19NZXNzYWdlTGlzdC1wYWRkaW5nKTsgLyogbXhfUHJvZmlsZVJlc2l6ZXIgZGVwZW5kcyBvbiB0aGlzIHZhbHVlICovXG4gICAgbWFyZ2luOiAwO1xuICAgIC8qIG5lZWRlZCBhcyBtaW4taGVpZ2h0IGlzIHNldCB0byBjbGllbnRIZWlnaHQgaW4gU2Nyb2xsUGFuZWxcbiAgICB0byBwcmV2ZW50IHNocmlua2luZyB3aGVuIFdob0lzVHlwaW5nVGlsZSBpcyBoaWRkZW4gKi9cbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgbGkge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG5cbiAgICAubXhfU2Nyb2xsUGFuZWwgJiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblxuICAgICAgICBjb250ZW50LXZpc2liaWxpdHk6IGF1dG87XG4gICAgICAgIGNvbnRhaW4taW50cmluc2ljLXNpemU6IDUwcHg7XG4gICAgfVxuXG4gICAgLm14X1Jvb21WaWV3LS1sb2NhbCAubXhfU2Nyb2xsUGFuZWwgJiB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cbn1cblxuLyogUm9vbXMgd2l0aCBpbW1lcnNpdmUgY29udGVudCAqL1xuLm14X1Jvb21WaWV3X2ltbWVyc2l2ZSAubXhfUm9vbUhlYWRlcl93cmFwcGVyIHtcbiAgICBib3JkZXI6IHVuc2V0O1xufVxuXG4ubXhfUm9vbVZpZXdfaW5DYWxsIHtcbiAgICAubXhfUm9vbVZpZXdfc3RhdHVzQXJlYUJveF9saW5lIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGhlaWdodDogMHB4O1xuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29tcG9zZXJfd3JhcHBlciB7XG4gICAgICAgIGJvcmRlci10b3A6IDJweCBoaWRkZW47XG4gICAgICAgIHBhZGRpbmctdG9wOiAxcHg7XG4gICAgfVxufVxuXG4ubXhfTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0IHtcbiAgICAubXhfUm9vbVZpZXdfTWVzc2FnZUxpc3Qge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1Jvb21WaWV3X3N0YXR1c0FyZWFCb3gge1xuICAgICAgICBtaW4taGVpZ2h0OiA0MnB4O1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBteF9JbmRpY2F0b3JfcHVsc2Uge1xuICAgIDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTtcbiAgICB9XG5cbiAgICA3MCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBteF9JbmRpY2F0b3JfcHVsc2Vfc2hhZG93IHtcbiAgICAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICA3MCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDIuMik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxufVxuXG4ubXhfSW5kaWNhdG9yIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IC0zcHg7XG4gICAgdG9wOiAtM3B4O1xuICAgIHdpZHRoOiB2YXIoLS1Sb29tSGVhZGVyLWluZGljYXRvci1kb3Qtc2l6ZSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1Sb29tSGVhZGVyLWluZGljYXRvci1kb3Qtc2l6ZSk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1Sb29tSGVhZGVyLWluZGljYXRvci1wdWxzZUNvbG9yKSwgMSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKHZhcigtLVJvb21IZWFkZXItaW5kaWNhdG9yLXB1bHNlQ29sb3IpLCAxKTtcbiAgICBhbmltYXRpb246IG14X0luZGljYXRvcl9wdWxzZSAycyBpbmZpbml0ZTtcbiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IG14X0luZGljYXRvcl9wdWxzZV9zaGFkb3c7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogaW5oZXJpdDtcbiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5oZXJpdDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiBpbmhlcml0O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TZWFyY2hCb3gge1xuICAgIGZsZXg6IDEgMSAwO1xuICAgIG1pbi13aWR0aDogMDtcblxuICAgICYubXhfU2VhcmNoQm94X2JsdXJyZWQ6bm90KDpob3Zlcikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAubXhfU2VhcmNoQm94X2Nsb3NlQnV0dG9uIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ljb25zLWNsb3NlLnN2Z1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiA5cHg7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NwYWNlUm9vbVZpZXdfbGFuZGluZyB7XG4gICAgLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rIHtcbiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIH1cblxuICAgIC5teF9TZWFyY2hCb3gge1xuICAgICAgICBtYXJnaW46IDI0cHggMCAxNnB4O1xuICAgIH1cblxuICAgIC5teF9TcGFjZUhpZXJhcmNoeV9ub1Jlc3VsdHMge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1NwYWNlSGllcmFyY2h5X2xpc3RIZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWZsb3c6IHdyYXA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcblxuICAgICAgICAubXhfU3BhY2VIaWVyYXJjaHlfbGlzdEhlYWRlcl9oZWFkZXIge1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW4tc3RhcnQ6IDE7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1NwYWNlSGllcmFyY2h5X2xpc3RIZWFkZXJfYnV0dG9ucyB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbi1zdGFydDogMjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWZsb3c6IHdyYXA7XG4gICAgICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAzMnB4O1xuXG4gICAgICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfZGFuZ2VyX291dGxpbmUsXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeV9vdXRsaW5lIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDNweCAxMnB4OyAvKiB0byBhY2NvdW50IGZvciB0aGUgMXB4IGJvcmRlciAqL1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1NwYWNlSGllcmFyY2h5X2Vycm9yIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBjb2xvcjogJGFsZXJ0O1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xOHB4O1xuICAgICAgICBtYXJnaW46IDIwcHggYXV0byAxMnB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy93YXJuaW5nLWJhZGdlLnN2Z1wiKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1NwYWNlSGllcmFyY2h5X3Jvb21Db3VudCB7XG4gICAgICAgID4gaDMge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMThweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMnB4O1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICA+IHNwYW4ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TcGFjZUhpZXJhcmNoeV9zdWJzcGFjZSB7XG4gICAgICAgIC5teF9CYXNlQXZhdGFyX2ltYWdlIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TcGFjZUhpZXJhcmNoeV9zdWJzcGFjZV90b2dnbGUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IC0xcHg7XG4gICAgICAgIHRvcDogMTBweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogMTZweDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9jaGV2cm9uLWRvd24uc3ZnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9TcGFjZUhpZXJhcmNoeV9zdWJzcGFjZV90b2dnbGVfc2hvd246OmJlZm9yZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TcGFjZUhpZXJhcmNoeV9zdWJzcGFjZV9jaGlsZHJlbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xuICAgIH1cblxuICAgIC5teF9TcGFjZUhpZXJhcmNoeV9saXN0IHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIGxpLm14X1NwYWNlSGllcmFyY2h5X3Jvb21UaWxlV3JhcHBlciB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgICAgICAgICAubXhfU3BhY2VIaWVyYXJjaHlfcm9vbVRpbGUge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgICAgIGdhcDogNnB4IDEycHg7XG5cbiAgICAgICAgICAgICAgICAubXhfU3BhY2VIaWVyYXJjaHlfcm9vbVRpbGVfaXRlbSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE4cHg7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjBweCBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBnYXA6IDZweCA4cHg7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDE7IC8qIHdyYXAgYWN0aW9uIGJ1dHRvbnMgKi9cblxuICAgICAgICAgICAgICAgICAgICAubXhfU3BhY2VIaWVyYXJjaHlfcm9vbVRpbGVfYXZhdGFyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAubXhfU3BhY2VIaWVyYXJjaHlfcm9vbVRpbGVfbmFtZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAubXhfSW5mb1Rvb2x0aXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAubXhfU3BhY2VIaWVyYXJjaHlfcm9vbVRpbGVfam9pbmVkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm14X0luZm9Ub29sdGlwX2ljb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC5teF9JbmZvVG9vbHRpcCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAubXhfU3BhY2VIaWVyYXJjaHlfcm9vbVRpbGVfam9pbmVkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTZweDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogLTJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogLTRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L2NoZWNrbWFyay5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X1NwYWNlSGllcmFyY2h5X3Jvb21UaWxlX2luZm8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE4cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9TcGFjZUhpZXJhcmNoeV9hY3Rpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLWdhcDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA0cHggMTZweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfZGFuZ2VyX291dGxpbmUsXG4gICAgICAgICAgICAgICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeV9vdXRsaW5lIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweCAxNnB4OyAvKiB0byBhY2NvdW50IGZvciB0aGUgMXB4IGJvcmRlciAqL1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0NoZWNrYm94IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzcGFjZVBhbmVsLWJnLWNvbG9yO1xuXG4gICAgICAgICAgICAgICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLm14X1NwYWNlSGllcmFyY2h5X2pvaW5pbmcge1xuICAgICAgICAgICAgICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNHB4IDE4cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3BhY2VIaWVyYXJjaHlfcm9vbVRpbGUsXG4gICAgLm14X1NwYWNlSGllcmFyY2h5X3N1YnNwYWNlX2NoaWxkcmVuIHtcbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3BhY2VQYW5lbC1iZy1jb2xvcjtcbiAgICAgICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBsZWZ0OiA2cHg7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3BhY2VIaWVyYXJjaHlfYWN0aW9ucyB7XG4gICAgICAgIC5teF9TcGFjZUhpZXJhcmNoeV9hY3Rpb25zVGV4dCB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgPiBociB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTQxLCAxNTEsIDE2NSwgMC4yKTtcbiAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgfVxuXG4gICAgLm14X1NwYWNlSGllcmFyY2h5X2NyZWF0ZVJvb20ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiAxNnB4IGF1dG8gMDtcbiAgICAgICAgd2lkdGg6IG1heC1jb250ZW50O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TcGFjZVBhbmVsIHtcbiAgICAtLWFjdGl2ZUJhY2tncm91bmQtY29sb3I6ICRwYW5lbC1hY3Rpb25zO1xuICAgIC0tYWN0aXZlQm9yZGVyLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIC0tYWN0aXZlQm9yZGVyLXRyYW5zcGFyZW50LWdhcDogMXB4O1xuICAgIC0tZ3V0dGVyU2l6ZTogMTZweDtcbiAgICAtLWhlaWdodC1uZXN0ZWQ6IDI0cHg7XG4gICAgLS1oZWlnaHQtdG9wTGV2ZWw6IDMycHg7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3BhY2VQYW5lbC1iZy1jb2xvcjtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgLyogRml4IGZvciB0aGUgYmx1cnJlZCBhdmF0YXItYmFja2dyb3VuZCAqL1xuICAgIHotaW5kZXg6IDE7XG5cbiAgICAvKiBDcmVhdGUgYW5vdGhlciBmbGV4Ym94IHNvIHRoZSBQYW5lbCBmaWxscyB0aGUgY29udGFpbmVyICovXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLm14X1NwYWNlUGFuZWxfdG9nZ2xlQ29sbGFwc2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgIHRvcDogMTlweDsgLyogdi1hbGlnbiB3aXRoIGF2YXRhciAqL1xuICAgICAgICByaWdodDogLThweDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvY2hldnJvbi1kb3duLnN2Z1wiKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCguZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyIDFweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuZXhwYW5kZWQ6OmJlZm9yZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIC5teF9TcGFjZVBhbmVsX3RvZ2dsZUNvbGxhcHNlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAubXhfU3BhY2VCdXR0b25fdG9nZ2xlQ29sbGFwc2Uge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLm14X1NwYWNlSXRlbV9kcmFnZ2luZyB7XG4gICAgICAgIC5teF9TcGFjZUJ1dHRvbl90b2dnbGVDb2xsYXBzZSB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3BhY2VJdGVtIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGZsZXgtZmxvdzogd3JhcDtcblxuICAgICAgICAmLm14X1NwYWNlSXRlbV9uYXJyb3cge1xuICAgICAgICAgICAgYWxpZ24tc2VsZjogYmFzZWxpbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3BhY2VJdGVtLmNvbGxhcHNlZCB7XG4gICAgICAgICYgPiAubXhfU3BhY2VCdXR0b24gPiAubXhfU3BhY2VCdXR0b25fdG9nZ2xlQ29sbGFwc2Uge1xuICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwIC0xMHB4O1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYgPiAubXhfU3BhY2VUcmVlTGV2ZWwge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TcGFjZUl0ZW1fbmV3IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5teF9TcGFjZUl0ZW06bm90KC5oYXNTdWJTcGFjZXMpID4gLm14X1NwYWNlQnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHZhcigtLWd1dHRlclNpemUpO1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgfVxuXG4gICAgLm14X1NwYWNlQnV0dG9uIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiA0cHggNHB4IDRweCAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICYubXhfU3BhY2VCdXR0b25fYWN0aXZlIHtcbiAgICAgICAgICAgICY6bm90KC5teF9TcGFjZUJ1dHRvbl9uYXJyb3cpIC5teF9TcGFjZUJ1dHRvbl9zZWxlY3Rpb25XcmFwcGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY3RpdmVCYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9TcGFjZUJ1dHRvbl9uYXJyb3cgLm14X1NwYWNlQnV0dG9uX3NlbGVjdGlvbldyYXBwZXIge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLWFjdGl2ZUJvcmRlci10cmFuc3BhcmVudC1nYXApO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogM3B4IHZhcigtLWFjdGl2ZUJvcmRlci1jb2xvcikgc29saWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU3BhY2VCdXR0b25fc2VsZWN0aW9uV3JhcHBlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICAgICAgcGFkZGluZzogNHB4O1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDMycHgpO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1NwYWNlQnV0dG9uX25hbWUge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMThweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcGFjZUJ1dHRvbl90b2dnbGVDb2xsYXBzZSB7XG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tZ3V0dGVyU2l6ZSk7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgICAgICAgICBtaW4td2lkdGg6IHZhcigtLWd1dHRlclNpemUpO1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1zaXplOiAyMHB4O1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvY2hldnJvbi1kb3duLnN2Z1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcGFjZUJ1dHRvbl9pY29uIHtcbiAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1oZWlnaHQtdG9wTGV2ZWwpO1xuICAgICAgICAgICAgbWluLXdpZHRoOiB2YXIoLS1oZWlnaHQtdG9wTGV2ZWwpO1xuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1oZWlnaHQtdG9wTGV2ZWwpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1oZWlnaHQtdG9wTGV2ZWwpO1xuICAgICAgICAgICAgICAgIGhlaWdodDogdmFyKC0taGVpZ2h0LXRvcExldmVsKTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IDE4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X1NwYWNlQnV0dG9uX2hvbWUsXG4gICAgICAgICYubXhfU3BhY2VCdXR0b25fZmF2b3VyaXRlcyxcbiAgICAgICAgJi5teF9TcGFjZUJ1dHRvbl9wZW9wbGUsXG4gICAgICAgICYubXhfU3BhY2VCdXR0b25fb3JwaGFucyB7XG4gICAgICAgICAgICAubXhfU3BhY2VCdXR0b25faWNvbiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbmVsLWFjdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9TcGFjZUJ1dHRvbl9ob21lIC5teF9TcGFjZUJ1dHRvbl9pY29uOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2hvbWUuc3ZnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9TcGFjZUJ1dHRvbl9mYXZvdXJpdGVzIC5teF9TcGFjZUJ1dHRvbl9pY29uOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L2Zhdm9yaXRlLnN2Z1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfU3BhY2VCdXR0b25fcGVvcGxlIC5teF9TcGFjZUJ1dHRvbl9pY29uOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vbWVtYmVycy5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X1NwYWNlQnV0dG9uX29ycGhhbnMgLm14X1NwYWNlQnV0dG9uX2ljb246OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3QvaGFzaC1jaXJjbGUuc3ZnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9TcGFjZUJ1dHRvbl9uZXcgLm14X1NwYWNlQnV0dG9uX2ljb24ge1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9wbHVzLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDsgLyogVE9ETyB0cmFuc2l0aW9uICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X1NwYWNlQnV0dG9uX25ld0NhbmNlbCAubXhfU3BhY2VCdXR0b25faWNvbjo6YmVmb3JlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9CYXNlQXZhdGFyX2ltYWdlIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcGFjZUJ1dHRvbl9tZW51QnV0dG9uIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgbWluLXdpZHRoOiAyMHB4OyAvKiB5YXkgZmxleCAqL1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IDRweDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB0b3A6IDNweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAycHg7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY29udGV4dC1tZW51LnN2Z1wiKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1NwYWNlVHJlZUxldmVsIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgbWF4LXdpZHRoOiAyNTBweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAgICAgLm14X0Jhc2VBdmF0YXI6bm90KC5teF9Vc2VyTWVudV91c2VyQXZhdGFyX0Jhc2VBdmF0YXIpIC5teF9CYXNlQXZhdGFyX2luaXRpYWwge1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwYW5lbC1hY3Rpb25zO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4ICFpbXBvcnRhbnQ7IC8qIG92ZXJyaWRlIGlubGluZSBzdHlsZSAqL1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xOHB4O1xuXG4gICAgICAgICAgICAmICsgLm14X0Jhc2VBdmF0YXJfaW1hZ2Uge1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcGFjZVRyZWVMZXZlbCB7XG4gICAgICAgICAgICAvLyBJbmRlbnQgc3Vic3BhY2VzXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3BhY2VCdXR0b25fYXZhdGFyV3JhcHBlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICAubXhfU3BhY2VQYW5lbF9iYWRnZUNvbnRhaW5lciB7XG4gICAgICAgIC8qIENyZWF0ZSBhIGZsZXhib3ggdG8gbWFrZSBhbGlnbmluZyBkb3QgYmFkZ2VzIGVhc2llciAqL1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAtM3B4O1xuICAgICAgICB0b3A6IC0zcHg7XG5cbiAgICAgICAgLm14X05vdGlmaWNhdGlvbkJhZGdlIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAycHg7IC8qIGNlbnRlcmluZyAqL1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Ob3RpZmljYXRpb25CYWRnZV9kb3Qge1xuICAgICAgICAgICAgLyogbWFrZSB0aGUgc21hbGxlciBkb3Qgb2NjdXB5IHRoZSBzYW1lIHdpZHRoIGZvciBjZW50ZXJpbmcgKi9cbiAgICAgICAgICAgIG1hcmdpbjogMCAtMXB4IDAgMDtcbiAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICRzcGFjZVBhbmVsLWJnLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X05vdGlmaWNhdGlvbkJhZGdlXzJjaGFyLFxuICAgICAgICAubXhfTm90aWZpY2F0aW9uQmFkZ2VfM2NoYXIge1xuICAgICAgICAgICAgbWFyZ2luOiAtNXB4IC01cHggMCAwO1xuICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgJHNwYWNlUGFuZWwtYmctY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3BhY2VCdXR0b246aG92ZXIsXG4gICAgLm14X1NwYWNlQnV0dG9uOmZvY3VzLXdpdGhpbixcbiAgICAubXhfU3BhY2VCdXR0b25faGFzTWVudU9wZW4ge1xuICAgICAgICAmOm5vdCgubXhfU3BhY2VCdXR0b25fbmFycm93KTpub3QoLm14X1NwYWNlQnV0dG9uX2ludml0ZSkgLm14X1NwYWNlQnV0dG9uX21lbnVCdXR0b24ge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3BhY2VJdGVtOm5vdCgubXhfU3BhY2VJdGVtX25ldykge1xuICAgICAgICAubXhfU3BhY2VCdXR0b246aG92ZXIsXG4gICAgICAgIC5teF9TcGFjZUJ1dHRvbjpmb2N1cy13aXRoaW4sXG4gICAgICAgIC5teF9TcGFjZUJ1dHRvbl9oYXNNZW51T3BlbiB7XG4gICAgICAgICAgICAmOm5vdCgubXhfU3BhY2VCdXR0b25fbmFycm93KTpub3QoLm14X1NwYWNlQnV0dG9uX2ludml0ZSkgLm14X1NwYWNlQnV0dG9uX25hbWUge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gNTZweCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiByb290IHNwYWNlIGJ1dHRvbnMgYXJlIGJpZ2dlciBhbmQgbm90IGluZGVudGVkICovXG4gICAgJiA+IC5teF9BdXRvSGlkZVNjcm9sbGJhciB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIHBhZGRpbmc6IDAgOHB4IDE2cHggMDtcblxuICAgICAgICAmID4gLm14X1NwYWNlQnV0dG9uIHtcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0taGVpZ2h0LXRvcExldmVsKTtcblxuICAgICAgICAgICAgJi5teF9TcGFjZUJ1dHRvbl9hY3RpdmU6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1oZWlnaHQtdG9wTGV2ZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJiA+IHVsIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfSW5kaWNhdG9yU2Nyb2xsYmFyX3RvcE92ZXJmbG93IHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50LCBibGFjayA1JSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0luZGljYXRvclNjcm9sbGJhcl9ib3R0b21PdmVyZmxvdyB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBibGFjaywgYmxhY2sgOTUlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0luZGljYXRvclNjcm9sbGJhcl90b3BPdmVyZmxvdy5teF9JbmRpY2F0b3JTY3JvbGxiYXJfYm90dG9tT3ZlcmZsb3cge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdHJhbnNwYXJlbnQsIGJsYWNrIDUlLCBibGFjayA5NSUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Vc2VyTWVudSB7XG4gICAgICAgIHBhZGRpbmc6IDAgMnB4IDhweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hcmdpbjogMTJweCAxNHB4IDRweCAxOHB4O1xuICAgIH1cbn1cblxuLm14X1NwYWNlUGFuZWxfY29udGV4dE1lbnUge1xuICAgIG1heC13aWR0aDogMzYwcHg7XG5cbiAgICAubXhfU3BhY2VQYW5lbF9jb250ZXh0TWVudV9oZWFkZXIge1xuICAgICAgICBtYXJnaW46IDEycHggMTZweCAxMnB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xOHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAubXhfU3BhY2VQYW5lbF9pY29uSG9tZTo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2hvbWUuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9TcGFjZVBhbmVsX2ljb25JbnZpdGU6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2ludml0ZS5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1NwYWNlUGFuZWxfaWNvblNldHRpbmdzOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3Muc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9TcGFjZVBhbmVsX2ljb25MZWF2ZTo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2xlYXZlLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfU3BhY2VQYW5lbF9pY29uTWVtYmVyczo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vbWVtYmVycy5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1NwYWNlUGFuZWxfaWNvblBsdXM6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9wbHVzLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfU3BhY2VQYW5lbF9pY29uRXhwbG9yZTo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L2hhc2gtc2VhcmNoLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfU3BhY2VQYW5lbF9pY29uUHJlZmVyZW5jZXM6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9zZXR0aW5ncy9wcmVmZXJlbmNlLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfU3BhY2VQYW5lbF9ub0ljb24ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICYgKyAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9sYWJlbCB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweCAhaW1wb3J0YW50OyAvKiBvdmVycmlkZSBkZWZhdWx0IGljb25pemVkIGxhYmVsIHN0eWxlIHRvIGFsaWduIHdpdGggaGVhZGVyICovXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3BhY2VQYW5lbF9jb250ZXh0TWVudV9zZXBhcmF0b3JMYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTJweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgLy9tYXJnaW4tbGVmdDogOHB4O1xuICAgIH1cbn1cblxuLm14X1NwYWNlUGFuZWxfc2hhcmVQdWJsaWNTcGFjZSB7XG4gICAgbWFyZ2luOiAwO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuQGRlZmluZS1taXhpbiBTcGFjZVBpbGxCdXR0b24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAxNnB4IDMycHggMTZweCA3MnB4O1xuICAgIHdpZHRoOiA0MzJweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTdweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIG1hcmdpbjogMjBweCAwO1xuXG4gICAgPiBkaXYge1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIHRvcDogMTdweDtcbiAgICAgICAgbGVmdDogMjBweDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXNpemU6IDI0cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICRhY2NlbnQ7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICA+IHNwYW4ge1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5AZGVmaW5lLW1peGluIFNwYWNlUGlsbEJ1dHRvbkRpc2FibGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAxNnB4IDMycHggMTZweCA3MnB4O1xuICAgIHdpZHRoOiA0MzJweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTdweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIG1hcmdpbjogMjBweCAwO1xuXG4gICAgPiBkaXYge1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIHRvcDogMTdweDtcbiAgICAgICAgbGVmdDogMjBweDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXNpemU6IDI0cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgIH1cbn1cbi5teF9TcGFjZVJvb21WaWV3IHtcbiAgICAtLWlubmVyV2lkdGg6IDQyOHB4O1xuXG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBmbGV4OiAxO1xuXG4gICAgLm14X01haW5TcGxpdCA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmc6IDgwcHggNjBweDtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMjRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcGFjZVJvb21WaWV3X2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgICAgICAgIG1heC13aWR0aDogdmFyKC0taW5uZXJXaWR0aCk7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQWRkRXhpc3RpbmdUb1NwYWNlIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogdmFyKC0taW5uZXJXaWR0aCk7XG5cbiAgICAgICAgICAgIC5teF9BZGRFeGlzdGluZ1RvU3BhY2VfY29udGVudCB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzYwcHgpO1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1NwYWNlUm9vbVZpZXdfYnV0dG9ucyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDQ0cHg7XG4gICAgICAgICAgICB3aWR0aDogdmFyKC0taW5uZXJXaWR0aCk7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsgLyogYnV0dG9uIGFsaWdubWVudCByaWdodCAqL1xuXG4gICAgICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9oYXNLaW5kIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggMjJweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5wdXQubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lOyAvKiBvdmVycmlkZSBkZWZhdWx0IHN0eWxlcyAqL1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0ZpZWxkIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogdmFyKC0taW5uZXJXaWR0aCk7XG5cbiAgICAgICAgICAgICYgKyAubXhfRmllbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDI4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU3BhY2VSb29tVmlld19lcnJvclRleHQge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgY29sb3I6ICRhbGVydDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9kaXNhYmxlZCB7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1NwYWNlUm9vbVZpZXdfbGFuZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIG1pbi13aWR0aDogMDtcblxuICAgICAgICAubXhfU3BhY2VSb29tVmlld19sYW5kaW5nX2hlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgICAgICAgICAubXhfQmFzZUF2YXRhciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDgwcHg7XG5cbiAgICAgICAgICAgICAgICAubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1NwYWNlUm9vbVZpZXdfbGFuZGluZ19uYW1lIHtcbiAgICAgICAgICAgIG1hcmdpbjogMjRweCAwIDE2cHg7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuXG4gICAgICAgICAgICA+IHNwYW4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgICAgICAgICAgICAgZ2FwOiAxMnB4IDA7XG5cbiAgICAgICAgICAgICAgICBoMSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1NwYWNlUm9vbVZpZXdfbGFuZGluZ19pbnZpdGVyIHtcbiAgICAgICAgICAgICAgICAubXhfQmFzZUF2YXRhciB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcGFjZVJvb21WaWV3X2xhbmRpbmdfaW5mb0JhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuXG4gICAgICAgICAgICAubXhfU3BhY2VSb29tVmlld19sYW5kaW5nX2luZm9CYXJfaW50ZXJhY3RpdmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZ2FwOiAxMnB4IDEycHg7XG5cbiAgICAgICAgICAgICAgICAubXhfRmFjZVBpbGUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0ZhY2VQaWxlX2ZhY2VzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9TcGFjZVJvb21WaWV3X2xhbmRpbmdfaW52aXRlQnV0dG9uLFxuICAgICAgICAgICAgICAgIC5teF9TcGFjZVJvb21WaWV3X2xhbmRpbmdfc2V0dGluZ3NCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm14X1NwYWNlUm9vbVZpZXdfbGFuZGluZ19pbnZpdGVCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA0cHggMThweCA0cHggNDBweDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBtaW4tY29udGVudDtcblxuICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogOHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOyAvKiB3aGl0ZSBpY29uIGZpbGwgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2ludml0ZS5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubXhfU3BhY2VSb29tVmlld19sYW5kaW5nX3NldHRpbmdzQnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjRweDtcblxuICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3Muc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1NwYWNlUm9vbVZpZXdfbGFuZGluZ190b3BpYyB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TZWFyY2hCb3gge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgMjBweDtcbiAgICAgICAgICAgIGZsZXg6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3BhY2VSb29tVmlld19wcml2YXRlU2NvcGUge1xuICAgICAgICA+IC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgIEBtaXhpbiBTcGFjZVBpbGxCdXR0b247XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU3BhY2VSb29tVmlld19wcml2YXRlU2NvcGVfanVzdE1lQnV0dG9uOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vbWVtYmVycy5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU3BhY2VSb29tVmlld19wcml2YXRlU2NvcGVfbWVBbmRNeVRlYW1tYXRlc0J1dHRvbjo6YmVmb3JlIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9ncm91cC1tZW1iZXJzLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TcGFjZVJvb21WaWV3X2ludml0ZVRlYW1tYXRlcyB7XG4gICAgICAgIC5teF9TcGFjZVJvb21WaWV3X2ludml0ZVRlYW1tYXRlc19idXR0b25zIHtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyOHB4O1xuXG4gICAgICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDMycHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7IC8qIHRvIGNlbnRlciBpY29ucyAqL1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJiArIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDMycHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfU3BhY2VSb29tVmlld19pbnZpdGVUZWFtbWF0ZXNfaW52aXRlRGlhbG9nQnV0dG9uIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGFjY2VudDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2ludml0ZS5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NwbGFzaFBhZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoXG4gICAgICAgICAgICAgICAgNTMuODUlIDY2Ljc1JSBhdCA4Ny41NSUgMCUsXG4gICAgICAgICAgICAgICAgaHNsYSgyNTBkZWcsIDc2JSwgNzElLCAwLjI2MSkgMCUsXG4gICAgICAgICAgICAgICAgaHNsYSgyNTBkZWcsIDEwMCUsIDg4JSwgMCkgMTAwJVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCg0MS45MyUgNDEuOTMlIGF0IDAlIDAlLCBoc2xhKDIyMmRlZywgMjklLCAyMCUsIDAuMjgpIDAlLCBoc2xhKDI1MGRlZywgMTAwJSwgODglLCAwKSAxMDAlKSxcbiAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgxMDAlIDEwMCUgYXQgMCUgMCUsIGhzbGEoMjUwZGVnLCAxMDAlLCA4OCUsIDAuMTc0KSAwJSwgaHNsYSgwZGVnLCAxMDAlLCA4NiUsIDApIDEwMCUpLFxuICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDEwNi4zNSUgOTYuMjYlIGF0IDEwMCUgMCUsIGhzbGEoMjUwZGVnLCAxMDAlLCA4OCUsIDAuNCkgMCUsIGhzbGEoMTY3ZGVnLCA3NiUsIDgyJSwgMCkgMTAwJSk7XG4gICAgICAgIC8qIGJsdXIgdG8gcmVkdWNlIGNvbG9yIGJhbmRpbmcgaXNzdWVzIGR1ZSB0byBhbHBoYS1ibGVuZGluZyBtdWx0aXBsZSBncmFkaWVudHMgKi9cbiAgICAgICAgZmlsdGVyOiBibHVyKDhweCk7XG4gICAgICAgIGluc2V0OiAtOXB4O1xuICAgICAgICBtYXNrOlxuICAgICAgICAgICAgLyogbWFzayB0byBkaXRoZXIgcmVzdWx0aW5nIGNvbWJpbmVkIGdyYWRpZW50ICovIHVybChcIiQocmVzKS9pbWcvbm9pc2UucG5nXCIpLFxuICAgICAgICAgICAgLyogZ3JhZGllbnQgdG8gYXBwbHkgZGlmZmVyZW50IGFtb3VudHMgb2YgZGl0aGVyaW5nIHRvIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgZ3JhZGllbnQgKi9cbiAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAgICAgICAgIHRvIGJvdHRvbSxcbiAgICAgICAgICAgICAgICAgICAgLyogMTAlIGRpdGhlcmluZyBhdCB0aGUgdG9wICovIHJnYmEoMCwgMCwgMCwgMC45KSAyMCUsXG4gICAgICAgICAgICAgICAgICAgIC8qIDgwJSBkaXRoZXJpbmcgYXQgdGhlIGJvdHRvbSAqLyByZ2JhKDAsIDAsIDAsIDAuMikgMTAwJVxuICAgICAgICAgICAgICAgICk7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3IFRyYXZpcyBSYWxzdG9uXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZFxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVGFiYmVkVmlldyB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDAgMCAwIDE2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGluc2V0OiAwO1xuICAgIG1hcmdpbi10b3A6IDhweDtcbn1cblxuLm14X1RhYmJlZFZpZXdfdGFic09uTGVmdCB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgICAubXhfVGFiYmVkVmlld190YWJMYWJlbHMge1xuICAgICAgICB3aWR0aDogMTcwcHg7XG4gICAgICAgIG1heC13aWR0aDogMTcwcHg7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgbWFyZ2luOiAwOyAvKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmFsdWUgKi9cbiAgICAgICAgcGFkZGluZzogMDsgLyogUmVtb3ZlIHRoZSBkZWZhdWx0IHZhbHVlICovXG4gICAgfVxuXG4gICAgLm14X1RhYmJlZFZpZXdfdGFiUGFuZWwge1xuICAgICAgICBtYXJnaW4tbGVmdDogMjQwcHg7IC8qIDE3MHB4IHNpZGViYXIgKyA3MHB4IHBhZGRpbmcgKi9cbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG5cbiAgICAubXhfVGFiYmVkVmlld190YWJMYWJlbF9hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgICAgICBjb2xvcjogJHRhYi1sYWJlbC1hY3RpdmUtZmctY29sb3I7XG4gICAgfVxuXG4gICAgLm14X1RhYmJlZFZpZXdfdGFiTGFiZWxfYWN0aXZlIC5teF9UYWJiZWRWaWV3X21hc2tlZEljb246OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWItbGFiZWwtYWN0aXZlLWZnLWNvbG9yO1xuICAgIH1cblxuICAgIC5teF9UYWJiZWRWaWV3X21hc2tlZEljb24ge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgfVxuXG4gICAgLm14X1RhYmJlZFZpZXdfbWFza2VkSWNvbjo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1zaXplOiAxNnB4O1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgIH1cbn1cblxuLm14X1RhYmJlZFZpZXdfdGFic09uVG9wIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLm14X1RhYmJlZFZpZXdfdGFiTGFiZWxzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIH1cblxuICAgIC5teF9UYWJiZWRWaWV3X3RhYkxhYmVsIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDUycHg7XG5cbiAgICAgICAgLm14X1RhYmJlZFZpZXdfdGFiTGFiZWxfdGV4dCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfVGFiYmVkVmlld190YWJQYW5lbCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgfVxuXG4gICAgLm14X1RhYmJlZFZpZXdfdGFiTGFiZWxfYWN0aXZlIHtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIC5teF9UYWJiZWRWaWV3X3RhYkxhYmVsX3RleHQge1xuICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfVGFiYmVkVmlld190YWJMYWJlbF9hY3RpdmUgLm14X1RhYmJlZFZpZXdfbWFza2VkSWNvbjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICB9XG5cbiAgICAubXhfVGFiYmVkVmlld19tYXNrZWRJY29uIHtcbiAgICAgICAgd2lkdGg6IDIycHg7XG4gICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gICAgfVxuXG4gICAgLm14X1RhYmJlZFZpZXdfbWFza2VkSWNvbjo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1zaXplOiAyMnB4O1xuICAgICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICAgICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgIH1cbn1cblxuLm14X1RhYmJlZFZpZXdfdGFiTGFiZWxzIHtcbiAgICBjb2xvcjogJHRhYi1sYWJlbC1mZy1jb2xvcjtcbn1cblxuLm14X1RhYmJlZFZpZXdfdGFiTGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgZm9udC1zaXplOiAkZm9udC0xM3B4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm14X1RhYmJlZFZpZXdfbWFza2VkSWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXhfVGFiYmVkVmlld19tYXNrZWRJY29uOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaWNvbi1idXR0b24tY29sb3I7XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgY29udGVudDogXCJcIjtcbn1cblxuLm14X1RhYmJlZFZpZXdfdGFiTGFiZWxfdGV4dCB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLm14X1RhYmJlZFZpZXdfdGFiUGFuZWwge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1pbi1oZWlnaHQ6IDA7IC8qIGZpcmVmb3ggKi9cbn1cblxuLm14X1RhYmJlZFZpZXdfdGFiUGFuZWxDb250ZW50IHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgbWluLWhlaWdodDogMDsgLyogZmlyZWZveCAqL1xufVxuXG5cbi8vUmVzcG9uc2l2ZSBkZXNpZ25cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpe1xuICAgIC5teF9UYWJiZWRWaWV3X3RhYkxhYmVsX3RleHR7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5teF9UYWJiZWRWaWV3X3RhYnNPbkxlZnQgLm14X1RhYmJlZFZpZXdfbWFza2VkSWNvbntcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG4gICAgfVxuICAgIC5teF9UYWJiZWRWaWV3X3RhYnNPbkxlZnQgLm14X1RhYmJlZFZpZXdfdGFiUGFuZWwge1xuICAgICAgICBtYXJnaW4tbGVmdDogNDVweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubXhfVGFiYmVkVmlld190YWJzT25MZWZ0IC5teF9UYWJiZWRWaWV3X3RhYkxhYmVsc3tcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogYXV0bztcbiAgICB9XG59IiwiLypcbkNvcHlyaWdodCAyMDE5LTIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVG9hc3RDb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNzBweDtcbiAgICB6LWluZGV4OiAxMDE7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnIgMTRweCA2cHg7XG5cbiAgICAmLm14X1RvYXN0Q29udGFpbmVyX3N0YWNrZWQ6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIG1hcmdpbjogMCA0cHg7XG4gICAgICAgIGdyaWQtcm93OiAyIC8gNDtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzeXN0ZW07XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB9XG5cbiAgICAubXhfVG9hc3RfdG9hc3Qge1xuICAgICAgICBncmlkLXJvdzogMSAvIDM7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3lzdGVtO1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDIycHggMWZyO1xuICAgICAgICBjb2x1bW4tZ2FwOiA4cHg7XG4gICAgICAgIHJvdy1nYXA6IDRweDtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuXG4gICAgICAgICYubXhfVG9hc3RfaGFzSWNvbiB7XG4gICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjJweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgbWFzay1zaXplOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X1RvYXN0X2ljb25fdmVyaWZpY2F0aW9uOjphZnRlciB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lMmUvbm9ybWFsLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X1RvYXN0X2ljb25fdmVyaWZpY2F0aW9uX3dhcm5pbmcge1xuICAgICAgICAgICAgICAgIC8qIHdoaXRlIGluZmlsbCBmb3IgdGhlIGhvbGxvdyBzdmcgbWFzayAqL1xuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZTJlL25vcm1hbC5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogODAlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lMmUvd2FybmluZy5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlMmUtd2FybmluZy1jb2xvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfVG9hc3RfaWNvbl9zZWN1cmVfYmFja3VwOjphZnRlciB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvc2VjdXJlLWJhY2t1cC5zdmdcIik7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9Ub2FzdF9pY29uX2xhYnM6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvZmxhc2suc3ZnXCIpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1RvYXN0X3RpdGxlLFxuICAgICAgICAgICAgLm14X1RvYXN0X2JvZHkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6bm90KC5teF9Ub2FzdF9oYXNJY29uKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XG5cbiAgICAgICAgICAgIC5teF9Ub2FzdF90aXRsZSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Ub2FzdF90aXRsZSxcbiAgICAgICAgLm14X1RvYXN0X2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Ub2FzdF90aXRsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGNvbHVtbi1nYXA6IDhweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9Ub2FzdF90aXRsZV9jb3VudEluZGljYXRvciB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMnB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bzsgLyogb24gdGhlIGVuZCBzaWRlIG9mIHRoZSBkaXYgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Ub2FzdF9ib2R5IHtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gMztcbiAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1RvYXN0X2J1dHRvbnMge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgICBjb2x1bW4tZ2FwOiA1cHg7XG5cbiAgICAgICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDk2cHg7XG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Ub2FzdF9kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDI3MnB4O1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgbWFyZ2luOiA0cHggMCAxMXB4IDA7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG5cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Ub2FzdF9kZXRhaWwge1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Ub2FzdF9kZXZpY2VJRCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYsIDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVXBsb2FkQmFyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDY1cHg7IC8qIGxpbmUgdXAgd2l0aCB0aGUgc2hpZWxkIGFyZWEgaW4gdGhlIGNvbXBvc2VyICovXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLm14X1Byb2dyZXNzQmFyIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOyAvKiBjaGVhdGluZyBhdCBhIHJpZ2h0IG1hcmdpbiAqL1xuICAgIH1cbn1cblxuLm14X1RocmVhZFZpZXcge1xuICAgIC5teF9VcGxvYWRCYXIge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxufVxuXG4ubXhfVXBsb2FkQmFyX2ZpbGVuYW1lIHtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1sZWZ0OiAyMnB4OyAvKiAxOHB4IGZvciBpY29uLCA0cHggZm9yIHBhZGRpbmcgKi9cbiAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3VwbG9hZC5zdmdcIik7XG4gICAgfVxufVxuXG4ubXhfVXBsb2FkQmFyX2NhbmNlbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNnB4OyAvKiBhbGlnbiBvdmVyIHJpZ2h0bW9zdCBidXR0b24gaW4gY29tcG9zZXIgKi9cbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9pY29ucy1jbG9zZS5zdmdcIik7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVXNlck1lbnUge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgIC5teF9Vc2VyTWVudV91c2VyQXZhdGFyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgLm14X0Jhc2VBdmF0YXIge1xuICAgICAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvKiBtYWtlcyB0aGUgYXZhdGFyIG5vbi1kcmFnZ2FibGUgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Vc2VyTWVudV91c2VyQXZhdGFyTGl2ZSB7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFsZXJ0O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICAgICAgY29sb3I6ICRsaXZlLWJhZGdlLWNvbG9yO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgbGVmdDogMjVweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMjBweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1VzZXJNZW51X25hbWUge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB9XG5cbiAgICAubXhfVXNlck1lbnVfZG5kQmFkZ2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogLTJweDtcbiAgICAgICAgcmlnaHQ6IC03cHg7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhbGVydDtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9kbmQuc3ZnXCIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfSWNvbml6ZWRDb250ZXh0TWVudSB7XG4gICAgJi5teF9Vc2VyTWVudV9jb250ZXh0TWVudSB7XG4gICAgICAgIHdpZHRoOiAyNThweDtcbiAgICB9XG59XG5cbi5teF9Vc2VyTWVudV9jb250ZXh0TWVudSB7XG4gICAgJi5teF9JY29uaXplZENvbnRleHRNZW51IC5teF9JY29uaXplZENvbnRleHRNZW51X29wdGlvbkxpc3RfcmVkIHtcbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Vc2VyTWVudV9jb250ZXh0TWVudV9oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuXG4gICAgICAgIC8qIENyZWF0ZSBhIGZsZXhib3ggdG8gb3JnYW5pemUgdGhlIGhlYWRlciBhIGJpdCBlYXNpZXIgKi9cbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAubXhfVXNlck1lbnVfY29udGV4dE1lbnVfbmFtZSB7XG4gICAgICAgICAgICAvKiBDcmVhdGUgYW5vdGhlciBmbGV4Ym94IG9mIGNvbHVtbnMgdG8gaGFuZGxlIGxhcmdlIHVzZXIgSURzICovXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsgLyogNDBweCA9IDMycHggdGhlbWUgYnV0dG9uICsgOHB4IG1hcmdpbiB0byB0aGVtZSBidXR0b24gKi9cblxuICAgICAgICAgICAgLm14X1VzZXJNZW51X2NvbnRleHRNZW51X2Rpc3BsYXlOYW1lLFxuICAgICAgICAgICAgLm14X1VzZXJNZW51X2NvbnRleHRNZW51X3VzZXJJZCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuXG4gICAgICAgICAgICAgICAgLyogQXV0b21hdGljYWxseSBncm93IHN1YmVsZW1lbnRzIHRvIGZpdCB0aGUgY29udGFpbmVyICovXG4gICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIC8qIEVsbGlwc2l6ZSB0ZXh0IG92ZXJmbG93ICovXG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfVXNlck1lbnVfY29udGV4dE1lbnVfZGlzcGxheU5hbWUge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfVXNlck1lbnVfY29udGV4dE1lbnVfdXNlcklkIHtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Vc2VyTWVudV9jb250ZXh0TWVudV90aGVtZUJ1dHRvbiB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDMycHg7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDMycHg7XG4gICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRoZW1lLWJ1dHRvbi1iZy1jb2xvcjtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgLyogdG8gbWFrZSBhbGlnbm1lbnQgZWFzaWVyLCBjcmVhdGUgZmxleGJveCBmb3IgdGhlIGltYWdlICovXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9Vc2VyTWVudV9jb250ZXh0TWVudV9ndWVzdFByb21wdHMge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgICAgID4gc3BhbiB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICAgICAgICYgKyBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X2ljb24ge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Vc2VyTWVudV9pY29uSG9tZTo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2hvbWUuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9Vc2VyTWVudV9pY29uRG5kOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3QvZG5kLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfVXNlck1lbnVfaWNvbkRuZE9mZjo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L2RuZC1jcm9zcy5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1VzZXJNZW51X2ljb25CZWxsOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbm90aWZpY2F0aW9ucy5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1VzZXJNZW51X2ljb25Mb2NrOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2VjdXJpdHkuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9Vc2VyTWVudV9pY29uU2V0dGluZ3M6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9zZXR0aW5ncy5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1VzZXJNZW51X2ljb25NZXNzYWdlOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvZmVlZGJhY2suc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9Vc2VyTWVudV9pY29uU2lnbk91dDo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2xlYXZlLnN2Z1wiKTtcbiAgICB9XG59XG5cbi5teF9Vc2VyTWVudV9DdXN0b21TdGF0dXNTZWN0aW9uIHtcbiAgICBtYXJnaW46IDAgMTJweCA4cHg7XG5cbiAgICAubXhfVXNlck1lbnVfQ3VzdG9tU3RhdHVzU2VjdGlvbl9maWVsZCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICAmLm14X1VzZXJNZW51X0N1c3RvbVN0YXR1c1NlY3Rpb25fZmllbGRfaGFzUXVlcnkge1xuICAgICAgICAgICAgLm14X1VzZXJNZW51X0N1c3RvbVN0YXR1c1NlY3Rpb25fY2xlYXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgPiAubXhfVXNlck1lbnVfQ3VzdG9tU3RhdHVzU2VjdGlvbl9pbnB1dCB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYWNjZW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICY6Zm9jdXMgKyAubXhfVXNlck1lbnVfQ3VzdG9tU3RhdHVzU2VjdGlvbl9jbGVhciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA+IC5teF9Vc2VyTWVudV9DdXN0b21TdGF0dXNTZWN0aW9uX2NsZWFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC94LnN2Z1wiKTtcbiAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFzay1zaXplOiAxMnB4O1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgPiBwIHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTVweDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgbWFyZ2luOiA0cHggMDtcbiAgICB9XG5cbiAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX3ByaW1hcnlfb3V0bGluZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9WaWV3U291cmNlIHtcbiAgICBwcmUge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcbiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgIH1cblxuICAgIC5teF9WaWV3U291cmNlX2hlYWRlciB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkcXVpbmFyeS1jb250ZW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNpbmctMTI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTEyO1xuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuXG4gICAgICAgIC5teF9Db3B5YWJsZVRleHQge1xuICAgICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1ZpZXdTb3VyY2VfaGVhZGluZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTdweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTEyO1xuICAgIH1cblxuICAgIC5teF9WaWV3U291cmNlX2RldGFpbHMge1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy0xMjtcbiAgICB9XG5cbiAgICAubXhfQ29weWFibGVUZXh0X2JvcmRlciB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Db21wbGV0ZVNlY3VyaXR5X2hlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubXhfQ29tcGxldGVTZWN1cml0eV9oZWFkZXJJY29uIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubXhfQ29tcGxldGVTZWN1cml0eV9oZXJvSWNvbiB7XG4gICAgd2lkdGg6IDEyOHB4O1xuICAgIGhlaWdodDogMTI4cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xufVxuXG4ubXhfQ29tcGxldGVTZWN1cml0eV9za2lwIHtcbiAgICBAbWl4aW4gY3VzdG9taXNlZENhbmNlbEJ1dHRvbjtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAyNHB4O1xufVxuXG4ubXhfQ29tcGxldGVTZWN1cml0eV9ib2R5IHtcbiAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG59XG5cbi5teF9Db21wbGV0ZVNlY3VyaXR5X3dhaXRpbmcge1xuICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbn1cblxuLm14X0NvbXBsZXRlU2VjdXJpdHlfYWN0aW9uUm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgbWFyZ2luLXRvcDogJGZvbnQtMjhweDtcblxuICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogMThweDtcblxuICAgICAgICAmLndhcm5pbmcge1xuICAgICAgICAgICAgY29sb3I6ICRhbGVydDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTG9naW5fc3VibWl0IHtcbiAgICBAbWl4aW4gbXhfRGlhbG9nQnV0dG9uO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm14X0xvZ2luX3N1Ym1pdDpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLm14X0xvZ2luX2xvYWRlciB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDJweDtcbiAgICBsZWZ0OiA4cHg7XG59XG5cbi5teF9Mb2dpbl9sb2FkZXIgLm14X1NwaW5uZXIge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbn1cblxuLm14X0xvZ2luX2xvYWRlciAubXhfU3Bpbm5lciBpbWcge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbn1cblxuLm14X0xvZ2luX2Vycm9yIHtcbiAgICBjb2xvcjogJGFsZXJ0O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG59XG5cbi5teF9Mb2dpbl9lcnJvci5teF9Mb2dpbl9zZXJ2ZXJFcnJvciB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4ubXhfTG9naW5fZXJyb3IubXhfTG9naW5fc2VydmVyRXJyb3IubXhfTG9naW5fc2VydmVyRXJyb3JOb25GYXRhbCB7XG4gICAgY29sb3I6ICNmZjhkMTM7IC8qIE9ubHkgdXNlZCBoZXJlICovXG59XG5cbi5teF9Mb2dpbl90eXBlX2NvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiAkYXV0aHBhZ2UtcHJpbWFyeS1jb2xvcjtcblxuICAgIC5teF9GaWVsZCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbi5teF9Mb2dpbl90eXBlX2xhYmVsIHtcbiAgICBmbGV4OiAxO1xufVxuXG4ubXhfTG9naW5fdW5kZXJsaW5lZFNlcnZlck5hbWUge1xuICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICRhY2NlbnQ7XG59XG5cbmRpdi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfbGluay5teF9Mb2dpbl9mb3Jnb3Qge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi10b3A6IDI0cHg7XG5cbiAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fZGlzYWJsZWQge1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIH1cbn1cblxuLm14X0xvZ2luX3NwaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMTRweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9SZWdpc3Rlcl9tYWluQ29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtaW4taGVpZ2h0OiAyNzBweDtcblxuICAgIHAge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgICAgIGNvbG9yOiAkYXV0aHBhZ2UtcHJpbWFyeS1jb2xvcjtcblxuICAgICAgICAmLnNlY29uZGFyeSB7XG4gICAgICAgICAgICBjb2xvcjogJGF1dGhwYWdlLXNlY29uZGFyeS1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gaW1nOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgd2lkdGg6IG1heC1jb250ZW50O1xuICAgIH1cblxuICAgIC5teF9Mb2dpbl9zdWJtaXQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLm14X1JlZ2lzdGVyX2Zvb3RlckFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZy10b3A6IDE2cHg7XG4gICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgxNDEsIDE1MSwgMTY1LCAwLjIpO1xuXG4gICAgPiAqIHtcbiAgICAgICAgZmxleC1iYXNpczogY29udGVudDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU2V0dXBFbmNyeXB0aW9uQm9keV9yZXNldCB7XG4gICAgY29sb3I6ICRsaWdodC1mZy1jb2xvcjtcbiAgICBtYXJnaW4tdG9wOiAkZm9udC0xNHB4O1xuXG4gICAgLm14X1NldHVwRW5jcnlwdGlvbkJvZHlfcmVzZXRfbGluayB7XG4gICAgICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmtfaW5saW5lIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTWVkaWFCb2R5Lm14X0F1ZGlvUGxheWVyX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMTZweCAxMnB4IDEycHggMTJweDtcblxuICAgIC5teF9BdWRpb1BsYXllcl9wcmltYXJ5Q29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICAubXhfUGxheVBhdXNlQnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0F1ZGlvUGxheWVyX21lZGlhSW5mbyB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogbWFrZXMgdGhlIGVsbGlwc2lzIG9uIHRoZSBmaWxlIG5hbWUgd29yayAqL1xuXG4gICAgICAgICAgICAmID4gKiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9BdWRpb1BsYXllcl9tZWRpYU5hbWUge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTVweDtcbiAgICAgICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDRweDsgLyogbWltaWNzIHRoZSBsaW5lLWhlaWdodCBkaWZmZXJlbmNlcyBpbiB0aGUgRmlnbWEgKi9cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0F1ZGlvUGxheWVyX2J5bGluZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0F1ZGlvUGxheWVyX3NlZWsge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgIC5teF9TZWVrQmFyIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQ2xvY2sge1xuICAgICAgICAgICAgbWluLXdpZHRoOiAkZm9udC00MnB4OyAvKiBmb3IgZmxleGJveCAqL1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkc3BhY2luZy00OyAvKiBpc29sYXRlIGZyb20gc2VlayBiYXIgKi9cbiAgICAgICAgICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1BsYXlQYXVzZUJ1dHRvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBtaW4td2lkdGg6IDMycHg7IC8qIGZvciB3aGVuIHRoZSBidXR0b24gaXMgdXNlZCBpbiBhIGZsZXhib3ggKi9cbiAgICBtaW4taGVpZ2h0OiAzMnB4OyAvKiBmb3Igd2hlbiB0aGUgYnV0dG9uIGlzIHVzZWQgaW4gYSBmbGV4Ym94ICovXG4gICAgYm9yZGVyLXJhZGl1czogMzJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3lzdGVtO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyAvKiBzaXppbmcgdmFyaWVzIGJ5IGljb24gKi9cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgfVxuXG4gICAgJi5teF9QbGF5UGF1c2VCdXR0b25fZGlzYWJsZWQ6OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG5cbiAgICAmLm14X1BsYXlQYXVzZUJ1dHRvbl9wbGF5OjpiZWZvcmUge1xuICAgICAgICB3aWR0aDogMTNweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICB0b3A6IDhweDsgLyogY2VudGVyICovXG4gICAgICAgIGxlZnQ6IDEycHg7IC8qIGNlbnRlciAqL1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcGxheS5zdmdcIik7XG4gICAgfVxuXG4gICAgJi5teF9QbGF5UGF1c2VCdXR0b25fcGF1c2U6OmJlZm9yZSB7XG4gICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICAgIHRvcDogMTBweDsgLyogY2VudGVyICovXG4gICAgICAgIGxlZnQ6IDExcHg7IC8qIGNlbnRlciAqL1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcGF1c2Uuc3ZnXCIpO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSAtIDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vKiBEZXYgbm90ZTogdGhlcmUncyBubyBhY3R1YWwgY29tcG9uZW50IGNhbGxlZCA8UGxheWJhY2tDb250YWluZXIgLz4uIFRoZXNlIGNsYXNzZXMgKi9cbi8qIGFyZSBzaGFyZWQgYW1vbmdzdCBtdWx0aXBsZSB2b2ljZSBtZXNzYWdlIGNvbXBvbmVudHMuICovXG5cbi8qIENvbnRhaW5lciBmb3IgbGl2ZSByZWNvcmRpbmcgYW5kIHBsYXliYWNrIGNvbnRyb2xzICovXG4ubXhfTWVkaWFCb2R5Lm14X1ZvaWNlTWVzc2FnZVByaW1hcnlDb250YWluZXIge1xuICAgIC8qIFRoZSB3YXZlZm9ybSAocmlnaHQpIGhhcyBhIDFweCBwYWRkaW5nIG9uIGl0IHRoYXQgd2Ugd2FudCB0byBhY2NvdW50IGZvciwgb3RoZXJ3aXNlICovXG4gICAgLyogaW5oZXJpdCBmcm9tIG14X01lZGlhQm9keSAqL1xuICAgIHBhZGRpbmctcmlnaHQ6IDExcHg7XG5cbiAgICAvKiBDaGVhdCBhdCBhbGlnbm1lbnQgYSBiaXQgKi9cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBjb250YWluOiBjb250ZW50O1xuXG4gICAgLm14X1dhdmVmb3JtLFxuICAgIC5teF9SZWNvcmRpbmdQbGF5YmFja190aW1lbGluZUxheW91dE1pZGRsZSB7XG4gICAgICAgIG1pbi13aWR0aDogMDsgLyogUHJldmVudCBhIGJsb3dvdXQgKi9cbiAgICB9XG5cbiAgICAvKiBXYXZlZm9ybXMgYXJlIHByZXNlbnQgaW4gbGl2ZSByZWNvcmRpbmcgb25seSAqL1xuICAgIC5teF9XYXZlZm9ybSB7XG4gICAgICAgIC5teF9XYXZlZm9ybV9iYXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF1YXRlcm5hcnktY29udGVudDtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIC8qIFZhcmlhYmxlIHNldCBieSBhIEpTIGNvbXBvbmVudCAqL1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkobWF4KDAuMDUsIHZhcigtLWJhckhlaWdodCkpKTtcblxuICAgICAgICAgICAgJi5teF9XYXZlZm9ybV9iYXJfMTAwcGN0IHtcbiAgICAgICAgICAgICAgICAvKiBTbWFsbCBhbmltYXRpb24gdG8gcmVtb3ZlIHRoZSBtZWNoYW5pY2FsIGZlZWwgb2YgcHJvZ3Jlc3MgKi9cbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDI1MG1zIGVhc2U7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0Nsb2NrIHtcbiAgICAgICAgd2lkdGg6ICRmb250LTQycHg7IC8qIHdlJ3JlIG5vdCB1c2luZyBhIG1vbm9zcGFjZSBmb250LCBzbyBmYWtlIGl0ICovXG4gICAgICAgIG1pbi13aWR0aDogJGZvbnQtNDJweDsgLyogZm9yY2Ugc2Vuc2libGUgbGF5b3V0cyBpbiBhd2t3YXJkIGZsZXhib3hlcyAoZmlsZSBwYW5lbCwgZm9yIGV4YW1wbGUpICovXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDZweDsgLyogd2l0aCB0aGUgZml4ZWQgd2lkdGggdGhpcyBlbmRzIHVwIGFzIGEgdmlzdWFsIDhweCBtb3N0IG9mIHRoZSB0aW1lLCBhcyBpbnRlbmRlZC4gKi9cbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7IC8qIGlzb2xhdGUgZnJvbSByZWNvcmRpbmcgY2lyY2xlIC8gcGxheSBjb250cm9sICovXG4gICAgfVxuXG4gICAgLm14X1JlY29yZGluZ1BsYXliYWNrX3RpbWVsaW5lTGF5b3V0TWlkZGxlIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBoZWlnaHQ6IDMwcHg7IC8qIHNhbWUgaGVpZ2h0IGFzIG14X1dhdmVmb3JtLCBuZWVkZWQgZm9yIGF1dG9tYXRpYyB2ZXJ0aWNhbCBjZW50ZXJpbmcgKi9cblxuICAgICAgICAubXhfV2F2ZWZvcm0ge1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TZWVrQmFyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICB0b3A6IC0ycHg7IC8qIHZpc3VhbGx5IHZlcnRpY2FsbHkgY2VudGVyZWQgKi9cblxuICAgICAgICAgICAgLyogSGlkZSB0aGUgaGFpcmxpbmUgcHJvZ3Jlc3MgYmFyIHNpbmNlIHdlJ3JlIGF0IDEwMCUgaGVpZ2h0LiBOZWVkIHRvIGhhdmUgZGlzdGluY3QgcnVsZXMgKi9cbiAgICAgICAgICAgIC8qIGJlY2F1c2UgQ1NTIGlzIHdlaXJkLiAqL1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6Oi1tb3otcmFuZ2UtcHJvZ3Jlc3Mge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qIE1ha2UgdGhlIHRodW1iIGVhc2llciB0byBzZWUuIExpa2UgdGhlIFNlZWtCYXIgb3JpZ2luYWwgc3R5bGVzLCB0aGVzZSBuZWVkIHRvIGJlICovXG4gICAgICAgICAgICAvKiBkaXN0aW5jdC4gV2UgbWFrZSBpdCB0cmFuc3BhcmVudCBzbyBpdCBkb2Vzbid0IHNob3cgdXAgb24gdGhlIFVJLCBidXQgYWxzbyBsYXJnZXIgKi9cbiAgICAgICAgICAgIC8qIHNvIGl0J3MgZWFzaWVyIHRvIGdyYWIgYnkgbW91c2UgdXNlcnMgaW4gc29tZSBicm93c2Vycy4gTW9zdCBicm93c2VycyBsZXQgdGhlIHVzZXIgKi9cbiAgICAgICAgICAgIC8qIG1vdmUgYW5kIGRyYWcgdGhlIHRodW1iIHJlZ2FyZGxlc3Mgb2YgaGl0dGluZyB0aGUgdGh1bWIsIGhvd2V2ZXIuICovXG4gICAgICAgICAgICAmOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyogRm9yIHRpbWVsaW5lLXJlbmRlcmVkIHBsYXliYWNrLCB0aGUgY2xvY2sgaXMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIHdhdmVmb3JtLiAqL1xuICAgICAgICAmICsgLm14X0Nsb2NrIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgICAgICAvKiBUYWtlIHRoZSBwYWRkaW5nIG9mZiB0aGUgY2xvY2sgYmVjYXVzZSBpdCdzIGFjY291bnRlZCBmb3IgYnkgdGhlIGB0aW1lbGluZUxheW91dE1pZGRsZWAgKi9cbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vKiBDU1MgaW5zcGlyYXRpb24gZnJvbTogKi9cbi8qICogaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9ob3d0by9ob3d0b19qc19yYW5nZXNsaWRlci5hc3AgKi9cbi8qICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4MjgzODA2ICovXG4vKiAqIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vc3R5bGluZy1jcm9zcy1icm93c2VyLWNvbXBhdGlibGUtcmFuZ2UtaW5wdXRzLWNzcy8gKi9cblxuLm14X1NlZWtCYXIge1xuICAgIC8qIERldiBub3RlOiB3ZSBkZWxpYmVyYXRlbHkgZG8gbm90IGhhdmUgdGhlIC1tcy10cmFjayAoYW5kIGZyaWVuZHMpIHNlbGVjdG9ycyBiZWNhdXNlIHdlIGRvbid0ICovXG4gICAgLyogbmVlZCB0byBzdXBwb3J0IElFLiAqL1xuXG4gICAgYXBwZWFyYW5jZTogbm9uZTsgLyogZGVmYXVsdCBzdHlsZSBvdmVycmlkZSAqL1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZDogJHF1YXRlcm5hcnktY29udGVudDtcbiAgICBvdXRsaW5lOiBub25lOyAvKiByZW1vdmUgYmx1ZSBzZWxlY3Rpb24gYm9yZGVyICovXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBmb3IgYmVmb3JlK2FmdGVyIHBzZXVkbyBlbGVtZW50cyBsYXRlciBvbiAqL1xuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lOyAvKiBkZWZhdWx0IHN0eWxlIG92ZXJyaWRlICovXG5cbiAgICAgICAgLyogRGV2IG5vdGU6IFRoaXMgbmVlZHMgdG8gYmUgZHVwbGljYXRlZCB3aXRoIHRoZSAtbW96LXJhbmdlLXRodW1iIHNlbGVjdG9yICovXG4gICAgICAgIC8qIGJlY2F1c2Ugb3RoZXJ3aXNlIEVkZ2UgKHdlYmtpdCkgd2lsbCBmYWlsIHRvIHNlZSB0aGUgc3R5bGVzIGFuZCBqdXN0IHJlZnVzZSAqL1xuICAgICAgICAvKiB0byBhcHBseSB0aGVtLiAqL1xuICAgICAgICB3aWR0aDogOHB4O1xuICAgICAgICBoZWlnaHQ6IDhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgICB3aWR0aDogOHB4O1xuICAgICAgICBoZWlnaHQ6IDhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgIC8qIEZpcmVmb3ggYWRkcyBhIGJvcmRlciBvbiB0aGUgdGh1bWIgKi9cbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgIH1cblxuICAgIC8qIFRoaXMgaXMgZm9yIHdlYmtpdCBzdXBwb3J0LCBidXQgd2UgY2FuJ3QgbGltaXQgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgaXQgdG8ganVzdCB3ZWJraXQgKi9cbiAgICAvKiBicm93c2Vycy4gRmlyZWZveCByZXNwb25kcyB0byB3ZWJraXQtcHJlZml4ZWQgdmFsdWVzIG5vdywgd2hpY2ggbWVhbnMgd2UgY2FuJ3QgdXNlIG1lZGlhICovXG4gICAgLyogb3Igc3VwcG9ydCBxdWVyaWVzIHRvIHNlbGVjdGl2ZWx5IGFwcGx5IHRoZSBydWxlLiBBbiB1cHNpZGUgaXMgdGhhdCB0aGlzIENTUyBkb2Vzbid0IHdvcmsgKi9cbiAgICAvKiBpbiBmaXJlZm94LCBzbyBpdCdzIGp1c3Qgd2FzdGVkIENQVS9HUFUgdGltZS4gKi9cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICAvKiA6OmJlZm9yZSB0byBlbnN1cmUgaXQgZW5kcyB1cCB1bmRlciB0aGUgdGh1bWIgKi9cbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgLyogQWJzb2x1dGUgcG9zaXRpb25pbmcgdG8gZW5zdXJlIGl0IG92ZXJsYXBzIHdpdGggdGhlIGV4aXN0aW5nIGJhciAqL1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcblxuICAgICAgICAvKiBTaXppbmcgdG8gbWF0Y2ggdGhlIGJhciAqL1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG5cbiAgICAgICAgLyogQW5kIGZpbmFsbHkgZHluYW1pYyB3aWR0aCB3aXRob3V0IG92ZXJseSBodXJ0aW5nIHRoZSByZW5kZXJpbmcgZW5naW5lLiAqL1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDEwMCU7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKHZhcigtLWZpbGxUbykpO1xuICAgIH1cblxuICAgIC8qIFRoaXMgaXMgZmlyZWZveCdzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIHRoZSBhYm92ZSwgd2l0aCAxMDAlIGxlc3MgaGFja3MuICovXG4gICAgJjo6LW1vei1yYW5nZS1wcm9ncmVzcyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICB9XG5cbiAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cblxuICAgIC8qIEluY3JlYXNlIGNsaWNrYWJsZSBhcmVhIGZvciB0aGUgc2xpZGVyIChhcHByb3hpbWF0ZWx5IHNhbWUgc2l6ZSBhcyBicm93c2VyIGRlZmF1bHQpICovXG4gICAgLyogV2UgZG8gaXQgdGhpcyB3YXkgdG8ga2VlcCB0aGUgc2FtZSBwYWRkaW5nIGFuZCBtYXJnaW5zIG9mIHRoZSBlbGVtZW50LCBhdm9pZGluZyBtYXJnaW4gbWF0aC4gKi9cbiAgICAvKiBTb3VyY2U6IGh0dHBzOi8vZnJvbnQtYmFjay5jb20vZXhwYW5kLWNsaWNrYWJsZS1hcmVhcy1mb3ItYS1iZXR0ZXItdG91Y2gtZXhwZXJpZW5jZS8gKi9cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtNnB4O1xuICAgICAgICBib3R0b206IC02cHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9XYXZlZm9ybSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMzBweDsgLyogdGFsbGVzdCBiYXIgY2FuIG9ubHkgYmUgMzBweCAqL1xuICAgIHRvcDogMXB4OyAvKiBiZWNhdXNlIG9mIG91ciBib3JkZXIgdHJpY2sgKHNlZSBiZWxvdyksIHdlJ3JlIG9mZiBieSAxcHggb2YgYWxpZ250bWVudCAqL1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyAvKiBzbyB0aGUgYmFycyBncm93IGZyb20gdGhlIG1pZGRsZSAqL1xuXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogdGhpcyBpcyBjaGVhcGVyIHRoYW4gYSBgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gNHB4KWAgaW4gdGhlIGJhcidzIENTUy4gKi9cblxuICAgIC8qIEEgYmFyIGlzIG1lYW50IHRvIGJlIGEgMngyIGNpcmNsZSB3aGVuIGF0IHplcm8gaGVpZ2h0LCBhbmQgb3RoZXJ3aXNlIGEgMnB4IHdpZGUgbGluZSAqL1xuICAgIC8qIHdpdGggcm91bmRlZCBjYXBzLiAqL1xuICAgIC5teF9XYXZlZm9ybV9iYXIge1xuICAgICAgICB3aWR0aDogMDsgLyogMHB4IHdpZHRoIG1lYW5zIHdlJ2xsIGVuZCB1cCB1c2luZyB0aGUgYm9yZGVyIGFzIG91ciB3aWR0aCAqL1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgLyogdHJhbnNwYXJlbnQgbWVhbnMgd2UnbGwgdXNlIHRoZSBiYWNrZ3JvdW5kIGNvbG91ciAqL1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7IC8qIHJvdW5kZWQgZW5kIGNhcHMsIGJhc2VkIG9uIHRoZSBib3JkZXIgKi9cbiAgICAgICAgbWluLWhlaWdodDogMDsgLyogbGlrZSB0aGUgd2lkdGgsIHdlJ2xsIHJlbHkgb24gdGhlIGJvcmRlciB0byBnaXZlIHVzIGhlaWdodCAqL1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlOyAvKiB0aGlzIG1ha2VzIHRoZSBgaGVpZ2h0OiA0MiVgIHdvcmsgb24gdGhlIGVsZW1lbnQgKi9cbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFweDsgLyogd2Ugd2FudCAycHggYmV0d2VlbiBlYWNoIGJhciwgc28gMXB4IG9uIGVpdGhlciBzaWRlIGZvciBiYWxhbmNlICovXG4gICAgICAgIG1hcmdpbi1yaWdodDogMXB4O1xuXG4gICAgICAgIC8qIGJhY2tncm91bmQgY29sb3IgaXMgaGFuZGxlZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudHMgKi9cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0F1dGhCb2R5IHtcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIGNvbG9yOiAkYXV0aHBhZ2Utc2Vjb25kYXJ5LWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xuICAgIHBhZGRpbmc6IDI1cHggNjBweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgYiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgfVxuXG4gICAgJi5teF9BdXRoQm9keV9mbGV4IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG5cbiAgICBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMjRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctODtcbiAgICAgICAgY29sb3I6ICRhdXRocGFnZS1wcmltYXJ5LWNvbG9yO1xuICAgIH1cblxuICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBjb2xvcjogJGF1dGhwYWdlLXNlY29uZGFyeS1jb2xvcjtcbiAgICB9XG5cbiAgICBoMi5teF9BdXRoQm9keV9jZW50ZXJlZCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICBhOmxpbmssXG4gICAgYTpob3ZlcixcbiAgICBhOnZpc2l0ZWQge1xuICAgICAgICBjb2xvcjogJGFjY2VudDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgIGZpZWxkc2V0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLm14X0F1dGhCb2R5X2ljb24ge1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICB9XG5cbiAgICAubXhfQXV0aEJvZHlfbG9ja0ljb24ge1xuICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC0zcHg7IC8vIHR3ZWFrIHRvIGFsaWduIGFsbCBpY29ucyBvbiBkaWZmZXJlbnQgZm9yZ290IHBhc3N3b3JkIHN0ZXBzXG4gICAgfVxuXG4gICAgLm14X0F1dGhCb2R5X3RleHQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy00ODtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbiAgICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0ge1xuICAgICAgICBjb2xvcjogJGF1dGhwYWdlLXByaW1hcnktY29sb3I7XG4gICAgfVxuXG4gICAgLm14X0ZpZWxkIGxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRhdXRocGFnZS1zZWNvbmRhcnktY29sb3I7XG4gICAgfVxuXG4gICAgLm14X0ZpZWxkIGlucHV0LFxuICAgIC5teF9GaWVsZCBzZWxlY3Qge1xuICAgICAgICBjb2xvcjogJGF1dGhwYWdlLXByaW1hcnktY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC5teF9GaWVsZF9sYWJlbEFsd2F5c1RvcExlZnQgbGFiZWwsXG4gICAgLm14X0ZpZWxkIHNlbGVjdCArIGxhYmVsIC8qIEFsd2F5cyBzaG93IGEgc2VsZWN0J3MgbGFiZWwgb24gdG9wIHRvIG5vdCBjb2xsaWRlIHdpdGggdGhlIHZhbHVlICovLFxuICAgIC5teF9GaWVsZCBpbnB1dDpmb2N1cyArIGxhYmVsLFxuICAgIC5teF9GaWVsZCBpbnB1dDpub3QoOnBsYWNlaG9sZGVyLXNob3duKSArIGxhYmVsLFxuICAgIC5teF9GaWVsZCB0ZXh0YXJlYTpmb2N1cyArIGxhYmVsLFxuICAgIC5teF9GaWVsZCB0ZXh0YXJlYTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSArIGxhYmVsIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgaW5wdXQuZXJyb3Ige1xuICAgICAgICBjb2xvcjogJGFsZXJ0O1xuICAgIH1cblxuICAgIC5teF9Mb2dpbl9zdWJtaXQge1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTE2O1xuICAgIH1cblxuICAgIC5teF9FcnJvck1lc3NhZ2Uge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgfVxuXG4gICAgLm14X0ZpZWxkIGlucHV0IHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG5cbiAgICAubXhfRmllbGRfc2VsZWN0OjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYXV0aHBhZ2UtcHJpbWFyeS1jb2xvcjtcbiAgICB9XG5cbiAgICAubXhfRHJvcGRvd24ge1xuICAgICAgICBjb2xvcjogJGF1dGhwYWdlLXByaW1hcnktY29sb3I7XG4gICAgfVxuXG4gICAgLm14X0Ryb3Bkb3duX2Fycm93IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGF1dGhwYWdlLXByaW1hcnktY29sb3I7XG4gICAgfVxuXG4gICAgLm14X0Ryb3Bkb3duX21lbnUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcblxuICAgICAgICAubXhfRHJvcGRvd25fb3B0aW9uX2hpZ2hsaWdodCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYXV0aHBhZ2UtZm9jdXMtYmctY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIHNwZWNpYWxpc2F0aW9uIGZvciBwYXNzd29yZCByZXNldCB2aWV3cyAqL1xuLm14X0F1dGhCb2R5Lm14X0F1dGhCb2R5X2ZvcmdvdC1wYXNzd29yZCB7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIHBhZGRpbmc6IDUwcHggMzJweDtcbiAgICBtaW4taGVpZ2h0OiA2MDBweDtcblxuICAgIGgxIHtcbiAgICAgICAgbWFyZ2luOiAkc3BhY2luZy0yNCAwO1xuICAgIH1cblxuICAgIC5teF9BdXRoQm9keV9idXR0b24tY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm14X0xvZ2luX3N1Ym1pdCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIG1hcmdpbjogMCAwICRzcGFjaW5nLTE2O1xuICAgIH1cblxuICAgIC5teF9BdXRoQm9keV90ZXh0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctMzI7XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAkc3BhY2luZy04O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0F1dGhCb2R5X3NpZ24taW4taW5zdGVhZC1idXR0b24ge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy00O1xuICAgIH1cblxuICAgIC5teF9BdXRoQm9keV9maWVsZFJvdyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTI0O1xuICAgIH1cblxuICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uLm14X0FjY2Vzc2libGVCdXR0b25faGFzS2luZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG5cbiAgICAgICAgJjpkaXNhYmxlZCB7XG4gICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9BdXRoQm9keV9kaWQtbm90LXJlY2VpdmUge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogJHNwYWNpbmctODtcbn1cblxuLm14X0F1dGhCb2R5X3Jlc2VuZC1idXR0b24ge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAkYWNjZW50O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAkc3BhY2luZy00O1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nLTQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbiAgICB9XG59XG5cbi5teF9BdXRoQm9keV9lbWFpbFByb21wdEljb24ge1xuICAgIHdpZHRoOiA1N3B4O1xufVxuXG4ubXhfQXV0aEJvZHlfZW1haWxQcm9tcHRJY29uLS1zaGlmdGVkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMTdweDsgLy8gUHJldmVudCBsYXlvdXQganVtcCBieSByZWxhdGl2ZSBwb3NpdGlvbmluZy5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtMTdweDsgLy8gVGhpcyBpY29uIGlzIGhpZ2hlciB0aGFuIHRoZSBvdGhlciBpY29ucy4gU2hpZnQgdXAgdG8gcHJldmVudCBpY29uIGp1bXBpbmcuXG4gICAgd2lkdGg6IDU3cHg7XG59XG5cbi5teF9BdXRoQm9keV9maWVsZFJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4ubXhfQXV0aEJvZHlfZmllbGRSb3cgPiAubXhfRmllbGQge1xuICAgIG1hcmdpbjogMCA1cHg7XG59XG5cbi5teF9BdXRoQm9keV9maWVsZFJvdyA+IC5teF9GaWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi5teF9BdXRoQm9keV9maWVsZFJvdyA+IC5teF9GaWVsZDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5teF9BdXRoQm9keV9wYWRkZWRGb290ZXIge1xuICAgIGhlaWdodDogODBweDsgLyogaGVpZ2h0IG9mIHRoZSBzdWJtaXQgYnV0dG9uICsgcmVnaXN0ZXIgbGluayAqL1xuICAgIHBhZGRpbmctdG9wOiAyOHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIC5teF9BdXRoQm9keV9wYWRkZWRGb290ZXJfdGl0bGUge1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy0xNjtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcblxuICAgICAgICAubXhfSW5saW5lU3Bpbm5lciBpbWcge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHN1YjtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0F1dGhCb2R5X3BhZGRlZEZvb3Rlcl9zdWJ0aXRsZSB7XG4gICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTg7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE0cHg7XG4gICAgfVxufVxuXG4ubXhfQXV0aEJvZHlfY2hhbmdlRmxvdyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgPiBhIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICB9XG59XG5cbi5teF9TU09CdXR0b25zICsgLm14X0F1dGhCb2R5X2NoYW5nZUZsb3cge1xuICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTI0O1xufVxuXG4ubXhfQXV0aEJvZHlfc3Bpbm5lciB7XG4gICAgbWFyZ2luOiAxZW0gMDtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5teF9BdXRoQm9keSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0F1dGhGb290ZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgb3BhY2l0eTogMC43MjtcbiAgICBwYWRkaW5nOiAyMHB4IDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHJnYmEoMCwgMCwgMCwgMCksIHJnYmEoMCwgMCwgMCwgMC44KSk7XG59XG5cbi5teF9BdXRoRm9vdGVyIGE6bGluayxcbi5teF9BdXRoRm9vdGVyIGE6aG92ZXIsXG4ubXhfQXV0aEZvb3RlciBhOnZpc2l0ZWQge1xuICAgIGNvbG9yOiAkYWNjZW50LWZnLWNvbG9yO1xuICAgIG1hcmdpbjogMCAyMnB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0F1dGhIZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogMjA2cHg7XG4gICAgcGFkZGluZzogMjVweCAyNXB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAubXhfQXV0aEhlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0F1dGhIZWFkZXJMb2dvIHtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZzogMCAyNXB4O1xufVxuXG4ubXhfQXV0aEhlYWRlckxvZ28gaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5teF9BdXRoSGVhZGVyTG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0F1dGhQYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYXV0aHBhZ2UtYmctY29sb3I7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14X0F1dGhQYWdlX21vZGFsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbjogMTAwcHggYXV0byBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMzMpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhdXRocGFnZS1tb2RhbC1iZy1jb2xvcjtcblxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDc2OHB4KSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgfVxuXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbn1cblxuXG4vL1Jlc3BvbnNpdmUgZGVzaWduXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KXtcbiAgICAubXhfQXV0aFBhZ2V7XG4gICAgICAgIGJhY2tncm91bmQ6ICNDMkVDRkYgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLm14X0F1dGhQYWdlX21vZGFse1xuICAgICAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBTZXBhcmF0b3IgZm9yIGRpZmZlcmVudCBsb2dpbiBtZXRob2RzICovXG4ubXhfQXV0aFBhZ2Vfc2VwYXJhdG9yIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbjogMjRweCAwO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgfVxuXG4gICAgc3BhbiB7XG4gICAgICAgIHBhZGRpbmc6IDAgMTZweDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgfVxuXG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIERhcmsgdGhlbWUgc3VwcG9ydCAqL1xuLm14X3RoZW1lX2Rhcmsge1xuICAgIC5teF9BdXRoUGFnZV9zZXBhcmF0b3Ige1xuICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0NvbXBsZXRlU2VjdXJpdHlCb2R5IHtcbiAgICB3aWR0aDogNjAwcHg7XG4gICAgY29sb3I6ICRhdXRocGFnZS1wcmltYXJ5LWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMjRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG5cbiAgICBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICB9XG5cbiAgICBhOmxpbmssXG4gICAgYTpob3ZlcixcbiAgICBhOnZpc2l0ZWQge1xuICAgICAgICBjb2xvcjogJGFjY2VudDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Db3VudHJ5RHJvcGRvd24gLm14X0Ryb3Bkb3duX2lucHV0IC5teF9Ecm9wZG93bl9vcHRpb24ge1xuICAgIHBhZGRpbmc6IDAgM3B4O1xufVxuXG4ubXhfQ291bnRyeURyb3Bkb3duIC5teF9Ecm9wZG93bl9hcnJvdyB7XG4gICAgcGFkZGluZy1yaWdodDogM3B4O1xufVxuXG4ubXhfQ291bnRyeURyb3Bkb3duX3Nob3J0T3B0aW9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLm14X0NvdW50cnlEcm9wZG93bl9vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNyBWZWN0b3IgQ3JlYXRpb25zIEx0ZFxuQ29weXJpZ2h0IDIwMjMgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfSW50ZXJhY3RpdmVBdXRoRW50cnlDb21wb25lbnRzIHtcbiAgICAubXhfSW50ZXJhY3RpdmVBdXRoRW50cnlDb21wb25lbnRzX3Rlcm1zU3VibWl0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogcHJldmVudCBvdmVyZmxvd2luZyAqL1xuICAgIH1cbn1cblxuLm14X0ludGVyYWN0aXZlQXV0aEVudHJ5Q29tcG9uZW50c19tc2lzZG5XcmFwcGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teF9JbnRlcmFjdGl2ZUF1dGhFbnRyeUNvbXBvbmVudHNfbXNpc2RuRW50cnkge1xuICAgIGZvbnQtc2l6ZTogMjAwJTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkc3Ryb25nLWlucHV0LWJvcmRlci1jb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgd2lkdGg6IDZlbTtcbn1cblxuLm14X0ludGVyYWN0aXZlQXV0aEVudHJ5Q29tcG9uZW50c19tc2lzZG5FbnRyeTpmb2N1cyB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGFjY2VudDtcbn1cblxuLm14X0ludGVyYWN0aXZlQXV0aEVudHJ5Q29tcG9uZW50c19tc2lzZG5TdWJtaXQge1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG59XG5cbi8qIFhYWDogVGhpcyBzaG91bGQgYmUgYSBjb21tb24gYnV0dG9uIGNsYXNzICovXG4ubXhfSW50ZXJhY3RpdmVBdXRoRW50cnlDb21wb25lbnRzX21zaXNkblN1Ym1pdDpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWZnLWNvbG9yO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLm14X0ludGVyYWN0aXZlQXV0aEVudHJ5Q29tcG9uZW50c190ZXJtc1BvbGljeSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubXhfSW50ZXJhY3RpdmVBdXRoRW50cnlDb21wb25lbnRzX3Bhc3N3b3JkU2VjdGlvbiB7XG4gICAgd2lkdGg6IDMwMHB4O1xufVxuXG4ubXhfSW50ZXJhY3RpdmVBdXRoRW50cnlDb21wb25lbnRzX3Nzb19idXR0b25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIH1cbn1cblxuLm14X0ludGVyYWN0aXZlQXV0aEVudHJ5Q29tcG9uZW50c19lbWFpbFdyYXBwZXIge1xuICAgIC8qIFwiUmVzZW5kXCIgYnV0dG9uL2xpbmsgKi9cbiAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmtfaW5saW5lIHtcbiAgICAgICAgLyogV2UgbmVlZCB0aGlzIHRvIGJlIGFuIGlubGluZS1ibG9jayBzbyBwb3NpdGlvbmluZyB3b3JrcyBjb3JyZWN0bHkgKi9cbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgLyogU3Bpbm5lciBhcyBlbmQgYWRvcm5tZW50IG9mIHRoZSBcInJlc2VuZFwiIGJ1dHRvbi9saW5rICovXG4gICAgICAgIC5teF9TcGlubmVyIHtcbiAgICAgICAgICAgIC8qIFNwaW5uZXJzIGFyZSB1c3VhbGx5IGJsb2NrIGVsZW1lbnRzLCBidXQgd2UgbmVlZCBpdCBhcyBpbmxpbmUgZWxlbWVudCAqL1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbiAgICAgICAgICAgIC8qIFNwaW5uZXJzIGJ5IGRlZmF1bHQgZmlsbCBhbGwgYXZhaWxhYmxlIHdpZHRoLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0ICovXG4gICAgICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICAgICAgLyogV2UgbmVlZCB0byBjZW50ZXIgdGhlIHNwaW5uZXIgcmVsYXRpdmUgdG8gdGhlIGJ1dHRvbi9saW5rICovXG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQXV0aEJvZHlfbGFuZ3VhZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ubXhfQXV0aEJvZHlfbGFuZ3VhZ2UgLm14X0Ryb3Bkb3duX2lucHV0IHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgY29sb3I6ICRhdXRocGFnZS1sYW5nLWNvbG9yO1xuICAgIHdpZHRoOiBhdXRvO1xufVxuXG4ubXhfQXV0aEJvZHlfbGFuZ3VhZ2UgLm14X0Ryb3Bkb3duX2Fycm93IHtcbiAgICBiYWNrZ3JvdW5kOiAkYXV0aHBhZ2UtbGFuZy1jb2xvcjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Mb2dpbldpdGhRUlNlY3Rpb24gLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctMTI7XG59XG5cbi5teF9BdXRoUGFnZSAubXhfTG9naW5XaXRoUVIge1xuICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbiArIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctODtcbiAgICB9XG5cbiAgICAubXhfTG9naW5XaXRoUVJfc2VwYXJhdG9yIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICY6OmJlZm9yZSxcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bm90KDplbXB0eSkge1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xufVxuXG4ubXhfVXNlclNldHRpbmdzRGlhbG9nIC5teF9Mb2dpbldpdGhRUiB7XG4gICAgLm14X0FjY2Vzc2libGVCdXR0b24gKyAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZy0xMjtcbiAgICB9XG5cbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG5cbiAgICBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMjRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjg7XG4gICAgfVxuXG4gICAgLm14X1FSQ29kZSB7XG4gICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTEyICRzcGFjaW5nLTQwO1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTI4IDA7XG4gICAgfVxuXG4gICAgLm14X0xvZ2luV2l0aFFSX2J1dHRvbnMge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm14X0xvZ2luV2l0aFFSX3FyV3JhcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxufVxuXG4ubXhfTG9naW5XaXRoUVIge1xuICAgIG1pbi1oZWlnaHQ6IDM1MHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC5teF9Mb2dpbldpdGhRUl9jZW50cmVUaXRsZSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRyZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGgxID4gc3ZnIHtcbiAgICAgICAgJi5ub3JtYWwge1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgfVxuICAgICAgICAmLmVycm9yIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgICAgIH1cbiAgICAgICAgJi5zdWNjZXNzIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgICAgICB9XG4gICAgICAgIGhlaWdodDogMS4zZW07XG4gICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAubXhfTG9naW5XaXRoUVJfY29uZmlybWF0aW9uRGlnaXRzIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTQ4IGF1dG87XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMjRweDtcbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgfVxuXG4gICAgLm14X0xvZ2luV2l0aFFSX2NvbmZpcm1hdGlvbkFsZXJ0IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHF1YXRlcm5hcnktY29udGVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNwYWNpbmctODtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctODtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfTG9naW5XaXRoUVJfc2VwYXJhdG9yIHtcbiAgICAgICAgbWFyZ2luOiAxZW0gMDtcbiAgICB9XG5cbiAgICBvbCB7XG4gICAgICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lkZTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XG5cbiAgICAgICAgbGk6Om1hcmtlciB7XG4gICAgICAgICAgICBjb2xvcjogJGFjY2VudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Mb2dpbldpdGhRUl9CYWNrQnV0dG9uIHtcbiAgICAgICAgaGVpZ2h0OiAkc3BhY2luZy0xMjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctMjQ7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfTG9naW5XaXRoUVJfbWFpbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICB9XG5cbiAgICAubXhfUVJDb2RlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNwYWNpbmctODtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm14X0xvZ2luV2l0aFFSX3NwaW5uZXIge1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuJFBhc3NwaHJhc2VTdHJlbmd0aEhpZ2g6ICRhY2NlbnQ7XG4kUGFzc3BocmFzZVN0cmVuZ3RoTWVkaXVtOiAkdXNlcm5hbWUtdmFyaWFudDUtY29sb3I7XG4kUGFzc3BocmFzZVN0cmVuZ3RoTG93OiAkYWxlcnQ7XG5cbnByb2dyZXNzLm14X1Bhc3NwaHJhc2VGaWVsZF9wcm9ncmVzcyB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTEycHg7XG5cbiAgICBAbWl4aW4gUHJvZ3Jlc3NCYXJCb3JkZXJSYWRpdXMgXCIycHhcIjtcbiAgICBAbWl4aW4gUHJvZ3Jlc3NCYXJDb2xvdXIgJFBhc3NwaHJhc2VTdHJlbmd0aExvdztcbiAgICAmW3ZhbHVlPVwiMlwiXSxcbiAgICAmW3ZhbHVlPVwiM1wiXSB7XG4gICAgICAgIEBtaXhpbiBQcm9ncmVzc0JhckNvbG91ciAkUGFzc3BocmFzZVN0cmVuZ3RoTWVkaXVtO1xuICAgIH1cbiAgICAmW3ZhbHVlPVwiNFwiXSB7XG4gICAgICAgIEBtaXhpbiBQcm9ncmVzc0JhckNvbG91ciAkUGFzc3BocmFzZVN0cmVuZ3RoSGlnaDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfV2VsY29tZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgJi5teF9XZWxjb21lUGFnZV9yZWdpc3RyYXRpb25EaXNhYmxlZCB7XG4gICAgICAgIC5teF9CdXR0b25DcmVhdGVBY2NvdW50IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9XZWxjb21lIC5teF9BdXRoQm9keV9sYW5ndWFnZSB7XG4gICAgd2lkdGg6IDE2MHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjQgVGV4dFJQIEZvdW5kYXRpb25cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfWFJQTFdhbGxldExvZ2luIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi5teF9YUlBMV2FsbGV0TG9naW5fY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIHBhZGRpbmc6IDMycHggMjRweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbn1cblxuLyogSGVhZGVyIFNlY3Rpb24gKi9cbi5teF9YUlBMV2FsbGV0TG9naW5faGVhZGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMzJweDtcbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9sb2dvIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX2xvZ29JY29uIHtcbiAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGFuaW1hdGlvbjogcHVsc2UgMnMgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgcHVsc2Uge1xuICAgIDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxuICAgIDUwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IH1cbiAgICAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX3RpdGxlIHtcbiAgICBtYXJnaW46IDAgMCAxMnB4IDA7XG4gICAgZm9udC1zaXplOiAyOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9zdWJ0aXRsZSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8qIEVycm9yIEJhbm5lciAqL1xuLm14X1hSUExXYWxsZXRMb2dpbl9lcnJvckJhbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IDEycHg7XG4gICAgYmFja2dyb3VuZDogI2ZlZjJmMjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmVjYWNhO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX2Vycm9ySWNvbiB7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IDJweDtcbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9lcnJvckNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgXG4gICAgaDQge1xuICAgICAgICBtYXJnaW46IDAgMCA0cHggMDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogI2RjMjYyNjtcbiAgICB9XG4gICAgXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBjb2xvcjogIzdmMWQxZDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICB9XG59XG5cbi8qIFdhbGxldCBDYXJkcyAqL1xuLm14X1hSUExXYWxsZXRMb2dpbl93YWxsZXRzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAxNnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDMycHg7XG59XG5cbi5teF9YUlBMV2FsbGV0TG9naW5fY2FyZCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5teF9YUlBMV2FsbGV0TG9naW5fY2FyZEJ1dHRvbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICB9XG5cbiAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxuXG4gICAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX2NhcmRDb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMjBweCAyNHB4O1xuICAgIGdhcDogMTZweDtcbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9jYXJkSWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJhY2tncm91bmQ6ICRxdWF0ZXJuYXJ5LWNvbnRlbnQ7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5teF9YUlBMV2FsbGV0TG9naW5fZW1vamkge1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9jYXJkSW5mbyB7XG4gICAgZmxleDogMTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX2NhcmRUaXRsZSB7XG4gICAgbWFyZ2luOiAwIDAgNHB4IDA7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9jYXJkRGVzY3JpcHRpb24ge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX2NhcmRBcnJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX2Fycm93IHtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX2NhcmRCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkgLm14X1hSUExXYWxsZXRMb2dpbl9hcnJvdyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG59XG5cbi5teF9YUlBMV2FsbGV0TG9naW5fbG9hZGluZ1RleHQge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi8qIFdhbGxldC1zcGVjaWZpYyBzdHlsaW5nICovXG4ubXhfWFJQTFdhbGxldExvZ2luX3h1bW0ge1xuICAgICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICBib3JkZXItY29sb3I6ICMzMDUyZmY7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzMDUyZmYwOCwgIzMwNTJmZjA0KTtcbiAgICB9XG4gICAgXG4gICAgLm14X1hSUExXYWxsZXRMb2dpbl9jYXJkSWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzMDUyZmYsICM0NDYxZmYpO1xuICAgIH1cbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9nZW0ge1xuICAgICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICBib3JkZXItY29sb3I6ICMwMGQ0YWE7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGQ0YWEwOCwgIzAwZDRhYTA0KTtcbiAgICB9XG4gICAgXG4gICAgLm14X1hSUExXYWxsZXRMb2dpbl9jYXJkSWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGQ0YWEsICMwMGU2YzApO1xuICAgIH1cbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9jcm9zc21hcmsge1xuICAgICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZjZiNmI7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZjZiNmIwOCwgI2ZmNmI2YjA0KTtcbiAgICB9XG4gICAgXG4gICAgLm14X1hSUExXYWxsZXRMb2dpbl9jYXJkSWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZjZiNmIsICNmZjgwODApO1xuICAgIH1cbn1cblxuLyogRm9vdGVyIFNlY3Rpb24gKi9cbi5teF9YUlBMV2FsbGV0TG9naW5fZm9vdGVyIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICBwYWRkaW5nLXRvcDogMjRweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teF9YUlBMV2FsbGV0TG9naW5fc2VjdXJpdHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX3NlY3VyaXR5SWNvbiB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xufVxuXG4ubXhfWFJQTFdhbGxldExvZ2luX3NlY3VyaXR5VGV4dCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5teF9YUlBMV2FsbGV0TG9naW5faGVscCB7XG4gICAgbWFyZ2luLXRvcDogMTZweDtcbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9oZWxwVGV4dCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLm14X1hSUExXYWxsZXRMb2dpbl9oZWxwTGluayB7XG4gICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICBcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4vKiBSZXNwb25zaXZlIERlc2lnbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLm14X1hSUExXYWxsZXRMb2dpbl9jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDIwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgfVxuICAgIFxuICAgIC5teF9YUlBMV2FsbGV0TG9naW5fdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgfVxuICAgIFxuICAgIC5teF9YUlBMV2FsbGV0TG9naW5fc3VidGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgfVxuICAgIFxuICAgIC5teF9YUlBMV2FsbGV0TG9naW5fY2FyZENvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICB9XG4gICAgXG4gICAgLm14X1hSUExXYWxsZXRMb2dpbl9jYXJkSWNvbiB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxuICAgIFxuICAgIC5teF9YUlBMV2FsbGV0TG9naW5fZW1vamkge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgfVxuICAgIFxuICAgIC5teF9YUlBMV2FsbGV0TG9naW5fY2FyZFRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgIH1cbiAgICBcbiAgICAubXhfWFJQTFdhbGxldExvZ2luX2NhcmREZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAzMjBweCkge1xuICAgIC5teF9YUlBMV2FsbGV0TG9naW5fY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogMjBweCAxNnB4O1xuICAgIH1cbiAgICBcbiAgICAubXhfWFJQTFdhbGxldExvZ2luX2NhcmRDb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgfVxufVxuXG4vKiBEYXJrIHRoZW1lIHN1cHBvcnQgKi9cbi5teF90aGVtZV9kYXJrIHtcbiAgICAubXhfWFJQTFdhbGxldExvZ2luX2NvbnRhaW5lciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgfVxuICAgIFxuICAgIC5teF9YUlBMV2FsbGV0TG9naW5fY2FyZEJ1dHRvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgICAgICAgXG4gICAgICAgICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAubXhfWFJQTFdhbGxldExvZ2luX2Vycm9yQmFubmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzQyMjAwNjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjOTI0MDBlO1xuICAgICAgICBcbiAgICAgICAgLm14X1hSUExXYWxsZXRMb2dpbl9lcnJvckNvbnRlbnQge1xuICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmJiZjI0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2Q5NzcwNjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyNCBUZXh0UlAgRm91bmRhdGlvblxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9YUlBMQXV0aENhbGxiYWNrIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWluLWhlaWdodDogNDAwcHg7XG4gICAgcGFkZGluZzogMzJweDtcbn1cblxuLm14X1hSUExBdXRoQ2FsbGJhY2tfY29udGVudCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5teF9YUlBMQXV0aENhbGxiYWNrX2hlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5teF9YUlBMQXV0aENhbGxiYWNrX3N1Y2Nlc3MsXG4ubXhfWFJQTEF1dGhDYWxsYmFja19lcnJvciB7XG4gICAgZm9udC1zaXplOiA0OHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4ubXhfWFJQTEF1dGhDYWxsYmFja190aXRsZSB7XG4gICAgbWFyZ2luOiAwIDAgMTZweCAwO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xufVxuXG4ubXhfWFJQTEF1dGhDYWxsYmFja19tZXNzYWdlIHtcbiAgICBtYXJnaW46IDAgMCAyNHB4IDA7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLm14X1hSUExBdXRoQ2FsbGJhY2tfYWN0aW9ucyB7XG4gICAgbWFyZ2luLXRvcDogMjRweDtcbn1cblxuLm14X1hSUExBdXRoQ2FsbGJhY2tfcmV0cnlCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6ICRhY2NlbnQ7XG4gICAgY29sb3I6ICRhY2NlbnQtZmctY29sb3I7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMwYWEyNzQ7IC8qIERhcmtlciBzaGFkZSBvZiAkYWNjZW50ICgjMGRiZDhiKSBmb3IgaG92ZXIgc3RhdGUgKi9cbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cbiAgICBcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8qIFJlc3BvbnNpdmUgZGVzaWduICovXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAubXhfWFJQTEF1dGhDYWxsYmFjayB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICAgIH1cbiAgICBcbiAgICAubXhfWFJQTEF1dGhDYWxsYmFja190aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB9XG4gICAgXG4gICAgLm14X1hSUExBdXRoQ2FsbGJhY2tfbWVzc2FnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQmFzZUF2YXRhciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC8qIEluIGF0IGxlYXN0IEZpcmVmb3gsIHRoZSBjYXNlIG9mIHJlbGF0aXZlIHBvc2l0aW9uZWQgaW5saW5lIGVsZW1lbnRzICovXG4gICAgLyogKHN1Y2ggYXMgbXhfQmFzZUF2YXRhcikgd2l0aCBhYnNvbHV0ZSBwb3NpdGlvbmVkIGNoaWxkcmVuIChzdWNoIGFzICovXG4gICAgLyogbXhfQmFzZUF2YXRhcl9pbml0aWFsKSBpcyBhIGRhcmsgY29ybmVyIGZ1bGwgb2Ygc3BpZGVyIHdlYnMuIEl0IHdpbGwgZ2l2ZSAqL1xuICAgIC8qIGRpZmZlcmVudCByZXN1bHRzIGR1cmluZyBmdWxsIHJlZmxvdyBvZiB0aGUgcGFnZSB2cy4gaW5jcmVtZW50YWwgcmVmbG93ICovXG4gICAgLyogb2Ygc21hbGwgcG9ydGlvbnMuIFdoaWxlIHRoYXQncyBzdXJlbHkgYSBicm93c2VyIGJ1Zywgd2UgY2FuIGF2b2lkIGl0IGJ5ICovXG4gICAgLyogdXNpbmcgYGlubGluZS1ibG9ja2AgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBgaW5saW5lYC4gKi9cbiAgICAvKiBodHRwczovL2dpdGh1Yi5jb20vdmVjdG9yLWltL2VsZW1lbnQtd2ViL2lzc3Vlcy81NTk0ICovXG4gICAgLyogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTA1MyAqL1xuICAgIC8qIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTEzOSAqL1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICYubXhfUm9vbUF2YXRhcl9pc1NwYWNlUm9vbSB7XG4gICAgICAgICYubXhfQmFzZUF2YXRhcl9pbWFnZSxcbiAgICAgICAgLm14X0Jhc2VBdmF0YXJfaW1hZ2Uge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfQmFzZUF2YXRhcl9pbml0aWFsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICBjb2xvcjogJGF2YXRhci1pbml0aWFsLWNvbG9yO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBzcGVhazogbm9uZTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4ubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgIGJvcmRlci1yYWRpdXM6IDEyNXB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG59XG5cbi8qIFBlcmN5IHNjcmVlbnNob3QgdGVzdCBzcGVjaWZpYyBDU1MgKi9cbkBtZWRpYSBvbmx5IHBlcmN5IHtcbiAgICAvKiBTdGljayB0aGUgZGVmYXVsdCByb29tIGF2YXRhciBjb2xvdXIsIHNvIGl0IGRvZXNuJ3QgY2F1c2UgYSBmYWxzZSBkaWZmIG9uIHRoZSBzY3JlZW5zaG90ICovXG4gICAgLm14X0Jhc2VBdmF0YXJfaW5pdGlhbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBlcmN5LWNvbG9yLWF2YXRhcikgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTI1cHg7XG4gICAgfVxuICAgIC5teF9Sb29tQXZhdGFyX2lzU3BhY2VSb29tIC5teF9CYXNlQXZhdGFyX2luaXRpYWwge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgfVxuICAgIC5teF9CYXNlQXZhdGFyX2luaXRpYWwgKyAubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRGVjb3JhdGVkUm9vbUF2YXRhcixcbi5teF9FeHRyYVRpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjb250YWluOiBjb250ZW50O1xuXG4gICAgJi5teF9EZWNvcmF0ZWRSb29tQXZhdGFyX2N1dG91dCAubXhfQmFzZUF2YXRhciB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9kZWNvcmF0ZWQtYXZhdGFyLW1hc2suc3ZnXCIpO1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICB9XG5cbiAgICAubXhfRGVjb3JhdGVkUm9vbUF2YXRhcl9pY29uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAvKiB0aGUgZm9sbG93aW5nIHBlcmNlbnRhZ2UgYmFzZWQgc2l6aW5ncyBhcmUgdG8gbWF0Y2ggdGhlIHNjYWxhYmxlIHN2ZyBtYXNrIGZvciB0aGUgY3V0b3V0ICovXG4gICAgICAgIGJvdHRvbTogLTYuMjUlO1xuICAgICAgICByaWdodDogLTYuMjUlO1xuICAgICAgICBtYXJnaW46IDEyLjUlO1xuICAgICAgICB3aWR0aDogMjUlO1xuICAgICAgICBoZWlnaHQ6IDI1JTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIH1cblxuICAgIC5teF9EZWNvcmF0ZWRSb29tQXZhdGFyX2ljb246OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB9XG5cbiAgICAubXhfRGVjb3JhdGVkUm9vbUF2YXRhcl9pY29uX2dsb2JlOjpiZWZvcmUge1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZDogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2dsb2JlLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfRGVjb3JhdGVkUm9vbUF2YXRhcl9pY29uX29mZmxpbmU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmVzZW5jZS1vZmZsaW5lO1xuICAgIH1cblxuICAgIC5teF9EZWNvcmF0ZWRSb29tQXZhdGFyX2ljb25fb25saW5lOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgIH1cblxuICAgIC5teF9EZWNvcmF0ZWRSb29tQXZhdGFyX2ljb25fYXdheTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByZXNlbmNlLWF3YXk7XG4gICAgfVxuXG4gICAgLm14X0RlY29yYXRlZFJvb21BdmF0YXJfaWNvbl9idXN5OjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJlc2VuY2UtYnVzeTtcbiAgICB9XG5cbiAgICAubXhfTm90aWZpY2F0aW9uQmFkZ2UsXG4gICAgLm14X1Jvb21UaWxlX2JhZGdlQ29udGFpbmVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIHdpZHRoOiAxOHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9XaWRnZXRBdmF0YXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9CZXRhQ2FyZCB7XG4gICAgcGFkZGluZzogJHNwYWNpbmctMjQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuXG4gICAgLm14X0JldGFDYXJkX2NvbHVtbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWZsb3c6IHdyYXA7XG4gICAgICAgIGdhcDogJHNwYWNpbmctMjA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgIC5teF9CZXRhQ2FyZF9jb2x1bW5zX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG5cbiAgICAgICAgICAgIC5teF9CZXRhQ2FyZF90aXRsZSB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTIycHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAkc3BhY2luZy00IDAgMTRweDtcblxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBjb2x1bW4tZ2FwOiAkc3BhY2luZy0xMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0JldGFDYXJkX2NhcHRpb24ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0JldGFDYXJkX2J1dHRvbnMge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2U7XG4gICAgICAgICAgICAgICAgZ2FwOiAkc3BhY2luZy0xMjtcbiAgICAgICAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTIwIGF1dG8gMDtcblxuICAgICAgICAgICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogN3B4IDQwcHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvKiB0ZXh0IG1pZ2h0IG92ZXJmbG93ICovXG5cbiAgICAgICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDI7IC8qIFBsYWNlIGZlZWRiYWNrIGJ1dHRvbiB0b3AgYW5kIHJpZ2h0ICovXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9CZXRhQ2FyZF9yZWZyZXNoV2FybmluZyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctODtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEwcHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfQmV0YUNhcmRfZmFxIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy0yMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG5cbiAgICAgICAgICAgICAgICA+IGg0IHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAkc3BhY2luZy0xMiAwIDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPiBwIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9CZXRhQ2FyZF9jb2x1bW5zX2ltYWdlX3dyYXBwZXIge1xuICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7XG5cbiAgICAgICAgICAgIC5teF9CZXRhQ2FyZF9jb2x1bW5zX2ltYWdlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9CZXRhQ2FyZF9yZWxhdGVkU2V0dGluZ3Mge1xuICAgICAgICAubXhfU2V0dGluZ3NGbGFnIHtcbiAgICAgICAgICAgIG1hcmdpbjogJHNwYWNpbmctMTYgMCAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcblxuICAgICAgICAgICAgLm14X1NldHRpbmdzRmxhZ19taWNyb2NvcHkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTQ7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfQmV0YUNhcmRfYmV0YVBpbGwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQtYWx0O1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nLTQgMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICBsaW5lLWhlaWdodDogMTVweDtcbiAgICBjb2xvcjogJGJ1dHRvbi1wcmltYXJ5LWZnLWNvbG9yO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG4gICAgd29yZC1icmVhazoga2VlcC1hbGw7IC8qIGF2b2lkIG11bHRpcGxlIGxpbmVzIG9uIENKSyBsYW5ndWFnZSAqL1xuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSDFoGltb24gQnJhbmRuZXIgPHNpbW9uLmJyYS5hZ0BnbWFpbC5jb20+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0RldmljZUNvbnRleHRNZW51IHtcbiAgICBtYXgtd2lkdGg6IDI1MnB4O1xuXG4gICAgLm14X0RldmljZUNvbnRleHRNZW51X2RldmljZV9pY29uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9sYWJlbCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCAtIDIwMjMgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vKiBBIGNvbnRleHQgbWVudSB0aGF0IGxhcmdlbHkgZml0cyB0aGUgfCBbaWNvbl0gICAgW2xhYmVsXSB8IGZvcm1hdC4gKi9cbi5teF9JY29uaXplZENvbnRleHRNZW51IHtcbiAgICBtaW4td2lkdGg6IDE0NnB4O1xuICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAvLyBvdmVycmlkZSBkZWZhdWx0IHVsIHN0eWxlc1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgLm14X0ljb25pemVkQ29udGV4dE1lbnVfb3B0aW9uTGlzdCB7XG4gICAgICAgICYgPiAqIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9vcHRpb25MaXN0X2xhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKiB0aGUgbm90Rmlyc3QgY2xhc3MgaXMgZm9yIGNhc2VzIHdoZXJlIHRoZSBvcHRpb25MaXN0IG1pZ2h0IGJlIHVuZGVyIGEgaGVhZGVyIG9mIHNvcnRzLiAqL1xuICAgICAgICAmOm50aC1jaGlsZChuICsgMiksXG4gICAgICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X29wdGlvbkxpc3Rfbm90Rmlyc3Qge1xuICAgICAgICAgICAgLyogVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgd2hlbiB3ZSBjb3VsZCBqdXN0IHVzZSBhIHNpbXBsZSBib3JkZXItdG9wIHByb3BlcnR5LCAqL1xuICAgICAgICAgICAgLyogaG93ZXZlciB3ZSBoYXZlIGEgKGtpbmRhKSBnb29kIHJlYXNvbiBmb3IgZG9pbmcgaXQgdGhpcyB3YXk6IHdlIG5lZWQgb3BhY2l0eS4gKi9cbiAgICAgICAgICAgIC8qIFRvIGdldCB0aGUgcmlnaHQgY29sb3IsIHdlIG5lZWQgYW4gb3BhY2l0eSBtb2RpZmllciB3aGljaCBtZWFucyB3ZSBoYXZlIHRvIHdvcmsgKi9cbiAgICAgICAgICAgIC8qIGFyb3VuZCB0aGUgcHJvYmxlbS4gUG9zdENTUyBkb2Vzbid0IHN1cHBvcnQgdGhlIG9wYWNpdHkoKSBmdW5jdGlvbiwgYW5kIGlmIHdlICovXG4gICAgICAgICAgICAvKiB1c2Ugc29tZXRoaW5nIGxpa2UgcG9zdGNzcy1mdW5jdGlvbnMgd2UgcXVpY2tseSBydW4gaW50byBhbiBpc3N1ZSB3aGVyZSB0aGUgKi9cbiAgICAgICAgICAgIC8qIGZ1bmN0aW9uIHdlIHdvdWxkIGRlZmluZSBnZXRzIHBhc3NlZCBhIENTUyB2YXJpYWJsZSBmb3IgY3VzdG9tIHRoZW1lcywgd2hpY2ggKi9cbiAgICAgICAgICAgIC8qIGNhbid0IGJlIGNvbnZlcnRlZCBlYXNpbHkgZXZlbiB3aGVuIGNvbnNpZGVyaW5nIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MTI2NTM1MC83MDM3Mzc5ICovXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLyogVGhlcmVmb3JlLCB3ZSBqdXN0IGhhY2sgaW4gYSBsaW5lIGFuZCBib3JkZXIgdGhlIHRoaW5nIG91cnNlbHZlcyAqL1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjE7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgICAgICAgICAgIC8qIENvdW50ZXJhY3QgdGhlIHBhZGRpbmcgcHJvYmxlbXMgKHdpZHRoOiAxMDAlIGlnbm9yZXMgdGhlIDQwcHggcGFkZGluZywgKi9cbiAgICAgICAgICAgICAgICAvKiB1bmxlc3Mgd2UgcG9zaXRpb24gaXQgYWJzb2x1dGVseSB0aGVuIGl0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nKS4gKi9cbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHJvdW5kIHRoZSB0b3AgY29ybmVycyBvZiB0aGUgdG9wIGJ1dHRvbiBmb3IgdGhlIGhvdmVyIGVmZmVjdCB0byBiZSBib3VuZGVkICovXG4gICAgICAgICY6Zmlyc3QtY2hpbGQgLm14X0ljb25pemVkQ29udGV4dE1lbnVfaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAgMDsgLyogcmFkaXVzIG1hdGNoZXMgLm14X0NvbnRleHR1YWxNZW51ICovXG4gICAgICAgIH1cblxuICAgICAgICAvKiByb3VuZCB0aGUgYm90dG9tIGNvcm5lcnMgb2YgdGhlIGJvdHRvbSBidXR0b24gZm9yIHRoZSBob3ZlciBlZmZlY3QgdG8gYmUgYm91bmRlZCAqL1xuICAgICAgICAmOmxhc3QtY2hpbGQgLm14X0ljb25pemVkQ29udGV4dE1lbnVfaXRlbTpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCA4cHggOHB4OyAvKiByYWRpdXMgbWF0Y2hlcyAubXhfQ29udGV4dHVhbE1lbnUgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHJvdW5kIGFsbCBjb3JuZXJzIG9mIHRoZSBvbmx5IGJ1dHRvbiBmb3IgdGhlIGhvdmVyIGVmZmVjdCB0byBiZSBib3VuZGVkICovXG4gICAgICAgICY6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZCAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9pdGVtOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OyAvKiByYWRpdXMgbWF0Y2hlcyAubXhfQ29udGV4dHVhbE1lbnUgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X2l0ZW0ge1xuICAgICAgICAgICAgLyogcGFkIHRoZSBpbnNpZGUgb2YgdGhlIGJ1dHRvbiBzbyB0aGF0IHRoZSBob3ZlciBiYWNrZ3JvdW5kIGlzIHBhZGRlZCB0b28gKi9cbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEycHg7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuXG4gICAgICAgICAgICAvKiBDcmVhdGUgYSBmbGV4Ym94IHRvIG1vcmUgZWFzaWx5IGRlZmluZSB0aGUgbGlzdCBpdGVtcyAqL1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtZW51LXNlbGVjdGVkLWNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fZGlzYWJsZWQge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9pY29uIHtcbiAgICAgICAgICAgICAgICAvKiBpY29ucyAqL1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMTZweDtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNwYW4ubXhfSWNvbml6ZWRDb250ZXh0TWVudV9sYWJlbCB7XG4gICAgICAgICAgICAgICAgLyogbGFiZWxzICovXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZmxleDogMTtcblxuICAgICAgICAgICAgICAgIC8qIEVsbGlwc2l6ZSBhbnkgdGV4dCBvdmVyZmxvdyAqL1xuICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0ljb25pemVkQ29udGV4dE1lbnVfaWNvbiArIC5teF9JY29uaXplZENvbnRleHRNZW51X2xhYmVsIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDE0cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9CZXRhQ2FyZF9iZXRhUGlsbCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9pY29uIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0ljb25pemVkQ29udGV4dE1lbnVfb3B0aW9uTGlzdF9yZWQge1xuICAgICAgICAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9pdGVtIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYWxlcnQgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X2ljb246OmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9vcHRpb25fcmVkIHtcbiAgICAgICAgY29sb3I6ICRhbGVydCAhaW1wb3J0YW50O1xuXG4gICAgICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X2ljb246OmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9hY3RpdmUge1xuICAgICAgICAmLm14X0ljb25pemVkQ29udGV4dE1lbnVfaXRlbSxcbiAgICAgICAgLm14X0ljb25pemVkQ29udGV4dE1lbnVfaXRlbSB7XG4gICAgICAgICAgICBjb2xvcjogJGFjY2VudCAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0ljb25pemVkQ29udGV4dE1lbnVfaWNvbjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X0ljb25pemVkQ29udGV4dE1lbnVfY29tcGFjdCB7XG4gICAgICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X29wdGlvbkxpc3QgPiAqIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNnB4IDhweCAxMXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0ljb25pemVkQ29udGV4dE1lbnVfY2hlY2tlZCxcbiAgICAubXhfSWNvbml6ZWRDb250ZXh0TWVudV91bmNoZWNrZWQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtNXB4O1xuICAgIH1cblxuICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X2RldmVsb3BlclRvb2xzOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3MvZmxhc2suc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X2NoZWNrZWQ6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9jaGVja21hcmsuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X3VuY2hlY2tlZDo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogdW5zZXQ7XG4gICAgfVxuXG4gICAgLm14X0ljb25pemVkQ29udGV4dE1lbnVfc3VibGFiZWwge1xuICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgIH1cbn1cblxuLm14X0ljb25pemVkQ29udGV4dE1lbnVfaXRlbS5teF9JY29uaXplZENvbnRleHRNZW51X2l0ZW1EZXN0cnVjdGl2ZSB7XG4gICAgY29sb3I6ICRhbGVydCAhaW1wb3J0YW50O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0xlZ2FjeUNhbGxDb250ZXh0TWVudV9pdGVtIHtcbiAgICB3aWR0aDogMjA1cHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHBhZGRpbmctbGVmdDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogNDBweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogY2VudGVyO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5Db3B5cmlnaHQgMjAyMSBNaWNoYWVsIFdlaW1hbm4gPG1haWxAbWljaGFlbC13ZWltYW5uLmV1PlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NZXNzYWdlQ29udGV4dE1lbnUge1xuICAgIC5teF9JY29uaXplZENvbnRleHRNZW51X2ljb24ge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29udGV4dE1lbnVfaWNvbkNvbGxhcHNlOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbWVzc2FnZS9jaGV2cm9uLXVwLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25SZXBvcnQ6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy93YXJuaW5nLWJhZGdlLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25MaW5rOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbGluay5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb250ZXh0TWVudV9pY29uUGVybWFsaW5rOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9zaGFyZS5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb250ZXh0TWVudV9pY29uVW5oaWRlUHJldmlldzo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NldHRpbmdzL2FwcGVhcmFuY2Uuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29udGV4dE1lbnVfaWNvbk9wZW5Jbk1hcFNpdGU6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZXh0ZXJuYWwtbGluay5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb250ZXh0TWVudV9pY29uRW5kUG9sbDo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NoZWNrLXdoaXRlLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25Gb3J3YXJkOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbWVzc2FnZS9md2Quc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29udGV4dE1lbnVfaWNvblJlZGFjdDo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3RyYXNoY2FuLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25SZXNlbmQ6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yZXRyeS5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb250ZXh0TWVudV9pY29uU291cmNlOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9mb3JtYXQtYmFyL2NvZGUuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29udGV4dE1lbnVfaWNvblF1b3RlOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9mb3JtYXQtYmFyL3F1b3RlLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25QaW46OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL3Bpbi11cHJpZ2h0LnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25VbnBpbjo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vcGluLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25Db3B5OjpiZWZvcmUge1xuICAgICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICAgIGxlZnQ6IDJweDtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKCRjb3B5LWJ1dHRvbi11cmwpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICB0b3A6IDNweDtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25FZGl0OjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9tZXNzYWdlLWJhci9lZGl0LnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25SZXBseTo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vbWVzc2FnZS1iYXIvcmVwbHkuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29udGV4dE1lbnVfaWNvblJlcGx5SW5UaHJlYWQ6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9tZXNzYWdlL3RocmVhZC5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb250ZXh0TWVudV9pY29uUmVhY3Q6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL21lc3NhZ2UtYmFyL2Vtb2ppLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2ljb25WaWV3SW5Sb29tOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvdmlldy1pbi1yb29tLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbnRleHRNZW51X2p1bXBUb0V2ZW50OjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2hpbGQtcmVsYXRpb25zaGlwLnN2Z1wiKTtcbiAgICB9XG59XG4iLCIubXhfUm9vbUdlbmVyYWxDb250ZXh0TWVudV9pY29uU3Rhcjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3QvZmF2b3JpdGUuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbUdlbmVyYWxDb250ZXh0TWVudV9pY29uQXJyb3dEb3duOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9sb3ctcHJpb3JpdHkuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbUdlbmVyYWxDb250ZXh0TWVudV9pY29uTWFya0FzUmVhZDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3QvbWFyay1hcy1yZWFkLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21HZW5lcmFsQ29udGV4dE1lbnVfaWNvbk5vdGlmaWNhdGlvbnNEZWZhdWx0OjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9ub3RpZmljYXRpb25zLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21HZW5lcmFsQ29udGV4dE1lbnVfaWNvbk5vdGlmaWNhdGlvbnNBbGxNZXNzYWdlczo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3Qvbm90aWZpY2F0aW9ucy1kZWZhdWx0LnN2Z1wiKTtcbn1cblxuLm14X1Jvb21HZW5lcmFsQ29udGV4dE1lbnVfaWNvbk5vdGlmaWNhdGlvbnNNZW50aW9uc0tleXdvcmRzOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9ub3RpZmljYXRpb25zLWRtLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21HZW5lcmFsQ29udGV4dE1lbnVfaWNvbk5vdGlmaWNhdGlvbnNOb25lOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9ub3RpZmljYXRpb25zLW9mZi5zdmdcIik7XG59XG5cbi5teF9Sb29tR2VuZXJhbENvbnRleHRNZW51X2ljb25QZW9wbGU6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vbWVtYmVycy5zdmdcIik7XG59XG5cbi5teF9Sb29tR2VuZXJhbENvbnRleHRNZW51X2ljb25GaWxlczo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9maWxlcy5zdmdcIik7XG59XG5cbi5teF9Sb29tR2VuZXJhbENvbnRleHRNZW51X2ljb25QaW5zOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL3Bpbi11cHJpZ2h0LnN2Z1wiKTtcbn1cblxuLm14X1Jvb21HZW5lcmFsQ29udGV4dE1lbnVfaWNvbldpZGdldHM6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vYXBwcy5zdmdcIik7XG59XG5cbi5teF9Sb29tR2VuZXJhbENvbnRleHRNZW51X2ljb25TZXR0aW5nczo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3Muc3ZnXCIpO1xufVxuXG4ubXhfUm9vbUdlbmVyYWxDb250ZXh0TWVudV9pY29uRXhwb3J0OjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9leHBvcnQuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbUdlbmVyYWxDb250ZXh0TWVudV9pY29uRGV2ZWxvcGVyVG9vbHM6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NldHRpbmdzL2ZsYXNrLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21HZW5lcmFsQ29udGV4dE1lbnVfaWNvbkNvcHlMaW5rOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9saW5rLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21HZW5lcmFsQ29udGV4dE1lbnVfaWNvbkludml0ZTo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9pbnZpdGUuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbUdlbmVyYWxDb250ZXh0TWVudV9pY29uU2lnbk91dDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbGVhdmUuc3ZnXCIpO1xufVxuIiwiLm14X1Jvb21Ob3RpZmljYXRpb25Db250ZXh0TWVudV9pY29uQmVsbDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbm90aWZpY2F0aW9ucy5zdmdcIik7XG59XG4ubXhfUm9vbU5vdGlmaWNhdGlvbkNvbnRleHRNZW51X2ljb25CZWxsRG90OjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9ub3RpZmljYXRpb25zLWRlZmF1bHQuc3ZnXCIpO1xufVxuLm14X1Jvb21Ob3RpZmljYXRpb25Db250ZXh0TWVudV9pY29uQmVsbE1lbnRpb25zOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9ub3RpZmljYXRpb25zLWRtLnN2Z1wiKTtcbn1cbi5teF9Sb29tTm90aWZpY2F0aW9uQ29udGV4dE1lbnVfaWNvbkJlbGxDcm9zc2VkOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9ub3RpZmljYXRpb25zLW9mZi5zdmdcIik7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQWRkRXhpc3RpbmdUb1NwYWNlRGlhbG9nX3dyYXBwZXIge1xuICAgIC5teF9EaWFsb2cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbn1cblxuLm14X0FkZEV4aXN0aW5nVG9TcGFjZSB7XG4gICAgLm14X1NlYXJjaEJveCB7XG4gICAgICAgIC8qIFRvIG1hdGNoIHRoZSBzcGFjZSBhcm91bmQgdGhlIHRpdGxlICovXG4gICAgICAgIG1hcmdpbjogMCAwIDE1cHggMDtcbiAgICAgICAgZmxleC1ncm93OiAwO1xuICAgIH1cblxuICAgIC5teF9BZGRFeGlzdGluZ1RvU3BhY2VfY29udGVudCB7XG4gICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICB9XG5cbiAgICAubXhfQWRkRXhpc3RpbmdUb1NwYWNlX25vUmVzdWx0cyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICAgIH1cblxuICAgIC5teF9BZGRFeGlzdGluZ1RvU3BhY2Vfc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDsgLy8gcHJvdmlkZXMgc3BhY2UgZm9yIHNjcm9sbGJhciBzbyB0aGF0IGNoZWNrYm94IGFuZCBzY3JvbGxiYXIgZG8gbm90IGNvbGxpZGVcblxuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgICAgIH1cblxuICAgICAgICA+IGgzIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmsge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfQWRkRXhpc3RpbmdUb1NwYWNlX2Zvb3RlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG5cbiAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcblxuICAgICAgICAgICAgLm14X1Byb2dyZXNzQmFyIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDhweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIEBtaXhpbiBQcm9ncmVzc0JhckJvcmRlclJhZGl1cyA4cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9BZGRFeGlzdGluZ1RvU3BhY2VEaWFsb2dfcHJvZ3Jlc3NUZXh0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQWRkRXhpc3RpbmdUb1NwYWNlX2Vycm9yIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcblxuICAgICAgICAgICAgPiBpbWcge1xuICAgICAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0FkZEV4aXN0aW5nVG9TcGFjZV9lcnJvckhlYWRpbmcge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xOHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9BZGRFeGlzdGluZ1RvU3BhY2VfZXJyb3JDYXB0aW9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9wcmltYXJ5IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAzNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0FkZEV4aXN0aW5nVG9TcGFjZV9yZXRyeUJ1dHRvbiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTJweDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjRweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcmV0cnkuc3ZnXCIpO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfQWRkRXhpc3RpbmdUb1NwYWNlRGlhbG9nIHtcbiAgICB3aWR0aDogNDgwcHg7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgaGVpZ2h0OiA4MHZoO1xuXG4gICAgLm14X0FkZEV4aXN0aW5nVG9TcGFjZSB7XG4gICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICAgIH1cbn1cblxuLm14X1N1YnNwYWNlU2VsZWN0b3Ige1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdW5zZXQ7XG4gICAgfVxuXG4gICAgLm14X0Jhc2VBdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgbWFyZ2luOiBhdXRvIDE2cHggYXV0byA1cHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgPiBkaXYge1xuICAgICAgICA+IGgxIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjJweDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Ecm9wZG93bl9pbnB1dCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcblxuICAgICAgICA+IC5teF9Ecm9wZG93bl9vcHRpb24ge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgZmxleDogdW5zZXQ7XG4gICAgICAgICAgICBoZWlnaHQ6IHVuc2V0O1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuXG4gICAgICAgICAgICAubXhfQmFzZUF2YXRhciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Ecm9wZG93bl9tZW51IHtcbiAgICAgICAgICAgIC5teF9TdWJzcGFjZVNlbGVjdG9yX2Ryb3Bkb3duT3B0aW9uQWN0aXZlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGFjY2VudDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogOHB4O1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L2NoZWNrbWFyay5zdmdcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1N1YnNwYWNlU2VsZWN0b3Jfb25seVNwYWNlIHtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICB9XG59XG5cbi5teF9BZGRFeGlzdGluZ1RvU3BhY2VfZW50cnkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLXRvcDogMTJweDtcblxuICAgIC5teF9EZWNvcmF0ZWRSb29tQXZhdGFyLCAvKiB3ZSBjYW4ndCB0YXJnZXQgLm14X0Jhc2VBdmF0YXIgaGVyZSBhcyBpdCdsbCBicmVhayB0aGUgZGVjb3JhdGVkIGF2YXRhciBzdHlsaW5nICovXG4gICAgLm14X0Jhc2VBdmF0YXIubXhfUm9vbUF2YXRhcl9pc1NwYWNlUm9vbSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICB9XG5cbiAgICBpbWcubXhfUm9vbUF2YXRhcl9pc1NwYWNlUm9vbSxcbiAgICAubXhfUm9vbUF2YXRhcl9pc1NwYWNlUm9vbSBpbWcge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgfVxuXG4gICAgLm14X0FkZEV4aXN0aW5nVG9TcGFjZV9lbnRyeV9uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICAgIH1cblxuICAgIC5teF9DaGVja2JveCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0FuYWx5dGljc0xlYXJuTW9yZURpYWxvZyB7XG4gICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgICAubXhfQW5hbHl0aWNzTGVhcm5Nb3JlX2ltYWdlX2hvbGRlciB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1zaGlueS5zdmdcIik7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciB0b3A7XG4gICAgICAgIGhlaWdodDogMTEycHg7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMHB4O1xuICAgIH1cblxuICAgIC5teF9EaWFsb2dfY29udGVudCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICB9XG5cbiAgICAubXhfQW5hbHl0aWNzTGVhcm5Nb3JlX2NvcHkge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJG1lbnUtYm9yZGVyLWNvbG9yO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAubXhfQW5hbHl0aWNzTGVhcm5Nb3JlX2J1bGxldHMge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgICB9XG5cbiAgICAubXhfQW5hbHl0aWNzTGVhcm5Nb3JlX2J1bGxldHMgbGkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoXCIkKHJlcykvaW1nL3RpY2stY2lyY2xlLnN2Z1wiKSBuby1yZXBlYXQ7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMnB4IDBweCAyMHB4IDMycHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxufVxuIiwiLm14X0FwcERvd25sb2FkRGlhbG9nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAkc3BhY2luZy0zMjtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcblxuICAgICYubXhfRGlhbG9nX2ZpeGVkV2lkdGgge1xuICAgICAgICB3aWR0aDogNjQwcHg7XG4gICAgfVxuXG4gICAgLm14X0FwcERvd25sb2FkRGlhbG9nX2Rlc2t0b3Age1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6ICRzcGFjaW5nLTE2O1xuICAgIH1cblxuICAgIC5teF9BcHBEb3dubG9hZERpYWxvZ19tb2JpbGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBnYXA6ICRzcGFjaW5nLTI0O1xuXG4gICAgICAgIC5teF9BcHBEb3dubG9hZERpYWxvZ19hcHAge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICBmbGV4LWJhc2lzOiA1MCU7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiAkc3BhY2luZy0xNjtcblxuICAgICAgICAgICAgLm14X1FSQ29kZSB7XG4gICAgICAgICAgICAgICAgLyogaW50ZW50aW9uYWxseSBoYXJkY29kZWQgY29sb3IgdG8gZW5zdXJlIHRoZSBRUiBjb2RlIGlzIHJlYWRhYmxlIGluIGFueSBzaXR1YXRpb24gKi9cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJHNwYWNpbmctMjQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgICAgICAgIC5teF9WZXJpZmljYXRpb25RUkNvZGUge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE0NHB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTQ0cHg7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0FwcERvd25sb2FkRGlhbG9nX2luZm8ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9BcHBEb3dubG9hZERpYWxvZ19saW5rcyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgICAgIGdhcDogJHNwYWNpbmctODtcblxuICAgICAgICAgICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9BcHBEb3dubG9hZERpYWxvZ19sZWdhbCB7XG4gICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0J1Z1JlcG9ydERpYWxvZyB7XG4gICAgLm14X0J1Z1JlcG9ydERpYWxvZ19kb3dubG9hZCB7XG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfbGluayB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7IC8qIFNwYWNlIGJldHdlZW4gXCJEb3dubG9hZGluZyBsb2dzLi4uXCIgKi9cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBSb2JpbiBUb3duc2VuZCA8cm9iaW5Acm9iaW4udG93bj5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQnVsa1JlZGFjdERpYWxvZyB7XG4gICAgLm14X0NoZWNrYm94LFxuICAgIC5teF9CdWxrUmVkYWN0RGlhbG9nX2NoZWNrYm94TWljcm9jb3B5IHtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTIwcHg7XG4gICAgfVxuXG4gICAgLm14X0J1bGtSZWRhY3REaWFsb2dfY2hlY2tib3hNaWNyb2NvcHkge1xuICAgICAgICBtYXJnaW4tbGVmdDogMjZweDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTYgQXZpcmFsIERhc2d1cHRhXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0NoYW5nZWxvZ0RpYWxvZ19jb250ZW50IHtcbiAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14X0NoYW5nZWxvZ0RpYWxvZ19saSB7XG4gICAgcGFkZGluZzogMC4yZW07XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogREVWIE5PVEU6IFRoaXMgc3R5bGVzaGVldCBjb3ZlcnMgZGlhbG9ncyBsaXN0ZWQgYnkgdGhlIGNvbXBvdW5kLCBpbmNsdWRpbmcgKi9cbi8qIG92ZXIgbXVsdGlwbGUgUmVhY3QgY29tcG9uZW50cy4gVGhlIGFjdHVhbCBpbm5lciBjb250ZW50cyBvZiB0aGUgZGlhbG9nIHNob3VsZCAqL1xuLyogYmUgaW4gdGhlaXIgcmVzcGVjdGl2ZSBzdHlsZXNoZWV0cy4gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIE92ZXJyaWRlIGxlZ2FjeS9kZWZhdWx0IHN0eWxlcyBmb3IgZGlhbG9ncyAqL1xuLm14X0RpYWxvZ193cmFwcGVyLm14X0NvbXBvdW5kRGlhbG9nID4gLm14X0RpYWxvZyB7XG4gICAgcGFkZGluZzogMDsgLyogd2UnbGwgbWFuYWdlIGl0IG91cnNlbHZlcyAqL1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xufVxuXG4ubXhfQ29tcG91bmREaWFsb2cge1xuICAgIC5teF9EaWFsb2cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cblxuICAgIC5teF9Db21wb3VuZERpYWxvZ19oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiAzMnB4IDMycHggMTZweCAzMnB4O1xuXG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTI0cHg7XG4gICAgICAgICAgICBtYXJnaW46IDA7IC8qIG1hbmFnZWQgYnkgaGVhZGVyIGNsYXNzICovXG4gICAgICAgIH1cblxuICAgICAgICAubXhfQ29tcG91bmREaWFsb2dfY2FuY2VsQnV0dG9uIHtcbiAgICAgICAgICAgIEBtaXhpbiBjdXN0b21pc2VkQ2FuY2VsQnV0dG9uO1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG5cbiAgICAgICAgICAgIC8qIEFsaWduIHdpdGggbWlkZGxlIG9mIHRpdGxlLCAzNHB4IGZyb20gcmlnaHQgZWRnZSAqL1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAzNHB4O1xuICAgICAgICAgICAgcmlnaHQ6IDM0cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfQ29tcG91bmREaWFsb2dfZm9ybSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgLm14X0NvbXBvdW5kRGlhbG9nX2NvbnRlbnQge1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgcGFkZGluZzogOHB4IDMycHg7XG4gICAgfVxuXG4gICAgLm14X0NvbXBvdW5kRGlhbG9nX2Zvb3RlciB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMzJweDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDI0cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9TY3JvbGxhYmxlQmFzZURpYWxvZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgd2lkdGg6IDU0NHB4OyAvKiBmaXhlZCAqL1xuICAgIGhlaWdodDogNTE2cHg7IC8qIGZpeGVkICovXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgbWF4LWhlaWdodDogODAlO1xuXG4gICAgLm14X0NvbXBvdW5kRGlhbG9nX2Zvb3RlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAtNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBoYXJkY29kZWQgY29sb3VyIGZvciBib3RoIHRoZW1lcyAqL1xuICAgICAgICB6LWluZGV4OiAxOyAvKiBuZWVkZWQgdG8gbWFrZSBmb290ZXIgJiBzaGFkb3cgYXBwZWFyIGFib3ZlIGRpYWxvZyBjb250ZW50ICovXG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0NvbmZpcm1TcGFjZVVzZXJBY3Rpb25EaWFsb2dfd3JhcHBlciB7XG4gICAgLm14X0RpYWxvZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMzJweDtcbiAgICB9XG59XG5cbi5teF9Db25maXJtU3BhY2VVc2VyQWN0aW9uRGlhbG9nIHtcbiAgICB3aWR0aDogNDQwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIGhlaWdodDogNTIwcHg7XG5cbiAgICAubXhfRGlhbG9nX2NvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDEycHggMDtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cblxuICAgIC5teF9Db25maXJtVXNlckFjdGlvbkRpYWxvZ19yZWFzb25GaWVsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgfVxuXG4gICAgLm14X0NvbmZpcm1TcGFjZVVzZXJBY3Rpb25EaWFsb2dfd2FybmluZyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDhweCAxMnB4IDQycHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG5cbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTVweDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgICAgICB0b3A6IGNhbGMoNTAlIC0gOHB4KTsgLyogdmVydGljYWwgY2VudGVyaW5nICovXG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9yb29tLXN1bW1hcnkuc3ZnXCIpO1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3IFZlY3RvciBDcmVhdGlvbnMgTHRkLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Db25maXJtVXNlckFjdGlvbkRpYWxvZyAubXhfRGlhbG9nX2NvbnRlbnQgLm14X0NvbmZpcm1Vc2VyQWN0aW9uRGlhbG9nX3VzZXIge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbn1cblxuLm14X0NvbmZpcm1Vc2VyQWN0aW9uRGlhbG9nX2F2YXRhciB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuXG4ubXhfQ29uZmlybVVzZXJBY3Rpb25EaWFsb2dfbmFtZSB7XG4gICAgcGFkZGluZy10b3A6IDJweDtcbiAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG59XG5cbi5teF9Db25maXJtVXNlckFjdGlvbkRpYWxvZ191c2VySWQge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTNweDtcbn1cblxuLm14X0NvbmZpcm1Vc2VyQWN0aW9uRGlhbG9nX3JlYXNvbkZpZWxkIHtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTcgTWljaGFlbCBUZWxhdHluc2tpIDw3dDNjaGd1eUBnbWFpbC5jb20+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0NyZWF0ZVJvb21EaWFsb2dfZGV0YWlscyB7XG4gICAgbWFyZ2luLXRvcDogMTVweDtcblxuICAgIC5teF9DcmVhdGVSb29tRGlhbG9nX2RldGFpbHNfc3VtbWFyeSB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG5cbiAgICAgICAgLyogbGlzdC1zdHlsZSBkb2Vzbid0IGRvIGl0IGZvciB3ZWJraXQgKi9cbiAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpub3QoLmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICA+IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBtYXJnaW46IDVweCAwO1xuXG4gICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9DcmVhdGVSb29tRGlhbG9nX2xhYmVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xufVxuXG4ubXhfQ3JlYXRlUm9vbURpYWxvZ19pbnB1dF9jb250YWluZXIge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG59XG5cbi5teF9DcmVhdGVSb29tRGlhbG9nX2lucHV0IHtcbiAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gICAgcGFkZGluZzogOXB4O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBuZWVkZWQgdG8gbWFrZSB0aGUgYWxpYXMgZmllbGQgb25seSBncm93IGFzIHdpZGUgYXMgbmVlZGVkICovXG4vKiBhcyBvcHBvc2VkIHRvIGZ1bGwgd2lkdGggKi9cbi5teF9DcmVhdGVSb29tRGlhbG9nX2FsaWFzQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIC8qIHB1dCBtYXJnaW4gb24gY29udGFpbmVyIHNvIGl0IGNhbiBjb2xsYXBzZSB3aXRoIHNpYmxpbmdzICovXG4gICAgbWFyZ2luOiAyNHB4IDAgMTBweDtcblxuICAgIC5teF9Sb29tQWxpYXNGaWVsZCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbi5teF9DcmVhdGVSb29tRGlhbG9nIHtcbiAgICAmLm14X0RpYWxvZ19maXhlZFdpZHRoIHtcbiAgICAgICAgd2lkdGg6IDQ1MHB4O1xuICAgIH1cblxuICAgIC5teF9EaWFsb2dfY29udGVudCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgfVxuXG4gICAgcCxcbiAgICAubXhfRmllbGRfaW5wdXQgbGFiZWwge1xuICAgICAgICBjb2xvcjogJG11dGVkLWZnLWNvbG9yO1xuICAgIH1cblxuICAgIC5teF9TZXR0aW5nc0ZsYWcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC5teF9TZXR0aW5nc0ZsYWdfbGFiZWwge1xuICAgICAgICBmbGV4OiAxIDEgMDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIH1cblxuICAgIC5teF9Ub2dnbGVTd2l0Y2gge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDMwcHg7XG4gICAgfVxuXG4gICAgLm14X0RpYWxvZ19jb250ZW50ID4gLm14X1NldHRpbmdzRmxhZyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbjogMCA4NXB4IDAgMDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9DcmVhdGVTdWJzcGFjZURpYWxvZ193cmFwcGVyIHtcbiAgICAubXhfRGlhbG9nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG59XG5cbi5teF9DcmVhdGVTdWJzcGFjZURpYWxvZyB7XG4gICAgd2lkdGg6IDQ4MHB4O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBtaW4taGVpZ2h0OiAwO1xuXG4gICAgLm14X0NyZWF0ZVN1YnNwYWNlRGlhbG9nX2NvbnRlbnQge1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAgICAgLm14X0NyZWF0ZVN1YnNwYWNlRGlhbG9nX2JldGFOb3RpY2Uge1xuICAgICAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcblxuICAgICAgICAgICAgLm14X0JldGFDYXJkX2JldGFQaWxsIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0pvaW5SdWxlRHJvcGRvd24gKyBwIHtcbiAgICAgICAgICAgIGNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfQ3JlYXRlU3Vic3BhY2VEaWFsb2dfZm9vdGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcblxuICAgICAgICAubXhfQ3JlYXRlU3Vic3BhY2VEaWFsb2dfZm9vdGVyX3Byb21wdCB7XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgICAgID4gKiB7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeSB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAzNnB4O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE4IE5ldyBWZWN0b3IgTHRkLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9EZWFjdGl2YXRlQWNjb3VudERpYWxvZyAubXhfRGlhbG9nX2NvbnRlbnQge1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG59XG5cbi5teF9EZWFjdGl2YXRlQWNjb3VudERpYWxvZyAubXhfRGVhY3RpdmF0ZUFjY291bnREaWFsb2dfaW5wdXRfc2VjdGlvbiAubXhfRmllbGQge1xuICAgIHdpZHRoOiAzMDBweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNyBNaWNoYWVsIFRlbGF0eW5za2kgPDd0M2NoZ3V5QGdtYWlsLmNvbT5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRGV2dG9vbHNEaWFsb2dfd3JhcHBlciB7XG4gICAgLm14X0RpYWxvZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuXG4gICAgLm14X0RpYWxvZ19maXhlZFdpZHRoIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcblxuICAgICAgICAubXhfRGlhbG9nX2J1dHRvbnMgYnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9EZXZUb29sc19jb250ZW50IHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4ubXhfRGV2VG9vbHNfUm9vbVN0YXRlRXhwbG9yZXJfcXVlcnkge1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5teF9EZXZUb29sc19idXR0b24ge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHggIWltcG9ydGFudDtcbn1cblxuLm14X0RldlRvb2xzX1Jvb21TdGF0ZUV4cGxvcmVyX2J1dHRvbl9oYXNTcGFjZXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ubXhfRGV2VG9vbHNfYnV0dG9uLm14X0RldlRvb2xzX1Jvb21TdGF0ZUV4cGxvcmVyX2J1dHRvbl9lbXB0eVN0cmluZyB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4ubXhfRGV2VG9vbHNfbGFiZWxfbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG59XG5cbi5teF9EZXZUb29sc19sYWJlbF9yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xufVxuXG4ubXhfRGV2VG9vbHNfbGFiZWxfYm90dG9tIHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTVlNTtcbn1cblxuLm14X0RldlRvb2xzX2lucHV0Um93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG5cbi5teF9EZXZUb29sc19pbnB1dExhYmVsQ2VsbCB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4O1xufVxuXG4ubXhfRGV2VG9vbHNfdGV4dGFyZWEge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICBtYXgtd2lkdGg6IDY4NHB4O1xuICAgIG1pbi1oZWlnaHQ6IDI1MHB4O1xuICAgIHBhZGRpbmc6IDEwcHg7XG59XG5cbi5teF9EZXZUb29sc19ldmVudFR5cGVTdGF0ZUtleUdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLm14X0RldlRvb2xzX2NvbnRlbnQgLm14X0ZpZWxkX2lucHV0OmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogNDJweDtcbn1cblxuLm14X0RldlRvb2xzX1ZlcmlmaWNhdGlvblJlcXVlc3Qge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2NjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIHBhZGRpbmc6IDFweCA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNnB4O1xuICAgIGZvbnQtZmFtaWx5OiAkbW9ub3NwYWNlLWZvbnQtZmFtaWx5O1xuXG4gICAgZGwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1heC1jb250ZW50IGF1dG87XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICBkZCB7XG4gICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAyO1xuICAgIH1cblxuICAgIGRkOmVtcHR5IHtcbiAgICAgICAgY29sb3I6ICM2NjY2NjY7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiKGVtcHR5KVwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHQge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZ3JpZC1jb2x1bW4tc3RhcnQ6IDE7XG4gICAgfVxuXG4gICAgZHQ6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI6XCI7XG4gICAgfVxufVxuXG4ubXhfRGV2VG9vbHNfU2V0dGluZ3NFeHBsb3JlciB7XG4gICAgdGFibGUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuICAgICAgICB0aCB7XG4gICAgICAgICAgICAvKiBDb2xvdXIgY2hvaWNlOiBmaXJzdCBvbmUgYXV0b2NvbXBsZXRlIGdhdmUgbWUuICovXG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGFjY2VudDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCxcbiAgICAgICAgdGgge1xuICAgICAgICAgICAgd2lkdGg6IDM2MHB4OyAvKiBcImZlZWxzIHJpZ2h0XCIgbnVtYmVyICovXG5cbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCArIHRkLFxuICAgICAgICB0aCArIHRoIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgdHI6aG92ZXIge1xuICAgICAgICAgICAgLyogQ29sb3VyIGNob2ljZTogZmlyc3Qgb25lIGF1dG9jb21wbGV0ZSBnYXZlIG1lLiAqL1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9EZXZUb29sc19TZXR0aW5nc0V4cGxvcmVyX211dGFibGUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgIH1cblxuICAgIC5teF9EZXZUb29sc19TZXR0aW5nc0V4cGxvcmVyX2ltbXV0YWJsZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhbGVydDtcbiAgICB9XG5cbiAgICAubXhfRGV2VG9vbHNfU2V0dGluZ3NFeHBsb3Jlcl9lZGl0IHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgfVxuXG4gICAgLm14X0RldlRvb2xzX1NldHRpbmdzRXhwbG9yZXJfd2FybmluZyB7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICRhbGVydDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICB9XG59XG5cbi5teF9EZXZUb29sc19TZXR0aW5nc0V4cGxvcmVyX3NldHRpbmcge1xuICAgIC8qIG92ZXJyaWRlIGRlZmF1bHQgbGluayBidXR0b24gY29sb3IgKi9cbiAgICAvKiBhcyBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgYmFja2dyb3VuZCBoaWdobGlnaHQgKi9cbiAgICAvKiB1c2VkIG9uIGZvY3VzICovXG4gICAgY29sb3I6ICRsaW5rcyAhaW1wb3J0YW50O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0V4cG9ydERpYWxvZyB7XG4gICAgLm14X0V4cG9ydERpYWxvZ19zdWJoZWFkaW5nIHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNnB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDE4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgfVxuXG4gICAgJi5teF9FeHBvcnREaWFsb2dfRXhwb3J0aW5nIHtcbiAgICAgICAgLm14X0V4cG9ydERpYWxvZ19vcHRpb25zIHtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0ZpZWxkX3NlbGVjdDo6YmVmb3JlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU3R5bGVkUmFkaW9CdXR0b24gaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQgKyBkaXYgPiBkaXYge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGluZm8tcGxpbnRoLWZnLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uIGlucHV0W3R5cGU9XCJyYWRpb1wiXTpjaGVja2VkICsgZGl2IHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdW5zZXQ7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRmllbGRfdmFsaWQubXhfRmllbGQgbGFiZWwsXG4gICAgICAgIC5teF9GaWVsZF92YWxpZC5teF9GaWVsZDpmb2N1cy13aXRoaW4gbGFiZWwge1xuICAgICAgICAgICAgY29sb3I6IHVuc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0ZpZWxkX3ZhbGlkLm14X0ZpZWxkLFxuICAgICAgICAubXhfRmllbGRfdmFsaWQubXhfRmllbGQ6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9DaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIGxhYmVsID4gLm14X0NoZWNrYm94X2JhY2tncm91bmQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGluZm8tcGxpbnRoLWZnLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkaW5mby1wbGludGgtZmctY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRXhwb3J0RGlhbG9nX3Byb2dyZXNzIHtcbiAgICAgICAgLm14X0RpYWxvZ19idXR0b25zIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHVuc2V0O1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU3Bpbm5lciB7XG4gICAgICAgICAgICB3aWR0aDogdW5zZXQ7XG4gICAgICAgICAgICBoZWlnaHQ6IHVuc2V0O1xuICAgICAgICAgICAgZmxleDogdW5zZXQ7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC5teF9TdHlsZWRSYWRpb0J1dHRvbiA+IC5teF9TdHlsZWRSYWRpb0J1dHRvbl9jb250ZW50IHtcbiAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgfVxuXG4gICAgLm14X0ZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDI1NnB4O1xuICAgIH1cblxuICAgIC5teF9GaWVsZF9wb3N0Zml4IHtcbiAgICAgICAgcGFkZGluZzogOXB4IDEwcHg7XG4gICAgfVxufVxuXG4ubXhfRXhwb3J0RGlhbG9nX2F0dGFjaG1lbnRzLWNoZWNrYm94IHtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy0xNjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9GZWVkYmFja0RpYWxvZyB7XG4gICAgaHIge1xuICAgICAgICBtYXJnaW46IDI0cHggMDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIH1cblxuICAgIC5teF9EaWFsb2dfY29udGVudCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG5cbiAgICAgICAgPiBoMiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0ZlZWRiYWNrRGlhbG9nX3NlY3Rpb24ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmc6IDEycHggNTJweCAxMnB4IDY4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcblxuICAgICAgICAmICsgLm14X0ZlZWRiYWNrRGlhbG9nX3NlY3Rpb24ge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgID4gaDMge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjJweDtcbiAgICAgICAgfVxuXG4gICAgICAgID4gcCB7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgICAgICBtYXJnaW46IDhweCAwIDA7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRmVlZGJhY2tEaWFsb2dfc2VjdGlvbl9taWNyb2NvcHkge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgIH1cblxuICAgICAgICBhLFxuICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmsge1xuICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmJlZm9yZSxcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgbGVmdDogMTZweDtcbiAgICAgICAgICAgIHRvcDogMTJweDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaWNvbi1idXR0b24tY29sb3I7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYXZhdGFyLWluaXRpYWwtY29sb3I7IC8qIFRPRE8gKi9cbiAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogMjRweDtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRmVlZGJhY2tEaWFsb2dfcmVwb3J0QnVnIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvYnVnLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9GZWVkYmFja0RpYWxvZ19yYXRlQXBwIHtcbiAgICAgICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogZm9udC1zaXplIDFzLCBib3JkZXIgMC41cztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl0gKyBkaXYge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9TdHlsZWRSYWRpb0J1dHRvbl9jb250ZW50IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkaWNvbi1idXR0b24tY29sb3I7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfU3R5bGVkUmFkaW9CdXR0b25fc3BhY2VyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmICsgLm14X1N0eWxlZFJhZGlvQnV0dG9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TdHlsZWRSYWRpb0J1dHRvbl9jaGVja2VkIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9mZWVkYmFjay5zdmdcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgUm9iaW4gVG93bnNlbmQgPHJvYmluQHJvYmluLnRvd24+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0ZvcndhcmREaWFsb2cge1xuICAgIHdpZHRoOiA1MjBweDtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgbWluLWhlaWdodDogMDtcbiAgICBoZWlnaHQ6IDgwdmg7XG5cbiAgICA+IGgzIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgNnB4O1xuICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgIH1cblxuICAgID4gLm14X0ZvcndhcmREaWFsb2dfcHJldmlldyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMwJTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZVtkYXRhLWxheW91dD1cImJ1YmJsZVwiXSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgZGl2IHtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogV2hlbiBmb3J3YXJkaW5nIG1lc3NhZ2VzIGZyb20gZW5jcnlwdGVkIHJvb21zLCBFdmVudFRpbGUgd2lsbCBjb21wbGFpbiAqL1xuICAgICAgICAvKiB0aGF0IG91ciBwcmV2aWV3IGlzIHVuZW5jcnlwdGVkLCB3aGljaCBkb2Vzbid0IGFjdHVhbGx5IG1hdHRlciAqL1xuICAgICAgICAvKiBXZSBhbHNvIGhpZGUgZG93bmxvYWQgbGlua3MgdG8gbm90IGVuY291cmFnZSB1c2VycyB0byB0cnkgaW50ZXJhY3RpbmcgKi9cbiAgICAgICAgLm14X0V2ZW50VGlsZV9tc2dPcHRpb24sXG4gICAgICAgIC5teF9FdmVudFRpbGVfZTJlSWNvbl91bmVuY3J5cHRlZCxcbiAgICAgICAgLm14X0V2ZW50VGlsZV9lMmVJY29uX3dhcm5pbmcsXG4gICAgICAgIC5teF9NRmlsZUJvZHlfZG93bmxvYWQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gaHIge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgICAgICAgbWFyZ2luOiAxMnB4IDA7XG4gICAgfVxuXG4gICAgPiAubXhfRm9yd2FyZExpc3Qge1xuICAgICAgICBkaXNwbGF5OiBjb250ZW50cztcblxuICAgICAgICAubXhfU2VhcmNoQm94IHtcbiAgICAgICAgICAgIC8qIFRvIG1hdGNoIHRoZSBzcGFjZSBhcm91bmQgdGhlIHRpdGxlICovXG4gICAgICAgICAgICBtYXJnaW46IDAgMCAxNXB4IDA7XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRm9yd2FyZExpc3RfY29udGVudCB7XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRm9yd2FyZExpc3Rfbm9SZXN1bHRzIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Gb3J3YXJkTGlzdF9yZXN1bHRzIHtcbiAgICAgICAgICAgICY6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9Gb3J3YXJkTGlzdF9yZXN1bHRzTGlzdCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfRm9yd2FyZExpc3RfZW50cnkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA2cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzcGFjZVBhbmVsLWJnLWNvbG9yO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9Gb3J3YXJkTGlzdF9yb29tQnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0RlY29yYXRlZFJvb21BdmF0YXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0ZvcndhcmRMaXN0X2VudHJ5X25hbWUsXG4gICAgICAgICAgICAgICAgICAgIC5teF9Gb3J3YXJkTGlzdF9lbnRyeV9kZXRhaWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0ZvcndhcmRMaXN0X2VudHJ5X25hbWUge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0ZvcndhcmRMaXN0X2VudHJ5X2RldGFpbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm14X0ZvcndhcmRMaXN0X3NlbmRCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuXG4gICAgICAgICAgICAgICAgICAgICY6bm90KC5teF9Gb3J3YXJkTGlzdF9jYW5TZW5kKSAubXhfRm9yd2FyZExpc3Rfc2VuZExhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEhpZGUgdGhlIFwiU2VuZFwiIGxhYmVsIHdoaWxlIHByZXNlcnZpbmcgYnV0dG9uIHNpemUgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5teF9Gb3J3YXJkTGlzdF9zZW5kSWNvbixcbiAgICAgICAgICAgICAgICAgICAgLm14X05vdGlmaWNhdGlvbkJhZGdlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5teF9Ob3RpZmljYXRpb25CYWRnZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBNYXRjaCB0aGUgZmFpbGVkIHRvIHNlbmQgaW5kaWNhdG9yJ3MgY29sb3Igd2l0aCB0aGUgZGlzYWJsZWQgYnV0dG9uICovXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWRhbmdlci1kaXNhYmxlZC1mZy1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICYubXhfRm9yd2FyZExpc3Rfc2VuZGluZyAubXhfRm9yd2FyZExpc3Rfc2VuZEljb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jaXJjbGUtc2VuZGluZy5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1zaXplOiAxNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmLm14X0ZvcndhcmRMaXN0X3NlbnQgLm14X0ZvcndhcmRMaXN0X3NlbmRJY29uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2lyY2xlLXNlbnQuc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vUmVzcG9uc2l2ZSBkZXNpZ25cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpe1xuICAgIC5teF9Gb3J3YXJkRGlhbG9ne1xuICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cbn0iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfR2VuZXJpY0ZlYXR1cmVGZWVkYmFja0RpYWxvZyB7XG4gICAgLm14X0dlbmVyaWNGZWF0dXJlRmVlZGJhY2tEaWFsb2dfc3ViaGVhZGluZyB7XG4gICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZC5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfSW5jb21pbmdTYXNEaWFsb2dfb3Bwb25lbnRQcm9maWxlX2ltYWdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5teF9JbmNvbWluZ1Nhc0RpYWxvZ19vcHBvbmVudFByb2ZpbGUgaDIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSwgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9JbnZpdGVEaWFsb2dfZmxleFdyYXBwZXIgLm14X0RpYWxvZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4ubXhfSW52aXRlRGlhbG9nX3RyYW5zZmVyV3JhcHBlciAubXhfRGlhbG9nIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNpbmctMTY7XG59XG5cbi5teF9JbnZpdGVEaWFsb2dfYWRkcmVzc0JhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIC8qIFJpZ2h0IG1hcmdpbiBmb3IgdGhlIGRlc2lnbi4gV2UgY291bGQgYXBwbHkgdGhpcyB0byB0aGUgd2hvbGUgZGlhbG9nLCBidXQgdGhlbiB0aGUgc2Nyb2xsYmFyICovXG4gICAgLyogZm9yIHRoZSB1c2VyIHNlY3Rpb24gZ2V0cyB3ZWlyZC4gKi9cbiAgICBtYXJnaW46ICRzcGFjaW5nLTggNDVweCAwIDA7XG5cbiAgICAubXhfSW52aXRlRGlhbG9nX2VkaXRvciB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIHdpZHRoOiAxMDAlOyAvKiBOZWVkZWQgdG8gbWFrZSB0aGUgRmllbGQgaW5zaWRlIGdyb3cgKi9cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAyNXB4O1xuICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogJHNwYWNpbmctODtcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgLm14X0ludml0ZURpYWxvZ191c2VyVGlsZSB7XG4gICAgICAgICAgICBtYXJnaW46IDZweCA2cHggMCAwO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWluLXdpZHRoOiBtYXgtY29udGVudDsgLyogcHJldmVudCBtYW5pcHVsYXRpb24gYnkgZmxleGJveCAqL1xuICAgICAgICB9XG5cbiAgICAgICAgLyogb3ZlcnJpZGVzIGJ1bmNoIG9mIG91ciBkZWZhdWx0IHRleHQgaW5wdXQgc3R5bGVzICovXG4gICAgICAgID4gaW5wdXRbdHlwZT1cInRleHRcIl0ge1xuICAgICAgICAgICAgbWFyZ2luOiA2cHggMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogJHNwYWNpbmctMTI7XG4gICAgICAgICAgICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHJlc2l6ZTogbm9uZTtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDQwJTtcbiAgICAgICAgICAgIGZsZXg6IDEgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfSW52aXRlRGlhbG9nX2dvQnV0dG9uIHtcbiAgICAgICAgbWluLXdpZHRoOiA0OHB4O1xuICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAxMHB4O1xuICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNXB4O1xuICAgIH1cblxuICAgIC5teF9JbnZpdGVEaWFsb2dfYnV0dG9uQW5kU3Bpbm5lciB7XG4gICAgICAgIC5teF9TcGlubmVyIHtcbiAgICAgICAgICAgIC8qIFdpZHRoIGFuZCBoZWlnaHQgYXJlIHJlcXVpcmVkIHRvIHRyaWNrIHRoZSBsYXlvdXQgZW5naW5lLiAqL1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiA1cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfSW52aXRlRGlhbG9nX3NlY3Rpb24ge1xuICAgIHBhZGRpbmctYm90dG9tOiAkc3BhY2luZy00O1xuXG4gICAgaDMge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIGNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgID4gcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICA+IHNwYW4ge1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfSW52aXRlRGlhbG9nX3NlY3Rpb25fc2hvd01vcmUge1xuICAgICAgICBtYXJnaW46IDdweCAxOHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbi5teF9JbnZpdGVEaWFsb2dfc2VjdGlvbl9oaWRkZW5fc3VnZ2VzdGlvbnNfZGlzY2xhaW1lciB7XG4gICAgcGFkZGluZzogJHNwYWNpbmctOCAwICRzcGFjaW5nLTE2IDA7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuXG4gICAgPiBzcGFuIHtcbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgfVxuXG4gICAgPiBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn1cblxuLm14X0ludml0ZURpYWxvZ19mb290ZXIge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuXG4gICAgPiBoMyB7XG4gICAgICAgIG1hcmdpbjogJHNwYWNpbmctMTIgMDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICBjb2xvcjogJG11dGVkLWZnLWNvbG9yO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG5cbiAgICAubXhfQ29weWFibGVUZXh0Lm14X0NvcHlhYmxlVGV4dF9ib3JkZXIge1xuICAgICAgICB3aWR0aDogdW5zZXQ7IC8qIGZ1bGwgd2lkdGggKi9cbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICA+IGEge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDE7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIE1hbnkgb2YgdGhlc2Ugc3R5bGVzIGFyZSBzdG9sZW4gZnJvbSBteF9Vc2VyUGlsbCwgYnV0IGFkanVzdGVkIGZvciB0aGUgaW52aXRlIGRpYWxvZy4gKi9cbi5teF9JbnZpdGVEaWFsb2dfdXNlclRpbGUge1xuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAkc3BhY2luZy04O1xuXG4gICAgLm14X0ludml0ZURpYWxvZ191c2VyVGlsZV9waWxsIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQxLWNvbG9yO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiAkc3BhY2luZy04O1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjsgLyogdGhpcyBpcyBmaW5lIHdpdGhvdXQgYSB2YXIgYmVjYXVzZSBpdCdzIGZvciBib3RoIHRoZW1lcyAqL1xuXG4gICAgICAgIC5teF9TZWFyY2hSZXN1bHRBdmF0YXIge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGxlZnQ6IC01cHg7XG4gICAgICAgICAgICB0b3A6IDJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZy5teF9TZWFyY2hSZXN1bHRBdmF0YXIge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9JbnZpdGVEaWFsb2dfdXNlclRpbGVfbmFtZSB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1NlYXJjaFJlc3VsdEF2YXRhcl90aHJlZXBpZEF2YXRhciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyAvKiB0aGlzIGlzIGZpbmUgd2l0aG91dCBhIHZhciBiZWNhdXNlIGl0J3MgZm9yIGJvdGggdGhlbWVzICovXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfSW52aXRlRGlhbG9nX3VzZXJUaWxlX3JlbW92ZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogJHNwYWNpbmctNDtcbiAgICB9XG59XG5cbi5teF9JbnZpdGVEaWFsb2dfb3RoZXIge1xuICAgIC8qIFByZXZlbnQgdGhlIGRpYWxvZyBmcm9tIGp1bXBpbmcgYXJvdW5kIHJhbmRvbWx5IHdoZW4gZWxlbWVudHMgY2hhbmdlLiAqL1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBoZWlnaHQ6IDYwMHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAubXhfSW52aXRlRGlhbG9nX2FkZHJlc3NCYXIge1xuICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogMDtcbiAgICB9XG5cbiAgICAubXhfSW52aXRlRGlhbG9nX3VzZXJTZWN0aW9ucyB7XG4gICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiAwO1xuXG4gICAgICAgIC5teF9JbnZpdGVEaWFsb2dfc2VjdGlvbiB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTEyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfSW52aXRlRGlhbG9nX2NvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14X0ludml0ZURpYWxvZ190cmFuc2ZlciB7XG4gICAgd2lkdGg6IGF1dG87XG5cbiAgICAubXhfSW52aXRlRGlhbG9nX2NvbnRlbnQge1xuICAgICAgICB3aWR0aDogNDk2cHg7XG4gICAgICAgIGhlaWdodDogNDMwcHg7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuXG4gICAgICAgIC5teF9UYWJiZWRWaWV3IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDE7XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuXG4gICAgICAgICAgICAubXhfVGFiYmVkVmlld190YWJQYW5lbCB7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgICAgICAgIC5teF9UYWJiZWRWaWV3X3RhYlBhbmVsQ29udGVudCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0ludml0ZURpYWxvZ19hZGRyZXNzQmFyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctODtcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogJHNwYWNpbmctODtcbiAgICB9XG59XG5cbi5teF9JbnZpdGVEaWFsb2dfdXNlclNlY3Rpb25zIHtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy00O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcGFkZGluZzogMCA0NXB4ICRzcGFjaW5nLTQgMDtcbn1cblxuLm14X0ludml0ZURpYWxvZ19oZWxwVGV4dCB7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4ubXhfSW52aXRlRGlhbG9nX2RpYWxQYWQge1xuICAgIHdpZHRoOiAyMjRweDtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy0xNjtcbiAgICBtYXJnaW4taW5saW5lOiBhdXRvO1xuXG4gICAgLm14X0ludml0ZURpYWxvZ19kaWFsUGFkRmllbGQge1xuICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgICAgICBib3JkZXItaW5saW5lOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBib3JkZXItY29sb3I6ICRxdWF0ZXJuYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0ZpZWxkX3Bvc3RmaXgge1xuICAgICAgICAgICAgLyogUmVtb3ZlIGJvcmRlciBzZXBhcmF0b3IgYmV0d2VlbiBwb3N0Zml4IGFuZCBmaWVsZCBjb250ZW50ICovXG4gICAgICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9EaWFsUGFkIHtcbiAgICAgICAgcm93LWdhcDogJHNwYWNpbmctMTY7XG4gICAgICAgIGNvbHVtbi1nYXA6IDQ4cHg7XG4gICAgICAgIG1hcmdpbi1pbmxpbmU6IGF1dG87XG4gICAgfVxufVxuXG4ubXhfSW52aXRlRGlhbG9nX3RyYW5zZmVyQ29uc3VsdENvbm5lY3Qge1xuICAgIHBhZGRpbmctdG9wOiAkc3BhY2luZy0xNjtcbiAgICAvKiBUaGlzIHdhbnRzIGEgZHJvcCBzaGFkb3cgdGhlIGZ1bGwgd2lkdGggb2YgdGhlIGRpYWxvZywgc28gdXNlIG5lZ2F0aXZlIG1hcmdpbiB0byBtYWtlIGl0IGZ1bGwgd2lkdGgsXG4gICAgICogdGhlbiBjb21wZW5zYXRlIHdpdGggcGFkZGluZ1xuICAgICAqL1xuICAgIHBhZGRpbmctaW5saW5lOiAkc3BhY2luZy0yNDtcbiAgICBtYXJnaW4taW5saW5lOiBjYWxjKC0xICogJHNwYWNpbmctMjQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkcXVpbmFyeS1jb250ZW50O1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5teF9JbnZpdGVEaWFsb2dfdHJhbnNmZXJDb25zdWx0Q29ubmVjdF9wdXNoUmlnaHQge1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGF1dG87XG59XG5cbi5teF9JbnZpdGVEaWFsb2dfdXNlckRpcmVjdG9yeUljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy92b2lwL3RhYi11c2VyZGlyZWN0b3J5LnN2Z1wiKTtcbn1cblxuLm14X0ludml0ZURpYWxvZ19kaWFsUGFkSWNvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL3ZvaXAvdGFiLWRpYWxwYWQuc3ZnXCIpO1xufVxuXG4ubXhfSW52aXRlRGlhbG9nX3RpbGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogJHNwYWNpbmctOCAkc3BhY2luZy0xMjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgJi5teF9JbnZpdGVEaWFsb2dfdGlsZS0tcm9vbSB7XG4gICAgICAgIC8qIG14X0ludml0ZURpYWxvZ190aWxlX2F2YXRhclN0YWNrLCBteF9JbnZpdGVEaWFsb2dfdGlsZV9uYW1lU3RhY2ssIHRpbWUgKi9cbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCBhdXRvIGF1dG87XG4gICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTQgJHNwYWNpbmctODtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfSW52aXRlRGlhbG9nX3RpbGUtLXJvb21fc2VsZWN0ZWQge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1c2VybmFtZS12YXJpYW50MS1jb2xvcjtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9jaGVjay5zdmdcIik7XG4gICAgICAgICAgICAgICAgbWFzay1zaXplOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogNnB4OyAvKiA1MCUgKi9cbiAgICAgICAgICAgICAgICBsZWZ0OiA2cHg7IC8qIDUwJSAqL1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IC8qIHRoaXMgaXMgZmluZSB3aXRob3V0IGEgdmFyIGJlY2F1c2UgaXQncyBmb3IgYm90aCB0aGVtZXMgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9JbnZpdGVEaWFsb2dfdGlsZS0tcm9vbV90aW1lIHtcbiAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGF1dG87XG4gICAgICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICBjb2xvcjogJG11dGVkLWZnLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0ludml0ZURpYWxvZ190aWxlLS1yb29tX2hpZ2hsaWdodCB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9JbnZpdGVEaWFsb2dfdGlsZS0taW52aXRlckVycm9yIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtYXgtY29udGVudCBhdXRvOyAvKiBtYXgtY29udGVudCA9IGF2YXRhciB3aWR0aCAqL1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy0yNDtcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9JbnZpdGVEaWFsb2dfdGlsZS0taW52aXRlckVycm9yX2Vycm9yVGV4dCB7XG4gICAgICAgICAgICBncmlkLXJvdy1zdGFydDogMjtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAyO1xuXG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgICAgICBjb2xvcjogJGFsZXJ0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgKiB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgLm14X0ludml0ZURpYWxvZ190aWxlX2F2YXRhclN0YWNrLFxuICAgIC5teF9JbnZpdGVEaWFsb2dfdGlsZS0tcm9vbV9zZWxlY3RlZCB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5teF9JbnZpdGVEaWFsb2dfdGlsZV9hdmF0YXJTdGFjayB7XG4gICAgICAgIGdyaWQtcm93LXN0YXJ0OiAxO1xuICAgICAgICBncmlkLWNvbHVtbi1zdGFydDogMTtcblxuICAgICAgICAmID4gKiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0ludml0ZURpYWxvZ190aWxlX25hbWVTdGFjayB7XG4gICAgICAgIGdyaWQtcm93LXN0YXJ0OiAxO1xuICAgICAgICBncmlkLWNvbHVtbi1zdGFydDogMjtcblxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgICAgIGdhcDogMnB4IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgLm14X0ludml0ZURpYWxvZ190aWxlX25hbWVTdGFja19uYW1lLFxuICAgICAgICAubXhfSW52aXRlRGlhbG9nX3RpbGVfbmFtZVN0YWNrX3VzZXJJZCB7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0ludml0ZURpYWxvZ190aWxlX25hbWVTdGFja19uYW1lIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9JbnZpdGVEaWFsb2dfdGlsZV9uYW1lU3RhY2tfdXNlcklkIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgICAgIGNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9JbnZpdGVEaWFsb2dfbXVsdGlJbnZpdGVyRXJyb3Ige1xuICAgID4gaDQge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIH1cbn1cblxuLm14X0ludml0ZURpYWxvZ19pZGVudGl0eVNlcnZlciB7XG4gICAgbWFyZ2luLXRvcDogMWVtO1xufVxuXG4ubXhfSW52aXRlRGlhbG9nX29uZVRocmVlcGlkIHtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgbWFyZ2luOiAkc3BhY2luZy04IDA7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfSm9pblJ1bGVEcm9wZG93biB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG5cbiAgICAubXhfRHJvcGRvd25faW5wdXQge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIH1cblxuICAgIC5teF9Ecm9wZG93bl9vcHRpb24ge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0zMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMycHg7XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiA2cHg7XG4gICAgICAgICAgICAgICAgdG9wOiA4cHg7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0pvaW5SdWxlRHJvcGRvd25faW52aXRlOjpiZWZvcmUge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbG9jay5zdmdcIik7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgcGFkZGluZzogMXB4O1xuICAgIH1cblxuICAgIC5teF9Kb2luUnVsZURyb3Bkb3duX3B1YmxpYzo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9nbG9iZS5zdmdcIik7XG4gICAgICAgIG1hc2stc2l6ZTogMTJweDtcbiAgICB9XG5cbiAgICAubXhfSm9pblJ1bGVEcm9wZG93bl9yZXN0cmljdGVkOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvZ3JvdXAtbWVtYmVycy5zdmdcIik7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTGVhdmVTcGFjZURpYWxvZ193cmFwcGVyIHtcbiAgICAubXhfRGlhbG9nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcGFkZGluZzogMjRweCAzMnB4O1xuXG4gICAgICAgIC5teF9MZWF2ZVNwYWNlRGlhbG9nIHtcbiAgICAgICAgICAgIHdpZHRoOiA0NDBweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgICAgICBoZWlnaHQ6IDUyMHB4O1xuXG4gICAgICAgICAgICAubXhfRGlhbG9nX2NvbnRlbnQge1xuICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgICAgICAgICAgICAgIC5teF9MZWF2ZVNwYWNlRGlhbG9nX3NlY3Rpb25fd2FybmluZyB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDEycHggMCAwO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDhweCAxMnB4IDQycHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTVweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcblxuICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGNhbGMoNTAlIC0gOHB4KTsgLyogdmVydGljYWwgY2VudGVyaW5nICovXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9yb29tLXN1bW1hcnkuc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPiBwIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0xvY2F0aW9uVmlld0RpYWxvZ193cmFwcGVyIC5teF9EaWFsb2cge1xuICAgIHBhZGRpbmc6IDBweDtcblxuICAgIC8qIFVuc2V0IGNvbnRhaW4gYW5kIHBvc2l0aW9uIHRvIGFsbG93IHRoZSBjbG9zZSBidXR0b25cbiAgICB0byBhcHBlYXIgb3V0c2lkZSB0aGUgZGlhbG9nICovXG4gICAgY29udGFpbjogdW5zZXQ7XG4gICAgcG9zaXRpb246IHVuc2V0O1xufVxuXG4ubXhfTG9jYXRpb25WaWV3RGlhbG9nIHtcbiAgICAvKiBzdWJ0cmFjdCAwLjVweCB0byBwcmV2ZW50IHNpbmdsZS1waXhlbCBtYXJnaW4gZHVlIHRvIHJvdW5kaW5nICovXG4gICAgd2lkdGg6IGNhbGMoODB2dyAtIDAuNXB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoODB2aCAtIDAuNXB4KTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLm14X0RpYWxvZ19oZWFkZXIge1xuICAgICAgICBtYXJnaW46IDBweDtcbiAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICBwb3NpdGlvbjogdW5zZXQ7XG5cbiAgICAgICAgLm14X0RpYWxvZ190aXRsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0RpYWxvZ19jYW5jZWxCdXR0b24ge1xuICAgICAgICAgICAgei1pbmRleDogNDAxMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiA1dnc7XG4gICAgICAgICAgICB0b3A6IDV2aDtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRpYWxvZy1jbG9zZS1leHRlcm5hbC1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0xvY2F0aW9uVmlld0RpYWxvZ19tYXAge1xuICAgIHdpZHRoOiA4MHZ3O1xuICAgIGhlaWdodDogODB2aDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTWFuYWdlUmVzdHJpY3RlZEpvaW5SdWxlRGlhbG9nX3dyYXBwZXIge1xuICAgIC5teF9EaWFsb2cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbn1cblxuLm14X01hbmFnZVJlc3RyaWN0ZWRKb2luUnVsZURpYWxvZyB7XG4gICAgd2lkdGg6IDQ4MHB4O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBtaW4taGVpZ2h0OiAwO1xuICAgIGhlaWdodDogNjB2aDtcblxuICAgIC5teF9TZWFyY2hCb3gge1xuICAgICAgICAvKiBUbyBtYXRjaCB0aGUgc3BhY2UgYXJvdW5kIHRoZSB0aXRsZSAqL1xuICAgICAgICBtYXJnaW46IDAgMCAxNXB4IDA7XG4gICAgICAgIGZsZXgtZ3JvdzogMDtcbiAgICB9XG5cbiAgICAubXhfTWFuYWdlUmVzdHJpY3RlZEpvaW5SdWxlRGlhbG9nX2NvbnRlbnQge1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgfVxuXG4gICAgLm14X01hbmFnZVJlc3RyaWN0ZWRKb2luUnVsZURpYWxvZ19ub1Jlc3VsdHMge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICB9XG5cbiAgICAubXhfTWFuYWdlUmVzdHJpY3RlZEpvaW5SdWxlRGlhbG9nX3NlY3Rpb24ge1xuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgICAgIH1cblxuICAgICAgICA+IGgzIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTWFuYWdlUmVzdHJpY3RlZEpvaW5SdWxlRGlhbG9nX2VudHJ5IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuXG4gICAgICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbWcubXhfUm9vbUF2YXRhcl9pc1NwYWNlUm9vbSxcbiAgICAgICAgICAgIC5teF9Sb29tQXZhdGFyX2lzU3BhY2VSb29tIGltZyB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfTWFuYWdlUmVzdHJpY3RlZEpvaW5SdWxlRGlhbG9nX2VudHJ5X25hbWUge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCA4cHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9NYW5hZ2VSZXN0cmljdGVkSm9pblJ1bGVEaWFsb2dfZW50cnlfZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfQ2hlY2tib3gge1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfTWFuYWdlUmVzdHJpY3RlZEpvaW5SdWxlRGlhbG9nX3NlY3Rpb25fc3BhY2VzIHtcbiAgICAgICAgLm14X0Jhc2VBdmF0YXIge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0Jhc2VBdmF0YXJfaW1hZ2Uge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X01hbmFnZVJlc3RyaWN0ZWRKb2luUnVsZURpYWxvZ19zZWN0aW9uX2luZm8ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgbWFyZ2luOiAxMnB4IDA7XG4gICAgICAgIHBhZGRpbmc6IDhweCA4cHggOHB4IDQycHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG5cbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTVweDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgICAgICB0b3A6IGNhbGMoNTAlIC0gOHB4KTsgLyogdmVydGljYWwgY2VudGVyaW5nICovXG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9yb29tLXN1bW1hcnkuc3ZnXCIpO1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X01hbmFnZVJlc3RyaWN0ZWRKb2luUnVsZURpYWxvZ19mb290ZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuXG4gICAgICAgIC5teF9NYW5hZ2VSZXN0cmljdGVkSm9pblJ1bGVEaWFsb2dfZm9vdGVyX2J1dHRvbnMge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuXG4gICAgICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgICAgICAgICAgICAgJiArIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDI0cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01lc3NhZ2VFZGl0SGlzdG9yeURpYWxvZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1heC1oZWlnaHQ6IDYwdmg7XG59XG5cbi5teF9NZXNzYWdlRWRpdEhpc3RvcnlEaWFsb2dfc2Nyb2xsUGFuZWwge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xufVxuXG4ubXhfTWVzc2FnZUVkaXRIaXN0b3J5RGlhbG9nX2Vycm9yIHtcbiAgICBjb2xvcjogJGFsZXJ0O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm14X01lc3NhZ2VFZGl0SGlzdG9yeURpYWxvZ19lZGl0cyB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuXG4gICAgc3Bhbi5teF9FZGl0SGlzdG9yeU1lc3NhZ2VfZGVsZXRpb24sXG4gICAgc3Bhbi5teF9FZGl0SGlzdG9yeU1lc3NhZ2VfaW5zZXJ0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMHB4IDJweDtcbiAgICB9XG5cbiAgICAubXhfRWRpdEhpc3RvcnlNZXNzYWdlX2RlbGV0aW9uIHtcbiAgICAgICAgY29sb3I6IHJnYigyNTUsIDc2LCA4NSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA3NiwgODUsIDAuMSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuICAgIH1cblxuICAgIC5teF9FZGl0SGlzdG9yeU1lc3NhZ2VfaW5zZXJ0aW9uIHtcbiAgICAgICAgY29sb3I6IHJnYigyNiwgMTY5LCAxMjMpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI2LCAxNjksIDEyMywgMC4xKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgLyogRW11bGF0ZSBteF9FdmVudFRpbGVbZGF0YS1sYXlvdXQ9XCJncm91cFwiXSAqL1xuICAgIC5teF9FdmVudFRpbGUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcblxuICAgICAgICAubXhfTWVzc2FnZVRpbWVzdGFtcCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1FdmVudFRpbGVfZ3JvdXBfbGluZS1zcGFjaW5nLWJsb2NrLXN0YXJ0KTtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1FdmVudFRpbGVfZ3JvdXBfbGluZS1zcGFjaW5nLWJsb2NrLWVuZCk7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLUV2ZW50VGlsZV9ncm91cF9saW5lLXNwYWNpbmctaW5saW5lLXN0YXJ0KTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1FdmVudFRpbGVfZ3JvdXBfbGluZS1saW5lLWhlaWdodCk7XG5cbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfY29udGVudCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUFjdGlvbkJhciAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICRzcGFjaW5nLTg7XG4gICAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogJHNwYWNpbmctODtcblxuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01vZGFsV2lkZ2V0RGlhbG9nIHtcbiAgICAubXhfTW9kYWxXaWRnZXREaWFsb2dfd2FybmluZyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG5cbiAgICAgICAgPiBpbWcge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X01vZGFsV2lkZ2V0RGlhbG9nX2J1dHRvbnMge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG5cbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24gKyAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWZyYW1lIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogNDUwcHg7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Qb2xsQ3JlYXRlRGlhbG9nIHtcbiAgICAubXhfUG9sbENyZWF0ZURpYWxvZ19idXN5IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkYmFja2dyb3VuZCwgMC42KTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICB9XG5cbiAgICBoMiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcblxuICAgICAgICAmOm50aC1jaGlsZChuICsgMikge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHAge1xuICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIH1cblxuICAgIC5teF9Qb2xsQ3JlYXRlRGlhbG9nX29wdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi10b3A6IDExcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7IC8qIDExcHggZnJvbSB0aGUgdG9wIHdpbGwgY29sbGFwc2UsIHNvIHRoaXMgY3JlYXRlcyBhIDE2cHggZ2FwIGJldHdlZW4gb3B0aW9ucyAqL1xuXG4gICAgICAgIC5teF9GaWVsZCB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1BvbGxDcmVhdGVEaWFsb2dfcmVtb3ZlT3B0aW9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgbWFzazogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3gtOHB4LnN2Z1wiKTtcbiAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgICAgIHdpZHRoOiA4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogNnB4O1xuICAgICAgICAgICAgICAgIGxlZnQ6IDZweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfUG9sbENyZWF0ZURpYWxvZ19hZGRPcHRpb24ge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4OyAvKiBhcmJpdHJhcnkgdG8gY3JlYXRlIHNjcm9sbGFibGUgYXJlYSB1bmRlciB0aGUgcG9sbCAqL1xuICAgIH1cblxuICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2Rpc2FibGVkIHtcbiAgICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9SZWdpc3RyYXRpb25FbWFpbFByb21wdERpYWxvZyB7XG4gICAgd2lkdGg6IDQxN3B4O1xuXG4gICAgLm14X0RpYWxvZ19jb250ZW50IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgIH1cblxuICAgIC5teF9EaWFsb2dfcHJpbWFyeSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZC5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vKiBJQ09OUyAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ubXhfUm9vbVNldHRpbmdzRGlhbG9nX3NldHRpbmdzSWNvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3Muc3ZnXCIpO1xufVxuXG4ubXhfUm9vbVNldHRpbmdzRGlhbG9nX3ZvaWNlSWNvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC92b2ljZS1jYWxsLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19zZWN1cml0eUljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NlY3VyaXR5LnN2Z1wiKTtcbn1cblxuLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19yb2xlc0ljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vc2V0dGluZ3Mvcm9sZXMuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbVNldHRpbmdzRGlhbG9nX25vdGlmaWNhdGlvbnNJY29uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9ub3RpZmljYXRpb25zLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19icmlkZ2VzSWNvbjo6YmVmb3JlIHtcbiAgICAvKiBUaGlzIGljb24gaXMgcGFudHMsIHBsZWFzZSBpbXByb3ZlIDopICovXG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvYnJpZGdlLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19wb2xsc0ljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vY29tcG9zZXIvcG9sbC5zdmdcIik7XG59XG5cbi5teF9Sb29tU2V0dGluZ3NEaWFsb2dfd2FybmluZ0ljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vc2V0dGluZ3MvYWR2YW5jZWQuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbVNldHRpbmdzRGlhbG9nIC5teF9EaWFsb2dfdGl0bGUge1xuICAgIC1tcy10ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1yaWdodDogODBweDtcbn1cblxuLyogc2hvdyBhIGRpZmZlcmVudCBBdmF0YXJTZXR0aW5nIHBsYWNlaG9sZGVyIGZvciBSb29tUHJvZmlsZVNldHRpbmdzIHdoaWNoIGlzIGJhc2ljYWxseSBhIGNsb25lIG9mIFByb2ZpbGVTZXR0aW5ncyAqL1xuLm14X1Jvb21TZXR0aW5nc0RpYWxvZyAubXhfQXZhdGFyU2V0dGluZ19hdmF0YXIgLm14X0F2YXRhclNldHRpbmdfYXZhdGFyUGxhY2Vob2xkZXI6OmJlZm9yZSB7XG4gICAgbWFzazogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvaW1hZ2Uuc3ZnXCIpO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1zaXplOiAzNnB4O1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Sb29tU2V0dGluZ3NEaWFsb2dfQnJpZGdlTGlzdCB7XG4gICAgcGFkZGluZzogMDtcblxuICAgIGxpIHtcbiAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gICAgICAgICYubXhfUm9vbVNldHRpbmdzRGlhbG9nX0JyaWRnZUxpc3RfbGlzdEl0ZW0ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgIGdhcDogJHNwYWNpbmctODtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTg7XG5cbiAgICAgICAgICAgIC8qIGJvcmRlci1zdHlsZSBhcm91bmQgZWFjaCBicmlkZ2UgbGlzdCBpdGVtICovXG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDFweCAxcHg7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRwcmltYXJ5LWhhaXJsaW5lLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcblxuICAgICAgICAgICAgLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19jb2x1bW5faWNvbiB7XG4gICAgICAgICAgICAgICAgLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19wcm90b2NvbEljb24sXG4gICAgICAgICAgICAgICAgLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19wcm90b2NvbEljb24gc3BhbixcbiAgICAgICAgICAgICAgICAubXhfUm9vbVNldHRpbmdzRGlhbG9nX25vUHJvdG9jb2xJY29uIHtcbiAgICAgICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtZGFya2VyLWJnLWNvbG9yO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9Sb29tU2V0dGluZ3NEaWFsb2dfbm9Qcm90b2NvbEljb24sXG4gICAgICAgICAgICAgICAgLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19wcm90b2NvbEljb24gaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9Sb29tU2V0dGluZ3NEaWFsb2dfbm9Qcm90b2NvbEljb24ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkaW5wdXQtZGFya2VyLWJnLWNvbG9yO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9Sb29tU2V0dGluZ3NEaWFsb2dfcHJvdG9jb2xJY29uIHtcbiAgICAgICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci13aWR0aDogMXB4IDFweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHByaW1hcnktaGFpcmxpbmUtY29sb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvcnJlY3QgbGV0dGVyIHBsYWNlbWVudCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19jb2x1bW5fZGF0YSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiA4NSU7XG5cbiAgICAgICAgICAgICAgICAubXhfUm9vbVNldHRpbmdzRGlhbG9nX2NvbHVtbl9kYXRhX2RldGFpbHMsXG4gICAgICAgICAgICAgICAgLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19jb2x1bW5fZGF0YV9tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAubXhfUm9vbVNldHRpbmdzRGlhbG9nX2NvbHVtbl9kYXRhX21ldGFkYXRhIGxpLFxuICAgICAgICAgICAgICAgIC5teF9Sb29tU2V0dGluZ3NEaWFsb2dfY29sdW1uX2RhdGFfcHJvdG9jb2xOYW1lIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubXhfUm9vbVNldHRpbmdzRGlhbG9nX2NvbHVtbl9kYXRhX2RldGFpbHMsXG4gICAgICAgICAgICAgICAgLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19jb2x1bW5fZGF0YV9tZXRhZGF0YSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19jb2x1bW5fZGF0YV9tZXRhZGF0YSBsaSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm14X1Jvb21TZXR0aW5nc0RpYWxvZ19jb2x1bW5fZGF0YV9wcm90b2NvbE5hbWUge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9Sb29tU2V0dGluZ3NEaWFsb2dfd29ya3NwYWNlX2NoYW5uZWxfZGV0YWlscyB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuXG4gICAgICAgICAgICAgICAgICAgIC5teF9Sb29tU2V0dGluZ3NEaWFsb2dfY2hhbm5lbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubXhfUm9vbVNldHRpbmdzRGlhbG9nX21ldGFkYXRhIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE4IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Jvb21VcGdyYWRlRGlhbG9nIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiA3MHB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IC0gMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Sb29tVXBncmFkZVdhcm5pbmdEaWFsb2cge1xuICAgIG1heC13aWR0aDogMzh2dztcbiAgICB3aWR0aDogMzh2dztcblxuICAgIC5teF9Sb29tVXBncmFkZVdhcm5pbmdEaWFsb2dfcHJvZ3Jlc3Mge1xuICAgICAgICAubXhfUHJvZ3Jlc3NCYXIge1xuICAgICAgICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgQG1peGluIFByb2dyZXNzQmFyQm9yZGVyUmFkaXVzIDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tVXBncmFkZVdhcm5pbmdEaWFsb2dfcHJvZ3Jlc3NUZXh0IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9Sb29tVXBncmFkZVdhcm5pbmdEaWFsb2cgLm14X1NldHRpbmdzRmxhZyB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcblxuICAgIC5teF9Ub2dnbGVTd2l0Y2gge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG5cbiAgICAubXhfU2V0dGluZ3NGbGFnX2xhYmVsIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TZXJ2ZXJPZmZsaW5lRGlhbG9nIHtcbiAgICAubXhfU2VydmVyT2ZmbGluZURpYWxvZ19jb250ZW50IHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogODVweDtcbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgaHIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgb3BhY2l0eTogMC4xO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHg7XG5cbiAgICAgICAgICAgIGxpOm50aC1jaGlsZChuICsgMikge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU2VydmVyT2ZmbGluZURpYWxvZ19jb250ZW50X2NvbnRleHQge1xuICAgICAgICAgICAgLm14X1NlcnZlck9mZmxpbmVEaWFsb2dfY29udGVudF9jb250ZXh0X3RpbWVzdGFtcCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMTVweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJG11dGVkLWZnLWNvbG9yO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OyAvKiBzYW1lIGFzIGF2YXRhciAqL1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9TZXJ2ZXJPZmZsaW5lRGlhbG9nX2NvbnRlbnRfY29udGV4dF90aW1lbGluZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxNTVweCk7IC8qIDExNXB4IHRpbWVzdGFtcCB3aWR0aCArIDQwcHggcmlnaHQgbWFyZ2luICovXG5cbiAgICAgICAgICAgICAgICAubXhfU2VydmVyT2ZmbGluZURpYWxvZ19jb250ZW50X2NvbnRleHRfdGltZWxpbmVfaGVhZGVyIHtcbiAgICAgICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9TZXJ2ZXJPZmZsaW5lRGlhbG9nX2NvbnRlbnRfY29udGV4dF90eG4ge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcblxuICAgICAgICAgICAgICAgICAgICAubXhfU2VydmVyT2ZmbGluZURpYWxvZ19jb250ZW50X2NvbnRleHRfdHhuX2Rlc2Mge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDEwMHB4KTsgLyogMTAwcHggaXMgYW4gYXJiaXRyYXJ5IG1hcmdpbiBmb3IgdGhlIGJ1dHRvbiAqL1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NlcnZlclBpY2tlckRpYWxvZyB7XG4gICAgd2lkdGg6IDQ2OHB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICAubXhfRGlhbG9nX2NvbnRlbnQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgID4gcCB7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgICAgICAgICAgbWFyZ2luOiAxNnB4IDA7XG5cbiAgICAgICAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAyNHB4IDI0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA+IGgyIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgbWFyZ2luOiAxNnB4IDAgMTZweCA4cHg7XG4gICAgICAgIH1cblxuICAgICAgICA+IGEge1xuICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1NlcnZlclBpY2tlckRpYWxvZ19vdGhlckhvbWVzZXJ2ZXJSYWRpbyB7XG4gICAgICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSArIGRpdiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TZXJ2ZXJQaWNrZXJEaWFsb2dfb3RoZXJIb21lc2VydmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdW5zZXQ7XG5cbiAgICAgICAgPiBpbnB1dCB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICA+IGxhYmVsIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9wcmltYXJ5IHtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDY0cHgpO1xuICAgICAgICBtYXJnaW46IDAgOHB4O1xuICAgICAgICBwYWRkaW5nOiAxNXB4IDE4cHg7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3IFZlY3RvciBDcmVhdGlvbnMgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NldEVtYWlsRGlhbG9nX2VtYWlsX2lucHV0IHtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgICBwYWRkaW5nOiA5cHg7XG4gICAgY29sb3I6ICRpbnB1dC1mZy1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAyODBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4ubXhfU2V0RW1haWxEaWFsb2dfZW1haWxfaW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYWNjZW50O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi8qIE5vdCBhY3R1YWxseSBhIGNvbXBvbmVudCBidXQgdGhpbmdzIHNoYXJlZCBieSBzZXR0aW5ncyBjb21wb25lbnRzICovXG4ubXhfVXNlclNldHRpbmdzRGlhbG9nLFxuLm14X1Jvb21TZXR0aW5nc0RpYWxvZyxcbi5teF9TcGFjZVNldHRpbmdzRGlhbG9nLFxuLm14X1NwYWNlUHJlZmVyZW5jZXNEaWFsb2cge1xuICAgIHdpZHRoOiA5MHZ3O1xuICAgIG1heC13aWR0aDogMTAwMHB4O1xuICAgIC8qIHNldCB0aGUgaGVpZ2h0IHRvbyBzaW5jZSB0YWJiZWQgdmlldyBzY3JvbGxzIGl0c2VsZi4gKi9cbiAgICBoZWlnaHQ6IDgwdmg7XG5cbiAgICAubXhfVGFiYmVkVmlldyB7XG4gICAgICAgIHRvcDogNjVweDtcbiAgICB9XG5cbiAgICAubXhfVGFiYmVkVmlldyAubXhfU2V0dGluZ3NUYWIge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBtaW4td2lkdGg6IDU4MHB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMDBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAvKiBQdXQgc29tZSBwYWRkaW5nIG9uIHRoZSBib3R0b20gdG8gYXZvaWQgdGhlIHNldHRpbmdzIHRhYiBmcm9tICovXG4gICAgICAgIC8qIGNvbGxpZGluZyBoYXJzaGx5IHdpdGggdGhlIGRpYWxvZyB3aGVuIHNjcm9sbGVkIGRvd24uICovXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMDBweDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTggTmV3IFZlY3RvciBMdGQuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NoYXJlRGlhbG9nIGhyIHtcbiAgICBtYXJnaW4tdG9wOiAyNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgYm9yZGVyLWNvbG9yOiAkbGlnaHQtZmctY29sb3I7XG59XG5cbi5teF9TaGFyZURpYWxvZyAubXhfU2hhcmVEaWFsb2dfY29udGVudCB7XG4gICAgbWFyZ2luOiAxMHB4IDA7XG5cbiAgICAubXhfQ29weWFibGVUZXh0IHtcbiAgICAgICAgd2lkdGg6IHVuc2V0OyAvKiBmdWxsIHdpZHRoICovXG5cbiAgICAgICAgPiBhIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAxO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X1NoYXJlRGlhbG9nX3NwbGl0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLm14X1NoYXJlRGlhbG9nX3FyY29kZV9jb250YWluZXIge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGhlaWdodDogMjU2cHg7XG4gICAgd2lkdGg6IDI1NnB4O1xuICAgIG1hcmdpbi1yaWdodDogNjRweDtcbn1cblxuLm14X1NoYXJlRGlhbG9nX3FyY29kZV9jb250YWluZXIgKyAubXhfU2hhcmVEaWFsb2dfc29jaWFsX2NvbnRhaW5lciB7XG4gICAgd2lkdGg6IDI5OXB4O1xufVxuXG4ubXhfU2hhcmVEaWFsb2dfc29jaWFsX2NvbnRhaW5lciB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXhfU2hhcmVEaWFsb2dfc29jaWFsX2ljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ncmlkO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuIiwiLypcbkNvcHlyaWdodCBNaWNoYWVsIFRlbGF0eW5za2kgPDd0M2NoZ3V5QGdtYWlsLmNvbT5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU2xhc2hDb21tYW5kSGVscERpYWxvZyAubXhfU2xhc2hDb21tYW5kSGVscERpYWxvZ19oZWFkZXJSb3cgaDIge1xuICAgIG1hcmdpbi1ib3R0b206IDJweDtcbn1cblxuLm14X1NsYXNoQ29tbWFuZEhlbHBEaWFsb2cgLm14X0RpYWxvZ19jb250ZW50IHtcbiAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDM0cHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU3BhY2VQcmVmZXJlbmNlc0RpYWxvZyB7XG4gICAgd2lkdGg6IDcwMHB4O1xuICAgIGhlaWdodDogNDAwcHg7XG5cbiAgICA+IGg0IHtcbiAgICAgICAgbWFyZ2luOiAtMTJweCAwIDA7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgfVxuXG4gICAgLm14X1RhYmJlZFZpZXcge1xuICAgICAgICB0b3A6IDgwcHg7XG5cbiAgICAgICAgLm14X1NldHRpbmdzVGFiIHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogdW5zZXQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9TcGFjZVByZWZlcmVuY2VzRGlhbG9nX2FwcGVhcmFuY2VJY29uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9zZXR0aW5ncy9hcHBlYXJhbmNlLnN2Z1wiKTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TcGFjZVNldHRpbmdzRGlhbG9nIHtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcblxuICAgIC5teF9TcGFjZVNldHRpbmdzX2Vycm9yVGV4dCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI4cHg7XG4gICAgfVxuXG4gICAgLm14X1RvZ2dsZVN3aXRjaCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gICAgfVxuXG4gICAgLm14X1NldHRpbmdzVGFiX3NlY3Rpb24ge1xuICAgICAgICAubXhfU2V0dGluZ3NUYWJfc2VjdGlvbl9jYXB0aW9uIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcblxuICAgICAgICAgICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uX2NvbnRlbnQge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE4cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYgKyBzcGFuIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE4cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMjZweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TcGFjZVNldHRpbmdzRGlhbG9nX2J1dHRvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBtYXJnaW4tdG9wOiA2NHB4O1xuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfbGluayB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2hhc0tpbmQge1xuICAgICAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgICAgIG1hcmdpbjogN3B4IDE4cHg7XG5cbiAgICAgICAgICAgICYubXhfU2V0dGluZ3NUYWJfc2hvd0FkdmFuY2VkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDE4cHggMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9UYWJiZWRWaWV3X3RhYkxhYmVsIHtcbiAgICAgICAgLm14X1NwYWNlU2V0dGluZ3NEaWFsb2dfZ2VuZXJhbEljb246OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3Muc3ZnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1NwYWNlU2V0dGluZ3NEaWFsb2dfdmlzaWJpbGl0eUljb246OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvZXllLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TcG90bGlnaHREaWFsb2dfd3JhcHBlciAubXhfRGlhbG9nIHtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgb3ZlcmZsb3cteTogaW5pdGlhbDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiA2MCU7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb250YWluOiB1bnNldDsgLyogbmVlZGVkIGZvciAjbXhfU3BvdGxpZ2h0RGlhbG9nX2tleWJvYXJkUHJvbXB0IHRvIG5vdCBiZSBjdWxsZWQgKi9cblxuICAgICNteF9TcG90bGlnaHREaWFsb2dfa2V5Ym9hcmRQcm9tcHQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgICAgIHRvcDogLTYwcHg7IC8qIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2YgdGhlIG1vZGFsICovXG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuXG4gICAgICAgIGtiZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBwYWRkaW5nOiAycHggJHNwYWNpbmctNDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAkc3BhY2luZy00O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAvKiBUbyBhdm9pZCBhbnkgc3R5bGluZyBpbmhlcmVudCB3aXRoIDxrYmQ+IGVsZW1lbnRzICovXG4gICAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfU3BvdGxpZ2h0RGlhbG9nIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLm14X0RpYWxvZ19oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5teF9TcG90bGlnaHREaWFsb2dfc2VhcmNoQm94IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweCA4cHggMCAwO1xuICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy0xMiAkc3BhY2luZy0xNjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRzeXN0ZW07XG5cbiAgICAgICAgPiAubXhfU3BvdGxpZ2h0RGlhbG9nX2ZpbHRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy00ICRzcGFjaW5nLTggJHNwYWNpbmctNCAzN3B4O1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGxlZnQ6ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X1Nwb3RsaWdodERpYWxvZ19maWx0ZXJQZW9wbGU6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vbWVtYmVycy5zdmdcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfU3BvdGxpZ2h0RGlhbG9nX2ZpbHRlclB1YmxpY1Jvb21zOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9leHBsb3JlLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19maWx0ZXItLWNsb3NlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkc3lzdGVtO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmctODtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA4cHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogOHB4O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2NhbmNlbC1zbWFsbC5zdmdcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgPiBpbnB1dCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLm14X1NwaW5uZXIge1xuICAgICAgICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgICAgICAgd2lkdGg6IHVuc2V0O1xuICAgICAgICAgICAgaGVpZ2h0OiB1bnNldDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZy0xNjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNteF9TcG90bGlnaHREaWFsb2dfY29udGVudCB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctMTY7XG5cbiAgICAgICAgdWwge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfc2VjdGlvbiB7XG4gICAgICAgICAgICA+IGg0LFxuICAgICAgICAgICAgPiAubXhfU3BvdGxpZ2h0RGlhbG9nX3NlY3Rpb25IZWFkZXIgPiBoNCB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgID4gaDQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfc2VjdGlvbkhlYWRlciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy04O1xuXG4gICAgICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19vcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAkc3BhY2luZy00O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJiArIC5teF9TcG90bGlnaHREaWFsb2dfc2VjdGlvbiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMjQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX3JlY2VudGx5Vmlld2VkIHtcbiAgICAgICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMXB4OyAvKiBvY2NsdWRlIHRoZSAxcHggdmlzaWJsZSBvZiB0aGUgdmVyeSBuZXh0IHRpbGUgdG8gcHJldmVudCBpdCBsb29raW5nIGJyb2tlbiAqL1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX29wdGlvbiB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogNThweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDU4cHg7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiA1OHB4O1xuICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbiAgICAgICAgICAgICAgICAubXhfRGVjb3JhdGVkUm9vbUF2YXRhciB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCA5cHggJHNwYWNpbmctNDsgLyogbWFpbnRhaW4gY2VudGVyaW5nICovXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJiArIC5teF9TcG90bGlnaHREaWFsb2dfb3B0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nLTE2O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAgICAgJlthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19yZXN1bHRzLFxuICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX3JlY2VudFNlYXJjaGVzLFxuICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX290aGVyU2VhcmNoZXMsXG4gICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfaGlkZGVuUmVzdWx0cyB7XG4gICAgICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX29wdGlvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNnB4ICRzcGFjaW5nLTQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAgICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfb3B0aW9uLS1lbmRBZG9ybm1lbnQge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYubXhfU3BvdGxpZ2h0RGlhbG9nX3Jlc3VsdF9tdWx0aWxpbmUge1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAgICAgICAgICAgICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy00ICRzcGFjaW5nLTIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAycHggJHNwYWNpbmctNDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfZW50ZXJQcm9tcHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogOXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy04O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPiAubXhfU3BvdGxpZ2h0RGlhbG9nX21ldGFzcGFjZVJlc3VsdCxcbiAgICAgICAgICAgICAgICA+IC5teF9EZWNvcmF0ZWRSb29tQXZhdGFyLFxuICAgICAgICAgICAgICAgID4gLm14X0Jhc2VBdmF0YXIge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0Jhc2VBdmF0YXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX3Jlc3VsdF9wdWJsaWNSb29tRGV0YWlscyB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfcmVzdWx0X3B1YmxpY1Jvb21IZWFkZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19yZXN1bHRfcHVibGljUm9vbU5hbWUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19yZXN1bHRfcHVibGljUm9vbUFsaWFzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZy04O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19yZXN1bHRfcHVibGljUm9vbURlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTIwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm14X05vdGlmaWNhdGlvbkJhZGdlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19vcHRpb24tLW1lbnUsXG4gICAgICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19vcHRpb24tLW5vdGlmaWNhdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgbWluLXdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAycHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAycHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyOjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgICAgICZbYXJpYS1zZWxlY3RlZD1cInRydWVcIl06OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX29wdGlvbi0tbWVudTo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NvbnRleHQtbWVudS5zdmdcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICAgICAmW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcblxuICAgICAgICAgICAgICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX29wdGlvbi0tbWVudSxcbiAgICAgICAgICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19vcHRpb24tLW5vdGlmaWNhdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdIC5teF9TcG90bGlnaHREaWFsb2dfZW50ZXJQcm9tcHQge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19pbnZpdGVMaW5rLFxuICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX2NyZWF0ZVJvb20ge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctODtcblxuICAgICAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogM3B4ICRzcGFjaW5nLTggM3B4ICRzcGFjaW5nLTI4O1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRhY2NlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19pbnZpdGVMaW5rIC5teF9BY2Nlc3NpYmxlQnV0dG9uOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2xpbmsuc3ZnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19jcmVhdGVSb29tIC5teF9BY2Nlc3NpYmxlQnV0dG9uOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L2hhc2guc3ZnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19vdGhlclNlYXJjaGVzIHtcbiAgICAgICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfc3RhcnRDaGF0LFxuICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19qb2luUm9vbUFsaWFzLFxuICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19leHBsb3JlUHVibGljUm9vbXMsXG4gICAgICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX3N0YXJ0R3JvdXBDaGF0IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRzcGFjaW5nLTMyO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogJHNwYWNpbmctNDtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfc3RhcnRDaGF0OjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL21lbWJlcnMuc3ZnXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX2pvaW5Sb29tQWxpYXM6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L2hhc2gtY2lyY2xlLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19leHBsb3JlUHVibGljUm9vbXM6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L2V4cGxvcmUuc3ZnXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfU3BvdGxpZ2h0RGlhbG9nX3N0YXJ0R3JvdXBDaGF0OjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9ncm91cC1tZW1iZXJzLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19vdGhlclNlYXJjaGVzX21lc3NhZ2VTZWFyY2hUZXh0IHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfb3RoZXJTZWFyY2hlc19tZXNzYWdlU2VhcmNoSWNvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tO1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9zZWFyY2gtaW5zZXQuc3ZnXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19yZXN1bHRfZGV0YWlscyB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmctODtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcbiAgICAgICAgICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Nwb3RsaWdodERpYWxvZ19yZWNlbnRTZWFyY2hlcyA+IGg0ID4gLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfZW50ZXJQcm9tcHQge1xuICAgICAgICAgICAgcGFkZGluZzogMnB4ICRzcGFjaW5nLTQ7XG4gICAgICAgICAgICAvKiBUbyBhdm9pZCBhbnkgc3R5bGluZyBpbmhlcmVudCB3aXRoIDxrYmQ+IGVsZW1lbnRzICovXG4gICAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy00O1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcG90bGlnaHREaWFsb2dfbWV0YXNwYWNlUmVzdWx0IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG5cbiAgICAgICAgICAgICYubXhfU3BvdGxpZ2h0RGlhbG9nX21ldGFzcGFjZVJlc3VsdF9ob21lLXNwYWNlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvaG9tZS5zdmdcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfU3BvdGxpZ2h0RGlhbG9nX21ldGFzcGFjZVJlc3VsdF9mYXZvdXJpdGVzLXNwYWNlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3QvZmF2b3JpdGUuc3ZnXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X1Nwb3RsaWdodERpYWxvZ19tZXRhc3BhY2VSZXN1bHRfcGVvcGxlLXNwYWNlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9tZW1iZXJzLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9TcG90bGlnaHREaWFsb2dfbWV0YXNwYWNlUmVzdWx0X29ycGhhbnMtc3BhY2Uge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9oYXNoLWNpcmNsZS5zdmdcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vKlxuICogVG8gYXZvaWQgdmlzdWFsIGdsaXRjaGluZyBvZiB0d28gbW9kYWxzIHN0YWNraW5nIGJyaWVmbHksIHdlIGN1c3RvbWlzZSB0aGVcbiAqIHRlcm1zIGRpYWxvZyBzaXppbmcgd2hlbiBpdCB3aWxsIGFwcGVhciBmb3IgdGhlIGludGVncmF0aW9uIG1hbmFnZXIgc28gdGhhdFxuICogaXQgZ2V0cyB0aGUgc2FtZSBiYXNpYyBzaXplIGFzIHRoZSBJTSdzIG93biBtb2RhbC5cbiAqL1xuLm14X1Rlcm1zRGlhbG9nX2ZvckludGVncmF0aW9uTWFuYWdlciAubXhfRGlhbG9nIHtcbiAgICB3aWR0aDogNjAlO1xuICAgIGhlaWdodDogNzAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5teF9UZXJtc0RpYWxvZ190ZXJtc1RhYmxlSGVhZGVyIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ubXhfVGVybXNEaWFsb2dfdGVybXNUYWJsZSB7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ubXhfVGVybXNEaWFsb2dfc2VydmljZSxcbi5teF9UZXJtc0RpYWxvZ19zdW1tYXJ5IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1VudHJ1c3RlZERldmljZURpYWxvZyB7XG4gICAgLm14X0RpYWxvZ190aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgLm14X0UyRUljb24ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRGlhbG9nX2J1dHRvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGQuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1VwbG9hZENvbmZpcm1EaWFsb2dfZmlsZUljb24ge1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xufVxuXG4ubXhfVXBsb2FkQ29uZmlybURpYWxvZ19wcmV2aWV3T3V0ZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm14X1VwbG9hZENvbmZpcm1EaWFsb2dfcHJldmlld0lubmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLm14X1VwbG9hZENvbmZpcm1EaWFsb2dfaW1hZ2VQcmV2aWV3IHtcbiAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRkaWFsb2ctY2xvc2UtZmctY29sb3I7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGQuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLyogSUNPTlMgKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLm14X1VzZXJTZXR0aW5nc0RpYWxvZ19zZXR0aW5nc0ljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NldHRpbmdzLnN2Z1wiKTtcbn1cblxuLm14X1VzZXJTZXR0aW5nc0RpYWxvZ19hcHBlYXJhbmNlSWNvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3MvYXBwZWFyYW5jZS5zdmdcIik7XG59XG5cbi5teF9Vc2VyU2V0dGluZ3NEaWFsb2dfdm9pY2VJY29uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jYWxsL3ZvaWNlLWNhbGwuc3ZnXCIpO1xufVxuXG4ubXhfVXNlclNldHRpbmdzRGlhbG9nX2JlbGxJY29uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9ub3RpZmljYXRpb25zLnN2Z1wiKTtcbn1cbi5teF9Vc2VyU2V0dGluZ3NEaWFsb2dfaWNvbk1lc3NhZ2U6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NoZWNrLnN2Z1wiKTtcbn1cblxuLm14X1VzZXJTZXR0aW5nc0RpYWxvZ19wcmVmZXJlbmNlc0ljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NldHRpbmdzL3ByZWZlcmVuY2Uuc3ZnXCIpO1xufVxuXG4ubXhfVXNlclNldHRpbmdzRGlhbG9nX2tleWJvYXJkSWNvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3Mva2V5Ym9hcmQuc3ZnXCIpO1xufVxuXG4ubXhfVXNlclNldHRpbmdzRGlhbG9nX3NpZGViYXJJY29uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9zZXR0aW5ncy9zaWRlYmFyLnN2Z1wiKTtcbn1cblxuLm14X1VzZXJTZXR0aW5nc0RpYWxvZ19zZWN1cml0eUljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NlY3VyaXR5LnN2Z1wiKTtcbn1cblxuLm14X1VzZXJTZXR0aW5nc0RpYWxvZ19zZXNzaW9uc0ljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NldHRpbmdzL2RldmljZXMuc3ZnXCIpO1xufVxuXG4ubXhfVXNlclNldHRpbmdzRGlhbG9nX2hlbHBJY29uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9zZXR0aW5ncy9oZWxwLnN2Z1wiKTtcbn1cblxuLm14X1VzZXJTZXR0aW5nc0RpYWxvZ19sYWJzSWNvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvc2V0dGluZ3MvZmxhc2suc3ZnXCIpO1xufVxuXG4ubXhfVXNlclNldHRpbmdzRGlhbG9nX21qb2xuaXJJY29uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2NvbXBvc2VyL2Vtb2ppLnN2Z1wiKTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9WZXJpZnlFTWFpbERpYWxvZyB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHRvcDogMzAwcHg7XG5cbiAgICAubXhfRGlhbG9nIHtcbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctMjQgJHNwYWNpbmctMjQgJHNwYWNpbmctMTY7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQ4NXB4O1xuXG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMjRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfVmVyaWZ5RU1haWxEaWFsb2dfdGV4dC1saWdodCB7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQXV0aEJvZHlfZGlkLW5vdC1yZWNlaXZlIHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctODtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9EaWFsb2dfY2FuY2VsQnV0dG9uIHtcbiAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1dpZGdldENhcGFiaWxpdGllc1Byb21wdERpYWxvZyB7XG4gICAgLnRleHQtbXV0ZWQge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgfVxuXG4gICAgLm14X0RpYWxvZ19jb250ZW50IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAubXhfV2lkZ2V0Q2FwYWJpbGl0aWVzUHJvbXB0RGlhbG9nX2NhcCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG5cbiAgICAgICAgLm14X1dpZGdldENhcGFiaWxpdGllc1Byb21wdERpYWxvZ19ieWxpbmUge1xuICAgICAgICAgICAgY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyNnB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTEycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRGlhbG9nX2J1dHRvbnMge1xuICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OyAvKiBkb3VibGUgbm9ybWFsICovXG4gICAgfVxuXG4gICAgLm14X1NldHRpbmdzRmxhZyB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBjYWxjKCRmb250LTE0cHggKyA3cHggKyA3cHgpOyAvKiA3cHggdG9wICYgYm90dG9tIHBhZGRpbmcgKi9cbiAgICAgICAgY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuXG4gICAgICAgIC5teF9Ub2dnbGVTd2l0Y2gge1xuICAgICAgICAgICAgLyogZG93bnNpemUgdGhlIHN3aXRjaCArIGJhbGwgKi9cbiAgICAgICAgICAgIHdpZHRoOiAkZm9udC0zMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAkZm9udC0xNXB4O1xuXG4gICAgICAgICAgICAmLm14X1RvZ2dsZVN3aXRjaF9vbiA+IC5teF9Ub2dnbGVTd2l0Y2hfYmFsbCB7XG4gICAgICAgICAgICAgICAgbGVmdDogY2FsYygxMDAlIC0gJGZvbnQtMTVweCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9Ub2dnbGVTd2l0Y2hfYmFsbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICRmb250LTE1cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRmb250LTE1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTgsIDIwMTksIDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQWNjZXNzU2VjcmV0U3RvcmFnZURpYWxvZyB7XG4gICAgLm14X0FjY2Vzc1NlY3JldFN0b3JhZ2VEaWFsb2dfdGl0bGVXaXRoSWNvbiB7XG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogJHNwYWNpbmctODtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHRvcDogNXB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfQWNjZXNzU2VjcmV0U3RvcmFnZURpYWxvZ19yZXNldEJhZGdlOjpiZWZvcmUge1xuICAgICAgICAgICAgLyogVGhlIGltYWdlIGlzbid0IGNhcGFibGUgb2YgbWFza2luZywgc28gd2UgdXNlIGEgYmFja2dyb3VuZCBpbnN0ZWFkLiAqL1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3dhcm5pbmctYmFkZ2Uuc3ZnXCIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0FjY2Vzc1NlY3JldFN0b3JhZ2VEaWFsb2dfc2VjdXJlQmFja3VwVGl0bGU6OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9zZWN1cmUtYmFja3VwLnN2Z1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfQWNjZXNzU2VjcmV0U3RvcmFnZURpYWxvZ19zZWN1cmVQaHJhc2VUaXRsZTo6YmVmb3JlIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL3NlY3VyZS1waHJhc2Uuc3ZnXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0FjY2Vzc1NlY3JldFN0b3JhZ2VEaWFsb2dfcHJpbWFyeUNvbnRhaW5lciB7XG4gICAgICAgIC5teF9BY2Nlc3NTZWNyZXRTdG9yYWdlRGlhbG9nX3Bhc3NQaHJhc2VJbnB1dCB7XG4gICAgICAgICAgICB3aWR0aDogMzAwcHg7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYWNjZW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0FjY2Vzc1NlY3JldFN0b3JhZ2VEaWFsb2dfa2V5U3RhdHVzIHtcbiAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9BY2Nlc3NTZWNyZXRTdG9yYWdlRGlhbG9nX3JlY292ZXJ5S2V5RW50cnkge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAgIC5teF9BY2Nlc3NTZWNyZXRTdG9yYWdlRGlhbG9nX3JlY292ZXJ5S2V5RW50cnlfdGV4dElucHV0IHtcbiAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9BY2Nlc3NTZWNyZXRTdG9yYWdlRGlhbG9nX3JlY292ZXJ5S2V5RW50cnlfZW50cnlDb250cm9sU2VwYXJhdG9yVGV4dCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAkc3BhY2luZy0xNjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0FjY2Vzc1NlY3JldFN0b3JhZ2VEaWFsb2dfcmVjb3ZlcnlLZXlFbnRyeV9maWxlSW5wdXQge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQWNjZXNzU2VjcmV0U3RvcmFnZURpYWxvZ19yZWNvdmVyeUtleUZlZWRiYWNrIHtcbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFzay1zaXplOiAyMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA1cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfQWNjZXNzU2VjcmV0U3RvcmFnZURpYWxvZ19yZWNvdmVyeUtleUZlZWRiYWNrLS12YWxpZCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9jaGVjay5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0FjY2Vzc1NlY3JldFN0b3JhZ2VEaWFsb2dfcmVjb3ZlcnlLZXlGZWVkYmFjay0taW52YWxpZCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRhbGVydDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL3guc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0RpYWxvZ19idXR0b25zIHtcbiAgICAgICAgICAgICRzcGFjaW5nU3RhcnQ6ICRzcGFjaW5nLTI0OyAvKiAxNnB4IGljb24gKyA4cHggcGFkZGluZyAqL1xuXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBpbml0aWFsO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgICAgICAgICAgZ2FwOiAxNHB4O1xuXG4gICAgICAgICAgICAubXhfRGlhbG9nX2J1dHRvbnNfYWRkaXRpdmUge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuXG4gICAgICAgICAgICAgICAgLm14X0FjY2Vzc1NlY3JldFN0b3JhZ2VEaWFsb2dfcmVzZXQge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAkc3BhY2luZ1N0YXJ0O1xuXG4gICAgICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAycHg7IC8qIGFsaWdubWVudCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3dhcm5pbmctYmFkZ2Uuc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0FjY2Vzc1NlY3JldFN0b3JhZ2VEaWFsb2dfcmVzZXRfbGluayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGFsZXJ0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfRGlhbG9nX2J1dHRvbnNfcm93IHtcbiAgICAgICAgICAgICAgICBnYXA6ICRzcGFjaW5nLTE2OyAvKiBUT0RPOiBuZWVkcyBub3JtYWxpemF0aW9uICovXG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICRzcGFjaW5nU3RhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQ3JlYXRlQ3Jvc3NTaWduaW5nRGlhbG9nIHtcbiAgICAvKiBXaHkgeW91IGFzaz8gQmVjYXVzZSBDb21wbGV0ZVNlY3VyaXR5Qm9keSBpcyA2MDBweCBzbyB0aGlzIGlzIHRoZSB3aWR0aCAqL1xuICAgIC8qIHdlIGVuZCB1cCB3aGVuIGluIHRoZXJlLCBidXQgd2hlbiBpbiBvdXIgb3duIGRpYWxvZyB3ZSBzZXQgb3VyIG93biB3aWR0aCAqL1xuICAgIC8qIHNvIG5lZWQgdG8gZml4IGl0IHRvIHNvbWV0aGluZyBzZW5zaWJsZSBhcyBvdGhlcndpc2Ugd2UnZCBlbmQgdXAgZWl0aGVyICovXG4gICAgLyogcmVhbGx5IHdpZGUgb3IgcmVhbGx5IG5hcnJvdyBkZXBlbmRpbmcgb24gdGhlIHBoYXNlLiBJIGJldCB5b3Ugd2lzaCB5b3UgKi9cbiAgICAvKiBuZXZlciBhc2tlZC4gKi9cbiAgICB3aWR0aDogNTYwcHg7XG5cbiAgICBkZXRhaWxzIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgbWFyZ2luOiAxZW0gMDsgLyogZW11bGF0ZSBwYXJhZ3JhcGggc3BhY2luZyBiZWNhdXNlIHdlIGNhbid0IHB1dCB0aGlzIGJ1dHRvbiBpbiBhIHBhcmFncmFwaCBkdWUgdG8gSFRNTCBydWxlcyAqL1xuICAgIH1cbn1cblxuLm14X0NyZWF0ZUNyb3NzU2lnbmluZ0RpYWxvZyAubXhfRGlhbG9nX3RpdGxlIHtcbiAgICAvKiBUT0RPOiBDb25zaWRlciBzZXR0aW5nIHRoaXMgZm9yIGFsbCBkaWFsb2cgdGl0bGVzLiAqL1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOCBOZXcgVmVjdG9yIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9DcmVhdGVLZXlCYWNrdXBEaWFsb2cgLm14X0RpYWxvZ190aXRsZSB7XG4gICAgLyogVE9ETzogQ29uc2lkZXIgc2V0dGluZyB0aGlzIGZvciBhbGwgZGlhbG9nIHRpdGxlcy4gKi9cbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbi5teF9DcmVhdGVLZXlCYWNrdXBEaWFsb2dfcHJpbWFyeUNvbnRhaW5lciB7XG4gICAgLyogRklYTUU6IHBsaW50aCBjb2xvdXIgaW4gbmV3IHRoZW1lKHMpLiBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50OyAqL1xuICAgIHBhZGRpbmc6IDIwcHg7XG59XG5cbi5teF9DcmVhdGVLZXlCYWNrdXBEaWFsb2dfcHJpbWFyeUNvbnRhaW5lcjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5teF9DcmVhdGVLZXlCYWNrdXBEaWFsb2dfcGFzc1BocmFzZUNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cblxuLm14X0NyZWF0ZUtleUJhY2t1cERpYWxvZ19wYXNzUGhyYXNlSW5wdXQge1xuICAgIGZsZXg6IG5vbmU7XG4gICAgd2lkdGg6IDI1MHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRhY2NlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG4ubXhfQ3JlYXRlS2V5QmFja3VwRGlhbG9nX3Bhc3NQaHJhc2VNYXRjaCB7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG5cbi5teF9DcmVhdGVLZXlCYWNrdXBEaWFsb2dfcmVjb3ZlcnlLZXlIZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbn1cblxuLm14X0NyZWF0ZUtleUJhY2t1cERpYWxvZ19yZWNvdmVyeUtleUNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbn1cblxuLm14X0NyZWF0ZUtleUJhY2t1cERpYWxvZ19yZWNvdmVyeUtleSB7XG4gICAgd2lkdGg6IDI2MnB4O1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgY29sb3I6ICRpbmZvLXBsaW50aC1mZy1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5mby1wbGludGgtYmctY29sb3I7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xufVxuXG4ubXhfQ3JlYXRlS2V5QmFja3VwRGlhbG9nX3JlY292ZXJ5S2V5QnV0dG9ucyB7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5teF9DcmVhdGVLZXlCYWNrdXBEaWFsb2dfcmVjb3ZlcnlLZXlCdXR0b25zIGJ1dHRvbiB7XG4gICAgZmxleDogMTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ubXhfQ3JlYXRlS2V5QmFja3VwRGlhbG9nIHtcbiAgICBkZXRhaWxzIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgbWFyZ2luOiAxZW0gMDsgLyogZW11bGF0ZSBwYXJhZ3JhcGggc3BhY2luZyBiZWNhdXNlIHdlIGNhbid0IHB1dCB0aGlzIGJ1dHRvbiBpbiBhIHBhcmFncmFwaCBkdWUgdG8gSFRNTCBydWxlcyAqL1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOCBOZXcgVmVjdG9yIEx0ZFxuQ29weXJpZ2h0IDIwMTksIDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZyB7XG4gICAgLyogV2h5IHlvdSBhc2s/IEJlY2F1c2UgQ29tcGxldGVTZWN1cml0eUJvZHkgaXMgNjAwcHggc28gdGhpcyBpcyB0aGUgd2lkdGggKi9cbiAgICAvKiB3ZSBlbmQgdXAgd2hlbiBpbiB0aGVyZSwgYnV0IHdoZW4gaW4gb3VyIG93biBkaWFsb2cgd2Ugc2V0IG91ciBvd24gd2lkdGggKi9cbiAgICAvKiBzbyBuZWVkIHRvIGZpeCBpdCB0byBzb21ldGhpbmcgc2Vuc2libGUgYXMgb3RoZXJ3aXNlIHdlJ2QgZW5kIHVwIGVpdGhlciAqL1xuICAgIC8qIHJlYWxseSB3aWRlIG9yIHJlYWxseSBuYXJyb3cgZGVwZW5kaW5nIG9uIHRoZSBwaGFzZS4gSSBiZXQgeW91IHdpc2ggeW91ICovXG4gICAgLyogbmV2ZXIgYXNrZWQuICovXG4gICAgd2lkdGg6IDU2MHB4O1xuXG4gICAgJi5teF9TdWNjZXNzRGlhbG9nIHtcbiAgICAgICAgcGFkZGluZzogNTZweDsgLyogODBweCBmcm9tIGRlc2lnbiAtIDI0cHggd3JhcHBlciBwYWRkaW5nICovXG5cbiAgICAgICAgLm14X0RpYWxvZ190aXRsZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy0xNjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TZXR0aW5nc0ZsYWcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC5teF9TZXR0aW5nc0ZsYWdfbGFiZWwge1xuICAgICAgICBmbGV4OiAxIDEgMDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIH1cblxuICAgIC5teF9Ub2dnbGVTd2l0Y2gge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDMwcHg7XG4gICAgfVxuXG4gICAgZGV0YWlscyAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbjogMWVtIDA7IC8qIGVtdWxhdGUgcGFyYWdyYXBoIHNwYWNpbmcgYmVjYXVzZSB3ZSBjYW4ndCBwdXQgdGhpcyBidXR0b24gaW4gYSBwYXJhZ3JhcGggZHVlIHRvIEhUTUwgcnVsZXMgKi9cbiAgICB9XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nIC5teF9EaWFsb2dfdGl0bGUge1xuICAgIC8qIFRPRE86IENvbnNpZGVyIHNldHRpbmcgdGhpcyBmb3IgYWxsIGRpYWxvZyB0aXRsZXMuICovXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG4ubXhfQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZ190aXRsZVdpdGhJY29uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiA1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbn1cblxuLm14X0NyZWF0ZVNlY3JldFN0b3JhZ2VEaWFsb2dfc2VjdXJlQmFja3VwVGl0bGU6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvc2VjdXJlLWJhY2t1cC5zdmdcIik7XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX3NlY3VyZVBocmFzZVRpdGxlOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL3NlY3VyZS1waHJhc2Uuc3ZnXCIpO1xufVxuXG4ubXhfQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZ19jZW50ZXJlZFRpdGxlLFxuLm14X0NyZWF0ZVNlY3JldFN0b3JhZ2VEaWFsb2dfY2VudGVyZWRCb2R5IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX3ByaW1hcnlDb250YWluZXIge1xuICAgIC8qIEZJWE1FOiBwbGludGggY29sb3VyIGluIG5ldyB0aGVtZShzKS4gYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDsgKi9cbiAgICBwYWRkaW5nLXRvcDogMjBweDtcblxuICAgICYubXhfQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZ19yZWNvdmVyeUtleVByaW1hcnljb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX3ByaW1hcnlDb250YWluZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubXhfQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZ19wcmltYXJ5Q29udGFpbmVyIC5teF9TdHlsZWRSYWRpb0J1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICBwYWRkaW5nOiAxMXB4O1xufVxuXG4ubXhfQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZ19vcHRpb25UaXRsZSB7XG4gICAgY29sb3I6ICRkaWFsb2ctdGl0bGUtZmctY29sb3I7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX29wdGlvbkljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogNXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX29wdGlvbkljb25fc2VjdXJlUGhyYXNlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9zZWN1cmUtcGhyYXNlLnN2Z1wiKTtcbn1cblxuLm14X0NyZWF0ZVNlY3JldFN0b3JhZ2VEaWFsb2dfb3B0aW9uSWNvbl9zZWN1cmVCYWNrdXAge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL3NlY3VyZS1iYWNrdXAuc3ZnXCIpO1xufVxuXG4ubXhfQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZ19wYXNzUGhyYXNlQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4ubXhfRmllbGQubXhfQ3JlYXRlU2VjcmV0U3RvcmFnZURpYWxvZ19wYXNzUGhyYXNlRmllbGQge1xuICAgIG1hcmdpbi10b3A6IDBweDtcbn1cblxuLm14X0NyZWF0ZVNlY3JldFN0b3JhZ2VEaWFsb2dfcGFzc1BocmFzZU1hdGNoIHtcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX3JlY292ZXJ5S2V5Q29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX3JlY292ZXJ5S2V5IHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBjb2xvcjogJGluZm8tcGxpbnRoLWZnLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbmZvLXBsaW50aC1iZy1jb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgd29yZC1zcGFjaW5nOiAxZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcblxuICAgIGNvZGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiAzMHJlbTtcbiAgICB9XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX3JlY292ZXJ5S2V5QnV0dG9ucyB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMTZweDtcbn1cblxuLm14X0NyZWF0ZVNlY3JldFN0b3JhZ2VEaWFsb2dfcmVjb3ZlcnlLZXlCdXR0b25zX2NvcHlCdG4ge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX3JlY292ZXJ5S2V5QnV0dG9ucyAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9nX2NvbnRpbnVlU3Bpbm5lciB7XG4gICAgbWFyZ2luLXRvcDogMzNweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLm14X0NyZWF0ZVNlY3JldFN0b3JhZ2VEaWFsb2dfY29udGludWVTcGlubmVyIGltZyB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xufVxuXG5cbi8vUmVzcG9uc2l2ZSBkZXNpZ25cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpe1xuICAgIC5teF9DcmVhdGVTZWNyZXRTdG9yYWdlRGlhbG9ne1xuICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cbn0iLCIvKlxuQ29weXJpZ2h0IDIwMTggTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfS2V5QmFja3VwRmFpbGVkRGlhbG9nIC5teF9EaWFsb2dfdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IDMycHg7XG59XG5cbi5teF9LZXlCYWNrdXBGYWlsZWREaWFsb2dfdGl0bGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWxlZnQ6IDQ1cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBtYXNrOiB1cmwoXCIkKHJlcykvaW1nL2UyZS9sb2NrLXdhcm5pbmctZmlsbGVkLnN2Z1wiKTtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC02cHg7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgfVxufVxuXG4ubXhfS2V5QmFja3VwRmFpbGVkRGlhbG9nIC5teF9EaWFsb2dfYnV0dG9ucyB7XG4gICAgbWFyZ2luLXRvcDogMzZweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOCBOZXcgVmVjdG9yIEx0ZFxuQ29weXJpZ2h0IDIwMTkgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUmVzdG9yZUtleUJhY2t1cERpYWxvZ19rZXlTdGF0dXMge1xuICAgIGhlaWdodDogMzBweDtcbn1cblxuLm14X1Jlc3RvcmVLZXlCYWNrdXBEaWFsb2dfcHJpbWFyeUNvbnRhaW5lciB7XG4gICAgLyogRklYTUU6IHBsaW50aCBjb2xvdXIgaW4gbmV3IHRoZW1lKHMpLiBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50OyAqL1xuICAgIHBhZGRpbmc6IDIwcHg7XG59XG5cbi5teF9SZXN0b3JlS2V5QmFja3VwRGlhbG9nX3Bhc3NQaHJhc2VJbnB1dCxcbi5teF9SZXN0b3JlS2V5QmFja3VwRGlhbG9nX3JlY292ZXJ5S2V5SW5wdXQge1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYWNjZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBwYWRkaW5nOiAxMHB4O1xufVxuXG4ubXhfUmVzdG9yZUtleUJhY2t1cERpYWxvZ19jb250ZW50ID4gZGl2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1pbi1oZWlnaHQ6IDExMHB4OyAvKiBFbXBpcmljYWxseSBtZWFzdXJlZCAqL1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X05ldHdvcmtEcm9wZG93bl93cmFwcGVyIC5teF9Db250ZXh0dWFsTWVudSB7XG4gICAgLm14X0dlbmVyaWNEcm9wZG93bk1lbnVfT3B0aW9uIHtcbiAgICAgICAgJi5teF9HZW5lcmljRHJvcGRvd25NZW51X09wdGlvbi0taGVhZGVyIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAkc3BhY2luZy0xMjtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkc3BhY2luZy00O1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxNjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfR2VuZXJpY0Ryb3Bkb3duTWVudV9PcHRpb24tLWl0ZW0ge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6ICRzcGFjaW5nLTQ7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNpbmctNDtcblxuICAgICAgICAgICAgPiAubXhfR2VuZXJpY0Ryb3Bkb3duTWVudV9PcHRpb24tLWxhYmVsIHNwYW46Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA+IC5teF9HZW5lcmljRHJvcGRvd25NZW51X09wdGlvbi0tbGFiZWwge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAgICAgIGFsaWduLWNvbnRlbnQ6IGJhc2VsaW5lO1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgICAgIHNwYW46bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZy00O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfR2VuZXJpY0Ryb3Bkb3duTWVudV9kaXZpZGVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctNDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctNDtcbiAgICB9XG59XG5cbi5teF9OZXR3b3JrRHJvcGRvd25fYWRkU2VydmVyIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbn1cblxuLm14X05ldHdvcmtEcm9wZG93bl9yZW1vdmVTZXJ2ZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGJhY2tncm91bmQ6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgd2lkdGg6IDhweDtcbiAgICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvY2FuY2VsLXNtYWxsLnN2Z1wiKTtcbiAgICB9XG59XG5cbi5teF9OZXR3b3JrRHJvcGRvd25fZGlhbG9nIC5teF9EaWFsb2cge1xuICAgIHdpZHRoOiA0NXZ3O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3IFZlY3RvciBDcmVhdGlvbnMgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9kaXNhYmxlZCB7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cbiAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeSxcbiAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeV9vdXRsaW5lLFxuICAgICAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9wcmltYXJ5X3NtLFxuICAgICAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rLFxuICAgICAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rX2FjY2VudCxcbiAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfbGlua19pbmxpbmUsXG4gICAgICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2Rhbmdlcl9pbmxpbmUsXG4gICAgICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2NvbnRlbnRfaW5saW5lLFxuICAgICAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rX3NtIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9oYXNLaW5kIHtcbiAgICAgICAgcGFkZGluZzogN3B4IDE4cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgYm9yZGVyOiBub25lOyAvKiBvdmVycmlkZSBkZWZhdWx0IDxidXR0b24gLz4gc3R5bGVzICovXG4gICAgICAgIHdvcmQtYnJlYWs6IGtlZXAtYWxsOyAvKiBwcmV2ZW50IGJ1dHRvbiB0ZXh0IGluIENoaW5lc2UvSmFwYW5lc2UvS29yZWFuIChDSkspIGZyb20gYmVpbmcgY29sbGFwc2VkICovXG5cbiAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeV9zbSxcbiAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfZGFuZ2VyX3NtLFxuICAgICAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rX3NtIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeV9zbSB7XG4gICAgICAgICAgICBjb2xvcjogJGJ1dHRvbi1wcmltYXJ5LWZnLWNvbG9yO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2Rhbmdlcl9zbSB7XG4gICAgICAgICAgICBjb2xvcjogJGJ1dHRvbi1kYW5nZXItZmctY29sb3I7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rX3NtIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfY29uZmlybV9zbSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2NoZWNrLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2NhbmNlbF9zbSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnQ7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQveC5zdmdcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9pY29uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX3ByaW1hcnksXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeV9vdXRsaW5lLFxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX3NlY29uZGFyeSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgfVxuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeSxcbiAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9wcmltYXJ5X291dGxpbmUge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYWNjZW50O1xuICAgIH1cblxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX3ByaW1hcnkge1xuICAgICAgICBjb2xvcjogJGJ1dHRvbi1wcmltYXJ5LWZnLWNvbG9yO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgIH1cblxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX3ByaW1hcnlfb3V0bGluZSB7XG4gICAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLXNlY29uZGFyeS1iZy1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9zZWNvbmRhcnkge1xuICAgICAgICBjb2xvcjogJGFjY2VudDtcbiAgICB9XG5cbiAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9zZWNvbmRhcnlfY29udGVudCB7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgfVxuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6ICRidXR0b24tZGFuZ2VyLWZnLWNvbG9yO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnQ7XG5cbiAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2Rpc2FibGVkIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uLWRhbmdlci1kaXNhYmxlZC1mZy1jb2xvcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZGFuZ2VyLWRpc2FibGVkLWJnLWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfZGFuZ2VyX291dGxpbmUge1xuICAgICAgICBjb2xvcjogJGFsZXJ0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGFsZXJ0O1xuXG4gICAgICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9kaXNhYmxlZCB7XG4gICAgICAgICAgICBjb2xvcjogJGJ1dHRvbi1kYW5nZXItZGlzYWJsZWQtYmctY29sb3I7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRidXR0b24tZGFuZ2VyLWRpc2FibGVkLWJnLWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfZGFuZ2VyX3NtIHtcbiAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2Rpc2FibGVkIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uLWRhbmdlci1kaXNhYmxlZC1mZy1jb2xvcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZGFuZ2VyLWRpc2FibGVkLWJnLWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfbGluayxcbiAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rX2lubGluZSxcbiAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9kYW5nZXJfaW5saW5lLFxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2NvbnRlbnRfaW5saW5lIHtcbiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rLFxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmtfaW5saW5lIHtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgfVxuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfZGFuZ2VyX2lubGluZSB7XG4gICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgfVxuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfY29udGVudF9pbmxpbmUge1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICB9XG5cbiAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rX2lubGluZSxcbiAgICAmLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9kYW5nZXJfaW5saW5lLFxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2NvbnRlbnRfaW5saW5lIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgIH1cblxuICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2NvbmZpcm1fc20sXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfY2FuY2VsX3NtIHtcbiAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBpbnNldDogMDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1zaXplOiA4MCU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcbkNvcHlyaWdodCAyMDIyIMWgaW1vbiBCcmFuZG5lciA8c2ltb24uYnJhLmFnQGdtYWlsLmNvbT5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQ29weWFibGVUZXh0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgJi5teF9Db3B5YWJsZVRleHRfYm9yZGVyIHtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggJGxpZ2h0LWZnLWNvbG9yO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDAgMTBweCAxMHB4O1xuICAgIH1cblxuICAgIC5teF9Db3B5YWJsZVRleHRfY29weUJ1dHRvbiB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAvKiB1c2luZyBlbSBoZXJlIHRvIGFkYXB0IHRvIHRoZSBsb2NhbCBmb250IHNpemUgKi9cbiAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgLyogSWYgdGhlIGNvcHkgYnV0dG9uIGlzIHVzZWQgd2l0aGluIGEgc2Nyb2xsYWJsZSBkaXYsIG1ha2UgaXQgc3RpY2sgdG8gdGhlIHJpZ2h0IHdoaWxlIHNjcm9sbGluZyAqL1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgLyogY2VudGVyIHRvIGZpcnN0IGxpbmUgKi9cbiAgICAgICAgdG9wOiAwLjE1ZW07XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKCRjb3B5LWJ1dHRvbi11cmwpO1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWVzc2FnZS1hY3Rpb24tYmFyLWZnLWNvbG9yO1xuICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgIGhlaWdodDogMWVtO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIMWgaW1vbiBCcmFuZG5lciA8c2ltb24uYnJhLmFnQGdtYWlsLmNvbT5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfZGVza3RvcENhcHR1cmVyU291cmNlUGlja2VyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLm14X2Rlc2t0b3BDYXB0dXJlclNvdXJjZVBpY2tlcl90YWIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgaGVpZ2h0OiA1MDBweDtcbiAgICAgICAgb3ZlcmZsb3c6IG92ZXJsYXk7XG5cbiAgICAgICAgLm14X2Rlc2t0b3BDYXB0dXJlclNvdXJjZVBpY2tlcl9zb3VyY2Uge1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgICAgICAubXhfZGVza3RvcENhcHR1cmVyU291cmNlUGlja2VyX3NvdXJjZV90aHVtYm5haWwge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogNHB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgICAgICAgICAgJi5teF9kZXNrdG9wQ2FwdHVyZXJTb3VyY2VQaWNrZXJfc291cmNlX3RodW1ibmFpbF9zZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfZGVza3RvcENhcHR1cmVyU291cmNlUGlja2VyX3NvdXJjZV9uYW1lIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgNHB4O1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9EaWFsUGFkQmFja3NwYWNlQnV0dG9uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIHdpZHRoOiAyOHB4O1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgLyogZm9yY2UgdGhpcyBlbGVtZW50IHRvIGFwcGVhciBvbiB0aGUgRE9NICovXG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG5cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzhkOTdhNTtcbiAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgdG9wOiAwcHg7XG4gICAgICAgIGxlZnQ6IDBweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvZGVsZXRlLnN2Z1wiKTtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogOHB4O1xuICAgICAgICBtYXNrLXNpemU6IDIwcHg7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0Ryb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG59XG5cbi5teF9Ecm9wZG93bl9kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xufVxuXG4ubXhfRHJvcGRvd25faW5wdXQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRzdHJvbmctaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLm14X0Ryb3Bkb3duX2lucHV0Lm14X0FjY2Vzc2libGVCdXR0b25fZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5teF9Ecm9wZG93bl9pbnB1dDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LWFsdDtcbn1cblxuLyogRGlzYWJsZSBkcm9wZG93biBoaWdobGlnaHQgb24gZm9jdXMgKi9cbi5teF9Ecm9wZG93bl9pbnB1dC5teF9BY2Nlc3NpYmxlQnV0dG9uOmZvY3VzIHtcbiAgICBmaWx0ZXI6IG5vbmU7XG59XG5cbi5teF9Ecm9wZG93bl9hcnJvdyB7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiA2cHg7XG4gICAgcGFkZGluZy1yaWdodDogOXB4O1xuICAgIG1hc2s6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2Ryb3Bkb3duLWFycm93LnN2Z1wiKTtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbnRlbnQ7XG59XG5cbi5teF9Ecm9wZG93bl9vcHRpb24ge1xuICAgIGhlaWdodDogMzVweDtcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMzVweDtcbiAgICAvLyBPdmVyd3JpdGVzIHRoZSBkZWZhdWx0IHBhZGRpbmcgZm9yIGFueSBsaSBlbGVtZW50c1xuICAgIHBhZGRpbmc6IDAgOHB4O1xufVxuXG4ubXhfRHJvcGRvd25faW5wdXQgPiAubXhfRHJvcGRvd25fb3B0aW9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubXhfRHJvcGRvd25fb3B0aW9uIGRpdiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ubXhfRHJvcGRvd25fb3B0aW9uIGltZyxcbi5teF9Ecm9wZG93bl9vcHRpb24gLm14X0Ryb3Bkb3duX29wdGlvbl9lbW9qaSB7XG4gICAgbWFyZ2luOiA1cHg7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLm14X0Ryb3Bkb3duX29wdGlvbl9lbW9qaSB7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNnB4O1xufVxuXG5pbnB1dC5teF9Ecm9wZG93bl9vcHRpb24sXG5pbnB1dC5teF9Ecm9wZG93bl9vcHRpb246Zm9jdXMge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgYm9yZGVyOiAwO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIC8qIFhYWDogaGFjayB0byBwcmV2ZW50IHRleHQgYm94IGJlaW5nIHRvbyBiaWcgYW5kIHB1c2hpbmcgKi9cbiAgICAvKiBpdHMgcGFyZW50IG91dCAvIG92ZXJsYXBwaW5nIHRoZSBkcm9wZG93biBhcnJvdy4gT25seSByZWFsbHkgKi9cbiAgICAvKiB3b3JrcyBpbiB0aGUgQ291bnRyeSBkcm9wZG93bi4gKi9cbiAgICB3aWR0aDogNjAlO1xufVxuXG4ubXhfRHJvcGRvd25fbWVudSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IC0xcHg7XG4gICAgcmlnaHQ6IC0xcHg7XG4gICAgdG9wOiAxMDAlO1xuICAgIHotaW5kZXg6IDI7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGFjY2VudC1hbHQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgbWF4LWhlaWdodDogMjAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLm14X0Ryb3Bkb3duX21lbnUgLm14X0Ryb3Bkb3duX29wdGlvbiB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1pbi1oZWlnaHQ6IDM1cHg7XG59XG5cbnVsLm14X0Ryb3Bkb3duX21lbnUgbGkubXhfRHJvcGRvd25fb3B0aW9uIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4ubXhfRHJvcGRvd25fbWVudSAubXhfRHJvcGRvd25fb3B0aW9uX2hpZ2hsaWdodCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZvY3VzLWJnLWNvbG9yO1xufVxuXG4ubXhfRHJvcGRvd25fc2VhcmNoUHJvbXB0IHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3LCAyMDE5IE5ldyBWZWN0b3IgTHRkLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9FZGl0YWJsZUl0ZW1MaXN0IHtcbiAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5teF9FZGl0YWJsZUl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4ubXhfRWRpdGFibGVJdGVtX2RlbGV0ZSB7XG4gICAgQG1peGluIGN1c3RvbWlzZWRDYW5jZWxCdXR0b247XG4gICAgb3JkZXI6IDM7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB3aWR0aDogMTRweDtcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFsZXJ0O1xuICAgIG1hc2stc2l6ZTogMTAwJTtcbn1cblxuLm14X0VkaXRhYmxlSXRlbV9lbWFpbCB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLm14X0VkaXRhYmxlSXRlbV9wcm9tcHRUZXh0IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgb3JkZXI6IDI7XG59XG5cbi5teF9FZGl0YWJsZUl0ZW1fY29uZmlybUJ0biB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG59XG5cbi5teF9FZGl0YWJsZUl0ZW1faXRlbSB7XG4gICAgZmxleDogYXV0byAxIDA7XG4gICAgb3JkZXI6IDE7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE0cHgpOyAvKiBsZWF2ZSBzcGFjZSBmb3IgdGhlIHJlbW92ZSBidXR0b24gKi9cbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5teF9FZGl0YWJsZUl0ZW1MaXN0X2xhYmVsIHtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRXJyb3JCb3VuZGFyeSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLm14X0Vycm9yQm91bmRhcnlfYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9FeHRlcm5hbExpbmsge1xuICAgIGNvbG9yOiAkbGlua3M7XG59XG5cbi5teF9FeHRlcm5hbExpbmtfaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZXh0ZXJuYWwtbGluay5zdmdcIik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIHdpZHRoOiAkZm9udC0xMXB4O1xuICAgIGhlaWdodDogJGZvbnQtMTFweDtcbiAgICBtYXJnaW4tbGVmdDogJGZvbnQtM3B4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRmFjZVBpbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC5teF9GYWNlUGlsZV9mYWNlcyB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbjogMCAtMXB4OyAvKiB0byBjYW5jZWwgb3V0IHRoZSBib3JkZXIgb24gdGhlIGVkZ2VzICovXG5cbiAgICAgICAgLyogT3ZlcmxhcCB0aGUgY2hpbGRyZW4gKi9cbiAgICAgICAgPiAqICsgKiB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC04cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mYWNlcGlsZS1iYWNrZ3JvdW5kLCAkYmFja2dyb3VuZCk7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQmFzZUF2YXRhcl9pbml0aWFsIHtcbiAgICAgICAgICAgIG1hcmdpbjogMXB4OyAvKiB0byBvZmZzZXQgdGhlIGJvcmRlciBvbiB0aGUgaW1hZ2UgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9GYWNlUGlsZV9tb3JlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzcGFjZVBhbmVsLWJnLWNvbG9yO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IDIwcHg7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9lbGxpcHNpcy5zdmdcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRmFjZVBpbGVfc3VtbWFyeSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLyogVE9ETzogQ29uc2lkZXIgdW5pZnlpbmcgd2l0aCBnZW5lcmFsIGlucHV0IHN0eWxlcyBpbiBfbGlnaHQucGNzcyAqL1xuXG4ubXhfRmllbGQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogMWVtIDA7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjI1cztcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xufVxuXG4ubXhfRmllbGRfcHJlZml4IHtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xufVxuXG4ubXhfRmllbGRfcG9zdGZpeCB7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xufVxuXG4ubXhfRmllbGQgaW5wdXQsXG4ubXhfRmllbGQgc2VsZWN0LFxuLm14X0ZpZWxkIHRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgLyogRXZlbiB3aXRob3V0IGEgYm9yZGVyIGhlcmUsIHdlIHN0aWxsIG5lZWQgdGhpcyBhdm9pZCBvdmVybGFwcGluZyB0aGUgcm91bmRlZCAqL1xuICAgIC8qIGNvcm5lcnMgb24gdGhlIGZpZWxkIGFib3ZlLiAqL1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBwYWRkaW5nOiA4cHggOXB4O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ubXhfRmllbGQgc2VsZWN0IHtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKiBDYW4ndCBhZGQgcHNldWRvLWVsZW1lbnRzIHRvIGEgc2VsZWN0IGRpcmVjdGx5LCBzbyB3ZSB1c2UgaXRzIHBhcmVudC4gKi9cbi5teF9GaWVsZF9zZWxlY3Q6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxNXB4O1xuICAgIHJpZ2h0OiAxMHB4O1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogNnB4O1xuICAgIG1hc2s6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2Ryb3Bkb3duLWFycm93LnN2Z1wiKTtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgei1pbmRleDogMTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLm14X0ZpZWxkOmZvY3VzLXdpdGhpbiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LWFsdDtcbn1cblxuLm14X0ZpZWxkIGlucHV0OmZvY3VzLFxuLm14X0ZpZWxkIHNlbGVjdDpmb2N1cyxcbi5teF9GaWVsZCB0ZXh0YXJlYTpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbn1cblxuLm14X0ZpZWxkIGlucHV0OjpwbGFjZWhvbGRlcixcbi5teF9GaWVsZCB0ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMjVzIGVhc2UtaW4gMHM7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4ubXhfRmllbGQgaW5wdXQ6cGxhY2Vob2xkZXItc2hvd246Zm9jdXM6OnBsYWNlaG9sZGVyLFxuLm14X0ZpZWxkIHRleHRhcmVhOnBsYWNlaG9sZGVyLXNob3duOmZvY3VzOjpwbGFjZWhvbGRlcixcbi5teF9GaWVsZC5teF9GaWVsZF9wbGFjZWhvbGRlcklzSGludCBpbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMjVzIGVhc2UtaW4gMC4xcztcbiAgICBjb2xvcjogJGluZm8tcGxpbnRoLWZnLWNvbG9yO1xufVxuXG4ubXhfRmllbGQgbGFiZWwge1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSAwLjI1cyBlYXNlLW91dCAwLjFzLCBjb2xvciAwLjI1cyBlYXNlLW91dCAwLjFzLCB0cmFuc2Zvcm0gMC4yNXMgZWFzZS1vdXQgMC4xcyxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvciAwLjI1cyBlYXNlLW91dCAwLjFzO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDBweDtcbiAgICBtYXJnaW46IDdweCA4cHg7XG4gICAgcGFkZGluZzogMnB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvKiBBbGxvdyBjbGlja3MgdG8gZmFsbCB0aHJvdWdoIHRvIHRoZSBpbnB1dCAqL1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOyAvKiAxMDAlIG9mIHBhcmVudCBtaW51cyBtYXJnaW4gYW5kIHBhZGRpbmcgKi9cbn1cblxuLm14X0ZpZWxkX2xhYmVsQWx3YXlzVG9wTGVmdCBsYWJlbCxcbi5teF9GaWVsZCBzZWxlY3QgKyBsYWJlbCAvKiBBbHdheXMgc2hvdyBhIHNlbGVjdCdzIGxhYmVsIG9uIHRvcCB0byBub3QgY29sbGlkZSB3aXRoIHRoZSB2YWx1ZSAqLyxcbi5teF9GaWVsZCBpbnB1dDpmb2N1cyArIGxhYmVsLFxuLm14X0ZpZWxkIGlucHV0Om5vdCg6cGxhY2Vob2xkZXItc2hvd24pICsgbGFiZWwsXG4ubXhfRmllbGQgdGV4dGFyZWE6Zm9jdXMgKyBsYWJlbCxcbi5teF9GaWVsZCB0ZXh0YXJlYTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSArIGxhYmVsIHtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgMC4yNXMgZWFzZS1vdXQgMHMsIGNvbG9yIDAuMjVzIGVhc2Utb3V0IDBzLCB0cmFuc2Zvcm0gMC4yNXMgZWFzZS1vdXQgMHMsXG4gICAgICAgIGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQgMHM7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTNweCk7XG4gICAgcGFkZGluZzogMCAycHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XG59XG5cbi5teF9GaWVsZCBpbnB1dDpmb2N1cyArIGxhYmVsLFxuLm14X0ZpZWxkIHNlbGVjdDpmb2N1cyArIGxhYmVsLFxuLm14X0ZpZWxkIHRleHRhcmVhOmZvY3VzICsgbGFiZWwge1xuICAgIGNvbG9yOiAkYWNjZW50LWFsdDtcbn1cblxuLm14X0ZpZWxkIHNlbGVjdDpkaXNhYmxlZCxcbi5teF9GaWVsZCBzZWxlY3Q6ZGlzYWJsZWQgKyBsYWJlbCxcbi5teF9GaWVsZCBpbnB1dDpkaXNhYmxlZCxcbi5teF9GaWVsZCBpbnB1dDpkaXNhYmxlZCArIGxhYmVsLFxuLm14X0ZpZWxkIHRleHRhcmVhOmRpc2FibGVkLFxuLm14X0ZpZWxkIHRleHRhcmVhOmRpc2FibGVkICsgbGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkaW5mby1wbGludGgtZmctY29sb3I7XG59XG5cbi5teF9GaWVsZF92YWxpZCB7XG4gICAgJi5teF9GaWVsZCxcbiAgICAmLm14X0ZpZWxkOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGFjY2VudDtcbiAgICB9XG5cbiAgICAmLm14X0ZpZWxkIGxhYmVsLFxuICAgICYubXhfRmllbGQ6Zm9jdXMtd2l0aGluIGxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgfVxufVxuXG4ubXhfRmllbGRfaW52YWxpZCB7XG4gICAgJi5teF9GaWVsZCxcbiAgICAmLm14X0ZpZWxkOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGFsZXJ0O1xuICAgIH1cblxuICAgICYubXhfRmllbGQgbGFiZWwsXG4gICAgJi5teF9GaWVsZDpmb2N1cy13aXRoaW4gbGFiZWwge1xuICAgICAgICBjb2xvcjogJGFsZXJ0O1xuICAgIH1cbn1cblxuLm14X0ZpZWxkX3Rvb2x0aXAge1xuICAgIHdpZHRoOiAyMDBweDtcbn1cblxuLm14X0ZpZWxkX3Rvb2x0aXAubXhfRmllbGRfdmFsaWQge1xuICAgIGFuaW1hdGlvbjogbXhfZmFkZW91dCAxcyAycyBmb3J3YXJkcztcbn1cblxuLyogQ3VzdG9taXNlIG90aGVyIGNvbXBvbmVudHMgd2hlbiBwbGFjZWQgaW5zaWRlIGEgRmllbGQgKi9cblxuLm14X0ZpZWxkIC5teF9Ecm9wZG93bl9pbnB1dCB7XG4gICAgYm9yZGVyOiBpbml0aWFsO1xuICAgIGJvcmRlci1yYWRpdXM6IGluaXRpYWw7XG59XG5cbi5teF9GaWVsZCAubXhfQ291bnRyeURyb3Bkb3duIHtcbiAgICB3aWR0aDogJGZvbnQtNzhweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9HZW5lcmljRXZlbnRMaXN0U3VtbWFyeSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5X2F2YXRhcnMge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nLTg7XG4gICAgfVxuXG4gICAgLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5X3NwYWNlciB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkcHJpbWFyeS1oYWlybGluZS1jb2xvcjtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDYzcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0zMHB4OyAvKiBUT0RPOiBVc2UgYSB2YXJpYWJsZSAqL1xuXG4gICAgICAgIC5teF9JUkNMYXlvdXQgJiB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJltkYXRhLWxheW91dD1cImlyY1wiXSxcbiAgICAmW2RhdGEtbGF5b3V0PVwiZ3JvdXBcIl0ge1xuICAgICAgICAubXhfR2VuZXJpY0V2ZW50TGlzdFN1bW1hcnlfdG9nZ2xlIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIG1hcmdpbi1pbmxpbmU6IDAgMTBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZbZGF0YS1sYXlvdXQ9XCJncm91cFwiXSB7XG4gICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTg7XG4gICAgfVxuXG4gICAgJltkYXRhLWxheW91dD1cImJ1YmJsZVwiXSB7XG4gICAgICAgIC0tbWF4V2lkdGg6IDcwJTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tYXZhdGFyU2l6ZSkgKyB2YXIoLS1ndXR0ZXJTaXplKSk7XG5cbiAgICAgICAgLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5X3RvZ2dsZSB7XG4gICAgICAgICAgICBtYXJnaW4tYmxvY2s6IDA7XG5cbiAgICAgICAgICAgICZbYXJpYS1leHBhbmRlZD1cImZhbHNlXCJdIHtcbiAgICAgICAgICAgICAgICBvcmRlcjogOTsgLyogVE9ETzogUmVtb3ZlICovXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGF1dG87IC8qIHJlZHVjZSBjbGlja2FibGUgYXJlYSAqL1xuICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1FdmVudFRpbGVfYnViYmxlLW1hcmdpbi1pbmxpbmUtZW5kKTsgLyogYXMgdGhlIHBhcmVudCBoYXMgemVybyBtYXJnaW4gKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9HZW5lcmljRXZlbnRMaXN0U3VtbWFyeV9zcGFjZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICZbZGF0YS1leHBhbmRlZD1cImZhbHNlXCJdIHtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICBjb2x1bW4tZ2FwOiA1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBpZGVhbGx5IHdlJ2QgdXNlIGRpc3BsYXk9Y29udGVudHMgaGVyZSBmb3IgdGhlIGxheW91dCB0byBhbGwgd29yayByZWdhcmRsZXNzIG9mIHRoZSAqRUxTIGJ1dCAqL1xuICAgICAgICAvKiB0aGF0IGJyZWFrcyBTY3JvbGxQYW5lbCdzIHJlbGlhbmNlIHVwb24gb2Zmc2V0VG9wIHNvIHdlIGhhdmUgdG8gaGF2ZSBhIGJpdCBtb3JlIGZpbmVzc2UuICovXG4gICAgICAgICZbZGF0YS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9NYXRyaXhDaGF0X3VzZUNvbXBhY3RMYXlvdXQgJiB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTNweDtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctNDtcblxuICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfR2VuZXJpY0V2ZW50TGlzdFN1bW1hcnlfc3BhY2VyIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1RleHR1YWxFdmVudC5teF9HZW5lcmljRXZlbnRMaXN0U3VtbWFyeV9zdW1tYXJ5IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTNweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5X3Vuc3R5bGVkTGlzdCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4ubXhfVGV4dHVhbEV2ZW50Lm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5X3N1bW1hcnkge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbn1cblxuLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5X2F2YXRhcnMge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMTJweDtcblxuICAgIC5teF9CYXNlQXZhdGFyIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtNHB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuJGJ1dHRvbi1zaXplOiAzMnB4O1xuJGljb24tc2l6ZTogMjJweDtcbiRidXR0b24tZ2FwOiAyNHB4O1xuXG46cm9vdCB7XG4gICAgLS1pbWFnZS12aWV3LXBhbmVsLWhlaWdodDogNjhweDtcbn1cblxuLm14X0ltYWdlVmlldyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLm14X0ltYWdlVmlld19pbWFnZV93cmFwcGVyIHtcbiAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teF9JbWFnZVZpZXdfaW1hZ2Uge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgJi5teF9JbWFnZVZpZXdfaW1hZ2VfYW5pbWF0aW5nIHtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2UgMHM7XG4gICAgfVxuXG4gICAgJi5teF9JbWFnZVZpZXdfaW1hZ2VfYW5pbWF0aW5nTG9hZGluZyB7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyBlYXNlIDBzO1xuICAgIH1cbn1cblxuLm14X0ltYWdlVmlld19wYW5lbCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiB2YXIoLS1pbWFnZS12aWV3LXBhbmVsLWhlaWdodCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBhbmltYXRpb24tbmFtZTogbXhfSW1hZ2VWaWV3X3BhbmVsX2tleWZyYW1lcztcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDMwMG1zO1xufVxuXG4ubXhfSW1hZ2VWaWV3X2luZm9fd3JhcHBlciB7XG4gICAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XG4gICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiAkbGlnaHRib3gtZmctY29sb3I7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIGZsZXgtYmFzaXM6IDA7XG59XG5cbi5teF9JbWFnZVZpZXdfaW5mbyB7XG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLm14X0ltYWdlVmlld19pbmZvX3NlbmRlciB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5teF9JbWFnZVZpZXdfdGl0bGUge1xuICAgIGNvbG9yOiAkbGlnaHRib3gtZmctY29sb3I7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm14X0ltYWdlVmlld190b29sYmFyIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgZmxleC1iYXNpczogMDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogY2FsYygkYnV0dG9uLWdhcCAtICgkYnV0dG9uLXNpemUgLSAkaWNvbi1zaXplKSk7XG59XG5cbi5teF9JbWFnZVZpZXdfYnV0dG9uIHtcbiAgICBwYWRkaW5nOiBjYWxjKCgkYnV0dG9uLXNpemUgLSAkaWNvbi1zaXplKSAvIDIpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgaGVpZ2h0OiAkaWNvbi1zaXplO1xuICAgICAgICB3aWR0aDogJGljb24tc2l6ZTtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaWNvbi1idXR0b24tY29sb3I7XG4gICAgfVxufVxuXG4ubXhfSW1hZ2VWaWV3X2J1dHRvbl9yb3RhdGVDVzo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ltYWdlLXZpZXcvcm90YXRlLWN3LnN2Z1wiKTtcbn1cblxuLm14X0ltYWdlVmlld19idXR0b25fcm90YXRlQ0NXOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvaW1hZ2Utdmlldy9yb3RhdGUtY2N3LnN2Z1wiKTtcbn1cblxuLm14X0ltYWdlVmlld19idXR0b25fem9vbU91dDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ltYWdlLXZpZXcvem9vbS1vdXQuc3ZnXCIpO1xufVxuXG4ubXhfSW1hZ2VWaWV3X2J1dHRvbl96b29tSW46OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9pbWFnZS12aWV3L3pvb20taW4uc3ZnXCIpO1xufVxuXG4ubXhfSW1hZ2VWaWV3X2J1dHRvbl9kb3dubG9hZDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ltYWdlLXZpZXcvZG93bmxvYWQuc3ZnXCIpO1xufVxuXG4ubXhfSW1hZ2VWaWV3X2J1dHRvbl9tb3JlOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvaW1hZ2Utdmlldy9tb3JlLnN2Z1wiKTtcbn1cblxuLm14X0ltYWdlVmlld19idXR0b25fY2xvc2Uge1xuICAgIHBhZGRpbmc6IGNhbGMoJGJ1dHRvbi1zaXplIC0gJGJ1dHRvbi1zaXplKTtcbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIGJhY2tncm91bmQ6ICMyMTI2MmM7IC8qIHNhbWUgb24gYWxsIHRoZW1lcyAqL1xuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHdpZHRoOiAkYnV0dG9uLXNpemU7XG4gICAgICAgIGhlaWdodDogJGJ1dHRvbi1zaXplO1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ltYWdlLXZpZXcvY2xvc2Uuc3ZnXCIpO1xuICAgICAgICBtYXNrLXNpemU6IDQwJTtcbiAgICB9XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikge1xuICAgIC5teF9JbWFnZVZpZXdfaW1hZ2VfYW5pbWF0aW5nIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5teF9JbWFnZVZpZXdfaW1hZ2VfYW5pbWF0aW5nTG9hZGluZyB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfSW5mb1Rvb2x0aXBfaWNvbiB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLm14X0luZm9Ub29sdGlwX2ljb246OmJlZm9yZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIG1hc2stc2l6ZTogMTZweDtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLm14X0luZm9Ub29sdGlwX2ljb25faW5mbzo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvaW5mby5zdmdcIik7XG59XG5cbi5teF9JbmZvVG9vbHRpcF9pY29uX3dhcm5pbmc6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3dhcm5pbmcuc3ZnXCIpO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3IE5ldyBWZWN0b3IgTHRkLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9JbmxpbmVTcGlubmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG59XG5cbi5teF9JbmxpbmVTcGlubmVyIGltZyxcbi5teF9JbmxpbmVTcGlubmVyX2ljb24ge1xuICAgIG1hcmdpbjogMHB4IDZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogLTNweDtcbn1cblxuLm14X0lubGluZVNwaW5uZXJfaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IC8qIE92ZXJyaWRlIHJlZ3VsYXIgbXhfU3Bpbm5lcl9pY29uICovXG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgLSAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0ludGVyYWN0aXZlVG9vbHRpcF93cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogMzk5OTtcbn1cblxuLm14X0ludGVyYWN0aXZlVG9vbHRpcCB7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiA1MDAxO1xuICAgIGJveC1zaGFkb3c6IDAgMjRweCA4cHggcmdiKDE3IDE3IDI2IC8gNCUpLCAwIDhweCAzMnB4IHJnYigxNyAxNyAyNiAvIDQlKTtcbn1cblxuLm14X0ludGVyYWN0aXZlVG9vbHRpcC5teF9JbnRlcmFjdGl2ZVRvb2x0aXBfd2l0aENoZXZyb25fdG9wIHtcbiAgICB0b3A6IDEwcHg7IC8qIDhweCBjaGV2cm9uICsgMnB4IHNwYWNpbmcgKi9cbn1cblxuLm14X0ludGVyYWN0aXZlVG9vbHRpcC5teF9JbnRlcmFjdGl2ZVRvb2x0aXBfd2l0aENoZXZyb25fbGVmdCB7XG4gICAgbGVmdDogMTBweDsgLyogOHB4IGNoZXZyb24gKyAycHggc3BhY2luZyAqL1xufVxuXG4ubXhfSW50ZXJhY3RpdmVUb29sdGlwLm14X0ludGVyYWN0aXZlVG9vbHRpcF93aXRoQ2hldnJvbl9yaWdodCB7XG4gICAgcmlnaHQ6IDEwcHg7IC8qIDhweCBjaGV2cm9uICsgMnB4IHNwYWNpbmcgKi9cbn1cblxuLm14X0ludGVyYWN0aXZlVG9vbHRpcC5teF9JbnRlcmFjdGl2ZVRvb2x0aXBfd2l0aENoZXZyb25fYm90dG9tIHtcbiAgICBib3R0b206IDEwcHg7IC8qIDhweCBjaGV2cm9uICsgMnB4IHNwYWNpbmcgKi9cbn1cblxuLm14X0ludGVyYWN0aXZlVG9vbHRpcF9jaGV2cm9uX3RvcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gOHB4KTtcbiAgICB0b3A6IC04cHg7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlci1sZWZ0OiA4cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogOHB4IHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1yaWdodDogOHB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4vKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9jb2R5aG91c2UuY28vYmxvZy9wb3N0L2Nzcy1yb3VuZGVkLXRyaWFuZ2xlcy13aXRoLWNsaXAtcGF0aCAqL1xuLyogYnkgU2ViYXN0aWFubyBHdWVycmllcm8gKEBndWVycmllcm9fc2UpICovXG5Ac3VwcG9ydHMgKGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMTAwJSAxMDAlLCAwJSAxMDAlKSkge1xuICAgIC5teF9JbnRlcmFjdGl2ZVRvb2x0aXBfY2hldnJvbl90b3Age1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMTAwJSAxMDAlLCAwJSAxMDAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDAgM3B4O1xuICAgICAgICB0b3A6IGNhbGMoLThweCAvIDEuNDE0KTsgLyogc3FydCgyKSBiZWNhdXNlIG9mIHJvdGF0aW9uICovXG4gICAgfVxufVxuXG4ubXhfSW50ZXJhY3RpdmVUb29sdGlwX2NoZXZyb25fYm90dG9tIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogY2FsYyg1MCUgLSA4cHgpO1xuICAgIGJvdHRvbTogLThweDtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDhweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItdG9wOiA4cHggc29saWQgJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyLXJpZ2h0OiA4cHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi8qIEFkYXB0ZWQgZnJvbSBodHRwczovL2NvZHlob3VzZS5jby9ibG9nL3Bvc3QvY3NzLXJvdW5kZWQtdHJpYW5nbGVzLXdpdGgtY2xpcC1wYXRoICovXG4vKiBieSBTZWJhc3RpYW5vIEd1ZXJyaWVybyAoQGd1ZXJyaWVyb19zZSkgKi9cbkBzdXBwb3J0cyAoY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDAlLCAxMDAlIDEwMCUsIDAlIDEwMCUpKSB7XG4gICAgLm14X0ludGVyYWN0aXZlVG9vbHRpcF9jaGV2cm9uX2JvdHRvbSB7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDAlLCAxMDAlIDEwMCUsIDAlIDEwMCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgMCAzcHg7XG4gICAgICAgIGJvdHRvbTogY2FsYygtOHB4IC8gMS40MTQpOyAvKiBzcXJ0KDIpIGJlY2F1c2Ugb2Ygcm90YXRpb24gKi9cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfSW52aXRlUmVhc29uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuXG4gICAgLm14X0ludml0ZVJlYXNvbl9yZWFzb24ge1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIH1cblxuICAgIC5teF9JbnZpdGVSZWFzb25fdmlldyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2V5ZS5zdmdcIik7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0ludml0ZVJlYXNvbl9oaWRkZW4ge1xuICAgIC5teF9JbnZpdGVSZWFzb25fcmVhc29uIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cblxuICAgIC5teF9JbnZpdGVSZWFzb25fdmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0xhYmVsbGVkQ2hlY2tib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiA4cHg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcblxuICAgIC5teF9DaGVja2JveCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDNweDsgLyogdmlzdWFsbHkgYWxpZ24gd2l0aCBsYWJlbCB0ZXh0ICovXG4gICAgfVxuXG4gICAgLm14X0xhYmVsbGVkQ2hlY2tib3hfbGFiZWxzIHtcbiAgICAgICAgZmxleDogMTtcblxuICAgICAgICAubXhfTGFiZWxsZWRDaGVja2JveF9sYWJlbCB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xhYmVsbGVkQ2hlY2tib3hfYnlsaW5lIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6ICRzcGFjaW5nLTQ7XG4gICAgICAgICAgICBjb2xvcjogJG11dGVkLWZnLWNvbG9yO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMXB4O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01pbmlBdmF0YXJVcGxvYWRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiBtaW4tY29udGVudDtcblxuICAgIC8qIHRoaXMgaXNuJ3QgYSBmbG9hdGluZyB0b29sdGlwIHNvIG92ZXJyaWRlIHNvbWUgdGhpbmdzIHRvIG5vdCBuZWVkIHRvIGJvdGhlciB3aXRoIHotaW5kZXggYW5kIGZsb2F0aW5nICovXG4gICAgLm14X1Rvb2x0aXAge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogdW5zZXQ7XG4gICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgICAgbGVmdDogNzJweDtcbiAgICAgICAgLyogdG9wIGVkZ2Ugc3RhcnRpbmcgYXQgNTAgJSBvZiBwYXJlbnQgLSA1MCAlIG9mIGl0c2VsZiAtPiBjZW50ZXJlZCB2ZXJ0aWNhbGx5ICovXG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuXG4gICAgLm14X01pbmlBdmF0YXJVcGxvYWRlcl9pbmRpY2F0b3Ige1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgICAgICAgaGVpZ2h0OiAyNnB4O1xuICAgICAgICB3aWR0aDogMjZweDtcblxuICAgICAgICByaWdodDogLTZweDtcbiAgICAgICAgYm90dG9tOiAtNnB4O1xuXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIHotaW5kZXg6IDE7XG5cbiAgICAgICAgLm14X01pbmlBdmF0YXJVcGxvYWRlcl9jYW1lcmFJY29uIHtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbWVyYS5zdmdcIik7XG4gICAgICAgICAgICBtYXNrLXNpemU6IDE2cHg7XG4gICAgICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfTWluaUF2YXRhclVwbG9hZGVyX2lucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIMWgaW1vbiBCcmFuZG5lciA8c2ltb24uYnJhLmFnQGdtYWlsLmNvbT5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUGlsbCB7XG4gICAgcGFkZGluZzogJGZvbnQtMXB4IDAuNGVtICRmb250LTFweCAwLjRlbTtcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMTdweDtcbiAgICBib3JkZXItcmFkaXVzOiAkZm9udC0xNnB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgY29sb3I6ICRhY2NlbnQtZmctY29sb3IgIWltcG9ydGFudDsgLyogVG8gb3ZlcnJpZGUgLm1hcmtkb3duLWJvZHkgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGlsbC1iZy1jb2xvciAhaW1wb3J0YW50OyAvKiBUbyBvdmVycmlkZSAubWFya2Rvd24tYm9keSAqL1xuXG4gICAgPiAqIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuXG4gICAgJi5teF9Vc2VyUGlsbF9tZSxcbiAgICAmLm14X0F0Um9vbVBpbGwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnQgIWltcG9ydGFudDsgLyogVG8gb3ZlcnJpZGUgLm1hcmtkb3duLWJvZHkgKi9cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHBpbGwtaG92ZXItYmctY29sb3IgIWltcG9ydGFudDsgLyogVG8gb3ZlcnJpZGUgLm1hcmtkb3duLWJvZHkgKi9cbiAgICB9XG5cbiAgICAmLm14X1VzZXJQaWxsX21lOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmI3NSAhaW1wb3J0YW50OyAvKiBUbyBvdmVycmlkZSAubWFya2Rvd24tYm9keSB8IHNhbWUgb24gYm90aCB0aGVtZXMgKi9cbiAgICB9XG5cbiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluZGljYXRlIGNsaWNrYWJpbGl0eSAqL1xuICAgICYubXhfQXRSb29tUGlsbDpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhbGVydCAhaW1wb3J0YW50OyAvKiBUbyBvdmVycmlkZSAubWFya2Rvd24tYm9keSAqL1xuICAgICAgICBjdXJzb3I6IHVuc2V0O1xuICAgIH1cblxuICAgICY6OmJlZm9yZSxcbiAgICAubXhfQmFzZUF2YXRhciB7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IC0wLjNlbTsgLyogT3RoZXJ3aXNlIHRoZSBnYXAgaXMgdG9vIGxhcmdlICovXG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAwLjJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAkZm9udC0xNnB4OyAvKiBlbnN1cmUgdGhlIGF2YXRhciBpcyBub3QgY29tcHJlc3NlZCAqL1xuICAgIH1cblxuICAgIC5teF9QaWxsX3RleHQge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIGEmIHtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OyAvKiBUbyBvdmVycmlkZSAubWFya2Rvd24tYm9keSAqL1xuICAgIH1cblxuICAgIC5teF9QaWxsX0xpbmtJY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpbmstZXh0ZXJuYWw7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAxcHg7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgIH1cblxuICAgIC5teF9QaWxsX1VzZXJJY29uIHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGQuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Bvd2VyU2VsZWN0b3Ige1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ubXhfUG93ZXJTZWxlY3RvciAubXhfRmllbGQgc2VsZWN0LFxuLm14X1Bvd2VyU2VsZWN0b3IgLm14X0ZpZWxkIGlucHV0IHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwLCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxucHJvZ3Jlc3MubXhfUHJvZ3Jlc3NCYXIge1xuICAgIGhlaWdodDogNnB4O1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG5cbiAgICBAbWl4aW4gUHJvZ3Jlc3NCYXJCb3JkZXJSYWRpdXMgNnB4O1xuICAgIEBtaXhpbiBQcm9ncmVzc0JhckNvbG91ciAkYWNjZW50O1xuICAgIEBtaXhpbiBQcm9ncmVzc0JhckJnQ29sb3VyICRwcm9ncmVzc2Jhci1iZy1jb2xvcjtcbiAgICA6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCAxcztcbiAgICB9XG4gICAgOjotbW96LXByb2dyZXNzLWJhciB7XG4gICAgICAgIHRyYW5zaXRpb246IHBhZGRpbmctYm90dG9tIDFzO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tdmFsdWUpO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZykgdHJhbnNsYXRlWCgtMTVweCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcblxuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1FSQ29kZSB7XG4gICAgaW1nIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOCBWZWN0b3IgQ3JlYXRpb25zIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9SZXBseUNoYWluIHtcbiAgICBtYXJnaW46IDA7IC8vIFJlc2V0IGRlZmF1bHQgYmxvY2txdW90ZSBtYXJnaW5cbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCB2YXIoLS11c2VybmFtZS1jb2xvcik7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuXG4gICAgLm14X1JlcGx5Q2hhaW5fc2hvdyB7XG4gICAgICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmtfaW5saW5lIHtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8qIEVuZm9yY2UgJ0luIHJlcGx5IHRvJyB0byBiZSBhIHNpbmdsZSBsaW5lICovXG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgZWFzZSAwLjE1cztcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X1JlcGx5Q2hhaW5fY29sb3IxIHtcbiAgICAgICAgLS11c2VybmFtZS1jb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQxLWNvbG9yO1xuICAgIH1cblxuICAgICYubXhfUmVwbHlDaGFpbl9jb2xvcjIge1xuICAgICAgICAtLXVzZXJuYW1lLWNvbG9yOiAkdXNlcm5hbWUtdmFyaWFudDItY29sb3I7XG4gICAgfVxuXG4gICAgJi5teF9SZXBseUNoYWluX2NvbG9yMyB7XG4gICAgICAgIC0tdXNlcm5hbWUtY29sb3I6ICR1c2VybmFtZS12YXJpYW50My1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm14X1JlcGx5Q2hhaW5fY29sb3I0IHtcbiAgICAgICAgLS11c2VybmFtZS1jb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQ0LWNvbG9yO1xuICAgIH1cblxuICAgICYubXhfUmVwbHlDaGFpbl9jb2xvcjUge1xuICAgICAgICAtLXVzZXJuYW1lLWNvbG9yOiAkdXNlcm5hbWUtdmFyaWFudDUtY29sb3I7XG4gICAgfVxuXG4gICAgJi5teF9SZXBseUNoYWluX2NvbG9yNiB7XG4gICAgICAgIC0tdXNlcm5hbWUtY29sb3I6ICR1c2VybmFtZS12YXJpYW50Ni1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm14X1JlcGx5Q2hhaW5fY29sb3I3IHtcbiAgICAgICAgLS11c2VybmFtZS1jb2xvcjogJHVzZXJuYW1lLXZhcmlhbnQ3LWNvbG9yO1xuICAgIH1cblxuICAgICYubXhfUmVwbHlDaGFpbl9jb2xvcjgge1xuICAgICAgICAtLXVzZXJuYW1lLWNvbG9yOiAkdXNlcm5hbWUtdmFyaWFudDgtY29sb3I7XG4gICAgfVxufVxuXG4vKiBQZXJjeSBzY3JlZW5zaG90IHRlc3Qgc3BlY2lmaWMgQ1NTICovXG5AbWVkaWEgb25seSBwZXJjeSB7XG4gICAgLm14X1JlcGx5Q2hhaW4ge1xuICAgICAgICAvKiBPdmVycmlkZSB0aGUgY29sb3VyIGluIHBlcmN5IHRlc3RzIGZvciBzY3JlZW5zaG90IGNvbnNpc3RlbmN5ICovXG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1wZXJjeS1jb2xvci1yZXBseUNoYWluLWJvcmRlcikgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTggTmV3IFZlY3RvciBMdGQuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Jlc2l6ZUhhbmRsZSB7XG4gICAgY3Vyc29yOiByb3ctcmVzaXplO1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHotaW5kZXg6IDEwMDtcblxuICAgICYubXhfUmVzaXplSGFuZGxlLS1ob3Jpem9udGFsIHtcbiAgICAgICAgbWFyZ2luOiAwIC01cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgNXB4O1xuICAgICAgICBjdXJzb3I6IGNvbC1yZXNpemU7XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfUmVzaXplSGFuZGxlLS12ZXJ0aWNhbCB7XG4gICAgICAgIG1hcmdpbjogLTVweCAwO1xuICAgICAgICBwYWRkaW5nOiA1cHggMDtcblxuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qIFhYWDogYmxldXJnaCwgd2hhdCBpcyB0aGlzPyBUaGVzZSBjbGFzc2VzIHRvdGFsbHkgYnJlYWsgdGhlIGNvbXBvbmVudCAqL1xuLyogbmFtaW5nIHNjaGVtZTsgaXQncyBjb21wbGV0ZWx5IHVuY2xlYXIgd2hlcmUgb3IgaG93IHRoZXkncmUgYmVpbmcgdXNlZCAqL1xuLyogLS1NYXR0aGV3ICovXG5cbi5teF9NYXJrZG93bl9CT0xEIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLm14X01hcmtkb3duX0lUQUxJQyB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIC8qXG4gICAgLy8gaW50ZXJlc3RpbmdseSwgKm5vdCogdXNpbmcgdGhlIGV4cGxpY2l0IGl0YWxpYyBmb250XG4gICAgLy8gdmFyaWFudCBzZWVtcyB5aWVsZCBiZXR0ZXIgcmVzdWx0cy5cblxuICAgIC8vIGNvbXBlbnNhdGUgZm9yIE51bml0byBpdGFsaWNzIGJlaW5nIHRlcnJpYmxlXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9mb250cy9pc3N1ZXMvMTcyXG4gICAgdHJhbnNmb3JtOiBza2V3WCgtMTRkZWcpO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAqL1xufVxuXG4ubXhfTWFya2Rvd25fQ09ERSB7XG4gICAgcGFkZGluZzogMC4yZW0gMDtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiA4NSU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHJ0ZS1jb2RlLWJnLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cblxuLm14X01hcmtkb3duX0hSIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBiYWNrZ3JvdW5kOiAkcnRlLWJnLWNvbG9yO1xufVxuXG4ubXhfTWFya2Rvd25fU1RSSUtFVEhST1VHSCB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG59XG5cbi5teF9FbW9qaSB7XG4gICAgLyogU2hvdWxkIGJlIDEuOHJlbSBmb3Igb3VyIGRlZmF1bHQgbWVzc2FnZSBib2RpZXMsIGFuZCBzY2FsZSB3aXRoIHRoZSAqL1xuICAgIC8qIHN1cnJvdW5kaW5nIHRleHQgKi9cbiAgICBmb250LXNpemU6IG1heCgkZm9udC0xOHB4LCAxZW0pO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUm9vbUFsaWFzRmllbGQge1xuICAgIC8qIGlmIHBhcmVudCBpcyBhIGZsZXggY29udGFpbmVyLCB0aGlzIGFsbG93cyB0aGUgKi9cbiAgICAvKiB3aWR0aCB0byBiZSBhcyB3aWRlIGFzIG5lZWRlZCwgYW5kIG5vdCAxMDAlICovXG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgaW5wdXQge1xuICAgICAgICB3aWR0aDogMTUwcHg7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICB9XG5cbiAgICBpbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogJGluZm8tcGxpbnRoLWZnLWNvbG9yO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIH1cblxuICAgIC5teF9GaWVsZF9wcmVmaXgsXG4gICAgLm14X0ZpZWxkX3Bvc3RmaXgge1xuICAgICAgICBjb2xvcjogJGluZm8tcGxpbnRoLWZnLWNvbG9yO1xuICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBwYWRkaW5nOiA5cHggMTBweDtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuXG4gICAgLm14X0ZpZWxkX3Bvc3RmaXgge1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgLyogdGhpcyBhbGxvd3MgdGhlIGRvbWFpbiBuYW1lIHRvIHNob3cgKi9cbiAgICAgICAgLyogYXMgbG9uZyBhcyBpdCBkb2Vzbid0IG1ha2UgdGhlIGlucHV0IHNocmluayAqL1xuICAgICAgICAvKiBpZiBpdCdzIHRvbyBiaWcsIGl0IHNob3dzIGFuIGVsbGlwc2lzICovXG4gICAgICAgIC8qIDE4MDogMjggZm9yIHByZWZpeCwgMTUyIGZvciBpbnB1dCAqL1xuICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDE4MHB4KTtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU1NPQnV0dG9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAubXhfU1NPQnV0dG9uc19yb3cge1xuICAgICAgICAmICsgLm14X1NTT0J1dHRvbnNfcm93IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU1NPQnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMjBweCAzMnB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuXG4gICAgICAgID4gaW1nIHtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiA4cHg7XG4gICAgICAgICAgICB0b3A6IDRweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TU09CdXR0b246aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFuZWwtaG92ZXI7XG4gICAgfVxuXG4gICAgLm14X1NTT0J1dHRvbl9kZWZhdWx0IHtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tc2Vjb25kYXJ5LWJnLWNvbG9yO1xuICAgICAgICBib3JkZXItY29sb3I6ICRhY2NlbnQ7XG4gICAgfVxuICAgIC5teF9TU09CdXR0b25fZGVmYXVsdC5teF9TU09CdXR0b25fcHJpbWFyeSB7XG4gICAgICAgIGNvbG9yOiAkYnV0dG9uLXByaW1hcnktZmctY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgfVxuXG4gICAgLm14X1NTT0J1dHRvbl9taW5pIHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgd2lkdGg6IDUwcHg7IC8qIDQ4cHggKyAxcHggYm9yZGVyIG9uIGFsbCBzaWRlcyAqL1xuICAgICAgICBoZWlnaHQ6IDUwcHg7IC8qIDQ4cHggKyAxcHggYm9yZGVyIG9uIGFsbCBzaWRlcyAqL1xuICAgICAgICBtaW4td2lkdGg6IDUwcHg7IC8qIHByZXZlbnQgY3J1c2hpbmcgYnkgdGhlIGZsZXhib3ggKi9cbiAgICAgICAgcGFkZGluZzogMTJweDtcblxuICAgICAgICA+IGltZyB7XG4gICAgICAgICAgICBsZWZ0OiAxMnB4O1xuICAgICAgICAgICAgdG9wOiAxMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJiArIC5teF9TU09CdXR0b25fbWluaSB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TZWFyY2hXYXJuaW5nIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMCAxNnB4O1xuXG4gICAgPiAqIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICA+IGltZyB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TZXJ2ZXJQaWNrZXIge1xuICAgIG1hcmdpbi1ib3R0b206IDE0cHg7XG4gICAgcGFkZGluZy1ib3R0b206ICRzcGFjaW5nLTE2O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDE0MSwgMTUxLCAxNjUsIDAuMik7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWluLWNvbnRlbnQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIGF1dG8gYXV0bztcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTIwcHg7XG5cbiAgICA+IGgyIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgbWFyZ2luOiAwIDAgMjBweDtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgICAgIGdyaWQtcm93OiAxO1xuICAgIH1cblxuICAgIC5teF9TZXJ2ZXJQaWNrZXJfaGVscCB7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpY29uLWJ1dHRvbi1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogLTJweDtcbiAgICAgICAgICAgIGxlZnQ6IC0ycHg7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2kuc3ZnXCIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9TZXJ2ZXJQaWNrZXJfc2VydmVyIHtcbiAgICAgICAgY29sb3I6ICRhdXRocGFnZS1wcmltYXJ5LWNvbG9yO1xuICAgICAgICBncmlkLWNvbHVtbjogMTtcbiAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICB9XG5cbiAgICAubXhfU2VydmVyUGlja2VyX2NoYW5nZSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICBncmlkLXJvdzogMjtcbiAgICB9XG5cbiAgICAubXhfU2VydmVyUGlja2VyX2Rlc2Mge1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAyO1xuICAgICAgICBncmlkLXJvdzogMztcbiAgICB9XG59XG5cbi5teF9TZXJ2ZXJQaWNrZXJfaGVscERpYWxvZyB7XG4gICAgLm14X0RpYWxvZ19jb250ZW50IHtcbiAgICAgICAgd2lkdGg6IDQ1NnB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TZXR0aW5nc0ZsYWcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLm14X1RvZ2dsZVN3aXRjaCB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cblxuICAgICYubXhfU2V0dGluZ3NGbGFnX3RvZ2dsZUluRnJvbnQge1xuICAgICAgICAubXhfVG9nZ2xlU3dpdGNoIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TZXR0aW5nc0ZsYWdfbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X1NldHRpbmdzRmxhZ19sYWJlbCB7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgcGFkZGluZy10b3A6IDRweDtcbn1cblxuLm14X1NldHRpbmdzRmxhZ19taWNyb2NvcHkge1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcblxuICAgIC8qIFN1cHBvcnQgY29kZS9wcmUgZWxlbWVudHMgaW4gc2V0dGluZ3MgZmxhZyBkZXNjcmlwdGlvbnMgKi9cbiAgICBwcmUsXG4gICAgY29kZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkbW9ub3NwYWNlLWZvbnQtZmFtaWx5ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRydGUtY29kZS1iZy1jb2xvcjtcbiAgICB9XG5cbiAgICAubXhfU2V0dGluZ3NUYWJfbWljcm9jb3B5X3dhcm5pbmc6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwi4pqg77iPIFwiO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TbGlkZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW46IDA7XG4gICAgZmxleC1ncm93OiAxO1xuXG4gICAgaW5wdXRbdHlwZT1cInJhbmdlXCJdIHtcbiAgICAgICAgaGVpZ2h0OiAyLjRlbTtcbiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogMWVtOyAvLyBzZXQgYmFzZSBtdWx0aXBsaWVyIGZvciBlbSB1bml0cyBhcHBsaWVkIGxhdGVyXG5cbiAgICAgICAgLS1hY3RpdmUtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIC0tc2VsZWN0aW9uLWRvdC1zaXplOiAyLjRlbTtcblxuICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cbiAgICAgICAgICAgIC0tYWN0aXZlLWNvbG9yOiAkc2xpZGVyLWJhY2tncm91bmQtY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzOm5vdCguZm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAwLjRlbTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgIGJvcmRlcjogMCBzb2xpZCAjMDAwMDAwO1xuICAgICAgICB9XG4gICAgICAgICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICAgIGJvcmRlcjogMCBzb2xpZCAjMDAwMDAwO1xuICAgICAgICAgICAgd2lkdGg6IHZhcigtLXNlbGVjdGlvbi1kb3Qtc2l6ZSk7XG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXNlbGVjdGlvbi1kb3Qtc2l6ZSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY3RpdmUtY29sb3IpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogY2FsYygycHggKyAxLjJlbSAtIHZhcigtLXNlbGVjdGlvbi1kb3Qtc2l6ZSkpO1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDAuNGVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgYm9yZGVyOiAwIHNvbGlkICMwMDAwMDA7XG4gICAgICAgIH1cbiAgICAgICAgJjo6LW1vei1yYW5nZS1wcm9ncmVzcyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDAuNGVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYWN0aXZlLWNvbG9yKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgIGJvcmRlcjogMCBzb2xpZCAjMDAwMDAwO1xuICAgICAgICB9XG4gICAgICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgICAgICAgYm9yZGVyOiAwIHNvbGlkICMwMDAwMDA7XG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tc2VsZWN0aW9uLWRvdC1zaXplKTtcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tc2VsZWN0aW9uLWRvdC1zaXplKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjdGl2ZS1jb2xvcik7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICAmOjotbXMtdHJhY2sge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDAuNGVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgICAgICY6Oi1tcy1maWxsLWxvd2VyLFxuICAgICAgICAmOjotbXMtZmlsbC11cHBlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQtY29sb3I7XG4gICAgICAgICAgICBib3JkZXI6IDAgc29saWQgIzAwMDAwMDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIH1cbiAgICAgICAgJjo6LW1zLXRodW1iIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDFweDtcbiAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1zZWxlY3Rpb24tZG90LXNpemUpO1xuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1zZWxlY3Rpb24tZG90LXNpemUpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYWN0aXZlLWNvbG9yKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzOjotbXMtZmlsbC11cHBlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQtY29sb3I7XG4gICAgICAgIH1cbiAgICAgICAgJjo6LW1zLWZpbGwtbG93ZXIsXG4gICAgICAgICY6Zm9jdXM6Oi1tcy1maWxsLWxvd2VyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjdGl2ZS1jb2xvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvdXRwdXQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuXG4gICAgICAgIGZvbnQtc2l6ZTogMWVtOyAvLyBzZXQgYmFzZSBtdWx0aXBsaWVyIGZvciBlbSB1bml0cyBhcHBsaWVkIGxhdGVyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdG9wOiAzZW07XG5cbiAgICAgICAgLm14X1NsaWRlcl9zZWxlY3Rpb25fbGFiZWwge1xuICAgICAgICAgICAgY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuQ29weXJpZ2h0IDIwMjEgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TcGlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGZsZXg6IDE7XG59XG5cbi5teF9NYXRyaXhDaGF0X21pZGRsZVBhbmVsIC5teF9TcGlubmVyIHtcbiAgICBoZWlnaHQ6IGF1dG87XG59XG5cbkBrZXlmcmFtZXMgc3BpbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWigwZGVnKTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVooMzYwZGVnKTtcbiAgICB9XG59XG5cbi5teF9TcGlubmVyX2ljb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgbWFzazogdXJsKFwiJChyZXMpL2ltZy9zcGlubmVyL3NwaW5uZXItYmFja2dyb3VuZC5zdmdcIik7XG4gICAgbWFzay1zaXplOiAxMDAlO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBtYXNrOiB1cmwoXCIkKHJlcykvaW1nL3NwaW5uZXIvc3Bpbm5lci1mb3JlZ3JvdW5kLnN2Z1wiKTtcbiAgICAgICAgbWFzay1zaXplOiAxMDAlO1xuXG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICBhbmltYXRpb246IDFzIGxpbmVhciBzcGluIGluZmluaXRlO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0NoZWNrYm94IHtcbiAgICAkc2l6ZTogJGZvbnQtMTZweDtcbiAgICAkYm9yZGVyLXNpemU6ICRmb250LTEtNXB4O1xuICAgICRib3JkZXItcmFkaXVzOiAkZm9udC00cHg7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICYgKyBsYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgJiArIGxhYmVsID4gLm14X0NoZWNrYm94X2JhY2tncm91bmQge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgICAgICAgc2l6ZTogMC41cmVtO1xuXG4gICAgICAgICAgICBib3JkZXI6ICRib3JkZXItc2l6ZSBzb2xpZCByZ2JhKCRtdXRlZC1mZy1jb2xvciwgMC41KTtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcblxuICAgICAgICAgICAgLm14X0NoZWNrYm94X2NoZWNrbWFyayB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9jaGVjay5zdmdcIik7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpjaGVja2VkICsgbGFiZWwgPiAubXhfQ2hlY2tib3hfYmFja2dyb3VuZCAubXhfQ2hlY2tib3hfY2hlY2ttYXJrIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgJiArIGxhYmVsID4gKjpub3QoLm14X0NoZWNrYm94X2JhY2tncm91bmQpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpkaXNhYmxlZCArIGxhYmVsIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgJiArIGxhYmVsIC5teF9DaGVja2JveF9iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgICAgICBAbWl4aW4gdW5yZWFsLWZvY3VzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfQ2hlY2tib3gubXhfQ2hlY2tib3hfa2luZF9zb2xpZCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICYgKyBsYWJlbCA+IC5teF9DaGVja2JveF9iYWNrZ3JvdW5kIC5teF9DaGVja2JveF9jaGVja21hcmsge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIH1cblxuICAgICY6Y2hlY2tlZCArIGxhYmVsID4gLm14X0NoZWNrYm94X2JhY2tncm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYWNjZW50O1xuICAgICAgICBib3JkZXItY29sb3I6ICRhY2NlbnQ7XG4gICAgfVxufVxuXG4ubXhfQ2hlY2tib3gubXhfQ2hlY2tib3hfa2luZF9vdXRsaW5lIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgJiArIGxhYmVsID4gLm14X0NoZWNrYm94X2JhY2tncm91bmQgLm14X0NoZWNrYm94X2NoZWNrbWFyayB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRhY2NlbnQ7XG4gICAgfVxuXG4gICAgJjpjaGVja2VkICsgbGFiZWwgPiAubXhfQ2hlY2tib3hfYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItY29sb3I6ICRhY2NlbnQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLyoqXG4qIFRoaXMgY29tcG9uZW50IGV4cGVjdHMgdGhlIHBhcmVudCB0byBzcGVjaWZ5IGEgcG9zaXRpdmUgcGFkZGluZyBhbmRcbiogd2lkdGhcbiovXG5cbi5teF9TdHlsZWRSYWRpb0J1dHRvbiB7XG4gICAgJHJhZGlvLWNpcmNsZS1jb2xvcjogJHF1YXRlcm5hcnktY29udGVudDtcbiAgICAkYWN0aXZlLXJhZGlvLWNpcmNsZS1jb2xvcjogJGFjY2VudDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICA+IC5teF9TdHlsZWRSYWRpb0J1dHRvbl9jb250ZW50IHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gICAgfVxuXG4gICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uX3NwYWNlciB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBmbGV4LWdyb3c6IDA7XG5cbiAgICAgICAgaGVpZ2h0OiAkZm9udC0xNnB4O1xuICAgICAgICB3aWR0aDogJGZvbnQtMTZweDtcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgICAgICAvKiBSZW1vdmUgdGhlIE9TJ3MgcmVwcmVzZW50YXRpb24gKi9cbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgICAgICsgZGl2IHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgZmxleC1ncm93OiAwO1xuXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgaGVpZ2h0OiAkZm9udC0xNnB4O1xuICAgICAgICAgICAgd2lkdGg6ICRmb250LTE2cHg7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMnB4OyAvKiBGb3IgdGhlIGhpZ2hsaWdodCBvbiBmb2N1cyAqL1xuXG4gICAgICAgICAgICBib3JkZXI6ICRmb250LTEtNXB4IHNvbGlkICRyYWRpby1jaXJjbGUtY29sb3I7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZm9udC0xNnB4O1xuXG4gICAgICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgICAgICAgICAgICAgIGhlaWdodDogJGZvbnQtOHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAkZm9udC04cHg7XG5cbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZm9udC04cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgJiArIGRpdiB7XG4gICAgICAgICAgICAgICAgQG1peGluIHVucmVhbC1mb2N1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICAmICsgZGl2IHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtcmFkaW8tY2lyY2xlLWNvbG9yO1xuXG4gICAgICAgICAgICAgICAgJiA+IGRpdiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRhY3RpdmUtcmFkaW8tY2lyY2xlLWNvbG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6ZGlzYWJsZWQge1xuICAgICAgICAgICAgJiArIGRpdixcbiAgICAgICAgICAgICYgKyBkaXYgKyBzcGFuIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJiArIGRpdiB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkcmFkaW8tY2lyY2xlLWNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpjaGVja2VkOmRpc2FibGVkIHtcbiAgICAgICAgICAgICYgKyBkaXYgPiBkaXYge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyYWRpby1jaXJjbGUtY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3R5bGVkUmFkaW9CdXR0b25faW5uZXJMYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdG9wOiA0cHg7XG4gICAgfVxufVxuXG4ubXhfU3R5bGVkUmFkaW9CdXR0b25fb3V0bGluZWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1kYXJrZXItYmctY29sb3I7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4ubXhfU3R5bGVkUmFkaW9CdXR0b25fY2hlY2tlZCB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3IE1pY2hhZWwgVGVsYXR5bnNraSA8N3QzY2hndXlAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TeW50YXhIaWdobGlnaHQge1xuICAgIC8qIGluaGliaXQgaGxqcyBzdHlsaW5nICovXG4gICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkbGlnaHQtZmctY29sb3IgIWltcG9ydGFudDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9UYWdDb21wb3NlciB7XG4gICAgLm14X1RhZ0NvbXBvc2VyX2lucHV0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcblxuICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDcwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDhweDsgLyogb3ZlcnJpZGUgZnJvbSBidXR0b24gc3R5bGVzICovXG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOyAvKiBvdmVycmlkZSBkZWZhdWx0IHNldHRpbmdzdGFiIHN0eWxlICovXG4gICAgICAgIH1cblxuICAgICAgICAubXhfRmllbGQsXG4gICAgICAgIC5teF9GaWVsZCBpbnB1dCxcbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgLyogU28gdGhleSBsb29rIHJlbGF0ZWQgdG8gZWFjaCBvdGhlciBieSBmZWVsaW5nIHRoZSBzYW1lICovXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfVGFnQ29tcG9zZXJfdGFncyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDsgLyogdGhpcyBwbHVzIDEycHggZnJvbSB0aGUgdGFncyBtYWtlcyAyNHB4IGZyb20gdGhlIGlucHV0ICovXG4gICAgfVxuXG4gICAgLm14X1RhZyB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICB9XG59XG5cbi5teF9UYWcge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcblxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgYmFja2dyb3VuZDogJHF1aW5hcnktY29udGVudDtcblxuICAgID4gc3ZnOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjI1KTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5teF9UYWdfZGVsZXRlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxLjA2NjY2NmVtOyAvKiAxNnB4OyAqL1xuICAgICAgICBoZWlnaHQ6IDEuMDY2NjY2ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxZW07XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICRzeXN0ZW07XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDAuNWVtO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZC5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuLm14X1RleHRXaXRoVG9vbHRpcF90YXJnZXQge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbn1cblxuLm14X1RleHRXaXRoVG9vbHRpcF90b29sdGlwIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1RvZ2dsZVN3aXRjaCB7XG4gICAgLS1Ub2dnbGVTd2l0Y2gtbWluLXdpZHRoOiAkZm9udC00NHB4O1xuXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2Utb3V0IDAuMXM7XG5cbiAgICB3aWR0aDogJGZvbnQtNDRweDtcbiAgICBoZWlnaHQ6ICRmb250LTIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMS41cmVtO1xuICAgIHBhZGRpbmc6IDJweDtcblxuICAgIGJhY2tncm91bmQtY29sb3I6ICR0b2dnbGVzdy1vZmYtY29sb3I7XG4gICAgb3BhY2l0eTogMC41O1xuXG4gICAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxufVxuXG4ubXhfVG9nZ2xlU3dpdGNoX2VuYWJsZWQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4ubXhfVG9nZ2xlU3dpdGNoLm14X1RvZ2dsZVN3aXRjaF9vbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcblxuICAgID4gLm14X1RvZ2dsZVN3aXRjaF9iYWxsIHtcbiAgICAgICAgbGVmdDogY2FsYygxMDAlIC0gJGZvbnQtMjBweCk7XG4gICAgfVxufVxuXG4ubXhfVG9nZ2xlU3dpdGNoX2JhbGwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogJGZvbnQtMjBweDtcbiAgICBoZWlnaHQ6ICRmb250LTIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogJGZvbnQtMjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9nZ2xlc3ctYmFsbC1jb2xvcjtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuMTVzIGVhc2Utb3V0IDAuMXM7XG4gICAgbGVmdDogMDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5Aa2V5ZnJhbWVzIG14X2ZhZGVpbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBteF9mYWRlb3V0IHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxufVxuXG4ubXhfVG9vbHRpcF9jaGV2cm9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogLTdweDtcbiAgICB0b3A6IGNhbGMoNTAlIC0gNnB4KTtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYm9yZGVyLXRvcDogN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yaWdodDogN3B4IHNvbGlkICRtZW51LWJvcmRlci1jb2xvcjtcbiAgICBib3JkZXItYm90dG9tOiA3cHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi5teF9Ub29sdGlwX2NoZXZyb246OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBib3JkZXItdG9wOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgJG1lbnUtYmctY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbTogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IC02cHg7XG4gICAgbGVmdDogMXB4O1xufVxuXG4ubXhfVG9vbHRpcCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIHotaW5kZXg6IDYwMDA7IC8qIEhpZ2hlciB0aGFuIGNvbnRleHQgbWVudSBzbyB0b29sdGlwcyBjYW4gYmUgdXNlZCBldmVyeXdoZXJlICovXG4gICAgcGFkZGluZzogMTBweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMTRweDtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNjJjOyAvKiBTYW1lIG9uIGJvdGggdGhlbWVzICovXG4gICAgY29sb3I6ICRhY2NlbnQtZmctY29sb3I7XG4gICAgYm9yZGVyOiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIC5teF9Ub29sdGlwX2NoZXZyb24ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICYubXhfVG9vbHRpcF92aXNpYmxlIHtcbiAgICAgICAgYW5pbWF0aW9uOiBteF9mYWRlaW4gMC4ycyBmb3J3YXJkcztcbiAgICB9XG5cbiAgICAmLm14X1Rvb2x0aXBfaW52aXNpYmxlIHtcbiAgICAgICAgYW5pbWF0aW9uOiBteF9mYWRlb3V0IDAuMXMgZm9yd2FyZHM7XG4gICAgfVxuXG4gICAgdWwsXG4gICAgb2wge1xuICAgICAgICB0ZXh0LWFsaWduOiBzdGFydDsgLyogZm9yIGxpc3QgaXRlbXMgKi9cbiAgICB9XG59XG5cbi8qIFRoZXNlIHRvb2x0aXBzIHVzZSBhbiBvbGRlciBzdHlsZSB3aXRoIGEgY2hldnJvbiAqL1xuLm14X0ZpZWxkX3Rvb2x0aXAge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtZW51LWJnLWNvbG9yO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRtZW51LWJvcmRlci1jb2xvcjtcbiAgICB0ZXh0LWFsaWduOiB1bnNldDtcblxuICAgIC5teF9Ub29sdGlwX2NoZXZyb24ge1xuICAgICAgICBkaXNwbGF5OiB1bnNldDtcbiAgICB9XG59XG5cbi5teF9Ub29sdGlwX3RpdGxlIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xufVxuXG4ubXhfVG9vbHRpcF9zdWIge1xuICAgIG9wYWNpdHk6IDAuNztcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTcgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Ub29sdGlwQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDExcHg7XG4gICAgaGVpZ2h0OiAxMXB4O1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG5cbiAgICBib3JkZXI6IDJweCBzb2xpZCAkbmV1dHJhbC1iYWRnZS1jb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGNvbG9yOiAkbmV1dHJhbC1iYWRnZS1jb2xvcjtcblxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluO1xuICAgIG9wYWNpdHk6IDAuNjtcblxuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xMXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm14X1Rvb2x0aXBCdXR0b246aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5teF9Ub29sdGlwQnV0dG9uX2NvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogLTE4cHg7XG4gICAgbGVmdDogNHB4O1xufVxuXG4ubXhfVG9vbHRpcEJ1dHRvbl9oZWxwVGV4dCB7XG4gICAgd2lkdGg6IDQwMHB4O1xuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgIGxpbmUtaGVpZ2h0OiAxN3B4ICFpbXBvcnRhbnQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVXNlQ2FzZVNlbGVjdGlvbiB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmciAxZnIgbWF4LWNvbnRlbnQgMmZyO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBncmlkLWdhcDogJHNwYWNpbmctNDA7XG5cbiAgICAubXhfVXNlQ2FzZVNlbGVjdGlvbl90aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cbiAgICAgICAgaDEge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMzJweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Vc2VDYXNlU2VsZWN0aW9uX2luZm8ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6ICRzcGFjaW5nLTg7XG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTI0cHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNnB4O1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Vc2VDYXNlU2VsZWN0aW9uX29wdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgMjMycHgpO1xuICAgICAgICBnYXA6ICRzcGFjaW5nLTMyO1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAubXhfVXNlQ2FzZVNlbGVjdGlvbl9za2lwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICB9XG59XG5cbi5teF9Vc2VDYXNlU2VsZWN0aW9uX3NsaWRlSW4ge1xuICAgIGFuaW1hdGlvbi1kZWxheTogODAwbXM7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAzMDBtcztcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC41OCwgMSk7XG4gICAgYW5pbWF0aW9uLW5hbWU6IG14X1VzZUNhc2VTZWxlY3Rpb25fc2xpZGVJbkxvbmc7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYmFja3dhcmRzO1xuICAgIHdpbGwtY2hhbmdlOiBvcGFjaXR5O1xufVxuXG4ubXhfVXNlQ2FzZVNlbGVjdGlvbl9zbGlkZUluRGVsYXllZCB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAxNTAwbXM7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAzMDBtcztcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC41OCwgMSk7XG4gICAgYW5pbWF0aW9uLW5hbWU6IG14X1VzZUNhc2VTZWxlY3Rpb25fc2xpZGVJblNob3J0O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJhY2t3YXJkcztcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBvcGFjaXR5O1xufVxuXG4ubXhfVXNlQ2FzZVNlbGVjdGlvbl9zZWxlY3RlZCB7XG4gICAgLm14X1VzZUNhc2VTZWxlY3Rpb25fc2xpZGVJbixcbiAgICAubXhfVXNlQ2FzZVNlbGVjdGlvbl9zbGlkZUluRGVsYXllZCB7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogODAwbXM7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMzAwbXM7XG4gICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogbXhfVXNlQ2FzZVNlbGVjdGlvbl9mYWRlT3V0O1xuICAgICAgICB3aWxsLWNoYW5nZTogb3BhY2l0eTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbXhfVXNlQ2FzZVNlbGVjdGlvbl9zbGlkZUluTG9uZyB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAyMHB4KTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBteF9Vc2VDYXNlU2VsZWN0aW9uX3NsaWRlSW5TaG9ydCB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCA4cHgpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIG14X1VzZUNhc2VTZWxlY3Rpb25fZmFkZU91dCB7XG4gICAgMCUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVXNlQ2FzZVNlbGVjdGlvbkJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogJHNwYWNpbmctMjQgJHNwYWNpbmctMTY7XG4gICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBib3gtc2hhZG93LCB0cmFuc2Zvcm07XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XG5cbiAgICAubXhfVXNlQ2FzZVNlbGVjdGlvbkJ1dHRvbl9pY29uIHtcbiAgICAgICAgLyogd29ya2Fyb3VuZDogZGVzaWduIGV4cGVjdHMgYSBsYXllcmluZyBvZiB0d28gY29sb3JzICovXG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDE3MiwgNTksIDE2OCwgMC4xNSksIHJnYmEoMTcyLCA1OSwgMTY4LCAwLjE1KSksICNmZmZmZmY7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTE2O1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAvKiB0aGlzIGhhcyB0byByZW1haW4gdGhlIHNhbWUgY29sb3IgYWNyb3NzIGFsbCB0aGVtZXMsXG4gICAgICAgICAgICAgICBhcyBpdHMgYmFja2dyb3VuZCBoYXMgYSBmaXhlZCBjb2xvciBhcyB3ZWxsICovXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWUxZTFlO1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgIHdpZHRoOiAyMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9Vc2VDYXNlU2VsZWN0aW9uQnV0dG9uX21lc3NhZ2luZzo6YmVmb3JlIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jaGF0LWJ1YmJsZS5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X1VzZUNhc2VTZWxlY3Rpb25CdXR0b25fd29yazo6YmVmb3JlIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy92aWV3LWNvbW11bml0eS5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X1VzZUNhc2VTZWxlY3Rpb25CdXR0b25fY29tbXVuaXR5OjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9nbG9iZS5zdmdcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiAwICRzcGFjaW5nLTQgJHNwYWNpbmctOCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtJHNwYWNpbmctOCk7XG4gICAgfVxuXG4gICAgLm14X1VzZUNhc2VTZWxlY3Rpb25CdXR0b25fc2VsZWN0ZWRJY29uIHtcbiAgICAgICAgcmlnaHQ6IC0xMnB4O1xuICAgICAgICB0b3A6IC0xMnB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICRhY2NlbnQ7XG4gICAgICAgIHBhZGRpbmc6IDZweDtcbiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eSwgdHJhbnNmb3JtO1xuICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjYpO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgICAgIGhlaWdodDogMTJweDtcblxuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NoZWNrLXdoaXRlLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfVXNlQ2FzZVNlbGVjdGlvbkJ1dHRvbl9zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICRhY2NlbnQ7XG4gICAgICAgIHBhZGRpbmc6IGNhbGMoJHNwYWNpbmctMjQgLSAxcHgpIGNhbGMoJHNwYWNpbmctMTYgLSAxcHgpO1xuICAgICAgICBib3gtc2hhZG93OiAwICRzcGFjaW5nLTQgJHNwYWNpbmctOCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuXG4gICAgICAgIC5teF9Vc2VDYXNlU2VsZWN0aW9uQnV0dG9uX3NlbGVjdGVkSWNvbiB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9WYWxpZGF0aW9uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5teF9WYWxpZGF0aW9uX2RldGFpbHMge1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5teF9WYWxpZGF0aW9uX2Rlc2NyaXB0aW9uICsgLm14X1ZhbGlkYXRpb25fZGV0YWlscyB7XG4gICAgbWFyZ2luOiAxZW0gMCAwO1xufVxuXG4ubXhfVmFsaWRhdGlvbl9kZXRhaWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAtMThweDtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgfVxuXG4gICAgJi5teF9WYWxpZGF0aW9uX3ZhbGlkIHtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2NoZWNrLnN2Z1wiKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X1ZhbGlkYXRpb25faW52YWxpZCB7XG4gICAgICAgIGNvbG9yOiAkYWxlcnQ7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL3guc3ZnXCIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFsZXJ0O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IFR1bGlyIEFzb2thbiA8dHVsaXJAbWF1bml1bS5uZXQ+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0Vtb2ppUGlja2VyIHtcbiAgICB3aWR0aDogMzQwcHg7XG4gICAgaGVpZ2h0OiA0NTBweDtcblxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLm14X0Vtb2ppUGlja2VyX2JvZHkge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIHNjcm9sbGJhci13aWR0aDogdGhpbjtcbiAgICBzY3JvbGxiYXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKSB0cmFuc3BhcmVudDtcbn1cblxuLm14X0Vtb2ppUGlja2VyX2hlYWRlciB7XG4gICAgcGFkZGluZzogNHB4IDhweCAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbWVzc2FnZS1hY3Rpb24tYmFyLWJvcmRlci1jb2xvcjtcbn1cblxuLm14X0Vtb2ppUGlja2VyX2FuY2hvciB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHBhZGRpbmc6IDhweCA4cHggNnB4O1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDtcblxuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzhweDtcblxuICAgICY6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgJjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb2N1cy1iZy1jb2xvcjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRhY2NlbnQ7XG4gICAgfVxufVxuXG4ubXhfRW1vamlQaWNrZXJfYW5jaG9yOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFzay1zaXplOiAxMDAlO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubXhfRW1vamlQaWNrZXJfYW5jaG9yOmRpc2FibGVkOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRmb2N1cy1iZy1jb2xvcjtcbn1cblxuLm14X0Vtb2ppUGlja2VyX2FuY2hvcl9hY3Rpdml0eTo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2Vtb2ppcGlja2VyL2FjdGl2aXR5LnN2Z1wiKTtcbn1cbi5teF9FbW9qaVBpY2tlcl9hbmNob3JfY3VzdG9tOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZW1vamlwaWNrZXIvY3VzdG9tLnN2Z1wiKTtcbn1cbi5teF9FbW9qaVBpY2tlcl9hbmNob3JfZmxhZ3M6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbW9qaXBpY2tlci9mbGFncy5zdmdcIik7XG59XG4ubXhfRW1vamlQaWNrZXJfYW5jaG9yX2Zvb2RzOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZW1vamlwaWNrZXIvZm9vZHMuc3ZnXCIpO1xufVxuLm14X0Vtb2ppUGlja2VyX2FuY2hvcl9uYXR1cmU6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbW9qaXBpY2tlci9uYXR1cmUuc3ZnXCIpO1xufVxuLm14X0Vtb2ppUGlja2VyX2FuY2hvcl9vYmplY3RzOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZW1vamlwaWNrZXIvb2JqZWN0cy5zdmdcIik7XG59XG4ubXhfRW1vamlQaWNrZXJfYW5jaG9yX3Blb3BsZTo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2Vtb2ppcGlja2VyL3Blb3BsZS5zdmdcIik7XG59XG4ubXhfRW1vamlQaWNrZXJfYW5jaG9yX3BsYWNlczo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2Vtb2ppcGlja2VyL3BsYWNlcy5zdmdcIik7XG59XG4ubXhfRW1vamlQaWNrZXJfYW5jaG9yX3JlY2VudDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2Vtb2ppcGlja2VyL3JlY2VudC5zdmdcIik7XG59XG4ubXhfRW1vamlQaWNrZXJfYW5jaG9yX3N5bWJvbHM6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbW9qaXBpY2tlci9zeW1ib2xzLnN2Z1wiKTtcbn1cblxuLm14X0Vtb2ppUGlja2VyX2FuY2hvcl92aXNpYmxlIHtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJGFjY2VudDtcbn1cblxuLm14X0Vtb2ppUGlja2VyX3NlYXJjaCB7XG4gICAgbWFyZ2luOiA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgZGlzcGxheTogZmxleDtcblxuICAgIGlucHV0IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4IDA7XG4gICAgfVxuXG4gICAgYnV0dG9uIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDhweDtcbiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgIH1cbn1cblxuLm14X0Vtb2ppUGlja2VyX3NlYXJjaF9jbGVhciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXhfRW1vamlQaWNrZXJfc2VhcmNoX2ljb24ge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIG1hcmdpbjogOHB4O1xufVxuXG4ubXhfRW1vamlQaWNrZXJfc2VhcmNoX2ljb246bm90KC5teF9FbW9qaVBpY2tlcl9zZWFyY2hfY2xlYXIpIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLm14X0Vtb2ppUGlja2VyX3NlYXJjaF9pY29uOjphZnRlciB7XG4gICAgbWFzazogdXJsKFwiJChyZXMpL2ltZy9lbW9qaXBpY2tlci9zZWFyY2guc3ZnXCIpIG5vLXJlcGVhdDtcbiAgICBtYXNrLXNpemU6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5teF9FbW9qaVBpY2tlcl9zZWFyY2hfY2xlYXI6OmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2Vtb2ppcGlja2VyL2RlbGV0ZS5zdmdcIik7XG59XG5cbi5teF9FbW9qaVBpY2tlcl9jYXRlZ29yeSB7XG4gICAgcGFkZGluZzogMCAxMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubXhfRW1vamlQaWNrZXJfY2F0ZWdvcnlfbGFiZWwge1xuICAgIHdpZHRoOiAzMDRweDtcbn1cblxuLm14X0Vtb2ppUGlja2VyX2xpc3Qge1xuICAgIHdpZHRoOiAzMDRweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLm14X0Vtb2ppUGlja2VyX2l0ZW1fd3JhcHBlciB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgd2lkdGg6IDM4cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9jdXMtYmctY29sb3I7XG4gICAgfVxufVxuXG4ubXhfRW1vamlQaWNrZXJfYm9keSAubXhfRW1vamlQaWNrZXJfaXRlbV93cmFwcGVyW3RhYmluZGV4PVwiMFwiXSAubXhfRW1vamlQaWNrZXJfaXRlbSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZvY3VzLWJnLWNvbG9yO1xufVxuXG4ubXhfRW1vamlQaWNrZXJfaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMjBweDtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9jdXMtYmctY29sb3I7XG4gICAgfVxufVxuXG4ubXhfRW1vamlQaWNrZXJfaXRlbV9zZWxlY3RlZCB7XG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYWNjZW50O1xuICAgIHBhZGRpbmc6IDRweDtcbn1cblxuLm14X0Vtb2ppUGlja2VyX2NhdGVnb3J5X2xhYmVsLFxuLm14X0Vtb2ppUGlja2VyX3ByZXZpZXdfbmFtZSB7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNnB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4ubXhfRW1vamlQaWNrZXJfZm9vdGVyIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJG1lc3NhZ2UtYWN0aW9uLWJhci1ib3JkZXItY29sb3I7XG4gICAgbWluLWhlaWdodDogNzJweDtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm14X0Vtb2ppUGlja2VyX3ByZXZpZXdfZW1vamkge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMzJweDtcbiAgICBwYWRkaW5nOiA4cHggMTZweDtcbn1cblxuLm14X0Vtb2ppUGlja2VyX3ByZXZpZXdfdGV4dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy10b3A6IDFyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW07XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLm14X0Vtb2ppUGlja2VyX25hbWUge1xuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xufVxuXG4ubXhfRW1vamlQaWNrZXJfc2hvcnRjb2RlIHtcbiAgICBjb2xvcjogJGxpZ2h0LWZnLWNvbG9yO1xuICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCI6XCI7XG4gICAgfVxufVxuXG4ubXhfRW1vamlQaWNrZXJfcXVpY2sge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG5cbi5teF9FbW9qaVBpY2tlcl9xdWlja19oZWFkZXIgLm14X0Vtb2ppUGlja2VyX25hbWUge1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkNcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTG9jYXRpb25QaWNrZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgIGhlaWdodDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLyogd2hlbiB0aGVyZSBhcmUgZXJyb3JzIGxvYWRpbmcgdGhlIG1hcCAqL1xuICAgIC8qIHRoZSBjYW52YXMgaXMgc3RpbGwgaW5zZXJ0ZWQgKi9cbiAgICAvKiBhbmQgY2FuIG92ZXJsYXAgZXJyb3IgbWVzc2FnZS9jbG9zZSBidXR0b25zICovXG4gICAgLyogaGlkZSBpdCAqL1xuICAgICYubXhfTG9jYXRpb25QaWNrZXJfaGFzRXJyb3Ige1xuICAgICAgICAubWFwbGlicmVnbC1jYW52YXMtY29udGFpbmVyLFxuICAgICAgICAubWFwbGlicmVnbC1jb250cm9sLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI214X0xvY2F0aW9uUGlja2VyX21hcCB7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBmbGV4OiAxO1xuXG4gICAgICAgIC5tYXBsaWJyZWdsLWN0cmwubWFwbGlicmVnbC1jdHJsLWdyb3VwLFxuICAgICAgICAubWFwbGlicmVnbC1jdHJsLm1hcGxpYnJlZ2wtY3RybC1hdHRyaWIge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy0xNjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tYXBsaWJyZWdsLWN0cmwubWFwbGlicmVnbC1jdHJsLWdyb3VwIHtcbiAgICAgICAgICAgIC8qIHBsYWNlIGJlbG93IHRoZSBjbG9zZSBidXR0b24gKi9cbiAgICAgICAgICAgIC8qIHBhZGRpbmctMTYgKyAyNHB4IGNsb3NlIGJ1dHRvbiArIHBhZGRpbmctMTAgKi9cbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubWFwbGlicmVnbC11c2VyLWxvY2F0aW9uLWFjY3VyYWN5LWNpcmNsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1hcGxpYnJlZ2wtdXNlci1sb2NhdGlvbi1kb3Qge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Mb2NhdGlvblBpY2tlcl9mb290ZXIge1xuICAgICAgICBmbGV4OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctMTY7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcblxuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogaW5oZXJpdDtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLXBhbmVsLWJnLWNvbG9yO1xuICAgIH1cbn1cblxuLm14X0xvY2F0aW9uUGlja2VyX3BpblRleHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6ICRzcGFjaW5nLTE2O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGhlaWdodDogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHNwYW4ge1xuICAgICAgICBib3gtc2hhZG93OiAwcHggNHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy04O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIH1cbn1cblxuLm14X0xvY2F0aW9uUGlja2VyX3N1Ym1pdEJ1dHRvbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA0OHB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0NhbGxFdmVudF93cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ubXhfQ2FsbEV2ZW50IHtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgbWluLWhlaWdodDogNjBweDtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzeXN0ZW07XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6ICRzcGFjaW5nLTg7XG5cbiAgICA+IC5teF9CYXNlQXZhdGFyLFxuICAgID4gLm14X0ljb24ge1xuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgIH1cblxuICAgID4gLm14X0ljb24ge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTQgMDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfTGl2ZUNvbnRlbnRTdW1tYXJ5IHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIH1cblxuICAgIC0tZmFjZXBpbGUtYmFja2dyb3VuZDogJHN5c3RlbTtcbn1cblxuLm14X0NhbGxFdmVudF90aXRsZSB7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4OyAvKiBpbiBweCB0byBtYXRjaCB0aGUgYXZhdGFyICovXG59XG5cbi5teF9DYWxsRXZlbnRfaW5hY3RpdmUgLm14X0NhbGxFdmVudF90aXRsZTo6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC92aWRlby1jYWxsLnN2Z1wiKTtcbiAgICBtYXNrLXNpemU6IDE2cHg7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcbn1cblxuLm14X0NhbGxFdmVudF9hY3RpdmUgLm14X0NhbGxFdmVudF90aXRsZSB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbn1cblxuLm14X0NhbGxFdmVudF9jb2x1bW5zIHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6ICRzcGFjaW5nLTEyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4ubXhfVGltZWxpbmVDYXJkIC5teF9DYWxsRXZlbnRfY29sdW1ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6ICRzcGFjaW5nLTg7XG59XG5cbi5teF9DYWxsRXZlbnRfZGV0YWlscyB7XG4gICAgZmxleC1ncm93OiAxO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogNnB4O1xufVxuXG4ubXhfQ2FsbEV2ZW50X2J1dHRvbiB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBtaW4td2lkdGg6IDEyMHB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE4LCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0V2ZW50VGlsZUJ1YmJsZS5teF9DcmVhdGVFdmVudCB7XG4gICAgbWFyZ2luOiB2YXIoLS1FdmVudFRpbGVCdWJibGVfbWFyZ2luLWJsb2NrKSBhdXRvO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC10ZXh0LXByaW1hcnktY29sb3I7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jaGF0LWJ1YmJsZXMuc3ZnXCIpO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNyBWZWN0b3IgQ3JlYXRpb25zIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9EYXRlU2VwYXJhdG9yIHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBtYXJnaW46IDRweCAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgY29sb3I6ICRyb29tdG9waWMtY29sb3I7XG59XG5cbi5teF9EYXRlU2VwYXJhdG9yID4gaHIge1xuICAgIGZsZXg6IDEgMSAwO1xuICAgIGhlaWdodDogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRtZW51LXNlbGVjdGVkLWNvbG9yO1xufVxuXG4ubXhfRGF0ZVNlcGFyYXRvcl9kYXRlQ29udGVudCB7XG4gICAgcGFkZGluZzogMCAyNXB4O1xufVxuXG4ubXhfRGF0ZVNlcGFyYXRvcl9kYXRlSGVhZGluZyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLm14X0RhdGVTZXBhcmF0b3JfanVtcFRvRGF0ZU1lbnUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5teF9EYXRlU2VwYXJhdG9yX2NoZXZyb24ge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2NoZXZyb24tZG93bi5zdmdcIik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRGVjcnlwdGlvbkZhaWx1cmVCb2R5IHtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuQ29weXJpZ2h0IDIwMjEgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZV9kaXNwbGF5TmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAwO1xuICAgIH1cblxuICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZV9teGlkIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDVweDtcbiAgICAgICAgb3BhY2l0eTogMC41OyAvKiBNYXRjaCBteF9UZXh0dWFsRXZlbnQgKi9cbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWVkaWEgb25seSBwZXJjeSB7XG4gICAgLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlX2Rpc3BsYXlOYW1lIHtcbiAgICAgICAgLyogT3ZlcnJpZGUgdGhlIGNvbG91ciBpbiBwZXJjeSB0ZXN0cyBmb3Igc2NyZWVuc2hvdCBjb25zaXN0ZW5jeSAqL1xuICAgICAgICBjb2xvcjogdmFyKC0tcGVyY3ktY29sb3ItZGlzcGxheU5hbWUpICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5LCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0V2ZW50VGlsZUJ1YmJsZSB7XG4gICAgLS1FdmVudFRpbGVCdWJibGVfbWFyZ2luLWJsb2NrOiAxMHB4O1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRhcmstcGFuZWwtYmctY29sb3I7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgLyogUmVzZXJ2ZSBzcGFjZSBmb3IgZXh0ZXJuYWwgdGltZXN0YW1wcywgYnV0IGFsc28gY2FwIHRoZSB3aWR0aCAqL1xuICAgIG1heC13aWR0aDogbWluKGNhbGMoMTAwJSAtIDIgKiB2YXIoLS1NZXNzYWdlVGltZXN0YW1wLXdpZHRoKSksIDYwMHB4KTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyNHB4IG1pbm1heCgwLCAxZnIpIG1pbi1jb250ZW50IG1pbi1jb250ZW50O1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBncmlkLWNvbHVtbjogMTtcbiAgICAgICAgZ3JpZC1yb3c6IDEgLyAzO1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTQ7XG4gICAgfVxuXG4gICAgLm14X0V2ZW50VGlsZUJ1YmJsZV90aXRsZSxcbiAgICAubXhfRXZlbnRUaWxlQnViYmxlX3N1YnRpdGxlIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgfVxuXG4gICAgLm14X0V2ZW50VGlsZUJ1YmJsZV90aXRsZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgfVxuXG4gICAgLm14X0V2ZW50VGlsZUJ1YmJsZV9zdWJ0aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VUaW1lc3RhbXAge1xuICAgICAgICBncmlkLWNvbHVtbjogNDtcbiAgICAgICAgZ3JpZC1yb3c6IDEgLyAzO1xuICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZy0xNjtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9IaWRkZW5Cb2R5IHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2hpZGUuc3ZnXCIpO1xuXG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMXB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9KdW1wVG9EYXRlUGlja2VyX2Zvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgLyogVGhpcyBtYXRjaGVzIHRoZSBkZWZhdWx0IHBhZGRpbmcgb2YgSWNvbml6ZWRDb250ZXh0TWVudU9wdGlvbiAqL1xuICAgIC8qIChzZWUgY29udGV4dF9tZW51cy9fSWNvbml6ZWRDb250ZXh0TWVudS5wY3NzKSAqL1xuICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xufVxuXG4ubXhfSnVtcFRvRGF0ZVBpY2tlcl9sYWJlbCB7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbn1cblxuLm14X0p1bXBUb0RhdGVQaWNrZXJfZGF0ZVBpY2tlciB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG5cbiAgICAmLFxuICAgICYgPiBpbnB1dCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB9XG59XG5cbi5teF9KdW1wVG9EYXRlUGlja2VyX3N1Ym1pdEJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSDFoGltb24gQnJhbmRuZXIgPHNpbW9uLmJyYS5hZ0BnbWFpbC5jb20+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0xlZ2FjeUNhbGxFdmVudF93cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLm14X0xlZ2FjeUNhbGxFdmVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6ICRzcGFjaW5nLTQgMDtcblxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbjogJHNwYWNpbmctNCAwO1xuICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy0xMiAkc3BhY2luZy0yNDtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRhcmstcGFuZWwtYmctY29sb3I7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgd2lkdGg6IDY1JTtcbiAgICAgICAgaGVpZ2h0OiBmaXQtY29udGVudDtcblxuICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X2ljb25CdXR0b24ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9zaWxlbmNlOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy92b2lwL3NpbGVuY2Uuc3ZnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF91blNpbGVuY2U6OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL3ZvaXAvdW4tc2lsZW5jZS5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0xlZ2FjeUNhbGxFdmVudF92b2ljZSB7XG4gICAgICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X3R5cGVfaWNvbjo6YmVmb3JlLFxuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9jb250ZW50X2J1dHRvbl9jYWxsQmFjayBzcGFuOjpiZWZvcmUsXG4gICAgICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X2NvbnRlbnRfYnV0dG9uX2Fuc3dlciBzcGFuOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jYWxsL3ZvaWNlLWNhbGwuc3ZnXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0xlZ2FjeUNhbGxFdmVudF9yZWplY3RlZCxcbiAgICAgICAgICAgICYubXhfTGVnYWN5Q2FsbEV2ZW50X25vQW5zd2VyIHtcbiAgICAgICAgICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X3R5cGVfaWNvbjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvaGFuZ3VwLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0xlZ2FjeUNhbGxFdmVudF92aWRlbyB7XG4gICAgICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X3R5cGVfaWNvbjo6YmVmb3JlLFxuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9jb250ZW50X2J1dHRvbl9jYWxsQmFjayBzcGFuOjpiZWZvcmUsXG4gICAgICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X2NvbnRlbnRfYnV0dG9uX2Fuc3dlciBzcGFuOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jYWxsL3ZpZGVvLWNhbGwuc3ZnXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0xlZ2FjeUNhbGxFdmVudF9yZWplY3RlZCxcbiAgICAgICAgICAgICYubXhfTGVnYWN5Q2FsbEV2ZW50X25vQW5zd2VyIHtcbiAgICAgICAgICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X3R5cGVfaWNvbjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy92b2lwL2RlY2xpbmVkLXZpZGVvLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0xlZ2FjeUNhbGxFdmVudF9taXNzZWQge1xuICAgICAgICAgICAgJi5teF9MZWdhY3lDYWxsRXZlbnRfdm9pY2Uge1xuICAgICAgICAgICAgICAgIC5teF9MZWdhY3lDYWxsRXZlbnRfdHlwZV9pY29uOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL3ZvaXAvbWlzc2VkLXZvaWNlLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfTGVnYWN5Q2FsbEV2ZW50X3ZpZGVvIHtcbiAgICAgICAgICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X3R5cGVfaWNvbjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy92b2lwL21pc3NlZC12aWRlby5zdmdcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9pbmZvIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9pbmZvX2Jhc2ljIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgZ2FwOiAkc3BhY2luZy00O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OyAvKiBUbyBtYXRjaCBteF9MZWdhY3lDYWxsRXZlbnQgKi9cbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuXG4gICAgICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9zZW5kZXIge1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctNDtcblxuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X3R5cGUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTEzcHg7XG5cbiAgICAgICAgICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF90eXBlX2ljb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxM3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEzcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEzcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEzcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9jb250ZW50IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgICAgIGdhcDogJHNwYWNpbmctMTI7IC8qIFNlZSBteF9JbmNvbWluZ0xlZ2FjeUNhbGxUb2FzdF9idXR0b25zICovXG4gICAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiA0MnB4OyAvKiBhdmF0YXIgKDMycHgpICsgbXhfTGVnYWN5Q2FsbEV2ZW50X2luZm9fYmFzaWMgbWFyZ2luICgxMHB4KSAqL1xuICAgICAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgICAgICAgIG1heC13aWR0aDogZml0LWNvbnRlbnQ7XG5cbiAgICAgICAgICAgIC5teF9MZWdhY3lDYWxsRXZlbnRfY29udGVudF9idXR0b24ge1xuICAgICAgICAgICAgICAgIEBtaXhpbiBMZWdhY3lDYWxsQnV0dG9uO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgJHNwYWNpbmctMTI7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuXG4gICAgICAgICAgICAgICAgc3Bhbjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9MZWdhY3lDYWxsRXZlbnRfY29udGVudF9idXR0b25fcmVqZWN0IHtcbiAgICAgICAgICAgICAgICBzcGFuOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC9oYW5ndXAuc3ZnXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9jb250ZW50X3Rvb2x0aXAge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9MZWdhY3lDYWxsRXZlbnRfbmFycm93IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogdW5zZXQ7XG4gICAgICAgICAgICBnYXA6ICRzcGFjaW5nLTQgJHNwYWNpbmctMTY7XG4gICAgICAgICAgICBoZWlnaHQ6IHVuc2V0O1xuICAgICAgICAgICAgbWluLXdpZHRoOiAyOTBweDtcblxuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9pY29uQnV0dG9uIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIHRvcDogMTJweDtcbiAgICAgICAgICAgICAgICByaWdodDogMTJweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF9pbmZvIHtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogdW5zZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9FdmVudFRpbGVbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0ge1xuICAgIC5teF9FdmVudFRpbGVfZTJlSWNvbiArIC5teF9MZWdhY3lDYWxsRXZlbnRfd3JhcHBlciB7XG4gICAgICAgIC5teF9MZWdhY3lDYWxsRXZlbnQge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAvKiA1cHggKGdhcCkgKyAxNHB4IChlMmUgaWNvbiBzaXplICogbWFzay1zaXplKSArIDlweCAobWFyZ2luLWxlZnQgb2YgZTJlIGljb24pICovXG4gICAgICAgICAgICByaWdodDogY2FsYyg1cHggKyAxNHB4ICsgOXB4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0V2ZW50VGlsZV9sZWZ0QWxpZ25lZEJ1YmJsZSB7XG4gICAgLm14X0xlZ2FjeUNhbGxFdmVudF93cmFwcGVyIHtcbiAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudCB7XG4gICAgICAgICAgICAmLm14X0xlZ2FjeUNhbGxFdmVudF9uYXJyb3cge1xuICAgICAgICAgICAgICAgIGdhcDogJHNwYWNpbmctOCAkc3BhY2luZy00O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfSVJDTGF5b3V0IHtcbiAgICAubXhfTGVnYWN5Q2FsbEV2ZW50X3dyYXBwZXIge1xuICAgICAgICAubXhfTGVnYWN5Q2FsbEV2ZW50IHtcbiAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICRzcGFjaW5nLTQ7IC8qIGRpc3BsYXkgZ3JlZW4gbGluZSAqL1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3IFZlY3RvciBDcmVhdGlvbnMgTHRkLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NRW1vdGVCb2R5IHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG59XG5cbi5teF9NRW1vdGVCb2R5X3NlbmRlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1IC0gMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NRmlsZUJvZHlfZG93bmxvYWQge1xuICAgIGNvbG9yOiAkYWNjZW50O1xuXG4gICAgLm14X01GaWxlQm9keV9kb3dubG9hZF9pY29uIHtcbiAgICAgICAgLyogMTJweCBpbnN0ZWFkIG9mIDE0cHggdG8gYmV0dGVyIG1hdGNoIHN1cnJvdW5kaW5nIGZvbnQgc2l6ZSAqL1xuICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgICBtYXNrLXNpemU6IDEycHg7XG5cbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2Rvd25sb2FkLnN2Z1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbn1cblxuLm14X01GaWxlQm9keV9kb3dubG9hZCBhIHtcbiAgICBjb2xvcjogJGFjY2VudDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXhfTUZpbGVCb2R5X2Rvd25sb2FkIG9iamVjdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xNnB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAgICBtYXJnaW4tdG9wOiAtNHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8qIFJlbW92ZSB0aGUgYm9yZGVyIGFuZCBwYWRkaW5nIGZvciBpZnJhbWVzIGZvciBkb3dubG9hZCBsaW5rcy4gKi9cbi5teF9NRmlsZUJvZHlfZG93bmxvYWQgaWZyYW1lIHtcbiAgICBtYXJnaW46IDBweDtcbiAgICBwYWRkaW5nOiAwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC8qIFNldCB0aGUgaGVpZ2h0IG9mIHRoZSBpZnJhbWUgdG8gYmUgMSBsaW5lIG9mIHRleHQuXG4gICAgICogSWZyYW1lcyBkb24ndCBhdXRvbWF0aWNhbGx5IHNpemUgdGhlbXNlbHZlcyB0byBmaXQgdGhlaXIgY29udGVudC5cbiAgICAgKiBTbyBlaXRoZXIgd2UgaGF2ZSB0byBmaXggdGhlIGhlaWdodCBvZiB0aGUgaWZyYW1lIHVzaW5nIENTUyBvclxuICAgICAqIHVzZSBqYXZhc2NyaXB0J3MgY3Jvc3Mtb3JpZ2luIHBvc3RNZXNzYWdlIEFQSSB0byBjb21tdW5pY2F0ZSBob3dcbiAgICAgKiBiaWcgdGhlIGNvbnRlbnQgb2YgdGhlIGlmcmFtZSBpcy4gKi9cbiAgICBoZWlnaHQ6IDEuNWVtO1xufVxuXG4ubXhfTUZpbGVCb2R5X2luZm8ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIC5teF9NRmlsZUJvZHlfaW5mb19pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vY29tcG9zZXIvYXR0YWNoLnN2Z1wiKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNXB4O1xuXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDhweDtcbiAgICAgICAgICAgIGxlZnQ6IDhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9NRmlsZUJvZHlfaW5mb19maWxlbmFtZSB7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzMnB4IC0gMTJweCk7IC8qIDMycHggaWNvbiwgMTJweCBtYXJnaW4gb24gdGhlIGljb24gKi9cbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01JbWFnZUJvZHlfYmFubmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAkc3BhY2luZy00O1xuICAgIGxlZnQ6ICRzcGFjaW5nLTQ7XG4gICAgcGFkZGluZzogJHNwYWNpbmctNDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1NQm9keS1ib3JkZXItcmFkaXVzKTtcbiAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7IC8qIHByZXZlbnQgYmFubmVyIHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZCAqL1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvKiBsZXQgdGhlIGN1cnNvciBnbyB0aHJvdWdoIHRvIHRoZSBtZWRpYSB1bmRlcm5lYXRoICovXG5cbiAgICAvKiBUcnlpbmcgdG8gbWF0Y2ggdGhlIHdpZHRoIG9mIHRoZSBpbWFnZSBpcyBzdXJwcmlzaW5nbHkgZGlmZmljdWx0LCBzbyBhcmJpdHJhcmlseSBicmVhayBpdCBvZmYgZWFybHkuICovXG4gICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgMzUwcHgpO1xuXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLyogSGFyZGNvZGVkIGNvbG91cnMgYmVjYXVzZSBpdCdzIHRoZSBzYW1lIG9uIGFsbCB0aGVtZXMgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgY29sb3I6ICNmZmZmZmY7XG59XG5cbi5teF9NSW1hZ2VCb2R5X3BsYWNlaG9sZGVyIHtcbiAgICAvKiBQb3NpdGlvbiB0aGUgcGxhY2Vob2xkZXIgb24gdG9wIG9mIHRoZSB0aHVtYm5haWwsIHNvIHRoYXQgdGhlIHJldmVhbCBhbmltYXRpb24gY2FuIHdvcmsgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG5cbiAgICAubXhfQmx1cmhhc2ggPiBjYW52YXMge1xuICAgICAgICBhbmltYXRpb246IG14LS1hbmltLXB1bHNlIDEuNzVzIGluZmluaXRlIGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7XG4gICAgfVxufVxuXG4ubXhfTUltYWdlQm9keV90aHVtYm5haWxfY29udGFpbmVyIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1NQm9keS1ib3JkZXItcmFkaXVzKTtcblxuICAgIC8qIE5lY2Vzc2FyeSBmb3IgdGhlIGJvcmRlciByYWRpdXMgdG8gYXBwbHkgY29ycmVjdGx5IHRvIHRoZSBwbGFjZWhvbGRlciAqL1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgY29udGFpbjogcGFpbnQ7XG59XG5cbi5teF9NSW1hZ2VCb2R5X3RodW1ibmFpbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAvKiBGb3JjZSB0aGUgaW1hZ2UgdG8gYmUgdGhlIGZ1bGwgc2l6ZSBvZiB0aGUgY29udGFpbmVyLCBldmVuIGlmIHRoZSAqL1xuICAgIC8qIHBpeGVsIHNpemUgaXMgc21hbGxlci4gVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IHdlIGRvbid0IGtub3cgd2hhdCAqL1xuICAgIC8qIHRodW1ibmFpbCBzaXplIHRoZSBIUyBpcyBnb2luZyB0byBnaXZlIHVzLCBidXQgd2UgaGF2ZSB0byBjb21taXQgdG8gKi9cbiAgICAvKiBhIGNvbnRhaW5lciBzaXplIGltbWVkaWF0ZWx5IGFuZCBub3QgY2hhbmdlIGl0IHdoZW4gdGhlIGltYWdlIGxvYWRzICovXG4gICAgLyogb3Igd2UnbGwgZ2V0IGEgc2Nyb2xsIGp1bXAgKG9yIGhhdmUgdG8gbGVhdmUgYmxhbmsgc3BhY2UpLiAqL1xuICAgIC8qIFRoaXMgd2lsbCBvYnZpb3VzbHkgcmVzdWx0IGluIGFuIHVwc2NhbGVkIGltYWdlIHdoaWNoIHdpbGwgYmUgYSBiaXQgKi9cbiAgICAvKiBibHVycnkuIFRoZSBiZXN0IGZpeCB3b3VsZCBiZSBmb3IgdGhlIEhTIHRvIGFkdmVydGlzZSB3aGF0IHNpemUgdGh1bWJuYWlscyAqL1xuICAgIC8qIGl0IGd1YXJhbnRlZXMgdG8gcHJvZHVjZS4gKi9cbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5teF9NSW1hZ2VCb2R5X2dpZkxhYmVsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdG9wOiAwcHg7XG4gICAgbGVmdDogMTRweDtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJhY2tncm91bmQ6ICRpbWFnZWJvZHktZ2lmbGFiZWw7XG4gICAgYm9yZGVyOiAycHggc29saWQgJGltYWdlYm9keS1naWZsYWJlbC1ib3JkZXI7XG4gICAgY29sb3I6ICRpbWFnZWJvZHktZ2lmbGFiZWwtY29sb3I7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5teF9IaWRkZW5JbWFnZVBsYWNlaG9sZGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG5cbiAgICAvKiBUbyBjZW50ZXIgdGhlIHRleHQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZnJhbWUgKi9cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG5cbiAgICAubXhfSGlkZGVuSW1hZ2VQbGFjZWhvbGRlcl9idXR0b24ge1xuICAgICAgICBjb2xvcjogJGFjY2VudDtcblxuICAgICAgICBzcGFuLm14X0hpZGRlbkltYWdlUGxhY2Vob2xkZXJfZXllIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvZXllLnN2Z1wiKTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgc3Bhbjpub3QoLm14X0hpZGRlbkltYWdlUGxhY2Vob2xkZXJfZXllKSB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9FdmVudFRpbGU6aG92ZXIgLm14X0hpZGRlbkltYWdlUGxhY2Vob2xkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFR1bGlyIEFzb2thbiA8dHVsaXJAbWF1bml1bS5uZXQ+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01JbWFnZVJlcGx5Qm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBjb2x1bW4tZ2FwOiAkc3BhY2luZy00O1xuXG4gICAgLm14X01JbWFnZUJvZHlfdGh1bWJuYWlsX2NvbnRhaW5lciB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDsgLyogUHJldmVudCBhIGJsb3dvdXQgKi9cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRXZlbnRUaWxlQnViYmxlLm14X01KaXRzaVdpZGdldEV2ZW50IHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLXBhbmVsLXRleHQtcHJpbWFyeS1jb2xvcjsgLyogWFhYOiBWYXJpYWJsZSBhYnVzZSAqL1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC92aWRlby1jYWxsLnN2Z1wiKTtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTUxvY2F0aW9uQm9keSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgLm14X01Mb2NhdGlvbkJvZHlfbWFwIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB3aWR0aDogNDUwcHg7XG4gICAgICAgIGhlaWdodDogMzAwcHg7XG4gICAgICAgIHotaW5kZXg6IDA7IC8qIGtlZXBzIHRoZSBlbnRpcmUgbWFwIHVuZGVyIHRoZSBtZXNzYWdlIGFjdGlvbiBiYXIgKi9cblxuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1NQm9keS1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLyogSW4gdGhlIHRpbWVsaW5lLCB3ZSBmaXQgdGhlIHdpZHRoIG9mIHRoZSBjb250YWluZXIgKi9cbi5teF9FdmVudFRpbGVfbGluZSAubXhfTUxvY2F0aW9uQm9keSAubXhfTUxvY2F0aW9uQm9keV9tYXAge1xuICAgIG1heC13aWR0aDogNDUwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5teF9FdmVudFRpbGVbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0gLm14X0V2ZW50VGlsZV9saW5lIC5teF9NTG9jYXRpb25Cb2R5IC5teF9NTG9jYXRpb25Cb2R5X21hcCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHdpZHRoOiA0NTBweDtcbn1cblxuLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlIH4gLm14X01Mb2NhdGlvbkJvZHkge1xuICAgIG1hcmdpbi10b3A6IDZweDsgLyogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbWF0cml4LW9yZy9tYXRyaXgtcmVhY3Qtc2RrL3B1bGwvODQ0MiAqL1xufVxuXG4ubXhfUmVwbHlUaWxlIC5teF9NTG9jYXRpb25Cb2R5IHtcbiAgICAvKiBQcmV2ZW50IGNsaWNraW5nIGEgbG9jYXRpb24gd2l0aGluIGEgcmVwbHkgKi9cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NTm90aWNlQm9keSB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NUG9sbEJvZHkge1xuICAgIG1hcmdpbi10b3A6IDhweDtcblxuICAgIGgyIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuXG4gICAgICAgIC5teF9NUG9sbEJvZHlfZWRpdGVkIHtcbiAgICAgICAgICAgIGNvbG9yOiAkcm9vbXRvcGljLWNvbG9yO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaDI6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgICAgIHRvcDogM3B4O1xuICAgICAgICBsZWZ0OiAzcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2NvbXBvc2VyL3BvbGwuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9NUG9sbEJvZHlfdG90YWxWb3RlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBpbmxpbmU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcblxuICAgICAgICAubXhfU3Bpbm5lciB7XG4gICAgICAgICAgICBmbGV4OiAwO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nLTg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIFByZXZlbnQgY2xpY2tpbmcgYSBwb2xsIHdpdGhpbiBhIHJlcGx5ICovXG4ubXhfUmVwbHlUaWxlIC5teF9NUG9sbEJvZHkge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubXhfTVBvbGxCb2R5X2FsbE9wdGlvbnMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC1nYXA6ICRzcGFjaW5nLTE2O1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTg7XG4gICAgbWF4LXdpZHRoOiA1NTBweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NUG9sbEVuZEJvZHlfaWNvbiB7XG4gICAgaGVpZ2h0OiAxNHB4O1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctODtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTggTmV3IFZlY3RvciBMdGQuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01TdGlja2VyQm9keV93cmFwcGVyIHtcbiAgICBwYWRkaW5nOiAxMnB4IDBweDtcbn1cblxuLm14X01TdGlja2VyQm9keV90b29sdGlwIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG59XG5cbi5teF9NU3RpY2tlckJvZHlfaGlkZGVuIHtcbiAgICBtYXgtd2lkdGg6IDIyMHB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAvKiBUbyBjZW50ZXIgdGhlIHRleHQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZnJhbWUgKi9cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5teF9NU3RpY2tlckJvZHlfcGxhY2Vob2xkZXIge1xuICAgIC8qIGNlbnRlcmluZyAqL1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiBjYWxjKDUwJSAtIDQwcHgpO1xuICAgIHRvcDogY2FsYyg1MCUgLSA0MHB4KTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NVGV4dEJvZHkge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCAtIDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5zcGFuLm14X01WaWRlb0JvZHkge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAubXhfTVZpZGVvQm9keV9jb250YWluZXIge1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1NQm9keS1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICB2aWRlbyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi8qIEEgXCJtZWRpYSBib2R5XCIgaXMgYW55IGZpbGUgdXBsb2FkIGxvb2tpbmcgdGhpbmcsIGFwYXJ0IGZyb20gaW1hZ2VzIGFuZCB2aWRlb3MgKHRoZXkgKi9cbi8qIGhhdmUgdW5pcXVlIHN0eWxlcykuICovXG5cbi5teF9NZWRpYUJvZHkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBtYXgtd2lkdGg6IDI0M3B4OyAvKiB1c2UgbWF4LXdpZHRoIGluc3RlYWQgb2Ygd2lkdGggc28gaXQgZml0cyB3aXRoaW4gcmlnaHQgcGFuZWxzICovXG5cbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcblxuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NZXNzYWdlQWN0aW9uQmFyIHtcbiAgICAtLU1lc3NhZ2VBY3Rpb25CYXItc2l6ZS1idXR0b246IDI4cHg7XG4gICAgLS1NZXNzYWdlQWN0aW9uQmFyLXNpemUtYm94OiAzMnB4OyAvKiAyOHB4ICsgMnB4IChtYXJnaW4pICogMiAqL1xuICAgIC0tTWVzc2FnZUFjdGlvbkJhci1pdGVtLWhvdmVyLWJhY2tncm91bmQ6ICRwYW5lbC1hY3Rpb25zO1xuICAgIC0tTWVzc2FnZUFjdGlvbkJhci1pdGVtLWhvdmVyLWJvcmRlclJhZGl1czogNnB4O1xuICAgIC0tTWVzc2FnZUFjdGlvbkJhci1pdGVtLWhvdmVyLXpJbmRleDogMTtcbiAgICAtLU1lc3NhZ2VBY3Rpb25CYXItc3Rhci1idXR0b24tY29sb3I6ICNmZmE1MzQ7XG5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGhlaWdodDogdmFyKC0tTWVzc2FnZUFjdGlvbkJhci1zaXplLWJveCk7XG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gICAgdG9wOiAtMzJweDtcbiAgICByaWdodDogOHB4O1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIC8qIEVuc3VyZSB0aGUgYWN0aW9uIGJhciBhcHBlYXJzIGFib3ZlIG90aGVyIHRoaW5ncyBsaWtlIHRoZSByZWFkIG1hcmtlciAqL1xuICAgIC8qIGFuZCBzZW5kZXIgYXZhdGFyIChmb3Igc21hbGwgc2NyZWVucykgKi9cbiAgICB6LWluZGV4OiAxMDtcblxuICAgIC8qIEFkZHMgYSBwcmV2aW91cyBldmVudCBzYWZlIGFyZWEgc28gdGhhdCB5b3UgY2FuJ3QgYWNjaWRlbnRhbGx5IGhvdmVyIHRoZSAqL1xuICAgIC8qIHByZXZpb3VzIGV2ZW50IHdoaWxlIHRyeWluZyB0byBtb3VzZSBpbnRvIHRoZSBhY3Rpb24gYmFyIG9yIGZyb20gdGhlICovXG4gICAgLyogcmVhY3QgYnV0dG9uIHRvIGl0cyB0b29sdGlwLiAqL1xuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgLyogdG9vbHRpcCBzYWZlIG1vdXNpbmcgYXJlYSArIHRvb2x0aXAgb3ZlcmhhbmcgKyAqL1xuICAgICAgICAvKiBhY3Rpb24gYmFyICsgYWN0aW9uIGJhciBvZmZzZXQgZnJvbSBldmVudCAqL1xuICAgICAgICB3aWR0aDogY2FsYygxMHB4ICsgNDhweCArIDEwMCUgKyA4cHgpO1xuICAgICAgICAvKiBzYWZlIGFyZWEgKyBhY3Rpb24gYmFyICovXG4gICAgICAgIGhlaWdodDogY2FsYygyMHB4ICsgMTAwJSk7XG4gICAgICAgIHRvcDogLTEycHg7XG4gICAgICAgIGxlZnQ6IC01OHB4O1xuICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgY3Vyc29yOiBpbml0aWFsO1xuXG4gICAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGluZS1sZW5ndGggKi9cbiAgICAgICAgLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5W2RhdGEtbGF5b3V0PVwiYnViYmxlXCJdXG4gICAgICAgICAgICAubXhfR2VuZXJpY0V2ZW50TGlzdFN1bW1hcnlfdG9nZ2xlXG4gICAgICAgICAgICB+IC5teF9HZW5lcmljRXZlbnRMaXN0U3VtbWFyeV91bnN0eWxlZExpc3RcbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfaW5mbzpmaXJzdC1vZi10eXBlXG4gICAgICAgICAgICAmIHtcbiAgICAgICAgICAgIC8qIGltcHJvdmUgY2xpY2thYmlsaXR5IG9mIFwiY29sbGFwc2VcIiBsaW5rIGJ1dHRvbiBvbiBidWJibGUgbGF5b3V0IGJ5IHJlZHVjaW5nIHdpZHRoIGFuZCBoZWlnaHQgdmFsdWVzICovXG4gICAgICAgICAgICAvKiBteF9HZW5lcmljRXZlbnRMaXN0U3VtbWFyeV90b2dnbGUgfjogdG8gYXBwbHkgcnVsZXMgdG8gYWN0aW9uIGJhciB3aGVuIFwiY29sbGFwc2VcIiBidXR0b24gaXMgYXZhaWxhYmxlICovXG4gICAgICAgICAgICAvKiBteF9FdmVudFRpbGVfaW5mbzpmaXJzdC1vZi10eXBlOiB0byBhcHBseSBydWxlcyB0byB0aGUgaW5mbyBldmVudCB0aWxlIGp1c3QgdW5kZXIgXCJjb2xsYXBzZVwiIGJ1dHRvbiAqL1xuICAgICAgICAgICAgLyogVE9ETzogdXNlIGEgbmV3IGNsYXNzIG5hbWUgaW5zdGVhZCAqL1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9pbmZvIC5teF9WaWV3U291cmNlRXZlbnQgfiAmIHtcbiAgICAgICAgICAgIC8qIGltcHJvdmUgY2xpY2thYmlsaXR5IG9mIHZpZXcgc291cmNlIGV2ZW50IHRvZ2dsZSBidXR0b24gYnkgcmVtb3ZpbmcgdmVydGljYWwgc2FmZSBhcmVhICovXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICA+ICoge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAycHg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1NZXNzYWdlQWN0aW9uQmFyLWl0ZW0taG92ZXItYmFja2dyb3VuZCk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1NZXNzYWdlQWN0aW9uQmFyLWl0ZW0taG92ZXItYm9yZGVyUmFkaXVzKTtcbiAgICAgICAgICAgIHotaW5kZXg6IHZhcigtLU1lc3NhZ2VBY3Rpb25CYXItaXRlbS1ob3Zlci16SW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VBY3Rpb25CYXJfaWNvbkJ1dHRvbiB7XG4gICAgICAgIC0tTWVzc2FnZUFjdGlvbkJhci1pY29uLXNpemU6IDE4cHg7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1NZXNzYWdlQWN0aW9uQmFyLXNpemUtYnV0dG9uKTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1NZXNzYWdlQWN0aW9uQmFyLXNpemUtYnV0dG9uKTtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tTWVzc2FnZUFjdGlvbkJhci1pY29uLXNpemUpO1xuICAgICAgICAgICAgd2lkdGg6IHZhcigtLU1lc3NhZ2VBY3Rpb25CYXItaWNvbi1zaXplKTtcbiAgICAgICAgICAgIGZsZXg6IDAgMCB2YXIoLS1NZXNzYWdlQWN0aW9uQmFyLWljb24tc2l6ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmRpc2FibGVkLFxuICAgICAgICAmW2Rpc2FibGVkXSB7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICAgICAgb3BhY2l0eTogMC43NTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X01lc3NhZ2VBY3Rpb25CYXJfZmF2b3VyaXRlQnV0dG9uX2ZpbGxzdGFyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1NZXNzYWdlQWN0aW9uQmFyLXN0YXItYnV0dG9uLWNvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfTWVzc2FnZUFjdGlvbkJhcl9kb3dubG9hZEJ1dHRvbiB7XG4gICAgICAgICAgICAtLU1lc3NhZ2VBY3Rpb25CYXItaWNvbi1zaXplOiAxNHB4O1xuXG4gICAgICAgICAgICAmLm14X01lc3NhZ2VBY3Rpb25CYXJfZG93bmxvYWRTcGlubmVyQnV0dG9uIHtcbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lOyAvKiBoaWRlIHRoZSBkb3dubG9hZCBpY29uICovXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9NZXNzYWdlQWN0aW9uQmFyX2V4cGFuZENvbGxhcHNlTWVzc2FnZUJ1dHRvbiB7XG4gICAgICAgICAgICAtLU1lc3NhZ2VBY3Rpb25CYXItaWNvbi1zaXplOiAxMnB4O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuOnJvb3Qge1xuICAgIC0tTWVzc2FnZVRpbWVzdGFtcC13aWR0aDogNDZweDsgLyogOCArIDMwIChhdmF0YXIpICsgOCAqL1xuICAgIC0tTWVzc2FnZVRpbWVzdGFtcC1tYXgtd2lkdGg6IDgwcHg7XG4gICAgLS1NZXNzYWdlVGltZXN0YW1wLWNvbG9yOiAkZXZlbnQtdGltZXN0YW1wLWNvbG9yO1xufVxuXG4ubXhfTWVzc2FnZVRpbWVzdGFtcCB7XG4gICAgY29sb3I6IHZhcigtLU1lc3NhZ2VUaW1lc3RhbXAtY29sb3IpO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTBweDtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIGRpc3BsYXk6IGJsb2NrOyAvKiBlbmFibGUgdGhlIHdpZHRoIHNldHRpbmcgYmVsb3cgKi9cbiAgICB3aWR0aDogdmFyKC0tTWVzc2FnZVRpbWVzdGFtcC13aWR0aCk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Nam9sbmlyQm9keSB7XG4gICAgb3BhY2l0eTogMC40O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1JlYWN0aW9uc1JvdyB7XG4gICAgbWFyZ2luOiA2cHggMDtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcblxuICAgIC5teF9SZWFjdGlvbnNSb3dfYWRkUmVhY3Rpb25CdXR0b24ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOyAvKiBzaG93IG9uIGhvdmVyIG9mIHRoZSAubXhfRXZlbnRUaWxlICovXG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXNrLXNpemU6IDE2cHg7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9tZXNzYWdlLWJhci9lbW9qaS5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X1JlYWN0aW9uc1Jvd19hZGRSZWFjdGlvbkJ1dHRvbl9hY3RpdmUge1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsgLyoga2VlcCBzaG93aW5nIHdoaWxzdCB0aGUgY29udGV4dCBtZW51IGlzIHNob3duICovXG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmLm14X1JlYWN0aW9uc1Jvd19hZGRSZWFjdGlvbkJ1dHRvbl9hY3RpdmUge1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfRXZlbnRUaWxlOmhvdmVyIC5teF9SZWFjdGlvbnNSb3dfYWRkUmVhY3Rpb25CdXR0b24ge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG5cbi5teF9SZWFjdGlvbnNSb3dfc2hvd0FsbCB7XG4gICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfbGlua19pbmxpbmUge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMHB4O1xuICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAkc3BhY2luZy00O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUmVhY3Rpb25zUm93QnV0dG9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMjBweDtcbiAgICBwYWRkaW5nOiAxcHggNnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRtZXNzYWdlLWFjdGlvbi1iYXItYm9yZGVyLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICRyZWFjdGlvbi1yb3ctYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm14X1JlYWN0aW9uc1Jvd0J1dHRvbl9zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyZWFjdGlvbi1yb3ctYnV0dG9uLXNlbGVjdGVkLWJnLWNvbG9yO1xuICAgICAgICBib3JkZXItY29sb3I6ICRhY2NlbnQ7XG4gICAgfVxuXG4gICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2Rpc2FibGVkIHtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG5cbiAgICAubXhfUmVhY3Rpb25zUm93QnV0dG9uX2NvbnRlbnQge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgcGFkZGluZy1yaWdodDogNHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1JlZGFjdGVkQm9keSB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgIGNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL3RyYXNoLmN1c3RvbS5zdmdcIik7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMXB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNyBWZWN0b3IgQ3JlYXRpb25zIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Sb29tQXZhdGFyRXZlbnQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG59XG5cbi5teF9Sb29tQXZhdGFyRXZlbnRfYXZhdGFyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogNXB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1RleHR1YWxFdmVudCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLm14X1Jvb21WaWV3X3NlYXJjaFJlc3VsdHNQYW5lbCAmIHtcbiAgICAgICAgb3BhY2l0eTogdW5zZXQ7IC8qIFVuc2V0IHRoZSBvcGFjaXR5IHZhbHVlIHNwZWNpZmllZCBhYm92ZSBvbiB0aGUgc2VhcmNoIHJlc3VsdHMgcGFuZWwgKi9cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVW5rbm93bkJvZHkge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9FdmVudFRpbGVfY29udGVudC5teF9WaWV3U291cmNlRXZlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgb3BhY2l0eTogMC42O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBhdXRvOyAvKiBDYW5jZWwgb3ZlcmZsb3cgc2V0dGluZyBvZiAubXhfRXZlbnRUaWxlX2NvbnRlbnQgKi9cbiAgICBsaW5lLWhlaWdodDogbm9ybWFsOyAvKiBBbGlnbiB3aXRoIGF2YXRhciBhbmQgRTJFIGljb24gKi9cblxuICAgIHByZSxcbiAgICBjb2RlIHtcbiAgICAgICAgZmxleDogMTtcbiAgICB9XG5cbiAgICBwcmUge1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICBtYXJnaW46IDMuNXB4IDA7XG4gICAgfVxuXG4gICAgLm14X1ZpZXdTb3VyY2VFdmVudF90b2dnbGUge1xuICAgICAgICAtLVZpZXdTb3VyY2VFdmVudF90b2dnbGUtc2l6ZTogMTJweDtcblxuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIC8qIG92ZXJyaWRlIHN0eWxlcyBmcm9tIEFjY2Vzc2libGVCdXR0b24gKi9cbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgLyogaWNvbiAqL1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiAwIGNlbnRlcjtcbiAgICAgICAgbWFzay1zaXplOiBhdXRvIHZhcigtLVZpZXdTb3VyY2VFdmVudF90b2dnbGUtc2l6ZSk7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1WaWV3U291cmNlRXZlbnRfdG9nZ2xlLXNpemUpO1xuICAgICAgICBtaW4td2lkdGg6IHZhcigtLVZpZXdTb3VyY2VFdmVudF90b2dnbGUtc2l6ZSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9tYXhpbWlzZS1leHBhbmQuc3ZnXCIpO1xuXG4gICAgICAgIC5teF9FdmVudFRpbGU6aG92ZXIgJiB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9WaWV3U291cmNlRXZlbnRfZXhwYW5kZWQgLm14X1ZpZXdTb3VyY2VFdmVudF90b2dnbGUge1xuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1WaWV3U291cmNlRXZlbnRfdG9nZ2xlLXNpemUpO1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiAwIGJvdHRvbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbWluaW1pc2UtY29sbGFwc2Uuc3ZnXCIpO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSwgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9FdmVudFRpbGVCdWJibGUubXhfY3J5cHRvRXZlbnQge1xuICAgIG1hcmdpbjogdmFyKC0tRXZlbnRUaWxlQnViYmxlX21hcmdpbi1ibG9jaykgYXV0bztcblxuICAgIC8qIHdoaXRlIGluZmlsbCBmb3IgdGhlIHRyYW5zcGFyZW5jeSAqL1xuICAgICYubXhfY3J5cHRvRXZlbnRfaWNvbjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lMmUvbm9ybWFsLnN2Z1wiKTtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBtYXNrLXNpemU6IDgwJTtcbiAgICB9XG5cbiAgICAmLm14X2NyeXB0b0V2ZW50X2ljb246OmFmdGVyIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lMmUvbm9ybWFsLnN2Z1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC10ZXh0LXByaW1hcnktY29sb3I7XG4gICAgfVxuXG4gICAgJi5teF9jcnlwdG9FdmVudF9pY29uX3ZlcmlmaWVkOjphZnRlciB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZTJlL3ZlcmlmaWVkLnN2Z1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICB9XG5cbiAgICAmLm14X2NyeXB0b0V2ZW50X2ljb25fd2FybmluZzo6YWZ0ZXIge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2UyZS93YXJuaW5nLnN2Z1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGUyZS13YXJuaW5nLWNvbG9yO1xuICAgIH1cblxuICAgIC5teF9jcnlwdG9FdmVudF9zdGF0ZSxcbiAgICAubXhfY3J5cHRvRXZlbnRfYnV0dG9ucyB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAzO1xuICAgICAgICBncmlkLXJvdzogMSAvIDM7XG4gICAgfVxuXG4gICAgLm14X2NyeXB0b0V2ZW50X2J1dHRvbnMge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDVweDtcbiAgICB9XG5cbiAgICAubXhfY3J5cHRvRXZlbnRfc3RhdGUge1xuICAgICAgICB3aWR0aDogMTMwcHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICAgICAgbWFyZ2luOiBhdXRvIDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1BvbGxIaXN0b3J5X2NvbnRlbnQge1xuICAgIGhlaWdodDogNjAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5teF9Qb2xsSGlzdG9yeV9oZWFkZXIubXhfSGVhZGluZ19oMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctMTY7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjMgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUG9sbEhpc3RvcnlMaXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuLm14X1BvbGxIaXN0b3J5TGlzdF9saXN0IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbi1ibG9jazogMDtcbiAgICBwYWRkaW5nLWlubGluZTogMDtcbiAgICBmbGV4OiAxIDEgMDtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC1nYXA6ICRzcGFjaW5nLTIwO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRzcGFjaW5nLTY0O1xuICAgIG1hcmdpbjogJHNwYWNpbmctMzIgMDtcblxuICAgICYubXhfUG9sbEhpc3RvcnlMaXN0X2xpc3RfRU5ERUQge1xuICAgICAgICBncmlkLWdhcDogJHNwYWNpbmctMzI7XG4gICAgfVxufVxuXG4ubXhfUG9sbEhpc3RvcnlMaXN0X25vUmVzdWx0cyB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZzogMCAkc3BhY2luZy02NDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMjRweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuXG4gICAgLm14X1BvbGxIaXN0b3J5TGlzdF9sb2FkTW9yZVBvbGxzIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMTY7XG4gICAgfVxufVxuXG4ubXhfUG9sbEhpc3RvcnlMaXN0X2xvYWRpbmcge1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLy8gY2VudGVyIGluIGFsbCBmcmVlIHNwYWNlXG4gICAgLy8gd2hlbiB0aGVyZSBhcmUgbm8gcmVzdWx0c1xuICAgICYubXhfUG9sbEhpc3RvcnlMaXN0X25vUmVzdWx0c1lldCB7XG4gICAgICAgIG1hcmdpbjogYXV0byBhdXRvO1xuICAgIH1cbn1cblxuLm14X1BvbGxIaXN0b3J5TGlzdF9sb2FkTW9yZVBvbGxzIHtcbiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQmFzZUNhcmQge1xuICAgIC0tQmFzZUNhcmRfcGFkZGluZy1pbmxpbmU6ICRzcGFjaW5nLTg7XG4gICAgLS1CYXNlQ2FyZF9FdmVudFRpbGVfbGluZS1wYWRkaW5nLWJsb2NrOiAycHg7XG4gICAgLS1CYXNlQ2FyZF9FdmVudFRpbGUtc3BhY2luZy1pbmxpbmU6IDM2cHg7XG4gICAgLS1CYXNlQ2FyZF9oZWFkZXItYnV0dG9uLXNpemU6IDI0cHg7XG5cbiAgICBwYWRkaW5nOiAwIHZhcigtLUJhc2VDYXJkX3BhZGRpbmctaW5saW5lKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4OiAxO1xuXG4gICAgLm14X0Jhc2VDYXJkX2hlYWRlciB7XG4gICAgICAgIC0tQmFzZUNhcmRfaGVhZGVyX2J1dHRvbi1tYXJnaW46ICRzcGFjaW5nLTEyO1xuXG4gICAgICAgIG1hcmdpbjogJHNwYWNpbmctNCAwICRzcGFjaW5nLTEyO1xuXG4gICAgICAgID4gaDIge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDQ0cHg7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9CYXNlQ2FyZF9iYWNrLFxuICAgICAgICAubXhfQmFzZUNhcmRfY2xvc2Uge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDEsIDE1MSwgMTY1LCAwLjIpO1xuICAgICAgICAgICAgd2lkdGg6IHZhcigtLUJhc2VDYXJkX2hlYWRlci1idXR0b24tc2l6ZSk7XG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLUJhc2VDYXJkX2hlYWRlci1idXR0b24tc2l6ZSk7XG4gICAgICAgICAgICBtYXJnaW46IHZhcigtLUJhc2VDYXJkX2hlYWRlcl9idXR0b24tbWFyZ2luKTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC10ZXh0LXByaW1hcnktY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQmFzZUNhcmRfYmFjayB7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogY2FsYyh2YXIoLS1CYXNlQ2FyZF9oZWFkZXJfYnV0dG9uLW1hcmdpbikgLSAkc3BhY2luZy00KTtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgICAgICAgICAgICAgbWFzay1zaXplOiAyMnB4O1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2NoZXZyb24tZG93bi5zdmdcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qIEhlYWRlciB0aXRsZSB3aXRoIHRoZSBiYWNrIGJ1dHRvbiAqL1xuICAgICAgICAgICAgfiAubXhfQmFzZUNhcmRfaGVhZGVyX3RpdGxlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNjBweCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tQmFzZUNhcmRfaGVhZGVyLWJ1dHRvbi1zaXplKTtcblxuICAgICAgICAgICAgICAgIC5teF9CYXNlQ2FyZF9oZWFkZXJfdGl0bGVfaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDZweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQmFzZUNhcmRfY2xvc2Uge1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogY2FsYyh2YXIoLS1CYXNlQ2FyZF9oZWFkZXJfYnV0dG9uLW1hcmdpbikgLSAkc3BhY2luZy00KTtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ljb25zLWNsb3NlLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IDhweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9CYXNlQ2FyZF9oZWFkZXJfdGl0bGUge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzhweCk7XG4gICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICBmbGV4OiAxO1xuXG4gICAgICAgICAgICAubXhfQmFzZUNhcmRfaGVhZGVyX3RpdGxlX2hlYWRpbmcge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfQmFzZUNhcmRfaGVhZGVyX3RpdGxlX2J1dHRvbi0tb3B0aW9uIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHZhcigtLUJhc2VDYXJkX2hlYWRlci1idXR0b24tc2l6ZSk7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1CYXNlQ2FyZF9oZWFkZXItYnV0dG9uLXNpemUpO1xuXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiAwO1xuICAgICAgICAgICAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL21lc3NhZ2Uvb3ZlcmZsb3ctbGFyZ2Uuc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9BdXRvSGlkZVNjcm9sbGJhciB7XG4gICAgICAgIC8qIGNvbGxhcHNlIHRoZSBtYXJnaW4gaW50byBhIHBhZGRpbmcgdG8gbW92ZSB0aGUgc2Nyb2xsYmFyIGludG8gdGhlIHJpZ2h0IGd1dHRlciAqL1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC04cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAubXhfQmFzZUNhcmRfR3JvdXAge1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTIwIDAgJHNwYWNpbmctMTY7XG5cbiAgICAgICAgJiA+ICoge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nLTEyO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy0xMjtcbiAgICAgICAgfVxuXG4gICAgICAgID4gaDIge1xuICAgICAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIG1hcmdpbjogJHNwYWNpbmctMTI7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQmFzZUNhcmRfQnV0dG9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogJHNwYWNpbmctMTI7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEzcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgICAgICAubXhfQmFzZUNhcmRfQnV0dG9uX3N1YmxhYmVsIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTQxLCAxNTEsIDE2NSwgMC4xKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9BY2Nlc3NpYmxlQnV0dG9uX2Rpc2FibGVkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkc3BhY2luZy0xMjtcbiAgICAgICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHVuc2V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9CYXNlQ2FyZF9mb290ZXIge1xuICAgICAgICBwYWRkaW5nLXRvcDogJHNwYWNpbmctNDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcblxuICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX3NlY29uZGFyeSB7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDEsIDE1MSwgMTY1LCAwLjIpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2Rpc2FibGVkIHtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9GaWxlUGFuZWwsXG4ubXhfVXNlckluZm8sXG4ubXhfTWVtYmVyTGlzdCB7XG4gICAgJi5teF9CYXNlQ2FyZCB7XG4gICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTMyIDAgMDtcblxuICAgICAgICAubXhfQXV0b0hpZGVTY3JvbGxiYXIge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiB1bnNldDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHVuc2V0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfQ29udGV4dHVhbE1lbnVfd3JhcHBlci5teF9CYXNlQ2FyZF9oZWFkZXJfdGl0bGUge1xuICAgIC5teF9Db250ZXh0dWFsTWVudSB7XG4gICAgICAgIHBvc2l0aW9uOiBpbml0aWFsO1xuXG4gICAgICAgIHNwYW46Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcblxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkcXVpbmFyeS1jb250ZW50O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMXB4IDNweCByZ2JhKDIzLCAyNSwgMjgsIDAuMDUpO1xuICAgIH1cblxuICAgIC5teF9Db250ZXh0dWFsTWVudV9jaGV2cm9uX3RvcCB7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHJpZ2h0OiAyMnB4O1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXI6IGluaGVyaXQ7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkbWVudS1iZy1jb2xvcjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMXB4O1xuICAgICAgICAgICAgbGVmdDogLThweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9FbmNyeXB0aW9uSW5mb19zcGlubmVyIHtcbiAgICAubXhfU3Bpbm5lciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgfVxuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Bpbm5lZE1lc3NhZ2VzQ2FyZCB7XG4gICAgLm14X1Bpbm5lZE1lc3NhZ2VzQ2FyZF9lbXB0eV93cmFwcGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgICAgIC5teF9QaW5uZWRNZXNzYWdlc0NhcmRfZW1wdHkge1xuICAgICAgICAgICAgaGVpZ2h0OiBtYXgtY29udGVudDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbjogYXV0byA0MHB4O1xuXG4gICAgICAgICAgICAubXhfUGlubmVkTWVzc2FnZXNDYXJkX01lc3NhZ2VBY3Rpb25CYXIge1xuICAgICAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcblxuICAgICAgICAgICAgICAgIC8qIENhbmNlbCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIG5vbi1pbnRlcmFjdGl2aXR5ICovXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHVuc2V0O1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiB1bnNldDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHVuc2V0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9NZXNzYWdlQWN0aW9uQmFyX29wdGlvbnNCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1NZXNzYWdlQWN0aW9uQmFyLWl0ZW0taG92ZXItYmFja2dyb3VuZCk7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLU1lc3NhZ2VBY3Rpb25CYXItaXRlbS1ob3Zlci1ib3JkZXJSYWRpdXMpO1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiB2YXIoLS1NZXNzYWdlQWN0aW9uQmFyLWl0ZW0taG92ZXItekluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfUGlubmVkTWVzc2FnZXNDYXJkX2VtcHR5X2hlYWRlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJsb2NrOiAkc3BhY2luZy0yNCAkc3BhY2luZy0yMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGVfYm9keSB7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Jvb21TdW1tYXJ5Q2FyZCB7XG4gICAgLm14X0Jhc2VDYXJkX2hlYWRlciB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMjA7XG5cbiAgICAgICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9yb29tTmFtZSxcbiAgICAgICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9hbGlhcyB7XG4gICAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9yb29tTmFtZSB7XG4gICAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTEyIDAgJHNwYWNpbmctNDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUm9vbVN1bW1hcnlDYXJkX2FsaWFzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTNweDtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tU3VtbWFyeUNhcmRfYXZhdGFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXG4gICAgICAgICAgICAubXhfUm9vbVN1bW1hcnlDYXJkX2UyZWUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU0cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1NHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzM3ZDhjO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0zcHg7IC8qIGFsaWdubWVudCAqL1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMTBweDsgLyogb3ZlcmxhcCAqL1xuICAgICAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICRkYXJrLXBhbmVsLWJnLWNvbG9yO1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDEzcHg7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDEzcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY292ZXI7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lMmUvZGlzYWJsZWQuc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9lMmVlX25vcm1hbCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyNDQ0NjtcbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2UyZS9ub3JtYWwuc3ZnXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9lMmVlX3ZlcmlmaWVkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZTJlLXZlcmlmaWVkLWNvbG9yO1xuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZTJlL3ZlcmlmaWVkLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9Sb29tU3VtbWFyeUNhcmRfZTJlZV93YXJuaW5nIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZTJlLXdhcm5pbmctY29sb3I7XG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lMmUvd2FybmluZy5zdmdcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9hYm91dEdyb3VwIHtcbiAgICAgICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9CdXR0b24ge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA0NHB4O1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogOHB4O1xuICAgICAgICAgICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpY29uLWJ1dHRvbi1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Sb29tU3VtbWFyeUNhcmRfYXBwc0dyb3VwIHtcbiAgICAgICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9CdXR0b24ge1xuICAgICAgICAgICAgLyogdGhpcyBidXR0b24gaXMgc3BlY2lhbCBzbyB3ZSBoYXZlIHRvIG92ZXJyaWRlIHNvbWUgb2YgdGhlIG9yaWdpbmFsIHN0eWxpbmcgKi9cbiAgICAgICAgICAgIC8qIGFzIHdlIHdpbGwgYmUgYXBwbHlpbmcgaXQgaW4gaXRzIGNoaWxkcmVuICovXG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuXG4gICAgICAgICAgICAubXhfUm9vbVN1bW1hcnlDYXJkX2ljb25fYXBwIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDQ4cHggMTBweCAxMnB4OyAvKiBiYXNlZCBvbiB0eXBpY2FsIG14X1Jvb21TdW1tYXJ5Q2FyZF9CdXR0b24gcGFkZGluZyAqL1xuICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgICAgICAgICAubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfUm9vbVN1bW1hcnlDYXJkX2FwcF9waW5Ub2dnbGUsXG4gICAgICAgICAgICAubXhfUm9vbVN1bW1hcnlDYXJkX2FwcF9tYXhpbWlzZVRvZ2dsZSxcbiAgICAgICAgICAgIC5teF9Sb29tU3VtbWFyeUNhcmRfYXBwX29wdGlvbnMge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOyAvKiB0byBnaXZlIGJpZ2dlciBpbnRlcmFjdGl2ZSB6b25lICovXG4gICAgICAgICAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTJweCA0cHg7XG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDI0cHg7IC8qIHByZXZlbnQgZmxleGJveCBjcnVzaGluZyAqL1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogOHB4OyAvKiBlcXVhbCB0byBwYWRkaW5nLXRvcCBvZiBwYXJlbnQgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDEsIDE1MSwgMTY1LCAwLjEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGljb24tYnV0dG9uLWNvbG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9hcHBfcGluVG9nZ2xlIHtcbiAgICAgICAgICAgICAgICByaWdodDogOHB4O1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vcGluLXVwcmlnaHQuc3ZnXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5teF9Sb29tU3VtbWFyeUNhcmRfYXBwX21heGltaXNlVG9nZ2xlIHtcbiAgICAgICAgICAgICAgICByaWdodDogMzJweDsgLyogMjQgKyA4ICovXG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9tYXhpbWlzZS1leHBhbmQuc3ZnXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Jvb21TdW1tYXJ5Q2FyZF9hcHBfb3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDU2cHg7IC8qIDIqMjQgKyA4ICovXG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9lbGxpcHNpcy5zdmdcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X1Jvb21TdW1tYXJ5Q2FyZF9CdXR0b25fcGlubmVkIHtcbiAgICAgICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubXhfUm9vbVN1bW1hcnlDYXJkX2FwcF9waW5Ub2dnbGU6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X1Jvb21TdW1tYXJ5Q2FyZF9CdXR0b25fbWF4aW1pc2VkIHtcbiAgICAgICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubXhfUm9vbVN1bW1hcnlDYXJkX2FwcF9tYXhpbWlzZVRvZ2dsZTo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIC5teF9Sb29tU3VtbWFyeUNhcmRfaWNvbl9hcHAge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA3MnB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9Sb29tU3VtbWFyeUNhcmRfYXBwX29wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiB1bnNldDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogdW5zZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICB0b3A6IDhweDsgLyogcmUtYWxpZ24gYmFzZWQgb24gdGhlIGhlaWdodCBjaGFuZ2UgKi9cbiAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgLyogcGFzcyB0aHJvdWdoIHRvIHRoZSByZWFsIGJ1dHRvbiAqL1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9saW5rIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xM3B4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIH1cbn1cblxuLm14X1Jvb21TdW1tYXJ5Q2FyZF9pY29uX3Blb3BsZTo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9tZW1iZXJzLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21TdW1tYXJ5Q2FyZF9pY29uX2ZpbGVzOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2ZpbGVzLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21TdW1tYXJ5Q2FyZF9pY29uX3BpbnM6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vcGluLXVwcmlnaHQuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbVN1bW1hcnlDYXJkX2ljb25fdGhyZWFkczo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbWVzc2FnZS90aHJlYWQuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbVN1bW1hcnlDYXJkX2ljb25fc2hhcmU6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vc2hhcmUuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbVN1bW1hcnlDYXJkX2ljb25fc2V0dGluZ3M6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NldHRpbmdzLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21TdW1tYXJ5Q2FyZF9pY29uX2V4cG9ydDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvZXhwb3J0LnN2Z1wiKTtcbn1cblxuLm14X1Jvb21TdW1tYXJ5Q2FyZF9pY29uX3BvbGw6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vY29tcG9zZXIvcG9sbC5zdmdcIik7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVGhyZWFkUGFuZWwge1xuICAgIGhlaWdodDogMTAwcHg7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG5cbiAgICAubXhfQmFzZUNhcmRfaGVhZGVyIHtcbiAgICAgICAgLm14X0Jhc2VDYXJkX2hlYWRlcl90aXRsZSB7XG4gICAgICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9UaHJlYWRQYW5lbF9kcm9wZG93biB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogM3B4ICRzcGFjaW5nLTQgM3B4ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICAgICAgICZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkcXVpbmFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvY2hldnJvbi1kb3duLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1zaXplOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0F1dG9IaWRlU2Nyb2xsYmFyLFxuICAgIC5teF9Sb29tVmlld19tZXNzYWdlUGFuZWxTcGlubmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiAwO1xuICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7IC8qIHNldCBnYXAgYmV0d2VlbiB0aGUgdGhyZWFkIHRpbGUgYW5kIHRoZSByaWdodCBib3JkZXIgKi9cbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGVbZGF0YS1sYXlvdXQ9XCJncm91cFwiXSB7XG4gICAgICAgIC5teF9NZXNzYWdlQWN0aW9uQmFyIHtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgdG9wOiAtMzZweDsgLyogMnB4IGFib3ZlIEV2ZW50VGlsZSAqL1xuICAgICAgICAgICAgei1pbmRleDogMTA7IC8qIFNlZSBfRXZlbnRUaWxlLnBjc3MgKi9cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIEZvciBzdHlsZSBydWxlcyBvZiBFdmVudFRpbGUgaW4gYSB0aHJlYWQsIHNlZSBfRXZlbnRUaWxlLnBjc3MgKi9cbiAgICAmLm14X1RocmVhZFZpZXcge1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuXG4gICAgICAgIC5teF9UaHJlYWRWaWV3X3RpbWVsaW5lUGFuZWxXcmFwcGVyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7IC8qIGRvbid0IGRpc3BsYWNlIHRoZSBjb21wb3NlciAqL1xuICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuXG4gICAgICAgICAgICAubXhfRmlsZURyb3BUYXJnZXQge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9NZXNzYWdlQ29tcG9zZXJfc2VuZE1lc3NhZ2Uge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSB1c2Ugb2YgdGhlIHNwYWNlIGFib3ZlIHRoZSBjb21wb3NlciBidXR0b25zIHRvb1xuICAgICAgICAubXhfQXV0b2NvbXBsZXRlIHtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxNDBweCk7XG4gICAgICAgIH1cbiAgICAgICAgJi5teF9UaHJlYWRWaWV3X25hcnJvdyAubXhfQXV0b2NvbXBsZXRlIHtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxMDhweCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfUm9vbVZpZXdfbWVzc2FnZVBhbmVsIHtcbiAgICAgICAgLyogVG8gYXZvaWQgdGhlIHJ1bGUgZnJvbSBiZWluZyBhcHBsaWVkIHRvIC5teF9UaHJlYWRQYW5lbF9lbXB0eSAqL1xuICAgICAgICAubXhfUm9vbVZpZXdfbWVzc2FnZUxpc3RXcmFwcGVyIHtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA2cHgpOyAvKiA4cHggLSAycHggKi9cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Sb29tVmlld19NZXNzYWdlTGlzdCB7XG4gICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAkc3BhY2luZy04O1xuICAgICAgICBwYWRkaW5nLWlubGluZS1lbmQ6ICRzcGFjaW5nLTg7XG4gICAgICAgIGNvbnRlbnQtdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlLFxuICAgIC5teF9HZW5lcmljRXZlbnRMaXN0U3VtbWFyeSB7XG4gICAgICAgIC8qIEFjY291bnQgZm9yIHNjcm9sbGJhciB3aGVuIGhvdmVyaW5nICovXG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuXG4gICAgICAgIC5teF9EYXRlU2VwYXJhdG9yIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0V2ZW50VGlsZV9jbGFtcDpob3ZlciB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbXBvc2VyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwIDhweDtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZVRpbWVzdGFtcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1NZXNzYWdlVGltZXN0YW1wLWNvbG9yKTsgLyogVE9ETzogY2hlY2sgd2hldGhlciBuZWVkZWQgb3Igbm90ICovXG4gICAgfVxuXG4gICAgLm14X0Jhc2VDYXJkX2Zvb3RlciB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdG9wOiAycHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcblxuICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmtfaW5saW5lIHtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9UaHJlYWRQYW5lbF92aWV3SW5Sb29tOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy92aWV3LWluLXJvb20uc3ZnXCIpO1xufVxuXG4ubXhfVGhyZWFkUGFuZWxfY29weUxpbmtUb1RocmVhZDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbGluay5zdmdcIik7XG59XG5cbi5teF9UaHJlYWRQYW5lbF9lbXB0eSB7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiBJbmNsdWRlIHBhZGRpbmcgYW5kIGJvcmRlciAqL1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgaDIge1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xOHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIH1cblxuICAgIHAge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgIH1cblxuICAgIGJ1dHRvbiB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9UaHJlYWRQYW5lbF9lbXB0eV90aXAge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuXG4gICAgICAgID4gYiB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfVGhyZWFkUGFuZWxfbGFyZ2VJY29uIHtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgcGFkZGluZzogMThweDtcbiAgICBiYWNrZ3JvdW5kOiAkc3lzdGVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgQG1peGluIFRocmVhZFN1bW1hcnlJY29uO1xuICAgICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICAgICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgIH1cbn1cblxuLm14X0NvbnRleHR1YWxNZW51X3dyYXBwZXIge1xuICAgIC5teF9UaHJlYWRQYW5lbF9IZWFkZXJfRmlsdGVyT3B0aW9uSXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHggMTBweCAzMHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXZlbnQtc2VsZWN0ZWQtY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmW2FyaWEtY2hlY2tlZD1cInRydWVcIl0ge1xuICAgICAgICAgICAgOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTIwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9jaGVjay5zdmdcIik7XG4gICAgICAgICAgICAgICAgbWFzay1zaXplOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgLSAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1RpbWVsaW5lQ2FyZCB7XG4gICAgLm14X1RpbWVsaW5lQ2FyZF90aW1lbGluZSB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogb2Zmc2V0IHBhcmVudCBmb3IganVtcCB0byBib3R0b20gYnV0dG9uICovXG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB9XG5cbiAgICAubXhfTmV3Um9vbUludHJvIHtcbiAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tQmFzZUNhcmRfRXZlbnRUaWxlLXNwYWNpbmctaW5saW5lKTtcbiAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLUJhc2VDYXJkX0V2ZW50VGlsZS1zcGFjaW5nLWlubGluZSk7XG4gICAgfVxuXG4gICAgLm14X0V2ZW50VGlsZV9jb250ZW50IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGUge1xuICAgICAgICAubXhfVGhyZWFkU3VtbWFyeSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMXB4O1xuXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICBib3R0b206IC0xNnB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbWVzc2FnZS1hY3Rpb24tYmFyLWJvcmRlci1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZbZGF0YS1sYXlvdXQ9XCJpcmNcIl0sXG4gICAgICAgICZbZGF0YS1sYXlvdXQ9XCJncm91cFwiXSB7XG4gICAgICAgICAgICAtLVRpbWVsaW5lQ2FyZF9SZWFkUmVjZWlwdEdyb3VwLWluc2V0LWJsb2NrLXN0YXJ0OiAtNnB4O1xuXG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV9pbmZvIC5teF9FdmVudFRpbGVfbGluZSxcbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tQmFzZUNhcmRfRXZlbnRUaWxlX2xpbmUtcGFkZGluZy1ibG9jaykgdmFyKC0tQmFzZUNhcmRfRXZlbnRUaWxlLXNwYWNpbmctaW5saW5lKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLU1lc3NhZ2VUaW1lc3RhbXAtd2lkdGgpOyAvKiBlbnN1cmUgdGltZXN0YW1wIGlzIG5vdCBoaWRkZW4gKi9cblxuICAgICAgICAgICAgICAgIC5teF9FdmVudFRpbGVfZTJlSWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydDogJHNwYWNpbmctODtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfRXZlbnRUaWxlX2luZm8ge1xuICAgICAgICAgICAgICAgIC5teF9FdmVudFRpbGVfYXZhdGFyIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAxOHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydDogLTNweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9tc2dPcHRpb24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAwO1xuXG4gICAgICAgICAgICAgICAgLm14X1JlYWRSZWNlaXB0R3JvdXAge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IHZhcigtLVRpbWVsaW5lQ2FyZF9SZWFkUmVjZWlwdEdyb3VwLWluc2V0LWJsb2NrLXN0YXJ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZSxcbiAgICAgICAgICAgIC5teF9SZWFjdGlvbnNSb3csXG4gICAgICAgICAgICAubXhfVGhyZWFkU3VtbWFyeSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tQmFzZUNhcmRfRXZlbnRUaWxlLXNwYWNpbmctaW5saW5lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLUJhc2VDYXJkX0V2ZW50VGlsZS1zcGFjaW5nLWlubGluZSkpOyAvKiBpbnN0ZWFkIG9mICRsZWZ0LWd1dHRlciAqL1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfUmVwbHlUaWxlIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogMDtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfTWVzc2FnZVRpbWVzdGFtcCB7XG4gICAgICAgICAgICAgICAgaW5zZXQtaW5saW5lOiBhdXRvIDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfUmVhY3Rpb25zUm93IHtcbiAgICAgICAgICAgICAgICAvKiBTZWU6IHZhcigtLVRocmVhZFZpZXdfZ3JvdXBfc3BhY2luZy1lbmQpIGZvciBSZWFjdGlvbnNSb3cgb24gX0V2ZW50VGlsZS5wY3NzICovXG4gICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9UaHJlYWRTdW1tYXJ5IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogMDtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IG1pbihjYWxjKDEwMCUgLSAzNnB4KSwgNjAwcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLWxheW91dD1cImlyY1wiXSB7XG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2F2YXRhcixcbiAgICAgICAgICAgIC5teF9NZXNzYWdlVGltZXN0YW1wIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmW2RhdGEtbGF5b3V0PVwiZ3JvdXBcIl0ge1xuICAgICAgICAgICAgLyogUmVhZCByZWNlaXB0IGdyb3VwIG9uIGNvbXBhY3QgbW9kZXJuIGxheW91dCAqL1xuICAgICAgICAgICAgLyogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIG14X1RpbWVsaW5lQ2FyZCBpcyBhIGNoaWxkIGVsZW1lbnQgd3JhcHBlZCBieSBteF9NYXRyaXhDaGF0X3VzZUNvbXBhY3RMYXlvdXQsICovXG4gICAgICAgICAgICAvKiB3aGljaCBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgcG9zaXRpb24gb2YgbXhfUmVhZFJlY2VpcHRHcm91cCBvbiBjb21wYWN0IG1vZGVybiBsYXlvdXQuICovXG4gICAgICAgICAgICAubXhfTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0ICYgLm14X1JlYWRSZWNlaXB0R3JvdXAge1xuICAgICAgICAgICAgICAgIHRvcDogdmFyKC0tVGltZWxpbmVDYXJkX1JlYWRSZWNlaXB0R3JvdXAtaW5zZXQtYmxvY2stc3RhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLWxheW91dD1cImJ1YmJsZVwiXSB7XG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IGF1dG87IC8qIGVuYWJsZSBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyICovXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfRXZlbnRUaWxlX2luZm8gLm14X01lc3NhZ2VBY3Rpb25CYXIge1xuICAgICAgICAgICAgICAgIC8qIDFweDogYm9yZGVyIHdpZHRoICovXG4gICAgICAgICAgICAgICAgaW5zZXQtaW5saW5lLWVuZDogY2FsYyh2YXIoLS1jb250YWluZXItZ2FwLXdpZHRoKSArIHZhcigtLUJhc2VDYXJkX3BhZGRpbmctaW5saW5lKSArIDFweCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9SZWFjdGlvbnNSb3cge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogZGlzcGxheSBvbiBob3ZlciAqL1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0xlZ2FjeUNhbGxFdmVudF93cmFwcGVyIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogYXV0byA1cHg7XG4gICAgICAgIC5teF9MZWdhY3lDYWxsRXZlbnQge1xuICAgICAgICAgICAgbWFyZ2luOiA0cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfR2VuZXJpY0V2ZW50TGlzdFN1bW1hcnkge1xuICAgICAgICAmW2RhdGEtbGF5b3V0PVwiaXJjXCJdLFxuICAgICAgICAmW2RhdGEtbGF5b3V0PVwiZ3JvdXBcIl0ge1xuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lLFxuICAgICAgICAgICAgLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5X3Vuc3R5bGVkTGlzdCA+IC5teF9FdmVudFRpbGVfaW5mbyAubXhfRXZlbnRUaWxlX2F2YXRhciB+IC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLUJhc2VDYXJkX0V2ZW50VGlsZS1zcGFjaW5nLWlubGluZSk7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1NZXNzYWdlVGltZXN0YW1wLXdpZHRoKTsgLyogZW5zdXJlIHRpbWVzdGFtcCBpcyBub3QgaGlkZGVuICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfV2hvSXNUeXBpbmdUaWxlIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xMnB4OyAvKiB1bmRvIHBhZGRpbmcgb24gdGhlIG1lc3NhZ2UgbGlzdCAqL1xuICAgIH1cblxuICAgIC5teF9XaG9Jc1R5cGluZ1RpbGVfYXZhdGFycyB7XG4gICAgICAgIGZsZXgtYmFzaXM6IDQ4cHg7IC8qIDEyIChwYWRkaW5nIG9uIG1lc3NhZ2UgbGlzdCkgKyAzNiAocGFkZGluZyBvbiBldmVudCBsaW5lcykgKi9cbiAgICB9XG5cbiAgICAubXhfR2VuZXJpY0V2ZW50TGlzdFN1bW1hcnlfdW5zdHlsZWRMaXN0LCAvKiBSUiBuZXh0IHRvIGEgbWVzc2FnZSBvbiB0aGUgZXZlbnQgbGlzdCBzdW1tYXJ5ICovXG4gICAgLm14X1Jvb21WaWV3X01lc3NhZ2VMaXN0IHtcbiAgICAgICAgLyogUlIgbmV4dCB0byBhIG1lc3NhZ2Ugb24gdGhlIG1lc3NzZ2UgbGlzdCAqL1xuICAgICAgICAubXhfRXZlbnRUaWxlW2RhdGEtbGF5b3V0PVwiYnViYmxlXCJdIHtcbiAgICAgICAgICAgIC5teF9SZWFkUmVjZWlwdEdyb3VwIHtcbiAgICAgICAgICAgICAgICAvKiA2cHg6IHNjcm9sbCBiYXIgd2lkdGggKG1hZ2ljIG51bWJlcikgKi9cbiAgICAgICAgICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVjbGFyYXRpb24tY29sb24tc3BhY2UtYWZ0ZXIgKi9cbiAgICAgICAgICAgICAgICBpbnNldC1pbmxpbmUtZW5kOiBjYWxjKFxuICAgICAgICAgICAgICAgICAgICAtMSAqIHZhcigtLVJlYWRSZWNlaXB0R3JvdXBfRXZlbnRCdWJibGVUaWxlLXNwYWNpbmctZW5kKSArIHZhcigtLWNvbnRhaW5lci1nYXAtd2lkdGgpICsgNnB4XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9FdmVudFRpbGVfaW5mbyB7XG4gICAgICAgICAgICAgICAgLm14X1JlYWRSZWNlaXB0R3JvdXAge1xuICAgICAgICAgICAgICAgICAgICBpbnNldC1pbmxpbmUtZW5kOiAtNHB4OyAvKiBhbGlnbiB3aXRoIFJSIG91dHNpZGUgb2YgaW5mbyB0aWxlICovXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Vc2VySW5mby5teF9CYXNlQ2FyZCB7XG4gICAgLyogVXNlckluZm8gaGFzIGEgY2lyY3VsYXIgaW1hZ2UgYXQgdGhlIHRvcCBzbyBpdCBmaXRzIGJldHdlZW4gdGhlIGJhY2sgJiBjbG9zZSBidXR0b25zICovXG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG5cbiAgICAubXhfVXNlckluZm9fY2FuY2VsIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGFyay1wYW5lbC1iZy1jb2xvcjtcbiAgICAgICAgbWFyZ2luOiA5cHg7XG4gICAgICAgIHotaW5kZXg6IDE7IC8qIHJlbmRlciBvbiB0b3Agb2YgdGhlIHJpZ2h0IHBhbmVsICovXG5cbiAgICAgICAgZGl2IHtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgcGFkZGluZzogNHB4O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9taW5pbWlzZS5zdmdcIik7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogN3B4IGNlbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtdGV4dC1wcmltYXJ5LWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaDIge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIG1hcmdpbjogMThweCAwIDAgMDtcbiAgICB9XG5cbiAgICAubXhfVXNlckluZm9fY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctOCAkc3BhY2luZy0xNjtcblxuICAgICAgICAmOm5vdCgubXhfVXNlckluZm9fc2VwYXJhdG9yKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogJHNwYWNpbmctMTY7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgPiA6bm90KGgzKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogJHNwYWNpbmctODtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgICAgIHJvdy1nYXA6ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfVXNlckluZm9fY29udGFpbmVyX3ZlcmlmeUJ1dHRvbiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy04O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1VzZXJJbmZvX3NlcGFyYXRvciB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKCRwcmltYXJ5LWNvbnRlbnQsIDAuMSk7XG4gICAgfVxuXG4gICAgLm14X1VzZXJJbmZvX21lbWJlckRldGFpbHNDb250YWluZXIge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTg7XG4gICAgfVxuXG4gICAgLm14X1Jvb21UaWxlX3RpdGxlQ29udGFpbmVyIHtcbiAgICAgICAgd2lkdGg6IDE1NHB4O1xuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV9iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLm14X1Jvb21UaWxlX3RpdGxlIHtcbiAgICAgICAgd2lkdGg6IDE2MHB4O1xuICAgIH1cblxuICAgIC5teF9Vc2VySW5mb19hdmF0YXIge1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTI0ICRzcGFjaW5nLTMyIDAgJHNwYWNpbmctMzI7XG5cbiAgICAgICAgLm14X1VzZXJJbmZvX2F2YXRhcl90cmFuc2l0aW9uIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMzB2aDtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogMC41cztcblxuICAgICAgICAgICAgLm14X1VzZXJJbmZvX2F2YXRhcl90cmFuc2l0aW9uX2NoaWxkIHtcbiAgICAgICAgICAgICAgICAvKiB1c2UgcGFkZGluZy10b3AgaW5zdGVhZCBvZiBoZWlnaHQgdG8gbWFrZSB0aGlzIGVsZW1lbnQgc3F1YXJlLFxuICAgICAgICAgICAgICAgIGFzIHRoZSAlIGluIHBhZGRpbmcgaXMgYSAlIG9mIHRoZSB3aWR0aCAoaW5jbHVkaW5nIG1hcmdpbixcbiAgICAgICAgICAgICAgICB0aGF0J3Mgd2h5IHdlIGhhZCB0byBwdXQgdGhlIG1hcmdpbiB0byBjZW50ZXIgb24gYSBwYXJlbnQgZGl2KSxcbiAgICAgICAgICAgICAgICBhbmQgbm90IGEgJSBvZiB0aGUgcGFyZW50IGhlaWdodC4gKi9cbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMTAwJTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAubXhfQmFzZUF2YXRhcixcbiAgICAgICAgICAgICAgICAubXhfQmFzZUF2YXRhcl9pbml0aWFsLFxuICAgICAgICAgICAgICAgIC5teF9CYXNlQXZhdGFyX2ltYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9CYXNlQXZhdGFyIHtcbiAgICAgICAgICAgICAgICAgICAgJi5teF9CYXNlQXZhdGFyX2ltYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogem9vbS1pbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5teF9CYXNlQXZhdGFyX2luaXRpYWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIG92ZXJyaWRlIHRoZSBjYWxjdWxhdGVkIHNpemVzIHNvIHRoYXQgdGhlIGxldHRlciBpc24ndCBIVUdFICovXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDZyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgMC41cztcblxuICAgICAgICAgICAgICAgICAgICAgICAgJiArIC5teF9CYXNlQXZhdGFyX2ltYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoMyB7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTQgMDtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgICAgbWFyZ2luOiA1cHggMDtcbiAgICB9XG5cbiAgICAubXhfVXNlckluZm9fcHJvZmlsZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICBoMiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xOHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI1cHg7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAvLyBXZSByZXZlcnNlIHRoaW5ncyBoZXJlIHNvIGZvciBhY2Nlc3NpYmxlIHRlY2hub2xvZ2llcyB0aGUgbmFtZSBjb21lcyBiZWZvcmUgdGhlIGUyZSBzaGllbGRcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcblxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgLyogbGltaXQgdG8gMiBsaW5lcywgc2hvdyBhbiBlbGxpcHNpcyBpZiBpdCBvdmVyZmxvd3MgKi9cbiAgICAgICAgICAgICAgICAvKiB0aGlzIGxvb2tzIHdlYmtpdCBzcGVjaWZpYyBidXQgaXMgc3VwcG9ydGVkIGJ5IEZpcmVmb3ggNjgrICovXG4gICAgICAgICAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG5cbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICAgICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0UyRUljb24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDNweDsgLyogdmlzdWFsIHZlcnRpY2FsIGNlbnRlcmluZyB0byB0aGUgdG9wIGxpbmUgb2YgdGV4dC4gKi9cbiAgICAgICAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogJHNwYWNpbmctNDsgLyogbWFyZ2luIGZyb20gZGlzcGxheU5hbWUgKi9cbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDE4cHg7IC8qIGNvbnZpbmNlIGZsZXhib3ggdG8gbm90IGNvbGxhcHNlIGl0ICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfVXNlckluZm9fcHJvZmlsZVN0YXR1cyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy0xMjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Vc2VySW5mb19tZW1iZXJEZXRhaWxzIHtcbiAgICAgICAgLm14X1VzZXJJbmZvX3Byb2ZpbGVGaWVsZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICAgICBtYXJnaW46IDZweCAwO1xuXG4gICAgICAgICAgICAubXhfVXNlckluZm9fcm9sZURlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgLyogdHJ5IHRvIG1ha2UgaXQgdGhlIHNhbWUgaGVpZ2h0IGFzIHRoZSBkcm9wZG93biAqL1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMTFweCAwIDEycHggMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0ZpZWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfVXNlckluZm9fZmllbGQge1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTZweDtcblxuICAgICAgICAmLm14X1VzZXJJbmZvX2Rlc3RydWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfVXNlckluZm9fc3RhdHVzTWVzc2FnZSB7XG4gICAgICAgICRzdGF0dXNMaW5lSGVpZ2h0OiAxNnB4O1xuICAgICAgICAkc3RhdHVzTnVtYmVyT2ZMaW5lczogMztcblxuICAgICAgICBmb250LXNpemU6ICRmb250LTExcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkc3RhdHVzTGluZUhlaWdodDtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoJHN0YXR1c0xpbmVIZWlnaHQgKiAkc3RhdHVzTnVtYmVyT2ZMaW5lcyk7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogJHN0YXR1c051bWJlck9mTGluZXM7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgfVxuXG4gICAgLm14X0F1dG9IaWRlU2Nyb2xsYmFyIHtcbiAgICAgICAgZmxleDogMSAxIDA7XG4gICAgfVxuXG4gICAgLm14X1VzZXJJbmZvX2RldmljZXMge1xuICAgICAgICAubXhfVXNlckluZm9fZGV2aWNlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTggMDtcblxuICAgICAgICAgICAgJi5teF9Vc2VySW5mb19kZXZpY2VfdmVyaWZpZWQge1xuICAgICAgICAgICAgICAgIC5teF9Vc2VySW5mb19kZXZpY2VfdHJ1c3RlZCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYubXhfVXNlckluZm9fZGV2aWNlX3VudmVyaWZpZWQge1xuICAgICAgICAgICAgICAgIC5teF9Vc2VySW5mb19kZXZpY2VfdHJ1c3RlZCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfVXNlckluZm9fZGV2aWNlX25hbWUge1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDVweDtcbiAgICAgICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyogYm90aCBmb3IgaWNvbiBpbiBleHBhbmQgYnV0dG9uIGFuZCBkZXZpY2UgaXRlbSAqL1xuICAgICAgICAubXhfRTJFSWNvbiB7XG4gICAgICAgICAgICAvKiBkb24ndCBzcXVlZXplICovXG4gICAgICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1VzZXJJbmZvX2V4cGFuZCB7XG4gICAgICAgICAgICBjb2x1bW4tZ2FwOiA1cHg7IC8qIGNmOiBteF9Vc2VySW5mb19kZXZpY2VfbmFtZSAqL1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTFweDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBpbml0aWFsOyAvKiBDYW5jZWwgdGhlIGRlZmF1bHQgcHJvcGVydHkgKi9cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfVXNlckluZm9fc21hbGxBdmF0YXIge1xuICAgICAgICAubXhfVXNlckluZm9fYXZhdGFyIHtcbiAgICAgICAgICAgIC5teF9Vc2VySW5mb19hdmF0YXJfdHJhbnNpdGlvbiB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA3MnB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfVXNlckluZm9fYXZhdGFyX3RyYW5zaXRpb25fY2hpbGQge1xuICAgICAgICAgICAgICAgIC5teF9CYXNlQXZhdGFyIHtcbiAgICAgICAgICAgICAgICAgICAgLm14X0Jhc2VBdmF0YXJfaW5pdGlhbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDQwcHggIWltcG9ydGFudDsgLyogb3ZlcnJpZGUgdGhlIG90aGVyIG92ZXJyaWRlIGJlY2F1c2UgaGVyZSB0aGUgYXZhdGFyIGlzIHNtYWxsZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9WZXJpZmljYXRpb25QYW5lbF92ZXJpZmllZF9zZWN0aW9uLFxuLm14X1ZlcmlmaWNhdGlvblBhbmVsX3JlY2lwcm9jYXRlX3NlY3Rpb24ge1xuICAgIC8qIGNlbnRlciB0aGUgYmlnIHNoaWVsZCBpY29uICovXG4gICAgLm14X0UyRUljb24ge1xuICAgICAgICAvKiBPdmVycmlkZSBnZW5lcmFsIHVzZXIgaW5mbyBtYXJnaW4gKi9cbiAgICAgICAgbWFyZ2luOiAyMHB4IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5teF9Vc2VySW5mby5teF9CYXNlQ2FyZCB7XG4gICAgLm14X1VzZXJJbmZvX2NvbnRhaW5lcjpub3QoLm14X1VzZXJJbmZvX3NlcGFyYXRvcikge1xuICAgICAgICA+IGRpdiA+IHAge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfVmVyaWZpY2F0aW9uUGFuZWxfdmVyaWZ5QnlFbW9qaUJ1dHRvbixcbiAgICAgICAgLm14X1VzZXJJbmZvX3dpZGVCdXR0b24ge1xuICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0VuY3J5cHRpb25JbmZvX3NwaW5uZXIsXG4gICAgICAgIC5teF9WZXJpZmljYXRpb25TaG93U2FzIHtcbiAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGF1dG87XG4gICAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TcGlubmVyLFxuICAgICAgICAubXhfVmVyaWZpY2F0aW9uU2hvd1NhcyB7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0VuY3J5cHRpb25QYW5lbF9jYW5jZWwge1xuICAgICAgICBAbWl4aW4gY3VzdG9taXNlZENhbmNlbEJ1dHRvbjtcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNldHRpbmdzLXN1YnNlY3Rpb24tZmctY29sb3I7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogMTAwO1xuICAgICAgICB0b3A6IDE0cHg7XG4gICAgICAgIHJpZ2h0OiAxNHB4O1xuICAgIH1cblxuICAgIC5teF9WZXJpZmljYXRpb25QYW5lbF9xckNvZGUge1xuICAgICAgICBwYWRkaW5nOiA0cHggNHB4IDAgNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgLyogT3ZlcnJpZGUgZ2VuZXJhbCB1c2VyIGluZm8gbWFyZ2luICovXG4gICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgY2FudmFzIHtcbiAgICAgICAgICAgIC8qIG92ZXJyaWRlIGhlaWdodCBhbmQgd2lkdGggd2hpY2ggYXJlIHNldCBvbiB0aGUgZWxlbWVudCBkaXJlY3RseSAqL1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAyNDBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9WZXJpZmljYXRpb25QYW5lbF9yZWNpcHJvY2F0ZV9zZWN0aW9uIHtcbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIFNwZWNpYWwgY2FzZSBzdHlsaW5nIGZvciBFbmNyeXB0aW9uUGFuZWwgaW4gYSBNb2RhbCBkaWFsb2cgKi9cbi5teF9EaWFsb2csXG4ubXhfQ29tcGxldGVTZWN1cml0eV9ib2R5IHtcbiAgICAubXhfVmVyaWZpY2F0aW9uUGFuZWxfUVJQaGFzZV9zdGFydE9wdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgPiAubXhfVmVyaWZpY2F0aW9uUGFuZWxfUVJQaGFzZV9iZXR3ZWVuVGV4dCB7XG4gICAgICAgICAgICB3aWR0aDogNTBweDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1ZlcmlmaWNhdGlvblBhbmVsX1FSUGhhc2Vfc3RhcnRPcHRpb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMzEwcHg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAgICAgICAgIGNhbnZhcyxcbiAgICAgICAgICAgIC5teF9WZXJpZmljYXRpb25QYW5lbF9RUlBoYXNlX25vUVIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjIwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+IHAge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1ZlcmlmaWNhdGlvblBhbmVsX1FSUGhhc2VfaGVscFRleHQge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDMwcHggMDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBFbmNyeXB0aW9uUGFuZWwgd2hlbiB2ZXJpZmljYXRpb24gaXMgZG9uZSAqL1xuICAgIC5teF9WZXJpZmljYXRpb25QYW5lbF92ZXJpZmllZF9zZWN0aW9uIHtcbiAgICAgICAgLyogcmlnaHQgYWxpZ24gdGhlIFwiR290IGl0XCIgYnV0dG9uICovXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9WZXJpZmljYXRpb25QYW5lbF9yZWNpcHJvY2F0ZV9zZWN0aW9uIHtcbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiA3cHggNDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9WZXJpZmljYXRpb25QYW5lbF9yZWNpcHJvY2F0ZUJ1dHRvbnMge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1dpZGdldENhcmQge1xuICAgIC5teF9BcHBUaWxlRnVsbFdpZHRoIHtcbiAgICAgICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9BbGlhc1NldHRpbmdzX2xvY2FsQWRkcmVzc2VzIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgLyogbGlzdC1zdHlsZSBkb2Vzbid0IGRvIGl0IGZvciB3ZWJraXQgKi9cbiAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcbkNvcHlyaWdodCAyMDE5IFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuOnJvb3Qge1xuICAgIC0tQXBwVGlsZV9taW5pLWhlaWdodDogMjIwcHg7XG59XG5cbi5teF9BcHBzRHJhd2VyIHtcbiAgICAtLW1pbldpZHRoOiAyNDBweDsgLyogVE9ETyB0aGlzIHNob3VsZCBiZSAzMDBweCBidXQgdGhhdCdzIHRvbyBsYXJnZSAqL1xuXG4gICAgbWFyZ2luOiB2YXIoLS1jb250YWluZXItZ2FwLXdpZHRoKTtcbiAgICAvKiBUaGUgbGVmdCBzaWRlIGdhcCBpcyBmdWxseSBoYW5kbGVkIGJ5IHRoaXMgbWFyZ2luLiBUbyBwcm9oaWJpdCBibGVlZGluZyBvbiB3ZWJraXQgYnJvd3Nlci4gKi9cbiAgICBtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29udGFpbmVyLWdhcC13aWR0aCkgLyAyKTtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyAvKiBObyBib3R0b20gbWFyZ2luIGZvciB0aGUgY29ycmVjdCBnYXAgdG8gdGhlIENhbGxWaWV3IGJlbG93LiAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAubXhfQXBwc0NvbnRhaW5lcl9yZXNpemVySGFuZGxlQ29udGFpbmVyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICAubXhfQXBwc0NvbnRhaW5lcl9yZXNpemVySGFuZGxlIHtcbiAgICAgICAgY3Vyc29yOiBucy1yZXNpemU7XG5cbiAgICAgICAgLyogT3ZlcnJpZGUgc3R5bGVzIGZyb20gbGlicmFyeSwgbWFraW5nIHRoZSB3aG9sZSBhcmVhIHRoZSB0YXJnZXQgYXJlYSAqL1xuICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcblxuICAgICAgICAvKiBUaGlzIGlzIHBvc2l0aW9uZWQgZGlyZWN0bHkgYmVsb3cgZnJhbWUgKi9cbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDUwJSAhaW1wb3J0YW50OyAvKiBvdmVycmlkZSBmcm9tIGxpYnJhcnkgKi9cblxuICAgICAgICAvKiBXZSB0aGVuIHJlbmRlciB0aGUgcGlsbCBoYW5kbGUgaW4gYW4gOjphZnRlciB0byBrZWVwIGl0IGluIHRoZSBoYW5kbGUncyAqL1xuICAgICAgICAvKiBhcmVhIHdpdGhvdXQgYmVpbmcgYSBtYXNzaXZlIGxpbmUgYWNyb3NzIHRoZSBzY3JlZW4gKi9cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcblxuICAgICAgICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgICAgICBib3R0b206IDA7XG5cbiAgICAgICAgICAgIC8qIFRvZ2V0aGVyLCB0aGVzZSBtYWtlIHRoZSBiYXIgNjRweCB3aWRlICovXG4gICAgICAgICAgICAvKiBUaGVzZSBhcmUgYWxzbyBvdmVycmlkZGVuIGZyb20gdGhlIGxpYnJhcnkgKi9cbiAgICAgICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMzJweCk7XG4gICAgICAgICAgICByaWdodDogY2FsYyg1MCUgLSAzMnB4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICAubXhfQXBwc0NvbnRhaW5lcl9yZXNpemVySGFuZGxlOjphZnRlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Jlc2l6ZUhhbmRsZS0taG9yaXpvbnRhbDo6YmVmb3JlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDNweDtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XG5cbiAgICAgICAgICAgIGhlaWdodDogNjRweDsgLyogdG8gbWF0Y2ggd2lkdGggb2YgdGhlIG9uZXMgb24gcm9vbWxpc3QgKi9cbiAgICAgICAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG5cbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG5cbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfQXBwVGlsZSB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIG1pbi13aWR0aDogdmFyKC0tbWluV2lkdGgpO1xuICAgIH1cblxuICAgICYubXhfQXBwc0RyYXdlci0tbWF4aW1pc2VkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tY29udGFpbmVyLWdhcC13aWR0aCk7XG4gICAgfVxuXG4gICAgJi5teF9BcHBzRHJhd2VyLS1yZXNpemluZyAubXhfQXBwVGlsZV9wZXJzaXN0ZWRXcmFwcGVyIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICB9XG5cbiAgICAmLm14X0FwcHNEcmF3ZXItLTJhcHBzIC5teF9BcHBUaWxlIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcblxuICAgICAgICAmOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICB3aWR0aDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWluLXdpZHRoOiB2YXIoLS1taW5XaWR0aCkgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmLm14X0FwcHNEcmF3ZXItLTNhcHBzIC5teF9BcHBUaWxlIHtcbiAgICAgICAgd2lkdGg6IDMzJTtcblxuICAgICAgICAmOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICB3aWR0aDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWluLXdpZHRoOiB2YXIoLS1taW5XaWR0aCkgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0FwcHNDb250YWluZXJfcmVzaXplciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tY29udGFpbmVyLWdhcC13aWR0aCk7XG59XG5cbi5teF9BcHBzQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLWhlaWdodDogMDtcblxuICAgIC5teF9BcHBUaWxlOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItbGVmdC13aWR0aDogdmFyKC0tY29udGFpbmVyLWJvcmRlci13aWR0aCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHggMCAwIDEwcHg7XG4gICAgfVxuICAgIC5teF9BcHBUaWxlOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlci1yaWdodC13aWR0aDogdmFyKC0tY29udGFpbmVyLWJvcmRlci13aWR0aCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMTBweCAxMHB4IDA7XG4gICAgfVxuXG4gICAgLm14X1Jlc2l6ZUhhbmRsZS0taG9yaXpvbnRhbCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0FwcFRpbGUge1xuICAgIGJvcmRlcjogdmFyKC0tY29udGFpbmVyLWJvcmRlci13aWR0aCkgc29saWQgJHdpZGdldC1tZW51LWJhci1iZy1jb2xvcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2lkZ2V0LW1lbnUtYmFyLWJnLWNvbG9yO1xufVxuXG4ubXhfQXBwVGlsZUZ1bGxXaWR0aCB7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLyogdG8gb3ZlcnJpZGUgdGhlIGlubGluZSBzdHlsZSBzZXQgYnkgdGhlIHJlc2l6ZXIgKi9cbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IHZhcigtLWNvbnRhaW5lci1ib3JkZXItd2lkdGgpIHNvbGlkICR3aWRnZXQtbWVudS1iYXItYmctY29sb3I7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2lkZ2V0LW1lbnUtYmFyLWJnLWNvbG9yO1xufVxuXG4ubXhfQXBwVGlsZV9taW5pIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgaGVpZ2h0OiB2YXIoLS1BcHBUaWxlX21pbmktaGVpZ2h0KTtcbn1cblxuLm14X0FwcFRpbGUgLm14X0FwcFRpbGVfcGVyc2lzdGVkV3JhcHBlcixcbi5teF9BcHBUaWxlRnVsbFdpZHRoIC5teF9BcHBUaWxlX3BlcnNpc3RlZFdyYXBwZXIsXG4ubXhfQXBwVGlsZV9taW5pIC5teF9BcHBUaWxlX3BlcnNpc3RlZFdyYXBwZXIge1xuICAgIGZsZXg6IDE7XG59XG5cbi5teF9BcHBUaWxlX3BlcnNpc3RlZFdyYXBwZXIgZGl2IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5teF9BcHBUaWxlTWVudUJhciB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2lkZ2V0LW1lbnUtYmFyLWJnLWNvbG9yO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nLXRvcDogM3B4O1xuICAgIHBhZGRpbmctYm90dG9tOiA2cHg7XG5cbiAgICAubXhfQXBwVGlsZU1lbnVCYXJfdGl0bGUge1xuICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbiAgICAgICAgLm14X1dpZGdldEF2YXRhciB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA5cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfQXBwVGlsZU1lbnVCYXJfd2lkZ2V0cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgLm14X0FwcFRpbGVNZW51QmFyX3dpZGdldHNfYnV0dG9uIHtcbiAgICAgICAgICAgIC0tc2l6ZTogMjRweDsgLyogU2l6ZSBvZiB0aGUgYnV0dG9uLiBJdHMgaGVpZ2h0IGFuZCB3aWR0aCB2YWx1ZXMgc2hvdWxkIGJlIHNhbWUgKi9cblxuICAgICAgICAgICAgbWFyZ2luOiAwIDRweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tc2l6ZSk7XG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tc2l6ZSk7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgICAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplKTtcbiAgICAgICAgICAgICAgICB3aWR0aDogdmFyKC0tc2l6ZSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbmVsLWFjdGlvbnM7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfSWNvbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0FwcFRpbGVCb2R5LFxuLm14X0FwcFRpbGVCb2R5X21pbmkge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGhlaWdodDogdmFyKC0tQXBwVGlsZUJvZHktaGVpZ2h0KTtcblxuICAgIGlmcmFtZSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAvKiBjb25zdCBsb2FkaW5nRWxlbWVudCAqL1xuICAgIC5teF9BcHBUaWxlQm9keV9mYWRlSW5TcGlubmVyIHtcbiAgICAgICAgLyogcGxhY2Ugc3Bpbm5lciBhbmQgdGhlIG1lc3NhZ2UgYXQgdGhlIGNlbnRlciBvZiBteF9BcHBUaWxlQm9keSAqL1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOyAvKiBtZXNzYWdlIG5leHQgdG8gdGhlIHNwaW5uZXIgKi9cbiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYmFja3dhcmRzO1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDIwMG1zO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDUwMG1zO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogbXhfQXBwVGlsZUJvZHlfZmFkZUluU3Bpbm5lckFuaW1hdGlvbjtcbiAgICB9XG59XG5cbi5teF9BcHBUaWxlQm9keSB7XG4gICAgLS1BcHBUaWxlQm9keS1oZWlnaHQ6IDEwMCU7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2lkZ2V0LWJvZHktYmctY29sb3I7XG5cbiAgICBpZnJhbWUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLm14X0FwcFRpbGVCb2R5X21pbmkge1xuICAgIC0tQXBwVGlsZUJvZHktaGVpZ2h0OiB2YXIoLS1BcHBUaWxlX21pbmktaGVpZ2h0KTtcbn1cblxuLm14X0FwcFRpbGUgLm14X0FwcFRpbGVCb2R5LFxuLm14X0FwcFRpbGVGdWxsV2lkdGggLm14X0FwcFRpbGVCb2R5LFxuLm14X0FwcFRpbGVfbWluaSAubXhfQXBwVGlsZUJvZHlfbWluaSB7XG4gICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgIGZsZXg6IDE7XG59XG5cbi5teF9BcHBXYXJuaW5nLFxuLm14X0FwcFBlcm1pc3Npb24ge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNnB4O1xuXG4gICAgaDQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufVxuXG4ubXhfQXBwVGlsZV9sb2FkaW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgLyogbWF0Y2ggYmcgb2YgYm9yZGVyIHNvIHRoYXQgdGhlIGN1dCBjb3JuZXJzIGhhdmUgdGhlIHJpZ2h0IGZpbGwgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2lkZ2V0LWJvZHktYmctY29sb3IgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG5cbiAgICBpZnJhbWUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBteF9BcHBUaWxlQm9keV9mYWRlSW5TcGlubmVyQW5pbWF0aW9uIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cbiIsIi5teF9BdXRvY29tcGxldGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgei1pbmRleDogMTAwMTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkcHJpbWFyeS1oYWlybGluZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweCA4cHggMCAwO1xuICAgIG92ZXJmbG93OiBjbGlwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBib3gtc2hhZG93OiAwcHggLTE2cHggMzJweCAkY29tcG9zZXItc2hhZG93LWNvbG9yO1xufVxuXG4ubXhfQXV0b2NvbXBsZXRlX1Byb3ZpZGVyU2VjdGlvbiB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRwcmltYXJ5LWhhaXJsaW5lLWNvbG9yO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBhIFwiYmxvY2tcIiBjb21wbGV0aW9uIHRha2VzIHVwIGEgd2hvbGUgbGluZSAqL1xuLm14X0F1dG9jb21wbGV0ZV9Db21wbGV0aW9uX2Jsb2NrIHtcbiAgICBtaW4taGVpZ2h0OiAzNHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIHBhZGRpbmc6IDAgMTJweDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbn1cblxuLm14X0F1dG9jb21wbGV0ZV9Db21wbGV0aW9uX2Jsb2NrICoge1xuICAgIG1hcmdpbjogMCAzcHg7XG59XG5cbi5teF9BdXRvY29tcGxldGVfQ29tcGxldGlvbl9waWxsIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlci1yYWRpdXM6IDJyZW07XG4gICAgaGVpZ2h0OiAkZm9udC0zNHB4O1xuICAgIHBhZGRpbmc6IDAuNHJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xufVxuXG4ubXhfQXV0b2NvbXBsZXRlX0NvbXBsZXRpb25fcGlsbCA+ICoge1xuICAgIG1hcmdpbi1yaWdodDogMC4zcmVtO1xufVxuXG4vKiBzdHlsaW5nIGZvciBjb21tb24gY29tcGxldGlvbiBlbGVtZW50cyAqL1xuLm14X0F1dG9jb21wbGV0ZV9Db21wbGV0aW9uX3N1YnRpdGxlIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZmxleDogMTtcbn1cblxuLm14X0F1dG9jb21wbGV0ZV9Db21wbGV0aW9uX2Rlc2NyaXB0aW9uIHtcbiAgICBjb2xvcjogZ3JheTtcbiAgICBtaW4td2lkdGg6IDE1MHB4O1xufVxuXG4ubXhfQXV0b2NvbXBsZXRlX0NvbXBsZXRpb25fY29udGFpbmVyX3BpbGwge1xuICAgIG1hcmdpbjogMTJweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIG1heC1oZWlnaHQ6IDM1dmg7XG59XG5cbi5teF9BdXRvY29tcGxldGVfQ29tcGxldGlvbl9jb250YWluZXJfdHJ1bmNhdGUge1xuICAgIC5teF9BdXRvY29tcGxldGVfQ29tcGxldGlvbl90aXRsZSxcbiAgICAubXhfQXV0b2NvbXBsZXRlX0NvbXBsZXRpb25fc3VidGl0bGUsXG4gICAgLm14X0F1dG9jb21wbGV0ZV9Db21wbGV0aW9uX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgLyogRWxsaXBzaXMgZm9yIGxvbmcgbmFtZXMvc3VidGl0bGVzL2Rlc2NyaXB0aW9ucyAqL1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB9XG59XG5cbi5teF9BdXRvY29tcGxldGVfQ29tcGxldGlvbi5zZWxlY3RlZCxcbi5teF9BdXRvY29tcGxldGVfQ29tcGxldGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHNlbGVjdGVkLWNvbG9yO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi5teF9BdXRvY29tcGxldGVfcHJvdmlkZXJfbmFtZSB7XG4gICAgbWFyZ2luOiAxMnB4O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgb3BhY2l0eTogMC40O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE4IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0F1eFBhbmVsIHtcbiAgICBtaW4td2lkdGg6IDBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDBweCBhdXRvO1xuXG4gICAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgICAubXhfQXV4UGFuZWxfc3RhdGVWaWV3cyB7XG4gICAgICAgIHBhZGRpbmc6IDVweDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxOXB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHByaW1hcnktaGFpcmxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgLm14X0F1eFBhbmVsX3N0YXRlVmlld3Nfc3BhbiB7XG4gICAgICAgICZbZGF0YS1zZXZlcml0eT1cIndhcm5pbmdcIl0ge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBjb2xvcjogb3JhbmdlO1xuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLXNldmVyaXR5PVwiYWxlcnRcIl0ge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBjb2xvcjogcmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLXNldmVyaXR5PVwibm9ybWFsXCJdIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIH1cblxuICAgICAgICAmW2RhdGEtc2V2ZXJpdHk9XCJub3RpY2VcIl0ge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIGNvbG9yOiAkc2V0dGluZ3MtZ3JleS1mZy1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfQXV4UGFuZWxfc3RhdGVWaWV3c19kZWxpbSB7XG4gICAgICAgIHBhZGRpbmc6IDAgNXB4O1xuICAgICAgICBjb2xvcjogJHNldHRpbmdzLWdyZXktZmctY29sb3I7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9CYXNpY01lc3NhZ2VDb21wb3NlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLm14X0Jhc2ljTWVzc2FnZUNvbXBvc2VyX2lucHV0RW1wdHkgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IHZhcigtLXBsYWNlaG9sZGVyKTtcbiAgICAgICAgb3BhY2l0eTogMC4zMzM7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgdmlzdWFsYmVsbCB7XG4gICAgICAgIGZyb20ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHZpc3VhbC1iZWxsLWJnLWNvbG9yO1xuICAgICAgICB9XG4gICAgICAgIHRvIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9CYXNpY01lc3NhZ2VDb21wb3Nlcl9pbnB1dF9lcnJvciB7XG4gICAgICAgIGFuaW1hdGlvbjogMC4ycyB2aXN1YWxiZWxsO1xuICAgIH1cblxuICAgIC5teF9CYXNpY01lc3NhZ2VDb21wb3Nlcl9pbnB1dCB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG5cbiAgICAgICAgLyogRm9yY2UgY2FyZXQgbm9kZXMgdG8gYmUgc2VsZWN0ZWQgaW4gZnVsbCBzbyB0aGF0IHRoZXkgY2FuIGJlICovXG4gICAgICAgIC8qIG5hdmlnYXRlZCB0aHJvdWdoIGluIGEgc2luZ2xlIGtleXByZXNzICovXG4gICAgICAgIC5jYXJldE5vZGUge1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IGFsbDtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfQmFzaWNNZXNzYWdlQ29tcG9zZXJfaW5wdXRfc2hvdWxkU2hvd1BpbGxBdmF0YXIge1xuICAgICAgICAgICAgc3Bhbi5teF9Vc2VyUGlsbCxcbiAgICAgICAgICAgIHNwYW4ubXhfUm9vbVBpbGwsXG4gICAgICAgICAgICBzcGFuLm14X1NwYWNlUGlsbCB7XG4gICAgICAgICAgICAgICAgdXNlci1zZWxlY3Q6IGFsbDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiB1bnNldDsgLyogV2UgZG9uJ3Qgd2FudCBpbmRpY2F0ZSBjbGlja2FiaWxpdHkgKi9cbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgLyogV2UgZG9uJ3Qgd2FudCBpbmRpY2F0ZSBjbGlja2FiaWxpdHkgfCBUbyBvdmVycmlkZSB0aGUgb3ZlcnJpZGluZyBvZiAubWFya2Rvd24tYm9keSAqL1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGlsbC1iZy1jb2xvciAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8qIGF2YXRhciBwc3VlZG8gZWxlbWVudCAqL1xuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdmFyKC0tYXZhdGFyLWxldHRlcik7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAkZm9udC0xNnB4O1xuICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6ICRmb250LTE2cHg7IC8qIGVuc3VyZSB0aGUgYXZhdGFyIGlzIG5vdCBjb21wcmVzc2VkICovXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJGZvbnQtMTZweDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDAuMjRyZW07XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF2YXRhci1iYWNrZ3JvdW5kKSwgJGJhY2tncm91bmQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYXZhdGFyLWluaXRpYWwtY29sb3I7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogJGZvbnQtMTZweDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGZvbnQtMTZweDtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTZweDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMC00cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9CYXNpY01lc3NhZ2VDb21wb3Nlcl9pbnB1dF9kaXNhYmxlZCB7XG4gICAgICAgICAgICAvKiBJZ25vcmUgYWxsIHVzZXIgaW5wdXQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IHRyaWdnZXJpbmcgdGhlIGNvbXBvc2VyICovXG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9CYXNpY01lc3NhZ2VDb21wb3Nlcl9BdXRvQ29tcGxldGVXcmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0RlY3J5cHRpb25GYWlsdXJlQmFyIHtcbiAgICAtLWdhcC1yb3c6ICRzcGFjaW5nLTg7XG4gICAgLS1nYXAtY29sdW1uOiAkc3BhY2luZy0xMjtcbiAgICAtLWdhcDogdmFyKC0tZ2FwLXJvdykgdmFyKC0tZ2FwLWNvbHVtbik7XG4gICAgLS1zaXplLWljb246IDI0cHg7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3lzdGVtO1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nLTEyO1xuICAgIG1hcmdpbi1pbmxpbmU6ICRzcGFjaW5nLTE2O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgICYubXhfRGVjcnlwdGlvbkZhaWx1cmVCYXItLXdpdGhFbmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWZsb3c6IHdyYXA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIHJvdy1nYXA6IGNhbGModmFyKC0tZ2FwLXJvdykgKyAkc3BhY2luZy00KTsgLyogSW5jcmVhc2Ugc3BhY2luZyBiZXR3ZWVuIHRoZSBtZXNzYWdlIGFuZCB0aGUgYnV0dG9ucyAqL1xuXG4gICAgICAgIC5teF9EZWNyeXB0aW9uRmFpbHVyZUJhcl9lbmQge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsgLyogTGV0IHRoZSBidXR0b25zIHdyYXBwZWQgb24gYSBuYXJyb3cgY29sdW1uICovXG4gICAgICAgICAgICBnYXA6IHZhcigtLWJ1dHRvbnMtZGlhbG9nLWdhcC1yb3cpIHZhcigtLWJ1dHRvbnMtZGlhbG9nLWdhcC1jb2x1bW4pO1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogY2FsYyh2YXIoLS1zaXplLWljb24pICsgdmFyKC0tZ2FwLWNvbHVtbikpOyAvKiBBbGlnbiB0aGUgYnV0dG9uKHMpIGFuZCB0aGUgbWVzc2FnZSAqL1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0RlY3J5cHRpb25GYWlsdXJlQmFyX3N0YXJ0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiB2YXIoLS1nYXApO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICAgICAgXCJzdGF0dXMgaGVhZGxpbmVcIlxuICAgICAgICAgICAgXCIuICAgICAgbWVzc2FnZVwiO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNpemUtaWNvbikgYXV0bztcblxuICAgICAgICAubXhfRGVjcnlwdGlvbkZhaWx1cmVCYXJfc3RhcnRfc3RhdHVzIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogc3RhdHVzO1xuXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tZ2FwKTtcblxuICAgICAgICAgICAgLm14X1NwaW5uZXIge1xuICAgICAgICAgICAgICAgIGhlaWdodDogdW5zZXQ7IC8qIFVuc2V0IGhlaWdodDogMTAwJSAqL1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfRGVjcnlwdGlvbkZhaWx1cmVCYXJfc3RhcnRfc3RhdHVzX2ljb24ge1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogdmFyKC0tc2l6ZS1pY29uKTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXNpemUtaWNvbik7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lMmUvZGVjcnlwdGlvbi1mYWlsdXJlLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZTJlLXdhcm5pbmctY29sb3I7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0RlY3J5cHRpb25GYWlsdXJlQmFyX3N0YXJ0X2hlYWRsaW5lIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogaGVhZGxpbmU7XG5cbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE2cHg7XG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRGVjcnlwdGlvbkZhaWx1cmVCYXJfc3RhcnRfbWVzc2FnZSB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IG1lc3NhZ2U7XG5cbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRTJFSWNvbiB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIG1hcmdpbjogMCA5cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubXhfRTJFSWNvbl93YXJuaW5nLFxuLm14X0UyRUljb25fbm9ybWFsLFxuLm14X0UyRUljb25fdmVyaWZpZWQge1xuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICB9XG59XG5cbi8qIHdoaXRlIGluZmlsbCBmb3IgdGhlIHRyYW5zcGFyZW5jeSAqL1xuLm14X0UyRUljb246OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2UyZS9ub3JtYWwuc3ZnXCIpO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stc2l6ZTogODAlO1xufVxuXG4vKiB0cmFuc3BhcmVudC1sb29raW5nIGJvcmRlciBzdXJyb3VuZGluZyB0aGUgc2hpZWxkIGZvciB3aGVuIG92ZXJsYWluIG92ZXIgYXZhdGFycyAqL1xuLm14X0UyRUljb25fYm9yZGVyZWQge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZTJlL25vcm1hbC5zdmdcIik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcblxuICAgIC8qIHNocmluayB0aGUgYWN0dWFsIGJhZGdlICovXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBtYXNrLXNpemU6IDc1JTtcbiAgICB9XG4gICAgLyogc2hyaW5rIHRoZSBpbmZpbGwgb2YgdGhlIGJhZGdlICovXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1zaXplOiA2MCU7XG4gICAgfVxufVxuXG4ubXhfRTJFSWNvbl93YXJuaW5nOjphZnRlciB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lMmUvd2FybmluZy5zdmdcIik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGUyZS13YXJuaW5nLWNvbG9yO1xufVxuXG4ubXhfRTJFSWNvbl9ub3JtYWw6OmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2UyZS9ub3JtYWwuc3ZnXCIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtdGV4dC1wcmltYXJ5LWNvbG9yO1xufVxuXG4ubXhfRTJFSWNvbl92ZXJpZmllZDo6YWZ0ZXIge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZTJlL3ZlcmlmaWVkLnN2Z1wiKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZTJlLXZlcmlmaWVkLWNvbG9yO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9FZGl0TWVzc2FnZUNvbXBvc2VyIHtcbiAgICAtLUVkaXRNZXNzYWdlQ29tcG9zZXItcGFkZGluZy1pbmxpbmU6IDNweDtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIGRpc2FibGUgb3ZlcmZsb3cgKi9cbiAgICB3aWR0aDogYXV0bztcbiAgICBnYXA6IDVweDtcbiAgICBwYWRkaW5nOiAzcHggdmFyKC0tRWRpdE1lc3NhZ2VDb21wb3Nlci1wYWRkaW5nLWlubGluZSk7XG5cbiAgICAubXhfQmFzaWNNZXNzYWdlQ29tcG9zZXJfaW5wdXQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGJvcmRlcjogc29saWQgMXB4ICRwcmltYXJ5LWhhaXJsaW5lLWNvbG9yO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7XG4gICAgICAgIHBhZGRpbmc6IDNweCA2cHg7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoJGFjY2VudCwgMC41KTsgLyogT25seSBldmVyIHVzZWQgaGVyZSAqL1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0VkaXRNZXNzYWdlQ29tcG9zZXJfYnV0dG9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZmxvdzogcm93IHdyYXAtcmV2ZXJzZTsgLyogZGlzcGxheSBcIlNhdmVcIiBvdmVyIFwiQ2FuY2VsXCIgKi9cbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgZ2FwOiA1cHg7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGF1dG87XG5cbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEwMHB4OyAvKiBtYWdpYyBudW1iZXIgdG8gYWxpZ24gdGhlIGVkZ2Ugb2YgdGhlIGJ1dHRvbiB3aXRoIHRoZSBpbnB1dCBhcmVhICovXG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRW1vamlCdXR0b24ge1xuICAgIEBtaXhpbiBjb21wb3NlckJ1dHRvbiA1MCUsICRhY2NlbnQ7XG59XG5cbi5teF9FbW9qaUJ1dHRvbl9oaWdobGlnaHQge1xuICAgIEBtaXhpbiBjb21wb3NlckJ1dHRvbkhpZ2hMaWdodDtcbn1cblxuLm14X0Vtb2ppQnV0dG9uX2ljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vY29tcG9zZXIvZW1vamkuc3ZnXCIpO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3d5c2l3eWcge1xuICAgIC5teF9FbW9qaUJ1dHRvbiB7XG4gICAgICAgIEBtaXhpbiBjb21wb3NlckJ1dHRvbiA1cHgsICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRW50aXR5VGlsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIC5teF9FMkVJY29uIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMnB4O1xuICAgICAgICByaWdodDogN3B4O1xuICAgIH1cbn1cblxuLm14X0VudGl0eVRpbGU6aG92ZXIge1xuICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiB0byBrZWVwIHRoZSBjaGV2cm9uIGFsaWduZWQgKi9cbn1cblxuLm14X0VudGl0eVRpbGU6aG92ZXI6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDhweCk7IC8qIGNlbnRlciAqL1xuICAgIHJpZ2h0OiAtOHB4O1xuICAgIG1hc2s6IHVybChcIiQocmVzKS9pbWcvbWVtYmVyX2NoZXZyb24ucG5nXCIpO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtdGV4dC1wcmltYXJ5LWNvbG9yO1xufVxuXG4ubXhfRW50aXR5VGlsZSAubXhfUHJlc2VuY2VMYWJlbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLm14X0VudGl0eVRpbGU6bm90KC5teF9FbnRpdHlUaWxlX25vSG92ZXIpOmhvdmVyIC5teF9QcmVzZW5jZUxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLm14X0VudGl0eVRpbGVfaW52aXRlIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgd2lkdGg6IDI2cHg7XG59XG5cbi5teF9FbnRpdHlUaWxlX2F2YXRhciB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcHg7XG4gICAgcGFkZGluZy1yaWdodDogMTJweDtcbiAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubXhfRW50aXR5VGlsZV9uYW1lIHtcbiAgICBmbGV4OiAxIDEgMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ubXhfRW50aXR5VGlsZV9kZXRhaWxzIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGZsZXg6IDE7XG59XG5cbi5teF9FbnRpdHlUaWxlX2VsbGlwc2lzIC5teF9FbnRpdHlUaWxlX25hbWUge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbn1cblxuLm14X0VudGl0eVRpbGVfaW52aXRlUGxhY2Vob2xkZXIgLm14X0VudGl0eVRpbGVfbmFtZSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xufVxuXG4ubXhfRW50aXR5VGlsZV91bmF2YWlsYWJsZSAubXhfRW50aXR5VGlsZV9hdmF0YXIsXG4ubXhfRW50aXR5VGlsZV91bmF2YWlsYWJsZSAubXhfRW50aXR5VGlsZV9uYW1lLFxuLm14X0VudGl0eVRpbGVfb2ZmbGluZV9iZWVuYWN0aXZlIC5teF9FbnRpdHlUaWxlX2F2YXRhcixcbi5teF9FbnRpdHlUaWxlX29mZmxpbmVfYmVlbmFjdGl2ZSAubXhfRW50aXR5VGlsZV9uYW1lIHtcbiAgICBvcGFjaXR5OiAwLjU7XG59XG5cbi5teF9FbnRpdHlUaWxlX29mZmxpbmVfbmV2ZXJhY3RpdmUgLm14X0VudGl0eVRpbGVfYXZhdGFyLFxuLm14X0VudGl0eVRpbGVfb2ZmbGluZV9uZXZlcmFjdGl2ZSAubXhfRW50aXR5VGlsZV9uYW1lIHtcbiAgICBvcGFjaXR5OiAwLjI1O1xufVxuXG4ubXhfRW50aXR5VGlsZV91bmtub3duIC5teF9FbnRpdHlUaWxlX2F2YXRhcixcbi5teF9FbnRpdHlUaWxlX3Vua25vd24gLm14X0VudGl0eVRpbGVfbmFtZSB7XG4gICAgb3BhY2l0eTogMC4yNTtcbn1cblxuLm14X0VudGl0eVRpbGVfc3VidGV4dCB7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMXB4O1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbn1cblxuLm14X0VudGl0eVRpbGVfcG93ZXIge1xuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiA2cHg7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMHB4O1xuICAgIGNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICBtYXgtd2lkdGg6IDZlbTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5teF9FbnRpdHlUaWxlOmhvdmVyIC5teF9FbnRpdHlUaWxlX3Bvd2VyIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Jvb21WaWV3X2JvZHlbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0ge1xuICAgIC5teF9Sb29tVmlld190aW1lbGluZSxcbiAgICAubXhfUm9vbVZpZXdfc3RhdHVzQXJlYSxcbiAgICAubXhfTWVzc2FnZUNvbXBvc2VyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMTIwMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG59XG5cbi5teF9FdmVudFRpbGVbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0sXG4ubXhfR2VuZXJpY0V2ZW50TGlzdFN1bW1hcnlbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0ge1xuICAgIC0tYXZhdGFyU2l6ZTogMzJweDtcbiAgICAtLWd1dHRlclNpemU6IDExcHg7XG4gICAgLS1jb3JuZXJSYWRpdXM6IDEycHg7XG4gICAgLS1tYXhXaWR0aDogNzAlO1xuXG4gICAgLyogRm9yIGJvdGggZXZlbnQgdGlsZSBhbmQgZXZlbnQgbGlzdCBzdW1tYXJ5ICovXG4gICAgLS1FdmVudFRpbGVfYnViYmxlLW1hcmdpbi1pbmxpbmUtc3RhcnQ6IDQ5cHg7XG4gICAgLS1FdmVudFRpbGVfYnViYmxlLW1hcmdpbi1pbmxpbmUtZW5kOiA2MHB4O1xuXG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tRXZlbnRUaWxlX2J1YmJsZS1tYXJnaW4taW5saW5lLXN0YXJ0KTtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogdmFyKC0tRXZlbnRUaWxlX2J1YmJsZS1tYXJnaW4taW5saW5lLWVuZCk7XG59XG5cbi5teF9FdmVudFRpbGVbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0ge1xuICAgIC0tRXZlbnRUaWxlX2J1YmJsZV9saW5lLW1hcmdpbi1pbmxpbmUtc3RhcnQ6IC05cHg7XG4gICAgLS1FdmVudFRpbGVfYnViYmxlX2xpbmUtbWFyZ2luLWlubGluZS1lbmQ6IC0xMnB4O1xuICAgIC0tRXZlbnRUaWxlX2J1YmJsZV9nYXAtaW5saW5lOiA1cHg7XG5cbiAgICAubXhfTWVzc2FnZVRpbWVzdGFtcCB7XG4gICAgICAgIHdpZHRoOiB1bnNldDsgLyogQ2FuY2VsIHRoZSBkZWZhdWx0IHdpZHRoICovXG4gICAgICAgIG1heC13aWR0aDogdmFyKC0tTWVzc2FnZVRpbWVzdGFtcC1tYXgtd2lkdGgpO1xuICAgIH1cblxuICAgIC5teF9UaHJlYWRTdW1tYXJ5IHtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX2NvbnRlbnQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgJi5teF9FdmVudFRpbGVfaGlnaGxpZ2h0IHtcbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRldmVudC1oaWdobGlnaHQtYmctY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBGb3IgcmVwbGllcyAqL1xuICAgIC5teF9FdmVudFRpbGUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTFweDtcbiAgICAgICAgYm90dG9tOiAtMXB4O1xuICAgICAgICBsZWZ0OiBjYWxjKC0xICogdmFyKC0tRXZlbnRUaWxlX2J1YmJsZS1tYXJnaW4taW5saW5lLXN0YXJ0KSk7XG4gICAgICAgIHJpZ2h0OiBjYWxjKC0xICogdmFyKC0tRXZlbnRUaWxlX2J1YmJsZS1tYXJnaW4taW5saW5lLWVuZCkpO1xuICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIH1cblxuICAgICY6aG92ZXIsXG4gICAgJi5teF9FdmVudFRpbGVfc2VsZWN0ZWQge1xuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGV2ZW50YnViYmxlLWJnLWhvdmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJGV2ZW50YnViYmxlLWJnLWhvdmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlLFxuICAgIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgIC0tRXZlbnRCdWJibGVUaWxlX2xpbmUtbWF4LXdpZHRoOiA3MCU7XG5cbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICBtYXgtd2lkdGg6IHZhcigtLUV2ZW50QnViYmxlVGlsZV9saW5lLW1heC13aWR0aCk7IC8qIEFsaWduIG1lc3NhZ2UgYnViYmxlIGFuZCBkaXNwbGF5TmFtZSAqL1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMThweDsgLyogZml4ZWQgbGluZSBoZWlnaHQgdG8gcHJldmVudCBlbW9qaSBmcm9tIGJlaW5nIHRhbGxlciB0aGFuIHRleHQgKi9cbiAgICB9XG5cbiAgICAvKiBvdGhlciB1c2VycyBwcm9maWxlIG9uIGJ1YmJsZSBsYXlvdXQgKi9cbiAgICA+IC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIGRpc3BsYXkgbXhpZCAqL1xuXG4gICAgICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZV9kaXNwbGF5TmFtZSB7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvKiB0cnVuY2F0ZSBsb25nIGRpc3BsYXkgbmFtZXMgKi9cbiAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA1cHg7XG5cbiAgICAgICAgICAgIC8qIEZvciBSVEwgZGlzcGxheU5hbWUgKi9cbiAgICAgICAgICAgIHVuaWNvZGUtYmlkaTogZW1iZWQ7XG4gICAgICAgICAgICBkaXJlY3Rpb246IGx0cjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZV9teGlkIHtcbiAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7IC8qIEFsaWduIG14aWQgd2l0aCB0cnVuY2F0ZWQgZGlzcGxheU5hbWVcbiAgICAgICAgICAgICAgICBpbnNpZGUgbXhfRXZlbnRUaWxlW2RhdGEtbGF5b3V0PVwiYnViYmxlXCJdICovXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBpbnNpZGUgbXhfUm9vbVZpZXdfTWVzc2FnZUxpc3QsIG91dHNpZGUgb2YgbXhfUmVwbHlUaWxlICovXG4gICAgLyogKG9uIHRoZSBtYWluIHBhbmVsIGFuZCB0aGUgY2hhdCBwYW5lbCB3aXRoIGEgbWF4aW1pemVkIHdpZGdldCkgKi9cbiAgICA+IC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZSxcbiAgICAvKiBpbnNpZGUgYSB0aHJlYWQsIG91dHNpZGUgb2YgbXhfUmVwbHlUaWxlICovXG4gICAgLm14X0V2ZW50VGlsZV9zZW5kZXJEZXRhaWxzID4gLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IC0ycHg7XG4gICAgICAgIGxlZnQ6IDJweDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQWN0aW9uQmFyIHtcbiAgICAgICAgdG9wOiAtMjhweDtcbiAgICAgICAgei1pbmRleDogOTsgLyogYWJvdmUgdGhlIGF2YXRhciAqL1xuICAgIH1cblxuICAgIC5teF9NZWRpYUJvZHkge1xuICAgICAgICAvKiBsZWF2ZSBzcGFjZSBmb3IgdGhlIHRpbWVzdGFtcCAqL1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5teF9NSW1hZ2VCb2R5IHtcbiAgICAgICAgLm14X01JbWFnZUJvZHlfdGh1bWJuYWlsX2NvbnRhaW5lciB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMS44cmVtICsgdmFyKC0tZ3V0dGVyU2l6ZSkgKyB2YXIoLS1ndXR0ZXJTaXplKSk7XG4gICAgICAgICAgICBtaW4td2lkdGg6IGNhbGMoMS44cmVtICsgdmFyKC0tZ3V0dGVyU2l6ZSkgKyB2YXIoLS1ndXR0ZXJTaXplKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfTGVnYWN5Q2FsbEV2ZW50IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7XG5cbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfUmVhY3Rpb25zUm93IHtcbiAgICAgICAgbWFyZ2luLWlubGluZTogdmFyKC0tRXZlbnRUaWxlX2J1YmJsZV9saW5lLW1hcmdpbi1pbmxpbmUtc3RhcnQpIHZhcigtLUV2ZW50VGlsZV9idWJibGVfbGluZS1tYXJnaW4taW5saW5lLWVuZCk7XG4gICAgfVxuXG4gICAgJltkYXRhLXNlbGY9XCJmYWxzZVwiXSB7XG4gICAgICAgIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tY29ybmVyUmFkaXVzKTtcblxuICAgICAgICAgICAgLm14X01JbWFnZUJvZHkgLm14X01JbWFnZUJvZHlfdGh1bWJuYWlsX2NvbnRhaW5lcixcbiAgICAgICAgICAgIC5teF9NSW1hZ2VCb2R5OjpiZWZvcmUsXG4gICAgICAgICAgICAubXhfTVZpZGVvQm9keSAubXhfTVZpZGVvQm9keV9jb250YWluZXIsXG4gICAgICAgICAgICAubXhfTWVkaWFCb2R5LFxuICAgICAgICAgICAgLm14X01Mb2NhdGlvbkJvZHlfbWFwLFxuICAgICAgICAgICAgLm14X01CZWFjb25Cb2R5IHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tY29ybmVyUmFkaXVzKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICAgICAgbGVmdDogLTM0cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTWVzc2FnZUFjdGlvbkJhciB7XG4gICAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IGNhbGMoMTAwJSAtIHZhcigtLU1lc3NhZ2VBY3Rpb25CYXItc2l6ZS1ib3gpKTtcbiAgICAgICAgICAgIHJpZ2h0OiBpbml0aWFsOyAvKiBSZXNldCB0aGUgZGVmYXVsdCB2YWx1ZSAqL1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1RocmVhZFN1bW1hcnkge1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogY2FsYygtMSAqIHZhcigtLWd1dHRlclNpemUpKTtcbiAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1JlYWN0aW9uc1JvdyB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cblxuICAgICAgICAtLWJhY2tncm91bmRDb2xvcjogJGV2ZW50YnViYmxlLW90aGVycy1iZztcbiAgICB9XG5cbiAgICAmW2RhdGEtc2VsZj1cInRydWVcIl0ge1xuICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhcigtLWNvcm5lclJhZGl1cyk7XG5cbiAgICAgICAgICAgIC5teF9NSW1hZ2VCb2R5IC5teF9NSW1hZ2VCb2R5X3RodW1ibmFpbF9jb250YWluZXIsXG4gICAgICAgICAgICAubXhfTUltYWdlQm9keTo6YmVmb3JlLFxuICAgICAgICAgICAgLm14X01WaWRlb0JvZHkgLm14X01WaWRlb0JvZHlfY29udGFpbmVyLFxuICAgICAgICAgICAgLm14X01lZGlhQm9keSxcbiAgICAgICAgICAgIC5teF9NTG9jYXRpb25Cb2R5X21hcCxcbiAgICAgICAgICAgIC5teF9NQmVhY29uQm9keSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tY29ybmVyUmFkaXVzKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9zdGlja2VyIHtcbiAgICAgICAgICAgIC8qIGFsaWduIHRpbWVzdGFtcCB3aXRoIHRob3NlIGluc2lkZSBidWJibGVzICovXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDMycHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfVGhyZWFkU3VtbWFyeSB7XG4gICAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IGNhbGMoLTEgKiB2YXIoLS1ndXR0ZXJTaXplKSk7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRGlzYW1iaWd1YXRlZFByb2ZpbGUge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9SZXBseVRpbGUgLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1JlYWN0aW9uc1JvdyB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXG4gICAgICAgICAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBvcmRlcjogLTE7IC8qIE1vdmluZyB0aGUgXCJhZGQgcmVhY3Rpb24gYnV0dG9uXCIgYmVmb3JlIHRoZSByZWFjdGlvbnMgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfYXZhdGFyIHtcbiAgICAgICAgICAgIHRvcDogLTE5cHg7IC8qIGhlaWdodCBvZiB0aGUgc2VuZGVyIGJsb2NrICovXG4gICAgICAgICAgICByaWdodDogLTM1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTWVkaWFCb2R5IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRldmVudGJ1YmJsZS1zZWxmLWJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X01lc3NhZ2VBY3Rpb25CYXIge1xuICAgICAgICAgICAgaW5zZXQtaW5saW5lLWVuZDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC0tYmFja2dyb3VuZENvbG9yOiAkZXZlbnRidWJibGUtc2VsZi1iZztcbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogNXB4IHZhcigtLUV2ZW50VGlsZV9idWJibGVfZ2FwLWlubGluZSk7XG4gICAgICAgIG1hcmdpbi1ibG9jazogMDtcbiAgICAgICAgbWFyZ2luLWlubGluZTogdmFyKC0tRXZlbnRUaWxlX2J1YmJsZV9saW5lLW1hcmdpbi1pbmxpbmUtc3RhcnQpIHZhcigtLUV2ZW50VGlsZV9idWJibGVfbGluZS1tYXJnaW4taW5saW5lLWVuZCk7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWNvcm5lclJhZGl1cyk7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YXIoLS1jb3JuZXJSYWRpdXMpO1xuXG4gICAgICAgIC8qIHRoZSBzZWxlY3RvciBoZXJlIGlzIHF1aXRlIHdlaXJkIGJlY2F1c2UgdGltZXN0YW1wcyBjYW4gYXBwZWFyIGxpbmtlZCAmIHVubGlua2VkIGFuZCBpbiBkaWZmZXJlbnQgcGxhY2VzICovXG4gICAgICAgIC8qIGluIHRoZSBET00gZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyByZW5kZXJpbmcgY29udGV4dCAqL1xuICAgICAgICA+IGEsIC8qIHRpbWVzdGFtcCB3cmFwcGVyIGFuY2hvciAqL1xuICAgICAgICAubXhfTWVzc2FnZUFjdGlvbkJhciArIC5teF9NZXNzYWdlVGltZXN0YW1wIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IDM7IC8qIGFib3ZlIG1lZGlhIGFuZCBsb2NhdGlvbiBzaGFyZSBtYXBzICovXG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0V2ZW50VGlsZV9tZWRpYUxpbmUge1xuICAgICAgICAgICAgLyogVE9ETzogVXNlIGEgY29tbW9uIGNsYXNzIG5hbWUgaW5zdGVhZCAqL1xuICAgICAgICAgICAgLm14X01GaWxlQm9keSxcbiAgICAgICAgICAgIC5teF9NQXVkaW9Cb2R5IHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIGF2b2lkIG92ZXJmbG93ICovXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9NVm9pY2VNZXNzYWdlQm9keSB7XG4gICAgICAgICAgICAgICAgLyogYWxsb3cgdGhlIGV2ZW50IHRvIGJlIGNvbGxhcHNlZCwgdGhpcyBjYXVzZXMgdGhlIHdhdmVmb3JtIHRvIGdldCBjcm9wcGVkICovXG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiB3ZSBwdXQgdGhlIHRpbWVzdGFtcHMgZm9yIG1lZGlhIChvdGhlciB0aGFuIHN0aWNrZXJzKSBhdG9wIHRoZSBtZWRpYSAqL1xuICAgICAgICAgICAgJi5teF9FdmVudFRpbGVfaW1hZ2Uge1xuICAgICAgICAgICAgICAgIC5teF9NZXNzYWdlVGltZXN0YW1wIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tTUJvZHktYm9yZGVyLXJhZGl1cyk7XG4gICAgICAgICAgICAgICAgICAgIC8qIEhhcmRjb2RlZCBjb2xvdXJzIGJlY2F1c2UgaXQncyB0aGUgc2FtZSBvbiBhbGwgdGhlbWVzICovXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDBweCA0cHggMHB4IDRweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0V2ZW50VGlsZV9zdGlja2VyIHtcbiAgICAgICAgICAgID4gYSwgLyogdGltZXN0YW1wIHdyYXBwZXIgYW5jaG9yICovXG4gICAgICAgICAgICAubXhfTWVzc2FnZUFjdGlvbkJhciArIC5teF9NZXNzYWdlVGltZXN0YW1wIHtcbiAgICAgICAgICAgICAgICAvKiBwb3NpdGlvbiB0aW1lc3RhbXBzIGZvciBzdGlja2VycyB0byB0aGUgcmlnaHQgb2YgdGhlIHVuLWJ1YmJsZWQgc3RpY2tlciAqL1xuICAgICAgICAgICAgICAgIHJpZ2h0OiB1bnNldDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfTVN0aWNrZXJCb2R5X3dyYXBwZXIge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTUltYWdlQm9keSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAgICAgLm14X01JbWFnZUJvZHlfdGh1bWJuYWlsLm14X01JbWFnZUJvZHlfdGh1bWJuYWlsLS1ibHVyaGFzaCB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHVuc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyogbm9pbnNwZWN0aW9uIENzc1JlcGxhY2VXaXRoU2hvcnRoYW5kU2FmZWx5ICovXG4gICAgICAgIC5teF9NSW1hZ2VCb2R5IC5teF9NSW1hZ2VCb2R5X3RodW1ibmFpbF9jb250YWluZXIsXG4gICAgICAgIC5teF9NVmlkZW9Cb2R5IC5teF9NVmlkZW9Cb2R5X2NvbnRhaW5lcixcbiAgICAgICAgLm14X01lZGlhQm9keSB7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB1bnNldDtcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWNvcm5lclJhZGl1cyk7XG4gICAgICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdmFyKC0tY29ybmVyUmFkaXVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfZTJlSWNvbiB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDsgLyoga2VlcCBpdCBhdCBmdWxsIHNpemUgKi9cbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5teF9FdmVudFRpbGVfbm9CdWJibGUpIC5teF9FdmVudFRpbGVfbGluZTpub3QoLm14X0V2ZW50VGlsZV9tZWRpYUxpbmUpIHtcbiAgICAgICAgLyogbWFrZSB0aGUgdG9wIGFuZCBib3R0b20gcGFkZGluZyAxcHggc21hbGxlciBzbyB0aGF0IHdlIGNhbiBwYWRcbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfY29udGVudCBieSAxcHggKi9cbiAgICAgICAgLyogdG8gYXZvaWQgYW50aS16YWxnbyBjdXR0aW5nIG9mZiBvdXIgbGFyZ2VyIHRoYW4gdGV4dCBlbW9qaXMuICovXG4gICAgICAgIHBhZGRpbmc6IGNhbGModmFyKC0tZ3V0dGVyU2l6ZSkgLSAxcHgpO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA2MHB4OyAvKiBzcGFjZSBmb3IgdGhlIHRpbWVzdGFtcCAqL1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kQ29sb3IpO1xuXG4gICAgICAgIC5teF9FdmVudFRpbGVfY29udGVudCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X0V2ZW50VGlsZV9jb250aW51YXRpb25bZGF0YS1zZWxmPVwiZmFsc2VcIl0gLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcblxuICAgICAgICAubXhfTUltYWdlQm9keSAubXhfTUltYWdlQm9keV90aHVtYm5haWxfY29udGFpbmVyLFxuICAgICAgICAubXhfTVZpZGVvQm9keSAubXhfTVZpZGVvQm9keV9jb250YWluZXIsXG4gICAgICAgIC5teF9NSW1hZ2VCb2R5OjpiZWZvcmUsXG4gICAgICAgIC5teF9NZWRpYUJvZHksXG4gICAgICAgIC5teF9NTG9jYXRpb25Cb2R5X21hcCxcbiAgICAgICAgLm14X01CZWFjb25Cb2R5IHtcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5teF9FdmVudFRpbGVfbGFzdEluU2VjdGlvbltkYXRhLXNlbGY9XCJmYWxzZVwiXSAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1jb3JuZXJSYWRpdXMpO1xuXG4gICAgICAgIC5teF9NSW1hZ2VCb2R5IC5teF9NSW1hZ2VCb2R5X3RodW1ibmFpbF9jb250YWluZXIsXG4gICAgICAgIC5teF9NVmlkZW9Cb2R5IC5teF9NVmlkZW9Cb2R5X2NvbnRhaW5lcixcbiAgICAgICAgLm14X01JbWFnZUJvZHk6OmJlZm9yZSxcbiAgICAgICAgLm14X01lZGlhQm9keSxcbiAgICAgICAgLm14X01Mb2NhdGlvbkJvZHlfbWFwLFxuICAgICAgICAubXhfTUJlYWNvbkJvZHkge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tY29ybmVyUmFkaXVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfRXZlbnRUaWxlX2NvbnRpbnVhdGlvbltkYXRhLXNlbGY9XCJ0cnVlXCJdIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuXG4gICAgICAgIC5teF9NSW1hZ2VCb2R5IC5teF9NSW1hZ2VCb2R5X3RodW1ibmFpbF9jb250YWluZXIsXG4gICAgICAgIC5teF9NVmlkZW9Cb2R5IC5teF9NVmlkZW9Cb2R5X2NvbnRhaW5lcixcbiAgICAgICAgLm14X01JbWFnZUJvZHk6OmJlZm9yZSxcbiAgICAgICAgLm14X01lZGlhQm9keSxcbiAgICAgICAgLm14X01Mb2NhdGlvbkJvZHlfbWFwLFxuICAgICAgICAubXhfTUJlYWNvbkJvZHkge1xuICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5teF9FdmVudFRpbGVfbGFzdEluU2VjdGlvbltkYXRhLXNlbGY9XCJ0cnVlXCJdIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YXIoLS1jb3JuZXJSYWRpdXMpO1xuXG4gICAgICAgIC5teF9NSW1hZ2VCb2R5IC5teF9NSW1hZ2VCb2R5X3RodW1ibmFpbF9jb250YWluZXIsXG4gICAgICAgIC5teF9NVmlkZW9Cb2R5IC5teF9NVmlkZW9Cb2R5X2NvbnRhaW5lcixcbiAgICAgICAgLm14X01JbWFnZUJvZHk6OmJlZm9yZSxcbiAgICAgICAgLm14X01lZGlhQm9keSxcbiAgICAgICAgLm14X01Mb2NhdGlvbkJvZHlfbWFwLFxuICAgICAgICAubXhfTUJlYWNvbkJvZHkge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWNvcm5lclJhZGl1cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX2F2YXRhciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgei1pbmRleDogOTtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAkYmFja2dyb3VuZDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfRXZlbnRUaWxlX25vU2VuZGVyIHtcbiAgICAgICAgLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICAgICAgdG9wOiAtMTlweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9CYXNlQXZhdGFyLFxuICAgIC5teF9FdmVudFRpbGVfYXZhdGFyIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuXG4gICAgJltkYXRhLWhhcy1yZXBseT1cInRydWVcIl0ge1xuICAgICAgICA+IC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1JlcGx5Q2hhaW4ge1xuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9yZXBseSB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICA+IGEsIC8qIHRpbWVzdGFtcCB3cmFwcGVyIGFuY2hvciAqL1xuICAgICAgICAgICAgICAgIC5teF9NZXNzYWdlQWN0aW9uQmFyICsgLm14X01lc3NhZ2VUaW1lc3RhbXAge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGdhcDogdmFyKC0tZ3V0dGVyU2l6ZSk7XG4gICAgICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAubXhfRGlzYW1iaWd1YXRlZFByb2ZpbGUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9NUG9sbEJvZHkge1xuICAgICAgICB3aWR0aDogNTUwcHg7IC8qIHRvIHByZXZlbnQgdGltZXN0YW1wIG92ZXJsYXBwaW5nIHN1bW1hcnkgdGV4dCAqL1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIHByZXZlbnQgb3ZlcmZsb3dpbmcgYSByZXBseSB0aWxlICovXG5cbiAgICAgICAgLm14X01Qb2xsQm9keV90b3RhbFZvdGVzIHtcbiAgICAgICAgICAgIC8qIGFsaWduIHN1bW1hcnkgdGV4dCB3aXRoIGNvcm5lciB0aW1lc3RhbXAgKi9cbiAgICAgICAgICAgIHBhZGRpbmc6IDRweCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9FdmVudFRpbGVfYmFkIHtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyogU3BlY2lhbCBsYXlvdXQgc2NlbmFyaW8gZm9yIFwiVW5hYmxlIFRvIERlY3J5cHQgKFVURClcIiBldmVudHMgKi9cbiAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlOlxuICAgICAgICAgICAgICAgIFwicmVwbHkgcmVwbHlcIiBhdXRvXG4gICAgICAgICAgICAgICAgXCJzaGllbGQgYm9keVwiIGF1dG9cbiAgICAgICAgICAgICAgICAvIGF1dG8gMWZyO1xuXG4gICAgICAgICAgICAubXhfVW5rbm93bkJvZHksXG4gICAgICAgICAgICAubXhfUmVwbHlDaGFpbl93cmFwcGVyLFxuICAgICAgICAgICAgLm14X1ZpZXdTb3VyY2VFdmVudCB7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiAwOyAvKiBQcmV2ZW50IGEgZ3JpZCBibG93b3V0ICovXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfZTJlSWNvbiB7XG4gICAgICAgICAgICAgICAgZ3JpZC1hcmVhOiBzaGllbGQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfVW5rbm93bkJvZHksXG4gICAgICAgICAgICAubXhfRGVjcnlwdGlvbkZhaWx1cmVCb2R5IHtcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IGJvZHk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9SZXBseUNoYWluX3dyYXBwZXIge1xuICAgICAgICAgICAgICAgIGdyaWQtYXJlYTogcmVwbHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0V2ZW50VGlsZV9pbmZvIHtcbiAgICAgICAgICAgIC8qIFwiVW5hYmxlIFRvIERlY3J5cHRcIiBsYXlvdXQgZm9yIGhpZGRlbiBldmVudHMgKi9cbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAgICAgZ2FwOiAwIDlweDsgLyogOXB4OiBtYXJnaW4gdmFsdWUgb2YgRTJFIGljb24gKi9cbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGU6XG4gICAgICAgICAgICAgICAgICAgIFwic2hpZWxkIHNvdXJjZVwiIGF1dG9cbiAgICAgICAgICAgICAgICAgICAgLyBhdXRvIDFmcjtcblxuICAgICAgICAgICAgICAgIC5teF9WaWV3U291cmNlRXZlbnQge1xuICAgICAgICAgICAgICAgICAgICBncmlkLWFyZWE6IHNvdXJjZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfTVRleHRCb2R5IHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5teF9MZWdhY3lDYWxsRXZlbnRfd3JhcHBlcixcbiAgICAubXhfQ2FsbEV2ZW50X3dyYXBwZXIge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG59XG5cbi5teF9FdmVudFRpbGUubXhfRXZlbnRUaWxlX25vQnViYmxlW2RhdGEtbGF5b3V0PVwiYnViYmxlXCJdIHtcbiAgICAtLWJhY2tncm91bmRDb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgICAubXhfRXZlbnRUaWxlX2xpbmUubXhfRXZlbnRUaWxlX2Vtb3RlIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogNjBweDsgLyogYWxpZ24gd2l0aCBidWJibGVzIHRleHQgKi9cbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuXG4gICAgICAgID4gYSB7XG4gICAgICAgICAgICAvKiB0aW1lc3RhbXAgYW5jaG9yIHdyYXBwZXIgKi9cbiAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgIGJvdHRvbTogdW5zZXQ7XG4gICAgICAgICAgICB0b3A6IHVuc2V0O1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOyAvKiB1bmRvIGl0YWxpYyBhYm92ZSAqL1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X01FbW90ZUJvZHkge1xuICAgICAgICAgICAgcGFkZGluZzogNHB4IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9FdmVudFRpbGUubXhfRXZlbnRUaWxlX2J1YmJsZUNvbnRhaW5lcltkYXRhLWxheW91dD1cImJ1YmJsZVwiXSxcbi5teF9FdmVudFRpbGUubXhfRXZlbnRUaWxlX2xlZnRBbGlnbmVkQnViYmxlW2RhdGEtbGF5b3V0PVwiYnViYmxlXCJdIHtcbiAgICAubXhfRXZlbnRUaWxlX2xpbmUgPiBhIHtcbiAgICAgICAgLyogaGlkZSB0aGlzIHRpbWVzdGFtcCBhcyB0aGUgdGlsZSB3aWxsIHJlbmRlciBpdHMgb3duICovXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4ubXhfRXZlbnRUaWxlLm14X0V2ZW50VGlsZV9idWJibGVDb250YWluZXJbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0sXG4ubXhfRXZlbnRUaWxlLm14X0V2ZW50VGlsZV9sZWZ0QWxpZ25lZEJ1YmJsZVtkYXRhLWxheW91dD1cImJ1YmJsZVwiXSxcbi5teF9FdmVudFRpbGUubXhfRXZlbnRUaWxlX2luZm9bZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0ge1xuICAgIHBhZGRpbmc6IDVweCAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cbiAgICAubXhfRXZlbnRUaWxlX2xpbmUsXG4gICAgLm14X0V2ZW50VGlsZV9pbmZvIHtcbiAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xuICAgICAgICAvKiBQcmVzZXJ2ZSBhbGlnbm1lbnQgd2l0aCBsZWZ0IGVkZ2Ugb2YgdGV4dCBpbiBidWJibGVzICovXG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbi5teF9FdmVudFRpbGUubXhfRXZlbnRUaWxlX2J1YmJsZUNvbnRhaW5lcltkYXRhLWxheW91dD1cImJ1YmJsZVwiXSxcbi5teF9FdmVudFRpbGUubXhfRXZlbnRUaWxlX2xlZnRBbGlnbmVkQnViYmxlW2RhdGEtbGF5b3V0PVwiYnViYmxlXCJdLFxuLm14X0V2ZW50VGlsZS5teF9FdmVudFRpbGVfaW5mb1tkYXRhLWxheW91dD1cImJ1YmJsZVwiXSxcbi5teF9HZW5lcmljRXZlbnRMaXN0U3VtbWFyeVtkYXRhLWxheW91dD1cImJ1YmJsZVwiXVtkYXRhLWV4cGFuZGVkPVwiZmFsc2VcIl0ge1xuICAgIC0tYmFja2dyb3VuZENvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAtLWd1dHRlclNpemU6IDA7XG5cbiAgICAubXhfRXZlbnRUaWxlX2F2YXRhciB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG9yZGVyOiAtMTtcbiAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLUV2ZW50VGlsZV9idWJibGVfZ2FwLWlubGluZSk7IC8qIFNhbWUgc3BhY2luZyBiZXR3ZWVuIEUyRSBpY29uIGFuZCBhIGhpZGRlbiBldmVudCAqL1xuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGVfZTJlSWNvbiB7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7IC8qIG14X0V2ZW50VGlsZV9hdmF0YXIgaGFzIG1hcmdpbi1pbmxpbmUtZW5kLCBzbyBtYXJnaW4gaXMgbm90IG5lZWRlZCBoZXJlICovXG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICA+IGEsIC8qIHRpbWVzdGFtcCB3cmFwcGVyIGFuY2hvciAqL1xuICAgICAgICAubXhfTWVzc2FnZUFjdGlvbkJhciArIC5teF9NZXNzYWdlVGltZXN0YW1wIHtcbiAgICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgbGVmdDogLTc3cHg7XG4gICAgICAgICAgICBib3R0b206IHVuc2V0O1xuICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuXG4gICAgICAgICAgICAubXhfTWVzc2FnZVRpbWVzdGFtcCxcbiAgICAgICAgICAgICYubXhfTWVzc2FnZVRpbWVzdGFtcCB7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5W2RhdGEtbGF5b3V0PVwiYnViYmxlXCJdIHtcbiAgICAubXhfRXZlbnRUaWxlLm14X0V2ZW50VGlsZV9pbmZvIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgIC8qIEF2b2lkIG92ZXJmbG93IG9mIGV2ZW50IGluZm8gYnkgY2FuY2VsbGluZyB3aWR0aCBzZXR0aW5ncyAqL1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLyogaW5jcmVhc2UgbWFyZ2luIGJldHdlZW4gRUxTIGFuZCB0aGUgbmV4dCBFdmVudCB0byBub3QgaGF2ZSBvdXIgdXNlciBhdmF0YXIgb3ZlcmxhcCB0aGUgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiAqL1xuICAgICZbZGF0YS1leHBhbmRlZD1cImZhbHNlXCJdICsgLm14X0V2ZW50VGlsZVtkYXRhLWxheW91dD1cImJ1YmJsZVwiXVtkYXRhLXNlbGY9XCJ0cnVlXCJdIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICB9XG5cbiAgICAmW2RhdGEtZXhwYW5kZWQ9XCJ0cnVlXCJdIC5teF9FdmVudFRpbGVfaW5mbyB7XG4gICAgICAgIHBhZGRpbmc6IDJweCAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG5cbiAgICAgICAgLm14X01lc3NhZ2VBY3Rpb25CYXIge1xuICAgICAgICAgICAgLyogUmVzZXQgLm14X0V2ZW50VGlsZVtkYXRhLWxheW91dD1cImJ1YmJsZVwiXVtkYXRhLXNlbGY9XCJmYWxzZVwiXSAubXhfTWVzc2FnZUFjdGlvbkJhciAqL1xuICAgICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiBpbml0aWFsO1xuICAgICAgICAgICAgaW5zZXQtaW5saW5lLWVuZDogNDhweDsgLyogYWxpZ24gd2l0aCB0aGF0IG9mIHJpZ2h0LWNvbHVtbiBidWJibGVzICovXG4gICAgICAgIH1cblxuICAgICAgICAubXhfUmVhZFJlY2VpcHRHcm91cCB7XG4gICAgICAgICAgICAvKiBtYXRjaCBhbGlnbm1lbnQgdG8gUlJzIG9mIGNoYXQgYnViYmxlcyAqL1xuICAgICAgICAgICAgaW5zZXQtaW5saW5lLWVuZDogY2FsYygtMSAqIHZhcigtLVJlYWRSZWNlaXB0R3JvdXBfRXZlbnRCdWJibGVUaWxlLXNwYWNpbmctZW5kKSArIDYwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGluc2V0LWlubGluZS1lbmQ6IDA7IC8qIG1hdGNoIGFsaWdubWVudCBvZiB0aGUgaG92ZXIgYmFja2dyb3VuZCB0byB0aGF0IG9mIGNoYXQgYnViYmxlcyAqL1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfRXZlbnRUaWxlX3RpbGVFcnJvcltkYXRhLWxheW91dD1cImJ1YmJsZVwiXSAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IC8qIHJlc3RvcmUgdGhlIGNlbnRlcmluZyAqL1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5Db3B5cmlnaHQgMjAyMC0yMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuJGxlZnQtZ3V0dGVyOiA2NHB4O1xuXG4ubXhfRXZlbnRUaWxlIHtcbiAgICAtLUV2ZW50VGlsZV9jb250ZW50LW1hcmdpbi1pbmxpbmUtZW5kOiAzNHB4O1xuICAgIC0tRXZlbnRUaWxlX2dyb3VwX2xpbmUtc3BhY2luZy1ibG9jay1zdGFydDogMXB4O1xuICAgIC0tRXZlbnRUaWxlX2dyb3VwX2xpbmUtc3BhY2luZy1ibG9jay1lbmQ6IDNweDtcbiAgICAtLUV2ZW50VGlsZV9ncm91cF9saW5lLXNwYWNpbmctaW5saW5lLXN0YXJ0OiAkbGVmdC1ndXR0ZXI7XG4gICAgLS1FdmVudFRpbGVfZ3JvdXBfbGluZS1saW5lLWhlaWdodDogJGZvbnQtMjJweDtcbiAgICAtLUV2ZW50VGlsZV9UaHJlYWRTdW1tYXJ5LWxpbmUtaGVpZ2h0OiBjYWxjKDIgKiAkZm9udC0xMnB4KTtcblxuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBjbGVhcjogYm90aDsgLyogVE9ETzogY2hlY2sgaWYgdGhpcyBpcyBuZWNlc3NhcnkgKi9cbiAgICBwYWRkaW5nLXRvcDogMThweDtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGVfYm9keSB7XG4gICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX3JlY2VpcHRTZW50LFxuICAgIC5teF9FdmVudFRpbGVfcmVjZWlwdFNlbmRpbmcge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1zaXplOiAxNnB4O1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0V2ZW50VGlsZV9yZWNlaXB0U2VudDo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NpcmNsZS1zZW50LnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX3JlY2VpcHRTZW5kaW5nOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2lyY2xlLXNlbmRpbmcuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGVfY29udGVudCB7XG4gICAgICAgICYubXhfRWRpdE1lc3NhZ2VDb21wb3NlcixcbiAgICAgICAgJi5teF9FZGl0V3lzaXd5Z0NvbXBvc2VyIHtcbiAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGUgZm9ybWF0dGluZyBiYXIgaXMgdmlzaWJsZSAqL1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX3NlYXJjaEhpZ2hsaWdodCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIGNvbG9yOiAkYWNjZW50LWZnLWNvbG9yO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiAycHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICBjb2xvcjogJGFjY2VudC1mZy1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGVCdWJibGUge1xuICAgICAgICBtYXJnaW4tYmxvY2s6IHZhcigtLUV2ZW50VGlsZUJ1YmJsZV9tYXJnaW4tYmxvY2spO1xuICAgIH1cblxuICAgIC5teF9NSW1hZ2VCb2R5IHtcbiAgICAgICAgLm14X01JbWFnZUJvZHlfdGh1bWJuYWlsX2NvbnRhaW5lciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgLyogb24gZXZlcnkgbGF5b3V0ICovXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRGlzYW1iaWd1YXRlZFByb2ZpbGUge1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwcHg7XG4gICAgfVxuXG4gICAgLm14X1JlYWN0aW9uc1JvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZmxvdzogd3JhcDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAkc3BhY2luZy00O1xuICAgIH1cblxuICAgIC5teF9SZXBseUNoYWluLS1leHBhbmRlZCB7XG4gICAgICAgIC5teF9FdmVudFRpbGVfYm9keSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfY29sbGFwc2VkQ29kZUJsb2NrIHtcbiAgICAgICAgICAgIC8qICFpbXBvcnRhbnQgbmVlZGVkIGR1ZSB0byAubXhfUmVwbHlUaWxlIC5teF9FdmVudFRpbGVfY29udGVudCAubXhfRXZlbnRUaWxlX3ByZV9jb250YWluZXIgPiBwcmUgKi9cbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfUm9vbVZpZXdfc2VhcmNoUmVzdWx0c1BhbmVsICYge1xuICAgICAgICAmLm14X0V2ZW50VGlsZV9jb250ZXh0dWFsIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfRXZlbnRUaWxlX2hpZ2hsaWdodCxcbiAgICAmLm14X0V2ZW50VGlsZV9oaWdobGlnaHQgLm1hcmtkb3duLWJvZHksXG4gICAgJi5teF9FdmVudFRpbGVfaGlnaGxpZ2h0IC5teF9FdmVudFRpbGVfZWRpdGVkIHtcbiAgICAgICAgY29sb3I6ICRhbGVydDtcbiAgICB9XG5cbiAgICAmLm14X0V2ZW50VGlsZV9idWJibGVDb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxMDBweDtcblxuICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAzO1xuICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OyAvKiBvdmVycmlkZSBkZWZhdWx0IHBhZGRpbmcgb2YgbXhfRXZlbnRUaWxlX2xpbmUgc28gdGhhdCB3ZSBjYW4gYmUgY2VudGVyZWQgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfbXNnT3B0aW9uIHtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgICAgIC8qIFRvIGF2b2lkIGJ1YmJsZSBldmVudHMgYmVpbmcgaGlnaGxpZ2h0ZWQgKi9cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X0V2ZW50VGlsZV9pc0VkaXRpbmcgLm14X01lc3NhZ2VUaW1lc3RhbXAge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgJltkYXRhLWxheW91dD1cImlyY1wiXSxcbiAgICAmW2RhdGEtbGF5b3V0PVwiZ3JvdXBcIl0ge1xuICAgICAgICAtLXNlbGVjdGVkLW1lc3NhZ2UtYm9yZGVyLXdpZHRoOiA0cHg7XG5cbiAgICAgICAgLyogVE9ETzogYWRqdXN0IHRoZSB2YWx1ZXMgZm9yIElSQyBsYXlvdXQgKi9cbiAgICAgICAgLS1FdmVudFRpbGUtYm94LXNoYWRvdy1vZmZzZXQteDogY2FsYyg1MHB4ICsgdmFyKC0tc2VsZWN0ZWQtbWVzc2FnZS1ib3JkZXItd2lkdGgpKTtcbiAgICAgICAgLS1FdmVudFRpbGUtYm94LXNoYWRvdy1zcHJlYWQtcmFkaXVzOiAtNTBweDtcbiAgICAgICAgLm14X0V2ZW50VGlsZV9lMmVJY29uIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9NSW1hZ2VCb2R5IHtcbiAgICAgICAgICAgIC5teF9NSW1hZ2VCb2R5X3RodW1ibmFpbF9jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAkZm9udC00NHB4O1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogJGZvbnQtNDRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfbGluZSxcbiAgICAgICAgLm14X0V2ZW50VGlsZV9yZXBseSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRXZlbnRUaWxlX3JlcGx5IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfbXNnT3B0aW9uIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgd2lkdGg6IDkwcHg7XG5cbiAgICAgICAgICAgIC8qIEhhY2sgdG8gc3RvcCB0aGUgaGVpZ2h0IG9mIHRoaXMgcHVzaGluZyB0aGUgbWVzc2FnZXMgYXBhcnQuXG4gICAgICAgICAgICAgICBSZXBsYWNlcyBtYXJnaW4tdG9wOiAtNnB4LiBUaGlzIGludGVyYWN0cyBiZXR0ZXIgd2l0aCBhIHJlYWRcbiAgICAgICAgICAgICAgIG1hcmtlciBiZWluZyBpbiBiZXR3ZWVuLiBDb250ZW50IG92ZXJmbG93cy4gKi9cbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0V2ZW50VGlsZV9oaWdobGlnaHQsXG4gICAgICAgICYubXhfRXZlbnRUaWxlX2hpZ2hsaWdodCAubWFya2Rvd24tYm9keSB7XG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRldmVudC1oaWdobGlnaHQtYmctY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmZvY3VzLXZpc2libGU6Zm9jdXMtd2l0aGluLFxuICAgICAgICAmLm14X0V2ZW50VGlsZV9hY3Rpb25CYXJGb2N1c2VkLFxuICAgICAgICAmLm14X0V2ZW50VGlsZV9pc0VkaXRpbmcsXG4gICAgICAgICYubXhfRXZlbnRUaWxlX3NlbGVjdGVkIHtcbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGV2ZW50LXNlbGVjdGVkLWNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyogdGhpcyBpcyB1c2VkIGZvciB0aGUgdGlsZSBmb3IgdGhlIGV2ZW50IHdoaWNoIGlzIHNlbGVjdGVkIHZpYSB0aGUgVVJMLiAqL1xuICAgICAgICAmLm14X0V2ZW50VGlsZV9pc0VkaXRpbmcsXG4gICAgICAgICYubXhfRXZlbnRUaWxlX3NlbGVjdGVkIHtcbiAgICAgICAgICAgID4gLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgICAgICAvKiBUT0RPOiB1bHRpbWF0ZWx5IHdlIHByb2JhYmx5IHdhbnQgc29tZSB0cmFuc2l0aW9uIG9uIGhlcmUuICovXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgdmFyKC0tRXZlbnRUaWxlLWJveC1zaGFkb3ctb2Zmc2V0LXgpIDAgMCB2YXIoLS1FdmVudFRpbGUtYm94LXNoYWRvdy1zcHJlYWQtcmFkaXVzKVxuICAgICAgICAgICAgICAgICAgICAkYWNjZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9FdmVudFRpbGVfaW5mbyB7XG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2UyZUljb24ge1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfRXZlbnRUaWxlX2NvbnRpbnVhdGlvbiAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGV2ZW50LXNlbGVjdGVkLWNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV92ZXJpZmllZCAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IHZhcigtLUV2ZW50VGlsZS1ib3gtc2hhZG93LW9mZnNldC14KSAwIDAgdmFyKC0tRXZlbnRUaWxlLWJveC1zaGFkb3ctc3ByZWFkLXJhZGl1cylcbiAgICAgICAgICAgICAgICAgICAgJGUyZS12ZXJpZmllZC1jb2xvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9FdmVudFRpbGVfdW52ZXJpZmllZCAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IHZhcigtLUV2ZW50VGlsZS1ib3gtc2hhZG93LW9mZnNldC14KSAwIDAgdmFyKC0tRXZlbnRUaWxlLWJveC1zaGFkb3ctc3ByZWFkLXJhZGl1cylcbiAgICAgICAgICAgICAgICAgICAgJGUyZS11bnZlcmlmaWVkLWNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV91bmtub3duIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgdmFyKC0tRXZlbnRUaWxlLWJveC1zaGFkb3ctb2Zmc2V0LXgpIDAgMCB2YXIoLS1FdmVudFRpbGUtYm94LXNoYWRvdy1zcHJlYWQtcmFkaXVzKVxuICAgICAgICAgICAgICAgICAgICAkZTJlLXVua25vd24tY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmW2RhdGEtbGF5b3V0PVwiYnViYmxlXCJdLFxuICAgICZbZGF0YS1sYXlvdXQ9XCJncm91cFwiXSB7XG4gICAgICAgIC5teF9FdmVudFRpbGVCdWJibGUge1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZTogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9SZXBseUNoYWluIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmW2RhdGEtbGF5b3V0PVwiaXJjXCJdIHtcbiAgICAgICAgLS1FdmVudFRpbGVfaXJjX2xpbmUtcGFkZGluZy1ibG9jazogMXB4O1xuXG4gICAgICAgIC8qIGFkZCAtLXJpZ2h0LXBhZGRpbmcgdmFsdWUgb2YgTWVzc2FnZVRpbWVzdGFtcCBvbmx5ICovXG4gICAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWNsYXJhdGlvbi1jb2xvbi1zcGFjZS1hZnRlciAqL1xuICAgICAgICAtLUV2ZW50VGlsZV9pcmNfbGluZV9pbmZvLW1hcmdpbi1pbmxpbmUtc3RhcnQ6IGNhbGMoXG4gICAgICAgICAgICB2YXIoLS1uYW1lLXdpZHRoKSArIHZhcigtLWljb24td2lkdGgpICsgMSAqIHZhcigtLXJpZ2h0LXBhZGRpbmcpXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuXG4gICAgICAgID4gYSB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC8qIHRpbWVzdGFtcHMgYXJlIGxpbmtzIHdoaWNoIHNob3VsZG4ndCBiZSB1bmRlcmxpbmVkICovXG4gICAgICAgICAgICBtaW4td2lkdGg6IHZhcigtLU1lc3NhZ2VUaW1lc3RhbXAtd2lkdGgpOyAvKiBlbnN1cmUgc3BhY2UgZm9yIEV2ZW50VGlsZSB3aXRob3V0IHRpbWVzdGFtcCAqL1xuICAgICAgICB9XG5cbiAgICAgICAgPiAqIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tcmlnaHQtcGFkZGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRXZlbnRUaWxlX2F2YXRhcixcbiAgICAgICAgLm14X0V2ZW50VGlsZV9lMmVJY29uIHtcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0taXJjLWxpbmUtaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfYXZhdGFyLFxuICAgICAgICAubXhfRGlzYW1iaWd1YXRlZFByb2ZpbGUsXG4gICAgICAgIC5teF9FdmVudFRpbGVfZTJlSWNvbixcbiAgICAgICAgLm14X0V2ZW50VGlsZV9tc2dPcHRpb24ge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRXZlbnRUaWxlX2F2YXRhciB7XG4gICAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICAgICAvKiBOZWVkIHRvIHVzZSBpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgdGhlIGpzIHByb3ZpZGVkIGhlaWdodCBhbmQgd2lkdGggdmFsdWVzLiAqL1xuICAgICAgICAgICAgPiAubXhfQmFzZUF2YXRhcixcbiAgICAgICAgICAgID4gLm14X0Jhc2VBdmF0YXIgPiAqIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICRmb250LTE0cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB3aWR0aDogJGZvbnQtMTRweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRGlzYW1iaWd1YXRlZFByb2ZpbGUge1xuICAgICAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tbmFtZS13aWR0aCk7XG4gICAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogMDsgLyogb3ZlcnJpZGUgbXhfRXZlbnRUaWxlID4gKiAqL1xuXG4gICAgICAgICAgICA+IC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZV9kaXNwbGF5TmFtZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogZW5kO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgID4gLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlX214aWQge1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IGNvbGxhcHNlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwOyAvKiBPdmVycmlkZSB0aGUgaW5oZXJpdGVkIG1hcmdpbi4gKi9cbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTA7XG5cbiAgICAgICAgICAgICAgICA+IC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZV9kaXNwbGF5TmFtZSB7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRldmVudC1zZWxlY3RlZC1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4IDAgMCA4cHg7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRzcGFjaW5nLTg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPiAubXhfRGlzYW1iaWd1YXRlZFByb2ZpbGVfbXhpZCB7XG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRldmVudC1zZWxlY3RlZC1jb2xvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRXZlbnRUaWxlX2UyZUljb24ge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2UyZUljb24sXG4gICAgICAgICAgICAubXhfVGV4dHVhbEV2ZW50LFxuICAgICAgICAgICAgLm14X1ZpZXdTb3VyY2VFdmVudCxcbiAgICAgICAgICAgIC5teF9NVGV4dEJvZHkge1xuICAgICAgICAgICAgICAgIC8qIGFkZCBhIDFweCBwYWRkaW5nIHRvcCBhbmQgYm90dG9tIGJlY2F1c2Ugb3VyIGxhcmdlclxuICAgICAgICAgICAgICAgIGVtb2ppIGZvbnQgb3RoZXJ3aXNlIGdldHMgY3JvcHBlZCBieSBhbnRpLXphbGdvICovXG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tRXZlbnRUaWxlX2lyY19saW5lLXBhZGRpbmctYmxvY2spIDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfZTJlSWNvbixcbiAgICAgICAgICAgIC5teF9UZXh0dWFsRXZlbnQsXG4gICAgICAgICAgICAubXhfTVRleHRCb2R5IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9SZXBseVRpbGUge1xuICAgICAgICAgICAgICAgIC5teF9NVGV4dEJvZHkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsgLyogRW5hYmxlIC13ZWJraXQtbGluZS1jbGFtcCAqL1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfbGluZSxcbiAgICAgICAgLm14X0V2ZW50VGlsZV9yZXBseSB7XG4gICAgICAgICAgICBvcmRlcjogMztcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDE7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRXZlbnRUaWxlX3JlcGx5IHtcbiAgICAgICAgICAgIG9yZGVyOiA0O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9tc2dPcHRpb24ge1xuICAgICAgICAgICAgb3JkZXI6IDU7XG5cbiAgICAgICAgICAgIC5teF9SZWFkUmVjZWlwdEdyb3VwIHtcbiAgICAgICAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogLTAuM3JlbTsgLyogKHZhcigtLWlyYy1saW5lLWhlaWdodCkgLSBhdmF0YXIgaGVpZ2h0KSAvIDIgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9SZXBseUNoYWluIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9NZXNzYWdlVGltZXN0YW1wIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0VkaXRNZXNzYWdlQ29tcG9zZXJfYnV0dG9ucyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRXZlbnRUaWxlQnViYmxlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGxlZnQ6IHZhcigtLUV2ZW50VGlsZV9pcmNfbGluZV9pbmZvLW1hcmdpbi1pbmxpbmUtc3RhcnQpO1xuXG4gICAgICAgICAgICAmLm14X2NyeXB0b0V2ZW50IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiB1bnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9SZXBseVRpbGUgLm14X0V2ZW50VGlsZUJ1YmJsZSB7XG4gICAgICAgICAgICBsZWZ0OiB1bnNldDsgLyogQ2FuY2VsIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYWJvdmUgZm9yIHRoZSB0aWxlIGluc2lkZSBSZXBseVRpbGUgKi9cbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfRXZlbnRUaWxlX2lzRWRpdGluZyA+IC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAubXhfRWRpdE1lc3NhZ2VDb21wb3NlciB7XG4gICAgICAgICAgICAgICAgLyogYWRkIHNwYWNlIGZvciB0aGUgc3Ryb2tlIG9uIGJveC1zaGFkb3cgKi9cbiAgICAgICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogY2FsYyhcbiAgICAgICAgICAgICAgICAgICAgdmFyKC0tc2VsZWN0ZWQtbWVzc2FnZS1ib3JkZXItd2lkdGgpICsgdmFyKC0tRWRpdE1lc3NhZ2VDb21wb3Nlci1wYWRkaW5nLWlubGluZSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9FdmVudFRpbGVfaW5mbyB7XG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2F2YXRhciB7XG4gICAgICAgICAgICAgICAgbGVmdDogdmFyKC0tRXZlbnRUaWxlX2lyY19saW5lX2luZm8tbWFyZ2luLWlubGluZS1zdGFydCk7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tcmlnaHQtcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0tRXZlbnRUaWxlX2lyY19saW5lLXBhZGRpbmctYmxvY2spO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLUV2ZW50VGlsZV9pcmNfbGluZV9pbmZvLW1hcmdpbi1pbmxpbmUtc3RhcnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfVmlld1NvdXJjZUV2ZW50LCAvKiBGb3IgaGlkZGVuIGV2ZW50cyAqL1xuICAgICAgICAgICAgLm14X1RleHR1YWxFdmVudCB7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLWlyYy1saW5lLWhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0V2ZW50VGlsZV9lbW90ZSB7XG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2F2YXRhciB7XG4gICAgICAgICAgICAgICAgLyogYWRkIC0tcmlnaHQtcGFkZGluZyB2YWx1ZSBvZiBNZXNzYWdlVGltZXN0YW1wIG9ubHkgKi9cbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1uYW1lLXdpZHRoKSArIHZhcigtLWljb24td2lkdGgpICsgMSAqIHZhcigtLXJpZ2h0LXBhZGRpbmcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZbZGF0YS1sYXlvdXQ9XCJncm91cFwiXSB7XG4gICAgICAgIC5teF9FdmVudFRpbGVfYXZhdGFyIHtcbiAgICAgICAgICAgIHRvcDogMTRweDtcbiAgICAgICAgICAgIGxlZnQ6ICRzcGFjaW5nLTg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUsXG4gICAgICAgIC5teF9FdmVudFRpbGVfcmVwbHkge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLUV2ZW50VGlsZV9ncm91cF9saW5lLXNwYWNpbmctYmxvY2stc3RhcnQpO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLUV2ZW50VGlsZV9ncm91cF9saW5lLXNwYWNpbmctYmxvY2stZW5kKTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tRXZlbnRUaWxlX2dyb3VwX2xpbmUtc3BhY2luZy1pbmxpbmUtc3RhcnQpO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLUV2ZW50VGlsZV9ncm91cF9saW5lLWxpbmUtaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfZTJlSWNvbiB7XG4gICAgICAgICAgICBpbnNldDogNnB4IDAgMCA0NHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9tc2dPcHRpb24ge1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDEwcHg7XG5cbiAgICAgICAgICAgIC5teF9SZWFkUmVjZWlwdEdyb3VwIHtcbiAgICAgICAgICAgICAgICAvKiBUaGlzIGFsaWducyB0aGUgYXZhdGFyIHdpdGggdGhlIGxhc3QgbGluZSBvZiB0aGUgKi9cbiAgICAgICAgICAgICAgICAvKiBtZXNzYWdlLiBXZSB3YW50IHRvIG1vdmUgaXQgb25lIGxpbmUgdXAgKi9cbiAgICAgICAgICAgICAgICAvKiBTZWUgLm14X0V2ZW50VGlsZVtkYXRhLWxheW91dD1ncm91cF0gLm14X0V2ZW50VGlsZV9saW5lIGluIF9FdmVudFRpbGUuc2NzcyAqL1xuICAgICAgICAgICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiBjYWxjKC0kZm9udC0yMnB4IC0gM3B4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9NZXNzYWdlVGltZXN0YW1wIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfVGhyZWFkU3VtbWFyeSxcbiAgICAgICAgLm14X1RocmVhZFN1bW1hcnlfaWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogJGxlZnQtZ3V0dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1JlYWN0aW9uc1JvdyB7XG4gICAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTQgNjRweDtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMHB4O1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRsZWZ0LWd1dHRlcjtcbiAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gJGxlZnQtZ3V0dGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgei1pbmRleDogOTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tVmlld190aW1lbGluZV9ycl9lbmFibGVkICYge1xuICAgICAgICAgICAgJGlubGluZS1lbmQtbWFyZ2luOiA4MHB4O1xuXG4gICAgICAgICAgICAubXhfVGhyZWFkU3VtbWFyeSxcbiAgICAgICAgICAgIC5teF9UaHJlYWRTdW1tYXJ5X2ljb24sXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGlubGluZS1lbmQtbWFyZ2luO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6ICRmb250LTE0cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9UaHJlYWRTdW1tYXJ5IHtcbiAgICAgICAgICAgICAgICAvKiBsZWF2ZSBzcGFjZSBvbiBib3RoIGxlZnQgJiByaWdodCBndXR0ZXJzICovXG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBtaW4oY2FsYygxMDAlIC0gJGxlZnQtZ3V0dGVyIC0gJGlubGluZS1lbmQtbWFyZ2luKSwgNjAwcHgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBvbiBFTFMgd2UgbmVlZCB0aGUgbWFyZ2luIHRvIGFsbG93IGludGVyYWN0aW9uIHdpdGggdGhlIGV4cGFuZC9jb2xsYXBzZSBidXR0b24gKi9cbiAgICAgICAgICAgIC8qIHdoaWNoIGlzIG5vcm1hbGx5IGluIHRoZSBSUiBndXR0ZXIgKi9cbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfRXZlbnRUaWxlX2NvbnRpbnVhdGlvbiB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfRXZlbnRUaWxlX2luZm8ge1xuICAgICAgICAgICAgJHNwYWNpbmctYmxvY2stc3RhcnQ6IDNweDtcbiAgICAgICAgICAgICRzcGFjaW5nLWJsb2NrLWVuZDogMnB4O1xuXG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcblxuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9hdmF0YXIsXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2UyZUljb24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogJHNwYWNpbmctYmxvY2stc3RhcnQgMCAkc3BhY2luZy1ibG9jay1lbmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfYXZhdGFyIHtcbiAgICAgICAgICAgICAgICB0b3A6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAkbGVmdC1ndXR0ZXI7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6ICRzcGFjaW5nLWJsb2NrLXN0YXJ0ICRzcGFjaW5nLWJsb2NrLWVuZDtcbiAgICAgICAgICAgICAgICAvKiAyMHB4OiBhdmF0YXIgYXJlYSAqL1xuICAgICAgICAgICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiBjYWxjKHZhcigtLUV2ZW50VGlsZV9ncm91cF9saW5lLXNwYWNpbmctaW5saW5lLXN0YXJ0KSArIDIwcHgpO1xuXG4gICAgICAgICAgICAgICAgLm14X01lc3NhZ2VUaW1lc3RhbXAge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV9zZWxlY3RlZCAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgICAgIC8qIFRPRE86IGNoZWNrIGlmIHRoaXMgd291bGQgYmUgbmVjZXNzYXJ5OyAqL1xuICAgICAgICAgICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiBjYWxjKHZhcigtLUV2ZW50VGlsZV9ncm91cF9saW5lLXNwYWNpbmctaW5saW5lLXN0YXJ0KSArIDIwcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV92ZXJpZmllZC5teF9FdmVudFRpbGVfaW5mbyAubXhfRXZlbnRUaWxlX2xpbmUsXG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV91bnZlcmlmaWVkLm14X0V2ZW50VGlsZV9pbmZvIC5teF9FdmVudFRpbGVfbGluZSxcbiAgICAgICAgICAgICYubXhfRXZlbnRUaWxlX3Vua25vd24ubXhfRXZlbnRUaWxlX2luZm8gLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogY2FsYygkbGVmdC1ndXR0ZXIgKyAxOHB4ICsgdmFyKC0tc2VsZWN0ZWQtbWVzc2FnZS1ib3JkZXItd2lkdGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0ge1xuICAgICAgICAvKiBPdGhlciBoYWxmIG9mIHRoZSBndXR0ZXIgaXMgcHJvdmlkZWQgYnkgbWFyZ2luLWJvdHRvbSBvbiB0aGUgbGFzdCB0aWxlXG4gICAgICAgIG9mIHRoZSBzZWN0aW9uICovXG4gICAgICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0tZ3V0dGVyU2l6ZSkgLyAyKTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHZhcigtLUV2ZW50VGlsZV9idWJibGUtbWFyZ2luLWlubGluZS1zdGFydCk7XG5cbiAgICAgICAgLyogUmVzZXQgZGVmYXVsdCB2YWx1ZXMuIFRPRE86IHJlbW92ZSAqL1xuICAgICAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcblxuICAgICAgICAubXhfRXZlbnRUaWxlX21zZ09wdGlvbiB7XG4gICAgICAgICAgICAubXhfUmVhZFJlY2VpcHRHcm91cCB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiBhdXRvO1xuXG4gICAgICAgICAgICAgICAgLyogYXMgY2xvc2UgdG8gcmlnaHQgZ3V0dGVyIHdpdGhvdXQgY2xpcHBpbmcgYXMgcG9zc2libGUgKi9cbiAgICAgICAgICAgICAgICBpbnNldC1pbmxpbmUtZW5kOiBjYWxjKC0xICogdmFyKC0tUmVhZFJlY2VpcHRHcm91cF9FdmVudEJ1YmJsZVRpbGUtc3BhY2luZy1lbmQpKTtcblxuICAgICAgICAgICAgICAgIC8qIChFdmVudFRpbGVMaW5lLmxpbmUtaGVpZ2h0IC0gUmVhZFJlY2VpcHRHcm91cC5oZWlnaHQpIC8gMiAqL1xuICAgICAgICAgICAgICAgIC8qIHRoaXMgY2VudGVycyB0aGUgUmVhZFJlY2VpcHRHcm91cCBpZiB3ZeKAmXZlIGdvdCBhIHNpbmdsZSBsaW5lICovXG4gICAgICAgICAgICAgICAgaW5zZXQtYmxvY2stZW5kOiBjYWxjKCgkZm9udC0xOHB4IC0gMjRweCkgLyAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubXhfRXZlbnRUaWxlQnViYmxlIHtcbiAgICAgICAgICAgIC8qIFRpbWVzdGFtcHMgYXJlIGluc2lkZSB0aGUgdGlsZSwgc28gdGhlIHdpZHRoIGNhbiBiZSBsZXNzIGNvbnN0cmFpbmVkICovXG4gICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9FdmVudFRpbGVfY29udGludWF0aW9uIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgfVxuICAgICAgICAmLm14X0V2ZW50VGlsZV9sYXN0SW5TZWN0aW9uIHtcbiAgICAgICAgICAgIC8qIE90aGVyIGhhbGYgb2YgdGhlIGd1dHRlciBpcyBwcm92aWRlZCBieSBtYXJnaW4tdG9wIG9uIHRoZSBmaXJzdFxuICAgICAgICAgICAgdGlsZSBvZiB0aGUgc2VjdGlvbiAqL1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1ndXR0ZXJTaXplKSAvIDIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfR2VuZXJpY0V2ZW50TGlzdFN1bW1hcnkge1xuICAgICZbZGF0YS1sYXlvdXQ9XCJpcmNcIl0sXG4gICAgJltkYXRhLWxheW91dD1cImdyb3VwXCJdIHtcbiAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lIC5teF9SZWRhY3RlZEJvZHkge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7IC8qIHJlbW92ZSBzcGFjaW5nIGJldHdlZW4gbGluZXMgKi9cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZbZGF0YS1sYXlvdXQ9XCJpcmNcIl0ge1xuICAgICAgICAvKiBBcHBseSBvbmx5IGNvbGxhcHNlZCBldmVudHMgYmxvY2sgKi9cbiAgICAgICAgPiAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgLyogYWRkIC0tcmlnaHQtcGFkZGluZyB2YWx1ZSBvZiBNZXNzYWdlVGltZXN0YW1wIGFuZCBhdmF0YXIgb25seSAqL1xuICAgICAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlY2xhcmF0aW9uLWNvbG9uLXNwYWNlLWFmdGVyICovXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoXG4gICAgICAgICAgICAgICAgdmFyKC0tbmFtZS13aWR0aCkgKyB2YXIoLS1pY29uLXdpZHRoKSArIHZhcigtLU1lc3NhZ2VUaW1lc3RhbXAtd2lkdGgpICsgMiAqIHZhcigtLXJpZ2h0LXBhZGRpbmcpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJltkYXRhLWxheW91dD1cImdyb3VwXCJdIHtcbiAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJGxlZnQtZ3V0dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5X3Vuc3R5bGVkTGlzdCA+IC5teF9FdmVudFRpbGVfaW5mbyAubXhfRXZlbnRUaWxlX2F2YXRhciB+IC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAvKiBvdmVycmlkZSBwYWRkaW5nLWxlZnQgJGxlZnQtZ3V0dGVyICovXG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogY2FsYyh2YXIoLS1FdmVudFRpbGVfZ3JvdXBfbGluZS1zcGFjaW5nLWlubGluZS1zdGFydCkgKyAyMHB4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0V2ZW50VGlsZV9jb250ZW50IHtcbiAgICAvKlxuICAgIGFsbCB0aGUgb3ZlcmZsb3cteTogaGlkZGVuOyBhcmUgdG8gdHJhcCBaYWxnb3MgLVxuICAgIGJ1dCB0aGV5IGludHJvZHVjZSBhbiBpbXBsaWNpdCBvdmVyZmxvdy14OiBhdXRvLlxuICAgIHNvIG1ha2UgdGhhdCBleHBsaWNpdGx5IGhpZGRlbiB0b28gdG8gYXZvaWQgcmFuZG9tXG4gICAgaG9yaXpvbnRhbCBzY3JvbGxiYXJzIG9jY2FzaW9uYWxseSBhcHBlYXJpbmcsIGxpa2UgaW5cbiAgICBodHRwczovL2dpdGh1Yi5jb20vdmVjdG9yLWltL3ZlY3Rvci13ZWIvaXNzdWVzLzExNTRcbiAgICAqL1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1FdmVudFRpbGVfY29udGVudC1tYXJnaW4taW5saW5lLWVuZCk7XG5cbiAgICAubXhfRXZlbnRUaWxlX2VkaXRlZCxcbiAgICAubXhfRXZlbnRUaWxlX3BlbmRpbmdNb2RlcmF0aW9uIHtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgY29sb3I6ICRyb29tdG9waWMtY29sb3I7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDlweDtcbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX2VkaXRlZCB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAubWFya2Rvd24tYm9keSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7IC8qIGluaGVyaXQgdGhlIGNvbG91ciBmcm9tIHRoZSBkYXJrIG9yIGxpZ2h0IHRoZW1lIGJ5IGRlZmF1bHQgKGJ1dCBub3QgZm9yIGNvZGUgYmxvY2tzKSAqL1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG5cbiAgICAgICAgcHJlLFxuICAgICAgICBjb2RlIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkbW9ub3NwYWNlLWZvbnQtZmFtaWx5ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3lzdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgY29kZTpub3QocHJlICopIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpbmxpbmVjb2RlLWJhY2tncm91bmQtY29sb3I7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkaW5saW5lY29kZS1ib3JkZXItY29sb3I7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgICAvLyBUaGUgaG9yaXpvbnRhbCBwYWRkaW5nIGlzIGFkZGVkIGJ5IGdmbS5jc3MgLm1hcmtkb3duLWJvZHlcbiAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTIgMDtcbiAgICAgICAgICAgIC8vIEF2b2lkIGlubGluZSBjb2RlIGJsb2NrcyB0byBiZSBzdGlja2VkIHdoZW4gb24gbXVsdGlwbGUgbGluZXNcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMnB4O1xuICAgICAgICAgICAgLy8gQXZvaWQgdGhlIGJvcmRlciB0byBiZSBnbHVlZCB0byB0aGUgb3RoZXIgd29yZHNcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvZGUge1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyAvKiBkb24ndCBjb2xsYXBzZSBzcGFjZXMgaW4gaW5saW5lIGNvZGUgYmxvY2tzICovXG4gICAgICAgIH1cblxuICAgICAgICBwcmUge1xuICAgICAgICAgICAgLyogaGF2ZSB0byB1c2Ugb3ZlcmxheSByYXRoZXIgdGhhbiBhdXRvIG90aGVyd2lzZSBMaW51eCBhbmQgV2luZG93cyAqL1xuICAgICAgICAgICAgLyogQ2hyb21lIGdldHMgdmVyeSBjb25mdXNlZCBhYm91dCB2ZXJ0aWNhbCBzcGFjaW5nOiAqL1xuICAgICAgICAgICAgLyogaHR0cHM6Ly9naXRodWIuY29tL3ZlY3Rvci1pbS92ZWN0b3Itd2ViL2lzc3Vlcy83NTQgKi9cbiAgICAgICAgICAgIG92ZXJmbG93LXg6IG92ZXJsYXk7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiB2aXNpYmxlO1xuXG4gICAgICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkcXVpbmFyeS1jb250ZW50O1xuXG4gICAgICAgICAgICBjb2RlIHtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlOyAvKiB3ZSB3YW50IGNvZGUgYmxvY2tzIHRvIGJlIHNjcm9sbGFibGUgYW5kIG5vdCB3cmFwICovXG5cbiAgICAgICAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaDEsXG4gICAgICAgIGgyLFxuICAgICAgICBoMyxcbiAgICAgICAgaDQsXG4gICAgICAgIGg1LFxuICAgICAgICBoNiB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBNYWtlIGgxIGFuZCBoMiB0aGUgc2FtZSBzaXplIGFzIGgzLiAqL1xuICAgICAgICBoMSxcbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsgLyogb3ZlcnJpZGUgR0ZNICovXG4gICAgICAgIH1cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYWNjZW50LWFsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJsb2NrcXVvdGUge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAkYmxvY2txdW90ZS1iYXItY29sb3I7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAvLyBhY3R1YWxseSwgcmVtb3ZpbmcgdGhlIEl0YWxpYyBUVEYgcHJvdmlkZXNcbiAgICAgICAgLy8gYmV0dGVyIHJlc3VsdHMgc2VlbWluZ2x5XG5cbiAgICAgICAgLy8gY29tcGVuc2F0ZSBmb3IgTnVuaXRvIGl0YWxpY3MgYmVpbmcgdGVycmlibGVcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9mb250cy9pc3N1ZXMvMTcyNlxuICAgICAgICBlbSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNrZXdYKC0xNGRlZyk7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgKi9cblxuICAgICAgICAvKiBPdmVycmlkZSBuZXN0ZWQgbGlzdHMgYmVpbmcgbG93ZXItcm9tYW4gKi9cbiAgICAgICAgb2wgb2wsXG4gICAgICAgIHVsIG9sIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogcmV2ZXJ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLyogTWFrZSBsaXN0IHR5cGUgZGlzYyB0byBtYXRjaCByaWNoIHRleHQgZWRpdG9yICovXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogU3BvaWxlciBzdHVmZiAqL1xuLm14X0V2ZW50VGlsZV9zcG9pbGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAubXhfRXZlbnRUaWxlX3Nwb2lsZXJfcmVhc29uIHtcbiAgICAgICAgY29sb3I6ICRldmVudC10aW1lc3RhbXAtY29sb3I7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTFweDtcbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX3Nwb2lsZXJfY29udGVudCB7XG4gICAgICAgIGZpbHRlcjogYmx1cig1cHgpIHNhdHVyYXRlKDAuMSkgc2VwaWEoMSk7XG4gICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7XG4gICAgfVxuXG4gICAgJi52aXNpYmxlID4gLm14X0V2ZW50VGlsZV9zcG9pbGVyX2NvbnRlbnQge1xuICAgICAgICBmaWx0ZXI6IG5vbmU7XG4gICAgfVxufVxuXG4ubXhfRXZlbnRUaWxlX2JpZ0Vtb2ppIHtcbiAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDU3cHg7XG5cbiAgICAubXhfRW1vamkge1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5teF9FdmVudFRpbGVfZTJlSWNvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGhlaWdodDogMTRweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBtYXNrLXNpemU6IDgwJTtcbiAgICB9XG5cbiAgICAmLm14X0V2ZW50VGlsZV9lMmVJY29uX3dhcm5pbmc6OmFmdGVyIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lMmUvd2FybmluZy5zdmdcIik7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlMmUtd2FybmluZy1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm14X0V2ZW50VGlsZV9lMmVJY29uX25vcm1hbDo6YWZ0ZXIge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2UyZS9ub3JtYWwuc3ZnXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLXBhbmVsLXRleHQtcHJpbWFyeS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm14X0V2ZW50VGlsZV9lMmVJY29uX2RlY3J5cHRpb25fZmFpbHVyZTo6YWZ0ZXIge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2UyZS9kZWNyeXB0aW9uLWZhaWx1cmUuc3ZnXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgfVxufVxuXG4ubXhfRXZlbnRUaWxlX2JvZHkge1xuICAgIGE6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG5cbiAgICBwcmUge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgICAubXhfRXZlbnRUaWxlOmhvdmVyICYsXG4gICAgICAgIC5teF9FdmVudFRpbGUuZm9jdXMtdmlzaWJsZTpmb2N1cy13aXRoaW4gJiB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIHNlbGVjdG9yIHdyb25nbHkgYXBwbGllcyB0byBwaWxsIGF2YXRhcnMgYnV0IHRob3NlIGhhdmUgZXhwbGljaXQgd2lkdGgvaGVpZ2h0IHBhc3NlZCBhdCBhIGhpZ2hlciBzcGVjaWZpY2l0eSAqL1xuICAgICYubWFya2Rvd24tYm9keSBpbWcge1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBvYmplY3QtcG9zaXRpb246IGxlZnQgdG9wO1xuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGVfY2xhbXAgJiB7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGVfcHJlX2NvbnRhaW5lciB7XG4gICAgICAgIC8qIEZvciBjb3JyZWN0IHBvc2l0aW9uaW5nIG9mIF9jb3B5QnV0dG9uIChTZWUgVGV4dHVhbEJvZHkpICovXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAmOmZvY3VzLXdpdGhpbixcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2J1dHRvbiB7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfY29sbGFwc2VkQ29kZUJsb2NrIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDMwdmg7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogJHNwYWNpbmctMTI7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNpbmctMTI7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBJbnNlcnRlZCBhZGphY2VudCB0byA8cHJlPiBibG9ja3MsIChTZWUgVGV4dHVhbEJvZHkpICovXG4gICAgICAgIC5teF9FdmVudFRpbGVfYnV0dG9uIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogJHNwYWNpbmctODtcbiAgICAgICAgICAgIHJpZ2h0OiAkc3BhY2luZy04O1xuICAgICAgICAgICAgd2lkdGg6IDE5cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE5cHg7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWVzc2FnZS1hY3Rpb24tYmFyLWZnLWNvbG9yO1xuXG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV9idXR0b25Cb3R0b20ge1xuICAgICAgICAgICAgICAgIHRvcDogMzNweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9FdmVudFRpbGVfY29sbGFwc2VCdXR0b24sXG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV9leHBhbmRCdXR0b24ge1xuICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogNzUlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9jb3B5QnV0dG9uIHtcbiAgICAgICAgICAgIGhlaWdodDogMTdweDtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybCgkY29weS1idXR0b24tdXJsKTtcbiAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgcmlnaHQ6IDlweDtcbiAgICAgICAgICAgIHdpZHRoOiAxN3B4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfRXZlbnRUaWxlX2xpbmVOdW1iZXJzIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW46IDAgMC41ZW0gMCAtMS41ZW07XG4gICAgY29sb3I6IGdyYXk7XG5cbiAgICAmIHNwYW4ge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMWVtO1xuICAgIH1cbn1cblxuLm14X0V2ZW50VGlsZV9idXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5teF9FdmVudFRpbGVfY29sbGFwc2VCdXR0b24sXG4ubXhfRXZlbnRUaWxlX2V4cGFuZEJ1dHRvbiB7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5teF9FdmVudFRpbGVfY29sbGFwc2VCdXR0b24ge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9taW5pbWlzZS1jb2xsYXBzZS5zdmdcIik7XG59XG5cbi5teF9FdmVudFRpbGVfZXhwYW5kQnV0dG9uIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbWF4aW1pc2UtZXhwYW5kLnN2Z1wiKTtcbn1cblxuLm14X0V2ZW50VGlsZV90aWxlRXJyb3Ige1xuICAgIGNvbG9yOiByZWQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLyogUmVtb3ZlIHNvbWUgb2YgdGhlIGRlZmF1bHQgdGlsZSBwYWRkaW5nIHNvIHRoYXQgdGhlIGVycm9yIGlzIGNlbnRlcmVkICovXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuXG4gICAgLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy00ICRzcGFjaW5nLTg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgICB9XG59XG5cbi5teF9FdmVudFRpbGU6aG92ZXIgLm14X01lc3NhZ2VBY3Rpb25CYXIsXG4ubXhfRXZlbnRUaWxlLm14X0V2ZW50VGlsZV9hY3Rpb25CYXJGb2N1c2VkIC5teF9NZXNzYWdlQWN0aW9uQmFyLFxuW2RhdGEtd2hhdGlucHV0PVwia2V5Ym9hcmRcIl0gLm14X0V2ZW50VGlsZTpmb2N1cy13aXRoaW4gLm14X01lc3NhZ2VBY3Rpb25CYXIsXG4ubXhfRXZlbnRUaWxlLmZvY3VzLXZpc2libGU6Zm9jdXMtd2l0aGluIC5teF9NZXNzYWdlQWN0aW9uQmFyIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4vKiBJbnZlcnNlIG9mIHRoZSBhYm92ZSB0byAqZGlzYWJsZSogdGhlIGFuaW1hdGlvbiBvbiBhbnkgaW5kaWNhdG9ycy4gVGhpcyBhcHByb2FjaCAqL1xuLyogaXMgbGVzcyBwcmV0dHksIGJ1dCBpcyBlYXNpZXIgdG8gdGFyZ2V0IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIG5lZWQgdG8gZGVmaW5lIHRoZSAqL1xuLyogYW5pbWF0aW9uIGZvciB3aGVuIGl0J3Mgc2hvd24gd2hpY2ggbWVhbnMgZHVwbGljYXRpbmcgdGhlIHN0eWxlIGRlZmluaXRpb24gaW4gKi9cbi8qIG11bHRpcGxlIHBsYWNlcy4gKi9cbi5teF9FdmVudFRpbGU6bm90KDpob3Zlcik6bm90KC5teF9FdmVudFRpbGVfYWN0aW9uQmFyRm9jdXNlZCk6bm90KFtkYXRhLXdoYXRpbnB1dD1cImtleWJvYXJkXCJdIDpmb2N1cy13aXRoaW4pIHtcbiAgICAmOm5vdCguZm9jdXMtdmlzaWJsZTpmb2N1cy13aXRoaW4pIC5teF9NZXNzYWdlQWN0aW9uQmFyIC5teF9JbmRpY2F0b3Ige1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4ubXhfRXZlbnRUaWxlW2RhdGEtc2hhcGU9XCJUaHJlYWRzTGlzdFwiXSxcbi5teF9FdmVudFRpbGVbZGF0YS1zaGFwZT1cIk5vdGlmaWNhdGlvblwiXSB7XG4gICAgLS10b3BPZmZzZXQ6ICRzcGFjaW5nLTEyO1xuICAgIC0tbGVmdE9mZnNldDogNDhweDtcbiAgICAkYm9yZGVyUmFkaXVzOiA4cHg7XG4gICAgJHBhZGRpbmc6ICRzcGFjaW5nLTg7XG4gICAgJGhySGVpZ2h0OiAxcHg7XG4gICAgJG5vdGlmaWNhdGlvbi1kb3Qtc2l6ZTogOHB4OyAvKiBub3RpZmljYXRpb24gZG90IG5leHQgdG8gdGhlIHRpbWVzdGFtcCAqL1xuXG4gICAgbWFyZ2luOiBjYWxjKHZhcigtLXRvcE9mZnNldCkgKyAkaHJIZWlnaHQpIDAgdmFyKC0tdG9wT2Zmc2V0KTsgLyogaW5jbHVkZSB0aGUgaGVpZ2h0IG9mIGhvcml6b250YWwgbGluZSAqL1xuICAgIHBhZGRpbmc6ICRwYWRkaW5nICRzcGFjaW5nLTI0ICRwYWRkaW5nICRwYWRkaW5nO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgJjo6YWZ0ZXIsXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgJGluc2V0LWJsb2NrLXN0YXJ0OiBhdXRvO1xuICAgICAgICAkaW5zZXQtaW5saW5lLWVuZDogY2FsYygzMnB4IC0gJHBhZGRpbmcpO1xuICAgICAgICAkaW5zZXQtYmxvY2stZW5kOiBjYWxjKC0xICogdmFyKC0tdG9wT2Zmc2V0KSAtICRockhlaWdodCk7IC8qIGV4Y2x1ZGUgdGhlIGhlaWdodCBvZiBob3Jpem9udGFsIGxpbmUgKi9cbiAgICAgICAgJGluc2V0LWlubGluZS1zdGFydDogY2FsYyh2YXIoLS1sZWZ0T2Zmc2V0KSArICRwYWRkaW5nKTtcbiAgICAgICAgaW5zZXQ6ICRpbnNldC1ibG9jay1zdGFydCAkaW5zZXQtaW5saW5lLWVuZCAkaW5zZXQtYmxvY2stZW5kICRpbnNldC1pbmxpbmUtc3RhcnQ7XG5cbiAgICAgICAgaGVpZ2h0OiAkaHJIZWlnaHQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvKiBkaXNhYmxlIHRoZSBtZXNzYWdlIGFjdGlvbiBiYXIgb24gaG92ZXIgKi9cbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIGVuc3VyZXMgdGhlIHRpdGxlIGZvciB0aGUgc2VuZGVyIG5hbWUgY2FuIGJlIGNvcnJlY3RseSBkaXNwbGF5ZWQgKi9cbiAgICB9XG5cbiAgICAvKiBEaXNwbGF5IG5vdGlmaWNhdGlvbiBkb3QgKi9cbiAgICAmW2RhdGEtbm90aWZpY2F0aW9uXTo6YmVmb3JlLFxuICAgIC5teF9Ob3RpZmljYXRpb25CYWRnZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgJG5vdGlmaWNhdGlvbi1pbnNldC1ibG9jay1zdGFydDogMTRweDsgLyogMTRweDogYWxpZ24gdGhlIGRvdCB3aXRoIHRoZSB0aW1lc3RhbXAgcm93ICovXG5cbiAgICAgICAgLyogIWltcG9ydGFudCB0byBmaXggb3Zlcmx5IHNwZWNpZmljIENTUyBzZWxlY3RvciBhcHBsaWVkIG9uIG14X05vdGlmaWNhdGlvbkJhZGdlICovXG4gICAgICAgIHdpZHRoOiAkbm90aWZpY2F0aW9uLWRvdC1zaXplICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogJG5vdGlmaWNhdGlvbi1kb3Qtc2l6ZSAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGluc2V0OiAkbm90aWZpY2F0aW9uLWluc2V0LWJsb2NrLXN0YXJ0ICRzcGFjaW5nLTggYXV0byBhdXRvO1xuICAgIH1cblxuICAgIC5teF9Ob3RpZmljYXRpb25CYWRnZV9jb3VudCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJltkYXRhLW5vdGlmaWNhdGlvbj1cInRvdGFsXCJdOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcm9vbS1pY29uLXVucmVhZC1jb2xvcjtcbiAgICB9XG5cbiAgICAmW2RhdGEtbm90aWZpY2F0aW9uPVwiaGlnaGxpZ2h0XCJdOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWxlcnQ7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogdW5zZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cblxuICAgIC5teF9FdmVudFRpbGVfYXZhdGFyIHtcbiAgICAgICAgaW5zZXQ6ICRwYWRkaW5nIGF1dG8gYXV0byAkcGFkZGluZztcbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX2RldGFpbHMge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4OiAxO1xuXG4gICAgICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZV9kaXNwbGF5TmFtZSxcbiAgICAgICAgLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlX214aWQge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRGlzYW1iaWd1YXRlZFByb2ZpbGVfZGlzcGxheU5hbWUge1xuICAgICAgICAgICAgZmxleDogbm9uZTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZV9teGlkIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1sZWZ0T2Zmc2V0KTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZVRpbWVzdGFtcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgd2lkdGg6IHVuc2V0OyAvKiBDYW5jZWwgdGhlIGRlZmF1bHQgd2lkdGggKi9cbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogZW5zdXJlIGNvcnJlY3Qgb3ZlcmZsb3cgYmVoYXZpb3IgKi9cbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHBvc2l0aW9uOiBpbml0aWFsO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsgLyogdG8gZW5zdXJlIGl0J3MgZW5kLWFsaWduZWQgZXZlbiBpZiBpdCdzIHRoZSBvbmx5IGVsZW1lbnQgb2YgaXRzIHBhcmVudCAqL1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3lzdGVtO1xuICAgIH1cblxuICAgIC8qIFRocmVhZHNMaXN0IGhhcyBhbHdheXMgZ3JvdXAgbGF5b3V0ICovXG4gICAgJltkYXRhLWxheW91dD1cImdyb3VwXCJdOmhvdmVyIHtcbiAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzeXN0ZW07IC8qIG92ZXJyaWRlICRldmVudC1zZWxlY3RlZC1jb2xvciAqL1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTsgLyogZG9uJ3Qgc2hvdyB0aGUgdmVyaWZpY2F0aW9uIGxlZnQgc3Ryb2tlIGluIHRoZSB0aHJlYWQgbGlzdCAqL1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfRXZlbnRUaWxlW2RhdGEtc2hhcGU9XCJUaHJlYWRzTGlzdFwiXSB7XG4gICAgLm14X1RocmVhZFBhbmVsX3JlcGxpZXMge1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy04O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIEBtaXhpbiBUaHJlYWRTdW1tYXJ5SWNvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9UaHJlYWRQYW5lbF9yZXBsaWVzX2Ftb3VudCB7XG4gICAgICAgICAgICBAbWl4aW4gVGhyZWFkUmVwbGllc0Ftb3VudDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1FdmVudFRpbGVfVGhyZWFkU3VtbWFyeS1saW5lLWhlaWdodCk7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7IC8qIFNhbWUgZm9udCBzaXplIGFzIHRoZSBjb3VudGVyIG9uIHRoZSBtYWluIHBhbmVsICovXG4gICAgICAgIH1cblxuICAgICAgICAubXhfVGhyZWFkU3VtbWFyeV9jb250ZW50IHtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIEZvciBzdHlsZSBydWxlcyBvZiBUaHJlYWRWaWV3LCBzZWUgX1RocmVhZFBhbmVsLnBjc3MgKi9cbi5teF9UaHJlYWRWaWV3IHtcbiAgICAtLVRocmVhZFZpZXdfZ3JvdXBfc3BhY2luZy1zdGFydDogNTZweDsgLyogNTZweDogNjRweCAtIDhweCAocGFkZGluZykgKi9cbiAgICAtLVRocmVhZFZpZXdfZ3JvdXBfc3BhY2luZy1lbmQ6IDhweDsgLyogc2FtZSBhcyBwYWRkaW5nICovXG5cbiAgICAubXhfRXZlbnRUaWxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAubXhfRXZlbnRUaWxlX3Jvb21OYW1lIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBoYW5kbGluZyBmb3IgaGlkZGVuIGV2ZW50cyAoZS5nIHJlYWN0aW9ucykgaW4gdGhlIHRocmVhZCB2aWV3ICovXG4gICAgICAgICYubXhfRXZlbnRUaWxlX2luZm8ge1xuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDEuNXB4OyAvKiBBbGlnbiB3aXRoIGhpZGRlbiBldmVudCBjb250ZW50ICovXG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNHB4OyAvKiBhdmF0YXIgaW1nIHNpemUgKi9cbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE0cHg7IC8qIGF2YXRhciBpbWcgc2l6ZSAqL1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfVmlld1NvdXJjZUV2ZW50X3RvZ2dsZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgLyogaGlkZSB0aGUgaGlkZGVuIGV2ZW50IGV4cGFuZCBidXR0b24sIG5vdCBlbm91Z2hcbiAgICAgICAgICAgICAgICBzcGFjZSwgdmlldyBzb3VyY2UgY2FuIHN0aWxsIGJlIHVzZWQgKi9cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9FdmVudFRpbGVfc2VsZWN0ZWQgLm14X0V2ZW50VGlsZV9saW5lLFxuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgICAgICAkbGluZS1oZWlnaHQ6ICRmb250LTEycHg7XG5cbiAgICAgICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9jb250ZW50LFxuICAgICAgICAgICAgICAgIC5teF9SZWRhY3RlZEJvZHkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkbGluZS1oZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmW2RhdGEtbGF5b3V0PVwiaXJjXCJdLFxuICAgICAgICAgICAgJltkYXRhLWxheW91dD1cImdyb3VwXCJdIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcblxuICAgICAgICAgICAgICAgIC5teF9FdmVudFRpbGVfYXZhdGFyIHtcbiAgICAgICAgICAgICAgICAgICAgLyogMTRweDogYXZhdGFyIHdpZHRoLCA0cHg6IGFsaWduIHdpdGggdGV4dCAqL1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBjYWxjKHZhcigtLU1lc3NhZ2VUaW1lc3RhbXAtd2lkdGgpICsgMTRweCAtIDRweCk7XG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDk7IC8qIHBvc2l0aW9uIGFib3ZlIHRoZSBob3ZlciBzdHlsaW5nICovXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm14X01lc3NhZ2VUaW1lc3RhbXAge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDJweDsgLyogQWxpZ24gd2l0aCBhdmF0YXIgKi9cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLm14X0V2ZW50VGlsZV9zZWxlY3RlZCAubXhfRXZlbnRUaWxlX2xpbmUsXG4gICAgICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9jb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAubXhfUmVkYWN0ZWRCb2R5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIDE0cHg6IGF2YXRhciB3aWR0aCwgNnB4OiAyMHB4IC0gMTRweCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogY2FsYygxNHB4ICsgNnB4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJltkYXRhLWxheW91dD1cImJ1YmJsZVwiXSB7XG4gICAgICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICAgICAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5teF9FdmVudFRpbGVfc2VsZWN0ZWQgLm14X0V2ZW50VGlsZV9saW5lLFxuICAgICAgICAgICAgICAgIC5teF9FdmVudFRpbGVfbGluZSB7XG4gICAgICAgICAgICAgICAgICAgIC5teF9FdmVudFRpbGVfY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgLm14X1JlZGFjdGVkQm9keSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBjYWxjKHZhcigtLVRocmVhZFZpZXdfZ3JvdXBfc3BhY2luZy1zdGFydCkgKyAxNHB4ICsgNnB4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZbZGF0YS1sYXlvdXQ9XCJpcmNcIl0sXG4gICAgICAgICZbZGF0YS1sYXlvdXQ9XCJncm91cFwiXSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiAkc3BhY2luZy0xNjtcblxuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lLFxuICAgICAgICAgICAgLm14X1JlYWN0aW9uc1JvdyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLVRocmVhZFZpZXdfZ3JvdXBfc3BhY2luZy1lbmQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IHZhcigtLUJhc2VDYXJkX0V2ZW50VGlsZV9saW5lLXBhZGRpbmctYmxvY2spO1xuXG4gICAgICAgICAgICAgICAgLyogQWRkIHBhZGRpbmcgdG8gYWxpZ24gbWVzc2FnZSB0ZXh0IHdpdGggc3VtbWFyeSB0ZXh0ICovXG4gICAgICAgICAgICAgICAgLyogU2VlOiAubXhfRXZlbnRUaWxlW2RhdGEtbGF5b3V0PVwiZ3JvdXBcIl0gLm14X0V2ZW50VGlsZV9saW5lICovXG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLVRocmVhZFZpZXdfZ3JvdXBfc3BhY2luZy1zdGFydCk7XG5cbiAgICAgICAgICAgICAgICAubXhfRXZlbnRUaWxlX2NvbnRlbnQge1xuICAgICAgICAgICAgICAgICAgICAmLm14X0VkaXRNZXNzYWdlQ29tcG9zZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7IC8qIGFsaWduIHN0YXJ0IG9mIGZpcnN0IGxldHRlciB3aXRoIHRoYXQgb2YgdGhlIGV2ZW50IGJvZHkgKi9cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1JlYWN0aW9uc1JvdyB7XG4gICAgICAgICAgICAgICAgLyogQWxpZ24gd2l0aCBtZXNzYWdlIHRleHQgYW5kIHN1bW1hcnkgdGV4dCAqL1xuICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLVRocmVhZFZpZXdfZ3JvdXBfc3BhY2luZy1zdGFydCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfRXZlbnRUaWxlX2NvbnRpbnVhdGlvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ibG9jay1zdGFydDogMDsgLyogQ2FuY2VsIHBhZGRpbmctYmxvY2stc3RhcnQgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZbZGF0YS1sYXlvdXQ9XCJncm91cFwiXSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9zZW5kZXJEZXRhaWxzIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZ2FwOiAkc3BhY2luZy0xNjsgLyogZ2FwIGJldHdlZW4gdGhlIGF2YXRhciBhbmQgdGhlIHNlbmRlciBJRCAqL1xuICAgICAgICAgICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAkc3BhY2luZy04O1xuXG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgICAgICAgIG1pbi13aWR0aDogdW5zZXQ7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAgICAgICAgICAgICAubXhfRGlzYW1iaWd1YXRlZFByb2ZpbGUge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9NZXNzYWdlVGltZXN0YW1wIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IC8qIGZvciBJUkMgbGF5b3V0ICovXG4gICAgICAgICAgICAgICAgdG9wOiAycHg7IC8qIEFsaWduIHdpdGggbXhfRXZlbnRUaWxlX2NvbnRlbnQgKi9cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgJi5teF9FdmVudFRpbGVfdmVyaWZpZWQubXhfRXZlbnRUaWxlX2luZm8gLm14X0V2ZW50VGlsZV9saW5lLFxuICAgICAgICAgICAgICAgICYubXhfRXZlbnRUaWxlX3VudmVyaWZpZWQubXhfRXZlbnRUaWxlX2luZm8gLm14X0V2ZW50VGlsZV9saW5lLFxuICAgICAgICAgICAgICAgICYubXhfRXZlbnRUaWxlX3Vua25vd24ubXhfRXZlbnRUaWxlX2luZm8gLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLWxheW91dD1cImJ1YmJsZVwiXSB7XG4gICAgICAgICAgICBtYXJnaW4taW5saW5lOiB2YXIoLS1CYXNlQ2FyZF9FdmVudFRpbGUtc3BhY2luZy1pbmxpbmUpO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGluc2V0LWlubGluZTogY2FsYygtMSAqIHZhcigtLUJhc2VDYXJkX0V2ZW50VGlsZS1zcGFjaW5nLWlubGluZSkpO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IGF1dG87IC8qIGVuYWJsZSBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyICovXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9SZWFjdGlvbnNSb3cge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogZGlzcGxheSBvbiBob3ZlciAqL1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUubXhfRXZlbnRUaWxlX21lZGlhTGluZSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ibG9jazogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMDtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IHZhcigtLUV2ZW50QnViYmxlVGlsZV9saW5lLW1heC13aWR0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZbZGF0YS1zZWxmPVwidHJ1ZVwiXSB7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXG4gICAgICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9saW5lLm14X0V2ZW50VGlsZV9tZWRpYUxpbmUge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgdmFyKC0tRXZlbnRUaWxlX2J1YmJsZV9saW5lLW1hcmdpbi1pbmxpbmUtZW5kKSAwIDA7IC8qIGFsaWduIHdpdGggbm9ybWFsIG1lc3NhZ2VzICovXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0dlbmVyaWNFdmVudExpc3RTdW1tYXJ5IHtcbiAgICAgICAgJltkYXRhLWxheW91dD1cImlyY1wiXSxcbiAgICAgICAgJltkYXRhLWxheW91dD1cImdyb3VwXCJdIHtcbiAgICAgICAgICAgID4gLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0tVGhyZWFkVmlld19ncm91cF9zcGFjaW5nLXN0YXJ0KTsgLyogYWxpZ24gc3VtbWFyeSB0ZXh0IHdpdGggbWVzc2FnZSB0ZXh0ICovXG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1UaHJlYWRWaWV3X2dyb3VwX3NwYWNpbmctZW5kKTsgLyogYWxpZ24gc3VtbWFyeSB0ZXh0IHdpdGggbWVzc2FnZSB0ZXh0ICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIENhc2NhZGluZyAtIGNvbXBhY3QgbW9kZXJuIGxheW91dCBvbiB0aGUgbWFpbiB0aW1lbGluZSBhbmQgdGhlIHJpZ2h0IHBhbmVsICovXG4ubXhfTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0IHtcbiAgICAubXhfRXZlbnRUaWxlW2RhdGEtbGF5b3V0PVwiZ3JvdXBcIl0ge1xuICAgICAgICAtLU1hdHJpeENoYXRfdXNlQ29tcGFjdExheW91dF9ncm91cC1wYWRkaW5nLXRvcDogJHNwYWNpbmctNDtcbiAgICAgICAgLS1NYXRyaXhDaGF0X3VzZUNvbXBhY3RMYXlvdXQtdG9wLWF2YXRhcjogMnB4O1xuICAgICAgICAtLU1hdHJpeENoYXRfdXNlQ29tcGFjdExheW91dC10b3AtZTJlSWNvbjogM3B4O1xuICAgICAgICAtLU1hdHJpeENoYXRfdXNlQ29tcGFjdExheW91dF9saW5lLXNwYWNpbmctYmxvY2s6IDBweDtcblxuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0X2dyb3VwLXBhZGRpbmctdG9wKTtcblxuICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUsXG4gICAgICAgIC5teF9FdmVudFRpbGVfcmVwbHkge1xuICAgICAgICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0tTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0X2xpbmUtc3BhY2luZy1ibG9jayk7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUmVwbHlDaGFpbiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy00O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9FdmVudFRpbGVfaW5mbyB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDsgLyogc2FtZSBhcyB0aGUgcGFkZGluZyBmb3Igbm9uLWNvbXBhY3QgLm14X0V2ZW50VGlsZS5teF9FdmVudFRpbGVfaW5mbyAqL1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xM3B4O1xuXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2UyZUljb24sXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2F2YXRhciB7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ibG9jazogdmFyKC0tTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0X2xpbmUtc3BhY2luZy1ibG9jayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfbGluZSxcbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVfcmVwbHkge1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9FdmVudFRpbGVfZW1vdGUge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6ICRzcGFjaW5nLTg7IC8qIGFkZCBhIGJpdCBtb3JlIHNwYWNlIGZvciBlbW90ZXMgc28gdGhhdCBhdmF0YXJzIGRvbid0IGNvbGxpZGUgKi9cblxuICAgICAgICAgICAgLm14X0V2ZW50VGlsZV9hdmF0YXIge1xuICAgICAgICAgICAgICAgIHRvcDogdmFyKC0tTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0LXRvcC1hdmF0YXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUsXG4gICAgICAgICAgICAubXhfRXZlbnRUaWxlX3JlcGx5IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0V2ZW50VGlsZV9jb250aW51YXRpb24ge1xuICAgICAgICAgICAgICAgIC5teF9FdmVudFRpbGVfbGluZSxcbiAgICAgICAgICAgICAgICAubXhfRXZlbnRUaWxlX3JlcGx5IHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLU1hdHJpeENoYXRfdXNlQ29tcGFjdExheW91dF9saW5lLXNwYWNpbmctYmxvY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIENhc2NhZGluZyAtIGFwcGx5IHplcm8gcGFkZGluZyB0byBldmVyeSBlbGVtZW50IGluY2x1ZGluZyBteF9FdmVudFRpbGVfZW1vdGUgKi9cbiAgICAgICAgJi5teF9FdmVudFRpbGVfY29udGludWF0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1NYXRyaXhDaGF0X3VzZUNvbXBhY3RMYXlvdXRfbGluZS1zcGFjaW5nLWJsb2NrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfYXZhdGFyIHtcbiAgICAgICAgICAgIHRvcDogdmFyKC0tTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0LXRvcC1hdmF0YXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9lMmVJY29uIHtcbiAgICAgICAgICAgIHRvcDogdmFyKC0tTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0LXRvcC1lMmVJY29uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9EaXNhbWJpZ3VhdGVkUHJvZmlsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEzcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRXZlbnRUaWxlX21zZ09wdGlvbiB7XG4gICAgICAgICAgICAubXhfUmVhZFJlY2VpcHRHcm91cCB7XG4gICAgICAgICAgICAgICAgLyogVGhpcyBhbGlnbnMgdGhlIGF2YXRhciB3aXRoIHRoZSBsYXN0IGxpbmUgb2YgdGhlICovXG4gICAgICAgICAgICAgICAgLyogbWVzc2FnZS4gV2Ugd2FudCB0byBtb3ZlIGl0IG9uZSBsaW5lIHVwIC0gMnJlbSAqL1xuICAgICAgICAgICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiAtMnJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfY29udGVudCAubWFya2Rvd24tYm9keSB7XG4gICAgICAgICAgICBwLFxuICAgICAgICAgICAgdWwsXG4gICAgICAgICAgICBvbCxcbiAgICAgICAgICAgIGRsLFxuICAgICAgICAgICAgYmxvY2txdW90ZSxcbiAgICAgICAgICAgIHByZSxcbiAgICAgICAgICAgIHRhYmxlIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy00OyAvKiAxLzQgb2YgdGhlIG5vbi1jb21wYWN0IG1hcmdpbi1ib3R0b20gKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZbZGF0YS1zaGFwZT1cIlRocmVhZHNMaXN0XCJdW2RhdGEtbm90aWZpY2F0aW9uXTo6YmVmb3JlLFxuICAgICAgICAubXhfTm90aWZpY2F0aW9uQmFkZ2Uge1xuICAgICAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlY2xhcmF0aW9uLWNvbG9uLXNwYWNlLWFmdGVyICovXG4gICAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogY2FsYyhcbiAgICAgICAgICAgICAgICAkbm90aWZpY2F0aW9uLWluc2V0LWJsb2NrLXN0YXJ0IC0gdmFyKC0tTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0X2dyb3VwLXBhZGRpbmctdG9wKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0V2ZW50VGlsZV9kZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdpZHRoOiBzdHJldGNoO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogJHNwYWNpbmctODtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tbGVmdE9mZnNldCk7XG4gICAgLm14X0V2ZW50VGlsZV90cnVuY2F0ZWQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG59XG5cbi8qIE1lZGlhIHF1ZXJ5IGZvciBtb2JpbGUgVUkgKi9cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAubXhfRXZlbnRUaWxlX2NvbnRlbnQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFJvYmluIFRvd25zZW5kIDxyb2JpbkByb2Jpbi50b3duPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9FdmVudFRpbGVCdWJibGUubXhfSGlzdG9yeVRpbGUge1xuICAgIG1hcmdpbjogdmFyKC0tRXZlbnRUaWxlQnViYmxlX21hcmdpbi1ibG9jaykgYXV0bztcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtdGV4dC1wcmltYXJ5LWNvbG9yO1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvaGlkZS5zdmdcIik7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuOnJvb3Qge1xuICAgIC0taXJjLWxpbmUtaGVpZ2h0OiAkZm9udC0xOHB4O1xufVxuXG4ubXhfSVJDTGF5b3V0IHtcbiAgICAtLW5hbWUtd2lkdGg6IDgwcHg7IC8qIGNmLiBpcmNEaXNwbGF5TmFtZVdpZHRoIG9uIFNldHRpbmdzLnRzeCAqL1xuICAgIC0taWNvbi13aWR0aDogMTRweDtcbiAgICAtLWxpbmUtaGVpZ2h0OiB2YXIoLS1pcmMtbGluZS1oZWlnaHQpO1xuICAgIC0tcmlnaHQtcGFkZGluZzogNXB4O1xuXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0KSAhaW1wb3J0YW50O1xuXG4gICAgYmxvY2txdW90ZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAubXhfTmV3Um9vbUludHJvIHtcbiAgICAgICAgPiBoMiB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogaW5pdGlhbDsgLyogQ2FuY2VsIHZhcigtLWlyYy1saW5lLWhlaWdodCkgKi9cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9SZXBseUNoYWluIHtcbiAgICAgICAgLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlIHtcbiAgICAgICAgICAgIHdpZHRoOiB1bnNldDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgb3JkZXI6IHVuc2V0O1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IHVuc2V0OyAvKiBVbnNldCBmbGV4LXNocmluayB0byBwcmV2ZW50IGxvbmcgZGlzcGxheSBuYW1lIGJsb3dvdXQgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9FdmVudFRpbGVfZW1vdGUge1xuICAgICAgICAgICAgPiAubXhfRXZlbnRUaWxlX2F2YXRhciB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTWVzc2FnZVRpbWVzdGFtcCB7XG4gICAgICAgICAgICB3aWR0aDogaW5pdGlhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBhZGRpbmcgdGhlIGljb24gYmFjayBpbiB0aGUgZG9jdW1lbnQgZmxvd1xuICAgICAgICAgKiBpZiBpdCdzIG5vdCBwcmVzZW50LCB0aGVyZSdzIG5vIHVud2FudGVkIHdhc3RlZCBzcGFjZVxuICAgICAgICAgKi9cbiAgICAgICAgLm14X0V2ZW50VGlsZV9lMmVJY29uIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG9yZGVyOiAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Qcm9maWxlUmVzaXplciB7XG4gICAgICAgIC0tcmVzaXplci13aWR0aDogMTVweDtcbiAgICAgICAgLS1yZXNpemVyLWExMXk6IDNweDsgLyogTWFnaWMgbnVtYmVyLCB0byBiZSByZXBsYWNlZCB3aXRoIHNvbWV0aGluZyBtb3JlIHByb3BlciBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBhMTF5ICovXG5cbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1yZXNpemVyLXdpZHRoKTtcbiAgICAgICAgY3Vyc29yOiBjb2wtcmVzaXplO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgICAgLyogQWRkIHdpZHRoIG9mIGV2ZXJ5IGVsZW1lbnQgcmVuZGVyZWQgYmVmb3JlIHRoZSByZXNpemVyIChpbmNsdWRpbmcgcGFkZGluZyBmb3IgdGhlIGF2YXRhciBhbmQgdGhlIGRpc3BsYXlcbiAgICAgICAgICAgbmFtZSksIHN1YnRyYWN0aW5nIHRoZSByZXNpemVyIHdpZHRoIGl0c2VsZiB0byBwcmV2ZW50IHRoZSByZXNpemVyIGZyb20gb3ZlcmxhcHBpbmcgdGhlIHRleHQgYW5kIG1vdmluZ1xuICAgICAgICAgICB0aGUgcmVzaXplciBhIGJpdCB0byB0aGUgbGVmdCB0byBtYWtlIGl0IGVhc2llciB0byBhdm9pZCBzZWxlY3RpbmcgdGhlIHJlc2l6ZXIgd2hlbiBoaWdobGlnaHRpbmcgdGV4dC5cbiAgICAgICAgICAgUGxlYXNlIG5vdGUgdGhhdCBNZXNzYWdlVGltZXN0YW1wIGRvZXMgbm90IGhhdmUgaW5saW5lIHBhZGRpbmcuICovXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydDogY2FsYyhcbiAgICAgICAgICAgIHZhcigtLVJvb21WaWV3X01lc3NhZ2VMaXN0LXBhZGRpbmcpICsgdmFyKC0tTWVzc2FnZVRpbWVzdGFtcC13aWR0aCkgKyB2YXIoLS1pY29uLXdpZHRoKSArXG4gICAgICAgICAgICAgICAgdmFyKC0tcmlnaHQtcGFkZGluZykgKyB2YXIoLS1uYW1lLXdpZHRoKSArIHZhcigtLXJpZ2h0LXBhZGRpbmcpIC0gdmFyKC0tcmVzaXplci13aWR0aCkgLVxuICAgICAgICAgICAgICAgIHZhcigtLXJlc2l6ZXItYTExeSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5AY2hhcnNldCBcInV0Zi04XCI7XG5cbi5teF9KdW1wVG9Cb3R0b21CdXR0b24ge1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIC8qIDEyIGJlY2F1c2UgaGVpZ2h0IGlzIDUwIGJ1dCBidXR0b24gaXMgb25seSAzOCA9IDEyKyg1MC0zOCkgPSAyNCAqL1xuICAgIGJvdHRvbTogMTJweDtcbiAgICByaWdodDogMjRweDtcbiAgICB3aWR0aDogMzhweDtcbiAgICAvKiBnaXZlIGl0IGEgZml4ZWQgaGVpZ2h0IHNvIHRoZSBiYWRnZSBkb2Vzbid0IG1ha2UgKi9cbiAgICAvKiBpdCB0YWxsZXIgYW5kIHBvcCB1cHdhcmRzIHdoZW4gdmlzaWJsZSAqL1xuICAgIGhlaWdodDogNTBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teF9KdW1wVG9Cb3R0b21CdXR0b25fYmFkZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IC0xMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAvKiB0byBiZSBhYmxlIHRvIGdldCBpdCBjZW50ZXJlZCAqL1xuICAgIC8qIHdpdGggdGV4dC1hbGlnbiBpbiBwYXJlbnQgKi9cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogMCA0cHg7XG4gICAgY29sb3I6ICRhY2NlbnQtZmctY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG11dGVkLWZnLWNvbG9yO1xufVxuXG4ubXhfSnVtcFRvQm90dG9tQnV0dG9uX2hpZ2hsaWdodCAubXhfSnVtcFRvQm90dG9tQnV0dG9uX2JhZGdlIHtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1hY2NlbnQtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFsZXJ0O1xufVxuXG4ubXhfSnVtcFRvQm90dG9tQnV0dG9uX3Njcm9sbERvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDM4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTlweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogMS4zcHggc29saWQgJG11dGVkLWZnLWNvbG9yO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm14X0p1bXBUb0JvdHRvbUJ1dHRvbl9zY3JvbGxEb3duOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9tZXNzYWdlL2NoZXZyb24tdXAuc3ZnXCIpO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1zaXplOiAyMHB4O1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlciA2cHg7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICBiYWNrZ3JvdW5kOiAkbXV0ZWQtZmctY29sb3I7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTGlua1ByZXZpZXdHcm91cCB7XG4gICAgLm14X0xpbmtQcmV2aWV3R3JvdXBfaGlkZSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgZmxleDogMCAwIDQwcHg7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIC5teF9MaW5rUHJldmlld0dyb3VwX2hpZGUgaW1nLFxuICAgIC5teF9MaW5rUHJldmlld0dyb3VwX2hpZGUuZm9jdXMtdmlzaWJsZTpmb2N1cyBpbWcge1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIH1cblxuICAgID4gLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICBjb2xvcjogJGFjY2VudDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9MaW5rUHJldmlld1dpZGdldCB7XG4gICAgbWFyZ2luOiAkc3BhY2luZy0xNiAwICRzcGFjaW5nLTE2IGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBjb2x1bW4tZ2FwOiAkc3BhY2luZy00O1xuICAgIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDJweCBzb2xpZCAkcHJldmlldy13aWRnZXQtYmFyLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBjb2xvcjogJGluZm8tcGxpbnRoLWZnLWNvbG9yO1xuXG4gICAgLm14X01hdHJpeENoYXRfdXNlQ29tcGFjdExheW91dCAmIHtcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgfVxuXG4gICAgLyogRXhjbHVkZSBteF9MaW5rUHJldmlld0dyb3VwX2hpZGUgZnJvbSB3cmFwcGluZyAqL1xuICAgIC5teF9MaW5rUHJldmlld1dpZGdldF93cmFwSW1hZ2VDYXB0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICByb3ctZ2FwOiAkc3BhY2luZy04O1xuICAgICAgICBmbGV4OiAxO1xuXG4gICAgICAgIC5teF9MaW5rUHJldmlld1dpZGdldF9pbWFnZSxcbiAgICAgICAgLm14X0xpbmtQcmV2aWV3V2lkZ2V0X2NhcHRpb24ge1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogJHNwYWNpbmctMTY7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7IC8qIFByZXZlbnQgYmxvd291dCAqL1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xpbmtQcmV2aWV3V2lkZ2V0X2ltYWdlIHtcbiAgICAgICAgICAgIGZsZXg6IDAgMCAxMDBweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9MaW5rUHJldmlld1dpZGdldF9jYXB0aW9uIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOyAvKiBjYXVzZSBpdCB0byB3cmFwIHJhdGhlciB0aGFuIGNsaXAgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9MaW5rUHJldmlld1dpZGdldF90aXRsZSxcbiAgICAgICAgLm14X0xpbmtQcmV2aWV3V2lkZ2V0X2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xpbmtQcmV2aWV3V2lkZ2V0X3RpdGxlIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuXG4gICAgICAgICAgICAubXhfTGlua1ByZXZpZXdXaWRnZXRfc2l0ZU5hbWUge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTGlua1ByZXZpZXdXaWRnZXRfZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctODtcbiAgICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9MaXZlQ29udGVudFN1bW1hcnkge1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG5cbiAgICAubXhfTGl2ZUNvbnRlbnRTdW1tYXJ5X3RleHQge1xuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tO1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogMTZweDtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0xpdmVDb250ZW50U3VtbWFyeV90ZXh0X3ZpZGVvOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvdmlkZW8tY2FsbC5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0xpdmVDb250ZW50U3VtbWFyeV90ZXh0X2FjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogJGFjY2VudDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0xpdmVDb250ZW50U3VtbWFyeV9wYXJ0aWNpcGFudHM6OmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9ncm91cC1tZW1iZXJzLnN2Z1wiKTtcbiAgICAgICAgbWFzay1zaXplOiAxNnB4O1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTWVtYmVySW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG5cbiAgICBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMThweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgbWFyZ2luOiAxNnB4IDAgMTZweCAxNXB4O1xuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV90aXRsZUNvbnRhaW5lciB7XG4gICAgICAgIHdpZHRoOiAxNTRweDtcbiAgICB9XG5cbiAgICAubXhfUm9vbVRpbGVfYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV90aXRsZSB7XG4gICAgICAgIHdpZHRoOiAxNjBweDtcbiAgICB9XG5cbiAgICBoMyB7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiAkaW5wdXQtZGFya2VyLWZnLWNvbG9yO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICBtYXJnaW46IDRweCAwO1xuICAgIH1cbn1cblxuLm14X01lbWJlckluZm9fbmFtZSB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgPiAubXhfRTJFSWNvbiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG5cbiAgICBoMiB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIG1heC1oZWlnaHQ6IDUwcHg7XG4gICAgfVxufVxuXG4ubXhfTWVtYmVySW5mb19jYW5jZWwge1xuICAgIGhlaWdodDogMTZweDtcbiAgICB3aWR0aDogMTZweDtcbiAgICBwYWRkaW5nOiAxMHB4IDAgMTBweCAxMHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL21pbmltaXNlLnN2Z1wiKTtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIG1hc2stcG9zaXRpb246IDE2cHggY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtdGV4dC1wcmltYXJ5LWNvbG9yO1xufVxuXG4ubXhfTWVtYmVySW5mb19jb250YWluZXIge1xuICAgIG1hcmdpbjogMCAxNnB4IDE2cHggMTZweDtcblxuICAgICYubXhfTWVtYmVySW5mb19jb250YWluZXItLXByb2ZpbGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG59XG5cbi5teF9NZW1iZXJJbmZvX2F2YXRhciB7XG4gICAgYmFja2dyb3VuZDogJHNwYWNlUGFuZWwtYmctY29sb3I7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcblxuICAgID4gaW1nIHtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LWhlaWdodDogMzB2aDtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLm14X0Jhc2VBdmF0YXIubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgICAgIGN1cnNvcjogem9vbS1pbjtcbiAgICB9XG59XG5cbi5teF9NZW1iZXJJbmZvX2ZpZWxkIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMjNweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9NZW1iZXJMaXN0IHtcbiAgICBmbGV4OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtaW4taGVpZ2h0OiAwO1xuXG4gICAgLm14X1NwaW5uZXIge1xuICAgICAgICBmbGV4OiAxIDAgYXV0bztcbiAgICB9XG5cbiAgICAubXhfU2VhcmNoQm94IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIH1cblxuICAgIGgyIHtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgY29sb3I6ICRoMy1jb2xvcjtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xM3B4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTJweDtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgfVxuXG4gICAgLm14X0F1dG9IaWRlU2Nyb2xsYmFyIHtcbiAgICAgICAgZmxleDogMSAxIDA7XG4gICAgfVxuXG4gICAgLm14X1JpZ2h0UGFuZWxfc2NvcGVIZWFkZXIge1xuICAgICAgICAvKiB2ZXJ0aWNhbGx5IGFsaWduIHdpdGggcG9zaXRpb24gb24gb3RoZXIgcmlnaHQgcGFuZWwgY2FyZHMgKi9cbiAgICAgICAgLyogdG8gcHJldmVudCBpdCBib3VuY2luZyBhcyB1c2VyIG5hdmlnYXRlcyByaWdodCBwYW5lbCAqL1xuICAgICAgICBtYXJnaW4tdG9wOiAtOHB4O1xuICAgIH1cbn1cblxuLm14X01lbWJlckxpc3RfY2hldnJvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAzNXB4O1xuICAgIG1hcmdpbi10b3A6IC0xNXB4O1xufVxuXG4ubXhfTWVtYmVyTGlzdF9ib3JkZXIge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICBvcmRlcjogMTtcbiAgICBmbGV4OiAxIDEgMHB4O1xufVxuXG4ubXhfTWVtYmVyTGlzdF9xdWVyeSB7XG4gICAgaGVpZ2h0OiAxNnB4O1xuXG4gICAgLyogc3RyaWN0ZXIgcnVsZSB0byBvdmVycmlkZSB0aGUgb25lIGluIF9jb21tb24ucGNzcyAqL1xuICAgICZbdHlwZT1cInRleHRcIl0ge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgfVxufVxuXG4ubXhfTWVtYmVyTGlzdF93cmFwcGVyIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xufVxuXG4ubXhfTWVtYmVyTGlzdF9pbnZpdGUge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXJnaW46IDVweCA5cHggOXB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgY29sb3I6ICRidXR0b24tZmctY29sb3I7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbn1cblxuLm14X01lbWJlckxpc3RfaW52aXRlLm14X0FjY2Vzc2libGVCdXR0b25fZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbmZvLXBsaW50aC1mZy1jb2xvcjtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4ubXhfTWVtYmVyTGlzdF9pbnZpdGUgc3BhbiB7XG4gICAgcGFkZGluZzogOHB4IDA7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZmctY29sb3I7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2ludml0ZS5zdmdcIik7XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1zaXplOiAyMHB4O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcbkNvcHlyaWdodCAyMDE4IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01lc3NhZ2VDb21wb3Nlcl93cmFwcGVyIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHByaW1hcnktaGFpcmxpbmUtY29sb3I7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctbGVmdDogNDJweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3JlcGxhY2VkX3dyYXBwZXIge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9yZXBsYWNlZF92YWxpZ24ge1xuICAgIGhlaWdodDogNjBweDtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5teF9NZXNzYWdlQ29tcG9zZXJfcm9vbVJlcGxhY2VkX2ljb24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMjBweDtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgd2lkdGg6IDMxcHg7XG4gICAgaGVpZ2h0OiAzMXB4O1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3Jvb21SZXBsYWNlZF9oZWFkZXIge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2F1dG9jb21wbGV0ZV93cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3JvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5teF9NZXNzYWdlQ29tcG9zZXJfYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNnB4O1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyIHtcbiAgICAubXhfTWVzc2FnZUNvbXBvc2VyX2F2YXRhciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMjZweDtcblxuICAgICAgICAubXhfQmFzZUF2YXRhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9jb21wb3NlY29udHJvbHMge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2UyZUljb24ubXhfRTJFSWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDIwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwOyAvKiBDb3VudGVyYWN0IHRoZSBFMkVJY29uIGNsYXNzICovXG4gICAgbWFyZ2luLWxlZnQ6IDNweDsgLyogQ291bnRlcmFjdCB0aGUgRTJFSWNvbiBjbGFzcyAqL1xuICAgIHdpZHRoOiAxMnB4O1xuICAgIGhlaWdodDogMTJweDtcbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9ub3Blcm1fZXJyb3Ige1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNjBweDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgY29sb3I6ICRpbmZvLXBsaW50aC1mZy1jb2xvcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5teF9NZXNzYWdlQ29tcG9zZXJfaW5wdXRfd3JhcHBlciB7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgY3Vyc29yOiB0ZXh0O1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2lucHV0IHtcbiAgICBmbGV4OiAxO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1pbi1oZWlnaHQ6IDYwcHg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcblxuICAgIHByZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRydGUtY29kZS1iZy1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgIH1cblxuICAgIHRleHRhcmVhIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNnB4O1xuICAgICAgICBib3JkZXI6IDBweDtcbiAgICAgICAgcmVzaXplOiBub25lO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgbWF4LWhlaWdodDogMTIwcHg7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuXG4gICAgICAgIC8qIGhhY2sgZm9yIEZGIGFzIHZlcnRpY2FsIGFsaWdubWVudCBvZiBjdXN0b20gcGxhY2Vob2xkZXIgdGV4dCBpcyBicm9rZW4gKi9cbiAgICAgICAgJjo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9NZXNzYWdlQ29tcG9zZXJfZWRpdG9yIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMjBweDtcbiAgICBtaW4taGVpZ2h0OiAxOXB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG5cbiAgICAvKiBGSVhNRTogcmF0aGVyIHVucGxlYXNhbnQgaGFjayB0byBnZXQgcmlkIG9mIDxwLz4gbWFyZ2lucy4gKi9cbiAgICAvKiByZWFsbHkgd2Ugc2hvdWxkIGJlIG1peGluZyBpbiBtYXJrZG93bi1ib2R5IGZyb20gZ2ZtLmNzcyBpbnN0ZWFkICovXG4gICAgPiA6Zmlyc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgPiA6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgdmlzdWFsYmVsbCB7XG4gICAgZnJvbSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR2aXN1YWwtYmVsbC1iZy1jb2xvcjtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICB9XG59XG5cbi5teF9NZXNzYWdlQ29tcG9zZXJfaW5wdXRfZXJyb3Ige1xuICAgIGFuaW1hdGlvbjogMC4ycyB2aXN1YWxiZWxsO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2J1dHRvbl9oaWdobGlnaHQge1xuICAgIEBtaXhpbiBjb21wb3NlckJ1dHRvbkhpZ2hMaWdodDtcbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9idXR0b24ge1xuICAgIEBtaXhpbiBjb21wb3NlckJ1dHRvbiA1MCUsICRhY2NlbnQ7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgfVxuXG4gICAgJi5teF9NZXNzYWdlQ29tcG9zZXJfY2xvc2VCdXR0b25NZW51IHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgkYWNjZW50LCAwLjEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X01lc3NhZ2VDb21wb3Nlcl9oYW5ndXA6bm90KC5teF9BY2Nlc3NpYmxlQnV0dG9uX2Rpc2FibGVkKTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFsZXJ0O1xuICAgIH1cbn1cbi5teF9NZXNzYWdlQ29tcG9zZXJfd3lzaXd5ZyB7XG4gICAgLm14X01lc3NhZ2VDb21wb3Nlcl93cmFwcGVyIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb21wb3Nlcl9yb3cge1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb21wb3Nlcl9hY3Rpb25zIHtcbiAgICAgICAgLyogSGVpZ2h0IG9mIHRoZSBjb21wb3NlciBlZGl0b3IgKi9cbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgIH1cblxuICAgIC5teF9NZWRpYUJvZHkge1xuICAgICAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNHB4O1xuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29tcG9zZXJfYnV0dG9uIHtcbiAgICAgICAgQG1peGluIGNvbXBvc2VyQnV0dG9uIDVweCwgJHRlcnRpYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgJi5teF9NZXNzYWdlQ29tcG9zZXJfY2xvc2VCdXR0b25NZW51IHtcbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRhY2NlbnQsIDAuMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfTWVzc2FnZUNvbXBvc2VyX2hhbmd1cDpub3QoLm14X0FjY2Vzc2libGVCdXR0b25fZGlzYWJsZWQpOjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFsZXJ0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3VwbG9hZDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9jb21wb3Nlci9hdHRhY2guc3ZnXCIpO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3BvbGw6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vY29tcG9zZXIvcG9sbC5zdmdcIik7XG59XG5cbi5teF9NZXNzYWdlQ29tcG9zZXJfdm9pY2VNZXNzYWdlOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9taWMuc3ZnXCIpO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3ZvaWNlQnJvYWRjYXN0OjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9saXZlLnN2Z1wiKTtcbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9wbGFpbl90ZXh0OjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2NvbXBvc2VyL3BsYWluX3RleHQuc3ZnXCIpO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3JpY2hfdGV4dDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9jb21wb3Nlci9yaWNoX3RleHQuc3ZnXCIpO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2xvY2F0aW9uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2NvbXBvc2VyL2xvY2F0aW9uLnN2Z1wiKTtcbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9zdGlja2Vyczo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9jb21wb3Nlci9zdGlja2VyLnN2Z1wiKTtcbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9idXR0b25NZW51OjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvaW1hZ2Utdmlldy9tb3JlLnN2Z1wiKTtcbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9zZW5kTWVzc2FnZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICB0b3A6IDhweDtcbiAgICAgICAgbGVmdDogOXB4O1xuXG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9zZW5kLW1lc3NhZ2Uuc3ZnXCIpO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWZnLWNvbG9yO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgIH1cbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9mb3JtYXR0aW5nIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luOiAwIDExcHg7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2Zvcm1hdGJhcl93cmFwcGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWVudS1iZy1jb2xvcjtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9mb3JtYXRiYXIge1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgaGVpZ2h0OiAzMHB4O1xuXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nLWxlZnQ6IDYycHg7XG5cbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMHB4O1xuICAgIGNvbG9yOiAkaW5mby1wbGludGgtZmctY29sb3I7XG5cbiAgICAqIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgfVxufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2Zvcm1hdF9idXR0b24sXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2Zvcm1hdGJhcl9jYW5jZWwsXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2Zvcm1hdGJhcl9tYXJrZG93biB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2Zvcm1hdGJhcl9jYW5jZWwge1xuICAgIG1hcmdpbi1yaWdodDogMjJweDtcbn1cblxuLm14X01lc3NhZ2VDb21wb3Nlcl9mb3JtYXRiYXJfbWFya2Rvd24ge1xuICAgIGhlaWdodDogMTdweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDY0cHg7XG59XG5cbi5teF9NZXNzYWdlQ29tcG9zZXJfaW5wdXRfbWFya2Rvd25JbmRpY2F0b3Ige1xuICAgIGhlaWdodDogMTBweDtcbiAgICB3aWR0aDogMTJweDtcbiAgICBwYWRkaW5nOiA0cHggNHB4IDRweCAwO1xufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX2Zvcm1hdGJhcl9tYXJrZG93bixcbi5teF9NZXNzYWdlQ29tcG9zZXJfaW5wdXRfbWFya2Rvd25JbmRpY2F0b3Ige1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL21hcmtkb3duLnN2Z1wiKTtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGljb24tYnV0dG9uLWNvbG9yO1xuXG4gICAgJi5teF9NZXNzYWdlQ29tcG9zZXJfbWFya2Rvd25EaXNhYmxlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuMjtcbiAgICB9XG59XG5cbi5teF9NYXRyaXhDaGF0X3VzZUNvbXBhY3RMYXlvdXQge1xuICAgIC5teF9NZXNzYWdlQ29tcG9zZXJfaW5wdXQge1xuICAgICAgICBtaW4taGVpZ2h0OiA1MHB4O1xuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29tcG9zZXJfbm9wZXJtX2Vycm9yIHtcbiAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgIH1cbn1cblxuLyoqXG4gKiBVbnN0YWJsZSBjb21wYWN0IG1vZGVcbiAqL1xuXG4ubXhfTWVzc2FnZUNvbXBvc2VyLm14X01lc3NhZ2VDb21wb3Nlci0tY29tcGFjdCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuXG4gICAgLm14X01lc3NhZ2VDb21wb3Nlcl93cmFwcGVyIHtcbiAgICAgICAgcGFkZGluZzogMCAwIDAgMjVweDtcbiAgICB9XG5cbiAgICAmOm5vdCgubXhfTWVzc2FnZUNvbXBvc2VyX2UyZVN0YXR1cykge1xuICAgICAgICAubXhfTWVzc2FnZUNvbXBvc2VyX3dyYXBwZXIge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29tcG9zZXJfYnV0dG9uOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb21wb3Nlcl9lMmVJY29uIHtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTWVzc2FnZUNvbXBvc2VyRm9ybWF0QmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHdpZHRoOiBjYWxjKDMycHggKiA2KTtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAvKiBlcXVhbCB0byB6LWluZGV4IG9mIG14X1JlcGx5UHJldmlldyBhbmQgbXhfUm9vbVZpZXdfc3RhdHVzQXJlYSAoMTAwMCkgKi9cbiAgICAvKiBidXQgYXMgaXQgYXBwZWFycyBhZnRlciB0aGVtIGluIHRoZSBET00sIHdpbGwgYXBwZWFyIG9uIHRvcC4gKi9cbiAgICB6LWluZGV4OiAxMDAwO1xuXG4gICAgJi5teF9NZXNzYWdlQ29tcG9zZXJGb3JtYXRCYXJfc2hvd24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICA+ICoge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAycHg7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb21wb3NlckZvcm1hdEJhcl9idXR0b24ge1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkcGFuZWwtYWN0aW9ucztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbXBvc2VyRm9ybWF0QmFyX2J1dHRvbjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb21wb3NlckZvcm1hdEJhcl9idXR0b246aG92ZXI6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbXBvc2VyRm9ybWF0QmFyX2J1dHRvbkljb25Cb2xkOjphZnRlciB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2Zvcm1hdC1iYXIvYm9sZC5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb21wb3NlckZvcm1hdEJhcl9idXR0b25JY29uSXRhbGljOjphZnRlciB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2Zvcm1hdC1iYXIvaXRhbGljLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTWVzc2FnZUNvbXBvc2VyRm9ybWF0QmFyX2J1dHRvbkljb25TdHJpa2V0aHJvdWdoOjphZnRlciB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2Zvcm1hdC1iYXIvc3RyaWtldGhyb3VnaC5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb21wb3NlckZvcm1hdEJhcl9idXR0b25JY29uUXVvdGU6OmFmdGVyIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vZm9ybWF0LWJhci9xdW90ZS5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VDb21wb3NlckZvcm1hdEJhcl9idXR0b25JY29uQ29kZTo6YWZ0ZXIge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9mb3JtYXQtYmFyL2NvZGUuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9NZXNzYWdlQ29tcG9zZXJGb3JtYXRCYXJfYnV0dG9uSWNvbkluc2VydExpbms6OmFmdGVyIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2xpbmsuc3ZnXCIpO1xuICAgICAgICBtYXNrLXNpemU6IDE4cHg7XG4gICAgfVxufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyRm9ybWF0QmFyX2J1dHRvblRvb2x0aXAge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZm9udC1zaXplOiAkZm9udC0xM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgbWluLXdpZHRoOiA1NHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIC5teF9NZXNzYWdlQ29tcG9zZXJGb3JtYXRCYXJfdG9vbHRpcFNob3J0Y3V0IHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC05cHg7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTmV3Um9vbUludHJvIHtcbiAgICBtYXJnaW46IDQwcHggMCA0OHB4IDY0cHg7XG5cbiAgICAubXhfTWluaUF2YXRhclVwbG9hZGVyX2hhc0F2YXRhcjpub3QoLm14X01pbmlBdmF0YXJVcGxvYWRlcl9idXN5KTpub3QoOmhvdmVyKSB7XG4gICAgICAgIC5teF9NaW5pQXZhdGFyVXBsb2FkZXJfaW5kaWNhdG9yIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfTmV3Um9vbUludHJvX2J1dHRvbnMge1xuICAgICAgICBtYXJnaW4tdG9wOiAyOHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWZsb3c6IHdyYXA7XG4gICAgICAgIGdhcDogMTRweCAxMnB4O1xuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgICAgICAgICAmOm5vdCgubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX3ByaW1hcnlfb3V0bGluZSk6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1mZy1jb2xvcjtcbiAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IDIwcHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9OZXdSb29tSW50cm9faW52aXRlQnV0dG9uOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vaW52aXRlLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gaDIge1xuICAgICAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICAgICAgICBmb250LXNpemU6ICRmb250LTI0cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgfVxuXG4gICAgPiBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X05vdGlmaWNhdGlvbkJhZGdlIHtcbiAgICAmOm5vdCgubXhfTm90aWZpY2F0aW9uQmFkZ2VfdmlzaWJsZSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8qIEJhZGdlcyBhcmUgc3RydWN0dXJlZCBhIGJpdCB3ZWlyZGx5IHRvIHdvcmsgYXJvdW5kIGlzc3VlcyB3aXRoIG5vbi1tb25vc3BhY2UgKi9cbiAgICAvKiBmb250IHN0eWxlcy4gVGhlIGJhZGdlIHBpbGwgaXMgYWN0dWFsbHkgYSBiYWNrZ3JvdW5kIGRpdiBhbmQgdGhlIGNvdW50IGZsb2F0cyAqL1xuICAgIC8qIHdpdGhpbiB0aGF0LiBGb3IgZXhhbXBsZTogKi9cbiAgICAvKiAgKCA5OSsgKSA8LS0gUm91bmRlZCBwaWxsIGlzIGEgX2JnIGNsYXNzLiAqL1xuICAgIC8qICAgICBeLSBUaGUgY291bnQgaXMgYW4gZWxlbWVudCBmbG9hdGluZyB3aXRoaW4gdGhhdC4gKi9cblxuICAgICYubXhfTm90aWZpY2F0aW9uQmFkZ2VfdmlzaWJsZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyb29tdGlsZS1kZWZhdWx0LWJhZGdlLWJnLWNvbG9yO1xuXG4gICAgICAgIC8qIENyZWF0ZSBhIGZsZXhib3ggdG8gb3JkZXIgdGhlIGNvdW50IGEgYml0IGVhc2llciAqL1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAmLm14X05vdGlmaWNhdGlvbkJhZGdlX2hpZ2hsaWdodGVkIHtcbiAgICAgICAgICAgIC8qIFRPRE86IFVzZSBhIG1vcmUgc3BlY2lmaWMgdmFyaWFibGUgKi9cbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhbGVydDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIFRoZXNlIGFyZSB0aGUgMyBiYWNrZ3JvdW5kIHR5cGVzICovXG5cbiAgICAgICAgJi5teF9Ob3RpZmljYXRpb25CYWRnZV9kb3Qge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDsgLyogaW5jcmVhc2VkIHZpc2liaWxpdHkgKi9cblxuICAgICAgICAgICAgd2lkdGg6IDZweDtcbiAgICAgICAgICAgIGhlaWdodDogNnB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9Ob3RpZmljYXRpb25CYWRnZV8yY2hhciB7XG4gICAgICAgICAgICB3aWR0aDogJGZvbnQtMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogJGZvbnQtMTZweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRmb250LTE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X05vdGlmaWNhdGlvbkJhZGdlXzNjaGFyIHtcbiAgICAgICAgICAgIHdpZHRoOiAkZm9udC0yNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAkZm9udC0xNnB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGZvbnQtMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGZsb2F0aW5nIGJhZGdlICovXG5cbiAgICAgICAgLm14X05vdGlmaWNhdGlvbkJhZGdlX2NvdW50IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTBweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNHB4O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7IC8qIFRPRE86IFZhcmlhYmxlICovXG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9Ob3RpZmljYXRpb25CYWRnZV90b29sdGlwIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogLTI1cHg7XG4gICAgbGVmdDogNnB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE3IFRyYXZpcyBSYWxzdG9uXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Bpbm5lZEV2ZW50VGlsZSB7XG4gICAgbWluLWhlaWdodDogNDBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwIDRweCAxMnB4O1xuXG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICBcImF2YXRhciBuYW1lIHJlbW92ZVwiXG4gICAgICAgIFwiY29udGVudCBjb250ZW50IGNvbnRlbnRcIlxuICAgICAgICBcImZvb3RlciBmb290ZXIgZm9vdGVyXCI7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtYXgtY29udGVudCBhdXRvIG1heC1jb250ZW50O1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjRweCBhdXRvIDI0cHg7XG4gICAgZ3JpZC1yb3ctZ2FwOiAxMnB4O1xuICAgIGdyaWQtY29sdW1uLWdhcDogOHB4O1xuXG4gICAgJiArIC5teF9QaW5uZWRFdmVudFRpbGUge1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDRweDtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRtZW51LWJvcmRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAubXhfUGlubmVkRXZlbnRUaWxlX3NlbmRlckF2YXRhcixcbiAgICAubXhfUGlubmVkRXZlbnRUaWxlX3NlbmRlcixcbiAgICAubXhfUGlubmVkRXZlbnRUaWxlX3VucGluQnV0dG9uLFxuICAgIC5teF9QaW5uZWRFdmVudFRpbGVfbWVzc2FnZSxcbiAgICAubXhfUGlubmVkRXZlbnRUaWxlX2Zvb3RlciB7XG4gICAgICAgIG1pbi13aWR0aDogMDsgLyogUHJldmVudCBhIGdyaWQgYmxvd291dCAqL1xuICAgIH1cblxuICAgIC5teF9QaW5uZWRFdmVudFRpbGVfc2VuZGVyQXZhdGFyIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBhdmF0YXI7XG4gICAgfVxuXG4gICAgLm14X1Bpbm5lZEV2ZW50VGlsZV9zZW5kZXIge1xuICAgICAgICBncmlkLWFyZWE6IG5hbWU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5teF9QaW5uZWRFdmVudFRpbGVfdW5waW5CdXR0b24ge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIGdyaWQtYXJlYTogcmVtb3ZlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyb29taGVhZGVyLWFkZHJvb20tYmctY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1zaXplOiA4cHg7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9pbWFnZS12aWV3L2Nsb3NlLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9QaW5uZWRFdmVudFRpbGVfbWVzc2FnZSB7XG4gICAgICAgIGdyaWQtYXJlYTogY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfUGlubmVkRXZlbnRUaWxlX2Zvb3RlciB7XG4gICAgICAgIGdyaWQtYXJlYTogZm9vdGVyO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxMnB4O1xuXG4gICAgICAgIC5teF9QaW5uZWRFdmVudFRpbGVfdGltZXN0YW1wIHtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBkaXNwbGF5OiB1bnNldDtcbiAgICAgICAgICAgIHdpZHRoOiB1bnNldDsgLyogQ2FuY2VsIHRoZSBkZWZhdWx0IHdpZHRoIHZhbHVlICovXG4gICAgICAgIH1cblxuICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmsge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgLm14X1Bpbm5lZEV2ZW50VGlsZV91bnBpbkJ1dHRvbiB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1ByZXNlbmNlTGFiZWwge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTFweDtcbiAgICBvcGFjaXR5OiAwLjU7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUmVhZFJlY2VpcHRHcm91cCB7XG4gICAgLS1SZWFkUmVjZWlwdEdyb3VwX0V2ZW50QnViYmxlVGlsZS1zcGFjaW5nLWVuZDogNzhweDtcblxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgei1pbmRleDogMTtcblxuICAgIC5teF9SZWFkUmVjZWlwdEdyb3VwX2J1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuXG4gICAgICAgICYubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkZXZlbnQtc2VsZWN0ZWQtY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfUmVhZFJlY2VpcHRHcm91cF9yZW1haW5kZXIge1xuICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBmb250LXNpemU6ICRmb250LTExcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNnB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgICB9XG5cbiAgICAubXhfUmVhZFJlY2VpcHRHcm91cF9jb250YWluZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgLm14X0Jhc2VBdmF0YXIge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYmFja2dyb3VuZDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG5cbiAgICAgICAgICAgIHdpbGwtY2hhbmdlOiBsZWZ0LCB0b3A7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBsZWZ0IHZhcigtLXRyYW5zaXRpb24tc2hvcnQpIGVhc2Utb3V0LCB0b3AgdmFyKC0tdHJhbnNpdGlvbi1zdGFuZGFyZCkgZWFzZS1vdXQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9SZWFkUmVjZWlwdEdyb3VwX3BvcHVwIHtcbiAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICB3aWR0aDogMjIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMTVweDtcblxuICAgIHJpZ2h0OiAwO1xuXG4gICAgJi5teF9Db250ZXh0dWFsTWVudV90b3Age1xuICAgICAgICB0b3A6IDhweDtcbiAgICB9XG5cbiAgICAmLm14X0NvbnRleHR1YWxNZW51X2JvdHRvbSB7XG4gICAgICAgIGJvdHRvbTogOHB4O1xuICAgIH1cblxuICAgIC5teF9SZWFkUmVjZWlwdEdyb3VwX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTVweDtcbiAgICAgICAgbWFyZ2luOiAxNnB4IDE2cHggOHB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICAvKiBzaG91bGRu4oCZdCBiZSBhY3R1YWxseSBmb2N1c2FibGUgKi9cbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG5cbiAgICAubXhfQXV0b0hpZGVTY3JvbGxiYXIge1xuICAgICAgICAubXhfUmVhZFJlY2VpcHRHcm91cF9wZXJzb24ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgMTJweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG1lbnUtc2VsZWN0ZWQtY29sb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfQmFzZUF2YXRhciB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiA2cHggOHB4O1xuICAgICAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1JlYWRSZWNlaXB0R3JvdXBfbmFtZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4IDA7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5teF9SZWFkUmVjZWlwdEdyb3VwX3NlY29uZGFyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfUmVhZFJlY2VpcHRHcm91cF9wZXJzb24tLXRvb2x0aXAge1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1JlY2VudGx5Vmlld2VkQnV0dG9uX0NvbnRleHRNZW51IHtcbiAgICBwYWRkaW5nOiAxNnB4IDhweCAxNnB4IDE2cHg7XG4gICAgd2lkdGg6IG1heC1jb250ZW50O1xuICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgbWF4LWhlaWdodDogNDAwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgkcHJpbWFyeS1jb250ZW50LCAwLjEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICA+IGg0IHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTJweCAwO1xuICAgIH1cblxuICAgID4gZGl2IHtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgICAgICAqIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAzNHB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbmVsLWFjdGlvbnM7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRGVjb3JhdGVkUm9vbUF2YXRhciB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuXG4gICAgICAgICAgICAubXhfQmFzZUF2YXRhciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUmVjZW50bHlWaWV3ZWRCdXR0b25fZW50cnlfbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcblxuICAgICAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9SZWNlbnRseVZpZXdlZEJ1dHRvbl9lbnRyeV9zcGFjZXMge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE4IFZlY3RvciBDcmVhdGlvbnMgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1JlcGx5UHJldmlldyB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJHByaW1hcnktaGFpcmxpbmUtY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICBtYXgtaGVpZ2h0OiA1MHZoO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuXG4gICAgLm14X1JlcGx5UHJldmlld19zZWN0aW9uIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRwcmltYXJ5LWhhaXJsaW5lLWNvbG9yO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICAgICAgcm93LWdhcDogJHNwYWNpbmctODtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctOCAkc3BhY2luZy04IDAgMDtcblxuICAgICAgICAubXhfUmVwbHlQcmV2aWV3X2hlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgY29sdW1uLWdhcDogOHB4O1xuXG4gICAgICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjQ7XG5cbiAgICAgICAgICAgIC5teF9SZXBseVByZXZpZXdfaGVhZGVyX2NhbmNlbCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgICAgICBtYXNrOiB1cmwoXCIkKHJlcykvaW1nL2NhbmNlbC5zdmdcIik7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFzay1zaXplOiAxOHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDE4cHg7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMThweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X1Jvb21WaWV3X2JvZHkge1xuICAgIC5teF9SZXBseVByZXZpZXcge1xuICAgICAgICAvKiBBZGQgYm94LXNoYWRvdyB0byB0aGUgcmVwbHkgcHJldmlldyBvbiB0aGUgbWFpbiAobGVmdCkgcGFuZWwgb25seS4gKi9cbiAgICAgICAgLyogSXQgaXMgbm90IGFkZGVkIHRvIHRoZSBwcmV2aWV3IG9uIHRoZSAocmlnaHQpIHBhbmVsIGZvciB0aHJlYWRzIGFuZCBhIGNoYXQgd2l0aCBhIG1heGltaXplZCB3aWRnZXQuICovXG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAtMTZweCAzMnB4ICRjb21wb3Nlci1zaGFkb3ctY29sb3I7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweCA4cHggMCAwO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUdWxpciBBc29rYW4gPHR1bGlyQG1hdW5pdW0ubmV0PlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9SZXBseVRpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAycHggMDtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG5cbiAgICAmLm14X1JlcGx5VGlsZV9hdWRpbyAubXhfTUZpbGVCb2R5X2luZm9faWNvbjo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NwZWFrZXIuc3ZnXCIpO1xuICAgIH1cblxuICAgICYubXhfUmVwbHlUaWxlX3ZpZGVvIC5teF9NRmlsZUJvZHlfaW5mb19pY29uOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC92aWRlby1jYWxsLnN2Z1wiKTtcbiAgICB9XG5cbiAgICA+IGEge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlOlxuICAgICAgICAgICAgXCJzZW5kZXJcIiBhdXRvXG4gICAgICAgICAgICBcIm1lc3NhZ2VcIiBhdXRvXG4gICAgICAgICAgICAvIDEwMCU7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgZWFzZSAwLjE1cztcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTsgLy8gYXZvaWQgb3ZlcmZsb3cgd2l0aCB3aWRlIGNvbnRlbnRcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1JlZGFjdGVkQm9keSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xOHB4O1xuICAgIH1cblxuICAgIC5teF9SZWRhY3RlZEJvZHksXG4gICAgLm14X0hpZGRlbkJvZHkge1xuICAgICAgICBwYWRkaW5nOiA0cHggMCAycHggMjBweDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgaGVpZ2h0OiAxM3B4O1xuICAgICAgICAgICAgd2lkdGg6IDEzcHg7XG4gICAgICAgICAgICB0b3A6IDNweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIFdlIGRvIHJlcGx5IHNpemUgbGltaXRpbmcgd2l0aCBDU1MgdG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIFRleHR1YWxCb2R5IGNvbXBvbmVudC4gKi9cbiAgICAubXhfRXZlbnRUaWxlX2NvbnRlbnQge1xuICAgICAgICBncmlkLWFyZWE6IG1lc3NhZ2U7XG4gICAgICAgICRyZXBseS1saW5lczogMjtcbiAgICAgICAgJGxpbmUtaGVpZ2h0OiAkZm9udC0xOHB4O1xuXG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAkcmVwbHktbGluZXM7XG5cbiAgICAgICAgLm14X0V2ZW50VGlsZV9ib2R5Lm14X0V2ZW50VGlsZV9iaWdFbW9qaSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjJweCAhaW1wb3J0YW50OyAvKiBTYW1lIGFzIHZhcigtLUV2ZW50VGlsZV9ncm91cF9saW5lLWxpbmUtaGVpZ2h0KSAqL1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNHB4ICFpbXBvcnRhbnQ7IC8qIE92ZXJyaWRlIHRoZSBiaWcgZW1vamkgb3ZlcnJpZGUgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhpZGUgbGluZSBudW1iZXJzIGFuZCBlZGl0ZWQgaW5kaWNhdG9yXG4gICAgICAgIC5teF9FdmVudFRpbGVfbGluZU51bWJlcnMsXG4gICAgICAgIC5teF9FdmVudFRpbGVfZWRpdGVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBIYWNrIHRvIGN1dCBjb250ZW50IGluIDxwcmU+IHRhZ3MgdG9vICovXG4gICAgICAgIC5teF9FdmVudFRpbGVfcHJlX2NvbnRhaW5lciA+IHByZSB7XG4gICAgICAgICAgICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogJHJlcGx5LWxpbmVzO1xuICAgICAgICAgICAgcGFkZGluZzogNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm1hcmtkb3duLWJvZHkgYmxvY2txdW90ZSxcbiAgICAgICAgLm1hcmtkb3duLWJvZHkgZGwsXG4gICAgICAgIC5tYXJrZG93bi1ib2R5IG9sLFxuICAgICAgICAubWFya2Rvd24tYm9keSBwLFxuICAgICAgICAubWFya2Rvd24tYm9keSBwcmUsXG4gICAgICAgIC5tYXJrZG93bi1ib2R5IHRhYmxlLFxuICAgICAgICAubWFya2Rvd24tYm9keSB1bCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X1JlcGx5VGlsZV9pbmZvIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgfVxuXG4gICAgJi5teF9SZXBseVRpbGVfaW5saW5lID4gYSB7XG4gICAgICAgIC8qIFJlbmRlciByZXBsaWVzIHRvIGVtb3RlcyBpbmxpbmUgd2l0aCB0aGUgc2VuZGVyIGF2YXRhciAqL1xuICAgICAgICBncmlkLXRlbXBsYXRlOlxuICAgICAgICAgICAgXCJzZW5kZXIgICAgICAgIG1lc3NhZ2VcIiBhdXRvXG4gICAgICAgICAgICAvIG1heC1jb250ZW50IGF1dG87XG4gICAgICAgIGdhcDogNHB4OyAvLyBpbmNyZWFzZSBzcGFjaW5nXG4gICAgfVxuXG4gICAgLm14X1JlcGx5VGlsZV9zZW5kZXIge1xuICAgICAgICBncmlkLWFyZWE6IHNlbmRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cHg7XG5cbiAgICAgICAgLm14X0Rpc2FtYmlndWF0ZWRQcm9maWxlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcblxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvLyBhbnRpLXphbGdvLCB3aXRoIG92ZXJmbG93IGhpZGRlblxuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAgICAgLy8gdHJ1bmNhdGUgbG9uZyBkaXNwbGF5IG5hbWVzXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0Jhc2VBdmF0YXIge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7IC8vIFRvIG1hdGNoIHNpemVcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1lZGlhIG9ubHkgUGVyY3kge1xuICAgIC8qIFJlbW92ZSB0aGUgbGlzdCBzdHlsZSBpbiBwZXJjeSB0ZXN0cyBmb3Igc2NyZWVuc2hvdCBjb25zaXN0ZW5jeSAqL1xuICAgIDppcyh1bCwgb2wpIHtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZSAhaW1wb3J0YW50O1xuXG4gICAgICAgIC5teF9FdmVudFRpbGVfbGFzdCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUm9vbUJyZWFkY3J1bWJzIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIC8qIENyZWF0ZSBhIGZsZXhib3ggZm9yIHRoZSBjcnVtYnMgKi9cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcblxuICAgIC5teF9Sb29tQnJlYWRjcnVtYnNfY3J1bWIge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgfVxuXG4gICAgLyogVGhlc2UgY2xhc3NlcyBjb21lIGZyb20gdGhlIENTU1RyYW5zaXRpb24gY29tcG9uZW50LiBUaGVyZSdzIG1hbnkgbW9yZSBjbGFzc2VzIHdlICovXG4gICAgLyogY291bGQgY2FyZSBhYm91dCwgYnV0IHRoaXMgaXMgYWxsIHdlIHdvcnJpZWQgYWJvdXQgZm9yIG5vdy4gVGhlIGFuaW1hdGlvbiB3b3JrcyBieSAqL1xuICAgIC8qIGZpcnN0IHRyaWdnZXJpbmcgdGhlIGVudGVyIHN0YXRlIHdpdGggdGhlIG5ld2VzdCBicmVhZGNydW1iIG9mZiBzY3JlZW4gKC00MHB4KSB0aGVuICovXG4gICAgLyogc2xpZGluZyBpdCBpbnRvIHZpZXcuICovXG4gICAgJi5teF9Sb29tQnJlYWRjcnVtYnMtZW50ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTQwcHgpOyAvKiAzMnB4IGZvciB0aGUgYXZhdGFyLCA4cHggZm9yIHRoZSBtYXJnaW4gKi9cbiAgICB9XG4gICAgJi5teF9Sb29tQnJlYWRjcnVtYnMtZW50ZXItYWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuXG4gICAgICAgIC8qIFRpbWluZyBmdW5jdGlvbiBpcyBhcy1yZXF1ZXN0ZWQgYnkgZGVzaWduLiAqL1xuICAgICAgICAvKiBOT1RFOiBUaGUgdHJhbnNpdGlvbiB0aW1lIE1VU1QgbWF0Y2ggdGhlIHZhbHVlIHBhc3NlZCB0byBDU1NUcmFuc2l0aW9uISAqL1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNjQwbXMgY3ViaWMtYmV6aWVyKDAuNjYsIDAuMDIsIDAuMzYsIDEpO1xuICAgIH1cblxuICAgIC5teF9Sb29tQnJlYWRjcnVtYnNfcGxhY2Vob2xkZXIge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OyAvKiBzcGVjaWZpY2FsbHkgdG8gbWF0Y2ggdGhlIGhlaWdodCB0aGlzIGlzIG5vdCBzY2FsZWQgKi9cbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgIH1cbn1cblxuLm14X1Jvb21CcmVhZGNydW1ic19Ub29sdGlwIHtcbiAgICBtYXJnaW4tbGVmdDogLTQycHg7XG4gICAgbWFyZ2luLXRvcDogLTQycHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUm9vbUNhbGxCYW5uZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy0xMiAkc3BhY2luZy0xNjtcblxuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzeXN0ZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXhfUm9vbUNhbGxCYW5uZXJfdGV4dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAxO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5teF9Sb29tQ2FsbEJhbm5lcl9sYWJlbCB7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkc3BhY2luZy04O1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hc2stc2l6ZTogMTZweDtcbiAgICAgICAgbWFzay1wb3NpdGlvbi15OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDEuMmVtOyAvKiB0byBtYXRjaCBsaW5lIGhlaWdodCAqL1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvdmlkZW8tY2FsbC5zdmdcIik7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuOnJvb3Qge1xuICAgIC0tUm9vbUhlYWRlci1pbmRpY2F0b3ItZG90LXNpemU6IDhweDtcbiAgICAtLVJvb21IZWFkZXItaW5kaWNhdG9yLWRvdC1vZmZzZXQ6IC0zcHg7XG4gICAgLS1Sb29tSGVhZGVyLWluZGljYXRvci1wdWxzZUNvbG9yOiAkYWxlcnQ7XG59XG4ucXJzY2FuIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogOHB4O1xuICAgICAgICByaWdodDogMTdweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9xci1jb2RlLnN2Z1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHFyX2NvZGVfY29sb3I7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICB9XG59XG4ucXJzY2FuMiB7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTBweDtcbiAgICByaWdodDogMHB4O1xuICAgIGhlaWdodDogMzRweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjVmODtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDVweDtcbiAgICAgICAgcmlnaHQ6IDVweDtcbiAgICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgICAgICB3aWR0aDogMjVweDtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9xci1jb2RlLnN2Z1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwLCAxNDEsIDI1NSk7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICB9XG59XG4uY3VzdG9tLXNlbGVjdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHotaW5kZXg6IDM7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjdXN0b21fc2VsZWN0X2JvcmRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tX3NlbGVjdF9iYWNrZ3JvdW5kO1xuXG4gICAgLnNlbGVjdGVkLW9wdGlvbiB7XG4gICAgICAgIGhlaWdodDogMTNweDtcbiAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICAgIGNvbG9yOiAkc2VsZWN0ZWRfb3B0aW9uX2NvbG9yO1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgICAgcmlnaHQ6IDBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvY2hldnJvbi1kb3duLnN2Z1wiKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b21fc2VsZWN0X2JhY2tncm91bmQ7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5vcHRpb25zIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGNvbG9yOiAkY3VzdG9tX3NlbGVjdF9jb2xvcjtcbiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b21fc2VsZWN0X2JhY2tncm91bmQ7XG4gICAgICAgIC5vcHRpb24tbXkge1xuICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICAgICAgY29sb3I6ICRjdXN0b21fc2VsZWN0X2NvbG9yO1xuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgICAgICAgICAgLm9wdGlvbi1teSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLm9wdGlvbi1teTpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbXhfeHJwX21vZGVsX2NvbG9yO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfUm9vbUhlYWRlciB7XG4gICAgZmxleDogMCAwIDUwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRwcmltYXJ5LWhhaXJsaW5lLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuXG4gICAgLm14X1Jvb21IZWFkZXJfaWNvbiB7XG4gICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgd2lkdGg6IDEycHg7XG5cbiAgICAgICAgJi5teF9Sb29tSGVhZGVyX2ljb25fdmlkZW8ge1xuICAgICAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC92aWRlby1jYWxsLnN2Z1wiKTtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfRTJFSWNvbiB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7IC8qIFRvIGdpdmUgdGhlIHRvb2x0aXAgcm9vbSB0byBicmVhdGhlICovXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfQ2FsbER1cmF0aW9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogY2FsYygoJGZvbnQtMTVweCAtICRmb250LTEzcHgpIC8gMik7IC8qIFRvIGFsaWduIHdpdGggdGhlIG5hbWUgKi9cbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xM3B4O1xuICAgIH1cbn1cblxuLm14X1Jvb21IZWFkZXJfd3JhcHBlciB7XG4gICAgaGVpZ2h0OiA0NHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgbWFyZ2luOiAwIDIwcHggMCAxNnB4O1xuICAgIHBhZGRpbmctdG9wOiA2cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRzeXN0ZW07XG5cbiAgICAubXhfSW52aXRlT25seUljb25fbGFyZ2Uge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLm14X0JldGFDYXJkX2JldGFQaWxsIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy04O1xuICAgIH1cbn1cblxuLm14X1Jvb21IZWFkZXJfbmFtZSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICBtaW4taGVpZ2h0OiAyNHB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIG1hcmdpbjogMCAzcHg7XG4gICAgcGFkZGluZzogMXB4IDRweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuICAgIH1cblxuICAgIC5teF9Sb29tSGVhZGVyX25hbWV0ZXh0IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLm14X1Jvb21IZWFkZXJfY2hldnJvbiB7XG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBtYXNrLXNpemU6IDIwcHg7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2NoZXZyb24tZG93bi5zdmdcIik7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgIH1cblxuICAgICYubXhfUm9vbUhlYWRlcl9uYW1lLS10ZXh0b25seSB7XG4gICAgICAgIGN1cnNvcjogdW5zZXQ7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnNldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuXG4gICAgICAgIC5teF9Sb29tSGVhZGVyX2NoZXZyb24ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X1Jvb21IZWFkZXJfc2V0dGluZ3NIaW50IHtcbiAgICBjb2xvcjogJHNldHRpbmdzLWdyZXktZmctY29sb3IgIWltcG9ydGFudDtcbn1cblxuLm14X1Jvb21IZWFkZXJfc2VhcmNoU3RhdHVzIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLm14X1Jvb21Ub3BpYyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm14X1Jvb21IZWFkZXJfdG9waWMge1xuICAgICRsaW5lSGVpZ2h0OiAkZm9udC0xNnB4O1xuICAgICRsaW5lczogMjtcblxuICAgIGZsZXg6IDE7XG4gICAgY29sb3I6ICRyb29tdG9waWMtY29sb3I7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXNpemU6ICRmb250LTEzcHg7XG4gICAgbGluZS1oZWlnaHQ6ICRsaW5lSGVpZ2h0O1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoJGxpbmVIZWlnaHQgKiAkbGluZXMpO1xuXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6ICRsaW5lczsgLyogU2VlOiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLW92ZXJmbG93LTMvI3dlYmtpdC1saW5lLWNsYW1wICovXG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbn1cblxuLm14X1Jvb21IZWFkZXJfdG9waWMgLm14X0Vtb2ppIHtcbiAgICAvKiBVbmRvIGZvbnQgc2l6ZSBpbmNyZWFzZSB0byBwcmV2ZW50IHZlcnRpY2FsIGNyb3BwaW5nIGFuZCBlbnN1cmUgdGhlIHNhbWUgc2l6ZSAqL1xuICAgIC8qIGFzIGluIHBsYWluIHRleHQgZW1vamlzICovXG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG4ubXhfUm9vbUhlYWRlcl9hdmF0YXIge1xuICAgIGZsZXg6IDA7XG4gICAgbWFyZ2luOiAwIDdweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXhfUm9vbUhlYWRlcl9hdmF0YXIgLm14X0Jhc2VBdmF0YXJfaW1hZ2Uge1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG4ubXhfUm9vbUhlYWRlcl9idXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBtYXJnaW4tbGVmdDogMXB4O1xuICAgIG1hcmdpbi1yaWdodDogMXB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB3aWR0aDogMzJweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA0cHg7IC8qIGNlbnRlciB3aXRoIHBhcmVudCBvZiAzMnB4ICovXG4gICAgICAgIGxlZnQ6IDRweDsgLyogY2VudGVyIHdpdGggcGFyZW50IG9mIDMycHggKi9cbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGljb24tYnV0dG9uLWNvbG9yO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoJGFjY2VudCwgMC4xKTtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbi5zbGlkZXItY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMCAxMHB4OyAvKiBQYWRkaW5nIHRvIHByZXZlbnQgb3ZlcmZsb3cgKi9cbn1cblxuLnNsaWRlciB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvKiBPdmVycmlkZSBkZWZhdWx0IGFwcGVhcmFuY2UgKi9cbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMjBweCk7IC8qIFdpZHRoIGFjY291bnRpbmcgZm9yIHBhZGRpbmcgKi9cbiAgICBtYXJnaW46IDI0cHggMTBweDsgLyogU3BhY2UgZm9yIHRvb2x0aXAgKi9cbn1cblxuLnRvb2x0aXAge1xuICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IC0xN3B4OyAvKiBQb3NpdGlvbiBhYm92ZSB0aGUgc2xpZGVyICovXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOyAvKiBDZW50ZXIgdGhlIHRvb2x0aXAgKi9cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgLyogSWdub3JlIG1vdXNlIGZvciB0b29sdGlwICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDE3cHg7XG4gICAgICAgIGxlZnQ6IDM0cHg7XG4gICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgd2lkdGg6IDI1cHg7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZG93bi5zdmdcIik7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICB9XG59XG4uZmxhZ3Mge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG59XG4jaW5wdXRDb3JyZWN0ID4gZGl2ID4gZGl2ID4gZGl2ID4gZGl2ID4gZGl2ID4gaW5wdXQge1xuICAgIG1hcmdpbjogMDtcbn1cbi8qIEZvciBzdHlsaW5nIHRoZSB0aHVtYiBhbmQgdHJhY2sgb2YgdGhlIHNsaWRlciBmb3IgZGlmZmVyZW50IGJyb3dzZXJzLCB5b3UgbWlnaHQgbmVlZCBhZGRpdGlvbmFsIENTUy4gKi9cbi5xckNvZGVQcm9tcHQge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiKDIzNiwgMjM0LCAyMzQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBtYXgtd2lkdGg6IDUwMHB4O1xuICAgIHdpZHRoOiA0MCU7XG4gICAgbGVmdDogMzUlO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAyOCU7XG59XG5AbWVkaWEgKG1heC13aWR0aDogMTMwMHB4KSB7XG4gICAgLnFyQ29kZVByb21wdCB7XG4gICAgICAgIG1pbi13aWR0aDogNDAlO1xuICAgICAgICBsZWZ0OiAzMCU7XG4gICAgfVxufVxuLm1lbW9zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogcmlnaHQ7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uO1xufVxuLnRleHRhcmVhMTIzIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkY3VzdG9tX3NlbGVjdF9ib3JkZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbV9zZWxlY3RfYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHNlbGVjdGVkX29wdGlvbl9jb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogNXB4O1xufVxuLmxhYmVsZm9tYXQge1xuICAgIHdpZHRoOiA1MHB4O1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmY1Zjg7XG4gICAgY29sb3I6ICM2MTcwOGI7XG59XG4uaW5wdXRvZmxhc3Qge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmNWY4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgY29sb3I6ICM2MTcwOGI7XG59XG4ubGFzdElucHV0IHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogNXB4O1xufVxuLm14X3hycF9tb2RlbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICB0b3A6IDQwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTM1JSk7XG4gICAgbWluLXdpZHRoOiA3MDBweDtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtaW4taGVpZ2h0OiA0NTVweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMjM2LCAyMzQsIDIzNCk7XG4gICAgYmFja2dyb3VuZDogJG14X3hycF9tb2RlbF9iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkbXhfeHJwX21vZGVsX2NvbG9yO1xuICAgIHotaW5kZXg6IDk5O1xufVxuLm14X1NlYXJjaEJhcl9jYW5jZWxfbXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpY29uLWJ1dHRvbi1jb2xvcjtcbiAgICBtYXNrOiB1cmwoXCIkKHJlcykvaW1nL2NhbmNlbC5zdmdcIik7XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBtYXNrLXBvc2l0aW9uOiByaWdodDtcbiAgICBtYXNrLXNpemU6IDE4cHg7XG4gICAgcGFkZGluZzogMTVweDtcbiAgICBtYXJnaW46IDAgMTJweCAwIDNweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXhfRmllbGRfY3VzdG9tX3NlbGVjdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbV9zZWxlY3RfYmFja2dyb3VuZCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAkY3VzdG9tX3NlbGVjdF9jb2xvciAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiA2MCU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGN1c3RvbV9zZWxlY3RfYm9yZGVyICFpbXBvcnRhbnQ7XG59XG4ubXhfUm9vbUhlYWRlcl9idXR0b25feHJwIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IDFweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDFweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgd2lkdGg6IDI2cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDVweDtcbiAgICAgICAgbGVmdDogNXB4O1xuICAgICAgICBoZWlnaHQ6IDE1cHg7XG4gICAgICAgIHdpZHRoOiAxN3B4O1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMveHJwLnN2Z1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICB9XG59XG4ubXhfeHJwX3NlbmQge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1cHg7XG4gICAgICAgIGxlZnQ6IDVweDtcbiAgICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgICAgICB3aWR0aDogMjVweDtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3VwbG9hZDIuc3ZnXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgIH1cbn1cbi5teF90YWJfZGl2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMjBweDtcbn1cbi5teF90YWJfZGl2MiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDIwcHg7XG59XG4ubXhfdGFiX2RpdjIgPiBkaXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLm14X3RhYl9kaXYgPiBkaXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiA1cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xufVxuLm14X3hycF9yZWNlaXZlIHtcbiAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xufVxuLm14X3hycF9jb3B5IHtcbiAgICB3aWR0aDogMjBweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMjBweCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luOiAwcHggMHB4IC0zcHggNHB4O1xufVxuLnNoaWZ0X2xpdHRsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogNXB4O1xuICAgIGNvbG9yOiAkY3VzdG9tX3NlbGVjdF9jb2xvcjtcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG59XG4ucmVhY3QtdGFic19fdGFiLS1zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZDogJGN1c3RvbV9zZWxlY3RfYmFja2dyb3VuZCAhaW1wb3J0YW50O1xufVxuLm14X3hycF90cmFuc2FjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5teF9Sb29tSGVhZGVyX2J1dHRvbl91bnJlYWRJbmRpY2F0b3JfYmcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogdmFyKC0tUm9vbUhlYWRlci1pbmRpY2F0b3ItZG90LW9mZnNldCk7XG4gICAgdG9wOiB2YXIoLS1Sb29tSGVhZGVyLWluZGljYXRvci1kb3Qtb2Zmc2V0KTtcbiAgICBtYXJnaW46IDRweDtcbiAgICB3aWR0aDogdmFyKC0tUm9vbUhlYWRlci1pbmRpY2F0b3ItZG90LXNpemUpO1xuICAgIGhlaWdodDogdmFyKC0tUm9vbUhlYWRlci1pbmRpY2F0b3ItZG90LXNpemUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNik7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKCRiYWNrZ3JvdW5kLCAxKTtcbn1cblxuLm14X1Jvb21IZWFkZXJfYnV0dG9uX3VucmVhZEluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiB2YXIoLS1Sb29tSGVhZGVyLWluZGljYXRvci1kb3Qtb2Zmc2V0KTtcbiAgICB0b3A6IHZhcigtLVJvb21IZWFkZXItaW5kaWNhdG9yLWRvdC1vZmZzZXQpO1xuICAgIG1hcmdpbjogNHB4O1xuXG4gICAgJi5teF9JbmRpY2F0b3JfcmVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgkYWxlcnQsIDEpO1xuICAgICAgICBib3gtc2hhZG93OiByZ2JhKCRhbGVydCwgMSk7XG4gICAgfVxuXG4gICAgJi5teF9JbmRpY2F0b3JfZ3JheSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoJHJvb20taWNvbi11bnJlYWQtY29sb3IsIDEpO1xuICAgICAgICBib3gtc2hhZG93OiByZ2JhKCRyb29tLWljb24tdW5yZWFkLWNvbG9yLCAxKTtcbiAgICB9XG5cbiAgICAmLm14X0luZGljYXRvcl9ib2xkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgkcHJpbWFyeS1jb250ZW50LCAxKTtcbiAgICAgICAgYm94LXNoYWRvdzogcmdiYSgkcHJpbWFyeS1jb250ZW50LCAxKTtcbiAgICB9XG59XG5cbi5teF9Sb29tSGVhZGVyX2J1dHRvbi0tdW5yZWFkIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcm9vbS1pY29uLXVucmVhZC1jb2xvciAhaW1wb3J0YW50O1xuICAgIH1cbn1cbi5zZWxlY3RfaW5wdXQge1xuICAgIHdpZHRoOiAzMTBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuLmFtb3VudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgdG9wOiA0MHB4O1xufVxuLmFtb3VudF92YWx1ZSB7XG4gICAgY29sb3I6ICRzZWxlY3RlZF9vcHRpb25fY29sb3I7XG59XG4uc2VsZWN0X2lucHV0MiB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICB3aWR0aDogNzBweDtcbiAgICBtYXJnaW4taW5saW5lOiA1cHg7XG4gICAgY29sb3I6ICRzZWxlY3RlZF9vcHRpb25fY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG14X3hycF9tb2RlbF9iYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3JkZXI6IG5vbmU7XG59XG4vKiBTdHlsaW5nIGZvciBDaHJvbWUsIFNhZmFyaSwgYW5kIG90aGVyIFdlYktpdCBicm93c2VycyAqL1xuaW5wdXRbdHlwZT1cInJhbmdlXCJdOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvKiBPdmVycmlkZSBkZWZhdWx0IGxvb2sgKi9cbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIHdpZHRoOiAxNnB4OyAvKiBTZXQgYSBzcGVjaWZpYyBzbGlkZXIgaGFuZGxlIHdpZHRoICovXG4gICAgaGVpZ2h0OiAxNnB4OyAvKiBTZXQgYSBzcGVjaWZpYyBzbGlkZXIgaGFuZGxlIGhlaWdodCAqL1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTsgLyogTWFrZSBpdCBjaXJjdWxhciAqL1xuICAgIGJhY2tncm91bmQ6ICNmZmY7IC8qIFNsaWRlciBoYW5kbGUgY29sb3IgKi9cbiAgICBib3JkZXI6IDJweCBzb2xpZCAjOTFkNWZmO1xuICAgIGN1cnNvcjogcG9pbnRlcjsgLyogQ3Vyc29yIG9uIGhvdmVyICovXG4gICAgbWFyZ2luLXRvcDogLTdweDsgLyogQWxpZ24gd2l0aCB0aGUgdHJhY2sgKi9cbn1cblxuaW5wdXRbdHlwZT1cInJhbmdlXCJdOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgd2lkdGg6IDEwMCU7IC8qIEZ1bGwtd2lkdGggKi9cbiAgICBoZWlnaHQ6IDFweDsgLyogU2xpZGVyIHRyYWNrIGhlaWdodCAqL1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDsgLyogVHJhY2sgY29ybmVyIHJvdW5kaW5nICovXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi8qIFN0eWxpbmcgZm9yIEZpcmVmb3ggKi9cbmlucHV0W3R5cGU9XCJyYW5nZVwiXTo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgd2lkdGg6IDE2cHg7IC8qIFNldCBhIHNwZWNpZmljIHNsaWRlciBoYW5kbGUgd2lkdGggKi9cbiAgICBoZWlnaHQ6IDE2cHg7IC8qIFNldCBhIHNwZWNpZmljIHNsaWRlciBoYW5kbGUgaGVpZ2h0ICovXG4gICAgYm9yZGVyOiBub25lOyAvKiBSZW1vdmUgZGVmYXVsdCBib3JkZXIgKi9cbiAgICBib3JkZXItcmFkaXVzOiA1MCU7IC8qIE1ha2UgaXQgY2lyY3VsYXIgKi9cbiAgICBiYWNrZ3JvdW5kOiAjZmZmOyAvKiBTbGlkZXIgaGFuZGxlIGNvbG9yICovXG4gICAgYm9yZGVyOiAycHggc29saWQgIzkxZDVmZjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7IC8qIEN1cnNvciBvbiBob3ZlciAqL1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9XCJyYW5nZVwiXTo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgd2lkdGg6IDEwMCU7IC8qIEZ1bGwtd2lkdGggKi9cbiAgICBoZWlnaHQ6IDFweDsgLyogU2xpZGVyIHRyYWNrIGhlaWdodCAqL1xuICAgIGJhY2tncm91bmQ6ICNjY2M7IC8qIFRyYWNrIGNvbG9yICovXG4gICAgYm9yZGVyLXJhZGl1czogMnB4OyAvKiBUcmFjayBjb3JuZXIgcm91bmRpbmcgKi9cbiAgICBvdXRsaW5lOiBub25lO1xufVxuXG4vKiBTdHlsaW5nIGZvciBJRSBhbmQgRWRnZSAqL1xuaW5wdXRbdHlwZT1cInJhbmdlXCJdOjotbXMtdGh1bWIge1xuICAgIHdpZHRoOiAxNnB4OyAvKiBTZXQgYSBzcGVjaWZpYyBzbGlkZXIgaGFuZGxlIHdpZHRoICovXG4gICAgaGVpZ2h0OiAxNnB4OyAvKiBTZXQgYSBzcGVjaWZpYyBzbGlkZXIgaGFuZGxlIGhlaWdodCAqL1xuICAgIGJhY2tncm91bmQ6ICNmYjAxMDE7IC8qIFNsaWRlciBoYW5kbGUgY29sb3IgKi9cbiAgICBib3JkZXI6IDJweCBzb2xpZCAjOTFkNWZmO1xuICAgIGN1cnNvcjogcG9pbnRlcjsgLyogQ3Vyc29yIG9uIGhvdmVyICovXG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuaW5wdXRbdHlwZT1cInJhbmdlXCJdOjotbXMtdHJhY2sge1xuICAgIHdpZHRoOiAxMDAlOyAvKiBGdWxsLXdpZHRoICovXG4gICAgaGVpZ2h0OiAxcHg7IC8qIFNsaWRlciB0cmFjayBoZWlnaHQgKi9cbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgLyogSUUgdXNlcyAnY29sb3InIHRvIHN0eWxlIHRoZSB0cmFjayAqL1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6ICNkZGQ7IC8qIElFIHVzZXMgJ2NvbG9yJyB0byBzdHlsZSB0aGUgdHJhY2sgKi9cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuLyogQ29tbW9uIHN0eWxlcyAqL1xuaW5wdXRbdHlwZT1cInJhbmdlXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8qIFJlc2V0IGRlZmF1bHQgYnJvd3NlciBzdHlsZXMgKi9cbiAgICBtYXJnaW46IDEwcHggMDsgLyogUHJvdmlkZSBzdWZmaWNpZW50IHNwYWNlICovXG4gICAgd2lkdGg6IDEwMCU7IC8qIEZ1bGwtd2lkdGggKi9cbn1cblxuLyogRm9jdXMgc3R5bGVzICovXG5pbnB1dFt0eXBlPVwicmFuZ2VcIl06Zm9jdXMtd2l0aGluIHtcbiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiAjZWVlO1xufVxuXG5pbnB1dFt0eXBlPVwicmFuZ2VcIl06Zm9jdXMtd2l0aGluOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogI2VlZTtcbn1cblxuaW5wdXRbdHlwZT1cInJhbmdlXCJdOmZvY3VzLXdpdGhpbjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogI2VlZTtcbn1cblxuaW5wdXRbdHlwZT1cInJhbmdlXCJdOmZvY3VzLXdpdGhpbjo6LW1zLXRyYWNrIHtcbiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiAjZWVlO1xufVxuXG4vKiBGaXJlZm94ICovXG5pbnB1dFt0eXBlPVwicmFuZ2VcIl06Oi1tb3otcmFuZ2UtcHJvZ3Jlc3Mge1xuICAgIGJhY2tncm91bmQ6ICM5MWQ1ZmY7IC8qIENvbG9yIG9mIHRoZSBwcm9ncmVzc2VkIHRyYWNrICovXG4gICAgaGVpZ2h0OiA0cHg7IC8qIEhlaWdodCBvZiB0aGUgcHJvZ3Jlc3NlZCB0cmFjayAqL1xufVxuXG5pbnB1dFt0eXBlPVwicmFuZ2VcIl06Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgIGJhY2tncm91bmQ6ICNkZGQ7IC8qIENvbG9yIG9mIHRoZSBlbnRpcmUgdHJhY2sgKi9cbiAgICBoZWlnaHQ6IDRweDsgLyogSGVpZ2h0IG9mIHRoZSBlbnRpcmUgdHJhY2sgKi9cbn1cblxuLyogSUUgYW5kIEVkZ2UgKHByZS1DaHJvbWl1bSB2ZXJzaW9ucykgKi9cbmlucHV0W3R5cGU9XCJyYW5nZVwiXTo6LW1zLWZpbGwtbG93ZXIge1xuICAgIGJhY2tncm91bmQ6ICM5MWQ1ZmY7IC8qIENvbG9yIG9mIHRoZSBwcm9ncmVzc2VkIHRyYWNrICovXG59XG5cbmlucHV0W3R5cGU9XCJyYW5nZVwiXTo6LW1zLWZpbGwtdXBwZXIge1xuICAgIGJhY2tncm91bmQ6ICNkZGQ7IC8qIENvbG9yIG9mIHRoZSByZXN0IG9mIHRoZSB0cmFjayAqL1xufVxuXG4uc2VsZWN0X2lucHV0MyB7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIGhlaWdodDogMzBweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBjb2xvcjogIzYxNzA4YjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmNWY4O1xuICAgIGJvcmRlcjogbm9uZTtcbn1cbi5teF9Sb29tSGVhZGVyX2J1dHRvbi0taGlnaGxpZ2h0LFxuLm14X1Jvb21IZWFkZXJfYnV0dG9uOmhvdmVyIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50ICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4ubXhfUm9vbUhlYWRlcl9mb3JnZXRCdXR0b246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2xlYXZlLnN2Z1wiKTtcbiAgICB3aWR0aDogMjZweDtcbn1cblxuLm14X1Jvb21IZWFkZXJfYXBwc0J1dHRvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9hcHBzLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21IZWFkZXJfYXBwc0J1dHRvbl9oaWdobGlnaHQ6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudDtcbn1cblxuLm14X1Jvb21IZWFkZXJfc2VhcmNoQnV0dG9uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL3NlYXJjaC1pbnNldC5zdmdcIik7XG59XG5cbi5teF9Sb29tSGVhZGVyX2ludml0ZUJ1dHRvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9pbnZpdGUuc3ZnXCIpO1xufVxuXG4ubXhfUm9vbUhlYWRlcl92b2ljZUNhbGxCdXR0b246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvdm9pY2UtY2FsbC5zdmdcIik7XG5cbiAgICAvKiBUaGUgY2FsbCBidXR0b24gU1ZHIGlzIHBhZGRlZCBzbGlnaHRseSBkaWZmZXJlbnRseSwgc28gbWF0Y2ggaXQgdXAgdG8gdGhlIHNpemUgKi9cbiAgICAvKiBvZiB0aGUgb3RoZXIgaWNvbnMgKi9cbiAgICBtYXNrLXNpemU6IDIwcHg7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xufVxuXG4ubXhfUm9vbUhlYWRlcl92aWRlb0NhbGxCdXR0b246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvdmlkZW8tY2FsbC5zdmdcIik7XG59XG5cbi5teF9Sb29tSGVhZGVyX2xheW91dEJ1dHRvbi0tZnJlZWRvbTo6YmVmb3JlLFxuLm14X1Jvb21IZWFkZXJfZnJlZWRvbUljb246OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvZnJlZWRvbS5zdmdcIik7XG59XG5cbi5teF9Sb29tSGVhZGVyX2xheW91dEJ1dHRvbi0tc3BvdGxpZ2h0OjpiZWZvcmUsXG4ubXhfUm9vbUhlYWRlcl9zcG90bGlnaHRJY29uOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jYWxsL3Nwb3RsaWdodC5zdmdcIik7XG59XG5cbi5teF9Sb29tSGVhZGVyX2Nsb3NlQnV0dG9uIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2NhbmNlbC5zdmdcIik7XG4gICAgICAgIG1hc2stc2l6ZTogMjBweDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB1bnNldDsgLyogcmVtb3ZlIGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgKi9cblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGljb24tYnV0dG9uLWNvbG9yOyAvKiBzZXQgdGhlIGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvciAqL1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfUm9vbUhlYWRlcl9taW5pbWlzZUJ1dHRvbjo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcmVkdWNlLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21IZWFkZXJfbGF5b3V0TWVudSAubXhfSWNvbml6ZWRDb250ZXh0TWVudV9pY29uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBtYXNrLXNpemU6IDIwcHg7XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb250ZW50O1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLm14X1Jvb21IZWFkZXJfd3JhcHBlciB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAubXhfUm9vbUhlYWRlciB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxufVxuXG4vL1xuLkxlZnRQYW5lbF9vcGVuQnRuIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGZvbnQtc2l6ZTogMTlweDtcbiAgICBtYXJnaW4tbGVmdDogN3B4O1xufVxuXG4vL1Jlc3BvbnNpdmUgRGVzaWduXG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAuTGVmdFBhbmVsX29wZW5CdG4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbi8vXG4uTGVmdFBhbmVsX29wZW5CdG4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgZm9udC1zaXplOiAxOXB4O1xuICAgIG1hcmdpbi1sZWZ0OiA3cHg7XG59XG5cbi8vUmVzcG9uc2l2ZSBEZXNpZ25cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIC5MZWZ0UGFuZWxfb3BlbkJ0biB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA4NTBweCkge1xuICAgIC5teF94cnBfbW9kZWwge1xuICAgICAgICBtaW4td2lkdGg6IDkwJTtcbiAgICAgICAgbWluLWhlaWdodDogMzAwcHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAubXhfeHJwX21vZGVsIHtcbiAgICAgICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xuICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Jvb21JbmZvTGluZSB7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGhlaWdodDogMS4yZW07XG4gICAgICAgIG1hc2stcG9zaXRpb24teTogY2VudGVyO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICB9XG5cbiAgICAmLm14X1Jvb21JbmZvTGluZV9wdWJsaWM6OmJlZm9yZSB7XG4gICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICBtYXNrLXNpemU6IDEycHg7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZ2xvYmUuc3ZnXCIpO1xuICAgIH1cblxuICAgICYubXhfUm9vbUluZm9MaW5lX3ByaXZhdGU6OmJlZm9yZSB7XG4gICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICBtYXNrLXNpemU6IDEwcHg7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9sb2NrLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAmLm14X1Jvb21JbmZvTGluZV92aWRlbzo6YmVmb3JlIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIG1hc2stc2l6ZTogMTZweDtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvdmlkZW8tY2FsbC5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1Jvb21JbmZvTGluZV9tZW1iZXJzIHtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiwrdcIjsgLyogdmlzdWFsIHNlcGFyYXRvciAqL1xuICAgICAgICAgICAgbWFyZ2luOiAwIDZweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Sb29tTGlzdCB7XG4gICAgcGFkZGluZy1yaWdodDogN3B4OyAvKiB3aWR0aCBvZiB0aGUgc2Nyb2xsYmFyLCB0byBsaW5lIHRoaW5ncyB1cCAqL1xufVxuXG4ubXhfUm9vbUxpc3RfaWNvblBsdXM6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L3BsdXMtY2lyY2xlLnN2Z1wiKTtcbn1cbi5teF9Sb29tTGlzdF9pY29uTmV3Um9vbTo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3QvaGFzaC1wbHVzLnN2Z1wiKTtcbn1cbi5teF9Sb29tTGlzdF9pY29uTmV3VmlkZW9Sb29tOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9oYXNoLXZpZGVvLnN2Z1wiKTtcbn1cbi5teF9Sb29tTGlzdF9pY29uQWRkRXhpc3RpbmdSb29tOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9oYXNoLnN2Z1wiKTtcbn1cbi5teF9Sb29tTGlzdF9pY29uRXhwbG9yZTo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3QvaGFzaC1zZWFyY2guc3ZnXCIpO1xufVxuLm14X1Jvb21MaXN0X2ljb25EaWFscGFkOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9kaWFscGFkLnN2Z1wiKTtcbn1cbi5teF9Sb29tTGlzdF9pY29uU3RhcnRDaGF0OjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9tZW1iZXItcGx1cy5zdmdcIik7XG59XG4ubXhfUm9vbUxpc3RfaWNvbkludml0ZTo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9zaGFyZS5zdmdcIik7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUm9vbUxpc3RIZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC5teF9Sb29tTGlzdEhlYWRlcl9jb250ZXh0TGVzc1RpdGxlLFxuICAgIC5teF9Sb29tTGlzdEhlYWRlcl9jb250ZXh0TWVudUJ1dHRvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIHBhZGRpbmc6IDFweCAyNHB4IDFweCA0cHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgfVxuXG4gICAgLm14X1Jvb21MaXN0SGVhZGVyX2NvbnRleHRNZW51QnV0dG9uIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICB0b3A6IDNweDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvY2hldnJvbi1kb3duLnN2Z1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgICZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1Jvb21MaXN0SGVhZGVyX3BsdXNCdXR0b24ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwYW5lbC1hY3Rpb25zO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBmbGV4LXNocmluazogMDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9wbHVzLnN2Z1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9Sb29tTGlzdEhlYWRlcl9pY29uSW52aXRlOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2ludml0ZS5zdmdcIik7XG59XG4ubXhfUm9vbUxpc3RIZWFkZXJfaWNvblN0YXJ0Q2hhdDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3QvbWVtYmVyLXBsdXMuc3ZnXCIpO1xufVxuLm14X1Jvb21MaXN0SGVhZGVyX2ljb25OZXdSb29tOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9oYXNoLXBsdXMuc3ZnXCIpO1xufVxuLm14X1Jvb21MaXN0SGVhZGVyX2ljb25OZXdWaWRlb1Jvb206OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L2hhc2gtdmlkZW8uc3ZnXCIpO1xufVxuLm14X1Jvb21MaXN0SGVhZGVyX2ljb25FeHBsb3JlOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9oYXNoLXNlYXJjaC5zdmdcIik7XG59XG4ubXhfUm9vbUxpc3RIZWFkZXJfaWNvblBsdXM6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3BsdXMuc3ZnXCIpO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1IC0gMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Sb29tUHJldmlld0JhciB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgaDMge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG5cbiAgICAgICAgJi5teF9Sb29tUHJldmlld0Jhcl9zcGlubmVyVGl0bGUge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaDMsXG4gICAgLm14X1Jvb21QcmV2aWV3QmFyX21lc3NhZ2UgcCB7XG4gICAgICAgIC8qIGJyZWFrLXdvcmQsIHdpdGggZmFsbGJhY2sgdG8gYnJlYWstYWxsLCB3aGljaCBpcyB3aWRlciBzdXBwb3J0ZWQgKi9cbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgIH1cblxuICAgIC5teF9TcGlubmVyIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luOiAxMHB4IDEwcHggMTBweCAwO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG5cbiAgICAubXhfUm9vbVByZXZpZXdCYXJfZm9vdGVyIHtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjBweDtcblxuICAgICAgICAubXhfU3Bpbm5lciB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfUm9vbVByZXZpZXdCYXJfYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbn1cblxuLm14X1Jvb21QcmV2aWV3QmFyX21lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cbiAgICBwIHtcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgICB9XG59XG5cbi5teF9Sb29tUHJldmlld0Jhcl9wYW5lbCB7XG4gICAgcGFkZGluZzogOHB4IDhweCA4cHggMjBweDtcblxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cbiAgICAubXhfUm9vbVByZXZpZXdCYXJfYWN0aW9ucyB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBwYWRkaW5nOiAzcHggOHB4O1xuXG4gICAgICAgICYgPiAqIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1Jvb21QcmV2aWV3QmFyX21lc3NhZ2Uge1xuICAgICAgICBmbGV4OiAxIDAgMDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgICYgPiAqIHtcbiAgICAgICAgICAgIG1hcmdpbjogNHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBXaXRoIG1heGltaXNlZCB3aWRnZXRzLCB0aGUgcGFuZWwgZml0cyBpbiBiZXR0ZXIgd2hlbiByb3VuZGVkICovXG4ubXhfTWFpblNwbGl0X21heGltaXNlZFdpZGdldCAubXhfUm9vbVByZXZpZXdCYXJfcGFuZWwge1xuICAgIG1hcmdpbjogdmFyKC0tY29udGFpbmVyLWdhcC13aWR0aCk7XG4gICAgbWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvbnRhaW5lci1nYXAtd2lkdGgpIC8gMik7IC8qIFNoYXJlZCB3aXRoIHJpZ2h0IHBhbmVsICovXG4gICAgbWFyZ2luLXRvcDogMDsgLyogQWxyZWFkeSBjb3ZlcmVkIGJ5IGFwcHMgZHJhd2VyICovXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4ubXhfUm9vbVByZXZpZXdCYXJfZGlhbG9nIHtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgYm94LXNpemluZzogY29udGVudDtcbiAgICB3aWR0aDogNDAwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcGFkZGluZzogMjBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAubXhfUm9vbVByZXZpZXdCYXJfbWVzc2FnZSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgJiA+ICoge1xuICAgICAgICAgICAgbWFyZ2luOiA1cHggMCAyMHB4IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfUm9vbVByZXZpZXdCYXJfYWN0aW9ucyB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDdweCA1MHB4OyAvKiBleHRyYSB3aWRlICovXG4gICAgICAgIH1cblxuICAgICAgICAmID4gKiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgICB9XG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9wcmltYXJ5IHtcbiAgICAgICAgICAgIC8qIHRvIGFjY291bnQgZm9yIHRoZSBwYWRkaW5nIG9mIHRoZSBwcmltYXJ5IGJ1dHRvbiB3aGljaCBjYXVzZXMgaW5jb25zaXN0ZW50IGxvb2sgYmV0d2VlbiAqL1xuICAgICAgICAgICAgLyogc3Vic2VxdWVudCBzZWNvbmRhcnkgKHRleHQpIGJ1dHRvbnMgKi9cbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDdweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X1Jvb21QcmV2aWV3QmFyX2ludml0ZXIge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG59XG5cbmEubXhfUm9vbVByZXZpZXdCYXJfaW52aXRlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Jvb21QcmV2aWV3Q2FyZCB7XG4gICAgcGFkZGluZzogJHNwYWNpbmctMzIgJHNwYWNpbmctMjQgIWltcG9ydGFudDsgLyogT3ZlcnJpZGUgU3BhY2VSb29tVmlldydzIGRlZmF1bHQgcGFkZGluZyAqL1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LXdpZHRoOiA0ODBweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzeXN0ZW07XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG5cbiAgICAubXhfUm9vbVByZXZpZXdDYXJkX25vdGljZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMjQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKDIwcHggKyAkc3BhY2luZy04KTtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGhlaWdodDogJGZvbnQtMjRweDtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9yb29tLXN1bW1hcnkuc3ZnXCIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1Jvb21QcmV2aWV3Q2FyZF9pbnZpdGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctMjA7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcblxuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmctODtcblxuICAgICAgICAgICAgLm14X1Jvb21QcmV2aWV3Q2FyZF9pbnZpdGVyX25hbWUge1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xOHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfUm9vbVByZXZpZXdDYXJkX2ludml0ZXJfbXhpZCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Sb29tUHJldmlld0NhcmRfYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAubXhfUm9vbUF2YXRhcl9pc1NwYWNlUm9vbSB7XG4gICAgICAgICAgICAmLm14X0Jhc2VBdmF0YXJfaW1hZ2UsXG4gICAgICAgICAgICAubXhfQmFzZUF2YXRhcl9pbWFnZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tUHJldmlld0NhcmRfdmlkZW8ge1xuICAgICAgICAgICAgd2lkdGg6IDUwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiBjYWxjKCg1MHB4ICsgMiAqIDNweCkgLyAyKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAkc3lzdGVtO1xuXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBsZWZ0OiBjYWxjKC01MHB4IC8gNCAtIDNweCk7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLXByaW1hcnktZmctY29sb3I7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IDIycHg7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvdmlkZW8tY2FsbC5zdmdcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiBYWFggUmVtb3ZlIHRoaXMgd2hlbiB2aWRlbyByb29tcyBsZWF2ZSBiZXRhICovXG4gICAgICAgIC5teF9CZXRhQ2FyZF9iZXRhUGlsbCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogJHNwYWNpbmctMzI7XG4gICAgICAgICAgICBpbnNldC1pbmxpbmUtZW5kOiAkc3BhY2luZy0yNDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGgxLm14X1Jvb21QcmV2aWV3Q2FyZF9uYW1lIHtcbiAgICAgICAgbWFyZ2luOiAkc3BhY2luZy0xNiAwICFpbXBvcnRhbnQ7IC8qIE92ZXJyaWRlIFNwYWNlUm9vbVZpZXcncyBkZWZhdWx0IG1hcmdpbnMgKi9cbiAgICB9XG5cbiAgICAubXhfUm9vbVByZXZpZXdDYXJkX3RvcGljIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTIycHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLTE2O1xuICAgICAgICBtYXgtaGVpZ2h0OiAxNjBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG5cbiAgICAubXhfRmFjZVBpbGUge1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy0yMDtcbiAgICB9XG5cbiAgICAubXhfUm9vbVByZXZpZXdDYXJkX2pvaW5CdXR0b25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMjA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogJHNwYWNpbmctMjA7XG5cbiAgICAgICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHggMDtcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Sb29tU3VibGlzdCB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG5cbiAgICAmLm14X1Jvb21TdWJsaXN0X2hpZGRlbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpub3QoLm14X1Jvb21TdWJsaXN0X21pbmltaXplZCkge1xuICAgICAgICAubXhfUm9vbVN1Ymxpc3RfaGVhZGVyQ29udGFpbmVyIHtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Sb29tU3VibGlzdF9oZWFkZXJDb250YWluZXIge1xuICAgICAgICAvKiBDcmVhdGUgYSBmbGV4Ym94IHRvIG1ha2UgYWxpZ25tZW50IGVhc3kgKi9cbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbiAgICAgICAgLyogU3RpY2t5IEhlYWRlcnMgU3RhcnQgKi9cblxuICAgICAgICAvKiBJZGVhbGx5IHdlJ2QgYmUgYWJsZSB0byB1c2UgYHBvc2l0aW9uOiBzdGlja3k7IHRvcDogMDsgYm90dG9tOiAwO2Agb24gdGhlICovXG4gICAgICAgIC8qIGhlYWRlckNvbnRhaW5lciwgaG93ZXZlciBkdWUgdG8gb3VyIGxheW91dCBjb25jZXJucyB3ZSBhY3R1YWxseSBoYXZlIHRvICovXG4gICAgICAgIC8qIGNhbGN1bGF0ZSBpdCBtYW51YWxseSBzbyB3ZSBjYW4gc3RpY2t5IHRoaW5ncyBpbiB0aGUgcmlnaHQgcGxhY2VzLiBXZSBhbHNvICovXG4gICAgICAgIC8qIHRhcmdldCB0aGUgaGVhZGVyVGV4dCBpbnN0ZWFkIG9mIHRoZSBjb250YWluZXIgdG8gcmVkdWNlIGp1bXBzIHdoZW4gc2Nyb2xsaW5nLCAqL1xuICAgICAgICAvKiBhbmQgdG8gaGVscCBoaWRlIHRoZSBiYWRnZXMvb3RoZXIgYnV0dG9ucyB0aGF0IGNvdWxkIGFwcGVhciBvbiBob3Zlci4gVGhpcyAqL1xuICAgICAgICAvKiBhbGwgd29ya3MgYnkgZW5zdXJpbmcgdGhlIGhlYWRlciB0ZXh0IGhhcyBhIGZpeGVkIGhlaWdodCB3aGVuIHN0aWNreSBzbyB0aGUgKi9cbiAgICAgICAgLyogZml4ZWQgaGVpZ2h0IG9mIHRoZSBjb250YWluZXIgY2FuIG1haW50YWluIHRoZSBzY3JvbGwgcG9zaXRpb24uICovXG5cbiAgICAgICAgLyogVGhlIGNvbWJpbmVkIGhlaWdodCBtdXN0IGJlIHNldCBpbiB0aGUgTGVmdFBhbmVsIGNvbXBvbmVudCBmb3Igc3RpY2t5IGhlYWRlcnMgKi9cbiAgICAgICAgLyogdG8gd29yayBjb3JyZWN0bHkuICovXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9zdGlja2FibGVDb250YWluZXIge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUm9vbVN1Ymxpc3Rfc3RpY2thYmxlIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgIC8qIENyZWF0ZSBhIGZsZXhib3ggdG8gbWFrZSBvcmRlcmluZyBlYXN5ICovXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAgICAgLyogV2UgdXNlIGEgZ2VuZXJpYyBzdGlja3kgY2xhc3MgZm9yIDIgcmVhc29uczogdG8gcmVkdWNlIHN0eWxlIGR1cGxpY2F0aW9uIGFuZCAqL1xuICAgICAgICAgICAgLyogdG8gaWRlbnRpZnkgd2hlbiBhIGhlYWRlciBpcyBzdGlja3kuIElmIHdlIGRpZG4ndCBoYXZlIGEgY29uc2lzdGVudCBzdGlja3kgY2xhc3MsICovXG4gICAgICAgICAgICAvKiB3ZSdkIGhhdmUgdG8gZG8gdGhlIFwiaXMgc3RpY2t5XCIgY2hlY2tzIGFnYWluIG9uIGNsaWNrLCBhcyBjbGlja2luZyB0aGUgaGVhZGVyICovXG4gICAgICAgICAgICAvKiB3aGVuIHN0aWNreSBzY3JvbGxzIGluc3RlYWQgb2YgY29sbGFwc2VzIHRoZSBsaXN0LiAqL1xuICAgICAgICAgICAgJi5teF9Sb29tU3VibGlzdF9oZWFkZXJDb250YWluZXJfc3RpY2t5IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMnB4OyAvKiB0byBtYXRjaCB0aGUgaGVhZGVyIGNvbnRhaW5lciAqL1xuICAgICAgICAgICAgICAgIC8qIHdpZHRoIHNldCBieSBKUyBiZWNhdXNlIG9mIGEgY29tcGF0IGlzc3VlIGJldHdlZW4gRmlyZWZveCBhbmQgQ2hyb21lICovXG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE1cHgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBXZSBkb24ndCBoYXZlIGEgdG9wIHN0eWxlIGJlY2F1c2UgdGhlIHRvcCBpcyBkZXBlbmRlbnQgb24gdGhlIHJvb20gbGlzdCBoZWFkZXIncyAqL1xuICAgICAgICAgICAgLyogaGVpZ2h0LCBhbmQgaXMgdGhlcmVmb3JlIGNhbGN1bGF0ZWQgaW4gSlMuICovXG4gICAgICAgICAgICAvKiBUaGUgY2xhc3MsIG14X1Jvb21TdWJsaXN0X2hlYWRlckNvbnRhaW5lcl9zdGlja3lUb3AsIGlzIGFwcGxpZWQgdGhvdWdoLiAqL1xuICAgICAgICB9XG5cbiAgICAgICAgLyogU3RpY2t5IEhlYWRlcnMgRW5kICovXG4gICAgICAgIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9iYWRnZUNvbnRhaW5lciB7XG4gICAgICAgICAgICAvKiBDcmVhdGUgYW5vdGhlciBmbGV4Ym94IHJvdyBiZWNhdXNlIGl0J3Mgc3VwZXIgZWFzeSB0byBwb3NpdGlvbiB0aGUgYmFkZ2UgdGhpcyB3YXkuICovXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgICAgICAvKiBBcHBseSB0aGUgd2lkdGggYW5kIG1hcmdpbiB0byB0aGUgYmFkZ2Ugc28gdGhlIGNvbnRhaW5lciBkb2Vzbid0IG9jY3VweSBkZWFkIHNwYWNlICovXG4gICAgICAgICAgICAubXhfTm90aWZpY2F0aW9uQmFkZ2Uge1xuICAgICAgICAgICAgICAgIC8qIERvIG5vdCBzZXQgYSB3aWR0aCBzbyB0aGUgYmFkZ2VzIGdldCBwcm9wZXJseSBzaXplZCAqL1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IC8qIHNhbWUgYXMgbWVudSthdXggYnV0dG9ucyAqL1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpub3QoLm14X1Jvb21TdWJsaXN0X2hlYWRlckNvbnRhaW5lcl93aXRoQXV4KSB7XG4gICAgICAgICAgICAubXhfTm90aWZpY2F0aW9uQmFkZ2Uge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4OyAvKiBqdXN0IHRvIHB1c2ggaXQgb3ZlciBhIGJpdCwgYWxpZ25pbmcgaXQgd2l0aCB0aGUgb3RoZXIgZWxlbWVudHMgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9hdXhCdXR0b24sXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9tZW51QnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7IC8qIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgbm90aWZpY2F0aW9uIGJhZGdlICovXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiA0cHg7XG4gICAgICAgICAgICAgICAgbGVmdDogNHB4O1xuICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbXV0ZWQtZmctY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUm9vbVN1Ymxpc3RfYXV4QnV0dG9uOmhvdmVyLFxuICAgICAgICAubXhfUm9vbVN1Ymxpc3RfbWVudUJ1dHRvbjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkcGFuZWwtYWN0aW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIEhpZGUgdGhlIG1lbnUgYnV0dG9uIGJ5IGRlZmF1bHQgKi9cbiAgICAgICAgLm14X1Jvb21TdWJsaXN0X21lbnVCdXR0b24ge1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUm9vbVN1Ymxpc3RfYXV4QnV0dG9uOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L3BsdXMuc3ZnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Jvb21TdWJsaXN0X21lbnVCdXR0b246OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY29udGV4dC1tZW51LnN2Z1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9oZWFkZXJUZXh0IHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyAvKiAxNnB4IGlzIHRoZSBiYWRnZSB3aWR0aCAqL1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE2cHg7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEzcHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuXG4gICAgICAgICAgICAvKiBFbGxpcHNpemUgYW55IHRleHQgb3ZlcmZsb3cgKi9cbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAgICAgICAgIC5teF9Sb29tU3VibGlzdF9jb2xsYXBzZUJ0biB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGVydGlhcnktY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvY2hldnJvbi1kb3duLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLm14X1Jvb21TdWJsaXN0X2NvbGxhcHNlQnRuX2NvbGxhcHNlZDo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBJbiB0aGUgZ2VuZXJhbCBjYXNlLCB3ZSByZXNlcnZlIHNwYWNlIGZvciBlYWNoIHN1Ymxpc3QgaGVhZGVyIHRvIHByZXZlbnQgKi9cbiAgICAvKiBzY3JvbGwganVtcHMgd2hlbiB0aGV5IGJlY29tZSBzdGlja3kuIEhvd2V2ZXIsIHRoYXQgbGVhdmVzIGEgZ2FwIHdoZW4gKi9cbiAgICAvKiBzY3JvbGxlZCB0byB0aGUgdG9wIGFib3ZlIHRoZSBmaXJzdCBzdWJsaXN0ICh3aG9zZSBoZWFkZXIgY2FuIG9ubHkgZXZlciAqL1xuICAgIC8qIHN0aWNrIHRvIHRvcCksIHNvIHdlIG1ha2Ugc3VyZSB0byBleGNsdWRlIHRoZSBmaXJzdCB2aXNpYmxlIHN1Ymxpc3QuICovXG4gICAgJjpub3QoLm14X1Jvb21TdWJsaXN0X2hpZGRlbikgfiAubXhfUm9vbVN1Ymxpc3QgLm14X1Jvb21TdWJsaXN0X3N0aWNrYWJsZUNvbnRhaW5lciB7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICB9XG5cbiAgICAubXhfUm9vbVN1Ymxpc3RfcmVzaXplQm94IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgIC8qIENyZWF0ZSBhbm90aGVyIGZsZXhib3ggY29sdW1uIGZvciB0aGUgdGlsZXMgKi9cbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAubXhfUm9vbVN1Ymxpc3RfdGlsZXMge1xuICAgICAgICAgICAgZmxleDogMSAwIDA7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGNsaXA7XG4gICAgICAgICAgICAvKiBuZWVkIHRoaXMgdG8gYmUgZmxleCBvdGhlcndpc2UgdGhlIG92ZXJmbG93IGhpZGRlbiBmcm9tIGFib3ZlICovXG4gICAgICAgICAgICAvKiBzb21ldGltZXMgdmVydGljYWxseSBjZW50ZXJzIHRoZSBjbGlwcGVkIGxpc3QgLi4uIG5vIGlkZWEgd2h5IGl0IHdvdWxkIGRvIHRoaXMgKi9cbiAgICAgICAgICAgIC8qIGFzIHRoZSBib3ggbW9kZWwgc2hvdWxkIGJlIHRvcCBhbGlnbmVkLiBIYXBwZW5zIGluIGJvdGggRkYgYW5kIENocm9taXVtICovXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgICAgICAvKiB3aXRob3V0IHRoaXMgRmlyZWZveCB3aWxsIHByZWZlciBwdXNoaW5nIHRoZSByZXNpemVyICYgc2hvdyBtb3JlL2xlc3MgYnV0dG9uIGludG8gdGhlIG92ZXJmbG93ICovXG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuXG4gICAgICAgICAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgdHJhbnNwYXJlbnQsIGJsYWNrIDRweCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X1Jvb21TdWJsaXN0X3Jlc2l6ZUJveF9mb3JjZUV4cGFuZGVkIC5teF9Sb29tU3VibGlzdF90aWxlcyB7XG4gICAgICAgICAgICAvKiBpbiB0aGlzIHN0YXRlIHRoZSBkaXYgY2FuIGNvbGxhcHNlIGl0cyBoZWlnaHQgZW50aXJlbHkgaW4gQ2hyb21pdW0sICovXG4gICAgICAgICAgICAvKiBzbyBwcmV2ZW50IHRoYXQgYnkgYWxsb3dpbmcgb3ZlcmZsb3cgKi9cbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgLyogY2xlYXIgdGhlIG1pbi1oZWlnaHQgdG8gbWFrZSBpdCBub3QgY29sbGFwc2UgZW50aXJlbHkgaW4gYSBzdGF0ZSB3aXRoIG5vIGFjdGl2ZSByZXNpemVyICovXG4gICAgICAgICAgICBtaW4taGVpZ2h0OiB1bnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9yZXNpemVySGFuZGxlc19zaG93TkJ1dHRvbiB7XG4gICAgICAgICAgICBmbGV4OiAwIDAgMzJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9yZXNpemVySGFuZGxlcyB7XG4gICAgICAgICAgICBmbGV4OiAwIDAgNHB4O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBDbGFzcyBuYW1lIGNvbWVzIGZyb20gdGhlIFJlc2l6YWJsZUJveCBjb21wb25lbnQgKi9cbiAgICAgICAgLyogVGhlIGhvdmVyIHN0YXRlIG5lZWRzIHRvIHVzZSB0aGUgd2hvbGUgc3VibGlzdCwgbm90IGp1c3QgdGhlIHJlc2l6YWJsZSBib3gsICovXG4gICAgICAgIC8qIHNvIHRoYXQgc2VsZWN0b3IgaXMgYmVsb3cgYW5kIG9uZSBsZXZlbCBoaWdoZXIuICovXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9yZXNpemVySGFuZGxlIHtcbiAgICAgICAgICAgIGN1cnNvcjogbnMtcmVzaXplO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuXG4gICAgICAgICAgICAvKiBPdmVycmlkZSBzdHlsZXMgZnJvbSBsaWJyYXJ5ICovXG4gICAgICAgICAgICBtYXgtd2lkdGg6IDY0cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDRweCAhaW1wb3J0YW50OyAvKiBVcGRhdGUgUkVTSVpFX0hBTkRMRV9IRUlHSFQgaWYgdGhpcyBjaGFuZ2VzICovXG5cbiAgICAgICAgICAgIC8qIFRoaXMgaXMgcG9zaXRpb25lZCBkaXJlY3RseSBiZWxvdyB0aGUgJ3Nob3cgbW9yZScgYnV0dG9uLiAqL1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3R0b206IDAgIWltcG9ydGFudDsgLyogb3ZlcnJpZGUgZnJvbSBsaWJyYXJ5ICovXG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmLm14X1Jvb21TdWJsaXN0X2hhc01lbnVPcGVuIHtcbiAgICAgICAgICAgIC5teF9Sb29tU3VibGlzdF9yZXNpemVySGFuZGxlIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Sb29tU3VibGlzdF9zaG93TkJ1dHRvbiB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC0xM3B4O1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMThweDtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcblxuICAgICAgICAvKiBVcGRhdGUgdGhlIHJlbmRlcigpIGZ1bmN0aW9uIGZvciBSb29tU3VibGlzdCBpZiB0aGVzZSBjaGFuZ2UgKi9cbiAgICAgICAgLyogVXBkYXRlIHRoZSBMaXN0TGF5b3V0IGNsYXNzIGZvciBtaW5WaXNpYmxlVGlsZXMgaWYgdGhlc2UgY2hhbmdlLiAqL1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG5cbiAgICAgICAgLyogV2UgY3JlYXRlIGEgZmxleGJveCB0byBjaGVhdCBhdCBhbGlnbm1lbnQgKi9cbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAubXhfUm9vbVN1Ymxpc3Rfc2hvd05CdXR0b25DaGV2cm9uIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBsZWZ0OiAtMXB4OyAvKiBhZGp1c3QgZm9yIGltYWdlIHBvc2l0aW9uICovXG4gICAgICAgIH1cblxuICAgICAgICAubXhfUm9vbVN1Ymxpc3Rfc2hvd01vcmVCdXR0b25DaGV2cm9uLFxuICAgICAgICAubXhfUm9vbVN1Ymxpc3Rfc2hvd0xlc3NCdXR0b25DaGV2cm9uIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2NoZXZyb24tZG93bi5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUm9vbVN1Ymxpc3Rfc2hvd0xlc3NCdXR0b25DaGV2cm9uIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X1Jvb21TdWJsaXN0X2hhc01lbnVPcGVuLFxuICAgICY6bm90KC5teF9Sb29tU3VibGlzdF9taW5pbWl6ZWQpID4gLm14X1Jvb21TdWJsaXN0X2hlYWRlckNvbnRhaW5lcjpmb2N1cy13aXRoaW4sXG4gICAgJjpub3QoLm14X1Jvb21TdWJsaXN0X21pbmltaXplZCkgPiAubXhfUm9vbVN1Ymxpc3RfaGVhZGVyQ29udGFpbmVyOmhvdmVyIHtcbiAgICAgICAgLm14X1Jvb21TdWJsaXN0X21lbnVCdXR0b24ge1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfUm9vbVN1Ymxpc3RfbWluaW1pemVkIHtcbiAgICAgICAgLm14X1Jvb21TdWJsaXN0X2hlYWRlckNvbnRhaW5lciB7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAubXhfUm9vbVN1Ymxpc3RfYmFkZ2VDb250YWluZXIge1xuICAgICAgICAgICAgICAgIG9yZGVyOiAwO1xuICAgICAgICAgICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Jvb21TdWJsaXN0X3N0aWNrYWJsZSB7XG4gICAgICAgICAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfUm9vbVN1Ymxpc3RfYXV4QnV0dG9uIHtcbiAgICAgICAgICAgICAgICBvcmRlcjogMjtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzMnB4ICFpbXBvcnRhbnQ7IC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgaG92ZXIgc3R5bGVzICovXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7IC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgaG92ZXIgc3R5bGVzICovXG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgLyogIWltcG9ydGFudCB0byBvdmVycmlkZSBob3ZlciBzdHlsZXMgKi9cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFuZWwtYWN0aW9ucztcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogOHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9yZXNpemVCb3gge1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Sb29tU3VibGlzdF9zaG93TkJ1dHRvbiB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgICAgICAubXhfUm9vbVN1Ymxpc3Rfc2hvd05CdXR0b25DaGV2cm9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7IC8qIHRvIGNlbnRlciAqL1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1Jvb21TdWJsaXN0X21lbnVCdXR0b24ge1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9Sb29tU3VibGlzdF9oYXNNZW51T3BlbixcbiAgICAgICAgJiA+IC5teF9Sb29tU3VibGlzdF9oZWFkZXJDb250YWluZXI6aG92ZXIge1xuICAgICAgICAgICAgLm14X1Jvb21TdWJsaXN0X21lbnVCdXR0b24ge1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogNDhweDsgLyogYWxpZ24gdG8gbWlkZGxlIG9mIG5hbWUsIDQwcHggZm9yIGF1eCBidXR0b24gKHdpdGggcGFkZGluZykgYW5kIDhweCBmb3IgYWxpZ25tZW50ICovXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTsgLyogb2NjbHVkZSB0aGUgbGlzdCBuYW1lICovXG5cbiAgICAgICAgICAgICAgICAvKiBUaGlzIGlzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBsZWZ0IHBhbmVsIGJhY2tncm91bmQgYmVjYXVzZSBpdCBuZWVkcyAqL1xuICAgICAgICAgICAgICAgIC8qIHRvIG9jY2x1ZGUgdGhlIHN1Ymxpc3QgdGl0bGUgKi9cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcm9vbWxpc3QtYmctY29sb3I7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X1Jvb21TdWJsaXN0X2hlYWRlckNvbnRhaW5lcjpub3QoLm14X1Jvb21TdWJsaXN0X2hlYWRlckNvbnRhaW5lcl93aXRoQXV4KSB7XG4gICAgICAgICAgICAgICAgLm14X1Jvb21TdWJsaXN0X21lbnVCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBib3R0b206IDhweDsgLyogYWxpZ24gdG8gdGhlIG1pZGRsZSBvZiBuYW1lLCA0MHB4IGxlc3MgdGhhbiB0aGUgYGJvdHRvbWAgYWJvdmUuICovXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfUm9vbVN1Ymxpc3RfY29udGV4dE1lbnUge1xuICAgIHBhZGRpbmc6IDIwcHggMTZweDtcbiAgICB3aWR0aDogMjUwcHg7XG5cbiAgICBociB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTZweDsgLyogYWRkaXRpb25hbCAxNnB4ICovXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG9wYWNpdHk6IDAuMTtcbiAgICB9XG5cbiAgICAubXhfUm9vbVN1Ymxpc3RfY29udGV4dE1lbnVfdGl0bGUge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMHB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgfVxuXG4gICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uLFxuICAgIC5teF9DaGVja2JveCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICB9XG59XG5cbi5teF9Sb29tU3VibGlzdF9za2VsZXRvblVJIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICBoZWlnaHQ6IDI0MHB4O1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHJvb21zdWJsaXN0LXNrZWxldG9uLXVpLWJnO1xuXG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBtYXNrLXJlcGVhdDogcmVwZWF0LXk7XG4gICAgICAgIG1hc2stc2l6ZTogYXV0byA0OHB4O1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3Qvc2tlbGV0b24tdWkuc3ZnXCIpO1xuICAgIH1cbn1cblxuLm14X1Jvb21TdWJsaXN0X21pbmltaXplZCAubXhfUm9vbVN1Ymxpc3Rfc2tlbGV0b25VSSB7XG4gICAgd2lkdGg6IDMycHg7IC8qIGN1dCBvZmYgdGhlIGhvcml6b250YWwgbGluZXMgaW4gdGhlIHN2ZyAqL1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4OyAvKiBhbGlnbiB3aXRoIHN1Ymxpc3QgKyBidXR0b25zICovXG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgLSAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLyogTm90ZTogdGhlIHJvb20gdGlsZSBleHBlY3RzIHRvIGJlIGluIGEgZmxleGJveCBjb2x1bW4gY29udGFpbmVyICovXG4ubXhfUm9vbVRpbGUge1xuICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICBwYWRkaW5nOiA0cHg7XG5cbiAgICAvKiBUaGUgdGlsZSBpcyBhbHNvIGEgZmxleGJveCByb3cgaXRzZWxmICovXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBjb250YWluOiBjb250ZW50OyAvKiBOb3Qgc3RyaWN0IGFzIGl0IHdpbGwgYnJlYWsgd2hlbiByZXNpemluZyBhIHN1Ymxpc3QgdmVydGljYWxseSAqL1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBmb250LXNpemU6ICRmb250LTEzcHg7XG5cbiAgICAmLm14X1Jvb21UaWxlX3NlbGVjdGVkLFxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cy13aXRoaW4sXG4gICAgJi5teF9Sb29tVGlsZV9oYXNNZW51T3BlbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwYW5lbC1hY3Rpb25zO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgfVxuXG4gICAgLm14X0RlY29yYXRlZFJvb21BdmF0YXIsXG4gICAgLm14X1Jvb21UaWxlX2F2YXRhckNvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICB9XG5cbiAgICAubXhfUm9vbVRpbGVfZGV0YWlscyB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICB9XG5cbiAgICAubXhfUm9vbVRpbGVfdGl0bGVDb250YWluZXIge1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZmxleC1iYXNpczogMDtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDsgLyogc3BhY2luZyB0byBidXR0b25zL2JhZGdlcyAqL1xuXG4gICAgICAgIC8qIENyZWF0ZSBhIG5ldyBjb2x1bW4gbGF5b3V0IGZsZXhib3ggZm9yIHRoZSB0aXRsZSBwYXJ0cyAqL1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAubXhfUm9vbVRpbGVfc3VidGl0bGUge1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZ2FwOiAkc3BhY2luZy00O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUm9vbVRpbGVfdGl0bGUsXG4gICAgICAgIC5teF9Sb29tVGlsZV9zdWJ0aXRsZV90ZXh0IHtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUm9vbVRpbGVfdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE4cHg7XG5cbiAgICAgICAgICAgICYubXhfUm9vbVRpbGVfdGl0bGVIYXNVbnJlYWRFdmVudHMge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfUm9vbVRpbGVfdGl0bGVXaXRoU3VidGl0bGUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogLTNweDsgLyogc2hpZnQgdGhlIHRpdGxlIHVwIGEgYml0IG1vcmUgKi9cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV9ub3RpZmljYXRpb25zQnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDsgLyogc3BhY2luZyBiZXR3ZWVuIGJ1dHRvbnMgKi9cbiAgICB9XG5cbiAgICAubXhfUm9vbVRpbGVfYmFkZ2VDb250YWluZXIge1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIC8qIGRvbid0IHNldCB3aWR0aCBzbyB0aGF0IGl0IHRha2VzIG5vIHNwYWNlIHdoZW4gdGhlcmUgaXMgbm8gYmFkZ2UgdG8gc2hvdyAqL1xuICAgICAgICBtYXJnaW46IGF1dG8gMDsgLyogdmVydGljYWxseSBhbGlnbiAqL1xuXG4gICAgICAgIC8qIENyZWF0ZSBhIGZsZXhib3ggdG8gbWFrZSBhbGlnbmluZyBkb3QgYmFkZ2VzIGVhc2llciAqL1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgIC5teF9Ob3RpZmljYXRpb25CYWRnZSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDsgLyogY2VudGVyaW5nICovXG4gICAgICAgIH1cblxuICAgICAgICAubXhfTm90aWZpY2F0aW9uQmFkZ2VfZG90IHtcbiAgICAgICAgICAgIC8qIG1ha2UgdGhlIHNtYWxsZXIgZG90IG9jY3VweSB0aGUgc2FtZSB3aWR0aCBmb3IgY2VudGVyaW5nICovXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA3cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBUaGUgY29udGV4dCBtZW51IGJ1dHRvbnMgYXJlIGhpZGRlbiBieSBkZWZhdWx0ICovXG4gICAgLm14X1Jvb21UaWxlX21lbnVCdXR0b24sXG4gICAgLm14X1Jvb21UaWxlX25vdGlmaWNhdGlvbnNCdXR0b24ge1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgbWluLXdpZHRoOiAyMHB4OyAvKiB5YXkgZmxleCAqL1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgdG9wOiAycHg7XG4gICAgICAgICAgICBsZWZ0OiAycHg7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIElmIHRoZSByb29tIGhhcyBhbiBvdmVycmlkZW4gbm90aWZpY2F0aW9uIHNldHRpbmcgdGhlbiB3ZSBhbHdheXMgc2hvdyB0aGUgbm90aWZpY2F0aW9ucyBtZW51IGJ1dHRvbiAqL1xuICAgIC5teF9Sb29tVGlsZV9ub3RpZmljYXRpb25zQnV0dG9uLm14X1Jvb21UaWxlX25vdGlmaWNhdGlvbnNCdXR0b25fc2hvdyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV9tZW51QnV0dG9uOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY29udGV4dC1tZW51LnN2Z1wiKTtcbiAgICB9XG5cbiAgICAmOm5vdCgubXhfUm9vbVRpbGVfbWluaW1pemVkKSB7XG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMtd2l0aGluLFxuICAgICAgICAmLm14X1Jvb21UaWxlX2hhc01lbnVPcGVuIHtcbiAgICAgICAgICAgIC8qIEhpZGUgdGhlIGJhZGdlIGNvbnRhaW5lciBvbiBob3ZlciBiZWNhdXNlIGl0J2xsIGJlIGEgbWVudSBidXR0b24gKi9cbiAgICAgICAgICAgIC5teF9Sb29tVGlsZV9iYWRnZUNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9Sb29tVGlsZV9ub3RpZmljYXRpb25zQnV0dG9uLFxuICAgICAgICAgICAgLm14X1Jvb21UaWxlX21lbnVCdXR0b24ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9Sb29tVGlsZV9taW5pbWl6ZWQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLm14X0RlY29yYXRlZFJvb21BdmF0YXIsXG4gICAgICAgIC5teF9Sb29tVGlsZV9hdmF0YXJDb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBXZSB1c2UgdGhlc2UgYm90aCBpbiBjb250ZXh0IG1lbnVzIGFuZCB0aGUgcm9vbSB0aWxlcyAqL1xuLm14X1Jvb21UaWxlX2ljb25CZWxsOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9ub3RpZmljYXRpb25zLnN2Z1wiKTtcbn1cbi5teF9Sb29tVGlsZV9pY29uQmVsbERvdDo6YmVmb3JlIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3Qvbm90aWZpY2F0aW9ucy1kZWZhdWx0LnN2Z1wiKTtcbn1cbi5teF9Sb29tVGlsZV9pY29uQmVsbENyb3NzZWQ6OmJlZm9yZSB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L25vdGlmaWNhdGlvbnMtb2ZmLnN2Z1wiKTtcbn1cbi5teF9Sb29tVGlsZV9pY29uQmVsbE1lbnRpb25zOjpiZWZvcmUge1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9ub3RpZmljYXRpb25zLWRtLnN2Z1wiKTtcbn1cblxuLm14X1Jvb21UaWxlX2NvbnRleHRNZW51IHtcbiAgICAubXhfUm9vbVRpbGVfaWNvblN0YXI6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9mYXZvcml0ZS5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1Jvb21UaWxlX2ljb25BcnJvd0Rvd246OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9sb3ctcHJpb3JpdHkuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV9pY29uTm90aWZpY2F0aW9uc0RlZmF1bHQ6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9ub3RpZmljYXRpb25zLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfUm9vbVRpbGVfaWNvbk5vdGlmaWNhdGlvbnNBbGxNZXNzYWdlczo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L25vdGlmaWNhdGlvbnMtZGVmYXVsdC5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1Jvb21UaWxlX2ljb25Ob3RpZmljYXRpb25zTWVudGlvbnNLZXl3b3Jkczo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L25vdGlmaWNhdGlvbnMtZG0uc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV9pY29uTm90aWZpY2F0aW9uc05vbmU6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tbGlzdC9ub3RpZmljYXRpb25zLW9mZi5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1Jvb21UaWxlX2ljb25QZW9wbGU6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL21lbWJlcnMuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV9pY29uRmlsZXM6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2ZpbGVzLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfUm9vbVRpbGVfaWNvblBpbnM6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL3Bpbi11cHJpZ2h0LnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfUm9vbVRpbGVfaWNvbldpZGdldHM6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9yb29tL2FwcHMuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV9pY29uU2V0dGluZ3M6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9zZXR0aW5ncy5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X1Jvb21UaWxlX2ljb25FeHBvcnQ6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9leHBvcnQuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9Sb29tVGlsZV9pY29uQ29weUxpbms6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9saW5rLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfUm9vbVRpbGVfaWNvbkludml0ZTo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vaW52aXRlLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfUm9vbVRpbGVfaWNvblNpZ25PdXQ6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9sZWF2ZS5zdmdcIik7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE4IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Jvb21VcGdyYWRlV2FybmluZ0JhciB7XG4gICAgbWF4LWhlaWdodDogMjM1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGluZm8tcGxpbnRoLWJnLWNvbG9yO1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgIG92ZXJmbG93OiBzY3JvbGw7XG59XG5cbi5teF9Sb29tVXBncmFkZVdhcm5pbmdCYXJfd3JhcHBlZCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5teF9Sb29tVXBncmFkZVdhcm5pbmdCYXJfaGVhZGVyIHtcbiAgICBjb2xvcjogJGFsZXJ0O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4ubXhfUm9vbVVwZ3JhZGVXYXJuaW5nQmFyX2JvZHkge1xuICAgIGNvbG9yOiAkYWxlcnQ7XG59XG5cbi5teF9Sb29tVXBncmFkZVdhcm5pbmdCYXJfdXBncmFkZWxpbmsge1xuICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5teF9Sb29tVXBncmFkZVdhcm5pbmdCYXJfc21hbGwge1xuICAgIGNvbG9yOiAkaW5mby1wbGludGgtZmctY29sb3I7XG4gICAgZm9udC1zaXplOiA3MCU7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU2VhcmNoQmFyIHtcbiAgICAvKiB1c2UgYG1pbi1oZWlnaHRgIHJhdGhlciB0aGFuIGhlaWdodCwgdG8gYWxsb3cgcm9vbSBmb3IgdGhlIHRleHQgdG8gd3JhcCBpZiB0aGUgd2luZG93IGlzIG5hcnJvdyAqL1xuICAgIG1pbi1oZWlnaHQ6IDU2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkcHJpbWFyeS1oYWlybGluZS1jb2xvcjtcblxuICAgIC5teF9TZWFyY2hCYXJfaW5wdXQge1xuICAgICAgICAtLXNpemUtYnV0dG9uLXNlYXJjaDogMzdweDsgLyogc2l6ZSBvZiB0aGUgc2VhcmNoIGJ1dHRvbiBpbnNpZGUgYGlucHV0YCBlbGVtZW50ICovXG5cbiAgICAgICAgLyogYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjsgKi9cbiAgICAgICAgLyogZm9udC1zaXplOiAkZm9udC0xNXB4OyAqL1xuICAgICAgICBmbGV4OiAxIDEgMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIycHg7XG5cbiAgICAgICAgLyogZG8gbm90IGFsbG93IHRoZSBpbnB1dCBlbGVtZW50IHRvIHNocmluayBiZWxvdyB0aGUgd2lkdGggbmVlZGVkIGZvciB0aGUgcGxhY2Vob2xkZXIgJ1NlYXJjaOKApidcbiAgICAgICAgICAgYW5kIHRoZSBzZWFyY2ggYnV0dG9uICovXG4gICAgICAgIG1pbi13aWR0aDogY2FsYyg3ZW0gKyB2YXIoLS1zaXplLWJ1dHRvbi1zZWFyY2gpKTtcblxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiBpbmNsdWRlIHBhZGRpbmcgdmFsdWUgaW50byB3aWR0aCBjYWxjdWxhdGlvbiAqL1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1NlYXJjaEJhcl9zZWFyY2hCdXR0b24ge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1zaXplLWJ1dHRvbi1zZWFyY2gpO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLXNpemUtYnV0dG9uLXNlYXJjaCk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIG1hc2s6IHVybChcIiQocmVzKS9pbWcvZmVhdGhlci1jdXN0b21pc2VkL3NlYXJjaC1pbnB1dC5zdmdcIik7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAubXhfU2VhcmNoQmFyX2J1dHRvbnMge1xuICAgICAgICBkaXNwbGF5OiBpbmhlcml0OyAvKiBmbGV4ICovXG4gICAgICAgIG1pbi13aWR0aDogMDsgLyogaGF2ZSB0aGUgY2xvc2UgYnV0dG9uIGRpc3BsYXllZCBldmVuIG9uIGEgdmVyeSBuYXJyb3cgdGltZWxpbmUgKi9cbiAgICB9XG5cbiAgICAubXhfU2VhcmNoQmFyX2J1dHRvbiB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgbWFyZ2luOiAwIDAgMCAyMnB4O1xuICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRhY2NlbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsgLyogcHJldmVudCB0aGUgaW5wdXQgYXJlYSBhbmQgY2FuY2VsIGJ1dHRvbiBmcm9tIGJlaW5nIG92ZXJsYXBwZWQgYnkgQmFzZUNhcmQgKi9cbiAgICB9XG5cbiAgICAubXhfU2VhcmNoQmFyX3Vuc2VsZWN0ZWQge1xuICAgICAgICBjb2xvcjogJGlucHV0LWRhcmtlci1mZy1jb2xvcjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAubXhfU2VhcmNoQmFyX2NhbmNlbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhbGVydDtcbiAgICAgICAgbWFzazogdXJsKFwiJChyZXMpL2ltZy9jYW5jZWwuc3ZnXCIpO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1hc2stc2l6ZTogMTRweDtcbiAgICAgICAgcGFkZGluZzogOXB4O1xuICAgICAgICBtYXJnaW46IDAgMTJweCAwIDNweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuXG4vL1Jlc3BvbnNpdmUgZGVzaWduXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KXtcbiAgICAubXhfU2VhcmNoQmFyIC5teF9TZWFyY2hCYXJfYnV0dG9ue1xuICAgICAgICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDtcbiAgICB9XG59IiwiLypcbkNvcHlyaWdodCAyMDE5IFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NlbmRNZXNzYWdlQ29tcG9zZXIge1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAvKiBmaXhlZCBsaW5lIGhlaWdodCB0byBwcmV2ZW50IGVtb2ppIGZyb20gYmVpbmcgdGFsbGVyIHRoYW4gdGV4dCAqL1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xOHB4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICAgIC8qIGRvbid0IGdyb3cgd2lkZXIgdGhhbiBhdmFpbGFibGUgc3BhY2UgKi9cbiAgICBtaW4td2lkdGg6IDA7XG5cbiAgICAubXhfQmFzaWNNZXNzYWdlQ29tcG9zZXIge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAvKiBtaW4taGVpZ2h0IGF0IHRoaXMgbGV2ZWwgc28gdGhlIG14X0Jhc2ljTWVzc2FnZUNvbXBvc2VyX2lucHV0ICovXG4gICAgICAgIC8qIHN0aWxsIHN0YXlzIHZlcnRpY2FsbHkgY2VudGVyZWQgd2hlbiBsZXNzIHRoYW4gNTVweC4gKi9cbiAgICAgICAgLyogV2UgYWxzbyBzZXQgdGhpcyB0byBlbnN1cmUgdGhlIHZvaWNlIG1lc3NhZ2UgcmVjb3JkaW5nIHdpZGdldCAqL1xuICAgICAgICAvKiBkb2Vzbid0IGNhdXNlIGEganVtcC4gKi9cbiAgICAgICAgbWluLWhlaWdodDogNTVweDtcblxuICAgICAgICAubXhfQmFzaWNNZXNzYWdlQ29tcG9zZXJfaW5wdXQge1xuICAgICAgICAgICAgcGFkZGluZzogM3B4IDA7XG4gICAgICAgICAgICAvKiB0aGlzIHdpbGwgY2VudGVyIHRoZSBjb250ZW50ZWRpdGFibGUgKi9cbiAgICAgICAgICAgIC8qIGluIGl0J3MgcGFyZW50IHZlcnRpY2FsbHkgKi9cbiAgICAgICAgICAgIC8qIHdoaWxlIGtlZXBpbmcgdGhlIGF1dG9jb21wbGV0ZSBhdCB0aGUgdG9wICovXG4gICAgICAgICAgICAvKiBvZiB0aGUgY29tcG9zZXIuIFRoZSBwYXJlbnQgbmVlZHMgdG8gYmUgYSBmbGV4IGNvbnRhaW5lciBmb3IgdGhpcyB0byB3b3JrLiAqL1xuICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7XG4gICAgICAgICAgICAvKiBtYXgtaGVpZ2h0IGF0IHRoaXMgbGV2ZWwgc28gYXV0b2NvbXBsZXRlIGRvZXNuJ3QgZ2V0IHNjcm9sbGVkIHRvbyAqL1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTQwcHg7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLm14X1N0aWNrZXJzX2NvbnRlbnQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teF9TdGlja2Vyc19jb250ZW50X2NvbnRhaW5lciB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBoZWlnaHQ6IDMwMHB4O1xufVxuXG4jbXhfcGVyc2lzdGVkRWxlbWVudF9zdGlja2VyUGlja2VyIHtcbiAgICAubXhfQXBwVGlsZUZ1bGxXaWR0aCB7XG4gICAgICAgIGhlaWdodDogdW5zZXQ7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuXG4gICAgLm14X0FwcFRpbGVNZW51QmFyIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICBpZnJhbWUge1xuICAgICAgICAvKiBTdGlja2VyIHBpY2tlciBkZXBlbmRzIG9uIHRoZSBmaXhlZCBoZWlnaHQgcHJldmlvdXNseSB1c2VkIGZvciBhbGwgdGlsZXMgKi9cbiAgICAgICAgaGVpZ2h0OiAyODNweDsgLyogaGVpZ2h0IG9mIHRoZSBwb3BvdXQgbWludXMgdGhlIEFwcFRpbGUgbWVudSBiYXIgKi9cbiAgICB9XG59XG5cbi5teF9TdGlja2Vyc19jb250ZW50UGxhY2Vob2xkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teF9TdGlja2Vyc19jb250ZW50UGxhY2Vob2xkZXIgcCB7XG4gICAgbWF4LXdpZHRoOiAyMDBweDtcbn1cblxuLm14X1N0aWNrZXJzX2FkZExpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICRhY2NlbnQ7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVGhyZWFkU3VtbWFyeSxcbi5teF9UaHJlYWRTdW1tYXJ5X2NvbnRlbnQsXG4ubXhfVGhyZWFkU3VtbWFyeV9pY29uIHtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG59XG5cbi5teF9UaHJlYWRTdW1tYXJ5LFxuLm14X1RocmVhZFN1bW1hcnlfY29udGVudCB7XG4gICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbn1cblxuLm14X1RocmVhZFN1bW1hcnksXG4ubXhfVGhyZWFkU3VtbWFyeV9pY29uIHtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy04O1xufVxuXG4ubXhfVGhyZWFkU3VtbWFyeSB7XG4gICAgbWluLXdpZHRoOiAyNjdweDtcbiAgICAvKiBsZWF2ZSBzcGFjZSBvbiBib3RoIGxlZnQgJiByaWdodCBndXR0ZXJzICovXG4gICAgbWF4LXdpZHRoOiBtaW4oY2FsYygxMDAlIC0gdmFyKC0tRXZlbnRUaWxlX2dyb3VwX2xpbmUtc3BhY2luZy1pbmxpbmUtc3RhcnQpKSwgNjAwcHgpO1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzeXN0ZW07XG4gICAgcGFkZGluZy1pbmxpbmU6ICRzcGFjaW5nLTEyICRzcGFjaW5nLTE2O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkc3lzdGVtOyAvKiBhbHdheXMgcmVuZGVyIGEgYm9yZGVyIHNvIHRoZSBob3ZlciBlZmZlY3QgZG9lc24ndCByZXF1aXJlIGEgcmUtbGF5b3V0ICovXG5cbiAgICAubXhfVGhyZWFkU3VtbWFyeV9jaGV2cm9uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAvKiBYWFg6IFdlIHVzZSBgJHN5c3RlbS10cmFuc3BhcmVudGAgaW5zdGVhZCBvZiBgdHJhbnNwYXJlbnRgIHRvIHdvcmsgYXJvdW5kIGEgU2FmYXJpIDwxNS40IGJ1ZyAqL1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCAkc3lzdGVtIDUwJSwgJHN5c3RlbS10cmFuc3BhcmVudCAxMDAlKTtcblxuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNjBweCk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UtaW4tb3V0O1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICByaWdodDogJHNwYWNpbmctMTI7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvY29tcG91bmQvY2hldnJvbi1yaWdodC0xMnB4LnN2Z1wiKTtcbiAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG5cbiAgICAgICAgLm14X1RocmVhZFN1bW1hcnlfY2hldnJvbiB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgQG1peGluIFRocmVhZFN1bW1hcnlJY29uO1xuICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7IC8qIHYtYWxpZ24gdGhlIHRocmVhZHMgaWNvbiAqL1xuICAgIH1cblxuICAgIC5teF9UaHJlYWRTdW1tYXJ5X3NlbmRlcixcbiAgICAubXhfVGhyZWFkU3VtbWFyeV9jb250ZW50LFxuICAgIC5teF9UaHJlYWRTdW1tYXJ5X3JlcGxpZXNfYW1vdW50IHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLUV2ZW50VGlsZV9UaHJlYWRTdW1tYXJ5LWxpbmUtaGVpZ2h0KTtcbiAgICB9XG5cbiAgICAubXhfVGhyZWFkU3VtbWFyeV9zZW5kZXIsXG4gICAgLm14X1RocmVhZFN1bW1hcnlfY29udGVudCB7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5teF9UaHJlYWRTdW1tYXJ5X3NlbmRlciB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgfVxuXG4gICAgLm14X1RocmVhZFN1bW1hcnlfY29udGVudCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZy00O1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5teF9UaHJlYWRTdW1tYXJ5X3JlcGxpZXNfYW1vdW50IHtcbiAgICAgICAgQG1peGluIFRocmVhZFJlcGxpZXNBbW91bnQ7XG4gICAgfVxuXG4gICAgLm14X01lc3NhZ2VQYW5lbF9uYXJyb3cgJiB7XG4gICAgICAgIG1pbi13aWR0aDogaW5pdGlhbDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOyAvKiBwcmV2ZW50IG92ZXJmbG93ICovXG4gICAgICAgIHdpZHRoOiBpbml0aWFsO1xuICAgIH1cbn1cblxuLm14X1RocmVhZFN1bW1hcnlfYXZhdGFyIHtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogJHNwYWNpbmctODtcbn1cblxuLm14X1RocmVhZFN1bW1hcnlfaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTg7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBAbWl4aW4gVGhyZWFkU3VtbWFyeUljb247XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAkc3BhY2luZy04O1xuICAgICAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICAgIH1cblxuICAgIGEmIHtcbiAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTYgT3Blbk1hcmtldCBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5AY2hhcnNldCBcInV0Zi04XCI7XG5cbi5teF9Ub3BVbnJlYWRNZXNzYWdlc0JhciB7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNHB4O1xuICAgIHJpZ2h0OiAyNHB4O1xuICAgIHdpZHRoOiAzOHB4O1xufVxuXG4ubXhfVG9wVW5yZWFkTWVzc2FnZXNCYXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IC04cHg7XG4gICAgbGVmdDogMTAuNXB4O1xuICAgIHdpZHRoOiA0cHg7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWFjY2VudC1jb2xvcjtcbiAgICBib3JkZXI6IDZweCBzb2xpZCAkYWNjZW50O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubXhfVG9wVW5yZWFkTWVzc2FnZXNCYXJfc2Nyb2xsVXAge1xuICAgIGhlaWdodDogMzhweDtcbiAgICBib3JkZXItcmFkaXVzOiAxOXB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAxLjNweCBzb2xpZCAkbXV0ZWQtZmctY29sb3I7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXhfVG9wVW5yZWFkTWVzc2FnZXNCYXJfc2Nyb2xsVXA6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9tZXNzYWdlL2NoZXZyb24tdXAuc3ZnXCIpO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1zaXplOiAyMHB4O1xuICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkbXV0ZWQtZmctY29sb3I7XG59XG5cbi5teF9Ub3BVbnJlYWRNZXNzYWdlc0Jhcl9tYXJrQXNSZWFkIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAxLjNweCBzb2xpZCAkbXV0ZWQtZmctY29sb3I7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBtYXJnaW46IDVweCBhdXRvO1xufVxuXG4ubXhfVG9wVW5yZWFkTWVzc2FnZXNCYXJfbWFya0FzUmVhZDo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9jYW5jZWwuc3ZnXCIpO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1zaXplOiAxMHB4O1xuICAgIG1hc2stcG9zaXRpb246IDRweCA0cHg7XG4gICAgYmFja2dyb3VuZDogJG11dGVkLWZnLWNvbG9yO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1ZvaWNlUmVjb3JkQ29tcG9zZXJUaWxlX3N0b3Age1xuICAgIC8qIDI4cHggcGx1cyBhIDJweCBib3JkZXIgbWFrZXMgdGhpcyBhIDMycHggc3F1YXJlIChhcyBpbnRlbmRlZCkgKi9cbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgYm9yZGVyOiAycHggc29saWQgJHZvaWNlLXJlY29yZC1zdG9wLWJvcmRlci1jb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiAzMnB4O1xuICAgIG1hcmdpbi1yaWdodDogMnB4OyAvKiBiZXR3ZWVuIHVzIGFuZCB0aGUgd2F2ZWZvcm0gY29tcG9uZW50ICovXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogN3B4O1xuICAgICAgICBsZWZ0OiA3cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHZvaWNlLXJlY29yZC1zdG9wLXN5bWJvbC1jb2xvcjtcbiAgICB9XG59XG5cbi5teF9Wb2ljZVJlY29yZENvbXBvc2VyVGlsZV9kZWxldGUge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIG1hcmdpbi1yaWdodDogMnB4OyAvKiBkaXN0YW5jZSBmcm9tIGxlZnQgZWRnZSBvZiB3YXZlZm9ybSBjb250YWluZXIgKGNvbnRhaW5lciBoYXMgc29tZSBtYXJnaW4gdG9vKSAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR2b2ljZS1yZWNvcmQtaWNvbi1jb2xvcjtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvdHJhc2hjYW4uc3ZnXCIpO1xufVxuXG4ubXhfVm9pY2VSZWNvcmRDb21wb3NlclRpbGVfdXBsb2FkaW5nU3RhdGUge1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xufVxuXG4ubXhfVm9pY2VSZWNvcmRDb21wb3NlclRpbGVfZmFpbGVkU3RhdGUge1xuICAgIG1hcmdpbi1yaWdodDogMjFweDtcblxuICAgIC5teF9Wb2ljZVJlY29yZENvbXBvc2VyVGlsZV91cGxvYWRTdGF0ZV9iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3JvdyAubXhfVm9pY2VNZXNzYWdlUHJpbWFyeUNvbnRhaW5lciB7XG4gICAgLyogTm90ZTogcmVtYWluaW5nIGNsYXNzIHByb3BlcnRpZXMgYXJlIGluIHRoZSBQbGF5ZXJDb250YWluZXIgQ1NTLiAqL1xuXG4gICAgLyogZml4ZWQgaGVpZ2h0IHRvIHJlZHVjZSBsYXlvdXQganVtcHMgd2l0aCB0aGUgcGxheSBidXR0b24gYXBwZWFyaW5nICovXG4gICAgLyogaHR0cHM6Ly9naXRodWIuY29tL3ZlY3Rvci1pbS9lbGVtZW50LXdlYi9pc3N1ZXMvMTg0MzEgKi9cbiAgICBoZWlnaHQ6IDMycHg7XG5cbiAgICBtYXJnaW46IDZweDsgLyogZm9yY2UgdGhlIGNvbXBvc2VyIGFyZWEgdG8gcHV0IGEgZ3V0dGVyIGFyb3VuZCB1cyAqL1xuICAgIG1hcmdpbi1yaWdodDogNnB4OyAvKiBpc29sYXRlIGZyb20gc3RvcC9zZW5kIGJ1dHRvbiAqL1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBpbXBvcnRhbnQgZm9yIHRoZSBsaXZlIGNpcmNsZSAqL1xuXG4gICAgJi5teF9Wb2ljZVJlY29yZENvbXBvc2VyVGlsZV9yZWNvcmRpbmcge1xuICAgICAgICAvKiBXZSBhcmUgcHV0dGluZyB0aGUgY2lyY2xlIGluIHRoaXMgcGFkZGluZywgc28gd2UgbmVlZCArMTBweCBmcm9tIHRoZSByZWd1bGFyICovXG4gICAgICAgIC8qIHBhZGRpbmcgb24gdGhlIGxlZnQgc2lkZS4gKi9cbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyMnB4O1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBhbmltYXRpb246IHJlY29yZGluZy1wdWxzZSAycyBpbmZpbml0ZTtcblxuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR2b2ljZS1yZWNvcmQtbGl2ZS1jaXJjbGUtY29sb3I7XG4gICAgICAgICAgICB3aWR0aDogMTBweDtcbiAgICAgICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDEycHg7IC8qIDEycHggZnJvbSB0aGUgbGVmdCBlZGdlIGZvciBjb250YWluZXIgcGFkZGluZyAqL1xuICAgICAgICAgICAgdG9wOiAxN3B4OyAvKiB2ZXJ0aWNhbGx5IGNlbnRlciAobWlkZGxlIGFsaWduIHdpdGggY2xvY2spICovXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfTWVzc2FnZUNvbXBvc2VyX3d5c2l3eWcgLm14X1ZvaWNlTWVzc2FnZVByaW1hcnlDb250YWluZXIge1xuICAgICYubXhfVm9pY2VSZWNvcmRDb21wb3NlclRpbGVfcmVjb3JkaW5nIHtcbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIHRvcDogMTVweDsgLyogdmVydGljYWxseSBjZW50ZXIgKG1pZGRsZSBhbGlnbiB3aXRoIGNsb2NrKSAqL1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBUaGUga2V5ZnJhbWVzIGFyZSBzbGlnaHRseSB3ZWlyZCBoZXJlIHRvIGhlbHAgbWFrZSBhIHJhbXBpbmcvcHVuY2ggZWZmZWN0ICovXG4vKiBmb3IgdGhlIHJlY29yZGluZyBkb3QuIFdlIHN0YXJ0IGFuZCBlbmQgYXQgMTAwJSBvcGFjaXR5IHRvIGhlbHAgbWFrZSB0aGUgKi9cbi8qIGRvdCBmZWVsIGEgYml0IGxpa2UgYSByZWFsIGxhbXAgdGhhdCBpcyBibGlua2luZzogdGhlIGFuaW1hdGlvbiBlbmRzIHVwICovXG4vKiBzcGVuZGluZyBhIGxvdCBvZiBpdHMgdGltZSBzaG93aW5nIGEgc3RlYWR5IHN0YXRlIHdpdGhvdXQgYSBmYWRlIGVmZmVjdC4gKi9cbi8qIFRoaXMgbGFtcCBlZmZlY3QgZXh0ZW5kcyBpbnRvIHdoeSB0aGUgMCUgb3BhY2l0eSBrZXlmcmFtZSBpcyBub3QgaW4gdGhlICovXG4vKiBtaWRwb2ludDogbGFtcHMgdGFrZSBsb25nZXIgdG8gdHVybiBvZmYgdGhhbiB0aGV5IGRvIHRvIHR1cm4gb24sIGFuZCB0aGUgKi9cbi8qIGV4dHJhIGZyYW1lcyBnaXZlIGl0IGEgYml0IG9mIGEgcmVhbGlzdGljIHB1bmNoIGZvciB3aGVuIHRoZSBhbmltYXRpb24gaXMgKi9cbi8qIHJhbXBpbmcgYmFjayB1cCB0byAxMDAlIG9wYWNpdHkuICovXG5cbi8qIFRhcmdldCBhbmltYXRpb24gdGltaW5nczogc3RlYWR5IGZvciAxLjVzLCBmYWRlIG91dCBmb3IgMC4zcywgZmFkZSBpbiBmb3IgMC4ycyAqL1xuLyogKGludGVuZGVkIHRvIGJlIHVzZWQgaW4gYSBsb29wIGZvciAycyBhbmltYXRpb24gc3BlZWQpICovXG5Aa2V5ZnJhbWVzIHJlY29yZGluZy1wdWxzZSB7XG4gICAgMCUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICAzNSUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICA2NSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOCBOZXcgVmVjdG9yIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9XaG9Jc1R5cGluZ1RpbGUge1xuICAgIG1hcmdpbi1sZWZ0OiAtMThweDsgLyogb2Zmc2V0IHBhZGRpbmcgZnJvbSBteF9Sb29tVmlld19NZXNzYWdlTGlzdCB0byBjZW50ZXIgYXZhdGFycyAqL1xuICAgIHBhZGRpbmctdG9wOiAxOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLyogcG9zaXRpb24gdGhlIGluZGljYXRvciBpbiB0aGUgc2FtZSBwbGFjZSBob3Jpem9udGFsbHkgYXMgLm14X0V2ZW50VGlsZV9hdmF0YXIuICovXG4ubXhfV2hvSXNUeXBpbmdUaWxlX2F2YXRhcnMge1xuICAgIGZsZXg6IDAgMCA4MnB4OyAvKiAxOCAocGFkZGluZyBvbiBtZXNzYWdlIGxpc3QpICsgNjQgKHBhZGRpbmcgb24gZXZlbnQgbGluZXMpICovXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubXhfV2hvSXNUeXBpbmdUaWxlX2F2YXRhcnMgPiA6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1sZWZ0OiAtMTJweDtcbn1cblxuLm14X1dob0lzVHlwaW5nVGlsZV9hdmF0YXJzIC5teF9CYXNlQXZhdGFyX2luaXRpYWwge1xuICAgIHBhZGRpbmctdG9wOiAxcHg7XG59XG5cbi5teF9XaG9Jc1R5cGluZ1RpbGVfYXZhdGFycyAubXhfQmFzZUF2YXRhciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyLXJhZGl1czogNDBweDtcbn1cblxuLm14X1dob0lzVHlwaW5nVGlsZV9yZW1haW5pbmdBdmF0YXJQbGFjZWhvbGRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teF9XaG9Jc1R5cGluZ1RpbGVfbGFiZWwge1xuICAgIGZsZXg6IDE7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgY29sb3I6ICRyb29tdG9waWMtY29sb3I7XG59XG5cbi5teF9XaG9Jc1R5cGluZ1RpbGVfbGFiZWwgPiBzcGFuIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL3R5cGluZy1pbmRpY2F0b3ItMnguZ2lmXCIpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMjVweDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGJvdHRvbTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubXhfTWF0cml4Q2hhdF91c2VDb21wYWN0TGF5b3V0IHtcbiAgICAubXhfV2hvSXNUeXBpbmdUaWxlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRWRpdFd5c2l3eWdDb21wb3NlciB7XG4gICAgLS1FZGl0V3lzaXd5Z0NvbXBvc2VyLXBhZGRpbmctaW5saW5lOiAzcHg7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvKiBkaXNhYmxlIG92ZXJmbG93ICovXG4gICAgd2lkdGg6IGF1dG87XG4gICAgZ2FwOiA4cHg7XG4gICAgcGFkZGluZzogOHB4IHZhcigtLUVkaXRXeXNpd3lnQ29tcG9zZXItcGFkZGluZy1pbmxpbmUpO1xuXG4gICAgLm14X1d5c2l3eWdDb21wb3Nlcl9FZGl0b3JfY29udGVudCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggJHByaW1hcnktaGFpcmxpbmUtY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgICAgICAgcGFkZGluZzogM3B4IDZweDtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgkYWNjZW50LCAwLjUpOyAvKiBPbmx5IGV2ZXIgdXNlZCBoZXJlICovXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRWRpdFd5c2l3eWdDb21wb3Nlcl9idXR0b25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1mbG93OiByb3cgd3JhcC1yZXZlcnNlOyAvKiBkaXNwbGF5IFwiU2F2ZVwiIG92ZXIgXCJDYW5jZWxcIiAqL1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDVweDtcbiAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcblxuICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbiB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwcHg7IC8qIG1hZ2ljIG51bWJlciB0byBhbGlnbiB0aGUgZWRnZSBvZiB0aGUgYnV0dG9uIHdpdGggdGhlIGlucHV0IGFyZWEgKi9cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Gb3JtYXR0aW5nQnV0dG9uc19CdXR0b24ge1xuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU2VuZFd5c2l3eWdDb21wb3NlciB7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgIC8qIGZpeGVkIGxpbmUgaGVpZ2h0IHRvIHByZXZlbnQgZW1vamkgZnJvbSBiZWluZyB0YWxsZXIgdGhhbiB0ZXh0ICovXG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTE4cHg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLXJpZ2h0OiAxM3B4O1xuICAgIGdhcDogOHB4O1xuXG4gICAgLm14X0Zvcm1hdHRpbmdCdXR0b25zIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgfVxuXG4gICAgLm14X1d5c2l3eWdDb21wb3Nlcl9FZGl0b3Ige1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkcXVpbmFyeS1jb250ZW50O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTFweCA2cHggMTJweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDEwcHg7XG5cbiAgICAgICAgLm14X0UyRUljb24ge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgN3B4IDA7XG4gICAgICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgfVxuXG4gICAgICAgICZbZGF0YS1pcy1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDtcblxuICAgICAgICAgICAgLm14X1d5c2l3eWdDb21wb3Nlcl9FZGl0b3JfY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLWlzLWV4cGFuZGVkPVwiZmFsc2VcIl0ge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9XeXNpd3lnQ29tcG9zZXJfRWRpdG9yX2NvbnRhaW5lciB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAyMnB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgICAgICAgLyogZG9uJ3QgZ3JvdyB3aWRlciB0aGFuIGF2YWlsYWJsZSBzcGFjZSAqL1xuICAgICAgICAgICAgd2lkdGg6IDA7XG5cbiAgICAgICAgICAgIC5teF9XeXNpd3lnQ29tcG9zZXJfRWRpdG9yX2NvbnRlbnQge1xuICAgICAgICAgICAgICAgIC8qIHRoaXMgd2lsbCBjZW50ZXIgdGhlIGNvbnRlbnRlZGl0YWJsZSAqL1xuICAgICAgICAgICAgICAgIC8qIGluIGl0J3MgcGFyZW50IHZlcnRpY2FsbHkgKi9cbiAgICAgICAgICAgICAgICAvKiB3aGlsZSBrZWVwaW5nIHRoZSBhdXRvY29tcGxldGUgYXQgdGhlIHRvcCAqL1xuICAgICAgICAgICAgICAgIC8qIG9mIHRoZSBjb21wb3Nlci4gVGhlIHBhcmVudCBuZWVkcyB0byBiZSBhIGZsZXggY29udGFpbmVyIGZvciB0aGlzIHRvIHdvcmsuICovXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7XG4gICAgICAgICAgICAgICAgLyogdGhlIGxpbmUgaGVpZ2h0IGlzICRmb250LTIycHggKHNldCBpbiBfRWRpdG9yLnBjc3MpIGFuZCB3ZSB3YW50IHRvIGRpc3BsYXkgMTYgbGluZXMgKi9cbiAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDE2ICogJGZvbnQtMjJweCk7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X1NlbmRXeXNpd3lnQ29tcG9zZXItZm9jdXNlZCB7XG4gICAgLm14X1d5c2l3eWdDb21wb3Nlcl9FZGl0b3Ige1xuICAgICAgICBib3JkZXItY29sb3I6ICRxdWF0ZXJuYXJ5LWNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1d5c2l3eWdDb21wb3Nlcl9FZGl0b3JfY29udGFpbmVyIHtcbiAgICBAa2V5ZnJhbWVzIHZpc3VhbGJlbGwge1xuICAgICAgICBmcm9tIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR2aXN1YWwtYmVsbC1iZy1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgICB0byB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9XeXNpd3lnQ29tcG9zZXJfRWRpdG9yX2NvbnRlbnQge1xuICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMjJweDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcblxuICAgICAgICAvKiBGb3JjZSBjYXJldCBub2RlcyB0byBiZSBzZWxlY3RlZCBpbiBmdWxsIHNvIHRoYXQgdGhleSBjYW4gYmUgKi9cbiAgICAgICAgLyogbmF2aWdhdGVkIHRocm91Z2ggaW4gYSBzaW5nbGUga2V5cHJlc3MgKi9cbiAgICAgICAgLmNhcmV0Tm9kZSB7XG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogYWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2UgYWx3YXlzIGhhdmUgYSA8YnIvPiB0YWcgYXQgdGhlIGVuZCBvZiB0aGUgaHRtbCwgd2UgbmVlZCBpdCB0byBiZSBwcmVzZW50IGF0IGZpcnN0IHRoZW4gaGlkZSBpdCBhcyBzb29uIGFzXG4gICAgICAgIC8vIHdlIGhhdmUgYW55IG90aGVyIGVsZW1lbnRzXG4gICAgICAgIGJyOm5vdCg6b25seS1jaGlsZCkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAvLyB0aGlzIG1heSBzZWVtIHJlZHVuZGFudCwgYnV0IHdlIG5lZWQgdG8gaGFuZGxlIHplcm8gY29udGVudCBmb3JtYXR0aW5nIHRhZ3MsIHdoaWNoIG9jY3VyIHdoZW4gd2Ugc3BsaXQgYVxuICAgICAgICAgICAgLy8gZm9ybWF0dGluZyB0YWcgaW50byBwYXJhZ3JhcGhzXG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAkZm9udC0yMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgdWwsXG4gICAgICAgIG9sIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICRzcGFjaW5nLTI4O1xuICAgICAgICB9XG5cbiAgICAgICAgLyogTWFrZSBsaXN0IHR5cGUgZGlzYyB0byBtYXRjaCByaWNoIHRleHQgZWRpdG9yICovXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiAgICAgICAgfVxuXG4gICAgICAgIGJsb2NrcXVvdGUge1xuICAgICAgICAgICAgY29sb3I6ICM3Nzc7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICRibG9ja3F1b3RlLWJhci1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweDtcblxuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgID4gcHJlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTggJHNwYWNpbmctMTI7XG5cbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpbmxpbmVjb2RlLWJhY2tncm91bmQtY29sb3I7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkaW5saW5lY29kZS1ib3JkZXItY29sb3I7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgIH1cblxuICAgICAgICBjb2RlOm5vdChwcmUgKikge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRtb25vc3BhY2UtZm9udC1mYW1pbHkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpbmxpbmVjb2RlLWJhY2tncm91bmQtY29sb3I7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkaW5saW5lY29kZS1ib3JkZXItY29sb3I7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy0yO1xuXG4gICAgICAgICAgICAmOmVtcHR5IHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IHVuc2V0O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHVuc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyogdGhpcyBzZWxlY3RvciByZXByZXNlbnRzIHdoYXQgd2lsbCBiZWNvbWUgYSBwaWxsXG4gICAgICAgIG5iIGRlc3BpdGUgdGhlcmUgYmVpbmcgbXhfVXNlclBpbGwgYW5kIG14X1Jvb21QaWxsIGNsYXNzZXMgYXBwZW5kZWQgdG8gdGhlc2UgcGlsbHNcbiAgICAgICAgaW4gdGhlIGN1cnJlbnQgY29tcG9zZXIsIHRoZXJlIGRvbid0IGFwcGVhciB0byBiZSBhbnkgc3R5bGVzIGFzc29jaWF0ZWQgd2l0aCB0aG9zZSBjbGFzc2VzXG4gICAgICAgIGluIHRoaXMgcmVwbyAqL1xuICAgICAgICBhW2RhdGEtbWVudGlvbi10eXBlXSB7XG4gICAgICAgICAgICAvKiBjb21iaW5lIG14X1BpbGwgZnJvbSBfUGlsbC5wY3NzICovXG4gICAgICAgICAgICBwYWRkaW5nOiAkZm9udC0xcHggMC40ZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJGZvbnQtMTdweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRmb250LTE2cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQtZmctY29sb3I7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGlsbC1iZy1jb2xvcjtcblxuICAgICAgICAgICAgLyogLi4ud2l0aCB0aGUgb3ZlcnJpZGVzIGZyb20gX0Jhc2ljTWVzc2FnZUNvbXBvc2VyLnBjc3MgKi9cbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBhbGw7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBjdXJzb3I6IHVuc2V0OyAvKiBXZSBkb24ndCB3YW50IGluZGljYXRlIGNsaWNrYWJpbGl0eSAqL1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgICAgICAgICAvKiBhdmF0YXIgcHNldWRvIGVsZW1lbnQgKi9cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgLyogQWZ0ZXIgY29uc29saWRhdGlvbiwgYWxsIG9mIHRoZSBzdHlsaW5nIGZyb20gX1BpbGwuc2NzcyB3YXMgYmVpbmcgb3ZlcnJpZGRlbixcbiAgICAgICAgICAgICAgICBzbyB0YWtlIHdoYXQgaXMgaW4gX0Jhc2ljTWVzc2FnZUNvbXBvc2VyLnBjc3MgYXMgdGhlIHN0YXJ0aW5nIHBvaW50ICovXG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHZhcigtLWF2YXRhci1sZXR0ZXIpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF2YXRhci1iYWNrZ3JvdW5kKSwgJGJhY2tncm91bmQ7XG5cbiAgICAgICAgICAgICAgICB3aWR0aDogJGZvbnQtMTZweDtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6ICRmb250LTE2cHg7IC8qIGVuc3VyZSB0aGUgYXZhdGFyIGlzIG5vdCBjb21wcmVzc2VkICovXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAkZm9udC0xNnB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNnB4O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAgICAgICAgIC8qIEdldCB0aGUgcG9zaXRpb25pbmcgb2YgdGhlIGF2YXRhciBqdXN0IHJpZ2h0IGZvciBjb25zaXN0ZW5jeSB3aXRoIHRpbWVsaW5lICovXG4gICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogLTAuNHJlbTtcbiAgICAgICAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogMC4yNHJlbTtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogMC4xMnJlbTtcblxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAkZm9udC0xNnB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRmb250LTE2cHg7XG5cbiAgICAgICAgICAgICAgICBjb2xvcjogJGF2YXRhci1pbml0aWFsLWNvbG9yO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xMC00cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfV3lzaXd5Z0NvbXBvc2VyX0VkaXRvcl9jb250ZW50X3BsYWNlaG9sZGVyOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiB2YXIoLS1wbGFjZWhvbGRlcik7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgfVxufVxuXG4ubXhfV3lzaXd5Z0NvbXBvc2VyX0F1dG9Db21wbGV0ZVdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC8qIER1ZSB0byB0aGUgZmFjdCB0aGF0IGVkaXRpbmcgYSBtZXNzYWdlIG5vdyBoYXMgYSBsYXJnZXIgYW1vdW50IG9mIGdyZXlcbiAgICBjb2xvdXIgYWJvdmUgaXQgKGR1ZSB0byB0aGUgcmljaCB0ZXh0IGJ1dHRvbnMgYWJvdmUgdGhlIGNvbXBvc2VyKSwgd2UgbmVlZFxuICAgIHRvIGdpdmUgdGhlIGF1dG9jb21wbGV0ZSBhIGJpdCBtb3JlIHZpc3VhbCBzZXBhcmF0aW9uIGJ5IHVzaW5nIGEgYm9yZGVyLlxuICAgICovXG4gICAgPiAubXhfQXV0b2NvbXBsZXRlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Gb3JtYXR0aW5nQnV0dG9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiA4cHg7XG5cbiAgICAubXhfRm9ybWF0dGluZ0J1dHRvbnNfQnV0dG9uIHtcbiAgICAgICAgLS1zaXplOiAyOHB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGhlaWdodDogdmFyKC0tc2l6ZSk7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1zaXplKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB9XG5cbiAgICAubXhfRm9ybWF0dGluZ0J1dHRvbnNfQnV0dG9uX2hvdmVyIHtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRzZWNvbmRhcnktY29udGVudCwgMC4xKTtcblxuICAgICAgICAgICAgLm14X0Zvcm1hdHRpbmdCdXR0b25zX0ljb24ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRm9ybWF0dGluZ0J1dHRvbnNfYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgkYWNjZW50LCAwLjEpO1xuXG4gICAgICAgIC5teF9Gb3JtYXR0aW5nQnV0dG9uc19JY29uIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0Zvcm1hdHRpbmdCdXR0b25zX2Rpc2FibGVkIHtcbiAgICAgICAgLm14X0Zvcm1hdHRpbmdCdXR0b25zX0ljb24ge1xuICAgICAgICAgICAgY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfRm9ybWF0dGluZ0J1dHRvbnNfSWNvbiB7XG4gICAgICAgIC0tc2l6ZTogMTZweDtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplKTtcbiAgICAgICAgd2lkdGg6IHZhcigtLXNpemUpO1xuICAgICAgICBjb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgfVxufVxuXG4ubXhfRm9ybWF0dGluZ0J1dHRvbnNfVG9vbHRpcCB7XG4gICAgcGFkZGluZzogMCAycHggMCAycHg7XG5cbiAgICAubXhfRm9ybWF0dGluZ0J1dHRvbnNfVG9vbHRpcF9LZXlib2FyZFNob3J0Y3V0IHtcbiAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuXG4gICAgICAgIGtiZCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBJbnRlciwgc2Fucy1zZXJpZjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9MaW5rTW9kYWwge1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nLTMyO1xuICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgaGVpZ2h0OiAzNDFweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC5teF9MaW5rTW9kYWxfY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGdhcDogJHNwYWNpbmctODtcbiAgICAgICAgbWFyZ2luLXRvcDogN3B4O1xuXG4gICAgICAgIC5teF9MaW5rTW9kYWxfRmllbGQge1xuICAgICAgICAgICAgZmxleDogaW5pdGlhbDtcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9MaW5rTW9kYWxfYnV0dG9ucyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblxuICAgICAgICAgICAgLm14X0RpYWxvZ19idXR0b25zIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTksIDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQXZhdGFyU2V0dGluZ19hdmF0YXIge1xuICAgIHdpZHRoOiA5MHB4O1xuICAgIG1pbi13aWR0aDogOTBweDsgLyogc28gaXQgZG9lc24ndCBnZXQgY3J1c2hlZCBieSB0aGUgZmxleGJveCBpbiBsYW5ndWFnZXMgd2l0aCBsb25nZXIgd29yZHMgKi9cbiAgICBoZWlnaHQ6IDkwcHg7XG4gICAgbWFyZ2luLXRvcDogOHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5teF9BdmF0YXJTZXR0aW5nX2hvdmVyIHtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1ob3Zlci10cmFuc2l0aW9uKTtcblxuICAgICAgICAvKiBwb3NpdGlvbiB0byBwbGFjZSB0aGUgaG92ZXIgYmcgb3ZlciB0aGUgZW50aXJlIHRoaW5nICovXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG5cbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIGxldCB0aGUgcG9pbnRlciBmYWxsIHRocm91Z2ggdGhlIHVuZGVybHlpbmcgdGhpbmcgKi9cblxuICAgICAgICBsaW5lLWhlaWdodDogOTBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgID4gc3BhbiB7XG4gICAgICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogdHJpY2tzIHRoZSBsYXlvdXQgZW5naW5lIGludG8gcHV0dGluZyB0aGlzIG9uIHRvcCBvZiB0aGUgYmcgKi9cbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQXZhdGFyU2V0dGluZ19ob3ZlckJnIHtcbiAgICAgICAgICAgIC8qIGFic29sdXRlIHBvc2l0aW9uIHRvIGxhemlseSBmaWxsIHRoZSBlbnRpcmUgY29udGFpbmVyICovXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBpbnNldDogMDtcblxuICAgICAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDkwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X0F2YXRhclNldHRpbmdfYXZhdGFyX2hvdmVyaW5nIC5teF9BdmF0YXJTZXR0aW5nX2hvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAmOm5vdCgubXhfQXZhdGFyU2V0dGluZ19hdmF0YXJfaG92ZXJpbmcpIC5teF9BdmF0YXJTZXR0aW5nX2hvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICAmID4gKiB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b24ubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX3ByaW1hcnkge1xuICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgfVxuXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b24ubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmtfc20ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmID4gaW1nIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICB9XG5cbiAgICAmID4gaW1nLFxuICAgIC5teF9BdmF0YXJTZXR0aW5nX2F2YXRhclBsYWNlaG9sZGVyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogOTBweDtcbiAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDkwcHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAubXhfQXZhdGFyU2V0dGluZ19hdmF0YXJQbGFjZWhvbGRlcjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgbWFzazogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvdXNlci5zdmdcIik7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stc2l6ZTogMzZweDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgIH1cblxuICAgIC5teF9BdmF0YXJTZXR0aW5nX3VwbG9hZEJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDMycHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcblxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgLm14X0F2YXRhclNldHRpbmdfdXBsb2FkQnV0dG9uOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBtYXNrLXNpemU6IDU1JTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvZWRpdC5zdmdcIik7XG4gICAgfVxufVxuXG4ubXhfQXZhdGFyU2V0dGluZ19hdmF0YXIgLm14X0F2YXRhclNldHRpbmdfYXZhdGFyUGxhY2Vob2xkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzeXN0ZW07XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQ3Jvc3NTaWduaW5nUGFuZWxfc3RhdHVzTGlzdCB7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG5cbiAgICB0aCB7XG4gICAgICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgIH1cblxuICAgIHRkLFxuICAgIHRoIHtcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiAxZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9Dcm9zc1NpZ25pbmdQYW5lbF9idXR0b25Sb3cge1xuICAgIG1hcmdpbjogMWVtIDA7XG5cbiAgICA6bnRoLWNoaWxkKG4gKyAxKSB7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAxMHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9DcnlwdG9ncmFwaHlQYW5lbF9zZXNzaW9uSW5mbyB7XG4gICAgcGFkZGluZzogMGVtO1xuICAgIGJvcmRlci1zcGFjaW5nOiAwcHg7XG59XG4ubXhfQ3J5cHRvZ3JhcGh5UGFuZWxfc2Vzc2lvbkluZm8gPiB0ciB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAgIHBhZGRpbmc6IDBlbTtcblxuICAgIHRoIHtcbiAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gICAgfVxuXG4gICAgdGQsXG4gICAgdGgge1xuICAgICAgICBwYWRkaW5nOiAwIDFlbSAwIDA7XG4gICAgfVxufVxuXG4ubXhfQ3J5cHRvZ3JhcGh5UGFuZWxfaW1wb3J0RXhwb3J0QnV0dG9ucyB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgZmxleC1mbG93OiB3cmFwO1xuICAgIHJvdy1nYXA6ICRzcGFjaW5nLTg7XG4gICAgY29sdW1uLWdhcDogJHNwYWNpbmctODtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Gb250U2NhbGluZ1BhbmVsX3ByZXZpZXcge1xuICAgIC0tRm9udFNjYWxpbmdQYW5lbF9wcmV2aWV3LXBhZGRpbmctYmxvY2s6IDlweDtcblxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBwYWRkaW5nOiAwICRzcGFjaW5nLTE2IHZhcigtLUZvbnRTY2FsaW5nUGFuZWxfcHJldmlldy1wYWRkaW5nLWJsb2NrKSAkc3BhY2luZy0xNjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBkaXNwbGF5OiBmbG93LXJvb3Q7XG5cbiAgICAmLm14X0lSQ0xheW91dCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiA5cHg7XG4gICAgfVxuXG4gICAgLm14X0V2ZW50VGlsZVtkYXRhLWxheW91dD1cImJ1YmJsZVwiXSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgfVxuXG4gICAgLm14X0V2ZW50VGlsZV9tc2dPcHRpb24ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLm14X0ZvbnRTY2FsaW5nUGFuZWxfZm9udFNsaWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDE1cHggJHNwYWNpbmctMjAgMzVweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKCRxdWluYXJ5LWNvbnRlbnQsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBmb250LXNpemU6ICRmb250LTEwcHg7XG5cbiAgICAubXhfRm9udFNjYWxpbmdQYW5lbF9mb250U2xpZGVyX3NtYWxsVGV4dCxcbiAgICAubXhfRm9udFNjYWxpbmdQYW5lbF9mb250U2xpZGVyX2xhcmdlVGV4dCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgfVxuXG4gICAgLm14X0ZvbnRTY2FsaW5nUGFuZWxfZm9udFNsaWRlcl9zbWFsbFRleHQge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogJHNwYWNpbmctMjA7XG4gICAgfVxuXG4gICAgLm14X0ZvbnRTY2FsaW5nUGFuZWxfZm9udFNsaWRlcl9sYXJnZVRleHQge1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAkc3BhY2luZy0yMDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfSW1hZ2VTaXplUGFuZWxfcmFkaW9zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZ2FwOiAkc3BhY2luZy0xNjtcblxuICAgID4gbGFiZWwge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDY4cHg7IC8qIGtlZXAgdGhlIGJveGVzIHNlcGFyYXRlICovXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAubXhfSW1hZ2VTaXplUGFuZWxfc2l6ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stc2l6ZTogMjIxcHg7XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIyMXB4O1xuICAgICAgICBoZWlnaHQ6IDE0OHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNHB4OyAvKiBtb3ZlIHJhZGlvIGJ1dHRvbiBhd2F5IGZyb20gYm90dG9tIGVkZ2UgYSBiaXQgKi9cblxuICAgICAgICAmLm14X0ltYWdlU2l6ZVBhbmVsX3NpemVEZWZhdWx0IHtcbiAgICAgICAgICAgIG1hc2s6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9zZXR0aW5ncy9pbWctc2l6ZS1ub3JtYWwuc3ZnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9JbWFnZVNpemVQYW5lbF9zaXplTGFyZ2Uge1xuICAgICAgICAgICAgbWFzazogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3NldHRpbmdzL2ltZy1zaXplLWxhcmdlLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9JbnRlZ3JhdGlvbk1hbmFnZXIge1xuICAgIC5teF9EaWFsb2cge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICBoZWlnaHQ6IDcwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWF4LXdpZHRoOiBpbml0aWFsO1xuICAgICAgICBtYXgtaGVpZ2h0OiBpbml0aWFsO1xuICAgIH1cblxuICAgIGlmcmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICBoMyB7XG4gICAgICAgIG1hcmdpbi1ibG9jazogJHNwYWNpbmctMjA7XG4gICAgfVxuXG4gICAgLm14X0ludGVncmF0aW9uTWFuYWdlcl9sb2FkaW5nLFxuICAgIC5teF9JbnRlZ3JhdGlvbk1hbmFnZXJfZXJyb3Ige1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm14X0ludGVncmF0aW9uTWFuYWdlcl9lcnJvciBoMyB7XG4gICAgICAgIGNvbG9yOiAkYWxlcnQ7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0pvaW5SdWxlU2V0dGluZ3NfdXBncmFkZVJlcXVpcmVkIHtcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICBwYWRkaW5nOiA0cHggMTZweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYWNjZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjb2xvcjogJGFjY2VudDtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG59XG5cbi5teF9Kb2luUnVsZVNldHRpbmdzX3NwYWNlc1dpdGhBY2Nlc3Mge1xuICAgID4gaDQge1xuICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgID4gc3BhbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7IC8qIG1hdGNoZXMgaGVpZ2h0IG9mIGF2YXRhciBmb3Igdi1hbGlnbiAqL1xuICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgaW1nLm14X1Jvb21BdmF0YXJfaXNTcGFjZVJvb20sXG4gICAgICAgIC5teF9Sb29tQXZhdGFyX2lzU3BhY2VSb29tIGltZyB7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQmFzZUF2YXRhciB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYgKyBzcGFuIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXhfSm9pblJ1bGVTZXR0aW5nc19yYWRpb0J1dHRvbiB7XG4gICAgcGFkZGluZy10b3A6IDE2cHg7XG5cbiAgICAubXhfU3R5bGVkUmFkaW9CdXR0b25fY29udGVudCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNHB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJiArIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAzNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuXG4gICAgICAgICYgKyAubXhfU3R5bGVkUmFkaW9CdXR0b24ge1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cbkNvcHlyaWdodCAyMDIxIMWgaW1vbiBCcmFuZG5lciA8c2ltb24uYnJhLmFnQGdtYWlsLmNvbT5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfS2V5Ym9hcmRTaG9ydGN1dCB7XG4gICAga2JkIHtcbiAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItcGFuZWwtYmctY29sb3I7XG4gICAgICAgIG1pbi13aWR0aDogMjBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRrYmQtYm9yZGVyLWNvbG9yO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCAka2JkLWJvcmRlci1jb2xvcjtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIC0gMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuQ29weXJpZ2h0IDIwMjEgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9MYXlvdXRTd2l0Y2hlcl9SYWRpb0J1dHRvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBnYXA6IDI0cHg7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcblxuICAgID4gLm14X0xheW91dFN3aXRjaGVyX1JhZGlvQnV0dG9uIHtcbiAgICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICBmbGV4LWJhc2lzOiAzMyU7XG4gICAgICAgIG1pbi13aWR0aDogMDtcblxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkcXVpbmFyeS1jb250ZW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuXG4gICAgICAgIC5teF9FdmVudFRpbGVfbXNnT3B0aW9uLFxuICAgICAgICAubXhfTWVzc2FnZUFjdGlvbkJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xheW91dFN3aXRjaGVyX1JhZGlvQnV0dG9uX3ByZXZpZXcge1xuICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgICAgICAgIC5teF9FdmVudFRpbGVbZGF0YS1sYXlvdXQ9XCJidWJibGVcIl0gLm14X0V2ZW50VGlsZV9saW5lIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uIHtcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfRXZlbnRUaWxlX2NvbnRlbnQge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9MYXlvdXRTd2l0Y2hlcl9SYWRpb0J1dHRvbl9zZWxlY3RlZCB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfU3R5bGVkUmFkaW9CdXR0b24ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICB9XG5cbiAgICAubXhfU3R5bGVkUmFkaW9CdXR0b25fY2hlY2tlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGFjY2VudCwgMC4wOCk7XG4gICAgfVxuXG4gICAgLm14X0V2ZW50VGlsZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgJltkYXRhLWxheW91dD1cImJ1YmJsZVwiXSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgfVxuICAgICAgICAmW2RhdGEtbGF5b3V0PVwiaXJjXCJdIHtcbiAgICAgICAgICAgID4gYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubXhfRXZlbnRUaWxlX2xpbmUge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTUgLSAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1VzZXJOb3RpZlNldHRpbmdzX2dyaWQge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxMnB4KTsgLyogKzEycHggdG8gbGluZSB1cCBjZW50ZXIgb2YgJ05vaXN5JyBjb2x1bW4gd2l0aCB0b2dnbGUgc3dpdGNoZXMgKi9cbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byByZXBlYXQoMywgNjJweCk7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlciBjZW50ZXI7XG4gICAgZ3JpZC1nYXA6IDhweDtcblxuICAgIC8qIE92ZXJyaWRlIFN0eWxlZFJhZGlvQnV0dG9uIGRlZmF1bHQgc3R5bGVzICovXG4gICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgLm14X1N0eWxlZFJhZGlvQnV0dG9uX2NvbnRlbnQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9TdHlsZWRSYWRpb0J1dHRvbl9zcGFjZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGxlZnQgYWxpZ24gc2VjdGlvbiBoZWFkaW5nXG4gICAgLm14X1NldHRpbmdzU3Vic2VjdGlvbkhlYWRpbmcge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgIH1cbn1cblxuLm14X1VzZXJOb3RpZlNldHRpbmdzX2dyaWRSb3dDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xufVxuXG4ubXhfVXNlck5vdGlmU2V0dGluZ3NfZ3JpZFJvdyB7XG4gICAgZGlzcGxheTogY29udGVudHM7XG59XG5cbi5teF9Vc2VyTm90aWZTZXR0aW5nc19ncmlkUm93TGFiZWwge1xuICAgIGp1c3RpZnktc2VsZjogc3RhcnQ7XG4gICAgLyogPGxlZ2VuZD4gZG9lcyBub3QgYWNjZXB0ICovXG4gICAgLyogZGlzcGxheTogaW5saW5lIHwgaW5saW5lLWJsb2NrICovXG4gICAgLyogZm9yY2UgaXQgaW5saW5lIHVzaW5nIGZsb2F0ICovXG4gICAgZmxvYXQ6IGxlZnQ7XG59XG5cbi5teF9Vc2VyTm90aWZTZXR0aW5nc19ncmlkQ29sdW1uTGFiZWwge1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgZm9udC1zaXplOiAkZm9udC0xMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG59XG4ubXhfVXNlck5vdGlmU2V0dGluZ3NfZ3JpZFJvd0Vycm9yIHtcbiAgICAvLyBvY2N1cHkgZnVsbCByb3dcbiAgICBncmlkLWNvbHVtbjogMS8tMTtcbiAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgIHBhZGRpbmctcmlnaHQ6IDMwJTtcbiAgICAvLyBjb2xsYXBzZSBoYWxmIG9mIHRoZSBncmlkLWdhcFxuICAgIG1hcmdpbi10b3A6IC0kc3BhY2luZy00O1xufVxuXG4ubXhfVXNlck5vdGlmU2V0dGluZ3NfZmxvYXRpbmdTZWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xuXG4gICAgJiA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIC8qIHNlY3Rpb24gaGVhZGVyICovXG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMThweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICB9XG5cbiAgICA+IHRhYmxlIHtcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcblxuICAgICAgICB0ciA+IHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIC8qIEp1c3QgZm9yIGEgYml0IG9mIHNwYWNpbmcgKi9cbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X1VzZXJOb3RpZlNldHRpbmdzX2NsZWFyTm90aWZzQnV0dG9uIHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG59XG5cbi5teF9UYWdDb21wb3NlciB7XG4gICAgbWFyZ2luLXRvcDogMzVweDsgLyogbG90cyBvZiBkaXN0YW5jZSBmcm9tIHRoZSBsYXN0IGxpbmUgb2YgdGhlIHRhYmxlICovXG59XG5cbi5teF9BY2Nlc3NpYmxlQnV0dG9uLm14X05vdGlmaWNhdGlvblNvdW5kX2Jyb3dzZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9HZW5lcmFsVXNlclNldHRpbmdzVGFiX3NlY3Rpb24tLWRpc2NvdmVyeV9leGlzdGluZ192ZXJpZmljYXRpb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAubXhfRmllbGQge1xuICAgICAgICBtYXJnaW46IDAgMCAwIDFlbTtcbiAgICB9XG59XG5cbi5teF9QaG9uZU51bWJlcnNfaW5wdXQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm14X1Bob25lTnVtYmVyc19pbnB1dCA+IC5teF9GaWVsZCB7XG4gICAgZmxleC1ncm93OiAxO1xufVxuXG4ubXhfUGhvbmVOdW1iZXJzX2NvdW50cnkge1xuICAgIHdpZHRoOiA4MHB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5LCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1Byb2ZpbGVTZXR0aW5ncyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRxdWluYXJ5LWNvbnRlbnQ7XG5cbiAgICAubXhfUHJvZmlsZVNldHRpbmdzX2F2YXRhclVwbG9hZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLm14X1Byb2ZpbGVTZXR0aW5nc19wcm9maWxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICAubXhfUHJvZmlsZVNldHRpbmdzX3Byb2ZpbGVfY29udHJvbHMge1xuICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDU0cHg7XG5cbiAgICAgICAgICAgIC5teF9GaWVsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctODtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X1Byb2ZpbGVTZXR0aW5nc19wcm9maWxlX2NvbnRyb2xzX3RvcGljIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy04O1xuXG4gICAgICAgICAgICAgICAgJiA+IHRleHRhcmVhIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5teF9Qcm9maWxlU2V0dGluZ3NfcHJvZmlsZV9jb250cm9sc190b3BpYy0tcm9vbSB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDRlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9Qcm9maWxlU2V0dGluZ3NfcHJvZmlsZV9jb250cm9sc191c2VySWQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAkc3BhY2luZy0yMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Qcm9maWxlU2V0dGluZ3NfYnV0dG9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEwcHg7IC8qIDE4cHggaXMgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIGJ5IHRoZSA8cD4gYWJvdmUgdGhlIGJ1dHRvbnMgKi9cbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctMjg7XG5cbiAgICAgICAgPiAubXhfQWNjZXNzaWJsZUJ1dHRvbl9raW5kX2xpbmsge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDEwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTggTmV3IFZlY3RvciBMdGRcbkNvcHlyaWdodCAyMDE5LCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NlY3VyZUJhY2t1cFBhbmVsX3NpZ1ZhbGlkLFxuLm14X1NlY3VyZUJhY2t1cFBhbmVsX3NpZ0ludmFsaWQsXG4ubXhfU2VjdXJlQmFja3VwUGFuZWxfZGV2aWNlVmVyaWZpZWQsXG4ubXhfU2VjdXJlQmFja3VwUGFuZWxfZGV2aWNlTm90VmVyaWZpZWQge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4ubXhfU2VjdXJlQmFja3VwUGFuZWxfc2lnVmFsaWQsXG4ubXhfU2VjdXJlQmFja3VwUGFuZWxfZGV2aWNlVmVyaWZpZWQge1xuICAgIGNvbG9yOiAkZTJlLXZlcmlmaWVkLWNvbG9yO1xufVxuXG4ubXhfU2VjdXJlQmFja3VwUGFuZWxfc2lnSW52YWxpZCxcbi5teF9TZWN1cmVCYWNrdXBQYW5lbF9kZXZpY2VOb3RWZXJpZmllZCB7XG4gICAgY29sb3I6ICRlMmUtd2FybmluZy1jb2xvcjtcbn1cblxuLm14X1NlY3VyZUJhY2t1cFBhbmVsX2RldmljZU5hbWUge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLm14X1NlY3VyZUJhY2t1cFBhbmVsX2J1dHRvblJvdyB7XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBmbGV4LWZsb3c6IHdyYXA7XG4gICAgcm93LWdhcDogMTBweDtcblxuICAgIDpudGgtY2hpbGQobiArIDEpIHtcbiAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDEwcHg7XG4gICAgfVxufVxuXG4ubXhfU2VjdXJlQmFja3VwUGFuZWxfc3RhdHVzTGlzdCB7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG5cbiAgICB0aCB7XG4gICAgICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgIH1cblxuICAgIHRkLFxuICAgIHRoIHtcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiAxZW07XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTksIDIwMjMgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU2V0SWRTZXJ2ZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6ICRzcGFjaW5nLTg7XG5cbiAgICAubXhfRmllbGQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn1cblxuLm14X1NldElkU2VydmVyX3Rvb2x0aXAge1xuICAgIG1heC13aWR0aDogdmFyKC0tU2V0dGluZ3NUYWJfdG9vbHRpcC1tYXgtd2lkdGgpO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NldEludGVncmF0aW9uTWFuYWdlciB7XG4gICAgLm14X1NldHRpbmdzRmxhZyB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgLm14X1NldEludGVncmF0aW9uTWFuYWdlcl9oZWFkaW5nX21hbmFnZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICBjb2x1bW4tZ2FwOiAkc3BhY2luZy00O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1RvZ2dsZVN3aXRjaCB7XG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgbWluLXdpZHRoOiB2YXIoLS1Ub2dnbGVTd2l0Y2gtbWluLXdpZHRoKTsgLyogYXZvaWQgY29tcHJlc3Npb24gKi9cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TZXR0aW5nc0ZpZWxkc2V0IHtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLm14X1NldHRpbmdzRmllbGRzZXRfbGVnZW5kIHtcbiAgICAvLyBtYXRjaGVzIGgzXG4gICAgZm9udC1zaXplOiAkZm9udC0xOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTIycHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBtYXJnaW4tdG9wOiAxMnB4O1xufVxuXG4ubXhfU2V0dGluZ3NGaWVsZHNldF9kZXNjcmlwdGlvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5teF9TZXR0aW5nc0ZpZWxkc2V0X2NvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6ICRzcGFjaW5nLTg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9FeGlzdGluZ1NwZWxsQ2hlY2tMYW5ndWFnZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubXhfRXhpc3RpbmdTcGVsbENoZWNrTGFuZ3VhZ2VfbGFuZ3VhZ2Uge1xuICAgIGZsZXg6IDE7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4ubXhfR2VuZXJhbFVzZXJTZXR0aW5nc1RhYl9zcGVsbENoZWNrTGFuZ3VhZ2VJbnB1dCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctODtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9UaGVtZUNob2ljZVBhbmVsX3RoZW1lU2VsZWN0b3JzIHtcbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgPiAubXhfU3R5bGVkUmFkaW9CdXR0b24ge1xuICAgICAgICBwYWRkaW5nOiAkZm9udC0xNnB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICB3aWR0aDogMTgwcHg7XG5cbiAgICAgICAgYmFja2dyb3VuZDogJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgb3BhY2l0eTogMC40O1xuXG4gICAgICAgIGZsZXgtc2hyaW5rOiAxO1xuICAgICAgICBmbGV4LWdyb3c6IDA7XG5cbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuXG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG5cbiAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgPiAubXhfU3R5bGVkUmFkaW9CdXR0b25fZW5hYmxlZCB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgICAgLyogVGhlc2UgY29sb3JzIG5lZWQgdG8gYmUgaGFyZGNvZGVkIGJlY2F1c2UgdGhleSBkb24ndCBjaGFuZ2Ugd2l0aCB0aGUgdGhlbWUgKi9cbiAgICAgICAgJi5teF9UaGVtZVNlbGVjdG9yX2xpZ2h0IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y4ZmQ7XG4gICAgICAgICAgICBjb2xvcjogIzJlMmYzMjtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfVGhlbWVTZWxlY3Rvcl9kYXJrIHtcbiAgICAgICAgICAgIC8qIDUlIGxpZ2h0ZW5lZCB2ZXJzaW9uIG9mIDE4MWIyMSAqL1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjgyZTtcbiAgICAgICAgICAgIGNvbG9yOiAjZjNmOGZkO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1VwZGF0ZUNoZWNrQnV0dG9uX3N1bW1hcnkge1xuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIzIE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NldHRpbmdzU2VjdGlvbiB7XG4gICAgLS1TZXR0aW5nc1RhYl9zZWN0aW9uLW1hcmdpbi1ib3R0b20tcHJlZmVyZW5jZXMtbGFiczogMzBweDtcbiAgICAtLVNldHRpbmdzVGFiX2hlYWRpbmdfbnRoX2NoaWxkLW1hcmdpbi10b3A6IDMwcHg7XG4gICAgLS1TZXR0aW5nc1RhYl90b29sdGlwLW1heC13aWR0aDogMTIwcHg7IC8qIFNvIGl0IGZpdHMgaW4gdGhlIHNwYWNlIHByb3ZpZGVkIGJ5IHRoZSBwYWdlICovXG5cbiAgICBjb2xvcjogJHByaW1hcnktY29udGVudDtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGxpbmtzO1xuICAgIH1cbn1cblxuLm14X1NldHRpbmdzU2VjdGlvbl9zdWJTZWN0aW9ucyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBncmlkLWdhcDogJHNwYWNpbmctMzI7XG5cbiAgICBwYWRkaW5nOiAkc3BhY2luZy0xNiAwO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5LCAyMDIwIE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NldHRpbmdzVGFiIHtcbiAgICAtLVNldHRpbmdzVGFiX3Rvb2x0aXAtbWF4LXdpZHRoOiAxMjBweDsgLyogU28gaXQgZml0cyBpbiB0aGUgc3BhY2UgcHJvdmlkZWQgYnkgdGhlIHBhZ2UgKi9cblxuICAgIGNvbG9yOiAkcHJpbWFyeS1jb250ZW50O1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiAkbGlua3M7XG4gICAgfVxuXG4gICAgZm9ybSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogJHNwYWNpbmctODtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgIH1cbiAgICAvLyBuZXZlciB3YW50IGZ1bGwgd2lkdGggYnV0dG9uc1xuICAgIC8vIGV2ZW50IHdoZW4gb3RoZXIgY29udGVudCBpcyAxMDAlIHdpZHRoXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b24ge1xuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgfVxuXG4gICAgLm14X0ZpZWxkIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cbn1cblxuLm14X1NldHRpbmdzVGFiX3dhcm5pbmdUZXh0IHtcbiAgICBjb2xvcjogJGFsZXJ0O1xufVxuXG4ubXhfU2V0dGluZ3NUYWJfc3Vic2VjdGlvblRleHQge1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWlubGluZS1lbmQ6IDgwcHg7IC8qIEFsaWduIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHZpZXcgKi9cbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7XG59XG5cbi5teF9TZXR0aW5nc1RhYl9zZWN0aW9uIHtcbiAgICAkZW5kLWd1dHRlcjogODBweDtcblxuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTI0O1xuXG4gICAgLm14X1NldHRpbmdzRmxhZyB7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAkZW5kLWd1dHRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAgICAgICAubXhfU2V0dGluZ3NGbGFnX2xhYmVsIHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtICRmb250LTQ4cHgpOyAvKiBGb3JjZSB3b3JkIHdyYXAgaW5zdGVhZCBvZiBjb2xsaWRpbmcgd2l0aCB0aGUgc3dpdGNoICovXG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1RvZ2dsZVN3aXRjaCB7XG4gICAgICAgICAgICBmbG9hdDogaW5saW5lLWVuZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gcCB7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAkZW5kLWd1dHRlcjtcbiAgICB9XG5cbiAgICAmLm14X1NldHRpbmdzVGFiX3N1YnNlY3Rpb25UZXh0IC5teF9TZXR0aW5nc0ZsYWcge1xuICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogMCAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLm14X1NldHRpbmdzVGFiX3RvZ2dsZVdpdGhEZXNjcmlwdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMjQ7XG59XG5cbi5teF9TZXR0aW5nc1RhYl9zZWN0aW9ucyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBncmlkLWdhcDogJHNwYWNpbmctMzI7XG5cbiAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNpbmctMTY7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTm90aWZpY2F0aW9uU2V0dGluZ3NUYWJfbm90aWZpY2F0aW9uc1NlY3Rpb24ge1xuICAgIHdpZHRoOiAzNjBweDtcblxuICAgIC5teF9TdHlsZWRSYWRpb0J1dHRvbiB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE4cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQgKyBkaXYge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X05vdGlmaWNhdGlvblNldHRpbmdzVGFiX21pY3JvQ29weSB7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAzMnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X05vdGlmaWNhdGlvblNldHRpbmdzVGFiX2RlZmF1bHRFbnRyeTo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL25vdGlmaWNhdGlvbnMuc3ZnXCIpO1xuICAgIH1cblxuICAgIC5teF9Ob3RpZmljYXRpb25TZXR0aW5nc1RhYl9hbGxNZXNzYWdlc0VudHJ5OjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3Qvbm90aWZpY2F0aW9ucy1kZWZhdWx0LnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfTm90aWZpY2F0aW9uU2V0dGluZ3NUYWJfbWVudGlvbnNLZXl3b3Jkc0VudHJ5OjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbWxpc3Qvbm90aWZpY2F0aW9ucy1kbS5zdmdcIik7XG4gICAgfVxuXG4gICAgLm14X05vdGlmaWNhdGlvblNldHRpbmdzVGFiX25vbmVFbnRyeTo6YmVmb3JlIHtcbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb21saXN0L25vdGlmaWNhdGlvbnMtb2ZmLnN2Z1wiKTtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMTkgTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfUm9sZXNSb29tU2V0dGluZ3NUYWJfYmFubmVkTGlzdCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14X1JvbGVzUm9vbVNldHRpbmdzVGFiX3VuYmFuQnRuIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NlY3VyaXR5Um9vbVNldHRpbmdzVGFiX2FkdmFuY2VkU2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMTY7XG59XG5cbi5teF9TZWN1cml0eVJvb21TZXR0aW5nc1RhYl93YXJuaW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sdW1uLWdhcDogJHNwYWNpbmctNDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCAtIDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRmllbGQubXhfQXBwZWFyYW5jZVVzZXJTZXR0aW5nc1RhYl9jaGVja2JveENvbnRyb2xsZWRGaWVsZCB7XG4gICAgd2lkdGg6IDI1NnB4O1xuICAgIC8vIG1hdGNoZXMgY2hlY2tib3ggYm94ICsgcGFkZGluZ1xuICAgIC8vIHRvIGFsaWduIHdpdGggY2hlY2tib3ggbGFiZWxcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBjYWxjKCRmb250LTE2cHggKyAxMHB4KTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9HZW5lcmFsVXNlclNldHRpbmdzVGFiX3NlY3Rpb24tLWRpc2NvdmVyeV9leGlzdGluZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubXhfR2VuZXJhbFVzZXJTZXR0aW5nc1RhYl9zZWN0aW9uLS1kaXNjb3ZlcnlfZXhpc3RpbmdfYWRkcmVzcyxcbi5teF9HZW5lcmFsVXNlclNldHRpbmdzVGFiX3NlY3Rpb24tLWRpc2NvdmVyeV9leGlzdGluZ19wcm9tcHRUZXh0IHtcbiAgICBmbGV4OiAxO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbn1cblxuLm14X0dlbmVyYWxVc2VyU2V0dGluZ3NUYWJfc2VjdGlvbi0tZGlzY292ZXJ5X2V4aXN0aW5nX2J1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuLm14X0dlbmVyYWxVc2VyU2V0dGluZ3NUYWJfd2FybmluZ0ljb24ge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy04O1xuICAgIG1hcmdpbi1ib3R0b206IDJweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZFxuQ29weXJpZ2h0IDIwMjIgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9IZWxwVXNlclNldHRpbmdzVGFiIHtcbiAgICBjb2RlIHtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgICAgICB1c2VyLXNlbGVjdDogYWxsO1xuICAgIH1cblxuICAgIGRldGFpbHMge1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTE2IGF1dG87XG5cbiAgICAgICAgc3VtbWFyeSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy0xNjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuQ29weXJpZ2h0IDIwMjEgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9LZXlib2FyZFNob3J0Y3V0X3Nob3J0Y3V0TGlzdCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLWdhcDogJHNwYWNpbmctNDtcbn1cblxuLm14X0tleWJvYXJkU2hvcnRjdXRfc2hvcnRjdXRSb3csXG4ubXhfS2V5Ym9hcmRTaG9ydGN1dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm14X0tleWJvYXJkU2hvcnRjdXRfc2hvcnRjdXRSb3cge1xuICAgIGNvbHVtbi1nYXA6ICRzcGFjaW5nLTg7XG59XG5cbi5teF9LZXlib2FyZFNob3J0Y3V0IHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBjb2x1bW4tZ2FwOiAkc3BhY2luZy00O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X01qb2xuaXJVc2VyU2V0dGluZ3NUYWJfbGlzdEl0ZW0ge1xuICAgIG1hcmdpbi1ib3R0b206IDJweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBOZXcgVmVjdG9yIEx0ZFxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TZWN1cml0eVVzZXJTZXR0aW5nc1RhYl9idWxrT3B0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGNvbHVtbi1nYXA6ICRzcGFjaW5nLTg7XG59XG5cbi5teF9TZWN1cml0eVVzZXJTZXR0aW5nc1RhYl9pZ25vcmVkVXNlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctNDtcbn1cblxuLm14X1NlY3VyaXR5VXNlclNldHRpbmdzVGFiX2lnbm9yZWRVc2VyIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nLTg7XG59XG5cbi5teF9TZWN1cml0eVVzZXJTZXR0aW5nc1RhYl93YXJuaW5nIHtcbiAgICBjb2xvcjogJGFsZXJ0O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiAwIGNlbnRlcjtcbiAgICAgICAgbWFzay1zaXplOiAkZm9udC0yNHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAkZm9udC0yNHB4O1xuICAgICAgICBoZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFsZXJ0O1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9hbGVydC10cmlhbmdsZS5zdmdcIik7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NpZGViYXJVc2VyU2V0dGluZ3NUYWJfaG9tZUFsbFJvb21zQ2hlY2tib3gge1xuICAgIG1hcmdpbi1sZWZ0OiAyNHB4O1xuXG4gICAgJiArIGRpdiB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0OHB4O1xuICAgIH1cbn1cblxuLm14X1NpZGViYXJVc2VyU2V0dGluZ3NUYWJfY2hlY2tib3gge1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTg7XG4gICAgLy8gb3ZlcnJpZGUgY2hlY2tib3ggc3R5bGVzy5pcbiAgICBsYWJlbCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgc3ZnIHtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy04O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TcGFjZUJhc2ljU2V0dGluZ3Mge1xuICAgIC5teF9GaWVsZCB7XG4gICAgICAgIG1hcmdpbjogMjRweCAwO1xuICAgIH1cblxuICAgIC5teF9TcGFjZUJhc2ljU2V0dGluZ3NfYXZhdGFyQ29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcblxuICAgICAgICAubXhfU3BhY2VCYXNpY1NldHRpbmdzX2F2YXRhciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZy5teF9TcGFjZUJhc2ljU2V0dGluZ3NfYXZhdGFyIHtcbiAgICAgICAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLyogb25seSBzaG93IGl0IHdoZW4gdGhlIGJ1dHRvbiBpcyBhIGRpdiBhbmQgbm90IGFuIGltZyAoaGFzIGF2YXRhcikgKi9cbiAgICAgICAgZGl2Lm14X1NwYWNlQmFzaWNTZXR0aW5nc19hdmF0YXIge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogODBweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyAvKiB3aGl0ZSBpY29uIGZpbGwgKi9cbiAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IDIwcHg7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbWVyYS5zdmdcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA+IGlucHV0W3R5cGU9XCJmaWxlXCJdIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IGF1dG8gMThweDtcbiAgICAgICAgICAgIGNvbG9yOiAkbGlua3M7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE0cHg7IC8qIFNlZSBfU3BhY2VTZXR0aW5nc0RpYWxvZy5wY3NzICovXG4gICAgICAgIH1cblxuICAgICAgICA+IC5teF9TcGFjZUJhc2ljU2V0dGluZ3NfYXZhdGFyX3JlbW92ZSB7XG4gICAgICAgICAgICBjb2xvcjogJGFsZXJ0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0FjY2Vzc2libGVCdXR0b25faGFzS2luZCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IG1pbi1jb250ZW50O1xuICAgIH1cblxuICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2Rpc2FibGVkIHtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfU3BhY2VDaGlsZHJlblBpY2tlciB7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG5cbiAgICAubXhfU3R5bGVkUmFkaW9CdXR0b24gKyAubXhfU3R5bGVkUmFkaW9CdXR0b24ge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgIH1cblxuICAgIC5teF9TZWFyY2hCb3gge1xuICAgICAgICAvKiBUbyBtYXRjaCB0aGUgc3BhY2UgYXJvdW5kIHRoZSB0aXRsZSAqL1xuICAgICAgICBtYXJnaW46IDAgMCAxNXB4IDA7XG4gICAgICAgIGZsZXgtZ3JvdzogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIH1cblxuICAgIC5teF9TcGFjZUNoaWxkcmVuUGlja2VyX25vUmVzdWx0cyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9TcGFjZUNyZWF0ZU1lbnVfd3JhcHBlciB7XG4gICAgLyogYmFja2dyb3VuZCBibHVyIGV2ZXJ5dGhpbmcgZXhjZXB0IFNwYWNlUGFuZWwgKi9cbiAgICAubXhfQ29udGV4dHVhbE1lbnVfYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkaWFsb2ctYmFja2Ryb3AtY29sb3I7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgbGVmdDogNjhweDtcbiAgICB9XG5cbiAgICAubXhfQ29udGV4dHVhbE1lbnUge1xuICAgICAgICBwYWRkaW5nOiAyNHB4O1xuICAgICAgICB3aWR0aDogNDgwcHg7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgPiBoMiB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE4cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+IHAge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTVweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm14X1NwYWNlQ3JlYXRlTWVudVR5cGUge1xuICAgICAgICAgICAgQG1peGluIFNwYWNlUGlsbEJ1dHRvbjtcbiAgICAgICAgfVxuICAgICAgICAubXhfU3BhY2VDcmVhdGVNZW51VHlwZTIge1xuICAgICAgICAgICAgQG1peGluIFNwYWNlUGlsbEJ1dHRvbkRpc2FibGU7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU3BhY2VDcmVhdGVNZW51VHlwZV9wdWJsaWM6OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2dsb2JlLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgICAgICAucGVyc29uYWwxe1xuICAgICAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgICAgICByaWdodDogMjFweDtcbiAgICAgICAgICAgIHRvcDogMnB4O1xuICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL25mdC10b2tlbi0xMzA1OC5zdmdcIik7XG4gICAgICAgICAgICBtYXNrLXNpemU6IDE4cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmRpc2FibGV7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIH1cbiAgICAgICAgLnBlcnNvbmFse1xuICAgICAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgICAgICByaWdodDowcHg7XG4gICAgICAgICAgICB0b3A6MnB4O1xuICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbG9jay5zdmdcIik7XG4gICAgICAgICAgICBtYXNrLXNpemU6IDE1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfU3BhY2VDcmVhdGVNZW51VHlwZV9wcml2YXRlOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2xvY2suc3ZnXCIpO1xuICAgICAgICAgICAgbWFzay1zaXplOiAxOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1NwYWNlQ3JlYXRlTWVudV9iYWNrIHtcbiAgICAgICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbmVsLWFjdGlvbnM7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogMnB4IDNweDtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IDI0cHg7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9mZWF0aGVyLWN1c3RvbWlzZWQvY2hldnJvbi1kb3duLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeSB7XG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMjJweDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogbWluLWNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQWNjZXNzaWJsZUJ1dHRvbl9kaXNhYmxlZCB7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1NwYWNlUHVibGljU2hhcmUge1xuICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgQG1peGluIFNwYWNlUGlsbEJ1dHRvbjtcblxuICAgICAgICAmLm14X1NwYWNlUHVibGljU2hhcmVfc2hhcmVCdXR0b246OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbGluay5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X1NwYWNlUHVibGljU2hhcmVfaW52aXRlQnV0dG9uOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL3Jvb20vaW52aXRlLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9JbmxpbmVUZXJtc0FncmVlbWVudF9jYkNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBmb250LXNpemU6ICRmb250LTE0cHg7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAubXhfSW5saW5lVGVybXNBZ3JlZW1lbnRfY2hlY2tib3gge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0lubGluZVRlcm1zQWdyZWVtZW50X2xpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2V4dGVybmFsLWxpbmsuc3ZnXCIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgd2lkdGg6IDEycHg7XG4gICAgaGVpZ2h0OiAxMnB4O1xuICAgIG1hcmdpbi1sZWZ0OiAzcHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9BbmFseXRpY3NUb2FzdCB7XG4gICAgLm14X0FjY2Vzc2libGVCdXR0b25fa2luZF9kYW5nZXJfb3V0bGluZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYWNjZW50O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIH1cblxuICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uX2tpbmRfcHJpbWFyeSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYWNjZW50O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9JbmNvbWluZ0NhbGxUb2FzdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDsgLyogcmVzdG9yZSBwb2ludGVyIGV2ZW50cyBzbyB0aGUgdXNlciBjYW4gYWNjZXB0L2RlY2xpbmUgKi9cbiAgICB3aWR0aDogMjUwcHg7XG5cbiAgICAkY2xvc2VCdXR0b25TaXplOiAxNnB4O1xuXG4gICAgLm14X0luY29taW5nQ2FsbFRvYXN0X2NvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAubXhfSW5jb21pbmdDYWxsVG9hc3RfaW5mbyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy0xNjtcblxuICAgICAgICAgICAgLm14X0luY29taW5nQ2FsbFRvYXN0X3Jvb20ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yNHB4O1xuXG4gICAgICAgICAgICAgICAgLyogUHJldmVudCBvdmVybGFwIHdpdGggdGhlIGNsb3NlIGJ1dHRvbiAqL1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAkY2xvc2VCdXR0b25TaXplIC0gMiAqICRzcGFjaW5nLTQpO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9JbmNvbWluZ0NhbGxUb2FzdF9tZXNzYWdlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG5cbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy00O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfTGl2ZUNvbnRlbnRTdW1tYXJ5IHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE1cHg7XG5cbiAgICAgICAgICAgICAgICAubXhfTGl2ZUNvbnRlbnRTdW1tYXJ5X3BhcnRpY2lwYW50czo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfSW5jb21pbmdDYWxsVG9hc3Rfam9pbkJ1dHRvbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgIGJvdHRvbTogJHNwYWNpbmctNDtcbiAgICAgICAgICAgIHJpZ2h0OiAkc3BhY2luZy00O1xuXG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcblxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTIwcHg7XG5cbiAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLTQgMDtcblxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTI0cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfSW5jb21pbmdDYWxsVG9hc3RfY2xvc2VCdXR0b24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgICAgICAgdG9wOiAkc3BhY2luZy00O1xuICAgICAgICByaWdodDogJHNwYWNpbmctNDtcblxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBoZWlnaHQ6ICRjbG9zZUJ1dHRvblNpemU7XG4gICAgICAgIHdpZHRoOiAkY2xvc2VCdXR0b25TaXplO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuXG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2NhbmNlbC5zdmdcIik7XG5cbiAgICAgICAgICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuQ29weXJpZ2h0IDIwMjEgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9JbmNvbWluZ0xlZ2FjeUNhbGxUb2FzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsOyAvKiByZXN0b3JlIHBvaW50ZXIgZXZlbnRzIHNvIHRoZSB1c2VyIGNhbiBhY2NlcHQvZGVjbGluZSAqL1xuXG4gICAgLm14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2NvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuXG4gICAgICAgIC5teF9MZWdhY3lDYWxsRXZlbnRfY2FsbGVyIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRmb250LTE4cHg7XG5cbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNnB4O1xuXG4gICAgICAgICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF90eXBlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0xNXB4O1xuICAgICAgICAgICAgY29sb3I6ICR0ZXJ0aWFyeS1jb250ZW50O1xuXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG5cbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF90eXBlX2ljb24ge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2NvbnRlbnRfdm9pY2Uge1xuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxFdmVudF90eXBlIC5teF9MZWdhY3lDYWxsRXZlbnRfdHlwZV9pY29uOjpiZWZvcmUsXG4gICAgICAgICAgICAubXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfYnV0dG9ucyAubXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfYnV0dG9uX2FjY2VwdCBzcGFuOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jYWxsL3ZvaWNlLWNhbGwuc3ZnXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5teF9JbmNvbWluZ0xlZ2FjeUNhbGxUb2FzdF9jb250ZW50X3ZpZGVvIHtcbiAgICAgICAgICAgIC5teF9MZWdhY3lDYWxsRXZlbnRfdHlwZSAubXhfTGVnYWN5Q2FsbEV2ZW50X3R5cGVfaWNvbjo6YmVmb3JlLFxuICAgICAgICAgICAgLm14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2J1dHRvbnMgLm14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2J1dHRvbl9hY2NlcHQgc3Bhbjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC92aWRlby1jYWxsLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9JbmNvbWluZ0xlZ2FjeUNhbGxUb2FzdF9idXR0b25zIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgZ2FwOiAxMnB4O1xuXG4gICAgICAgICAgICAubXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBAbWl4aW4gTGVnYWN5Q2FsbEJ1dHRvbjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHggOHB4O1xuICAgICAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG5cbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogOHB4IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5teF9JbmNvbWluZ0xlZ2FjeUNhbGxUb2FzdF9idXR0b25fYWNjZXB0IHNwYW46OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMTNweDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEzcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTNweDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLm14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2J1dHRvbl9kZWNsaW5lIHNwYW46OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jYWxsL2hhbmd1cC5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfaWNvbkJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG5cbiAgICAgICAgICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRlcnRpYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X3NpbGVuY2U6OmJlZm9yZSB7XG4gICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvdm9pcC9zaWxlbmNlLnN2Z1wiKTtcbiAgICB9XG5cbiAgICAubXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfdW5TaWxlbmNlOjpiZWZvcmUge1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL3ZvaXAvdW4tc2lsZW5jZS5zdmdcIik7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X05vblVyZ2VudEVjaG9GYWlsdXJlVG9hc3Qge1xuICAgIC5teF9Ob25VcmdlbnRFY2hvRmFpbHVyZVRvYXN0X2ljb24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiAkZm9udC0xOHB4O1xuICAgICAgICBoZWlnaHQ6ICRmb250LTE4cHg7XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyAvKiB3ZSBrbm93IHRoYXQgbm9uLXVyZ2VudCB0b2FzdHMgYXJlIGFsd2F5cyBzdHlsZWQgdGhlIHNhbWUgKi9cbiAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2Nsb3VkLW9mZi5zdmdcIik7XG4gICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgICAvKiBpbmNsdWRlcyB0aGUgaTE4biBibG9jayAqL1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9IZWFkaW5nX2gxIHtcbiAgICBmb250LXNpemU6ICRmb250LTMycHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMzlweDtcbiAgICBtYXJnaW4taW5saW5lOiB1bnNldDtcbiAgICBtYXJnaW4tYmxvY2s6IHVuc2V0O1xufVxuXG4ubXhfSGVhZGluZ19oMiB7XG4gICAgZm9udC1zaXplOiAkZm9udC0yNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6ICRmb250LTI5cHg7XG4gICAgbWFyZ2luLWlubGluZTogdW5zZXQ7XG4gICAgbWFyZ2luLWJsb2NrOiB1bnNldDtcbn1cblxuLm14X0hlYWRpbmdfaDMge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMThweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9udC0yMnB4O1xuICAgIG1hcmdpbi1pbmxpbmU6IHVuc2V0O1xuICAgIG1hcmdpbi1ibG9jazogdW5zZXQ7XG59XG5cbi5teF9IZWFkaW5nX2g0IHtcbiAgICBmb250LXNpemU6ICRmb250LTE1cHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICBsaW5lLWhlaWdodDogJGZvbnQtMjBweDtcbiAgICBtYXJnaW4taW5saW5lOiB1bnNldDtcbiAgICBtYXJnaW4tYmxvY2s6IHVuc2V0O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1VzZXJPbmJvYXJkaW5nQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24tY29udGVudDogc3RyZXRjaDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgbWFyZ2luOiAkc3BhY2luZy04ICRzcGFjaW5nLTggMDtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy0xMjtcblxuICAgICYubXhfVXNlck9uYm9hcmRpbmdCdXR0b25fc2VsZWN0ZWQsXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwYW5lbC1hY3Rpb25zO1xuICAgIH1cblxuICAgIC5teF9Vc2VyT25ib2FyZGluZ0J1dHRvbl9jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgZ2FwOiA1cHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgLm14X0hlYWRpbmdfaDQge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC0xNHB4O1xuICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAubXhfVXNlck9uYm9hcmRpbmdCdXR0b25fcGVyY2VudGFnZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgICAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLm14X1VzZXJPbmJvYXJkaW5nQnV0dG9uX2Nsb3NlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICB3aWR0aDogN3B4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogN3B4O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbmNlbC1yb3VuZGVkLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Qcm9ncmVzc0JhciB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy04O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmLm14X1VzZXJPbmJvYXJkaW5nQnV0dG9uX2NvbXBsZXRlZCAubXhfUHJvZ3Jlc3NCYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Vc2VyT25ib2FyZGluZ0hlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nLTMyO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgYmFja2dyb3VuZDogJHN5c3RlbTtcbiAgICBnYXA6ICRzcGFjaW5nLTY0O1xuXG4gICAgYW5pbWF0aW9uLWRlbGF5OiAxNTAwbXM7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAzMDBtcztcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC41OCwgMSk7XG4gICAgYW5pbWF0aW9uLW5hbWU6IG14X1VzZXJPbmJvYXJkaW5nSGVhZGVyX3NsaWRlSW47XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYmFja3dhcmRzO1xuICAgIHdpbGwtY2hhbmdlOiBvcGFjaXR5LCB0cmFuc2Zvcm07XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTI4MHB4KSB7XG4gICAgICAgIG1hcmdpbjogJHNwYWNpbmctMzI7XG4gICAgfVxuXG4gICAgLm14X1VzZXJPbmJvYXJkaW5nSGVhZGVyX2RvdCB7XG4gICAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgIH1cblxuICAgIC5teF9Vc2VyT25ib2FyZGluZ0hlYWRlcl9jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZmxleC1iYXNpczogNTAlO1xuICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogJHNwYWNpbmctMjQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgcGFkZGluZzogJHNwYWNpbmctMTIgJHNwYWNpbmctMjQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfVXNlck9uYm9hcmRpbmdIZWFkZXJfaW1hZ2Uge1xuICAgICAgICBmbGV4LWJhc2lzOiAzMCU7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAxO1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAkc3BhY2luZy02NCArICRzcGFjaW5nLTY0KTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiA0IC8gMztcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAtJHNwYWNpbmctNjQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC0kc3BhY2luZy02NDtcblxuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDE1MDBtcztcbiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAzMDBtcztcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuNTgsIDEpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogbXhfVXNlck9uYm9hcmRpbmdIZWFkZXJfc2xpZGVJbkxvbmc7XG4gICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJhY2t3YXJkcztcbiAgICAgICAgd2lsbC1jaGFuZ2U6IG9wYWNpdHksIHRyYW5zZm9ybTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbXhfVXNlck9uYm9hcmRpbmdIZWFkZXJfc2xpZGVJbiB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCA4cHgpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIG14X1VzZXJPbmJvYXJkaW5nSGVhZGVyX3NsaWRlSW5Mb25nIHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDMycHgpO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1VzZXJPbmJvYXJkaW5nTGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1hcmdpbjogMCAkc3BhY2luZy0zMjtcblxuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMzAwbXM7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuNTgsIDEpO1xuICAgIGFuaW1hdGlvbi1uYW1lOiBteF9Vc2VyT25ib2FyZGluZ0xpc3Rfc2xpZGVJbjtcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBiYWNrd2FyZHM7XG4gICAgd2lsbC1jaGFuZ2U6IG9wYWNpdHk7XG5cbiAgICAubXhfVXNlck9uYm9hcmRpbmdMaXN0X2hlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAubXhfVXNlck9uYm9hcmRpbmdMaXN0X2hpbnQge1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9Vc2VyT25ib2FyZGluZ0xpc3RfcHJvZ3Jlc3Mge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBjb3VudGVyLXJlc2V0OiB1c2VyLW9uYm9hcmRpbmc7XG5cbiAgICAgICAgLm14X1Byb2dyZXNzQmFyIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctMTY7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG5cbiAgICAgICAgICAgIEBtaXhpbiBQcm9ncmVzc0JhckJvcmRlclJhZGl1cyAxNnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm14X1VzZXJPbmJvYXJkaW5nTGlzdF9saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtYXgtY29udGVudCAxZnIgbWF4LWNvbnRlbnQ7XG5cbiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAkc3BhY2luZy0zMiAwIDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgZ3JpZC1nYXA6ICRzcGFjaW5nLTI0O1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBteF9Vc2VyT25ib2FyZGluZ0xpc3Rfc2xpZGVJbiB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCA4cHgpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X1VzZXJPbmJvYXJkaW5nUGFnZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgICBtYXJnaW46IDAgYXV0byBhdXRvO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBnYXA6ICRzcGFjaW5nLTY0O1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nLTY0IDEwMHB4O1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyODBweCkge1xuICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy00OCAkc3BhY2luZy0zMjtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVXNlck9uYm9hcmRpbmdUYXNrIHtcbiAgICBkaXNwbGF5OiBjb250ZW50cztcblxuICAgIC5teF9Vc2VyT25ib2FyZGluZ1Rhc2tfbnVtYmVyIHtcbiAgICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHVzZXItb25ib2FyZGluZztcbiAgICAgICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgJHF1aW5hcnktY29udGVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMzJweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7XG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBjb3VudGVyKHVzZXItb25ib2FyZGluZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfVXNlck9uYm9hcmRpbmdUYXNrX2NvbnRlbnQge1xuICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBmbGV4LXNocmluazogMTtcblxuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgNTAwbXM7XG5cbiAgICAgICAgLm14X1VzZXJPbmJvYXJkaW5nVGFza19kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfVXNlck9uYm9hcmRpbmdUYXNrX2FjdGlvbi5teF9BY2Nlc3NpYmxlQnV0dG9uIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDM7XG4gICAgICAgIG1pbi13aWR0aDogMTgwcHg7XG5cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDgwMHB4KSB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xNnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5teF9Vc2VyT25ib2FyZGluZ1Rhc2tfY29tcGxldGVkIHtcbiAgICAgICAgLm14X1VzZXJPbmJvYXJkaW5nVGFza19udW1iZXIge1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBpbnNldDogLTJweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYWNjZW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMycHg7XG5cbiAgICAgICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDMwMG1zO1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IG14X1VzZXJPbmJvYXJkaW5nVGFza19zcHJpbmc7XG4gICAgICAgICAgICAgICAgd2lsbC1jaGFuZ2U6IG9wYWNpdHksIHRyYW5zZm9ybTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgbGVmdDogY2FsYyg1MCUgLSA4cHgpO1xuICAgICAgICAgICAgICAgIHRvcDogY2FsYyg1MCUgLSA4cHgpO1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9jaGVjay13aGl0ZS5zdmdcIik7XG5cbiAgICAgICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDMwMG1zO1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IG14X1VzZXJPbmJvYXJkaW5nVGFza19zcHJpbmc7XG4gICAgICAgICAgICAgICAgd2lsbC1jaGFuZ2U6IG9wYWNpdHksIHRyYW5zZm9ybTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9Vc2VyT25ib2FyZGluZ1Rhc2tfY29udGVudCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbXhfVXNlck9uYm9hcmRpbmdUYXNrX3NwcmluZyB7XG4gICAgMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVmVyaWZpY2F0aW9uU2hvd1Nhc19kZWNpbWFsU2FzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgcGFkZGluZy1sZWZ0OiAzcHg7XG4gICAgcGFkZGluZy1yaWdodDogM3B4O1xufVxuXG4ubXhfVmVyaWZpY2F0aW9uU2hvd1Nhc19kZWNpbWFsU2FzIHNwYW4ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG59XG5cbi5teF9WZXJpZmljYXRpb25TaG93U2FzX2Vtb2ppU2FzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luOiAyNXB4IDA7XG59XG5cbi5teF9WZXJpZmljYXRpb25TaG93U2FzX2Vtb2ppU2FzX2Jsb2NrIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUycHg7XG59XG5cbi5teF9EaWFsb2cgLm14X1ZlcmlmaWNhdGlvblNob3dTYXNfZW1vamlTYXNfYmxvY2ssXG4ubXhfQXV0aFBhZ2VfbW9kYWwgLm14X1ZlcmlmaWNhdGlvblNob3dTYXNfZW1vamlTYXNfYmxvY2sge1xuICAgIHdpZHRoOiA2MHB4O1xufVxuXG4ubXhfVmVyaWZpY2F0aW9uU2hvd1Nhc19lbW9qaVNhc19lbW9qaSB7XG4gICAgZm9udC1zaXplOiAkZm9udC0zMnB4O1xufVxuXG4ubXhfVmVyaWZpY2F0aW9uU2hvd1Nhc19lbW9qaVNhc19sYWJlbCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbn1cblxuLm14X1ZlcmlmaWNhdGlvblNob3dTYXNfZW1vamlTYXNfYnJlYWsge1xuICAgIGZsZXgtYmFzaXM6IDEwMCU7XG59XG5cbi5teF9WZXJpZmljYXRpb25TaG93U2FzX2J1dHRvblJvdyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogOXB4O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5Db3B5cmlnaHQgMjAyMCAtIDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cbkNvcHlyaWdodCAyMDIxIC0gMjAyMiDFoGltb24gQnJhbmRuZXIgPHNpbW9uLmJyYS5hZ0BnbWFpbC5jb20+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLyogZGF0YS13aGF0aW50ZW50IG1ha2VzIG1vcmUgc2Vuc2UgaGVyZSBzZW1hbnRpY2FsbHkgYnV0IHRoZW4gdGhlIHRvb2x0aXAgd291bGQgc3RheSB2aXNpYmxlIHdpdGhvdXQgdGhlIGJ1dHRvbiAqL1xuLyogd2hpY2ggbG9va3MgYnJva2VuLCBzbyB3ZSBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mIHRvb2x0aXBzIHdoaWNoIGlzIGZpbmUgdG9vLiAqL1xuW2RhdGEtd2hhdGlucHV0PVwibW91c2VcIl0gLm14X0xlZ2FjeUNhbGxWaWV3QnV0dG9ucy5teF9MZWdhY3lDYWxsVmlld0J1dHRvbnNfaGlkZGVuIHtcbiAgICBvcGFjaXR5OiAwLjAwMTsgLyogb3BhY2l0eSAwIGNhbiBjYXVzZSBhIHJlLWxheW91dCAqL1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubXhfTGVnYWN5Q2FsbFZpZXdCdXR0b25zIHtcbiAgICAtLUxlZ2FjeUNhbGxWaWV3QnV0dG9uc19kcm9wZG93bkJ1dHRvbi1zaXplOiAxNnB4O1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm90dG9tOiAzMnB4O1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xuICAgIHotaW5kZXg6IDIwMDsgLyogVG8gYmUgYWJvdmUgX2FsbF8gZmVlZHMgKi9cbiAgICBnYXA6IDE4cHg7XG5cbiAgICAubXhfTGVnYWN5Q2FsbFZpZXdCdXR0b25zX2J1dHRvbiB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FsbC12aWV3LWJ1dHRvbi1vbi1iYWNrZ3JvdW5kO1xuXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG5cbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNHB4IDBweCAjMDAwMDAwMjY7IC8qIFNhbWUgb24gYm90aCB0aGVtZXMgKi9cblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcblxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtdmlldy1idXR0b24tb24tZm9yZWdyb3VuZDtcblxuICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0xlZ2FjeUNhbGxWaWV3QnV0dG9uc19kcm9wZG93bkJ1dHRvbiB7XG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tTGVnYWN5Q2FsbFZpZXdCdXR0b25zX2Ryb3Bkb3duQnV0dG9uLXNpemUpO1xuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1MZWdhY3lDYWxsVmlld0J1dHRvbnNfZHJvcGRvd25CdXR0b24tc2l6ZSk7XG5cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvbWVzc2FnZS9jaGV2cm9uLXVwLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9MZWdhY3lDYWxsVmlld0J1dHRvbnNfZHJvcGRvd25CdXR0b25fY29sbGFwc2VkOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiBTdGF0ZSBidXR0b25zICovXG4gICAgICAgICYubXhfTGVnYWN5Q2FsbFZpZXdCdXR0b25zX2J1dHRvbl9vbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FsbC12aWV3LWJ1dHRvbi1vbi1iYWNrZ3JvdW5kO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjYWxsLXZpZXctYnV0dG9uLW9uLWZvcmVncm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfTGVnYWN5Q2FsbFZpZXdCdXR0b25zX2J1dHRvbl9taWM6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9taWMuc3ZnXCIpO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0xlZ2FjeUNhbGxWaWV3QnV0dG9uc19idXR0b25fdmlkOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvdm9pcC9jYWxsLXZpZXcvY2FtLW9uLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9MZWdhY3lDYWxsVmlld0J1dHRvbnNfYnV0dG9uX3NjcmVlbnNoYXJpbmcge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL3ZvaXAvY2FsbC12aWV3L3NjcmVlbnNoYXJpbmcuc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgLyogU2FtZSBvbiBib3RoIHRoZW1lcyAqL1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9MZWdhY3lDYWxsVmlld0J1dHRvbnNfYnV0dG9uX3NpZGViYXI6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy92b2lwL2NhbGwtdmlldy9zaWRlYmFyLW9uLnN2Z1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfTGVnYWN5Q2FsbFZpZXdCdXR0b25zX2J1dHRvbl9vZmYge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtdmlldy1idXR0b24tb2ZmLWJhY2tncm91bmQ7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtdmlldy1idXR0b24tb2ZmLWZvcmVncm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubXhfTGVnYWN5Q2FsbFZpZXdCdXR0b25zX2J1dHRvbl9taWM6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9NaWMtb2ZmLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5teF9MZWdhY3lDYWxsVmlld0J1dHRvbnNfYnV0dG9uX3ZpZDo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL3ZvaXAvY2FsbC12aWV3L2NhbS1vZmYuc3ZnXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0xlZ2FjeUNhbGxWaWV3QnV0dG9uc19idXR0b25fc2NyZWVuc2hhcmluZyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtdmlldy1idXR0b24tb24tYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvdm9pcC9jYWxsLXZpZXcvc2NyZWVuc2hhcmluZy5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjYWxsLXZpZXctYnV0dG9uLW9uLWZvcmVncm91bmQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0xlZ2FjeUNhbGxWaWV3QnV0dG9uc19idXR0b25fc2lkZWJhciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtdmlldy1idXR0b24tb24tYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvdm9pcC9jYWxsLXZpZXcvc2lkZWJhci1vZmYuc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FsbC12aWV3LWJ1dHRvbi1vbi1mb3JlZ3JvdW5kO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKiBTdGF0ZSBidXR0b25zICovXG5cbiAgICAgICAgLyogU3RhdGVsZXNzIGJ1dHRvbnMgKi9cbiAgICAgICAgJi5teF9MZWdhY3lDYWxsVmlld0J1dHRvbnNfZGlhbHBhZDo6YmVmb3JlIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvdm9pcC9jYWxsLXZpZXcvZGlhbHBhZC5zdmdcIik7XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0xlZ2FjeUNhbGxWaWV3QnV0dG9uc19idXR0b25faGFuZ3VwIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhbGVydDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC9oYW5ndXAuc3ZnXCIpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyAvKiBTYW1lIG9uIGJvdGggdGhlbWVzICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLm14X0xlZ2FjeUNhbGxWaWV3QnV0dG9uc19idXR0b25fbW9yZTo6YmVmb3JlIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvdm9pcC9jYWxsLXZpZXcvbW9yZS5zdmdcIik7XG4gICAgICAgIH1cbiAgICAgICAgLyogU3RhdGVsZXNzIGJ1dHRvbnMgKi9cblxuICAgICAgICAvKiBJbnZpc2libGUgc3RhdGUgKi9cbiAgICAgICAgJi5teF9MZWdhY3lDYWxsVmlld0J1dHRvbnNfYnV0dG9uX2ludmlzaWJsZSB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgfVxuICAgICAgICAvKiBJbnZpc2libGUgc3RhdGUgKi9cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfQ2FsbER1cmF0aW9uIHtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0NhbGxWaWV3IHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWluLWhlaWdodDogMDtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtYXJnaW46IHZhcigtLWNvbnRhaW5lci1nYXAtd2lkdGgpO1xuICAgIG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1jb250YWluZXItZ2FwLXdpZHRoKSAvIDIpO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1wYW5lbC1iZy1jb2xvcjtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgLm14X0FwcFRpbGUge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjYWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgLyogV2hpbGUgdGhlIGxvYmJ5IGlzIHNob3duLCB0aGUgd2lkZ2V0IG5lZWRzIHRvIHN0YXkgbG9hZGVkIGJ1dCBoaWRkZW4gaW4gdGhlIGJhY2tncm91bmQgKi9cbiAgICAubXhfQ2FsbFZpZXdfbG9iYnkgfiAubXhfQXBwVGlsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLm14X0NhbGxWaWV3X2xvYmJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy0xMjtcbiAgICAgICAgY29sb3I6ICRjYWxsLXByaW1hcnktY29udGVudDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtYmFja2dyb3VuZDtcblxuICAgICAgICAtLWZhY2VwaWxlLWJhY2tncm91bmQ6ICRjYWxsLWJhY2tncm91bmQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAkc3BhY2luZy0zMjtcblxuICAgICAgICAubXhfRmFjZVBpbGUge1xuICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICAgICAgbWFyZ2luOiAkc3BhY2luZy04IGF1dG8gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5teF9DYWxsVmlld19wcmV2aWV3IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICAgICAgICAgIGFzcGVjdC1yYXRpbzogMS41O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtc3lzdGVtO1xuXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAgIC5teF9CYXNlQXZhdGFyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nLTIwO1xuXG4gICAgICAgICAgICAgICAgLyogT3ZlcnJpZGUgdGhlIGV4cGxpY2l0IGRpbWVuc2lvbnMgb24gdGhlIGVsZW1lbnQgc28gdGhhdCB0aGlzIGdldHMgc2l6ZWQgcmVzcG9uc2l2ZWx5ICovXG4gICAgICAgICAgICAgICAgd2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB1bnNldCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIGZsZXg6IDAgMSAyMDBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmlkZW8ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTsgLyogZmxpcCB0aGUgaW1hZ2UgKi9cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm14X0NhbGxWaWV3X2NvbnRyb2xzIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG5cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjYWxsLWJhY2tncm91bmQsIDAuOSk7XG5cbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIGdhcDogJHNwYWNpbmctMjQ7XG5cbiAgICAgICAgICAgICAgICAubXhfQ2FsbFZpZXdfZGV2aWNlQnV0dG9uV3JhcHBlciB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiA2cHggMCAxMHB4O1xuXG4gICAgICAgICAgICAgICAgICAgIC5teF9DYWxsVmlld19kZXZpY2VCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNpemU6IDUwcHg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJHNpemU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjYWxsLXN5c3RlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IGNhbGMoJHNpemUgLyAyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJi5teF9DYWxsVmlld19kZXZpY2VCdXR0b25fYXVkaW86OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL21pYy5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1zaXplOiAxNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAmLm14X0NhbGxWaWV3X2RldmljZUJ1dHRvbl92aWRlbzo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL3ZvaXAvY2FsbC12aWV3L2NhbS1vbi5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAubXhfQ2FsbFZpZXdfZGV2aWNlTGlzdEJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2l6ZTogMTVweDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IC0yLjVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJHNpemU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjYWxsLXN5c3RlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IGNhbGMoJHNpemUgLyAyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2ZlYXRoZXItY3VzdG9taXNlZC9jaGV2cm9uLWRvd24uc3ZnXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhbGwtcHJpbWFyeS1jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICYubXhfQ2FsbFZpZXdfZGV2aWNlQnV0dG9uV3JhcHBlcl9tdXRlZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAubXhfQ2FsbFZpZXdfZGV2aWNlQnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgLm14X0NhbGxWaWV3X2RldmljZUxpc3RCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjYWxsLXByaW1hcnktY29udGVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjYWxsLXN5c3RlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC5teF9DYWxsVmlld19kZXZpY2VCdXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYubXhfQ2FsbFZpZXdfZGV2aWNlQnV0dG9uX2F1ZGlvOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvTWljLW9mZi5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMThweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmLm14X0NhbGxWaWV3X2RldmljZUJ1dHRvbl92aWRlbzo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy92b2lwL2NhbGwtdmlldy9jYW0tb2ZmLnN2Z1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfQ2FsbFZpZXdfY29ubmVjdEJ1dHRvbiB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDUwcHg7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1MHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0RpYWxQYWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgcm93LWdhcDogMTZweDtcbiAgICBjb2x1bW4tZ2FwOiAwcHg7XG4gICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG5cbiAgICAvKiBzcXVlZXplIHRoZSBkaWFsIHBhZCBidXR0b25zIHRvZ2V0aGVyIGhvcml6b250YWxseSAqL1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG59XG5cbi5teF9EaWFsUGFkX2J1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNDBweDtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi5teF9EaWFsUGFkX2J1dHRvbiAubXhfRGlhbFBhZF9idXR0b25TdWJUZXh0IHtcbiAgICBmb250LXNpemU6IDhweDtcbn1cblxuLm14X0RpYWxQYWRfZGlhbEJ1dHRvbiB7XG4gICAgLyogQWx3YXlzIHNob3cgdGhlIGRpYWwgYnV0dG9uIGluIHRoZSBjZW50ZXIgZ3JpZCBjb2x1bW4gKi9cbiAgICBncmlkLWNvbHVtbjogMjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBtYXNrLXNpemU6IDIwcHg7XG4gICAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgLyogb24gYWxsIHRoZW1lcyAqL1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC92b2ljZS1jYWxsLnN2Z1wiKTtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfRGlhbFBhZENvbnRleHRNZW51X2RpYWxQYWQgLm14X0RpYWxQYWQge1xuICAgIHJvdy1nYXA6IDE2cHg7XG4gICAgY29sdW1uLWdhcDogMzJweDtcbn1cblxuLm14X0RpYWxQYWRDb250ZXh0TWVudVdyYXBwZXIge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG5cbi5teF9EaWFsUGFkQ29udGV4dE1lbnVfaGVhZGVyIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luLXRvcDogMzJweDtcbiAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cbiAgICAvKiBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBpbnB1dCBsaW5lIGFuZCB0aGUgZGlhbCBidXR0b25zICovXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRxdWF0ZXJuYXJ5LWNvbnRlbnQ7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWJvdHRvbSAwLjI1cztcbn1cblxuLm14X0RpYWxQYWRDb250ZXh0TWVudV9jYW5jZWwge1xuICAgIEBtaXhpbiBjdXN0b21pc2VkQ2FuY2VsQnV0dG9uO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB3aWR0aDogMTRweDtcbiAgICBoZWlnaHQ6IDE0cHg7XG59XG5cbi5teF9EaWFsUGFkQ29udGV4dE1lbnVfaGVhZGVyOmZvY3VzLXdpdGhpbiB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRhY2NlbnQ7XG59XG5cbi5teF9EaWFsUGFkQ29udGV4dE1lbnVfdGl0bGUge1xuICAgIGNvbG9yOiAkbXV0ZWQtZmctY29sb3I7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG59XG5cbi5teF9EaWFsUGFkQ29udGV4dE1lbnVfZGlhbGxlZCB7XG4gICAgaGVpZ2h0OiAxLjVlbTtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiAwcHg7XG59XG4ubXhfRGlhbFBhZENvbnRleHRNZW51X2RpYWxsZWQgaW5wdXQge1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWF4LXdpZHRoOiAxODVweDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHBhZGRpbmc6IDhweCAwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDAsIDApO1xufVxuXG4ubXhfRGlhbFBhZENvbnRleHRNZW51X2RpYWxQYWQge1xuICAgIG1hcmdpbjogMTZweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9EaWFsb2dfZGlhbFBhZFdyYXBwZXIgLm14X0RpYWxvZyB7XG4gICAgcGFkZGluZzogMHB4O1xufVxuXG4ubXhfRGlhbFBhZE1vZGFsIHtcbiAgICB3aWR0aDogMjkycHg7XG4gICAgaGVpZ2h0OiAzNzBweDtcbiAgICBwYWRkaW5nOiAxNnB4IDBweCAwcHggMHB4O1xufVxuXG4ubXhfRGlhbFBhZE1vZGFsX2hlYWRlciB7XG4gICAgbWFyZ2luLXRvcDogMzJweDtcbiAgICBtYXJnaW4tbGVmdDogNDBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7XG5cbiAgICAvKiBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBpbnB1dCBsaW5lIGFuZCB0aGUgZGlhbCBidXR0b25zICovXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRxdWF0ZXJuYXJ5LWNvbnRlbnQ7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWJvdHRvbSAwLjI1cztcbn1cblxuLm14X0RpYWxQYWRNb2RhbF9oZWFkZXI6Zm9jdXMtd2l0aGluIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGFjY2VudDtcbn1cblxuLm14X0RpYWxQYWRNb2RhbF90aXRsZSB7XG4gICAgY29sb3I6ICRtdXRlZC1mZy1jb2xvcjtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbn1cblxuLm14X0RpYWxQYWRNb2RhbF9jYW5jZWwge1xuICAgIEBtaXhpbiBjdXN0b21pc2VkQ2FuY2VsQnV0dG9uO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB3aWR0aDogMTRweDtcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xufVxuXG4ubXhfRGlhbFBhZE1vZGFsX2ZpZWxkIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiAwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xufVxuXG4ubXhfRGlhbFBhZE1vZGFsX2ZpZWxkIC5teF9GaWVsZF9wb3N0Zml4IHtcbiAgICAvKiBSZW1vdmUgYm9yZGVyIHNlcGFyYXRvciBiZXR3ZWVuIHBvc3RmaXggYW5kIGZpZWxkIGNvbnRlbnQgKi9cbiAgICBib3JkZXItbGVmdDogbm9uZTtcbn1cblxuLm14X0RpYWxQYWRNb2RhbF9maWVsZCBpbnB1dCB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXNlbWktYm9sZCk7XG59XG5cbi5teF9EaWFsUGFkTW9kYWxfZGlhbFBhZCB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9MZWdhY3lDYWxsUHJldmlldyB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6ICRzcGFjaW5nLTE2O1xuICAgIGxlZnQ6IDA7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICAvKiBEaXNwbGF5IGFib3ZlIGFueSB3aWRnZXQgZWxlbWVudHMgKi9cbiAgICB6LWluZGV4OiAxMDI7XG5cbiAgICAubXhfVmlkZW9GZWVkX3JlbW90ZS5teF9WaWRlb0ZlZWRfdm9pY2Uge1xuICAgICAgICBtaW4taGVpZ2h0OiAxNTBweDtcbiAgICB9XG5cbiAgICAubXhfVmlkZW9GZWVkX2xvY2FsIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuQ29weXJpZ2h0IDIwMjAgLSAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5Db3B5cmlnaHQgMjAyMSAtIDIwMjIgxaBpbW9uIEJyYW5kbmVyIDxzaW1vbi5icmEuYWdAZ21haWwuY29tPlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9MZWdhY3lDYWxsVmlldyB7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkYXJrLXBhbmVsLWJnLWNvbG9yO1xuICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICAvKiBYWFg6IFBpUENvbnRhaW5lciBzZXRzIHBvaW50ZXItZXZlbnRzOiBub25lIC0gc2hvdWxkIHByb2JhYmx5IGJlIHNldCBiYWNrIGluIGEgYmV0dGVyIHBsYWNlICovXG4gICAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XG5cbiAgICAubXhfTGVnYWN5Q2FsbFZpZXdfdG9hc3Qge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNzRweDtcblxuICAgICAgICBwYWRkaW5nOiA0cHggOHB4O1xuXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgei1pbmRleDogNTA7XG5cbiAgICAgICAgLyogU2FtZSBvbiBib3RoIHRoZW1lcyAqL1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzE5MWM7XG4gICAgfVxuXG4gICAgLm14X0xlZ2FjeUNhbGxWaWV3X2NvbnRlbnRfd3JhcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAubXhfTGVnYWN5Q2FsbFZpZXdfY29udGVudCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcblxuICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoMjAlICsgMjBweCk7IC8qIFNwYWNlIGZvciB0aGUgc2lkZWJhciAqL1xuXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FsbC12aWV3LWNvbnRlbnQtYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxWaWV3X3N0YXR1cyB7XG4gICAgICAgICAgICAgICAgei1pbmRleDogNTA7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQtZmctY29sb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5teF9MZWdhY3lDYWxsVmlld19hdmF0YXJzQ29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAgICAgICAgIGRpdiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubXhfTGVnYWN5Q2FsbFZpZXdfaG9sZEJhY2tncm91bmQge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGJsdXIoMjBweCk7XG5cbiAgICAgICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm14X0xlZ2FjeUNhbGxWaWV3X2NvbnRlbnRfaG9sZCAubXhfTGVnYWN5Q2FsbFZpZXdfc3RhdHVzIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy92b2lwL3BhdXNlZC5zdmdcIik7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubXhfTGVnYWN5Q2FsbFZpZXdfcGlwICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpub3QoLm14X0xlZ2FjeUNhbGxWaWV3X3NpZGViYXIpIC5teF9MZWdhY3lDYWxsVmlld19jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAubXhfVmlkZW9GZWVkX3ByaW1hcnkge1xuICAgICAgICAgICAgYXNwZWN0LXJhdGlvOiB1bnNldDtcbiAgICAgICAgICAgIGJvcmRlcjogMDtcblxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X0xlZ2FjeUNhbGxWaWV3X3BpcCB7XG4gICAgICAgIHdpZHRoOiAzMjBweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDtcblxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG5cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcblxuICAgICAgICAubXhfTGVnYWN5Q2FsbFZpZXdCdXR0b25zIHtcbiAgICAgICAgICAgIGJvdHRvbTogMTNweDtcblxuICAgICAgICAgICAgLm14X0xlZ2FjeUNhbGxWaWV3QnV0dG9uc19idXR0b24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzRweDtcblxuICAgICAgICAgICAgICAgICYubXhfTGVnYWN5Q2FsbFZpZXdCdXR0b25zX2Ryb3Bkb3duQnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHZhcigtLUxlZ2FjeUNhbGxWaWV3QnV0dG9uc19kcm9wZG93bkJ1dHRvbi1zaXplKTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1MZWdhY3lDYWxsVmlld0J1dHRvbnNfZHJvcGRvd25CdXR0b24tc2l6ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIycHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubXhfTGVnYWN5Q2FsbFZpZXdfY29udGVudCB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAxODBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfTGVnYWN5Q2FsbFZpZXdfbGFyZ2Uge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgIGZsZXg6IDE7XG5cbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG5cbiAgICAgICAgbWFyZ2luOiB2YXIoLS1jb250YWluZXItZ2FwLXdpZHRoKTtcbiAgICAgICAgLyogVGhlIGxlZnQgc2lkZSBnYXAgaXMgZnVsbHkgaGFuZGxlZCBieSB0aGlzIG1hcmdpbi4gVG8gcHJvaGliaXQgYmxlZWRpbmcgb24gd2Via2l0IGJyb3dzZXIuICovXG4gICAgICAgIG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1jb250YWluZXItZ2FwLXdpZHRoKSAvIDIpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIH1cblxuICAgICYubXhfTGVnYWN5Q2FsbFZpZXdfYmVsb3dXaWRnZXQge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMSDFoGltb24gQnJhbmRuZXIgPHNpbW9uLmJyYS5hZ0BnbWFpbC5jb20+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0xlZ2FjeUNhbGxWaWV3Rm9yUm9vbSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC5teF9MZWdhY3lDYWxsVmlld0ZvclJvb21fUmVzaXplV3JhcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAgICAgJjpob3ZlciAubXhfTGVnYWN5Q2FsbFZpZXdGb3JSb29tX1Jlc2l6ZUhhbmRsZSB7XG4gICAgICAgICAgICAvKiBOZWVkIHRvIHVzZSBpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgZWxlbWVudCBzdHlsZSBhdHRyaWJ1dGVzICovXG4gICAgICAgICAgICAvKiBzZXQgYnkgcmUtcmVzaXphYmxlICovXG4gICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgICAgICAgICAgICAgIGhlaWdodDogNHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogNjRweDtcblxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cbkNvcHlyaWdodCAyMDIxIC0gMjAyMiDFoGltb24gQnJhbmRuZXIgPHNpbW9uLmJyYS5hZ0BnbWFpbC5jb20+XG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0xlZ2FjeUNhbGxWaWV3SGVhZGVyIHtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgJi5teF9MZWdhY3lDYWxsVmlld0hlYWRlcl9waXAge1xuICAgICAgICBjdXJzb3I6IGdyYWI7XG4gICAgfVxufVxuXG4ubXhfTGVnYWN5Q2FsbFZpZXdIZWFkZXJfdGV4dCB7XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLm14X0xlZ2FjeUNhbGxWaWV3SGVhZGVyX3NlY29uZGFyeUNhbGxJbmZvIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIsK3XCI7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICAgIH1cbn1cblxuLm14X0xlZ2FjeUNhbGxWaWV3SGVhZGVyX2NvbnRyb2xzIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogNXB4O1xufVxuXG4ubXhfTGVnYWN5Q2FsbFZpZXdIZWFkZXJfYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzZWNvbmRhcnktY29udGVudDtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJi5teF9MZWdhY3lDYWxsVmlld0hlYWRlcl9idXR0b25fZnVsbHNjcmVlbiB7XG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC9mdWxsc2NyZWVuLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfTGVnYWN5Q2FsbFZpZXdIZWFkZXJfYnV0dG9uX3BpbiB7XG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvcm9vbS9waW4tdXByaWdodC5zdmdcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm14X0xlZ2FjeUNhbGxWaWV3SGVhZGVyX2J1dHRvbl9leHBhbmQge1xuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL2NhbGwvZXhwYW5kLnN2Z1wiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm14X0xlZ2FjeUNhbGxWaWV3SGVhZGVyX2NhbGxJbmZvIHtcbiAgICBtYXJnaW4tbGVmdDogMTJweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14X0xlZ2FjeUNhbGxWaWV3SGVhZGVyX3Jvb21OYW1lIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IGluaXRpYWw7XG4gICAgaGVpZ2h0OiAxNXB4O1xuXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ubXhfTGVnYWN5Q2FsbFZpZXdfc2Vjb25kYXJ5Q2FsbF9yb29tTmFtZSB7XG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcbn1cblxuLm14X0xlZ2FjeUNhbGxWaWV3SGVhZGVyX2ljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcblxuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG1hc2stc2l6ZTogY29udGFpbjtcbiAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCIkKHJlcykvaW1nL2VsZW1lbnQtaWNvbnMvY2FsbC92b2ljZS1jYWxsLnN2Z1wiKTtcbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjEgLSAyMDIyIMWgaW1vbiBCcmFuZG5lciA8c2ltb24uYnJhLmFnQGdtYWlsLmNvbT5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTGVnYWN5Q2FsbFZpZXdTaWRlYmFyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDEwcHg7XG5cbiAgICB3aWR0aDogMjAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogYXV0bztcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgZ2FwOiAxMnB4O1xuXG4gICAgPiAubXhfVmlkZW9GZWVkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgICAgICAmLm14X1ZpZGVvRmVlZF92b2ljZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmlkZW8tZmVlZC1zZWNvbmRhcnktYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubXhfTGVnYWN5Q2FsbFZpZXdTaWRlYmFyX3BpcE1vZGUge1xuICAgICAgICB0b3A6IDE2cHg7XG4gICAgICAgIGJvdHRvbTogdW5zZXQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogNHB4O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiwgMjAyMCwgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuQ29weXJpZ2h0IDIwMjEgLSAyMDIyIMWgaW1vbiBCcmFuZG5lciA8c2ltb24uYnJhLmFnQGdtYWlsLmNvbT5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVmlkZW9GZWVkIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlcjogdHJhbnNwYXJlbnQgMnB4IHNvbGlkO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICAgJi5teF9WaWRlb0ZlZWRfc2Vjb25kYXJ5IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMjRweDtcbiAgICAgICAgYm90dG9tOiA3MnB4O1xuICAgICAgICB3aWR0aDogMjAlO1xuICAgIH1cblxuICAgICYubXhfVmlkZW9GZWVkX3ZvaWNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGludmVydGVkLWJnLWNvbG9yO1xuXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICY6bm90KC5teF9WaWRlb0ZlZWRfcHJpbWFyeSkge1xuICAgICAgICAgICAgYXNwZWN0LXJhdGlvOiAxNiAvIDk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXhfVmlkZW9GZWVkX3ZpZGVvIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuXG4gICAgICAgICYubXhfVmlkZW9GZWVkX3ZpZGVvX21pcnJvciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5teF9WaWRlb0ZlZWRfbWljIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiA2cHg7XG4gICAgICAgIGJvdHRvbTogNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsgLyogU2FtZSBvbiBib3RoIHRoZW1lcyAqL1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgd2lkdGg6IDE3cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE3cHg7XG4gICAgICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgbWFzay1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IC8qIFNhbWUgb24gYm90aCB0aGVtZXMgKi9cbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfVmlkZW9GZWVkX21pY19tdXRlZDo6YmVmb3JlIHtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcIiQocmVzKS9pbWcvZWxlbWVudC1pY29ucy9NaWMtb2ZmLnN2Z1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYubXhfVmlkZW9GZWVkX21pY191bm11dGVkOjpiZWZvcmUge1xuICAgICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiJChyZXMpL2ltZy9lbGVtZW50LWljb25zL21pYy5zdmdcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfTGl2ZUJhZGdlIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhbGVydDtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgY29sb3I6ICRsaXZlLWJhZGdlLWNvbG9yO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC1zZW1pLWJvbGQpO1xuICAgIGdhcDogJHNwYWNpbmctNDtcbiAgICBwYWRkaW5nOiAycHggNHB4O1xufVxuXG4ubXhfTGl2ZUJhZGdlLS1ncmV5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXVhdGVybmFyeS1jb250ZW50O1xufVxuIiwiLypcbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuLm14X0Jyb2FkY2FzdFBsYXliYWNrQ29udHJvbEJ1dHRvbiB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctODtcbiAgICB3aWR0aDogMzJweDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Wb2ljZUJyb2FkY2FzdENvbnRyb2wge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAwIDAgMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG59XG5cbi5teF9Wb2ljZUJyb2FkY2FzdENvbnRyb2wtcmVjb3JkaW5nIHtcbiAgICBjb2xvcjogJGFsZXJ0O1xufVxuXG4ubXhfVm9pY2VCcm9hZGNhc3RDb250cm9sLXBsYXkgLm14X0ljb24ge1xuICAgIGxlZnQ6IDFweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4iLCIvKlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4ubXhfVm9pY2VCcm9hZGNhc3RIZWFkZXIge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAkc3BhY2luZy04O1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLTE2O1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLm14X1ZvaWNlQnJvYWRjYXN0SGVhZGVyX2NvbnRlbnQge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5teF9Wb2ljZUJyb2FkY2FzdEhlYWRlcl9yb29tX3dyYXBwZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5teF9Wb2ljZUJyb2FkY2FzdEhlYWRlcl9yb29tIHtcbiAgICBmb250LXNpemU6ICRmb250LTEycHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtc2VtaS1ib2xkKTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ubXhfVm9pY2VCcm9hZGNhc3RIZWFkZXJfbGluZSB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogJHNlY29uZGFyeS1jb250ZW50O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogJHNwYWNpbmctNDtcblxuICAgIC5teF9TcGlubmVyIHtcbiAgICAgICAgZmxleDogMCAwIDE0cHg7XG4gICAgICAgIHBhZGRpbmc6IDFweDtcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxufVxuXG4ubXhfVm9pY2VCcm9hZGNhc3RIZWFkZXJfbWljLS1jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Wb2ljZUJyb2FkY2FzdFJlY29yZGluZ0Nvbm5lY3Rpb25FcnJvciB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogJGFsZXJ0O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAkc3BhY2luZy0xMjtcblxuICAgIHN2ZyBwYXRoIHtcbiAgICAgICAgZmlsbDogJGFsZXJ0O1xuICAgIH1cbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Sb29tVGlsZSAubXhfUm9vbVRpbGVfdGl0bGVDb250YWluZXIgLm14X1Jvb21UaWxlX3N1YnRpdGxlLm14X1Jvb21UaWxlX3N1YnRpdGxlLS12b2ljZS1icm9hZGNhc3Qge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sb3I6ICRhbGVydDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogJHNwYWNpbmctNDtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbi5teF9Wb2ljZUJyb2FkY2FzdEJvZHkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRxdWluYXJ5LWNvbnRlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbnRlbnQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtMTJweDtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy0xMjtcbiAgICB3aWR0aDogMjcxcHg7XG5cbiAgICAubXhfQ2xvY2sge1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICB9XG59XG5cbi5teF9Wb2ljZUJyb2FkY2FzdEJvZHktLXBpcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHN5c3RlbTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggMCAjMDAwMDAwNGE7XG59XG5cbi5teF9Wb2ljZUJyb2FkY2FzdEJvZHktLXNtYWxsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogJHNwYWNpbmctODtcbiAgICB3aWR0aDogMTkycHg7XG5cbiAgICAubXhfVm9pY2VCcm9hZGNhc3RIZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5teF9Wb2ljZUJyb2FkY2FzdENvbnRyb2wge1xuICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm14X0xpdmVCYWRnZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICB9XG59XG5cbi5teF9Wb2ljZUJyb2FkY2FzdEJvZHlfZGl2aWRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHF1aW5hcnktY29udGVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgbWFyZ2luOiAkc3BhY2luZy0xMiAwO1xufVxuXG4ubXhfVm9pY2VCcm9hZGNhc3RCb2R5X2NvbnRyb2xzIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAkc3BhY2luZy0zMjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy04O1xufVxuXG4ubXhfVm9pY2VCcm9hZGNhc3RCb2R5X3RpbWVyb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4ubXhfQWNjZXNzaWJsZUJ1dHRvbi5teF9Wb2ljZUJyb2FkY2FzdEJvZHlfYmxvY2tCdXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAkc3BhY2luZy04O1xufVxuXG4ubXhfVm9pY2VCcm9hZGNhc3RCb2R5X19zbWFsbC1jbG9zZSB7XG4gICAgcmlnaHQ6IDhweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA4cHg7XG59XG4iLCJwcmUgY29kZS5obGpze2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3cteDphdXRvO3BhZGRpbmc6MWVtfWNvZGUuaGxqc3twYWRkaW5nOjNweCA1cHh9LmhsanN7Y29sb3I6I2FiYjJiZjtiYWNrZ3JvdW5kOiMyODJjMzR9LmhsanMtY29tbWVudCwuaGxqcy1xdW90ZXtjb2xvcjojNWM2MzcwO2ZvbnQtc3R5bGU6aXRhbGljfS5obGpzLWRvY3RhZywuaGxqcy1mb3JtdWxhLC5obGpzLWtleXdvcmR7Y29sb3I6I2M2NzhkZH0uaGxqcy1kZWxldGlvbiwuaGxqcy1uYW1lLC5obGpzLXNlY3Rpb24sLmhsanMtc2VsZWN0b3ItdGFnLC5obGpzLXN1YnN0e2NvbG9yOiNlMDZjNzV9LmhsanMtbGl0ZXJhbHtjb2xvcjojNTZiNmMyfS5obGpzLWFkZGl0aW9uLC5obGpzLWF0dHJpYnV0ZSwuaGxqcy1tZXRhIC5obGpzLXN0cmluZywuaGxqcy1yZWdleHAsLmhsanMtc3RyaW5ne2NvbG9yOiM5OGMzNzl9LmhsanMtYXR0ciwuaGxqcy1udW1iZXIsLmhsanMtc2VsZWN0b3ItYXR0ciwuaGxqcy1zZWxlY3Rvci1jbGFzcywuaGxqcy1zZWxlY3Rvci1wc2V1ZG8sLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsLmhsanMtdHlwZSwuaGxqcy12YXJpYWJsZXtjb2xvcjojZDE5YTY2fS5obGpzLWJ1bGxldCwuaGxqcy1saW5rLC5obGpzLW1ldGEsLmhsanMtc2VsZWN0b3ItaWQsLmhsanMtc3ltYm9sLC5obGpzLXRpdGxle2NvbG9yOiM2MWFlZWV9LmhsanMtYnVpbHRfaW4sLmhsanMtY2xhc3MgLmhsanMtdGl0bGUsLmhsanMtdGl0bGUuY2xhc3Nfe2NvbG9yOiNlNmMwN2J9LmhsanMtZW1waGFzaXN7Zm9udC1zdHlsZTppdGFsaWN9LmhsanMtc3Ryb25ne2ZvbnQtd2VpZ2h0OjcwMH0uaGxqcy1saW5re3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Il0sInNvdXJjZVJvb3QiOiIifQ==*/