@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
```


*/
/*
    This mixin converts any unitless number (for example 40) to the correct unit, according to the given axis.

    Parameters:
    - $value: unitless number to be converted. A unit in $value will correspond to a px in the browser,
        no matter if it's output as px or rem

    Returns
    - Horizontal: will convert the number to pixels (40px)
    - Vertical: will convert the number to rem (if rem === 16px, then 40 will be converted to 2.5 rem)
*/
/*
    Converts a unitless number to the corresponding unit on the horizontal axis.
    By default will convert the value to px.
*/
/*
    Converts a unitless number to the corresponding unit on the vertical axis.
    By default will convert the value to rem.
*/
/* stylelint-disable */
/* doc
---
title: Swap left right values
name: swap-left-right-values
category: functions
---

Swap the values for right and left when $rtl is set to true:

In:  0 5px 8px 12px
Out: 0 12px 8px 5px (in rtl)

## Parameters
---
@parameter $values = 4 numbers (works with all units)

## Example
---

```html_example
swap-left-right-values(0 1px 8px 12px) // 0 12px 8px 1px
swap-left-right-values(0 1em 8em 12em) // 0 12em 8em 1em
wap-left-right-values(0 1rem 8rem 12rem) // 0 12rem 8rem 1rem
```

## Source
---
http://stackoverflow.com/questions/14199323/right-to-left-rtl-support-in-sass-project

*/
/* stylelint-disable */
/* doc
---
title: Swap left right names
name: swap-left-right-names
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
swap-left-right-name(left)
swap-left-right-name(right)
```

## Source
---
http://stackoverflow.com/questions/14199323/right-to-left-rtl-support-in-sass-project

*/
/*  List of CSS properties that will always be output at least as 2 different values
    in order to be able to convert each one to the correct axis unit */
