@charset "UTF-8";
/*
Also please follow this
Do your project have diferent charset languages to account with?
      - Yes -> follow https://projects.netcentric.biz/wiki/display/FRONTEND/CSS+-+Font+Normalization
      - No -> You can still use it, there are tons of advantages, but its create some extra css and layout rendering
*/
/*
  * Design spec:
  * https://www.figma.com/file/SR4rvQlNnCmPMrQ9WYaIqv/branch/TJqkFymq09wf8KwmY1WNcj/Volvo-AEM-Design-system?type=design&node-id=7-26&t=pAm916VRiqCOD2I1-0
*/
/**
 * z-indexes from lower to -> higher
 */
:root {
  --v-icon-size: 24px;
}

@media (min-width: 960px) {
  :root {
    --v-icon-size: 16px;
  }
}

.v-icon {
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}

.v-icon svg path {
  fill: currentColor;
}

.v-icon-sprite {
  pointer-events: none;
  position: absolute;
  max-height: 0;
  max-width: 0;
  overflow: hidden;
}

.v-icon--16 {
  display: none;
}

@media (min-width: 960px) {
  .v-icon--16 {
    display: inline;
  }
}

.v-icon--24 {
  display: inline;
  y: 0;
  /* stylelint-disable */
  /* stylelint-enable */
}

@media not all and (min-resolution: 0.001dpcm) {
  .v-icon--24 {
    -webkit-transform: translateY(-16px);
            transform: translateY(-16px);
  }
}

@supports (-webkit-touch-callout: none) {
  .v-icon--24 {
    -webkit-transform: translateY(-16px);
            transform: translateY(-16px);
  }
}

@media (min-width: 960px) {
  .v-icon--24 {
    display: none;
  }
}

/*doc
---
title: Pixel to em
name: nn-px-to-em
category: functions
---

Calculate the em with a given pixel with the given base font size
If you don't set a $base the $base-font-size is used as the context


## Live Template abbreviations
---
-ptu


## Parameters
---
@parameter $value = pixel based number (without unit)
@parameter $base = pixel based number (without unit)


## Dependencies
---
nn-strip-unit


## Example
---
```html_example
nn-px-to-em(5) // Output: 0.3125em
nn-px-to-em(5, 10) // Output: 0.5em
nn-px-to-em(5, 20) // Output: 0.25em
```
*/
/*doc
---
title: Pixel to rem
name: nn-px-to-rem
category: functions
---

Calculate the rem with a given pixel with the given base font size

In:  5px
Out: 0.3125rem


## Live Template abbreviations
---
-rem


## Parameters
---
@parameter $value = pixel based number (without unit)


## Dependencies
---
nn-strip-unit

## Example
---
```html_example
nn-px-to-rem(5) // Output 0.3125rem
```

*/
/*doc
---
title: Pixel to unit
name: px-to-unit
category: mixins
---

Set a property and value (pixel based without unit)

Calculates rem / em / % from given pixel and base (default base is the
base-font-size, 16px)
If rtl is true, this mixin handles all the direction stuff:
- Switching the values, when we have exactly 4 values
- Switching left and right in properties (padding and margin)


## Live Template abbreviations
---
-ptu (for em or % to pixel - with base parameter)
-rem (for rem to pixel - without base parameter)


## Parameters
---
@parameter $property = padding | margin | font-size | width | height
@parameter $value = Pixel based number - add px to keep the px for a value
@parameter $base = px based number, Default: 16px
@parameter $unit = Set unit: px | em | rem | percent


## Dependencies
---
abstract/functions/swap-left-right
abstract/functions/strip-unit


## Example
---

```html_example
@include nn-px-to-unit(padding, 0 10px 20 0); => padding: 0 10px 1.25rem 0;
@include nn-px-to-unit(padding, 0 10 20 0); => padding: 0 0.625rem 1.25rem 0;
@include nn-px-to-unit(padding-left, 10);
@include nn-px-to-unit(padding-right, 10);
@include nn-px-to-unit(margin, 0 10 20 0);
@include nn-px-to-unit(margin-left, 10);
@include nn-px-to-unit(margin-right, 10);
@include nn-px-to-unit(font-size, 20);
@include nn-px-to-unit(width, 100);
@include nn-px-to-unit(min-width, 100);
@include nn-px-to-unit(mann-width, 100);
@include nn-px-to-unit(height, 100);
@include nn-px-to-unit(min-height, 100);
@include nn-px-to-unit(mann-height, 100);
```


## Source
---
http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/

*/
/*doc
---
title: Pixel to unitless
name: nn-px-to-unitless
category: functions
---

This makes the same calculation as px to em. But it don't print out the unit.

Use this for line-heights.


## Live Template abbreviations
---



## Parameters
---
@parameter $value = pixel based number (without unit)
@parameter $base = pixel based number (without unit)


## Dependencies
---



## Example
---

```html_example
line-height: nn-px-to-unitless(5) // Output: 0.3125
```


## Source
---


*/
/*doc
---
title: Strip unit
name: nn-strip-unit
category: functions
---

Strips of the unit of a number


## Parameters
---
@parameter $num = number with unit (5px, 5em, 5rem)


## Example
---

```html_example
nn-strip-unit(5px) //Output: 5
nn-strip-unit(10em) // Output: 10
nn-strip-unit(15rem) // Output: 15
```

*/
/*doc
---
title: z-index
name: nn-z-index
category: functions
---
 
Because z-indices can get tricky we manage them in the theme.scss globally.

Always use this mixin to set set a z-index.
  
Read the Best Practice to get an full documentation:
https://projects.netcentric.biz/wiki/display/FRONTEND/How+to+set+a+z-index
 
 
## Live Template abbreviations
---
-z
 
 
## Parameters
---
@parameter $element = Name of the element (normally this will be the module name for the main stack)
@parameter $list = Name of the list (default $z-indices). Must be only set for stack context
@parameter $min = Set a minimum z-index which will be added to the list.

 
## Dependencies
---
$z-indices variable in the theme.scss


## Example
---
  
```html_example

// In the SASS theme file

$z-indices: slider, modal, dialog, navigation;


// In the SASS module file

.modal {
    &__base {
        position: absolute;
        z-index: nn-z-index(modal);
    }
}
```
 

## Source
---
http://www.smashingmagazine.com/2014/06/12/sassy-z-index-management-for-complex-layouts/

*/
/* doc
---
title: remove every unit
name: strip-unit
category: functions
---
remove all units

## Parameters
---
@parameter $number = number with unit

## Example
---
```html_example
strip-unit(5px) // Output: 5
```
*/
/*doc
---
title: Swap left right values
name: nn-rtl
category: functions
---

Swap the names right and left when $rtl is set to true.
If the value is not right or left it returns the original value.

In:  right
Out: left (in rtl), right (in ltr)


## Live Template abbreviations
---



## Parameters
---
@parameter $origin = right | left


## Example
---

```html_example
nn-rtl(left): 10px;
nn-rtl(padding-right): 30px;
nn-rtl(0 1px 8px 12px) // 0 12px 8px 1px
```


*/
/*doc
---
title: Clearfix
name: clearfix
category: mixins
---

Clears after floating element

Use this mixin only inside media queries where you can't use the
abstract/extends/utils/_clearfix version, which adds less code to css


## Live Template abbreviations
---



## Example
---

```html_example
@include clearfix;
```


## Source
---
https://css-tricks.com/snippets/css/clear-fix/
*/
.icon {
  display: inline-block;
  width: 32px;
  height: 32px;
}

/* doc
---
title: focus color
name: focus color
category: mixins
---

Add a focus color when keyboard-focus is activated
## Parameters
---
@param $number

*/
/* doc
---
title: ignore-container
name: ignore-container
category: mixins
---

Set full page width for something inside a container

## Parameters
---
@param $container-size
@param $gutter

*/
/* Generates all the rules for the grid columns up to the given amount of column */
/* Generates all the rules for the grid column offset up to the given amount of column */
/* Generates all the rules for the grid and columns for the given break point and total of columns */
/* API function to be called to generate a grid config */
/*doc
---
type: button type
state: state button
---

Button styles

Use this mixin for button styles: color text, background, border


## Example
---

```html_example
@include button(primary);
```
*/
/*doc
---
lineLimit: This value specifies the number of lines after which the content will be clamped. It must be greater than 0.
---

Truncates text at a specific number of lines.

Use this mixin to hide long text.

## Example
---

```html_example
@include line-clamp($lineLimit: 4);
```
*/
/* typography
---
title: typography
name: Typography
category: mixins
---

Adds font CSS properties by a map provided

## Parameters
---
@param $t-style
@param $is-important: false

* $t-style is expected to be a map with 'default' and 'breakpoint[s]' submaps with a property
for every css property to be set.
* $is-important parameter allows to force typography properties to be set as !important
Try to avoid its use, but it might be needed for situations where styles for a component
are very specific and to overwrite the generic ones is too complex (if they have a lot of specificity)

*/
/* doc
---
title: hidden
name: hidden
category: mixins
---

Hide from both screenreaders and browsers: h5bp.com/u
## Parameters
---

*/
/* doc
---
title: overlay
name: overlay
category: mixins
---

Creates an overlay with the provided background color
## Parameters
---
@param $bgColor

*/
.teaser:not(.teaser--hero):not(.teaser--layout-top) {
  --teaser-height: 300px;
}

@media (min-width: 960px) {
  .teaser:not(.teaser--hero):not(.teaser--layout-top) {
    --teaser-height: 440px;
  }
}

.cmp-teaser {
  position: relative;
  display: flex;
  align-items: center;
  min-height: var(--teaser-height);
}

@media (min-width: 960px) {
  .cmp-teaser {
    margin: 0;
  }
}

.cmp-teaser__content {
  padding: 3.75rem 1rem;
  pointer-events: none;
  z-index: 2;
  position: relative;
}

.cmp-teaser__content.is-hidden {
  display: none;
}

@media (max-width: 767px) {
  .cmp-carousel__item .cmp-teaser__content {
    padding: 0 56px;
  }
}

.cmp-teaser__title {
  margin-bottom: 25px;
  color: #53565a;
}

[data-dealer-private] .cmp-teaser__title {
  letter-spacing: -0.1px;
}

.cmp-teaser__description {
  font-family: var(--ff-regular);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: var(--ls-default);
  color: #53565a;
  margin-top: 1em;
}

.cmp-teaser__description a {
  color: #004fbc;
}

.cmp-teaser__description a:hover, .cmp-teaser__description a:focus {
  color: #0056d6;
}

.cmp-teaser__description ul,
.cmp-teaser__description ol {
  padding-left: 32px;
}

.cmp-teaser__description ul {
  list-style: disc;
}

.cmp-teaser__description ol {
  list-style: decimal;
}

.cmp-teaser__action-container {
  margin-top: 1em;
  -webkit-padding-end: 1.5rem;
          padding-inline-end: 1.5rem;
}

.teaser__cta--link .cmp-teaser__action-container {
  display: flex;
  flex-direction: column;
}

.cmp-teaser__action-link {
  pointer-events: all;
  margin: 0 10px 10px 0;
}

.cmp-teaser__action-link::after {
  margin-left: 10px;
  display: inline-block;
  position: relative;
  top: -2px;
  width: 24px !important;
  height: 24px !important;
  vertical-align: middle;
  pointer-events: all !important;
}

.teaser__cta--link .cmp-teaser__action-link::after {
  -webkit-margin-end: calc(34px * -1);
          margin-inline-end: calc(34px * -1);
}

.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child {
  display: inline-block;
  align-items: center;
  text-decoration: none;
  font-family: var(--ff-medium);
  box-sizing: border-box;
  padding: 12px 32px;
  background: #004fbc;
  border: 1px solid #004fbc;
  color: #fff;
  transition: background 1s;
}

.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:hover, .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:focus {
  color: #fff;
  background: #0056d6;
  border: 1px solid #0056d6;
  text-decoration: none;
}

.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:hover::after, .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:focus::after {
  -webkit-transform: translateX(5px);
          transform: translateX(5px);
}

