/*
---
name: Colors
category: Shared/Variables
template: colors
tag:
 - variables
 - colors
colors:
 - variable: "text-color"
   description: "The default text color on the body"
   value: "#3F3F40"
 - variable: "text-inverted-color"
   description: "The default inverted text color on the body"
   value: "#FFF"
 - variable: "action-color"
   description: "The main action color used for links and buttons"
   value: "#EC6449"
 - variable: "body-color"
   description: "The main background color"
   value: "#FFF"
 - variable: "enabled-color"
   description: "Signalcolor for enabled/ok/success/true - search for a better name"
   value: "#7CAE7A"
 - variable: "disabled-color"
   description: "Signalcolor for disabled/notok/error/false - search for a better name"
   value: "#EC6449"
 - variable: "outline-navigation-color"
   description: "Color for the elements in the outline navigation"
   value: "lighten( #3F3F40, 60 )"
---

The color variables that are used throughout the library. 
*/
/*
---
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.
*/
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;
  vertical-align: baseline;
}
:root {
  font-size: 16px;
}
html {
  font-size: 100%;
}
body {
  line-height: 1.5rem;
  color: #2d2d2d;
  font-family: 'Open Sans' , 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: #73cfa4;
}
img {
  display: block;
}
ul,
ol {
  margin-left: 1.25rem;
}
/*
---
name: .border-box
category: Box/Border
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 {
  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.-round {
  border-radius: 50%;
}
/*
---
name: .color-box
category: Box/Color
tag:
 - component
 - border
compile: true
---

A box to control the background color. It makes a variant foreach color definion in the file `color-box.var.styl`

```jade
div.color-box.-white(style="width:100px;height:100px")
```

```jade
div.color-box.-action(style="width:100px;height:100px")
```
*/
.color-box.-body {
  background-color: #fff;
}
.color-box.-action {
  background-color: #3031fe;
}
.color-box.-white {
  background-color: #fff;
}
.color-box.-black {
  background-color: #000;
}
/*
---
name: .margin-box
category: Box/Margin
tag:
 - component
 - layout
compile: true
---

A component to add margins

## Applying margins

The easiest use case is to use simple `.margin-box .-all` for a margin on top, right, bottom and left with default size or
`.-top`, `.-right`, `.-bottom` and `.-left` for specified sides.

```jade
div.margin-box.-all
	div.aigis-debug Default margin applied on top, right, bottom and left
```
```jade
div.margin-box.-bottom
	div.aigis-debug Default margin applied on bottom
```


## Variants

The variants for the margins are `.-top-{size}`, `.-right-{size}`, `.-bottom-{size}` and `.left-{size}` together with sizes small, medium or large.
All sizes are defined in the variable theme.components.margin-box. Values are `small`, `medium`, `large` and `auto`

```jade
div.margin-box.-left-small
    div.aigis-debug Small margin applied on left
```
```jade
div.margin-box.-right-small
    div.aigis-debug Small margin applied on right
```
```jade
div.margin-box.-top-small
    div.aigis-debug Small margin applied on top
```
```jade
div.margin-box.-bottom-small
    div.aigis-debug Small margin applied on bottom
```

There are also shortcuts for vertical `.-v-{size}` and horizontal `.-h-{size}` together with sizes small, medium and large

```jade
div.margin-box.-v-medium
    div.aigis-debug Medium margin applied on top and bottom
```
```jade
div.margin-box.-h-medium
    div.aigis-debug Medium margin applied on right and left
```

## Variants for auto margins

```jade
div.margin-box.-auto.-h(style="width: 200px")
    div.aigis-debug Auto margin applied on right and left
```
```jade
div.margin-box.-auto.-v(style="height: 46px")
    div.aigis-debug Auto margin applied on top and bottom
```

*/
.margin-box.-top {
  margin-top: 1.25rem;
}
.margin-box.-right {
  margin-right: 1.25rem;
}
.margin-box.-bottom {
  margin-bottom: 1.25rem;
}
.margin-box.-left {
  margin-left: 1.25rem;
}
.margin-box.-h {
  margin-left: 1.25rem;
  margin-right: 1.25rem;
}
.margin-box.-v {
  margin-top: 1.25rem;
  margin-bottom: 1.25rem;
}
.margin-box.-all {
  margin: 1.25rem 1.25rem;
}
.margin-box.-top-small {
  margin-top: 0.5rem;
}
.margin-box.-right-small {
  margin-right: 0.5rem;
}
.margin-box.-bottom-small {
  margin-bottom: 0.5rem;
}
.margin-box.-left-small {
  margin-left: 0.5rem;
}
.margin-box.-h-small {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}
.margin-box.-v-small {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}
.margin-box.-all-small {
  margin: 0.5rem 0.5rem;
}
.margin-box.-top-x-medium {
  margin-top: 1.25rem;
}
.margin-box.-right-x-medium {
  margin-right: 1.25rem;
}
.margin-box.-bottom-x-medium {
  margin-bottom: 1.25rem;
}
.margin-box.-left-x-medium {
  margin-left: 1.25rem;
}
.margin-box.-h-x-medium {
  margin-left: 1.25rem;
  margin-right: 1.25rem;
}
.margin-box.-v-x-medium {
  margin-top: 1.25rem;
  margin-bottom: 1.25rem;
}
.margin-box.-all-x-medium {
  margin: 1.25rem 1.25rem;
}
.margin-box.-top-medium {
  margin-top: 1.875rem;
}
.margin-box.-right-medium {
  margin-right: 1.875rem;
}
.margin-box.-bottom-medium {
  margin-bottom: 1.875rem;
}
.margin-box.-left-medium {
  margin-left: 1.875rem;
}
.margin-box.-h-medium {
  margin-left: 1.875rem;
  margin-right: 1.875rem;
}
.margin-box.-v-medium {
  margin-top: 1.875rem;
  margin-bottom: 1.875rem;
}
.margin-box.-all-medium {
  margin: 1.875rem 1.875rem;
}
.margin-box.-top-large {
  margin-top: 3.75rem;
}
.margin-box.-right-large {
  margin-right: 3.75rem;
}
.margin-box.-bottom-large {
  margin-bottom: 3.75rem;
}
.margin-box.-left-large {
  margin-left: 3.75rem;
}
.margin-box.-h-large {
  margin-left: 3.75rem;
  margin-right: 3.75rem;
}
.margin-box.-v-large {
  margin-top: 3.75rem;
  margin-bottom: 3.75rem;
}
.margin-box.-all-large {
  margin: 3.75rem 3.75rem;
}
.margin-box.-top-auto {
  margin-top: auto;
}
.margin-box.-right-auto {
  margin-right: auto;
}
.margin-box.-bottom-auto {
  margin-bottom: auto;
}
.margin-box.-left-auto {
  margin-left: auto;
}
.margin-box.-h-auto {
  margin-left: auto;
  margin-right: auto;
}
.margin-box.-v-auto {
  margin-top: auto;
  margin-bottom: auto;
}
.margin-box.-all-auto {
  margin: auto auto;
}
.margin-box.-auto.-v {
  margin-top: auto;
  margin-bottom: auto;
}
.margin-box.-auto.-h {
  margin-left: auto;
  margin-right: auto;
}
/*
---
name: .padding-box
category: Box/Padding
tag:
 - component
 - layout
compile: true
---

A simple component to add paddings

## Applying paddings

The easiest use case is to use simple `.padding-box .-all` for a padding on top, right, bottom and left with default size or
`.-top`, `.-right`, `.-bottom` and `.-left` for specified sides

```jade
div.aigis-debug.padding-box.-all Defaut padding applied on top, right, bottom and left
```
```jade
div.aigis-debug.padding-box.-bottom Defaut padding applied on bottom
```

## Variants

The variants for the paddings are `.-top-{size}`, `.-right-{size}`, `.-bottom-{size}` and `.left-{size}` together with sizes small, medium or large.
All sizes are defined in the variable theme.components.padding-box. Values are `small`, `medium`, and `large`

```jade
div.aigis-debug.padding-box.-left-small Small padding applied on left
```
```jade
div.aigis-debug.padding-box.-right-small(style="text-align:right") Small padding applied on right
```
```jade
div.aigis-debug.padding-box.-top-small Small padding applied on top
```
```jade
div.aigis-debug.padding-box.-bottom-small Small padding applied on bottom
```

There are also shortcuts for vertical `.-v-{size}` and horizontal `.-h-{size}` together with sizes

```jade
div.aigis-debug.padding-box.-v-medium Medium padding applied on top and bottom
```
```jade
div.aigis-debug.padding-box.-h-medium(style="width: 300px") Medium padding applied on right and left
```
```jade
div.aigis-debug.padding-box.-h-medium.-top-large(style="width: 400px") Medium padding applied on right and left, large padding applied on top
```
*/
.padding-box.-top {
  padding-top: 0.5rem;
}
.padding-box.-right {
  padding-right: 0.5rem;
}
.padding-box.-bottom {
  padding-bottom: 0.5rem;
}
.padding-box.-left {
  padding-left: 0.5rem;
}
.padding-box.-h {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.padding-box.-v {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.padding-box.-all {
  padding: 0.5rem 0.5rem;
}
.padding-box.-top-small {
  padding-top: 0.125rem;
}
.padding-box.-right-small {
  padding-right: 0.125rem;
}
.padding-box.-bottom-small {
  padding-bottom: 0.125rem;
}
.padding-box.-left-small {
  padding-left: 0.125rem;
}
.padding-box.-h-small {
  padding-left: 0.125rem;
  padding-right: 0.125rem;
}
.padding-box.-v-small {
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}
.padding-box.-all-small {
  padding: 0.125rem 0.125rem;
}
.padding-box.-top-medium {
  padding-top: 1rem;
}
.padding-box.-right-medium {
  padding-right: 1rem;
}
.padding-box.-bottom-medium {
  padding-bottom: 1rem;
}
.padding-box.-left-medium {
  padding-left: 1rem;
}
.padding-box.-h-medium {
  padding-left: 1rem;
  padding-right: 1rem;
}
.padding-box.-v-medium {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.padding-box.-all-medium {
  padding: 1rem 1rem;
}
.padding-box.-top-large {
  padding-top: 2rem;
}
.padding-box.-right-large {
  padding-right: 2rem;
}
.padding-box.-bottom-large {
  padding-bottom: 2rem;
}
.padding-box.-left-large {
  padding-left: 2rem;
}
.padding-box.-h-large {
  padding-left: 2rem;
  padding-right: 2rem;
}
.padding-box.-v-large {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
.padding-box.-all-large {
  padding: 2rem 2rem;
}
.padding-box.-top-x-large {
  padding-top: 4.8125rem;
}
.padding-box.-right-x-large {
  padding-right: 4.8125rem;
}
.padding-box.-bottom-x-large {
  padding-bottom: 4.8125rem;
}
.padding-box.-left-x-large {
  padding-left: 4.8125rem;
}
.padding-box.-h-x-large {
  padding-left: 4.8125rem;
  padding-right: 4.8125rem;
}
.padding-box.-v-x-large {
  padding-top: 4.8125rem;
  padding-bottom: 4.8125rem;
}
.padding-box.-all-x-large {
  padding: 4.8125rem 4.8125rem;
}
.padding-box.-gutter {
  padding: 0.9375rem 0.9375rem;
}
/*
---
name: .shadow-box
category: Box/Shadow
tag:
 - component
 - shadow
 - helper
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: .transform-box
category: Box/Transform
tag:
 - component
 - tranform
 - helper
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: .button-style
category: Components/Button
tag:
 - component
 - button
compile: true
---

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

```jade
button.button-style.-main Action
```
*/
.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: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
}
.button-style.-main {
  color: #fff;
  background-color: #73cfa4;
  padding: 0.125rem 0.5rem;
}
.button-style.-main-mini {
  font-size: 0.8125rem;
  line-height: 1.125rem;
  height: 1.875rem;
  min-width: inherit;
  margin-right: 0.625rem;
  margin-bottom: 0.5rem;
  border-color: #73cfa4;
  background-color: #73cfa4;
  color: #fff;
}
.button-style.-main-mini:hover {
  border-color: #73cfa4;
  background-color: #81d4ad;
}
.button-style.-mini {
  font-size: 0.8125rem;
  line-height: 1.125rem;
  height: 1.875rem;
  min-width: inherit;
  margin-right: 0.625rem;
  margin-bottom: 0.5rem;
  border-color: #2d2d2d;
  border-width: 1px;
  max-width: 100%;
  overflow: hidden;
}
.button-style.-mini:hover {
  border-color: #73cfa4;
}
.button-style.-active-mini {
  color: #fff;
  background-color: #73cfa4;
  border: 1px solid #73cfa4;
}
.button-style.-active {
  color: #fff;
  background-color: #73cfa4;
  padding: 0.125rem 0.5rem;
}
.button-style.-hover {
  transition: all 0.1s;
}
.button-style.-hover:hover {
  background-color: #73cfa4;
}
/*
---
name: .drop-down-menu
category: DropDown
tag:
 - component
 - dropdown
compile: true
---

This styles a menu inside a .drop-down.

```jade
div.drop-down-menu
	div.item Menu 1
	div.item Menu 2
	div.item Menu 3
```

Used in combination with the .drop-down itself
```jade
div.drop-down.-open
	div.toggle.aigis-debug Toggle
	div.content.drop-down-menu
		div.item Menu 1
		div.item Menu 2
		div.item Menu 3
```

*/
.drop-down-menu {
  box-shadow: 0px 1px 6px 0px rgba(0,0,0,0.17);
  border: 1px solid #e0e0e0;
  border-top: none;
}
.drop-down-menu > .item + .item {
  border-top: 1px solid #e0e0e0;
}
/*
---
name: .drop-down
category: DropDown
tag:
 - component
 - dropdown
compile: true
---

This dropdown has the simple mechanism to open and close a dropdown content.

Trigger with mouseover by adding `.-hover` variant

Trigger with js by adding `.-open` variant 

Closed Dropdown
```jade
div.drop-down
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```
## Variants

Variants `.-top`, `.-bottom`, `.-left` and `.-right` can be combined

Bottom left
```jade
div.drop-down.-hover.-bottom.-left
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

Bottom right
```jade
div.drop-down.-hover.-bottom.-right
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

Top right
```jade
div.drop-down.-hover.-top.-right
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

Top left
```jade
div.drop-down.-hover.-top.-left
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```
## Aside

There is an `.-aside` variant to open content aside

Top left aside
```jade
div.drop-down.-hover.-top.-left.-aside(style="left:200px;width:50%")
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

Top right aside
```jade
div.drop-down.-hover.-top.-right.-aside(style="width:50%")
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```
## Relative content

There is a variant for opening the content relative instead of absolute

Relative
```jade
div.drop-down.-hover.-relative(style="width:50%")
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

JS Trigger
```jade
div.drop-down.-open.-bottom.-left
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

## Do not wrap content

A variant preventing the content from wrapping


```jade
div.drop-down.-hover.-nowrap
	div.toggle.aigis-debug Toggle
	div.content Dropdown content with some whitespaces
```

*/
.drop-down {
  position: relative;
  display: inline-block;
  cursor: pointer;
}
.drop-down.-open > .content {
  display: block;
}
.drop-down.-hover:hover > .content {
  display: block;
}
.drop-down.-top > .content {
  bottom: 100%;
}
.drop-down.-bottom > .content {
  top: 100%;
}
.drop-down.-left > .content {
  left: 0;
}
.drop-down.-top.-left.-aside > .content {
  transform: translate(-100%, 100%);
}
.drop-down.-right > .content {
  right: 0;
}
.drop-down.-top.-right.-aside > .content {
  transform: translate(100%, 100%);
}
.drop-down.-relative > .content {
  position: relative;
}
.drop-down.-nowrap > .content {
  white-space: nowrap;
}
.drop-down > .toggle {
  display: inline-block;
}
.drop-down > .content {
  position: absolute;
  z-index: 1000;
  display: none;
}
.svg-icon {
  fill: currentColor;
  display: block;
  width: 1.5rem;
  height: 1.5rem;
}
.svg-icon.-inline {
  display: inline-block;
}
.svg-icon.-medium {
  height: 1.25rem;
  width: 1.25rem;
}
.svg-icon.-small {
  height: 1rem;
}
.svg-icon.-v-centered {
  vertical-align: middle;
}
.svg-icon.-v-sub {
  vertical-align: sub;
}
.svg-icon.-scale {
  width: 100%;
  height: 100%;
}
/*
---
name: .abs-layout
category: Layout/Absolute
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: .fixed-layout
category: Layout/Fixed
tag:
 - container
---

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: Layout/Fixed Page
tag:
 - component
 - 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: 4.375rem;
  transition: all 0.2s;
  z-index: 1000;
}
.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: 14.5625rem;
  transition: all 0.2s;
  z-index: 1005;
}
.fixed-page-layout > .sidebar.-margin-top {
  top: 4.375rem;
}
.fixed-page-layout > .sidebar.-margin-top-small {
  top: 1.875rem;
}
.fixed-page-layout > .sidebar.-small {
  width: 3.125rem;
}
.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 {
  transition: margin 0.2s;
}
.fixed-page-layout > .content.-margin-left {
  margin-left: 14.5625rem;
}
.fixed-page-layout > .content.-margin-left-small {
  margin-left: 3.125rem;
}
.fixed-page-layout > .content.-margin-right {
  margin-right: 14.5625rem;
}
.fixed-page-layout > .content.-margin-right-small {
  margin-right: 3.125rem;
}
.fixed-page-layout > .content.-margin-top {
  margin-top: 4.375rem;
}
.fixed-page-layout > .content.-margin-top-small {
  margin-top: 1.875rem;
}
/*
---
name: .flex-layout
category: Layout/Flex
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: -ms-flexbox;
  display: flex;
}
.flex-layout.-inline {
  display: flex-inline;
}
.flex-layout.-wrap {
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}
.flex-layout.-row {
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
}
.flex-layout.-row > .item {
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;
}
.flex-layout.-column {
  -ms-flex-direction: column;
      flex-direction: column;
}
.flex-layout.-center {
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-line-pack: center;
      align-content: center;
}
.flex-layout.-baseline {
  -ms-flex-align: baseline;
      align-items: baseline;
}
.flex-layout.-left {
  -ms-flex-pack: start;
      justify-content: flex-start;
}
.flex-layout.-right {
  -ms-flex-pack: end;
      justify-content: flex-end;
}
.flex-layout.-top {
  -ms-flex-line-pack: start;
      align-content: flex-start;
}
.flex-layout.-bottom {
  -ms-flex-line-pack: end;
      align-content: flex-end;
}
.flex-layout.-v-center {
  -ms-flex-line-pack: center;
      align-content: center;
}
.flex-layout.-v-space-between {
  -ms-flex-line-pack: justify;
      align-content: space-between;
}
.flex-layout.-v-space-around {
  -ms-flex-line-pack: distribute;
      align-content: space-around;
}
.flex-layout.-h-center {
  -ms-flex-pack: center;
      justify-content: center;
}
.flex-layout.-h-space-between {
  -ms-flex-pack: justify;
      justify-content: space-between;
}
.flex-layout.-h-space-around {
  -ms-flex-pack: distribute;
      justify-content: space-around;
}
.flex-layout.-items-top {
  -ms-flex-align: start;
      align-items: flex-start;
}
.flex-layout.-items-bottom {
  -ms-flex-align: end;
      align-items: flex-end;
}
.flex-layout.-items-center {
  -ms-flex-align: center;
      align-items: center;
}
.flex-layout.-items-stretch {
  -ms-flex-align: flex-stretch;
      align-items: flex-stretch;
}
.flex-layout > .item.-stretch {
  -ms-flex-item-align: stretch;
      -ms-grid-row-align: stretch;
      align-self: stretch;
}
.flex-layout > .item.-top {
  -ms-flex-item-align: start;
      align-self: flex-start;
}
.flex-layout > .item.-center {
  -ms-flex-item-align: center;
      -ms-grid-row-align: center;
      align-self: center;
}
.flex-layout > .item.-bottom {
  -ms-flex-item-align: end;
      align-self: flex-end;
}
.flex-layout > .item.-content {
  -ms-flex: none;
      flex: none;
}
.flex-layout > .item.-grow {
  -ms-flex-positive: 1;
      flex-grow: 1;
}
.flex-layout > .item.-shrink {
  -ms-flex-negative: 1;
      flex-shrink: 1;
}
.flex-layout > .item.-no-grow {
  -ms-flex-positive: 0;
      flex-grow: 0;
}
.flex-layout > .item.-no-shrink {
  -ms-flex-negative: 0;
      flex-shrink: 0;
}
/*
---
name: .grid-layout
category: Layout/Grid
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: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}
.grid-layout.-gutter {
  margin: -0.625rem -0.9375rem;
}
.grid-layout.-gutter > .item {
  padding: 0.625rem 0.9375rem;
}
.grid-layout.-reverse {
  -ms-flex-direction: row-reverse;
      flex-direction: row-reverse;
}
.grid-layout > .item.-w1 {
  -ms-flex: 0 0 100%;
      flex: 0 0 100%;
  max-width: 100%;
}
.grid-layout > .item.-w1-2 {
  -ms-flex: 0 0 50%;
      flex: 0 0 50%;
  max-width: 50%;
}
.grid-layout > .item.-w1-3 {
  -ms-flex: 0 0 33.333333333333336%;
      flex: 0 0 33.333333333333336%;
  max-width: 33.333333333333336%;
}
.grid-layout > .item.-w2-3 {
  -ms-flex: 0 0 66.66666666666667%;
      flex: 0 0 66.66666666666667%;
  max-width: 66.66666666666667%;
}
.grid-layout > .item.-w1-4 {
  -ms-flex: 0 0 25%;
      flex: 0 0 25%;
  max-width: 25%;
}
.grid-layout > .item.-w3-4 {
  -ms-flex: 0 0 75%;
      flex: 0 0 75%;
  max-width: 75%;
}
@media all and (min-width: 32.5rem) {
  .grid-layout > .item.-xsmall-1 {
    -ms-flex: 0 0 100%;
        flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-xsmall-1-2 {
    -ms-flex: 0 0 50%;
        flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-xsmall-1-3 {
    -ms-flex: 0 0 33.333333333333336%;
        flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-xsmall-2-3 {
    -ms-flex: 0 0 66.66666666666667%;
        flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-xsmall-1-4 {
    -ms-flex: 0 0 25%;
        flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-xsmall-3-4 {
    -ms-flex: 0 0 75%;
        flex: 0 0 75%;
    max-width: 75%;
  }
}
@media all and (min-width: 48rem) {
  .grid-layout > .item.-small-1 {
    -ms-flex: 0 0 100%;
        flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-small-1-2 {
    -ms-flex: 0 0 50%;
        flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-small-1-3 {
    -ms-flex: 0 0 33.333333333333336%;
        flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-small-2-3 {
    -ms-flex: 0 0 66.66666666666667%;
        flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-small-1-4 {
    -ms-flex: 0 0 25%;
        flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-small-3-4 {
    -ms-flex: 0 0 75%;
        flex: 0 0 75%;
    max-width: 75%;
  }
}
@media all and (min-width: 62rem) {
  .grid-layout > .item.-medium-1 {
    -ms-flex: 0 0 100%;
        flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-medium-1-2 {
    -ms-flex: 0 0 50%;
        flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-medium-1-3 {
    -ms-flex: 0 0 33.333333333333336%;
        flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-medium-2-3 {
    -ms-flex: 0 0 66.66666666666667%;
        flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-medium-1-4 {
    -ms-flex: 0 0 25%;
        flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-medium-3-4 {
    -ms-flex: 0 0 75%;
        flex: 0 0 75%;
    max-width: 75%;
  }
}
@media all and (min-width: 75rem) {
  .grid-layout > .item.-large-1 {
    -ms-flex: 0 0 100%;
        flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-large-1-2 {
    -ms-flex: 0 0 50%;
        flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-large-1-3 {
    -ms-flex: 0 0 33.333333333333336%;
        flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-large-2-3 {
    -ms-flex: 0 0 66.66666666666667%;
        flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-large-1-4 {
    -ms-flex: 0 0 25%;
        flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-large-3-4 {
    -ms-flex: 0 0 75%;
        flex: 0 0 75%;
    max-width: 75%;
  }
}
/*
---
name: .max-width-layout
category: Layout/Page
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: 48rem) {
  .max-width-layout {
    max-width: 41.75rem;
  }
}
@media all and (min-width: 62rem) {
  .max-width-layout {
    max-width: 43.75rem;
  }
}
@media all and (min-width: 75rem) {
  .max-width-layout {
    max-width: 51.4375rem;
  }
}
.max-width-layout.-center {
  margin-left: auto;
  margin-right: auto;
}
/*
---
name: .slide-overlay
category: Overlay/Slide
tag:
 - rollover
 - slide
 - overlay
---

Rollover component - content rollover rolls in - default from bottom

Trigger with mouserover by adding `.-hover` variant

Trigger with js by adding `.-show` variant

```jade
div.slide-overlay.-hover
    div Some main content
    div.rollover Rollover content
```

Rollover component variant -left
```jade
div.slide-overlay.-left.-hover
    div Some main content
    div.rollover Rollover content
```

Rollover component variant -right
```jade
div.slide-overlay.-right.-hover
    div Some main content
    div.rollover Rollover content
```

Rollover component variant -top
```jade
div.slide-overlay.-top.-hover
    div Some main content
    div.rollover Rollover content
```

Rollover component variant -top with js trigger
```jade
div.slide-overlay.-top.-show
    div Some main content
    div.rollover Rollover content
```
*/
.slide-overlay {
  position: relative;
  overflow: hidden;
}
.slide-overlay > .rollover {
  position: absolute;
  bottom: 0;
  transform: translate(0, 100%);
  transition: transform 0.5s ease;
}
.slide-overlay.-left > .rollover {
  transform: translate(-100%, 0);
  left: 0;
}
.slide-overlay.-right > .rollover {
  transform: translate(100%, 0);
  right: 0;
}
.slide-overlay.-top > .rollover {
  transform: translate(0, -100%);
  top: 0;
}
.slide-overlay.-show > .rollover {
  transform: translate(0, 0);
}
.slide-overlay.-hover:hover > .rollover {
  transform: translate(0, 0);
}
/*
---
name: .control-responsive
category: Responsive/Control
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.control-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.control-responsive.-show-medium Only shown when the screen is narrower than the breakpoint `medium`
```

*/
@media all and (max-width: 32.5rem) {
  .control-responsive.-hide-xsmall {
    display: none;
  }
}
@media all and (min-width: 32.5rem) {
  .control-responsive.-show-xsmall {
    display: none;
  }
}
@media all and (max-width: 48rem) {
  .control-responsive.-hide-small {
    display: none;
  }
}
@media all and (min-width: 48rem) {
  .control-responsive.-show-small {
    display: none;
  }
}
@media all and (max-width: 62rem) {
  .control-responsive.-hide-medium {
    display: none;
  }
}
@media all and (min-width: 62rem) {
  .control-responsive.-show-medium {
    display: none;
  }
}
@media all and (max-width: 75rem) {
  .control-responsive.-hide-large {
    display: none;
  }
}
@media all and (min-width: 75rem) {
  .control-responsive.-show-large {
    display: none;
  }
}
@media all and (max-width: 32.5rem) {
  .hide-responsive.-xsmall {
    display: none;
  }
}
@media all and (max-width: 48rem) {
  .hide-responsive.-small {
    display: none;
  }
}
@media all and (max-width: 62rem) {
  .hide-responsive.-medium {
    display: none;
  }
}
@media all and (max-width: 75rem) {
  .hide-responsive.-large {
    display: none;
  }
}
/*
---
name: .image-responsive
category: Responsive/Image
tag:
 - responsive
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: .media-responsive
category: Responsive/Media
tag:
 - responsive
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: 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: .text-style
category: Text
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
```

*/
.text-style.-h1 {
  font-family: 'Open Sans' , sans-serif;
  font-size: 3.375rem;
  line-height: 4.375rem;
}
.text-style.-h2 {
  font-family: 'Open Sans' , sans-serif;
  font-size: 2.25rem;
  line-height: 3.0625rem;
  font-weight: bold;
  letter-spacing: 0.5px;
  margin-top: 2rem;
  margin-bottom: 0.3125rem;
}
.text-style.-h3 {
  font-family: 'Open Sans' , sans-serif;
  font-weight: bold;
  font-size: 1.625rem;
  line-height: 1.75rem;
}
.text-style.-page-heading {
  font-family: 'Open Sans' , sans-serif;
  font-weight: bold;
  font-size: 1.625rem;
  line-height: 1.75rem;
}
.text-style.-h5 {
  font-family: 'Open Sans' , sans-serif;
  font-size: 1.25rem;
  font-weight: bold;
  line-height: 1.875rem;
}
.text-style.-h4 {
  font-family: 'Open Sans' , sans-serif;
  font-weight: bold;
  font-size: 1rem;
  line-height: 1.375rem;
}
.text-style.-meta {
  font-size: 0.8125rem;
  line-height: 1.125rem;
  color: #a2a2a2;
}
.text-style.-section {
  font-size: 1.125rem;
  line-height: 1.5rem;
  font-weight: 600;
  border-bottom: 2px solid #2d2d2d;
  margin-top: 1.5rem;
  margin-bottom: 1rem;
}
.text-style.-p {
  margin-top: 1rem;
  margin-bottom: 1rem;
}
.text-style.-caption {
  font-size: 0.875rem;
}
.text-style.-center {
  text-align: center;
}
.text-style.-bold {
  font-weight: 700;
}
.text-style.-medium {
  font-weight: 500;
}
.collapse-ui > .content.-transition {
  transition: height 0.3s ease;
  overflow: hidden;
  height: 0;
}
.collapse-ui.-close > .content {
  display: none;
}
.collapse-ui.-close .collapse-icon {
  transform: rotate(90deg);
}
.collapse-ui .collapse-icon {
  transition: all 0.3s ease;
}
a {
  color: #2d2d2d;
  cursor: pointer;
  border-bottom: 0.125rem solid #73cfa4;
}
a.-undecorated {
  border-bottom: 0;
}
a:hover {
  color: #73cfa4;
}
.button-style {
  height: 2.8125rem;
  min-width: 7.5rem;
  display: inline-block;
  border: 2px solid #73cfa4;
}
.button-style:hover {
  background-color: #73cfa4;
  color: #fff;
}
.card-image {
  height: 12.5rem;
  background-size: cover;
  background-position: center;
}
.card-link {
  background: linear-gradient(rgba(255,255,255,0) 0%, #fff 20%);
}
.chapter-element {
  height: 5rem;
  padding-left: 2.5rem;
  padding-right: 2.5rem;
  cursor: pointer;
}
.chapter-element .state-indicator {
  transition: transform 0.3s;
}
.chapter-element.open .state-indicator {
  transform: rotateZ(180deg);
}
.boolean-slider {
  position: relative;
  display: inline-block;
  width: 46px;
  height: 24px;
}
.boolean-slider input {
  display: none;
}
.slider-control {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  transition: 0.4s;
}
.slider-control:before {
  position: absolute;
  content: "";
  height: 20px;
  width: 20px;
  left: 2px;
  bottom: 2px;
  background-color: #fff;
  transition: 0.4s;
}
input:checked + .slider-control:before {
  transform: translateX(22px);
}
.slider-control.round {
  border-radius: 34px;
}
.slider-control.round:before {
  border-radius: 50%;
}
.copyright {
  position: absolute;
  z-index: 100;
  right: 20px;
  top: 435px;
  color: #fff;
  opacity: 0.8;
  text-shadow: 0px 0px 12px #333;
  font-size: 14px;
}
[data-tooltip] {
  position: relative;
  z-index: 2;
  cursor: pointer;
}
[data-tooltip]:before,
[data-tooltip]:after {
  visibility: hidden;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  opacity: 0;
  pointer-events: none;
}
[data-tooltip]:before {
  position: absolute;
  top: 24px;
  right: 2px;
  margin-bottom: 5px;
  padding: 7px;
  width: 160px;
  border-radius: 3px;
  background-color: #000;
  background-color: rgba(51,51,51,0.9);
  color: #fff;
  content: attr(data-tooltip);
  text-align: center;
  font-size: 14px;
  line-height: 1.2;
}
[data-tooltip]:after {
  position: absolute;
  top: 19px;
  left: 7px;
  width: 0;
  border-top: 5px solid #000;
  border-top: 5px solid rgba(51,51,51,0.9);
  border-right: 5px solid transparent;
  border-left: 5px solid transparent;
  content: " ";
  font-size: 0;
  line-height: 0;
  transform: rotate(180deg);
}
[data-tooltip]:hover:before,
[data-tooltip]:hover:after {
  visibility: visible;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
  opacity: 1;
}
.dialog-trigger {
  position: fixed;
  z-index: 99999;
  right: 1.25rem;
  bottom: 1.25rem;
  background-color: #73cfa4;
  color: #fff;
  height: 3rem;
  border-radius: 1.5rem;
  box-shadow: 0 0.5rem 0.75rem rgba(0,0,0,0.3);
}
.dialog-trigger:hover {
  background-color: #86d6b0;
  border-color: #86d6b0;
  box-shadow: 0 0.625rem 0.9375rem rgba(0,0,0,0.3);
}
.filter-term {
  background-color: #fff;
}
.filter-term .term-item {
  overflow: hidden;
}
.filter-term .term-item input {
  max-width: 100%;
  border: 0;
}
.full-height {
  height: 100%;
}
.goal-icon {
  width: 5.8125rem;
  height: 5.8125rem;
}
.header-icon {
  width: 4.375rem;
  border-right: 1px solid #e0e0e0;
  display: inline-block;
  color: #2d2d2d;
}
.header-icon:hover {
  color: #73cfa4;
  cursor: pointer;
}
.header-menu {
  min-width: 16.875rem;
  position: fixed;
  top: 3.4375rem;
  left: 3.75rem;
  padding: 1.25rem 2.5rem;
  background-color: #f6f0ea;
  border: 0.03125rem solid rgba(0,0,0,0.25);
  box-shadow: 0 0.1875rem 1.5rem rgba(0,0,0,0.2);
}
.hidden {
  display: none;
}
.v-stretch {
  height: 100%;
}
.h-stretch {
  width: 100%;
}
.icon-down {
  position: relative;
  top: 0.125rem;
}
.icon-taskdimensions {
  width: 2.375rem;
  height: 2.1875rem;
}
.icon-taskdimensions .oekonomie,
.icon-taskdimensions .oekologie,
.icon-taskdimensions .soziales {
  fill: #e6dacd;
}
.icon-taskdimensions.-show-oekonomie .oekonomie {
  fill: #8067b6;
}
.icon-taskdimensions.-show-oekologie .oekologie {
  fill: #75d6f4;
}
.icon-taskdimensions.-show-soziales .soziales {
  fill: #ed5f7c;
}
#taskdixmensions .oekonomie {
  display: none;
}
.input-style.-basic {
  border: 0;
  padding: 0.125rem 0.9375rem 0.3125rem;
}
.input-style.-maxwidth {
  width: 100%;
}
.extended-width-layout {
  max-width: 62.25rem;
}
.extended-width-layout.-center {
  margin-left: auto;
  margin-right: auto;
}
/*
---
name: .fixed-page-layout
category: Layout/Fixed Page
tag:
 - component
 - 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 > .content {
  min-height: calc( 100vh - 3.125rem);
}
.answer-view input[type="radio"] {
  margin-top: 4px;
  position: absolute;
}
.answer-view input[type="checkbox"] {
  margin-top: 4px;
  position: absolute;
}
.answer-view .text {
  margin-left: 1.5625rem;
}
.answer-view.-correct {
  background-color: #f1f9ee;
  color: #47882d;
}
.answer-view.-wrong {
  color: #9b2727;
  background-color: #fdf7f7;
}
.drag-drop .drag-container {
  background-color: grey-color;
}
.drag-drop .drag-node {
  border: 1px dashed #444;
  cursor: pointer;
  max-width: 60px;
}
.drag-drop .drop-node {
  width: 100%;
}
.drag-drop .drop-target {
  border: 1px dashed #444;
  min-height: 45px;
  width: 100%;
}
.drag-drop .drop-target >.drag-node {
  display: inline-block;
}
.feedback-container {
  display: inline-block;
}
.feedback-panel {
  line-height: 28px;
  padding: 2.5rem 1.875rem 1.25rem 1.875rem;
  margin: -1.5rem 0 0 0;
}
.feedback-panel.-correct {
  border: 1px solid #4bd2a1;
  background-color: #e0f5ee;
  color: #4bd2a1;
}
.feedback-panel.-wrong {
  border: 1px solid #d24b4b;
  background-color: #f5e2e2;
  color: #d24b4b;
}
.hotspot-point {
  height: 20px;
  width: 20px;
  border-radius: 12px;
  background-color: rgba(255,255,255,0.66);
  margin-left: -10px;
  margin-top: -10px;
}
.hotspot-rect {
  background-color: rgba(0,0,0,0.2);
  border: 1px solid #fff;
}
.link-style.-undecorated {
  text-decoration: none;
}
.link-style.-active {
  color: #73cfa4;
}
.material-card {
  width: 13.4375rem;
  height: 18.125rem;
  display: inline-block;
  overflow: hidden;
  font-size: 0.8125rem;
  line-height: 1.125rem;
  transition: box-shadow 0.2s;
}
.material-card img {
  -o-object-fit: cover;
     object-fit: cover;
  width: 100%;
  height: 8.625rem;
}
.material-card > .content-container {
  position: relative;
  transition: all 0.3s;
  top: 0;
}
.material-card > .content-container > .copy {
  position: absolute;
  top: 143px;
  right: 2px;
}
.material-card.-hascover:hover > .content-container {
  top: -8.625rem;
}
.material-card:hover {
  cursor: pointer;
  box-shadow: 0px 2px 22px rgba(0,0,0,0.18);
}
.material-card:hover .card-meta {
  display: none;
}
.material-card:hover .card-action {
  display: block;
}
.material-card .card-action {
  display: none;
}
.material-card .card-action,
.material-card .card-meta,
.material-card .card-meta a {
  color: #a2a2a2 !important;
}
.material-sidebar {
  position: absolute !important;
  background-color: #f6f0ea;
  width: 15rem;
  top: 0.0625rem !important;
  z-index: 10 !important;
  overflow-x: hidden;
  overflow-y: scroll;
  margin-bottom: -1.875rem;
}
.modal-background {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 100000;
  background-color: rgba(0,0,0,0.4);
}
.page-footer {
  background-color: #73cfa4;
  color: #fff;
  position: relative;
  z-index: 10000;
  height: 4.375rem;
}
.page-footer a {
  color: #fff;
}
.page-footer a:hover {
  color: #fff;
}
.page-footer img {
  height: 3rem;
}
.page-header {
  background-color: #fff;
  box-shadow: 0 1px 0 0 rgba(0,0,0,0.25);
  height: 4.375rem;
  z-index: 10000;
}
.progress-bar {
  background-image: linear-gradient(to right, #73cfa4 0%, #73cfa4 50%, #f6f0ea 0%, #f6f0ea 100%);
  background-position: 100% 0;
  background-size: 200% auto;
  width: 3.75rem;
  height: 1.125rem;
  transition: background-position 0.5s ease;
  border-radius: 0.5625rem;
}
.progress-bar .progress {
  background-color: #73cfa4;
  height: 1.125rem;
  border-radius: 0.5625rem;
  transition: all 0.3s ease;
  min-width: 1.125rem;
}
.progress-bar.-p0 .progress {
  width: 5%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p10 .progress {
  width: 10%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p20 .progress {
  width: 20%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p30 .progress {
  width: 30%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p40 .progress {
  width: 40%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p50 .progress {
  width: 50%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p60 .progress {
  width: 60%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p70 .progress {
  width: 70%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p80 .progress {
  width: 80%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p90 .progress {
  width: 90%;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.progress-bar.-p100 .progress {
  width: 100%;
}
.state-dialog {
  position: fixed;
  z-index: 100100;
  top: 0;
  bottom: 0;
  right: 0;
  width: 31.25rem;
  background-color: #fff;
  box-shadow: 0 0 0.625rem 0 rgba(0,0,0,0.2);
}
.state-dialog .dialog-part {
  height: 405px;
  padding: 0.875rem 2.5rem;
}
.state-dialog .dialog-part.-dark {
  background-color: #f6f0ea;
  height: 100%;
}
.state-dialog .dialog-closer {
  position: absolute;
  top: 0.875rem;
  right: 0.875rem;
}
.swap-image {
  cursor: pointer;
  display: inline-block;
}
.swap-image.-active-mini .-passive {
  display: none;
}
.swap-image.-active-mini .-active {
  display: inline;
}
.swap-image .-passive {
  display: inline;
}
.swap-image .-active {
  display: none;
}
.task-checkbox {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}
.task-checkbox:before {
  content: ' ';
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 0.75rem;
  background-color: #fff;
  border: 0.125rem solid #b4b4b4;
  font-size: 1.4375rem;
  cursor: pointer;
}
.task-checkbox:checked:before {
  content: url("data:image/svg+xml; utf8, <svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24'><path d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z' fill='white'/></svg>");
  color: #fff;
  background-color: #73cfa4;
  border-color: #73cfa4;
}
.task-listitem {
  padding: 1.875rem 2.5rem;
  background-color: #f6f0ea;
  border-bottom: 1px solid #fff;
}
.teaser-image {
  height: 25rem;
  background-size: cover;
  background-position: 15% 50%;
}
.thema-card {
  height: 25rem;
  position: relative;
  transition: box-shadow 0.2s;
}
.thema-card > .content-wrapper > .content {
  overflow-y: scroll;
  -ms-overflow-style: none;
  position: absolute;
  height: 22.125rem;
  top: 0px;
  transition: top 0.3s;
}
.thema-card > .link {
  height: 3.4375rem;
  width: 100%;
  position: absolute;
  bottom: 0px;
}
.thema-card:hover {
  cursor: pointer;
  box-shadow: 0px 2px 22px rgba(0,0,0,0.18);
}
.thema-card:hover > .content {
  top: -12.5rem;
}
.thema-card:hover > .link a {
  color: #73cfa4;
}
.thema-image {
  height: 25rem;
  background-size: cover;
  background-position: 50% 45%;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zdHlsdXMvdmFyaWFibGVzL2NvbG9ycy5zdHlsIiwibWFpbi5jc3MiLCJsaWIvc3R5bHVzL3ZhcmlhYmxlcy9zZXR0aW5ncy5zdHlsIiwibGliL3N0eWx1cy9zaGFyZWQvcmVzZXQuc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9ib3gvYm9yZGVyLWJveC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2JveC9jb2xvci1ib3guc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9ib3gvbWFyZ2luLWJveC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2JveC9wYWRkaW5nLWJveC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2JveC9zaGFkb3ctYm94LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvYm94L3RyYW5zZm9ybS1ib3guc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLXN0eWxlLnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcC1kb3duLW1lbnUuc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wLWRvd24uc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9pY29uL3N2Zy1pY29uLnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvbGF5b3V0L2Ficy1sYXlvdXQuc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9sYXlvdXQvZml4ZWQtbGF5b3V0LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvbGF5b3V0L2ZpeGVkLXBhZ2UtbGF5b3V0LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvbGF5b3V0L2ZsZXgtbGF5b3V0LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvbGF5b3V0L2dyaWQtbGF5b3V0LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvbGF5b3V0L21heC13aWR0aC1sYXlvdXQuc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9vdmVybGF5L3NsaWRlLW92ZXJsYXkuc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9yZXNwb25zaXZlL2NvbnRyb2wtcmVzcG9uc2l2ZS5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL3Jlc3BvbnNpdmUvaGlkZS1yZXNwb25zaXZlLnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvcmVzcG9uc2l2ZS9pbWFnZS1yZXNwb25zaXZlLnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvcmVzcG9uc2l2ZS9tZWRpYS1yZXNwb25zaXZlLnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvdGV4dC9vdmVyZmxvdy10ZXh0LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvdGV4dC90ZXh0LXN0eWxlLnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvdWkvY29sbGFwc2UtdWkuc3R5bCIsInJlc2V0LnN0eWwiLCJjb21wb25lbnRzL2J1dHRvbi9idXR0b24tc3R5bGUuc3R5bCIsImNvbXBvbmVudHMvY2FyZC1pbWFnZS5zdHlsIiwiY29tcG9uZW50cy9jYXJkLWxpbmsuc3R5bCIsImNvbXBvbmVudHMvY2hhcHRlci1lbGVtZW50LnN0eWwiLCJjb21wb25lbnRzL2NvbnRyb2xzL2Jvb2xlYW4tc2xpZGVyLnN0eWwiLCJjb21wb25lbnRzL2NvcHlyaWdodC5zdHlsIiwiY29tcG9uZW50cy9kYXRhLXRvb2x0aXAuc3R5bCIsImNvbXBvbmVudHMvZGlhbG9nLXRyaWdnZXIuc3R5bCIsImNvbXBvbmVudHMvZmlsdGVyLXRlcm0uc3R5bCIsImNvbXBvbmVudHMvZnVsbC1oZWlnaHQuc3R5bCIsImNvbXBvbmVudHMvZ29hbC1pY29uLnN0eWwiLCJjb21wb25lbnRzL2hlYWRlci1pY29uLnN0eWwiLCJjb21wb25lbnRzL2hlYWRlci1tZW51LnN0eWwiLCJjb21wb25lbnRzL2hlbHBlcnMuc3R5bCIsImNvbXBvbmVudHMvaWNvbi10YXNrZGltZW5zaW9ucy5zdHlsIiwiY29tcG9uZW50cy9pbnB1dC1zdHlsZS5zdHlsIiwiY29tcG9uZW50cy9sYXlvdXQvZXh0ZW5kZWQtd2lkdGgtbGF5b3V0LnN0eWwiLCJjb21wb25lbnRzL2xheW91dC9maXhlZC1wYWdlLWxheW91dC5zdHlsIiwiY29tcG9uZW50cy9sZXJuZnJhZ2VuL2Fuc3dlci12aWV3LnN0eWwiLCJjb21wb25lbnRzL2xlcm5mcmFnZW4vZHJhZy1kcm9wLnN0eWwiLCJjb21wb25lbnRzL2xlcm5mcmFnZW4vZmVlZGJhY2stY29udGFpbmVyLnN0eWwiLCJjb21wb25lbnRzL2xlcm5mcmFnZW4vZmVlZGJhY2stcGFuZWwuc3R5bCIsImNvbXBvbmVudHMvbGVybmZyYWdlbi9ob3RzcG90LnN0eWwiLCJjb21wb25lbnRzL2xpbmstc3R5bGUuc3R5bCIsImNvbXBvbmVudHMvbWF0ZXJpYWwtY2FyZC5zdHlsIiwiY29tcG9uZW50cy9tYXRlcmlhbC1zaWRlYmFyLnN0eWwiLCJjb21wb25lbnRzL21vZGFsLWJhY2tncm91bmQuc3R5bCIsImNvbXBvbmVudHMvcGFnZS1mb290ZXIuc3R5bCIsImNvbXBvbmVudHMvcGFnZS1oZWFkZXIuc3R5bCIsImNvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyLnN0eWwiLCJjb21wb25lbnRzL3N0YXRlLWRpYWxvZy5zdHlsIiwiY29tcG9uZW50cy9zd2FwLWltYWdlLnN0eWwiLCJjb21wb25lbnRzL3Rhc2stY2hlY2tib3guc3R5bCIsImNvbXBvbmVudHMvdGFzay1saXN0aXRlbS5zdHlsIiwiY29tcG9uZW50cy90ZWFzZXItaW1hZ2Uuc3R5bCIsImNvbXBvbmVudHMvdGhlbWEtY2FyZC5zdHlsIiwiY29tcG9uZW50cy90aGVtYS1pbWFnZS5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUNpQ0U7QUNqQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VENERFO0FFNUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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ekZQO0EyRDl5Rkc7RUFDSSxjQUFBO0MzRGd6RlA7QTREaDBGRDtFQUNJLHlCQUFBO0tBQUEsc0JBQUE7VUFBQSxpQkFBQTtDNURrMEZIO0E0RGgwRkc7RUFDSSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTtFQUNBLHVCQUFBO0VBQ0EsdUJBQUE7RUFDQSwrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7QzVEazBGUDtBNEQvekZHO0VBQ0ksOE1BQUE7RUFDQSxZQUFBO0VBQ0EsMEJBQUE7RUFDQSxzQkFBQTtDNURpMEZQO0E2RHAxRkQ7RUFDSSx5QkFBQTtFQUNBLDBCQUFBO0VBQ0EsOEJBQUE7QzdEczFGSDtBOER6MUZEO0VBQ0MsY0FBQTtFQUNBLHVCQUFBO0VBQ0EsNkJBQUE7QzlEMjFGQTtBK0Q5MUZEO0VBRUksY0FBQTtFQUVBLG1CQUFBO0VBSUEsNEJBQUE7Qy9EMjFGSDtBK0R0MUZPO0VBQ0ksbUJBQUE7RUFDQSx5QkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EscUJBQUE7Qy9EdzFGWDtBK0RqMUZHO0VBQ0ksa0JBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFFQSxZQUFBO0MvRGsxRlA7QStENzBGRztFQUNJLGdCQUFBO0VBQ0EsMENBQUE7Qy9EKzBGUDtBK0Q3MEZPO0VBQ0ksY0FBQTtDL0QrMEZYO0ErRDEwRlc7RUFDSSxlQUFBO0MvRDQwRmY7QWdFMzNGRDtFQUNDLGNBQUE7RUFDQSx1QkFBQTtFQUNBLDZCQUFBO0NoRTYzRkEiLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbi0tLVxubmFtZTogQ29sb3JzXG5jYXRlZ29yeTogU2hhcmVkL1ZhcmlhYmxlc1xudGVtcGxhdGU6IGNvbG9yc1xudGFnOlxuIC0gdmFyaWFibGVzXG4gLSBjb2xvcnNcbmNvbG9yczpcbiAtIHZhcmlhYmxlOiBcInRleHQtY29sb3JcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGRlZmF1bHQgdGV4dCBjb2xvciBvbiB0aGUgYm9keVwiXG4gICB2YWx1ZTogXCIjM0YzRjQwXCJcbiAtIHZhcmlhYmxlOiBcInRleHQtaW52ZXJ0ZWQtY29sb3JcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGRlZmF1bHQgaW52ZXJ0ZWQgdGV4dCBjb2xvciBvbiB0aGUgYm9keVwiXG4gICB2YWx1ZTogXCIjRkZGXCJcbiAtIHZhcmlhYmxlOiBcImFjdGlvbi1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbWFpbiBhY3Rpb24gY29sb3IgdXNlZCBmb3IgbGlua3MgYW5kIGJ1dHRvbnNcIlxuICAgdmFsdWU6IFwiI0VDNjQ0OVwiXG4gLSB2YXJpYWJsZTogXCJib2R5LWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBtYWluIGJhY2tncm91bmQgY29sb3JcIlxuICAgdmFsdWU6IFwiI0ZGRlwiXG4gLSB2YXJpYWJsZTogXCJlbmFibGVkLWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlNpZ25hbGNvbG9yIGZvciBlbmFibGVkL29rL3N1Y2Nlc3MvdHJ1ZSAtIHNlYXJjaCBmb3IgYSBiZXR0ZXIgbmFtZVwiXG4gICB2YWx1ZTogXCIjN0NBRTdBXCJcbiAtIHZhcmlhYmxlOiBcImRpc2FibGVkLWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlNpZ25hbGNvbG9yIGZvciBkaXNhYmxlZC9ub3Rvay9lcnJvci9mYWxzZSAtIHNlYXJjaCBmb3IgYSBiZXR0ZXIgbmFtZVwiXG4gICB2YWx1ZTogXCIjRUM2NDQ5XCJcbiAtIHZhcmlhYmxlOiBcIm91dGxpbmUtbmF2aWdhdGlvbi1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJDb2xvciBmb3IgdGhlIGVsZW1lbnRzIGluIHRoZSBvdXRsaW5lIG5hdmlnYXRpb25cIlxuICAgdmFsdWU6IFwibGlnaHRlbiggIzNGM0Y0MCwgNjAgKVwiXG4tLS1cblxuVGhlIGNvbG9yIHZhcmlhYmxlcyB0aGF0IGFyZSB1c2VkIHRocm91Z2hvdXQgdGhlIGxpYnJhcnkuIFxuKi9cbnRoZW1lLmNvbG9ycyA9IHtcblxuICB0ZXh0OiAjMjAyMDIzLFxuICB0ZXh0LWludmVydGVkOiAjRkZGLFxuICB0ZXh0LWdyYXk6ICM2QTZBNkEsXG5cbiAgYWN0aW9uOiAjMzAzMUZFLFxuXG4gIGJvZHk6ICNGRkYsXG5cbiAgbGluZTogI2UwZTBlMCxcblxuICBlcnJvcjogI0RDMTUzQSxcbiAgc3VjY2VzczogIzAwQTY4NSxcbn1cbiIsIi8qXG4tLS1cbm5hbWU6IENvbG9yc1xuY2F0ZWdvcnk6IFNoYXJlZC9WYXJpYWJsZXNcbnRlbXBsYXRlOiBjb2xvcnNcbnRhZzpcbiAtIHZhcmlhYmxlc1xuIC0gY29sb3JzXG5jb2xvcnM6XG4gLSB2YXJpYWJsZTogXCJ0ZXh0LWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IHRleHQgY29sb3Igb24gdGhlIGJvZHlcIlxuICAgdmFsdWU6IFwiIzNGM0Y0MFwiXG4gLSB2YXJpYWJsZTogXCJ0ZXh0LWludmVydGVkLWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IGludmVydGVkIHRleHQgY29sb3Igb24gdGhlIGJvZHlcIlxuICAgdmFsdWU6IFwiI0ZGRlwiXG4gLSB2YXJpYWJsZTogXCJhY3Rpb24tY29sb3JcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIG1haW4gYWN0aW9uIGNvbG9yIHVzZWQgZm9yIGxpbmtzIGFuZCBidXR0b25zXCJcbiAgIHZhbHVlOiBcIiNFQzY0NDlcIlxuIC0gdmFyaWFibGU6IFwiYm9keS1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbWFpbiBiYWNrZ3JvdW5kIGNvbG9yXCJcbiAgIHZhbHVlOiBcIiNGRkZcIlxuIC0gdmFyaWFibGU6IFwiZW5hYmxlZC1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJTaWduYWxjb2xvciBmb3IgZW5hYmxlZC9vay9zdWNjZXNzL3RydWUgLSBzZWFyY2ggZm9yIGEgYmV0dGVyIG5hbWVcIlxuICAgdmFsdWU6IFwiIzdDQUU3QVwiXG4gLSB2YXJpYWJsZTogXCJkaXNhYmxlZC1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJTaWduYWxjb2xvciBmb3IgZGlzYWJsZWQvbm90b2svZXJyb3IvZmFsc2UgLSBzZWFyY2ggZm9yIGEgYmV0dGVyIG5hbWVcIlxuICAgdmFsdWU6IFwiI0VDNjQ0OVwiXG4gLSB2YXJpYWJsZTogXCJvdXRsaW5lLW5hdmlnYXRpb24tY29sb3JcIlxuICAgZGVzY3JpcHRpb246IFwiQ29sb3IgZm9yIHRoZSBlbGVtZW50cyBpbiB0aGUgb3V0bGluZSBuYXZpZ2F0aW9uXCJcbiAgIHZhbHVlOiBcImxpZ2h0ZW4oICMzRjNGNDAsIDYwIClcIlxuLS0tXG5cblRoZSBjb2xvciB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5LiBcbiovXG4vKlxuLS0tXG5uYW1lOiBHbG9iYWwgc2V0dGluZ3NcbmNhdGVnb3J5OiBTaGFyZWQvVmFyaWFibGVzXG50ZW1wbGF0ZTogdmFyaWFibGVzXG50YWc6XG4gLSB2YXJpYWJsZXNcbnZhcmlhYmxlczpcbiAtIG5hbWU6IFwidGV4dC1saW5lLWhlaWdodFwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbGluZSBoZWlnaHQgb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCIxLjVyZW1cIlxuIC0gbmFtZTogXCJmb250LWZhbWlseVwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgZm9udC1mYW1pbHkgb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCInSGVsdmV0aWNhJywgc2Fucy1zZXJpZlwiXG4gLSBuYW1lOiBcInRleHQtcmVuZGVyaW5nXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSB0ZXh0LXJlbmRlcmluZyBvZiB0aGUgYm9keVwiXG4gICBkZWZhdWx0OiBcIm9wdGltaXplTGVnaWJpbGl0eVwiXG4gLSBuYW1lOiBcInRyYW5zaXRpb24tZHVyYXRpb25cIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGR1cmF0aW9uIG9mIHRoZSBzbGlkZSB0cmFuc2l0aW9uc1wiXG4gICBkZWZhdWx0OiBcIjAuNHNcIlxuIC0gbmFtZTogXCJib3JkZXItcmFkaXVzXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IHJhZGl1cyBmb3IgYm9yZGVyc1wiXG4gICBkZWZhdWx0OiBcIjJweFwiXG4tLS1cblxuVGhlc2UgdmFyaWFibGVzIHNldHVwcyBzb21lIGdsb2JhbCB0ZXh0IGZvcm1hdHRpbmcgYW5kIHN0eWxpbmcuXG4qL1xuaHRtbCxcbmJvZHksXG5kaXYsXG5zcGFuLFxub2JqZWN0LFxuaWZyYW1lLFxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2LFxucCxcbmJsb2NrcXVvdGUsXG5wcmUsXG5hYmJyLFxuYWRkcmVzcyxcbmNpdGUsXG5jb2RlLFxuZGVsLFxuZGZuLFxuZW0sXG5pbWcsXG5pbnMsXG5rYmQsXG5xLFxuc2FtcCxcbnNtYWxsLFxuc3Ryb25nLFxuc3ViLFxuc3VwLFxudmFyLFxuYixcbmksXG5kbCxcbmR0LFxuZGQsXG5vbCxcbnVsLFxubGksXG5maWVsZHNldCxcbmZvcm0sXG5sYWJlbCxcbmxlZ2VuZCxcbnRhYmxlLFxuY2FwdGlvbixcbnRib2R5LFxudGZvb3QsXG50aGVhZCxcbnRyLFxudGgsXG50ZCxcbmFydGljbGUsXG5hc2lkZSxcbmNhbnZhcyxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5LFxudGltZSxcbm1hcmssXG5hdWRpbyxcbnZpZGVvIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG4gIG91dGxpbmU6IDA7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuOnJvb3Qge1xuICBmb250LXNpemU6IDE2cHg7XG59XG5odG1sIHtcbiAgZm9udC1zaXplOiAxMDAlO1xufVxuYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gIGNvbG9yOiAjMmQyZDJkO1xuICBmb250LWZhbWlseTogJ09wZW4gU2FucycgLCBzYW5zLXNlcmlmO1xuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbn1cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWVudSxcbm5hdixcbnNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbnNlbGVjdCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG50ZXh0YXJlYSB7XG4gIHdpZHRoOiAxMDAlO1xufVxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBmb250OiBpbmhlcml0O1xuICBtYXJnaW46IDA7XG59XG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbn1cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuKixcbio6YmVmb3JlLFxuKjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzczY2ZhNDtcbn1cbmltZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxudWwsXG5vbCB7XG4gIG1hcmdpbi1sZWZ0OiAxLjI1cmVtO1xufVxuLypcbi0tLVxubmFtZTogLmJvcmRlci1ib3hcbmNhdGVnb3J5OiBCb3gvQm9yZGVyXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGJvcmRlclxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYm94IHRvIGNvbnRyb2wgYm9yZGVycyBvbiBhbGwgZm91ciBzaWRlcy5cblxuYGBgamFkZVxuZGl2LmJvcmRlci1ib3guLWxlZnQgU29tZSBkZW1vIGNvbnRlbnRcbmBgYFxuXG5gYGBqYWRlXG5kaXYuYm9yZGVyLWJveC4tYWxsIFNvbWUgZGVtbyBjb250ZW50XG5gYGBcbiovXG4uYm9yZGVyLWJveC4tdG9wIHtcbiAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXItY29sb3I6ICNlMGUwZTA7XG59XG4uYm9yZGVyLWJveC4tcmlnaHQge1xuICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiAjZTBlMGUwO1xufVxuLmJvcmRlci1ib3guLWJvdHRvbSB7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiAjZTBlMGUwO1xufVxuLmJvcmRlci1ib3guLWxlZnQge1xuICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXItY29sb3I6ICNlMGUwZTA7XG59XG4uYm9yZGVyLWJveC4tYWxsIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gIGJvcmRlci1jb2xvcjogI2UwZTBlMDtcbn1cbi5ib3JkZXItYm94Li1yb3VuZCB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cbi8qXG4tLS1cbm5hbWU6IC5jb2xvci1ib3hcbmNhdGVnb3J5OiBCb3gvQ29sb3JcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gYm9yZGVyXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCB0aGUgYmFja2dyb3VuZCBjb2xvci4gSXQgbWFrZXMgYSB2YXJpYW50IGZvcmVhY2ggY29sb3IgZGVmaW5pb24gaW4gdGhlIGZpbGUgYGNvbG9yLWJveC52YXIuc3R5bGBcblxuYGBgamFkZVxuZGl2LmNvbG9yLWJveC4td2hpdGUoc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHhcIilcbmBgYFxuXG5gYGBqYWRlXG5kaXYuY29sb3ItYm94Li1hY3Rpb24oc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHhcIilcbmBgYFxuKi9cbi5jb2xvci1ib3guLWJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLmNvbG9yLWJveC4tYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzFmZTtcbn1cbi5jb2xvci1ib3guLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cbi5jb2xvci1ib3guLWJsYWNrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbn1cbi8qXG4tLS1cbm5hbWU6IC5tYXJnaW4tYm94XG5jYXRlZ29yeTogQm94L01hcmdpblxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGNvbXBvbmVudCB0byBhZGQgbWFyZ2luc1xuXG4jIyBBcHBseWluZyBtYXJnaW5zXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5tYXJnaW4tYm94IC4tYWxsYCBmb3IgYSBtYXJnaW4gb24gdG9wLCByaWdodCwgYm90dG9tIGFuZCBsZWZ0IHdpdGggZGVmYXVsdCBzaXplIG9yXG5gLi10b3BgLCBgLi1yaWdodGAsIGAuLWJvdHRvbWAgYW5kIGAuLWxlZnRgIGZvciBzcGVjaWZpZWQgc2lkZXMuXG5cbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li1hbGxcblx0ZGl2LmFpZ2lzLWRlYnVnIERlZmF1bHQgbWFyZ2luIGFwcGxpZWQgb24gdG9wLCByaWdodCwgYm90dG9tIGFuZCBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li1ib3R0b21cblx0ZGl2LmFpZ2lzLWRlYnVnIERlZmF1bHQgbWFyZ2luIGFwcGxpZWQgb24gYm90dG9tXG5gYGBcblxuXG4jIyBWYXJpYW50c1xuXG5UaGUgdmFyaWFudHMgZm9yIHRoZSBtYXJnaW5zIGFyZSBgLi10b3Ate3NpemV9YCwgYC4tcmlnaHQte3NpemV9YCwgYC4tYm90dG9tLXtzaXplfWAgYW5kIGAubGVmdC17c2l6ZX1gIHRvZ2V0aGVyIHdpdGggc2l6ZXMgc21hbGwsIG1lZGl1bSBvciBsYXJnZS5cbkFsbCBzaXplcyBhcmUgZGVmaW5lZCBpbiB0aGUgdmFyaWFibGUgdGhlbWUuY29tcG9uZW50cy5tYXJnaW4tYm94LiBWYWx1ZXMgYXJlIGBzbWFsbGAsIGBtZWRpdW1gLCBgbGFyZ2VgIGFuZCBgYXV0b2BcblxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWxlZnQtc21hbGxcbiAgICBkaXYuYWlnaXMtZGVidWcgU21hbGwgbWFyZ2luIGFwcGxpZWQgb24gbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tcmlnaHQtc21hbGxcbiAgICBkaXYuYWlnaXMtZGVidWcgU21hbGwgbWFyZ2luIGFwcGxpZWQgb24gcmlnaHRcbmBgYFxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLXRvcC1zbWFsbFxuICAgIGRpdi5haWdpcy1kZWJ1ZyBTbWFsbCBtYXJnaW4gYXBwbGllZCBvbiB0b3BcbmBgYFxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWJvdHRvbS1zbWFsbFxuICAgIGRpdi5haWdpcy1kZWJ1ZyBTbWFsbCBtYXJnaW4gYXBwbGllZCBvbiBib3R0b21cbmBgYFxuXG5UaGVyZSBhcmUgYWxzbyBzaG9ydGN1dHMgZm9yIHZlcnRpY2FsIGAuLXYte3NpemV9YCBhbmQgaG9yaXpvbnRhbCBgLi1oLXtzaXplfWAgdG9nZXRoZXIgd2l0aCBzaXplcyBzbWFsbCwgbWVkaXVtIGFuZCBsYXJnZVxuXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tdi1tZWRpdW1cbiAgICBkaXYuYWlnaXMtZGVidWcgTWVkaXVtIG1hcmdpbiBhcHBsaWVkIG9uIHRvcCBhbmQgYm90dG9tXG5gYGBcbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li1oLW1lZGl1bVxuICAgIGRpdi5haWdpcy1kZWJ1ZyBNZWRpdW0gbWFyZ2luIGFwcGxpZWQgb24gcmlnaHQgYW5kIGxlZnRcbmBgYFxuXG4jIyBWYXJpYW50cyBmb3IgYXV0byBtYXJnaW5zXG5cbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li1hdXRvLi1oKHN0eWxlPVwid2lkdGg6IDIwMHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnIEF1dG8gbWFyZ2luIGFwcGxpZWQgb24gcmlnaHQgYW5kIGxlZnRcbmBgYFxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWF1dG8uLXYoc3R5bGU9XCJoZWlnaHQ6IDQ2cHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcgQXV0byBtYXJnaW4gYXBwbGllZCBvbiB0b3AgYW5kIGJvdHRvbVxuYGBgXG5cbiovXG4ubWFyZ2luLWJveC4tdG9wIHtcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1yaWdodCB7XG4gIG1hcmdpbi1yaWdodDogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1ib3R0b20ge1xuICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLWxlZnQge1xuICBtYXJnaW4tbGVmdDogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1oIHtcbiAgbWFyZ2luLWxlZnQ6IDEuMjVyZW07XG4gIG1hcmdpbi1yaWdodDogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li12IHtcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1hbGwge1xuICBtYXJnaW46IDEuMjVyZW0gMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li10b3Atc21hbGwge1xuICBtYXJnaW4tdG9wOiAwLjVyZW07XG59XG4ubWFyZ2luLWJveC4tcmlnaHQtc21hbGwge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1ib3R0b20tc21hbGwge1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4ubWFyZ2luLWJveC4tbGVmdC1zbWFsbCB7XG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG59XG4ubWFyZ2luLWJveC4taC1zbWFsbCB7XG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xufVxuLm1hcmdpbi1ib3guLXYtc21hbGwge1xuICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1hbGwtc21hbGwge1xuICBtYXJnaW46IDAuNXJlbSAwLjVyZW07XG59XG4ubWFyZ2luLWJveC4tdG9wLXgtbWVkaXVtIHtcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1yaWdodC14LW1lZGl1bSB7XG4gIG1hcmdpbi1yaWdodDogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1ib3R0b20teC1tZWRpdW0ge1xuICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLWxlZnQteC1tZWRpdW0ge1xuICBtYXJnaW4tbGVmdDogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1oLXgtbWVkaXVtIHtcbiAgbWFyZ2luLWxlZnQ6IDEuMjVyZW07XG4gIG1hcmdpbi1yaWdodDogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li12LXgtbWVkaXVtIHtcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1hbGwteC1tZWRpdW0ge1xuICBtYXJnaW46IDEuMjVyZW0gMS4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li10b3AtbWVkaXVtIHtcbiAgbWFyZ2luLXRvcDogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tcmlnaHQtbWVkaXVtIHtcbiAgbWFyZ2luLXJpZ2h0OiAxLjg3NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1ib3R0b20tbWVkaXVtIHtcbiAgbWFyZ2luLWJvdHRvbTogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tbGVmdC1tZWRpdW0ge1xuICBtYXJnaW4tbGVmdDogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4taC1tZWRpdW0ge1xuICBtYXJnaW4tbGVmdDogMS44NzVyZW07XG4gIG1hcmdpbi1yaWdodDogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tdi1tZWRpdW0ge1xuICBtYXJnaW4tdG9wOiAxLjg3NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tYWxsLW1lZGl1bSB7XG4gIG1hcmdpbjogMS44NzVyZW0gMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tdG9wLWxhcmdlIHtcbiAgbWFyZ2luLXRvcDogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1yaWdodC1sYXJnZSB7XG4gIG1hcmdpbi1yaWdodDogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1ib3R0b20tbGFyZ2Uge1xuICBtYXJnaW4tYm90dG9tOiAzLjc1cmVtO1xufVxuLm1hcmdpbi1ib3guLWxlZnQtbGFyZ2Uge1xuICBtYXJnaW4tbGVmdDogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1oLWxhcmdlIHtcbiAgbWFyZ2luLWxlZnQ6IDMuNzVyZW07XG4gIG1hcmdpbi1yaWdodDogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li12LWxhcmdlIHtcbiAgbWFyZ2luLXRvcDogMy43NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1hbGwtbGFyZ2Uge1xuICBtYXJnaW46IDMuNzVyZW0gMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li10b3AtYXV0byB7XG4gIG1hcmdpbi10b3A6IGF1dG87XG59XG4ubWFyZ2luLWJveC4tcmlnaHQtYXV0byB7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbn1cbi5tYXJnaW4tYm94Li1ib3R0b20tYXV0byB7XG4gIG1hcmdpbi1ib3R0b206IGF1dG87XG59XG4ubWFyZ2luLWJveC4tbGVmdC1hdXRvIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG4ubWFyZ2luLWJveC4taC1hdXRvIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbn1cbi5tYXJnaW4tYm94Li12LWF1dG8ge1xuICBtYXJnaW4tdG9wOiBhdXRvO1xuICBtYXJnaW4tYm90dG9tOiBhdXRvO1xufVxuLm1hcmdpbi1ib3guLWFsbC1hdXRvIHtcbiAgbWFyZ2luOiBhdXRvIGF1dG87XG59XG4ubWFyZ2luLWJveC4tYXV0by4tdiB7XG4gIG1hcmdpbi10b3A6IGF1dG87XG4gIG1hcmdpbi1ib3R0b206IGF1dG87XG59XG4ubWFyZ2luLWJveC4tYXV0by4taCB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG4vKlxuLS0tXG5uYW1lOiAucGFkZGluZy1ib3hcbmNhdGVnb3J5OiBCb3gvUGFkZGluZ1xudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHNpbXBsZSBjb21wb25lbnQgdG8gYWRkIHBhZGRpbmdzXG5cbiMjIEFwcGx5aW5nIHBhZGRpbmdzXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5wYWRkaW5nLWJveCAuLWFsbGAgZm9yIGEgcGFkZGluZyBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgd2l0aCBkZWZhdWx0IHNpemUgb3JcbmAuLXRvcGAsIGAuLXJpZ2h0YCwgYC4tYm90dG9tYCBhbmQgYC4tbGVmdGAgZm9yIHNwZWNpZmllZCBzaWRlc1xuXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLWFsbCBEZWZhdXQgcGFkZGluZyBhcHBsaWVkIG9uIHRvcCwgcmlnaHQsIGJvdHRvbSBhbmQgbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLWJvdHRvbSBEZWZhdXQgcGFkZGluZyBhcHBsaWVkIG9uIGJvdHRvbVxuYGBgXG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIHBhZGRpbmdzIGFyZSBgLi10b3Ate3NpemV9YCwgYC4tcmlnaHQte3NpemV9YCwgYC4tYm90dG9tLXtzaXplfWAgYW5kIGAubGVmdC17c2l6ZX1gIHRvZ2V0aGVyIHdpdGggc2l6ZXMgc21hbGwsIG1lZGl1bSBvciBsYXJnZS5cbkFsbCBzaXplcyBhcmUgZGVmaW5lZCBpbiB0aGUgdmFyaWFibGUgdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC4gVmFsdWVzIGFyZSBgc21hbGxgLCBgbWVkaXVtYCwgYW5kIGBsYXJnZWBcblxuYGBgamFkZVxuZGl2LmFpZ2lzLWRlYnVnLnBhZGRpbmctYm94Li1sZWZ0LXNtYWxsIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4tcmlnaHQtc21hbGwoc3R5bGU9XCJ0ZXh0LWFsaWduOnJpZ2h0XCIpIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiByaWdodFxuYGBgXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLXRvcC1zbWFsbCBTbWFsbCBwYWRkaW5nIGFwcGxpZWQgb24gdG9wXG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4tYm90dG9tLXNtYWxsIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiBib3R0b21cbmBgYFxuXG5UaGVyZSBhcmUgYWxzbyBzaG9ydGN1dHMgZm9yIHZlcnRpY2FsIGAuLXYte3NpemV9YCBhbmQgaG9yaXpvbnRhbCBgLi1oLXtzaXplfWAgdG9nZXRoZXIgd2l0aCBzaXplc1xuXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLXYtbWVkaXVtIE1lZGl1bSBwYWRkaW5nIGFwcGxpZWQgb24gdG9wIGFuZCBib3R0b21cbmBgYFxuYGBgamFkZVxuZGl2LmFpZ2lzLWRlYnVnLnBhZGRpbmctYm94Li1oLW1lZGl1bShzdHlsZT1cIndpZHRoOiAzMDBweFwiKSBNZWRpdW0gcGFkZGluZyBhcHBsaWVkIG9uIHJpZ2h0IGFuZCBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4taC1tZWRpdW0uLXRvcC1sYXJnZShzdHlsZT1cIndpZHRoOiA0MDBweFwiKSBNZWRpdW0gcGFkZGluZyBhcHBsaWVkIG9uIHJpZ2h0IGFuZCBsZWZ0LCBsYXJnZSBwYWRkaW5nIGFwcGxpZWQgb24gdG9wXG5gYGBcbiovXG4ucGFkZGluZy1ib3guLXRvcCB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XG59XG4ucGFkZGluZy1ib3guLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xufVxuLnBhZGRpbmctYm94Li1ib3R0b20ge1xuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xufVxuLnBhZGRpbmctYm94Li1sZWZ0IHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG59XG4ucGFkZGluZy1ib3guLWgge1xuICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xufVxuLnBhZGRpbmctYm94Li12IHtcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tYWxsIHtcbiAgcGFkZGluZzogMC41cmVtIDAuNXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tdG9wLXNtYWxsIHtcbiAgcGFkZGluZy10b3A6IDAuMTI1cmVtO1xufVxuLnBhZGRpbmctYm94Li1yaWdodC1zbWFsbCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xufVxuLnBhZGRpbmctYm94Li1ib3R0b20tc21hbGwge1xuICBwYWRkaW5nLWJvdHRvbTogMC4xMjVyZW07XG59XG4ucGFkZGluZy1ib3guLWxlZnQtc21hbGwge1xuICBwYWRkaW5nLWxlZnQ6IDAuMTI1cmVtO1xufVxuLnBhZGRpbmctYm94Li1oLXNtYWxsIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjEyNXJlbTtcbiAgcGFkZGluZy1yaWdodDogMC4xMjVyZW07XG59XG4ucGFkZGluZy1ib3guLXYtc21hbGwge1xuICBwYWRkaW5nLXRvcDogMC4xMjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjEyNXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tYWxsLXNtYWxsIHtcbiAgcGFkZGluZzogMC4xMjVyZW0gMC4xMjVyZW07XG59XG4ucGFkZGluZy1ib3guLXRvcC1tZWRpdW0ge1xuICBwYWRkaW5nLXRvcDogMXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tcmlnaHQtbWVkaXVtIHtcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tYm90dG9tLW1lZGl1bSB7XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xufVxuLnBhZGRpbmctYm94Li1sZWZ0LW1lZGl1bSB7XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbn1cbi5wYWRkaW5nLWJveC4taC1tZWRpdW0ge1xuICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XG59XG4ucGFkZGluZy1ib3guLXYtbWVkaXVtIHtcbiAgcGFkZGluZy10b3A6IDFyZW07XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xufVxuLnBhZGRpbmctYm94Li1hbGwtbWVkaXVtIHtcbiAgcGFkZGluZzogMXJlbSAxcmVtO1xufVxuLnBhZGRpbmctYm94Li10b3AtbGFyZ2Uge1xuICBwYWRkaW5nLXRvcDogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4tcmlnaHQtbGFyZ2Uge1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuLnBhZGRpbmctYm94Li1ib3R0b20tbGFyZ2Uge1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4tbGVmdC1sYXJnZSB7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4taC1sYXJnZSB7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbiAgcGFkZGluZy1yaWdodDogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4tdi1sYXJnZSB7XG4gIHBhZGRpbmctdG9wOiAycmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4tYWxsLWxhcmdlIHtcbiAgcGFkZGluZzogMnJlbSAycmVtO1xufVxuLnBhZGRpbmctYm94Li10b3AteC1sYXJnZSB7XG4gIHBhZGRpbmctdG9wOiA0LjgxMjVyZW07XG59XG4ucGFkZGluZy1ib3guLXJpZ2h0LXgtbGFyZ2Uge1xuICBwYWRkaW5nLXJpZ2h0OiA0LjgxMjVyZW07XG59XG4ucGFkZGluZy1ib3guLWJvdHRvbS14LWxhcmdlIHtcbiAgcGFkZGluZy1ib3R0b206IDQuODEyNXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tbGVmdC14LWxhcmdlIHtcbiAgcGFkZGluZy1sZWZ0OiA0LjgxMjVyZW07XG59XG4ucGFkZGluZy1ib3guLWgteC1sYXJnZSB7XG4gIHBhZGRpbmctbGVmdDogNC44MTI1cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiA0LjgxMjVyZW07XG59XG4ucGFkZGluZy1ib3guLXYteC1sYXJnZSB7XG4gIHBhZGRpbmctdG9wOiA0LjgxMjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiA0LjgxMjVyZW07XG59XG4ucGFkZGluZy1ib3guLWFsbC14LWxhcmdlIHtcbiAgcGFkZGluZzogNC44MTI1cmVtIDQuODEyNXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tZ3V0dGVyIHtcbiAgcGFkZGluZzogMC45Mzc1cmVtIDAuOTM3NXJlbTtcbn1cbi8qXG4tLS1cbm5hbWU6IC5zaGFkb3ctYm94XG5jYXRlZ29yeTogQm94L1NoYWRvd1xudGFnOlxuIC0gY29tcG9uZW50XG4gLSBzaGFkb3dcbiAtIGhlbHBlclxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYm94IHRvIGNvbnRyb2wgYm94LXNoYWRvd3Mgd2l0aCBkaWZmZXJlbnQgdmFyaWFudHNcblxuIyMgRGVmYXVsdCB2YXJpYW50c1xuYGBgamFkZVxuZGl2LnNoYWRvdy1ib3ggRGVtbyBjb250ZW50XG5kaXYuc2hhZG93LWJveC4taW5zZXQgRGVtbyBjb250ZW50XG5kaXYuc2hhZG93LWJveC4temVybyBVc2UgemVybyBzaGFkb3cgaW4gYW5pbWF0aW9uc1xuYGBgXG4qL1xuLnNoYWRvdy1ib3gge1xuICBib3gtc2hhZG93OiAwcHggMXB4IDZweCAwcHggcmdiYSgwLDAsMCwwLjE3KTtcbn1cbi5zaGFkb3ctYm94Li1pbnNldCB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDBweCAxcHggNnB4IDBweCByZ2JhKDAsMCwwLDAuMTcpO1xufVxuLnNoYWRvdy1ib3guLXplcm8ge1xuICBib3gtc2hhZG93OiBpbnNldCAwcHggMHB4IDBweCAwcHggcmdiYSgwLDAsMCwwLjE3KTtcbn1cbi8qXG4tLS1cbm5hbWU6IC50cmFuc2Zvcm0tYm94XG5jYXRlZ29yeTogQm94L1RyYW5zZm9ybVxudGFnOlxuIC0gY29tcG9uZW50XG4gLSB0cmFuZm9ybVxuIC0gaGVscGVyXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCBjb21tb24gdHJhbnNmb3JtYXRpb25zXG5cbiMjIFJvdGF0ZVxuYGBgamFkZVxuZGl2LnRyYW5zZm9ybS1ib3guLXJvdDkwIFNvbWUgZGVtbyBjb250ZW50XG5kaXYudHJhbnNmb3JtLWJveC4tcm90MTgwIFNvbWUgZGVtbyBjb250ZW50XG5kaXYudHJhbnNmb3JtLWJveC4tcm90MjcwIFNvbWUgZGVtbyBjb250ZW50XG5gYGBcblxuIyMgRmxpcFxuYGBgamFkZVxuZGl2LnRyYW5zZm9ybS1ib3guLWZsaXBYIFNvbWUgZGVtbyBjb250ZW50XG5kaXYudHJhbnNmb3JtLWJveC4tZmxpcFkgU29tZSBkZW1vIGNvbnRlbnRcbmBgYFxuKi9cbi50cmFuc2Zvcm0tYm94Li1yb3Q5MCB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbn1cbi50cmFuc2Zvcm0tYm94Li1yb3QxODAge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuLnRyYW5zZm9ybS1ib3guLXJvdDI3MCB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XG59XG4udHJhbnNmb3JtLWJveC4tZmxpcFgge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4udHJhbnNmb3JtLWJveC4tZmxpcFkge1xuICB0cmFuc2Zvcm06IHNjYWxlWSgtMSk7XG59XG4vKlxuLS0tXG5uYW1lOiAuYnV0dG9uLXN0eWxlXG5jYXRlZ29yeTogQ29tcG9uZW50cy9CdXR0b25cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gYnV0dG9uXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBidXR0b24gY29tcG9uZW50IGFzIGEgYmFzZSBmb3IgZGlmZmVyZW50IGJ1dHRvbiB2YXJpYW50cyBkZWZpbmVkIGluIGl0cyBjb25maWd1cmF0aW9uLlxuXG5gYGBqYWRlXG5idXR0b24uYnV0dG9uLXN0eWxlLi1tYWluIEFjdGlvblxuYGBgXG4qL1xuLmJ1dHRvbi1zdHlsZSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmJ1dHRvbi1zdHlsZS4tbWFpbiB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzNjZmE0O1xuICBwYWRkaW5nOiAwLjEyNXJlbSAwLjVyZW07XG59XG4uYnV0dG9uLXN0eWxlLi1tYWluLW1pbmkge1xuICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMTI1cmVtO1xuICBoZWlnaHQ6IDEuODc1cmVtO1xuICBtaW4td2lkdGg6IGluaGVyaXQ7XG4gIG1hcmdpbi1yaWdodDogMC42MjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgYm9yZGVyLWNvbG9yOiAjNzNjZmE0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzNjZmE0O1xuICBjb2xvcjogI2ZmZjtcbn1cbi5idXR0b24tc3R5bGUuLW1haW4tbWluaTpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogIzczY2ZhNDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxZDRhZDtcbn1cbi5idXR0b24tc3R5bGUuLW1pbmkge1xuICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMTI1cmVtO1xuICBoZWlnaHQ6IDEuODc1cmVtO1xuICBtaW4td2lkdGg6IGluaGVyaXQ7XG4gIG1hcmdpbi1yaWdodDogMC42MjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgYm9yZGVyLWNvbG9yOiAjMmQyZDJkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmJ1dHRvbi1zdHlsZS4tbWluaTpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogIzczY2ZhNDtcbn1cbi5idXR0b24tc3R5bGUuLWFjdGl2ZS1taW5pIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3M2NmYTQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM3M2NmYTQ7XG59XG4uYnV0dG9uLXN0eWxlLi1hY3RpdmUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzczY2ZhNDtcbiAgcGFkZGluZzogMC4xMjVyZW0gMC41cmVtO1xufVxuLmJ1dHRvbi1zdHlsZS4taG92ZXIge1xuICB0cmFuc2l0aW9uOiBhbGwgMC4xcztcbn1cbi5idXR0b24tc3R5bGUuLWhvdmVyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzczY2ZhNDtcbn1cbi8qXG4tLS1cbm5hbWU6IC5kcm9wLWRvd24tbWVudVxuY2F0ZWdvcnk6IERyb3BEb3duXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGRyb3Bkb3duXG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBzdHlsZXMgYSBtZW51IGluc2lkZSBhIC5kcm9wLWRvd24uXG5cbmBgYGphZGVcbmRpdi5kcm9wLWRvd24tbWVudVxuXHRkaXYuaXRlbSBNZW51IDFcblx0ZGl2Lml0ZW0gTWVudSAyXG5cdGRpdi5pdGVtIE1lbnUgM1xuYGBgXG5cblVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgLmRyb3AtZG93biBpdHNlbGZcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLW9wZW5cblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQuZHJvcC1kb3duLW1lbnVcblx0XHRkaXYuaXRlbSBNZW51IDFcblx0XHRkaXYuaXRlbSBNZW51IDJcblx0XHRkaXYuaXRlbSBNZW51IDNcbmBgYFxuXG4qL1xuLmRyb3AtZG93bi1tZW51IHtcbiAgYm94LXNoYWRvdzogMHB4IDFweCA2cHggMHB4IHJnYmEoMCwwLDAsMC4xNyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XG4gIGJvcmRlci10b3A6IG5vbmU7XG59XG4uZHJvcC1kb3duLW1lbnUgPiAuaXRlbSArIC5pdGVtIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMGUwZTA7XG59XG4vKlxuLS0tXG5uYW1lOiAuZHJvcC1kb3duXG5jYXRlZ29yeTogRHJvcERvd25cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gZHJvcGRvd25cbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGRyb3Bkb3duIGhhcyB0aGUgc2ltcGxlIG1lY2hhbmlzbSB0byBvcGVuIGFuZCBjbG9zZSBhIGRyb3Bkb3duIGNvbnRlbnQuXG5cblRyaWdnZXIgd2l0aCBtb3VzZW92ZXIgYnkgYWRkaW5nIGAuLWhvdmVyYCB2YXJpYW50XG5cblRyaWdnZXIgd2l0aCBqcyBieSBhZGRpbmcgYC4tb3BlbmAgdmFyaWFudCBcblxuQ2xvc2VkIERyb3Bkb3duXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuIyMgVmFyaWFudHNcblxuVmFyaWFudHMgYC4tdG9wYCwgYC4tYm90dG9tYCwgYC4tbGVmdGAgYW5kIGAuLXJpZ2h0YCBjYW4gYmUgY29tYmluZWRcblxuQm90dG9tIGxlZnRcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi1ib3R0b20uLWxlZnRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cbkJvdHRvbSByaWdodFxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4taG92ZXIuLWJvdHRvbS4tcmlnaHRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cblRvcCByaWdodFxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4taG92ZXIuLXRvcC4tcmlnaHRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cblRvcCBsZWZ0XG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tdG9wLi1sZWZ0XG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuIyMgQXNpZGVcblxuVGhlcmUgaXMgYW4gYC4tYXNpZGVgIHZhcmlhbnQgdG8gb3BlbiBjb250ZW50IGFzaWRlXG5cblRvcCBsZWZ0IGFzaWRlXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tdG9wLi1sZWZ0Li1hc2lkZShzdHlsZT1cImxlZnQ6MjAwcHg7d2lkdGg6NTAlXCIpXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuXG5Ub3AgcmlnaHQgYXNpZGVcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi10b3AuLXJpZ2h0Li1hc2lkZShzdHlsZT1cIndpZHRoOjUwJVwiKVxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudCBEcm9wZG93biBjb250ZW50XG5gYGBcbiMjIFJlbGF0aXZlIGNvbnRlbnRcblxuVGhlcmUgaXMgYSB2YXJpYW50IGZvciBvcGVuaW5nIHRoZSBjb250ZW50IHJlbGF0aXZlIGluc3RlYWQgb2YgYWJzb2x1dGVcblxuUmVsYXRpdmVcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi1yZWxhdGl2ZShzdHlsZT1cIndpZHRoOjUwJVwiKVxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudCBEcm9wZG93biBjb250ZW50XG5gYGBcblxuSlMgVHJpZ2dlclxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4tb3Blbi4tYm90dG9tLi1sZWZ0XG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuXG4jIyBEbyBub3Qgd3JhcCBjb250ZW50XG5cbkEgdmFyaWFudCBwcmV2ZW50aW5nIHRoZSBjb250ZW50IGZyb20gd3JhcHBpbmdcblxuXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tbm93cmFwXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnQgd2l0aCBzb21lIHdoaXRlc3BhY2VzXG5gYGBcblxuKi9cbi5kcm9wLWRvd24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmRyb3AtZG93bi4tb3BlbiA+IC5jb250ZW50IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uZHJvcC1kb3duLi1ob3Zlcjpob3ZlciA+IC5jb250ZW50IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uZHJvcC1kb3duLi10b3AgPiAuY29udGVudCB7XG4gIGJvdHRvbTogMTAwJTtcbn1cbi5kcm9wLWRvd24uLWJvdHRvbSA+IC5jb250ZW50IHtcbiAgdG9wOiAxMDAlO1xufVxuLmRyb3AtZG93bi4tbGVmdCA+IC5jb250ZW50IHtcbiAgbGVmdDogMDtcbn1cbi5kcm9wLWRvd24uLXRvcC4tbGVmdC4tYXNpZGUgPiAuY29udGVudCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAlLCAxMDAlKTtcbn1cbi5kcm9wLWRvd24uLXJpZ2h0ID4gLmNvbnRlbnQge1xuICByaWdodDogMDtcbn1cbi5kcm9wLWRvd24uLXRvcC4tcmlnaHQuLWFzaWRlID4gLmNvbnRlbnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAxMDAlKTtcbn1cbi5kcm9wLWRvd24uLXJlbGF0aXZlID4gLmNvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZHJvcC1kb3duLi1ub3dyYXAgPiAuY29udGVudCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uZHJvcC1kb3duID4gLnRvZ2dsZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kcm9wLWRvd24gPiAuY29udGVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAwMDtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5zdmctaWNvbiB7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xufVxuLnN2Zy1pY29uLi1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4uc3ZnLWljb24uLW1lZGl1bSB7XG4gIGhlaWdodDogMS4yNXJlbTtcbiAgd2lkdGg6IDEuMjVyZW07XG59XG4uc3ZnLWljb24uLXNtYWxsIHtcbiAgaGVpZ2h0OiAxcmVtO1xufVxuLnN2Zy1pY29uLi12LWNlbnRlcmVkIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5zdmctaWNvbi4tdi1zdWIge1xuICB2ZXJ0aWNhbC1hbGlnbjogc3ViO1xufVxuLnN2Zy1pY29uLi1zY2FsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4vKlxuLS0tXG5uYW1lOiAuYWJzLWxheW91dFxuY2F0ZWdvcnk6IExheW91dC9BYnNvbHV0ZVxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHNpbXBsZSBjb21wb25lbnQgdG8gcG9zaXRpb24gYW4gZWxlbWVudCBhYnNvbHV0ZS4gRGVmYXVsdCBpcyB0b3AsIGxlZnRcblxuIyMgVmFyaWFudHNcblxuVGhlIHZhcmlhbnRzIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb25pbmcgYXJlIGAuLXRvcGAsIGAuLXZjZW50ZXJgIGFuZCBgLi1ib3R0b21gLlxuVGhlIHZhcmlhbnRzIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbmluZyBhcmUgYC4tcmlnaHRgLCBgLi1oY2VudGVyYCBhbmQgYC4tbGVmdGAuXG5BZGRpdGluYWxseSB0aGUgYC1jZW50ZXJgIHZhcmlhbnQgd2lsbCBjZW50ZXIgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwuXG5WYXJpYW50cyB0byBzdHJldGNoIGFuIGl0ZW0gdG8gaXRzIGZ1bGwgd2lkdGgvaGVpZ2h0IGNhbiBiZSBkaW5lIHdpdGggYC5pdGVtLi1zdHJldGNoYC5cbkluIHNvbWUgc2l0dWF0aW9ucyB0aGUgYWJzLWxheW91dCBpdHNlbGYgbmVlZHMgdG8gc3RyZXRjaCBzbyB1c2UgdGhlIHN0cmV0Y2ggdmFyaWFudCBvbiB0aGUgY29tcG9uZW50LiBgLmFicy1sYXlvdXQuLXN0cmV0Y2hgIFxuXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tY2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AuLWhjZW50ZXJcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXRvcC4tcmlnaHRcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXJpZ2h0Li12Y2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1yaWdodC4tYm90dG9tXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1ib3R0b20uLWhjZW50ZXJcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWJvdHRvbS4tbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tbGVmdC4tdmNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tbGVmdC4tdG9wXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1zdHJldGNoXG5gYGBcblxuIyMgWi1JbmRleFxuXG5FdmVyeSBpdGVtIGNhbiBjb250cm9sbCBpdHMgeiBpbmRleCB3aXRoIHRoZSBgLi16e2l9YHZhcmlhbnRzLlxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXRvcC4tbGVmdC4tejFcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wLi1sZWZ0Li16MlxuYGBgXG5cbiovXG4uYWJzLWxheW91dCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5hYnMtbGF5b3V0Li1zdHJldGNoIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi10b3Age1xuICB0b3A6IDA7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi1yaWdodCB7XG4gIHJpZ2h0OiAwO1xufVxuLmFicy1sYXlvdXQgPiAuaXRlbS4tYm90dG9tIHtcbiAgYm90dG9tOiAwO1xufVxuLmFicy1sYXlvdXQgPiAuaXRlbS4tbGVmdCB7XG4gIGxlZnQ6IDA7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi12Y2VudGVyIHtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLWhjZW50ZXIge1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLWNlbnRlciB7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuLmFicy1sYXlvdXQgPiAuaXRlbS4tc3RyZXRjaCB7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXoxIHtcbiAgei1pbmRleDogMTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXoyIHtcbiAgei1pbmRleDogMjtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXozIHtcbiAgei1pbmRleDogMztcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo0IHtcbiAgei1pbmRleDogNDtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo1IHtcbiAgei1pbmRleDogNTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo2IHtcbiAgei1pbmRleDogNjtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo3IHtcbiAgei1pbmRleDogNztcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo4IHtcbiAgei1pbmRleDogODtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXo5IHtcbiAgei1pbmRleDogOTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXoxMCB7XG4gIHotaW5kZXg6IDEwO1xufVxuLypcbi0tLVxubmFtZTogLmZpeGVkLWxheW91dFxuY2F0ZWdvcnk6IExheW91dC9GaXhlZFxudGFnOlxuIC0gY29udGFpbmVyXG4tLS1cblxuRml4ZWQgY29udGFpbmVyXG5Zb3UgY2FuIHBvc2l0aW9uIHRoZSBjb250YWluZXIgd2l0aCB0aGUgZGlmZmVyZW50IHZhcmlhbnRzIGAuLXRvcGAsIGAuLWJvdHRvbWAsIGAuLWxlZnRgLCBgLi1yaWdodGAuXG5UbyBzcGFuIGZ1bGwgd2lkdGggLyBoZWlnaHQgdXNlIGAuLWxlZnRgICYgYC4tcmlnaHRgIC8gYC4tdG9wYCAmIGAuLWJvdHRvbWBcblxuRml4ZWQgdG9wIGFuZCBmdWxsIHdpZHRoXG5cbmBgYGphZGVcbmRpdi5maXhlZC1sYXlvdXQuLXRvcC4tbGVmdC4tcmlnaHQuYWlnaXMtZGVidWcgdG9wIGxlZnQgZnVsbHdpZHRoXG4gICAgXG5gYGBcblxuRml4ZWQgcmlnaHQgYW5kIGZ1bGwgaGVpZ2h0XG5cbmBgYGphZGVcbmRpdi5maXhlZC1sYXlvdXQuLXRvcC4tYm90dG9tLi1yaWdodC5haWdpcy1kZWJ1ZyB0b3AgcmlnaHQgZnVsbGhlaWdodFxuICAgIFxuYGBgXG5cbiovXG4uZml4ZWQtbGF5b3V0IHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuLmZpeGVkLWxheW91dC4tdG9wIHtcbiAgdG9wOiAwO1xufVxuLmZpeGVkLWxheW91dC4tYm90dG9tIHtcbiAgYm90dG9tOiAwO1xufVxuLmZpeGVkLWxheW91dC4tbGVmdCB7XG4gIGxlZnQ6IDA7XG59XG4uZml4ZWQtbGF5b3V0Li1yaWdodCB7XG4gIHJpZ2h0OiAwO1xufVxuLypcbi0tLVxubmFtZTogLmZpeGVkLXBhZ2UtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L0ZpeGVkIFBhZ2VcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gcGFnZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgcGFnZSBsYXlvdXQgd2l0aCBhIGZpeGVkIGhlYWRlciBhbmQgb3B0aW9uYWwgc2lkZWJhcnMuXG5XaXRoIHRoZSBgLW1hcmdpbi17dG9wfGxlZnR8cmlnaHR9YCwgYC1tYXJnaW4te3RvcHxsZWZ0fHJpZ2h0fS1zbWFsbGAgdmFyaWFudHMgeW91IGNhbiBjb250cm9sIHRoZSBzcGFjaW5nLlxuSWYgdGhlIGNvbnRlbnQgZm9yIGV4YW1wbGUgbmVlZHMgYSBzcGFjaW5nIHRvd2FyZHMgdGhlIGhlYWRlciB1c2U6IGAuY29udGVudC4tbWFyZ2luLXRvcGAuXG5JZiB0aGUgc2lkZWJhciBzaG93IGJlIGJlbG93IHRoZSBoZWFkZXIgdXNlOiBgLnNpZGViYXIuLWxlZnQuLW1hcmdpbi10b3BgLlxuXG5cblRoZXJlIGFyZSB2YXJpYW50cyB0byByZXNpemUgdGhlIGhlYWRlciBhbmQgc2lkZWJhcnMgdG8gYSBzbWFsbGVyIHdpZHRoL2hlaWdodDogYC5oZWFkZXIuLXNtYWxsYCwgYC5zaWRlYmFyLi1zbWFsbGAuXG5JZiB5b3UgbmVlZCBhIHNwYWNpbmcgb24geW91ciBjb250ZW50IG9yIHNpZGViYXIgeW91IG5lZWQgdG8gYWRqdXN0IHRoYXQgbWFudWFsbHkgbGlrZSB0aGlzOlxuYGBgXG5kaXYuZml4ZWQtcGFnZS1sYXlvdXRcblx0ZGl2LmhlYWRlci4tc21hbGxcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlXCIpICBIZWFkZXJcblx0ZGl2LmNvbnRlbnQuLW1hcmdpbi10b3Atc21hbGwgQ29udGVudFxuXHRkaXYuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcC1zbWFsbC4tc21hbGxcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJoZWlnaHQ6MTAwJVwiKSAgTGVmdCBTaWRlYmFyXG5gYGBcblxuIyMgSGVhZGVyIHdpdGggc2lkZWJhcnNcblxuYGBgamFkZVxuZGl2LmZpeGVkLXBhZ2UtbGF5b3V0XG5cdGRpdi5oZWFkZXJcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlXCIpICBIZWFkZXJcblx0ZGl2LmNvbnRlbnQuLW1hcmdpbi10b3AgQ29udGVudFxuXHRkaXYuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpICBMZWZ0IFNpZGViYXJcblx0ZGl2LnNpZGViYXIuLXJpZ2h0XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgIFJpZ2h0IFNpZGViYXJcbmBgYFxuKi9cbi5maXhlZC1wYWdlLWxheW91dCA+IC5oZWFkZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGhlaWdodDogNC4zNzVyZW07XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICB6LWluZGV4OiAxMDAwO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmhlYWRlci4tc21hbGwge1xuICBoZWlnaHQ6IDEuODc1cmVtO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmhlYWRlci4taGlkZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAxNC41NjI1cmVtO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgei1pbmRleDogMTAwNTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1tYXJnaW4tdG9wIHtcbiAgdG9wOiA0LjM3NXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1tYXJnaW4tdG9wLXNtYWxsIHtcbiAgdG9wOiAxLjg3NXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1zbWFsbCB7XG4gIHdpZHRoOiAzLjEyNXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1sZWZ0IHtcbiAgbGVmdDogMDtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1sZWZ0Li1oaWRlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1yaWdodCB7XG4gIHJpZ2h0OiAwO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLnNpZGViYXIuLXJpZ2h0Li1oaWRlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmNvbnRlbnQge1xuICB0cmFuc2l0aW9uOiBtYXJnaW4gMC4ycztcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50Li1tYXJnaW4tbGVmdCB7XG4gIG1hcmdpbi1sZWZ0OiAxNC41NjI1cmVtO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmNvbnRlbnQuLW1hcmdpbi1sZWZ0LXNtYWxsIHtcbiAgbWFyZ2luLWxlZnQ6IDMuMTI1cmVtO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmNvbnRlbnQuLW1hcmdpbi1yaWdodCB7XG4gIG1hcmdpbi1yaWdodDogMTQuNTYyNXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50Li1tYXJnaW4tcmlnaHQtc21hbGwge1xuICBtYXJnaW4tcmlnaHQ6IDMuMTI1cmVtO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmNvbnRlbnQuLW1hcmdpbi10b3Age1xuICBtYXJnaW4tdG9wOiA0LjM3NXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50Li1tYXJnaW4tdG9wLXNtYWxsIHtcbiAgbWFyZ2luLXRvcDogMS44NzVyZW07XG59XG4vKlxuLS0tXG5uYW1lOiAuZmxleC1sYXlvdXRcbmNhdGVnb3J5OiBMYXlvdXQvRmxleFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbiAtIGZsZXhib3hcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGxheW91dCBzeXN0ZW0gYmFzZWQgb24gZmxleGJveCB0byBhbGlnbiBhbmQgZGlzdHJpYnV0ZSBpdGVtcyBob3Jpem9udGFsbHkgYW5kIHZlcnRpY2FsbHkuXG5cblxuIyBBbGlnbm1lbnQgb2YgaXRlbXNcblxuVGhlIGAtY2VudGVyYCBzaG9ydGN1dCB3aWxsIGNlbnRlciBhbGwgaXRlbXMgaG9yaXpvbnRhbCAmIHZlcnRpY2FsXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDEwMHB4XCIpLmZsZXgtbGF5b3V0Li1jZW50ZXJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuXG5gLWJhc2VsaW5lYCB3aWxsIGFsaWduIGl0ZW1zIGJhc2VkIG9uIHRoZWlyIGJhc2VsaW5lLiBXb3JrcyBnb29kIGlmIGFsbCB0aGUgaXRlbXMgY29udGFpbiB0ZXh0LiBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4tYmFzZWxpbmVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW1cblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuYGBgXG5cbmAtaXRlbXMtdG9wYCAmIGAtaXRlbXMtYm90dG9tYCB3aWxsIGFsaWduIHRoZSBpdGVtcyBlaXRoZXIgb24gdG9wIG9yIGJvdHRvbVxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1pdGVtcy10b3Bcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJwYWRkaW5nLXRvcDogNTBweDtwYWRkaW5nLWJvdHRvbTogMzBweDtcIikgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1pdGVtcy1ib3R0b21cblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJwYWRkaW5nLXRvcDogNTBweDtwYWRkaW5nLWJvdHRvbTogMzBweDtcIikgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuXG5gLWl0ZW1zLWNlbnRlcmAgd2lsbCBjZW50ZXIgdGhlIGl0ZW1zIHZlcnRpY2FsbHlcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taXRlbXMtY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcblxuIyBBbGlnbm1lbnQgb2YgaW5kaXZpZHVhbCBpdGVtc1xuXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDEwMHB4XCIpLmZsZXgtbGF5b3V0XG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AgdG9wXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1jZW50ZXIgY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1ib3R0b20gYm90dG9tXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1zdHJldGNoIHN0cmV0Y2hcbmBgYFxuXG4jIFJvdyBtb2RlXG5cbklmIHlvdSBsaWtlIGEgY29udGFpbmVyIHRoYXQgc3BhbnMgdGhlIGZ1bGwgd2lkdGggd2l0aCBpdGVtIHRoYXQgcmVzaXplIHRoZW1zZWxmIHlvdSBjYW4gdXNlIHRoZSBgLXJvd2AgdmFyaWFudC5cblxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1yb3dcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDNcbmBgYFxuXG5JZiB5b3UgbGlrZSB0byBmaXggYW4gaXRlbSBiYXNlZCBvbiBpdHMgY29udGVudCB3aWR0aCB1c2UgdGhlIGAtY29udGVudGAgdmFyaWFudC5cblRoaXMgaXMgYSBzaG9ydGN1dCBmb3IgYC1uby1ncm93IC1uby1zaHJpbmtgLiBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4tcm93XG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1jb250ZW50XG5cdFx0aW1nKHNyYz1cImh0dHA6Ly92aWEucGxhY2Vob2xkZXIuY29tLzM1MHg4MFwiKVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAzXG5gYGBcblxuWW91IGNhbiBjb250cm9sIHRoZSBzaXppbmcgb2YgdGhlIGl0ZW1zIHdpdGggYC1ncm93YCwgYC1zaHJpbmtgLCBgLW5vLWdyb3dgLCBgLW5vLXNocmlua2AuXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXJvd1xuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tbm8tc2hyaW5rXG5cdFx0aW1nKHNyYz1cImh0dHA6Ly92aWEucGxhY2Vob2xkZXIuY29tLzM1MHg4MFwiKVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tbm8tZ3JvdyBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAzXG5gYGBcblxuXG4jIERpc3RyaWJ1dGlvbiBvZiBpdGVtc1xuXG5Vc2UgYC1bdi9oXS1zcGFjZS1hcm91bmRgICYgYC1bdi9oXS1zcGFjZS1iZXR3ZWVuYCB0byBkaXN0cmlidXRlIHRoZSBpdGVtcyBpbiB0aGUgZmxleCBjb250YWluZXIuXG5cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taC1zcGFjZS1hcm91bmRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1oLXNwYWNlLWJldHdlZW5cblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAyMDBweFwiKS5mbGV4LWxheW91dC4tdi1zcGFjZS1hcm91bmQuLXdyYXBcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAyMDBweFwiKS5mbGV4LWxheW91dC4tdi1zcGFjZS1iZXR3ZWVuLi13cmFwXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcblxuIyBBbGlnbm1lbnQgb2YgbXVsdGlsaW5lIGl0ZW1zIHdpdGggd3JhcFxuXG5JZiB5b3UgaGF2ZSBhbG90IG9uIGl0ZW1zIHRoYXQgd3JhcCB5b3UgY2FuIGFsaWduIHRoZSBtdWx0aWxpbmVzIHdpdGggdGhlIGZvbGxvd2luZyB2YXJpYW50czpcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4td3JhcC4taC1jZW50ZXJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li13cmFwLi1sZWZ0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4td3JhcC4tcmlnaHRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAyMDBweFwiKS5mbGV4LWxheW91dC4td3JhcC4tdi1jZW50ZXJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAyMDBweFwiKS5mbGV4LWxheW91dC4td3JhcC4tdG9wXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXdyYXAuLWJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5cblxuXG5cbiovXG4uZmxleC1sYXlvdXQge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLmZsZXgtbGF5b3V0Li1pbmxpbmUge1xuICBkaXNwbGF5OiBmbGV4LWlubGluZTtcbn1cbi5mbGV4LWxheW91dC4td3JhcCB7XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cbi5mbGV4LWxheW91dC4tcm93IHtcbiAgZmxleC13cmFwOiBub3dyYXA7XG59XG4uZmxleC1sYXlvdXQuLXJvdyA+IC5pdGVtIHtcbiAgZmxleDogMSAxIGF1dG87XG59XG4uZmxleC1sYXlvdXQuLWNvbHVtbiB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4uZmxleC1sYXlvdXQuLWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG59XG4uZmxleC1sYXlvdXQuLWJhc2VsaW5lIHtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xufVxuLmZsZXgtbGF5b3V0Li1sZWZ0IHtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuLmZsZXgtbGF5b3V0Li1yaWdodCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG4uZmxleC1sYXlvdXQuLXRvcCB7XG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG4uZmxleC1sYXlvdXQuLWJvdHRvbSB7XG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuLmZsZXgtbGF5b3V0Li12LWNlbnRlciB7XG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5mbGV4LWxheW91dC4tdi1zcGFjZS1iZXR3ZWVuIHtcbiAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5mbGV4LWxheW91dC4tdi1zcGFjZS1hcm91bmQge1xuICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG4uZmxleC1sYXlvdXQuLWgtY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uZmxleC1sYXlvdXQuLWgtc3BhY2UtYmV0d2VlbiB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5mbGV4LWxheW91dC4taC1zcGFjZS1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cbi5mbGV4LWxheW91dC4taXRlbXMtdG9wIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG4uZmxleC1sYXlvdXQuLWl0ZW1zLWJvdHRvbSB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cbi5mbGV4LWxheW91dC4taXRlbXMtY2VudGVyIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5mbGV4LWxheW91dC4taXRlbXMtc3RyZXRjaCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0cmV0Y2g7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tc3RyZXRjaCB7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tdG9wIHtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbn1cbi5mbGV4LWxheW91dCA+IC5pdGVtLi1jZW50ZXIge1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tYm90dG9tIHtcbiAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tY29udGVudCB7XG4gIGZsZXg6IG5vbmU7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tZ3JvdyB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5mbGV4LWxheW91dCA+IC5pdGVtLi1zaHJpbmsge1xuICBmbGV4LXNocmluazogMTtcbn1cbi5mbGV4LWxheW91dCA+IC5pdGVtLi1uby1ncm93IHtcbiAgZmxleC1ncm93OiAwO1xufVxuLmZsZXgtbGF5b3V0ID4gLml0ZW0uLW5vLXNocmluayB7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuLypcbi0tLVxubmFtZTogLmdyaWQtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L0dyaWRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSBncmlkXG4gLSByZXNwb25zaXZlXG4gLSBmbGV4Ym94XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBncmlkIGxheW91dCBzeXN0ZW0gYmFzZWQgb24gZmxleGJveC4gSXQgcHJvdmlkZXMgc2l6aW5nIHZhcmlhbnRzIHRvIHNpemUgb24gZGlmZmVyZW50IHBlcmNlbnRhZ2VzLlxuXG5cbiMjIFBlcmNlbnRhZ2UgYmFzZWQgc2l6aW5nXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5pdGVtIC13MWAsIGAuaXRlbSAtdzEtMmAsIGAuaXRlbSAtdzEtM2AsIGAuaXRlbSAtdzEtNGAgZm9yIGEgcGVyY2VudGFnZSBiYXNlZCBzaWRlLWJ5LXNpZGUgcmVuZGVyaW5nLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXRcblx0ZGl2Lml0ZW0uLXcxXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxXG5cdGRpdi5pdGVtLi13MS0yIFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS0yXG5cdGRpdi5pdGVtLi13MS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTJcblx0ZGl2Lml0ZW0uLXcxLTNcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtM1xuXHRkaXYuaXRlbS4tdzItM1xuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13Mi0zXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMlxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS00XG5gYGBcblxuIyMgTGF5b3V0cyBvbiBkaWZmZXJlbnQgZGV2aWNlc1xuXG5UaGUgYnJlYWtwb2ludHMgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgYXJlIHNwZWNpZmllZCBpbiB0aGUgZ2xvYmFsIHNldHRpbmdzIGB0aGVtZS5zZXR0aW5ncy5icmVha3BvaW50c2AgYW5kIGNhbiBiZSBvdmVyd3JpdHRlbiBpbiBgdGhlbWUuY29tcG9uZW50cy5ncmlkLWxheW91dC5icmVha3BvaW50c2AuXG5UaGUgZGVmYXVsdCBzZXR0aW5ncyBkZWZpbmUgYnJlYWtwb2ludHMgd2l0aCBsYWJlbHM6IGAuLXNtYWxsLVgtWGAsIGAuLW1lZGl1bS1YLVhgLCBgLi1sYXJnZS1YLVhgLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXRcblx0ZGl2Lml0ZW0uLXcxLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MSAtc21hbGwtMS0zIC1tZWRpdW0tMS0yIC1sYXJnZS0xLTRcblx0ZGl2Lml0ZW0uLXcxLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MSAtc21hbGwtMS0zIC1tZWRpdW0tMS0yIC1sYXJnZS0xLTRcblx0ZGl2Lml0ZW0uLXcxLTIuLXNtYWxsLTEtMy4tbWVkaXVtLTEtMi4tbGFyZ2UtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTIgLXNtYWxsLTEtMyAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5cdGRpdi5pdGVtLi13MS0yLi1zbWFsbC0xLi1tZWRpdW0tMS0yLi1sYXJnZS0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMiAtc21hbGwtMSAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5gYGBcblxuXG4jIyBHdXR0ZXJcblxuSWYgeW91IG5lZWQgYSBzcGFjaW5nIGJldHdlZW4gdGhlIGNvbHVtbnMgYWRkIHRoZSBgLWd1dHRlcmAgdmFyaWFudC5cblRoZSBzaXplIG9mIHRoZSBndXR0ZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBgZ3JpZC1ndXR0ZXJgdmFyaWFibGUuXG5cbmBgYGphZGVcbmRpdi5ncmlkLWxheW91dC4tZ3V0dGVyXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbCAtdzEtNFxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wgLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sIC13MS0yXG5gYGBcblxuXG4jIyBSZXZlcnNlIG9yZGVyXG5cblRvIHJldmVyc2UgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBjb2x1bW5zIGFyZSBkaXNwbGF5ZWQsIHlvdSBjYW4gYWRkIHRoZSBtb2RpZmllciBjbGFzcyBgLi1yZXZlcnNlYCB0byB5b3VyIHRhYmxlLWdyaWQuXG5UaGUgY29sdW1ucyB3aWxsIGJlIGluIERPTSBvcmRlciB3aGVuIHZpZXdwb3J0IHN3aXRjaGVzIHRvIHNtYWxsIGxheW91dC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0Li1yZXZlcnNlXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEZpcnN0IGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgU2Vjb25kIGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgVGhpcmQgY29sdW1uIGluIERPTVxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBGb3VydGggY29sdW1uIGluIERPTVxuYGBgXG5cbiMjIFZlcnRpY2FsIGNlbnRlcmluZ1xuXG5Zb3UgY2FuIHZlcnRpY2FsIGNlbnRlciB3aXRoIHRoZSBoZWxwIG9mIHRoZSBgZmxleC1sYXlvdXRgIGNvbXBvbmVudC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0LmZsZXgtbGF5b3V0XG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEEgY29sdW1uIHdpdGggYSBsb3Qgb2YgY29udGVudCB0aGF0IHNob3VsZCB3cmFwIG9uIGZpeGVkIHNpemUuXG5cdGRpdi5pdGVtLi1ib3R0b21cblx0XHRkaXYuYWlnaXMtZGVidWcgYm90dG9tXG5cdGRpdi5pdGVtLi1jZW50ZXJcblx0XHRkaXYuYWlnaXMtZGVidWcgY2VudGVyXG5cdGRpdi5pdGVtLi1zdHJldGNoXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgc3RyZXRjaFxuYGBgXG5cbiovXG4uZ3JpZC1sYXlvdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG4uZ3JpZC1sYXlvdXQuLWd1dHRlciB7XG4gIG1hcmdpbjogLTAuNjI1cmVtIC0wLjkzNzVyZW07XG59XG4uZ3JpZC1sYXlvdXQuLWd1dHRlciA+IC5pdGVtIHtcbiAgcGFkZGluZzogMC42MjVyZW0gMC45Mzc1cmVtO1xufVxuLmdyaWQtbGF5b3V0Li1yZXZlcnNlIHtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xufVxuLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXcxIHtcbiAgZmxleDogMCAwIDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbi5ncmlkLWxheW91dCA+IC5pdGVtLi13MS0yIHtcbiAgZmxleDogMCAwIDUwJTtcbiAgbWF4LXdpZHRoOiA1MCU7XG59XG4uZ3JpZC1sYXlvdXQgPiAuaXRlbS4tdzEtMyB7XG4gIGZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzMzMzMzYlO1xuICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMzMzMzNiU7XG59XG4uZ3JpZC1sYXlvdXQgPiAuaXRlbS4tdzItMyB7XG4gIGZsZXg6IDAgMCA2Ni42NjY2NjY2NjY2NjY2NyU7XG4gIG1heC13aWR0aDogNjYuNjY2NjY2NjY2NjY2NjclO1xufVxuLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXcxLTQge1xuICBmbGV4OiAwIDAgMjUlO1xuICBtYXgtd2lkdGg6IDI1JTtcbn1cbi5ncmlkLWxheW91dCA+IC5pdGVtLi13My00IHtcbiAgZmxleDogMCAwIDc1JTtcbiAgbWF4LXdpZHRoOiA3NSU7XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAzMi41cmVtKSB7XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi14c21hbGwtMSB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi14c21hbGwtMS0yIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi14c21hbGwtMS0zIHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMzMzMzNiU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXhzbWFsbC0yLTMge1xuICAgIGZsZXg6IDAgMCA2Ni42NjY2NjY2NjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY2NjY2NyU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXhzbWFsbC0xLTQge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXhzbWFsbC0zLTQge1xuICAgIGZsZXg6IDAgMCA3NSU7XG4gICAgbWF4LXdpZHRoOiA3NSU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDQ4cmVtKSB7XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1zbWFsbC0xIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXNtYWxsLTEtMiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tc21hbGwtMS0zIHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMzMzMzNiU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXNtYWxsLTItMyB7XG4gICAgZmxleDogMCAwIDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tc21hbGwtMS00IHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1zbWFsbC0zLTQge1xuICAgIGZsZXg6IDAgMCA3NSU7XG4gICAgbWF4LXdpZHRoOiA3NSU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDYycmVtKSB7XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1tZWRpdW0tMSB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1tZWRpdW0tMS0yIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1tZWRpdW0tMS0zIHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMzMzMzNiU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLW1lZGl1bS0yLTMge1xuICAgIGZsZXg6IDAgMCA2Ni42NjY2NjY2NjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY2NjY2NyU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLW1lZGl1bS0xLTQge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLW1lZGl1bS0zLTQge1xuICAgIGZsZXg6IDAgMCA3NSU7XG4gICAgbWF4LXdpZHRoOiA3NSU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDc1cmVtKSB7XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1sYXJnZS0xIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLWxhcmdlLTEtMiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbGFyZ2UtMS0zIHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMzMzMzNiU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLWxhcmdlLTItMyB7XG4gICAgZmxleDogMCAwIDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbGFyZ2UtMS00IHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1sYXJnZS0zLTQge1xuICAgIGZsZXg6IDAgMCA3NSU7XG4gICAgbWF4LXdpZHRoOiA3NSU7XG4gIH1cbn1cbi8qXG4tLS1cbm5hbWU6IC5tYXgtd2lkdGgtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L1BhZ2VcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSByZXNwb25zaXZlXG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBjb21wb25lbnQgd2lsbCBsaW1pdCBpdHMgY29udGVudCB0byBhIG1heGltdW0gd2lkdGguIEZvcnRoZXJtb3JlIGl0IGNhbiBjZW50ZXIgaXRzIGNvbnRlbnQuXG5Vc2VmdWxsIGZvciBwYWdlIGNvbnRlbnQgdGhhdCBzaG91bGQgbm90IHNwYW4gdGhlIGZ1bGwgd2lkdGguXG5cblxuIyMgUGVyY2VudGFnZSBiYXNlZCBzaXppbmdcblxuKi9cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDQ4cmVtKSB7XG4gIC5tYXgtd2lkdGgtbGF5b3V0IHtcbiAgICBtYXgtd2lkdGg6IDQxLjc1cmVtO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA2MnJlbSkge1xuICAubWF4LXdpZHRoLWxheW91dCB7XG4gICAgbWF4LXdpZHRoOiA0My43NXJlbTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNzVyZW0pIHtcbiAgLm1heC13aWR0aC1sYXlvdXQge1xuICAgIG1heC13aWR0aDogNTEuNDM3NXJlbTtcbiAgfVxufVxuLm1heC13aWR0aC1sYXlvdXQuLWNlbnRlciB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG4vKlxuLS0tXG5uYW1lOiAuc2xpZGUtb3ZlcmxheVxuY2F0ZWdvcnk6IE92ZXJsYXkvU2xpZGVcbnRhZzpcbiAtIHJvbGxvdmVyXG4gLSBzbGlkZVxuIC0gb3ZlcmxheVxuLS0tXG5cblJvbGxvdmVyIGNvbXBvbmVudCAtIGNvbnRlbnQgcm9sbG92ZXIgcm9sbHMgaW4gLSBkZWZhdWx0IGZyb20gYm90dG9tXG5cblRyaWdnZXIgd2l0aCBtb3VzZXJvdmVyIGJ5IGFkZGluZyBgLi1ob3ZlcmAgdmFyaWFudFxuXG5UcmlnZ2VyIHdpdGgganMgYnkgYWRkaW5nIGAuLXNob3dgIHZhcmlhbnRcblxuYGBgamFkZVxuZGl2LnNsaWRlLW92ZXJsYXkuLWhvdmVyXG4gICAgZGl2IFNvbWUgbWFpbiBjb250ZW50XG4gICAgZGl2LnJvbGxvdmVyIFJvbGxvdmVyIGNvbnRlbnRcbmBgYFxuXG5Sb2xsb3ZlciBjb21wb25lbnQgdmFyaWFudCAtbGVmdFxuYGBgamFkZVxuZGl2LnNsaWRlLW92ZXJsYXkuLWxlZnQuLWhvdmVyXG4gICAgZGl2IFNvbWUgbWFpbiBjb250ZW50XG4gICAgZGl2LnJvbGxvdmVyIFJvbGxvdmVyIGNvbnRlbnRcbmBgYFxuXG5Sb2xsb3ZlciBjb21wb25lbnQgdmFyaWFudCAtcmlnaHRcbmBgYGphZGVcbmRpdi5zbGlkZS1vdmVybGF5Li1yaWdodC4taG92ZXJcbiAgICBkaXYgU29tZSBtYWluIGNvbnRlbnRcbiAgICBkaXYucm9sbG92ZXIgUm9sbG92ZXIgY29udGVudFxuYGBgXG5cblJvbGxvdmVyIGNvbXBvbmVudCB2YXJpYW50IC10b3BcbmBgYGphZGVcbmRpdi5zbGlkZS1vdmVybGF5Li10b3AuLWhvdmVyXG4gICAgZGl2IFNvbWUgbWFpbiBjb250ZW50XG4gICAgZGl2LnJvbGxvdmVyIFJvbGxvdmVyIGNvbnRlbnRcbmBgYFxuXG5Sb2xsb3ZlciBjb21wb25lbnQgdmFyaWFudCAtdG9wIHdpdGgganMgdHJpZ2dlclxuYGBgamFkZVxuZGl2LnNsaWRlLW92ZXJsYXkuLXRvcC4tc2hvd1xuICAgIGRpdiBTb21lIG1haW4gY29udGVudFxuICAgIGRpdi5yb2xsb3ZlciBSb2xsb3ZlciBjb250ZW50XG5gYGBcbiovXG4uc2xpZGUtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zbGlkZS1vdmVybGF5ID4gLnJvbGxvdmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDEwMCUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBlYXNlO1xufVxuLnNsaWRlLW92ZXJsYXkuLWxlZnQgPiAucm9sbG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwJSwgMCk7XG4gIGxlZnQ6IDA7XG59XG4uc2xpZGUtb3ZlcmxheS4tcmlnaHQgPiAucm9sbG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAwKTtcbiAgcmlnaHQ6IDA7XG59XG4uc2xpZGUtb3ZlcmxheS4tdG9wID4gLnJvbGxvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTEwMCUpO1xuICB0b3A6IDA7XG59XG4uc2xpZGUtb3ZlcmxheS4tc2hvdyA+IC5yb2xsb3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xufVxuLnNsaWRlLW92ZXJsYXkuLWhvdmVyOmhvdmVyID4gLnJvbGxvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG59XG4vKlxuLS0tXG5uYW1lOiAuY29udHJvbC1yZXNwb25zaXZlXG5jYXRlZ29yeTogUmVzcG9uc2l2ZS9Db250cm9sXG50YWc6XG4gLSByZXNwb25zaXZlXG4gLSBkaXNwbGF5XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQ29udHJvbHMgdGhlIGRpc3BsYXkgb2YgYW4gZWxlbWVudCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgYnJlYWtwb2ludFxuXG4jIyBIaWRlXG5cbmAuLWhpZGUtbWVkaXVtYCBoaWRlcyBhbiBlbGVtZW50IGFzIGxvbmcgYXMgdGhlIHNjcmVlbiBpcyB3aWRlciB0aGFuIHRoZSBicmVha3BvaW50IGBtZWRpdW1gLlxuXG5gYGBqYWRlXG5kaXYuY29udHJvbC1yZXNwb25zaXZlLi1oaWRlLW1lZGl1bSBPbmx5IHNob3duIHdoZW4gdGhlIHNjcmVlbiBpcyB3aWRlciB0aGFuIHRoZSBicmVha3BvaW50IG1lZGl1bVxuYGBgXG5cbiMjIFNob3dcblxuYC4tc2hvdy1tZWRpdW1gIHNob3cgYW4gZWxlbWVudCBhcyBsb25nIGFzIHRoZSBzY3JlZW4gaXMgbmFycm93ZXIgdGhhbiB0aGUgYnJlYWtwb2ludCBgbWVkaXVtYC5cblxuYGBgamFkZVxuZGl2LmNvbnRyb2wtcmVzcG9uc2l2ZS4tc2hvdy1tZWRpdW0gT25seSBzaG93biB3aGVuIHRoZSBzY3JlZW4gaXMgbmFycm93ZXIgdGhhbiB0aGUgYnJlYWtwb2ludCBgbWVkaXVtYFxuYGBgXG5cbiovXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAzMi41cmVtKSB7XG4gIC5jb250cm9sLXJlc3BvbnNpdmUuLWhpZGUteHNtYWxsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAzMi41cmVtKSB7XG4gIC5jb250cm9sLXJlc3BvbnNpdmUuLXNob3cteHNtYWxsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA0OHJlbSkge1xuICAuY29udHJvbC1yZXNwb25zaXZlLi1oaWRlLXNtYWxsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA0OHJlbSkge1xuICAuY29udHJvbC1yZXNwb25zaXZlLi1zaG93LXNtYWxsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA2MnJlbSkge1xuICAuY29udHJvbC1yZXNwb25zaXZlLi1oaWRlLW1lZGl1bSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjJyZW0pIHtcbiAgLmNvbnRyb2wtcmVzcG9uc2l2ZS4tc2hvdy1tZWRpdW0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDc1cmVtKSB7XG4gIC5jb250cm9sLXJlc3BvbnNpdmUuLWhpZGUtbGFyZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDc1cmVtKSB7XG4gIC5jb250cm9sLXJlc3BvbnNpdmUuLXNob3ctbGFyZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDMyLjVyZW0pIHtcbiAgLmhpZGUtcmVzcG9uc2l2ZS4teHNtYWxsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA0OHJlbSkge1xuICAuaGlkZS1yZXNwb25zaXZlLi1zbWFsbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNjJyZW0pIHtcbiAgLmhpZGUtcmVzcG9uc2l2ZS4tbWVkaXVtIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA3NXJlbSkge1xuICAuaGlkZS1yZXNwb25zaXZlLi1sYXJnZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLypcbi0tLVxubmFtZTogLmltYWdlLXJlc3BvbnNpdmVcbmNhdGVnb3J5OiBSZXNwb25zaXZlL0ltYWdlXG50YWc6XG4gLSByZXNwb25zaXZlXG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBjbGFzcyBtYWtlcyB0aGUgaW1hZ2Ugc2NhbGluZyB0byBpdHMgbWF4IHdpZHRoLlxuXG5gYGBqYWRlXG5pbWcuaW1hZ2UtcmVzcG9uc2l2ZShzcmM9J2h0dHA6Ly93d3cuYnl1aS5lZHUvaW1hZ2VzL2FncmljdWx0dXJlLWxpZmUtc2NpZW5jZXMvZmxvd2VyLmpwZycpXG5gYGBcblxuIyMgVmFyaWFudHNcblxuYC4tZnVsbGAgZm9yY2VzIHRoZSBwaWN0dXJlIHRvIHNwYW4gdG8gMTAwJSBvZiB0aGUgcGFyZW50XG5cbmBgYGphZGVcbmltZy5pbWFnZS1yZXNwb25zaXZlLi1mdWxsKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbmBgYFxuKi9cbi5pbWFnZS1yZXNwb25zaXZlIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLmltYWdlLXJlc3BvbnNpdmUuLWZ1bGwge1xuICB3aWR0aDogMTAwJTtcbn1cbi5pbWFnZS1yZXNwb25zaXZlLi1pbnNldCB7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG59XG4vKlxuLS0tXG5uYW1lOiAubWVkaWEtcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IFJlc3BvbnNpdmUvTWVkaWFcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5gLm1lZGlhLXJlc3BvbnNpdmVgIC0gVGhpcyBtYWtlcyBhIHRoZSBgLm1lZGlhLXJlc3BvbnNpdmVgIGRpdiBhIGNvbnRhaW5lciBmb3IgYW55IG1lZGlhIGVsZW1lbnQgKGlmcmFtZSwgdmlkZW8sIC4uLiApIHRoYXQgcmVzcG9uc2l2ZSBzY2FsZXMgd2l0aCBhIGZpeCByYXRpby5cblRoZSBtZWRpYSBlbGVtZW50ICggY2hpbGQgKSBuZWVkcyB0aGUgY2xhc3MgYC5tZWRpYWAgdG8gZnVsbHkgZmlsbCBvdXQgdGhlIHBhcmVudHMgc2l6ZS5cblxuVGhlIGAubWVkaWEtcmVzcG9uc2l2ZWAgY29tcG9uZW50IGhhcyB0byBwcmVkZWZpbmVkIG1vZGlmaWVyczogYC4tbWVkaWEtNC0zYCwgYC4tbWVkaWEtMTYtOWAgdGhhdCBkZWZpbmUgYSBmaXggcmF0aW8uXG5cbmBgYGphZGVcbmRpdi5tZWRpYS1yZXNwb25zaXZlLi1tZWRpYS0xNi05XG5cdGlmcmFtZS5tZWRpYShzcmM9XCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9UQ2Q2UGZ4T3kwWVwiKVxuYGBgXG5cbmBgYGphZGVcbmRpdi5tZWRpYS1yZXNwb25zaXZlLi1tZWRpYS00LTNcblx0aWZyYW1lLm1lZGlhKHNyYz1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1RDZDZQZnhPeTBZXCIpXG5gYGBcblxuKi9cbi5tZWRpYS1yZXNwb25zaXZlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1ib3R0b206IDUwJTtcbn1cbi5tZWRpYS1yZXNwb25zaXZlLi1tZWRpYS0xLTEge1xuICBwYWRkaW5nLWJvdHRvbTogNTAlO1xufVxuLm1lZGlhLXJlc3BvbnNpdmUuLW1lZGlhLTQtMyB7XG4gIHBhZGRpbmctYm90dG9tOiA3NSU7XG59XG4ubWVkaWEtcmVzcG9uc2l2ZS4tbWVkaWEtMTYtOSB7XG4gIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG59XG4ubWVkaWEtcmVzcG9uc2l2ZSA+IC5tZWRpYSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLypcbi0tLVxubmFtZTogLm92ZXJmbG93LXRleHRcbmNhdGVnb3J5OiBUZXh0XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHRleHRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGNvbXBvbmVudCBjdXRzIHRoZSB0ZXh0IG9uIGEgZ2l2ZW4gaGVpZ2h0IGFuZCBhZGRzIGEgZmFkZW91dCBlZmZlY3QuXG5UaGlzIGlzIHVzZWZ1bGwgZm9yIHRleHQgY29udGFpbmVycyB0aGF0IGhhdmUgbW9yZSBjb250ZW50IHRoYW4gc3BhY2UuXG5cblxuYGBgamFkZVxuZGl2Lm92ZXJmbG93LXRleHQoc3R5bGU9XCJ3aWR0aDogMjAwcHg7aGVpZ2h0OiA3MHB4XCIpIFRoaXMgaXMgYSB2ZXJ5IGxvbmcgdGV4dCB0aGF0IGlzIHJ3YXBlZCBhbmQgY3V0IGF0IHRoZSBlbmQuXG5gYGBcbiovXG4ub3ZlcmZsb3ctdGV4dCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5vdmVyZmxvdy10ZXh0OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDIuMTg3NXJlbTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgyNTUsMjU1LDI1NSwwKSwgI2ZmZiA3MCUpO1xufVxuLypcbi0tLVxubmFtZTogLnRleHQtc3R5bGVcbmNhdGVnb3J5OiBUZXh0XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHRleHRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHRleHQgc3R5bGluZyBjb21wb25lbnQgZm9yIGRpZmZlcmVudCB0ZXh0IHN0eWxlc1xuXG4jIyBEZWZhdWx0IGhlYWRpbmdcblxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUgRGVmYXVsdCBoZWFkaW5nXG5gYGBcblxuIyMgSDFcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1oMSBUaGUgaDEgaGVhZGVyXG5cbmBgYFxuXG4jIyBIMlxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWgyIFRoZSBoMiBoZWFkZXJcbmBgYFxuXG4jIyBIM1xuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWgzIFRoZSBoMyBoZWFkZXJcbmBgYFxuXG4jIyBCb2xkXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4tYm9sZCBCb2xkIHRleHRcbmBgYFxuXG4jIyBBbGlnbiBjZW50ZXJcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1jZW50ZXIgQ2VudGVyZWQgdGV4dFxuYGBgXG5cbiMjIEFsaWduIHJpZ2h0XG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4tcmlnaHQgUmlnaHQgYWxpZ25lZCB0ZXh0XG5gYGBcblxuKi9cbi50ZXh0LXN0eWxlLi1oMSB7XG4gIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJyAsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMy4zNzVyZW07XG4gIGxpbmUtaGVpZ2h0OiA0LjM3NXJlbTtcbn1cbi50ZXh0LXN0eWxlLi1oMiB7XG4gIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJyAsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMi4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDMuMDYyNXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC4zMTI1cmVtO1xufVxuLnRleHQtc3R5bGUuLWgzIHtcbiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnICwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMS42MjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xufVxuLnRleHQtc3R5bGUuLXBhZ2UtaGVhZGluZyB7XG4gIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJyAsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDEuNjI1cmVtO1xuICBsaW5lLWhlaWdodDogMS43NXJlbTtcbn1cbi50ZXh0LXN0eWxlLi1oNSB7XG4gIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJyAsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjg3NXJlbTtcbn1cbi50ZXh0LXN0eWxlLi1oNCB7XG4gIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJyAsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjM3NXJlbTtcbn1cbi50ZXh0LXN0eWxlLi1tZXRhIHtcbiAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjEyNXJlbTtcbiAgY29sb3I6ICNhMmEyYTI7XG59XG4udGV4dC1zdHlsZS4tc2VjdGlvbiB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMmQyZDJkO1xuICBtYXJnaW4tdG9wOiAxLjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG4udGV4dC1zdHlsZS4tcCB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG4udGV4dC1zdHlsZS4tY2FwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG4udGV4dC1zdHlsZS4tY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnRleHQtc3R5bGUuLWJvbGQge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuLnRleHQtc3R5bGUuLW1lZGl1bSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG4uY29sbGFwc2UtdWkgPiAuY29udGVudC4tdHJhbnNpdGlvbiB7XG4gIHRyYW5zaXRpb246IGhlaWdodCAwLjNzIGVhc2U7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbn1cbi5jb2xsYXBzZS11aS4tY2xvc2UgPiAuY29udGVudCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY29sbGFwc2UtdWkuLWNsb3NlIC5jb2xsYXBzZS1pY29uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuLmNvbGxhcHNlLXVpIC5jb2xsYXBzZS1pY29uIHtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cbmEge1xuICBjb2xvcjogIzJkMmQyZDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItYm90dG9tOiAwLjEyNXJlbSBzb2xpZCAjNzNjZmE0O1xufVxuYS4tdW5kZWNvcmF0ZWQge1xuICBib3JkZXItYm90dG9tOiAwO1xufVxuYTpob3ZlciB7XG4gIGNvbG9yOiAjNzNjZmE0O1xufVxuLmJ1dHRvbi1zdHlsZSB7XG4gIGhlaWdodDogMi44MTI1cmVtO1xuICBtaW4td2lkdGg6IDcuNXJlbTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBib3JkZXI6IDJweCBzb2xpZCAjNzNjZmE0O1xufVxuLmJ1dHRvbi1zdHlsZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3M2NmYTQ7XG4gIGNvbG9yOiAjZmZmO1xufVxuLmNhcmQtaW1hZ2Uge1xuICBoZWlnaHQ6IDEyLjVyZW07XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbn1cbi5jYXJkLWxpbmsge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsMjU1LDI1NSwwKSAwJSwgI2ZmZiAyMCUpO1xufVxuLmNoYXB0ZXItZWxlbWVudCB7XG4gIGhlaWdodDogNXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAyLjVyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDIuNXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmNoYXB0ZXItZWxlbWVudCAuc3RhdGUtaW5kaWNhdG9yIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7XG59XG4uY2hhcHRlci1lbGVtZW50Lm9wZW4gLnN0YXRlLWluZGljYXRvciB7XG4gIHRyYW5zZm9ybTogcm90YXRlWigxODBkZWcpO1xufVxuLmJvb2xlYW4tc2xpZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA0NnB4O1xuICBoZWlnaHQ6IDI0cHg7XG59XG4uYm9vbGVhbi1zbGlkZXIgaW5wdXQge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnNsaWRlci1jb250cm9sIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjRzO1xuICB0cmFuc2l0aW9uOiAwLjRzO1xufVxuLnNsaWRlci1jb250cm9sOmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29udGVudDogXCJcIjtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbGVmdDogMnB4O1xuICBib3R0b206IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjRzO1xuICB0cmFuc2l0aW9uOiAwLjRzO1xufVxuaW5wdXQ6Y2hlY2tlZCArIC5zbGlkZXItY29udHJvbDpiZWZvcmUge1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMnB4KTtcbiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMnB4KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIycHgpO1xufVxuLnNsaWRlci1jb250cm9sLnJvdW5kIHtcbiAgYm9yZGVyLXJhZGl1czogMzRweDtcbn1cbi5zbGlkZXItY29udHJvbC5yb3VuZDpiZWZvcmUge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG4uY29weXJpZ2h0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDA7XG4gIHJpZ2h0OiAyMHB4O1xuICB0b3A6IDQzNXB4O1xuICBjb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMC44O1xuICB0ZXh0LXNoYWRvdzogMHB4IDBweCAxMnB4ICMzMzM7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cbltkYXRhLXRvb2x0aXBdIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5bZGF0YS10b29sdGlwXTpiZWZvcmUsXG5bZGF0YS10b29sdGlwXTphZnRlciB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgLW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKVwiO1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbltkYXRhLXRvb2x0aXBdOmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAyNHB4O1xuICByaWdodDogMnB4O1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gIHBhZGRpbmc6IDdweDtcbiAgd2lkdGg6IDE2MHB4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1MSw1MSw1MSwwLjkpO1xuICBjb2xvcjogI2ZmZjtcbiAgY29udGVudDogYXR0cihkYXRhLXRvb2x0aXApO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cbltkYXRhLXRvb2x0aXBdOmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDE5cHg7XG4gIGxlZnQ6IDdweDtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci10b3A6IDVweCBzb2xpZCAjMDAwO1xuICBib3JkZXItdG9wOiA1cHggc29saWQgcmdiYSg1MSw1MSw1MSwwLjkpO1xuICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgY29udGVudDogXCIgXCI7XG4gIGZvbnQtc2l6ZTogMDtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG5bZGF0YS10b29sdGlwXTpob3ZlcjpiZWZvcmUsXG5bZGF0YS10b29sdGlwXTpob3ZlcjphZnRlciB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIC1tcy1maWx0ZXI6IFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKVwiO1xuICBvcGFjaXR5OiAxO1xufVxuLmRpYWxvZy10cmlnZ2VyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5OTk5OTtcbiAgcmlnaHQ6IDEuMjVyZW07XG4gIGJvdHRvbTogMS4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzczY2ZhNDtcbiAgY29sb3I6ICNmZmY7XG4gIGhlaWdodDogM3JlbTtcbiAgYm9yZGVyLXJhZGl1czogMS41cmVtO1xuICBib3gtc2hhZG93OiAwIDAuNXJlbSAwLjc1cmVtIHJnYmEoMCwwLDAsMC4zKTtcbn1cbi5kaWFsb2ctdHJpZ2dlcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4NmQ2YjA7XG4gIGJvcmRlci1jb2xvcjogIzg2ZDZiMDtcbiAgYm94LXNoYWRvdzogMCAwLjYyNXJlbSAwLjkzNzVyZW0gcmdiYSgwLDAsMCwwLjMpO1xufVxuLmZpbHRlci10ZXJtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cbi5maWx0ZXItdGVybSAudGVybS1pdGVtIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5maWx0ZXItdGVybSAudGVybS1pdGVtIGlucHV0IHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBib3JkZXI6IDA7XG59XG4uZnVsbC1oZWlnaHQge1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uZ29hbC1pY29uIHtcbiAgd2lkdGg6IDUuODEyNXJlbTtcbiAgaGVpZ2h0OiA1LjgxMjVyZW07XG59XG4uaGVhZGVyLWljb24ge1xuICB3aWR0aDogNC4zNzVyZW07XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlMGUwZTA7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6ICMyZDJkMmQ7XG59XG4uaGVhZGVyLWljb246aG92ZXIge1xuICBjb2xvcjogIzczY2ZhNDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmhlYWRlci1tZW51IHtcbiAgbWluLXdpZHRoOiAxNi44NzVyZW07XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAzLjQzNzVyZW07XG4gIGxlZnQ6IDMuNzVyZW07XG4gIHBhZGRpbmc6IDEuMjVyZW0gMi41cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGVhO1xuICBib3JkZXI6IDAuMDMxMjVyZW0gc29saWQgcmdiYSgwLDAsMCwwLjI1KTtcbiAgYm94LXNoYWRvdzogMCAwLjE4NzVyZW0gMS41cmVtIHJnYmEoMCwwLDAsMC4yKTtcbn1cbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnYtc3RyZXRjaCB7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5oLXN0cmV0Y2gge1xuICB3aWR0aDogMTAwJTtcbn1cbi5pY29uLWRvd24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMC4xMjVyZW07XG59XG4uaWNvbi10YXNrZGltZW5zaW9ucyB7XG4gIHdpZHRoOiAyLjM3NXJlbTtcbiAgaGVpZ2h0OiAyLjE4NzVyZW07XG59XG4uaWNvbi10YXNrZGltZW5zaW9ucyAub2Vrb25vbWllLFxuLmljb24tdGFza2RpbWVuc2lvbnMgLm9la29sb2dpZSxcbi5pY29uLXRhc2tkaW1lbnNpb25zIC5zb3ppYWxlcyB7XG4gIGZpbGw6ICNlNmRhY2Q7XG59XG4uaWNvbi10YXNrZGltZW5zaW9ucy4tc2hvdy1vZWtvbm9taWUgLm9la29ub21pZSB7XG4gIGZpbGw6ICM4MDY3YjY7XG59XG4uaWNvbi10YXNrZGltZW5zaW9ucy4tc2hvdy1vZWtvbG9naWUgLm9la29sb2dpZSB7XG4gIGZpbGw6ICM3NWQ2ZjQ7XG59XG4uaWNvbi10YXNrZGltZW5zaW9ucy4tc2hvdy1zb3ppYWxlcyAuc296aWFsZXMge1xuICBmaWxsOiAjZWQ1ZjdjO1xufVxuI3Rhc2tkaXhtZW5zaW9ucyAub2Vrb25vbWllIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5pbnB1dC1zdHlsZS4tYmFzaWMge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDAuMTI1cmVtIDAuOTM3NXJlbSAwLjMxMjVyZW07XG59XG4uaW5wdXQtc3R5bGUuLW1heHdpZHRoIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4uZXh0ZW5kZWQtd2lkdGgtbGF5b3V0IHtcbiAgbWF4LXdpZHRoOiA2Mi4yNXJlbTtcbn1cbi5leHRlbmRlZC13aWR0aC1sYXlvdXQuLWNlbnRlciB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG4vKlxuLS0tXG5uYW1lOiAuZml4ZWQtcGFnZS1sYXlvdXRcbmNhdGVnb3J5OiBMYXlvdXQvRml4ZWQgUGFnZVxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBwYWdlXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBwYWdlIGxheW91dCB3aXRoIGEgZml4ZWQgaGVhZGVyIGFuZCBvcHRpb25hbCBzaWRlYmFycy5cbldpdGggdGhlIGAtbWFyZ2luLXt0b3B8bGVmdHxyaWdodH1gLCBgLW1hcmdpbi17dG9wfGxlZnR8cmlnaHR9LXNtYWxsYCB2YXJpYW50cyB5b3UgY2FuIGNvbnRyb2wgdGhlIHNwYWNpbmcuXG5JZiB0aGUgY29udGVudCBmb3IgZXhhbXBsZSBuZWVkcyBhIHNwYWNpbmcgdG93YXJkcyB0aGUgaGVhZGVyIHVzZTogYC5jb250ZW50Li1tYXJnaW4tdG9wYC5cbklmIHRoZSBzaWRlYmFyIHNob3cgYmUgYmVsb3cgdGhlIGhlYWRlciB1c2U6IGAuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcGAuXG5cblxuVGhlcmUgYXJlIHZhcmlhbnRzIHRvIHJlc2l6ZSB0aGUgaGVhZGVyIGFuZCBzaWRlYmFycyB0byBhIHNtYWxsZXIgd2lkdGgvaGVpZ2h0OiBgLmhlYWRlci4tc21hbGxgLCBgLnNpZGViYXIuLXNtYWxsYC5cbklmIHlvdSBuZWVkIGEgc3BhY2luZyBvbiB5b3VyIGNvbnRlbnQgb3Igc2lkZWJhciB5b3UgbmVlZCB0byBhZGp1c3QgdGhhdCBtYW51YWxseSBsaWtlIHRoaXM6XG5gYGBcbmRpdi5maXhlZC1wYWdlLWxheW91dFxuXHRkaXYuaGVhZGVyLi1zbWFsbFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cIndpZHRoOjEwMCU7aGVpZ2h0OjEwMCVcIikgIEhlYWRlclxuXHRkaXYuY29udGVudC4tbWFyZ2luLXRvcC1zbWFsbCBDb250ZW50XG5cdGRpdi5zaWRlYmFyLi1sZWZ0Li1tYXJnaW4tdG9wLXNtYWxsLi1zbWFsbFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpICBMZWZ0IFNpZGViYXJcbmBgYFxuXG4jIyBIZWFkZXIgd2l0aCBzaWRlYmFyc1xuXG5gYGBqYWRlXG5kaXYuZml4ZWQtcGFnZS1sYXlvdXRcblx0ZGl2LmhlYWRlclxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cIndpZHRoOjEwMCU7aGVpZ2h0OjEwMCVcIikgIEhlYWRlclxuXHRkaXYuY29udGVudC4tbWFyZ2luLXRvcCBDb250ZW50XG5cdGRpdi5zaWRlYmFyLi1sZWZ0Li1tYXJnaW4tdG9wXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgIExlZnQgU2lkZWJhclxuXHRkaXYuc2lkZWJhci4tcmlnaHRcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJoZWlnaHQ6MTAwJVwiKSAgUmlnaHQgU2lkZWJhclxuYGBgXG4qL1xuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmNvbnRlbnQge1xuICBtaW4taGVpZ2h0OiBjYWxjKCAxMDB2aCAtIDMuMTI1cmVtKTtcbn1cbi5hbnN3ZXItdmlldyBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICBtYXJnaW4tdG9wOiA0cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5hbnN3ZXItdmlldyBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICBtYXJnaW4tdG9wOiA0cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5hbnN3ZXItdmlldyAudGV4dCB7XG4gIG1hcmdpbi1sZWZ0OiAxLjU2MjVyZW07XG59XG4uYW5zd2VyLXZpZXcuLWNvcnJlY3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmOWVlO1xuICBjb2xvcjogIzQ3ODgyZDtcbn1cbi5hbnN3ZXItdmlldy4td3Jvbmcge1xuICBjb2xvcjogIzliMjcyNztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZjdmNztcbn1cbi5kcmFnLWRyb3AgLmRyYWctY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JleS1jb2xvcjtcbn1cbi5kcmFnLWRyb3AgLmRyYWctbm9kZSB7XG4gIGJvcmRlcjogMXB4IGRhc2hlZCAjNDQ0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1heC13aWR0aDogNjBweDtcbn1cbi5kcmFnLWRyb3AgLmRyb3Atbm9kZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmRyYWctZHJvcCAuZHJvcC10YXJnZXQge1xuICBib3JkZXI6IDFweCBkYXNoZWQgIzQ0NDtcbiAgbWluLWhlaWdodDogNDVweDtcbiAgd2lkdGg6IDEwMCU7XG59XG4uZHJhZy1kcm9wIC5kcm9wLXRhcmdldCA+LmRyYWctbm9kZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5mZWVkYmFjay1jb250YWluZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4uZmVlZGJhY2stcGFuZWwge1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgcGFkZGluZzogMi41cmVtIDEuODc1cmVtIDEuMjVyZW0gMS44NzVyZW07XG4gIG1hcmdpbjogLTEuNXJlbSAwIDAgMDtcbn1cbi5mZWVkYmFjay1wYW5lbC4tY29ycmVjdCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM0YmQyYTE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGY1ZWU7XG4gIGNvbG9yOiAjNGJkMmExO1xufVxuLmZlZWRiYWNrLXBhbmVsLi13cm9uZyB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMjRiNGI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWUyZTI7XG4gIGNvbG9yOiAjZDI0YjRiO1xufVxuLmhvdHNwb3QtcG9pbnQge1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNjYpO1xuICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gIG1hcmdpbi10b3A6IC0xMHB4O1xufVxuLmhvdHNwb3QtcmVjdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC4yKTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjtcbn1cbi5saW5rLXN0eWxlLi11bmRlY29yYXRlZCB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5saW5rLXN0eWxlLi1hY3RpdmUge1xuICBjb2xvcjogIzczY2ZhNDtcbn1cbi5tYXRlcmlhbC1jYXJkIHtcbiAgd2lkdGg6IDEzLjQzNzVyZW07XG4gIGhlaWdodDogMTguMTI1cmVtO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICBsaW5lLWhlaWdodDogMS4xMjVyZW07XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycztcbn1cbi5tYXRlcmlhbC1jYXJkIGltZyB7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA4LjYyNXJlbTtcbn1cbi5tYXRlcmlhbC1jYXJkID4gLmNvbnRlbnQtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgdG9wOiAwO1xufVxuLm1hdGVyaWFsLWNhcmQgPiAuY29udGVudC1jb250YWluZXIgPiAuY29weSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxNDNweDtcbiAgcmlnaHQ6IDJweDtcbn1cbi5tYXRlcmlhbC1jYXJkLi1oYXNjb3Zlcjpob3ZlciA+IC5jb250ZW50LWNvbnRhaW5lciB7XG4gIHRvcDogLTguNjI1cmVtO1xufVxuLm1hdGVyaWFsLWNhcmQ6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJveC1zaGFkb3c6IDBweCAycHggMjJweCByZ2JhKDAsMCwwLDAuMTgpO1xufVxuLm1hdGVyaWFsLWNhcmQ6aG92ZXIgLmNhcmQtbWV0YSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWF0ZXJpYWwtY2FyZDpob3ZlciAuY2FyZC1hY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5tYXRlcmlhbC1jYXJkIC5jYXJkLWFjdGlvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWF0ZXJpYWwtY2FyZCAuY2FyZC1hY3Rpb24sXG4ubWF0ZXJpYWwtY2FyZCAuY2FyZC1tZXRhLFxuLm1hdGVyaWFsLWNhcmQgLmNhcmQtbWV0YSBhIHtcbiAgY29sb3I6ICNhMmEyYTIgIWltcG9ydGFudDtcbn1cbi5tYXRlcmlhbC1zaWRlYmFyIHtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNmYwZWE7XG4gIHdpZHRoOiAxNXJlbTtcbiAgdG9wOiAwLjA2MjVyZW0gIWltcG9ydGFudDtcbiAgei1pbmRleDogMTAgIWltcG9ydGFudDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIG1hcmdpbi1ib3R0b206IC0xLjg3NXJlbTtcbn1cbi5tb2RhbC1iYWNrZ3JvdW5kIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIHotaW5kZXg6IDEwMDAwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjQpO1xufVxuLnBhZ2UtZm9vdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzczY2ZhNDtcbiAgY29sb3I6ICNmZmY7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTAwMDA7XG4gIGhlaWdodDogNC4zNzVyZW07XG59XG4ucGFnZS1mb290ZXIgYSB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLnBhZ2UtZm9vdGVyIGE6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5wYWdlLWZvb3RlciBpbWcge1xuICBoZWlnaHQ6IDNyZW07XG59XG4ucGFnZS1oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3gtc2hhZG93OiAwIDFweCAwIDAgcmdiYSgwLDAsMCwwLjI1KTtcbiAgaGVpZ2h0OiA0LjM3NXJlbTtcbiAgei1pbmRleDogMTAwMDA7XG59XG4ucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjNzNjZmE0IDAlLCAjNzNjZmE0IDUwJSwgI2Y2ZjBlYSAwJSwgI2Y2ZjBlYSAxMDAlKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAwO1xuICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgYXV0bztcbiAgd2lkdGg6IDMuNzVyZW07XG4gIGhlaWdodDogMS4xMjVyZW07XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC41cyBlYXNlO1xuICBib3JkZXItcmFkaXVzOiAwLjU2MjVyZW07XG59XG4ucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3M2NmYTQ7XG4gIGhlaWdodDogMS4xMjVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuNTYyNXJlbTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgbWluLXdpZHRoOiAxLjEyNXJlbTtcbn1cbi5wcm9ncmVzcy1iYXIuLXAwIC5wcm9ncmVzcyB7XG4gIHdpZHRoOiA1JTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuLnByb2dyZXNzLWJhci4tcDEwIC5wcm9ncmVzcyB7XG4gIHdpZHRoOiAxMCU7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbn1cbi5wcm9ncmVzcy1iYXIuLXAyMCAucHJvZ3Jlc3Mge1xuICB3aWR0aDogMjAlO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG59XG4ucHJvZ3Jlc3MtYmFyLi1wMzAgLnByb2dyZXNzIHtcbiAgd2lkdGg6IDMwJTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuLnByb2dyZXNzLWJhci4tcDQwIC5wcm9ncmVzcyB7XG4gIHdpZHRoOiA0MCU7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbn1cbi5wcm9ncmVzcy1iYXIuLXA1MCAucHJvZ3Jlc3Mge1xuICB3aWR0aDogNTAlO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG59XG4ucHJvZ3Jlc3MtYmFyLi1wNjAgLnByb2dyZXNzIHtcbiAgd2lkdGg6IDYwJTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuLnByb2dyZXNzLWJhci4tcDcwIC5wcm9ncmVzcyB7XG4gIHdpZHRoOiA3MCU7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbn1cbi5wcm9ncmVzcy1iYXIuLXA4MCAucHJvZ3Jlc3Mge1xuICB3aWR0aDogODAlO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG59XG4ucHJvZ3Jlc3MtYmFyLi1wOTAgLnByb2dyZXNzIHtcbiAgd2lkdGg6IDkwJTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuLnByb2dyZXNzLWJhci4tcDEwMCAucHJvZ3Jlc3Mge1xuICB3aWR0aDogMTAwJTtcbn1cbi5zdGF0ZS1kaWFsb2cge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDEwMDEwMDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMzEuMjVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJveC1zaGFkb3c6IDAgMCAwLjYyNXJlbSAwIHJnYmEoMCwwLDAsMC4yKTtcbn1cbi5zdGF0ZS1kaWFsb2cgLmRpYWxvZy1wYXJ0IHtcbiAgaGVpZ2h0OiA0MDVweDtcbiAgcGFkZGluZzogMC44NzVyZW0gMi41cmVtO1xufVxuLnN0YXRlLWRpYWxvZyAuZGlhbG9nLXBhcnQuLWRhcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGVhO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uc3RhdGUtZGlhbG9nIC5kaWFsb2ctY2xvc2VyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDAuODc1cmVtO1xuICByaWdodDogMC44NzVyZW07XG59XG4uc3dhcC1pbWFnZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLnN3YXAtaW1hZ2UuLWFjdGl2ZS1taW5pIC4tcGFzc2l2ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uc3dhcC1pbWFnZS4tYWN0aXZlLW1pbmkgLi1hY3RpdmUge1xuICBkaXNwbGF5OiBpbmxpbmU7XG59XG4uc3dhcC1pbWFnZSAuLXBhc3NpdmUge1xuICBkaXNwbGF5OiBpbmxpbmU7XG59XG4uc3dhcC1pbWFnZSAuLWFjdGl2ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4udGFzay1jaGVja2JveCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG59XG4udGFzay1jaGVja2JveDpiZWZvcmUge1xuICBjb250ZW50OiAnICc7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogMC4xMjVyZW0gc29saWQgI2I0YjRiNDtcbiAgZm9udC1zaXplOiAxLjQzNzVyZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi50YXNrLWNoZWNrYm94OmNoZWNrZWQ6YmVmb3JlIHtcbiAgY29udGVudDogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sOyB1dGY4LCA8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIwJyBoZWlnaHQ9JzIwJyB2aWV3Qm94PScwIDAgMjQgMjQnPjxwYXRoIGQ9J005IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXonIGZpbGw9J3doaXRlJy8+PC9zdmc+XCIpO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzczY2ZhNDtcbiAgYm9yZGVyLWNvbG9yOiAjNzNjZmE0O1xufVxuLnRhc2stbGlzdGl0ZW0ge1xuICBwYWRkaW5nOiAxLjg3NXJlbSAyLjVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNmYwZWE7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZmZmO1xufVxuLnRlYXNlci1pbWFnZSB7XG4gIGhlaWdodDogMjVyZW07XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDE1JSA1MCU7XG59XG4udGhlbWEtY2FyZCB7XG4gIGhlaWdodDogMjVyZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzO1xufVxuLnRoZW1hLWNhcmQgPiAuY29udGVudC13cmFwcGVyID4gLmNvbnRlbnQge1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBoZWlnaHQ6IDIyLjEyNXJlbTtcbiAgdG9wOiAwcHg7XG4gIHRyYW5zaXRpb246IHRvcCAwLjNzO1xufVxuLnRoZW1hLWNhcmQgPiAubGluayB7XG4gIGhlaWdodDogMy40Mzc1cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDBweDtcbn1cbi50aGVtYS1jYXJkOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3gtc2hhZG93OiAwcHggMnB4IDIycHggcmdiYSgwLDAsMCwwLjE4KTtcbn1cbi50aGVtYS1jYXJkOmhvdmVyID4gLmNvbnRlbnQge1xuICB0b3A6IC0xMi41cmVtO1xufVxuLnRoZW1hLWNhcmQ6aG92ZXIgPiAubGluayBhIHtcbiAgY29sb3I6ICM3M2NmYTQ7XG59XG4udGhlbWEtaW1hZ2Uge1xuICBoZWlnaHQ6IDI1cmVtO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNDUlO1xufVxuIiwiLyohXG4tLS1cbm5hbWU6IEdsb2JhbCBzZXR0aW5nc1xuY2F0ZWdvcnk6IFNoYXJlZC9WYXJpYWJsZXNcbnRlbXBsYXRlOiB2YXJpYWJsZXNcbnRhZzpcbiAtIHZhcmlhYmxlc1xudmFyaWFibGVzOlxuIC0gbmFtZTogXCJ0ZXh0LWxpbmUtaGVpZ2h0XCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBsaW5lIGhlaWdodCBvZiB0aGUgYm9keVwiXG4gICBkZWZhdWx0OiBcIjEuNXJlbVwiXG4gLSBuYW1lOiBcImZvbnQtZmFtaWx5XCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBmb250LWZhbWlseSBvZiB0aGUgYm9keVwiXG4gICBkZWZhdWx0OiBcIidIZWx2ZXRpY2EnLCBzYW5zLXNlcmlmXCJcbiAtIG5hbWU6IFwidGV4dC1yZW5kZXJpbmdcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIHRleHQtcmVuZGVyaW5nIG9mIHRoZSBib2R5XCJcbiAgIGRlZmF1bHQ6IFwib3B0aW1pemVMZWdpYmlsaXR5XCJcbiAtIG5hbWU6IFwidHJhbnNpdGlvbi1kdXJhdGlvblwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgZHVyYXRpb24gb2YgdGhlIHNsaWRlIHRyYW5zaXRpb25zXCJcbiAgIGRlZmF1bHQ6IFwiMC40c1wiXG4gLSBuYW1lOiBcImJvcmRlci1yYWRpdXNcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGRlZmF1bHQgcmFkaXVzIGZvciBib3JkZXJzXCJcbiAgIGRlZmF1bHQ6IFwiMnB4XCJcbi0tLVxuXG5UaGVzZSB2YXJpYWJsZXMgc2V0dXBzIHNvbWUgZ2xvYmFsIHRleHQgZm9ybWF0dGluZyBhbmQgc3R5bGluZy5cbiovXG5cbnRoZW1lLnNldHRpbmdzID0ge1xuICB0ZXh0LWxpbmUtaGVpZ2h0OiByZW0oIDI0cHggKSxcbiAgdGV4dC1mb250OiAnUm9ib3RvJ1xcLCBzZXJpZixcbiAgaGVhZGluZy1mb250OiAnUm9ib3RvJ1xcLCBzZXJpZixcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSxcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcyxcbiAgYm9yZGVyLXJhZGl1czogMnB4LFxuICBicmVha3BvaW50czoge1xuICAgIHNtYWxsOiByZW0oIDc2OHB4ICksXG4gICAgbWVkaXVtOiByZW0oIDk5MnB4ICksXG4gICAgbGFyZ2U6IHJlbSggMTIwMHB4IClcbiAgfSxcbn1cblxuIiwiLypcbi0tLVxubmFtZTogR2xvYmFsIFJlc2V0XG5jYXRlZ29yeTogU2hhcmVkXG4tLS1cblxuVGhlIGxlcm5ldHogY3NzIGxpYnJhcnkgaGFzIGEgc2V0IG9mIHJlc2V0IHN0eWxlIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIG9uIGV2ZXJ5IGJyb3dzZXIuXG5GdXJ0aGVybW9yZSB0aGlzIHJlc2V0IHNldHMgc29tZSBnbG9iYWwgdmFyaWFibGVzIGxpa2U6XG4gKiBib2R5IGZvbnQtZmFtaWxpZXNcbiAqIGJvZHkgbGluZS1oZWlnaHRcbiAqIGJvZHkgdGV4dC1yZW5kZXJpbmdcbiAqIDpyb290IGZvbnQtc2l6ZSBmb3IgcHJvcGVyIHJlbSBjb252ZXJzaW9uXG4qL1xuXG5cblxuaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBvYmplY3QsIGlmcmFtZSxcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbmFiYnIsIGFkZHJlc3MsIGNpdGUsIGNvZGUsXG5kZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHNhbXAsXG5zbWFsbCwgc3Ryb25nLCBzdWIsIHN1cCwgdmFyLFxuYiwgaSxcbmRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG5maWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbnRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLFxuZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5LFxudGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0Ym9yZGVyOjA7XG5cdG91dGxpbmU6MDtcblx0Zm9udC1zaXplOmluaGVyaXQ7XG5cdHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO1xufVxuXG46cm9vdCB7XG5cdGZvbnQtc2l6ZTogMTZweDtcbn1cblxuaHRtbCB7XG5cdGZvbnQtc2l6ZTogMTAwJTtcbn1cblxuYm9keSB7XG5cdGxpbmUtaGVpZ2h0OiB0aGVtZS5zZXR0aW5ncy50ZXh0LWxpbmUtaGVpZ2h0O1xuXHRjb2xvcjogdGhlbWUuY29sb3JzLnRleHQ7XG5cdGZvbnQtZmFtaWx5OiB0aGVtZS5zZXR0aW5ncy50ZXh0LWZvbnQ7XG5cdHRleHQtcmVuZGVyaW5nOiB0aGVtZS5zZXR0aW5ncy50ZXh0LXJlbmRlcmluZztcblx0YmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLmJvZHk7XG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xufVxuXG5hcnRpY2xlLGFzaWRlLGRldGFpbHMsZmlnY2FwdGlvbixmaWd1cmUsXG5mb290ZXIsaGVhZGVyLGhncm91cCxtZW51LG5hdixzZWN0aW9uIHtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuXG5zZWxlY3Qge1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG59XG5cbnRleHRhcmVhIHtcblx0d2lkdGg6MTAwJTtcbn1cblxudGFibGUge1xuXHRib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7XG5cdGJvcmRlci1zcGFjaW5nOjA7XG59XG5cbi8vXG4vLyAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4vLyAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbi8vIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4vLyAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbi8vXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGNvbG9yOiBpbmhlcml0OyAvLyAxXG4gIGZvbnQ6IGluaGVyaXQ7IC8vIDJcbiAgbWFyZ2luOiAwOyAvLyAzXG59XG5cblxuLy9cbi8vIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbi8vXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG5cblxuLypcbiAqIE5vcm1hbGl6ZSB0aGUgYmVoYXZpb3VyIG9mIGFsbCBicm93c2Vyc1xuICpcbiAqIEluc3RlYWQgb2Ygc2V0dGluZyBib3gtc2l6aW5nIGZpeCBvbiBhbGwgZWxlbWVudHMgd2Ugb25seSBzZXQgaXQgb24gdGhlIHJvb3QgZWxlbWVudFxuICogYW5kIHRlbGwgYWxsIGVsZW1lbnRzIHRvIGluaGVyaXQgaXQncyBwcm9wZXJ0eSBmcm9tIHRoZSBwYXJlbnRcbiAqIFRoYXQgd2F5IGl0J3MgcG9zc2libGUgdG8gb3ZlcndyaXRlIHRoZSBib3gtc2l6aW5nIGFueXdoZXJlIHdoaWxlIGtlZXBpbmcgcHJvcGVyIGluaGVyaXRhbmNlXG4gKi9cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuYSB7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0Y29sb3I6IHRoZW1lLmNvbG9ycy5hY3Rpb247XG59XG5pbWcge1xuXHRkaXNwbGF5OiBibG9jaztcbn1cbnVsLG9sIHtcblx0bWFyZ2luLWxlZnQ6IHJlbSggMjBweCApO1xufVxuIiwiLyohXG4tLS1cbm5hbWU6IC5ib3JkZXItYm94XG5jYXRlZ29yeTogQm94L0JvcmRlclxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBib3JkZXJcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGJveCB0byBjb250cm9sIGJvcmRlcnMgb24gYWxsIGZvdXIgc2lkZXMuXG5cbmBgYGphZGVcbmRpdi5ib3JkZXItYm94Li1sZWZ0IFNvbWUgZGVtbyBjb250ZW50XG5gYGBcblxuYGBgamFkZVxuZGl2LmJvcmRlci1ib3guLWFsbCBTb21lIGRlbW8gY29udGVudFxuYGBgXG4qL1xuLmJvcmRlci1ib3gge1xuXG5cdGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLmJvcmRlci1ib3g7XG5cdFxuXHRmb3IgdmFyaWFudCwgdmFsdWUgaW4gY29uZiB7XG5cbiAgICAgICAgZm9yIHNpZGUgaW4gdG9wIHJpZ2h0IGJvdHRvbSBsZWZ0IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgdmFyaWFudCAhPSAnZGVmYXVsdCcge1xuICAgICAgICAgICAgICAgICYuLXtzaWRlfS17dmFyaWFudH0ge1xuXHRcdFx0XHRcdGJvcmRlci17c2lkZX0tc3R5bGU6IHNvbGlkO1xuICAgICAgICAgICAgICAgICAgICB7dmFsdWV9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAmLi17c2lkZX0ge1xuXHRcdFx0XHRcdGJvcmRlci17c2lkZX0tc3R5bGU6IHNvbGlkO1xuICAgICAgICAgICAgICAgICAgICB7dmFsdWV9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAgICAgIFxuICAgICAgICB9XG5cblx0XHRpZiB2YXJpYW50ICE9ICdkZWZhdWx0JyB7XG5cdFx0XHQmLi1hbGwte3ZhcmlhbnR9IHtcblx0XHRcdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRcdFx0e3ZhbHVlfVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQmLi1hbGwge1xuXHRcdFx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdFx0XHR7dmFsdWV9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ji4tcm91bmQge1xuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcdFxuXHR9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5jb2xvci1ib3hcbmNhdGVnb3J5OiBCb3gvQ29sb3JcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gYm9yZGVyXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCB0aGUgYmFja2dyb3VuZCBjb2xvci4gSXQgbWFrZXMgYSB2YXJpYW50IGZvcmVhY2ggY29sb3IgZGVmaW5pb24gaW4gdGhlIGZpbGUgYGNvbG9yLWJveC52YXIuc3R5bGBcblxuYGBgamFkZVxuZGl2LmNvbG9yLWJveC4td2hpdGUoc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHhcIilcbmBgYFxuXG5gYGBqYWRlXG5kaXYuY29sb3ItYm94Li1hY3Rpb24oc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHhcIilcbmBgYFxuKi9cbi5jb2xvci1ib3gge1xuICAgIFxuICAgIGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLmNvbG9yLWJveC5jb2xvcnM7XG5cbiAgICBmb3Iga2V5LCB2YWx1ZSBpbiBjb25me1xuICAgICAgICAmLi17a2V5fXtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhbHVlOyAgICBcbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLm1hcmdpbi1ib3hcbmNhdGVnb3J5OiBCb3gvTWFyZ2luXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgY29tcG9uZW50IHRvIGFkZCBtYXJnaW5zXG5cbiMjIEFwcGx5aW5nIG1hcmdpbnNcblxuVGhlIGVhc2llc3QgdXNlIGNhc2UgaXMgdG8gdXNlIHNpbXBsZSBgLm1hcmdpbi1ib3ggLi1hbGxgIGZvciBhIG1hcmdpbiBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgd2l0aCBkZWZhdWx0IHNpemUgb3JcbmAuLXRvcGAsIGAuLXJpZ2h0YCwgYC4tYm90dG9tYCBhbmQgYC4tbGVmdGAgZm9yIHNwZWNpZmllZCBzaWRlcy5cblxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWFsbFxuXHRkaXYuYWlnaXMtZGVidWcgRGVmYXVsdCBtYXJnaW4gYXBwbGllZCBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnRcbmBgYFxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcgRGVmYXVsdCBtYXJnaW4gYXBwbGllZCBvbiBib3R0b21cbmBgYFxuXG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIG1hcmdpbnMgYXJlIGAuLXRvcC17c2l6ZX1gLCBgLi1yaWdodC17c2l6ZX1gLCBgLi1ib3R0b20te3NpemV9YCBhbmQgYC5sZWZ0LXtzaXplfWAgdG9nZXRoZXIgd2l0aCBzaXplcyBzbWFsbCwgbWVkaXVtIG9yIGxhcmdlLlxuQWxsIHNpemVzIGFyZSBkZWZpbmVkIGluIHRoZSB2YXJpYWJsZSB0aGVtZS5jb21wb25lbnRzLm1hcmdpbi1ib3guIFZhbHVlcyBhcmUgYHNtYWxsYCwgYG1lZGl1bWAsIGBsYXJnZWAgYW5kIGBhdXRvYFxuXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tbGVmdC1zbWFsbFxuICAgIGRpdi5haWdpcy1kZWJ1ZyBTbWFsbCBtYXJnaW4gYXBwbGllZCBvbiBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li1yaWdodC1zbWFsbFxuICAgIGRpdi5haWdpcy1kZWJ1ZyBTbWFsbCBtYXJnaW4gYXBwbGllZCBvbiByaWdodFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tdG9wLXNtYWxsXG4gICAgZGl2LmFpZ2lzLWRlYnVnIFNtYWxsIG1hcmdpbiBhcHBsaWVkIG9uIHRvcFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tYm90dG9tLXNtYWxsXG4gICAgZGl2LmFpZ2lzLWRlYnVnIFNtYWxsIG1hcmdpbiBhcHBsaWVkIG9uIGJvdHRvbVxuYGBgXG5cblRoZXJlIGFyZSBhbHNvIHNob3J0Y3V0cyBmb3IgdmVydGljYWwgYC4tdi17c2l6ZX1gIGFuZCBob3Jpem9udGFsIGAuLWgte3NpemV9YCB0b2dldGhlciB3aXRoIHNpemVzIHNtYWxsLCBtZWRpdW0gYW5kIGxhcmdlXG5cbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li12LW1lZGl1bVxuICAgIGRpdi5haWdpcy1kZWJ1ZyBNZWRpdW0gbWFyZ2luIGFwcGxpZWQgb24gdG9wIGFuZCBib3R0b21cbmBgYFxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWgtbWVkaXVtXG4gICAgZGl2LmFpZ2lzLWRlYnVnIE1lZGl1bSBtYXJnaW4gYXBwbGllZCBvbiByaWdodCBhbmQgbGVmdFxuYGBgXG5cbiMjIFZhcmlhbnRzIGZvciBhdXRvIG1hcmdpbnNcblxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWF1dG8uLWgoc3R5bGU9XCJ3aWR0aDogMjAwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcgQXV0byBtYXJnaW4gYXBwbGllZCBvbiByaWdodCBhbmQgbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tYXV0by4tdihzdHlsZT1cImhlaWdodDogNDZweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1ZyBBdXRvIG1hcmdpbiBhcHBsaWVkIG9uIHRvcCBhbmQgYm90dG9tXG5gYGBcblxuKi9cblxuLm1hcmdpbi1ib3gge1xuXG4gICAgY29uZiA9IHRoZW1lLmNvbXBvbmVudHMubWFyZ2luLWJveDtcblxuICAgIGZvciBzaXplLCB2YWx1ZSBpbiBjb25mIHtcblxuICAgICAgICBmb3Igc2lkZSBpbiB0b3AgcmlnaHQgYm90dG9tIGxlZnR7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIHNpemUgIT0gJ2RlZmF1bHQnIHtcbiAgICAgICAgICAgICAgICAmLi17c2lkZX0te3NpemV9e1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4te3NpZGV9OiB2YWx1ZTsgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAmLi17c2lkZX17XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi17c2lkZX06IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gICAgICBcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIHNpemUgIT0gJ2RlZmF1bHQnIHtcbiAgICAgICAgICAgICYuLWgte3NpemV9e1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiB2YWx1ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tdi17c2l6ZX17XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFsdWU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLi1hbGwte3NpemV9e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogdmFsdWUgdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJi4taHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogdmFsdWU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuLXZ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFsdWU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi4tYWxse1xuICAgICAgICAgICAgICAgIG1hcmdpbjogdmFsdWUgdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi4tYXV0b3tcblxuICAgICAgICAmLi12e1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bzsgICAgXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiBhdXRvOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLWh7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsgICAgXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87ICAgIFxuICAgICAgICB9ICAgIFxuICAgIH1cblxufSIsIi8qIVxuLS0tXG5uYW1lOiAucGFkZGluZy1ib3hcbmNhdGVnb3J5OiBCb3gvUGFkZGluZ1xudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHNpbXBsZSBjb21wb25lbnQgdG8gYWRkIHBhZGRpbmdzXG5cbiMjIEFwcGx5aW5nIHBhZGRpbmdzXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5wYWRkaW5nLWJveCAuLWFsbGAgZm9yIGEgcGFkZGluZyBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgd2l0aCBkZWZhdWx0IHNpemUgb3JcbmAuLXRvcGAsIGAuLXJpZ2h0YCwgYC4tYm90dG9tYCBhbmQgYC4tbGVmdGAgZm9yIHNwZWNpZmllZCBzaWRlc1xuXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLWFsbCBEZWZhdXQgcGFkZGluZyBhcHBsaWVkIG9uIHRvcCwgcmlnaHQsIGJvdHRvbSBhbmQgbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLWJvdHRvbSBEZWZhdXQgcGFkZGluZyBhcHBsaWVkIG9uIGJvdHRvbVxuYGBgXG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIHBhZGRpbmdzIGFyZSBgLi10b3Ate3NpemV9YCwgYC4tcmlnaHQte3NpemV9YCwgYC4tYm90dG9tLXtzaXplfWAgYW5kIGAubGVmdC17c2l6ZX1gIHRvZ2V0aGVyIHdpdGggc2l6ZXMgc21hbGwsIG1lZGl1bSBvciBsYXJnZS5cbkFsbCBzaXplcyBhcmUgZGVmaW5lZCBpbiB0aGUgdmFyaWFibGUgdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC4gVmFsdWVzIGFyZSBgc21hbGxgLCBgbWVkaXVtYCwgYW5kIGBsYXJnZWBcblxuYGBgamFkZVxuZGl2LmFpZ2lzLWRlYnVnLnBhZGRpbmctYm94Li1sZWZ0LXNtYWxsIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4tcmlnaHQtc21hbGwoc3R5bGU9XCJ0ZXh0LWFsaWduOnJpZ2h0XCIpIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiByaWdodFxuYGBgXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLXRvcC1zbWFsbCBTbWFsbCBwYWRkaW5nIGFwcGxpZWQgb24gdG9wXG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4tYm90dG9tLXNtYWxsIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiBib3R0b21cbmBgYFxuXG5UaGVyZSBhcmUgYWxzbyBzaG9ydGN1dHMgZm9yIHZlcnRpY2FsIGAuLXYte3NpemV9YCBhbmQgaG9yaXpvbnRhbCBgLi1oLXtzaXplfWAgdG9nZXRoZXIgd2l0aCBzaXplc1xuXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLXYtbWVkaXVtIE1lZGl1bSBwYWRkaW5nIGFwcGxpZWQgb24gdG9wIGFuZCBib3R0b21cbmBgYFxuYGBgamFkZVxuZGl2LmFpZ2lzLWRlYnVnLnBhZGRpbmctYm94Li1oLW1lZGl1bShzdHlsZT1cIndpZHRoOiAzMDBweFwiKSBNZWRpdW0gcGFkZGluZyBhcHBsaWVkIG9uIHJpZ2h0IGFuZCBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4taC1tZWRpdW0uLXRvcC1sYXJnZShzdHlsZT1cIndpZHRoOiA0MDBweFwiKSBNZWRpdW0gcGFkZGluZyBhcHBsaWVkIG9uIHJpZ2h0IGFuZCBsZWZ0LCBsYXJnZSBwYWRkaW5nIGFwcGxpZWQgb24gdG9wXG5gYGBcbiovXG5cbi5wYWRkaW5nLWJveHtcblxuICAgIGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLnBhZGRpbmctYm94O1xuXG4gICAgZm9yIHNpemUsIHZhbHVlIGluIGNvbmYge1xuXG4gICAgICAgIGZvciBzaWRlIGluIHRvcCByaWdodCBib3R0b20gbGVmdHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgc2l6ZSAhPSAnZGVmYXVsdCcge1xuICAgICAgICAgICAgICAgICYuLXtzaWRlfS17c2l6ZX17XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcte3NpZGV9OiB2YWx1ZTsgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAmLi17c2lkZX17XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcte3NpZGV9OiB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ICAgICAgXG4gICAgICAgIH1cblxuICAgICAgICBpZiBzaXplICE9ICdkZWZhdWx0JyB7XG4gICAgICAgICAgICAmLi1oLXtzaXplfXtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tdi17c2l6ZX17XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuLWFsbC17c2l6ZX17XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFsdWUgdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJi4taHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tdntcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogdmFsdWU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuLWFsbHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YWx1ZSB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLi1ndXR0ZXIge1xuICAgICAgICBndXR0ZXIgPSB0aGVtZS5jb21wb25lbnRzLmdyaWQtbGF5b3V0Lmd1dHRlcjtcbiAgICAgICAgcGFkZGluZzogKCBndXR0ZXJbMF0gLyAyICkgKCBndXR0ZXJbMF0gLyAyICk7ICAgIFxuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLnNoYWRvdy1ib3hcbmNhdGVnb3J5OiBCb3gvU2hhZG93XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHNoYWRvd1xuIC0gaGVscGVyXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCBib3gtc2hhZG93cyB3aXRoIGRpZmZlcmVudCB2YXJpYW50c1xuXG4jIyBEZWZhdWx0IHZhcmlhbnRzXG5gYGBqYWRlXG5kaXYuc2hhZG93LWJveCBEZW1vIGNvbnRlbnRcbmRpdi5zaGFkb3ctYm94Li1pbnNldCBEZW1vIGNvbnRlbnRcbmRpdi5zaGFkb3ctYm94Li16ZXJvIFVzZSB6ZXJvIHNoYWRvdyBpbiBhbmltYXRpb25zXG5gYGBcbiovXG4uc2hhZG93LWJveCB7XG5cdFxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5zaGFkb3ctYm94O1xuXG5cdGZvciBuYW1lLCB2YWx1ZSBpbiBjb25mIHtcblx0XHRpZiBuYW1lICE9ICdkZWZhdWx0JyB7XG4gICAgICAgICAgICAmLi17bmFtZX0ge1xuICAgICAgICAgICAgICAgIHt2YWx1ZX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcblx0XHRcdHt2YWx1ZX1cblx0XHR9XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLnRyYW5zZm9ybS1ib3hcbmNhdGVnb3J5OiBCb3gvVHJhbnNmb3JtXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHRyYW5mb3JtXG4gLSBoZWxwZXJcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGJveCB0byBjb250cm9sIGNvbW1vbiB0cmFuc2Zvcm1hdGlvbnNcblxuIyMgUm90YXRlXG5gYGBqYWRlXG5kaXYudHJhbnNmb3JtLWJveC4tcm90OTAgU29tZSBkZW1vIGNvbnRlbnRcbmRpdi50cmFuc2Zvcm0tYm94Li1yb3QxODAgU29tZSBkZW1vIGNvbnRlbnRcbmRpdi50cmFuc2Zvcm0tYm94Li1yb3QyNzAgU29tZSBkZW1vIGNvbnRlbnRcbmBgYFxuXG4jIyBGbGlwXG5gYGBqYWRlXG5kaXYudHJhbnNmb3JtLWJveC4tZmxpcFggU29tZSBkZW1vIGNvbnRlbnRcbmRpdi50cmFuc2Zvcm0tYm94Li1mbGlwWSBTb21lIGRlbW8gY29udGVudFxuYGBgXG4qL1xuLnRyYW5zZm9ybS1ib3gge1xuXG5cdGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLnRyYW5zZm9ybS1ib3g7XG5cblx0Zm9yIG5hbWUsIHZhbHVlIGluIGNvbmYge1xuXHRcdCYuLXtuYW1lfSB7XG5cdFx0XHR7dmFsdWV9XG5cdFx0fVxuXHR9XG5cbn0iLCIvKiFcbi0tLVxubmFtZTogLmJ1dHRvbi1zdHlsZVxuY2F0ZWdvcnk6IENvbXBvbmVudHMvQnV0dG9uXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGJ1dHRvblxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYnV0dG9uIGNvbXBvbmVudCBhcyBhIGJhc2UgZm9yIGRpZmZlcmVudCBidXR0b24gdmFyaWFudHMgZGVmaW5lZCBpbiBpdHMgY29uZmlndXJhdGlvbi5cblxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1zdHlsZS4tbWFpbiBBY3Rpb25cbmBgYFxuKi9cbi5idXR0b24tc3R5bGUge1xuXG5cdGFwcGVhcmFuY2U6IG5vbmU7XG5cdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRib3JkZXI6IG5vbmU7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHRvdXRsaW5lOiBub25lO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0Zm9yIG5hbWUsIHZhbHVlIGluIHRoZW1lLmNvbXBvbmVudHMuYnV0dG9uLXN0eWxlIHtcblx0XG5cdFx0Ji4te25hbWV9IHtcblx0XHRcdHt2YWx1ZX1cblx0XHR9XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmRyb3AtZG93bi1tZW51XG5jYXRlZ29yeTogRHJvcERvd25cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gZHJvcGRvd25cbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIHN0eWxlcyBhIG1lbnUgaW5zaWRlIGEgLmRyb3AtZG93bi5cblxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi1tZW51XG5cdGRpdi5pdGVtIE1lbnUgMVxuXHRkaXYuaXRlbSBNZW51IDJcblx0ZGl2Lml0ZW0gTWVudSAzXG5gYGBcblxuVXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSAuZHJvcC1kb3duIGl0c2VsZlxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4tb3BlblxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudC5kcm9wLWRvd24tbWVudVxuXHRcdGRpdi5pdGVtIE1lbnUgMVxuXHRcdGRpdi5pdGVtIE1lbnUgMlxuXHRcdGRpdi5pdGVtIE1lbnUgM1xuYGBgXG5cbiovXG4uZHJvcC1kb3duLW1lbnUge1xuXG5cdGJveC1zaGFkb3c6IDBweCAxcHggNnB4IDBweCByZ2JhKDAsMCwwLDAuMTcpO1xuXHRib3JkZXI6IDFweCBzb2xpZCB0aGVtZS5jb2xvcnMubGluZTtcblx0Ym9yZGVyLXRvcDogbm9uZTtcblxuXHQ+IC5pdGVtIHtcblx0XHQmICsgLml0ZW0ge1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkIHRoZW1lLmNvbG9ycy5saW5lO1xuXHRcdH1cblx0fVxufSIsIi8qIVxuLS0tXG5uYW1lOiAuZHJvcC1kb3duXG5jYXRlZ29yeTogRHJvcERvd25cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gZHJvcGRvd25cbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGRyb3Bkb3duIGhhcyB0aGUgc2ltcGxlIG1lY2hhbmlzbSB0byBvcGVuIGFuZCBjbG9zZSBhIGRyb3Bkb3duIGNvbnRlbnQuXG5cblRyaWdnZXIgd2l0aCBtb3VzZW92ZXIgYnkgYWRkaW5nIGAuLWhvdmVyYCB2YXJpYW50XG5cblRyaWdnZXIgd2l0aCBqcyBieSBhZGRpbmcgYC4tb3BlbmAgdmFyaWFudCBcblxuQ2xvc2VkIERyb3Bkb3duXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuIyMgVmFyaWFudHNcblxuVmFyaWFudHMgYC4tdG9wYCwgYC4tYm90dG9tYCwgYC4tbGVmdGAgYW5kIGAuLXJpZ2h0YCBjYW4gYmUgY29tYmluZWRcblxuQm90dG9tIGxlZnRcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi1ib3R0b20uLWxlZnRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cbkJvdHRvbSByaWdodFxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4taG92ZXIuLWJvdHRvbS4tcmlnaHRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cblRvcCByaWdodFxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4taG92ZXIuLXRvcC4tcmlnaHRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cblRvcCBsZWZ0XG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tdG9wLi1sZWZ0XG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuIyMgQXNpZGVcblxuVGhlcmUgaXMgYW4gYC4tYXNpZGVgIHZhcmlhbnQgdG8gb3BlbiBjb250ZW50IGFzaWRlXG5cblRvcCBsZWZ0IGFzaWRlXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tdG9wLi1sZWZ0Li1hc2lkZShzdHlsZT1cImxlZnQ6MjAwcHg7d2lkdGg6NTAlXCIpXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuXG5Ub3AgcmlnaHQgYXNpZGVcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi10b3AuLXJpZ2h0Li1hc2lkZShzdHlsZT1cIndpZHRoOjUwJVwiKVxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudCBEcm9wZG93biBjb250ZW50XG5gYGBcbiMjIFJlbGF0aXZlIGNvbnRlbnRcblxuVGhlcmUgaXMgYSB2YXJpYW50IGZvciBvcGVuaW5nIHRoZSBjb250ZW50IHJlbGF0aXZlIGluc3RlYWQgb2YgYWJzb2x1dGVcblxuUmVsYXRpdmVcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi1yZWxhdGl2ZShzdHlsZT1cIndpZHRoOjUwJVwiKVxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudCBEcm9wZG93biBjb250ZW50XG5gYGBcblxuSlMgVHJpZ2dlclxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4tb3Blbi4tYm90dG9tLi1sZWZ0XG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuXG4jIyBEbyBub3Qgd3JhcCBjb250ZW50XG5cbkEgdmFyaWFudCBwcmV2ZW50aW5nIHRoZSBjb250ZW50IGZyb20gd3JhcHBpbmdcblxuXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tbm93cmFwXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnQgd2l0aCBzb21lIHdoaXRlc3BhY2VzXG5gYGBcblxuKi9cbi5kcm9wLWRvd24ge1xuXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRjdXJzb3I6IHBvaW50ZXJcblxuXHQmLi1vcGVuID4gLmNvbnRlbnQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Ji4taG92ZXI6aG92ZXIgPiAuY29udGVudHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdCYuLXRvcCA+IC5jb250ZW50IHtcblx0XHRib3R0b206IDEwMCU7XG5cdH1cblxuXHQmLi1ib3R0b20gPiAuY29udGVudCB7XG5cdFx0dG9wOiAxMDAlO1xuXHR9XG5cblx0Ji4tbGVmdCA+IC5jb250ZW50IHtcblx0XHRsZWZ0OiAwO1xuXHR9XG5cblx0Ji4tdG9wLi1sZWZ0Li1hc2lkZSA+IC5jb250ZW50IHtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSggLTEwMCUsIDEwMCUgKTtcblx0fVxuXG5cdCYuLXJpZ2h0ID4gLmNvbnRlbnQge1xuXHRcdHJpZ2h0OiAwO1xuXHR9XG5cblx0Ji4tdG9wLi1yaWdodC4tYXNpZGUgPiAuY29udGVudCB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoIDEwMCUsIDEwMCUgKTtcblx0fVxuXG5cdCYuLXJlbGF0aXZle1xuXHRcdD4gLmNvbnRlbnQge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdH1cblx0fVxuXG5cdCYuLW5vd3JhcCB7XG5cdFx0PiAuY29udGVudCB7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblx0fVxuXG5cdD4gLnRvZ2dsZSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG5cblx0PiAuY29udGVudCB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHotaW5kZXg6IDEwMDA7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufSIsIi5zdmctaWNvbiB7XG5cblx0ZmlsbDogY3VycmVudENvbG9yO1xuXHRkaXNwbGF5OiBibG9jaztcblxuXHQmLi1pbmxpbmUge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0fVxuXG5cdGZvciBzaXplLCB2YWx1ZSBpbiB0aGVtZS5jb21wb25lbnRzLnN2Zy1pY29uIHtcblx0XHRcblx0XHRpZiggc2l6ZSAhPSAnZGVmYXVsdCcgKSB7XG5cdFx0XHQmLi17c2l6ZX0ge1xuXHRcdFx0XHR7dmFsdWV9XHRcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0e3ZhbHVlfVxuXHRcdH1cblx0fVxufVxuIiwiLyohXG4tLS1cbm5hbWU6IC5hYnMtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L0Fic29sdXRlXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgc2ltcGxlIGNvbXBvbmVudCB0byBwb3NpdGlvbiBhbiBlbGVtZW50IGFic29sdXRlLiBEZWZhdWx0IGlzIHRvcCwgbGVmdFxuXG4jIyBWYXJpYW50c1xuXG5UaGUgdmFyaWFudHMgZm9yIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbmluZyBhcmUgYC4tdG9wYCwgYC4tdmNlbnRlcmAgYW5kIGAuLWJvdHRvbWAuXG5UaGUgdmFyaWFudHMgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uaW5nIGFyZSBgLi1yaWdodGAsIGAuLWhjZW50ZXJgIGFuZCBgLi1sZWZ0YC5cbkFkZGl0aW5hbGx5IHRoZSBgLWNlbnRlcmAgdmFyaWFudCB3aWxsIGNlbnRlciBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbC5cblZhcmlhbnRzIHRvIHN0cmV0Y2ggYW4gaXRlbSB0byBpdHMgZnVsbCB3aWR0aC9oZWlnaHQgY2FuIGJlIGRpbmUgd2l0aCBgLml0ZW0uLXN0cmV0Y2hgLlxuSW4gc29tZSBzaXR1YXRpb25zIHRoZSBhYnMtbGF5b3V0IGl0c2VsZiBuZWVkcyB0byBzdHJldGNoIHNvIHVzZSB0aGUgc3RyZXRjaCB2YXJpYW50IG9uIHRoZSBjb21wb25lbnQuIGAuYWJzLWxheW91dC4tc3RyZXRjaGAgXG5cbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1jZW50ZXJcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXRvcC4taGNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wLi1yaWdodFxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tcmlnaHQuLXZjZW50ZXJcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXJpZ2h0Li1ib3R0b21cbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWJvdHRvbS4taGNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tYm90dG9tLi1sZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1sZWZ0Li12Y2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1sZWZ0Li10b3BcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXN0cmV0Y2hcbmBgYFxuXG4jIyBaLUluZGV4XG5cbkV2ZXJ5IGl0ZW0gY2FuIGNvbnRyb2xsIGl0cyB6IGluZGV4IHdpdGggdGhlIGAuLXp7aX1gdmFyaWFudHMuXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wLi1sZWZ0Li16MVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AuLWxlZnQuLXoyXG5gYGBcblxuKi9cblxuLmFicy1sYXlvdXR7XG4gICAgXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJi4tc3RyZXRjaCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgPiAuaXRlbSB7XG5cbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gICAgICAgICYuLXRvcHtcbiAgICAgICAgICAgIHRvcDogMDsgICAgXG4gICAgICAgIH1cblxuICAgICAgICAmLi1yaWdodHtcbiAgICAgICAgICAgIHJpZ2h0OiAwOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLWJvdHRvbXtcbiAgICAgICAgICAgIGJvdHRvbTogMDsgICAgXG4gICAgICAgIH1cblxuICAgICAgICAmLi1sZWZ0e1xuICAgICAgICAgICAgbGVmdDogMDsgICAgXG4gICAgICAgIH1cblxuICAgICAgICAmLi12Y2VudGVye1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoIC01MCUgKTsgICAgXG4gICAgICAgIH1cblxuICAgICAgICAmLi1oY2VudGVye1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCAtNTAlICk7ICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgJi4tY2VudGVyIHtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoIC01MCUsIC01MCUgKTsgICAgXG4gICAgICAgIH1cblxuICAgICAgICAmLi1zdHJldGNoIHtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciBpIGluIDEuLjEwIHtcbiAgICAgICAgICAgICYuLXp7aX0ge1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IGk7ICAgIFxuICAgICAgICAgICAgfSAgICBcbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmZpeGVkLWxheW91dFxuY2F0ZWdvcnk6IExheW91dC9GaXhlZFxudGFnOlxuIC0gY29udGFpbmVyXG4tLS1cblxuRml4ZWQgY29udGFpbmVyXG5Zb3UgY2FuIHBvc2l0aW9uIHRoZSBjb250YWluZXIgd2l0aCB0aGUgZGlmZmVyZW50IHZhcmlhbnRzIGAuLXRvcGAsIGAuLWJvdHRvbWAsIGAuLWxlZnRgLCBgLi1yaWdodGAuXG5UbyBzcGFuIGZ1bGwgd2lkdGggLyBoZWlnaHQgdXNlIGAuLWxlZnRgICYgYC4tcmlnaHRgIC8gYC4tdG9wYCAmIGAuLWJvdHRvbWBcblxuRml4ZWQgdG9wIGFuZCBmdWxsIHdpZHRoXG5cbmBgYGphZGVcbmRpdi5maXhlZC1sYXlvdXQuLXRvcC4tbGVmdC4tcmlnaHQuYWlnaXMtZGVidWcgdG9wIGxlZnQgZnVsbHdpZHRoXG4gICAgXG5gYGBcblxuRml4ZWQgcmlnaHQgYW5kIGZ1bGwgaGVpZ2h0XG5cbmBgYGphZGVcbmRpdi5maXhlZC1sYXlvdXQuLXRvcC4tYm90dG9tLi1yaWdodC5haWdpcy1kZWJ1ZyB0b3AgcmlnaHQgZnVsbGhlaWdodFxuICAgIFxuYGBgXG5cbiovXG5cbi5maXhlZC1sYXlvdXQge1xuXHRcbiAgICBwb3NpdGlvbjpmaXhlZDtcblxuICAgICYuLXRvcHtcbiAgICAgICAgdG9wOiAwO1xuICAgIH1cblxuICAgICYuLWJvdHRvbXtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgIH1cblxuICAgICYuLWxlZnR7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgfVxuXG4gICAgJi4tcmlnaHR7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmZpeGVkLXBhZ2UtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L0ZpeGVkIFBhZ2VcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gcGFnZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgcGFnZSBsYXlvdXQgd2l0aCBhIGZpeGVkIGhlYWRlciBhbmQgb3B0aW9uYWwgc2lkZWJhcnMuXG5XaXRoIHRoZSBgLW1hcmdpbi17dG9wfGxlZnR8cmlnaHR9YCwgYC1tYXJnaW4te3RvcHxsZWZ0fHJpZ2h0fS1zbWFsbGAgdmFyaWFudHMgeW91IGNhbiBjb250cm9sIHRoZSBzcGFjaW5nLlxuSWYgdGhlIGNvbnRlbnQgZm9yIGV4YW1wbGUgbmVlZHMgYSBzcGFjaW5nIHRvd2FyZHMgdGhlIGhlYWRlciB1c2U6IGAuY29udGVudC4tbWFyZ2luLXRvcGAuXG5JZiB0aGUgc2lkZWJhciBzaG93IGJlIGJlbG93IHRoZSBoZWFkZXIgdXNlOiBgLnNpZGViYXIuLWxlZnQuLW1hcmdpbi10b3BgLlxuXG5cblRoZXJlIGFyZSB2YXJpYW50cyB0byByZXNpemUgdGhlIGhlYWRlciBhbmQgc2lkZWJhcnMgdG8gYSBzbWFsbGVyIHdpZHRoL2hlaWdodDogYC5oZWFkZXIuLXNtYWxsYCwgYC5zaWRlYmFyLi1zbWFsbGAuXG5JZiB5b3UgbmVlZCBhIHNwYWNpbmcgb24geW91ciBjb250ZW50IG9yIHNpZGViYXIgeW91IG5lZWQgdG8gYWRqdXN0IHRoYXQgbWFudWFsbHkgbGlrZSB0aGlzOlxuYGBgXG5kaXYuZml4ZWQtcGFnZS1sYXlvdXRcblx0ZGl2LmhlYWRlci4tc21hbGxcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlXCIpICBIZWFkZXJcblx0ZGl2LmNvbnRlbnQuLW1hcmdpbi10b3Atc21hbGwgQ29udGVudFxuXHRkaXYuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcC1zbWFsbC4tc21hbGxcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJoZWlnaHQ6MTAwJVwiKSAgTGVmdCBTaWRlYmFyXG5gYGBcblxuIyMgSGVhZGVyIHdpdGggc2lkZWJhcnNcblxuYGBgamFkZVxuZGl2LmZpeGVkLXBhZ2UtbGF5b3V0XG5cdGRpdi5oZWFkZXJcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlXCIpICBIZWFkZXJcblx0ZGl2LmNvbnRlbnQuLW1hcmdpbi10b3AgQ29udGVudFxuXHRkaXYuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpICBMZWZ0IFNpZGViYXJcblx0ZGl2LnNpZGViYXIuLXJpZ2h0XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgIFJpZ2h0IFNpZGViYXJcbmBgYFxuKi9cbi5maXhlZC1wYWdlLWxheW91dCB7XG5cblx0Y29uZiA9IHRoZW1lLmNvbXBvbmVudHMuZml4ZWQtcGFnZS1sYXlvdXQ7XG5cblxuXHQ+IC5oZWFkZXIge1xuXHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHRoZWlnaHQ6IGNvbmYuaGVhZGVyLmRlZmF1bHQ7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMnM7XG5cdFx0ei1pbmRleDogMTAwMDtcblxuXHRcdCYuLXNtYWxsIHtcblx0XHRcdGhlaWdodDogY29uZi5oZWFkZXIuc21hbGw7XG5cdFx0fVxuXG5cdFx0Ji4taGlkZSB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoIC0xMDAlICk7XG5cdFx0fVxuXHR9XG5cblx0PiAuc2lkZWJhciB7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdHRvcDogMDtcblx0XHRib3R0b206IDA7XG5cdFx0d2lkdGg6IGNvbmYuc2lkZWJhci5kZWZhdWx0O1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjJzO1xuXHRcdHotaW5kZXg6IDEwMDU7XG5cblx0XHQmLi1tYXJnaW4tdG9wIHtcblx0XHRcdHRvcDogY29uZi5oZWFkZXIuZGVmYXVsdDtcblx0XHR9XG5cblx0XHQmLi1tYXJnaW4tdG9wLXNtYWxsIHtcblx0XHRcdHRvcDogY29uZi5oZWFkZXIuc21hbGw7XG5cdFx0fVxuXG5cdFx0Ji4tc21hbGwge1xuXHRcdFx0d2lkdGg6IGNvbmYuc2lkZWJhci5zbWFsbDtcblx0XHR9XG5cblx0XHQmLi1sZWZ0IHtcblx0XHRcdGxlZnQ6IDA7XG5cblx0XHRcdCYuLWhpZGUge1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoIC0xMDAlICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji4tcmlnaHQge1xuXHRcdFx0cmlnaHQ6IDA7XG5cblx0XHRcdCYuLWhpZGUge1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoIDEwMCUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0fVxuXG5cdD4gLmNvbnRlbnQge1xuXG5cdFx0Ji4tbWFyZ2luLWxlZnQge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGNvbmYuc2lkZWJhci5kZWZhdWx0O1xuXHRcdH1cblxuXHRcdCYuLW1hcmdpbi1sZWZ0LXNtYWxsIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiBjb25mLnNpZGViYXIuc21hbGw7XG5cdFx0fVxuXG5cdFx0Ji4tbWFyZ2luLXJpZ2h0IHtcblx0XHRcdG1hcmdpbi1yaWdodDogY29uZi5zaWRlYmFyLmRlZmF1bHQ7XG5cdFx0fVxuXG5cdFx0Ji4tbWFyZ2luLXJpZ2h0LXNtYWxsIHtcblx0XHRcdG1hcmdpbi1yaWdodDogY29uZi5zaWRlYmFyLnNtYWxsO1xuXHRcdH1cblxuXHRcdCYuLW1hcmdpbi10b3Age1xuXHRcdFx0bWFyZ2luLXRvcDogY29uZi5oZWFkZXIuZGVmYXVsdDtcblx0XHR9XG5cblx0XHQmLi1tYXJnaW4tdG9wLXNtYWxsIHtcblx0XHRcdG1hcmdpbi10b3A6IGNvbmYuaGVhZGVyLnNtYWxsO1xuXHRcdH1cblxuXHRcdHRyYW5zaXRpb246IG1hcmdpbiAwLjJzO1xuXHR9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5mbGV4LWxheW91dFxuY2F0ZWdvcnk6IExheW91dC9GbGV4XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuIC0gZmxleGJveFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgbGF5b3V0IHN5c3RlbSBiYXNlZCBvbiBmbGV4Ym94IHRvIGFsaWduIGFuZCBkaXN0cmlidXRlIGl0ZW1zIGhvcml6b250YWxseSBhbmQgdmVydGljYWxseS5cblxuXG4jIEFsaWdubWVudCBvZiBpdGVtc1xuXG5UaGUgYC1jZW50ZXJgIHNob3J0Y3V0IHdpbGwgY2VudGVyIGFsbCBpdGVtcyBob3Jpem9udGFsICYgdmVydGljYWxcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMTAwcHhcIikuZmxleC1sYXlvdXQuLWNlbnRlclxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gM1xuYGBgXG5cbmAtYmFzZWxpbmVgIHdpbGwgYWxpZ24gaXRlbXMgYmFzZWQgb24gdGhlaXIgYmFzZWxpbmUuIFdvcmtzIGdvb2QgaWYgYWxsIHRoZSBpdGVtcyBjb250YWluIHRleHQuIFxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1iYXNlbGluZVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbVxuXHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJwYWRkaW5nLXRvcDogNTBweDtwYWRkaW5nLWJvdHRvbTogMzBweDtcIikgSXRlbSAyXG5gYGBcblxuYC1pdGVtcy10b3BgICYgYC1pdGVtcy1ib3R0b21gIHdpbGwgYWxpZ24gdGhlIGl0ZW1zIGVpdGhlciBvbiB0b3Agb3IgYm90dG9tXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWl0ZW1zLXRvcFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O3BhZGRpbmctYm90dG9tOiAzMHB4O1wiKSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gM1xuYGBgXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWl0ZW1zLWJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O3BhZGRpbmctYm90dG9tOiAzMHB4O1wiKSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gM1xuYGBgXG5cbmAtaXRlbXMtY2VudGVyYCB3aWxsIGNlbnRlciB0aGUgaXRlbXMgdmVydGljYWxseVxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1pdGVtcy1jZW50ZXJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJwYWRkaW5nLXRvcDogNTBweDtwYWRkaW5nLWJvdHRvbTogMzBweDtcIikgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDNcbmBgYFxuXG4jIEFsaWdubWVudCBvZiBpbmRpdmlkdWFsIGl0ZW1zXG5cbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMTAwcHhcIikuZmxleC1sYXlvdXRcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXRvcCB0b3Bcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWNlbnRlciBjZW50ZXJcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWJvdHRvbSBib3R0b21cblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXN0cmV0Y2ggc3RyZXRjaFxuYGBgXG5cbiMgUm93IG1vZGVcblxuSWYgeW91IGxpa2UgYSBjb250YWluZXIgdGhhdCBzcGFucyB0aGUgZnVsbCB3aWR0aCB3aXRoIGl0ZW0gdGhhdCByZXNpemUgdGhlbXNlbGYgeW91IGNhbiB1c2UgdGhlIGAtcm93YCB2YXJpYW50LlxuXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXJvd1xuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gM1xuYGBgXG5cbklmIHlvdSBsaWtlIHRvIGZpeCBhbiBpdGVtIGJhc2VkIG9uIGl0cyBjb250ZW50IHdpZHRoIHVzZSB0aGUgYC1jb250ZW50YCB2YXJpYW50LlxuVGhpcyBpcyBhIHNob3J0Y3V0IGZvciBgLW5vLWdyb3cgLW5vLXNocmlua2AuIFxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1yb3dcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWNvbnRlbnRcblx0XHRpbWcoc3JjPVwiaHR0cDovL3ZpYS5wbGFjZWhvbGRlci5jb20vMzUweDgwXCIpXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDNcbmBgYFxuXG5Zb3UgY2FuIGNvbnRyb2wgdGhlIHNpemluZyBvZiB0aGUgaXRlbXMgd2l0aCBgLWdyb3dgLCBgLXNocmlua2AsIGAtbm8tZ3Jvd2AsIGAtbm8tc2hyaW5rYC5cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4tcm93XG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1uby1zaHJpbmtcblx0XHRpbWcoc3JjPVwiaHR0cDovL3ZpYS5wbGFjZWhvbGRlci5jb20vMzUweDgwXCIpXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1uby1ncm93IEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDNcbmBgYFxuXG5cbiMgRGlzdHJpYnV0aW9uIG9mIGl0ZW1zXG5cblVzZSBgLVt2L2hdLXNwYWNlLWFyb3VuZGAgJiBgLVt2L2hdLXNwYWNlLWJldHdlZW5gIHRvIGRpc3RyaWJ1dGUgdGhlIGl0ZW1zIGluIHRoZSBmbGV4IGNvbnRhaW5lci5cblxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1oLXNwYWNlLWFyb3VuZFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gM1xuYGBgXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWgtc3BhY2UtYmV0d2VlblxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gM1xuYGBgXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDIwMHB4XCIpLmZsZXgtbGF5b3V0Li12LXNwYWNlLWFyb3VuZC4td3JhcFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDIwMHB4XCIpLmZsZXgtbGF5b3V0Li12LXNwYWNlLWJldHdlZW4uLXdyYXBcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuXG4jIEFsaWdubWVudCBvZiBtdWx0aWxpbmUgaXRlbXMgd2l0aCB3cmFwXG5cbklmIHlvdSBoYXZlIGFsb3Qgb24gaXRlbXMgdGhhdCB3cmFwIHlvdSBjYW4gYWxpZ24gdGhlIG11bHRpbGluZXMgd2l0aCB0aGUgZm9sbG93aW5nIHZhcmlhbnRzOlxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li13cmFwLi1oLWNlbnRlclxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXdyYXAuLWxlZnRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li13cmFwLi1yaWdodFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDIwMHB4XCIpLmZsZXgtbGF5b3V0Li13cmFwLi12LWNlbnRlclxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDIwMHB4XCIpLmZsZXgtbGF5b3V0Li13cmFwLi10b3Bcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAyMDBweFwiKS5mbGV4LWxheW91dC4td3JhcC4tYm90dG9tXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcblxuXG5cblxuKi9cblxuLmZsZXgtbGF5b3V0IHtcblx0XG5cdGRpc3BsYXk6IGZsZXg7XG5cblx0Ji4taW5saW5lIHtcblx0XHRkaXNwbGF5OiBmbGV4LWlubGluZTtcblx0fVxuXG5cdCYuLXdyYXAge1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcdFxuXHR9XG5cblx0Ji4tcm93IHtcblx0XHRmbGV4LXdyYXA6IG5vd3JhcDtcblxuXHRcdD4gLml0ZW0ge1xuXHRcdFx0ZmxleDogMSAxIGF1dG87XG5cdFx0fVx0XG5cdH1cblxuXHQmLi1jb2x1bW4ge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdH1cblxuXHQmLi1jZW50ZXIge1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0YWxpZ24tY29udGVudDogY2VudGVyO1x0XG5cdH1cblxuXHQmLi1iYXNlbGluZSB7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHR9XG5cblx0Ji4tbGVmdCB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHR9XG5cblx0Ji4tcmlnaHQge1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdH1cblxuXHQmLi10b3Age1xuXHRcdGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdH1cblxuXHQmLi1ib3R0b20ge1xuXHRcdGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHR9XG5cblx0Ji4tdi1jZW50ZXIge1xuXHRcdGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXG5cdCYuLXYtc3BhY2UtYmV0d2VlbiB7XG5cdFx0YWxpZ24tY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0fVxuXG5cdCYuLXYtc3BhY2UtYXJvdW5kIHtcblx0XHRhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdH1cblxuXHQmLi1oLWNlbnRlciB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblxuXHQmLi1oLXNwYWNlLWJldHdlZW4ge1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0fVxuXG5cdCYuLWgtc3BhY2UtYXJvdW5kIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcblx0fVxuXG5cblx0Ji4taXRlbXMtdG9wIHtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcdFxuXHR9XG5cblx0Ji4taXRlbXMtYm90dG9tIHtcblx0XHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XHRcblx0fVxuXG5cdCYuLWl0ZW1zLWNlbnRlciB7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcdFxuXHR9XG5cblx0Ji4taXRlbXMtc3RyZXRjaCB7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RyZXRjaDtcdFxuXHR9XG5cblx0PiAuaXRlbSB7XG5cblx0XHQmLi1zdHJldGNoIHtcblx0XHRcdGFsaWduLXNlbGY6IHN0cmV0Y2g7XG5cdFx0fVxuXG5cdFx0Ji4tdG9wIHtcblx0XHRcdGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG5cdFx0fVxuXG5cdFx0Ji4tY2VudGVyIHtcblx0XHRcdGFsaWduLXNlbGY6IGNlbnRlcjtcblx0XHR9XG5cblx0XHQmLi1ib3R0b20ge1xuXHRcdFx0YWxpZ24tc2VsZjogZmxleC1lbmQ7XG5cdFx0fVxuXG5cdFx0Ji4tY29udGVudCB7XG5cdFx0XHRmbGV4OiBub25lO1xuXHRcdH1cblxuXHRcdCYuLWdyb3cge1xuXHRcdFx0ZmxleC1ncm93OiAxO1x0XG5cdFx0fVxuXHRcdFxuXHRcdCYuLXNocmluayB7XG5cdFx0XHRmbGV4LXNocmluazogMTtcdFxuXHRcdH1cblxuXHRcdCYuLW5vLWdyb3cge1xuXHRcdFx0ZmxleC1ncm93OiAwO1x0XG5cdFx0fVxuXG5cdFx0Ji4tbm8tc2hyaW5rIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1x0XG5cdFx0fVxuXHR9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5ncmlkLWxheW91dFxuY2F0ZWdvcnk6IExheW91dC9HcmlkXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuIC0gZ3JpZFxuIC0gcmVzcG9uc2l2ZVxuIC0gZmxleGJveFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgZ3JpZCBsYXlvdXQgc3lzdGVtIGJhc2VkIG9uIGZsZXhib3guIEl0IHByb3ZpZGVzIHNpemluZyB2YXJpYW50cyB0byBzaXplIG9uIGRpZmZlcmVudCBwZXJjZW50YWdlcy5cblxuXG4jIyBQZXJjZW50YWdlIGJhc2VkIHNpemluZ1xuXG5UaGUgZWFzaWVzdCB1c2UgY2FzZSBpcyB0byB1c2Ugc2ltcGxlIGAuaXRlbSAtdzFgLCBgLml0ZW0gLXcxLTJgLCBgLml0ZW0gLXcxLTNgLCBgLml0ZW0gLXcxLTRgIGZvciBhIHBlcmNlbnRhZ2UgYmFzZWQgc2lkZS1ieS1zaWRlIHJlbmRlcmluZy5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0XG5cdGRpdi5pdGVtLi13MVxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MVxuXHRkaXYuaXRlbS4tdzEtMiBcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMlxuXHRkaXYuaXRlbS4tdzEtMlxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS0yXG5cdGRpdi5pdGVtLi13MS0zXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTNcblx0ZGl2Lml0ZW0uLXcyLTNcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzItM1xuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS00XG5cdGRpdi5pdGVtLi13MS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTJcblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtNFxuYGBgXG5cbiMjIExheW91dHMgb24gZGlmZmVyZW50IGRldmljZXNcblxuVGhlIGJyZWFrcG9pbnRzIGZvciBkaWZmZXJlbnQgc2NyZWVuIHNpemVzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIGdsb2JhbCBzZXR0aW5ncyBgdGhlbWUuc2V0dGluZ3MuYnJlYWtwb2ludHNgIGFuZCBjYW4gYmUgb3ZlcndyaXR0ZW4gaW4gYHRoZW1lLmNvbXBvbmVudHMuZ3JpZC1sYXlvdXQuYnJlYWtwb2ludHNgLlxuVGhlIGRlZmF1bHQgc2V0dGluZ3MgZGVmaW5lIGJyZWFrcG9pbnRzIHdpdGggbGFiZWxzOiBgLi1zbWFsbC1YLVhgLCBgLi1tZWRpdW0tWC1YYCwgYC4tbGFyZ2UtWC1YYC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0XG5cdGRpdi5pdGVtLi13MS4tc21hbGwtMS0zLi1tZWRpdW0tMS0yLi1sYXJnZS0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEgLXNtYWxsLTEtMyAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5cdGRpdi5pdGVtLi13MS4tc21hbGwtMS0zLi1tZWRpdW0tMS0yLi1sYXJnZS0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEgLXNtYWxsLTEtMyAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5cdGRpdi5pdGVtLi13MS0yLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS0yIC1zbWFsbC0xLTMgLW1lZGl1bS0xLTIgLWxhcmdlLTEtNFxuXHRkaXYuaXRlbS4tdzEtMi4tc21hbGwtMS4tbWVkaXVtLTEtMi4tbGFyZ2UtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTIgLXNtYWxsLTEgLW1lZGl1bS0xLTIgLWxhcmdlLTEtNFxuYGBgXG5cblxuIyMgR3V0dGVyXG5cbklmIHlvdSBuZWVkIGEgc3BhY2luZyBiZXR3ZWVuIHRoZSBjb2x1bW5zIGFkZCB0aGUgYC1ndXR0ZXJgIHZhcmlhbnQuXG5UaGUgc2l6ZSBvZiB0aGUgZ3V0dGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgYGdyaWQtZ3V0dGVyYHZhcmlhYmxlLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXQuLWd1dHRlclxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wgLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sIC13MS00XG5cdGRpdi5pdGVtLi13MS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbCAtdzEtMlxuYGBgXG5cblxuIyMgUmV2ZXJzZSBvcmRlclxuXG5UbyByZXZlcnNlIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgY29sdW1ucyBhcmUgZGlzcGxheWVkLCB5b3UgY2FuIGFkZCB0aGUgbW9kaWZpZXIgY2xhc3MgYC4tcmV2ZXJzZWAgdG8geW91ciB0YWJsZS1ncmlkLlxuVGhlIGNvbHVtbnMgd2lsbCBiZSBpbiBET00gb3JkZXIgd2hlbiB2aWV3cG9ydCBzd2l0Y2hlcyB0byBzbWFsbCBsYXlvdXQuXG5cbmBgYGphZGVcbmRpdi5ncmlkLWxheW91dC4tcmV2ZXJzZVxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBGaXJzdCBjb2x1bW4gaW4gRE9NXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIFNlY29uZCBjb2x1bW4gaW4gRE9NXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIFRoaXJkIGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgRm91cnRoIGNvbHVtbiBpbiBET01cbmBgYFxuXG4jIyBWZXJ0aWNhbCBjZW50ZXJpbmdcblxuWW91IGNhbiB2ZXJ0aWNhbCBjZW50ZXIgd2l0aCB0aGUgaGVscCBvZiB0aGUgYGZsZXgtbGF5b3V0YCBjb21wb25lbnQuXG5cbmBgYGphZGVcbmRpdi5ncmlkLWxheW91dC5mbGV4LWxheW91dFxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBBIGNvbHVtbiB3aXRoIGEgbG90IG9mIGNvbnRlbnQgdGhhdCBzaG91bGQgd3JhcCBvbiBmaXhlZCBzaXplLlxuXHRkaXYuaXRlbS4tYm90dG9tXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGJvdHRvbVxuXHRkaXYuaXRlbS4tY2VudGVyXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNlbnRlclxuXHRkaXYuaXRlbS4tc3RyZXRjaFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpIHN0cmV0Y2hcbmBgYFxuXG4qL1xuXG5cblxuLmdyaWQtbGF5b3V0IHtcblxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5ncmlkLWxheW91dDtcblx0YnJlYWtwb2ludHMgPSB0aGVtZS5zZXR0aW5ncy5icmVha3BvaW50cztcblxuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LXdyYXA6IHdyYXA7XG5cblx0Ji4tZ3V0dGVyIHtcblxuXHRcdG1hcmdpbjogKCAtKCBjb25mLmd1dHRlclsxXSAvIDIgKSApICggLSggY29uZi5ndXR0ZXJbMF0gLyAyICkgKTtcblxuXHRcdD4gLml0ZW0ge1xuXHRcdFx0cGFkZGluZzogKCBjb25mLmd1dHRlclsxXSAvIDIgKSAoIGNvbmYuZ3V0dGVyWzBdIC8gMiApO1xuXHRcdH1cblx0fVxuXG5cdCYuLXJldmVyc2Uge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcblx0fVxuXG5cdD4gLml0ZW0ge1xuXG5cdFx0Zm9yIG5hbWUsIHBlcmMgaW4gY29uZi5zaXplcyB7XG5cdFx0XHQmLi13e25hbWV9IHtcblx0XHRcdFx0ZmxleDogMCAwIHBlcmM7XG5cdFx0XHRcdG1heC13aWR0aDogcGVyYzsgLy8gaWUgZml4XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0KiBHZW5lcmF0ZSBhbGwgbWVkaWEgYnJlYWtwb2ludHMgYmFzZWQgb24gdGhlIGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuXHRcdCovXG5cdFx0Zm9yIGJyZWFrbmFtZSwgYnJlYWt3aWR0aCBpbiBicmVha3BvaW50cyB7XG5cblx0XHRcdEBtZWRpYSBhbGwgYW5kICggbWluLXdpZHRoOiBicmVha3dpZHRoICkge1xuXG5cdFx0XHRcdGZvciBuYW1lLCBwZXJjIGluIGNvbmYuc2l6ZXMge1xuXHRcdFx0XHRcdCYuLXticmVha25hbWV9LXtuYW1lfSB7XG5cdFx0XHRcdFx0XHRmbGV4OiAwIDAgcGVyYztcblx0XHRcdFx0XHRcdG1heC13aWR0aDogcGVyYzsgLy8gaWUgZml4XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5tYXgtd2lkdGgtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L1BhZ2VcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSByZXNwb25zaXZlXG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBjb21wb25lbnQgd2lsbCBsaW1pdCBpdHMgY29udGVudCB0byBhIG1heGltdW0gd2lkdGguIEZvcnRoZXJtb3JlIGl0IGNhbiBjZW50ZXIgaXRzIGNvbnRlbnQuXG5Vc2VmdWxsIGZvciBwYWdlIGNvbnRlbnQgdGhhdCBzaG91bGQgbm90IHNwYW4gdGhlIGZ1bGwgd2lkdGguXG5cblxuIyMgUGVyY2VudGFnZSBiYXNlZCBzaXppbmdcblxuKi9cblxuXG5cbi5tYXgtd2lkdGgtbGF5b3V0IHtcblxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5tYXgtd2lkdGgtbGF5b3V0O1xuXHRicmVha3BvaW50cyA9IHRoZW1lLnNldHRpbmdzLmJyZWFrcG9pbnRzO1xuXG5cdC8qKlxuXHQqIEdlbmVyYXRlIGFsbCBtZWRpYSBicmVha3BvaW50cyBiYXNlZCBvbiB0aGUgYnJlYWtwb2ludHMgdmFyaWFibGUuXG5cdCovXG5cdGZvciBicmVha25hbWUsIG1heHdpZHRoIGluIGNvbmYge1xuXG5cdFx0Ly8gY2hlY2sgaWYgY29ycmVzcG9uZGluZyBicmVha3BvaW50IGV4aXN0c1xuXHRcdGJyZWFrd2lkdGggPSBicmVha3BvaW50c1sgYnJlYWtuYW1lIF1cblx0XHRpZiggYnJlYWt3aWR0aCApIHtcblxuXHRcdFx0QG1lZGlhIGFsbCBhbmQgKCBtaW4td2lkdGg6IGJyZWFrd2lkdGggKSB7XG5cblx0XHRcdFx0bWF4LXdpZHRoOiBtYXh3aWR0aDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQmLi1jZW50ZXIge1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdG1hcmdpbi1yaWdodDogYXV0bztcdFxuXHR9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5zbGlkZS1vdmVybGF5XG5jYXRlZ29yeTogT3ZlcmxheS9TbGlkZVxudGFnOlxuIC0gcm9sbG92ZXJcbiAtIHNsaWRlXG4gLSBvdmVybGF5XG4tLS1cblxuUm9sbG92ZXIgY29tcG9uZW50IC0gY29udGVudCByb2xsb3ZlciByb2xscyBpbiAtIGRlZmF1bHQgZnJvbSBib3R0b21cblxuVHJpZ2dlciB3aXRoIG1vdXNlcm92ZXIgYnkgYWRkaW5nIGAuLWhvdmVyYCB2YXJpYW50XG5cblRyaWdnZXIgd2l0aCBqcyBieSBhZGRpbmcgYC4tc2hvd2AgdmFyaWFudFxuXG5gYGBqYWRlXG5kaXYuc2xpZGUtb3ZlcmxheS4taG92ZXJcbiAgICBkaXYgU29tZSBtYWluIGNvbnRlbnRcbiAgICBkaXYucm9sbG92ZXIgUm9sbG92ZXIgY29udGVudFxuYGBgXG5cblJvbGxvdmVyIGNvbXBvbmVudCB2YXJpYW50IC1sZWZ0XG5gYGBqYWRlXG5kaXYuc2xpZGUtb3ZlcmxheS4tbGVmdC4taG92ZXJcbiAgICBkaXYgU29tZSBtYWluIGNvbnRlbnRcbiAgICBkaXYucm9sbG92ZXIgUm9sbG92ZXIgY29udGVudFxuYGBgXG5cblJvbGxvdmVyIGNvbXBvbmVudCB2YXJpYW50IC1yaWdodFxuYGBgamFkZVxuZGl2LnNsaWRlLW92ZXJsYXkuLXJpZ2h0Li1ob3ZlclxuICAgIGRpdiBTb21lIG1haW4gY29udGVudFxuICAgIGRpdi5yb2xsb3ZlciBSb2xsb3ZlciBjb250ZW50XG5gYGBcblxuUm9sbG92ZXIgY29tcG9uZW50IHZhcmlhbnQgLXRvcFxuYGBgamFkZVxuZGl2LnNsaWRlLW92ZXJsYXkuLXRvcC4taG92ZXJcbiAgICBkaXYgU29tZSBtYWluIGNvbnRlbnRcbiAgICBkaXYucm9sbG92ZXIgUm9sbG92ZXIgY29udGVudFxuYGBgXG5cblJvbGxvdmVyIGNvbXBvbmVudCB2YXJpYW50IC10b3Agd2l0aCBqcyB0cmlnZ2VyXG5gYGBqYWRlXG5kaXYuc2xpZGUtb3ZlcmxheS4tdG9wLi1zaG93XG4gICAgZGl2IFNvbWUgbWFpbiBjb250ZW50XG4gICAgZGl2LnJvbGxvdmVyIFJvbGxvdmVyIGNvbnRlbnRcbmBgYFxuKi9cbi5zbGlkZS1vdmVybGF5IHtcblx0XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICBjb25mID0gdGhlbWUuY29tcG9uZW50cy5zbGlkZS1vdmVybGF5O1xuXG4gICAgPiAucm9sbG92ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoIDAsIDEwMCUgKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIGNvbmYudHJhbnMtZHVyYXRpb24gZWFzZTtcbiAgICB9XG5cbiAgICAmLi1sZWZ0IHtcbiAgICAgICAgPiAucm9sbG92ZXJ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSggLTEwMCUsIDAgKTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLi1yaWdodCB7XG4gICAgICAgID4gLnJvbGxvdmVye1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoIDEwMCUsIDAgKTtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi4tdG9wIHtcbiAgICAgICAgPiAucm9sbG92ZXJ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSggMCwgLTEwMCUgKTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuLXNob3cgPiAucm9sbG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSggMCwgMCApO1xuICAgIH1cblxuICAgIFxuICAgICYuLWhvdmVyOmhvdmVyID4gLnJvbGxvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoIDAsIDAgKTtcbiAgICB9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5jb250cm9sLXJlc3BvbnNpdmVcbmNhdGVnb3J5OiBSZXNwb25zaXZlL0NvbnRyb2xcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbiAtIGRpc3BsYXlcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5Db250cm9scyB0aGUgZGlzcGxheSBvZiBhbiBlbGVtZW50IGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBicmVha3BvaW50XG5cbiMjIEhpZGVcblxuYC4taGlkZS1tZWRpdW1gIGhpZGVzIGFuIGVsZW1lbnQgYXMgbG9uZyBhcyB0aGUgc2NyZWVuIGlzIHdpZGVyIHRoYW4gdGhlIGJyZWFrcG9pbnQgYG1lZGl1bWAuXG5cbmBgYGphZGVcbmRpdi5jb250cm9sLXJlc3BvbnNpdmUuLWhpZGUtbWVkaXVtIE9ubHkgc2hvd24gd2hlbiB0aGUgc2NyZWVuIGlzIHdpZGVyIHRoYW4gdGhlIGJyZWFrcG9pbnQgbWVkaXVtXG5gYGBcblxuIyMgU2hvd1xuXG5gLi1zaG93LW1lZGl1bWAgc2hvdyBhbiBlbGVtZW50IGFzIGxvbmcgYXMgdGhlIHNjcmVlbiBpcyBuYXJyb3dlciB0aGFuIHRoZSBicmVha3BvaW50IGBtZWRpdW1gLlxuXG5gYGBqYWRlXG5kaXYuY29udHJvbC1yZXNwb25zaXZlLi1zaG93LW1lZGl1bSBPbmx5IHNob3duIHdoZW4gdGhlIHNjcmVlbiBpcyBuYXJyb3dlciB0aGFuIHRoZSBicmVha3BvaW50IGBtZWRpdW1gXG5gYGBcblxuKi9cblxuXG4uY29udHJvbC1yZXNwb25zaXZlIHtcblxuXHRicmVha3BvaW50cyA9IHRoZW1lLnNldHRpbmdzLmJyZWFrcG9pbnRzO1xuXG5cdGZvciBicmVha25hbWUsIGJyZWFrd2lkdGggaW4gYnJlYWtwb2ludHMge1xuXHRcdCYuLWhpZGUteyBicmVha25hbWUgfSB7XG5cdFx0XHRAbWVkaWEgYWxsIGFuZCAoIG1heC13aWR0aDogYnJlYWt3aWR0aCApIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ji4tc2hvdy17IGJyZWFrbmFtZSB9IHtcblx0XHRcdEBtZWRpYSBhbGwgYW5kICggbWluLXdpZHRoOiBicmVha3dpZHRoICkge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSIsIi5oaWRlLXJlc3BvbnNpdmUge1xuXG5cdGJyZWFrcG9pbnRzID0gdGhlbWUuc2V0dGluZ3MuYnJlYWtwb2ludHM7XG5cblx0Zm9yIGJyZWFrbmFtZSwgYnJlYWt3aWR0aCBpbiBicmVha3BvaW50cyB7XG5cdFx0Ji4teyBicmVha25hbWUgfSB7XG5cdFx0XHRAbWVkaWEgYWxsIGFuZCAoIG1heC13aWR0aDogYnJlYWt3aWR0aCApIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmltYWdlLXJlc3BvbnNpdmVcbmNhdGVnb3J5OiBSZXNwb25zaXZlL0ltYWdlXG50YWc6XG4gLSByZXNwb25zaXZlXG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBjbGFzcyBtYWtlcyB0aGUgaW1hZ2Ugc2NhbGluZyB0byBpdHMgbWF4IHdpZHRoLlxuXG5gYGBqYWRlXG5pbWcuaW1hZ2UtcmVzcG9uc2l2ZShzcmM9J2h0dHA6Ly93d3cuYnl1aS5lZHUvaW1hZ2VzL2FncmljdWx0dXJlLWxpZmUtc2NpZW5jZXMvZmxvd2VyLmpwZycpXG5gYGBcblxuIyMgVmFyaWFudHNcblxuYC4tZnVsbGAgZm9yY2VzIHRoZSBwaWN0dXJlIHRvIHNwYW4gdG8gMTAwJSBvZiB0aGUgcGFyZW50XG5cbmBgYGphZGVcbmltZy5pbWFnZS1yZXNwb25zaXZlLi1mdWxsKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbmBgYFxuKi9cblxuLmltYWdlLXJlc3BvbnNpdmUge1xuXHRtYXgtd2lkdGg6IDEwMCU7XG5cdGhlaWdodDogYXV0bztcblx0ZGlzcGxheTogYmxvY2s7XG5cblx0Ji4tZnVsbHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxuXG5cdCYuLWluc2V0IHtcblx0XHRtYXgtaGVpZ2h0OiAxMDAlO1x0XG5cdH1cbn1cbiIsIi8qIVxuLS0tXG5uYW1lOiAubWVkaWEtcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IFJlc3BvbnNpdmUvTWVkaWFcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5gLm1lZGlhLXJlc3BvbnNpdmVgIC0gVGhpcyBtYWtlcyBhIHRoZSBgLm1lZGlhLXJlc3BvbnNpdmVgIGRpdiBhIGNvbnRhaW5lciBmb3IgYW55IG1lZGlhIGVsZW1lbnQgKGlmcmFtZSwgdmlkZW8sIC4uLiApIHRoYXQgcmVzcG9uc2l2ZSBzY2FsZXMgd2l0aCBhIGZpeCByYXRpby5cblRoZSBtZWRpYSBlbGVtZW50ICggY2hpbGQgKSBuZWVkcyB0aGUgY2xhc3MgYC5tZWRpYWAgdG8gZnVsbHkgZmlsbCBvdXQgdGhlIHBhcmVudHMgc2l6ZS5cblxuVGhlIGAubWVkaWEtcmVzcG9uc2l2ZWAgY29tcG9uZW50IGhhcyB0byBwcmVkZWZpbmVkIG1vZGlmaWVyczogYC4tbWVkaWEtNC0zYCwgYC4tbWVkaWEtMTYtOWAgdGhhdCBkZWZpbmUgYSBmaXggcmF0aW8uXG5cbmBgYGphZGVcbmRpdi5tZWRpYS1yZXNwb25zaXZlLi1tZWRpYS0xNi05XG5cdGlmcmFtZS5tZWRpYShzcmM9XCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9UQ2Q2UGZ4T3kwWVwiKVxuYGBgXG5cbmBgYGphZGVcbmRpdi5tZWRpYS1yZXNwb25zaXZlLi1tZWRpYS00LTNcblx0aWZyYW1lLm1lZGlhKHNyYz1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1RDZDZQZnhPeTBZXCIpXG5gYGBcblxuKi9cbi5tZWRpYS1yZXNwb25zaXZlIHtcblxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5tZWRpYS1yZXNwb25zaXZlO1xuXG5cdHdpZHRoOiAxMDAlO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHBhZGRpbmctYm90dG9tOiB2YWx1ZXMoIGNvbmYucmF0aW9zIClbMF07XG5cblx0Zm9yIG5hbWUsIHZhbHVlIGluIGNvbmYucmF0aW9zIHtcblx0XHQmLi1tZWRpYS17bmFtZX0ge1xuXHRcdFx0cGFkZGluZy1ib3R0b206IHZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdD4gLm1lZGlhIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHR9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5vdmVyZmxvdy10ZXh0XG5jYXRlZ29yeTogVGV4dFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSB0ZXh0XG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBjb21wb25lbnQgY3V0cyB0aGUgdGV4dCBvbiBhIGdpdmVuIGhlaWdodCBhbmQgYWRkcyBhIGZhZGVvdXQgZWZmZWN0LlxuVGhpcyBpcyB1c2VmdWxsIGZvciB0ZXh0IGNvbnRhaW5lcnMgdGhhdCBoYXZlIG1vcmUgY29udGVudCB0aGFuIHNwYWNlLlxuXG5cbmBgYGphZGVcbmRpdi5vdmVyZmxvdy10ZXh0KHN0eWxlPVwid2lkdGg6IDIwMHB4O2hlaWdodDogNzBweFwiKSBUaGlzIGlzIGEgdmVyeSBsb25nIHRleHQgdGhhdCBpcyByd2FwZWQgYW5kIGN1dCBhdCB0aGUgZW5kLlxuYGBgXG4qL1xuXG4ub3ZlcmZsb3ctdGV4dCB7XG5cblx0Y29uZiA9IHRoZW1lLmNvbXBvbmVudHMub3ZlcmZsb3ctdGV4dDtcblxuXHRvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQmOmFmdGVyIHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRib3R0b206IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0bGVmdDogMDtcblx0XHRoZWlnaHQ6IGNvbmYuaGVpZ2h0O1xuXHRcdGJhY2tncm91bmQ6IGNvbmYuZ3JhZGllbnQ7XG4gICAgfVxufVxuXG5cbiIsIi8qIVxuLS0tXG5uYW1lOiAudGV4dC1zdHlsZVxuY2F0ZWdvcnk6IFRleHRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gdGV4dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgdGV4dCBzdHlsaW5nIGNvbXBvbmVudCBmb3IgZGlmZmVyZW50IHRleHQgc3R5bGVzXG5cbiMjIERlZmF1bHQgaGVhZGluZ1xuXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZSBEZWZhdWx0IGhlYWRpbmdcbmBgYFxuXG4jIyBIMVxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWgxIFRoZSBoMSBoZWFkZXJcblxuYGBgXG5cbiMjIEgyXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4taDIgVGhlIGgyIGhlYWRlclxuYGBgXG5cbiMjIEgzXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4taDMgVGhlIGgzIGhlYWRlclxuYGBgXG5cbiMjIEJvbGRcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1ib2xkIEJvbGQgdGV4dFxuYGBgXG5cbiMjIEFsaWduIGNlbnRlclxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWNlbnRlciBDZW50ZXJlZCB0ZXh0XG5gYGBcblxuIyMgQWxpZ24gcmlnaHRcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1yaWdodCBSaWdodCBhbGlnbmVkIHRleHRcbmBgYFxuXG4qL1xuXG5cblxuLnRleHQtc3R5bGUge1xuXG5cdGZvciBuYW1lLCB2YWx1ZSBpbiB0aGVtZS5jb21wb25lbnRzLnRleHQtc3R5bGUge1xuXHRcblx0XHRcblx0XHQmLi17bmFtZX0ge1xuXHRcdFx0e3ZhbHVlfVxuXHRcdH1cbiAgICAgICAgXG5cdH1cbn1cblxuXG4iLCIuY29sbGFwc2UtdWkge1xuXG5cdD4gLmNvbnRlbnQge1xuXG5cdFx0Ji4tdHJhbnNpdGlvbiB7XG5cdFx0XHR0cmFuc2l0aW9uOiBoZWlnaHQgdGhlbWUuc2V0dGluZ3MudHJhbnNpdGlvbi1kdXJhdGlvbiBlYXNlO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdGhlaWdodDogMDtcblx0XHR9XG5cdH1cblxuXHQmLi1jbG9zZSB7XG5cdFx0PiAuY29udGVudCB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdC5jb2xsYXBzZS1pY29uIHtcblx0XHRcdHRyYW5zZm9ybTogcm90YXRlKCA5MGRlZyApO1xuXHRcdH1cblx0fVxuXG5cdC5jb2xsYXBzZS1pY29uIHtcblx0XHR0cmFuc2l0aW9uOiBhbGwgdGhlbWUuc2V0dGluZ3MudHJhbnNpdGlvbi1kdXJhdGlvbiBlYXNlO1xuXHR9XG59IiwiYSB7XG4gICAgY29sb3I6IHRoZW1lLmNvbG9ycy50ZXh0XG4gICAgY3Vyc29yOiBwb2ludGVyXG5cbiAgICBib3JkZXItYm90dG9tOiByZW0oIDJweCApIHNvbGlkIHRoZW1lLmNvbG9ycy5hY3Rpb25cblxuICAgICYuLXVuZGVjb3JhdGVkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMFxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdGhlbWUuY29sb3JzLmFjdGlvblxuICAgIH1cbn0iLCIuYnV0dG9uLXN0eWxlIHtcbiAgICBoZWlnaHQ6IHJlbSggNDVweCApO1xuICAgIG1pbi13aWR0aDogcmVtKCAxMjBweCApO1xuXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgYm9yZGVyOiAycHggc29saWQgdGhlbWUuY29sb3JzLmFjdGlvblxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lLmNvbG9ycy5hY3Rpb25cbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cbn0iLCIuY2FyZC1pbWFnZSB7XG5cdGhlaWdodDogcmVtKCAyMDBweCApO1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG59IiwiLmNhcmQtbGluayB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDAlLCByZ2JhKCAyNTUsIDI1NSwgMjU1LCAxKSAyMCUpXG59IiwiLmNoYXB0ZXItZWxlbWVudCB7XG4gICAgaGVpZ2h0OiByZW0oIDgwcHggKTtcblxuICAgIHBhZGRpbmctbGVmdDogcmVtKCA0MHB4IClcbiAgICBwYWRkaW5nLXJpZ2h0OiByZW0oIDQwcHggKVxuICAgIGN1cnNvcjogcG9pbnRlclxuICAgIFxuICAgIC5zdGF0ZS1pbmRpY2F0b3Ige1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zc1xuICAgIH1cblxuICAgICYub3BlbiAuc3RhdGUtaW5kaWNhdG9yIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVaKCAxODBkZWcgKVxuICAgIH1cbn0iLCIuYm9vbGVhbi1zbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDQ2cHg7XG4gIGhlaWdodDogMjRweDtcbn1cblxuLyogSGlkZSBkZWZhdWx0IEhUTUwgY2hlY2tib3ggKi9cbi5ib29sZWFuLXNsaWRlciBpbnB1dCB7ZGlzcGxheTpub25lO31cblxuLyogVGhlIHNsaWRlciAqL1xuLnNsaWRlci1jb250cm9sIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiAuNHM7XG4gIHRyYW5zaXRpb246IC40cztcbn1cblxuLnNsaWRlci1jb250cm9sOmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29udGVudDogXCJcIjtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbGVmdDogMnB4O1xuICBib3R0b206IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogLjRzO1xuICB0cmFuc2l0aW9uOiAuNHM7XG59XG5cbmlucHV0OmNoZWNrZWQgKyAuc2xpZGVyLWNvbnRyb2wge1xuICAvL2JhY2tncm91bmQtY29sb3I6ICMyMTk2RjM7XG59XG5cbmlucHV0OmZvY3VzICsgLnNsaWRlci1jb250cm9sIHtcbiAgLy9ib3gtc2hhZG93OiAwIDAgMXB4ICMyMTk2RjM7XG59XG5cbmlucHV0OmNoZWNrZWQgKyAuc2xpZGVyLWNvbnRyb2w6YmVmb3JlIHtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjJweCk7XG4gIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjJweCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMnB4KTtcbn1cblxuLyogUm91bmRlZCBzbGlkZXJzICovXG4uc2xpZGVyLWNvbnRyb2wucm91bmQge1xuICBib3JkZXItcmFkaXVzOiAzNHB4O1xufVxuXG4uc2xpZGVyLWNvbnRyb2wucm91bmQ6YmVmb3JlIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufSIsIi5jb3B5cmlnaHQgeyBcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMTAwO1xuICAgIHJpZ2h0OiAyMHB4O1xuICAgIHRvcDogNDM1cHg7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDAuODtcbiAgICB0ZXh0LXNoYWRvdzogMHB4IDBweCAxMnB4ICMzMzM7XG4gICAgZm9udC1zaXplOiAxNHB4O1xufSIsIlxuICAvKiBBZGQgdGhpcyBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQgdGhhdCBuZWVkcyBhIHRvb2x0aXAgKi9cbiAgW2RhdGEtdG9vbHRpcF0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBcbiAgLyogSGlkZSB0aGUgdG9vbHRpcCBjb250ZW50IGJ5IGRlZmF1bHQgKi9cbiAgW2RhdGEtdG9vbHRpcF06YmVmb3JlLFxuICBbZGF0YS10b29sdGlwXTphZnRlciB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIC1tcy1maWx0ZXI6IFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MClcIjtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG4gIFxuICAvKiBQb3NpdGlvbiB0b29sdGlwIGFib3ZlIHRoZSBlbGVtZW50ICovXG4gIFtkYXRhLXRvb2x0aXBdOmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMjRweDtcbiAgICByaWdodDogMnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICBwYWRkaW5nOiA3cHg7XG4gICAgd2lkdGg6IDE2MHB4O1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMCwgMCUsIDIwJSwgMC45KTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtdG9vbHRpcCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICB9XG4gIFxuICAvKiBUcmlhbmdsZSBoYWNrIHRvIG1ha2UgdG9vbHRpcCBsb29rIGxpa2UgYSBzcGVlY2ggYnViYmxlICovXG4gIFtkYXRhLXRvb2x0aXBdOmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxOXB4O1xuICAgIGxlZnQ6IDdweDtcbiAgICB3aWR0aDogMDtcbiAgICBib3JkZXItdG9wOiA1cHggc29saWQgIzAwMDtcbiAgICBib3JkZXItdG9wOiA1cHggc29saWQgaHNsYSgwLCAwJSwgMjAlLCAwLjkpO1xuICAgIGJvcmRlci1yaWdodDogNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgY29udGVudDogXCIgXCI7XG4gICAgZm9udC1zaXplOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gIH1cbiAgXG4gIC8qIFNob3cgdG9vbHRpcCBjb250ZW50IG9uIGhvdmVyICovXG4gIFtkYXRhLXRvb2x0aXBdOmhvdmVyOmJlZm9yZSxcbiAgW2RhdGEtdG9vbHRpcF06aG92ZXI6YWZ0ZXIge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgLW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApXCI7XG4gICAgb3BhY2l0eTogMTtcbiAgfSIsIi5kaWFsb2ctdHJpZ2dlciB7XG4gICAgcG9zaXRpb246IGZpeGVkXG4gICAgei1pbmRleDogOTk5OTlcblxuICAgIHJpZ2h0OiByZW0oIDIwcHggKVxuICAgIGJvdHRvbTogcmVtKCAyMHB4IClcblxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lLmNvbG9ycy5hY3Rpb25cbiAgICBjb2xvcjogd2hpdGVcblxuICAgIGhlaWdodDogcmVtKCA0OHB4IClcbiAgICBib3JkZXItcmFkaXVzOiByZW0oIDI0cHggKVxuXG4gICAgYm94LXNoYWRvdzogMCByZW0oOHB4KSByZW0oMTJweCkgcmdiYSggMCwgMCwgMCwgMC4zIClcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCB0aGVtZS5jb2xvcnMuYWN0aW9uLCA1IClcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBsaWdodGVuKCB0aGVtZS5jb2xvcnMuYWN0aW9uLCA1IClcblxuICAgICAgICBib3gtc2hhZG93OiAwIHJlbSgxMHB4KSByZW0oMTVweCkgcmdiYSggMCwgMCwgMCwgMC4zIClcbiAgICB9XG5cbn0iLCIuZmlsdGVyLXRlcm0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlXG5cbiAgICAudGVybS1pdGVtIHtcbiAgICAgICAgb3ZlcmZsb3c6aGlkZGVuXG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlXG4gICAgICAgICAgICBib3JkZXI6MFxuICAgICAgICB9XG4gICAgfVxufSIsIi5mdWxsLWhlaWdodCB7XG4gICAgaGVpZ2h0OiAxMDAlXG59IiwiLmdvYWwtaWNvbiB7XG4gICAgd2lkdGg6IHJlbSggOTNweCApXG4gICAgaGVpZ2h0OiByZW0oIDkzcHggKVxufSIsIi5oZWFkZXItaWNvbiB7XG4gICAgd2lkdGg6IHJlbSggNzBweCApO1xuICAgIGJvcmRlci1yaWdodDoxcHggc29saWQgdGhlbWUuY29sb3JzLmxpbmU7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2tcbiAgICBjb2xvcjogdGhlbWUuY29sb3JzLnRleHRcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdGhlbWUuY29sb3JzLmFjdGlvblxuICAgICAgICBjdXJzb3I6IHBvaW50ZXJcbiAgICB9XG59IiwiLmhlYWRlci1tZW51IHtcbiAgICBtaW4td2lkdGg6IHJlbSggMjcwcHggKVxuICAgIHBvc2l0aW9uIGZpeGVkXG5cbiAgICB0b3A6IHJlbSggNTVweCApXG4gICAgbGVmdDogcmVtKCA2MHB4IClcblxuICAgIHBhZGRpbmc6IHJlbSggMjBweCApIHJlbSggNDBweCApXG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMuYmVpZ2VcblxuICAgIGJvcmRlcjogcmVtKCAwLjVweCApIHNvbGlkIHJnYmEoMCwwLDAsMC4yNSlcbiAgICBib3gtc2hhZG93OiAwIHJlbSgzcHgpIHJlbSgyNHB4KSByZ2JhKCAwLDAsMCwwLjIpXG59IiwiLmhpZGRlbiB7XG4gICAgZGlzcGxheTpub25lO1xufVxuXG4udi1zdHJldGNoIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4uaC1zdHJldGNoIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmljb24tZG93biB7XG4gICAgcG9zaXRpb24gcmVsYXRpdmVcbiAgICB0b3A6IHJlbSggMnB4IClcbn0iLCIuaWNvbi10YXNrZGltZW5zaW9ucyB7XG5cbiAgICB3aWR0aDogcmVtKCAzOHB4IClcbiAgICBoZWlnaHQ6IHJlbSggMzVweCApXG5cbiAgICAub2Vrb25vbWllLFxuICAgIC5vZWtvbG9naWUsXG4gICAgLnNvemlhbGVzIHtcbiAgICAgICAgLy9kaXNwbGF5Om5vbmVcbiAgICAgICAgZmlsbDogI0U2REFDRDtcbiAgICB9XG5cbiAgICAmLi1zaG93LW9la29ub21pZSAub2Vrb25vbWllIHtcbiAgICAgICAgLy9kaXNwbGF5OmJsb2NrXG4gICAgICAgIGZpbGw6ICM4MDY3YjZcbiAgICB9XG4gICAgJi4tc2hvdy1vZWtvbG9naWUgLm9la29sb2dpZSB7XG4gICAgICAgIGZpbGw6ICM3NWQ2ZjRcbiAgICB9XG4gICAgJi4tc2hvdy1zb3ppYWxlcyAuc296aWFsZXMge1xuICAgICAgICBmaWxsOiAjZWQ1ZjdjXG4gICAgfVxufVxuXG4jdGFza2RpeG1lbnNpb25zIHtcbiAgICAub2Vrb25vbWllIHtcbiAgICAgICAgZGlzcGxheTpub25lXG4gICAgfVxufSIsIi5pbnB1dC1zdHlsZSB7XG5cbiAgICAmLi1iYXNpYyB7XG4gICAgICAgIGJvcmRlcjogMFxuICAgICAgICBwYWRkaW5nOiByZW0oMnB4KSByZW0oIDE1cHggKSByZW0oIDVweCApXG4gICAgfVxuXG4gICAgJi4tbWF4d2lkdGgge1xuICAgICAgICB3aWR0aDogMTAwJVxuICAgIH1cbn0iLCIuZXh0ZW5kZWQtd2lkdGgtbGF5b3V0IHtcblxuICAgIG1heC13aWR0aDogcmVtKCA5OTZweCApXG5cbiAgICAmLi1jZW50ZXIge1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmZpeGVkLXBhZ2UtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L0ZpeGVkIFBhZ2VcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gcGFnZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgcGFnZSBsYXlvdXQgd2l0aCBhIGZpeGVkIGhlYWRlciBhbmQgb3B0aW9uYWwgc2lkZWJhcnMuXG5XaXRoIHRoZSBgLW1hcmdpbi17dG9wfGxlZnR8cmlnaHR9YCwgYC1tYXJnaW4te3RvcHxsZWZ0fHJpZ2h0fS1zbWFsbGAgdmFyaWFudHMgeW91IGNhbiBjb250cm9sIHRoZSBzcGFjaW5nLlxuSWYgdGhlIGNvbnRlbnQgZm9yIGV4YW1wbGUgbmVlZHMgYSBzcGFjaW5nIHRvd2FyZHMgdGhlIGhlYWRlciB1c2U6IGAuY29udGVudC4tbWFyZ2luLXRvcGAuXG5JZiB0aGUgc2lkZWJhciBzaG93IGJlIGJlbG93IHRoZSBoZWFkZXIgdXNlOiBgLnNpZGViYXIuLWxlZnQuLW1hcmdpbi10b3BgLlxuXG5cblRoZXJlIGFyZSB2YXJpYW50cyB0byByZXNpemUgdGhlIGhlYWRlciBhbmQgc2lkZWJhcnMgdG8gYSBzbWFsbGVyIHdpZHRoL2hlaWdodDogYC5oZWFkZXIuLXNtYWxsYCwgYC5zaWRlYmFyLi1zbWFsbGAuXG5JZiB5b3UgbmVlZCBhIHNwYWNpbmcgb24geW91ciBjb250ZW50IG9yIHNpZGViYXIgeW91IG5lZWQgdG8gYWRqdXN0IHRoYXQgbWFudWFsbHkgbGlrZSB0aGlzOlxuYGBgXG5kaXYuZml4ZWQtcGFnZS1sYXlvdXRcblx0ZGl2LmhlYWRlci4tc21hbGxcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlXCIpICBIZWFkZXJcblx0ZGl2LmNvbnRlbnQuLW1hcmdpbi10b3Atc21hbGwgQ29udGVudFxuXHRkaXYuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcC1zbWFsbC4tc21hbGxcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJoZWlnaHQ6MTAwJVwiKSAgTGVmdCBTaWRlYmFyXG5gYGBcblxuIyMgSGVhZGVyIHdpdGggc2lkZWJhcnNcblxuYGBgamFkZVxuZGl2LmZpeGVkLXBhZ2UtbGF5b3V0XG5cdGRpdi5oZWFkZXJcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlXCIpICBIZWFkZXJcblx0ZGl2LmNvbnRlbnQuLW1hcmdpbi10b3AgQ29udGVudFxuXHRkaXYuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpICBMZWZ0IFNpZGViYXJcblx0ZGl2LnNpZGViYXIuLXJpZ2h0XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgIFJpZ2h0IFNpZGViYXJcbmBgYFxuKi9cbi5maXhlZC1wYWdlLWxheW91dCB7XG5cblx0Y29uZiA9IHRoZW1lLmNvbXBvbmVudHMuZml4ZWQtcGFnZS1sYXlvdXQ7XG5cblx0PiAuY29udGVudCB7XG5cblx0XHRtaW4taGVpZ2h0OiBcImNhbGMoIDEwMHZoIC0gJXMpXCIgJSBjb25mLmhlYWRlci5kZWZhdWx0O1xuXG5cdH1cbn0iLCIuYW5zd2VyLXZpZXcge1xuICAgIFxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgICAgIC8vbWFyZ2luLWxlZnQ6IC0yM3B4O1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgLy9tYXJnaW4tbGVmdDogLTIzcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cblxuICAgIC50ZXh0IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHJlbSgyNXB4KTtcbiAgICAgICAgLy9kaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgIFxuICAgIH1cblxuICAgICYuLWNvcnJlY3Qge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmOWVlO1xuICAgICAgICBjb2xvcjogIzQ3ODgyZDtcbiAgICB9XG4gICAgJi4td3Jvbmcge1xuICAgICAgICBjb2xvcjogIzlCMjcyNztcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZjdmNztcbiAgICB9XG59IiwiLmRyYWctZHJvcCB7XG5cbiAgICAuZHJhZy1jb250YWluZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5LWNvbG9yO1xuICAgICAgICBcblxuICAgIH1cbiAgICBcbiAgICAuZHJhZy1ub2RlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkICM0NDQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbWF4LXdpZHRoOiA2MHB4O1xuXG4gICAgfVxuXG4gICAgLmRyb3Atbm9kZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICAuZHJvcC10YXJnZXQge1xuICAgICAgICBib3JkZXI6IDFweCBkYXNoZWQgIzQ0NDtcbiAgICAgICAgbWluLWhlaWdodDogNDVweDtcbiAgICAgICAgLy9kaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAvL3ZlcnRpY2FsLWFsaWduOiB0b3A7XG5cbiAgICAgICAgPi5kcmFnLW5vZGUge1xuICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59IiwiLmZlZWRiYWNrLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufSIsIlxuLmZlZWRiYWNrLXBhbmVsIHtcblx0bGluZS1oZWlnaHQ6IDI4cHg7XG5cblx0cGFkZGluZzogcmVtKDQwcHgpIHJlbSgzMHB4KSByZW0oMjBweCkgcmVtKDMwcHgpO1xuXHRcblx0bWFyZ2luOiByZW0oLTI0cHgpIDAgMCAwO1xuXG5cdCYuLWNvcnJlY3Qge1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICM0YmQyYTE7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI0UwRjVFRTtcblx0XHRjb2xvcjogIzRiZDJhMTtcblx0fVxuXHRcblx0Ji4td3Jvbmcge1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNkMjRiNGI7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI0Y1RTJFMjtcblx0XHRjb2xvcjogI2QyNGI0Yjtcblx0XHRcblx0fVxuXG59IiwiLmhvdHNwb3QtcG9pbnQge1xuXHRoZWlnaHQ6IDIwcHg7XG5cdHdpZHRoOiAyMHB4O1xuXHRib3JkZXItcmFkaXVzOiAxMnB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNjYpO1xuXHRtYXJnaW4tbGVmdDogLTEwcHg7XG5cdG1hcmdpbi10b3A6IC0xMHB4O1xufVxuXG4uaG90c3BvdC1yZWN0IHtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSggMCwgMCwgMCwgMC4yICk7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHRoZW1lLmNvbG9ycy50ZXh0LWludmVydGVkO1xufVxuIiwiLmxpbmstc3R5bGUge1xuICAgIFxuXG4gICAgJi4tdW5kZWNvcmF0ZWQge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgJi4tYWN0aXZlIHtcbiAgICAgICAgY29sb3I6IHRoZW1lLmNvbG9ycy5hY3Rpb25cbiAgICB9XG59IiwiLm1hdGVyaWFsLWNhcmQge1xuICAgIHdpZHRoOiByZW0oIDIxNXB4ICk7XG4gICAgaGVpZ2h0OiByZW0oIDI5MHB4ICk7XG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2tcbiAgICBvdmVyZmxvdzpoaWRkZW5cblxuICAgIGZvbnQtc2l6ZTogcmVtKCAxM3B4IClcbiAgICBsaW5lLWhlaWdodDogcmVtKCAxOHB4IClcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnM7XG5cbiAgICBpbWcge1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlclxuICAgICAgICB3aWR0aDogMTAwJVxuICAgICAgICBoZWlnaHQ6IHJlbSggMTM4cHggKVxuICAgIH0gICAgXG5cbiAgICA+IC5jb250ZW50LWNvbnRhaW5lciB7XG4gICAgICAgIHBvc2l0aW9uIHJlbGF0aXZlXG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzXG4gICAgICAgIHRvcDowXG5cbiAgICAgICAgJiA+IC5jb3B5IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMTQzcHg7XG4gICAgICAgICAgICByaWdodDogMnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi4taGFzY292ZXI6aG92ZXIgPiAuY29udGVudC1jb250YWluZXIgIHtcbiAgICAgICAgdG9wOiByZW0oIC0xMzhweCApXG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGN1cnNvciBwb2ludGVyXG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAycHggMjJweCByZ2JhKCAwLDAsMCwwLjE4KVxuXG4gICAgICAgID4gLmNvbnRlbnQtY29udGFpbmVyIHtcbiAgICAgICAgICAgIC8vcG9zaXRpb24gcmVsYXRpdmVcbiAgICAgICAgICAgIC8vdG9wOiByZW0oIC0xMzhweCApXG4gICAgICAgICAgICAvL3RyYW5zaXRpb246IHRvcCAwLjNzXG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1tZXRhIHtcbiAgICAgICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgICAgfVxuICAgICAgICAuY2FyZC1hY3Rpb24ge1xuICAgICAgICAgICAgZGlzcGxheTpibG9ja1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcmQtYWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTpub25lXG4gICAgfVxuXG4gICAgLmNhcmQtbWV0YSB7XG4gICAgfVxuXG4gICAgLmNhcmQtYWN0aW9uLFxuICAgIC5jYXJkLW1ldGEsXG4gICAgLmNhcmQtbWV0YSBhIHtcbiAgICAgICAgY29sb3I6IHRoZW1lLmNvbG9ycy50ZXh0LW1ldGEgIWltcG9ydGFudFxuICAgIH1cblxufSIsIi5tYXRlcmlhbC1zaWRlYmFyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lLmNvbG9ycy5iZWlnZVxuXG4gICAgd2lkdGg6IHJlbSggMjQwcHggKVxuICAgIHRvcDogcmVtKCAxcHggKSAhaW1wb3J0YW50XG5cbiAgICB6LWluZGV4OiAxMCAhaW1wb3J0YW50XG5cbiAgICBvdmVyZmxvdy14OiBoaWRkZW5cbiAgICBvdmVyZmxvdy15OiBzY3JvbGxcbiAgICBtYXJnaW4tYm90dG9tOiByZW0oIC0zMHB4IClcbn0iLCIubW9kYWwtYmFja2dyb3VuZCB7XG4gICAgcG9zaXRpb246IGZpeGVkXG4gICAgdG9wOiAwXG4gICAgYm90dG9tOiAwXG4gICAgbGVmdDogMFxuICAgIHJpZ2h0OiAwXG4gICAgei1pbmRleDogMTAwMDAwXG4gICAgXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjQpO1xufSIsIi5wYWdlLWZvb3RlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLmdyZWVuXG4gICAgY29sb3I6IHRoZW1lLmNvbG9ycy53aGl0ZVxuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlXG4gICAgei1pbmRleDoxMDAwMFxuXG4gICAgaGVpZ2h0OiByZW0oIDcwcHggKVxuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiB0aGVtZS5jb2xvcnMud2hpdGVcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5jb2xvcnMud2hpdGVcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYgaW1nIHtcbiAgICAgICAgaGVpZ2h0OiByZW0oIDQ4cHggKTtcbiAgICB9XG59IiwiLnBhZ2UtaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMuYm9keTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAwIDAgcmdiYSgwLDAsMCwwLjI1KTtcblxuICAgIGhlaWdodDogcmVtKCA3MHB4IClcblxuICAgIHotaW5kZXg6IDEwMDAwXG59IiwiLnByb2dyZXNzLWJhciB7XG5cbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoIHRvIHJpZ2h0LCB0aGVtZS5jb2xvcnMuZ3JlZW4gMCUsIHRoZW1lLmNvbG9ycy5ncmVlbiA1MCUsIHRoZW1lLmNvbG9ycy5iZWlnZSAwJSwgdGhlbWUuY29sb3JzLmJlaWdlIDEwMCUgKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDA7XG4gICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIGF1dG87XG5cbiAgICB3aWR0aDogcmVtKCA2MHB4IClcbiAgICBoZWlnaHQ6IHJlbSggMThweCApXG5cbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLXBvc2l0aW9uIDAuNXMgZWFzZVxuXG4gICAgYm9yZGVyLXJhZGl1czogcmVtKCAxOHB4LzIgKVxuXG4gICAgLnByb2dyZXNzIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLmdyZWVuXG4gICAgICAgIGhlaWdodDogcmVtKCAxOHB4IClcbiAgICAgICAgYm9yZGVyLXJhZGl1czogcmVtKCAxOHB4IC8gMiApXG5cbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICAgICAgbWluLXdpZHRoOiByZW0oIDE4cHggKVxuXG4gICAgfVxuXG4gICAgJi4tcDAgLnByb2dyZXNze1xuICAgICAgICB3aWR0aDogNSU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXAxMCAucHJvZ3Jlc3N7XG4gICAgICAgIHdpZHRoOiAxMCU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXAyMCAucHJvZ3Jlc3N7XG4gICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXAzMCAucHJvZ3Jlc3N7XG4gICAgICAgIHdpZHRoOiAzMCU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXA0MCAucHJvZ3Jlc3N7XG4gICAgICAgIHdpZHRoOiA0MCU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXA1MCAucHJvZ3Jlc3N7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXA2MCAucHJvZ3Jlc3N7XG4gICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXA3MCAucHJvZ3Jlc3N7XG4gICAgICAgIHdpZHRoOiA3MCU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXA4MCAucHJvZ3Jlc3N7XG4gICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXA5MCAucHJvZ3Jlc3N7XG4gICAgICAgIHdpZHRoOiA5MCU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwXG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwXG4gICAgfVxuICAgICYuLXAxMDAgLnByb2dyZXNze1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbn0iLCIuc3RhdGUtZGlhbG9nIHtcbiAgICBwb3NpdGlvbiBmaXhlZFxuICAgIHotaW5kZXg6IDEwMDEwMFxuXG4gICAgdG9wOiAwXG4gICAgYm90dG9tOiAwXG4gICAgcmlnaHQ6IDBcblxuICAgIHdpZHRoOiByZW0oIDUwMHB4IClcblxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIFxuICAgIGJveC1zaGFkb3c6IDAgMCByZW0oMTBweCkgMCByZ2JhKDAsMCwwLDAuMik7XG5cblxuICAgIC5kaWFsb2ctcGFydCB7XG4gICAgICAgIGhlaWdodDogNDA1cHhcblxuICAgICAgICBwYWRkaW5nOiByZW0oIDE0cHggKSByZW0oIDQwcHggKVxuXG4gICAgICAgICYuLWRhcmsge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLmJlaWdlXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGlhbG9nLWNsb3NlciB7XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICB0b3A6IHJlbSggMTRweCApXG4gICAgICAgIHJpZ2h0OiByZW0oIDE0cHggKVxuICAgIH1cblxufSIsIi5zd2FwLWltYWdlIHtcbiAgICBjdXJzb3I6cG9pbnRlclxuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrXG5cbiAgICAmLi1hY3RpdmUtbWluaSB7XG4gICAgICAgIC4tcGFzc2l2ZSB7XG4gICAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLi1hY3RpdmV7XG4gICAgICAgICAgICBkaXNwbGF5OmlubGluZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuLXBhc3NpdmUge1xuICAgICAgICBkaXNwbGF5OmlubGluZTtcbiAgICB9XG4gICAgLi1hY3RpdmUge1xuICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxufSIsIi50YXNrLWNoZWNrYm94IHtcbiAgICBhcHBlYXJhbmNlIG5vbmVcblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyAnXG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrXG4gICAgICAgIHdpZHRoOiByZW0oIDI0cHggKVxuICAgICAgICBoZWlnaHQ6IHJlbSggMjRweCApIFxuICAgICAgICBib3JkZXItcmFkaXVzOiByZW0oIDEycHggKVxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlXG4gICAgICAgIGJvcmRlcjogcmVtKDJweCkgc29saWQgdGhlbWUuY29sb3JzLmdyYXlcbiAgICAgICAgZm9udC1zaXplOiByZW0oIDIzcHggKVxuICAgICAgICBjdXJzb3I6cG9pbnRlclxuICAgIH1cblxuICAgICY6Y2hlY2tlZDpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7IHV0ZjgsIDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjAnIGhlaWdodD0nMjAnIHZpZXdCb3g9JzAgMCAyNCAyNCc+PHBhdGggZD0nTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeicgZmlsbD0nd2hpdGUnLz48L3N2Zz5cIik7XG4gICAgICAgIGNvbG9yOiB3aGl0ZSBcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLmdyZWVuO1xuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lLmNvbG9ycy5ncmVlblxuICAgIH1cbn0iLCIudGFzay1saXN0aXRlbSB7XG4gICAgcGFkZGluZzogcmVtKCAzMHB4ICkgcmVtKCA0MHB4IClcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMuYmVpZ2VcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdGhlbWUuY29sb3JzLndoaXRlXG59IiwiLnRlYXNlci1pbWFnZSB7XG5cdGhlaWdodDogcmVtKCA0MDBweCApO1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxNSUgNTAlO1xufSIsIi50aGVtYS1jYXJkIHtcbiAgICAvLyB3aWR0aDogcmVtKCAzMTJweCApO1xuICAgIGhlaWdodDogcmVtKCA0MDBweCApO1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLy8gZGlzcGxheTogaW5saW5lLWJsb2NrXG5cbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnNcblxuICAgICYgPiAuY29udGVudC13cmFwcGVyIHtcblxuXG4gICAgICAgICYgPiAuY29udGVudCB7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7IFxuICAgICAgICAgICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgaGVpZ2h0OiByZW0oIDM1NHB4ICk7XG4gICAgICAgICAgICB0b3A6IDBweDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRvcCAwLjNzOyBcblxuICAgICAgICB9XG4gICAgXG4gICAgfVxuXG5cbiAgICA+IC5saW5rIHtcbiAgICAgICAgaGVpZ2h0OiByZW0oIDU1cHggKTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgLy8gYm90dG9tOiAtNTVweDtcbiAgICAgICAgYm90dG9tOiAwcHg7XG4gICAgICAgIC8vdHJhbnNpdGlvbjogYm90dG9tIDAuM3M7XG4gICAgfVxuXG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yIHBvaW50ZXJcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDJweCAyMnB4IHJnYmEoIDAsMCwwLDAuMTgpXG5cbiAgICAgICAgPiAuY29udGVudCB7XG4gICAgICAgICAgICB0b3A6IHJlbSggLTIwMHB4ICk7XG4gICAgICAgIH1cbiAgICAgICAgPiAubGluayB7XG4gICAgICAgICAgICAvLyBib3R0b206IHJlbSggMHB4ICk7XG5cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5jb2xvcnMuYWN0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59IiwiLnRoZW1hLWltYWdlIHtcblx0aGVpZ2h0OiByZW0oIDQwMHB4ICk7XG5cdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDUwJSA0NSU7XG59Il19 */