/*
    Mixin for automatically handling spacings around/between elements.

    This mixin will automatically invert the lef/right directions in RTL languages.
    Also, the unitless values will be converted to the proper unit according to the axis

    Parameters:
    - $property-name: name of the CSS property that should be output. Supported properties are:
        margin, margin-top, margin-right, margin-bottom, margin-left
        padding, padding-top, padding-right, padding-bottom, padding-left
        width, height, min-width, max-width, min-height, min-height
    - $value: value that will be output as part of the given property. Supported values are:
        Unitless number (40): this should be used most of the times. It will automatically be converted
            to the correct unit depending on the axis where it's used (horizontal axis => px, vertical axis => rem).
            Each unit in $value will correspond to a px in the browser, no matter to which unit it will be converted.
        Number with unit (40px, 40%...): the number and the unit will be preserved and only the left/right inversion
            will be done for RTL languages
        List of values (40 30% 20 10): margin and padding shorthands whith multiple values are supported.
            The left/right values will be automatically swapped in RTL and the unitless numbers will be converted
            to the corresponding unit. Unitless and numbers with units can be mixed in the same call.
        Using calc() in any of the previous examples is supported, although no unit conversion will be done

 ## Example
---

```html_example
@include spacing(padding, 0 10px 20 0); => padding: 0 10px 2rem 0;
@include spacing(padding, 0 10 20 0); => padding: 0 10px 2rem 0;
@include spacing(padding-left, 10);
@include spacing(padding-right, 10);
@include spacing(margin, 0 10 20 0);
@include spacing(margin-left, 10);
@include spacing(margin-right, 10);
@include spacing(width, 100);
@include spacing(min-width, 100);
@include spacing(max-width, 100);
@include spacing(height, 100);
@include spacing(min-height, 100);
@include spacing(max-height, 100);
```
*/
/*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 .embed__youtube {
  aspect-ratio: auto;
}

.cmp-teaser__embed .embed__youtube iframe,
.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):not(.stage) .cmp-teaser__content {
  width: 100%;
}

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

.collage .teaser:not(.teaser--layout-top):not(.stage) .cmp-teaser__content,
.columncontrol .teaser:not(.teaser--layout-top):not(.stage) .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--single {
  margin-top: 30px;
}

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

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

.teaser.margin-bottom--single {
  margin-bottom: 30px;
}

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

.aem-Grid > .teaser:first-child:not(.margin-top--single):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(.stage):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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3RhcmdldC92YXVsdC13b3JrL2pjcl9yb290L2FwcHMvdm9sdm8vY2xpZW50bGlicy9zaGFyZWQvY29tcG9uZW50cy9jb250ZW50L3RlYXNlci90ZWFzZXIuYnVuZGxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7O0VBS0U7QUFDRjs7O0VBR0U7QUFDRjs7R0FFRztBQUNIO0VBQ0Usb0JBQW9CO0NBQ3JCOztBQUVEO0VBQ0U7SUFDRSxvQkFBb0I7R0FDckI7Q0FDRjs7QUFFRDtFQUNFLDBCQUEwQjtFQUMxQiwyQkFBMkI7Q0FDNUI7O0FBRUQ7RUFDRSxtQkFBbUI7Q0FDcEI7O0FBRUQ7RUFDRSxxQkFBcUI7RUFDckIsbUJBQW1CO0VBQ25CLGNBQWM7RUFDZCxhQUFhO0VBQ2IsaUJBQWlCO0NBQ2xCOztBQUVEO0VBQ0UsY0FBYztDQUNmOztBQUVEO0VBQ0U7SUFDRSxnQkFBZ0I7R0FDakI7Q0FDRjs7QUFFRDtFQUNFLGdCQUFnQjtFQUNoQixLQUFLO0VBQ0wsdUJBQXVCO0VBQ3ZCLHNCQUFzQjtDQUN2Qjs7QUFFRDtFQUNFO0lBQ0UscUNBQTZCO1lBQTdCLDZCQUE2QjtHQUM5QjtDQUNGOztBQUVEO0VBQ0U7SUFDRSxxQ0FBNkI7WUFBN0IsNkJBQTZCO0dBQzlCO0NBQ0Y7O0FBRUQ7RUFDRTtJQUNFLGNBQWM7R0FDZjtDQUNGOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0NFO0FBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDRTtBQUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkRFO0FBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF3Q0U7QUFDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBd0JFO0FBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QixpQkFBaUI7RUFDakIsa0NBQWtDO0VBQ2xDLG9CQUFvQjtDQUNyQjs7QUFFRDtFQUNFO0lBQ0UsZ0JBQWdCO0dBQ2pCO0NBQ0YiLCJmaWxlIjoiLi4vdGFyZ2V0L3ZhdWx0LXdvcmsvamNyX3Jvb3QvYXBwcy92b2x2by9jbGllbnRsaWJzL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvdGVhc2VyL3RlYXNlci5idW5kbGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLypcbkFsc28gcGxlYXNlIGZvbGxvdyB0aGlzXG5EbyB5b3VyIHByb2plY3QgaGF2ZSBkaWZlcmVudCBjaGFyc2V0IGxhbmd1YWdlcyB0byBhY2NvdW50IHdpdGg/XG4gICAgICAtIFllcyAtPiBmb2xsb3cgaHR0cHM6Ly9wcm9qZWN0cy5uZXRjZW50cmljLmJpei93aWtpL2Rpc3BsYXkvRlJPTlRFTkQvQ1NTKy0rRm9udCtOb3JtYWxpemF0aW9uXG4gICAgICAtIE5vIC0+IFlvdSBjYW4gc3RpbGwgdXNlIGl0LCB0aGVyZSBhcmUgdG9ucyBvZiBhZHZhbnRhZ2VzLCBidXQgaXRzIGNyZWF0ZSBzb21lIGV4dHJhIGNzcyBhbmQgbGF5b3V0IHJlbmRlcmluZ1xuKi9cbi8qXG4gICogRGVzaWduIHNwZWM6XG4gICogaHR0cHM6Ly93d3cuZmlnbWEuY29tL2ZpbGUvU1I0cnZRbE5uQ21QTXJROVdZYUlxdi9icmFuY2gvVEpxa0Z5bXEwOXdmOEt3bVkxV05jai9Wb2x2by1BRU0tRGVzaWduLXN5c3RlbT90eXBlPWRlc2lnbiZub2RlLWlkPTctMjYmdD1wQW05MTZWUmlxQ09EMkkxLTBcbiovXG4vKipcbiAqIHotaW5kZXhlcyBmcm9tIGxvd2VyIHRvIC0+IGhpZ2hlclxuICovXG46cm9vdCB7XG4gIC0tdi1pY29uLXNpemU6IDI0cHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICA6cm9vdCB7XG4gICAgLS12LWljb24tc2l6ZTogMTZweDtcbiAgfVxufVxuXG4udi1pY29uIHtcbiAgd2lkdGg6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS12LWljb24tc2l6ZSk7XG59XG5cbi52LWljb24gc3ZnIHBhdGgge1xuICBmaWxsOiBjdXJyZW50Q29sb3I7XG59XG5cbi52LWljb24tc3ByaXRlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWF4LWhlaWdodDogMDtcbiAgbWF4LXdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udi1pY29uLS0xNiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudi1pY29uLS0xNiB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICB9XG59XG5cbi52LWljb24tLTI0IHtcbiAgZGlzcGxheTogaW5saW5lO1xuICB5OiAwO1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlICovXG59XG5cbkBtZWRpYSBub3QgYWxsIGFuZCAobWluLXJlc29sdXRpb246IDAuMDAxZHBjbSkge1xuICAudi1pY29uLS0yNCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNnB4KTtcbiAgfVxufVxuXG5Ac3VwcG9ydHMgKC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZSkge1xuICAudi1pY29uLS0yNCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNnB4KTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLnYtaWNvbi0tMjQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLypkb2Ncbi0tLVxudGl0bGU6IFBpeGVsIHRvIGVtXG5uYW1lOiBubi1weC10by1lbVxuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cbkNhbGN1bGF0ZSB0aGUgZW0gd2l0aCBhIGdpdmVuIHBpeGVsIHdpdGggdGhlIGdpdmVuIGJhc2UgZm9udCBzaXplXG5JZiB5b3UgZG9uJ3Qgc2V0IGEgJGJhc2UgdGhlICRiYXNlLWZvbnQtc2l6ZSBpcyB1c2VkIGFzIHRoZSBjb250ZXh0XG5cblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cbi1wdHVcblxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHZhbHVlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5AcGFyYW1ldGVyICRiYXNlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5cblxuIyMgRGVwZW5kZW5jaWVzXG4tLS1cbm5uLXN0cmlwLXVuaXRcblxuXG4jIyBFeGFtcGxlXG4tLS1cbmBgYGh0bWxfZXhhbXBsZVxubm4tcHgtdG8tZW0oNSkgLy8gT3V0cHV0OiAwLjMxMjVlbVxubm4tcHgtdG8tZW0oNSwgMTApIC8vIE91dHB1dDogMC41ZW1cbm5uLXB4LXRvLWVtKDUsIDIwKSAvLyBPdXRwdXQ6IDAuMjVlbVxuYGBgXG4qL1xuLypkb2Ncbi0tLVxudGl0bGU6IFBpeGVsIHRvIHJlbVxubmFtZTogbm4tcHgtdG8tcmVtXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuQ2FsY3VsYXRlIHRoZSByZW0gd2l0aCBhIGdpdmVuIHBpeGVsIHdpdGggdGhlIGdpdmVuIGJhc2UgZm9udCBzaXplXG5cbkluOiAgNXB4XG5PdXQ6IDAuMzEyNXJlbVxuXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG4tcmVtXG5cblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICR2YWx1ZSA9IHBpeGVsIGJhc2VkIG51bWJlciAod2l0aG91dCB1bml0KVxuXG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG5ubi1zdHJpcC11bml0XG5cbiMjIEV4YW1wbGVcbi0tLVxuYGBgaHRtbF9leGFtcGxlXG5ubi1weC10by1yZW0oNSkgLy8gT3V0cHV0IDAuMzEyNXJlbVxuYGBgXG5cbiovXG4vKmRvY1xuLS0tXG50aXRsZTogUGl4ZWwgdG8gdW5pdFxubmFtZTogcHgtdG8tdW5pdFxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cblNldCBhIHByb3BlcnR5IGFuZCB2YWx1ZSAocGl4ZWwgYmFzZWQgd2l0aG91dCB1bml0KVxuXG5DYWxjdWxhdGVzIHJlbSAvIGVtIC8gJSBmcm9tIGdpdmVuIHBpeGVsIGFuZCBiYXNlIChkZWZhdWx0IGJhc2UgaXMgdGhlXG5iYXNlLWZvbnQtc2l6ZSwgMTZweClcbklmIHJ0bCBpcyB0cnVlLCB0aGlzIG1peGluIGhhbmRsZXMgYWxsIHRoZSBkaXJlY3Rpb24gc3R1ZmY6XG4tIFN3aXRjaGluZyB0aGUgdmFsdWVzLCB3aGVuIHdlIGhhdmUgZXhhY3RseSA0IHZhbHVlc1xuLSBTd2l0Y2hpbmcgbGVmdCBhbmQgcmlnaHQgaW4gcHJvcGVydGllcyAocGFkZGluZyBhbmQgbWFyZ2luKVxuXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG4tcHR1IChmb3IgZW0gb3IgJSB0byBwaXhlbCAtIHdpdGggYmFzZSBwYXJhbWV0ZXIpXG4tcmVtIChmb3IgcmVtIHRvIHBpeGVsIC0gd2l0aG91dCBiYXNlIHBhcmFtZXRlcilcblxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHByb3BlcnR5ID0gcGFkZGluZyB8IG1hcmdpbiB8IGZvbnQtc2l6ZSB8IHdpZHRoIHwgaGVpZ2h0XG5AcGFyYW1ldGVyICR2YWx1ZSA9IFBpeGVsIGJhc2VkIG51bWJlciAtIGFkZCBweCB0byBrZWVwIHRoZSBweCBmb3IgYSB2YWx1ZVxuQHBhcmFtZXRlciAkYmFzZSA9IHB4IGJhc2VkIG51bWJlciwgRGVmYXVsdDogMTZweFxuQHBhcmFtZXRlciAkdW5pdCA9IFNldCB1bml0OiBweCB8IGVtIHwgcmVtIHwgcGVyY2VudFxuXG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG5hYnN0cmFjdC9mdW5jdGlvbnMvc3dhcC1sZWZ0LXJpZ2h0XG5hYnN0cmFjdC9mdW5jdGlvbnMvc3RyaXAtdW5pdFxuXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQocGFkZGluZywgMCAxMHB4IDIwIDApOyA9PiBwYWRkaW5nOiAwIDEwcHggMS4yNXJlbSAwO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChwYWRkaW5nLCAwIDEwIDIwIDApOyA9PiBwYWRkaW5nOiAwIDAuNjI1cmVtIDEuMjVyZW0gMDtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQocGFkZGluZy1sZWZ0LCAxMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KHBhZGRpbmctcmlnaHQsIDEwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQobWFyZ2luLCAwIDEwIDIwIDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtYXJnaW4tbGVmdCwgMTApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtYXJnaW4tcmlnaHQsIDEwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQoZm9udC1zaXplLCAyMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KHdpZHRoLCAxMDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtaW4td2lkdGgsIDEwMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1hbm4td2lkdGgsIDEwMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KGhlaWdodCwgMTAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQobWluLWhlaWdodCwgMTAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQobWFubi1oZWlnaHQsIDEwMCk7XG5gYGBcblxuXG4jIyBTb3VyY2Vcbi0tLVxuaHR0cDovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL2Nzcy9sZXNzLW1peGluLWZvci1yZW0tZm9udC1zaXppbmcvXG5cbiovXG4vKmRvY1xuLS0tXG50aXRsZTogUGl4ZWwgdG8gdW5pdGxlc3Ncbm5hbWU6IG5uLXB4LXRvLXVuaXRsZXNzXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuVGhpcyBtYWtlcyB0aGUgc2FtZSBjYWxjdWxhdGlvbiBhcyBweCB0byBlbS4gQnV0IGl0IGRvbid0IHByaW50IG91dCB0aGUgdW5pdC5cblxuVXNlIHRoaXMgZm9yIGxpbmUtaGVpZ2h0cy5cblxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuXG5cblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICR2YWx1ZSA9IHBpeGVsIGJhc2VkIG51bWJlciAod2l0aG91dCB1bml0KVxuQHBhcmFtZXRlciAkYmFzZSA9IHBpeGVsIGJhc2VkIG51bWJlciAod2l0aG91dCB1bml0KVxuXG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG5cblxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5saW5lLWhlaWdodDogbm4tcHgtdG8tdW5pdGxlc3MoNSkgLy8gT3V0cHV0OiAwLjMxMjVcbmBgYFxuXG5cbiMjIFNvdXJjZVxuLS0tXG5cblxuKi9cbi8qZG9jXG4tLS1cbnRpdGxlOiBTdHJpcCB1bml0XG5uYW1lOiBubi1zdHJpcC11bml0XG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuU3RyaXBzIG9mIHRoZSB1bml0IG9mIGEgbnVtYmVyXG5cblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICRudW0gPSBudW1iZXIgd2l0aCB1bml0ICg1cHgsIDVlbSwgNXJlbSlcblxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5ubi1zdHJpcC11bml0KDVweCkgLy9PdXRwdXQ6IDVcbm5uLXN0cmlwLXVuaXQoMTBlbSkgLy8gT3V0cHV0OiAxMFxubm4tc3RyaXAtdW5pdCgxNXJlbSkgLy8gT3V0cHV0OiAxNVxuYGBgXG5cbiovXG4vKmRvY1xuLS0tXG50aXRsZTogei1pbmRleFxubmFtZTogbm4tei1pbmRleFxuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG4gXG5CZWNhdXNlIHotaW5kaWNlcyBjYW4gZ2V0IHRyaWNreSB3ZSBtYW5hZ2UgdGhlbSBpbiB0aGUgdGhlbWUuc2NzcyBnbG9iYWxseS5cblxuQWx3YXlzIHVzZSB0aGlzIG1peGluIHRvIHNldCBzZXQgYSB6LWluZGV4LlxuICBcblJlYWQgdGhlIEJlc3QgUHJhY3RpY2UgdG8gZ2V0IGFuIGZ1bGwgZG9jdW1lbnRhdGlvbjpcbmh0dHBzOi8vcHJvamVjdHMubmV0Y2VudHJpYy5iaXovd2lraS9kaXNwbGF5L0ZST05URU5EL0hvdyt0bytzZXQrYSt6LWluZGV4XG4gXG4gXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuLXpcbiBcbiBcbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkZWxlbWVudCA9IE5hbWUgb2YgdGhlIGVsZW1lbnQgKG5vcm1hbGx5IHRoaXMgd2lsbCBiZSB0aGUgbW9kdWxlIG5hbWUgZm9yIHRoZSBtYWluIHN0YWNrKVxuQHBhcmFtZXRlciAkbGlzdCA9IE5hbWUgb2YgdGhlIGxpc3QgKGRlZmF1bHQgJHotaW5kaWNlcykuIE11c3QgYmUgb25seSBzZXQgZm9yIHN0YWNrIGNvbnRleHRcbkBwYXJhbWV0ZXIgJG1pbiA9IFNldCBhIG1pbmltdW0gei1pbmRleCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBsaXN0LlxuXG4gXG4jIyBEZXBlbmRlbmNpZXNcbi0tLVxuJHotaW5kaWNlcyB2YXJpYWJsZSBpbiB0aGUgdGhlbWUuc2Nzc1xuXG5cbiMjIEV4YW1wbGVcbi0tLVxuICBcbmBgYGh0bWxfZXhhbXBsZVxuXG4vLyBJbiB0aGUgU0FTUyB0aGVtZSBmaWxlXG5cbiR6LWluZGljZXM6IHNsaWRlciwgbW9kYWwsIGRpYWxvZywgbmF2aWdhdGlvbjtcblxuXG4vLyBJbiB0aGUgU0FTUyBtb2R1bGUgZmlsZVxuXG4ubW9kYWwge1xuICAgICZfX2Jhc2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHotaW5kZXg6IG5uLXotaW5kZXgobW9kYWwpO1xuICAgIH1cbn1cbmBgYFxuIFxuXG4jIyBTb3VyY2Vcbi0tLVxuaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDE0LzA2LzEyL3Nhc3N5LXotaW5kZXgtbWFuYWdlbWVudC1mb3ItY29tcGxleC1sYXlvdXRzL1xuXG4qL1xuLyogZG9jXG4tLS1cbnRpdGxlOiByZW1vdmUgZXZlcnkgdW5pdFxubmFtZTogc3RyaXAtdW5pdFxuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5yZW1vdmUgYWxsIHVuaXRzXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkbnVtYmVyID0gbnVtYmVyIHdpdGggdW5pdFxuXG4jIyBFeGFtcGxlXG4tLS1cbmBgYGh0bWxfZXhhbXBsZVxuc3RyaXAtdW5pdCg1cHgpIC8vIE91dHB1dDogNVxuYGBgXG4qL1xuLypkb2Ncbi0tLVxudGl0bGU6IFN3YXAgbGVmdCByaWdodCB2YWx1ZXNcbm5hbWU6IG5uLXJ0bFxuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cblN3YXAgdGhlIG5hbWVzIHJpZ2h0IGFuZCBsZWZ0IHdoZW4gJHJ0bCBpcyBzZXQgdG8gdHJ1ZS5cbklmIHRoZSB2YWx1ZSBpcyBub3QgcmlnaHQgb3IgbGVmdCBpdCByZXR1cm5zIHRoZSBvcmlnaW5hbCB2YWx1ZS5cblxuSW46ICByaWdodFxuT3V0OiBsZWZ0IChpbiBydGwpLCByaWdodCAoaW4gbHRyKVxuXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG5cblxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJG9yaWdpbiA9IHJpZ2h0IHwgbGVmdFxuXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbm5uLXJ0bChsZWZ0KTogMTBweDtcbm5uLXJ0bChwYWRkaW5nLXJpZ2h0KTogMzBweDtcbm5uLXJ0bCgwIDFweCA4cHggMTJweCkgLy8gMCAxMnB4IDhweCAxcHhcbmBgYFxuXG5cbiovXG4vKlxuICAgIFRoaXMgbWl4aW4gY29udmVydHMgYW55IHVuaXRsZXNzIG51bWJlciAoZm9yIGV4YW1wbGUgNDApIHRvIHRoZSBjb3JyZWN0IHVuaXQsIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYXhpcy5cblxuICAgIFBhcmFtZXRlcnM6XG4gICAgLSAkdmFsdWU6IHVuaXRsZXNzIG51bWJlciB0byBiZSBjb252ZXJ0ZWQuIEEgdW5pdCBpbiAkdmFsdWUgd2lsbCBjb3JyZXNwb25kIHRvIGEgcHggaW4gdGhlIGJyb3dzZXIsXG4gICAgICAgIG5vIG1hdHRlciBpZiBpdCdzIG91dHB1dCBhcyBweCBvciByZW1cblxuICAgIFJldHVybnNcbiAgICAtIEhvcml6b250YWw6IHdpbGwgY29udmVydCB0aGUgbnVtYmVyIHRvIHBpeGVscyAoNDBweClcbiAgICAtIFZlcnRpY2FsOiB3aWxsIGNvbnZlcnQgdGhlIG51bWJlciB0byByZW0gKGlmIHJlbSA9PT0gMTZweCwgdGhlbiA0MCB3aWxsIGJlIGNvbnZlcnRlZCB0byAyLjUgcmVtKVxuKi9cbi8qXG4gICAgQ29udmVydHMgYSB1bml0bGVzcyBudW1iZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5pdCBvbiB0aGUgaG9yaXpvbnRhbCBheGlzLlxuICAgIEJ5IGRlZmF1bHQgd2lsbCBjb252ZXJ0IHRoZSB2YWx1ZSB0byBweC5cbiovXG4vKlxuICAgIENvbnZlcnRzIGEgdW5pdGxlc3MgbnVtYmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIHVuaXQgb24gdGhlIHZlcnRpY2FsIGF4aXMuXG4gICAgQnkgZGVmYXVsdCB3aWxsIGNvbnZlcnQgdGhlIHZhbHVlIHRvIHJlbS5cbiovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBTd2FwIGxlZnQgcmlnaHQgdmFsdWVzXG5uYW1lOiBzd2FwLWxlZnQtcmlnaHQtdmFsdWVzXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuU3dhcCB0aGUgdmFsdWVzIGZvciByaWdodCBhbmQgbGVmdCB3aGVuICRydGwgaXMgc2V0IHRvIHRydWU6XG5cbkluOiAgMCA1cHggOHB4IDEycHhcbk91dDogMCAxMnB4IDhweCA1cHggKGluIHJ0bClcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICR2YWx1ZXMgPSA0IG51bWJlcnMgKHdvcmtzIHdpdGggYWxsIHVuaXRzKVxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5zd2FwLWxlZnQtcmlnaHQtdmFsdWVzKDAgMXB4IDhweCAxMnB4KSAvLyAwIDEycHggOHB4IDFweFxuc3dhcC1sZWZ0LXJpZ2h0LXZhbHVlcygwIDFlbSA4ZW0gMTJlbSkgLy8gMCAxMmVtIDhlbSAxZW1cbndhcC1sZWZ0LXJpZ2h0LXZhbHVlcygwIDFyZW0gOHJlbSAxMnJlbSkgLy8gMCAxMnJlbSA4cmVtIDFyZW1cbmBgYFxuXG4jIyBTb3VyY2Vcbi0tLVxuaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNDE5OTMyMy9yaWdodC10by1sZWZ0LXJ0bC1zdXBwb3J0LWluLXNhc3MtcHJvamVjdFxuXG4qL1xuLyogc3R5bGVsaW50LWRpc2FibGUgKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogU3dhcCBsZWZ0IHJpZ2h0IG5hbWVzXG5uYW1lOiBzd2FwLWxlZnQtcmlnaHQtbmFtZXNcbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5Td2FwIHRoZSBuYW1lcyByaWdodCBhbmQgbGVmdCB3aGVuICRydGwgaXMgc2V0IHRvIHRydWUuXG5JZiB0aGUgdmFsdWUgaXMgbm90IHJpZ2h0IG9yIGxlZnQgaXQgcmV0dXJucyB0aGUgb3JpZ2luYWwgdmFsdWUuXG5cbkluOiAgcmlnaHRcbk91dDogbGVmdCAoaW4gcnRsKSwgcmlnaHQgKGluIGx0cilcblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICRvcmlnaW4gPSByaWdodCB8IGxlZnRcblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuc3dhcC1sZWZ0LXJpZ2h0LW5hbWUobGVmdClcbnN3YXAtbGVmdC1yaWdodC1uYW1lKHJpZ2h0KVxuYGBgXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE0MTk5MzIzL3JpZ2h0LXRvLWxlZnQtcnRsLXN1cHBvcnQtaW4tc2Fzcy1wcm9qZWN0XG5cbiovXG4vKiAgTGlzdCBvZiBDU1MgcHJvcGVydGllcyB0aGF0IHdpbGwgYWx3YXlzIGJlIG91dHB1dCBhdCBsZWFzdCBhcyAyIGRpZmZlcmVudCB2YWx1ZXNcbiAgICBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGNvbnZlcnQgZWFjaCBvbmUgdG8gdGhlIGNvcnJlY3QgYXhpcyB1bml0ICovXG4vKlxuICAgIE1peGluIGZvciBhdXRvbWF0aWNhbGx5IGhhbmRsaW5nIHNwYWNpbmdzIGFyb3VuZC9iZXR3ZWVuIGVsZW1lbnRzLlxuXG4gICAgVGhpcyBtaXhpbiB3aWxsIGF1dG9tYXRpY2FsbHkgaW52ZXJ0IHRoZSBsZWYvcmlnaHQgZGlyZWN0aW9ucyBpbiBSVEwgbGFuZ3VhZ2VzLlxuICAgIEFsc28sIHRoZSB1bml0bGVzcyB2YWx1ZXMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIHByb3BlciB1bml0IGFjY29yZGluZyB0byB0aGUgYXhpc1xuXG4gICAgUGFyYW1ldGVyczpcbiAgICAtICRwcm9wZXJ0eS1uYW1lOiBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdGhhdCBzaG91bGQgYmUgb3V0cHV0LiBTdXBwb3J0ZWQgcHJvcGVydGllcyBhcmU6XG4gICAgICAgIG1hcmdpbiwgbWFyZ2luLXRvcCwgbWFyZ2luLXJpZ2h0LCBtYXJnaW4tYm90dG9tLCBtYXJnaW4tbGVmdFxuICAgICAgICBwYWRkaW5nLCBwYWRkaW5nLXRvcCwgcGFkZGluZy1yaWdodCwgcGFkZGluZy1ib3R0b20sIHBhZGRpbmctbGVmdFxuICAgICAgICB3aWR0aCwgaGVpZ2h0LCBtaW4td2lkdGgsIG1heC13aWR0aCwgbWluLWhlaWdodCwgbWluLWhlaWdodFxuICAgIC0gJHZhbHVlOiB2YWx1ZSB0aGF0IHdpbGwgYmUgb3V0cHV0IGFzIHBhcnQgb2YgdGhlIGdpdmVuIHByb3BlcnR5LiBTdXBwb3J0ZWQgdmFsdWVzIGFyZTpcbiAgICAgICAgVW5pdGxlc3MgbnVtYmVyICg0MCk6IHRoaXMgc2hvdWxkIGJlIHVzZWQgbW9zdCBvZiB0aGUgdGltZXMuIEl0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjb252ZXJ0ZWRcbiAgICAgICAgICAgIHRvIHRoZSBjb3JyZWN0IHVuaXQgZGVwZW5kaW5nIG9uIHRoZSBheGlzIHdoZXJlIGl0J3MgdXNlZCAoaG9yaXpvbnRhbCBheGlzID0+IHB4LCB2ZXJ0aWNhbCBheGlzID0+IHJlbSkuXG4gICAgICAgICAgICBFYWNoIHVuaXQgaW4gJHZhbHVlIHdpbGwgY29ycmVzcG9uZCB0byBhIHB4IGluIHRoZSBicm93c2VyLCBubyBtYXR0ZXIgdG8gd2hpY2ggdW5pdCBpdCB3aWxsIGJlIGNvbnZlcnRlZC5cbiAgICAgICAgTnVtYmVyIHdpdGggdW5pdCAoNDBweCwgNDAlLi4uKTogdGhlIG51bWJlciBhbmQgdGhlIHVuaXQgd2lsbCBiZSBwcmVzZXJ2ZWQgYW5kIG9ubHkgdGhlIGxlZnQvcmlnaHQgaW52ZXJzaW9uXG4gICAgICAgICAgICB3aWxsIGJlIGRvbmUgZm9yIFJUTCBsYW5ndWFnZXNcbiAgICAgICAgTGlzdCBvZiB2YWx1ZXMgKDQwIDMwJSAyMCAxMCk6IG1hcmdpbiBhbmQgcGFkZGluZyBzaG9ydGhhbmRzIHdoaXRoIG11bHRpcGxlIHZhbHVlcyBhcmUgc3VwcG9ydGVkLlxuICAgICAgICAgICAgVGhlIGxlZnQvcmlnaHQgdmFsdWVzIHdpbGwgYmUgYXV0b21hdGljYWxseSBzd2FwcGVkIGluIFJUTCBhbmQgdGhlIHVuaXRsZXNzIG51bWJlcnMgd2lsbCBiZSBjb252ZXJ0ZWRcbiAgICAgICAgICAgIHRvIHRoZSBjb3JyZXNwb25kaW5nIHVuaXQuIFVuaXRsZXNzIGFuZCBudW1iZXJzIHdpdGggdW5pdHMgY2FuIGJlIG1peGVkIGluIHRoZSBzYW1lIGNhbGwuXG4gICAgICAgIFVzaW5nIGNhbGMoKSBpbiBhbnkgb2YgdGhlIHByZXZpb3VzIGV4YW1wbGVzIGlzIHN1cHBvcnRlZCwgYWx0aG91Z2ggbm8gdW5pdCBjb252ZXJzaW9uIHdpbGwgYmUgZG9uZVxuXG4gIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgc3BhY2luZyhwYWRkaW5nLCAwIDEwcHggMjAgMCk7ID0+IHBhZGRpbmc6IDAgMTBweCAycmVtIDA7XG5AaW5jbHVkZSBzcGFjaW5nKHBhZGRpbmcsIDAgMTAgMjAgMCk7ID0+IHBhZGRpbmc6IDAgMTBweCAycmVtIDA7XG5AaW5jbHVkZSBzcGFjaW5nKHBhZGRpbmctbGVmdCwgMTApO1xuQGluY2x1ZGUgc3BhY2luZyhwYWRkaW5nLXJpZ2h0LCAxMCk7XG5AaW5jbHVkZSBzcGFjaW5nKG1hcmdpbiwgMCAxMCAyMCAwKTtcbkBpbmNsdWRlIHNwYWNpbmcobWFyZ2luLWxlZnQsIDEwKTtcbkBpbmNsdWRlIHNwYWNpbmcobWFyZ2luLXJpZ2h0LCAxMCk7XG5AaW5jbHVkZSBzcGFjaW5nKHdpZHRoLCAxMDApO1xuQGluY2x1ZGUgc3BhY2luZyhtaW4td2lkdGgsIDEwMCk7XG5AaW5jbHVkZSBzcGFjaW5nKG1heC13aWR0aCwgMTAwKTtcbkBpbmNsdWRlIHNwYWNpbmcoaGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgc3BhY2luZyhtaW4taGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgc3BhY2luZyhtYXgtaGVpZ2h0LCAxMDApO1xuYGBgXG4qL1xuLypkb2Ncbi0tLVxudGl0bGU6IENsZWFyZml4XG5uYW1lOiBjbGVhcmZpeFxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkNsZWFycyBhZnRlciBmbG9hdGluZyBlbGVtZW50XG5cblVzZSB0aGlzIG1peGluIG9ubHkgaW5zaWRlIG1lZGlhIHF1ZXJpZXMgd2hlcmUgeW91IGNhbid0IHVzZSB0aGVcbmFic3RyYWN0L2V4dGVuZHMvdXRpbHMvX2NsZWFyZml4IHZlcnNpb24sIHdoaWNoIGFkZHMgbGVzcyBjb2RlIHRvIGNzc1xuXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG5cblxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5AaW5jbHVkZSBjbGVhcmZpeDtcbmBgYFxuXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL2Nzcy9jbGVhci1maXgvXG4qL1xuLmljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDMycHg7XG59XG5cbi8qIGRvY1xuLS0tXG50aXRsZTogZm9jdXMgY29sb3Jcbm5hbWU6IGZvY3VzIGNvbG9yXG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuQWRkIGEgZm9jdXMgY29sb3Igd2hlbiBrZXlib2FyZC1mb2N1cyBpcyBhY3RpdmF0ZWRcbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtICRudW1iZXJcblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogaWdub3JlLWNvbnRhaW5lclxubmFtZTogaWdub3JlLWNvbnRhaW5lclxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cblNldCBmdWxsIHBhZ2Ugd2lkdGggZm9yIHNvbWV0aGluZyBpbnNpZGUgYSBjb250YWluZXJcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW0gJGNvbnRhaW5lci1zaXplXG5AcGFyYW0gJGd1dHRlclxuXG4qL1xuLyogR2VuZXJhdGVzIGFsbCB0aGUgcnVsZXMgZm9yIHRoZSBncmlkIGNvbHVtbnMgdXAgdG8gdGhlIGdpdmVuIGFtb3VudCBvZiBjb2x1bW4gKi9cbi8qIEdlbmVyYXRlcyBhbGwgdGhlIHJ1bGVzIGZvciB0aGUgZ3JpZCBjb2x1bW4gb2Zmc2V0IHVwIHRvIHRoZSBnaXZlbiBhbW91bnQgb2YgY29sdW1uICovXG4vKiBHZW5lcmF0ZXMgYWxsIHRoZSBydWxlcyBmb3IgdGhlIGdyaWQgYW5kIGNvbHVtbnMgZm9yIHRoZSBnaXZlbiBicmVhayBwb2ludCBhbmQgdG90YWwgb2YgY29sdW1ucyAqL1xuLyogQVBJIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byBnZW5lcmF0ZSBhIGdyaWQgY29uZmlnICovXG4vKmRvY1xuLS0tXG50eXBlOiBidXR0b24gdHlwZVxuc3RhdGU6IHN0YXRlIGJ1dHRvblxuLS0tXG5cbkJ1dHRvbiBzdHlsZXNcblxuVXNlIHRoaXMgbWl4aW4gZm9yIGJ1dHRvbiBzdHlsZXM6IGNvbG9yIHRleHQsIGJhY2tncm91bmQsIGJvcmRlclxuXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbkBpbmNsdWRlIGJ1dHRvbihwcmltYXJ5KTtcbmBgYFxuKi9cbi8qZG9jXG4tLS1cbmxpbmVMaW1pdDogVGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBsaW5lcyBhZnRlciB3aGljaCB0aGUgY29udGVudCB3aWxsIGJlIGNsYW1wZWQuIEl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuXG4tLS1cblxuVHJ1bmNhdGVzIHRleHQgYXQgYSBzcGVjaWZpYyBudW1iZXIgb2YgbGluZXMuXG5cblVzZSB0aGlzIG1peGluIHRvIGhpZGUgbG9uZyB0ZXh0LlxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5AaW5jbHVkZSBsaW5lLWNsYW1wKCRsaW5lTGltaXQ6IDQpO1xuYGBgXG4qL1xuLyogdHlwb2dyYXBoeVxuLS0tXG50aXRsZTogdHlwb2dyYXBoeVxubmFtZTogVHlwb2dyYXBoeVxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkFkZHMgZm9udCBDU1MgcHJvcGVydGllcyBieSBhIG1hcCBwcm92aWRlZFxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbSAkdC1zdHlsZVxuQHBhcmFtICRpcy1pbXBvcnRhbnQ6IGZhbHNlXG5cbiogJHQtc3R5bGUgaXMgZXhwZWN0ZWQgdG8gYmUgYSBtYXAgd2l0aCAnZGVmYXVsdCcgYW5kICdicmVha3BvaW50W3NdJyBzdWJtYXBzIHdpdGggYSBwcm9wZXJ0eVxuZm9yIGV2ZXJ5IGNzcyBwcm9wZXJ0eSB0byBiZSBzZXQuXG4qICRpcy1pbXBvcnRhbnQgcGFyYW1ldGVyIGFsbG93cyB0byBmb3JjZSB0eXBvZ3JhcGh5IHByb3BlcnRpZXMgdG8gYmUgc2V0IGFzICFpbXBvcnRhbnRcblRyeSB0byBhdm9pZCBpdHMgdXNlLCBidXQgaXQgbWlnaHQgYmUgbmVlZGVkIGZvciBzaXR1YXRpb25zIHdoZXJlIHN0eWxlcyBmb3IgYSBjb21wb25lbnRcbmFyZSB2ZXJ5IHNwZWNpZmljIGFuZCB0byBvdmVyd3JpdGUgdGhlIGdlbmVyaWMgb25lcyBpcyB0b28gY29tcGxleCAoaWYgdGhleSBoYXZlIGEgbG90IG9mIHNwZWNpZmljaXR5KVxuXG4qL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBoaWRkZW5cbm5hbWU6IGhpZGRlblxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkhpZGUgZnJvbSBib3RoIHNjcmVlbnJlYWRlcnMgYW5kIGJyb3dzZXJzOiBoNWJwLmNvbS91XG4jIyBQYXJhbWV0ZXJzXG4tLS1cblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogb3ZlcmxheVxubmFtZTogb3ZlcmxheVxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkNyZWF0ZXMgYW4gb3ZlcmxheSB3aXRoIHRoZSBwcm92aWRlZCBiYWNrZ3JvdW5kIGNvbG9yXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbSAkYmdDb2xvclxuXG4qL1xuLnRlYXNlcjpub3QoLnRlYXNlci0taGVybyk6bm90KC50ZWFzZXItLWxheW91dC10b3ApIHtcbiAgLS10ZWFzZXItaGVpZ2h0OiAzMDBweDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC50ZWFzZXI6bm90KC50ZWFzZXItLWhlcm8pOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSB7XG4gICAgLS10ZWFzZXItaGVpZ2h0OiA0NDBweDtcbiAgfVxufVxuXG4uY21wLXRlYXNlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWluLWhlaWdodDogdmFyKC0tdGVhc2VyLWhlaWdodCk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAuY21wLXRlYXNlciB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgcGFkZGluZzogMy43NXJlbSAxcmVtO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY21wLXRlYXNlcl9fY29udGVudC5pcy1oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmNtcC1jYXJvdXNlbF9faXRlbSAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gICAgcGFkZGluZzogMCA1NnB4O1xuICB9XG59XG5cbi5jbXAtdGVhc2VyX190aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gIGNvbG9yOiAjNTM1NjVhO1xufVxuXG5bZGF0YS1kZWFsZXItcHJpdmF0ZV0gLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjFweDtcbn1cblxuLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLXJlZ3VsYXIpO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1scy1kZWZhdWx0KTtcbiAgY29sb3I6ICM1MzU2NWE7XG4gIG1hcmdpbi10b3A6IDFlbTtcbn1cblxuLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGEge1xuICBjb2xvcjogIzAwNGZiYztcbn1cblxuLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGE6aG92ZXIsIC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBhOmZvY3VzIHtcbiAgY29sb3I6ICMwMDU2ZDY7XG59XG5cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB1bCxcbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBvbCB7XG4gIHBhZGRpbmctbGVmdDogMzJweDtcbn1cblxuLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIHVsIHtcbiAgbGlzdC1zdHlsZTogZGlzYztcbn1cblxuLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIG9sIHtcbiAgbGlzdC1zdHlsZTogZGVjaW1hbDtcbn1cblxuLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIge1xuICBtYXJnaW4tdG9wOiAxZW07XG4gIHBhZGRpbmctaW5saW5lLWVuZDogMS41cmVtO1xufVxuXG4udGVhc2VyX19jdGEtLWxpbmsgLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uY21wLXRlYXNlcl9fYWN0aW9uLWxpbmsge1xuICBwb2ludGVyLWV2ZW50czogYWxsO1xuICBtYXJnaW46IDAgMTBweCAxMHB4IDA7XG59XG5cbi5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTJweDtcbiAgd2lkdGg6IDI0cHggIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAyNHB4ICFpbXBvcnRhbnQ7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHBvaW50ZXItZXZlbnRzOiBhbGwgIWltcG9ydGFudDtcbn1cblxuLnRlYXNlcl9fY3RhLS1saW5rIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICBtYXJnaW4taW5saW5lLWVuZDogY2FsYygzNHB4ICogLTEpO1xufVxuXG4udGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LWZhbWlseTogdmFyKC0tZmYtbWVkaXVtKTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMTJweCAzMnB4O1xuICBiYWNrZ3JvdW5kOiAjMDA0ZmJjO1xuICBib3JkZXI6IDFweCBzb2xpZCAjMDA0ZmJjO1xuICBjb2xvcjogI2ZmZjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxcztcbn1cblxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6aG92ZXIsIC50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQ6ICMwMDU2ZDY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDU2ZDY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6aG92ZXI6OmFmdGVyLCAudGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZDpmb2N1czo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KTtcbn1cblxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6OmFmdGVyIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zcyBlYXNlLW91dDtcbn1cblxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogIzAwNDFhMztcbn1cblxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6ZGlzYWJsZWQsIC50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkLmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZDogIzhkYzliZjtcbiAgYm9yZGVyOiAxcHggc29saWQgIzhkYzliZjtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGZpbHRlcjogc2F0dXJhdGUoMCUpIGJyaWdodG5lc3MoMCUpIGludmVydCgxMDAlKSBvcGFjaXR5KDEpO1xuICBmaWx0ZXI6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiAgICA8ZmlsdGVyIGlkPVwicmVjb2xvclwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj4gICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIgICAgICAgICAwIDAgMCAwIDEgICAgICAgICAwIDAgMCAwIDEgICAgICAgICAwIDAgMCAwIDEgICAgICAgICAwIDAgMCAxIDAgICAgICAgICBcIi8+ICAgIDwvZmlsdGVyPiAgICA8L3N2Zz4gICAgI3JlY29sb3InKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuXG4udGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZFt0YXJnZXQ9X2JsYW5rXTphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MjQtdmlld1wiKTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgZmlsdGVyOiBzYXR1cmF0ZSgwJSkgYnJpZ2h0bmVzcygwJSkgaW52ZXJ0KDEwMCUpIG9wYWNpdHkoMSk7XG4gIGZpbHRlcjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+ICAgIDxmaWx0ZXIgaWQ9XCJyZWNvbG9yXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIiAgICAgICAgIDAgMCAwIDAgMSAgICAgICAgIDAgMCAwIDAgMSAgICAgICAgIDAgMCAwIDAgMSAgICAgICAgIDAgMCAwIDEgMCAgICAgICAgIFwiLz4gICAgPC9maWx0ZXI+ICAgIDwvc3ZnPiAgICAjcmVjb2xvcicpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZFt0YXJnZXQ9X2JsYW5rXTphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvbGluay1leHRlcm5hbC5zdmcjbGluay1leHRlcm5hbC1pY29uLXcxNi12aWV3XCIpO1xuICB9XG59XG5cbi50ZWFzZXI6bm90KC5zdGFnZSk6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKSAudGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZFt0YXJnZXQ9X2JsYW5rXTo6YWZ0ZXIge1xuICBmaWx0ZXI6IGludmVydCgxKSBicmlnaHRuZXNzKDEpO1xufVxuXG4udGVhc2VyOm5vdCguc3RhZ2UpOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluaykgLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6OmFmdGVyIHtcbiAgZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVzcygxKTtcbn1cblxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1tZWRpdW0pO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAxMnB4IDMycHg7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM1MzU2NWE7XG4gIGNvbG9yOiAjNTM1NjVhO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDFzO1xuICBwYWRkaW5nLWlubGluZS1lbmQ6IDMuNDM3NXJlbTtcbn1cblxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmhvdmVyLCAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6Zm9jdXMge1xuICBiYWNrZ3JvdW5kOiAjZTFkZmRkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjNTM1NjVhO1xufVxuXG4uY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6aG92ZXI6OmFmdGVyLCAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6Zm9jdXM6OmFmdGVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XG59XG5cbi5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpub3QoOmZpcnN0LWNoaWxkKTo6YWZ0ZXIge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0O1xufVxuXG4uY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6ZGlzYWJsZWQsIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpub3QoOmZpcnN0LWNoaWxkKS5kaXNhYmxlZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4ODhiOGQ7XG4gIGNvbG9yOiAjODg4YjhkO1xufVxuXG4uY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGZpbHRlcjogc2F0dXJhdGUoMCUpIGJyaWdodG5lc3MoMCUpIGludmVydCgzMy45MjE1NyUpIG9wYWNpdHkoMSk7XG4gIGZpbHRlcjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+ICAgIDxmaWx0ZXIgaWQ9XCJyZWNvbG9yXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIiAgICAgICAgIDAgMCAwIDAgMC4zMjU0OSAgICAgICAgIDAgMCAwIDAgMC4zMzcyNSAgICAgICAgIDAgMCAwIDAgMC4zNTI5NCAgICAgICAgIDAgMCAwIDEgMCAgICAgICAgIFwiLz4gICAgPC9maWx0ZXI+ICAgIDwvc3ZnPiAgICAjcmVjb2xvcicpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuXG4uY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZClbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzI0LXZpZXdcIik7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGZpbHRlcjogc2F0dXJhdGUoMCUpIGJyaWdodG5lc3MoMCUpIGludmVydCgzMy45MjE1NyUpIG9wYWNpdHkoMSk7XG4gIGZpbHRlcjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+ICAgIDxmaWx0ZXIgaWQ9XCJyZWNvbG9yXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIiAgICAgICAgIDAgMCAwIDAgMC4zMjU0OSAgICAgICAgIDAgMCAwIDAgMC4zMzcyNSAgICAgICAgIDAgMCAwIDAgMC4zNTI5NCAgICAgICAgIDAgMCAwIDEgMCAgICAgICAgIFwiLz4gICAgPC9maWx0ZXI+ICAgIDwvc3ZnPiAgICAjcmVjb2xvcicpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZClbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuXG4uY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6OmFmdGVyIHtcbiAgbWFyZ2luLWlubGluZS1lbmQ6IGNhbGMoMzRweCAqIC0xKTtcbiAgLyogZm9yY2UgZmlsdGVyOiBub25lIHRvIGF2b2lkIHRleHQtLXdoaXRlIHNldHRpbmcgYWZmZWN0cyB0aGUgaWNvbiBjb2xvciAqL1xufVxuXG4udGVhc2VyOm5vdCguc3RhZ2UpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6OmFmdGVyIHtcbiAgZmlsdGVyOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCkge1xuICBjb2xvcjogIzUzNTY1YTtcbn1cblxuLmNtcC10ZWFzZXJfX2VtYmVkLCAuY21wLXRlYXNlcl9faW1hZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xufVxuXG4uY21wLXRlYXNlcl9fZW1iZWQgLmVtYmVkX195b3V0dWJlIHtcbiAgYXNwZWN0LXJhdGlvOiBhdXRvO1xufVxuXG4uY21wLXRlYXNlcl9fZW1iZWQgLmVtYmVkX195b3V0dWJlIGlmcmFtZSxcbi5jbXAtdGVhc2VyX19lbWJlZCBpZnJhbWUge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogdmFyKC0tdGVhc2VyLWhlaWdodCk7XG59XG5cbi5jbXAtdGVhc2VyX19lbWJlZCArIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5jbXAtdGVhc2VyX19lbWJlZCAuY21wLWVtYmVkID4gKiB7XG4gIG1hcmdpbjogMDtcbn1cblxuLmNtcC10ZWFzZXJfX2ltYWdlIGltZyxcbi5jbXAtdGVhc2VyX19pbWFnZSAuY21wLWltYWdlLFxuLmNtcC10ZWFzZXJfX2ltYWdlIC5jbXAtaW1hZ2VfX2ltYWdlIHtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uY21wLXRlYXNlcl9faW1hZ2UgLmNtcC1pbWFnZSB2aWRlbywgLmNtcC10ZWFzZXJfX2ltYWdlIC5jbXAtaW1hZ2VfX2ltYWdlIHZpZGVvIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uY21wLXRlYXNlcl9faW1hZ2UgLmNtcC1pbWFnZSAuczdkbS1keW5hbWljLW1lZGlhIHZpZGVvLCAuY21wLXRlYXNlcl9faW1hZ2UgLmNtcC1pbWFnZV9faW1hZ2UgLnM3ZG0tZHluYW1pYy1tZWRpYSB2aWRlbyB7XG4gIHRvcDogMCAhaW1wb3J0YW50O1xuICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG4gIG1pbi13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBtaW4taGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5jbXAtdGVhc2VyX19pbWFnZSAuY21wLWltYWdlIC5pbWdfX2xpbmsge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnRlYXNlcjpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCk6bm90KC5zdGFnZSkgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC50ZWFzZXI6bm90KC50ZWFzZXItLWxheW91dC10b3ApOm5vdCguc3RhZ2UpIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgICB3aWR0aDogNDAlO1xuICB9XG4gIC5jYXJvdXNlbCAudGVhc2VyOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKTpub3QoLnN0YWdlKSAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gICAgd2lkdGg6IDUwJTtcbiAgfVxufVxuXG4uY29sbGFnZSAudGVhc2VyOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKTpub3QoLnN0YWdlKSAuY21wLXRlYXNlcl9fY29udGVudCxcbi5jb2x1bW5jb250cm9sIC50ZWFzZXI6bm90KC50ZWFzZXItLWxheW91dC10b3ApOm5vdCguc3RhZ2UpIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi50ZWFzZXItLWhlcm8ge1xuICAtLXRlYXNlci1oZWlnaHQ6IDQ0MHB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLnRlYXNlci0taGVybyB7XG4gICAgLS10ZWFzZXItaGVpZ2h0OiA2MDBweDtcbiAgfVxufVxuXG4udGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0cmFuc2Zvcm06IG5vbmU7XG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XG4gIHBhZGRpbmc6IDFlbSAwO1xufVxuXG4udGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyX19pbWFnZSwgLnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fZW1iZWQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFzcGVjdC1yYXRpbzogMTYvOTtcbn1cblxuLnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fZW1iZWQgaWZyYW1lIHtcbiAgYXNwZWN0LXJhdGlvOiAxNi85O1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi50ZWFzZXItLWxheW91dC10b3AudGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMDtcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLXRvcDogNTclO1xufVxuXG4udGVhc2VyLS1sYXlvdXQtdG9wLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWNvbnRhaW5lciAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmsge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiA3NXB4O1xuICBoZWlnaHQ6IDc1cHg7XG4gIG1hcmdpbjogLTI1cHggMCAwIC00MHB4O1xufVxuXG4udGVhc2VyLS1sYXlvdXQtdG9wLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWNvbnRhaW5lciAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6OmJlZm9yZSB7XG4gIGZvbnQtc2l6ZTogMzRweDtcbn1cblxuLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1tZWRpdW0pO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAxMnB4IDMycHg7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM1MzU2NWE7XG4gIGNvbG9yOiAjNTM1NjVhO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDFzO1xuICBwYWRkaW5nLWlubGluZS1lbmQ6IDMuNDM3NXJlbTtcbn1cblxuLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmhvdmVyLCAudGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zm9jdXMge1xuICBiYWNrZ3JvdW5kOiAjZTFkZmRkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjNTM1NjVhO1xufVxuXG4udGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6aG92ZXI6OmFmdGVyLCAudGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zm9jdXM6OmFmdGVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XG59XG5cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0O1xufVxuXG4udGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6ZGlzYWJsZWQsIC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluay5kaXNhYmxlZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4ODhiOGQ7XG4gIGNvbG9yOiAjODg4YjhkO1xufVxuXG4udGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGZpbHRlcjogc2F0dXJhdGUoMCUpIGJyaWdodG5lc3MoMCUpIGludmVydCgzMy45MjE1NyUpIG9wYWNpdHkoMSk7XG4gIGZpbHRlcjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+ICAgIDxmaWx0ZXIgaWQ9XCJyZWNvbG9yXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIiAgICAgICAgIDAgMCAwIDAgMC4zMjU0OSAgICAgICAgIDAgMCAwIDAgMC4zMzcyNSAgICAgICAgIDAgMCAwIDAgMC4zNTI5NCAgICAgICAgIDAgMCAwIDEgMCAgICAgICAgIFwiLz4gICAgPC9maWx0ZXI+ICAgIDwvc3ZnPiAgICAjcmVjb2xvcicpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuXG4udGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmtbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzI0LXZpZXdcIik7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGZpbHRlcjogc2F0dXJhdGUoMCUpIGJyaWdodG5lc3MoMCUpIGludmVydCgzMy45MjE1NyUpIG9wYWNpdHkoMSk7XG4gIGZpbHRlcjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+ICAgIDxmaWx0ZXIgaWQ9XCJyZWNvbG9yXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIiAgICAgICAgIDAgMCAwIDAgMC4zMjU0OSAgICAgICAgIDAgMCAwIDAgMC4zMzcyNSAgICAgICAgIDAgMCAwIDAgMC4zNTI5NCAgICAgICAgIDAgMCAwIDEgMCAgICAgICAgIFwiLz4gICAgPC9maWx0ZXI+ICAgIDwvc3ZnPiAgICAjcmVjb2xvcicpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmtbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuXG4udGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6OmFmdGVyIHtcbiAgbWFyZ2luLWlubGluZS1lbmQ6IGNhbGMoMzRweCAqIC0xKTtcbiAgLyogZm9yY2UgZmlsdGVyOiBub25lIHRvIGF2b2lkIHRleHQtLXdoaXRlIHNldHRpbmcgYWZmZWN0cyB0aGUgaWNvbiBjb2xvciAqL1xufVxuXG4udGVhc2VyOm5vdCguc3RhZ2UpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAudGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6OmFmdGVyIHtcbiAgZmlsdGVyOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1tZWRpdW0pO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogNzVweDtcbiAgaGVpZ2h0OiA3NXB4O1xuICBmb250LXNpemU6IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICM1MzU2NWE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMWRmZGQ7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm94LXNoYWRvdzogMCAwIDIwcHggMCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwO1xuICB3aWR0aDogNTBweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IFwiVm9sdm9JY29uc1wiO1xuICBjb250ZW50OiBcIu6kkVwiO1xuICBzcGVhazogbm9uZTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBsaW5lLWhlaWdodDogMDtcbiAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmsge1xuICAgIHdpZHRoOiA1MHB4O1xuICAgIGhlaWdodDogNTBweDtcbiAgfVxufVxuXG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpob3ZlciwgLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zm9jdXMge1xuICBjb2xvcjogIzUzNTY1YTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UxZGZkZDtcbiAgYm9yZGVyOiAwO1xufVxuXG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpob3Zlcjo6YmVmb3JlLCAudGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmb2N1czo6YmVmb3JlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YmVmb3JlIHtcbiAgbWFyZ2luLWxlZnQ6IDdweDtcbiAgZm9udC1zaXplOiAzNHB4O1xuICBsaW5lLWhlaWdodDogMi4yO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMjNweDtcbiAgfVxufVxuXG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YmVmb3JlIHtcbiAgZm9udC1zaXplOiAyM3B4O1xuICBtYXJnaW4tbGVmdDogNHB4O1xufVxuXG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICBjb250ZW50OiBub25lO1xuICBvcGFjaXR5OiAwO1xufVxuXG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udGVhc2VyX19jdGEtLXZpZGVvOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlcl9fYWN0aW9uLWNvbnRhaW5lciB7XG4gIG1hcmdpbi10b3A6IDI1cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cblxuLnRlYXNlcl9fY3RhLS1saW5rOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLXJlZ3VsYXIpO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1scy1kZWZhdWx0KTtcbiAgcGFkZGluZzogMDtcbiAgY29sb3I6ICMwMDRmYmM7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG59XG5cbi50ZWFzZXJfX2N0YS0tbGluazpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MjQtdmlld1wiKTtcbiAgd2lkdGg6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS12LWljb24tc2l6ZSk7XG4gIGZpbHRlcjogc2F0dXJhdGUoMCUpIGJyaWdodG5lc3MoMCUpIGludmVydCgzNi44NjI3NSUpIG9wYWNpdHkoMSk7XG4gIGZpbHRlcjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+ICAgIDxmaWx0ZXIgaWQ9XCJyZWNvbG9yXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIiAgICAgICAgIDAgMCAwIDAgMCAgICAgICAgIDAgMCAwIDAgMC4zMDk4ICAgICAgICAgMCAwIDAgMCAwLjczNzI1ICAgICAgICAgMCAwIDAgMSAwICAgICAgICAgXCIvPiAgICA8L2ZpbHRlcj4gICAgPC9zdmc+ICAgICNyZWNvbG9yJyk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJfX2N0YS0tbGluazpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcxNi12aWV3XCIpO1xuICB9XG59XG5cbi50ZWFzZXJfX2N0YS0tbGluazpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICBmb250LXNpemU6IDE2cHg7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGNvbnRlbnQ6ICcnO1xufVxuXG4udGVhc2VyX19jdGEtLWxpbms6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6aG92ZXI6OmFmdGVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XG59XG5cbi50ZWFzZXJfX2N0YS0tbGluazpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpIC5jbXAtdGVhc2VyX19hY3Rpb24tbGlua1t0YXJnZXQ9X2JsYW5rXTphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MjQtdmlld1wiKTtcbiAgd2lkdGg6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS12LWljb24tc2l6ZSk7XG4gIGZpbHRlcjogc2F0dXJhdGUoMCUpIGJyaWdodG5lc3MoMCUpIGludmVydCgzNi44NjI3NSUpIG9wYWNpdHkoMSk7XG4gIGZpbHRlcjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+ICAgIDxmaWx0ZXIgaWQ9XCJyZWNvbG9yXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIiAgICAgICAgIDAgMCAwIDAgMCAgICAgICAgIDAgMCAwIDAgMC4zMDk4ICAgICAgICAgMCAwIDAgMCAwLjczNzI1ICAgICAgICAgMCAwIDAgMSAwICAgICAgICAgXCIvPiAgICA8L2ZpbHRlcj4gICAgPC9zdmc+ICAgICNyZWNvbG9yJyk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJfX2N0YS0tbGluazpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpIC5jbXAtdGVhc2VyX19hY3Rpb24tbGlua1t0YXJnZXQ9X2JsYW5rXTphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvbGluay1leHRlcm5hbC5zdmcjbGluay1leHRlcm5hbC1pY29uLXcxNi12aWV3XCIpO1xuICB9XG59XG5cbi50ZWFzZXIge1xuICBtYXJnaW46IDMwcHggMDtcbn1cblxuLnRlYXNlci5tYXJnaW4tdG9wLS1ub25lIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuLnRlYXNlci5tYXJnaW4tdG9wLS1zaW5nbGUge1xuICBtYXJnaW4tdG9wOiAzMHB4O1xufVxuXG4udGVhc2VyLm1hcmdpbi10b3AtLWRvdWJsZSB7XG4gIG1hcmdpbi10b3A6IGNhbGMoMzBweCAqIDIpO1xufVxuXG4udGVhc2VyLm1hcmdpbi1ib3R0b20tLW5vbmUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4udGVhc2VyLm1hcmdpbi1ib3R0b20tLXNpbmdsZSB7XG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XG59XG5cbi50ZWFzZXIubWFyZ2luLWJvdHRvbS0tZG91YmxlIHtcbiAgbWFyZ2luLWJvdHRvbTogY2FsYygzMHB4ICogMik7XG59XG5cbi5hZW0tR3JpZCA+IC50ZWFzZXI6Zmlyc3QtY2hpbGQ6bm90KC5tYXJnaW4tdG9wLS1zaW5nbGUpOm5vdCgubWFyZ2luLXRvcC0tZG91YmxlKSB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi50ZWFzZXJfX2ltZy0tZnVsbCAuY21wLXRlYXNlcl9faW1hZ2Uge1xuICBtYXJnaW46IDAgLTE1cHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VyX19pbWctLWZ1bGwgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgICBtYXJnaW46IDAgLTE1cHg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGVhc2VyX19pbWctLWZ1bGwgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW46IDAgY2FsYygoMTAwdncgLSAxMjAwcHgpIC8gLTIpO1xuICB9XG59XG5cbi50ZWFzZXJfX292ZXJsYXktLWRhcmsudGVhc2VyIC5jbXAtaW1hZ2UsIC50ZWFzZXJfX292ZXJsYXktLWRhcmsudGVhc2VyLS1oZXJvIC5jbXAtaW1hZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50ZWFzZXJfX292ZXJsYXktLWRhcmsudGVhc2VyIC5jbXAtaW1hZ2U6OmFmdGVyLCAudGVhc2VyX19vdmVybGF5LS1kYXJrLnRlYXNlci0taGVybyAuY21wLWltYWdlOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGluc2V0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udGVhc2VyX19vdmVybGF5LS1saWdodGVyLWRhcmsudGVhc2VyIC5jbXAtaW1hZ2UsIC50ZWFzZXJfX292ZXJsYXktLWxpZ2h0ZXItZGFyay50ZWFzZXItLWhlcm8gLmNtcC1pbWFnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnRlYXNlcl9fb3ZlcmxheS0tbGlnaHRlci1kYXJrLnRlYXNlciAuY21wLWltYWdlOjphZnRlciwgLnRlYXNlcl9fb3ZlcmxheS0tbGlnaHRlci1kYXJrLnRlYXNlci0taGVybyAuY21wLWltYWdlOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGluc2V0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udGVhc2VyX190ZXh0LS1yaWdodDpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlcl9fdGV4dC0tcmlnaHQ6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgLnRlYXNlcl9fdGV4dC0tcmlnaHQ6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgICBtYXJnaW4tbGVmdDogNjAlO1xuICB9XG59XG5cbi50ZWFzZXJfX3RleHQtLWNlbnRlciAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC50ZWFzZXJfX3RleHQtLWNlbnRlciAuY21wLXRlYXNlcl9fY29udGVudCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC50ZWFzZXJfX3RleHQtLWNlbnRlciAuY21wLXRlYXNlcl9fY29udGVudCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogODUwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbn1cblxuLnRlYXNlcl9fdGV4dC0tY2VudGVyIC5jbXAtdGVhc2VyX19jb250ZW50IC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi50ZWFzZXJfX3RleHQtLWNlbnRlci50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tbGluaykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE3cHgpO1xufVxuXG4udGVhc2VyX190ZXh0LS13aGl0ZSAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24sIC50ZWFzZXJfX3RleHQtLXdoaXRlIC5jbXAtdGVhc2VyX190aXRsZSB7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4udGVhc2VyX190ZXh0LS13aGl0ZTpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlciBhIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi50ZWFzZXJfX3RleHQtLXdoaXRlOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyIGE6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIHdpZHRoOiB2YXIoLS12LWljb24tc2l6ZSk7XG4gIGhlaWdodDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBmaWx0ZXI6IHNhdHVyYXRlKDAlKSBicmlnaHRuZXNzKDAlKSBpbnZlcnQoMTAwJSkgb3BhY2l0eSgxKTtcbiAgZmlsdGVyOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gICAgPGZpbHRlciBpZD1cInJlY29sb3JcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+ICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiICAgICAgICAgMCAwIDAgMCAxICAgICAgICAgMCAwIDAgMCAxICAgICAgICAgMCAwIDAgMCAxICAgICAgICAgMCAwIDAgMSAwICAgICAgICAgXCIvPiAgICA8L2ZpbHRlcj4gICAgPC9zdmc+ICAgICNyZWNvbG9yJyk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJfX3RleHQtLXdoaXRlOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyIGE6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuXG4udGVhc2VyX190ZXh0LS13aGl0ZTpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlciBhW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZDogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvbGluay1leHRlcm5hbC5zdmcjbGluay1leHRlcm5hbC1pY29uLXcyNC12aWV3XCIpO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgZmlsdGVyOiBzYXR1cmF0ZSgwJSkgYnJpZ2h0bmVzcygwJSkgaW52ZXJ0KDEwMCUpIG9wYWNpdHkoMSk7XG4gIGZpbHRlcjogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+ICAgIDxmaWx0ZXIgaWQ9XCJyZWNvbG9yXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIiAgICAgICAgIDAgMCAwIDAgMSAgICAgICAgIDAgMCAwIDAgMSAgICAgICAgIDAgMCAwIDAgMSAgICAgICAgIDAgMCAwIDEgMCAgICAgICAgIFwiLz4gICAgPC9maWx0ZXI+ICAgIDwvc3ZnPiAgICAjcmVjb2xvcicpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGVhc2VyX190ZXh0LS13aGl0ZTpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlciBhW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cblxuLnRlYXNlcl9fdGV4dC0td2hpdGU6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXIgLnZpZGVvX19saW5rIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4udGVhc2VyX190ZXh0LS13aGl0ZS50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uLCAudGVhc2VyX190ZXh0LS13aGl0ZS50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgY29sb3I6ICM1MzU2NWE7XG59XG5cbi50ZWFzZXI6bm90KC5zdGFnZSk6bm90KC50ZWFzZXItLWxheW91dC10b3ApOm5vdCgudGVhc2VyX190aXRsZS0tdm9sdm9ub3Z1bSkgLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLWJyb2FkKTtcbiAgZm9udC1zaXplOiA0OHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMC45NTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxzLXZvbHZvKTtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLnRlYXNlcl9fdGl0bGUtLXZvbHZvbm92dW0gLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW1lZGl1bSk7XG4gIGZvbnQtc2l6ZTogMjdweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxzLWRlZmF1bHQpO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlcl9fdGl0bGUtLXZvbHZvbm92dW0gLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDMycHg7XG4gIH1cbn1cblxuLyojIHNvdXJjZU1hcHBpbmdVUkw9dGVhc2VyLmJ1bmRsZS5jc3MubWFwICovIl19 */