/*
---
name: Colors
template: colors
tag:
 - variable
 - color
colors:
 - variable: "body"
   description: "The main background color"
   value: "#FFF"
 - variable: "text"
   description: "The default text color on the body"
   value: "#202023"
 - variable: "text-gray"
   description: "The default color for grayed-out text (e. g. for disabled items or subcaptions)"
   value: "#6A6A6A"
 - variable: "text-inverted"
   description: "The default inverted text color on the body"
   value: "#FFF"
 - variable: "action"
   description: "The main action color used for links and buttons"
   value: "#3031FE"
 - variable: "line"
   description: "The default color for lines (e. g. border lines)"
   value: "#e0e0e0"
 - variable: "success"
   description: "The color for positive feedback (e. g. confirmation messages)"
   value: "#00A685"
 - variable: "error"
   description: "The color for negative feedback (e. g. error messages)"
   value: "#DC153A"
---

Color variables that are used throughout the library are defined in the `theme.colors` hash.
By default, the following keys are defined:
*/
/*
---
name: rem
category: Functions/rem
tag:
 - function
---

Converts from `px` to `rem`, based on the assumption that `16px` are equivalent to `1rem`.

## Definition:

```stylus
rems = rem(pixels);
```
*/
/*
---
name: chooseMaxContrast
category: Functions/chooseMaxContrast
tag:
 - color
 - function
---

Given one or more foreground colors `fgs` and one background color `bg`,
returns the foreground color with the highest contrast ratio with respect to `bg`.

## Definition:

```stylus
fg = chooseMaxContrast(fgs, bg);
```

## Example:

```stylus
bg = theme.colors.footer;
fg = theme.colors.text;
fgInverted = theme.colors.text-inverted;

theme.components.color-box.footer = {
  background-color: (bg),
  color: (chooseMaxContrast((fg fgInverted), bg)),
}
```
*/
/*
---
name: Global settings
template: variables
tag:
 - variable
variables:
 - name: "text-line-height"
   description: "The line height of the body"
   default: "1.5rem"
 - name: "text-font"
   description: "The `font-family` to be used for regular text"
   default: "'Roboto', serif"
 - name: "heading-font"
   description: "The `font-family` to be used for headings (and possibly subcaptions)"
   default: "'Roboto', serif"
 - name: "text-rendering"
   description: "The `text-rendering` of the body"
   default: "optimizeLegibility"
 - name: "transition-duration"
   description: "The duration of the slide transitions"
   default: "0.3s"
 - name: "border-radius"
   description: "The default radius for borders"
   default: "2px"
---

The `theme.settings` hash defines several global settings for text formatting and styling:
*/
/*
---
name: Global settings
category: Shared/Variables
template: variables
tag:
 - variables
variables:
 - name: "text-line-height"
   description: "The line height of the body"
   default: "1.5rem"
 - name: "font-family"
   description: "The font-family of the body"
   default: "'Helvetica', sans-serif"
 - name: "text-rendering"
   description: "The text-rendering of the body"
   default: "optimizeLegibility"
 - name: "transition-duration"
   description: "The duration of the slide transitions"
   default: "0.4s"
 - name: "border-radius"
   description: "The default radius for borders"
   default: "2px"
---

These variables setups some global text formatting and styling.
*/
/*
---
name: Global Reset
category: Globals/Reset
tag:
 - reset
---

The lernetz css library has a set of reset style to have the same behaviour on every browser.
Furthermore this reset sets some global variables like:
 * body font-families
 * body line-height
 * body text-rendering
 * :root font-size for proper rem conversion
*/
html,
body,
div,
span,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
abbr,
address,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
samp,
small,
strong,
sub,
sup,
var,
b,
i,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section,
summary,
time,
mark,
audio,
video {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: inherit;
  font-weight: inherit;
  vertical-align: baseline;
}
:root {
  font-size: 16px;
}
html {
  font-size: 100%;
}
body {
  line-height: 1.5rem;
  color: #000;
  font-family: 'Avenir' , sans-serif;
  text-rendering: optimizeLegibility;
  background-color: #fff;
  -webkit-font-smoothing: antialiased;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block;
}
select {
  vertical-align: middle;
}
textarea {
  width: 100%;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
html {
  box-sizing: border-box;
}
*,
*:before,
*:after {
  box-sizing: inherit;
}
a {
  text-decoration: none;
  color: inherit;
}
img {
  display: block;
}
ul,
ol {
  margin-left: 1.25rem;
}
/*
---
name: Global helpers
category: Globals/Helpers
tag:
 - helper
 - box-model
 - display
 - position
 - visibility
compile: true
---

A collection of global helpers to control common styles.
Note that every global helper is perfixed with an underscore to indicate that this is a global rule according to rscss.

## Z-Index:

```jade
div._z-1 z-index: 1;
div._z-2 z-index: 2;
div._z-3 z-index: 3;
div._z-4 z-index: 4;
div._z-5 z-index: 5;
div._z-6 z-index: 6;
```

## Position:

```jade
div._absolute position: absolute;
div._relative position: relativ;
div._fixed position: fixed;
div._sticky position: sticky;
div._static position: static;
```

## Display:

```jade
div._block display: block;
div._inline-block display: inline-block;
div._inline display: inline;
div._flex display: flex;
div._inline-flex display: inline-flex;
div._table display: table;
div._table-row display: table-row;
div._table-cell display: table-cell;
div._hidden display: none;
```

## Visibility:

```jade
div._visible visibility: visible;
div._invisible visibility: hidden;
```
*/
._z-1 {
  z-index: 1;
}
._z-2 {
  z-index: 2;
}
._z-3 {
  z-index: 3;
}
._z-4 {
  z-index: 4;
}
._z-5 {
  z-index: 5;
}
._z-6 {
  z-index: 6;
}
._absolute {
  position: absolute;
}
._relative {
  position: relative;
}
._fixed {
  position: fixed;
}
._sticky {
  position: sticky;
}
._static {
  position: static;
}
._block {
 {
    padding: 0.5rem 2rem;
    border-width: 0.09375rem;
  }
  display: ;
}
._inline-block {
  display: inline-block;
}
._inline {
  display: inline;
}
._flex {
  display: flex;
}
._inline-flex {
  display: inline-flex;
}
._table {
  display: table;
}
._table-row {
  display: table-row;
}
._table-cell {
  display: table-cell;
}
._hidden {
  display: none;
}
._visible {
  visibility: visible;
}
._invisible {
  visibility: hidden;
}
/*
---
name: .abs-layout
category: Components/.abs-layout
tag:
 - component
 - layout
compile: true
---

A simple component to position an element absolute. Default is top, left

## Variants

The variants for the vertical positioning are `.-top`, `.-vcenter` and `.-bottom`.
The variants for the horizontal positioning are `.-right`, `.-hcenter` and `.-left`.
Additinally the `-center` variant will center horizontal and vertical.
Variants to stretch an item to its full width/height can be dine with `.item.-stretch`.
In some situations the abs-layout itself needs to stretch so use the stretch variant on the component. `.abs-layout.-stretch` 

```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-center
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-top.-hcenter
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-top.-right
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-right.-vcenter
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-right.-bottom
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-bottom.-hcenter
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-bottom.-left
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-left.-vcenter
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-left.-top
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-stretch
```

## Z-Index

Every item can controll its z index with the `.-z{i}`variants.
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-top.-left.-z1
    div.aigis-debug.item.-top.-left.-z2
```

*/
.abs-layout {
  position: relative;
}
.abs-layout.-stretch {
  width: 100%;
  height: 100%;
}
.abs-layout > .item {
  position: absolute;
}
.abs-layout > .item.-top {
  top: 0;
}
.abs-layout > .item.-right {
  right: 0;
}
.abs-layout > .item.-bottom {
  bottom: 0;
}
.abs-layout > .item.-left {
  left: 0;
}
.abs-layout > .item.-vcenter {
  top: 50%;
  transform: translateY(-50%);
}
.abs-layout > .item.-hcenter {
  left: 50%;
  transform: translateX(-50%);
}
.abs-layout > .item.-center {
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.abs-layout > .item.-stretch {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.abs-layout > .item.-z1 {
  z-index: 1;
}
.abs-layout > .item.-z2 {
  z-index: 2;
}
.abs-layout > .item.-z3 {
  z-index: 3;
}
.abs-layout > .item.-z4 {
  z-index: 4;
}
.abs-layout > .item.-z5 {
  z-index: 5;
}
.abs-layout > .item.-z6 {
  z-index: 6;
}
.abs-layout > .item.-z7 {
  z-index: 7;
}
.abs-layout > .item.-z8 {
  z-index: 8;
}
.abs-layout > .item.-z9 {
  z-index: 9;
}
.abs-layout > .item.-z10 {
  z-index: 10;
}
/*
---
name: .border-box
category: Components/.border-box
tag:
 - component
 - border
compile: true
---

A box to control borders on all four sides.

```jade
div.border-box.-left Some demo content
```

```jade
div.border-box.-all Some demo content
```
*/
.border-box.-top {
  border-top-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-right {
  border-right-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-bottom,
.menu > .item:not(:last-child) {
  border-bottom-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-left {
  border-left-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-all {
  border-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-top-color-primary {
  border-top-style: solid;
  border-color: #06305f;
}
.border-box.-right-color-primary {
  border-right-style: solid;
  border-color: #06305f;
}
.border-box.-bottom-color-primary {
  border-bottom-style: solid;
  border-color: #06305f;
}
.border-box.-left-color-primary {
  border-left-style: solid;
  border-color: #06305f;
}
.border-box.-all-color-primary {
  border-style: solid;
  border-color: #06305f;
}
.border-box.-top-header {
  border-top-style: solid;
  border-width: 1px;
  border-color: inherit;
}
.border-box.-right-header {
  border-right-style: solid;
  border-width: 1px;
  border-color: inherit;
}
.border-box.-bottom-header {
  border-bottom-style: solid;
  border-width: 1px;
  border-color: inherit;
}
.border-box.-left-header {
  border-left-style: solid;
  border-width: 1px;
  border-color: inherit;
}
.border-box.-all-header {
  border-style: solid;
  border-width: 1px;
  border-color: inherit;
}
.border-box.-top-thick {
  border-top-style: solid;
  border-width: 0.09375rem;
}
.border-box.-right-thick {
  border-right-style: solid;
  border-width: 0.09375rem;
}
.border-box.-bottom-thick {
  border-bottom-style: solid;
  border-width: 0.09375rem;
}
.border-box.-left-thick {
  border-left-style: solid;
  border-width: 0.09375rem;
}
.border-box.-all-thick {
  border-style: solid;
  border-width: 0.09375rem;
}
.border-box.-top-thin-medium {
  border-top-style: solid;
}
@media (min-width: 32.0625rem) {
  .border-box.-top-thin-medium {
    border-width: 0.078125rem;
  }
}
.border-box.-right-thin-medium {
  border-right-style: solid;
}
@media (min-width: 32.0625rem) {
  .border-box.-right-thin-medium {
    border-width: 0.078125rem;
  }
}
.border-box.-bottom-thin-medium {
  border-bottom-style: solid;
}
@media (min-width: 32.0625rem) {
  .border-box.-bottom-thin-medium {
    border-width: 0.078125rem;
  }
}
.border-box.-left-thin-medium {
  border-left-style: solid;
}
@media (min-width: 32.0625rem) {
  .border-box.-left-thin-medium {
    border-width: 0.078125rem;
  }
}
.border-box.-all-thin-medium {
  border-style: solid;
}
@media (min-width: 32.0625rem) {
  .border-box.-all-thin-medium {
    border-width: 0.078125rem;
  }
}
.border-box.-round {
  border-radius: 50%;
}
/*
---
name: .button-style
category: Components/.button-style
tag:
 - component
 - button
compile: true
---

A button component as a base for different button variants defined in its configuration.

```jade
button.button-style default
```

```jade
button.button-style.-disabled -disabled
```

```jade
button.button-style.-hover -hover
```

```jade
button.button-style.-main -main
```

```jade
button.button-style.-main.-hover -main -hover
```
*/
.button-style {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background: transparent;
  border: none;
  display: inline-block;
  cursor: pointer;
  outline: none;
  white-space: nowrap;
  display: flex;
  align-items: center;
}
.button-style.-main {
  color: #fff;
  background-color: #3031fe;
  padding: 0.5rem 1rem;
}
.button-style.-main.-hover:hover {
  color: #fff;
  background-color: #1616bd;
}
.button-style.-hover {
  transition: all 0.1s;
}
.button-style.-hover:hover {
  color: #3031fe;
}
.button-style.-disabled {
  cursor: inherit;
  background-color: #b6b6b6;
}
/*
---
name: .color-box
category: Components/.color-box
tag:
 - component
 - color
compile: true
---

Controls the background and/or foreground color(s) of the styled element.

## Configuration

This component produces a variant for each key in the `theme.components.color-box` hash.
For example, you can therefore a `-footer` variants by including the following in the file `color-box.var.styl`:

```stylus
theme.components.color-box.footer = {
  background-color: theme.colors.footer,  // assuming this non-default key is defined elsewhere
  color: theme.colors.text,
};
```

## Default variants:

By default, the following `color-box` variants are defined via `theme.components.color-box`:

```jade
div(style="display:flex")
  div.color-box.-body(style="width:100px;height:100px;margin:5px;padding:5px")
    span -body
  div.color-box.-action(style="width:100px;height:100px;margin:5px;padding:5px")
    span -action
  div.color-box.-black(style="width:100px;height:100px;margin:5px;padding:5px")
    span -black
  div.color-box.-white(style="width:100px;height:100px;margin:5px;padding:5px")
    span -white
```

## See also:

* [chooseMaxContrast](../../Shared/Functions/index.html#chooseMaxContrast) &mdash;
  In order to guarantee good legibility, the foreground `color` should be chosen
  in relation to the `background-color` such that a reasonably high contrast ratio
  will result. If you are working with `theme.colors` variables instead of fixed
  color values, this can help you select the best one; see there for an example.
*/
.color-box.-body {
  background-color: #fff;
  color: #202023;
}
.color-box.-action {
  background-color: #3031fe;
  color: #fff;
}
.color-box.-white {
  background-color: #fff;
  color: #000;
}
.color-box.-black {
  background-color: #000;
  color: #fff;
}
.color-box.-start-page-header {
  background-color: transparent;
  border-color: transparent;
  color: #fff;
  transition: all 0.33s ease;
}
.color-box.-start-page-header-menu-open {
  background-color: #95bbd3;
  border-color: #fff;
  color: #fff;
  transition: all 0.33s ease;
}
.color-box.-header {
  background-color: #fff;
  border-color: #000;
  color: #000;
  transition: all 0.33s ease;
}
@supports ((-webkit-backdrop-filter: blur(2px)) or (backdrop-filter: blur(2px))) {
  .color-box.-header {
    background-color: rgba(255,255,255,0.85);
    -webkit-backdrop-filter: blur(2.5px);
            backdrop-filter: blur(2.5px);
  }
}
/*
---
name: .display-responsive
category: Components/.display-responsive
tag:
 - responsive
 - display
compile: true
---

Controls the display of an element depending on the current breakpoint

## Hide

`.-hide-medium` hides an element as long as the screen is wider than the breakpoint `medium`.

```jade
div.display-responsive.-hide-medium Only shown when the screen is wider than the breakpoint medium
```

## Show

`.-show-medium` show an element as long as the screen is narrower than the breakpoint `medium`.

```jade
div.display-responsive.-show-medium Only shown when the screen is narrower than the breakpoint `medium`
```

*/
@media all and (max-width: 23.5rem) {
  .display-responsive.-hide-small {
    display: none;
  }
}
@media all and (min-width: 23.5rem) {
  .display-responsive.-show-small {
    display: none;
  }
}
@media all and (max-width: 32.0625rem) {
  .display-responsive.-hide-medium {
    display: none;
  }
}
@media all and (min-width: 32.0625rem) {
  .display-responsive.-show-medium {
    display: none;
  }
}
@media all and (max-width: 67.5rem) {
  .display-responsive.-hide-large {
    display: none;
  }
}
@media all and (min-width: 67.5rem) {
  .display-responsive.-show-large {
    display: none;
  }
}
/*
---
name: .fixed-layout
category: Components/.fixed-layout
tag:
 - container
 - layout
 - fixed
---

Fixed container
You can position the container with the different variants `.-top`, `.-bottom`, `.-left`, `.-right`.
To span full width / height use `.-left` & `.-right` / `.-top` & `.-bottom`

Fixed top and full width

```jade
div.fixed-layout.-top.-left.-right.aigis-debug top left fullwidth
    
```

Fixed right and full height

```jade
div.fixed-layout.-top.-bottom.-right.aigis-debug top right fullheight
    
```

*/
.fixed-layout {
  position: fixed;
}
.fixed-layout.-top {
  top: 0;
}
.fixed-layout.-bottom {
  bottom: 0;
}
.fixed-layout.-left {
  left: 0;
}
.fixed-layout.-right {
  right: 0;
}
/*
---
name: .fixed-page-layout
category: Components/.fixed-page-layout
tag:
 - component
 - layout
 - fixed
 - page
compile: true
---

A page layout with a fixed header and optional sidebars.
With the `-margin-{top|left|right}`, `-margin-{top|left|right}-small` variants you can control the spacing.
If the content for example needs a spacing towards the header use: `.content.-margin-top`.
If the sidebar show be below the header use: `.sidebar.-left.-margin-top`.


There are variants to resize the header and sidebars to a smaller width/height: `.header.-small`, `.sidebar.-small`.
If you need a spacing on your content or sidebar you need to adjust that manually like this:
```
div.fixed-page-layout
	div.header.-small
		div.aigis-debug(style="width:100%;height:100%")  Header
	div.content.-margin-top-small Content
	div.sidebar.-left.-margin-top-small.-small
		div.aigis-debug(style="height:100%")  Left Sidebar
```

## Header with sidebars

```jade
div.fixed-page-layout
	div.header
		div.aigis-debug(style="width:100%;height:100%")  Header
	div.content.-margin-top Content
	div.sidebar.-left.-margin-top
		div.aigis-debug(style="height:100%")  Left Sidebar
	div.sidebar.-right
		div.aigis-debug(style="height:100%")  Right Sidebar
```
*/
.fixed-page-layout > .header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 3.125rem;
}
.fixed-page-layout > .header.-small {
  height: 1.875rem;
}
.fixed-page-layout > .header.-hide {
  transform: translateY(-100%);
}
.fixed-page-layout > .sidebar {
  position: fixed;
  top: 0;
  bottom: 0;
  width: 23.4375rem;
}
.fixed-page-layout > .sidebar.-small {
  width: 3.125rem;
}
.fixed-page-layout > .sidebar.-margin-top {
  top: 3.125rem;
}
.fixed-page-layout > .sidebar.-margin-top-small {
  top: 1.875rem;
}
.fixed-page-layout > .sidebar.-left {
  left: 0;
}
.fixed-page-layout > .sidebar.-left.-hide {
  transform: translateX(-100%);
}
.fixed-page-layout > .sidebar.-right {
  right: 0;
}
.fixed-page-layout > .sidebar.-right.-hide {
  transform: translateX(100%);
}
.fixed-page-layout > .content.-margin-right {
  margin-right: 23.4375rem;
}
.fixed-page-layout > .content.-margin-left {
  margin-left: 23.4375rem;
}
.fixed-page-layout > .content.-margin-right-small {
  margin-right: 3.125rem;
}
.fixed-page-layout > .content.-margin-left-small {
  margin-left: 3.125rem;
}
.fixed-page-layout > .content.-margin-top {
  margin-top: 3.125rem;
}
.fixed-page-layout > .content.-margin-top-small {
  margin-top: 1.875rem;
}
/*
---
name: .flex-layout
category: Components/.flex-layout
tag:
 - component
 - layout
 - flexbox
compile: true
---

A layout system based on flexbox to align and distribute items horizontally and vertically.


# Alignment of items

The `-center` shortcut will center all items horizontal & vertical
```jade
div(style="height: 100px").flex-layout.-center
	div.aigis-debug Item 1
	div.aigis-debug Item 2
	div.aigis-debug Item 3
```

`-baseline` will align items based on their baseline. Works good if all the items contain text. 
```jade
div.flex-layout.-baseline
	div.aigis-debug Item
	div.aigis-debug(style="padding-top: 50px;padding-bottom: 30px;") Item 2
```

`-items-top` & `-items-bottom` will align the items either on top or bottom
```jade
div.flex-layout.-items-top
	div.aigis-debug Item 1
	div.aigis-debug(style="padding-top: 50px;padding-bottom: 30px;") Item 2
	div.aigis-debug Item 3
```
```jade
div.flex-layout.-items-bottom
	div.aigis-debug Item 1
	div.aigis-debug(style="padding-top: 50px;padding-bottom: 30px;") Item 2
	div.aigis-debug Item 3
```

`-items-center` will center the items vertically
```jade
div.flex-layout.-items-center
	div.aigis-debug Item 1
	div.aigis-debug(style="padding-top: 50px;padding-bottom: 30px;") Item 2
	div.aigis-debug Item 3
```

# Alignment of individual items

```jade
div(style="height: 100px").flex-layout
	div.aigis-debug.item.-top top
	div.aigis-debug.item.-center center
	div.aigis-debug.item.-bottom bottom
	div.aigis-debug.item.-stretch stretch
```

# Row mode

If you like a container that spans the full width with item that resize themself you can use the `-row` variant.

```jade
div.flex-layout.-row
	div.aigis-debug.item Item 1
	div.aigis-debug.item Item 2
	div.aigis-debug.item Item 3
```

If you like to fix an item based on its content width use the `-content` variant.
This is a shortcut for `-no-grow -no-shrink`. 
```jade
div.flex-layout.-row
	div.aigis-debug.item.-content
		img(src="http://via.placeholder.com/350x80")
	div.aigis-debug.item Item 2
	div.aigis-debug.item Item 3
```

You can control the sizing of the items with `-grow`, `-shrink`, `-no-grow`, `-no-shrink`.
```jade
div.flex-layout.-row
	div.aigis-debug.item.-no-shrink
		img(src="http://via.placeholder.com/350x80")
	div.aigis-debug.item.-no-grow Item 2
	div.aigis-debug.item Item 3
```


# Distribution of items

Use `-[v/h]-space-around` & `-[v/h]-space-between` to distribute the items in the flex container.

```jade
div.flex-layout.-h-space-around
	div.aigis-debug Item 1
	div.aigis-debug Item 2
	div.aigis-debug Item 3
```
```jade
div.flex-layout.-h-space-between
	div.aigis-debug Item 1
	div.aigis-debug Item 2
	div.aigis-debug Item 3
```
```jade
div(style="height: 200px").flex-layout.-v-space-around.-wrap
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div(style="height: 200px").flex-layout.-v-space-between.-wrap
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```

# Alignment of multiline items with wrap

If you have alot on items that wrap you can align the multilines with the following variants:
```jade
div.flex-layout.-wrap.-h-center
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div.flex-layout.-wrap.-left
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div.flex-layout.-wrap.-right
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div(style="height: 200px").flex-layout.-wrap.-v-center
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div(style="height: 200px").flex-layout.-wrap.-top
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div(style="height: 200px").flex-layout.-wrap.-bottom
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```




*/
.flex-layout {
  display: flex;
}
.flex-layout.-inline {
  display: flex-inline;
}
.flex-layout.-wrap {
  flex-wrap: wrap;
}
.flex-layout.-row {
  flex-wrap: nowrap;
}
.flex-layout.-row > .item {
  flex: 1 1 auto;
}
.flex-layout.-column {
  flex-direction: column;
}
.flex-layout.-center {
  justify-content: center;
  align-items: center;
  align-content: center;
}
.flex-layout.-baseline {
  align-items: baseline;
}
.flex-layout.-left {
  justify-content: flex-start;
}
.flex-layout.-right {
  justify-content: flex-end;
}
.flex-layout.-top {
  align-content: flex-start;
}
.flex-layout.-bottom {
  align-content: flex-end;
}
.flex-layout.-v-center {
  align-content: center;
}
.flex-layout.-v-space-between {
  align-content: space-between;
}
.flex-layout.-v-space-around {
  align-content: space-around;
}
.flex-layout.-h-center {
  justify-content: center;
}
.flex-layout.-h-space-between {
  justify-content: space-between;
}
.flex-layout.-h-space-around {
  justify-content: space-around;
}
.flex-layout.-items-top {
  align-items: flex-start;
}
.flex-layout.-items-bottom {
  align-items: flex-end;
}
.flex-layout.-items-center {
  align-items: center;
}
.flex-layout.-items-stretch {
  align-items: flex-stretch;
}
.flex-layout > .item.-stretch {
  align-self: stretch;
}
.flex-layout > .item.-top {
  align-self: flex-start;
}
.flex-layout > .item.-center {
  align-self: center;
}
.flex-layout > .item.-bottom {
  align-self: flex-end;
}
.flex-layout > .item.-content {
  flex: none;
}
.flex-layout > .item.-grow {
  flex-grow: 1;
}
.flex-layout > .item.-shrink {
  flex-shrink: 1;
}
.flex-layout > .item.-no-grow {
  flex-grow: 0;
}
.flex-layout > .item.-no-shrink {
  flex-shrink: 0;
}
/*
---
name: .grid-layout
category: Components/.grid-layout
tag:
 - component
 - layout
 - grid
 - responsive
 - flexbox
compile: true
---

A grid layout system based on flexbox. It provides sizing variants to size on different percentages.


## Percentage based sizing

The easiest use case is to use simple `.item -w1`, `.item -w1-2`, `.item -w1-3`, `.item -w1-4` for a percentage based side-by-side rendering.

```jade
div.grid-layout
	div.item.-w1
		div.aigis-debug item -w1
	div.item.-w1-2 
		div.aigis-debug item -w1-2
	div.item.-w1-2
		div.aigis-debug item -w1-2
	div.item.-w1-3
		div.aigis-debug item -w1-3
	div.item.-w2-3
		div.aigis-debug item -w2-3
	div.item.-w1-4
		div.aigis-debug item -w1-4
	div.item.-w1-2
		div.aigis-debug item -w1-2
	div.item.-w1-4
		div.aigis-debug item -w1-4
```

## Layouts on different devices

The breakpoints for different screen sizes are specified in the global settings `theme.settings.breakpoints` and can be overwritten in `theme.components.grid-layout.breakpoints`.
The default settings define breakpoints with labels: `.-small-X-X`, `.-medium-X-X`, `.-large-X-X`.

```jade
div.grid-layout
	div.item.-w1.-small-1-3.-medium-1-2.-large-1-4
		div.aigis-debug item -w1 -small-1-3 -medium-1-2 -large-1-4
	div.item.-w1.-small-1-3.-medium-1-2.-large-1-4
		div.aigis-debug item -w1 -small-1-3 -medium-1-2 -large-1-4
	div.item.-w1-2.-small-1-3.-medium-1-2.-large-1-4
		div.aigis-debug item -w1-2 -small-1-3 -medium-1-2 -large-1-4
	div.item.-w1-2.-small-1.-medium-1-2.-large-1-4
		div.aigis-debug item -w1-2 -small-1 -medium-1-2 -large-1-4
```


## Gutter

If you need a spacing between the columns add the `-gutter` variant.
The size of the gutter is specified in the `grid-gutter`variable.

```jade
div.grid-layout.-gutter
	div.item.-w1-4
		div.aigis-debug col -w1-4
	div.item.-w1-4
		div.aigis-debug col -w1-4
	div.item.-w1-2
		div.aigis-debug col -w1-2
```


## Reverse order

To reverse the order in which the columns are displayed, you can add the modifier class `.-reverse` to your table-grid.
The columns will be in DOM order when viewport switches to small layout.

```jade
div.grid-layout.-reverse
	div.item.-w1-4
		div.aigis-debug First column in DOM
	div.item.-w1-4
		div.aigis-debug Second column in DOM
	div.item.-w1-4
		div.aigis-debug Third column in DOM
	div.item.-w1-4
		div.aigis-debug Fourth column in DOM
```

## Vertical centering

You can vertical center with the help of the `flex-layout` component.

```jade
div.grid-layout.flex-layout
	div.item.-w1-4
		div.aigis-debug A column with a lot of content that should wrap on fixed size.
	div.item.-bottom
		div.aigis-debug bottom
	div.item.-center
		div.aigis-debug center
	div.item.-stretch
		div.aigis-debug(style="height:100%") stretch
```

*/
.grid-layout {
  display: flex;
  flex-wrap: wrap;
}
.grid-layout.-gutter {
  margin: -0.625rem -0.9375rem;
}
.grid-layout.-gutter > .item {
  padding: 0.625rem 0.9375rem;
}
.grid-layout.-reverse {
  flex-direction: row-reverse;
}
.grid-layout > .item.-w1 {
  flex: 0 0 100%;
  max-width: 100%;
}
.grid-layout > .item.-w1-2 {
  flex: 0 0 50%;
  max-width: 50%;
}
.grid-layout > .item.-w1-3 {
  flex: 0 0 33.333333333333336%;
  max-width: 33.333333333333336%;
}
.grid-layout > .item.-w2-3 {
  flex: 0 0 66.66666666666667%;
  max-width: 66.66666666666667%;
}
.grid-layout > .item.-w1-4 {
  flex: 0 0 25%;
  max-width: 25%;
}
.grid-layout > .item.-w3-4 {
  flex: 0 0 75%;
  max-width: 75%;
}
@media all and (min-width: 23.5rem) {
  .grid-layout > .item.-small-1 {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-small-1-2 {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-small-1-3 {
    flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-small-2-3 {
    flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-small-1-4 {
    flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-small-3-4 {
    flex: 0 0 75%;
    max-width: 75%;
  }
}
@media all and (min-width: 32.0625rem) {
  .grid-layout > .item.-medium-1 {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-medium-1-2 {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-medium-1-3 {
    flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-medium-2-3 {
    flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-medium-1-4 {
    flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-medium-3-4 {
    flex: 0 0 75%;
    max-width: 75%;
  }
}
@media all and (min-width: 67.5rem) {
  .grid-layout > .item.-large-1 {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-large-1-2 {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-large-1-3 {
    flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-large-2-3 {
    flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-large-1-4 {
    flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-large-3-4 {
    flex: 0 0 75%;
    max-width: 75%;
  }
}
/*
---
name: .image-responsive
category: Components/.image-responsive
tag:
 - component
 - responsive
 - image
 - media
compile: true
---

This class makes the image scaling to its max width.

```jade
img.image-responsive(src='http://www.byui.edu/images/agriculture-life-sciences/flower.jpg')
```

## Variants

`.-full` forces the picture to span to 100% of the parent

```jade
img.image-responsive.-full(src='http://www.byui.edu/images/agriculture-life-sciences/flower.jpg')
```
*/
.image-responsive {
  max-width: 100%;
  height: auto;
  display: block;
}
.image-responsive.-full {
  width: 100%;
}
.image-responsive.-inset {
  max-height: 100%;
}
/*
---
name: .max-width-layout
category: Components/.max-width-layout
tag:
 - component
 - layout
 - responsive
compile: true
---

This component will limit its content to a maximum width. Forthermore it can center its content.
Usefull for page content that should not span the full width.


## Percentage based sizing

*/
@media all and (min-width: 23.5rem) {
  .max-width-layout {
    max-width: 41.75rem;
  }
}
@media all and (min-width: 32.0625rem) {
  .max-width-layout {
    max-width: 55.75rem;
  }
}
@media all and (min-width: 67.5rem) {
  .max-width-layout {
    max-width: 68.75rem;
  }
}
.max-width-layout.-center {
  margin-left: auto;
  margin-right: auto;
}
/*
---
name: .media-responsive
category: Components/.media-responsive
tag:
 - responsive
 - media
compile: true
---

`.media-responsive` - This makes a the `.media-responsive` div a container for any media element (iframe, video, ... ) that responsive scales with a fix ratio.
The media element ( child ) needs the class `.media` to fully fill out the parents size.

The `.media-responsive` component has to predefined modifiers: `.-media-4-3`, `.-media-16-9` that define a fix ratio.

```jade
div.media-responsive.-media-16-9
	iframe.media(src="https://www.youtube.com/embed/TCd6PfxOy0Y")
```

```jade
div.media-responsive.-media-4-3
	iframe.media(src="https://www.youtube.com/embed/TCd6PfxOy0Y")
```

*/
.media-responsive {
  width: 100%;
  position: relative;
  padding-bottom: 50%;
}
.media-responsive.-media-1-1 {
  padding-bottom: 50%;
}
.media-responsive.-media-4-3 {
  padding-bottom: 75%;
}
.media-responsive.-media-16-9 {
  padding-bottom: 56.25%;
}
.media-responsive > .media {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
/*
---
name: .overflow-text
category: Components/.overflow-text
tag:
 - component
 - text
compile: true
---

This component cuts the text on a given height and adds a fadeout effect.
This is usefull for text containers that have more content than space.


```jade
div.overflow-text(style="width: 200px;height: 70px") This is a very long text that is rwaped and cut at the end.
```
*/
.overflow-text {
  overflow: hidden;
  position: relative;
}
.overflow-text:after {
  content: "";
  position: absolute;
  bottom: 0;
  right: 0;
  left: 0;
  height: 2.1875rem;
  background: linear-gradient(to bottom, rgba(255,255,255,0), #fff 70%);
}
/*
---
name: .shadow-box
category: Components/.shadow-box
tag:
 - component
 - shadow
compile: true
---

A box to control box-shadows with different variants

## Default variants
```jade
div.shadow-box Demo content
div.shadow-box.-inset Demo content
div.shadow-box.-zero Use zero shadow in animations
```
*/
.shadow-box {
  box-shadow: 0px 1px 6px 0px rgba(0,0,0,0.17);
}
.shadow-box.-inset {
  box-shadow: inset 0px 1px 6px 0px rgba(0,0,0,0.17);
}
.shadow-box.-zero {
  box-shadow: inset 0px 0px 0px 0px rgba(0,0,0,0.17);
}
/*
---
name: .spacer-box
category: Components/.spacer-box
tag:
 - component
 - layout
 - box-model
compile: true
---

This component is used to control spacing of a box. It mainly sets the margin and padding with a fixed set of configuration values.
The default space sizes are:
```
xxs: 2
xs: 4
s: 8
default: 16
l: 32
xl: 64`
```


To control the padding/margin for a specific space you can use the following variants:
```
-{kind}-{side}-{space}
-{kind}-{axis}-{space}
-{kind}-{space}

kind: m | p
side: top | right | bottom | left
space: xxs | xs | s | l | xl
axis: v | h
```

Or to use the `default` padding space you can use the following shortcuts:
```
-{kind}-{side}
-{kind}-{axis}
-{kind}

kind: m | p
side: top | right | bottom | left
axis: v | h
```

## Examples

Here are some example that show the usage with specific space sizes.
```jade
div.spacer-box.-m-s
	div.aigis-debug Apply s margin on all sides
```
```jade
div.spacer-box.-p-v-xl
	div.aigis-debug Apply xl padding on vertical sides
```
```jade
div.spacer-box.-p-top-l
	div.aigis-debug Apply l padding on top side
```

Here are some examples that show the usage with default space size.

```jade
div.spacer-box.-p
	div.aigis-debug Apply default padding on all sides
```
```jade
div.spacer-box.-m-h
	div.aigis-debug Apply default margin on horizontal axis
```
```jade
div.spacer-box.-m-bottom
	div.aigis-debug Apply default margin on bottom side
```

## Auto margin

For setting the vertical margin to auto the `.-auto` variant can be used.

```jade
div.spacer-box.-auto(style="width: 200px")
	div.aigis-debug Apply margin auto to left and right
```

*/
.spacer-box.-m-top-xxs {
  margin-top: 0.125rem;
}
.spacer-box.-p-top-xxs {
  padding-top: 0.125rem;
}
.spacer-box.-m-right-xxs {
  margin-right: 0.125rem;
}
.spacer-box.-p-right-xxs {
  padding-right: 0.125rem;
}
.spacer-box.-m-bottom-xxs {
  margin-bottom: 0.125rem;
}
.spacer-box.-p-bottom-xxs {
  padding-bottom: 0.125rem;
}
.spacer-box.-m-left-xxs {
  margin-left: 0.125rem;
}
.spacer-box.-p-left-xxs {
  padding-left: 0.125rem;
}
.spacer-box.-m-h-xxs {
  margin-left: 0.125rem;
  margin-right: 0.125rem;
}
.spacer-box.-m-v-xxs {
  margin-top: 0.125rem;
  margin-bottom: 0.125rem;
}
.spacer-box.-m-xxs {
  margin: 0.125rem 0.125rem;
}
.spacer-box.-p-h-xxs {
  padding-left: 0.125rem;
  padding-right: 0.125rem;
}
.spacer-box.-p-v-xxs {
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}
.spacer-box.-p-xxs {
  padding: 0.125rem 0.125rem;
}
.spacer-box.-m-top-xs {
  margin-top: 0.25rem;
}
.spacer-box.-p-top-xs {
  padding-top: 0.25rem;
}
.spacer-box.-m-right-xs {
  margin-right: 0.25rem;
}
.spacer-box.-p-right-xs {
  padding-right: 0.25rem;
}
.spacer-box.-m-bottom-xs {
  margin-bottom: 0.25rem;
}
.spacer-box.-p-bottom-xs {
  padding-bottom: 0.25rem;
}
.spacer-box.-m-left-xs {
  margin-left: 0.25rem;
}
.spacer-box.-p-left-xs {
  padding-left: 0.25rem;
}
.spacer-box.-m-h-xs {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}
.spacer-box.-m-v-xs {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}
.spacer-box.-m-xs {
  margin: 0.25rem 0.25rem;
}
.spacer-box.-p-h-xs {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}
.spacer-box.-p-v-xs {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}
.spacer-box.-p-xs {
  padding: 0.25rem 0.25rem;
}
.spacer-box.-m-top-s {
  margin-top: 0.5rem;
}
.spacer-box.-p-top-s {
  padding-top: 0.5rem;
}
.spacer-box.-m-right-s {
  margin-right: 0.5rem;
}
.spacer-box.-p-right-s {
  padding-right: 0.5rem;
}
.spacer-box.-m-bottom-s {
  margin-bottom: 0.5rem;
}
.spacer-box.-p-bottom-s {
  padding-bottom: 0.5rem;
}
.spacer-box.-m-left-s {
  margin-left: 0.5rem;
}
.spacer-box.-p-left-s {
  padding-left: 0.5rem;
}
.spacer-box.-m-h-s {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}
.spacer-box.-m-v-s {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}
.spacer-box.-m-s {
  margin: 0.5rem 0.5rem;
}
.spacer-box.-p-h-s {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.spacer-box.-p-v-s {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.spacer-box.-p-s {
  padding: 0.5rem 0.5rem;
}
.spacer-box.-m-top {
  margin-top: 1rem;
}
.spacer-box.-p-top {
  padding-top: 1rem;
}
.spacer-box.-m-right {
  margin-right: 1rem;
}
.spacer-box.-p-right {
  padding-right: 1rem;
}
.spacer-box.-m-bottom {
  margin-bottom: 1rem;
}
.spacer-box.-p-bottom {
  padding-bottom: 1rem;
}
.spacer-box.-m-left {
  margin-left: 1rem;
}
.spacer-box.-p-left {
  padding-left: 1rem;
}
.spacer-box.-m-h {
  margin-left: 1rem;
  margin-right: 1rem;
}
.spacer-box.-m-v {
  margin-top: 1rem;
  margin-bottom: 1rem;
}
.spacer-box.-m {
  margin: 1rem 1rem;
}
.spacer-box.-p-h {
  padding-left: 1rem;
  padding-right: 1rem;
}
.spacer-box.-p-v {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.spacer-box.-p {
  padding: 1rem 1rem;
}
.spacer-box.-m-top-l {
  margin-top: 2rem;
}
.spacer-box.-p-top-l {
  padding-top: 2rem;
}
.spacer-box.-m-right-l {
  margin-right: 2rem;
}
.spacer-box.-p-right-l {
  padding-right: 2rem;
}
.spacer-box.-m-bottom-l {
  margin-bottom: 2rem;
}
.spacer-box.-p-bottom-l {
  padding-bottom: 2rem;
}
.spacer-box.-m-left-l {
  margin-left: 2rem;
}
.spacer-box.-p-left-l {
  padding-left: 2rem;
}
.spacer-box.-m-h-l {
  margin-left: 2rem;
  margin-right: 2rem;
}
.spacer-box.-m-v-l {
  margin-top: 2rem;
  margin-bottom: 2rem;
}
.spacer-box.-m-l {
  margin: 2rem 2rem;
}
.spacer-box.-p-h-l {
  padding-left: 2rem;
  padding-right: 2rem;
}
.spacer-box.-p-v-l {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
.spacer-box.-p-l {
  padding: 2rem 2rem;
}
.spacer-box.-m-top-xl {
  margin-top: 4rem;
}
.spacer-box.-p-top-xl {
  padding-top: 4rem;
}
.spacer-box.-m-right-xl {
  margin-right: 4rem;
}
.spacer-box.-p-right-xl {
  padding-right: 4rem;
}
.spacer-box.-m-bottom-xl {
  margin-bottom: 4rem;
}
.spacer-box.-p-bottom-xl {
  padding-bottom: 4rem;
}
.spacer-box.-m-left-xl {
  margin-left: 4rem;
}
.spacer-box.-p-left-xl {
  padding-left: 4rem;
}
.spacer-box.-m-h-xl {
  margin-left: 4rem;
  margin-right: 4rem;
}
.spacer-box.-m-v-xl {
  margin-top: 4rem;
  margin-bottom: 4rem;
}
.spacer-box.-m-xl {
  margin: 4rem 4rem;
}
.spacer-box.-p-h-xl {
  padding-left: 4rem;
  padding-right: 4rem;
}
.spacer-box.-p-v-xl {
  padding-top: 4rem;
  padding-bottom: 4rem;
}
.spacer-box.-p-xl {
  padding: 4rem 4rem;
}
.spacer-box.-auto {
  margin-left: auto;
  margin-right: auto;
}
/*
---
name: .svg-icon
category: Components/.svg-icon
template: icons
tag:
 - component
 - symbol
 - icon
 - media
 - svg
compile: true
---

Defines common SVG icon/symbol sizes and presentation styles.

## Default

The <span class="variable">-default</span> variant applies automatically (but can be specified explicitly if desired).

```jade
div(style="display: inline-block; border: solid 1px #ccc;")
  svg.svg-icon
    use(xlink:href="#stars-icon")

div(style="display: inline-block; border: solid 1px #ccc;")
  svg.svg-icon.-default
    use(xlink:href="#stars-icon")
```

## -scale

The <span class="variable">-span</span> variant will automatically fit (scale & center) the SVG icon into its parent container.

```jade
div(style="display:inline-block; border: solid 1px #ccc; width:50px; height:100px")
  svg.svg-icon.-scale
    use(xlink:href="#stars-icon")

div(style="display:inline-block; border: solid 1px #ccc; width:200px; height:100px")
  svg.svg-icon.-scale
    use(xlink:href="#stars-icon")
```


*/
.svg-icon {
  fill: currentColor;
  display: block;
}
.svg-icon.-inline {
  display: inline-block;
}
/*
---
name: .text-style
category: Components/.text-style
tag:
 - component
 - text
compile: true
---

A text styling component for different text styles

## Default heading

```jade
div.text-style Default heading
```

## H1
```jade
div.text-style.-h1 The h1 header

```

## H2
```jade
div.text-style.-h2 The h2 header
```

## H3
```jade
div.text-style.-h3 The h3 header
```

## Bold
```jade
div.text-style.-bold Bold text
```

## Align center
```jade
div.text-style.-center Centered text
```

## Align right
```jade
div.text-style.-right Right aligned text
```

*/
/*
---
name: .transform-box
category: Components/.transform-box
tag:
 - component
 - transform
 - box-model
compile: true
---

A box to control common transformations

## Rotate
```jade
div.transform-box.-rot90 Some demo content
div.transform-box.-rot180 Some demo content
div.transform-box.-rot270 Some demo content
```

## Flip
```jade
div.transform-box.-flipX Some demo content
div.transform-box.-flipY Some demo content
```
*/
.transform-box.-rot90 {
  transform: rotate(90deg);
}
.transform-box.-rot180 {
  transform: rotate(180deg);
}
.transform-box.-rot270 {
  transform: rotate(270deg);
}
.transform-box.-flipX {
  transform: scaleX(-1);
}
.transform-box.-flipY {
  transform: scaleY(-1);
}
/*
---
name: .transition-box
category: Components/.transition-box
tag:
 - component
 - transition
 - box-model
compile: true
---

A box to control transition on divs

## Enable all transitions
```jade
div.transition-box.-all All transitions enabled
```

## Control the speed of the transition
```jade
div.transition-box.-all.-slow Apply the slow duration variant
div.transition-box.-all.-fast Apply the fast duration variant
```
*/
.transition-box {
  transition-duration: 0.3s;
  transition-property: all;
}
.transition-box.-slow {
  transition-duration: 0.6s;
}
.transition-box.-fast {
  transition-duration: 0.15s;
}
._clear {
  clear: both;
}
@media (min-width: 32.0625rem) {
  ._collapsed-medium {
    visibility: collapse;
  }
}
._hidden {
  display: none !important;
}
._overflow-hidden {
  overflow: hidden;
}
._relative {
  position: relative;
}
.button-style {
  white-space: inherit;
}
.button-style.-toggle {
  background-color: #fff;
  border: solid 0.083125rem #06305f;
  border-radius: 0.5rem;
  color: #06305f;
  padding: 0.25rem 1rem;
  transition: background 0.1s ease, color 0.1s ease;
}
@media (min-width: 32.0625rem) {
  .button-style.-toggle {
    padding: 0.5rem 2rem;
    border-width: 0.09375rem;
  }
}
.button-style.-toggle.-selected,
.button-style.-toggle:hover {
  background: #06305f;
  color: #fff;
}
.button-style.-toggle.-selected {
  cursor: inherit;
}
.button-style.-boink:hover {
  -webkit-animation: boink 0.33s ease;
          animation: boink 0.33s ease;
}
@-webkit-keyframes boink {
  0% {
    transform: none;
  }
  50% {
    transform: scale(1.075);
  }
  100% {
    transform: none;
  }
}
@keyframes boink {
  0% {
    transform: none;
  }
  50% {
    transform: scale(1.075);
  }
  100% {
    transform: none;
  }
}
@media (min-width: 32.0625rem) {
  .content-item-layout > .content-item.-block.-float {
    margin-bottom: 1.25rem;
  }
  .content-item-layout > .content-item.-block.-float.-left {
    float: left;
    margin-right: 2rem;
  }
  .content-item-layout > .content-item.-block.-float.-right {
    float: right;
    margin-left: 2rem;
  }
  .content-item-layout > .content-item.-block.-float.-w1-4 {
    max-width: 25%;
  }
  .content-item-layout > .content-item.-block.-float.-w1-3 {
    max-width: 33.33%;
  }
  .content-item-layout > .content-item.-block.-float.-w1-2 {
    max-width: 50%;
  }
  .content-item-layout > .content-item.-block.-float.-w2-3 {
    max-width: 66.66%;
  }
}
.content-item-layout > .content-item + .content-item {
  margin-top: 1.25rem;
}
.content-item-layout > .content-item + .content-item.-block:not(.-float) {
  margin-top: 2rem;
}
.content-item-layout > .content-item.-block:not(.-float) + .content-item:not(.-float) {
  margin-top: 2rem;
}
@media (min-width: 32.0625rem) {
  .content-item-layout > .content-item.-block:not(.-float) + .content-item:not(.-float) {
    margin-top: 3.75rem;
  }
}
.content-item-layout > .content-item.-heading + .content-item.-heading {
  margin-top: 0;
}
@media (min-width: 32.0625rem) {
  .content-item-layout > .content-item.-heading + .content-item.-para {
    margin-top: 2.8125rem;
  }
}
.content-item-layout > .content-item.-para + .content-item.-heading {
  margin-top: 2.8125rem;
}
@media (min-width: 32.0625rem) {
  .content-item-layout > .content-item.-para + .content-item.-heading {
    margin-top: 4.375rem;
  }
}
.content-style.-centered {
  max-width: 100%;
  padding-left: 2rem;
  padding-right: 2rem;
}
@media (min-width: 32.0625rem) {
  .content-style.-centered {
    max-width: 67.0625rem;
    margin-left: auto;
    margin-right: auto;
  }
}
.content-style.-fill {
  width: 100%;
  height: 100%;
}
.content-style.-narrow.-centered {
  max-width: 100%;
  padding-left: 2rem;
  padding-right: 2rem;
}
@media (min-width: 32.0625rem) {
  .content-style.-narrow.-centered {
    max-width: 51.875rem;
    margin-left: auto;
    margin-right: auto;
  }
}
.fixed-page-layout > .header {
  z-index: 2;
  height: 2.4375rem;
}
@media (min-width: 32.0625rem) {
  .fixed-page-layout > .header {
    height: 3.25rem;
  }
}
.fixed-page-layout > .content {
  z-index: 0;
  position: relative;
  min-height: 100vh;
}
.fixed-page-layout > .content.-margin-top {
  min-height: calc(100vh - 2.4375rem);
}
@media (min-width: 32.0625rem) {
  .fixed-page-layout > .content.-margin-top {
    min-height: calc(100vh - 3.25rem);
  }
}
.fixed-page-layout > .sidebar {
  z-index: 1;
  bottom: inherit;
  width: 100%;
  margin-top: 2.4375rem;
  transition: transform 0.25s ease, opacity 0.25s ease, visibility 0s ease 0.25s;
  opacity: 0;
  transform: translateY(-2.4375rem);
  visibility: collapse;
}
@media (min-width: 32.0625rem) {
  .fixed-page-layout > .sidebar {
    width: 23.4375rem;
  }
}
@media (min-width: 32.0625rem) {
  .fixed-page-layout > .sidebar {
    margin-top: 3.25rem;
  }
}
@media (min-width: 32.0625rem) {
  .fixed-page-layout > .sidebar {
    transform: translateY(-3.25rem);
  }
}
.fixed-page-layout > .sidebar.-show {
  opacity: 1;
  transform: translateY(-1px);
  visibility: visible;
  transition: visibility 0s, transform 0.25s ease, opacity 0.25s ease;
}
.horizontal-ruler {
  border: none;
  border-top: solid 1px #3f3f3f;
  margin: 0;
  padding: 0;
}
.horizontal-ruler.-short {
  width: 9.375rem;
  max-width: 50%;
}
.layer-box {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
}
.layer-box.-overflow {
  overflow: visible;
}
.list-style {
  list-style: none;
  margin-left: 0;
  padding-left: 0;
}
.list-style > li {
  margin-top: 1.25rem;
  margin-left: 4rem;
}
.list-style > li::before {
  display: inline-block;
  margin-left: -4rem;
  width: 4rem;
}
.list-style.-ordered {
  counter-reset: list;
}
.list-style.-ordered > li::before {
  counter-increment: list;
  content: counter(list, lower-alpha) ') ';
  color: #06305f;
  font-weight: 600;
}
.list-style.-unordered > li::before {
  content: '- ';
  text-align: right;
  padding-right: 1ch;
}
.menu {
  list-style: none;
  margin: 0;
}
.menu > .item {
  min-height: 3.75rem;
  transition: background-color 0.2s ease;
}
.menu > .item:hover {
  background-color: #f4f8fa;
}
.parallax-container {
  perspective: 1px;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  overflow-x: hidden;
  overflow-y: auto;
}
.parallax-container > .layer {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  height: 100%;
  overflow-y: visible;
}
.svg-icon {
  box-sizing: content-box;
  width: 1.5rem;
  height: 1.5rem;
}
.svg-icon.-stroke {
  stroke: currentColor;
}
.svg-icon.-fill {
  fill: currentColor;
}
.svg-icon.-back-arrow {
  left: 32px;
  width: 1.6875rem;
  height: 1.6875rem;
}
@media (min-width: 32.0625rem) {
  .svg-icon.-back-arrow {
    width: 2.8125rem;
    height: 2.8125rem;
  }
}
.svg-icon.-h2 {
  background: #06305f;
  border-radius: 100%;
  width: 4.1625rem;
  height: 4.1625rem;
}
@media (min-width: 32.0625rem) {
  .svg-icon.-h2 {
    width: 6.3125rem;
    height: 6.3125rem;
  }
}
.svg-icon.-menu-header {
  stroke: currentColor;
}
.svg-icon.-menu-header .line {
  transition: transform 0.33s ease;
  transform-origin: top left;
}
.svg-icon.-menu-header.-open .line.-tl {
  transform: translate(12px, 12px) rotate(-135deg) translate(-1px, -3px) scaleX(0.5);
}
.svg-icon.-menu-header.-open .line.-tr {
  transform: translate(12px, 12px) rotate(-45deg) translate(-1px, -9px) scaleX(0.5);
}
.svg-icon.-menu-header.-open .line.-bl {
  transform: translate(12px, 12px) rotate(-315deg) translate(-1px, -15px) scaleX(0.5);
}
.svg-icon.-menu-header.-open .line.-br {
  transform: translate(12px, 12px) rotate(-225deg) translate(-1px, -21px) scaleX(0.5);
}
.svg-icon.-menu-item {
  width: 1.875rem;
  height: 1.875rem;
  background: #06305f;
  border-radius: 100%;
}
.svg-icon.-logo-header {
  box-sizing: content-box;
  width: 2.493125rem;
  height: 1.499375rem;
}
@media (min-width: 32.0625rem) {
  .svg-icon.-logo-header {
    width: 3.523125rem;
    height: 2.119375rem;
  }
}
.svg-icon.-xl {
  width: 3rem;
  height: 3rem;
}
.svg-icon.-xxl {
  width: 4.5rem;
  height: 4.5rem;
}
.svg-icon.-topic-overview-tile {
  width: 4.5rem;
  height: 4.5rem;
}
@media (min-width: 32.0625rem) {
  .svg-icon.-topic-overview-tile {
    width: 8rem;
    height: 8rem;
  }
}
.svg-icon.-topic-overview-nudge-up {
  transform: translateY(-0.09375rem);
}
.table-style {
  border-collapse: collapse;
}
.table-style td,
.table-style th,
.table-style tr {
  border: none 1px #000;
  padding: 0.375rem 0.75rem;
  text-align: left;
}
.table-style.-no-vertical-lines td,
.table-style.-no-vertical-lines th,
.table-style.-no-vertical-lines tr {
  border-left: none 0px;
  border-right: none 0px;
}
.table-style td:not(:last-child),
.table-style th:not(:last-child) {
  border-right-style: solid;
}
.table-style tr {
  border-bottom-style: solid;
}
.table-style.-border {
  border: solid 1px #000 !important;
}
.table-style .-border {
  border-style: solid;
}
.table-style .-no-border {
  border-style: none;
}
.table-style .-border-top {
  border-top-style: solid !important;
}
.table-style .-no-border-top {
  border-top-style: none !important;
}
.table-style .-border-left {
  border-left-style: solid !important;
}
.table-style .-no-border-left {
  border-left-style: none !important;
}
.table-style .-border-bottom {
  border-bottom-style: solid !important;
}
.table-style .-no-border-bottom {
  border-bottom-style: none !important;
}
.table-style .-border-right {
  border-right-style: solid !important;
}
.table-style .-no-border-right {
  border-right-style: none !important;
}
.table-style .-border-h {
  border-left-style: solid !important;
  border-right-style: solid !important;
}
.table-style .-no-border-h {
  border-left-style: none !important;
  border-right-style: none !important;
}
.table-style .-border-v {
  border-top-style: solid !important;
  border-bottom-style: solid !important;
}
.table-style .-no-border-v {
  border-top-style: none !important;
  border-bottom-style: none !important;
}
.text-style.-button {
  font-weight: 500;
  font-size: 0.8125rem;
  line-height: 1.125rem;
}
@media (min-width: 32.0625rem) {
  .text-style.-button {
    font-size: 1.125rem;
    line-height: 1.5625rem;
  }
}
.text-style.-h1 {
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.046875rem;
}
@media (min-width: 32.0625rem) {
  .text-style.-h1 {
    font-size: 3.125rem;
    line-height: 4.25rem;
    letter-spacing: 0.15625rem;
  }
}
.text-style.-h1-header {
  font-weight: 900;
  font-size: 0.9375rem;
  line-height: 1.25rem;
  text-transform: uppercase;
  letter-spacing: 0.046875rem;
}
@media (min-width: 32.0625rem) {
  .text-style.-h1-header {
    font-size: 1.875rem;
    line-height: 2.5625rem;
    letter-spacing: 0.09375rem;
  }
}
.text-style.-h1-sub {
  font-weight: 600;
}
@media (min-width: 32.0625rem) {
  .text-style.-h1-sub {
    font-size: 1.25rem;
    line-height: 1.6875rem;
  }
}
.text-style.-h2 {
  font-weight: 900;
  font-size: 1.25rem;
  line-height: 1.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.08875rem;
}
@media (min-width: 32.0625rem) {
  .text-style.-h2 {
    font-size: 2.25rem;
    line-height: 3.0625rem;
    letter-spacing: 0.15625rem;
  }
}
.text-style.-h2-sub {
  font-weight: 500;
  font-size: 1.125rem;
  line-height: 1.5625rem;
}
@media (min-width: 32.0625rem) {
  .text-style.-h2-sub {
    font-size: 1.375rem;
    line-height: 1.875rem;
  }
}
.text-style.-h3 {
  font-weight: 800;
  font-size: 0.875rem;
  line-height: 1.1875rem;
}
@media (min-width: 32.0625rem) {
  .text-style.-h3 {
    font-size: 1.125rem;
    line-height: 1.4375rem;
  }
}
.text-style.-para {
  font-weight: 400;
  font-size: 0.8125rem;
  line-height: 1.0625rem;
}
@media (min-width: 32.0625rem) {
  .text-style.-para {
    font-size: 1.125rem;
    line-height: 1.5rem;
  }
}
.text-style.-block-caption {
  font-weight: 400;
  font-size: 0.75rem;
  line-height: 1rem;
}
@media (min-width: 32.0625rem) {
  .text-style.-block-caption {
    font-size: 0.875rem;
    line-height: 1.25rem;
  }
}
.text-style.-em {
  font-weight: 600;
}
.text-style.-color-primary {
  color: #06305f;
}
.text-style.-color-primary-dark {
  color: #182a49;
}
.text-style.-color-text {
  color: #000;
}
.text-style.-color-white {
  color: #fff;
}
.text-style.-label {
  font-weight: 500;
  font-size: 0.875rem;
  line-height: 1.1875rem;
}
@media (min-width: 32.0625rem) {
  .text-style.-label {
    font-size: 1.125rem;
    line-height: 1.5625rem;
  }
}
.text-style.-link {
  font-weight: 500;
}
.text-style.-menu-item {
  font-weight: 600;
  font-size: 1.0625rem;
  line-height: 1.0625rem;
}
.text-style.-topic-overview-item {
  font-weight: 600;
  font-size: 0.75rem;
  line-height: 1rem;
  text-align: center;
}
@media (min-width: 32.0625rem) {
  .text-style.-topic-overview-item {
    font-weight: 800;
    font-size: 1.25rem;
    line-height: 1.6875rem;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy92YXJpYWJsZXMvY29sb3JzLnZhci5zdHlsIiwibWFpbi5jc3MiLCIuLi9ub2RlX21vZHVsZXMvQGxlcm5ldHovY3NzLWxpYi9zcmMvdmFyaWFibGVzL2Z1bmN0aW9ucy52YXIuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy92YXJpYWJsZXMvc2V0dGluZ3MudmFyLnN0eWwiLCJ2YXJpYWJsZXMvc2V0dGluZ3MudmFyLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvQGxlcm5ldHovY3NzLWxpYi9zcmMvcmVzZXQuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9oZWxwZXJzLnN0eWwiLCJjb21wb25lbnRzL2J1dHRvbi1zdHlsZS5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL0BsZXJuZXR6L2Nzcy1saWIvc3JjL2NvbXBvbmVudHMvYWJzLWxheW91dC9hYnMtbGF5b3V0LnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvQGxlcm5ldHovY3NzLWxpYi9zcmMvY29tcG9uZW50cy9ib3JkZXItYm94L2JvcmRlci1ib3guc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9jb21wb25lbnRzL2J1dHRvbi1zdHlsZS9idXR0b24tc3R5bGUuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9jb21wb25lbnRzL2NvbG9yLWJveC9jb2xvci1ib3guc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9jb21wb25lbnRzL2Rpc3BsYXktcmVzcG9uc2l2ZS9kaXNwbGF5LXJlc3BvbnNpdmUuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9jb21wb25lbnRzL2ZpeGVkLWxheW91dC9maXhlZC1sYXlvdXQuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9jb21wb25lbnRzL2ZpeGVkLXBhZ2UtbGF5b3V0L2ZpeGVkLXBhZ2UtbGF5b3V0LnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvQGxlcm5ldHovY3NzLWxpYi9zcmMvY29tcG9uZW50cy9mbGV4LWxheW91dC9mbGV4LWxheW91dC5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL0BsZXJuZXR6L2Nzcy1saWIvc3JjL2NvbXBvbmVudHMvZ3JpZC1sYXlvdXQvZ3JpZC1sYXlvdXQuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9jb21wb25lbnRzL2ltYWdlLXJlc3BvbnNpdmUvaW1hZ2UtcmVzcG9uc2l2ZS5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL0BsZXJuZXR6L2Nzcy1saWIvc3JjL2NvbXBvbmVudHMvbWF4LXdpZHRoLWxheW91dC9tYXgtd2lkdGgtbGF5b3V0LnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvQGxlcm5ldHovY3NzLWxpYi9zcmMvY29tcG9uZW50cy9tZWRpYS1yZXNwb25zaXZlL21lZGlhLXJlc3BvbnNpdmUuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9jb21wb25lbnRzL292ZXJmbG93LXRleHQvb3ZlcmZsb3ctdGV4dC5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL0BsZXJuZXR6L2Nzcy1saWIvc3JjL2NvbXBvbmVudHMvc2hhZG93LWJveC9zaGFkb3ctYm94LnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvQGxlcm5ldHovY3NzLWxpYi9zcmMvY29tcG9uZW50cy9zcGFjZXItYm94L3NwYWNlci1ib3guc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9jb21wb25lbnRzL3N2Zy1pY29uL3N2Zy1pY29uLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvQGxlcm5ldHovY3NzLWxpYi9zcmMvY29tcG9uZW50cy90ZXh0LXN0eWxlL3RleHQtc3R5bGUuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9AbGVybmV0ei9jc3MtbGliL3NyYy9jb21wb25lbnRzL3RyYW5zZm9ybS1ib3gvdHJhbnNmb3JtLWJveC5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL0BsZXJuZXR6L2Nzcy1saWIvc3JjL2NvbXBvbmVudHMvdHJhbnNpdGlvbi1ib3gvdHJhbnNpdGlvbi1ib3guc3R5bCIsImNvbXBvbmVudHMvX2hlbHBlcnMuc3R5bCIsIm1peGlucy92aWV3cG9ydC52YXIuc3R5bCIsImNvbXBvbmVudHMvY29udGVudC1pdGVtLWxheW91dC5zdHlsIiwiY29tcG9uZW50cy9jb250ZW50LXN0eWxlLnN0eWwiLCJjb21wb25lbnRzL2ZpeGVkLXBhZ2UtbGF5b3V0LnN0eWwiLCJjb21wb25lbnRzL2hvcml6b250YWwtcnVsZXIuc3R5bCIsImNvbXBvbmVudHMvbGF5ZXItYm94LnN0eWwiLCJjb21wb25lbnRzL2xpc3Qtc3R5bGUuc3R5bCIsImNvbXBvbmVudHMvbWVudS5zdHlsIiwiY29tcG9uZW50cy9wYXJhbGxheC1jb250YWluZXIuc3R5bCIsImNvbXBvbmVudHMvc3ZnLWljb24uc3R5bCIsImNvbXBvbmVudHMvdGFibGUtc3R5bGUuc3R5bCIsImNvbXBvbmVudHMvdGV4dC1zdHlsZS5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0NvQ0M7QUNwQ0Q7Ozs7Ozs7Ozs7Ozs7OztDRG9EQztBQzlCRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NENkRDO0FFbkZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NGZ0hDO0FHaEhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDSDJJQztBSTNJRDs7Ozs7Ozs7Ozs7Ozs7Q0owSkM7QUl2SUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQVlDLFNBQU87RUFDUCxVQUFRO0VBQ1IsU0FBTztFQUNQLFVBQVE7RUFDUixrQkFBVTtFQUNWLG9CQUFZO0VBQ1osd0JBQWU7QUprTWhCO0FJL0xBO0VBQ0MsZUFBVztBSmlNWjtBSTlMQTtFQUNDLGVBQVc7QUpnTVo7QUk3TEE7RUFDQyxtQkFBNEI7RUFDNUIsV0FBb0I7RUFDcEIsa0NBQTRCO0VBQzVCLGtDQUErQjtFQUMvQixzQkFBK0I7RUFDL0IsbUNBQXdCO0FKK0x6QjtBSTVMQTs7Ozs7Ozs7Ozs7RUFFQyxjQUFRO0FKdU1UO0FJbk1BO0VBQ0Msc0JBQWU7QUpxTWhCO0FJbE1BO0VBQ0MsV0FBTTtBSm9NUDtBSWpNQTtFQUNDLHlCQUFnQjtFQUNoQixpQkFBZTtBSm1NaEI7QUl6TEE7Ozs7O0VBS0UsY0FBTztFQUNQLGFBQU07RUFDTixTQUFRO0FKMkxWO0FJbkxBOztFQUVFLFNBQVE7RUFDUixVQUFTO0FKcUxYO0FJektBO0VBQ0Usc0JBQVk7QUoyS2Q7QUl6S0E7OztFQUNFLG1CQUFZO0FKNktkO0FJM0tBO0VBQ0MscUJBQWlCO0VBQ2pCLGNBQU87QUo2S1I7QUkzS0E7RUFDQyxjQUFTO0FKNktWO0FJM0tBOztFQUNDLG9CQUFhO0FKOEtkO0FLN1NBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0x1V0M7QUt4U087RUFDYSxVQUFHO0FMMFN4QjtBSzNTUTtFQUNhLFVBQUc7QUw2U3hCO0FLOVNRO0VBQ2EsVUFBRztBTGdUeEI7QUtqVFE7RUFDYSxVQUFHO0FMbVR4QjtBS3BUUTtFQUNhLFVBQUc7QUxzVHhCO0FLdlRRO0VBQ2EsVUFBRztBTHlUeEI7QUsxVFE7RUFDYSxrQkFBRztBTDRUeEI7QUs3VFE7RUFDYSxrQkFBRztBTCtUeEI7QUtoVVE7RUFDYSxlQUFHO0FMa1V4QjtBS25VUTtFQUNhLGdCQUFHO0FMcVV4QjtBS3RVUTtFQUNhLGdCQUFHO0FMd1V4QjtBS3pVUTtDTDJVUDtJTS9YSyxvQkFBUztJQUNULHdCQUFjO0VOaVlsQjtFSzdVbUIsU0FBRztBTCtVeEI7QUtoVlE7RUFDYSxxQkFBRztBTGtWeEI7QUtuVlE7RUFDYSxlQUFHO0FMcVZ4QjtBS3RWUTtFQUNhLGFBQUc7QUx3VnhCO0FLelZRO0VBQ2Esb0JBQUc7QUwyVnhCO0FLNVZRO0VBQ2EsY0FBRztBTDhWeEI7QUsvVlE7RUFDYSxrQkFBRztBTGlXeEI7QUtsV1E7RUFDYSxtQkFBRztBTG9XeEI7QUtyV1E7RUFDYSxhQUFHO0FMdVd4QjtBS3hXUTtFQUNhLG1CQUFHO0FMMFd4QjtBSzNXUTtFQUNhLGtCQUFHO0FMNld4QjtBTzdhQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDUG9mQztBTzVhRDtFQUVJLGtCQUFVO0FQNmFkO0FPM2FJO0VBQ0ksV0FBTztFQUNQLFlBQVE7QVA2YWhCO0FPMWFJO0VBRUksa0JBQVU7QVAyYWxCO0FPemFRO0VBQ0ksTUFBSztBUDJhakI7QU94YVE7RUFDSSxRQUFPO0FQMGFuQjtBT3ZhUTtFQUNJLFNBQVE7QVB5YXBCO0FPdGFRO0VBQ0ksT0FBTTtBUHdhbEI7QU9yYVE7RUFDSSxRQUFLO0VBQ0wsMkJBQVc7QVB1YXZCO0FPcGFRO0VBQ0ksU0FBTTtFQUNOLDJCQUFXO0FQc2F2QjtBT25hUTtFQUNJLFFBQUs7RUFDTCxTQUFNO0VBQ04sZ0NBQVc7QVBxYXZCO0FPbGFRO0VBQ0ksTUFBSztFQUNMLE9BQU07RUFDTixXQUFPO0VBQ1AsWUFBUTtBUG9hcEI7QU9oYVk7RUFDSSxVQUFTO0FQa2F6QjtBT25hWTtFQUNJLFVBQVM7QVBxYXpCO0FPdGFZO0VBQ0ksVUFBUztBUHdhekI7QU96YVk7RUFDSSxVQUFTO0FQMmF6QjtBTzVhWTtFQUNJLFVBQVM7QVA4YXpCO0FPL2FZO0VBQ0ksVUFBUztBUGliekI7QU9sYlk7RUFDSSxVQUFTO0FQb2J6QjtBT3JiWTtFQUNJLFVBQVM7QVB1YnpCO0FPeGJZO0VBQ0ksVUFBUztBUDBiekI7QU8zYlk7RUFDSSxXQUFTO0FQNmJ6QjtBUTNqQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q1Ira0JDO0FRN2lCZTtFQUNFLHVCQUFRO0VBbkNsQixpQkFBYTtFQUFJLHFCQUFhO0FSb2xCdEM7QVFsakJnQjtFQUNFLHlCQUFRO0VBbkNsQixpQkFBYTtFQUFJLHFCQUFhO0FSeWxCdEM7QVF2akJnQjs7RUFDRSwwQkFBUTtFQW5DbEIsaUJBQWE7RUFBSSxxQkFBYTtBUitsQnRDO0FRN2pCZ0I7RUFDRSx3QkFBUTtFQW5DbEIsaUJBQWE7RUFBSSxxQkFBYTtBUm9tQnRDO0FRcmpCRztFQUNDLG1CQUFjO0VBaERWLGlCQUFhO0VBQUkscUJBQWE7QVJ5bUJ0QztBUTVrQmdCO0VBQ0UsdUJBQVE7RUE5QmxCLHFCQUFhO0FSNm1CckI7QVFobEJnQjtFQUNFLHlCQUFRO0VBOUJsQixxQkFBYTtBUmluQnJCO0FRcGxCZ0I7RUFDRSwwQkFBUTtFQTlCbEIscUJBQWE7QVJxbkJyQjtBUXhsQmdCO0VBQ0Usd0JBQVE7RUE5QmxCLHFCQUFhO0FSeW5CckI7QVEva0JHO0VBQ0MsbUJBQWM7RUEzQ1YscUJBQWE7QVI2bkJyQjtBUWhtQmdCO0VBQ0UsdUJBQVE7RUE5QmxCLGlCQUFhO0VBQUkscUJBQWE7QVJrb0J0QztBUXJtQmdCO0VBQ0UseUJBQVE7RUE5QmxCLGlCQUFhO0VBQUkscUJBQWE7QVJ1b0J0QztBUTFtQmdCO0VBQ0UsMEJBQVE7RUE5QmxCLGlCQUFhO0VBQUkscUJBQWE7QVI0b0J0QztBUS9tQmdCO0VBQ0Usd0JBQVE7RUE5QmxCLGlCQUFhO0VBQUkscUJBQWE7QVJpcEJ0QztBUXZtQkc7RUFDQyxtQkFBYztFQTNDVixpQkFBYTtFQUFJLHFCQUFhO0FSc3BCdEM7QVF6bkJnQjtFQUNFLHVCQUFRO0VBOUJsQix3QkFBYTtBUjBwQnJCO0FRN25CZ0I7RUFDRSx5QkFBUTtFQTlCbEIsd0JBQWE7QVI4cEJyQjtBUWpvQmdCO0VBQ0UsMEJBQVE7RUE5QmxCLHdCQUFhO0FSa3FCckI7QVFyb0JnQjtFQUNFLHdCQUFRO0VBOUJsQix3QkFBYTtBUnNxQnJCO0FRNW5CRztFQUNDLG1CQUFjO0VBM0NWLHdCQUFhO0FSMHFCckI7QVE3b0JnQjtFQUNFLHVCQUFRO0FSK29CMUI7QVE3cUI0RDtFQUFBO0lBQUcseUJBQWE7RVJpckIxRTtBQUNGO0FRcnBCZ0I7RUFDRSx5QkFBUTtBUnVwQjFCO0FRcnJCNEQ7RUFBQTtJQUFHLHlCQUFhO0VSeXJCMUU7QUFDRjtBUTdwQmdCO0VBQ0UsMEJBQVE7QVIrcEIxQjtBUTdyQjREO0VBQUE7SUFBRyx5QkFBYTtFUmlzQjFFO0FBQ0Y7QVFycUJnQjtFQUNFLHdCQUFRO0FSdXFCMUI7QVFyc0I0RDtFQUFBO0lBQUcseUJBQWE7RVJ5c0IxRTtBQUNGO0FRaHFCRztFQUNDLG1CQUFjO0FSa3FCbEI7QVE3c0I0RDtFQUFBO0lBQUcseUJBQWE7RVJpdEIxRTtBQUNGO0FRNXBCQztFQUNDLGtCQUFlO0FSOHBCakI7QVNydEJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NUcXZCQztBU3J0QkQ7RUFFQyx3QkFBWTtLQUFaLHFCQUFZO1VBQVosZ0JBQVk7RUFDWix1QkFBWTtFQUNaLFlBQVE7RUFDUixxQkFBUztFQUNULGVBQVE7RUFDUixhQUFTO0VBQ1QsbUJBQWE7RUFFYixhQUFTO0VBQ1QsbUJBQWE7QVRxdEJkO0FTanRCRTtFQS9DTSxXQUFNO0VBQUsseUJBQWlCO0VBQVEsb0JBQVE7QVRxd0JwRDtBU3J3QjBFO0VBQVMsV0FBTTtFQUFLLHlCQUFpQjtBVHl3Qi9HO0FTMXRCRTtFQS9DOEIsb0JBQVc7QVQ0d0IzQztBUzV3QlE7RUFBUyxjQUFNO0FUK3dCdkI7QVNodUJFO0VBL0NNLGVBQU87RUFBUSx5QkFBaUI7QVRteEJ4QztBVW54QkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NWbTBCQztBVTl3Qk87RUFyREEsc0JBQWlCO0VBQUssY0FBTTtBVnUwQnBDO0FVbHhCUTtFQXJEQSx5QkFBaUI7RUFBUSxXQUFNO0FWMjBCdkM7QVV0eEJRO0VBckRBLHNCQUFpQjtFQUFLLFdBQU07QVYrMEJwQztBVTF4QlE7RUFyREEsc0JBQWlCO0VBQUssV0FBTTtBVm0xQnBDO0FVOXhCUTtFQXJEQSw2QkFBaUI7RUFBWSx5QkFBYTtFQUFZLFdBQU07RUFBSywwQkFBVztBVnkxQnBGO0FVcHlCUTtFQXJEQSx5QkFBaUI7RUFBUSxrQkFBYTtFQUFLLFdBQU07RUFBSywwQkFBVztBVisxQnpFO0FVMXlCUTtFQXJEQSxzQkFBaUI7RUFBa0gsa0JBQWE7RUFBSyxXQUFNO0VBQUssMEJBQVc7QVZxMkJuTDtBVXIyQm1FO0VBQUE7SUFBRyx3Q0FBaUI7SUFBdUIsb0NBQWdCO1lBQWhCLDRCQUFnQjtFVjAyQjVIO0FBQ0Y7QVczMkJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NYdzRCQztBV24yQnlDO0VBQUE7SUFDdEMsYUFBUztFWHMyQlg7QUFDRjtBV24yQjBDO0VBQUE7SUFDdEMsYUFBUztFWHMyQlg7QUFDRjtBVzcyQjBDO0VBQUE7SUFDdEMsYUFBUztFWGczQlg7QUFDRjtBVzcyQjBDO0VBQUE7SUFDdEMsYUFBUztFWGczQlg7QUFDRjtBV3YzQjBDO0VBQUE7SUFDdEMsYUFBUztFWDAzQlg7QUFDRjtBV3YzQjBDO0VBQUE7SUFDdEMsYUFBUztFWDAzQlg7QUFDRjtBWXQ2QkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q1ptOEJDO0FZcjZCRDtFQUVJLGVBQVM7QVpzNkJiO0FZcDZCSTtFQUNJLE1BQUs7QVpzNkJiO0FZbjZCSTtFQUNJLFNBQVE7QVpxNkJoQjtBWWw2Qkk7RUFDSSxPQUFNO0FabzZCZDtBWWo2Qkk7RUFDSSxRQUFPO0FabTZCZjtBYWw5QkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NiNC9CQztBYTc4QkE7RUFDQyxlQUFVO0VBQ1YsTUFBSztFQUNMLE9BQU07RUFDTixRQUFPO0VBU0QsZ0JBQVE7QWJ1OEJoQjtBYTM4QlE7RUFDRSxnQkFBUTtBYjY4QmxCO0FhdDhCRTtFQUNDLDRCQUFXO0FidzhCZDtBYXA4QkM7RUFDQyxlQUFVO0VBQ1YsTUFBSztFQUNMLFNBQVE7RUFTRixpQkFBTztBYjg3QmY7QWFsOEJRO0VBQ0UsZUFBTztBYm84QmpCO0FhdDdCUTtFQUNFLGFBQUs7QWJ3N0JmO0FhNzdCUTtFQUNFLGFBQUs7QWIrN0JmO0FhdDdCRTtFQUNDLE9BQU07QWJ3N0JUO0FhdDdCRztFQUNDLDRCQUFXO0FidzdCZjtBYXA3QkU7RUFDQyxRQUFPO0FiczdCVjtBYXA3Qkc7RUFDQywyQkFBVztBYnM3QmY7QWFyNkJRO0VBQ0Usd0JBQWM7QWJ1NkJ4QjtBYXI2QlE7RUFDRSx1QkFBYTtBYnU2QnZCO0FhbDdCUTtFQUNFLHNCQUFjO0FibzdCeEI7QWFsN0JRO0VBQ0UscUJBQWE7QWJvN0J2QjtBYWo2QlE7RUFDRSxvQkFBWTtBYm02QnRCO0FheDZCUTtFQUNFLG9CQUFZO0FiMDZCdEI7QWN0akNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NkNndDQztBY3JqQ0Q7RUFFQyxhQUFTO0Fkc2pDVjtBY3BqQ0M7RUFDQyxvQkFBUztBZHNqQ1g7QWNuakNDO0VBQ0MsZUFBVztBZHFqQ2I7QWNsakNDO0VBQ0MsaUJBQVc7QWRvakNiO0FjbGpDRTtFQUNDLGNBQU07QWRvakNUO0FjaGpDQztFQUNDLHNCQUFnQjtBZGtqQ2xCO0FjL2lDQztFQUNDLHVCQUFpQjtFQUNqQixtQkFBYTtFQUNiLHFCQUFlO0FkaWpDakI7QWM5aUNDO0VBQ0MscUJBQWE7QWRnakNmO0FjN2lDQztFQUNDLDJCQUFpQjtBZCtpQ25CO0FjNWlDQztFQUNDLHlCQUFpQjtBZDhpQ25CO0FjM2lDQztFQUNDLHlCQUFlO0FkNmlDakI7QWMxaUNDO0VBQ0MsdUJBQWU7QWQ0aUNqQjtBY3ppQ0M7RUFDQyxx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O0lXbUdwRCxtQkFBVztJQUNYLG9CQUFhO0V0Q292RmpCO0FBQ0Y7QXNDaHZGRTtFQUNFLGdCQUFhO0F0Q2t2RmpCO0FzQzl1RkU7RUFDRSxjQUFvQjtBdENndkZ4QjtBc0M5dUZFO0VBQ0UsY0FBb0I7QXRDZ3ZGeEI7QXNDOXVGRTtFQUNFLFdBQW9CO0F0Q2d2RnhCO0FzQzl1RkU7RUFDRSxXQUFPO0F0Q2d2Rlg7QXNDNXVGRTtFQUNFLGdCQUFhO0VBQ2IsbUJBQVc7RUFDWCxzQkFBYTtBdEM4dUZqQjtBMkI3MkYwRDtFQUFBO0lXaUlwRCxtQkFBVztJQUNYLHNCQUFhO0V0Q2d2RmpCO0FBQ0Y7QXNDNXVGRTtFQUNFLGdCQUFhO0F0Qzh1RmpCO0FzQzF1RkU7RUFDRSxnQkFBYTtFQUNiLG9CQUFXO0VBQ1gsc0JBQWE7QXRDNHVGakI7QXNDenVGRTtFQUNFLGdCQUFhO0VBQ2Isa0JBQVc7RUFDWCxpQkFBYTtFQUNiLGtCQUFZO0F0QzJ1RmhCO0EyQmo0RjBEO0VBQUE7SVd3SnBELGdCQUFhO0lBQ2Isa0JBQVc7SUFDWCxzQkFBYTtFdEM2dUZqQjtBQUNGIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4tLS1cbm5hbWU6IENvbG9yc1xudGVtcGxhdGU6IGNvbG9yc1xudGFnOlxuIC0gdmFyaWFibGVcbiAtIGNvbG9yXG5jb2xvcnM6XG4gLSB2YXJpYWJsZTogXCJib2R5XCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBtYWluIGJhY2tncm91bmQgY29sb3JcIlxuICAgdmFsdWU6IFwiI0ZGRlwiXG4gLSB2YXJpYWJsZTogXCJ0ZXh0XCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IHRleHQgY29sb3Igb24gdGhlIGJvZHlcIlxuICAgdmFsdWU6IFwiIzIwMjAyM1wiXG4gLSB2YXJpYWJsZTogXCJ0ZXh0LWdyYXlcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGRlZmF1bHQgY29sb3IgZm9yIGdyYXllZC1vdXQgdGV4dCAoZS4gZy4gZm9yIGRpc2FibGVkIGl0ZW1zIG9yIHN1YmNhcHRpb25zKVwiXG4gICB2YWx1ZTogXCIjNkE2QTZBXCJcbiAtIHZhcmlhYmxlOiBcInRleHQtaW52ZXJ0ZWRcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGRlZmF1bHQgaW52ZXJ0ZWQgdGV4dCBjb2xvciBvbiB0aGUgYm9keVwiXG4gICB2YWx1ZTogXCIjRkZGXCJcbiAtIHZhcmlhYmxlOiBcImFjdGlvblwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbWFpbiBhY3Rpb24gY29sb3IgdXNlZCBmb3IgbGlua3MgYW5kIGJ1dHRvbnNcIlxuICAgdmFsdWU6IFwiIzMwMzFGRVwiXG4gLSB2YXJpYWJsZTogXCJsaW5lXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IGNvbG9yIGZvciBsaW5lcyAoZS4gZy4gYm9yZGVyIGxpbmVzKVwiXG4gICB2YWx1ZTogXCIjZTBlMGUwXCJcbiAtIHZhcmlhYmxlOiBcInN1Y2Nlc3NcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGNvbG9yIGZvciBwb3NpdGl2ZSBmZWVkYmFjayAoZS4gZy4gY29uZmlybWF0aW9uIG1lc3NhZ2VzKVwiXG4gICB2YWx1ZTogXCIjMDBBNjg1XCJcbiAtIHZhcmlhYmxlOiBcImVycm9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb2xvciBmb3IgbmVnYXRpdmUgZmVlZGJhY2sgKGUuIGcuIGVycm9yIG1lc3NhZ2VzKVwiXG4gICB2YWx1ZTogXCIjREMxNTNBXCJcbi0tLVxuXG5Db2xvciB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5IGFyZSBkZWZpbmVkIGluIHRoZSBgdGhlbWUuY29sb3JzYCBoYXNoLlxuQnkgZGVmYXVsdCwgdGhlIGZvbGxvd2luZyBrZXlzIGFyZSBkZWZpbmVkOlxuKi9cbnRoZW1lLmNvbG9ycyA9IHtcblxuICBib2R5OiAjRkZGLFxuXG4gIHRleHQ6ICMyMDIwMjMsXG4gIHRleHQtaW52ZXJ0ZWQ6ICNGRkYsXG4gIHRleHQtZ3JheTogIzZBNkE2QSxcblxuICBhY3Rpb246ICMzMDMxRkUsXG5cbiAgbGluZTogI2UwZTBlMCxcblxuICBzdWNjZXNzOiAjMDBBNjg1LFxuICBlcnJvcjogI0RDMTUzQSxcbn1cbiIsIi8qXG4tLS1cbm5hbWU6IENvbG9yc1xudGVtcGxhdGU6IGNvbG9yc1xudGFnOlxuIC0gdmFyaWFibGVcbiAtIGNvbG9yXG5jb2xvcnM6XG4gLSB2YXJpYWJsZTogXCJib2R5XCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBtYWluIGJhY2tncm91bmQgY29sb3JcIlxuICAgdmFsdWU6IFwiI0ZGRlwiXG4gLSB2YXJpYWJsZTogXCJ0ZXh0XCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IHRleHQgY29sb3Igb24gdGhlIGJvZHlcIlxuICAgdmFsdWU6IFwiIzIwMjAyM1wiXG4gLSB2YXJpYWJsZTogXCJ0ZXh0LWdyYXlcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGRlZmF1bHQgY29sb3IgZm9yIGdyYXllZC1vdXQgdGV4dCAoZS4gZy4gZm9yIGRpc2FibGVkIGl0ZW1zIG9yIHN1YmNhcHRpb25zKVwiXG4gICB2YWx1ZTogXCIjNkE2QTZBXCJcbiAtIHZhcmlhYmxlOiBcInRleHQtaW52ZXJ0ZWRcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGRlZmF1bHQgaW52ZXJ0ZWQgdGV4dCBjb2xvciBvbiB0aGUgYm9keVwiXG4gICB2YWx1ZTogXCIjRkZGXCJcbiAtIHZhcmlhYmxlOiBcImFjdGlvblwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbWFpbiBhY3Rpb24gY29sb3IgdXNlZCBmb3IgbGlua3MgYW5kIGJ1dHRvbnNcIlxuICAgdmFsdWU6IFwiIzMwMzFGRVwiXG4gLSB2YXJpYWJsZTogXCJsaW5lXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IGNvbG9yIGZvciBsaW5lcyAoZS4gZy4gYm9yZGVyIGxpbmVzKVwiXG4gICB2YWx1ZTogXCIjZTBlMGUwXCJcbiAtIHZhcmlhYmxlOiBcInN1Y2Nlc3NcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGNvbG9yIGZvciBwb3NpdGl2ZSBmZWVkYmFjayAoZS4gZy4gY29uZmlybWF0aW9uIG1lc3NhZ2VzKVwiXG4gICB2YWx1ZTogXCIjMDBBNjg1XCJcbiAtIHZhcmlhYmxlOiBcImVycm9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb2xvciBmb3IgbmVnYXRpdmUgZmVlZGJhY2sgKGUuIGcuIGVycm9yIG1lc3NhZ2VzKVwiXG4gICB2YWx1ZTogXCIjREMxNTNBXCJcbi0tLVxuXG5Db2xvciB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5IGFyZSBkZWZpbmVkIGluIHRoZSBgdGhlbWUuY29sb3JzYCBoYXNoLlxuQnkgZGVmYXVsdCwgdGhlIGZvbGxvd2luZyBrZXlzIGFyZSBkZWZpbmVkOlxuKi9cbi8qXG4tLS1cbm5hbWU6IHJlbVxuY2F0ZWdvcnk6IEZ1bmN0aW9ucy9yZW1cbnRhZzpcbiAtIGZ1bmN0aW9uXG4tLS1cblxuQ29udmVydHMgZnJvbSBgcHhgIHRvIGByZW1gLCBiYXNlZCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGAxNnB4YCBhcmUgZXF1aXZhbGVudCB0byBgMXJlbWAuXG5cbiMjIERlZmluaXRpb246XG5cbmBgYHN0eWx1c1xucmVtcyA9IHJlbShwaXhlbHMpO1xuYGBgXG4qL1xuLypcbi0tLVxubmFtZTogY2hvb3NlTWF4Q29udHJhc3RcbmNhdGVnb3J5OiBGdW5jdGlvbnMvY2hvb3NlTWF4Q29udHJhc3RcbnRhZzpcbiAtIGNvbG9yXG4gLSBmdW5jdGlvblxuLS0tXG5cbkdpdmVuIG9uZSBvciBtb3JlIGZvcmVncm91bmQgY29sb3JzIGBmZ3NgIGFuZCBvbmUgYmFja2dyb3VuZCBjb2xvciBgYmdgLFxucmV0dXJucyB0aGUgZm9yZWdyb3VuZCBjb2xvciB3aXRoIHRoZSBoaWdoZXN0IGNvbnRyYXN0IHJhdGlvIHdpdGggcmVzcGVjdCB0byBgYmdgLlxuXG4jIyBEZWZpbml0aW9uOlxuXG5gYGBzdHlsdXNcbmZnID0gY2hvb3NlTWF4Q29udHJhc3QoZmdzLCBiZyk7XG5gYGBcblxuIyMgRXhhbXBsZTpcblxuYGBgc3R5bHVzXG5iZyA9IHRoZW1lLmNvbG9ycy5mb290ZXI7XG5mZyA9IHRoZW1lLmNvbG9ycy50ZXh0O1xuZmdJbnZlcnRlZCA9IHRoZW1lLmNvbG9ycy50ZXh0LWludmVydGVkO1xuXG50aGVtZS5jb21wb25lbnRzLmNvbG9yLWJveC5mb290ZXIgPSB7XG4gIGJhY2tncm91bmQtY29sb3I6IChiZyksXG4gIGNvbG9yOiAoY2hvb3NlTWF4Q29udHJhc3QoKGZnIGZnSW52ZXJ0ZWQpLCBiZykpLFxufVxuYGBgXG4qL1xuLypcbi0tLVxubmFtZTogR2xvYmFsIHNldHRpbmdzXG50ZW1wbGF0ZTogdmFyaWFibGVzXG50YWc6XG4gLSB2YXJpYWJsZVxudmFyaWFibGVzOlxuIC0gbmFtZTogXCJ0ZXh0LWxpbmUtaGVpZ2h0XCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBsaW5lIGhlaWdodCBvZiB0aGUgYm9keVwiXG4gICBkZWZhdWx0OiBcIjEuNXJlbVwiXG4gLSBuYW1lOiBcInRleHQtZm9udFwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgYGZvbnQtZmFtaWx5YCB0byBiZSB1c2VkIGZvciByZWd1bGFyIHRleHRcIlxuICAgZGVmYXVsdDogXCInUm9ib3RvJywgc2VyaWZcIlxuIC0gbmFtZTogXCJoZWFkaW5nLWZvbnRcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGBmb250LWZhbWlseWAgdG8gYmUgdXNlZCBmb3IgaGVhZGluZ3MgKGFuZCBwb3NzaWJseSBzdWJjYXB0aW9ucylcIlxuICAgZGVmYXVsdDogXCInUm9ib3RvJywgc2VyaWZcIlxuIC0gbmFtZTogXCJ0ZXh0LXJlbmRlcmluZ1wiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgYHRleHQtcmVuZGVyaW5nYCBvZiB0aGUgYm9keVwiXG4gICBkZWZhdWx0OiBcIm9wdGltaXplTGVnaWJpbGl0eVwiXG4gLSBuYW1lOiBcInRyYW5zaXRpb24tZHVyYXRpb25cIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGR1cmF0aW9uIG9mIHRoZSBzbGlkZSB0cmFuc2l0aW9uc1wiXG4gICBkZWZhdWx0OiBcIjAuM3NcIlxuIC0gbmFtZTogXCJib3JkZXItcmFkaXVzXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IHJhZGl1cyBmb3IgYm9yZGVyc1wiXG4gICBkZWZhdWx0OiBcIjJweFwiXG4tLS1cblxuVGhlIGB0aGVtZS5zZXR0aW5nc2AgaGFzaCBkZWZpbmVzIHNldmVyYWwgZ2xvYmFsIHNldHRpbmdzIGZvciB0ZXh0IGZvcm1hdHRpbmcgYW5kIHN0eWxpbmc6XG4qL1xuLypcbi0tLVxubmFtZTogR2xvYmFsIHNldHRpbmdzXG5jYXRlZ29yeTogU2hhcmVkL1ZhcmlhYmxlc1xudGVtcGxhdGU6IHZhcmlhYmxlc1xudGFnOlxuIC0gdmFyaWFibGVzXG52YXJpYWJsZXM6XG4gLSBuYW1lOiBcInRleHQtbGluZS1oZWlnaHRcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGxpbmUgaGVpZ2h0IG9mIHRoZSBib2R5XCJcbiAgIGRlZmF1bHQ6IFwiMS41cmVtXCJcbiAtIG5hbWU6IFwiZm9udC1mYW1pbHlcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGZvbnQtZmFtaWx5IG9mIHRoZSBib2R5XCJcbiAgIGRlZmF1bHQ6IFwiJ0hlbHZldGljYScsIHNhbnMtc2VyaWZcIlxuIC0gbmFtZTogXCJ0ZXh0LXJlbmRlcmluZ1wiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgdGV4dC1yZW5kZXJpbmcgb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCJvcHRpbWl6ZUxlZ2liaWxpdHlcIlxuIC0gbmFtZTogXCJ0cmFuc2l0aW9uLWR1cmF0aW9uXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkdXJhdGlvbiBvZiB0aGUgc2xpZGUgdHJhbnNpdGlvbnNcIlxuICAgZGVmYXVsdDogXCIwLjRzXCJcbiAtIG5hbWU6IFwiYm9yZGVyLXJhZGl1c1wiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgZGVmYXVsdCByYWRpdXMgZm9yIGJvcmRlcnNcIlxuICAgZGVmYXVsdDogXCIycHhcIlxuLS0tXG5cblRoZXNlIHZhcmlhYmxlcyBzZXR1cHMgc29tZSBnbG9iYWwgdGV4dCBmb3JtYXR0aW5nIGFuZCBzdHlsaW5nLlxuKi9cbi8qXG4tLS1cbm5hbWU6IEdsb2JhbCBSZXNldFxuY2F0ZWdvcnk6IEdsb2JhbHMvUmVzZXRcbnRhZzpcbiAtIHJlc2V0XG4tLS1cblxuVGhlIGxlcm5ldHogY3NzIGxpYnJhcnkgaGFzIGEgc2V0IG9mIHJlc2V0IHN0eWxlIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIG9uIGV2ZXJ5IGJyb3dzZXIuXG5GdXJ0aGVybW9yZSB0aGlzIHJlc2V0IHNldHMgc29tZSBnbG9iYWwgdmFyaWFibGVzIGxpa2U6XG4gKiBib2R5IGZvbnQtZmFtaWxpZXNcbiAqIGJvZHkgbGluZS1oZWlnaHRcbiAqIGJvZHkgdGV4dC1yZW5kZXJpbmdcbiAqIDpyb290IGZvbnQtc2l6ZSBmb3IgcHJvcGVyIHJlbSBjb252ZXJzaW9uXG4qL1xuaHRtbCxcbmJvZHksXG5kaXYsXG5zcGFuLFxub2JqZWN0LFxuaWZyYW1lLFxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2LFxucCxcbmJsb2NrcXVvdGUsXG5wcmUsXG5hYmJyLFxuYWRkcmVzcyxcbmNpdGUsXG5jb2RlLFxuZGVsLFxuZGZuLFxuZW0sXG5pbWcsXG5pbnMsXG5rYmQsXG5xLFxuc2FtcCxcbnNtYWxsLFxuc3Ryb25nLFxuc3ViLFxuc3VwLFxudmFyLFxuYixcbmksXG5kbCxcbmR0LFxuZGQsXG5vbCxcbnVsLFxubGksXG5maWVsZHNldCxcbmZvcm0sXG5sYWJlbCxcbmxlZ2VuZCxcbnRhYmxlLFxuY2FwdGlvbixcbnRib2R5LFxudGZvb3QsXG50aGVhZCxcbnRyLFxudGgsXG50ZCxcbmFydGljbGUsXG5hc2lkZSxcbmNhbnZhcyxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5LFxudGltZSxcbm1hcmssXG5hdWRpbyxcbnZpZGVvIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG4gIG91dGxpbmU6IDA7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cbjpyb290IHtcbiAgZm9udC1zaXplOiAxNnB4O1xufVxuaHRtbCB7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbn1cbmJvZHkge1xuICBsaW5lLWhlaWdodDogMS41cmVtO1xuICBjb2xvcjogIzAwMDtcbiAgZm9udC1mYW1pbHk6ICdBdmVuaXInICwgc2Fucy1zZXJpZjtcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG59XG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1lbnUsXG5uYXYsXG5zZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5zZWxlY3Qge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxudGV4dGFyZWEge1xuICB3aWR0aDogMTAwJTtcbn1cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgZm9udDogaW5oZXJpdDtcbiAgbWFyZ2luOiAwO1xufVxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbiosXG4qOmJlZm9yZSxcbio6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5pbWcge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbnVsLFxub2wge1xuICBtYXJnaW4tbGVmdDogMS4yNXJlbTtcbn1cbi8qXG4tLS1cbm5hbWU6IEdsb2JhbCBoZWxwZXJzXG5jYXRlZ29yeTogR2xvYmFscy9IZWxwZXJzXG50YWc6XG4gLSBoZWxwZXJcbiAtIGJveC1tb2RlbFxuIC0gZGlzcGxheVxuIC0gcG9zaXRpb25cbiAtIHZpc2liaWxpdHlcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGNvbGxlY3Rpb24gb2YgZ2xvYmFsIGhlbHBlcnMgdG8gY29udHJvbCBjb21tb24gc3R5bGVzLlxuTm90ZSB0aGF0IGV2ZXJ5IGdsb2JhbCBoZWxwZXIgaXMgcGVyZml4ZWQgd2l0aCBhbiB1bmRlcnNjb3JlIHRvIGluZGljYXRlIHRoYXQgdGhpcyBpcyBhIGdsb2JhbCBydWxlIGFjY29yZGluZyB0byByc2Nzcy5cblxuIyMgWi1JbmRleDpcblxuYGBgamFkZVxuZGl2Ll96LTEgei1pbmRleDogMTtcbmRpdi5fei0yIHotaW5kZXg6IDI7XG5kaXYuX3otMyB6LWluZGV4OiAzO1xuZGl2Ll96LTQgei1pbmRleDogNDtcbmRpdi5fei01IHotaW5kZXg6IDU7XG5kaXYuX3otNiB6LWluZGV4OiA2O1xuYGBgXG5cbiMjIFBvc2l0aW9uOlxuXG5gYGBqYWRlXG5kaXYuX2Fic29sdXRlIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbmRpdi5fcmVsYXRpdmUgcG9zaXRpb246IHJlbGF0aXY7XG5kaXYuX2ZpeGVkIHBvc2l0aW9uOiBmaXhlZDtcbmRpdi5fc3RpY2t5IHBvc2l0aW9uOiBzdGlja3k7XG5kaXYuX3N0YXRpYyBwb3NpdGlvbjogc3RhdGljO1xuYGBgXG5cbiMjIERpc3BsYXk6XG5cbmBgYGphZGVcbmRpdi5fYmxvY2sgZGlzcGxheTogYmxvY2s7XG5kaXYuX2lubGluZS1ibG9jayBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5kaXYuX2lubGluZSBkaXNwbGF5OiBpbmxpbmU7XG5kaXYuX2ZsZXggZGlzcGxheTogZmxleDtcbmRpdi5faW5saW5lLWZsZXggZGlzcGxheTogaW5saW5lLWZsZXg7XG5kaXYuX3RhYmxlIGRpc3BsYXk6IHRhYmxlO1xuZGl2Ll90YWJsZS1yb3cgZGlzcGxheTogdGFibGUtcm93O1xuZGl2Ll90YWJsZS1jZWxsIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG5kaXYuX2hpZGRlbiBkaXNwbGF5OiBub25lO1xuYGBgXG5cbiMjIFZpc2liaWxpdHk6XG5cbmBgYGphZGVcbmRpdi5fdmlzaWJsZSB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuZGl2Ll9pbnZpc2libGUgdmlzaWJpbGl0eTogaGlkZGVuO1xuYGBgXG4qL1xuLl96LTEge1xuICB6LWluZGV4OiAxO1xufVxuLl96LTIge1xuICB6LWluZGV4OiAyO1xufVxuLl96LTMge1xuICB6LWluZGV4OiAzO1xufVxuLl96LTQge1xuICB6LWluZGV4OiA0O1xufVxuLl96LTUge1xuICB6LWluZGV4OiA1O1xufVxuLl96LTYge1xuICB6LWluZGV4OiA2O1xufVxuLl9hYnNvbHV0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5fcmVsYXRpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uX2ZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLl9zdGlja3kge1xuICBwb3NpdGlvbjogc3RpY2t5O1xufVxuLl9zdGF0aWMge1xuICBwb3NpdGlvbjogc3RhdGljO1xufVxuLl9ibG9jayB7XG4ge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAycmVtO1xuICAgIGJvcmRlci13aWR0aDogMC4wOTM3NXJlbTtcbiAgfVxuICBkaXNwbGF5OiA7XG59XG4uX2lubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5faW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuLl9mbGV4IHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5faW5saW5lLWZsZXgge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbn1cbi5fdGFibGUge1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cbi5fdGFibGUtcm93IHtcbiAgZGlzcGxheTogdGFibGUtcm93O1xufVxuLl90YWJsZS1jZWxsIHtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcbn1cbi5faGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5fdmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uX2ludmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi8qXG4tLS1cbm5hbWU6IC5hYnMtbGF5b3V0XG5jYXRlZ29yeTogQ29tcG9uZW50cy8uYWJzLWxheW91dFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHNpbXBsZSBjb21wb25lbnQgdG8gcG9zaXRpb24gYW4gZWxlbWVudCBhYnNvbHV0ZS4gRGVmYXVsdCBpcyB0b3AsIGxlZnRcblxuIyMgVmFyaWFudHNcblxuVGhlIHZhcmlhbnRzIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb25pbmcgYXJlIGAuLXRvcGAsIGAuLXZjZW50ZXJgIGFuZCBgLi1ib3R0b21gLlxuVGhlIHZhcmlhbnRzIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbmluZyBhcmUgYC4tcmlnaHRgLCBgLi1oY2VudGVyYCBhbmQgYC4tbGVmdGAuXG5BZGRpdGluYWxseSB0aGUgYC1jZW50ZXJgIHZhcmlhbnQgd2lsbCBjZW50ZXIgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwuXG5WYXJpYW50cyB0byBzdHJldGNoIGFuIGl0ZW0gdG8gaXRzIGZ1bGwgd2lkdGgvaGVpZ2h0IGNhbiBiZSBkaW5lIHdpdGggYC5pdGVtLi1zdHJldGNoYC5cbkluIHNvbWUgc2l0dWF0aW9ucyB0aGUgYWJzLWxheW91dCBpdHNlbGYgbmVlZHMgdG8gc3RyZXRjaCBzbyB1c2UgdGhlIHN0cmV0Y2ggdmFyaWFudCBvbiB0aGUgY29tcG9uZW50LiBgLmFicy1sYXlvdXQuLXN0cmV0Y2hgIFxuXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tY2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AuLWhjZW50ZXJcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXRvcC4tcmlnaHRcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXJpZ2h0Li12Y2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1yaWdodC4tYm90dG9tXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1ib3R0b20uLWhjZW50ZXJcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWJvdHRvbS4tbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tbGVmdC4tdmNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tbGVmdC4tdG9wXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1zdHJldGNoXG5gYGBcblxuIyMgWi1JbmRleFxuXG5FdmVyeSBpdGVtIGNhbiBjb250cm9sbCBpdHMgeiBpbmRleCB3aXRoIHRoZSBgLi16e2l9YHZhcmlhbnRzLlxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXRvcC4tbGVmdC4tejFcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wLi1sZWZ0Li16MlxuYGBgXG5cbiovXG4uYWJzLWxheW91dCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5hYnMtbGF5b3V0Li1zdHJldGNoIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi10b3Age1xuICB0b3A6IDA7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi1yaWdodCB7XG4gIHJpZ2h0OiAwO1xufVxuLmFicy1sYXlvdXQgPiAuaXRlbS4tYm90dG9tIHtcbiAgYm90dG9tOiAwO1xufVxuLmFicy1sYXlvdXQgPiAuaXRlbS4tbGVmdCB7XG4gIGxlZnQ6IDA7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi12Y2VudGVyIHtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLWhjZW50ZXIge1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLWNlbnRlciB7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLmFicy1sYXlvdXQgPiAuaXRlbS4tc3RyZXRjaCB7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXoxIHtcbiAgei1pbmRleDogMTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXoyIHtcbiAgei1pbmRleDogMjtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXozIHtcbiAgei1pbmRleDogMztcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo0IHtcbiAgei1pbmRleDogNDtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo1IHtcbiAgei1pbmRleDogNTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo2IHtcbiAgei1pbmRleDogNjtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo3IHtcbiAgei1pbmRleDogNztcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo4IHtcbiAgei1pbmRleDogODtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo5IHtcbiAgei1pbmRleDogOTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXoxMCB7XG4gIHotaW5kZXg6IDEwO1xufVxuLypcbi0tLVxubmFtZTogLmJvcmRlci1ib3hcbmNhdGVnb3J5OiBDb21wb25lbnRzLy5ib3JkZXItYm94XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGJvcmRlclxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYm94IHRvIGNvbnRyb2wgYm9yZGVycyBvbiBhbGwgZm91ciBzaWRlcy5cblxuYGBgamFkZVxuZGl2LmJvcmRlci1ib3guLWxlZnQgU29tZSBkZW1vIGNvbnRlbnRcbmBgYFxuXG5gYGBqYWRlXG5kaXYuYm9yZGVyLWJveC4tYWxsIFNvbWUgZGVtbyBjb250ZW50XG5gYGBcbiovXG4uYm9yZGVyLWJveC4tdG9wIHtcbiAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXItY29sb3I6ICNlMGUwZTA7XG59XG4uYm9yZGVyLWJveC4tcmlnaHQge1xuICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiAjZTBlMGUwO1xufVxuLmJvcmRlci1ib3guLWJvdHRvbSxcbi5tZW51ID4gLml0ZW06bm90KDpsYXN0LWNoaWxkKSB7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiAjZTBlMGUwO1xufVxuLmJvcmRlci1ib3guLWxlZnQge1xuICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXItY29sb3I6ICNlMGUwZTA7XG59XG4uYm9yZGVyLWJveC4tYWxsIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gIGJvcmRlci1jb2xvcjogI2UwZTBlMDtcbn1cbi5ib3JkZXItYm94Li10b3AtY29sb3ItcHJpbWFyeSB7XG4gIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICBib3JkZXItY29sb3I6ICMwNjMwNWY7XG59XG4uYm9yZGVyLWJveC4tcmlnaHQtY29sb3ItcHJpbWFyeSB7XG4gIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7XG4gIGJvcmRlci1jb2xvcjogIzA2MzA1Zjtcbn1cbi5ib3JkZXItYm94Li1ib3R0b20tY29sb3ItcHJpbWFyeSB7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICBib3JkZXItY29sb3I6ICMwNjMwNWY7XG59XG4uYm9yZGVyLWJveC4tbGVmdC1jb2xvci1wcmltYXJ5IHtcbiAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xuICBib3JkZXItY29sb3I6ICMwNjMwNWY7XG59XG4uYm9yZGVyLWJveC4tYWxsLWNvbG9yLXByaW1hcnkge1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItY29sb3I6ICMwNjMwNWY7XG59XG4uYm9yZGVyLWJveC4tdG9wLWhlYWRlciB7XG4gIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xufVxuLmJvcmRlci1ib3guLXJpZ2h0LWhlYWRlciB7XG4gIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG59XG4uYm9yZGVyLWJveC4tYm90dG9tLWhlYWRlciB7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xufVxuLmJvcmRlci1ib3guLWxlZnQtaGVhZGVyIHtcbiAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xufVxuLmJvcmRlci1ib3guLWFsbC1oZWFkZXIge1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xufVxuLmJvcmRlci1ib3guLXRvcC10aGljayB7XG4gIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDAuMDkzNzVyZW07XG59XG4uYm9yZGVyLWJveC4tcmlnaHQtdGhpY2sge1xuICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDAuMDkzNzVyZW07XG59XG4uYm9yZGVyLWJveC4tYm90dG9tLXRoaWNrIHtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMC4wOTM3NXJlbTtcbn1cbi5ib3JkZXItYm94Li1sZWZ0LXRoaWNrIHtcbiAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDAuMDkzNzVyZW07XG59XG4uYm9yZGVyLWJveC4tYWxsLXRoaWNrIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAwLjA5Mzc1cmVtO1xufVxuLmJvcmRlci1ib3guLXRvcC10aGluLW1lZGl1bSB7XG4gIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLmJvcmRlci1ib3guLXRvcC10aGluLW1lZGl1bSB7XG4gICAgYm9yZGVyLXdpZHRoOiAwLjA3ODEyNXJlbTtcbiAgfVxufVxuLmJvcmRlci1ib3guLXJpZ2h0LXRoaW4tbWVkaXVtIHtcbiAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAzMi4wNjI1cmVtKSB7XG4gIC5ib3JkZXItYm94Li1yaWdodC10aGluLW1lZGl1bSB7XG4gICAgYm9yZGVyLXdpZHRoOiAwLjA3ODEyNXJlbTtcbiAgfVxufVxuLmJvcmRlci1ib3guLWJvdHRvbS10aGluLW1lZGl1bSB7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLmJvcmRlci1ib3guLWJvdHRvbS10aGluLW1lZGl1bSB7XG4gICAgYm9yZGVyLXdpZHRoOiAwLjA3ODEyNXJlbTtcbiAgfVxufVxuLmJvcmRlci1ib3guLWxlZnQtdGhpbi1tZWRpdW0ge1xuICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuYm9yZGVyLWJveC4tbGVmdC10aGluLW1lZGl1bSB7XG4gICAgYm9yZGVyLXdpZHRoOiAwLjA3ODEyNXJlbTtcbiAgfVxufVxuLmJvcmRlci1ib3guLWFsbC10aGluLW1lZGl1bSB7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuYm9yZGVyLWJveC4tYWxsLXRoaW4tbWVkaXVtIHtcbiAgICBib3JkZXItd2lkdGg6IDAuMDc4MTI1cmVtO1xuICB9XG59XG4uYm9yZGVyLWJveC4tcm91bmQge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG4vKlxuLS0tXG5uYW1lOiAuYnV0dG9uLXN0eWxlXG5jYXRlZ29yeTogQ29tcG9uZW50cy8uYnV0dG9uLXN0eWxlXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGJ1dHRvblxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYnV0dG9uIGNvbXBvbmVudCBhcyBhIGJhc2UgZm9yIGRpZmZlcmVudCBidXR0b24gdmFyaWFudHMgZGVmaW5lZCBpbiBpdHMgY29uZmlndXJhdGlvbi5cblxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1zdHlsZSBkZWZhdWx0XG5gYGBcblxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1zdHlsZS4tZGlzYWJsZWQgLWRpc2FibGVkXG5gYGBcblxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1zdHlsZS4taG92ZXIgLWhvdmVyXG5gYGBcblxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1zdHlsZS4tbWFpbiAtbWFpblxuYGBgXG5cbmBgYGphZGVcbmJ1dHRvbi5idXR0b24tc3R5bGUuLW1haW4uLWhvdmVyIC1tYWluIC1ob3ZlclxuYGBgXG4qL1xuLmJ1dHRvbi1zdHlsZSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmJ1dHRvbi1zdHlsZS4tbWFpbiB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzMWZlO1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbn1cbi5idXR0b24tc3R5bGUuLW1haW4uLWhvdmVyOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxNjE2YmQ7XG59XG4uYnV0dG9uLXN0eWxlLi1ob3ZlciB7XG4gIHRyYW5zaXRpb246IGFsbCAwLjFzO1xufVxuLmJ1dHRvbi1zdHlsZS4taG92ZXI6aG92ZXIge1xuICBjb2xvcjogIzMwMzFmZTtcbn1cbi5idXR0b24tc3R5bGUuLWRpc2FibGVkIHtcbiAgY3Vyc29yOiBpbmhlcml0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjZiNmI2O1xufVxuLypcbi0tLVxubmFtZTogLmNvbG9yLWJveFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLmNvbG9yLWJveFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBjb2xvclxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkNvbnRyb2xzIHRoZSBiYWNrZ3JvdW5kIGFuZC9vciBmb3JlZ3JvdW5kIGNvbG9yKHMpIG9mIHRoZSBzdHlsZWQgZWxlbWVudC5cblxuIyMgQ29uZmlndXJhdGlvblxuXG5UaGlzIGNvbXBvbmVudCBwcm9kdWNlcyBhIHZhcmlhbnQgZm9yIGVhY2gga2V5IGluIHRoZSBgdGhlbWUuY29tcG9uZW50cy5jb2xvci1ib3hgIGhhc2guXG5Gb3IgZXhhbXBsZSwgeW91IGNhbiB0aGVyZWZvcmUgYSBgLWZvb3RlcmAgdmFyaWFudHMgYnkgaW5jbHVkaW5nIHRoZSBmb2xsb3dpbmcgaW4gdGhlIGZpbGUgYGNvbG9yLWJveC52YXIuc3R5bGA6XG5cbmBgYHN0eWx1c1xudGhlbWUuY29tcG9uZW50cy5jb2xvci1ib3guZm9vdGVyID0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMuZm9vdGVyLCAgLy8gYXNzdW1pbmcgdGhpcyBub24tZGVmYXVsdCBrZXkgaXMgZGVmaW5lZCBlbHNld2hlcmVcbiAgY29sb3I6IHRoZW1lLmNvbG9ycy50ZXh0LFxufTtcbmBgYFxuXG4jIyBEZWZhdWx0IHZhcmlhbnRzOlxuXG5CeSBkZWZhdWx0LCB0aGUgZm9sbG93aW5nIGBjb2xvci1ib3hgIHZhcmlhbnRzIGFyZSBkZWZpbmVkIHZpYSBgdGhlbWUuY29tcG9uZW50cy5jb2xvci1ib3hgOlxuXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJkaXNwbGF5OmZsZXhcIilcbiAgZGl2LmNvbG9yLWJveC4tYm9keShzdHlsZT1cIndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDttYXJnaW46NXB4O3BhZGRpbmc6NXB4XCIpXG4gICAgc3BhbiAtYm9keVxuICBkaXYuY29sb3ItYm94Li1hY3Rpb24oc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7bWFyZ2luOjVweDtwYWRkaW5nOjVweFwiKVxuICAgIHNwYW4gLWFjdGlvblxuICBkaXYuY29sb3ItYm94Li1ibGFjayhzdHlsZT1cIndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDttYXJnaW46NXB4O3BhZGRpbmc6NXB4XCIpXG4gICAgc3BhbiAtYmxhY2tcbiAgZGl2LmNvbG9yLWJveC4td2hpdGUoc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7bWFyZ2luOjVweDtwYWRkaW5nOjVweFwiKVxuICAgIHNwYW4gLXdoaXRlXG5gYGBcblxuIyMgU2VlIGFsc286XG5cbiogW2Nob29zZU1heENvbnRyYXN0XSguLi8uLi9TaGFyZWQvRnVuY3Rpb25zL2luZGV4Lmh0bWwjY2hvb3NlTWF4Q29udHJhc3QpICZtZGFzaDtcbiAgSW4gb3JkZXIgdG8gZ3VhcmFudGVlIGdvb2QgbGVnaWJpbGl0eSwgdGhlIGZvcmVncm91bmQgYGNvbG9yYCBzaG91bGQgYmUgY2hvc2VuXG4gIGluIHJlbGF0aW9uIHRvIHRoZSBgYmFja2dyb3VuZC1jb2xvcmAgc3VjaCB0aGF0IGEgcmVhc29uYWJseSBoaWdoIGNvbnRyYXN0IHJhdGlvXG4gIHdpbGwgcmVzdWx0LiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBgdGhlbWUuY29sb3JzYCB2YXJpYWJsZXMgaW5zdGVhZCBvZiBmaXhlZFxuICBjb2xvciB2YWx1ZXMsIHRoaXMgY2FuIGhlbHAgeW91IHNlbGVjdCB0aGUgYmVzdCBvbmU7IHNlZSB0aGVyZSBmb3IgYW4gZXhhbXBsZS5cbiovXG4uY29sb3ItYm94Li1ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29sb3I6ICMyMDIwMjM7XG59XG4uY29sb3ItYm94Li1hY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzMWZlO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jb2xvci1ib3guLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29sb3I6ICMwMDA7XG59XG4uY29sb3ItYm94Li1ibGFjayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gIGNvbG9yOiAjZmZmO1xufVxuLmNvbG9yLWJveC4tc3RhcnQtcGFnZS1oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICNmZmY7XG4gIHRyYW5zaXRpb246IGFsbCAwLjMzcyBlYXNlO1xufVxuLmNvbG9yLWJveC4tc3RhcnQtcGFnZS1oZWFkZXItbWVudS1vcGVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk1YmJkMztcbiAgYm9yZGVyLWNvbG9yOiAjZmZmO1xuICBjb2xvcjogI2ZmZjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMzNzIGVhc2U7XG59XG4uY29sb3ItYm94Li1oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXItY29sb3I6ICMwMDA7XG4gIGNvbG9yOiAjMDAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zM3MgZWFzZTtcbn1cbkBzdXBwb3J0cyAoYmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCkpIHtcbiAgLmNvbG9yLWJveC4taGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuODUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyLjVweCk7XG4gIH1cbn1cbi8qXG4tLS1cbm5hbWU6IC5kaXNwbGF5LXJlc3BvbnNpdmVcbmNhdGVnb3J5OiBDb21wb25lbnRzLy5kaXNwbGF5LXJlc3BvbnNpdmVcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbiAtIGRpc3BsYXlcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5Db250cm9scyB0aGUgZGlzcGxheSBvZiBhbiBlbGVtZW50IGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBicmVha3BvaW50XG5cbiMjIEhpZGVcblxuYC4taGlkZS1tZWRpdW1gIGhpZGVzIGFuIGVsZW1lbnQgYXMgbG9uZyBhcyB0aGUgc2NyZWVuIGlzIHdpZGVyIHRoYW4gdGhlIGJyZWFrcG9pbnQgYG1lZGl1bWAuXG5cbmBgYGphZGVcbmRpdi5kaXNwbGF5LXJlc3BvbnNpdmUuLWhpZGUtbWVkaXVtIE9ubHkgc2hvd24gd2hlbiB0aGUgc2NyZWVuIGlzIHdpZGVyIHRoYW4gdGhlIGJyZWFrcG9pbnQgbWVkaXVtXG5gYGBcblxuIyMgU2hvd1xuXG5gLi1zaG93LW1lZGl1bWAgc2hvdyBhbiBlbGVtZW50IGFzIGxvbmcgYXMgdGhlIHNjcmVlbiBpcyBuYXJyb3dlciB0aGFuIHRoZSBicmVha3BvaW50IGBtZWRpdW1gLlxuXG5gYGBqYWRlXG5kaXYuZGlzcGxheS1yZXNwb25zaXZlLi1zaG93LW1lZGl1bSBPbmx5IHNob3duIHdoZW4gdGhlIHNjcmVlbiBpcyBuYXJyb3dlciB0aGFuIHRoZSBicmVha3BvaW50IGBtZWRpdW1gXG5gYGBcblxuKi9cbkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDIzLjVyZW0pIHtcbiAgLmRpc3BsYXktcmVzcG9uc2l2ZS4taGlkZS1zbWFsbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMjMuNXJlbSkge1xuICAuZGlzcGxheS1yZXNwb25zaXZlLi1zaG93LXNtYWxsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAzMi4wNjI1cmVtKSB7XG4gIC5kaXNwbGF5LXJlc3BvbnNpdmUuLWhpZGUtbWVkaXVtIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAzMi4wNjI1cmVtKSB7XG4gIC5kaXNwbGF5LXJlc3BvbnNpdmUuLXNob3ctbWVkaXVtIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA2Ny41cmVtKSB7XG4gIC5kaXNwbGF5LXJlc3BvbnNpdmUuLWhpZGUtbGFyZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDY3LjVyZW0pIHtcbiAgLmRpc3BsYXktcmVzcG9uc2l2ZS4tc2hvdy1sYXJnZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLypcbi0tLVxubmFtZTogLmZpeGVkLWxheW91dFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLmZpeGVkLWxheW91dFxudGFnOlxuIC0gY29udGFpbmVyXG4gLSBsYXlvdXRcbiAtIGZpeGVkXG4tLS1cblxuRml4ZWQgY29udGFpbmVyXG5Zb3UgY2FuIHBvc2l0aW9uIHRoZSBjb250YWluZXIgd2l0aCB0aGUgZGlmZmVyZW50IHZhcmlhbnRzIGAuLXRvcGAsIGAuLWJvdHRvbWAsIGAuLWxlZnRgLCBgLi1yaWdodGAuXG5UbyBzcGFuIGZ1bGwgd2lkdGggLyBoZWlnaHQgdXNlIGAuLWxlZnRgICYgYC4tcmlnaHRgIC8gYC4tdG9wYCAmIGAuLWJvdHRvbWBcblxuRml4ZWQgdG9wIGFuZCBmdWxsIHdpZHRoXG5cbmBgYGphZGVcbmRpdi5maXhlZC1sYXlvdXQuLXRvcC4tbGVmdC4tcmlnaHQuYWlnaXMtZGVidWcgdG9wIGxlZnQgZnVsbHdpZHRoXG4gICAgXG5gYGBcblxuRml4ZWQgcmlnaHQgYW5kIGZ1bGwgaGVpZ2h0XG5cbmBgYGphZGVcbmRpdi5maXhlZC1sYXlvdXQuLXRvcC4tYm90dG9tLi1yaWdodC5haWdpcy1kZWJ1ZyB0b3AgcmlnaHQgZnVsbGhlaWdodFxuICAgIFxuYGBgXG5cbiovXG4uZml4ZWQtbGF5b3V0IHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLmZpeGVkLWxheW91dC4tdG9wIHtcbiAgdG9wOiAwO1xufVxuLmZpeGVkLWxheW91dC4tYm90dG9tIHtcbiAgYm90dG9tOiAwO1xufVxuLmZpeGVkLWxheW91dC4tbGVmdCB7XG4gIGxlZnQ6IDA7XG59XG4uZml4ZWQtbGF5b3V0Li1yaWdodCB7XG4gIHJpZ2h0OiAwO1xufVxuLypcbi0tLVxubmFtZTogLmZpeGVkLXBhZ2UtbGF5b3V0XG5jYXRlZ29yeTogQ29tcG9uZW50cy8uZml4ZWQtcGFnZS1sYXlvdXRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSBmaXhlZFxuIC0gcGFnZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgcGFnZSBsYXlvdXQgd2l0aCBhIGZpeGVkIGhlYWRlciBhbmQgb3B0aW9uYWwgc2lkZWJhcnMuXG5XaXRoIHRoZSBgLW1hcmdpbi17dG9wfGxlZnR8cmlnaHR9YCwgYC1tYXJnaW4te3RvcHxsZWZ0fHJpZ2h0fS1zbWFsbGAgdmFyaWFudHMgeW91IGNhbiBjb250cm9sIHRoZSBzcGFjaW5nLlxuSWYgdGhlIGNvbnRlbnQgZm9yIGV4YW1wbGUgbmVlZHMgYSBzcGFjaW5nIHRvd2FyZHMgdGhlIGhlYWRlciB1c2U6IGAuY29udGVudC4tbWFyZ2luLXRvcGAuXG5JZiB0aGUgc2lkZWJhciBzaG93IGJlIGJlbG93IHRoZSBoZWFkZXIgdXNlOiBgLnNpZGViYXIuLWxlZnQuLW1hcmdpbi10b3BgLlxuXG5cblRoZXJlIGFyZSB2YXJpYW50cyB0byByZXNpemUgdGhlIGhlYWRlciBhbmQgc2lkZWJhcnMgdG8gYSBzbWFsbGVyIHdpZHRoL2hlaWdodDogYC5oZWFkZXIuLXNtYWxsYCwgYC5zaWRlYmFyLi1zbWFsbGAuXG5JZiB5b3UgbmVlZCBhIHNwYWNpbmcgb24geW91ciBjb250ZW50IG9yIHNpZGViYXIgeW91IG5lZWQgdG8gYWRqdXN0IHRoYXQgbWFudWFsbHkgbGlrZSB0aGlzOlxuYGBgXG5kaXYuZml4ZWQtcGFnZS1sYXlvdXRcblx0ZGl2LmhlYWRlci4tc21hbGxcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlXCIpICBIZWFkZXJcblx0ZGl2LmNvbnRlbnQuLW1hcmdpbi10b3Atc21hbGwgQ29udGVudFxuXHRkaXYuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcC1zbWFsbC4tc21hbGxcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJoZWlnaHQ6MTAwJVwiKSAgTGVmdCBTaWRlYmFyXG5gYGBcblxuIyMgSGVhZGVyIHdpdGggc2lkZWJhcnNcblxuYGBgamFkZVxuZGl2LmZpeGVkLXBhZ2UtbGF5b3V0XG5cdGRpdi5oZWFkZXJcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlXCIpICBIZWFkZXJcblx0ZGl2LmNvbnRlbnQuLW1hcmdpbi10b3AgQ29udGVudFxuXHRkaXYuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpICBMZWZ0IFNpZGViYXJcblx0ZGl2LnNpZGViYXIuLXJpZ2h0XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgIFJpZ2h0IFNpZGViYXJcbmBgYFxuKi9cbi5maXhlZC1wYWdlLWxheW91dCA+IC5oZWFkZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGhlaWdodDogMy4xMjVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuaGVhZGVyLi1zbWFsbCB7XG4gIGhlaWdodDogMS44NzVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuaGVhZGVyLi1oaWRlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDIzLjQzNzVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tc21hbGwge1xuICB3aWR0aDogMy4xMjVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tbWFyZ2luLXRvcCB7XG4gIHRvcDogMy4xMjVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tbWFyZ2luLXRvcC1zbWFsbCB7XG4gIHRvcDogMS44NzVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tbGVmdCB7XG4gIGxlZnQ6IDA7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tbGVmdC4taGlkZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tcmlnaHQge1xuICByaWdodDogMDtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1yaWdodC4taGlkZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50Li1tYXJnaW4tcmlnaHQge1xuICBtYXJnaW4tcmlnaHQ6IDIzLjQzNzVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuY29udGVudC4tbWFyZ2luLWxlZnQge1xuICBtYXJnaW4tbGVmdDogMjMuNDM3NXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50Li1tYXJnaW4tcmlnaHQtc21hbGwge1xuICBtYXJnaW4tcmlnaHQ6IDMuMTI1cmVtO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmNvbnRlbnQuLW1hcmdpbi1sZWZ0LXNtYWxsIHtcbiAgbWFyZ2luLWxlZnQ6IDMuMTI1cmVtO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmNvbnRlbnQuLW1hcmdpbi10b3Age1xuICBtYXJnaW4tdG9wOiAzLjEyNXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50Li1tYXJnaW4tdG9wLXNtYWxsIHtcbiAgbWFyZ2luLXRvcDogMS44NzVyZW07XG59XG4vKlxuLS0tXG5uYW1lOiAuZmxleC1sYXlvdXRcbmNhdGVnb3J5OiBDb21wb25lbnRzLy5mbGV4LWxheW91dFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbiAtIGZsZXhib3hcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGxheW91dCBzeXN0ZW0gYmFzZWQgb24gZmxleGJveCB0byBhbGlnbiBhbmQgZGlzdHJpYnV0ZSBpdGVtcyBob3Jpem9udGFsbHkgYW5kIHZlcnRpY2FsbHkuXG5cblxuIyBBbGlnbm1lbnQgb2YgaXRlbXNcblxuVGhlIGAtY2VudGVyYCBzaG9ydGN1dCB3aWxsIGNlbnRlciBhbGwgaXRlbXMgaG9yaXpvbnRhbCAmIHZlcnRpY2FsXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDEwMHB4XCIpLmZsZXgtbGF5b3V0Li1jZW50ZXJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuXG5gLWJhc2VsaW5lYCB3aWxsIGFsaWduIGl0ZW1zIGJhc2VkIG9uIHRoZWlyIGJhc2VsaW5lLiBXb3JrcyBnb29kIGlmIGFsbCB0aGUgaXRlbXMgY29udGFpbiB0ZXh0LiBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4tYmFzZWxpbmVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW1cblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuYGBgXG5cbmAtaXRlbXMtdG9wYCAmIGAtaXRlbXMtYm90dG9tYCB3aWxsIGFsaWduIHRoZSBpdGVtcyBlaXRoZXIgb24gdG9wIG9yIGJvdHRvbVxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1pdGVtcy10b3Bcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJwYWRkaW5nLXRvcDogNTBweDtwYWRkaW5nLWJvdHRvbTogMzBweDtcIikgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1pdGVtcy1ib3R0b21cblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJwYWRkaW5nLXRvcDogNTBweDtwYWRkaW5nLWJvdHRvbTogMzBweDtcIikgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuXG5gLWl0ZW1zLWNlbnRlcmAgd2lsbCBjZW50ZXIgdGhlIGl0ZW1zIHZlcnRpY2FsbHlcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taXRlbXMtY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcblxuIyBBbGlnbm1lbnQgb2YgaW5kaXZpZHVhbCBpdGVtc1xuXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDEwMHB4XCIpLmZsZXgtbGF5b3V0XG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AgdG9wXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1jZW50ZXIgY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1ib3R0b20gYm90dG9tXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1zdHJldGNoIHN0cmV0Y2hcbmBgYFxuXG4jIFJvdyBtb2RlXG5cbklmIHlvdSBsaWtlIGEgY29udGFpbmVyIHRoYXQgc3BhbnMgdGhlIGZ1bGwgd2lkdGggd2l0aCBpdGVtIHRoYXQgcmVzaXplIHRoZW1zZWxmIHlvdSBjYW4gdXNlIHRoZSBgLXJvd2AgdmFyaWFudC5cblxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1yb3dcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDNcbmBgYFxuXG5JZiB5b3UgbGlrZSB0byBmaXggYW4gaXRlbSBiYXNlZCBvbiBpdHMgY29udGVudCB3aWR0aCB1c2UgdGhlIGAtY29udGVudGAgdmFyaWFudC5cblRoaXMgaXMgYSBzaG9ydGN1dCBmb3IgYC1uby1ncm93IC1uby1zaHJpbmtgLiBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4tcm93XG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1jb250ZW50XG5cdFx0aW1nKHNyYz1cImh0dHA6Ly92aWEucGxhY2Vob2xkZXIuY29tLzM1MHg4MFwiKVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAzXG5gYGBcblxuWW91IGNhbiBjb250cm9sIHRoZSBzaXppbmcgb2YgdGhlIGl0ZW1zIHdpdGggYC1ncm93YCwgYC1zaHJpbmtgLCBgLW5vLWdyb3dgLCBgLW5vLXNocmlua2AuXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXJvd1xuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tbm8tc2hyaW5rXG5cdFx0aW1nKHNyYz1cImh0dHA6Ly92aWEucGxhY2Vob2xkZXIuY29tLzM1MHg4MFwiKVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tbm8tZ3JvdyBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAzXG5gYGBcblxuXG4jIERpc3RyaWJ1dGlvbiBvZiBpdGVtc1xuXG5Vc2UgYC1bdi9oXS1zcGFjZS1hcm91bmRgICYgYC1bdi9oXS1zcGFjZS1iZXR3ZWVuYCB0byBkaXN0cmlidXRlIHRoZSBpdGVtcyBpbiB0aGUgZmxleCBjb250YWluZXIuXG5cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taC1zcGFjZS1hcm91bmRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1oLXNwYWNlLWJldHdlZW5cblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAyMDBweFwiKS5mbGV4LWxheW91dC4tdi1zcGFjZS1hcm91bmQuLXdyYXBcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAyMDBweFwiKS5mbGV4LWxheW91dC4tdi1zcGFjZS1iZXR3ZWVuLi13cmFwXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcblxuIyBBbGlnbm1lbnQgb2YgbXVsdGlsaW5lIGl0ZW1zIHdpdGggd3JhcFxuXG5JZiB5b3UgaGF2ZSBhbG90IG9uIGl0ZW1zIHRoYXQgd3JhcCB5b3UgY2FuIGFsaWduIHRoZSBtdWx0aWxpbmVzIHdpdGggdGhlIGZvbGxvd2luZyB2YXJpYW50czpcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4td3JhcC4taC1jZW50ZXJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li13cmFwLi1sZWZ0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4td3JhcC4tcmlnaHRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAyMDBweFwiKS5mbGV4LWxheW91dC4td3JhcC4tdi1jZW50ZXJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAyMDBweFwiKS5mbGV4LWxheW91dC4td3JhcC4tdG9wXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXdyYXAuLWJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5cblxuXG5cbiovXG4uZmxleC1sYXlvdXQge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLmZsZXgtbGF5b3V0Li1pbmxpbmUge1xuICBkaXNwbGF5OiBmbGV4LWlubGluZTtcbn1cbi5mbGV4LWxheW91dC4td3JhcCB7XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cbi5mbGV4LWxheW91dC4tcm93IHtcbiAgZmxleC13cmFwOiBub3dyYXA7XG59XG4uZmxleC1sYXlvdXQuLXJvdyA+IC5pdGVtIHtcbiAgZmxleDogMSAxIGF1dG87XG59XG4uZmxleC1sYXlvdXQuLWNvbHVtbiB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4uZmxleC1sYXlvdXQuLWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG59XG4uZmxleC1sYXlvdXQuLWJhc2VsaW5lIHtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xufVxuLmZsZXgtbGF5b3V0Li1sZWZ0IHtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuLmZsZXgtbGF5b3V0Li1yaWdodCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG4uZmxleC1sYXlvdXQuLXRvcCB7XG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG4uZmxleC1sYXlvdXQuLWJvdHRvbSB7XG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuLmZsZXgtbGF5b3V0Li12LWNlbnRlciB7XG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5mbGV4LWxheW91dC4tdi1zcGFjZS1iZXR3ZWVuIHtcbiAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5mbGV4LWxheW91dC4tdi1zcGFjZS1hcm91bmQge1xuICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG4uZmxleC1sYXlvdXQuLWgtY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uZmxleC1sYXlvdXQuLWgtc3BhY2UtYmV0d2VlbiB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5mbGV4LWxheW91dC4taC1zcGFjZS1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cbi5mbGV4LWxheW91dC4taXRlbXMtdG9wIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG4uZmxleC1sYXlvdXQuLWl0ZW1zLWJvdHRvbSB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cbi5mbGV4LWxheW91dC4taXRlbXMtY2VudGVyIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5mbGV4LWxheW91dC4taXRlbXMtc3RyZXRjaCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0cmV0Y2g7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tc3RyZXRjaCB7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tdG9wIHtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbn1cbi5mbGV4LWxheW91dCA+IC5pdGVtLi1jZW50ZXIge1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tYm90dG9tIHtcbiAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tY29udGVudCB7XG4gIGZsZXg6IG5vbmU7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tZ3JvdyB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5mbGV4LWxheW91dCA+IC5pdGVtLi1zaHJpbmsge1xuICBmbGV4LXNocmluazogMTtcbn1cbi5mbGV4LWxheW91dCA+IC5pdGVtLi1uby1ncm93IHtcbiAgZmxleC1ncm93OiAwO1xufVxuLmZsZXgtbGF5b3V0ID4gLml0ZW0uLW5vLXNocmluayB7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuLypcbi0tLVxubmFtZTogLmdyaWQtbGF5b3V0XG5jYXRlZ29yeTogQ29tcG9uZW50cy8uZ3JpZC1sYXlvdXRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSBncmlkXG4gLSByZXNwb25zaXZlXG4gLSBmbGV4Ym94XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBncmlkIGxheW91dCBzeXN0ZW0gYmFzZWQgb24gZmxleGJveC4gSXQgcHJvdmlkZXMgc2l6aW5nIHZhcmlhbnRzIHRvIHNpemUgb24gZGlmZmVyZW50IHBlcmNlbnRhZ2VzLlxuXG5cbiMjIFBlcmNlbnRhZ2UgYmFzZWQgc2l6aW5nXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5pdGVtIC13MWAsIGAuaXRlbSAtdzEtMmAsIGAuaXRlbSAtdzEtM2AsIGAuaXRlbSAtdzEtNGAgZm9yIGEgcGVyY2VudGFnZSBiYXNlZCBzaWRlLWJ5LXNpZGUgcmVuZGVyaW5nLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXRcblx0ZGl2Lml0ZW0uLXcxXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxXG5cdGRpdi5pdGVtLi13MS0yIFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS0yXG5cdGRpdi5pdGVtLi13MS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTJcblx0ZGl2Lml0ZW0uLXcxLTNcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtM1xuXHRkaXYuaXRlbS4tdzItM1xuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13Mi0zXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMlxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS00XG5gYGBcblxuIyMgTGF5b3V0cyBvbiBkaWZmZXJlbnQgZGV2aWNlc1xuXG5UaGUgYnJlYWtwb2ludHMgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgYXJlIHNwZWNpZmllZCBpbiB0aGUgZ2xvYmFsIHNldHRpbmdzIGB0aGVtZS5zZXR0aW5ncy5icmVha3BvaW50c2AgYW5kIGNhbiBiZSBvdmVyd3JpdHRlbiBpbiBgdGhlbWUuY29tcG9uZW50cy5ncmlkLWxheW91dC5icmVha3BvaW50c2AuXG5UaGUgZGVmYXVsdCBzZXR0aW5ncyBkZWZpbmUgYnJlYWtwb2ludHMgd2l0aCBsYWJlbHM6IGAuLXNtYWxsLVgtWGAsIGAuLW1lZGl1bS1YLVhgLCBgLi1sYXJnZS1YLVhgLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXRcblx0ZGl2Lml0ZW0uLXcxLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MSAtc21hbGwtMS0zIC1tZWRpdW0tMS0yIC1sYXJnZS0xLTRcblx0ZGl2Lml0ZW0uLXcxLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MSAtc21hbGwtMS0zIC1tZWRpdW0tMS0yIC1sYXJnZS0xLTRcblx0ZGl2Lml0ZW0uLXcxLTIuLXNtYWxsLTEtMy4tbWVkaXVtLTEtMi4tbGFyZ2UtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTIgLXNtYWxsLTEtMyAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5cdGRpdi5pdGVtLi13MS0yLi1zbWFsbC0xLi1tZWRpdW0tMS0yLi1sYXJnZS0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMiAtc21hbGwtMSAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5gYGBcblxuXG4jIyBHdXR0ZXJcblxuSWYgeW91IG5lZWQgYSBzcGFjaW5nIGJldHdlZW4gdGhlIGNvbHVtbnMgYWRkIHRoZSBgLWd1dHRlcmAgdmFyaWFudC5cblRoZSBzaXplIG9mIHRoZSBndXR0ZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBgZ3JpZC1ndXR0ZXJgdmFyaWFibGUuXG5cbmBgYGphZGVcbmRpdi5ncmlkLWxheW91dC4tZ3V0dGVyXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbCAtdzEtNFxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wgLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sIC13MS0yXG5gYGBcblxuXG4jIyBSZXZlcnNlIG9yZGVyXG5cblRvIHJldmVyc2UgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBjb2x1bW5zIGFyZSBkaXNwbGF5ZWQsIHlvdSBjYW4gYWRkIHRoZSBtb2RpZmllciBjbGFzcyBgLi1yZXZlcnNlYCB0byB5b3VyIHRhYmxlLWdyaWQuXG5UaGUgY29sdW1ucyB3aWxsIGJlIGluIERPTSBvcmRlciB3aGVuIHZpZXdwb3J0IHN3aXRjaGVzIHRvIHNtYWxsIGxheW91dC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0Li1yZXZlcnNlXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEZpcnN0IGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgU2Vjb25kIGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgVGhpcmQgY29sdW1uIGluIERPTVxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBGb3VydGggY29sdW1uIGluIERPTVxuYGBgXG5cbiMjIFZlcnRpY2FsIGNlbnRlcmluZ1xuXG5Zb3UgY2FuIHZlcnRpY2FsIGNlbnRlciB3aXRoIHRoZSBoZWxwIG9mIHRoZSBgZmxleC1sYXlvdXRgIGNvbXBvbmVudC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0LmZsZXgtbGF5b3V0XG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEEgY29sdW1uIHdpdGggYSBsb3Qgb2YgY29udGVudCB0aGF0IHNob3VsZCB3cmFwIG9uIGZpeGVkIHNpemUuXG5cdGRpdi5pdGVtLi1ib3R0b21cblx0XHRkaXYuYWlnaXMtZGVidWcgYm90dG9tXG5cdGRpdi5pdGVtLi1jZW50ZXJcblx0XHRkaXYuYWlnaXMtZGVidWcgY2VudGVyXG5cdGRpdi5pdGVtLi1zdHJldGNoXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgc3RyZXRjaFxuYGBgXG5cbiovXG4uZ3JpZC1sYXlvdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG4uZ3JpZC1sYXlvdXQuLWd1dHRlciB7XG4gIG1hcmdpbjogLTAuNjI1cmVtIC0wLjkzNzVyZW07XG59XG4uZ3JpZC1sYXlvdXQuLWd1dHRlciA+IC5pdGVtIHtcbiAgcGFkZGluZzogMC42MjVyZW0gMC45Mzc1cmVtO1xufVxuLmdyaWQtbGF5b3V0Li1yZXZlcnNlIHtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xufVxuLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXcxIHtcbiAgZmxleDogMCAwIDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbi5ncmlkLWxheW91dCA+IC5pdGVtLi13MS0yIHtcbiAgZmxleDogMCAwIDUwJTtcbiAgbWF4LXdpZHRoOiA1MCU7XG59XG4uZ3JpZC1sYXlvdXQgPiAuaXRlbS4tdzEtMyB7XG4gIGZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzMzMzMzYlO1xuICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMzMzMzNiU7XG59XG4uZ3JpZC1sYXlvdXQgPiAuaXRlbS4tdzItMyB7XG4gIGZsZXg6IDAgMCA2Ni42NjY2NjY2NjY2NjY2NyU7XG4gIG1heC13aWR0aDogNjYuNjY2NjY2NjY2NjY2NjclO1xufVxuLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXcxLTQge1xuICBmbGV4OiAwIDAgMjUlO1xuICBtYXgtd2lkdGg6IDI1JTtcbn1cbi5ncmlkLWxheW91dCA+IC5pdGVtLi13My00IHtcbiAgZmxleDogMCAwIDc1JTtcbiAgbWF4LXdpZHRoOiA3NSU7XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAyMy41cmVtKSB7XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1zbWFsbC0xIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXNtYWxsLTEtMiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tc21hbGwtMS0zIHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMzMzMzNiU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXNtYWxsLTItMyB7XG4gICAgZmxleDogMCAwIDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tc21hbGwtMS00IHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1zbWFsbC0zLTQge1xuICAgIGZsZXg6IDAgMCA3NSU7XG4gICAgbWF4LXdpZHRoOiA3NSU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLW1lZGl1bS0xIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLW1lZGl1bS0xLTIge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLW1lZGl1bS0xLTMge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzMzMzMzYlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbWVkaXVtLTItMyB7XG4gICAgZmxleDogMCAwIDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbWVkaXVtLTEtNCB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbWVkaXVtLTMtNCB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjcuNXJlbSkge1xuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbGFyZ2UtMSB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1sYXJnZS0xLTIge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLWxhcmdlLTEtMyB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzMzMzMzMzMzMzNiU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzMzMzMzYlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1sYXJnZS0yLTMge1xuICAgIGZsZXg6IDAgMCA2Ni42NjY2NjY2NjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY2NjY2NyU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLWxhcmdlLTEtNCB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbGFyZ2UtMy00IHtcbiAgICBmbGV4OiAwIDAgNzUlO1xuICAgIG1heC13aWR0aDogNzUlO1xuICB9XG59XG4vKlxuLS0tXG5uYW1lOiAuaW1hZ2UtcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLmltYWdlLXJlc3BvbnNpdmVcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gcmVzcG9uc2l2ZVxuIC0gaW1hZ2VcbiAtIG1lZGlhXG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBjbGFzcyBtYWtlcyB0aGUgaW1hZ2Ugc2NhbGluZyB0byBpdHMgbWF4IHdpZHRoLlxuXG5gYGBqYWRlXG5pbWcuaW1hZ2UtcmVzcG9uc2l2ZShzcmM9J2h0dHA6Ly93d3cuYnl1aS5lZHUvaW1hZ2VzL2FncmljdWx0dXJlLWxpZmUtc2NpZW5jZXMvZmxvd2VyLmpwZycpXG5gYGBcblxuIyMgVmFyaWFudHNcblxuYC4tZnVsbGAgZm9yY2VzIHRoZSBwaWN0dXJlIHRvIHNwYW4gdG8gMTAwJSBvZiB0aGUgcGFyZW50XG5cbmBgYGphZGVcbmltZy5pbWFnZS1yZXNwb25zaXZlLi1mdWxsKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbmBgYFxuKi9cbi5pbWFnZS1yZXNwb25zaXZlIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLmltYWdlLXJlc3BvbnNpdmUuLWZ1bGwge1xuICB3aWR0aDogMTAwJTtcbn1cbi5pbWFnZS1yZXNwb25zaXZlLi1pbnNldCB7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG59XG4vKlxuLS0tXG5uYW1lOiAubWF4LXdpZHRoLWxheW91dFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLm1heC13aWR0aC1sYXlvdXRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSByZXNwb25zaXZlXG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBjb21wb25lbnQgd2lsbCBsaW1pdCBpdHMgY29udGVudCB0byBhIG1heGltdW0gd2lkdGguIEZvcnRoZXJtb3JlIGl0IGNhbiBjZW50ZXIgaXRzIGNvbnRlbnQuXG5Vc2VmdWxsIGZvciBwYWdlIGNvbnRlbnQgdGhhdCBzaG91bGQgbm90IHNwYW4gdGhlIGZ1bGwgd2lkdGguXG5cblxuIyMgUGVyY2VudGFnZSBiYXNlZCBzaXppbmdcblxuKi9cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDIzLjVyZW0pIHtcbiAgLm1heC13aWR0aC1sYXlvdXQge1xuICAgIG1heC13aWR0aDogNDEuNzVyZW07XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLm1heC13aWR0aC1sYXlvdXQge1xuICAgIG1heC13aWR0aDogNTUuNzVyZW07XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDY3LjVyZW0pIHtcbiAgLm1heC13aWR0aC1sYXlvdXQge1xuICAgIG1heC13aWR0aDogNjguNzVyZW07XG4gIH1cbn1cbi5tYXgtd2lkdGgtbGF5b3V0Li1jZW50ZXIge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuLypcbi0tLVxubmFtZTogLm1lZGlhLXJlc3BvbnNpdmVcbmNhdGVnb3J5OiBDb21wb25lbnRzLy5tZWRpYS1yZXNwb25zaXZlXG50YWc6XG4gLSByZXNwb25zaXZlXG4gLSBtZWRpYVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbmAubWVkaWEtcmVzcG9uc2l2ZWAgLSBUaGlzIG1ha2VzIGEgdGhlIGAubWVkaWEtcmVzcG9uc2l2ZWAgZGl2IGEgY29udGFpbmVyIGZvciBhbnkgbWVkaWEgZWxlbWVudCAoaWZyYW1lLCB2aWRlbywgLi4uICkgdGhhdCByZXNwb25zaXZlIHNjYWxlcyB3aXRoIGEgZml4IHJhdGlvLlxuVGhlIG1lZGlhIGVsZW1lbnQgKCBjaGlsZCApIG5lZWRzIHRoZSBjbGFzcyBgLm1lZGlhYCB0byBmdWxseSBmaWxsIG91dCB0aGUgcGFyZW50cyBzaXplLlxuXG5UaGUgYC5tZWRpYS1yZXNwb25zaXZlYCBjb21wb25lbnQgaGFzIHRvIHByZWRlZmluZWQgbW9kaWZpZXJzOiBgLi1tZWRpYS00LTNgLCBgLi1tZWRpYS0xNi05YCB0aGF0IGRlZmluZSBhIGZpeCByYXRpby5cblxuYGBgamFkZVxuZGl2Lm1lZGlhLXJlc3BvbnNpdmUuLW1lZGlhLTE2LTlcblx0aWZyYW1lLm1lZGlhKHNyYz1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1RDZDZQZnhPeTBZXCIpXG5gYGBcblxuYGBgamFkZVxuZGl2Lm1lZGlhLXJlc3BvbnNpdmUuLW1lZGlhLTQtM1xuXHRpZnJhbWUubWVkaWEoc3JjPVwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvVENkNlBmeE95MFlcIilcbmBgYFxuXG4qL1xuLm1lZGlhLXJlc3BvbnNpdmUge1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogNTAlO1xufVxuLm1lZGlhLXJlc3BvbnNpdmUuLW1lZGlhLTEtMSB7XG4gIHBhZGRpbmctYm90dG9tOiA1MCU7XG59XG4ubWVkaWEtcmVzcG9uc2l2ZS4tbWVkaWEtNC0zIHtcbiAgcGFkZGluZy1ib3R0b206IDc1JTtcbn1cbi5tZWRpYS1yZXNwb25zaXZlLi1tZWRpYS0xNi05IHtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcbn1cbi5tZWRpYS1yZXNwb25zaXZlID4gLm1lZGlhIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4vKlxuLS0tXG5uYW1lOiAub3ZlcmZsb3ctdGV4dFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLm92ZXJmbG93LXRleHRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gdGV4dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgY29tcG9uZW50IGN1dHMgdGhlIHRleHQgb24gYSBnaXZlbiBoZWlnaHQgYW5kIGFkZHMgYSBmYWRlb3V0IGVmZmVjdC5cblRoaXMgaXMgdXNlZnVsbCBmb3IgdGV4dCBjb250YWluZXJzIHRoYXQgaGF2ZSBtb3JlIGNvbnRlbnQgdGhhbiBzcGFjZS5cblxuXG5gYGBqYWRlXG5kaXYub3ZlcmZsb3ctdGV4dChzdHlsZT1cIndpZHRoOiAyMDBweDtoZWlnaHQ6IDcwcHhcIikgVGhpcyBpcyBhIHZlcnkgbG9uZyB0ZXh0IHRoYXQgaXMgcndhcGVkIGFuZCBjdXQgYXQgdGhlIGVuZC5cbmBgYFxuKi9cbi5vdmVyZmxvdy10ZXh0IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm92ZXJmbG93LXRleHQ6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMi4xODc1cmVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwyNTUsMjU1LDApLCAjZmZmIDcwJSk7XG59XG4vKlxuLS0tXG5uYW1lOiAuc2hhZG93LWJveFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLnNoYWRvdy1ib3hcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gc2hhZG93XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCBib3gtc2hhZG93cyB3aXRoIGRpZmZlcmVudCB2YXJpYW50c1xuXG4jIyBEZWZhdWx0IHZhcmlhbnRzXG5gYGBqYWRlXG5kaXYuc2hhZG93LWJveCBEZW1vIGNvbnRlbnRcbmRpdi5zaGFkb3ctYm94Li1pbnNldCBEZW1vIGNvbnRlbnRcbmRpdi5zaGFkb3ctYm94Li16ZXJvIFVzZSB6ZXJvIHNoYWRvdyBpbiBhbmltYXRpb25zXG5gYGBcbiovXG4uc2hhZG93LWJveCB7XG4gIGJveC1zaGFkb3c6IDBweCAxcHggNnB4IDBweCByZ2JhKDAsMCwwLDAuMTcpO1xufVxuLnNoYWRvdy1ib3guLWluc2V0IHtcbiAgYm94LXNoYWRvdzogaW5zZXQgMHB4IDFweCA2cHggMHB4IHJnYmEoMCwwLDAsMC4xNyk7XG59XG4uc2hhZG93LWJveC4temVybyB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDBweCAwcHggMHB4IDBweCByZ2JhKDAsMCwwLDAuMTcpO1xufVxuLypcbi0tLVxubmFtZTogLnNwYWNlci1ib3hcbmNhdGVnb3J5OiBDb21wb25lbnRzLy5zcGFjZXItYm94XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuIC0gYm94LW1vZGVsXG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byBjb250cm9sIHNwYWNpbmcgb2YgYSBib3guIEl0IG1haW5seSBzZXRzIHRoZSBtYXJnaW4gYW5kIHBhZGRpbmcgd2l0aCBhIGZpeGVkIHNldCBvZiBjb25maWd1cmF0aW9uIHZhbHVlcy5cblRoZSBkZWZhdWx0IHNwYWNlIHNpemVzIGFyZTpcbmBgYFxueHhzOiAyXG54czogNFxuczogOFxuZGVmYXVsdDogMTZcbmw6IDMyXG54bDogNjRgXG5gYGBcblxuXG5UbyBjb250cm9sIHRoZSBwYWRkaW5nL21hcmdpbiBmb3IgYSBzcGVjaWZpYyBzcGFjZSB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHZhcmlhbnRzOlxuYGBgXG4te2tpbmR9LXtzaWRlfS17c3BhY2V9XG4te2tpbmR9LXtheGlzfS17c3BhY2V9XG4te2tpbmR9LXtzcGFjZX1cblxua2luZDogbSB8IHBcbnNpZGU6IHRvcCB8IHJpZ2h0IHwgYm90dG9tIHwgbGVmdFxuc3BhY2U6IHh4cyB8wqB4cyB8wqBzIHzCoGwgfCB4bFxuYXhpczogdiB8wqBoXG5gYGBcblxuT3IgdG8gdXNlIHRoZSBgZGVmYXVsdGAgcGFkZGluZyBzcGFjZSB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHNob3J0Y3V0czpcbmBgYFxuLXtraW5kfS17c2lkZX1cbi17a2luZH0te2F4aXN9XG4te2tpbmR9XG5cbmtpbmQ6IG0gfCBwXG5zaWRlOiB0b3AgfCByaWdodCB8IGJvdHRvbSB8IGxlZnRcbmF4aXM6IHYgfMKgaFxuYGBgXG5cbiMjIEV4YW1wbGVzXG5cbkhlcmUgYXJlIHNvbWUgZXhhbXBsZSB0aGF0IHNob3cgdGhlIHVzYWdlIHdpdGggc3BlY2lmaWMgc3BhY2Ugc2l6ZXMuXG5gYGBqYWRlXG5kaXYuc3BhY2VyLWJveC4tbS1zXG5cdGRpdi5haWdpcy1kZWJ1ZyBBcHBseSBzIG1hcmdpbiBvbiBhbGwgc2lkZXNcbmBgYFxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLXAtdi14bFxuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgeGwgcGFkZGluZyBvbiB2ZXJ0aWNhbCBzaWRlc1xuYGBgXG5gYGBqYWRlXG5kaXYuc3BhY2VyLWJveC4tcC10b3AtbFxuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgbCBwYWRkaW5nIG9uIHRvcCBzaWRlXG5gYGBcblxuSGVyZSBhcmUgc29tZSBleGFtcGxlcyB0aGF0IHNob3cgdGhlIHVzYWdlIHdpdGggZGVmYXVsdCBzcGFjZSBzaXplLlxuXG5gYGBqYWRlXG5kaXYuc3BhY2VyLWJveC4tcFxuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgZGVmYXVsdCBwYWRkaW5nIG9uIGFsbCBzaWRlc1xuYGBgXG5gYGBqYWRlXG5kaXYuc3BhY2VyLWJveC4tbS1oXG5cdGRpdi5haWdpcy1kZWJ1ZyBBcHBseSBkZWZhdWx0IG1hcmdpbiBvbiBob3Jpem9udGFsIGF4aXNcbmBgYFxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLW0tYm90dG9tXG5cdGRpdi5haWdpcy1kZWJ1ZyBBcHBseSBkZWZhdWx0IG1hcmdpbiBvbiBib3R0b20gc2lkZVxuYGBgXG5cbiMjIEF1dG8gbWFyZ2luXG5cbkZvciBzZXR0aW5nIHRoZSB2ZXJ0aWNhbCBtYXJnaW4gdG8gYXV0byB0aGUgYC4tYXV0b2AgdmFyaWFudCBjYW4gYmUgdXNlZC5cblxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLWF1dG8oc3R5bGU9XCJ3aWR0aDogMjAwcHhcIilcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IG1hcmdpbiBhdXRvIHRvIGxlZnQgYW5kIHJpZ2h0XG5gYGBcblxuKi9cbi5zcGFjZXItYm94Li1tLXRvcC14eHMge1xuICBtYXJnaW4tdG9wOiAwLjEyNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXRvcC14eHMge1xuICBwYWRkaW5nLXRvcDogMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1yaWdodC14eHMge1xuICBtYXJnaW4tcmlnaHQ6IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLXAtcmlnaHQteHhzIHtcbiAgcGFkZGluZy1yaWdodDogMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1ib3R0b20teHhzIHtcbiAgbWFyZ2luLWJvdHRvbTogMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1ib3R0b20teHhzIHtcbiAgcGFkZGluZy1ib3R0b206IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0tbGVmdC14eHMge1xuICBtYXJnaW4tbGVmdDogMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1sZWZ0LXh4cyB7XG4gIHBhZGRpbmctbGVmdDogMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1oLXh4cyB7XG4gIG1hcmdpbi1sZWZ0OiAwLjEyNXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjEyNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXYteHhzIHtcbiAgbWFyZ2luLXRvcDogMC4xMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0teHhzIHtcbiAgbWFyZ2luOiAwLjEyNXJlbSAwLjEyNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWgteHhzIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjEyNXJlbTtcbiAgcGFkZGluZy1yaWdodDogMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC12LXh4cyB7XG4gIHBhZGRpbmctdG9wOiAwLjEyNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLXAteHhzIHtcbiAgcGFkZGluZzogMC4xMjVyZW0gMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS10b3AteHMge1xuICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xufVxuLnNwYWNlci1ib3guLXAtdG9wLXhzIHtcbiAgcGFkZGluZy10b3A6IDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1yaWdodC14cyB7XG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXJpZ2h0LXhzIHtcbiAgcGFkZGluZy1yaWdodDogMC4yNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWJvdHRvbS14cyB7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1ib3R0b20teHMge1xuICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWxlZnQteHMge1xuICBtYXJnaW4tbGVmdDogMC4yNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWxlZnQteHMge1xuICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1oLXhzIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW07XG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXYteHMge1xuICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0teHMge1xuICBtYXJnaW46IDAuMjVyZW0gMC4yNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWgteHMge1xuICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC12LXhzIHtcbiAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xufVxuLnNwYWNlci1ib3guLXAteHMge1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS10b3AtcyB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXRvcC1zIHtcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXJpZ2h0LXMge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXJpZ2h0LXMge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1ib3R0b20tcyB7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWJvdHRvbS1zIHtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWxlZnQtcyB7XG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1sZWZ0LXMge1xuICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWgtcyB7XG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xufVxuLnNwYWNlci1ib3guLW0tdi1zIHtcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1zIHtcbiAgbWFyZ2luOiAwLjVyZW0gMC41cmVtO1xufVxuLnNwYWNlci1ib3guLXAtaC1zIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXYtcyB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1zIHtcbiAgcGFkZGluZzogMC41cmVtIDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXRvcCB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG59XG4uc3BhY2VyLWJveC4tcC10b3Age1xuICBwYWRkaW5nLXRvcDogMXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXJpZ2h0IHtcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xufVxuLnNwYWNlci1ib3guLXAtcmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xufVxuLnNwYWNlci1ib3guLW0tYm90dG9tIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWJvdHRvbSB7XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xufVxuLnNwYWNlci1ib3guLW0tbGVmdCB7XG4gIG1hcmdpbi1sZWZ0OiAxcmVtO1xufVxuLnNwYWNlci1ib3guLXAtbGVmdCB7XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWgge1xuICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xufVxuLnNwYWNlci1ib3guLW0tdiB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG4uc3BhY2VyLWJveC4tbSB7XG4gIG1hcmdpbjogMXJlbSAxcmVtO1xufVxuLnNwYWNlci1ib3guLXAtaCB7XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXYge1xuICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDFyZW07XG59XG4uc3BhY2VyLWJveC4tcCB7XG4gIHBhZGRpbmc6IDFyZW0gMXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXRvcC1sIHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXRvcC1sIHtcbiAgcGFkZGluZy10b3A6IDJyZW07XG59XG4uc3BhY2VyLWJveC4tbS1yaWdodC1sIHtcbiAgbWFyZ2luLXJpZ2h0OiAycmVtO1xufVxuLnNwYWNlci1ib3guLXAtcmlnaHQtbCB7XG4gIHBhZGRpbmctcmlnaHQ6IDJyZW07XG59XG4uc3BhY2VyLWJveC4tbS1ib3R0b20tbCB7XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG4uc3BhY2VyLWJveC4tcC1ib3R0b20tbCB7XG4gIHBhZGRpbmctYm90dG9tOiAycmVtO1xufVxuLnNwYWNlci1ib3guLW0tbGVmdC1sIHtcbiAgbWFyZ2luLWxlZnQ6IDJyZW07XG59XG4uc3BhY2VyLWJveC4tcC1sZWZ0LWwge1xuICBwYWRkaW5nLWxlZnQ6IDJyZW07XG59XG4uc3BhY2VyLWJveC4tbS1oLWwge1xuICBtYXJnaW4tbGVmdDogMnJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAycmVtO1xufVxuLnNwYWNlci1ib3guLW0tdi1sIHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWwge1xuICBtYXJnaW46IDJyZW0gMnJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWgtbCB7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbiAgcGFkZGluZy1yaWdodDogMnJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXYtbCB7XG4gIHBhZGRpbmctdG9wOiAycmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWwge1xuICBwYWRkaW5nOiAycmVtIDJyZW07XG59XG4uc3BhY2VyLWJveC4tbS10b3AteGwge1xuICBtYXJnaW4tdG9wOiA0cmVtO1xufVxuLnNwYWNlci1ib3guLXAtdG9wLXhsIHtcbiAgcGFkZGluZy10b3A6IDRyZW07XG59XG4uc3BhY2VyLWJveC4tbS1yaWdodC14bCB7XG4gIG1hcmdpbi1yaWdodDogNHJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXJpZ2h0LXhsIHtcbiAgcGFkZGluZy1yaWdodDogNHJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWJvdHRvbS14bCB7XG4gIG1hcmdpbi1ib3R0b206IDRyZW07XG59XG4uc3BhY2VyLWJveC4tcC1ib3R0b20teGwge1xuICBwYWRkaW5nLWJvdHRvbTogNHJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWxlZnQteGwge1xuICBtYXJnaW4tbGVmdDogNHJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWxlZnQteGwge1xuICBwYWRkaW5nLWxlZnQ6IDRyZW07XG59XG4uc3BhY2VyLWJveC4tbS1oLXhsIHtcbiAgbWFyZ2luLWxlZnQ6IDRyZW07XG4gIG1hcmdpbi1yaWdodDogNHJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXYteGwge1xuICBtYXJnaW4tdG9wOiA0cmVtO1xuICBtYXJnaW4tYm90dG9tOiA0cmVtO1xufVxuLnNwYWNlci1ib3guLW0teGwge1xuICBtYXJnaW46IDRyZW0gNHJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWgteGwge1xuICBwYWRkaW5nLWxlZnQ6IDRyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDRyZW07XG59XG4uc3BhY2VyLWJveC4tcC12LXhsIHtcbiAgcGFkZGluZy10b3A6IDRyZW07XG4gIHBhZGRpbmctYm90dG9tOiA0cmVtO1xufVxuLnNwYWNlci1ib3guLXAteGwge1xuICBwYWRkaW5nOiA0cmVtIDRyZW07XG59XG4uc3BhY2VyLWJveC4tYXV0byB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG4vKlxuLS0tXG5uYW1lOiAuc3ZnLWljb25cbmNhdGVnb3J5OiBDb21wb25lbnRzLy5zdmctaWNvblxudGVtcGxhdGU6IGljb25zXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHN5bWJvbFxuIC0gaWNvblxuIC0gbWVkaWFcbiAtIHN2Z1xuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkRlZmluZXMgY29tbW9uIFNWRyBpY29uL3N5bWJvbCBzaXplcyBhbmQgcHJlc2VudGF0aW9uIHN0eWxlcy5cblxuIyMgRGVmYXVsdFxuXG5UaGUgPHNwYW4gY2xhc3M9XCJ2YXJpYWJsZVwiPi1kZWZhdWx0PC9zcGFuPiB2YXJpYW50IGFwcGxpZXMgYXV0b21hdGljYWxseSAoYnV0IGNhbiBiZSBzcGVjaWZpZWQgZXhwbGljaXRseSBpZiBkZXNpcmVkKS5cblxuYGBgamFkZVxuZGl2KHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyBib3JkZXI6IHNvbGlkIDFweCAjY2NjO1wiKVxuICBzdmcuc3ZnLWljb25cbiAgICB1c2UoeGxpbms6aHJlZj1cIiNzdGFycy1pY29uXCIpXG5cbmRpdihzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazsgYm9yZGVyOiBzb2xpZCAxcHggI2NjYztcIilcbiAgc3ZnLnN2Zy1pY29uLi1kZWZhdWx0XG4gICAgdXNlKHhsaW5rOmhyZWY9XCIjc3RhcnMtaWNvblwiKVxuYGBgXG5cbiMjIC1zY2FsZVxuXG5UaGUgPHNwYW4gY2xhc3M9XCJ2YXJpYWJsZVwiPi1zcGFuPC9zcGFuPiB2YXJpYW50IHdpbGwgYXV0b21hdGljYWxseSBmaXQgKHNjYWxlICYgY2VudGVyKSB0aGUgU1ZHIGljb24gaW50byBpdHMgcGFyZW50IGNvbnRhaW5lci5cblxuYGBgamFkZVxuZGl2KHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7IGJvcmRlcjogc29saWQgMXB4ICNjY2M7IHdpZHRoOjUwcHg7IGhlaWdodDoxMDBweFwiKVxuICBzdmcuc3ZnLWljb24uLXNjYWxlXG4gICAgdXNlKHhsaW5rOmhyZWY9XCIjc3RhcnMtaWNvblwiKVxuXG5kaXYoc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazsgYm9yZGVyOiBzb2xpZCAxcHggI2NjYzsgd2lkdGg6MjAwcHg7IGhlaWdodDoxMDBweFwiKVxuICBzdmcuc3ZnLWljb24uLXNjYWxlXG4gICAgdXNlKHhsaW5rOmhyZWY9XCIjc3RhcnMtaWNvblwiKVxuYGBgXG5cblxuKi9cbi5zdmctaWNvbiB7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uc3ZnLWljb24uLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi8qXG4tLS1cbm5hbWU6IC50ZXh0LXN0eWxlXG5jYXRlZ29yeTogQ29tcG9uZW50cy8udGV4dC1zdHlsZVxudGFnOlxuIC0gY29tcG9uZW50XG4gLSB0ZXh0XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSB0ZXh0IHN0eWxpbmcgY29tcG9uZW50IGZvciBkaWZmZXJlbnQgdGV4dCBzdHlsZXNcblxuIyMgRGVmYXVsdCBoZWFkaW5nXG5cbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlIERlZmF1bHQgaGVhZGluZ1xuYGBgXG5cbiMjIEgxXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4taDEgVGhlIGgxIGhlYWRlclxuXG5gYGBcblxuIyMgSDJcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1oMiBUaGUgaDIgaGVhZGVyXG5gYGBcblxuIyMgSDNcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1oMyBUaGUgaDMgaGVhZGVyXG5gYGBcblxuIyMgQm9sZFxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWJvbGQgQm9sZCB0ZXh0XG5gYGBcblxuIyMgQWxpZ24gY2VudGVyXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4tY2VudGVyIENlbnRlcmVkIHRleHRcbmBgYFxuXG4jIyBBbGlnbiByaWdodFxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLXJpZ2h0IFJpZ2h0IGFsaWduZWQgdGV4dFxuYGBgXG5cbiovXG4vKlxuLS0tXG5uYW1lOiAudHJhbnNmb3JtLWJveFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLnRyYW5zZm9ybS1ib3hcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gdHJhbnNmb3JtXG4gLSBib3gtbW9kZWxcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGJveCB0byBjb250cm9sIGNvbW1vbiB0cmFuc2Zvcm1hdGlvbnNcblxuIyMgUm90YXRlXG5gYGBqYWRlXG5kaXYudHJhbnNmb3JtLWJveC4tcm90OTAgU29tZSBkZW1vIGNvbnRlbnRcbmRpdi50cmFuc2Zvcm0tYm94Li1yb3QxODAgU29tZSBkZW1vIGNvbnRlbnRcbmRpdi50cmFuc2Zvcm0tYm94Li1yb3QyNzAgU29tZSBkZW1vIGNvbnRlbnRcbmBgYFxuXG4jIyBGbGlwXG5gYGBqYWRlXG5kaXYudHJhbnNmb3JtLWJveC4tZmxpcFggU29tZSBkZW1vIGNvbnRlbnRcbmRpdi50cmFuc2Zvcm0tYm94Li1mbGlwWSBTb21lIGRlbW8gY29udGVudFxuYGBgXG4qL1xuLnRyYW5zZm9ybS1ib3guLXJvdDkwIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuLnRyYW5zZm9ybS1ib3guLXJvdDE4MCB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG4udHJhbnNmb3JtLWJveC4tcm90MjcwIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcbn1cbi50cmFuc2Zvcm0tYm94Li1mbGlwWCB7XG4gIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcbn1cbi50cmFuc2Zvcm0tYm94Li1mbGlwWSB7XG4gIHRyYW5zZm9ybTogc2NhbGVZKC0xKTtcbn1cbi8qXG4tLS1cbm5hbWU6IC50cmFuc2l0aW9uLWJveFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLnRyYW5zaXRpb24tYm94XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHRyYW5zaXRpb25cbiAtIGJveC1tb2RlbFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYm94IHRvIGNvbnRyb2wgdHJhbnNpdGlvbiBvbiBkaXZzXG5cbiMjIEVuYWJsZSBhbGwgdHJhbnNpdGlvbnNcbmBgYGphZGVcbmRpdi50cmFuc2l0aW9uLWJveC4tYWxsIEFsbCB0cmFuc2l0aW9ucyBlbmFibGVkXG5gYGBcblxuIyMgQ29udHJvbCB0aGUgc3BlZWQgb2YgdGhlIHRyYW5zaXRpb25cbmBgYGphZGVcbmRpdi50cmFuc2l0aW9uLWJveC4tYWxsLi1zbG93IEFwcGx5IHRoZSBzbG93IGR1cmF0aW9uIHZhcmlhbnRcbmRpdi50cmFuc2l0aW9uLWJveC4tYWxsLi1mYXN0IEFwcGx5IHRoZSBmYXN0IGR1cmF0aW9uIHZhcmlhbnRcbmBgYFxuKi9cbi50cmFuc2l0aW9uLWJveCB7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcbn1cbi50cmFuc2l0aW9uLWJveC4tc2xvdyB7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNnM7XG59XG4udHJhbnNpdGlvbi1ib3guLWZhc3Qge1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE1cztcbn1cbi5fY2xlYXIge1xuICBjbGVhcjogYm90aDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAzMi4wNjI1cmVtKSB7XG4gIC5fY29sbGFwc2VkLW1lZGl1bSB7XG4gICAgdmlzaWJpbGl0eTogY29sbGFwc2U7XG4gIH1cbn1cbi5faGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLl9vdmVyZmxvdy1oaWRkZW4ge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLl9yZWxhdGl2ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5idXR0b24tc3R5bGUge1xuICB3aGl0ZS1zcGFjZTogaW5oZXJpdDtcbn1cbi5idXR0b24tc3R5bGUuLXRvZ2dsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogc29saWQgMC4wODMxMjVyZW0gIzA2MzA1ZjtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBjb2xvcjogIzA2MzA1ZjtcbiAgcGFkZGluZzogMC4yNXJlbSAxcmVtO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMXMgZWFzZSwgY29sb3IgMC4xcyBlYXNlO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLmJ1dHRvbi1zdHlsZS4tdG9nZ2xlIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMnJlbTtcbiAgICBib3JkZXItd2lkdGg6IDAuMDkzNzVyZW07XG4gIH1cbn1cbi5idXR0b24tc3R5bGUuLXRvZ2dsZS4tc2VsZWN0ZWQsXG4uYnV0dG9uLXN0eWxlLi10b2dnbGU6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjMDYzMDVmO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5idXR0b24tc3R5bGUuLXRvZ2dsZS4tc2VsZWN0ZWQge1xuICBjdXJzb3I6IGluaGVyaXQ7XG59XG4uYnV0dG9uLXN0eWxlLi1ib2luazpob3ZlciB7XG4gIGFuaW1hdGlvbjogYm9pbmsgMC4zM3MgZWFzZTtcbn1cbkAtbW96LWtleWZyYW1lcyBib2luayB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDc1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbkAtd2Via2l0LWtleWZyYW1lcyBib2luayB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDc1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbkAtby1rZXlmcmFtZXMgYm9pbmsge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA3NSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5Aa2V5ZnJhbWVzIGJvaW5rIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNzUpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLmNvbnRlbnQtaXRlbS1sYXlvdXQgPiAuY29udGVudC1pdGVtLi1ibG9jay4tZmxvYXQge1xuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG4gIH1cbiAgLmNvbnRlbnQtaXRlbS1sYXlvdXQgPiAuY29udGVudC1pdGVtLi1ibG9jay4tZmxvYXQuLWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMnJlbTtcbiAgfVxuICAuY29udGVudC1pdGVtLWxheW91dCA+IC5jb250ZW50LWl0ZW0uLWJsb2NrLi1mbG9hdC4tcmlnaHQge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tbGVmdDogMnJlbTtcbiAgfVxuICAuY29udGVudC1pdGVtLWxheW91dCA+IC5jb250ZW50LWl0ZW0uLWJsb2NrLi1mbG9hdC4tdzEtNCB7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmNvbnRlbnQtaXRlbS1sYXlvdXQgPiAuY29udGVudC1pdGVtLi1ibG9jay4tZmxvYXQuLXcxLTMge1xuICAgIG1heC13aWR0aDogMzMuMzMlO1xuICB9XG4gIC5jb250ZW50LWl0ZW0tbGF5b3V0ID4gLmNvbnRlbnQtaXRlbS4tYmxvY2suLWZsb2F0Li13MS0yIHtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuY29udGVudC1pdGVtLWxheW91dCA+IC5jb250ZW50LWl0ZW0uLWJsb2NrLi1mbG9hdC4tdzItMyB7XG4gICAgbWF4LXdpZHRoOiA2Ni42NiU7XG4gIH1cbn1cbi5jb250ZW50LWl0ZW0tbGF5b3V0ID4gLmNvbnRlbnQtaXRlbSArIC5jb250ZW50LWl0ZW0ge1xuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xufVxuLmNvbnRlbnQtaXRlbS1sYXlvdXQgPiAuY29udGVudC1pdGVtICsgLmNvbnRlbnQtaXRlbS4tYmxvY2s6bm90KC4tZmxvYXQpIHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbn1cbi5jb250ZW50LWl0ZW0tbGF5b3V0ID4gLmNvbnRlbnQtaXRlbS4tYmxvY2s6bm90KC4tZmxvYXQpICsgLmNvbnRlbnQtaXRlbTpub3QoLi1mbG9hdCkge1xuICBtYXJnaW4tdG9wOiAycmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLmNvbnRlbnQtaXRlbS1sYXlvdXQgPiAuY29udGVudC1pdGVtLi1ibG9jazpub3QoLi1mbG9hdCkgKyAuY29udGVudC1pdGVtOm5vdCguLWZsb2F0KSB7XG4gICAgbWFyZ2luLXRvcDogMy43NXJlbTtcbiAgfVxufVxuLmNvbnRlbnQtaXRlbS1sYXlvdXQgPiAuY29udGVudC1pdGVtLi1oZWFkaW5nICsgLmNvbnRlbnQtaXRlbS4taGVhZGluZyB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuY29udGVudC1pdGVtLWxheW91dCA+IC5jb250ZW50LWl0ZW0uLWhlYWRpbmcgKyAuY29udGVudC1pdGVtLi1wYXJhIHtcbiAgICBtYXJnaW4tdG9wOiAyLjgxMjVyZW07XG4gIH1cbn1cbi5jb250ZW50LWl0ZW0tbGF5b3V0ID4gLmNvbnRlbnQtaXRlbS4tcGFyYSArIC5jb250ZW50LWl0ZW0uLWhlYWRpbmcge1xuICBtYXJnaW4tdG9wOiAyLjgxMjVyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuY29udGVudC1pdGVtLWxheW91dCA+IC5jb250ZW50LWl0ZW0uLXBhcmEgKyAuY29udGVudC1pdGVtLi1oZWFkaW5nIHtcbiAgICBtYXJnaW4tdG9wOiA0LjM3NXJlbTtcbiAgfVxufVxuLmNvbnRlbnQtc3R5bGUuLWNlbnRlcmVkIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWxlZnQ6IDJyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDJyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuY29udGVudC1zdHlsZS4tY2VudGVyZWQge1xuICAgIG1heC13aWR0aDogNjcuMDYyNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cbn1cbi5jb250ZW50LXN0eWxlLi1maWxsIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5jb250ZW50LXN0eWxlLi1uYXJyb3cuLWNlbnRlcmVkIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWxlZnQ6IDJyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDJyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuY29udGVudC1zdHlsZS4tbmFycm93Li1jZW50ZXJlZCB7XG4gICAgbWF4LXdpZHRoOiA1MS44NzVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuaGVhZGVyIHtcbiAgei1pbmRleDogMjtcbiAgaGVpZ2h0OiAyLjQzNzVyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuZml4ZWQtcGFnZS1sYXlvdXQgPiAuaGVhZGVyIHtcbiAgICBoZWlnaHQ6IDMuMjVyZW07XG4gIH1cbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50IHtcbiAgei1pbmRleDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50Li1tYXJnaW4tdG9wIHtcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDIuNDM3NXJlbSk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuZml4ZWQtcGFnZS1sYXlvdXQgPiAuY29udGVudC4tbWFyZ2luLXRvcCB7XG4gICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDMuMjVyZW0pO1xuICB9XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhciB7XG4gIHotaW5kZXg6IDE7XG4gIGJvdHRvbTogaW5oZXJpdDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDIuNDM3NXJlbTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGVhc2UsIG9wYWNpdHkgMC4yNXMgZWFzZSwgdmlzaWJpbGl0eSAwcyBlYXNlIDAuMjVzO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIuNDM3NXJlbSk7XG4gIHZpc2liaWxpdHk6IGNvbGxhcHNlO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLnNpZGViYXIge1xuICAgIHdpZHRoOiAyMy40Mzc1cmVtO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhciB7XG4gICAgbWFyZ2luLXRvcDogMy4yNXJlbTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLnNpZGViYXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMy4yNXJlbSk7XG4gIH1cbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1zaG93IHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzLCB0cmFuc2Zvcm0gMC4yNXMgZWFzZSwgb3BhY2l0eSAwLjI1cyBlYXNlO1xufVxuLmhvcml6b250YWwtcnVsZXIge1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci10b3A6IHNvbGlkIDFweCAjM2YzZjNmO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG4uaG9yaXpvbnRhbC1ydWxlci4tc2hvcnQge1xuICB3aWR0aDogOS4zNzVyZW07XG4gIG1heC13aWR0aDogNTAlO1xufVxuLmxheWVyLWJveCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xufVxuLmxheWVyLWJveC4tb3ZlcmZsb3cge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMDtcbn1cbi5saXN0LXN0eWxlID4gbGkge1xuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xuICBtYXJnaW4tbGVmdDogNHJlbTtcbn1cbi5saXN0LXN0eWxlID4gbGk6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IC00cmVtO1xuICB3aWR0aDogNHJlbTtcbn1cbi5saXN0LXN0eWxlLi1vcmRlcmVkIHtcbiAgY291bnRlci1yZXNldDogbGlzdDtcbn1cbi5saXN0LXN0eWxlLi1vcmRlcmVkID4gbGk6OmJlZm9yZSB7XG4gIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0O1xuICBjb250ZW50OiBjb3VudGVyKGxpc3QsIGxvd2VyLWFscGhhKSAnKSAnO1xuICBjb2xvcjogIzA2MzA1ZjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cbi5saXN0LXN0eWxlLi11bm9yZGVyZWQgPiBsaTo6YmVmb3JlIHtcbiAgY29udGVudDogJy0gJztcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIHBhZGRpbmctcmlnaHQ6IDFjaDtcbn1cbi5tZW51IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xufVxuLm1lbnUgPiAuaXRlbSB7XG4gIG1pbi1oZWlnaHQ6IDMuNzVyZW07XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlO1xufVxuLm1lbnUgPiAuaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGY4ZmE7XG59XG4ucGFyYWxsYXgtY29udGFpbmVyIHtcbiAgcGVyc3BlY3RpdmU6IDFweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5wYXJhbGxheC1jb250YWluZXIgPiAubGF5ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdy15OiB2aXNpYmxlO1xufVxuLnN2Zy1pY29uIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xufVxuLnN2Zy1pY29uLi1zdHJva2Uge1xuICBzdHJva2U6IGN1cnJlbnRDb2xvcjtcbn1cbi5zdmctaWNvbi4tZmlsbCB7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cbi5zdmctaWNvbi4tYmFjay1hcnJvdyB7XG4gIGxlZnQ6IDMycHg7XG4gIHdpZHRoOiAxLjY4NzVyZW07XG4gIGhlaWdodDogMS42ODc1cmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLnN2Zy1pY29uLi1iYWNrLWFycm93IHtcbiAgICB3aWR0aDogMi44MTI1cmVtO1xuICAgIGhlaWdodDogMi44MTI1cmVtO1xuICB9XG59XG4uc3ZnLWljb24uLWgyIHtcbiAgYmFja2dyb3VuZDogIzA2MzA1ZjtcbiAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgd2lkdGg6IDQuMTYyNXJlbTtcbiAgaGVpZ2h0OiA0LjE2MjVyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuc3ZnLWljb24uLWgyIHtcbiAgICB3aWR0aDogNi4zMTI1cmVtO1xuICAgIGhlaWdodDogNi4zMTI1cmVtO1xuICB9XG59XG4uc3ZnLWljb24uLW1lbnUtaGVhZGVyIHtcbiAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7XG59XG4uc3ZnLWljb24uLW1lbnUtaGVhZGVyIC5saW5lIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMzNzIGVhc2U7XG4gIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0O1xufVxuLnN2Zy1pY29uLi1tZW51LWhlYWRlci4tb3BlbiAubGluZS4tdGwge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMnB4LCAxMnB4KSByb3RhdGUoLTEzNWRlZykgdHJhbnNsYXRlKC0xcHgsIC0zcHgpIHNjYWxlWCgwLjUpO1xufVxuLnN2Zy1pY29uLi1tZW51LWhlYWRlci4tb3BlbiAubGluZS4tdHIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMnB4LCAxMnB4KSByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUoLTFweCwgLTlweCkgc2NhbGVYKDAuNSk7XG59XG4uc3ZnLWljb24uLW1lbnUtaGVhZGVyLi1vcGVuIC5saW5lLi1ibCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEycHgsIDEycHgpIHJvdGF0ZSgtMzE1ZGVnKSB0cmFuc2xhdGUoLTFweCwgLTE1cHgpIHNjYWxlWCgwLjUpO1xufVxuLnN2Zy1pY29uLi1tZW51LWhlYWRlci4tb3BlbiAubGluZS4tYnIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMnB4LCAxMnB4KSByb3RhdGUoLTIyNWRlZykgdHJhbnNsYXRlKC0xcHgsIC0yMXB4KSBzY2FsZVgoMC41KTtcbn1cbi5zdmctaWNvbi4tbWVudS1pdGVtIHtcbiAgd2lkdGg6IDEuODc1cmVtO1xuICBoZWlnaHQ6IDEuODc1cmVtO1xuICBiYWNrZ3JvdW5kOiAjMDYzMDVmO1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xufVxuLnN2Zy1pY29uLi1sb2dvLWhlYWRlciB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICB3aWR0aDogMi40OTMxMjVyZW07XG4gIGhlaWdodDogMS40OTkzNzVyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuc3ZnLWljb24uLWxvZ28taGVhZGVyIHtcbiAgICB3aWR0aDogMy41MjMxMjVyZW07XG4gICAgaGVpZ2h0OiAyLjExOTM3NXJlbTtcbiAgfVxufVxuLnN2Zy1pY29uLi14bCB7XG4gIHdpZHRoOiAzcmVtO1xuICBoZWlnaHQ6IDNyZW07XG59XG4uc3ZnLWljb24uLXh4bCB7XG4gIHdpZHRoOiA0LjVyZW07XG4gIGhlaWdodDogNC41cmVtO1xufVxuLnN2Zy1pY29uLi10b3BpYy1vdmVydmlldy10aWxlIHtcbiAgd2lkdGg6IDQuNXJlbTtcbiAgaGVpZ2h0OiA0LjVyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAuc3ZnLWljb24uLXRvcGljLW92ZXJ2aWV3LXRpbGUge1xuICAgIHdpZHRoOiA4cmVtO1xuICAgIGhlaWdodDogOHJlbTtcbiAgfVxufVxuLnN2Zy1pY29uLi10b3BpYy1vdmVydmlldy1udWRnZS11cCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4wOTM3NXJlbSk7XG59XG4udGFibGUtc3R5bGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xufVxuLnRhYmxlLXN0eWxlIHRkLFxuLnRhYmxlLXN0eWxlIHRoLFxuLnRhYmxlLXN0eWxlIHRyIHtcbiAgYm9yZGVyOiBub25lIDFweCAjMDAwO1xuICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLnRhYmxlLXN0eWxlLi1uby12ZXJ0aWNhbC1saW5lcyB0ZCxcbi50YWJsZS1zdHlsZS4tbm8tdmVydGljYWwtbGluZXMgdGgsXG4udGFibGUtc3R5bGUuLW5vLXZlcnRpY2FsLWxpbmVzIHRyIHtcbiAgYm9yZGVyLWxlZnQ6IG5vbmUgMHB4O1xuICBib3JkZXItcmlnaHQ6IG5vbmUgMHB4O1xufVxuLnRhYmxlLXN0eWxlIHRkOm5vdCg6bGFzdC1jaGlsZCksXG4udGFibGUtc3R5bGUgdGg6bm90KDpsYXN0LWNoaWxkKSB7XG4gIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7XG59XG4udGFibGUtc3R5bGUgdHIge1xuICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbn1cbi50YWJsZS1zdHlsZS4tYm9yZGVyIHtcbiAgYm9yZGVyOiBzb2xpZCAxcHggIzAwMCAhaW1wb3J0YW50O1xufVxuLnRhYmxlLXN0eWxlIC4tYm9yZGVyIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cbi50YWJsZS1zdHlsZSAuLW5vLWJvcmRlciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cbi50YWJsZS1zdHlsZSAuLWJvcmRlci10b3Age1xuICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZCAhaW1wb3J0YW50O1xufVxuLnRhYmxlLXN0eWxlIC4tbm8tYm9yZGVyLXRvcCB7XG4gIGJvcmRlci10b3Atc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcbn1cbi50YWJsZS1zdHlsZSAuLWJvcmRlci1sZWZ0IHtcbiAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4udGFibGUtc3R5bGUgLi1uby1ib3JkZXItbGVmdCB7XG4gIGJvcmRlci1sZWZ0LXN0eWxlOiBub25lICFpbXBvcnRhbnQ7XG59XG4udGFibGUtc3R5bGUgLi1ib3JkZXItYm90dG9tIHtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbn1cbi50YWJsZS1zdHlsZSAuLW5vLWJvcmRlci1ib3R0b20ge1xuICBib3JkZXItYm90dG9tLXN0eWxlOiBub25lICFpbXBvcnRhbnQ7XG59XG4udGFibGUtc3R5bGUgLi1ib3JkZXItcmlnaHQge1xuICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4udGFibGUtc3R5bGUgLi1uby1ib3JkZXItcmlnaHQge1xuICBib3JkZXItcmlnaHQtc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcbn1cbi50YWJsZS1zdHlsZSAuLWJvcmRlci1oIHtcbiAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbn1cbi50YWJsZS1zdHlsZSAuLW5vLWJvcmRlci1oIHtcbiAgYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lICFpbXBvcnRhbnQ7XG59XG4udGFibGUtc3R5bGUgLi1ib3JkZXItdiB7XG4gIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4udGFibGUtc3R5bGUgLi1uby1ib3JkZXItdiB7XG4gIGJvcmRlci10b3Atc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZSAhaW1wb3J0YW50O1xufVxuLnRleHQtc3R5bGUuLWJ1dHRvbiB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICBsaW5lLWhlaWdodDogMS4xMjVyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAudGV4dC1zdHlsZS4tYnV0dG9uIHtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU2MjVyZW07XG4gIH1cbn1cbi50ZXh0LXN0eWxlLi1oMSB7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0Njg3NXJlbTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAzMi4wNjI1cmVtKSB7XG4gIC50ZXh0LXN0eWxlLi1oMSB7XG4gICAgZm9udC1zaXplOiAzLjEyNXJlbTtcbiAgICBsaW5lLWhlaWdodDogNC4yNXJlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4xNTYyNXJlbTtcbiAgfVxufVxuLnRleHQtc3R5bGUuLWgxLWhlYWRlciB7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDQ2ODc1cmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLnRleHQtc3R5bGUuLWgxLWhlYWRlciB7XG4gICAgZm9udC1zaXplOiAxLjg3NXJlbTtcbiAgICBsaW5lLWhlaWdodDogMi41NjI1cmVtO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA5Mzc1cmVtO1xuICB9XG59XG4udGV4dC1zdHlsZS4taDEtc3ViIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAzMi4wNjI1cmVtKSB7XG4gIC50ZXh0LXN0eWxlLi1oMS1zdWIge1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS42ODc1cmVtO1xuICB9XG59XG4udGV4dC1zdHlsZS4taDIge1xuICBmb250LXdlaWdodDogOTAwO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjY4NzVyZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA4ODc1cmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLnRleHQtc3R5bGUuLWgyIHtcbiAgICBmb250LXNpemU6IDIuMjVyZW07XG4gICAgbGluZS1oZWlnaHQ6IDMuMDYyNXJlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4xNTYyNXJlbTtcbiAgfVxufVxuLnRleHQtc3R5bGUuLWgyLXN1YiB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU2MjVyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzIuMDYyNXJlbSkge1xuICAudGV4dC1zdHlsZS4taDItc3ViIHtcbiAgICBmb250LXNpemU6IDEuMzc1cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjg3NXJlbTtcbiAgfVxufVxuLnRleHQtc3R5bGUuLWgzIHtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMTg3NXJlbTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAzMi4wNjI1cmVtKSB7XG4gIC50ZXh0LXN0eWxlLi1oMyB7XG4gICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS40Mzc1cmVtO1xuICB9XG59XG4udGV4dC1zdHlsZS4tcGFyYSB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICBsaW5lLWhlaWdodDogMS4wNjI1cmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLnRleHQtc3R5bGUuLXBhcmEge1xuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgfVxufVxuLnRleHQtc3R5bGUuLWJsb2NrLWNhcHRpb24ge1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyLjA2MjVyZW0pIHtcbiAgLnRleHQtc3R5bGUuLWJsb2NrLWNhcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XG4gIH1cbn1cbi50ZXh0LXN0eWxlLi1lbSB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG4udGV4dC1zdHlsZS4tY29sb3ItcHJpbWFyeSB7XG4gIGNvbG9yOiAjMDYzMDVmO1xufVxuLnRleHQtc3R5bGUuLWNvbG9yLXByaW1hcnktZGFyayB7XG4gIGNvbG9yOiAjMTgyYTQ5O1xufVxuLnRleHQtc3R5bGUuLWNvbG9yLXRleHQge1xuICBjb2xvcjogIzAwMDtcbn1cbi50ZXh0LXN0eWxlLi1jb2xvci13aGl0ZSB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLnRleHQtc3R5bGUuLWxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMTg3NXJlbTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAzMi4wNjI1cmVtKSB7XG4gIC50ZXh0LXN0eWxlLi1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41NjI1cmVtO1xuICB9XG59XG4udGV4dC1zdHlsZS4tbGluayB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG4udGV4dC1zdHlsZS4tbWVudS1pdGVtIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAxLjA2MjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjA2MjVyZW07XG59XG4udGV4dC1zdHlsZS4tdG9waWMtb3ZlcnZpZXctaXRlbSB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDFyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAzMi4wNjI1cmVtKSB7XG4gIC50ZXh0LXN0eWxlLi10b3BpYy1vdmVydmlldy1pdGVtIHtcbiAgICBmb250LXdlaWdodDogODAwO1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS42ODc1cmVtO1xuICB9XG59XG4iLCIvKiFcbi0tLVxubmFtZTogcmVtXG5jYXRlZ29yeTogRnVuY3Rpb25zL3JlbVxudGFnOlxuIC0gZnVuY3Rpb25cbi0tLVxuXG5Db252ZXJ0cyBmcm9tIGBweGAgdG8gYHJlbWAsIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYDE2cHhgIGFyZSBlcXVpdmFsZW50IHRvIGAxcmVtYC5cblxuIyMgRGVmaW5pdGlvbjpcblxuYGBgc3R5bHVzXG5yZW1zID0gcmVtKHBpeGVscyk7XG5gYGBcbiovXG5cbnJlbSggcGl4ZWxzICkge1xuXHRyZXR1cm4gdW5pdCggcGl4ZWxzIC8gMTYsICdyZW0nICk7XG59XG5cblxuLyohXG4tLS1cbm5hbWU6IGNob29zZU1heENvbnRyYXN0XG5jYXRlZ29yeTogRnVuY3Rpb25zL2Nob29zZU1heENvbnRyYXN0XG50YWc6XG4gLSBjb2xvclxuIC0gZnVuY3Rpb25cbi0tLVxuXG5HaXZlbiBvbmUgb3IgbW9yZSBmb3JlZ3JvdW5kIGNvbG9ycyBgZmdzYCBhbmQgb25lIGJhY2tncm91bmQgY29sb3IgYGJnYCxcbnJldHVybnMgdGhlIGZvcmVncm91bmQgY29sb3Igd2l0aCB0aGUgaGlnaGVzdCBjb250cmFzdCByYXRpbyB3aXRoIHJlc3BlY3QgdG8gYGJnYC5cblxuIyMgRGVmaW5pdGlvbjpcblxuYGBgc3R5bHVzXG5mZyA9IGNob29zZU1heENvbnRyYXN0KGZncywgYmcpO1xuYGBgXG5cbiMjIEV4YW1wbGU6XG5cbmBgYHN0eWx1c1xuYmcgPSB0aGVtZS5jb2xvcnMuZm9vdGVyO1xuZmcgPSB0aGVtZS5jb2xvcnMudGV4dDtcbmZnSW52ZXJ0ZWQgPSB0aGVtZS5jb2xvcnMudGV4dC1pbnZlcnRlZDtcblxudGhlbWUuY29tcG9uZW50cy5jb2xvci1ib3guZm9vdGVyID0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAoYmcpLFxuICBjb2xvcjogKGNob29zZU1heENvbnRyYXN0KChmZyBmZ0ludmVydGVkKSwgYmcpKSxcbn1cbmBgYFxuKi9cbmNob29zZU1heENvbnRyYXN0KGZncywgYmcpIHtcbiAgICBmZ1dpdGhNYXhDb250cmFzdFJhdGlvID0gZmdzWzBdO1xuICAgIGZvciBmZyBpbiBmZ3Mge1xuICAgICAgICBpZiAoY29udHJhc3QoZmcsIGJnKS5yYXRpbyA+IGNvbnRyYXN0KGZnV2l0aE1heENvbnRyYXN0UmF0aW8sIGJnKS5yYXRpbykge1xuICAgICAgICAgICAgZmdXaXRoTWF4Q29udHJhc3RSYXRpbyA9IGZnO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmZ1dpdGhNYXhDb250cmFzdFJhdGlvO1xufVxuIiwiLyohXG4tLS1cbm5hbWU6IEdsb2JhbCBzZXR0aW5nc1xudGVtcGxhdGU6IHZhcmlhYmxlc1xudGFnOlxuIC0gdmFyaWFibGVcbnZhcmlhYmxlczpcbiAtIG5hbWU6IFwidGV4dC1saW5lLWhlaWdodFwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbGluZSBoZWlnaHQgb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCIxLjVyZW1cIlxuIC0gbmFtZTogXCJ0ZXh0LWZvbnRcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGBmb250LWZhbWlseWAgdG8gYmUgdXNlZCBmb3IgcmVndWxhciB0ZXh0XCJcbiAgIGRlZmF1bHQ6IFwiJ1JvYm90bycsIHNlcmlmXCJcbiAtIG5hbWU6IFwiaGVhZGluZy1mb250XCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBgZm9udC1mYW1pbHlgIHRvIGJlIHVzZWQgZm9yIGhlYWRpbmdzIChhbmQgcG9zc2libHkgc3ViY2FwdGlvbnMpXCJcbiAgIGRlZmF1bHQ6IFwiJ1JvYm90bycsIHNlcmlmXCJcbiAtIG5hbWU6IFwidGV4dC1yZW5kZXJpbmdcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGB0ZXh0LXJlbmRlcmluZ2Agb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCJvcHRpbWl6ZUxlZ2liaWxpdHlcIlxuIC0gbmFtZTogXCJ0cmFuc2l0aW9uLWR1cmF0aW9uXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkdXJhdGlvbiBvZiB0aGUgc2xpZGUgdHJhbnNpdGlvbnNcIlxuICAgZGVmYXVsdDogXCIwLjNzXCJcbiAtIG5hbWU6IFwiYm9yZGVyLXJhZGl1c1wiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgZGVmYXVsdCByYWRpdXMgZm9yIGJvcmRlcnNcIlxuICAgZGVmYXVsdDogXCIycHhcIlxuLS0tXG5cblRoZSBgdGhlbWUuc2V0dGluZ3NgIGhhc2ggZGVmaW5lcyBzZXZlcmFsIGdsb2JhbCBzZXR0aW5ncyBmb3IgdGV4dCBmb3JtYXR0aW5nIGFuZCBzdHlsaW5nOlxuKi9cblxuQHJlcXVpcmUgJy4vZnVuY3Rpb25zLnZhci5zdHlsJzsgIC8vIG5lZWRlZCBmb3IgYHJlbSgpYFxuXG5cbnRoZW1lLnNldHRpbmdzID0ge1xuICB0ZXh0LWxpbmUtaGVpZ2h0OiByZW0oIDI0cHggKSxcbiAgdGV4dC1mb250OiAnUm9ib3RvJ1xcLCBzZXJpZixcbiAgaGVhZGluZy1mb250OiAnUm9ib3RvJ1xcLCBzZXJpZixcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSxcbiAgYnJlYWtwb2ludHM6IHtcbiAgICBzbWFsbDogcmVtKCA3NjhweCApLFxuICAgIG1lZGl1bTogcmVtKCA5OTJweCApLFxuICAgIGxhcmdlOiByZW0oIDEyMDBweCApXG4gIH0sXG59XG5cbiIsIi8qIVxuLS0tXG5uYW1lOiBHbG9iYWwgc2V0dGluZ3NcbmNhdGVnb3J5OiBTaGFyZWQvVmFyaWFibGVzXG50ZW1wbGF0ZTogdmFyaWFibGVzXG50YWc6XG4gLSB2YXJpYWJsZXNcbnZhcmlhYmxlczpcbiAtIG5hbWU6IFwidGV4dC1saW5lLWhlaWdodFwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbGluZSBoZWlnaHQgb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCIxLjVyZW1cIlxuIC0gbmFtZTogXCJmb250LWZhbWlseVwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgZm9udC1mYW1pbHkgb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCInSGVsdmV0aWNhJywgc2Fucy1zZXJpZlwiXG4gLSBuYW1lOiBcInRleHQtcmVuZGVyaW5nXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSB0ZXh0LXJlbmRlcmluZyBvZiB0aGUgYm9keVwiXG4gICBkZWZhdWx0OiBcIm9wdGltaXplTGVnaWJpbGl0eVwiXG4gLSBuYW1lOiBcInRyYW5zaXRpb24tZHVyYXRpb25cIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGR1cmF0aW9uIG9mIHRoZSBzbGlkZSB0cmFuc2l0aW9uc1wiXG4gICBkZWZhdWx0OiBcIjAuNHNcIlxuIC0gbmFtZTogXCJib3JkZXItcmFkaXVzXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IHJhZGl1cyBmb3IgYm9yZGVyc1wiXG4gICBkZWZhdWx0OiBcIjJweFwiXG4tLS1cblxuVGhlc2UgdmFyaWFibGVzIHNldHVwcyBzb21lIGdsb2JhbCB0ZXh0IGZvcm1hdHRpbmcgYW5kIHN0eWxpbmcuXG4qL1xuXG50aGVtZS5zZXR0aW5ncyA9IHtcbiAgdGV4dC1saW5lLWhlaWdodDogcmVtKDI0cHgpLFxuICB0ZXh0LWZvbnQ6ICdBdmVuaXInXFwsIHNhbnMtc2VyaWYsXG4gIGhlYWRpbmctZm9udDogJ0F2ZW5pcidcXCwgc2Fucy1zZXJpZixcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSxcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcyxcbiAgYm9yZGVyLXJhZGl1czogMnB4LFxuICBicmVha3BvaW50czoge1xuICAgIHNtYWxsOiByZW0oMzc2cHgpLFxuICAgIG1lZGl1bTogcmVtKDUxM3B4KSxcbiAgICBsYXJnZTogcmVtKDEwODBweClcbiAgfSxcbn1cbiIsIi8qIVxuLS0tXG5uYW1lOiBHbG9iYWwgUmVzZXRcbmNhdGVnb3J5OiBHbG9iYWxzL1Jlc2V0XG50YWc6XG4gLSByZXNldFxuLS0tXG5cblRoZSBsZXJuZXR6IGNzcyBsaWJyYXJ5IGhhcyBhIHNldCBvZiByZXNldCBzdHlsZSB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBvbiBldmVyeSBicm93c2VyLlxuRnVydGhlcm1vcmUgdGhpcyByZXNldCBzZXRzIHNvbWUgZ2xvYmFsIHZhcmlhYmxlcyBsaWtlOlxuICogYm9keSBmb250LWZhbWlsaWVzXG4gKiBib2R5IGxpbmUtaGVpZ2h0XG4gKiBib2R5IHRleHQtcmVuZGVyaW5nXG4gKiA6cm9vdCBmb250LXNpemUgZm9yIHByb3BlciByZW0gY29udmVyc2lvblxuKi9cblxuQHJlcXVpcmUgJy4vdmFyaWFibGVzLyoqLnN0eWwnOyAgLy8gbmVlZGVkIGZvciBgdGhlbWUuY29sb3JzYCwgYHRoZW1lLnNldHRpbmdzYCBoYXNoZXNcblxuXG5odG1sLCBib2R5LCBkaXYsIHNwYW4sIG9iamVjdCwgaWZyYW1lLFxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuYWJiciwgYWRkcmVzcywgY2l0ZSwgY29kZSxcbmRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgc2FtcCxcbnNtYWxsLCBzdHJvbmcsIHN1Yiwgc3VwLCB2YXIsXG5iLCBpLFxuZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbmZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxudGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG5hcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsXG5mb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnksXG50aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuXHRib3JkZXI6MDtcblx0b3V0bGluZTowO1xuXHRmb250LXNpemU6aW5oZXJpdDtcblx0Zm9udC13ZWlnaHQ6aW5oZXJpdDtcblx0dmVydGljYWwtYWxpZ246YmFzZWxpbmU7XG59XG5cbjpyb290IHtcblx0Zm9udC1zaXplOiAxNnB4O1xufVxuXG5odG1sIHtcblx0Zm9udC1zaXplOiAxMDAlO1xufVxuXG5ib2R5IHtcblx0bGluZS1oZWlnaHQ6IHRoZW1lLnNldHRpbmdzLnRleHQtbGluZS1oZWlnaHQ7XG5cdGNvbG9yOiB0aGVtZS5jb2xvcnMudGV4dDtcblx0Zm9udC1mYW1pbHk6IHRoZW1lLnNldHRpbmdzLnRleHQtZm9udDtcblx0dGV4dC1yZW5kZXJpbmc6IHRoZW1lLnNldHRpbmdzLnRleHQtcmVuZGVyaW5nO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMuYm9keTtcblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG59XG5cbmFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxcbmZvb3RlcixoZWFkZXIsaGdyb3VwLG1lbnUsbmF2LHNlY3Rpb24ge1xuXHRkaXNwbGF5OmJsb2NrO1xufVxuXG5cbnNlbGVjdCB7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbn1cblxudGV4dGFyZWEge1xuXHR3aWR0aDoxMDAlO1xufVxuXG50YWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXNwYWNpbmc6MDtcbn1cblxuLy9cbi8vIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbi8vICAgIEtub3duIGlzc3VlOiBhZmZlY3RzIGNvbG9yIG9mIGRpc2FibGVkIGVsZW1lbnRzLlxuLy8gMi4gQ29ycmVjdCBmb250IHByb3BlcnRpZXMgbm90IGJlaW5nIGluaGVyaXRlZC5cbi8vIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuLy9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7IC8vIDFcbiAgZm9udDogaW5oZXJpdDsgLy8gMlxuICBtYXJnaW46IDA7IC8vIDNcbn1cblxuXG4vL1xuLy8gUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxuLy9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cblxuXG4vKlxuICogTm9ybWFsaXplIHRoZSBiZWhhdmlvdXIgb2YgYWxsIGJyb3dzZXJzXG4gKlxuICogSW5zdGVhZCBvZiBzZXR0aW5nIGJveC1zaXppbmcgZml4IG9uIGFsbCBlbGVtZW50cyB3ZSBvbmx5IHNldCBpdCBvbiB0aGUgcm9vdCBlbGVtZW50XG4gKiBhbmQgdGVsbCBhbGwgZWxlbWVudHMgdG8gaW5oZXJpdCBpdCdzIHByb3BlcnR5IGZyb20gdGhlIHBhcmVudFxuICogVGhhdCB3YXkgaXQncyBwb3NzaWJsZSB0byBvdmVyd3JpdGUgdGhlIGJveC1zaXppbmcgYW55d2hlcmUgd2hpbGUga2VlcGluZyBwcm9wZXIgaW5oZXJpdGFuY2VcbiAqL1xuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5hIHtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRjb2xvcjogaW5oZXJpdDtcbn1cbmltZyB7XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxudWwsb2wge1xuXHRtYXJnaW4tbGVmdDogcmVtKCAyMHB4ICk7XG59XG4iLCIvKiFcbi0tLVxubmFtZTogR2xvYmFsIGhlbHBlcnNcbmNhdGVnb3J5OiBHbG9iYWxzL0hlbHBlcnNcbnRhZzpcbiAtIGhlbHBlclxuIC0gYm94LW1vZGVsXG4gLSBkaXNwbGF5XG4gLSBwb3NpdGlvblxuIC0gdmlzaWJpbGl0eVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgY29sbGVjdGlvbiBvZiBnbG9iYWwgaGVscGVycyB0byBjb250cm9sIGNvbW1vbiBzdHlsZXMuXG5Ob3RlIHRoYXQgZXZlcnkgZ2xvYmFsIGhlbHBlciBpcyBwZXJmaXhlZCB3aXRoIGFuIHVuZGVyc2NvcmUgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIGlzIGEgZ2xvYmFsIHJ1bGUgYWNjb3JkaW5nIHRvIHJzY3NzLlxuXG4jIyBaLUluZGV4OlxuXG5gYGBqYWRlXG5kaXYuX3otMSB6LWluZGV4OiAxO1xuZGl2Ll96LTIgei1pbmRleDogMjtcbmRpdi5fei0zIHotaW5kZXg6IDM7XG5kaXYuX3otNCB6LWluZGV4OiA0O1xuZGl2Ll96LTUgei1pbmRleDogNTtcbmRpdi5fei02IHotaW5kZXg6IDY7XG5gYGBcblxuIyMgUG9zaXRpb246XG5cbmBgYGphZGVcbmRpdi5fYWJzb2x1dGUgcG9zaXRpb246IGFic29sdXRlO1xuZGl2Ll9yZWxhdGl2ZSBwb3NpdGlvbjogcmVsYXRpdjtcbmRpdi5fZml4ZWQgcG9zaXRpb246IGZpeGVkO1xuZGl2Ll9zdGlja3kgcG9zaXRpb246IHN0aWNreTtcbmRpdi5fc3RhdGljIHBvc2l0aW9uOiBzdGF0aWM7XG5gYGBcblxuIyMgRGlzcGxheTpcblxuYGBgamFkZVxuZGl2Ll9ibG9jayBkaXNwbGF5OiBibG9jaztcbmRpdi5faW5saW5lLWJsb2NrIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbmRpdi5faW5saW5lIGRpc3BsYXk6IGlubGluZTtcbmRpdi5fZmxleCBkaXNwbGF5OiBmbGV4O1xuZGl2Ll9pbmxpbmUtZmxleCBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbmRpdi5fdGFibGUgZGlzcGxheTogdGFibGU7XG5kaXYuX3RhYmxlLXJvdyBkaXNwbGF5OiB0YWJsZS1yb3c7XG5kaXYuX3RhYmxlLWNlbGwgZGlzcGxheTogdGFibGUtY2VsbDtcbmRpdi5faGlkZGVuIGRpc3BsYXk6IG5vbmU7XG5gYGBcblxuIyMgVmlzaWJpbGl0eTpcblxuYGBgamFkZVxuZGl2Ll92aXNpYmxlIHZpc2liaWxpdHk6IHZpc2libGU7XG5kaXYuX2ludmlzaWJsZSB2aXNpYmlsaXR5OiBoaWRkZW47XG5gYGBcbiovXG5cbnJ1bGVzID0gdGhlbWUuaGVscGVycztcblxuZm9yIHNlbGVjdG9yLCBwcmVzZXRzIGluIHJ1bGVzIHtcbiAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwcmVzZXRzIHtcbiAgICAgICAgLl97a2V5fSB7XG4gICAgICAgICAgICB7c2VsZWN0b3J9Oih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIi5idXR0b24tc3R5bGUge1xuXG4gIHdoaXRlLXNwYWNlOiBpbmhlcml0O1xuXG4gICYuLXRvZ2dsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBib3JkZXI6IHNvbGlkIHJlbSgxLjMzcHgpIHRoZW1lLmNvbG9ycy5wcmltYXJ5O1xuICAgIGJvcmRlci1yYWRpdXM6IHJlbSg4cHgpO1xuICAgIGNvbG9yOiB0aGVtZS5jb2xvcnMucHJpbWFyeTtcbiAgICBwYWRkaW5nOiByZW0oNHB4KSByZW0oMTZweCk7XG4gICAgK3ZpZXdwb3J0KG1pbiwgbWVkaXVtKSB7XG4gICAgICBwYWRkaW5nOiByZW0oOHB4KSByZW0oMzJweCk7XG4gICAgICBib3JkZXItd2lkdGg6IHJlbSgxLjVweCk7XG4gICAgfVxuXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzIGVhc2UsIGNvbG9yIDAuMXMgZWFzZTtcbiAgICAmLi1zZWxlY3RlZCxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1lLmNvbG9ycy5wcmltYXJ5O1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuXG4gICAgJi4tc2VsZWN0ZWQge1xuICAgICAgY3Vyc29yOiBpbmhlcml0O1xuICAgIH1cbiAgfVxuXG4gICYuLWJvaW5rIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGFuaW1hdGlvbjogYm9pbmsgMC4zM3MgZWFzZTtcbiAgICB9XG4gIH1cbn1cblxuQGtleWZyYW1lcyBib2luayB7XG5cbiAgMCUge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA3NSk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbiIsIi8qIVxuLS0tXG5uYW1lOiAuYWJzLWxheW91dFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLmFicy1sYXlvdXRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBzaW1wbGUgY29tcG9uZW50IHRvIHBvc2l0aW9uIGFuIGVsZW1lbnQgYWJzb2x1dGUuIERlZmF1bHQgaXMgdG9wLCBsZWZ0XG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uaW5nIGFyZSBgLi10b3BgLCBgLi12Y2VudGVyYCBhbmQgYC4tYm90dG9tYC5cblRoZSB2YXJpYW50cyBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb25pbmcgYXJlIGAuLXJpZ2h0YCwgYC4taGNlbnRlcmAgYW5kIGAuLWxlZnRgLlxuQWRkaXRpbmFsbHkgdGhlIGAtY2VudGVyYCB2YXJpYW50IHdpbGwgY2VudGVyIGhvcml6b250YWwgYW5kIHZlcnRpY2FsLlxuVmFyaWFudHMgdG8gc3RyZXRjaCBhbiBpdGVtIHRvIGl0cyBmdWxsIHdpZHRoL2hlaWdodCBjYW4gYmUgZGluZSB3aXRoIGAuaXRlbS4tc3RyZXRjaGAuXG5JbiBzb21lIHNpdHVhdGlvbnMgdGhlIGFicy1sYXlvdXQgaXRzZWxmIG5lZWRzIHRvIHN0cmV0Y2ggc28gdXNlIHRoZSBzdHJldGNoIHZhcmlhbnQgb24gdGhlIGNvbXBvbmVudC4gYC5hYnMtbGF5b3V0Li1zdHJldGNoYCBcblxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wLi1oY2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AuLXJpZ2h0XG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1yaWdodC4tdmNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tcmlnaHQuLWJvdHRvbVxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tYm90dG9tLi1oY2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1ib3R0b20uLWxlZnRcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWxlZnQuLXZjZW50ZXJcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWxlZnQuLXRvcFxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tc3RyZXRjaFxuYGBgXG5cbiMjIFotSW5kZXhcblxuRXZlcnkgaXRlbSBjYW4gY29udHJvbGwgaXRzIHogaW5kZXggd2l0aCB0aGUgYC4tentpfWB2YXJpYW50cy5cbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AuLWxlZnQuLXoxXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXRvcC4tbGVmdC4tejJcbmBgYFxuXG4qL1xuXG4uYWJzLWxheW91dHtcbiAgICBcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmLi1zdHJldGNoIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICA+IC5pdGVtIHtcblxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgICAgICAgJi4tdG9we1xuICAgICAgICAgICAgdG9wOiAwOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLXJpZ2h0e1xuICAgICAgICAgICAgcmlnaHQ6IDA7ICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgJi4tYm90dG9te1xuICAgICAgICAgICAgYm90dG9tOiAwOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLWxlZnR7XG4gICAgICAgICAgICBsZWZ0OiAwOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLXZjZW50ZXJ7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSggLTUwJSApOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLWhjZW50ZXJ7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoIC01MCUgKTsgICAgXG4gICAgICAgIH1cblxuICAgICAgICAmLi1jZW50ZXIge1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSggLTUwJSwgLTUwJSApOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLXN0cmV0Y2gge1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIGkgaW4gMS4uMTAge1xuICAgICAgICAgICAgJi4tentpfSB7XG4gICAgICAgICAgICAgICAgei1pbmRleDogaTsgICAgXG4gICAgICAgICAgICB9ICAgIFxuICAgICAgICB9XG4gICAgfVxufSIsIi8qIVxuLS0tXG5uYW1lOiAuYm9yZGVyLWJveFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLmJvcmRlci1ib3hcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gYm9yZGVyXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCBib3JkZXJzIG9uIGFsbCBmb3VyIHNpZGVzLlxuXG5gYGBqYWRlXG5kaXYuYm9yZGVyLWJveC4tbGVmdCBTb21lIGRlbW8gY29udGVudFxuYGBgXG5cbmBgYGphZGVcbmRpdi5ib3JkZXItYm94Li1hbGwgU29tZSBkZW1vIGNvbnRlbnRcbmBgYFxuKi9cbi5ib3JkZXItYm94IHtcblxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5ib3JkZXItYm94O1xuXHRcblx0Zm9yIHZhcmlhbnQsIHZhbHVlIGluIGNvbmYge1xuXG4gICAgICAgIGZvciBzaWRlIGluIHRvcCByaWdodCBib3R0b20gbGVmdCB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIHZhcmlhbnQgIT0gJ2RlZmF1bHQnIHtcbiAgICAgICAgICAgICAgICAmLi17c2lkZX0te3ZhcmlhbnR9IHtcblx0XHRcdFx0XHRib3JkZXIte3NpZGV9LXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJi4te3NpZGV9IHtcblx0XHRcdFx0XHRib3JkZXIte3NpZGV9LXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gICAgICBcbiAgICAgICAgfVxuXG5cdFx0aWYgdmFyaWFudCAhPSAnZGVmYXVsdCcge1xuXHRcdFx0Ji4tYWxsLXt2YXJpYW50fSB7XG5cdFx0XHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0XHRcdHt2YWx1ZX1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ji4tYWxsIHtcblx0XHRcdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRcdFx0e3ZhbHVlfVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCYuLXJvdW5kIHtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHRcblx0fVxufSIsIi8qIVxuLS0tXG5uYW1lOiAuYnV0dG9uLXN0eWxlXG5jYXRlZ29yeTogQ29tcG9uZW50cy8uYnV0dG9uLXN0eWxlXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGJ1dHRvblxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYnV0dG9uIGNvbXBvbmVudCBhcyBhIGJhc2UgZm9yIGRpZmZlcmVudCBidXR0b24gdmFyaWFudHMgZGVmaW5lZCBpbiBpdHMgY29uZmlndXJhdGlvbi5cblxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1zdHlsZSBkZWZhdWx0XG5gYGBcblxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1zdHlsZS4tZGlzYWJsZWQgLWRpc2FibGVkXG5gYGBcblxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1zdHlsZS4taG92ZXIgLWhvdmVyXG5gYGBcblxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1zdHlsZS4tbWFpbiAtbWFpblxuYGBgXG5cbmBgYGphZGVcbmJ1dHRvbi5idXR0b24tc3R5bGUuLW1haW4uLWhvdmVyIC1tYWluIC1ob3ZlclxuYGBgXG4qL1xuLmJ1dHRvbi1zdHlsZSB7XG5cblx0YXBwZWFyYW5jZTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdGJvcmRlcjogbm9uZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdG91dGxpbmU6IG5vbmU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRmb3IgbmFtZSwgdmFsdWUgaW4gdGhlbWUuY29tcG9uZW50cy5idXR0b24tc3R5bGUge1xuXHRcblx0XHQmLi17bmFtZX0ge1xuXHRcdFx0e3ZhbHVlfVxuXHRcdH1cblx0fVxufSIsIi8qIVxuLS0tXG5uYW1lOiAuY29sb3ItYm94XG5jYXRlZ29yeTogQ29tcG9uZW50cy8uY29sb3ItYm94XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGNvbG9yXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQ29udHJvbHMgdGhlIGJhY2tncm91bmQgYW5kL29yIGZvcmVncm91bmQgY29sb3Iocykgb2YgdGhlIHN0eWxlZCBlbGVtZW50LlxuXG4jIyBDb25maWd1cmF0aW9uXG5cblRoaXMgY29tcG9uZW50IHByb2R1Y2VzIGEgdmFyaWFudCBmb3IgZWFjaCBrZXkgaW4gdGhlIGB0aGVtZS5jb21wb25lbnRzLmNvbG9yLWJveGAgaGFzaC5cbkZvciBleGFtcGxlLCB5b3UgY2FuIHRoZXJlZm9yZSBhIGAtZm9vdGVyYCB2YXJpYW50cyBieSBpbmNsdWRpbmcgdGhlIGZvbGxvd2luZyBpbiB0aGUgZmlsZSBgY29sb3ItYm94LnZhci5zdHlsYDpcblxuYGBgc3R5bHVzXG50aGVtZS5jb21wb25lbnRzLmNvbG9yLWJveC5mb290ZXIgPSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRoZW1lLmNvbG9ycy5mb290ZXIsICAvLyBhc3N1bWluZyB0aGlzIG5vbi1kZWZhdWx0IGtleSBpcyBkZWZpbmVkIGVsc2V3aGVyZVxuICBjb2xvcjogdGhlbWUuY29sb3JzLnRleHQsXG59O1xuYGBgXG5cbiMjIERlZmF1bHQgdmFyaWFudHM6XG5cbkJ5IGRlZmF1bHQsIHRoZSBmb2xsb3dpbmcgYGNvbG9yLWJveGAgdmFyaWFudHMgYXJlIGRlZmluZWQgdmlhIGB0aGVtZS5jb21wb25lbnRzLmNvbG9yLWJveGA6XG5cbmBgYGphZGVcbmRpdihzdHlsZT1cImRpc3BsYXk6ZmxleFwiKVxuICBkaXYuY29sb3ItYm94Li1ib2R5KHN0eWxlPVwid2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O21hcmdpbjo1cHg7cGFkZGluZzo1cHhcIilcbiAgICBzcGFuIC1ib2R5XG4gIGRpdi5jb2xvci1ib3guLWFjdGlvbihzdHlsZT1cIndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDttYXJnaW46NXB4O3BhZGRpbmc6NXB4XCIpXG4gICAgc3BhbiAtYWN0aW9uXG4gIGRpdi5jb2xvci1ib3guLWJsYWNrKHN0eWxlPVwid2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O21hcmdpbjo1cHg7cGFkZGluZzo1cHhcIilcbiAgICBzcGFuIC1ibGFja1xuICBkaXYuY29sb3ItYm94Li13aGl0ZShzdHlsZT1cIndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDttYXJnaW46NXB4O3BhZGRpbmc6NXB4XCIpXG4gICAgc3BhbiAtd2hpdGVcbmBgYFxuXG4jIyBTZWUgYWxzbzpcblxuKiBbY2hvb3NlTWF4Q29udHJhc3RdKC4uLy4uL1NoYXJlZC9GdW5jdGlvbnMvaW5kZXguaHRtbCNjaG9vc2VNYXhDb250cmFzdCkgJm1kYXNoO1xuICBJbiBvcmRlciB0byBndWFyYW50ZWUgZ29vZCBsZWdpYmlsaXR5LCB0aGUgZm9yZWdyb3VuZCBgY29sb3JgIHNob3VsZCBiZSBjaG9zZW5cbiAgaW4gcmVsYXRpb24gdG8gdGhlIGBiYWNrZ3JvdW5kLWNvbG9yYCBzdWNoIHRoYXQgYSByZWFzb25hYmx5IGhpZ2ggY29udHJhc3QgcmF0aW9cbiAgd2lsbCByZXN1bHQuIElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGB0aGVtZS5jb2xvcnNgIHZhcmlhYmxlcyBpbnN0ZWFkIG9mIGZpeGVkXG4gIGNvbG9yIHZhbHVlcywgdGhpcyBjYW4gaGVscCB5b3Ugc2VsZWN0IHRoZSBiZXN0IG9uZTsgc2VlIHRoZXJlIGZvciBhbiBleGFtcGxlLlxuKi9cbi5jb2xvci1ib3gge1xuICAgIFxuICAgIGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLmNvbG9yLWJveDtcblxuICAgIGZvciBrZXksIHZhbHVlIGluIGNvbmZ7XG4gICAgICAgICYuLXtrZXl9IHtcbiAgICAgICAgICAgIHt2YWx1ZX1cbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmRpc3BsYXktcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLmRpc3BsYXktcmVzcG9uc2l2ZVxudGFnOlxuIC0gcmVzcG9uc2l2ZVxuIC0gZGlzcGxheVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkNvbnRyb2xzIHRoZSBkaXNwbGF5IG9mIGFuIGVsZW1lbnQgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGJyZWFrcG9pbnRcblxuIyMgSGlkZVxuXG5gLi1oaWRlLW1lZGl1bWAgaGlkZXMgYW4gZWxlbWVudCBhcyBsb25nIGFzIHRoZSBzY3JlZW4gaXMgd2lkZXIgdGhhbiB0aGUgYnJlYWtwb2ludCBgbWVkaXVtYC5cblxuYGBgamFkZVxuZGl2LmRpc3BsYXktcmVzcG9uc2l2ZS4taGlkZS1tZWRpdW0gT25seSBzaG93biB3aGVuIHRoZSBzY3JlZW4gaXMgd2lkZXIgdGhhbiB0aGUgYnJlYWtwb2ludCBtZWRpdW1cbmBgYFxuXG4jIyBTaG93XG5cbmAuLXNob3ctbWVkaXVtYCBzaG93IGFuIGVsZW1lbnQgYXMgbG9uZyBhcyB0aGUgc2NyZWVuIGlzIG5hcnJvd2VyIHRoYW4gdGhlIGJyZWFrcG9pbnQgYG1lZGl1bWAuXG5cbmBgYGphZGVcbmRpdi5kaXNwbGF5LXJlc3BvbnNpdmUuLXNob3ctbWVkaXVtIE9ubHkgc2hvd24gd2hlbiB0aGUgc2NyZWVuIGlzIG5hcnJvd2VyIHRoYW4gdGhlIGJyZWFrcG9pbnQgYG1lZGl1bWBcbmBgYFxuXG4qL1xuXG5cbi5kaXNwbGF5LXJlc3BvbnNpdmUge1xuXG5cdGJyZWFrcG9pbnRzID0gdGhlbWUuc2V0dGluZ3MuYnJlYWtwb2ludHM7XG5cblx0Zm9yIGJyZWFrbmFtZSwgYnJlYWt3aWR0aCBpbiBicmVha3BvaW50cyB7XG5cdFx0Ji4taGlkZS17IGJyZWFrbmFtZSB9IHtcblx0XHRcdEBtZWRpYSBhbGwgYW5kICggbWF4LXdpZHRoOiBicmVha3dpZHRoICkge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQmLi1zaG93LXsgYnJlYWtuYW1lIH0ge1xuXHRcdFx0QG1lZGlhIGFsbCBhbmQgKCBtaW4td2lkdGg6IGJyZWFrd2lkdGggKSB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5maXhlZC1sYXlvdXRcbmNhdGVnb3J5OiBDb21wb25lbnRzLy5maXhlZC1sYXlvdXRcbnRhZzpcbiAtIGNvbnRhaW5lclxuIC0gbGF5b3V0XG4gLSBmaXhlZFxuLS0tXG5cbkZpeGVkIGNvbnRhaW5lclxuWW91IGNhbiBwb3NpdGlvbiB0aGUgY29udGFpbmVyIHdpdGggdGhlIGRpZmZlcmVudCB2YXJpYW50cyBgLi10b3BgLCBgLi1ib3R0b21gLCBgLi1sZWZ0YCwgYC4tcmlnaHRgLlxuVG8gc3BhbiBmdWxsIHdpZHRoIC8gaGVpZ2h0IHVzZSBgLi1sZWZ0YCAmIGAuLXJpZ2h0YCAvIGAuLXRvcGAgJiBgLi1ib3R0b21gXG5cbkZpeGVkIHRvcCBhbmQgZnVsbCB3aWR0aFxuXG5gYGBqYWRlXG5kaXYuZml4ZWQtbGF5b3V0Li10b3AuLWxlZnQuLXJpZ2h0LmFpZ2lzLWRlYnVnIHRvcCBsZWZ0IGZ1bGx3aWR0aFxuICAgIFxuYGBgXG5cbkZpeGVkIHJpZ2h0IGFuZCBmdWxsIGhlaWdodFxuXG5gYGBqYWRlXG5kaXYuZml4ZWQtbGF5b3V0Li10b3AuLWJvdHRvbS4tcmlnaHQuYWlnaXMtZGVidWcgdG9wIHJpZ2h0IGZ1bGxoZWlnaHRcbiAgICBcbmBgYFxuXG4qL1xuXG4uZml4ZWQtbGF5b3V0IHtcblx0XG4gICAgcG9zaXRpb246Zml4ZWQ7XG5cbiAgICAmLi10b3B7XG4gICAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAmLi1ib3R0b217XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAmLi1sZWZ0e1xuICAgICAgICBsZWZ0OiAwO1xuICAgIH1cblxuICAgICYuLXJpZ2h0e1xuICAgICAgICByaWdodDogMDtcbiAgICB9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5maXhlZC1wYWdlLWxheW91dFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLmZpeGVkLXBhZ2UtbGF5b3V0XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuIC0gZml4ZWRcbiAtIHBhZ2VcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHBhZ2UgbGF5b3V0IHdpdGggYSBmaXhlZCBoZWFkZXIgYW5kIG9wdGlvbmFsIHNpZGViYXJzLlxuV2l0aCB0aGUgYC1tYXJnaW4te3RvcHxsZWZ0fHJpZ2h0fWAsIGAtbWFyZ2luLXt0b3B8bGVmdHxyaWdodH0tc21hbGxgIHZhcmlhbnRzIHlvdSBjYW4gY29udHJvbCB0aGUgc3BhY2luZy5cbklmIHRoZSBjb250ZW50IGZvciBleGFtcGxlIG5lZWRzIGEgc3BhY2luZyB0b3dhcmRzIHRoZSBoZWFkZXIgdXNlOiBgLmNvbnRlbnQuLW1hcmdpbi10b3BgLlxuSWYgdGhlIHNpZGViYXIgc2hvdyBiZSBiZWxvdyB0aGUgaGVhZGVyIHVzZTogYC5zaWRlYmFyLi1sZWZ0Li1tYXJnaW4tdG9wYC5cblxuXG5UaGVyZSBhcmUgdmFyaWFudHMgdG8gcmVzaXplIHRoZSBoZWFkZXIgYW5kIHNpZGViYXJzIHRvIGEgc21hbGxlciB3aWR0aC9oZWlnaHQ6IGAuaGVhZGVyLi1zbWFsbGAsIGAuc2lkZWJhci4tc21hbGxgLlxuSWYgeW91IG5lZWQgYSBzcGFjaW5nIG9uIHlvdXIgY29udGVudCBvciBzaWRlYmFyIHlvdSBuZWVkIHRvIGFkanVzdCB0aGF0IG1hbnVhbGx5IGxpa2UgdGhpczpcbmBgYFxuZGl2LmZpeGVkLXBhZ2UtbGF5b3V0XG5cdGRpdi5oZWFkZXIuLXNtYWxsXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJVwiKSAgSGVhZGVyXG5cdGRpdi5jb250ZW50Li1tYXJnaW4tdG9wLXNtYWxsIENvbnRlbnRcblx0ZGl2LnNpZGViYXIuLWxlZnQuLW1hcmdpbi10b3Atc21hbGwuLXNtYWxsXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgIExlZnQgU2lkZWJhclxuYGBgXG5cbiMjIEhlYWRlciB3aXRoIHNpZGViYXJzXG5cbmBgYGphZGVcbmRpdi5maXhlZC1wYWdlLWxheW91dFxuXHRkaXYuaGVhZGVyXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJVwiKSAgSGVhZGVyXG5cdGRpdi5jb250ZW50Li1tYXJnaW4tdG9wIENvbnRlbnRcblx0ZGl2LnNpZGViYXIuLWxlZnQuLW1hcmdpbi10b3Bcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJoZWlnaHQ6MTAwJVwiKSAgTGVmdCBTaWRlYmFyXG5cdGRpdi5zaWRlYmFyLi1yaWdodFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpICBSaWdodCBTaWRlYmFyXG5gYGBcbiovXG4uZml4ZWQtcGFnZS1sYXlvdXQge1xuXG5cdGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLmZpeGVkLXBhZ2UtbGF5b3V0O1xuXG5cblx0PiAuaGVhZGVyIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cbiAgICAvLyBnZXQgYWxsIGRlZmluaXRpb25zIG9mIGhlYWRlclxuICAgIGZvciBrZXksIHZhbHVlIGluIGNvbmYuaGVhZGVyIHtcbiAgICAgIGlmIGtleSAhPSAnZGVmYXVsdCcge1xuICAgICAgICAmLi17a2V5fSB7XG4gICAgICAgICAgaGVpZ2h0OiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGVpZ2h0OiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cblx0XHQmLi1oaWRlIHtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSggLTEwMCUgKTtcblx0XHR9XG5cdH1cblxuXHQ+IC5zaWRlYmFyIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0dG9wOiAwO1xuXHRcdGJvdHRvbTogMDtcblxuICAgIC8vIHNldHVwIHdpZHRoXG4gICAgZm9yIGtleSwgdmFsdWUgaW4gY29uZi5zaWRlYmFyIHtcbiAgICAgIGlmIGtleSAhPSAnZGVmYXVsdCcge1xuICAgICAgICAmLi17a2V5fSB7XG4gICAgICAgICAgd2lkdGg6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aDogdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0dXAgaGVhZGVyIG1hcmdpbnNcbiAgICBmb3Iga2V5LHZhbHVlIGluIGNvbmYuaGVhZGVyIHtcbiAgICAgIGlmIGtleSAhPSAnZGVmYXVsdCcge1xuICAgICAgICAmLi1tYXJnaW4tdG9wLXtrZXl9IHtcbiAgICAgICAgICB0b3A6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAmLi1tYXJnaW4tdG9wIHtcbiAgICAgICAgICB0b3A6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG5cdFx0Ji4tbGVmdCB7XG5cdFx0XHRsZWZ0OiAwO1xuXG5cdFx0XHQmLi1oaWRlIHtcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKCAtMTAwJSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuLXJpZ2h0IHtcblx0XHRcdHJpZ2h0OiAwO1xuXG5cdFx0XHQmLi1oaWRlIHtcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKCAxMDAlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0PiAuY29udGVudCB7XG5cbiAgICAvLyBzZXR1cCBzaWRlYmFyIG1hcmdpbnNcbiAgICBmb3Iga2V5LCB2YWx1ZSBpbiBjb25mLnNpZGViYXIge1xuICAgICAgaWYga2V5ICE9ICdkZWZhdWx0JyB7XG4gICAgICAgICYuLW1hcmdpbi1yaWdodC17a2V5fSB7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAmLi1tYXJnaW4tbGVmdC17a2V5fSB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAmLi1tYXJnaW4tcmlnaHQge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgJi4tbWFyZ2luLWxlZnQge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuXHRcdC8vIHNldHVwIGhlYWRlciBtYXJnaW5zXG4gICAgZm9yIGtleSwgdmFsdWUgaW4gY29uZi5oZWFkZXIge1xuICAgICAgaWYga2V5ICE9ICdkZWZhdWx0JyB7XG4gICAgICAgICYuLW1hcmdpbi10b3Ate2tleX0ge1xuICAgICAgICAgIG1hcmdpbi10b3A6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAmLi1tYXJnaW4tdG9wIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuXHR9XG59XG4iLCIvKiFcbi0tLVxubmFtZTogLmZsZXgtbGF5b3V0XG5jYXRlZ29yeTogQ29tcG9uZW50cy8uZmxleC1sYXlvdXRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSBmbGV4Ym94XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBsYXlvdXQgc3lzdGVtIGJhc2VkIG9uIGZsZXhib3ggdG8gYWxpZ24gYW5kIGRpc3RyaWJ1dGUgaXRlbXMgaG9yaXpvbnRhbGx5IGFuZCB2ZXJ0aWNhbGx5LlxuXG5cbiMgQWxpZ25tZW50IG9mIGl0ZW1zXG5cblRoZSBgLWNlbnRlcmAgc2hvcnRjdXQgd2lsbCBjZW50ZXIgYWxsIGl0ZW1zIGhvcml6b250YWwgJiB2ZXJ0aWNhbFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAxMDBweFwiKS5mbGV4LWxheW91dC4tY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcblxuYC1iYXNlbGluZWAgd2lsbCBhbGlnbiBpdGVtcyBiYXNlZCBvbiB0aGVpciBiYXNlbGluZS4gV29ya3MgZ29vZCBpZiBhbGwgdGhlIGl0ZW1zIGNvbnRhaW4gdGV4dC4gXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWJhc2VsaW5lXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtXG5cdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O3BhZGRpbmctYm90dG9tOiAzMHB4O1wiKSBJdGVtIDJcbmBgYFxuXG5gLWl0ZW1zLXRvcGAgJiBgLWl0ZW1zLWJvdHRvbWAgd2lsbCBhbGlnbiB0aGUgaXRlbXMgZWl0aGVyIG9uIHRvcCBvciBib3R0b21cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taXRlbXMtdG9wXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taXRlbXMtYm90dG9tXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcblxuYC1pdGVtcy1jZW50ZXJgIHdpbGwgY2VudGVyIHRoZSBpdGVtcyB2ZXJ0aWNhbGx5XG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWl0ZW1zLWNlbnRlclxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O3BhZGRpbmctYm90dG9tOiAzMHB4O1wiKSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gM1xuYGBgXG5cbiMgQWxpZ25tZW50IG9mIGluZGl2aWR1YWwgaXRlbXNcblxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAxMDBweFwiKS5mbGV4LWxheW91dFxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wIHRvcFxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tY2VudGVyIGNlbnRlclxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tYm90dG9tIGJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tc3RyZXRjaCBzdHJldGNoXG5gYGBcblxuIyBSb3cgbW9kZVxuXG5JZiB5b3UgbGlrZSBhIGNvbnRhaW5lciB0aGF0IHNwYW5zIHRoZSBmdWxsIHdpZHRoIHdpdGggaXRlbSB0aGF0IHJlc2l6ZSB0aGVtc2VsZiB5b3UgY2FuIHVzZSB0aGUgYC1yb3dgIHZhcmlhbnQuXG5cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4tcm93XG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAzXG5gYGBcblxuSWYgeW91IGxpa2UgdG8gZml4IGFuIGl0ZW0gYmFzZWQgb24gaXRzIGNvbnRlbnQgd2lkdGggdXNlIHRoZSBgLWNvbnRlbnRgIHZhcmlhbnQuXG5UaGlzIGlzIGEgc2hvcnRjdXQgZm9yIGAtbm8tZ3JvdyAtbm8tc2hyaW5rYC4gXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXJvd1xuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tY29udGVudFxuXHRcdGltZyhzcmM9XCJodHRwOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8zNTB4ODBcIilcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gM1xuYGBgXG5cbllvdSBjYW4gY29udHJvbCB0aGUgc2l6aW5nIG9mIHRoZSBpdGVtcyB3aXRoIGAtZ3Jvd2AsIGAtc2hyaW5rYCwgYC1uby1ncm93YCwgYC1uby1zaHJpbmtgLlxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1yb3dcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLW5vLXNocmlua1xuXHRcdGltZyhzcmM9XCJodHRwOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8zNTB4ODBcIilcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLW5vLWdyb3cgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gM1xuYGBgXG5cblxuIyBEaXN0cmlidXRpb24gb2YgaXRlbXNcblxuVXNlIGAtW3YvaF0tc3BhY2UtYXJvdW5kYCAmIGAtW3YvaF0tc3BhY2UtYmV0d2VlbmAgdG8gZGlzdHJpYnV0ZSB0aGUgaXRlbXMgaW4gdGhlIGZsZXggY29udGFpbmVyLlxuXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWgtc3BhY2UtYXJvdW5kXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taC1zcGFjZS1iZXR3ZWVuXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXYtc3BhY2UtYXJvdW5kLi13cmFwXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXYtc3BhY2UtYmV0d2Vlbi4td3JhcFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5cbiMgQWxpZ25tZW50IG9mIG11bHRpbGluZSBpdGVtcyB3aXRoIHdyYXBcblxuSWYgeW91IGhhdmUgYWxvdCBvbiBpdGVtcyB0aGF0IHdyYXAgeW91IGNhbiBhbGlnbiB0aGUgbXVsdGlsaW5lcyB3aXRoIHRoZSBmb2xsb3dpbmcgdmFyaWFudHM6XG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXdyYXAuLWgtY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4td3JhcC4tbGVmdFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXdyYXAuLXJpZ2h0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXdyYXAuLXYtY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXdyYXAuLXRvcFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDIwMHB4XCIpLmZsZXgtbGF5b3V0Li13cmFwLi1ib3R0b21cblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuXG5cblxuXG4qL1xuXG4uZmxleC1sYXlvdXQge1xuXHRcblx0ZGlzcGxheTogZmxleDtcblxuXHQmLi1pbmxpbmUge1xuXHRcdGRpc3BsYXk6IGZsZXgtaW5saW5lO1xuXHR9XG5cblx0Ji4td3JhcCB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1x0XG5cdH1cblxuXHQmLi1yb3cge1xuXHRcdGZsZXgtd3JhcDogbm93cmFwO1xuXG5cdFx0PiAuaXRlbSB7XG5cdFx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHR9XHRcblx0fVxuXG5cdCYuLWNvbHVtbiB7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0fVxuXG5cdCYuLWNlbnRlciB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRhbGlnbi1jb250ZW50OiBjZW50ZXI7XHRcblx0fVxuXG5cdCYuLWJhc2VsaW5lIHtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdH1cblxuXHQmLi1sZWZ0IHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdH1cblxuXHQmLi1yaWdodCB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0fVxuXG5cdCYuLXRvcCB7XG5cdFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcblx0fVxuXG5cdCYuLWJvdHRvbSB7XG5cdFx0YWxpZ24tY29udGVudDogZmxleC1lbmQ7XG5cdH1cblxuXHQmLi12LWNlbnRlciB7XG5cdFx0YWxpZ24tY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0Ji4tdi1zcGFjZS1iZXR3ZWVuIHtcblx0XHRhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHR9XG5cblx0Ji4tdi1zcGFjZS1hcm91bmQge1xuXHRcdGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcblx0fVxuXG5cdCYuLWgtY2VudGVyIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXG5cdCYuLWgtc3BhY2UtYmV0d2VlbiB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHR9XG5cblx0Ji4taC1zcGFjZS1hcm91bmQge1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuXHR9XG5cblxuXHQmLi1pdGVtcy10b3Age1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1x0XG5cdH1cblxuXHQmLi1pdGVtcy1ib3R0b20ge1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcdFxuXHR9XG5cblx0Ji4taXRlbXMtY2VudGVyIHtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1x0XG5cdH1cblxuXHQmLi1pdGVtcy1zdHJldGNoIHtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdHJldGNoO1x0XG5cdH1cblxuXHQ+IC5pdGVtIHtcblxuXHRcdCYuLXN0cmV0Y2gge1xuXHRcdFx0YWxpZ24tc2VsZjogc3RyZXRjaDtcblx0XHR9XG5cblx0XHQmLi10b3Age1xuXHRcdFx0YWxpZ24tc2VsZjogZmxleC1zdGFydDtcblx0XHR9XG5cblx0XHQmLi1jZW50ZXIge1xuXHRcdFx0YWxpZ24tc2VsZjogY2VudGVyO1xuXHRcdH1cblxuXHRcdCYuLWJvdHRvbSB7XG5cdFx0XHRhbGlnbi1zZWxmOiBmbGV4LWVuZDtcblx0XHR9XG5cblx0XHQmLi1jb250ZW50IHtcblx0XHRcdGZsZXg6IG5vbmU7XG5cdFx0fVxuXG5cdFx0Ji4tZ3JvdyB7XG5cdFx0XHRmbGV4LWdyb3c6IDE7XHRcblx0XHR9XG5cdFx0XG5cdFx0Ji4tc2hyaW5rIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAxO1x0XG5cdFx0fVxuXG5cdFx0Ji4tbm8tZ3JvdyB7XG5cdFx0XHRmbGV4LWdyb3c6IDA7XHRcblx0XHR9XG5cblx0XHQmLi1uby1zaHJpbmsge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XHRcblx0XHR9XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmdyaWQtbGF5b3V0XG5jYXRlZ29yeTogQ29tcG9uZW50cy8uZ3JpZC1sYXlvdXRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSBncmlkXG4gLSByZXNwb25zaXZlXG4gLSBmbGV4Ym94XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBncmlkIGxheW91dCBzeXN0ZW0gYmFzZWQgb24gZmxleGJveC4gSXQgcHJvdmlkZXMgc2l6aW5nIHZhcmlhbnRzIHRvIHNpemUgb24gZGlmZmVyZW50IHBlcmNlbnRhZ2VzLlxuXG5cbiMjIFBlcmNlbnRhZ2UgYmFzZWQgc2l6aW5nXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5pdGVtIC13MWAsIGAuaXRlbSAtdzEtMmAsIGAuaXRlbSAtdzEtM2AsIGAuaXRlbSAtdzEtNGAgZm9yIGEgcGVyY2VudGFnZSBiYXNlZCBzaWRlLWJ5LXNpZGUgcmVuZGVyaW5nLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXRcblx0ZGl2Lml0ZW0uLXcxXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxXG5cdGRpdi5pdGVtLi13MS0yIFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS0yXG5cdGRpdi5pdGVtLi13MS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTJcblx0ZGl2Lml0ZW0uLXcxLTNcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtM1xuXHRkaXYuaXRlbS4tdzItM1xuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13Mi0zXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMlxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS00XG5gYGBcblxuIyMgTGF5b3V0cyBvbiBkaWZmZXJlbnQgZGV2aWNlc1xuXG5UaGUgYnJlYWtwb2ludHMgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgYXJlIHNwZWNpZmllZCBpbiB0aGUgZ2xvYmFsIHNldHRpbmdzIGB0aGVtZS5zZXR0aW5ncy5icmVha3BvaW50c2AgYW5kIGNhbiBiZSBvdmVyd3JpdHRlbiBpbiBgdGhlbWUuY29tcG9uZW50cy5ncmlkLWxheW91dC5icmVha3BvaW50c2AuXG5UaGUgZGVmYXVsdCBzZXR0aW5ncyBkZWZpbmUgYnJlYWtwb2ludHMgd2l0aCBsYWJlbHM6IGAuLXNtYWxsLVgtWGAsIGAuLW1lZGl1bS1YLVhgLCBgLi1sYXJnZS1YLVhgLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXRcblx0ZGl2Lml0ZW0uLXcxLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MSAtc21hbGwtMS0zIC1tZWRpdW0tMS0yIC1sYXJnZS0xLTRcblx0ZGl2Lml0ZW0uLXcxLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MSAtc21hbGwtMS0zIC1tZWRpdW0tMS0yIC1sYXJnZS0xLTRcblx0ZGl2Lml0ZW0uLXcxLTIuLXNtYWxsLTEtMy4tbWVkaXVtLTEtMi4tbGFyZ2UtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTIgLXNtYWxsLTEtMyAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5cdGRpdi5pdGVtLi13MS0yLi1zbWFsbC0xLi1tZWRpdW0tMS0yLi1sYXJnZS0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMiAtc21hbGwtMSAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5gYGBcblxuXG4jIyBHdXR0ZXJcblxuSWYgeW91IG5lZWQgYSBzcGFjaW5nIGJldHdlZW4gdGhlIGNvbHVtbnMgYWRkIHRoZSBgLWd1dHRlcmAgdmFyaWFudC5cblRoZSBzaXplIG9mIHRoZSBndXR0ZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBgZ3JpZC1ndXR0ZXJgdmFyaWFibGUuXG5cbmBgYGphZGVcbmRpdi5ncmlkLWxheW91dC4tZ3V0dGVyXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbCAtdzEtNFxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wgLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sIC13MS0yXG5gYGBcblxuXG4jIyBSZXZlcnNlIG9yZGVyXG5cblRvIHJldmVyc2UgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBjb2x1bW5zIGFyZSBkaXNwbGF5ZWQsIHlvdSBjYW4gYWRkIHRoZSBtb2RpZmllciBjbGFzcyBgLi1yZXZlcnNlYCB0byB5b3VyIHRhYmxlLWdyaWQuXG5UaGUgY29sdW1ucyB3aWxsIGJlIGluIERPTSBvcmRlciB3aGVuIHZpZXdwb3J0IHN3aXRjaGVzIHRvIHNtYWxsIGxheW91dC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0Li1yZXZlcnNlXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEZpcnN0IGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgU2Vjb25kIGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgVGhpcmQgY29sdW1uIGluIERPTVxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBGb3VydGggY29sdW1uIGluIERPTVxuYGBgXG5cbiMjIFZlcnRpY2FsIGNlbnRlcmluZ1xuXG5Zb3UgY2FuIHZlcnRpY2FsIGNlbnRlciB3aXRoIHRoZSBoZWxwIG9mIHRoZSBgZmxleC1sYXlvdXRgIGNvbXBvbmVudC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0LmZsZXgtbGF5b3V0XG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEEgY29sdW1uIHdpdGggYSBsb3Qgb2YgY29udGVudCB0aGF0IHNob3VsZCB3cmFwIG9uIGZpeGVkIHNpemUuXG5cdGRpdi5pdGVtLi1ib3R0b21cblx0XHRkaXYuYWlnaXMtZGVidWcgYm90dG9tXG5cdGRpdi5pdGVtLi1jZW50ZXJcblx0XHRkaXYuYWlnaXMtZGVidWcgY2VudGVyXG5cdGRpdi5pdGVtLi1zdHJldGNoXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgc3RyZXRjaFxuYGBgXG5cbiovXG5cblxuXG4uZ3JpZC1sYXlvdXQge1xuXG5cdGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLmdyaWQtbGF5b3V0O1xuXHRicmVha3BvaW50cyA9IHRoZW1lLnNldHRpbmdzLmJyZWFrcG9pbnRzO1xuXG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtd3JhcDogd3JhcDtcblxuXHQmLi1ndXR0ZXIge1xuXG5cdFx0bWFyZ2luOiAoIC0oIGNvbmYuZ3V0dGVyWzFdIC8gMiApICkgKCAtKCBjb25mLmd1dHRlclswXSAvIDIgKSApO1xuXG5cdFx0PiAuaXRlbSB7XG5cdFx0XHRwYWRkaW5nOiAoIGNvbmYuZ3V0dGVyWzFdIC8gMiApICggY29uZi5ndXR0ZXJbMF0gLyAyICk7XG5cdFx0fVxuXHR9XG5cblx0Ji4tcmV2ZXJzZSB7XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuXHR9XG5cblx0PiAuaXRlbSB7XG5cblx0XHRmb3IgbmFtZSwgcGVyYyBpbiBjb25mLnNpemVzIHtcblx0XHRcdCYuLXd7bmFtZX0ge1xuXHRcdFx0XHRmbGV4OiAwIDAgcGVyYztcblx0XHRcdFx0bWF4LXdpZHRoOiBwZXJjOyAvLyBpZSBmaXhcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKipcblx0XHQqIEdlbmVyYXRlIGFsbCBtZWRpYSBicmVha3BvaW50cyBiYXNlZCBvbiB0aGUgYnJlYWtwb2ludHMgdmFyaWFibGUuXG5cdFx0Ki9cblx0XHRmb3IgYnJlYWtuYW1lLCBicmVha3dpZHRoIGluIGJyZWFrcG9pbnRzIHtcblxuXHRcdFx0QG1lZGlhIGFsbCBhbmQgKCBtaW4td2lkdGg6IGJyZWFrd2lkdGggKSB7XG5cblx0XHRcdFx0Zm9yIG5hbWUsIHBlcmMgaW4gY29uZi5zaXplcyB7XG5cdFx0XHRcdFx0Ji4te2JyZWFrbmFtZX0te25hbWV9IHtcblx0XHRcdFx0XHRcdGZsZXg6IDAgMCBwZXJjO1xuXHRcdFx0XHRcdFx0bWF4LXdpZHRoOiBwZXJjOyAvLyBpZSBmaXhcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmltYWdlLXJlc3BvbnNpdmVcbmNhdGVnb3J5OiBDb21wb25lbnRzLy5pbWFnZS1yZXNwb25zaXZlXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHJlc3BvbnNpdmVcbiAtIGltYWdlXG4gLSBtZWRpYVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgY2xhc3MgbWFrZXMgdGhlIGltYWdlIHNjYWxpbmcgdG8gaXRzIG1heCB3aWR0aC5cblxuYGBgamFkZVxuaW1nLmltYWdlLXJlc3BvbnNpdmUoc3JjPSdodHRwOi8vd3d3LmJ5dWkuZWR1L2ltYWdlcy9hZ3JpY3VsdHVyZS1saWZlLXNjaWVuY2VzL2Zsb3dlci5qcGcnKVxuYGBgXG5cbiMjIFZhcmlhbnRzXG5cbmAuLWZ1bGxgIGZvcmNlcyB0aGUgcGljdHVyZSB0byBzcGFuIHRvIDEwMCUgb2YgdGhlIHBhcmVudFxuXG5gYGBqYWRlXG5pbWcuaW1hZ2UtcmVzcG9uc2l2ZS4tZnVsbChzcmM9J2h0dHA6Ly93d3cuYnl1aS5lZHUvaW1hZ2VzL2FncmljdWx0dXJlLWxpZmUtc2NpZW5jZXMvZmxvd2VyLmpwZycpXG5gYGBcbiovXG5cbi5pbWFnZS1yZXNwb25zaXZlIHtcblx0bWF4LXdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IGF1dG87XG5cdGRpc3BsYXk6IGJsb2NrO1xuXG5cdCYuLWZ1bGx7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHQmLi1pbnNldCB7XG5cdFx0bWF4LWhlaWdodDogMTAwJTtcdFxuXHR9XG59XG4iLCIvKiFcbi0tLVxubmFtZTogLm1heC13aWR0aC1sYXlvdXRcbmNhdGVnb3J5OiBDb21wb25lbnRzLy5tYXgtd2lkdGgtbGF5b3V0XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuIC0gcmVzcG9uc2l2ZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgY29tcG9uZW50IHdpbGwgbGltaXQgaXRzIGNvbnRlbnQgdG8gYSBtYXhpbXVtIHdpZHRoLiBGb3J0aGVybW9yZSBpdCBjYW4gY2VudGVyIGl0cyBjb250ZW50LlxuVXNlZnVsbCBmb3IgcGFnZSBjb250ZW50IHRoYXQgc2hvdWxkIG5vdCBzcGFuIHRoZSBmdWxsIHdpZHRoLlxuXG5cbiMjIFBlcmNlbnRhZ2UgYmFzZWQgc2l6aW5nXG5cbiovXG5cblxuXG4ubWF4LXdpZHRoLWxheW91dCB7XG5cblx0Y29uZiA9IHRoZW1lLmNvbXBvbmVudHMubWF4LXdpZHRoLWxheW91dDtcblx0YnJlYWtwb2ludHMgPSB0aGVtZS5zZXR0aW5ncy5icmVha3BvaW50cztcblxuXHQvKipcblx0KiBHZW5lcmF0ZSBhbGwgbWVkaWEgYnJlYWtwb2ludHMgYmFzZWQgb24gdGhlIGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuXHQqL1xuXHRmb3IgYnJlYWtuYW1lLCBtYXh3aWR0aCBpbiBjb25mIHtcblxuXHRcdC8vIGNoZWNrIGlmIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCBleGlzdHNcblx0XHRicmVha3dpZHRoID0gYnJlYWtwb2ludHNbIGJyZWFrbmFtZSBdXG5cdFx0aWYoIGJyZWFrd2lkdGggKSB7XG5cblx0XHRcdEBtZWRpYSBhbGwgYW5kICggbWluLXdpZHRoOiBicmVha3dpZHRoICkge1xuXG5cdFx0XHRcdG1heC13aWR0aDogbWF4d2lkdGg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ji4tY2VudGVyIHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XHRcblx0fVxufSIsIi8qIVxuLS0tXG5uYW1lOiAubWVkaWEtcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLm1lZGlhLXJlc3BvbnNpdmVcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbiAtIG1lZGlhXG5jb21waWxlOiB0cnVlXG4tLS1cblxuYC5tZWRpYS1yZXNwb25zaXZlYCAtIFRoaXMgbWFrZXMgYSB0aGUgYC5tZWRpYS1yZXNwb25zaXZlYCBkaXYgYSBjb250YWluZXIgZm9yIGFueSBtZWRpYSBlbGVtZW50IChpZnJhbWUsIHZpZGVvLCAuLi4gKSB0aGF0IHJlc3BvbnNpdmUgc2NhbGVzIHdpdGggYSBmaXggcmF0aW8uXG5UaGUgbWVkaWEgZWxlbWVudCAoIGNoaWxkICkgbmVlZHMgdGhlIGNsYXNzIGAubWVkaWFgIHRvIGZ1bGx5IGZpbGwgb3V0IHRoZSBwYXJlbnRzIHNpemUuXG5cblRoZSBgLm1lZGlhLXJlc3BvbnNpdmVgIGNvbXBvbmVudCBoYXMgdG8gcHJlZGVmaW5lZCBtb2RpZmllcnM6IGAuLW1lZGlhLTQtM2AsIGAuLW1lZGlhLTE2LTlgIHRoYXQgZGVmaW5lIGEgZml4IHJhdGlvLlxuXG5gYGBqYWRlXG5kaXYubWVkaWEtcmVzcG9uc2l2ZS4tbWVkaWEtMTYtOVxuXHRpZnJhbWUubWVkaWEoc3JjPVwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvVENkNlBmeE95MFlcIilcbmBgYFxuXG5gYGBqYWRlXG5kaXYubWVkaWEtcmVzcG9uc2l2ZS4tbWVkaWEtNC0zXG5cdGlmcmFtZS5tZWRpYShzcmM9XCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9UQ2Q2UGZ4T3kwWVwiKVxuYGBgXG5cbiovXG4ubWVkaWEtcmVzcG9uc2l2ZSB7XG5cblx0Y29uZiA9IHRoZW1lLmNvbXBvbmVudHMubWVkaWEtcmVzcG9uc2l2ZTtcblxuXHR3aWR0aDogMTAwJTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRwYWRkaW5nLWJvdHRvbTogdmFsdWVzKCBjb25mLnJhdGlvcyApWzBdO1xuXG5cdGZvciBuYW1lLCB2YWx1ZSBpbiBjb25mLnJhdGlvcyB7XG5cdFx0Ji4tbWVkaWEte25hbWV9IHtcblx0XHRcdHBhZGRpbmctYm90dG9tOiB2YWx1ZTtcblx0XHR9XG5cdH1cblxuXHQ+IC5tZWRpYSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTAwJTtcblx0fVxufSIsIi8qIVxuLS0tXG5uYW1lOiAub3ZlcmZsb3ctdGV4dFxuY2F0ZWdvcnk6IENvbXBvbmVudHMvLm92ZXJmbG93LXRleHRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gdGV4dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgY29tcG9uZW50IGN1dHMgdGhlIHRleHQgb24gYSBnaXZlbiBoZWlnaHQgYW5kIGFkZHMgYSBmYWRlb3V0IGVmZmVjdC5cblRoaXMgaXMgdXNlZnVsbCBmb3IgdGV4dCBjb250YWluZXJzIHRoYXQgaGF2ZSBtb3JlIGNvbnRlbnQgdGhhbiBzcGFjZS5cblxuXG5gYGBqYWRlXG5kaXYub3ZlcmZsb3ctdGV4dChzdHlsZT1cIndpZHRoOiAyMDBweDtoZWlnaHQ6IDcwcHhcIikgVGhpcyBpcyBhIHZlcnkgbG9uZyB0ZXh0IHRoYXQgaXMgcndhcGVkIGFuZCBjdXQgYXQgdGhlIGVuZC5cbmBgYFxuKi9cblxuLm92ZXJmbG93LXRleHQge1xuXG5cdGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLm92ZXJmbG93LXRleHQ7XG5cblx0b3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0aGVpZ2h0OiBjb25mLmhlaWdodDtcblx0XHRiYWNrZ3JvdW5kOiBjb25mLmdyYWRpZW50O1xuICAgIH1cbn1cblxuXG4iLCIvKiFcbi0tLVxubmFtZTogLnNoYWRvdy1ib3hcbmNhdGVnb3J5OiBDb21wb25lbnRzLy5zaGFkb3ctYm94XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHNoYWRvd1xuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYm94IHRvIGNvbnRyb2wgYm94LXNoYWRvd3Mgd2l0aCBkaWZmZXJlbnQgdmFyaWFudHNcblxuIyMgRGVmYXVsdCB2YXJpYW50c1xuYGBgamFkZVxuZGl2LnNoYWRvdy1ib3ggRGVtbyBjb250ZW50XG5kaXYuc2hhZG93LWJveC4taW5zZXQgRGVtbyBjb250ZW50XG5kaXYuc2hhZG93LWJveC4temVybyBVc2UgemVybyBzaGFkb3cgaW4gYW5pbWF0aW9uc1xuYGBgXG4qL1xuLnNoYWRvdy1ib3gge1xuXHRcblx0Y29uZiA9IHRoZW1lLmNvbXBvbmVudHMuc2hhZG93LWJveDtcblxuXHRmb3IgbmFtZSwgdmFsdWUgaW4gY29uZiB7XG5cdFx0aWYgbmFtZSAhPSAnZGVmYXVsdCcge1xuICAgICAgICAgICAgJi4te25hbWV9IHtcbiAgICAgICAgICAgICAgICB7dmFsdWV9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG5cdFx0XHR7dmFsdWV9XG5cdFx0fVxuXHR9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5zcGFjZXItYm94XG5jYXRlZ29yeTogQ29tcG9uZW50cy8uc3BhY2VyLWJveFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbiAtIGJveC1tb2RlbFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gY29udHJvbCBzcGFjaW5nIG9mIGEgYm94LiBJdCBtYWlubHkgc2V0cyB0aGUgbWFyZ2luIGFuZCBwYWRkaW5nIHdpdGggYSBmaXhlZCBzZXQgb2YgY29uZmlndXJhdGlvbiB2YWx1ZXMuXG5UaGUgZGVmYXVsdCBzcGFjZSBzaXplcyBhcmU6XG5gYGBcbnh4czogMlxueHM6IDRcbnM6IDhcbmRlZmF1bHQ6IDE2XG5sOiAzMlxueGw6IDY0YFxuYGBgXG5cblxuVG8gY29udHJvbCB0aGUgcGFkZGluZy9tYXJnaW4gZm9yIGEgc3BlY2lmaWMgc3BhY2UgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyB2YXJpYW50czpcbmBgYFxuLXtraW5kfS17c2lkZX0te3NwYWNlfVxuLXtraW5kfS17YXhpc30te3NwYWNlfVxuLXtraW5kfS17c3BhY2V9XG5cbmtpbmQ6IG0gfCBwXG5zaWRlOiB0b3AgfCByaWdodCB8IGJvdHRvbSB8IGxlZnRcbnNwYWNlOiB4eHMgfMKgeHMgfMKgcyB8wqBsIHwgeGxcbmF4aXM6IHYgfMKgaFxuYGBgXG5cbk9yIHRvIHVzZSB0aGUgYGRlZmF1bHRgIHBhZGRpbmcgc3BhY2UgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzaG9ydGN1dHM6XG5gYGBcbi17a2luZH0te3NpZGV9XG4te2tpbmR9LXtheGlzfVxuLXtraW5kfVxuXG5raW5kOiBtIHwgcFxuc2lkZTogdG9wIHwgcmlnaHQgfCBib3R0b20gfCBsZWZ0XG5heGlzOiB2IHzCoGhcbmBgYFxuXG4jIyBFeGFtcGxlc1xuXG5IZXJlIGFyZSBzb21lIGV4YW1wbGUgdGhhdCBzaG93IHRoZSB1c2FnZSB3aXRoIHNwZWNpZmljIHNwYWNlIHNpemVzLlxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLW0tc1xuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgcyBtYXJnaW4gb24gYWxsIHNpZGVzXG5gYGBcbmBgYGphZGVcbmRpdi5zcGFjZXItYm94Li1wLXYteGxcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IHhsIHBhZGRpbmcgb24gdmVydGljYWwgc2lkZXNcbmBgYFxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLXAtdG9wLWxcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IGwgcGFkZGluZyBvbiB0b3Agc2lkZVxuYGBgXG5cbkhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgdGhhdCBzaG93IHRoZSB1c2FnZSB3aXRoIGRlZmF1bHQgc3BhY2Ugc2l6ZS5cblxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLXBcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IGRlZmF1bHQgcGFkZGluZyBvbiBhbGwgc2lkZXNcbmBgYFxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLW0taFxuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgZGVmYXVsdCBtYXJnaW4gb24gaG9yaXpvbnRhbCBheGlzXG5gYGBcbmBgYGphZGVcbmRpdi5zcGFjZXItYm94Li1tLWJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgZGVmYXVsdCBtYXJnaW4gb24gYm90dG9tIHNpZGVcbmBgYFxuXG4jIyBBdXRvIG1hcmdpblxuXG5Gb3Igc2V0dGluZyB0aGUgdmVydGljYWwgbWFyZ2luIHRvIGF1dG8gdGhlIGAuLWF1dG9gIHZhcmlhbnQgY2FuIGJlIHVzZWQuXG5cbmBgYGphZGVcbmRpdi5zcGFjZXItYm94Li1hdXRvKHN0eWxlPVwid2lkdGg6IDIwMHB4XCIpXG5cdGRpdi5haWdpcy1kZWJ1ZyBBcHBseSBtYXJnaW4gYXV0byB0byBsZWZ0IGFuZCByaWdodFxuYGBgXG5cbiovXG5cbi5zcGFjZXItYm94IHtcblxuICAgIGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLnNwYWNlci1ib3g7XG5cbiAgICBmb3Igc2l6ZSwgdmFsdWUgaW4gY29uZiB7XG5cbiAgICAgICAgLy8gY3JlYXRlIHJ1bGVzIGZvciBlYWNoIHNpZGVcbiAgICAgICAgZm9yIHNpZGUgaW4gdG9wIHJpZ2h0IGJvdHRvbSBsZWZ0IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgc2l6ZSAhPSAnZGVmYXVsdCcge1xuICAgICAgICAgICAgICAgICYuLW0te3NpZGV9LXtzaXplfXtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXtzaWRlfTogdmFsdWU7ICAgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmLi1wLXtzaWRlfS17c2l6ZX17XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcte3NpZGV9OiB2YWx1ZTsgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAmLi1tLXtzaWRlfXtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXtzaWRlfTogdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYuLXAte3NpZGV9e1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXtzaWRlfTogdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAgICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIHJ1bGVzIGZvciBoL3YgYW5kIGFsbFxuICAgICAgICBpZiBzaXplICE9ICdkZWZhdWx0JyB7XG5cbiAgICAgICAgICAgICYuLW0taC17c2l6ZX17XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi4tbS12LXtzaXplfXtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLi1tLXtzaXplfXtcbiAgICAgICAgICAgICAgICBtYXJnaW46IHZhbHVlIHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tcC1oLXtzaXplfXtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuLXAtdi17c2l6ZX17XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLi1wLXtzaXplfXtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YWx1ZSB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICYuLW0taCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi4tbS12IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLi1tIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IHZhbHVlIHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tcC1oIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuLXAtdiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLi1wIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YWx1ZSB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLi1hdXRvIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87ICAgIFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87ICAgIFxuICAgIH1cblxufSIsIi8qIVxuLS0tXG5uYW1lOiAuc3ZnLWljb25cbmNhdGVnb3J5OiBDb21wb25lbnRzLy5zdmctaWNvblxudGVtcGxhdGU6IGljb25zXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHN5bWJvbFxuIC0gaWNvblxuIC0gbWVkaWFcbiAtIHN2Z1xuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkRlZmluZXMgY29tbW9uIFNWRyBpY29uL3N5bWJvbCBzaXplcyBhbmQgcHJlc2VudGF0aW9uIHN0eWxlcy5cblxuIyMgRGVmYXVsdFxuXG5UaGUgPHNwYW4gY2xhc3M9XCJ2YXJpYWJsZVwiPi1kZWZhdWx0PC9zcGFuPiB2YXJpYW50IGFwcGxpZXMgYXV0b21hdGljYWxseSAoYnV0IGNhbiBiZSBzcGVjaWZpZWQgZXhwbGljaXRseSBpZiBkZXNpcmVkKS5cblxuYGBgamFkZVxuZGl2KHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyBib3JkZXI6IHNvbGlkIDFweCAjY2NjO1wiKVxuICBzdmcuc3ZnLWljb25cbiAgICB1c2UoeGxpbms6aHJlZj1cIiNzdGFycy1pY29uXCIpXG5cbmRpdihzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazsgYm9yZGVyOiBzb2xpZCAxcHggI2NjYztcIilcbiAgc3ZnLnN2Zy1pY29uLi1kZWZhdWx0XG4gICAgdXNlKHhsaW5rOmhyZWY9XCIjc3RhcnMtaWNvblwiKVxuYGBgXG5cbiMjIC1zY2FsZVxuXG5UaGUgPHNwYW4gY2xhc3M9XCJ2YXJpYWJsZVwiPi1zcGFuPC9zcGFuPiB2YXJpYW50IHdpbGwgYXV0b21hdGljYWxseSBmaXQgKHNjYWxlICYgY2VudGVyKSB0aGUgU1ZHIGljb24gaW50byBpdHMgcGFyZW50IGNvbnRhaW5lci5cblxuYGBgamFkZVxuZGl2KHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7IGJvcmRlcjogc29saWQgMXB4ICNjY2M7IHdpZHRoOjUwcHg7IGhlaWdodDoxMDBweFwiKVxuICBzdmcuc3ZnLWljb24uLXNjYWxlXG4gICAgdXNlKHhsaW5rOmhyZWY9XCIjc3RhcnMtaWNvblwiKVxuXG5kaXYoc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazsgYm9yZGVyOiBzb2xpZCAxcHggI2NjYzsgd2lkdGg6MjAwcHg7IGhlaWdodDoxMDBweFwiKVxuICBzdmcuc3ZnLWljb24uLXNjYWxlXG4gICAgdXNlKHhsaW5rOmhyZWY9XCIjc3RhcnMtaWNvblwiKVxuYGBgXG5cblxuKi9cblxuLnN2Zy1pY29uIHtcblxuXHRmaWxsOiBjdXJyZW50Q29sb3I7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXG5cdCYuLWlubGluZSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG5cblx0Zm9yIHNpemUsIHZhbHVlIGluIHRoZW1lLmNvbXBvbmVudHMuc3ZnLWljb24ge1xuXHRcdFxuXHRcdGlmKCBzaXplICE9ICdkZWZhdWx0JyApIHtcblx0XHRcdCYuLXtzaXplfSB7XG5cdFx0XHRcdHt2YWx1ZX1cdFxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR7dmFsdWV9XG5cdFx0fVxuXHR9XG59XG4iLCIvKiFcbi0tLVxubmFtZTogLnRleHQtc3R5bGVcbmNhdGVnb3J5OiBDb21wb25lbnRzLy50ZXh0LXN0eWxlXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHRleHRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHRleHQgc3R5bGluZyBjb21wb25lbnQgZm9yIGRpZmZlcmVudCB0ZXh0IHN0eWxlc1xuXG4jIyBEZWZhdWx0IGhlYWRpbmdcblxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUgRGVmYXVsdCBoZWFkaW5nXG5gYGBcblxuIyMgSDFcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1oMSBUaGUgaDEgaGVhZGVyXG5cbmBgYFxuXG4jIyBIMlxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWgyIFRoZSBoMiBoZWFkZXJcbmBgYFxuXG4jIyBIM1xuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWgzIFRoZSBoMyBoZWFkZXJcbmBgYFxuXG4jIyBCb2xkXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4tYm9sZCBCb2xkIHRleHRcbmBgYFxuXG4jIyBBbGlnbiBjZW50ZXJcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1jZW50ZXIgQ2VudGVyZWQgdGV4dFxuYGBgXG5cbiMjIEFsaWduIHJpZ2h0XG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4tcmlnaHQgUmlnaHQgYWxpZ25lZCB0ZXh0XG5gYGBcblxuKi9cblxuXG5cbi50ZXh0LXN0eWxlIHtcblxuXHRmb3IgbmFtZSwgdmFsdWUgaW4gdGhlbWUuY29tcG9uZW50cy50ZXh0LXN0eWxlIHtcblx0XG5cdFx0XG5cdFx0Ji4te25hbWV9IHtcblx0XHRcdHt2YWx1ZX1cblx0XHR9XG4gICAgICAgIFxuXHR9XG59XG5cblxuIiwiLyohXG4tLS1cbm5hbWU6IC50cmFuc2Zvcm0tYm94XG5jYXRlZ29yeTogQ29tcG9uZW50cy8udHJhbnNmb3JtLWJveFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSB0cmFuc2Zvcm1cbiAtIGJveC1tb2RlbFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYm94IHRvIGNvbnRyb2wgY29tbW9uIHRyYW5zZm9ybWF0aW9uc1xuXG4jIyBSb3RhdGVcbmBgYGphZGVcbmRpdi50cmFuc2Zvcm0tYm94Li1yb3Q5MCBTb21lIGRlbW8gY29udGVudFxuZGl2LnRyYW5zZm9ybS1ib3guLXJvdDE4MCBTb21lIGRlbW8gY29udGVudFxuZGl2LnRyYW5zZm9ybS1ib3guLXJvdDI3MCBTb21lIGRlbW8gY29udGVudFxuYGBgXG5cbiMjIEZsaXBcbmBgYGphZGVcbmRpdi50cmFuc2Zvcm0tYm94Li1mbGlwWCBTb21lIGRlbW8gY29udGVudFxuZGl2LnRyYW5zZm9ybS1ib3guLWZsaXBZIFNvbWUgZGVtbyBjb250ZW50XG5gYGBcbiovXG4udHJhbnNmb3JtLWJveCB7XG5cblx0Y29uZiA9IHRoZW1lLmNvbXBvbmVudHMudHJhbnNmb3JtLWJveDtcblxuXHRmb3IgbmFtZSwgdmFsdWUgaW4gY29uZiB7XG5cdFx0Ji4te25hbWV9IHtcblx0XHRcdHt2YWx1ZX1cblx0XHR9XG5cdH1cblxufSIsIi8qIVxuLS0tXG5uYW1lOiAudHJhbnNpdGlvbi1ib3hcbmNhdGVnb3J5OiBDb21wb25lbnRzLy50cmFuc2l0aW9uLWJveFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSB0cmFuc2l0aW9uXG4gLSBib3gtbW9kZWxcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGJveCB0byBjb250cm9sIHRyYW5zaXRpb24gb24gZGl2c1xuXG4jIyBFbmFibGUgYWxsIHRyYW5zaXRpb25zXG5gYGBqYWRlXG5kaXYudHJhbnNpdGlvbi1ib3guLWFsbCBBbGwgdHJhbnNpdGlvbnMgZW5hYmxlZFxuYGBgXG5cbiMjIENvbnRyb2wgdGhlIHNwZWVkIG9mIHRoZSB0cmFuc2l0aW9uXG5gYGBqYWRlXG5kaXYudHJhbnNpdGlvbi1ib3guLWFsbC4tc2xvdyBBcHBseSB0aGUgc2xvdyBkdXJhdGlvbiB2YXJpYW50XG5kaXYudHJhbnNpdGlvbi1ib3guLWFsbC4tZmFzdCBBcHBseSB0aGUgZmFzdCBkdXJhdGlvbiB2YXJpYW50XG5gYGBcbiovXG4udHJhbnNpdGlvbi1ib3gge1xuXG5cdGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLnRyYW5zaXRpb24tYm94O1xuXG5cdHRyYW5zaXRpb24tZHVyYXRpb246IGNvbmYuZHVyYXRpb247XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcblxuXHRmb3IgbmFtZSwgdmFsdWUgaW4gY29uZi52YXJpYW50cyB7XG5cdFx0Ji4te25hbWV9IHtcblx0XHRcdHt2YWx1ZX1cblx0XHR9XG5cdH1cblxufVxuIiwiLl9jbGVhciB7XG4gIGNsZWFyOiBib3RoO1xufVxuXG4uX2NvbGxhcHNlZC1tZWRpdW0ge1xuICBAbWVkaWEgKG1pbi13aWR0aDogdGhlbWUuc2V0dGluZ3MuYnJlYWtwb2ludHMubWVkaXVtKSB7XG4gICAgdmlzaWJpbGl0eTogY29sbGFwc2U7XG4gIH1cbn1cblxuLl9oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5fb3ZlcmZsb3ctaGlkZGVuIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLl9yZWxhdGl2ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbiIsInZpZXdwb3J0KCRtb2RlLCAkbmFtZSkge1xuICBAbWVkaWEgKHskbW9kZX0td2lkdGg6IHRoZW1lLnNldHRpbmdzLmJyZWFrcG9pbnRzWyRuYW1lXSkge1xuICAgIHtibG9ja31cbiAgfVxufVxuIiwiLmNvbnRlbnQtaXRlbS1sYXlvdXQge1xuXG4gID4gLmNvbnRlbnQtaXRlbS4tYmxvY2suLWZsb2F0IHtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHJlbSgyMHB4KTtcbiAgICAgICYuLWxlZnQge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0oMzJweCk7XG4gICAgICB9XG4gICAgICAmLi1yaWdodCB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHJlbSgzMnB4KTtcbiAgICAgIH1cbiAgICAgICYuLXcxLTQge1xuICAgICAgICBtYXgtd2lkdGg6IDI1JTtcbiAgICAgIH1cbiAgICAgICYuLXcxLTMge1xuICAgICAgICBtYXgtd2lkdGg6IDMzLjMzJTtcbiAgICAgIH1cbiAgICAgICYuLXcxLTIge1xuICAgICAgICBtYXgtd2lkdGg6IDUwJTtcbiAgICAgIH1cbiAgICAgICYuLXcyLTMge1xuICAgICAgICBtYXgtd2lkdGg6IDY2LjY2JTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICA+IC5jb250ZW50LWl0ZW0gKyAuY29udGVudC1pdGVtIHtcbiAgICBtYXJnaW4tdG9wOiByZW0oMjBweCk7XG4gIH1cblxuICA+IC5jb250ZW50LWl0ZW0gKyAuY29udGVudC1pdGVtLi1ibG9jazpub3QoLi1mbG9hdCkge1xuICAgIG1hcmdpbi10b3A6IHJlbSgzMnB4KTtcbiAgfVxuXG4gID4gLmNvbnRlbnQtaXRlbS4tYmxvY2s6bm90KC4tZmxvYXQpICsgLmNvbnRlbnQtaXRlbTpub3QoLi1mbG9hdCkge1xuICAgIG1hcmdpbi10b3A6IHJlbSgzMnB4KTtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIG1hcmdpbi10b3A6IHJlbSg2MHB4KTtcbiAgICB9XG4gIH1cblxuICA+IC5jb250ZW50LWl0ZW0uLWhlYWRpbmcgKyAuY29udGVudC1pdGVtLi1oZWFkaW5nIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgPiAuY29udGVudC1pdGVtLi1oZWFkaW5nICsgLmNvbnRlbnQtaXRlbS4tcGFyYSB7XG4gICAgK3ZpZXdwb3J0KG1pbiwgbWVkaXVtKSB7XG4gICAgICBtYXJnaW4tdG9wOiByZW0oNDVweCk7XG4gICAgfVxuICB9XG5cbiAgPiAuY29udGVudC1pdGVtLi1wYXJhICsgLmNvbnRlbnQtaXRlbS4taGVhZGluZyB7XG4gICAgbWFyZ2luLXRvcDogcmVtKDQ1cHgpO1xuICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgbWFyZ2luLXRvcDogcmVtKDcwcHgpO1xuICAgIH1cbiAgfVxufVxuIiwiLmNvbnRlbnQtc3R5bGUge1xuXG4gICYuLWNlbnRlcmVkIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZy1sZWZ0OiByZW0oMzJweCk7XG4gICAgcGFkZGluZy1yaWdodDogcmVtKDMycHgpO1xuICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgbWF4LXdpZHRoOiByZW0oMTA3M3B4KTtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gICYuLWZpbGwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuXG4gICYuLW5hcnJvdy4tY2VudGVyZWQge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nLWxlZnQ6IHJlbSgzMnB4KTtcbiAgICBwYWRkaW5nLXJpZ2h0OiByZW0oMzJweCk7XG4gICAgK3ZpZXdwb3J0KG1pbiwgbWVkaXVtKSB7XG4gICAgICBtYXgtd2lkdGg6IHJlbSg4MzBweCk7XG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICB9XG4gIH1cbn1cbiIsIi5maXhlZC1wYWdlLWxheW91dCB7XG5cbiAgJGhlYWRlckhlaWdodCA9IHJlbSgzOXB4KTtcbiAgJGxhcmdlSGVhZGVySGVpZ2h0ID0gcmVtKDUycHgpO1xuXG4gID4gLmhlYWRlciB7XG4gICAgei1pbmRleDogMjtcbiAgICBoZWlnaHQ6IHJlbSgzOXB4KTtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIGhlaWdodDogcmVtKDUycHgpO1xuICAgIH1cbiAgfVxuXG4gID4gLmNvbnRlbnQge1xuICAgIHotaW5kZXg6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgICYuLW1hcmdpbi10b3Age1xuICAgICAgbWluLWhlaWdodDogJ2NhbGMoMTAwdmggLSAlcyknICUgJGhlYWRlckhlaWdodDtcbiAgICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgICBtaW4taGVpZ2h0OiAnY2FsYygxMDB2aCAtICVzKScgJSAkbGFyZ2VIZWFkZXJIZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiAuc2lkZWJhciB7XG4gICAgei1pbmRleDogMTtcbiAgICBib3R0b206IGluaGVyaXQ7XG5cbiAgICB3aWR0aDogMTAwJTtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIHdpZHRoOiB0aGVtZS5jb21wb25lbnRzLmZpeGVkLXBhZ2UtbGF5b3V0LnNpZGViYXIuZGVmYXVsdDtcbiAgICB9XG5cbiAgICBtYXJnaW4tdG9wOiAkaGVhZGVySGVpZ2h0O1xuICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgbWFyZ2luLXRvcDogJGxhcmdlSGVhZGVySGVpZ2h0O1xuICAgIH1cblxuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyBlYXNlLCBvcGFjaXR5IDAuMjVzIGVhc2UsIHZpc2liaWxpdHkgMHMgZWFzZSAwLjI1cztcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgoMCAtICRoZWFkZXJIZWlnaHQpKTtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgoMCAtICRsYXJnZUhlYWRlckhlaWdodCkpO1xuICAgIH1cbiAgICB2aXNpYmlsaXR5OiBjb2xsYXBzZTtcbiAgICAmLi1zaG93IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXG4gICAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzLCB0cmFuc2Zvcm0gMC4yNXMgZWFzZSwgb3BhY2l0eSAwLjI1cyBlYXNlO1xuICAgIH1cbiAgfVxufVxuIiwiLmhvcml6b250YWwtcnVsZXIge1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci10b3A6IHNvbGlkIDFweCB0aW50KHRoZW1lLmNvbG9ycy50ZXh0LCAyNSUpO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG5cbiAgJi4tc2hvcnQge1xuICAgIHdpZHRoOiByZW0oMTUwcHgpO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG59XG4iLCIubGF5ZXItYm94IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG5cbiAgJi4tb3ZlcmZsb3cge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG59XG4iLCIubGlzdC1zdHlsZSB7XG5cbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAkaW5kZW50ID0gcmVtKDY0cHgpOyAvLyBzYW1lIGluZGVudCBhcyB0ZXh0IG9mICdUaXAnIGNvbnRlbnQgZWxlbWVudFxuICBtYXJnaW4tbGVmdDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gID4gbGkge1xuICAgIG1hcmdpbi10b3A6IDEuMjVyZW07IC8vIFRPRE86IHNob3VsZCBiZSBwYXJ0IG9mIGAuY29udGVudC1pdGVtYFxuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tbGVmdDogKDAgLSAkaW5kZW50KTtcbiAgICAgIHdpZHRoOiAkaW5kZW50O1xuICAgIH1cbiAgfVxuXG4gICYuLW9yZGVyZWQge1xuICAgIGNvdW50ZXItcmVzZXQ6IGxpc3Q7XG4gICAgPiBsaTo6YmVmb3JlIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0O1xuICAgICAgY29udGVudDogY291bnRlcihsaXN0LCBsb3dlci1hbHBoYSkgJykgJztcblxuICAgICAgLy8gc2FtZSBhcyAudGV4dC1zdHlsZS4tZW0uLWNvbG9yLXByaW1hcnk6XG4gICAgICBjb2xvcjogdGhlbWUuY29sb3JzLnByaW1hcnk7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cbiAgfVxuXG4gICYuLXVub3JkZXJlZCB7XG4gICAgPiBsaTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICctICc7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDFjaDtcbiAgICB9XG4gIH1cbn1cbiIsIi5tZW51IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICA+IC5pdGVtIHtcbiAgICBtaW4taGVpZ2h0OiByZW0oNjBweCk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgIEBleHRlbmRzIC5ib3JkZXItYm94Li1ib3R0b207XG4gICAgfVxuXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aW50KHRoZW1lLmNvbG9ycy5oZWFkZXIsIDkwJSlcbiAgICB9XG4gIH1cbn1cbiIsIi5wYXJhbGxheC1jb250YWluZXIge1xuICBwZXJzcGVjdGl2ZTogMXB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gID4gLmxheWVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdy15OiB2aXNpYmxlO1xuXG4gICAgPiAuaXRlbSB7XG4gICAgfVxuICB9XG59XG4iLCIuc3ZnLWljb24ge1xuXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICB3aWR0aDogcmVtKDI0cHgpO1xuICBoZWlnaHQ6IHJlbSgyNHB4KTtcblxuICAmLi1zdHJva2Uge1xuICAgIHN0cm9rZTogY3VycmVudENvbG9yO1xuICB9XG5cbiAgJi4tZmlsbCB7XG4gICAgZmlsbDogY3VycmVudENvbG9yO1xuICB9XG5cbiAgJi4tYmFjay1hcnJvdyB7XG4gICAgbGVmdDogMzJweDtcbiAgICB3aWR0aDogcmVtKDI3cHgpO1xuICAgIGhlaWdodDogcmVtKDI3cHgpO1xuICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgd2lkdGg6IHJlbSg0NXB4KTtcbiAgICAgIGhlaWdodDogcmVtKDQ1cHgpO1xuICAgIH1cbiAgfVxuXG4gICYuLWgyIHtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtZS5jb2xvcnMucHJpbWFyeTtcbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIHdpZHRoOiByZW0oNjYuNnB4KTtcbiAgICBoZWlnaHQ6IHJlbSg2Ni42cHgpO1xuICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgd2lkdGg6IHJlbSgxMDFweCk7XG4gICAgICBoZWlnaHQ6IHJlbSgxMDFweCk7XG4gICAgfVxuICB9XG5cbiAgJi4tbWVudS1oZWFkZXIge1xuICAgIHN0cm9rZTogY3VycmVudENvbG9yO1xuICAgIC5saW5lIHtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjMzcyBlYXNlO1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7XG4gICAgfVxuICAgICYuLW9wZW4ge1xuICAgICAgLmxpbmUuLXRsIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTJweCwgMTJweCkgcm90YXRlKC0xMzVkZWcpIHRyYW5zbGF0ZSgtMXB4LCAtM3B4KSBzY2FsZVgoMC41KTtcbiAgICAgIH1cbiAgICAgIC5saW5lLi10ciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEycHgsIDEycHgpIHJvdGF0ZSgtNDVkZWcpIHRyYW5zbGF0ZSgtMXB4LCAtOXB4KSBzY2FsZVgoMC41KTtcbiAgICAgIH1cbiAgICAgIC5saW5lLi1ibCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEycHgsIDEycHgpIHJvdGF0ZSgtMzE1ZGVnKSB0cmFuc2xhdGUoLTFweCwgLTE1cHgpIHNjYWxlWCgwLjUpO1xuICAgICAgfVxuICAgICAgLmxpbmUuLWJyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTJweCwgMTJweCkgcm90YXRlKC0yMjVkZWcpIHRyYW5zbGF0ZSgtMXB4LCAtMjFweCkgc2NhbGVYKDAuNSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi4tbWVudS1pdGVtIHtcbiAgICB3aWR0aDogcmVtKDMwcHgpO1xuICAgIGhlaWdodDogcmVtKDMwcHgpO1xuICAgIGJhY2tncm91bmQ6IHRoZW1lLmNvbG9ycy5wcmltYXJ5O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gIH1cblxuICAmLi1sb2dvLWhlYWRlciB7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgd2lkdGg6IHJlbSgzOS44OXB4KTtcbiAgICBoZWlnaHQ6IHJlbSgyMy45OXB4KTtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIHdpZHRoOiByZW0oNTYuMzdweCk7XG4gICAgICBoZWlnaHQ6IHJlbSgzMy45MXB4KTtcbiAgICB9XG4gIH1cblxuICAmLi14bCB7XG4gICAgd2lkdGg6IHJlbSg0OHB4KTtcbiAgICBoZWlnaHQ6IEB3aWR0aDtcbiAgfVxuXG4gICYuLXh4bCB7XG4gICAgd2lkdGg6IHJlbSg3MnB4KTtcbiAgICBoZWlnaHQ6IEB3aWR0aDtcbiAgfVxuXG4gICYuLXRvcGljLW92ZXJ2aWV3LXRpbGUge1xuICAgIHdpZHRoOiByZW0oNzJweCk7XG4gICAgaGVpZ2h0OiByZW0oNzJweCk7XG4gICAgK3ZpZXdwb3J0KG1pbiwgbWVkaXVtKSB7XG4gICAgICB3aWR0aDogcmVtKDEyOHB4KTtcbiAgICAgIGhlaWdodDogcmVtKDEyOHB4KTtcbiAgICB9XG4gIH1cblxuICAmLi10b3BpYy1vdmVydmlldy1udWRnZS11cCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHJlbSgtMS41cHgpKTtcbiAgfVxufVxuIiwiLnRhYmxlLXN0eWxlIHtcblxuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXG4gIHRkLFxuICB0aCxcbiAgdHIge1xuICAgIGJvcmRlcjogbm9uZSAxcHggdGhlbWUuY29sb3JzLnRleHQ7XG4gICAgcGFkZGluZzogcmVtKDZweCkgcmVtKDEycHgpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cblxuICAmLi1uby12ZXJ0aWNhbC1saW5lcyB7XG4gICAgdGQsXG4gICAgdGgsXG4gICAgdHIge1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmUgMHB4O1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lIDBweDtcbiAgICB9XG4gIH1cblxuICB0ZCxcbiAgdGgge1xuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xuICAgIH1cbiAgfVxuXG4gIHRyIHtcbiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgfVxuXG4gICYuLWJvcmRlciB7XG4gICAgYm9yZGVyOiBzb2xpZCAxcHggdGhlbWUuY29sb3JzLnRleHQgIWltcG9ydGFudDtcbiAgfVxuXG4gIC4tYm9yZGVyIHtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICB9XG4gIC4tbm8tYm9yZGVyIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIH1cblxuICBmb3IgJHNpZGUgaW4gKHRvcCBsZWZ0IGJvdHRvbSByaWdodCkge1xuICAgIC4tYm9yZGVyLXskc2lkZX0ge1xuICAgICAgYm9yZGVyLXskc2lkZX0tc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC4tbm8tYm9yZGVyLXskc2lkZX0ge1xuICAgICAgYm9yZGVyLXskc2lkZX0tc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAuLWJvcmRlci1oIHtcbiAgICBib3JkZXItbGVmdC1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG4gIH1cbiAgLi1uby1ib3JkZXItaCB7XG4gICAgYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmlnaHQtc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC4tYm9yZGVyLXYge1xuICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbiAgfVxuICAuLW5vLWJvcmRlci12IHtcbiAgICBib3JkZXItdG9wLXN0eWxlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIudGV4dC1zdHlsZSB7XG5cbiAgLy8gYnV0dG9uc1xuICAmLi1idXR0b24ge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7IC8vIFJvbWFuXG4gICAgZm9udC1zaXplOiByZW0oMTNweCk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbSgxOHB4KTtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIGZvbnQtc2l6ZTogcmVtKDE4cHgpO1xuICAgICAgbGluZS1oZWlnaHQ6IHJlbSgyNXB4KTtcbiAgICB9XG4gIH1cblxuICAvLyBtYWluIHNpdGUgdGl0bGVcbiAgJi4taDEge1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7IC8vIEJsYWNrXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogcmVtKDAuNzVweCk7XG4gICAgK3ZpZXdwb3J0KG1pbiwgbWVkaXVtKSB7XG4gICAgICBmb250LXNpemU6IHJlbSg1MHB4KTtcbiAgICAgIGxpbmUtaGVpZ2h0OiByZW0oNjhweCk7XG4gICAgICBsZXR0ZXItc3BhY2luZzogcmVtKDIuNXB4KTtcbiAgICB9XG4gIH1cblxuICAmLi1oMS1oZWFkZXIge1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7IC8vIEJsYWNrXG4gICAgZm9udC1zaXplOiByZW0oMTVweCk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbSgyMHB4KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiByZW0oMC43NXB4KTtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIGZvbnQtc2l6ZTogcmVtKDMwcHgpO1xuICAgICAgbGluZS1oZWlnaHQ6IHJlbSg0MXB4KTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiByZW0oMS41cHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIG1haW4gc2l0ZSBzdWJ0aXRsZVxuICAmLi1oMS1zdWIge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7IC8vIE1lZGl1bVxuICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgZm9udC1zaXplOiByZW0oMjBweCk7XG4gICAgICBsaW5lLWhlaWdodDogcmVtKDI3cHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHBhZ2UgdGl0bGVcbiAgJi4taDIge1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7IC8vIEJsYWNrXG4gICAgZm9udC1zaXplOiByZW0oMjBweCk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbSgyN3B4KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiByZW0oMS40MnB4KTtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIGZvbnQtc2l6ZTogcmVtKDM2cHgpO1xuICAgICAgbGluZS1oZWlnaHQ6IHJlbSg0OXB4KTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiByZW0oMi41cHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHBhZ2Ugc3VidGl0bGVcbiAgJi4taDItc3ViIHtcbiAgICBmb250LXdlaWdodDogNTAwOyAvLyBSb21hblxuICAgIGZvbnQtc2l6ZTogcmVtKDE4cHgpO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0oMjVweCk7XG4gICAgK3ZpZXdwb3J0KG1pbiwgbWVkaXVtKSB7XG4gICAgICBmb250LXNpemU6IHJlbSgyMnB4KTtcbiAgICAgIGxpbmUtaGVpZ2h0OiByZW0oMzBweCk7XG4gICAgfVxuICB9XG5cbiAgLy8gc2VjdGlvbiB0aXRsZVxuICAmLi1oMyB7XG4gICAgZm9udC13ZWlnaHQ6IDgwMDsgLy8gSGVhdnlcbiAgICBmb250LXNpemU6IHJlbSgxNHB4KTtcbiAgICBsaW5lLWhlaWdodDogcmVtKDE5cHgpO1xuICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgZm9udC1zaXplOiByZW0oMThweCk7XG4gICAgICBsaW5lLWhlaWdodDogcmVtKDIzcHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHBhcmFncmFwaCB0ZXh0XG4gICYuLXBhcmEge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7IC8vIEJvb2tcbiAgICBmb250LXNpemU6IHJlbSgxM3B4KTtcbiAgICBsaW5lLWhlaWdodDogcmVtKDE3cHgpO1xuICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgZm9udC1zaXplOiByZW0oMThweCk7XG4gICAgICBsaW5lLWhlaWdodDogcmVtKDI0cHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGJsb2NrIGNhcHRpb25zXG4gICYuLWJsb2NrLWNhcHRpb24ge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7IC8vIEJvb2tcbiAgICBmb250LXNpemU6IHJlbSgxMnB4KTtcbiAgICBsaW5lLWhlaWdodDogcmVtKDE2cHgpO1xuICAgICt2aWV3cG9ydChtaW4sIG1lZGl1bSkge1xuICAgICAgZm9udC1zaXplOiByZW0oMTRweCk7XG4gICAgICBsaW5lLWhlaWdodDogcmVtKDIwcHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVtcGhhc2l6ZWQgcGFyYWdyYXBoIHRleHRcbiAgJi4tZW0ge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7IC8vIE1lZGl1bVxuICB9XG5cbiAgLy8gY29sb3VyZWQgdGV4dFxuICAmLi1jb2xvci1wcmltYXJ5IHtcbiAgICBjb2xvcjogdGhlbWUuY29sb3JzLnByaW1hcnk7XG4gIH1cbiAgJi4tY29sb3ItcHJpbWFyeS1kYXJrIHtcbiAgICBjb2xvcjogdGhlbWUuY29sb3JzLnByaW1hcnktZGFyaztcbiAgfVxuICAmLi1jb2xvci10ZXh0IHtcbiAgICBjb2xvcjogdGhlbWUuY29sb3JzLnRleHQ7XG4gIH1cbiAgJi4tY29sb3Itd2hpdGUge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuXG4gIC8vIGlzb2xhdGVkLCBicmllZiBiaXRzIG9mIHRleHRcbiAgJi4tbGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7IC8vIFJvbWFuXG4gICAgZm9udC1zaXplOiByZW0oMTRweCk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbSgxOXB4KTtcbiAgICArdmlld3BvcnQobWluLCBtZWRpdW0pIHtcbiAgICAgIGZvbnQtc2l6ZTogcmVtKDE4cHgpO1xuICAgICAgbGluZS1oZWlnaHQ6IHJlbSgyNXB4KTtcbiAgICB9XG4gIH1cblxuICAvLyB3ZWIgbGlua3NcbiAgJi4tbGluayB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDsgLy8gUm9tYW5cbiAgfVxuXG4gIC8vIG1haW4gbWVudSBpdGVtc1xuICAmLi1tZW51LWl0ZW0ge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7IC8vIE1lZGl1bVxuICAgIGZvbnQtc2l6ZTogcmVtKDE3cHgpO1xuICAgIGxpbmUtaGVpZ2h0OiBAZm9udC1zaXplO1xuICB9XG5cbiAgJi4tdG9waWMtb3ZlcnZpZXctaXRlbSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDsgLy8gTWVkaXVtXG4gICAgZm9udC1zaXplOiByZW0oMTJweCk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbSgxNnB4KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgK3ZpZXdwb3J0KG1pbiwgbWVkaXVtKSB7XG4gICAgICBmb250LXdlaWdodDogODAwOyAvLyBIZWF2eVxuICAgICAgZm9udC1zaXplOiByZW0oMjBweCk7XG4gICAgICBsaW5lLWhlaWdodDogcmVtKDI3cHgpO1xuICAgIH1cbiAgfVxufVxuIl19 */