.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child::after {
  transition: -webkit-transform .3s ease-out;
  transition: transform .3s ease-out;
  transition: transform .3s ease-out, -webkit-transform .3s ease-out;
}

.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:active {
  background: #0041a3;
}

.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:disabled, .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child.disabled {
  background: #8dc9bf;
  border: 1px solid #8dc9bf;
  cursor: not-allowed;
}

.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  width: 24px;
  height: 24px;
  -webkit-filter: saturate(0%) brightness(0%) invert(100%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(100%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 1         0 0 0 0 1         0 0 0 0 1         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}

.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child[target=_blank]:after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  width: 24px;
  height: 24px;
  -webkit-filter: saturate(0%) brightness(0%) invert(100%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(100%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 1         0 0 0 0 1         0 0 0 0 1         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child[target=_blank]:after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}

.teaser:not(.stage):not(.teaser__cta--secondary):not(.teaser__cta--link) .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child[target=_blank]::after {
  -webkit-filter: invert(1) brightness(1);
          filter: invert(1) brightness(1);
}

.teaser:not(.stage):not(.teaser__cta--secondary):not(.teaser__cta--link) .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child::after {
  -webkit-filter: invert(1) brightness(1);
          filter: invert(1) brightness(1);
}

.cmp-teaser__action-link:not(:first-child) {
  display: inline-block;
  align-items: center;
  text-decoration: none;
  font-family: var(--ff-medium);
  box-sizing: border-box;
  padding: 12px 32px;
  background: #fff;
  border: 1px solid #53565a;
  color: #53565a;
  transition: background 1s;
  -webkit-padding-end: 3.4375rem;
          padding-inline-end: 3.4375rem;
}

.cmp-teaser__action-link:not(:first-child):hover, .cmp-teaser__action-link:not(:first-child):focus {
  background: #e1dfdd;
  text-decoration: none;
  color: #53565a;
}

.cmp-teaser__action-link:not(:first-child):hover::after, .cmp-teaser__action-link:not(:first-child):focus::after {
  -webkit-transform: translateX(5px);
          transform: translateX(5px);
}

.cmp-teaser__action-link:not(:first-child)::after {
  transition: -webkit-transform .3s ease-out;
  transition: transform .3s ease-out;
  transition: transform .3s ease-out, -webkit-transform .3s ease-out;
}

.cmp-teaser__action-link:not(:first-child):disabled, .cmp-teaser__action-link:not(:first-child).disabled {
  border: 1px solid #888b8d;
  color: #888b8d;
}

.cmp-teaser__action-link:not(:first-child):after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  width: 24px;
  height: 24px;
  -webkit-filter: saturate(0%) brightness(0%) invert(33.92157%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(33.92157%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 0.32549         0 0 0 0 0.33725         0 0 0 0 0.35294         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .cmp-teaser__action-link:not(:first-child):after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}

.cmp-teaser__action-link:not(:first-child)[target=_blank]:after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  width: 24px;
  height: 24px;
  -webkit-filter: saturate(0%) brightness(0%) invert(33.92157%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(33.92157%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 0.32549         0 0 0 0 0.33725         0 0 0 0 0.35294         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .cmp-teaser__action-link:not(:first-child)[target=_blank]:after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}

.cmp-teaser__action-link:not(:first-child)::after {
  -webkit-margin-end: calc(34px * -1);
          margin-inline-end: calc(34px * -1);
  /* force filter: none to avoid text--white setting affects the icon color */
}

.teaser:not(.stage):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:not(:first-child)::after {
  -webkit-filter: none !important;
          filter: none !important;
}

.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link) .cmp-teaser__action-link:not(:first-child) {
  color: #53565a;
}

.cmp-teaser__embed, .cmp-teaser__image {
  position: absolute;
  inset: 0;
}

.cmp-teaser__embed iframe {
  max-width: 100%;
  height: var(--teaser-height);
}

.cmp-teaser__embed + .cmp-teaser__content {
  pointer-events: none;
}

.cmp-teaser__embed .cmp-embed > * {
  margin: 0;
}

.cmp-teaser__image img,
.cmp-teaser__image .cmp-image,
.cmp-teaser__image .cmp-image__image {
  object-fit: cover;
  object-position: center;
  width: 100%;
  height: 100%;
}

.cmp-teaser__image .cmp-image video, .cmp-teaser__image .cmp-image__image video {
  height: 100%;
}

.cmp-teaser__image .cmp-image .s7dm-dynamic-media video, .cmp-teaser__image .cmp-image__image .s7dm-dynamic-media video {
  top: 0 !important;
  left: 0 !important;
  min-width: 100% !important;
  min-height: 100% !important;
}

.cmp-teaser__image .cmp-image .img__link {
  width: 100%;
}

.teaser:not(.teaser--layout-top) .cmp-teaser__content {
  width: 100%;
}

@media (min-width: 960px) {
  .teaser:not(.teaser--layout-top) .cmp-teaser__content {
    width: 40%;
  }
  .carousel .teaser:not(.teaser--layout-top) .cmp-teaser__content {
    width: 50%;
  }
}

.collage .teaser:not(.teaser--layout-top) .cmp-teaser__content,
.columncontrol .teaser:not(.teaser--layout-top) .cmp-teaser__content {
  width: 100%;
}

.teaser--hero {
  --teaser-height: 440px;
}

@media (min-width: 960px) {
  .teaser--hero {
    --teaser-height: 600px;
  }
}

.teaser--layout-top .cmp-teaser {
  display: block;
}

.teaser--layout-top .cmp-teaser__content {
  position: static;
  -webkit-transform: none;
          transform: none;
  pointer-events: all;
  padding: 1em 0;
}

.teaser--layout-top .cmp-teaser__image, .teaser--layout-top .cmp-teaser__embed {
  position: relative;
  aspect-ratio: 16/9;
}

.teaser--layout-top .cmp-teaser__embed iframe {
  aspect-ratio: 16/9;
  height: auto;
}

.teaser--layout-top.teaser__cta--video .cmp-teaser__action-container {
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  margin-top: 0;
  height: 0;
  padding-top: 57%;
}

.teaser--layout-top.teaser__cta--video .cmp-teaser__action-container .cmp-teaser__action-link {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 75px;
  height: 75px;
  margin: -25px 0 0 -40px;
}

.teaser--layout-top.teaser__cta--video .cmp-teaser__action-container .cmp-teaser__action-link::before {
  font-size: 34px;
}

.teaser__cta--secondary .cmp-teaser__action-link {
  display: inline-block;
  align-items: center;
  text-decoration: none;
  font-family: var(--ff-medium);
  box-sizing: border-box;
  padding: 12px 32px;
  background: #fff;
  border: 1px solid #53565a;
  color: #53565a;
  transition: background 1s;
  -webkit-padding-end: 3.4375rem;
          padding-inline-end: 3.4375rem;
}

.teaser__cta--secondary .cmp-teaser__action-link:hover, .teaser__cta--secondary .cmp-teaser__action-link:focus {
  background: #e1dfdd;
  text-decoration: none;
  color: #53565a;
}

.teaser__cta--secondary .cmp-teaser__action-link:hover::after, .teaser__cta--secondary .cmp-teaser__action-link:focus::after {
  -webkit-transform: translateX(5px);
          transform: translateX(5px);
}

.teaser__cta--secondary .cmp-teaser__action-link::after {
  transition: -webkit-transform .3s ease-out;
  transition: transform .3s ease-out;
  transition: transform .3s ease-out, -webkit-transform .3s ease-out;
}

.teaser__cta--secondary .cmp-teaser__action-link:disabled, .teaser__cta--secondary .cmp-teaser__action-link.disabled {
  border: 1px solid #888b8d;
  color: #888b8d;
}

.teaser__cta--secondary .cmp-teaser__action-link:after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  width: 24px;
  height: 24px;
  -webkit-filter: saturate(0%) brightness(0%) invert(33.92157%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(33.92157%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 0.32549         0 0 0 0 0.33725         0 0 0 0 0.35294         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .teaser__cta--secondary .cmp-teaser__action-link:after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}

.teaser__cta--secondary .cmp-teaser__action-link[target=_blank]:after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  width: 24px;
  height: 24px;
  -webkit-filter: saturate(0%) brightness(0%) invert(33.92157%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(33.92157%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 0.32549         0 0 0 0 0.33725         0 0 0 0 0.35294         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .teaser__cta--secondary .cmp-teaser__action-link[target=_blank]:after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}

.teaser__cta--secondary .cmp-teaser__action-link::after {
  -webkit-margin-end: calc(34px * -1);
          margin-inline-end: calc(34px * -1);
  /* force filter: none to avoid text--white setting affects the icon color */
}

.teaser:not(.stage):not(.teaser__cta--link):not(.teaser__cta--video) .teaser__cta--secondary .cmp-teaser__action-link::after {
  -webkit-filter: none !important;
          filter: none !important;
}

.teaser__cta--video .cmp-teaser {
  position: relative;
}

.teaser__cta--video .cmp-teaser__action-link {
  display: inline-block;
  align-items: center;
  text-decoration: none;
  font-family: var(--ff-medium);
  box-sizing: border-box;
  width: 75px;
  height: 75px;
  font-size: 0;
  text-align: center;
  color: #53565a;
  background-color: #e1dfdd;
  border-radius: 50%;
  box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.3);
  transition: background-color 0.3s;
  padding: 0;
  border: 0;
  width: 50px;
  height: 50px;
  color: #fff;
}

.teaser__cta--video .cmp-teaser__action-link:before {
  font-family: "VolvoIcons";
  content: "";
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  vertical-align: baseline;
  display: inline-block;
  line-height: 0;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

@media (min-width: 960px) {
  .teaser__cta--video .cmp-teaser__action-link {
    width: 50px;
    height: 50px;
  }
}

.teaser__cta--video .cmp-teaser__action-link:hover, .teaser__cta--video .cmp-teaser__action-link:focus {
  color: #53565a;
  background-color: #e1dfdd;
  border: 0;
}

.teaser__cta--video .cmp-teaser__action-link:hover::before, .teaser__cta--video .cmp-teaser__action-link:focus::before {
  -webkit-transform: scale(1.1);
          transform: scale(1.1);
}

.teaser__cta--video .cmp-teaser__action-link::before {
  margin-left: 7px;
  font-size: 34px;
  line-height: 2.2;
  transition: -webkit-transform 0.3s ease-in-out;
  transition: transform 0.3s ease-in-out;
  transition: transform 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;
}

@media (min-width: 960px) {
  .teaser__cta--video .cmp-teaser__action-link::before {
    font-size: 23px;
  }
}

.teaser__cta--video .cmp-teaser__action-link::before {
  font-size: 23px;
  margin-left: 4px;
}

.teaser__cta--video .cmp-teaser__action-link::after {
  content: none;
  opacity: 0;
}

.teaser__cta--video .cmp-teaser__action-container {
  text-align: center;
}

.teaser__cta--video:not(.teaser--layout-top) .cmp-teaser__action-container {
  margin-top: 25px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link {
  font-family: var(--ff-regular);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: var(--ls-default);
  padding: 0;
  color: #004fbc;
  background: transparent;
  border: 0;
}

.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link:after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  width: var(--v-icon-size);
  height: var(--v-icon-size);
  -webkit-filter: saturate(0%) brightness(0%) invert(36.86275%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(36.86275%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 0         0 0 0 0 0.3098         0 0 0 0 0.73725         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link:after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}

.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link::after {
  font-size: 16px;
  transition: -webkit-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;
  display: inline-block;
  content: '';
}

.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link:hover::after {
  -webkit-transform: translateX(5px);
          transform: translateX(5px);
}

.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link[target=_blank]:after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  width: var(--v-icon-size);
  height: var(--v-icon-size);
  -webkit-filter: saturate(0%) brightness(0%) invert(36.86275%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(36.86275%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 0         0 0 0 0 0.3098         0 0 0 0 0.73725         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link[target=_blank]:after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}

.teaser {
  margin: 30px 0;
}

.teaser.margin-top--none {
  margin-top: 0;
}

.teaser.margin-top--double {
  margin-top: calc(30px * 2);
}

.teaser.margin-bottom--none {
  margin-bottom: 0;
}

.teaser.margin-bottom--double {
  margin-bottom: calc(30px * 2);
}

.aem-Grid > .teaser:first-child:not(.margin-top--double) {
  margin-top: 0;
}

.teaser__img--full .cmp-teaser__image {
  margin: 0 -15px;
}

@media (min-width: 960px) {
  .teaser__img--full .cmp-teaser__image {
    margin: 0 -15px;
  }
}

@media (min-width: 1200px) {
  .teaser__img--full .cmp-teaser__image {
    width: auto;
    margin: 0 calc((100vw - 1200px) / -2);
  }
}

.teaser__overlay--dark.teaser .cmp-image, .teaser__overlay--dark.teaser--hero .cmp-image {
  position: relative;
}

.teaser__overlay--dark.teaser .cmp-image::after, .teaser__overlay--dark.teaser--hero .cmp-image::after {
  content: '';
  background-color: rgba(0, 0, 0, 0.5);
  display: block;
  height: 100%;
  inset: 0;
  position: absolute;
  width: 100%;
}

.teaser__overlay--lighter-dark.teaser .cmp-image, .teaser__overlay--lighter-dark.teaser--hero .cmp-image {
  position: relative;
}

.teaser__overlay--lighter-dark.teaser .cmp-image::after, .teaser__overlay--lighter-dark.teaser--hero .cmp-image::after {
  content: '';
  background-color: rgba(0, 0, 0, 0.2);
  display: block;
  height: 100%;
  inset: 0;
  position: absolute;
  width: 100%;
}

.teaser__text--right:not(.teaser--layout-top) .cmp-teaser {
  justify-content: flex-end;
}

@media (min-width: 768px) {
  .teaser__text--right:not(.teaser--layout-top) .cmp-teaser {
    justify-content: flex-start;
  }
  .teaser__text--right:not(.teaser--layout-top) .cmp-teaser__content {
    margin-left: 60%;
  }
}

.teaser__text--center .cmp-teaser__content {
  width: 100% !important;
  text-align: center;
}

@media (min-width: 768px) {
  .teaser__text--center .cmp-teaser__content .cmp-teaser__description {
    max-width: 500px;
    margin: 0 auto;
  }
}

@media (min-width: 960px) {
  .teaser__text--center .cmp-teaser__content .cmp-teaser__description {
    max-width: 850px;
    margin: 0 auto;
  }
}

.teaser__text--center .cmp-teaser__content .cmp-teaser__action-container {
  justify-content: center;
}

.teaser__text--center.teaser:not(.teaser__cta--link) .cmp-teaser__action-link {
  -webkit-transform: translateX(17px);
          transform: translateX(17px);
}

.teaser__text--white .cmp-teaser__description, .teaser__text--white .cmp-teaser__title {
  color: #fff;
}

.teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a {
  color: #fff;
}

.teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a:after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  width: var(--v-icon-size);
  height: var(--v-icon-size);
  -webkit-filter: saturate(0%) brightness(0%) invert(100%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(100%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 1         0 0 0 0 1         0 0 0 0 1         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a:after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}

.teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a[target=_blank]:after {
  content: '';
  display: inline-block;
  background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  width: var(--v-icon-size);
  height: var(--v-icon-size);
  -webkit-filter: saturate(0%) brightness(0%) invert(100%) opacity(1);
          filter: saturate(0%) brightness(0%) invert(100%) opacity(1);
  filter: url('data:image/svg+xml;utf8,    <svg xmlns="http://www.w3.org/2000/svg">    <filter id="recolor" color-interpolation-filters="sRGB">        <feColorMatrix type="matrix" values="         0 0 0 0 1         0 0 0 0 1         0 0 0 0 1         0 0 0 1 0         "/>    </filter>    </svg>    #recolor');
  pointer-events: none;
}

@media (min-width: 1200px) {
  .teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a[target=_blank]:after {
    background: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}

.teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser .video__link {
  position: absolute;
}

.teaser__text--white.teaser--layout-top .cmp-teaser__description, .teaser__text--white.teaser--layout-top .cmp-teaser__title {
  color: #53565a;
}

.teaser:not(.teaser--layout-top):not(.teaser__title--volvonovum) .cmp-teaser__title {
  font-family: var(--ff-broad);
  font-size: 48px;
  font-weight: 500;
  line-height: 0.95;
  letter-spacing: var(--ls-volvo);
  margin-bottom: 25px;
}

.teaser__title--volvonovum .cmp-teaser__title {
  font-family: var(--ff-medium);
  font-size: 27px;
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: var(--ls-default);
  margin-bottom: 25px;
}

@media (min-width: 768px) {
  .teaser__title--volvonovum .cmp-teaser__title {
    font-size: 32px;
  }
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3RhcmdldC92YXVsdC13b3JrL2pjcl9yb290L2FwcHMvdm9sdm8vY2xpZW50bGlicy9zaGFyZWQvY29tcG9uZW50cy9jb250ZW50L3RlYXNlci90ZWFzZXIuYnVuZGxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7O0VBS0U7QUFDRjs7O0VBR0U7QUFDRjs7R0FFRztBQUNIO0VBQ0Usb0JBQW9CO0NBQ3JCOztBQUVEO0VBQ0U7SUFDRSxvQkFBb0I7R0FDckI7Q0FDRjs7QUFFRDtFQUNFLDBCQUEwQjtFQUMxQiwyQkFBMkI7Q0FDNUI7O0FBRUQ7RUFDRSxtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxxQkFBcUI7RUFDckIsbUJBQW1CO0VBQ25CLGNBQWM7RUFDZCxhQUFhO0VBQ2IsaUJBQWlCO0NBQ2xCOztBQUVEO0VBQ0UsY0FBYztDQUNmOztBQUVEO0VBQ0U7SUFDRSxnQkFBZ0I7R0FDakI7Q0FDRjs7QUFFRDtFQUNFLGdCQUFnQjtFQUNoQixLQUFLO0VBQ0wsdUJBQXVCO0VBQ3ZCLHNCQUFzQjtDQUN2Qjs7QUFFRDtFQUNFO0lBQ0UscUNBQTZCO1lBQTdCLDZCQUE2QjtHQUM5QjtDQUNGOztBQUVEO0VBQ0U7SUFDRSxxQ0FBNkI7WUFBN0IsNkJBQTZCO0dBQzlCO0NBQ0Y7O0FBRUQ7RUFDRTtJQUNFLGNBQWM7R0FDZjtDQUNGOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0NFO0FBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDRTtBQUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkRFO0FBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF3Q0U7QUFDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBd0JFO0FBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlERTtBQUNGOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCRTtBQUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0NFO0FBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkJFO0FBQ0Y7RUFDRSxzQkFBc0I7RUFDdEIsWUFBWTtFQUNaLGFBQWE7Q0FDZDs7QUFFRDs7Ozs7Ozs7Ozs7O0VBWUU7QUFDRjs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUNGLG1GQUFtRjtBQUNuRix5RkFBeUY7QUFDekYscUdBQXFHO0FBQ3JHLHlEQUF5RDtBQUN6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFDRjs7Ozs7Ozs7Ozs7Ozs7O0VBZUU7QUFDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvQkU7QUFDRjs7Ozs7Ozs7Ozs7RUFXRTtBQUNGOzs7Ozs7Ozs7Ozs7RUFZRTtBQUNGO0VBQ0UsdUJBQXVCO0NBQ3hCOztBQUVEO0VBQ0U7SUFDRSx1QkFBdUI7R0FDeEI7Q0FDRjs7QUFFRDtFQUNFLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2Qsb0JBQW9CO0VBQ3BCLGlDQUFpQztDQUNsQzs7QUFFRDtFQUNFO0lBQ0UsVUFBVTtHQUNYO0NBQ0Y7O0FBRUQ7RUFDRSxzQkFBc0I7RUFDdEIscUJBQXFCO0VBQ3JCLFdBQVc7RUFDWCxtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxjQUFjO0NBQ2Y7O0FBRUQ7RUFDRTtJQUNFLGdCQUFnQjtHQUNqQjtDQUNGOztBQUVEO0VBQ0Usb0JBQW9CO0VBQ3BCLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSx1QkFBdUI7Q0FDeEI7O0FBRUQ7RUFDRSwrQkFBK0I7RUFDL0IsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsa0NBQWtDO0VBQ2xDLGVBQWU7RUFDZixnQkFBZ0I7Q0FDakI7O0FBRUQ7RUFDRSxlQUFlO0NBQ2hCOztBQUVEO0VBQ0UsZUFBZTtDQUNoQjs7QUFFRDs7RUFFRSxtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxpQkFBaUI7Q0FDbEI7O0FBRUQ7RUFDRSxvQkFBb0I7Q0FDckI7O0FBRUQ7RUFDRSxnQkFBZ0I7RUFDaEIsNEJBQTJCO1VBQTNCLDJCQUEyQjtDQUM1Qjs7QUFFRDtFQUNFLGNBQWM7RUFDZCx1QkFBdUI7Q0FDeEI7O0FBRUQ7RUFDRSxvQkFBb0I7RUFDcEIsc0JBQXNCO0NBQ3ZCOztBQUVEO0VBQ0Usa0JBQWtCO0VBQ2xCLHNCQUFzQjtFQUN0QixtQkFBbUI7RUFDbkIsVUFBVTtFQUNWLHVCQUF1QjtFQUN2Qix3QkFBd0I7RUFDeEIsdUJBQXVCO0VBQ3ZCLCtCQUErQjtDQUNoQzs7QUFFRDtFQUNFLG9DQUFtQztVQUFuQyxtQ0FBbUM7Q0FDcEM7O0FBRUQ7RUFDRSxzQkFBc0I7RUFDdEIsb0JBQW9CO0VBQ3BCLHNCQUFzQjtFQUN0Qiw4QkFBOEI7RUFDOUIsdUJBQXVCO0VBQ3ZCLG1CQUFtQjtFQUNuQixvQkFBb0I7RUFDcEIsMEJBQTBCO0VBQzFCLFlBQVk7RUFDWiwwQkFBMEI7Q0FDM0I7O0FBRUQ7RUFDRSxZQUFZO0VBQ1osb0JBQW9CO0VBQ3BCLDBCQUEwQjtFQUMxQixzQkFBc0I7Q0FDdkI7O0FBRUQ7RUFDRSxtQ0FBMkI7VUFBM0IsMkJBQTJCO0NBQzVCOztBQUVEO0VBQ0UsMkNBQW1DO0VBQW5DLG1DQUFtQztFQUFuQyxtRUFBbUM7Q0FDcEM7O0FBRUQ7RUFDRSxvQkFBb0I7Q0FDckI7O0FBRUQ7RUFDRSxvQkFBb0I7RUFDcEIsMEJBQTBCO0VBQzFCLG9CQUFvQjtDQUNyQjs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLFlBQVk7RUFDWixhQUFhO0VBQ2Isb0VBQTREO1VBQTVELDREQUE0RDtFQUM1RCxvVEFBb1Q7RUFDcFQscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLFlBQVk7RUFDWixhQUFhO0VBQ2Isb0VBQTREO1VBQTVELDREQUE0RDtFQUM1RCxvVEFBb1Q7RUFDcFQscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLHdDQUFnQztVQUFoQyxnQ0FBZ0M7Q0FDakM7O0FBRUQ7RUFDRSx3Q0FBZ0M7VUFBaEMsZ0NBQWdDO0NBQ2pDOztBQUVEO0VBQ0Usc0JBQXNCO0VBQ3RCLG9CQUFvQjtFQUNwQixzQkFBc0I7RUFDdEIsOEJBQThCO0VBQzlCLHVCQUF1QjtFQUN2QixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLDBCQUEwQjtFQUMxQixlQUFlO0VBQ2YsMEJBQTBCO0VBQzFCLCtCQUE4QjtVQUE5Qiw4QkFBOEI7Q0FDL0I7O0FBRUQ7RUFDRSxvQkFBb0I7RUFDcEIsc0JBQXNCO0VBQ3RCLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxtQ0FBMkI7VUFBM0IsMkJBQTJCO0NBQzVCOztBQUVEO0VBQ0UsMkNBQW1DO0VBQW5DLG1DQUFtQztFQUFuQyxtRUFBbUM7Q0FDcEM7O0FBRUQ7RUFDRSwwQkFBMEI7RUFDMUIsZUFBZTtDQUNoQjs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLFlBQVk7RUFDWixhQUFhO0VBQ2IseUVBQWlFO1VBQWpFLGlFQUFpRTtFQUNqRSxzVUFBc1U7RUFDdFUscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLFlBQVk7RUFDWixhQUFhO0VBQ2IseUVBQWlFO1VBQWpFLGlFQUFpRTtFQUNqRSxzVUFBc1U7RUFDdFUscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLG9DQUFtQztVQUFuQyxtQ0FBbUM7RUFDbkMsNEVBQTRFO0NBQzdFOztBQUVEO0VBQ0UsZ0NBQXdCO1VBQXhCLHdCQUF3QjtDQUN6Qjs7QUFFRDtFQUNFLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxtQkFBbUI7RUFDbkIsU0FBUztDQUNWOztBQUVEO0VBQ0UsZ0JBQWdCO0VBQ2hCLDZCQUE2QjtDQUM5Qjs7QUFFRDtFQUNFLHFCQUFxQjtDQUN0Qjs7QUFFRDtFQUNFLFVBQVU7Q0FDWDs7QUFFRDs7O0VBR0Usa0JBQWtCO0VBQ2xCLHdCQUF3QjtFQUN4QixZQUFZO0VBQ1osYUFBYTtDQUNkOztBQUVEO0VBQ0UsYUFBYTtDQUNkOztBQUVEO0VBQ0Usa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQiwyQkFBMkI7RUFDM0IsNEJBQTRCO0NBQzdCOztBQUVEO0VBQ0UsWUFBWTtDQUNiOztBQUVEO0VBQ0UsWUFBWTtDQUNiOztBQUVEO0VBQ0U7SUFDRSxXQUFXO0dBQ1o7RUFDRDtJQUNFLFdBQVc7R0FDWjtDQUNGOztBQUVEOztFQUVFLFlBQVk7Q0FDYjs7QUFFRDtFQUNFLHVCQUF1QjtDQUN4Qjs7QUFFRDtFQUNFO0lBQ0UsdUJBQXVCO0dBQ3hCO0NBQ0Y7O0FBRUQ7RUFDRSxlQUFlO0NBQ2hCOztBQUVEO0VBQ0UsaUJBQWlCO0VBQ2pCLHdCQUFnQjtVQUFoQixnQkFBZ0I7RUFDaEIsb0JBQW9CO0VBQ3BCLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxtQkFBbUI7RUFDbkIsbUJBQW1CO0NBQ3BCOztBQUVEO0VBQ0UsbUJBQW1CO0VBQ25CLGFBQWE7Q0FDZDs7QUFFRDtFQUNFLG1CQUFtQjtFQUNuQixPQUFPO0VBQ1AsUUFBUTtFQUNSLGNBQWM7RUFDZCxvQkFBb0I7RUFDcEIsd0JBQXdCO0VBQ3hCLFlBQVk7RUFDWixjQUFjO0VBQ2QsVUFBVTtFQUNWLGlCQUFpQjtDQUNsQjs7QUFFRDtFQUNFLG1CQUFtQjtFQUNuQixTQUFTO0VBQ1QsVUFBVTtFQUNWLFlBQVk7RUFDWixhQUFhO0VBQ2Isd0JBQXdCO0NBQ3pCOztBQUVEO0VBQ0UsZ0JBQWdCO0NBQ2pCOztBQUVEO0VBQ0Usc0JBQXNCO0VBQ3RCLG9CQUFvQjtFQUNwQixzQkFBc0I7RUFDdEIsOEJBQThCO0VBQzlCLHVCQUF1QjtFQUN2QixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLDBCQUEwQjtFQUMxQixlQUFlO0VBQ2YsMEJBQTBCO0VBQzFCLCtCQUE4QjtVQUE5Qiw4QkFBOEI7Q0FDL0I7O0FBRUQ7RUFDRSxvQkFBb0I7RUFDcEIsc0JBQXNCO0VBQ3RCLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxtQ0FBMkI7VUFBM0IsMkJBQTJCO0NBQzVCOztBQUVEO0VBQ0UsMkNBQW1DO0VBQW5DLG1DQUFtQztFQUFuQyxtRUFBbUM7Q0FDcEM7O0FBRUQ7RUFDRSwwQkFBMEI7RUFDMUIsZUFBZTtDQUNoQjs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLFlBQVk7RUFDWixhQUFhO0VBQ2IseUVBQWlFO1VBQWpFLGlFQUFpRTtFQUNqRSxzVUFBc1U7RUFDdFUscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLFlBQVk7RUFDWixhQUFhO0VBQ2IseUVBQWlFO1VBQWpFLGlFQUFpRTtFQUNqRSxzVUFBc1U7RUFDdFUscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLG9DQUFtQztVQUFuQyxtQ0FBbUM7RUFDbkMsNEVBQTRFO0NBQzdFOztBQUVEO0VBQ0UsZ0NBQXdCO1VBQXhCLHdCQUF3QjtDQUN6Qjs7QUFFRDtFQUNFLG1CQUFtQjtDQUNwQjs7QUFFRDtFQUNFLHNCQUFzQjtFQUN0QixvQkFBb0I7RUFDcEIsc0JBQXNCO0VBQ3RCLDhCQUE4QjtFQUM5Qix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLGFBQWE7RUFDYixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZiwwQkFBMEI7RUFDMUIsbUJBQW1CO0VBQ25CLDBDQUEwQztFQUMxQyxrQ0FBa0M7RUFDbEMsV0FBVztFQUNYLFVBQVU7RUFDVixZQUFZO0VBQ1osYUFBYTtFQUNiLFlBQVk7Q0FDYjs7QUFFRDtFQUNFLDBCQUEwQjtFQUMxQixhQUFhO0VBQ2IsWUFBWTtFQUNaLG1CQUFtQjtFQUNuQixvQkFBb0I7RUFDcEIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQix5QkFBeUI7RUFDekIsc0JBQXNCO0VBQ3RCLGVBQWU7RUFDZix1Q0FBdUM7RUFDdkMsb0NBQW9DO0VBQ3BDLG1DQUFtQztDQUNwQzs7QUFFRDtFQUNFO0lBQ0UsWUFBWTtJQUNaLGFBQWE7R0FDZDtDQUNGOztBQUVEO0VBQ0UsZUFBZTtFQUNmLDBCQUEwQjtFQUMxQixVQUFVO0NBQ1g7O0FBRUQ7RUFDRSw4QkFBc0I7VUFBdEIsc0JBQXNCO0NBQ3ZCOztBQUVEO0VBQ0UsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsK0NBQXVDO0VBQXZDLHVDQUF1QztFQUF2QywyRUFBdUM7Q0FDeEM7O0FBRUQ7RUFDRTtJQUNFLGdCQUFnQjtHQUNqQjtDQUNGOztBQUVEO0VBQ0UsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtDQUNsQjs7QUFFRDtFQUNFLGNBQWM7RUFDZCxXQUFXO0NBQ1o7O0FBRUQ7RUFDRSxtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxpQkFBaUI7RUFDakIsY0FBYztFQUNkLG9CQUFvQjtFQUNwQiw0QkFBNEI7Q0FDN0I7O0FBRUQ7RUFDRSwrQkFBK0I7RUFDL0IsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsa0NBQWtDO0VBQ2xDLFdBQVc7RUFDWCxlQUFlO0VBQ2Ysd0JBQXdCO0VBQ3hCLFVBQVU7Q0FDWDs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLDBCQUEwQjtFQUMxQiwyQkFBMkI7RUFDM0IseUVBQWlFO1VBQWpFLGlFQUFpRTtFQUNqRSwrVEFBK1Q7RUFDL1QscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLGdCQUFnQjtFQUNoQiw0Q0FBb0M7RUFBcEMsb0NBQW9DO0VBQXBDLHFFQUFvQztFQUNwQyxzQkFBc0I7RUFDdEIsWUFBWTtDQUNiOztBQUVEO0VBQ0UsbUNBQTJCO1VBQTNCLDJCQUEyQjtDQUM1Qjs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLDBCQUEwQjtFQUMxQiwyQkFBMkI7RUFDM0IseUVBQWlFO1VBQWpFLGlFQUFpRTtFQUNqRSwrVEFBK1Q7RUFDL1QscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSxjQUFjO0NBQ2Y7O0FBRUQ7RUFDRSwyQkFBMkI7Q0FDNUI7O0FBRUQ7RUFDRSxpQkFBaUI7Q0FDbEI7O0FBRUQ7RUFDRSw4QkFBOEI7Q0FDL0I7O0FBRUQ7RUFDRSxjQUFjO0NBQ2Y7O0FBRUQ7RUFDRSxnQkFBZ0I7Q0FDakI7O0FBRUQ7RUFDRTtJQUNFLGdCQUFnQjtHQUNqQjtDQUNGOztBQUVEO0VBQ0U7SUFDRSxZQUFZO0lBQ1osc0NBQXNDO0dBQ3ZDO0NBQ0Y7O0FBRUQ7RUFDRSxtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxZQUFZO0VBQ1oscUNBQXFDO0VBQ3JDLGVBQWU7RUFDZixhQUFhO0VBQ2IsU0FBUztFQUNULG1CQUFtQjtFQUNuQixZQUFZO0NBQ2I7O0FBRUQ7RUFDRSxtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxZQUFZO0VBQ1oscUNBQXFDO0VBQ3JDLGVBQWU7RUFDZixhQUFhO0VBQ2IsU0FBUztFQUNULG1CQUFtQjtFQUNuQixZQUFZO0NBQ2I7O0FBRUQ7RUFDRSwwQkFBMEI7Q0FDM0I7O0FBRUQ7RUFDRTtJQUNFLDRCQUE0QjtHQUM3QjtFQUNEO0lBQ0UsaUJBQWlCO0dBQ2xCO0NBQ0Y7O0FBRUQ7RUFDRSx1QkFBdUI7RUFDdkIsbUJBQW1CO0NBQ3BCOztBQUVEO0VBQ0U7SUFDRSxpQkFBaUI7SUFDakIsZUFBZTtHQUNoQjtDQUNGOztBQUVEO0VBQ0U7SUFDRSxpQkFBaUI7SUFDakIsZUFBZTtHQUNoQjtDQUNGOztBQUVEO0VBQ0Usd0JBQXdCO0NBQ3pCOztBQUVEO0VBQ0Usb0NBQTRCO1VBQTVCLDRCQUE0QjtDQUM3Qjs7QUFFRDtFQUNFLFlBQVk7Q0FDYjs7QUFFRDtFQUNFLFlBQVk7Q0FDYjs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLDBCQUEwQjtFQUMxQiwyQkFBMkI7RUFDM0Isb0VBQTREO1VBQTVELDREQUE0RDtFQUM1RCxvVEFBb1Q7RUFDcFQscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIscUdBQXFHO0VBQ3JHLDBCQUEwQjtFQUMxQiwyQkFBMkI7RUFDM0Isb0VBQTREO1VBQTVELDREQUE0RDtFQUM1RCxvVEFBb1Q7RUFDcFQscUJBQXFCO0NBQ3RCOztBQUVEO0VBQ0U7SUFDRSxxR0FBcUc7R0FDdEc7Q0FDRjs7QUFFRDtFQUNFLG1CQUFtQjtDQUNwQjs7QUFFRDtFQUNFLGVBQWU7Q0FDaEI7O0FBRUQ7RUFDRSw2QkFBNkI7RUFDN0IsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsZ0NBQWdDO0VBQ2hDLG9CQUFvQjtDQUNyQjs7QUFFRDtFQUNFLDhCQUE4QjtFQUM5QixnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLGlCQUFpQjtFQUNqQixrQ0FBa0M7RUFDbEMsb0JBQW9CO0NBQ3JCOztBQUVEO0VBQ0U7SUFDRSxnQkFBZ0I7R0FDakI7Q0FDRiIsImZpbGUiOiIuLi90YXJnZXQvdmF1bHQtd29yay9qY3Jfcm9vdC9hcHBzL3ZvbHZvL2NsaWVudGxpYnMvc2hhcmVkL2NvbXBvbmVudHMvY29udGVudC90ZWFzZXIvdGVhc2VyLmJ1bmRsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAY2hhcnNldCBcIlVURi04XCI7XG4vKlxuQWxzbyBwbGVhc2UgZm9sbG93IHRoaXNcbkRvIHlvdXIgcHJvamVjdCBoYXZlIGRpZmVyZW50IGNoYXJzZXQgbGFuZ3VhZ2VzIHRvIGFjY291bnQgd2l0aD9cbiAgICAgIC0gWWVzIC0+IGZvbGxvdyBodHRwczovL3Byb2plY3RzLm5ldGNlbnRyaWMuYml6L3dpa2kvZGlzcGxheS9GUk9OVEVORC9DU1MrLStGb250K05vcm1hbGl6YXRpb25cbiAgICAgIC0gTm8gLT4gWW91IGNhbiBzdGlsbCB1c2UgaXQsIHRoZXJlIGFyZSB0b25zIG9mIGFkdmFudGFnZXMsIGJ1dCBpdHMgY3JlYXRlIHNvbWUgZXh0cmEgY3NzIGFuZCBsYXlvdXQgcmVuZGVyaW5nXG4qL1xuLypcbiAgKiBEZXNpZ24gc3BlYzpcbiAgKiBodHRwczovL3d3dy5maWdtYS5jb20vZmlsZS9TUjRydlFsTm5DbVBNclE5V1lhSXF2L2JyYW5jaC9USnFrRnltcTA5d2Y4S3dtWTFXTmNqL1ZvbHZvLUFFTS1EZXNpZ24tc3lzdGVtP3R5cGU9ZGVzaWduJm5vZGUtaWQ9Ny0yNiZ0PXBBbTkxNlZSaXFDT0QySTEtMFxuKi9cbi8qKlxuICogei1pbmRleGVzIGZyb20gbG93ZXIgdG8gLT4gaGlnaGVyXG4gKi9cbjpyb290IHtcbiAgLS12LWljb24tc2l6ZTogMjRweDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIDpyb290IHtcbiAgICAtLXYtaWNvbi1zaXplOiAxNnB4O1xuICB9XG59XG5cbi52LWljb24ge1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbn1cblxuLnYtaWNvbiBzdmcgcGF0aCB7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cblxuLnYtaWNvbi1zcHJpdGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtaGVpZ2h0OiAwO1xuICBtYXgtd2lkdGg6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi52LWljb24tLTE2IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC52LWljb24tLTE2IHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cblxuLnYtaWNvbi0tMjQge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIHk6IDA7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgKi9cbn1cblxuQG1lZGlhIG5vdCBhbGwgYW5kIChtaW4tcmVzb2x1dGlvbjogMC4wMDFkcGNtKSB7XG4gIC52LWljb24tLTI0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE2cHgpO1xuICB9XG59XG5cbkBzdXBwb3J0cyAoLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lKSB7XG4gIC52LWljb24tLTI0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE2cHgpO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudi1pY29uLS0yNCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vKmRvY1xuLS0tXG50aXRsZTogUGl4ZWwgdG8gZW1cbm5hbWU6IG5uLXB4LXRvLWVtXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuQ2FsY3VsYXRlIHRoZSBlbSB3aXRoIGEgZ2l2ZW4gcGl4ZWwgd2l0aCB0aGUgZ2l2ZW4gYmFzZSBmb250IHNpemVcbklmIHlvdSBkb24ndCBzZXQgYSAkYmFzZSB0aGUgJGJhc2UtZm9udC1zaXplIGlzIHVzZWQgYXMgdGhlIGNvbnRleHRcblxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuLXB0dVxuXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkdmFsdWUgPSBwaXhlbCBiYXNlZCBudW1iZXIgKHdpdGhvdXQgdW5pdClcbkBwYXJhbWV0ZXIgJGJhc2UgPSBwaXhlbCBiYXNlZCBudW1iZXIgKHdpdGhvdXQgdW5pdClcblxuXG4jIyBEZXBlbmRlbmNpZXNcbi0tLVxubm4tc3RyaXAtdW5pdFxuXG5cbiMjIEV4YW1wbGVcbi0tLVxuYGBgaHRtbF9leGFtcGxlXG5ubi1weC10by1lbSg1KSAvLyBPdXRwdXQ6IDAuMzEyNWVtXG5ubi1weC10by1lbSg1LCAxMCkgLy8gT3V0cHV0OiAwLjVlbVxubm4tcHgtdG8tZW0oNSwgMjApIC8vIE91dHB1dDogMC4yNWVtXG5gYGBcbiovXG4vKmRvY1xuLS0tXG50aXRsZTogUGl4ZWwgdG8gcmVtXG5uYW1lOiBubi1weC10by1yZW1cbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5DYWxjdWxhdGUgdGhlIHJlbSB3aXRoIGEgZ2l2ZW4gcGl4ZWwgd2l0aCB0aGUgZ2l2ZW4gYmFzZSBmb250IHNpemVcblxuSW46ICA1cHhcbk91dDogMC4zMTI1cmVtXG5cblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cbi1yZW1cblxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHZhbHVlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5cblxuIyMgRGVwZW5kZW5jaWVzXG4tLS1cbm5uLXN0cmlwLXVuaXRcblxuIyMgRXhhbXBsZVxuLS0tXG5gYGBodG1sX2V4YW1wbGVcbm5uLXB4LXRvLXJlbSg1KSAvLyBPdXRwdXQgMC4zMTI1cmVtXG5gYGBcblxuKi9cbi8qZG9jXG4tLS1cbnRpdGxlOiBQaXhlbCB0byB1bml0XG5uYW1lOiBweC10by11bml0XG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuU2V0IGEgcHJvcGVydHkgYW5kIHZhbHVlIChwaXhlbCBiYXNlZCB3aXRob3V0IHVuaXQpXG5cbkNhbGN1bGF0ZXMgcmVtIC8gZW0gLyAlIGZyb20gZ2l2ZW4gcGl4ZWwgYW5kIGJhc2UgKGRlZmF1bHQgYmFzZSBpcyB0aGVcbmJhc2UtZm9udC1zaXplLCAxNnB4KVxuSWYgcnRsIGlzIHRydWUsIHRoaXMgbWl4aW4gaGFuZGxlcyBhbGwgdGhlIGRpcmVjdGlvbiBzdHVmZjpcbi0gU3dpdGNoaW5nIHRoZSB2YWx1ZXMsIHdoZW4gd2UgaGF2ZSBleGFjdGx5IDQgdmFsdWVzXG4tIFN3aXRjaGluZyBsZWZ0IGFuZCByaWdodCBpbiBwcm9wZXJ0aWVzIChwYWRkaW5nIGFuZCBtYXJnaW4pXG5cblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cbi1wdHUgKGZvciBlbSBvciAlIHRvIHBpeGVsIC0gd2l0aCBiYXNlIHBhcmFtZXRlcilcbi1yZW0gKGZvciByZW0gdG8gcGl4ZWwgLSB3aXRob3V0IGJhc2UgcGFyYW1ldGVyKVxuXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkcHJvcGVydHkgPSBwYWRkaW5nIHwgbWFyZ2luIHwgZm9udC1zaXplIHwgd2lkdGggfCBoZWlnaHRcbkBwYXJhbWV0ZXIgJHZhbHVlID0gUGl4ZWwgYmFzZWQgbnVtYmVyIC0gYWRkIHB4IHRvIGtlZXAgdGhlIHB4IGZvciBhIHZhbHVlXG5AcGFyYW1ldGVyICRiYXNlID0gcHggYmFzZWQgbnVtYmVyLCBEZWZhdWx0OiAxNnB4XG5AcGFyYW1ldGVyICR1bml0ID0gU2V0IHVuaXQ6IHB4IHwgZW0gfCByZW0gfCBwZXJjZW50XG5cblxuIyMgRGVwZW5kZW5jaWVzXG4tLS1cbmFic3RyYWN0L2Z1bmN0aW9ucy9zd2FwLWxlZnQtcmlnaHRcbmFic3RyYWN0L2Z1bmN0aW9ucy9zdHJpcC11bml0XG5cblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChwYWRkaW5nLCAwIDEwcHggMjAgMCk7ID0+IHBhZGRpbmc6IDAgMTBweCAxLjI1cmVtIDA7XG5AaW5jbHVkZSBubi1weC10by11bml0KHBhZGRpbmcsIDAgMTAgMjAgMCk7ID0+IHBhZGRpbmc6IDAgMC42MjVyZW0gMS4yNXJlbSAwO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChwYWRkaW5nLWxlZnQsIDEwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQocGFkZGluZy1yaWdodCwgMTApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtYXJnaW4sIDAgMTAgMjAgMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1hcmdpbi1sZWZ0LCAxMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1hcmdpbi1yaWdodCwgMTApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChmb250LXNpemUsIDIwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQod2lkdGgsIDEwMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1pbi13aWR0aCwgMTAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQobWFubi13aWR0aCwgMTAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQoaGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtaW4taGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtYW5uLWhlaWdodCwgMTAwKTtcbmBgYFxuXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvY3NzL2xlc3MtbWl4aW4tZm9yLXJlbS1mb250LXNpemluZy9cblxuKi9cbi8qZG9jXG4tLS1cbnRpdGxlOiBQaXhlbCB0byB1bml0bGVzc1xubmFtZTogbm4tcHgtdG8tdW5pdGxlc3NcbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5UaGlzIG1ha2VzIHRoZSBzYW1lIGNhbGN1bGF0aW9uIGFzIHB4IHRvIGVtLiBCdXQgaXQgZG9uJ3QgcHJpbnQgb3V0IHRoZSB1bml0LlxuXG5Vc2UgdGhpcyBmb3IgbGluZS1oZWlnaHRzLlxuXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG5cblxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHZhbHVlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5AcGFyYW1ldGVyICRiYXNlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5cblxuIyMgRGVwZW5kZW5jaWVzXG4tLS1cblxuXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbmxpbmUtaGVpZ2h0OiBubi1weC10by11bml0bGVzcyg1KSAvLyBPdXRwdXQ6IDAuMzEyNVxuYGBgXG5cblxuIyMgU291cmNlXG4tLS1cblxuXG4qL1xuLypkb2Ncbi0tLVxudGl0bGU6IFN0cmlwIHVuaXRcbm5hbWU6IG5uLXN0cmlwLXVuaXRcbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5TdHJpcHMgb2YgdGhlIHVuaXQgb2YgYSBudW1iZXJcblxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJG51bSA9IG51bWJlciB3aXRoIHVuaXQgKDVweCwgNWVtLCA1cmVtKVxuXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbm5uLXN0cmlwLXVuaXQoNXB4KSAvL091dHB1dDogNVxubm4tc3RyaXAtdW5pdCgxMGVtKSAvLyBPdXRwdXQ6IDEwXG5ubi1zdHJpcC11bml0KDE1cmVtKSAvLyBPdXRwdXQ6IDE1XG5gYGBcblxuKi9cbi8qZG9jXG4tLS1cbnRpdGxlOiB6LWluZGV4XG5uYW1lOiBubi16LWluZGV4XG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cbiBcbkJlY2F1c2Ugei1pbmRpY2VzIGNhbiBnZXQgdHJpY2t5IHdlIG1hbmFnZSB0aGVtIGluIHRoZSB0aGVtZS5zY3NzIGdsb2JhbGx5LlxuXG5BbHdheXMgdXNlIHRoaXMgbWl4aW4gdG8gc2V0IHNldCBhIHotaW5kZXguXG4gIFxuUmVhZCB0aGUgQmVzdCBQcmFjdGljZSB0byBnZXQgYW4gZnVsbCBkb2N1bWVudGF0aW9uOlxuaHR0cHM6Ly9wcm9qZWN0cy5uZXRjZW50cmljLmJpei93aWtpL2Rpc3BsYXkvRlJPTlRFTkQvSG93K3RvK3NldCthK3otaW5kZXhcbiBcbiBcbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG4telxuIFxuIFxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICRlbGVtZW50ID0gTmFtZSBvZiB0aGUgZWxlbWVudCAobm9ybWFsbHkgdGhpcyB3aWxsIGJlIHRoZSBtb2R1bGUgbmFtZSBmb3IgdGhlIG1haW4gc3RhY2spXG5AcGFyYW1ldGVyICRsaXN0ID0gTmFtZSBvZiB0aGUgbGlzdCAoZGVmYXVsdCAkei1pbmRpY2VzKS4gTXVzdCBiZSBvbmx5IHNldCBmb3Igc3RhY2sgY29udGV4dFxuQHBhcmFtZXRlciAkbWluID0gU2V0IGEgbWluaW11bSB6LWluZGV4IHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxpc3QuXG5cbiBcbiMjIERlcGVuZGVuY2llc1xuLS0tXG4kei1pbmRpY2VzIHZhcmlhYmxlIGluIHRoZSB0aGVtZS5zY3NzXG5cblxuIyMgRXhhbXBsZVxuLS0tXG4gIFxuYGBgaHRtbF9leGFtcGxlXG5cbi8vIEluIHRoZSBTQVNTIHRoZW1lIGZpbGVcblxuJHotaW5kaWNlczogc2xpZGVyLCBtb2RhbCwgZGlhbG9nLCBuYXZpZ2F0aW9uO1xuXG5cbi8vIEluIHRoZSBTQVNTIG1vZHVsZSBmaWxlXG5cbi5tb2RhbCB7XG4gICAgJl9fYmFzZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogbm4tei1pbmRleChtb2RhbCk7XG4gICAgfVxufVxuYGBgXG4gXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMTQvMDYvMTIvc2Fzc3ktei1pbmRleC1tYW5hZ2VtZW50LWZvci1jb21wbGV4LWxheW91dHMvXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IHJlbW92ZSBldmVyeSB1bml0XG5uYW1lOiBzdHJpcC11bml0XG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cbnJlbW92ZSBhbGwgdW5pdHNcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICRudW1iZXIgPSBudW1iZXIgd2l0aCB1bml0XG5cbiMjIEV4YW1wbGVcbi0tLVxuYGBgaHRtbF9leGFtcGxlXG5zdHJpcC11bml0KDVweCkgLy8gT3V0cHV0OiA1XG5gYGBcbiovXG4vKmRvY1xuLS0tXG50aXRsZTogU3dhcCBsZWZ0IHJpZ2h0IHZhbHVlc1xubmFtZTogbm4tcnRsXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuU3dhcCB0aGUgbmFtZXMgcmlnaHQgYW5kIGxlZnQgd2hlbiAkcnRsIGlzIHNldCB0byB0cnVlLlxuSWYgdGhlIHZhbHVlIGlzIG5vdCByaWdodCBvciBsZWZ0IGl0IHJldHVybnMgdGhlIG9yaWdpbmFsIHZhbHVlLlxuXG5JbjogIHJpZ2h0XG5PdXQ6IGxlZnQgKGluIHJ0bCksIHJpZ2h0IChpbiBsdHIpXG5cblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cblxuXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkb3JpZ2luID0gcmlnaHQgfCBsZWZ0XG5cblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxubm4tcnRsKGxlZnQpOiAxMHB4O1xubm4tcnRsKHBhZGRpbmctcmlnaHQpOiAzMHB4O1xubm4tcnRsKDAgMXB4IDhweCAxMnB4KSAvLyAwIDEycHggOHB4IDFweFxuYGBgXG5cblxuKi9cbi8qZG9jXG4tLS1cbnRpdGxlOiBDbGVhcmZpeFxubmFtZTogY2xlYXJmaXhcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5DbGVhcnMgYWZ0ZXIgZmxvYXRpbmcgZWxlbWVudFxuXG5Vc2UgdGhpcyBtaXhpbiBvbmx5IGluc2lkZSBtZWRpYSBxdWVyaWVzIHdoZXJlIHlvdSBjYW4ndCB1c2UgdGhlXG5hYnN0cmFjdC9leHRlbmRzL3V0aWxzL19jbGVhcmZpeCB2ZXJzaW9uLCB3aGljaCBhZGRzIGxlc3MgY29kZSB0byBjc3NcblxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuXG5cblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgY2xlYXJmaXg7XG5gYGBcblxuXG4jIyBTb3VyY2Vcbi0tLVxuaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9jc3MvY2xlYXItZml4L1xuKi9cbi5pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiAzMnB4O1xufVxuXG4vKiBkb2Ncbi0tLVxudGl0bGU6IGZvY3VzIGNvbG9yXG5uYW1lOiBmb2N1cyBjb2xvclxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkFkZCBhIGZvY3VzIGNvbG9yIHdoZW4ga2V5Ym9hcmQtZm9jdXMgaXMgYWN0aXZhdGVkXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbSAkbnVtYmVyXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IGlnbm9yZS1jb250YWluZXJcbm5hbWU6IGlnbm9yZS1jb250YWluZXJcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5TZXQgZnVsbCBwYWdlIHdpZHRoIGZvciBzb21ldGhpbmcgaW5zaWRlIGEgY29udGFpbmVyXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtICRjb250YWluZXItc2l6ZVxuQHBhcmFtICRndXR0ZXJcblxuKi9cbi8qIEdlbmVyYXRlcyBhbGwgdGhlIHJ1bGVzIGZvciB0aGUgZ3JpZCBjb2x1bW5zIHVwIHRvIHRoZSBnaXZlbiBhbW91bnQgb2YgY29sdW1uICovXG4vKiBHZW5lcmF0ZXMgYWxsIHRoZSBydWxlcyBmb3IgdGhlIGdyaWQgY29sdW1uIG9mZnNldCB1cCB0byB0aGUgZ2l2ZW4gYW1vdW50IG9mIGNvbHVtbiAqL1xuLyogR2VuZXJhdGVzIGFsbCB0aGUgcnVsZXMgZm9yIHRoZSBncmlkIGFuZCBjb2x1bW5zIGZvciB0aGUgZ2l2ZW4gYnJlYWsgcG9pbnQgYW5kIHRvdGFsIG9mIGNvbHVtbnMgKi9cbi8qIEFQSSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgdG8gZ2VuZXJhdGUgYSBncmlkIGNvbmZpZyAqL1xuLypkb2Ncbi0tLVxudHlwZTogYnV0dG9uIHR5cGVcbnN0YXRlOiBzdGF0ZSBidXR0b25cbi0tLVxuXG5CdXR0b24gc3R5bGVzXG5cblVzZSB0aGlzIG1peGluIGZvciBidXR0b24gc3R5bGVzOiBjb2xvciB0ZXh0LCBiYWNrZ3JvdW5kLCBib3JkZXJcblxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5AaW5jbHVkZSBidXR0b24ocHJpbWFyeSk7XG5gYGBcbiovXG4vKmRvY1xuLS0tXG5saW5lTGltaXQ6IFRoaXMgdmFsdWUgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgbGluZXMgYWZ0ZXIgd2hpY2ggdGhlIGNvbnRlbnQgd2lsbCBiZSBjbGFtcGVkLiBJdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLlxuLS0tXG5cblRydW5jYXRlcyB0ZXh0IGF0IGEgc3BlY2lmaWMgbnVtYmVyIG9mIGxpbmVzLlxuXG5Vc2UgdGhpcyBtaXhpbiB0byBoaWRlIGxvbmcgdGV4dC5cblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgbGluZS1jbGFtcCgkbGluZUxpbWl0OiA0KTtcbmBgYFxuKi9cbi8qIHR5cG9ncmFwaHlcbi0tLVxudGl0bGU6IHR5cG9ncmFwaHlcbm5hbWU6IFR5cG9ncmFwaHlcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5BZGRzIGZvbnQgQ1NTIHByb3BlcnRpZXMgYnkgYSBtYXAgcHJvdmlkZWRcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW0gJHQtc3R5bGVcbkBwYXJhbSAkaXMtaW1wb3J0YW50OiBmYWxzZVxuXG4qICR0LXN0eWxlIGlzIGV4cGVjdGVkIHRvIGJlIGEgbWFwIHdpdGggJ2RlZmF1bHQnIGFuZCAnYnJlYWtwb2ludFtzXScgc3VibWFwcyB3aXRoIGEgcHJvcGVydHlcbmZvciBldmVyeSBjc3MgcHJvcGVydHkgdG8gYmUgc2V0LlxuKiAkaXMtaW1wb3J0YW50IHBhcmFtZXRlciBhbGxvd3MgdG8gZm9yY2UgdHlwb2dyYXBoeSBwcm9wZXJ0aWVzIHRvIGJlIHNldCBhcyAhaW1wb3J0YW50XG5UcnkgdG8gYXZvaWQgaXRzIHVzZSwgYnV0IGl0IG1pZ2h0IGJlIG5lZWRlZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBzdHlsZXMgZm9yIGEgY29tcG9uZW50XG5hcmUgdmVyeSBzcGVjaWZpYyBhbmQgdG8gb3ZlcndyaXRlIHRoZSBnZW5lcmljIG9uZXMgaXMgdG9vIGNvbXBsZXggKGlmIHRoZXkgaGF2ZSBhIGxvdCBvZiBzcGVjaWZpY2l0eSlcblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogaGlkZGVuXG5uYW1lOiBoaWRkZW5cbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5IaWRlIGZyb20gYm90aCBzY3JlZW5yZWFkZXJzIGFuZCBicm93c2VyczogaDVicC5jb20vdVxuIyMgUGFyYW1ldGVyc1xuLS0tXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IG92ZXJsYXlcbm5hbWU6IG92ZXJsYXlcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5DcmVhdGVzIGFuIG92ZXJsYXkgd2l0aCB0aGUgcHJvdmlkZWQgYmFja2dyb3VuZCBjb2xvclxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW0gJGJnQ29sb3JcblxuKi9cbi50ZWFzZXI6bm90KC50ZWFzZXItLWhlcm8pOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSB7XG4gIC0tdGVhc2VyLWhlaWdodDogMzAwcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VyOm5vdCgudGVhc2VyLS1oZXJvKTpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkge1xuICAgIC0tdGVhc2VyLWhlaWdodDogNDQwcHg7XG4gIH1cbn1cblxuLmNtcC10ZWFzZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXRlYXNlci1oZWlnaHQpO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLmNtcC10ZWFzZXIge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4uY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHBhZGRpbmc6IDMuNzVyZW0gMXJlbTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNtcC10ZWFzZXJfX2NvbnRlbnQuaXMtaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5jbXAtY2Fyb3VzZWxfX2l0ZW0gLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICAgIHBhZGRpbmc6IDAgNTZweDtcbiAgfVxufVxuXG4uY21wLXRlYXNlcl9fdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICBjb2xvcjogIzUzNTY1YTtcbn1cblxuW2RhdGEtZGVhbGVyLXByaXZhdGVdIC5jbXAtdGVhc2VyX190aXRsZSB7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4xcHg7XG59XG5cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1yZWd1bGFyKTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbHMtZGVmYXVsdCk7XG4gIGNvbG9yOiAjNTM1NjVhO1xuICBtYXJnaW4tdG9wOiAxZW07XG59XG5cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBhIHtcbiAgY29sb3I6ICMwMDRmYmM7XG59XG5cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBhOmhvdmVyLCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gYTpmb2N1cyB7XG4gIGNvbG9yOiAjMDA1NmQ2O1xufVxuXG4uY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gdWwsXG4uY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gb2wge1xuICBwYWRkaW5nLWxlZnQ6IDMycHg7XG59XG5cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB1bCB7XG4gIGxpc3Qtc3R5bGU6IGRpc2M7XG59XG5cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBvbCB7XG4gIGxpc3Qtc3R5bGU6IGRlY2ltYWw7XG59XG5cbi5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBwYWRkaW5nLWlubGluZS1lbmQ6IDEuNXJlbTtcbn1cblxuLnRlYXNlcl9fY3RhLS1saW5rIC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rIHtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgbWFyZ2luOiAwIDEwcHggMTBweCAwO1xufVxuXG4uY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC0ycHg7XG4gIHdpZHRoOiAyNHB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMjRweCAhaW1wb3J0YW50O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBwb2ludGVyLWV2ZW50czogYWxsICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFzZXJfX2N0YS0tbGluayAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6OmFmdGVyIHtcbiAgbWFyZ2luLWlubGluZS1lbmQ6IGNhbGMoMzRweCAqIC0xKTtcbn1cblxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW1lZGl1bSk7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDEycHggMzJweDtcbiAgYmFja2dyb3VuZDogIzAwNGZiYztcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwNGZiYztcbiAgY29sb3I6ICNmZmY7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMXM7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmhvdmVyLCAudGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZDpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kOiAjMDA1NmQ2O1xuICBib3JkZXI6IDFweCBzb2xpZCAjMDA1NmQ2O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmhvdmVyOjphZnRlciwgLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6Zm9jdXM6OmFmdGVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOjphZnRlciB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICMwMDQxYTM7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmRpc2FibGVkLCAudGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZC5kaXNhYmxlZCB7XG4gIGJhY2tncm91bmQ6ICM4ZGM5YmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4ZGM5YmY7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcyNC12aWV3XCIpO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBmaWx0ZXI6IHNhdHVyYXRlKDAlKSBicmlnaHRuZXNzKDAlKSBpbnZlcnQoMTAwJSkgb3BhY2l0eSgxKTtcbiAgZmlsdGVyOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gICAgPGZpbHRlciBpZD1cInJlY29sb3JcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+ICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiICAgICAgICAgMCAwIDAgMCAxICAgICAgICAgMCAwIDAgMCAxICAgICAgICAgMCAwIDAgMCAxICAgICAgICAgMCAwIDAgMSAwICAgICAgICAgXCIvPiAgICA8L2ZpbHRlcj4gICAgPC9zdmc+ICAgICNyZWNvbG9yJyk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cblxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGRbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzI0LXZpZXdcIik7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGZpbHRlcjogc2F0dXJhdGUoMCUpIGJyaWdodG5lc3MoMCUpIGludmVydCgxMDAlKSBvcGFjaXR5KDEpO1xuICBmaWx0ZXI6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiAgICA8ZmlsdGVyIGlkPVwicmVjb2xvclwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj4gICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIgICAgICAgICAwIDAgMCAwIDEgICAgICAgICAwIDAgMCAwIDEgICAgICAgICAwIDAgMCAwIDEgICAgICAgICAwIDAgMCAxIDAgICAgICAgICBcIi8+ICAgIDwvZmlsdGVyPiAgICA8L3N2Zz4gICAgI3JlY29sb3InKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGRbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuXG4udGVhc2VyOm5vdCguc3RhZ2UpOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluaykgLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGRbdGFyZ2V0PV9ibGFua106OmFmdGVyIHtcbiAgZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVzcygxKTtcbn1cblxuLnRlYXNlcjpub3QoLnN0YWdlKTpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspIC50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOjphZnRlciB7XG4gIGZpbHRlcjogaW52ZXJ0KDEpIGJyaWdodG5lc3MoMSk7XG59XG5cbi5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LWZhbWlseTogdmFyKC0tZmYtbWVkaXVtKTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMTJweCAzMnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjNTM1NjVhO1xuICBjb2xvcjogIzUzNTY1YTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxcztcbiAgcGFkZGluZy1pbmxpbmUtZW5kOiAzLjQzNzVyZW07XG59XG5cbi5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpub3QoOmZpcnN0LWNoaWxkKTpob3ZlciwgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmZvY3VzIHtcbiAgYmFja2dyb3VuZDogI2UxZGZkZDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzUzNTY1YTtcbn1cblxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmhvdmVyOjphZnRlciwgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmZvY3VzOjphZnRlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpO1xufVxuXG4uY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6OmFmdGVyIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zcyBlYXNlLW91dDtcbn1cblxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmRpc2FibGVkLCAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCkuZGlzYWJsZWQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjODg4YjhkO1xuICBjb2xvcjogIzg4OGI4ZDtcbn1cblxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcyNC12aWV3XCIpO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBmaWx0ZXI6IHNhdHVyYXRlKDAlKSBicmlnaHRuZXNzKDAlKSBpbnZlcnQoMzMuOTIxNTclKSBvcGFjaXR5KDEpO1xuICBmaWx0ZXI6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiAgICA8ZmlsdGVyIGlkPVwicmVjb2xvclwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj4gICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIgICAgICAgICAwIDAgMCAwIDAuMzI1NDkgICAgICAgICAwIDAgMCAwIDAuMzM3MjUgICAgICAgICAwIDAgMCAwIDAuMzUyOTQgICAgICAgICAwIDAgMCAxIDAgICAgICAgICBcIi8+ICAgIDwvZmlsdGVyPiAgICA8L3N2Zz4gICAgI3JlY29sb3InKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cblxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvbGluay1leHRlcm5hbC5zdmcjbGluay1leHRlcm5hbC1pY29uLXcyNC12aWV3XCIpO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBmaWx0ZXI6IHNhdHVyYXRlKDAlKSBicmlnaHRuZXNzKDAlKSBpbnZlcnQoMzMuOTIxNTclKSBvcGFjaXR5KDEpO1xuICBmaWx0ZXI6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiAgICA8ZmlsdGVyIGlkPVwicmVjb2xvclwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj4gICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIgICAgICAgICAwIDAgMCAwIDAuMzI1NDkgICAgICAgICAwIDAgMCAwIDAuMzM3MjUgICAgICAgICAwIDAgMCAwIDAuMzUyOTQgICAgICAgICAwIDAgMCAxIDAgICAgICAgICBcIi8+ICAgIDwvZmlsdGVyPiAgICA8L3N2Zz4gICAgI3JlY29sb3InKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cblxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOjphZnRlciB7XG4gIG1hcmdpbi1pbmxpbmUtZW5kOiBjYWxjKDM0cHggKiAtMSk7XG4gIC8qIGZvcmNlIGZpbHRlcjogbm9uZSB0byBhdm9pZCB0ZXh0LS13aGl0ZSBzZXR0aW5nIGFmZmVjdHMgdGhlIGljb24gY29sb3IgKi9cbn1cblxuLnRlYXNlcjpub3QoLnN0YWdlKTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOjphZnRlciB7XG4gIGZpbHRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4udGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluaykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgY29sb3I6ICM1MzU2NWE7XG59XG5cbi5jbXAtdGVhc2VyX19lbWJlZCwgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbn1cblxuLmNtcC10ZWFzZXJfX2VtYmVkIGlmcmFtZSB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiB2YXIoLS10ZWFzZXItaGVpZ2h0KTtcbn1cblxuLmNtcC10ZWFzZXJfX2VtYmVkICsgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmNtcC10ZWFzZXJfX2VtYmVkIC5jbXAtZW1iZWQgPiAqIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4uY21wLXRlYXNlcl9faW1hZ2UgaW1nLFxuLmNtcC10ZWFzZXJfX2ltYWdlIC5jbXAtaW1hZ2UsXG4uY21wLXRlYXNlcl9faW1hZ2UgLmNtcC1pbWFnZV9faW1hZ2Uge1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5jbXAtdGVhc2VyX19pbWFnZSAuY21wLWltYWdlIHZpZGVvLCAuY21wLXRlYXNlcl9faW1hZ2UgLmNtcC1pbWFnZV9faW1hZ2UgdmlkZW8ge1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5jbXAtdGVhc2VyX19pbWFnZSAuY21wLWltYWdlIC5zN2RtLWR5bmFtaWMtbWVkaWEgdmlkZW8sIC5jbXAtdGVhc2VyX19pbWFnZSAuY21wLWltYWdlX19pbWFnZSAuczdkbS1keW5hbWljLW1lZGlhIHZpZGVvIHtcbiAgdG9wOiAwICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgbWluLXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIG1pbi1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuLmNtcC10ZWFzZXJfX2ltYWdlIC5jbXAtaW1hZ2UgLmltZ19fbGluayB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udGVhc2VyOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLnRlYXNlcjpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICAgIHdpZHRoOiA0MCU7XG4gIH1cbiAgLmNhcm91c2VsIC50ZWFzZXI6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgICB3aWR0aDogNTAlO1xuICB9XG59XG5cbi5jb2xsYWdlIC50ZWFzZXI6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyX19jb250ZW50LFxuLmNvbHVtbmNvbnRyb2wgLnRlYXNlcjpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnRlYXNlci0taGVybyB7XG4gIC0tdGVhc2VyLWhlaWdodDogNDQwcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VyLS1oZXJvIHtcbiAgICAtLXRlYXNlci1oZWlnaHQ6IDYwMHB4O1xuICB9XG59XG5cbi50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXIge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgcGFkZGluZzogMWVtIDA7XG59XG5cbi50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX2ltYWdlLCAudGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyX19lbWJlZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYXNwZWN0LXJhdGlvOiAxNi85O1xufVxuXG4udGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyX19lbWJlZCBpZnJhbWUge1xuICBhc3BlY3QtcmF0aW86IDE2Lzk7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLnRlYXNlci0tbGF5b3V0LXRvcC50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tdG9wOiAwO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctdG9wOiA1NyU7XG59XG5cbi50ZWFzZXItLWxheW91dC10b3AudGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluayB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDc1cHg7XG4gIGhlaWdodDogNzVweDtcbiAgbWFyZ2luOiAtMjVweCAwIDAgLTQwcHg7XG59XG5cbi50ZWFzZXItLWxheW91dC10b3AudGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YmVmb3JlIHtcbiAgZm9udC1zaXplOiAzNHB4O1xufVxuXG4udGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmsge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW1lZGl1bSk7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDEycHggMzJweDtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgIzUzNTY1YTtcbiAgY29sb3I6ICM1MzU2NWE7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMXM7XG4gIHBhZGRpbmctaW5saW5lLWVuZDogMy40Mzc1cmVtO1xufVxuXG4udGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6aG92ZXIsIC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmb2N1cyB7XG4gIGJhY2tncm91bmQ6ICNlMWRmZGQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICM1MzU2NWE7XG59XG5cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpob3Zlcjo6YWZ0ZXIsIC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmb2N1czo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KTtcbn1cblxuLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjphZnRlciB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7XG59XG5cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpkaXNhYmxlZCwgLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rLmRpc2FibGVkIHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzg4OGI4ZDtcbiAgY29sb3I6ICM4ODhiOGQ7XG59XG5cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MjQtdmlld1wiKTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgZmlsdGVyOiBzYXR1cmF0ZSgwJSkgYnJpZ2h0bmVzcygwJSkgaW52ZXJ0KDMzLjkyMTU3JSkgb3BhY2l0eSgxKTtcbiAgZmlsdGVyOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gICAgPGZpbHRlciBpZD1cInJlY29sb3JcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+ICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiICAgICAgICAgMCAwIDAgMCAwLjMyNTQ5ICAgICAgICAgMCAwIDAgMCAwLjMzNzI1ICAgICAgICAgMCAwIDAgMCAwLjM1Mjk0ICAgICAgICAgMCAwIDAgMSAwICAgICAgICAgXCIvPiAgICA8L2ZpbHRlcj4gICAgPC9zdmc+ICAgICNyZWNvbG9yJyk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcxNi12aWV3XCIpO1xuICB9XG59XG5cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGlua1t0YXJnZXQ9X2JsYW5rXTphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MjQtdmlld1wiKTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgZmlsdGVyOiBzYXR1cmF0ZSgwJSkgYnJpZ2h0bmVzcygwJSkgaW52ZXJ0KDMzLjkyMTU3JSkgb3BhY2l0eSgxKTtcbiAgZmlsdGVyOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gICAgPGZpbHRlciBpZD1cInJlY29sb3JcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+ICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiICAgICAgICAgMCAwIDAgMCAwLjMyNTQ5ICAgICAgICAgMCAwIDAgMCAwLjMzNzI1ICAgICAgICAgMCAwIDAgMCAwLjM1Mjk0ICAgICAgICAgMCAwIDAgMSAwICAgICAgICAgXCIvPiAgICA8L2ZpbHRlcj4gICAgPC9zdmc+ICAgICNyZWNvbG9yJyk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGlua1t0YXJnZXQ9X2JsYW5rXTphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvbGluay1leHRlcm5hbC5zdmcjbGluay1leHRlcm5hbC1pY29uLXcxNi12aWV3XCIpO1xuICB9XG59XG5cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICBtYXJnaW4taW5saW5lLWVuZDogY2FsYygzNHB4ICogLTEpO1xuICAvKiBmb3JjZSBmaWx0ZXI6IG5vbmUgdG8gYXZvaWQgdGV4dC0td2hpdGUgc2V0dGluZyBhZmZlY3RzIHRoZSBpY29uIGNvbG9yICovXG59XG5cbi50ZWFzZXI6bm90KC5zdGFnZSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICBmaWx0ZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmsge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW1lZGl1bSk7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiA3NXB4O1xuICBoZWlnaHQ6IDc1cHg7XG4gIGZvbnQtc2l6ZTogMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzUzNTY1YTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZGZkZDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpiZWZvcmUge1xuICBmb250LWZhbWlseTogXCJWb2x2b0ljb25zXCI7XG4gIGNvbnRlbnQ6IFwi7qSRXCI7XG4gIHNwZWFrOiBub25lO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICAvKiBCZXR0ZXIgRm9udCBSZW5kZXJpbmcgPT09PT09PT09PT0gKi9cbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluayB7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgaGVpZ2h0OiA1MHB4O1xuICB9XG59XG5cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmhvdmVyLCAudGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmb2N1cyB7XG4gIGNvbG9yOiAjNTM1NjVhO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFkZmRkO1xuICBib3JkZXI6IDA7XG59XG5cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmhvdmVyOjpiZWZvcmUsIC50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZvY3VzOjpiZWZvcmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjpiZWZvcmUge1xuICBtYXJnaW4tbGVmdDogN3B4O1xuICBmb250LXNpemU6IDM0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyLjI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiAyM3B4O1xuICB9XG59XG5cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjpiZWZvcmUge1xuICBmb250LXNpemU6IDIzcHg7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG59XG5cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjphZnRlciB7XG4gIGNvbnRlbnQ6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50ZWFzZXJfX2N0YS0tdmlkZW86bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAgbWFyZ2luLXRvcDogMjVweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4udGVhc2VyX19jdGEtLWxpbms6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmsge1xuICBmb250LWZhbWlseTogdmFyKC0tZmYtcmVndWxhcik7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxzLWRlZmF1bHQpO1xuICBwYWRkaW5nOiAwO1xuICBjb2xvcjogIzAwNGZiYztcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbn1cblxuLnRlYXNlcl9fY3RhLS1saW5rOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcyNC12aWV3XCIpO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgZmlsdGVyOiBzYXR1cmF0ZSgwJSkgYnJpZ2h0bmVzcygwJSkgaW52ZXJ0KDM2Ljg2Mjc1JSkgb3BhY2l0eSgxKTtcbiAgZmlsdGVyOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gICAgPGZpbHRlciBpZD1cInJlY29sb3JcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+ICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiICAgICAgICAgMCAwIDAgMCAwICAgICAgICAgMCAwIDAgMCAwLjMwOTggICAgICAgICAwIDAgMCAwIDAuNzM3MjUgICAgICAgICAwIDAgMCAxIDAgICAgICAgICBcIi8+ICAgIDwvZmlsdGVyPiAgICA8L3N2Zz4gICAgI3JlY29sb3InKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcl9fY3RhLS1saW5rOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cblxuLnRlYXNlcl9fY3RhLS1saW5rOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjphZnRlciB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29udGVudDogJyc7XG59XG5cbi50ZWFzZXJfX2N0YS0tbGluazpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpob3Zlcjo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KTtcbn1cblxuLnRlYXNlcl9fY3RhLS1saW5rOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvbGluay1leHRlcm5hbC5zdmcjbGluay1leHRlcm5hbC1pY29uLXcyNC12aWV3XCIpO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgZmlsdGVyOiBzYXR1cmF0ZSgwJSkgYnJpZ2h0bmVzcygwJSkgaW52ZXJ0KDM2Ljg2Mjc1JSkgb3BhY2l0eSgxKTtcbiAgZmlsdGVyOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gICAgPGZpbHRlciBpZD1cInJlY29sb3JcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+ICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiICAgICAgICAgMCAwIDAgMCAwICAgICAgICAgMCAwIDAgMCAwLjMwOTggICAgICAgICAwIDAgMCAwIDAuNzM3MjUgICAgICAgICAwIDAgMCAxIDAgICAgICAgICBcIi8+ICAgIDwvZmlsdGVyPiAgICA8L3N2Zz4gICAgI3JlY29sb3InKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcl9fY3RhLS1saW5rOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cblxuLnRlYXNlciB7XG4gIG1hcmdpbjogMzBweCAwO1xufVxuXG4udGVhc2VyLm1hcmdpbi10b3AtLW5vbmUge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuXG4udGVhc2VyLm1hcmdpbi10b3AtLWRvdWJsZSB7XG4gIG1hcmdpbi10b3A6IGNhbGMoMzBweCAqIDIpO1xufVxuXG4udGVhc2VyLm1hcmdpbi1ib3R0b20tLW5vbmUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4udGVhc2VyLm1hcmdpbi1ib3R0b20tLWRvdWJsZSB7XG4gIG1hcmdpbi1ib3R0b206IGNhbGMoMzBweCAqIDIpO1xufVxuXG4uYWVtLUdyaWQgPiAudGVhc2VyOmZpcnN0LWNoaWxkOm5vdCgubWFyZ2luLXRvcC0tZG91YmxlKSB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi50ZWFzZXJfX2ltZy0tZnVsbCAuY21wLXRlYXNlcl9faW1hZ2Uge1xuICBtYXJnaW46IDAgLTE1cHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VyX19pbWctLWZ1bGwgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgICBtYXJnaW46IDAgLTE1cHg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGVhc2VyX19pbWctLWZ1bGwgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW46IDAgY2FsYygoMTAwdncgLSAxMjAwcHgpIC8gLTIpO1xuICB9XG59XG5cbi50ZWFzZXJfX292ZXJsYXktLWRhcmsudGVhc2VyIC5jbXAtaW1hZ2UsIC50ZWFzZXJfX292ZXJsYXktLWRhcmsudGVhc2VyLS1oZXJvIC5jbXAtaW1hZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50ZWFzZXJfX292ZXJsYXktLWRhcmsudGVhc2VyIC5jbXAtaW1hZ2U6OmFmdGVyLCAudGVhc2VyX19vdmVybGF5LS1kYXJrLnRlYXNlci0taGVybyAuY21wLWltYWdlOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGluc2V0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udGVhc2VyX19vdmVybGF5LS1saWdodGVyLWRhcmsudGVhc2VyIC5jbXAtaW1hZ2UsIC50ZWFzZXJfX292ZXJsYXktLWxpZ2h0ZXItZGFyay50ZWFzZXItLWhlcm8gLmNtcC1pbWFnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnRlYXNlcl9fb3ZlcmxheS0tbGlnaHRlci1kYXJrLnRlYXNlciAuY21wLWltYWdlOjphZnRlciwgLnRlYXNlcl9fb3ZlcmxheS0tbGlnaHRlci1kYXJrLnRlYXNlci0taGVybyAuY21wLWltYWdlOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGluc2V0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udGVhc2VyX190ZXh0LS1yaWdodDpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlcl9fdGV4dC0tcmlnaHQ6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgLnRlYXNlcl9fdGV4dC0tcmlnaHQ6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgICBtYXJnaW4tbGVmdDogNjAlO1xuICB9XG59XG5cbi50ZWFzZXJfX3RleHQtLWNlbnRlciAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC50ZWFzZXJfX3RleHQtLWNlbnRlciAuY21wLXRlYXNlcl9fY29udGVudCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC50ZWFzZXJfX3RleHQtLWNlbnRlciAuY21wLXRlYXNlcl9fY29udGVudCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogODUwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbn1cblxuLnRlYXNlcl9fdGV4dC0tY2VudGVyIC5jbXAtdGVhc2VyX19jb250ZW50IC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi50ZWFzZXJfX3RleHQtLWNlbnRlci50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tbGluaykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE3cHgpO1xufVxuXG4udGVhc2VyX190ZXh0LS13aGl0ZSAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24sIC50ZWFzZXJfX3RleHQtLXdoaXRlIC5jbXAtdGVhc2VyX190aXRsZSB7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4udGVhc2VyX190ZXh0LS13aGl0ZTpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlciBhIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi50ZWFzZXJfX3RleHQtLXdoaXRlOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyIGE6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIHdpZHRoOiB2YXIoLS12LWljb24tc2l6ZSk7XG4gIGhlaWdodDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBmaWx0ZXI6IHNhdHVyYXRlKDAlKSBicmlnaHRuZXNzKDAlKSBpbnZlcnQoMTAwJSkgb3BhY2l0eSgxKTtcbiAgZmlsdGVyOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gICAgPGZpbHRlciBpZD1cInJlY29sb3JcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+ICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiICAgICAgICAgMCAwIDAgMCAxICAgICAgICAgMCAwIDAgMCAxICAgICAgICAgMCAwIDAgMCAxICAgICAgICAgMCAwIDAgMSAwICAgICAgICAgXCIvPiAgICA8L2ZpbHRlcj4gICAgPC9zdmc+ICAgICNyZWNvbG9yJyk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJfX3RleHQtLXdoaXRlOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyIGE6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuXG4udGVhc2VyX190ZXh0LS13aGl0ZTpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlciBhW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvbGluay1leHRlcm5hbC5zdmcjbGluay1leHRlcm5hbC1pY29uLXcyNC12aWV3XCIpO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgZmlsdGVyOiBzYXR1cmF0ZSgwJSkgYnJpZ2h0bmVzcygwJSkgaW52ZXJ0KDEwMCUpIG9wYWNpdHkoMSk7XG4gIGZpbHRlcjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+ICAgIDxmaWx0ZXIgaWQ9XCJyZWNvbG9yXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIiAgICAgICAgIDAgMCAwIDAgMSAgICAgICAgIDAgMCAwIDAgMSAgICAgICAgIDAgMCAwIDAgMSAgICAgICAgIDAgMCAwIDEgMCAgICAgICAgIFwiLz4gICAgPC9maWx0ZXI+ICAgIDwvc3ZnPiAgICAjcmVjb2xvcicpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGVhc2VyX190ZXh0LS13aGl0ZTpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlciBhW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cblxuLnRlYXNlcl9fdGV4dC0td2hpdGU6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXIgLnZpZGVvX19saW5rIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4udGVhc2VyX190ZXh0LS13aGl0ZS50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uLCAudGVhc2VyX190ZXh0LS13aGl0ZS50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgY29sb3I6ICM1MzU2NWE7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXItLWxheW91dC10b3ApOm5vdCgudGVhc2VyX190aXRsZS0tdm9sdm9ub3Z1bSkgLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLWJyb2FkKTtcbiAgZm9udC1zaXplOiA0OHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMC45NTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxzLXZvbHZvKTtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLnRlYXNlcl9fdGl0bGUtLXZvbHZvbm92dW0gLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW1lZGl1bSk7XG4gIGZvbnQtc2l6ZTogMjdweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxzLWRlZmF1bHQpO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlcl9fdGl0bGUtLXZvbHZvbm92dW0gLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDMycHg7XG4gIH1cbn1cblxuLyojIHNvdXJjZU1hcHBpbmdVUkw9dGVhc2VyLmJ1bmRsZS5jc3MubWFwICovIl19 */