/*!**************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/scss/base.scss ***!
  \**************************************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
/*
Basic styles
==================================================
Contains the imports to all basic styles.

The file organization follows the 7-1 pattern architecture
https://sass-guidelin.es/#the-7-1-pattern
*/
/*
Bootstrap variables
==================================================
Contains all overrides of bootstrap default variables.
*/
/*
 * Container max width
 * ------------------- */
/*
 * Font-weight
 * ----------- */
/*
 * Shadow
 * ------ */
/*
 * Inputs
 * ------ */
/*
Custom variables
==================================================
*/
/*
 * Base
 * ---- */
/*
 * Transition
 * ----------
 * Eine Dauer fuer alles, was auf Ueberfahren antwortet — Buttons, Links,
 * Navigation, Karten, Bild-Zoom, Aufklapper. Vorher lief das auf einer Skala
 * aus drei Werten (.15s / .25s / .5s); die Rueckmeldung soll aber ueber die
 * ganze Seite denselben Takt haben, sonst wirkt dieselbe Geste mal flink, mal
 * zaeh.
 */
/**
 * Opacity
 * ------- */
/*
 * Buttons
 * ------- */
/*
 * Verlaufs-Hover (Vorbild: Syntegon)
 * ----------------------------------
 * Ruhezustand flaechig, beim Ueberfahren laeuft die Flaeche nach unten in den
 * helleren Ton derselben Farbe aus. Die Palette in theme.json kennt pro
 * Marken-Farbe nur einen Wert, der zweite Ton wird hier gefuehrt: gleicher
 * Farbton, gleiche Saettigung, Helligkeit um 16 Prozentpunkte angehoben.
 *
 *   senary  #bbd03a = hsl(68, 62%, 52%)  ->  #d2e07b = hsl(68, 62%, 68%)
 *   primary #272f6f = hsl(233, 48%, 29%) ->  #3c48aa = hsl(233, 48%, 45%)
 *
 * Nicht ueber color-mix mit Weiss gerechnet: das entsaettigt und macht aus dem
 * Marineblau ein Graublau.
 */
/*
 * Sekundaerer transparenter Button (Vorbild: Syntegon "Nehmen Sie Kontakt auf")
 * ---------------------------------------------------------------------------- */
/* Fokusring fuer die Tastatur — die Buttons blenden ihr Browser-Outline aus. */
/*
 * Header
 * ------ */
/*
 * Logo
 * ---- */
/**
 * Headline dot
 * ------------ */
/**
 * Chevron link
 * ------------ */
/* Strecke, die der Chevron beim Ueberfahren vorrueckt — wie in der
   Footer-Linkliste, dort rueckt er um dieselben 4px. */
/**
 * Link-Hover
 * ----------
 * Zwei Reaktionen, beide aus der Navigation uebernommen: der Link wird heller
 * und die Schrift zieht an.
 *
 * Die Farbe ist ein aufgehelltes Secondary — ueber color-mix statt als fester
 * zweiter Hex-Wert, damit die Aufhellung der Palette folgt; die Ausgangsfarbe
 * steht als Custom Property erst zur Laufzeit fest und laesst sich in Sass
 * nicht rechnen. Fuer Browser ohne color-mix steht der gerechnete Wert als
 * Rueckfallebene daneben.
 */
/*
 * Verdickung ohne Layoutsprung: font-weight laesst sich ohne Variable Font
 * nicht weich fahren und wuerde ausserdem die Wortbreite aendern — die Zeile
 * zappelte dann beim Ueberfahren. Der text-shadow verdickt den Strich um
 * Bruchteile eines Pixels, tweent sauber und aendert kein Layout. Derselbe
 * Wert traegt den Hover der Hauptnavigation.
 */
/**
 * Advantages check
 * ---------------- */
/**
 * Read more
 * ---------
 * Der Pfeil-Button der Karten. Der Kasten ist CSS (Rahmen + Flaeche), nur der
 * Pfeil kommt aus einer Datei — als Maske, damit er sich einfaerben und damit
 * weich ueberblenden laesst. Die Icon-Masse sind die des Chevrons in
 * readmore-chevron.svg; bei genau diesen Werten steht der Strich auf 1px, wie
 * beim frueheren more.svg.
 */
/* Rahmen und Pfeil stehen im selben Dunkel — frueher war der Rahmen schwarz
   und der Pfeil Faeth-Blau, zwei Toene an einem Element. Eine Zeile fuer die
   ganze Seite: hier auf var(--wp--preset--color--primary) stellen, wenn die
   Pfeile im Marineblau der Marke stehen sollen. */
/*
 * Services element
 * ----------------
 * Hoehe der Teaser-Kacheln auf der Startseite.
 *
 * Die Motive sind Hochformat (400x600, Maschine mittig auf hellem Grund). Bei
 * 500px und einer Spaltenbreite von 304-424px steht die Kachel fast im
 * Seitenverhaeltnis der Vorlage — es wird kaum etwas weggeschnitten, und die
 * Maschine steht so gross wie moeglich im Bild.
 *
 * Nach unten wird die Kachel flacher: bei md sind die drei Spalten nur noch
 * gut 220px breit, bei 500px waere das ein Streifen; unterhalb von md steht
 * jede Kachel ueber die volle Breite und braucht keine Hoehe mehr, die eine
 * halbe Bildschirmseite fuellt.
 */
/* Ausfahrhoehe des Untertitels beim Ueberfahren — zwei Zeilen. */
/*
 * Main navigation
 * --------------- */
/*
 * Oberste Menuezeile: Abstaende und Schriftgroesse.
 * ------------------------------------------------
 * Auf breiten Schirmen steht die Zeile im Normalabstand
 * ($main-navigation-item-gap) linksbuendig, ueberschuessige Breite bleibt
 * rechts frei. Wird es enger, ruecken die Punkte bis auf
 * $main-navigation-item-min-gap zusammen und nutzen dabei die ganze Breite;
 * erst danach faellt als letztes Mittel die Schriftgroesse auf
 * $main-navigation-link-font-size-min. Die drei Stufen gehen fliessend
 * ineinander ueber (Rechnung in _main-navigation.scss).
 */
/*
 * Slick slider
 * ------------ */
/*
 * Yoast breadcrumb
 * ---------------- */
/*
 * Gosign
 * ------ */
/*
 * Icon carousel element
 * --------------------- */
/*
 * Footer
 * ------ */
/*!
 * Bootstrap  v5.2.3 (https://getbootstrap.com/)
 * Copyright 2011-2022 The Bootstrap Authors
 * Copyright 2011-2022 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
:root {
  --bs-blue: #0d6efd;
  --bs-indigo: #6610f2;
  --bs-purple: #6f42c1;
  --bs-pink: #d63384;
  --bs-red: #dc3545;
  --bs-orange: #fd7e14;
  --bs-yellow: #ffc107;
  --bs-green: #198754;
  --bs-teal: #20c997;
  --bs-cyan: #0dcaf0;
  --bs-black: #000;
  --bs-white: #fff;
  --bs-gray: #6c757d;
  --bs-gray-dark: #343a40;
  --bs-gray-100: #f8f9fa;
  --bs-gray-200: #e9ecef;
  --bs-gray-300: #dee2e6;
  --bs-gray-400: #ced4da;
  --bs-gray-500: #adb5bd;
  --bs-gray-600: #6c757d;
  --bs-gray-700: #495057;
  --bs-gray-800: #343a40;
  --bs-gray-900: #212529;
  --bs-primary: #0d6efd;
  --bs-secondary: #6c757d;
  --bs-success: #198754;
  --bs-info: #0dcaf0;
  --bs-warning: #ffc107;
  --bs-danger: #dc3545;
  --bs-light: #f8f9fa;
  --bs-dark: #212529;
  --bs-primary-rgb: 13, 110, 253;
  --bs-secondary-rgb: 108, 117, 125;
  --bs-success-rgb: 25, 135, 84;
  --bs-info-rgb: 13, 202, 240;
  --bs-warning-rgb: 255, 193, 7;
  --bs-danger-rgb: 220, 53, 69;
  --bs-light-rgb: 248, 249, 250;
  --bs-dark-rgb: 33, 37, 41;
  --bs-white-rgb: 255, 255, 255;
  --bs-black-rgb: 0, 0, 0;
  --bs-body-color-rgb: 33, 37, 41;
  --bs-body-bg-rgb: 255, 255, 255;
  --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
  --bs-body-font-family: var(--bs-font-sans-serif);
  --bs-body-font-size: 1rem;
  --bs-body-font-weight: 400;
  --bs-body-line-height: 1.5;
  --bs-body-color: #212529;
  --bs-body-bg: #fff;
  --bs-border-width: 1px;
  --bs-border-style: solid;
  --bs-border-color: #dee2e6;
  --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
  --bs-border-radius: 0.375rem;
  --bs-border-radius-sm: 0.25rem;
  --bs-border-radius-lg: 0.5rem;
  --bs-border-radius-xl: 1rem;
  --bs-border-radius-2xl: 2rem;
  --bs-border-radius-pill: 50rem;
  --bs-link-color: #0d6efd;
  --bs-link-hover-color: color-mix(in srgb, var(--wp--preset--color--secondary) 78%, #fff);
  --bs-code-color: #d63384;
  --bs-highlight-bg: #fff3cd;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

@media (prefers-reduced-motion: no-preference) {
  :root {
    scroll-behavior: smooth;
  }
}

body {
  margin: 0;
  font-family: var(--bs-body-font-family);
  font-size: var(--bs-body-font-size);
  font-weight: var(--bs-body-font-weight);
  line-height: var(--bs-body-line-height);
  color: var(--bs-body-color);
  text-align: var(--bs-body-text-align);
  background-color: var(--bs-body-bg);
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}

hr {
  margin: 1rem 0;
  color: inherit;
  border: 0;
  border-top: 1px solid;
  opacity: 0.25;
}

h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
  margin-top: 0;
  margin-bottom: 0.5rem;
  font-weight: 500;
  line-height: 1.2;
}

h1, .h1 {
  font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
  h1, .h1 {
    font-size: 2.5rem;
  }
}

h2, .h2 {
  font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
  h2, .h2 {
    font-size: 2rem;
  }
}

h3, .h3 {
  font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
  h3, .h3 {
    font-size: 1.75rem;
  }
}

h4, .h4 {
  font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
  h4, .h4 {
    font-size: 1.5rem;
  }
}

h5, .h5 {
  font-size: 1.25rem;
}

h6, .h6 {
  font-size: 1rem;
}

p {
  margin-top: 0;
  margin-bottom: 1rem;
}

abbr[title] {
  text-decoration: underline dotted;
  cursor: help;
  text-decoration-skip-ink: none;
}

address {
  margin-bottom: 1rem;
  font-style: normal;
  line-height: inherit;
}

ol,
ul {
  padding-left: 2rem;
}

ol,
ul,
dl {
  margin-top: 0;
  margin-bottom: 1rem;
}

ol ol,
ul ul,
ol ul,
ul ol {
  margin-bottom: 0;
}

dt {
  font-weight: 700;
}

dd {
  margin-bottom: 0.5rem;
  margin-left: 0;
}

blockquote {
  margin: 0 0 1rem;
}

b,
strong {
  font-weight: bolder;
}

small, .small {
  font-size: 0.875em;
}

mark, .mark {
  padding: 0.1875em;
  background-color: var(--bs-highlight-bg);
}

sub,
sup {
  position: relative;
  font-size: 0.75em;
  line-height: 0;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

a {
  color: var(--bs-link-color);
  text-decoration: underline;
}
a:hover {
  color: var(--bs-link-hover-color);
}

a:not([href]):not([class]), a:not([href]):not([class]):hover {
  color: inherit;
  text-decoration: none;
}

pre,
code,
kbd,
samp {
  font-family: var(--bs-font-monospace);
  font-size: 1em;
}

pre {
  display: block;
  margin-top: 0;
  margin-bottom: 1rem;
  overflow: auto;
  font-size: 0.875em;
}
pre code {
  font-size: inherit;
  color: inherit;
  word-break: normal;
}

code {
  font-size: 0.875em;
  color: var(--bs-code-color);
  word-wrap: break-word;
}
a > code {
  color: inherit;
}

kbd {
  padding: 0.1875rem 0.375rem;
  font-size: 0.875em;
  color: var(--bs-body-bg);
  background-color: var(--bs-body-color);
  border-radius: 0.25rem;
}
kbd kbd {
  padding: 0;
  font-size: 1em;
}

figure {
  margin: 0 0 1rem;
}

img,
svg {
  vertical-align: middle;
}

table {
  caption-side: bottom;
  border-collapse: collapse;
}

caption {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  color: #6c757d;
  text-align: left;
}

th {
  text-align: inherit;
  text-align: -webkit-match-parent;
}

thead,
tbody,
tfoot,
tr,
td,
th {
  border-color: inherit;
  border-style: solid;
  border-width: 0;
}

label {
  display: inline-block;
}

button {
  border-radius: 0;
}

button:focus:not(:focus-visible) {
  outline: 0;
}

input,
button,
select,
optgroup,
textarea {
  margin: 0;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

button,
select {
  text-transform: none;
}

[role=button] {
  cursor: pointer;
}

select {
  word-wrap: normal;
}
select:disabled {
  opacity: 1;
}

[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
  display: none !important;
}

button,
[type=button],
[type=reset],
[type=submit] {
  -webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
  cursor: pointer;
}

::-moz-focus-inner {
  padding: 0;
  border-style: none;
}

textarea {
  resize: vertical;
}

fieldset {
  min-width: 0;
  padding: 0;
  margin: 0;
  border: 0;
}

legend {
  float: left;
  width: 100%;
  padding: 0;
  margin-bottom: 0.5rem;
  font-size: calc(1.275rem + 0.3vw);
  line-height: inherit;
}
@media (min-width: 1200px) {
  legend {
    font-size: 1.5rem;
  }
}
legend + * {
  clear: left;
}

::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
  padding: 0;
}

::-webkit-inner-spin-button {
  height: auto;
}

[type=search] {
  outline-offset: -2px;
  -webkit-appearance: textfield;
}

/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
  direction: ltr;
}
*/
::-webkit-search-decoration {
  -webkit-appearance: none;
}

::-webkit-color-swatch-wrapper {
  padding: 0;
}

::file-selector-button {
  font: inherit;
  -webkit-appearance: button;
}

output {
  display: inline-block;
}

iframe {
  border: 0;
}

summary {
  display: list-item;
  cursor: pointer;
}

progress {
  vertical-align: baseline;
}

[hidden] {
  display: none !important;
}

.lead {
  font-size: 1.25rem;
  font-weight: 300;
}

.display-1 {
  font-size: calc(1.625rem + 4.5vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-1 {
    font-size: 5rem;
  }
}

.display-2 {
  font-size: calc(1.575rem + 3.9vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-2 {
    font-size: 4.5rem;
  }
}

.display-3 {
  font-size: calc(1.525rem + 3.3vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-3 {
    font-size: 4rem;
  }
}

.display-4 {
  font-size: calc(1.475rem + 2.7vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-4 {
    font-size: 3.5rem;
  }
}

.display-5 {
  font-size: calc(1.425rem + 2.1vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-5 {
    font-size: 3rem;
  }
}

.display-6 {
  font-size: calc(1.375rem + 1.5vw);
  font-weight: 300;
  line-height: 1.2;
}
@media (min-width: 1200px) {
  .display-6 {
    font-size: 2.5rem;
  }
}

.list-unstyled {
  padding-left: 0;
  list-style: none;
}

.list-inline {
  padding-left: 0;
  list-style: none;
}

.list-inline-item {
  display: inline-block;
}
.list-inline-item:not(:last-child) {
  margin-right: 0.5rem;
}

.initialism {
  font-size: 0.875em;
  text-transform: uppercase;
}

.blockquote {
  margin-bottom: 1rem;
  font-size: 1.25rem;
}
.blockquote > :last-child {
  margin-bottom: 0;
}

.blockquote-footer {
  margin-top: -1rem;
  margin-bottom: 1rem;
  font-size: 0.875em;
  color: #6c757d;
}
.blockquote-footer::before {
  content: "— ";
}

.img-fluid, .wp-block-leopard-posts .post-row .post-content .post-thumbnail .wp-post-image {
  max-width: 100%;
  height: auto;
}

.img-thumbnail {
  padding: 0.25rem;
  background-color: #fff;
  border: 1px solid var(--bs-border-color);
  border-radius: 0.375rem;
  max-width: 100%;
  height: auto;
}

.figure {
  display: inline-block;
}

.figure-img {
  margin-bottom: 0.5rem;
  line-height: 1;
}

.figure-caption {
  font-size: 0.875em;
  color: #6c757d;
}

.container,
.container-fluid,
.container-xxl,
.container-xl,
.container-md,
.container-sm {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-right: auto;
  margin-left: auto;
}

@media (min-width: 576px) {
  .container-sm, .container {
    max-width: 720px;
  }
}
@media (min-width: 768px) {
  .container-md, .container-sm, .container {
    max-width: 960px;
  }
}
@media (min-width: 1200px) {
  .container-xl, .container-lg, .container-md, .container-sm, .container {
    max-width: 1140px;
  }
}
@media (min-width: 1400px) {
  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
    max-width: 1400px;
  }
}
.row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(-1 * var(--bs-gutter-y));
  margin-right: calc(-0.5 * var(--bs-gutter-x));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
}
.row > * {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-top: var(--bs-gutter-y);
}

.col {
  flex: 1 0 0%;
}

.row-cols-auto > * {
  flex: 0 0 auto;
  width: auto;
}

.row-cols-1 > * {
  flex: 0 0 auto;
  width: 100%;
}

.row-cols-2 > * {
  flex: 0 0 auto;
  width: 50%;
}

.row-cols-3 > * {
  flex: 0 0 auto;
  width: 33.3333333333%;
}

.row-cols-4 > * {
  flex: 0 0 auto;
  width: 25%;
}

.row-cols-5 > * {
  flex: 0 0 auto;
  width: 20%;
}

.row-cols-6 > * {
  flex: 0 0 auto;
  width: 16.6666666667%;
}

.col-auto {
  flex: 0 0 auto;
  width: auto;
}

.col-1 {
  flex: 0 0 auto;
  width: 8.33333333%;
}

.col-2 {
  flex: 0 0 auto;
  width: 16.66666667%;
}

.col-3 {
  flex: 0 0 auto;
  width: 25%;
}

.col-4 {
  flex: 0 0 auto;
  width: 33.33333333%;
}

.col-5 {
  flex: 0 0 auto;
  width: 41.66666667%;
}

.col-6 {
  flex: 0 0 auto;
  width: 50%;
}

.col-7 {
  flex: 0 0 auto;
  width: 58.33333333%;
}

.col-8 {
  flex: 0 0 auto;
  width: 66.66666667%;
}

.col-9 {
  flex: 0 0 auto;
  width: 75%;
}

.col-10 {
  flex: 0 0 auto;
  width: 83.33333333%;
}

.col-11 {
  flex: 0 0 auto;
  width: 91.66666667%;
}

.col-12 {
  flex: 0 0 auto;
  width: 100%;
}

.offset-1 {
  margin-left: 8.33333333%;
}

.offset-2 {
  margin-left: 16.66666667%;
}

.offset-3 {
  margin-left: 25%;
}

.offset-4 {
  margin-left: 33.33333333%;
}

.offset-5 {
  margin-left: 41.66666667%;
}

.offset-6 {
  margin-left: 50%;
}

.offset-7 {
  margin-left: 58.33333333%;
}

.offset-8 {
  margin-left: 66.66666667%;
}

.offset-9 {
  margin-left: 75%;
}

.offset-10 {
  margin-left: 83.33333333%;
}

.offset-11 {
  margin-left: 91.66666667%;
}

.g-0,
.gx-0 {
  --bs-gutter-x: 0;
}

.g-0,
.gy-0 {
  --bs-gutter-y: 0;
}

.g-1,
.gx-1 {
  --bs-gutter-x: 0.25rem;
}

.g-1,
.gy-1 {
  --bs-gutter-y: 0.25rem;
}

.g-2,
.gx-2 {
  --bs-gutter-x: 0.5rem;
}

.g-2,
.gy-2 {
  --bs-gutter-y: 0.5rem;
}

.g-3,
.gx-3 {
  --bs-gutter-x: 1rem;
}

.g-3,
.gy-3 {
  --bs-gutter-y: 1rem;
}

.g-4,
.gx-4 {
  --bs-gutter-x: 1.5rem;
}

.g-4,
.gy-4 {
  --bs-gutter-y: 1.5rem;
}

.g-5,
.gx-5 {
  --bs-gutter-x: 3rem;
}

.g-5,
.gy-5 {
  --bs-gutter-y: 3rem;
}

@media (min-width: 576px) {
  .col-sm {
    flex: 1 0 0%;
  }
  .row-cols-sm-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-sm-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-sm-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-sm-3 > * {
    flex: 0 0 auto;
    width: 33.3333333333%;
  }
  .row-cols-sm-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-sm-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-sm-6 > * {
    flex: 0 0 auto;
    width: 16.6666666667%;
  }
  .col-sm-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-sm-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-sm-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-sm-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-sm-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-sm-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-sm-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-sm-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-sm-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-sm-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-sm-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-sm-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-sm-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-sm-0 {
    margin-left: 0;
  }
  .offset-sm-1 {
    margin-left: 8.33333333%;
  }
  .offset-sm-2 {
    margin-left: 16.66666667%;
  }
  .offset-sm-3 {
    margin-left: 25%;
  }
  .offset-sm-4 {
    margin-left: 33.33333333%;
  }
  .offset-sm-5 {
    margin-left: 41.66666667%;
  }
  .offset-sm-6 {
    margin-left: 50%;
  }
  .offset-sm-7 {
    margin-left: 58.33333333%;
  }
  .offset-sm-8 {
    margin-left: 66.66666667%;
  }
  .offset-sm-9 {
    margin-left: 75%;
  }
  .offset-sm-10 {
    margin-left: 83.33333333%;
  }
  .offset-sm-11 {
    margin-left: 91.66666667%;
  }
  .g-sm-0,
  .gx-sm-0 {
    --bs-gutter-x: 0;
  }
  .g-sm-0,
  .gy-sm-0 {
    --bs-gutter-y: 0;
  }
  .g-sm-1,
  .gx-sm-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-sm-1,
  .gy-sm-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-sm-2,
  .gx-sm-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-sm-2,
  .gy-sm-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-sm-3,
  .gx-sm-3 {
    --bs-gutter-x: 1rem;
  }
  .g-sm-3,
  .gy-sm-3 {
    --bs-gutter-y: 1rem;
  }
  .g-sm-4,
  .gx-sm-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-sm-4,
  .gy-sm-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-sm-5,
  .gx-sm-5 {
    --bs-gutter-x: 3rem;
  }
  .g-sm-5,
  .gy-sm-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 768px) {
  .col-md {
    flex: 1 0 0%;
  }
  .row-cols-md-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-md-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-md-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-md-3 > * {
    flex: 0 0 auto;
    width: 33.3333333333%;
  }
  .row-cols-md-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-md-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-md-6 > * {
    flex: 0 0 auto;
    width: 16.6666666667%;
  }
  .col-md-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-md-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-md-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-md-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-md-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-md-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-md-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-md-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-md-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-md-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-md-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-md-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-md-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-md-0 {
    margin-left: 0;
  }
  .offset-md-1 {
    margin-left: 8.33333333%;
  }
  .offset-md-2 {
    margin-left: 16.66666667%;
  }
  .offset-md-3 {
    margin-left: 25%;
  }
  .offset-md-4 {
    margin-left: 33.33333333%;
  }
  .offset-md-5 {
    margin-left: 41.66666667%;
  }
  .offset-md-6 {
    margin-left: 50%;
  }
  .offset-md-7 {
    margin-left: 58.33333333%;
  }
  .offset-md-8 {
    margin-left: 66.66666667%;
  }
  .offset-md-9 {
    margin-left: 75%;
  }
  .offset-md-10 {
    margin-left: 83.33333333%;
  }
  .offset-md-11 {
    margin-left: 91.66666667%;
  }
  .g-md-0,
  .gx-md-0 {
    --bs-gutter-x: 0;
  }
  .g-md-0,
  .gy-md-0 {
    --bs-gutter-y: 0;
  }
  .g-md-1,
  .gx-md-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-md-1,
  .gy-md-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-md-2,
  .gx-md-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-md-2,
  .gy-md-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-md-3,
  .gx-md-3 {
    --bs-gutter-x: 1rem;
  }
  .g-md-3,
  .gy-md-3 {
    --bs-gutter-y: 1rem;
  }
  .g-md-4,
  .gx-md-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-md-4,
  .gy-md-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-md-5,
  .gx-md-5 {
    --bs-gutter-x: 3rem;
  }
  .g-md-5,
  .gy-md-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 992px) {
  .col-lg {
    flex: 1 0 0%;
  }
  .row-cols-lg-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-lg-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-lg-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-lg-3 > * {
    flex: 0 0 auto;
    width: 33.3333333333%;
  }
  .row-cols-lg-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-lg-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-lg-6 > * {
    flex: 0 0 auto;
    width: 16.6666666667%;
  }
  .col-lg-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-lg-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-lg-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-lg-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-lg-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-lg-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-lg-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-lg-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-lg-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-lg-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-lg-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-lg-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-lg-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-lg-0 {
    margin-left: 0;
  }
  .offset-lg-1 {
    margin-left: 8.33333333%;
  }
  .offset-lg-2 {
    margin-left: 16.66666667%;
  }
  .offset-lg-3 {
    margin-left: 25%;
  }
  .offset-lg-4 {
    margin-left: 33.33333333%;
  }
  .offset-lg-5 {
    margin-left: 41.66666667%;
  }
  .offset-lg-6 {
    margin-left: 50%;
  }
  .offset-lg-7 {
    margin-left: 58.33333333%;
  }
  .offset-lg-8 {
    margin-left: 66.66666667%;
  }
  .offset-lg-9 {
    margin-left: 75%;
  }
  .offset-lg-10 {
    margin-left: 83.33333333%;
  }
  .offset-lg-11 {
    margin-left: 91.66666667%;
  }
  .g-lg-0,
  .gx-lg-0 {
    --bs-gutter-x: 0;
  }
  .g-lg-0,
  .gy-lg-0 {
    --bs-gutter-y: 0;
  }
  .g-lg-1,
  .gx-lg-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-lg-1,
  .gy-lg-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-lg-2,
  .gx-lg-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-lg-2,
  .gy-lg-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-lg-3,
  .gx-lg-3 {
    --bs-gutter-x: 1rem;
  }
  .g-lg-3,
  .gy-lg-3 {
    --bs-gutter-y: 1rem;
  }
  .g-lg-4,
  .gx-lg-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-lg-4,
  .gy-lg-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-lg-5,
  .gx-lg-5 {
    --bs-gutter-x: 3rem;
  }
  .g-lg-5,
  .gy-lg-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 1200px) {
  .col-xl {
    flex: 1 0 0%;
  }
  .row-cols-xl-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-xl-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-xl-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-xl-3 > * {
    flex: 0 0 auto;
    width: 33.3333333333%;
  }
  .row-cols-xl-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-xl-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-xl-6 > * {
    flex: 0 0 auto;
    width: 16.6666666667%;
  }
  .col-xl-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-xl-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-xl-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xl-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-xl-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-xl-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-xl-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-xl-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-xl-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-xl-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-xl-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-xl-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-xl-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-xl-0 {
    margin-left: 0;
  }
  .offset-xl-1 {
    margin-left: 8.33333333%;
  }
  .offset-xl-2 {
    margin-left: 16.66666667%;
  }
  .offset-xl-3 {
    margin-left: 25%;
  }
  .offset-xl-4 {
    margin-left: 33.33333333%;
  }
  .offset-xl-5 {
    margin-left: 41.66666667%;
  }
  .offset-xl-6 {
    margin-left: 50%;
  }
  .offset-xl-7 {
    margin-left: 58.33333333%;
  }
  .offset-xl-8 {
    margin-left: 66.66666667%;
  }
  .offset-xl-9 {
    margin-left: 75%;
  }
  .offset-xl-10 {
    margin-left: 83.33333333%;
  }
  .offset-xl-11 {
    margin-left: 91.66666667%;
  }
  .g-xl-0,
  .gx-xl-0 {
    --bs-gutter-x: 0;
  }
  .g-xl-0,
  .gy-xl-0 {
    --bs-gutter-y: 0;
  }
  .g-xl-1,
  .gx-xl-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-xl-1,
  .gy-xl-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-xl-2,
  .gx-xl-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-xl-2,
  .gy-xl-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-xl-3,
  .gx-xl-3 {
    --bs-gutter-x: 1rem;
  }
  .g-xl-3,
  .gy-xl-3 {
    --bs-gutter-y: 1rem;
  }
  .g-xl-4,
  .gx-xl-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-xl-4,
  .gy-xl-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-xl-5,
  .gx-xl-5 {
    --bs-gutter-x: 3rem;
  }
  .g-xl-5,
  .gy-xl-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 1400px) {
  .col-xxl {
    flex: 1 0 0%;
  }
  .row-cols-xxl-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-xxl-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-xxl-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-xxl-3 > * {
    flex: 0 0 auto;
    width: 33.3333333333%;
  }
  .row-cols-xxl-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-xxl-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-xxl-6 > * {
    flex: 0 0 auto;
    width: 16.6666666667%;
  }
  .col-xxl-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-xxl-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-xxl-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xxl-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-xxl-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-xxl-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-xxl-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-xxl-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-xxl-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-xxl-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-xxl-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-xxl-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-xxl-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-xxl-0 {
    margin-left: 0;
  }
  .offset-xxl-1 {
    margin-left: 8.33333333%;
  }
  .offset-xxl-2 {
    margin-left: 16.66666667%;
  }
  .offset-xxl-3 {
    margin-left: 25%;
  }
  .offset-xxl-4 {
    margin-left: 33.33333333%;
  }
  .offset-xxl-5 {
    margin-left: 41.66666667%;
  }
  .offset-xxl-6 {
    margin-left: 50%;
  }
  .offset-xxl-7 {
    margin-left: 58.33333333%;
  }
  .offset-xxl-8 {
    margin-left: 66.66666667%;
  }
  .offset-xxl-9 {
    margin-left: 75%;
  }
  .offset-xxl-10 {
    margin-left: 83.33333333%;
  }
  .offset-xxl-11 {
    margin-left: 91.66666667%;
  }
  .g-xxl-0,
  .gx-xxl-0 {
    --bs-gutter-x: 0;
  }
  .g-xxl-0,
  .gy-xxl-0 {
    --bs-gutter-y: 0;
  }
  .g-xxl-1,
  .gx-xxl-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-xxl-1,
  .gy-xxl-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-xxl-2,
  .gx-xxl-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-xxl-2,
  .gy-xxl-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-xxl-3,
  .gx-xxl-3 {
    --bs-gutter-x: 1rem;
  }
  .g-xxl-3,
  .gy-xxl-3 {
    --bs-gutter-y: 1rem;
  }
  .g-xxl-4,
  .gx-xxl-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-xxl-4,
  .gy-xxl-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-xxl-5,
  .gx-xxl-5 {
    --bs-gutter-x: 3rem;
  }
  .g-xxl-5,
  .gy-xxl-5 {
    --bs-gutter-y: 3rem;
  }
}
.table {
  --bs-table-color: var(--bs-body-color);
  --bs-table-bg: transparent;
  --bs-table-border-color: var(--bs-border-color);
  --bs-table-accent-bg: transparent;
  --bs-table-striped-color: var(--bs-body-color);
  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);
  --bs-table-active-color: var(--bs-body-color);
  --bs-table-active-bg: rgba(0, 0, 0, 0.1);
  --bs-table-hover-color: var(--bs-body-color);
  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);
  width: 100%;
  margin-bottom: 1rem;
  color: var(--bs-table-color);
  vertical-align: top;
  border-color: var(--bs-table-border-color);
}
.table > :not(caption) > * > * {
  padding: 0.5rem 0.5rem;
  background-color: var(--bs-table-bg);
  border-bottom-width: 1px;
  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);
}
.table > tbody {
  vertical-align: inherit;
}
.table > thead {
  vertical-align: bottom;
}

.table-group-divider {
  border-top: 2px solid currentcolor;
}

.caption-top {
  caption-side: top;
}

.table-sm > :not(caption) > * > * {
  padding: 0.25rem 0.25rem;
}

.table-bordered > :not(caption) > * {
  border-width: 1px 0;
}
.table-bordered > :not(caption) > * > * {
  border-width: 0 1px;
}

.table-borderless > :not(caption) > * > * {
  border-bottom-width: 0;
}
.table-borderless > :not(:first-child) {
  border-top-width: 0;
}

.table-striped > tbody > tr:nth-of-type(odd) > * {
  --bs-table-accent-bg: var(--bs-table-striped-bg);
  color: var(--bs-table-striped-color);
}

.table-striped-columns > :not(caption) > tr > :nth-child(even) {
  --bs-table-accent-bg: var(--bs-table-striped-bg);
  color: var(--bs-table-striped-color);
}

.table-active {
  --bs-table-accent-bg: var(--bs-table-active-bg);
  color: var(--bs-table-active-color);
}

.table-hover > tbody > tr:hover > * {
  --bs-table-accent-bg: var(--bs-table-hover-bg);
  color: var(--bs-table-hover-color);
}

.table-primary {
  --bs-table-color: #000;
  --bs-table-bg: #cfe2ff;
  --bs-table-border-color: #bacbe6;
  --bs-table-striped-bg: #c5d7f2;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #bacbe6;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #bfd1ec;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-secondary {
  --bs-table-color: #000;
  --bs-table-bg: #e2e3e5;
  --bs-table-border-color: #cbccce;
  --bs-table-striped-bg: #d7d8da;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #cbccce;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #d1d2d4;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-success {
  --bs-table-color: #000;
  --bs-table-bg: #d1e7dd;
  --bs-table-border-color: #bcd0c7;
  --bs-table-striped-bg: #c7dbd2;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #bcd0c7;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #c1d6cc;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-info {
  --bs-table-color: #000;
  --bs-table-bg: #cff4fc;
  --bs-table-border-color: #badce3;
  --bs-table-striped-bg: #c5e8ef;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #badce3;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #bfe2e9;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-warning {
  --bs-table-color: #000;
  --bs-table-bg: #fff3cd;
  --bs-table-border-color: #e6dbb9;
  --bs-table-striped-bg: #f2e7c3;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #e6dbb9;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #ece1be;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-danger {
  --bs-table-color: #000;
  --bs-table-bg: #f8d7da;
  --bs-table-border-color: #dfc2c4;
  --bs-table-striped-bg: #eccccf;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #dfc2c4;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #e5c7ca;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-light {
  --bs-table-color: #000;
  --bs-table-bg: #f8f9fa;
  --bs-table-border-color: #dfe0e1;
  --bs-table-striped-bg: #ecedee;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #dfe0e1;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #e5e6e7;
  --bs-table-hover-color: #000;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-dark {
  --bs-table-color: #fff;
  --bs-table-bg: #212529;
  --bs-table-border-color: #373b3e;
  --bs-table-striped-bg: #2c3034;
  --bs-table-striped-color: #fff;
  --bs-table-active-bg: #373b3e;
  --bs-table-active-color: #fff;
  --bs-table-hover-bg: #323539;
  --bs-table-hover-color: #fff;
  color: var(--bs-table-color);
  border-color: var(--bs-table-border-color);
}

.table-responsive {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 575.98px) {
  .table-responsive-sm {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 767.98px) {
  .table-responsive-md {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 991.98px) {
  .table-responsive-lg {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 1199.98px) {
  .table-responsive-xl {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 1399.98px) {
  .table-responsive-xxl {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}
.form-label {
  margin-bottom: 0.5rem;
}

.col-form-label {
  padding-top: calc(0.75rem + 1px);
  padding-bottom: calc(0.75rem + 1px);
  margin-bottom: 0;
  font-size: inherit;
  line-height: 1.5;
}

.col-form-label-lg {
  padding-top: calc(0.5rem + 1px);
  padding-bottom: calc(0.5rem + 1px);
  font-size: 1.25rem;
}

.col-form-label-sm {
  padding-top: calc(0.25rem + 1px);
  padding-bottom: calc(0.25rem + 1px);
  font-size: 0.875rem;
}

.form-text {
  margin-top: 0.25rem;
  font-size: 0.875em;
  color: #6c757d;
}

.form-control {
  display: block;
  width: 100%;
  padding: 0.75rem 0.75rem;
  font-size: var(--wp--preset--font-size--small);
  font-weight: 400;
  line-height: 1.5;
  color: #212529;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid var(--wp--preset--color--septenary);
  appearance: none;
  border-radius: 0.375rem;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-control {
    transition: none;
  }
}
.form-control[type=file] {
  overflow: hidden;
}
.form-control[type=file]:not(:disabled):not([readonly]) {
  cursor: pointer;
}
.form-control:focus {
  color: #212529;
  background-color: #fff;
  border-color: #86b7fe;
  outline: 0;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-control::-webkit-date-and-time-value {
  height: 1.5em;
}
.form-control::placeholder {
  color: #6c757d;
  opacity: 1;
}
.form-control:disabled {
  background-color: #e9ecef;
  opacity: 1;
}
.form-control::file-selector-button {
  padding: 0.75rem 0.75rem;
  margin: -0.75rem -0.75rem;
  margin-inline-end: 0.75rem;
  color: #212529;
  background-color: #e9ecef;
  pointer-events: none;
  border-color: inherit;
  border-style: solid;
  border-width: 0;
  border-inline-end-width: 1px;
  border-radius: 0;
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-control::file-selector-button {
    transition: none;
  }
}
.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
  background-color: #dde0e3;
}

.form-control-plaintext {
  display: block;
  width: 100%;
  padding: 0.75rem 0;
  margin-bottom: 0;
  line-height: 1.5;
  color: #212529;
  background-color: transparent;
  border: solid transparent;
  border-width: 1px 0;
}
.form-control-plaintext:focus {
  outline: 0;
}
.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
  padding-right: 0;
  padding-left: 0;
}

.form-control-sm {
  min-height: calc(1.5em + 0.5rem + 2px);
  padding: 0.25rem 0.5rem;
  font-size: 0.875rem;
  border-radius: 0.25rem;
}
.form-control-sm::file-selector-button {
  padding: 0.25rem 0.5rem;
  margin: -0.25rem -0.5rem;
  margin-inline-end: 0.5rem;
}

.form-control-lg {
  min-height: calc(1.5em + 1rem + 2px);
  padding: 0.5rem 1rem;
  font-size: 1.25rem;
  border-radius: 0.5rem;
}
.form-control-lg::file-selector-button {
  padding: 0.5rem 1rem;
  margin: -0.5rem -1rem;
  margin-inline-end: 1rem;
}

textarea.form-control {
  min-height: calc(1.5em + 1.5rem + 2px);
}
textarea.form-control-sm {
  min-height: calc(1.5em + 0.5rem + 2px);
}
textarea.form-control-lg {
  min-height: calc(1.5em + 1rem + 2px);
}

.form-control-color {
  width: 3rem;
  height: calc(1.5em + 1.5rem + 2px);
  padding: 0.75rem;
}
.form-control-color:not(:disabled):not([readonly]) {
  cursor: pointer;
}
.form-control-color::-moz-color-swatch {
  border: 0 !important;
  border-radius: 0.375rem;
}
.form-control-color::-webkit-color-swatch {
  border-radius: 0.375rem;
}
.form-control-color.form-control-sm {
  height: calc(1.5em + 0.5rem + 2px);
}
.form-control-color.form-control-lg {
  height: calc(1.5em + 1rem + 2px);
}

.form-select {
  display: block;
  width: 100%;
  padding: 0.75rem 2.25rem 0.75rem 0.75rem;
  -moz-padding-start: calc(0.75rem - 3px);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 400;
  line-height: 1.5;
  color: #212529;
  background-color: #fff;
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  background-size: 16px 12px;
  border: 1px solid var(--wp--preset--color--septenary);
  border-radius: 0.375rem;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
  appearance: none;
}
@media (prefers-reduced-motion: reduce) {
  .form-select {
    transition: none;
  }
}
.form-select:focus {
  border-color: #86b7fe;
  outline: 0;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-select[multiple], .form-select[size]:not([size="1"]) {
  padding-right: 0.75rem;
  background-image: none;
}
.form-select:disabled {
  background-color: #e9ecef;
}
.form-select:-moz-focusring {
  color: transparent;
  text-shadow: 0 0 0 #212529;
}

.form-select-sm {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
  padding-left: 0.5rem;
  font-size: 0.875rem;
  border-radius: 0.25rem;
}

.form-select-lg {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  padding-left: 1rem;
  font-size: 1.25rem;
  border-radius: 0.5rem;
}

.form-check {
  display: block;
  min-height: 1.5rem;
  padding-left: 1.5em;
  margin-bottom: 0.125rem;
}
.form-check .form-check-input {
  float: left;
  margin-left: -1.5em;
}

.form-check-reverse {
  padding-right: 1.5em;
  padding-left: 0;
  text-align: right;
}
.form-check-reverse .form-check-input {
  float: right;
  margin-right: -1.5em;
  margin-left: 0;
}

.form-check-input {
  width: 1em;
  height: 1em;
  margin-top: 0.25em;
  vertical-align: top;
  background-color: #fff;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  border: 1px solid rgba(0, 0, 0, 0.25);
  appearance: none;
  print-color-adjust: exact;
}
.form-check-input[type=checkbox] {
  border-radius: 0.25em;
}
.form-check-input[type=radio] {
  border-radius: 50%;
}
.form-check-input:active {
  filter: brightness(90%);
}
.form-check-input:focus {
  border-color: #86b7fe;
  outline: 0;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-check-input:checked {
  background-color: #0d6efd;
  border-color: #0d6efd;
}
.form-check-input:checked[type=checkbox] {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27m6 10 3 3 6-6%27/%3e%3c/svg%3e");
}
.form-check-input:checked[type=radio] {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%272%27 fill=%27%23fff%27/%3e%3c/svg%3e");
}
.form-check-input[type=checkbox]:indeterminate {
  background-color: #0d6efd;
  border-color: #0d6efd;
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10h8%27/%3e%3c/svg%3e");
}
.form-check-input:disabled {
  pointer-events: none;
  filter: none;
  opacity: 0.5;
}
.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {
  cursor: default;
  opacity: 0.5;
}

.form-switch {
  padding-left: 2.5em;
}
.form-switch .form-check-input {
  width: 2em;
  margin-left: -2.5em;
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%280, 0, 0, 0.25%29%27/%3e%3c/svg%3e");
  background-position: left center;
  border-radius: 2em;
  transition: background-position 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-switch .form-check-input {
    transition: none;
  }
}
.form-switch .form-check-input:focus {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%2386b7fe%27/%3e%3c/svg%3e");
}
.form-switch .form-check-input:checked {
  background-position: right center;
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23fff%27/%3e%3c/svg%3e");
}
.form-switch.form-check-reverse {
  padding-right: 2.5em;
  padding-left: 0;
}
.form-switch.form-check-reverse .form-check-input {
  margin-right: -2.5em;
  margin-left: 0;
}

.form-check-inline {
  display: inline-block;
  margin-right: 1rem;
}

.btn-check {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.btn-check[disabled] + .btn, .btn-check:disabled + .btn {
  pointer-events: none;
  filter: none;
  opacity: 0.65;
}

.form-range {
  width: 100%;
  height: 1.5rem;
  padding: 0;
  background-color: transparent;
  appearance: none;
}
.form-range:focus {
  outline: 0;
}
.form-range:focus::-webkit-slider-thumb {
  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-range:focus::-moz-range-thumb {
  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}
.form-range::-moz-focus-outer {
  border: 0;
}
.form-range::-webkit-slider-thumb {
  width: 1rem;
  height: 1rem;
  margin-top: -0.25rem;
  background-color: #0d6efd;
  border: 0;
  border-radius: 1rem;
  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
  appearance: none;
}
@media (prefers-reduced-motion: reduce) {
  .form-range::-webkit-slider-thumb {
    transition: none;
  }
}
.form-range::-webkit-slider-thumb:active {
  background-color: #b6d4fe;
}
.form-range::-webkit-slider-runnable-track {
  width: 100%;
  height: 0.5rem;
  color: transparent;
  cursor: pointer;
  background-color: #dee2e6;
  border-color: transparent;
  border-radius: 1rem;
}
.form-range::-moz-range-thumb {
  width: 1rem;
  height: 1rem;
  background-color: #0d6efd;
  border: 0;
  border-radius: 1rem;
  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
  appearance: none;
}
@media (prefers-reduced-motion: reduce) {
  .form-range::-moz-range-thumb {
    transition: none;
  }
}
.form-range::-moz-range-thumb:active {
  background-color: #b6d4fe;
}
.form-range::-moz-range-track {
  width: 100%;
  height: 0.5rem;
  color: transparent;
  cursor: pointer;
  background-color: #dee2e6;
  border-color: transparent;
  border-radius: 1rem;
}
.form-range:disabled {
  pointer-events: none;
}
.form-range:disabled::-webkit-slider-thumb {
  background-color: #adb5bd;
}
.form-range:disabled::-moz-range-thumb {
  background-color: #adb5bd;
}

.form-floating {
  position: relative;
}
.form-floating > .form-control,
.form-floating > .form-control-plaintext,
.form-floating > .form-select {
  height: calc(3.5rem + 2px);
  line-height: 1.25;
}
.form-floating > label {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  padding: 1rem 0.75rem;
  overflow: hidden;
  text-align: start;
  text-overflow: ellipsis;
  white-space: nowrap;
  pointer-events: none;
  border: 1px solid transparent;
  transform-origin: 0 0;
  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .form-floating > label {
    transition: none;
  }
}
.form-floating > .form-control,
.form-floating > .form-control-plaintext {
  padding: 1rem 0.75rem;
}
.form-floating > .form-control::placeholder,
.form-floating > .form-control-plaintext::placeholder {
  color: transparent;
}
.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),
.form-floating > .form-control-plaintext:focus,
.form-floating > .form-control-plaintext:not(:placeholder-shown) {
  padding-top: 1.625rem;
  padding-bottom: 0.625rem;
}
.form-floating > .form-control:-webkit-autofill,
.form-floating > .form-control-plaintext:-webkit-autofill {
  padding-top: 1.625rem;
  padding-bottom: 0.625rem;
}
.form-floating > .form-select {
  padding-top: 1.625rem;
  padding-bottom: 0.625rem;
}
.form-floating > .form-control:focus ~ label,
.form-floating > .form-control:not(:placeholder-shown) ~ label,
.form-floating > .form-control-plaintext ~ label,
.form-floating > .form-select ~ label {
  opacity: 0.65;
  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > .form-control:-webkit-autofill ~ label {
  opacity: 0.65;
  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > .form-control-plaintext ~ label {
  border-width: 1px 0;
}

.input-group {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  width: 100%;
}
.input-group > .form-control,
.input-group > .form-select,
.input-group > .form-floating {
  position: relative;
  flex: 1 1 auto;
  width: 1%;
  min-width: 0;
}
.input-group > .form-control:focus,
.input-group > .form-select:focus,
.input-group > .form-floating:focus-within {
  z-index: 5;
}
.input-group .btn {
  position: relative;
  z-index: 2;
}
.input-group .btn:focus {
  z-index: 5;
}

.input-group-text {
  display: flex;
  align-items: center;
  padding: 0.75rem 0.75rem;
  font-size: var(--wp--preset--font-size--small);
  font-weight: 400;
  line-height: 1.5;
  color: #212529;
  text-align: center;
  white-space: nowrap;
  background-color: #e9ecef;
  border: 1px solid var(--wp--preset--color--septenary);
  border-radius: 0.375rem;
}

.input-group-lg > .form-control,
.input-group-lg > .form-select,
.input-group-lg > .input-group-text,
.input-group-lg > .btn {
  padding: 0.5rem 1rem;
  font-size: 1.25rem;
  border-radius: 0.5rem;
}

.input-group-sm > .form-control,
.input-group-sm > .form-select,
.input-group-sm > .input-group-text,
.input-group-sm > .btn {
  padding: 0.25rem 0.5rem;
  font-size: 0.875rem;
  border-radius: 0.25rem;
}

.input-group-lg > .form-select,
.input-group-sm > .form-select {
  padding-right: 3rem;
}

.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),
.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,
.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),
.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,
.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
  margin-left: -1px;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.input-group > .form-floating:not(:first-child) > .form-control,
.input-group > .form-floating:not(:first-child) > .form-select {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

.valid-feedback {
  display: none;
  width: 100%;
  margin-top: 0.25rem;
  font-size: 0.875em;
  color: #198754;
}

.valid-tooltip {
  position: absolute;
  top: 100%;
  z-index: 5;
  display: none;
  max-width: 100%;
  padding: 0.25rem 0.5rem;
  margin-top: 0.1rem;
  font-size: 0.875rem;
  color: #fff;
  background-color: rgba(25, 135, 84, 0.9);
  border-radius: 0.375rem;
}

.was-validated :valid ~ .valid-feedback,
.was-validated :valid ~ .valid-tooltip,
.is-valid ~ .valid-feedback,
.is-valid ~ .valid-tooltip {
  display: block;
}

.was-validated .form-control:valid, .form-control.is-valid {
  border-color: #198754;
  padding-right: calc(1.5em + 1.5rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.375rem) center;
  background-size: calc(0.75em + 0.75rem) calc(0.75em + 0.75rem);
}
.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
  border-color: #198754;
  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
}

.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
  padding-right: calc(1.5em + 1.5rem);
  background-position: top calc(0.375em + 0.375rem) right calc(0.375em + 0.375rem);
}

.was-validated .form-select:valid, .form-select.is-valid {
  border-color: #198754;
}
.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] {
  padding-right: 4.125rem;
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e");
  background-position: right 0.75rem center, center right 2.25rem;
  background-size: 16px 12px, calc(0.75em + 0.75rem) calc(0.75em + 0.75rem);
}
.was-validated .form-select:valid:focus, .form-select.is-valid:focus {
  border-color: #198754;
  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
}

.was-validated .form-control-color:valid, .form-control-color.is-valid {
  width: calc(3rem + calc(1.5em + 1.5rem));
}

.was-validated .form-check-input:valid, .form-check-input.is-valid {
  border-color: #198754;
}
.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {
  background-color: #198754;
}
.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {
  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
}
.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
  color: #198754;
}

.form-check-inline .form-check-input ~ .valid-feedback {
  margin-left: 0.5em;
}

.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,
.was-validated .input-group > .form-select:not(:focus):valid,
.input-group > .form-select:not(:focus).is-valid,
.was-validated .input-group > .form-floating:not(:focus-within):valid,
.input-group > .form-floating:not(:focus-within).is-valid {
  z-index: 3;
}

.invalid-feedback {
  display: none;
  width: 100%;
  margin-top: 0.25rem;
  font-size: 0.875em;
  color: #dc3545;
}

.invalid-tooltip {
  position: absolute;
  top: 100%;
  z-index: 5;
  display: none;
  max-width: 100%;
  padding: 0.25rem 0.5rem;
  margin-top: 0.1rem;
  font-size: 0.875rem;
  color: #fff;
  background-color: rgba(220, 53, 69, 0.9);
  border-radius: 0.375rem;
}

.was-validated :invalid ~ .invalid-feedback,
.was-validated :invalid ~ .invalid-tooltip,
.is-invalid ~ .invalid-feedback,
.is-invalid ~ .invalid-tooltip {
  display: block;
}

.was-validated .form-control:invalid, .form-control.is-invalid {
  border-color: #dc3545;
  padding-right: calc(1.5em + 1.5rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.375rem) center;
  background-size: calc(0.75em + 0.75rem) calc(0.75em + 0.75rem);
}
.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
  border-color: #dc3545;
  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
}

.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
  padding-right: calc(1.5em + 1.5rem);
  background-position: top calc(0.375em + 0.375rem) right calc(0.375em + 0.375rem);
}

.was-validated .form-select:invalid, .form-select.is-invalid {
  border-color: #dc3545;
}
.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] {
  padding-right: 4.125rem;
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e");
  background-position: right 0.75rem center, center right 2.25rem;
  background-size: 16px 12px, calc(0.75em + 0.75rem) calc(0.75em + 0.75rem);
}
.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {
  border-color: #dc3545;
  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
}

.was-validated .form-control-color:invalid, .form-control-color.is-invalid {
  width: calc(3rem + calc(1.5em + 1.5rem));
}

.was-validated .form-check-input:invalid, .form-check-input.is-invalid {
  border-color: #dc3545;
}
.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {
  background-color: #dc3545;
}
.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {
  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
}
.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
  color: #dc3545;
}

.form-check-inline .form-check-input ~ .invalid-feedback {
  margin-left: 0.5em;
}

.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,
.was-validated .input-group > .form-select:not(:focus):invalid,
.input-group > .form-select:not(:focus).is-invalid,
.was-validated .input-group > .form-floating:not(:focus-within):invalid,
.input-group > .form-floating:not(:focus-within).is-invalid {
  z-index: 4;
}

.btn {
  --bs-btn-padding-x: 0.75rem;
  --bs-btn-padding-y: 0.375rem;
  --bs-btn-font-family: ;
  --bs-btn-font-size: 1rem;
  --bs-btn-font-weight: 400;
  --bs-btn-line-height: 1.5;
  --bs-btn-color: #212529;
  --bs-btn-bg: transparent;
  --bs-btn-border-width: 1px;
  --bs-btn-border-color: transparent;
  --bs-btn-border-radius: 0.375rem;
  --bs-btn-hover-border-color: transparent;
  --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
  --bs-btn-disabled-opacity: 0.65;
  --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);
  display: inline-block;
  padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
  font-family: var(--bs-btn-font-family);
  font-size: var(--bs-btn-font-size);
  font-weight: var(--bs-btn-font-weight);
  line-height: var(--bs-btn-line-height);
  color: var(--bs-btn-color);
  text-align: center;
  text-decoration: none;
  vertical-align: middle;
  cursor: pointer;
  user-select: none;
  border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
  border-radius: var(--bs-btn-border-radius);
  background-color: var(--bs-btn-bg);
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .btn {
    transition: none;
  }
}
.btn:hover {
  color: var(--bs-btn-hover-color);
  background-color: var(--bs-btn-hover-bg);
  border-color: var(--bs-btn-hover-border-color);
}
.btn-check + .btn:hover {
  color: var(--bs-btn-color);
  background-color: var(--bs-btn-bg);
  border-color: var(--bs-btn-border-color);
}
.btn:focus-visible {
  color: var(--bs-btn-hover-color);
  background-color: var(--bs-btn-hover-bg);
  border-color: var(--bs-btn-hover-border-color);
  outline: 0;
  box-shadow: var(--bs-btn-focus-box-shadow);
}
.btn-check:focus-visible + .btn {
  border-color: var(--bs-btn-hover-border-color);
  outline: 0;
  box-shadow: var(--bs-btn-focus-box-shadow);
}
.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {
  color: var(--bs-btn-active-color);
  background-color: var(--bs-btn-active-bg);
  border-color: var(--bs-btn-active-border-color);
}
.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {
  box-shadow: var(--bs-btn-focus-box-shadow);
}
.btn:disabled, .btn.disabled, fieldset:disabled .btn {
  color: var(--bs-btn-disabled-color);
  pointer-events: none;
  background-color: var(--bs-btn-disabled-bg);
  border-color: var(--bs-btn-disabled-border-color);
  opacity: var(--bs-btn-disabled-opacity);
}

.btn-primary {
  --bs-btn-color: #fff;
  --bs-btn-bg: #0d6efd;
  --bs-btn-border-color: #0d6efd;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #0b5ed7;
  --bs-btn-hover-border-color: #0a58ca;
  --bs-btn-focus-shadow-rgb: 49, 132, 253;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #0a58ca;
  --bs-btn-active-border-color: #0a53be;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: #0d6efd;
  --bs-btn-disabled-border-color: #0d6efd;
}

.btn-secondary {
  --bs-btn-color: #fff;
  --bs-btn-bg: #6c757d;
  --bs-btn-border-color: #6c757d;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #5c636a;
  --bs-btn-hover-border-color: #565e64;
  --bs-btn-focus-shadow-rgb: 130, 138, 145;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #565e64;
  --bs-btn-active-border-color: #51585e;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: #6c757d;
  --bs-btn-disabled-border-color: #6c757d;
}

.btn-success {
  --bs-btn-color: #fff;
  --bs-btn-bg: #198754;
  --bs-btn-border-color: #198754;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #157347;
  --bs-btn-hover-border-color: #146c43;
  --bs-btn-focus-shadow-rgb: 60, 153, 110;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #146c43;
  --bs-btn-active-border-color: #13653f;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: #198754;
  --bs-btn-disabled-border-color: #198754;
}

.btn-info {
  --bs-btn-color: #000;
  --bs-btn-bg: #0dcaf0;
  --bs-btn-border-color: #0dcaf0;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #31d2f2;
  --bs-btn-hover-border-color: #25cff2;
  --bs-btn-focus-shadow-rgb: 11, 172, 204;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #3dd5f3;
  --bs-btn-active-border-color: #25cff2;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #0dcaf0;
  --bs-btn-disabled-border-color: #0dcaf0;
}

.btn-warning {
  --bs-btn-color: #000;
  --bs-btn-bg: #ffc107;
  --bs-btn-border-color: #ffc107;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #ffca2c;
  --bs-btn-hover-border-color: #ffc720;
  --bs-btn-focus-shadow-rgb: 217, 164, 6;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #ffcd39;
  --bs-btn-active-border-color: #ffc720;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #ffc107;
  --bs-btn-disabled-border-color: #ffc107;
}

.btn-danger {
  --bs-btn-color: #fff;
  --bs-btn-bg: #dc3545;
  --bs-btn-border-color: #dc3545;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #bb2d3b;
  --bs-btn-hover-border-color: #b02a37;
  --bs-btn-focus-shadow-rgb: 225, 83, 97;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #b02a37;
  --bs-btn-active-border-color: #a52834;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: #dc3545;
  --bs-btn-disabled-border-color: #dc3545;
}

.btn-light {
  --bs-btn-color: #000;
  --bs-btn-bg: #f8f9fa;
  --bs-btn-border-color: #f8f9fa;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #d3d4d5;
  --bs-btn-hover-border-color: #c6c7c8;
  --bs-btn-focus-shadow-rgb: 211, 212, 213;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #c6c7c8;
  --bs-btn-active-border-color: #babbbc;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #000;
  --bs-btn-disabled-bg: #f8f9fa;
  --bs-btn-disabled-border-color: #f8f9fa;
}

.btn-dark {
  --bs-btn-color: #fff;
  --bs-btn-bg: #212529;
  --bs-btn-border-color: #212529;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #424649;
  --bs-btn-hover-border-color: #373b3e;
  --bs-btn-focus-shadow-rgb: 66, 70, 73;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #4d5154;
  --bs-btn-active-border-color: #373b3e;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: #212529;
  --bs-btn-disabled-border-color: #212529;
}

.btn-outline-primary {
  --bs-btn-color: #0d6efd;
  --bs-btn-border-color: #0d6efd;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #0d6efd;
  --bs-btn-hover-border-color: #0d6efd;
  --bs-btn-focus-shadow-rgb: 13, 110, 253;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #0d6efd;
  --bs-btn-active-border-color: #0d6efd;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #0d6efd;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #0d6efd;
  --bs-gradient: none;
}

.btn-outline-secondary {
  --bs-btn-color: #6c757d;
  --bs-btn-border-color: #6c757d;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #6c757d;
  --bs-btn-hover-border-color: #6c757d;
  --bs-btn-focus-shadow-rgb: 108, 117, 125;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #6c757d;
  --bs-btn-active-border-color: #6c757d;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #6c757d;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #6c757d;
  --bs-gradient: none;
}

.btn-outline-success {
  --bs-btn-color: #198754;
  --bs-btn-border-color: #198754;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #198754;
  --bs-btn-hover-border-color: #198754;
  --bs-btn-focus-shadow-rgb: 25, 135, 84;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #198754;
  --bs-btn-active-border-color: #198754;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #198754;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #198754;
  --bs-gradient: none;
}

.btn-outline-info {
  --bs-btn-color: #0dcaf0;
  --bs-btn-border-color: #0dcaf0;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #0dcaf0;
  --bs-btn-hover-border-color: #0dcaf0;
  --bs-btn-focus-shadow-rgb: 13, 202, 240;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #0dcaf0;
  --bs-btn-active-border-color: #0dcaf0;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #0dcaf0;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #0dcaf0;
  --bs-gradient: none;
}

.btn-outline-warning {
  --bs-btn-color: #ffc107;
  --bs-btn-border-color: #ffc107;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #ffc107;
  --bs-btn-hover-border-color: #ffc107;
  --bs-btn-focus-shadow-rgb: 255, 193, 7;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #ffc107;
  --bs-btn-active-border-color: #ffc107;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #ffc107;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #ffc107;
  --bs-gradient: none;
}

.btn-outline-danger {
  --bs-btn-color: #dc3545;
  --bs-btn-border-color: #dc3545;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #dc3545;
  --bs-btn-hover-border-color: #dc3545;
  --bs-btn-focus-shadow-rgb: 220, 53, 69;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #dc3545;
  --bs-btn-active-border-color: #dc3545;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #dc3545;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #dc3545;
  --bs-gradient: none;
}

.btn-outline-light {
  --bs-btn-color: #f8f9fa;
  --bs-btn-border-color: #f8f9fa;
  --bs-btn-hover-color: #000;
  --bs-btn-hover-bg: #f8f9fa;
  --bs-btn-hover-border-color: #f8f9fa;
  --bs-btn-focus-shadow-rgb: 248, 249, 250;
  --bs-btn-active-color: #000;
  --bs-btn-active-bg: #f8f9fa;
  --bs-btn-active-border-color: #f8f9fa;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #f8f9fa;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #f8f9fa;
  --bs-gradient: none;
}

.btn-outline-dark {
  --bs-btn-color: #212529;
  --bs-btn-border-color: #212529;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #212529;
  --bs-btn-hover-border-color: #212529;
  --bs-btn-focus-shadow-rgb: 33, 37, 41;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #212529;
  --bs-btn-active-border-color: #212529;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #212529;
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: #212529;
  --bs-gradient: none;
}

.btn-link, .main-navigation .mega-menu .mega-menu-back .btn {
  --bs-btn-font-weight: 400;
  --bs-btn-color: var(--bs-link-color);
  --bs-btn-bg: transparent;
  --bs-btn-border-color: transparent;
  --bs-btn-hover-color: var(--bs-link-hover-color);
  --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: var(--bs-link-hover-color);
  --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: #6c757d;
  --bs-btn-disabled-border-color: transparent;
  --bs-btn-box-shadow: none;
  --bs-btn-focus-shadow-rgb: 49, 132, 253;
  text-decoration: underline;
}
.btn-link:focus-visible, .main-navigation .mega-menu .mega-menu-back .btn:focus-visible {
  color: var(--bs-btn-color);
}
.btn-link:hover, .main-navigation .mega-menu .mega-menu-back .btn:hover {
  color: var(--bs-btn-hover-color);
}

.btn-lg, .btn-group-lg > .btn {
  --bs-btn-padding-y: 0.5rem;
  --bs-btn-padding-x: 1rem;
  --bs-btn-font-size: 1.25rem;
  --bs-btn-border-radius: 0.5rem;
}

.btn-sm, .btn-group-sm > .btn {
  --bs-btn-padding-y: 0.25rem;
  --bs-btn-padding-x: 0.5rem;
  --bs-btn-font-size: 0.875rem;
  --bs-btn-border-radius: 0.25rem;
}

.fade {
  transition: opacity 0.15s linear;
}
@media (prefers-reduced-motion: reduce) {
  .fade {
    transition: none;
  }
}
.fade:not(.show) {
  opacity: 0;
}

.collapse:not(.show) {
  display: none;
}

.collapsing {
  height: 0;
  overflow: hidden;
  transition: height 0.35s ease;
}
@media (prefers-reduced-motion: reduce) {
  .collapsing {
    transition: none;
  }
}
.collapsing.collapse-horizontal {
  width: 0;
  height: auto;
  transition: width 0.35s ease;
}
@media (prefers-reduced-motion: reduce) {
  .collapsing.collapse-horizontal {
    transition: none;
  }
}

.dropup,
.dropend,
.dropdown,
.dropstart,
.dropup-center,
.dropdown-center {
  position: relative;
}

.dropdown-toggle {
  white-space: nowrap;
}
.dropdown-toggle::after {
  display: inline-block;
  margin-left: 0.255em;
  vertical-align: 0.255em;
  content: "";
  border-top: 0.3em solid;
  border-right: 0.3em solid transparent;
  border-bottom: 0;
  border-left: 0.3em solid transparent;
}
.dropdown-toggle:empty::after {
  margin-left: 0;
}

.dropdown-menu {
  --bs-dropdown-zindex: 1000;
  --bs-dropdown-min-width: 10rem;
  --bs-dropdown-padding-x: 0;
  --bs-dropdown-padding-y: 0.5rem;
  --bs-dropdown-spacer: 0.125rem;
  --bs-dropdown-font-size: 1rem;
  --bs-dropdown-color: #212529;
  --bs-dropdown-bg: #fff;
  --bs-dropdown-border-color: var(--bs-border-color-translucent);
  --bs-dropdown-border-radius: 0.375rem;
  --bs-dropdown-border-width: 1px;
  --bs-dropdown-inner-border-radius: calc(0.375rem - 1px);
  --bs-dropdown-divider-bg: var(--bs-border-color-translucent);
  --bs-dropdown-divider-margin-y: 0.5rem;
  --bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  --bs-dropdown-link-color: #212529;
  --bs-dropdown-link-hover-color: #1e2125;
  --bs-dropdown-link-hover-bg: #e9ecef;
  --bs-dropdown-link-active-color: #fff;
  --bs-dropdown-link-active-bg: #0d6efd;
  --bs-dropdown-link-disabled-color: #adb5bd;
  --bs-dropdown-item-padding-x: 1rem;
  --bs-dropdown-item-padding-y: 0.25rem;
  --bs-dropdown-header-color: #6c757d;
  --bs-dropdown-header-padding-x: 1rem;
  --bs-dropdown-header-padding-y: 0.5rem;
  position: absolute;
  z-index: var(--bs-dropdown-zindex);
  display: none;
  min-width: var(--bs-dropdown-min-width);
  padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);
  margin: 0;
  font-size: var(--bs-dropdown-font-size);
  color: var(--bs-dropdown-color);
  text-align: left;
  list-style: none;
  background-color: var(--bs-dropdown-bg);
  background-clip: padding-box;
  border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);
  border-radius: var(--bs-dropdown-border-radius);
}
.dropdown-menu[data-bs-popper] {
  top: 100%;
  left: 0;
  margin-top: var(--bs-dropdown-spacer);
}

.dropdown-menu-start {
  --bs-position: start;
}
.dropdown-menu-start[data-bs-popper] {
  right: auto;
  left: 0;
}

.dropdown-menu-end {
  --bs-position: end;
}
.dropdown-menu-end[data-bs-popper] {
  right: 0;
  left: auto;
}

@media (min-width: 576px) {
  .dropdown-menu-sm-start {
    --bs-position: start;
  }
  .dropdown-menu-sm-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-sm-end {
    --bs-position: end;
  }
  .dropdown-menu-sm-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
@media (min-width: 768px) {
  .dropdown-menu-md-start {
    --bs-position: start;
  }
  .dropdown-menu-md-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-md-end {
    --bs-position: end;
  }
  .dropdown-menu-md-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
@media (min-width: 992px) {
  .dropdown-menu-lg-start {
    --bs-position: start;
  }
  .dropdown-menu-lg-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-lg-end {
    --bs-position: end;
  }
  .dropdown-menu-lg-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
@media (min-width: 1200px) {
  .dropdown-menu-xl-start {
    --bs-position: start;
  }
  .dropdown-menu-xl-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-xl-end {
    --bs-position: end;
  }
  .dropdown-menu-xl-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
@media (min-width: 1400px) {
  .dropdown-menu-xxl-start {
    --bs-position: start;
  }
  .dropdown-menu-xxl-start[data-bs-popper] {
    right: auto;
    left: 0;
  }
  .dropdown-menu-xxl-end {
    --bs-position: end;
  }
  .dropdown-menu-xxl-end[data-bs-popper] {
    right: 0;
    left: auto;
  }
}
.dropup .dropdown-menu[data-bs-popper] {
  top: auto;
  bottom: 100%;
  margin-top: 0;
  margin-bottom: var(--bs-dropdown-spacer);
}
.dropup .dropdown-toggle::after {
  display: inline-block;
  margin-left: 0.255em;
  vertical-align: 0.255em;
  content: "";
  border-top: 0;
  border-right: 0.3em solid transparent;
  border-bottom: 0.3em solid;
  border-left: 0.3em solid transparent;
}
.dropup .dropdown-toggle:empty::after {
  margin-left: 0;
}

.dropend .dropdown-menu[data-bs-popper] {
  top: 0;
  right: auto;
  left: 100%;
  margin-top: 0;
  margin-left: var(--bs-dropdown-spacer);
}
.dropend .dropdown-toggle::after {
  display: inline-block;
  margin-left: 0.255em;
  vertical-align: 0.255em;
  content: "";
  border-top: 0.3em solid transparent;
  border-right: 0;
  border-bottom: 0.3em solid transparent;
  border-left: 0.3em solid;
}
.dropend .dropdown-toggle:empty::after {
  margin-left: 0;
}
.dropend .dropdown-toggle::after {
  vertical-align: 0;
}

.dropstart .dropdown-menu[data-bs-popper] {
  top: 0;
  right: 100%;
  left: auto;
  margin-top: 0;
  margin-right: var(--bs-dropdown-spacer);
}
.dropstart .dropdown-toggle::after {
  display: inline-block;
  margin-left: 0.255em;
  vertical-align: 0.255em;
  content: "";
}
.dropstart .dropdown-toggle::after {
  display: none;
}
.dropstart .dropdown-toggle::before {
  display: inline-block;
  margin-right: 0.255em;
  vertical-align: 0.255em;
  content: "";
  border-top: 0.3em solid transparent;
  border-right: 0.3em solid;
  border-bottom: 0.3em solid transparent;
}
.dropstart .dropdown-toggle:empty::after {
  margin-left: 0;
}
.dropstart .dropdown-toggle::before {
  vertical-align: 0;
}

.dropdown-divider {
  height: 0;
  margin: var(--bs-dropdown-divider-margin-y) 0;
  overflow: hidden;
  border-top: 1px solid var(--bs-dropdown-divider-bg);
  opacity: 1;
}

.dropdown-item {
  display: block;
  width: 100%;
  padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
  clear: both;
  font-weight: 400;
  color: var(--bs-dropdown-link-color);
  text-align: inherit;
  text-decoration: none;
  white-space: nowrap;
  background-color: transparent;
  border: 0;
}
.dropdown-item:hover, .dropdown-item:focus {
  color: var(--bs-dropdown-link-hover-color);
  background-color: var(--bs-dropdown-link-hover-bg);
}
.dropdown-item.active, .dropdown-item:active {
  color: var(--bs-dropdown-link-active-color);
  text-decoration: none;
  background-color: var(--bs-dropdown-link-active-bg);
}
.dropdown-item.disabled, .dropdown-item:disabled {
  color: var(--bs-dropdown-link-disabled-color);
  pointer-events: none;
  background-color: transparent;
}

.dropdown-menu.show {
  display: block;
}

.dropdown-header {
  display: block;
  padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);
  margin-bottom: 0;
  font-size: 0.875rem;
  color: var(--bs-dropdown-header-color);
  white-space: nowrap;
}

.dropdown-item-text {
  display: block;
  padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
  color: var(--bs-dropdown-link-color);
}

.dropdown-menu-dark {
  --bs-dropdown-color: #dee2e6;
  --bs-dropdown-bg: #343a40;
  --bs-dropdown-border-color: var(--bs-border-color-translucent);
  --bs-dropdown-box-shadow: ;
  --bs-dropdown-link-color: #dee2e6;
  --bs-dropdown-link-hover-color: #fff;
  --bs-dropdown-divider-bg: var(--bs-border-color-translucent);
  --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);
  --bs-dropdown-link-active-color: #fff;
  --bs-dropdown-link-active-bg: #0d6efd;
  --bs-dropdown-link-disabled-color: #adb5bd;
  --bs-dropdown-header-color: #adb5bd;
}

.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-flex;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  flex: 1 1 auto;
}
.btn-group > .btn-check:checked + .btn,
.btn-group > .btn-check:focus + .btn,
.btn-group > .btn:hover,
.btn-group > .btn:focus,
.btn-group > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn-check:checked + .btn,
.btn-group-vertical > .btn-check:focus + .btn,
.btn-group-vertical > .btn:hover,
.btn-group-vertical > .btn:focus,
.btn-group-vertical > .btn:active,
.btn-group-vertical > .btn.active {
  z-index: 1;
}

.btn-toolbar {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
}
.btn-toolbar .input-group {
  width: auto;
}

.btn-group {
  border-radius: 0.375rem;
}
.btn-group > :not(.btn-check:first-child) + .btn,
.btn-group > .btn-group:not(:first-child) {
  margin-left: -1px;
}
.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
.btn-group > .btn.dropdown-toggle-split:first-child,
.btn-group > .btn-group:not(:last-child) > .btn {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.btn-group > .btn:nth-child(n+3),
.btn-group > :not(.btn-check) + .btn,
.btn-group > .btn-group:not(:first-child) > .btn {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

.dropdown-toggle-split {
  padding-right: 0.5625rem;
  padding-left: 0.5625rem;
}
.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {
  margin-left: 0;
}
.dropstart .dropdown-toggle-split::before {
  margin-right: 0;
}

.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
  padding-right: 0.375rem;
  padding-left: 0.375rem;
}

.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
  padding-right: 0.75rem;
  padding-left: 0.75rem;
}

.btn-group-vertical {
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group {
  width: 100%;
}
.btn-group-vertical > .btn:not(:first-child),
.btn-group-vertical > .btn-group:not(:first-child) {
  margin-top: -1px;
}
.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
.btn-group-vertical > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn ~ .btn,
.btn-group-vertical > .btn-group:not(:first-child) > .btn {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}

.nav {
  --bs-nav-link-padding-x: 1rem;
  --bs-nav-link-padding-y: 0.5rem;
  --bs-nav-link-font-weight: ;
  --bs-nav-link-color: var(--bs-link-color);
  --bs-nav-link-hover-color: var(--bs-link-hover-color);
  --bs-nav-link-disabled-color: #6c757d;
  display: flex;
  flex-wrap: wrap;
  padding-left: 0;
  margin-bottom: 0;
  list-style: none;
}

.nav-link {
  display: block;
  padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
  font-size: var(--bs-nav-link-font-size);
  font-weight: var(--bs-nav-link-font-weight);
  color: var(--bs-nav-link-color);
  text-decoration: none;
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .nav-link {
    transition: none;
  }
}
.nav-link:hover, .nav-link:focus {
  color: var(--bs-nav-link-hover-color);
}
.nav-link.disabled {
  color: var(--bs-nav-link-disabled-color);
  pointer-events: none;
  cursor: default;
}

.nav-tabs {
  --bs-nav-tabs-border-width: 1px;
  --bs-nav-tabs-border-color: #dee2e6;
  --bs-nav-tabs-border-radius: 0.375rem;
  --bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;
  --bs-nav-tabs-link-active-color: #495057;
  --bs-nav-tabs-link-active-bg: #fff;
  --bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;
  border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);
}
.nav-tabs .nav-link {
  margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));
  background: none;
  border: var(--bs-nav-tabs-border-width) solid transparent;
  border-top-left-radius: var(--bs-nav-tabs-border-radius);
  border-top-right-radius: var(--bs-nav-tabs-border-radius);
}
.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
  isolation: isolate;
  border-color: var(--bs-nav-tabs-link-hover-border-color);
}
.nav-tabs .nav-link.disabled, .nav-tabs .nav-link:disabled {
  color: var(--bs-nav-link-disabled-color);
  background-color: transparent;
  border-color: transparent;
}
.nav-tabs .nav-link.active,
.nav-tabs .nav-item.show .nav-link {
  color: var(--bs-nav-tabs-link-active-color);
  background-color: var(--bs-nav-tabs-link-active-bg);
  border-color: var(--bs-nav-tabs-link-active-border-color);
}
.nav-tabs .dropdown-menu {
  margin-top: calc(-1 * var(--bs-nav-tabs-border-width));
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}

.nav-pills {
  --bs-nav-pills-border-radius: 0.375rem;
  --bs-nav-pills-link-active-color: #fff;
  --bs-nav-pills-link-active-bg: #0d6efd;
}
.nav-pills .nav-link {
  background: none;
  border: 0;
  border-radius: var(--bs-nav-pills-border-radius);
}
.nav-pills .nav-link:disabled {
  color: var(--bs-nav-link-disabled-color);
  background-color: transparent;
  border-color: transparent;
}
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
  color: var(--bs-nav-pills-link-active-color);
  background-color: var(--bs-nav-pills-link-active-bg);
}

.nav-fill > .nav-link,
.nav-fill .nav-item {
  flex: 1 1 auto;
  text-align: center;
}

.nav-justified > .nav-link,
.nav-justified .nav-item {
  flex-basis: 0;
  flex-grow: 1;
  text-align: center;
}

.nav-fill .nav-item .nav-link,
.nav-justified .nav-item .nav-link {
  width: 100%;
}

.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}

.navbar {
  --bs-navbar-padding-x: 0;
  --bs-navbar-padding-y: 0.5rem;
  --bs-navbar-color: rgba(0, 0, 0, 0.55);
  --bs-navbar-hover-color: rgba(0, 0, 0, 0.7);
  --bs-navbar-disabled-color: rgba(0, 0, 0, 0.3);
  --bs-navbar-active-color: rgba(0, 0, 0, 0.9);
  --bs-navbar-brand-padding-y: 0.3125rem;
  --bs-navbar-brand-margin-end: 1rem;
  --bs-navbar-brand-font-size: 1.25rem;
  --bs-navbar-brand-color: rgba(0, 0, 0, 0.9);
  --bs-navbar-brand-hover-color: rgba(0, 0, 0, 0.9);
  --bs-navbar-nav-link-padding-x: 0.5rem;
  --bs-navbar-toggler-padding-y: 0.25rem;
  --bs-navbar-toggler-padding-x: 0.75rem;
  --bs-navbar-toggler-font-size: 1.25rem;
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%280, 0, 0, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e");
  --bs-navbar-toggler-border-color: rgba(0, 0, 0, 0.1);
  --bs-navbar-toggler-border-radius: 0.375rem;
  --bs-navbar-toggler-focus-width: 0.25rem;
  --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);
}
.navbar > .container,
.navbar > .container-fluid,
.navbar > .container-sm,
.navbar > .container-md,
.navbar > .container-xl,
.navbar > .container-xxl {
  display: flex;
  flex-wrap: inherit;
  align-items: center;
  justify-content: space-between;
}
.navbar-brand {
  padding-top: var(--bs-navbar-brand-padding-y);
  padding-bottom: var(--bs-navbar-brand-padding-y);
  margin-right: var(--bs-navbar-brand-margin-end);
  font-size: var(--bs-navbar-brand-font-size);
  color: var(--bs-navbar-brand-color);
  text-decoration: none;
  white-space: nowrap;
}
.navbar-brand:hover, .navbar-brand:focus {
  color: var(--bs-navbar-brand-hover-color);
}

.navbar-nav {
  --bs-nav-link-padding-x: 0;
  --bs-nav-link-padding-y: 0.5rem;
  --bs-nav-link-font-weight: ;
  --bs-nav-link-color: var(--bs-navbar-color);
  --bs-nav-link-hover-color: var(--bs-navbar-hover-color);
  --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);
  display: flex;
  flex-direction: column;
  padding-left: 0;
  margin-bottom: 0;
  list-style: none;
}
.navbar-nav .show > .nav-link,
.navbar-nav .nav-link.active {
  color: var(--bs-navbar-active-color);
}
.navbar-nav .dropdown-menu {
  position: static;
}

.navbar-text {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  color: var(--bs-navbar-color);
}
.navbar-text a,
.navbar-text a:hover,
.navbar-text a:focus {
  color: var(--bs-navbar-active-color);
}

.navbar-collapse {
  flex-basis: 100%;
  flex-grow: 1;
  align-items: center;
}

.navbar-toggler {
  padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);
  font-size: var(--bs-navbar-toggler-font-size);
  line-height: 1;
  color: var(--bs-navbar-color);
  background-color: transparent;
  border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);
  border-radius: var(--bs-navbar-toggler-border-radius);
  transition: var(--bs-navbar-toggler-transition);
}
@media (prefers-reduced-motion: reduce) {
  .navbar-toggler {
    transition: none;
  }
}
.navbar-toggler:hover {
  text-decoration: none;
}
.navbar-toggler:focus {
  text-decoration: none;
  outline: 0;
  box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);
}

.navbar-toggler-icon {
  display: inline-block;
  width: 1.5em;
  height: 1.5em;
  vertical-align: middle;
  background-image: var(--bs-navbar-toggler-icon-bg);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 100%;
}

.navbar-nav-scroll {
  max-height: var(--bs-scroll-height, 75vh);
  overflow-y: auto;
}

@media (min-width: 576px) {
  .navbar-expand-sm {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-sm .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-sm .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-sm .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-sm .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-sm .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-sm .navbar-toggler {
    display: none;
  }
  .navbar-expand-sm .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-sm .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-sm .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
@media (min-width: 768px) {
  .navbar-expand-md {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-md .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-md .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-md .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-md .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-md .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-md .navbar-toggler {
    display: none;
  }
  .navbar-expand-md .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-md .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-md .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
@media (min-width: 992px) {
  .navbar-expand-lg {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-lg .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-lg .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-lg .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-lg .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-lg .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-lg .navbar-toggler {
    display: none;
  }
  .navbar-expand-lg .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-lg .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-lg .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
@media (min-width: 1200px) {
  .navbar-expand-xl {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-xl .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-xl .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-xl .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-xl .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-xl .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-xl .navbar-toggler {
    display: none;
  }
  .navbar-expand-xl .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-xl .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-xl .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
@media (min-width: 1400px) {
  .navbar-expand-xxl {
    flex-wrap: nowrap;
    justify-content: flex-start;
  }
  .navbar-expand-xxl .navbar-nav {
    flex-direction: row;
  }
  .navbar-expand-xxl .navbar-nav .dropdown-menu {
    position: absolute;
  }
  .navbar-expand-xxl .navbar-nav .nav-link {
    padding-right: var(--bs-navbar-nav-link-padding-x);
    padding-left: var(--bs-navbar-nav-link-padding-x);
  }
  .navbar-expand-xxl .navbar-nav-scroll {
    overflow: visible;
  }
  .navbar-expand-xxl .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
  .navbar-expand-xxl .navbar-toggler {
    display: none;
  }
  .navbar-expand-xxl .offcanvas {
    position: static;
    z-index: auto;
    flex-grow: 1;
    width: auto !important;
    height: auto !important;
    visibility: visible !important;
    background-color: transparent !important;
    border: 0 !important;
    transform: none !important;
    transition: none;
  }
  .navbar-expand-xxl .offcanvas .offcanvas-header {
    display: none;
  }
  .navbar-expand-xxl .offcanvas .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
  }
}
.navbar-expand {
  flex-wrap: nowrap;
  justify-content: flex-start;
}
.navbar-expand .navbar-nav {
  flex-direction: row;
}
.navbar-expand .navbar-nav .dropdown-menu {
  position: absolute;
}
.navbar-expand .navbar-nav .nav-link {
  padding-right: var(--bs-navbar-nav-link-padding-x);
  padding-left: var(--bs-navbar-nav-link-padding-x);
}
.navbar-expand .navbar-nav-scroll {
  overflow: visible;
}
.navbar-expand .navbar-collapse {
  display: flex !important;
  flex-basis: auto;
}
.navbar-expand .navbar-toggler {
  display: none;
}
.navbar-expand .offcanvas {
  position: static;
  z-index: auto;
  flex-grow: 1;
  width: auto !important;
  height: auto !important;
  visibility: visible !important;
  background-color: transparent !important;
  border: 0 !important;
  transform: none !important;
  transition: none;
}
.navbar-expand .offcanvas .offcanvas-header {
  display: none;
}
.navbar-expand .offcanvas .offcanvas-body {
  display: flex;
  flex-grow: 0;
  padding: 0;
  overflow-y: visible;
}

.navbar-dark {
  --bs-navbar-color: rgba(255, 255, 255, 0.55);
  --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);
  --bs-navbar-active-color: #fff;
  --bs-navbar-brand-color: #fff;
  --bs-navbar-brand-hover-color: #fff;
  --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e");
}

.card {
  --bs-card-spacer-y: 1rem;
  --bs-card-spacer-x: 1rem;
  --bs-card-title-spacer-y: 0.5rem;
  --bs-card-border-width: 1px;
  --bs-card-border-color: var(--bs-border-color-translucent);
  --bs-card-border-radius: 0.375rem;
  --bs-card-box-shadow: ;
  --bs-card-inner-border-radius: calc(0.375rem - 1px);
  --bs-card-cap-padding-y: 0.5rem;
  --bs-card-cap-padding-x: 1rem;
  --bs-card-cap-bg: rgba(0, 0, 0, 0.03);
  --bs-card-cap-color: ;
  --bs-card-height: ;
  --bs-card-color: ;
  --bs-card-bg: #fff;
  --bs-card-img-overlay-padding: 1rem;
  --bs-card-group-margin: 0.75rem;
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  height: var(--bs-card-height);
  word-wrap: break-word;
  background-color: var(--bs-card-bg);
  background-clip: border-box;
  border: var(--bs-card-border-width) solid var(--bs-card-border-color);
  border-radius: var(--bs-card-border-radius);
}
.card > hr {
  margin-right: 0;
  margin-left: 0;
}
.card > .list-group {
  border-top: inherit;
  border-bottom: inherit;
}
.card > .list-group:first-child {
  border-top-width: 0;
  border-top-left-radius: var(--bs-card-inner-border-radius);
  border-top-right-radius: var(--bs-card-inner-border-radius);
}
.card > .list-group:last-child {
  border-bottom-width: 0;
  border-bottom-right-radius: var(--bs-card-inner-border-radius);
  border-bottom-left-radius: var(--bs-card-inner-border-radius);
}
.card > .card-header + .list-group,
.card > .list-group + .card-footer {
  border-top: 0;
}

.card-body {
  flex: 1 1 auto;
  padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);
  color: var(--bs-card-color);
}

.card-title {
  margin-bottom: var(--bs-card-title-spacer-y);
}

.card-subtitle {
  margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));
  margin-bottom: 0;
}

.card-text:last-child {
  margin-bottom: 0;
}

.card-link + .card-link {
  margin-left: var(--bs-card-spacer-x);
}

.card-header {
  padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
  margin-bottom: 0;
  color: var(--bs-card-cap-color);
  background-color: var(--bs-card-cap-bg);
  border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);
}
.card-header:first-child {
  border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;
}

.card-footer {
  padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
  color: var(--bs-card-cap-color);
  background-color: var(--bs-card-cap-bg);
  border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);
}
.card-footer:last-child {
  border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);
}

.card-header-tabs {
  margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
  margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));
  margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
  border-bottom: 0;
}
.card-header-tabs .nav-link.active {
  background-color: var(--bs-card-bg);
  border-bottom-color: var(--bs-card-bg);
}

.card-header-pills {
  margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
  margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
}

.card-img-overlay {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  padding: var(--bs-card-img-overlay-padding);
  border-radius: var(--bs-card-inner-border-radius);
}

.card-img,
.card-img-top,
.card-img-bottom {
  width: 100%;
}

.card-img,
.card-img-top {
  border-top-left-radius: var(--bs-card-inner-border-radius);
  border-top-right-radius: var(--bs-card-inner-border-radius);
}

.card-img,
.card-img-bottom {
  border-bottom-right-radius: var(--bs-card-inner-border-radius);
  border-bottom-left-radius: var(--bs-card-inner-border-radius);
}

.card-group > .card {
  margin-bottom: var(--bs-card-group-margin);
}
@media (min-width: 576px) {
  .card-group {
    display: flex;
    flex-flow: row wrap;
  }
  .card-group > .card {
    flex: 1 0 0%;
    margin-bottom: 0;
  }
  .card-group > .card + .card {
    margin-left: 0;
    border-left: 0;
  }
  .card-group > .card:not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
  }
  .card-group > .card:not(:last-child) .card-img-top,
  .card-group > .card:not(:last-child) .card-header {
    border-top-right-radius: 0;
  }
  .card-group > .card:not(:last-child) .card-img-bottom,
  .card-group > .card:not(:last-child) .card-footer {
    border-bottom-right-radius: 0;
  }
  .card-group > .card:not(:first-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
  }
  .card-group > .card:not(:first-child) .card-img-top,
  .card-group > .card:not(:first-child) .card-header {
    border-top-left-radius: 0;
  }
  .card-group > .card:not(:first-child) .card-img-bottom,
  .card-group > .card:not(:first-child) .card-footer {
    border-bottom-left-radius: 0;
  }
}

.accordion {
  --bs-accordion-color: #212529;
  --bs-accordion-bg: #fff;
  --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;
  --bs-accordion-border-color: var(--bs-border-color);
  --bs-accordion-border-width: 1px;
  --bs-accordion-border-radius: 0.375rem;
  --bs-accordion-inner-border-radius: calc(0.375rem - 1px);
  --bs-accordion-btn-padding-x: 1.25rem;
  --bs-accordion-btn-padding-y: 1rem;
  --bs-accordion-btn-color: #212529;
  --bs-accordion-btn-bg: var(--bs-accordion-bg);
  --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23212529%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e");
  --bs-accordion-btn-icon-width: 1.25rem;
  --bs-accordion-btn-icon-transform: rotate(-180deg);
  --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;
  --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%230c63e4%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e");
  --bs-accordion-btn-focus-border-color: #86b7fe;
  --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
  --bs-accordion-body-padding-x: 1.25rem;
  --bs-accordion-body-padding-y: 1rem;
  --bs-accordion-active-color: #0c63e4;
  --bs-accordion-active-bg: #e7f1ff;
}

.accordion-button {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);
  font-size: 1rem;
  color: var(--bs-accordion-btn-color);
  text-align: left;
  background-color: var(--bs-accordion-btn-bg);
  border: 0;
  border-radius: 0;
  overflow-anchor: none;
  transition: var(--bs-accordion-transition);
}
@media (prefers-reduced-motion: reduce) {
  .accordion-button {
    transition: none;
  }
}
.accordion-button:not(.collapsed) {
  color: var(--bs-accordion-active-color);
  background-color: var(--bs-accordion-active-bg);
  box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);
}
.accordion-button:not(.collapsed)::after {
  background-image: var(--bs-accordion-btn-active-icon);
  transform: var(--bs-accordion-btn-icon-transform);
}
.accordion-button::after {
  flex-shrink: 0;
  width: var(--bs-accordion-btn-icon-width);
  height: var(--bs-accordion-btn-icon-width);
  margin-left: auto;
  content: "";
  background-image: var(--bs-accordion-btn-icon);
  background-repeat: no-repeat;
  background-size: var(--bs-accordion-btn-icon-width);
  transition: var(--bs-accordion-btn-icon-transition);
}
@media (prefers-reduced-motion: reduce) {
  .accordion-button::after {
    transition: none;
  }
}
.accordion-button:hover {
  z-index: 2;
}
.accordion-button:focus {
  z-index: 3;
  border-color: var(--bs-accordion-btn-focus-border-color);
  outline: 0;
  box-shadow: var(--bs-accordion-btn-focus-box-shadow);
}

.accordion-header {
  margin-bottom: 0;
}

.accordion-item {
  color: var(--bs-accordion-color);
  background-color: var(--bs-accordion-bg);
  border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);
}
.accordion-item:first-of-type {
  border-top-left-radius: var(--bs-accordion-border-radius);
  border-top-right-radius: var(--bs-accordion-border-radius);
}
.accordion-item:first-of-type .accordion-button {
  border-top-left-radius: var(--bs-accordion-inner-border-radius);
  border-top-right-radius: var(--bs-accordion-inner-border-radius);
}
.accordion-item:not(:first-of-type) {
  border-top: 0;
}
.accordion-item:last-of-type {
  border-bottom-right-radius: var(--bs-accordion-border-radius);
  border-bottom-left-radius: var(--bs-accordion-border-radius);
}
.accordion-item:last-of-type .accordion-button.collapsed {
  border-bottom-right-radius: var(--bs-accordion-inner-border-radius);
  border-bottom-left-radius: var(--bs-accordion-inner-border-radius);
}
.accordion-item:last-of-type .accordion-collapse {
  border-bottom-right-radius: var(--bs-accordion-border-radius);
  border-bottom-left-radius: var(--bs-accordion-border-radius);
}

.accordion-body {
  padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);
}

.accordion-flush .accordion-collapse {
  border-width: 0;
}
.accordion-flush .accordion-item {
  border-right: 0;
  border-left: 0;
  border-radius: 0;
}
.accordion-flush .accordion-item:first-child {
  border-top: 0;
}
.accordion-flush .accordion-item:last-child {
  border-bottom: 0;
}
.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed {
  border-radius: 0;
}

.breadcrumb {
  --bs-breadcrumb-padding-x: 0;
  --bs-breadcrumb-padding-y: 0;
  --bs-breadcrumb-margin-bottom: 1rem;
  --bs-breadcrumb-bg: ;
  --bs-breadcrumb-border-radius: ;
  --bs-breadcrumb-divider-color: #6c757d;
  --bs-breadcrumb-item-padding-x: 0.5rem;
  --bs-breadcrumb-item-active-color: #6c757d;
  display: flex;
  flex-wrap: wrap;
  padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);
  margin-bottom: var(--bs-breadcrumb-margin-bottom);
  font-size: var(--bs-breadcrumb-font-size);
  list-style: none;
  background-color: var(--bs-breadcrumb-bg);
  border-radius: var(--bs-breadcrumb-border-radius);
}

.breadcrumb-item + .breadcrumb-item {
  padding-left: var(--bs-breadcrumb-item-padding-x);
}
.breadcrumb-item + .breadcrumb-item::before {
  float: left;
  padding-right: var(--bs-breadcrumb-item-padding-x);
  color: var(--bs-breadcrumb-divider-color);
  content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */;
}
.breadcrumb-item.active {
  color: var(--bs-breadcrumb-item-active-color);
}

.pagination {
  --bs-pagination-padding-x: 0.75rem;
  --bs-pagination-padding-y: 0.375rem;
  --bs-pagination-font-size: 1rem;
  --bs-pagination-color: var(--bs-link-color);
  --bs-pagination-bg: #fff;
  --bs-pagination-border-width: 1px;
  --bs-pagination-border-color: #dee2e6;
  --bs-pagination-border-radius: 0.375rem;
  --bs-pagination-hover-color: var(--bs-link-hover-color);
  --bs-pagination-hover-bg: #e9ecef;
  --bs-pagination-hover-border-color: #dee2e6;
  --bs-pagination-focus-color: var(--bs-link-hover-color);
  --bs-pagination-focus-bg: #e9ecef;
  --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
  --bs-pagination-active-color: #fff;
  --bs-pagination-active-bg: #0d6efd;
  --bs-pagination-active-border-color: #0d6efd;
  --bs-pagination-disabled-color: #6c757d;
  --bs-pagination-disabled-bg: #fff;
  --bs-pagination-disabled-border-color: #dee2e6;
  display: flex;
  padding-left: 0;
  list-style: none;
}

.page-link {
  position: relative;
  display: block;
  padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);
  font-size: var(--bs-pagination-font-size);
  color: var(--bs-pagination-color);
  text-decoration: none;
  background-color: var(--bs-pagination-bg);
  border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .page-link {
    transition: none;
  }
}
.page-link:hover {
  z-index: 2;
  color: var(--bs-pagination-hover-color);
  background-color: var(--bs-pagination-hover-bg);
  border-color: var(--bs-pagination-hover-border-color);
}
.page-link:focus {
  z-index: 3;
  color: var(--bs-pagination-focus-color);
  background-color: var(--bs-pagination-focus-bg);
  outline: 0;
  box-shadow: var(--bs-pagination-focus-box-shadow);
}
.page-link.active, .active > .page-link {
  z-index: 3;
  color: var(--bs-pagination-active-color);
  background-color: var(--bs-pagination-active-bg);
  border-color: var(--bs-pagination-active-border-color);
}
.page-link.disabled, .disabled > .page-link {
  color: var(--bs-pagination-disabled-color);
  pointer-events: none;
  background-color: var(--bs-pagination-disabled-bg);
  border-color: var(--bs-pagination-disabled-border-color);
}

.page-item:not(:first-child) .page-link {
  margin-left: -1px;
}
.page-item:first-child .page-link {
  border-top-left-radius: var(--bs-pagination-border-radius);
  border-bottom-left-radius: var(--bs-pagination-border-radius);
}
.page-item:last-child .page-link {
  border-top-right-radius: var(--bs-pagination-border-radius);
  border-bottom-right-radius: var(--bs-pagination-border-radius);
}

.pagination-lg {
  --bs-pagination-padding-x: 1.5rem;
  --bs-pagination-padding-y: 0.75rem;
  --bs-pagination-font-size: 1.25rem;
  --bs-pagination-border-radius: 0.5rem;
}

.pagination-sm {
  --bs-pagination-padding-x: 0.5rem;
  --bs-pagination-padding-y: 0.25rem;
  --bs-pagination-font-size: 0.875rem;
  --bs-pagination-border-radius: 0.25rem;
}

.badge {
  --bs-badge-padding-x: 0.65em;
  --bs-badge-padding-y: 0.35em;
  --bs-badge-font-size: 0.75em;
  --bs-badge-font-weight: 700;
  --bs-badge-color: #fff;
  --bs-badge-border-radius: 0.375rem;
  display: inline-block;
  padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
  font-size: var(--bs-badge-font-size);
  font-weight: var(--bs-badge-font-weight);
  line-height: 1;
  color: var(--bs-badge-color);
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: var(--bs-badge-border-radius);
}
.badge:empty {
  display: none;
}

.btn .badge {
  position: relative;
  top: -1px;
}

.alert {
  --bs-alert-bg: transparent;
  --bs-alert-padding-x: 1rem;
  --bs-alert-padding-y: 1rem;
  --bs-alert-margin-bottom: 1rem;
  --bs-alert-color: inherit;
  --bs-alert-border-color: transparent;
  --bs-alert-border: 1px solid var(--bs-alert-border-color);
  --bs-alert-border-radius: 0.375rem;
  position: relative;
  padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
  margin-bottom: var(--bs-alert-margin-bottom);
  color: var(--bs-alert-color);
  background-color: var(--bs-alert-bg);
  border: var(--bs-alert-border);
  border-radius: var(--bs-alert-border-radius);
}

.alert-heading {
  color: inherit;
}

.alert-link {
  font-weight: 700;
}

.alert-dismissible {
  padding-right: 3rem;
}
.alert-dismissible .btn-close {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  padding: 1.25rem 1rem;
}

.alert-primary {
  --bs-alert-color: #084298;
  --bs-alert-bg: #cfe2ff;
  --bs-alert-border-color: #b6d4fe;
}
.alert-primary .alert-link {
  color: #06357a;
}

.alert-secondary {
  --bs-alert-color: #41464b;
  --bs-alert-bg: #e2e3e5;
  --bs-alert-border-color: #d3d6d8;
}
.alert-secondary .alert-link {
  color: #34383c;
}

.alert-success {
  --bs-alert-color: #0f5132;
  --bs-alert-bg: #d1e7dd;
  --bs-alert-border-color: #badbcc;
}
.alert-success .alert-link {
  color: #0c4128;
}

.alert-info {
  --bs-alert-color: #055160;
  --bs-alert-bg: #cff4fc;
  --bs-alert-border-color: #b6effb;
}
.alert-info .alert-link {
  color: #04414d;
}

.alert-warning {
  --bs-alert-color: #664d03;
  --bs-alert-bg: #fff3cd;
  --bs-alert-border-color: #ffecb5;
}
.alert-warning .alert-link {
  color: #523e02;
}

.alert-danger {
  --bs-alert-color: #842029;
  --bs-alert-bg: #f8d7da;
  --bs-alert-border-color: #f5c2c7;
}
.alert-danger .alert-link {
  color: #6a1a21;
}

.alert-light {
  --bs-alert-color: #636464;
  --bs-alert-bg: #fefefe;
  --bs-alert-border-color: #fdfdfe;
}
.alert-light .alert-link {
  color: #4f5050;
}

.alert-dark {
  --bs-alert-color: #141619;
  --bs-alert-bg: #d3d3d4;
  --bs-alert-border-color: #bcbebf;
}
.alert-dark .alert-link {
  color: #101214;
}

@keyframes progress-bar-stripes {
  0% {
    background-position-x: 1rem;
  }
}
.progress {
  --bs-progress-height: 1rem;
  --bs-progress-font-size: 0.75rem;
  --bs-progress-bg: #e9ecef;
  --bs-progress-border-radius: 0.375rem;
  --bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);
  --bs-progress-bar-color: #fff;
  --bs-progress-bar-bg: #0d6efd;
  --bs-progress-bar-transition: width 0.6s ease;
  display: flex;
  height: var(--bs-progress-height);
  overflow: hidden;
  font-size: var(--bs-progress-font-size);
  background-color: var(--bs-progress-bg);
  border-radius: var(--bs-progress-border-radius);
}

.progress-bar {
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
  color: var(--bs-progress-bar-color);
  text-align: center;
  white-space: nowrap;
  background-color: var(--bs-progress-bar-bg);
  transition: var(--bs-progress-bar-transition);
}
@media (prefers-reduced-motion: reduce) {
  .progress-bar {
    transition: none;
  }
}

.progress-bar-striped {
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: var(--bs-progress-height) var(--bs-progress-height);
}

.progress-bar-animated {
  animation: 1s linear infinite progress-bar-stripes;
}
@media (prefers-reduced-motion: reduce) {
  .progress-bar-animated {
    animation: none;
  }
}

.list-group {
  --bs-list-group-color: #212529;
  --bs-list-group-bg: #fff;
  --bs-list-group-border-color: rgba(0, 0, 0, 0.125);
  --bs-list-group-border-width: 1px;
  --bs-list-group-border-radius: 0.375rem;
  --bs-list-group-item-padding-x: 1rem;
  --bs-list-group-item-padding-y: 0.5rem;
  --bs-list-group-action-color: #495057;
  --bs-list-group-action-hover-color: #495057;
  --bs-list-group-action-hover-bg: #f8f9fa;
  --bs-list-group-action-active-color: #212529;
  --bs-list-group-action-active-bg: #e9ecef;
  --bs-list-group-disabled-color: #6c757d;
  --bs-list-group-disabled-bg: #fff;
  --bs-list-group-active-color: #fff;
  --bs-list-group-active-bg: #0d6efd;
  --bs-list-group-active-border-color: #0d6efd;
  display: flex;
  flex-direction: column;
  padding-left: 0;
  margin-bottom: 0;
  border-radius: var(--bs-list-group-border-radius);
}

.list-group-numbered {
  list-style-type: none;
  counter-reset: section;
}
.list-group-numbered > .list-group-item::before {
  content: counters(section, ".") ". ";
  counter-increment: section;
}

.list-group-item-action {
  width: 100%;
  color: var(--bs-list-group-action-color);
  text-align: inherit;
}
.list-group-item-action:hover, .list-group-item-action:focus {
  z-index: 1;
  color: var(--bs-list-group-action-hover-color);
  text-decoration: none;
  background-color: var(--bs-list-group-action-hover-bg);
}
.list-group-item-action:active {
  color: var(--bs-list-group-action-active-color);
  background-color: var(--bs-list-group-action-active-bg);
}

.list-group-item {
  position: relative;
  display: block;
  padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);
  color: var(--bs-list-group-color);
  text-decoration: none;
  background-color: var(--bs-list-group-bg);
  border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);
}
.list-group-item:first-child {
  border-top-left-radius: inherit;
  border-top-right-radius: inherit;
}
.list-group-item:last-child {
  border-bottom-right-radius: inherit;
  border-bottom-left-radius: inherit;
}
.list-group-item.disabled, .list-group-item:disabled {
  color: var(--bs-list-group-disabled-color);
  pointer-events: none;
  background-color: var(--bs-list-group-disabled-bg);
}
.list-group-item.active {
  z-index: 2;
  color: var(--bs-list-group-active-color);
  background-color: var(--bs-list-group-active-bg);
  border-color: var(--bs-list-group-active-border-color);
}
.list-group-item + .list-group-item {
  border-top-width: 0;
}
.list-group-item + .list-group-item.active {
  margin-top: calc(-1 * var(--bs-list-group-border-width));
  border-top-width: var(--bs-list-group-border-width);
}

.list-group-horizontal {
  flex-direction: row;
}
.list-group-horizontal > .list-group-item:first-child:not(:last-child) {
  border-bottom-left-radius: var(--bs-list-group-border-radius);
  border-top-right-radius: 0;
}
.list-group-horizontal > .list-group-item:last-child:not(:first-child) {
  border-top-right-radius: var(--bs-list-group-border-radius);
  border-bottom-left-radius: 0;
}
.list-group-horizontal > .list-group-item.active {
  margin-top: 0;
}
.list-group-horizontal > .list-group-item + .list-group-item {
  border-top-width: var(--bs-list-group-border-width);
  border-left-width: 0;
}
.list-group-horizontal > .list-group-item + .list-group-item.active {
  margin-left: calc(-1 * var(--bs-list-group-border-width));
  border-left-width: var(--bs-list-group-border-width);
}

@media (min-width: 576px) {
  .list-group-horizontal-sm {
    flex-direction: row;
  }
  .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-sm > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-sm > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
@media (min-width: 768px) {
  .list-group-horizontal-md {
    flex-direction: row;
  }
  .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-md > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-md > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-md > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
@media (min-width: 992px) {
  .list-group-horizontal-lg {
    flex-direction: row;
  }
  .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-lg > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-lg > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
@media (min-width: 1200px) {
  .list-group-horizontal-xl {
    flex-direction: row;
  }
  .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-xl > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-xl > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
@media (min-width: 1400px) {
  .list-group-horizontal-xxl {
    flex-direction: row;
  }
  .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {
    border-bottom-left-radius: var(--bs-list-group-border-radius);
    border-top-right-radius: 0;
  }
  .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {
    border-top-right-radius: var(--bs-list-group-border-radius);
    border-bottom-left-radius: 0;
  }
  .list-group-horizontal-xxl > .list-group-item.active {
    margin-top: 0;
  }
  .list-group-horizontal-xxl > .list-group-item + .list-group-item {
    border-top-width: var(--bs-list-group-border-width);
    border-left-width: 0;
  }
  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {
    margin-left: calc(-1 * var(--bs-list-group-border-width));
    border-left-width: var(--bs-list-group-border-width);
  }
}
.list-group-flush {
  border-radius: 0;
}
.list-group-flush > .list-group-item {
  border-width: 0 0 var(--bs-list-group-border-width);
}
.list-group-flush > .list-group-item:last-child {
  border-bottom-width: 0;
}

.list-group-item-primary {
  color: #084298;
  background-color: #cfe2ff;
}
.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {
  color: #084298;
  background-color: #bacbe6;
}
.list-group-item-primary.list-group-item-action.active {
  color: #fff;
  background-color: #084298;
  border-color: #084298;
}

.list-group-item-secondary {
  color: #41464b;
  background-color: #e2e3e5;
}
.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {
  color: #41464b;
  background-color: #cbccce;
}
.list-group-item-secondary.list-group-item-action.active {
  color: #fff;
  background-color: #41464b;
  border-color: #41464b;
}

.list-group-item-success {
  color: #0f5132;
  background-color: #d1e7dd;
}
.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {
  color: #0f5132;
  background-color: #bcd0c7;
}
.list-group-item-success.list-group-item-action.active {
  color: #fff;
  background-color: #0f5132;
  border-color: #0f5132;
}

.list-group-item-info {
  color: #055160;
  background-color: #cff4fc;
}
.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {
  color: #055160;
  background-color: #badce3;
}
.list-group-item-info.list-group-item-action.active {
  color: #fff;
  background-color: #055160;
  border-color: #055160;
}

.list-group-item-warning {
  color: #664d03;
  background-color: #fff3cd;
}
.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {
  color: #664d03;
  background-color: #e6dbb9;
}
.list-group-item-warning.list-group-item-action.active {
  color: #fff;
  background-color: #664d03;
  border-color: #664d03;
}

.list-group-item-danger {
  color: #842029;
  background-color: #f8d7da;
}
.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {
  color: #842029;
  background-color: #dfc2c4;
}
.list-group-item-danger.list-group-item-action.active {
  color: #fff;
  background-color: #842029;
  border-color: #842029;
}

.list-group-item-light {
  color: #636464;
  background-color: #fefefe;
}
.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {
  color: #636464;
  background-color: #e5e5e5;
}
.list-group-item-light.list-group-item-action.active {
  color: #fff;
  background-color: #636464;
  border-color: #636464;
}

.list-group-item-dark {
  color: #141619;
  background-color: #d3d3d4;
}
.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {
  color: #141619;
  background-color: #bebebf;
}
.list-group-item-dark.list-group-item-action.active {
  color: #fff;
  background-color: #141619;
  border-color: #141619;
}

.btn-close {
  box-sizing: content-box;
  width: 1em;
  height: 1em;
  padding: 0.25em 0.25em;
  color: #000;
  background: transparent url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23000%27%3e%3cpath d=%27M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z%27/%3e%3c/svg%3e") center/1em auto no-repeat;
  border: 0;
  border-radius: 0.375rem;
  opacity: 0.5;
}
.btn-close:hover {
  color: #000;
  text-decoration: none;
  opacity: 0.75;
}
.btn-close:focus {
  outline: 0;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
  opacity: 1;
}
.btn-close:disabled, .btn-close.disabled {
  pointer-events: none;
  user-select: none;
  opacity: 0.25;
}

.btn-close-white {
  filter: invert(1) grayscale(100%) brightness(200%);
}

.toast {
  --bs-toast-zindex: 1090;
  --bs-toast-padding-x: 0.75rem;
  --bs-toast-padding-y: 0.5rem;
  --bs-toast-spacing: 1.5rem;
  --bs-toast-max-width: 350px;
  --bs-toast-font-size: 0.875rem;
  --bs-toast-color: ;
  --bs-toast-bg: rgba(255, 255, 255, 0.85);
  --bs-toast-border-width: 1px;
  --bs-toast-border-color: var(--bs-border-color-translucent);
  --bs-toast-border-radius: 0.375rem;
  --bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  --bs-toast-header-color: #6c757d;
  --bs-toast-header-bg: rgba(255, 255, 255, 0.85);
  --bs-toast-header-border-color: rgba(0, 0, 0, 0.05);
  width: var(--bs-toast-max-width);
  max-width: 100%;
  font-size: var(--bs-toast-font-size);
  color: var(--bs-toast-color);
  pointer-events: auto;
  background-color: var(--bs-toast-bg);
  background-clip: padding-box;
  border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);
  box-shadow: var(--bs-toast-box-shadow);
  border-radius: var(--bs-toast-border-radius);
}
.toast.showing {
  opacity: 0;
}
.toast:not(.show) {
  display: none;
}

.toast-container {
  --bs-toast-zindex: 1090;
  position: absolute;
  z-index: var(--bs-toast-zindex);
  width: max-content;
  max-width: 100%;
  pointer-events: none;
}
.toast-container > :not(:last-child) {
  margin-bottom: var(--bs-toast-spacing);
}

.toast-header {
  display: flex;
  align-items: center;
  padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);
  color: var(--bs-toast-header-color);
  background-color: var(--bs-toast-header-bg);
  background-clip: padding-box;
  border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);
  border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));
  border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));
}
.toast-header .btn-close {
  margin-right: calc(-0.5 * var(--bs-toast-padding-x));
  margin-left: var(--bs-toast-padding-x);
}

.toast-body {
  padding: var(--bs-toast-padding-x);
  word-wrap: break-word;
}

.modal {
  --bs-modal-zindex: 1055;
  --bs-modal-width: 500px;
  --bs-modal-padding: 1rem;
  --bs-modal-margin: 0.5rem;
  --bs-modal-color: ;
  --bs-modal-bg: #fff;
  --bs-modal-border-color: var(--bs-border-color-translucent);
  --bs-modal-border-width: 1px;
  --bs-modal-border-radius: 0.5rem;
  --bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
  --bs-modal-inner-border-radius: calc(0.5rem - 1px);
  --bs-modal-header-padding-x: 1rem;
  --bs-modal-header-padding-y: 1rem;
  --bs-modal-header-padding: 1rem 1rem;
  --bs-modal-header-border-color: var(--bs-border-color);
  --bs-modal-header-border-width: 1px;
  --bs-modal-title-line-height: 1.5;
  --bs-modal-footer-gap: 0.5rem;
  --bs-modal-footer-bg: ;
  --bs-modal-footer-border-color: var(--bs-border-color);
  --bs-modal-footer-border-width: 1px;
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--bs-modal-zindex);
  display: none;
  width: 100%;
  height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  outline: 0;
}

.modal-dialog {
  position: relative;
  width: auto;
  margin: var(--bs-modal-margin);
  pointer-events: none;
}
.modal.fade .modal-dialog {
  transition: transform 0.3s ease-out;
  transform: translate(0, -50px);
}
@media (prefers-reduced-motion: reduce) {
  .modal.fade .modal-dialog {
    transition: none;
  }
}
.modal.show .modal-dialog {
  transform: none;
}
.modal.modal-static .modal-dialog {
  transform: scale(1.02);
}

.modal-dialog-scrollable {
  height: calc(100% - var(--bs-modal-margin) * 2);
}
.modal-dialog-scrollable .modal-content {
  max-height: 100%;
  overflow: hidden;
}
.modal-dialog-scrollable .modal-body {
  overflow-y: auto;
}

.modal-dialog-centered {
  display: flex;
  align-items: center;
  min-height: calc(100% - var(--bs-modal-margin) * 2);
}

.modal-content {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  color: var(--bs-modal-color);
  pointer-events: auto;
  background-color: var(--bs-modal-bg);
  background-clip: padding-box;
  border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);
  border-radius: var(--bs-modal-border-radius);
  outline: 0;
}

.modal-backdrop {
  --bs-backdrop-zindex: 1050;
  --bs-backdrop-bg: #000;
  --bs-backdrop-opacity: 0.5;
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--bs-backdrop-zindex);
  width: 100vw;
  height: 100vh;
  background-color: var(--bs-backdrop-bg);
}
.modal-backdrop.fade {
  opacity: 0;
}
.modal-backdrop.show {
  opacity: var(--bs-backdrop-opacity);
}

.modal-header {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: space-between;
  padding: var(--bs-modal-header-padding);
  border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);
  border-top-left-radius: var(--bs-modal-inner-border-radius);
  border-top-right-radius: var(--bs-modal-inner-border-radius);
}
.modal-header .btn-close {
  padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);
  margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;
}

.modal-title {
  margin-bottom: 0;
  line-height: var(--bs-modal-title-line-height);
}

.modal-body {
  position: relative;
  flex: 1 1 auto;
  padding: var(--bs-modal-padding);
}

.modal-footer {
  display: flex;
  flex-shrink: 0;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);
  background-color: var(--bs-modal-footer-bg);
  border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);
  border-bottom-right-radius: var(--bs-modal-inner-border-radius);
  border-bottom-left-radius: var(--bs-modal-inner-border-radius);
}
.modal-footer > * {
  margin: calc(var(--bs-modal-footer-gap) * 0.5);
}

@media (min-width: 576px) {
  .modal {
    --bs-modal-margin: 1.75rem;
    --bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  }
  .modal-dialog {
    max-width: var(--bs-modal-width);
    margin-right: auto;
    margin-left: auto;
  }
  .modal-sm {
    --bs-modal-width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg,
  .modal-xl {
    --bs-modal-width: 800px;
  }
}
@media (min-width: 1200px) {
  .modal-xl {
    --bs-modal-width: 1140px;
  }
}
.modal-fullscreen {
  width: 100vw;
  max-width: none;
  height: 100%;
  margin: 0;
}
.modal-fullscreen .modal-content {
  height: 100%;
  border: 0;
  border-radius: 0;
}
.modal-fullscreen .modal-header,
.modal-fullscreen .modal-footer {
  border-radius: 0;
}
.modal-fullscreen .modal-body {
  overflow-y: auto;
}

@media (max-width: 575.98px) {
  .modal-fullscreen-sm-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-sm-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-sm-down .modal-header,
  .modal-fullscreen-sm-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-sm-down .modal-body {
    overflow-y: auto;
  }
}
@media (max-width: 767.98px) {
  .modal-fullscreen-md-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-md-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-md-down .modal-header,
  .modal-fullscreen-md-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-md-down .modal-body {
    overflow-y: auto;
  }
}
@media (max-width: 991.98px) {
  .modal-fullscreen-lg-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-lg-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-lg-down .modal-header,
  .modal-fullscreen-lg-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-lg-down .modal-body {
    overflow-y: auto;
  }
}
@media (max-width: 1199.98px) {
  .modal-fullscreen-xl-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-xl-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-xl-down .modal-header,
  .modal-fullscreen-xl-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-xl-down .modal-body {
    overflow-y: auto;
  }
}
@media (max-width: 1399.98px) {
  .modal-fullscreen-xxl-down {
    width: 100vw;
    max-width: none;
    height: 100%;
    margin: 0;
  }
  .modal-fullscreen-xxl-down .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }
  .modal-fullscreen-xxl-down .modal-header,
  .modal-fullscreen-xxl-down .modal-footer {
    border-radius: 0;
  }
  .modal-fullscreen-xxl-down .modal-body {
    overflow-y: auto;
  }
}
.tooltip {
  --bs-tooltip-zindex: 1080;
  --bs-tooltip-max-width: 200px;
  --bs-tooltip-padding-x: 0.5rem;
  --bs-tooltip-padding-y: 0.25rem;
  --bs-tooltip-margin: ;
  --bs-tooltip-font-size: 0.875rem;
  --bs-tooltip-color: #fff;
  --bs-tooltip-bg: #000;
  --bs-tooltip-border-radius: 0.375rem;
  --bs-tooltip-opacity: 0.9;
  --bs-tooltip-arrow-width: 0.8rem;
  --bs-tooltip-arrow-height: 0.4rem;
  z-index: var(--bs-tooltip-zindex);
  display: block;
  padding: var(--bs-tooltip-arrow-height);
  margin: var(--bs-tooltip-margin);
  font-family: var(--bs-font-sans-serif);
  font-style: normal;
  font-weight: 400;
  line-height: 1.5;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  letter-spacing: normal;
  word-break: normal;
  white-space: normal;
  word-spacing: normal;
  line-break: auto;
  font-size: var(--bs-tooltip-font-size);
  word-wrap: break-word;
  opacity: 0;
}
.tooltip.show {
  opacity: var(--bs-tooltip-opacity);
}
.tooltip .tooltip-arrow {
  display: block;
  width: var(--bs-tooltip-arrow-width);
  height: var(--bs-tooltip-arrow-height);
}
.tooltip .tooltip-arrow::before {
  position: absolute;
  content: "";
  border-color: transparent;
  border-style: solid;
}

.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {
  bottom: 0;
}
.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {
  top: -1px;
  border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
  border-top-color: var(--bs-tooltip-bg);
}

/* rtl:begin:ignore */
.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {
  left: 0;
  width: var(--bs-tooltip-arrow-height);
  height: var(--bs-tooltip-arrow-width);
}
.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {
  right: -1px;
  border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
  border-right-color: var(--bs-tooltip-bg);
}

/* rtl:end:ignore */
.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {
  top: 0;
}
.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {
  bottom: -1px;
  border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
  border-bottom-color: var(--bs-tooltip-bg);
}

/* rtl:begin:ignore */
.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {
  right: 0;
  width: var(--bs-tooltip-arrow-height);
  height: var(--bs-tooltip-arrow-width);
}
.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {
  left: -1px;
  border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
  border-left-color: var(--bs-tooltip-bg);
}

/* rtl:end:ignore */
.tooltip-inner {
  max-width: var(--bs-tooltip-max-width);
  padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);
  color: var(--bs-tooltip-color);
  text-align: center;
  background-color: var(--bs-tooltip-bg);
  border-radius: var(--bs-tooltip-border-radius);
}

.popover {
  --bs-popover-zindex: 1070;
  --bs-popover-max-width: 276px;
  --bs-popover-font-size: 0.875rem;
  --bs-popover-bg: #fff;
  --bs-popover-border-width: 1px;
  --bs-popover-border-color: var(--bs-border-color-translucent);
  --bs-popover-border-radius: 0.5rem;
  --bs-popover-inner-border-radius: calc(0.5rem - 1px);
  --bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  --bs-popover-header-padding-x: 1rem;
  --bs-popover-header-padding-y: 0.5rem;
  --bs-popover-header-font-size: 1rem;
  --bs-popover-header-color: ;
  --bs-popover-header-bg: #f0f0f0;
  --bs-popover-body-padding-x: 1rem;
  --bs-popover-body-padding-y: 1rem;
  --bs-popover-body-color: #212529;
  --bs-popover-arrow-width: 1rem;
  --bs-popover-arrow-height: 0.5rem;
  --bs-popover-arrow-border: var(--bs-popover-border-color);
  z-index: var(--bs-popover-zindex);
  display: block;
  max-width: var(--bs-popover-max-width);
  font-family: var(--bs-font-sans-serif);
  font-style: normal;
  font-weight: 400;
  line-height: 1.5;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  letter-spacing: normal;
  word-break: normal;
  white-space: normal;
  word-spacing: normal;
  line-break: auto;
  font-size: var(--bs-popover-font-size);
  word-wrap: break-word;
  background-color: var(--bs-popover-bg);
  background-clip: padding-box;
  border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);
  border-radius: var(--bs-popover-border-radius);
}
.popover .popover-arrow {
  display: block;
  width: var(--bs-popover-arrow-width);
  height: var(--bs-popover-arrow-height);
}
.popover .popover-arrow::before, .popover .popover-arrow::after {
  position: absolute;
  display: block;
  content: "";
  border-color: transparent;
  border-style: solid;
  border-width: 0;
}

.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {
  bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
}
.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
  border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;
}
.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {
  bottom: 0;
  border-top-color: var(--bs-popover-arrow-border);
}
.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
  bottom: var(--bs-popover-border-width);
  border-top-color: var(--bs-popover-bg);
}

/* rtl:begin:ignore */
.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {
  left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
  width: var(--bs-popover-arrow-height);
  height: var(--bs-popover-arrow-width);
}
.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
  border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;
}
.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {
  left: 0;
  border-right-color: var(--bs-popover-arrow-border);
}
.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
  left: var(--bs-popover-border-width);
  border-right-color: var(--bs-popover-bg);
}

/* rtl:end:ignore */
.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {
  top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
}
.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
  border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);
}
.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {
  top: 0;
  border-bottom-color: var(--bs-popover-arrow-border);
}
.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
  top: var(--bs-popover-border-width);
  border-bottom-color: var(--bs-popover-bg);
}
.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {
  position: absolute;
  top: 0;
  left: 50%;
  display: block;
  width: var(--bs-popover-arrow-width);
  margin-left: calc(-0.5 * var(--bs-popover-arrow-width));
  content: "";
  border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);
}

/* rtl:begin:ignore */
.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {
  right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
  width: var(--bs-popover-arrow-height);
  height: var(--bs-popover-arrow-width);
}
.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
  border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);
}
.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {
  right: 0;
  border-left-color: var(--bs-popover-arrow-border);
}
.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
  right: var(--bs-popover-border-width);
  border-left-color: var(--bs-popover-bg);
}

/* rtl:end:ignore */
.popover-header {
  padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);
  margin-bottom: 0;
  font-size: var(--bs-popover-header-font-size);
  color: var(--bs-popover-header-color);
  background-color: var(--bs-popover-header-bg);
  border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);
  border-top-left-radius: var(--bs-popover-inner-border-radius);
  border-top-right-radius: var(--bs-popover-inner-border-radius);
}
.popover-header:empty {
  display: none;
}

.popover-body {
  padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);
  color: var(--bs-popover-body-color);
}

.carousel {
  position: relative;
}

.carousel.pointer-event {
  touch-action: pan-y;
}

.carousel-inner {
  position: relative;
  width: 100%;
  overflow: hidden;
}
.carousel-inner::after {
  display: block;
  clear: both;
  content: "";
}

.carousel-item {
  position: relative;
  display: none;
  float: left;
  width: 100%;
  margin-right: -100%;
  backface-visibility: hidden;
  transition: transform 0.6s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .carousel-item {
    transition: none;
  }
}

.carousel-item.active,
.carousel-item-next,
.carousel-item-prev {
  display: block;
}

.carousel-item-next:not(.carousel-item-start),
.active.carousel-item-end {
  transform: translateX(100%);
}

.carousel-item-prev:not(.carousel-item-end),
.active.carousel-item-start {
  transform: translateX(-100%);
}

.carousel-fade .carousel-item {
  opacity: 0;
  transition-property: opacity;
  transform: none;
}
.carousel-fade .carousel-item.active,
.carousel-fade .carousel-item-next.carousel-item-start,
.carousel-fade .carousel-item-prev.carousel-item-end {
  z-index: 1;
  opacity: 1;
}
.carousel-fade .active.carousel-item-start,
.carousel-fade .active.carousel-item-end {
  z-index: 0;
  opacity: 0;
  transition: opacity 0s 0.6s;
}
@media (prefers-reduced-motion: reduce) {
  .carousel-fade .active.carousel-item-start,
  .carousel-fade .active.carousel-item-end {
    transition: none;
  }
}

.carousel-control-prev,
.carousel-control-next {
  position: absolute;
  top: 0;
  bottom: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 15%;
  padding: 0;
  color: #fff;
  text-align: center;
  background: none;
  border: 0;
  opacity: 0.5;
  transition: opacity 0.15s ease;
}
@media (prefers-reduced-motion: reduce) {
  .carousel-control-prev,
  .carousel-control-next {
    transition: none;
  }
}
.carousel-control-prev:hover, .carousel-control-prev:focus,
.carousel-control-next:hover,
.carousel-control-next:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  opacity: 0.9;
}

.carousel-control-prev {
  left: 0;
}

.carousel-control-next {
  right: 0;
}

.carousel-control-prev-icon,
.carousel-control-next-icon {
  display: inline-block;
  width: 2rem;
  height: 2rem;
  background-repeat: no-repeat;
  background-position: 50%;
  background-size: 100% 100%;
}

/* rtl:options: {
  "autoRename": true,
  "stringMap":[ {
    "name"    : "prev-next",
    "search"  : "prev",
    "replace" : "next"
  } ]
} */
.carousel-control-prev-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z%27/%3e%3c/svg%3e");
}

.carousel-control-next-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e");
}

.carousel-indicators {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 2;
  display: flex;
  justify-content: center;
  padding: 0;
  margin-right: 15%;
  margin-bottom: 1rem;
  margin-left: 15%;
  list-style: none;
}
.carousel-indicators [data-bs-target] {
  box-sizing: content-box;
  flex: 0 1 auto;
  width: 30px;
  height: 3px;
  padding: 0;
  margin-right: 3px;
  margin-left: 3px;
  text-indent: -999px;
  cursor: pointer;
  background-color: #fff;
  background-clip: padding-box;
  border: 0;
  border-top: 10px solid transparent;
  border-bottom: 10px solid transparent;
  opacity: 0.5;
  transition: opacity 0.6s ease;
}
@media (prefers-reduced-motion: reduce) {
  .carousel-indicators [data-bs-target] {
    transition: none;
  }
}
.carousel-indicators .active {
  opacity: 1;
}

.carousel-caption {
  position: absolute;
  right: 15%;
  bottom: 1.25rem;
  left: 15%;
  padding-top: 1.25rem;
  padding-bottom: 1.25rem;
  color: #fff;
  text-align: center;
}

.carousel-dark .carousel-control-prev-icon,
.carousel-dark .carousel-control-next-icon {
  filter: invert(1) grayscale(100);
}
.carousel-dark .carousel-indicators [data-bs-target] {
  background-color: #000;
}
.carousel-dark .carousel-caption {
  color: #000;
}

.spinner-grow,
.spinner-border {
  display: inline-block;
  width: var(--bs-spinner-width);
  height: var(--bs-spinner-height);
  vertical-align: var(--bs-spinner-vertical-align);
  border-radius: 50%;
  animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);
}

@keyframes spinner-border {
  to {
    transform: rotate(360deg) /* rtl:ignore */;
  }
}
.spinner-border {
  --bs-spinner-width: 2rem;
  --bs-spinner-height: 2rem;
  --bs-spinner-vertical-align: -0.125em;
  --bs-spinner-border-width: 0.25em;
  --bs-spinner-animation-speed: 0.75s;
  --bs-spinner-animation-name: spinner-border;
  border: var(--bs-spinner-border-width) solid currentcolor;
  border-right-color: transparent;
}

.spinner-border-sm {
  --bs-spinner-width: 1rem;
  --bs-spinner-height: 1rem;
  --bs-spinner-border-width: 0.2em;
}

@keyframes spinner-grow {
  0% {
    transform: scale(0);
  }
  50% {
    opacity: 1;
    transform: none;
  }
}
.spinner-grow {
  --bs-spinner-width: 2rem;
  --bs-spinner-height: 2rem;
  --bs-spinner-vertical-align: -0.125em;
  --bs-spinner-animation-speed: 0.75s;
  --bs-spinner-animation-name: spinner-grow;
  background-color: currentcolor;
  opacity: 0;
}

.spinner-grow-sm {
  --bs-spinner-width: 1rem;
  --bs-spinner-height: 1rem;
}

@media (prefers-reduced-motion: reduce) {
  .spinner-border,
  .spinner-grow {
    --bs-spinner-animation-speed: 1.5s;
  }
}
.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {
  --bs-offcanvas-zindex: 1045;
  --bs-offcanvas-width: 400px;
  --bs-offcanvas-height: 30vh;
  --bs-offcanvas-padding-x: 1rem;
  --bs-offcanvas-padding-y: 1rem;
  --bs-offcanvas-color: ;
  --bs-offcanvas-bg: #fff;
  --bs-offcanvas-border-width: 1px;
  --bs-offcanvas-border-color: var(--bs-border-color-translucent);
  --bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}

@media (max-width: 575.98px) {
  .offcanvas-sm {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: transform 0.3s ease-in-out;
  }
}
@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-sm {
    transition: none;
  }
}
@media (max-width: 575.98px) {
  .offcanvas-sm.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-sm.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-sm.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-sm.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {
    visibility: visible;
  }
}
@media (min-width: 576px) {
  .offcanvas-sm {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-sm .offcanvas-header {
    display: none;
  }
  .offcanvas-sm .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

@media (max-width: 767.98px) {
  .offcanvas-md {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: transform 0.3s ease-in-out;
  }
}
@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-md {
    transition: none;
  }
}
@media (max-width: 767.98px) {
  .offcanvas-md.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-md.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-md.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-md.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {
    visibility: visible;
  }
}
@media (min-width: 768px) {
  .offcanvas-md {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-md .offcanvas-header {
    display: none;
  }
  .offcanvas-md .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

@media (max-width: 991.98px) {
  .offcanvas-lg {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: transform 0.3s ease-in-out;
  }
}
@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-lg {
    transition: none;
  }
}
@media (max-width: 991.98px) {
  .offcanvas-lg.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-lg.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-lg.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-lg.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {
    visibility: visible;
  }
}
@media (min-width: 992px) {
  .offcanvas-lg {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-lg .offcanvas-header {
    display: none;
  }
  .offcanvas-lg .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

@media (max-width: 1199.98px) {
  .offcanvas-xl {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: transform 0.3s ease-in-out;
  }
}
@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-xl {
    transition: none;
  }
}
@media (max-width: 1199.98px) {
  .offcanvas-xl.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-xl.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-xl.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-xl.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {
    visibility: visible;
  }
}
@media (min-width: 1200px) {
  .offcanvas-xl {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-xl .offcanvas-header {
    display: none;
  }
  .offcanvas-xl .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

@media (max-width: 1399.98px) {
  .offcanvas-xxl {
    position: fixed;
    bottom: 0;
    z-index: var(--bs-offcanvas-zindex);
    display: flex;
    flex-direction: column;
    max-width: 100%;
    color: var(--bs-offcanvas-color);
    visibility: hidden;
    background-color: var(--bs-offcanvas-bg);
    background-clip: padding-box;
    outline: 0;
    transition: transform 0.3s ease-in-out;
  }
}
@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {
  .offcanvas-xxl {
    transition: none;
  }
}
@media (max-width: 1399.98px) {
  .offcanvas-xxl.offcanvas-start {
    top: 0;
    left: 0;
    width: var(--bs-offcanvas-width);
    border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(-100%);
  }
  .offcanvas-xxl.offcanvas-end {
    top: 0;
    right: 0;
    width: var(--bs-offcanvas-width);
    border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateX(100%);
  }
  .offcanvas-xxl.offcanvas-top {
    top: 0;
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(-100%);
  }
  .offcanvas-xxl.offcanvas-bottom {
    right: 0;
    left: 0;
    height: var(--bs-offcanvas-height);
    max-height: 100%;
    border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
    transform: translateY(100%);
  }
  .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {
    transform: none;
  }
  .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {
    visibility: visible;
  }
}
@media (min-width: 1400px) {
  .offcanvas-xxl {
    --bs-offcanvas-height: auto;
    --bs-offcanvas-border-width: 0;
    background-color: transparent !important;
  }
  .offcanvas-xxl .offcanvas-header {
    display: none;
  }
  .offcanvas-xxl .offcanvas-body {
    display: flex;
    flex-grow: 0;
    padding: 0;
    overflow-y: visible;
    background-color: transparent !important;
  }
}

.offcanvas {
  position: fixed;
  bottom: 0;
  z-index: var(--bs-offcanvas-zindex);
  display: flex;
  flex-direction: column;
  max-width: 100%;
  color: var(--bs-offcanvas-color);
  visibility: hidden;
  background-color: var(--bs-offcanvas-bg);
  background-clip: padding-box;
  outline: 0;
  transition: transform 0.3s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
  .offcanvas {
    transition: none;
  }
}
.offcanvas.offcanvas-start {
  top: 0;
  left: 0;
  width: var(--bs-offcanvas-width);
  border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
  transform: translateX(-100%);
}
.offcanvas.offcanvas-end {
  top: 0;
  right: 0;
  width: var(--bs-offcanvas-width);
  border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
  transform: translateX(100%);
}
.offcanvas.offcanvas-top {
  top: 0;
  right: 0;
  left: 0;
  height: var(--bs-offcanvas-height);
  max-height: 100%;
  border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
  transform: translateY(-100%);
}
.offcanvas.offcanvas-bottom {
  right: 0;
  left: 0;
  height: var(--bs-offcanvas-height);
  max-height: 100%;
  border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
  transform: translateY(100%);
}
.offcanvas.showing, .offcanvas.show:not(.hiding) {
  transform: none;
}
.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {
  visibility: visible;
}

.offcanvas-backdrop {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1040;
  width: 100vw;
  height: 100vh;
  background-color: #000;
}
.offcanvas-backdrop.fade {
  opacity: 0;
}
.offcanvas-backdrop.show {
  opacity: 0.5;
}

.offcanvas-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
}
.offcanvas-header .btn-close {
  padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);
  margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y));
  margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x));
  margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y));
}

.offcanvas-title {
  margin-bottom: 0;
  line-height: 1.5;
}

.offcanvas-body {
  flex-grow: 1;
  padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
  overflow-y: auto;
}

.placeholder {
  display: inline-block;
  min-height: 1em;
  vertical-align: middle;
  cursor: wait;
  background-color: currentcolor;
  opacity: 0.5;
}
.placeholder.btn::before {
  display: inline-block;
  content: "";
}

.placeholder-xs {
  min-height: 0.6em;
}

.placeholder-sm {
  min-height: 0.8em;
}

.placeholder-lg {
  min-height: 1.2em;
}

.placeholder-glow .placeholder {
  animation: placeholder-glow 2s ease-in-out infinite;
}

@keyframes placeholder-glow {
  50% {
    opacity: 0.2;
  }
}
.placeholder-wave {
  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
  mask-size: 200% 100%;
  animation: placeholder-wave 2s linear infinite;
}

@keyframes placeholder-wave {
  100% {
    mask-position: -200% 0%;
  }
}
.clearfix::after {
  display: block;
  clear: both;
  content: "";
}

.text-bg-primary {
  color: #fff !important;
  background-color: RGBA(13, 110, 253, var(--bs-bg-opacity, 1)) !important;
}

.text-bg-secondary {
  color: #fff !important;
  background-color: RGBA(108, 117, 125, var(--bs-bg-opacity, 1)) !important;
}

.text-bg-success {
  color: #fff !important;
  background-color: RGBA(25, 135, 84, var(--bs-bg-opacity, 1)) !important;
}

.text-bg-info {
  color: #000 !important;
  background-color: RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important;
}

.text-bg-warning {
  color: #000 !important;
  background-color: RGBA(255, 193, 7, var(--bs-bg-opacity, 1)) !important;
}

.text-bg-danger {
  color: #fff !important;
  background-color: RGBA(220, 53, 69, var(--bs-bg-opacity, 1)) !important;
}

.text-bg-light {
  color: #000 !important;
  background-color: RGBA(248, 249, 250, var(--bs-bg-opacity, 1)) !important;
}

.text-bg-dark {
  color: #fff !important;
  background-color: RGBA(33, 37, 41, var(--bs-bg-opacity, 1)) !important;
}

.link-primary {
  color: #0d6efd !important;
}
.link-primary:hover, .link-primary:focus {
  color: #0a58ca !important;
}

.link-secondary {
  color: #6c757d !important;
}
.link-secondary:hover, .link-secondary:focus {
  color: #565e64 !important;
}

.link-success {
  color: #198754 !important;
}
.link-success:hover, .link-success:focus {
  color: #146c43 !important;
}

.link-info {
  color: #0dcaf0 !important;
}
.link-info:hover, .link-info:focus {
  color: #3dd5f3 !important;
}

.link-warning {
  color: #ffc107 !important;
}
.link-warning:hover, .link-warning:focus {
  color: #ffcd39 !important;
}

.link-danger {
  color: #dc3545 !important;
}
.link-danger:hover, .link-danger:focus {
  color: #b02a37 !important;
}

.link-light {
  color: #f8f9fa !important;
}
.link-light:hover, .link-light:focus {
  color: #f9fafb !important;
}

.link-dark {
  color: #212529 !important;
}
.link-dark:hover, .link-dark:focus {
  color: #1a1e21 !important;
}

.ratio {
  position: relative;
  width: 100%;
}
.ratio::before {
  display: block;
  padding-top: var(--bs-aspect-ratio);
  content: "";
}
.ratio > * {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.ratio-1x1 {
  --bs-aspect-ratio: 100%;
}

.ratio-4x3 {
  --bs-aspect-ratio: 75%;
}

.ratio-16x9 {
  --bs-aspect-ratio: 56.25%;
}

.ratio-21x9 {
  --bs-aspect-ratio: 42.8571428571%;
}

.fixed-top {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 1030;
}

.fixed-bottom {
  position: fixed;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1030;
}

.sticky-top {
  position: sticky;
  top: 0;
  z-index: 1020;
}

.sticky-bottom {
  position: sticky;
  bottom: 0;
  z-index: 1020;
}

@media (min-width: 576px) {
  .sticky-sm-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-sm-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
@media (min-width: 768px) {
  .sticky-md-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-md-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
@media (min-width: 992px) {
  .sticky-lg-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-lg-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
@media (min-width: 1200px) {
  .sticky-xl-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-xl-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
@media (min-width: 1400px) {
  .sticky-xxl-top {
    position: sticky;
    top: 0;
    z-index: 1020;
  }
  .sticky-xxl-bottom {
    position: sticky;
    bottom: 0;
    z-index: 1020;
  }
}
.hstack {
  display: flex;
  flex-direction: row;
  align-items: center;
  align-self: stretch;
}

.vstack {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-self: stretch;
}

.visually-hidden,
.visually-hidden-focusable:not(:focus):not(:focus-within) {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.stretched-link::after {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1;
  content: "";
}

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

.vr {
  display: inline-block;
  align-self: stretch;
  width: 1px;
  min-height: 1em;
  background-color: currentcolor;
  opacity: 0.25;
}

.align-baseline {
  vertical-align: baseline !important;
}

.align-top {
  vertical-align: top !important;
}

.align-middle {
  vertical-align: middle !important;
}

.align-bottom {
  vertical-align: bottom !important;
}

.align-text-bottom {
  vertical-align: text-bottom !important;
}

.align-text-top {
  vertical-align: text-top !important;
}

.float-start {
  float: left !important;
}

.float-end {
  float: right !important;
}

.float-none {
  float: none !important;
}

.opacity-0 {
  opacity: 0 !important;
}

.opacity-25 {
  opacity: 0.25 !important;
}

.opacity-50 {
  opacity: 0.5 !important;
}

.opacity-75 {
  opacity: 0.75 !important;
}

.opacity-100 {
  opacity: 1 !important;
}

.overflow-auto {
  overflow: auto !important;
}

.overflow-hidden {
  overflow: hidden !important;
}

.overflow-visible {
  overflow: visible !important;
}

.overflow-scroll {
  overflow: scroll !important;
}

.d-inline {
  display: inline !important;
}

.d-inline-block {
  display: inline-block !important;
}

.d-block {
  display: block !important;
}

.d-grid {
  display: grid !important;
}

.d-table {
  display: table !important;
}

.d-table-row {
  display: table-row !important;
}

.d-table-cell {
  display: table-cell !important;
}

.d-flex {
  display: flex !important;
}

.d-inline-flex {
  display: inline-flex !important;
}

.d-none {
  display: none !important;
}

.shadow {
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
}

.shadow-sm {
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}

.shadow-lg {
  box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px, rgba(14, 30, 37, 0.32) 0px 2px 16px 0px !important;
}

.shadow-none {
  box-shadow: none !important;
}

.position-static {
  position: static !important;
}

.position-relative {
  position: relative !important;
}

.position-absolute {
  position: absolute !important;
}

.position-fixed {
  position: fixed !important;
}

.position-sticky {
  position: sticky !important;
}

.top-0 {
  top: 0 !important;
}

.top-50 {
  top: 50% !important;
}

.top-100 {
  top: 100% !important;
}

.bottom-0 {
  bottom: 0 !important;
}

.bottom-50 {
  bottom: 50% !important;
}

.bottom-100 {
  bottom: 100% !important;
}

.start-0 {
  left: 0 !important;
}

.start-50 {
  left: 50% !important;
}

.start-100 {
  left: 100% !important;
}

.end-0 {
  right: 0 !important;
}

.end-50 {
  right: 50% !important;
}

.end-100 {
  right: 100% !important;
}

.translate-middle {
  transform: translate(-50%, -50%) !important;
}

.translate-middle-x {
  transform: translateX(-50%) !important;
}

.translate-middle-y {
  transform: translateY(-50%) !important;
}

.border {
  border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-0 {
  border: 0 !important;
}

.border-top {
  border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-top-0 {
  border-top: 0 !important;
}

.border-end {
  border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-end-0 {
  border-right: 0 !important;
}

.border-bottom {
  border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-bottom-0 {
  border-bottom: 0 !important;
}

.border-start {
  border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

.border-start-0 {
  border-left: 0 !important;
}

.border-primary {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;
}

.border-secondary {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;
}

.border-success {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;
}

.border-info {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;
}

.border-warning {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;
}

.border-danger {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;
}

.border-light {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;
}

.border-dark {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;
}

.border-white {
  --bs-border-opacity: 1;
  border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;
}

.border-1 {
  --bs-border-width: 1px;
}

.border-2 {
  --bs-border-width: 2px;
}

.border-3 {
  --bs-border-width: 3px;
}

.border-4 {
  --bs-border-width: 4px;
}

.border-5 {
  --bs-border-width: 5px;
}

.border-opacity-10 {
  --bs-border-opacity: 0.1;
}

.border-opacity-25 {
  --bs-border-opacity: 0.25;
}

.border-opacity-50 {
  --bs-border-opacity: 0.5;
}

.border-opacity-75 {
  --bs-border-opacity: 0.75;
}

.border-opacity-100 {
  --bs-border-opacity: 1;
}

.w-25 {
  width: 25% !important;
}

.w-50 {
  width: 50% !important;
}

.w-75 {
  width: 75% !important;
}

.w-100 {
  width: 100% !important;
}

.w-auto {
  width: auto !important;
}

.mw-100 {
  max-width: 100% !important;
}

.vw-100 {
  width: 100vw !important;
}

.min-vw-100 {
  min-width: 100vw !important;
}

.h-25 {
  height: 25% !important;
}

.h-50 {
  height: 50% !important;
}

.h-75 {
  height: 75% !important;
}

.h-100 {
  height: 100% !important;
}

.h-auto {
  height: auto !important;
}

.mh-100 {
  max-height: 100% !important;
}

.vh-100 {
  height: 100vh !important;
}

.min-vh-100 {
  min-height: 100vh !important;
}

.flex-fill {
  flex: 1 1 auto !important;
}

.flex-row {
  flex-direction: row !important;
}

.flex-column {
  flex-direction: column !important;
}

.flex-row-reverse {
  flex-direction: row-reverse !important;
}

.flex-column-reverse {
  flex-direction: column-reverse !important;
}

.flex-grow-0 {
  flex-grow: 0 !important;
}

.flex-grow-1 {
  flex-grow: 1 !important;
}

.flex-shrink-0 {
  flex-shrink: 0 !important;
}

.flex-shrink-1 {
  flex-shrink: 1 !important;
}

.flex-wrap {
  flex-wrap: wrap !important;
}

.flex-nowrap {
  flex-wrap: nowrap !important;
}

.flex-wrap-reverse {
  flex-wrap: wrap-reverse !important;
}

.justify-content-start {
  justify-content: flex-start !important;
}

.justify-content-end {
  justify-content: flex-end !important;
}

.justify-content-center {
  justify-content: center !important;
}

.justify-content-between {
  justify-content: space-between !important;
}

.justify-content-around {
  justify-content: space-around !important;
}

.justify-content-evenly {
  justify-content: space-evenly !important;
}

.align-items-start {
  align-items: flex-start !important;
}

.align-items-end {
  align-items: flex-end !important;
}

.align-items-center {
  align-items: center !important;
}

.align-items-baseline {
  align-items: baseline !important;
}

.align-items-stretch {
  align-items: stretch !important;
}

.align-content-start {
  align-content: flex-start !important;
}

.align-content-end {
  align-content: flex-end !important;
}

.align-content-center {
  align-content: center !important;
}

.align-content-between {
  align-content: space-between !important;
}

.align-content-around {
  align-content: space-around !important;
}

.align-content-stretch {
  align-content: stretch !important;
}

.align-self-auto {
  align-self: auto !important;
}

.align-self-start {
  align-self: flex-start !important;
}

.align-self-end {
  align-self: flex-end !important;
}

.align-self-center {
  align-self: center !important;
}

.align-self-baseline {
  align-self: baseline !important;
}

.align-self-stretch {
  align-self: stretch !important;
}

.order-first {
  order: -1 !important;
}

.order-0 {
  order: 0 !important;
}

.order-1 {
  order: 1 !important;
}

.order-2 {
  order: 2 !important;
}

.order-3 {
  order: 3 !important;
}

.order-4 {
  order: 4 !important;
}

.order-5 {
  order: 5 !important;
}

.order-last {
  order: 6 !important;
}

.m-0 {
  margin: 0 !important;
}

.m-1 {
  margin: 0.25rem !important;
}

.m-2 {
  margin: 0.5rem !important;
}

.m-3 {
  margin: 1rem !important;
}

.m-4 {
  margin: 1.5rem !important;
}

.m-5 {
  margin: 3rem !important;
}

.m-auto {
  margin: auto !important;
}

.mx-0 {
  margin-right: 0 !important;
  margin-left: 0 !important;
}

.mx-1 {
  margin-right: 0.25rem !important;
  margin-left: 0.25rem !important;
}

.mx-2 {
  margin-right: 0.5rem !important;
  margin-left: 0.5rem !important;
}

.mx-3 {
  margin-right: 1rem !important;
  margin-left: 1rem !important;
}

.mx-4 {
  margin-right: 1.5rem !important;
  margin-left: 1.5rem !important;
}

.mx-5 {
  margin-right: 3rem !important;
  margin-left: 3rem !important;
}

.mx-auto {
  margin-right: auto !important;
  margin-left: auto !important;
}

.my-0 {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.my-1 {
  margin-top: 0.25rem !important;
  margin-bottom: 0.25rem !important;
}

.my-2 {
  margin-top: 0.5rem !important;
  margin-bottom: 0.5rem !important;
}

.my-3 {
  margin-top: 1rem !important;
  margin-bottom: 1rem !important;
}

.my-4 {
  margin-top: 1.5rem !important;
  margin-bottom: 1.5rem !important;
}

.my-5 {
  margin-top: 3rem !important;
  margin-bottom: 3rem !important;
}

.my-auto {
  margin-top: auto !important;
  margin-bottom: auto !important;
}

.mt-0 {
  margin-top: 0 !important;
}

.mt-1 {
  margin-top: 0.25rem !important;
}

.mt-2 {
  margin-top: 0.5rem !important;
}

.mt-3 {
  margin-top: 1rem !important;
}

.mt-4 {
  margin-top: 1.5rem !important;
}

.mt-5 {
  margin-top: 3rem !important;
}

.mt-auto {
  margin-top: auto !important;
}

.me-0 {
  margin-right: 0 !important;
}

.me-1 {
  margin-right: 0.25rem !important;
}

.me-2 {
  margin-right: 0.5rem !important;
}

.me-3 {
  margin-right: 1rem !important;
}

.me-4 {
  margin-right: 1.5rem !important;
}

.me-5 {
  margin-right: 3rem !important;
}

.me-auto {
  margin-right: auto !important;
}

.mb-0 {
  margin-bottom: 0 !important;
}

.mb-1 {
  margin-bottom: 0.25rem !important;
}

.mb-2 {
  margin-bottom: 0.5rem !important;
}

.mb-3 {
  margin-bottom: 1rem !important;
}

.mb-4 {
  margin-bottom: 1.5rem !important;
}

.mb-5 {
  margin-bottom: 3rem !important;
}

.mb-auto {
  margin-bottom: auto !important;
}

.ms-0 {
  margin-left: 0 !important;
}

.ms-1 {
  margin-left: 0.25rem !important;
}

.ms-2 {
  margin-left: 0.5rem !important;
}

.ms-3 {
  margin-left: 1rem !important;
}

.ms-4 {
  margin-left: 1.5rem !important;
}

.ms-5 {
  margin-left: 3rem !important;
}

.ms-auto {
  margin-left: auto !important;
}

.p-0 {
  padding: 0 !important;
}

.p-1 {
  padding: 0.25rem !important;
}

.p-2 {
  padding: 0.5rem !important;
}

.p-3 {
  padding: 1rem !important;
}

.p-4 {
  padding: 1.5rem !important;
}

.p-5 {
  padding: 3rem !important;
}

.px-0 {
  padding-right: 0 !important;
  padding-left: 0 !important;
}

.px-1 {
  padding-right: 0.25rem !important;
  padding-left: 0.25rem !important;
}

.px-2 {
  padding-right: 0.5rem !important;
  padding-left: 0.5rem !important;
}

.px-3 {
  padding-right: 1rem !important;
  padding-left: 1rem !important;
}

.px-4 {
  padding-right: 1.5rem !important;
  padding-left: 1.5rem !important;
}

.px-5 {
  padding-right: 3rem !important;
  padding-left: 3rem !important;
}

.py-0 {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

.py-1 {
  padding-top: 0.25rem !important;
  padding-bottom: 0.25rem !important;
}

.py-2 {
  padding-top: 0.5rem !important;
  padding-bottom: 0.5rem !important;
}

.py-3 {
  padding-top: 1rem !important;
  padding-bottom: 1rem !important;
}

.py-4 {
  padding-top: 1.5rem !important;
  padding-bottom: 1.5rem !important;
}

.py-5 {
  padding-top: 3rem !important;
  padding-bottom: 3rem !important;
}

.pt-0 {
  padding-top: 0 !important;
}

.pt-1 {
  padding-top: 0.25rem !important;
}

.pt-2 {
  padding-top: 0.5rem !important;
}

.pt-3 {
  padding-top: 1rem !important;
}

.pt-4 {
  padding-top: 1.5rem !important;
}

.pt-5 {
  padding-top: 3rem !important;
}

.pe-0 {
  padding-right: 0 !important;
}

.pe-1 {
  padding-right: 0.25rem !important;
}

.pe-2 {
  padding-right: 0.5rem !important;
}

.pe-3 {
  padding-right: 1rem !important;
}

.pe-4 {
  padding-right: 1.5rem !important;
}

.pe-5 {
  padding-right: 3rem !important;
}

.pb-0 {
  padding-bottom: 0 !important;
}

.pb-1 {
  padding-bottom: 0.25rem !important;
}

.pb-2 {
  padding-bottom: 0.5rem !important;
}

.pb-3 {
  padding-bottom: 1rem !important;
}

.pb-4 {
  padding-bottom: 1.5rem !important;
}

.pb-5 {
  padding-bottom: 3rem !important;
}

.ps-0 {
  padding-left: 0 !important;
}

.ps-1 {
  padding-left: 0.25rem !important;
}

.ps-2 {
  padding-left: 0.5rem !important;
}

.ps-3 {
  padding-left: 1rem !important;
}

.ps-4 {
  padding-left: 1.5rem !important;
}

.ps-5 {
  padding-left: 3rem !important;
}

.gap-0 {
  gap: 0 !important;
}

.gap-1 {
  gap: 0.25rem !important;
}

.gap-2 {
  gap: 0.5rem !important;
}

.gap-3 {
  gap: 1rem !important;
}

.gap-4 {
  gap: 1.5rem !important;
}

.gap-5 {
  gap: 3rem !important;
}

.font-monospace {
  font-family: var(--bs-font-monospace) !important;
}

.fs-1 {
  font-size: calc(1.375rem + 1.5vw) !important;
}

.fs-2 {
  font-size: calc(1.325rem + 0.9vw) !important;
}

.fs-3 {
  font-size: calc(1.3rem + 0.6vw) !important;
}

.fs-4 {
  font-size: calc(1.275rem + 0.3vw) !important;
}

.fs-5 {
  font-size: 1.25rem !important;
}

.fs-6 {
  font-size: 1rem !important;
}

.fst-italic {
  font-style: italic !important;
}

.fst-normal {
  font-style: normal !important;
}

.fw-light {
  font-weight: 300 !important;
}

.fw-lighter {
  font-weight: lighter !important;
}

.fw-normal {
  font-weight: 400 !important;
}

.fw-bold {
  font-weight: 700 !important;
}

.fw-semibold {
  font-weight: 500 !important;
}

.fw-bolder {
  font-weight: bolder !important;
}

.lh-1 {
  line-height: 1 !important;
}

.lh-sm {
  line-height: 1.25 !important;
}

.lh-base {
  line-height: 1.5 !important;
}

.lh-lg {
  line-height: 2 !important;
}

.text-start {
  text-align: left !important;
}

.text-end {
  text-align: right !important;
}

.text-center {
  text-align: center !important;
}

.text-decoration-none {
  text-decoration: none !important;
}

.text-decoration-underline {
  text-decoration: underline !important;
}

.text-decoration-line-through {
  text-decoration: line-through !important;
}

.text-lowercase {
  text-transform: lowercase !important;
}

.text-uppercase {
  text-transform: uppercase !important;
}

.text-capitalize {
  text-transform: capitalize !important;
}

.text-wrap {
  white-space: normal !important;
}

.text-nowrap {
  white-space: nowrap !important;
}

/* rtl:begin:remove */
.text-break {
  word-wrap: break-word !important;
  word-break: break-word !important;
}

/* rtl:end:remove */
.text-primary {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
}

.text-secondary {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
}

.text-success {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
}

.text-info {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
}

.text-warning {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
}

.text-danger {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
}

.text-light {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
}

.text-dark {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
}

.text-black {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
}

.text-white {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
}

.text-body {
  --bs-text-opacity: 1;
  color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;
}

.text-muted {
  --bs-text-opacity: 1;
  color: #6c757d !important;
}

.text-black-50 {
  --bs-text-opacity: 1;
  color: rgba(0, 0, 0, 0.5) !important;
}

.text-white-50 {
  --bs-text-opacity: 1;
  color: rgba(255, 255, 255, 0.5) !important;
}

.text-reset {
  --bs-text-opacity: 1;
  color: inherit !important;
}

.text-opacity-25 {
  --bs-text-opacity: 0.25;
}

.text-opacity-50 {
  --bs-text-opacity: 0.5;
}

.text-opacity-75 {
  --bs-text-opacity: 0.75;
}

.text-opacity-100 {
  --bs-text-opacity: 1;
}

.bg-primary {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
}

.bg-secondary {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;
}

.bg-success {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
}

.bg-info {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
}

.bg-warning {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
}

.bg-danger {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
}

.bg-light {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
}

.bg-dark {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
}

.bg-black {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
}

.bg-white {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
}

.bg-body {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
}

.bg-transparent {
  --bs-bg-opacity: 1;
  background-color: transparent !important;
}

.bg-opacity-10 {
  --bs-bg-opacity: 0.1;
}

.bg-opacity-25 {
  --bs-bg-opacity: 0.25;
}

.bg-opacity-50 {
  --bs-bg-opacity: 0.5;
}

.bg-opacity-75 {
  --bs-bg-opacity: 0.75;
}

.bg-opacity-100 {
  --bs-bg-opacity: 1;
}

.bg-gradient {
  background-image: var(--bs-gradient) !important;
}

.user-select-all {
  user-select: all !important;
}

.user-select-auto {
  user-select: auto !important;
}

.user-select-none {
  user-select: none !important;
}

.pe-none {
  pointer-events: none !important;
}

.pe-auto {
  pointer-events: auto !important;
}

.rounded {
  border-radius: var(--bs-border-radius) !important;
}

.rounded-0 {
  border-radius: 0 !important;
}

.rounded-1 {
  border-radius: var(--bs-border-radius-sm) !important;
}

.rounded-2 {
  border-radius: var(--bs-border-radius) !important;
}

.rounded-3 {
  border-radius: var(--bs-border-radius-lg) !important;
}

.rounded-4 {
  border-radius: var(--bs-border-radius-xl) !important;
}

.rounded-5 {
  border-radius: var(--bs-border-radius-2xl) !important;
}

.rounded-circle {
  border-radius: 50% !important;
}

.rounded-pill {
  border-radius: var(--bs-border-radius-pill) !important;
}

.rounded-top {
  border-top-left-radius: var(--bs-border-radius) !important;
  border-top-right-radius: var(--bs-border-radius) !important;
}

.rounded-end {
  border-top-right-radius: var(--bs-border-radius) !important;
  border-bottom-right-radius: var(--bs-border-radius) !important;
}

.rounded-bottom {
  border-bottom-right-radius: var(--bs-border-radius) !important;
  border-bottom-left-radius: var(--bs-border-radius) !important;
}

.rounded-start {
  border-bottom-left-radius: var(--bs-border-radius) !important;
  border-top-left-radius: var(--bs-border-radius) !important;
}

.visible {
  visibility: visible !important;
}

.invisible {
  visibility: hidden !important;
}

@media (min-width: 576px) {
  .float-sm-start {
    float: left !important;
  }
  .float-sm-end {
    float: right !important;
  }
  .float-sm-none {
    float: none !important;
  }
  .d-sm-inline {
    display: inline !important;
  }
  .d-sm-inline-block {
    display: inline-block !important;
  }
  .d-sm-block {
    display: block !important;
  }
  .d-sm-grid {
    display: grid !important;
  }
  .d-sm-table {
    display: table !important;
  }
  .d-sm-table-row {
    display: table-row !important;
  }
  .d-sm-table-cell {
    display: table-cell !important;
  }
  .d-sm-flex {
    display: flex !important;
  }
  .d-sm-inline-flex {
    display: inline-flex !important;
  }
  .d-sm-none {
    display: none !important;
  }
  .flex-sm-fill {
    flex: 1 1 auto !important;
  }
  .flex-sm-row {
    flex-direction: row !important;
  }
  .flex-sm-column {
    flex-direction: column !important;
  }
  .flex-sm-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-sm-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-sm-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-sm-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-sm-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-sm-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-sm-wrap {
    flex-wrap: wrap !important;
  }
  .flex-sm-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-sm-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-sm-start {
    justify-content: flex-start !important;
  }
  .justify-content-sm-end {
    justify-content: flex-end !important;
  }
  .justify-content-sm-center {
    justify-content: center !important;
  }
  .justify-content-sm-between {
    justify-content: space-between !important;
  }
  .justify-content-sm-around {
    justify-content: space-around !important;
  }
  .justify-content-sm-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-sm-start {
    align-items: flex-start !important;
  }
  .align-items-sm-end {
    align-items: flex-end !important;
  }
  .align-items-sm-center {
    align-items: center !important;
  }
  .align-items-sm-baseline {
    align-items: baseline !important;
  }
  .align-items-sm-stretch {
    align-items: stretch !important;
  }
  .align-content-sm-start {
    align-content: flex-start !important;
  }
  .align-content-sm-end {
    align-content: flex-end !important;
  }
  .align-content-sm-center {
    align-content: center !important;
  }
  .align-content-sm-between {
    align-content: space-between !important;
  }
  .align-content-sm-around {
    align-content: space-around !important;
  }
  .align-content-sm-stretch {
    align-content: stretch !important;
  }
  .align-self-sm-auto {
    align-self: auto !important;
  }
  .align-self-sm-start {
    align-self: flex-start !important;
  }
  .align-self-sm-end {
    align-self: flex-end !important;
  }
  .align-self-sm-center {
    align-self: center !important;
  }
  .align-self-sm-baseline {
    align-self: baseline !important;
  }
  .align-self-sm-stretch {
    align-self: stretch !important;
  }
  .order-sm-first {
    order: -1 !important;
  }
  .order-sm-0 {
    order: 0 !important;
  }
  .order-sm-1 {
    order: 1 !important;
  }
  .order-sm-2 {
    order: 2 !important;
  }
  .order-sm-3 {
    order: 3 !important;
  }
  .order-sm-4 {
    order: 4 !important;
  }
  .order-sm-5 {
    order: 5 !important;
  }
  .order-sm-last {
    order: 6 !important;
  }
  .m-sm-0 {
    margin: 0 !important;
  }
  .m-sm-1 {
    margin: 0.25rem !important;
  }
  .m-sm-2 {
    margin: 0.5rem !important;
  }
  .m-sm-3 {
    margin: 1rem !important;
  }
  .m-sm-4 {
    margin: 1.5rem !important;
  }
  .m-sm-5 {
    margin: 3rem !important;
  }
  .m-sm-auto {
    margin: auto !important;
  }
  .mx-sm-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-sm-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-sm-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-sm-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-sm-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-sm-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-sm-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-sm-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-sm-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-sm-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-sm-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-sm-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-sm-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-sm-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-sm-0 {
    margin-top: 0 !important;
  }
  .mt-sm-1 {
    margin-top: 0.25rem !important;
  }
  .mt-sm-2 {
    margin-top: 0.5rem !important;
  }
  .mt-sm-3 {
    margin-top: 1rem !important;
  }
  .mt-sm-4 {
    margin-top: 1.5rem !important;
  }
  .mt-sm-5 {
    margin-top: 3rem !important;
  }
  .mt-sm-auto {
    margin-top: auto !important;
  }
  .me-sm-0 {
    margin-right: 0 !important;
  }
  .me-sm-1 {
    margin-right: 0.25rem !important;
  }
  .me-sm-2 {
    margin-right: 0.5rem !important;
  }
  .me-sm-3 {
    margin-right: 1rem !important;
  }
  .me-sm-4 {
    margin-right: 1.5rem !important;
  }
  .me-sm-5 {
    margin-right: 3rem !important;
  }
  .me-sm-auto {
    margin-right: auto !important;
  }
  .mb-sm-0 {
    margin-bottom: 0 !important;
  }
  .mb-sm-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-sm-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-sm-3 {
    margin-bottom: 1rem !important;
  }
  .mb-sm-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-sm-5 {
    margin-bottom: 3rem !important;
  }
  .mb-sm-auto {
    margin-bottom: auto !important;
  }
  .ms-sm-0 {
    margin-left: 0 !important;
  }
  .ms-sm-1 {
    margin-left: 0.25rem !important;
  }
  .ms-sm-2 {
    margin-left: 0.5rem !important;
  }
  .ms-sm-3 {
    margin-left: 1rem !important;
  }
  .ms-sm-4 {
    margin-left: 1.5rem !important;
  }
  .ms-sm-5 {
    margin-left: 3rem !important;
  }
  .ms-sm-auto {
    margin-left: auto !important;
  }
  .p-sm-0 {
    padding: 0 !important;
  }
  .p-sm-1 {
    padding: 0.25rem !important;
  }
  .p-sm-2 {
    padding: 0.5rem !important;
  }
  .p-sm-3 {
    padding: 1rem !important;
  }
  .p-sm-4 {
    padding: 1.5rem !important;
  }
  .p-sm-5 {
    padding: 3rem !important;
  }
  .px-sm-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-sm-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-sm-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-sm-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-sm-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-sm-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-sm-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-sm-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-sm-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-sm-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-sm-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-sm-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-sm-0 {
    padding-top: 0 !important;
  }
  .pt-sm-1 {
    padding-top: 0.25rem !important;
  }
  .pt-sm-2 {
    padding-top: 0.5rem !important;
  }
  .pt-sm-3 {
    padding-top: 1rem !important;
  }
  .pt-sm-4 {
    padding-top: 1.5rem !important;
  }
  .pt-sm-5 {
    padding-top: 3rem !important;
  }
  .pe-sm-0 {
    padding-right: 0 !important;
  }
  .pe-sm-1 {
    padding-right: 0.25rem !important;
  }
  .pe-sm-2 {
    padding-right: 0.5rem !important;
  }
  .pe-sm-3 {
    padding-right: 1rem !important;
  }
  .pe-sm-4 {
    padding-right: 1.5rem !important;
  }
  .pe-sm-5 {
    padding-right: 3rem !important;
  }
  .pb-sm-0 {
    padding-bottom: 0 !important;
  }
  .pb-sm-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-sm-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-sm-3 {
    padding-bottom: 1rem !important;
  }
  .pb-sm-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-sm-5 {
    padding-bottom: 3rem !important;
  }
  .ps-sm-0 {
    padding-left: 0 !important;
  }
  .ps-sm-1 {
    padding-left: 0.25rem !important;
  }
  .ps-sm-2 {
    padding-left: 0.5rem !important;
  }
  .ps-sm-3 {
    padding-left: 1rem !important;
  }
  .ps-sm-4 {
    padding-left: 1.5rem !important;
  }
  .ps-sm-5 {
    padding-left: 3rem !important;
  }
  .gap-sm-0 {
    gap: 0 !important;
  }
  .gap-sm-1 {
    gap: 0.25rem !important;
  }
  .gap-sm-2 {
    gap: 0.5rem !important;
  }
  .gap-sm-3 {
    gap: 1rem !important;
  }
  .gap-sm-4 {
    gap: 1.5rem !important;
  }
  .gap-sm-5 {
    gap: 3rem !important;
  }
  .text-sm-start {
    text-align: left !important;
  }
  .text-sm-end {
    text-align: right !important;
  }
  .text-sm-center {
    text-align: center !important;
  }
}
@media (min-width: 768px) {
  .float-md-start {
    float: left !important;
  }
  .float-md-end {
    float: right !important;
  }
  .float-md-none {
    float: none !important;
  }
  .d-md-inline {
    display: inline !important;
  }
  .d-md-inline-block {
    display: inline-block !important;
  }
  .d-md-block {
    display: block !important;
  }
  .d-md-grid {
    display: grid !important;
  }
  .d-md-table {
    display: table !important;
  }
  .d-md-table-row {
    display: table-row !important;
  }
  .d-md-table-cell {
    display: table-cell !important;
  }
  .d-md-flex {
    display: flex !important;
  }
  .d-md-inline-flex {
    display: inline-flex !important;
  }
  .d-md-none {
    display: none !important;
  }
  .flex-md-fill {
    flex: 1 1 auto !important;
  }
  .flex-md-row {
    flex-direction: row !important;
  }
  .flex-md-column {
    flex-direction: column !important;
  }
  .flex-md-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-md-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-md-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-md-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-md-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-md-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-md-wrap {
    flex-wrap: wrap !important;
  }
  .flex-md-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-md-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-md-start {
    justify-content: flex-start !important;
  }
  .justify-content-md-end {
    justify-content: flex-end !important;
  }
  .justify-content-md-center {
    justify-content: center !important;
  }
  .justify-content-md-between {
    justify-content: space-between !important;
  }
  .justify-content-md-around {
    justify-content: space-around !important;
  }
  .justify-content-md-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-md-start {
    align-items: flex-start !important;
  }
  .align-items-md-end {
    align-items: flex-end !important;
  }
  .align-items-md-center {
    align-items: center !important;
  }
  .align-items-md-baseline {
    align-items: baseline !important;
  }
  .align-items-md-stretch {
    align-items: stretch !important;
  }
  .align-content-md-start {
    align-content: flex-start !important;
  }
  .align-content-md-end {
    align-content: flex-end !important;
  }
  .align-content-md-center {
    align-content: center !important;
  }
  .align-content-md-between {
    align-content: space-between !important;
  }
  .align-content-md-around {
    align-content: space-around !important;
  }
  .align-content-md-stretch {
    align-content: stretch !important;
  }
  .align-self-md-auto {
    align-self: auto !important;
  }
  .align-self-md-start {
    align-self: flex-start !important;
  }
  .align-self-md-end {
    align-self: flex-end !important;
  }
  .align-self-md-center {
    align-self: center !important;
  }
  .align-self-md-baseline {
    align-self: baseline !important;
  }
  .align-self-md-stretch {
    align-self: stretch !important;
  }
  .order-md-first {
    order: -1 !important;
  }
  .order-md-0 {
    order: 0 !important;
  }
  .order-md-1 {
    order: 1 !important;
  }
  .order-md-2 {
    order: 2 !important;
  }
  .order-md-3 {
    order: 3 !important;
  }
  .order-md-4 {
    order: 4 !important;
  }
  .order-md-5 {
    order: 5 !important;
  }
  .order-md-last {
    order: 6 !important;
  }
  .m-md-0 {
    margin: 0 !important;
  }
  .m-md-1 {
    margin: 0.25rem !important;
  }
  .m-md-2 {
    margin: 0.5rem !important;
  }
  .m-md-3 {
    margin: 1rem !important;
  }
  .m-md-4 {
    margin: 1.5rem !important;
  }
  .m-md-5 {
    margin: 3rem !important;
  }
  .m-md-auto {
    margin: auto !important;
  }
  .mx-md-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-md-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-md-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-md-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-md-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-md-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-md-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-md-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-md-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-md-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-md-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-md-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-md-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-md-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-md-0 {
    margin-top: 0 !important;
  }
  .mt-md-1 {
    margin-top: 0.25rem !important;
  }
  .mt-md-2 {
    margin-top: 0.5rem !important;
  }
  .mt-md-3 {
    margin-top: 1rem !important;
  }
  .mt-md-4 {
    margin-top: 1.5rem !important;
  }
  .mt-md-5 {
    margin-top: 3rem !important;
  }
  .mt-md-auto {
    margin-top: auto !important;
  }
  .me-md-0 {
    margin-right: 0 !important;
  }
  .me-md-1 {
    margin-right: 0.25rem !important;
  }
  .me-md-2 {
    margin-right: 0.5rem !important;
  }
  .me-md-3 {
    margin-right: 1rem !important;
  }
  .me-md-4 {
    margin-right: 1.5rem !important;
  }
  .me-md-5 {
    margin-right: 3rem !important;
  }
  .me-md-auto {
    margin-right: auto !important;
  }
  .mb-md-0 {
    margin-bottom: 0 !important;
  }
  .mb-md-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-md-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-md-3 {
    margin-bottom: 1rem !important;
  }
  .mb-md-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-md-5 {
    margin-bottom: 3rem !important;
  }
  .mb-md-auto {
    margin-bottom: auto !important;
  }
  .ms-md-0 {
    margin-left: 0 !important;
  }
  .ms-md-1 {
    margin-left: 0.25rem !important;
  }
  .ms-md-2 {
    margin-left: 0.5rem !important;
  }
  .ms-md-3 {
    margin-left: 1rem !important;
  }
  .ms-md-4 {
    margin-left: 1.5rem !important;
  }
  .ms-md-5 {
    margin-left: 3rem !important;
  }
  .ms-md-auto {
    margin-left: auto !important;
  }
  .p-md-0 {
    padding: 0 !important;
  }
  .p-md-1 {
    padding: 0.25rem !important;
  }
  .p-md-2 {
    padding: 0.5rem !important;
  }
  .p-md-3 {
    padding: 1rem !important;
  }
  .p-md-4 {
    padding: 1.5rem !important;
  }
  .p-md-5 {
    padding: 3rem !important;
  }
  .px-md-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-md-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-md-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-md-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-md-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-md-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-md-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-md-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-md-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-md-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-md-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-md-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-md-0 {
    padding-top: 0 !important;
  }
  .pt-md-1 {
    padding-top: 0.25rem !important;
  }
  .pt-md-2 {
    padding-top: 0.5rem !important;
  }
  .pt-md-3 {
    padding-top: 1rem !important;
  }
  .pt-md-4 {
    padding-top: 1.5rem !important;
  }
  .pt-md-5 {
    padding-top: 3rem !important;
  }
  .pe-md-0 {
    padding-right: 0 !important;
  }
  .pe-md-1 {
    padding-right: 0.25rem !important;
  }
  .pe-md-2 {
    padding-right: 0.5rem !important;
  }
  .pe-md-3 {
    padding-right: 1rem !important;
  }
  .pe-md-4 {
    padding-right: 1.5rem !important;
  }
  .pe-md-5 {
    padding-right: 3rem !important;
  }
  .pb-md-0 {
    padding-bottom: 0 !important;
  }
  .pb-md-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-md-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-md-3 {
    padding-bottom: 1rem !important;
  }
  .pb-md-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-md-5 {
    padding-bottom: 3rem !important;
  }
  .ps-md-0 {
    padding-left: 0 !important;
  }
  .ps-md-1 {
    padding-left: 0.25rem !important;
  }
  .ps-md-2 {
    padding-left: 0.5rem !important;
  }
  .ps-md-3 {
    padding-left: 1rem !important;
  }
  .ps-md-4 {
    padding-left: 1.5rem !important;
  }
  .ps-md-5 {
    padding-left: 3rem !important;
  }
  .gap-md-0 {
    gap: 0 !important;
  }
  .gap-md-1 {
    gap: 0.25rem !important;
  }
  .gap-md-2 {
    gap: 0.5rem !important;
  }
  .gap-md-3 {
    gap: 1rem !important;
  }
  .gap-md-4 {
    gap: 1.5rem !important;
  }
  .gap-md-5 {
    gap: 3rem !important;
  }
  .text-md-start {
    text-align: left !important;
  }
  .text-md-end {
    text-align: right !important;
  }
  .text-md-center {
    text-align: center !important;
  }
}
@media (min-width: 992px) {
  .float-lg-start {
    float: left !important;
  }
  .float-lg-end {
    float: right !important;
  }
  .float-lg-none {
    float: none !important;
  }
  .d-lg-inline {
    display: inline !important;
  }
  .d-lg-inline-block {
    display: inline-block !important;
  }
  .d-lg-block {
    display: block !important;
  }
  .d-lg-grid {
    display: grid !important;
  }
  .d-lg-table {
    display: table !important;
  }
  .d-lg-table-row {
    display: table-row !important;
  }
  .d-lg-table-cell {
    display: table-cell !important;
  }
  .d-lg-flex {
    display: flex !important;
  }
  .d-lg-inline-flex {
    display: inline-flex !important;
  }
  .d-lg-none {
    display: none !important;
  }
  .flex-lg-fill {
    flex: 1 1 auto !important;
  }
  .flex-lg-row {
    flex-direction: row !important;
  }
  .flex-lg-column {
    flex-direction: column !important;
  }
  .flex-lg-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-lg-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-lg-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-lg-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-lg-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-lg-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-lg-wrap {
    flex-wrap: wrap !important;
  }
  .flex-lg-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-lg-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-lg-start {
    justify-content: flex-start !important;
  }
  .justify-content-lg-end {
    justify-content: flex-end !important;
  }
  .justify-content-lg-center {
    justify-content: center !important;
  }
  .justify-content-lg-between {
    justify-content: space-between !important;
  }
  .justify-content-lg-around {
    justify-content: space-around !important;
  }
  .justify-content-lg-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-lg-start {
    align-items: flex-start !important;
  }
  .align-items-lg-end {
    align-items: flex-end !important;
  }
  .align-items-lg-center {
    align-items: center !important;
  }
  .align-items-lg-baseline {
    align-items: baseline !important;
  }
  .align-items-lg-stretch {
    align-items: stretch !important;
  }
  .align-content-lg-start {
    align-content: flex-start !important;
  }
  .align-content-lg-end {
    align-content: flex-end !important;
  }
  .align-content-lg-center {
    align-content: center !important;
  }
  .align-content-lg-between {
    align-content: space-between !important;
  }
  .align-content-lg-around {
    align-content: space-around !important;
  }
  .align-content-lg-stretch {
    align-content: stretch !important;
  }
  .align-self-lg-auto {
    align-self: auto !important;
  }
  .align-self-lg-start {
    align-self: flex-start !important;
  }
  .align-self-lg-end {
    align-self: flex-end !important;
  }
  .align-self-lg-center {
    align-self: center !important;
  }
  .align-self-lg-baseline {
    align-self: baseline !important;
  }
  .align-self-lg-stretch {
    align-self: stretch !important;
  }
  .order-lg-first {
    order: -1 !important;
  }
  .order-lg-0 {
    order: 0 !important;
  }
  .order-lg-1 {
    order: 1 !important;
  }
  .order-lg-2 {
    order: 2 !important;
  }
  .order-lg-3 {
    order: 3 !important;
  }
  .order-lg-4 {
    order: 4 !important;
  }
  .order-lg-5 {
    order: 5 !important;
  }
  .order-lg-last {
    order: 6 !important;
  }
  .m-lg-0 {
    margin: 0 !important;
  }
  .m-lg-1 {
    margin: 0.25rem !important;
  }
  .m-lg-2 {
    margin: 0.5rem !important;
  }
  .m-lg-3 {
    margin: 1rem !important;
  }
  .m-lg-4 {
    margin: 1.5rem !important;
  }
  .m-lg-5 {
    margin: 3rem !important;
  }
  .m-lg-auto {
    margin: auto !important;
  }
  .mx-lg-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-lg-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-lg-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-lg-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-lg-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-lg-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-lg-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-lg-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-lg-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-lg-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-lg-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-lg-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-lg-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-lg-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-lg-0 {
    margin-top: 0 !important;
  }
  .mt-lg-1 {
    margin-top: 0.25rem !important;
  }
  .mt-lg-2 {
    margin-top: 0.5rem !important;
  }
  .mt-lg-3 {
    margin-top: 1rem !important;
  }
  .mt-lg-4 {
    margin-top: 1.5rem !important;
  }
  .mt-lg-5 {
    margin-top: 3rem !important;
  }
  .mt-lg-auto {
    margin-top: auto !important;
  }
  .me-lg-0 {
    margin-right: 0 !important;
  }
  .me-lg-1 {
    margin-right: 0.25rem !important;
  }
  .me-lg-2 {
    margin-right: 0.5rem !important;
  }
  .me-lg-3 {
    margin-right: 1rem !important;
  }
  .me-lg-4 {
    margin-right: 1.5rem !important;
  }
  .me-lg-5 {
    margin-right: 3rem !important;
  }
  .me-lg-auto {
    margin-right: auto !important;
  }
  .mb-lg-0 {
    margin-bottom: 0 !important;
  }
  .mb-lg-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-lg-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-lg-3 {
    margin-bottom: 1rem !important;
  }
  .mb-lg-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-lg-5 {
    margin-bottom: 3rem !important;
  }
  .mb-lg-auto {
    margin-bottom: auto !important;
  }
  .ms-lg-0 {
    margin-left: 0 !important;
  }
  .ms-lg-1 {
    margin-left: 0.25rem !important;
  }
  .ms-lg-2 {
    margin-left: 0.5rem !important;
  }
  .ms-lg-3 {
    margin-left: 1rem !important;
  }
  .ms-lg-4 {
    margin-left: 1.5rem !important;
  }
  .ms-lg-5 {
    margin-left: 3rem !important;
  }
  .ms-lg-auto {
    margin-left: auto !important;
  }
  .p-lg-0 {
    padding: 0 !important;
  }
  .p-lg-1 {
    padding: 0.25rem !important;
  }
  .p-lg-2 {
    padding: 0.5rem !important;
  }
  .p-lg-3 {
    padding: 1rem !important;
  }
  .p-lg-4 {
    padding: 1.5rem !important;
  }
  .p-lg-5 {
    padding: 3rem !important;
  }
  .px-lg-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-lg-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-lg-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-lg-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-lg-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-lg-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-lg-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-lg-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-lg-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-lg-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-lg-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-lg-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-lg-0 {
    padding-top: 0 !important;
  }
  .pt-lg-1 {
    padding-top: 0.25rem !important;
  }
  .pt-lg-2 {
    padding-top: 0.5rem !important;
  }
  .pt-lg-3 {
    padding-top: 1rem !important;
  }
  .pt-lg-4 {
    padding-top: 1.5rem !important;
  }
  .pt-lg-5 {
    padding-top: 3rem !important;
  }
  .pe-lg-0 {
    padding-right: 0 !important;
  }
  .pe-lg-1 {
    padding-right: 0.25rem !important;
  }
  .pe-lg-2 {
    padding-right: 0.5rem !important;
  }
  .pe-lg-3 {
    padding-right: 1rem !important;
  }
  .pe-lg-4 {
    padding-right: 1.5rem !important;
  }
  .pe-lg-5 {
    padding-right: 3rem !important;
  }
  .pb-lg-0 {
    padding-bottom: 0 !important;
  }
  .pb-lg-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-lg-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-lg-3 {
    padding-bottom: 1rem !important;
  }
  .pb-lg-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-lg-5 {
    padding-bottom: 3rem !important;
  }
  .ps-lg-0 {
    padding-left: 0 !important;
  }
  .ps-lg-1 {
    padding-left: 0.25rem !important;
  }
  .ps-lg-2 {
    padding-left: 0.5rem !important;
  }
  .ps-lg-3 {
    padding-left: 1rem !important;
  }
  .ps-lg-4 {
    padding-left: 1.5rem !important;
  }
  .ps-lg-5 {
    padding-left: 3rem !important;
  }
  .gap-lg-0 {
    gap: 0 !important;
  }
  .gap-lg-1 {
    gap: 0.25rem !important;
  }
  .gap-lg-2 {
    gap: 0.5rem !important;
  }
  .gap-lg-3 {
    gap: 1rem !important;
  }
  .gap-lg-4 {
    gap: 1.5rem !important;
  }
  .gap-lg-5 {
    gap: 3rem !important;
  }
  .text-lg-start {
    text-align: left !important;
  }
  .text-lg-end {
    text-align: right !important;
  }
  .text-lg-center {
    text-align: center !important;
  }
}
@media (min-width: 1200px) {
  .float-xl-start {
    float: left !important;
  }
  .float-xl-end {
    float: right !important;
  }
  .float-xl-none {
    float: none !important;
  }
  .d-xl-inline {
    display: inline !important;
  }
  .d-xl-inline-block {
    display: inline-block !important;
  }
  .d-xl-block {
    display: block !important;
  }
  .d-xl-grid {
    display: grid !important;
  }
  .d-xl-table {
    display: table !important;
  }
  .d-xl-table-row {
    display: table-row !important;
  }
  .d-xl-table-cell {
    display: table-cell !important;
  }
  .d-xl-flex {
    display: flex !important;
  }
  .d-xl-inline-flex {
    display: inline-flex !important;
  }
  .d-xl-none {
    display: none !important;
  }
  .flex-xl-fill {
    flex: 1 1 auto !important;
  }
  .flex-xl-row {
    flex-direction: row !important;
  }
  .flex-xl-column {
    flex-direction: column !important;
  }
  .flex-xl-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-xl-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-xl-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-xl-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-xl-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-xl-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-xl-wrap {
    flex-wrap: wrap !important;
  }
  .flex-xl-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-xl-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-xl-start {
    justify-content: flex-start !important;
  }
  .justify-content-xl-end {
    justify-content: flex-end !important;
  }
  .justify-content-xl-center {
    justify-content: center !important;
  }
  .justify-content-xl-between {
    justify-content: space-between !important;
  }
  .justify-content-xl-around {
    justify-content: space-around !important;
  }
  .justify-content-xl-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-xl-start {
    align-items: flex-start !important;
  }
  .align-items-xl-end {
    align-items: flex-end !important;
  }
  .align-items-xl-center {
    align-items: center !important;
  }
  .align-items-xl-baseline {
    align-items: baseline !important;
  }
  .align-items-xl-stretch {
    align-items: stretch !important;
  }
  .align-content-xl-start {
    align-content: flex-start !important;
  }
  .align-content-xl-end {
    align-content: flex-end !important;
  }
  .align-content-xl-center {
    align-content: center !important;
  }
  .align-content-xl-between {
    align-content: space-between !important;
  }
  .align-content-xl-around {
    align-content: space-around !important;
  }
  .align-content-xl-stretch {
    align-content: stretch !important;
  }
  .align-self-xl-auto {
    align-self: auto !important;
  }
  .align-self-xl-start {
    align-self: flex-start !important;
  }
  .align-self-xl-end {
    align-self: flex-end !important;
  }
  .align-self-xl-center {
    align-self: center !important;
  }
  .align-self-xl-baseline {
    align-self: baseline !important;
  }
  .align-self-xl-stretch {
    align-self: stretch !important;
  }
  .order-xl-first {
    order: -1 !important;
  }
  .order-xl-0 {
    order: 0 !important;
  }
  .order-xl-1 {
    order: 1 !important;
  }
  .order-xl-2 {
    order: 2 !important;
  }
  .order-xl-3 {
    order: 3 !important;
  }
  .order-xl-4 {
    order: 4 !important;
  }
  .order-xl-5 {
    order: 5 !important;
  }
  .order-xl-last {
    order: 6 !important;
  }
  .m-xl-0 {
    margin: 0 !important;
  }
  .m-xl-1 {
    margin: 0.25rem !important;
  }
  .m-xl-2 {
    margin: 0.5rem !important;
  }
  .m-xl-3 {
    margin: 1rem !important;
  }
  .m-xl-4 {
    margin: 1.5rem !important;
  }
  .m-xl-5 {
    margin: 3rem !important;
  }
  .m-xl-auto {
    margin: auto !important;
  }
  .mx-xl-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-xl-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-xl-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-xl-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-xl-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-xl-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-xl-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-xl-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-xl-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-xl-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-xl-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-xl-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-xl-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-xl-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-xl-0 {
    margin-top: 0 !important;
  }
  .mt-xl-1 {
    margin-top: 0.25rem !important;
  }
  .mt-xl-2 {
    margin-top: 0.5rem !important;
  }
  .mt-xl-3 {
    margin-top: 1rem !important;
  }
  .mt-xl-4 {
    margin-top: 1.5rem !important;
  }
  .mt-xl-5 {
    margin-top: 3rem !important;
  }
  .mt-xl-auto {
    margin-top: auto !important;
  }
  .me-xl-0 {
    margin-right: 0 !important;
  }
  .me-xl-1 {
    margin-right: 0.25rem !important;
  }
  .me-xl-2 {
    margin-right: 0.5rem !important;
  }
  .me-xl-3 {
    margin-right: 1rem !important;
  }
  .me-xl-4 {
    margin-right: 1.5rem !important;
  }
  .me-xl-5 {
    margin-right: 3rem !important;
  }
  .me-xl-auto {
    margin-right: auto !important;
  }
  .mb-xl-0 {
    margin-bottom: 0 !important;
  }
  .mb-xl-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-xl-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-xl-3 {
    margin-bottom: 1rem !important;
  }
  .mb-xl-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-xl-5 {
    margin-bottom: 3rem !important;
  }
  .mb-xl-auto {
    margin-bottom: auto !important;
  }
  .ms-xl-0 {
    margin-left: 0 !important;
  }
  .ms-xl-1 {
    margin-left: 0.25rem !important;
  }
  .ms-xl-2 {
    margin-left: 0.5rem !important;
  }
  .ms-xl-3 {
    margin-left: 1rem !important;
  }
  .ms-xl-4 {
    margin-left: 1.5rem !important;
  }
  .ms-xl-5 {
    margin-left: 3rem !important;
  }
  .ms-xl-auto {
    margin-left: auto !important;
  }
  .p-xl-0 {
    padding: 0 !important;
  }
  .p-xl-1 {
    padding: 0.25rem !important;
  }
  .p-xl-2 {
    padding: 0.5rem !important;
  }
  .p-xl-3 {
    padding: 1rem !important;
  }
  .p-xl-4 {
    padding: 1.5rem !important;
  }
  .p-xl-5 {
    padding: 3rem !important;
  }
  .px-xl-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-xl-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-xl-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-xl-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-xl-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-xl-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-xl-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-xl-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-xl-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-xl-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-xl-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-xl-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-xl-0 {
    padding-top: 0 !important;
  }
  .pt-xl-1 {
    padding-top: 0.25rem !important;
  }
  .pt-xl-2 {
    padding-top: 0.5rem !important;
  }
  .pt-xl-3 {
    padding-top: 1rem !important;
  }
  .pt-xl-4 {
    padding-top: 1.5rem !important;
  }
  .pt-xl-5 {
    padding-top: 3rem !important;
  }
  .pe-xl-0 {
    padding-right: 0 !important;
  }
  .pe-xl-1 {
    padding-right: 0.25rem !important;
  }
  .pe-xl-2 {
    padding-right: 0.5rem !important;
  }
  .pe-xl-3 {
    padding-right: 1rem !important;
  }
  .pe-xl-4 {
    padding-right: 1.5rem !important;
  }
  .pe-xl-5 {
    padding-right: 3rem !important;
  }
  .pb-xl-0 {
    padding-bottom: 0 !important;
  }
  .pb-xl-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-xl-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-xl-3 {
    padding-bottom: 1rem !important;
  }
  .pb-xl-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-xl-5 {
    padding-bottom: 3rem !important;
  }
  .ps-xl-0 {
    padding-left: 0 !important;
  }
  .ps-xl-1 {
    padding-left: 0.25rem !important;
  }
  .ps-xl-2 {
    padding-left: 0.5rem !important;
  }
  .ps-xl-3 {
    padding-left: 1rem !important;
  }
  .ps-xl-4 {
    padding-left: 1.5rem !important;
  }
  .ps-xl-5 {
    padding-left: 3rem !important;
  }
  .gap-xl-0 {
    gap: 0 !important;
  }
  .gap-xl-1 {
    gap: 0.25rem !important;
  }
  .gap-xl-2 {
    gap: 0.5rem !important;
  }
  .gap-xl-3 {
    gap: 1rem !important;
  }
  .gap-xl-4 {
    gap: 1.5rem !important;
  }
  .gap-xl-5 {
    gap: 3rem !important;
  }
  .text-xl-start {
    text-align: left !important;
  }
  .text-xl-end {
    text-align: right !important;
  }
  .text-xl-center {
    text-align: center !important;
  }
}
@media (min-width: 1400px) {
  .float-xxl-start {
    float: left !important;
  }
  .float-xxl-end {
    float: right !important;
  }
  .float-xxl-none {
    float: none !important;
  }
  .d-xxl-inline {
    display: inline !important;
  }
  .d-xxl-inline-block {
    display: inline-block !important;
  }
  .d-xxl-block {
    display: block !important;
  }
  .d-xxl-grid {
    display: grid !important;
  }
  .d-xxl-table {
    display: table !important;
  }
  .d-xxl-table-row {
    display: table-row !important;
  }
  .d-xxl-table-cell {
    display: table-cell !important;
  }
  .d-xxl-flex {
    display: flex !important;
  }
  .d-xxl-inline-flex {
    display: inline-flex !important;
  }
  .d-xxl-none {
    display: none !important;
  }
  .flex-xxl-fill {
    flex: 1 1 auto !important;
  }
  .flex-xxl-row {
    flex-direction: row !important;
  }
  .flex-xxl-column {
    flex-direction: column !important;
  }
  .flex-xxl-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-xxl-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-xxl-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-xxl-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-xxl-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-xxl-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-xxl-wrap {
    flex-wrap: wrap !important;
  }
  .flex-xxl-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-xxl-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-xxl-start {
    justify-content: flex-start !important;
  }
  .justify-content-xxl-end {
    justify-content: flex-end !important;
  }
  .justify-content-xxl-center {
    justify-content: center !important;
  }
  .justify-content-xxl-between {
    justify-content: space-between !important;
  }
  .justify-content-xxl-around {
    justify-content: space-around !important;
  }
  .justify-content-xxl-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-xxl-start {
    align-items: flex-start !important;
  }
  .align-items-xxl-end {
    align-items: flex-end !important;
  }
  .align-items-xxl-center {
    align-items: center !important;
  }
  .align-items-xxl-baseline {
    align-items: baseline !important;
  }
  .align-items-xxl-stretch {
    align-items: stretch !important;
  }
  .align-content-xxl-start {
    align-content: flex-start !important;
  }
  .align-content-xxl-end {
    align-content: flex-end !important;
  }
  .align-content-xxl-center {
    align-content: center !important;
  }
  .align-content-xxl-between {
    align-content: space-between !important;
  }
  .align-content-xxl-around {
    align-content: space-around !important;
  }
  .align-content-xxl-stretch {
    align-content: stretch !important;
  }
  .align-self-xxl-auto {
    align-self: auto !important;
  }
  .align-self-xxl-start {
    align-self: flex-start !important;
  }
  .align-self-xxl-end {
    align-self: flex-end !important;
  }
  .align-self-xxl-center {
    align-self: center !important;
  }
  .align-self-xxl-baseline {
    align-self: baseline !important;
  }
  .align-self-xxl-stretch {
    align-self: stretch !important;
  }
  .order-xxl-first {
    order: -1 !important;
  }
  .order-xxl-0 {
    order: 0 !important;
  }
  .order-xxl-1 {
    order: 1 !important;
  }
  .order-xxl-2 {
    order: 2 !important;
  }
  .order-xxl-3 {
    order: 3 !important;
  }
  .order-xxl-4 {
    order: 4 !important;
  }
  .order-xxl-5 {
    order: 5 !important;
  }
  .order-xxl-last {
    order: 6 !important;
  }
  .m-xxl-0 {
    margin: 0 !important;
  }
  .m-xxl-1 {
    margin: 0.25rem !important;
  }
  .m-xxl-2 {
    margin: 0.5rem !important;
  }
  .m-xxl-3 {
    margin: 1rem !important;
  }
  .m-xxl-4 {
    margin: 1.5rem !important;
  }
  .m-xxl-5 {
    margin: 3rem !important;
  }
  .m-xxl-auto {
    margin: auto !important;
  }
  .mx-xxl-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-xxl-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-xxl-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-xxl-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-xxl-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-xxl-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-xxl-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-xxl-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-xxl-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-xxl-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-xxl-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-xxl-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-xxl-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-xxl-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-xxl-0 {
    margin-top: 0 !important;
  }
  .mt-xxl-1 {
    margin-top: 0.25rem !important;
  }
  .mt-xxl-2 {
    margin-top: 0.5rem !important;
  }
  .mt-xxl-3 {
    margin-top: 1rem !important;
  }
  .mt-xxl-4 {
    margin-top: 1.5rem !important;
  }
  .mt-xxl-5 {
    margin-top: 3rem !important;
  }
  .mt-xxl-auto {
    margin-top: auto !important;
  }
  .me-xxl-0 {
    margin-right: 0 !important;
  }
  .me-xxl-1 {
    margin-right: 0.25rem !important;
  }
  .me-xxl-2 {
    margin-right: 0.5rem !important;
  }
  .me-xxl-3 {
    margin-right: 1rem !important;
  }
  .me-xxl-4 {
    margin-right: 1.5rem !important;
  }
  .me-xxl-5 {
    margin-right: 3rem !important;
  }
  .me-xxl-auto {
    margin-right: auto !important;
  }
  .mb-xxl-0 {
    margin-bottom: 0 !important;
  }
  .mb-xxl-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-xxl-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-xxl-3 {
    margin-bottom: 1rem !important;
  }
  .mb-xxl-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-xxl-5 {
    margin-bottom: 3rem !important;
  }
  .mb-xxl-auto {
    margin-bottom: auto !important;
  }
  .ms-xxl-0 {
    margin-left: 0 !important;
  }
  .ms-xxl-1 {
    margin-left: 0.25rem !important;
  }
  .ms-xxl-2 {
    margin-left: 0.5rem !important;
  }
  .ms-xxl-3 {
    margin-left: 1rem !important;
  }
  .ms-xxl-4 {
    margin-left: 1.5rem !important;
  }
  .ms-xxl-5 {
    margin-left: 3rem !important;
  }
  .ms-xxl-auto {
    margin-left: auto !important;
  }
  .p-xxl-0 {
    padding: 0 !important;
  }
  .p-xxl-1 {
    padding: 0.25rem !important;
  }
  .p-xxl-2 {
    padding: 0.5rem !important;
  }
  .p-xxl-3 {
    padding: 1rem !important;
  }
  .p-xxl-4 {
    padding: 1.5rem !important;
  }
  .p-xxl-5 {
    padding: 3rem !important;
  }
  .px-xxl-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-xxl-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-xxl-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-xxl-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-xxl-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-xxl-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-xxl-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-xxl-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-xxl-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-xxl-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-xxl-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-xxl-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-xxl-0 {
    padding-top: 0 !important;
  }
  .pt-xxl-1 {
    padding-top: 0.25rem !important;
  }
  .pt-xxl-2 {
    padding-top: 0.5rem !important;
  }
  .pt-xxl-3 {
    padding-top: 1rem !important;
  }
  .pt-xxl-4 {
    padding-top: 1.5rem !important;
  }
  .pt-xxl-5 {
    padding-top: 3rem !important;
  }
  .pe-xxl-0 {
    padding-right: 0 !important;
  }
  .pe-xxl-1 {
    padding-right: 0.25rem !important;
  }
  .pe-xxl-2 {
    padding-right: 0.5rem !important;
  }
  .pe-xxl-3 {
    padding-right: 1rem !important;
  }
  .pe-xxl-4 {
    padding-right: 1.5rem !important;
  }
  .pe-xxl-5 {
    padding-right: 3rem !important;
  }
  .pb-xxl-0 {
    padding-bottom: 0 !important;
  }
  .pb-xxl-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-xxl-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-xxl-3 {
    padding-bottom: 1rem !important;
  }
  .pb-xxl-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-xxl-5 {
    padding-bottom: 3rem !important;
  }
  .ps-xxl-0 {
    padding-left: 0 !important;
  }
  .ps-xxl-1 {
    padding-left: 0.25rem !important;
  }
  .ps-xxl-2 {
    padding-left: 0.5rem !important;
  }
  .ps-xxl-3 {
    padding-left: 1rem !important;
  }
  .ps-xxl-4 {
    padding-left: 1.5rem !important;
  }
  .ps-xxl-5 {
    padding-left: 3rem !important;
  }
  .gap-xxl-0 {
    gap: 0 !important;
  }
  .gap-xxl-1 {
    gap: 0.25rem !important;
  }
  .gap-xxl-2 {
    gap: 0.5rem !important;
  }
  .gap-xxl-3 {
    gap: 1rem !important;
  }
  .gap-xxl-4 {
    gap: 1.5rem !important;
  }
  .gap-xxl-5 {
    gap: 3rem !important;
  }
  .text-xxl-start {
    text-align: left !important;
  }
  .text-xxl-end {
    text-align: right !important;
  }
  .text-xxl-center {
    text-align: center !important;
  }
}
@media (min-width: 1200px) {
  .fs-1 {
    font-size: 2.5rem !important;
  }
  .fs-2 {
    font-size: 2rem !important;
  }
  .fs-3 {
    font-size: 1.75rem !important;
  }
  .fs-4 {
    font-size: 1.5rem !important;
  }
}
@media print {
  .d-print-inline {
    display: inline !important;
  }
  .d-print-inline-block {
    display: inline-block !important;
  }
  .d-print-block {
    display: block !important;
  }
  .d-print-grid {
    display: grid !important;
  }
  .d-print-table {
    display: table !important;
  }
  .d-print-table-row {
    display: table-row !important;
  }
  .d-print-table-cell {
    display: table-cell !important;
  }
  .d-print-flex {
    display: flex !important;
  }
  .d-print-inline-flex {
    display: inline-flex !important;
  }
  .d-print-none {
    display: none !important;
  }
}
/*
Mixins
==================================================
Wiederverwendbare Bausteine, die mehr als eine Partial braucht.
*/
/*
 * Verlaufs-Hover fuer Buttons (Vorbild: Syntegon)
 * -----------------------------------------------
 * Ruhezustand flaechig, beim Ueberfahren laeuft die Flaeche nach unten in den
 * helleren Ton derselben Farbe aus.
 *
 * Der Verlauf liegt auf einem ::before und wird ueber die Opazitaet ein- und
 * ausgeblendet — nicht als Wechsel der background-Eigenschaft. Grund: Browser
 * interpolieren linear-gradient in background-image nicht, egal wie gleich die
 * beiden Verlaeufe gebaut sind. Die Angabe transition: background sieht im
 * Stylesheet nach Bewegung aus, springt in der Praxis aber hart um. Opazitaet
 * dagegen tweent zuverlaessig.
 *
 * Der Ruhezustand bleibt eine flaechige Farbe am Element selbst — auf
 * padding-box und border-box, damit die Flaeche unter einem (transparent
 * gesetzten) Rahmen durchlaeuft statt dort abzureissen.
 *
 * background statt background-color auch deshalb, weil WordPress die
 * Paletten-Klassen (.has-senary-background-color) mit !important schreibt —
 * die Farbe liegt darunter, der Verlauf als eigene Ebene darueber.
 */
/*
 * Sekundaerer transparenter Button
 * --------------------------------
 * Vorbild: Syntegon "Nehmen Sie Kontakt auf". Ruhe: kein Grund, schwarzer
 * Rahmen, schwarze Schrift. Hover: laeuft mit dem aufgehellten Faeth-Blau
 * ($button-outline-hover-bg) zu, die Schrift kippt auf Weiss. Im Prinzip ein
 * Outline-Button.
 *
 * !important, weil die Farb-Klassen von WordPress (has-*-background-color,
 * has-*-color) selbst !important tragen — ohne das bliebe der alte Grund
 * stehen. Auf beiden Zustaenden gesetzt, sonst gewinnt der Ruhezustand.
 */
/*
 * Der Pfeil-Button der Karten (Chevron-Button) stand hier als Mixin und wurde
 * an drei Stellen aufgerufen — sein Rumpf landete damit mehrfach im
 * Stylesheet. Er steht jetzt als einzelne Selektorliste in
 * component/_chevron-button.
 */
/*
 * Base-specific styles
 * -------------------- */
/*
Base
==================================================
Contains custom styles for the Base.
*/
body {
  max-width: 1920px;
  overflow-x: hidden;
  margin: 0 auto !important;
}

/*
 * Links
 * -----
 * Eine Regel fuer die ganze Seite: keine Unterstreichung, in keinem Zustand.
 * Beim Ueberfahren reagiert der Link wie ein Navigationspunkt — er wird heller
 * (aufgehelltes Secondary) und die Schrift zieht an.
 *
 * Buttons sind ausgenommen: sie tragen ihre Schriftfarbe selbst und wuerden
 * die Verdickung sonst mitnehmen. Kopf und Navigation ueberschreiben ihre
 * Hover-Farbe in layout/_header, layout/_navigation und
 * layout/_main-navigation mit deutlich hoeherer Spezifitaet.
 */
a {
  text-decoration: none;
}

a:where(:not(.wp-element-button)) {
  transition: color 0.3s ease, text-shadow 0.3s ease;
}
a:where(:not(.wp-element-button)):hover, a:where(:not(.wp-element-button)):focus, a:where(:not(.wp-element-button)):focus-visible {
  color: #6fc2e5;
  color: color-mix(in srgb, var(--wp--preset--color--secondary) 78%, #fff);
  text-decoration: none;
  text-shadow: 0 0 0.35px currentColor, 0 0 0.35px currentColor;
}

ul {
  padding-left: 1rem;
}

main {
  overflow: hidden;
}

main a:where(:not(.wp-element-button)),
aside a:where(:not(.wp-element-button)) {
  /*
   * Nur der Ruhezustand: Inhaltslinks stehen in Secondary. Den Hover
   * traegt die globale Regel weiter oben — sie ist mit :hover
   * spezifischer als dieser Selektor und greift hier ohne Wiederholung.
   */
  color: var(--wp--preset--color--secondary);
  text-decoration: none;
}

.mega-menu-open main,
.mega-menu-open .sidebar-page {
  overflow: hidden;
}
.mega-menu-open main > div,
.mega-menu-open .sidebar-page > div {
  filter: blur(4px);
}
@media (min-width: 992px) {
  .mega-menu-open {
    position: fixed !important;
    width: 100%;
    right: 0;
    left: 0;
    overflow-y: scroll;
  }
}

.mega-menu-max_mega_menu_1-mobile-open header {
  border-bottom: none !important;
}
.mega-menu-max_mega_menu_1-mobile-open main,
.mega-menu-max_mega_menu_1-mobile-open .sidebar-page,
.mega-menu-max_mega_menu_1-mobile-open footer {
  height: 0 !important;
  overflow: hidden;
}

/*
 * Chevron-Link
 * ------------
 * Der Chevron stand bisher still. Beim Ueberfahren rueckt er jetzt vor — die
 * gleiche Bewegung, die die Footer-Linkliste schon fuehrt — und die Schrift
 * hellt leicht auf (Regel fuer main/aside weiter oben).
 */
.chevron-link {
  position: relative;
}
.chevron-link a:after {
  content: "";
  position: absolute;
  width: 16px;
  height: 16px;
  background: url(./images/chevron-right-blue.3c804e61.svg) no-repeat 0 50%;
  margin: 5px;
  transition: transform 0.3s ease;
}
.chevron-link a:hover:after, .chevron-link a:focus-visible:after {
  transform: translateX(4px);
}
@media (prefers-reduced-motion: reduce) {
  .chevron-link a:after {
    transition-duration: 0.01ms;
  }
}

.image-overlay {
  position: absolute;
  width: auto;
  bottom: var(--wp--preset--spacing--40);
  margin-left: var(--wp--preset--spacing--60);
  padding: var(--wp--preset--spacing--30) !important;
}
.image-overlay:before {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: var(--wp--preset--color--base);
  opacity: 0.75;
}
.image-overlay > div {
  position: relative;
  z-index: 1;
}
@media (max-width: 1199.98px) {
  .image-overlay {
    position: relative;
    bottom: 0;
    background: none;
    text-align: center;
    margin-left: 0;
  }
}

@media (max-width: 767.98px) {
  .reverse-on-mobile.wp-block-columns {
    flex-wrap: wrap-reverse !important;
  }
}

@media (min-width: 768px) {
  .margin-fix {
    margin-left: calc(var(--wp--style--root--padding-left)) !important;
  }
}

.headline-dot, .list-element li, #powerTip strong {
  position: relative;
  font-size: var(--wp--preset--font-size--headline-dot) !important;
  margin-left: var(--wp--preset--spacing--30);
}
.headline-dot:before, .list-element li:before, #powerTip strong:before {
  content: "";
  position: absolute;
  width: 17px;
  height: 17px;
  left: calc(var(--wp--preset--spacing--30) * -1);
  top: 45%;
  background: var(--wp--preset--color--primary);
  transform: translateY(-50%);
}

/*
 * Der Pfeil-Button der Karten (.readmore) stand hier. Ausformung und
 * Begruendung stehen jetzt an einer einzigen Stelle:
 * component/_chevron-button.
 */
.more-container .more-content {
  display: none !important;
}

.image-zoom {
  overflow: hidden;
}
.image-zoom img {
  transition: transform 0.3s ease;
}
.image-zoom img:hover {
  transform: scale(1.03);
}

/*
 * Sektions-Rhythmus
 * -----------------
 * Stand hier als zweites, halbfertiges Abstands-System: eine Abschaltregel mit
 * !important fuer alle Seiten und ein Padding-Modell, das ueber die Body-Klasse
 * `section-rhythm` nur auf einer einzigen freigeschalteten Seite lief. Beides
 * ist in layout/_section-spacing aufgegangen — dort gilt es unbedingt und fuer
 * jede Seite, und der Bestand braucht keine Freigabeliste mehr.
 */
/*
WP admin
==================================================
Contains custom styles for the WP admin.
*/
.wp-admin .image-overlay {
  bottom: initial !important;
}
.wp-admin .overlay-text {
  max-height: 100% !important;
}
.wp-admin .more-content {
  display: block !important;
}

@media (min-width: 601px) {
  .admin-bar .gutena-tabs-tab {
    top: 30px !important;
  }
}

/*
 * Layout-specific styles
 * ---------------------- */
/*
Container
==============================================
Additional styling for container layout.
*/
.container {
  padding: 0;
}

/*
Header
==================================================
Contains custom styles for the header at the top of the page.
The header contains the logo and a navigation.
*/
header {
  position: relative;
  border-bottom: 1px solid #dee2e6;
  /*
   * Logo and navigation bar
   * Both columns are centered inside a fixed bar height.
   * -------------------------------------------------- */
  /*
   * Topbar labels
   * Search, contact and language switcher share the same look.
   * --------------------------------------------------------- */
}
@media (min-width: 992px) {
  header .topbar {
    position: absolute;
    right: 0;
    z-index: 1;
    margin-top: -10px;
  }
}
header .wp-bootstrap-blocks-row {
  align-items: center;
  min-height: 60px;
  /*
   * Spaltenaufteilung ab lg
   * -----------------------
   * Das Pattern teilt die Kopfzeile ueber das 12er-Raster auf
   * (col-lg-3/col-lg-9, col-xxl-2/col-xxl-10). Das Logo ist aber nur rund
   * 150px breit, waehrend die Rasterspalte je nach Fensterbreite 200-320px
   * belegt — der Ueberschuss stand als Weissraum rechts neben dem Logo und
   * fehlte gleichzeitig der Menuezeile, die deshalb umbrach.
   *
   * Ab lg wird deshalb nicht mehr nach Raster geteilt: die Logo-Spalte ist
   * genau so breit wie ihr Inhalt, die Navigation nimmt den Rest. Die
   * col-*-Klassen bleiben im Pattern stehen — unterhalb von lg (mobiles
   * Layout mit Burger-Menue) gelten sie unveraendert weiter.
   */
}
@media (min-width: 992px) {
  header .wp-bootstrap-blocks-row {
    min-height: 64px;
  }
}
@media (min-width: 992px) {
  header .wp-bootstrap-blocks-row > [class*=col-] {
    flex: 0 0 auto;
    width: auto;
    max-width: 100%;
  }
  header .wp-bootstrap-blocks-row > [class*=col-]:not(.main-navigation) {
    /* Luft zwischen Logo und erstem Menuepunkt; ohne sie stossen beide
       nur ueber die Spalten-Gutter aneinander. */
    padding-right: 32px;
  }
  header .wp-bootstrap-blocks-row > .main-navigation {
    flex: 1 1 auto;
    /* Flex-Elemente haben min-width: auto und koennen sonst nicht unter
       ihre Inhaltsbreite schrumpfen — die Zeile wuerde ueberlaufen. */
    min-width: 0;
  }
}
header .wp-block-site-logo {
  display: flex;
  align-items: center;
  margin: 0;
  /*
   * Auf einer Linie mit dem Footer-Logo: die Header-Zeile ist alignfull und
   * beginnt bei x = 0 (das negative Margin hebt das Gruppen-Padding auf),
   * der Footer steht dagegen im globalen Seiten-Padding. Der Bootstrap-Anteil
   * (container/row/col) ist auf beiden Seiten gleich und faellt raus, es
   * bleibt genau das Root-Padding als Differenz.
   */
  padding-left: var(--wp--style--root--padding-left);
}
@media (min-width: 992px) {
  header .wp-block-site-logo {
    /* Same bottom offset as the menu container, so the logo sits
       optically on the same line as the navigation links. */
    margin-bottom: 15px;
  }
}
header .wp-block-site-logo img {
  /* max-height instead of height keeps the aspect ratio intact
     when the column gets narrower than the logo on small screens. */
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 32px;
}
header > .topbar .wp-block-search__label,
header > .topbar .wp-block-navigation-item__content,
header > .topbar .wp-block-navigation-item__label {
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
header .wp-block-search {
  display: flex;
  flex-direction: row-reverse;
}
header .wp-block-search .wp-block-search__label {
  font-size: var(--wp--preset--font-size--x-small);
  line-height: 1.85;
  margin-top: 1px;
  margin-left: 1px;
}
header .wp-block-search .wp-block-search__label:hover {
  cursor: pointer;
}
header .wp-block-search .wp-block-search__inside-wrapper {
  flex-direction: row-reverse;
  font-size: var(--wp--preset--font-size--x-small);
}
header .wp-block-search .wp-block-search__inside-wrapper .wp-block-search__input {
  width: 0;
  min-width: 0;
  border-top: none;
  border-right: none;
  border-left: none;
  padding: 0;
}
header .wp-block-search .wp-block-search__inside-wrapper .wp-block-search__input:focus {
  outline: none;
}
header .wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button {
  position: relative;
  width: 24px;
  height: 24px;
  font-weight: bold;
  background: none;
  border: none;
  transition: color 0.3s ease;
  padding: 0;
}
header .wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button:before {
  content: "";
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 60%;
  background: url(./images/search.d5025635.svg) no-repeat;
  transform: translateY(-50%);
}
header .wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button svg {
  display: none;
}
header .wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button:hover {
  color: var(--wp--preset--color--primary);
}
header .wp-block-search.is-active .wp-block-search__label {
  display: none;
}
header .wp-block-search.is-active .wp-block-search__input {
  width: 100%;
  min-width: 3rem;
  padding: 0 8px;
}
header .wp-block-search.is-active .wp-block-search__button:focus {
  color: var(--wp--preset--color--contrast) !important;
}
@media (max-width: 991.98px) {
  header .wp-block-search {
    display: none;
  }
}
header .wpml-language-switcher-block {
  position: relative;
  font-size: var(--wp--preset--font-size--x-small) !important;
  font-weight: bold;
  /* The icon reaches outside the item box, so its offset is added
     on top of the gap to the previous neighbour. */
  margin-left: 45px !important;
}
header .wpml-language-switcher-block:before {
  content: "";
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 55%;
  left: -21px;
  background: url(./images/global.c39b2d48.svg) no-repeat;
  transform: translateY(-50%);
}
header .wpml-language-switcher-block ul.horizontal-list {
  gap: 3px !important;
}
header .wpml-language-switcher-block li.wp-block-navigation-item {
  margin-top: 0 !important;
}
header .wpml-language-switcher-block li.wp-block-navigation-item:before {
  content: "|";
  margin-right: 3px;
}
header .wpml-language-switcher-block li:first-child.wp-block-navigation-item:before {
  content: none;
}

/*
Main navigation
==============================================
Custom styling for navigation.
*/
.main-navigation {
  /*
   * Schriftgewicht der Menue-Elemente
   * ---------------------------------
   * Max Mega Menu erzeugt sein CSS aus den Theme-Einstellungen in der
   * Datenbank (Option megamenu_themes) und schreibt es nach
   * wp-content/uploads/maxmegamenu/style_<sprache>.css. Diese Datei wird bei
   * jedem Speichern neu geschrieben und liegt nicht im Repository — die
   * Vorgabe steht deshalb hier, damit sie beim Deploy mitgeht.
   *
   * Bewusst OHNE .mega-menu-link und ohne die Toggle-Schaltflaeche: die Links
   * behalten ihr eigenes Gewicht, damit die fett gesetzten Kopfzeilen fett
   * bleiben (Max Mega Menu setzt die pro Eintrag ueber li#mega-menu-item-...,
   * ohne !important — eine Regel hier wuerde sie sonst ueberstimmen), und das
   * mobile MENUE-Label bleibt ebenfalls fett.
   */
  /*
   * Spaltenbreite der Unterseiten-Spalten
   * -------------------------------------
   * Die Grid-Zeilen sind 12 Spalten breit, die Unterseiten-Spalten belegen
   * davon je 3 — vier nebeneinander. Auf schmalen Desktops wird das zu eng,
   * deshalb staffelt sich der Span nach oben:
   *
   *   lg  (992–1199px)  span 6  → zwei Spalten pro Zeile
   *   xl  (1200–1399px) span 4  → drei Spalten pro Zeile
   *   xxl (ab 1400px)   span 3  → vier Spalten pro Zeile (Vorgabe)
   *
   * Max Mega Menu rechnet die Breite aus zwei Custom Properties, die es dem
   * <li> als Inline-Style mitgibt (--columns:12; --span:3) und im eigenen
   * Stylesheet als `grid-column: span var(--span)` bzw. als Breiten-calc()
   * auswertet. Eine Regel hier kann den Inline-Wert nur mit !important
   * ueberstimmen — dafuer greift sie in beiden Layouts (Grid und Mega Menu)
   * gleichermassen. Die Klasse begrenzt das auf die 3er-Spalten; Zeilen mit
   * anderem Span (4, 10) bleiben unberuehrt.
   *
   * Unterhalb 992px ist ohnehin Schluss: das Plugin behandelt alles darunter
   * als mobil und setzt die Spalten dort selbst auf `span 1`.
   */
}
.main-navigation .mega-search .search-icon:before {
  content: "";
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 55%;
  background: url(./images/search.d5025635.svg) no-repeat;
  transform: translateY(-50%);
}
.main-navigation .mega-menu-toggle {
  margin: 0 !important;
}
.main-navigation .mega-menu-toggle .mega-toggle-label {
  font-weight: bold;
}
.main-navigation .mega-menu-wrap,
.main-navigation .mega-menu {
  font-weight: 300 !important;
}
.main-navigation .mega-menu-wrap .mega-menu-item,
.main-navigation .mega-menu-wrap .mega-menu-row,
.main-navigation .mega-menu-wrap .mega-menu-column,
.main-navigation .mega-menu-wrap .mega-indicator,
.main-navigation .mega-menu-wrap .mega-menu-badge,
.main-navigation .mega-menu-wrap .mega-menu-description,
.main-navigation .mega-menu-wrap .mega-close,
.main-navigation .mega-menu .mega-menu-item,
.main-navigation .mega-menu .mega-menu-row,
.main-navigation .mega-menu .mega-menu-column,
.main-navigation .mega-menu .mega-indicator,
.main-navigation .mega-menu .mega-menu-badge,
.main-navigation .mega-menu .mega-menu-description,
.main-navigation .mega-menu .mega-close {
  font-weight: 300 !important;
}
@media (min-width: 992px) and (max-width: 1199.98px) {
  .main-navigation .mega-menu-column.mega-menu-columns-3-of-12 {
    --span: 6 !important;
  }
}
@media (min-width: 1200px) and (max-width: 1399.98px) {
  .main-navigation .mega-menu-column.mega-menu-columns-3-of-12 {
    --span: 4 !important;
  }
}
.main-navigation .mega-menu {
  /*
   * Immer nur eine Linie: ist ein Panel offen, tritt die Standort-Linie der
   * aktuellen Seite zurueck und ueberlaesst sie dem aufgeklappten Eintrag.
   */
}
.main-navigation .mega-menu .mega-menu-back .btn {
  color: #000;
  font-weight: bold;
  text-decoration: none;
  text-transform: uppercase;
  padding-left: 0;
}
.main-navigation .mega-menu .mega-menu-back .btn:before {
  content: "";
  display: inline-block;
  width: 20px;
  height: 20px;
  vertical-align: middle !important;
  background: url(./images/arrow-left.c61b45ac.svg) no-repeat !important;
}
.main-navigation .mega-menu .mega-menu-back .btn:hover {
  color: #000;
}
.main-navigation .mega-menu > .mega-menu-tabbed > .mega-sub-menu {
  padding-top: 30px !important;
  padding-bottom: 30px !important;
}
.main-navigation .mega-menu > .mega-menu-tabbed > .mega-sub-menu > .mega-menu-item > .mega-menu-link {
  /*
   * Die Tab-Ebene hat mit dem Farbverlauf schon eine eigene
   * Hover-Flaeche und bleibt daher ohne Linie.
   */
}
@media (min-width: 1400px) {
  .main-navigation .mega-menu > .mega-menu-tabbed > .mega-sub-menu > .mega-menu-item > .mega-menu-link {
    padding-left: 120px !important;
  }
}
.main-navigation .mega-menu > .mega-menu-tabbed > .mega-sub-menu > .mega-menu-item > .mega-menu-link:after {
  content: none !important;
}
@media (min-width: 992px) {
  .main-navigation .mega-menu > .mega-menu-tabbed > .mega-sub-menu {
    border-top: 1px solid #dee2e6 !important;
    margin-top: 15px !important;
  }
}
.main-navigation .mega-menu > .mega-menu-item {
  /*
   * Die Linie steht normalerweise unter der aktuellen Seite. Sobald ein
   * Panel aufgeklappt ist, wandert sie auf den aufgeklappten Eintrag: der
   * Nutzer soll sehen, worin er gerade blaettert, nicht mehr, wo er
   * herkommt. Beim Schliessen faellt sie auf die aktuelle Seite zurueck.
   *
   * .mega-toggle-on ist hier gefahrlos, weil das Menue auf "Event: Klick"
   * steht (megamenu_settings) — Ueberfahren klappt nichts auf, die Klasse
   * kommt also nur nach einem Klick. Bei einer Umstellung auf Hover waere
   * die Linie wieder ein Hover-Effekt.
   */
  /*
   * Nur noch fuer das mobile Menue: ab lg kommt der Abstand aus dem
   * gap der Flexzeile (siehe weiter unten).
   */
}
.main-navigation .mega-menu > .mega-menu-item > .mega-sub-menu {
  background: #fff !important;
  min-height: 540px !important;
  box-shadow: 0 15px 10px -15px rgba(0, 0, 0, 0.1) !important;
}
.main-navigation .mega-menu > .mega-menu-item > .mega-menu-link {
  position: relative;
  /* !important beats the plugin's own weight, and it also keeps the
     weight on :hover/:focus, where the mobile menu would set bold. */
  font-weight: 300 !important;
  /* Fit the menu links into the header bar. The menu container adds
     $main-navigation-panel-offset below the links, which is where the
     dropdown panel and the active underline start. */
  /*
   * Hover: keine Linie mehr, die Schrift zieht an.
   * font-weight laesst sich ohne Variable Font nicht weich fahren und
   * wuerde ausserdem die Wortbreite aendern — die Menuezeile zappelte
   * dann beim Ueberfahren. Der text-shadow verdickt den Strich um
   * Bruchteile eines Pixels, tweent sauber und aendert kein Layout.
   * !important, weil Max Mega Menu auf .mega-menu-link eine eigene
   * transition-Kurzschreibweise setzt und diese hier sonst ueberschriebe.
   */
  transition: text-shadow 0.3s ease !important;
  /*
   * Die Linie bleibt — aber nur noch als Standort-Anzeige der aktuellen
   * Seite, nicht mehr als Hover-Reaktion. Sie liegt deshalb fest da
   * statt aus der Mitte aufzulaufen.
   */
}
@media (min-width: 992px) {
  .main-navigation .mega-menu > .mega-menu-item > .mega-menu-link {
    height: 49px !important;
    line-height: 49px !important;
    /*
     * Schriftgroesse der Hauptmenuezeile — Notnagel, kein Regelfall.
     * --------------------------------------------------------------
     * Max Mega Menu zeigt die Desktop-Zeile ab 993px. Die sechs
     * deutschen Hauptpunkte brauchen bei 20px zusammen rund 740px
     * (Text + Innenabstaende + Mindestabstand); so viel Platz hat die
     * Navigationsspalte ab etwa 1050px Fensterbreite. Darueber bleibt
     * es bei den vollen 20px aus den Mega-Menu-Theme-Einstellungen;
     * ueberzaehliger Platz geht zuerst in die Abstaende zwischen den
     * Punkten (siehe gap weiter unten).
     *
     * Nur im schmalen Rest 992-1050px reicht auch das nicht mehr; dort
     * faellt die Groesse linear auf
     * $main-navigation-link-font-size-min zurueck, damit die Zeile nicht
     * umbricht.
     *
     * !important, weil Max Mega Menu die Groesse per ID-Selektor setzt.
     */
    font-size: clamp(
            17.5px,
            4.31034483vw - 25.2586207136px,
            20px
          ) !important;
  }
}
.main-navigation .mega-menu > .mega-menu-item > .mega-menu-link .mega-indicator {
  /*
   * Das Plugin gibt dem Indikator height: 100%, also die volle
   * Linkhoehe. Auf Desktop ist der Pfeil abgeschaltet (content: none),
   * der Span bleibt aber ein leeres inline-block: seine Grundlinie ist
   * die Unterkante, er steht damit komplett ueber der Textgrundlinie
   * und schiebt die Zeile nach unten. Eintraege mit Untermenue saessen
   * dadurch tiefer als einfache Links. Ohne Inhalt keine Hoehe.
   * Mobil floatet der Span (Plugin) und liegt ohnehin ausserhalb der
   * Zeile — dort bleibt die Pfeil-Darstellung unangetastet.
   */
}
@media (min-width: 992px) {
  .main-navigation .mega-menu > .mega-menu-item > .mega-menu-link .mega-indicator {
    height: auto !important;
  }
}
.main-navigation .mega-menu > .mega-menu-item > .mega-menu-link .mega-indicator:after {
  content: none !important;
}
@media (max-width: 991.98px) {
  .main-navigation .mega-menu > .mega-menu-item > .mega-menu-link .mega-indicator:after {
    content: "" !important;
    width: 15px !important;
    height: 15px !important;
    vertical-align: middle !important;
    background: url(./images/chevron-right.ad5a1a7d.svg) no-repeat !important;
    margin-top: 0 !important;
  }
}
.main-navigation .mega-menu > .mega-menu-item > .mega-menu-link:hover, .main-navigation .mega-menu > .mega-menu-item > .mega-menu-link:focus-visible {
  text-shadow: 0 0 0.35px currentColor, 0 0 0.35px currentColor;
}
@media (min-width: 1200px) {
  .main-navigation .mega-menu > .mega-menu-item > .mega-menu-link:after {
    content: "";
    position: absolute;
    display: block !important;
    width: 0;
    height: 3px;
    bottom: -15px;
    left: 0;
    background: var(--wp--preset--color--primary);
  }
}
.main-navigation .mega-menu > .mega-menu-item.mega-current_page_item > .mega-menu-link:after, .main-navigation .mega-menu > .mega-menu-item.mega-toggle-on > .mega-menu-link:after {
  width: 100%;
}
@media (max-width: 991.98px) {
  .main-navigation .mega-menu > .mega-menu-item {
    margin-right: 0.5rem !important;
  }
}
.main-navigation .mega-menu:has(> .mega-menu-item.mega-toggle-on) > .mega-menu-item.mega-current_page_item:not(.mega-toggle-on) > .mega-menu-link:after {
  width: 0;
}
.main-navigation .mega-menu .mega-sub-menu {
  padding-left: 1rem !important;
  /* Gegenstueck zum white-space: nowrap der Hauptzeile. */
  white-space: normal;
  /*
   * Hover wie bei den Hauptmenuepunkten: keine Linie, die Schrift zieht an
   * (siehe Begruendung oben). Erst ab lg, darunter greift das mobile
   * Akkordeon, dessen Eintraege die ganze Zeile als Tap-Flaeche brauchen.
   * inline-block, damit die Hover-Flaeche so breit ist wie der Text und
   * nicht wie die ganze Spalte. Kopfzeilen (mega-disable-link) sind
   * ausgenommen, sie sind nicht anklickbar.
   */
}
@media (min-width: 992px) {
  .main-navigation .mega-menu .mega-sub-menu .mega-menu-item:not(.mega-disable-link) > .mega-menu-link {
    position: relative;
    display: inline-block !important;
    /* background bleibt mit drin — die Flaeche des Eintrags faehrt
       weiter, siehe .mega-menu-item .mega-menu-link weiter unten. */
    transition: background 0.3s ease, text-shadow 0.3s ease !important;
  }
  .main-navigation .mega-menu .mega-sub-menu .mega-menu-item:not(.mega-disable-link) > .mega-menu-link:hover, .main-navigation .mega-menu .mega-sub-menu .mega-menu-item:not(.mega-disable-link) > .mega-menu-link:focus, .main-navigation .mega-menu .mega-sub-menu .mega-menu-item:not(.mega-disable-link) > .mega-menu-link:focus-visible {
    text-shadow: 0 0 0.35px currentColor, 0 0 0.35px currentColor;
  }
}
.main-navigation .mega-menu .mega-sub-menu .mega-menu-item .mega-menu-link {
  transition: background 0.3s ease !important;
}
.main-navigation .mega-menu .mega-sub-menu .mega-menu-item .mega-menu-link .mega-indicator:after {
  content: "" !important;
  width: 15px !important;
  height: 15px !important;
  vertical-align: middle !important;
  background: url(./images/chevron-right.ad5a1a7d.svg) no-repeat !important;
}
@media (min-width: 992px) {
  .main-navigation .mega-menu .mega-sub-menu {
    margin-top: 1px !important;
    padding-left: 0 !important;
  }
}
@media (min-width: 992px) {
  .main-navigation .mega-menu {
    left: 0 !important;
    /*
     * Abstaende der Hauptmenuezeile
     * -----------------------------
     * Max Mega Menu setzt die Punkte als inline-block mit festem
     * Aussenabstand nebeneinander. Der bleibt oberhalb von
     * $main-navigation-gap-to genau so stehen wie bisher
     * ($main-navigation-item-gap + 2x6px Link-Innenabstand = 50px von Text
     * zu Text), ueberschuessige Breite bleibt rechts frei — die Zeile soll
     * sich auf grossen Schirmen nicht auseinanderziehen.
     *
     * Darunter wird der Abstand zur Reserve: er faellt linear bis auf
     * $main-navigation-item-min-gap und die Zeile nutzt dabei die volle
     * Breite der Spalte, statt umzubrechen. Die Steigung ist so gewaehlt,
     * dass der Abstand ungefaehr dem freien Platz entspricht:
     * die sechs deutschen Punkte belegen bei 20px zusammen rund 710px
     * (Text + Innenabstaende + Pfeile), die Navigationsspalte ist etwa
     * Fensterbreite minus 298px breit — der Rest verteilt sich auf die
     * fuenf Luecken. Bewusst ein paar Pixel knapper gerechnet: die Zeile
     * darf lieber minimal schmaler bleiben als ueberzulaufen.
     *
     * !important bei display und white-space, weil Max Mega Menu die Liste
     * in seinem Reset ueber zwei ID-Selektoren auf display: block und
     * white-space: normal setzt — dagegen kommt eine Klassenregel nicht an.
     * align-items und gap ruehrt das Plugin nicht an.
     */
    display: flex !important;
    align-items: center;
    gap: clamp(
        6px,
        20vw - 204px,
        38px
      );
    /*
     * Die Punkte behalten ihre Inhaltsbreite — ohne das wuerden sie als
     * Flexelemente schrumpfen und der Text darin umbrechen. Zusammen mit
     * dem nowrap bleibt die Zeile damit einzeilig. Die Panels darunter
     * setzen das wieder zurueck (.mega-sub-menu), ihr Text muss umbrechen.
     */
    white-space: nowrap !important;
  }
  .main-navigation .mega-menu > .mega-menu-item {
    flex: 0 0 auto;
    /* Der Abstand kommt jetzt aus dem gap der Zeile, nicht mehr aus
       Mega Menu > Menue-Themes > Hauptmenuepunkte > Abstand. */
    margin-right: 0 !important;
  }
  .main-navigation .mega-menu .mega-menu-back {
    display: none !important;
  }
}
@media (max-width: 991.98px) {
  .main-navigation .mega-menu {
    height: auto !important;
    border-top: 1px solid #000 !important;
    box-shadow: 0 10px 10px rgba(0, 0, 0, 0.1) !important;
    margin-top: 15px !important;
  }
  .main-navigation .mega-menu > .mega-menu-tabbed > .mega-sub-menu {
    padding: 0 !important;
  }
  .main-navigation .mega-menu > .mega-menu-item > .mega-sub-menu {
    min-height: auto !important;
  }
  .main-navigation .mega-menu .mega-menu-item {
    padding: 0 !important;
  }
  .main-navigation .mega-menu .mega-menu-item .mega-menu-link {
    font-size: 18px !important;
    line-height: 70px !important;
    padding: 0 !important;
  }
  .main-navigation .mega-menu .mega-menu-item.mega-disable-link {
    padding-bottom: 0 !important;
  }
  .main-navigation .mega-menu .mega-sub-menu {
    min-height: auto !important;
    padding: 0 !important;
  }
  .main-navigation .mega-menu .mega-menu-clear .mega-menu-item {
    border-bottom: none !important;
  }
}
.main-navigation .topbar {
  display: none !important;
}
@media (max-width: 991.98px) {
  .main-navigation .topbar {
    display: inline-block !important;
    width: 100%;
    color: #000 !important;
    border-top: 1px solid #000;
    margin-bottom: 3rem;
    padding-top: 2rem;
  }
  .main-navigation .topbar .wp-block-group {
    justify-content: start !important;
  }
  .main-navigation .topbar .navigation-container .contact-navigation {
    margin-left: 15px !important;
  }
}

/*
 * Frueher wurde hier bei offenem Mega-Menue die Hover-Linie aller Eintraege
 * weggeblendet und nur die des aufgeklappten Punktes stehen gelassen. Seit die
 * Navigation ohne Hover-Linie arbeitet, gibt es nichts mehr wegzublenden: die
 * einzige verbliebene Linie markiert die aktuelle Seite und soll auch bei
 * offenem Menue sichtbar bleiben.
 */
/*
Aside
==================================================
Contains custom styles for the aside.
*/
@media (max-width: 767.98px) {
  aside {
    display: none;
  }
}

/*
Navigation
==============================================
Custom styling for navigation.
*/
.navigation-container:where(body .is-layout-flex) {
  gap: normal;
}
.navigation-container .contact-navigation {
  position: relative !important;
  /* The icon reaches outside the item box, so its offset is added
     on top of the gap to the previous neighbour. */
  margin-left: 25px !important;
}
.navigation-container .contact-navigation li:before {
  content: "";
  position: absolute;
  width: 24px;
  height: 24px;
  top: -7px;
  left: -25px;
  background: url(./images/contact.a514c014.svg) no-repeat 0 40%;
}
.navigation-container .contact-navigation .wp-block-navigation__container .wp-block-navigation-item .wp-block-navigation-item__content {
  font-size: var(--wp--preset--font-size--x-small);
  /*
   * text-shadow mit in der Transition: die Verdickung kommt aus der
   * globalen Link-Regel (base/_base), diese Kurzschreibweise hier ist
   * spezifischer und wuerde sie sonst hart umspringen lassen.
   */
  transition: color 0.3s ease, text-shadow 0.3s ease;
}
.navigation-container .contact-navigation .wp-block-navigation__container .wp-block-navigation-item .wp-block-navigation-item__content:hover {
  color: var(--wp--preset--color--primary);
  text-decoration: none;
}

@media (max-width: 575.98px) {
  .company-navigation,
  .portfolio-navigation {
    align-items: center !important;
  }
  .company-navigation .wp-block-navigation__container,
  .portfolio-navigation .wp-block-navigation__container {
    align-items: center;
  }
}

.legal-navigation .wp-block-navigation__container .wp-block-navigation-item {
  position: relative;
}
.legal-navigation .wp-block-navigation__container .wp-block-navigation-item:before {
  content: "|";
  position: absolute;
  top: -1px;
  margin-left: -14px;
}
.legal-navigation .wp-block-navigation__container .wp-block-navigation-item:first-child:before {
  content: none;
}
@media (max-width: 575.98px) {
  .legal-navigation .wp-block-navigation__container .wp-block-navigation-item:before {
    content: none;
  }
}

/*
Footer
==================================================
Contains custom styles for the footer at the bottom of the page.
The footer contains a navigation.
*/
/*
 * Luft ueber dem Footer
 * ---------------------
 * Sie gehoert dem Footer, nicht der letzten Sektion: ein Farbband muss buendig
 * auf der Footer-Kante sitzen koennen, und eine ungestrichene letzte Sektion
 * soll ihre halbe Portion nicht zu einem Sonderfall aufblasen muessen.
 *
 * Ersetzt den festen 100px-Spacer, der bisher als erster Block im
 * Footer-Pattern stand — der lief in keiner Breite mit. Jetzt derselbe Wert wie
 * die Innenluft eines Farbbands: 60px mobil, 112px ab Desktop.
 *
 * (0,1,1) schlaegt den Block-Abstand des Kerns `:where(.wp-site-blocks) > *`
 * (0,1,0). Ohne das margin-block-start blieben 20px Weiss zwischen letzter
 * Sektion und Footer stehen — unsichtbar, solange der Footer weiss ist,
 * sichtbar in dem Moment, in dem er es nicht mehr ist.
 */
.wp-site-blocks > footer {
  margin-block-start: 0;
  padding-block-start: var(--section-pad-base);
}

footer {
  /*
   * Logo bar at the top of the footer
   * --------------------------------- */
  /*
   * Fussleisten-Links
   * -----------------
   * Nur der Ruhezustand: color: inherit statt der Link-Farbe aus der
   * theme.json, damit die Links in der Schriftfarbe ihrer Umgebung stehen und
   * von dort ins Hellblau laufen. Den Hover traegt die globale Link-Regel in
   * base/_base. Frueher stand in der Icon-Spalte eine Unterstreichung beim
   * Ueberfahren; die faellt weg.
   *
   * Buttons sind ausgenommen: der Kontakt-Button bringt seine eigene Flaeche
   * und seinen eigenen Verlaufs-Hover mit.
   */
}
footer .border-bottom {
  /*
   * Ab sm stehen Logo und Buerkert-Zeile nebeneinander. Beide Spalten
   * duerfen dann nur so hoch sein wie ihr Inhalt — der Absatz bringt
   * sonst 1rem Aussenabstand aus dem Bootstrap-Reboot mit, um den die
   * Zeile ihn nach oben zentriert. Mobil bleibt der Abstand als Trennung
   * zwischen Logo und Text stehen.
   */
  /*
   * Das Buerkert-Logo steht inline auf der Textgrundlinie und ragt damit
   * komplett nach oben aus der Zeile heraus. middle legt seine Mitte auf
   * die Textmitte, erst dadurch deckt es sich mit dem Faeth-Logo.
   */
}
footer .border-bottom .wp-bootstrap-blocks-row {
  align-items: center;
}
@media (min-width: 576px) {
  footer .border-bottom p {
    margin-bottom: 0;
  }
}
footer .border-bottom p img {
  vertical-align: middle;
}
@media (min-width: 576px) {
  footer .border-bottom [class^=col-]:first-child .wp-block-image,
  footer .border-bottom [class*=" col-"]:first-child .wp-block-image {
    margin-bottom: 0;
  }
}
footer .border-bottom [class^=col-]:first-child .wp-block-image img,
footer .border-bottom [class*=" col-"]:first-child .wp-block-image img {
  /* max-height instead of height keeps the aspect ratio intact
     when the column gets narrower than the logo on small screens. */
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 32px;
}
footer a:where(:not(.wp-element-button)) {
  color: inherit;
  text-decoration: none;
}
footer a.contact-mail, footer a.contact-phone {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
footer a.contact-mail:before, footer a.contact-phone:before {
  content: "";
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  background-size: contain;
}
footer a.contact-mail:before {
  background: url(./images/contact.a514c014.svg) no-repeat center center;
}
footer a.contact-phone:before {
  background: url(./images/phone.487d0a2c.svg) no-repeat center center;
}
footer .footer-contact-wrapper {
  border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color);
}
@media (min-width: 768px) {
  footer .footer-contact-wrapper {
    border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color);
    border-top: none;
  }
}
@media (max-width: 767.98px) {
  footer .footer-contact-wrapper .contact-button {
    width: 100% !important;
    max-width: 250px;
  }
}
footer .footer-contact-wrapper .contact-button a.wp-block-button__link {
  border-radius: 0 !important;
}
footer .footer-icon-content {
  font-weight: 500;
}
footer .footer-icon-content .footer-icon {
  display: flex;
  height: 80px;
  align-items: center;
  margin-left: 0.5rem;
}
@media (max-width: 767.98px) {
  footer .footer-icon-content .footer-icon {
    justify-content: center;
  }
}
@media (min-width: 768px) {
  footer .footer-icon-content.footer-icon-contact-content .footer-icon {
    margin-left: 0.775rem;
  }
}
@media (min-width: 768px) {
  footer .footer-icon-content.footer-icon-news-content .footer-icon {
    margin-left: 0.325rem;
  }
}
@media (min-width: 768px) {
  footer .footer-icon-content.footer-icon-references-content .footer-icon {
    margin-left: 1.4rem;
  }
}
@media (min-width: 768px) {
  footer .footer-icon-content .contact-button {
    max-width: 300px;
  }
}
footer .footer-link-list a::before {
  content: "";
  display: inline-block;
  position: absolute;
  width: 24px;
  height: 24px;
  top: 2px;
  left: -6px;
  transform: rotate(90deg);
  transition: transform 0.3s ease;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%3E%3Cpath%20fill=%27none%27%20stroke=%27%23272f6f%27%20stroke-linecap=%27round%27%20stroke-width=%271.5%27%20d=%27m16.78%2014.2-4.11-4.11a1%201%200%200%200-1.41%200l-4%204%27/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}
footer .footer-link-list a:hover::before {
  transform: rotate(90deg) translateY(-4px);
}
footer .footer-link-list a span {
  margin-left: 18px;
  line-height: 1.6;
}
@media (max-width: 767.98px) {
  footer ul.legal-navigation {
    justify-content: center !important;
  }
}

/*
Adaptive section spacing
==============================================
Single source of truth for the vertical rhythm of full-width, background-painted
sections. Painted sections sit flush (zero margin) and carry a generous 60px base
padding; the gap between two stacked sections is then trimmed automatically based
on how their backgrounds relate:

  • Different colours (boundary)  -> full base padding   (--60, 60→112px)
  • Two light/white sections      -> trimmed             (--50, 30→60px)
  • The exact same colour         -> merged into one bloc (--40, ~30→48px)

Why: a flat 60/60 everywhere doubles to ~120px between two painted sections and
makes same-coloured sections read as two separate blocks. This adapts the gap so
neither happens — without hand-tuning any single section.

Rule-based & scalable: every painted section is one row in the $sections map
below (its selector, whether it "reads light", and its background colour identity
for merge detection). Add a palette colour or a new section block = add one row;
all base/trim/merge rules regenerate from it. No CSS is written per section.

Requires :has() (baseline in all current browsers). Where unsupported, sections
simply keep the full base padding — never broken, just not trimmed.
*/
/* Semantic aliases over the theme.json spacing scale. Retune the whole system
   from here; every rule below references these, never a raw --preset token. */
:root {
  --section-pad-base: var(--wp--preset--spacing--60);
  --section-pad-light: var(--wp--preset--spacing--50);
  --section-pad-merge: var(--wp--preset--spacing--40);
}

/*
The section registry — the ONE place to edit when the palette or section blocks
change. Each entry:
  sel   : the selector that matches this section at sibling level in the DOM
  tone  : `light` (white/near-white/light-grey) or `dark` (colour/dark) — drives
          the "two light sections" trim
  color : background-colour identity — two adjacent sections whose `color`
          matches are treated as the same block and merged (works across types,
          e.g. a primary group next to the primary card-grid block)
*/
/*
 * Der gemeinsame Vorsatz aller Registry-Zeilen.
 *
 * Bewusst nur `.alignfull` und nicht `.wp-block-group.alignfull`: die
 * Verlaufsbaender des Bestands sind teils als core/columns gespeichert, nicht
 * als core/group. Mit der engeren Fassung fielen sie durch die Registry — die
 * Trimm- und Merge-Regeln feuerten dort nie, und der helle Nachbar bekam nur
 * die halbe statt der ganzen Portion. `alignfull` steht im Bestand
 * ausschliesslich an Top-Level-Sektionen.
 */
/* 1. Base — UNIVERSAL: every full-width section that has *any* background
      (theme-palette colour, WordPress default colour, gradient, or an inline
      custom hex that still gets `has-background`) plus the two leopard-wp-posts
      section blocks. This guarantees the 60px rhythm + flush edges for every
      painted section regardless of which colour source it uses — the adjacency
      refinements below only fine-tune known theme-palette pairs on top of this.
      Low specificity (single/triple class) → the compound adjacency rules win. */
.alignfull.has-background,
.card-grid-element,
.process-steps-element {
  margin-block: 0;
  padding-block: var(--section-pad-base);
}

/* 2. Light ↔ Light — trim both adjacent edges so the gap between two light
      sections doesn't stretch toward 120px. `A:has(+ B)` trims A's bottom;
      `A + B` trims B's top. */
.alignfull.has-base-background-color:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-background-color + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-background-color:has(+ .alignfull.has-base-transparent-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-background-color + .alignfull.has-base-transparent-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-background-color:has(+ .alignfull.has-tertiary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-background-color + .alignfull.has-tertiary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-background-color:has(+ .alignfull.has-quaternary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-background-color + .alignfull.has-quaternary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-background-color:has(+ .alignfull.has-septenary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-background-color + .alignfull.has-septenary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-background-color:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-background-color + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-background-color:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-background-color + .process-steps-element {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color:has(+ .alignfull.has-base-transparent-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color + .alignfull.has-base-transparent-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color:has(+ .alignfull.has-tertiary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color + .alignfull.has-tertiary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color:has(+ .alignfull.has-quaternary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color + .alignfull.has-quaternary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color:has(+ .alignfull.has-septenary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color + .alignfull.has-septenary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-base-transparent-background-color + .process-steps-element {
  padding-top: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color:has(+ .alignfull.has-base-transparent-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color + .alignfull.has-base-transparent-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color:has(+ .alignfull.has-tertiary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color + .alignfull.has-tertiary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color:has(+ .alignfull.has-quaternary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color + .alignfull.has-quaternary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color:has(+ .alignfull.has-septenary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color + .alignfull.has-septenary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-tertiary-background-color + .process-steps-element {
  padding-top: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color:has(+ .alignfull.has-base-transparent-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color + .alignfull.has-base-transparent-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color:has(+ .alignfull.has-tertiary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color + .alignfull.has-tertiary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color:has(+ .alignfull.has-quaternary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color + .alignfull.has-quaternary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color:has(+ .alignfull.has-septenary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color + .alignfull.has-septenary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-quaternary-background-color + .process-steps-element {
  padding-top: var(--section-pad-light);
}

.alignfull.has-septenary-background-color:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-septenary-background-color + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-septenary-background-color:has(+ .alignfull.has-base-transparent-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-septenary-background-color + .alignfull.has-base-transparent-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-septenary-background-color:has(+ .alignfull.has-tertiary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-septenary-background-color + .alignfull.has-tertiary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-septenary-background-color:has(+ .alignfull.has-quaternary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-septenary-background-color + .alignfull.has-quaternary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-septenary-background-color:has(+ .alignfull.has-septenary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-septenary-background-color + .alignfull.has-septenary-background-color {
  padding-top: var(--section-pad-light);
}

.alignfull.has-septenary-background-color:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-septenary-background-color + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-light);
}

.alignfull.has-septenary-background-color:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-light);
}

.alignfull.has-septenary-background-color + .process-steps-element {
  padding-top: var(--section-pad-light);
}

.card-grid-element.is-background-base:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-light);
}

.card-grid-element.is-background-base + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-light);
}

.card-grid-element.is-background-base:has(+ .alignfull.has-base-transparent-background-color) {
  padding-bottom: var(--section-pad-light);
}

.card-grid-element.is-background-base + .alignfull.has-base-transparent-background-color {
  padding-top: var(--section-pad-light);
}

.card-grid-element.is-background-base:has(+ .alignfull.has-tertiary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.card-grid-element.is-background-base + .alignfull.has-tertiary-background-color {
  padding-top: var(--section-pad-light);
}

.card-grid-element.is-background-base:has(+ .alignfull.has-quaternary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.card-grid-element.is-background-base + .alignfull.has-quaternary-background-color {
  padding-top: var(--section-pad-light);
}

.card-grid-element.is-background-base:has(+ .alignfull.has-septenary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.card-grid-element.is-background-base + .alignfull.has-septenary-background-color {
  padding-top: var(--section-pad-light);
}

.card-grid-element.is-background-base:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-light);
}

.card-grid-element.is-background-base + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-light);
}

.card-grid-element.is-background-base:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-light);
}

.card-grid-element.is-background-base + .process-steps-element {
  padding-top: var(--section-pad-light);
}

.process-steps-element:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-light);
}

.process-steps-element + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-light);
}

.process-steps-element:has(+ .alignfull.has-base-transparent-background-color) {
  padding-bottom: var(--section-pad-light);
}

.process-steps-element + .alignfull.has-base-transparent-background-color {
  padding-top: var(--section-pad-light);
}

.process-steps-element:has(+ .alignfull.has-tertiary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.process-steps-element + .alignfull.has-tertiary-background-color {
  padding-top: var(--section-pad-light);
}

.process-steps-element:has(+ .alignfull.has-quaternary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.process-steps-element + .alignfull.has-quaternary-background-color {
  padding-top: var(--section-pad-light);
}

.process-steps-element:has(+ .alignfull.has-septenary-background-color) {
  padding-bottom: var(--section-pad-light);
}

.process-steps-element + .alignfull.has-septenary-background-color {
  padding-top: var(--section-pad-light);
}

.process-steps-element:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-light);
}

.process-steps-element + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-light);
}

.process-steps-element:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-light);
}

.process-steps-element + .process-steps-element {
  padding-top: var(--section-pad-light);
}

/* 3. Same exact colour — merge the two sections into one visual block.
      Declared AFTER the light rules: for a same-colour light pair (e.g.
      base+base) both blocks match, and equal specificity means source order
      wins → merge (--40) correctly beats the light trim (--50). */
.alignfull.has-base-background-color:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-base-background-color + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-base-background-color:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-base-background-color + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-base-background-color:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-base-background-color + .process-steps-element {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-base-transparent-background-color:has(+ .alignfull.has-base-transparent-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-base-transparent-background-color + .alignfull.has-base-transparent-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-tertiary-background-color:has(+ .alignfull.has-tertiary-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-tertiary-background-color + .alignfull.has-tertiary-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-quaternary-background-color:has(+ .alignfull.has-quaternary-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-quaternary-background-color + .alignfull.has-quaternary-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-septenary-background-color:has(+ .alignfull.has-septenary-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-septenary-background-color + .alignfull.has-septenary-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-primary-background-color:has(+ .alignfull.has-primary-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-primary-background-color + .alignfull.has-primary-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-primary-background-color:has(+ .card-grid-element:not(.is-background-base)) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-primary-background-color + .card-grid-element:not(.is-background-base) {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-secondary-background-color:has(+ .alignfull.has-secondary-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-secondary-background-color + .alignfull.has-secondary-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-senary-background-color:has(+ .alignfull.has-senary-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-senary-background-color + .alignfull.has-senary-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-contrast-background-color:has(+ .alignfull.has-contrast-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-contrast-background-color + .alignfull.has-contrast-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-black-background-color:has(+ .alignfull.has-black-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-black-background-color + .alignfull.has-black-background-color {
  padding-top: var(--section-pad-merge);
}

.alignfull.has-light-blue-to-dark-blue-gradient-background:has(+ .alignfull.has-light-blue-to-dark-blue-gradient-background) {
  padding-bottom: var(--section-pad-merge);
}

.alignfull.has-light-blue-to-dark-blue-gradient-background + .alignfull.has-light-blue-to-dark-blue-gradient-background {
  padding-top: var(--section-pad-merge);
}

.card-grid-element:not(.is-background-base):has(+ .alignfull.has-primary-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.card-grid-element:not(.is-background-base) + .alignfull.has-primary-background-color {
  padding-top: var(--section-pad-merge);
}

.card-grid-element:not(.is-background-base):has(+ .card-grid-element:not(.is-background-base)) {
  padding-bottom: var(--section-pad-merge);
}

.card-grid-element:not(.is-background-base) + .card-grid-element:not(.is-background-base) {
  padding-top: var(--section-pad-merge);
}

.card-grid-element.is-background-base:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.card-grid-element.is-background-base + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-merge);
}

.card-grid-element.is-background-base:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-merge);
}

.card-grid-element.is-background-base + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-merge);
}

.card-grid-element.is-background-base:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-merge);
}

.card-grid-element.is-background-base + .process-steps-element {
  padding-top: var(--section-pad-merge);
}

.process-steps-element:has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-merge);
}

.process-steps-element + .alignfull.has-base-background-color {
  padding-top: var(--section-pad-merge);
}

.process-steps-element:has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-merge);
}

.process-steps-element + .card-grid-element.is-background-base {
  padding-top: var(--section-pad-merge);
}

.process-steps-element:has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-merge);
}

.process-steps-element + .process-steps-element {
  padding-top: var(--section-pad-merge);
}

/* ==================================================================
   Ungestrichene Sektionen
   ==================================================================
   Regeln 1-3 oben gelten fuer Farbbaender: dort ist padding-block die INNEN-
   luft des Bandes, margin ist 0, und zwei Baender stossen ohne weissen
   Streifen aneinander.

   Regeln 4-6 hier gelten fuer alles andere. Dort IST das padding-block der
   sichtbare Abstand, deshalb traegt jede Sektion nur die HALBE Portion — zwei
   benachbarte ergeben zusammen wieder --section-pad-light, denselben Wert, den
   Regel 2 auch zwischen zwei hellen Baendern stehen laesst.

   Warum es die Regeln ueberhaupt braucht: die Sektionsabstaende kamen frueher
   aus Spacer-Bloecken im Inhalt. Die sind entfernt (tools/remove-spacers), und
   der Block-Abstand aus der theme.json war gleichzeitig abgeschaltet — auf 115
   von 116 Seiten stand zwischen zwei Sektionen deshalb gar nichts mehr.

   $section-plain ist das Komplement zu Regel 1.
   INVARIANTE: wer Regel 1 um einen Marker erweitert, erweitert $section-plain
   um dasselbe :not(). Sonst bekaeme ein Band zusaetzlich die halbe Portion und
   der Abstand verdoppelte sich.

   Weil sich die beiden Selektormengen ausschliessen, kann keine Regel der
   einen Gruppe eine der anderen ueberschreiben — die Spezifitaet zwischen 4-6
   und 1-3 spielt keine Rolle. Gerechnet werden muss nur gegen den Kern:

     :root :where(.is-layout-constrained) > * { margin-block-start: 20px }

   Das ist (0,1,0). Wichtig: build/app.css wird VOR dem Inline-Stylesheet
   `global-styles-inline-css` ausgeliefert, bei Gleichstand gewinnt also der
   Kern. Deshalb steht hier KEIN :where() im Scope — damit laege die Regel bei
   (0,0,1) und verloere. `main > .is-layout-constrained` ist (0,1,1) und
   gewinnt. `.has-global-padding` setzt nur padding-inline und kollidiert nie.
   ================================================================== */
:root {
  /* Halbe Portion: zwei ungestrichene Sektionen ergeben --section-pad-light. */
  --section-pad-plain: calc(var(--section-pad-light) / 2);
  /*
   * Ueberschriften-Rhythmus.
   *
   * Eine Ueberschrift gehoert zu dem, was ihr FOLGT. Steht ueber und unter ihr
   * derselbe Abstand, haengt sie zwischen zwei Bloecken und der Leser sieht
   * nicht, worauf sie sich bezieht — genau der Zustand vorher, wo alles am
   * symmetrischen 20px-Blockabstand hing.
   *
   * Deshalb oben die volle Portion, unten ein Drittel davon. Die Werte stehen
   * hier, weil beide Seiten sie brauchen: base/_typography fuer verschachtelte
   * Ueberschriften (ueber margin), diese Datei fuer Ueberschriften, die selbst
   * eine Top-Level-Sektion sind (ueber padding).
   */
  --heading-space-before: var(--wp--preset--spacing--40);
  --heading-space-after: var(--wp--preset--spacing--10);
}

/* 4a. Block-Abstand zwischen Top-Level-Sektionen abschalten — fuer alle, auch
       fuer Baender (Regel 1 setzt dort dasselbe, kein Konflikt). Der Abstand
       kommt ab hier ausschliesslich aus Padding, nie aus margin: nur so
       stossen zwei Farbflaechen ohne weissen Streifen aneinander.
       Ersetzt das `margin-block-start: 0 !important` aus base/_base. */
main > .is-layout-constrained > * {
  margin-block: 0;
}

/* 4b. Halbe Portion fuer jede ungestrichene Sektion. */
main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-block: var(--section-pad-plain);
}

/* 4c. Gestrichene Sektionen, die Regel 1 nicht trifft: sie verlangt
       `.alignfull`, im Bestand stehen aber auch eingerueckte Gruppen mit
       Farbe, die nicht ueber die volle Breite laufen.
       Ohne diese Regel fielen sie durch beide Raster — $section-plain schliesst
       sie ueber :not(.has-background) aus — und stuenden voellig ohne Innenluft
       da. Volle Portion wie jedes andere Band. */
main > .is-layout-constrained > .has-background:not(.alignfull) {
  padding-block: var(--section-pad-base);
}

/* 5. Grenze Band ↔ ungestrichen.
      Das Band gibt nach aussen nichts ab, sein Padding liegt innen. Also traegt
      die ungestrichene Seite hier die GANZE Portion statt der halben — sonst
      waere ausgerechnet diese Fuge nur halb so gross wie zwischen zwei
      ungestrichenen Sektionen. Damit ist jede Fuge zwischen zwei Top-Level-
      Sektionen --section-pad-light, in jeder Kombination. */
main > .is-layout-constrained > .alignfull.has-base-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-base-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-base-transparent-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-base-transparent-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-tertiary-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-tertiary-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-quaternary-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-quaternary-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-septenary-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-septenary-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-primary-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-primary-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-secondary-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-secondary-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-senary-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-senary-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-contrast-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-contrast-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-black-background-color + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-black-background-color) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .alignfull.has-light-blue-to-dark-blue-gradient-background + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .alignfull.has-light-blue-to-dark-blue-gradient-background) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .card-grid-element:not(.is-background-base) + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .card-grid-element:not(.is-background-base)) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .card-grid-element.is-background-base + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .card-grid-element.is-background-base) {
  padding-bottom: var(--section-pad-light);
}

main > .is-layout-constrained > .process-steps-element + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--section-pad-light);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(+ .process-steps-element) {
  padding-bottom: var(--section-pad-light);
}

/* 6. Seitenanfang und -ende.
      Ein randloses Element ganz oben oder unten — Bild-Buehne, Farbband —
      schliesst buendig an Header bzw. Footer an; ein weisser Streifen davor
      saehe nach Fehler aus. Baender koennen diese Regel gar nicht treffen
      ($section-plain schliesst sie aus), sie behalten ihre Innenluft ohnehin.
      Eine eingerueckte Textsektion als erstes Kind behaelt ihre halbe Portion,
      sonst klebte die H1 an der Navigation. */
main > .is-layout-constrained > :first-child.alignfull:not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-block-start: 0;
}

main > .is-layout-constrained > :last-child.alignfull:not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-block-end: 0;
}

/* ==================================================================
   Ueberschriften an der Sektionsgrenze
   ==================================================================
   Zwei Faelle, in denen der Abstand einer Ueberschrift NICHT aus ihrem margin
   kommt (das regelt base/_typography), sondern aus dem Sektions-Padding:

   7. Die Ueberschrift IST eine Top-Level-Sektion.
   8. Die Sektion ENDET mit einer Ueberschrift — der Inhalt, den sie ankuendigt,
      steht in der naechsten Sektion. Das ist im Bestand haeufig: die Redaktion
      setzt die Zwischenueberschrift ans Ende des Textblocks statt an den Anfang
      des folgenden. Ohne diese Regel steht sie 48px unter dem Absatz und 60px
      ueber dem, was sie ankuendigt — also naeher am Falschen.

   Beide Male traegt die Ueberschrift nach oben die normale Portion und gibt
   nach unten nur --heading-space-after ab; die Folgesektion ebenso. Aus 60/60
   wird 60/32.
   ================================================================== */
/* 7. Ueberschrift als eigene Sektion. */
main > .is-layout-constrained > :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6):not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-block-end: var(--heading-space-after);
}

main > .is-layout-constrained > :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6) + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--heading-space-after);
}

/*
 * 8. Sektion, die mit einer Ueberschrift endet.
 *
 * Zwei Schreibweisen, weil die Ueberschrift entweder direkt in der Sektion
 * steht oder — der Regelfall in diesem Theme — in der Huelle
 * `columns > column`, die jedes Muster mitbringt. Tiefer wird nicht gesucht:
 * was darunter liegt, ist Karten- oder Spaltenlayout und endet nicht mit einer
 * blanken Ueberschrift.
 */
main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(> :last-child:is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6)),
main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(> .wp-block-columns > .wp-block-column > :last-child:is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6)) {
  padding-bottom: var(--heading-space-after);
}

main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(> :last-child:is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6)) + :not(.has-background):not(.card-grid-element):not(.process-steps-element),
main > .is-layout-constrained > :not(.has-background):not(.card-grid-element):not(.process-steps-element):has(> .wp-block-columns > .wp-block-column > :last-child:is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6)) + :not(.has-background):not(.card-grid-element):not(.process-steps-element) {
  padding-top: var(--heading-space-after);
}

/* ==================================================================
   9. Bild-Buehne mit angehaengtem Inhalt
   ==================================================================
   Auf 21 von 81 Seiten mit Bild-Buehne steht der Einleitungstext IN der
   Hero-Sektion statt dahinter: im Editor wurde er in die Buehne hinein
   gesetzt statt daneben. Er bekommt dadurch nur den Blockabstand von 20px
   statt der Sektionsfuge und klebt sichtbar am Bild — auf
   /reinstmedien-rohrleitungsbau gemessene 20px gegen 60px auf einer Seite,
   die den Text als eigene Sektion fuehrt.

   Alles, was der Buehne in derselben Sektion folgt, bekommt deshalb die
   Sektionsfuge. `~` statt `+`, weil manche Seiten mehrere Bloecke dort
   angehaengt haben (die Stellenanzeigen etwa vier).

   Das ist eine Kruecke fuer eine Struktur, die eigentlich im Inhalt gerade
   gezogen gehoert — der Text soll eine eigene Sektion sein. Bis dahin sorgt
   die Regel dafuer, dass er wenigstens richtig steht.
   ================================================================== */
main > .is-layout-constrained > .image-overlay-element > .wp-block-columns:first-child ~ * {
  margin-block-start: var(--section-pad-light);
}

/*
 * Component-specific styles
 * ------------------------- */
/*
slick slider
==============================================
Custom styling for slick slider.
*/
.slick-slider {
  visibility: hidden;
}
.slick-slider.slick-initialized {
  visibility: visible !important;
}
.slick-slider .slick-prev {
  left: var(--wp--preset--spacing--40);
}
.slick-slider .slick-prev:before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: url(./images/slider-chevron-left.99998832.svg) no-repeat;
}
.slick-slider .slick-prev,
.slick-slider .slick-next {
  width: 60px;
  height: 60px;
  background: var(--wp--preset--color--base) !important;
  z-index: 1;
  opacity: 0.75;
  transition: opacity 0.3s ease;
}
.slick-slider .slick-prev:hover,
.slick-slider .slick-next:hover {
  opacity: 1;
}
@media (max-width: 991.98px) {
  .slick-slider .slick-prev,
  .slick-slider .slick-next {
    display: none !important;
  }
}
.slick-slider .slick-next {
  right: var(--wp--preset--spacing--40);
}
.slick-slider .slick-next:before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: url(./images/slider-chevron-right.1d9e2625.svg) no-repeat;
}
.slick-slider .slick-slide {
  padding: 0 !important;
}
.slick-slider .slick-dots {
  position: relative;
  width: auto;
  bottom: 0;
  margin-top: 2px;
}
.slick-slider .slick-dots .slick-prev {
  left: -60px;
}
.slick-slider .slick-dots li {
  width: 10px;
  height: 10px;
}
.slick-slider .slick-dots li button:before {
  content: "";
  width: 10px;
  height: 10px;
  background: var(--wp--preset--color--quaternary);
  opacity: 1 !important;
  transition: background 0.3s ease;
}
.slick-slider .slick-dots li.slick-active button:before {
  width: 12px;
  height: 12px;
  top: -1px;
  background: var(--wp--preset--color--primary);
}
.slick-slider .slick-dots-container {
  display: flex;
  width: 100%;
  justify-content: center;
  margin-top: var(--wp--preset--spacing--30);
}
.slick-slider .slick-dots-container .slick-prev,
.slick-slider .slick-dots-container .slick-next {
  position: relative;
  display: block !important;
  width: 17px;
  height: 34px;
  top: initial;
  right: initial;
  left: initial;
  transform: none;
}
.slick-slider .slick-dots-container .slick-prev:before {
  background: url(./images/chevron-left.cb0cc72f.svg) no-repeat 0 50%;
}
.slick-slider .slick-dots-container .slick-next:before {
  background: url(./images/chevron-right.ad5a1a7d.svg) no-repeat 0 50%;
}

/*
Hero-Carousel: keine seitlichen Chevron-Pfeile.
Die Navigation laeuft ueber die Punkte unter dem Slider — die grossen Pfeile
links/rechts ueber dem Bild entfallen. Nur fuer Slider mit image-overlay-Slides
(die Hero-Buehne), damit andere Carousels ihre Pfeile behalten. `> .slick-*`
trifft die von Slick eingesetzten Seitenpfeile, nicht die Prev/Next in der
.slick-dots-container.
*/
.slick-slider:has(.image-overlay-element) > .slick-prev,
.slick-slider:has(.image-overlay-element) > .slick-next {
  display: none !important;
}

/*
PowerTip
==============================================
Custom styling for powerTip.
*/
#powerTip strong {
  display: block;
  color: var(--wp--preset--color--black);
  margin-bottom: 1rem;
}

/*
Spalten-Karte
==============================================
Die Karten der Spalten-Pattern sind kein eigener Block, sondern eine
wp-block-column mit Bootstrap-Schatten: Bild, fette Ueberschrift, Anrisstext
und — je nach Pattern — ein Pfeil-Button.

  .wp-block-column.shadow / .h-100.shadow / .shadow-lg     die Karte
    figure.wp-block-image                                   Bild
    .wp-block-group > .wp-block-columns > .wp-block-column  Innenabstand
      .wp-block-group                                       Titelzeile
      p                                                     Anrisstext
      .wp-block-buttons                                     Pfeil-Button

Die Schatten-Klasse ist das Einzige, was alle Karten im gespeicherten Markup
gemeinsam haben — die Pattern-Wrapper darum herum heissen mal
three-columns-image-text-element, mal gar nichts. Deshalb haengt das Design
hier daran und nicht am Pattern. Eine Stichprobe ueber den gesamten Bestand
(286 Spalten mit Schatten-Klasse) hat keine gefunden, die keine Karte waere.

Groessen: Titel und Anrisstext stehen auf der Groesse des Fliesstextes
(medium, 1.125rem) — so, wie die Karten vor dem 24.08.2026 aussahen. Die
Verkleinerung auf 0.875rem, die damals alle Karten des Bestandes vereinheitlicht
hat, ist hier zurueckgenommen: in den Bild-Text-Karten steht Text, kein Etikett,
und er soll sich so lesen wie ein Absatz daneben. Die Hierarchie in der Karte
traegt allein das Gewicht (700), nicht die Groesse.

Nicht angefasst sind der Card-Grid-Block und der Posts-Slider — die stehen
weiter auf 0.875rem (siehe .type-card-title in base/_typography).
*/
.wp-block-column.shadow,
.wp-block-column.shadow-lg {
  /*
   * Der Anrisstext erbt den Fliesstext und braucht deshalb keine eigene
   * Groesse. Die Ueberschrift dagegen braucht eine Ansage, weil im Bestand
   * beide Schreibweisen liegen: Karten von vor dem 24.08.2026 tragen
   * has-medium-font-size, spaeter eingefuegte has-small-font-size. Beide
   * Klassen schreibt WordPress mit !important, und .headline-dot setzt in
   * base/_base ebenfalls !important auf 1.25rem — nur ueber die hoehere
   * Spezifitaet (0,3,0) landen alle drei Faelle sicher auf derselben Groesse.
   */
  /*
   * Der Punkt vor der Ueberschrift steht sonst auf festen 17px, unabhaengig von
   * der Zeile daneben. In der Karte laeuft er in em mit, damit er zur
   * Kartenueberschrift passt statt sie zu ueberragen.
   */
  /*
   * Streckkette bis zur Textspalte. Sie ist die Voraussetzung dafuer, dass der
   * Pfeil-Button mit margin-top: auto ans untere Ende faellt und die Buttons
   * einer Reihe auf einer Linie stehen — auch wenn die Anrisstexte verschieden
   * lang sind. Das margin-top selbst steht in component/_chevron-button,
   * dieselbe Loesung wie im Card Grid (block/_card-grid, __actions).
   *
   * Die Zwischenebenen sind WordPress-Standardmarkup und tragen keine eigene
   * Klasse, deshalb der ausgeschriebene Kindpfad.
   */
  display: flex;
  flex-direction: column;
  /*
   * Einzelfall aus dem Bestand: dort haengt der Button direkt an der Karte
   * statt in der Textspalte und stuende sonst ohne Innenabstand an der Kante.
   */
}
.wp-block-column.shadow .wp-block-heading,
.wp-block-column.shadow-lg .wp-block-heading {
  font-size: var(--wp--preset--font-size--medium) !important;
  font-weight: 700;
}
.wp-block-column.shadow .headline-dot:before, .wp-block-column.shadow .list-element li:before, .list-element .wp-block-column.shadow li:before, .wp-block-column.shadow #powerTip strong:before, #powerTip .wp-block-column.shadow strong:before,
.wp-block-column.shadow-lg .headline-dot:before,
.wp-block-column.shadow-lg .list-element li:before,
.list-element .wp-block-column.shadow-lg li:before,
.wp-block-column.shadow-lg #powerTip strong:before,
#powerTip .wp-block-column.shadow-lg strong:before {
  width: 1em;
  height: 1em;
  left: calc(var(--wp--preset--spacing--30) * -1);
}
.wp-block-column.shadow > .wp-block-group,
.wp-block-column.shadow-lg > .wp-block-group {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
}
.wp-block-column.shadow > .wp-block-group > .wp-block-columns,
.wp-block-column.shadow-lg > .wp-block-group > .wp-block-columns {
  flex: 1 1 auto;
  margin-bottom: 0;
}
.wp-block-column.shadow > .wp-block-group > .wp-block-columns > .wp-block-column,
.wp-block-column.shadow-lg > .wp-block-group > .wp-block-columns > .wp-block-column {
  display: flex;
  flex-direction: column;
}
.wp-block-column.shadow > .wp-block-buttons,
.wp-block-column.shadow-lg > .wp-block-buttons {
  padding: 0 var(--wp--preset--spacing--20) var(--wp--preset--spacing--20);
}

/*
Chevron-Button
==============================================
Der quadratische Kasten mit dem Pfeil: dunkler Rahmen, dunkler Chevron, beim
Ueberfahren schwarze Flaeche mit weissem Chevron. Er steht immer linksbuendig
und als letztes Element seines Kastens.

DIESE DATEI IST DIE EINZIGE STELLE, an der das Aussehen steht. Vorher lag es
als Mixin in abstract/_mixins und wurde an drei Stellen aufgerufen — einmal in
base/_base (.readmore), einmal fuer .readmore-icon und einmal fuer die
zentrierte Bild-Buehne. Dazu kam ein `@extend .readmore` im Pattern
three-columns-image-text-element. Der Rumpf stand danach viermal im
Stylesheet, und der @extend haengte seine Selektorkette ausserdem an JEDEN
anderen Selektor, der `.readmore` nennt — auch an die :has()-Regeln, wo dabei
Ketten wie
`.wp-block-column:has(> .three-columns-image-text-element ... .wp-block-button__link)`
herauskamen, die nie greifen konnten.

Jetzt: eine Selektorliste, ein Rumpf.

WO DER BUTTON AUFTAUCHT

  a.readmore                     Posts-Slider (gosign, serverseitig gebaut,
                                 siehe gosign-posts-slider-block/src/init.php)
  .wp-block-button.readmore      Karten- und Uebersichts-Pattern sowie der
                                 gesamte Bestand, den tools/migrate-card-buttons
                                 umgestellt hat
  .three-columns-image-text-...  Bestand, dessen Buttons noch gar keine Klasse
                                 tragen. Faellt weg, sobald das Werkzeug ueber
                                 alle Inhalte gelaufen ist.

Adressiert wird ausdruecklich der LINK, nicht der Wrapper. Frueher stand die
Regel auf der blossen Klasse `.readmore`, und die traegt bei einem Button-Block
der Wrapper-div — der bekam also Rahmen, feste 41px und overflow: hidden, und
der beschriftete Link darin wurde auf 41px zurechtgeschnitten. Auf
/kompetenzen war das zu sehen: ein leerer Kasten statt eines Pfeils.

!important auf Flaeche und Schriftfarbe, weil WordPress die Paletten-Klassen
(has-base-background-color, has-black-color) selbst mit !important schreibt —
ohne das bliebe der Ruhezustand auch beim Ueberfahren stehen. Auf beiden
Zustaenden gesetzt, sonst gewinnt die Ruhefarbe. Dasselbe Vorgehen wie in
faeth-button-outline.

Der Kasten ist echtes CSS (Rahmen + Flaeche), nur der Pfeil kommt aus einer
Datei — als Maske ueber currentColor. Flaeche, Rahmen und Pfeil tweenen damit
nativ im Takt von $hover-transition. Ein Wechsel zweier fertiger SVGs koennte
das nicht: background-image interpoliert kein Browser.

Die Beschriftung ("weiter", "Weiterlesen") bleibt im Markup — sie traegt den
Link fuer Screenreader —, faellt aber durch die feste Hoehe und overflow:
hidden aus dem sichtbaren Kasten.
*/
/*
 * 1 — Aussehen. Genau ein Rumpf fuer die ganze Seite.
 */
a.readmore,
.wp-block-button.readmore > .wp-block-button__link,
.three-columns-image-text-element .wp-block-buttons .wp-block-button > .wp-block-button__link {
  display: inline-block;
  flex: 0 0 auto;
  width: 41px;
  height: 41px;
  overflow: hidden;
  /* Die Pattern-Buttons erben eine vertikale Polsterung aus theme.json
     (block/_wp-block-button setzt sie mit !important). Der Kasten hat eine
     feste Groesse und braucht sie nicht. */
  padding: 0 !important;
  border: 1px solid var(--wp--preset--color--black);
  background: none;
  background-color: var(--wp--preset--color--base) !important;
  color: var(--wp--preset--color--black) !important;
  text-decoration: none;
  vertical-align: middle;
  /* Kein Browser-Outline im Ruhezustand, dafuer ein eigener Fokusring — wie
     bei den uebrigen Buttons. */
  outline: none;
  transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease;
}
a.readmore:before,
.wp-block-button.readmore > .wp-block-button__link:before,
.three-columns-image-text-element .wp-block-buttons .wp-block-button > .wp-block-button__link:before {
  content: "" !important;
  display: block;
  width: 100%;
  height: 100%;
  background-color: currentColor;
  -webkit-mask: url(./images/readmore-chevron.8a9370b9.svg) no-repeat center/9px 16px;
  mask: url(./images/readmore-chevron.8a9370b9.svg) no-repeat center/9px 16px;
}
a.readmore:hover, a.readmore:focus-visible,
.wp-block-button.readmore > .wp-block-button__link:hover,
.wp-block-button.readmore > .wp-block-button__link:focus-visible,
.three-columns-image-text-element .wp-block-buttons .wp-block-button > .wp-block-button__link:hover,
.three-columns-image-text-element .wp-block-buttons .wp-block-button > .wp-block-button__link:focus-visible {
  background-color: var(--wp--preset--color--black) !important;
  border-color: var(--wp--preset--color--black);
  color: var(--wp--preset--color--base) !important;
}
a.readmore:focus-visible,
.wp-block-button.readmore > .wp-block-button__link:focus-visible,
.three-columns-image-text-element .wp-block-buttons .wp-block-button > .wp-block-button__link:focus-visible {
  outline: 2px solid var(--wp--preset--color--secondary);
  outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce) {
  a.readmore,
  .wp-block-button.readmore > .wp-block-button__link,
  .three-columns-image-text-element .wp-block-buttons .wp-block-button > .wp-block-button__link {
    transition-duration: 0.01ms !important;
  }
}

/*
 * 2 — Stellung: linksbuendig, als letztes Element, am unteren Rand.
 *
 * margin-top: auto drueckt den Button ans Ende seines Kastens. Erst dadurch
 * stehen die Buttons einer Reihe auf einer Linie, auch wenn die Anrisstexte
 * verschieden lang sind — vorher hing der Button direkt am Text und sprang mit
 * jeder Zeile mit, was ueber eine Reihe hinweg unruhig aussah.
 *
 * Voraussetzung ist, dass der umgebende Kasten eine Flex-Spalte ist und bis
 * zur vollen Hoehe durchgestreckt wird. Diese Streckketten stehen dort, wo der
 * jeweilige Kasten beschrieben ist: component/_column-card (Karten),
 * block/_wp-block-gosign (Posts-Slider), block/_card-grid (Card Grid) und
 * weiter unten in dieser Datei fuer die Seiten-Uebersichten.
 *
 * padding-top ersetzt den Blockabstand, den margin-top: auto verdraengt.
 */
.wp-block-buttons:has(> .wp-block-button.readmore),
.three-columns-image-text-element .wp-block-buttons,
a.readmore {
  margin-top: auto;
  padding-top: var(--wp--preset--spacing--20);
  /* Linksbuendig, egal was im Bestand als justifyContent gespeichert ist. */
  justify-content: flex-start;
}

/*
 * 3 — Bestand: der Button steht noch rechts neben der Ueberschrift.
 *
 * In den alten Pattern lag er in einer Flex-Zeile mit justifyContent. Dieses
 * Layout steckt als Attribut im gespeicherten Markup und laesst sich durch eine
 * Aenderung der Pattern-Dateien nicht nachziehen — eingefuegte Instanzen
 * behalten ihre Zeile. Bis das Werkzeug ueber alle Inhalte gelaufen ist, loest
 * die Regel die Zeile hier auf: Ueberschrift oben, Button darunter, beides
 * linksbuendig.
 */
.wp-block-group:has(> .wp-block-buttons > .wp-block-button.readmore) {
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
}

/*
 * 4 — Seiten-Uebersicht (z. B. /kompetenzen): Bild, Ueberschrift, Button.
 * Die Spalte wird zur Flex-Spalte, damit der Button aus Regel 2 ans untere
 * Ende faellt und ueber eine Reihe hinweg auf einer Linie steht — dieselbe
 * Loesung wie in der Karte (component/_column-card).
 */
.wp-block-column:has(> .wp-block-buttons > .wp-block-button.readmore) {
  display: flex;
  flex-direction: column;
}

/*
 * Pattern-specific styles
 * ----------------------- */
/*
Two rows two columns text image element
==============================================
Custom styling for two rows two columns text image element.
*/
.two-rows-two-columns-text-image-element figure {
  margin-bottom: 0;
}

/*
Video element
==============================================
Custom styling for video element.
*/
.video-element .video-container {
  position: relative;
}
.video-element .video-container .video-content .wp-block-columns {
  height: 100%;
}
.video-element .video-container .video-content .wp-block-columns .wp-block-column {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  height: 100%;
}
@media (min-width: 768px) {
  .video-element .video-container .video-content {
    position: absolute;
    display: flex;
    width: 40%;
    height: 85%;
    top: 0;
    left: var(--wp--preset--spacing--20);
    background: var(--wp--preset--color--base);
    padding: var(--wp--preset--spacing--30);
  }
}

/*
Services element
==============================================
Die drei Teaser-Kacheln der Startseite: ein Bild, darauf unten links der
Titel, beim Ueberfahren legt sich Faeth-Blau darueber und ein Untertitel
faehrt aus.

Aufbau (aus dem Bestand, wp_block "Leistungsumfang"):

  .wp-block-gutenbee-banner            Link-Huelle des GutenBee-Banners
    .wp-block-cover.align-items-end    die Kachel
      img.wp-block-cover__image-background
      span.wp-block-cover__background  die Abdunklung
      .wp-block-cover__inner-container
        p                              Titel
        p.overlay-text                 Untertitel, faehrt beim Hover aus
*/
.services-element {
  /*
   * Hoehe und Kachel-Charakter
   * --------------------------
   * block/_wp-block-cover loest Cover unterhalb von lg auf: Bild zurueck in
   * den Fluss, Text darunter, min-height weg. Fuer Inhalts-Cover mit ganzen
   * Absaetzen ist das richtig — diese Kacheln tragen aber nur eine Zeile und
   * leben davon, dass Bild und Beschriftung EIN Element sind. Aufgeloest
   * standen auf dem Handy graue Kaesten mit viel Leerraum ueber und unter dem
   * Bild.
   *
   * Sie bleiben deshalb auf jeder Breite eine Kachel. Die !important hier sind
   * die Gegenstuecke zu denen in block/_wp-block-cover — anders ist an eine
   * !important-Regel nicht heranzukommen; sie greifen nur innerhalb dieser
   * Sektion.
   */
}
.services-element .wp-block-cover {
  display: flex !important;
  min-height: 500px !important;
  /*
   * Das Bild fuellt die Kachel. Der Schnitt liegt leicht ueber der Mitte
   * (42 % statt 50 %): die Motive sind Hochformat mit der Maschine etwas
   * oberhalb der Bildmitte, und auf dem Handy — wo die Kachel am ehesten
   * quadratisch wird und am meisten weggeschnitten werden muss — stiess ihr
   * Dach sonst an die obere Kante.
   */
  /*
   * Abdunklung
   * ----------
   * Der Cover-Block bringt eine flaechige Schicht mit (dimRatio 50, also
   * 50 % Schwarz ueber dem ganzen Bild). Auf diesen Motiven — Maschinen auf
   * hellem Grund — legte sich damit ein grauer Schleier ueber das Produkt,
   * und der weisse Titel stand trotzdem nur knapp lesbar auf hellem Blech.
   * Beides zusammen: das Bild war dunkler, der Text nicht heller.
   *
   * Stattdessen ein Verlauf von unten. Oben bleibt das Motiv unangetastet
   * und damit erkennbar, nach unten laeuft er auf 85 % Schwarz zu — dort,
   * wo der Titel steht. Das Bild wird heller UND der Text besser lesbar.
   *
   * Das !important gilt der Flaechenfarbe: der Kern schreibt sie ueber
   * `.wp-block-cover .has-background-dim:not([class*="-background-color"])`
   * und liegt damit auf derselben Spezifitaet. Bliebe sie stehen, saesse
   * das Schwarz hinter dem Verlauf und die transparenten Stellen waeren
   * gar nicht transparent. Die Kurzschreibweise `background` raeumt sie mit
   * ab.
   */
  /*
   * Untertitel: faehrt beim Ueberfahren aus. max-height statt height, weil
   * die Zeilenzahl vom Text abhaengt.
   */
}
@media (max-width: 991.98px) {
  .services-element .wp-block-cover {
    min-height: 420px !important;
  }
}
@media (max-width: 767.98px) {
  .services-element .wp-block-cover {
    min-height: 380px !important;
  }
}
.services-element .wp-block-cover .wp-block-cover__image-background {
  position: absolute !important;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: cover;
  object-position: center 42%;
}
.services-element .wp-block-cover .wp-block-cover__inner-container {
  position: relative !important;
  z-index: 1;
}
.services-element .wp-block-cover .wp-block-cover__background {
  background: linear-gradient(to top, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.62) 18%, rgba(0, 0, 0, 0.22) 45%, rgba(0, 0, 0, 0) 75%) !important;
  opacity: 1;
  /*
   * Hover-Tint. Liegt als eigene Ebene ueber dem Verlauf, damit sich die
   * Deckkraft weich fahren laesst — ein background-image interpoliert
   * kein Browser.
   */
}
.services-element .wp-block-cover .wp-block-cover__background:before {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: var(--wp--preset--color--primary);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.services-element .wp-block-cover .wp-block-cover__inner-container .overlay-text {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease;
  margin: 0;
}
.services-element .wp-block-cover:hover .wp-block-cover__inner-container .overlay-text {
  max-height: 40px;
}
.services-element .wp-block-gutenbee-banner:hover .wp-block-cover .wp-block-cover__background:before {
  opacity: 0.75;
}
@media (prefers-reduced-motion: reduce) {
  .services-element .wp-block-cover__background:before,
  .services-element .wp-block-cover .overlay-text {
    transition-duration: 0.01ms !important;
  }
}

/*
Reference element
==============================================
Custom styling for reference element.
*/
.reference-element .wp-block-image {
  filter: grayscale(100%);
  transition: filter 0.3s ease;
  border: 1px solid #dee2e6;
  margin-bottom: 0 !important;
  padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--10);
}
.reference-element .wp-block-image:hover {
  cursor: pointer;
  filter: grayscale(0);
}

/*
Image overlay element
==============================================
Custom styling for image overlay element.
*/
.image-overlay-element .wp-block-cover {
  align-items: end;
  /* Textkasten-Breite: 40% der Buehne, aber nie breiter als 600px. */
}
@media (min-width: 992px) {
  .image-overlay-element .wp-block-cover .wp-block-columns {
    width: 40%;
    max-width: 600px;
  }
}
@media (max-width: 767.98px) {
  .image-overlay-element .wp-block-cover__inner-container {
    padding-left: var(--wp--style--root--padding-left) !important;
    padding-right: var(--wp--style--root--padding-right) !important;
  }
}

/*
Hero-Buehne
==============================================
Buehne statt Content-Bild: das Bild laeuft unabgedunkelt, den Kontrast traegt
allein der halbtransparent weisse Textkasten.

Kriterium ist der weisse Textkasten (.has-base-transparent-background-color) im
Cover: ein image-overlay-Element mit diesem Kasten ist ein echter Header-Hero
(Startseite ebenso wie z.B. /kompetenzen/.../system-und-modulbau/). Der
"Eyebrow" ist dafuer ungeeignet — er ist mal ein
<p class="hero-eyebrow"> (home), mal ein <h2 class="has-small-font-size">
(Unterseiten); der Textkasten dagegen ist bei allen gleich.

Die Buehnenhoehe (min-height) bleibt bewusst auf die Startseite begrenzt: die
uebrigen Heroes bringen sinnvolle eigene Mindesthoehen (346–479px) mit.
*/
.image-overlay-element:has(.has-base-transparent-background-color) {
  /*
   * Kern-Pendant zu background-size: cover / background-position: center.
   * core/cover rendert das Bild als <img> mit object-fit — visuell dasselbe,
   * behaelt aber srcset und fetchpriority fuer den LCP.
   */
  /*
   * Kein Overlay: der Inhalt bringt den Dim ohnehin auf 0%
   * (has-background-dim-0), die frueher hier gesetzte Abdunklung faellt weg.
   */
}
.image-overlay-element:has(.has-base-transparent-background-color) .wp-block-cover__image-background {
  object-fit: cover;
  object-position: center;
}
.image-overlay-element:has(.has-base-transparent-background-color) .wp-block-cover__background {
  opacity: 0 !important;
}

body.home .image-overlay-element {
  /* Eine Stellschraube fuer die Buehnenhoehe — nur Startseite. */
  --faeth-hero-height: clamp(360px, 60vh, 640px);
}
body.home .image-overlay-element .wp-block-cover {
  /*
   * Der Block bringt seine Mindesthoehe als Inline-Style mit (auf der
   * Startseite 850px), deshalb ist !important der einzige Hebel.
   * 60vh laesst den folgenden Abschnitt bei 100% Zoom mit ins Bild.
   */
  min-height: var(--faeth-hero-height) !important;
}

/*
Hero-Eyebrow
==============================================
Kleines Label ueber der Ueberschrift. Gleiche Typografie wie die Topbar-Labels
im Header, damit die Marke eine wiedererkennbare Label-Schrift hat.

Die Farbe ist secondary — dasselbe Hellblau wie bei den uebrigen Eyebrows
(card-grid, process-steps, faq-element, contact-section). Das Label ist damit
ueberall die einzige farbige Zeile ueber der Ueberschrift.
*/
.hero-eyebrow {
  font-size: var(--wp--preset--font-size--x-small);
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  margin-bottom: 0.5rem;
}

/*
 * Farbe gesondert und ueber den Tag mitgeschrieben: bestehende Labels tragen
 * im Inhalt noch has-black-color, und WordPress schreibt die Paletten-Klassen
 * mit !important — und zwar spaeter im Dokument als app.css. Eine einklassige
 * Regel verloere diesen Gleichstand, p.hero-eyebrow (0,1,1) gewinnt ihn.
 */
p.hero-eyebrow {
  color: var(--wp--preset--color--secondary) !important;
}

/*
Hero-Textkasten, -Schrift und -Button
==============================================
Gilt fuer alle image-overlay Hero-Elemente (Startseite + Seitenkoepfe), sobald
sie den hellen Textkasten (base-transparent) tragen.
*/
.image-overlay-element {
  /* Textkasten: 35px umlaufend, fast deckendes Weiss ueber dem Bild. */
  /*
  Hero-Button
  ----------------------------------------------
  Der gruene Standard-Button aus block/_wp-block-button: gleiche Flaeche,
  gleicher Verlaufs-Hover (senary laeuft nach unten in den helleren Ton aus),
  nur in der Hero-Typografie — klein, fett, Grossbuchstaben.

  Der Button steht immer linksbuendig unter dem Text, unabhaengig davon,
  welche Ausrichtung im Editor am wp:buttons-Block hinterlegt ist: die
  Textkasten-Inhalte sind linksbuendig gesetzt, ein mittig stehender Button
  bricht diese Kante.
  */
  /*
   * Die Farb-Klassen des Blocks werden ueberstimmt: aeltere Heroes tragen am
   * Button noch den Outline-Stil (has-base-background-color, has-black-color),
   * laufen aber ebenfalls gruen. Die drei Klassen im Selektor heben die Regel
   * ausserdem ueber den Outline-Button aus block/_wp-block-button, der spaeter
   * importiert wird. Pfeil-Links (.readmore) bleiben aussen vor.
   */
}
.image-overlay-element .has-base-transparent-background-color {
  background-color: rgba(255, 255, 255, 0.8745098039) !important;
  padding: 35px;
  /*
   * Mobil buendig mit dem restlichen Inhalt: das seitliche Padding faellt
   * weg, damit der Text auf der Wurzel-Einrueckung sitzt, die der
   * inner-container <md ohnehin setzt (siehe oben).
   */
  /*
   * Schriftfarbe gesondert (die Preset-Klasse .has-*-color kommt von
   * WordPress mit !important, deshalb hier ebenfalls):
   * Die Ueberschrift bleibt immer schwarz — auch mobil, wie im
   * Referenzbild. Der Fliesstext steht in der Standardfarbe der Seite, der
   * Eyebrow in secondary (siehe oben) — beides auf allen Breiten.
   */
  /*
   * Eyebrow-Optik auch fuer Unterseiten: dort ist der Eyebrow ein kleines
   * <h2 class="has-small-font-size"> (auf der Startseite dagegen ein
   * <p class="hero-eyebrow">, das seine Label-Typo schon global bekommt).
   * Gleiche Anmutung: fett, Grossbuchstaben, etwas Laufweite. Headings kommen
   * per theme.json mit font-weight: 300 und niedriger Spezifitaet — diese
   * Klassenregel uebersteuert das ohne !important. Die Farbe braucht das
   * !important dagegen sehr wohl: sie muss die Ueberschriften-Regel direkt
   * darueber schlagen.
   */
  /*
   * Fliesstext in der Standardfarbe der Seite (contrast aus der theme.json),
   * nicht schwarz — der Absatz im Textkasten soll sich lesen wie jeder
   * andere Absatz auch. Das !important bleibt noetig: bestehende Heroes
   * tragen im Inhalt noch has-black-color, und WordPress schreibt die
   * Paletten-Klassen mit !important — und zwar spaeter im Dokument als
   * app.css.
   */
}
@media (max-width: 767.98px) {
  .image-overlay-element .has-base-transparent-background-color {
    padding-left: 0;
    padding-right: 0;
  }
}
.image-overlay-element .has-base-transparent-background-color .wp-block-heading {
  color: #000 !important;
}
.image-overlay-element .has-base-transparent-background-color .wp-block-heading.has-small-font-size {
  color: var(--wp--preset--color--secondary) !important;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
}
.image-overlay-element .has-base-transparent-background-color p:not(.hero-eyebrow) {
  color: var(--wp--preset--color--contrast) !important;
}
.image-overlay-element .wp-block-buttons {
  justify-content: flex-start !important;
}
.image-overlay-element .wp-block-buttons .wp-block-button > .wp-block-button__link:not(.readmore) {
  position: relative;
  /*
   * Eigener Stacking-Context. Der Verlauf steht auf z-index: -1 und liegt
   * damit ueber der eigenen Flaeche, aber unter der Beschriftung — ohne dass
   * das Label eine eigene Ebene braucht.
   */
  z-index: 0;
  background: linear-gradient(var(--wp--preset--color--senary), var(--wp--preset--color--senary)) padding-box, linear-gradient(var(--wp--preset--color--senary), var(--wp--preset--color--senary)) border-box;
  background-repeat: no-repeat;
  border-color: transparent;
  /*
   * Kein Browser-Outline im Ruhezustand, dafuer ein eigener Fokusring fuer die
   * Tastatur — der Farbwechsel allein ist als Fokus-Anzeige zu leise.
   */
  outline: none;
  transition: color 0.3s ease;
  /*
   * inset: 0 spannt die Ebene ueber die Polsterflaeche. Ein Rahmen bleibt
   * damit auf der Ruhefarbe — sichtbar waere das nur beim gruenen
   * Suchen-Button, der als einziger Verlaufs-Button einen (2px, transparent
   * gesetzten) Kern-Rahmen traegt.
   */
  border: 0 !important; /* neutralisiert die is-style-outline-Variante */
  color: #fff !important;
  text-transform: uppercase;
  font-size: var(--wp--preset--font-size--small); /* kleiner, damit es systematisch zur Seite passt */
  font-weight: 700;
  letter-spacing: 1px;
}
.image-overlay-element .wp-block-buttons .wp-block-button > .wp-block-button__link:not(.readmore):focus-visible {
  outline: 2px solid var(--wp--preset--color--secondary);
  outline-offset: 3px;
}
.image-overlay-element .wp-block-buttons .wp-block-button > .wp-block-button__link:not(.readmore)::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, var(--wp--preset--color--senary) 0, #d2e07b 100%);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.image-overlay-element .wp-block-buttons .wp-block-button > .wp-block-button__link:not(.readmore):hover, .image-overlay-element .wp-block-buttons .wp-block-button > .wp-block-button__link:not(.readmore):focus-visible {
  border-color: transparent;
}
.image-overlay-element .wp-block-buttons .wp-block-button > .wp-block-button__link:not(.readmore):hover::before, .image-overlay-element .wp-block-buttons .wp-block-button > .wp-block-button__link:not(.readmore):focus-visible::before {
  opacity: 1;
}

/*
Image overlay center element
==============================================
Custom styling for image overlay center element.

Der weisse Textkasten auf dem Bild bestand aus zwei Spalten: links Datum und
Anrisstext, rechts der Pfeil-Button. Jetzt steht der Pfeil unter dem Text,
linksbuendig.

Die Spaltenaufteilung steckt im gespeicherten Markup und wandert mit einer
Aenderung der Pattern-Datei nicht in bestehende Seiten. Deshalb loest die
Sektion die Spalten hier selbst auf — das Pattern ist zusaetzlich auf eine
Spalte umgestellt, damit neue Instanzen gar nicht erst zwei anlegen.
*/
.image-overlay-center-element .wp-block-cover {
  align-items: end;
  /*
   * Der Textkasten selbst: aus nebeneinander wird untereinander. Greift ueber
   * die Hintergrundklasse, damit nur der Kasten gemeint ist und nicht die
   * aeusseren Spalten, die das Pattern zur Breitensteuerung benutzt.
   */
  /* Der Pfeil steht links, nicht rechts — auch in Bestandsinhalten. */
}
.image-overlay-center-element .wp-block-cover .wp-block-columns {
  margin: 0 auto !important;
}
@media (min-width: 992px) {
  .image-overlay-center-element .wp-block-cover .wp-block-columns {
    width: 50%;
  }
}
@media (min-width: 1200px) {
  .image-overlay-center-element .wp-block-cover .wp-block-columns {
    width: 60%;
  }
}
.image-overlay-center-element .wp-block-cover .wp-block-columns.has-base-transparent-background-color {
  flex-direction: column;
}
.image-overlay-center-element .wp-block-cover .wp-block-columns.has-base-transparent-background-color > .wp-block-column {
  flex-basis: auto !important;
}
.image-overlay-center-element .wp-block-cover .wp-block-buttons {
  justify-content: flex-start;
}

/*
Three columns image text element
==============================================
Custom styling for three columns image text element.
*/
.three-columns-image-text-element {
  /*
   * Die Buttons dieses Pattern sind Pfeil-Kaesten. Frueher stand hier ein
   * `@extend .readmore` — das hat die ganze Selektorkette dieses Pattern an
   * JEDEN Selektor gehaengt, der .readmore nennt, auch an die :has()-Regeln,
   * wo dabei Ketten herauskamen, die nie greifen konnten. Die Selektorliste
   * in component/_chevron-button nennt das Pattern jetzt selbst.
   */
}
.three-columns-image-text-element .headline {
  position: relative;
  margin-bottom: 1rem;
}

/*
Tabs element
==============================================
Custom styling for tabs element.
*/
.tabs-element .gutena-tabs-tab {
  border-bottom: 1px solid #dee2e6;
}
.tabs-element .gutena-tabs-tab .gutena-tab-title {
  transition: border 0.3s ease;
}

/*
List element
==============================================
Custom styling for list element.
*/
.list-element li {
  list-style: none;
}

/*
Four column text element
==============================================
Custom styling for four column text element.
*/
.four-column-text-element .wp-block-columns:first-child .wp-block-column {
  border-bottom: 1px solid #dee2e6;
  padding-bottom: var(--wp--preset--spacing--20);
}
@media (max-width: 767.98px) {
  .four-column-text-element .wp-block-columns .wp-block-column {
    border-bottom: 1px solid #dee2e6;
    padding-bottom: 1rem;
  }
}

/*
Icon carousel element
==============================================
Custom styling for icon carousel element.
*/
.icon-carousel-element .slick-slider {
  padding: 0 1rem;
}
.icon-carousel-element .slick-slider .slick-prev,
.icon-carousel-element .slick-slider .slick-next {
  display: none !important;
  background: none !important;
}
@media (min-width: 768px) {
  .icon-carousel-element .slick-slider .slick-prev,
  .icon-carousel-element .slick-slider .slick-next {
    display: block !important;
  }
}
.icon-carousel-element .slick-slider .slick-prev {
  left: 0;
}
.icon-carousel-element .slick-slider .slick-track {
  display: flex !important;
}
.icon-carousel-element .slick-slider .slick-track .slick-slide {
  height: inherit !important;
  margin: 1rem !important;
}
.icon-carousel-element .slick-slider .slick-track .slick-slide .wp-block-image {
  min-height: 125px;
}
.icon-carousel-element .slick-slider .slick-track .slick-slide .wp-block-separator {
  margin-left: 0;
}
.icon-carousel-element .slick-slider .slick-track .slick-slide .has-black-color {
  margin-bottom: 0;
}
.icon-carousel-element .slick-slider .slick-next {
  right: 0;
}
@media (min-width: 768px) {
  .icon-carousel-element .slick-slider {
    padding: 0 3rem;
  }
}

/*
FAQ element pattern
==============================================
Styling for the faeth/faq-element block pattern: a soft full-width band with a
centred eyebrow + heading above the native core/details accordion. Everything is
scoped to .faq-element so the global Details styling (block/_wp-block-details)
stays untouched; here we only match this design — dark-blue questions/chevron,
light-blue on hover, open titles staying dark blue.

The Details rules are nested one level deeper than the global block partial so
they win on specificity regardless of import order.
*/
.faq-element__eyebrow {
  margin-bottom: var(--wp--preset--spacing--10);
  color: var(--wp--preset--color--secondary);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-align: center;
  text-transform: uppercase;
}
.faq-element > :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6) {
  font-size: clamp(1.375rem, 1.375rem + (1vw - 0.48rem) * 8.4135, 1.75rem);
  font-weight: 300;
  letter-spacing: normal;
  line-height: 1.3;
  text-transform: none;
}
.faq-element__list {
  margin-top: var(--wp--preset--spacing--40);
}
.faq-element .wp-block-details summary {
  padding-right: 0;
  padding-left: 0;
  color: var(--wp--preset--color--black);
}
.faq-element .wp-block-details summary:hover {
  color: var(--wp--preset--color--secondary);
}
.faq-element .wp-block-details summary::after {
  background: currentColor;
  -webkit-mask: url(./images/chevron-down.073b30f9.svg) no-repeat center/contain;
  mask: url(./images/chevron-down.073b30f9.svg) no-repeat center/contain;
}
.faq-element .wp-block-details[open] summary {
  color: var(--wp--preset--color--black);
}
.faq-element .wp-block-details > :not(summary) {
  padding-right: 0;
  padding-left: 0;
  color: var(--wp--preset--color--contrast);
}

/*
Contact form element pattern
==============================================
Styling for the faeth/contact-form-element block pattern: a light full-width
band with a two-column layout — intro text + an icon contact list on the left,
and a white card holding the WPForms form (shortcode id 1448) on the right.

Everything reuses the theme colour presets (primary/secondary/contrast/base)
and spacing scale. The contact-list icons are inline SVGs drawn with
`currentColor`, so colouring the wrapper primary blue tints them.

All WPForms rules are scoped to .contact-card so the footer's WPForms instance
keeps its own (unstyled) look.
*/
.contact-section__eyebrow {
  margin-bottom: var(--wp--preset--spacing--10);
  color: var(--wp--preset--color--secondary);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.contact-info {
  margin: var(--wp--preset--spacing--30) 0 0;
  padding: 0;
  list-style: none;
}
.contact-info__item {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1rem;
}
.contact-info__item:last-child {
  margin-bottom: 0;
}
.contact-info__icon {
  flex: 0 0 auto;
  display: inline-flex;
  color: var(--wp--preset--color--primary);
}
.contact-info__icon svg {
  width: 22px;
  height: 22px;
}
.contact-info__text {
  color: var(--wp--preset--color--contrast);
  /*
   * Nur der Ruhezustand — der Link steht in der Schriftfarbe der Zeile.
   * Hover-Farbe und Verdickung kommen aus der globalen Link-Regel in
   * base/_base.
   */
}
.contact-info__text a {
  color: inherit;
  text-decoration: none;
}

.contact-card.wp-block-group {
  padding: var(--wp--preset--spacing--40);
}

.contact-card {
  background: var(--wp--preset--color--base);
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  /*
   * WPForms restyle — scoped to this card only.
   * --------------------------------------------- */
}
.contact-card__title {
  margin-top: 0;
  margin-bottom: var(--wp--preset--spacing--30);
}
.contact-card .wpforms-field-label {
  margin-bottom: 0.35rem;
  color: var(--wp--preset--color--primary);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 700;
}
.contact-card .wpforms-required-label {
  color: var(--wp--preset--color--secondary);
}
.contact-card input[type=text],
.contact-card input[type=email],
.contact-card input[type=tel],
.contact-card input[type=url],
.contact-card input[type=number],
.contact-card select,
.contact-card textarea {
  width: 100%;
  padding: 0.65rem 0.85rem;
  border: 1px solid #dee2e6;
  border-radius: 0;
  background: var(--wp--preset--color--base);
  color: var(--wp--preset--color--black);
  transition: border-color 0.3s ease;
}
.contact-card input[type=text]:focus,
.contact-card input[type=email]:focus,
.contact-card input[type=tel]:focus,
.contact-card input[type=url]:focus,
.contact-card input[type=number]:focus,
.contact-card select:focus,
.contact-card textarea:focus {
  border-color: var(--wp--preset--color--secondary);
  outline: none;
}
.contact-card input[type=text]::placeholder,
.contact-card input[type=email]::placeholder,
.contact-card input[type=tel]::placeholder,
.contact-card input[type=url]::placeholder,
.contact-card input[type=number]::placeholder,
.contact-card select::placeholder,
.contact-card textarea::placeholder {
  color: var(--wp--preset--color--quaternary);
}
.contact-card textarea {
  min-height: 130px;
  resize: vertical;
}
.contact-card .wpforms-field-description {
  color: var(--wp--preset--color--contrast);
  font-size: var(--wp--preset--font-size--small);
}
.contact-card .wpforms-submit {
  width: 100%;
  padding: 0.5rem 1.5rem;
  border: none;
  border-radius: 0;
  background: var(--wp--preset--color--primary);
  color: var(--wp--preset--color--contrast);
  font-weight: 700;
  cursor: pointer;
  transition: color 0.3s ease, background-color 0.3s ease;
}
.contact-card .wpforms-submit:hover, .contact-card .wpforms-submit:focus {
  background: var(--wp--preset--color--contrast);
  color: var(--wp--preset--color--base);
}
.contact-card .wpforms-submit:active {
  background: var(--wp--preset--color--secondary);
  color: var(--wp--preset--color--base);
}

/*
Kennzahlen (Counter up element)
==============================================
Drei Kennzahlen nebeneinander: grosse Zahl, feiner Trenner, Beschriftung.

Der Abschnitt bestand frueher aus zwei Plugin-Bloecken, die beide nicht mehr
tragfaehig sind — wp-bootstrap-blocks fuer das Raster und gutenbee/countup fuer
die hochzaehlende Zahl (Block-API v1, im Editor ab WordPress 7.0 defekt). Er
besteht jetzt aus Kernbloecken: wp:columns fuer das Raster, ein Absatz mit der
Klasse `counter-up-element__number` fuer die Zahl.

Das Design haengt allein an dieser Klasse, nicht an einer Huelle darum: die
Muster-Instanzen im Bestand tragen ihren Namen nur in den Metadaten, eine
Klasse `.counter-up-element` steht im gespeicherten Markup nirgends. Eine
verschachtelte Schreibweise wuerde die migrierten Abschnitte deshalb nicht
erreichen.

Die Zahl steht als fertiger Endwert im Markup — ohne JavaScript, im Editor und
fuer Suchmaschinen ist sie damit sofort richtig. Das Hochzaehlen legt
js/plugin/count-up.plugin darueber; was gezaehlt wird, liest es aus dem Text
selbst, Vorzeichen und Einheit ("> 50", "700 m²") bleiben stehen. Ein anderer
Startwert als 0 kommt ueber die Zusatzklasse `is-from-45`.
*/
/*
 * 40px war die Groesse der alten Kennzahlen und ist die Obergrenze geblieben;
 * auf schmalen Schirmen laeuft sie mit, weil die drei Zahlen dort untereinander
 * stehen und die volle Groesse den Abschnitt sonst auseinanderzieht.
 */
.counter-up-element__number {
  margin-bottom: var(--wp--preset--spacing--10);
  color: var(--wp--preset--color--black);
  font-size: clamp(2rem, 1.5rem + 1.6vw, 2.5rem);
  font-weight: 700;
  line-height: 1.1;
  /*
   * Ziffern gleicher Breite. Ohne das springt die Zahl waehrend des
   * Hochzaehlens in der Breite, weil eine 1 schmaler ist als eine 8, und der
   * Trenner darunter wackelt sichtbar mit.
   */
  font-variant-numeric: tabular-nums;
  /*
   * Der Trenner zwischen Zahl und Beschriftung traegt den Abstand nach beiden
   * Seiten selbst — sonst schoebe ihn der Ueberschriften-Rhythmus aus
   * base/_typography an die Beschriftung heran.
   */
}
.counter-up-element__number + .wp-block-separator {
  margin-block: var(--wp--preset--spacing--20);
}

/*
Advantages element
==============================================
Vorteils-Leiste: kleines Label ueber einer Reihe von Haken-Punkten.

Bewusst aus Kern-Bloecken gebaut, damit die Redaktion Punkte im Editor
hinzufuegen, umsortieren und loeschen kann. Der Haken haengt deshalb NICHT an
einer Klasse pro Punkt, sondern an jedem <p> in der Liste — ein im Editor neu
eingefuegter Absatz bekommt ihn automatisch.

Das Label nutzt die vorhandene .hero-eyebrow-Typografie (base/_image-overlay-
element), der Abschnitt den vorhandenen tertiary-Hintergrund. Der vertikale
Abstand kommt automatisch aus layout/_section-spacing — die Sektion ist dort
als .has-tertiary-background-color bereits registriert.
*/
.advantages-element {
  /*
   * Feste 35px oben/unten — bewusste Ausnahme von der adaptiven Rhythmik in
   * layout/_section-spacing. Die Leiste ist keine eigenstaendige Sektion,
   * sondern ein schmaler Streifen unter dem Hero; die dortigen 60px+ wuerden
   * sie davon abloesen.
   *
   * !important ist hier der einzige verlaessliche Hebel: die Nachbarschafts-
   * regeln in _section-spacing kombinieren zwei dreiklassige Selektoren und
   * kommen damit auf eine Spezifitaet, die eine einfache Regel hier nicht
   * erreicht.
   */
  padding-block: 35px !important;
  /*
   * Linke Kante buendig mit der Hero-Box
   * ------------------------------------
   * Der Block hat bewusst KEINE Inhaltsbreite (layout: default statt
   * constrained) — die Leiste laeuft ueber die volle Breite und wird allein
   * ueber dieses Inset eingerueckt.
   *
   * Der Wert leitet sich aus dem Hero ab: dort liegt die Gruppe zwar in der
   * Wurzel-Einrueckung, die alignfull-Columns darin heben sie aber mit dem
   * negativen Rand wieder auf (WordPress-Regel `.has-global-padding >
   * .alignfull`). Uebrig bleibt als linke Kante des weissen Kastens genau das
   * Padding des Cover-Blocks — spacing--40. Unterhalb md kommt die
   * Wurzel-Einrueckung dazu, die pattern/_image-overlay-element dem
   * inner-container dort zusaetzlich gibt.
   *
   * Bezugspunkt ist die Kante des Kastens. Soll stattdessen der TEXT im Kasten
   * die Linie vorgeben, hier zusaetzlich dessen 35px Innenabstand addieren.
   */
  --advantages-inset: var(--wp--preset--spacing--40);
  padding-inline: var(--advantages-inset);
}
@media (max-width: 767.98px) {
  .advantages-element {
    --advantages-inset: calc(var(--wp--preset--spacing--40) + var(--wp--preset--spacing--30));
  }
}
.advantages-element .advantages-element__list {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  /*
   * Spaltenabstand grosszuegig, Zeilenabstand knapp: beim Umbruch sollen die
   * Punkte als ein Block lesbar bleiben und nicht als Liste auseinanderfallen.
   * Doppelte Klasse, damit die Regel die Gap-Angabe des Flex-Layouts
   * uebersteuert, die der Kern als eigene .wp-container-*-Klasse ausgibt.
   */
  column-gap: var(--wp--preset--spacing--40);
  row-gap: var(--wp--preset--spacing--10);
  /*
   * Mobil ein Punkt pro Zeile. Ohne das wuerden kurze Punkte ("Alles aus
   * einer Hand") auf schmalen Displays zu zweit in eine Zeile rutschen und
   * die Leiste unruhig wirken lassen.
   */
}
.advantages-element .advantages-element__list p {
  position: relative;
  margin: 0;
  padding-left: calc(14px + 10px);
}
.advantages-element .advantages-element__list p:before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.45em;
  width: 14px;
  height: 11px;
  background: url(./images/check.08f21146.svg) no-repeat;
}
@media (max-width: 767.98px) {
  .advantages-element .advantages-element__list p {
    flex: 0 0 100%;
  }
}

/*
 * Block-specific styles
 * --------------------- */
/*
WP columns block
==============================================
Custom styling for wp columns block.
*/
main .wp-block-columns.is-layout-flex {
  gap: 2.5rem;
}

/*
WP image block
==============================================
Custom styling for wp image block.
*/
.wp-block-image {
  position: relative;
}
.wp-block-image .wp-block-image-custom-link {
  position: absolute;
  bottom: var(--wp--preset--spacing--20);
  right: var(--wp--preset--spacing--20);
}

/*
WP cover block
==============================================
Custom styling for wp cover block.
*/
.wp-block-cover {
  position: relative;
}
.wp-block-cover .wp-block-cover-custom-link {
  position: absolute;
  bottom: var(--wp--preset--spacing--20);
  right: var(--wp--preset--spacing--20);
  z-index: 1;
}
@media (max-width: 991.98px) {
  .wp-block-cover .wp-block-cover-custom-link {
    top: var(--wp--preset--spacing--40);
    right: var(--wp--preset--spacing--40);
    bottom: initial;
  }
}
@media (max-width: 767.98px) {
  .wp-block-cover .wp-block-cover-custom-link {
    top: var(--wp--preset--spacing--10);
    right: var(--wp--preset--spacing--10);
    bottom: initial;
  }
}
.wp-block-cover.no-custom-link .wp-block-cover-custom-link {
  display: none;
}
@media (max-width: 991.98px) {
  .wp-block-cover .wp-block-cover__image-background {
    position: relative !important;
    max-width: 100% !important;
    height: auto !important;
  }
}
@media (max-width: 991.98px) {
  .wp-block-cover .wp-block-cover__inner-container {
    position: relative !important;
  }
}
@media (max-width: 991.98px) {
  .wp-block-cover .wp-block-cover__inner-container .wp-block-group .wp-block-columns {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
}
@media (max-width: 991.98px) {
  .wp-block-cover {
    display: block !important;
    min-height: auto !important;
  }
}

.home .wp-block-cover .wp-block-cover-custom-link {
  display: none;
}

/*
WP button block
==============================================
Custom styling for wp button block.

Drei Button-Rollen, die sich nur in der Farbe unterscheiden:

  gruen (senary)  — Standard-Button
  blau  (primary) — sekundaerer Button, u. a. der Kontakt-Button im Footer
  transparent     — sekundaerer Outline-Button ("Mehr Info")

Die ersten beiden teilen sich den Verlaufs-Hover, der dritte laeuft mit
Faeth-Blau zu. Beide Bewegungen stehen als Mixin in abstract/_mixins.
*/
.wp-block-button .wp-block-button__link {
  padding-top: 0.5rem !important;
  padding-bottom: 0.5rem !important;
}
@media (max-width: 991.98px) {
  .wp-block-button.has-custom-width.wp-block-button__width-50 {
    width: 100% !important;
  }
}

/*
 * Pfeil-Buttons (Chevron)
 * -----------------------
 * Die Klasse "readmore" steht fuer den quadratischen Pfeil-Kasten. Aussehen,
 * Stellung und die Regeln fuer den Bestand stehen an einer einzigen Stelle:
 * component/_chevron-button. Hier bleibt nichts davon uebrig — die Ausnahmen
 * weiter unten nennen die Klasse nur, um ihr nicht in die Quere zu kommen.
 */
/*
 * Gruen und Blau.
 *
 * Adressiert wird die Farb-Klasse, nicht der Block: derselbe Hover soll auch
 * fuer den Suchen-Button (core/search) und die serverseitig gebauten Buttons
 * des leopard-wp-posts-Plugins gelten.
 *
 * Ausgenommen sind Buttons ohne Flaeche — der Outline-Stil von WordPress, der
 * eigene transparente Stil und die Pfeil-Links (.readmore): dort gibt es
 * nichts, was auslaufen koennte.
 */
.wp-block-button__link.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent),
.wp-block-search__button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent),
.wp-element-button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent) {
  position: relative;
  /*
   * Eigener Stacking-Context. Der Verlauf steht auf z-index: -1 und liegt
   * damit ueber der eigenen Flaeche, aber unter der Beschriftung — ohne dass
   * das Label eine eigene Ebene braucht.
   */
  z-index: 0;
  background: linear-gradient(var(--wp--preset--color--senary), var(--wp--preset--color--senary)) padding-box, linear-gradient(var(--wp--preset--color--senary), var(--wp--preset--color--senary)) border-box;
  background-repeat: no-repeat;
  border-color: transparent;
  /*
   * Kein Browser-Outline im Ruhezustand, dafuer ein eigener Fokusring fuer die
   * Tastatur — der Farbwechsel allein ist als Fokus-Anzeige zu leise.
   */
  outline: none;
  transition: color 0.3s ease;
  /*
   * inset: 0 spannt die Ebene ueber die Polsterflaeche. Ein Rahmen bleibt
   * damit auf der Ruhefarbe — sichtbar waere das nur beim gruenen
   * Suchen-Button, der als einziger Verlaufs-Button einen (2px, transparent
   * gesetzten) Kern-Rahmen traegt.
   */
}
.wp-block-button__link.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible,
.wp-block-search__button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible,
.wp-element-button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible {
  outline: 2px solid var(--wp--preset--color--secondary);
  outline-offset: 3px;
}
.wp-block-button__link.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent)::before,
.wp-block-search__button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent)::before,
.wp-element-button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent)::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, var(--wp--preset--color--senary) 0, #d2e07b 100%);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.wp-block-button__link.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover, .wp-block-button__link.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible,
.wp-block-search__button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover,
.wp-block-search__button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible,
.wp-element-button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover,
.wp-element-button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible {
  border-color: transparent;
}
.wp-block-button__link.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover::before, .wp-block-button__link.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible::before,
.wp-block-search__button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover::before,
.wp-block-search__button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible::before,
.wp-element-button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover::before,
.wp-element-button.has-senary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible::before {
  opacity: 1;
}
.wp-block-button__link.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent),
.wp-block-search__button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent),
.wp-element-button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent) {
  position: relative;
  /*
   * Eigener Stacking-Context. Der Verlauf steht auf z-index: -1 und liegt
   * damit ueber der eigenen Flaeche, aber unter der Beschriftung — ohne dass
   * das Label eine eigene Ebene braucht.
   */
  z-index: 0;
  background: linear-gradient(var(--wp--preset--color--primary), var(--wp--preset--color--primary)) padding-box, linear-gradient(var(--wp--preset--color--primary), var(--wp--preset--color--primary)) border-box;
  background-repeat: no-repeat;
  border-color: transparent;
  /*
   * Kein Browser-Outline im Ruhezustand, dafuer ein eigener Fokusring fuer die
   * Tastatur — der Farbwechsel allein ist als Fokus-Anzeige zu leise.
   */
  outline: none;
  transition: color 0.3s ease;
  /*
   * inset: 0 spannt die Ebene ueber die Polsterflaeche. Ein Rahmen bleibt
   * damit auf der Ruhefarbe — sichtbar waere das nur beim gruenen
   * Suchen-Button, der als einziger Verlaufs-Button einen (2px, transparent
   * gesetzten) Kern-Rahmen traegt.
   */
}
.wp-block-button__link.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible,
.wp-block-search__button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible,
.wp-element-button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible {
  outline: 2px solid var(--wp--preset--color--secondary);
  outline-offset: 3px;
}
.wp-block-button__link.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent)::before,
.wp-block-search__button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent)::before,
.wp-element-button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent)::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, var(--wp--preset--color--primary) 0, #3c48aa 100%);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.wp-block-button__link.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover, .wp-block-button__link.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible,
.wp-block-search__button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover,
.wp-block-search__button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible,
.wp-element-button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover,
.wp-element-button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible {
  border-color: transparent;
}
.wp-block-button__link.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover::before, .wp-block-button__link.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible::before,
.wp-block-search__button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover::before,
.wp-block-search__button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible::before,
.wp-element-button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):hover::before,
.wp-element-button.has-primary-background-color:not(.readmore):not(.is-style-outline):not(.is-style-secondary-transparent):focus-visible::before {
  opacity: 1;
}

/*
 * Der Kontakt-Button im Footer traegt keine Hintergrund-Klasse, seine Farbe
 * kommt aus theme.json (elements.button = primary). Er bekommt denselben
 * blauen Verlauf wie ein ausgezeichneter Sekundaer-Button.
 */
footer .contact-button .wp-block-button__link {
  position: relative;
  /*
   * Eigener Stacking-Context. Der Verlauf steht auf z-index: -1 und liegt
   * damit ueber der eigenen Flaeche, aber unter der Beschriftung — ohne dass
   * das Label eine eigene Ebene braucht.
   */
  z-index: 0;
  background: linear-gradient(var(--wp--preset--color--primary), var(--wp--preset--color--primary)) padding-box, linear-gradient(var(--wp--preset--color--primary), var(--wp--preset--color--primary)) border-box;
  background-repeat: no-repeat;
  border-color: transparent;
  /*
   * Kein Browser-Outline im Ruhezustand, dafuer ein eigener Fokusring fuer die
   * Tastatur — der Farbwechsel allein ist als Fokus-Anzeige zu leise.
   */
  outline: none;
  transition: color 0.3s ease;
  /*
   * inset: 0 spannt die Ebene ueber die Polsterflaeche. Ein Rahmen bleibt
   * damit auf der Ruhefarbe — sichtbar waere das nur beim gruenen
   * Suchen-Button, der als einziger Verlaufs-Button einen (2px, transparent
   * gesetzten) Kern-Rahmen traegt.
   */
}
footer .contact-button .wp-block-button__link:focus-visible {
  outline: 2px solid var(--wp--preset--color--secondary);
  outline-offset: 3px;
}
footer .contact-button .wp-block-button__link::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, var(--wp--preset--color--primary) 0, #3c48aa 100%);
  opacity: 0;
  transition: opacity 0.3s ease;
}
footer .contact-button .wp-block-button__link:hover, footer .contact-button .wp-block-button__link:focus-visible {
  border-color: transparent;
}
footer .contact-button .wp-block-button__link:hover::before, footer .contact-button .wp-block-button__link:focus-visible::before {
  opacity: 1;
}

/*
 * Outline-Button.
 *
 * Zwei Blockstile fuehren auf dieselbe Rolle und sehen deshalb gleich aus: der
 * Kern-Stil "Outline" (is-style-outline) und der theme-eigene Stil "Sekundaer
 * transparent" (is-style-secondary-transparent, siehe register_block_style in
 * der functions.php) — Letzterer bleibt fuer bestehende Inhalte erhalten.
 *
 * Die Klasse steht je nach Herkunft am Wrapper (Block-Stil aus dem Editor)
 * oder direkt am Link (serverseitig gebaute Buttons, z. B. der "Mehr Info"-
 * Button in der Trefferliste der Presse- und Produktinformationen).
 *
 * Ausgenommen sind Buttons, die trotz Outline-Stil eine echte Fuellfarbe
 * tragen — der gruene Suchen-Button der Trefferliste etwa steht im Markup als
 * is-style-outline —, die Pfeil-Links (.readmore) und die Hero-Buehne: die
 * faerbt ihre Buttons gruen (pattern/_image-overlay-element), auch wenn im
 * Editor der Outline-Stil gewaehlt ist. Ueber die Spezifitaet allein liesse
 * sich das dort nicht drehen, weil der Ruhezustand hier background mit
 * !important setzt.
 *
 * Die Ausnahme fuer .readmore ist die wichtigste: der Pfeil-Kasten
 * (component/_chevron-button) steht auf derselben Spezifitaet und setzt
 * background ebenfalls mit !important. Ohne sie entschiede die Reihenfolge der
 * Importe, welcher von beiden gewinnt — und die Komponenten stehen vor den
 * Bloecken.
 *
 * Alle Ausnahmen stehen in :where() und heben die Spezifitaet damit nicht an.
 */
.wp-block-button.is-style-outline > .wp-block-button__link:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)),
.wp-block-button.is-style-secondary-transparent > .wp-block-button__link:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)),
.wp-block-button__link.is-style-outline:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)),
.wp-block-button__link.is-style-secondary-transparent:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)),
.wp-element-button.is-style-outline:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)),
.wp-element-button.is-style-secondary-transparent:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)) {
  position: relative;
  background: transparent !important;
  border: 1px solid var(--wp--preset--color--black);
  color: var(--wp--preset--color--black) !important;
  /*
   * Kein Browser-Outline im Ruhezustand, dafuer ein eigener Fokusring fuer die
   * Tastatur — der Farbwechsel allein ist als Fokus-Anzeige zu leise.
   */
  outline: none;
  transition: background 0.3s ease, border-color 0.3s ease, color 0.3s ease;
}
.wp-block-button.is-style-outline > .wp-block-button__link:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-block-button.is-style-secondary-transparent > .wp-block-button__link:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-block-button__link.is-style-outline:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-block-button__link.is-style-secondary-transparent:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-element-button.is-style-outline:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-element-button.is-style-secondary-transparent:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible {
  outline: 2px solid var(--wp--preset--color--secondary);
  outline-offset: 3px;
}
.wp-block-button.is-style-outline > .wp-block-button__link:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):hover, .wp-block-button.is-style-outline > .wp-block-button__link:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-block-button.is-style-secondary-transparent > .wp-block-button__link:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):hover,
.wp-block-button.is-style-secondary-transparent > .wp-block-button__link:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-block-button__link.is-style-outline:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):hover,
.wp-block-button__link.is-style-outline:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-block-button__link.is-style-secondary-transparent:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):hover,
.wp-block-button__link.is-style-secondary-transparent:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-element-button.is-style-outline:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):hover,
.wp-element-button.is-style-outline:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible,
.wp-element-button.is-style-secondary-transparent:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):hover,
.wp-element-button.is-style-secondary-transparent:where(:not(.readmore):not(.has-senary-background-color):not(.has-primary-background-color):not(.image-overlay-element *):not(.image-overlay-center-element *)):focus-visible {
  border-color: var(--wp--preset--color--secondary);
  color: var(--wp--preset--color--secondary) !important;
}

/*
 * Der Verlauf der Flaechen-Buttons liegt auf einem ::before und blendet ueber
 * die Opazitaet ein — die Pseudo-Ebene muss deshalb mit stillgelegt werden,
 * sonst laeuft sie als einzige Bewegung weiter.
 */
@media (prefers-reduced-motion: reduce) {
  .wp-block-button__link,
  .wp-block-button__link::before,
  .wp-block-search__button,
  .wp-block-search__button::before,
  .wp-element-button,
  .wp-element-button::before,
  .card-grid-element__button,
  .card-grid-element__button::before {
    transition-duration: 0.01ms !important;
  }
}
/*
 * "Weiterlesen" in der Trefferliste der Suche (core/read-more).
 * Der Block rendert einen inline gesetzten Link. Als Button braucht er eine
 * eigene Zeile, sonst verpufft die vertikale Polsterung aus der theme.json.
 */
.wp-block-read-more.wp-element-button {
  display: inline-block;
  margin-top: var(--wp--preset--spacing--20);
  text-decoration: none;
}

/*
WP table block
==============================================
Custom styling for wp table block.
*/
.wp-block-table.is-style-stripes {
  border: none !important;
}
.wp-block-table .wp-element-caption {
  text-align: left;
  margin: var(--wp--preset--spacing--20) 0;
}
@media (max-width: 575.98px) {
  .wp-block-table td {
    display: block;
  }
}

/*
Gutena tabs block
==============================================
Custom styling for gutena tabs block.
*/
.gutena-tabs-block .gutena-tabs-tab {
  background: var(--wp--preset--color--base);
  z-index: 3;
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider {
  padding: var(--gutena--tabs-tab-container-padding);
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-prev,
.gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-next {
  width: 14px;
  height: 20px;
  opacity: 1;
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-prev:before,
.gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-next:before {
  opacity: 1;
}
@media (max-width: 1399.98px) {
  .gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-prev,
  .gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-next {
    display: inline-block !important;
  }
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-prev {
  left: 0;
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-prev:before {
  background: url(./images/chevron-left.cb0cc72f.svg) no-repeat;
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-next {
  right: 0;
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider .slick-next:before {
  background: url(./images/chevron-right.ad5a1a7d.svg) no-repeat;
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider .gutena-tab-title {
  color: var(--gutena--tabs-tab-text-color, #000);
  cursor: pointer;
  font-family: var(--gutena--tabs-tab-font-family, inherit);
  font-size: var(--gutena--tabs-tab-font-size, 14px);
  font-style: var(--gutena--tabs-tab-font-style);
  font-weight: var(--gutena--tabs-tab-font-weight);
  text-transform: var(--gutena--tabs-tab-text-transfrom);
  margin: 0 10px;
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider .gutena-tab-title > * {
  padding: var(--gutena--tabs-tab-padding);
}
.gutena-tabs-block .gutena-tabs-tab.slick-slider .gutena-tab-title:hover, .gutena-tabs-block .gutena-tabs-tab.slick-slider .gutena-tab-title.active {
  background: var(--gutena--tabs-tab-hover-background-gradient-color, var(--gutena--tabs-tab-hover-background-color, #fff));
  border-bottom: var(--gutena--tabs-tab-hover-border-bottom, var(--gutena--tabs-tab-border-bottom));
  border-left: var(--gutena--tabs-tab-hover-border-left, var(--gutena--tabs-tab-border-left));
  border-radius: var(--gutena--tabs-tab-hover-border-radius, var(--gutena--tabs-tab-border-radius));
  border-right: var(--gutena--tabs-tab-hover-border-right, var(--gutena--tabs-tab-border-right));
  border-top: var(--gutena--tabs-tab-hover-border-top, var(--gutena--tabs-tab-border-top));
  box-shadow: var(--gutena--tabs-tab-hover-box-shadow, var(--gutena--tabs-tab-box-shadow));
  color: var(--gutena--tabs-tab-hover-text-color, var(--gutena--tabs-tab-text-color, #000));
  z-index: 4;
}
.gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block {
  color: var(--wp--preset--color--contrast) !important;
}
.gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-prev,
.gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-next {
  background: none !important;
}
.gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-prev:before,
.gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-next:before {
  font-size: var(--wp--preset--font-size--xx-large);
}
@media (max-width: 1399.98px) {
  .gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-prev,
  .gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-next {
    display: none !important;
  }
}
@media (min-width: 768px) {
  .gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-prev {
    left: 0;
  }
}
@media (min-width: 768px) {
  .gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-next {
    right: 0;
  }
}
@media (min-width: 992px) {
  .gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-prev,
  .gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-next {
    top: 30%;
  }
}
.gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-dots-container .slick-prev:before,
.gutena-tabs-block > .gutena-tabs-content > .gutena-tab-block .slick-dots-container .slick-next:before {
  font-size: var(--wp--preset--font-size--large);
}

/*
Gosign block
==============================================
Custom styling for gosign block.

Aufbau einer Karte (aus gosign-posts-slider-block/src/init.php):

  .slick-slide
    .grid-item
      .gallery-image
        .slider-image-container > a > img
        .box-content
          h3.title > a
          .author-and-date
          p                      (Anrisstext)
          a.readmore             (Pfeil-Button)

Der Pfeil-Button stand frueher absolut in der oberen rechten Ecke. Titel und
Anrisstext mussten ihm mit max-width ausweichen, sonst waeren sie darunter
gelaufen. Jetzt steht er da, wo er im Markup ohnehin schon steht: als letztes
Element unter dem Anrisstext, linksbuendig — und die beiden max-width-Kruecken
sind weg.

Damit die Buttons einer Reihe trotz verschieden langer Anrisstexte auf einer
Linie stehen, wird die Karte hier bis zur Slide-Hoehe durchgestreckt; das
margin-top: auto, das den Button dann nach unten drueckt, steht mit dem
uebrigen Chevron-CSS in component/_chevron-button. Dieselbe Loesung wie im Card
Grid (block/_card-grid, __actions).
*/
.wp-block-gosign {
  visibility: hidden;
}
.wp-block-gosign .slick-slider .slick-list {
  padding-bottom: var(--wp--preset--spacing--40);
}
.wp-block-gosign .slick-slider .slick-list .slick-track {
  display: flex;
}
.wp-block-gosign .slick-slider .slick-list .slick-slide {
  height: inherit !important;
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  /*
   * Streckkette bis zum Button. Slick vergibt .slick-slide an die
   * direkten Kinder der Galerie — im Regelfall ist der Slide also die
   * .grid-item selbst. Je nach Konfiguration schiebt Slick aber noch
   * einen namenlosen div dazwischen; deshalb stehen beide Faelle in
   * derselben Liste.
   */
  display: flex;
  /*
   * Slick baut die Slides in Reihen um (buildRows) und schreibt dabei
   * `display: inline-block` als INLINE-Style auf die urspruengliche
   * .grid-item. Ein Inline-Style schlaegt jede normale Regel, und genau
   * hier riss die Streckkette: .grid-item blieb ein Block, .gallery-image
   * stand auf Inhaltshoehe statt auf Slide-Hoehe, und der Pfeil-Button
   * hatte keinen freien Raum mehr, in den margin-top: auto ihn haette
   * schieben koennen — er klebte am Anrisstext statt am unteren Rand.
   *
   * !important ist hier die einzige Handhabe, die ohne JavaScript an
   * einen Inline-Style herankommt.
   */
}
.wp-block-gosign .slick-slider .slick-list .slick-slide > div,
.wp-block-gosign .slick-slider .slick-list .slick-slide .grid-item,
.wp-block-gosign .slick-slider .slick-list .slick-slide .gallery-image,
.wp-block-gosign .slick-slider .slick-list .slick-slide .box-content {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-width: 0;
}
.wp-block-gosign .slick-slider .slick-list .slick-slide .grid-item {
  display: flex !important;
}
.wp-block-gosign .slick-slider .slick-list .slick-slide .slider-image-container img {
  max-width: 100%;
  min-height: 240px;
}
.wp-block-gosign .slick-slider .slick-list .slick-slide .box-content {
  font-size: var(--wp--preset--font-size--small);
  padding: var(--wp--preset--spacing--20);
  /*
   * Der Abstand ueber dem Button haengt am Anrisstext, nicht am Button:
   * dessen margin-top ist mit auto belegt und traegt keinen festen Wert
   * mehr, und padding scheidet aus, weil der Kasten eine feste Groesse
   * hat.
   */
}
.wp-block-gosign .slick-slider .slick-list .slick-slide .box-content .title {
  font-size: var(--wp--preset--font-size--small);
  font-weight: bold;
}
.wp-block-gosign .slick-slider .slick-list .slick-slide .box-content .title a {
  color: var(--wp--preset--color--black);
  text-decoration: none;
}
.wp-block-gosign .slick-slider .slick-list .slick-slide .box-content p {
  margin-bottom: var(--wp--preset--spacing--20);
}

@media (min-width: 768px) {
  .margin-first-slide .wp-block-gosign .slick-slider .slick-list .slick-slide:first-child {
    margin-left: var(--wp--preset--spacing--60) !important;
  }
}

/*
leopard posts block
==============================================
Custom styling for leopard posts block.
*/
.wp-block-leopard-posts .search-row .search-content .form-group label {
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--black);
  text-transform: uppercase;
  margin-left: 0.75rem;
}
.wp-block-leopard-posts .search-row .search-content .form-group .form-control {
  border-radius: 0;
}
.wp-block-leopard-posts .search-row .search-content .form-group .form-text {
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--black);
  margin-left: 0.75rem;
}
.wp-block-leopard-posts .search-row .search-content .form-group:first-child .wp-block-buttons {
  margin-top: 1.75rem;
}
.wp-block-leopard-posts .search-row .search-content .form-group:last-child .wp-block-buttons {
  margin-bottom: 1.35rem;
}
@media (max-width: 991.98px) {
  .wp-block-leopard-posts .search-row .search-content .form-group .wp-block-buttons .wp-block-button {
    width: 100% !important;
  }
}
.wp-block-leopard-posts .pagination-row .pagination-content {
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--black);
  border-bottom: 1px solid #dee2e6;
  padding-bottom: var(--wp--preset--spacing--40);
}
.wp-block-leopard-posts .pagination-row .pagination-content .pagination .page-item .page-link {
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--black);
  border: none;
  border-radius: 0;
}
.wp-block-leopard-posts .pagination-row .pagination-content .pagination .page-item.active .page-link {
  background: none;
  border: 1px solid var(--wp--preset--color--black);
}
.wp-block-leopard-posts .pagination-row:last-child .pagination-content {
  border: none !important;
}
.wp-block-leopard-posts .post-row {
  border-bottom: 1px solid #dee2e6;
}
.wp-block-leopard-posts .post-row .post-content {
  padding-bottom: var(--wp--preset--spacing--40);
  /*
   * Detail-Button ("Mehr Info").
   * Frueher ein blosses Pfeil-Icon (.readmore), heute der Outline-Button
   * aus block/_wp-block-button. Er steht unter dem Anrisstext und
   * linksbuendig; mobil nimmt er die volle Breite.
   */
}
.wp-block-leopard-posts .post-row .post-content .post-date {
  font-size: var(--wp--preset--font-size--small);
  color: var(--wp--preset--color--black);
}
.wp-block-leopard-posts .post-row .post-content .wp-block-buttons {
  margin-bottom: var(--wp--preset--spacing--20);
}
.wp-block-leopard-posts .post-row .post-content .wp-block-buttons .wp-block-button__link {
  white-space: nowrap;
}
@media (max-width: 575.98px) {
  .wp-block-leopard-posts .post-row .post-content .wp-block-buttons .wp-block-button {
    width: 100%;
  }
  .wp-block-leopard-posts .post-row .post-content .wp-block-buttons .wp-block-button__link {
    display: block;
  }
}
.wp-block-leopard-posts .post-row:last-child {
  border: none;
}

/*
WordPress core Details block
==============================================
Native core/details skin, replacing the former GutenBee accordion. A hairline
divider per item, a bold title, a custom chevron that rotates on open, and an
indented answer. Exclusive "one open at a time" behaviour comes from the shared
HTML `name` attribute on the patterns — no JavaScript involved.
*/
.wp-block-details {
  border-bottom: 1px solid #dee2e6;
  padding: 1rem 0;
}
.wp-block-details summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  color: var(--wp--preset--color--black);
  font-weight: bold;
  cursor: pointer;
  list-style: none;
  transition: color 0.3s ease;
}
.wp-block-details summary::-webkit-details-marker {
  display: none;
}
.wp-block-details summary::after {
  content: "";
  flex: 0 0 auto;
  width: 1em;
  height: 1em;
  background: url(./images/chevron-down.073b30f9.svg) no-repeat center/contain;
  transition: transform 0.3s ease;
}
.wp-block-details > :not(summary) {
  padding-right: 2rem;
  padding-left: 2rem;
}
.wp-block-details[open] summary {
  color: var(--wp--preset--color--secondary);
}
.wp-block-details[open] summary::after {
  transform: rotate(-180deg);
}

/*
Card grid block
==============================================
Front-end styling for the die-leoparden/card-grid block: a full-width section
with an eyebrow, heading and lead, followed by a configurable grid of cards.
The block markup lives in the leopard-wp-posts plugin; the design lives here so
it stays in sync with the theme.

Three things are configurable from the editor and land here as classes or
custom properties:

  .is-background-primary / .is-background-base   section colour
  .has-card-shadow / .no-card-shadow            card shadow
  --cg-cols-{xs…xxl}                            cards per row per breakpoint

The heading tags (h1–h4, p, span) are NOT part of the styling: every heading is
styled through its class, so an editor can fix the document outline for SEO
without the design moving a pixel. Einzige Ausnahme ist die Kartenueberschrift —
das v1-Markup im Bestand schreibt dort ein blankes <h3>, das sonst durch jede
Regel fiele; die Begruendung steht bei der Regel selbst.
*/
/*
 * Cards per row.
 * The editor writes one custom property per Bootstrap breakpoint; each media
 * query reads its own and falls back to the one below it, so a section that was
 * saved before a breakpoint existed still lays out sensibly.
 */
/*
 * The three button variants that exist on the site. This map is the ONE place
 * to edit when the button design changes — the block only ever stores the
 * variant name (`is-button-standard|white|senary`).
 *
 * `standard` und `senary` fahren den Verlaufs-Hover der uebrigen Buttons
 * (abstract/_mixins, faeth-button-gradient) und tragen dafuer ihren zweiten,
 * helleren Ton im Feld `to`. `white` hat keinen — Weiss kann nicht aufhellen —
 * und behaelt den flaechigen Farbwechsel.
 */
/* Image heights — the image supports the card, it is not the card. */
.card-grid-element {
  /*
   * The section heading. Sized and spaced here rather than by the tag, so
   * h1 … span all look the same — that is what makes the tag free for SEO.
   */
  /*
   * Sections saved before the columns became configurable carry no
   * `--cg-cols-*` at all, and the rules above would collapse them to a single
   * column. They are recognisable by the missing background class — v2 always
   * writes one — and keep the original auto-fit grid until they are re-saved.
   * This rule can go once no v1 markup is left in the database.
   */
  /*
   * Image. It bleeds to the card edges (the pattern this replaces had the image
   * flush at the top), is cropped to a fixed height and never dictates the card
   * height — otherwise one tall image would stretch its whole row.
   */
  /*
   * Card heading — same deal as __title: the class carries the design, the tag
   * carries the outline. Also resets the margins a heading tag brings along so
   * h4 and span end up identical.
   *
   * Der zweite Selektor faengt das v1-Markup ab. Die zuerst veroeffentlichten
   * Karten schreiben ein blankes <h3> ohne Klasse (siehe deprecated.js im
   * Plugin); WordPress schreibt ihr Markup erst um, wenn die Seite im Editor
   * geoeffnet und gespeichert wird. Bis dahin fielen sie durch jede Regel hier
   * — auf dem Navy-Band blieb die Ueberschrift schwarz und damit unlesbar.
   * Die Zeile kann weg, sobald kein v1-Markup mehr im Bestand liegt.
   */
  /* ------------------------------------------------------------------
     Background: primary — the original section. Cards are a lightened
     patch of the background itself, not a white box.

     Declared WITHOUT a class — but only for the sake of v1 markup:
     sections saved before the background became configurable carry no
     `is-background-*` class, and WordPress only rewrites their markup
     when the page is next opened and saved. Navy as the class-less look
     keeps them intact in the meantime; `.is-background-base` below
     overrides it.

     NOT to be confused with the block's own default, which is white
     (`background` in the plugin's card-grid/block.json): every section
     saved by v2 carries an explicit class, so a newly inserted grid is
     white and never reaches this rule.
     ------------------------------------------------------------------ */
  background: var(--wp--preset--color--primary);
  /* ------------------------------------------------------------------
     Background: white. The lightening hover of the navy variant is
     invisible here, so the card reacts differently — see below.
     ------------------------------------------------------------------ */
  /* ------------------------------------------------------------------
     Shadow. Deliberately $box-shadow (the soft Bootstrap default the
     image cards already use), not $box-shadow-lg — the site has two
     shadow depths for the same job and this is the quieter one.
     ------------------------------------------------------------------ */
  /*
   * Hover on white.
   * With a shadow the card lifts 2px and the shadow deepens — movement without
   * a colour change. Without a shadow there is nothing to deepen, so the card
   * tints to tertiary instead. Neither reflows the grid.
   */
  /*
   * !important on purpose: the per-background rules above set the `transition`
   * shorthand at a higher specificity, and a plain override here would lose to
   * them — reduced motion would then be silently ignored on the white variant.
   */
}
.card-grid-element__inner {
  max-width: var(--wp--style--global--content-size);
  margin-inline: auto;
  padding-inline: var(--wp--style--root--padding-left);
}
.card-grid-element__eyebrow {
  margin-bottom: var(--wp--preset--spacing--10);
  color: var(--wp--preset--color--secondary);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-align: center;
  text-transform: uppercase;
}
.card-grid-element__title {
  display: block;
  margin-bottom: var(--wp--preset--spacing--20);
  font-size: var(--wp--preset--font-size--x-large);
  font-weight: 300;
  line-height: 1.25;
  text-align: center;
}
.card-grid-element__lead {
  max-width: 640px;
  margin-bottom: var(--wp--preset--spacing--40);
  margin-inline: auto;
  line-height: 1.75;
  text-align: center;
}
.card-grid-element__grid {
  display: grid;
  grid-template-columns: repeat(var(--cg-cols-xs, 1), minmax(0, 1fr));
  gap: var(--wp--preset--spacing--20);
  margin-top: var(--wp--preset--spacing--40);
}
.card-grid-element__grid > * {
  margin-block: 0;
}
@media (min-width: 576px) {
  .card-grid-element__grid {
    grid-template-columns: repeat(var(--cg-cols-sm, var(--cg-cols-xs, 1)), minmax(0, 1fr));
  }
}
@media (min-width: 768px) {
  .card-grid-element__grid {
    grid-template-columns: repeat(var(--cg-cols-md, var(--cg-cols-xs, 1)), minmax(0, 1fr));
  }
}
@media (min-width: 992px) {
  .card-grid-element__grid {
    grid-template-columns: repeat(var(--cg-cols-lg, var(--cg-cols-xs, 1)), minmax(0, 1fr));
  }
}
@media (min-width: 1200px) {
  .card-grid-element__grid {
    grid-template-columns: repeat(var(--cg-cols-xl, var(--cg-cols-xs, 1)), minmax(0, 1fr));
  }
}
@media (min-width: 1400px) {
  .card-grid-element__grid {
    grid-template-columns: repeat(var(--cg-cols-xxl, var(--cg-cols-xs, 1)), minmax(0, 1fr));
  }
}
.card-grid-element:not(.is-background-primary):not(.is-background-base) .card-grid-element__grid {
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
}
.card-grid-element__card {
  display: flex;
  flex-direction: column;
  padding: var(--wp--preset--spacing--30);
  border-radius: 0;
}
.card-grid-element__media {
  margin: calc(var(--wp--preset--spacing--30) * -1);
  margin-bottom: var(--wp--preset--spacing--20);
  overflow: hidden;
  background-color: var(--wp--preset--color--base, #fff);
  /*
   * Contain: the whole image is shown instead of being cropped. Meant for
   * logos and product shots that must not lose their edges — the box keeps its
   * height, so the leftover space simply stays empty and the row stays even.
   */
}
.card-grid-element__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.card-grid-element__media.is-size-small {
  height: 120px;
}
.card-grid-element__media.is-size-medium {
  height: 180px;
}
.card-grid-element__media.is-size-large {
  height: 260px;
}
.card-grid-element__media.is-fit-contain img {
  object-fit: contain;
}
.card-grid-element__media.is-inset {
  margin: 0 0 var(--wp--preset--spacing--20);
}
.card-grid-element__num {
  margin-bottom: var(--wp--preset--spacing--10);
  color: var(--wp--preset--color--secondary);
  font-size: 2rem;
  font-weight: 700;
  line-height: 1;
}
.card-grid-element__card-heading, .card-grid-element__card :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6) {
  display: block;
  margin-top: 0;
  margin-bottom: var(--wp--preset--spacing--10);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 700;
  line-height: 1.3;
}
.card-grid-element__card-text {
  margin-bottom: 0;
  font-size: var(--wp--preset--font-size--small);
  line-height: 1.65;
}
.card-grid-element__actions {
  margin-top: auto;
  padding-top: var(--wp--preset--spacing--20);
}
.card-grid-element__button {
  display: inline-block;
  padding: 0.5rem 1.75rem;
  border: 0;
  border-radius: 0;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.5;
  text-decoration: none;
  transition: background 0.3s ease, color 0.3s ease;
}
.card-grid-element__button.is-button-standard {
  color: var(--wp--preset--color--contrast);
  position: relative;
  /*
   * Eigener Stacking-Context. Der Verlauf steht auf z-index: -1 und liegt
   * damit ueber der eigenen Flaeche, aber unter der Beschriftung — ohne dass
   * das Label eine eigene Ebene braucht.
   */
  z-index: 0;
  background: linear-gradient(var(--wp--preset--color--primary), var(--wp--preset--color--primary)) padding-box, linear-gradient(var(--wp--preset--color--primary), var(--wp--preset--color--primary)) border-box;
  background-repeat: no-repeat;
  border-color: transparent;
  /*
   * Kein Browser-Outline im Ruhezustand, dafuer ein eigener Fokusring fuer die
   * Tastatur — der Farbwechsel allein ist als Fokus-Anzeige zu leise.
   */
  outline: none;
  transition: color 0.3s ease;
  /*
   * inset: 0 spannt die Ebene ueber die Polsterflaeche. Ein Rahmen bleibt
   * damit auf der Ruhefarbe — sichtbar waere das nur beim gruenen
   * Suchen-Button, der als einziger Verlaufs-Button einen (2px, transparent
   * gesetzten) Kern-Rahmen traegt.
   */
}
.card-grid-element__button.is-button-standard:focus-visible {
  outline: 2px solid var(--wp--preset--color--secondary);
  outline-offset: 3px;
}
.card-grid-element__button.is-button-standard::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, var(--wp--preset--color--primary) 0, #3c48aa 100%);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.card-grid-element__button.is-button-standard:hover, .card-grid-element__button.is-button-standard:focus-visible {
  border-color: transparent;
}
.card-grid-element__button.is-button-standard:hover::before, .card-grid-element__button.is-button-standard:focus-visible::before {
  opacity: 1;
}
.card-grid-element__button.is-button-white {
  color: var(--wp--preset--color--contrast);
  background: var(--wp--preset--color--base);
}
.card-grid-element__button.is-button-white:hover, .card-grid-element__button.is-button-white:focus-visible {
  background: var(--wp--preset--color--contrast);
  color: var(--wp--preset--color--base);
}
.card-grid-element__button.is-button-senary {
  color: var(--wp--preset--color--base);
  position: relative;
  /*
   * Eigener Stacking-Context. Der Verlauf steht auf z-index: -1 und liegt
   * damit ueber der eigenen Flaeche, aber unter der Beschriftung — ohne dass
   * das Label eine eigene Ebene braucht.
   */
  z-index: 0;
  background: linear-gradient(var(--wp--preset--color--senary), var(--wp--preset--color--senary)) padding-box, linear-gradient(var(--wp--preset--color--senary), var(--wp--preset--color--senary)) border-box;
  background-repeat: no-repeat;
  border-color: transparent;
  /*
   * Kein Browser-Outline im Ruhezustand, dafuer ein eigener Fokusring fuer die
   * Tastatur — der Farbwechsel allein ist als Fokus-Anzeige zu leise.
   */
  outline: none;
  transition: color 0.3s ease;
  /*
   * inset: 0 spannt die Ebene ueber die Polsterflaeche. Ein Rahmen bleibt
   * damit auf der Ruhefarbe — sichtbar waere das nur beim gruenen
   * Suchen-Button, der als einziger Verlaufs-Button einen (2px, transparent
   * gesetzten) Kern-Rahmen traegt.
   */
}
.card-grid-element__button.is-button-senary:focus-visible {
  outline: 2px solid var(--wp--preset--color--secondary);
  outline-offset: 3px;
}
.card-grid-element__button.is-button-senary::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, var(--wp--preset--color--senary) 0, #d2e07b 100%);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.card-grid-element__button.is-button-senary:hover, .card-grid-element__button.is-button-senary:focus-visible {
  border-color: transparent;
}
.card-grid-element__button.is-button-senary:hover::before, .card-grid-element__button.is-button-senary:focus-visible::before {
  opacity: 1;
}
.card-grid-element:not(.is-background-base) .card-grid-element__title {
  color: var(--wp--preset--color--base);
}
.card-grid-element:not(.is-background-base) .card-grid-element__lead {
  color: rgba(255, 255, 255, 0.75);
}
.card-grid-element:not(.is-background-base) .card-grid-element__card {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.12);
  transition: background 0.3s ease;
}
.card-grid-element:not(.is-background-base) .card-grid-element__card:hover {
  background: rgba(255, 255, 255, 0.12);
}
.card-grid-element:not(.is-background-base) .card-grid-element__card-heading,
.card-grid-element:not(.is-background-base) .card-grid-element__card :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6) {
  color: var(--wp--preset--color--base);
}
.card-grid-element:not(.is-background-base) .card-grid-element__card-text {
  color: hsla(0, 0%, 100%, 0.75);
}
.card-grid-element.is-background-base {
  background: var(--wp--preset--color--base);
}
.card-grid-element.is-background-base .card-grid-element__title {
  color: var(--wp--preset--color--black);
}
.card-grid-element.is-background-base .card-grid-element__lead,
.card-grid-element.is-background-base .card-grid-element__card-text {
  color: var(--wp--preset--color--contrast);
}
.card-grid-element.is-background-base .card-grid-element__card {
  background: var(--wp--preset--color--base);
  border: 0;
}
.card-grid-element.is-background-base .card-grid-element__card-heading,
.card-grid-element.is-background-base .card-grid-element__card :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6) {
  color: var(--wp--preset--color--black);
}
.card-grid-element.is-background-base .card-grid-element__num {
  color: var(--wp--preset--color--primary);
}
.card-grid-element.has-card-shadow .card-grid-element__card {
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}
.card-grid-element.is-background-base .card-grid-element__card {
  transition: background 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;
}
.card-grid-element.is-background-base.has-card-shadow .card-grid-element__card:hover {
  box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px, rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
  transform: translateY(-2px);
}
.card-grid-element.is-background-base.no-card-shadow .card-grid-element__card:hover {
  background: var(--wp--preset--color--tertiary);
}
@media (prefers-reduced-motion: reduce) {
  .card-grid-element .card-grid-element__card {
    transition-duration: 0.01ms !important;
  }
  .card-grid-element .card-grid-element__card:hover {
    transform: none !important;
  }
}

/*
Process steps block
==============================================
Front-end styling for the die-leoparden/process-steps block: a full-width
section with a centred eyebrow, heading and lead, followed by a responsive,
evenly-wrapping row of numbered process steps. A single continuous gradient line
runs behind the number badges (the badges "pierce" it) so wrapped rows stay
visibly on the timeline. The block markup lives in the leopard-wp-posts plugin;
the design lives here so it stays in sync with the theme.
*/
.process-steps-element {
  background: var(--wp--preset--color--base);
}
.process-steps-element__inner {
  max-width: var(--wp--style--global--content-size);
  margin-inline: auto;
  padding-inline: var(--wp--style--root--padding-left);
  text-align: center;
}
.process-steps-element__eyebrow {
  margin-bottom: var(--wp--preset--spacing--10);
  color: var(--wp--preset--color--secondary);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.process-steps-element__title {
  margin-bottom: var(--wp--preset--spacing--20);
  color: var(--wp--preset--color--black);
}
.process-steps-element__lead {
  max-width: 640px;
  margin-bottom: var(--wp--preset--spacing--40);
  margin-inline: auto;
  color: var(--wp--preset--color--contrast);
  line-height: 1.75;
}
.process-steps-element__grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--20);
  margin-top: var(--wp--preset--spacing--40);
  overflow: hidden;
}
.process-steps-element__grid > * {
  margin-block: 0;
}
.process-steps-element__step {
  position: relative;
  z-index: 1;
  flex: 1 1 100%;
  padding-inline: var(--wp--preset--spacing--10);
  text-align: center;
}
@media (min-width: 768px) {
  .process-steps-element__step {
    flex: 1 1 calc(50% - var(--wp--preset--spacing--20) / 2);
  }
}
@media (min-width: 992px) {
  .process-steps-element__step {
    flex: 1 1 calc((100% - 4 * var(--wp--preset--spacing--20)) / 5);
  }
}
@media (min-width: 768px) and (max-width: 991.98px) {
  .process-steps-element__step:last-child:nth-child(2n+1) {
    flex-grow: 0;
  }
}
@media (min-width: 992px) {
  .process-steps-element__step:last-child:nth-child(5n+1) {
    flex-grow: 0;
  }
}
.process-steps-element__step h3, .process-steps-element__step .h3 {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 2.6em;
  margin-bottom: var(--wp--preset--spacing--10);
  color: var(--wp--preset--color--black);
  font-size: var(--wp--preset--font-size--medium);
  font-weight: 700;
}
@media (min-width: 768px) {
  .process-steps-element__step::before {
    content: "";
    position: absolute;
    z-index: 0;
    top: 28px;
    left: calc(var(--wp--preset--spacing--20) / -2);
    right: calc(var(--wp--preset--spacing--20) / -2);
    height: 2px;
    background-image: linear-gradient(90deg, var(--wp--preset--color--primary), var(--wp--preset--color--secondary));
    background-attachment: fixed;
    background-size: 100vw 100%;
    background-repeat: no-repeat;
  }
  .process-steps-element__step:first-child::after, .process-steps-element__step:last-child::after {
    content: "";
    position: absolute;
    z-index: 0;
    top: 27px;
    width: 50%;
    height: 4px;
    background: var(--wp--preset--color--base);
  }
  .process-steps-element__step:first-child::after {
    left: calc(var(--wp--preset--spacing--20) / -2);
  }
  .process-steps-element__step:last-child::after {
    right: calc(var(--wp--preset--spacing--20) / -2);
  }
}
.process-steps-element__num {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  margin: 0 auto var(--wp--preset--spacing--10);
  border-radius: 0;
  background: var(--wp--preset--color--primary);
  color: var(--wp--preset--color--base);
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1;
}
.process-steps-element__step-text {
  margin-bottom: 0;
  color: var(--wp--preset--color--contrast);
  font-size: var(--wp--preset--font-size--small);
  line-height: 1.65;
}

/*
 * Plugin-specific styles
 * ---------------------- */
/*
Yoast seo plugin
==============================================
Custom styling for Yoast seo plugin.
*/
.yoast-breadcrumbs {
  margin-left: var(--wp--preset--spacing--40);
}
.yoast-breadcrumbs a,
.yoast-breadcrumbs .breadcrumb_last {
  position: relative;
  font-size: var(--wp--preset--font-size--small);
  text-decoration: none;
  margin-right: var(--wp--preset--spacing--40);
}
.yoast-breadcrumbs a:before,
.yoast-breadcrumbs .breadcrumb_last:before {
  content: "";
  position: absolute;
  width: 30px;
  height: 30px;
  top: 50%;
  left: calc(var(--wp--preset--spacing--20) * -1);
  background: url(./images/breadcrumb-chevron.4a6ac3fa.svg) no-repeat 0 50%;
  transform: translateY(-50%);
}
@media (min-width: 992px) {
  .yoast-breadcrumbs a:before,
  .yoast-breadcrumbs .breadcrumb_last:before {
    left: calc(var(--wp--preset--spacing--30) * -1);
  }
}
.yoast-breadcrumbs .breadcrumb_last {
  display: inline-block;
  color: var(--wp--preset--color--primary);
}
@media (max-width: 767.98px) {
  .yoast-breadcrumbs {
    display: flex;
    justify-content: center;
    text-align: center;
  }
}
@media (max-width: 575.98px) {
  .yoast-breadcrumbs {
    display: none;
  }
}

/*
PowerTip plugin
==============================================
Custom styling for power-tip plugin.
*/
.wrap_svl_center {
  position: relative;
}
.wrap_svl_center .custom-link {
  position: absolute;
  bottom: var(--wp--preset--spacing--20);
  right: var(--wp--preset--spacing--20);
  z-index: 1;
}
@media (max-width: 991.98px) {
  .wrap_svl_center .custom-link {
    top: var(--wp--preset--spacing--10);
    right: var(--wp--preset--spacing--10);
    bottom: initial;
  }
}
@media (max-width: 767.98px) {
  .wrap_svl_center .drag_element {
    display: none;
  }
}

#powerTip {
  background: var(--wp--preset--color--base) !important;
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}
#powerTip .box_view_html {
  color: var(--wp--preset--color--contrast) !important;
  padding: var(--wp--preset--spacing--30);
}

/*
Scroll-top plugin
==============================================
Custom styling for scroll-top plugin.
*/
#scrollUp {
  border: 2px solid var(--wp--preset--color--contrast);
}

/*
 * Template-specific styles
 * ------------------------ */
/*
Page template
==============================================
Custom styling for page.
*/
.sidebar-page .entry-content > .has-global-padding {
  padding-right: var(--wp--style--root--padding-right) !important;
  padding-left: var(--wp--style--root--padding-left) !important;
}
@media (max-width: 767.98px) {
  .sidebar-page .wp-block-cover {
    padding: 0 !important;
  }
}

/*
Search template
==============================================
Custom styling for search.
*/
.search.search-results .wp-block-post-title {
  font-weight: bold;
}
.search.search-results .wp-block-post-title a {
  color: var(--wp--preset--color--black);
}
.search.search-results .wp-block-post-title a:hover {
  text-decoration: none;
}

/*
 * Typografie-Rollen
 * -----------------
 * Bewusst zuletzt: die Datei liest die Sektions-Registry aus
 * layout/section-spacing, und die Rollen sollen waehrend der Umstellung die
 * alten Einzelregeln der Patterns ueberstimmen, ohne !important zu brauchen. */
/*
Typografie-Rollen
==============================================
Die eine Stelle, an der Schriftgroesse, -gewicht und Textfarbe festgelegt werden.
Regelwerk und Begruendungen: siehe das Typografie-Regelwerk vom 30.07.2026.

Grundgedanke: ROLLE STATT TAG. Das HTML-Tag traegt die Gliederung fuer
Suchmaschinen und Screenreader, die Klasse traegt das Aussehen. Ein h2 darf zu
h3 werden, ohne dass sich optisch etwas aendert — und ein h3 in einer Karte darf
anders aussehen als ein h3 als Abschnittstitel, weil die Rolle entscheidet.

Acht Rollen, drei Gewichte (300 Text, 500 nur Buttons, 700 Struktur), vier
Textfarben. Was hier nicht steht, gibt es nicht.

Die Farbe folgt der FLAECHE, nicht dem Bauteil:

  Weiss / Tertiaer   Ueberschrift #000000   Text #7A7A7A   Overline #46b1dd
  Hellgrau           Ueberschrift #000000   Text #000000   Overline #46b1dd
  Navy / dunkel      Ueberschrift #ffffff   Text rgba(255,255,255,.75)
                                                           Overline #46b1dd

Ueberschriften stehen also nie in Primary-Blau, sondern schwarz — und auf
dunklem Grund weiss. Die Overline ist die einzige farbige Zeile.

Die Selektoren fuer "hellgrau" und "dunkel" werden aus der Sektions-Registry in
layout/_section-spacing.scss erzeugt — dieselbe Liste, die schon den vertikalen
Rhythmus steuert. Kommt eine Palettenfarbe oder ein Sektionsblock dazu, wird sie
dort eingetragen und gilt hier automatisch mit.

Deshalb wird diese Datei ZULETZT importiert: sie braucht `$sections`, und die
Rollen sollen waehrend der Umstellung die alten Einzelregeln der Patterns
ueberstimmen, ohne dass dafuer !important noetig waere.
*/
/*
 * Die Skala
 * ---------
 * Sechs Stufen. `large` (1.65rem) ist bewusst nicht dabei — der Abstand zu
 * 1.75rem war nicht wahrnehmbar; das Preset zeigt seit dem 30.07.2026 als Alias
 * ebenfalls auf 1.75rem, damit vorhandener Inhalt nicht bricht.
 */
/* Die drei erlaubten Gewichte. */
/* Die vier Textfarben. */
/*
 * Welche Sektionsfarben als "hellgrau" gelten: dort steht auch der Fliesstext
 * schwarz, weil das gedeckte Grau auf Grau nur 2,8:1 erreicht. Die Namen sind
 * die `color`-Kennungen aus $sections.
 *
 * Stand 30.07.2026 greift das noch nirgends: quaternary wird auf der Seite
 * ausschliesslich als Trennlinien-Farbe verwendet, septenary gar nicht. Die
 * Regel steht hier trotzdem, damit die Entscheidung schon getroffen ist, falls
 * eine Flaeche grau gestrichen wird.
 */
/*
 * Rollen
 * ------ */
.type-overline {
  margin-bottom: var(--wp--preset--spacing--10);
  color: var(--wp--preset--color--secondary);
  font-size: var(--wp--preset--font-size--x-small);
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.type-display {
  margin-top: 0;
  color: var(--wp--preset--color--black);
  font-size: clamp(1.75rem, 1.75rem + (1vw - 0.48rem) * 14.02, 2.5rem);
  font-weight: 300;
  line-height: 1.15;
}

.type-title {
  margin-top: 0;
  color: var(--wp--preset--color--black);
  font-size: clamp(1.375rem, 1.375rem + (1vw - 0.48rem) * 8.4135, 1.75rem);
  font-weight: 300;
  line-height: 1.3;
}

.type-subtitle {
  margin-top: 0;
  color: var(--wp--preset--color--black);
  font-size: var(--wp--preset--font-size--headline-dot);
  font-weight: 700;
  line-height: 1.4;
}

/*
 * Kartentitel. Steht auf $type-meta und damit auf derselben Groesse wie der
 * Kartentext — die Hierarchie in der Karte traegt allein das Gewicht (700),
 * nicht die Groesse. So bleiben die Karten kompakt und mehr davon passen ins
 * Raster. Vorher liefen sie auseinander: 0.875rem im Posts-Slider, 1.125rem im
 * Card Grid und in den Spalten-Pattern (vereinheitlicht am 21.08.2026).
 */
.type-card-title {
  margin-top: 0;
  color: var(--wp--preset--color--black);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 700;
  line-height: 1.4;
}

/*
 * Fliesstext hat bewusst KEINE Klasse — er ist der Grundzustand der Seite und
 * kommt aus der theme.json. `.type-body` existiert nur fuer die Faelle, in denen
 * ein Element seinen geerbten Zustand zuruecksetzen muss.
 */
.type-body {
  color: var(--wp--preset--color--contrast);
  font-size: var(--wp--preset--font-size--medium);
  font-weight: 300;
  line-height: 1.7;
}

.type-meta {
  color: var(--wp--preset--color--contrast);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 300;
  line-height: 1.6;
}

/*
 * Zahlen in Karten und Prozessschritten. Vereinheitlicht die frueheren 2rem im
 * Card Grid und 1.25rem in den Process Steps.
 */
.type-numeral {
  margin-top: 0;
  color: var(--wp--preset--color--secondary);
  font-size: var(--wp--preset--font-size--headline-dot);
  font-weight: 700;
  line-height: 1;
}

/*
 * Flaechenabhaengige Farben
 * -------------------------
 * Aus der Sektions-Registry erzeugt. Erst hellgrau, dann dunkel — eine Sektion
 * kann nie beides sein, die Reihenfolge ist also nur Lesbarkeit.
 */
/*
 * Hellgraue Flaechen: Fliesstext wird schwarz, alles andere bleibt.
 *
 * Bewusst nur die Rollenklassen und kein pauschales `p`: ein dunkles Bauteil
 * innerhalb einer grauen Sektion haette sonst schwarzen statt weissem Text —
 * der Nachfahrenselektor der Sektion ist spezifischer als der des Bauteils.
 * Klassenlose Absaetze bekommen die Regel, wenn ihr Bauteil auf die Rollen
 * umgestellt wird.
 */
.alignfull.has-quaternary-background-color .type-body,
.alignfull.has-quaternary-background-color .type-meta {
  color: var(--wp--preset--color--black);
}

.alignfull.has-septenary-background-color .type-body,
.alignfull.has-septenary-background-color .type-meta {
  color: var(--wp--preset--color--black);
}

.alignfull.has-primary-background-color .type-display,
.alignfull.has-primary-background-color .type-title,
.alignfull.has-primary-background-color .type-subtitle,
.alignfull.has-primary-background-color .type-card-title {
  color: var(--wp--preset--color--base);
}
.alignfull.has-primary-background-color .type-body,
.alignfull.has-primary-background-color .type-meta {
  color: hsla(0, 0%, 100%, 0.75);
}
.alignfull.has-primary-background-color .type-overline {
  color: var(--wp--preset--color--secondary);
}

.alignfull.has-secondary-background-color .type-display,
.alignfull.has-secondary-background-color .type-title,
.alignfull.has-secondary-background-color .type-subtitle,
.alignfull.has-secondary-background-color .type-card-title {
  color: var(--wp--preset--color--base);
}
.alignfull.has-secondary-background-color .type-body,
.alignfull.has-secondary-background-color .type-meta {
  color: hsla(0, 0%, 100%, 0.75);
}
.alignfull.has-secondary-background-color .type-overline {
  color: var(--wp--preset--color--secondary);
}

.alignfull.has-senary-background-color .type-display,
.alignfull.has-senary-background-color .type-title,
.alignfull.has-senary-background-color .type-subtitle,
.alignfull.has-senary-background-color .type-card-title {
  color: var(--wp--preset--color--base);
}
.alignfull.has-senary-background-color .type-body,
.alignfull.has-senary-background-color .type-meta {
  color: hsla(0, 0%, 100%, 0.75);
}
.alignfull.has-senary-background-color .type-overline {
  color: var(--wp--preset--color--secondary);
}

.alignfull.has-contrast-background-color .type-display,
.alignfull.has-contrast-background-color .type-title,
.alignfull.has-contrast-background-color .type-subtitle,
.alignfull.has-contrast-background-color .type-card-title {
  color: var(--wp--preset--color--base);
}
.alignfull.has-contrast-background-color .type-body,
.alignfull.has-contrast-background-color .type-meta {
  color: hsla(0, 0%, 100%, 0.75);
}
.alignfull.has-contrast-background-color .type-overline {
  color: var(--wp--preset--color--secondary);
}

.alignfull.has-black-background-color .type-display,
.alignfull.has-black-background-color .type-title,
.alignfull.has-black-background-color .type-subtitle,
.alignfull.has-black-background-color .type-card-title {
  color: var(--wp--preset--color--base);
}
.alignfull.has-black-background-color .type-body,
.alignfull.has-black-background-color .type-meta {
  color: hsla(0, 0%, 100%, 0.75);
}
.alignfull.has-black-background-color .type-overline {
  color: var(--wp--preset--color--secondary);
}

.alignfull.has-light-blue-to-dark-blue-gradient-background .type-display,
.alignfull.has-light-blue-to-dark-blue-gradient-background .type-title,
.alignfull.has-light-blue-to-dark-blue-gradient-background .type-subtitle,
.alignfull.has-light-blue-to-dark-blue-gradient-background .type-card-title {
  color: var(--wp--preset--color--base);
}
.alignfull.has-light-blue-to-dark-blue-gradient-background .type-body,
.alignfull.has-light-blue-to-dark-blue-gradient-background .type-meta {
  color: hsla(0, 0%, 100%, 0.75);
}
.alignfull.has-light-blue-to-dark-blue-gradient-background .type-overline {
  color: var(--wp--preset--color--secondary);
}

.card-grid-element:not(.is-background-base) .type-display,
.card-grid-element:not(.is-background-base) .type-title,
.card-grid-element:not(.is-background-base) .type-subtitle,
.card-grid-element:not(.is-background-base) .type-card-title {
  color: var(--wp--preset--color--base);
}
.card-grid-element:not(.is-background-base) .type-body,
.card-grid-element:not(.is-background-base) .type-meta {
  color: hsla(0, 0%, 100%, 0.75);
}
.card-grid-element:not(.is-background-base) .type-overline {
  color: var(--wp--preset--color--secondary);
}

/*
 * Ueberschriften-Rhythmus
 * -----------------------
 * Mehr Luft nach oben als nach unten. Eine Ueberschrift gehoert zu dem, was
 * ihr folgt — bei gleichem Abstand auf beiden Seiten haengt sie in der Mitte
 * und der Leser muss raten, worauf sie sich bezieht. Vorher kam der Abstand
 * ausschliesslich aus dem Blockabstand der theme.json: 20px, oben wie unten.
 *
 * Die Werte stehen in layout/_section-spacing, weil sie auch dort gebraucht
 * werden — fuer Ueberschriften, die selbst eine Sektion sind.
 *
 * Spezifitaet: der Blockabstand des Kerns steht auf
 * `:root :where(.is-layout-constrained) > *` = (0,1,0) und wird NACH
 * build/app.css ausgeliefert, gewinnt also jeden Gleichstand. `main` plus
 * `.wp-block-heading` ergibt (0,1,2) und reicht damit aus.
 *
 * Bewusst nur `.wp-block-heading`, also der Kern-Block: Kartentitel,
 * Slider-Titel und die Ueberschriften der eigenen Blocks bringen ihre
 * Abstaende selbst mit.
 */
/*
 * Nach oben: die volle Portion — aber nur, wenn davor echter Inhalt steht.
 *
 * Bewusst als Aufzaehlung dessen, was davor stehen DARF, statt als Ausnahme-
 * liste: eine Ueberschrift eroeffnet einen neuen Abschnitt, wenn ein Absatz,
 * eine Liste, ein Bild oder eine Tabelle vorausgeht. Folgt sie dagegen einem
 * Trenner, einem Abstandshalter oder einer anderen Ueberschrift, gehoert sie
 * zu dem, was davor steht — in den Kennzahlen-Kacheln etwa steht sie als
 * Beschriftung unter der grossen Zahl und deren Trennlinie, dort waeren 48px
 * ein Bruch mitten in der Kachel.
 */
main :is(p, ul, ol, dl, figure, table, blockquote, .wp-block-buttons, .wp-block-embed) + :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6).wp-block-heading {
  margin-block-start: var(--heading-space-before);
}

/*
 * Nach unten: wenig. Der Wert muss am NACHFOLGER stehen, nicht nur an der
 * Ueberschrift — benachbarte vertikale Margins fallen zusammen, und der
 * Blockabstand des Kerns (20px) am naechsten Element ist groesser als diese
 * 16px, haette also gewonnen.
 */
main :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6).wp-block-heading {
  margin-block-end: var(--heading-space-after);
}

main :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6).wp-block-heading + * {
  margin-block-start: var(--heading-space-after);
}

/*
 * Steht die Ueberschrift ganz oben in ihrem Kasten, kommt die Luft schon aus
 * dem Sektions-Padding — sonst stuende sie doppelt tief.
 */
main :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6).wp-block-heading:first-child {
  margin-block-start: 0;
}

/*
 * Ausnahme fuer die oberste Ebene.
 *
 * Zwischen zwei Top-Level-Sektionen kommt der Abstand ausschliesslich aus
 * Padding (layout/_section-spacing) — nur so stossen zwei Farbflaechen ohne
 * weissen Streifen aneinander. Die Regel oben wuerde dort ein margin
 * zurueckbringen und genau diesen Streifen erzeugen; gemessen waren es 16px
 * auf der Startseite. Fuer den Fall "Ueberschrift ist selbst eine Sektion"
 * gibt es in _section-spacing eine eigene Padding-Regel.
 */
main > .is-layout-constrained > :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6).wp-block-heading,
main > .is-layout-constrained > :is(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6).wp-block-heading + * {
  margin-block: 0;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQSxnQkFBZ0I7QUFBaEI7Ozs7Ozs7Q0FBQTtBQ0FBOzs7O0NBQUE7QUFNQTs7d0JBQUE7QUFVQTs7Z0JBQUE7QUFLQTs7V0FBQTtBQUtBOztXQUFBO0FDMUJBOzs7Q0FBQTtBQUtBOztTQUFBO0FBS0E7Ozs7Ozs7O0VBQUE7QUFXQTs7WUFBQTtBQUtBOztZQUFBO0FBS0E7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW9CQTs7aUZBQUE7QUFNQTtBQUlBOztXQUFBO0FBV0E7O1NBQUE7QUFLQTs7aUJBQUE7QUFLQTs7aUJBQUE7QUFJQTt1REFBQTtBQUlBOzs7Ozs7Ozs7OztFQUFBO0FBZ0JBOzs7Ozs7RUFBQTtBQVNBOztxQkFBQTtBQU1BOzs7Ozs7OztFQUFBO0FBYUE7OztrREFBQTtBQVNBOzs7Ozs7Ozs7Ozs7OztFQUFBO0FBa0JBO0FBR0E7O29CQUFBO0FBU0E7Ozs7Ozs7Ozs7RUFBQTtBQW9CQTs7aUJBQUE7QUFTQTs7cUJBQUE7QUFLQTs7V0FBQTtBQUtBOzswQkFBQTtBQU1BOztXQUFBO0FDek5FOzs7OztFQUFBO0FDREY7RUFRSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFHRjtFQUNBO0VBQ0E7RUFDQTtFQU1BO0VBQ0E7RUFDQTtFQU9BO0VDNFBJLHlCQUxJO0VEclBSO0VBQ0E7RUFDQTtFQUlBO0VBSUE7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBRUE7RUFFQTtBSmtLRjs7QU0xTkE7OztFQUdFO0FONk5GOztBTTlNSTtFQU5KO0lBT007RU5rTko7QUFDRjs7QU1yTUE7RUFDRTtFQUNBO0VEbVBJLG1DQUxJO0VDNU9SO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOd01GOztBTS9MQTtFQUNFO0VBQ0EsY0NpakI0QjtFRGhqQjVCO0VBQ0E7RUFDQSxhQ3VqQjRCO0FQclg5Qjs7QU14TEE7RUFDRTtFQUNBLHFCQ3dmNEI7RURyZjVCLGdCQ3dmNEI7RUR2ZjVCLGdCQ3dmNEI7QVAvVDlCOztBTXJMQTtFRDZNUTtBTHBCUjtBSzlJSTtFQzNDSjtJRG9OUTtFTHZCTjtBQUNGOztBTXpMQTtFRHdNUTtBTFhSO0FLdkpJO0VDdENKO0lEK01RO0VMZE47QUFDRjs7QU03TEE7RURtTVE7QUxGUjtBS2hLSTtFQ2pDSjtJRDBNUTtFTExOO0FBQ0Y7O0FNak1BO0VEOExRO0FMT1I7QUt6S0k7RUM1Qko7SURxTVE7RUxJTjtBQUNGOztBTXJNQTtFRHFMTSxrQkFMSTtBTHlCVjs7QU1wTUE7RURnTE0sZUFMSTtBTDZCVjs7QU03TEE7RUFDRTtFQUNBLG1CQ21TMEI7QVBuRzVCOztBTXRMQTtFQUNFO0VBQ0E7RUFDQTtBTnlMRjs7QU1uTEE7RUFDRTtFQUNBO0VBQ0E7QU5zTEY7O0FNaExBOztFQUVFO0FObUxGOztBTWhMQTs7O0VBR0U7RUFDQTtBTm1MRjs7QU1oTEE7Ozs7RUFJRTtBTm1MRjs7QU1oTEE7RUFDRSxnQkM2WDRCO0FQMU05Qjs7QU05S0E7RUFDRTtFQUNBO0FOaUxGOztBTTNLQTtFQUNFO0FOOEtGOztBTXRLQTs7RUFFRSxtQkNzVzRCO0FQN0w5Qjs7QU1qS0E7RURtRk0sa0JBTEk7QUx1RlY7O0FNOUpBO0VBQ0UsaUJDK2E0QjtFRDlhNUI7QU5pS0Y7O0FNeEpBOztFQUVFO0VEK0RJLGlCQUxJO0VDeERSO0VBQ0E7QU4ySkY7O0FNeEpBO0VBQU07QU40Sk47O0FNM0pBO0VBQU07QU4rSk47O0FNMUpBO0VBQ0U7RUFDQSwwQkNxS3dDO0FQUjFDO0FNM0pFO0VBQ0U7QU42Sko7O0FNbEpFO0VBRUU7RUFDQTtBTm9KSjs7QU03SUE7Ozs7RUFJRSxxQ0NrUjRCO0VGN1B4QixjQUxJO0FMaUlWOztBTXpJQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VEU0ksa0JBTEk7QUx5SVY7QU14SUU7RURJSSxrQkFMSTtFQ0dOO0VBQ0E7QU4wSUo7O0FNdElBO0VESE0sa0JBTEk7RUNVUjtFQUNBO0FOeUlGO0FNdElFO0VBQ0U7QU53SUo7O0FNcElBO0VBQ0U7RURmSSxrQkFMSTtFQ3NCUix3QkN1eUNrQztFRHR5Q2xDLHNDQ3V5Q2tDO0VDM2tEaEM7QVI0YUo7QU1ySUU7RUFDRTtFRHRCRSxjQUxJO0FMbUtWOztBTTdIQTtFQUNFO0FOZ0lGOztBTTFIQTs7RUFFRTtBTjZIRjs7QU1ySEE7RUFDRTtFQUNBO0FOd0hGOztBTXJIQTtFQUNFLG1CQ3NUNEI7RURyVDVCLHNCQ3FUNEI7RURwVDVCLGNDalZTO0VEa1ZUO0FOd0hGOztBTWpIQTtFQUVFO0VBQ0E7QU5tSEY7O0FNaEhBOzs7Ozs7RUFNRTtFQUNBO0VBQ0E7QU5tSEY7O0FNM0dBO0VBQ0U7QU44R0Y7O0FNeEdBO0VBRUU7QU4wR0Y7O0FNbEdBO0VBQ0U7QU5xR0Y7O0FNaEdBOzs7OztFQUtFO0VBQ0E7RURySEksa0JBTEk7RUM0SFI7QU5tR0Y7O0FNL0ZBOztFQUVFO0FOa0dGOztBTTdGQTtFQUNFO0FOZ0dGOztBTTdGQTtFQUdFO0FOOEZGO0FNM0ZFO0VBQ0U7QU42Rko7O0FNdEZBO0VBQ0U7QU55RkY7O0FNakZBOzs7O0VBSUU7QU5vRkY7QU1qRkk7Ozs7RUFDRTtBTnNGTjs7QU0vRUE7RUFDRTtFQUNBO0FOa0ZGOztBTTdFQTtFQUNFO0FOZ0ZGOztBTXRFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FOeUVGOztBTWpFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBLHFCQzhJNEI7RUZ4VnRCO0VDNk1OO0FObUVGO0FLbGJJO0VDd1dKO0lEL0xRO0VMNlFOO0FBQ0Y7QU10RUU7RUFDRTtBTndFSjs7QU1qRUE7Ozs7Ozs7RUFPRTtBTm9FRjs7QU1qRUE7RUFDRTtBTm9FRjs7QU0zREE7RUFDRTtFQUNBO0FOOERGOztBTXREQTs7Ozs7OztDQUFBO0FBV0E7RUFDRTtBTnNERjs7QU1qREE7RUFDRTtBTm9ERjs7QU03Q0E7RUFDRTtFQUNBO0FOZ0RGOztBTTNDQTtFQUNFO0FOOENGOztBTXpDQTtFQUNFO0FONENGOztBTXJDQTtFQUNFO0VBQ0E7QU53Q0Y7O0FNaENBO0VBQ0U7QU5tQ0Y7O0FNM0JBO0VBQ0U7QU44QkY7O0FTbG1CQTtFSnlRTSxrQkFMSTtFSWxRUixnQkZ3a0I0QjtBUDZCOUI7O0FTaG1CRTtFSnNRTTtFSWxRSixnQkZ5akJrQjtFRXhqQmxCLGdCRndpQjBCO0FQeUQ5QjtBS2xnQkk7RUlwR0Y7SUo2UU07RUw2Vk47QUFDRjs7QVMzbUJFO0VKc1FNO0VJbFFKLGdCRnlqQmtCO0VFeGpCbEIsZ0JGd2lCMEI7QVBvRTlCO0FLN2dCSTtFSXBHRjtJSjZRTTtFTHdXTjtBQUNGOztBU3RuQkU7RUpzUU07RUlsUUosZ0JGeWpCa0I7RUV4akJsQixnQkZ3aUIwQjtBUCtFOUI7QUt4aEJJO0VJcEdGO0lKNlFNO0VMbVhOO0FBQ0Y7O0FTam9CRTtFSnNRTTtFSWxRSixnQkZ5akJrQjtFRXhqQmxCLGdCRndpQjBCO0FQMEY5QjtBS25pQkk7RUlwR0Y7SUo2UU07RUw4WE47QUFDRjs7QVM1b0JFO0VKc1FNO0VJbFFKLGdCRnlqQmtCO0VFeGpCbEIsZ0JGd2lCMEI7QVBxRzlCO0FLOWlCSTtFSXBHRjtJSjZRTTtFTHlZTjtBQUNGOztBU3ZwQkU7RUpzUU07RUlsUUosZ0JGeWpCa0I7RUV4akJsQixnQkZ3aUIwQjtBUGdIOUI7QUt6akJJO0VJcEdGO0lKNlFNO0VMb1pOO0FBQ0Y7O0FTMW9CQTtFQ3ZERTtFQUNBO0FWcXNCRjs7QVMxb0JBO0VDNURFO0VBQ0E7QVYwc0JGOztBUzVvQkE7RUFDRTtBVCtvQkY7QVM3b0JFO0VBQ0Usb0JGZ2tCMEI7QVArRTlCOztBU3JvQkE7RUpvTk0sa0JBTEk7RUk3TVI7QVR3b0JGOztBU3BvQkE7RUFDRSxtQkY2Uk87RUZoRkgsa0JBTEk7QUxnY1Y7QVNyb0JFO0VBQ0U7QVR1b0JKOztBU25vQkE7RUFDRTtFQUNBLG1CRm1STztFRmhGSCxrQkFMSTtFSTVMUixjRnRGUztBUDR0Qlg7QVNwb0JFO0VBQ0U7QVRzb0JKOztBV3R1QkE7RUNJRTtFQUdBO0Fab3VCRjs7QVdydUJBO0VBQ0UsZ0JKNDhDa0M7RUkzOENsQyxzQkpQUztFSVFUO0VIR0U7RUlSRjtFQUdBO0FaNnVCRjs7QVcvdEJBO0VBRUU7QVhpdUJGOztBVzl0QkE7RUFDRTtFQUNBO0FYaXVCRjs7QVc5dEJBO0VOK1BNLGtCQUxJO0VNeFBSLGNKMUJTO0FQMnZCWDs7QWFud0JFOzs7Ozs7RUNIQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZCt3QkY7O0FlenRCSTtFRjVDRTtJQUNFLGdCWlhlO0VEb3hCckI7QUFDRjtBZS90Qkk7RUY1Q0U7SUFDRSxnQlpYZTtFRHl4QnJCO0FBQ0Y7QWVwdUJJO0VGNUNFO0lBQ0UsaUJaWGU7RUQ4eEJyQjtBQUNGO0FlenVCSTtFRjVDRTtJQUNFLGlCWlhlO0VEbXlCckI7QUFDRjtBZ0J4eUJFO0VDQUE7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7QWpCMHlCRjtBZ0I5eUJJO0VDYUY7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQm95QkY7O0FpQnJ2Qk07RUFDRTtBakJ3dkJSOztBaUJydkJNO0VBcENKO0VBQ0E7QWpCNnhCRjs7QWlCL3dCRTtFQUNFO0VBQ0E7QWpCa3hCSjs7QWlCcHhCRTtFQUNFO0VBQ0E7QWpCdXhCSjs7QWlCenhCRTtFQUNFO0VBQ0E7QWpCNHhCSjs7QWlCOXhCRTtFQUNFO0VBQ0E7QWpCaXlCSjs7QWlCbnlCRTtFQUNFO0VBQ0E7QWpCc3lCSjs7QWlCeHlCRTtFQUNFO0VBQ0E7QWpCMnlCSjs7QWlCNXdCTTtFQWhESjtFQUNBO0FqQmcwQkY7O0FpQjN3QlU7RUFoRU47RUFDQTtBakIrMEJKOztBaUJoeEJVO0VBaEVOO0VBQ0E7QWpCbzFCSjs7QWlCcnhCVTtFQWhFTjtFQUNBO0FqQnkxQko7O0FpQjF4QlU7RUFoRU47RUFDQTtBakI4MUJKOztBaUIveEJVO0VBaEVOO0VBQ0E7QWpCbTJCSjs7QWlCcHlCVTtFQWhFTjtFQUNBO0FqQncyQko7O0FpQnp5QlU7RUFoRU47RUFDQTtBakI2MkJKOztBaUI5eUJVO0VBaEVOO0VBQ0E7QWpCazNCSjs7QWlCbnpCVTtFQWhFTjtFQUNBO0FqQnUzQko7O0FpQnh6QlU7RUFoRU47RUFDQTtBakI0M0JKOztBaUI3ekJVO0VBaEVOO0VBQ0E7QWpCaTRCSjs7QWlCbDBCVTtFQWhFTjtFQUNBO0FqQnM0Qko7O0FpQi96Qlk7RUF4RFY7QWpCMjNCRjs7QWlCbjBCWTtFQXhEVjtBakIrM0JGOztBaUJ2MEJZO0VBeERWO0FqQm00QkY7O0FpQjMwQlk7RUF4RFY7QWpCdTRCRjs7QWlCLzBCWTtFQXhEVjtBakIyNEJGOztBaUJuMUJZO0VBeERWO0FqQis0QkY7O0FpQnYxQlk7RUF4RFY7QWpCbTVCRjs7QWlCMzFCWTtFQXhEVjtBakJ1NUJGOztBaUIvMUJZO0VBeERWO0FqQjI1QkY7O0FpQm4yQlk7RUF4RFY7QWpCKzVCRjs7QWlCdjJCWTtFQXhEVjtBakJtNkJGOztBaUJoMkJROztFQUVFO0FqQm0yQlY7O0FpQmgyQlE7O0VBRUU7QWpCbTJCVjs7QWlCMTJCUTs7RUFFRTtBakI2MkJWOztBaUIxMkJROztFQUVFO0FqQjYyQlY7O0FpQnAzQlE7O0VBRUU7QWpCdTNCVjs7QWlCcDNCUTs7RUFFRTtBakJ1M0JWOztBaUI5M0JROztFQUVFO0FqQmk0QlY7O0FpQjkzQlE7O0VBRUU7QWpCaTRCVjs7QWlCeDRCUTs7RUFFRTtBakIyNEJWOztBaUJ4NEJROztFQUVFO0FqQjI0QlY7O0FpQmw1QlE7O0VBRUU7QWpCcTVCVjs7QWlCbDVCUTs7RUFFRTtBakJxNUJWOztBZS84Qkk7RUVVRTtJQUNFO0VqQnk4Qk47RWlCdDhCSTtJQXBDSjtJQUNBO0VqQjYrQkE7RWlCLzlCQTtJQUNFO0lBQ0E7RWpCaStCRjtFaUJuK0JBO0lBQ0U7SUFDQTtFakJxK0JGO0VpQnYrQkE7SUFDRTtJQUNBO0VqQnkrQkY7RWlCMytCQTtJQUNFO0lBQ0E7RWpCNitCRjtFaUIvK0JBO0lBQ0U7SUFDQTtFakJpL0JGO0VpQm4vQkE7SUFDRTtJQUNBO0VqQnEvQkY7RWlCdDlCSTtJQWhESjtJQUNBO0VqQnlnQ0E7RWlCcDlCUTtJQWhFTjtJQUNBO0VqQnVoQ0Y7RWlCeDlCUTtJQWhFTjtJQUNBO0VqQjJoQ0Y7RWlCNTlCUTtJQWhFTjtJQUNBO0VqQitoQ0Y7RWlCaCtCUTtJQWhFTjtJQUNBO0VqQm1pQ0Y7RWlCcCtCUTtJQWhFTjtJQUNBO0VqQnVpQ0Y7RWlCeCtCUTtJQWhFTjtJQUNBO0VqQjJpQ0Y7RWlCNStCUTtJQWhFTjtJQUNBO0VqQitpQ0Y7RWlCaC9CUTtJQWhFTjtJQUNBO0VqQm1qQ0Y7RWlCcC9CUTtJQWhFTjtJQUNBO0VqQnVqQ0Y7RWlCeC9CUTtJQWhFTjtJQUNBO0VqQjJqQ0Y7RWlCNS9CUTtJQWhFTjtJQUNBO0VqQitqQ0Y7RWlCaGdDUTtJQWhFTjtJQUNBO0VqQm1rQ0Y7RWlCNS9CVTtJQXhEVjtFakJ1akNBO0VpQi8vQlU7SUF4RFY7RWpCMGpDQTtFaUJsZ0NVO0lBeERWO0VqQjZqQ0E7RWlCcmdDVTtJQXhEVjtFakJna0NBO0VpQnhnQ1U7SUF4RFY7RWpCbWtDQTtFaUIzZ0NVO0lBeERWO0VqQnNrQ0E7RWlCOWdDVTtJQXhEVjtFakJ5a0NBO0VpQmpoQ1U7SUF4RFY7RWpCNGtDQTtFaUJwaENVO0lBeERWO0VqQitrQ0E7RWlCdmhDVTtJQXhEVjtFakJrbENBO0VpQjFoQ1U7SUF4RFY7RWpCcWxDQTtFaUI3aENVO0lBeERWO0VqQndsQ0E7RWlCcmhDTTs7SUFFRTtFakJ1aENSO0VpQnBoQ007O0lBRUU7RWpCc2hDUjtFaUI3aENNOztJQUVFO0VqQitoQ1I7RWlCNWhDTTs7SUFFRTtFakI4aENSO0VpQnJpQ007O0lBRUU7RWpCdWlDUjtFaUJwaUNNOztJQUVFO0VqQnNpQ1I7RWlCN2lDTTs7SUFFRTtFakIraUNSO0VpQjVpQ007O0lBRUU7RWpCOGlDUjtFaUJyakNNOztJQUVFO0VqQnVqQ1I7RWlCcGpDTTs7SUFFRTtFakJzakNSO0VpQjdqQ007O0lBRUU7RWpCK2pDUjtFaUI1akNNOztJQUVFO0VqQjhqQ1I7QUFDRjtBZXpuQ0k7RUVVRTtJQUNFO0VqQmtuQ047RWlCL21DSTtJQXBDSjtJQUNBO0VqQnNwQ0E7RWlCeG9DQTtJQUNFO0lBQ0E7RWpCMG9DRjtFaUI1b0NBO0lBQ0U7SUFDQTtFakI4b0NGO0VpQmhwQ0E7SUFDRTtJQUNBO0VqQmtwQ0Y7RWlCcHBDQTtJQUNFO0lBQ0E7RWpCc3BDRjtFaUJ4cENBO0lBQ0U7SUFDQTtFakIwcENGO0VpQjVwQ0E7SUFDRTtJQUNBO0VqQjhwQ0Y7RWlCL25DSTtJQWhESjtJQUNBO0VqQmtyQ0E7RWlCN25DUTtJQWhFTjtJQUNBO0VqQmdzQ0Y7RWlCam9DUTtJQWhFTjtJQUNBO0VqQm9zQ0Y7RWlCcm9DUTtJQWhFTjtJQUNBO0VqQndzQ0Y7RWlCem9DUTtJQWhFTjtJQUNBO0VqQjRzQ0Y7RWlCN29DUTtJQWhFTjtJQUNBO0VqQmd0Q0Y7RWlCanBDUTtJQWhFTjtJQUNBO0VqQm90Q0Y7RWlCcnBDUTtJQWhFTjtJQUNBO0VqQnd0Q0Y7RWlCenBDUTtJQWhFTjtJQUNBO0VqQjR0Q0Y7RWlCN3BDUTtJQWhFTjtJQUNBO0VqQmd1Q0Y7RWlCanFDUTtJQWhFTjtJQUNBO0VqQm91Q0Y7RWlCcnFDUTtJQWhFTjtJQUNBO0VqQnd1Q0Y7RWlCenFDUTtJQWhFTjtJQUNBO0VqQjR1Q0Y7RWlCcnFDVTtJQXhEVjtFakJndUNBO0VpQnhxQ1U7SUF4RFY7RWpCbXVDQTtFaUIzcUNVO0lBeERWO0VqQnN1Q0E7RWlCOXFDVTtJQXhEVjtFakJ5dUNBO0VpQmpyQ1U7SUF4RFY7RWpCNHVDQTtFaUJwckNVO0lBeERWO0VqQit1Q0E7RWlCdnJDVTtJQXhEVjtFakJrdkNBO0VpQjFyQ1U7SUF4RFY7RWpCcXZDQTtFaUI3ckNVO0lBeERWO0VqQnd2Q0E7RWlCaHNDVTtJQXhEVjtFakIydkNBO0VpQm5zQ1U7SUF4RFY7RWpCOHZDQTtFaUJ0c0NVO0lBeERWO0VqQml3Q0E7RWlCOXJDTTs7SUFFRTtFakJnc0NSO0VpQjdyQ007O0lBRUU7RWpCK3JDUjtFaUJ0c0NNOztJQUVFO0VqQndzQ1I7RWlCcnNDTTs7SUFFRTtFakJ1c0NSO0VpQjlzQ007O0lBRUU7RWpCZ3RDUjtFaUI3c0NNOztJQUVFO0VqQitzQ1I7RWlCdHRDTTs7SUFFRTtFakJ3dENSO0VpQnJ0Q007O0lBRUU7RWpCdXRDUjtFaUI5dENNOztJQUVFO0VqQmd1Q1I7RWlCN3RDTTs7SUFFRTtFakIrdENSO0VpQnR1Q007O0lBRUU7RWpCd3VDUjtFaUJydUNNOztJQUVFO0VqQnV1Q1I7QUFDRjtBZWx5Q0k7RUVVRTtJQUNFO0VqQjJ4Q047RWlCeHhDSTtJQXBDSjtJQUNBO0VqQit6Q0E7RWlCanpDQTtJQUNFO0lBQ0E7RWpCbXpDRjtFaUJyekNBO0lBQ0U7SUFDQTtFakJ1ekNGO0VpQnp6Q0E7SUFDRTtJQUNBO0VqQjJ6Q0Y7RWlCN3pDQTtJQUNFO0lBQ0E7RWpCK3pDRjtFaUJqMENBO0lBQ0U7SUFDQTtFakJtMENGO0VpQnIwQ0E7SUFDRTtJQUNBO0VqQnUwQ0Y7RWlCeHlDSTtJQWhESjtJQUNBO0VqQjIxQ0E7RWlCdHlDUTtJQWhFTjtJQUNBO0VqQnkyQ0Y7RWlCMXlDUTtJQWhFTjtJQUNBO0VqQjYyQ0Y7RWlCOXlDUTtJQWhFTjtJQUNBO0VqQmkzQ0Y7RWlCbHpDUTtJQWhFTjtJQUNBO0VqQnEzQ0Y7RWlCdHpDUTtJQWhFTjtJQUNBO0VqQnkzQ0Y7RWlCMXpDUTtJQWhFTjtJQUNBO0VqQjYzQ0Y7RWlCOXpDUTtJQWhFTjtJQUNBO0VqQmk0Q0Y7RWlCbDBDUTtJQWhFTjtJQUNBO0VqQnE0Q0Y7RWlCdDBDUTtJQWhFTjtJQUNBO0VqQnk0Q0Y7RWlCMTBDUTtJQWhFTjtJQUNBO0VqQjY0Q0Y7RWlCOTBDUTtJQWhFTjtJQUNBO0VqQmk1Q0Y7RWlCbDFDUTtJQWhFTjtJQUNBO0VqQnE1Q0Y7RWlCOTBDVTtJQXhEVjtFakJ5NENBO0VpQmoxQ1U7SUF4RFY7RWpCNDRDQTtFaUJwMUNVO0lBeERWO0VqQis0Q0E7RWlCdjFDVTtJQXhEVjtFakJrNUNBO0VpQjExQ1U7SUF4RFY7RWpCcTVDQTtFaUI3MUNVO0lBeERWO0VqQnc1Q0E7RWlCaDJDVTtJQXhEVjtFakIyNUNBO0VpQm4yQ1U7SUF4RFY7RWpCODVDQTtFaUJ0MkNVO0lBeERWO0VqQmk2Q0E7RWlCejJDVTtJQXhEVjtFakJvNkNBO0VpQjUyQ1U7SUF4RFY7RWpCdTZDQTtFaUIvMkNVO0lBeERWO0VqQjA2Q0E7RWlCdjJDTTs7SUFFRTtFakJ5MkNSO0VpQnQyQ007O0lBRUU7RWpCdzJDUjtFaUIvMkNNOztJQUVFO0VqQmkzQ1I7RWlCOTJDTTs7SUFFRTtFakJnM0NSO0VpQnYzQ007O0lBRUU7RWpCeTNDUjtFaUJ0M0NNOztJQUVFO0VqQnczQ1I7RWlCLzNDTTs7SUFFRTtFakJpNENSO0VpQjkzQ007O0lBRUU7RWpCZzRDUjtFaUJ2NENNOztJQUVFO0VqQnk0Q1I7RWlCdDRDTTs7SUFFRTtFakJ3NENSO0VpQi80Q007O0lBRUU7RWpCaTVDUjtFaUI5NENNOztJQUVFO0VqQmc1Q1I7QUFDRjtBZTM4Q0k7RUVVRTtJQUNFO0VqQm84Q047RWlCajhDSTtJQXBDSjtJQUNBO0VqQncrQ0E7RWlCMTlDQTtJQUNFO0lBQ0E7RWpCNDlDRjtFaUI5OUNBO0lBQ0U7SUFDQTtFakJnK0NGO0VpQmwrQ0E7SUFDRTtJQUNBO0VqQm8rQ0Y7RWlCdCtDQTtJQUNFO0lBQ0E7RWpCdytDRjtFaUIxK0NBO0lBQ0U7SUFDQTtFakI0K0NGO0VpQjkrQ0E7SUFDRTtJQUNBO0VqQmcvQ0Y7RWlCajlDSTtJQWhESjtJQUNBO0VqQm9nREE7RWlCLzhDUTtJQWhFTjtJQUNBO0VqQmtoREY7RWlCbjlDUTtJQWhFTjtJQUNBO0VqQnNoREY7RWlCdjlDUTtJQWhFTjtJQUNBO0VqQjBoREY7RWlCMzlDUTtJQWhFTjtJQUNBO0VqQjhoREY7RWlCLzlDUTtJQWhFTjtJQUNBO0VqQmtpREY7RWlCbitDUTtJQWhFTjtJQUNBO0VqQnNpREY7RWlCditDUTtJQWhFTjtJQUNBO0VqQjBpREY7RWlCMytDUTtJQWhFTjtJQUNBO0VqQjhpREY7RWlCLytDUTtJQWhFTjtJQUNBO0VqQmtqREY7RWlCbi9DUTtJQWhFTjtJQUNBO0VqQnNqREY7RWlCdi9DUTtJQWhFTjtJQUNBO0VqQjBqREY7RWlCMy9DUTtJQWhFTjtJQUNBO0VqQjhqREY7RWlCdi9DVTtJQXhEVjtFakJrakRBO0VpQjEvQ1U7SUF4RFY7RWpCcWpEQTtFaUI3L0NVO0lBeERWO0VqQndqREE7RWlCaGdEVTtJQXhEVjtFakIyakRBO0VpQm5nRFU7SUF4RFY7RWpCOGpEQTtFaUJ0Z0RVO0lBeERWO0VqQmlrREE7RWlCemdEVTtJQXhEVjtFakJva0RBO0VpQjVnRFU7SUF4RFY7RWpCdWtEQTtFaUIvZ0RVO0lBeERWO0VqQjBrREE7RWlCbGhEVTtJQXhEVjtFakI2a0RBO0VpQnJoRFU7SUF4RFY7RWpCZ2xEQTtFaUJ4aERVO0lBeERWO0VqQm1sREE7RWlCaGhETTs7SUFFRTtFakJraERSO0VpQi9nRE07O0lBRUU7RWpCaWhEUjtFaUJ4aERNOztJQUVFO0VqQjBoRFI7RWlCdmhETTs7SUFFRTtFakJ5aERSO0VpQmhpRE07O0lBRUU7RWpCa2lEUjtFaUIvaERNOztJQUVFO0VqQmlpRFI7RWlCeGlETTs7SUFFRTtFakIwaURSO0VpQnZpRE07O0lBRUU7RWpCeWlEUjtFaUJoakRNOztJQUVFO0VqQmtqRFI7RWlCL2lETTs7SUFFRTtFakJpakRSO0VpQnhqRE07O0lBRUU7RWpCMGpEUjtFaUJ2akRNOztJQUVFO0VqQnlqRFI7QUFDRjtBZXBuREk7RUVVRTtJQUNFO0VqQjZtRE47RWlCMW1ESTtJQXBDSjtJQUNBO0VqQmlwREE7RWlCbm9EQTtJQUNFO0lBQ0E7RWpCcW9ERjtFaUJ2b0RBO0lBQ0U7SUFDQTtFakJ5b0RGO0VpQjNvREE7SUFDRTtJQUNBO0VqQjZvREY7RWlCL29EQTtJQUNFO0lBQ0E7RWpCaXBERjtFaUJucERBO0lBQ0U7SUFDQTtFakJxcERGO0VpQnZwREE7SUFDRTtJQUNBO0VqQnlwREY7RWlCMW5ESTtJQWhESjtJQUNBO0VqQjZxREE7RWlCeG5EUTtJQWhFTjtJQUNBO0VqQjJyREY7RWlCNW5EUTtJQWhFTjtJQUNBO0VqQityREY7RWlCaG9EUTtJQWhFTjtJQUNBO0VqQm1zREY7RWlCcG9EUTtJQWhFTjtJQUNBO0VqQnVzREY7RWlCeG9EUTtJQWhFTjtJQUNBO0VqQjJzREY7RWlCNW9EUTtJQWhFTjtJQUNBO0VqQitzREY7RWlCaHBEUTtJQWhFTjtJQUNBO0VqQm10REY7RWlCcHBEUTtJQWhFTjtJQUNBO0VqQnV0REY7RWlCeHBEUTtJQWhFTjtJQUNBO0VqQjJ0REY7RWlCNXBEUTtJQWhFTjtJQUNBO0VqQit0REY7RWlCaHFEUTtJQWhFTjtJQUNBO0VqQm11REY7RWlCcHFEUTtJQWhFTjtJQUNBO0VqQnV1REY7RWlCaHFEVTtJQXhEVjtFakIydERBO0VpQm5xRFU7SUF4RFY7RWpCOHREQTtFaUJ0cURVO0lBeERWO0VqQml1REE7RWlCenFEVTtJQXhEVjtFakJvdURBO0VpQjVxRFU7SUF4RFY7RWpCdXVEQTtFaUIvcURVO0lBeERWO0VqQjB1REE7RWlCbHJEVTtJQXhEVjtFakI2dURBO0VpQnJyRFU7SUF4RFY7RWpCZ3ZEQTtFaUJ4ckRVO0lBeERWO0VqQm12REE7RWlCM3JEVTtJQXhEVjtFakJzdkRBO0VpQjlyRFU7SUF4RFY7RWpCeXZEQTtFaUJqc0RVO0lBeERWO0VqQjR2REE7RWlCenJETTs7SUFFRTtFakIyckRSO0VpQnhyRE07O0lBRUU7RWpCMHJEUjtFaUJqc0RNOztJQUVFO0VqQm1zRFI7RWlCaHNETTs7SUFFRTtFakJrc0RSO0VpQnpzRE07O0lBRUU7RWpCMnNEUjtFaUJ4c0RNOztJQUVFO0VqQjBzRFI7RWlCanRETTs7SUFFRTtFakJtdERSO0VpQmh0RE07O0lBRUU7RWpCa3REUjtFaUJ6dERNOztJQUVFO0VqQjJ0RFI7RWlCeHRETTs7SUFFRTtFakIwdERSO0VpQmp1RE07O0lBRUU7RWpCbXVEUjtFaUJodURNOztJQUVFO0VqQmt1RFI7QUFDRjtBa0J4MURBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBLG1CWG9XTztFV25XUDtFQUNBLG1CWHFvQjRCO0VXcG9CNUI7QWxCeTFERjtBa0JsMURFO0VBQ0U7RUFDQTtFQUNBLHdCWGljMEI7RVdoYzFCO0FsQm8xREo7QWtCajFERTtFQUNFO0FsQm0xREo7QWtCaDFERTtFQUNFO0FsQmsxREo7O0FrQjkwREE7RUFDRTtBbEJpMURGOztBa0IxMERBO0VBQ0U7QWxCNjBERjs7QWtCbjBERTtFQUNFO0FsQnMwREo7O0FrQnZ6REU7RUFDRTtBbEIwekRKO0FrQnZ6REk7RUFDRTtBbEJ5ekROOztBa0JsekRFO0VBQ0U7QWxCcXpESjtBa0JsekRFO0VBQ0U7QWxCb3pESjs7QWtCMXlERTtFQUNFO0VBQ0E7QWxCNnlESjs7QWtCdnlERTtFQUNFO0VBQ0E7QWxCMHlESjs7QWtCbHlEQTtFQUNFO0VBQ0E7QWxCcXlERjs7QWtCN3hERTtFQUNFO0VBQ0E7QWxCZ3lESjs7QW1CcjZERTtFQU9FO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QW5CaTZESjs7QW1CbjdERTtFQU9FO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QW5CKzZESjs7QW1CajhERTtFQU9FO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QW5CNjdESjs7QW1CLzhERTtFQU9FO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QW5CMjhESjs7QW1CNzlERTtFQU9FO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QW5CeTlESjs7QW1CMytERTtFQU9FO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QW5CdStESjs7QW1Cei9ERTtFQU9FO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QW5CcS9ESjs7QW1CdmdFRTtFQU9FO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7QW5CbWdFSjs7QWtCejNESTtFQUNFO0VBQ0E7QWxCNDNETjs7QWVoOURJO0VHa0ZBO0lBQ0U7SUFDQTtFbEJrNERKO0FBQ0Y7QWV2OURJO0VHa0ZBO0lBQ0U7SUFDQTtFbEJ3NERKO0FBQ0Y7QWU3OURJO0VHa0ZBO0lBQ0U7SUFDQTtFbEI4NERKO0FBQ0Y7QWVuK0RJO0VHa0ZBO0lBQ0U7SUFDQTtFbEJvNURKO0FBQ0Y7QWV6K0RJO0VHa0ZBO0lBQ0U7SUFDQTtFbEIwNURKO0FBQ0Y7QW9CdmpFQTtFQUNFLHFCYjh4QnNDO0FQMnhDeEM7O0FvQmhqRUE7RUFDRTtFQUNBO0VBQ0E7RWZvUkksa0JBTEk7RWUzUVIsZ0JiK2hCNEI7QVBraEQ5Qjs7QW9CN2lFQTtFQUNFO0VBQ0E7RWYwUUksa0JBTEk7QUw0eURWOztBb0I3aUVBO0VBQ0U7RUFDQTtFZm9RSSxtQkFMSTtBTGt6RFY7O0FxQjlrRUE7RUFDRSxtQmRzeEJzQztFRnRmbEMsa0JBTEk7RWdCdlJSLGNkS1M7QVAwa0VYOztBc0JwbEVBO0VBQ0U7RUFDQTtFQUNBO0VqQjhSSSw4Q0FMSTtFaUJ0UlIsZ0JmbWlCNEI7RWVsaUI1QixnQmZ5aUI0QjtFZXhpQjVCLGNmS1M7RWVKVCxzQmZMUztFZU1UO0VBQ0E7RUFDQTtFZEdFO0VlSEUsd0VETUo7QXRCa2xFRjtBdUJwbEVNO0VEaEJOO0lDaUJRO0V2QnVsRU47QUFDRjtBc0JybEVFO0VBQ0U7QXRCdWxFSjtBc0JybEVJO0VBQ0U7QXRCdWxFTjtBc0JsbEVFO0VBQ0UsY2ZqQk87RWVrQlAsc0JmM0JPO0VlNEJQLHFCZnF5Qm9DO0VlcHlCcEM7RUFLRSxrRGY2cUIwQjtBUG02Q2hDO0FzQnprRUU7RUFFRTtBdEIwa0VKO0FzQnRrRUU7RUFDRSxjZjFDTztFZTRDUDtBdEJ1a0VKO0FzQi9qRUU7RUFFRSx5QmYxRE87RWU2RFA7QXRCOGpFSjtBc0IxakVFO0VBQ0U7RUFDQTtFQUNBLDBCZmdvQjBCO0VlL25CMUIsY2Y5RE87RWlCYlQseUJqQk1TO0VldUVQO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsNEJmMFkwQjtFZXpZMUI7RUN0RUUscUlEdUVGO0F0QjRqRUo7QXVCL25FTTtFRHVESjtJQ3RETTtFdkJrb0VOO0FBQ0Y7QXNCOWpFRTtFQUNFLHlCZnM0QjhCO0FQMHJDbEM7O0FzQnZqRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGdCZjJjNEI7RWUxYzVCLGNmekZTO0VlMEZUO0VBQ0E7RUFDQTtBdEIwakVGO0FzQnhqRUU7RUFDRTtBdEIwakVKO0FzQnZqRUU7RUFFRTtFQUNBO0F0QndqRUo7O0FzQjdpRUE7RUFDRSxzQ2ZzdEJzQztFZXJ0QnRDO0VqQmtLSSxtQkFMSTtFRzdRTjtBUmtxRUo7QXNCOWlFRTtFQUNFO0VBQ0E7RUFDQSx5QmZnbEIwQjtBUGcrQzlCOztBc0I1aUVBO0VBQ0Usb0NmMHNCc0M7RWV6c0J0QztFakJxSkksa0JBTEk7RUc3UU47QVI4cUVKO0FzQjdpRUU7RUFDRTtFQUNBO0VBQ0EsdUJmdWtCMEI7QVB3K0M5Qjs7QXNCdmlFRTtFQUNFLHNDZnVyQm9DO0FQbTNDeEM7QXNCdmlFRTtFQUNFLHNDZm9yQm9DO0FQcTNDeEM7QXNCdGlFRTtFQUNFLG9DZmlyQm9DO0FQdTNDeEM7O0FzQm5pRUE7RUFDRSxXZitxQnNDO0VlOXFCdEMsa0Nmd3FCc0M7RWV2cUJ0QyxnQnJCbEpnQjtBRHdyRWxCO0FzQnBpRUU7RUFDRTtBdEJzaUVKO0FzQm5pRUU7RUFDRTtFZHBLQTtBUjBzRUo7QXNCbGlFRTtFZHhLRTtBUjZzRUo7QXNCamlFRTtFQUFvQixrQ2Z5cEJrQjtBUDI0Q3hDO0FzQm5pRUU7RUFBb0IsZ0NmeXBCa0I7QVA2NEN4Qzs7QXlCanVFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VwQjRSSSw4Q0FMSTtFb0JwUlIsZ0JsQmlpQjRCO0VrQmhpQjVCLGdCbEJ1aUI0QjtFa0J0aUI1QixjbEJHUztFa0JGVCxzQmxCUFM7RWtCUVQ7RUFDQTtFQUNBLHlDbEJ3NUJrQztFa0J2NUJsQywwQmxCdzVCa0M7RWtCdjVCbEM7RWpCREU7RWVIRSx3RUVPSjtFQUNBO0F6Qmt1RUY7QXVCdHVFTTtFRWZOO0lGZ0JRO0V2Qnl1RU47QUFDRjtBeUJydUVFO0VBQ0UscUJsQjh5Qm9DO0VrQjd5QnBDO0VBS0Usa0RsQnk1QjRCO0FQMDBDbEM7QXlCL3RFRTtFQUVFLHNCbEJ1cUIwQjtFa0J0cUIxQjtBekJndUVKO0F5Qjd0RUU7RUFFRSx5QmxCbkNPO0FQaXdFWDtBeUJ6dEVFO0VBQ0U7RUFDQTtBekIydEVKOztBeUJ2dEVBO0VBQ0Usb0JsQmdxQjRCO0VrQi9wQjVCLHVCbEIrcEI0QjtFa0I5cEI1QixvQmxCK3BCNEI7RUZyYnhCLG1CQUxJO0VHN1FOO0FSb3dFSjs7QXlCdnRFQTtFQUNFLG1CbEI0cEI0QjtFa0IzcEI1QixzQmxCMnBCNEI7RWtCMXBCNUIsa0JsQjJwQjRCO0VGemJ4QixrQkFMSTtFRzdRTjtBUjR3RUo7O0EwQjN4RUE7RUFDRTtFQUNBLGtCbkI0MUJ3QztFbUIzMUJ4QyxtQm5CNDFCd0M7RW1CMzFCeEMsdUJuQjQxQndDO0FQazhDMUM7QTBCNXhFRTtFQUNFO0VBQ0E7QTFCOHhFSjs7QTBCMXhFQTtFQUNFLG9CbkJrMUJ3QztFbUJqMUJ4QztFQUNBO0ExQjZ4RUY7QTBCM3hFRTtFQUNFO0VBQ0E7RUFDQTtBMUI2eEVKOztBMEJ6eEVBO0VBQ0UsVW5CbzBCd0M7RW1CbjBCeEMsV25CbTBCd0M7RW1CbDBCeEM7RUFDQTtFQUNBLHNCbkJ6QlM7RW1CMEJUO0VBQ0E7RUFDQTtFQUNBLHFDbkJ1MEJ3QztFbUJ0MEJ4QztFQUNBO0ExQjR4RUY7QTBCenhFRTtFbEJ2QkU7QVJtekVKO0EwQnh4RUU7RUFFRSxrQm5COHpCc0M7QVAyOUMxQztBMEJ0eEVFO0VBQ0UsdUJuQnF6QnNDO0FQbStDMUM7QTBCcnhFRTtFQUNFLHFCbkJpeEJvQztFbUJoeEJwQztFQUNBLGtEbkI2cEI0QjtBUDBuRGhDO0EwQnB4RUU7RUFDRSx5Qm5CeEJNO0VtQnlCTixxQm5CekJNO0FQK3lFVjtBMEJweEVJO0VBSUk7QTFCbXhFUjtBMEIvd0VJO0VBSUk7QTFCOHdFUjtBMEJ6d0VFO0VBQ0UseUJuQjdDTTtFbUI4Q04scUJuQjlDTTtFbUJtREo7QTFCdXdFTjtBMEJud0VFO0VBQ0U7RUFDQTtFQUNBLFluQjZ4QnVDO0FQdytDM0M7QTBCOXZFSTtFQUNFO0VBQ0EsWW5Cb3hCcUM7QVA0K0MzQzs7QTBCbHZFQTtFQUNFLG1CbkIrd0JnQztBUHMrQ2xDO0EwQm52RUU7RUFDRSxVbkIyd0I4QjtFbUIxd0I5QjtFQUNBO0VBQ0E7RWxCM0dBO0VlSEUsaURHZ0hGO0ExQnF2RUo7QXVCajJFTTtFR3NHSjtJSHJHTTtFdkJvMkVOO0FBQ0Y7QTBCeHZFSTtFQUNFO0ExQjB2RU47QTBCdnZFSTtFQUNFLGlDbkIwd0I0QjtFbUJyd0IxQjtBMUJxdkVSO0EwQmh2RUU7RUFDRSxvQm5CcXZCOEI7RW1CcHZCOUI7QTFCa3ZFSjtBMEJodkVJO0VBQ0U7RUFDQTtBMUJrdkVOOztBMEI3dUVBO0VBQ0U7RUFDQSxrQm5CbXVCZ0M7QVA2Z0RsQzs7QTBCN3VFQTtFQUNFO0VBQ0E7RUFDQTtBMUJndkVGO0EwQjV1RUk7RUFDRTtFQUNBO0VBQ0EsYW5Cb2xCd0I7QVAwcEQ5Qjs7QTJCbjVFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNCczVFRjtBMkJwNUVFO0VBQ0U7QTNCczVFSjtBMkJsNUVJO0VBQTBCLGtFcEJxOEJhO0FQZzlDM0M7QTJCcDVFSTtFQUEwQixrRXBCbzhCYTtBUG05QzNDO0EyQnA1RUU7RUFDRTtBM0JzNUVKO0EyQm41RUU7RUFDRSxXcEJzN0J1QztFb0JyN0J2QyxZcEJxN0J1QztFb0JwN0J2QztFSHpCRix5QmpCa0NRO0VvQlBOLFNwQnE3QnVDO0VDajhCdkM7RWVIRSw0R0lrQkY7RUFDQTtBM0JvNUVKO0F1Qm42RU07RUlNSjtJSkxNO0V2QnM2RU47QUFDRjtBMkJ2NUVJO0VIakNGLHlCakJxOUJ5QztBUHMrQzNDO0EyQnI1RUU7RUFDRSxXcEIrNUI4QjtFb0I5NUI5QixjcEIrNUI4QjtFb0I5NUI5QjtFQUNBLGVwQjg1QjhCO0VvQjc1QjlCLHlCcEJwQ087RW9CcUNQO0VuQjdCQTtBUnE3RUo7QTJCbjVFRTtFQUNFLFdwQjI1QnVDO0VvQjE1QnZDLFlwQjA1QnVDO0VpQjc4QnpDLHlCakJrQ1E7RW9CbUJOLFNwQjI1QnVDO0VDajhCdkM7RWVIRSw0R0k0Q0Y7RUFDQTtBM0JvNUVKO0F1Qjc3RU07RUlpQ0o7SUpoQ007RXZCZzhFTjtBQUNGO0EyQnY1RUk7RUgzREYseUJqQnE5QnlDO0FQZ2dEM0M7QTJCcjVFRTtFQUNFLFdwQnE0QjhCO0VvQnA0QjlCLGNwQnE0QjhCO0VvQnA0QjlCO0VBQ0EsZXBCbzRCOEI7RW9CbjRCOUIseUJwQjlETztFb0IrRFA7RW5CdkRBO0FSKzhFSjtBMkJuNUVFO0VBQ0U7QTNCcTVFSjtBMkJuNUVJO0VBQ0UseUJwQnRFSztBUDI5RVg7QTJCbDVFSTtFQUNFLHlCcEIxRUs7QVA4OUVYOztBNEIzK0VBO0VBQ0U7QTVCOCtFRjtBNEI1K0VFOzs7RUFHRSwwQnJCKzlCOEI7RXFCOTlCOUIsaUJyQis5QjhCO0FQK2dEbEM7QTRCMytFRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VMUEUsZ0VLUUY7QTVCNitFSjtBdUJqL0VNO0VLVko7SUxXTTtFdkJvL0VOO0FBQ0Y7QTRCLytFRTs7RUFFRTtBNUJpL0VKO0E0Qi8rRUk7O0VBQ0U7QTVCay9FTjtBNEIvK0VJOzs7RUFFRSxxQnJCbzhCNEI7RXFCbjhCNUIsd0JyQm84QjRCO0FQOGlEbEM7QTRCLytFSTs7RUFDRSxxQnJCKzdCNEI7RXFCOTdCNUIsd0JyQis3QjRCO0FQbWpEbEM7QTRCOStFRTtFQUNFLHFCckJ5N0I4QjtFcUJ4N0I5Qix3QnJCeTdCOEI7QVB1akRsQztBNEJ6K0VJOzs7O0VBQ0UsYXJCazdCNEI7RXFCajdCNUIsOERyQms3QjRCO0FQNGpEbEM7QTRCeitFSTtFQUNFLGFyQjI2QjRCO0VxQjE2QjVCLDhEckIyNkI0QjtBUGdrRGxDO0E0QnQrRUk7RUFDRTtBNUJ3K0VOOztBNkIzaUZBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0I4aUZGO0E2QjVpRkU7OztFQUdFO0VBQ0E7RUFDQTtFQUNBO0E3QjhpRko7QTZCMWlGRTs7O0VBR0U7QTdCNGlGSjtBNkJ0aUZFO0VBQ0U7RUFDQTtBN0J3aUZKO0E2QnRpRkk7RUFDRTtBN0J3aUZOOztBNkI3aEZBO0VBQ0U7RUFDQTtFQUNBO0V4Qm9QSSw4Q0FMSTtFd0I3T1IsZ0J0QjBmNEI7RXNCemY1QixnQnRCZ2dCNEI7RXNCL2Y1QixjdEJwQ1M7RXNCcUNUO0VBQ0E7RUFDQSx5QnRCOUNTO0VzQitDVDtFckJ0Q0U7QVJ1a0ZKOztBNkJ2aEZBOzs7O0VBSUU7RXhCOE5JLGtCQUxJO0VHN1FOO0FSZ2xGSjs7QTZCdmhGQTs7OztFQUlFO0V4QnFOSSxtQkFMSTtFRzdRTjtBUnlsRko7O0E2QnZoRkE7O0VBRUU7QTdCMGhGRjs7QTZCN2dGSTs7OztFckJqRUE7RUFDQTtBUnFsRko7QTZCNWdGSTs7OztFckIxRUE7RUFDQTtBUjRsRko7QTZCdGdGRTtFQUNFO0VyQjFFQTtFQUNBO0FSbWxGSjtBNkJ0Z0ZFOztFckI5RUU7RUFDQTtBUndsRko7O0E4QmpuRkU7RUFDRTtFQUNBO0VBQ0EsbUJ2Qit2Qm9DO0VGdGZsQyxrQkFMSTtFeUJqUU4sY3ZCaStCcUI7QVBrcER6Qjs7QThCaG5GRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0V6QjRQRSxtQkFMSTtFeUJwUE4sV0F2QmM7RUF3QmQsd0NBdkJpQjtFdEJIakI7QVI2b0ZKOztBOEI5bUZJOzs7O0VBRUU7QTlCbW5GTjs7QThCanFGSTtFQW9ERSxxQnZCczhCbUI7RXVCbjhCakIsbUN2QnN4QmdDO0V1QnJ4QmhDO0VBQ0E7RUFDQTtFQUNBO0E5QittRlI7QThCNW1GTTtFQUNFLHFCdkIyN0JpQjtFdUIxN0JqQixpREEvQ2E7QTlCNnBGckI7O0E4QjlxRkk7RUF5RUksbUN2Qm93QmdDO0V1Qm53QmhDO0E5QnltRlI7O0E4Qm5yRkk7RUFpRkUscUJ2Qnk2Qm1CO0FQNnJEekI7QThCbm1GUTtFQUVFLHVCdkJtMUI4QjtFdUJsMUI5QjtFQUNBO0VBQ0E7QTlCb21GVjtBOEJobUZNO0VBQ0UscUJ2QjQ1QmlCO0V1QjM1QmpCLGlEQTlFYTtBOUJnckZyQjs7QThCanNGSTtFQXVHSTtBOUI4bEZSOztBOEJyc0ZJO0VBOEdFLHFCdkI0NEJtQjtBUCtzRHpCO0E4QnpsRk07RUFDRSx5QnZCeTRCaUI7QVBrdER6QjtBOEJ4bEZNO0VBQ0UsaURBcEdhO0E5QjhyRnJCO0E4QnZsRk07RUFDRSxjdkJpNEJpQjtBUHd0RHpCOztBOEJwbEZJO0VBQ0U7QTlCdWxGTjs7QThCdHRGSTs7Ozs7RUF5SU07QTlCcWxGVjs7QThCM3NGRTtFQUNFO0VBQ0E7RUFDQSxtQnZCK3ZCb0M7RUZ0ZmxDLGtCQUxJO0V5QmpRTixjdkJpK0JxQjtBUDR1RHpCOztBOEIxc0ZFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RXpCNFBFLG1CQUxJO0V5QnBQTixXQXZCYztFQXdCZCx3Q0F2QmlCO0V0QkhqQjtBUnV1Rko7O0E4QnhzRkk7Ozs7RUFFRTtBOUI2c0ZOOztBOEIzdkZJO0VBb0RFLHFCdkJzOEJtQjtFdUJuOEJqQixtQ3ZCc3hCZ0M7RXVCcnhCaEM7RUFDQTtFQUNBO0VBQ0E7QTlCeXNGUjtBOEJ0c0ZNO0VBQ0UscUJ2QjI3QmlCO0V1QjE3QmpCLGlEQS9DYTtBOUJ1dkZyQjs7QThCeHdGSTtFQXlFSSxtQ3ZCb3dCZ0M7RXVCbndCaEM7QTlCbXNGUjs7QThCN3dGSTtFQWlGRSxxQnZCeTZCbUI7QVB1eER6QjtBOEI3ckZRO0VBRUUsdUJ2Qm0xQjhCO0V1QmwxQjlCO0VBQ0E7RUFDQTtBOUI4ckZWO0E4QjFyRk07RUFDRSxxQnZCNDVCaUI7RXVCMzVCakIsaURBOUVhO0E5QjB3RnJCOztBOEIzeEZJO0VBdUdJO0E5QndyRlI7O0E4Qi94Rkk7RUE4R0UscUJ2QjQ0Qm1CO0FQeXlEekI7QThCbnJGTTtFQUNFLHlCdkJ5NEJpQjtBUDR5RHpCO0E4QmxyRk07RUFDRSxpREFwR2E7QTlCd3hGckI7QThCanJGTTtFQUNFLGN2Qmk0QmlCO0FQa3pEekI7O0E4QjlxRkk7RUFDRTtBOUJpckZOOztBOEJoekZJOzs7OztFQTJJTTtBOUI2cUZWOztBK0IxekZBO0VBRUU7RUFDQTtFQUNBO0UxQjZSSSx3QkFMSTtFMEJ0UlI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFMUI0UUksa0NBTEk7RTBCclFSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFdkJqQkU7RWdCZkYsa0NPa0NxQjtFUnRCakIscUlRd0JKO0EvQnd6RkY7QXVCNTBGTTtFUWhCTjtJUmlCUTtFdkIrMEZOO0FBQ0Y7QStCM3pGRTtFQUNFO0VBRUE7RUFDQTtBL0I0ekZKO0ErQnp6RkU7RUFFRTtFQUNBO0VBQ0E7QS9CMHpGSjtBK0J2ekZFO0VBQ0U7RVByREYsd0NPc0R1QjtFQUNyQjtFQUNBO0VBS0U7QS9CcXpGTjtBK0JqekZFO0VBQ0U7RUFDQTtFQUtFO0EvQit5Rk47QStCM3lGRTtFQUtFO0VBQ0E7RUFHQTtBL0J1eUZKO0ErQnB5Rkk7RUFLSTtBL0JreUZSO0ErQjd4RkU7RUFHRTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0EvQjR4Rko7O0ErQmh4RkU7RUN0R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEMwM0ZGOztBK0JqeUZFO0VDdEdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDMjRGRjs7QStCbHpGRTtFQ3RHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQzQ1RkY7O0ErQm4wRkU7RUN0R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEM2NkZGOztBK0JwMUZFO0VDdEdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDODdGRjs7QStCcjJGRTtFQ3RHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQys4RkY7O0ErQnQzRkU7RUN0R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaENnK0ZGOztBK0J2NEZFO0VDdEdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDaS9GRjs7QStCOTNGRTtFQ3ZHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQ3krRkY7O0ErQi80RkU7RUN2R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEMwL0ZGOztBK0JoNkZFO0VDdkdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDMmdHRjs7QStCajdGRTtFQ3ZHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQzRoR0Y7O0ErQmw4RkU7RUN2R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEM2aUdGOztBK0JuOUZFO0VDdkdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDOGpHRjs7QStCcCtGRTtFQ3ZHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQytrR0Y7O0ErQnIvRkU7RUN2R0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaENnbUdGOztBK0IxL0ZBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUEsMEJ4QjJPd0M7QVBpeEYxQztBK0JsL0ZFO0VBQ0U7QS9Cby9GSjtBK0JqL0ZFO0VBQ0U7QS9CbS9GSjs7QStCeCtGQTtFQ3hJRTtFQUNBO0UzQm9PSSwyQkFMSTtFMkI3TlI7QWhDb25HRjs7QStCMytGQTtFQzVJRTtFQUNBO0UzQm9PSSw0QkFMSTtFMkI3TlI7QWhDMm5HRjs7QWlDOXJHQTtFVmdCTSxnQ1VmSjtBakNpc0dGO0F1QjlxR007RVVwQk47SVZxQlE7RXZCaXJHTjtBQUNGO0FpQ3BzR0U7RUFDRTtBakNzc0dKOztBaUNoc0dFO0VBQ0U7QWpDbXNHSjs7QWlDL3JHQTtFQUNFO0VBQ0E7RVZESSw2QlVFSjtBakNrc0dGO0F1QmhzR007RVVMTjtJVk1RO0V2Qm1zR047QUFDRjtBaUNyc0dFO0VBQ0U7RUFDQTtFVk5FLDRCVU9GO0FqQ3VzR0o7QXVCMXNHTTtFVUFKO0lWQ007RXZCNnNHTjtBQUNGOztBa0NsdUdBOzs7Ozs7RUFNRTtBbENxdUdGOztBa0NsdUdBO0VBQ0U7QWxDcXVHRjtBbUNsdEdJO0VBQ0U7RUFDQSxvQjVCbWV3QjtFNEJsZXhCLHVCNUJpZXdCO0U0QmhleEI7RUFoQ0o7RUFDQTtFQUNBO0VBQ0E7QW5DcXZHRjtBbUNoc0dJO0VBQ0U7QW5Da3NHTjs7QWtDM3VHQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTdCNlFJLDZCQUxJO0U2QnRRUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0U3QmdQSSx1Q0FMSTtFNkJ6T1I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0UxQnpDRTtBUnF4R0o7QWtDeHVHRTtFQUNFO0VBQ0E7RUFDQTtBbEMwdUdKOztBa0NsdEdJO0VBQ0U7QWxDcXRHTjtBa0NudEdNO0VBQ0U7RUFDQTtBbENxdEdSOztBa0NqdEdJO0VBQ0U7QWxDb3RHTjtBa0NsdEdNO0VBQ0U7RUFDQTtBbENvdEdSOztBZTl2R0k7RW1CNEJBO0lBQ0U7RWxDc3VHSjtFa0NwdUdJO0lBQ0U7SUFDQTtFbENzdUdOO0VrQ2x1R0U7SUFDRTtFbENvdUdKO0VrQ2x1R0k7SUFDRTtJQUNBO0VsQ291R047QUFDRjtBZS93R0k7RW1CNEJBO0lBQ0U7RWxDc3ZHSjtFa0NwdkdJO0lBQ0U7SUFDQTtFbENzdkdOO0VrQ2x2R0U7SUFDRTtFbENvdkdKO0VrQ2x2R0k7SUFDRTtJQUNBO0VsQ292R047QUFDRjtBZS94R0k7RW1CNEJBO0lBQ0U7RWxDc3dHSjtFa0Nwd0dJO0lBQ0U7SUFDQTtFbENzd0dOO0VrQ2x3R0U7SUFDRTtFbENvd0dKO0VrQ2x3R0k7SUFDRTtJQUNBO0VsQ293R047QUFDRjtBZS95R0k7RW1CNEJBO0lBQ0U7RWxDc3hHSjtFa0NweEdJO0lBQ0U7SUFDQTtFbENzeEdOO0VrQ2x4R0U7SUFDRTtFbENveEdKO0VrQ2x4R0k7SUFDRTtJQUNBO0VsQ294R047QUFDRjtBZS96R0k7RW1CNEJBO0lBQ0U7RWxDc3lHSjtFa0NweUdJO0lBQ0U7SUFDQTtFbENzeUdOO0VrQ2x5R0U7SUFDRTtFbENveUdKO0VrQ2x5R0k7SUFDRTtJQUNBO0VsQ295R047QUFDRjtBa0MzeEdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QWxDNnhHSjtBbUN0M0dJO0VBQ0U7RUFDQSxvQjVCbWV3QjtFNEJsZXhCLHVCNUJpZXdCO0U0QmhleEI7RUF6Qko7RUFDQTtFQUNBO0VBQ0E7QW5DazVHRjtBbUNwMkdJO0VBQ0U7QW5DczJHTjs7QWtDanlHRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxDb3lHSjtBbUMzNEdJO0VBQ0U7RUFDQSxvQjVCbWV3QjtFNEJsZXhCLHVCNUJpZXdCO0U0QmhleEI7RUFsQko7RUFDQTtFQUNBO0VBQ0E7QW5DZzZHRjtBbUN6M0dJO0VBQ0U7QW5DMjNHTjtBa0M1eUdJO0VBQ0U7QWxDOHlHTjs7QWtDeHlHRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxDMnlHSjtBbUNuNkdJO0VBQ0U7RUFDQSxvQjVCbWV3QjtFNEJsZXhCLHVCNUJpZXdCO0U0QmhleEI7QW5DcTZHTjtBbUMxNUdNO0VBQ0U7QW5DNDVHUjtBbUN6NUdNO0VBQ0U7RUFDQSxxQjVCZ2RzQjtFNEIvY3RCLHVCNUI4Y3NCO0U0QjdjdEI7RUE5Qk47RUFDQTtFQUNBO0FuQzA3R0Y7QW1DejVHSTtFQUNFO0FuQzI1R047QWtDM3pHSTtFQUNFO0FsQzZ6R047O0FrQ3R6R0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ3l6R0Y7O0FrQ256R0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGdCM0IwWDRCO0UyQnpYNUI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ3N6R0Y7QWtDcHpHRTtFQUVFO0VWekxGLGtEVTJMdUI7QWxDb3pHekI7QWtDanpHRTtFQUVFO0VBQ0E7RVZqTUYsbURVa011QjtBbENrekd6QjtBa0MveUdFO0VBRUU7RUFDQTtFQUNBO0FsQ2d6R0o7O0FrQzF5R0E7RUFDRTtBbEM2eUdGOztBa0N6eUdBO0VBQ0U7RUFDQTtFQUNBO0U3QjBFSSxtQkFMSTtFNkJuRVI7RUFDQTtBbEM0eUdGOztBa0N4eUdBO0VBQ0U7RUFDQTtFQUNBO0FsQzJ5R0Y7O0FrQ3Z5R0E7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxDeXlHRjs7QW9DOWhIQTs7RUFFRTtFQUNBO0VBQ0E7QXBDaWlIRjtBb0MvaEhFOztFQUNFO0VBQ0E7QXBDa2lISjtBb0M3aEhFOzs7Ozs7Ozs7Ozs7RUFNRTtBcENxaUhKOztBb0NoaUhBO0VBQ0U7RUFDQTtFQUNBO0FwQ21pSEY7QW9DamlIRTtFQUNFO0FwQ21pSEo7O0FvQy9oSEE7RTVCaEJJO0FSbWpISjtBb0MvaEhFOztFQUVFO0FwQ2lpSEo7QW9DN2hIRTs7O0U1QlZFO0VBQ0E7QVI0aUhKO0FvQ3poSEU7OztFNUJORTtFQUNBO0FSb2lISjs7QW9DNWdIQTtFQUNFO0VBQ0E7QXBDK2dIRjtBb0M3Z0hFO0VBR0U7QXBDNmdISjtBb0MxZ0hFO0VBQ0U7QXBDNGdISjs7QW9DeGdIQTtFQUNFO0VBQ0E7QXBDMmdIRjs7QW9DeGdIQTtFQUNFO0VBQ0E7QXBDMmdIRjs7QW9Ddi9HQTtFQUNFO0VBQ0E7RUFDQTtBcEMwL0dGO0FvQ3gvR0U7O0VBRUU7QXBDMC9HSjtBb0N2L0dFOztFQUVFO0FwQ3kvR0o7QW9Dci9HRTs7RTVCMUZFO0VBQ0E7QVJtbEhKO0FvQ3IvR0U7O0U1QjdHRTtFQUNBO0FSc21ISjs7QXFDOW5IQTtFQUVFO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDNm5IRjs7QXFDMW5IQTtFQUNFO0VBQ0E7RWhDNFFJLHVDQUxJO0VnQ3JRUjtFQUNBO0VBQ0E7RWRiSSx1R2NjSjtBckM2bkhGO0F1QnZvSE07RWNHTjtJZEZRO0V2QjBvSE47QUFDRjtBcUNob0hFO0VBRUU7QXJDaW9ISjtBcUM1bkhFO0VBQ0U7RUFDQTtFQUNBO0FyQzhuSEo7O0FxQ3RuSEE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0FyQ3NuSEY7QXFDcG5IRTtFQUNFO0VBQ0E7RUFDQTtFN0J0Q0E7RUFDQTtBUjZwSEo7QXFDcm5ISTtFQUdFO0VBQ0E7QXJDcW5ITjtBcUNsbkhJO0VBRUU7RUFDQTtFQUNBO0FyQ21uSE47QXFDL21IRTs7RUFFRTtFQUNBO0VBQ0E7QXJDaW5ISjtBcUM5bUhFO0VBRUU7RTdCakVBO0VBQ0E7QVJpckhKOztBcUN0bUhBO0VBRUU7RUFDQTtFQUNBO0FyQ3dtSEY7QXFDcm1IRTtFQUNFO0VBQ0E7RTdCOUZBO0FSc3NISjtBcUNybUhJO0VBQ0U7RUFDQTtFQUNBO0FyQ3VtSE47QXFDbm1IRTs7RUFFRTtFYnpIRixvRGEwSHVCO0FyQ3FtSHpCOztBcUMzbEhFOztFQUVFO0VBQ0E7QXJDOGxISjs7QXFDemxIRTs7RUFFRTtFQUNBO0VBQ0E7QXJDNGxISjs7QXFDdGxIRTs7RUFDRTtBckMwbEhKOztBcUNobEhFO0VBQ0U7QXJDbWxISjtBcUNqbEhFO0VBQ0U7QXJDbWxISjs7QXNDdnZIQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXRDdXZIRjtBc0NqdkhFOzs7Ozs7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBdEN3dkhKO0FzQ3B1SEE7RUFDRTtFQUNBO0VBQ0E7RWpDa09JLDJDQUxJO0VpQzNOUjtFQUNBO0VBQ0E7QXRDc3VIRjtBc0NwdUhFO0VBRUU7QXRDcXVISjs7QXNDM3RIQTtFQUVFO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXRDMHRIRjtBc0N4dEhFOztFQUVFO0F0QzB0SEo7QXNDdnRIRTtFQUNFO0F0Q3l0SEo7O0FzQ2h0SEE7RUFDRSxtQi9CNDZCa0M7RStCMzZCbEMsc0IvQjI2QmtDO0UrQjE2QmxDO0F0Q210SEY7QXNDanRIRTs7O0VBR0U7QXRDbXRISjs7QXNDdHNIQTtFQUNFO0VBQ0E7RUFHQTtBdEN1c0hGOztBc0Nuc0hBO0VBQ0U7RWpDaUpJLDZDQUxJO0VpQzFJUjtFQUNBO0VBQ0E7RUFDQTtFOUJ0SUU7RWVIRSwrQ2UySUo7QXRDc3NIRjtBdUI3MEhNO0VlK0hOO0lmOUhRO0V2QmcxSE47QUFDRjtBc0N6c0hFO0VBQ0U7QXRDMnNISjtBc0N4c0hFO0VBQ0U7RUFDQTtFQUNBO0F0QzBzSEo7O0FzQ3BzSEE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0Q3VzSEY7O0FzQ3BzSEE7RUFDRTtFQUNBO0F0Q3VzSEY7O0FlL3pISTtFdUJvSUE7SUFFSTtJQUNBO0V0QzhySE47RXNDNXJITTtJQUNFO0V0QzhySFI7RXNDNXJIUTtJQUNFO0V0QzhySFY7RXNDM3JIUTtJQUNFO0lBQ0E7RXRDNnJIVjtFc0N6ckhNO0lBQ0U7RXRDMnJIUjtFc0N4ckhNO0lBQ0U7SUFDQTtFdEMwckhSO0VzQ3ZySE07SUFDRTtFdEN5ckhSO0VzQ3RySE07SUFFRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SWY1TkosZ0JlOE5JO0V0Q3NySFI7RXNDbnJIUTtJQUNFO0V0Q3FySFY7RXNDbHJIUTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0V0Q29ySFY7QUFDRjtBZS8ySEk7RXVCb0lBO0lBRUk7SUFDQTtFdEM2dUhOO0VzQzN1SE07SUFDRTtFdEM2dUhSO0VzQzN1SFE7SUFDRTtFdEM2dUhWO0VzQzF1SFE7SUFDRTtJQUNBO0V0QzR1SFY7RXNDeHVITTtJQUNFO0V0QzB1SFI7RXNDdnVITTtJQUNFO0lBQ0E7RXRDeXVIUjtFc0N0dUhNO0lBQ0U7RXRDd3VIUjtFc0NydUhNO0lBRUU7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lmNU5KLGdCZThOSTtFdENxdUhSO0VzQ2x1SFE7SUFDRTtFdENvdUhWO0VzQ2p1SFE7SUFDRTtJQUNBO0lBQ0E7SUFDQTtFdENtdUhWO0FBQ0Y7QWU5NUhJO0V1Qm9JQTtJQUVJO0lBQ0E7RXRDNHhITjtFc0MxeEhNO0lBQ0U7RXRDNHhIUjtFc0MxeEhRO0lBQ0U7RXRDNHhIVjtFc0N6eEhRO0lBQ0U7SUFDQTtFdEMyeEhWO0VzQ3Z4SE07SUFDRTtFdEN5eEhSO0VzQ3R4SE07SUFDRTtJQUNBO0V0Q3d4SFI7RXNDcnhITTtJQUNFO0V0Q3V4SFI7RXNDcHhITTtJQUVFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJZjVOSixnQmU4Tkk7RXRDb3hIUjtFc0NqeEhRO0lBQ0U7RXRDbXhIVjtFc0NoeEhRO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RXRDa3hIVjtBQUNGO0FlNzhISTtFdUJvSUE7SUFFSTtJQUNBO0V0QzIwSE47RXNDejBITTtJQUNFO0V0QzIwSFI7RXNDejBIUTtJQUNFO0V0QzIwSFY7RXNDeDBIUTtJQUNFO0lBQ0E7RXRDMDBIVjtFc0N0MEhNO0lBQ0U7RXRDdzBIUjtFc0NyMEhNO0lBQ0U7SUFDQTtFdEN1MEhSO0VzQ3AwSE07SUFDRTtFdENzMEhSO0VzQ24wSE07SUFFRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SWY1TkosZ0JlOE5JO0V0Q20wSFI7RXNDaDBIUTtJQUNFO0V0Q2swSFY7RXNDL3pIUTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0V0Q2kwSFY7QUFDRjtBZTUvSEk7RXVCb0lBO0lBRUk7SUFDQTtFdEMwM0hOO0VzQ3gzSE07SUFDRTtFdEMwM0hSO0VzQ3gzSFE7SUFDRTtFdEMwM0hWO0VzQ3YzSFE7SUFDRTtJQUNBO0V0Q3kzSFY7RXNDcjNITTtJQUNFO0V0Q3UzSFI7RXNDcDNITTtJQUNFO0lBQ0E7RXRDczNIUjtFc0NuM0hNO0lBQ0U7RXRDcTNIUjtFc0NsM0hNO0lBRUU7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lmNU5KLGdCZThOSTtFdENrM0hSO0VzQy8ySFE7SUFDRTtFdENpM0hWO0VzQzkySFE7SUFDRTtJQUNBO0lBQ0E7SUFDQTtFdENnM0hWO0FBQ0Y7QXNDdjZISTtFQUVJO0VBQ0E7QXRDdzZIUjtBc0N0NkhRO0VBQ0U7QXRDdzZIVjtBc0N0NkhVO0VBQ0U7QXRDdzZIWjtBc0NyNkhVO0VBQ0U7RUFDQTtBdEN1NkhaO0FzQ242SFE7RUFDRTtBdENxNkhWO0FzQ2w2SFE7RUFDRTtFQUNBO0F0Q282SFY7QXNDajZIUTtFQUNFO0F0Q202SFY7QXNDaDZIUTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFZjVOSixnQmU4Tkk7QXRDZzZIVjtBc0M3NUhVO0VBQ0U7QXRDKzVIWjtBc0M1NUhVO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QXRDODVIWjs7QXNDNzRIQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXRDKzRIRjs7QXVDOXBJQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RS9CZEU7QVI2cUlKO0F1QzNwSUU7RUFDRTtFQUNBO0F2QzZwSUo7QXVDMXBJRTtFQUNFO0VBQ0E7QXZDNHBJSjtBdUMxcElJO0VBQ0U7RS9CbkJGO0VBQ0E7QVJncklKO0F1QzFwSUk7RUFDRTtFL0JWRjtFQUNBO0FSdXFJSjtBdUN2cElFOztFQUVFO0F2Q3lwSUo7O0F1Q3JwSUE7RUFHRTtFQUNBO0VBQ0E7QXZDc3BJRjs7QXVDbnBJQTtFQUNFO0F2Q3NwSUY7O0F1Q25wSUE7RUFDRTtFQUNBO0F2Q3NwSUY7O0F1Q25wSUE7RUFDRTtBdkNzcElGOztBdUM5b0lFO0VBQ0U7QXZDaXBJSjs7QXVDem9JQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXZDNG9JRjtBdUMxb0lFO0UvQnhGRTtBUnF1SUo7O0F1Q3hvSUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBdkMyb0lGO0F1Q3pvSUU7RS9CbkdFO0FSK3VJSjs7QXVDbG9JQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0F2Q3FvSUY7QXVDbm9JRTtFQUNFO0VBQ0E7QXZDcW9JSjs7QXVDam9JQTtFQUNFO0VBQ0E7QXZDb29JRjs7QXVDaG9JQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFL0JySUU7QVJ5d0lKOztBdUNob0lBOzs7RUFHRTtBdkNtb0lGOztBdUNob0lBOztFL0J0SUk7RUFDQTtBUjJ3SUo7O0F1Q2pvSUE7O0UvQjdISTtFQUNBO0FSbXdJSjs7QXVDMW5JRTtFQUNFO0F2QzZuSUo7QWVudklJO0V3QmtISjtJQVFJO0lBQ0E7RXZDNm5JRjtFdUMxbklFO0lBRUU7SUFDQTtFdkMybklKO0V1Q3puSUk7SUFDRTtJQUNBO0V2QzJuSU47RXVDdG5JTTtJL0J0S0o7SUFDQTtFUit4SUY7RXVDdm5JUTs7SUFHRTtFdkN3bklWO0V1Q3RuSVE7O0lBR0U7RXZDdW5JVjtFdUNubklNO0kvQnZLSjtJQUNBO0VSNnhJRjtFdUNwbklROztJQUdFO0V2Q3FuSVY7RXVDbm5JUTs7SUFHRTtFdkNvbklWO0FBQ0Y7O0F3Q3AxSUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeENzMUlGOztBd0NsMUlBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFbkNpUUksZUFMSTtFbUMxUFI7RUFDQTtFQUNBO0VBQ0E7RWhDdEJFO0VnQ3dCRjtFakIzQkksMENpQjRCSjtBeENxMUlGO0F1QjcySU07RWlCV047SWpCVlE7RXZCZzNJTjtBQUNGO0F3Q3gxSUU7RUFDRTtFQUNBO0VBQ0E7QXhDMDFJSjtBd0N4MUlJO0VBQ0U7RUFDQTtBeEMwMUlOO0F3Q3IxSUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VqQmxERSxtRGlCbURGO0F4Q3UxSUo7QXVCdDRJTTtFaUJzQ0o7SWpCckNNO0V2Qnk0SU47QUFDRjtBd0N6MUlFO0VBQ0U7QXhDMjFJSjtBd0N4MUlFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QXhDMDFJSjs7QXdDdDFJQTtFQUNFO0F4Q3kxSUY7O0F3Q3QxSUE7RUFDRTtFQUNBO0VBQ0E7QXhDeTFJRjtBd0N2MUlFO0VoQy9ERTtFQUNBO0FSeTVJSjtBd0N4MUlJO0VoQ2xFQTtFQUNBO0FSNjVJSjtBd0N2MUlFO0VBQ0U7QXhDeTFJSjtBd0NyMUlFO0VoQzlERTtFQUNBO0FSczVJSjtBd0NyMUlNO0VoQ2xFRjtFQUNBO0FSMDVJSjtBd0NwMUlJO0VoQ3ZFQTtFQUNBO0FSODVJSjs7QXdDbDFJQTtFQUNFO0F4Q3ExSUY7O0F3QzUwSUU7RUFDRTtBeEMrMElKO0F3QzUwSUU7RUFDRTtFQUNBO0VoQ3BIQTtBUm04SUo7QXdDNTBJSTtFQUFnQjtBeEMrMElwQjtBd0M5MElJO0VBQWU7QXhDaTFJbkI7QXdDOTBJTTtFaEMzSEY7QVI0OElKOztBeUMvOUlBO0VBRUU7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VwQ3FSSSx5Q0FMSTtFb0M5UVI7RUFDQTtFakNBRTtBUis5SUo7O0F5Q3o5SUU7RUFDRTtBekM0OUlKO0F5QzE5SUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBekM0OUlOO0F5Q3g5SUU7RUFDRTtBekMwOUlKOztBMEMvL0lBO0VBRUU7RUFDQTtFckNrU0ksK0JBTEk7RXFDM1JSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFaENwQkE7RUFDQTtBVm9oSkY7O0EwQzcvSUE7RUFDRTtFQUNBO0VBQ0E7RXJDc1FJLHlDQUxJO0VxQy9QUjtFQUNBO0VBQ0E7RUFDQTtFbkJwQkkscUltQnFCSjtBMUNnZ0pGO0F1QmpoSk07RW1CUU47SW5CUFE7RXZCb2hKTjtBQUNGO0EwQ25nSkU7RUFDRTtFQUNBO0VBRUE7RUFDQTtBMUNvZ0pKO0EwQ2pnSkU7RUFDRTtFQUNBO0VBQ0E7RUFDQSxVbkNnb0NnQztFbUMvbkNoQztBMUNtZ0pKO0EwQ2hnSkU7RUFFRTtFQUNBO0VsQnRERixnRGtCdUR1QjtFQUNyQjtBMUNpZ0pKO0EwQzkvSUU7RUFFRTtFQUNBO0VBQ0E7RUFDQTtBMUMrL0lKOztBMEMxL0lFO0VBQ0UsaUJuQ21tQ2dDO0FQMDVHcEM7QTBDeC9JTTtFbEM5QkY7RUFDQTtBUnloSko7QTBDdC9JTTtFbENsREY7RUFDQTtBUjJpSko7O0EwQ3orSUE7RUNsR0U7RUFDQTtFdENnU0ksa0NBTEk7RXNDelJSO0EzQytrSkY7O0EwQzUrSUE7RUN0R0U7RUFDQTtFdENnU0ksbUNBTEk7RXNDelJSO0EzQ3NsSkY7O0E0Q3hsSkE7RUFFRTtFQUNBO0V2QzZSSSw0QkFMSTtFdUN0UlI7RUFDQTtFQUNBO0VBR0E7RUFDQTtFdkNxUkksb0NBTEk7RXVDOVFSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFcENKRTtBUjZsSko7QTRDcGxKRTtFQUNFO0E1Q3NsSko7O0E0Q2psSkE7RUFDRTtFQUNBO0E1Q29sSkY7O0E2Q3BuSkE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VyQ0ZFO0FSdW5KSjs7QTZDaG5KQTtFQUVFO0E3Q2tuSkY7O0E2QzltSkE7RUFDRSxnQnRDOGdCNEI7QVBtbUk5Qjs7QTZDem1KQTtFQUNFLG1CdEM0M0M4QjtBUGd2R2hDO0E2Q3ptSkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QzJtSko7O0E2QzNsSkU7RUNoRUE7RUFDQTtFQUNBO0E5QytwSkY7QThDenBKRTtFQUNFO0E5QzJwSko7O0E2Q3BtSkU7RUNoRUE7RUFDQTtFQUNBO0E5Q3dxSkY7QThDbHFKRTtFQUNFO0E5Q29xSko7O0E2QzdtSkU7RUNoRUE7RUFDQTtFQUNBO0E5Q2lySkY7QThDM3FKRTtFQUNFO0E5QzZxSko7O0E2Q3RuSkU7RUNoRUE7RUFDQTtFQUNBO0E5QzBySkY7QThDcHJKRTtFQUNFO0E5Q3NySko7O0E2Qy9uSkU7RUNoRUE7RUFDQTtFQUNBO0E5Q21zSkY7QThDN3JKRTtFQUNFO0E5QytySko7O0E2Q3hvSkU7RUNoRUE7RUFDQTtFQUNBO0E5QzRzSkY7QThDdHNKRTtFQUNFO0E5Q3dzSko7O0E2Q2pwSkU7RUNoRUE7RUFDQTtFQUNBO0E5Q3F0SkY7QThDL3NKRTtFQUNFO0E5Q2l0Sko7O0E2QzFwSkU7RUNoRUE7RUFDQTtFQUNBO0E5Qzh0SkY7QThDeHRKRTtFQUNFO0E5QzB0Sko7O0ErQ2p1SkU7RUFDRTtJQUFLLDJCeEN3NkMyQjtFUDZ6R2xDO0FBQ0Y7QStDanVKQTtFQUVFO0UxQ3lSSSxnQ0FMSTtFMENsUlI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0UxQzZRSSx1Q0FMSTtFMEN0UVI7RXZDUEU7QVJ3dUpKOztBK0M1dEpBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFeEJ2QkksNkN3QndCSjtBL0MrdEpGO0F1Qm52Sk07RXdCV047SXhCVlE7RXZCc3ZKTjtBQUNGOztBK0NqdUpBO0V2QkNFO0V1QkNBO0EvQ291SkY7O0ErQ2h1SkU7RUFDRTtBL0NtdUpKO0ErQ2h1Sk07RUFKSjtJQUtNO0UvQ211Sk47QUFDRjs7QWdEdHhKQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBR0E7RUFDQTtFeENYRTtBUmd5Sko7O0FnRGp4SkE7RUFDRTtFQUNBO0FoRG94SkY7QWdEbHhKRTtFQUVFO0VBQ0E7QWhEbXhKSjs7QWdEMXdKQTtFQUNFO0VBQ0E7RUFDQTtBaEQ2d0pGO0FnRDF3SkU7RUFFRTtFQUNBO0VBQ0E7RUFDQTtBaEQyd0pKO0FnRHh3SkU7RUFDRTtFQUNBO0FoRDB3Sko7O0FnRGx3SkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaERxd0pGO0FnRG53SkU7RXhDdkRFO0VBQ0E7QVI2ekpKO0FnRG53SkU7RXhDN0NFO0VBQ0E7QVJtekpKO0FnRG53SkU7RUFFRTtFQUNBO0VBQ0E7QWhEb3dKSjtBZ0Rod0pFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QWhEa3dKSjtBZ0Q5dkpFO0VBQ0U7QWhEZ3dKSjtBZ0Q5dkpJO0VBQ0U7RUFDQTtBaERnd0pOOztBZ0RudkpJO0VBQ0U7QWhEc3ZKTjtBZ0RudkpRO0V4Q3ZESjtFQVpBO0FSMHpKSjtBZ0RsdkpRO0V4Q3hFSjtFQVlBO0FSa3pKSjtBZ0RqdkpRO0VBQ0U7QWhEbXZKVjtBZ0RodkpRO0VBQ0U7RUFDQTtBaERrdkpWO0FnRGh2SlU7RUFDRTtFQUNBO0FoRGt2Slo7O0FleDBKSTtFaUM4REE7SUFDRTtFaEQ4d0pKO0VnRDN3Sk07SXhDdkRKO0lBWkE7RVJrMUpGO0VnRDF3Sk07SXhDeEVKO0lBWUE7RVIwMEpGO0VnRHp3Sk07SUFDRTtFaEQyd0pSO0VnRHh3Sk07SUFDRTtJQUNBO0VoRDB3SlI7RWdEeHdKUTtJQUNFO0lBQ0E7RWhEMHdKVjtBQUNGO0FlajJKSTtFaUM4REE7SUFDRTtFaERzeUpKO0VnRG55Sk07SXhDdkRKO0lBWkE7RVIwMkpGO0VnRGx5Sk07SXhDeEVKO0lBWUE7RVJrMkpGO0VnRGp5Sk07SUFDRTtFaERteUpSO0VnRGh5Sk07SUFDRTtJQUNBO0VoRGt5SlI7RWdEaHlKUTtJQUNFO0lBQ0E7RWhEa3lKVjtBQUNGO0FlejNKSTtFaUM4REE7SUFDRTtFaEQ4ekpKO0VnRDN6Sk07SXhDdkRKO0lBWkE7RVJrNEpGO0VnRDF6Sk07SXhDeEVKO0lBWUE7RVIwM0pGO0VnRHp6Sk07SUFDRTtFaEQyekpSO0VnRHh6Sk07SUFDRTtJQUNBO0VoRDB6SlI7RWdEeHpKUTtJQUNFO0lBQ0E7RWhEMHpKVjtBQUNGO0FlajVKSTtFaUM4REE7SUFDRTtFaERzMUpKO0VnRG4xSk07SXhDdkRKO0lBWkE7RVIwNUpGO0VnRGwxSk07SXhDeEVKO0lBWUE7RVJrNUpGO0VnRGoxSk07SUFDRTtFaERtMUpSO0VnRGgxSk07SUFDRTtJQUNBO0VoRGsxSlI7RWdEaDFKUTtJQUNFO0lBQ0E7RWhEazFKVjtBQUNGO0FlejZKSTtFaUM4REE7SUFDRTtFaEQ4MkpKO0VnRDMySk07SXhDdkRKO0lBWkE7RVJrN0pGO0VnRDEySk07SXhDeEVKO0lBWUE7RVIwNkpGO0VnRHoySk07SUFDRTtFaEQyMkpSO0VnRHgySk07SUFDRTtJQUNBO0VoRDAySlI7RWdEeDJKUTtJQUNFO0lBQ0E7RWhEMDJKVjtBQUNGO0FnRDcxSkE7RXhDaEpJO0FSZy9KSjtBZ0Q3MUpFO0VBQ0U7QWhEKzFKSjtBZ0Q3MUpJO0VBQ0U7QWhEKzFKTjs7QWlEcmdLRTtFQUNFLGNEbUx5QjtFQ2xMekIseUJEaUxzQjtBaER1MUoxQjtBaURyZ0tNO0VBRUUsY0Q2S3FCO0VDNUtyQjtBakRzZ0tSO0FpRG5nS007RUFDRSxXMUNSRztFMENTSCx5QkR1S3FCO0VDdEtyQixxQkRzS3FCO0FoRCsxSjdCOztBaURuaEtFO0VBQ0UsY0RtTHlCO0VDbEx6Qix5QkRpTHNCO0FoRHEySjFCO0FpRG5oS007RUFFRSxjRDZLcUI7RUM1S3JCO0FqRG9oS1I7QWlEamhLTTtFQUNFLFcxQ1JHO0UwQ1NILHlCRHVLcUI7RUN0S3JCLHFCRHNLcUI7QWhENjJKN0I7O0FpRGppS0U7RUFDRSxjRG1MeUI7RUNsTHpCLHlCRGlMc0I7QWhEbTNKMUI7QWlEamlLTTtFQUVFLGNENktxQjtFQzVLckI7QWpEa2lLUjtBaUQvaEtNO0VBQ0UsVzFDUkc7RTBDU0gseUJEdUtxQjtFQ3RLckIscUJEc0txQjtBaEQyM0o3Qjs7QWlEL2lLRTtFQUNFLGNEcUwyQjtFQ3BMM0IseUJEaUxzQjtBaERpNEoxQjtBaUQvaUtNO0VBRUUsY0QrS3VCO0VDOUt2QjtBakRnaktSO0FpRDdpS007RUFDRSxXMUNSRztFMENTSCx5QkR5S3VCO0VDeEt2QixxQkR3S3VCO0FoRHU0Si9COztBaUQ3aktFO0VBQ0UsY0RxTDJCO0VDcEwzQix5QkRpTHNCO0FoRCs0SjFCO0FpRDdqS007RUFFRSxjRCtLdUI7RUM5S3ZCO0FqRDhqS1I7QWlEM2pLTTtFQUNFLFcxQ1JHO0UwQ1NILHlCRHlLdUI7RUN4S3ZCLHFCRHdLdUI7QWhEcTVKL0I7O0FpRDNrS0U7RUFDRSxjRG1MeUI7RUNsTHpCLHlCRGlMc0I7QWhENjVKMUI7QWlEM2tLTTtFQUVFLGNENktxQjtFQzVLckI7QWpENGtLUjtBaUR6a0tNO0VBQ0UsVzFDUkc7RTBDU0gseUJEdUtxQjtFQ3RLckIscUJEc0txQjtBaERxNko3Qjs7QWlEemxLRTtFQUNFLGNEcUwyQjtFQ3BMM0IseUJEaUxzQjtBaEQyNkoxQjtBaUR6bEtNO0VBRUUsY0QrS3VCO0VDOUt2QjtBakQwbEtSO0FpRHZsS007RUFDRSxXMUNSRztFMENTSCx5QkR5S3VCO0VDeEt2QixxQkR3S3VCO0FoRGk3Si9COztBaUR2bUtFO0VBQ0UsY0RtTHlCO0VDbEx6Qix5QkRpTHNCO0FoRHk3SjFCO0FpRHZtS007RUFFRSxjRDZLcUI7RUM1S3JCO0FqRHdtS1I7QWlEcm1LTTtFQUNFLFcxQ1JHO0UwQ1NILHlCRHVLcUI7RUN0S3JCLHFCRHNLcUI7QWhEaThKN0I7O0FrRHBuS0E7RUFDRTtFQUNBLFUzQzZpRDJCO0UyQzVpRDNCLFczQzRpRDJCO0UyQzNpRDNCO0VBQ0EsVzNDUVM7RTJDUFQ7RUFDQTtFMUNPRTtFMENMRixZM0M2aUQyQjtBUDBrSDdCO0FrRHBuS0U7RUFDRTtFQUNBO0VBQ0EsYTNDd2lEeUI7QVA4a0g3QjtBa0RubktFO0VBQ0U7RUFDQSxrRDNDOHJCNEI7RTJDN3JCNUIsVTNDbWlEeUI7QVBrbEg3QjtBa0RsbktFO0VBRUU7RUFDQTtFQUNBLGEzQzZoRHlCO0FQc2xIN0I7O0FrRC9tS0E7RUFDRSxrRDNDeWhEMkI7QVB5bEg3Qjs7QW1EeHBLQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTlDK1JJLDhCQUxJO0U4Q3hSUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0U5Q2lSSSxvQ0FMSTtFOEMxUVI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0UzQ1JFO0FSaXFLSjtBbUR0cEtFO0VBQ0U7QW5Ed3BLSjtBbURycEtFO0VBQ0U7QW5EdXBLSjs7QW1EbnBLQTtFQUNFO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkRxcEtGO0FtRG5wS0U7RUFDRTtBbkRxcEtKOztBbURqcEtBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTNDaENFO0VBQ0E7QVJxcktKO0FtRG5wS0U7RUFDRTtFQUNBO0FuRHFwS0o7O0FtRGpwS0E7RUFDRTtFQUNBO0FuRG9wS0Y7O0FvRGx0S0E7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtBcERndEtGOztBb0R6c0tBO0VBQ0U7RUFDQTtFQUNBO0VBRUE7QXBEMnNLRjtBb0R4c0tFO0U3QjVDSSxtQzZCNkNGO0VBQ0EsOEI3Q20xQ2dDO0FQdTNIcEM7QXVCcHZLTTtFNkJ3Q0o7STdCdkNNO0V2QnV2S047QUFDRjtBb0Q3c0tFO0VBQ0UsZTdDaTFDZ0M7QVA4M0hwQztBb0Qzc0tFO0VBQ0Usc0I3QzgwQ2dDO0FQKzNIcEM7O0FvRHpzS0E7RUFDRTtBcEQ0c0tGO0FvRDFzS0U7RUFDRTtFQUNBO0FwRDRzS0o7QW9EenNLRTtFQUNFO0FwRDJzS0o7O0FvRHZzS0E7RUFDRTtFQUNBO0VBQ0E7QXBEMHNLRjs7QW9EdHNLQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFNUNyRkU7RTRDeUZGO0FwRHNzS0Y7O0FvRGxzS0E7RUFFRTtFQUNBO0VBQ0E7RUNsSEE7RUFDQTtFQUNBO0VBQ0Esa0NEa0gwQjtFQ2pIMUI7RUFDQTtFQUNBLHVDRCtHNEQ7QXBEd3NLOUQ7QXFEcHpLRTtFQUFTO0FyRHV6S1g7QXFEdHpLRTtFQUFTLG1DRDJHaUY7QXBEOHNLNUY7O0FvRHpzS0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTVDdEdFO0VBQ0E7QVJtektKO0FvRDNzS0U7RUFDRTtFQUNBO0FwRDZzS0o7O0FvRHhzS0E7RUFDRTtFQUNBO0FwRDJzS0Y7O0FvRHRzS0E7RUFDRTtFQUdBO0VBQ0E7QXBEdXNLRjs7QW9EbnNLQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTVDMUhFO0VBQ0E7QVJpMEtKO0FvRGxzS0U7RUFDRTtBcERvc0tKOztBZWh6S0k7RXFDa0hGO0lBQ0U7SUFDQTtFcERrc0tGO0VvRDlyS0E7SUFDRTtJQUNBO0lBQ0E7RXBEZ3NLRjtFb0Q3cktBO0lBQ0U7RXBEK3JLRjtBQUNGO0FlL3pLSTtFcUNvSUY7O0lBRUU7RXBEOHJLRjtBQUNGO0FlcjBLSTtFcUMySUY7SUFDRTtFcEQ2cktGO0FBQ0Y7QW9EcHJLSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FwRHNyS047QW9EcHJLTTtFQUNFO0VBQ0E7RTVDMU1KO0FSaTRLSjtBb0RucktNOztFNUM5TUY7QVJxNEtKO0FvRGxyS007RUFDRTtBcERvcktSOztBZS8wS0k7RXFDeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RXBEMHNLSjtFb0R4c0tJO0lBQ0U7SUFDQTtJNUMxTUo7RVJxNUtGO0VvRHZzS0k7O0k1QzlNRjtFUnk1S0Y7RW9EdHNLSTtJQUNFO0VwRHdzS047QUFDRjtBZXAyS0k7RXFDeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RXBEOHRLSjtFb0Q1dEtJO0lBQ0U7SUFDQTtJNUMxTUo7RVJ5NktGO0VvRDN0S0k7O0k1QzlNRjtFUjY2S0Y7RW9EMXRLSTtJQUNFO0VwRDR0S047QUFDRjtBZXgzS0k7RXFDeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RXBEa3ZLSjtFb0RodktJO0lBQ0U7SUFDQTtJNUMxTUo7RVI2N0tGO0VvRC91S0k7O0k1QzlNRjtFUmk4S0Y7RW9EOXVLSTtJQUNFO0VwRGd2S047QUFDRjtBZTU0S0k7RXFDeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RXBEc3dLSjtFb0Rwd0tJO0lBQ0U7SUFDQTtJNUMxTUo7RVJpOUtGO0VvRG53S0k7O0k1QzlNRjtFUnE5S0Y7RW9EbHdLSTtJQUNFO0VwRG93S047QUFDRjtBZWg2S0k7RXFDeUlBO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7RXBEMHhLSjtFb0R4eEtJO0lBQ0U7SUFDQTtJNUMxTUo7RVJxK0tGO0VvRHZ4S0k7O0k1QzlNRjtFUnkrS0Y7RW9EdHhLSTtJQUNFO0VwRHd4S047QUFDRjtBc0QvL0tBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFakQ4UkksZ0NBTEk7RWlEdlJSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VDbkJBLHNDaERnaUI0QjtFZ0Q5aEI1QjtFQUNBLGdCaER5aUI0QjtFZ0R4aUI1QixnQmhEK2lCNEI7RWdEOWlCNUI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RWxEc1JJLHNDQUxJO0VpRHJRUjtFQUNBO0F0RHVnTEY7QXNEcmdMRTtFQUFTO0F0RHdnTFg7QXNEdGdMRTtFQUNFO0VBQ0E7RUFDQTtBdER3Z0xKO0FzRHRnTEk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBdER3Z0xOOztBc0RuZ0xBO0VBQ0U7QXREc2dMRjtBc0RwZ0xFO0VBQ0U7RUFDQTtFQUNBO0F0RHNnTEo7O0FzRGxnTEE7QUFDQTtFQUNFO0VBQ0E7RUFDQTtBdERxZ0xGO0FzRG5nTEU7RUFDRTtFQUNBO0VBQ0E7QXREcWdMSjs7QXNEamdMQTtBQUVBO0VBQ0U7QXREbWdMRjtBc0RqZ0xFO0VBQ0U7RUFDQTtFQUNBO0F0RG1nTEo7O0FzRC8vS0E7QUFDQTtFQUNFO0VBQ0E7RUFDQTtBdERrZ0xGO0FzRGhnTEU7RUFDRTtFQUNBO0VBQ0E7QXREa2dMSjs7QXNEOS9LQTtBQWtCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RTlDbEdFO0FSbWxMSjs7QXdEdG1MQTtFQUVFO0VBQ0E7RW5Ea1NJLGdDQUxJO0VtRDNSUjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VuRHlSSSxtQ0FMSTtFbURsUlI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFRHpCQSxzQ2hEZ2lCNEI7RWdEOWhCNUI7RUFDQSxnQmhEeWlCNEI7RWdEeGlCNUIsZ0JoRCtpQjRCO0VnRDlpQjVCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VsRHNSSSxzQ0FMSTtFbURoUVI7RUFDQTtFQUNBO0VBQ0E7RWhEaEJFO0FSaW9MSjtBd0Q3bUxFO0VBQ0U7RUFDQTtFQUNBO0F4RCttTEo7QXdEN21MSTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEQ4bUxOOztBd0R4bUxFO0VBQ0U7QXhEMm1MSjtBd0R6bUxJO0VBRUU7QXhEMG1MTjtBd0R2bUxJO0VBQ0U7RUFDQTtBeER5bUxOO0F3RHRtTEk7RUFDRTtFQUNBO0F4RHdtTE47O0F3RG5tTEE7QUFFRTtFQUNFO0VBQ0E7RUFDQTtBeERxbUxKO0F3RG5tTEk7RUFFRTtBeERvbUxOO0F3RGptTEk7RUFDRTtFQUNBO0F4RG1tTE47QXdEaG1MSTtFQUNFO0VBQ0E7QXhEa21MTjs7QXdEN2xMQTtBQUdFO0VBQ0U7QXhEOGxMSjtBd0Q1bExJO0VBRUU7QXhENmxMTjtBd0QxbExJO0VBQ0U7RUFDQTtBeEQ0bExOO0F3RHpsTEk7RUFDRTtFQUNBO0F4RDJsTE47QXdEdGxMRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhEd2xMSjs7QXdEcGxMQTtBQUVFO0VBQ0U7RUFDQTtFQUNBO0F4RHNsTEo7QXdEcGxMSTtFQUVFO0F4RHFsTE47QXdEbGxMSTtFQUNFO0VBQ0E7QXhEb2xMTjtBd0RqbExJO0VBQ0U7RUFDQTtBeERtbExOOztBd0Q5a0xBO0FBa0JBO0VBQ0U7RUFDQTtFbkRpSEksNkNBTEk7RW1EMUdSO0VBQ0E7RUFDQTtFaEQ1SkU7RUFDQTtBUjZ0TEo7QXdEL2pMRTtFQUNFO0F4RGlrTEo7O0F3RDdqTEE7RUFDRTtFQUNBO0F4RGdrTEY7O0F5RHJ2TEE7RUFDRTtBekR3dkxGOztBeURydkxBO0VBQ0U7QXpEd3ZMRjs7QXlEcnZMQTtFQUNFO0VBQ0E7RUFDQTtBekR3dkxGO0EwRDl3TEU7RUFDRTtFQUNBO0VBQ0E7QTFEZ3hMSjs7QXlEenZMQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFbENsQkksc0NrQ21CSjtBekQ0dkxGO0F1QjN3TE07RWtDUU47SWxDUFE7RXZCOHdMTjtBQUNGOztBeUQ5dkxBOzs7RUFHRTtBekRpd0xGOztBeUQ5dkxBOztFQUVFO0F6RGl3TEY7O0F5RDl2TEE7O0VBRUU7QXpEaXdMRjs7QXlEeHZMRTtFQUNFO0VBQ0E7RUFDQTtBekQydkxKO0F5RHh2TEU7OztFQUdFO0VBQ0E7QXpEMHZMSjtBeUR2dkxFOztFQUVFO0VBQ0E7RWxDNURFLDJCa0M2REY7QXpEeXZMSjtBdUJsekxNO0VrQ3FESjs7SWxDcERNO0V2QnN6TE47QUFDRjs7QXlEdHZMQTs7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBLFVsRCs1Q21DO0VrRDk1Q25DO0VBQ0EsV2xEMUZTO0VrRDJGVDtFQUNBO0VBQ0E7RUFDQSxZbEQwNUNtQztFZ0JoL0MvQiw4QmtDdUZKO0F6RHd2TEY7QXVCMzBMTTtFa0NrRU47O0lsQ2pFUTtFdkIrMExOO0FBQ0Y7QXlEM3ZMRTs7O0VBRUUsV2xEcEdPO0VrRHFHUDtFQUNBO0VBQ0EsWWxEazVDaUM7QVA0MklyQzs7QXlEM3ZMQTtFQUNFO0F6RDh2TEY7O0F5RDN2TEE7RUFDRTtBekQ4dkxGOztBeUR6dkxBOztFQUVFO0VBQ0EsV2xEbTVDbUM7RWtEbDVDbkMsWWxEazVDbUM7RWtEajVDbkM7RUFDQTtFQUNBO0F6RDR2TEY7O0F5RHp2TEE7Ozs7Ozs7R0FBQTtBQVFBO0VBQ0U7QXpENHZMRjs7QXlEMXZMQTtFQUNFO0F6RDZ2TEY7O0F5RHJ2TEE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUEsaUJsRDIxQ21DO0VrRDExQ25DO0VBQ0EsZ0JsRHkxQ21DO0VrRHgxQ25DO0F6RHV2TEY7QXlEcnZMRTtFQUNFO0VBQ0E7RUFDQSxXbER3MUNpQztFa0R2MUNqQyxXbER3MUNpQztFa0R2MUNqQztFQUNBLGlCbER3MUNpQztFa0R2MUNqQyxnQmxEdTFDaUM7RWtEdDFDakM7RUFDQTtFQUNBLHNCbEQzS087RWtENEtQO0VBQ0E7RUFFQTtFQUNBO0VBQ0EsWWxEKzBDaUM7RWdCeC9DL0IsNkJrQzBLRjtBekRzdkxKO0F1QjU1TE07RWtDcUpKO0lsQ3BKTTtFdkIrNUxOO0FBQ0Y7QXlEeHZMRTtFQUNFLFVsRDQwQ2lDO0FQODZJckM7O0F5RGp2TEE7RUFDRTtFQUNBO0VBQ0EsZWxEczBDbUM7RWtEcjBDbkM7RUFDQSxvQmxEbTBDbUM7RWtEbDBDbkMsdUJsRGswQ21DO0VrRGowQ25DLFdsRHRNUztFa0R1TVQ7QXpEb3ZMRjs7QXlEOXVMRTs7RUFFRSxnQ2xEdTBDaUM7QVAwNklyQztBeUQ5dUxFO0VBQ0Usc0JsRHpNTztBUHk3TFg7QXlEN3VMRTtFQUNFLFdsRDdNTztBUDQ3TFg7O0EyRDE4TEE7O0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0EzRDQ4TEY7O0EyRHg4TEE7RUFDRTtJQUFLO0UzRDQ4TEw7QUFDRjtBMkR6OExBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtBM0R3OExGOztBMkRyOExBO0VBRUU7RUFDQTtFQUNBO0EzRHU4TEY7O0EyRDk3TEE7RUFDRTtJQUNFO0UzRGk4TEY7RTJELzdMQTtJQUNFO0lBQ0E7RTNEaThMRjtBQUNGO0EyRDc3TEE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtBM0Q0N0xGOztBMkR6N0xBO0VBQ0U7RUFDQTtBM0Q0N0xGOztBMkR4N0xFO0VBQ0U7O0lBRUU7RTNEMjdMSjtBQUNGO0E0RDNnTUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBNUQ0Z01GOztBZTc4TEk7RTZDOUNGO0lBRUk7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJckMxQkEsc0NxQzRCQTtFNUQ2L0xKO0FBQ0Y7QXVCdGhNTTtFcUNVSjtJckNUTTtFdkJ5aE1OO0FBQ0Y7QWVuK0xJO0U2QzlCRTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVEb2dNTjtFNERqZ01JO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNURtZ01OO0U0RGhnTUk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNURrZ01OO0U0RC8vTEk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVEaWdNTjtFNEQ5L0xJO0lBRUU7RTVEKy9MTjtFNEQ1L0xJO0lBR0U7RTVENC9MTjtBQUNGO0FldmhNSTtFNkNqQ0Y7SUFpRU07SUFDQTtJQUNBO0U1RDIvTE47RTREei9MTTtJQUNFO0U1RDIvTFI7RTREeC9MTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RTVEeS9MUjtBQUNGOztBZTNoTUk7RTZDOUNGO0lBRUk7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJckMxQkEsc0NxQzRCQTtFNUQya01KO0FBQ0Y7QXVCcG1NTTtFcUNVSjtJckNUTTtFdkJ1bU1OO0FBQ0Y7QWVqak1JO0U2QzlCRTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVEa2xNTjtFNEQva01JO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNURpbE1OO0U0RDlrTUk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNURnbE1OO0U0RDdrTUk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVEK2tNTjtFNEQ1a01JO0lBRUU7RTVENmtNTjtFNEQxa01JO0lBR0U7RTVEMGtNTjtBQUNGO0Flcm1NSTtFNkNqQ0Y7SUFpRU07SUFDQTtJQUNBO0U1RHlrTU47RTREdmtNTTtJQUNFO0U1RHlrTVI7RTREdGtNTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RTVEdWtNUjtBQUNGOztBZXptTUk7RTZDOUNGO0lBRUk7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJckMxQkEsc0NxQzRCQTtFNUR5cE1KO0FBQ0Y7QXVCbHJNTTtFcUNVSjtJckNUTTtFdkJxck1OO0FBQ0Y7QWUvbk1JO0U2QzlCRTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVEZ3FNTjtFNEQ3cE1JO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNUQrcE1OO0U0RDVwTUk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNUQ4cE1OO0U0RDNwTUk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVENnBNTjtFNEQxcE1JO0lBRUU7RTVEMnBNTjtFNER4cE1JO0lBR0U7RTVEd3BNTjtBQUNGO0FlbnJNSTtFNkNqQ0Y7SUFpRU07SUFDQTtJQUNBO0U1RHVwTU47RTREcnBNTTtJQUNFO0U1RHVwTVI7RTREcHBNTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RTVEcXBNUjtBQUNGOztBZXZyTUk7RTZDOUNGO0lBRUk7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJckMxQkEsc0NxQzRCQTtFNUR1dU1KO0FBQ0Y7QXVCaHdNTTtFcUNVSjtJckNUTTtFdkJtd01OO0FBQ0Y7QWU3c01JO0U2QzlCRTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVEOHVNTjtFNEQzdU1JO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNUQ2dU1OO0U0RDF1TUk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNUQ0dU1OO0U0RHp1TUk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVEMnVNTjtFNER4dU1JO0lBRUU7RTVEeXVNTjtFNER0dU1JO0lBR0U7RTVEc3VNTjtBQUNGO0FlandNSTtFNkNqQ0Y7SUFpRU07SUFDQTtJQUNBO0U1RHF1TU47RTREbnVNTTtJQUNFO0U1RHF1TVI7RTREbHVNTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RTVEbXVNUjtBQUNGOztBZXJ3TUk7RTZDOUNGO0lBRUk7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJckMxQkEsc0NxQzRCQTtFNURxek1KO0FBQ0Y7QXVCOTBNTTtFcUNVSjtJckNUTTtFdkJpMU1OO0FBQ0Y7QWUzeE1JO0U2QzlCRTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVENHpNTjtFNER6ek1JO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNUQyek1OO0U0RHh6TUk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFNUQwek1OO0U0RHZ6TUk7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVEeXpNTjtFNER0ek1JO0lBRUU7RTVEdXpNTjtFNERwek1JO0lBR0U7RTVEb3pNTjtBQUNGO0FlLzBNSTtFNkNqQ0Y7SUFpRU07SUFDQTtJQUNBO0U1RG16TU47RTREanpNTTtJQUNFO0U1RG16TVI7RTREaHpNTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RTVEaXpNUjtBQUNGOztBNERqNE1FO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFckMxQkEsc0NxQzRCQTtBNURrNE1OO0F1QjE1TU07RXFDVUo7SXJDVE07RXZCNjVNTjtBQUNGO0E0RHI0TU07RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E1RHU0TVI7QTREcDRNTTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTVEczRNUjtBNERuNE1NO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTVEcTRNUjtBNERsNE1NO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E1RG80TVI7QTREajRNTTtFQUVFO0E1RGs0TVI7QTRELzNNTTtFQUdFO0E1RCszTVI7O0E0RHAyTUE7RVBsSEU7RUFDQTtFQUNBO0VBQ0EsYTlDZ2hDa0M7RThDL2dDbEM7RUFDQTtFQUNBLHNCOUNVUztBUGc5TVg7QXFEdjlNRTtFQUFTO0FyRDA5TVg7QXFEejlNRTtFQUFTLFk5Q28zQ3lCO0FQd21LcEM7O0E0RGgzTUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBNURtM01GO0E0RGozTUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBNURtM01KOztBNEQvMk1BO0VBQ0U7RUFDQSxnQnJENGE0QjtBUHM4TDlCOztBNEQvMk1BO0VBQ0U7RUFDQTtFQUNBO0E1RGszTUY7O0E2RGhnTkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsWXREcXNDa0M7QVA4ektwQztBNkRqZ05FO0VBQ0U7RUFDQTtBN0RtZ05KOztBNkQ5L01BO0VBQ0U7QTdEaWdORjs7QTZEOS9NQTtFQUNFO0E3RGlnTkY7O0E2RDkvTUE7RUFDRTtBN0RpZ05GOztBNkQ1L01FO0VBQ0U7QTdEKy9NSjs7QTZEMy9NQTtFQUNFO0lBQ0UsWXREd3FDZ0M7RVBzMUtsQztBQUNGO0E2RDMvTUE7RUFDRTtFQUNBO0VBQ0E7QTdENi9NRjs7QTZEMS9NQTtFQUNFO0lBQ0U7RTdENi9NRjtBQUNGO0EwRDVpTkU7RUFDRTtFQUNBO0VBQ0E7QTFEOGlOSjs7QThEOWlORTtFQUNFO0VBQ0E7QTlEaWpOSjs7QThEbmpORTtFQUNFO0VBQ0E7QTlEc2pOSjs7QThEeGpORTtFQUNFO0VBQ0E7QTlEMmpOSjs7QThEN2pORTtFQUNFO0VBQ0E7QTlEZ2tOSjs7QThEbGtORTtFQUNFO0VBQ0E7QTlEcWtOSjs7QThEdmtORTtFQUNFO0VBQ0E7QTlEMGtOSjs7QThENWtORTtFQUNFO0VBQ0E7QTlEK2tOSjs7QThEamxORTtFQUNFO0VBQ0E7QTlEb2xOSjs7QStEMWxORTtFQUNFO0EvRDZsTko7QStEMWxOTTtFQUVFO0EvRDJsTlI7O0ErRGptTkU7RUFDRTtBL0RvbU5KO0ErRGptTk07RUFFRTtBL0RrbU5SOztBK0R4bU5FO0VBQ0U7QS9EMm1OSjtBK0R4bU5NO0VBRUU7QS9EeW1OUjs7QStEL21ORTtFQUNFO0EvRGtuTko7QStEL21OTTtFQUVFO0EvRGduTlI7O0ErRHRuTkU7RUFDRTtBL0R5bk5KO0ErRHRuTk07RUFFRTtBL0R1bk5SOztBK0Q3bk5FO0VBQ0U7QS9EZ29OSjtBK0Q3bk5NO0VBRUU7QS9EOG5OUjs7QStEcG9ORTtFQUNFO0EvRHVvTko7QStEcG9OTTtFQUVFO0EvRHFvTlI7O0ErRDNvTkU7RUFDRTtBL0Q4b05KO0ErRDNvTk07RUFFRTtBL0Q0b05SOztBZ0VqcE5BO0VBQ0U7RUFDQTtBaEVvcE5GO0FnRWxwTkU7RUFDRTtFQUNBO0VBQ0E7QWhFb3BOSjtBZ0VqcE5FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEVtcE5KOztBZ0U5b05FO0VBQ0U7QWhFaXBOSjs7QWdFbHBORTtFQUNFO0FoRXFwTko7O0FnRXRwTkU7RUFDRTtBaEV5cE5KOztBZ0UxcE5FO0VBQ0U7QWhFNnBOSjs7QWlFbHJOQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsYTFENmdDa0M7QVB3cUxwQzs7QWlFbHJOQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsYTFEcWdDa0M7QVBnckxwQzs7QWlFN3FOSTtFQUNFO0VBQ0E7RUFDQSxhMUR5L0I4QjtBUHVyTHBDOztBaUU3cU5JO0VBQ0U7RUFDQTtFQUNBLGExRG0vQjhCO0FQNnJMcEM7O0FlanBOSTtFa0R4Q0E7SUFDRTtJQUNBO0lBQ0EsYTFEeS9COEI7RVBvc0xsQztFaUUxck5FO0lBQ0U7SUFDQTtJQUNBLGExRG0vQjhCO0VQeXNMbEM7QUFDRjtBZTlwTkk7RWtEeENBO0lBQ0U7SUFDQTtJQUNBLGExRHkvQjhCO0VQZ3RMbEM7RWlFdHNORTtJQUNFO0lBQ0E7SUFDQSxhMURtL0I4QjtFUHF0TGxDO0FBQ0Y7QWUxcU5JO0VrRHhDQTtJQUNFO0lBQ0E7SUFDQSxhMUR5L0I4QjtFUDR0TGxDO0VpRWx0TkU7SUFDRTtJQUNBO0lBQ0EsYTFEbS9COEI7RVBpdUxsQztBQUNGO0FldHJOSTtFa0R4Q0E7SUFDRTtJQUNBO0lBQ0EsYTFEeS9COEI7RVB3dUxsQztFaUU5dE5FO0lBQ0U7SUFDQTtJQUNBLGExRG0vQjhCO0VQNnVMbEM7QUFDRjtBZWxzTkk7RWtEeENBO0lBQ0U7SUFDQTtJQUNBLGExRHkvQjhCO0VQb3ZMbEM7RWlFMXVORTtJQUNFO0lBQ0E7SUFDQSxhMURtL0I4QjtFUHl2TGxDO0FBQ0Y7QWtFNXdOQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FsRTh3TkY7O0FrRTN3TkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBbEU4d05GOztBbUV0eE5BOztFQ0lFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEV1eE5GOztBcUVseU5FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFU5RG9ac0M7RThEblp0QztBckVxeU5KOztBc0U3eU5BO0VDQUU7RUFDQTtFQUNBO0F2RWl6TkY7O0F3RXZ6TkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsYWpFeW5CNEI7QVBpc005Qjs7QXlFOXZOUTtFQU9JO0F6RTJ2Tlo7O0F5RWx3TlE7RUFPSTtBekUrdk5aOztBeUV0d05RO0VBT0k7QXpFbXdOWjs7QXlFMXdOUTtFQU9JO0F6RXV3Tlo7O0F5RTl3TlE7RUFPSTtBekUyd05aOztBeUVseE5RO0VBT0k7QXpFK3dOWjs7QXlFdHhOUTtFQU9JO0F6RW14Tlo7O0F5RTF4TlE7RUFPSTtBekV1eE5aOztBeUU5eE5RO0VBT0k7QXpFMnhOWjs7QXlFbHlOUTtFQU9JO0F6RSt4Tlo7O0F5RXR5TlE7RUFPSTtBekVteU5aOztBeUUxeU5RO0VBT0k7QXpFdXlOWjs7QXlFOXlOUTtFQU9JO0F6RTJ5Tlo7O0F5RWx6TlE7RUFPSTtBekUreU5aOztBeUV0ek5RO0VBT0k7QXpFbXpOWjs7QXlFMXpOUTtFQU9JO0F6RXV6Tlo7O0F5RTl6TlE7RUFPSTtBekUyek5aOztBeUVsME5RO0VBT0k7QXpFK3pOWjs7QXlFdDBOUTtFQU9JO0F6RW0wTlo7O0F5RTEwTlE7RUFPSTtBekV1ME5aOztBeUU5ME5RO0VBT0k7QXpFMjBOWjs7QXlFbDFOUTtFQU9JO0F6RSswTlo7O0F5RXQxTlE7RUFPSTtBekVtMU5aOztBeUUxMU5RO0VBT0k7QXpFdTFOWjs7QXlFOTFOUTtFQU9JO0F6RTIxTlo7O0F5RWwyTlE7RUFPSTtBekUrMU5aOztBeUV0Mk5RO0VBT0k7QXpFbTJOWjs7QXlFMTJOUTtFQU9JO0F6RXUyTlo7O0F5RTkyTlE7RUFPSTtBekUyMk5aOztBeUVsM05RO0VBT0k7QXpFKzJOWjs7QXlFdDNOUTtFQU9JO0F6RW0zTlo7O0F5RTEzTlE7RUFPSTtBekV1M05aOztBeUU5M05RO0VBT0k7QXpFMjNOWjs7QXlFbDROUTtFQU9JO0F6RSszTlo7O0F5RXQ0TlE7RUFPSTtBekVtNE5aOztBeUUxNE5RO0VBT0k7QXpFdTROWjs7QXlFOTROUTtFQU9JO0F6RTI0Tlo7O0F5RWw1TlE7RUFPSTtBekUrNE5aOztBeUV0NU5RO0VBT0k7QXpFbTVOWjs7QXlFMTVOUTtFQU9JO0F6RXU1Tlo7O0F5RTk1TlE7RUFPSTtBekUyNU5aOztBeUVsNk5RO0VBT0k7QXpFKzVOWjs7QXlFdDZOUTtFQU9JO0F6RW02Tlo7O0F5RTE2TlE7RUFPSTtBekV1Nk5aOztBeUU5Nk5RO0VBT0k7QXpFMjZOWjs7QXlFbDdOUTtFQU9JO0F6RSs2Tlo7O0F5RXQ3TlE7RUFPSTtBekVtN05aOztBeUUxN05RO0VBT0k7QXpFdTdOWjs7QXlFOTdOUTtFQU9JO0F6RTI3Tlo7O0F5RWw4TlE7RUFPSTtBekUrN05aOztBeUV0OE5RO0VBT0k7QXpFbThOWjs7QXlFMThOUTtFQU9JO0F6RXU4Tlo7O0F5RTk4TlE7RUFPSTtBekUyOE5aOztBeUVsOU5RO0VBT0k7QXpFKzhOWjs7QXlFdDlOUTtFQU9JO0F6RW05Tlo7O0F5RTE5TlE7RUFPSTtBekV1OU5aOztBeUU5OU5RO0VBT0k7QXpFMjlOWjs7QXlFbCtOUTtFQU9JO0F6RSs5Tlo7O0F5RXQrTlE7RUFPSTtBekVtK05aOztBeUUxK05RO0VBT0k7QXpFdStOWjs7QXlFOStOUTtFQU9JO0F6RTIrTlo7O0F5RWwvTlE7RUFPSTtBekUrK05aOztBeUV0L05RO0VBSVE7RUFHSjtBekVvL05aOztBeUUzL05RO0VBSVE7RUFHSjtBekV5L05aOztBeUVoZ09RO0VBSVE7RUFHSjtBekU4L05aOztBeUVyZ09RO0VBSVE7RUFHSjtBekVtZ09aOztBeUUxZ09RO0VBSVE7RUFHSjtBekV3Z09aOztBeUUvZ09RO0VBSVE7RUFHSjtBekU2Z09aOztBeUVwaE9RO0VBSVE7RUFHSjtBekVraE9aOztBeUV6aE9RO0VBSVE7RUFHSjtBekV1aE9aOztBeUU5aE9RO0VBSVE7RUFHSjtBekU0aE9aOztBeUU3aU9RO0VBQ0U7QXpFZ2pPVjs7QXlFampPUTtFQUNFO0F6RW9qT1Y7O0F5RXJqT1E7RUFDRTtBekV3ak9WOztBeUV6ak9RO0VBQ0U7QXpFNGpPVjs7QXlFN2pPUTtFQUNFO0F6RWdrT1Y7O0F5RWprT1E7RUFDRTtBekVva09WOztBeUVya09RO0VBQ0U7QXpFd2tPVjs7QXlFemtPUTtFQUNFO0F6RTRrT1Y7O0F5RTdrT1E7RUFDRTtBekVnbE9WOztBeUVqbE9RO0VBQ0U7QXpFb2xPVjs7QXlFM2tPUTtFQU9JO0F6RXdrT1o7O0F5RS9rT1E7RUFPSTtBekU0a09aOztBeUVubE9RO0VBT0k7QXpFZ2xPWjs7QXlFdmxPUTtFQU9JO0F6RW9sT1o7O0F5RTNsT1E7RUFPSTtBekV3bE9aOztBeUUvbE9RO0VBT0k7QXpFNGxPWjs7QXlFbm1PUTtFQU9JO0F6RWdtT1o7O0F5RXZtT1E7RUFPSTtBekVvbU9aOztBeUUzbU9RO0VBT0k7QXpFd21PWjs7QXlFL21PUTtFQU9JO0F6RTRtT1o7O0F5RW5uT1E7RUFPSTtBekVnbk9aOztBeUV2bk9RO0VBT0k7QXpFb25PWjs7QXlFM25PUTtFQU9JO0F6RXduT1o7O0F5RS9uT1E7RUFPSTtBekU0bk9aOztBeUVub09RO0VBT0k7QXpFZ29PWjs7QXlFdm9PUTtFQU9JO0F6RW9vT1o7O0F5RTNvT1E7RUFPSTtBekV3b09aOztBeUUvb09RO0VBT0k7QXpFNG9PWjs7QXlFbnBPUTtFQU9JO0F6RWdwT1o7O0F5RXZwT1E7RUFPSTtBekVvcE9aOztBeUUzcE9RO0VBT0k7QXpFd3BPWjs7QXlFL3BPUTtFQU9JO0F6RTRwT1o7O0F5RW5xT1E7RUFPSTtBekVncU9aOztBeUV2cU9RO0VBT0k7QXpFb3FPWjs7QXlFM3FPUTtFQU9JO0F6RXdxT1o7O0F5RS9xT1E7RUFPSTtBekU0cU9aOztBeUVuck9RO0VBT0k7QXpFZ3JPWjs7QXlFdnJPUTtFQU9JO0F6RW9yT1o7O0F5RTNyT1E7RUFPSTtBekV3ck9aOztBeUUvck9RO0VBT0k7QXpFNHJPWjs7QXlFbnNPUTtFQU9JO0F6RWdzT1o7O0F5RXZzT1E7RUFPSTtBekVvc09aOztBeUUzc09RO0VBT0k7QXpFd3NPWjs7QXlFL3NPUTtFQU9JO0F6RTRzT1o7O0F5RW50T1E7RUFPSTtBekVndE9aOztBeUV2dE9RO0VBT0k7QXpFb3RPWjs7QXlFM3RPUTtFQU9JO0F6RXd0T1o7O0F5RS90T1E7RUFPSTtBekU0dE9aOztBeUVudU9RO0VBT0k7QXpFZ3VPWjs7QXlFdnVPUTtFQU9JO0F6RW91T1o7O0F5RTN1T1E7RUFPSTtBekV3dU9aOztBeUUvdU9RO0VBT0k7QXpFNHVPWjs7QXlFbnZPUTtFQU9JO0F6RWd2T1o7O0F5RXZ2T1E7RUFPSTtBekVvdk9aOztBeUUzdk9RO0VBT0k7QXpFd3ZPWjs7QXlFL3ZPUTtFQU9JO0F6RTR2T1o7O0F5RW53T1E7RUFPSTtBekVnd09aOztBeUV2d09RO0VBT0k7QXpFb3dPWjs7QXlFM3dPUTtFQU9JO0F6RXd3T1o7O0F5RS93T1E7RUFPSTtBekU0d09aOztBeUVueE9RO0VBT0k7QXpFZ3hPWjs7QXlFdnhPUTtFQU9JO0F6RW94T1o7O0F5RTN4T1E7RUFPSTtBekV3eE9aOztBeUUveE9RO0VBT0k7QXpFNHhPWjs7QXlFbnlPUTtFQU9JO0F6RWd5T1o7O0F5RXZ5T1E7RUFPSTtBekVveU9aOztBeUUzeU9RO0VBT0k7QXpFd3lPWjs7QXlFL3lPUTtFQU9JO0F6RTR5T1o7O0F5RW56T1E7RUFPSTtBekVnek9aOztBeUV2ek9RO0VBT0k7QXpFb3pPWjs7QXlFM3pPUTtFQU9JO0F6RXd6T1o7O0F5RS96T1E7RUFPSTtBekU0ek9aOztBeUVuME9RO0VBT0k7QXpFZzBPWjs7QXlFdjBPUTtFQU9JO0F6RW8wT1o7O0F5RTMwT1E7RUFPSTtBekV3ME9aOztBeUUvME9RO0VBT0k7QXpFNDBPWjs7QXlFbjFPUTtFQU9JO0VBQUE7QXpFaTFPWjs7QXlFeDFPUTtFQU9JO0VBQUE7QXpFczFPWjs7QXlFNzFPUTtFQU9JO0VBQUE7QXpFMjFPWjs7QXlFbDJPUTtFQU9JO0VBQUE7QXpFZzJPWjs7QXlFdjJPUTtFQU9JO0VBQUE7QXpFcTJPWjs7QXlFNTJPUTtFQU9JO0VBQUE7QXpFMDJPWjs7QXlFajNPUTtFQU9JO0VBQUE7QXpFKzJPWjs7QXlFdDNPUTtFQU9JO0VBQUE7QXpFbzNPWjs7QXlFMzNPUTtFQU9JO0VBQUE7QXpFeTNPWjs7QXlFaDRPUTtFQU9JO0VBQUE7QXpFODNPWjs7QXlFcjRPUTtFQU9JO0VBQUE7QXpFbTRPWjs7QXlFMTRPUTtFQU9JO0VBQUE7QXpFdzRPWjs7QXlFLzRPUTtFQU9JO0VBQUE7QXpFNjRPWjs7QXlFcDVPUTtFQU9JO0VBQUE7QXpFazVPWjs7QXlFejVPUTtFQU9JO0F6RXM1T1o7O0F5RTc1T1E7RUFPSTtBekUwNU9aOztBeUVqNk9RO0VBT0k7QXpFODVPWjs7QXlFcjZPUTtFQU9JO0F6RWs2T1o7O0F5RXo2T1E7RUFPSTtBekVzNk9aOztBeUU3Nk9RO0VBT0k7QXpFMDZPWjs7QXlFajdPUTtFQU9JO0F6RTg2T1o7O0F5RXI3T1E7RUFPSTtBekVrN09aOztBeUV6N09RO0VBT0k7QXpFczdPWjs7QXlFNzdPUTtFQU9JO0F6RTA3T1o7O0F5RWo4T1E7RUFPSTtBekU4N09aOztBeUVyOE9RO0VBT0k7QXpFazhPWjs7QXlFejhPUTtFQU9JO0F6RXM4T1o7O0F5RTc4T1E7RUFPSTtBekUwOE9aOztBeUVqOU9RO0VBT0k7QXpFODhPWjs7QXlFcjlPUTtFQU9JO0F6RWs5T1o7O0F5RXo5T1E7RUFPSTtBekVzOU9aOztBeUU3OU9RO0VBT0k7QXpFMDlPWjs7QXlFaitPUTtFQU9JO0F6RTg5T1o7O0F5RXIrT1E7RUFPSTtBekVrK09aOztBeUV6K09RO0VBT0k7QXpFcytPWjs7QXlFNytPUTtFQU9JO0F6RTArT1o7O0F5RWovT1E7RUFPSTtBekU4K09aOztBeUVyL09RO0VBT0k7QXpFay9PWjs7QXlFei9PUTtFQU9JO0F6RXMvT1o7O0F5RTcvT1E7RUFPSTtBekUwL09aOztBeUVqZ1BRO0VBT0k7QXpFOC9PWjs7QXlFcmdQUTtFQU9JO0F6RWtnUFo7O0F5RXpnUFE7RUFPSTtBekVzZ1BaOztBeUU3Z1BRO0VBT0k7QXpFMGdQWjs7QXlFamhQUTtFQU9JO0F6RThnUFo7O0F5RXJoUFE7RUFPSTtBekVraFBaOztBeUV6aFBRO0VBT0k7QXpFc2hQWjs7QXlFN2hQUTtFQU9JO0F6RTBoUFo7O0F5RWppUFE7RUFPSTtFQUFBO0F6RStoUFo7O0F5RXRpUFE7RUFPSTtFQUFBO0F6RW9pUFo7O0F5RTNpUFE7RUFPSTtFQUFBO0F6RXlpUFo7O0F5RWhqUFE7RUFPSTtFQUFBO0F6RThpUFo7O0F5RXJqUFE7RUFPSTtFQUFBO0F6RW1qUFo7O0F5RTFqUFE7RUFPSTtFQUFBO0F6RXdqUFo7O0F5RS9qUFE7RUFPSTtFQUFBO0F6RTZqUFo7O0F5RXBrUFE7RUFPSTtFQUFBO0F6RWtrUFo7O0F5RXprUFE7RUFPSTtFQUFBO0F6RXVrUFo7O0F5RTlrUFE7RUFPSTtFQUFBO0F6RTRrUFo7O0F5RW5sUFE7RUFPSTtFQUFBO0F6RWlsUFo7O0F5RXhsUFE7RUFPSTtFQUFBO0F6RXNsUFo7O0F5RTdsUFE7RUFPSTtBekUwbFBaOztBeUVqbVBRO0VBT0k7QXpFOGxQWjs7QXlFcm1QUTtFQU9JO0F6RWttUFo7O0F5RXptUFE7RUFPSTtBekVzbVBaOztBeUU3bVBRO0VBT0k7QXpFMG1QWjs7QXlFam5QUTtFQU9JO0F6RThtUFo7O0F5RXJuUFE7RUFPSTtBekVrblBaOztBeUV6blBRO0VBT0k7QXpFc25QWjs7QXlFN25QUTtFQU9JO0F6RTBuUFo7O0F5RWpvUFE7RUFPSTtBekU4blBaOztBeUVyb1BRO0VBT0k7QXpFa29QWjs7QXlFem9QUTtFQU9JO0F6RXNvUFo7O0F5RTdvUFE7RUFPSTtBekUwb1BaOztBeUVqcFBRO0VBT0k7QXpFOG9QWjs7QXlFcnBQUTtFQU9JO0F6RWtwUFo7O0F5RXpwUFE7RUFPSTtBekVzcFBaOztBeUU3cFBRO0VBT0k7QXpFMHBQWjs7QXlFanFQUTtFQU9JO0F6RThwUFo7O0F5RXJxUFE7RUFPSTtBekVrcVBaOztBeUV6cVBRO0VBT0k7QXpFc3FQWjs7QXlFN3FQUTtFQU9JO0F6RTBxUFo7O0F5RWpyUFE7RUFPSTtBekU4cVBaOztBeUVyclBRO0VBT0k7QXpFa3JQWjs7QXlFenJQUTtFQU9JO0F6RXNyUFo7O0F5RTdyUFE7RUFPSTtBekUwclBaOztBeUVqc1BRO0VBT0k7QXpFOHJQWjs7QXlFcnNQUTtFQU9JO0F6RWtzUFo7O0F5RXpzUFE7RUFPSTtBekVzc1BaOztBeUU3c1BRO0VBT0k7QXpFMHNQWjs7QXlFanRQUTtFQU9JO0F6RThzUFo7O0F5RXJ0UFE7RUFPSTtBekVrdFBaOztBeUV6dFBRO0VBT0k7QXpFc3RQWjs7QXlFN3RQUTtFQU9JO0F6RTB0UFo7O0F5RWp1UFE7RUFPSTtBekU4dFBaOztBeUVydVBRO0VBT0k7QXpFa3VQWjs7QXlFenVQUTtFQU9JO0F6RXN1UFo7O0F5RTd1UFE7RUFPSTtBekUwdVBaOztBeUVqdlBRO0VBT0k7QXpFOHVQWjs7QXlFcnZQUTtFQU9JO0F6RWt2UFo7O0F5RXp2UFE7RUFPSTtBekVzdlBaOztBeUU3dlBRO0VBT0k7QXpFMHZQWjs7QXlFandQUTtFQU9JO0F6RTh2UFo7O0F5RXJ3UFE7RUFPSTtBekVrd1BaOztBeUV6d1BRO0VBT0k7QXpFc3dQWjs7QXlFN3dQUTtFQU9JO0F6RTB3UFo7O0F5RWp4UFE7RUFPSTtBekU4d1BaOztBeUVyeFBRO0VBT0k7QXpFa3hQWjs7QXlFenhQUTtFQU9JO0F6RXN4UFo7O0F5RTd4UFE7RUFPSTtBekUweFBaOztBeUVqeVBRO0VBT0k7QXpFOHhQWjs7QXlFcnlQUTtFQU9JO0F6RWt5UFo7O0F5RXp5UFE7RUFPSTtBekVzeVBaOztBeUU3eVBRO0VBT0k7QXpFMHlQWjs7QXlFanpQUTtFQU9JO0F6RTh5UFo7O0F5RXJ6UFE7RUFPSTtBekVrelBaOztBeUV6elBRO0VBT0k7QXpFc3pQWjs7QXlFN3pQUTtFQU9JO0F6RTB6UFo7O0F5RWowUFE7RUFPSTtBekU4elBaOztBeUVyMFBRO0VBT0k7QXpFazBQWjs7QXlFejBQUTtFQU9JO0F6RXMwUFo7O0F5RTMxUFE7QUFjQTtFQU9JO0VBQUE7QXpFNDBQWjs7QXlFenpQUTtBQTFCQTtFQUlRO0VBR0o7QXpFazFQWjs7QXlFejFQUTtFQUlRO0VBR0o7QXpFdTFQWjs7QXlFOTFQUTtFQUlRO0VBR0o7QXpFNDFQWjs7QXlFbjJQUTtFQUlRO0VBR0o7QXpFaTJQWjs7QXlFeDJQUTtFQUlRO0VBR0o7QXpFczJQWjs7QXlFNzJQUTtFQUlRO0VBR0o7QXpFMjJQWjs7QXlFbDNQUTtFQUlRO0VBR0o7QXpFZzNQWjs7QXlFdjNQUTtFQUlRO0VBR0o7QXpFcTNQWjs7QXlFNTNQUTtFQUlRO0VBR0o7QXpFMDNQWjs7QXlFajRQUTtFQUlRO0VBR0o7QXpFKzNQWjs7QXlFdDRQUTtFQUlRO0VBR0o7QXpFbzRQWjs7QXlFMzRQUTtFQUlRO0VBR0o7QXpFeTRQWjs7QXlFaDVQUTtFQUlRO0VBR0o7QXpFODRQWjs7QXlFcjVQUTtFQUlRO0VBR0o7QXpFbTVQWjs7QXlFMTVQUTtFQUlRO0VBR0o7QXpFdzVQWjs7QXlFejZQUTtFQUNFO0F6RTQ2UFY7O0F5RTc2UFE7RUFDRTtBekVnN1BWOztBeUVqN1BRO0VBQ0U7QXpFbzdQVjs7QXlFcjdQUTtFQUNFO0F6RXc3UFY7O0F5RS82UFE7RUFJUTtFQUdKO0F6RTY2UFo7O0F5RXA3UFE7RUFJUTtFQUdKO0F6RWs3UFo7O0F5RXo3UFE7RUFJUTtFQUdKO0F6RXU3UFo7O0F5RTk3UFE7RUFJUTtFQUdKO0F6RTQ3UFo7O0F5RW44UFE7RUFJUTtFQUdKO0F6RWk4UFo7O0F5RXg4UFE7RUFJUTtFQUdKO0F6RXM4UFo7O0F5RTc4UFE7RUFJUTtFQUdKO0F6RTI4UFo7O0F5RWw5UFE7RUFJUTtFQUdKO0F6RWc5UFo7O0F5RXY5UFE7RUFJUTtFQUdKO0F6RXE5UFo7O0F5RTU5UFE7RUFJUTtFQUdKO0F6RTA5UFo7O0F5RWorUFE7RUFJUTtFQUdKO0F6RSs5UFo7O0F5RXQrUFE7RUFJUTtFQUdKO0F6RW8rUFo7O0F5RXIvUFE7RUFDRTtBekV3L1BWOztBeUV6L1BRO0VBQ0U7QXpFNC9QVjs7QXlFNy9QUTtFQUNFO0F6RWdnUVY7O0F5RWpnUVE7RUFDRTtBekVvZ1FWOztBeUVyZ1FRO0VBQ0U7QXpFd2dRVjs7QXlFLy9QUTtFQU9JO0F6RTQvUFo7O0F5RW5nUVE7RUFPSTtBekVnZ1FaOztBeUV2Z1FRO0VBT0k7QXpFb2dRWjs7QXlFM2dRUTtFQU9JO0F6RXdnUVo7O0F5RS9nUVE7RUFPSTtBekU0Z1FaOztBeUVuaFFRO0VBT0k7QXpFZ2hRWjs7QXlFdmhRUTtFQU9JO0F6RW9oUVo7O0F5RTNoUVE7RUFPSTtBekV3aFFaOztBeUUvaFFRO0VBT0k7QXpFNGhRWjs7QXlFbmlRUTtFQU9JO0F6RWdpUVo7O0F5RXZpUVE7RUFPSTtBekVvaVFaOztBeUUzaVFRO0VBT0k7QXpFd2lRWjs7QXlFL2lRUTtFQU9JO0F6RTRpUVo7O0F5RW5qUVE7RUFPSTtBekVnalFaOztBeUV2alFRO0VBT0k7QXpFb2pRWjs7QXlFM2pRUTtFQU9JO0VBQUE7QXpFeWpRWjs7QXlFaGtRUTtFQU9JO0VBQUE7QXpFOGpRWjs7QXlFcmtRUTtFQU9JO0VBQUE7QXpFbWtRWjs7QXlFMWtRUTtFQU9JO0VBQUE7QXpFd2tRWjs7QXlFL2tRUTtFQU9JO0F6RTRrUVo7O0F5RW5sUVE7RUFPSTtBekVnbFFaOztBZTFsUUk7RTBER0k7SUFPSTtFekVxbFFWO0V5RTVsUU07SUFPSTtFekV3bFFWO0V5RS9sUU07SUFPSTtFekUybFFWO0V5RWxtUU07SUFPSTtFekU4bFFWO0V5RXJtUU07SUFPSTtFekVpbVFWO0V5RXhtUU07SUFPSTtFekVvbVFWO0V5RTNtUU07SUFPSTtFekV1bVFWO0V5RTltUU07SUFPSTtFekUwbVFWO0V5RWpuUU07SUFPSTtFekU2bVFWO0V5RXBuUU07SUFPSTtFekVnblFWO0V5RXZuUU07SUFPSTtFekVtblFWO0V5RTFuUU07SUFPSTtFekVzblFWO0V5RTduUU07SUFPSTtFekV5blFWO0V5RWhvUU07SUFPSTtFekU0blFWO0V5RW5vUU07SUFPSTtFekUrblFWO0V5RXRvUU07SUFPSTtFekVrb1FWO0V5RXpvUU07SUFPSTtFekVxb1FWO0V5RTVvUU07SUFPSTtFekV3b1FWO0V5RS9vUU07SUFPSTtFekUyb1FWO0V5RWxwUU07SUFPSTtFekU4b1FWO0V5RXJwUU07SUFPSTtFekVpcFFWO0V5RXhwUU07SUFPSTtFekVvcFFWO0V5RTNwUU07SUFPSTtFekV1cFFWO0V5RTlwUU07SUFPSTtFekUwcFFWO0V5RWpxUU07SUFPSTtFekU2cFFWO0V5RXBxUU07SUFPSTtFekVncVFWO0V5RXZxUU07SUFPSTtFekVtcVFWO0V5RTFxUU07SUFPSTtFekVzcVFWO0V5RTdxUU07SUFPSTtFekV5cVFWO0V5RWhyUU07SUFPSTtFekU0cVFWO0V5RW5yUU07SUFPSTtFekUrcVFWO0V5RXRyUU07SUFPSTtFekVrclFWO0V5RXpyUU07SUFPSTtFekVxclFWO0V5RTVyUU07SUFPSTtFekV3clFWO0V5RS9yUU07SUFPSTtFekUyclFWO0V5RWxzUU07SUFPSTtFekU4clFWO0V5RXJzUU07SUFPSTtFekVpc1FWO0V5RXhzUU07SUFPSTtFekVvc1FWO0V5RTNzUU07SUFPSTtFekV1c1FWO0V5RTlzUU07SUFPSTtFekUwc1FWO0V5RWp0UU07SUFPSTtFekU2c1FWO0V5RXB0UU07SUFPSTtFekVndFFWO0V5RXZ0UU07SUFPSTtFekVtdFFWO0V5RTF0UU07SUFPSTtFekVzdFFWO0V5RTd0UU07SUFPSTtFekV5dFFWO0V5RWh1UU07SUFPSTtFekU0dFFWO0V5RW51UU07SUFPSTtFekUrdFFWO0V5RXR1UU07SUFPSTtFekVrdVFWO0V5RXp1UU07SUFPSTtFekVxdVFWO0V5RTV1UU07SUFPSTtFekV3dVFWO0V5RS91UU07SUFPSTtFekUydVFWO0V5RWx2UU07SUFPSTtFekU4dVFWO0V5RXJ2UU07SUFPSTtFekVpdlFWO0V5RXh2UU07SUFPSTtFekVvdlFWO0V5RTN2UU07SUFPSTtFekV1dlFWO0V5RTl2UU07SUFPSTtFekUwdlFWO0V5RWp3UU07SUFPSTtFekU2dlFWO0V5RXB3UU07SUFPSTtFekVnd1FWO0V5RXZ3UU07SUFPSTtFekVtd1FWO0V5RTF3UU07SUFPSTtFekVzd1FWO0V5RTd3UU07SUFPSTtFekV5d1FWO0V5RWh4UU07SUFPSTtFekU0d1FWO0V5RW54UU07SUFPSTtFekUrd1FWO0V5RXR4UU07SUFPSTtJQUFBO0V6RW14UVY7RXlFMXhRTTtJQU9JO0lBQUE7RXpFdXhRVjtFeUU5eFFNO0lBT0k7SUFBQTtFekUyeFFWO0V5RWx5UU07SUFPSTtJQUFBO0V6RSt4UVY7RXlFdHlRTTtJQU9JO0lBQUE7RXpFbXlRVjtFeUUxeVFNO0lBT0k7SUFBQTtFekV1eVFWO0V5RTl5UU07SUFPSTtJQUFBO0V6RTJ5UVY7RXlFbHpRTTtJQU9JO0lBQUE7RXpFK3lRVjtFeUV0elFNO0lBT0k7SUFBQTtFekVtelFWO0V5RTF6UU07SUFPSTtJQUFBO0V6RXV6UVY7RXlFOXpRTTtJQU9JO0lBQUE7RXpFMnpRVjtFeUVsMFFNO0lBT0k7SUFBQTtFekUrelFWO0V5RXQwUU07SUFPSTtJQUFBO0V6RW0wUVY7RXlFMTBRTTtJQU9JO0lBQUE7RXpFdTBRVjtFeUU5MFFNO0lBT0k7RXpFMDBRVjtFeUVqMVFNO0lBT0k7RXpFNjBRVjtFeUVwMVFNO0lBT0k7RXpFZzFRVjtFeUV2MVFNO0lBT0k7RXpFbTFRVjtFeUUxMVFNO0lBT0k7RXpFczFRVjtFeUU3MVFNO0lBT0k7RXpFeTFRVjtFeUVoMlFNO0lBT0k7RXpFNDFRVjtFeUVuMlFNO0lBT0k7RXpFKzFRVjtFeUV0MlFNO0lBT0k7RXpFazJRVjtFeUV6MlFNO0lBT0k7RXpFcTJRVjtFeUU1MlFNO0lBT0k7RXpFdzJRVjtFeUUvMlFNO0lBT0k7RXpFMjJRVjtFeUVsM1FNO0lBT0k7RXpFODJRVjtFeUVyM1FNO0lBT0k7RXpFaTNRVjtFeUV4M1FNO0lBT0k7RXpFbzNRVjtFeUUzM1FNO0lBT0k7RXpFdTNRVjtFeUU5M1FNO0lBT0k7RXpFMDNRVjtFeUVqNFFNO0lBT0k7RXpFNjNRVjtFeUVwNFFNO0lBT0k7RXpFZzRRVjtFeUV2NFFNO0lBT0k7RXpFbTRRVjtFeUUxNFFNO0lBT0k7RXpFczRRVjtFeUU3NFFNO0lBT0k7RXpFeTRRVjtFeUVoNVFNO0lBT0k7RXpFNDRRVjtFeUVuNVFNO0lBT0k7RXpFKzRRVjtFeUV0NVFNO0lBT0k7RXpFazVRVjtFeUV6NVFNO0lBT0k7RXpFcTVRVjtFeUU1NVFNO0lBT0k7RXpFdzVRVjtFeUUvNVFNO0lBT0k7RXpFMjVRVjtFeUVsNlFNO0lBT0k7RXpFODVRVjtFeUVyNlFNO0lBT0k7RXpFaTZRVjtFeUV4NlFNO0lBT0k7RXpFbzZRVjtFeUUzNlFNO0lBT0k7RXpFdTZRVjtFeUU5NlFNO0lBT0k7RXpFMDZRVjtFeUVqN1FNO0lBT0k7RXpFNjZRVjtFeUVwN1FNO0lBT0k7SUFBQTtFekVpN1FWO0V5RXg3UU07SUFPSTtJQUFBO0V6RXE3UVY7RXlFNTdRTTtJQU9JO0lBQUE7RXpFeTdRVjtFeUVoOFFNO0lBT0k7SUFBQTtFekU2N1FWO0V5RXA4UU07SUFPSTtJQUFBO0V6RWk4UVY7RXlFeDhRTTtJQU9JO0lBQUE7RXpFcThRVjtFeUU1OFFNO0lBT0k7SUFBQTtFekV5OFFWO0V5RWg5UU07SUFPSTtJQUFBO0V6RTY4UVY7RXlFcDlRTTtJQU9JO0lBQUE7RXpFaTlRVjtFeUV4OVFNO0lBT0k7SUFBQTtFekVxOVFWO0V5RTU5UU07SUFPSTtJQUFBO0V6RXk5UVY7RXlFaCtRTTtJQU9JO0lBQUE7RXpFNjlRVjtFeUVwK1FNO0lBT0k7RXpFZytRVjtFeUV2K1FNO0lBT0k7RXpFbStRVjtFeUUxK1FNO0lBT0k7RXpFcytRVjtFeUU3K1FNO0lBT0k7RXpFeStRVjtFeUVoL1FNO0lBT0k7RXpFNCtRVjtFeUVuL1FNO0lBT0k7RXpFKytRVjtFeUV0L1FNO0lBT0k7RXpFay9RVjtFeUV6L1FNO0lBT0k7RXpFcS9RVjtFeUU1L1FNO0lBT0k7RXpFdy9RVjtFeUUvL1FNO0lBT0k7RXpFMi9RVjtFeUVsZ1JNO0lBT0k7RXpFOC9RVjtFeUVyZ1JNO0lBT0k7RXpFaWdSVjtFeUV4Z1JNO0lBT0k7RXpFb2dSVjtFeUUzZ1JNO0lBT0k7RXpFdWdSVjtFeUU5Z1JNO0lBT0k7RXpFMGdSVjtFeUVqaFJNO0lBT0k7RXpFNmdSVjtFeUVwaFJNO0lBT0k7RXpFZ2hSVjtFeUV2aFJNO0lBT0k7RXpFbWhSVjtFeUUxaFJNO0lBT0k7RXpFc2hSVjtFeUU3aFJNO0lBT0k7RXpFeWhSVjtFeUVoaVJNO0lBT0k7RXpFNGhSVjtFeUVuaVJNO0lBT0k7RXpFK2hSVjtFeUV0aVJNO0lBT0k7RXpFa2lSVjtFeUV6aVJNO0lBT0k7RXpFcWlSVjtFeUU1aVJNO0lBT0k7RXpFd2lSVjtFeUUvaVJNO0lBT0k7RXpFMmlSVjtFeUVsalJNO0lBT0k7RXpFOGlSVjtFeUVyalJNO0lBT0k7RXpFaWpSVjtFeUV4alJNO0lBT0k7RXpFb2pSVjtFeUUzalJNO0lBT0k7RXpFdWpSVjtFeUU5alJNO0lBT0k7RXpFMGpSVjtFeUVqa1JNO0lBT0k7RXpFNmpSVjtFeUVwa1JNO0lBT0k7RXpFZ2tSVjtBQUNGO0FlM2tSSTtFMERHSTtJQU9JO0V6RXFrUlY7RXlFNWtSTTtJQU9JO0V6RXdrUlY7RXlFL2tSTTtJQU9JO0V6RTJrUlY7RXlFbGxSTTtJQU9JO0V6RThrUlY7RXlFcmxSTTtJQU9JO0V6RWlsUlY7RXlFeGxSTTtJQU9JO0V6RW9sUlY7RXlFM2xSTTtJQU9JO0V6RXVsUlY7RXlFOWxSTTtJQU9JO0V6RTBsUlY7RXlFam1STTtJQU9JO0V6RTZsUlY7RXlFcG1STTtJQU9JO0V6RWdtUlY7RXlFdm1STTtJQU9JO0V6RW1tUlY7RXlFMW1STTtJQU9JO0V6RXNtUlY7RXlFN21STTtJQU9JO0V6RXltUlY7RXlFaG5STTtJQU9JO0V6RTRtUlY7RXlFbm5STTtJQU9JO0V6RSttUlY7RXlFdG5STTtJQU9JO0V6RWtuUlY7RXlFem5STTtJQU9JO0V6RXFuUlY7RXlFNW5STTtJQU9JO0V6RXduUlY7RXlFL25STTtJQU9JO0V6RTJuUlY7RXlFbG9STTtJQU9JO0V6RThuUlY7RXlFcm9STTtJQU9JO0V6RWlvUlY7RXlFeG9STTtJQU9JO0V6RW9vUlY7RXlFM29STTtJQU9JO0V6RXVvUlY7RXlFOW9STTtJQU9JO0V6RTBvUlY7RXlFanBSTTtJQU9JO0V6RTZvUlY7RXlFcHBSTTtJQU9JO0V6RWdwUlY7RXlFdnBSTTtJQU9JO0V6RW1wUlY7RXlFMXBSTTtJQU9JO0V6RXNwUlY7RXlFN3BSTTtJQU9JO0V6RXlwUlY7RXlFaHFSTTtJQU9JO0V6RTRwUlY7RXlFbnFSTTtJQU9JO0V6RStwUlY7RXlFdHFSTTtJQU9JO0V6RWtxUlY7RXlFenFSTTtJQU9JO0V6RXFxUlY7RXlFNXFSTTtJQU9JO0V6RXdxUlY7RXlFL3FSTTtJQU9JO0V6RTJxUlY7RXlFbHJSTTtJQU9JO0V6RThxUlY7RXlFcnJSTTtJQU9JO0V6RWlyUlY7RXlFeHJSTTtJQU9JO0V6RW9yUlY7RXlFM3JSTTtJQU9JO0V6RXVyUlY7RXlFOXJSTTtJQU9JO0V6RTByUlY7RXlFanNSTTtJQU9JO0V6RTZyUlY7RXlFcHNSTTtJQU9JO0V6RWdzUlY7RXlFdnNSTTtJQU9JO0V6RW1zUlY7RXlFMXNSTTtJQU9JO0V6RXNzUlY7RXlFN3NSTTtJQU9JO0V6RXlzUlY7RXlFaHRSTTtJQU9JO0V6RTRzUlY7RXlFbnRSTTtJQU9JO0V6RStzUlY7RXlFdHRSTTtJQU9JO0V6RWt0UlY7RXlFenRSTTtJQU9JO0V6RXF0UlY7RXlFNXRSTTtJQU9JO0V6RXd0UlY7RXlFL3RSTTtJQU9JO0V6RTJ0UlY7RXlFbHVSTTtJQU9JO0V6RTh0UlY7RXlFcnVSTTtJQU9JO0V6RWl1UlY7RXlFeHVSTTtJQU9JO0V6RW91UlY7RXlFM3VSTTtJQU9JO0V6RXV1UlY7RXlFOXVSTTtJQU9JO0V6RTB1UlY7RXlFanZSTTtJQU9JO0V6RTZ1UlY7RXlFcHZSTTtJQU9JO0V6RWd2UlY7RXlFdnZSTTtJQU9JO0V6RW12UlY7RXlFMXZSTTtJQU9JO0V6RXN2UlY7RXlFN3ZSTTtJQU9JO0V6RXl2UlY7RXlFaHdSTTtJQU9JO0V6RTR2UlY7RXlFbndSTTtJQU9JO0V6RSt2UlY7RXlFdHdSTTtJQU9JO0lBQUE7RXpFbXdSVjtFeUUxd1JNO0lBT0k7SUFBQTtFekV1d1JWO0V5RTl3Uk07SUFPSTtJQUFBO0V6RTJ3UlY7RXlFbHhSTTtJQU9JO0lBQUE7RXpFK3dSVjtFeUV0eFJNO0lBT0k7SUFBQTtFekVteFJWO0V5RTF4Uk07SUFPSTtJQUFBO0V6RXV4UlY7RXlFOXhSTTtJQU9JO0lBQUE7RXpFMnhSVjtFeUVseVJNO0lBT0k7SUFBQTtFekUreFJWO0V5RXR5Uk07SUFPSTtJQUFBO0V6RW15UlY7RXlFMXlSTTtJQU9JO0lBQUE7RXpFdXlSVjtFeUU5eVJNO0lBT0k7SUFBQTtFekUyeVJWO0V5RWx6Uk07SUFPSTtJQUFBO0V6RSt5UlY7RXlFdHpSTTtJQU9JO0lBQUE7RXpFbXpSVjtFeUUxelJNO0lBT0k7SUFBQTtFekV1elJWO0V5RTl6Uk07SUFPSTtFekUwelJWO0V5RWowUk07SUFPSTtFekU2elJWO0V5RXAwUk07SUFPSTtFekVnMFJWO0V5RXYwUk07SUFPSTtFekVtMFJWO0V5RTEwUk07SUFPSTtFekVzMFJWO0V5RTcwUk07SUFPSTtFekV5MFJWO0V5RWgxUk07SUFPSTtFekU0MFJWO0V5RW4xUk07SUFPSTtFekUrMFJWO0V5RXQxUk07SUFPSTtFekVrMVJWO0V5RXoxUk07SUFPSTtFekVxMVJWO0V5RTUxUk07SUFPSTtFekV3MVJWO0V5RS8xUk07SUFPSTtFekUyMVJWO0V5RWwyUk07SUFPSTtFekU4MVJWO0V5RXIyUk07SUFPSTtFekVpMlJWO0V5RXgyUk07SUFPSTtFekVvMlJWO0V5RTMyUk07SUFPSTtFekV1MlJWO0V5RTkyUk07SUFPSTtFekUwMlJWO0V5RWozUk07SUFPSTtFekU2MlJWO0V5RXAzUk07SUFPSTtFekVnM1JWO0V5RXYzUk07SUFPSTtFekVtM1JWO0V5RTEzUk07SUFPSTtFekVzM1JWO0V5RTczUk07SUFPSTtFekV5M1JWO0V5RWg0Uk07SUFPSTtFekU0M1JWO0V5RW40Uk07SUFPSTtFekUrM1JWO0V5RXQ0Uk07SUFPSTtFekVrNFJWO0V5RXo0Uk07SUFPSTtFekVxNFJWO0V5RTU0Uk07SUFPSTtFekV3NFJWO0V5RS80Uk07SUFPSTtFekUyNFJWO0V5RWw1Uk07SUFPSTtFekU4NFJWO0V5RXI1Uk07SUFPSTtFekVpNVJWO0V5RXg1Uk07SUFPSTtFekVvNVJWO0V5RTM1Uk07SUFPSTtFekV1NVJWO0V5RTk1Uk07SUFPSTtFekUwNVJWO0V5RWo2Uk07SUFPSTtFekU2NVJWO0V5RXA2Uk07SUFPSTtJQUFBO0V6RWk2UlY7RXlFeDZSTTtJQU9JO0lBQUE7RXpFcTZSVjtFeUU1NlJNO0lBT0k7SUFBQTtFekV5NlJWO0V5RWg3Uk07SUFPSTtJQUFBO0V6RTY2UlY7RXlFcDdSTTtJQU9JO0lBQUE7RXpFaTdSVjtFeUV4N1JNO0lBT0k7SUFBQTtFekVxN1JWO0V5RTU3Uk07SUFPSTtJQUFBO0V6RXk3UlY7RXlFaDhSTTtJQU9JO0lBQUE7RXpFNjdSVjtFeUVwOFJNO0lBT0k7SUFBQTtFekVpOFJWO0V5RXg4Uk07SUFPSTtJQUFBO0V6RXE4UlY7RXlFNThSTTtJQU9JO0lBQUE7RXpFeThSVjtFeUVoOVJNO0lBT0k7SUFBQTtFekU2OFJWO0V5RXA5Uk07SUFPSTtFekVnOVJWO0V5RXY5Uk07SUFPSTtFekVtOVJWO0V5RTE5Uk07SUFPSTtFekVzOVJWO0V5RTc5Uk07SUFPSTtFekV5OVJWO0V5RWgrUk07SUFPSTtFekU0OVJWO0V5RW4rUk07SUFPSTtFekUrOVJWO0V5RXQrUk07SUFPSTtFekVrK1JWO0V5RXorUk07SUFPSTtFekVxK1JWO0V5RTUrUk07SUFPSTtFekV3K1JWO0V5RS8rUk07SUFPSTtFekUyK1JWO0V5RWwvUk07SUFPSTtFekU4K1JWO0V5RXIvUk07SUFPSTtFekVpL1JWO0V5RXgvUk07SUFPSTtFekVvL1JWO0V5RTMvUk07SUFPSTtFekV1L1JWO0V5RTkvUk07SUFPSTtFekUwL1JWO0V5RWpnU007SUFPSTtFekU2L1JWO0V5RXBnU007SUFPSTtFekVnZ1NWO0V5RXZnU007SUFPSTtFekVtZ1NWO0V5RTFnU007SUFPSTtFekVzZ1NWO0V5RTdnU007SUFPSTtFekV5Z1NWO0V5RWhoU007SUFPSTtFekU0Z1NWO0V5RW5oU007SUFPSTtFekUrZ1NWO0V5RXRoU007SUFPSTtFekVraFNWO0V5RXpoU007SUFPSTtFekVxaFNWO0V5RTVoU007SUFPSTtFekV3aFNWO0V5RS9oU007SUFPSTtFekUyaFNWO0V5RWxpU007SUFPSTtFekU4aFNWO0V5RXJpU007SUFPSTtFekVpaVNWO0V5RXhpU007SUFPSTtFekVvaVNWO0V5RTNpU007SUFPSTtFekV1aVNWO0V5RTlpU007SUFPSTtFekUwaVNWO0V5RWpqU007SUFPSTtFekU2aVNWO0V5RXBqU007SUFPSTtFekVnalNWO0FBQ0Y7QWUzalNJO0UwREdJO0lBT0k7RXpFcWpTVjtFeUU1alNNO0lBT0k7RXpFd2pTVjtFeUUvalNNO0lBT0k7RXpFMmpTVjtFeUVsa1NNO0lBT0k7RXpFOGpTVjtFeUVya1NNO0lBT0k7RXpFaWtTVjtFeUV4a1NNO0lBT0k7RXpFb2tTVjtFeUUza1NNO0lBT0k7RXpFdWtTVjtFeUU5a1NNO0lBT0k7RXpFMGtTVjtFeUVqbFNNO0lBT0k7RXpFNmtTVjtFeUVwbFNNO0lBT0k7RXpFZ2xTVjtFeUV2bFNNO0lBT0k7RXpFbWxTVjtFeUUxbFNNO0lBT0k7RXpFc2xTVjtFeUU3bFNNO0lBT0k7RXpFeWxTVjtFeUVobVNNO0lBT0k7RXpFNGxTVjtFeUVubVNNO0lBT0k7RXpFK2xTVjtFeUV0bVNNO0lBT0k7RXpFa21TVjtFeUV6bVNNO0lBT0k7RXpFcW1TVjtFeUU1bVNNO0lBT0k7RXpFd21TVjtFeUUvbVNNO0lBT0k7RXpFMm1TVjtFeUVsblNNO0lBT0k7RXpFOG1TVjtFeUVyblNNO0lBT0k7RXpFaW5TVjtFeUV4blNNO0lBT0k7RXpFb25TVjtFeUUzblNNO0lBT0k7RXpFdW5TVjtFeUU5blNNO0lBT0k7RXpFMG5TVjtFeUVqb1NNO0lBT0k7RXpFNm5TVjtFeUVwb1NNO0lBT0k7RXpFZ29TVjtFeUV2b1NNO0lBT0k7RXpFbW9TVjtFeUUxb1NNO0lBT0k7RXpFc29TVjtFeUU3b1NNO0lBT0k7RXpFeW9TVjtFeUVocFNNO0lBT0k7RXpFNG9TVjtFeUVucFNNO0lBT0k7RXpFK29TVjtFeUV0cFNNO0lBT0k7RXpFa3BTVjtFeUV6cFNNO0lBT0k7RXpFcXBTVjtFeUU1cFNNO0lBT0k7RXpFd3BTVjtFeUUvcFNNO0lBT0k7RXpFMnBTVjtFeUVscVNNO0lBT0k7RXpFOHBTVjtFeUVycVNNO0lBT0k7RXpFaXFTVjtFeUV4cVNNO0lBT0k7RXpFb3FTVjtFeUUzcVNNO0lBT0k7RXpFdXFTVjtFeUU5cVNNO0lBT0k7RXpFMHFTVjtFeUVqclNNO0lBT0k7RXpFNnFTVjtFeUVwclNNO0lBT0k7RXpFZ3JTVjtFeUV2clNNO0lBT0k7RXpFbXJTVjtFeUUxclNNO0lBT0k7RXpFc3JTVjtFeUU3clNNO0lBT0k7RXpFeXJTVjtFeUVoc1NNO0lBT0k7RXpFNHJTVjtFeUVuc1NNO0lBT0k7RXpFK3JTVjtFeUV0c1NNO0lBT0k7RXpFa3NTVjtFeUV6c1NNO0lBT0k7RXpFcXNTVjtFeUU1c1NNO0lBT0k7RXpFd3NTVjtFeUUvc1NNO0lBT0k7RXpFMnNTVjtFeUVsdFNNO0lBT0k7RXpFOHNTVjtFeUVydFNNO0lBT0k7RXpFaXRTVjtFeUV4dFNNO0lBT0k7RXpFb3RTVjtFeUUzdFNNO0lBT0k7RXpFdXRTVjtFeUU5dFNNO0lBT0k7RXpFMHRTVjtFeUVqdVNNO0lBT0k7RXpFNnRTVjtFeUVwdVNNO0lBT0k7RXpFZ3VTVjtFeUV2dVNNO0lBT0k7RXpFbXVTVjtFeUUxdVNNO0lBT0k7RXpFc3VTVjtFeUU3dVNNO0lBT0k7RXpFeXVTVjtFeUVodlNNO0lBT0k7RXpFNHVTVjtFeUVudlNNO0lBT0k7RXpFK3VTVjtFeUV0dlNNO0lBT0k7SUFBQTtFekVtdlNWO0V5RTF2U007SUFPSTtJQUFBO0V6RXV2U1Y7RXlFOXZTTTtJQU9JO0lBQUE7RXpFMnZTVjtFeUVsd1NNO0lBT0k7SUFBQTtFekUrdlNWO0V5RXR3U007SUFPSTtJQUFBO0V6RW13U1Y7RXlFMXdTTTtJQU9JO0lBQUE7RXpFdXdTVjtFeUU5d1NNO0lBT0k7SUFBQTtFekUyd1NWO0V5RWx4U007SUFPSTtJQUFBO0V6RSt3U1Y7RXlFdHhTTTtJQU9JO0lBQUE7RXpFbXhTVjtFeUUxeFNNO0lBT0k7SUFBQTtFekV1eFNWO0V5RTl4U007SUFPSTtJQUFBO0V6RTJ4U1Y7RXlFbHlTTTtJQU9JO0lBQUE7RXpFK3hTVjtFeUV0eVNNO0lBT0k7SUFBQTtFekVteVNWO0V5RTF5U007SUFPSTtJQUFBO0V6RXV5U1Y7RXlFOXlTTTtJQU9JO0V6RTB5U1Y7RXlFanpTTTtJQU9JO0V6RTZ5U1Y7RXlFcHpTTTtJQU9JO0V6RWd6U1Y7RXlFdnpTTTtJQU9JO0V6RW16U1Y7RXlFMXpTTTtJQU9JO0V6RXN6U1Y7RXlFN3pTTTtJQU9JO0V6RXl6U1Y7RXlFaDBTTTtJQU9JO0V6RTR6U1Y7RXlFbjBTTTtJQU9JO0V6RSt6U1Y7RXlFdDBTTTtJQU9JO0V6RWswU1Y7RXlFejBTTTtJQU9JO0V6RXEwU1Y7RXlFNTBTTTtJQU9JO0V6RXcwU1Y7RXlFLzBTTTtJQU9JO0V6RTIwU1Y7RXlFbDFTTTtJQU9JO0V6RTgwU1Y7RXlFcjFTTTtJQU9JO0V6RWkxU1Y7RXlFeDFTTTtJQU9JO0V6RW8xU1Y7RXlFMzFTTTtJQU9JO0V6RXUxU1Y7RXlFOTFTTTtJQU9JO0V6RTAxU1Y7RXlFajJTTTtJQU9JO0V6RTYxU1Y7RXlFcDJTTTtJQU9JO0V6RWcyU1Y7RXlFdjJTTTtJQU9JO0V6RW0yU1Y7RXlFMTJTTTtJQU9JO0V6RXMyU1Y7RXlFNzJTTTtJQU9JO0V6RXkyU1Y7RXlFaDNTTTtJQU9JO0V6RTQyU1Y7RXlFbjNTTTtJQU9JO0V6RSsyU1Y7RXlFdDNTTTtJQU9JO0V6RWszU1Y7RXlFejNTTTtJQU9JO0V6RXEzU1Y7RXlFNTNTTTtJQU9JO0V6RXczU1Y7RXlFLzNTTTtJQU9JO0V6RTIzU1Y7RXlFbDRTTTtJQU9JO0V6RTgzU1Y7RXlFcjRTTTtJQU9JO0V6RWk0U1Y7RXlFeDRTTTtJQU9JO0V6RW80U1Y7RXlFMzRTTTtJQU9JO0V6RXU0U1Y7RXlFOTRTTTtJQU9JO0V6RTA0U1Y7RXlFajVTTTtJQU9JO0V6RTY0U1Y7RXlFcDVTTTtJQU9JO0lBQUE7RXpFaTVTVjtFeUV4NVNNO0lBT0k7SUFBQTtFekVxNVNWO0V5RTU1U007SUFPSTtJQUFBO0V6RXk1U1Y7RXlFaDZTTTtJQU9JO0lBQUE7RXpFNjVTVjtFeUVwNlNNO0lBT0k7SUFBQTtFekVpNlNWO0V5RXg2U007SUFPSTtJQUFBO0V6RXE2U1Y7RXlFNTZTTTtJQU9JO0lBQUE7RXpFeTZTVjtFeUVoN1NNO0lBT0k7SUFBQTtFekU2NlNWO0V5RXA3U007SUFPSTtJQUFBO0V6RWk3U1Y7RXlFeDdTTTtJQU9JO0lBQUE7RXpFcTdTVjtFeUU1N1NNO0lBT0k7SUFBQTtFekV5N1NWO0V5RWg4U007SUFPSTtJQUFBO0V6RTY3U1Y7RXlFcDhTTTtJQU9JO0V6RWc4U1Y7RXlFdjhTTTtJQU9JO0V6RW04U1Y7RXlFMThTTTtJQU9JO0V6RXM4U1Y7RXlFNzhTTTtJQU9JO0V6RXk4U1Y7RXlFaDlTTTtJQU9JO0V6RTQ4U1Y7RXlFbjlTTTtJQU9JO0V6RSs4U1Y7RXlFdDlTTTtJQU9JO0V6RWs5U1Y7RXlFejlTTTtJQU9JO0V6RXE5U1Y7RXlFNTlTTTtJQU9JO0V6RXc5U1Y7RXlFLzlTTTtJQU9JO0V6RTI5U1Y7RXlFbCtTTTtJQU9JO0V6RTg5U1Y7RXlFcitTTTtJQU9JO0V6RWkrU1Y7RXlFeCtTTTtJQU9JO0V6RW8rU1Y7RXlFMytTTTtJQU9JO0V6RXUrU1Y7RXlFOStTTTtJQU9JO0V6RTArU1Y7RXlFai9TTTtJQU9JO0V6RTYrU1Y7RXlFcC9TTTtJQU9JO0V6RWcvU1Y7RXlFdi9TTTtJQU9JO0V6RW0vU1Y7RXlFMS9TTTtJQU9JO0V6RXMvU1Y7RXlFNy9TTTtJQU9JO0V6RXkvU1Y7RXlFaGdUTTtJQU9JO0V6RTQvU1Y7RXlFbmdUTTtJQU9JO0V6RSsvU1Y7RXlFdGdUTTtJQU9JO0V6RWtnVFY7RXlFemdUTTtJQU9JO0V6RXFnVFY7RXlFNWdUTTtJQU9JO0V6RXdnVFY7RXlFL2dUTTtJQU9JO0V6RTJnVFY7RXlFbGhUTTtJQU9JO0V6RThnVFY7RXlFcmhUTTtJQU9JO0V6RWloVFY7RXlFeGhUTTtJQU9JO0V6RW9oVFY7RXlFM2hUTTtJQU9JO0V6RXVoVFY7RXlFOWhUTTtJQU9JO0V6RTBoVFY7RXlFamlUTTtJQU9JO0V6RTZoVFY7RXlFcGlUTTtJQU9JO0V6RWdpVFY7QUFDRjtBZTNpVEk7RTBER0k7SUFPSTtFekVxaVRWO0V5RTVpVE07SUFPSTtFekV3aVRWO0V5RS9pVE07SUFPSTtFekUyaVRWO0V5RWxqVE07SUFPSTtFekU4aVRWO0V5RXJqVE07SUFPSTtFekVpalRWO0V5RXhqVE07SUFPSTtFekVvalRWO0V5RTNqVE07SUFPSTtFekV1alRWO0V5RTlqVE07SUFPSTtFekUwalRWO0V5RWprVE07SUFPSTtFekU2alRWO0V5RXBrVE07SUFPSTtFekVna1RWO0V5RXZrVE07SUFPSTtFekVta1RWO0V5RTFrVE07SUFPSTtFekVza1RWO0V5RTdrVE07SUFPSTtFekV5a1RWO0V5RWhsVE07SUFPSTtFekU0a1RWO0V5RW5sVE07SUFPSTtFekUra1RWO0V5RXRsVE07SUFPSTtFekVrbFRWO0V5RXpsVE07SUFPSTtFekVxbFRWO0V5RTVsVE07SUFPSTtFekV3bFRWO0V5RS9sVE07SUFPSTtFekUybFRWO0V5RWxtVE07SUFPSTtFekU4bFRWO0V5RXJtVE07SUFPSTtFekVpbVRWO0V5RXhtVE07SUFPSTtFekVvbVRWO0V5RTNtVE07SUFPSTtFekV1bVRWO0V5RTltVE07SUFPSTtFekUwbVRWO0V5RWpuVE07SUFPSTtFekU2bVRWO0V5RXBuVE07SUFPSTtFekVnblRWO0V5RXZuVE07SUFPSTtFekVtblRWO0V5RTFuVE07SUFPSTtFekVzblRWO0V5RTduVE07SUFPSTtFekV5blRWO0V5RWhvVE07SUFPSTtFekU0blRWO0V5RW5vVE07SUFPSTtFekUrblRWO0V5RXRvVE07SUFPSTtFekVrb1RWO0V5RXpvVE07SUFPSTtFekVxb1RWO0V5RTVvVE07SUFPSTtFekV3b1RWO0V5RS9vVE07SUFPSTtFekUyb1RWO0V5RWxwVE07SUFPSTtFekU4b1RWO0V5RXJwVE07SUFPSTtFekVpcFRWO0V5RXhwVE07SUFPSTtFekVvcFRWO0V5RTNwVE07SUFPSTtFekV1cFRWO0V5RTlwVE07SUFPSTtFekUwcFRWO0V5RWpxVE07SUFPSTtFekU2cFRWO0V5RXBxVE07SUFPSTtFekVncVRWO0V5RXZxVE07SUFPSTtFekVtcVRWO0V5RTFxVE07SUFPSTtFekVzcVRWO0V5RTdxVE07SUFPSTtFekV5cVRWO0V5RWhyVE07SUFPSTtFekU0cVRWO0V5RW5yVE07SUFPSTtFekUrcVRWO0V5RXRyVE07SUFPSTtFekVrclRWO0V5RXpyVE07SUFPSTtFekVxclRWO0V5RTVyVE07SUFPSTtFekV3clRWO0V5RS9yVE07SUFPSTtFekUyclRWO0V5RWxzVE07SUFPSTtFekU4clRWO0V5RXJzVE07SUFPSTtFekVpc1RWO0V5RXhzVE07SUFPSTtFekVvc1RWO0V5RTNzVE07SUFPSTtFekV1c1RWO0V5RTlzVE07SUFPSTtFekUwc1RWO0V5RWp0VE07SUFPSTtFekU2c1RWO0V5RXB0VE07SUFPSTtFekVndFRWO0V5RXZ0VE07SUFPSTtFekVtdFRWO0V5RTF0VE07SUFPSTtFekVzdFRWO0V5RTd0VE07SUFPSTtFekV5dFRWO0V5RWh1VE07SUFPSTtFekU0dFRWO0V5RW51VE07SUFPSTtFekUrdFRWO0V5RXR1VE07SUFPSTtJQUFBO0V6RW11VFY7RXlFMXVUTTtJQU9JO0lBQUE7RXpFdXVUVjtFeUU5dVRNO0lBT0k7SUFBQTtFekUydVRWO0V5RWx2VE07SUFPSTtJQUFBO0V6RSt1VFY7RXlFdHZUTTtJQU9JO0lBQUE7RXpFbXZUVjtFeUUxdlRNO0lBT0k7SUFBQTtFekV1dlRWO0V5RTl2VE07SUFPSTtJQUFBO0V6RTJ2VFY7RXlFbHdUTTtJQU9JO0lBQUE7RXpFK3ZUVjtFeUV0d1RNO0lBT0k7SUFBQTtFekVtd1RWO0V5RTF3VE07SUFPSTtJQUFBO0V6RXV3VFY7RXlFOXdUTTtJQU9JO0lBQUE7RXpFMndUVjtFeUVseFRNO0lBT0k7SUFBQTtFekUrd1RWO0V5RXR4VE07SUFPSTtJQUFBO0V6RW14VFY7RXlFMXhUTTtJQU9JO0lBQUE7RXpFdXhUVjtFeUU5eFRNO0lBT0k7RXpFMHhUVjtFeUVqeVRNO0lBT0k7RXpFNnhUVjtFeUVweVRNO0lBT0k7RXpFZ3lUVjtFeUV2eVRNO0lBT0k7RXpFbXlUVjtFeUUxeVRNO0lBT0k7RXpFc3lUVjtFeUU3eVRNO0lBT0k7RXpFeXlUVjtFeUVoelRNO0lBT0k7RXpFNHlUVjtFeUVuelRNO0lBT0k7RXpFK3lUVjtFeUV0elRNO0lBT0k7RXpFa3pUVjtFeUV6elRNO0lBT0k7RXpFcXpUVjtFeUU1elRNO0lBT0k7RXpFd3pUVjtFeUUvelRNO0lBT0k7RXpFMnpUVjtFeUVsMFRNO0lBT0k7RXpFOHpUVjtFeUVyMFRNO0lBT0k7RXpFaTBUVjtFeUV4MFRNO0lBT0k7RXpFbzBUVjtFeUUzMFRNO0lBT0k7RXpFdTBUVjtFeUU5MFRNO0lBT0k7RXpFMDBUVjtFeUVqMVRNO0lBT0k7RXpFNjBUVjtFeUVwMVRNO0lBT0k7RXpFZzFUVjtFeUV2MVRNO0lBT0k7RXpFbTFUVjtFeUUxMVRNO0lBT0k7RXpFczFUVjtFeUU3MVRNO0lBT0k7RXpFeTFUVjtFeUVoMlRNO0lBT0k7RXpFNDFUVjtFeUVuMlRNO0lBT0k7RXpFKzFUVjtFeUV0MlRNO0lBT0k7RXpFazJUVjtFeUV6MlRNO0lBT0k7RXpFcTJUVjtFeUU1MlRNO0lBT0k7RXpFdzJUVjtFeUUvMlRNO0lBT0k7RXpFMjJUVjtFeUVsM1RNO0lBT0k7RXpFODJUVjtFeUVyM1RNO0lBT0k7RXpFaTNUVjtFeUV4M1RNO0lBT0k7RXpFbzNUVjtFeUUzM1RNO0lBT0k7RXpFdTNUVjtFeUU5M1RNO0lBT0k7RXpFMDNUVjtFeUVqNFRNO0lBT0k7RXpFNjNUVjtFeUVwNFRNO0lBT0k7SUFBQTtFekVpNFRWO0V5RXg0VE07SUFPSTtJQUFBO0V6RXE0VFY7RXlFNTRUTTtJQU9JO0lBQUE7RXpFeTRUVjtFeUVoNVRNO0lBT0k7SUFBQTtFekU2NFRWO0V5RXA1VE07SUFPSTtJQUFBO0V6RWk1VFY7RXlFeDVUTTtJQU9JO0lBQUE7RXpFcTVUVjtFeUU1NVRNO0lBT0k7SUFBQTtFekV5NVRWO0V5RWg2VE07SUFPSTtJQUFBO0V6RTY1VFY7RXlFcDZUTTtJQU9JO0lBQUE7RXpFaTZUVjtFeUV4NlRNO0lBT0k7SUFBQTtFekVxNlRWO0V5RTU2VE07SUFPSTtJQUFBO0V6RXk2VFY7RXlFaDdUTTtJQU9JO0lBQUE7RXpFNjZUVjtFeUVwN1RNO0lBT0k7RXpFZzdUVjtFeUV2N1RNO0lBT0k7RXpFbTdUVjtFeUUxN1RNO0lBT0k7RXpFczdUVjtFeUU3N1RNO0lBT0k7RXpFeTdUVjtFeUVoOFRNO0lBT0k7RXpFNDdUVjtFeUVuOFRNO0lBT0k7RXpFKzdUVjtFeUV0OFRNO0lBT0k7RXpFazhUVjtFeUV6OFRNO0lBT0k7RXpFcThUVjtFeUU1OFRNO0lBT0k7RXpFdzhUVjtFeUUvOFRNO0lBT0k7RXpFMjhUVjtFeUVsOVRNO0lBT0k7RXpFODhUVjtFeUVyOVRNO0lBT0k7RXpFaTlUVjtFeUV4OVRNO0lBT0k7RXpFbzlUVjtFeUUzOVRNO0lBT0k7RXpFdTlUVjtFeUU5OVRNO0lBT0k7RXpFMDlUVjtFeUVqK1RNO0lBT0k7RXpFNjlUVjtFeUVwK1RNO0lBT0k7RXpFZytUVjtFeUV2K1RNO0lBT0k7RXpFbStUVjtFeUUxK1RNO0lBT0k7RXpFcytUVjtFeUU3K1RNO0lBT0k7RXpFeStUVjtFeUVoL1RNO0lBT0k7RXpFNCtUVjtFeUVuL1RNO0lBT0k7RXpFKytUVjtFeUV0L1RNO0lBT0k7RXpFay9UVjtFeUV6L1RNO0lBT0k7RXpFcS9UVjtFeUU1L1RNO0lBT0k7RXpFdy9UVjtFeUUvL1RNO0lBT0k7RXpFMi9UVjtFeUVsZ1VNO0lBT0k7RXpFOC9UVjtFeUVyZ1VNO0lBT0k7RXpFaWdVVjtFeUV4Z1VNO0lBT0k7RXpFb2dVVjtFeUUzZ1VNO0lBT0k7RXpFdWdVVjtFeUU5Z1VNO0lBT0k7RXpFMGdVVjtFeUVqaFVNO0lBT0k7RXpFNmdVVjtFeUVwaFVNO0lBT0k7RXpFZ2hVVjtBQUNGO0FlM2hVSTtFMERHSTtJQU9JO0V6RXFoVVY7RXlFNWhVTTtJQU9JO0V6RXdoVVY7RXlFL2hVTTtJQU9JO0V6RTJoVVY7RXlFbGlVTTtJQU9JO0V6RThoVVY7RXlFcmlVTTtJQU9JO0V6RWlpVVY7RXlFeGlVTTtJQU9JO0V6RW9pVVY7RXlFM2lVTTtJQU9JO0V6RXVpVVY7RXlFOWlVTTtJQU9JO0V6RTBpVVY7RXlFampVTTtJQU9JO0V6RTZpVVY7RXlFcGpVTTtJQU9JO0V6RWdqVVY7RXlFdmpVTTtJQU9JO0V6RW1qVVY7RXlFMWpVTTtJQU9JO0V6RXNqVVY7RXlFN2pVTTtJQU9JO0V6RXlqVVY7RXlFaGtVTTtJQU9JO0V6RTRqVVY7RXlFbmtVTTtJQU9JO0V6RStqVVY7RXlFdGtVTTtJQU9JO0V6RWtrVVY7RXlFemtVTTtJQU9JO0V6RXFrVVY7RXlFNWtVTTtJQU9JO0V6RXdrVVY7RXlFL2tVTTtJQU9JO0V6RTJrVVY7RXlFbGxVTTtJQU9JO0V6RThrVVY7RXlFcmxVTTtJQU9JO0V6RWlsVVY7RXlFeGxVTTtJQU9JO0V6RW9sVVY7RXlFM2xVTTtJQU9JO0V6RXVsVVY7RXlFOWxVTTtJQU9JO0V6RTBsVVY7RXlFam1VTTtJQU9JO0V6RTZsVVY7RXlFcG1VTTtJQU9JO0V6RWdtVVY7RXlFdm1VTTtJQU9JO0V6RW1tVVY7RXlFMW1VTTtJQU9JO0V6RXNtVVY7RXlFN21VTTtJQU9JO0V6RXltVVY7RXlFaG5VTTtJQU9JO0V6RTRtVVY7RXlFbm5VTTtJQU9JO0V6RSttVVY7RXlFdG5VTTtJQU9JO0V6RWtuVVY7RXlFem5VTTtJQU9JO0V6RXFuVVY7RXlFNW5VTTtJQU9JO0V6RXduVVY7RXlFL25VTTtJQU9JO0V6RTJuVVY7RXlFbG9VTTtJQU9JO0V6RThuVVY7RXlFcm9VTTtJQU9JO0V6RWlvVVY7RXlFeG9VTTtJQU9JO0V6RW9vVVY7RXlFM29VTTtJQU9JO0V6RXVvVVY7RXlFOW9VTTtJQU9JO0V6RTBvVVY7RXlFanBVTTtJQU9JO0V6RTZvVVY7RXlFcHBVTTtJQU9JO0V6RWdwVVY7RXlFdnBVTTtJQU9JO0V6RW1wVVY7RXlFMXBVTTtJQU9JO0V6RXNwVVY7RXlFN3BVTTtJQU9JO0V6RXlwVVY7RXlFaHFVTTtJQU9JO0V6RTRwVVY7RXlFbnFVTTtJQU9JO0V6RStwVVY7RXlFdHFVTTtJQU9JO0V6RWtxVVY7RXlFenFVTTtJQU9JO0V6RXFxVVY7RXlFNXFVTTtJQU9JO0V6RXdxVVY7RXlFL3FVTTtJQU9JO0V6RTJxVVY7RXlFbHJVTTtJQU9JO0V6RThxVVY7RXlFcnJVTTtJQU9JO0V6RWlyVVY7RXlFeHJVTTtJQU9JO0V6RW9yVVY7RXlFM3JVTTtJQU9JO0V6RXVyVVY7RXlFOXJVTTtJQU9JO0V6RTByVVY7RXlFanNVTTtJQU9JO0V6RTZyVVY7RXlFcHNVTTtJQU9JO0V6RWdzVVY7RXlFdnNVTTtJQU9JO0V6RW1zVVY7RXlFMXNVTTtJQU9JO0V6RXNzVVY7RXlFN3NVTTtJQU9JO0V6RXlzVVY7RXlFaHRVTTtJQU9JO0V6RTRzVVY7RXlFbnRVTTtJQU9JO0V6RStzVVY7RXlFdHRVTTtJQU9JO0lBQUE7RXpFbXRVVjtFeUUxdFVNO0lBT0k7SUFBQTtFekV1dFVWO0V5RTl0VU07SUFPSTtJQUFBO0V6RTJ0VVY7RXlFbHVVTTtJQU9JO0lBQUE7RXpFK3RVVjtFeUV0dVVNO0lBT0k7SUFBQTtFekVtdVVWO0V5RTF1VU07SUFPSTtJQUFBO0V6RXV1VVY7RXlFOXVVTTtJQU9JO0lBQUE7RXpFMnVVVjtFeUVsdlVNO0lBT0k7SUFBQTtFekUrdVVWO0V5RXR2VU07SUFPSTtJQUFBO0V6RW12VVY7RXlFMXZVTTtJQU9JO0lBQUE7RXpFdXZVVjtFeUU5dlVNO0lBT0k7SUFBQTtFekUydlVWO0V5RWx3VU07SUFPSTtJQUFBO0V6RSt2VVY7RXlFdHdVTTtJQU9JO0lBQUE7RXpFbXdVVjtFeUUxd1VNO0lBT0k7SUFBQTtFekV1d1VWO0V5RTl3VU07SUFPSTtFekUwd1VWO0V5RWp4VU07SUFPSTtFekU2d1VWO0V5RXB4VU07SUFPSTtFekVneFVWO0V5RXZ4VU07SUFPSTtFekVteFVWO0V5RTF4VU07SUFPSTtFekVzeFVWO0V5RTd4VU07SUFPSTtFekV5eFVWO0V5RWh5VU07SUFPSTtFekU0eFVWO0V5RW55VU07SUFPSTtFekUreFVWO0V5RXR5VU07SUFPSTtFekVreVVWO0V5RXp5VU07SUFPSTtFekVxeVVWO0V5RTV5VU07SUFPSTtFekV3eVVWO0V5RS95VU07SUFPSTtFekUyeVVWO0V5RWx6VU07SUFPSTtFekU4eVVWO0V5RXJ6VU07SUFPSTtFekVpelVWO0V5RXh6VU07SUFPSTtFekVvelVWO0V5RTN6VU07SUFPSTtFekV1elVWO0V5RTl6VU07SUFPSTtFekUwelVWO0V5RWowVU07SUFPSTtFekU2elVWO0V5RXAwVU07SUFPSTtFekVnMFVWO0V5RXYwVU07SUFPSTtFekVtMFVWO0V5RTEwVU07SUFPSTtFekVzMFVWO0V5RTcwVU07SUFPSTtFekV5MFVWO0V5RWgxVU07SUFPSTtFekU0MFVWO0V5RW4xVU07SUFPSTtFekUrMFVWO0V5RXQxVU07SUFPSTtFekVrMVVWO0V5RXoxVU07SUFPSTtFekVxMVVWO0V5RTUxVU07SUFPSTtFekV3MVVWO0V5RS8xVU07SUFPSTtFekUyMVVWO0V5RWwyVU07SUFPSTtFekU4MVVWO0V5RXIyVU07SUFPSTtFekVpMlVWO0V5RXgyVU07SUFPSTtFekVvMlVWO0V5RTMyVU07SUFPSTtFekV1MlVWO0V5RTkyVU07SUFPSTtFekUwMlVWO0V5RWozVU07SUFPSTtFekU2MlVWO0V5RXAzVU07SUFPSTtJQUFBO0V6RWkzVVY7RXlFeDNVTTtJQU9JO0lBQUE7RXpFcTNVVjtFeUU1M1VNO0lBT0k7SUFBQTtFekV5M1VWO0V5RWg0VU07SUFPSTtJQUFBO0V6RTYzVVY7RXlFcDRVTTtJQU9JO0lBQUE7RXpFaTRVVjtFeUV4NFVNO0lBT0k7SUFBQTtFekVxNFVWO0V5RTU0VU07SUFPSTtJQUFBO0V6RXk0VVY7RXlFaDVVTTtJQU9JO0lBQUE7RXpFNjRVVjtFeUVwNVVNO0lBT0k7SUFBQTtFekVpNVVWO0V5RXg1VU07SUFPSTtJQUFBO0V6RXE1VVY7RXlFNTVVTTtJQU9JO0lBQUE7RXpFeTVVVjtFeUVoNlVNO0lBT0k7SUFBQTtFekU2NVVWO0V5RXA2VU07SUFPSTtFekVnNlVWO0V5RXY2VU07SUFPSTtFekVtNlVWO0V5RTE2VU07SUFPSTtFekVzNlVWO0V5RTc2VU07SUFPSTtFekV5NlVWO0V5RWg3VU07SUFPSTtFekU0NlVWO0V5RW43VU07SUFPSTtFekUrNlVWO0V5RXQ3VU07SUFPSTtFekVrN1VWO0V5RXo3VU07SUFPSTtFekVxN1VWO0V5RTU3VU07SUFPSTtFekV3N1VWO0V5RS83VU07SUFPSTtFekUyN1VWO0V5RWw4VU07SUFPSTtFekU4N1VWO0V5RXI4VU07SUFPSTtFekVpOFVWO0V5RXg4VU07SUFPSTtFekVvOFVWO0V5RTM4VU07SUFPSTtFekV1OFVWO0V5RTk4VU07SUFPSTtFekUwOFVWO0V5RWo5VU07SUFPSTtFekU2OFVWO0V5RXA5VU07SUFPSTtFekVnOVVWO0V5RXY5VU07SUFPSTtFekVtOVVWO0V5RTE5VU07SUFPSTtFekVzOVVWO0V5RTc5VU07SUFPSTtFekV5OVVWO0V5RWgrVU07SUFPSTtFekU0OVVWO0V5RW4rVU07SUFPSTtFekUrOVVWO0V5RXQrVU07SUFPSTtFekVrK1VWO0V5RXorVU07SUFPSTtFekVxK1VWO0V5RTUrVU07SUFPSTtFekV3K1VWO0V5RS8rVU07SUFPSTtFekUyK1VWO0V5RWwvVU07SUFPSTtFekU4K1VWO0V5RXIvVU07SUFPSTtFekVpL1VWO0V5RXgvVU07SUFPSTtFekVvL1VWO0V5RTMvVU07SUFPSTtFekV1L1VWO0V5RTkvVU07SUFPSTtFekUwL1VWO0V5RWpnVk07SUFPSTtFekU2L1VWO0V5RXBnVk07SUFPSTtFekVnZ1ZWO0FBQ0Y7QTBFdmpWQTtFRCtDUTtJQU9JO0V6RXFnVlY7RXlFNWdWTTtJQU9JO0V6RXdnVlY7RXlFL2dWTTtJQU9JO0V6RTJnVlY7RXlFbGhWTTtJQU9JO0V6RThnVlY7QUFDRjtBMEVsalZBO0VENEJRO0lBT0k7RXpFbWhWVjtFeUUxaFZNO0lBT0k7RXpFc2hWVjtFeUU3aFZNO0lBT0k7RXpFeWhWVjtFeUVoaVZNO0lBT0k7RXpFNGhWVjtFeUVuaVZNO0lBT0k7RXpFK2hWVjtFeUV0aVZNO0lBT0k7RXpFa2lWVjtFeUV6aVZNO0lBT0k7RXpFcWlWVjtFeUU1aVZNO0lBT0k7RXpFd2lWVjtFeUUvaVZNO0lBT0k7RXpFMmlWVjtFeUVsalZNO0lBT0k7RXpFOGlWVjtBQUNGO0EyRXhuVkE7Ozs7Q0FBQTtBQU1BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBd0VBOzs7Ozs7Ozs7OztFQUFBO0FBdUNBOzs7OztFQUFBO0EzRXhHQTs7eUJBQUE7QTRFYkE7Ozs7Q0FBQTtBQU1BO0VBQ0UsaUIxRUNlO0UwRUFmO0VBQ0E7QTVFd3FWRjs7QTRFcnFWQTs7Ozs7Ozs7Ozs7RUFBQTtBQVlBO0VBQ0U7QTVFd3FWRjs7QTRFcnFWQTtFQUNFO0E1RXdxVkY7QTRFcnFWRTtFQUdFLGMxRW9Fd0I7RTBFbkV4Qix3RTFFb0VlO0UwRW5FZjtFQUNBLDZEMUUyRWlCO0FGMGxWckI7O0E0RWpxVkE7RUFDRTtBNUVvcVZGOztBNEVqcVZBO0VBQ0U7QTVFb3FWRjs7QTRFOXBWSTs7RUFDRTs7OztJQUFBO0VBS0E7RUFDQTtBNUVrcVZOOztBNEU1cFZFOztFQUVFO0E1RStwVko7QTRFN3BWSTs7RUFDRTtBNUVncVZOO0FleHFWSTtFNkRFSjtJQVdJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVFK3BWRjtBQUNGOztBNEUzcFZFO0VBQ0U7QTVFOHBWSjtBNEUzcFZFOzs7RUFHRTtFQUNBO0E1RTZwVko7O0E0RXpwVkE7Ozs7OztFQUFBO0FBT0E7RUFDRTtBNUU0cFZGO0E0RXpwVkk7RUFDRTtFQUNBO0VBQ0EsVzFFMUJvQjtFMEUyQnBCLFkxRTNCb0I7RTBFNEJwQjtFQUNBO0VBQ0E7QTVFMnBWTjtBNEV0cFZNO0VBQ0U7QTVFd3BWUjtBNEVucFZFO0VBQ0U7SUFDRTtFNUVxcFZKO0FBQ0Y7O0E0RWpwVkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E1RW9wVkY7QTRFbHBWRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsYTFFNUhjO0FGZ3hWbEI7QTRFanBWRTtFQUNFO0VBQ0E7QTVFbXBWSjtBZWh1Vkk7RTZEeURKO0lBd0JJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVFbXBWRjtBQUNGOztBZXp1Vkk7RTZEMEZGO0lBRUk7RTVFa3BWSjtBQUNGOztBZTV2Vkk7RTZEOEdKO0lBRUk7RTVFaXBWRjtBQUNGOztBNEU5b1ZBO0VBQ0U7RUFDQTtFQUNBO0E1RWlwVkY7QTRFL29WRTtFQUNFO0VBQ0E7RUFDQSxXMUUzR2lCO0UwRTRHakIsWTFFNUdpQjtFMEU2R2pCO0VBQ0E7RUFDQTtFQUNBO0E1RWlwVko7O0E0RTdvVkE7Ozs7RUFBQTtBQU9FO0VBQ0U7QTVFOG9WSjs7QTRFMW9WQTtFQUNFO0E1RTZvVkY7QTRFM29WRTtFQUNFO0E1RTZvVko7QTRFM29WSTtFQUNFO0E1RTZvVk47O0E0RXhvVkE7Ozs7Ozs7O0VBQUE7QUM1TkE7Ozs7Q0FBQTtBQU9FO0VBQ0U7QTdFODJWSjtBNkUzMlZFO0VBQ0U7QTdFNjJWSjtBNkUxMlZFO0VBQ0U7QTdFNDJWSjs7QTZFdDJWSTtFQURGO0lBRUk7RTdFMDJWSjtBQUNGOztBQS8yVkE7OzJCQUFBO0E4RW5CQTs7OztDQUFBO0FBTUE7RUFDRTtBOUV1NFZGOztBK0U5NFZBOzs7OztDQUFBO0FBT0E7RUFDRTtFQUNBO0VBV0E7Ozt5REFBQTtFQTZFQTs7O2dFQUFBO0EvRWcwVkY7QWVsMlZJO0VnRXBERjtJQUVJO0lBQ0E7SUFDQTtJQUNBO0UvRXc1Vko7QUFDRjtBK0VqNVZFO0VBQ0U7RUFDQSxnQjdFMkNtQjtFNkVyQ25COzs7Ozs7Ozs7Ozs7O0lBQUE7QS9FMjVWSjtBZTUzVkk7RWdFdkNGO0lBS0ksZ0I3RXVDVTtFRjIzVmQ7QUFDRjtBZWo0Vkk7RWdFaEJFO0lBQ0U7SUFDQTtJQUNBO0UvRW81Vk47RStFajVWSTtJQUNFO2lEQUFBO0lBRUEsbUI3RWNxQjtFRnE0VjNCO0UrRWg1Vkk7SUFDRTtJQUNBO3NFQUFBO0lBRUE7RS9FazVWTjtBQUNGO0ErRTk0VkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7Ozs7O0lBQUE7RUFPQTtBL0VnNVZKO0FlaDZWSTtFZ0VLRjtJQWNJOzREQUFBO0lBRUEsbUI3RW9GeUI7RUY2elY3QjtBQUNGO0ErRS80Vkk7RUFDRTtvRUFBQTtFQUVBO0VBQ0E7RUFDQTtFQUNBLGdCN0VsQm1CO0FGbTZWekI7QStFeDRWSTs7O0VBR0U7RUFDQTtFQUNBO0EvRTA0Vk47QStFdDRWRTtFQUNFO0VBQ0E7QS9FdzRWSjtBK0V0NFZJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QS9FdzRWTjtBK0V0NFZNO0VBQ0U7QS9FdzRWUjtBK0VwNFZJO0VBQ0U7RUFDQTtBL0VzNFZOO0ErRXA0Vk07RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9FczRWUjtBK0VwNFZRO0VBQ0U7QS9FczRWVjtBK0VsNFZNO0VBQ0U7RUFDQSxXN0VqRlk7RTZFa0ZaLFk3RWxGWTtFNkVtRlo7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0VvNFZSO0ErRWw0VlE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvRW80VlY7QStFajRWUTtFQUNFO0EvRW00VlY7QStFaDRWUTtFQUNFO0EvRWs0VlY7QStFNTNWTTtFQUNFO0EvRTgzVlI7QStFMzNWTTtFQUNFO0VBQ0E7RUFDQTtBL0U2M1ZSO0ErRXozVlE7RUFDRTtBL0UyM1ZWO0FlMStWSTtFZ0VtQ0Y7SUFrRkk7RS9FeTNWSjtBQUNGO0ErRXQzVkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTttREFBQTtFQUVBO0EvRXczVko7QStFdDNWSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0V3M1ZOO0ErRXAzVk07RUFDRTtBL0VzM1ZSO0ErRWozVk07RUFDRTtBL0VtM1ZSO0ErRWozVlE7RUFDRTtFQUNBO0EvRW0zVlY7QStFNzJWVTtFQUNFO0EvRSsyVlo7O0FnRjNsV0E7Ozs7Q0FBQTtBQU1BO0VBd0JFOzs7Ozs7Ozs7Ozs7OztJQUFBO0VBOEJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTtBaEY0a1dGO0FnRi9uV007RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoRmlvV1I7QWdGNW5XRTtFQUNFO0FoRjhuV0o7QWdGNW5XSTtFQUNFO0FoRjhuV047QWdGM21XRTs7RUFFRTtBaEY2bVdKO0FnRjNtV0k7Ozs7Ozs7Ozs7Ozs7O0VBT0U7QWhGb25XTjtBZTFqV0k7RWlFaENGO0lBRUk7RWhGNGxXSjtBQUNGO0FlL2pXSTtFaUVoQ0Y7SUFNSTtFaEY2bFdKO0FBQ0Y7QWdGMWxXRTtFQW9NRTs7O0lBQUE7QWhGNDVWSjtBZ0Y5bFdNO0VBRUUsV3pFOUVHO0V5RStFSDtFQUNBO0VBQ0E7RUFDQTtBaEYrbFdSO0FnRjdsV1E7RUFDRTtFQUNBO0VBQ0EsVzlFaUV5QjtFOEVoRXpCLFk5RWdFeUI7RThFL0R6QjtFQUNBO0FoRitsV1Y7QWdGNWxXUTtFQUNFLFd6RTlGQztBUDRyV1g7QWdGeGxXTTtFQUNFO0VBQ0E7QWhGMGxXUjtBZ0Z2bFdVO0VBS0U7OztJQUFBO0FoRndsV1o7QWV6cFdJO0VpRTRETTtJQUVJO0VoRitsV1o7QUFDRjtBZ0Z6bFdZO0VBQ0U7QWhGMmxXZDtBZWpxV0k7RWlFdURFO0lBcUJJO0lBQ0E7RWhGeWxXUjtBQUNGO0FnRnJsV0k7RUFrSEU7Ozs7Ozs7Ozs7SUFBQTtFQW9CQTs7O0lBQUE7QWhGZytWTjtBZ0ZybVdNO0VBQ0U7RUFDQTtFQUNBO0FoRnVtV1I7QWdGcG1XTTtFQUNFO0VBRUE7cUVBQUE7RUFFQTtFQUVBOztxREFBQTtFQWlFQTs7Ozs7Ozs7SUFBQTtFQVNBO0VBT0E7Ozs7SUFBQTtBaEZvaVdSO0FlcnRXSTtFaUV5RkU7SUFXSTtJQUNBO0lBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O01BQUE7SUFvQkE7Ozs7c0JBQUE7RWhGc25XUjtBQUNGO0FnRmhuV1E7RUFDRTs7Ozs7Ozs7O0lBQUE7QWhGMm5XVjtBZTl2V0k7RWlFa0lJO0lBWUk7RWhGb25XVjtBQUNGO0FnRmxuV1U7RUFDRTtBaEZvbldaO0FlenZXSTtFaUV5SVE7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWhGbW5XWjtBQUNGO0FnRnBtV1E7RUFFRSw2RDlFNUhXO0FGaXVXckI7QWVueFdJO0VpRXVMTTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsVzlFbEY0QjtJOEVtRjVCO0lBQ0E7SUFDQTtFaEYrbFdWO0FBQ0Y7QWdGN2tXVTtFQUNFO0FoRitrV1o7QWVyeFdJO0VpRXFFQTtJQTJJSTtFaEZ5a1dOO0FBQ0Y7QWdGL2pXVTtFQUNFO0FoRmlrV1o7QWdGM2pXSTtFQUNFO0VBQ0E7RUFDQTtFQUVBOzs7Ozs7O0lBQUE7QWhGbWtXTjtBZXZ6V0k7RWlFOFBNO0lBQ0U7SUFDQTtJQUNBO29FQUFBO0lBRUE7RWhGNGpXVjtFZ0Z6aldVO0lBR0UsNkQ5RXZOTztFRmd4V25CO0FBQ0Y7QWdGbmpXUTtFQUNFO0FoRnFqV1Y7QWdGbGpXWTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhGb2pXZDtBZTcwV0k7RWlFK09BO0lBaURJO0lBQ0E7RWhGaWpXTjtBQUNGO0FlbjFXSTtFaUU2QkY7SUEwUUk7SUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BQUE7SUEyQkE7SUFDQTtJQUNBOzs7O09BQUE7SUFNQTs7Ozs7TUFBQTtJQU1BO0VoRjRpV0o7RWdGMWlXSTtJQUNFO0lBQ0E7K0RBQUE7SUFFQTtFaEY0aVdOO0VnRnppV0k7SUFDRTtFaEYyaVdOO0FBQ0Y7QWUzM1dJO0VpRWdCRjtJQW9VSTtJQUNBO0lBQ0E7SUFDQTtFaEYyaVdKO0VnRnhpV007SUFDRTtFaEYwaVdSO0VnRnJpV007SUFDRTtFaEZ1aVdSO0VnRm5pV0k7SUFDRTtFaEZxaVdOO0VnRm5pV007SUFDRTtJQUNBO0lBQ0E7RWhGcWlXUjtFZ0ZsaVdNO0lBQ0U7RWhGb2lXUjtFZ0ZoaVdJO0lBQ0U7SUFDQTtFaEZraVdOO0VnRjloV007SUFDRTtFaEZnaVdSO0FBQ0Y7QWdGM2hXRTtFQUNFO0FoRjZoV0o7QWU5NVdJO0VpRWdZRjtJQUlJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFaEY4aFdKO0VnRjVoV0k7SUFDRTtFaEY4aFdOO0VnRjFoV007SUFDRTtFaEY0aFdSO0FBQ0Y7O0FnRnRoV0E7Ozs7OztFQUFBO0FDcGVBOzs7O0NBQUE7QWxFNEVJO0VrRXRFSjtJQUVJO0VqRm1nWEY7QUFDRjs7QWtGNWdYQTs7OztDQUFBO0FBTUU7RUFDRTtBbEY4Z1hKO0FrRjNnWEU7RUFDRTtFQUNBO21EQUFBO0VBRUE7QWxGNmdYSjtBa0YxZ1hNO0VBQ0U7RUFDQTtFQUNBLFdoRjRDWTtFZ0YzQ1osWWhGMkNZO0VnRjFDWjtFQUNBO0VBQ0E7QWxGNGdYUjtBa0Z0Z1hRO0VBQ0U7RUFDQTs7OztJQUFBO0VBS0E7QWxGd2dYVjtBa0ZyZ1hVO0VBQ0U7RUFDQTtBbEZ1Z1haOztBZXIrV0k7RW1FMUJKOztJQUdJO0VsRmtnWEY7RWtGaGdYRTs7SUFDRTtFbEZtZ1hKO0FBQ0Y7O0FrRjcvV0k7RUFDRTtBbEZnZ1hOO0FrRjkvV007RUFDRTtFQUNBO0VBQ0E7RUFDQTtBbEZnZ1hSO0FrRjUvV1E7RUFDRTtBbEY4L1dWO0FlNy9XSTtFbUVJSTtJQUNFO0VsRjQvV1I7QUFDRjs7QW1GOWtYQTs7Ozs7Q0FBQTtBQU9BOzs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQWdCQTtFQUNFO0VBQ0E7QW5GZ2xYRjs7QW1GN2tYQTtFQUNFOzt3Q0FBQTtFQWlEQTs7Ozs7Ozs7Ozs7SUFBQTtBbkY2aVhGO0FtRjNsWEU7RUFLRTs7Ozs7O0lBQUE7RUFhQTs7OztJQUFBO0FuRnVsWEo7QW1GeG1YSTtFQUNFO0FuRjBtWE47QWU3a1hJO0VvRWxCRTtJQUNFO0VuRmttWE47QUFDRjtBbUYxbFhJO0VBQ0U7QW5GNGxYTjtBZXJsWEk7RW9FRkU7O0lBRUk7RW5GMGxYUjtBQUNGO0FtRnhsWFE7O0VBQ0U7b0VBQUE7RUFFQTtFQUNBO0VBQ0E7RUFDQSxnQmpGR2U7QUZ3bFh6QjtBbUZ6a1hFO0VBQ0U7RUFDQTtBbkYya1hKO0FtRnZrWEk7RUFDRTtFQUNBO0VBQ0E7QW5GeWtYTjtBbUZ2a1hNO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkZ5a1hSO0FtRnBrWE07RUFDRTtBbkZza1hSO0FtRmprWE07RUFDRTtBbkZta1hSO0FtRjlqWEU7RUFDRTtBbkZna1hKO0FlN25YSTtFb0U0REY7SUFJSTtJQUNBO0VuRmlrWEo7QUFDRjtBZXRuWEk7RW9FdURBO0lBRUk7SUFDQTtFbkZpa1hOO0FBQ0Y7QW1GOWpYUTtFQUNFO0FuRmdrWFY7QW1GMWpYRTtFQUNFLGdCbEYvSG1CO0FEMnJYdkI7QW1GMWpYSTtFQUNFO0VBQ0EsWWpGd0VlO0VpRnZFZjtFQUNBO0FuRjRqWE47QWV4b1hJO0VvRXdFQTtJQU9JO0VuRjZqWE47QUFDRjtBZTFwWEk7RW9FaUdFO0lBRUk7RW5GMmpYUjtBQUNGO0FlL3BYSTtFb0V5R0U7SUFFSTtFbkZ3alhSO0FBQ0Y7QWVwcVhJO0VvRWlIRTtJQUVJO0VuRnFqWFI7QUFDRjtBZXpxWEk7RW9Fd0hBO0lBRUk7RW5GbWpYTjtBQUNGO0FtRjdpWE07RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtBbkY4aVhSO0FtRjNpWE07RUFDRTtBbkY2aVhSO0FtRjFpWE07RUFDRTtFQUNBO0FuRjRpWFI7QWV2clhJO0VvRWdKRjtJQUVHO0VuRnlpWEg7QUFDRjs7QW9GeHdYQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FBQTtBQXlCQTs4RUFBQTtBQUVBO0VBQ0U7RUFDQTtFQUNBO0FwRjB3WEY7O0FvRnZ3WEE7Ozs7Ozs7OztDQUFBO0FBVUE7Ozs7Ozs7OztFQUFBO0FBbUNBOzs7Ozs7aUZBQUE7QUFPQTs7O0VBR0U7RUFDQTtBcEZpdlhGOztBb0Y5dVhBOzs4QkFBQTtBQU1NO0VBQWlEO0FwRit1WHZEOztBb0Y5dVhNO0VBQWlEO0FwRmt2WHZEOztBb0ZudlhNO0VBQWlEO0FwRnV2WHZEOztBb0Z0dlhNO0VBQWlEO0FwRjB2WHZEOztBb0YzdlhNO0VBQWlEO0FwRit2WHZEOztBb0Y5dlhNO0VBQWlEO0FwRmt3WHZEOztBb0Zud1hNO0VBQWlEO0FwRnV3WHZEOztBb0Z0d1hNO0VBQWlEO0FwRjB3WHZEOztBb0Yzd1hNO0VBQWlEO0FwRit3WHZEOztBb0Y5d1hNO0VBQWlEO0FwRmt4WHZEOztBb0ZueFhNO0VBQWlEO0FwRnV4WHZEOztBb0Z0eFhNO0VBQWlEO0FwRjB4WHZEOztBb0YzeFhNO0VBQWlEO0FwRit4WHZEOztBb0Y5eFhNO0VBQWlEO0FwRmt5WHZEOztBb0ZueVhNO0VBQWlEO0FwRnV5WHZEOztBb0Z0eVhNO0VBQWlEO0FwRjB5WHZEOztBb0YzeVhNO0VBQWlEO0FwRit5WHZEOztBb0Y5eVhNO0VBQWlEO0FwRmt6WHZEOztBb0ZuelhNO0VBQWlEO0FwRnV6WHZEOztBb0Z0elhNO0VBQWlEO0FwRjB6WHZEOztBb0YzelhNO0VBQWlEO0FwRit6WHZEOztBb0Y5elhNO0VBQWlEO0FwRmswWHZEOztBb0ZuMFhNO0VBQWlEO0FwRnUwWHZEOztBb0Z0MFhNO0VBQWlEO0FwRjAwWHZEOztBb0YzMFhNO0VBQWlEO0FwRiswWHZEOztBb0Y5MFhNO0VBQWlEO0FwRmsxWHZEOztBb0ZuMVhNO0VBQWlEO0FwRnUxWHZEOztBb0Z0MVhNO0VBQWlEO0FwRjAxWHZEOztBb0YzMVhNO0VBQWlEO0FwRisxWHZEOztBb0Y5MVhNO0VBQWlEO0FwRmsyWHZEOztBb0ZuMlhNO0VBQWlEO0FwRnUyWHZEOztBb0Z0MlhNO0VBQWlEO0FwRjAyWHZEOztBb0YzMlhNO0VBQWlEO0FwRisyWHZEOztBb0Y5MlhNO0VBQWlEO0FwRmszWHZEOztBb0ZuM1hNO0VBQWlEO0FwRnUzWHZEOztBb0Z0M1hNO0VBQWlEO0FwRjAzWHZEOztBb0YzM1hNO0VBQWlEO0FwRiszWHZEOztBb0Y5M1hNO0VBQWlEO0FwRms0WHZEOztBb0ZuNFhNO0VBQWlEO0FwRnU0WHZEOztBb0Z0NFhNO0VBQWlEO0FwRjA0WHZEOztBb0YzNFhNO0VBQWlEO0FwRis0WHZEOztBb0Y5NFhNO0VBQWlEO0FwRms1WHZEOztBb0ZuNVhNO0VBQWlEO0FwRnU1WHZEOztBb0Z0NVhNO0VBQWlEO0FwRjA1WHZEOztBb0YzNVhNO0VBQWlEO0FwRis1WHZEOztBb0Y5NVhNO0VBQWlEO0FwRms2WHZEOztBb0ZuNlhNO0VBQWlEO0FwRnU2WHZEOztBb0Z0NlhNO0VBQWlEO0FwRjA2WHZEOztBb0YzNlhNO0VBQWlEO0FwRis2WHZEOztBb0Y5NlhNO0VBQWlEO0FwRms3WHZEOztBb0ZuN1hNO0VBQWlEO0FwRnU3WHZEOztBb0Z0N1hNO0VBQWlEO0FwRjA3WHZEOztBb0YzN1hNO0VBQWlEO0FwRis3WHZEOztBb0Y5N1hNO0VBQWlEO0FwRms4WHZEOztBb0ZuOFhNO0VBQWlEO0FwRnU4WHZEOztBb0Z0OFhNO0VBQWlEO0FwRjA4WHZEOztBb0YzOFhNO0VBQWlEO0FwRis4WHZEOztBb0Y5OFhNO0VBQWlEO0FwRms5WHZEOztBb0ZuOVhNO0VBQWlEO0FwRnU5WHZEOztBb0Z0OVhNO0VBQWlEO0FwRjA5WHZEOztBb0YzOVhNO0VBQWlEO0FwRis5WHZEOztBb0Y5OVhNO0VBQWlEO0FwRmsrWHZEOztBb0ZuK1hNO0VBQWlEO0FwRnUrWHZEOztBb0Z0K1hNO0VBQWlEO0FwRjArWHZEOztBb0YzK1hNO0VBQWlEO0FwRisrWHZEOztBb0Y5K1hNO0VBQWlEO0FwRmsvWHZEOztBb0ZuL1hNO0VBQWlEO0FwRnUvWHZEOztBb0Z0L1hNO0VBQWlEO0FwRjAvWHZEOztBb0YzL1hNO0VBQWlEO0FwRisvWHZEOztBb0Y5L1hNO0VBQWlEO0FwRmtnWXZEOztBb0ZuZ1lNO0VBQWlEO0FwRnVnWXZEOztBb0Z0Z1lNO0VBQWlEO0FwRjBnWXZEOztBb0YzZ1lNO0VBQWlEO0FwRitnWXZEOztBb0Y5Z1lNO0VBQWlEO0FwRmtoWXZEOztBb0ZuaFlNO0VBQWlEO0FwRnVoWXZEOztBb0Z0aFlNO0VBQWlEO0FwRjBoWXZEOztBb0YzaFlNO0VBQWlEO0FwRitoWXZEOztBb0Y5aFlNO0VBQWlEO0FwRmtpWXZEOztBb0ZuaVlNO0VBQWlEO0FwRnVpWXZEOztBb0Z0aVlNO0VBQWlEO0FwRjBpWXZEOztBb0YzaVlNO0VBQWlEO0FwRitpWXZEOztBb0Y5aVlNO0VBQWlEO0FwRmtqWXZEOztBb0ZuallNO0VBQWlEO0FwRnVqWXZEOztBb0Z0allNO0VBQWlEO0FwRjBqWXZEOztBb0YzallNO0VBQWlEO0FwRitqWXZEOztBb0Y5allNO0VBQWlEO0FwRmtrWXZEOztBb0Zua1lNO0VBQWlEO0FwRnVrWXZEOztBb0Z0a1lNO0VBQWlEO0FwRjBrWXZEOztBb0Yza1lNO0VBQWlEO0FwRitrWXZEOztBb0Y5a1lNO0VBQWlEO0FwRmtsWXZEOztBb0ZubFlNO0VBQWlEO0FwRnVsWXZEOztBb0Z0bFlNO0VBQWlEO0FwRjBsWXZEOztBb0YzbFlNO0VBQWlEO0FwRitsWXZEOztBb0Y5bFlNO0VBQWlEO0FwRmttWXZEOztBb0ZubVlNO0VBQWlEO0FwRnVtWXZEOztBb0Z0bVlNO0VBQWlEO0FwRjBtWXZEOztBb0YzbVlNO0VBQWlEO0FwRittWXZEOztBb0Y5bVlNO0VBQWlEO0FwRmtuWXZEOztBb0Y3bVlBOzs7a0VBQUE7QUFPTTtFQUFpRDtBcEY4bVl2RDs7QW9GN21ZTTtFQUFpRDtBcEZpbll2RDs7QW9GbG5ZTTtFQUFpRDtBcEZzbll2RDs7QW9Gcm5ZTTtFQUFpRDtBcEZ5bll2RDs7QW9GMW5ZTTtFQUFpRDtBcEY4bll2RDs7QW9GN25ZTTtFQUFpRDtBcEZpb1l2RDs7QW9GbG9ZTTtFQUFpRDtBcEZzb1l2RDs7QW9Gcm9ZTTtFQUFpRDtBcEZ5b1l2RDs7QW9GMW9ZTTtFQUFpRDtBcEY4b1l2RDs7QW9GN29ZTTtFQUFpRDtBcEZpcFl2RDs7QW9GbHBZTTtFQUFpRDtBcEZzcFl2RDs7QW9GcnBZTTtFQUFpRDtBcEZ5cFl2RDs7QW9GMXBZTTtFQUFpRDtBcEY4cFl2RDs7QW9GN3BZTTtFQUFpRDtBcEZpcVl2RDs7QW9GbHFZTTtFQUFpRDtBcEZzcVl2RDs7QW9GcnFZTTtFQUFpRDtBcEZ5cVl2RDs7QW9GMXFZTTtFQUFpRDtBcEY4cVl2RDs7QW9GN3FZTTtFQUFpRDtBcEZpcll2RDs7QW9GbHJZTTtFQUFpRDtBcEZzcll2RDs7QW9GcnJZTTtFQUFpRDtBcEZ5cll2RDs7QW9GMXJZTTtFQUFpRDtBcEY4cll2RDs7QW9GN3JZTTtFQUFpRDtBcEZpc1l2RDs7QW9GbHNZTTtFQUFpRDtBcEZzc1l2RDs7QW9GcnNZTTtFQUFpRDtBcEZ5c1l2RDs7QW9GMXNZTTtFQUFpRDtBcEY4c1l2RDs7QW9GN3NZTTtFQUFpRDtBcEZpdFl2RDs7QW9GbHRZTTtFQUFpRDtBcEZzdFl2RDs7QW9GcnRZTTtFQUFpRDtBcEZ5dFl2RDs7QW9GMXRZTTtFQUFpRDtBcEY4dFl2RDs7QW9GN3RZTTtFQUFpRDtBcEZpdVl2RDs7QW9GbHVZTTtFQUFpRDtBcEZzdVl2RDs7QW9GcnVZTTtFQUFpRDtBcEZ5dVl2RDs7QW9GMXVZTTtFQUFpRDtBcEY4dVl2RDs7QW9GN3VZTTtFQUFpRDtBcEZpdll2RDs7QW9GbHZZTTtFQUFpRDtBcEZzdll2RDs7QW9GcnZZTTtFQUFpRDtBcEZ5dll2RDs7QW9GMXZZTTtFQUFpRDtBcEY4dll2RDs7QW9GN3ZZTTtFQUFpRDtBcEZpd1l2RDs7QW9GbHdZTTtFQUFpRDtBcEZzd1l2RDs7QW9GcndZTTtFQUFpRDtBcEZ5d1l2RDs7QW9GMXdZTTtFQUFpRDtBcEY4d1l2RDs7QW9GN3dZTTtFQUFpRDtBcEZpeFl2RDs7QW9GbHhZTTtFQUFpRDtBcEZzeFl2RDs7QW9GcnhZTTtFQUFpRDtBcEZ5eFl2RDs7QW9GcHhZQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VFQUFBO0FBc0NBO0VBQ0U7RUFDQTtFQUVBOzs7Ozs7Ozs7Ozs7SUFBQTtFQWFBO0VBQ0E7QXBGa3hZRjs7QW9GL3dZQTs7Ozt1RUFBQTtBQUtBO0VBQ0U7QXBGa3hZRjs7QW9GL3dZQTtBQUNBO0VBQ0U7QXBGa3hZRjs7QW9GL3dZQTs7Ozs7aURBQUE7QUFNQTtFQUNFO0FwRmt4WUY7O0FvRi93WUE7Ozs7OzREQUFBO0FBT0U7RUFDRTtBcEZpeFlKOztBb0Y5d1lFO0VBQ0U7QXBGaXhZSjs7QW9GdHhZRTtFQUNFO0FwRnl4WUo7O0FvRnR4WUU7RUFDRTtBcEZ5eFlKOztBb0Y5eFlFO0VBQ0U7QXBGaXlZSjs7QW9GOXhZRTtFQUNFO0FwRml5WUo7O0FvRnR5WUU7RUFDRTtBcEZ5eVlKOztBb0Z0eVlFO0VBQ0U7QXBGeXlZSjs7QW9GOXlZRTtFQUNFO0FwRml6WUo7O0FvRjl5WUU7RUFDRTtBcEZpellKOztBb0Z0ellFO0VBQ0U7QXBGeXpZSjs7QW9GdHpZRTtFQUNFO0FwRnl6WUo7O0FvRjl6WUU7RUFDRTtBcEZpMFlKOztBb0Y5ellFO0VBQ0U7QXBGaTBZSjs7QW9GdDBZRTtFQUNFO0FwRnkwWUo7O0FvRnQwWUU7RUFDRTtBcEZ5MFlKOztBb0Y5MFlFO0VBQ0U7QXBGaTFZSjs7QW9GOTBZRTtFQUNFO0FwRmkxWUo7O0FvRnQxWUU7RUFDRTtBcEZ5MVlKOztBb0Z0MVlFO0VBQ0U7QXBGeTFZSjs7QW9GOTFZRTtFQUNFO0FwRmkyWUo7O0FvRjkxWUU7RUFDRTtBcEZpMllKOztBb0Z0MllFO0VBQ0U7QXBGeTJZSjs7QW9GdDJZRTtFQUNFO0FwRnkyWUo7O0FvRjkyWUU7RUFDRTtBcEZpM1lKOztBb0Y5MllFO0VBQ0U7QXBGaTNZSjs7QW9GdDNZRTtFQUNFO0FwRnkzWUo7O0FvRnQzWUU7RUFDRTtBcEZ5M1lKOztBb0ZyM1lBOzs7Ozs7OENBQUE7QUFPQTtFQUNFO0FwRnczWUY7O0FvRnIzWUE7RUFDRTtBcEZ3M1lGOztBb0ZyM1lBOzs7Ozs7Ozs7Ozs7Ozs7O3VFQUFBO0FBa0JBO0FBQ0E7RUFDRTtBcEZ1M1lGOztBb0ZwM1lBO0VBQ0U7QXBGdTNZRjs7QW9GcDNZQTs7Ozs7Ozs7RUFBQTtBQVNBOztFQUVFO0FwRnUzWUY7O0FvRnAzWUE7O0VBRUU7QXBGdTNZRjs7QW9GcDNZQTs7Ozs7Ozs7Ozs7Ozs7Ozs7dUVBQUE7QUFrQkE7RUFDRTtBcEZ1M1lGOztBQWpvWkE7OzhCQUFBO0FxRjlCQTs7OztDQUFBO0FBTUE7RUFDRTtBckZvcVpGO0FxRmxxWkU7RUFDRTtBckZvcVpKO0FxRmpxWkU7RUFDRTtBckZtcVpKO0FxRmpxWkk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyRm1xWk47QXFGL3BaRTs7RUFFRSxXbkZ5S21DO0VtRnhLbkMsWW5Gd0ttQztFbUZ2S25DO0VBQ0E7RUFDQSxhbkZQYztFbUZRZDtBckZpcVpKO0FxRi9wWkk7O0VBQ0U7QXJGa3FaTjtBZXpuWkk7RXNFbkRGOztJQWNJO0VyRm1xWko7QUFDRjtBcUZocVpFO0VBQ0U7QXJGa3FaSjtBcUZocVpJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckZrcVpOO0FxRjlwWkU7RUFDRTtBckZncVpKO0FxRjdwWkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBckYrcFpKO0FxRjdwWkk7RUFDRTtBckYrcFpOO0FxRjVwWkk7RUFDRSxXbkZnSW9CO0VtRi9IcEIsWW5GK0hvQjtBRitoWjFCO0FxRjNwWlE7RUFDRTtFQUNBLFduRjBIZ0I7RW1GekhoQixZbkZ5SGdCO0VtRnhIaEI7RUFDQTtFQUNBO0FyRjZwWlY7QXFGdnBaVTtFQUNFLFduRmdIcUI7RW1GL0dyQixZbkYrR3FCO0VtRjlHckI7RUFDQTtBckZ5cFpaO0FxRmxwWkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBckZvcFpKO0FxRmxwWkk7O0VBRUU7RUFDQTtFQUNBLFduRjZGc0M7RW1GNUZ0QztFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyRm9wWk47QXFGaHBaTTtFQUNFO0FyRmtwWlI7QXFGN29aTTtFQUNFO0FyRitvWlI7O0FxRnpvWkE7Ozs7Ozs7Q0FBQTtBQVNFOztFQUVFO0FyRjJvWko7O0FzRnZ4WkE7Ozs7Q0FBQTtBQU9FO0VBRUU7RUFDQTtFQUNBLG1CL0UwV0s7QVA2NllUOztBdUZseVpBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQUFBO0FBK0JBOztFQUVFOzs7Ozs7OztJQUFBO0VBY0E7Ozs7SUFBQTtFQVdBOzs7Ozs7Ozs7SUFBQTtFQVVBO0VBQ0E7RUFrQkE7OztJQUFBO0F2RjJ3WkY7QXVGeHpaRTs7RUFDRTtFQUNBO0F2RjJ6Wko7QXVGbnpaRTs7Ozs7O0VBQ0U7RUFDQTtFQUNBO0F2RjB6Wko7QXVGMXlaRTs7RUFDRTtFQUNBO0VBQ0E7QXZGNnlaSjtBdUYzeVpJOztFQUNFO0VBQ0E7QXZGOHlaTjtBdUY1eVpNOztFQUNFO0VBQ0E7QXZGK3laUjtBdUZ0eVpFOztFQUNFO0F2Rnl5Wko7O0F3RnI0WkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQUFBO0FBcURBOztFQUFBO0FBR0E7OztFQUdFO0VBQ0E7RUFDQSxXdEZxRW9CO0VzRnBFcEIsWXRGb0VvQjtFc0ZuRXBCO0VBQ0E7OzJDQUFBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtnQ0FBQTtFQUVBO0VBQ0E7QXhGdTRaRjtBd0ZuNFpFOzs7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEZ1NFpKO0F3RnA0WkU7Ozs7O0VBRUU7RUFDQSw2Q3RGOENnQjtFc0Y3Q2hCO0F4Rnk0Wko7QXdGdDRaRTs7O0VBQ0Usc0R0RnpDZ0I7RXNGMENoQixtQnRGekN1QjtBRm03WjNCO0F3RnY0WkU7RUEvQ0Y7OztJQWdESTtFeEY0NFpGO0FBQ0Y7O0F3Rno0WkE7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBZ0JBOzs7RUFHRTtFQUNBO0VBQ0E7RUFDQTtBeEY0NFpGOztBd0Z6NFpBOzs7Ozs7Ozs7RUFBQTtBQVVBO0VBQ0U7RUFDQTtFQUNBO0F4RjQ0WkY7O0F3Rno0WkE7Ozs7O0VBQUE7QUFNQTtFQUNFO0VBQ0E7QXhGNDRaRjs7QUFuZ2FBOzs0QkFBQTtBeUZ0Q0E7Ozs7Q0FBQTtBQU9FO0VBQ0U7QXpGNmlhSjs7QTBGcmphQTs7OztDQUFBO0FBT0U7RUFDRTtBMUZzamFKO0EwRm5qYU07RUFDRTtBMUZxamFSO0EwRm5qYVE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBMUZxamFWO0FleGdhSTtFMkVyREE7SUFhSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0UxRm9qYU47QUFDRjs7QTJGbmxhQTs7Ozs7Ozs7Ozs7Ozs7OztDQUFBO0FBa0JBO0VBQ0U7Ozs7Ozs7Ozs7Ozs7O0lBQUE7QTNGbW1hRjtBMkZwbGFFO0VBQ0U7RUFDQTtFQVVBOzs7Ozs7SUFBQTtFQXNCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBO0VBZ0RBOzs7SUFBQTtBM0ZxaWFKO0FlN2thSTtFNEUxQ0Y7SUFLSTtFM0ZzbmFKO0FBQ0Y7QWVsbGFJO0U0RTFDRjtJQVNJO0UzRnVuYUo7QUFDRjtBMkY5bWFJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNGZ25hTjtBMkY3bWFJO0VBQ0U7RUFDQTtBM0YrbWFOO0EyRnhsYUk7RUFDRTtFQU9BO0VBRUE7Ozs7SUFBQTtBM0Z1bGFOO0EyRmxsYU07RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNGb2xhUjtBMkYza2FNO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QTNGNmthUjtBMkZ2a2FRO0VBQ0UsZ0J6RjhCNkI7QUYyaWF2QztBMkYvamFVO0VBQ0UsYXpGdkhNO0FGd3JhbEI7QTJGMWphRTtFQUNFOztJQUVFO0UzRjRqYUo7QUFDRjs7QTRGdHRhQTs7OztDQUFBO0FBT0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E1RnV0YUo7QTRGcnRhSTtFQUNFO0VBQ0E7QTVGdXRhTjs7QTZGdnVhQTs7OztDQUFBO0FBT0U7RUFDRTtFQUVBO0E3RnV1YUo7QWVscmFJO0U4RXBEQTtJQUVJO0lBQ0E7RTdGd3VhTjtBQUNGO0FlM3FhSTtFOEV6REY7SUFFSTtJQUNBO0U3RnN1YUo7QUFDRjs7QTZGbHVhQTs7Ozs7Ozs7Ozs7Ozs7O0NBQUE7QUFpQkE7RUFDRTs7OztJQUFBO0VBVUE7OztJQUFBO0E3Rmt1YUY7QTZGdnVhRTtFQUNFO0VBQ0E7QTdGeXVhSjtBNkZsdWFFO0VBQ0U7QTdGb3VhSjs7QTZGL3RhRTtFQUNFO0VBQ0E7QTdGa3VhSjtBNkZodWFJO0VBQ0U7Ozs7SUFBQTtFQUtBO0E3Rmt1YU47O0E2Rjd0YUE7Ozs7Ozs7OztDQUFBO0FBV0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3Rit0YUY7O0E2RjV0YUE7Ozs7O0VBQUE7QUFNQTtFQUNFO0E3Rit0YUY7O0E2RjV0YUE7Ozs7O0NBQUE7QUFPQTtFQUNFO0VBd0RBOzs7Ozs7Ozs7OztHQUFBO0VBZ0JBOzs7Ozs7SUFBQTtBN0Z5cWFGO0E2Rmh2YUU7RUFDRTtFQUNBO0VBRUE7Ozs7SUFBQTtFQVVBOzs7Ozs7SUFBQTtFQVdBOzs7Ozs7Ozs7SUFBQTtFQWlCQTs7Ozs7OztJQUFBO0E3Rnd1YUo7QWU1emFJO0U4RTBDRjtJQVVJO0lBQ0E7RTdGNHdhSjtBQUNGO0E2Rm53YUk7RUFDRTtBN0Zxd2FOO0E2Rnh2YUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBN0YwdmFOO0E2Ri91YUk7RUFDRTtBN0ZpdmFOO0E2Rmp1YUU7RUFDRTtBN0ZtdWFKO0E2Rnp0YUU7RWxCeEtBO0VBQ0E7Ozs7SUFBQTtFQUtBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7OztJQUFBO0VBSUE7RUFPQTtFQUVBOzs7OztJQUFBO0VrQmtKRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdGZ3ZhSjtBMkU5NGFFO0VBQ0Usc0R6RVlnQjtFeUVYaEIsbUJ6RVl1QjtBRm80YTNCO0EyRXI0YUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0V1NGFKO0EyRXA0YUU7RUFFRTtBM0VxNGFKO0EyRW40YUk7RUFDRTtBM0VxNGFOOztBOEY5OGFBOzs7Ozs7Ozs7Ozs7O0NBQUE7QUFnQkU7RUFDRTtFQWNBOzs7O0lBQUE7RUFhQTtBOUYwN2FKO0E4Rm45YUk7RUFDRTtBOUZxOWFOO0FlMTZhSTtFK0U1Q0E7SUFJSTtFOUZzOWFOO0FBQ0Y7QWUvNmFJO0UrRTVDQTtJQVFJO0U5RnU5YU47QUFDRjtBOEYvOGFJO0VBQ0U7QTlGaTlhTjtBOEYvOGFNO0VBQ0U7QTlGaTlhUjtBOEY1OGFJO0VBQ0U7QTlGODhhTjs7QStGNS9hQTs7OztDQUFBO0FBTUE7RUFLRTs7Ozs7O0lBQUE7QS9GZ2diRjtBK0ZwZ2JFO0VBQ0U7RUFDQSxtQnhGNFdLO0FQMHBhVDs7QWdHL2diQTs7OztDQUFBO0FBT0U7RUFDRTtBaEdnaGJKO0FnRzlnYkk7RUFDRTtBaEdnaGJOOztBaUczaGJBOzs7O0NBQUE7QUFPRTtFQUNFO0FqRzRoYko7O0FrR3BpYkE7Ozs7Q0FBQTtBQVNNO0VBQ0U7RUFDQTtBbEdtaWJSO0FlbCthSTtFbUY1REU7SUFDRTtJQUNBLG9CM0ZtV0M7RVA4cmFQO0FBQ0Y7O0FtR3BqYkE7Ozs7Q0FBQTtBQU9FO0VBQ0U7QW5HcWpiSjtBbUduamJJOztFQUVFO0VBQ0E7QW5HcWpiTjtBZW5nYkk7RW9GckRBOztJQU1JO0VuR3VqYk47QUFDRjtBbUdwamJJO0VBQ0U7QW5Hc2piTjtBbUduamJJO0VBQ0U7QW5HcWpiTjtBbUduamJNO0VBQ0U7RUFDQTtBbkdxamJSO0FtR25qYlE7RUFDRSxpQmpHdUwrQjtBRjgzYXpDO0FtR2xqYlE7RUFDRTtBbkdvamJWO0FtR2pqYlE7RUFDRTtBbkdtamJWO0FtRzlpYkk7RUFDRTtBbkdnamJOO0FlL2hiSTtFb0Z4REY7SUEyQ0k7RW5HZ2piSjtBQUNGOztBb0dubWJBOzs7Ozs7Ozs7OztDQUFBO0FBZ0JFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBHa21iSjtBb0cxbGJFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEc0bGJKO0FvR3psYkU7RUFDRTtBcEcybGJKO0FvR3ZsYkk7RUFJRTtFQUNBO0VBQ0E7QXBHc2xiTjtBb0dwbGJNO0VBQ0U7QXBHc2xiUjtBb0dobGJNO0VBQ0U7RUFDQTtFQUNBO0FwR2tsYlI7QW9HN2tiSTtFQUNFO0FwRytrYk47QW9HM2tiSTtFQUNFO0VBQ0E7RUFDQTtBcEc2a2JOOztBcUd4cGJBOzs7Ozs7Ozs7Ozs7O0NBQUE7QUFnQkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJHeXBiSjs7QXFHcHBiQTtFQUNFO0VBQ0E7RUFDQTtBckd1cGJGO0FxR3JwYkU7RUFDRTtFQUNBO0VBQ0EsUzlGa1ZLO0U4RmpWTCxtQjlGaVZLO0FQczBhVDtBcUdycGJJO0VBQ0U7QXJHdXBiTjtBcUducGJFO0VBQ0U7RUFDQTtFQUNBO0FyR3FwYko7QXFHbnBiSTtFQUNFO0VBQ0E7QXJHcXBiTjtBcUdqcGJFO0VBQ0U7RUFFQTs7OztJQUFBO0FyR3NwYko7QXFHanBiSTtFQUNFO0VBQ0E7QXJHbXBiTjs7QXFHem9iQTtFQUNFO0FyRzRvYkY7O0FxR3pvYkE7RUFDRTtFQUNBO0VBT0E7O29EQUFBO0FyR3dvYkY7QXFHN29iRTtFQUNFO0VBQ0E7QXJHK29iSjtBcUd6b2JFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QXJHMm9iSjtBcUd4b2JFO0VBQ0U7QXJHMG9iSjtBcUd2b2JFOzs7Ozs7O0VBT0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJHeW9iSjtBcUd2b2JJOzs7Ozs7O0VBQ0U7RUFDQTtBckcrb2JOO0FxRzVvYkk7Ozs7Ozs7RUFDRTtBckdvcGJOO0FxR2hwYkU7RUFDRTtFQUNBO0FyR2twYko7QXFHL29iRTtFQUNFO0VBQ0E7QXJHaXBiSjtBcUcxb2JFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyRzRvYko7QXFHMW9iSTtFQUVFO0VBQ0E7QXJHMm9iTjtBcUd4b2JJO0VBQ0U7RUFDQTtBckcwb2JOOztBc0d6eWJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBQUE7QUF3QkE7Ozs7RUFBQTtBQU9BO0VBQ0U7RUFDQTtFQUNBLDhDQUx1QjtFQU12QjtFQUNBO0VBRUE7Ozs7SUFBQTtFQUtBO0VBRUE7Ozs7SUFBQTtBdEcyeWJGO0FzR3R5YkU7RUFDRTtBdEd3eWJKOztBdUczMWJBOzs7Ozs7Ozs7Ozs7OztDQUFBO0FBZ0JBO0VBQ0U7Ozs7Ozs7Ozs7SUFBQTtFQVdBO0VBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUE7RUFrQkE7RUFNQTtBdkd1MWJGO0FlajBiSTtFd0Y1REo7SUFtQ0k7RXZHODFiRjtBQUNGO0F1RzExYkU7RUFDRTtFQUNBO0VBQ0E7RUFFQTs7Ozs7SUFBQTtFQU1BO0VBQ0E7RUFrQkE7Ozs7SUFBQTtBdkc4MGJKO0F1RzkxYkk7RUFDRTtFQUNBO0VBQ0E7QXZHZzJiTjtBdUc5MWJNO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxXckdzQ2lCO0VxR3JDakIsWXJHc0NrQjtFcUdyQ2xCO0F2R2cyYlI7QWV0MmJJO0V3RmdCRTtJQUNFO0V2R3kxYk47QUFDRjs7QUE5M2JBOzswQkFBQTtBd0d6REE7Ozs7Q0FBQTtBQVFJO0VBQ0U7QXhHMDdiTjs7QXlHbjhiQTs7OztDQUFBO0FBTUE7RUFDRTtBekdxOGJGO0F5R244YkU7RUFDRTtFQUNBO0VBQ0E7QXpHcThiSjs7QTBHajliQTs7OztDQUFBO0FBTUE7RUFDRTtBMUdtOWJGO0EwR2o5YkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBMUdtOWJKO0FlcDViSTtFMkZuRUY7SUFPSTtJQUNBO0lBQ0E7RTFHbzliSjtBQUNGO0FlMzViSTtFMkZuRUY7SUFhSTtJQUNBO0lBQ0E7RTFHcTliSjtBQUNGO0EwR2o5Ykk7RUFDRTtBMUdtOWJOO0FlcjZiSTtFMkYxQ0Y7SUFFSTtJQUNBO0lBQ0E7RTFHaTliSjtBQUNGO0FlNTZiSTtFMkZsQ0Y7SUFFSTtFMUdnOWJKO0FBQ0Y7QWVqN2JJO0UyRjVCRTtJQUVJO0lBQ0E7RTFHKzhiUjtBQUNGO0FldjdiSTtFMkZ0RUo7SUFvREk7SUFDQTtFMUc2OGJGO0FBQ0Y7O0EwR3g4Ykk7RUFDRTtBMUcyOGJOOztBMkc3Z2NBOzs7Ozs7Ozs7Ozs7O0NBQUE7QUFnQkU7RUFDRTtFQUNBO0EzRzhnY0o7QWVwOWJJO0U0RnREQTtJQUVJO0UzRzRnY047QUFDRjs7QTJHdmdjQTs7Ozs7OztFQUFBO0FBU0E7Ozs7Ozs7Ozs7RUFBQTtBQWNFOzs7RWhDekJBO0VBQ0E7Ozs7SUFBQTtFQUtBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7OztJQUFBO0VBSUE7RUFPQTtFQUVBOzs7OztJQUFBO0EzRStoY0Y7QTJFdGljRTs7O0VBQ0Usc0R6RVlnQjtFeUVYaEIsbUJ6RVl1QjtBRjhoYzNCO0EyRS9oY0U7OztFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzRW1pY0o7QTJFaGljRTs7Ozs7RUFFRTtBM0VxaWNKO0EyRW5pY0k7Ozs7O0VBQ0U7QTNFeWljTjtBMkd6amNFOzs7RWhDN0JBO0VBQ0E7Ozs7SUFBQTtFQUtBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7OztJQUFBO0VBSUE7RUFPQTtFQUVBOzs7OztJQUFBO0EzRXdsY0Y7QTJFL2xjRTs7O0VBQ0Usc0R6RVlnQjtFeUVYaEIsbUJ6RVl1QjtBRnVsYzNCO0EyRXhsY0U7OztFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzRTRsY0o7QTJFemxjRTs7Ozs7RUFFRTtBM0U4bGNKO0EyRTVsY0k7Ozs7O0VBQ0U7QTNFa21jTjs7QTJHN21jQTs7OztFQUFBO0FBS0E7RWhDdkNFO0VBQ0E7Ozs7SUFBQTtFQUtBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7OztJQUFBO0VBSUE7RUFPQTtFQUVBOzs7OztJQUFBO0EzRXFwY0Y7QTJFNXBjRTtFQUNFLHNEekVZZ0I7RXlFWGhCLG1CekVZdUI7QUZrcGMzQjtBMkVucGNFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNFcXBjSjtBMkVscGNFO0VBRUU7QTNFbXBjSjtBMkVqcGNJO0VBQ0U7QTNFbXBjTjs7QTJHcnBjQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUFrQ0U7Ozs7OztFaENkQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7SUFBQTtFQUlBO0VBT0E7QTNFZ3FjRjtBMkVycWNFOzs7Ozs7RUFDRSxzRHpFNUNnQjtFeUU2Q2hCLG1CekU1Q3VCO0FGd3RjM0I7QTJFcnFjRTs7Ozs7Ozs7Ozs7RUFFRSxpRHpFekRzQjtFeUUwRHRCO0EzRWdyY0o7O0EyR25yY0E7Ozs7RUFBQTtBQUtBO0VBQ0U7Ozs7Ozs7O0lBUUU7RTNHc3JjRjtBQUNGO0EyR25yY0E7Ozs7RUFBQTtBQUtBO0VBQ0U7RUFDQTtFQUNBO0EzR3FyY0Y7O0E0Rzd6Y0E7Ozs7Q0FBQTtBQU9FO0VBQ0U7QTVHOHpjSjtBNEczemNFO0VBQ0U7RUFDQTtBNUc2emNKO0FlOXZjSTtFNkY1REY7SUFFSTtFNUc0emNKO0FBQ0Y7O0E2Ry8wY0E7Ozs7Q0FBQTtBQU9FO0VBQ0U7RUFDQTtBN0dnMWNKO0E2RzkwY0k7RUFDRTtBN0dnMWNOO0E2RzkwY007O0VBRUU7RUFDQTtFQUNBO0E3R2cxY1I7QTZHOTBjUTs7RUFDRTtBN0dpMWNWO0FlMXhjSTtFOEY5REU7O0lBV0k7RTdHazFjUjtBQUNGO0E2Ry8wY007RUFDRTtBN0dpMWNSO0E2Ry8wY1E7RUFDRTtBN0dpMWNWO0E2RzcwY007RUFDRTtBN0crMGNSO0E2RzcwY1E7RUFDRTtBN0crMGNWO0E2RzMwY007RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3RzYwY1I7QTZHMzBjUTtFQUNFO0E3RzYwY1Y7QTZHMTBjUTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0c0MGNWO0E2R3IwY0k7RUFDRTtBN0d1MGNOO0E2R3IwY007O0VBRUU7QTdHdTBjUjtBNkdyMGNROztFQUNFO0E3R3cwY1Y7QWUvMGNJO0U4RkVFOztJQVNJO0U3R3kwY1I7QUFDRjtBZWwyY0k7RThGNEJFO0lBRUk7RTdHdzBjUjtBQUNGO0FldjJjSTtFOEZrQ0U7SUFFSTtFN0d1MGNSO0FBQ0Y7QWU1MmNJO0U4RndDRTs7SUFHSTtFN0dzMGNSO0FBQ0Y7QTZHaDBjVTs7RUFDRTtBN0dtMGNaOztBOEdyN2NBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBQUE7QUE4QkE7RUFDRTtBOUd1N2NGO0E4R3A3Y0k7RUFDRTtBOUdzN2NOO0E4R3A3Y007RUFDRTtBOUdzN2NSO0E4R243Y007RUFDRTtFQUNBLDZDdkc0Y3NCO0V1RzFjdEI7Ozs7OztJQUFBO0VBT0E7RUFZQTs7Ozs7Ozs7Ozs7SUFBQTtBOUdvN2NSO0E4Rzk3Y1E7Ozs7RUFJRTtFQUNBO0VBQ0E7RUFDQTtBOUdnOGNWO0E4R2o3Y1E7RUFDRTtBOUdtN2NWO0E4Ry82Y1U7RUFDRTtFQUNBO0E5R2k3Y1o7QThHNzZjUTtFQUNFO0VBQ0E7RUFZQTs7Ozs7SUFBQTtBOUd5NmNWO0E4R243Y1U7RUFDRTtFQUNBO0E5R3E3Y1o7QThHbjdjWTtFQUNFO0VBQ0E7QTlHcTdjZDtBOEczNmNVO0VBQ0U7QTlHNjZjWjs7QWUxOWNJO0UrRjJEUTtJQUNFO0U5R202Y1o7QUFDRjs7QStHL2hkQTs7OztDQUFBO0FBVVE7RUFDRTtFQUNBO0VBQ0E7RUFDQSxvQnhHZ3NCb0I7QVA2MWI5QjtBK0cxaGRRO0VBQ0U7QS9HNGhkVjtBK0d6aGRRO0VBQ0U7RUFDQTtFQUNBLG9CeEdzckJvQjtBUHEyYjlCO0ErR3ZoZFU7RUFDRTtBL0d5aGRaO0ErR3BoZFU7RUFDRTtBL0dzaGRaO0FlNytjSTtFZ0dwQ007SUFFSTtFL0dtaGRaO0FBQ0Y7QStHM2dkSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0EvRzZnZE47QStHemdkVTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0EvRzJnZFo7QStHdmdkWTtFQUNFO0VBQ0E7QS9HeWdkZDtBK0dqZ2RNO0VBQ0U7QS9HbWdkUjtBK0c5L2NFO0VBQ0U7QS9HZ2dkSjtBK0c5L2NJO0VBQ0U7RUFhQTs7Ozs7SUFBQTtBL0d5L2NOO0ErR3BnZE07RUFDRTtFQUNBO0EvR3NnZFI7QStHdi9jTTtFQUNFO0EvR3kvY1I7QStHdi9jUTtFQUNFO0EvR3kvY1Y7QWUzaGRJO0VnR3NDTTtJQUNFO0UvR3cvY1Y7RStHci9jUTtJQUNFO0UvR3UvY1Y7QUFDRjtBK0dsL2NJO0VBQ0U7QS9Hby9jTjs7QWdIbG5kQTs7Ozs7OztDQUFBO0FBU0E7RUFDRTtFQUNBO0FoSG9uZEY7QWdIbG5kRTtFQUNFO0VBQ0E7RUFDQTtFQUNBLFN6R29XSztFeUduV0w7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEhvbmRKO0FnSGxuZEk7RUFDRTtBaEhvbmROO0FnSGpuZEk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhIbW5kTjtBZ0g5bWRFO0VBQ0U7RUFDQTtBaEhnbmRKO0FnSDVtZEk7RUFDRTtBaEg4bWROO0FnSDVtZE07RUFDRTtBaEg4bWRSOztBaUgvcGRBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQUFBO0FBc0JBOzs7OztFQUFBO0FBY0E7Ozs7Ozs7OztFQUFBO0FBb0JBO0FBT0E7RUFxQkU7OztJQUFBO0VBd0NBOzs7Ozs7SUFBQTtFQW9CQTs7OztJQUFBO0VBb0RBOzs7Ozs7Ozs7OztJQUFBO0VBcUVBOzs7Ozs7Ozs7Ozs7Ozs7eUVBQUE7RUFnQkE7RUFpQ0E7Ozt5RUFBQTtFQStCQTs7Ozt5RUFBQTtFQVNBOzs7OztJQUFBO0VBdUJBOzs7O0lBQUE7QWpIZzVjRjtBaUhyc2RFO0VBQ0U7RUFDQTtFQUNBO0FqSHVzZEo7QWlIcHNkRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqSHNzZEo7QWlIL3JkRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakhpc2RKO0FpSDlyZEU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqSGdzZEo7QWlIN3JkRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FqSCtyZEo7QWlIM3JkSTtFQUNFO0FqSDZyZE47QWVodmRJO0VrRzBDRjtJQWNNO0VqSDRyZE47QUFDRjtBZXJ2ZEk7RWtHMENGO0lBY007RWpIaXNkTjtBQUNGO0FlMXZkSTtFa0cwQ0Y7SUFjTTtFakhzc2ROO0FBQ0Y7QWUvdmRJO0VrRzBDRjtJQWNNO0VqSDJzZE47QUFDRjtBZXB3ZEk7RWtHMENGO0lBY007RWpIZ3RkTjtBQUNGO0FpSHBzZEk7RUFDRTtBakhzc2ROO0FpSGxzZEU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBakhvc2RKO0FpSDVyZEU7RUFHRTtFQUNBO0VBQ0E7RUFJQTtFQWVBOzs7O0lBQUE7QWpIK3FkSjtBaUg1cmRJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QWpIOHJkTjtBaUgxcmRNO0VBQ0UsYUFoSGtCO0FqSDR5ZDFCO0FpSDdyZE07RUFDRSxhQWhIa0I7QWpIK3lkMUI7QWlIaHNkTTtFQUNFLGFBaEhrQjtBakhremQxQjtBaUh6cmRJO0VBQ0U7QWpIMnJkTjtBaUh2cmRJO0VBQ0U7QWpIeXJkTjtBaUhycmRFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakh1cmRKO0FpSHhxZEU7RUFFRTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7QWpIdXFkSjtBaUhwcWRFO0VBQ0U7RUFDQTtFQUNBO0FqSHNxZEo7QWlIanFkRTtFQUNFO0VBQ0E7QWpIbXFkSjtBaUhocWRFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqSGtxZEo7QWlIL3BkTTtFQUNFO0V0QzFOTjtFQUNBOzs7O0lBQUE7RUFLQTtFQUNBO0VBRUE7RUFDQTtFQUNBOzs7SUFBQTtFQUlBO0VBT0E7RUFFQTs7Ozs7SUFBQTtBM0V5M2RGO0EyRWg0ZEU7RUFDRSxzRHpFWWdCO0V5RVhoQixtQnpFWXVCO0FGczNkM0I7QTJFdjNkRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzRXkzZEo7QTJFdDNkRTtFQUVFO0EzRXUzZEo7QTJFcjNkSTtFQUNFO0EzRXUzZE47QWlIM3NkTTtFQUNFO0VBT0U7QWpIdXNkVjtBaUhyc2RVO0VBRUUsOENBNU1nQjtFQTZNaEIscUNBNU1nQjtBakhrNWQ1QjtBaUhudGRNO0VBQ0U7RXRDMU5OO0VBQ0E7Ozs7SUFBQTtFQUtBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7OztJQUFBO0VBSUE7RUFPQTtFQUVBOzs7OztJQUFBO0EzRTY2ZEY7QTJFcDdkRTtFQUNFLHNEekVZZ0I7RXlFWGhCLG1CekVZdUI7QUYwNmQzQjtBMkUzNmRFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNFNjZkSjtBMkUxNmRFO0VBRUU7QTNFMjZkSjtBMkV6NmRJO0VBQ0U7QTNFMjZkTjtBaUh0dGRJO0VBQ0U7QWpId3RkTjtBaUhydGRJO0VBQ0U7QWpIdXRkTjtBaUhwdGRJO0VBQ0U7RUFDQTtFQUNBO0FqSHN0ZE47QWlIcHRkTTtFQUNFO0FqSHN0ZFI7QWlIbHRkSTs7RUFFRTtBakhvdGROO0FpSGp0ZEk7RUFDRTtBakhtdGROO0FpSDNzZEU7RUFDRTtBakg2c2RKO0FpSDNzZEk7RUFDRTtBakg2c2ROO0FpSDFzZEk7O0VBRUU7QWpINHNkTjtBaUh6c2RJO0VBQ0U7RUFDQTtBakgyc2ROO0FpSHhzZEk7O0VBRUU7QWpIMHNkTjtBaUh2c2RJO0VBQ0U7QWpIeXNkTjtBaUhoc2RFO0VBQ0UsNkMxR3dKMEI7QVAwaWQ5QjtBaUh4cmRJO0VBQ0U7QWpIMHJkTjtBaUhycmRJO0VBQ0UsMkZoSHhWVTtFZ0h5VlY7QWpIdXJkTjtBaUhwcmRJO0VBQ0U7QWpIc3JkTjtBaUg3cWRFO0VBQ0U7SUFDRTtFakgrcWRKO0VpSDdxZEk7SUFDRTtFakgrcWROO0FBQ0Y7O0FrSG5qZUE7Ozs7Ozs7OztDQUFBO0FBV0E7RUFFRTtBbEhvamVGO0FrSGhqZUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBbEhramVKO0FrSC9pZUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxIaWplSjtBa0g5aWVFO0VBQ0U7RUFDQTtBbEhnamVKO0FrSDdpZUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsSCtpZUo7QWtINWllRTtFQUNFO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7RUFHQTtBbEh5aWVKO0FrSHJpZUk7RUFDRTtBbEh1aWVOO0FrSG5pZUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsSHFpZUo7QWU3aWVJO0VtR0dGO0lBV0k7RWxIbWllSjtBQUNGO0FlbGplSTtFbUdHRjtJQWtCSTtFbEhpaWVKO0FBQ0Y7QWVwZ2VJO0VtR3RCRTtJQUNFO0VsSDZoZU47QUFDRjtBZTVqZUk7RW1HcUNFO0lBQ0U7RWxIMGhlTjtBQUNGO0FrSHZoZUk7RUFHRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsSHVoZU47QWUza2VJO0VtRzhERTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFLQTtJQUNBO0lBQ0E7RWxINGdlTjtFa0h0Z2VJO0lBRUU7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWxIdWdlTjtFa0hwZ2VJO0lBQ0U7RWxIc2dlTjtFa0huZ2VJO0lBQ0U7RWxIcWdlTjtBQUNGO0FrSGpnZUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsSG1nZUo7QWtIaGdlRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FsSGtnZUo7O0FBdG5lQTs7MkJBQUE7QW1IeEVBOzs7O0NBQUE7QUFNQTtFQUNFO0FuSG1zZUY7QW1IanNlRTs7RUFFRTtFQUNBO0VBQ0E7RUFDQTtBbkhtc2VKO0FtSGpzZUk7O0VBQ0U7RUFDQTtFQUNBLFdqSDBMeUI7RWlIekx6QixZakh5THlCO0VpSHhMekI7RUFDQTtFQUNBO0VBQ0E7QW5Ib3NlTjtBZTdwZUk7RW9HL0NBOztJQVdJO0VuSHNzZU47QUFDRjtBbUhsc2VFO0VBQ0U7RUFDQTtBbkhvc2VKO0FlMXBlSTtFb0d0RUo7SUFnQ0k7SUFDQTtJQUNBO0VuSG9zZUY7QUFDRjtBZWpxZUk7RW9HdEVKO0lBc0NJO0VuSHFzZUY7QUFDRjs7QW9IbHZlQTs7OztDQUFBO0FBTUE7RUFDRTtBcEhvdmVGO0FvSGx2ZUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBcEhvdmVKO0FlcnJlSTtFcUduRUY7SUFPSTtJQUNBO0lBQ0E7RXBIcXZlSjtBQUNGO0FlNXJlSTtFcUd0REY7SUFFSTtFcEhvdmVKO0FBQ0Y7O0FvSGh2ZUE7RUFDRTtFQUNBLDZDN0d3ZDRCO0FQMnhkOUI7QW9IanZlRTtFQUNFO0VBQ0E7QXBIbXZlSjs7QXFIdHhlQTs7OztDQUFBO0FBTUE7RUFDRTtBckh3eGVGOztBQWh0ZUE7OzZCQUFBO0FzSC9FQTs7OztDQUFBO0FBU0k7RUFDRTtFQUNBO0F0SGl5ZU47QWVodWVJO0V1RzdERjtJQUVJO0V0SCt4ZUo7QUFDRjs7QXVIanplQTs7OztDQUFBO0FBUUk7RUFDRTtBdkhpemVOO0F1SC95ZU07RUFDRTtBdkhpemVSO0F1SC95ZVE7RUFDRTtBdkhpemVWOztBQTN1ZUE7Ozs7OytFQUFBO0F3SHJGQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FBQTtBQWtDQTs7Ozs7O0VBQUE7QUFjQTtBQUtBO0FBUUE7Ozs7Ozs7OztFQUFBO0FBWUE7O1dBQUE7QUFJQTtFQUNFO0VBQ0EsMENBckJvQjtFQXNCcEIsZ0RBdkNlO0VBd0NmLGdCQTlCbUI7RUErQm5CO0VBQ0E7RUFDQTtBeEhtemVGOztBd0hoemVBO0VBQ0U7RUFDQSxzQ0FuQ2dCO0VBb0NoQixvRUE1Q2U7RUE2Q2YsZ0JBMUNtQjtFQTJDbkI7QXhIbXplRjs7QXdIaHplQTtFQUNFO0VBQ0Esc0NBM0NnQjtFQTRDaEIsd0VBckRlO0VBc0RmLGdCQWxEbUI7RUFtRG5CO0F4SG16ZUY7O0F3SGh6ZUE7RUFDRTtFQUNBLHNDQW5EZ0I7RUFvRGhCLHFEQTlEZTtFQStEZixnQkF4RG1CO0VBeURuQjtBeEhtemVGOztBd0hoemVBOzs7Ozs7RUFBQTtBQU9BO0VBQ0U7RUFDQSxzQ0FsRWdCO0VBbUVoQiw4Q0EvRWU7RUFnRmYsZ0JBdkVtQjtFQXdFbkI7QXhIbXplRjs7QXdIaHplQTs7OztFQUFBO0FBS0E7RUFDRSx5Q0E3RWdCO0VBOEVoQiwrQ0ExRmU7RUEyRmYsZ0JBckZtQjtFQXNGbkI7QXhIbXplRjs7QXdIaHplQTtFQUNFLHlDQXBGZ0I7RUFxRmhCLDhDQWxHZTtFQW1HZixnQkE1Rm1CO0VBNkZuQjtBeEhtemVGOztBd0hoemVBOzs7RUFBQTtBQUlBO0VBQ0U7RUFDQSwwQ0E1Rm9CO0VBNkZwQixxREE1R2U7RUE2R2YsZ0JBdEdtQjtFQXVHbkI7QXhIbXplRjs7QXdIaHplQTs7Ozs7RUFBQTtBQU9BOzs7Ozs7OztFQUFBO0FBWU07O0VBRUUsc0NBNUhVO0F4SDI2ZWxCOztBd0hqemVNOztFQUVFLHNDQTVIVTtBeEhnN2VsQjs7QXdIMXllTTs7OztFQUlFLHFDQXhJVTtBeEhxN2VsQjtBd0gxeWVNOztFQUVFLDhCQTVJZ0I7QXhIdzdleEI7QXdIenllTTtFQUNFLDBDQTlJYztBeEh5N2V0Qjs7QXdIeHplTTs7OztFQUlFLHFDQXhJVTtBeEhtOGVsQjtBd0h4emVNOztFQUVFLDhCQTVJZ0I7QXhIczhleEI7QXdIdnplTTtFQUNFLDBDQTlJYztBeEh1OGV0Qjs7QXdIdDBlTTs7OztFQUlFLHFDQXhJVTtBeEhpOWVsQjtBd0h0MGVNOztFQUVFLDhCQTVJZ0I7QXhIbzlleEI7QXdIcjBlTTtFQUNFLDBDQTlJYztBeEhxOWV0Qjs7QXdIcDFlTTs7OztFQUlFLHFDQXhJVTtBeEgrOWVsQjtBd0hwMWVNOztFQUVFLDhCQTVJZ0I7QXhIaytleEI7QXdIbjFlTTtFQUNFLDBDQTlJYztBeEhtK2V0Qjs7QXdIbDJlTTs7OztFQUlFLHFDQXhJVTtBeEg2K2VsQjtBd0hsMmVNOztFQUVFLDhCQTVJZ0I7QXhIZy9leEI7QXdIajJlTTtFQUNFLDBDQTlJYztBeEhpL2V0Qjs7QXdIaDNlTTs7OztFQUlFLHFDQXhJVTtBeEgyL2VsQjtBd0hoM2VNOztFQUVFLDhCQTVJZ0I7QXhIOC9leEI7QXdILzJlTTtFQUNFLDBDQTlJYztBeEgrL2V0Qjs7QXdIOTNlTTs7OztFQUlFLHFDQXhJVTtBeEh5Z2ZsQjtBd0g5M2VNOztFQUVFLDhCQTVJZ0I7QXhINGdmeEI7QXdINzNlTTtFQUNFLDBDQTlJYztBeEg2Z2Z0Qjs7QXdIejNlQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBcUJBOzs7Ozs7Ozs7O0VBQUE7QUFXQTtFQUVFO0F4SDAzZUY7O0F3SHYzZUE7Ozs7O0VBQUE7QUFNQTtFQUNFO0F4SDAzZUY7O0F3SHYzZUE7RUFDRTtBeEgwM2VGOztBd0h2M2VBOzs7RUFBQTtBQUlBO0VBQ0U7QXhIMDNlRjs7QXdIdjNlQTs7Ozs7Ozs7O0VBQUE7QUFVQTs7RUFFRTtBeEgwM2VGLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2Jhc2Uuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2Fic3RyYWN0L3ZhcmlhYmxlcy9fYm9vdHN0cmFwLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9hYnN0cmFjdC92YXJpYWJsZXMvX2N1c3RvbS5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYmFubmVyLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3Jvb3Quc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy92ZW5kb3IvX3Jmcy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19yZWJvb3Quc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ib3JkZXItcmFkaXVzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3R5cGUuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2xpc3RzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2ltYWdlcy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9faW1hZ2Uuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY29udGFpbmVycy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fY29udGFpbmVyLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19ncmlkLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ncmlkLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3RhYmxlcy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGFibGUtdmFyaWFudHMuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9mb3Jtcy9fbGFiZWxzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvZm9ybXMvX2Zvcm0tdGV4dC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2Zvcm1zL19mb3JtLWNvbnRyb2wuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RyYW5zaXRpb24uc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2dyYWRpZW50cy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2Zvcm1zL19mb3JtLXNlbGVjdC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2Zvcm1zL19mb3JtLWNoZWNrLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvZm9ybXMvX2Zvcm0tcmFuZ2Uuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9mb3Jtcy9fZmxvYXRpbmctbGFiZWxzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvZm9ybXMvX2lucHV0LWdyb3VwLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19mb3Jtcy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19idXR0b25zLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19idXR0b25zLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3RyYW5zaXRpb25zLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Ryb3Bkb3duLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19jYXJldC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19idXR0b24tZ3JvdXAuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbmF2LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX25hdmJhci5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19jYXJkLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2FjY29yZGlvbi5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19icmVhZGNydW1iLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3BhZ2luYXRpb24uc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3BhZ2luYXRpb24uc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fYmFkZ2Uuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fYWxlcnQuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2FsZXJ0LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3Byb2dyZXNzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2xpc3QtZ3JvdXAuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2xpc3QtZ3JvdXAuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY2xvc2Uuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdG9hc3RzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX21vZGFsLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19iYWNrZHJvcC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL190b29sdGlwLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19yZXNldC10ZXh0LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3BvcG92ZXIuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY2Fyb3VzZWwuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2NsZWFyZml4LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3NwaW5uZXJzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX29mZmNhbnZhcy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19wbGFjZWhvbGRlcnMuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9oZWxwZXJzL19jb2xvci1iZy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX2NvbG9yZWQtbGlua3Muc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9oZWxwZXJzL19yYXRpby5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX3Bvc2l0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvaGVscGVycy9fc3RhY2tzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvaGVscGVycy9fdmlzdWFsbHktaGlkZGVuLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL192aXN1YWxseS1oaWRkZW4uc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9oZWxwZXJzL19zdHJldGNoZWQtbGluay5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX3RleHQtdHJ1bmNhdGlvbi5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC10cnVuY2F0ZS5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2hlbHBlcnMvX3ZyLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL191dGlsaXRpZXMuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2FwaS5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvYWJzdHJhY3QvX21peGlucy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvYmFzZS9fYmFzZS5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvYmFzZS9fd3AtYWRtaW4uc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2xheW91dC9fY29udGFpbmVyLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9sYXlvdXQvX2hlYWRlci5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvbGF5b3V0L19tYWluLW5hdmlnYXRpb24uc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2xheW91dC9fYXNpZGUuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2xheW91dC9fbmF2aWdhdGlvbi5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvbGF5b3V0L19mb290ZXIuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2xheW91dC9fc2VjdGlvbi1zcGFjaW5nLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9jb21wb25lbnQvX3NsaWNrLXNsaWRlci5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50L19wb3dlci10aXAuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudC9fY29sdW1uLWNhcmQuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudC9fY2hldnJvbi1idXR0b24uc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL3BhdHRlcm4vX3R3by1yb3dzLXR3by1jb2x1bW5zLXRleHQtaW1hZ2UtZWxlbWVudC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvcGF0dGVybi9fdmlkZW8tZWxlbWVudC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvcGF0dGVybi9fc2VydmljZS1lbGVtZW50LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9wYXR0ZXJuL19yZWZlcmVuY2UtZWxlbWVudC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvcGF0dGVybi9faW1hZ2Utb3ZlcmxheS1lbGVtZW50LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9wYXR0ZXJuL19pbWFnZS1vdmVybGF5LWNlbnRlci1lbGVtZW50LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9wYXR0ZXJuL190aHJlZS1jb2x1bW5zLWltYWdlLXRleHQtZWxlbWVudC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvcGF0dGVybi9fdGFicy1lbGVtZW50LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9wYXR0ZXJuL19saXN0LWVsZW1lbnQuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL3BhdHRlcm4vX2ZvdXItY29sdW1uLXRleHQtZWxlbWVudC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvcGF0dGVybi9faWNvbi1jYXJvdXNlbC1lbGVtZW50LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9wYXR0ZXJuL19mYXEtZWxlbWVudC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvcGF0dGVybi9fY29udGFjdC1mb3JtLWVsZW1lbnQuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL3BhdHRlcm4vX2NvdW50ZXItdXAtZWxlbWVudC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvcGF0dGVybi9fYWR2YW50YWdlcy1lbGVtZW50LnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9ibG9jay9fd3AtYmxvY2stY29sdW1ucy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvYmxvY2svX3dwLWJsb2NrLWltYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9ibG9jay9fd3AtYmxvY2stY292ZXIuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2Jsb2NrL193cC1ibG9jay1idXR0b24uc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2Jsb2NrL193cC1ibG9jay10YWJsZS5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvYmxvY2svX2d1dGVuYS10YWJzLWJsb2NrLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9ibG9jay9fd3AtYmxvY2stZ29zaWduLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9ibG9jay9fd3AtYmxvY2stbGVvcGFyZC1wb3N0cy5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvYmxvY2svX3dwLWJsb2NrLWRldGFpbHMuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2Jsb2NrL19jYXJkLWdyaWQuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2Jsb2NrL19wcm9jZXNzLXN0ZXBzLnNjc3MiLCJ3ZWJwYWNrOi8vZmFldGgvLi9hc3NldHMvc2Nzcy9wbHVnaW4vX3lvYXN0LXNlby5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvcGx1Z2luL19kZXZuLWltYWdlLWhvdHNwb3Quc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL3BsdWdpbi9fc2Nyb2xsLXRvcC5zY3NzIiwid2VicGFjazovL2ZhZXRoLy4vYXNzZXRzL3Njc3MvdGVtcGxhdGUvX3BhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL3RlbXBsYXRlL19zZWFyY2guc2NzcyIsIndlYnBhY2s6Ly9mYWV0aC8uL2Fzc2V0cy9zY3NzL2Jhc2UvX3R5cG9ncmFwaHkuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQmFzaWMgc3R5bGVzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQ29udGFpbnMgdGhlIGltcG9ydHMgdG8gYWxsIGJhc2ljIHN0eWxlcy5cblxuVGhlIGZpbGUgb3JnYW5pemF0aW9uIGZvbGxvd3MgdGhlIDctMSBwYXR0ZXJuIGFyY2hpdGVjdHVyZVxuaHR0cHM6Ly9zYXNzLWd1aWRlbGluLmVzLyN0aGUtNy0xLXBhdHRlcm5cbiovXG5cbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdib290c3RyYXAvc2Nzcy9ib290c3RyYXAnO1xuQGltcG9ydCAnYWJzdHJhY3QvbWl4aW5zJztcblxuLypcbiAqIEJhc2Utc3BlY2lmaWMgc3R5bGVzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuQGltcG9ydCAnYmFzZS9iYXNlJztcbkBpbXBvcnQgJ2Jhc2Uvd3AtYWRtaW4nO1xuXG4vKlxuICogTGF5b3V0LXNwZWNpZmljIHN0eWxlc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuQGltcG9ydCAnbGF5b3V0L2NvbnRhaW5lcic7XG5AaW1wb3J0ICdsYXlvdXQvaGVhZGVyJztcbkBpbXBvcnQgJ2xheW91dC9tYWluLW5hdmlnYXRpb24nO1xuQGltcG9ydCAnbGF5b3V0L2FzaWRlJztcbkBpbXBvcnQgJ2xheW91dC9uYXZpZ2F0aW9uJztcbkBpbXBvcnQgJ2xheW91dC9mb290ZXInO1xuQGltcG9ydCAnbGF5b3V0L3NlY3Rpb24tc3BhY2luZyc7XG5cbi8qXG4gKiBDb21wb25lbnQtc3BlY2lmaWMgc3R5bGVzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5AaW1wb3J0ICdjb21wb25lbnQvc2xpY2stc2xpZGVyJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9wb3dlci10aXAnO1xuQGltcG9ydCAnY29tcG9uZW50L2NvbHVtbi1jYXJkJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9jaGV2cm9uLWJ1dHRvbic7XG5cbi8qXG4gKiBQYXR0ZXJuLXNwZWNpZmljIHN0eWxlc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbkBpbXBvcnQgJ3BhdHRlcm4vdHdvLXJvd3MtdHdvLWNvbHVtbnMtdGV4dC1pbWFnZS1lbGVtZW50JztcbkBpbXBvcnQgJ3BhdHRlcm4vdmlkZW8tZWxlbWVudCc7XG5AaW1wb3J0ICdwYXR0ZXJuL3NlcnZpY2UtZWxlbWVudCc7XG5AaW1wb3J0ICdwYXR0ZXJuL3JlZmVyZW5jZS1lbGVtZW50JztcbkBpbXBvcnQgJ3BhdHRlcm4vaW1hZ2Utb3ZlcmxheS1lbGVtZW50JztcbkBpbXBvcnQgJ3BhdHRlcm4vaW1hZ2Utb3ZlcmxheS1jZW50ZXItZWxlbWVudCc7XG5AaW1wb3J0ICdwYXR0ZXJuL3RocmVlLWNvbHVtbnMtaW1hZ2UtdGV4dC1lbGVtZW50JztcbkBpbXBvcnQgJ3BhdHRlcm4vdGFicy1lbGVtZW50JztcbkBpbXBvcnQgJ3BhdHRlcm4vbGlzdC1lbGVtZW50JztcbkBpbXBvcnQgJ3BhdHRlcm4vZm91ci1jb2x1bW4tdGV4dC1lbGVtZW50JztcbkBpbXBvcnQgJ3BhdHRlcm4vaWNvbi1jYXJvdXNlbC1lbGVtZW50JztcbkBpbXBvcnQgJ3BhdHRlcm4vZmFxLWVsZW1lbnQnO1xuQGltcG9ydCAncGF0dGVybi9jb250YWN0LWZvcm0tZWxlbWVudCc7XG5AaW1wb3J0ICdwYXR0ZXJuL2NvdW50ZXItdXAtZWxlbWVudCc7XG5AaW1wb3J0ICdwYXR0ZXJuL2FkdmFudGFnZXMtZWxlbWVudCc7XG5cbi8qXG4gKiBCbG9jay1zcGVjaWZpYyBzdHlsZXNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuQGltcG9ydCAnYmxvY2svd3AtYmxvY2stY29sdW1ucyc7XG5AaW1wb3J0ICdibG9jay93cC1ibG9jay1pbWFnZSc7XG5AaW1wb3J0ICdibG9jay93cC1ibG9jay1jb3Zlcic7XG5AaW1wb3J0ICdibG9jay93cC1ibG9jay1idXR0b24nO1xuQGltcG9ydCAnYmxvY2svd3AtYmxvY2stdGFibGUnO1xuQGltcG9ydCAnYmxvY2svZ3V0ZW5hLXRhYnMtYmxvY2snO1xuQGltcG9ydCAnYmxvY2svd3AtYmxvY2stZ29zaWduJztcbkBpbXBvcnQgJ2Jsb2NrL3dwLWJsb2NrLWxlb3BhcmQtcG9zdHMnO1xuQGltcG9ydCAnYmxvY2svd3AtYmxvY2stZGV0YWlscyc7XG5AaW1wb3J0ICdibG9jay9jYXJkLWdyaWQnO1xuQGltcG9ydCAnYmxvY2svcHJvY2Vzcy1zdGVwcyc7XG5cbi8qXG4gKiBQbHVnaW4tc3BlY2lmaWMgc3R5bGVzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5AaW1wb3J0ICdwbHVnaW4veW9hc3Qtc2VvJztcbkBpbXBvcnQgJ3BsdWdpbi9kZXZuLWltYWdlLWhvdHNwb3QnO1xuQGltcG9ydCAncGx1Z2luL3Njcm9sbC10b3AnO1xuXG4vKlxuICogVGVtcGxhdGUtc3BlY2lmaWMgc3R5bGVzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbkBpbXBvcnQgJ3RlbXBsYXRlL3BhZ2UnO1xuQGltcG9ydCAndGVtcGxhdGUvc2VhcmNoJztcblxuLypcbiAqIFR5cG9ncmFmaWUtUm9sbGVuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLVxuICogQmV3dXNzdCB6dWxldHp0OiBkaWUgRGF0ZWkgbGllc3QgZGllIFNla3Rpb25zLVJlZ2lzdHJ5IGF1c1xuICogbGF5b3V0L3NlY3Rpb24tc3BhY2luZywgdW5kIGRpZSBSb2xsZW4gc29sbGVuIHdhZWhyZW5kIGRlciBVbXN0ZWxsdW5nIGRpZVxuICogYWx0ZW4gRWluemVscmVnZWxuIGRlciBQYXR0ZXJucyB1ZWJlcnN0aW1tZW4sIG9obmUgIWltcG9ydGFudCB6dSBicmF1Y2hlbi4gKi9cbkBpbXBvcnQgJ2Jhc2UvdHlwb2dyYXBoeSc7XG4iLCIvKlxuQm9vdHN0cmFwIHZhcmlhYmxlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkNvbnRhaW5zIGFsbCBvdmVycmlkZXMgb2YgYm9vdHN0cmFwIGRlZmF1bHQgdmFyaWFibGVzLlxuKi9cblxuLypcbiAqIENvbnRhaW5lciBtYXggd2lkdGhcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICAgICAgICBzbTogNzIwcHgsXG4gICAgICAgIG1kOiA5NjBweCxcbiAgICAgICAgeGw6IDExNDBweCxcbiAgICAgICAgeHhsOiAxNDAwcHhcbikgIWRlZmF1bHQ7XG5cbi8qXG4gKiBGb250LXdlaWdodFxuICogLS0tLS0tLS0tLS0gKi9cbiRmb250LXdlaWdodC1zZW1pYm9sZDogNTAwO1xuXG4vKlxuICogU2hhZG93XG4gKiAtLS0tLS0gKi9cbiRib3gtc2hhZG93LWxnOiByZ2JhKDE0LCAzMCwgMzcsIDAuMTIpIDBweCAycHggNHB4IDBweCwgcmdiYSgxNCwgMzAsIDM3LCAwLjMyKSAwcHggMnB4IDE2cHggMHB4O1xuXG4vKlxuICogSW5wdXRzXG4gKiAtLS0tLS0gKi9cbiRpbnB1dC1mb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuJGlucHV0LXBhZGRpbmcteTogLjc1cmVtO1xuJGlucHV0LWJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlcHRlbmFyeSk7XG4iLCIvKlxuQ3VzdG9tIHZhcmlhYmxlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiovXG5cbi8qXG4gKiBCYXNlXG4gKiAtLS0tICovXG4kYmFzZS1tYXgtd2lkdGg6IDE5MjBweDtcblxuLypcbiAqIFRyYW5zaXRpb25cbiAqIC0tLS0tLS0tLS1cbiAqIEVpbmUgRGF1ZXIgZnVlciBhbGxlcywgd2FzIGF1ZiBVZWJlcmZhaHJlbiBhbnR3b3J0ZXQg4oCUIEJ1dHRvbnMsIExpbmtzLFxuICogTmF2aWdhdGlvbiwgS2FydGVuLCBCaWxkLVpvb20sIEF1ZmtsYXBwZXIuIFZvcmhlciBsaWVmIGRhcyBhdWYgZWluZXIgU2thbGFcbiAqIGF1cyBkcmVpIFdlcnRlbiAoLjE1cyAvIC4yNXMgLyAuNXMpOyBkaWUgUnVlY2ttZWxkdW5nIHNvbGwgYWJlciB1ZWJlciBkaWVcbiAqIGdhbnplIFNlaXRlIGRlbnNlbGJlbiBUYWt0IGhhYmVuLCBzb25zdCB3aXJrdCBkaWVzZWxiZSBHZXN0ZSBtYWwgZmxpbmssIG1hbFxuICogemFlaC5cbiAqL1xuJGhvdmVyLXRyYW5zaXRpb246IC4zcyBlYXNlO1xuXG4vKipcbiAqIE9wYWNpdHlcbiAqIC0tLS0tLS0gKi9cbiRkZWZhdWx0LW9wYWNpdHk6IC43NTtcblxuLypcbiAqIEJ1dHRvbnNcbiAqIC0tLS0tLS0gKi9cbiRidXR0b24tcGFkZGluZy15OiAuNXJlbTtcblxuLypcbiAqIFZlcmxhdWZzLUhvdmVyIChWb3JiaWxkOiBTeW50ZWdvbilcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJ1aGV6dXN0YW5kIGZsYWVjaGlnLCBiZWltIFVlYmVyZmFocmVuIGxhZXVmdCBkaWUgRmxhZWNoZSBuYWNoIHVudGVuIGluIGRlblxuICogaGVsbGVyZW4gVG9uIGRlcnNlbGJlbiBGYXJiZSBhdXMuIERpZSBQYWxldHRlIGluIHRoZW1lLmpzb24ga2VubnQgcHJvXG4gKiBNYXJrZW4tRmFyYmUgbnVyIGVpbmVuIFdlcnQsIGRlciB6d2VpdGUgVG9uIHdpcmQgaGllciBnZWZ1ZWhydDogZ2xlaWNoZXJcbiAqIEZhcmJ0b24sIGdsZWljaGUgU2FldHRpZ3VuZywgSGVsbGlna2VpdCB1bSAxNiBQcm96ZW50cHVua3RlIGFuZ2Vob2Jlbi5cbiAqXG4gKiAgIHNlbmFyeSAgI2JiZDAzYSA9IGhzbCg2OCwgNjIlLCA1MiUpICAtPiAgI2QyZTA3YiA9IGhzbCg2OCwgNjIlLCA2OCUpXG4gKiAgIHByaW1hcnkgIzI3MmY2ZiA9IGhzbCgyMzMsIDQ4JSwgMjklKSAtPiAgIzNjNDhhYSA9IGhzbCgyMzMsIDQ4JSwgNDUlKVxuICpcbiAqIE5pY2h0IHVlYmVyIGNvbG9yLW1peCBtaXQgV2Vpc3MgZ2VyZWNobmV0OiBkYXMgZW50c2FldHRpZ3QgdW5kIG1hY2h0IGF1cyBkZW1cbiAqIE1hcmluZWJsYXUgZWluIEdyYXVibGF1LlxuICovXG4kYnV0dG9uLWdyZWVuLTUwMDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlbmFyeSk7XG4kYnV0dG9uLWdyZWVuLTMwMDogI2QyZTA3YjtcbiRidXR0b24tYmx1ZS01MDA6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiRidXR0b24tYmx1ZS0zMDA6ICMzYzQ4YWE7XG4kYnV0dG9uLWdyYWRpZW50LXRyYW5zaXRpb246ICRob3Zlci10cmFuc2l0aW9uO1xuXG4vKlxuICogU2VrdW5kYWVyZXIgdHJhbnNwYXJlbnRlciBCdXR0b24gKFZvcmJpbGQ6IFN5bnRlZ29uIFwiTmVobWVuIFNpZSBLb250YWt0IGF1ZlwiKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuJGJ1dHRvbi1vdXRsaW5lLWJvcmRlci13aWR0aDogMXB4O1xuJGJ1dHRvbi1vdXRsaW5lLWhvdmVyLWJnOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tc2Vjb25kYXJ5KTtcblxuLyogRm9rdXNyaW5nIGZ1ZXIgZGllIFRhc3RhdHVyIOKAlCBkaWUgQnV0dG9ucyBibGVuZGVuIGlociBCcm93c2VyLU91dGxpbmUgYXVzLiAqL1xuJGJ1dHRvbi1mb2N1cy1yaW5nOiAycHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlY29uZGFyeSk7XG4kYnV0dG9uLWZvY3VzLXJpbmctb2Zmc2V0OiAzcHg7XG5cbi8qXG4gKiBIZWFkZXJcbiAqIC0tLS0tLSAqL1xuJGhlYWRlci1pY29uLXdpZHRoOiAyNHB4O1xuJGhlYWRlci10b3BiYXItZ2FwOiAyNHB4O1xuJGhlYWRlci10b3BiYXItY29udGFjdC1pY29uLW9mZnNldDogMjVweDsgLy8gLmNvbnRhY3QtbmF2aWdhdGlvbiBpY29uIHJlYWNoZXMgb3V0c2lkZSB0aGUgaXRlbSBib3hcbiRoZWFkZXItdG9wYmFyLWxhbmd1YWdlLWljb24tb2Zmc2V0OiAyMXB4OyAvLyAud3BtbC1sYW5ndWFnZS1zd2l0Y2hlci1ibG9jayBpY29uIHJlYWNoZXMgb3V0c2lkZSB0aGUgaXRlbSBib3hcbiRoZWFkZXItaGVpZ2h0OiA2NHB4O1xuJGhlYWRlci1oZWlnaHQtbW9iaWxlOiA2MHB4OyAvLyBtYXRjaGVzIHRoZSBNYXggTWVnYSBNZW51IHRvZ2dsZSBiYXIgaGVpZ2h0XG4kaGVhZGVyLWxvZ28tbmF2aWdhdGlvbi1nYXA6IDMycHg7IC8vIGFiIGxnOiBBYnN0YW5kIHp3aXNjaGVuIExvZ28tU3BhbHRlIHVuZCBOYXZpZ2F0aW9uc3NwYWx0ZVxuXG4vKlxuICogTG9nb1xuICogLS0tLSAqL1xuJG5hdmlnYXRpb24tbG9nby1oZWlnaHQ6IDMycHg7XG5cbi8qKlxuICogSGVhZGxpbmUgZG90XG4gKiAtLS0tLS0tLS0tLS0gKi9cbiRoZWFkbGluZS1kb3Qtd2lkdGg6IDE3cHg7XG5cbi8qKlxuICogQ2hldnJvbiBsaW5rXG4gKiAtLS0tLS0tLS0tLS0gKi9cbiRjaGV2cm9uLWxpbmstaWNvbi13aWR0aDogMTZweDtcbi8qIFN0cmVja2UsIGRpZSBkZXIgQ2hldnJvbiBiZWltIFVlYmVyZmFocmVuIHZvcnJ1ZWNrdCDigJQgd2llIGluIGRlclxuICAgRm9vdGVyLUxpbmtsaXN0ZSwgZG9ydCBydWVja3QgZXIgdW0gZGllc2VsYmVuIDRweC4gKi9cbiRjaGV2cm9uLWxpbmstaG92ZXItb2Zmc2V0OiA0cHg7XG5cbi8qKlxuICogTGluay1Ib3ZlclxuICogLS0tLS0tLS0tLVxuICogWndlaSBSZWFrdGlvbmVuLCBiZWlkZSBhdXMgZGVyIE5hdmlnYXRpb24gdWViZXJub21tZW46IGRlciBMaW5rIHdpcmQgaGVsbGVyXG4gKiB1bmQgZGllIFNjaHJpZnQgemllaHQgYW4uXG4gKlxuICogRGllIEZhcmJlIGlzdCBlaW4gYXVmZ2VoZWxsdGVzIFNlY29uZGFyeSDigJQgdWViZXIgY29sb3ItbWl4IHN0YXR0IGFscyBmZXN0ZXJcbiAqIHp3ZWl0ZXIgSGV4LVdlcnQsIGRhbWl0IGRpZSBBdWZoZWxsdW5nIGRlciBQYWxldHRlIGZvbGd0OyBkaWUgQXVzZ2FuZ3NmYXJiZVxuICogc3RlaHQgYWxzIEN1c3RvbSBQcm9wZXJ0eSBlcnN0IHp1ciBMYXVmemVpdCBmZXN0IHVuZCBsYWVzc3Qgc2ljaCBpbiBTYXNzXG4gKiBuaWNodCByZWNobmVuLiBGdWVyIEJyb3dzZXIgb2huZSBjb2xvci1taXggc3RlaHQgZGVyIGdlcmVjaG5ldGUgV2VydCBhbHNcbiAqIFJ1ZWNrZmFsbGViZW5lIGRhbmViZW4uXG4gKi9cbiRsaW5rLWhvdmVyLXRpbnQ6IDIyJTtcbiRsaW5rLWhvdmVyLWNvbG9yLWZhbGxiYWNrOiAjNmZjMmU1O1xuJGxpbmstaG92ZXItY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tc2Vjb25kYXJ5KSAjezEwMCUgLSAkbGluay1ob3Zlci10aW50fSwgI2ZmZik7XG5cbi8qXG4gKiBWZXJkaWNrdW5nIG9obmUgTGF5b3V0c3BydW5nOiBmb250LXdlaWdodCBsYWVzc3Qgc2ljaCBvaG5lIFZhcmlhYmxlIEZvbnRcbiAqIG5pY2h0IHdlaWNoIGZhaHJlbiB1bmQgd3VlcmRlIGF1c3NlcmRlbSBkaWUgV29ydGJyZWl0ZSBhZW5kZXJuIOKAlCBkaWUgWmVpbGVcbiAqIHphcHBlbHRlIGRhbm4gYmVpbSBVZWJlcmZhaHJlbi4gRGVyIHRleHQtc2hhZG93IHZlcmRpY2t0IGRlbiBTdHJpY2ggdW1cbiAqIEJydWNodGVpbGUgZWluZXMgUGl4ZWxzLCB0d2VlbnQgc2F1YmVyIHVuZCBhZW5kZXJ0IGtlaW4gTGF5b3V0LiBEZXJzZWxiZVxuICogV2VydCB0cmFlZ3QgZGVuIEhvdmVyIGRlciBIYXVwdG5hdmlnYXRpb24uXG4gKi9cbiRsaW5rLWhvdmVyLXRoaWNrZW46IDAgMCAuMzVweCBjdXJyZW50Q29sb3IsIDAgMCAuMzVweCBjdXJyZW50Q29sb3I7XG5cbi8qKlxuICogQWR2YW50YWdlcyBjaGVja1xuICogLS0tLS0tLS0tLS0tLS0tLSAqL1xuJGFkdmFudGFnZXMtY2hlY2std2lkdGg6IDE0cHg7XG4kYWR2YW50YWdlcy1jaGVjay1oZWlnaHQ6IDExcHg7XG5cbi8qKlxuICogUmVhZCBtb3JlXG4gKiAtLS0tLS0tLS1cbiAqIERlciBQZmVpbC1CdXR0b24gZGVyIEthcnRlbi4gRGVyIEthc3RlbiBpc3QgQ1NTIChSYWhtZW4gKyBGbGFlY2hlKSwgbnVyIGRlclxuICogUGZlaWwga29tbXQgYXVzIGVpbmVyIERhdGVpIOKAlCBhbHMgTWFza2UsIGRhbWl0IGVyIHNpY2ggZWluZmFlcmJlbiB1bmQgZGFtaXRcbiAqIHdlaWNoIHVlYmVyYmxlbmRlbiBsYWVzc3QuIERpZSBJY29uLU1hc3NlIHNpbmQgZGllIGRlcyBDaGV2cm9ucyBpblxuICogcmVhZG1vcmUtY2hldnJvbi5zdmc7IGJlaSBnZW5hdSBkaWVzZW4gV2VydGVuIHN0ZWh0IGRlciBTdHJpY2ggYXVmIDFweCwgd2llXG4gKiBiZWltIGZydWVoZXJlbiBtb3JlLnN2Zy5cbiAqL1xuJHJlYWRtb3JlLWxpbmstd2lkdGg6IDQxcHg7XG4kcmVhZG1vcmUtYm9yZGVyLXdpZHRoOiAxcHg7XG4kcmVhZG1vcmUtaWNvbi13aWR0aDogOXB4O1xuJHJlYWRtb3JlLWljb24taGVpZ2h0OiAxNnB4O1xuLyogUmFobWVuIHVuZCBQZmVpbCBzdGVoZW4gaW0gc2VsYmVuIER1bmtlbCDigJQgZnJ1ZWhlciB3YXIgZGVyIFJhaG1lbiBzY2h3YXJ6XG4gICB1bmQgZGVyIFBmZWlsIEZhZXRoLUJsYXUsIHp3ZWkgVG9lbmUgYW4gZWluZW0gRWxlbWVudC4gRWluZSBaZWlsZSBmdWVyIGRpZVxuICAgZ2FuemUgU2VpdGU6IGhpZXIgYXVmIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KSBzdGVsbGVuLCB3ZW5uIGRpZVxuICAgUGZlaWxlIGltIE1hcmluZWJsYXUgZGVyIE1hcmtlIHN0ZWhlbiBzb2xsZW4uICovXG4kcmVhZG1vcmUtaWNvbi1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJsYWNrKTtcbiRyZWFkbW9yZS1iZzogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuJHJlYWRtb3JlLWhvdmVyLWJnOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spO1xuJHJlYWRtb3JlLWhvdmVyLWljb24tY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcblxuLypcbiAqIFNlcnZpY2VzIGVsZW1lbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS1cbiAqIEhvZWhlIGRlciBUZWFzZXItS2FjaGVsbiBhdWYgZGVyIFN0YXJ0c2VpdGUuXG4gKlxuICogRGllIE1vdGl2ZSBzaW5kIEhvY2hmb3JtYXQgKDQwMHg2MDAsIE1hc2NoaW5lIG1pdHRpZyBhdWYgaGVsbGVtIEdydW5kKS4gQmVpXG4gKiA1MDBweCB1bmQgZWluZXIgU3BhbHRlbmJyZWl0ZSB2b24gMzA0LTQyNHB4IHN0ZWh0IGRpZSBLYWNoZWwgZmFzdCBpbVxuICogU2VpdGVudmVyaGFlbHRuaXMgZGVyIFZvcmxhZ2Ug4oCUIGVzIHdpcmQga2F1bSBldHdhcyB3ZWdnZXNjaG5pdHRlbiwgdW5kIGRpZVxuICogTWFzY2hpbmUgc3RlaHQgc28gZ3Jvc3Mgd2llIG1vZWdsaWNoIGltIEJpbGQuXG4gKlxuICogTmFjaCB1bnRlbiB3aXJkIGRpZSBLYWNoZWwgZmxhY2hlcjogYmVpIG1kIHNpbmQgZGllIGRyZWkgU3BhbHRlbiBudXIgbm9jaFxuICogZ3V0IDIyMHB4IGJyZWl0LCBiZWkgNTAwcHggd2FlcmUgZGFzIGVpbiBTdHJlaWZlbjsgdW50ZXJoYWxiIHZvbiBtZCBzdGVodFxuICogamVkZSBLYWNoZWwgdWViZXIgZGllIHZvbGxlIEJyZWl0ZSB1bmQgYnJhdWNodCBrZWluZSBIb2VoZSBtZWhyLCBkaWUgZWluZVxuICogaGFsYmUgQmlsZHNjaGlybXNlaXRlIGZ1ZWxsdC5cbiAqL1xuJHNlcnZpY2VzLWVsZW1lbnQtdGlsZS1oZWlnaHQ6IDUwMHB4O1xuJHNlcnZpY2VzLWVsZW1lbnQtdGlsZS1oZWlnaHQtbWQ6IDQyMHB4O1xuJHNlcnZpY2VzLWVsZW1lbnQtdGlsZS1oZWlnaHQtc206IDM4MHB4O1xuLyogQXVzZmFocmhvZWhlIGRlcyBVbnRlcnRpdGVscyBiZWltIFVlYmVyZmFocmVuIOKAlCB6d2VpIFplaWxlbi4gKi9cbiRzZXJ2aWNlcy1lbGVtZW50LW92ZXJsYXktdGV4dC1oZWlnaHQ6IDQwcHg7XG5cbi8qXG4gKiBNYWluIG5hdmlnYXRpb25cbiAqIC0tLS0tLS0tLS0tLS0tLSAqL1xuJG1haW4tbmF2aWdhdGlvbi1tZWdhLWluZGljYXRvci13aWR0aDogMTVweDtcbiRtYWluLW5hdmlnYXRpb24tcGFuZWwtb2Zmc2V0OiAxNXB4OyAvLyBNYXggTWVnYSBNZW51IGNvbnRhaW5lciBwYWRkaW5nLWJvdHRvbSwga2VlcHMgdGhlIGRyb3Bkb3duIGJlbG93IHRoZSBtZW51IGxpbmtcbiRtYWluLW5hdmlnYXRpb24tYWN0aXZlLWVsZW1lbnQtaGVpZ2h0OiAzcHg7XG4kbWFpbi1uYXZpZ2F0aW9uLWJhY2stYXJyb3ctd2lkdGg6IDIwcHg7XG4kbWFpbi1uYXZpZ2F0aW9uLW1vYmlsZS1pdGVtLWhlaWdodDogNzBweDtcblxuLypcbiAqIE9iZXJzdGUgTWVudWV6ZWlsZTogQWJzdGFlbmRlIHVuZCBTY2hyaWZ0Z3JvZXNzZS5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQXVmIGJyZWl0ZW4gU2NoaXJtZW4gc3RlaHQgZGllIFplaWxlIGltIE5vcm1hbGFic3RhbmRcbiAqICgkbWFpbi1uYXZpZ2F0aW9uLWl0ZW0tZ2FwKSBsaW5rc2J1ZW5kaWcsIHVlYmVyc2NodWVzc2lnZSBCcmVpdGUgYmxlaWJ0XG4gKiByZWNodHMgZnJlaS4gV2lyZCBlcyBlbmdlciwgcnVlY2tlbiBkaWUgUHVua3RlIGJpcyBhdWZcbiAqICRtYWluLW5hdmlnYXRpb24taXRlbS1taW4tZ2FwIHp1c2FtbWVuIHVuZCBudXR6ZW4gZGFiZWkgZGllIGdhbnplIEJyZWl0ZTtcbiAqIGVyc3QgZGFuYWNoIGZhZWxsdCBhbHMgbGV0enRlcyBNaXR0ZWwgZGllIFNjaHJpZnRncm9lc3NlIGF1ZlxuICogJG1haW4tbmF2aWdhdGlvbi1saW5rLWZvbnQtc2l6ZS1taW4uIERpZSBkcmVpIFN0dWZlbiBnZWhlbiBmbGllc3NlbmRcbiAqIGluZWluYW5kZXIgdWViZXIgKFJlY2hudW5nIGluIF9tYWluLW5hdmlnYXRpb24uc2NzcykuXG4gKi9cbiRtYWluLW5hdmlnYXRpb24tbGluay1mb250LXNpemU6IDIwcHg7ICAgICAgLy8gZW50c3ByaWNodCBNZWdhIE1lbnUgPiBNZW51ZS1UaGVtZXMgPiBIYXVwdG1lbnVlcHVua3RlXG4kbWFpbi1uYXZpZ2F0aW9uLWxpbmstZm9udC1zaXplLW1pbjogMTcuNXB4O1xuJG1haW4tbmF2aWdhdGlvbi1pdGVtLWdhcDogMzhweDsgICAgICAgICAgICAvLyBOb3JtYWxhYnN0YW5kOyArIDJ4NnB4IExpbmstSW5uZW5hYnN0YW5kID0gNTBweCB2b24gVGV4dCB6dSBUZXh0IHdpZSBiaXNoZXJcbiRtYWluLW5hdmlnYXRpb24taXRlbS1taW4tZ2FwOiA2cHg7ICAgICAgICAgLy8gZW5nc3RlciBBYnN0YW5kIHp3aXNjaGVuIHp3ZWkgSGF1cHRwdW5rdGVuXG4kbWFpbi1uYXZpZ2F0aW9uLWZsdWlkLWZyb206IDk5MnB4OyAgICAgICAgIC8vID0gQnJlYWtwb2ludCBsZywgYWIgaGllciB6ZWlndCBNYXggTWVnYSBNZW51IGRpZSBEZXNrdG9wLVplaWxlXG4kbWFpbi1uYXZpZ2F0aW9uLWZsdWlkLXRvOiAxMDUwcHg7ICAgICAgICAgIC8vIGFiIGhpZXIgcmVpY2h0IGRpZSBCcmVpdGUgZnVlciBkaWUgdm9sbGUgU2NocmlmdGdyb2Vzc2VcbiRtYWluLW5hdmlnYXRpb24tZ2FwLWZyb206IDEwNTBweDsgICAgICAgICAgLy8gZGFydW50ZXIgaXN0IGRlciBBYnN0YW5kIGFtIE1pbmltdW1cbiRtYWluLW5hdmlnYXRpb24tZ2FwLXRvOiAxMjEwcHg7ICAgICAgICAgICAgLy8gYWIgaGllciBpc3QgZGVyIE5vcm1hbGFic3RhbmQgZXJyZWljaHRcblxuLypcbiAqIFNsaWNrIHNsaWRlclxuICogLS0tLS0tLS0tLS0tICovXG4kc2xpY2stc2xpZGVyLW5hdmlnYXRpb24tYnV0dG9uLXdpZHRoOiA2MHB4O1xuJHNsaWNrLXNsaWRlci1uYXZpZ2F0aW9uLWJ1dHRvbi1vcGFjaXR5OiAkZGVmYXVsdC1vcGFjaXR5O1xuJHNsaWNrLXNsaWRlci1kb3RzLXdpZHRoOiAxMHB4O1xuJHNsaWNrLXNsaWRlci1kb3RzLWFjdGl2ZS13aWR0aDogMTJweDtcbiRzbGljay1zbGlkZXItZG90cy1uYXZpZ2F0aW9uLWJ1dHRvbi13aWR0aDogMTdweDtcblxuLypcbiAqIFlvYXN0IGJyZWFkY3J1bWJcbiAqIC0tLS0tLS0tLS0tLS0tLS0gKi9cbiR5b2FzdC1icmVhZGNydW1iLWFycm93LXdpZHRoOiAzMHB4O1xuXG4vKlxuICogR29zaWduXG4gKiAtLS0tLS0gKi9cbiRnb3NpZ24tcmVhZG1vcmUtbGluay13aWR0aDogJHJlYWRtb3JlLWxpbmstd2lkdGg7XG5cbi8qXG4gKiBJY29uIGNhcm91c2VsIGVsZW1lbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuJGljb24tY2Fyb3VzZWwtZWxlbWVudC1pbWFnZS1taW4taGVpZ2h0OiAxMjVweDtcblxuXG4vKlxuICogRm9vdGVyXG4gKiAtLS0tLS0gKi9cbiRmb290ZXItbmF2aWdhdGlvbi1tYXgtd2lkdGg6IDgwMHB4O1xuJGZvb3Rlci1pY29uLWhlaWdodDogODBweDtcbiIsIkBtaXhpbiBic0Jhbm5lcigkZmlsZSkge1xuICAvKiFcbiAgICogQm9vdHN0cmFwICN7JGZpbGV9IHY1LjIuMyAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAgICogQ29weXJpZ2h0IDIwMTEtMjAyMiBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcbiAgICogQ29weXJpZ2h0IDIwMTEtMjAyMiBUd2l0dGVyLCBJbmMuXG4gICAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICAgKi9cbn1cblxuIiwiOnJvb3Qge1xuICAvLyBOb3RlOiBDdXN0b20gdmFyaWFibGUgdmFsdWVzIG9ubHkgc3VwcG9ydCBTYXNzU2NyaXB0IGluc2lkZSBgI3t9YC5cblxuICAvLyBDb2xvcnNcbiAgLy9cbiAgLy8gR2VuZXJhdGUgcGFsZXR0ZXMgZm9yIGZ1bGwgY29sb3JzLCBncmF5cywgYW5kIHRoZW1lIGNvbG9ycy5cblxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkY29sb3JzIHtcbiAgICAtLSN7JHByZWZpeH0jeyRjb2xvcn06ICN7JHZhbHVlfTtcbiAgfVxuXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICRncmF5cyB7XG4gICAgLS0jeyRwcmVmaXh9Z3JheS0jeyRjb2xvcn06ICN7JHZhbHVlfTtcbiAgfVxuXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAgIC0tI3skcHJlZml4fSN7JGNvbG9yfTogI3skdmFsdWV9O1xuICB9XG5cbiAgQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycy1yZ2Ige1xuICAgIC0tI3skcHJlZml4fSN7JGNvbG9yfS1yZ2I6ICN7JHZhbHVlfTtcbiAgfVxuXG4gIC0tI3skcHJlZml4fXdoaXRlLXJnYjogI3t0by1yZ2IoJHdoaXRlKX07XG4gIC0tI3skcHJlZml4fWJsYWNrLXJnYjogI3t0by1yZ2IoJGJsYWNrKX07XG4gIC0tI3skcHJlZml4fWJvZHktY29sb3ItcmdiOiAje3RvLXJnYigkYm9keS1jb2xvcil9O1xuICAtLSN7JHByZWZpeH1ib2R5LWJnLXJnYjogI3t0by1yZ2IoJGJvZHktYmcpfTtcblxuICAvLyBGb250c1xuXG4gIC8vIE5vdGU6IFVzZSBgaW5zcGVjdGAgZm9yIGxpc3RzIHNvIHRoYXQgcXVvdGVkIGl0ZW1zIGtlZXAgdGhlIHF1b3Rlcy5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvaXNzdWVzLzIzODMjaXNzdWVjb21tZW50LTMzNjM0OTE3MlxuICAtLSN7JHByZWZpeH1mb250LXNhbnMtc2VyaWY6ICN7aW5zcGVjdCgkZm9udC1mYW1pbHktc2Fucy1zZXJpZil9O1xuICAtLSN7JHByZWZpeH1mb250LW1vbm9zcGFjZTogI3tpbnNwZWN0KCRmb250LWZhbWlseS1tb25vc3BhY2UpfTtcbiAgLS0jeyRwcmVmaXh9Z3JhZGllbnQ6ICN7JGdyYWRpZW50fTtcblxuICAvLyBSb290IGFuZCBib2R5XG4gIC8vIHNjc3MtZG9jcy1zdGFydCByb290LWJvZHktdmFyaWFibGVzXG4gIEBpZiAkZm9udC1zaXplLXJvb3QgIT0gbnVsbCB7XG4gICAgLS0jeyRwcmVmaXh9cm9vdC1mb250LXNpemU6ICN7JGZvbnQtc2l6ZS1yb290fTtcbiAgfVxuICAtLSN7JHByZWZpeH1ib2R5LWZvbnQtZmFtaWx5OiAjeyRmb250LWZhbWlseS1iYXNlfTtcbiAgQGluY2x1ZGUgcmZzKCRmb250LXNpemUtYmFzZSwgLS0jeyRwcmVmaXh9Ym9keS1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1ib2R5LWZvbnQtd2VpZ2h0OiAjeyRmb250LXdlaWdodC1iYXNlfTtcbiAgLS0jeyRwcmVmaXh9Ym9keS1saW5lLWhlaWdodDogI3skbGluZS1oZWlnaHQtYmFzZX07XG4gIC0tI3skcHJlZml4fWJvZHktY29sb3I6ICN7JGJvZHktY29sb3J9O1xuICBAaWYgJGJvZHktdGV4dC1hbGlnbiAhPSBudWxsIHtcbiAgICAtLSN7JHByZWZpeH1ib2R5LXRleHQtYWxpZ246ICN7JGJvZHktdGV4dC1hbGlnbn07XG4gIH1cbiAgLS0jeyRwcmVmaXh9Ym9keS1iZzogI3skYm9keS1iZ307XG4gIC8vIHNjc3MtZG9jcy1lbmQgcm9vdC1ib2R5LXZhcmlhYmxlc1xuXG4gIC8vIHNjc3MtZG9jcy1zdGFydCByb290LWJvcmRlci12YXJcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXdpZHRoOiAjeyRib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1ib3JkZXItc3R5bGU6ICN7JGJvcmRlci1zdHlsZX07XG4gIC0tI3skcHJlZml4fWJvcmRlci1jb2xvcjogI3skYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yLXRyYW5zbHVjZW50OiAjeyRib3JkZXItY29sb3ItdHJhbnNsdWNlbnR9O1xuXG4gIC0tI3skcHJlZml4fWJvcmRlci1yYWRpdXM6ICN7JGJvcmRlci1yYWRpdXN9O1xuICAtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLXNtOiAjeyRib3JkZXItcmFkaXVzLXNtfTtcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cy1sZzogI3skYm9yZGVyLXJhZGl1cy1sZ307XG4gIC0tI3skcHJlZml4fWJvcmRlci1yYWRpdXMteGw6ICN7JGJvcmRlci1yYWRpdXMteGx9O1xuICAtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLTJ4bDogI3skYm9yZGVyLXJhZGl1cy0yeGx9O1xuICAtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLXBpbGw6ICN7JGJvcmRlci1yYWRpdXMtcGlsbH07XG4gIC8vIHNjc3MtZG9jcy1lbmQgcm9vdC1ib3JkZXItdmFyXG5cbiAgLS0jeyRwcmVmaXh9bGluay1jb2xvcjogI3skbGluay1jb2xvcn07XG4gIC0tI3skcHJlZml4fWxpbmstaG92ZXItY29sb3I6ICN7JGxpbmstaG92ZXItY29sb3J9O1xuXG4gIC0tI3skcHJlZml4fWNvZGUtY29sb3I6ICN7JGNvZGUtY29sb3J9O1xuXG4gIC0tI3skcHJlZml4fWhpZ2hsaWdodC1iZzogI3skbWFyay1iZ307XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBwcm9wZXJ0eS1ibGFja2xpc3QsIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcblxuLy8gU0NTUyBSRlMgbWl4aW5cbi8vXG4vLyBBdXRvbWF0ZWQgcmVzcG9uc2l2ZSB2YWx1ZXMgZm9yIGZvbnQgc2l6ZXMsIHBhZGRpbmdzLCBtYXJnaW5zIGFuZCBtdWNoIG1vcmVcbi8vXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL3Jmcy9ibG9iL21haW4vTElDRU5TRSlcblxuLy8gQ29uZmlndXJhdGlvblxuXG4vLyBCYXNlIHZhbHVlXG4kcmZzLWJhc2UtdmFsdWU6IDEuMjVyZW0gIWRlZmF1bHQ7XG4kcmZzLXVuaXQ6IHJlbSAhZGVmYXVsdDtcblxuQGlmICRyZnMtdW5pdCAhPSByZW0gYW5kICRyZnMtdW5pdCAhPSBweCB7XG4gIEBlcnJvciBcImAjeyRyZnMtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtdW5pdC4gVXNlIGBweGAgb3IgYHJlbWAuXCI7XG59XG5cbi8vIEJyZWFrcG9pbnQgYXQgd2hlcmUgdmFsdWVzIHN0YXJ0IGRlY3JlYXNpbmcgaWYgc2NyZWVuIHdpZHRoIGlzIHNtYWxsZXJcbiRyZnMtYnJlYWtwb2ludDogMTIwMHB4ICFkZWZhdWx0O1xuJHJmcy1icmVha3BvaW50LXVuaXQ6IHB4ICFkZWZhdWx0O1xuXG5AaWYgJHJmcy1icmVha3BvaW50LXVuaXQgIT0gcHggYW5kICRyZnMtYnJlYWtwb2ludC11bml0ICE9IGVtIGFuZCAkcmZzLWJyZWFrcG9pbnQtdW5pdCAhPSByZW0ge1xuICBAZXJyb3IgXCJgI3skcmZzLWJyZWFrcG9pbnQtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtYnJlYWtwb2ludC11bml0LiBVc2UgYHB4YCwgYGVtYCBvciBgcmVtYC5cIjtcbn1cblxuLy8gUmVzaXplIHZhbHVlcyBiYXNlZCBvbiBzY3JlZW4gaGVpZ2h0IGFuZCB3aWR0aFxuJHJmcy10d28tZGltZW5zaW9uYWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBGYWN0b3Igb2YgZGVjcmVhc2VcbiRyZnMtZmFjdG9yOiAxMCAhZGVmYXVsdDtcblxuQGlmIHR5cGUtb2YoJHJmcy1mYWN0b3IpICE9IG51bWJlciBvciAkcmZzLWZhY3RvciA8PSAxIHtcbiAgQGVycm9yIFwiYCN7JHJmcy1mYWN0b3J9YCBpcyBub3QgYSB2YWxpZCAgJHJmcy1mYWN0b3IsIGl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDEuXCI7XG59XG5cbi8vIE1vZGUuIFBvc3NpYmlsaXRpZXM6IFwibWluLW1lZGlhLXF1ZXJ5XCIsIFwibWF4LW1lZGlhLXF1ZXJ5XCJcbiRyZnMtbW9kZTogbWluLW1lZGlhLXF1ZXJ5ICFkZWZhdWx0O1xuXG4vLyBHZW5lcmF0ZSBlbmFibGUgb3IgZGlzYWJsZSBjbGFzc2VzLiBQb3NzaWJpbGl0aWVzOiBmYWxzZSwgXCJlbmFibGVcIiBvciBcImRpc2FibGVcIlxuJHJmcy1jbGFzczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIDEgcmVtID0gJHJmcy1yZW0tdmFsdWUgcHhcbiRyZnMtcmVtLXZhbHVlOiAxNiAhZGVmYXVsdDtcblxuLy8gU2FmYXJpIGlmcmFtZSByZXNpemUgYnVnOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9yZnMvaXNzdWVzLzE0XG4kcmZzLXNhZmFyaS1pZnJhbWUtcmVzaXplLWJ1Zy1maXg6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBEaXNhYmxlIFJGUyBieSBzZXR0aW5nICRlbmFibGUtcmZzIHRvIGZhbHNlXG4kZW5hYmxlLXJmczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gQ2FjaGUgJHJmcy1iYXNlLXZhbHVlIHVuaXRcbiRyZnMtYmFzZS12YWx1ZS11bml0OiB1bml0KCRyZnMtYmFzZS12YWx1ZSk7XG5cbkBmdW5jdGlvbiBkaXZpZGUoJGRpdmlkZW5kLCAkZGl2aXNvciwgJHByZWNpc2lvbjogMTApIHtcbiAgJHNpZ246IGlmKCRkaXZpZGVuZCA+IDAgYW5kICRkaXZpc29yID4gMCBvciAkZGl2aWRlbmQgPCAwIGFuZCAkZGl2aXNvciA8IDAsIDEsIC0xKTtcbiAgJGRpdmlkZW5kOiBhYnMoJGRpdmlkZW5kKTtcbiAgJGRpdmlzb3I6IGFicygkZGl2aXNvcik7XG4gIEBpZiAkZGl2aWRlbmQgPT0gMCB7XG4gICAgQHJldHVybiAwO1xuICB9XG4gIEBpZiAkZGl2aXNvciA9PSAwIHtcbiAgICBAZXJyb3IgXCJDYW5ub3QgZGl2aWRlIGJ5IDBcIjtcbiAgfVxuICAkcmVtYWluZGVyOiAkZGl2aWRlbmQ7XG4gICRyZXN1bHQ6IDA7XG4gICRmYWN0b3I6IDEwO1xuICBAd2hpbGUgKCRyZW1haW5kZXIgPiAwIGFuZCAkcHJlY2lzaW9uID49IDApIHtcbiAgICAkcXVvdGllbnQ6IDA7XG4gICAgQHdoaWxlICgkcmVtYWluZGVyID49ICRkaXZpc29yKSB7XG4gICAgICAkcmVtYWluZGVyOiAkcmVtYWluZGVyIC0gJGRpdmlzb3I7XG4gICAgICAkcXVvdGllbnQ6ICRxdW90aWVudCArIDE7XG4gICAgfVxuICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArICRxdW90aWVudDtcbiAgICAkZmFjdG9yOiAkZmFjdG9yICogLjE7XG4gICAgJHJlbWFpbmRlcjogJHJlbWFpbmRlciAqIDEwO1xuICAgICRwcmVjaXNpb246ICRwcmVjaXNpb24gLSAxO1xuICAgIEBpZiAoJHByZWNpc2lvbiA8IDAgYW5kICRyZW1haW5kZXIgPj0gJGRpdmlzb3IgKiA1KSB7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgMTtcbiAgICB9XG4gIH1cbiAgJHJlc3VsdDogJHJlc3VsdCAqICRmYWN0b3IgKiAkc2lnbjtcbiAgJGRpdmlkZW5kLXVuaXQ6IHVuaXQoJGRpdmlkZW5kKTtcbiAgJGRpdmlzb3ItdW5pdDogdW5pdCgkZGl2aXNvcik7XG4gICR1bml0LW1hcDogKFxuICAgIFwicHhcIjogMXB4LFxuICAgIFwicmVtXCI6IDFyZW0sXG4gICAgXCJlbVwiOiAxZW0sXG4gICAgXCIlXCI6IDElXG4gICk7XG4gIEBpZiAoJGRpdmlkZW5kLXVuaXQgIT0gJGRpdmlzb3ItdW5pdCBhbmQgbWFwLWhhcy1rZXkoJHVuaXQtbWFwLCAkZGl2aWRlbmQtdW5pdCkpIHtcbiAgICAkcmVzdWx0OiAkcmVzdWx0ICogbWFwLWdldCgkdW5pdC1tYXAsICRkaXZpZGVuZC11bml0KTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbi8vIFJlbW92ZSBweC11bml0IGZyb20gJHJmcy1iYXNlLXZhbHVlIGZvciBjYWxjdWxhdGlvbnNcbkBpZiAkcmZzLWJhc2UtdmFsdWUtdW5pdCA9PSBweCB7XG4gICRyZnMtYmFzZS12YWx1ZTogZGl2aWRlKCRyZnMtYmFzZS12YWx1ZSwgJHJmcy1iYXNlLXZhbHVlICogMCArIDEpO1xufVxuQGVsc2UgaWYgJHJmcy1iYXNlLXZhbHVlLXVuaXQgPT0gcmVtIHtcbiAgJHJmcy1iYXNlLXZhbHVlOiBkaXZpZGUoJHJmcy1iYXNlLXZhbHVlLCBkaXZpZGUoJHJmcy1iYXNlLXZhbHVlICogMCArIDEsICRyZnMtcmVtLXZhbHVlKSk7XG59XG5cbi8vIENhY2hlICRyZnMtYnJlYWtwb2ludCB1bml0IHRvIHByZXZlbnQgbXVsdGlwbGUgY2FsbHNcbiRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlOiB1bml0KCRyZnMtYnJlYWtwb2ludCk7XG5cbi8vIFJlbW92ZSB1bml0IGZyb20gJHJmcy1icmVha3BvaW50IGZvciBjYWxjdWxhdGlvbnNcbkBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSBweCB7XG4gICRyZnMtYnJlYWtwb2ludDogZGl2aWRlKCRyZnMtYnJlYWtwb2ludCwgJHJmcy1icmVha3BvaW50ICogMCArIDEpO1xufVxuQGVsc2UgaWYgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gcmVtIG9yICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IFwiZW1cIiB7XG4gICRyZnMtYnJlYWtwb2ludDogZGl2aWRlKCRyZnMtYnJlYWtwb2ludCwgZGl2aWRlKCRyZnMtYnJlYWtwb2ludCAqIDAgKyAxLCAkcmZzLXJlbS12YWx1ZSkpO1xufVxuXG4vLyBDYWxjdWxhdGUgdGhlIG1lZGlhIHF1ZXJ5IHZhbHVlXG4kcmZzLW1xLXZhbHVlOiBpZigkcmZzLWJyZWFrcG9pbnQtdW5pdCA9PSBweCwgI3skcmZzLWJyZWFrcG9pbnR9cHgsICN7ZGl2aWRlKCRyZnMtYnJlYWtwb2ludCwgJHJmcy1yZW0tdmFsdWUpfSN7JHJmcy1icmVha3BvaW50LXVuaXR9KTtcbiRyZnMtbXEtcHJvcGVydHktd2lkdGg6IGlmKCRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnksIG1heC13aWR0aCwgbWluLXdpZHRoKTtcbiRyZnMtbXEtcHJvcGVydHktaGVpZ2h0OiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCBtYXgtaGVpZ2h0LCBtaW4taGVpZ2h0KTtcblxuLy8gSW50ZXJuYWwgbWl4aW4gdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggbWVkaWEgcXVlcnkgbmVlZHMgdG8gYmUgdXNlZFxuQG1peGluIF9yZnMtbWVkaWEtcXVlcnkge1xuICBAaWYgJHJmcy10d28tZGltZW5zaW9uYWwge1xuICAgIEBpZiAkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5IHtcbiAgICAgIEBtZWRpYSAoI3skcmZzLW1xLXByb3BlcnR5LXdpZHRofTogI3skcmZzLW1xLXZhbHVlfSksICgjeyRyZnMtbXEtcHJvcGVydHktaGVpZ2h0fTogI3skcmZzLW1xLXZhbHVlfSkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQG1lZGlhICgjeyRyZnMtbXEtcHJvcGVydHktd2lkdGh9OiAjeyRyZnMtbXEtdmFsdWV9KSBhbmQgKCN7JHJmcy1tcS1wcm9wZXJ0eS1oZWlnaHR9OiAjeyRyZnMtbXEtdmFsdWV9KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQG1lZGlhICgjeyRyZnMtbXEtcHJvcGVydHktd2lkdGh9OiAjeyRyZnMtbXEtdmFsdWV9KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gSW50ZXJuYWwgbWl4aW4gdGhhdCBhZGRzIGRpc2FibGUgY2xhc3NlcyB0byB0aGUgc2VsZWN0b3IgaWYgbmVlZGVkLlxuQG1peGluIF9yZnMtcnVsZSB7XG4gIEBpZiAkcmZzLWNsYXNzID09IGRpc2FibGUgYW5kICRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnkge1xuICAgIC8vIEFkZGluZyBhbiBleHRyYSBjbGFzcyBpbmNyZWFzZXMgc3BlY2lmaWNpdHksIHdoaWNoIHByZXZlbnRzIHRoZSBtZWRpYSBxdWVyeSB0byBvdmVycmlkZSB0aGUgcHJvcGVydHlcbiAgICAmLFxuICAgIC5kaXNhYmxlLXJmcyAmLFxuICAgICYuZGlzYWJsZS1yZnMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRyZnMtY2xhc3MgPT0gZW5hYmxlIGFuZCAkcmZzLW1vZGUgPT0gbWluLW1lZGlhLXF1ZXJ5IHtcbiAgICAuZW5hYmxlLXJmcyAmLFxuICAgICYuZW5hYmxlLXJmcyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIEludGVybmFsIG1peGluIHRoYXQgYWRkcyBlbmFibGUgY2xhc3NlcyB0byB0aGUgc2VsZWN0b3IgaWYgbmVlZGVkLlxuQG1peGluIF9yZnMtbWVkaWEtcXVlcnktcnVsZSB7XG5cbiAgQGlmICRyZnMtY2xhc3MgPT0gZW5hYmxlIHtcbiAgICBAaWYgJHJmcy1tb2RlID09IG1pbi1tZWRpYS1xdWVyeSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfcmZzLW1lZGlhLXF1ZXJ5IHtcbiAgICAgIC5lbmFibGUtcmZzICYsXG4gICAgICAmLmVuYWJsZS1yZnMge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkcmZzLWNsYXNzID09IGRpc2FibGUgYW5kICRyZnMtbW9kZSA9PSBtaW4tbWVkaWEtcXVlcnkge1xuICAgICAgLmRpc2FibGUtcmZzICYsXG4gICAgICAmLmRpc2FibGUtcmZzIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIF9yZnMtbWVkaWEtcXVlcnkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGZvcm1hdHRlZCBub24tcmVzcG9uc2l2ZSB2YWx1ZVxuQGZ1bmN0aW9uIHJmcy12YWx1ZSgkdmFsdWVzKSB7XG4gIC8vIENvbnZlcnQgdG8gbGlzdFxuICAkdmFsdWVzOiBpZih0eXBlLW9mKCR2YWx1ZXMpICE9IGxpc3QsICgkdmFsdWVzLCksICR2YWx1ZXMpO1xuXG4gICR2YWw6ICcnO1xuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHZhbHVlIGFuZCBjYWxjdWxhdGUgdmFsdWVcbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiAkdmFsdWUgPT0gMCB7XG4gICAgICAkdmFsOiAkdmFsICsgJyAwJztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gQ2FjaGUgJHZhbHVlIHVuaXRcbiAgICAgICR1bml0OiBpZih0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiwgdW5pdCgkdmFsdWUpLCBmYWxzZSk7XG5cbiAgICAgIEBpZiAkdW5pdCA9PSBweCB7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gcmVtIGlmIG5lZWRlZFxuICAgICAgICAkdmFsOiAkdmFsICsgJyAnICsgaWYoJHJmcy11bml0ID09IHJlbSwgI3tkaXZpZGUoJHZhbHVlLCAkdmFsdWUgKiAwICsgJHJmcy1yZW0tdmFsdWUpfXJlbSwgJHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICR1bml0ID09IHJlbSB7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gcHggaWYgbmVlZGVkXG4gICAgICAgICR2YWw6ICR2YWwgKyAnICcgKyBpZigkcmZzLXVuaXQgPT0gcHgsICN7ZGl2aWRlKCR2YWx1ZSwgJHZhbHVlICogMCArIDEpICogJHJmcy1yZW0tdmFsdWV9cHgsICR2YWx1ZSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIC8vIElmICR2YWx1ZSBpc24ndCBhIG51bWJlciAobGlrZSBpbmhlcml0KSBvciAkdmFsdWUgaGFzIGEgdW5pdCAobm90IHB4IG9yIHJlbSwgbGlrZSAxLjVlbSkgb3IgJCBpcyAwLCBqdXN0IHByaW50IHRoZSB2YWx1ZVxuICAgICAgICAkdmFsOiAkdmFsICsgJyAnICsgJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBmaXJzdCBzcGFjZVxuICBAcmV0dXJuIHVucXVvdGUoc3RyLXNsaWNlKCR2YWwsIDIpKTtcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVzcG9uc2l2ZSB2YWx1ZSBjYWxjdWxhdGVkIGJ5IFJGU1xuQGZ1bmN0aW9uIHJmcy1mbHVpZC12YWx1ZSgkdmFsdWVzKSB7XG4gIC8vIENvbnZlcnQgdG8gbGlzdFxuICAkdmFsdWVzOiBpZih0eXBlLW9mKCR2YWx1ZXMpICE9IGxpc3QsICgkdmFsdWVzLCksICR2YWx1ZXMpO1xuXG4gICR2YWw6ICcnO1xuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHZhbHVlIGFuZCBjYWxjdWxhdGUgdmFsdWVcbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiAkdmFsdWUgPT0gMCB7XG4gICAgICAkdmFsOiAkdmFsICsgJyAwJztcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAvLyBDYWNoZSAkdmFsdWUgdW5pdFxuICAgICAgJHVuaXQ6IGlmKHR5cGUtb2YoJHZhbHVlKSA9PSBcIm51bWJlclwiLCB1bml0KCR2YWx1ZSksIGZhbHNlKTtcblxuICAgICAgLy8gSWYgJHZhbHVlIGlzbid0IGEgbnVtYmVyIChsaWtlIGluaGVyaXQpIG9yICR2YWx1ZSBoYXMgYSB1bml0IChub3QgcHggb3IgcmVtLCBsaWtlIDEuNWVtKSBvciAkIGlzIDAsIGp1c3QgcHJpbnQgdGhlIHZhbHVlXG4gICAgICBAaWYgbm90ICR1bml0IG9yICR1bml0ICE9IHB4IGFuZCAkdW5pdCAhPSByZW0ge1xuICAgICAgICAkdmFsOiAkdmFsICsgJyAnICsgJHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSB1bml0IGZyb20gJHZhbHVlIGZvciBjYWxjdWxhdGlvbnNcbiAgICAgICAgJHZhbHVlOiBkaXZpZGUoJHZhbHVlLCAkdmFsdWUgKiAwICsgaWYoJHVuaXQgPT0gcHgsIDEsIGRpdmlkZSgxLCAkcmZzLXJlbS12YWx1ZSkpKTtcblxuICAgICAgICAvLyBPbmx5IGFkZCB0aGUgbWVkaWEgcXVlcnkgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZVxuICAgICAgICBAaWYgYWJzKCR2YWx1ZSkgPD0gJHJmcy1iYXNlLXZhbHVlIG9yIG5vdCAkZW5hYmxlLXJmcyB7XG4gICAgICAgICAgJHZhbDogJHZhbCArICcgJyArICBpZigkcmZzLXVuaXQgPT0gcmVtLCAje2RpdmlkZSgkdmFsdWUsICRyZnMtcmVtLXZhbHVlKX1yZW0sICN7JHZhbHVlfXB4KTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBtaW5pbXVtIHZhbHVlXG4gICAgICAgICAgJHZhbHVlLW1pbjogJHJmcy1iYXNlLXZhbHVlICsgZGl2aWRlKGFicygkdmFsdWUpIC0gJHJmcy1iYXNlLXZhbHVlLCAkcmZzLWZhY3Rvcik7XG5cbiAgICAgICAgICAvLyBDYWxjdWxhdGUgZGlmZmVyZW5jZSBiZXR3ZWVuICR2YWx1ZSBhbmQgdGhlIG1pbmltdW0gdmFsdWVcbiAgICAgICAgICAkdmFsdWUtZGlmZjogYWJzKCR2YWx1ZSkgLSAkdmFsdWUtbWluO1xuXG4gICAgICAgICAgLy8gQmFzZSB2YWx1ZSBmb3JtYXR0aW5nXG4gICAgICAgICAgJG1pbi13aWR0aDogaWYoJHJmcy11bml0ID09IHJlbSwgI3tkaXZpZGUoJHZhbHVlLW1pbiwgJHJmcy1yZW0tdmFsdWUpfXJlbSwgI3skdmFsdWUtbWlufXB4KTtcblxuICAgICAgICAgIC8vIFVzZSBuZWdhdGl2ZSB2YWx1ZSBpZiBuZWVkZWRcbiAgICAgICAgICAkbWluLXdpZHRoOiBpZigkdmFsdWUgPCAwLCAtJG1pbi13aWR0aCwgJG1pbi13aWR0aCk7XG5cbiAgICAgICAgICAvLyBVc2UgYHZtaW5gIGlmIHR3by1kaW1lbnNpb25hbCBpcyBlbmFibGVkXG4gICAgICAgICAgJHZhcmlhYmxlLXVuaXQ6IGlmKCRyZnMtdHdvLWRpbWVuc2lvbmFsLCB2bWluLCB2dyk7XG5cbiAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHZhcmlhYmxlIHdpZHRoIGJldHdlZW4gMCBhbmQgJHJmcy1icmVha3BvaW50XG4gICAgICAgICAgJHZhcmlhYmxlLXdpZHRoOiAje2RpdmlkZSgkdmFsdWUtZGlmZiAqIDEwMCwgJHJmcy1icmVha3BvaW50KX0jeyR2YXJpYWJsZS11bml0fTtcblxuICAgICAgICAgIC8vIFJldHVybiB0aGUgY2FsY3VsYXRlZCB2YWx1ZVxuICAgICAgICAgICR2YWw6ICR2YWwgKyAnIGNhbGMoJyArICRtaW4td2lkdGggKyBpZigkdmFsdWUgPCAwLCAnIC0gJywgJyArICcpICsgJHZhcmlhYmxlLXdpZHRoICsgJyknO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGZpcnN0IHNwYWNlXG4gIEByZXR1cm4gdW5xdW90ZShzdHItc2xpY2UoJHZhbCwgMikpO1xufVxuXG4vLyBSRlMgbWl4aW5cbkBtaXhpbiByZnMoJHZhbHVlcywgJHByb3BlcnR5OiBmb250LXNpemUpIHtcbiAgQGlmICR2YWx1ZXMgIT0gbnVsbCB7XG4gICAgJHZhbDogcmZzLXZhbHVlKCR2YWx1ZXMpO1xuICAgICRmbHVpZFZhbDogcmZzLWZsdWlkLXZhbHVlKCR2YWx1ZXMpO1xuXG4gICAgLy8gRG8gbm90IHByaW50IHRoZSBtZWRpYSBxdWVyeSBpZiByZXNwb25zaXZlICYgbm9uLXJlc3BvbnNpdmUgdmFsdWVzIGFyZSB0aGUgc2FtZVxuICAgIEBpZiAkdmFsID09ICRmbHVpZFZhbCB7XG4gICAgICAjeyRwcm9wZXJ0eX06ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIF9yZnMtcnVsZSB7XG4gICAgICAgICN7JHByb3BlcnR5fTogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgJHZhbCwgJGZsdWlkVmFsKTtcblxuICAgICAgICAvLyBJbmNsdWRlIHNhZmFyaSBpZnJhbWUgcmVzaXplIGZpeCBpZiBuZWVkZWRcbiAgICAgICAgbWluLXdpZHRoOiBpZigkcmZzLXNhZmFyaS1pZnJhbWUtcmVzaXplLWJ1Zy1maXgsICgwICogMXZ3KSwgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIF9yZnMtbWVkaWEtcXVlcnktcnVsZSB7XG4gICAgICAgICN7JHByb3BlcnR5fTogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgJGZsdWlkVmFsLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gU2hvcnRoYW5kIGhlbHBlciBtaXhpbnNcbkBtaXhpbiBmb250LXNpemUoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUpO1xufVxuXG5AbWl4aW4gcGFkZGluZygkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZyk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLXRvcCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZy10b3ApO1xufVxuXG5AbWl4aW4gcGFkZGluZy1yaWdodCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZy1yaWdodCk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLWJvdHRvbSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZy1ib3R0b20pO1xufVxuXG5AbWl4aW4gcGFkZGluZy1sZWZ0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLWxlZnQpO1xufVxuXG5AbWl4aW4gbWFyZ2luKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4pO1xufVxuXG5AbWl4aW4gbWFyZ2luLXRvcCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLXRvcCk7XG59XG5cbkBtaXhpbiBtYXJnaW4tcmlnaHQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1yaWdodCk7XG59XG5cbkBtaXhpbiBtYXJnaW4tYm90dG9tKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tYm90dG9tKTtcbn1cblxuQG1peGluIG1hcmdpbi1sZWZ0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tbGVmdCk7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnQsIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZSwgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxuXG5cbi8vIFJlYm9vdFxuLy9cbi8vIE5vcm1hbGl6YXRpb24gb2YgSFRNTCBlbGVtZW50cywgbWFudWFsbHkgZm9ya2VkIGZyb20gTm9ybWFsaXplLmNzcyB0byByZW1vdmVcbi8vIHN0eWxlcyB0YXJnZXRpbmcgaXJyZWxldmFudCBicm93c2VycyB3aGlsZSBhcHBseWluZyBuZXcgc3R5bGVzLlxuLy9cbi8vIE5vcm1hbGl6ZSBpcyBsaWNlbnNlZCBNSVQuIGh0dHBzOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3NcblxuXG4vLyBEb2N1bWVudFxuLy9cbi8vIENoYW5nZSBmcm9tIGBib3gtc2l6aW5nOiBjb250ZW50LWJveGAgc28gdGhhdCBgd2lkdGhgIGlzIG5vdCBhZmZlY3RlZCBieSBgcGFkZGluZ2Agb3IgYGJvcmRlcmAuXG5cbiosXG4qOjpiZWZvcmUsXG4qOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cblxuLy8gUm9vdFxuLy9cbi8vIEFiaWxpdHkgdG8gdGhlIHZhbHVlIG9mIHRoZSByb290IGZvbnQgc2l6ZXMsIGFmZmVjdGluZyB0aGUgdmFsdWUgb2YgYHJlbWAuXG4vLyBudWxsIGJ5IGRlZmF1bHQsIHRodXMgbm90aGluZyBpcyBnZW5lcmF0ZWQuXG5cbjpyb290IHtcbiAgQGlmICRmb250LXNpemUtcm9vdCAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fXJvb3QtZm9udC1zaXplKSk7XG4gIH1cblxuICBAaWYgJGVuYWJsZS1zbW9vdGgtc2Nyb2xsIHtcbiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcbiAgICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIEJvZHlcbi8vXG4vLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4vLyAyLiBBcyBhIGJlc3QgcHJhY3RpY2UsIGFwcGx5IGEgZGVmYXVsdCBgYmFja2dyb3VuZC1jb2xvcmAuXG4vLyAzLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cbi8vIDQuIENoYW5nZSB0aGUgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IHRvIGJlIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgaW4gaU9TLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgcmVib290LWJvZHktcnVsZXNcbmJvZHkge1xuICBtYXJnaW46IDA7IC8vIDFcbiAgZm9udC1mYW1pbHk6IHZhcigtLSN7JHByZWZpeH1ib2R5LWZvbnQtZmFtaWx5KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1ib2R5LWZvbnQtc2l6ZSkpO1xuICBmb250LXdlaWdodDogdmFyKC0tI3skcHJlZml4fWJvZHktZm9udC13ZWlnaHQpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tI3skcHJlZml4fWJvZHktbGluZS1oZWlnaHQpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJvZHktY29sb3IpO1xuICB0ZXh0LWFsaWduOiB2YXIoLS0jeyRwcmVmaXh9Ym9keS10ZXh0LWFsaWduKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWJvZHktYmcpOyAvLyAyXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gM1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoJGJsYWNrLCAwKTsgLy8gNFxufVxuLy8gc2Nzcy1kb2NzLWVuZCByZWJvb3QtYm9keS1ydWxlc1xuXG5cbi8vIENvbnRlbnQgZ3JvdXBpbmdcbi8vXG4vLyAxLiBSZXNldCBGaXJlZm94J3MgZ3JheSBjb2xvclxuXG5ociB7XG4gIG1hcmdpbjogJGhyLW1hcmdpbi15IDA7XG4gIGNvbG9yOiAkaHItY29sb3I7IC8vIDFcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItdG9wOiAkaHItYm9yZGVyLXdpZHRoIHNvbGlkICRoci1ib3JkZXItY29sb3I7XG4gIG9wYWNpdHk6ICRoci1vcGFjaXR5O1xufVxuXG5cbi8vIFR5cG9ncmFwaHlcbi8vXG4vLyAxLiBSZW1vdmUgdG9wIG1hcmdpbnMgZnJvbSBoZWFkaW5nc1xuLy8gICAgQnkgZGVmYXVsdCwgYDxoMT5gLWA8aDY+YCBhbGwgcmVjZWl2ZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zLiBXZSBudWtlIHRoZSB0b3Bcbi8vICAgIG1hcmdpbiBmb3IgZWFzaWVyIGNvbnRyb2wgd2l0aGluIHR5cGUgc2NhbGVzIGFzIGl0IGF2b2lkcyBtYXJnaW4gY29sbGFwc2luZy5cblxuJWhlYWRpbmcge1xuICBtYXJnaW4tdG9wOiAwOyAvLyAxXG4gIG1hcmdpbi1ib3R0b206ICRoZWFkaW5ncy1tYXJnaW4tYm90dG9tO1xuICBmb250LWZhbWlseTogJGhlYWRpbmdzLWZvbnQtZmFtaWx5O1xuICBmb250LXN0eWxlOiAkaGVhZGluZ3MtZm9udC1zdHlsZTtcbiAgZm9udC13ZWlnaHQ6ICRoZWFkaW5ncy1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWFkaW5ncy1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRoZWFkaW5ncy1jb2xvcjtcbn1cblxuaDEge1xuICBAZXh0ZW5kICVoZWFkaW5nO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGgxLWZvbnQtc2l6ZSk7XG59XG5cbmgyIHtcbiAgQGV4dGVuZCAlaGVhZGluZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoMi1mb250LXNpemUpO1xufVxuXG5oMyB7XG4gIEBleHRlbmQgJWhlYWRpbmc7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDMtZm9udC1zaXplKTtcbn1cblxuaDQge1xuICBAZXh0ZW5kICVoZWFkaW5nO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGg0LWZvbnQtc2l6ZSk7XG59XG5cbmg1IHtcbiAgQGV4dGVuZCAlaGVhZGluZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoNS1mb250LXNpemUpO1xufVxuXG5oNiB7XG4gIEBleHRlbmQgJWhlYWRpbmc7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDYtZm9udC1zaXplKTtcbn1cblxuXG4vLyBSZXNldCBtYXJnaW5zIG9uIHBhcmFncmFwaHNcbi8vXG4vLyBTaW1pbGFybHksIHRoZSB0b3AgbWFyZ2luIG9uIGA8cD5gcyBnZXQgcmVzZXQuIEhvd2V2ZXIsIHdlIGFsc28gcmVzZXQgdGhlXG4vLyBib3R0b20gbWFyZ2luIHRvIHVzZSBgcmVtYCB1bml0cyBpbnN0ZWFkIG9mIGBlbWAuXG5cbnAge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG59XG5cblxuLy8gQWJicmV2aWF0aW9uc1xuLy9cbi8vIDEuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBPcGVyYSwgYW5kIFNhZmFyaS5cbi8vIDIuIEFkZCBleHBsaWNpdCBjdXJzb3IgdG8gaW5kaWNhdGUgY2hhbmdlZCBiZWhhdmlvci5cbi8vIDMuIFByZXZlbnQgdGhlIHRleHQtZGVjb3JhdGlvbiB0byBiZSBza2lwcGVkLlxuXG5hYmJyW3RpdGxlXSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gMVxuICBjdXJzb3I6IGhlbHA7IC8vIDJcbiAgdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rOiBub25lOyAvLyAzXG59XG5cblxuLy8gQWRkcmVzc1xuXG5hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxuXG4vLyBMaXN0c1xuXG5vbCxcbnVsIHtcbiAgcGFkZGluZy1sZWZ0OiAycmVtO1xufVxuXG5vbCxcbnVsLFxuZGwge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG5vbCBvbCxcbnVsIHVsLFxub2wgdWwsXG51bCBvbCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbmR0IHtcbiAgZm9udC13ZWlnaHQ6ICRkdC1mb250LXdlaWdodDtcbn1cblxuLy8gMS4gVW5kbyBicm93c2VyIGRlZmF1bHRcblxuZGQge1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IDA7IC8vIDFcbn1cblxuXG4vLyBCbG9ja3F1b3RlXG5cbmJsb2NrcXVvdGUge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG5cbi8vIFN0cm9uZ1xuLy9cbi8vIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmlcblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZGVyO1xufVxuXG5cbi8vIFNtYWxsXG4vL1xuLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnNcblxuc21hbGwge1xuICBAaW5jbHVkZSBmb250LXNpemUoJHNtYWxsLWZvbnQtc2l6ZSk7XG59XG5cblxuLy8gTWFya1xuXG5tYXJrIHtcbiAgcGFkZGluZzogJG1hcmstcGFkZGluZztcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWhpZ2hsaWdodC1iZyk7XG59XG5cblxuLy8gU3ViIGFuZCBTdXBcbi8vXG4vLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbi8vIGFsbCBicm93c2Vycy5cblxuc3ViLFxuc3VwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBmb250LXNpemUoJHN1Yi1zdXAtZm9udC1zaXplKTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHsgYm90dG9tOiAtLjI1ZW07IH1cbnN1cCB7IHRvcDogLS41ZW07IH1cblxuXG4vLyBMaW5rc1xuXG5hIHtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1saW5rLWNvbG9yKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1kZWNvcmF0aW9uO1xuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bGluay1ob3Zlci1jb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1ob3Zlci1kZWNvcmF0aW9uO1xuICB9XG59XG5cbi8vIEFuZCB1bmRvIHRoZXNlIHN0eWxlcyBmb3IgcGxhY2Vob2xkZXIgbGlua3MvbmFtZWQgYW5jaG9ycyAod2l0aG91dCBocmVmKS5cbi8vIEl0IHdvdWxkIGJlIG1vcmUgc3RyYWlnaHRmb3J3YXJkIHRvIGp1c3QgdXNlIGFbaHJlZl0gaW4gcHJldmlvdXMgYmxvY2ssIGJ1dCB0aGF0XG4vLyBjYXVzZXMgc3BlY2lmaWNpdHkgaXNzdWVzIGluIG1hbnkgb3RoZXIgc3R5bGVzIHRoYXQgYXJlIHRvbyBjb21wbGV4IHRvIGZpeC5cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE5NDAyXG5cbmE6bm90KFtocmVmXSk6bm90KFtjbGFzc10pIHtcbiAgJixcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG59XG5cblxuLy8gQ29kZVxuXG5wcmUsXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktY29kZTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDFlbSk7IC8vIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbn1cblxuLy8gMS4gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdCB0b3AgbWFyZ2luXG4vLyAyLiBSZXNldCBicm93c2VyIGRlZmF1bHQgb2YgYDFlbWAgdG8gdXNlIGByZW1gc1xuLy8gMy4gRG9uJ3QgYWxsb3cgY29udGVudCB0byBicmVhayBvdXRzaWRlXG5cbnByZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAwOyAvLyAxXG4gIG1hcmdpbi1ib3R0b206IDFyZW07IC8vIDJcbiAgb3ZlcmZsb3c6IGF1dG87IC8vIDNcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRjb2RlLWZvbnQtc2l6ZSk7XG4gIGNvbG9yOiAkcHJlLWNvbG9yO1xuXG4gIC8vIEFjY291bnQgZm9yIHNvbWUgY29kZSBvdXRwdXRzIHRoYXQgcGxhY2UgY29kZSB0YWdzIGluIHByZSB0YWdzXG4gIGNvZGUge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZShpbmhlcml0KTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIH1cbn1cblxuY29kZSB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY29kZS1mb250LXNpemUpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWNvZGUtY29sb3IpO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cbiAgLy8gU3RyZWFtbGluZSB0aGUgc3R5bGUgd2hlbiBpbnNpZGUgYW5jaG9ycyB0byBhdm9pZCBicm9rZW4gdW5kZXJsaW5lIGFuZCBtb3JlXG4gIGEgPiAmIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxufVxuXG5rYmQge1xuICBwYWRkaW5nOiAka2JkLXBhZGRpbmcteSAka2JkLXBhZGRpbmcteDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRrYmQtZm9udC1zaXplKTtcbiAgY29sb3I6ICRrYmQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRrYmQtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtc20pO1xuXG4gIGtiZCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoMWVtKTtcbiAgICBmb250LXdlaWdodDogJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ7XG4gIH1cbn1cblxuXG4vLyBGaWd1cmVzXG4vL1xuLy8gQXBwbHkgYSBjb25zaXN0ZW50IG1hcmdpbiBzdHJhdGVneSAobWF0Y2hlcyBvdXIgdHlwZSBzdHlsZXMpLlxuXG5maWd1cmUge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG5cbi8vIEltYWdlcyBhbmQgY29udGVudFxuXG5pbWcsXG5zdmcge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG5cbi8vIFRhYmxlc1xuLy9cbi8vIFByZXZlbnQgZG91YmxlIGJvcmRlcnNcblxudGFibGUge1xuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxuY2FwdGlvbiB7XG4gIHBhZGRpbmctdG9wOiAkdGFibGUtY2VsbC1wYWRkaW5nLXk7XG4gIHBhZGRpbmctYm90dG9tOiAkdGFibGUtY2VsbC1wYWRkaW5nLXk7XG4gIGNvbG9yOiAkdGFibGUtY2FwdGlvbi1jb2xvcjtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLy8gMS4gUmVtb3ZlcyBmb250LXdlaWdodCBib2xkIGJ5IGluaGVyaXRpbmdcbi8vIDIuIE1hdGNoZXMgZGVmYXVsdCBgPHRkPmAgYWxpZ25tZW50IGJ5IGluaGVyaXRpbmcgYHRleHQtYWxpZ25gLlxuLy8gMy4gRml4IGFsaWdubWVudCBmb3IgU2FmYXJpXG5cbnRoIHtcbiAgZm9udC13ZWlnaHQ6ICR0YWJsZS10aC1mb250LXdlaWdodDsgLy8gMVxuICB0ZXh0LWFsaWduOiBpbmhlcml0OyAvLyAyXG4gIHRleHQtYWxpZ246IC13ZWJraXQtbWF0Y2gtcGFyZW50OyAvLyAzXG59XG5cbnRoZWFkLFxudGJvZHksXG50Zm9vdCxcbnRyLFxudGQsXG50aCB7XG4gIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAwO1xufVxuXG5cbi8vIEZvcm1zXG4vL1xuLy8gMS4gQWxsb3cgbGFiZWxzIHRvIHVzZSBgbWFyZ2luYCBmb3Igc3BhY2luZy5cblxubGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8vIDFcbn1cblxuLy8gUmVtb3ZlIHRoZSBkZWZhdWx0IGBib3JkZXItcmFkaXVzYCB0aGF0IG1hY09TIENocm9tZSBhZGRzLlxuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMjQwOTNcblxuYnV0dG9uIHtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWRpc2FsbG93ZWQtbGlzdFxuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4vLyBFeHBsaWNpdGx5IHJlbW92ZSBmb2N1cyBvdXRsaW5lIGluIENocm9taXVtIHdoZW4gaXQgc2hvdWxkbid0IGJlXG4vLyB2aXNpYmxlIChlLmcuIGFzIHJlc3VsdCBvZiBtb3VzZSBjbGljayBvciB0b3VjaCB0YXApLiBJdCBhbHJlYWR5XG4vLyBzaG91bGQgYmUgZG9pbmcgdGhpcyBhdXRvbWF0aWNhbGx5LCBidXQgc2VlbXMgdG8gY3VycmVudGx5IGJlXG4vLyBjb25mdXNlZCBhbmQgYXBwbGllcyBpdHMgdmVyeSB2aXNpYmxlIHR3by10b25lIG91dGxpbmUgYW55d2F5LlxuXG5idXR0b246Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gIG91dGxpbmU6IDA7XG59XG5cbi8vIDEuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaVxuXG5pbnB1dCxcbmJ1dHRvbixcbnNlbGVjdCxcbm9wdGdyb3VwLFxudGV4dGFyZWEge1xuICBtYXJnaW46IDA7IC8vIDFcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShpbmhlcml0KTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi8vIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveFxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG4vLyBTZXQgdGhlIGN1cnNvciBmb3Igbm9uLWA8YnV0dG9uPmAgYnV0dG9uc1xuLy9cbi8vIERldGFpbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMzA1NjJcbltyb2xlPVwiYnV0dG9uXCJdIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5zZWxlY3Qge1xuICAvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHdvcmQtd3JhcCBpbiBTYWZhcmkuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI0OTkwXG4gIHdvcmQtd3JhcDogbm9ybWFsO1xuXG4gIC8vIFVuZG8gdGhlIG9wYWNpdHkgY2hhbmdlIGZyb20gQ2hyb21lXG4gICY6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLy8gUmVtb3ZlIHRoZSBkcm9wZG93biBhcnJvdyBvbmx5IGZyb20gdGV4dCB0eXBlIGlucHV0cyBidWlsdCB3aXRoIGRhdGFsaXN0cyBpbiBDaHJvbWUuXG4vLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzU0OTk3MTE4XG5cbltsaXN0XTpub3QoW3R5cGU9XCJkYXRlXCJdKTpub3QoW3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSk6bm90KFt0eXBlPVwibW9udGhcIl0pOm5vdChbdHlwZT1cIndlZWtcIl0pOm5vdChbdHlwZT1cInRpbWVcIl0pOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8vIDEuIFByZXZlbnQgYSBXZWJLaXQgYnVnIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYFxuLy8gICAgY29udHJvbHMgaW4gQW5kcm9pZCA0LlxuLy8gMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbi8vIDMuIE9waW5pb25hdGVkOiBhZGQgXCJoYW5kXCIgY3Vyc29yIHRvIG5vbi1kaXNhYmxlZCBidXR0b24gZWxlbWVudHMuXG5cbmJ1dHRvbixcblt0eXBlPVwiYnV0dG9uXCJdLCAvLyAxXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLy8gMlxuXG4gIEBpZiAkZW5hYmxlLWJ1dHRvbi1wb2ludGVycyB7XG4gICAgJjpub3QoOmRpc2FibGVkKSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7IC8vIDNcbiAgICB9XG4gIH1cbn1cblxuLy8gUmVtb3ZlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBmcm9tIEZpcmVmb3gsIGJ1dCBkb24ndCByZXN0b3JlIHRoZSBvdXRsaW5lIGxpa2UgTm9ybWFsaXplLlxuXG46Oi1tb3otZm9jdXMtaW5uZXIge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8vIDEuIFRleHRhcmVhcyBzaG91bGQgcmVhbGx5IG9ubHkgcmVzaXplIHZlcnRpY2FsbHkgc28gdGhleSBkb24ndCBicmVhayB0aGVpciAoaG9yaXpvbnRhbCkgY29udGFpbmVycy5cblxudGV4dGFyZWEge1xuICByZXNpemU6IHZlcnRpY2FsOyAvLyAxXG59XG5cbi8vIDEuIEJyb3dzZXJzIHNldCBhIGRlZmF1bHQgYG1pbi13aWR0aDogbWluLWNvbnRlbnQ7YCBvbiBmaWVsZHNldHMsXG4vLyAgICB1bmxpa2UgZS5nLiBgPGRpdj5gcywgd2hpY2ggaGF2ZSBgbWluLXdpZHRoOiAwO2AgYnkgZGVmYXVsdC5cbi8vICAgIFNvIHdlIHJlc2V0IHRoYXQgdG8gZW5zdXJlIGZpZWxkc2V0cyBiZWhhdmUgbW9yZSBsaWtlIGEgc3RhbmRhcmQgYmxvY2sgZWxlbWVudC5cbi8vICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzEyMzU5XG4vLyAgICBhbmQgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvI3RoZS1maWVsZHNldC1hbmQtbGVnZW5kLWVsZW1lbnRzXG4vLyAyLiBSZXNldCB0aGUgZGVmYXVsdCBvdXRsaW5lIGJlaGF2aW9yIG9mIGZpZWxkc2V0cyBzbyB0aGV5IGRvbid0IGFmZmVjdCBwYWdlIGxheW91dC5cblxuZmllbGRzZXQge1xuICBtaW4td2lkdGg6IDA7IC8vIDFcbiAgcGFkZGluZzogMDsgLy8gMlxuICBtYXJnaW46IDA7IC8vIDJcbiAgYm9yZGVyOiAwOyAvLyAyXG59XG5cbi8vIDEuIEJ5IHVzaW5nIGBmbG9hdDogbGVmdGAsIHRoZSBsZWdlbmQgd2lsbCBiZWhhdmUgbGlrZSBhIGJsb2NrIGVsZW1lbnQuXG4vLyAgICBUaGlzIHdheSB0aGUgYm9yZGVyIG9mIGEgZmllbGRzZXQgd3JhcHMgYXJvdW5kIHRoZSBsZWdlbmQgaWYgcHJlc2VudC5cbi8vIDIuIEZpeCB3cmFwcGluZyBidWcuXG4vLyAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yOTcxMlxuXG5sZWdlbmQge1xuICBmbG9hdDogbGVmdDsgLy8gMVxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luLWJvdHRvbTogJGxlZ2VuZC1tYXJnaW4tYm90dG9tO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGxlZ2VuZC1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGxlZ2VuZC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG5cbiAgKyAqIHtcbiAgICBjbGVhcjogbGVmdDsgLy8gMlxuICB9XG59XG5cbi8vIEZpeCBoZWlnaHQgb2YgaW5wdXRzIHdpdGggYSB0eXBlIG9mIGRhdGV0aW1lLWxvY2FsLCBkYXRlLCBtb250aCwgd2Vlaywgb3IgdGltZVxuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTg4NDJcblxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtZmllbGRzLXdyYXBwZXIsXG46Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC10ZXh0LFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWludXRlLFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCxcbjo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWRheS1maWVsZCxcbjo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1vbnRoLWZpZWxkLFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQteWVhci1maWVsZCB7XG4gIHBhZGRpbmc6IDA7XG59XG5cbjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLy8gMS4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4vLyAyLiBUaGlzIG92ZXJyaWRlcyB0aGUgZXh0cmEgcm91bmRlZCBjb3JuZXJzIG9uIHNlYXJjaCBpbnB1dHMgaW4gaU9TIHNvIHRoYXQgb3VyXG4vLyAgICBgLmZvcm0tY29udHJvbGAgY2xhc3MgY2FuIHByb3Blcmx5IHN0eWxlIHRoZW0uIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCBzaW1wbHlcbi8vICAgIGJlIGFkZGVkIHRvIGAuZm9ybS1jb250cm9sYCBhcyBpdCdzIG5vdCBzcGVjaWZpYyBlbm91Z2guIEZvciBkZXRhaWxzLCBzZWVcbi8vICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTE1ODYuXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8vIDFcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8vIDJcbn1cblxuLy8gMS4gQSBmZXcgaW5wdXQgdHlwZXMgc2hvdWxkIHN0YXkgTFRSXG4vLyBTZWUgaHR0cHM6Ly9ydGxzdHlsaW5nLmNvbS9wb3N0cy9ydGwtc3R5bGluZyNmb3JtLWlucHV0c1xuLy8gMi4gUlRMIG9ubHkgb3V0cHV0XG4vLyBTZWUgaHR0cHM6Ly9ydGxjc3MuY29tL2xlYXJuL3VzYWdlLWd1aWRlL2NvbnRyb2wtZGlyZWN0aXZlcy8jcmF3XG5cbi8qIHJ0bDpyYXc6XG5bdHlwZT1cInRlbFwiXSxcblt0eXBlPVwidXJsXCJdLFxuW3R5cGU9XCJlbWFpbFwiXSxcblt0eXBlPVwibnVtYmVyXCJdIHtcbiAgZGlyZWN0aW9uOiBsdHI7XG59XG4qL1xuXG4vLyBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG5cbjo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLy8gUmVtb3ZlIHBhZGRpbmcgYXJvdW5kIGNvbG9yIHBpY2tlcnMgaW4gd2Via2l0IGJyb3dzZXJzXG5cbjo6LXdlYmtpdC1jb2xvci1zd2F0Y2gtd3JhcHBlciB7XG4gIHBhZGRpbmc6IDA7XG59XG5cblxuLy8gMS4gSW5oZXJpdCBmb250IGZhbWlseSBhbmQgbGluZSBoZWlnaHQgZm9yIGZpbGUgaW5wdXQgYnV0dG9uc1xuLy8gMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cblxuOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XG4gIGZvbnQ6IGluaGVyaXQ7IC8vIDFcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8vIDJcbn1cblxuLy8gQ29ycmVjdCBlbGVtZW50IGRpc3BsYXlzXG5cbm91dHB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLy8gUmVtb3ZlIGJvcmRlciBmcm9tIGlmcmFtZVxuXG5pZnJhbWUge1xuICBib3JkZXI6IDA7XG59XG5cbi8vIFN1bW1hcnlcbi8vXG4vLyAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnNcblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgLy8gMVxuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cblxuLy8gUHJvZ3Jlc3Ncbi8vXG4vLyBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuXG4vLyBIaWRkZW4gYXR0cmlidXRlXG4vL1xuLy8gQWx3YXlzIGhpZGUgYW4gZWxlbWVudCB3aXRoIHRoZSBgaGlkZGVuYCBIVE1MIGF0dHJpYnV0ZS5cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCIvLyBWYXJpYWJsZXNcbi8vXG4vLyBWYXJpYWJsZXMgc2hvdWxkIGZvbGxvdyB0aGUgYCRjb21wb25lbnQtc3RhdGUtcHJvcGVydHktc2l6ZWAgZm9ybXVsYSBmb3Jcbi8vIGNvbnNpc3RlbnQgbmFtaW5nLiBFeDogJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yIGFuZCAkbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXhzLlxuXG4vLyBDb2xvciBzeXN0ZW1cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGdyYXktY29sb3ItdmFyaWFibGVzXG4kd2hpdGU6ICAgICNmZmYgIWRlZmF1bHQ7XG4kZ3JheS0xMDA6ICNmOGY5ZmEgIWRlZmF1bHQ7XG4kZ3JheS0yMDA6ICNlOWVjZWYgIWRlZmF1bHQ7XG4kZ3JheS0zMDA6ICNkZWUyZTYgIWRlZmF1bHQ7XG4kZ3JheS00MDA6ICNjZWQ0ZGEgIWRlZmF1bHQ7XG4kZ3JheS01MDA6ICNhZGI1YmQgIWRlZmF1bHQ7XG4kZ3JheS02MDA6ICM2Yzc1N2QgIWRlZmF1bHQ7XG4kZ3JheS03MDA6ICM0OTUwNTcgIWRlZmF1bHQ7XG4kZ3JheS04MDA6ICMzNDNhNDAgIWRlZmF1bHQ7XG4kZ3JheS05MDA6ICMyMTI1MjkgIWRlZmF1bHQ7XG4kYmxhY2s6ICAgICMwMDAgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGdyYXktY29sb3ItdmFyaWFibGVzXG5cbi8vIGZ1c3YtZGlzYWJsZVxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGdyYXktY29sb3JzLW1hcFxuJGdyYXlzOiAoXG4gIFwiMTAwXCI6ICRncmF5LTEwMCxcbiAgXCIyMDBcIjogJGdyYXktMjAwLFxuICBcIjMwMFwiOiAkZ3JheS0zMDAsXG4gIFwiNDAwXCI6ICRncmF5LTQwMCxcbiAgXCI1MDBcIjogJGdyYXktNTAwLFxuICBcIjYwMFwiOiAkZ3JheS02MDAsXG4gIFwiNzAwXCI6ICRncmF5LTcwMCxcbiAgXCI4MDBcIjogJGdyYXktODAwLFxuICBcIjkwMFwiOiAkZ3JheS05MDBcbikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGdyYXktY29sb3JzLW1hcFxuLy8gZnVzdi1lbmFibGVcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNvbG9yLXZhcmlhYmxlc1xuJGJsdWU6ICAgICMwZDZlZmQgIWRlZmF1bHQ7XG4kaW5kaWdvOiAgIzY2MTBmMiAhZGVmYXVsdDtcbiRwdXJwbGU6ICAjNmY0MmMxICFkZWZhdWx0O1xuJHBpbms6ICAgICNkNjMzODQgIWRlZmF1bHQ7XG4kcmVkOiAgICAgI2RjMzU0NSAhZGVmYXVsdDtcbiRvcmFuZ2U6ICAjZmQ3ZTE0ICFkZWZhdWx0O1xuJHllbGxvdzogICNmZmMxMDcgIWRlZmF1bHQ7XG4kZ3JlZW46ICAgIzE5ODc1NCAhZGVmYXVsdDtcbiR0ZWFsOiAgICAjMjBjOTk3ICFkZWZhdWx0O1xuJGN5YW46ICAgICMwZGNhZjAgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGNvbG9yLXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgY29sb3JzLW1hcFxuJGNvbG9yczogKFxuICBcImJsdWVcIjogICAgICAgJGJsdWUsXG4gIFwiaW5kaWdvXCI6ICAgICAkaW5kaWdvLFxuICBcInB1cnBsZVwiOiAgICAgJHB1cnBsZSxcbiAgXCJwaW5rXCI6ICAgICAgICRwaW5rLFxuICBcInJlZFwiOiAgICAgICAgJHJlZCxcbiAgXCJvcmFuZ2VcIjogICAgICRvcmFuZ2UsXG4gIFwieWVsbG93XCI6ICAgICAkeWVsbG93LFxuICBcImdyZWVuXCI6ICAgICAgJGdyZWVuLFxuICBcInRlYWxcIjogICAgICAgJHRlYWwsXG4gIFwiY3lhblwiOiAgICAgICAkY3lhbixcbiAgXCJibGFja1wiOiAgICAgICRibGFjayxcbiAgXCJ3aGl0ZVwiOiAgICAgICR3aGl0ZSxcbiAgXCJncmF5XCI6ICAgICAgICRncmF5LTYwMCxcbiAgXCJncmF5LWRhcmtcIjogICRncmF5LTgwMFxuKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgY29sb3JzLW1hcFxuXG4vLyBUaGUgY29udHJhc3QgcmF0aW8gdG8gcmVhY2ggYWdhaW5zdCB3aGl0ZSwgdG8gZGV0ZXJtaW5lIGlmIGNvbG9yIGNoYW5nZXMgZnJvbSBcImxpZ2h0XCIgdG8gXCJkYXJrXCIuIEFjY2VwdGFibGUgdmFsdWVzIGZvciBXQ0FHIDIuMCBhcmUgMywgNC41IGFuZCA3LlxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAvI3Zpc3VhbC1hdWRpby1jb250cmFzdC1jb250cmFzdFxuJG1pbi1jb250cmFzdC1yYXRpbzogICA0LjUgIWRlZmF1bHQ7XG5cbi8vIEN1c3RvbWl6ZSB0aGUgbGlnaHQgYW5kIGRhcmsgdGV4dCBjb2xvcnMgZm9yIHVzZSBpbiBvdXIgY29sb3IgY29udHJhc3QgZnVuY3Rpb24uXG4kY29sb3ItY29udHJhc3QtZGFyazogICAgICAkYmxhY2sgIWRlZmF1bHQ7XG4kY29sb3ItY29udHJhc3QtbGlnaHQ6ICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vIGZ1c3YtZGlzYWJsZVxuJGJsdWUtMTAwOiB0aW50LWNvbG9yKCRibHVlLCA4MCUpICFkZWZhdWx0O1xuJGJsdWUtMjAwOiB0aW50LWNvbG9yKCRibHVlLCA2MCUpICFkZWZhdWx0O1xuJGJsdWUtMzAwOiB0aW50LWNvbG9yKCRibHVlLCA0MCUpICFkZWZhdWx0O1xuJGJsdWUtNDAwOiB0aW50LWNvbG9yKCRibHVlLCAyMCUpICFkZWZhdWx0O1xuJGJsdWUtNTAwOiAkYmx1ZSAhZGVmYXVsdDtcbiRibHVlLTYwMDogc2hhZGUtY29sb3IoJGJsdWUsIDIwJSkgIWRlZmF1bHQ7XG4kYmx1ZS03MDA6IHNoYWRlLWNvbG9yKCRibHVlLCA0MCUpICFkZWZhdWx0O1xuJGJsdWUtODAwOiBzaGFkZS1jb2xvcigkYmx1ZSwgNjAlKSAhZGVmYXVsdDtcbiRibHVlLTkwMDogc2hhZGUtY29sb3IoJGJsdWUsIDgwJSkgIWRlZmF1bHQ7XG5cbiRpbmRpZ28tMTAwOiB0aW50LWNvbG9yKCRpbmRpZ28sIDgwJSkgIWRlZmF1bHQ7XG4kaW5kaWdvLTIwMDogdGludC1jb2xvcigkaW5kaWdvLCA2MCUpICFkZWZhdWx0O1xuJGluZGlnby0zMDA6IHRpbnQtY29sb3IoJGluZGlnbywgNDAlKSAhZGVmYXVsdDtcbiRpbmRpZ28tNDAwOiB0aW50LWNvbG9yKCRpbmRpZ28sIDIwJSkgIWRlZmF1bHQ7XG4kaW5kaWdvLTUwMDogJGluZGlnbyAhZGVmYXVsdDtcbiRpbmRpZ28tNjAwOiBzaGFkZS1jb2xvcigkaW5kaWdvLCAyMCUpICFkZWZhdWx0O1xuJGluZGlnby03MDA6IHNoYWRlLWNvbG9yKCRpbmRpZ28sIDQwJSkgIWRlZmF1bHQ7XG4kaW5kaWdvLTgwMDogc2hhZGUtY29sb3IoJGluZGlnbywgNjAlKSAhZGVmYXVsdDtcbiRpbmRpZ28tOTAwOiBzaGFkZS1jb2xvcigkaW5kaWdvLCA4MCUpICFkZWZhdWx0O1xuXG4kcHVycGxlLTEwMDogdGludC1jb2xvcigkcHVycGxlLCA4MCUpICFkZWZhdWx0O1xuJHB1cnBsZS0yMDA6IHRpbnQtY29sb3IoJHB1cnBsZSwgNjAlKSAhZGVmYXVsdDtcbiRwdXJwbGUtMzAwOiB0aW50LWNvbG9yKCRwdXJwbGUsIDQwJSkgIWRlZmF1bHQ7XG4kcHVycGxlLTQwMDogdGludC1jb2xvcigkcHVycGxlLCAyMCUpICFkZWZhdWx0O1xuJHB1cnBsZS01MDA6ICRwdXJwbGUgIWRlZmF1bHQ7XG4kcHVycGxlLTYwMDogc2hhZGUtY29sb3IoJHB1cnBsZSwgMjAlKSAhZGVmYXVsdDtcbiRwdXJwbGUtNzAwOiBzaGFkZS1jb2xvcigkcHVycGxlLCA0MCUpICFkZWZhdWx0O1xuJHB1cnBsZS04MDA6IHNoYWRlLWNvbG9yKCRwdXJwbGUsIDYwJSkgIWRlZmF1bHQ7XG4kcHVycGxlLTkwMDogc2hhZGUtY29sb3IoJHB1cnBsZSwgODAlKSAhZGVmYXVsdDtcblxuJHBpbmstMTAwOiB0aW50LWNvbG9yKCRwaW5rLCA4MCUpICFkZWZhdWx0O1xuJHBpbmstMjAwOiB0aW50LWNvbG9yKCRwaW5rLCA2MCUpICFkZWZhdWx0O1xuJHBpbmstMzAwOiB0aW50LWNvbG9yKCRwaW5rLCA0MCUpICFkZWZhdWx0O1xuJHBpbmstNDAwOiB0aW50LWNvbG9yKCRwaW5rLCAyMCUpICFkZWZhdWx0O1xuJHBpbmstNTAwOiAkcGluayAhZGVmYXVsdDtcbiRwaW5rLTYwMDogc2hhZGUtY29sb3IoJHBpbmssIDIwJSkgIWRlZmF1bHQ7XG4kcGluay03MDA6IHNoYWRlLWNvbG9yKCRwaW5rLCA0MCUpICFkZWZhdWx0O1xuJHBpbmstODAwOiBzaGFkZS1jb2xvcigkcGluaywgNjAlKSAhZGVmYXVsdDtcbiRwaW5rLTkwMDogc2hhZGUtY29sb3IoJHBpbmssIDgwJSkgIWRlZmF1bHQ7XG5cbiRyZWQtMTAwOiB0aW50LWNvbG9yKCRyZWQsIDgwJSkgIWRlZmF1bHQ7XG4kcmVkLTIwMDogdGludC1jb2xvcigkcmVkLCA2MCUpICFkZWZhdWx0O1xuJHJlZC0zMDA6IHRpbnQtY29sb3IoJHJlZCwgNDAlKSAhZGVmYXVsdDtcbiRyZWQtNDAwOiB0aW50LWNvbG9yKCRyZWQsIDIwJSkgIWRlZmF1bHQ7XG4kcmVkLTUwMDogJHJlZCAhZGVmYXVsdDtcbiRyZWQtNjAwOiBzaGFkZS1jb2xvcigkcmVkLCAyMCUpICFkZWZhdWx0O1xuJHJlZC03MDA6IHNoYWRlLWNvbG9yKCRyZWQsIDQwJSkgIWRlZmF1bHQ7XG4kcmVkLTgwMDogc2hhZGUtY29sb3IoJHJlZCwgNjAlKSAhZGVmYXVsdDtcbiRyZWQtOTAwOiBzaGFkZS1jb2xvcigkcmVkLCA4MCUpICFkZWZhdWx0O1xuXG4kb3JhbmdlLTEwMDogdGludC1jb2xvcigkb3JhbmdlLCA4MCUpICFkZWZhdWx0O1xuJG9yYW5nZS0yMDA6IHRpbnQtY29sb3IoJG9yYW5nZSwgNjAlKSAhZGVmYXVsdDtcbiRvcmFuZ2UtMzAwOiB0aW50LWNvbG9yKCRvcmFuZ2UsIDQwJSkgIWRlZmF1bHQ7XG4kb3JhbmdlLTQwMDogdGludC1jb2xvcigkb3JhbmdlLCAyMCUpICFkZWZhdWx0O1xuJG9yYW5nZS01MDA6ICRvcmFuZ2UgIWRlZmF1bHQ7XG4kb3JhbmdlLTYwMDogc2hhZGUtY29sb3IoJG9yYW5nZSwgMjAlKSAhZGVmYXVsdDtcbiRvcmFuZ2UtNzAwOiBzaGFkZS1jb2xvcigkb3JhbmdlLCA0MCUpICFkZWZhdWx0O1xuJG9yYW5nZS04MDA6IHNoYWRlLWNvbG9yKCRvcmFuZ2UsIDYwJSkgIWRlZmF1bHQ7XG4kb3JhbmdlLTkwMDogc2hhZGUtY29sb3IoJG9yYW5nZSwgODAlKSAhZGVmYXVsdDtcblxuJHllbGxvdy0xMDA6IHRpbnQtY29sb3IoJHllbGxvdywgODAlKSAhZGVmYXVsdDtcbiR5ZWxsb3ctMjAwOiB0aW50LWNvbG9yKCR5ZWxsb3csIDYwJSkgIWRlZmF1bHQ7XG4keWVsbG93LTMwMDogdGludC1jb2xvcigkeWVsbG93LCA0MCUpICFkZWZhdWx0O1xuJHllbGxvdy00MDA6IHRpbnQtY29sb3IoJHllbGxvdywgMjAlKSAhZGVmYXVsdDtcbiR5ZWxsb3ctNTAwOiAkeWVsbG93ICFkZWZhdWx0O1xuJHllbGxvdy02MDA6IHNoYWRlLWNvbG9yKCR5ZWxsb3csIDIwJSkgIWRlZmF1bHQ7XG4keWVsbG93LTcwMDogc2hhZGUtY29sb3IoJHllbGxvdywgNDAlKSAhZGVmYXVsdDtcbiR5ZWxsb3ctODAwOiBzaGFkZS1jb2xvcigkeWVsbG93LCA2MCUpICFkZWZhdWx0O1xuJHllbGxvdy05MDA6IHNoYWRlLWNvbG9yKCR5ZWxsb3csIDgwJSkgIWRlZmF1bHQ7XG5cbiRncmVlbi0xMDA6IHRpbnQtY29sb3IoJGdyZWVuLCA4MCUpICFkZWZhdWx0O1xuJGdyZWVuLTIwMDogdGludC1jb2xvcigkZ3JlZW4sIDYwJSkgIWRlZmF1bHQ7XG4kZ3JlZW4tMzAwOiB0aW50LWNvbG9yKCRncmVlbiwgNDAlKSAhZGVmYXVsdDtcbiRncmVlbi00MDA6IHRpbnQtY29sb3IoJGdyZWVuLCAyMCUpICFkZWZhdWx0O1xuJGdyZWVuLTUwMDogJGdyZWVuICFkZWZhdWx0O1xuJGdyZWVuLTYwMDogc2hhZGUtY29sb3IoJGdyZWVuLCAyMCUpICFkZWZhdWx0O1xuJGdyZWVuLTcwMDogc2hhZGUtY29sb3IoJGdyZWVuLCA0MCUpICFkZWZhdWx0O1xuJGdyZWVuLTgwMDogc2hhZGUtY29sb3IoJGdyZWVuLCA2MCUpICFkZWZhdWx0O1xuJGdyZWVuLTkwMDogc2hhZGUtY29sb3IoJGdyZWVuLCA4MCUpICFkZWZhdWx0O1xuXG4kdGVhbC0xMDA6IHRpbnQtY29sb3IoJHRlYWwsIDgwJSkgIWRlZmF1bHQ7XG4kdGVhbC0yMDA6IHRpbnQtY29sb3IoJHRlYWwsIDYwJSkgIWRlZmF1bHQ7XG4kdGVhbC0zMDA6IHRpbnQtY29sb3IoJHRlYWwsIDQwJSkgIWRlZmF1bHQ7XG4kdGVhbC00MDA6IHRpbnQtY29sb3IoJHRlYWwsIDIwJSkgIWRlZmF1bHQ7XG4kdGVhbC01MDA6ICR0ZWFsICFkZWZhdWx0O1xuJHRlYWwtNjAwOiBzaGFkZS1jb2xvcigkdGVhbCwgMjAlKSAhZGVmYXVsdDtcbiR0ZWFsLTcwMDogc2hhZGUtY29sb3IoJHRlYWwsIDQwJSkgIWRlZmF1bHQ7XG4kdGVhbC04MDA6IHNoYWRlLWNvbG9yKCR0ZWFsLCA2MCUpICFkZWZhdWx0O1xuJHRlYWwtOTAwOiBzaGFkZS1jb2xvcigkdGVhbCwgODAlKSAhZGVmYXVsdDtcblxuJGN5YW4tMTAwOiB0aW50LWNvbG9yKCRjeWFuLCA4MCUpICFkZWZhdWx0O1xuJGN5YW4tMjAwOiB0aW50LWNvbG9yKCRjeWFuLCA2MCUpICFkZWZhdWx0O1xuJGN5YW4tMzAwOiB0aW50LWNvbG9yKCRjeWFuLCA0MCUpICFkZWZhdWx0O1xuJGN5YW4tNDAwOiB0aW50LWNvbG9yKCRjeWFuLCAyMCUpICFkZWZhdWx0O1xuJGN5YW4tNTAwOiAkY3lhbiAhZGVmYXVsdDtcbiRjeWFuLTYwMDogc2hhZGUtY29sb3IoJGN5YW4sIDIwJSkgIWRlZmF1bHQ7XG4kY3lhbi03MDA6IHNoYWRlLWNvbG9yKCRjeWFuLCA0MCUpICFkZWZhdWx0O1xuJGN5YW4tODAwOiBzaGFkZS1jb2xvcigkY3lhbiwgNjAlKSAhZGVmYXVsdDtcbiRjeWFuLTkwMDogc2hhZGUtY29sb3IoJGN5YW4sIDgwJSkgIWRlZmF1bHQ7XG5cbiRibHVlczogKFxuICBcImJsdWUtMTAwXCI6ICRibHVlLTEwMCxcbiAgXCJibHVlLTIwMFwiOiAkYmx1ZS0yMDAsXG4gIFwiYmx1ZS0zMDBcIjogJGJsdWUtMzAwLFxuICBcImJsdWUtNDAwXCI6ICRibHVlLTQwMCxcbiAgXCJibHVlLTUwMFwiOiAkYmx1ZS01MDAsXG4gIFwiYmx1ZS02MDBcIjogJGJsdWUtNjAwLFxuICBcImJsdWUtNzAwXCI6ICRibHVlLTcwMCxcbiAgXCJibHVlLTgwMFwiOiAkYmx1ZS04MDAsXG4gIFwiYmx1ZS05MDBcIjogJGJsdWUtOTAwXG4pICFkZWZhdWx0O1xuXG4kaW5kaWdvczogKFxuICBcImluZGlnby0xMDBcIjogJGluZGlnby0xMDAsXG4gIFwiaW5kaWdvLTIwMFwiOiAkaW5kaWdvLTIwMCxcbiAgXCJpbmRpZ28tMzAwXCI6ICRpbmRpZ28tMzAwLFxuICBcImluZGlnby00MDBcIjogJGluZGlnby00MDAsXG4gIFwiaW5kaWdvLTUwMFwiOiAkaW5kaWdvLTUwMCxcbiAgXCJpbmRpZ28tNjAwXCI6ICRpbmRpZ28tNjAwLFxuICBcImluZGlnby03MDBcIjogJGluZGlnby03MDAsXG4gIFwiaW5kaWdvLTgwMFwiOiAkaW5kaWdvLTgwMCxcbiAgXCJpbmRpZ28tOTAwXCI6ICRpbmRpZ28tOTAwXG4pICFkZWZhdWx0O1xuXG4kcHVycGxlczogKFxuICBcInB1cnBsZS0xMDBcIjogJHB1cnBsZS0xMDAsXG4gIFwicHVycGxlLTIwMFwiOiAkcHVycGxlLTIwMCxcbiAgXCJwdXJwbGUtMzAwXCI6ICRwdXJwbGUtMzAwLFxuICBcInB1cnBsZS00MDBcIjogJHB1cnBsZS00MDAsXG4gIFwicHVycGxlLTUwMFwiOiAkcHVycGxlLTUwMCxcbiAgXCJwdXJwbGUtNjAwXCI6ICRwdXJwbGUtNjAwLFxuICBcInB1cnBsZS03MDBcIjogJHB1cnBsZS03MDAsXG4gIFwicHVycGxlLTgwMFwiOiAkcHVycGxlLTgwMCxcbiAgXCJwdXJwbGUtOTAwXCI6ICRwdXJwbGUtOTAwXG4pICFkZWZhdWx0O1xuXG4kcGlua3M6IChcbiAgXCJwaW5rLTEwMFwiOiAkcGluay0xMDAsXG4gIFwicGluay0yMDBcIjogJHBpbmstMjAwLFxuICBcInBpbmstMzAwXCI6ICRwaW5rLTMwMCxcbiAgXCJwaW5rLTQwMFwiOiAkcGluay00MDAsXG4gIFwicGluay01MDBcIjogJHBpbmstNTAwLFxuICBcInBpbmstNjAwXCI6ICRwaW5rLTYwMCxcbiAgXCJwaW5rLTcwMFwiOiAkcGluay03MDAsXG4gIFwicGluay04MDBcIjogJHBpbmstODAwLFxuICBcInBpbmstOTAwXCI6ICRwaW5rLTkwMFxuKSAhZGVmYXVsdDtcblxuJHJlZHM6IChcbiAgXCJyZWQtMTAwXCI6ICRyZWQtMTAwLFxuICBcInJlZC0yMDBcIjogJHJlZC0yMDAsXG4gIFwicmVkLTMwMFwiOiAkcmVkLTMwMCxcbiAgXCJyZWQtNDAwXCI6ICRyZWQtNDAwLFxuICBcInJlZC01MDBcIjogJHJlZC01MDAsXG4gIFwicmVkLTYwMFwiOiAkcmVkLTYwMCxcbiAgXCJyZWQtNzAwXCI6ICRyZWQtNzAwLFxuICBcInJlZC04MDBcIjogJHJlZC04MDAsXG4gIFwicmVkLTkwMFwiOiAkcmVkLTkwMFxuKSAhZGVmYXVsdDtcblxuJG9yYW5nZXM6IChcbiAgXCJvcmFuZ2UtMTAwXCI6ICRvcmFuZ2UtMTAwLFxuICBcIm9yYW5nZS0yMDBcIjogJG9yYW5nZS0yMDAsXG4gIFwib3JhbmdlLTMwMFwiOiAkb3JhbmdlLTMwMCxcbiAgXCJvcmFuZ2UtNDAwXCI6ICRvcmFuZ2UtNDAwLFxuICBcIm9yYW5nZS01MDBcIjogJG9yYW5nZS01MDAsXG4gIFwib3JhbmdlLTYwMFwiOiAkb3JhbmdlLTYwMCxcbiAgXCJvcmFuZ2UtNzAwXCI6ICRvcmFuZ2UtNzAwLFxuICBcIm9yYW5nZS04MDBcIjogJG9yYW5nZS04MDAsXG4gIFwib3JhbmdlLTkwMFwiOiAkb3JhbmdlLTkwMFxuKSAhZGVmYXVsdDtcblxuJHllbGxvd3M6IChcbiAgXCJ5ZWxsb3ctMTAwXCI6ICR5ZWxsb3ctMTAwLFxuICBcInllbGxvdy0yMDBcIjogJHllbGxvdy0yMDAsXG4gIFwieWVsbG93LTMwMFwiOiAkeWVsbG93LTMwMCxcbiAgXCJ5ZWxsb3ctNDAwXCI6ICR5ZWxsb3ctNDAwLFxuICBcInllbGxvdy01MDBcIjogJHllbGxvdy01MDAsXG4gIFwieWVsbG93LTYwMFwiOiAkeWVsbG93LTYwMCxcbiAgXCJ5ZWxsb3ctNzAwXCI6ICR5ZWxsb3ctNzAwLFxuICBcInllbGxvdy04MDBcIjogJHllbGxvdy04MDAsXG4gIFwieWVsbG93LTkwMFwiOiAkeWVsbG93LTkwMFxuKSAhZGVmYXVsdDtcblxuJGdyZWVuczogKFxuICBcImdyZWVuLTEwMFwiOiAkZ3JlZW4tMTAwLFxuICBcImdyZWVuLTIwMFwiOiAkZ3JlZW4tMjAwLFxuICBcImdyZWVuLTMwMFwiOiAkZ3JlZW4tMzAwLFxuICBcImdyZWVuLTQwMFwiOiAkZ3JlZW4tNDAwLFxuICBcImdyZWVuLTUwMFwiOiAkZ3JlZW4tNTAwLFxuICBcImdyZWVuLTYwMFwiOiAkZ3JlZW4tNjAwLFxuICBcImdyZWVuLTcwMFwiOiAkZ3JlZW4tNzAwLFxuICBcImdyZWVuLTgwMFwiOiAkZ3JlZW4tODAwLFxuICBcImdyZWVuLTkwMFwiOiAkZ3JlZW4tOTAwXG4pICFkZWZhdWx0O1xuXG4kdGVhbHM6IChcbiAgXCJ0ZWFsLTEwMFwiOiAkdGVhbC0xMDAsXG4gIFwidGVhbC0yMDBcIjogJHRlYWwtMjAwLFxuICBcInRlYWwtMzAwXCI6ICR0ZWFsLTMwMCxcbiAgXCJ0ZWFsLTQwMFwiOiAkdGVhbC00MDAsXG4gIFwidGVhbC01MDBcIjogJHRlYWwtNTAwLFxuICBcInRlYWwtNjAwXCI6ICR0ZWFsLTYwMCxcbiAgXCJ0ZWFsLTcwMFwiOiAkdGVhbC03MDAsXG4gIFwidGVhbC04MDBcIjogJHRlYWwtODAwLFxuICBcInRlYWwtOTAwXCI6ICR0ZWFsLTkwMFxuKSAhZGVmYXVsdDtcblxuJGN5YW5zOiAoXG4gIFwiY3lhbi0xMDBcIjogJGN5YW4tMTAwLFxuICBcImN5YW4tMjAwXCI6ICRjeWFuLTIwMCxcbiAgXCJjeWFuLTMwMFwiOiAkY3lhbi0zMDAsXG4gIFwiY3lhbi00MDBcIjogJGN5YW4tNDAwLFxuICBcImN5YW4tNTAwXCI6ICRjeWFuLTUwMCxcbiAgXCJjeWFuLTYwMFwiOiAkY3lhbi02MDAsXG4gIFwiY3lhbi03MDBcIjogJGN5YW4tNzAwLFxuICBcImN5YW4tODAwXCI6ICRjeWFuLTgwMCxcbiAgXCJjeWFuLTkwMFwiOiAkY3lhbi05MDBcbikgIWRlZmF1bHQ7XG4vLyBmdXN2LWVuYWJsZVxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdGhlbWUtY29sb3ItdmFyaWFibGVzXG4kcHJpbWFyeTogICAgICAgJGJsdWUgIWRlZmF1bHQ7XG4kc2Vjb25kYXJ5OiAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJHN1Y2Nlc3M6ICAgICAgICRncmVlbiAhZGVmYXVsdDtcbiRpbmZvOiAgICAgICAgICAkY3lhbiAhZGVmYXVsdDtcbiR3YXJuaW5nOiAgICAgICAkeWVsbG93ICFkZWZhdWx0O1xuJGRhbmdlcjogICAgICAgICRyZWQgIWRlZmF1bHQ7XG4kbGlnaHQ6ICAgICAgICAgJGdyYXktMTAwICFkZWZhdWx0O1xuJGRhcms6ICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdGhlbWUtY29sb3ItdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCB0aGVtZS1jb2xvcnMtbWFwXG4kdGhlbWUtY29sb3JzOiAoXG4gIFwicHJpbWFyeVwiOiAgICAkcHJpbWFyeSxcbiAgXCJzZWNvbmRhcnlcIjogICRzZWNvbmRhcnksXG4gIFwic3VjY2Vzc1wiOiAgICAkc3VjY2VzcyxcbiAgXCJpbmZvXCI6ICAgICAgICRpbmZvLFxuICBcIndhcm5pbmdcIjogICAgJHdhcm5pbmcsXG4gIFwiZGFuZ2VyXCI6ICAgICAkZGFuZ2VyLFxuICBcImxpZ2h0XCI6ICAgICAgJGxpZ2h0LFxuICBcImRhcmtcIjogICAgICAgJGRhcmtcbikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHRoZW1lLWNvbG9ycy1tYXBcblxuLy8gQ2hhcmFjdGVycyB3aGljaCBhcmUgZXNjYXBlZCBieSB0aGUgZXNjYXBlLXN2ZyBmdW5jdGlvblxuJGVzY2FwZWQtY2hhcmFjdGVyczogKFxuICAoXCI8XCIsIFwiJTNjXCIpLFxuICAoXCI+XCIsIFwiJTNlXCIpLFxuICAoXCIjXCIsIFwiJTIzXCIpLFxuICAoXCIoXCIsIFwiJTI4XCIpLFxuICAoXCIpXCIsIFwiJTI5XCIpLFxuKSAhZGVmYXVsdDtcblxuLy8gT3B0aW9uc1xuLy9cbi8vIFF1aWNrbHkgbW9kaWZ5IGdsb2JhbCBzdHlsaW5nIGJ5IGVuYWJsaW5nIG9yIGRpc2FibGluZyBvcHRpb25hbCBmZWF0dXJlcy5cblxuJGVuYWJsZS1jYXJldDogICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcm91bmRlZDogICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXNoYWRvd3M6ICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtZ3JhZGllbnRzOiAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS10cmFuc2l0aW9uczogICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcmVkdWNlZC1tb3Rpb246ICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXNtb290aC1zY3JvbGw6ICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1ncmlkLWNsYXNzZXM6ICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtY29udGFpbmVyLWNsYXNzZXM6ICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLWNzc2dyaWQ6ICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtYnV0dG9uLXBvaW50ZXJzOiAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXJmczogICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS12YWxpZGF0aW9uLWljb25zOiAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtbmVnYXRpdmUtbWFyZ2luczogICAgIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS1kZXByZWNhdGlvbi1tZXNzYWdlczogdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtaW1wb3J0YW50LXV0aWxpdGllczogIHRydWUgIWRlZmF1bHQ7XG5cbi8vIFByZWZpeCBmb3IgOnJvb3QgQ1NTIHZhcmlhYmxlc1xuXG4kdmFyaWFibGUtcHJlZml4OiAgICAgICAgICAgICBicy0gIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMi4wIGZvciB0aGUgc2hvcnRlciBgJHByZWZpeGBcbiRwcmVmaXg6ICAgICAgICAgICAgICAgICAgICAgICR2YXJpYWJsZS1wcmVmaXggIWRlZmF1bHQ7XG5cbi8vIEdyYWRpZW50XG4vL1xuLy8gVGhlIGdyYWRpZW50IHdoaWNoIGlzIGFkZGVkIHRvIGNvbXBvbmVudHMgaWYgYCRlbmFibGUtZ3JhZGllbnRzYCBpcyBgdHJ1ZWBcbi8vIFRoaXMgZ3JhZGllbnQgaXMgYWxzbyBhZGRlZCB0byBlbGVtZW50cyB3aXRoIGAuYmctZ3JhZGllbnRgXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdmFyaWFibGUtZ3JhZGllbnRcbiRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgkd2hpdGUsIC4xNSksIHJnYmEoJHdoaXRlLCAwKSkgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHZhcmlhYmxlLWdyYWRpZW50XG5cbi8vIFNwYWNpbmdcbi8vXG4vLyBDb250cm9sIHRoZSBkZWZhdWx0IHN0eWxpbmcgb2YgbW9zdCBCb290c3RyYXAgZWxlbWVudHMgYnkgbW9kaWZ5aW5nIHRoZXNlXG4vLyB2YXJpYWJsZXMuIE1vc3RseSBmb2N1c2VkIG9uIHNwYWNpbmcuXG4vLyBZb3UgY2FuIGFkZCBtb3JlIGVudHJpZXMgdG8gdGhlICRzcGFjZXJzIG1hcCwgc2hvdWxkIHlvdSBuZWVkIG1vcmUgdmFyaWF0aW9uLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgc3BhY2VyLXZhcmlhYmxlcy1tYXBzXG4kc3BhY2VyOiAxcmVtICFkZWZhdWx0O1xuJHNwYWNlcnM6IChcbiAgMDogMCxcbiAgMTogJHNwYWNlciAqIC4yNSxcbiAgMjogJHNwYWNlciAqIC41LFxuICAzOiAkc3BhY2VyLFxuICA0OiAkc3BhY2VyICogMS41LFxuICA1OiAkc3BhY2VyICogMyxcbikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHNwYWNlci12YXJpYWJsZXMtbWFwc1xuXG4vLyBQb3NpdGlvblxuLy9cbi8vIERlZmluZSB0aGUgZWRnZSBwb3NpdGlvbmluZyBhbmNob3JzIG9mIHRoZSBwb3NpdGlvbiB1dGlsaXRpZXMuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBwb3NpdGlvbi1tYXBcbiRwb3NpdGlvbi12YWx1ZXM6IChcbiAgMDogMCxcbiAgNTA6IDUwJSxcbiAgMTAwOiAxMDAlXG4pICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBwb3NpdGlvbi1tYXBcblxuLy8gQm9keVxuLy9cbi8vIFNldHRpbmdzIGZvciB0aGUgYDxib2R5PmAgZWxlbWVudC5cblxuJGJvZHktYmc6ICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRib2R5LWNvbG9yOiAgICAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG4kYm9keS10ZXh0LWFsaWduOiAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuLy8gTGlua3Ncbi8vXG4vLyBTdHlsZSBhbmNob3IgZWxlbWVudHMuXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcmltYXJ5ICFkZWZhdWx0O1xuJGxpbmstZGVjb3JhdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJsaW5lICFkZWZhdWx0O1xuJGxpbmstc2hhZGUtcGVyY2VudGFnZTogICAgICAgICAgICAgICAgICAgMjAlICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQtY29sb3IoJGxpbmstY29sb3IsICRsaW5rLXNoYWRlLXBlcmNlbnRhZ2UpICFkZWZhdWx0O1xuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJHN0cmV0Y2hlZC1saW5rLXBzZXVkby1lbGVtZW50OiAgICAgICAgICAgYWZ0ZXIgIWRlZmF1bHQ7XG4kc3RyZXRjaGVkLWxpbmstei1pbmRleDogICAgICAgICAgICAgICAgICAxICFkZWZhdWx0O1xuXG4vLyBQYXJhZ3JhcGhzXG4vL1xuLy8gU3R5bGUgcCBlbGVtZW50LlxuXG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206ICAgMXJlbSAhZGVmYXVsdDtcblxuXG4vLyBHcmlkIGJyZWFrcG9pbnRzXG4vL1xuLy8gRGVmaW5lIHRoZSBtaW5pbXVtIGRpbWVuc2lvbnMgYXQgd2hpY2ggeW91ciBsYXlvdXQgd2lsbCBjaGFuZ2UsXG4vLyBhZGFwdGluZyB0byBkaWZmZXJlbnQgc2NyZWVuIHNpemVzLCBmb3IgdXNlIGluIG1lZGlhIHF1ZXJpZXMuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBncmlkLWJyZWFrcG9pbnRzXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4czogMCxcbiAgc206IDU3NnB4LFxuICBtZDogNzY4cHgsXG4gIGxnOiA5OTJweCxcbiAgeGw6IDEyMDBweCxcbiAgeHhsOiAxNDAwcHhcbikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGdyaWQtYnJlYWtwb2ludHNcblxuQGluY2x1ZGUgX2Fzc2VydC1hc2NlbmRpbmcoJGdyaWQtYnJlYWtwb2ludHMsIFwiJGdyaWQtYnJlYWtwb2ludHNcIik7XG5AaW5jbHVkZSBfYXNzZXJ0LXN0YXJ0cy1hdC16ZXJvKCRncmlkLWJyZWFrcG9pbnRzLCBcIiRncmlkLWJyZWFrcG9pbnRzXCIpO1xuXG5cbi8vIEdyaWQgY29udGFpbmVyc1xuLy9cbi8vIERlZmluZSB0aGUgbWF4aW11bSB3aWR0aCBvZiBgLmNvbnRhaW5lcmAgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBjb250YWluZXItbWF4LXdpZHRoc1xuJGNvbnRhaW5lci1tYXgtd2lkdGhzOiAoXG4gIHNtOiA1NDBweCxcbiAgbWQ6IDcyMHB4LFxuICBsZzogOTYwcHgsXG4gIHhsOiAxMTQwcHgsXG4gIHh4bDogMTMyMHB4XG4pICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBjb250YWluZXItbWF4LXdpZHRoc1xuXG5AaW5jbHVkZSBfYXNzZXJ0LWFzY2VuZGluZygkY29udGFpbmVyLW1heC13aWR0aHMsIFwiJGNvbnRhaW5lci1tYXgtd2lkdGhzXCIpO1xuXG5cbi8vIEdyaWQgY29sdW1uc1xuLy9cbi8vIFNldCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHNwZWNpZnkgdGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLlxuXG4kZ3JpZC1jb2x1bW5zOiAgICAgICAgICAgICAgICAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aDogICAgICAgICAgIDEuNXJlbSAhZGVmYXVsdDtcbiRncmlkLXJvdy1jb2x1bW5zOiAgICAgICAgICAgIDYgIWRlZmF1bHQ7XG5cbi8vIENvbnRhaW5lciBwYWRkaW5nXG5cbiRjb250YWluZXItcGFkZGluZy14OiAkZ3JpZC1ndXR0ZXItd2lkdGggIWRlZmF1bHQ7XG5cblxuLy8gQ29tcG9uZW50c1xuLy9cbi8vIERlZmluZSBjb21tb24gcGFkZGluZyBhbmQgYm9yZGVyIHJhZGl1cyBzaXplcyBhbmQgbW9yZS5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJvcmRlci12YXJpYWJsZXNcbiRib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgIDFweCAhZGVmYXVsdDtcbiRib3JkZXItd2lkdGhzOiAoXG4gIDE6IDFweCxcbiAgMjogMnB4LFxuICAzOiAzcHgsXG4gIDQ6IDRweCxcbiAgNTogNXB4XG4pICFkZWZhdWx0O1xuXG4kYm9yZGVyLXN0eWxlOiAgICAgICAgICAgICAgICBzb2xpZCAhZGVmYXVsdDtcbiRib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcbiRib3JkZXItY29sb3ItdHJhbnNsdWNlbnQ6ICAgIHJnYmEoJGJsYWNrLCAuMTc1KSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgYm9yZGVyLXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYm9yZGVyLXJhZGl1cy12YXJpYWJsZXNcbiRib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgIC4zNzVyZW0gIWRlZmF1bHQ7XG4kYm9yZGVyLXJhZGl1cy1zbTogICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLXhsOiAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kYm9yZGVyLXJhZGl1cy0yeGw6ICAgICAgICAgICAycmVtICFkZWZhdWx0O1xuJGJvcmRlci1yYWRpdXMtcGlsbDogICAgICAgICAgNTByZW0gIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGJvcmRlci1yYWRpdXMtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBib3gtc2hhZG93LXZhcmlhYmxlc1xuJGJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgMCAuNXJlbSAxcmVtIHJnYmEoJGJsYWNrLCAuMTUpICFkZWZhdWx0O1xuJGJveC1zaGFkb3ctc206ICAgICAgICAgICAgICAgMCAuMTI1cmVtIC4yNXJlbSByZ2JhKCRibGFjaywgLjA3NSkgIWRlZmF1bHQ7XG4kYm94LXNoYWRvdy1sZzogICAgICAgICAgICAgICAwIDFyZW0gM3JlbSByZ2JhKCRibGFjaywgLjE3NSkgIWRlZmF1bHQ7XG4kYm94LXNoYWRvdy1pbnNldDogICAgICAgICAgICBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBib3gtc2hhZG93LXZhcmlhYmxlc1xuXG4kY29tcG9uZW50LWFjdGl2ZS1jb2xvcjogICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kY29tcG9uZW50LWFjdGl2ZS1iZzogICAgICAgICAkcHJpbWFyeSAhZGVmYXVsdDtcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNhcmV0LXZhcmlhYmxlc1xuJGNhcmV0LXdpZHRoOiAgICAgICAgICAgICAgICAgLjNlbSAhZGVmYXVsdDtcbiRjYXJldC12ZXJ0aWNhbC1hbGlnbjogICAgICAgICRjYXJldC13aWR0aCAqIC44NSAhZGVmYXVsdDtcbiRjYXJldC1zcGFjaW5nOiAgICAgICAgICAgICAgICRjYXJldC13aWR0aCAqIC44NSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgY2FyZXQtdmFyaWFibGVzXG5cbiR0cmFuc2l0aW9uLWJhc2U6ICAgICAgICAgICAgIGFsbCAuMnMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG4kdHJhbnNpdGlvbi1mYWRlOiAgICAgICAgICAgICBvcGFjaXR5IC4xNXMgbGluZWFyICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNvbGxhcHNlLXRyYW5zaXRpb25cbiR0cmFuc2l0aW9uLWNvbGxhcHNlOiAgICAgICAgIGhlaWdodCAuMzVzIGVhc2UgIWRlZmF1bHQ7XG4kdHJhbnNpdGlvbi1jb2xsYXBzZS13aWR0aDogICB3aWR0aCAuMzVzIGVhc2UgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGNvbGxhcHNlLXRyYW5zaXRpb25cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4vLyBzY3NzLWRvY3Mtc3RhcnQgYXNwZWN0LXJhdGlvc1xuJGFzcGVjdC1yYXRpb3M6IChcbiAgXCIxeDFcIjogMTAwJSxcbiAgXCI0eDNcIjogY2FsYygzIC8gNCAqIDEwMCUpLFxuICBcIjE2eDlcIjogY2FsYyg5IC8gMTYgKiAxMDAlKSxcbiAgXCIyMXg5XCI6IGNhbGMoOSAvIDIxICogMTAwJSlcbikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGFzcGVjdC1yYXRpb3Ncbi8vIHN0eWxlbGludC1lbmFibGUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG5cbi8vIFR5cG9ncmFwaHlcbi8vXG4vLyBGb250LCBsaW5lLWhlaWdodCwgYW5kIGNvbG9yIGZvciBib2R5IHRleHQsIGhlYWRpbmdzLCBhbmQgbW9yZS5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZvbnQtdmFyaWFibGVzXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSB2YWx1ZS1rZXl3b3JkLWNhc2VcbiRmb250LWZhbWlseS1zYW5zLXNlcmlmOiAgICAgIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgXCJOb3RvIFNhbnNcIiwgXCJMaWJlcmF0aW9uIFNhbnNcIiwgQXJpYWwsIHNhbnMtc2VyaWYsIFwiQXBwbGUgQ29sb3IgRW1vamlcIiwgXCJTZWdvZSBVSSBFbW9qaVwiLCBcIlNlZ29lIFVJIFN5bWJvbFwiLCBcIk5vdG8gQ29sb3IgRW1vamlcIiAhZGVmYXVsdDtcbiRmb250LWZhbWlseS1tb25vc3BhY2U6ICAgICAgIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2UgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZW5hYmxlIHZhbHVlLWtleXdvcmQtY2FzZVxuJGZvbnQtZmFtaWx5LWJhc2U6ICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWZvbnQtc2Fucy1zZXJpZikgIWRlZmF1bHQ7XG4kZm9udC1mYW1pbHktY29kZTogICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Zm9udC1tb25vc3BhY2UpICFkZWZhdWx0O1xuXG4vLyAkZm9udC1zaXplLXJvb3QgYWZmZWN0cyB0aGUgdmFsdWUgb2YgYHJlbWAsIHdoaWNoIGlzIHVzZWQgZm9yIGFzIHdlbGwgZm9udCBzaXplcywgcGFkZGluZ3MsIGFuZCBtYXJnaW5zXG4vLyAkZm9udC1zaXplLWJhc2UgYWZmZWN0cyB0aGUgZm9udCBzaXplIG9mIHRoZSBib2R5IHRleHRcbiRmb250LXNpemUtcm9vdDogICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kZm9udC1zaXplLWJhc2U6ICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0OyAvLyBBc3N1bWVzIHRoZSBicm93c2VyIGRlZmF1bHQsIHR5cGljYWxseSBgMTZweGBcbiRmb250LXNpemUtc206ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIC44NzUgIWRlZmF1bHQ7XG4kZm9udC1zaXplLWxnOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuXG4kZm9udC13ZWlnaHQtbGlnaHRlcjogICAgICAgICBsaWdodGVyICFkZWZhdWx0O1xuJGZvbnQtd2VpZ2h0LWxpZ2h0OiAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGZvbnQtd2VpZ2h0LW5vcm1hbDogICAgICAgICAgNDAwICFkZWZhdWx0O1xuJGZvbnQtd2VpZ2h0LXNlbWlib2xkOiAgICAgICAgNjAwICFkZWZhdWx0O1xuJGZvbnQtd2VpZ2h0LWJvbGQ6ICAgICAgICAgICAgNzAwICFkZWZhdWx0O1xuJGZvbnQtd2VpZ2h0LWJvbGRlcjogICAgICAgICAgYm9sZGVyICFkZWZhdWx0O1xuXG4kZm9udC13ZWlnaHQtYmFzZTogICAgICAgICAgICAkZm9udC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4kbGluZS1oZWlnaHQtYmFzZTogICAgICAgICAgICAxLjUgIWRlZmF1bHQ7XG4kbGluZS1oZWlnaHQtc206ICAgICAgICAgICAgICAxLjI1ICFkZWZhdWx0O1xuJGxpbmUtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgMiAhZGVmYXVsdDtcblxuJGgxLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMi41ICFkZWZhdWx0O1xuJGgyLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMiAhZGVmYXVsdDtcbiRoMy1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNzUgIWRlZmF1bHQ7XG4kaDQtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjUgIWRlZmF1bHQ7XG4kaDUtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGg2LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb250LXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9udC1zaXplc1xuJGZvbnQtc2l6ZXM6IChcbiAgMTogJGgxLWZvbnQtc2l6ZSxcbiAgMjogJGgyLWZvbnQtc2l6ZSxcbiAgMzogJGgzLWZvbnQtc2l6ZSxcbiAgNDogJGg0LWZvbnQtc2l6ZSxcbiAgNTogJGg1LWZvbnQtc2l6ZSxcbiAgNjogJGg2LWZvbnQtc2l6ZVxuKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgZm9udC1zaXplc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgaGVhZGluZ3MtdmFyaWFibGVzXG4kaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTogICAgICAkc3BhY2VyICogLjUgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC1mYW1pbHk6ICAgICAgICBudWxsICFkZWZhdWx0O1xuJGhlYWRpbmdzLWZvbnQtc3R5bGU6ICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRoZWFkaW5ncy1mb250LXdlaWdodDogICAgICAgIDUwMCAhZGVmYXVsdDtcbiRoZWFkaW5ncy1saW5lLWhlaWdodDogICAgICAgIDEuMiAhZGVmYXVsdDtcbiRoZWFkaW5ncy1jb2xvcjogICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGhlYWRpbmdzLXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZGlzcGxheS1oZWFkaW5nc1xuJGRpc3BsYXktZm9udC1zaXplczogKFxuICAxOiA1cmVtLFxuICAyOiA0LjVyZW0sXG4gIDM6IDRyZW0sXG4gIDQ6IDMuNXJlbSxcbiAgNTogM3JlbSxcbiAgNjogMi41cmVtXG4pICFkZWZhdWx0O1xuXG4kZGlzcGxheS1mb250LWZhbWlseTogbnVsbCAhZGVmYXVsdDtcbiRkaXNwbGF5LWZvbnQtc3R5bGU6ICBudWxsICFkZWZhdWx0O1xuJGRpc3BsYXktZm9udC13ZWlnaHQ6IDMwMCAhZGVmYXVsdDtcbiRkaXNwbGF5LWxpbmUtaGVpZ2h0OiAkaGVhZGluZ3MtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGRpc3BsYXktaGVhZGluZ3NcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHR5cGUtdmFyaWFibGVzXG4kbGVhZC1mb250LXNpemU6ICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGxlYWQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuXG4kc21hbGwtZm9udC1zaXplOiAgICAgICAgICAgICAuODc1ZW0gIWRlZmF1bHQ7XG5cbiRzdWItc3VwLWZvbnQtc2l6ZTogICAgICAgICAgIC43NWVtICFkZWZhdWx0O1xuXG4kdGV4dC1tdXRlZDogICAgICAgICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cbiRpbml0aWFsaXNtLWZvbnQtc2l6ZTogICAgICAgICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG5cbiRibG9ja3F1b3RlLW1hcmdpbi15OiAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG4kYmxvY2txdW90ZS1mb250LXNpemU6ICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtZm9vdGVyLWNvbG9yOiAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtZm9vdGVyLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcblxuJGhyLW1hcmdpbi15OiAgICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcbiRoci1jb2xvcjogICAgICAgICAgICAgICAgICAgIGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vIGZ1c3YtZGlzYWJsZVxuJGhyLWJnLWNvbG9yOiAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gRGVwcmVjYXRlZCBpbiB2NS4yLjBcbiRoci1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMi4wXG4vLyBmdXN2LWVuYWJsZVxuXG4kaHItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICBudWxsICFkZWZhdWx0OyAvLyBBbGxvd3MgZm9yIGluaGVyaXRlZCBjb2xvcnNcbiRoci1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kaHItb3BhY2l0eTogICAgICAgICAgICAgICAgICAuMjUgIWRlZmF1bHQ7XG5cbiRsZWdlbmQtbWFyZ2luLWJvdHRvbTogICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGxlZ2VuZC1mb250LXNpemU6ICAgICAgICAgICAgMS41cmVtICFkZWZhdWx0O1xuJGxlZ2VuZC1mb250LXdlaWdodDogICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJGR0LWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbiRsaXN0LWlubGluZS1wYWRkaW5nOiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kbWFyay1wYWRkaW5nOiAgICAgICAgICAgICAgICAuMTg3NWVtICFkZWZhdWx0O1xuJG1hcmstYmc6ICAgICAgICAgICAgICAgICAgICAgJHllbGxvdy0xMDAgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHR5cGUtdmFyaWFibGVzXG5cblxuLy8gVGFibGVzXG4vL1xuLy8gQ3VzdG9taXplcyB0aGUgYC50YWJsZWAgY29tcG9uZW50IHdpdGggYmFzaWMgdmFsdWVzLCBlYWNoIHVzZWQgYWNyb3NzIGFsbCB0YWJsZSB2YXJpYXRpb25zLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdGFibGUtdmFyaWFibGVzXG4kdGFibGUtY2VsbC1wYWRkaW5nLXk6ICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiR0YWJsZS1jZWxsLXBhZGRpbmcteDogICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHRhYmxlLWNlbGwtcGFkZGluZy15LXNtOiAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHRhYmxlLWNlbGwtcGFkZGluZy14LXNtOiAgICAgLjI1cmVtICFkZWZhdWx0O1xuXG4kdGFibGUtY2VsbC12ZXJ0aWNhbC1hbGlnbjogICB0b3AgIWRlZmF1bHQ7XG5cbiR0YWJsZS1jb2xvcjogICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcbiR0YWJsZS1iZzogICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuJHRhYmxlLWFjY2VudC1iZzogICAgICAgICAgICAgdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG5cbiR0YWJsZS10aC1mb250LXdlaWdodDogICAgICAgIG51bGwgIWRlZmF1bHQ7XG5cbiR0YWJsZS1zdHJpcGVkLWNvbG9yOiAgICAgICAgICR0YWJsZS1jb2xvciAhZGVmYXVsdDtcbiR0YWJsZS1zdHJpcGVkLWJnLWZhY3RvcjogICAgIC4wNSAhZGVmYXVsdDtcbiR0YWJsZS1zdHJpcGVkLWJnOiAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAkdGFibGUtc3RyaXBlZC1iZy1mYWN0b3IpICFkZWZhdWx0O1xuXG4kdGFibGUtYWN0aXZlLWNvbG9yOiAgICAgICAgICAkdGFibGUtY29sb3IgIWRlZmF1bHQ7XG4kdGFibGUtYWN0aXZlLWJnLWZhY3RvcjogICAgICAuMSAhZGVmYXVsdDtcbiR0YWJsZS1hY3RpdmUtYmc6ICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAkdGFibGUtYWN0aXZlLWJnLWZhY3RvcikgIWRlZmF1bHQ7XG5cbiR0YWJsZS1ob3Zlci1jb2xvcjogICAgICAgICAgICR0YWJsZS1jb2xvciAhZGVmYXVsdDtcbiR0YWJsZS1ob3Zlci1iZy1mYWN0b3I6ICAgICAgIC4wNzUgIWRlZmF1bHQ7XG4kdGFibGUtaG92ZXItYmc6ICAgICAgICAgICAgICByZ2JhKCRibGFjaywgJHRhYmxlLWhvdmVyLWJnLWZhY3RvcikgIWRlZmF1bHQ7XG5cbiR0YWJsZS1ib3JkZXItZmFjdG9yOiAgICAgICAgIC4xICFkZWZhdWx0O1xuJHRhYmxlLWJvcmRlci13aWR0aDogICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiR0YWJsZS1ib3JkZXItY29sb3I6ICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3IpICFkZWZhdWx0O1xuXG4kdGFibGUtc3RyaXBlZC1vcmRlcjogICAgICAgICBvZGQgIWRlZmF1bHQ7XG4kdGFibGUtc3RyaXBlZC1jb2x1bW5zLW9yZGVyOiBldmVuICFkZWZhdWx0O1xuXG4kdGFibGUtZ3JvdXAtc2VwYXJhdG9yLWNvbG9yOiBjdXJyZW50Y29sb3IgIWRlZmF1bHQ7XG5cbiR0YWJsZS1jYXB0aW9uLWNvbG9yOiAgICAgICAgICR0ZXh0LW11dGVkICFkZWZhdWx0O1xuXG4kdGFibGUtYmctc2NhbGU6ICAgICAgICAgICAgICAtODAlICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCB0YWJsZS12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHRhYmxlLWxvb3BcbiR0YWJsZS12YXJpYW50czogKFxuICBcInByaW1hcnlcIjogICAgc2hpZnQtY29sb3IoJHByaW1hcnksICR0YWJsZS1iZy1zY2FsZSksXG4gIFwic2Vjb25kYXJ5XCI6ICBzaGlmdC1jb2xvcigkc2Vjb25kYXJ5LCAkdGFibGUtYmctc2NhbGUpLFxuICBcInN1Y2Nlc3NcIjogICAgc2hpZnQtY29sb3IoJHN1Y2Nlc3MsICR0YWJsZS1iZy1zY2FsZSksXG4gIFwiaW5mb1wiOiAgICAgICBzaGlmdC1jb2xvcigkaW5mbywgJHRhYmxlLWJnLXNjYWxlKSxcbiAgXCJ3YXJuaW5nXCI6ICAgIHNoaWZ0LWNvbG9yKCR3YXJuaW5nLCAkdGFibGUtYmctc2NhbGUpLFxuICBcImRhbmdlclwiOiAgICAgc2hpZnQtY29sb3IoJGRhbmdlciwgJHRhYmxlLWJnLXNjYWxlKSxcbiAgXCJsaWdodFwiOiAgICAgICRsaWdodCxcbiAgXCJkYXJrXCI6ICAgICAgICRkYXJrLFxuKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdGFibGUtbG9vcFxuXG5cbi8vIEJ1dHRvbnMgKyBGb3Jtc1xuLy9cbi8vIFNoYXJlZCB2YXJpYWJsZXMgdGhhdCBhcmUgcmVhc3NpZ25lZCB0byBgJGlucHV0LWAgYW5kIGAkYnRuLWAgc3BlY2lmaWMgdmFyaWFibGVzLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgaW5wdXQtYnRuLXZhcmlhYmxlc1xuJGlucHV0LWJ0bi1wYWRkaW5nLXk6ICAgICAgICAgLjM3NXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tcGFkZGluZy14OiAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9udC1mYW1pbHk6ICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvbnQtc2l6ZTogICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWxpbmUtaGVpZ2h0OiAgICAgICAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1mb2N1cy13aWR0aDogICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvY3VzLWNvbG9yLW9wYWNpdHk6IC4yNSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtY29sb3I6ICAgICAgICAgcmdiYSgkY29tcG9uZW50LWFjdGl2ZS1iZywgJGlucHV0LWJ0bi1mb2N1cy1jb2xvci1vcGFjaXR5KSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtYmx1cjogICAgICAgICAgMCAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdzogICAgMCAwICRpbnB1dC1idG4tZm9jdXMtYmx1ciAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICRpbnB1dC1idG4tZm9jdXMtY29sb3IgIWRlZmF1bHQ7XG5cbiRpbnB1dC1idG4tcGFkZGluZy15LXNtOiAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tcGFkZGluZy14LXNtOiAgICAgIC41cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LXNpemUtc206ICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1wYWRkaW5nLXktbGc6ICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteC1sZzogICAgICAxcmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LXNpemUtbGc6ICAgICAgJGZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1ib3JkZXItd2lkdGg6ICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgaW5wdXQtYnRuLXZhcmlhYmxlc1xuXG5cbi8vIEJ1dHRvbnNcbi8vXG4vLyBGb3IgZWFjaCBvZiBCb290c3RyYXAncyBidXR0b25zLCBkZWZpbmUgdGV4dCwgYmFja2dyb3VuZCwgYW5kIGJvcmRlciBjb2xvci5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi12YXJpYWJsZXNcbiRidG4tcGFkZGluZy15OiAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15ICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kYnRuLWZvbnQtZmFtaWx5OiAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemU6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUgIWRlZmF1bHQ7XG4kYnRuLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuJGJ0bi13aGl0ZS1zcGFjZTogICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gU2V0IHRvIGBub3dyYXBgIHRvIHByZXZlbnQgdGV4dCB3cmFwcGluZ1xuXG4kYnRuLXBhZGRpbmcteS1zbTogICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcbiRidG4tcGFkZGluZy14LXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LXNtICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemUtc206ICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtc20gIWRlZmF1bHQ7XG5cbiRidG4tcGFkZGluZy15LWxnOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LWxnICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXgtbGc6ICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZS1sZzogICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcblxuJGJ0bi1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgJGlucHV0LWJ0bi1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG5cbiRidG4tZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICRmb250LXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG4kYnRuLWJveC1zaGFkb3c6ICAgICAgICAgICAgICBpbnNldCAwIDFweCAwIHJnYmEoJHdoaXRlLCAuMTUpLCAwIDFweCAxcHggcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuJGJ0bi1mb2N1cy13aWR0aDogICAgICAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy13aWR0aCAhZGVmYXVsdDtcbiRidG4tZm9jdXMtYm94LXNoYWRvdzogICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRidG4tZGlzYWJsZWQtb3BhY2l0eTogICAgICAgIC42NSAhZGVmYXVsdDtcbiRidG4tYWN0aXZlLWJveC1zaGFkb3c6ICAgICAgIGluc2V0IDAgM3B4IDVweCByZ2JhKCRibGFjaywgLjEyNSkgIWRlZmF1bHQ7XG5cbiRidG4tbGluay1jb2xvcjogICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWNvbG9yKSAhZGVmYXVsdDtcbiRidG4tbGluay1ob3Zlci1jb2xvcjogICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWhvdmVyLWNvbG9yKSAhZGVmYXVsdDtcbiRidG4tbGluay1kaXNhYmxlZC1jb2xvcjogICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIGZvciBjdXN0b21pemluZyBidXR0b24gcmFkaXVzIGluZGVwZW5kZW50bHkgZnJvbSBnbG9iYWwgYm9yZGVyIHJhZGl1c1xuJGJ0bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1yYWRpdXMtc206ICAgICAgICAkYm9yZGVyLXJhZGl1cy1zbSAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuXG4kYnRuLXRyYW5zaXRpb246ICAgICAgICAgICAgICBjb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbiRidG4taG92ZXItYmctc2hhZGUtYW1vdW50OiAgICAgICAxNSUgIWRlZmF1bHQ7XG4kYnRuLWhvdmVyLWJnLXRpbnQtYW1vdW50OiAgICAgICAgMTUlICFkZWZhdWx0O1xuJGJ0bi1ob3Zlci1ib3JkZXItc2hhZGUtYW1vdW50OiAgIDIwJSAhZGVmYXVsdDtcbiRidG4taG92ZXItYm9yZGVyLXRpbnQtYW1vdW50OiAgICAxMCUgIWRlZmF1bHQ7XG4kYnRuLWFjdGl2ZS1iZy1zaGFkZS1hbW91bnQ6ICAgICAgMjAlICFkZWZhdWx0O1xuJGJ0bi1hY3RpdmUtYmctdGludC1hbW91bnQ6ICAgICAgIDIwJSAhZGVmYXVsdDtcbiRidG4tYWN0aXZlLWJvcmRlci1zaGFkZS1hbW91bnQ6ICAyNSUgIWRlZmF1bHQ7XG4kYnRuLWFjdGl2ZS1ib3JkZXItdGludC1hbW91bnQ6ICAgMTAlICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBidG4tdmFyaWFibGVzXG5cblxuLy8gRm9ybXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZvcm0tdGV4dC12YXJpYWJsZXNcbiRmb3JtLXRleHQtbWFyZ2luLXRvcDogICAgICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS10ZXh0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLXRleHQtZm9udC1zdHlsZTogICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGZvcm0tdGV4dC1mb250LXdlaWdodDogICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kZm9ybS10ZXh0LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgJHRleHQtbXV0ZWQgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tdGV4dC12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZvcm0tbGFiZWwtdmFyaWFibGVzXG4kZm9ybS1sYWJlbC1tYXJnaW4tYm90dG9tOiAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1sYWJlbC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRmb3JtLWxhYmVsLWZvbnQtc3R5bGU6ICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGZvcm0tbGFiZWwtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kZm9ybS1sYWJlbC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgZm9ybS1sYWJlbC12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZvcm0taW5wdXQtdmFyaWFibGVzXG4kaW5wdXQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1mYW1pbHk6ICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LWZhbWlseSAhZGVmYXVsdDtcbiRpbnB1dC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRpbnB1dC1mb250LXdlaWdodDogICAgICAgICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYmFzZSAhZGVmYXVsdDtcbiRpbnB1dC1saW5lLWhlaWdodDogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuXG4kaW5wdXQtcGFkZGluZy15LXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXktc20gIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy14LXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1zaXplLXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtc20gIWRlZmF1bHQ7XG5cbiRpbnB1dC1wYWRkaW5nLXktbGc6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1sZyAhZGVmYXVsdDtcbiRpbnB1dC1wYWRkaW5nLXgtbGc6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteC1sZyAhZGVmYXVsdDtcbiRpbnB1dC1mb250LXNpemUtbGc6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcblxuJGlucHV0LWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xuJGlucHV0LWRpc2FibGVkLWNvbG9yOiAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kaW5wdXQtZGlzYWJsZWQtYmc6ICAgICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGlucHV0LWRpc2FibGVkLWJvcmRlci1jb2xvcjogICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG5cbiRpbnB1dC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICAkZ3JheS00MDAgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kaW5wdXQtYm94LXNoYWRvdzogICAgICAgICAgICAgICAgICAgICAgJGJveC1zaGFkb3ctaW5zZXQgIWRlZmF1bHQ7XG5cbiRpbnB1dC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1zbSAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcblxuJGlucHV0LWZvY3VzLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1iZyAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICB0aW50LWNvbG9yKCRjb21wb25lbnQtYWN0aXZlLWJnLCA1MCUpICFkZWZhdWx0O1xuJGlucHV0LWZvY3VzLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy13aWR0aDogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuJGlucHV0LWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcblxuJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiAgICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRpbnB1dC1wbGFpbnRleHQtY29sb3I6ICAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1ib3JkZXI6ICAgICAgICAgICAgICAgICAgICRpbnB1dC1ib3JkZXItd2lkdGggKiAyICFkZWZhdWx0O1xuXG4kaW5wdXQtaGVpZ2h0LWlubmVyOiAgICAgICAgICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodCAqIDFlbSwgJGlucHV0LXBhZGRpbmcteSAqIDIpICFkZWZhdWx0O1xuJGlucHV0LWhlaWdodC1pbm5lci1oYWxmOiAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAuNWVtLCAkaW5wdXQtcGFkZGluZy15KSAhZGVmYXVsdDtcbiRpbnB1dC1oZWlnaHQtaW5uZXItcXVhcnRlcjogICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogLjI1ZW0sICRpbnB1dC1wYWRkaW5nLXkgKiAuNSkgIWRlZmF1bHQ7XG5cbiRpbnB1dC1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogMWVtLCBhZGQoJGlucHV0LXBhZGRpbmcteSAqIDIsICRpbnB1dC1oZWlnaHQtYm9yZGVyLCBmYWxzZSkpICFkZWZhdWx0O1xuJGlucHV0LWhlaWdodC1zbTogICAgICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sIGFkZCgkaW5wdXQtcGFkZGluZy15LXNtICogMiwgJGlucHV0LWhlaWdodC1ib3JkZXIsIGZhbHNlKSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodCAqIDFlbSwgYWRkKCRpbnB1dC1wYWRkaW5nLXktbGcgKiAyLCAkaW5wdXQtaGVpZ2h0LWJvcmRlciwgZmFsc2UpKSAhZGVmYXVsdDtcblxuJGlucHV0LXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbiRmb3JtLWNvbG9yLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgICAzcmVtICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLWlucHV0LXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9ybS1jaGVjay12YXJpYWJsZXNcbiRmb3JtLWNoZWNrLWlucHV0LXdpZHRoOiAgICAgICAgICAgICAgICAgIDFlbSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLW1pbi1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuJGZvcm0tY2hlY2stcGFkZGluZy1zdGFydDogICAgICAgICAgICAgICAgJGZvcm0tY2hlY2staW5wdXQtd2lkdGggKyAuNWVtICFkZWZhdWx0O1xuJGZvcm0tY2hlY2stbWFyZ2luLWJvdHRvbTogICAgICAgICAgICAgICAgLjEyNXJlbSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWxhYmVsLWNvbG9yOiAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1sYWJlbC1jdXJzb3I6ICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGZvcm0tY2hlY2stdHJhbnNpdGlvbjogICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJGZvcm0tY2hlY2staW5wdXQtYWN0aXZlLWZpbHRlcjogICAgICAgICAgYnJpZ2h0bmVzcyg5MCUpICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1pbnB1dC1iZzogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1ib3JkZXI6ICAgICAgICAgICAgICAgICAxcHggc29saWQgcmdiYSgkYmxhY2ssIC4yNSkgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAuMjVlbSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLXJhZGlvLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIDUwJSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlucHV0LWZvY3VzLWJvcmRlcjogICAgICAgICAgICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAkaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG5cbiRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtY29sb3I6ICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1iZy1jb2xvcjogICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJvcmRlci1jb2xvcjogICAkZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJnLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1iZy1pbWFnZTogICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjAgMjAnPjxwYXRoIGZpbGw9J25vbmUnIHN0cm9rZT0nI3skZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWNvbG9yfScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzMnIGQ9J202IDEwIDMgMyA2LTYnLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1yYWRpby1jaGVja2VkLWJnLWltYWdlOiAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9Jy00IC00IDggOCc+PGNpcmNsZSByPScyJyBmaWxsPScjeyRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtY29sb3J9Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1pbnB1dC1pbmRldGVybWluYXRlLWNvbG9yOiAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlucHV0LWluZGV0ZXJtaW5hdGUtYmctY29sb3I6ICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3I6ICAgJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1iZy1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlucHV0LWluZGV0ZXJtaW5hdGUtYmctaW1hZ2U6ICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDIwIDIwJz48cGF0aCBmaWxsPSdub25lJyBzdHJva2U9JyN7JGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1jb2xvcn0nIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPSczJyBkPSdNNiAxMGg4Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1pbnB1dC1kaXNhYmxlZC1vcGFjaXR5OiAgICAgICAgLjUgIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1sYWJlbC1kaXNhYmxlZC1vcGFjaXR5OiAgICAgICAgJGZvcm0tY2hlY2staW5wdXQtZGlzYWJsZWQtb3BhY2l0eSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWJ0bi1jaGVjay1kaXNhYmxlZC1vcGFjaXR5OiAgICAkYnRuLWRpc2FibGVkLW9wYWNpdHkgIWRlZmF1bHQ7XG5cbiRmb3JtLWNoZWNrLWlubGluZS1tYXJnaW4tZW5kOiAgICAxcmVtICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLWNoZWNrLXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9ybS1zd2l0Y2gtdmFyaWFibGVzXG4kZm9ybS1zd2l0Y2gtY29sb3I6ICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4yNSkgIWRlZmF1bHQ7XG4kZm9ybS1zd2l0Y2gtd2lkdGg6ICAgICAgICAgICAgICAgMmVtICFkZWZhdWx0O1xuJGZvcm0tc3dpdGNoLXBhZGRpbmctc3RhcnQ6ICAgICAgICRmb3JtLXN3aXRjaC13aWR0aCArIC41ZW0gIWRlZmF1bHQ7XG4kZm9ybS1zd2l0Y2gtYmctaW1hZ2U6ICAgICAgICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnPjxjaXJjbGUgcj0nMycgZmlsbD0nI3skZm9ybS1zd2l0Y2gtY29sb3J9Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJGZvcm0tc3dpdGNoLWJvcmRlci1yYWRpdXM6ICAgICAgICRmb3JtLXN3aXRjaC13aWR0aCAhZGVmYXVsdDtcbiRmb3JtLXN3aXRjaC10cmFuc2l0aW9uOiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uIC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbiRmb3JtLXN3aXRjaC1mb2N1cy1jb2xvcjogICAgICAgICAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tc3dpdGNoLWZvY3VzLWJnLWltYWdlOiAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nLTQgLTQgOCA4Jz48Y2lyY2xlIHI9JzMnIGZpbGw9JyN7JGZvcm0tc3dpdGNoLWZvY3VzLWNvbG9yfScvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcblxuJGZvcm0tc3dpdGNoLWNoZWNrZWQtY29sb3I6ICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tc3dpdGNoLWNoZWNrZWQtYmctaW1hZ2U6ICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nLTQgLTQgOCA4Jz48Y2lyY2xlIHI9JzMnIGZpbGw9JyN7JGZvcm0tc3dpdGNoLWNoZWNrZWQtY29sb3J9Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJGZvcm0tc3dpdGNoLWNoZWNrZWQtYmctcG9zaXRpb246IHJpZ2h0IGNlbnRlciAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgZm9ybS1zd2l0Y2gtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBpbnB1dC1ncm91cC12YXJpYWJsZXNcbiRpbnB1dC1ncm91cC1hZGRvbi1wYWRkaW5nLXk6ICAgICAgICAgICAkaW5wdXQtcGFkZGluZy15ICFkZWZhdWx0O1xuJGlucHV0LWdyb3VwLWFkZG9uLXBhZGRpbmcteDogICAgICAgICAgICRpbnB1dC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kaW5wdXQtZ3JvdXAtYWRkb24tZm9udC13ZWlnaHQ6ICAgICAgICAgJGlucHV0LWZvbnQtd2VpZ2h0ICFkZWZhdWx0O1xuJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yOiAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1ncm91cC1hZGRvbi1iZzogICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kaW5wdXQtZ3JvdXAtYWRkb24tYm9yZGVyLWNvbG9yOiAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgaW5wdXQtZ3JvdXAtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXNlbGVjdC12YXJpYWJsZXNcbiRmb3JtLXNlbGVjdC1wYWRkaW5nLXk6ICAgICAgICAgICAgICRpbnB1dC1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtcGFkZGluZy14OiAgICAgICAgICAgICAkaW5wdXQtcGFkZGluZy14ICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWZvbnQtZmFtaWx5OiAgICAgICAgICAgJGlucHV0LWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWZvbnQtc2l6ZTogICAgICAgICAgICAgJGlucHV0LWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZzogICAgICRmb3JtLXNlbGVjdC1wYWRkaW5nLXggKiAzICFkZWZhdWx0OyAvLyBFeHRyYSBwYWRkaW5nIGZvciBiYWNrZ3JvdW5kLWltYWdlXG4kZm9ybS1zZWxlY3QtZm9udC13ZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtbGluZS1oZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtY29sb3I6ICAgICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtYmc6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtZGlzYWJsZWQtY29sb3I6ICAgICAgICBudWxsICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWRpc2FibGVkLWJnOiAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWRpc2FibGVkLWJvcmRlci1jb2xvcjogJGlucHV0LWRpc2FibGVkLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1iZy1wb3NpdGlvbjogICAgICAgICAgIHJpZ2h0ICRmb3JtLXNlbGVjdC1wYWRkaW5nLXggY2VudGVyICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWJnLXNpemU6ICAgICAgICAgICAgICAgMTZweCAxMnB4ICFkZWZhdWx0OyAvLyBJbiBwaXhlbHMgYmVjYXVzZSBpbWFnZSBkaW1lbnNpb25zXG4kZm9ybS1zZWxlY3QtaW5kaWNhdG9yLWNvbG9yOiAgICAgICAkZ3JheS04MDAgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtaW5kaWNhdG9yOiAgICAgICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNiAxNic+PHBhdGggZmlsbD0nbm9uZScgc3Ryb2tlPScjeyRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMicgZD0nbTIgNSA2IDYgNi02Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kZm9ybS1zZWxlY3QtZmVlZGJhY2staWNvbi1wYWRkaW5nLWVuZDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteCAqIDIuNSArICRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZyAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1mZWVkYmFjay1pY29uLXBvc2l0aW9uOiAgICBjZW50ZXIgcmlnaHQgJGZvcm0tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWZlZWRiYWNrLWljb24tc2l6ZTogICAgICAgICRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZiAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGYgIWRlZmF1bHQ7XG5cbiRmb3JtLXNlbGVjdC1ib3JkZXItd2lkdGg6ICAgICAgICAkaW5wdXQtYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWJvcmRlci1jb2xvcjogICAgICAgICRpbnB1dC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtYm9yZGVyLXJhZGl1czogICAgICAgJGlucHV0LWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtYm94LXNoYWRvdzogICAgICAgICAgJGJveC1zaGFkb3ctaW5zZXQgIWRlZmF1bHQ7XG5cbiRmb3JtLXNlbGVjdC1mb2N1cy1ib3JkZXItY29sb3I6ICAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWZvY3VzLXdpZHRoOiAgICAgICAgICRpbnB1dC1mb2N1cy13aWR0aCAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1mb2N1cy1ib3gtc2hhZG93OiAgICAwIDAgMCAkZm9ybS1zZWxlY3QtZm9jdXMtd2lkdGggJGlucHV0LWJ0bi1mb2N1cy1jb2xvciAhZGVmYXVsdDtcblxuJGZvcm0tc2VsZWN0LXBhZGRpbmcteS1zbTogICAgICAgICRpbnB1dC1wYWRkaW5nLXktc20gIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtcGFkZGluZy14LXNtOiAgICAgICAgJGlucHV0LXBhZGRpbmcteC1zbSAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1mb250LXNpemUtc206ICAgICAgICAkaW5wdXQtZm9udC1zaXplLXNtICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWJvcmRlci1yYWRpdXMtc206ICAgICRpbnB1dC1ib3JkZXItcmFkaXVzLXNtICFkZWZhdWx0O1xuXG4kZm9ybS1zZWxlY3QtcGFkZGluZy15LWxnOiAgICAgICAgJGlucHV0LXBhZGRpbmcteS1sZyAhZGVmYXVsdDtcbiRmb3JtLXNlbGVjdC1wYWRkaW5nLXgtbGc6ICAgICAgICAkaW5wdXQtcGFkZGluZy14LWxnICFkZWZhdWx0O1xuJGZvcm0tc2VsZWN0LWZvbnQtc2l6ZS1sZzogICAgICAgICRpbnB1dC1mb250LXNpemUtbGcgIWRlZmF1bHQ7XG4kZm9ybS1zZWxlY3QtYm9yZGVyLXJhZGl1cy1sZzogICAgJGlucHV0LWJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XG5cbiRmb3JtLXNlbGVjdC10cmFuc2l0aW9uOiAgICAgICAgICAkaW5wdXQtdHJhbnNpdGlvbiAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgZm9ybS1zZWxlY3QtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXJhbmdlLXZhcmlhYmxlc1xuJGZvcm0tcmFuZ2UtdHJhY2std2lkdGg6ICAgICAgICAgIDEwMCUgIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10cmFjay1oZWlnaHQ6ICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10cmFjay1jdXJzb3I6ICAgICAgICAgcG9pbnRlciAhZGVmYXVsdDtcbiRmb3JtLXJhbmdlLXRyYWNrLWJnOiAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzOiAgMXJlbSAhZGVmYXVsdDtcbiRmb3JtLXJhbmdlLXRyYWNrLWJveC1zaGFkb3c6ICAgICAkYm94LXNoYWRvdy1pbnNldCAhZGVmYXVsdDtcblxuJGZvcm0tcmFuZ2UtdGh1bWItd2lkdGg6ICAgICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10aHVtYi1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgJGZvcm0tcmFuZ2UtdGh1bWItd2lkdGggIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10aHVtYi1iZzogICAgICAgICAgICAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10aHVtYi1ib3JkZXI6ICAgICAgICAgICAgICAgICAgMCAhZGVmYXVsdDtcbiRmb3JtLXJhbmdlLXRodW1iLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGZvcm0tcmFuZ2UtdGh1bWItYm94LXNoYWRvdzogICAgICAgICAgICAgIDAgLjFyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG4kZm9ybS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAgMCAwIDAgMXB4ICRib2R5LWJnLCAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRmb3JtLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3ctd2lkdGg6ICAkaW5wdXQtZm9jdXMtd2lkdGggIWRlZmF1bHQ7IC8vIEZvciBmb2N1cyBib3ggc2hhZG93IGlzc3VlIGluIEVkZ2VcbiRmb3JtLXJhbmdlLXRodW1iLWFjdGl2ZS1iZzogICAgICAgICAgICAgICB0aW50LWNvbG9yKCRjb21wb25lbnQtYWN0aXZlLWJnLCA3MCUpICFkZWZhdWx0O1xuJGZvcm0tcmFuZ2UtdGh1bWItZGlzYWJsZWQtYmc6ICAgICAgICAgICAgICRncmF5LTUwMCAhZGVmYXVsdDtcbiRmb3JtLXJhbmdlLXRodW1iLXRyYW5zaXRpb246ICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tcmFuZ2UtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWZpbGUtdmFyaWFibGVzXG4kZm9ybS1maWxlLWJ1dHRvbi1jb2xvcjogICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tZmlsZS1idXR0b24tYmc6ICAgICAgICAgICAgICRpbnB1dC1ncm91cC1hZGRvbi1iZyAhZGVmYXVsdDtcbiRmb3JtLWZpbGUtYnV0dG9uLWhvdmVyLWJnOiAgICAgICBzaGFkZS1jb2xvcigkZm9ybS1maWxlLWJ1dHRvbi1iZywgNSUpICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLWZpbGUtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWZsb2F0aW5nLXZhcmlhYmxlc1xuJGZvcm0tZmxvYXRpbmctaGVpZ2h0OiAgICAgICAgICAgIGFkZCgzLjVyZW0sICRpbnB1dC1oZWlnaHQtYm9yZGVyKSAhZGVmYXVsdDtcbiRmb3JtLWZsb2F0aW5nLWxpbmUtaGVpZ2h0OiAgICAgICAxLjI1ICFkZWZhdWx0O1xuJGZvcm0tZmxvYXRpbmctcGFkZGluZy14OiAgICAgICAgICRpbnB1dC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kZm9ybS1mbG9hdGluZy1wYWRkaW5nLXk6ICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRmb3JtLWZsb2F0aW5nLWlucHV0LXBhZGRpbmctdDogICAxLjYyNXJlbSAhZGVmYXVsdDtcbiRmb3JtLWZsb2F0aW5nLWlucHV0LXBhZGRpbmctYjogICAuNjI1cmVtICFkZWZhdWx0O1xuJGZvcm0tZmxvYXRpbmctbGFiZWwtb3BhY2l0eTogICAgIC42NSAhZGVmYXVsdDtcbiRmb3JtLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTogICBzY2FsZSguODUpIHRyYW5zbGF0ZVkoLS41cmVtKSB0cmFuc2xhdGVYKC4xNXJlbSkgIWRlZmF1bHQ7XG4kZm9ybS1mbG9hdGluZy10cmFuc2l0aW9uOiAgICAgICAgb3BhY2l0eSAuMXMgZWFzZS1pbi1vdXQsIHRyYW5zZm9ybSAuMXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tZmxvYXRpbmctdmFyaWFibGVzXG5cbi8vIEZvcm0gdmFsaWRhdGlvblxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9ybS1mZWVkYmFjay12YXJpYWJsZXNcbiRmb3JtLWZlZWRiYWNrLW1hcmdpbi10b3A6ICAgICAgICAgICRmb3JtLXRleHQtbWFyZ2luLXRvcCAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWZvbnQtc2l6ZTogICAgICAgICAgICRmb3JtLXRleHQtZm9udC1zaXplICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stZm9udC1zdHlsZTogICAgICAgICAgJGZvcm0tdGV4dC1mb250LXN0eWxlICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3I6ICAgICAgICAgJHN1Y2Nlc3MgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay1pbnZhbGlkLWNvbG9yOiAgICAgICAkZGFuZ2VyICFkZWZhdWx0O1xuXG4kZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yOiAgICAkZm9ybS1mZWVkYmFjay12YWxpZC1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWljb24tdmFsaWQ6ICAgICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZmlsbD0nI3skZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yfScgZD0nTTIuMyA2LjczLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yOiAgJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZDogICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDEyIDEyJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nI3skZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWQtY29sb3J9Jz48Y2lyY2xlIGN4PSc2JyBjeT0nNicgcj0nNC41Jy8+PHBhdGggc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgZD0nTTUuOCAzLjZoLjRMNiA2LjV6Jy8+PGNpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyN7JGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yfScgc3Ryb2tlPSdub25lJy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLWZlZWRiYWNrLXZhcmlhYmxlc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9ybS12YWxpZGF0aW9uLXN0YXRlc1xuJGZvcm0tdmFsaWRhdGlvbi1zdGF0ZXM6IChcbiAgXCJ2YWxpZFwiOiAoXG4gICAgXCJjb2xvclwiOiAkZm9ybS1mZWVkYmFjay12YWxpZC1jb2xvcixcbiAgICBcImljb25cIjogJGZvcm0tZmVlZGJhY2staWNvbi12YWxpZFxuICApLFxuICBcImludmFsaWRcIjogKFxuICAgIFwiY29sb3JcIjogJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvcixcbiAgICBcImljb25cIjogJGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkXG4gIClcbikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZXNcblxuLy8gWi1pbmRleCBtYXN0ZXIgbGlzdFxuLy9cbi8vIFdhcm5pbmc6IEF2b2lkIGN1c3RvbWl6aW5nIHRoZXNlIHZhbHVlcy4gVGhleSdyZSB1c2VkIGZvciBhIGJpcmQncyBleWUgdmlld1xuLy8gb2YgY29tcG9uZW50cyBkZXBlbmRlbnQgb24gdGhlIHotYXhpcyBhbmQgYXJlIGRlc2lnbmVkIHRvIGFsbCB3b3JrIHRvZ2V0aGVyLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgemluZGV4LXN0YWNrXG4kemluZGV4LWRyb3Bkb3duOiAgICAgICAgICAgICAgICAgICAxMDAwICFkZWZhdWx0O1xuJHppbmRleC1zdGlja3k6ICAgICAgICAgICAgICAgICAgICAgMTAyMCAhZGVmYXVsdDtcbiR6aW5kZXgtZml4ZWQ6ICAgICAgICAgICAgICAgICAgICAgIDEwMzAgIWRlZmF1bHQ7XG4kemluZGV4LW9mZmNhbnZhcy1iYWNrZHJvcDogICAgICAgICAxMDQwICFkZWZhdWx0O1xuJHppbmRleC1vZmZjYW52YXM6ICAgICAgICAgICAgICAgICAgMTA0NSAhZGVmYXVsdDtcbiR6aW5kZXgtbW9kYWwtYmFja2Ryb3A6ICAgICAgICAgICAgIDEwNTAgIWRlZmF1bHQ7XG4kemluZGV4LW1vZGFsOiAgICAgICAgICAgICAgICAgICAgICAxMDU1ICFkZWZhdWx0O1xuJHppbmRleC1wb3BvdmVyOiAgICAgICAgICAgICAgICAgICAgMTA3MCAhZGVmYXVsdDtcbiR6aW5kZXgtdG9vbHRpcDogICAgICAgICAgICAgICAgICAgIDEwODAgIWRlZmF1bHQ7XG4kemluZGV4LXRvYXN0OiAgICAgICAgICAgICAgICAgICAgICAxMDkwICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCB6aW5kZXgtc3RhY2tcblxuXG4vLyBOYXZzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBuYXYtdmFyaWFibGVzXG4kbmF2LWxpbmstcGFkZGluZy15OiAgICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRuYXYtbGluay1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kbmF2LWxpbmstZm9udC1zaXplOiAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJG5hdi1saW5rLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRuYXYtbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWNvbG9yKSAhZGVmYXVsdDtcbiRuYXYtbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWhvdmVyLWNvbG9yKSAhZGVmYXVsdDtcbiRuYXYtbGluay10cmFuc2l0aW9uOiAgICAgICAgICAgICAgIGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG4kbmF2LWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cbiRuYXYtdGFicy1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcbiRuYXYtdGFicy1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbmF2LXRhYnMtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogICRncmF5LTIwMCAkZ3JheS0yMDAgJG5hdi10YWJzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcjogICAgICAgICRncmF5LTcwMCAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xuJG5hdi10YWJzLWxpbmstYWN0aXZlLWJvcmRlci1jb2xvcjogJGdyYXktMzAwICRncmF5LTMwMCAkbmF2LXRhYnMtbGluay1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1czogICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJG5hdi1waWxscy1saW5rLWFjdGl2ZS1jb2xvcjogICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kbmF2LXBpbGxzLWxpbmstYWN0aXZlLWJnOiAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgbmF2LXZhcmlhYmxlc1xuXG5cbi8vIE5hdmJhclxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgbmF2YmFyLXZhcmlhYmxlc1xuJG5hdmJhci1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgJHNwYWNlciAqIC41ICFkZWZhdWx0O1xuJG5hdmJhci1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJG5hdmJhci1uYXYtbGluay1wYWRkaW5nLXg6ICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRuYXZiYXItYnJhbmQtZm9udC1zaXplOiAgICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XG4vLyBDb21wdXRlIHRoZSBuYXZiYXItYnJhbmQgcGFkZGluZy15IHNvIHRoZSBuYXZiYXItYnJhbmQgd2lsbCBoYXZlIHRoZSBzYW1lIGhlaWdodCBhcyBuYXZiYXItdGV4dCBhbmQgbmF2LWxpbmtcbiRuYXYtbGluay1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqICRsaW5lLWhlaWdodC1iYXNlICsgJG5hdi1saW5rLXBhZGRpbmcteSAqIDIgIWRlZmF1bHQ7XG4kbmF2YmFyLWJyYW5kLWhlaWdodDogICAgICAgICAgICAgICAkbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZSAqICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuJG5hdmJhci1icmFuZC1wYWRkaW5nLXk6ICAgICAgICAgICAgKCRuYXYtbGluay1oZWlnaHQgLSAkbmF2YmFyLWJyYW5kLWhlaWdodCkgKiAuNSAhZGVmYXVsdDtcbiRuYXZiYXItYnJhbmQtbWFyZ2luLWVuZDogICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG5cbiRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXk6ICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXg6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRuYXZiYXItdG9nZ2xlci1mb250LXNpemU6ICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1czogICAgICAkYnRuLWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItZm9jdXMtd2lkdGg6ICAgICAgICAkYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLXRyYW5zaXRpb246ICAgICAgICAgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4kbmF2YmFyLWxpZ2h0LWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjU1KSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtaG92ZXItY29sb3I6ICAgICAgICAgIHJnYmEoJGJsYWNrLCAuNykgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvcjogICAgICAgICByZ2JhKCRibGFjaywgLjkpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1kaXNhYmxlZC1jb2xvcjogICAgICAgcmdiYSgkYmxhY2ssIC4zKSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtdG9nZ2xlci1pY29uLWJnOiAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMwIDMwJz48cGF0aCBzdHJva2U9JyN7JG5hdmJhci1saWdodC1jb2xvcn0nIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBzdHJva2Utd2lkdGg9JzInIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWJvcmRlci1jb2xvcjogcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtYnJhbmQtY29sb3I6ICAgICAgICAgICRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1icmFuZC1ob3Zlci1jb2xvcjogICAgJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIG5hdmJhci12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IG5hdmJhci1kYXJrLXZhcmlhYmxlc1xuJG5hdmJhci1kYXJrLWNvbG9yOiAgICAgICAgICAgICAgICAgcmdiYSgkd2hpdGUsIC41NSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstaG92ZXItY29sb3I6ICAgICAgICAgICByZ2JhKCR3aGl0ZSwgLjc1KSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay1hY3RpdmUtY29sb3I6ICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay1kaXNhYmxlZC1jb2xvcjogICAgICAgIHJnYmEoJHdoaXRlLCAuMjUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLXRvZ2dsZXItaWNvbi1iZzogICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzAgMzAnPjxwYXRoIHN0cm9rZT0nI3skbmF2YmFyLWRhcmstY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgc3Ryb2tlLXdpZHRoPScyJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay10b2dnbGVyLWJvcmRlci1jb2xvcjogIHJnYmEoJHdoaXRlLCAuMSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstYnJhbmQtY29sb3I6ICAgICAgICAgICAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgbmF2YmFyLWRhcmstdmFyaWFibGVzXG5cblxuLy8gRHJvcGRvd25zXG4vL1xuLy8gRHJvcGRvd24gbWVudSBjb250YWluZXIgYW5kIGNvbnRlbnRzLlxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZHJvcGRvd24tdmFyaWFibGVzXG4kZHJvcGRvd24tbWluLXdpZHRoOiAgICAgICAgICAgICAgICAxMHJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgIDAgIWRlZmF1bHQ7XG4kZHJvcGRvd24tcGFkZGluZy15OiAgICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1zcGFjZXI6ICAgICAgICAgICAgICAgICAgIC4xMjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG4kZHJvcGRvd24tY29sb3I6ICAgICAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1iZzogICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3JkZXItY29sb3I6ICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGRyb3Bkb3duLWlubmVyLWJvcmRlci1yYWRpdXM6ICAgICAgc3VidHJhY3QoJGRyb3Bkb3duLWJvcmRlci1yYWRpdXMsICRkcm9wZG93bi1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWRpdmlkZXItYmc6ICAgICAgICAgICAgICAgJGRyb3Bkb3duLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLW1hcmdpbi15OiAgICAgICAgICRzcGFjZXIgKiAuNSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICRib3gtc2hhZG93ICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1jb2xvcjogICAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG4kZHJvcGRvd24tbGluay1ob3Zlci1jb2xvcjogICAgICAgICBzaGFkZS1jb2xvcigkZHJvcGRvd24tbGluay1jb2xvciwgMTAlKSAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOiAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgJGdyYXktNTAwICFkZWZhdWx0O1xuXG4kZHJvcGRvd24taXRlbS1wYWRkaW5nLXk6ICAgICAgICAgICAkc3BhY2VyICogLjI1ICFkZWZhdWx0O1xuJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14OiAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWhlYWRlci1jb2xvcjogICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXg6ICAgICAgICAgJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14ICFkZWZhdWx0O1xuJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXk6ICAgICAgICAgJGRyb3Bkb3duLXBhZGRpbmcteSAhZGVmYXVsdDtcbi8vIGZ1c3YtZGlzYWJsZVxuJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nOiAgICAgICAgICAgJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXkgJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXggIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMi4wXG4vLyBmdXN2LWVuYWJsZVxuLy8gc2Nzcy1kb2NzLWVuZCBkcm9wZG93bi12YXJpYWJsZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGRyb3Bkb3duLWRhcmstdmFyaWFibGVzXG4kZHJvcGRvd24tZGFyay1jb2xvcjogICAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1iZzogICAgICAgICAgICAgICAgICAkZ3JheS04MDAgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1ib3JkZXItY29sb3I6ICAgICAgICAkZHJvcGRvd24tYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGRyb3Bkb3duLWRhcmstZGl2aWRlci1iZzogICAgICAgICAgJGRyb3Bkb3duLWRpdmlkZXItYmcgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1ib3gtc2hhZG93OiAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGRyb3Bkb3duLWRhcmstbGluay1jb2xvcjogICAgICAgICAgJGRyb3Bkb3duLWRhcmstY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1saW5rLWhvdmVyLWNvbG9yOiAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kZHJvcGRvd24tZGFyay1saW5rLWhvdmVyLWJnOiAgICAgICByZ2JhKCR3aGl0ZSwgLjE1KSAhZGVmYXVsdDtcbiRkcm9wZG93bi1kYXJrLWxpbmstYWN0aXZlLWNvbG9yOiAgICRkcm9wZG93bi1saW5rLWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1kYXJrLWxpbmstYWN0aXZlLWJnOiAgICAgICRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRkcm9wZG93bi1kYXJrLWxpbmstZGlzYWJsZWQtY29sb3I6ICRncmF5LTUwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1kYXJrLWhlYWRlci1jb2xvcjogICAgICAgICRncmF5LTUwMCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgZHJvcGRvd24tZGFyay12YXJpYWJsZXNcblxuXG4vLyBQYWdpbmF0aW9uXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBwYWdpbmF0aW9uLXZhcmlhYmxlc1xuJHBhZ2luYXRpb24tcGFkZGluZy15OiAgICAgICAgICAgICAgLjM3NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteDogICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteS1zbTogICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteC1zbTogICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy15LWxnOiAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14LWxnOiAgICAgICAgICAgMS41cmVtICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1mb250LXNpemU6ICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWNvbG9yOiAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWNvbG9yKSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJnOiAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLW1hcmdpbi1zdGFydDogICAgICAgICAgICgkcGFnaW5hdGlvbi1ib3JkZXItd2lkdGggKiAtMSkgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1ib3JkZXItY29sb3I6ICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWZvY3VzLWNvbG9yOiAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWhvdmVyLWNvbG9yKSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWZvY3VzLWJnOiAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWZvY3VzLW91dGxpbmU6ICAgICAgICAgIDAgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOiAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWhvdmVyLWNvbG9yKSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWhvdmVyLWJnOiAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWhvdmVyLWJvcmRlci1jb2xvcjogICAgICRncmF5LTMwMCAhZGVmYXVsdDtcblxuJHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1hY3RpdmUtYmc6ICAgICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXItY29sb3I6ICAgICRwYWdpbmF0aW9uLWFjdGl2ZS1iZyAhZGVmYXVsdDtcblxuJHBhZ2luYXRpb24tZGlzYWJsZWQtY29sb3I6ICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tZGlzYWJsZWQtYmc6ICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAgJGdyYXktMzAwICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi10cmFuc2l0aW9uOiAgICAgICAgICAgICAgY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAkYm9yZGVyLXJhZGl1cy1zbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci1yYWRpdXMtbGc6ICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBwYWdpbmF0aW9uLXZhcmlhYmxlc1xuXG5cbi8vIFBsYWNlaG9sZGVyc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgcGxhY2Vob2xkZXJzXG4kcGxhY2Vob2xkZXItb3BhY2l0eS1tYXg6ICAgICAgICAgICAuNSAhZGVmYXVsdDtcbiRwbGFjZWhvbGRlci1vcGFjaXR5LW1pbjogICAgICAgICAgIC4yICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBwbGFjZWhvbGRlcnNcblxuLy8gQ2FyZHNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNhcmQtdmFyaWFibGVzXG4kY2FyZC1zcGFjZXIteTogICAgICAgICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuJGNhcmQtc3BhY2VyLXg6ICAgICAgICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcbiRjYXJkLXRpdGxlLXNwYWNlci15OiAgICAgICAgICAgICAgICRzcGFjZXIgKiAuNSAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yLXRyYW5zbHVjZW50KSAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGNhcmQtYm94LXNoYWRvdzogICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIHN1YnRyYWN0KCRjYXJkLWJvcmRlci1yYWRpdXMsICRjYXJkLWJvcmRlci13aWR0aCkgIWRlZmF1bHQ7XG4kY2FyZC1jYXAtcGFkZGluZy15OiAgICAgICAgICAgICAgICAkY2FyZC1zcGFjZXIteSAqIC41ICFkZWZhdWx0O1xuJGNhcmQtY2FwLXBhZGRpbmcteDogICAgICAgICAgICAgICAgJGNhcmQtc3BhY2VyLXggIWRlZmF1bHQ7XG4kY2FyZC1jYXAtYmc6ICAgICAgICAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjAzKSAhZGVmYXVsdDtcbiRjYXJkLWNhcC1jb2xvcjogICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kY2FyZC1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGNhcmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRjYXJkLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjYXJkLWltZy1vdmVybGF5LXBhZGRpbmc6ICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG4kY2FyZC1ncm91cC1tYXJnaW46ICAgICAgICAgICAgICAgICAkZ3JpZC1ndXR0ZXItd2lkdGggKiAuNSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgY2FyZC12YXJpYWJsZXNcblxuLy8gQWNjb3JkaW9uXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBhY2NvcmRpb24tdmFyaWFibGVzXG4kYWNjb3JkaW9uLXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGFjY29yZGlvbi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRhY2NvcmRpb24tY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICRib2R5LWNvbG9yICFkZWZhdWx0OyAvLyBTYXNzIHZhcmlhYmxlIGJlY2F1c2Ugb2YgJGFjY29yZGlvbi1idXR0b24taWNvblxuJGFjY29yZGlvbi1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGFjY29yZGlvbi1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvcikgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRhY2NvcmRpb24taW5uZXItYm9yZGVyLXJhZGl1czogICAgICAgICAgIHN1YnRyYWN0KCRhY2NvcmRpb24tYm9yZGVyLXJhZGl1cywgJGFjY29yZGlvbi1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuXG4kYWNjb3JkaW9uLWJvZHktcGFkZGluZy15OiAgICAgICAgICAgICAgICAkYWNjb3JkaW9uLXBhZGRpbmcteSAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYm9keS1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICRhY2NvcmRpb24tcGFkZGluZy14ICFkZWZhdWx0O1xuXG4kYWNjb3JkaW9uLWJ1dHRvbi1wYWRkaW5nLXk6ICAgICAgICAgICAgICAkYWNjb3JkaW9uLXBhZGRpbmcteSAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYnV0dG9uLXBhZGRpbmcteDogICAgICAgICAgICAgICRhY2NvcmRpb24tcGFkZGluZy14ICFkZWZhdWx0O1xuJGFjY29yZGlvbi1idXR0b24tY29sb3I6ICAgICAgICAgICAgICAgICAgJGFjY29yZGlvbi1jb2xvciAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYnV0dG9uLWJnOiAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYmcpICFkZWZhdWx0O1xuJGFjY29yZGlvbi10cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgICAgJGJ0bi10cmFuc2l0aW9uLCBib3JkZXItcmFkaXVzIC4xNXMgZWFzZSAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYnV0dG9uLWFjdGl2ZS1iZzogICAgICAgICAgICAgIHRpbnQtY29sb3IoJGNvbXBvbmVudC1hY3RpdmUtYmcsIDkwJSkgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWJ1dHRvbi1hY3RpdmUtY29sb3I6ICAgICAgICAgICBzaGFkZS1jb2xvcigkcHJpbWFyeSwgMTAlKSAhZGVmYXVsdDtcblxuJGFjY29yZGlvbi1idXR0b24tZm9jdXMtYm9yZGVyLWNvbG9yOiAgICAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRhY2NvcmRpb24tYnV0dG9uLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICRidG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcblxuJGFjY29yZGlvbi1pY29uLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRhY2NvcmRpb24taWNvbi1jb2xvcjogICAgICAgICAgICAgICAgICAgICRhY2NvcmRpb24tYnV0dG9uLWNvbG9yICFkZWZhdWx0O1xuJGFjY29yZGlvbi1pY29uLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICAgJGFjY29yZGlvbi1idXR0b24tYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGFjY29yZGlvbi1pY29uLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgdHJhbnNmb3JtIC4ycyBlYXNlLWluLW91dCAhZGVmYXVsdDtcbiRhY2NvcmRpb24taWNvbi10cmFuc2Zvcm06ICAgICAgICAgICAgICAgIHJvdGF0ZSgtMTgwZGVnKSAhZGVmYXVsdDtcblxuJGFjY29yZGlvbi1idXR0b24taWNvbjogICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nI3skYWNjb3JkaW9uLWljb24tY29sb3J9Jz48cGF0aCBmaWxsLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xLjY0NiA0LjY0NmEuNS41IDAgMCAxIC43MDggMEw4IDEwLjI5M2w1LjY0Ni01LjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4IDBsLTYtNmEuNS41IDAgMCAxIDAtLjcwOHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kYWNjb3JkaW9uLWJ1dHRvbi1hY3RpdmUtaWNvbjogIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPScjeyRhY2NvcmRpb24taWNvbi1hY3RpdmUtY29sb3J9Jz48cGF0aCBmaWxsLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xLjY0NiA0LjY0NmEuNS41IDAgMCAxIC43MDggMEw4IDEwLjI5M2w1LjY0Ni01LjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4IDBsLTYtNmEuNS41IDAgMCAxIDAtLjcwOHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGFjY29yZGlvbi12YXJpYWJsZXNcblxuLy8gVG9vbHRpcHNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHRvb2x0aXAtdmFyaWFibGVzXG4kdG9vbHRpcC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAkZm9udC1zaXplLXNtICFkZWZhdWx0O1xuJHRvb2x0aXAtbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgMjAwcHggIWRlZmF1bHQ7XG4kdG9vbHRpcC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kdG9vbHRpcC1iZzogICAgICAgICAgICAgICAgICAgICAgICAkYmxhY2sgIWRlZmF1bHQ7XG4kdG9vbHRpcC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiR0b29sdGlwLW9wYWNpdHk6ICAgICAgICAgICAgICAgICAgIC45ICFkZWZhdWx0O1xuJHRvb2x0aXAtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgJHNwYWNlciAqIC4yNSAhZGVmYXVsdDtcbiR0b29sdGlwLXBhZGRpbmcteDogICAgICAgICAgICAgICAgICRzcGFjZXIgKiAuNSAhZGVmYXVsdDtcbiR0b29sdGlwLW1hcmdpbjogICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7IC8vIFRPRE86IHJlbW92ZSB0aGlzIGluIHY2XG5cbiR0b29sdGlwLWFycm93LXdpZHRoOiAgICAgICAgICAgICAgIC44cmVtICFkZWZhdWx0O1xuJHRvb2x0aXAtYXJyb3ctaGVpZ2h0OiAgICAgICAgICAgICAgLjRyZW0gIWRlZmF1bHQ7XG4vLyBmdXN2LWRpc2FibGVcbiR0b29sdGlwLWFycm93LWNvbG9yOiAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gQm9vdHN0cmFwIDUuMi4wIGZvciBDU1MgdmFyaWFibGVzXG4vLyBmdXN2LWVuYWJsZVxuLy8gc2Nzcy1kb2NzLWVuZCB0b29sdGlwLXZhcmlhYmxlc1xuXG4vLyBGb3JtIHRvb2x0aXBzIG11c3QgY29tZSBhZnRlciByZWd1bGFyIHRvb2x0aXBzXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdG9vbHRpcC1mZWVkYmFjay12YXJpYWJsZXNcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy15OiAgICAgJHRvb2x0aXAtcGFkZGluZy15ICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1wYWRkaW5nLXg6ICAgICAkdG9vbHRpcC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLWZvbnQtc2l6ZTogICAgICR0b29sdGlwLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtbGluZS1oZWlnaHQ6ICAgbnVsbCAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtb3BhY2l0eTogICAgICAgJHRvb2x0aXAtb3BhY2l0eSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtYm9yZGVyLXJhZGl1czogJHRvb2x0aXAtYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdG9vbHRpcC1mZWVkYmFjay12YXJpYWJsZXNcblxuXG4vLyBQb3BvdmVyc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgcG9wb3Zlci12YXJpYWJsZXNcbiRwb3BvdmVyLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICRmb250LXNpemUtc20gIWRlZmF1bHQ7XG4kcG9wb3Zlci1iZzogICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcG9wb3Zlci1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAyNzZweCAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvcmRlci13aWR0aDogICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yLXRyYW5zbHVjZW50KSAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuJHBvcG92ZXItaW5uZXItYm9yZGVyLXJhZGl1czogICAgICAgc3VidHJhY3QoJHBvcG92ZXItYm9yZGVyLXJhZGl1cywgJHBvcG92ZXItYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcbiRwb3BvdmVyLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICRib3gtc2hhZG93ICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1oZWFkZXItZm9udC1zaXplOiAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG4kcG9wb3Zlci1oZWFkZXItYmc6ICAgICAgICAgICAgICAgICBzaGFkZS1jb2xvcigkcG9wb3Zlci1iZywgNiUpICFkZWZhdWx0O1xuJHBvcG92ZXItaGVhZGVyLWNvbG9yOiAgICAgICAgICAgICAgJGhlYWRpbmdzLWNvbG9yICFkZWZhdWx0O1xuJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteTogICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcG9wb3Zlci1oZWFkZXItcGFkZGluZy14OiAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1ib2R5LWNvbG9yOiAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvZHktcGFkZGluZy15OiAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib2R5LXBhZGRpbmcteDogICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1hcnJvdy13aWR0aDogICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJHBvcG92ZXItYXJyb3ctaGVpZ2h0OiAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHBvcG92ZXItdmFyaWFibGVzXG5cbi8vIGZ1c3YtZGlzYWJsZVxuLy8gRGVwcmVjYXRlZCBpbiBCb290c3RyYXAgNS4yLjAgZm9yIENTUyB2YXJpYWJsZXNcbiRwb3BvdmVyLWFycm93LWNvbG9yOiAgICAgICAgICAgICAgICRwb3BvdmVyLWJnICFkZWZhdWx0O1xuJHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I6ICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCkgIWRlZmF1bHQ7XG4vLyBmdXN2LWVuYWJsZVxuXG5cbi8vIFRvYXN0c1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdG9hc3QtdmFyaWFibGVzXG4kdG9hc3QtbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgICAzNTBweCAhZGVmYXVsdDtcbiR0b2FzdC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiR0b2FzdC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHRvYXN0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgLjg3NXJlbSAhZGVmYXVsdDtcbiR0b2FzdC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kdG9hc3QtYmFja2dyb3VuZC1jb2xvcjogICAgICAgICAgICByZ2JhKCR3aGl0ZSwgLjg1KSAhZGVmYXVsdDtcbiR0b2FzdC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kdG9hc3QtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yLXRyYW5zbHVjZW50KSAhZGVmYXVsdDtcbiR0b2FzdC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJHRvYXN0LWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgJGJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kdG9hc3Qtc3BhY2luZzogICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLXBhZGRpbmcteCAhZGVmYXVsdDtcblxuJHRvYXN0LWhlYWRlci1jb2xvcjogICAgICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJHRvYXN0LWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yOiAgICAgcmdiYSgkd2hpdGUsIC44NSkgIWRlZmF1bHQ7XG4kdG9hc3QtaGVhZGVyLWJvcmRlci1jb2xvcjogICAgICAgICByZ2JhKCRibGFjaywgLjA1KSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdG9hc3QtdmFyaWFibGVzXG5cblxuLy8gQmFkZ2VzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBiYWRnZS12YXJpYWJsZXNcbiRiYWRnZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgIC43NWVtICFkZWZhdWx0O1xuJGJhZGdlLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG4kYmFkZ2UtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kYmFkZ2UtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAuMzVlbSAhZGVmYXVsdDtcbiRiYWRnZS1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgIC42NWVtICFkZWZhdWx0O1xuJGJhZGdlLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGJhZGdlLXZhcmlhYmxlc1xuXG5cbi8vIE1vZGFsc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgbW9kYWwtdmFyaWFibGVzXG4kbW9kYWwtaW5uZXItcGFkZGluZzogICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuXG4kbW9kYWwtZm9vdGVyLW1hcmdpbi1iZXR3ZWVuOiAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuJG1vZGFsLWRpYWxvZy1tYXJnaW46ICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwOiAgICAgICAxLjc1cmVtICFkZWZhdWx0O1xuXG4kbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQ6ICAgICAgICAgICAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcblxuJG1vZGFsLWNvbnRlbnQtY29sb3I6ICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJnOiAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvcjogICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQpICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoOiAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJvcmRlci1yYWRpdXM6ICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtaW5uZXItYm9yZGVyLXJhZGl1czogc3VidHJhY3QoJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXJhZGl1cywgJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHM6ICAgICAgICRib3gtc2hhZG93LXNtICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy1zbS11cDogICAgJGJveC1zaGFkb3cgIWRlZmF1bHQ7XG5cbiRtb2RhbC1iYWNrZHJvcC1iZzogICAgICAgICAgICAgICAgICRibGFjayAhZGVmYXVsdDtcbiRtb2RhbC1iYWNrZHJvcC1vcGFjaXR5OiAgICAgICAgICAgIC41ICFkZWZhdWx0O1xuXG4kbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoOiAgICAgICAgICRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItcGFkZGluZy15OiAgICAgICAgICAgICRtb2RhbC1pbm5lci1wYWRkaW5nICFkZWZhdWx0O1xuJG1vZGFsLWhlYWRlci1wYWRkaW5nLXg6ICAgICAgICAgICAgJG1vZGFsLWlubmVyLXBhZGRpbmcgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLXBhZGRpbmc6ICAgICAgICAgICAgICAkbW9kYWwtaGVhZGVyLXBhZGRpbmcteSAkbW9kYWwtaGVhZGVyLXBhZGRpbmcteCAhZGVmYXVsdDsgLy8gS2VlcCB0aGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG4kbW9kYWwtZm9vdGVyLWJnOiAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I6ICAgICAgICAgJG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kbW9kYWwtZm9vdGVyLWJvcmRlci13aWR0aDogICAgICAgICAkbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcblxuJG1vZGFsLXNtOiAgICAgICAgICAgICAgICAgICAgICAgICAgMzAwcHggIWRlZmF1bHQ7XG4kbW9kYWwtbWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICA1MDBweCAhZGVmYXVsdDtcbiRtb2RhbC1sZzogICAgICAgICAgICAgICAgICAgICAgICAgIDgwMHB4ICFkZWZhdWx0O1xuJG1vZGFsLXhsOiAgICAgICAgICAgICAgICAgICAgICAgICAgMTE0MHB4ICFkZWZhdWx0O1xuXG4kbW9kYWwtZmFkZS10cmFuc2Zvcm06ICAgICAgICAgICAgICB0cmFuc2xhdGUoMCwgLTUwcHgpICFkZWZhdWx0O1xuJG1vZGFsLXNob3ctdHJhbnNmb3JtOiAgICAgICAgICAgICAgbm9uZSAhZGVmYXVsdDtcbiRtb2RhbC10cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQgIWRlZmF1bHQ7XG4kbW9kYWwtc2NhbGUtdHJhbnNmb3JtOiAgICAgICAgICAgICBzY2FsZSgxLjAyKSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgbW9kYWwtdmFyaWFibGVzXG5cblxuLy8gQWxlcnRzXG4vL1xuLy8gRGVmaW5lIGFsZXJ0IGNvbG9ycywgYm9yZGVyIHJhZGl1cywgYW5kIHBhZGRpbmcuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBhbGVydC12YXJpYWJsZXNcbiRhbGVydC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcbiRhbGVydC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcbiRhbGVydC1tYXJnaW4tYm90dG9tOiAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRhbGVydC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kYWxlcnQtbGluay1mb250LXdlaWdodDogICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuJGFsZXJ0LWJvcmRlci13aWR0aDogICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGFsZXJ0LWJnLXNjYWxlOiAgICAgICAgICAgICAgICAtODAlICFkZWZhdWx0O1xuJGFsZXJ0LWJvcmRlci1zY2FsZTogICAgICAgICAgICAtNzAlICFkZWZhdWx0O1xuJGFsZXJ0LWNvbG9yLXNjYWxlOiAgICAgICAgICAgICA0MCUgIWRlZmF1bHQ7XG4kYWxlcnQtZGlzbWlzc2libGUtcGFkZGluZy1yOiAgICRhbGVydC1wYWRkaW5nLXggKiAzICFkZWZhdWx0OyAvLyAzeCBjb3ZlcnMgd2lkdGggb2YgeCBwbHVzIGRlZmF1bHQgcGFkZGluZyBvbiBlaXRoZXIgc2lkZVxuLy8gc2Nzcy1kb2NzLWVuZCBhbGVydC12YXJpYWJsZXNcblxuXG4vLyBQcm9ncmVzcyBiYXJzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBwcm9ncmVzcy12YXJpYWJsZXNcbiRwcm9ncmVzcy1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAuNzUgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmc6ICAgICAgICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRwcm9ncmVzcy1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICRib3gtc2hhZG93LWluc2V0ICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1iZzogICAgICAgICAgICAgICAgICAgJHByaW1hcnkgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmFyLWFuaW1hdGlvbi10aW1pbmc6ICAgICAxcyBsaW5lYXIgaW5maW5pdGUgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb246ICAgICAgICAgICB3aWR0aCAuNnMgZWFzZSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgcHJvZ3Jlc3MtdmFyaWFibGVzXG5cblxuLy8gTGlzdCBncm91cFxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgbGlzdC1ncm91cC12YXJpYWJsZXNcbiRsaXN0LWdyb3VwLWNvbG9yOiAgICAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJnOiAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJvcmRlci1jb2xvcjogICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMTI1KSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDogICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXk6ICAgICAgICAgJHNwYWNlciAqIC41ICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXg6ICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWl0ZW0tYmctc2NhbGU6ICAgICAgICAgIC04MCUgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1pdGVtLWNvbG9yLXNjYWxlOiAgICAgICA0MCUgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWhvdmVyLWJnOiAgICAgICAgICAgICAgICRncmF5LTEwMCAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLWJnOiAgICAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yOiAgICAkbGlzdC1ncm91cC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWRpc2FibGVkLWJnOiAgICAgICAgICAgICRsaXN0LWdyb3VwLWJnICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1hY3Rpb24tY29sb3I6ICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3I6ICAgICAkbGlzdC1ncm91cC1hY3Rpb24tY29sb3IgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtY29sb3I6ICAgICRib2R5LWNvbG9yICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1iZzogICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBsaXN0LWdyb3VwLXZhcmlhYmxlc1xuXG5cbi8vIEltYWdlIHRodW1ibmFpbHNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHRodW1ibmFpbC12YXJpYWJsZXNcbiR0aHVtYm5haWwtcGFkZGluZzogICAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYmc6ICAgICAgICAgICAgICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3IpICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAkYm94LXNoYWRvdy1zbSAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgdGh1bWJuYWlsLXZhcmlhYmxlc1xuXG5cbi8vIEZpZ3VyZXNcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZpZ3VyZS12YXJpYWJsZXNcbiRmaWd1cmUtY2FwdGlvbi1mb250LXNpemU6ICAgICAgICAgICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG4kZmlndXJlLWNhcHRpb24tY29sb3I6ICAgICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGZpZ3VyZS12YXJpYWJsZXNcblxuXG4vLyBCcmVhZGNydW1ic1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYnJlYWRjcnVtYi12YXJpYWJsZXNcbiRicmVhZGNydW1iLWZvbnQtc2l6ZTogICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1wYWRkaW5nLXk6ICAgICAgICAgICAgICAwICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItcGFkZGluZy14OiAgICAgICAgICAgICAgMCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWl0ZW0tcGFkZGluZy14OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItbWFyZ2luLWJvdHRvbTogICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWJnOiAgICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yOiAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1hY3RpdmUtY29sb3I6ICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyOiAgICAgICAgICAgICAgICBxdW90ZShcIi9cIikgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyLWZsaXBwZWQ6ICAgICAgICAkYnJlYWRjcnVtYi1kaXZpZGVyICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItYm9yZGVyLXJhZGl1czogICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbi8vIHNjc3MtZG9jcy1lbmQgYnJlYWRjcnVtYi12YXJpYWJsZXNcblxuLy8gQ2Fyb3VzZWxcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNhcm91c2VsLXZhcmlhYmxlc1xuJGNhcm91c2VsLWNvbnRyb2wtY29sb3I6ICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLXdpZHRoOiAgICAgICAgICAgICAxNSUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1vcGFjaXR5OiAgICAgICAgICAgLjUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1ob3Zlci1vcGFjaXR5OiAgICAgLjkgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC10cmFuc2l0aW9uOiAgICAgICAgb3BhY2l0eSAuMTVzIGVhc2UgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1pbmRpY2F0b3Itd2lkdGg6ICAgICAgICAgICAzMHB4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1oZWlnaHQ6ICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItaGl0LWFyZWEtaGVpZ2h0OiAxMHB4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI6ICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3Itb3BhY2l0eTogICAgICAgICAuNSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWFjdGl2ZS1vcGFjaXR5OiAgMSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItdHJhbnNpdGlvbjogICAgICBvcGFjaXR5IC42cyBlYXNlICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY2FwdGlvbi13aWR0aDogICAgICAgICAgICAgNzAlICFkZWZhdWx0O1xuJGNhcm91c2VsLWNhcHRpb24tY29sb3I6ICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jYXB0aW9uLXBhZGRpbmcteTogICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGNhcm91c2VsLWNhcHRpb24tc3BhY2VyOiAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1jb250cm9sLWljb24td2lkdGg6ICAgICAgICAycmVtICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9Jz48cGF0aCBkPSdNMTEuMzU0IDEuNjQ2YS41LjUgMCAwIDEgMCAuNzA4TDUuNzA3IDhsNS42NDcgNS42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtNi02YS41LjUgMCAwIDEgMC0uNzA4bDYtNmEuNS41IDAgMCAxIC43MDggMHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9Jz48cGF0aCBkPSdNNC42NDYgMS42NDZhLjUuNSAwIDAgMSAuNzA4IDBsNiA2YS41LjUgMCAwIDEgMCAuNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuMjkzIDggNC42NDYgMi4zNTRhLjUuNSAwIDAgMSAwLS43MDh6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbjogICAgICAgLjZzICFkZWZhdWx0O1xuJGNhcm91c2VsLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAkY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbiBlYXNlLWluLW91dCAhZGVmYXVsdDsgLy8gRGVmaW5lIHRyYW5zZm9ybSB0cmFuc2l0aW9uIGZpcnN0IGlmIHVzaW5nIG11bHRpcGxlIHRyYW5zaXRpb25zIChlLmcuLCBgdHJhbnNmb3JtIDJzIGVhc2UsIG9wYWNpdHkgLjVzIGVhc2Utb3V0YClcbi8vIHNjc3MtZG9jcy1lbmQgY2Fyb3VzZWwtdmFyaWFibGVzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBjYXJvdXNlbC1kYXJrLXZhcmlhYmxlc1xuJGNhcm91c2VsLWRhcmstaW5kaWNhdG9yLWFjdGl2ZS1iZzogICRibGFjayAhZGVmYXVsdDtcbiRjYXJvdXNlbC1kYXJrLWNhcHRpb24tY29sb3I6ICAgICAgICAkYmxhY2sgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtZGFyay1jb250cm9sLWljb24tZmlsdGVyOiAgaW52ZXJ0KDEpIGdyYXlzY2FsZSgxMDApICFkZWZhdWx0O1xuLy8gc2Nzcy1kb2NzLWVuZCBjYXJvdXNlbC1kYXJrLXZhcmlhYmxlc1xuXG5cbi8vIFNwaW5uZXJzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBzcGlubmVyLXZhcmlhYmxlc1xuJHNwaW5uZXItd2lkdGg6ICAgICAgICAgICAycmVtICFkZWZhdWx0O1xuJHNwaW5uZXItaGVpZ2h0OiAgICAgICAgICAkc3Bpbm5lci13aWR0aCAhZGVmYXVsdDtcbiRzcGlubmVyLXZlcnRpY2FsLWFsaWduOiAgLS4xMjVlbSAhZGVmYXVsdDtcbiRzcGlubmVyLWJvcmRlci13aWR0aDogICAgLjI1ZW0gIWRlZmF1bHQ7XG4kc3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6IC43NXMgIWRlZmF1bHQ7XG5cbiRzcGlubmVyLXdpZHRoLXNtOiAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRzcGlubmVyLWhlaWdodC1zbTogICAgICAgJHNwaW5uZXItd2lkdGgtc20gIWRlZmF1bHQ7XG4kc3Bpbm5lci1ib3JkZXItd2lkdGgtc206IC4yZW0gIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIHNwaW5uZXItdmFyaWFibGVzXG5cblxuLy8gQ2xvc2VcblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNsb3NlLXZhcmlhYmxlc1xuJGJ0bi1jbG9zZS13aWR0aDogICAgICAgICAgICAxZW0gIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLWhlaWdodDogICAgICAgICAgICRidG4tY2xvc2Utd2lkdGggIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLXBhZGRpbmcteDogICAgICAgIC4yNWVtICFkZWZhdWx0O1xuJGJ0bi1jbG9zZS1wYWRkaW5nLXk6ICAgICAgICAkYnRuLWNsb3NlLXBhZGRpbmcteCAhZGVmYXVsdDtcbiRidG4tY2xvc2UtY29sb3I6ICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJGJ0bi1jbG9zZS1iZzogICAgICAgICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nI3skYnRuLWNsb3NlLWNvbG9yfSc+PHBhdGggZD0nTS4yOTMuMjkzYTEgMSAwIDAgMSAxLjQxNCAwTDggNi41ODYgMTQuMjkzLjI5M2ExIDEgMCAxIDEgMS40MTQgMS40MTRMOS40MTQgOGw2LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQgMS40MTRMOCA5LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0TDYuNTg2IDggLjI5MyAxLjcwN2ExIDEgMCAwIDEgMC0xLjQxNHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLWZvY3VzLXNoYWRvdzogICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRidG4tY2xvc2Utb3BhY2l0eTogICAgICAgICAgLjUgIWRlZmF1bHQ7XG4kYnRuLWNsb3NlLWhvdmVyLW9wYWNpdHk6ICAgIC43NSAhZGVmYXVsdDtcbiRidG4tY2xvc2UtZm9jdXMtb3BhY2l0eTogICAgMSAhZGVmYXVsdDtcbiRidG4tY2xvc2UtZGlzYWJsZWQtb3BhY2l0eTogLjI1ICFkZWZhdWx0O1xuJGJ0bi1jbG9zZS13aGl0ZS1maWx0ZXI6ICAgICBpbnZlcnQoMSkgZ3JheXNjYWxlKDEwMCUpIGJyaWdodG5lc3MoMjAwJSkgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIGNsb3NlLXZhcmlhYmxlc1xuXG5cbi8vIE9mZmNhbnZhc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgb2ZmY2FudmFzLXZhcmlhYmxlc1xuJG9mZmNhbnZhcy1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgJG1vZGFsLWlubmVyLXBhZGRpbmcgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLXBhZGRpbmcteDogICAgICAgICAgICAgICAkbW9kYWwtaW5uZXItcGFkZGluZyAhZGVmYXVsdDtcbiRvZmZjYW52YXMtaG9yaXpvbnRhbC13aWR0aDogICAgICAgIDQwMHB4ICFkZWZhdWx0O1xuJG9mZmNhbnZhcy12ZXJ0aWNhbC1oZWlnaHQ6ICAgICAgICAgMzB2aCAhZGVmYXVsdDtcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi1kdXJhdGlvbjogICAgIC4zcyAhZGVmYXVsdDtcbiRvZmZjYW52YXMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICRtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRvZmZjYW52YXMtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRvZmZjYW52YXMtdGl0bGUtbGluZS1oZWlnaHQ6ICAgICAgICRtb2RhbC10aXRsZS1saW5lLWhlaWdodCAhZGVmYXVsdDtcbiRvZmZjYW52YXMtYmctY29sb3I6ICAgICAgICAgICAgICAgICRtb2RhbC1jb250ZW50LWJnICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1jb2xvcjogICAgICAgICAgICAgICAgICAgJG1vZGFsLWNvbnRlbnQtY29sb3IgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAkbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXhzICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1iYWNrZHJvcC1iZzogICAgICAgICAgICAgJG1vZGFsLWJhY2tkcm9wLWJnICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1iYWNrZHJvcC1vcGFjaXR5OiAgICAgICAgJG1vZGFsLWJhY2tkcm9wLW9wYWNpdHkgIWRlZmF1bHQ7XG4vLyBzY3NzLWRvY3MtZW5kIG9mZmNhbnZhcy12YXJpYWJsZXNcblxuLy8gQ29kZVxuXG4kY29kZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xuJGNvZGUtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgJHBpbmsgIWRlZmF1bHQ7XG5cbiRrYmQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAgIC4xODc1cmVtICFkZWZhdWx0O1xuJGtiZC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgICAgLjM3NXJlbSAhZGVmYXVsdDtcbiRrYmQtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgICRjb2RlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRrYmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWJnKSAhZGVmYXVsdDtcbiRrYmQtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcbiRuZXN0ZWQta2JkLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMi4wLCByZW1vdmluZyBpbiB2NlxuXG4kcHJlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgcHJvcGVydHktZGlzYWxsb3dlZC1saXN0XG4vLyBTaW5nbGUgc2lkZSBib3JkZXItcmFkaXVzXG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byByZXBsYWNlIG5lZ2F0aXZlIHZhbHVlcyB3aXRoIDBcbkBmdW5jdGlvbiB2YWxpZC1yYWRpdXMoJHJhZGl1cykge1xuICAkcmV0dXJuOiAoKTtcbiAgQGVhY2ggJHZhbHVlIGluICRyYWRpdXMge1xuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyIHtcbiAgICAgICRyZXR1cm46IGFwcGVuZCgkcmV0dXJuLCBtYXgoJHZhbHVlLCAwKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBhcHBlbmQoJHJldHVybiwgJHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYm9yZGVyLXJhZGl1cy1taXhpbnNcbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzLCAkZmFsbGJhY2stYm9yZGVyLXJhZGl1czogZmFsc2UpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICB9XG4gIEBlbHNlIGlmICRmYWxsYmFjay1ib3JkZXItcmFkaXVzICE9IGZhbHNlIHtcbiAgICBib3JkZXItcmFkaXVzOiAkZmFsbGJhY2stYm9yZGVyLXJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1lbmQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1zdGFydC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1zdGFydC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItdG9wLWVuZC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1lbmQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tc3RhcnQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxufVxuLy8gc2Nzcy1kb2NzLWVuZCBib3JkZXItcmFkaXVzLW1peGluc1xuIiwiLy9cbi8vIEhlYWRpbmdzXG4vL1xuLmgxIHtcbiAgQGV4dGVuZCBoMTtcbn1cblxuLmgyIHtcbiAgQGV4dGVuZCBoMjtcbn1cblxuLmgzIHtcbiAgQGV4dGVuZCBoMztcbn1cblxuLmg0IHtcbiAgQGV4dGVuZCBoNDtcbn1cblxuLmg1IHtcbiAgQGV4dGVuZCBoNTtcbn1cblxuLmg2IHtcbiAgQGV4dGVuZCBoNjtcbn1cblxuXG4ubGVhZCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkbGVhZC1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGxlYWQtZm9udC13ZWlnaHQ7XG59XG5cbi8vIFR5cGUgZGlzcGxheSBjbGFzc2VzXG5AZWFjaCAkZGlzcGxheSwgJGZvbnQtc2l6ZSBpbiAkZGlzcGxheS1mb250LXNpemVzIHtcbiAgLmRpc3BsYXktI3skZGlzcGxheX0ge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplKTtcbiAgICBmb250LWZhbWlseTogJGRpc3BsYXktZm9udC1mYW1pbHk7XG4gICAgZm9udC1zdHlsZTogJGRpc3BsYXktZm9udC1zdHlsZTtcbiAgICBmb250LXdlaWdodDogJGRpc3BsYXktZm9udC13ZWlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6ICRkaXNwbGF5LWxpbmUtaGVpZ2h0O1xuICB9XG59XG5cbi8vXG4vLyBFbXBoYXNpc1xuLy9cbi5zbWFsbCB7XG4gIEBleHRlbmQgc21hbGw7XG59XG5cbi5tYXJrIHtcbiAgQGV4dGVuZCBtYXJrO1xufVxuXG4vL1xuLy8gTGlzdHNcbi8vXG5cbi5saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgbGlzdC11bnN0eWxlZCgpO1xufVxuXG4vLyBJbmxpbmUgdHVybnMgbGlzdCBpdGVtcyBpbnRvIGlubGluZS1ibG9ja1xuLmxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgbGlzdC11bnN0eWxlZCgpO1xufVxuLmxpc3QtaW5saW5lLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRsaXN0LWlubGluZS1wYWRkaW5nO1xuICB9XG59XG5cblxuLy9cbi8vIE1pc2Ncbi8vXG5cbi8vIEJ1aWxkcyBvbiBgYWJicmBcbi5pbml0aWFsaXNtIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbml0aWFsaXNtLWZvbnQtc2l6ZSk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8vIEJsb2NrcXVvdGVzXG4uYmxvY2txdW90ZSB7XG4gIG1hcmdpbi1ib3R0b206ICRibG9ja3F1b3RlLW1hcmdpbi15O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGJsb2NrcXVvdGUtZm9udC1zaXplKTtcblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi5ibG9ja3F1b3RlLWZvb3RlciB7XG4gIG1hcmdpbi10b3A6IC0kYmxvY2txdW90ZS1tYXJnaW4teTtcbiAgbWFyZ2luLWJvdHRvbTogJGJsb2NrcXVvdGUtbWFyZ2luLXk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYmxvY2txdW90ZS1mb290ZXItZm9udC1zaXplKTtcbiAgY29sb3I6ICRibG9ja3F1b3RlLWZvb3Rlci1jb2xvcjtcblxuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDE0XFwwMEEwXCI7IC8vIGVtIGRhc2gsIG5ic3BcbiAgfVxufVxuIiwiLy8gTGlzdHNcblxuLy8gVW5zdHlsZWQga2VlcHMgbGlzdCBpdGVtcyBibG9jayBsZXZlbCwganVzdCByZW1vdmVzIGRlZmF1bHQgYnJvd3NlciBwYWRkaW5nIGFuZCBsaXN0LXN0eWxlXG5AbWl4aW4gbGlzdC11bnN0eWxlZCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbiIsIi8vIFJlc3BvbnNpdmUgaW1hZ2VzIChlbnN1cmUgaW1hZ2VzIGRvbid0IHNjYWxlIGJleW9uZCB0aGVpciBwYXJlbnRzKVxuLy9cbi8vIFRoaXMgaXMgcHVycG9zZWZ1bGx5IG9wdC1pbiB2aWEgYW4gZXhwbGljaXQgY2xhc3MgcmF0aGVyIHRoYW4gYmVpbmcgdGhlIGRlZmF1bHQgZm9yIGFsbCBgPGltZz5gcy5cbi8vIFdlIHByZXZpb3VzbHkgdHJpZWQgdGhlIFwiaW1hZ2VzIGFyZSByZXNwb25zaXZlIGJ5IGRlZmF1bHRcIiBhcHByb2FjaCBpbiBCb290c3RyYXAgdjIsXG4vLyBhbmQgYWJhbmRvbmVkIGl0IGluIEJvb3RzdHJhcCB2MyBiZWNhdXNlIGl0IGJyZWFrcyBsb3RzIG9mIHRoaXJkLXBhcnR5IHdpZGdldHMgKGluY2x1ZGluZyBHb29nbGUgTWFwcylcbi8vIHdoaWNoIHdlcmVuJ3QgZXhwZWN0aW5nIHRoZSBpbWFnZXMgd2l0aGluIHRoZW1zZWx2ZXMgdG8gYmUgaW52b2x1bnRhcmlseSByZXNpemVkLlxuLy8gU2VlIGFsc28gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xODE3OFxuLmltZy1mbHVpZCB7XG4gIEBpbmNsdWRlIGltZy1mbHVpZCgpO1xufVxuXG5cbi8vIEltYWdlIHRodW1ibmFpbHNcbi5pbWctdGh1bWJuYWlsIHtcbiAgcGFkZGluZzogJHRodW1ibmFpbC1wYWRkaW5nO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGh1bWJuYWlsLWJnO1xuICBib3JkZXI6ICR0aHVtYm5haWwtYm9yZGVyLXdpZHRoIHNvbGlkICR0aHVtYm5haWwtYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCR0aHVtYm5haWwtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJHRodW1ibmFpbC1ib3gtc2hhZG93KTtcblxuICAvLyBLZWVwIHRoZW0gYXQgbW9zdCAxMDAlIHdpZGVcbiAgQGluY2x1ZGUgaW1nLWZsdWlkKCk7XG59XG5cbi8vXG4vLyBGaWd1cmVzXG4vL1xuXG4uZmlndXJlIHtcbiAgLy8gRW5zdXJlcyB0aGUgY2FwdGlvbidzIHRleHQgYWxpZ25zIHdpdGggdGhlIGltYWdlLlxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5maWd1cmUtaW1nIHtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlciAqIC41O1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLmZpZ3VyZS1jYXB0aW9uIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmaWd1cmUtY2FwdGlvbi1mb250LXNpemUpO1xuICBjb2xvcjogJGZpZ3VyZS1jYXB0aW9uLWNvbG9yO1xufVxuIiwiLy8gSW1hZ2UgTWl4aW5zXG4vLyAtIFJlc3BvbnNpdmUgaW1hZ2Vcbi8vIC0gUmV0aW5hIGltYWdlXG5cblxuLy8gUmVzcG9uc2l2ZSBpbWFnZVxuLy9cbi8vIEtlZXAgaW1hZ2VzIGZyb20gc2NhbGluZyBiZXlvbmQgdGhlIHdpZHRoIG9mIHRoZWlyIHBhcmVudHMuXG5cbkBtaXhpbiBpbWctZmx1aWQge1xuICAvLyBQYXJ0IDE6IFNldCBhIG1heGltdW0gcmVsYXRpdmUgdG8gdGhlIHBhcmVudFxuICBtYXgtd2lkdGg6IDEwMCU7XG4gIC8vIFBhcnQgMjogT3ZlcnJpZGUgdGhlIGhlaWdodCB0byBhdXRvLCBvdGhlcndpc2UgaW1hZ2VzIHdpbGwgYmUgc3RyZXRjaGVkXG4gIC8vIHdoZW4gc2V0dGluZyBhIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlIG9uIHRoZSBpbWcgZWxlbWVudC5cbiAgaGVpZ2h0OiBhdXRvO1xufVxuIiwiLy8gQ29udGFpbmVyIHdpZHRoc1xuLy9cbi8vIFNldCB0aGUgY29udGFpbmVyIHdpZHRoLCBhbmQgb3ZlcnJpZGUgaXQgZm9yIGZpeGVkIG5hdmJhcnMgaW4gbWVkaWEgcXVlcmllcy5cblxuQGlmICRlbmFibGUtY29udGFpbmVyLWNsYXNzZXMge1xuICAvLyBTaW5nbGUgY29udGFpbmVyIGNsYXNzIHdpdGggYnJlYWtwb2ludCBtYXgtd2lkdGhzXG4gIC5jb250YWluZXIsXG4gIC8vIDEwMCUgd2lkZSBjb250YWluZXIgYXQgYWxsIGJyZWFrcG9pbnRzXG4gIC5jb250YWluZXItZmx1aWQge1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyKCk7XG4gIH1cblxuICAvLyBSZXNwb25zaXZlIGNvbnRhaW5lcnMgdGhhdCBhcmUgMTAwJSB3aWRlIHVudGlsIGEgYnJlYWtwb2ludFxuICBAZWFjaCAkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcbiAgICAuY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgIEBleHRlbmQgLmNvbnRhaW5lci1mbHVpZDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cykge1xuICAgICAgJXJlc3BvbnNpdmUtY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgICAgbWF4LXdpZHRoOiAkY29udGFpbmVyLW1heC13aWR0aDtcbiAgICAgIH1cblxuICAgICAgLy8gRXh0ZW5kIGVhY2ggYnJlYWtwb2ludCB3aGljaCBpcyBzbWFsbGVyIG9yIGVxdWFsIHRvIHRoZSBjdXJyZW50IGJyZWFrcG9pbnRcbiAgICAgICRleHRlbmQtYnJlYWtwb2ludDogdHJ1ZTtcblxuICAgICAgQGVhY2ggJG5hbWUsICR3aWR0aCBpbiAkZ3JpZC1icmVha3BvaW50cyB7XG4gICAgICAgIEBpZiAoJGV4dGVuZC1icmVha3BvaW50KSB7XG4gICAgICAgICAgLmNvbnRhaW5lciN7YnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGdyaWQtYnJlYWtwb2ludHMpfSB7XG4gICAgICAgICAgICBAZXh0ZW5kICVyZXNwb25zaXZlLWNvbnRhaW5lci0jeyRicmVha3BvaW50fTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBPbmNlIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgaXMgcmVhY2hlZCwgc3RvcCBleHRlbmRpbmdcbiAgICAgICAgICBAaWYgKCRicmVha3BvaW50ID09ICRuYW1lKSB7XG4gICAgICAgICAgICAkZXh0ZW5kLWJyZWFrcG9pbnQ6IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQ29udGFpbmVyIG1peGluc1xuXG5AbWl4aW4gbWFrZS1jb250YWluZXIoJGd1dHRlcjogJGNvbnRhaW5lci1wYWRkaW5nLXgpIHtcbiAgLS0jeyRwcmVmaXh9Z3V0dGVyLXg6ICN7JGd1dHRlcn07XG4gIC0tI3skcHJlZml4fWd1dHRlci15OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9Z3V0dGVyLXgpICogLjUpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tI3skcHJlZml4fWd1dHRlci14KSAqIC41KTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEBpZiBub3QgJG4ge1xuICAgIEBlcnJvciBcImJyZWFrcG9pbnQgYCN7JG5hbWV9YCBub3QgZm91bmQgaW4gYCN7JGJyZWFrcG9pbnRzfWBcIjtcbiAgfVxuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2Zcbi8vIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtYXggYW5kICRtYXggPiAwLCAkbWF4IC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiLXNtXCJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiAgYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3dcbi8vXG4vLyBSb3dzIGNvbnRhaW4geW91ciBjb2x1bW5zLlxuXG5AaWYgJGVuYWJsZS1ncmlkLWNsYXNzZXMge1xuICAucm93IHtcbiAgICBAaW5jbHVkZSBtYWtlLXJvdygpO1xuXG4gICAgPiAqIHtcbiAgICAgIEBpbmNsdWRlIG1ha2UtY29sLXJlYWR5KCk7XG4gICAgfVxuICB9XG59XG5cbkBpZiAkZW5hYmxlLWNzc2dyaWQge1xuICAuZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCh2YXIoLS0jeyRwcmVmaXh9cm93cywgMSksIDFmcik7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQodmFyKC0tI3skcHJlZml4fWNvbHVtbnMsICN7JGdyaWQtY29sdW1uc30pLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tI3skcHJlZml4fWdhcCwgI3skZ3JpZC1ndXR0ZXItd2lkdGh9KTtcblxuICAgIEBpbmNsdWRlIG1ha2UtY3NzZ3JpZCgpO1xuICB9XG59XG5cblxuLy8gQ29sdW1uc1xuLy9cbi8vIENvbW1vbiBzdHlsZXMgZm9yIHNtYWxsIGFuZCBsYXJnZSBncmlkIGNvbHVtbnNcblxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcbiAgQGluY2x1ZGUgbWFrZS1ncmlkLWNvbHVtbnMoKTtcbn1cbiIsIi8vIEdyaWQgc3lzdGVtXG4vL1xuLy8gR2VuZXJhdGUgc2VtYW50aWMgZ3JpZCBjb2x1bW5zIHdpdGggdGhlc2UgbWl4aW5zLlxuXG5AbWl4aW4gbWFrZS1yb3coJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoKSB7XG4gIC0tI3skcHJlZml4fWd1dHRlci14OiAjeyRndXR0ZXJ9O1xuICAtLSN7JHByZWZpeH1ndXR0ZXIteTogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICAvLyBUT0RPOiBSZXZpc2l0IGNhbGMgb3JkZXIgYWZ0ZXIgaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzYwMzkgaXMgZml4ZWRcbiAgbWFyZ2luLXRvcDogY2FsYygtMSAqIHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteSkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWd1dHRlci14KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gIG1hcmdpbi1sZWZ0OiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxufVxuXG5AbWl4aW4gbWFrZS1jb2wtcmVhZHkoKSB7XG4gIC8vIEFkZCBib3ggc2l6aW5nIGlmIG9ubHkgdGhlIGdyaWQgaXMgbG9hZGVkXG4gIGJveC1zaXppbmc6IGlmKHZhcmlhYmxlLWV4aXN0cyhpbmNsdWRlLWNvbHVtbi1ib3gtc2l6aW5nKSBhbmQgJGluY2x1ZGUtY29sdW1uLWJveC1zaXppbmcsIGJvcmRlci1ib3gsIG51bGwpO1xuICAvLyBQcmV2ZW50IGNvbHVtbnMgZnJvbSBiZWNvbWluZyB0b28gbmFycm93IHdoZW4gYXQgc21hbGxlciBncmlkIHRpZXJzIGJ5XG4gIC8vIGFsd2F5cyBzZXR0aW5nIGB3aWR0aDogMTAwJTtgLiBUaGlzIHdvcmtzIGJlY2F1c2Ugd2Ugc2V0IHRoZSB3aWR0aFxuICAvLyBsYXRlciBvbiB0byBvdmVycmlkZSB0aGlzIGluaXRpYWwgd2lkdGguXG4gIGZsZXgtc2hyaW5rOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlOyAvLyBQcmV2ZW50IGAuY29sLWF1dG9gLCBgLmNvbGAgKCYgcmVzcG9uc2l2ZSB2YXJpYW50cykgZnJvbSBicmVha2luZyBvdXQgdGhlIGdyaWRcbiAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9Z3V0dGVyLXgpICogLjUpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tI3skcHJlZml4fWd1dHRlci14KSAqIC41KTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgbWFyZ2luLXRvcDogdmFyKC0tI3skcHJlZml4fWd1dHRlci15KTtcbn1cblxuQG1peGluIG1ha2UtY29sKCRzaXplOiBmYWxzZSwgJGNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgQGlmICRzaXplIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogcGVyY2VudGFnZShkaXZpZGUoJHNpemUsICRjb2x1bW5zKSk7XG5cbiAgfSBAZWxzZSB7XG4gICAgZmxleDogMSAxIDA7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1hdXRvKCkge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1vZmZzZXQoJHNpemUsICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gICRudW06IGRpdmlkZSgkc2l6ZSwgJGNvbHVtbnMpO1xuICBtYXJnaW4tbGVmdDogaWYoJG51bSA9PSAwLCAwLCBwZXJjZW50YWdlKCRudW0pKTtcbn1cblxuLy8gUm93IGNvbHVtbnNcbi8vXG4vLyBTcGVjaWZ5IG9uIGEgcGFyZW50IGVsZW1lbnQoZS5nLiwgLnJvdykgdG8gZm9yY2UgaW1tZWRpYXRlIGNoaWxkcmVuIGludG8gTk5cbi8vIG51bWJlciBvZiBjb2x1bW5zLiBTdXBwb3J0cyB3cmFwcGluZyB0byBuZXcgbGluZXMsIGJ1dCBkb2VzIG5vdCBkbyBhIE1hc29ucnlcbi8vIHN0eWxlIGdyaWQuXG5AbWl4aW4gcm93LWNvbHMoJGNvdW50KSB7XG4gID4gKiB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IGRpdmlkZSgxMDAlLCAkY291bnQpO1xuICB9XG59XG5cbi8vIEZyYW1ld29yayBncmlkIGdlbmVyYXRpb25cbi8vXG4vLyBVc2VkIG9ubHkgYnkgQm9vdHN0cmFwIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBncmlkIGNsYXNzZXMgZ2l2ZW5cbi8vIGFueSB2YWx1ZSBvZiBgJGdyaWQtY29sdW1uc2AuXG5cbkBtaXhpbiBtYWtlLWdyaWQtY29sdW1ucygkY29sdW1uczogJGdyaWQtY29sdW1ucywgJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRicmVha3BvaW50cykge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cykge1xuICAgICAgLy8gUHJvdmlkZSBiYXNpYyBgLmNvbC17YnB9YCBjbGFzc2VzIGZvciBlcXVhbC13aWR0aCBmbGV4Ym94IGNvbHVtbnNcbiAgICAgIC5jb2wjeyRpbmZpeH0ge1xuICAgICAgICBmbGV4OiAxIDAgMCU7IC8vIEZsZXhidWdzICM0OiBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzI2ZsZXhidWctNFxuICAgICAgfVxuXG4gICAgICAucm93LWNvbHMjeyRpbmZpeH0tYXV0byA+ICoge1xuICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1hdXRvKCk7XG4gICAgICB9XG5cbiAgICAgIEBpZiAkZ3JpZC1yb3ctY29sdW1ucyA+IDAge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLXJvdy1jb2x1bW5zIHtcbiAgICAgICAgICAucm93LWNvbHMjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgcm93LWNvbHMoJGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29sI3skaW5maXh9LWF1dG8ge1xuICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1hdXRvKCk7XG4gICAgICB9XG5cbiAgICAgIEBpZiAkY29sdW1ucyA+IDAge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb2x1bW5zIHtcbiAgICAgICAgICAuY29sI3skaW5maXh9LSN7JGl9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1ha2UtY29sKCRpLCAkY29sdW1ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gYCRjb2x1bW5zIC0gMWAgYmVjYXVzZSBvZmZzZXR0aW5nIGJ5IHRoZSB3aWR0aCBvZiBhbiBlbnRpcmUgcm93IGlzbid0IHBvc3NpYmxlXG4gICAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggKCRjb2x1bW5zIC0gMSkge1xuICAgICAgICAgIEBpZiBub3QgKCRpbmZpeCA9PSBcIlwiIGFuZCAkaSA9PSAwKSB7IC8vIEF2b2lkIGVtaXR0aW5nIHVzZWxlc3MgLm9mZnNldC0wXG4gICAgICAgICAgICAub2Zmc2V0I3skaW5maXh9LSN7JGl9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbWFrZS1jb2wtb2Zmc2V0KCRpLCAkY29sdW1ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEd1dHRlcnNcbiAgICAgIC8vXG4gICAgICAvLyBNYWtlIHVzZSBvZiBgLmctKmAsIGAuZ3gtKmAgb3IgYC5neS0qYCB1dGlsaXRpZXMgdG8gY2hhbmdlIHNwYWNpbmcgYmV0d2VlbiB0aGUgY29sdW1ucy5cbiAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkZ3V0dGVycyB7XG4gICAgICAgIC5nI3skaW5maXh9LSN7JGtleX0sXG4gICAgICAgIC5neCN7JGluZml4fS0jeyRrZXl9IHtcbiAgICAgICAgICAtLSN7JHByZWZpeH1ndXR0ZXIteDogI3skdmFsdWV9O1xuICAgICAgICB9XG5cbiAgICAgICAgLmcjeyRpbmZpeH0tI3ska2V5fSxcbiAgICAgICAgLmd5I3skaW5maXh9LSN7JGtleX0ge1xuICAgICAgICAgIC0tI3skcHJlZml4fWd1dHRlci15OiAjeyR2YWx1ZX07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1ha2UtY3NzZ3JpZCgkY29sdW1uczogJGdyaWQtY29sdW1ucywgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkYnJlYWtwb2ludHMpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBpZiAkY29sdW1ucyA+IDAge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb2x1bW5zIHtcbiAgICAgICAgICAuZy1jb2wjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW46IGF1dG8gLyBzcGFuICRpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0YXJ0IHdpdGggYDFgIGJlY2F1c2UgYDBgIGlzIGFuZCBpbnZhbGlkIHZhbHVlLlxuICAgICAgICAvLyBFbmRzIHdpdGggYCRjb2x1bW5zIC0gMWAgYmVjYXVzZSBvZmZzZXR0aW5nIGJ5IHRoZSB3aWR0aCBvZiBhbiBlbnRpcmUgcm93IGlzbid0IHBvc3NpYmxlLlxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkY29sdW1ucyAtIDEpIHtcbiAgICAgICAgICAuZy1zdGFydCN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbi1zdGFydDogJGk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQmFzaWMgQm9vdHN0cmFwIHRhYmxlXG4vL1xuXG4udGFibGUge1xuICAtLSN7JHByZWZpeH10YWJsZS1jb2xvcjogI3skdGFibGUtY29sb3J9O1xuICAtLSN7JHByZWZpeH10YWJsZS1iZzogI3skdGFibGUtYmd9O1xuICAtLSN7JHByZWZpeH10YWJsZS1ib3JkZXItY29sb3I6ICN7JHRhYmxlLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fXRhYmxlLWFjY2VudC1iZzogI3skdGFibGUtYWNjZW50LWJnfTtcbiAgLS0jeyRwcmVmaXh9dGFibGUtc3RyaXBlZC1jb2xvcjogI3skdGFibGUtc3RyaXBlZC1jb2xvcn07XG4gIC0tI3skcHJlZml4fXRhYmxlLXN0cmlwZWQtYmc6ICN7JHRhYmxlLXN0cmlwZWQtYmd9O1xuICAtLSN7JHByZWZpeH10YWJsZS1hY3RpdmUtY29sb3I6ICN7JHRhYmxlLWFjdGl2ZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fXRhYmxlLWFjdGl2ZS1iZzogI3skdGFibGUtYWN0aXZlLWJnfTtcbiAgLS0jeyRwcmVmaXh9dGFibGUtaG92ZXItY29sb3I6ICN7JHRhYmxlLWhvdmVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dGFibGUtaG92ZXItYmc6ICN7JHRhYmxlLWhvdmVyLWJnfTtcblxuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlcjtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH10YWJsZS1jb2xvcik7XG4gIHZlcnRpY2FsLWFsaWduOiAkdGFibGUtY2VsbC12ZXJ0aWNhbC1hbGlnbjtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtYm9yZGVyLWNvbG9yKTtcblxuICAvLyBUYXJnZXQgdGggJiB0ZFxuICAvLyBXZSBuZWVkIHRoZSBjaGlsZCBjb21iaW5hdG9yIHRvIHByZXZlbnQgc3R5bGVzIGxlYWtpbmcgdG8gbmVzdGVkIHRhYmxlcyB3aGljaCBkb2Vzbid0IGhhdmUgYSBgLnRhYmxlYCBjbGFzcy5cbiAgLy8gV2UgdXNlIHRoZSB1bml2ZXJzYWwgc2VsZWN0b3JzIGhlcmUgdG8gc2ltcGxpZnkgdGhlIHNlbGVjdG9yIChlbHNlIHdlIHdvdWxkIG5lZWQgNiBkaWZmZXJlbnQgc2VsZWN0b3JzKS5cbiAgLy8gQW5vdGhlciBhZHZhbnRhZ2UgaXMgdGhhdCB0aGlzIGdlbmVyYXRlcyBsZXNzIGNvZGUgYW5kIG1ha2VzIHRoZSBzZWxlY3RvciBsZXNzIHNwZWNpZmljIG1ha2luZyBpdCBlYXNpZXIgdG8gb3ZlcnJpZGUuXG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1tYXgtdW5pdmVyc2FsXG4gID4gOm5vdChjYXB0aW9uKSA+ICogPiAqIHtcbiAgICBwYWRkaW5nOiAkdGFibGUtY2VsbC1wYWRkaW5nLXkgJHRhYmxlLWNlbGwtcGFkZGluZy14O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH10YWJsZS1iZyk7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHRhYmxlLWJvcmRlci13aWR0aDtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCA5OTk5cHggdmFyKC0tI3skcHJlZml4fXRhYmxlLWFjY2VudC1iZyk7XG4gIH1cblxuICA+IHRib2R5IHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcbiAgfVxuXG4gID4gdGhlYWQge1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gIH1cbn1cblxuLnRhYmxlLWdyb3VwLWRpdmlkZXIge1xuICBib3JkZXItdG9wOiAoJHRhYmxlLWJvcmRlci13aWR0aCAqIDIpIHNvbGlkICR0YWJsZS1ncm91cC1zZXBhcmF0b3ItY29sb3I7XG59XG5cbi8vXG4vLyBDaGFuZ2UgcGxhY2VtZW50IG9mIGNhcHRpb25zIHdpdGggYSBjbGFzc1xuLy9cblxuLmNhcHRpb24tdG9wIHtcbiAgY2FwdGlvbi1zaWRlOiB0b3A7XG59XG5cblxuLy9cbi8vIENvbmRlbnNlZCB0YWJsZSB3LyBoYWxmIHBhZGRpbmdcbi8vXG5cbi50YWJsZS1zbSB7XG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1tYXgtdW5pdmVyc2FsXG4gID4gOm5vdChjYXB0aW9uKSA+ICogPiAqIHtcbiAgICBwYWRkaW5nOiAkdGFibGUtY2VsbC1wYWRkaW5nLXktc20gJHRhYmxlLWNlbGwtcGFkZGluZy14LXNtO1xuICB9XG59XG5cblxuLy8gQm9yZGVyIHZlcnNpb25zXG4vL1xuLy8gQWRkIG9yIHJlbW92ZSBib3JkZXJzIGFsbCBhcm91bmQgdGhlIHRhYmxlIGFuZCBiZXR3ZWVuIGFsbCB0aGUgY29sdW1ucy5cbi8vXG4vLyBXaGVuIGJvcmRlcnMgYXJlIGFkZGVkIG9uIGFsbCBzaWRlcyBvZiB0aGUgY2VsbHMsIHRoZSBjb3JuZXJzIGNhbiByZW5kZXIgb2RkIHdoZW5cbi8vIHRoZXNlIGJvcmRlcnMgZG8gbm90IGhhdmUgdGhlIHNhbWUgY29sb3Igb3IgaWYgdGhleSBhcmUgc2VtaS10cmFuc3BhcmVudC5cbi8vIFRoZXJlZm9yIHdlIGFkZCB0b3AgYW5kIGJvcmRlciBib3R0b21zIHRvIHRoZSBgdHJgcyBhbmQgbGVmdCBhbmQgcmlnaHQgYm9yZGVyc1xuLy8gdG8gdGhlIGB0ZGBzIG9yIGB0aGBzXG5cbi50YWJsZS1ib3JkZXJlZCB7XG4gID4gOm5vdChjYXB0aW9uKSA+ICoge1xuICAgIGJvcmRlci13aWR0aDogJHRhYmxlLWJvcmRlci13aWR0aCAwO1xuXG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW1heC11bml2ZXJzYWxcbiAgICA+ICoge1xuICAgICAgYm9yZGVyLXdpZHRoOiAwICR0YWJsZS1ib3JkZXItd2lkdGg7XG4gICAgfVxuICB9XG59XG5cbi50YWJsZS1ib3JkZXJsZXNzIHtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW1heC11bml2ZXJzYWxcbiAgPiA6bm90KGNhcHRpb24pID4gKiA+ICoge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gIH1cblxuICA+IDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgfVxufVxuXG4vLyBaZWJyYS1zdHJpcGluZ1xuLy9cbi8vIERlZmF1bHQgemVicmEtc3RyaXBlIHN0eWxlcyAoYWx0ZXJuYXRpbmcgZ3JheSBhbmQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMpXG5cbi8vIEZvciByb3dzXG4udGFibGUtc3RyaXBlZCB7XG4gID4gdGJvZHkgPiB0cjpudGgtb2YtdHlwZSgjeyR0YWJsZS1zdHJpcGVkLW9yZGVyfSkgPiAqIHtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1hY2NlbnQtYmc6IHZhcigtLSN7JHByZWZpeH10YWJsZS1zdHJpcGVkLWJnKTtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXRhYmxlLXN0cmlwZWQtY29sb3IpO1xuICB9XG59XG5cbi8vIEZvciBjb2x1bW5zXG4udGFibGUtc3RyaXBlZC1jb2x1bW5zIHtcbiAgPiA6bm90KGNhcHRpb24pID4gdHIgPiA6bnRoLWNoaWxkKCN7JHRhYmxlLXN0cmlwZWQtY29sdW1ucy1vcmRlcn0pIHtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1hY2NlbnQtYmc6IHZhcigtLSN7JHByZWZpeH10YWJsZS1zdHJpcGVkLWJnKTtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXRhYmxlLXN0cmlwZWQtY29sb3IpO1xuICB9XG59XG5cbi8vIEFjdGl2ZSB0YWJsZVxuLy9cbi8vIFRoZSBgLnRhYmxlLWFjdGl2ZWAgY2xhc3MgY2FuIGJlIGFkZGVkIHRvIGhpZ2hsaWdodCByb3dzIG9yIGNlbGxzXG5cbi50YWJsZS1hY3RpdmUge1xuICAtLSN7JHByZWZpeH10YWJsZS1hY2NlbnQtYmc6IHZhcigtLSN7JHByZWZpeH10YWJsZS1hY3RpdmUtYmcpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXRhYmxlLWFjdGl2ZS1jb2xvcik7XG59XG5cbi8vIEhvdmVyIGVmZmVjdFxuLy9cbi8vIFBsYWNlZCBoZXJlIHNpbmNlIGl0IGhhcyB0byBjb21lIGFmdGVyIHRoZSBwb3RlbnRpYWwgemVicmEgc3RyaXBpbmdcblxuLnRhYmxlLWhvdmVyIHtcbiAgPiB0Ym9keSA+IHRyOmhvdmVyID4gKiB7XG4gICAgLS0jeyRwcmVmaXh9dGFibGUtYWNjZW50LWJnOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtaG92ZXItYmcpO1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtaG92ZXItY29sb3IpO1xuICB9XG59XG5cblxuLy8gVGFibGUgdmFyaWFudHNcbi8vXG4vLyBUYWJsZSB2YXJpYW50cyBzZXQgdGhlIHRhYmxlIGNlbGwgYmFja2dyb3VuZHMsIGJvcmRlciBjb2xvcnNcbi8vIGFuZCB0aGUgY29sb3JzIG9mIHRoZSBzdHJpcGVkLCBob3ZlcmVkICYgYWN0aXZlIHRhYmxlc1xuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGFibGUtdmFyaWFudHMge1xuICBAaW5jbHVkZSB0YWJsZS12YXJpYW50KCRjb2xvciwgJHZhbHVlKTtcbn1cblxuLy8gUmVzcG9uc2l2ZSB0YWJsZXNcbi8vXG4vLyBHZW5lcmF0ZSBzZXJpZXMgb2YgYC50YWJsZS1yZXNwb25zaXZlLSpgIGNsYXNzZXMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBzY3JlZW5cbi8vIHNpemUgb2Ygd2hlcmUgeW91ciB0YWJsZSB3aWxsIG92ZXJmbG93LlxuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJGJyZWFrcG9pbnQpIHtcbiAgICAudGFibGUtcmVzcG9uc2l2ZSN7JGluZml4fSB7XG4gICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc2Nzcy1kb2NzLXN0YXJ0IHRhYmxlLXZhcmlhbnRcbkBtaXhpbiB0YWJsZS12YXJpYW50KCRzdGF0ZSwgJGJhY2tncm91bmQpIHtcbiAgLnRhYmxlLSN7JHN0YXRlfSB7XG4gICAgJGNvbG9yOiBjb2xvci1jb250cmFzdChvcGFxdWUoJGJvZHktYmcsICRiYWNrZ3JvdW5kKSk7XG4gICAgJGhvdmVyLWJnOiBtaXgoJGNvbG9yLCAkYmFja2dyb3VuZCwgcGVyY2VudGFnZSgkdGFibGUtaG92ZXItYmctZmFjdG9yKSk7XG4gICAgJHN0cmlwZWQtYmc6IG1peCgkY29sb3IsICRiYWNrZ3JvdW5kLCBwZXJjZW50YWdlKCR0YWJsZS1zdHJpcGVkLWJnLWZhY3RvcikpO1xuICAgICRhY3RpdmUtYmc6IG1peCgkY29sb3IsICRiYWNrZ3JvdW5kLCBwZXJjZW50YWdlKCR0YWJsZS1hY3RpdmUtYmctZmFjdG9yKSk7XG4gICAgJHRhYmxlLWJvcmRlci1jb2xvcjogbWl4KCRjb2xvciwgJGJhY2tncm91bmQsIHBlcmNlbnRhZ2UoJHRhYmxlLWJvcmRlci1mYWN0b3IpKTtcblxuICAgIC0tI3skcHJlZml4fXRhYmxlLWNvbG9yOiAjeyRjb2xvcn07XG4gICAgLS0jeyRwcmVmaXh9dGFibGUtYmc6ICN7JGJhY2tncm91bmR9O1xuICAgIC0tI3skcHJlZml4fXRhYmxlLWJvcmRlci1jb2xvcjogI3skdGFibGUtYm9yZGVyLWNvbG9yfTtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1zdHJpcGVkLWJnOiAjeyRzdHJpcGVkLWJnfTtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1zdHJpcGVkLWNvbG9yOiAje2NvbG9yLWNvbnRyYXN0KCRzdHJpcGVkLWJnKX07XG4gICAgLS0jeyRwcmVmaXh9dGFibGUtYWN0aXZlLWJnOiAjeyRhY3RpdmUtYmd9O1xuICAgIC0tI3skcHJlZml4fXRhYmxlLWFjdGl2ZS1jb2xvcjogI3tjb2xvci1jb250cmFzdCgkYWN0aXZlLWJnKX07XG4gICAgLS0jeyRwcmVmaXh9dGFibGUtaG92ZXItYmc6ICN7JGhvdmVyLWJnfTtcbiAgICAtLSN7JHByZWZpeH10YWJsZS1ob3Zlci1jb2xvcjogI3tjb2xvci1jb250cmFzdCgkaG92ZXItYmcpfTtcblxuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dGFibGUtY29sb3IpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fXRhYmxlLWJvcmRlci1jb2xvcik7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgdGFibGUtdmFyaWFudFxuIiwiLy9cbi8vIExhYmVsc1xuLy9cblxuLmZvcm0tbGFiZWwge1xuICBtYXJnaW4tYm90dG9tOiAkZm9ybS1sYWJlbC1tYXJnaW4tYm90dG9tO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tbGFiZWwtZm9udC1zaXplKTtcbiAgZm9udC1zdHlsZTogJGZvcm0tbGFiZWwtZm9udC1zdHlsZTtcbiAgZm9udC13ZWlnaHQ6ICRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGZvcm0tbGFiZWwtY29sb3I7XG59XG5cbi8vIEZvciB1c2Ugd2l0aCBob3Jpem9udGFsIGFuZCBpbmxpbmUgZm9ybXMsIHdoZW4geW91IG5lZWQgdGhlIGxhYmVsIChvciBsZWdlbmQpXG4vLyB0ZXh0IHRvIGFsaWduIHdpdGggdGhlIGZvcm0gY29udHJvbHMuXG4uY29sLWZvcm0tbGFiZWwge1xuICBwYWRkaW5nLXRvcDogYWRkKCRpbnB1dC1wYWRkaW5nLXksICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBwYWRkaW5nLWJvdHRvbTogYWRkKCRpbnB1dC1wYWRkaW5nLXksICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBPdmVycmlkZSB0aGUgYDxsZWdlbmQ+YCBkZWZhdWx0XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShpbmhlcml0KTsgLy8gT3ZlcnJpZGUgdGhlIGA8bGVnZW5kPmAgZGVmYXVsdFxuICBmb250LXN0eWxlOiAkZm9ybS1sYWJlbC1mb250LXN0eWxlO1xuICBmb250LXdlaWdodDogJGZvcm0tbGFiZWwtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvcjtcbn1cblxuLmNvbC1mb3JtLWxhYmVsLWxnIHtcbiAgcGFkZGluZy10b3A6IGFkZCgkaW5wdXQtcGFkZGluZy15LWxnLCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgcGFkZGluZy1ib3R0b206IGFkZCgkaW5wdXQtcGFkZGluZy15LWxnLCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtbGcpO1xufVxuXG4uY29sLWZvcm0tbGFiZWwtc20ge1xuICBwYWRkaW5nLXRvcDogYWRkKCRpbnB1dC1wYWRkaW5nLXktc20sICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBwYWRkaW5nLWJvdHRvbTogYWRkKCRpbnB1dC1wYWRkaW5nLXktc20sICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZS1zbSk7XG59XG4iLCIvL1xuLy8gRm9ybSB0ZXh0XG4vL1xuXG4uZm9ybS10ZXh0IHtcbiAgbWFyZ2luLXRvcDogJGZvcm0tdGV4dC1tYXJnaW4tdG9wO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tdGV4dC1mb250LXNpemUpO1xuICBmb250LXN0eWxlOiAkZm9ybS10ZXh0LWZvbnQtc3R5bGU7XG4gIGZvbnQtd2VpZ2h0OiAkZm9ybS10ZXh0LWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGZvcm0tdGV4dC1jb2xvcjtcbn1cbiIsIi8vXG4vLyBHZW5lcmFsIGZvcm0gY29udHJvbHMgKHBsdXMgYSBmZXcgc3BlY2lmaWMgaGlnaC1sZXZlbCBpbnRlcnZlbnRpb25zKVxuLy9cblxuLmZvcm0tY29udHJvbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmcteSAkaW5wdXQtcGFkZGluZy14O1xuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iZztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoIHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIGFwcGVhcmFuY2U6IG5vbmU7IC8vIEZpeCBhcHBlYXJhbmNlIGZvciBkYXRlIGlucHV0cyBpbiBTYWZhcmlcblxuICAvLyBOb3RlOiBUaGlzIGhhcyBubyBlZmZlY3Qgb24gPHNlbGVjdD5zIGluIHNvbWUgYnJvd3NlcnMsIGR1ZSB0byB0aGUgbGltaXRlZCBzdHlsYWJpbGl0eSBvZiBgPHNlbGVjdD5gcyBpbiBDU1MuXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMsIDApO1xuXG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGlucHV0LWJveC1zaGFkb3cpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRpbnB1dC10cmFuc2l0aW9uKTtcblxuICAmW3R5cGU9XCJmaWxlXCJdIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyAvLyBwcmV2ZW50IHBzZXVkbyBlbGVtZW50IGJ1dHRvbiBvdmVybGFwXG5cbiAgICAmOm5vdCg6ZGlzYWJsZWQpOm5vdChbcmVhZG9ubHldKSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5cbiAgLy8gQ3VzdG9taXplIHRoZSBgOmZvY3VzYCBzdGF0ZSB0byBpbWl0YXRlIG5hdGl2ZSBXZWJLaXQgc3R5bGVzLlxuICAmOmZvY3VzIHtcbiAgICBjb2xvcjogJGlucHV0LWZvY3VzLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1mb2N1cy1iZztcbiAgICBib3JkZXItY29sb3I6ICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3I7XG4gICAgb3V0bGluZTogMDtcbiAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGlucHV0LWJveC1zaGFkb3csICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC8vIEF2b2lkIHVzaW5nIG1peGluIHNvIHdlIGNhbiBwYXNzIGN1c3RvbSBmb2N1cyBzaGFkb3cgcHJvcGVybHlcbiAgICAgIGJveC1zaGFkb3c6ICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93O1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBzb21lIGhlaWdodCB0byBkYXRlIGlucHV0cyBvbiBpT1NcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yMzMwN1xuICAvLyBUT0RPOiB3ZSBjYW4gcmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg5NTkgaXMgcmVzb2x2ZWRcbiAgJjo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIHtcbiAgICAvLyBNdWx0aXBseSBsaW5lLWhlaWdodCBieSAxZW0gaWYgaXQgaGFzIG5vIHVuaXRcbiAgICBoZWlnaHQ6IGlmKHVuaXQoJGlucHV0LWxpbmUtaGVpZ2h0KSA9PSBcIlwiLCAkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sICRpbnB1dC1saW5lLWhlaWdodCk7XG4gIH1cblxuICAvLyBQbGFjZWhvbGRlclxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjtcbiAgICAvLyBPdmVycmlkZSBGaXJlZm94J3MgdW51c3VhbCBkZWZhdWx0IG9wYWNpdHk7IHNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMTUyNi5cbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLy8gRGlzYWJsZWQgaW5wdXRzXG4gIC8vXG4gIC8vIEhUTUw1IHNheXMgdGhhdCBjb250cm9scyB1bmRlciBhIGZpZWxkc2V0ID4gbGVnZW5kOmZpcnN0LWNoaWxkIHdvbid0IGJlXG4gIC8vIGRpc2FibGVkIGlmIHRoZSBmaWVsZHNldCBpcyBkaXNhYmxlZC4gRHVlIHRvIGltcGxlbWVudGF0aW9uIGRpZmZpY3VsdHksIHdlXG4gIC8vIGRvbid0IGhvbm9yIHRoYXQgZWRnZSBjYXNlOyB3ZSBzdHlsZSB0aGVtIGFzIGRpc2FibGVkIGFueXdheS5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkaW5wdXQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yO1xuICAgIC8vIGlPUyBmaXggZm9yIHVucmVhZGFibGUgZGlzYWJsZWQgY29udGVudDsgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTE2NTUuXG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC8vIEZpbGUgaW5wdXQgYnV0dG9ucyB0aGVtaW5nXG4gICY6OmZpbGUtc2VsZWN0b3ItYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15ICRpbnB1dC1wYWRkaW5nLXg7XG4gICAgbWFyZ2luOiAoLSRpbnB1dC1wYWRkaW5nLXkpICgtJGlucHV0LXBhZGRpbmcteCk7XG4gICAgbWFyZ2luLWlubGluZS1lbmQ6ICRpbnB1dC1wYWRkaW5nLXg7XG4gICAgY29sb3I6ICRmb3JtLWZpbGUtYnV0dG9uLWNvbG9yO1xuICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRmb3JtLWZpbGUtYnV0dG9uLWJnKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6IDA7XG4gICAgYm9yZGVyLWlubGluZS1lbmQtd2lkdGg6ICRpbnB1dC1ib3JkZXItd2lkdGg7XG4gICAgYm9yZGVyLXJhZGl1czogMDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBwcm9wZXJ0eS1kaXNhbGxvd2VkLWxpc3RcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRidG4tdHJhbnNpdGlvbik7XG4gIH1cblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdChbcmVhZG9ubHldKTo6ZmlsZS1zZWxlY3Rvci1idXR0b24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JtLWZpbGUtYnV0dG9uLWhvdmVyLWJnO1xuICB9XG59XG5cbi8vIFJlYWRvbmx5IGNvbnRyb2xzIGFzIHBsYWluIHRleHRcbi8vXG4vLyBBcHBseSBjbGFzcyB0byBhIHJlYWRvbmx5IGlucHV0IHRvIG1ha2UgaXQgYXBwZWFyIGxpa2UgcmVndWxhciBwbGFpblxuLy8gdGV4dCAod2l0aG91dCBhbnkgYm9yZGVyLCBiYWNrZ3JvdW5kIGNvbG9yLCBmb2N1cyBpbmRpY2F0b3IpXG5cbi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIG1hdGNoIGlucHV0cyBpZiB0aGlzIGNsYXNzIGNvbWVzIG9uIGlucHV0cyB3aXRoIGRlZmF1bHQgbWFyZ2luc1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LXBsYWludGV4dC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci13aWR0aDogJGlucHV0LWJvcmRlci13aWR0aCAwO1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cblxuICAmLmZvcm0tY29udHJvbC1zbSxcbiAgJi5mb3JtLWNvbnRyb2wtbGcge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG59XG5cbi8vIEZvcm0gY29udHJvbCBzaXppbmdcbi8vXG4vLyBCdWlsZCBvbiBgLmZvcm0tY29udHJvbGAgd2l0aCBtb2RpZmllciBjbGFzc2VzIHRvIGRlY3JlYXNlIG9yIGluY3JlYXNlIHRoZVxuLy8gaGVpZ2h0IGFuZCBmb250LXNpemUgb2YgZm9ybSBjb250cm9scy5cbi8vXG4vLyBSZXBlYXRlZCBpbiBgX2lucHV0X2dyb3VwLnNjc3NgIHRvIGF2b2lkIFNhc3MgZXh0ZW5kIGlzc3Vlcy5cblxuLmZvcm0tY29udHJvbC1zbSB7XG4gIG1pbi1oZWlnaHQ6ICRpbnB1dC1oZWlnaHQtc207XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktc20gJGlucHV0LXBhZGRpbmcteC1zbTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtc20pO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLXNtKTtcblxuICAmOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XG4gICAgcGFkZGluZzogJGlucHV0LXBhZGRpbmcteS1zbSAkaW5wdXQtcGFkZGluZy14LXNtO1xuICAgIG1hcmdpbjogKC0kaW5wdXQtcGFkZGluZy15LXNtKSAoLSRpbnB1dC1wYWRkaW5nLXgtc20pO1xuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAkaW5wdXQtcGFkZGluZy14LXNtO1xuICB9XG59XG5cbi5mb3JtLWNvbnRyb2wtbGcge1xuICBtaW4taGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LWxnO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LWxnICRpbnB1dC1wYWRkaW5nLXgtbGc7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplLWxnKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1sZyk7XG5cbiAgJjo6ZmlsZS1zZWxlY3Rvci1idXR0b24ge1xuICAgIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktbGcgJGlucHV0LXBhZGRpbmcteC1sZztcbiAgICBtYXJnaW46ICgtJGlucHV0LXBhZGRpbmcteS1sZykgKC0kaW5wdXQtcGFkZGluZy14LWxnKTtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogJGlucHV0LXBhZGRpbmcteC1sZztcbiAgfVxufVxuXG4vLyBNYWtlIHN1cmUgdGV4dGFyZWFzIGRvbid0IHNocmluayB0b28gbXVjaCB3aGVuIHJlc2l6ZWRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzI5MTI0XG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcbnRleHRhcmVhIHtcbiAgJi5mb3JtLWNvbnRyb2wge1xuICAgIG1pbi1oZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIH1cblxuICAmLmZvcm0tY29udHJvbC1zbSB7XG4gICAgbWluLWhlaWdodDogJGlucHV0LWhlaWdodC1zbTtcbiAgfVxuXG4gICYuZm9ybS1jb250cm9sLWxnIHtcbiAgICBtaW4taGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LWxnO1xuICB9XG59XG4vLyBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4uZm9ybS1jb250cm9sLWNvbG9yIHtcbiAgd2lkdGg6ICRmb3JtLWNvbG9yLXdpZHRoO1xuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXk7XG5cbiAgJjpub3QoOmRpc2FibGVkKTpub3QoW3JlYWRvbmx5XSkge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6Oi1tb3otY29sb3Itc3dhdGNoIHtcbiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICY6Oi13ZWJraXQtY29sb3Itc3dhdGNoIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICYuZm9ybS1jb250cm9sLXNtIHsgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LXNtOyB9XG4gICYuZm9ybS1jb250cm9sLWxnIHsgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LWxnOyB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBwcm9wZXJ0eS1kaXNhbGxvd2VkLWxpc3RcbkBtaXhpbiB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID09IDAge1xuICAgICR0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbi1iYXNlO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAxIHtcbiAgICBAZWFjaCAkdmFsdWUgaW4gJHRyYW5zaXRpb24ge1xuICAgICAgQGlmICR2YWx1ZSA9PSBudWxsIG9yICR2YWx1ZSA9PSBub25lIHtcbiAgICAgICAgQHdhcm4gXCJUaGUga2V5d29yZCAnbm9uZScgb3IgJ251bGwnIG11c3QgYmUgdXNlZCBhcyBhIHNpbmdsZSBhcmd1bWVudC5cIjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVuYWJsZS10cmFuc2l0aW9ucyB7XG4gICAgQGlmIG50aCgkdHJhbnNpdGlvbiwgMSkgIT0gbnVsbCB7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICBAaWYgJGVuYWJsZS1yZWR1Y2VkLW1vdGlvbiBhbmQgbnRoKCR0cmFuc2l0aW9uLCAxKSAhPSBudWxsIGFuZCBudGgoJHRyYW5zaXRpb24sIDEpICE9IG5vbmUge1xuICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEdyYWRpZW50c1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZ3JhZGllbnQtYmctbWl4aW5cbkBtaXhpbiBncmFkaWVudC1iZygkY29sb3I6IG51bGwpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuXG4gIEBpZiAkZW5hYmxlLWdyYWRpZW50cyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0tI3skcHJlZml4fWdyYWRpZW50KTtcbiAgfVxufVxuLy8gc2Nzcy1kb2NzLWVuZCBncmFkaWVudC1iZy1taXhpblxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZ3JhZGllbnQtbWl4aW5zXG4vLyBIb3Jpem9udGFsIGdyYWRpZW50LCBmcm9tIGxlZnQgdG8gcmlnaHRcbi8vXG4vLyBDcmVhdGVzIHR3byBjb2xvciBzdG9wcywgc3RhcnQgYW5kIGVuZCwgYnkgc3BlY2lmeWluZyBhIGNvbG9yIGFuZCBwb3NpdGlvbiBmb3IgZWFjaCBjb2xvciBzdG9wLlxuQG1peGluIGdyYWRpZW50LXgoJHN0YXJ0LWNvbG9yOiAkZ3JheS03MDAsICRlbmQtY29sb3I6ICRncmF5LTgwMCwgJHN0YXJ0LXBlcmNlbnQ6IDAlLCAkZW5kLXBlcmNlbnQ6IDEwMCUpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkc3RhcnQtY29sb3IgJHN0YXJ0LXBlcmNlbnQsICRlbmQtY29sb3IgJGVuZC1wZXJjZW50KTtcbn1cblxuLy8gVmVydGljYWwgZ3JhZGllbnQsIGZyb20gdG9wIHRvIGJvdHRvbVxuLy9cbi8vIENyZWF0ZXMgdHdvIGNvbG9yIHN0b3BzLCBzdGFydCBhbmQgZW5kLCBieSBzcGVjaWZ5aW5nIGEgY29sb3IgYW5kIHBvc2l0aW9uIGZvciBlYWNoIGNvbG9yIHN0b3AuXG5AbWl4aW4gZ3JhZGllbnQteSgkc3RhcnQtY29sb3I6ICRncmF5LTcwMCwgJGVuZC1jb2xvcjogJGdyYXktODAwLCAkc3RhcnQtcGVyY2VudDogbnVsbCwgJGVuZC1wZXJjZW50OiBudWxsKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICRzdGFydC1jb2xvciAkc3RhcnQtcGVyY2VudCwgJGVuZC1jb2xvciAkZW5kLXBlcmNlbnQpO1xufVxuXG5AbWl4aW4gZ3JhZGllbnQtZGlyZWN0aW9uYWwoJHN0YXJ0LWNvbG9yOiAkZ3JheS03MDAsICRlbmQtY29sb3I6ICRncmF5LTgwMCwgJGRlZzogNDVkZWcpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRkZWcsICRzdGFydC1jb2xvciwgJGVuZC1jb2xvcik7XG59XG5cbkBtaXhpbiBncmFkaWVudC14LXRocmVlLWNvbG9ycygkc3RhcnQtY29sb3I6ICRibHVlLCAkbWlkLWNvbG9yOiAkcHVycGxlLCAkY29sb3Itc3RvcDogNTAlLCAkZW5kLWNvbG9yOiAkcmVkKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHN0YXJ0LWNvbG9yLCAkbWlkLWNvbG9yICRjb2xvci1zdG9wLCAkZW5kLWNvbG9yKTtcbn1cblxuQG1peGluIGdyYWRpZW50LXktdGhyZWUtY29sb3JzKCRzdGFydC1jb2xvcjogJGJsdWUsICRtaWQtY29sb3I6ICRwdXJwbGUsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICRyZWQpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJG1pZC1jb2xvciAkY29sb3Itc3RvcCwgJGVuZC1jb2xvcik7XG59XG5cbkBtaXhpbiBncmFkaWVudC1yYWRpYWwoJGlubmVyLWNvbG9yOiAkZ3JheS03MDAsICRvdXRlci1jb2xvcjogJGdyYXktODAwKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICRpbm5lci1jb2xvciwgJG91dGVyLWNvbG9yKTtcbn1cblxuQG1peGluIGdyYWRpZW50LXN0cmlwZWQoJGNvbG9yOiByZ2JhKCR3aGl0ZSwgLjE1KSwgJGFuZ2xlOiA0NWRlZykge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJGFuZ2xlLCAkY29sb3IgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgJGNvbG9yIDUwJSwgJGNvbG9yIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7XG59XG4vLyBzY3NzLWRvY3MtZW5kIGdyYWRpZW50LW1peGluc1xuIiwiLy8gU2VsZWN0XG4vL1xuLy8gUmVwbGFjZXMgdGhlIGJyb3dzZXIgZGVmYXVsdCBzZWxlY3Qgd2l0aCBhIGN1c3RvbSBvbmUsIG1vc3RseSBwdWxsZWQgZnJvbVxuLy8gaHR0cHM6Ly9wcmltZXIuZ2l0aHViLmlvLy5cblxuLmZvcm0tc2VsZWN0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkZm9ybS1zZWxlY3QtcGFkZGluZy15ICRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZyAkZm9ybS1zZWxlY3QtcGFkZGluZy15ICRmb3JtLXNlbGVjdC1wYWRkaW5nLXg7XG4gIC1tb3otcGFkZGluZy1zdGFydDogc3VidHJhY3QoJGZvcm0tc2VsZWN0LXBhZGRpbmcteCwgM3B4KTsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMzI2MzZcbiAgZm9udC1mYW1pbHk6ICRmb3JtLXNlbGVjdC1mb250LWZhbWlseTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmb3JtLXNlbGVjdC1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGZvcm0tc2VsZWN0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGZvcm0tc2VsZWN0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGZvcm0tc2VsZWN0LWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9ybS1zZWxlY3QtYmc7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGZvcm0tc2VsZWN0LWluZGljYXRvcik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246ICRmb3JtLXNlbGVjdC1iZy1wb3NpdGlvbjtcbiAgYmFja2dyb3VuZC1zaXplOiAkZm9ybS1zZWxlY3QtYmctc2l6ZTtcbiAgYm9yZGVyOiAkZm9ybS1zZWxlY3QtYm9yZGVyLXdpZHRoIHNvbGlkICRmb3JtLXNlbGVjdC1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGZvcm0tc2VsZWN0LWJvcmRlci1yYWRpdXMsIDApO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRmb3JtLXNlbGVjdC1ib3gtc2hhZG93KTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkZm9ybS1zZWxlY3QtdHJhbnNpdGlvbik7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgJjpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkZm9ybS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yO1xuICAgIG91dGxpbmU6IDA7XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmb3JtLXNlbGVjdC1ib3gtc2hhZG93LCAkZm9ybS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgICBib3gtc2hhZG93OiAkZm9ybS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdztcbiAgICB9XG4gIH1cblxuICAmW211bHRpcGxlXSxcbiAgJltzaXplXTpub3QoW3NpemU9XCIxXCJdKSB7XG4gICAgcGFkZGluZy1yaWdodDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICRmb3JtLXNlbGVjdC1kaXNhYmxlZC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9ybS1zZWxlY3QtZGlzYWJsZWQtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkZm9ybS1zZWxlY3QtZGlzYWJsZWQtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgLy8gUmVtb3ZlIG91dGxpbmUgZnJvbSBzZWxlY3QgYm94IGluIEZGXG4gICY6LW1vei1mb2N1c3Jpbmcge1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDAgJGZvcm0tc2VsZWN0LWNvbG9yO1xuICB9XG59XG5cbi5mb3JtLXNlbGVjdC1zbSB7XG4gIHBhZGRpbmctdG9wOiAkZm9ybS1zZWxlY3QtcGFkZGluZy15LXNtO1xuICBwYWRkaW5nLWJvdHRvbTogJGZvcm0tc2VsZWN0LXBhZGRpbmcteS1zbTtcbiAgcGFkZGluZy1sZWZ0OiAkZm9ybS1zZWxlY3QtcGFkZGluZy14LXNtO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tc2VsZWN0LWZvbnQtc2l6ZS1zbSk7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGZvcm0tc2VsZWN0LWJvcmRlci1yYWRpdXMtc20pO1xufVxuXG4uZm9ybS1zZWxlY3QtbGcge1xuICBwYWRkaW5nLXRvcDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteS1sZztcbiAgcGFkZGluZy1ib3R0b206ICRmb3JtLXNlbGVjdC1wYWRkaW5nLXktbGc7XG4gIHBhZGRpbmctbGVmdDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteC1sZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmb3JtLXNlbGVjdC1mb250LXNpemUtbGcpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRmb3JtLXNlbGVjdC1ib3JkZXItcmFkaXVzLWxnKTtcbn1cbiIsIi8vXG4vLyBDaGVjay9yYWRpb1xuLy9cblxuLmZvcm0tY2hlY2sge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWluLWhlaWdodDogJGZvcm0tY2hlY2stbWluLWhlaWdodDtcbiAgcGFkZGluZy1sZWZ0OiAkZm9ybS1jaGVjay1wYWRkaW5nLXN0YXJ0O1xuICBtYXJnaW4tYm90dG9tOiAkZm9ybS1jaGVjay1tYXJnaW4tYm90dG9tO1xuXG4gIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tbGVmdDogJGZvcm0tY2hlY2stcGFkZGluZy1zdGFydCAqIC0xO1xuICB9XG59XG5cbi5mb3JtLWNoZWNrLXJldmVyc2Uge1xuICBwYWRkaW5nLXJpZ2h0OiAkZm9ybS1jaGVjay1wYWRkaW5nLXN0YXJ0O1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAkZm9ybS1jaGVjay1wYWRkaW5nLXN0YXJ0ICogLTE7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbn1cblxuLmZvcm0tY2hlY2staW5wdXQge1xuICB3aWR0aDogJGZvcm0tY2hlY2staW5wdXQtd2lkdGg7XG4gIGhlaWdodDogJGZvcm0tY2hlY2staW5wdXQtd2lkdGg7XG4gIG1hcmdpbi10b3A6ICgkbGluZS1oZWlnaHQtYmFzZSAtICRmb3JtLWNoZWNrLWlucHV0LXdpZHRoKSAqIC41OyAvLyBsaW5lLWhlaWdodCBtaW51cyBjaGVjayBoZWlnaHRcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGZvcm0tY2hlY2staW5wdXQtYmc7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICBib3JkZXI6ICRmb3JtLWNoZWNrLWlucHV0LWJvcmRlcjtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDsgLy8gS2VlcCB0aGVtZWQgYXBwZWFyYW5jZSBmb3IgcHJpbnRcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkZm9ybS1jaGVjay10cmFuc2l0aW9uKTtcblxuICAmW3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZm9ybS1jaGVjay1pbnB1dC1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICZbdHlwZT1cInJhZGlvXCJdIHtcbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktZGlzYWxsb3dlZC1saXN0XG4gICAgYm9yZGVyLXJhZGl1czogJGZvcm0tY2hlY2stcmFkaW8tYm9yZGVyLXJhZGl1cztcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICBmaWx0ZXI6ICRmb3JtLWNoZWNrLWlucHV0LWFjdGl2ZS1maWx0ZXI7XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRmb3JtLWNoZWNrLWlucHV0LWZvY3VzLWJvcmRlcjtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJveC1zaGFkb3c6ICRmb3JtLWNoZWNrLWlucHV0LWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cblxuICAmOmNoZWNrZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtYmctY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yOiAkZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJvcmRlci1jb2xvcjtcblxuICAgICZbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgIEBpZiAkZW5hYmxlLWdyYWRpZW50cyB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1iZy1pbWFnZSksIHZhcigtLSN7JHByZWZpeH1ncmFkaWVudCk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogZXNjYXBlLXN2ZygkZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJnLWltYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmW3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRmb3JtLWNoZWNrLXJhZGlvLWNoZWNrZWQtYmctaW1hZ2UpLCB2YXIoLS0jeyRwcmVmaXh9Z3JhZGllbnQpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGZvcm0tY2hlY2stcmFkaW8tY2hlY2tlZC1iZy1pbWFnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJlt0eXBlPVwiY2hlY2tib3hcIl06aW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1iZy1jb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRmb3JtLWNoZWNrLWlucHV0LWluZGV0ZXJtaW5hdGUtYm9yZGVyLWNvbG9yO1xuXG4gICAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1iZy1pbWFnZSksIHZhcigtLSN7JHByZWZpeH1ncmFkaWVudCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRmb3JtLWNoZWNrLWlucHV0LWluZGV0ZXJtaW5hdGUtYmctaW1hZ2UpO1xuICAgIH1cbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGZpbHRlcjogbm9uZTtcbiAgICBvcGFjaXR5OiAkZm9ybS1jaGVjay1pbnB1dC1kaXNhYmxlZC1vcGFjaXR5O1xuICB9XG5cbiAgLy8gVXNlIGRpc2FibGVkIGF0dHJpYnV0ZSBpbiBhZGRpdGlvbiBvZiA6ZGlzYWJsZWQgcHNldWRvLWNsYXNzXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yODI0N1xuICAmW2Rpc2FibGVkXSxcbiAgJjpkaXNhYmxlZCB7XG4gICAgfiAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICBvcGFjaXR5OiAkZm9ybS1jaGVjay1sYWJlbC1kaXNhYmxlZC1vcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG4uZm9ybS1jaGVjay1sYWJlbCB7XG4gIGNvbG9yOiAkZm9ybS1jaGVjay1sYWJlbC1jb2xvcjtcbiAgY3Vyc29yOiAkZm9ybS1jaGVjay1sYWJlbC1jdXJzb3I7XG59XG5cbi8vXG4vLyBTd2l0Y2hcbi8vXG5cbi5mb3JtLXN3aXRjaCB7XG4gIHBhZGRpbmctbGVmdDogJGZvcm0tc3dpdGNoLXBhZGRpbmctc3RhcnQ7XG5cbiAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgIHdpZHRoOiAkZm9ybS1zd2l0Y2gtd2lkdGg7XG4gICAgbWFyZ2luLWxlZnQ6ICRmb3JtLXN3aXRjaC1wYWRkaW5nLXN0YXJ0ICogLTE7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogZXNjYXBlLXN2ZygkZm9ybS1zd2l0Y2gtYmctaW1hZ2UpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgY2VudGVyO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGZvcm0tc3dpdGNoLWJvcmRlci1yYWRpdXMpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGZvcm0tc3dpdGNoLXRyYW5zaXRpb24pO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRmb3JtLXN3aXRjaC1mb2N1cy1iZy1pbWFnZSk7XG4gICAgfVxuXG4gICAgJjpjaGVja2VkIHtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246ICRmb3JtLXN3aXRjaC1jaGVja2VkLWJnLXBvc2l0aW9uO1xuXG4gICAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRmb3JtLXN3aXRjaC1jaGVja2VkLWJnLWltYWdlKSwgdmFyKC0tI3skcHJlZml4fWdyYWRpZW50KTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRmb3JtLXN3aXRjaC1jaGVja2VkLWJnLWltYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmZvcm0tY2hlY2stcmV2ZXJzZSB7XG4gICAgcGFkZGluZy1yaWdodDogJGZvcm0tc3dpdGNoLXBhZGRpbmctc3RhcnQ7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkZm9ybS1zd2l0Y2gtcGFkZGluZy1zdGFydCAqIC0xO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG5cbi5mb3JtLWNoZWNrLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiAkZm9ybS1jaGVjay1pbmxpbmUtbWFyZ2luLWVuZDtcbn1cblxuLmJ0bi1jaGVjayB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgJltkaXNhYmxlZF0sXG4gICY6ZGlzYWJsZWQge1xuICAgICsgLmJ0biB7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIGZpbHRlcjogbm9uZTtcbiAgICAgIG9wYWNpdHk6ICRmb3JtLWNoZWNrLWJ0bi1jaGVjay1kaXNhYmxlZC1vcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUmFuZ2Vcbi8vXG4vLyBTdHlsZSByYW5nZSBpbnB1dHMgdGhlIHNhbWUgYWNyb3NzIGJyb3dzZXJzLiBWZW5kb3Itc3BlY2lmaWMgcnVsZXMgZm9yIHBzZXVkb1xuLy8gZWxlbWVudHMgY2Fubm90IGJlIG1peGVkLiBBcyBzdWNoLCB0aGVyZSBhcmUgbm8gc2hhcmVkIHN0eWxlcyBmb3IgZm9jdXMgb3Jcbi8vIGFjdGl2ZSBzdGF0ZXMgb24gcHJlZml4ZWQgc2VsZWN0b3JzLlxuXG4uZm9ybS1yYW5nZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGFkZCgkZm9ybS1yYW5nZS10aHVtYi1oZWlnaHQsICRmb3JtLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3ctd2lkdGggKiAyKTtcbiAgcGFkZGluZzogMDsgLy8gTmVlZCB0byByZXNldCBwYWRkaW5nXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG5cbiAgICAvLyBQc2V1ZG8tZWxlbWVudHMgbXVzdCBiZSBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgcnVsZXNldHMgdG8gaGF2ZSBhbiBlZmZlY3QuXG4gICAgLy8gTm8gYm94LXNoYWRvdygpIG1peGluIGZvciBmb2N1cyBhY2Nlc3NpYmlsaXR5LlxuICAgICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsgYm94LXNoYWRvdzogJGZvcm0tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdzsgfVxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIgICAgIHsgYm94LXNoYWRvdzogJGZvcm0tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdzsgfVxuICB9XG5cbiAgJjo6LW1vei1mb2N1cy1vdXRlciB7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgIHdpZHRoOiAkZm9ybS1yYW5nZS10aHVtYi13aWR0aDtcbiAgICBoZWlnaHQ6ICRmb3JtLXJhbmdlLXRodW1iLWhlaWdodDtcbiAgICBtYXJnaW4tdG9wOiAoJGZvcm0tcmFuZ2UtdHJhY2staGVpZ2h0IC0gJGZvcm0tcmFuZ2UtdGh1bWItaGVpZ2h0KSAqIC41OyAvLyBXZWJraXQgc3BlY2lmaWNcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkZm9ybS1yYW5nZS10aHVtYi1iZyk7XG4gICAgYm9yZGVyOiAkZm9ybS1yYW5nZS10aHVtYi1ib3JkZXI7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZm9ybS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmb3JtLXJhbmdlLXRodW1iLWJveC1zaGFkb3cpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGZvcm0tcmFuZ2UtdGh1bWItdHJhbnNpdGlvbik7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRmb3JtLXJhbmdlLXRodW1iLWFjdGl2ZS1iZyk7XG4gICAgfVxuICB9XG5cbiAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgIHdpZHRoOiAkZm9ybS1yYW5nZS10cmFjay13aWR0aDtcbiAgICBoZWlnaHQ6ICRmb3JtLXJhbmdlLXRyYWNrLWhlaWdodDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7IC8vIFdoeT9cbiAgICBjdXJzb3I6ICRmb3JtLXJhbmdlLXRyYWNrLWN1cnNvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9ybS1yYW5nZS10cmFjay1iZztcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGZvcm0tcmFuZ2UtdHJhY2stYm9yZGVyLXJhZGl1cyk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkZm9ybS1yYW5nZS10cmFjay1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgIHdpZHRoOiAkZm9ybS1yYW5nZS10aHVtYi13aWR0aDtcbiAgICBoZWlnaHQ6ICRmb3JtLXJhbmdlLXRodW1iLWhlaWdodDtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkZm9ybS1yYW5nZS10aHVtYi1iZyk7XG4gICAgYm9yZGVyOiAkZm9ybS1yYW5nZS10aHVtYi1ib3JkZXI7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZm9ybS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmb3JtLXJhbmdlLXRodW1iLWJveC1zaGFkb3cpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGZvcm0tcmFuZ2UtdGh1bWItdHJhbnNpdGlvbik7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRmb3JtLXJhbmdlLXRodW1iLWFjdGl2ZS1iZyk7XG4gICAgfVxuICB9XG5cbiAgJjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgd2lkdGg6ICRmb3JtLXJhbmdlLXRyYWNrLXdpZHRoO1xuICAgIGhlaWdodDogJGZvcm0tcmFuZ2UtdHJhY2staGVpZ2h0O1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjdXJzb3I6ICRmb3JtLXJhbmdlLXRyYWNrLWN1cnNvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9ybS1yYW5nZS10cmFjay1iZztcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyAvLyBGaXJlZm94IHNwZWNpZmljP1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGZvcm0tcmFuZ2UtdHJhY2stYm9yZGVyLXJhZGl1cyk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkZm9ybS1yYW5nZS10cmFjay1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvcm0tcmFuZ2UtdGh1bWItZGlzYWJsZWQtYmc7XG4gICAgfVxuXG4gICAgJjo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9ybS1yYW5nZS10aHVtYi1kaXNhYmxlZC1iZztcbiAgICB9XG4gIH1cbn1cbiIsIi5mb3JtLWZsb2F0aW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gID4gLmZvcm0tY29udHJvbCxcbiAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCxcbiAgPiAuZm9ybS1zZWxlY3Qge1xuICAgIGhlaWdodDogJGZvcm0tZmxvYXRpbmctaGVpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9ybS1mbG9hdGluZy1saW5lLWhlaWdodDtcbiAgfVxuXG4gID4gbGFiZWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7IC8vIGFsbG93IHRleHRhcmVhc1xuICAgIHBhZGRpbmc6ICRmb3JtLWZsb2F0aW5nLXBhZGRpbmcteSAkZm9ybS1mbG9hdGluZy1wYWRkaW5nLXg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDsgLy8gUmVxdWlyZWQgZm9yIGFsaWduaW5nIGxhYmVsJ3MgdGV4dCB3aXRoIHRoZSBpbnB1dCBhcyBpdCBhZmZlY3RzIGlubmVyIGJveCBtb2RlbFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRmb3JtLWZsb2F0aW5nLXRyYW5zaXRpb24pO1xuICB9XG5cbiAgPiAuZm9ybS1jb250cm9sLFxuICA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHtcbiAgICBwYWRkaW5nOiAkZm9ybS1mbG9hdGluZy1wYWRkaW5nLXkgJGZvcm0tZmxvYXRpbmctcGFkZGluZy14O1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6Zm9jdXMsXG4gICAgJjpub3QoOnBsYWNlaG9sZGVyLXNob3duKSB7XG4gICAgICBwYWRkaW5nLXRvcDogJGZvcm0tZmxvYXRpbmctaW5wdXQtcGFkZGluZy10O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRmb3JtLWZsb2F0aW5nLWlucHV0LXBhZGRpbmctYjtcbiAgICB9XG4gICAgLy8gRHVwbGljYXRlZCBiZWNhdXNlIGA6LXdlYmtpdC1hdXRvZmlsbGAgaW52YWxpZGF0ZXMgb3RoZXIgc2VsZWN0b3JzIHdoZW4gZ3JvdXBlZFxuICAgICY6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgICBwYWRkaW5nLXRvcDogJGZvcm0tZmxvYXRpbmctaW5wdXQtcGFkZGluZy10O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRmb3JtLWZsb2F0aW5nLWlucHV0LXBhZGRpbmctYjtcbiAgICB9XG4gIH1cblxuICA+IC5mb3JtLXNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6ICRmb3JtLWZsb2F0aW5nLWlucHV0LXBhZGRpbmctdDtcbiAgICBwYWRkaW5nLWJvdHRvbTogJGZvcm0tZmxvYXRpbmctaW5wdXQtcGFkZGluZy1iO1xuICB9XG5cbiAgPiAuZm9ybS1jb250cm9sOmZvY3VzLFxuICA+IC5mb3JtLWNvbnRyb2w6bm90KDpwbGFjZWhvbGRlci1zaG93biksXG4gID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQsXG4gID4gLmZvcm0tc2VsZWN0IHtcbiAgICB+IGxhYmVsIHtcbiAgICAgIG9wYWNpdHk6ICRmb3JtLWZsb2F0aW5nLWxhYmVsLW9wYWNpdHk7XG4gICAgICB0cmFuc2Zvcm06ICRmb3JtLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTtcbiAgICB9XG4gIH1cbiAgLy8gRHVwbGljYXRlZCBiZWNhdXNlIGA6LXdlYmtpdC1hdXRvZmlsbGAgaW52YWxpZGF0ZXMgb3RoZXIgc2VsZWN0b3JzIHdoZW4gZ3JvdXBlZFxuICA+IC5mb3JtLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgfiBsYWJlbCB7XG4gICAgICBvcGFjaXR5OiAkZm9ybS1mbG9hdGluZy1sYWJlbC1vcGFjaXR5O1xuICAgICAgdHJhbnNmb3JtOiAkZm9ybS1mbG9hdGluZy1sYWJlbC10cmFuc2Zvcm07XG4gICAgfVxuICB9XG5cbiAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7XG4gICAgfiBsYWJlbCB7XG4gICAgICBib3JkZXItd2lkdGg6ICRpbnB1dC1ib3JkZXItd2lkdGggMDsgLy8gUmVxdWlyZWQgdG8gcHJvcGVybHkgcG9zaXRpb24gbGFiZWwgdGV4dCAtIGFzIGV4cGxhaW5lZCBhYm92ZVxuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uaW5wdXQtZ3JvdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDsgLy8gRm9yIGZvcm0gdmFsaWRhdGlvbiBmZWVkYmFja1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAuZm9ybS1jb250cm9sLFxuICA+IC5mb3JtLXNlbGVjdCxcbiAgPiAuZm9ybS1mbG9hdGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvLyBGb3IgZm9jdXMgc3RhdGUncyB6LWluZGV4XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgd2lkdGg6IDElO1xuICAgIG1pbi13aWR0aDogMDsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzYyNDcxNDAvd2h5LWRvbnQtZmxleC1pdGVtcy1zaHJpbmstcGFzdC1jb250ZW50LXNpemVcbiAgfVxuXG4gIC8vIEJyaW5nIHRoZSBcImFjdGl2ZVwiIGZvcm0gY29udHJvbCB0byB0aGUgdG9wIG9mIHN1cnJvdW5kaW5nIGVsZW1lbnRzXG4gID4gLmZvcm0tY29udHJvbDpmb2N1cyxcbiAgPiAuZm9ybS1zZWxlY3Q6Zm9jdXMsXG4gID4gLmZvcm0tZmxvYXRpbmc6Zm9jdXMtd2l0aGluIHtcbiAgICB6LWluZGV4OiA1O1xuICB9XG5cbiAgLy8gRW5zdXJlIGJ1dHRvbnMgYXJlIGFsd2F5cyBhYm92ZSBpbnB1dHMgZm9yIG1vcmUgdmlzdWFsbHkgcGxlYXNpbmcgYm9yZGVycy5cbiAgLy8gVGhpcyBpc24ndCBuZWVkZWQgZm9yIGAuaW5wdXQtZ3JvdXAtdGV4dGAgc2luY2UgaXQgc2hhcmVzIHRoZSBzYW1lIGJvcmRlci1jb2xvclxuICAvLyBhcyBvdXIgaW5wdXRzLlxuICAuYnRuIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcblxuICAgICY6Zm9jdXMge1xuICAgICAgei1pbmRleDogNTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBUZXh0dWFsIGFkZG9uc1xuLy9cbi8vIFNlcnZlcyBhcyBhIGNhdGNoLWFsbCBlbGVtZW50IGZvciBhbnkgdGV4dCBvciByYWRpby9jaGVja2JveCBpbnB1dCB5b3Ugd2lzaFxuLy8gdG8gcHJlcGVuZCBvciBhcHBlbmQgdG8gYW4gaW5wdXQuXG5cbi5pbnB1dC1ncm91cC10ZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogJGlucHV0LWdyb3VwLWFkZG9uLXBhZGRpbmcteSAkaW5wdXQtZ3JvdXAtYWRkb24tcGFkZGluZy14O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZSk7IC8vIE1hdGNoIGlucHV0c1xuICBmb250LXdlaWdodDogJGlucHV0LWdyb3VwLWFkZG9uLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1ncm91cC1hZGRvbi1iZztcbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoIHNvbGlkICRpbnB1dC1ncm91cC1hZGRvbi1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMpO1xufVxuXG5cbi8vIFNpemluZ1xuLy9cbi8vIFJlbWl4IHRoZSBkZWZhdWx0IGZvcm0gY29udHJvbCBzaXppbmcgY2xhc3NlcyBpbnRvIG5ldyBvbmVzIGZvciBlYXNpZXJcbi8vIG1hbmlwdWxhdGlvbi5cblxuLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLXNlbGVjdCxcbi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmJ0biB7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktbGcgJGlucHV0LXBhZGRpbmcteC1sZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtbGcpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLWxnKTtcbn1cblxuLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLXNlbGVjdCxcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLXNtID4gLmJ0biB7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktc20gJGlucHV0LXBhZGRpbmcteC1zbTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtc20pO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLXNtKTtcbn1cblxuLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tc2VsZWN0LFxuLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tc2VsZWN0IHtcbiAgcGFkZGluZy1yaWdodDogJGZvcm0tc2VsZWN0LXBhZGRpbmcteCArICRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZztcbn1cblxuXG4vLyBSb3VuZGVkIGNvcm5lcnNcbi8vXG4vLyBUaGVzZSBydWxlc2V0cyBtdXN0IGNvbWUgYWZ0ZXIgdGhlIHNpemluZyBvbmVzIHRvIHByb3Blcmx5IG92ZXJyaWRlIHNtIGFuZCBsZ1xuLy8gYm9yZGVyLXJhZGl1cyB2YWx1ZXMgd2hlbiBleHRlbmRpbmcuIFRoZXkncmUgbW9yZSBzcGVjaWZpYyB0aGFuIHdlJ2QgbGlrZVxuLy8gd2l0aCB0aGUgYC5pbnB1dC1ncm91cCA+YCBwYXJ0LCBidXQgd2l0aG91dCBpdCwgd2UgY2Fubm90IG92ZXJyaWRlIHRoZSBzaXppbmcuXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kdXBsaWNhdGUtc2VsZWN0b3JzXG4uaW5wdXQtZ3JvdXAge1xuICAmOm5vdCguaGFzLXZhbGlkYXRpb24pIHtcbiAgICA+IDpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKTpub3QoLmRyb3Bkb3duLW1lbnUpOm5vdCguZm9ybS1mbG9hdGluZyksXG4gICAgPiAuZHJvcGRvd24tdG9nZ2xlOm50aC1sYXN0LWNoaWxkKG4gKyAzKSxcbiAgICA+IC5mb3JtLWZsb2F0aW5nOm5vdCg6bGFzdC1jaGlsZCkgPiAuZm9ybS1jb250cm9sLFxuICAgID4gLmZvcm0tZmxvYXRpbmc6bm90KDpsYXN0LWNoaWxkKSA+IC5mb3JtLXNlbGVjdCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItZW5kLXJhZGl1cygwKTtcbiAgICB9XG4gIH1cblxuICAmLmhhcy12YWxpZGF0aW9uIHtcbiAgICA+IDpudGgtbGFzdC1jaGlsZChuICsgMyk6bm90KC5kcm9wZG93bi10b2dnbGUpOm5vdCguZHJvcGRvd24tbWVudSk6bm90KC5mb3JtLWZsb2F0aW5nKSxcbiAgICA+IC5kcm9wZG93bi10b2dnbGU6bnRoLWxhc3QtY2hpbGQobiArIDQpLFxuICAgID4gLmZvcm0tZmxvYXRpbmc6bnRoLWxhc3QtY2hpbGQobiArIDMpID4gLmZvcm0tY29udHJvbCxcbiAgICA+IC5mb3JtLWZsb2F0aW5nOm50aC1sYXN0LWNoaWxkKG4gKyAzKSA+IC5mb3JtLXNlbGVjdCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItZW5kLXJhZGl1cygwKTtcbiAgICB9XG4gIH1cblxuICAkdmFsaWRhdGlvbi1tZXNzYWdlczogXCJcIjtcbiAgQGVhY2ggJHN0YXRlIGluIG1hcC1rZXlzKCRmb3JtLXZhbGlkYXRpb24tc3RhdGVzKSB7XG4gICAgJHZhbGlkYXRpb24tbWVzc2FnZXM6ICR2YWxpZGF0aW9uLW1lc3NhZ2VzICsgXCI6bm90KC5cIiArIHVucXVvdGUoJHN0YXRlKSArIFwiLXRvb2x0aXApXCIgKyBcIjpub3QoLlwiICsgdW5xdW90ZSgkc3RhdGUpICsgXCItZmVlZGJhY2spXCI7XG4gIH1cblxuICA+IDpub3QoOmZpcnN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLW1lbnUpI3skdmFsaWRhdGlvbi1tZXNzYWdlc30ge1xuICAgIG1hcmdpbi1sZWZ0OiAtJGlucHV0LWJvcmRlci13aWR0aDtcbiAgICBAaW5jbHVkZSBib3JkZXItc3RhcnQtcmFkaXVzKDApO1xuICB9XG5cbiAgPiAuZm9ybS1mbG9hdGluZzpub3QoOmZpcnN0LWNoaWxkKSA+IC5mb3JtLWNvbnRyb2wsXG4gID4gLmZvcm0tZmxvYXRpbmc6bm90KDpmaXJzdC1jaGlsZCkgPiAuZm9ybS1zZWxlY3Qge1xuICAgIEBpbmNsdWRlIGJvcmRlci1zdGFydC1yYWRpdXMoMCk7XG4gIH1cbn1cbiIsIi8vIFRoaXMgbWl4aW4gdXNlcyBhbiBgaWYoKWAgdGVjaG5pcXVlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBEYXJ0IFNhc3Ncbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy9zYXNzL2lzc3Vlcy8xODczI2lzc3VlY29tbWVudC0xNTIyOTM3MjUgZm9yIG1vcmUgZGV0YWlsc1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9ybS12YWxpZGF0aW9uLW1peGluc1xuQG1peGluIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgQGlmICgkc3RhdGUgPT0gXCJ2YWxpZFwiIG9yICRzdGF0ZSA9PSBcImludmFsaWRcIikge1xuICAgIC53YXMtdmFsaWRhdGVkICN7aWYoJiwgXCImXCIsIFwiXCIpfTojeyRzdGF0ZX0sXG4gICAgI3tpZigmLCBcIiZcIiwgXCJcIil9LmlzLSN7JHN0YXRlfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICN7aWYoJiwgXCImXCIsIFwiXCIpfS5pcy0jeyRzdGF0ZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3JtLXZhbGlkYXRpb24tc3RhdGUoXG4gICRzdGF0ZSxcbiAgJGNvbG9yLFxuICAkaWNvbixcbiAgJHRvb2x0aXAtY29sb3I6IGNvbG9yLWNvbnRyYXN0KCRjb2xvciksXG4gICR0b29sdGlwLWJnLWNvbG9yOiByZ2JhKCRjb2xvciwgJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1vcGFjaXR5KSxcbiAgJGZvY3VzLWJveC1zaGFkb3c6IDAgMCAkaW5wdXQtYnRuLWZvY3VzLWJsdXIgJGlucHV0LWZvY3VzLXdpZHRoIHJnYmEoJGNvbG9yLCAkaW5wdXQtYnRuLWZvY3VzLWNvbG9yLW9wYWNpdHkpXG4pIHtcbiAgLiN7JHN0YXRlfS1mZWVkYmFjayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiAkZm9ybS1mZWVkYmFjay1tYXJnaW4tdG9wO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9ybS1mZWVkYmFjay1mb250LXNpemUpO1xuICAgIGZvbnQtc3R5bGU6ICRmb3JtLWZlZWRiYWNrLWZvbnQtc3R5bGU7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxuXG4gIC4jeyRzdGF0ZX0tdG9vbHRpcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTAwJTtcbiAgICB6LWluZGV4OiA1O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvLyBDb250YWluIHRvIHBhcmVudCB3aGVuIHBvc3NpYmxlXG4gICAgcGFkZGluZzogJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1wYWRkaW5nLXkgJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1wYWRkaW5nLXg7XG4gICAgbWFyZ2luLXRvcDogLjFyZW07XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1saW5lLWhlaWdodDtcbiAgICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRvb2x0aXAtYmctY29sb3I7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZm9ybS1mZWVkYmFjay10b29sdGlwLWJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgIH4gLiN7JHN0YXRlfS1mZWVkYmFjayxcbiAgICB+IC4jeyRzdGF0ZX0tdG9vbHRpcCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAuZm9ybS1jb250cm9sIHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcblxuICAgICAgQGlmICRlbmFibGUtdmFsaWRhdGlvbi1pY29ucyB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRpbnB1dC1oZWlnaHQtaW5uZXI7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGljb24pO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAkaW5wdXQtaGVpZ2h0LWlubmVyLXF1YXJ0ZXIgY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6ICRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZiAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGY7XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgICAgICAgYm94LXNoYWRvdzogJGZvY3VzLWJveC1zaGFkb3c7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuICB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wge1xuICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgIEBpZiAkZW5hYmxlLXZhbGlkYXRpb24taWNvbnMge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkaW5wdXQtaGVpZ2h0LWlubmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgJGlucHV0LWhlaWdodC1pbm5lci1xdWFydGVyIHJpZ2h0ICRpbnB1dC1oZWlnaHQtaW5uZXItcXVhcnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZm9ybS1zZWxlY3Qge1xuICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuXG4gICAgICBAaWYgJGVuYWJsZS12YWxpZGF0aW9uLWljb25zIHtcbiAgICAgICAgJjpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksXG4gICAgICAgICY6bm90KFttdWx0aXBsZV0pW3NpemU9XCIxXCJdIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkZm9ybS1zZWxlY3QtZmVlZGJhY2staWNvbi1wYWRkaW5nLWVuZDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRmb3JtLXNlbGVjdC1pbmRpY2F0b3IpLCBlc2NhcGUtc3ZnKCRpY29uKTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkZm9ybS1zZWxlY3QtYmctcG9zaXRpb24sICRmb3JtLXNlbGVjdC1mZWVkYmFjay1pY29uLXBvc2l0aW9uO1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogJGZvcm0tc2VsZWN0LWJnLXNpemUsICRmb3JtLXNlbGVjdC1mZWVkYmFjay1pY29uLXNpemU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgICBib3gtc2hhZG93OiAkZm9jdXMtYm94LXNoYWRvdztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZm9ybS1jb250cm9sLWNvbG9yIHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICBAaWYgJGVuYWJsZS12YWxpZGF0aW9uLWljb25zIHtcbiAgICAgICAgd2lkdGg6IGFkZCgkZm9ybS1jb2xvci13aWR0aCwgJGlucHV0LWhlaWdodC1pbm5lcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuXG4gICAgICAmOmNoZWNrZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiAkZm9jdXMtYm94LXNoYWRvdztcbiAgICAgIH1cblxuICAgICAgfiAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5mb3JtLWNoZWNrLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgfiAuI3skc3RhdGV9LWZlZWRiYWNrIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAuNWVtO1xuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cCB7XG4gICAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zm9jdXMpLFxuICAgID4gLmZvcm0tc2VsZWN0Om5vdCg6Zm9jdXMpLFxuICAgID4gLmZvcm0tZmxvYXRpbmc6bm90KDpmb2N1cy13aXRoaW4pIHtcbiAgICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgICAgQGlmICRzdGF0ZSA9PSBcInZhbGlkXCIge1xuICAgICAgICAgIHotaW5kZXg6IDM7XG4gICAgICAgIH0gQGVsc2UgaWYgJHN0YXRlID09IFwiaW52YWxpZFwiIHtcbiAgICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tdmFsaWRhdGlvbi1taXhpbnNcbiIsIi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmJ0biB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBidG4tY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9YnRuLXBhZGRpbmcteDogI3skYnRuLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWJ0bi1wYWRkaW5nLXk6ICN7JGJ0bi1wYWRkaW5nLXl9O1xuICAtLSN7JHByZWZpeH1idG4tZm9udC1mYW1pbHk6ICN7JGJ0bi1mb250LWZhbWlseX07XG4gIEBpbmNsdWRlIHJmcygkYnRuLWZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9YnRuLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fWJ0bi1mb250LXdlaWdodDogI3skYnRuLWZvbnQtd2VpZ2h0fTtcbiAgLS0jeyRwcmVmaXh9YnRuLWxpbmUtaGVpZ2h0OiAjeyRidG4tbGluZS1oZWlnaHR9O1xuICAtLSN7JHByZWZpeH1idG4tY29sb3I6ICN7JGJvZHktY29sb3J9O1xuICAtLSN7JHByZWZpeH1idG4tYmc6IHRyYW5zcGFyZW50O1xuICAtLSN7JHByZWZpeH1idG4tYm9yZGVyLXdpZHRoOiAjeyRidG4tYm9yZGVyLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9YnRuLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWJ0bi1ib3JkZXItcmFkaXVzOiAjeyRidG4tYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAtLSN7JHByZWZpeH1idG4tYm94LXNoYWRvdzogI3skYnRuLWJveC1zaGFkb3d9O1xuICAtLSN7JHByZWZpeH1idG4tZGlzYWJsZWQtb3BhY2l0eTogI3skYnRuLWRpc2FibGVkLW9wYWNpdHl9O1xuICAtLSN7JHByZWZpeH1idG4tZm9jdXMtYm94LXNoYWRvdzogMCAwIDAgI3skYnRuLWZvY3VzLXdpZHRofSByZ2JhKHZhcigtLSN7JHByZWZpeH1idG4tZm9jdXMtc2hhZG93LXJnYiksIC41KTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBidG4tY3NzLXZhcnNcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1idG4tcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9YnRuLXBhZGRpbmcteCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvbnQtZmFtaWx5KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1idG4tZm9udC1zaXplKSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvbnQtd2VpZ2h0KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1idG4tbGluZS1oZWlnaHQpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1jb2xvcik7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpZigkbGluay1kZWNvcmF0aW9uID09IG5vbmUsIG51bGwsIG5vbmUpO1xuICB3aGl0ZS1zcGFjZTogJGJ0bi13aGl0ZS1zcGFjZTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgY3Vyc29yOiBpZigkZW5hYmxlLWJ1dHRvbi1wb2ludGVycywgcG9pbnRlciwgbnVsbCk7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH1idG4tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9YnRuLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fWJ0bi1ib3JkZXItcmFkaXVzKSk7XG4gIEBpbmNsdWRlIGdyYWRpZW50LWJnKHZhcigtLSN7JHByZWZpeH1idG4tYmcpKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdyh2YXIoLS0jeyRwcmVmaXh9YnRuLWJveC1zaGFkb3cpKTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkYnRuLXRyYW5zaXRpb24pO1xuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWhvdmVyLWRlY29yYXRpb24gPT0gdW5kZXJsaW5lLCBub25lLCBudWxsKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4taG92ZXItYm9yZGVyLWNvbG9yKTtcbiAgfVxuXG4gIC5idG4tY2hlY2sgKyAmOmhvdmVyIHtcbiAgICAvLyBvdmVycmlkZSBmb3IgdGhlIGNoZWNrYm94L3JhZGlvIGJ1dHRvbnNcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1iZyk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWJvcmRlci1jb2xvcik7XG4gIH1cblxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWNvbG9yKTtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZyh2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJnKSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJvcmRlci1jb2xvcik7XG4gICAgb3V0bGluZTogMDtcbiAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWJveC1zaGFkb3cpLCB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvY3VzLWJveC1zaGFkb3cpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fWJ0bi1mb2N1cy1ib3gtc2hhZG93KTtcbiAgICB9XG4gIH1cblxuICAuYnRuLWNoZWNrOmZvY3VzLXZpc2libGUgKyAmIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4taG92ZXItYm9yZGVyLWNvbG9yKTtcbiAgICBvdXRsaW5lOiAwO1xuICAgIC8vIEF2b2lkIHVzaW5nIG1peGluIHNvIHdlIGNhbiBwYXNzIGN1c3RvbSBmb2N1cyBzaGFkb3cgcHJvcGVybHlcbiAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcbiAgICAgIGJveC1zaGFkb3c6IHZhcigtLSN7JHByZWZpeH1idG4tYm94LXNoYWRvdyksIHZhcigtLSN7JHByZWZpeH1idG4tZm9jdXMtYm94LXNoYWRvdyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvY3VzLWJveC1zaGFkb3cpO1xuICAgIH1cbiAgfVxuXG4gIC5idG4tY2hlY2s6Y2hlY2tlZCArICYsXG4gIDpub3QoLmJ0bi1jaGVjaykgKyAmOmFjdGl2ZSxcbiAgJjpmaXJzdC1jaGlsZDphY3RpdmUsXG4gICYuYWN0aXZlLFxuICAmLnNob3cge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtYmcpO1xuICAgIC8vIFJlbW92ZSBDU1MgZ3JhZGllbnRzIGlmIHRoZXkncmUgZW5hYmxlZFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGlmKCRlbmFibGUtZ3JhZGllbnRzLCBub25lLCBudWxsKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4tYWN0aXZlLWJvcmRlci1jb2xvcik7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyh2YXIoLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1zaGFkb3cpKTtcblxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtc2hhZG93KSwgdmFyKC0tI3skcHJlZml4fWJ0bi1mb2N1cy1ib3gtc2hhZG93KTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvY3VzLWJveC1zaGFkb3cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6ZGlzYWJsZWQsXG4gICYuZGlzYWJsZWQsXG4gIGZpZWxkc2V0OmRpc2FibGVkICYge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWNvbG9yKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJnKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpZigkZW5hYmxlLWdyYWRpZW50cywgbm9uZSwgbnVsbCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcik7XG4gICAgb3BhY2l0eTogdmFyKC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1vcGFjaXR5KTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICB9XG59XG5cblxuLy9cbi8vIEFsdGVybmF0ZSBidXR0b25zXG4vL1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYnRuLXZhcmlhbnQtbG9vcHNcbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYnRuLSN7JGNvbG9yfSB7XG4gICAgQGlmICRjb2xvciA9PSBcImxpZ2h0XCIge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLXZhcmlhbnQoXG4gICAgICAgICR2YWx1ZSxcbiAgICAgICAgJHZhbHVlLFxuICAgICAgICAkaG92ZXItYmFja2dyb3VuZDogc2hhZGUtY29sb3IoJHZhbHVlLCAkYnRuLWhvdmVyLWJnLXNoYWRlLWFtb3VudCksXG4gICAgICAgICRob3Zlci1ib3JkZXI6IHNoYWRlLWNvbG9yKCR2YWx1ZSwgJGJ0bi1ob3Zlci1ib3JkZXItc2hhZGUtYW1vdW50KSxcbiAgICAgICAgJGFjdGl2ZS1iYWNrZ3JvdW5kOiBzaGFkZS1jb2xvcigkdmFsdWUsICRidG4tYWN0aXZlLWJnLXNoYWRlLWFtb3VudCksXG4gICAgICAgICRhY3RpdmUtYm9yZGVyOiBzaGFkZS1jb2xvcigkdmFsdWUsICRidG4tYWN0aXZlLWJvcmRlci1zaGFkZS1hbW91bnQpXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGNvbG9yID09IFwiZGFya1wiIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi12YXJpYW50KFxuICAgICAgICAkdmFsdWUsXG4gICAgICAgICR2YWx1ZSxcbiAgICAgICAgJGhvdmVyLWJhY2tncm91bmQ6IHRpbnQtY29sb3IoJHZhbHVlLCAkYnRuLWhvdmVyLWJnLXRpbnQtYW1vdW50KSxcbiAgICAgICAgJGhvdmVyLWJvcmRlcjogdGludC1jb2xvcigkdmFsdWUsICRidG4taG92ZXItYm9yZGVyLXRpbnQtYW1vdW50KSxcbiAgICAgICAgJGFjdGl2ZS1iYWNrZ3JvdW5kOiB0aW50LWNvbG9yKCR2YWx1ZSwgJGJ0bi1hY3RpdmUtYmctdGludC1hbW91bnQpLFxuICAgICAgICAkYWN0aXZlLWJvcmRlcjogdGludC1jb2xvcigkdmFsdWUsICRidG4tYWN0aXZlLWJvcmRlci10aW50LWFtb3VudClcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tdmFyaWFudCgkdmFsdWUsICR2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYnRuLW91dGxpbmUtI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBidXR0b24tb3V0bGluZS12YXJpYW50KCR2YWx1ZSk7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgYnRuLXZhcmlhbnQtbG9vcHNcblxuXG4vL1xuLy8gTGluayBidXR0b25zXG4vL1xuXG4vLyBNYWtlIGEgYnV0dG9uIGxvb2sgYW5kIGJlaGF2ZSBsaWtlIGEgbGlua1xuLmJ0bi1saW5rIHtcbiAgLS0jeyRwcmVmaXh9YnRuLWZvbnQtd2VpZ2h0OiAjeyRmb250LXdlaWdodC1ub3JtYWx9O1xuICAtLSN7JHByZWZpeH1idG4tY29sb3I6ICN7JGJ0bi1saW5rLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWJnOiB0cmFuc3BhcmVudDtcbiAgLS0jeyRwcmVmaXh9YnRuLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWJ0bi1ob3Zlci1jb2xvcjogI3skYnRuLWxpbmstaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1idG4taG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1jb2xvcjogI3skYnRuLWxpbmstaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1jb2xvcjogI3skYnRuLWxpbmstZGlzYWJsZWQtY29sb3J9O1xuICAtLSN7JHByZWZpeH1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLS0jeyRwcmVmaXh9YnRuLWJveC1zaGFkb3c6IG5vbmU7XG4gIC0tI3skcHJlZml4fWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAje3RvLXJnYihtaXgoY29sb3ItY29udHJhc3QoJHByaW1hcnkpLCAkcHJpbWFyeSwgMTUlKSl9O1xuXG4gIHRleHQtZGVjb3JhdGlvbjogJGxpbmstZGVjb3JhdGlvbjtcbiAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XG4gIH1cblxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWNvbG9yKTtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWNvbG9yKTtcbiAgfVxuXG4gIC8vIE5vIG5lZWQgZm9yIGFuIGFjdGl2ZSBzdGF0ZSBoZXJlXG59XG5cblxuLy9cbi8vIEJ1dHRvbiBTaXplc1xuLy9cblxuLmJ0bi1sZyB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1zaXplKCRidG4tcGFkZGluZy15LWxnLCAkYnRuLXBhZGRpbmcteC1sZywgJGJ0bi1mb250LXNpemUtbGcsICRidG4tYm9yZGVyLXJhZGl1cy1sZyk7XG59XG5cbi5idG4tc20ge1xuICBAaW5jbHVkZSBidXR0b24tc2l6ZSgkYnRuLXBhZGRpbmcteS1zbSwgJGJ0bi1wYWRkaW5nLXgtc20sICRidG4tZm9udC1zaXplLXNtLCAkYnRuLWJvcmRlci1yYWRpdXMtc20pO1xufVxuIiwiLy8gQnV0dG9uIHZhcmlhbnRzXG4vL1xuLy8gRWFzaWx5IHB1bXAgb3V0IGRlZmF1bHQgc3R5bGVzLCBhcyB3ZWxsIGFzIDpob3ZlciwgOmZvY3VzLCA6YWN0aXZlLFxuLy8gYW5kIGRpc2FibGVkIG9wdGlvbnMgZm9yIGFsbCBidXR0b25zXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBidG4tdmFyaWFudC1taXhpblxuQG1peGluIGJ1dHRvbi12YXJpYW50KFxuICAkYmFja2dyb3VuZCxcbiAgJGJvcmRlcixcbiAgJGNvbG9yOiBjb2xvci1jb250cmFzdCgkYmFja2dyb3VuZCksXG4gICRob3Zlci1iYWNrZ3JvdW5kOiBpZigkY29sb3IgPT0gJGNvbG9yLWNvbnRyYXN0LWxpZ2h0LCBzaGFkZS1jb2xvcigkYmFja2dyb3VuZCwgJGJ0bi1ob3Zlci1iZy1zaGFkZS1hbW91bnQpLCB0aW50LWNvbG9yKCRiYWNrZ3JvdW5kLCAkYnRuLWhvdmVyLWJnLXRpbnQtYW1vdW50KSksXG4gICRob3Zlci1ib3JkZXI6IGlmKCRjb2xvciA9PSAkY29sb3ItY29udHJhc3QtbGlnaHQsIHNoYWRlLWNvbG9yKCRib3JkZXIsICRidG4taG92ZXItYm9yZGVyLXNoYWRlLWFtb3VudCksIHRpbnQtY29sb3IoJGJvcmRlciwgJGJ0bi1ob3Zlci1ib3JkZXItdGludC1hbW91bnQpKSxcbiAgJGhvdmVyLWNvbG9yOiBjb2xvci1jb250cmFzdCgkaG92ZXItYmFja2dyb3VuZCksXG4gICRhY3RpdmUtYmFja2dyb3VuZDogaWYoJGNvbG9yID09ICRjb2xvci1jb250cmFzdC1saWdodCwgc2hhZGUtY29sb3IoJGJhY2tncm91bmQsICRidG4tYWN0aXZlLWJnLXNoYWRlLWFtb3VudCksIHRpbnQtY29sb3IoJGJhY2tncm91bmQsICRidG4tYWN0aXZlLWJnLXRpbnQtYW1vdW50KSksXG4gICRhY3RpdmUtYm9yZGVyOiBpZigkY29sb3IgPT0gJGNvbG9yLWNvbnRyYXN0LWxpZ2h0LCBzaGFkZS1jb2xvcigkYm9yZGVyLCAkYnRuLWFjdGl2ZS1ib3JkZXItc2hhZGUtYW1vdW50KSwgdGludC1jb2xvcigkYm9yZGVyLCAkYnRuLWFjdGl2ZS1ib3JkZXItdGludC1hbW91bnQpKSxcbiAgJGFjdGl2ZS1jb2xvcjogY29sb3ItY29udHJhc3QoJGFjdGl2ZS1iYWNrZ3JvdW5kKSxcbiAgJGRpc2FibGVkLWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLFxuICAkZGlzYWJsZWQtYm9yZGVyOiAkYm9yZGVyLFxuICAkZGlzYWJsZWQtY29sb3I6IGNvbG9yLWNvbnRyYXN0KCRkaXNhYmxlZC1iYWNrZ3JvdW5kKVxuKSB7XG4gIC0tI3skcHJlZml4fWJ0bi1jb2xvcjogI3skY29sb3J9O1xuICAtLSN7JHByZWZpeH1idG4tYmc6ICN7JGJhY2tncm91bmR9O1xuICAtLSN7JHByZWZpeH1idG4tYm9yZGVyLWNvbG9yOiAjeyRib3JkZXJ9O1xuICAtLSN7JHByZWZpeH1idG4taG92ZXItY29sb3I6ICN7JGhvdmVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJnOiAjeyRob3Zlci1iYWNrZ3JvdW5kfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJvcmRlci1jb2xvcjogI3skaG92ZXItYm9yZGVyfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWZvY3VzLXNoYWRvdy1yZ2I6ICN7dG8tcmdiKG1peCgkY29sb3IsICRib3JkZXIsIDE1JSkpfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1jb2xvcjogI3skYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1iZzogI3skYWN0aXZlLWJhY2tncm91bmR9O1xuICAtLSN7JHByZWZpeH1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogI3skYWN0aXZlLWJvcmRlcn07XG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtc2hhZG93OiAjeyRidG4tYWN0aXZlLWJveC1zaGFkb3d9O1xuICAtLSN7JHByZWZpeH1idG4tZGlzYWJsZWQtY29sb3I6ICN7JGRpc2FibGVkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJnOiAjeyRkaXNhYmxlZC1iYWNrZ3JvdW5kfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogI3skZGlzYWJsZWQtYm9yZGVyfTtcbn1cbi8vIHNjc3MtZG9jcy1lbmQgYnRuLXZhcmlhbnQtbWl4aW5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi1vdXRsaW5lLXZhcmlhbnQtbWl4aW5cbkBtaXhpbiBidXR0b24tb3V0bGluZS12YXJpYW50KFxuICAkY29sb3IsXG4gICRjb2xvci1ob3ZlcjogY29sb3ItY29udHJhc3QoJGNvbG9yKSxcbiAgJGFjdGl2ZS1iYWNrZ3JvdW5kOiAkY29sb3IsXG4gICRhY3RpdmUtYm9yZGVyOiAkY29sb3IsXG4gICRhY3RpdmUtY29sb3I6IGNvbG9yLWNvbnRyYXN0KCRhY3RpdmUtYmFja2dyb3VuZClcbikge1xuICAtLSN7JHByZWZpeH1idG4tY29sb3I6ICN7JGNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWJvcmRlci1jb2xvcjogI3skY29sb3J9O1xuICAtLSN7JHByZWZpeH1idG4taG92ZXItY29sb3I6ICN7JGNvbG9yLWhvdmVyfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJnOiAjeyRhY3RpdmUtYmFja2dyb3VuZH07XG4gIC0tI3skcHJlZml4fWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICN7JGFjdGl2ZS1ib3JkZXJ9O1xuICAtLSN7JHByZWZpeH1idG4tZm9jdXMtc2hhZG93LXJnYjogI3t0by1yZ2IoJGNvbG9yKX07XG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtY29sb3I6ICN7JGFjdGl2ZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtYmc6ICN7JGFjdGl2ZS1iYWNrZ3JvdW5kfTtcbiAgLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICN7JGFjdGl2ZS1ib3JkZXJ9O1xuICAtLSN7JHByZWZpeH1idG4tYWN0aXZlLXNoYWRvdzogI3skYnRuLWFjdGl2ZS1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWNvbG9yOiAjeyRjb2xvcn07XG4gIC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICN7JGNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9Z3JhZGllbnQ6IG5vbmU7XG59XG4vLyBzY3NzLWRvY3MtZW5kIGJ0bi1vdXRsaW5lLXZhcmlhbnQtbWl4aW5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi1zaXplLW1peGluXG5AbWl4aW4gYnV0dG9uLXNpemUoJHBhZGRpbmcteSwgJHBhZGRpbmcteCwgJGZvbnQtc2l6ZSwgJGJvcmRlci1yYWRpdXMpIHtcbiAgLS0jeyRwcmVmaXh9YnRuLXBhZGRpbmcteTogI3skcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9YnRuLXBhZGRpbmcteDogI3skcGFkZGluZy14fTtcbiAgQGluY2x1ZGUgcmZzKCRmb250LXNpemUsIC0tI3skcHJlZml4fWJ0bi1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1idG4tYm9yZGVyLXJhZGl1czogI3skYm9yZGVyLXJhZGl1c307XG59XG4vLyBzY3NzLWRvY3MtZW5kIGJ0bi1zaXplLW1peGluXG4iLCIuZmFkZSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tZmFkZSk7XG5cbiAgJjpub3QoLnNob3cpIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbi8vIHNjc3MtZG9jcy1zdGFydCBjb2xsYXBzZS1jbGFzc2VzXG4uY29sbGFwc2Uge1xuICAmOm5vdCguc2hvdykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmNvbGxhcHNpbmcge1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tY29sbGFwc2UpO1xuXG4gICYuY29sbGFwc2UtaG9yaXpvbnRhbCB7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tY29sbGFwc2Utd2lkdGgpO1xuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIGNvbGxhcHNlLWNsYXNzZXNcbiIsIi8vIFRoZSBkcm9wZG93biB3cmFwcGVyIChgPGRpdj5gKVxuLmRyb3B1cCxcbi5kcm9wZW5kLFxuLmRyb3Bkb3duLFxuLmRyb3BzdGFydCxcbi5kcm9wdXAtY2VudGVyLFxuLmRyb3Bkb3duLWNlbnRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLy8gR2VuZXJhdGUgdGhlIGNhcmV0IGF1dG9tYXRpY2FsbHlcbiAgQGluY2x1ZGUgY2FyZXQoKTtcbn1cblxuLy8gVGhlIGRyb3Bkb3duIG1lbnVcbi5kcm9wZG93bi1tZW51IHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IGRyb3Bkb3duLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLXppbmRleDogI3skemluZGV4LWRyb3Bkb3dufTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbWluLXdpZHRoOiAjeyRkcm9wZG93bi1taW4td2lkdGh9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1wYWRkaW5nLXg6ICN7JGRyb3Bkb3duLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLXBhZGRpbmcteTogI3skZHJvcGRvd24tcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tc3BhY2VyOiAjeyRkcm9wZG93bi1zcGFjZXJ9O1xuICBAaW5jbHVkZSByZnMoJGRyb3Bkb3duLWZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9ZHJvcGRvd24tZm9udC1zaXplKTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tY29sb3I6ICN7JGRyb3Bkb3duLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tYmc6ICN7JGRyb3Bkb3duLWJnfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAjeyRkcm9wZG93bi1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1ib3JkZXItcmFkaXVzOiAjeyRkcm9wZG93bi1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLXdpZHRoOiAjeyRkcm9wZG93bi1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzOiAjeyRkcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tZGl2aWRlci1iZzogI3skZHJvcGRvd24tZGl2aWRlci1iZ307XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXk6ICN7JGRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXl9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1ib3gtc2hhZG93OiAjeyRkcm9wZG93bi1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1jb2xvcjogI3skZHJvcGRvd24tbGluay1jb2xvcn07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I6ICN7JGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWhvdmVyLWJnOiAjeyRkcm9wZG93bi1saW5rLWhvdmVyLWJnfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I6ICN7JGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICN7JGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjogI3skZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcn07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWl0ZW0tcGFkZGluZy14OiAjeyRkcm9wZG93bi1pdGVtLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWl0ZW0tcGFkZGluZy15OiAjeyRkcm9wZG93bi1pdGVtLXBhZGRpbmcteX07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWhlYWRlci1jb2xvcjogI3skZHJvcGRvd24taGVhZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24taGVhZGVyLXBhZGRpbmcteDogI3skZHJvcGRvd24taGVhZGVyLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXk6ICN7JGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXl9O1xuICAvLyBzY3NzLWRvY3MtZW5kIGRyb3Bkb3duLWNzcy12YXJzXG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24temluZGV4KTtcbiAgZGlzcGxheTogbm9uZTsgLy8gbm9uZSBieSBkZWZhdWx0LCBidXQgYmxvY2sgb24gXCJvcGVuXCIgb2YgdGhlIG1lbnVcbiAgbWluLXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tbWluLXdpZHRoKTtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLXBhZGRpbmcteCk7XG4gIG1hcmdpbjogMDsgLy8gT3ZlcnJpZGUgZGVmYXVsdCBtYXJnaW4gb2YgdWxcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1mb250LXNpemUpKTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1jb2xvcik7XG4gIHRleHQtYWxpZ246IGxlZnQ7IC8vIEVuc3VyZXMgcHJvcGVyIGFsaWdubWVudCBpZiBwYXJlbnQgaGFzIGl0IGNoYW5nZWQgKGUuZy4sIG1vZGFsIGZvb3RlcilcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWJnKTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLWNvbG9yKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLXJhZGl1cykpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1ib3gtc2hhZG93KSk7XG5cbiAgJltkYXRhLWJzLXBvcHBlcl0ge1xuICAgIHRvcDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1zcGFjZXIpO1xuICB9XG5cbiAgQGlmICRkcm9wZG93bi1wYWRkaW5nLXkgPT0gMCB7XG4gICAgPiAuZHJvcGRvd24taXRlbTpmaXJzdC1jaGlsZCxcbiAgICA+IGxpOmZpcnN0LWNoaWxkIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG4gICAgfVxuICAgID4gLmRyb3Bkb3duLWl0ZW06bGFzdC1jaGlsZCxcbiAgICA+IGxpOmxhc3QtY2hpbGQgLmRyb3Bkb3duLWl0ZW0ge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXModmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWlubmVyLWJvcmRlci1yYWRpdXMpKTtcbiAgICB9XG5cbiAgfVxufVxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgcmVzcG9uc2l2ZS1icmVha3BvaW50c1xuLy8gV2UgZGVsaWJlcmF0ZWx5IGhhcmRjb2RlIHRoZSBgYnMtYCBwcmVmaXggYmVjYXVzZSB3ZSBjaGVja1xuLy8gdGhpcyBjdXN0b20gcHJvcGVydHkgaW4gSlMgdG8gZGV0ZXJtaW5lIFBvcHBlcidzIHBvc2l0aW9uaW5nXG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC5kcm9wZG93bi1tZW51I3skaW5maXh9LXN0YXJ0IHtcbiAgICAgIC0tYnMtcG9zaXRpb246IHN0YXJ0O1xuXG4gICAgICAmW2RhdGEtYnMtcG9wcGVyXSB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1tZW51I3skaW5maXh9LWVuZCB7XG4gICAgICAtLWJzLXBvc2l0aW9uOiBlbmQ7XG5cbiAgICAgICZbZGF0YS1icy1wb3BwZXJdIHtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIHJlc3BvbnNpdmUtYnJlYWtwb2ludHNcblxuLy8gQWxsb3cgZm9yIGRyb3Bkb3ducyB0byBnbyBib3R0b20gdXAgKGFrYSwgZHJvcHVwLW1lbnUpXG4vLyBKdXN0IGFkZCAuZHJvcHVwIGFmdGVyIHRoZSBzdGFuZGFyZCAuZHJvcGRvd24gY2xhc3MgYW5kIHlvdSdyZSBzZXQuXG4uZHJvcHVwIHtcbiAgLmRyb3Bkb3duLW1lbnVbZGF0YS1icy1wb3BwZXJdIHtcbiAgICB0b3A6IGF1dG87XG4gICAgYm90dG9tOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLXNwYWNlcik7XG4gIH1cblxuICAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBjYXJldCh1cCk7XG4gIH1cbn1cblxuLmRyb3BlbmQge1xuICAuZHJvcGRvd24tbWVudVtkYXRhLWJzLXBvcHBlcl0ge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1zcGFjZXIpO1xuICB9XG5cbiAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgQGluY2x1ZGUgY2FyZXQoZW5kKTtcbiAgICAmOjphZnRlciB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogMDtcbiAgICB9XG4gIH1cbn1cblxuLmRyb3BzdGFydCB7XG4gIC5kcm9wZG93bi1tZW51W2RhdGEtYnMtcG9wcGVyXSB7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAxMDAlO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1zcGFjZXIpO1xuICB9XG5cbiAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgQGluY2x1ZGUgY2FyZXQoc3RhcnQpO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogMDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBEaXZpZGVycyAoYmFzaWNhbGx5IGFuIGA8aHI+YCkgd2l0aGluIHRoZSBkcm9wZG93blxuLmRyb3Bkb3duLWRpdmlkZXIge1xuICBoZWlnaHQ6IDA7XG4gIG1hcmdpbjogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXkpIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tZGl2aWRlci1iZyk7XG4gIG9wYWNpdHk6IDE7IC8vIFJldmlzaXQgaW4gdjYgdG8gZGUtZHVwZSBzdHlsZXMgdGhhdCBjb25mbGljdCB3aXRoIDxocj4gZWxlbWVudFxufVxuXG4vLyBMaW5rcywgYnV0dG9ucywgYW5kIG1vcmUgd2l0aGluIHRoZSBkcm9wZG93biBtZW51XG4vL1xuLy8gYDxidXR0b24+YC1zcGVjaWZpYyBzdHlsZXMgYXJlIGRlbm90ZWQgd2l0aCBgLy8gRm9yIDxidXR0b24+c2Bcbi5kcm9wZG93bi1pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlOyAvLyBGb3IgYDxidXR0b24+YHNcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWl0ZW0tcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24taXRlbS1wYWRkaW5nLXgpO1xuICBjbGVhcjogYm90aDtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1jb2xvcik7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IC8vIEZvciBgPGJ1dHRvbj5gc1xuICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWRlY29yYXRpb24gPT0gbm9uZSwgbnVsbCwgbm9uZSk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8vIHByZXZlbnQgbGlua3MgZnJvbSByYW5kb21seSBicmVha2luZyBvbnRvIG5ldyBsaW5lc1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLy8gRm9yIGA8YnV0dG9uPmBzXG4gIGJvcmRlcjogMDsgLy8gRm9yIGA8YnV0dG9uPmBzXG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWhvdmVyLWRlY29yYXRpb24gPT0gdW5kZXJsaW5lLCBub25lLCBudWxsKTtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZyh2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1ob3Zlci1iZykpO1xuICB9XG5cbiAgJi5hY3RpdmUsXG4gICY6YWN0aXZlIHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcodmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstYWN0aXZlLWJnKSk7XG4gIH1cblxuICAmLmRpc2FibGVkLFxuICAmOmRpc2FibGVkIHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3IpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIC8vIFJlbW92ZSBDU1MgZ3JhZGllbnRzIGlmIHRoZXkncmUgZW5hYmxlZFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGlmKCRlbmFibGUtZ3JhZGllbnRzLCBub25lLCBudWxsKTtcbiAgfVxufVxuXG4uZHJvcGRvd24tbWVudS5zaG93IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8vIERyb3Bkb3duIHNlY3Rpb24gaGVhZGVyc1xuLmRyb3Bkb3duLWhlYWRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24taGVhZGVyLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXgpO1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBmb3IgdXNlIHdpdGggaGVhZGluZyBlbGVtZW50c1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9ZHJvcGRvd24taGVhZGVyLWNvbG9yKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLy8gYXMgd2l0aCA+IGxpID4gYVxufVxuXG4vLyBEcm9wZG93biB0ZXh0XG4uZHJvcGRvd24taXRlbS10ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1pdGVtLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fWRyb3Bkb3duLWl0ZW0tcGFkZGluZy14KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWNvbG9yKTtcbn1cblxuLy8gRGFyayBkcm9wZG93bnNcbi5kcm9wZG93bi1tZW51LWRhcmsge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgZHJvcGRvd24tZGFyay1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1jb2xvcjogI3skZHJvcGRvd24tZGFyay1jb2xvcn07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWJnOiAjeyRkcm9wZG93bi1kYXJrLWJnfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAjeyRkcm9wZG93bi1kYXJrLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWJveC1zaGFkb3c6ICN7JGRyb3Bkb3duLWRhcmstYm94LXNoYWRvd307XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstY29sb3I6ICN7JGRyb3Bkb3duLWRhcmstbGluay1jb2xvcn07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I6ICN7JGRyb3Bkb3duLWRhcmstbGluay1ob3Zlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWRpdmlkZXItYmc6ICN7JGRyb3Bkb3duLWRhcmstZGl2aWRlci1iZ307XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstaG92ZXItYmc6ICN7JGRyb3Bkb3duLWRhcmstbGluay1ob3Zlci1iZ307XG4gIC0tI3skcHJlZml4fWRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOiAjeyRkcm9wZG93bi1kYXJrLWxpbmstYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9ZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICN7JGRyb3Bkb3duLWRhcmstbGluay1hY3RpdmUtYmd9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1saW5rLWRpc2FibGVkLWNvbG9yOiAjeyRkcm9wZG93bi1kYXJrLWxpbmstZGlzYWJsZWQtY29sb3J9O1xuICAtLSN7JHByZWZpeH1kcm9wZG93bi1oZWFkZXItY29sb3I6ICN7JGRyb3Bkb3duLWRhcmstaGVhZGVyLWNvbG9yfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBkcm9wZG93bi1kYXJrLWNzcy12YXJzXG59XG4iLCIvLyBzY3NzLWRvY3Mtc3RhcnQgY2FyZXQtbWl4aW5zXG5AbWl4aW4gY2FyZXQtZG93biB7XG4gIGJvcmRlci10b3A6ICRjYXJldC13aWR0aCBzb2xpZDtcbiAgYm9yZGVyLXJpZ2h0OiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJvcmRlci1sZWZ0OiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbkBtaXhpbiBjYXJldC11cCB7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJvcmRlci1yaWdodDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiAkY2FyZXQtd2lkdGggc29saWQ7XG4gIGJvcmRlci1sZWZ0OiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbkBtaXhpbiBjYXJldC1lbmQge1xuICBib3JkZXItdG9wOiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgYm9yZGVyLWJvdHRvbTogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItbGVmdDogJGNhcmV0LXdpZHRoIHNvbGlkO1xufVxuXG5AbWl4aW4gY2FyZXQtc3RhcnQge1xuICBib3JkZXItdG9wOiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogJGNhcmV0LXdpZHRoIHNvbGlkO1xuICBib3JkZXItYm90dG9tOiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbkBtaXhpbiBjYXJldCgkZGlyZWN0aW9uOiBkb3duKSB7XG4gIEBpZiAkZW5hYmxlLWNhcmV0IHtcbiAgICAmOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tbGVmdDogJGNhcmV0LXNwYWNpbmc7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogJGNhcmV0LXZlcnRpY2FsLWFsaWduO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIEBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgICBAaW5jbHVkZSBjYXJldC1kb3duKCk7XG4gICAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgICBAaW5jbHVkZSBjYXJldC11cCgpO1xuICAgICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGVuZCB7XG4gICAgICAgIEBpbmNsdWRlIGNhcmV0LWVuZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHN0YXJ0IHtcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRjYXJldC1zcGFjaW5nO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJGNhcmV0LXZlcnRpY2FsLWFsaWduO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBAaW5jbHVkZSBjYXJldC1zdGFydCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6ZW1wdHk6OmFmdGVyIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuLy8gc2Nzcy1kb2NzLWVuZCBjYXJldC1taXhpbnNcbiIsIi8vIE1ha2UgdGhlIGRpdiBiZWhhdmUgbGlrZSBhIGJ1dHRvblxuLmJ0bi1ncm91cCxcbi5idG4tZ3JvdXAtdmVydGljYWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvLyBtYXRjaCAuYnRuIGFsaWdubWVudCBnaXZlbiBmb250LXNpemUgaGFjayBhYm92ZVxuXG4gID4gLmJ0biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgLy8gQnJpbmcgdGhlIGhvdmVyLCBmb2N1c2VkLCBhbmQgXCJhY3RpdmVcIiBidXR0b25zIHRvIHRoZSBmcm9udCB0byBvdmVybGF5XG4gIC8vIHRoZSBib3JkZXJzIHByb3Blcmx5XG4gID4gLmJ0bi1jaGVjazpjaGVja2VkICsgLmJ0bixcbiAgPiAuYnRuLWNoZWNrOmZvY3VzICsgLmJ0bixcbiAgPiAuYnRuOmhvdmVyLFxuICA+IC5idG46Zm9jdXMsXG4gID4gLmJ0bjphY3RpdmUsXG4gID4gLmJ0bi5hY3RpdmUge1xuICAgIHotaW5kZXg6IDE7XG4gIH1cbn1cblxuLy8gT3B0aW9uYWw6IEdyb3VwIG11bHRpcGxlIGJ1dHRvbiBncm91cHMgdG9nZXRoZXIgZm9yIGEgdG9vbGJhclxuLmJ0bi10b29sYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cbiAgLmlucHV0LWdyb3VwIHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4uYnRuLWdyb3VwIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkYnRuLWJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIFByZXZlbnQgZG91YmxlIGJvcmRlcnMgd2hlbiBidXR0b25zIGFyZSBuZXh0IHRvIGVhY2ggb3RoZXJcbiAgPiA6bm90KC5idG4tY2hlY2s6Zmlyc3QtY2hpbGQpICsgLmJ0bixcbiAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tbGVmdDogLSRidG4tYm9yZGVyLXdpZHRoO1xuICB9XG5cbiAgLy8gUmVzZXQgcm91bmRlZCBjb3JuZXJzXG4gID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSxcbiAgPiAuYnRuLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDpmaXJzdC1jaGlsZCxcbiAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHtcbiAgICBAaW5jbHVkZSBib3JkZXItZW5kLXJhZGl1cygwKTtcbiAgfVxuXG4gIC8vIFRoZSBsZWZ0IHJhZGl1cyBzaG91bGQgYmUgMCBpZiB0aGUgYnV0dG9uIGlzOlxuICAvLyAtIHRoZSBcInRoaXJkIG9yIG1vcmVcIiBjaGlsZFxuICAvLyAtIHRoZSBzZWNvbmQgY2hpbGQgYW5kIHRoZSBwcmV2aW91cyBlbGVtZW50IGlzbid0IGAuYnRuLWNoZWNrYCAobWFraW5nIGl0IHRoZSBmaXJzdCBjaGlsZCB2aXN1YWxseSlcbiAgLy8gLSBwYXJ0IG9mIGEgYnRuLWdyb3VwIHdoaWNoIGlzbid0IHRoZSBmaXJzdCBjaGlsZFxuICA+IC5idG46bnRoLWNoaWxkKG4gKyAzKSxcbiAgPiA6bm90KC5idG4tY2hlY2spICsgLmJ0bixcbiAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXN0YXJ0LXJhZGl1cygwKTtcbiAgfVxufVxuXG4vLyBTaXppbmdcbi8vXG4vLyBSZW1peCB0aGUgZGVmYXVsdCBidXR0b24gc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbi5cblxuLmJ0bi1ncm91cC1zbSA+IC5idG4geyBAZXh0ZW5kIC5idG4tc207IH1cbi5idG4tZ3JvdXAtbGcgPiAuYnRuIHsgQGV4dGVuZCAuYnRuLWxnOyB9XG5cblxuLy9cbi8vIFNwbGl0IGJ1dHRvbiBkcm9wZG93bnNcbi8vXG5cbi5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAkYnRuLXBhZGRpbmcteCAqIC43NTtcbiAgcGFkZGluZy1sZWZ0OiAkYnRuLXBhZGRpbmcteCAqIC43NTtcblxuICAmOjphZnRlcixcbiAgLmRyb3B1cCAmOjphZnRlcixcbiAgLmRyb3BlbmQgJjo6YWZ0ZXIge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG5cbiAgLmRyb3BzdGFydCAmOjpiZWZvcmUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG4uYnRuLXNtICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gIHBhZGRpbmctcmlnaHQ6ICRidG4tcGFkZGluZy14LXNtICogLjc1O1xuICBwYWRkaW5nLWxlZnQ6ICRidG4tcGFkZGluZy14LXNtICogLjc1O1xufVxuXG4uYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gIHBhZGRpbmctcmlnaHQ6ICRidG4tcGFkZGluZy14LWxnICogLjc1O1xuICBwYWRkaW5nLWxlZnQ6ICRidG4tcGFkZGluZy14LWxnICogLjc1O1xufVxuXG5cbi8vIFRoZSBjbGlja2FibGUgYnV0dG9uIGZvciB0b2dnbGluZyB0aGUgbWVudVxuLy8gU2V0IHRoZSBzYW1lIGluc2V0IHNoYWRvdyBhcyB0aGUgOmFjdGl2ZSBzdGF0ZVxuLmJ0bi1ncm91cC5zaG93IC5kcm9wZG93bi10b2dnbGUge1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRidG4tYWN0aXZlLWJveC1zaGFkb3cpO1xuXG4gIC8vIFNob3cgbm8gc2hhZG93IGZvciBgLmJ0bi1saW5rYCBzaW5jZSBpdCBoYXMgbm8gb3RoZXIgYnV0dG9uIHN0eWxlcy5cbiAgJi5idG4tbGluayB7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBWZXJ0aWNhbCBidXR0b24gZ3JvdXBzXG4vL1xuXG4uYnRuLWdyb3VwLXZlcnRpY2FsIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gID4gLmJ0bixcbiAgPiAuYnRuLWdyb3VwIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbiAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tdG9wOiAtJGJ0bi1ib3JkZXItd2lkdGg7XG4gIH1cblxuICAvLyBSZXNldCByb3VuZGVkIGNvcm5lcnNcbiAgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuICA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKDApO1xuICB9XG5cbiAgPiAuYnRuIH4gLmJ0bixcbiAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoMCk7XG4gIH1cbn1cbiIsIi8vIEJhc2UgY2xhc3Ncbi8vXG4vLyBLaWNrc3RhcnQgYW55IG5hdmlnYXRpb24gY29tcG9uZW50IHdpdGggYSBzZXQgb2Ygc3R5bGUgcmVzZXRzLiBXb3JrcyB3aXRoXG4vLyBgPG5hdj5gcywgYDx1bD5gcyBvciBgPG9sPmBzLlxuXG4ubmF2IHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IG5hdi1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1uYXYtbGluay1wYWRkaW5nLXg6ICN7JG5hdi1saW5rLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLXBhZGRpbmcteTogI3skbmF2LWxpbmstcGFkZGluZy15fTtcbiAgQGluY2x1ZGUgcmZzKCRuYXYtbGluay1mb250LXNpemUsIC0tI3skcHJlZml4fW5hdi1saW5rLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLWZvbnQtd2VpZ2h0OiAjeyRuYXYtbGluay1mb250LXdlaWdodH07XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLWNvbG9yOiAjeyRuYXYtbGluay1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLWhvdmVyLWNvbG9yOiAjeyRuYXYtbGluay1ob3Zlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLWRpc2FibGVkLWNvbG9yOiAjeyRuYXYtbGluay1kaXNhYmxlZC1jb2xvcn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgbmF2LWNzcy12YXJzXG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5uYXYtbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9bmF2LWxpbmstcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9bmF2LWxpbmstcGFkZGluZy14KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1uYXYtbGluay1mb250LXNpemUpKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1uYXYtbGluay1mb250LXdlaWdodCk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2LWxpbmstY29sb3IpO1xuICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWRlY29yYXRpb24gPT0gbm9uZSwgbnVsbCwgbm9uZSk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJG5hdi1saW5rLXRyYW5zaXRpb24pO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2LWxpbmstaG92ZXItY29sb3IpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogaWYoJGxpbmstaG92ZXItZGVjb3JhdGlvbiA9PSB1bmRlcmxpbmUsIG5vbmUsIG51bGwpO1xuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGUgbGlnaHRlbnMgdGV4dFxuICAmLmRpc2FibGVkIHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdi1saW5rLWRpc2FibGVkLWNvbG9yKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cbn1cblxuLy9cbi8vIFRhYnNcbi8vXG5cbi5uYXYtdGFicyB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBuYXYtdGFicy1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1uYXYtdGFicy1ib3JkZXItd2lkdGg6ICN7JG5hdi10YWJzLWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fW5hdi10YWJzLWJvcmRlci1jb2xvcjogI3skbmF2LXRhYnMtYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2LXRhYnMtYm9yZGVyLXJhZGl1czogI3skbmF2LXRhYnMtYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fW5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiAjeyRuYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdi10YWJzLWxpbmstYWN0aXZlLWNvbG9yOiAjeyRuYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdi10YWJzLWxpbmstYWN0aXZlLWJnOiAjeyRuYXYtdGFicy1saW5rLWFjdGl2ZS1iZ307XG4gIC0tI3skcHJlZml4fW5hdi10YWJzLWxpbmstYWN0aXZlLWJvcmRlci1jb2xvcjogI3skbmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBuYXYtdGFicy1jc3MtdmFyc1xuXG4gIGJvcmRlci1ib3R0b206IHZhcigtLSN7JHByZWZpeH1uYXYtdGFicy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1uYXYtdGFicy1ib3JkZXItY29sb3IpO1xuXG4gIC5uYXYtbGluayB7XG4gICAgbWFyZ2luLWJvdHRvbTogY2FsYygtMSAqIHZhcigtLSN7JHByZWZpeH1uYXYtdGFicy1ib3JkZXItd2lkdGgpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogdmFyKC0tI3skcHJlZml4fW5hdi10YWJzLWJvcmRlci13aWR0aCkgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXModmFyKC0tI3skcHJlZml4fW5hdi10YWJzLWJvcmRlci1yYWRpdXMpKTtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAvLyBQcmV2ZW50cyBhY3RpdmUgLm5hdi1saW5rIHRhYiBvdmVybGFwcGluZyBmb2N1cyBvdXRsaW5lIG9mIHByZXZpb3VzL25leHQgLm5hdi1saW5rXG4gICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcik7XG4gICAgfVxuXG4gICAgJi5kaXNhYmxlZCxcbiAgICAmOmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2LWxpbmstZGlzYWJsZWQtY29sb3IpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIC5uYXYtbGluay5hY3RpdmUsXG4gIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdi10YWJzLWxpbmstYWN0aXZlLWJnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXYtdGFicy1saW5rLWFjdGl2ZS1ib3JkZXItY29sb3IpO1xuICB9XG5cbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIC8vIE1ha2UgZHJvcGRvd24gYm9yZGVyIG92ZXJsYXAgdGFiIGJvcmRlclxuICAgIG1hcmdpbi10b3A6IGNhbGMoLTEgKiB2YXIoLS0jeyRwcmVmaXh9bmF2LXRhYnMtYm9yZGVyLXdpZHRoKSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgLy8gUmVtb3ZlIHRoZSB0b3Agcm91bmRlZCBjb3JuZXJzIGhlcmUgc2luY2UgdGhlcmUgaXMgYSBoYXJkIGVkZ2UgYWJvdmUgdGhlIG1lbnVcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygwKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBQaWxsc1xuLy9cblxuLm5hdi1waWxscyB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBuYXYtcGlsbHMtY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9bmF2LXBpbGxzLWJvcmRlci1yYWRpdXM6ICN7JG5hdi1waWxscy1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9bmF2LXBpbGxzLWxpbmstYWN0aXZlLWNvbG9yOiAjeyRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXYtcGlsbHMtbGluay1hY3RpdmUtYmc6ICN7JG5hdi1waWxscy1saW5rLWFjdGl2ZS1iZ307XG4gIC8vIHNjc3MtZG9jcy1lbmQgbmF2LXBpbGxzLWNzcy12YXJzXG5cbiAgLm5hdi1saW5rIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1uYXYtcGlsbHMtYm9yZGVyLXJhZGl1cykpO1xuXG4gICAgJjpkaXNhYmxlZCB7XG4gICAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdi1saW5rLWRpc2FibGVkLWNvbG9yKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICAubmF2LWxpbmsuYWN0aXZlLFxuICAuc2hvdyA+IC5uYXYtbGluayB7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3IpO1xuICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKHZhcigtLSN7JHByZWZpeH1uYXYtcGlsbHMtbGluay1hY3RpdmUtYmcpKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBKdXN0aWZpZWQgdmFyaWFudHNcbi8vXG5cbi5uYXYtZmlsbCB7XG4gID4gLm5hdi1saW5rLFxuICAubmF2LWl0ZW0ge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4ubmF2LWp1c3RpZmllZCB7XG4gID4gLm5hdi1saW5rLFxuICAubmF2LWl0ZW0ge1xuICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4ubmF2LWZpbGwsXG4ubmF2LWp1c3RpZmllZCB7XG4gIC5uYXYtaXRlbSAubmF2LWxpbmsge1xuICAgIHdpZHRoOiAxMDAlOyAvLyBNYWtlIHN1cmUgYnV0dG9uIHdpbGwgZ3Jvd1xuICB9XG59XG5cblxuLy8gVGFiYmFibGUgdGFic1xuLy9cbi8vIEhpZGUgdGFiYmFibGUgcGFuZXMgdG8gc3RhcnQsIHNob3cgdGhlbSB3aGVuIGAuYWN0aXZlYFxuXG4udGFiLWNvbnRlbnQge1xuICA+IC50YWItcGFuZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICA+IC5hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG4iLCIvLyBOYXZiYXJcbi8vXG4vLyBQcm92aWRlIGEgc3RhdGljIG5hdmJhciBmcm9tIHdoaWNoIHdlIGV4cGFuZCB0byBjcmVhdGUgZnVsbC13aWR0aCwgZml4ZWQsIGFuZFxuLy8gb3RoZXIgbmF2YmFyIHZhcmlhdGlvbnMuXG5cbi5uYXZiYXIge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbmF2YmFyLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fW5hdmJhci1wYWRkaW5nLXg6ICN7aWYoJG5hdmJhci1wYWRkaW5nLXggPT0gbnVsbCwgMCwgJG5hdmJhci1wYWRkaW5nLXgpfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXBhZGRpbmcteTogI3skbmF2YmFyLXBhZGRpbmcteX07XG4gIC0tI3skcHJlZml4fW5hdmJhci1jb2xvcjogI3skbmF2YmFyLWxpZ2h0LWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWhvdmVyLWNvbG9yOiAjeyRuYXZiYXItbGlnaHQtaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItZGlzYWJsZWQtY29sb3I6ICN7JG5hdmJhci1saWdodC1kaXNhYmxlZC1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdmJhci1hY3RpdmUtY29sb3I6ICN7JG5hdmJhci1saWdodC1hY3RpdmUtY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItYnJhbmQtcGFkZGluZy15OiAjeyRuYXZiYXItYnJhbmQtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLW1hcmdpbi1lbmQ6ICN7JG5hdmJhci1icmFuZC1tYXJnaW4tZW5kfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLWZvbnQtc2l6ZTogI3skbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZX07XG4gIC0tI3skcHJlZml4fW5hdmJhci1icmFuZC1jb2xvcjogI3skbmF2YmFyLWxpZ2h0LWJyYW5kLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLWhvdmVyLWNvbG9yOiAjeyRuYXZiYXItbGlnaHQtYnJhbmQtaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItbmF2LWxpbmstcGFkZGluZy14OiAjeyRuYXZiYXItbmF2LWxpbmstcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItcGFkZGluZy15OiAjeyRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXl9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci1wYWRkaW5nLXg6ICN7JG5hdmJhci10b2dnbGVyLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLWZvbnQtc2l6ZTogI3skbmF2YmFyLXRvZ2dsZXItZm9udC1zaXplfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItaWNvbi1iZzogI3tlc2NhcGUtc3ZnKCRuYXZiYXItbGlnaHQtdG9nZ2xlci1pY29uLWJnKX07XG4gIC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLWJvcmRlci1jb2xvcjogI3skbmF2YmFyLWxpZ2h0LXRvZ2dsZXItYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1czogI3skbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLWZvY3VzLXdpZHRoOiAjeyRuYXZiYXItdG9nZ2xlci1mb2N1cy13aWR0aH07XG4gIC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLXRyYW5zaXRpb246ICN7JG5hdmJhci10b2dnbGVyLXRyYW5zaXRpb259O1xuICAvLyBzY3NzLWRvY3MtZW5kIG5hdmJhci1jc3MtdmFyc1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwOyAvLyBhbGxvdyB1cyB0byBkbyB0aGUgbGluZSBicmVhayBmb3IgY29sbGFwc2luZyBjb250ZW50XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgLy8gc3BhY2Ugb3V0IGJyYW5kIGZyb20gbG9nb1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fW5hdmJhci1wYWRkaW5nLXgpO1xuICBAaW5jbHVkZSBncmFkaWVudC1iZygpO1xuXG4gIC8vIEJlY2F1c2UgZmxleCBwcm9wZXJ0aWVzIGFyZW4ndCBpbmhlcml0ZWQsIHdlIG5lZWQgdG8gcmVkZWNsYXJlIHRoZXNlIGZpcnN0XG4gIC8vIGZldyBwcm9wZXJ0aWVzIHNvIHRoYXQgY29udGVudCBuZXN0ZWQgd2l0aGluIGJlaGF2ZSBwcm9wZXJseS5cbiAgLy8gVGhlIGBmbGV4LXdyYXBgIHByb3BlcnR5IGlzIGluaGVyaXRlZCB0byBzaW1wbGlmeSB0aGUgZXhwYW5kZWQgbmF2YmFyc1xuICAlY29udGFpbmVyLWZsZXgtcHJvcGVydGllcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IGluaGVyaXQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cblxuICA+IC5jb250YWluZXIsXG4gID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgQGV4dGVuZCAlY29udGFpbmVyLWZsZXgtcHJvcGVydGllcztcbiAgfVxuXG4gIEBlYWNoICRicmVha3BvaW50LCAkY29udGFpbmVyLW1heC13aWR0aCBpbiAkY29udGFpbmVyLW1heC13aWR0aHMge1xuICAgID4gLmNvbnRhaW5lciN7YnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGhzKX0ge1xuICAgICAgQGV4dGVuZCAlY29udGFpbmVyLWZsZXgtcHJvcGVydGllcztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgYnJhbmRcbi8vXG4vLyBVc2VkIGZvciBicmFuZCwgcHJvamVjdCwgb3Igc2l0ZSBuYW1lcy5cblxuLm5hdmJhci1icmFuZCB7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLXBhZGRpbmcteSk7XG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLXBhZGRpbmcteSk7XG4gIG1hcmdpbi1yaWdodDogdmFyKC0tI3skcHJlZml4fW5hdmJhci1icmFuZC1tYXJnaW4tZW5kKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1uYXZiYXItYnJhbmQtZm9udC1zaXplKSk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLWNvbG9yKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpZigkbGluay1kZWNvcmF0aW9uID09IG5vbmUsIG51bGwsIG5vbmUpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLWhvdmVyLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWhvdmVyLWRlY29yYXRpb24gPT0gdW5kZXJsaW5lLCBub25lLCBudWxsKTtcbiAgfVxufVxuXG5cbi8vIE5hdmJhciBuYXZcbi8vXG4vLyBDdXN0b20gbmF2YmFyIG5hdmlnYXRpb24gKGRvZXNuJ3QgcmVxdWlyZSBgLm5hdmAsIGJ1dCBkb2VzIG1ha2UgdXNlIG9mIGAubmF2LWxpbmtgKS5cblxuLm5hdmJhci1uYXYge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbmF2YmFyLW5hdi1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1uYXYtbGluay1wYWRkaW5nLXg6IDA7XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLXBhZGRpbmcteTogI3skbmF2LWxpbmstcGFkZGluZy15fTtcbiAgQGluY2x1ZGUgcmZzKCRuYXYtbGluay1mb250LXNpemUsIC0tI3skcHJlZml4fW5hdi1saW5rLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLWZvbnQtd2VpZ2h0OiAjeyRuYXYtbGluay1mb250LXdlaWdodH07XG4gIC0tI3skcHJlZml4fW5hdi1saW5rLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWNvbG9yKTtcbiAgLS0jeyRwcmVmaXh9bmF2LWxpbmstaG92ZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1uYXZiYXItaG92ZXItY29sb3IpO1xuICAtLSN7JHByZWZpeH1uYXYtbGluay1kaXNhYmxlZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdmJhci1kaXNhYmxlZC1jb2xvcik7XG4gIC8vIHNjc3MtZG9jcy1lbmQgbmF2YmFyLW5hdi1jc3MtdmFyc1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IC8vIGNhbm5vdCB1c2UgYGluaGVyaXRgIHRvIGdldCB0aGUgYC5uYXZiYXJgcyB2YWx1ZVxuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgLnNob3cgPiAubmF2LWxpbmssXG4gIC5uYXYtbGluay5hY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWFjdGl2ZS1jb2xvcik7XG4gIH1cblxuICAuZHJvcGRvd24tbWVudSB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgfVxufVxuXG5cbi8vIE5hdmJhciB0ZXh0XG4vL1xuLy9cblxuLm5hdmJhci10ZXh0IHtcbiAgcGFkZGluZy10b3A6ICRuYXYtbGluay1wYWRkaW5nLXk7XG4gIHBhZGRpbmctYm90dG9tOiAkbmF2LWxpbmstcGFkZGluZy15O1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fW5hdmJhci1jb2xvcik7XG5cbiAgYSxcbiAgYTpob3ZlcixcbiAgYTpmb2N1cyAge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWFjdGl2ZS1jb2xvcik7XG4gIH1cbn1cblxuXG4vLyBSZXNwb25zaXZlIG5hdmJhclxuLy9cbi8vIEN1c3RvbSBzdHlsZXMgZm9yIHJlc3BvbnNpdmUgY29sbGFwc2luZyBhbmQgdG9nZ2xpbmcgb2YgbmF2YmFyIGNvbnRlbnRzLlxuLy8gUG93ZXJlZCBieSB0aGUgY29sbGFwc2UgQm9vdHN0cmFwIEphdmFTY3JpcHQgcGx1Z2luLlxuXG4vLyBXaGVuIGNvbGxhcHNlZCwgcHJldmVudCB0aGUgdG9nZ2xlYWJsZSBuYXZiYXIgY29udGVudHMgZnJvbSBhcHBlYXJpbmcgaW5cbi8vIHRoZSBkZWZhdWx0IGZsZXhib3ggcm93IG9yaWVudGF0aW9uLiBSZXF1aXJlcyB0aGUgdXNlIG9mIGBmbGV4LXdyYXA6IHdyYXBgXG4vLyBvbiB0aGUgYC5uYXZiYXJgIHBhcmVudC5cbi5uYXZiYXItY29sbGFwc2Uge1xuICBmbGV4LWJhc2lzOiAxMDAlO1xuICBmbGV4LWdyb3c6IDE7XG4gIC8vIEZvciBhbHdheXMgZXhwYW5kZWQgb3IgZXh0cmEgZnVsbCBuYXZiYXJzLCBlbnN1cmUgY29udGVudCBhbGlnbnMgaXRzZWxmXG4gIC8vIHByb3Blcmx5IHZlcnRpY2FsbHkuIENhbiBiZSBlYXNpbHkgb3ZlcnJpZGRlbiB3aXRoIGZsZXggdXRpbGl0aWVzLlxuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4vLyBCdXR0b24gZm9yIHRvZ2dsaW5nIHRoZSBuYXZiYXIgd2hlbiBpbiBpdHMgY29sbGFwc2VkIHN0YXRlXG4ubmF2YmFyLXRvZ2dsZXIge1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItcGFkZGluZy14KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci1mb250LXNpemUpKTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci1ib3JkZXItY29sb3IpOyAvLyByZW1vdmUgZGVmYXVsdCBidXR0b24gc3R5bGVcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1cykpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKHZhcigtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci10cmFuc2l0aW9uKSk7XG5cbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG91dGxpbmU6IDA7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgdmFyKC0tI3skcHJlZml4fW5hdmJhci10b2dnbGVyLWZvY3VzLXdpZHRoKTtcbiAgfVxufVxuXG4vLyBLZWVwIGFzIGEgc2VwYXJhdGUgZWxlbWVudCBzbyBmb2xrcyBjYW4gZWFzaWx5IG92ZXJyaWRlIGl0IHdpdGggYW5vdGhlciBpY29uXG4vLyBvciBpbWFnZSBmaWxlIGFzIG5lZWRlZC5cbi5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMS41ZW07XG4gIGhlaWdodDogMS41ZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci1pY29uLWJnKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XG59XG5cbi5uYXZiYXItbmF2LXNjcm9sbCB7XG4gIG1heC1oZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1zY3JvbGwtaGVpZ2h0LCA3NXZoKTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IG5hdmJhci1leHBhbmQtbG9vcFxuLy8gR2VuZXJhdGUgc2VyaWVzIG9mIGAubmF2YmFyLWV4cGFuZC0qYCByZXNwb25zaXZlIGNsYXNzZXMgZm9yIGNvbmZpZ3VyaW5nXG4vLyB3aGVyZSB5b3VyIG5hdmJhciBjb2xsYXBzZXMuXG4ubmF2YmFyLWV4cGFuZCB7XG4gIEBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkbmV4dCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3Mvc2VsZWN0b3Itbm8tdW5pb24tY2xhc3MtbmFtZVxuICAgICYjeyRpbmZpeH0ge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmV4dCkge1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICAgICAgIC5uYXZiYXItbmF2IHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuXG4gICAgICAgICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5uYXYtbGluayB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9bmF2YmFyLW5hdi1saW5rLXBhZGRpbmcteCk7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLSN7JHByZWZpeH1uYXZiYXItbmF2LWxpbmstcGFkZGluZy14KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmF2YmFyLW5hdi1zY3JvbGwge1xuICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuICAgICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAubmF2YmFyLXRvZ2dsZXIge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAub2ZmY2FudmFzIHtcbiAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcbiAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgIHotaW5kZXg6IGF1dG87XG4gICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG5vbmUpO1xuICAgICAgICAgIC8vIHN0eWxlbGludC1lbmFibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbiAgICAgICAgICAub2ZmY2FudmFzLWhlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5vZmZjYW52YXMtYm9keSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IHZpc2libGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIG5hdmJhci1leHBhbmQtbG9vcFxuXG4vLyBOYXZiYXIgdGhlbWVzXG4vL1xuLy8gU3R5bGVzIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBuYXZiYXJzIHdpdGggbGlnaHQgb3IgZGFyayBiYWNrZ3JvdW5kLlxuXG4ubmF2YmFyLWxpZ2h0IHtcbiAgQGluY2x1ZGUgZGVwcmVjYXRlKFwiYC5uYXZiYXItbGlnaHRgXCIsIFwidjUuMi4wXCIsIFwidjYuMC4wXCIsIHRydWUpO1xufVxuXG4ubmF2YmFyLWRhcmsge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbmF2YmFyLWRhcmstY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWNvbG9yOiAjeyRuYXZiYXItZGFyay1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdmJhci1ob3Zlci1jb2xvcjogI3skbmF2YmFyLWRhcmstaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItZGlzYWJsZWQtY29sb3I6ICN7JG5hdmJhci1kYXJrLWRpc2FibGVkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWFjdGl2ZS1jb2xvcjogI3skbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLWJyYW5kLWNvbG9yOiAjeyRuYXZiYXItZGFyay1icmFuZC1jb2xvcn07XG4gIC0tI3skcHJlZml4fW5hdmJhci1icmFuZC1ob3Zlci1jb2xvcjogI3skbmF2YmFyLWRhcmstYnJhbmQtaG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1uYXZiYXItdG9nZ2xlci1ib3JkZXItY29sb3I6ICN7JG5hdmJhci1kYXJrLXRvZ2dsZXItYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bmF2YmFyLXRvZ2dsZXItaWNvbi1iZzogI3tlc2NhcGUtc3ZnKCRuYXZiYXItZGFyay10b2dnbGVyLWljb24tYmcpfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBuYXZiYXItZGFyay1jc3MtdmFyc1xufVxuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uY2FyZCB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBjYXJkLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fWNhcmQtc3BhY2VyLXk6ICN7JGNhcmQtc3BhY2VyLXl9O1xuICAtLSN7JHByZWZpeH1jYXJkLXNwYWNlci14OiAjeyRjYXJkLXNwYWNlci14fTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC10aXRsZS1zcGFjZXIteTogI3skY2FyZC10aXRsZS1zcGFjZXIteX07XG4gIC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLXdpZHRoOiAjeyRjYXJkLWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLWNvbG9yOiAjeyRjYXJkLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLXJhZGl1czogI3skY2FyZC1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1ib3gtc2hhZG93OiAjeyRjYXJkLWJveC1zaGFkb3d9O1xuICAtLSN7JHByZWZpeH1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXM6ICN7JGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fWNhcmQtY2FwLXBhZGRpbmcteTogI3skY2FyZC1jYXAtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy14OiAjeyRjYXJkLWNhcC1wYWRkaW5nLXh9O1xuICAtLSN7JHByZWZpeH1jYXJkLWNhcC1iZzogI3skY2FyZC1jYXAtYmd9O1xuICAtLSN7JHByZWZpeH1jYXJkLWNhcC1jb2xvcjogI3skY2FyZC1jYXAtY29sb3J9O1xuICAtLSN7JHByZWZpeH1jYXJkLWhlaWdodDogI3skY2FyZC1oZWlnaHR9O1xuICAtLSN7JHByZWZpeH1jYXJkLWNvbG9yOiAjeyRjYXJkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1iZzogI3skY2FyZC1iZ307XG4gIC0tI3skcHJlZml4fWNhcmQtaW1nLW92ZXJsYXktcGFkZGluZzogI3skY2FyZC1pbWctb3ZlcmxheS1wYWRkaW5nfTtcbiAgLS0jeyRwcmVmaXh9Y2FyZC1ncm91cC1tYXJnaW46ICN7JGNhcmQtZ3JvdXAtbWFyZ2lufTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBjYXJkLWNzcy12YXJzXG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtaW4td2lkdGg6IDA7IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8yMjc0MCNpc3N1ZWNvbW1lbnQtMzA1ODY4MTA2XG4gIGhlaWdodDogdmFyKC0tI3skcHJlZml4fWNhcmQtaGVpZ2h0KTtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1iZyk7XG4gIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1jYXJkLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLXJhZGl1cykpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KHZhcigtLSN7JHByZWZpeH1jYXJkLWJveC1zaGFkb3cpKTtcblxuICA+IGhyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cblxuICA+IC5saXN0LWdyb3VwIHtcbiAgICBib3JkZXItdG9wOiBpbmhlcml0O1xuICAgIGJvcmRlci1ib3R0b206IGluaGVyaXQ7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9Y2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkICB7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIER1ZSB0byBzcGVjaWZpY2l0eSBvZiB0aGUgYWJvdmUgc2VsZWN0b3IgKGAuY2FyZCA+IC5saXN0LWdyb3VwYCksIHdlIG11c3RcbiAgLy8gdXNlIGEgY2hpbGQgc2VsZWN0b3IgaGVyZSB0byBwcmV2ZW50IGRvdWJsZSBib3JkZXJzLlxuICA+IC5jYXJkLWhlYWRlciArIC5saXN0LWdyb3VwLFxuICA+IC5saXN0LWdyb3VwICsgLmNhcmQtZm9vdGVyIHtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG59XG5cbi5jYXJkLWJvZHkge1xuICAvLyBFbmFibGUgYGZsZXgtZ3JvdzogMWAgZm9yIGRlY2tzIGFuZCBncm91cHMgc28gdGhhdCBjYXJkIGJsb2NrcyB0YWtlIHVwXG4gIC8vIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGUsIGVuc3VyaW5nIGZvb3RlcnMgYXJlIGFsaWduZWQgdG8gdGhlIGJvdHRvbS5cbiAgZmxleDogMSAxIGF1dG87XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1jYXJkLXNwYWNlci15KSB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1zcGFjZXIteCk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jb2xvcik7XG59XG5cbi5jYXJkLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fWNhcmQtdGl0bGUtc3BhY2VyLXkpO1xufVxuXG4uY2FyZC1zdWJ0aXRsZSB7XG4gIG1hcmdpbi10b3A6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWNhcmQtdGl0bGUtc3BhY2VyLXkpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmNhcmQtdGV4dDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmNhcmQtbGluayB7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogaWYoJGxpbmstaG92ZXItZGVjb3JhdGlvbiA9PSB1bmRlcmxpbmUsIG5vbmUsIG51bGwpO1xuICB9XG5cbiAgKyAuY2FyZC1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tI3skcHJlZml4fWNhcmQtc3BhY2VyLXgpO1xuICB9XG59XG5cbi8vXG4vLyBPcHRpb25hbCB0ZXh0dWFsIGNhcHNcbi8vXG5cbi5jYXJkLWhlYWRlciB7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1jYXJkLWNhcC1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1jYXJkLWNhcC1wYWRkaW5nLXgpO1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBSZW1vdmVzIHRoZSBkZWZhdWx0IG1hcmdpbi1ib3R0b20gb2YgPGhOPlxuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLWJnKTtcbiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1ib3JkZXItY29sb3IpO1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykgdmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykgMCAwKTtcbiAgfVxufVxuXG4uY2FyZC1mb290ZXIge1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy14KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1jYXJkLWNhcC1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1jYXJkLWNhcC1iZyk7XG4gIGJvcmRlci10b3A6IHZhcigtLSN7JHByZWZpeH1jYXJkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tI3skcHJlZml4fWNhcmQtYm9yZGVyLWNvbG9yKTtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCAwIHZhcigtLSN7JHByZWZpeH1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpIHZhcigtLSN7JHByZWZpeH1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBIZWFkZXIgbmF2c1xuLy9cblxuLmNhcmQtaGVhZGVyLXRhYnMge1xuICBtYXJnaW4tcmlnaHQ6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLXBhZGRpbmcteCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBtYXJnaW4tYm90dG9tOiBjYWxjKC0xICogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLXBhZGRpbmcteSkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBtYXJnaW4tbGVmdDogY2FsYygtLjUgKiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy14KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gIGJvcmRlci1ib3R0b206IDA7XG5cbiAgLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWNhcmQtYmcpO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLSN7JHByZWZpeH1jYXJkLWJnKTtcbiAgfVxufVxuXG4uY2FyZC1oZWFkZXItcGlsbHMge1xuICBtYXJnaW4tcmlnaHQ6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWNhcmQtY2FwLXBhZGRpbmcteCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBtYXJnaW4tbGVmdDogY2FsYygtLjUgKiB2YXIoLS0jeyRwcmVmaXh9Y2FyZC1jYXAtcGFkZGluZy14KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG59XG5cbi8vIENhcmQgaW1hZ2Vcbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1jYXJkLWltZy1vdmVybGF5LXBhZGRpbmcpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpKTtcbn1cblxuLmNhcmQtaW1nLFxuLmNhcmQtaW1nLXRvcCxcbi5jYXJkLWltZy1ib3R0b20ge1xuICB3aWR0aDogMTAwJTsgLy8gUmVxdWlyZWQgYmVjYXVzZSB3ZSB1c2UgZmxleGJveCBhbmQgdGhpcyBpbmhlcmVudGx5IGFwcGxpZXMgYWxpZ24tc2VsZjogc3RyZXRjaFxufVxuXG4uY2FyZC1pbWcsXG4uY2FyZC1pbWctdG9wIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykpO1xufVxuXG4uY2FyZC1pbWcsXG4uY2FyZC1pbWctYm90dG9tIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXModmFyKC0tI3skcHJlZml4fWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cykpO1xufVxuXG5cbi8vXG4vLyBDYXJkIGdyb3Vwc1xuLy9cblxuLmNhcmQtZ3JvdXAge1xuICAvLyBUaGUgY2hpbGQgc2VsZWN0b3IgYWxsb3dzIG5lc3RlZCBgLmNhcmRgIHdpdGhpbiBgLmNhcmQtZ3JvdXBgXG4gIC8vIHRvIGRpc3BsYXkgcHJvcGVybHkuXG4gID4gLmNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLSN7JHByZWZpeH1jYXJkLWdyb3VwLW1hcmdpbik7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIC8vIFRoZSBjaGlsZCBzZWxlY3RvciBhbGxvd3MgbmVzdGVkIGAuY2FyZGAgd2l0aGluIGAuY2FyZC1ncm91cGBcbiAgICAvLyB0byBkaXNwbGF5IHByb3Blcmx5LlxuICAgID4gLmNhcmQge1xuICAgICAgLy8gRmxleGJ1Z3MgIzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MjZmxleGJ1Zy00XG4gICAgICBmbGV4OiAxIDAgMCU7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICArIC5jYXJkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgcm91bmRlZCBjb3JuZXJzXG4gICAgICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItZW5kLXJhZGl1cygwKTtcblxuICAgICAgICAgIC5jYXJkLWltZy10b3AsXG4gICAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1kaXNhbGxvd2VkLWxpc3RcbiAgICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuY2FyZC1pbWctYm90dG9tLFxuICAgICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktZGlzYWxsb3dlZC1saXN0XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItc3RhcnQtcmFkaXVzKDApO1xuXG4gICAgICAgICAgLmNhcmQtaW1nLXRvcCxcbiAgICAgICAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWRpc2FsbG93ZWQtbGlzdFxuICAgICAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmNhcmQtaW1nLWJvdHRvbSxcbiAgICAgICAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWRpc2FsbG93ZWQtbGlzdFxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmFjY29yZGlvbiB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBhY2NvcmRpb24tY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWNvbG9yOiAjeyRhY2NvcmRpb24tY29sb3J9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYmc6ICN7JGFjY29yZGlvbi1iZ307XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi10cmFuc2l0aW9uOiAjeyRhY2NvcmRpb24tdHJhbnNpdGlvbn07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1ib3JkZXItY29sb3I6ICN7JGFjY29yZGlvbi1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYm9yZGVyLXdpZHRoOiAjeyRhY2NvcmRpb24tYm9yZGVyLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6ICN7JGFjY29yZGlvbi1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWlubmVyLWJvcmRlci1yYWRpdXM6ICN7JGFjY29yZGlvbi1pbm5lci1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1wYWRkaW5nLXg6ICN7JGFjY29yZGlvbi1idXR0b24tcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1wYWRkaW5nLXk6ICN7JGFjY29yZGlvbi1idXR0b24tcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1jb2xvcjogI3skYWNjb3JkaW9uLWJ1dHRvbi1jb2xvcn07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tYmc6ICN7JGFjY29yZGlvbi1idXR0b24tYmd9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb246ICN7ZXNjYXBlLXN2ZygkYWNjb3JkaW9uLWJ1dHRvbi1pY29uKX07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4taWNvbi13aWR0aDogI3skYWNjb3JkaW9uLWljb24td2lkdGh9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb24tdHJhbnNmb3JtOiAjeyRhY2NvcmRpb24taWNvbi10cmFuc2Zvcm19O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb24tdHJhbnNpdGlvbjogI3skYWNjb3JkaW9uLWljb24tdHJhbnNpdGlvbn07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tYWN0aXZlLWljb246ICN7ZXNjYXBlLXN2ZygkYWNjb3JkaW9uLWJ1dHRvbi1hY3RpdmUtaWNvbil9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWZvY3VzLWJvcmRlci1jb2xvcjogI3skYWNjb3JkaW9uLWJ1dHRvbi1mb2N1cy1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWZvY3VzLWJveC1zaGFkb3c6ICN7JGFjY29yZGlvbi1idXR0b24tZm9jdXMtYm94LXNoYWRvd307XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1ib2R5LXBhZGRpbmcteDogI3skYWNjb3JkaW9uLWJvZHktcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvZHktcGFkZGluZy15OiAjeyRhY2NvcmRpb24tYm9keS1wYWRkaW5nLXl9O1xuICAtLSN7JHByZWZpeH1hY2NvcmRpb24tYWN0aXZlLWNvbG9yOiAjeyRhY2NvcmRpb24tYnV0dG9uLWFjdGl2ZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fWFjY29yZGlvbi1hY3RpdmUtYmc6ICN7JGFjY29yZGlvbi1idXR0b24tYWN0aXZlLWJnfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBhY2NvcmRpb24tY3NzLXZhcnNcbn1cblxuLmFjY29yZGlvbi1idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLXBhZGRpbmcteCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLWJhc2UpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tY29sb3IpO1xuICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBSZXNldCBidXR0b24gc3R5bGVcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tYmcpO1xuICBib3JkZXI6IDA7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gIG92ZXJmbG93LWFuY2hvcjogbm9uZTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbih2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLXRyYW5zaXRpb24pKTtcblxuICAmOm5vdCguY29sbGFwc2VkKSB7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYWN0aXZlLWNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWFjdGl2ZS1iZyk7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCBjYWxjKC0xICogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1ib3JkZXItd2lkdGgpKSAwIHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYm9yZGVyLWNvbG9yKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWFjdGl2ZS1pY29uKTtcbiAgICAgIHRyYW5zZm9ybTogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4taWNvbi10cmFuc2Zvcm0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFjY29yZGlvbiBpY29uXG4gICY6OmFmdGVyIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICB3aWR0aDogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4taWNvbi13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1pY29uLXdpZHRoKTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb24pO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1pY29uLXdpZHRoKTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYnRuLWljb24tdHJhbnNpdGlvbikpO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgei1pbmRleDogMjtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIHotaW5kZXg6IDM7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJ0bi1mb2N1cy1ib3JkZXItY29sb3IpO1xuICAgIG91dGxpbmU6IDA7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1idG4tZm9jdXMtYm94LXNoYWRvdyk7XG4gIH1cbn1cblxuLmFjY29yZGlvbi1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uYWNjb3JkaW9uLWl0ZW0ge1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYmcpO1xuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1jb2xvcik7XG5cbiAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpKTtcblxuICAgIC5hY2NvcmRpb24tYnV0dG9uIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24taW5uZXItYm9yZGVyLXJhZGl1cykpO1xuICAgIH1cbiAgfVxuXG4gICY6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0IGEgYm9yZGVyLXJhZGl1cyBvbiB0aGUgbGFzdCBpdGVtIGlmIHRoZSBhY2NvcmRpb24gaXMgY29sbGFwc2VkXG4gICY6bGFzdC1vZi10eXBlIHtcbiAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpKTtcblxuICAgIC5hY2NvcmRpb24tYnV0dG9uIHtcbiAgICAgICYuY29sbGFwc2VkIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXModmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmFjY29yZGlvbi1jb2xsYXBzZSB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpKTtcbiAgICB9XG4gIH1cbn1cblxuLmFjY29yZGlvbi1ib2R5IHtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1ib2R5LXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fWFjY29yZGlvbi1ib2R5LXBhZGRpbmcteCk7XG59XG5cblxuLy8gRmx1c2ggYWNjb3JkaW9uIGl0ZW1zXG4vL1xuLy8gUmVtb3ZlIGJvcmRlcnMgYW5kIGJvcmRlci1yYWRpdXMgdG8ga2VlcCBhY2NvcmRpb24gaXRlbXMgZWRnZS10by1lZGdlLlxuXG4uYWNjb3JkaW9uLWZsdXNoIHtcbiAgLmFjY29yZGlvbi1jb2xsYXBzZSB7XG4gICAgYm9yZGVyLXdpZHRoOiAwO1xuICB9XG5cbiAgLmFjY29yZGlvbi1pdGVtIHtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcblxuICAgICY6Zmlyc3QtY2hpbGQgeyBib3JkZXItdG9wOiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogMDsgfVxuXG4gICAgLmFjY29yZGlvbi1idXR0b24ge1xuICAgICAgJixcbiAgICAgICYuY29sbGFwc2VkIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5icmVhZGNydW1iIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IGJyZWFkY3J1bWItY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1wYWRkaW5nLXg6ICN7JGJyZWFkY3J1bWItcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1wYWRkaW5nLXk6ICN7JGJyZWFkY3J1bWItcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1tYXJnaW4tYm90dG9tOiAjeyRicmVhZGNydW1iLW1hcmdpbi1ib3R0b219O1xuICBAaW5jbHVkZSByZnMoJGJyZWFkY3J1bWItZm9udC1zaXplLCAtLSN7JHByZWZpeH1icmVhZGNydW1iLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fWJyZWFkY3J1bWItYmc6ICN7JGJyZWFkY3J1bWItYmd9O1xuICAtLSN7JHByZWZpeH1icmVhZGNydW1iLWJvcmRlci1yYWRpdXM6ICN7JGJyZWFkY3J1bWItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fWJyZWFkY3J1bWItZGl2aWRlci1jb2xvcjogI3skYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1pdGVtLXBhZGRpbmcteDogI3skYnJlYWRjcnVtYi1pdGVtLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWJyZWFkY3J1bWItaXRlbS1hY3RpdmUtY29sb3I6ICN7JGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBicmVhZGNydW1iLWNzcy12YXJzXG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLXBhZGRpbmcteCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLW1hcmdpbi1ib3R0b20pO1xuICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItZm9udC1zaXplKSk7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLWJnKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1ib3JkZXItcmFkaXVzKSk7XG59XG5cbi5icmVhZGNydW1iLWl0ZW0ge1xuICAvLyBUaGUgc2VwYXJhdG9yIGJldHdlZW4gYnJlYWRjcnVtYnMgKGJ5IGRlZmF1bHQsIGEgZm9yd2FyZC1zbGFzaDogXCIvXCIpXG4gICsgLmJyZWFkY3J1bWItaXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1pdGVtLXBhZGRpbmcteCk7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZmxvYXQ6IGxlZnQ7IC8vIFN1cHByZXNzIGlubGluZSBzcGFjaW5ncyBhbmQgdW5kZXJsaW5pbmcgb2YgdGhlIHNlcGFyYXRvclxuICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItaXRlbS1wYWRkaW5nLXgpO1xuICAgICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLWRpdmlkZXItY29sb3IpO1xuICAgICAgY29udGVudDogdmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItZGl2aWRlciwgZXNjYXBlLXN2ZygkYnJlYWRjcnVtYi1kaXZpZGVyKSkgI3tcIi8qIHJ0bDpcIn0gdmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItZGl2aWRlciwgZXNjYXBlLXN2ZygkYnJlYWRjcnVtYi1kaXZpZGVyLWZsaXBwZWQpKSAje1wiKi9cIn07XG4gICAgfVxuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1pdGVtLWFjdGl2ZS1jb2xvcik7XG4gIH1cbn1cbiIsIi5wYWdpbmF0aW9uIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHBhZ2luYXRpb24tY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1wYWRkaW5nLXg6ICN7JHBhZ2luYXRpb24tcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1wYWRkaW5nLXk6ICN7JHBhZ2luYXRpb24tcGFkZGluZy15fTtcbiAgQGluY2x1ZGUgcmZzKCRwYWdpbmF0aW9uLWZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1iZzogI3skcGFnaW5hdGlvbi1iZ307XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tYm9yZGVyLXdpZHRoOiAjeyRwYWdpbmF0aW9uLWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tYm9yZGVyLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tYm9yZGVyLXJhZGl1czogI3skcGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1ob3Zlci1jb2xvcjogI3skcGFnaW5hdGlvbi1ob3Zlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24taG92ZXItYmc6ICN7JHBhZ2luYXRpb24taG92ZXItYmd9O1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWhvdmVyLWJvcmRlci1jb2xvcjogI3skcGFnaW5hdGlvbi1ob3Zlci1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWZvY3VzLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWZvY3VzLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1mb2N1cy1iZzogI3skcGFnaW5hdGlvbi1mb2N1cy1iZ307XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tZm9jdXMtYm94LXNoYWRvdzogI3skcGFnaW5hdGlvbi1mb2N1cy1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1hY3RpdmUtY29sb3I6ICN7JHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1hY3RpdmUtYmc6ICN7JHBhZ2luYXRpb24tYWN0aXZlLWJnfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1kaXNhYmxlZC1iZzogI3skcGFnaW5hdGlvbi1kaXNhYmxlZC1iZ307XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjeyRwYWdpbmF0aW9uLWRpc2FibGVkLWJvcmRlci1jb2xvcn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgcGFnaW5hdGlvbi1jc3MtdmFyc1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIEBpbmNsdWRlIGxpc3QtdW5zdHlsZWQoKTtcbn1cblxuLnBhZ2UtbGluayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tcGFkZGluZy14KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWZvbnQtc2l6ZSkpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tY29sb3IpO1xuICB0ZXh0LWRlY29yYXRpb246IGlmKCRsaW5rLWRlY29yYXRpb24gPT0gbm9uZSwgbnVsbCwgbm9uZSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWJnKTtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHBhZ2luYXRpb24tdHJhbnNpdGlvbik7XG5cbiAgJjpob3ZlciB7XG4gICAgei1pbmRleDogMjtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24taG92ZXItY29sb3IpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogaWYoJGxpbmstaG92ZXItZGVjb3JhdGlvbiA9PSB1bmRlcmxpbmUsIG5vbmUsIG51bGwpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWhvdmVyLWJnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWhvdmVyLWJvcmRlci1jb2xvcik7XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICB6LWluZGV4OiAzO1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1mb2N1cy1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tZm9jdXMtYmcpO1xuICAgIG91dGxpbmU6ICRwYWdpbmF0aW9uLWZvY3VzLW91dGxpbmU7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tZm9jdXMtYm94LXNoYWRvdyk7XG4gIH1cblxuICAmLmFjdGl2ZSxcbiAgLmFjdGl2ZSA+ICYge1xuICAgIHotaW5kZXg6IDM7XG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcik7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcodmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tYWN0aXZlLWJnKSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1hY3RpdmUtYm9yZGVyLWNvbG9yKTtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gIC5kaXNhYmxlZCA+ICYge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcik7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tZGlzYWJsZWQtYmcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtcbiAgfVxufVxuXG4ucGFnZS1pdGVtIHtcbiAgJjpub3QoOmZpcnN0LWNoaWxkKSAucGFnZS1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogJHBhZ2luYXRpb24tbWFyZ2luLXN0YXJ0O1xuICB9XG5cbiAgQGlmICRwYWdpbmF0aW9uLW1hcmdpbi1zdGFydCA9PSAoJHBhZ2luYXRpb24tYm9yZGVyLXdpZHRoICogLTEpIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIC5wYWdlLWxpbmsge1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItc3RhcnQtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWJvcmRlci1yYWRpdXMpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgLnBhZ2UtbGluayB7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1lbmQtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWJvcmRlci1yYWRpdXMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIC8vIEFkZCBib3JkZXItcmFkaXVzIHRvIGFsbCBwYWdlTGlua3MgaW4gY2FzZSB0aGV5IGhhdmUgbGVmdCBtYXJnaW5cbiAgICAucGFnZS1saW5rIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fXBhZ2luYXRpb24tYm9yZGVyLXJhZGl1cykpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vXG4vLyBTaXppbmdcbi8vXG5cbi5wYWdpbmF0aW9uLWxnIHtcbiAgQGluY2x1ZGUgcGFnaW5hdGlvbi1zaXplKCRwYWdpbmF0aW9uLXBhZGRpbmcteS1sZywgJHBhZ2luYXRpb24tcGFkZGluZy14LWxnLCAkZm9udC1zaXplLWxnLCAkcGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzLWxnKTtcbn1cblxuLnBhZ2luYXRpb24tc20ge1xuICBAaW5jbHVkZSBwYWdpbmF0aW9uLXNpemUoJHBhZ2luYXRpb24tcGFkZGluZy15LXNtLCAkcGFnaW5hdGlvbi1wYWRkaW5nLXgtc20sICRmb250LXNpemUtc20sICRwYWdpbmF0aW9uLWJvcmRlci1yYWRpdXMtc20pO1xufVxuIiwiLy8gUGFnaW5hdGlvblxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgcGFnaW5hdGlvbi1taXhpblxuQG1peGluIHBhZ2luYXRpb24tc2l6ZSgkcGFkZGluZy15LCAkcGFkZGluZy14LCAkZm9udC1zaXplLCAkYm9yZGVyLXJhZGl1cykge1xuICAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLXBhZGRpbmcteDogI3skcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9cGFnaW5hdGlvbi1wYWRkaW5nLXk6ICN7JHBhZGRpbmcteX07XG4gIEBpbmNsdWRlIHJmcygkZm9udC1zaXplLCAtLSN7JHByZWZpeH1wYWdpbmF0aW9uLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fXBhZ2luYXRpb24tYm9yZGVyLXJhZGl1czogI3skYm9yZGVyLXJhZGl1c307XG59XG4vLyBzY3NzLWRvY3MtZW5kIHBhZ2luYXRpb24tbWl4aW5cbiIsIi8vIEJhc2UgY2xhc3Ncbi8vXG4vLyBSZXF1aXJlcyBvbmUgb2YgdGhlIGNvbnRleHR1YWwsIGNvbG9yIG1vZGlmaWVyIGNsYXNzZXMgZm9yIGBjb2xvcmAgYW5kXG4vLyBgYmFja2dyb3VuZC1jb2xvcmAuXG5cbi5iYWRnZSB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBiYWRnZS1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1iYWRnZS1wYWRkaW5nLXg6ICN7JGJhZGdlLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWJhZGdlLXBhZGRpbmcteTogI3skYmFkZ2UtcGFkZGluZy15fTtcbiAgQGluY2x1ZGUgcmZzKCRiYWRnZS1mb250LXNpemUsIC0tI3skcHJlZml4fWJhZGdlLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fWJhZGdlLWZvbnQtd2VpZ2h0OiAjeyRiYWRnZS1mb250LXdlaWdodH07XG4gIC0tI3skcHJlZml4fWJhZGdlLWNvbG9yOiAjeyRiYWRnZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fWJhZGdlLWJvcmRlci1yYWRpdXM6ICN7JGJhZGdlLWJvcmRlci1yYWRpdXN9O1xuICAvLyBzY3NzLWRvY3MtZW5kIGJhZGdlLWNzcy12YXJzXG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9YmFkZ2UtcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9YmFkZ2UtcGFkZGluZy14KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1iYWRnZS1mb250LXNpemUpKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1iYWRnZS1mb250LXdlaWdodCk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJhZGdlLWNvbG9yKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fWJhZGdlLWJvcmRlci1yYWRpdXMpKTtcbiAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoKTtcblxuICAvLyBFbXB0eSBiYWRnZXMgY29sbGFwc2UgYXV0b21hdGljYWxseVxuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8vIFF1aWNrIGZpeCBmb3IgYmFkZ2VzIGluIGJ1dHRvbnNcbi5idG4gLmJhZGdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC0xcHg7XG59XG4iLCIvL1xuLy8gQmFzZSBzdHlsZXNcbi8vXG5cbi5hbGVydCB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBhbGVydC1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1hbGVydC1iZzogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWFsZXJ0LXBhZGRpbmcteDogI3skYWxlcnQtcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9YWxlcnQtcGFkZGluZy15OiAjeyRhbGVydC1wYWRkaW5nLXl9O1xuICAtLSN7JHByZWZpeH1hbGVydC1tYXJnaW4tYm90dG9tOiAjeyRhbGVydC1tYXJnaW4tYm90dG9tfTtcbiAgLS0jeyRwcmVmaXh9YWxlcnQtY29sb3I6IGluaGVyaXQ7XG4gIC0tI3skcHJlZml4fWFsZXJ0LWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC0tI3skcHJlZml4fWFsZXJ0LWJvcmRlcjogI3skYWxlcnQtYm9yZGVyLXdpZHRofSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9YWxlcnQtYm9yZGVyLWNvbG9yKTtcbiAgLS0jeyRwcmVmaXh9YWxlcnQtYm9yZGVyLXJhZGl1czogI3skYWxlcnQtYm9yZGVyLXJhZGl1c307XG4gIC8vIHNjc3MtZG9jcy1lbmQgYWxlcnQtY3NzLXZhcnNcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1hbGVydC1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1hbGVydC1wYWRkaW5nLXgpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS0jeyRwcmVmaXh9YWxlcnQtbWFyZ2luLWJvdHRvbSk7XG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YWxlcnQtY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YWxlcnQtYmcpO1xuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH1hbGVydC1ib3JkZXIpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1hbGVydC1ib3JkZXItcmFkaXVzKSk7XG59XG5cbi8vIEhlYWRpbmdzIGZvciBsYXJnZXIgYWxlcnRzXG4uYWxlcnQtaGVhZGluZyB7XG4gIC8vIFNwZWNpZmllZCB0byBwcmV2ZW50IGNvbmZsaWN0cyBvZiBjaGFuZ2luZyAkaGVhZGluZ3MtY29sb3JcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbi8vIFByb3ZpZGUgY2xhc3MgZm9yIGxpbmtzIHRoYXQgbWF0Y2ggYWxlcnRzXG4uYWxlcnQtbGluayB7XG4gIGZvbnQtd2VpZ2h0OiAkYWxlcnQtbGluay1mb250LXdlaWdodDtcbn1cblxuXG4vLyBEaXNtaXNzaWJsZSBhbGVydHNcbi8vXG4vLyBFeHBhbmQgdGhlIHJpZ2h0IHBhZGRpbmcgYW5kIGFjY291bnQgZm9yIHRoZSBjbG9zZSBidXR0b24ncyBwb3NpdGlvbmluZy5cblxuLmFsZXJ0LWRpc21pc3NpYmxlIHtcbiAgcGFkZGluZy1yaWdodDogJGFsZXJ0LWRpc21pc3NpYmxlLXBhZGRpbmctcjtcblxuICAvLyBBZGp1c3QgY2xvc2UgbGluayBwb3NpdGlvblxuICAuYnRuLWNsb3NlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHotaW5kZXg6ICRzdHJldGNoZWQtbGluay16LWluZGV4ICsgMTtcbiAgICBwYWRkaW5nOiAkYWxlcnQtcGFkZGluZy15ICogMS4yNSAkYWxlcnQtcGFkZGluZy14O1xuICB9XG59XG5cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGFsZXJ0LW1vZGlmaWVyc1xuLy8gR2VuZXJhdGUgY29udGV4dHVhbCBtb2RpZmllciBjbGFzc2VzIGZvciBjb2xvcml6aW5nIHRoZSBhbGVydC5cblxuQGVhY2ggJHN0YXRlLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICRhbGVydC1iYWNrZ3JvdW5kOiBzaGlmdC1jb2xvcigkdmFsdWUsICRhbGVydC1iZy1zY2FsZSk7XG4gICRhbGVydC1ib3JkZXI6IHNoaWZ0LWNvbG9yKCR2YWx1ZSwgJGFsZXJ0LWJvcmRlci1zY2FsZSk7XG4gICRhbGVydC1jb2xvcjogc2hpZnQtY29sb3IoJHZhbHVlLCAkYWxlcnQtY29sb3Itc2NhbGUpO1xuXG4gIEBpZiAoY29udHJhc3QtcmF0aW8oJGFsZXJ0LWJhY2tncm91bmQsICRhbGVydC1jb2xvcikgPCAkbWluLWNvbnRyYXN0LXJhdGlvKSB7XG4gICAgJGFsZXJ0LWNvbG9yOiBtaXgoJHZhbHVlLCBjb2xvci1jb250cmFzdCgkYWxlcnQtYmFja2dyb3VuZCksIGFicygkYWxlcnQtY29sb3Itc2NhbGUpKTtcbiAgfVxuICAuYWxlcnQtI3skc3RhdGV9IHtcbiAgICBAaW5jbHVkZSBhbGVydC12YXJpYW50KCRhbGVydC1iYWNrZ3JvdW5kLCAkYWxlcnQtYm9yZGVyLCAkYWxlcnQtY29sb3IpO1xuICB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIGFsZXJ0LW1vZGlmaWVyc1xuIiwiLy8gc2Nzcy1kb2NzLXN0YXJ0IGFsZXJ0LXZhcmlhbnQtbWl4aW5cbkBtaXhpbiBhbGVydC12YXJpYW50KCRiYWNrZ3JvdW5kLCAkYm9yZGVyLCAkY29sb3IpIHtcbiAgLS0jeyRwcmVmaXh9YWxlcnQtY29sb3I6ICN7JGNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YWxlcnQtYmc6ICN7JGJhY2tncm91bmR9O1xuICAtLSN7JHByZWZpeH1hbGVydC1ib3JkZXItY29sb3I6ICN7JGJvcmRlcn07XG5cbiAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS0jeyRwcmVmaXh9Z3JhZGllbnQpO1xuICB9XG5cbiAgLmFsZXJ0LWxpbmsge1xuICAgIGNvbG9yOiBzaGFkZS1jb2xvcigkY29sb3IsIDIwJSk7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgYWxlcnQtdmFyaWFudC1taXhpblxuIiwiLy8gRGlzYWJsZSBhbmltYXRpb24gaWYgdHJhbnNpdGlvbnMgYXJlIGRpc2FibGVkXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBwcm9ncmVzcy1rZXlmcmFtZXNcbkBpZiAkZW5hYmxlLXRyYW5zaXRpb25zIHtcbiAgQGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7XG4gICAgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6ICRwcm9ncmVzcy1oZWlnaHQ7IH1cbiAgfVxufVxuLy8gc2Nzcy1kb2NzLWVuZCBwcm9ncmVzcy1rZXlmcmFtZXNcblxuLnByb2dyZXNzIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHByb2dyZXNzLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fXByb2dyZXNzLWhlaWdodDogI3skcHJvZ3Jlc3MtaGVpZ2h0fTtcbiAgQGluY2x1ZGUgcmZzKCRwcm9ncmVzcy1mb250LXNpemUsIC0tI3skcHJlZml4fXByb2dyZXNzLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fXByb2dyZXNzLWJnOiAjeyRwcm9ncmVzcy1iZ307XG4gIC0tI3skcHJlZml4fXByb2dyZXNzLWJvcmRlci1yYWRpdXM6ICN7JHByb2dyZXNzLWJvcmRlci1yYWRpdXN9O1xuICAtLSN7JHByZWZpeH1wcm9ncmVzcy1ib3gtc2hhZG93OiAjeyRwcm9ncmVzcy1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYmFyLWNvbG9yOiAjeyRwcm9ncmVzcy1iYXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItYmc6ICN7JHByb2dyZXNzLWJhci1iZ307XG4gIC0tI3skcHJlZml4fXByb2dyZXNzLWJhci10cmFuc2l0aW9uOiAjeyRwcm9ncmVzcy1iYXItdHJhbnNpdGlvbn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgcHJvZ3Jlc3MtY3NzLXZhcnNcblxuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1oZWlnaHQpO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvLyBmb3JjZSByb3VuZGVkIGNvcm5lcnMgYnkgY3JvcHBpbmcgaXRcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1mb250LXNpemUpKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXByb2dyZXNzLWJnKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYm9yZGVyLXJhZGl1cykpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1ib3gtc2hhZG93KSk7XG59XG5cbi5wcm9ncmVzcy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItY29sb3IpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItYmcpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItdHJhbnNpdGlvbikpO1xufVxuXG4ucHJvZ3Jlc3MtYmFyLXN0cmlwZWQge1xuICBAaW5jbHVkZSBncmFkaWVudC1zdHJpcGVkKCk7XG4gIGJhY2tncm91bmQtc2l6ZTogdmFyKC0tI3skcHJlZml4fXByb2dyZXNzLWhlaWdodCkgdmFyKC0tI3skcHJlZml4fXByb2dyZXNzLWhlaWdodCk7XG59XG5cbkBpZiAkZW5hYmxlLXRyYW5zaXRpb25zIHtcbiAgLnByb2dyZXNzLWJhci1hbmltYXRlZCB7XG4gICAgYW5pbWF0aW9uOiAkcHJvZ3Jlc3MtYmFyLWFuaW1hdGlvbi10aW1pbmcgcHJvZ3Jlc3MtYmFyLXN0cmlwZXM7XG5cbiAgICBAaWYgJGVuYWJsZS1yZWR1Y2VkLW1vdGlvbiB7XG4gICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBCYXNlIGNsYXNzXG4vL1xuLy8gRWFzaWx5IHVzYWJsZSBvbiA8dWw+LCA8b2w+LCBvciA8ZGl2Pi5cblxuLmxpc3QtZ3JvdXAge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbGlzdC1ncm91cC1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWNvbG9yOiAjeyRsaXN0LWdyb3VwLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1iZzogI3skbGlzdC1ncm91cC1iZ307XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yOiAjeyRsaXN0LWdyb3VwLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoOiAjeyRsaXN0LWdyb3VwLWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1czogI3skbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteDogI3skbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXk6ICN7JGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXl9O1xuICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGlvbi1jb2xvcjogI3skbGlzdC1ncm91cC1hY3Rpb24tY29sb3J9O1xuICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1jb2xvcjogI3skbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1iZzogI3skbGlzdC1ncm91cC1ob3Zlci1iZ307XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjogI3skbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnOiAjeyRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmd9O1xuICAtLSN7JHByZWZpeH1saXN0LWdyb3VwLWRpc2FibGVkLWNvbG9yOiAjeyRsaXN0LWdyb3VwLWRpc2FibGVkLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1kaXNhYmxlZC1iZzogI3skbGlzdC1ncm91cC1kaXNhYmxlZC1iZ307XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOiAjeyRsaXN0LWdyb3VwLWFjdGl2ZS1jb2xvcn07XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aXZlLWJnOiAjeyRsaXN0LWdyb3VwLWFjdGl2ZS1iZ307XG4gIC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlci1jb2xvcjogI3skbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBsaXN0LWdyb3VwLWNzcy12YXJzXG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvLyBObyBuZWVkIHRvIHNldCBsaXN0LXN0eWxlOiBub25lOyBzaW5jZSAubGlzdC1ncm91cC1pdGVtIGlzIGJsb2NrIGxldmVsXG4gIHBhZGRpbmctbGVmdDogMDsgLy8gcmVzZXQgcGFkZGluZyBiZWNhdXNlIHVsIGFuZCBvbFxuICBtYXJnaW4tYm90dG9tOiAwO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpKTtcbn1cblxuLmxpc3QtZ3JvdXAtbnVtYmVyZWQge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGNvdW50ZXItcmVzZXQ6IHNlY3Rpb247XG5cbiAgPiAubGlzdC1ncm91cC1pdGVtOjpiZWZvcmUge1xuICAgIC8vIEluY3JlbWVudHMgb25seSB0aGlzIGluc3RhbmNlIG9mIHRoZSBzZWN0aW9uIGNvdW50ZXJcbiAgICBjb250ZW50OiBjb3VudGVycyhzZWN0aW9uLCBcIi5cIikgXCIuIFwiO1xuICAgIGNvdW50ZXItaW5jcmVtZW50OiBzZWN0aW9uO1xuICB9XG59XG5cbi8vIEludGVyYWN0aXZlIGxpc3QgaXRlbXNcbi8vXG4vLyBVc2UgYW5jaG9yIG9yIGJ1dHRvbiBlbGVtZW50cyBpbnN0ZWFkIG9mIGBsaWBzIG9yIGBkaXZgcyB0byBjcmVhdGUgaW50ZXJhY3RpdmVcbi8vIGxpc3QgaXRlbXMuIEluY2x1ZGVzIGFuIGV4dHJhIGAuYWN0aXZlYCBtb2RpZmllciBjbGFzcyBmb3Igc2VsZWN0ZWQgaXRlbXMuXG5cbi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uIHtcbiAgd2lkdGg6IDEwMCU7IC8vIEZvciBgPGJ1dHRvbj5gcyAoYW5jaG9ycyBiZWNvbWUgMTAwJSBieSBkZWZhdWx0IHRob3VnaClcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGlvbi1jb2xvcik7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IC8vIEZvciBgPGJ1dHRvbj5gcyAoYW5jaG9ycyBpbmhlcml0KVxuXG4gIC8vIEhvdmVyIHN0YXRlXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIHotaW5kZXg6IDE7IC8vIFBsYWNlIGhvdmVyL2ZvY3VzIGl0ZW1zIGFib3ZlIHRoZWlyIHNpYmxpbmdzIGZvciBwcm9wZXIgYm9yZGVyIHN0eWxpbmdcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWJnKTtcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1iZyk7XG4gIH1cbn1cblxuLy8gSW5kaXZpZHVhbCBsaXN0IGl0ZW1zXG4vL1xuLy8gVXNlIG9uIGBsaWBzIG9yIGBkaXZgcyB3aXRoaW4gdGhlIGAubGlzdC1ncm91cGAgcGFyZW50LlxuXG4ubGlzdC1ncm91cC1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWl0ZW0tcGFkZGluZy14KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWNvbG9yKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpZigkbGluay1kZWNvcmF0aW9uID09IG5vbmUsIG51bGwsIG5vbmUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1iZyk7XG4gIGJvcmRlcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItY29sb3IpO1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKGluaGVyaXQpO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cyhpbmhlcml0KTtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1kaXNhYmxlZC1jb2xvcik7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtZGlzYWJsZWQtYmcpO1xuICB9XG5cbiAgLy8gSW5jbHVkZSBib3RoIGhlcmUgZm9yIGA8YT5gcyBhbmQgYDxidXR0b24+YHNcbiAgJi5hY3RpdmUge1xuICAgIHotaW5kZXg6IDI7IC8vIFBsYWNlIGFjdGl2ZSBpdGVtcyBhYm92ZSB0aGVpciBzaWJsaW5ncyBmb3IgcHJvcGVyIGJvcmRlciBzdHlsaW5nXG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGl2ZS1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYWN0aXZlLWJnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3IpO1xuICB9XG5cbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3Mvc2VsZWN0b3Itbm8tcmVkdW5kYW50LW5lc3Rpbmctc2VsZWN0b3JcbiAgJiArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBtYXJnaW4tdG9wOiBjYWxjKC0xICogdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItd2lkdGgpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBIb3Jpem9udGFsXG4vL1xuLy8gQ2hhbmdlIHRoZSBsYXlvdXQgb2YgbGlzdCBncm91cCBpdGVtcyBmcm9tIHZlcnRpY2FsIChkZWZhdWx0KSB0byBob3Jpem9udGFsLlxuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAubGlzdC1ncm91cC1ob3Jpem9udGFsI3skaW5maXh9IHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cbiAgICAgID4gLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgICAgICY6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1zdGFydC1yYWRpdXModmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cykpO1xuICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci10b3AtZW5kLXJhZGl1cygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1lbmQtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1saXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpKTtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXN0YXJ0LXJhZGl1cygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgKyAubGlzdC1ncm91cC1pdGVtIHtcbiAgICAgICAgICBib3JkZXItdG9wLXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItd2lkdGgpO1xuICAgICAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuXG4gICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTEgKiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItd2lkdGgpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9bGlzdC1ncm91cC1ib3JkZXItd2lkdGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIEZsdXNoIGxpc3QgaXRlbXNcbi8vXG4vLyBSZW1vdmUgYm9yZGVycyBhbmQgYm9yZGVyLXJhZGl1cyB0byBrZWVwIGxpc3QgZ3JvdXAgaXRlbXMgZWRnZS10by1lZGdlLiBNb3N0XG4vLyB1c2VmdWwgd2l0aGluIG90aGVyIGNvbXBvbmVudHMgKGUuZy4sIGNhcmRzKS5cblxuLmxpc3QtZ3JvdXAtZmx1c2gge1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDApO1xuXG4gID4gLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDAgdmFyKC0tI3skcHJlZml4fWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBsaXN0LWdyb3VwLW1vZGlmaWVyc1xuLy8gTGlzdCBncm91cCBjb250ZXh0dWFsIHZhcmlhbnRzXG4vL1xuLy8gQWRkIG1vZGlmaWVyIGNsYXNzZXMgdG8gY2hhbmdlIHRleHQgYW5kIGJhY2tncm91bmQgY29sb3Igb24gaW5kaXZpZHVhbCBpdGVtcy5cbi8vIE9yZ2FuaXphdGlvbmFsbHksIHRoaXMgbXVzdCBjb21lIGFmdGVyIHRoZSBgOmhvdmVyYCBzdGF0ZXMuXG5cbkBlYWNoICRzdGF0ZSwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAkbGlzdC1ncm91cC12YXJpYW50LWJnOiBzaGlmdC1jb2xvcigkdmFsdWUsICRsaXN0LWdyb3VwLWl0ZW0tYmctc2NhbGUpO1xuICAkbGlzdC1ncm91cC12YXJpYW50LWNvbG9yOiBzaGlmdC1jb2xvcigkdmFsdWUsICRsaXN0LWdyb3VwLWl0ZW0tY29sb3Itc2NhbGUpO1xuICBAaWYgKGNvbnRyYXN0LXJhdGlvKCRsaXN0LWdyb3VwLXZhcmlhbnQtYmcsICRsaXN0LWdyb3VwLXZhcmlhbnQtY29sb3IpIDwgJG1pbi1jb250cmFzdC1yYXRpbykge1xuICAgICRsaXN0LWdyb3VwLXZhcmlhbnQtY29sb3I6IG1peCgkdmFsdWUsIGNvbG9yLWNvbnRyYXN0KCRsaXN0LWdyb3VwLXZhcmlhbnQtYmcpLCBhYnMoJGxpc3QtZ3JvdXAtaXRlbS1jb2xvci1zY2FsZSkpO1xuICB9XG5cbiAgQGluY2x1ZGUgbGlzdC1ncm91cC1pdGVtLXZhcmlhbnQoJHN0YXRlLCAkbGlzdC1ncm91cC12YXJpYW50LWJnLCAkbGlzdC1ncm91cC12YXJpYW50LWNvbG9yKTtcbn1cbi8vIHNjc3MtZG9jcy1lbmQgbGlzdC1ncm91cC1tb2RpZmllcnNcbiIsIi8vIExpc3QgR3JvdXBzXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBsaXN0LWdyb3VwLW1peGluXG5AbWl4aW4gbGlzdC1ncm91cC1pdGVtLXZhcmlhbnQoJHN0YXRlLCAkYmFja2dyb3VuZCwgJGNvbG9yKSB7XG4gIC5saXN0LWdyb3VwLWl0ZW0tI3skc3RhdGV9IHtcbiAgICBjb2xvcjogJGNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuXG4gICAgJi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uIHtcbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6ICRjb2xvcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogc2hhZGUtY29sb3IoJGJhY2tncm91bmQsIDEwJSk7XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgbGlzdC1ncm91cC1taXhpblxuIiwiLy8gVHJhbnNwYXJlbnQgYmFja2dyb3VuZCBhbmQgYm9yZGVyIHByb3BlcnRpZXMgaW5jbHVkZWQgZm9yIGJ1dHRvbiB2ZXJzaW9uLlxuLy8gaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuXG4vLyBJZiB5b3Ugd2FudCB0aGUgYW5jaG9yIHZlcnNpb24sIGl0IHJlcXVpcmVzIGBocmVmPVwiI1wiYC5cbi8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvY2xpY2sjU2FmYXJpX01vYmlsZVxuXG4uYnRuLWNsb3NlIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIHdpZHRoOiAkYnRuLWNsb3NlLXdpZHRoO1xuICBoZWlnaHQ6ICRidG4tY2xvc2UtaGVpZ2h0O1xuICBwYWRkaW5nOiAkYnRuLWNsb3NlLXBhZGRpbmcteSAkYnRuLWNsb3NlLXBhZGRpbmcteDtcbiAgY29sb3I6ICRidG4tY2xvc2UtY29sb3I7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IGVzY2FwZS1zdmcoJGJ0bi1jbG9zZS1iZykgY2VudGVyIC8gJGJ0bi1jbG9zZS13aWR0aCBhdXRvIG5vLXJlcGVhdDsgLy8gaW5jbHVkZSB0cmFuc3BhcmVudCBmb3IgYnV0dG9uIGVsZW1lbnRzXG4gIGJvcmRlcjogMDsgLy8gZm9yIGJ1dHRvbiBlbGVtZW50c1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCk7XG4gIG9wYWNpdHk6ICRidG4tY2xvc2Utb3BhY2l0eTtcblxuICAvLyBPdmVycmlkZSA8YT4ncyBob3ZlciBzdHlsZVxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJGJ0bi1jbG9zZS1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgb3BhY2l0eTogJGJ0bi1jbG9zZS1ob3Zlci1vcGFjaXR5O1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3gtc2hhZG93OiAkYnRuLWNsb3NlLWZvY3VzLXNoYWRvdztcbiAgICBvcGFjaXR5OiAkYnRuLWNsb3NlLWZvY3VzLW9wYWNpdHk7XG4gIH1cblxuICAmOmRpc2FibGVkLFxuICAmLmRpc2FibGVkIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBvcGFjaXR5OiAkYnRuLWNsb3NlLWRpc2FibGVkLW9wYWNpdHk7XG4gIH1cbn1cblxuLmJ0bi1jbG9zZS13aGl0ZSB7XG4gIGZpbHRlcjogJGJ0bi1jbG9zZS13aGl0ZS1maWx0ZXI7XG59XG4iLCIudG9hc3Qge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgdG9hc3QtY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9dG9hc3QtemluZGV4OiAjeyR6aW5kZXgtdG9hc3R9O1xuICAtLSN7JHByZWZpeH10b2FzdC1wYWRkaW5nLXg6ICN7JHRvYXN0LXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fXRvYXN0LXBhZGRpbmcteTogI3skdG9hc3QtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9dG9hc3Qtc3BhY2luZzogI3skdG9hc3Qtc3BhY2luZ307XG4gIC0tI3skcHJlZml4fXRvYXN0LW1heC13aWR0aDogI3skdG9hc3QtbWF4LXdpZHRofTtcbiAgQGluY2x1ZGUgcmZzKCR0b2FzdC1mb250LXNpemUsIC0tI3skcHJlZml4fXRvYXN0LWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fXRvYXN0LWNvbG9yOiAjeyR0b2FzdC1jb2xvcn07XG4gIC0tI3skcHJlZml4fXRvYXN0LWJnOiAjeyR0b2FzdC1iYWNrZ3JvdW5kLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dG9hc3QtYm9yZGVyLXdpZHRoOiAjeyR0b2FzdC1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItY29sb3I6ICN7JHRvYXN0LWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fXRvYXN0LWJvcmRlci1yYWRpdXM6ICN7JHRvYXN0LWJvcmRlci1yYWRpdXN9O1xuICAtLSN7JHByZWZpeH10b2FzdC1ib3gtc2hhZG93OiAjeyR0b2FzdC1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9dG9hc3QtaGVhZGVyLWNvbG9yOiAjeyR0b2FzdC1oZWFkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH10b2FzdC1oZWFkZXItYmc6ICN7JHRvYXN0LWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dG9hc3QtaGVhZGVyLWJvcmRlci1jb2xvcjogI3skdG9hc3QtaGVhZGVyLWJvcmRlci1jb2xvcn07XG4gIC8vIHNjc3MtZG9jcy1lbmQgdG9hc3QtY3NzLXZhcnNcblxuICB3aWR0aDogdmFyKC0tI3skcHJlZml4fXRvYXN0LW1heC13aWR0aCk7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH10b2FzdC1mb250LXNpemUpKTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH10b2FzdC1jb2xvcik7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtYmcpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItY29sb3IpO1xuICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtYm94LXNoYWRvdyk7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fXRvYXN0LWJvcmRlci1yYWRpdXMpKTtcblxuICAmLnNob3dpbmcge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAmOm5vdCguc2hvdykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLnRvYXN0LWNvbnRhaW5lciB7XG4gIC0tI3skcHJlZml4fXRvYXN0LXppbmRleDogI3skemluZGV4LXRvYXN0fTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IHZhcigtLSN7JHByZWZpeH10b2FzdC16aW5kZXgpO1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgPiA6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fXRvYXN0LXNwYWNpbmcpO1xuICB9XG59XG5cbi50b2FzdC1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtcGFkZGluZy14KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH10b2FzdC1oZWFkZXItY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtaGVhZGVyLWJnKTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fXRvYXN0LWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tI3skcHJlZml4fXRvYXN0LWhlYWRlci1ib3JkZXItY29sb3IpO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyhjYWxjKHZhcigtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItcmFkaXVzKSAtIHZhcigtLSN7JHByZWZpeH10b2FzdC1ib3JkZXItd2lkdGgpKSk7XG5cbiAgLmJ0bi1jbG9zZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH10b2FzdC1wYWRkaW5nLXgpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tI3skcHJlZml4fXRvYXN0LXBhZGRpbmcteCk7XG4gIH1cbn1cblxuLnRvYXN0LWJvZHkge1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9dG9hc3QtcGFkZGluZy14KTtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG5cbi8vIC5tb2RhbC1vcGVuICAgICAgLSBib2R5IGNsYXNzIGZvciBraWxsaW5nIHRoZSBzY3JvbGxcbi8vIC5tb2RhbCAgICAgICAgICAgLSBjb250YWluZXIgdG8gc2Nyb2xsIHdpdGhpblxuLy8gLm1vZGFsLWRpYWxvZyAgICAtIHBvc2l0aW9uaW5nIHNoZWxsIGZvciB0aGUgYWN0dWFsIG1vZGFsXG4vLyAubW9kYWwtY29udGVudCAgIC0gYWN0dWFsIG1vZGFsIHcvIGJnIGFuZCBjb3JuZXJzIGFuZCBzdHVmZlxuXG5cbi8vIENvbnRhaW5lciB0aGF0IHRoZSBtb2RhbCBzY3JvbGxzIHdpdGhpblxuLm1vZGFsIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IG1vZGFsLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fW1vZGFsLXppbmRleDogI3skemluZGV4LW1vZGFsfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtd2lkdGg6ICN7JG1vZGFsLW1kfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtcGFkZGluZzogI3skbW9kYWwtaW5uZXItcGFkZGluZ307XG4gIC0tI3skcHJlZml4fW1vZGFsLW1hcmdpbjogI3skbW9kYWwtZGlhbG9nLW1hcmdpbn07XG4gIC0tI3skcHJlZml4fW1vZGFsLWNvbG9yOiAjeyRtb2RhbC1jb250ZW50LWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtYmc6ICN7JG1vZGFsLWNvbnRlbnQtYmd9O1xuICAtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItY29sb3I6ICN7JG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtYm9yZGVyLXdpZHRoOiAjeyRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fW1vZGFsLWJvcmRlci1yYWRpdXM6ICN7JG1vZGFsLWNvbnRlbnQtYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fW1vZGFsLWJveC1zaGFkb3c6ICN7JG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy14c307XG4gIC0tI3skcHJlZml4fW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXM6ICN7JG1vZGFsLWNvbnRlbnQtaW5uZXItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fW1vZGFsLWhlYWRlci1wYWRkaW5nLXg6ICN7JG1vZGFsLWhlYWRlci1wYWRkaW5nLXh9O1xuICAtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZy15OiAjeyRtb2RhbC1oZWFkZXItcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmc6ICN7JG1vZGFsLWhlYWRlci1wYWRkaW5nfTsgLy8gVG9kbyBpbiB2NjogU3BsaXQgdGhpcyBwYWRkaW5nIGludG8geCBhbmQgeVxuICAtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yOiAjeyRtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aDogI3skbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aH07XG4gIC0tI3skcHJlZml4fW1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OiAjeyRtb2RhbC10aXRsZS1saW5lLWhlaWdodH07XG4gIC0tI3skcHJlZml4fW1vZGFsLWZvb3Rlci1nYXA6ICN7JG1vZGFsLWZvb3Rlci1tYXJnaW4tYmV0d2Vlbn07XG4gIC0tI3skcHJlZml4fW1vZGFsLWZvb3Rlci1iZzogI3skbW9kYWwtZm9vdGVyLWJnfTtcbiAgLS0jeyRwcmVmaXh9bW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcjogI3skbW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcn07XG4gIC0tI3skcHJlZml4fW1vZGFsLWZvb3Rlci1ib3JkZXItd2lkdGg6ICN7JG1vZGFsLWZvb3Rlci1ib3JkZXItd2lkdGh9O1xuICAvLyBzY3NzLWRvY3MtZW5kIG1vZGFsLWNzcy12YXJzXG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IHZhcigtLSN7JHByZWZpeH1tb2RhbC16aW5kZXgpO1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIC8vIFByZXZlbnQgQ2hyb21lIG9uIFdpbmRvd3MgZnJvbSBhZGRpbmcgYSBmb2N1cyBvdXRsaW5lLiBGb3IgZGV0YWlscywgc2VlXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzEwOTUxLlxuICBvdXRsaW5lOiAwO1xuICAvLyBXZSBkZWxpYmVyYXRlbHkgZG9uJ3QgdXNlIGAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7YCBkdWUgdG8gYVxuICAvLyBnbmFybHkgaU9TIFNhZmFyaSBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNDJcbiAgLy8gU2VlIGFsc28gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xNzY5NVxufVxuXG4vLyBTaGVsbCBkaXYgdG8gcG9zaXRpb24gdGhlIG1vZGFsIHdpdGggYm90dG9tIHBhZGRpbmdcbi5tb2RhbC1kaWFsb2cge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXJnaW46IHZhcigtLSN7JHByZWZpeH1tb2RhbC1tYXJnaW4pO1xuICAvLyBhbGxvdyBjbGlja3MgdG8gcGFzcyB0aHJvdWdoIGZvciBjdXN0b20gY2xpY2sgaGFuZGxpbmcgdG8gY2xvc2UgbW9kYWxcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgLy8gV2hlbiBmYWRpbmcgaW4gdGhlIG1vZGFsLCBhbmltYXRlIGl0IHRvIHNsaWRlIGRvd25cbiAgLm1vZGFsLmZhZGUgJiB7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkbW9kYWwtdHJhbnNpdGlvbik7XG4gICAgdHJhbnNmb3JtOiAkbW9kYWwtZmFkZS10cmFuc2Zvcm07XG4gIH1cbiAgLm1vZGFsLnNob3cgJiB7XG4gICAgdHJhbnNmb3JtOiAkbW9kYWwtc2hvdy10cmFuc2Zvcm07XG4gIH1cblxuICAvLyBXaGVuIHRyeWluZyB0byBjbG9zZSwgYW5pbWF0ZSBmb2N1cyB0byBzY2FsZVxuICAubW9kYWwubW9kYWwtc3RhdGljICYge1xuICAgIHRyYW5zZm9ybTogJG1vZGFsLXNjYWxlLXRyYW5zZm9ybTtcbiAgfVxufVxuXG4ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUge1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLSN7JHByZWZpeH1tb2RhbC1tYXJnaW4pICogMik7XG5cbiAgLm1vZGFsLWNvbnRlbnQge1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC5tb2RhbC1ib2R5IHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG59XG5cbi5tb2RhbC1kaWFsb2ctY2VudGVyZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtbWFyZ2luKSAqIDIpO1xufVxuXG4vLyBBY3R1YWwgbW9kYWxcbi5tb2RhbC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTsgLy8gRW5zdXJlIGAubW9kYWwtY29udGVudGAgZXh0ZW5kcyB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgcGFyZW50IGAubW9kYWwtZGlhbG9nYFxuICAvLyBjb3VudGVyYWN0IHRoZSBwb2ludGVyLWV2ZW50czogbm9uZTsgaW4gdGhlIC5tb2RhbC1kaWFsb2dcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1jb2xvcik7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtYmcpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItY29sb3IpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItcmFkaXVzKSk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3codmFyKC0tI3skcHJlZml4fW1vZGFsLWJveC1zaGFkb3cpKTtcbiAgLy8gUmVtb3ZlIGZvY3VzIG91dGxpbmUgZnJvbSBvcGVuZWQgbW9kYWxcbiAgb3V0bGluZTogMDtcbn1cblxuLy8gTW9kYWwgYmFja2dyb3VuZFxuLm1vZGFsLWJhY2tkcm9wIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IG1vZGFsLWJhY2tkcm9wLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fWJhY2tkcm9wLXppbmRleDogI3skemluZGV4LW1vZGFsLWJhY2tkcm9wfTtcbiAgLS0jeyRwcmVmaXh9YmFja2Ryb3AtYmc6ICN7JG1vZGFsLWJhY2tkcm9wLWJnfTtcbiAgLS0jeyRwcmVmaXh9YmFja2Ryb3Atb3BhY2l0eTogI3skbW9kYWwtYmFja2Ryb3Atb3BhY2l0eX07XG4gIC8vIHNjc3MtZG9jcy1lbmQgbW9kYWwtYmFja2Ryb3AtY3NzLXZhcnNcblxuICBAaW5jbHVkZSBvdmVybGF5LWJhY2tkcm9wKHZhcigtLSN7JHByZWZpeH1iYWNrZHJvcC16aW5kZXgpLCB2YXIoLS0jeyRwcmVmaXh9YmFja2Ryb3AtYmcpLCB2YXIoLS0jeyRwcmVmaXh9YmFja2Ryb3Atb3BhY2l0eSkpO1xufVxuXG4vLyBNb2RhbCBoZWFkZXJcbi8vIFRvcCBzZWN0aW9uIG9mIHRoZSBtb2RhbCB3LyB0aXRsZSBhbmQgZGlzbWlzc1xuLm1vZGFsLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IC8vIFB1dCBtb2RhbCBoZWFkZXIgZWxlbWVudHMgKHRpdGxlIGFuZCBkaXNtaXNzKSBvbiBvcHBvc2l0ZSBlbmRzXG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZyk7XG4gIGJvcmRlci1ib3R0b206IHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKHZhcigtLSN7JHByZWZpeH1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG5cbiAgLmJ0bi1jbG9zZSB7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmcteSkgKiAuNSkgY2FsYyh2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmcteCkgKiAuNSk7XG4gICAgbWFyZ2luOiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZy15KSkgY2FsYygtLjUgKiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmcteCkpIGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fW1vZGFsLWhlYWRlci1wYWRkaW5nLXkpKSBhdXRvO1xuICB9XG59XG5cbi8vIFRpdGxlIHRleHQgd2l0aGluIGhlYWRlclxuLm1vZGFsLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1tb2RhbC10aXRsZS1saW5lLWhlaWdodCk7XG59XG5cbi8vIE1vZGFsIGJvZHlcbi8vIFdoZXJlIGFsbCBtb2RhbCBjb250ZW50IHJlc2lkZXMgKHNpYmxpbmcgb2YgLm1vZGFsLWhlYWRlciBhbmQgLm1vZGFsLWZvb3Rlcilcbi5tb2RhbC1ib2R5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvLyBFbmFibGUgYGZsZXgtZ3JvdzogMWAgc28gdGhhdCB0aGUgYm9keSB0YWtlIHVwIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGVcbiAgLy8gd2hlbiB0aGVyZSBzaG91bGQgYmUgYSBmaXhlZCBoZWlnaHQgb24gYC5tb2RhbC1kaWFsb2dgLlxuICBmbGV4OiAxIDEgYXV0bztcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fW1vZGFsLXBhZGRpbmcpO1xufVxuXG4vLyBGb290ZXIgKGZvciBhY3Rpb25zKVxuLm1vZGFsLWZvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8vIHZlcnRpY2FsbHkgY2VudGVyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IC8vIFJpZ2h0IGFsaWduIGJ1dHRvbnMgd2l0aCBmbGV4IHByb3BlcnR5IGJlY2F1c2UgdGV4dC1hbGlnbiBkb2Vzbid0IHdvcmsgb24gZmxleCBpdGVtc1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLSN7JHByZWZpeH1tb2RhbC1wYWRkaW5nKSAtIHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItZ2FwKSAqIC41KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fW1vZGFsLWZvb3Rlci1iZyk7XG4gIGJvcmRlci10b3A6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKHZhcigtLSN7JHByZWZpeH1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG5cbiAgLy8gUGxhY2UgbWFyZ2luIGJldHdlZW4gZm9vdGVyIGVsZW1lbnRzXG4gIC8vIFRoaXMgc29sdXRpb24gaXMgZmFyIGZyb20gaWRlYWwgYmVjYXVzZSBvZiB0aGUgdW5pdmVyc2FsIHNlbGVjdG9yIHVzYWdlLFxuICAvLyBidXQgaXMgbmVlZGVkIHRvIGZpeCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI0ODAwXG4gID4gKiB7XG4gICAgbWFyZ2luOiBjYWxjKHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItZ2FwKSAqIC41KTsgLy8gVG9kbyBpbiB2NjogcmVwbGFjZSB3aXRoIGdhcCBvbiBwYXJlbnQgY2xhc3NcbiAgfVxufVxuXG4vLyBTY2FsZSB1cCB0aGUgbW9kYWxcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgLm1vZGFsIHtcbiAgICAtLSN7JHByZWZpeH1tb2RhbC1tYXJnaW46ICN7JG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cH07XG4gICAgLS0jeyRwcmVmaXh9bW9kYWwtYm94LXNoYWRvdzogI3skbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXNtLXVwfTtcbiAgfVxuXG4gIC8vIEF1dG9tYXRpY2FsbHkgc2V0IG1vZGFsJ3Mgd2lkdGggZm9yIGxhcmdlciB2aWV3cG9ydHNcbiAgLm1vZGFsLWRpYWxvZyB7XG4gICAgbWF4LXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtd2lkdGgpO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIC5tb2RhbC1zbSB7XG4gICAgLS0jeyRwcmVmaXh9bW9kYWwtd2lkdGg6ICN7JG1vZGFsLXNtfTtcbiAgfVxufVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gIC5tb2RhbC1sZyxcbiAgLm1vZGFsLXhsIHtcbiAgICAtLSN7JHByZWZpeH1tb2RhbC13aWR0aDogI3skbW9kYWwtbGd9O1xuICB9XG59XG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoeGwpIHtcbiAgLm1vZGFsLXhsIHtcbiAgICAtLSN7JHByZWZpeH1tb2RhbC13aWR0aDogI3skbW9kYWwteGx9O1xuICB9XG59XG5cbi8vIHNjc3MtZG9jcy1zdGFydCBtb2RhbC1mdWxsc2NyZWVuLWxvb3BcbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuICAkcG9zdGZpeDogaWYoJGluZml4ICE9IFwiXCIsICRpbmZpeCArIFwiLWRvd25cIiwgXCJcIik7XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRicmVha3BvaW50KSB7XG4gICAgLm1vZGFsLWZ1bGxzY3JlZW4jeyRwb3N0Zml4fSB7XG4gICAgICB3aWR0aDogMTAwdnc7XG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBtYXJnaW46IDA7XG5cbiAgICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gICAgICB9XG5cbiAgICAgIC5tb2RhbC1oZWFkZXIsXG4gICAgICAubW9kYWwtZm9vdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcbiAgICAgIH1cblxuICAgICAgLm1vZGFsLWJvZHkge1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLy8gc2Nzcy1kb2NzLWVuZCBtb2RhbC1mdWxsc2NyZWVuLWxvb3BcbiIsIi8vIFNoYXJlZCBiZXR3ZWVuIG1vZGFscyBhbmQgb2ZmY2FudmFzZXNcbkBtaXhpbiBvdmVybGF5LWJhY2tkcm9wKCR6aW5kZXgsICRiYWNrZHJvcC1iZywgJGJhY2tkcm9wLW9wYWNpdHkpIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXg7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tkcm9wLWJnO1xuXG4gIC8vIEZhZGUgZm9yIGJhY2tkcm9wXG4gICYuZmFkZSB7IG9wYWNpdHk6IDA7IH1cbiAgJi5zaG93IHsgb3BhY2l0eTogJGJhY2tkcm9wLW9wYWNpdHk7IH1cbn1cbiIsIi8vIEJhc2UgY2xhc3Ncbi50b29sdGlwIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHRvb2x0aXAtY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC16aW5kZXg6ICN7JHppbmRleC10b29sdGlwfTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1tYXgtd2lkdGg6ICN7JHRvb2x0aXAtbWF4LXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1wYWRkaW5nLXg6ICN7JHRvb2x0aXAtcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1wYWRkaW5nLXk6ICN7JHRvb2x0aXAtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1tYXJnaW46ICN7JHRvb2x0aXAtbWFyZ2lufTtcbiAgQGluY2x1ZGUgcmZzKCR0b29sdGlwLWZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9dG9vbHRpcC1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH10b29sdGlwLWNvbG9yOiAjeyR0b29sdGlwLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1iZzogI3skdG9vbHRpcC1iZ307XG4gIC0tI3skcHJlZml4fXRvb2x0aXAtYm9yZGVyLXJhZGl1czogI3skdG9vbHRpcC1ib3JkZXItcmFkaXVzfTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1vcGFjaXR5OiAjeyR0b29sdGlwLW9wYWNpdHl9O1xuICAtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoOiAjeyR0b29sdGlwLWFycm93LXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy1oZWlnaHQ6ICN7JHRvb2x0aXAtYXJyb3ctaGVpZ2h0fTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCB0b29sdGlwLWNzcy12YXJzXG5cbiAgei1pbmRleDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtemluZGV4KTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LWhlaWdodCk7XG4gIG1hcmdpbjogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtbWFyZ2luKTtcbiAgQGluY2x1ZGUgZGVwcmVjYXRlKFwiYCR0b29sdGlwLW1hcmdpbmBcIiwgXCJ2NVwiLCBcInY1LnhcIiwgdHJ1ZSk7XG4gIC8vIE91ciBwYXJlbnQgZWxlbWVudCBjYW4gYmUgYXJiaXRyYXJ5IHNpbmNlIHRvb2x0aXBzIGFyZSBieSBkZWZhdWx0IGluc2VydGVkIGFzIGEgc2libGluZyBvZiB0aGVpciB0YXJnZXQgZWxlbWVudC5cbiAgLy8gU28gcmVzZXQgb3VyIGZvbnQgYW5kIHRleHQgcHJvcGVydGllcyB0byBhdm9pZCBpbmhlcml0aW5nIHdlaXJkIHZhbHVlcy5cbiAgQGluY2x1ZGUgcmVzZXQtdGV4dCgpO1xuICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fXRvb2x0aXAtZm9udC1zaXplKSk7XG4gIC8vIEFsbG93IGJyZWFraW5nIHZlcnkgbG9uZyB3b3JkcyBzbyB0aGV5IGRvbid0IG92ZXJmbG93IHRoZSB0b29sdGlwJ3MgYm91bmRzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgb3BhY2l0eTogMDtcblxuICAmLnNob3cgeyBvcGFjaXR5OiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1vcGFjaXR5KTsgfVxuXG4gIC50b29sdGlwLWFycm93IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctd2lkdGgpO1xuICAgIGhlaWdodDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctaGVpZ2h0KTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgfVxuICB9XG59XG5cbi5icy10b29sdGlwLXRvcCAudG9vbHRpcC1hcnJvdyB7XG4gIGJvdHRvbTogMDtcblxuICAmOjpiZWZvcmUge1xuICAgIHRvcDogLTFweDtcbiAgICBib3JkZXItd2lkdGg6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LWhlaWdodCkgY2FsYyh2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy13aWR0aCkgKiAuNSkgMDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1iZyk7XG4gIH1cbn1cblxuLyogcnRsOmJlZ2luOmlnbm9yZSAqL1xuLmJzLXRvb2x0aXAtZW5kIC50b29sdGlwLWFycm93IHtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LWhlaWdodCk7XG4gIGhlaWdodDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctd2lkdGgpO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgcmlnaHQ6IC0xcHg7XG4gICAgYm9yZGVyLXdpZHRoOiBjYWxjKHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy1oZWlnaHQpIGNhbGModmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctd2lkdGgpICogLjUpIDA7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1iZyk7XG4gIH1cbn1cblxuLyogcnRsOmVuZDppZ25vcmUgKi9cblxuLmJzLXRvb2x0aXAtYm90dG9tIC50b29sdGlwLWFycm93IHtcbiAgdG9wOiAwO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgYm90dG9tOiAtMXB4O1xuICAgIGJvcmRlci13aWR0aDogMCBjYWxjKHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy1oZWlnaHQpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWJnKTtcbiAgfVxufVxuXG4vKiBydGw6YmVnaW46aWdub3JlICovXG4uYnMtdG9vbHRpcC1zdGFydCAudG9vbHRpcC1hcnJvdyB7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtYXJyb3ctaGVpZ2h0KTtcbiAgaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy13aWR0aCk7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAtMXB4O1xuICAgIGJvcmRlci13aWR0aDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy13aWR0aCkgKiAuNSkgMCBjYWxjKHZhcigtLSN7JHByZWZpeH10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1hcnJvdy1oZWlnaHQpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1iZyk7XG4gIH1cbn1cblxuLyogcnRsOmVuZDppZ25vcmUgKi9cblxuLmJzLXRvb2x0aXAtYXV0byB7XG4gICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1cInRvcFwiXSB7XG4gICAgQGV4dGVuZCAuYnMtdG9vbHRpcC10b3A7XG4gIH1cbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePVwicmlnaHRcIl0ge1xuICAgIEBleHRlbmQgLmJzLXRvb2x0aXAtZW5kO1xuICB9XG4gICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1cImJvdHRvbVwiXSB7XG4gICAgQGV4dGVuZCAuYnMtdG9vbHRpcC1ib3R0b207XG4gIH1cbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gICAgQGV4dGVuZCAuYnMtdG9vbHRpcC1zdGFydDtcbiAgfVxufVxuXG4vLyBXcmFwcGVyIGZvciB0aGUgdG9vbHRpcCBjb250ZW50XG4udG9vbHRpcC1pbm5lciB7XG4gIG1heC13aWR0aDogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtbWF4LXdpZHRoKTtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtcGFkZGluZy15KSB2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1wYWRkaW5nLXgpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXRvb2x0aXAtY29sb3IpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH10b29sdGlwLWJnKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9dG9vbHRpcC1ib3JkZXItcmFkaXVzKSk7XG59XG4iLCJAbWl4aW4gcmVzZXQtdGV4dCB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYmFzZTtcbiAgLy8gV2UgZGVsaWJlcmF0ZWx5IGRvIE5PVCByZXNldCBmb250LXNpemUgb3Igb3ZlcmZsb3ctd3JhcCAvIHdvcmQtd3JhcC5cbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBGYWxsYmFjayBmb3Igd2hlcmUgYHN0YXJ0YCBpcyBub3Qgc3VwcG9ydGVkXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcbiAgd29yZC1icmVhazogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcbiAgbGluZS1icmVhazogYXV0bztcbn1cbiIsIi5wb3BvdmVyIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHBvcG92ZXItY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci16aW5kZXg6ICN7JHppbmRleC1wb3BvdmVyfTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1tYXgtd2lkdGg6ICN7JHBvcG92ZXItbWF4LXdpZHRofTtcbiAgQGluY2x1ZGUgcmZzKCRwb3BvdmVyLWZvbnQtc2l6ZSwgLS0jeyRwcmVmaXh9cG9wb3Zlci1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWJnOiAjeyRwb3BvdmVyLWJnfTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItd2lkdGg6ICN7JHBvcG92ZXItYm9yZGVyLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItY29sb3I6ICN7JHBvcG92ZXItYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItcmFkaXVzOiAjeyRwb3BvdmVyLWJvcmRlci1yYWRpdXN9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWlubmVyLWJvcmRlci1yYWRpdXM6ICN7JHBvcG92ZXItaW5uZXItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fXBvcG92ZXItYm94LXNoYWRvdzogI3skcG9wb3Zlci1ib3gtc2hhZG93fTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1oZWFkZXItcGFkZGluZy14OiAjeyRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXh9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWhlYWRlci1wYWRkaW5nLXk6ICN7JHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteX07XG4gIEBpbmNsdWRlIHJmcygkcG9wb3Zlci1oZWFkZXItZm9udC1zaXplLCAtLSN7JHByZWZpeH1wb3BvdmVyLWhlYWRlci1mb250LXNpemUpO1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWhlYWRlci1jb2xvcjogI3skcG9wb3Zlci1oZWFkZXItY29sb3J9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWhlYWRlci1iZzogI3skcG9wb3Zlci1oZWFkZXItYmd9O1xuICAtLSN7JHByZWZpeH1wb3BvdmVyLWJvZHktcGFkZGluZy14OiAjeyRwb3BvdmVyLWJvZHktcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1ib2R5LXBhZGRpbmcteTogI3skcG9wb3Zlci1ib2R5LXBhZGRpbmcteX07XG4gIC0tI3skcHJlZml4fXBvcG92ZXItYm9keS1jb2xvcjogI3skcG9wb3Zlci1ib2R5LWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy13aWR0aDogI3skcG9wb3Zlci1hcnJvdy13aWR0aH07XG4gIC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctaGVpZ2h0OiAjeyRwb3BvdmVyLWFycm93LWhlaWdodH07XG4gIC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItY29sb3IpO1xuICAvLyBzY3NzLWRvY3MtZW5kIHBvcG92ZXItY3NzLXZhcnNcblxuICB6LWluZGV4OiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci16aW5kZXgpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWF4LXdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1tYXgtd2lkdGgpO1xuICAvLyBPdXIgcGFyZW50IGVsZW1lbnQgY2FuIGJlIGFyYml0cmFyeSBzaW5jZSB0b29sdGlwcyBhcmUgYnkgZGVmYXVsdCBpbnNlcnRlZCBhcyBhIHNpYmxpbmcgb2YgdGhlaXIgdGFyZ2V0IGVsZW1lbnQuXG4gIC8vIFNvIHJlc2V0IG91ciBmb250IGFuZCB0ZXh0IHByb3BlcnRpZXMgdG8gYXZvaWQgaW5oZXJpdGluZyB3ZWlyZCB2YWx1ZXMuXG4gIEBpbmNsdWRlIHJlc2V0LXRleHQoKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWZvbnQtc2l6ZSkpO1xuICAvLyBBbGxvdyBicmVha2luZyB2ZXJ5IGxvbmcgd29yZHMgc28gdGhleSBkb24ndCBvdmVyZmxvdyB0aGUgcG9wb3ZlcidzIGJvdW5kc1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJnKTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci1jb2xvcik7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9yZGVyLXJhZGl1cykpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJveC1zaGFkb3cpKTtcblxuICAucG9wb3Zlci1hcnJvdyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LXdpZHRoKTtcbiAgICBoZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWhlaWdodCk7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItd2lkdGg6IDA7XG4gICAgfVxuICB9XG59XG5cbi5icy1wb3BvdmVyLXRvcCB7XG4gID4gLnBvcG92ZXItYXJyb3cge1xuICAgIGJvdHRvbTogY2FsYygtMSAqICh2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1oZWlnaHQpKSAtIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci13aWR0aCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJvcmRlci13aWR0aDogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctaGVpZ2h0KSBjYWxjKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LXdpZHRoKSAqIC41KSAwOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3R0b206IDA7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1ib3JkZXIpO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJvdHRvbTogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9yZGVyLXdpZHRoKTtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJnKTtcbiAgICB9XG4gIH1cbn1cblxuLyogcnRsOmJlZ2luOmlnbm9yZSAqL1xuLmJzLXBvcG92ZXItZW5kIHtcbiAgPiAucG9wb3Zlci1hcnJvdyB7XG4gICAgbGVmdDogY2FsYygtMSAqICh2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1oZWlnaHQpKSAtIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci13aWR0aCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIHdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1oZWlnaHQpO1xuICAgIGhlaWdodDogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctd2lkdGgpO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJvcmRlci13aWR0aDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy13aWR0aCkgKiAuNSkgdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctaGVpZ2h0KSBjYWxjKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LXdpZHRoKSAqIC41KSAwOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1ib3JkZXIpO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGxlZnQ6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci13aWR0aCk7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJnKTtcbiAgICB9XG4gIH1cbn1cblxuLyogcnRsOmVuZDppZ25vcmUgKi9cblxuLmJzLXBvcG92ZXItYm90dG9tIHtcbiAgPiAucG9wb3Zlci1hcnJvdyB7XG4gICAgdG9wOiBjYWxjKC0xICogKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWhlaWdodCkpIC0gdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9yZGVyLXdpZHRoKSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYm9yZGVyLXdpZHRoOiAwIGNhbGModmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctd2lkdGgpICogLjUpIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWhlaWdodCk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LWJvcmRlcik7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgdG9wOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItd2lkdGgpO1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYmcpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgd2lsbCByZW1vdmUgdGhlIHBvcG92ZXItaGVhZGVyJ3MgYm9yZGVyIGp1c3QgYmVsb3cgdGhlIGFycm93XG4gIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctd2lkdGgpO1xuICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LXdpZHRoKSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gICAgY29udGVudDogXCJcIjtcbiAgICBib3JkZXItYm90dG9tOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWhlYWRlci1iZyk7XG4gIH1cbn1cblxuLyogcnRsOmJlZ2luOmlnbm9yZSAqL1xuLmJzLXBvcG92ZXItc3RhcnQge1xuICA+IC5wb3BvdmVyLWFycm93IHtcbiAgICByaWdodDogY2FsYygtMSAqICh2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1oZWlnaHQpKSAtIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvcmRlci13aWR0aCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIHdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1oZWlnaHQpO1xuICAgIGhlaWdodDogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYXJyb3ctd2lkdGgpO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJvcmRlci13aWR0aDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy13aWR0aCkgKiAuNSkgMCBjYWxjKHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWFycm93LXdpZHRoKSAqIC41KSB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1oZWlnaHQpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1hcnJvdy1ib3JkZXIpO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHJpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItd2lkdGgpO1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJnKTtcbiAgICB9XG4gIH1cbn1cblxuLyogcnRsOmVuZDppZ25vcmUgKi9cblxuLmJzLXBvcG92ZXItYXV0byB7XG4gICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1cInRvcFwiXSB7XG4gICAgQGV4dGVuZCAuYnMtcG9wb3Zlci10b3A7XG4gIH1cbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePVwicmlnaHRcIl0ge1xuICAgIEBleHRlbmQgLmJzLXBvcG92ZXItZW5kO1xuICB9XG4gICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1cImJvdHRvbVwiXSB7XG4gICAgQGV4dGVuZCAuYnMtcG9wb3Zlci1ib3R0b207XG4gIH1cbiAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gICAgQGV4dGVuZCAuYnMtcG9wb3Zlci1zdGFydDtcbiAgfVxufVxuXG4vLyBPZmZzZXQgdGhlIHBvcG92ZXIgdG8gYWNjb3VudCBmb3IgdGhlIHBvcG92ZXIgYXJyb3dcbi5wb3BvdmVyLWhlYWRlciB7XG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWhlYWRlci1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWhlYWRlci1wYWRkaW5nLXgpO1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBSZXNldCB0aGUgZGVmYXVsdCBmcm9tIFJlYm9vdFxuICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLWZvbnQtc2l6ZSkpO1xuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItaGVhZGVyLWJnKTtcbiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1ib3JkZXItY29sb3IpO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9cG9wb3Zlci1pbm5lci1ib3JkZXItcmFkaXVzKSk7XG5cbiAgJjplbXB0eSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ucG9wb3Zlci1ib2R5IHtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fXBvcG92ZXItYm9keS1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvZHktcGFkZGluZy14KTtcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1wb3BvdmVyLWJvZHktY29sb3IpO1xufVxuIiwiLy8gTm90ZXMgb24gdGhlIGNsYXNzZXM6XG4vL1xuLy8gMS4gLmNhcm91c2VsLnBvaW50ZXItZXZlbnQgc2hvdWxkIGlkZWFsbHkgYmUgcGFuLXkgKHRvIGFsbG93IGZvciB1c2VycyB0byBzY3JvbGwgdmVydGljYWxseSlcbi8vICAgIGV2ZW4gd2hlbiB0aGVpciBzY3JvbGwgYWN0aW9uIHN0YXJ0ZWQgb24gYSBjYXJvdXNlbCwgYnV0IGZvciBjb21wYXRpYmlsaXR5ICh3aXRoIEZpcmVmb3gpXG4vLyAgICB3ZSdyZSBwcmV2ZW50aW5nIGFsbCBhY3Rpb25zIGluc3RlYWRcbi8vIDIuIFRoZSAuY2Fyb3VzZWwtaXRlbS1zdGFydCBhbmQgLmNhcm91c2VsLWl0ZW0tZW5kIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hlcmVcbi8vICAgIHRoZSBhY3RpdmUgc2xpZGUgaXMgaGVhZGluZy5cbi8vIDMuIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbSBpcyB0aGUgY3VycmVudCBzbGlkZS5cbi8vIDQuIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1zdGFydCBhbmQgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWVuZCBpcyB0aGUgY3VycmVudFxuLy8gICAgc2xpZGUgaW4gaXRzIGluLXRyYW5zaXRpb24gc3RhdGUuIE9ubHkgb25lIG9mIHRoZXNlIG9jY3VycyBhdCBhIHRpbWUuXG4vLyA1LiAuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tc3RhcnQgYW5kIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1lbmRcbi8vICAgIGlzIHRoZSB1cGNvbWluZyBzbGlkZSBpbiB0cmFuc2l0aW9uLlxuXG4uY2Fyb3VzZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5jYXJvdXNlbC5wb2ludGVyLWV2ZW50IHtcbiAgdG91Y2gtYWN0aW9uOiBwYW4teTtcbn1cblxuLmNhcm91c2VsLWlubmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcbn1cblxuLmNhcm91c2VsLWl0ZW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGZsb2F0OiBsZWZ0O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRjYXJvdXNlbC10cmFuc2l0aW9uKTtcbn1cblxuLmNhcm91c2VsLWl0ZW0uYWN0aXZlLFxuLmNhcm91c2VsLWl0ZW0tbmV4dCxcbi5jYXJvdXNlbC1pdGVtLXByZXYge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmNhcm91c2VsLWl0ZW0tbmV4dDpub3QoLmNhcm91c2VsLWl0ZW0tc3RhcnQpLFxuLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWVuZCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLmNhcm91c2VsLWl0ZW0tcHJldjpub3QoLmNhcm91c2VsLWl0ZW0tZW5kKSxcbi5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1zdGFydCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG59XG5cblxuLy9cbi8vIEFsdGVybmF0ZSB0cmFuc2l0aW9uc1xuLy9cblxuLmNhcm91c2VsLWZhZGUge1xuICAuY2Fyb3VzZWwtaXRlbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5O1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSxcbiAgLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLXN0YXJ0LFxuICAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tZW5kIHtcbiAgICB6LWluZGV4OiAxO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tc3RhcnQsXG4gIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1lbmQge1xuICAgIHotaW5kZXg6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMHMgJGNhcm91c2VsLXRyYW5zaXRpb24tZHVyYXRpb24pO1xuICB9XG59XG5cblxuLy9cbi8vIExlZnQvcmlnaHQgY29udHJvbHMgZm9yIG5hdlxuLy9cblxuLmNhcm91c2VsLWNvbnRyb2wtcHJldixcbi5jYXJvdXNlbC1jb250cm9sLW5leHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB6LWluZGV4OiAxO1xuICAvLyBVc2UgZmxleCBmb3IgYWxpZ25tZW50ICgxLTMpXG4gIGRpc3BsYXk6IGZsZXg7IC8vIDEuIGFsbG93IGZsZXggc3R5bGVzXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8vIDIuIHZlcnRpY2FsbHkgY2VudGVyIGNvbnRlbnRzXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvLyAzLiBob3Jpem9udGFsbHkgY2VudGVyIGNvbnRlbnRzXG4gIHdpZHRoOiAkY2Fyb3VzZWwtY29udHJvbC13aWR0aDtcbiAgcGFkZGluZzogMDtcbiAgY29sb3I6ICRjYXJvdXNlbC1jb250cm9sLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgb3BhY2l0eTogJGNhcm91c2VsLWNvbnRyb2wtb3BhY2l0eTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY2Fyb3VzZWwtY29udHJvbC10cmFuc2l0aW9uKTtcblxuICAvLyBIb3Zlci9mb2N1cyBzdGF0ZVxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBjb2xvcjogJGNhcm91c2VsLWNvbnRyb2wtY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG91dGxpbmU6IDA7XG4gICAgb3BhY2l0eTogJGNhcm91c2VsLWNvbnRyb2wtaG92ZXItb3BhY2l0eTtcbiAgfVxufVxuLmNhcm91c2VsLWNvbnRyb2wtcHJldiB7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGlmKCRlbmFibGUtZ3JhZGllbnRzLCBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoJGJsYWNrLCAuMjUpLCByZ2JhKCRibGFjaywgLjAwMSkpLCBudWxsKTtcbn1cbi5jYXJvdXNlbC1jb250cm9sLW5leHQge1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZC1pbWFnZTogaWYoJGVuYWJsZS1ncmFkaWVudHMsIGxpbmVhci1ncmFkaWVudCgyNzBkZWcsIHJnYmEoJGJsYWNrLCAuMjUpLCByZ2JhKCRibGFjaywgLjAwMSkpLCBudWxsKTtcbn1cblxuLy8gSWNvbnMgZm9yIHdpdGhpblxuLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uLFxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogJGNhcm91c2VsLWNvbnRyb2wtaWNvbi13aWR0aDtcbiAgaGVpZ2h0OiAkY2Fyb3VzZWwtY29udHJvbC1pY29uLXdpZHRoO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuXG4vKiBydGw6b3B0aW9uczoge1xuICBcImF1dG9SZW5hbWVcIjogdHJ1ZSxcbiAgXCJzdHJpbmdNYXBcIjpbIHtcbiAgICBcIm5hbWVcIiAgICA6IFwicHJldi1uZXh0XCIsXG4gICAgXCJzZWFyY2hcIiAgOiBcInByZXZcIixcbiAgICBcInJlcGxhY2VcIiA6IFwibmV4dFwiXG4gIH0gXVxufSAqL1xuLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogZXNjYXBlLXN2ZygkY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24tYmcpO1xufVxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogZXNjYXBlLXN2ZygkY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24tYmcpO1xufVxuXG4vLyBPcHRpb25hbCBpbmRpY2F0b3IgcGlwcy9jb250cm9sc1xuLy9cbi8vIEFkZCBhIGNvbnRhaW5lciAoc3VjaCBhcyBhIGxpc3QpIHdpdGggdGhlIGZvbGxvd2luZyBjbGFzcyBhbmQgYWRkIGFuIGl0ZW0gKGlkZWFsbHkgYSBmb2N1c2FibGUgY29udHJvbCxcbi8vIGxpa2UgYSBidXR0b24pIHdpdGggZGF0YS1icy10YXJnZXQgZm9yIGVhY2ggc2xpZGUgeW91ciBjYXJvdXNlbCBob2xkcy5cblxuLmNhcm91c2VsLWluZGljYXRvcnMge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAwO1xuICAvLyBVc2UgdGhlIC5jYXJvdXNlbC1jb250cm9sJ3Mgd2lkdGggYXMgbWFyZ2luIHNvIHdlIGRvbid0IG92ZXJsYXkgdGhvc2VcbiAgbWFyZ2luLXJpZ2h0OiAkY2Fyb3VzZWwtY29udHJvbC13aWR0aDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgbWFyZ2luLWxlZnQ6ICRjYXJvdXNlbC1jb250cm9sLXdpZHRoO1xuICBsaXN0LXN0eWxlOiBub25lO1xuXG4gIFtkYXRhLWJzLXRhcmdldF0ge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAkY2Fyb3VzZWwtaW5kaWNhdG9yLXdpZHRoO1xuICAgIGhlaWdodDogJGNhcm91c2VsLWluZGljYXRvci1oZWlnaHQ7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tcmlnaHQ6ICRjYXJvdXNlbC1pbmRpY2F0b3Itc3BhY2VyO1xuICAgIG1hcmdpbi1sZWZ0OiAkY2Fyb3VzZWwtaW5kaWNhdG9yLXNwYWNlcjtcbiAgICB0ZXh0LWluZGVudDogLTk5OXB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2Fyb3VzZWwtaW5kaWNhdG9yLWFjdGl2ZS1iZztcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgIGJvcmRlcjogMDtcbiAgICAvLyBVc2UgdHJhbnNwYXJlbnQgYm9yZGVycyB0byBpbmNyZWFzZSB0aGUgaGl0IGFyZWEgYnkgMTBweCBvbiB0b3AgYW5kIGJvdHRvbS5cbiAgICBib3JkZXItdG9wOiAkY2Fyb3VzZWwtaW5kaWNhdG9yLWhpdC1hcmVhLWhlaWdodCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tOiAkY2Fyb3VzZWwtaW5kaWNhdG9yLWhpdC1hcmVhLWhlaWdodCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBvcGFjaXR5OiAkY2Fyb3VzZWwtaW5kaWNhdG9yLW9wYWNpdHk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY2Fyb3VzZWwtaW5kaWNhdG9yLXRyYW5zaXRpb24pO1xuICB9XG5cbiAgLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogJGNhcm91c2VsLWluZGljYXRvci1hY3RpdmUtb3BhY2l0eTtcbiAgfVxufVxuXG5cbi8vIE9wdGlvbmFsIGNhcHRpb25zXG4vL1xuLy9cblxuLmNhcm91c2VsLWNhcHRpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAoMTAwJSAtICRjYXJvdXNlbC1jYXB0aW9uLXdpZHRoKSAqIC41O1xuICBib3R0b206ICRjYXJvdXNlbC1jYXB0aW9uLXNwYWNlcjtcbiAgbGVmdDogKDEwMCUgLSAkY2Fyb3VzZWwtY2FwdGlvbi13aWR0aCkgKiAuNTtcbiAgcGFkZGluZy10b3A6ICRjYXJvdXNlbC1jYXB0aW9uLXBhZGRpbmcteTtcbiAgcGFkZGluZy1ib3R0b206ICRjYXJvdXNlbC1jYXB0aW9uLXBhZGRpbmcteTtcbiAgY29sb3I6ICRjYXJvdXNlbC1jYXB0aW9uLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8vIERhcmsgbW9kZSBjYXJvdXNlbFxuXG4uY2Fyb3VzZWwtZGFyayB7XG4gIC5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbixcbiAgLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHtcbiAgICBmaWx0ZXI6ICRjYXJvdXNlbC1kYXJrLWNvbnRyb2wtaWNvbi1maWx0ZXI7XG4gIH1cblxuICAuY2Fyb3VzZWwtaW5kaWNhdG9ycyBbZGF0YS1icy10YXJnZXRdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2Fyb3VzZWwtZGFyay1pbmRpY2F0b3ItYWN0aXZlLWJnO1xuICB9XG5cbiAgLmNhcm91c2VsLWNhcHRpb24ge1xuICAgIGNvbG9yOiAkY2Fyb3VzZWwtZGFyay1jYXB0aW9uLWNvbG9yO1xuICB9XG59XG4iLCIvLyBzY3NzLWRvY3Mtc3RhcnQgY2xlYXJmaXhcbkBtaXhpbiBjbGVhcmZpeCgpIHtcbiAgJjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgY2xlYXJmaXhcbiIsIi8vXG4vLyBSb3RhdGluZyBib3JkZXJcbi8vXG5cbi5zcGlubmVyLWdyb3csXG4uc3Bpbm5lci1ib3JkZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9c3Bpbm5lci13aWR0aCk7XG4gIGhlaWdodDogdmFyKC0tI3skcHJlZml4fXNwaW5uZXItaGVpZ2h0KTtcbiAgdmVydGljYWwtYWxpZ246IHZhcigtLSN7JHByZWZpeH1zcGlubmVyLXZlcnRpY2FsLWFsaWduKTtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWRpc2FsbG93ZWQtbGlzdFxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogdmFyKC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkKSBsaW5lYXIgaW5maW5pdGUgdmFyKC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLW5hbWUpO1xufVxuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgc3Bpbm5lci1ib3JkZXIta2V5ZnJhbWVzXG5Aa2V5ZnJhbWVzIHNwaW5uZXItYm9yZGVyIHtcbiAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpICN7XCIvKiBydGw6aWdub3JlICovXCJ9OyB9XG59XG4vLyBzY3NzLWRvY3MtZW5kIHNwaW5uZXItYm9yZGVyLWtleWZyYW1lc1xuXG4uc3Bpbm5lci1ib3JkZXIge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgc3Bpbm5lci1ib3JkZXItY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci13aWR0aDogI3skc3Bpbm5lci13aWR0aH07XG4gIC0tI3skcHJlZml4fXNwaW5uZXItaGVpZ2h0OiAjeyRzcGlubmVyLWhlaWdodH07XG4gIC0tI3skcHJlZml4fXNwaW5uZXItdmVydGljYWwtYWxpZ246ICN7JHNwaW5uZXItdmVydGljYWwtYWxpZ259O1xuICAtLSN7JHByZWZpeH1zcGlubmVyLWJvcmRlci13aWR0aDogI3skc3Bpbm5lci1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1zcGlubmVyLWFuaW1hdGlvbi1zcGVlZDogI3skc3Bpbm5lci1hbmltYXRpb24tc3BlZWR9O1xuICAtLSN7JHByZWZpeH1zcGlubmVyLWFuaW1hdGlvbi1uYW1lOiBzcGlubmVyLWJvcmRlcjtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBzcGlubmVyLWJvcmRlci1jc3MtdmFyc1xuXG4gIGJvcmRlcjogdmFyKC0tI3skcHJlZml4fXNwaW5uZXItYm9yZGVyLXdpZHRoKSBzb2xpZCBjdXJyZW50Y29sb3I7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5zcGlubmVyLWJvcmRlci1zbSB7XG4gIC8vIHNjc3MtZG9jcy1zdGFydCBzcGlubmVyLWJvcmRlci1zbS1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1zcGlubmVyLXdpZHRoOiAjeyRzcGlubmVyLXdpZHRoLXNtfTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQ6ICN7JHNwaW5uZXItaGVpZ2h0LXNtfTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1ib3JkZXItd2lkdGg6ICN7JHNwaW5uZXItYm9yZGVyLXdpZHRoLXNtfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBzcGlubmVyLWJvcmRlci1zbS1jc3MtdmFyc1xufVxuXG4vL1xuLy8gR3Jvd2luZyBjaXJjbGVcbi8vXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBzcGlubmVyLWdyb3cta2V5ZnJhbWVzXG5Aa2V5ZnJhbWVzIHNwaW5uZXItZ3JvdyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgc3Bpbm5lci1ncm93LWtleWZyYW1lc1xuXG4uc3Bpbm5lci1ncm93IHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHNwaW5uZXItZ3Jvdy1jc3MtdmFyc1xuICAtLSN7JHByZWZpeH1zcGlubmVyLXdpZHRoOiAjeyRzcGlubmVyLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQ6ICN7JHNwaW5uZXItaGVpZ2h0fTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci12ZXJ0aWNhbC1hbGlnbjogI3skc3Bpbm5lci12ZXJ0aWNhbC1hbGlnbn07XG4gIC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkOiAjeyRzcGlubmVyLWFuaW1hdGlvbi1zcGVlZH07XG4gIC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLW5hbWU6IHNwaW5uZXItZ3JvdztcbiAgLy8gc2Nzcy1kb2NzLWVuZCBzcGlubmVyLWdyb3ctY3NzLXZhcnNcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Y29sb3I7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5zcGlubmVyLWdyb3ctc20ge1xuICAtLSN7JHByZWZpeH1zcGlubmVyLXdpZHRoOiAjeyRzcGlubmVyLXdpZHRoLXNtfTtcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQ6ICN7JHNwaW5uZXItaGVpZ2h0LXNtfTtcbn1cblxuQGlmICRlbmFibGUtcmVkdWNlZC1tb3Rpb24ge1xuICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIC5zcGlubmVyLWJvcmRlcixcbiAgICAuc3Bpbm5lci1ncm93IHtcbiAgICAgIC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkOiAjeyRzcGlubmVyLWFuaW1hdGlvbi1zcGVlZCAqIDJ9O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG5cbiVvZmZjYW52YXMtY3NzLXZhcnMge1xuICAvLyBzY3NzLWRvY3Mtc3RhcnQgb2ZmY2FudmFzLWNzcy12YXJzXG4gIC0tI3skcHJlZml4fW9mZmNhbnZhcy16aW5kZXg6ICN7JHppbmRleC1vZmZjYW52YXN9O1xuICAtLSN7JHByZWZpeH1vZmZjYW52YXMtd2lkdGg6ICN7JG9mZmNhbnZhcy1ob3Jpem9udGFsLXdpZHRofTtcbiAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWhlaWdodDogI3skb2ZmY2FudmFzLXZlcnRpY2FsLWhlaWdodH07XG4gIC0tI3skcHJlZml4fW9mZmNhbnZhcy1wYWRkaW5nLXg6ICN7JG9mZmNhbnZhcy1wYWRkaW5nLXh9O1xuICAtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy15OiAjeyRvZmZjYW52YXMtcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWNvbG9yOiAjeyRvZmZjYW52YXMtY29sb3J9O1xuICAtLSN7JHByZWZpeH1vZmZjYW52YXMtYmc6ICN7JG9mZmNhbnZhcy1iZy1jb2xvcn07XG4gIC0tI3skcHJlZml4fW9mZmNhbnZhcy1ib3JkZXItd2lkdGg6ICN7JG9mZmNhbnZhcy1ib3JkZXItd2lkdGh9O1xuICAtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLWNvbG9yOiAjeyRvZmZjYW52YXMtYm9yZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJveC1zaGFkb3c6ICN7JG9mZmNhbnZhcy1ib3gtc2hhZG93fTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBvZmZjYW52YXMtY3NzLXZhcnNcbn1cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJG5leHQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAub2ZmY2FudmFzI3skaW5maXh9IHtcbiAgICBAZXh0ZW5kICVvZmZjYW52YXMtY3NzLXZhcnM7XG4gIH1cbn1cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJG5leHQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAub2ZmY2FudmFzI3skaW5maXh9IHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQpIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIHotaW5kZXg6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtemluZGV4KTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtY29sb3IpO1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1iZyk7XG4gICAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgICAgb3V0bGluZTogMDtcbiAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3codmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1ib3gtc2hhZG93KSk7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tZHVyYXRpb24gZWFzZS1pbi1vdXQpO1xuXG4gICAgICAmLm9mZmNhbnZhcy1zdGFydCB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtd2lkdGgpO1xuICAgICAgICBib3JkZXItcmlnaHQ6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJvcmRlci1jb2xvcik7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgICB9XG5cbiAgICAgICYub2ZmY2FudmFzLWVuZCB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHdpZHRoOiB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLXdpZHRoKTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJvcmRlci1jb2xvcik7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAgIH1cblxuICAgICAgJi5vZmZjYW52YXMtdG9wIHtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWhlaWdodCk7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJvcmRlci1jb2xvcik7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG4gICAgICB9XG5cbiAgICAgICYub2ZmY2FudmFzLWJvdHRvbSB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtaGVpZ2h0KTtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXRvcDogdmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgfVxuXG4gICAgICAmLnNob3dpbmcsXG4gICAgICAmLnNob3c6bm90KC5oaWRpbmcpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgfVxuXG4gICAgICAmLnNob3dpbmcsXG4gICAgICAmLmhpZGluZyxcbiAgICAgICYuc2hvdyB7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmIG5vdCAoJGluZml4ID09IFwiXCIpIHtcbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5leHQpIHtcbiAgICAgICAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWhlaWdodDogYXV0bztcbiAgICAgICAgLS0jeyRwcmVmaXh9b2ZmY2FudmFzLWJvcmRlci13aWR0aDogMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuICAgICAgICAub2ZmY2FudmFzLWhlYWRlciB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5vZmZjYW52YXMtYm9keSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWdyb3c6IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBvdmVyZmxvdy15OiB2aXNpYmxlO1xuICAgICAgICAgIC8vIFJlc2V0IGBiYWNrZ3JvdW5kLWNvbG9yYCBpbiBjYXNlIGAuYmctKmAgY2xhc3NlcyBhcmUgdXNlZCBpbiBvZmZjYW52YXNcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5vZmZjYW52YXMtYmFja2Ryb3Age1xuICBAaW5jbHVkZSBvdmVybGF5LWJhY2tkcm9wKCR6aW5kZXgtb2ZmY2FudmFzLWJhY2tkcm9wLCAkb2ZmY2FudmFzLWJhY2tkcm9wLWJnLCAkb2ZmY2FudmFzLWJhY2tkcm9wLW9wYWNpdHkpO1xufVxuXG4ub2ZmY2FudmFzLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy14KTtcblxuICAuYnRuLWNsb3NlIHtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy15KSAqIC41KSBjYWxjKHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy14KSAqIC41KTtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy15KSk7XG4gICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1vZmZjYW52YXMtcGFkZGluZy14KSk7XG4gICAgbWFyZ2luLWJvdHRvbTogY2FsYygtLjUgKiB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLXBhZGRpbmcteSkpO1xuICB9XG59XG5cbi5vZmZjYW52YXMtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBsaW5lLWhlaWdodDogJG9mZmNhbnZhcy10aXRsZS1saW5lLWhlaWdodDtcbn1cblxuLm9mZmNhbnZhcy1ib2R5IHtcbiAgZmxleC1ncm93OiAxO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9b2ZmY2FudmFzLXBhZGRpbmcteSkgdmFyKC0tI3skcHJlZml4fW9mZmNhbnZhcy1wYWRkaW5nLXgpO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuIiwiLnBsYWNlaG9sZGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtaW4taGVpZ2h0OiAxZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGN1cnNvcjogd2FpdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudGNvbG9yO1xuICBvcGFjaXR5OiAkcGxhY2Vob2xkZXItb3BhY2l0eS1tYXg7XG5cbiAgJi5idG46OmJlZm9yZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cbn1cblxuLy8gU2l6aW5nXG4ucGxhY2Vob2xkZXIteHMge1xuICBtaW4taGVpZ2h0OiAuNmVtO1xufVxuXG4ucGxhY2Vob2xkZXItc20ge1xuICBtaW4taGVpZ2h0OiAuOGVtO1xufVxuXG4ucGxhY2Vob2xkZXItbGcge1xuICBtaW4taGVpZ2h0OiAxLjJlbTtcbn1cblxuLy8gQW5pbWF0aW9uXG4ucGxhY2Vob2xkZXItZ2xvdyB7XG4gIC5wbGFjZWhvbGRlciB7XG4gICAgYW5pbWF0aW9uOiBwbGFjZWhvbGRlci1nbG93IDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgcGxhY2Vob2xkZXItZ2xvdyB7XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogJHBsYWNlaG9sZGVyLW9wYWNpdHktbWluO1xuICB9XG59XG5cbi5wbGFjZWhvbGRlci13YXZlIHtcbiAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEzMGRlZywgJGJsYWNrIDU1JSwgcmdiYSgwLCAwLCAwLCAoMSAtICRwbGFjZWhvbGRlci1vcGFjaXR5LW1pbikpIDc1JSwgJGJsYWNrIDk1JSk7XG4gIG1hc2stc2l6ZTogMjAwJSAxMDAlO1xuICBhbmltYXRpb246IHBsYWNlaG9sZGVyLXdhdmUgMnMgbGluZWFyIGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyLXdhdmUge1xuICAxMDAlIHtcbiAgICBtYXNrLXBvc2l0aW9uOiAtMjAwJSAwJTtcbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZnVuY3Rpb24tbmFtZS1jYXNlXG5cbi8vIEFsbC1jYXBzIGBSR0JBKClgIGZ1bmN0aW9uIHVzZWQgYmVjYXVzZSBvZiB0aGlzIFNhc3MgYnVnOiBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy9ub2RlLXNhc3MvaXNzdWVzLzIyNTFcbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAkY29sb3ItcmdiOiB0by1yZ2IoJHZhbHVlKTtcbiAgLnRleHQtYmctI3skY29sb3J9IHtcbiAgICBjb2xvcjogY29sb3ItY29udHJhc3QoJHZhbHVlKSBpZigkZW5hYmxlLWltcG9ydGFudC11dGlsaXRpZXMsICFpbXBvcnRhbnQsIG51bGwpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IFJHQkEoJGNvbG9yLXJnYiwgdmFyKC0tI3skcHJlZml4fWJnLW9wYWNpdHksIDEpKSBpZigkZW5hYmxlLWltcG9ydGFudC11dGlsaXRpZXMsICFpbXBvcnRhbnQsIG51bGwpO1xuICB9XG59XG4iLCJAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgLmxpbmstI3skY29sb3J9IHtcbiAgICBjb2xvcjogJHZhbHVlICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbiAgICBAaWYgJGxpbmstc2hhZGUtcGVyY2VudGFnZSAhPSAwIHtcbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6IGlmKGNvbG9yLWNvbnRyYXN0KCR2YWx1ZSkgPT0gJGNvbG9yLWNvbnRyYXN0LWxpZ2h0LCBzaGFkZS1jb2xvcigkdmFsdWUsICRsaW5rLXNoYWRlLXBlcmNlbnRhZ2UpLCB0aW50LWNvbG9yKCR2YWx1ZSwgJGxpbmstc2hhZGUtcGVyY2VudGFnZSkpICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBDcmVkaXQ6IE5pY29sYXMgR2FsbGFnaGVyIGFuZCBTVUlUIENTUy5cblxuLnJhdGlvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcblxuICAmOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS0jeyRwcmVmaXh9YXNwZWN0LXJhdGlvKTtcbiAgICBjb250ZW50OiBcIlwiO1xuICB9XG5cbiAgPiAqIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG59XG5cbkBlYWNoICRrZXksICRyYXRpbyBpbiAkYXNwZWN0LXJhdGlvcyB7XG4gIC5yYXRpby0jeyRrZXl9IHtcbiAgICAtLSN7JHByZWZpeH1hc3BlY3QtcmF0aW86ICN7JHJhdGlvfTtcbiAgfVxufVxuIiwiLy8gU2hvcnRoYW5kXG5cbi5maXhlZC10b3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtZml4ZWQ7XG59XG5cbi5maXhlZC1ib3R0b20ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtZml4ZWQ7XG59XG5cbi8vIFJlc3BvbnNpdmUgc3RpY2t5IHRvcCBhbmQgYm90dG9tXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAuc3RpY2t5I3skaW5maXh9LXRvcCB7XG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgdG9wOiAwO1xuICAgICAgei1pbmRleDogJHppbmRleC1zdGlja3k7XG4gICAgfVxuXG4gICAgLnN0aWNreSN7JGluZml4fS1ib3R0b20ge1xuICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIHotaW5kZXg6ICR6aW5kZXgtc3RpY2t5O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc2Nzcy1kb2NzLXN0YXJ0IHN0YWNrc1xuLmhzdGFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG59XG5cbi52c3RhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxIDEgYXV0bztcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbn1cbi8vIHNjc3MtZG9jcy1lbmQgc3RhY2tzXG4iLCIvL1xuLy8gVmlzdWFsbHkgaGlkZGVuXG4vL1xuXG4udmlzdWFsbHktaGlkZGVuLFxuLnZpc3VhbGx5LWhpZGRlbi1mb2N1c2FibGU6bm90KDpmb2N1cyk6bm90KDpmb2N1cy13aXRoaW4pIHtcbiAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy8gSGlkZSBjb250ZW50IHZpc3VhbGx5IHdoaWxlIGtlZXBpbmcgaXQgYWNjZXNzaWJsZSB0byBhc3Npc3RpdmUgdGVjaG5vbG9naWVzXG4vL1xuLy8gU2VlOiBodHRwczovL3d3dy5hMTF5cHJvamVjdC5jb20vcG9zdHMvMjAxMy0wMS0xMS1ob3ctdG8taGlkZS1jb250ZW50L1xuLy8gU2VlOiBodHRwczovL2tpdHR5Z2lyYXVkZWwuY29tLzIwMTYvMTAvMTMvY3NzLWhpZGUtYW5kLXNlZWsvXG5cbkBtaXhpbiB2aXN1YWxseS1oaWRkZW4oKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7IC8vIEZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNTY4NlxuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCkgIWltcG9ydGFudDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbn1cblxuLy8gVXNlIHRvIG9ubHkgZGlzcGxheSBjb250ZW50IHdoZW4gaXQncyBmb2N1c2VkLCBvciBvbmUgb2YgaXRzIGNoaWxkIGVsZW1lbnRzIGlzIGZvY3VzZWRcbi8vIChpLmUuIHdoZW4gZm9jdXMgaXMgd2l0aGluIHRoZSBlbGVtZW50L2NvbnRhaW5lciB0aGF0IHRoZSBjbGFzcyB3YXMgYXBwbGllZCB0bylcbi8vXG4vLyBVc2VmdWwgZm9yIFwiU2tpcCB0byBtYWluIGNvbnRlbnRcIiBsaW5rczsgc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDEzL05PVEUtV0NBRzIwLVRFQ0hTLTIwMTMwOTA1L0cxXG5cbkBtaXhpbiB2aXN1YWxseS1oaWRkZW4tZm9jdXNhYmxlKCkge1xuICAmOm5vdCg6Zm9jdXMpOm5vdCg6Zm9jdXMtd2l0aGluKSB7XG4gICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gIH1cbn1cbiIsIi8vXG4vLyBTdHJldGNoZWQgbGlua1xuLy9cblxuLnN0cmV0Y2hlZC1saW5rIHtcbiAgJjo6I3skc3RyZXRjaGVkLWxpbmstcHNldWRvLWVsZW1lbnR9IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6ICRzdHJldGNoZWQtbGluay16LWluZGV4O1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cbn1cbiIsIi8vXG4vLyBUZXh0IHRydW5jYXRpb25cbi8vXG5cbi50ZXh0LXRydW5jYXRlIHtcbiAgQGluY2x1ZGUgdGV4dC10cnVuY2F0ZSgpO1xufVxuIiwiLy8gVGV4dCB0cnVuY2F0ZVxuLy8gUmVxdWlyZXMgaW5saW5lLWJsb2NrIG9yIGJsb2NrIGZvciBwcm9wZXIgc3R5bGluZ1xuXG5AbWl4aW4gdGV4dC10cnVuY2F0ZSgpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4iLCIudnIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIHdpZHRoOiAxcHg7XG4gIG1pbi1oZWlnaHQ6IDFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudGNvbG9yO1xuICBvcGFjaXR5OiAkaHItb3BhY2l0eTtcbn1cbiIsIi8vIFV0aWxpdHkgZ2VuZXJhdG9yXG4vLyBVc2VkIHRvIGdlbmVyYXRlIHV0aWxpdGllcyAmIHByaW50IHV0aWxpdGllc1xuQG1peGluIGdlbmVyYXRlLXV0aWxpdHkoJHV0aWxpdHksICRpbmZpeCwgJGlzLXJmcy1tZWRpYS1xdWVyeTogZmFsc2UpIHtcbiAgJHZhbHVlczogbWFwLWdldCgkdXRpbGl0eSwgdmFsdWVzKTtcblxuICAvLyBJZiB0aGUgdmFsdWVzIGFyZSBhIGxpc3Qgb3Igc3RyaW5nLCBjb252ZXJ0IGl0IGludG8gYSBtYXBcbiAgQGlmIHR5cGUtb2YoJHZhbHVlcykgPT0gXCJzdHJpbmdcIiBvciB0eXBlLW9mKG50aCgkdmFsdWVzLCAxKSkgIT0gXCJsaXN0XCIge1xuICAgICR2YWx1ZXM6IHppcCgkdmFsdWVzLCAkdmFsdWVzKTtcbiAgfVxuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkdmFsdWVzIHtcbiAgICAkcHJvcGVydGllczogbWFwLWdldCgkdXRpbGl0eSwgcHJvcGVydHkpO1xuXG4gICAgLy8gTXVsdGlwbGUgcHJvcGVydGllcyBhcmUgcG9zc2libGUsIGZvciBleGFtcGxlIHdpdGggdmVydGljYWwgb3IgaG9yaXpvbnRhbCBtYXJnaW5zIG9yIHBhZGRpbmdzXG4gICAgQGlmIHR5cGUtb2YoJHByb3BlcnRpZXMpID09IFwic3RyaW5nXCIge1xuICAgICAgJHByb3BlcnRpZXM6IGFwcGVuZCgoKSwgJHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIC8vIFVzZSBjdXN0b20gY2xhc3MgaWYgcHJlc2VudFxuICAgICRwcm9wZXJ0eS1jbGFzczogaWYobWFwLWhhcy1rZXkoJHV0aWxpdHksIGNsYXNzKSwgbWFwLWdldCgkdXRpbGl0eSwgY2xhc3MpLCBudGgoJHByb3BlcnRpZXMsIDEpKTtcbiAgICAkcHJvcGVydHktY2xhc3M6IGlmKCRwcm9wZXJ0eS1jbGFzcyA9PSBudWxsLCBcIlwiLCAkcHJvcGVydHktY2xhc3MpO1xuXG4gICAgLy8gVXNlIGN1c3RvbSBDU1MgdmFyaWFibGUgbmFtZSBpZiBwcmVzZW50LCBvdGhlcndpc2UgZGVmYXVsdCB0byBgY2xhc3NgXG4gICAgJGNzcy12YXJpYWJsZS1uYW1lOiBpZihtYXAtaGFzLWtleSgkdXRpbGl0eSwgY3NzLXZhcmlhYmxlLW5hbWUpLCBtYXAtZ2V0KCR1dGlsaXR5LCBjc3MtdmFyaWFibGUtbmFtZSksIG1hcC1nZXQoJHV0aWxpdHksIGNsYXNzKSk7XG5cbiAgICAvLyBTdGF0ZSBwYXJhbXMgdG8gZ2VuZXJhdGUgcHNldWRvLWNsYXNzZXNcbiAgICAkc3RhdGU6IGlmKG1hcC1oYXMta2V5KCR1dGlsaXR5LCBzdGF0ZSksIG1hcC1nZXQoJHV0aWxpdHksIHN0YXRlKSwgKCkpO1xuXG4gICAgJGluZml4OiBpZigkcHJvcGVydHktY2xhc3MgPT0gXCJcIiBhbmQgc3RyLXNsaWNlKCRpbmZpeCwgMSwgMSkgPT0gXCItXCIsIHN0ci1zbGljZSgkaW5maXgsIDIpLCAkaW5maXgpO1xuXG4gICAgLy8gRG9uJ3QgcHJlZml4IGlmIHZhbHVlIGtleSBpcyBudWxsIChlLmcuIHdpdGggc2hhZG93IGNsYXNzKVxuICAgICRwcm9wZXJ0eS1jbGFzcy1tb2RpZmllcjogaWYoJGtleSwgaWYoJHByb3BlcnR5LWNsYXNzID09IFwiXCIgYW5kICRpbmZpeCA9PSBcIlwiLCBcIlwiLCBcIi1cIikgKyAka2V5LCBcIlwiKTtcblxuICAgIEBpZiBtYXAtZ2V0KCR1dGlsaXR5LCByZnMpIHtcbiAgICAgIC8vIEluc2lkZSB0aGUgbWVkaWEgcXVlcnlcbiAgICAgIEBpZiAkaXMtcmZzLW1lZGlhLXF1ZXJ5IHtcbiAgICAgICAgJHZhbDogcmZzLXZhbHVlKCR2YWx1ZSk7XG5cbiAgICAgICAgLy8gRG8gbm90IHJlbmRlciBhbnl0aGluZyBpZiBmbHVpZCBhbmQgbm9uIGZsdWlkIHZhbHVlcyBhcmUgdGhlIHNhbWVcbiAgICAgICAgJHZhbHVlOiBpZigkdmFsID09IHJmcy1mbHVpZC12YWx1ZSgkdmFsdWUpLCBudWxsLCAkdmFsKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHZhbHVlOiByZnMtZmx1aWQtdmFsdWUoJHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkaXMtY3NzLXZhcjogbWFwLWdldCgkdXRpbGl0eSwgY3NzLXZhcik7XG4gICAgJGlzLWxvY2FsLXZhcnM6IG1hcC1nZXQoJHV0aWxpdHksIGxvY2FsLXZhcnMpO1xuICAgICRpcy1ydGw6IG1hcC1nZXQoJHV0aWxpdHksIHJ0bCk7XG5cbiAgICBAaWYgJHZhbHVlICE9IG51bGwge1xuICAgICAgQGlmICRpcy1ydGwgPT0gZmFsc2Uge1xuICAgICAgICAvKiBydGw6YmVnaW46cmVtb3ZlICovXG4gICAgICB9XG5cbiAgICAgIEBpZiAkaXMtY3NzLXZhciB7XG4gICAgICAgIC4jeyRwcm9wZXJ0eS1jbGFzcyArICRpbmZpeCArICRwcm9wZXJ0eS1jbGFzcy1tb2RpZmllcn0ge1xuICAgICAgICAgIC0tI3skcHJlZml4fSN7JGNzcy12YXJpYWJsZS1uYW1lfTogI3skdmFsdWV9O1xuICAgICAgICB9XG5cbiAgICAgICAgQGVhY2ggJHBzZXVkbyBpbiAkc3RhdGUge1xuICAgICAgICAgIC4jeyRwcm9wZXJ0eS1jbGFzcyArICRpbmZpeCArICRwcm9wZXJ0eS1jbGFzcy1tb2RpZmllcn0tI3skcHNldWRvfTojeyRwc2V1ZG99IHtcbiAgICAgICAgICAgIC0tI3skcHJlZml4fSN7JGNzcy12YXJpYWJsZS1uYW1lfTogI3skdmFsdWV9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC4jeyRwcm9wZXJ0eS1jbGFzcyArICRpbmZpeCArICRwcm9wZXJ0eS1jbGFzcy1tb2RpZmllcn0ge1xuICAgICAgICAgIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgICAgICAgICBAaWYgJGlzLWxvY2FsLXZhcnMge1xuICAgICAgICAgICAgICBAZWFjaCAkbG9jYWwtdmFyLCAkdmFyaWFibGUgaW4gJGlzLWxvY2FsLXZhcnMge1xuICAgICAgICAgICAgICAgIC0tI3skcHJlZml4fSN7JGxvY2FsLXZhcn06ICN7JHZhcmlhYmxlfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWUgaWYoJGVuYWJsZS1pbXBvcnRhbnQtdXRpbGl0aWVzLCAhaW1wb3J0YW50LCBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkcHNldWRvIGluICRzdGF0ZSB7XG4gICAgICAgICAgLiN7JHByb3BlcnR5LWNsYXNzICsgJGluZml4ICsgJHByb3BlcnR5LWNsYXNzLW1vZGlmaWVyfS0jeyRwc2V1ZG99OiN7JHBzZXVkb30ge1xuICAgICAgICAgICAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAgICAgICAgICAgQGlmICRpcy1sb2NhbC12YXJzIHtcbiAgICAgICAgICAgICAgICBAZWFjaCAkbG9jYWwtdmFyLCAkdmFyaWFibGUgaW4gJGlzLWxvY2FsLXZhcnMge1xuICAgICAgICAgICAgICAgICAgLS0jeyRwcmVmaXh9I3skbG9jYWwtdmFyfTogI3skdmFyaWFibGV9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZSBpZigkZW5hYmxlLWltcG9ydGFudC11dGlsaXRpZXMsICFpbXBvcnRhbnQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgJGlzLXJ0bCA9PSBmYWxzZSB7XG4gICAgICAgIC8qIHJ0bDplbmQ6cmVtb3ZlICovXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBMb29wIG92ZXIgZWFjaCBicmVha3BvaW50XG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuXG4gIC8vIEdlbmVyYXRlIG1lZGlhIHF1ZXJ5IGlmIG5lZWRlZFxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAvLyBMb29wIG92ZXIgZWFjaCB1dGlsaXR5IHByb3BlcnR5XG4gICAgQGVhY2ggJGtleSwgJHV0aWxpdHkgaW4gJHV0aWxpdGllcyB7XG4gICAgICAvLyBUaGUgdXRpbGl0eSBjYW4gYmUgZGlzYWJsZWQgd2l0aCBgZmFsc2VgLCB0aHVzIGNoZWNrIGlmIHRoZSB1dGlsaXR5IGlzIGEgbWFwIGZpcnN0XG4gICAgICAvLyBPbmx5IHByb2NlZWQgaWYgcmVzcG9uc2l2ZSBtZWRpYSBxdWVyaWVzIGFyZSBlbmFibGVkIG9yIGlmIGl0J3MgdGhlIGJhc2UgbWVkaWEgcXVlcnlcbiAgICAgIEBpZiB0eXBlLW9mKCR1dGlsaXR5KSA9PSBcIm1hcFwiIGFuZCAobWFwLWdldCgkdXRpbGl0eSwgcmVzcG9uc2l2ZSkgb3IgJGluZml4ID09IFwiXCIpIHtcbiAgICAgICAgQGluY2x1ZGUgZ2VuZXJhdGUtdXRpbGl0eSgkdXRpbGl0eSwgJGluZml4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gUkZTIHJlc2NhbGluZ1xuQG1lZGlhIChtaW4td2lkdGg6ICRyZnMtbXEtdmFsdWUpIHtcbiAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIEBpZiAobWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQpIDwgJHJmcy1icmVha3BvaW50KSB7XG4gICAgICAvLyBMb29wIG92ZXIgZWFjaCB1dGlsaXR5IHByb3BlcnR5XG4gICAgICBAZWFjaCAka2V5LCAkdXRpbGl0eSBpbiAkdXRpbGl0aWVzIHtcbiAgICAgICAgLy8gVGhlIHV0aWxpdHkgY2FuIGJlIGRpc2FibGVkIHdpdGggYGZhbHNlYCwgdGh1cyBjaGVjayBpZiB0aGUgdXRpbGl0eSBpcyBhIG1hcCBmaXJzdFxuICAgICAgICAvLyBPbmx5IHByb2NlZWQgaWYgcmVzcG9uc2l2ZSBtZWRpYSBxdWVyaWVzIGFyZSBlbmFibGVkIG9yIGlmIGl0J3MgdGhlIGJhc2UgbWVkaWEgcXVlcnlcbiAgICAgICAgQGlmIHR5cGUtb2YoJHV0aWxpdHkpID09IFwibWFwXCIgYW5kIG1hcC1nZXQoJHV0aWxpdHksIHJmcykgYW5kIChtYXAtZ2V0KCR1dGlsaXR5LCByZXNwb25zaXZlKSBvciAkaW5maXggPT0gXCJcIikge1xuICAgICAgICAgIEBpbmNsdWRlIGdlbmVyYXRlLXV0aWxpdHkoJHV0aWxpdHksICRpbmZpeCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4vLyBQcmludCB1dGlsaXRpZXNcbkBtZWRpYSBwcmludCB7XG4gIEBlYWNoICRrZXksICR1dGlsaXR5IGluICR1dGlsaXRpZXMge1xuICAgIC8vIFRoZSB1dGlsaXR5IGNhbiBiZSBkaXNhYmxlZCB3aXRoIGBmYWxzZWAsIHRodXMgY2hlY2sgaWYgdGhlIHV0aWxpdHkgaXMgYSBtYXAgZmlyc3RcbiAgICAvLyBUaGVuIGNoZWNrIGlmIHRoZSB1dGlsaXR5IG5lZWRzIHByaW50IHN0eWxlc1xuICAgIEBpZiB0eXBlLW9mKCR1dGlsaXR5KSA9PSBcIm1hcFwiIGFuZCBtYXAtZ2V0KCR1dGlsaXR5LCBwcmludCkgPT0gdHJ1ZSB7XG4gICAgICBAaW5jbHVkZSBnZW5lcmF0ZS11dGlsaXR5KCR1dGlsaXR5LCBcIi1wcmludFwiKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5NaXhpbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaWVkZXJ2ZXJ3ZW5kYmFyZSBCYXVzdGVpbmUsIGRpZSBtZWhyIGFscyBlaW5lIFBhcnRpYWwgYnJhdWNodC5cbiovXG5cbi8qXG4gKiBWZXJsYXVmcy1Ib3ZlciBmdWVyIEJ1dHRvbnMgKFZvcmJpbGQ6IFN5bnRlZ29uKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJ1aGV6dXN0YW5kIGZsYWVjaGlnLCBiZWltIFVlYmVyZmFocmVuIGxhZXVmdCBkaWUgRmxhZWNoZSBuYWNoIHVudGVuIGluIGRlblxuICogaGVsbGVyZW4gVG9uIGRlcnNlbGJlbiBGYXJiZSBhdXMuXG4gKlxuICogRGVyIFZlcmxhdWYgbGllZ3QgYXVmIGVpbmVtIDo6YmVmb3JlIHVuZCB3aXJkIHVlYmVyIGRpZSBPcGF6aXRhZXQgZWluLSB1bmRcbiAqIGF1c2dlYmxlbmRldCDigJQgbmljaHQgYWxzIFdlY2hzZWwgZGVyIGJhY2tncm91bmQtRWlnZW5zY2hhZnQuIEdydW5kOiBCcm93c2VyXG4gKiBpbnRlcnBvbGllcmVuIGxpbmVhci1ncmFkaWVudCBpbiBiYWNrZ3JvdW5kLWltYWdlIG5pY2h0LCBlZ2FsIHdpZSBnbGVpY2ggZGllXG4gKiBiZWlkZW4gVmVybGFldWZlIGdlYmF1dCBzaW5kLiBEaWUgQW5nYWJlIHRyYW5zaXRpb246IGJhY2tncm91bmQgc2llaHQgaW1cbiAqIFN0eWxlc2hlZXQgbmFjaCBCZXdlZ3VuZyBhdXMsIHNwcmluZ3QgaW4gZGVyIFByYXhpcyBhYmVyIGhhcnQgdW0uIE9wYXppdGFldFxuICogZGFnZWdlbiB0d2VlbnQgenV2ZXJsYWVzc2lnLlxuICpcbiAqIERlciBSdWhlenVzdGFuZCBibGVpYnQgZWluZSBmbGFlY2hpZ2UgRmFyYmUgYW0gRWxlbWVudCBzZWxic3Qg4oCUIGF1ZlxuICogcGFkZGluZy1ib3ggdW5kIGJvcmRlci1ib3gsIGRhbWl0IGRpZSBGbGFlY2hlIHVudGVyIGVpbmVtICh0cmFuc3BhcmVudFxuICogZ2VzZXR6dGVuKSBSYWhtZW4gZHVyY2hsYWV1ZnQgc3RhdHQgZG9ydCBhYnp1cmVpc3Nlbi5cbiAqXG4gKiBiYWNrZ3JvdW5kIHN0YXR0IGJhY2tncm91bmQtY29sb3IgYXVjaCBkZXNoYWxiLCB3ZWlsIFdvcmRQcmVzcyBkaWVcbiAqIFBhbGV0dGVuLUtsYXNzZW4gKC5oYXMtc2VuYXJ5LWJhY2tncm91bmQtY29sb3IpIG1pdCAhaW1wb3J0YW50IHNjaHJlaWJ0IOKAlFxuICogZGllIEZhcmJlIGxpZWd0IGRhcnVudGVyLCBkZXIgVmVybGF1ZiBhbHMgZWlnZW5lIEViZW5lIGRhcnVlYmVyLlxuICovXG5AbWl4aW4gZmFldGgtYnV0dG9uLWdyYWRpZW50KCRmcm9tLCAkdG8pIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvKlxuICAgKiBFaWdlbmVyIFN0YWNraW5nLUNvbnRleHQuIERlciBWZXJsYXVmIHN0ZWh0IGF1ZiB6LWluZGV4OiAtMSB1bmQgbGllZ3RcbiAgICogZGFtaXQgdWViZXIgZGVyIGVpZ2VuZW4gRmxhZWNoZSwgYWJlciB1bnRlciBkZXIgQmVzY2hyaWZ0dW5nIOKAlCBvaG5lIGRhc3NcbiAgICogZGFzIExhYmVsIGVpbmUgZWlnZW5lIEViZW5lIGJyYXVjaHQuXG4gICAqL1xuICB6LWluZGV4OiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoJGZyb20sICRmcm9tKSBwYWRkaW5nLWJveCxcbiAgICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KCRmcm9tLCAkZnJvbSkgYm9yZGVyLWJveDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLypcbiAgICogS2VpbiBCcm93c2VyLU91dGxpbmUgaW0gUnVoZXp1c3RhbmQsIGRhZnVlciBlaW4gZWlnZW5lciBGb2t1c3JpbmcgZnVlciBkaWVcbiAgICogVGFzdGF0dXIg4oCUIGRlciBGYXJid2VjaHNlbCBhbGxlaW4gaXN0IGFscyBGb2t1cy1BbnplaWdlIHp1IGxlaXNlLlxuICAgKi9cbiAgb3V0bGluZTogbm9uZTtcblxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6ICRidXR0b24tZm9jdXMtcmluZztcbiAgICBvdXRsaW5lLW9mZnNldDogJGJ1dHRvbi1mb2N1cy1yaW5nLW9mZnNldDtcbiAgfVxuXG4gIHRyYW5zaXRpb246IGNvbG9yICRidXR0b24tZ3JhZGllbnQtdHJhbnNpdGlvbjtcblxuICAvKlxuICAgKiBpbnNldDogMCBzcGFubnQgZGllIEViZW5lIHVlYmVyIGRpZSBQb2xzdGVyZmxhZWNoZS4gRWluIFJhaG1lbiBibGVpYnRcbiAgICogZGFtaXQgYXVmIGRlciBSdWhlZmFyYmUg4oCUIHNpY2h0YmFyIHdhZXJlIGRhcyBudXIgYmVpbSBncnVlbmVuXG4gICAqIFN1Y2hlbi1CdXR0b24sIGRlciBhbHMgZWluemlnZXIgVmVybGF1ZnMtQnV0dG9uIGVpbmVuICgycHgsIHRyYW5zcGFyZW50XG4gICAqIGdlc2V0enRlbikgS2Vybi1SYWhtZW4gdHJhZWd0LlxuICAgKi9cbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogLTE7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgJGZyb20gMCwgJHRvIDEwMCUpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkYnV0dG9uLWdyYWRpZW50LXRyYW5zaXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cbn1cblxuLypcbiAqIFNla3VuZGFlcmVyIHRyYW5zcGFyZW50ZXIgQnV0dG9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVm9yYmlsZDogU3ludGVnb24gXCJOZWhtZW4gU2llIEtvbnRha3QgYXVmXCIuIFJ1aGU6IGtlaW4gR3J1bmQsIHNjaHdhcnplclxuICogUmFobWVuLCBzY2h3YXJ6ZSBTY2hyaWZ0LiBIb3ZlcjogbGFldWZ0IG1pdCBkZW0gYXVmZ2VoZWxsdGVuIEZhZXRoLUJsYXVcbiAqICgkYnV0dG9uLW91dGxpbmUtaG92ZXItYmcpIHp1LCBkaWUgU2NocmlmdCBraXBwdCBhdWYgV2Vpc3MuIEltIFByaW56aXAgZWluXG4gKiBPdXRsaW5lLUJ1dHRvbi5cbiAqXG4gKiAhaW1wb3J0YW50LCB3ZWlsIGRpZSBGYXJiLUtsYXNzZW4gdm9uIFdvcmRQcmVzcyAoaGFzLSotYmFja2dyb3VuZC1jb2xvcixcbiAqIGhhcy0qLWNvbG9yKSBzZWxic3QgIWltcG9ydGFudCB0cmFnZW4g4oCUIG9obmUgZGFzIGJsaWViZSBkZXIgYWx0ZSBHcnVuZFxuICogc3RlaGVuLiBBdWYgYmVpZGVuIFp1c3RhZW5kZW4gZ2VzZXR6dCwgc29uc3QgZ2V3aW5udCBkZXIgUnVoZXp1c3RhbmQuXG4gKi9cbkBtaXhpbiBmYWV0aC1idXR0b24tb3V0bGluZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgYm9yZGVyOiAkYnV0dG9uLW91dGxpbmUtYm9yZGVyLXdpZHRoIHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjayk7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spICFpbXBvcnRhbnQ7XG4gIC8qXG4gICAqIEtlaW4gQnJvd3Nlci1PdXRsaW5lIGltIFJ1aGV6dXN0YW5kLCBkYWZ1ZXIgZWluIGVpZ2VuZXIgRm9rdXNyaW5nIGZ1ZXIgZGllXG4gICAqIFRhc3RhdHVyIOKAlCBkZXIgRmFyYndlY2hzZWwgYWxsZWluIGlzdCBhbHMgRm9rdXMtQW56ZWlnZSB6dSBsZWlzZS5cbiAgICovXG4gIG91dGxpbmU6IG5vbmU7XG5cbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAkYnV0dG9uLWZvY3VzLXJpbmc7XG4gICAgb3V0bGluZS1vZmZzZXQ6ICRidXR0b24tZm9jdXMtcmluZy1vZmZzZXQ7XG4gIH1cblxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kICRidXR0b24tZ3JhZGllbnQtdHJhbnNpdGlvbixcbiAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yICRidXR0b24tZ3JhZGllbnQtdHJhbnNpdGlvbixcbiAgICAgICAgICAgICAgY29sb3IgJGJ1dHRvbi1ncmFkaWVudC10cmFuc2l0aW9uO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYnV0dG9uLW91dGxpbmUtaG92ZXItYmc7XG4gICAgY29sb3I6ICRidXR0b24tb3V0bGluZS1ob3Zlci1iZyAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qXG4gKiBEZXIgUGZlaWwtQnV0dG9uIGRlciBLYXJ0ZW4gKENoZXZyb24tQnV0dG9uKSBzdGFuZCBoaWVyIGFscyBNaXhpbiB1bmQgd3VyZGVcbiAqIGFuIGRyZWkgU3RlbGxlbiBhdWZnZXJ1ZmVuIOKAlCBzZWluIFJ1bXBmIGxhbmRldGUgZGFtaXQgbWVocmZhY2ggaW1cbiAqIFN0eWxlc2hlZXQuIEVyIHN0ZWh0IGpldHp0IGFscyBlaW56ZWxuZSBTZWxla3Rvcmxpc3RlIGluXG4gKiBjb21wb25lbnQvX2NoZXZyb24tYnV0dG9uLlxuICovXG4iLCIvKlxuQmFzZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkNvbnRhaW5zIGN1c3RvbSBzdHlsZXMgZm9yIHRoZSBCYXNlLlxuKi9cblxuYm9keSB7XG4gIG1heC13aWR0aDogJGJhc2UtbWF4LXdpZHRoO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi8qXG4gKiBMaW5rc1xuICogLS0tLS1cbiAqIEVpbmUgUmVnZWwgZnVlciBkaWUgZ2FuemUgU2VpdGU6IGtlaW5lIFVudGVyc3RyZWljaHVuZywgaW4ga2VpbmVtIFp1c3RhbmQuXG4gKiBCZWltIFVlYmVyZmFocmVuIHJlYWdpZXJ0IGRlciBMaW5rIHdpZSBlaW4gTmF2aWdhdGlvbnNwdW5rdCDigJQgZXIgd2lyZCBoZWxsZXJcbiAqIChhdWZnZWhlbGx0ZXMgU2Vjb25kYXJ5KSB1bmQgZGllIFNjaHJpZnQgemllaHQgYW4uXG4gKlxuICogQnV0dG9ucyBzaW5kIGF1c2dlbm9tbWVuOiBzaWUgdHJhZ2VuIGlocmUgU2NocmlmdGZhcmJlIHNlbGJzdCB1bmQgd3VlcmRlblxuICogZGllIFZlcmRpY2t1bmcgc29uc3QgbWl0bmVobWVuLiBLb3BmIHVuZCBOYXZpZ2F0aW9uIHVlYmVyc2NocmVpYmVuIGlocmVcbiAqIEhvdmVyLUZhcmJlIGluIGxheW91dC9faGVhZGVyLCBsYXlvdXQvX25hdmlnYXRpb24gdW5kXG4gKiBsYXlvdXQvX21haW4tbmF2aWdhdGlvbiBtaXQgZGV1dGxpY2ggaG9laGVyZXIgU3BlemlmaXRhZXQuXG4gKi9cbmEge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbmE6d2hlcmUoOm5vdCgud3AtZWxlbWVudC1idXR0b24pKSB7XG4gIHRyYW5zaXRpb246IGNvbG9yICRob3Zlci10cmFuc2l0aW9uLFxuICAgICAgICAgICAgICB0ZXh0LXNoYWRvdyAkaG92ZXItdHJhbnNpdGlvbjtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzLFxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIGNvbG9yOiAkbGluay1ob3Zlci1jb2xvci1mYWxsYmFjaztcbiAgICBjb2xvcjogJGxpbmstaG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRleHQtc2hhZG93OiAkbGluay1ob3Zlci10aGlja2VuO1xuICB9XG59XG5cbnVsIHtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xufVxuXG5tYWluIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxubWFpbixcbmFzaWRlIHtcbiAgYSB7XG4gICAgJjp3aGVyZSg6bm90KC53cC1lbGVtZW50LWJ1dHRvbikpIHtcbiAgICAgIC8qXG4gICAgICAgKiBOdXIgZGVyIFJ1aGV6dXN0YW5kOiBJbmhhbHRzbGlua3Mgc3RlaGVuIGluIFNlY29uZGFyeS4gRGVuIEhvdmVyXG4gICAgICAgKiB0cmFlZ3QgZGllIGdsb2JhbGUgUmVnZWwgd2VpdGVyIG9iZW4g4oCUIHNpZSBpc3QgbWl0IDpob3ZlclxuICAgICAgICogc3BlemlmaXNjaGVyIGFscyBkaWVzZXIgU2VsZWt0b3IgdW5kIGdyZWlmdCBoaWVyIG9obmUgV2llZGVyaG9sdW5nLlxuICAgICAgICovXG4gICAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlY29uZGFyeSk7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi5tZWdhLW1lbnUtb3BlbiB7XG4gIG1haW4sXG4gIC5zaWRlYmFyLXBhZ2Uge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmID4gZGl2IHtcbiAgICAgIGZpbHRlcjogYmx1cig0cHgpO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuXG4ubWVnYS1tZW51LW1heF9tZWdhX21lbnVfMS1tb2JpbGUtb3BlbiB7XG4gIGhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50XG4gIH1cblxuICBtYWluLFxuICAuc2lkZWJhci1wYWdlLFxuICBmb290ZXIge1xuICAgIGhlaWdodDogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cblxuLypcbiAqIENoZXZyb24tTGlua1xuICogLS0tLS0tLS0tLS0tXG4gKiBEZXIgQ2hldnJvbiBzdGFuZCBiaXNoZXIgc3RpbGwuIEJlaW0gVWViZXJmYWhyZW4gcnVlY2t0IGVyIGpldHp0IHZvciDigJQgZGllXG4gKiBnbGVpY2hlIEJld2VndW5nLCBkaWUgZGllIEZvb3Rlci1MaW5rbGlzdGUgc2Nob24gZnVlaHJ0IOKAlCB1bmQgZGllIFNjaHJpZnRcbiAqIGhlbGx0IGxlaWNodCBhdWYgKFJlZ2VsIGZ1ZXIgbWFpbi9hc2lkZSB3ZWl0ZXIgb2JlbikuXG4gKi9cbi5jaGV2cm9uLWxpbmsge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgYSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAkY2hldnJvbi1saW5rLWljb24td2lkdGg7XG4gICAgICBoZWlnaHQ6ICRjaGV2cm9uLWxpbmstaWNvbi13aWR0aDtcbiAgICAgIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW1hZ2VzL2NoZXZyb24tcmlnaHQtYmx1ZS5zdmcnKSBuby1yZXBlYXQgMCA1MCU7XG4gICAgICBtYXJnaW46IDVweDtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkaG92ZXItdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRjaGV2cm9uLWxpbmstaG92ZXItb2Zmc2V0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIGE6YWZ0ZXIge1xuICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjAxbXM7XG4gICAgfVxuICB9XG59XG5cbi5pbWFnZS1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogYXV0bztcbiAgYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7XG4gIG1hcmdpbi1sZWZ0OiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS02MCk7XG4gIHBhZGRpbmc6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTMwKSAhaW1wb3J0YW50O1xuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgICBvcGFjaXR5OiAkZGVmYXVsdC1vcGFjaXR5O1xuICB9XG5cbiAgJiA+IGRpdiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oeGwpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cbi5yZXZlcnNlLW9uLW1vYmlsZSB7XG4gICYud3AtYmxvY2stY29sdW1ucyB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG4ubWFyZ2luLWZpeCB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcbiAgICBtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS13cC0tc3R5bGUtLXJvb3QtLXBhZGRpbmctbGVmdCkpICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmhlYWRsaW5lLWRvdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLWhlYWRsaW5lLWRvdCkgIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTMwKTtcblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAkaGVhZGxpbmUtZG90LXdpZHRoO1xuICAgIGhlaWdodDogJGhlYWRsaW5lLWRvdC13aWR0aDtcbiAgICBsZWZ0OiBjYWxjKHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTMwKSAqIC0xKTtcbiAgICB0b3A6IDQ1JTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcHJpbWFyeSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG59XG5cbi8qXG4gKiBEZXIgUGZlaWwtQnV0dG9uIGRlciBLYXJ0ZW4gKC5yZWFkbW9yZSkgc3RhbmQgaGllci4gQXVzZm9ybXVuZyB1bmRcbiAqIEJlZ3J1ZW5kdW5nIHN0ZWhlbiBqZXR6dCBhbiBlaW5lciBlaW56aWdlbiBTdGVsbGU6XG4gKiBjb21wb25lbnQvX2NoZXZyb24tYnV0dG9uLlxuICovXG5cbi5tb3JlLWNvbnRhaW5lciB7XG4gIC5tb3JlLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4uaW1hZ2Utem9vbSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgaW1nIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJGhvdmVyLXRyYW5zaXRpb247XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMyk7XG4gICAgfVxuICB9XG59XG5cbi8qXG4gKiBTZWt0aW9ucy1SaHl0aG11c1xuICogLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFN0YW5kIGhpZXIgYWxzIHp3ZWl0ZXMsIGhhbGJmZXJ0aWdlcyBBYnN0YW5kcy1TeXN0ZW06IGVpbmUgQWJzY2hhbHRyZWdlbCBtaXRcbiAqICFpbXBvcnRhbnQgZnVlciBhbGxlIFNlaXRlbiB1bmQgZWluIFBhZGRpbmctTW9kZWxsLCBkYXMgdWViZXIgZGllIEJvZHktS2xhc3NlXG4gKiBgc2VjdGlvbi1yaHl0aG1gIG51ciBhdWYgZWluZXIgZWluemlnZW4gZnJlaWdlc2NoYWx0ZXRlbiBTZWl0ZSBsaWVmLiBCZWlkZXNcbiAqIGlzdCBpbiBsYXlvdXQvX3NlY3Rpb24tc3BhY2luZyBhdWZnZWdhbmdlbiDigJQgZG9ydCBnaWx0IGVzIHVuYmVkaW5ndCB1bmQgZnVlclxuICogamVkZSBTZWl0ZSwgdW5kIGRlciBCZXN0YW5kIGJyYXVjaHQga2VpbmUgRnJlaWdhYmVsaXN0ZSBtZWhyLlxuICovXG4iLCIvKlxuV1AgYWRtaW5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5Db250YWlucyBjdXN0b20gc3R5bGVzIGZvciB0aGUgV1AgYWRtaW4uXG4qL1xuXG4ud3AtYWRtaW4ge1xuICAuaW1hZ2Utb3ZlcmxheSB7XG4gICAgYm90dG9tOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gIH1cblxuICAub3ZlcmxheS10ZXh0IHtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubW9yZS1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5hZG1pbi1iYXIge1xuICAuZ3V0ZW5hLXRhYnMtdGFiIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAxcHgpIHtcbiAgICAgIHRvcDogMzBweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiLypcbkNvbnRhaW5lclxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQWRkaXRpb25hbCBzdHlsaW5nIGZvciBjb250YWluZXIgbGF5b3V0LlxuKi9cblxuLmNvbnRhaW5lciB7XG4gIHBhZGRpbmc6IDA7XG59XG4iLCIvKlxuSGVhZGVyXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQ29udGFpbnMgY3VzdG9tIHN0eWxlcyBmb3IgdGhlIGhlYWRlciBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlLlxuVGhlIGhlYWRlciBjb250YWlucyB0aGUgbG9nbyBhbmQgYSBuYXZpZ2F0aW9uLlxuKi9cblxuaGVhZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItYm90dG9tOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3I7XG5cbiAgLnRvcGJhciB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZykge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgbWFyZ2luLXRvcDogLTEwcHg7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogTG9nbyBhbmQgbmF2aWdhdGlvbiBiYXJcbiAgICogQm90aCBjb2x1bW5zIGFyZSBjZW50ZXJlZCBpbnNpZGUgYSBmaXhlZCBiYXIgaGVpZ2h0LlxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAud3AtYm9vdHN0cmFwLWJsb2Nrcy1yb3cge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWluLWhlaWdodDogJGhlYWRlci1oZWlnaHQtbW9iaWxlO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZykge1xuICAgICAgbWluLWhlaWdodDogJGhlYWRlci1oZWlnaHQ7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBTcGFsdGVuYXVmdGVpbHVuZyBhYiBsZ1xuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICogRGFzIFBhdHRlcm4gdGVpbHQgZGllIEtvcGZ6ZWlsZSB1ZWJlciBkYXMgMTJlci1SYXN0ZXIgYXVmXG4gICAgICogKGNvbC1sZy0zL2NvbC1sZy05LCBjb2wteHhsLTIvY29sLXh4bC0xMCkuIERhcyBMb2dvIGlzdCBhYmVyIG51ciBydW5kXG4gICAgICogMTUwcHggYnJlaXQsIHdhZWhyZW5kIGRpZSBSYXN0ZXJzcGFsdGUgamUgbmFjaCBGZW5zdGVyYnJlaXRlIDIwMC0zMjBweFxuICAgICAqIGJlbGVndCDigJQgZGVyIFVlYmVyc2NodXNzIHN0YW5kIGFscyBXZWlzc3JhdW0gcmVjaHRzIG5lYmVuIGRlbSBMb2dvIHVuZFxuICAgICAqIGZlaGx0ZSBnbGVpY2h6ZWl0aWcgZGVyIE1lbnVlemVpbGUsIGRpZSBkZXNoYWxiIHVtYnJhY2guXG4gICAgICpcbiAgICAgKiBBYiBsZyB3aXJkIGRlc2hhbGIgbmljaHQgbWVociBuYWNoIFJhc3RlciBnZXRlaWx0OiBkaWUgTG9nby1TcGFsdGUgaXN0XG4gICAgICogZ2VuYXUgc28gYnJlaXQgd2llIGlociBJbmhhbHQsIGRpZSBOYXZpZ2F0aW9uIG5pbW10IGRlbiBSZXN0LiBEaWVcbiAgICAgKiBjb2wtKi1LbGFzc2VuIGJsZWliZW4gaW0gUGF0dGVybiBzdGVoZW4g4oCUIHVudGVyaGFsYiB2b24gbGcgKG1vYmlsZXNcbiAgICAgKiBMYXlvdXQgbWl0IEJ1cmdlci1NZW51ZSkgZ2VsdGVuIHNpZSB1bnZlcmFlbmRlcnQgd2VpdGVyLlxuICAgICAqL1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICAgICYgPiBbY2xhc3MqPSdjb2wtJ10ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgJiA+IFtjbGFzcyo9J2NvbC0nXTpub3QoLm1haW4tbmF2aWdhdGlvbikge1xuICAgICAgICAvKiBMdWZ0IHp3aXNjaGVuIExvZ28gdW5kIGVyc3RlbSBNZW51ZXB1bmt0OyBvaG5lIHNpZSBzdG9zc2VuIGJlaWRlXG4gICAgICAgICAgIG51ciB1ZWJlciBkaWUgU3BhbHRlbi1HdXR0ZXIgYW5laW5hbmRlci4gKi9cbiAgICAgICAgcGFkZGluZy1yaWdodDogJGhlYWRlci1sb2dvLW5hdmlnYXRpb24tZ2FwO1xuICAgICAgfVxuXG4gICAgICAmID4gLm1haW4tbmF2aWdhdGlvbiB7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICAvKiBGbGV4LUVsZW1lbnRlIGhhYmVuIG1pbi13aWR0aDogYXV0byB1bmQga29lbm5lbiBzb25zdCBuaWNodCB1bnRlclxuICAgICAgICAgICBpaHJlIEluaGFsdHNicmVpdGUgc2NocnVtcGZlbiDigJQgZGllIFplaWxlIHd1ZXJkZSB1ZWJlcmxhdWZlbi4gKi9cbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC53cC1ibG9jay1zaXRlLWxvZ28ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDA7XG4gICAgLypcbiAgICAgKiBBdWYgZWluZXIgTGluaWUgbWl0IGRlbSBGb290ZXItTG9nbzogZGllIEhlYWRlci1aZWlsZSBpc3QgYWxpZ25mdWxsIHVuZFxuICAgICAqIGJlZ2lubnQgYmVpIHggPSAwIChkYXMgbmVnYXRpdmUgTWFyZ2luIGhlYnQgZGFzIEdydXBwZW4tUGFkZGluZyBhdWYpLFxuICAgICAqIGRlciBGb290ZXIgc3RlaHQgZGFnZWdlbiBpbSBnbG9iYWxlbiBTZWl0ZW4tUGFkZGluZy4gRGVyIEJvb3RzdHJhcC1BbnRlaWxcbiAgICAgKiAoY29udGFpbmVyL3Jvdy9jb2wpIGlzdCBhdWYgYmVpZGVuIFNlaXRlbiBnbGVpY2ggdW5kIGZhZWxsdCByYXVzLCBlc1xuICAgICAqIGJsZWlidCBnZW5hdSBkYXMgUm9vdC1QYWRkaW5nIGFscyBEaWZmZXJlbnouXG4gICAgICovXG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS13cC0tc3R5bGUtLXJvb3QtLXBhZGRpbmctbGVmdCk7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gICAgICAvKiBTYW1lIGJvdHRvbSBvZmZzZXQgYXMgdGhlIG1lbnUgY29udGFpbmVyLCBzbyB0aGUgbG9nbyBzaXRzXG4gICAgICAgICBvcHRpY2FsbHkgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgbmF2aWdhdGlvbiBsaW5rcy4gKi9cbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYWluLW5hdmlnYXRpb24tcGFuZWwtb2Zmc2V0O1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICAvKiBtYXgtaGVpZ2h0IGluc3RlYWQgb2YgaGVpZ2h0IGtlZXBzIHRoZSBhc3BlY3QgcmF0aW8gaW50YWN0XG4gICAgICAgICB3aGVuIHRoZSBjb2x1bW4gZ2V0cyBuYXJyb3dlciB0aGFuIHRoZSBsb2dvIG9uIHNtYWxsIHNjcmVlbnMuICovXG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIG1heC1oZWlnaHQ6ICRuYXZpZ2F0aW9uLWxvZ28taGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIFRvcGJhciBsYWJlbHNcbiAgICogU2VhcmNoLCBjb250YWN0IGFuZCBsYW5ndWFnZSBzd2l0Y2hlciBzaGFyZSB0aGUgc2FtZSBsb29rLlxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgJiA+IC50b3BiYXIge1xuICAgIC53cC1ibG9jay1zZWFyY2hfX2xhYmVsLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW1fX2NvbnRlbnQsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbV9fbGFiZWwge1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBsZXR0ZXItc3BhY2luZzogLjVweDtcbiAgICB9XG4gIH1cblxuICAud3AtYmxvY2stc2VhcmNoIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcblxuICAgIC53cC1ibG9jay1zZWFyY2hfX2xhYmVsIHtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS14LXNtYWxsKTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjg1O1xuICAgICAgbWFyZ2luLXRvcDogMXB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IDFweDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAud3AtYmxvY2stc2VhcmNoX19pbnNpZGUtd3JhcHBlciB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0teC1zbWFsbCk7XG5cbiAgICAgIC53cC1ibG9jay1zZWFyY2hfX2lucHV0IHtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC53cC1ibG9jay1zZWFyY2hfX2J1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgd2lkdGg6ICRoZWFkZXItaWNvbi13aWR0aDtcbiAgICAgICAgaGVpZ2h0OiAkaGVhZGVyLWljb24td2lkdGg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yICRob3Zlci10cmFuc2l0aW9uO1xuICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIHRvcDogNjAlO1xuICAgICAgICAgIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW1hZ2VzL3NlYXJjaC5zdmcnKSBuby1yZXBlYXQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtYWN0aXZlIHtcbiAgICAgIC53cC1ibG9jay1zZWFyY2hfX2xhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLndwLWJsb2NrLXNlYXJjaF9faW5wdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLXdpZHRoOiAzcmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDhweDtcbiAgICAgIH1cblxuICAgICAgLndwLWJsb2NrLXNlYXJjaF9fYnV0dG9uIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jb250cmFzdCkgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihsZykge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAud3BtbC1sYW5ndWFnZS1zd2l0Y2hlci1ibG9jayB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS14LXNtYWxsKSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIC8qIFRoZSBpY29uIHJlYWNoZXMgb3V0c2lkZSB0aGUgaXRlbSBib3gsIHNvIGl0cyBvZmZzZXQgaXMgYWRkZWRcbiAgICAgICBvbiB0b3Agb2YgdGhlIGdhcCB0byB0aGUgcHJldmlvdXMgbmVpZ2hib3VyLiAqL1xuICAgIG1hcmdpbi1sZWZ0OiAkaGVhZGVyLXRvcGJhci1nYXAgKyAkaGVhZGVyLXRvcGJhci1sYW5ndWFnZS1pY29uLW9mZnNldCAhaW1wb3J0YW50O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgdG9wOiA1NSU7XG4gICAgICBsZWZ0OiAtJGhlYWRlci10b3BiYXItbGFuZ3VhZ2UtaWNvbi1vZmZzZXQ7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uLy4uL2ltYWdlcy9nbG9iYWwuc3ZnJykgbm8tcmVwZWF0O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cblxuICAgIHVsIHtcbiAgICAgICYuaG9yaXpvbnRhbC1saXN0IHtcbiAgICAgICAgZ2FwOiAzcHggIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAmLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgY29udGVudDogJ3wnO1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAmLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbSB7XG4gICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5NYWluIG5hdmlnYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciBuYXZpZ2F0aW9uLlxuKi9cblxuLm1haW4tbmF2aWdhdGlvbiB7XG4gIC5tZWdhLXNlYXJjaCB7XG4gICAgLnNlYXJjaC1pY29uIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHRvcDogNTUlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uLy4uL2ltYWdlcy9zZWFyY2guc3ZnJykgbm8tcmVwZWF0O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1lZ2EtbWVudS10b2dnbGUge1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuXG4gICAgLm1lZ2EtdG9nZ2xlLWxhYmVsIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIFNjaHJpZnRnZXdpY2h0IGRlciBNZW51ZS1FbGVtZW50ZVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogTWF4IE1lZ2EgTWVudSBlcnpldWd0IHNlaW4gQ1NTIGF1cyBkZW4gVGhlbWUtRWluc3RlbGx1bmdlbiBpbiBkZXJcbiAgICogRGF0ZW5iYW5rIChPcHRpb24gbWVnYW1lbnVfdGhlbWVzKSB1bmQgc2NocmVpYnQgZXMgbmFjaFxuICAgKiB3cC1jb250ZW50L3VwbG9hZHMvbWF4bWVnYW1lbnUvc3R5bGVfPHNwcmFjaGU+LmNzcy4gRGllc2UgRGF0ZWkgd2lyZCBiZWlcbiAgICogamVkZW0gU3BlaWNoZXJuIG5ldSBnZXNjaHJpZWJlbiB1bmQgbGllZ3QgbmljaHQgaW0gUmVwb3NpdG9yeSDigJQgZGllXG4gICAqIFZvcmdhYmUgc3RlaHQgZGVzaGFsYiBoaWVyLCBkYW1pdCBzaWUgYmVpbSBEZXBsb3kgbWl0Z2VodC5cbiAgICpcbiAgICogQmV3dXNzdCBPSE5FIC5tZWdhLW1lbnUtbGluayB1bmQgb2huZSBkaWUgVG9nZ2xlLVNjaGFsdGZsYWVjaGU6IGRpZSBMaW5rc1xuICAgKiBiZWhhbHRlbiBpaHIgZWlnZW5lcyBHZXdpY2h0LCBkYW1pdCBkaWUgZmV0dCBnZXNldHp0ZW4gS29wZnplaWxlbiBmZXR0XG4gICAqIGJsZWliZW4gKE1heCBNZWdhIE1lbnUgc2V0enQgZGllIHBybyBFaW50cmFnIHVlYmVyIGxpI21lZ2EtbWVudS1pdGVtLS4uLixcbiAgICogb2huZSAhaW1wb3J0YW50IOKAlCBlaW5lIFJlZ2VsIGhpZXIgd3VlcmRlIHNpZSBzb25zdCB1ZWJlcnN0aW1tZW4pLCB1bmQgZGFzXG4gICAqIG1vYmlsZSBNRU5VRS1MYWJlbCBibGVpYnQgZWJlbmZhbGxzIGZldHQuXG4gICAqL1xuICAubWVnYS1tZW51LXdyYXAsXG4gIC5tZWdhLW1lbnUge1xuICAgIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDtcblxuICAgIC5tZWdhLW1lbnUtaXRlbSxcbiAgICAubWVnYS1tZW51LXJvdyxcbiAgICAubWVnYS1tZW51LWNvbHVtbixcbiAgICAubWVnYS1pbmRpY2F0b3IsXG4gICAgLm1lZ2EtbWVudS1iYWRnZSxcbiAgICAubWVnYS1tZW51LWRlc2NyaXB0aW9uLFxuICAgIC5tZWdhLWNsb3NlIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBTcGFsdGVuYnJlaXRlIGRlciBVbnRlcnNlaXRlbi1TcGFsdGVuXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogRGllIEdyaWQtWmVpbGVuIHNpbmQgMTIgU3BhbHRlbiBicmVpdCwgZGllIFVudGVyc2VpdGVuLVNwYWx0ZW4gYmVsZWdlblxuICAgKiBkYXZvbiBqZSAzIOKAlCB2aWVyIG5lYmVuZWluYW5kZXIuIEF1ZiBzY2htYWxlbiBEZXNrdG9wcyB3aXJkIGRhcyB6dSBlbmcsXG4gICAqIGRlc2hhbGIgc3RhZmZlbHQgc2ljaCBkZXIgU3BhbiBuYWNoIG9iZW46XG4gICAqXG4gICAqICAgbGcgICg5OTLigJMxMTk5cHgpICBzcGFuIDYgIOKGkiB6d2VpIFNwYWx0ZW4gcHJvIFplaWxlXG4gICAqICAgeGwgICgxMjAw4oCTMTM5OXB4KSBzcGFuIDQgIOKGkiBkcmVpIFNwYWx0ZW4gcHJvIFplaWxlXG4gICAqICAgeHhsIChhYiAxNDAwcHgpICAgc3BhbiAzICDihpIgdmllciBTcGFsdGVuIHBybyBaZWlsZSAoVm9yZ2FiZSlcbiAgICpcbiAgICogTWF4IE1lZ2EgTWVudSByZWNobmV0IGRpZSBCcmVpdGUgYXVzIHp3ZWkgQ3VzdG9tIFByb3BlcnRpZXMsIGRpZSBlcyBkZW1cbiAgICogPGxpPiBhbHMgSW5saW5lLVN0eWxlIG1pdGdpYnQgKC0tY29sdW1uczoxMjsgLS1zcGFuOjMpIHVuZCBpbSBlaWdlbmVuXG4gICAqIFN0eWxlc2hlZXQgYWxzIGBncmlkLWNvbHVtbjogc3BhbiB2YXIoLS1zcGFuKWAgYnp3LiBhbHMgQnJlaXRlbi1jYWxjKClcbiAgICogYXVzd2VydGV0LiBFaW5lIFJlZ2VsIGhpZXIga2FubiBkZW4gSW5saW5lLVdlcnQgbnVyIG1pdCAhaW1wb3J0YW50XG4gICAqIHVlYmVyc3RpbW1lbiDigJQgZGFmdWVyIGdyZWlmdCBzaWUgaW4gYmVpZGVuIExheW91dHMgKEdyaWQgdW5kIE1lZ2EgTWVudSlcbiAgICogZ2xlaWNoZXJtYXNzZW4uIERpZSBLbGFzc2UgYmVncmVuenQgZGFzIGF1ZiBkaWUgM2VyLVNwYWx0ZW47IFplaWxlbiBtaXRcbiAgICogYW5kZXJlbSBTcGFuICg0LCAxMCkgYmxlaWJlbiB1bmJlcnVlaHJ0LlxuICAgKlxuICAgKiBVbnRlcmhhbGIgOTkycHggaXN0IG9obmVoaW4gU2NobHVzczogZGFzIFBsdWdpbiBiZWhhbmRlbHQgYWxsZXMgZGFydW50ZXJcbiAgICogYWxzIG1vYmlsIHVuZCBzZXR6dCBkaWUgU3BhbHRlbiBkb3J0IHNlbGJzdCBhdWYgYHNwYW4gMWAuXG4gICAqL1xuICAubWVnYS1tZW51LWNvbHVtbi5tZWdhLW1lbnUtY29sdW1ucy0zLW9mLTEyIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LW9ubHkobGcpIHtcbiAgICAgIC0tc3BhbjogNiAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtb25seSh4bCkge1xuICAgICAgLS1zcGFuOiA0ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLm1lZ2EtbWVudSB7XG4gICAgLm1lZ2EtbWVudS1iYWNrIHtcbiAgICAgIC5idG4ge1xuICAgICAgICBAZXh0ZW5kIC5idG4tbGluaztcbiAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgd2lkdGg6ICRtYWluLW5hdmlnYXRpb24tYmFjay1hcnJvdy13aWR0aDtcbiAgICAgICAgICBoZWlnaHQ6ICRtYWluLW5hdmlnYXRpb24tYmFjay1hcnJvdy13aWR0aDtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvYXJyb3ctbGVmdC5zdmcnKSBuby1yZXBlYXQgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmID4gLm1lZ2EtbWVudS10YWJiZWQge1xuICAgICAgJiA+IC5tZWdhLXN1Yi1tZW51IHtcbiAgICAgICAgcGFkZGluZy10b3A6IDMwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDMwcHggIWltcG9ydGFudDtcblxuICAgICAgICAmID4gLm1lZ2EtbWVudS1pdGVtIHtcbiAgICAgICAgICAmID4gLm1lZ2EtbWVudS1saW5rIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoeHhsKSB7XG4gICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTIwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIERpZSBUYWItRWJlbmUgaGF0IG1pdCBkZW0gRmFyYnZlcmxhdWYgc2Nob24gZWluZSBlaWdlbmVcbiAgICAgICAgICAgICAqIEhvdmVyLUZsYWVjaGUgdW5kIGJsZWlidCBkYWhlciBvaG5lIExpbmllLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICAgICAgICBib3JkZXItdG9wOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3IgIWltcG9ydGFudDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmID4gLm1lZ2EtbWVudS1pdGVtIHtcbiAgICAgICYgPiAubWVnYS1zdWItbWVudSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmYgIWltcG9ydGFudDtcbiAgICAgICAgbWluLWhlaWdodDogNTQwcHggIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxNXB4IDEwcHggLTE1cHggcmdiYSgwLCAwLCAwLCAwLjEpICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgICYgPiAubWVnYS1tZW51LWxpbmsge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLyogIWltcG9ydGFudCBiZWF0cyB0aGUgcGx1Z2luJ3Mgb3duIHdlaWdodCwgYW5kIGl0IGFsc28ga2VlcHMgdGhlXG4gICAgICAgICAgIHdlaWdodCBvbiA6aG92ZXIvOmZvY3VzLCB3aGVyZSB0aGUgbW9iaWxlIG1lbnUgd291bGQgc2V0IGJvbGQuICovXG4gICAgICAgIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDtcblxuICAgICAgICAvKiBGaXQgdGhlIG1lbnUgbGlua3MgaW50byB0aGUgaGVhZGVyIGJhci4gVGhlIG1lbnUgY29udGFpbmVyIGFkZHNcbiAgICAgICAgICAgJG1haW4tbmF2aWdhdGlvbi1wYW5lbC1vZmZzZXQgYmVsb3cgdGhlIGxpbmtzLCB3aGljaCBpcyB3aGVyZSB0aGVcbiAgICAgICAgICAgZHJvcGRvd24gcGFuZWwgYW5kIHRoZSBhY3RpdmUgdW5kZXJsaW5lIHN0YXJ0LiAqL1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gICAgICAgICAgaGVpZ2h0OiAkaGVhZGVyLWhlaWdodCAtICRtYWluLW5hdmlnYXRpb24tcGFuZWwtb2Zmc2V0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6ICRoZWFkZXItaGVpZ2h0IC0gJG1haW4tbmF2aWdhdGlvbi1wYW5lbC1vZmZzZXQgIWltcG9ydGFudDtcblxuICAgICAgICAgIC8qXG4gICAgICAgICAgICogU2NocmlmdGdyb2Vzc2UgZGVyIEhhdXB0bWVudWV6ZWlsZSDigJQgTm90bmFnZWwsIGtlaW4gUmVnZWxmYWxsLlxuICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICogTWF4IE1lZ2EgTWVudSB6ZWlndCBkaWUgRGVza3RvcC1aZWlsZSBhYiA5OTNweC4gRGllIHNlY2hzXG4gICAgICAgICAgICogZGV1dHNjaGVuIEhhdXB0cHVua3RlIGJyYXVjaGVuIGJlaSAyMHB4IHp1c2FtbWVuIHJ1bmQgNzQwcHhcbiAgICAgICAgICAgKiAoVGV4dCArIElubmVuYWJzdGFlbmRlICsgTWluZGVzdGFic3RhbmQpOyBzbyB2aWVsIFBsYXR6IGhhdCBkaWVcbiAgICAgICAgICAgKiBOYXZpZ2F0aW9uc3NwYWx0ZSBhYiBldHdhIDEwNTBweCBGZW5zdGVyYnJlaXRlLiBEYXJ1ZWJlciBibGVpYnRcbiAgICAgICAgICAgKiBlcyBiZWkgZGVuIHZvbGxlbiAyMHB4IGF1cyBkZW4gTWVnYS1NZW51LVRoZW1lLUVpbnN0ZWxsdW5nZW47XG4gICAgICAgICAgICogdWViZXJ6YWVobGlnZXIgUGxhdHogZ2VodCB6dWVyc3QgaW4gZGllIEFic3RhZW5kZSB6d2lzY2hlbiBkZW5cbiAgICAgICAgICAgKiBQdW5rdGVuIChzaWVoZSBnYXAgd2VpdGVyIHVudGVuKS5cbiAgICAgICAgICAgKlxuICAgICAgICAgICAqIE51ciBpbSBzY2htYWxlbiBSZXN0IDk5Mi0xMDUwcHggcmVpY2h0IGF1Y2ggZGFzIG5pY2h0IG1laHI7IGRvcnRcbiAgICAgICAgICAgKiBmYWVsbHQgZGllIEdyb2Vzc2UgbGluZWFyIGF1ZlxuICAgICAgICAgICAqICRtYWluLW5hdmlnYXRpb24tbGluay1mb250LXNpemUtbWluIHp1cnVlY2ssIGRhbWl0IGRpZSBaZWlsZSBuaWNodFxuICAgICAgICAgICAqIHVtYnJpY2h0LlxuICAgICAgICAgICAqXG4gICAgICAgICAgICogIWltcG9ydGFudCwgd2VpbCBNYXggTWVnYSBNZW51IGRpZSBHcm9lc3NlIHBlciBJRC1TZWxla3RvciBzZXR6dC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICAkbmF2LWZvbnQtc2xvcGU6IGRpdmlkZSgkbWFpbi1uYXZpZ2F0aW9uLWxpbmstZm9udC1zaXplIC0gJG1haW4tbmF2aWdhdGlvbi1saW5rLWZvbnQtc2l6ZS1taW4sICRtYWluLW5hdmlnYXRpb24tZmx1aWQtdG8gLSAkbWFpbi1uYXZpZ2F0aW9uLWZsdWlkLWZyb20pO1xuXG4gICAgICAgICAgZm9udC1zaXplOiBjbGFtcChcbiAgICAgICAgICAgICN7JG1haW4tbmF2aWdhdGlvbi1saW5rLWZvbnQtc2l6ZS1taW59LFxuICAgICAgICAgICAgI3skbmF2LWZvbnQtc2xvcGUgKiAxMDB9dncgLSAjeyRuYXYtZm9udC1zbG9wZSAqICRtYWluLW5hdmlnYXRpb24tZmx1aWQtZnJvbSAtICRtYWluLW5hdmlnYXRpb24tbGluay1mb250LXNpemUtbWlufSxcbiAgICAgICAgICAgICN7JG1haW4tbmF2aWdhdGlvbi1saW5rLWZvbnQtc2l6ZX1cbiAgICAgICAgICApICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAubWVnYS1pbmRpY2F0b3Ige1xuICAgICAgICAgIC8qXG4gICAgICAgICAgICogRGFzIFBsdWdpbiBnaWJ0IGRlbSBJbmRpa2F0b3IgaGVpZ2h0OiAxMDAlLCBhbHNvIGRpZSB2b2xsZVxuICAgICAgICAgICAqIExpbmtob2VoZS4gQXVmIERlc2t0b3AgaXN0IGRlciBQZmVpbCBhYmdlc2NoYWx0ZXQgKGNvbnRlbnQ6IG5vbmUpLFxuICAgICAgICAgICAqIGRlciBTcGFuIGJsZWlidCBhYmVyIGVpbiBsZWVyZXMgaW5saW5lLWJsb2NrOiBzZWluZSBHcnVuZGxpbmllIGlzdFxuICAgICAgICAgICAqIGRpZSBVbnRlcmthbnRlLCBlciBzdGVodCBkYW1pdCBrb21wbGV0dCB1ZWJlciBkZXIgVGV4dGdydW5kbGluaWVcbiAgICAgICAgICAgKiB1bmQgc2NoaWVidCBkaWUgWmVpbGUgbmFjaCB1bnRlbi4gRWludHJhZWdlIG1pdCBVbnRlcm1lbnVlIHNhZXNzZW5cbiAgICAgICAgICAgKiBkYWR1cmNoIHRpZWZlciBhbHMgZWluZmFjaGUgTGlua3MuIE9obmUgSW5oYWx0IGtlaW5lIEhvZWhlLlxuICAgICAgICAgICAqIE1vYmlsIGZsb2F0ZXQgZGVyIFNwYW4gKFBsdWdpbikgdW5kIGxpZWd0IG9obmVoaW4gYXVzc2VyaGFsYiBkZXJcbiAgICAgICAgICAgKiBaZWlsZSDigJQgZG9ydCBibGVpYnQgZGllIFBmZWlsLURhcnN0ZWxsdW5nIHVuYW5nZXRhc3RldC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICBjb250ZW50OiAnJyAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICB3aWR0aDogJG1haW4tbmF2aWdhdGlvbi1tZWdhLWluZGljYXRvci13aWR0aCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICBoZWlnaHQ6ICRtYWluLW5hdmlnYXRpb24tbWVnYS1pbmRpY2F0b3Itd2lkdGggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uLy4uL2ltYWdlcy9jaGV2cm9uLXJpZ2h0LnN2ZycpIG5vLXJlcGVhdCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgICogSG92ZXI6IGtlaW5lIExpbmllIG1laHIsIGRpZSBTY2hyaWZ0IHppZWh0IGFuLlxuICAgICAgICAgKiBmb250LXdlaWdodCBsYWVzc3Qgc2ljaCBvaG5lIFZhcmlhYmxlIEZvbnQgbmljaHQgd2VpY2ggZmFocmVuIHVuZFxuICAgICAgICAgKiB3dWVyZGUgYXVzc2VyZGVtIGRpZSBXb3J0YnJlaXRlIGFlbmRlcm4g4oCUIGRpZSBNZW51ZXplaWxlIHphcHBlbHRlXG4gICAgICAgICAqIGRhbm4gYmVpbSBVZWJlcmZhaHJlbi4gRGVyIHRleHQtc2hhZG93IHZlcmRpY2t0IGRlbiBTdHJpY2ggdW1cbiAgICAgICAgICogQnJ1Y2h0ZWlsZSBlaW5lcyBQaXhlbHMsIHR3ZWVudCBzYXViZXIgdW5kIGFlbmRlcnQga2VpbiBMYXlvdXQuXG4gICAgICAgICAqICFpbXBvcnRhbnQsIHdlaWwgTWF4IE1lZ2EgTWVudSBhdWYgLm1lZ2EtbWVudS1saW5rIGVpbmUgZWlnZW5lXG4gICAgICAgICAqIHRyYW5zaXRpb24tS3VyenNjaHJlaWJ3ZWlzZSBzZXR6dCB1bmQgZGllc2UgaGllciBzb25zdCB1ZWJlcnNjaHJpZWJlLlxuICAgICAgICAgKi9cbiAgICAgICAgdHJhbnNpdGlvbjogdGV4dC1zaGFkb3cgJGhvdmVyLXRyYW5zaXRpb24gIWltcG9ydGFudDtcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgIHRleHQtc2hhZG93OiAkbGluay1ob3Zlci10aGlja2VuO1xuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgICogRGllIExpbmllIGJsZWlidCDigJQgYWJlciBudXIgbm9jaCBhbHMgU3RhbmRvcnQtQW56ZWlnZSBkZXIgYWt0dWVsbGVuXG4gICAgICAgICAqIFNlaXRlLCBuaWNodCBtZWhyIGFscyBIb3Zlci1SZWFrdGlvbi4gU2llIGxpZWd0IGRlc2hhbGIgZmVzdCBkYVxuICAgICAgICAgKiBzdGF0dCBhdXMgZGVyIE1pdHRlIGF1Znp1bGF1ZmVuLlxuICAgICAgICAgKi9cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCh4bCkge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6ICRtYWluLW5hdmlnYXRpb24tYWN0aXZlLWVsZW1lbnQtaGVpZ2h0O1xuICAgICAgICAgICAgYm90dG9tOiAtJG1haW4tbmF2aWdhdGlvbi1wYW5lbC1vZmZzZXQ7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXByaW1hcnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgICogRGllIExpbmllIHN0ZWh0IG5vcm1hbGVyd2Vpc2UgdW50ZXIgZGVyIGFrdHVlbGxlbiBTZWl0ZS4gU29iYWxkIGVpblxuICAgICAgICogUGFuZWwgYXVmZ2VrbGFwcHQgaXN0LCB3YW5kZXJ0IHNpZSBhdWYgZGVuIGF1Zmdla2xhcHB0ZW4gRWludHJhZzogZGVyXG4gICAgICAgKiBOdXR6ZXIgc29sbCBzZWhlbiwgd29yaW4gZXIgZ2VyYWRlIGJsYWV0dGVydCwgbmljaHQgbWVociwgd28gZXJcbiAgICAgICAqIGhlcmtvbW10LiBCZWltIFNjaGxpZXNzZW4gZmFlbGx0IHNpZSBhdWYgZGllIGFrdHVlbGxlIFNlaXRlIHp1cnVlY2suXG4gICAgICAgKlxuICAgICAgICogLm1lZ2EtdG9nZ2xlLW9uIGlzdCBoaWVyIGdlZmFocmxvcywgd2VpbCBkYXMgTWVudWUgYXVmIFwiRXZlbnQ6IEtsaWNrXCJcbiAgICAgICAqIHN0ZWh0IChtZWdhbWVudV9zZXR0aW5ncykg4oCUIFVlYmVyZmFocmVuIGtsYXBwdCBuaWNodHMgYXVmLCBkaWUgS2xhc3NlXG4gICAgICAgKiBrb21tdCBhbHNvIG51ciBuYWNoIGVpbmVtIEtsaWNrLiBCZWkgZWluZXIgVW1zdGVsbHVuZyBhdWYgSG92ZXIgd2FlcmVcbiAgICAgICAqIGRpZSBMaW5pZSB3aWVkZXIgZWluIEhvdmVyLUVmZmVrdC5cbiAgICAgICAqL1xuICAgICAgJi5tZWdhLWN1cnJlbnRfcGFnZV9pdGVtLFxuICAgICAgJi5tZWdhLXRvZ2dsZS1vbiB7XG4gICAgICAgICYgPiAubWVnYS1tZW51LWxpbmsge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qXG4gICAgICAgKiBOdXIgbm9jaCBmdWVyIGRhcyBtb2JpbGUgTWVudWU6IGFiIGxnIGtvbW10IGRlciBBYnN0YW5kIGF1cyBkZW1cbiAgICAgICAqIGdhcCBkZXIgRmxleHplaWxlIChzaWVoZSB3ZWl0ZXIgdW50ZW4pLlxuICAgICAgICovXG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKCRzcGFjZXIgLyAyKSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qXG4gICAgICogSW1tZXIgbnVyIGVpbmUgTGluaWU6IGlzdCBlaW4gUGFuZWwgb2ZmZW4sIHRyaXR0IGRpZSBTdGFuZG9ydC1MaW5pZSBkZXJcbiAgICAgKiBha3R1ZWxsZW4gU2VpdGUgenVydWVjayB1bmQgdWViZXJsYWVzc3Qgc2llIGRlbSBhdWZnZWtsYXBwdGVuIEVpbnRyYWcuXG4gICAgICovXG4gICAgJjpoYXMoPiAubWVnYS1tZW51LWl0ZW0ubWVnYS10b2dnbGUtb24pIHtcbiAgICAgICYgPiAubWVnYS1tZW51LWl0ZW0ubWVnYS1jdXJyZW50X3BhZ2VfaXRlbTpub3QoLm1lZ2EtdG9nZ2xlLW9uKSB7XG4gICAgICAgICYgPiAubWVnYS1tZW51LWxpbmsge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1lZ2Etc3ViLW1lbnUge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkc3BhY2VyICFpbXBvcnRhbnQ7XG4gICAgICAvKiBHZWdlbnN0dWVjayB6dW0gd2hpdGUtc3BhY2U6IG5vd3JhcCBkZXIgSGF1cHR6ZWlsZS4gKi9cbiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cbiAgICAgIC8qXG4gICAgICAgKiBIb3ZlciB3aWUgYmVpIGRlbiBIYXVwdG1lbnVlcHVua3Rlbjoga2VpbmUgTGluaWUsIGRpZSBTY2hyaWZ0IHppZWh0IGFuXG4gICAgICAgKiAoc2llaGUgQmVncnVlbmR1bmcgb2JlbikuIEVyc3QgYWIgbGcsIGRhcnVudGVyIGdyZWlmdCBkYXMgbW9iaWxlXG4gICAgICAgKiBBa2tvcmRlb24sIGRlc3NlbiBFaW50cmFlZ2UgZGllIGdhbnplIFplaWxlIGFscyBUYXAtRmxhZWNoZSBicmF1Y2hlbi5cbiAgICAgICAqIGlubGluZS1ibG9jaywgZGFtaXQgZGllIEhvdmVyLUZsYWVjaGUgc28gYnJlaXQgaXN0IHdpZSBkZXIgVGV4dCB1bmRcbiAgICAgICAqIG5pY2h0IHdpZSBkaWUgZ2FuemUgU3BhbHRlLiBLb3BmemVpbGVuIChtZWdhLWRpc2FibGUtbGluaykgc2luZFxuICAgICAgICogYXVzZ2Vub21tZW4sIHNpZSBzaW5kIG5pY2h0IGFua2xpY2tiYXIuXG4gICAgICAgKi9cbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICAgICAgLm1lZ2EtbWVudS1pdGVtOm5vdCgubWVnYS1kaXNhYmxlLWxpbmspIHtcbiAgICAgICAgICAmID4gLm1lZ2EtbWVudS1saW5rIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICAgICAgICAgICAgLyogYmFja2dyb3VuZCBibGVpYnQgbWl0IGRyaW4g4oCUIGRpZSBGbGFlY2hlIGRlcyBFaW50cmFncyBmYWVocnRcbiAgICAgICAgICAgICAgIHdlaXRlciwgc2llaGUgLm1lZ2EtbWVudS1pdGVtIC5tZWdhLW1lbnUtbGluayB3ZWl0ZXIgdW50ZW4uICovXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kICRob3Zlci10cmFuc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1zaGFkb3cgJGhvdmVyLXRyYW5zaXRpb24gIWltcG9ydGFudDtcblxuICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICY6Zm9jdXMsXG4gICAgICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgICB0ZXh0LXNoYWRvdzogJGxpbmstaG92ZXItdGhpY2tlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLm1lZ2EtbWVudS1pdGVtIHtcbiAgICAgICAgLm1lZ2EtbWVudS1saW5rIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kICRob3Zlci10cmFuc2l0aW9uICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAubWVnYS1pbmRpY2F0b3Ige1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6ICcnICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIHdpZHRoOiAkbWFpbi1uYXZpZ2F0aW9uLW1lZ2EtaW5kaWNhdG9yLXdpZHRoICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIGhlaWdodDogJG1haW4tbmF2aWdhdGlvbi1tZWdhLWluZGljYXRvci13aWR0aCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW1hZ2VzL2NoZXZyb24tcmlnaHQuc3ZnJykgbm8tcmVwZWF0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJGJvcmRlci13aWR0aCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcblxuICAgICAgLypcbiAgICAgICAqIEFic3RhZW5kZSBkZXIgSGF1cHRtZW51ZXplaWxlXG4gICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICogTWF4IE1lZ2EgTWVudSBzZXR6dCBkaWUgUHVua3RlIGFscyBpbmxpbmUtYmxvY2sgbWl0IGZlc3RlbVxuICAgICAgICogQXVzc2VuYWJzdGFuZCBuZWJlbmVpbmFuZGVyLiBEZXIgYmxlaWJ0IG9iZXJoYWxiIHZvblxuICAgICAgICogJG1haW4tbmF2aWdhdGlvbi1nYXAtdG8gZ2VuYXUgc28gc3RlaGVuIHdpZSBiaXNoZXJcbiAgICAgICAqICgkbWFpbi1uYXZpZ2F0aW9uLWl0ZW0tZ2FwICsgMng2cHggTGluay1Jbm5lbmFic3RhbmQgPSA1MHB4IHZvbiBUZXh0XG4gICAgICAgKiB6dSBUZXh0KSwgdWViZXJzY2h1ZXNzaWdlIEJyZWl0ZSBibGVpYnQgcmVjaHRzIGZyZWkg4oCUIGRpZSBaZWlsZSBzb2xsXG4gICAgICAgKiBzaWNoIGF1ZiBncm9zc2VuIFNjaGlybWVuIG5pY2h0IGF1c2VpbmFuZGVyemllaGVuLlxuICAgICAgICpcbiAgICAgICAqIERhcnVudGVyIHdpcmQgZGVyIEFic3RhbmQgenVyIFJlc2VydmU6IGVyIGZhZWxsdCBsaW5lYXIgYmlzIGF1ZlxuICAgICAgICogJG1haW4tbmF2aWdhdGlvbi1pdGVtLW1pbi1nYXAgdW5kIGRpZSBaZWlsZSBudXR6dCBkYWJlaSBkaWUgdm9sbGVcbiAgICAgICAqIEJyZWl0ZSBkZXIgU3BhbHRlLCBzdGF0dCB1bXp1YnJlY2hlbi4gRGllIFN0ZWlndW5nIGlzdCBzbyBnZXdhZWhsdCxcbiAgICAgICAqIGRhc3MgZGVyIEFic3RhbmQgdW5nZWZhZWhyIGRlbSBmcmVpZW4gUGxhdHogZW50c3ByaWNodDpcbiAgICAgICAqIGRpZSBzZWNocyBkZXV0c2NoZW4gUHVua3RlIGJlbGVnZW4gYmVpIDIwcHggenVzYW1tZW4gcnVuZCA3MTBweFxuICAgICAgICogKFRleHQgKyBJbm5lbmFic3RhZW5kZSArIFBmZWlsZSksIGRpZSBOYXZpZ2F0aW9uc3NwYWx0ZSBpc3QgZXR3YVxuICAgICAgICogRmVuc3RlcmJyZWl0ZSBtaW51cyAyOThweCBicmVpdCDigJQgZGVyIFJlc3QgdmVydGVpbHQgc2ljaCBhdWYgZGllXG4gICAgICAgKiBmdWVuZiBMdWVja2VuLiBCZXd1c3N0IGVpbiBwYWFyIFBpeGVsIGtuYXBwZXIgZ2VyZWNobmV0OiBkaWUgWmVpbGVcbiAgICAgICAqIGRhcmYgbGllYmVyIG1pbmltYWwgc2NobWFsZXIgYmxlaWJlbiBhbHMgdWViZXJ6dWxhdWZlbi5cbiAgICAgICAqXG4gICAgICAgKiAhaW1wb3J0YW50IGJlaSBkaXNwbGF5IHVuZCB3aGl0ZS1zcGFjZSwgd2VpbCBNYXggTWVnYSBNZW51IGRpZSBMaXN0ZVxuICAgICAgICogaW4gc2VpbmVtIFJlc2V0IHVlYmVyIHp3ZWkgSUQtU2VsZWt0b3JlbiBhdWYgZGlzcGxheTogYmxvY2sgdW5kXG4gICAgICAgKiB3aGl0ZS1zcGFjZTogbm9ybWFsIHNldHp0IOKAlCBkYWdlZ2VuIGtvbW10IGVpbmUgS2xhc3NlbnJlZ2VsIG5pY2h0IGFuLlxuICAgICAgICogYWxpZ24taXRlbXMgdW5kIGdhcCBydWVocnQgZGFzIFBsdWdpbiBuaWNodCBhbi5cbiAgICAgICAqL1xuICAgICAgJG5hdi1nYXAtc2xvcGU6IGRpdmlkZSgkbWFpbi1uYXZpZ2F0aW9uLWl0ZW0tZ2FwIC0gJG1haW4tbmF2aWdhdGlvbi1pdGVtLW1pbi1nYXAsICRtYWluLW5hdmlnYXRpb24tZ2FwLXRvIC0gJG1haW4tbmF2aWdhdGlvbi1nYXAtZnJvbSk7XG5cbiAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IGNsYW1wKFxuICAgICAgICAjeyRtYWluLW5hdmlnYXRpb24taXRlbS1taW4tZ2FwfSxcbiAgICAgICAgI3skbmF2LWdhcC1zbG9wZSAqIDEwMH12dyAtICN7JG5hdi1nYXAtc2xvcGUgKiAkbWFpbi1uYXZpZ2F0aW9uLWdhcC1mcm9tIC0gJG1haW4tbmF2aWdhdGlvbi1pdGVtLW1pbi1nYXB9LFxuICAgICAgICAjeyRtYWluLW5hdmlnYXRpb24taXRlbS1nYXB9XG4gICAgICApO1xuXG4gICAgICAvKlxuICAgICAgICogRGllIFB1bmt0ZSBiZWhhbHRlbiBpaHJlIEluaGFsdHNicmVpdGUg4oCUIG9obmUgZGFzIHd1ZXJkZW4gc2llIGFsc1xuICAgICAgICogRmxleGVsZW1lbnRlIHNjaHJ1bXBmZW4gdW5kIGRlciBUZXh0IGRhcmluIHVtYnJlY2hlbi4gWnVzYW1tZW4gbWl0XG4gICAgICAgKiBkZW0gbm93cmFwIGJsZWlidCBkaWUgWmVpbGUgZGFtaXQgZWluemVpbGlnLiBEaWUgUGFuZWxzIGRhcnVudGVyXG4gICAgICAgKiBzZXR6ZW4gZGFzIHdpZWRlciB6dXJ1ZWNrICgubWVnYS1zdWItbWVudSksIGlociBUZXh0IG11c3MgdW1icmVjaGVuLlxuICAgICAgICovXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG5cbiAgICAgICYgPiAubWVnYS1tZW51LWl0ZW0ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgLyogRGVyIEFic3RhbmQga29tbXQgamV0enQgYXVzIGRlbSBnYXAgZGVyIFplaWxlLCBuaWNodCBtZWhyIGF1c1xuICAgICAgICAgICBNZWdhIE1lbnUgPiBNZW51ZS1UaGVtZXMgPiBIYXVwdG1lbnVlcHVua3RlID4gQWJzdGFuZC4gKi9cbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5tZWdhLW1lbnUtYmFjayB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRibGFjayAhaW1wb3J0YW50O1xuICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpICFpbXBvcnRhbnQ7XG4gICAgICBtYXJnaW4tdG9wOiAxNXB4ICFpbXBvcnRhbnQ7XG5cbiAgICAgICYgPiAubWVnYS1tZW51LXRhYmJlZCB7XG4gICAgICAgICYgPiAubWVnYS1zdWItbWVudSB7XG4gICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYgPiAubWVnYS1tZW51LWl0ZW0ge1xuICAgICAgICAmID4gLm1lZ2Etc3ViLW1lbnUge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubWVnYS1tZW51LWl0ZW0ge1xuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgLm1lZ2EtbWVudS1saW5rIHtcbiAgICAgICAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogJG1haW4tbmF2aWdhdGlvbi1tb2JpbGUtaXRlbS1oZWlnaHQgIWltcG9ydGFudDtcbiAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLm1lZ2EtZGlzYWJsZS1saW5rIHtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5tZWdhLXN1Yi1tZW51IHtcbiAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5tZWdhLW1lbnUtY2xlYXIge1xuICAgICAgICAubWVnYS1tZW51LWl0ZW0ge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50b3BiYXIge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihsZykge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGNvbG9yOiAkYmxhY2sgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci10b3A6ICRib3JkZXItd2lkdGggc29saWQgJGJsYWNrO1xuICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYygkc3BhY2VyICogMyk7XG4gICAgICBwYWRkaW5nLXRvcDogY2FsYygkc3BhY2VyICogMik7XG5cbiAgICAgIC53cC1ibG9jay1ncm91cCB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3RhcnQgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgLm5hdmlnYXRpb24tY29udGFpbmVyIHtcbiAgICAgICAgLmNvbnRhY3QtbmF2aWdhdGlvbiB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKlxuICogRnJ1ZWhlciB3dXJkZSBoaWVyIGJlaSBvZmZlbmVtIE1lZ2EtTWVudWUgZGllIEhvdmVyLUxpbmllIGFsbGVyIEVpbnRyYWVnZVxuICogd2VnZ2VibGVuZGV0IHVuZCBudXIgZGllIGRlcyBhdWZnZWtsYXBwdGVuIFB1bmt0ZXMgc3RlaGVuIGdlbGFzc2VuLiBTZWl0IGRpZVxuICogTmF2aWdhdGlvbiBvaG5lIEhvdmVyLUxpbmllIGFyYmVpdGV0LCBnaWJ0IGVzIG5pY2h0cyBtZWhyIHdlZ3p1YmxlbmRlbjogZGllXG4gKiBlaW56aWdlIHZlcmJsaWViZW5lIExpbmllIG1hcmtpZXJ0IGRpZSBha3R1ZWxsZSBTZWl0ZSB1bmQgc29sbCBhdWNoIGJlaVxuICogb2ZmZW5lbSBNZW51ZSBzaWNodGJhciBibGVpYmVuLlxuICovXG4iLCIvKlxuQXNpZGVcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5Db250YWlucyBjdXN0b20gc3R5bGVzIGZvciB0aGUgYXNpZGUuXG4qL1xuXG5hc2lkZSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8qXG5OYXZpZ2F0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3IgbmF2aWdhdGlvbi5cbiovXG4ubmF2aWdhdGlvbi1jb250YWluZXIge1xuICAmOndoZXJlKGJvZHkgLmlzLWxheW91dC1mbGV4KSB7XG4gICAgZ2FwOiBub3JtYWw7XG4gIH1cblxuICAuY29udGFjdC1uYXZpZ2F0aW9uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICAvKiBUaGUgaWNvbiByZWFjaGVzIG91dHNpZGUgdGhlIGl0ZW0gYm94LCBzbyBpdHMgb2Zmc2V0IGlzIGFkZGVkXG4gICAgICAgb24gdG9wIG9mIHRoZSBnYXAgdG8gdGhlIHByZXZpb3VzIG5laWdoYm91ci4gKi9cbiAgICBtYXJnaW4tbGVmdDogJGhlYWRlci10b3BiYXItY29udGFjdC1pY29uLW9mZnNldCAhaW1wb3J0YW50O1xuXG4gICAgbGkge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogJGhlYWRlci1pY29uLXdpZHRoO1xuICAgICAgICBoZWlnaHQ6ICRoZWFkZXItaWNvbi13aWR0aDtcbiAgICAgICAgdG9wOiAtN3B4O1xuICAgICAgICBsZWZ0OiAtJGhlYWRlci10b3BiYXItY29udGFjdC1pY29uLW9mZnNldDtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvY29udGFjdC5zdmcnKSBuby1yZXBlYXQgMCA0MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb25fX2NvbnRhaW5lciB7XG4gICAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtIHtcbiAgICAgICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbV9fY29udGVudCB7XG4gICAgICAgICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXgtc21hbGwpO1xuICAgICAgICAgIC8qXG4gICAgICAgICAgICogdGV4dC1zaGFkb3cgbWl0IGluIGRlciBUcmFuc2l0aW9uOiBkaWUgVmVyZGlja3VuZyBrb21tdCBhdXMgZGVyXG4gICAgICAgICAgICogZ2xvYmFsZW4gTGluay1SZWdlbCAoYmFzZS9fYmFzZSksIGRpZXNlIEt1cnpzY2hyZWlid2Vpc2UgaGllciBpc3RcbiAgICAgICAgICAgKiBzcGV6aWZpc2NoZXIgdW5kIHd1ZXJkZSBzaWUgc29uc3QgaGFydCB1bXNwcmluZ2VuIGxhc3Nlbi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAkaG92ZXItdHJhbnNpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0LXNoYWRvdyAkaG92ZXItdHJhbnNpdGlvbjtcblxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmNvbXBhbnktbmF2aWdhdGlvbixcbi5wb3J0Zm9saW8tbmF2aWdhdGlvbiB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uX19jb250YWluZXIge1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gIH1cbn1cblxuLmxlZ2FsLW5hdmlnYXRpb24ge1xuICAud3AtYmxvY2stbmF2aWdhdGlvbl9fY29udGFpbmVyIHtcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnfCc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMXB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogLTE0cHg7XG4gICAgICB9XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5Gb290ZXJcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5Db250YWlucyBjdXN0b20gc3R5bGVzIGZvciB0aGUgZm9vdGVyIGF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UuXG5UaGUgZm9vdGVyIGNvbnRhaW5zIGEgbmF2aWdhdGlvbi5cbiovXG5cbi8qXG4gKiBMdWZ0IHVlYmVyIGRlbSBGb290ZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2llIGdlaG9lcnQgZGVtIEZvb3RlciwgbmljaHQgZGVyIGxldHp0ZW4gU2VrdGlvbjogZWluIEZhcmJiYW5kIG11c3MgYnVlbmRpZ1xuICogYXVmIGRlciBGb290ZXItS2FudGUgc2l0emVuIGtvZW5uZW4sIHVuZCBlaW5lIHVuZ2VzdHJpY2hlbmUgbGV0enRlIFNla3Rpb25cbiAqIHNvbGwgaWhyZSBoYWxiZSBQb3J0aW9uIG5pY2h0IHp1IGVpbmVtIFNvbmRlcmZhbGwgYXVmYmxhc2VuIG11ZXNzZW4uXG4gKlxuICogRXJzZXR6dCBkZW4gZmVzdGVuIDEwMHB4LVNwYWNlciwgZGVyIGJpc2hlciBhbHMgZXJzdGVyIEJsb2NrIGltXG4gKiBGb290ZXItUGF0dGVybiBzdGFuZCDigJQgZGVyIGxpZWYgaW4ga2VpbmVyIEJyZWl0ZSBtaXQuIEpldHp0IGRlcnNlbGJlIFdlcnQgd2llXG4gKiBkaWUgSW5uZW5sdWZ0IGVpbmVzIEZhcmJiYW5kczogNjBweCBtb2JpbCwgMTEycHggYWIgRGVza3RvcC5cbiAqXG4gKiAoMCwxLDEpIHNjaGxhZWd0IGRlbiBCbG9jay1BYnN0YW5kIGRlcyBLZXJucyBgOndoZXJlKC53cC1zaXRlLWJsb2NrcykgPiAqYFxuICogKDAsMSwwKS4gT2huZSBkYXMgbWFyZ2luLWJsb2NrLXN0YXJ0IGJsaWViZW4gMjBweCBXZWlzcyB6d2lzY2hlbiBsZXR6dGVyXG4gKiBTZWt0aW9uIHVuZCBGb290ZXIgc3RlaGVuIOKAlCB1bnNpY2h0YmFyLCBzb2xhbmdlIGRlciBGb290ZXIgd2Vpc3MgaXN0LFxuICogc2ljaHRiYXIgaW4gZGVtIE1vbWVudCwgaW4gZGVtIGVyIGVzIG5pY2h0IG1laHIgaXN0LlxuICovXG4ud3Atc2l0ZS1ibG9ja3MgPiBmb290ZXIge1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7XG4gIHBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLXNlY3Rpb24tcGFkLWJhc2UpO1xufVxuXG5mb290ZXIge1xuICAvKlxuICAgKiBMb2dvIGJhciBhdCB0aGUgdG9wIG9mIHRoZSBmb290ZXJcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4gIC5ib3JkZXItYm90dG9tIHtcbiAgICAud3AtYm9vdHN0cmFwLWJsb2Nrcy1yb3cge1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIEFiIHNtIHN0ZWhlbiBMb2dvIHVuZCBCdWVya2VydC1aZWlsZSBuZWJlbmVpbmFuZGVyLiBCZWlkZSBTcGFsdGVuXG4gICAgICogZHVlcmZlbiBkYW5uIG51ciBzbyBob2NoIHNlaW4gd2llIGlociBJbmhhbHQg4oCUIGRlciBBYnNhdHogYnJpbmd0XG4gICAgICogc29uc3QgMXJlbSBBdXNzZW5hYnN0YW5kIGF1cyBkZW0gQm9vdHN0cmFwLVJlYm9vdCBtaXQsIHVtIGRlbiBkaWVcbiAgICAgKiBaZWlsZSBpaG4gbmFjaCBvYmVuIHplbnRyaWVydC4gTW9iaWwgYmxlaWJ0IGRlciBBYnN0YW5kIGFscyBUcmVubnVuZ1xuICAgICAqIHp3aXNjaGVuIExvZ28gdW5kIFRleHQgc3RlaGVuLlxuICAgICAqL1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qXG4gICAgICogRGFzIEJ1ZXJrZXJ0LUxvZ28gc3RlaHQgaW5saW5lIGF1ZiBkZXIgVGV4dGdydW5kbGluaWUgdW5kIHJhZ3QgZGFtaXRcbiAgICAgKiBrb21wbGV0dCBuYWNoIG9iZW4gYXVzIGRlciBaZWlsZSBoZXJhdXMuIG1pZGRsZSBsZWd0IHNlaW5lIE1pdHRlIGF1ZlxuICAgICAqIGRpZSBUZXh0bWl0dGUsIGVyc3QgZGFkdXJjaCBkZWNrdCBlcyBzaWNoIG1pdCBkZW0gRmFldGgtTG9nby5cbiAgICAgKi9cbiAgICBwIGltZyB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgIFtjbGFzc149J2NvbC0nXTpmaXJzdC1jaGlsZCxcbiAgICBbY2xhc3MqPScgY29sLSddOmZpcnN0LWNoaWxkIHtcbiAgICAgIC53cC1ibG9jay1pbWFnZSB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAvKiBtYXgtaGVpZ2h0IGluc3RlYWQgb2YgaGVpZ2h0IGtlZXBzIHRoZSBhc3BlY3QgcmF0aW8gaW50YWN0XG4gICAgICAgICAgICAgd2hlbiB0aGUgY29sdW1uIGdldHMgbmFycm93ZXIgdGhhbiB0aGUgbG9nbyBvbiBzbWFsbCBzY3JlZW5zLiAqL1xuICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgbWF4LWhlaWdodDogJG5hdmlnYXRpb24tbG9nby1oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBGdXNzbGVpc3Rlbi1MaW5rc1xuICAgKiAtLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBOdXIgZGVyIFJ1aGV6dXN0YW5kOiBjb2xvcjogaW5oZXJpdCBzdGF0dCBkZXIgTGluay1GYXJiZSBhdXMgZGVyXG4gICAqIHRoZW1lLmpzb24sIGRhbWl0IGRpZSBMaW5rcyBpbiBkZXIgU2NocmlmdGZhcmJlIGlocmVyIFVtZ2VidW5nIHN0ZWhlbiB1bmRcbiAgICogdm9uIGRvcnQgaW5zIEhlbGxibGF1IGxhdWZlbi4gRGVuIEhvdmVyIHRyYWVndCBkaWUgZ2xvYmFsZSBMaW5rLVJlZ2VsIGluXG4gICAqIGJhc2UvX2Jhc2UuIEZydWVoZXIgc3RhbmQgaW4gZGVyIEljb24tU3BhbHRlIGVpbmUgVW50ZXJzdHJlaWNodW5nIGJlaW1cbiAgICogVWViZXJmYWhyZW47IGRpZSBmYWVsbHQgd2VnLlxuICAgKlxuICAgKiBCdXR0b25zIHNpbmQgYXVzZ2Vub21tZW46IGRlciBLb250YWt0LUJ1dHRvbiBicmluZ3Qgc2VpbmUgZWlnZW5lIEZsYWVjaGVcbiAgICogdW5kIHNlaW5lbiBlaWdlbmVuIFZlcmxhdWZzLUhvdmVyIG1pdC5cbiAgICovXG4gIGE6d2hlcmUoOm5vdCgud3AtZWxlbWVudC1idXR0b24pKSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgYSB7XG4gICAgJi5jb250YWN0LW1haWwsICYuY29udGFjdC1waG9uZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDhweDtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmNvbnRhY3QtbWFpbCB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW1hZ2VzL2NvbnRhY3Quc3ZnJykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5jb250YWN0LXBob25lIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvcGhvbmUuc3ZnJykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZvb3Rlci1jb250YWN0LXdyYXBwZXIge1xuICAgIGJvcmRlci10b3A6IHZhcigtLWJzLWJvcmRlci13aWR0aCkgdmFyKC0tYnMtYm9yZGVyLXN0eWxlKSB2YXIoLS1icy1ib3JkZXItY29sb3IpO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1icy1ib3JkZXItd2lkdGgpIHZhcigtLWJzLWJvcmRlci1zdHlsZSkgdmFyKC0tYnMtYm9yZGVyLWNvbG9yKTtcbiAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgfVxuXG4gICAgLmNvbnRhY3QtYnV0dG9uIHtcbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICAgICAgfVxuXG4gICAgICBhIHtcbiAgICAgICAgJi53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5mb290ZXItaWNvbi1jb250ZW50IHtcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXG4gICAgLmZvb3Rlci1pY29uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBoZWlnaHQ6ICRmb290ZXItaWNvbi1oZWlnaHQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoJHNwYWNlciAvIDIpO1xuXG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5mb290ZXItaWNvbi1jb250YWN0LWNvbnRlbnQge1xuICAgICAgLmZvb3Rlci1pY29uIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAuNzc1cmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5mb290ZXItaWNvbi1uZXdzLWNvbnRlbnQge1xuICAgICAgLmZvb3Rlci1pY29uIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAuMzI1cmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5mb290ZXItaWNvbi1yZWZlcmVuY2VzLWNvbnRlbnQge1xuICAgICAgLmZvb3Rlci1pY29uIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxLjRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuY29udGFjdC1idXR0b24ge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5mb290ZXItbGluay1saXN0IHtcbiAgICBhIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICB0b3A6IDJweDtcbiAgICAgICAgbGVmdDogLTZweDtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJGhvdmVyLXRyYW5zaXRpb247XG5cbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclMjB3aWR0aD0nMjQnJTIwaGVpZ2h0PScyNCclM0UlM0NwYXRoJTIwZmlsbD0nbm9uZSclMjBzdHJva2U9JyUyMzI3MmY2ZiclMjBzdHJva2UtbGluZWNhcD0ncm91bmQnJTIwc3Ryb2tlLXdpZHRoPScxLjUnJTIwZD0nbTE2Ljc4JTIwMTQuMi00LjExLTQuMTFhMSUyMDElMjAwJTIwMCUyMDAtMS40MSUyMDBsLTQlMjA0Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgIH1cblxuICAgICAgJjpob3Zlcjo6YmVmb3JlIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpIHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgICB9XG5cbiAgICAgIHNwYW4ge1xuICAgICAgICBtYXJnaW4tbGVmdDogMThweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1bC5sZWdhbC1uYXZpZ2F0aW9uIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcbiAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5BZGFwdGl2ZSBzZWN0aW9uIHNwYWNpbmdcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSB2ZXJ0aWNhbCByaHl0aG0gb2YgZnVsbC13aWR0aCwgYmFja2dyb3VuZC1wYWludGVkXG5zZWN0aW9ucy4gUGFpbnRlZCBzZWN0aW9ucyBzaXQgZmx1c2ggKHplcm8gbWFyZ2luKSBhbmQgY2FycnkgYSBnZW5lcm91cyA2MHB4IGJhc2VcbnBhZGRpbmc7IHRoZSBnYXAgYmV0d2VlbiB0d28gc3RhY2tlZCBzZWN0aW9ucyBpcyB0aGVuIHRyaW1tZWQgYXV0b21hdGljYWxseSBiYXNlZFxub24gaG93IHRoZWlyIGJhY2tncm91bmRzIHJlbGF0ZTpcblxuICDigKIgRGlmZmVyZW50IGNvbG91cnMgKGJvdW5kYXJ5KSAgLT4gZnVsbCBiYXNlIHBhZGRpbmcgICAoLS02MCwgNjDihpIxMTJweClcbiAg4oCiIFR3byBsaWdodC93aGl0ZSBzZWN0aW9ucyAgICAgIC0+IHRyaW1tZWQgICAgICAgICAgICAgKC0tNTAsIDMw4oaSNjBweClcbiAg4oCiIFRoZSBleGFjdCBzYW1lIGNvbG91ciAgICAgICAgIC0+IG1lcmdlZCBpbnRvIG9uZSBibG9jICgtLTQwLCB+MzDihpI0OHB4KVxuXG5XaHk6IGEgZmxhdCA2MC82MCBldmVyeXdoZXJlIGRvdWJsZXMgdG8gfjEyMHB4IGJldHdlZW4gdHdvIHBhaW50ZWQgc2VjdGlvbnMgYW5kXG5tYWtlcyBzYW1lLWNvbG91cmVkIHNlY3Rpb25zIHJlYWQgYXMgdHdvIHNlcGFyYXRlIGJsb2Nrcy4gVGhpcyBhZGFwdHMgdGhlIGdhcCBzb1xubmVpdGhlciBoYXBwZW5zIOKAlCB3aXRob3V0IGhhbmQtdHVuaW5nIGFueSBzaW5nbGUgc2VjdGlvbi5cblxuUnVsZS1iYXNlZCAmIHNjYWxhYmxlOiBldmVyeSBwYWludGVkIHNlY3Rpb24gaXMgb25lIHJvdyBpbiB0aGUgJHNlY3Rpb25zIG1hcFxuYmVsb3cgKGl0cyBzZWxlY3Rvciwgd2hldGhlciBpdCBcInJlYWRzIGxpZ2h0XCIsIGFuZCBpdHMgYmFja2dyb3VuZCBjb2xvdXIgaWRlbnRpdHlcbmZvciBtZXJnZSBkZXRlY3Rpb24pLiBBZGQgYSBwYWxldHRlIGNvbG91ciBvciBhIG5ldyBzZWN0aW9uIGJsb2NrID0gYWRkIG9uZSByb3c7XG5hbGwgYmFzZS90cmltL21lcmdlIHJ1bGVzIHJlZ2VuZXJhdGUgZnJvbSBpdC4gTm8gQ1NTIGlzIHdyaXR0ZW4gcGVyIHNlY3Rpb24uXG5cblJlcXVpcmVzIDpoYXMoKSAoYmFzZWxpbmUgaW4gYWxsIGN1cnJlbnQgYnJvd3NlcnMpLiBXaGVyZSB1bnN1cHBvcnRlZCwgc2VjdGlvbnNcbnNpbXBseSBrZWVwIHRoZSBmdWxsIGJhc2UgcGFkZGluZyDigJQgbmV2ZXIgYnJva2VuLCBqdXN0IG5vdCB0cmltbWVkLlxuKi9cblxuLyogU2VtYW50aWMgYWxpYXNlcyBvdmVyIHRoZSB0aGVtZS5qc29uIHNwYWNpbmcgc2NhbGUuIFJldHVuZSB0aGUgd2hvbGUgc3lzdGVtXG4gICBmcm9tIGhlcmU7IGV2ZXJ5IHJ1bGUgYmVsb3cgcmVmZXJlbmNlcyB0aGVzZSwgbmV2ZXIgYSByYXcgLS1wcmVzZXQgdG9rZW4uICovXG46cm9vdCB7XG4gIC0tc2VjdGlvbi1wYWQtYmFzZTogIHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTYwKTsgLy8gY29sb3VyIGJvdW5kYXJ5ICAgKDYw4oaSMTEycHgpXG4gIC0tc2VjdGlvbi1wYWQtbGlnaHQ6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTUwKTsgLy8gbGlnaHQg4oaUIGxpZ2h0ICAgICAgKDMw4oaSNjBweClcbiAgLS1zZWN0aW9uLXBhZC1tZXJnZTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApOyAvLyBzYW1lLWNvbG91ciBtZXJnZSAgKH4zMOKGkjQ4cHgpXG59XG5cbi8qXG5UaGUgc2VjdGlvbiByZWdpc3RyeSDigJQgdGhlIE9ORSBwbGFjZSB0byBlZGl0IHdoZW4gdGhlIHBhbGV0dGUgb3Igc2VjdGlvbiBibG9ja3NcbmNoYW5nZS4gRWFjaCBlbnRyeTpcbiAgc2VsICAgOiB0aGUgc2VsZWN0b3IgdGhhdCBtYXRjaGVzIHRoaXMgc2VjdGlvbiBhdCBzaWJsaW5nIGxldmVsIGluIHRoZSBET01cbiAgdG9uZSAgOiBgbGlnaHRgICh3aGl0ZS9uZWFyLXdoaXRlL2xpZ2h0LWdyZXkpIG9yIGBkYXJrYCAoY29sb3VyL2RhcmspIOKAlCBkcml2ZXNcbiAgICAgICAgICB0aGUgXCJ0d28gbGlnaHQgc2VjdGlvbnNcIiB0cmltXG4gIGNvbG9yIDogYmFja2dyb3VuZC1jb2xvdXIgaWRlbnRpdHkg4oCUIHR3byBhZGphY2VudCBzZWN0aW9ucyB3aG9zZSBgY29sb3JgXG4gICAgICAgICAgbWF0Y2hlcyBhcmUgdHJlYXRlZCBhcyB0aGUgc2FtZSBibG9jayBhbmQgbWVyZ2VkICh3b3JrcyBhY3Jvc3MgdHlwZXMsXG4gICAgICAgICAgZS5nLiBhIHByaW1hcnkgZ3JvdXAgbmV4dCB0byB0aGUgcHJpbWFyeSBjYXJkLWdyaWQgYmxvY2spXG4qL1xuLypcbiAqIERlciBnZW1laW5zYW1lIFZvcnNhdHogYWxsZXIgUmVnaXN0cnktWmVpbGVuLlxuICpcbiAqIEJld3Vzc3QgbnVyIGAuYWxpZ25mdWxsYCB1bmQgbmljaHQgYC53cC1ibG9jay1ncm91cC5hbGlnbmZ1bGxgOiBkaWVcbiAqIFZlcmxhdWZzYmFlbmRlciBkZXMgQmVzdGFuZHMgc2luZCB0ZWlscyBhbHMgY29yZS9jb2x1bW5zIGdlc3BlaWNoZXJ0LCBuaWNodFxuICogYWxzIGNvcmUvZ3JvdXAuIE1pdCBkZXIgZW5nZXJlbiBGYXNzdW5nIGZpZWxlbiBzaWUgZHVyY2ggZGllIFJlZ2lzdHJ5IOKAlCBkaWVcbiAqIFRyaW1tLSB1bmQgTWVyZ2UtUmVnZWxuIGZldWVydGVuIGRvcnQgbmllLCB1bmQgZGVyIGhlbGxlIE5hY2hiYXIgYmVrYW0gbnVyXG4gKiBkaWUgaGFsYmUgc3RhdHQgZGVyIGdhbnplbiBQb3J0aW9uLiBgYWxpZ25mdWxsYCBzdGVodCBpbSBCZXN0YW5kXG4gKiBhdXNzY2hsaWVzc2xpY2ggYW4gVG9wLUxldmVsLVNla3Rpb25lbi5cbiAqL1xuJHNlY3Rpb24tc2VsZWN0b3I6ICcuYWxpZ25mdWxsJztcbiRzZWN0aW9uczogKFxuICAvLyBQYWxldHRlIGJhY2tncm91bmQtY29sb3VyIGdyb3VwIHNlY3Rpb25zIChoYXMte3NsdWd9LWJhY2tncm91bmQtY29sb3IpXG4gIChzZWw6ICcjeyRzZWN0aW9uLXNlbGVjdG9yfS5oYXMtYmFzZS1iYWNrZ3JvdW5kLWNvbG9yJywgICAgICAgICAgICAgdG9uZTogbGlnaHQsIGNvbG9yOiAnYmFzZScpLFxuICAoc2VsOiAnI3skc2VjdGlvbi1zZWxlY3Rvcn0uaGFzLWJhc2UtdHJhbnNwYXJlbnQtYmFja2dyb3VuZC1jb2xvcicsIHRvbmU6IGxpZ2h0LCBjb2xvcjogJ2Jhc2UtdHJhbnNwYXJlbnQnKSxcbiAgKHNlbDogJyN7JHNlY3Rpb24tc2VsZWN0b3J9Lmhhcy10ZXJ0aWFyeS1iYWNrZ3JvdW5kLWNvbG9yJywgICAgICAgICB0b25lOiBsaWdodCwgY29sb3I6ICd0ZXJ0aWFyeScpLFxuICAoc2VsOiAnI3skc2VjdGlvbi1zZWxlY3Rvcn0uaGFzLXF1YXRlcm5hcnktYmFja2dyb3VuZC1jb2xvcicsICAgICAgIHRvbmU6IGxpZ2h0LCBjb2xvcjogJ3F1YXRlcm5hcnknKSxcbiAgKHNlbDogJyN7JHNlY3Rpb24tc2VsZWN0b3J9Lmhhcy1zZXB0ZW5hcnktYmFja2dyb3VuZC1jb2xvcicsICAgICAgICB0b25lOiBsaWdodCwgY29sb3I6ICdzZXB0ZW5hcnknKSxcbiAgKHNlbDogJyN7JHNlY3Rpb24tc2VsZWN0b3J9Lmhhcy1wcmltYXJ5LWJhY2tncm91bmQtY29sb3InLCAgICAgICAgICB0b25lOiBkYXJrLCAgY29sb3I6ICdwcmltYXJ5JyksXG4gIChzZWw6ICcjeyRzZWN0aW9uLXNlbGVjdG9yfS5oYXMtc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3InLCAgICAgICAgdG9uZTogZGFyaywgIGNvbG9yOiAnc2Vjb25kYXJ5JyksXG4gIChzZWw6ICcjeyRzZWN0aW9uLXNlbGVjdG9yfS5oYXMtc2VuYXJ5LWJhY2tncm91bmQtY29sb3InLCAgICAgICAgICAgdG9uZTogZGFyaywgIGNvbG9yOiAnc2VuYXJ5JyksXG4gIChzZWw6ICcjeyRzZWN0aW9uLXNlbGVjdG9yfS5oYXMtY29udHJhc3QtYmFja2dyb3VuZC1jb2xvcicsICAgICAgICAgdG9uZTogZGFyaywgIGNvbG9yOiAnY29udHJhc3QnKSxcbiAgKHNlbDogJyN7JHNlY3Rpb24tc2VsZWN0b3J9Lmhhcy1ibGFjay1iYWNrZ3JvdW5kLWNvbG9yJywgICAgICAgICAgICB0b25lOiBkYXJrLCAgY29sb3I6ICdibGFjaycpLFxuICAvLyBHcmFkaWVudCBzZWN0aW9uIChjdGEtYmFubmVyKSDigJQgbWVyZ2VzIG9ubHkgd2l0aCBhbiBpZGVudGljYWwgZ3JhZGllbnRcbiAgKHNlbDogJyN7JHNlY3Rpb24tc2VsZWN0b3J9Lmhhcy1saWdodC1ibHVlLXRvLWRhcmstYmx1ZS1ncmFkaWVudC1iYWNrZ3JvdW5kJywgdG9uZTogZGFyaywgY29sb3I6ICdncmFkLWxidGRiJyksXG4gIC8vIGxlb3BhcmQtd3AtcG9zdHMgYmxvY2tzIOKAlCBwYWludGVkIHZpYSBTQ1NTLCB0aGVpciByb290IGNsYXNzIGlzIHRoZSBzZWN0aW9uLlxuICAvLyBgY29sb3JgIG1pcnJvcnMgdGhlaXIgU0NTUyBiYWNrZ3JvdW5kIHNvIHRoZXkgbWVyZ2Ugd2l0aCBhIG1hdGNoaW5nIGdyb3VwLlxuICAvLyBUaGUgY2FyZCBncmlkIGNhbiBiZSBuYXZ5IG9yIHdoaXRlLCBzbyBpdCBhcHBlYXJzIHR3aWNlLiBgOm5vdCguaXMtYmFja2dyb3VuZC1iYXNlKWBcbiAgLy8gcmF0aGVyIHRoYW4gYC5pcy1iYWNrZ3JvdW5kLXByaW1hcnlgLCBzbyBzZWN0aW9ucyBzYXZlZCBiZWZvcmUgdGhlIGJhY2tncm91bmRcbiAgLy8gYmVjYW1lIGNvbmZpZ3VyYWJsZSAobm8gY2xhc3MgYXQgYWxsLCBhbHdheXMgbmF2eSkgc3RpbGwgbWF0Y2guXG4gIChzZWw6ICcuY2FyZC1ncmlkLWVsZW1lbnQ6bm90KC5pcy1iYWNrZ3JvdW5kLWJhc2UpJywgdG9uZTogZGFyaywgIGNvbG9yOiAncHJpbWFyeScpLFxuICAoc2VsOiAnLmNhcmQtZ3JpZC1lbGVtZW50LmlzLWJhY2tncm91bmQtYmFzZScsICAgICAgIHRvbmU6IGxpZ2h0LCBjb2xvcjogJ2Jhc2UnKSxcbiAgKHNlbDogJy5wcm9jZXNzLXN0ZXBzLWVsZW1lbnQnLCB0b25lOiBsaWdodCwgY29sb3I6ICdiYXNlJyksXG4pO1xuXG4vKiAxLiBCYXNlIOKAlCBVTklWRVJTQUw6IGV2ZXJ5IGZ1bGwtd2lkdGggc2VjdGlvbiB0aGF0IGhhcyAqYW55KiBiYWNrZ3JvdW5kXG4gICAgICAodGhlbWUtcGFsZXR0ZSBjb2xvdXIsIFdvcmRQcmVzcyBkZWZhdWx0IGNvbG91ciwgZ3JhZGllbnQsIG9yIGFuIGlubGluZVxuICAgICAgY3VzdG9tIGhleCB0aGF0IHN0aWxsIGdldHMgYGhhcy1iYWNrZ3JvdW5kYCkgcGx1cyB0aGUgdHdvIGxlb3BhcmQtd3AtcG9zdHNcbiAgICAgIHNlY3Rpb24gYmxvY2tzLiBUaGlzIGd1YXJhbnRlZXMgdGhlIDYwcHggcmh5dGhtICsgZmx1c2ggZWRnZXMgZm9yIGV2ZXJ5XG4gICAgICBwYWludGVkIHNlY3Rpb24gcmVnYXJkbGVzcyBvZiB3aGljaCBjb2xvdXIgc291cmNlIGl0IHVzZXMg4oCUIHRoZSBhZGphY2VuY3lcbiAgICAgIHJlZmluZW1lbnRzIGJlbG93IG9ubHkgZmluZS10dW5lIGtub3duIHRoZW1lLXBhbGV0dGUgcGFpcnMgb24gdG9wIG9mIHRoaXMuXG4gICAgICBMb3cgc3BlY2lmaWNpdHkgKHNpbmdsZS90cmlwbGUgY2xhc3MpIOKGkiB0aGUgY29tcG91bmQgYWRqYWNlbmN5IHJ1bGVzIHdpbi4gKi9cbi5hbGlnbmZ1bGwuaGFzLWJhY2tncm91bmQsXG4uY2FyZC1ncmlkLWVsZW1lbnQsXG4ucHJvY2Vzcy1zdGVwcy1lbGVtZW50IHtcbiAgbWFyZ2luLWJsb2NrOiAwO1xuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1zZWN0aW9uLXBhZC1iYXNlKTtcbn1cblxuLyogMi4gTGlnaHQg4oaUIExpZ2h0IOKAlCB0cmltIGJvdGggYWRqYWNlbnQgZWRnZXMgc28gdGhlIGdhcCBiZXR3ZWVuIHR3byBsaWdodFxuICAgICAgc2VjdGlvbnMgZG9lc24ndCBzdHJldGNoIHRvd2FyZCAxMjBweC4gYEE6aGFzKCsgQilgIHRyaW1zIEEncyBib3R0b207XG4gICAgICBgQSArIEJgIHRyaW1zIEIncyB0b3AuICovXG5AZWFjaCAkYSBpbiAkc2VjdGlvbnMge1xuICBAZWFjaCAkYiBpbiAkc2VjdGlvbnMge1xuICAgIEBpZiBtYXAtZ2V0KCRhLCB0b25lKSA9PSBsaWdodCBhbmQgbWFwLWdldCgkYiwgdG9uZSkgPT0gbGlnaHQge1xuICAgICAgI3ttYXAtZ2V0KCRhLCBzZWwpfTpoYXMoKyAje21hcC1nZXQoJGIsIHNlbCl9KSB7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zZWN0aW9uLXBhZC1saWdodCk7IH1cbiAgICAgICN7bWFwLWdldCgkYSwgc2VsKX0gKyAje21hcC1nZXQoJGIsIHNlbCl9ICAgICAgeyBwYWRkaW5nLXRvcDogICAgdmFyKC0tc2VjdGlvbi1wYWQtbGlnaHQpOyB9XG4gICAgfVxuICB9XG59XG5cbi8qIDMuIFNhbWUgZXhhY3QgY29sb3VyIOKAlCBtZXJnZSB0aGUgdHdvIHNlY3Rpb25zIGludG8gb25lIHZpc3VhbCBibG9jay5cbiAgICAgIERlY2xhcmVkIEFGVEVSIHRoZSBsaWdodCBydWxlczogZm9yIGEgc2FtZS1jb2xvdXIgbGlnaHQgcGFpciAoZS5nLlxuICAgICAgYmFzZStiYXNlKSBib3RoIGJsb2NrcyBtYXRjaCwgYW5kIGVxdWFsIHNwZWNpZmljaXR5IG1lYW5zIHNvdXJjZSBvcmRlclxuICAgICAgd2lucyDihpIgbWVyZ2UgKC0tNDApIGNvcnJlY3RseSBiZWF0cyB0aGUgbGlnaHQgdHJpbSAoLS01MCkuICovXG5AZWFjaCAkYSBpbiAkc2VjdGlvbnMge1xuICBAZWFjaCAkYiBpbiAkc2VjdGlvbnMge1xuICAgIEBpZiBtYXAtZ2V0KCRhLCBjb2xvcikgPT0gbWFwLWdldCgkYiwgY29sb3IpIHtcbiAgICAgICN7bWFwLWdldCgkYSwgc2VsKX06aGFzKCsgI3ttYXAtZ2V0KCRiLCBzZWwpfSkgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2VjdGlvbi1wYWQtbWVyZ2UpOyB9XG4gICAgICAje21hcC1nZXQoJGEsIHNlbCl9ICsgI3ttYXAtZ2V0KCRiLCBzZWwpfSAgICAgIHsgcGFkZGluZy10b3A6ICAgIHZhcigtLXNlY3Rpb24tcGFkLW1lcmdlKTsgfVxuICAgIH1cbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFVuZ2VzdHJpY2hlbmUgU2VrdGlvbmVuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFJlZ2VsbiAxLTMgb2JlbiBnZWx0ZW4gZnVlciBGYXJiYmFlbmRlcjogZG9ydCBpc3QgcGFkZGluZy1ibG9jayBkaWUgSU5ORU4tXG4gICBsdWZ0IGRlcyBCYW5kZXMsIG1hcmdpbiBpc3QgMCwgdW5kIHp3ZWkgQmFlbmRlciBzdG9zc2VuIG9obmUgd2Vpc3NlblxuICAgU3RyZWlmZW4gYW5laW5hbmRlci5cblxuICAgUmVnZWxuIDQtNiBoaWVyIGdlbHRlbiBmdWVyIGFsbGVzIGFuZGVyZS4gRG9ydCBJU1QgZGFzIHBhZGRpbmctYmxvY2sgZGVyXG4gICBzaWNodGJhcmUgQWJzdGFuZCwgZGVzaGFsYiB0cmFlZ3QgamVkZSBTZWt0aW9uIG51ciBkaWUgSEFMQkUgUG9ydGlvbiDigJQgendlaVxuICAgYmVuYWNoYmFydGUgZXJnZWJlbiB6dXNhbW1lbiB3aWVkZXIgLS1zZWN0aW9uLXBhZC1saWdodCwgZGVuc2VsYmVuIFdlcnQsIGRlblxuICAgUmVnZWwgMiBhdWNoIHp3aXNjaGVuIHp3ZWkgaGVsbGVuIEJhZW5kZXJuIHN0ZWhlbiBsYWVzc3QuXG5cbiAgIFdhcnVtIGVzIGRpZSBSZWdlbG4gdWViZXJoYXVwdCBicmF1Y2h0OiBkaWUgU2VrdGlvbnNhYnN0YWVuZGUga2FtZW4gZnJ1ZWhlclxuICAgYXVzIFNwYWNlci1CbG9lY2tlbiBpbSBJbmhhbHQuIERpZSBzaW5kIGVudGZlcm50ICh0b29scy9yZW1vdmUtc3BhY2VycyksIHVuZFxuICAgZGVyIEJsb2NrLUFic3RhbmQgYXVzIGRlciB0aGVtZS5qc29uIHdhciBnbGVpY2h6ZWl0aWcgYWJnZXNjaGFsdGV0IOKAlCBhdWYgMTE1XG4gICB2b24gMTE2IFNlaXRlbiBzdGFuZCB6d2lzY2hlbiB6d2VpIFNla3Rpb25lbiBkZXNoYWxiIGdhciBuaWNodHMgbWVoci5cblxuICAgJHNlY3Rpb24tcGxhaW4gaXN0IGRhcyBLb21wbGVtZW50IHp1IFJlZ2VsIDEuXG4gICBJTlZBUklBTlRFOiB3ZXIgUmVnZWwgMSB1bSBlaW5lbiBNYXJrZXIgZXJ3ZWl0ZXJ0LCBlcndlaXRlcnQgJHNlY3Rpb24tcGxhaW5cbiAgIHVtIGRhc3NlbGJlIDpub3QoKS4gU29uc3QgYmVrYWVtZSBlaW4gQmFuZCB6dXNhZXR6bGljaCBkaWUgaGFsYmUgUG9ydGlvbiB1bmRcbiAgIGRlciBBYnN0YW5kIHZlcmRvcHBlbHRlIHNpY2guXG5cbiAgIFdlaWwgc2ljaCBkaWUgYmVpZGVuIFNlbGVrdG9ybWVuZ2VuIGF1c3NjaGxpZXNzZW4sIGthbm4ga2VpbmUgUmVnZWwgZGVyXG4gICBlaW5lbiBHcnVwcGUgZWluZSBkZXIgYW5kZXJlbiB1ZWJlcnNjaHJlaWJlbiDigJQgZGllIFNwZXppZml0YWV0IHp3aXNjaGVuIDQtNlxuICAgdW5kIDEtMyBzcGllbHQga2VpbmUgUm9sbGUuIEdlcmVjaG5ldCB3ZXJkZW4gbXVzcyBudXIgZ2VnZW4gZGVuIEtlcm46XG5cbiAgICAgOnJvb3QgOndoZXJlKC5pcy1sYXlvdXQtY29uc3RyYWluZWQpID4gKiB7IG1hcmdpbi1ibG9jay1zdGFydDogMjBweCB9XG5cbiAgIERhcyBpc3QgKDAsMSwwKS4gV2ljaHRpZzogYnVpbGQvYXBwLmNzcyB3aXJkIFZPUiBkZW0gSW5saW5lLVN0eWxlc2hlZXRcbiAgIGBnbG9iYWwtc3R5bGVzLWlubGluZS1jc3NgIGF1c2dlbGllZmVydCwgYmVpIEdsZWljaHN0YW5kIGdld2lubnQgYWxzbyBkZXJcbiAgIEtlcm4uIERlc2hhbGIgc3RlaHQgaGllciBLRUlOIDp3aGVyZSgpIGltIFNjb3BlIOKAlCBkYW1pdCBsYWVnZSBkaWUgUmVnZWwgYmVpXG4gICAoMCwwLDEpIHVuZCB2ZXJsb2VyZS4gYG1haW4gPiAuaXMtbGF5b3V0LWNvbnN0cmFpbmVkYCBpc3QgKDAsMSwxKSB1bmRcbiAgIGdld2lubnQuIGAuaGFzLWdsb2JhbC1wYWRkaW5nYCBzZXR6dCBudXIgcGFkZGluZy1pbmxpbmUgdW5kIGtvbGxpZGllcnQgbmllLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiRzZWN0aW9uLXNjb3BlOiAnbWFpbiA+IC5pcy1sYXlvdXQtY29uc3RyYWluZWQnO1xuJHNlY3Rpb24tcGxhaW46ICc6bm90KC5oYXMtYmFja2dyb3VuZCk6bm90KC5jYXJkLWdyaWQtZWxlbWVudCk6bm90KC5wcm9jZXNzLXN0ZXBzLWVsZW1lbnQpJztcblxuOnJvb3Qge1xuICAvKiBIYWxiZSBQb3J0aW9uOiB6d2VpIHVuZ2VzdHJpY2hlbmUgU2VrdGlvbmVuIGVyZ2ViZW4gLS1zZWN0aW9uLXBhZC1saWdodC4gKi9cbiAgLS1zZWN0aW9uLXBhZC1wbGFpbjogY2FsYyh2YXIoLS1zZWN0aW9uLXBhZC1saWdodCkgLyAyKTsgICAvLyAxNSDihpIgMzBweFxuXG4gIC8qXG4gICAqIFVlYmVyc2NocmlmdGVuLVJoeXRobXVzLlxuICAgKlxuICAgKiBFaW5lIFVlYmVyc2NocmlmdCBnZWhvZXJ0IHp1IGRlbSwgd2FzIGlociBGT0xHVC4gU3RlaHQgdWViZXIgdW5kIHVudGVyIGloclxuICAgKiBkZXJzZWxiZSBBYnN0YW5kLCBoYWVuZ3Qgc2llIHp3aXNjaGVuIHp3ZWkgQmxvZWNrZW4gdW5kIGRlciBMZXNlciBzaWVodFxuICAgKiBuaWNodCwgd29yYXVmIHNpZSBzaWNoIGJlemllaHQg4oCUIGdlbmF1IGRlciBadXN0YW5kIHZvcmhlciwgd28gYWxsZXMgYW1cbiAgICogc3ltbWV0cmlzY2hlbiAyMHB4LUJsb2NrYWJzdGFuZCBoaW5nLlxuICAgKlxuICAgKiBEZXNoYWxiIG9iZW4gZGllIHZvbGxlIFBvcnRpb24sIHVudGVuIGVpbiBEcml0dGVsIGRhdm9uLiBEaWUgV2VydGUgc3RlaGVuXG4gICAqIGhpZXIsIHdlaWwgYmVpZGUgU2VpdGVuIHNpZSBicmF1Y2hlbjogYmFzZS9fdHlwb2dyYXBoeSBmdWVyIHZlcnNjaGFjaHRlbHRlXG4gICAqIFVlYmVyc2NocmlmdGVuICh1ZWJlciBtYXJnaW4pLCBkaWVzZSBEYXRlaSBmdWVyIFVlYmVyc2NocmlmdGVuLCBkaWUgc2VsYnN0XG4gICAqIGVpbmUgVG9wLUxldmVsLVNla3Rpb24gc2luZCAodWViZXIgcGFkZGluZykuXG4gICAqL1xuICAtLWhlYWRpbmctc3BhY2UtYmVmb3JlOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7ICAgLy8gMjkg4oaSIDQ4cHhcbiAgLS1oZWFkaW5nLXNwYWNlLWFmdGVyOiAgdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMTApOyAgIC8vIDEyIOKGkiAxNnB4XG59XG5cbi8qIDRhLiBCbG9jay1BYnN0YW5kIHp3aXNjaGVuIFRvcC1MZXZlbC1TZWt0aW9uZW4gYWJzY2hhbHRlbiDigJQgZnVlciBhbGxlLCBhdWNoXG4gICAgICAgZnVlciBCYWVuZGVyIChSZWdlbCAxIHNldHp0IGRvcnQgZGFzc2VsYmUsIGtlaW4gS29uZmxpa3QpLiBEZXIgQWJzdGFuZFxuICAgICAgIGtvbW10IGFiIGhpZXIgYXVzc2NobGllc3NsaWNoIGF1cyBQYWRkaW5nLCBuaWUgYXVzIG1hcmdpbjogbnVyIHNvXG4gICAgICAgc3Rvc3NlbiB6d2VpIEZhcmJmbGFlY2hlbiBvaG5lIHdlaXNzZW4gU3RyZWlmZW4gYW5laW5hbmRlci5cbiAgICAgICBFcnNldHp0IGRhcyBgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwICFpbXBvcnRhbnRgIGF1cyBiYXNlL19iYXNlLiAqL1xuI3skc2VjdGlvbi1zY29wZX0gPiAqIHtcbiAgbWFyZ2luLWJsb2NrOiAwO1xufVxuXG4vKiA0Yi4gSGFsYmUgUG9ydGlvbiBmdWVyIGplZGUgdW5nZXN0cmljaGVuZSBTZWt0aW9uLiAqL1xuI3skc2VjdGlvbi1zY29wZX0gPiAjeyRzZWN0aW9uLXBsYWlufSB7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNlY3Rpb24tcGFkLXBsYWluKTtcbn1cblxuLyogNGMuIEdlc3RyaWNoZW5lIFNla3Rpb25lbiwgZGllIFJlZ2VsIDEgbmljaHQgdHJpZmZ0OiBzaWUgdmVybGFuZ3RcbiAgICAgICBgLmFsaWduZnVsbGAsIGltIEJlc3RhbmQgc3RlaGVuIGFiZXIgYXVjaCBlaW5nZXJ1ZWNrdGUgR3J1cHBlbiBtaXRcbiAgICAgICBGYXJiZSwgZGllIG5pY2h0IHVlYmVyIGRpZSB2b2xsZSBCcmVpdGUgbGF1ZmVuLlxuICAgICAgIE9obmUgZGllc2UgUmVnZWwgZmllbGVuIHNpZSBkdXJjaCBiZWlkZSBSYXN0ZXIg4oCUICRzZWN0aW9uLXBsYWluIHNjaGxpZXNzdFxuICAgICAgIHNpZSB1ZWJlciA6bm90KC5oYXMtYmFja2dyb3VuZCkgYXVzIOKAlCB1bmQgc3R1ZW5kZW4gdm9lbGxpZyBvaG5lIElubmVubHVmdFxuICAgICAgIGRhLiBWb2xsZSBQb3J0aW9uIHdpZSBqZWRlcyBhbmRlcmUgQmFuZC4gKi9cbiN7JHNlY3Rpb24tc2NvcGV9ID4gLmhhcy1iYWNrZ3JvdW5kOm5vdCguYWxpZ25mdWxsKSB7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNlY3Rpb24tcGFkLWJhc2UpO1xufVxuXG4vKiA1LiBHcmVuemUgQmFuZCDihpQgdW5nZXN0cmljaGVuLlxuICAgICAgRGFzIEJhbmQgZ2lidCBuYWNoIGF1c3NlbiBuaWNodHMgYWIsIHNlaW4gUGFkZGluZyBsaWVndCBpbm5lbi4gQWxzbyB0cmFlZ3RcbiAgICAgIGRpZSB1bmdlc3RyaWNoZW5lIFNlaXRlIGhpZXIgZGllIEdBTlpFIFBvcnRpb24gc3RhdHQgZGVyIGhhbGJlbiDigJQgc29uc3RcbiAgICAgIHdhZXJlIGF1c2dlcmVjaG5ldCBkaWVzZSBGdWdlIG51ciBoYWxiIHNvIGdyb3NzIHdpZSB6d2lzY2hlbiB6d2VpXG4gICAgICB1bmdlc3RyaWNoZW5lbiBTZWt0aW9uZW4uIERhbWl0IGlzdCBqZWRlIEZ1Z2Ugendpc2NoZW4gendlaSBUb3AtTGV2ZWwtXG4gICAgICBTZWt0aW9uZW4gLS1zZWN0aW9uLXBhZC1saWdodCwgaW4gamVkZXIgS29tYmluYXRpb24uICovXG5AZWFjaCAkcyBpbiAkc2VjdGlvbnMge1xuICAjeyRzZWN0aW9uLXNjb3BlfSA+ICN7bWFwLWdldCgkcywgc2VsKX0gKyAjeyRzZWN0aW9uLXBsYWlufSB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNlY3Rpb24tcGFkLWxpZ2h0KTtcbiAgfVxuXG4gICN7JHNlY3Rpb24tc2NvcGV9ID4gI3skc2VjdGlvbi1wbGFpbn06aGFzKCsgI3ttYXAtZ2V0KCRzLCBzZWwpfSkge1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zZWN0aW9uLXBhZC1saWdodCk7XG4gIH1cbn1cblxuLyogNi4gU2VpdGVuYW5mYW5nIHVuZCAtZW5kZS5cbiAgICAgIEVpbiByYW5kbG9zZXMgRWxlbWVudCBnYW56IG9iZW4gb2RlciB1bnRlbiDigJQgQmlsZC1CdWVobmUsIEZhcmJiYW5kIOKAlFxuICAgICAgc2NobGllc3N0IGJ1ZW5kaWcgYW4gSGVhZGVyIGJ6dy4gRm9vdGVyIGFuOyBlaW4gd2Vpc3NlciBTdHJlaWZlbiBkYXZvclxuICAgICAgc2FlaGUgbmFjaCBGZWhsZXIgYXVzLiBCYWVuZGVyIGtvZW5uZW4gZGllc2UgUmVnZWwgZ2FyIG5pY2h0IHRyZWZmZW5cbiAgICAgICgkc2VjdGlvbi1wbGFpbiBzY2hsaWVzc3Qgc2llIGF1cyksIHNpZSBiZWhhbHRlbiBpaHJlIElubmVubHVmdCBvaG5laGluLlxuICAgICAgRWluZSBlaW5nZXJ1ZWNrdGUgVGV4dHNla3Rpb24gYWxzIGVyc3RlcyBLaW5kIGJlaGFlbHQgaWhyZSBoYWxiZSBQb3J0aW9uLFxuICAgICAgc29uc3Qga2xlYnRlIGRpZSBIMSBhbiBkZXIgTmF2aWdhdGlvbi4gKi9cbiN7JHNlY3Rpb24tc2NvcGV9ID4gOmZpcnN0LWNoaWxkLmFsaWduZnVsbCN7JHNlY3Rpb24tcGxhaW59IHtcbiAgcGFkZGluZy1ibG9jay1zdGFydDogMDtcbn1cblxuI3skc2VjdGlvbi1zY29wZX0gPiA6bGFzdC1jaGlsZC5hbGlnbmZ1bGwjeyRzZWN0aW9uLXBsYWlufSB7XG4gIHBhZGRpbmctYmxvY2stZW5kOiAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFVlYmVyc2NocmlmdGVuIGFuIGRlciBTZWt0aW9uc2dyZW56ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBad2VpIEZhZWxsZSwgaW4gZGVuZW4gZGVyIEFic3RhbmQgZWluZXIgVWViZXJzY2hyaWZ0IE5JQ0hUIGF1cyBpaHJlbSBtYXJnaW5cbiAgIGtvbW10IChkYXMgcmVnZWx0IGJhc2UvX3R5cG9ncmFwaHkpLCBzb25kZXJuIGF1cyBkZW0gU2VrdGlvbnMtUGFkZGluZzpcblxuICAgNy4gRGllIFVlYmVyc2NocmlmdCBJU1QgZWluZSBUb3AtTGV2ZWwtU2VrdGlvbi5cbiAgIDguIERpZSBTZWt0aW9uIEVOREVUIG1pdCBlaW5lciBVZWJlcnNjaHJpZnQg4oCUIGRlciBJbmhhbHQsIGRlbiBzaWUgYW5rdWVuZGlndCxcbiAgICAgIHN0ZWh0IGluIGRlciBuYWVjaHN0ZW4gU2VrdGlvbi4gRGFzIGlzdCBpbSBCZXN0YW5kIGhhZXVmaWc6IGRpZSBSZWRha3Rpb25cbiAgICAgIHNldHp0IGRpZSBad2lzY2hlbnVlYmVyc2NocmlmdCBhbnMgRW5kZSBkZXMgVGV4dGJsb2NrcyBzdGF0dCBhbiBkZW4gQW5mYW5nXG4gICAgICBkZXMgZm9sZ2VuZGVuLiBPaG5lIGRpZXNlIFJlZ2VsIHN0ZWh0IHNpZSA0OHB4IHVudGVyIGRlbSBBYnNhdHogdW5kIDYwcHhcbiAgICAgIHVlYmVyIGRlbSwgd2FzIHNpZSBhbmt1ZW5kaWd0IOKAlCBhbHNvIG5hZWhlciBhbSBGYWxzY2hlbi5cblxuICAgQmVpZGUgTWFsZSB0cmFlZ3QgZGllIFVlYmVyc2NocmlmdCBuYWNoIG9iZW4gZGllIG5vcm1hbGUgUG9ydGlvbiB1bmQgZ2lidFxuICAgbmFjaCB1bnRlbiBudXIgLS1oZWFkaW5nLXNwYWNlLWFmdGVyIGFiOyBkaWUgRm9sZ2VzZWt0aW9uIGViZW5zby4gQXVzIDYwLzYwXG4gICB3aXJkIDYwLzMyLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIDcuIFVlYmVyc2NocmlmdCBhbHMgZWlnZW5lIFNla3Rpb24uICovXG4jeyRzZWN0aW9uLXNjb3BlfSA+IDppcyhoMSwgaDIsIGgzLCBoNCwgaDUsIGg2KSN7JHNlY3Rpb24tcGxhaW59IHtcbiAgcGFkZGluZy1ibG9jay1lbmQ6IHZhcigtLWhlYWRpbmctc3BhY2UtYWZ0ZXIpO1xufVxuXG4jeyRzZWN0aW9uLXNjb3BlfSA+IDppcyhoMSwgaDIsIGgzLCBoNCwgaDUsIGg2KSArICN7JHNlY3Rpb24tcGxhaW59IHtcbiAgcGFkZGluZy10b3A6IHZhcigtLWhlYWRpbmctc3BhY2UtYWZ0ZXIpO1xufVxuXG4vKlxuICogOC4gU2VrdGlvbiwgZGllIG1pdCBlaW5lciBVZWJlcnNjaHJpZnQgZW5kZXQuXG4gKlxuICogWndlaSBTY2hyZWlid2Vpc2VuLCB3ZWlsIGRpZSBVZWJlcnNjaHJpZnQgZW50d2VkZXIgZGlyZWt0IGluIGRlciBTZWt0aW9uXG4gKiBzdGVodCBvZGVyIOKAlCBkZXIgUmVnZWxmYWxsIGluIGRpZXNlbSBUaGVtZSDigJQgaW4gZGVyIEh1ZWxsZVxuICogYGNvbHVtbnMgPiBjb2x1bW5gLCBkaWUgamVkZXMgTXVzdGVyIG1pdGJyaW5ndC4gVGllZmVyIHdpcmQgbmljaHQgZ2VzdWNodDpcbiAqIHdhcyBkYXJ1bnRlciBsaWVndCwgaXN0IEthcnRlbi0gb2RlciBTcGFsdGVubGF5b3V0IHVuZCBlbmRldCBuaWNodCBtaXQgZWluZXJcbiAqIGJsYW5rZW4gVWViZXJzY2hyaWZ0LlxuICovXG4jeyRzZWN0aW9uLXNjb3BlfSA+ICN7JHNlY3Rpb24tcGxhaW59Omhhcyg+IDpsYXN0LWNoaWxkOmlzKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpKSxcbiN7JHNlY3Rpb24tc2NvcGV9ID4gI3skc2VjdGlvbi1wbGFpbn06aGFzKD4gLndwLWJsb2NrLWNvbHVtbnMgPiAud3AtYmxvY2stY29sdW1uID4gOmxhc3QtY2hpbGQ6aXMoaDEsIGgyLCBoMywgaDQsIGg1LCBoNikpIHtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLWhlYWRpbmctc3BhY2UtYWZ0ZXIpO1xufVxuXG4jeyRzZWN0aW9uLXNjb3BlfSA+ICN7JHNlY3Rpb24tcGxhaW59Omhhcyg+IDpsYXN0LWNoaWxkOmlzKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpKSArICN7JHNlY3Rpb24tcGxhaW59LFxuI3skc2VjdGlvbi1zY29wZX0gPiAjeyRzZWN0aW9uLXBsYWlufTpoYXMoPiAud3AtYmxvY2stY29sdW1ucyA+IC53cC1ibG9jay1jb2x1bW4gPiA6bGFzdC1jaGlsZDppcyhoMSwgaDIsIGgzLCBoNCwgaDUsIGg2KSkgKyAjeyRzZWN0aW9uLXBsYWlufSB7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1oZWFkaW5nLXNwYWNlLWFmdGVyKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA5LiBCaWxkLUJ1ZWhuZSBtaXQgYW5nZWhhZW5ndGVtIEluaGFsdFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBdWYgMjEgdm9uIDgxIFNlaXRlbiBtaXQgQmlsZC1CdWVobmUgc3RlaHQgZGVyIEVpbmxlaXR1bmdzdGV4dCBJTiBkZXJcbiAgIEhlcm8tU2VrdGlvbiBzdGF0dCBkYWhpbnRlcjogaW0gRWRpdG9yIHd1cmRlIGVyIGluIGRpZSBCdWVobmUgaGluZWluXG4gICBnZXNldHp0IHN0YXR0IGRhbmViZW4uIEVyIGJla29tbXQgZGFkdXJjaCBudXIgZGVuIEJsb2NrYWJzdGFuZCB2b24gMjBweFxuICAgc3RhdHQgZGVyIFNla3Rpb25zZnVnZSB1bmQga2xlYnQgc2ljaHRiYXIgYW0gQmlsZCDigJQgYXVmXG4gICAvcmVpbnN0bWVkaWVuLXJvaHJsZWl0dW5nc2JhdSBnZW1lc3NlbmUgMjBweCBnZWdlbiA2MHB4IGF1ZiBlaW5lciBTZWl0ZSxcbiAgIGRpZSBkZW4gVGV4dCBhbHMgZWlnZW5lIFNla3Rpb24gZnVlaHJ0LlxuXG4gICBBbGxlcywgd2FzIGRlciBCdWVobmUgaW4gZGVyc2VsYmVuIFNla3Rpb24gZm9sZ3QsIGJla29tbXQgZGVzaGFsYiBkaWVcbiAgIFNla3Rpb25zZnVnZS4gYH5gIHN0YXR0IGArYCwgd2VpbCBtYW5jaGUgU2VpdGVuIG1laHJlcmUgQmxvZWNrZSBkb3J0XG4gICBhbmdlaGFlbmd0IGhhYmVuIChkaWUgU3RlbGxlbmFuemVpZ2VuIGV0d2EgdmllcikuXG5cbiAgIERhcyBpc3QgZWluZSBLcnVlY2tlIGZ1ZXIgZWluZSBTdHJ1a3R1ciwgZGllIGVpZ2VudGxpY2ggaW0gSW5oYWx0IGdlcmFkZVxuICAgZ2V6b2dlbiBnZWhvZXJ0IOKAlCBkZXIgVGV4dCBzb2xsIGVpbmUgZWlnZW5lIFNla3Rpb24gc2Vpbi4gQmlzIGRhaGluIHNvcmd0XG4gICBkaWUgUmVnZWwgZGFmdWVyLCBkYXNzIGVyIHdlbmlnc3RlbnMgcmljaHRpZyBzdGVodC5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI3skc2VjdGlvbi1zY29wZX0gPiAuaW1hZ2Utb3ZlcmxheS1lbGVtZW50ID4gLndwLWJsb2NrLWNvbHVtbnM6Zmlyc3QtY2hpbGQgfiAqIHtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zZWN0aW9uLXBhZC1saWdodCk7XG59XG4iLCIvKlxuc2xpY2sgc2xpZGVyXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3Igc2xpY2sgc2xpZGVyLlxuKi9cblxuLnNsaWNrLXNsaWRlciB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAmLnNsaWNrLWluaXRpYWxpemVkIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuc2xpY2stcHJldiB7XG4gICAgbGVmdDogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvc2xpZGVyLWNoZXZyb24tbGVmdC5zdmcnKSBuby1yZXBlYXQ7XG4gICAgfVxuICB9XG5cbiAgLnNsaWNrLXByZXYsXG4gIC5zbGljay1uZXh0IHtcbiAgICB3aWR0aDogJHNsaWNrLXNsaWRlci1uYXZpZ2F0aW9uLWJ1dHRvbi13aWR0aDtcbiAgICBoZWlnaHQ6ICRzbGljay1zbGlkZXItbmF2aWdhdGlvbi1idXR0b24td2lkdGg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogMTtcbiAgICBvcGFjaXR5OiAkc2xpY2stc2xpZGVyLW5hdmlnYXRpb24tYnV0dG9uLW9wYWNpdHk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkaG92ZXItdHJhbnNpdGlvbjtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAuc2xpY2stbmV4dCB7XG4gICAgcmlnaHQ6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTQwKTtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW1hZ2VzL3NsaWRlci1jaGV2cm9uLXJpZ2h0LnN2ZycpIG5vLXJlcGVhdDtcbiAgICB9XG4gIH1cblxuICAuc2xpY2stc2xpZGUge1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5zbGljay1kb3RzIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgYm90dG9tOiAwO1xuICAgIG1hcmdpbi10b3A6IDJweDtcblxuICAgIC5zbGljay1wcmV2IHtcbiAgICAgIGxlZnQ6IC0kc2xpY2stc2xpZGVyLW5hdmlnYXRpb24tYnV0dG9uLXdpZHRoO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgIHdpZHRoOiAkc2xpY2stc2xpZGVyLWRvdHMtd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRzbGljay1zbGlkZXItZG90cy13aWR0aDtcblxuICAgICAgYnV0dG9uIHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIHdpZHRoOiAkc2xpY2stc2xpZGVyLWRvdHMtd2lkdGg7XG4gICAgICAgICAgaGVpZ2h0OiAkc2xpY2stc2xpZGVyLWRvdHMtd2lkdGg7XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXF1YXRlcm5hcnkpO1xuICAgICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kICRob3Zlci10cmFuc2l0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuc2xpY2stYWN0aXZlIHtcbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICB3aWR0aDogJHNsaWNrLXNsaWRlci1kb3RzLWFjdGl2ZS13aWR0aDtcbiAgICAgICAgICAgIGhlaWdodDogJHNsaWNrLXNsaWRlci1kb3RzLWFjdGl2ZS13aWR0aDtcbiAgICAgICAgICAgIHRvcDogLTFweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc2xpY2stZG90cy1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApO1xuXG4gICAgLnNsaWNrLXByZXYsXG4gICAgLnNsaWNrLW5leHQge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgIHdpZHRoOiAkc2xpY2stc2xpZGVyLWRvdHMtbmF2aWdhdGlvbi1idXR0b24td2lkdGg7XG4gICAgICBoZWlnaHQ6ICRzbGljay1zbGlkZXItZG90cy1uYXZpZ2F0aW9uLWJ1dHRvbi13aWR0aCAqIDI7XG4gICAgICB0b3A6IGluaXRpYWw7XG4gICAgICByaWdodDogaW5pdGlhbDtcbiAgICAgIGxlZnQ6IGluaXRpYWw7XG4gICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxuXG4gICAgLnNsaWNrLXByZXYge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uLy4uL2ltYWdlcy9jaGV2cm9uLWxlZnQuc3ZnJykgbm8tcmVwZWF0IDAgNTAlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5zbGljay1uZXh0IHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvY2hldnJvbi1yaWdodC5zdmcnKSBuby1yZXBlYXQgMCA1MCU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qXG5IZXJvLUNhcm91c2VsOiBrZWluZSBzZWl0bGljaGVuIENoZXZyb24tUGZlaWxlLlxuRGllIE5hdmlnYXRpb24gbGFldWZ0IHVlYmVyIGRpZSBQdW5rdGUgdW50ZXIgZGVtIFNsaWRlciDigJQgZGllIGdyb3NzZW4gUGZlaWxlXG5saW5rcy9yZWNodHMgdWViZXIgZGVtIEJpbGQgZW50ZmFsbGVuLiBOdXIgZnVlciBTbGlkZXIgbWl0IGltYWdlLW92ZXJsYXktU2xpZGVzXG4oZGllIEhlcm8tQnVlaG5lKSwgZGFtaXQgYW5kZXJlIENhcm91c2VscyBpaHJlIFBmZWlsZSBiZWhhbHRlbi4gYD4gLnNsaWNrLSpgXG50cmlmZnQgZGllIHZvbiBTbGljayBlaW5nZXNldHp0ZW4gU2VpdGVucGZlaWxlLCBuaWNodCBkaWUgUHJldi9OZXh0IGluIGRlclxuLnNsaWNrLWRvdHMtY29udGFpbmVyLlxuKi9cbi5zbGljay1zbGlkZXI6aGFzKC5pbWFnZS1vdmVybGF5LWVsZW1lbnQpIHtcbiAgPiAuc2xpY2stcHJldixcbiAgPiAuc2xpY2stbmV4dCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvKlxuUG93ZXJUaXBcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciBwb3dlclRpcC5cbiovXG5cbiNwb3dlclRpcCB7XG4gIHN0cm9uZyB7XG4gICAgQGV4dGVuZCAuaGVhZGxpbmUtZG90O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjZXI7XG4gIH1cbn1cbiIsIi8qXG5TcGFsdGVuLUthcnRlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5EaWUgS2FydGVuIGRlciBTcGFsdGVuLVBhdHRlcm4gc2luZCBrZWluIGVpZ2VuZXIgQmxvY2ssIHNvbmRlcm4gZWluZVxud3AtYmxvY2stY29sdW1uIG1pdCBCb290c3RyYXAtU2NoYXR0ZW46IEJpbGQsIGZldHRlIFVlYmVyc2NocmlmdCwgQW5yaXNzdGV4dFxudW5kIOKAlCBqZSBuYWNoIFBhdHRlcm4g4oCUIGVpbiBQZmVpbC1CdXR0b24uXG5cbiAgLndwLWJsb2NrLWNvbHVtbi5zaGFkb3cgLyAuaC0xMDAuc2hhZG93IC8gLnNoYWRvdy1sZyAgICAgZGllIEthcnRlXG4gICAgZmlndXJlLndwLWJsb2NrLWltYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWxkXG4gICAgLndwLWJsb2NrLWdyb3VwID4gLndwLWJsb2NrLWNvbHVtbnMgPiAud3AtYmxvY2stY29sdW1uICBJbm5lbmFic3RhbmRcbiAgICAgIC53cC1ibG9jay1ncm91cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGVsemVpbGVcbiAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFucmlzc3RleHRcbiAgICAgIC53cC1ibG9jay1idXR0b25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBmZWlsLUJ1dHRvblxuXG5EaWUgU2NoYXR0ZW4tS2xhc3NlIGlzdCBkYXMgRWluemlnZSwgd2FzIGFsbGUgS2FydGVuIGltIGdlc3BlaWNoZXJ0ZW4gTWFya3VwXG5nZW1laW5zYW0gaGFiZW4g4oCUIGRpZSBQYXR0ZXJuLVdyYXBwZXIgZGFydW0gaGVydW0gaGVpc3NlbiBtYWxcbnRocmVlLWNvbHVtbnMtaW1hZ2UtdGV4dC1lbGVtZW50LCBtYWwgZ2FyIG5pY2h0cy4gRGVzaGFsYiBoYWVuZ3QgZGFzIERlc2lnblxuaGllciBkYXJhbiB1bmQgbmljaHQgYW0gUGF0dGVybi4gRWluZSBTdGljaHByb2JlIHVlYmVyIGRlbiBnZXNhbXRlbiBCZXN0YW5kXG4oMjg2IFNwYWx0ZW4gbWl0IFNjaGF0dGVuLUtsYXNzZSkgaGF0IGtlaW5lIGdlZnVuZGVuLCBkaWUga2VpbmUgS2FydGUgd2FlcmUuXG5cbkdyb2Vzc2VuOiBUaXRlbCB1bmQgQW5yaXNzdGV4dCBzdGVoZW4gYXVmIGRlciBHcm9lc3NlIGRlcyBGbGllc3N0ZXh0ZXNcbihtZWRpdW0sIDEuMTI1cmVtKSDigJQgc28sIHdpZSBkaWUgS2FydGVuIHZvciBkZW0gMjQuMDguMjAyNiBhdXNzYWhlbi4gRGllXG5WZXJrbGVpbmVydW5nIGF1ZiAwLjg3NXJlbSwgZGllIGRhbWFscyBhbGxlIEthcnRlbiBkZXMgQmVzdGFuZGVzIHZlcmVpbmhlaXRsaWNodFxuaGF0LCBpc3QgaGllciB6dXJ1ZWNrZ2Vub21tZW46IGluIGRlbiBCaWxkLVRleHQtS2FydGVuIHN0ZWh0IFRleHQsIGtlaW4gRXRpa2V0dCxcbnVuZCBlciBzb2xsIHNpY2ggc28gbGVzZW4gd2llIGVpbiBBYnNhdHogZGFuZWJlbi4gRGllIEhpZXJhcmNoaWUgaW4gZGVyIEthcnRlXG50cmFlZ3QgYWxsZWluIGRhcyBHZXdpY2h0ICg3MDApLCBuaWNodCBkaWUgR3JvZXNzZS5cblxuTmljaHQgYW5nZWZhc3N0IHNpbmQgZGVyIENhcmQtR3JpZC1CbG9jayB1bmQgZGVyIFBvc3RzLVNsaWRlciDigJQgZGllIHN0ZWhlblxud2VpdGVyIGF1ZiAwLjg3NXJlbSAoc2llaGUgLnR5cGUtY2FyZC10aXRsZSBpbiBiYXNlL190eXBvZ3JhcGh5KS5cbiovXG5cbi53cC1ibG9jay1jb2x1bW4uc2hhZG93LFxuLndwLWJsb2NrLWNvbHVtbi5zaGFkb3ctbGcge1xuICAvKlxuICAgKiBEZXIgQW5yaXNzdGV4dCBlcmJ0IGRlbiBGbGllc3N0ZXh0IHVuZCBicmF1Y2h0IGRlc2hhbGIga2VpbmUgZWlnZW5lXG4gICAqIEdyb2Vzc2UuIERpZSBVZWJlcnNjaHJpZnQgZGFnZWdlbiBicmF1Y2h0IGVpbmUgQW5zYWdlLCB3ZWlsIGltIEJlc3RhbmRcbiAgICogYmVpZGUgU2NocmVpYndlaXNlbiBsaWVnZW46IEthcnRlbiB2b24gdm9yIGRlbSAyNC4wOC4yMDI2IHRyYWdlblxuICAgKiBoYXMtbWVkaXVtLWZvbnQtc2l6ZSwgc3BhZXRlciBlaW5nZWZ1ZWd0ZSBoYXMtc21hbGwtZm9udC1zaXplLiBCZWlkZVxuICAgKiBLbGFzc2VuIHNjaHJlaWJ0IFdvcmRQcmVzcyBtaXQgIWltcG9ydGFudCwgdW5kIC5oZWFkbGluZS1kb3Qgc2V0enQgaW5cbiAgICogYmFzZS9fYmFzZSBlYmVuZmFsbHMgIWltcG9ydGFudCBhdWYgMS4yNXJlbSDigJQgbnVyIHVlYmVyIGRpZSBob2VoZXJlXG4gICAqIFNwZXppZml0YWV0ICgwLDMsMCkgbGFuZGVuIGFsbGUgZHJlaSBGYWVsbGUgc2ljaGVyIGF1ZiBkZXJzZWxiZW4gR3JvZXNzZS5cbiAgICovXG4gIC53cC1ibG9jay1oZWFkaW5nIHtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbWVkaXVtKSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIH1cblxuICAvKlxuICAgKiBEZXIgUHVua3Qgdm9yIGRlciBVZWJlcnNjaHJpZnQgc3RlaHQgc29uc3QgYXVmIGZlc3RlbiAxN3B4LCB1bmFiaGFlbmdpZyB2b25cbiAgICogZGVyIFplaWxlIGRhbmViZW4uIEluIGRlciBLYXJ0ZSBsYWV1ZnQgZXIgaW4gZW0gbWl0LCBkYW1pdCBlciB6dXJcbiAgICogS2FydGVudWViZXJzY2hyaWZ0IHBhc3N0IHN0YXR0IHNpZSB6dSB1ZWJlcnJhZ2VuLlxuICAgKi9cbiAgLmhlYWRsaW5lLWRvdDpiZWZvcmUge1xuICAgIHdpZHRoOiAxZW07XG4gICAgaGVpZ2h0OiAxZW07XG4gICAgbGVmdDogY2FsYyh2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0zMCkgKiAtMSk7XG4gIH1cblxuICAvKlxuICAgKiBTdHJlY2trZXR0ZSBiaXMgenVyIFRleHRzcGFsdGUuIFNpZSBpc3QgZGllIFZvcmF1c3NldHp1bmcgZGFmdWVyLCBkYXNzIGRlclxuICAgKiBQZmVpbC1CdXR0b24gbWl0IG1hcmdpbi10b3A6IGF1dG8gYW5zIHVudGVyZSBFbmRlIGZhZWxsdCB1bmQgZGllIEJ1dHRvbnNcbiAgICogZWluZXIgUmVpaGUgYXVmIGVpbmVyIExpbmllIHN0ZWhlbiDigJQgYXVjaCB3ZW5uIGRpZSBBbnJpc3N0ZXh0ZSB2ZXJzY2hpZWRlblxuICAgKiBsYW5nIHNpbmQuIERhcyBtYXJnaW4tdG9wIHNlbGJzdCBzdGVodCBpbiBjb21wb25lbnQvX2NoZXZyb24tYnV0dG9uLFxuICAgKiBkaWVzZWxiZSBMb2VzdW5nIHdpZSBpbSBDYXJkIEdyaWQgKGJsb2NrL19jYXJkLWdyaWQsIF9fYWN0aW9ucykuXG4gICAqXG4gICAqIERpZSBad2lzY2hlbmViZW5lbiBzaW5kIFdvcmRQcmVzcy1TdGFuZGFyZG1hcmt1cCB1bmQgdHJhZ2VuIGtlaW5lIGVpZ2VuZVxuICAgKiBLbGFzc2UsIGRlc2hhbGIgZGVyIGF1c2dlc2NocmllYmVuZSBLaW5kcGZhZC5cbiAgICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgPiAud3AtYmxvY2stZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgID4gLndwLWJsb2NrLWNvbHVtbnMge1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICA+IC53cC1ibG9jay1jb2x1bW4ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIEVpbnplbGZhbGwgYXVzIGRlbSBCZXN0YW5kOiBkb3J0IGhhZW5ndCBkZXIgQnV0dG9uIGRpcmVrdCBhbiBkZXIgS2FydGVcbiAgICogc3RhdHQgaW4gZGVyIFRleHRzcGFsdGUgdW5kIHN0dWVuZGUgc29uc3Qgb2huZSBJbm5lbmFic3RhbmQgYW4gZGVyIEthbnRlLlxuICAgKi9cbiAgPiAud3AtYmxvY2stYnV0dG9ucyB7XG4gICAgcGFkZGluZzogMCB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCkgdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApO1xuICB9XG59XG4iLCIvKlxuQ2hldnJvbi1CdXR0b25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkRlciBxdWFkcmF0aXNjaGUgS2FzdGVuIG1pdCBkZW0gUGZlaWw6IGR1bmtsZXIgUmFobWVuLCBkdW5rbGVyIENoZXZyb24sIGJlaW1cblVlYmVyZmFocmVuIHNjaHdhcnplIEZsYWVjaGUgbWl0IHdlaXNzZW0gQ2hldnJvbi4gRXIgc3RlaHQgaW1tZXIgbGlua3NidWVuZGlnXG51bmQgYWxzIGxldHp0ZXMgRWxlbWVudCBzZWluZXMgS2FzdGVucy5cblxuRElFU0UgREFURUkgSVNUIERJRSBFSU5aSUdFIFNURUxMRSwgYW4gZGVyIGRhcyBBdXNzZWhlbiBzdGVodC4gVm9yaGVyIGxhZyBlc1xuYWxzIE1peGluIGluIGFic3RyYWN0L19taXhpbnMgdW5kIHd1cmRlIGFuIGRyZWkgU3RlbGxlbiBhdWZnZXJ1ZmVuIOKAlCBlaW5tYWwgaW5cbmJhc2UvX2Jhc2UgKC5yZWFkbW9yZSksIGVpbm1hbCBmdWVyIC5yZWFkbW9yZS1pY29uIHVuZCBlaW5tYWwgZnVlciBkaWVcbnplbnRyaWVydGUgQmlsZC1CdWVobmUuIERhenUga2FtIGVpbiBgQGV4dGVuZCAucmVhZG1vcmVgIGltIFBhdHRlcm5cbnRocmVlLWNvbHVtbnMtaW1hZ2UtdGV4dC1lbGVtZW50LiBEZXIgUnVtcGYgc3RhbmQgZGFuYWNoIHZpZXJtYWwgaW1cblN0eWxlc2hlZXQsIHVuZCBkZXIgQGV4dGVuZCBoYWVuZ3RlIHNlaW5lIFNlbGVrdG9ya2V0dGUgYXVzc2VyZGVtIGFuIEpFREVOXG5hbmRlcmVuIFNlbGVrdG9yLCBkZXIgYC5yZWFkbW9yZWAgbmVubnQg4oCUIGF1Y2ggYW4gZGllIDpoYXMoKS1SZWdlbG4sIHdvIGRhYmVpXG5LZXR0ZW4gd2llXG5gLndwLWJsb2NrLWNvbHVtbjpoYXMoPiAudGhyZWUtY29sdW1ucy1pbWFnZS10ZXh0LWVsZW1lbnQgLi4uIC53cC1ibG9jay1idXR0b25fX2xpbmspYFxuaGVyYXVza2FtZW4sIGRpZSBuaWUgZ3JlaWZlbiBrb25udGVuLlxuXG5KZXR6dDogZWluZSBTZWxla3Rvcmxpc3RlLCBlaW4gUnVtcGYuXG5cbldPIERFUiBCVVRUT04gQVVGVEFVQ0hUXG5cbiAgYS5yZWFkbW9yZSAgICAgICAgICAgICAgICAgICAgIFBvc3RzLVNsaWRlciAoZ29zaWduLCBzZXJ2ZXJzZWl0aWcgZ2ViYXV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2llaGUgZ29zaWduLXBvc3RzLXNsaWRlci1ibG9jay9zcmMvaW5pdC5waHApXG4gIC53cC1ibG9jay1idXR0b24ucmVhZG1vcmUgICAgICBLYXJ0ZW4tIHVuZCBVZWJlcnNpY2h0cy1QYXR0ZXJuIHNvd2llIGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VzYW10ZSBCZXN0YW5kLCBkZW4gdG9vbHMvbWlncmF0ZS1jYXJkLWJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVtZ2VzdGVsbHQgaGF0XG4gIC50aHJlZS1jb2x1bW5zLWltYWdlLXRleHQtLi4uICBCZXN0YW5kLCBkZXNzZW4gQnV0dG9ucyBub2NoIGdhciBrZWluZSBLbGFzc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWdlbi4gRmFlbGx0IHdlZywgc29iYWxkIGRhcyBXZXJremV1ZyB1ZWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsZSBJbmhhbHRlIGdlbGF1ZmVuIGlzdC5cblxuQWRyZXNzaWVydCB3aXJkIGF1c2RydWVja2xpY2ggZGVyIExJTkssIG5pY2h0IGRlciBXcmFwcGVyLiBGcnVlaGVyIHN0YW5kIGRpZVxuUmVnZWwgYXVmIGRlciBibG9zc2VuIEtsYXNzZSBgLnJlYWRtb3JlYCwgdW5kIGRpZSB0cmFlZ3QgYmVpIGVpbmVtIEJ1dHRvbi1CbG9ja1xuZGVyIFdyYXBwZXItZGl2IOKAlCBkZXIgYmVrYW0gYWxzbyBSYWhtZW4sIGZlc3RlIDQxcHggdW5kIG92ZXJmbG93OiBoaWRkZW4sIHVuZFxuZGVyIGJlc2NocmlmdGV0ZSBMaW5rIGRhcmluIHd1cmRlIGF1ZiA0MXB4IHp1cmVjaHRnZXNjaG5pdHRlbi4gQXVmXG4va29tcGV0ZW56ZW4gd2FyIGRhcyB6dSBzZWhlbjogZWluIGxlZXJlciBLYXN0ZW4gc3RhdHQgZWluZXMgUGZlaWxzLlxuXG4haW1wb3J0YW50IGF1ZiBGbGFlY2hlIHVuZCBTY2hyaWZ0ZmFyYmUsIHdlaWwgV29yZFByZXNzIGRpZSBQYWxldHRlbi1LbGFzc2VuXG4oaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvciwgaGFzLWJsYWNrLWNvbG9yKSBzZWxic3QgbWl0ICFpbXBvcnRhbnQgc2NocmVpYnQg4oCUXG5vaG5lIGRhcyBibGllYmUgZGVyIFJ1aGV6dXN0YW5kIGF1Y2ggYmVpbSBVZWJlcmZhaHJlbiBzdGVoZW4uIEF1ZiBiZWlkZW5cblp1c3RhZW5kZW4gZ2VzZXR6dCwgc29uc3QgZ2V3aW5udCBkaWUgUnVoZWZhcmJlLiBEYXNzZWxiZSBWb3JnZWhlbiB3aWUgaW5cbmZhZXRoLWJ1dHRvbi1vdXRsaW5lLlxuXG5EZXIgS2FzdGVuIGlzdCBlY2h0ZXMgQ1NTIChSYWhtZW4gKyBGbGFlY2hlKSwgbnVyIGRlciBQZmVpbCBrb21tdCBhdXMgZWluZXJcbkRhdGVpIOKAlCBhbHMgTWFza2UgdWViZXIgY3VycmVudENvbG9yLiBGbGFlY2hlLCBSYWhtZW4gdW5kIFBmZWlsIHR3ZWVuZW4gZGFtaXRcbm5hdGl2IGltIFRha3Qgdm9uICRob3Zlci10cmFuc2l0aW9uLiBFaW4gV2VjaHNlbCB6d2VpZXIgZmVydGlnZXIgU1ZHcyBrb2VubnRlXG5kYXMgbmljaHQ6IGJhY2tncm91bmQtaW1hZ2UgaW50ZXJwb2xpZXJ0IGtlaW4gQnJvd3Nlci5cblxuRGllIEJlc2NocmlmdHVuZyAoXCJ3ZWl0ZXJcIiwgXCJXZWl0ZXJsZXNlblwiKSBibGVpYnQgaW0gTWFya3VwIOKAlCBzaWUgdHJhZWd0IGRlblxuTGluayBmdWVyIFNjcmVlbnJlYWRlciDigJQsIGZhZWxsdCBhYmVyIGR1cmNoIGRpZSBmZXN0ZSBIb2VoZSB1bmQgb3ZlcmZsb3c6XG5oaWRkZW4gYXVzIGRlbSBzaWNodGJhcmVuIEthc3Rlbi5cbiovXG5cbi8qXG4gKiAxIOKAlCBBdXNzZWhlbi4gR2VuYXUgZWluIFJ1bXBmIGZ1ZXIgZGllIGdhbnplIFNlaXRlLlxuICovXG5hLnJlYWRtb3JlLFxuLndwLWJsb2NrLWJ1dHRvbi5yZWFkbW9yZSA+IC53cC1ibG9jay1idXR0b25fX2xpbmssXG4udGhyZWUtY29sdW1ucy1pbWFnZS10ZXh0LWVsZW1lbnQgLndwLWJsb2NrLWJ1dHRvbnMgLndwLWJsb2NrLWJ1dHRvbiA+IC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICB3aWR0aDogJHJlYWRtb3JlLWxpbmstd2lkdGg7XG4gIGhlaWdodDogJHJlYWRtb3JlLWxpbmstd2lkdGg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIC8qIERpZSBQYXR0ZXJuLUJ1dHRvbnMgZXJiZW4gZWluZSB2ZXJ0aWthbGUgUG9sc3RlcnVuZyBhdXMgdGhlbWUuanNvblxuICAgICAoYmxvY2svX3dwLWJsb2NrLWJ1dHRvbiBzZXR6dCBzaWUgbWl0ICFpbXBvcnRhbnQpLiBEZXIgS2FzdGVuIGhhdCBlaW5lXG4gICAgIGZlc3RlIEdyb2Vzc2UgdW5kIGJyYXVjaHQgc2llIG5pY2h0LiAqL1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogJHJlYWRtb3JlLWJvcmRlci13aWR0aCBzb2xpZCAkcmVhZG1vcmUtaWNvbi1jb2xvcjtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHJlYWRtb3JlLWJnICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAkcmVhZG1vcmUtaWNvbi1jb2xvciAhaW1wb3J0YW50O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIC8qIEtlaW4gQnJvd3Nlci1PdXRsaW5lIGltIFJ1aGV6dXN0YW5kLCBkYWZ1ZXIgZWluIGVpZ2VuZXIgRm9rdXNyaW5nIOKAlCB3aWVcbiAgICAgYmVpIGRlbiB1ZWJyaWdlbiBCdXR0b25zLiAqL1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICRob3Zlci10cmFuc2l0aW9uLFxuICAgICAgICAgICAgICBib3JkZXItY29sb3IgJGhvdmVyLXRyYW5zaXRpb24sXG4gICAgICAgICAgICAgIGNvbG9yICRob3Zlci10cmFuc2l0aW9uO1xuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJyAhaW1wb3J0YW50O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gICAgLXdlYmtpdC1tYXNrOiB1cmwoJy4uLy4uL2ltYWdlcy9yZWFkbW9yZS1jaGV2cm9uLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXIgLyAjeyRyZWFkbW9yZS1pY29uLXdpZHRofSAjeyRyZWFkbW9yZS1pY29uLWhlaWdodH07XG4gICAgbWFzazogdXJsKCcuLi8uLi9pbWFnZXMvcmVhZG1vcmUtY2hldnJvbi5zdmcnKSBuby1yZXBlYXQgY2VudGVyIC8gI3skcmVhZG1vcmUtaWNvbi13aWR0aH0gI3skcmVhZG1vcmUtaWNvbi1oZWlnaHR9O1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmVhZG1vcmUtaG92ZXItYmcgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6ICRyZWFkbW9yZS1ob3Zlci1iZztcbiAgICBjb2xvcjogJHJlYWRtb3JlLWhvdmVyLWljb24tY29sb3IgIWltcG9ydGFudDtcbiAgfVxuXG4gICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogJGJ1dHRvbi1mb2N1cy1yaW5nO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAkYnV0dG9uLWZvY3VzLXJpbmctb2Zmc2V0O1xuICB9XG5cbiAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuMDFtcyAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qXG4gKiAyIOKAlCBTdGVsbHVuZzogbGlua3NidWVuZGlnLCBhbHMgbGV0enRlcyBFbGVtZW50LCBhbSB1bnRlcmVuIFJhbmQuXG4gKlxuICogbWFyZ2luLXRvcDogYXV0byBkcnVlY2t0IGRlbiBCdXR0b24gYW5zIEVuZGUgc2VpbmVzIEthc3RlbnMuIEVyc3QgZGFkdXJjaFxuICogc3RlaGVuIGRpZSBCdXR0b25zIGVpbmVyIFJlaWhlIGF1ZiBlaW5lciBMaW5pZSwgYXVjaCB3ZW5uIGRpZSBBbnJpc3N0ZXh0ZVxuICogdmVyc2NoaWVkZW4gbGFuZyBzaW5kIOKAlCB2b3JoZXIgaGluZyBkZXIgQnV0dG9uIGRpcmVrdCBhbSBUZXh0IHVuZCBzcHJhbmcgbWl0XG4gKiBqZWRlciBaZWlsZSBtaXQsIHdhcyB1ZWJlciBlaW5lIFJlaWhlIGhpbndlZyB1bnJ1aGlnIGF1c3NhaC5cbiAqXG4gKiBWb3JhdXNzZXR6dW5nIGlzdCwgZGFzcyBkZXIgdW1nZWJlbmRlIEthc3RlbiBlaW5lIEZsZXgtU3BhbHRlIGlzdCB1bmQgYmlzXG4gKiB6dXIgdm9sbGVuIEhvZWhlIGR1cmNoZ2VzdHJlY2t0IHdpcmQuIERpZXNlIFN0cmVja2tldHRlbiBzdGVoZW4gZG9ydCwgd28gZGVyXG4gKiBqZXdlaWxpZ2UgS2FzdGVuIGJlc2NocmllYmVuIGlzdDogY29tcG9uZW50L19jb2x1bW4tY2FyZCAoS2FydGVuKSxcbiAqIGJsb2NrL193cC1ibG9jay1nb3NpZ24gKFBvc3RzLVNsaWRlciksIGJsb2NrL19jYXJkLWdyaWQgKENhcmQgR3JpZCkgdW5kXG4gKiB3ZWl0ZXIgdW50ZW4gaW4gZGllc2VyIERhdGVpIGZ1ZXIgZGllIFNlaXRlbi1VZWJlcnNpY2h0ZW4uXG4gKlxuICogcGFkZGluZy10b3AgZXJzZXR6dCBkZW4gQmxvY2thYnN0YW5kLCBkZW4gbWFyZ2luLXRvcDogYXV0byB2ZXJkcmFlbmd0LlxuICovXG4ud3AtYmxvY2stYnV0dG9uczpoYXMoPiAud3AtYmxvY2stYnV0dG9uLnJlYWRtb3JlKSxcbi50aHJlZS1jb2x1bW5zLWltYWdlLXRleHQtZWxlbWVudCAud3AtYmxvY2stYnV0dG9ucyxcbmEucmVhZG1vcmUge1xuICBtYXJnaW4tdG9wOiBhdXRvO1xuICBwYWRkaW5nLXRvcDogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApO1xuICAvKiBMaW5rc2J1ZW5kaWcsIGVnYWwgd2FzIGltIEJlc3RhbmQgYWxzIGp1c3RpZnlDb250ZW50IGdlc3BlaWNoZXJ0IGlzdC4gKi9cbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4vKlxuICogMyDigJQgQmVzdGFuZDogZGVyIEJ1dHRvbiBzdGVodCBub2NoIHJlY2h0cyBuZWJlbiBkZXIgVWViZXJzY2hyaWZ0LlxuICpcbiAqIEluIGRlbiBhbHRlbiBQYXR0ZXJuIGxhZyBlciBpbiBlaW5lciBGbGV4LVplaWxlIG1pdCBqdXN0aWZ5Q29udGVudC4gRGllc2VzXG4gKiBMYXlvdXQgc3RlY2t0IGFscyBBdHRyaWJ1dCBpbSBnZXNwZWljaGVydGVuIE1hcmt1cCB1bmQgbGFlc3N0IHNpY2ggZHVyY2ggZWluZVxuICogQWVuZGVydW5nIGRlciBQYXR0ZXJuLURhdGVpZW4gbmljaHQgbmFjaHppZWhlbiDigJQgZWluZ2VmdWVndGUgSW5zdGFuemVuXG4gKiBiZWhhbHRlbiBpaHJlIFplaWxlLiBCaXMgZGFzIFdlcmt6ZXVnIHVlYmVyIGFsbGUgSW5oYWx0ZSBnZWxhdWZlbiBpc3QsIGxvZXN0XG4gKiBkaWUgUmVnZWwgZGllIFplaWxlIGhpZXIgYXVmOiBVZWJlcnNjaHJpZnQgb2JlbiwgQnV0dG9uIGRhcnVudGVyLCBiZWlkZXNcbiAqIGxpbmtzYnVlbmRpZy5cbiAqL1xuLndwLWJsb2NrLWdyb3VwOmhhcyg+IC53cC1ibG9jay1idXR0b25zID4gLndwLWJsb2NrLWJ1dHRvbi5yZWFkbW9yZSkge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4vKlxuICogNCDigJQgU2VpdGVuLVVlYmVyc2ljaHQgKHouIEIuIC9rb21wZXRlbnplbik6IEJpbGQsIFVlYmVyc2NocmlmdCwgQnV0dG9uLlxuICogRGllIFNwYWx0ZSB3aXJkIHp1ciBGbGV4LVNwYWx0ZSwgZGFtaXQgZGVyIEJ1dHRvbiBhdXMgUmVnZWwgMiBhbnMgdW50ZXJlXG4gKiBFbmRlIGZhZWxsdCB1bmQgdWViZXIgZWluZSBSZWloZSBoaW53ZWcgYXVmIGVpbmVyIExpbmllIHN0ZWh0IOKAlCBkaWVzZWxiZVxuICogTG9lc3VuZyB3aWUgaW4gZGVyIEthcnRlIChjb21wb25lbnQvX2NvbHVtbi1jYXJkKS5cbiAqL1xuLndwLWJsb2NrLWNvbHVtbjpoYXMoPiAud3AtYmxvY2stYnV0dG9ucyA+IC53cC1ibG9jay1idXR0b24ucmVhZG1vcmUpIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbiIsIi8qXG5Ud28gcm93cyB0d28gY29sdW1ucyB0ZXh0IGltYWdlIGVsZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciB0d28gcm93cyB0d28gY29sdW1ucyB0ZXh0IGltYWdlIGVsZW1lbnQuXG4qL1xuXG4udHdvLXJvd3MtdHdvLWNvbHVtbnMtdGV4dC1pbWFnZS1lbGVtZW50IHtcbiAgZmlndXJlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG4iLCIvKlxuVmlkZW8gZWxlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQ3VzdG9tIHN0eWxpbmcgZm9yIHZpZGVvIGVsZW1lbnQuXG4qL1xuXG4udmlkZW8tZWxlbWVudCB7XG4gIC52aWRlby1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC52aWRlby1jb250ZW50IHtcbiAgICAgIC53cC1ibG9jay1jb2x1bW5zIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgICAgIC53cC1ibG9jay1jb2x1bW4ge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB3aWR0aDogNDAlO1xuICAgICAgICBoZWlnaHQ6IDg1JTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLypcblNlcnZpY2VzIGVsZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkRpZSBkcmVpIFRlYXNlci1LYWNoZWxuIGRlciBTdGFydHNlaXRlOiBlaW4gQmlsZCwgZGFyYXVmIHVudGVuIGxpbmtzIGRlclxuVGl0ZWwsIGJlaW0gVWViZXJmYWhyZW4gbGVndCBzaWNoIEZhZXRoLUJsYXUgZGFydWViZXIgdW5kIGVpbiBVbnRlcnRpdGVsXG5mYWVocnQgYXVzLlxuXG5BdWZiYXUgKGF1cyBkZW0gQmVzdGFuZCwgd3BfYmxvY2sgXCJMZWlzdHVuZ3N1bWZhbmdcIik6XG5cbiAgLndwLWJsb2NrLWd1dGVuYmVlLWJhbm5lciAgICAgICAgICAgIExpbmstSHVlbGxlIGRlcyBHdXRlbkJlZS1CYW5uZXJzXG4gICAgLndwLWJsb2NrLWNvdmVyLmFsaWduLWl0ZW1zLWVuZCAgICBkaWUgS2FjaGVsXG4gICAgICBpbWcud3AtYmxvY2stY292ZXJfX2ltYWdlLWJhY2tncm91bmRcbiAgICAgIHNwYW4ud3AtYmxvY2stY292ZXJfX2JhY2tncm91bmQgIGRpZSBBYmR1bmtsdW5nXG4gICAgICAud3AtYmxvY2stY292ZXJfX2lubmVyLWNvbnRhaW5lclxuICAgICAgICBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0ZWxcbiAgICAgICAgcC5vdmVybGF5LXRleHQgICAgICAgICAgICAgICAgIFVudGVydGl0ZWwsIGZhZWhydCBiZWltIEhvdmVyIGF1c1xuKi9cblxuLnNlcnZpY2VzLWVsZW1lbnQge1xuICAvKlxuICAgKiBIb2VoZSB1bmQgS2FjaGVsLUNoYXJha3RlclxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBibG9jay9fd3AtYmxvY2stY292ZXIgbG9lc3QgQ292ZXIgdW50ZXJoYWxiIHZvbiBsZyBhdWY6IEJpbGQgenVydWVjayBpblxuICAgKiBkZW4gRmx1c3MsIFRleHQgZGFydW50ZXIsIG1pbi1oZWlnaHQgd2VnLiBGdWVyIEluaGFsdHMtQ292ZXIgbWl0IGdhbnplblxuICAgKiBBYnNhZXR6ZW4gaXN0IGRhcyByaWNodGlnIOKAlCBkaWVzZSBLYWNoZWxuIHRyYWdlbiBhYmVyIG51ciBlaW5lIFplaWxlIHVuZFxuICAgKiBsZWJlbiBkYXZvbiwgZGFzcyBCaWxkIHVuZCBCZXNjaHJpZnR1bmcgRUlOIEVsZW1lbnQgc2luZC4gQXVmZ2Vsb2VzdFxuICAgKiBzdGFuZGVuIGF1ZiBkZW0gSGFuZHkgZ3JhdWUgS2Flc3RlbiBtaXQgdmllbCBMZWVycmF1bSB1ZWJlciB1bmQgdW50ZXIgZGVtXG4gICAqIEJpbGQuXG4gICAqXG4gICAqIFNpZSBibGVpYmVuIGRlc2hhbGIgYXVmIGplZGVyIEJyZWl0ZSBlaW5lIEthY2hlbC4gRGllICFpbXBvcnRhbnQgaGllciBzaW5kXG4gICAqIGRpZSBHZWdlbnN0dWVja2UgenUgZGVuZW4gaW4gYmxvY2svX3dwLWJsb2NrLWNvdmVyIOKAlCBhbmRlcnMgaXN0IGFuIGVpbmVcbiAgICogIWltcG9ydGFudC1SZWdlbCBuaWNodCBoZXJhbnp1a29tbWVuOyBzaWUgZ3JlaWZlbiBudXIgaW5uZXJoYWxiIGRpZXNlclxuICAgKiBTZWt0aW9uLlxuICAgKi9cbiAgLndwLWJsb2NrLWNvdmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgbWluLWhlaWdodDogJHNlcnZpY2VzLWVsZW1lbnQtdGlsZS1oZWlnaHQgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihsZykge1xuICAgICAgbWluLWhlaWdodDogJHNlcnZpY2VzLWVsZW1lbnQtdGlsZS1oZWlnaHQtbWQgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcbiAgICAgIG1pbi1oZWlnaHQ6ICRzZXJ2aWNlcy1lbGVtZW50LXRpbGUtaGVpZ2h0LXNtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBEYXMgQmlsZCBmdWVsbHQgZGllIEthY2hlbC4gRGVyIFNjaG5pdHQgbGllZ3QgbGVpY2h0IHVlYmVyIGRlciBNaXR0ZVxuICAgICAqICg0MiAlIHN0YXR0IDUwICUpOiBkaWUgTW90aXZlIHNpbmQgSG9jaGZvcm1hdCBtaXQgZGVyIE1hc2NoaW5lIGV0d2FzXG4gICAgICogb2JlcmhhbGIgZGVyIEJpbGRtaXR0ZSwgdW5kIGF1ZiBkZW0gSGFuZHkg4oCUIHdvIGRpZSBLYWNoZWwgYW0gZWhlc3RlblxuICAgICAqIHF1YWRyYXRpc2NoIHdpcmQgdW5kIGFtIG1laXN0ZW4gd2VnZ2VzY2huaXR0ZW4gd2VyZGVuIG11c3Mg4oCUIHN0aWVzcyBpaHJcbiAgICAgKiBEYWNoIHNvbnN0IGFuIGRpZSBvYmVyZSBLYW50ZS5cbiAgICAgKi9cbiAgICAud3AtYmxvY2stY292ZXJfX2ltYWdlLWJhY2tncm91bmQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gICAgICBpbnNldDogMDtcbiAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlciA0MiU7XG4gICAgfVxuXG4gICAgLndwLWJsb2NrLWNvdmVyX19pbm5lci1jb250YWluZXIge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogQWJkdW5rbHVuZ1xuICAgICAqIC0tLS0tLS0tLS1cbiAgICAgKiBEZXIgQ292ZXItQmxvY2sgYnJpbmd0IGVpbmUgZmxhZWNoaWdlIFNjaGljaHQgbWl0IChkaW1SYXRpbyA1MCwgYWxzb1xuICAgICAqIDUwICUgU2Nod2FyeiB1ZWJlciBkZW0gZ2FuemVuIEJpbGQpLiBBdWYgZGllc2VuIE1vdGl2ZW4g4oCUIE1hc2NoaW5lbiBhdWZcbiAgICAgKiBoZWxsZW0gR3J1bmQg4oCUIGxlZ3RlIHNpY2ggZGFtaXQgZWluIGdyYXVlciBTY2hsZWllciB1ZWJlciBkYXMgUHJvZHVrdCxcbiAgICAgKiB1bmQgZGVyIHdlaXNzZSBUaXRlbCBzdGFuZCB0cm90emRlbSBudXIga25hcHAgbGVzYmFyIGF1ZiBoZWxsZW0gQmxlY2guXG4gICAgICogQmVpZGVzIHp1c2FtbWVuOiBkYXMgQmlsZCB3YXIgZHVua2xlciwgZGVyIFRleHQgbmljaHQgaGVsbGVyLlxuICAgICAqXG4gICAgICogU3RhdHRkZXNzZW4gZWluIFZlcmxhdWYgdm9uIHVudGVuLiBPYmVuIGJsZWlidCBkYXMgTW90aXYgdW5hbmdldGFzdGV0XG4gICAgICogdW5kIGRhbWl0IGVya2VubmJhciwgbmFjaCB1bnRlbiBsYWV1ZnQgZXIgYXVmIDg1ICUgU2Nod2FyeiB6dSDigJQgZG9ydCxcbiAgICAgKiB3byBkZXIgVGl0ZWwgc3RlaHQuIERhcyBCaWxkIHdpcmQgaGVsbGVyIFVORCBkZXIgVGV4dCBiZXNzZXIgbGVzYmFyLlxuICAgICAqXG4gICAgICogRGFzICFpbXBvcnRhbnQgZ2lsdCBkZXIgRmxhZWNoZW5mYXJiZTogZGVyIEtlcm4gc2NocmVpYnQgc2llIHVlYmVyXG4gICAgICogYC53cC1ibG9jay1jb3ZlciAuaGFzLWJhY2tncm91bmQtZGltOm5vdChbY2xhc3MqPVwiLWJhY2tncm91bmQtY29sb3JcIl0pYFxuICAgICAqIHVuZCBsaWVndCBkYW1pdCBhdWYgZGVyc2VsYmVuIFNwZXppZml0YWV0LiBCbGllYmUgc2llIHN0ZWhlbiwgc2Flc3NlXG4gICAgICogZGFzIFNjaHdhcnogaGludGVyIGRlbSBWZXJsYXVmIHVuZCBkaWUgdHJhbnNwYXJlbnRlbiBTdGVsbGVuIHdhZXJlblxuICAgICAqIGdhciBuaWNodCB0cmFuc3BhcmVudC4gRGllIEt1cnpzY2hyZWlid2Vpc2UgYGJhY2tncm91bmRgIHJhZXVtdCBzaWUgbWl0XG4gICAgICogYWIuXG4gICAgICovXG4gICAgLndwLWJsb2NrLWNvdmVyX19iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgdG8gdG9wLFxuICAgICAgICByZ2JhKDAsIDAsIDAsIC44NSkgMCUsXG4gICAgICAgIHJnYmEoMCwgMCwgMCwgLjYyKSAxOCUsXG4gICAgICAgIHJnYmEoMCwgMCwgMCwgLjIyKSA0NSUsXG4gICAgICAgIHJnYmEoMCwgMCwgMCwgMCkgNzUlXG4gICAgICApICFpbXBvcnRhbnQ7XG4gICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAvKlxuICAgICAgICogSG92ZXItVGludC4gTGllZ3QgYWxzIGVpZ2VuZSBFYmVuZSB1ZWJlciBkZW0gVmVybGF1ZiwgZGFtaXQgc2ljaCBkaWVcbiAgICAgICAqIERlY2trcmFmdCB3ZWljaCBmYWhyZW4gbGFlc3N0IOKAlCBlaW4gYmFja2dyb3VuZC1pbWFnZSBpbnRlcnBvbGllcnRcbiAgICAgICAqIGtlaW4gQnJvd3Nlci5cbiAgICAgICAqL1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkaG92ZXItdHJhbnNpdGlvbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFVudGVydGl0ZWw6IGZhZWhydCBiZWltIFVlYmVyZmFocmVuIGF1cy4gbWF4LWhlaWdodCBzdGF0dCBoZWlnaHQsIHdlaWxcbiAgICAgKiBkaWUgWmVpbGVuemFobCB2b20gVGV4dCBhYmhhZW5ndC5cbiAgICAgKi9cbiAgICAud3AtYmxvY2stY292ZXJfX2lubmVyLWNvbnRhaW5lciB7XG4gICAgICAub3ZlcmxheS10ZXh0IHtcbiAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAkaG92ZXItdHJhbnNpdGlvbjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgLndwLWJsb2NrLWNvdmVyX19pbm5lci1jb250YWluZXIge1xuICAgICAgICAub3ZlcmxheS10ZXh0IHtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiAkc2VydmljZXMtZWxlbWVudC1vdmVybGF5LXRleHQtaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLndwLWJsb2NrLWd1dGVuYmVlLWJhbm5lciB7XG4gICAgJjpob3ZlciB7XG4gICAgICAud3AtYmxvY2stY292ZXIge1xuICAgICAgICAud3AtYmxvY2stY292ZXJfX2JhY2tncm91bmQge1xuICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6ICRkZWZhdWx0LW9wYWNpdHk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAud3AtYmxvY2stY292ZXJfX2JhY2tncm91bmQ6YmVmb3JlLFxuICAgIC53cC1ibG9jay1jb3ZlciAub3ZlcmxheS10ZXh0IHtcbiAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC4wMW1zICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvKlxuUmVmZXJlbmNlIGVsZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciByZWZlcmVuY2UgZWxlbWVudC5cbiovXG5cbi5yZWZlcmVuY2UtZWxlbWVudCB7XG4gIC53cC1ibG9jay1pbWFnZSB7XG4gICAgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7XG4gICAgdHJhbnNpdGlvbjogZmlsdGVyICRob3Zlci10cmFuc2l0aW9uO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci13aWR0aCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0zMCkgdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMTApO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBmaWx0ZXI6IGdyYXlzY2FsZSgwKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5JbWFnZSBvdmVybGF5IGVsZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciBpbWFnZSBvdmVybGF5IGVsZW1lbnQuXG4qL1xuXG4uaW1hZ2Utb3ZlcmxheS1lbGVtZW50IHtcbiAgLndwLWJsb2NrLWNvdmVyIHtcbiAgICBhbGlnbi1pdGVtczogZW5kO1xuXG4gICAgLyogVGV4dGthc3Rlbi1CcmVpdGU6IDQwJSBkZXIgQnVlaG5lLCBhYmVyIG5pZSBicmVpdGVyIGFscyA2MDBweC4gKi9cbiAgICAud3AtYmxvY2stY29sdW1ucyB7XG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gICAgICAgIHdpZHRoOiA0MCU7XG4gICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLndwLWJsb2NrLWNvdmVyX19pbm5lci1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS13cC0tc3R5bGUtLXJvb3QtLXBhZGRpbmctbGVmdCkgIWltcG9ydGFudDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXdwLS1zdHlsZS0tcm9vdC0tcGFkZGluZy1yaWdodCkgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuLypcbkhlcm8tQnVlaG5lXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5CdWVobmUgc3RhdHQgQ29udGVudC1CaWxkOiBkYXMgQmlsZCBsYWV1ZnQgdW5hYmdlZHVua2VsdCwgZGVuIEtvbnRyYXN0IHRyYWVndFxuYWxsZWluIGRlciBoYWxidHJhbnNwYXJlbnQgd2Vpc3NlIFRleHRrYXN0ZW4uXG5cbktyaXRlcml1bSBpc3QgZGVyIHdlaXNzZSBUZXh0a2FzdGVuICguaGFzLWJhc2UtdHJhbnNwYXJlbnQtYmFja2dyb3VuZC1jb2xvcikgaW1cbkNvdmVyOiBlaW4gaW1hZ2Utb3ZlcmxheS1FbGVtZW50IG1pdCBkaWVzZW0gS2FzdGVuIGlzdCBlaW4gZWNodGVyIEhlYWRlci1IZXJvXG4oU3RhcnRzZWl0ZSBlYmVuc28gd2llIHouQi4gL2tvbXBldGVuemVuLy4uLi9zeXN0ZW0tdW5kLW1vZHVsYmF1LykuIERlclxuXCJFeWVicm93XCIgaXN0IGRhZnVlciB1bmdlZWlnbmV0IOKAlCBlciBpc3QgbWFsIGVpblxuPHAgY2xhc3M9XCJoZXJvLWV5ZWJyb3dcIj4gKGhvbWUpLCBtYWwgZWluIDxoMiBjbGFzcz1cImhhcy1zbWFsbC1mb250LXNpemVcIj5cbihVbnRlcnNlaXRlbik7IGRlciBUZXh0a2FzdGVuIGRhZ2VnZW4gaXN0IGJlaSBhbGxlbiBnbGVpY2guXG5cbkRpZSBCdWVobmVuaG9laGUgKG1pbi1oZWlnaHQpIGJsZWlidCBiZXd1c3N0IGF1ZiBkaWUgU3RhcnRzZWl0ZSBiZWdyZW56dDogZGllXG51ZWJyaWdlbiBIZXJvZXMgYnJpbmdlbiBzaW5udm9sbGUgZWlnZW5lIE1pbmRlc3Rob2VoZW4gKDM0NuKAkzQ3OXB4KSBtaXQuXG4qL1xuXG4uaW1hZ2Utb3ZlcmxheS1lbGVtZW50OmhhcyguaGFzLWJhc2UtdHJhbnNwYXJlbnQtYmFja2dyb3VuZC1jb2xvcikge1xuICAvKlxuICAgKiBLZXJuLVBlbmRhbnQgenUgYmFja2dyb3VuZC1zaXplOiBjb3ZlciAvIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlci5cbiAgICogY29yZS9jb3ZlciByZW5kZXJ0IGRhcyBCaWxkIGFscyA8aW1nPiBtaXQgb2JqZWN0LWZpdCDigJQgdmlzdWVsbCBkYXNzZWxiZSxcbiAgICogYmVoYWVsdCBhYmVyIHNyY3NldCB1bmQgZmV0Y2hwcmlvcml0eSBmdWVyIGRlbiBMQ1AuXG4gICAqL1xuICAud3AtYmxvY2stY292ZXJfX2ltYWdlLWJhY2tncm91bmQge1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICB9XG5cbiAgLypcbiAgICogS2VpbiBPdmVybGF5OiBkZXIgSW5oYWx0IGJyaW5ndCBkZW4gRGltIG9obmVoaW4gYXVmIDAlXG4gICAqIChoYXMtYmFja2dyb3VuZC1kaW0tMCksIGRpZSBmcnVlaGVyIGhpZXIgZ2VzZXR6dGUgQWJkdW5rbHVuZyBmYWVsbHQgd2VnLlxuICAgKi9cbiAgLndwLWJsb2NrLWNvdmVyX19iYWNrZ3JvdW5kIHtcbiAgICBvcGFjaXR5OiAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuYm9keS5ob21lIHtcbiAgLmltYWdlLW92ZXJsYXktZWxlbWVudCB7XG4gICAgLyogRWluZSBTdGVsbHNjaHJhdWJlIGZ1ZXIgZGllIEJ1ZWhuZW5ob2VoZSDigJQgbnVyIFN0YXJ0c2VpdGUuICovXG4gICAgLS1mYWV0aC1oZXJvLWhlaWdodDogY2xhbXAoMzYwcHgsIDYwdmgsIDY0MHB4KTtcblxuICAgIC53cC1ibG9jay1jb3ZlciB7XG4gICAgICAvKlxuICAgICAgICogRGVyIEJsb2NrIGJyaW5ndCBzZWluZSBNaW5kZXN0aG9laGUgYWxzIElubGluZS1TdHlsZSBtaXQgKGF1ZiBkZXJcbiAgICAgICAqIFN0YXJ0c2VpdGUgODUwcHgpLCBkZXNoYWxiIGlzdCAhaW1wb3J0YW50IGRlciBlaW56aWdlIEhlYmVsLlxuICAgICAgICogNjB2aCBsYWVzc3QgZGVuIGZvbGdlbmRlbiBBYnNjaG5pdHQgYmVpIDEwMCUgWm9vbSBtaXQgaW5zIEJpbGQuXG4gICAgICAgKi9cbiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWZhZXRoLWhlcm8taGVpZ2h0KSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG4vKlxuSGVyby1FeWVicm93XG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5LbGVpbmVzIExhYmVsIHVlYmVyIGRlciBVZWJlcnNjaHJpZnQuIEdsZWljaGUgVHlwb2dyYWZpZSB3aWUgZGllIFRvcGJhci1MYWJlbHNcbmltIEhlYWRlciwgZGFtaXQgZGllIE1hcmtlIGVpbmUgd2llZGVyZXJrZW5uYmFyZSBMYWJlbC1TY2hyaWZ0IGhhdC5cblxuRGllIEZhcmJlIGlzdCBzZWNvbmRhcnkg4oCUIGRhc3NlbGJlIEhlbGxibGF1IHdpZSBiZWkgZGVuIHVlYnJpZ2VuIEV5ZWJyb3dzXG4oY2FyZC1ncmlkLCBwcm9jZXNzLXN0ZXBzLCBmYXEtZWxlbWVudCwgY29udGFjdC1zZWN0aW9uKS4gRGFzIExhYmVsIGlzdCBkYW1pdFxudWViZXJhbGwgZGllIGVpbnppZ2UgZmFyYmlnZSBaZWlsZSB1ZWJlciBkZXIgVWViZXJzY2hyaWZ0LlxuKi9cblxuLmhlcm8tZXllYnJvdyB7XG4gIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS14LXNtYWxsKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC41cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIG1hcmdpbi1ib3R0b206IGNhbGMoJHNwYWNlciAvIDIpO1xufVxuXG4vKlxuICogRmFyYmUgZ2Vzb25kZXJ0IHVuZCB1ZWJlciBkZW4gVGFnIG1pdGdlc2NocmllYmVuOiBiZXN0ZWhlbmRlIExhYmVscyB0cmFnZW5cbiAqIGltIEluaGFsdCBub2NoIGhhcy1ibGFjay1jb2xvciwgdW5kIFdvcmRQcmVzcyBzY2hyZWlidCBkaWUgUGFsZXR0ZW4tS2xhc3NlblxuICogbWl0ICFpbXBvcnRhbnQg4oCUIHVuZCB6d2FyIHNwYWV0ZXIgaW0gRG9rdW1lbnQgYWxzIGFwcC5jc3MuIEVpbmUgZWlua2xhc3NpZ2VcbiAqIFJlZ2VsIHZlcmxvZXJlIGRpZXNlbiBHbGVpY2hzdGFuZCwgcC5oZXJvLWV5ZWJyb3cgKDAsMSwxKSBnZXdpbm50IGlobi5cbiAqL1xucC5oZXJvLWV5ZWJyb3cge1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlY29uZGFyeSkgIWltcG9ydGFudDtcbn1cblxuLypcbkhlcm8tVGV4dGthc3RlbiwgLVNjaHJpZnQgdW5kIC1CdXR0b25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkdpbHQgZnVlciBhbGxlIGltYWdlLW92ZXJsYXkgSGVyby1FbGVtZW50ZSAoU3RhcnRzZWl0ZSArIFNlaXRlbmtvZXBmZSksIHNvYmFsZFxuc2llIGRlbiBoZWxsZW4gVGV4dGthc3RlbiAoYmFzZS10cmFuc3BhcmVudCkgdHJhZ2VuLlxuKi9cblxuLmltYWdlLW92ZXJsYXktZWxlbWVudCB7XG4gIC8qIFRleHRrYXN0ZW46IDM1cHggdW1sYXVmZW5kLCBmYXN0IGRlY2tlbmRlcyBXZWlzcyB1ZWJlciBkZW0gQmlsZC4gKi9cbiAgLmhhcy1iYXNlLXRyYW5zcGFyZW50LWJhY2tncm91bmQtY29sb3Ige1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmZkZiAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDM1cHg7XG5cbiAgICAvKlxuICAgICAqIE1vYmlsIGJ1ZW5kaWcgbWl0IGRlbSByZXN0bGljaGVuIEluaGFsdDogZGFzIHNlaXRsaWNoZSBQYWRkaW5nIGZhZWxsdFxuICAgICAqIHdlZywgZGFtaXQgZGVyIFRleHQgYXVmIGRlciBXdXJ6ZWwtRWlucnVlY2t1bmcgc2l0enQsIGRpZSBkZXJcbiAgICAgKiBpbm5lci1jb250YWluZXIgPG1kIG9obmVoaW4gc2V0enQgKHNpZWhlIG9iZW4pLlxuICAgICAqL1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFNjaHJpZnRmYXJiZSBnZXNvbmRlcnQgKGRpZSBQcmVzZXQtS2xhc3NlIC5oYXMtKi1jb2xvciBrb21tdCB2b25cbiAgICAgKiBXb3JkUHJlc3MgbWl0ICFpbXBvcnRhbnQsIGRlc2hhbGIgaGllciBlYmVuZmFsbHMpOlxuICAgICAqIERpZSBVZWJlcnNjaHJpZnQgYmxlaWJ0IGltbWVyIHNjaHdhcnog4oCUIGF1Y2ggbW9iaWwsIHdpZSBpbVxuICAgICAqIFJlZmVyZW56YmlsZC4gRGVyIEZsaWVzc3RleHQgc3RlaHQgaW4gZGVyIFN0YW5kYXJkZmFyYmUgZGVyIFNlaXRlLCBkZXJcbiAgICAgKiBFeWVicm93IGluIHNlY29uZGFyeSAoc2llaGUgb2Jlbikg4oCUIGJlaWRlcyBhdWYgYWxsZW4gQnJlaXRlbi5cbiAgICAgKi9cbiAgICAud3AtYmxvY2staGVhZGluZyB7XG4gICAgICBjb2xvcjogJGJsYWNrICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBFeWVicm93LU9wdGlrIGF1Y2ggZnVlciBVbnRlcnNlaXRlbjogZG9ydCBpc3QgZGVyIEV5ZWJyb3cgZWluIGtsZWluZXNcbiAgICAgKiA8aDIgY2xhc3M9XCJoYXMtc21hbGwtZm9udC1zaXplXCI+IChhdWYgZGVyIFN0YXJ0c2VpdGUgZGFnZWdlbiBlaW5cbiAgICAgKiA8cCBjbGFzcz1cImhlcm8tZXllYnJvd1wiPiwgZGFzIHNlaW5lIExhYmVsLVR5cG8gc2Nob24gZ2xvYmFsIGJla29tbXQpLlxuICAgICAqIEdsZWljaGUgQW5tdXR1bmc6IGZldHQsIEdyb3NzYnVjaHN0YWJlbiwgZXR3YXMgTGF1ZndlaXRlLiBIZWFkaW5ncyBrb21tZW5cbiAgICAgKiBwZXIgdGhlbWUuanNvbiBtaXQgZm9udC13ZWlnaHQ6IDMwMCB1bmQgbmllZHJpZ2VyIFNwZXppZml0YWV0IOKAlCBkaWVzZVxuICAgICAqIEtsYXNzZW5yZWdlbCB1ZWJlcnN0ZXVlcnQgZGFzIG9obmUgIWltcG9ydGFudC4gRGllIEZhcmJlIGJyYXVjaHQgZGFzXG4gICAgICogIWltcG9ydGFudCBkYWdlZ2VuIHNlaHIgd29obDogc2llIG11c3MgZGllIFVlYmVyc2NocmlmdGVuLVJlZ2VsIGRpcmVrdFxuICAgICAqIGRhcnVlYmVyIHNjaGxhZ2VuLlxuICAgICAqL1xuICAgIC53cC1ibG9jay1oZWFkaW5nLmhhcy1zbWFsbC1mb250LXNpemUge1xuICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1zZWNvbmRhcnkpICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC41cHg7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogRmxpZXNzdGV4dCBpbiBkZXIgU3RhbmRhcmRmYXJiZSBkZXIgU2VpdGUgKGNvbnRyYXN0IGF1cyBkZXIgdGhlbWUuanNvbiksXG4gICAgICogbmljaHQgc2Nod2FyeiDigJQgZGVyIEFic2F0eiBpbSBUZXh0a2FzdGVuIHNvbGwgc2ljaCBsZXNlbiB3aWUgamVkZXJcbiAgICAgKiBhbmRlcmUgQWJzYXR6IGF1Y2guIERhcyAhaW1wb3J0YW50IGJsZWlidCBub2V0aWc6IGJlc3RlaGVuZGUgSGVyb2VzXG4gICAgICogdHJhZ2VuIGltIEluaGFsdCBub2NoIGhhcy1ibGFjay1jb2xvciwgdW5kIFdvcmRQcmVzcyBzY2hyZWlidCBkaWVcbiAgICAgKiBQYWxldHRlbi1LbGFzc2VuIG1pdCAhaW1wb3J0YW50IOKAlCB1bmQgendhciBzcGFldGVyIGltIERva3VtZW50IGFsc1xuICAgICAqIGFwcC5jc3MuXG4gICAgICovXG4gICAgcDpub3QoLmhlcm8tZXllYnJvdykge1xuICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jb250cmFzdCkgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvKlxuICBIZXJvLUJ1dHRvblxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIERlciBncnVlbmUgU3RhbmRhcmQtQnV0dG9uIGF1cyBibG9jay9fd3AtYmxvY2stYnV0dG9uOiBnbGVpY2hlIEZsYWVjaGUsXG4gIGdsZWljaGVyIFZlcmxhdWZzLUhvdmVyIChzZW5hcnkgbGFldWZ0IG5hY2ggdW50ZW4gaW4gZGVuIGhlbGxlcmVuIFRvbiBhdXMpLFxuICBudXIgaW4gZGVyIEhlcm8tVHlwb2dyYWZpZSDigJQga2xlaW4sIGZldHQsIEdyb3NzYnVjaHN0YWJlbi5cblxuICBEZXIgQnV0dG9uIHN0ZWh0IGltbWVyIGxpbmtzYnVlbmRpZyB1bnRlciBkZW0gVGV4dCwgdW5hYmhhZW5naWcgZGF2b24sXG4gIHdlbGNoZSBBdXNyaWNodHVuZyBpbSBFZGl0b3IgYW0gd3A6YnV0dG9ucy1CbG9jayBoaW50ZXJsZWd0IGlzdDogZGllXG4gIFRleHRrYXN0ZW4tSW5oYWx0ZSBzaW5kIGxpbmtzYnVlbmRpZyBnZXNldHp0LCBlaW4gbWl0dGlnIHN0ZWhlbmRlciBCdXR0b25cbiAgYnJpY2h0IGRpZXNlIEthbnRlLlxuICAqL1xuICAud3AtYmxvY2stYnV0dG9ucyB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKlxuICAgKiBEaWUgRmFyYi1LbGFzc2VuIGRlcyBCbG9ja3Mgd2VyZGVuIHVlYmVyc3RpbW10OiBhZWx0ZXJlIEhlcm9lcyB0cmFnZW4gYW1cbiAgICogQnV0dG9uIG5vY2ggZGVuIE91dGxpbmUtU3RpbCAoaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvciwgaGFzLWJsYWNrLWNvbG9yKSxcbiAgICogbGF1ZmVuIGFiZXIgZWJlbmZhbGxzIGdydWVuLiBEaWUgZHJlaSBLbGFzc2VuIGltIFNlbGVrdG9yIGhlYmVuIGRpZSBSZWdlbFxuICAgKiBhdXNzZXJkZW0gdWViZXIgZGVuIE91dGxpbmUtQnV0dG9uIGF1cyBibG9jay9fd3AtYmxvY2stYnV0dG9uLCBkZXIgc3BhZXRlclxuICAgKiBpbXBvcnRpZXJ0IHdpcmQuIFBmZWlsLUxpbmtzICgucmVhZG1vcmUpIGJsZWliZW4gYXVzc2VuIHZvci5cbiAgICovXG4gIC53cC1ibG9jay1idXR0b25zIC53cC1ibG9jay1idXR0b24gPiAud3AtYmxvY2stYnV0dG9uX19saW5rOm5vdCgucmVhZG1vcmUpIHtcbiAgICBAaW5jbHVkZSBmYWV0aC1idXR0b24tZ3JhZGllbnQoJGJ1dHRvbi1ncmVlbi01MDAsICRidXR0b24tZ3JlZW4tMzAwKTtcbiAgICBib3JkZXI6IDAgIWltcG9ydGFudDsgICAgICAgLyogbmV1dHJhbGlzaWVydCBkaWUgaXMtc3R5bGUtb3V0bGluZS1WYXJpYW50ZSAqL1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpOyAgLyoga2xlaW5lciwgZGFtaXQgZXMgc3lzdGVtYXRpc2NoIHp1ciBTZWl0ZSBwYXNzdCAqL1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgfVxufVxuIiwiLypcbkltYWdlIG92ZXJsYXkgY2VudGVyIGVsZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciBpbWFnZSBvdmVybGF5IGNlbnRlciBlbGVtZW50LlxuXG5EZXIgd2Vpc3NlIFRleHRrYXN0ZW4gYXVmIGRlbSBCaWxkIGJlc3RhbmQgYXVzIHp3ZWkgU3BhbHRlbjogbGlua3MgRGF0dW0gdW5kXG5BbnJpc3N0ZXh0LCByZWNodHMgZGVyIFBmZWlsLUJ1dHRvbi4gSmV0enQgc3RlaHQgZGVyIFBmZWlsIHVudGVyIGRlbSBUZXh0LFxubGlua3NidWVuZGlnLlxuXG5EaWUgU3BhbHRlbmF1ZnRlaWx1bmcgc3RlY2t0IGltIGdlc3BlaWNoZXJ0ZW4gTWFya3VwIHVuZCB3YW5kZXJ0IG1pdCBlaW5lclxuQWVuZGVydW5nIGRlciBQYXR0ZXJuLURhdGVpIG5pY2h0IGluIGJlc3RlaGVuZGUgU2VpdGVuLiBEZXNoYWxiIGxvZXN0IGRpZVxuU2VrdGlvbiBkaWUgU3BhbHRlbiBoaWVyIHNlbGJzdCBhdWYg4oCUIGRhcyBQYXR0ZXJuIGlzdCB6dXNhZXR6bGljaCBhdWYgZWluZVxuU3BhbHRlIHVtZ2VzdGVsbHQsIGRhbWl0IG5ldWUgSW5zdGFuemVuIGdhciBuaWNodCBlcnN0IHp3ZWkgYW5sZWdlbi5cbiovXG5cbi5pbWFnZS1vdmVybGF5LWNlbnRlci1lbGVtZW50IHtcbiAgLndwLWJsb2NrLWNvdmVyIHtcbiAgICBhbGlnbi1pdGVtczogZW5kO1xuXG4gICAgLndwLWJsb2NrLWNvbHVtbnMge1xuICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDtcblxuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZykge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHhsKSB7XG4gICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBEZXIgVGV4dGthc3RlbiBzZWxic3Q6IGF1cyBuZWJlbmVpbmFuZGVyIHdpcmQgdW50ZXJlaW5hbmRlci4gR3JlaWZ0IHVlYmVyXG4gICAgICogZGllIEhpbnRlcmdydW5ka2xhc3NlLCBkYW1pdCBudXIgZGVyIEthc3RlbiBnZW1laW50IGlzdCB1bmQgbmljaHQgZGllXG4gICAgICogYWV1c3NlcmVuIFNwYWx0ZW4sIGRpZSBkYXMgUGF0dGVybiB6dXIgQnJlaXRlbnN0ZXVlcnVuZyBiZW51dHp0LlxuICAgICAqL1xuICAgIC53cC1ibG9jay1jb2x1bW5zLmhhcy1iYXNlLXRyYW5zcGFyZW50LWJhY2tncm91bmQtY29sb3Ige1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgPiAud3AtYmxvY2stY29sdW1uIHtcbiAgICAgICAgZmxleC1iYXNpczogYXV0byAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIERlciBQZmVpbCBzdGVodCBsaW5rcywgbmljaHQgcmVjaHRzIOKAlCBhdWNoIGluIEJlc3RhbmRzaW5oYWx0ZW4uICovXG4gICAgLndwLWJsb2NrLWJ1dHRvbnMge1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIH1cbiAgfVxufVxuIiwiLypcblRocmVlIGNvbHVtbnMgaW1hZ2UgdGV4dCBlbGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3IgdGhyZWUgY29sdW1ucyBpbWFnZSB0ZXh0IGVsZW1lbnQuXG4qL1xuXG4udGhyZWUtY29sdW1ucy1pbWFnZS10ZXh0LWVsZW1lbnQge1xuICAuaGVhZGxpbmUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2VyO1xuICB9XG4gIC8qXG4gICAqIERpZSBCdXR0b25zIGRpZXNlcyBQYXR0ZXJuIHNpbmQgUGZlaWwtS2Flc3Rlbi4gRnJ1ZWhlciBzdGFuZCBoaWVyIGVpblxuICAgKiBgQGV4dGVuZCAucmVhZG1vcmVgIOKAlCBkYXMgaGF0IGRpZSBnYW56ZSBTZWxla3RvcmtldHRlIGRpZXNlcyBQYXR0ZXJuIGFuXG4gICAqIEpFREVOIFNlbGVrdG9yIGdlaGFlbmd0LCBkZXIgLnJlYWRtb3JlIG5lbm50LCBhdWNoIGFuIGRpZSA6aGFzKCktUmVnZWxuLFxuICAgKiB3byBkYWJlaSBLZXR0ZW4gaGVyYXVza2FtZW4sIGRpZSBuaWUgZ3JlaWZlbiBrb25udGVuLiBEaWUgU2VsZWt0b3JsaXN0ZVxuICAgKiBpbiBjb21wb25lbnQvX2NoZXZyb24tYnV0dG9uIG5lbm50IGRhcyBQYXR0ZXJuIGpldHp0IHNlbGJzdC5cbiAgICovXG59XG4iLCIvKlxuVGFicyBlbGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3IgdGFicyBlbGVtZW50LlxuKi9cblxuLnRhYnMtZWxlbWVudCB7XG4gIC5ndXRlbmEtdGFicy10YWIge1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvcjtcblxuICAgIC5ndXRlbmEtdGFiLXRpdGxlIHtcbiAgICAgIHRyYW5zaXRpb246IGJvcmRlciAkaG92ZXItdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5MaXN0IGVsZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciBsaXN0IGVsZW1lbnQuXG4qL1xuXG4ubGlzdC1lbGVtZW50IHtcbiAgbGkge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgQGV4dGVuZCAuaGVhZGxpbmUtZG90O1xuICB9XG59XG4iLCIvKlxuRm91ciBjb2x1bW4gdGV4dCBlbGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3IgZm91ciBjb2x1bW4gdGV4dCBlbGVtZW50LlxuKi9cblxuLmZvdXItY29sdW1uLXRleHQtZWxlbWVudCB7XG4gIC53cC1ibG9jay1jb2x1bW5zIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIC53cC1ibG9jay1jb2x1bW4ge1xuICAgICAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICAud3AtYmxvY2stY29sdW1uIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlci13aWR0aCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5JY29uIGNhcm91c2VsIGVsZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciBpY29uIGNhcm91c2VsIGVsZW1lbnQuXG4qL1xuXG4uaWNvbi1jYXJvdXNlbC1lbGVtZW50IHtcbiAgLnNsaWNrLXNsaWRlciB7XG4gICAgcGFkZGluZzogMCAkc3BhY2VyO1xuXG4gICAgLnNsaWNrLXByZXYsXG4gICAgLnNsaWNrLW5leHQge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuXG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNsaWNrLXByZXYge1xuICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAuc2xpY2stdHJhY2sge1xuICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuXG4gICAgICAuc2xpY2stc2xpZGUge1xuICAgICAgICBoZWlnaHQ6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAkc3BhY2VyICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgLndwLWJsb2NrLWltYWdlIHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAkaWNvbi1jYXJvdXNlbC1lbGVtZW50LWltYWdlLW1pbi1oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAud3AtYmxvY2stc2VwYXJhdG9yIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oYXMtYmxhY2stY29sb3Ige1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2xpY2stbmV4dCB7XG4gICAgICByaWdodDogMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gICAgICBwYWRkaW5nOiAwICRzcGFjZXIgKiAzO1xuICAgIH1cbiAgfVxufVxuIiwiLypcbkZBUSBlbGVtZW50IHBhdHRlcm5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblN0eWxpbmcgZm9yIHRoZSBmYWV0aC9mYXEtZWxlbWVudCBibG9jayBwYXR0ZXJuOiBhIHNvZnQgZnVsbC13aWR0aCBiYW5kIHdpdGggYVxuY2VudHJlZCBleWVicm93ICsgaGVhZGluZyBhYm92ZSB0aGUgbmF0aXZlIGNvcmUvZGV0YWlscyBhY2NvcmRpb24uIEV2ZXJ5dGhpbmcgaXNcbnNjb3BlZCB0byAuZmFxLWVsZW1lbnQgc28gdGhlIGdsb2JhbCBEZXRhaWxzIHN0eWxpbmcgKGJsb2NrL193cC1ibG9jay1kZXRhaWxzKVxuc3RheXMgdW50b3VjaGVkOyBoZXJlIHdlIG9ubHkgbWF0Y2ggdGhpcyBkZXNpZ24g4oCUIGRhcmstYmx1ZSBxdWVzdGlvbnMvY2hldnJvbixcbmxpZ2h0LWJsdWUgb24gaG92ZXIsIG9wZW4gdGl0bGVzIHN0YXlpbmcgZGFyayBibHVlLlxuXG5UaGUgRGV0YWlscyBydWxlcyBhcmUgbmVzdGVkIG9uZSBsZXZlbCBkZWVwZXIgdGhhbiB0aGUgZ2xvYmFsIGJsb2NrIHBhcnRpYWwgc29cbnRoZXkgd2luIG9uIHNwZWNpZmljaXR5IHJlZ2FyZGxlc3Mgb2YgaW1wb3J0IG9yZGVyLlxuKi9cblxuLmZhcS1lbGVtZW50IHtcbiAgLy8gVmVydGljYWwgc2VjdGlvbiBwYWRkaW5nIGlzIG93bmVkIGJ5IGxheW91dC9fc2VjdGlvbi1zcGFjaW5nIChhZGFwdGl2ZSkuXG5cbiAgJl9fZXllYnJvdyB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMTApO1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4xMmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB9XG5cbiAgLy8gU2VjdGlvbiBoZWFkaW5nOiB0aGUgZWRpdG9yIG1heSBwaWNrIGFueSBsZXZlbCAoSDHigJNINikgZm9yIHRoZSBkb2N1bWVudFxuICAvLyBvdXRsaW5lIHdpdGhvdXQgdGhlIGRlc2lnbiBjaGFuZ2luZy4gdGhlbWUuanNvbiBzdHlsZXMgaDHigKZoNiBkaWZmZXJlbnRseVxuICAvLyAoYW5kIHVwcGVyY2FzZXMgaDUvaDYpLCBzbyB0aGUgSDIgbG9vayBpcyBwaW5uZWQgaGVyZSwgdGFnLWFnbm9zdGljYWxseS5cbiAgLy8gXCIuZmFxLWVsZW1lbnQgPiBoNlwiICgwLDEsMSkgb3V0cmFua3MgdGhlIGdsb2JhbCBcIjpyb290IDp3aGVyZShoNilcIiAoMCwxLDApLlxuICAvLyBTY29wZWQgdG8gZGlyZWN0IGNoaWxkcmVuIHNvIGhlYWRpbmdzIGluc2lkZSBhbiBhbnN3ZXIga2VlcCB0aGVpciBvd24gc3R5bGUuXG4gID4gOmlzKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpIHtcbiAgICBmb250LXNpemU6IGNsYW1wKDEuMzc1cmVtLCBjYWxjKDEuMzc1cmVtICsgKCgxdncgLSAwLjQ4cmVtKSAqIDguNDEzNSkpLCAxLjc1cmVtKTtcbiAgICBmb250LXdlaWdodDogMzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gICZfX2xpc3Qge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTQwKTtcbiAgfVxuXG4gIC53cC1ibG9jay1kZXRhaWxzIHtcbiAgICBzdW1tYXJ5IHtcbiAgICAgIC8vIFF1ZXN0aW9uczogYmxhY2sgbGlrZSBldmVyeSBvdGhlciBoZWFkaW5nLCBsaWdodCBibHVlIG9uIGhvdmVyLlxuICAgICAgLy8gWmVybyB0aGUgaG9yaXpvbnRhbCBwYWRkaW5nIHNvIHRoZSBxdWVzdGlvbiB0ZXh0IGxpbmVzIHVwIHZlcnRpY2FsbHlcbiAgICAgIC8vIHdpdGggdGhlIGFuc3dlciB0ZXh0IGJlbG93IGl0LlxuICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1zZWNvbmRhcnkpO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGV2cm9uIGZvbGxvd3MgdGhlIHRpdGxlIGNvbG91cjogc3dhcCB0aGUgZml4ZWQtY29sb3VyIGJhY2tncm91bmQgU1ZHXG4gICAgICAvLyBmb3IgYSBtYXNrIGZpbGxlZCB3aXRoIGN1cnJlbnRDb2xvci4gUm90YXRpb24gb24gb3BlbiBpcyBpbmhlcml0ZWQgZnJvbVxuICAgICAgLy8gdGhlIGdsb2JhbCBEZXRhaWxzIHJ1bGUgKHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpKS5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudENvbG9yO1xuICAgICAgICAtd2Via2l0LW1hc2s6IHVybCgnLi4vLi4vaW1hZ2VzL2NoZXZyb24tZG93bi5zdmcnKSBuby1yZXBlYXQgY2VudGVyIC8gY29udGFpbjtcbiAgICAgICAgbWFzazogdXJsKCcuLi8uLi9pbWFnZXMvY2hldnJvbi1kb3duLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXIgLyBjb250YWluO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE9wZW4gaXRlbSBrZWVwcyB0aGUgYmxhY2sgdGl0bGUgKHRoZSBnbG9iYWwgYmxvY2sgdHVybnMgaXQgbGlnaHQgYmx1ZSkuXG4gICAgJltvcGVuXSBzdW1tYXJ5IHtcbiAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spO1xuICAgIH1cblxuICAgIC8vIEFuc3dlcjogZ3JleSBhbmQgYWxpZ25lZCB3aXRoIHRoZSBxdWVzdGlvbiAoZGVzaWduIGhhcyBubyBsZWZ0IGluZGVudCkuXG4gICAgPiA6bm90KHN1bW1hcnkpIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWNvbnRyYXN0KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5Db250YWN0IGZvcm0gZWxlbWVudCBwYXR0ZXJuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5TdHlsaW5nIGZvciB0aGUgZmFldGgvY29udGFjdC1mb3JtLWVsZW1lbnQgYmxvY2sgcGF0dGVybjogYSBsaWdodCBmdWxsLXdpZHRoXG5iYW5kIHdpdGggYSB0d28tY29sdW1uIGxheW91dCDigJQgaW50cm8gdGV4dCArIGFuIGljb24gY29udGFjdCBsaXN0IG9uIHRoZSBsZWZ0LFxuYW5kIGEgd2hpdGUgY2FyZCBob2xkaW5nIHRoZSBXUEZvcm1zIGZvcm0gKHNob3J0Y29kZSBpZCAxNDQ4KSBvbiB0aGUgcmlnaHQuXG5cbkV2ZXJ5dGhpbmcgcmV1c2VzIHRoZSB0aGVtZSBjb2xvdXIgcHJlc2V0cyAocHJpbWFyeS9zZWNvbmRhcnkvY29udHJhc3QvYmFzZSlcbmFuZCBzcGFjaW5nIHNjYWxlLiBUaGUgY29udGFjdC1saXN0IGljb25zIGFyZSBpbmxpbmUgU1ZHcyBkcmF3biB3aXRoXG5gY3VycmVudENvbG9yYCwgc28gY29sb3VyaW5nIHRoZSB3cmFwcGVyIHByaW1hcnkgYmx1ZSB0aW50cyB0aGVtLlxuXG5BbGwgV1BGb3JtcyBydWxlcyBhcmUgc2NvcGVkIHRvIC5jb250YWN0LWNhcmQgc28gdGhlIGZvb3RlcidzIFdQRm9ybXMgaW5zdGFuY2VcbmtlZXBzIGl0cyBvd24gKHVuc3R5bGVkKSBsb29rLlxuKi9cblxuLmNvbnRhY3Qtc2VjdGlvbiB7XG4gICZfX2V5ZWJyb3cge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTEwKTtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMTJlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB9XG59XG5cbi8vIENvbnRhY3QgbGlzdCDigJQgcHJpbWFyeS1ibHVlIGxpbmUgaWNvbnMgbmV4dCB0byBlYWNoIGxpbmUgb2YgY29udGFjdCBpbmZvLlxuLmNvbnRhY3QtaW5mbyB7XG4gIG1hcmdpbjogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApIDAgMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAmX19pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAkc3BhY2VyO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjZXI7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICAmX19pY29uIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXByaW1hcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgIHdpZHRoOiAyMnB4O1xuICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgIH1cbiAgfVxuXG4gICZfX3RleHQge1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tY29udHJhc3QpO1xuXG4gICAgLypcbiAgICAgKiBOdXIgZGVyIFJ1aGV6dXN0YW5kIOKAlCBkZXIgTGluayBzdGVodCBpbiBkZXIgU2NocmlmdGZhcmJlIGRlciBaZWlsZS5cbiAgICAgKiBIb3Zlci1GYXJiZSB1bmQgVmVyZGlja3VuZyBrb21tZW4gYXVzIGRlciBnbG9iYWxlbiBMaW5rLVJlZ2VsIGluXG4gICAgICogYmFzZS9fYmFzZS5cbiAgICAgKi9cbiAgICBhIHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vLyBXaGl0ZSBjYXJkIGhvbGRpbmcgdGhlIGZvcm0uXG4vLyBUaGlzIGNhcmQgaXMgYSBjb25zdHJhaW5lZCBncm91cCwgc28gV29yZFByZXNzIChyb290LXBhZGRpbmctYXdhcmUgdGhlbWUpXG4vLyB0YWdzIGl0IGBoYXMtZ2xvYmFsLXBhZGRpbmdgIGFuZCB0aGVuIHplcm9lcyB0aGUgaG9yaXpvbnRhbCBwYWRkaW5nIG9mXG4vLyBuZXN0ZWQgaGFzLWdsb2JhbC1wYWRkaW5nIGdyb3Vwcy4gVGhlIGNvbXBvdW5kIGAuY29udGFjdC1jYXJkLndwLWJsb2NrLWdyb3VwYFxuLy8gc2VsZWN0b3Igb3V0cmFua3MgdGhhdCBydWxlIHNvIHRoZSBjYXJkIGtlZXBzIGl0cyBvd24gcGFkZGluZyBvbiBhbGwgc2lkZXMuXG4uY29udGFjdC1jYXJkLndwLWJsb2NrLWdyb3VwIHtcbiAgcGFkZGluZzogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApO1xufVxuXG4uY29udGFjdC1jYXJkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuICBib3gtc2hhZG93OiAwIDAuNXJlbSAxcmVtIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG5cbiAgJl9fdGl0bGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApO1xuICB9XG5cbiAgLypcbiAgICogV1BGb3JtcyByZXN0eWxlIOKAlCBzY29wZWQgdG8gdGhpcyBjYXJkIG9ubHkuXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAud3Bmb3Jtcy1maWVsZC1sYWJlbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogLjM1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICB9XG5cbiAgLndwZm9ybXMtcmVxdWlyZWQtbGFiZWwge1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIGlucHV0W3R5cGU9J3RleHQnXSxcbiAgaW5wdXRbdHlwZT0nZW1haWwnXSxcbiAgaW5wdXRbdHlwZT0ndGVsJ10sXG4gIGlucHV0W3R5cGU9J3VybCddLFxuICBpbnB1dFt0eXBlPSdudW1iZXInXSxcbiAgc2VsZWN0LFxuICB0ZXh0YXJlYSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogLjY1cmVtIC44NXJlbTtcbiAgICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJsYWNrKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgJGhvdmVyLXRyYW5zaXRpb247XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlY29uZGFyeSk7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcXVhdGVybmFyeSk7XG4gICAgfVxuICB9XG5cbiAgdGV4dGFyZWEge1xuICAgIG1pbi1oZWlnaHQ6IDEzMHB4O1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cblxuICAud3Bmb3Jtcy1maWVsZC1kZXNjcmlwdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jb250cmFzdCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgfVxuXG4gIC8vIFN1Ym1pdCBidXR0b24g4oCUIG1pcnJvcnMgdGhlIHNpdGUtd2lkZSBidXR0b24gKHRoZW1lLmpzb24gYnV0dG9uIGVsZW1lbnQpOlxuICAvLyBzcXVhcmUgY29ybmVycywgcHJpbWFyeSBiYWNrZ3JvdW5kIC8gY29udHJhc3QgdGV4dCwgaG92ZXIgc3dhcHMgdG8gYVxuICAvLyBjb250cmFzdCBiYWNrZ3JvdW5kIHdpdGggYmFzZSB0ZXh0LCBhY3RpdmUgdXNlcyBzZWNvbmRhcnkuIEZ1bGwgd2lkdGggdG9cbiAgLy8gbWF0Y2ggdGhlIGZvcm0gZGVzaWduLlxuICAud3Bmb3Jtcy1zdWJtaXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6ICRidXR0b24tcGFkZGluZy15IDEuNXJlbTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jb250cmFzdCk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgJGhvdmVyLXRyYW5zaXRpb24sIGJhY2tncm91bmQtY29sb3IgJGhvdmVyLXRyYW5zaXRpb247XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWNvbnRyYXN0KTtcbiAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlY29uZGFyeSk7XG4gICAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuICAgIH1cbiAgfVxufVxuIiwiLypcbktlbm56YWhsZW4gKENvdW50ZXIgdXAgZWxlbWVudClcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkRyZWkgS2VubnphaGxlbiBuZWJlbmVpbmFuZGVyOiBncm9zc2UgWmFobCwgZmVpbmVyIFRyZW5uZXIsIEJlc2NocmlmdHVuZy5cblxuRGVyIEFic2Nobml0dCBiZXN0YW5kIGZydWVoZXIgYXVzIHp3ZWkgUGx1Z2luLUJsb2Vja2VuLCBkaWUgYmVpZGUgbmljaHQgbWVoclxudHJhZ2ZhZWhpZyBzaW5kIOKAlCB3cC1ib290c3RyYXAtYmxvY2tzIGZ1ZXIgZGFzIFJhc3RlciB1bmQgZ3V0ZW5iZWUvY291bnR1cCBmdWVyXG5kaWUgaG9jaHphZWhsZW5kZSBaYWhsIChCbG9jay1BUEkgdjEsIGltIEVkaXRvciBhYiBXb3JkUHJlc3MgNy4wIGRlZmVrdCkuIEVyXG5iZXN0ZWh0IGpldHp0IGF1cyBLZXJuYmxvZWNrZW46IHdwOmNvbHVtbnMgZnVlciBkYXMgUmFzdGVyLCBlaW4gQWJzYXR6IG1pdCBkZXJcbktsYXNzZSBgY291bnRlci11cC1lbGVtZW50X19udW1iZXJgIGZ1ZXIgZGllIFphaGwuXG5cbkRhcyBEZXNpZ24gaGFlbmd0IGFsbGVpbiBhbiBkaWVzZXIgS2xhc3NlLCBuaWNodCBhbiBlaW5lciBIdWVsbGUgZGFydW06IGRpZVxuTXVzdGVyLUluc3RhbnplbiBpbSBCZXN0YW5kIHRyYWdlbiBpaHJlbiBOYW1lbiBudXIgaW4gZGVuIE1ldGFkYXRlbiwgZWluZVxuS2xhc3NlIGAuY291bnRlci11cC1lbGVtZW50YCBzdGVodCBpbSBnZXNwZWljaGVydGVuIE1hcmt1cCBuaXJnZW5kcy4gRWluZVxudmVyc2NoYWNodGVsdGUgU2NocmVpYndlaXNlIHd1ZXJkZSBkaWUgbWlncmllcnRlbiBBYnNjaG5pdHRlIGRlc2hhbGIgbmljaHRcbmVycmVpY2hlbi5cblxuRGllIFphaGwgc3RlaHQgYWxzIGZlcnRpZ2VyIEVuZHdlcnQgaW0gTWFya3VwIOKAlCBvaG5lIEphdmFTY3JpcHQsIGltIEVkaXRvciB1bmRcbmZ1ZXIgU3VjaG1hc2NoaW5lbiBpc3Qgc2llIGRhbWl0IHNvZm9ydCByaWNodGlnLiBEYXMgSG9jaHphZWhsZW4gbGVndFxuanMvcGx1Z2luL2NvdW50LXVwLnBsdWdpbiBkYXJ1ZWJlcjsgd2FzIGdlemFlaGx0IHdpcmQsIGxpZXN0IGVzIGF1cyBkZW0gVGV4dFxuc2VsYnN0LCBWb3J6ZWljaGVuIHVuZCBFaW5oZWl0IChcIj4gNTBcIiwgXCI3MDAgbcKyXCIpIGJsZWliZW4gc3RlaGVuLiBFaW4gYW5kZXJlclxuU3RhcnR3ZXJ0IGFscyAwIGtvbW10IHVlYmVyIGRpZSBadXNhdHprbGFzc2UgYGlzLWZyb20tNDVgLlxuKi9cblxuLypcbiAqIDQwcHggd2FyIGRpZSBHcm9lc3NlIGRlciBhbHRlbiBLZW5uemFobGVuIHVuZCBpc3QgZGllIE9iZXJncmVuemUgZ2VibGllYmVuO1xuICogYXVmIHNjaG1hbGVuIFNjaGlybWVuIGxhZXVmdCBzaWUgbWl0LCB3ZWlsIGRpZSBkcmVpIFphaGxlbiBkb3J0IHVudGVyZWluYW5kZXJcbiAqIHN0ZWhlbiB1bmQgZGllIHZvbGxlIEdyb2Vzc2UgZGVuIEFic2Nobml0dCBzb25zdCBhdXNlaW5hbmRlcnppZWh0LlxuICovXG4kY291bnRlci11cC1udW1iZXItc2l6ZTogY2xhbXAoMnJlbSwgY2FsYygxLjVyZW0gKyAxLjZ2dyksIDIuNXJlbSk7XG5cbi5jb3VudGVyLXVwLWVsZW1lbnRfX251bWJlciB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTEwKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjayk7XG4gIGZvbnQtc2l6ZTogJGNvdW50ZXItdXAtbnVtYmVyLXNpemU7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjE7XG5cbiAgLypcbiAgICogWmlmZmVybiBnbGVpY2hlciBCcmVpdGUuIE9obmUgZGFzIHNwcmluZ3QgZGllIFphaGwgd2FlaHJlbmQgZGVzXG4gICAqIEhvY2h6YWVobGVucyBpbiBkZXIgQnJlaXRlLCB3ZWlsIGVpbmUgMSBzY2htYWxlciBpc3QgYWxzIGVpbmUgOCwgdW5kIGRlclxuICAgKiBUcmVubmVyIGRhcnVudGVyIHdhY2tlbHQgc2ljaHRiYXIgbWl0LlxuICAgKi9cbiAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblxuICAvKlxuICAgKiBEZXIgVHJlbm5lciB6d2lzY2hlbiBaYWhsIHVuZCBCZXNjaHJpZnR1bmcgdHJhZWd0IGRlbiBBYnN0YW5kIG5hY2ggYmVpZGVuXG4gICAqIFNlaXRlbiBzZWxic3Qg4oCUIHNvbnN0IHNjaG9lYmUgaWhuIGRlciBVZWJlcnNjaHJpZnRlbi1SaHl0aG11cyBhdXNcbiAgICogYmFzZS9fdHlwb2dyYXBoeSBhbiBkaWUgQmVzY2hyaWZ0dW5nIGhlcmFuLlxuICAgKi9cbiAgKyAud3AtYmxvY2stc2VwYXJhdG9yIHtcbiAgICBtYXJnaW4tYmxvY2s6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtcbiAgfVxufVxuIiwiLypcbkFkdmFudGFnZXMgZWxlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVm9ydGVpbHMtTGVpc3RlOiBrbGVpbmVzIExhYmVsIHVlYmVyIGVpbmVyIFJlaWhlIHZvbiBIYWtlbi1QdW5rdGVuLlxuXG5CZXd1c3N0IGF1cyBLZXJuLUJsb2Vja2VuIGdlYmF1dCwgZGFtaXQgZGllIFJlZGFrdGlvbiBQdW5rdGUgaW0gRWRpdG9yXG5oaW56dWZ1ZWdlbiwgdW1zb3J0aWVyZW4gdW5kIGxvZXNjaGVuIGthbm4uIERlciBIYWtlbiBoYWVuZ3QgZGVzaGFsYiBOSUNIVCBhblxuZWluZXIgS2xhc3NlIHBybyBQdW5rdCwgc29uZGVybiBhbiBqZWRlbSA8cD4gaW4gZGVyIExpc3RlIOKAlCBlaW4gaW0gRWRpdG9yIG5ldVxuZWluZ2VmdWVndGVyIEFic2F0eiBiZWtvbW10IGlobiBhdXRvbWF0aXNjaC5cblxuRGFzIExhYmVsIG51dHp0IGRpZSB2b3JoYW5kZW5lIC5oZXJvLWV5ZWJyb3ctVHlwb2dyYWZpZSAoYmFzZS9faW1hZ2Utb3ZlcmxheS1cbmVsZW1lbnQpLCBkZXIgQWJzY2huaXR0IGRlbiB2b3JoYW5kZW5lbiB0ZXJ0aWFyeS1IaW50ZXJncnVuZC4gRGVyIHZlcnRpa2FsZVxuQWJzdGFuZCBrb21tdCBhdXRvbWF0aXNjaCBhdXMgbGF5b3V0L19zZWN0aW9uLXNwYWNpbmcg4oCUIGRpZSBTZWt0aW9uIGlzdCBkb3J0XG5hbHMgLmhhcy10ZXJ0aWFyeS1iYWNrZ3JvdW5kLWNvbG9yIGJlcmVpdHMgcmVnaXN0cmllcnQuXG4qL1xuXG4uYWR2YW50YWdlcy1lbGVtZW50IHtcbiAgLypcbiAgICogRmVzdGUgMzVweCBvYmVuL3VudGVuIOKAlCBiZXd1c3N0ZSBBdXNuYWhtZSB2b24gZGVyIGFkYXB0aXZlbiBSaHl0aG1payBpblxuICAgKiBsYXlvdXQvX3NlY3Rpb24tc3BhY2luZy4gRGllIExlaXN0ZSBpc3Qga2VpbmUgZWlnZW5zdGFlbmRpZ2UgU2VrdGlvbixcbiAgICogc29uZGVybiBlaW4gc2NobWFsZXIgU3RyZWlmZW4gdW50ZXIgZGVtIEhlcm87IGRpZSBkb3J0aWdlbiA2MHB4KyB3dWVyZGVuXG4gICAqIHNpZSBkYXZvbiBhYmxvZXNlbi5cbiAgICpcbiAgICogIWltcG9ydGFudCBpc3QgaGllciBkZXIgZWluemlnZSB2ZXJsYWVzc2xpY2hlIEhlYmVsOiBkaWUgTmFjaGJhcnNjaGFmdHMtXG4gICAqIHJlZ2VsbiBpbiBfc2VjdGlvbi1zcGFjaW5nIGtvbWJpbmllcmVuIHp3ZWkgZHJlaWtsYXNzaWdlIFNlbGVrdG9yZW4gdW5kXG4gICAqIGtvbW1lbiBkYW1pdCBhdWYgZWluZSBTcGV6aWZpdGFldCwgZGllIGVpbmUgZWluZmFjaGUgUmVnZWwgaGllciBuaWNodFxuICAgKiBlcnJlaWNodC5cbiAgICovXG4gIHBhZGRpbmctYmxvY2s6IDM1cHggIWltcG9ydGFudDtcblxuICAvKlxuICAgKiBMaW5rZSBLYW50ZSBidWVuZGlnIG1pdCBkZXIgSGVyby1Cb3hcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIERlciBCbG9jayBoYXQgYmV3dXNzdCBLRUlORSBJbmhhbHRzYnJlaXRlIChsYXlvdXQ6IGRlZmF1bHQgc3RhdHRcbiAgICogY29uc3RyYWluZWQpIOKAlCBkaWUgTGVpc3RlIGxhZXVmdCB1ZWJlciBkaWUgdm9sbGUgQnJlaXRlIHVuZCB3aXJkIGFsbGVpblxuICAgKiB1ZWJlciBkaWVzZXMgSW5zZXQgZWluZ2VydWVja3QuXG4gICAqXG4gICAqIERlciBXZXJ0IGxlaXRldCBzaWNoIGF1cyBkZW0gSGVybyBhYjogZG9ydCBsaWVndCBkaWUgR3J1cHBlIHp3YXIgaW4gZGVyXG4gICAqIFd1cnplbC1FaW5ydWVja3VuZywgZGllIGFsaWduZnVsbC1Db2x1bW5zIGRhcmluIGhlYmVuIHNpZSBhYmVyIG1pdCBkZW1cbiAgICogbmVnYXRpdmVuIFJhbmQgd2llZGVyIGF1ZiAoV29yZFByZXNzLVJlZ2VsIGAuaGFzLWdsb2JhbC1wYWRkaW5nID5cbiAgICogLmFsaWduZnVsbGApLiBVZWJyaWcgYmxlaWJ0IGFscyBsaW5rZSBLYW50ZSBkZXMgd2Vpc3NlbiBLYXN0ZW5zIGdlbmF1IGRhc1xuICAgKiBQYWRkaW5nIGRlcyBDb3Zlci1CbG9ja3Mg4oCUIHNwYWNpbmctLTQwLiBVbnRlcmhhbGIgbWQga29tbXQgZGllXG4gICAqIFd1cnplbC1FaW5ydWVja3VuZyBkYXp1LCBkaWUgcGF0dGVybi9faW1hZ2Utb3ZlcmxheS1lbGVtZW50IGRlbVxuICAgKiBpbm5lci1jb250YWluZXIgZG9ydCB6dXNhZXR6bGljaCBnaWJ0LlxuICAgKlxuICAgKiBCZXp1Z3NwdW5rdCBpc3QgZGllIEthbnRlIGRlcyBLYXN0ZW5zLiBTb2xsIHN0YXR0ZGVzc2VuIGRlciBURVhUIGltIEthc3RlblxuICAgKiBkaWUgTGluaWUgdm9yZ2ViZW4sIGhpZXIgenVzYWV0emxpY2ggZGVzc2VuIDM1cHggSW5uZW5hYnN0YW5kIGFkZGllcmVuLlxuICAgKi9cbiAgLS1hZHZhbnRhZ2VzLWluc2V0OiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgLS1hZHZhbnRhZ2VzLWluc2V0OiBjYWxjKHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTQwKSArIHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTMwKSk7XG4gIH1cblxuICBwYWRkaW5nLWlubGluZTogdmFyKC0tYWR2YW50YWdlcy1pbnNldCk7XG5cbiAgLmFkdmFudGFnZXMtZWxlbWVudF9fbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXG4gICAgLypcbiAgICAgKiBTcGFsdGVuYWJzdGFuZCBncm9zc3p1ZWdpZywgWmVpbGVuYWJzdGFuZCBrbmFwcDogYmVpbSBVbWJydWNoIHNvbGxlbiBkaWVcbiAgICAgKiBQdW5rdGUgYWxzIGVpbiBCbG9jayBsZXNiYXIgYmxlaWJlbiB1bmQgbmljaHQgYWxzIExpc3RlIGF1c2VpbmFuZGVyZmFsbGVuLlxuICAgICAqIERvcHBlbHRlIEtsYXNzZSwgZGFtaXQgZGllIFJlZ2VsIGRpZSBHYXAtQW5nYWJlIGRlcyBGbGV4LUxheW91dHNcbiAgICAgKiB1ZWJlcnN0ZXVlcnQsIGRpZSBkZXIgS2VybiBhbHMgZWlnZW5lIC53cC1jb250YWluZXItKi1LbGFzc2UgYXVzZ2lidC5cbiAgICAgKi9cbiAgICBjb2x1bW4tZ2FwOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7XG4gICAgcm93LWdhcDogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMTApO1xuXG4gICAgcCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoI3skYWR2YW50YWdlcy1jaGVjay13aWR0aH0gKyAxMHB4KTtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB0b3A6IC40NWVtO1xuICAgICAgICB3aWR0aDogJGFkdmFudGFnZXMtY2hlY2std2lkdGg7XG4gICAgICAgIGhlaWdodDogJGFkdmFudGFnZXMtY2hlY2staGVpZ2h0O1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uLy4uL2ltYWdlcy9jaGVjay5zdmcnKSBuby1yZXBlYXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBNb2JpbCBlaW4gUHVua3QgcHJvIFplaWxlLiBPaG5lIGRhcyB3dWVyZGVuIGt1cnplIFB1bmt0ZSAoXCJBbGxlcyBhdXNcbiAgICAgKiBlaW5lciBIYW5kXCIpIGF1ZiBzY2htYWxlbiBEaXNwbGF5cyB6dSB6d2VpdCBpbiBlaW5lIFplaWxlIHJ1dHNjaGVuIHVuZFxuICAgICAqIGRpZSBMZWlzdGUgdW5ydWhpZyB3aXJrZW4gbGFzc2VuLlxuICAgICAqL1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgcCB7XG4gICAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLypcbldQIGNvbHVtbnMgYmxvY2tcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciB3cCBjb2x1bW5zIGJsb2NrLlxuKi9cblxubWFpbiB7XG4gIC53cC1ibG9jay1jb2x1bW5zIHtcbiAgICAmLmlzLWxheW91dC1mbGV4IHtcbiAgICAgIGdhcDogMi41cmVtO1xuICAgIH1cbiAgfVxufVxuIiwiLypcbldQIGltYWdlIGJsb2NrXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3Igd3AgaW1hZ2UgYmxvY2suXG4qL1xuXG4ud3AtYmxvY2staW1hZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLndwLWJsb2NrLWltYWdlLWN1c3RvbS1saW5rIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7XG4gICAgcmlnaHQ6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtcbiAgfVxufVxuIiwiLypcbldQIGNvdmVyIGJsb2NrXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3Igd3AgY292ZXIgYmxvY2suXG4qL1xuXG4ud3AtYmxvY2stY292ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLndwLWJsb2NrLWNvdmVyLWN1c3RvbS1saW5rIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7XG4gICAgcmlnaHQ6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKGxnKSB7XG4gICAgICB0b3A6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTQwKTtcbiAgICAgIHJpZ2h0OiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICB0b3A6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTEwKTtcbiAgICAgIHJpZ2h0OiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0xMCk7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG5cbiAgJi5uby1jdXN0b20tbGluayB7XG4gICAgLndwLWJsb2NrLWNvdmVyLWN1c3RvbS1saW5rIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLndwLWJsb2NrLWNvdmVyX19pbWFnZS1iYWNrZ3JvdW5kIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAud3AtYmxvY2stY292ZXJfX2lubmVyLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKGxnKSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAud3AtYmxvY2stZ3JvdXAge1xuICAgICAgLndwLWJsb2NrLWNvbHVtbnMge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxufVxuXG4uaG9tZSB7XG4gIC53cC1ibG9jay1jb3ZlciB7XG4gICAgLndwLWJsb2NrLWNvdmVyLWN1c3RvbS1saW5rIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvKlxuV1AgYnV0dG9uIGJsb2NrXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3Igd3AgYnV0dG9uIGJsb2NrLlxuXG5EcmVpIEJ1dHRvbi1Sb2xsZW4sIGRpZSBzaWNoIG51ciBpbiBkZXIgRmFyYmUgdW50ZXJzY2hlaWRlbjpcblxuICBncnVlbiAoc2VuYXJ5KSAg4oCUIFN0YW5kYXJkLUJ1dHRvblxuICBibGF1ICAocHJpbWFyeSkg4oCUIHNla3VuZGFlcmVyIEJ1dHRvbiwgdS4gYS4gZGVyIEtvbnRha3QtQnV0dG9uIGltIEZvb3RlclxuICB0cmFuc3BhcmVudCAgICAg4oCUIHNla3VuZGFlcmVyIE91dGxpbmUtQnV0dG9uIChcIk1laHIgSW5mb1wiKVxuXG5EaWUgZXJzdGVuIGJlaWRlbiB0ZWlsZW4gc2ljaCBkZW4gVmVybGF1ZnMtSG92ZXIsIGRlciBkcml0dGUgbGFldWZ0IG1pdFxuRmFldGgtQmxhdSB6dS4gQmVpZGUgQmV3ZWd1bmdlbiBzdGVoZW4gYWxzIE1peGluIGluIGFic3RyYWN0L19taXhpbnMuXG4qL1xuXG4ud3AtYmxvY2stYnV0dG9uIHtcbiAgLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gICAgcGFkZGluZy10b3A6ICRidXR0b24tcGFkZGluZy15ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZy1ib3R0b206ICRidXR0b24tcGFkZGluZy15ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAmLmhhcy1jdXN0b20td2lkdGgge1xuICAgICYud3AtYmxvY2stYnV0dG9uX193aWR0aC01MCB7XG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLypcbiAqIFBmZWlsLUJ1dHRvbnMgKENoZXZyb24pXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGllIEtsYXNzZSBcInJlYWRtb3JlXCIgc3RlaHQgZnVlciBkZW4gcXVhZHJhdGlzY2hlbiBQZmVpbC1LYXN0ZW4uIEF1c3NlaGVuLFxuICogU3RlbGx1bmcgdW5kIGRpZSBSZWdlbG4gZnVlciBkZW4gQmVzdGFuZCBzdGVoZW4gYW4gZWluZXIgZWluemlnZW4gU3RlbGxlOlxuICogY29tcG9uZW50L19jaGV2cm9uLWJ1dHRvbi4gSGllciBibGVpYnQgbmljaHRzIGRhdm9uIHVlYnJpZyDigJQgZGllIEF1c25haG1lblxuICogd2VpdGVyIHVudGVuIG5lbm5lbiBkaWUgS2xhc3NlIG51ciwgdW0gaWhyIG5pY2h0IGluIGRpZSBRdWVyZSB6dSBrb21tZW4uXG4gKi9cblxuLypcbiAqIEdydWVuIHVuZCBCbGF1LlxuICpcbiAqIEFkcmVzc2llcnQgd2lyZCBkaWUgRmFyYi1LbGFzc2UsIG5pY2h0IGRlciBCbG9jazogZGVyc2VsYmUgSG92ZXIgc29sbCBhdWNoXG4gKiBmdWVyIGRlbiBTdWNoZW4tQnV0dG9uIChjb3JlL3NlYXJjaCkgdW5kIGRpZSBzZXJ2ZXJzZWl0aWcgZ2ViYXV0ZW4gQnV0dG9uc1xuICogZGVzIGxlb3BhcmQtd3AtcG9zdHMtUGx1Z2lucyBnZWx0ZW4uXG4gKlxuICogQXVzZ2Vub21tZW4gc2luZCBCdXR0b25zIG9obmUgRmxhZWNoZSDigJQgZGVyIE91dGxpbmUtU3RpbCB2b24gV29yZFByZXNzLCBkZXJcbiAqIGVpZ2VuZSB0cmFuc3BhcmVudGUgU3RpbCB1bmQgZGllIFBmZWlsLUxpbmtzICgucmVhZG1vcmUpOiBkb3J0IGdpYnQgZXNcbiAqIG5pY2h0cywgd2FzIGF1c2xhdWZlbiBrb2VubnRlLlxuICovXG4ud3AtYmxvY2stYnV0dG9uX19saW5rLFxuLndwLWJsb2NrLXNlYXJjaF9fYnV0dG9uLFxuLndwLWVsZW1lbnQtYnV0dG9uIHtcbiAgJi5oYXMtc2VuYXJ5LWJhY2tncm91bmQtY29sb3I6bm90KC5yZWFkbW9yZSk6bm90KC5pcy1zdHlsZS1vdXRsaW5lKTpub3QoLmlzLXN0eWxlLXNlY29uZGFyeS10cmFuc3BhcmVudCkge1xuICAgIEBpbmNsdWRlIGZhZXRoLWJ1dHRvbi1ncmFkaWVudCgkYnV0dG9uLWdyZWVuLTUwMCwgJGJ1dHRvbi1ncmVlbi0zMDApO1xuICB9XG5cbiAgJi5oYXMtcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOm5vdCgucmVhZG1vcmUpOm5vdCguaXMtc3R5bGUtb3V0bGluZSk6bm90KC5pcy1zdHlsZS1zZWNvbmRhcnktdHJhbnNwYXJlbnQpIHtcbiAgICBAaW5jbHVkZSBmYWV0aC1idXR0b24tZ3JhZGllbnQoJGJ1dHRvbi1ibHVlLTUwMCwgJGJ1dHRvbi1ibHVlLTMwMCk7XG4gIH1cbn1cblxuLypcbiAqIERlciBLb250YWt0LUJ1dHRvbiBpbSBGb290ZXIgdHJhZWd0IGtlaW5lIEhpbnRlcmdydW5kLUtsYXNzZSwgc2VpbmUgRmFyYmVcbiAqIGtvbW10IGF1cyB0aGVtZS5qc29uIChlbGVtZW50cy5idXR0b24gPSBwcmltYXJ5KS4gRXIgYmVrb21tdCBkZW5zZWxiZW5cbiAqIGJsYXVlbiBWZXJsYXVmIHdpZSBlaW4gYXVzZ2V6ZWljaG5ldGVyIFNla3VuZGFlci1CdXR0b24uXG4gKi9cbmZvb3RlciAuY29udGFjdC1idXR0b24gLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gIEBpbmNsdWRlIGZhZXRoLWJ1dHRvbi1ncmFkaWVudCgkYnV0dG9uLWJsdWUtNTAwLCAkYnV0dG9uLWJsdWUtMzAwKTtcbn1cblxuLypcbiAqIE91dGxpbmUtQnV0dG9uLlxuICpcbiAqIFp3ZWkgQmxvY2tzdGlsZSBmdWVocmVuIGF1ZiBkaWVzZWxiZSBSb2xsZSB1bmQgc2VoZW4gZGVzaGFsYiBnbGVpY2ggYXVzOiBkZXJcbiAqIEtlcm4tU3RpbCBcIk91dGxpbmVcIiAoaXMtc3R5bGUtb3V0bGluZSkgdW5kIGRlciB0aGVtZS1laWdlbmUgU3RpbCBcIlNla3VuZGFlclxuICogdHJhbnNwYXJlbnRcIiAoaXMtc3R5bGUtc2Vjb25kYXJ5LXRyYW5zcGFyZW50LCBzaWVoZSByZWdpc3Rlcl9ibG9ja19zdHlsZSBpblxuICogZGVyIGZ1bmN0aW9ucy5waHApIOKAlCBMZXR6dGVyZXIgYmxlaWJ0IGZ1ZXIgYmVzdGVoZW5kZSBJbmhhbHRlIGVyaGFsdGVuLlxuICpcbiAqIERpZSBLbGFzc2Ugc3RlaHQgamUgbmFjaCBIZXJrdW5mdCBhbSBXcmFwcGVyIChCbG9jay1TdGlsIGF1cyBkZW0gRWRpdG9yKVxuICogb2RlciBkaXJla3QgYW0gTGluayAoc2VydmVyc2VpdGlnIGdlYmF1dGUgQnV0dG9ucywgei4gQi4gZGVyIFwiTWVociBJbmZvXCItXG4gKiBCdXR0b24gaW4gZGVyIFRyZWZmZXJsaXN0ZSBkZXIgUHJlc3NlLSB1bmQgUHJvZHVrdGluZm9ybWF0aW9uZW4pLlxuICpcbiAqIEF1c2dlbm9tbWVuIHNpbmQgQnV0dG9ucywgZGllIHRyb3R6IE91dGxpbmUtU3RpbCBlaW5lIGVjaHRlIEZ1ZWxsZmFyYmVcbiAqIHRyYWdlbiDigJQgZGVyIGdydWVuZSBTdWNoZW4tQnV0dG9uIGRlciBUcmVmZmVybGlzdGUgZXR3YSBzdGVodCBpbSBNYXJrdXAgYWxzXG4gKiBpcy1zdHlsZS1vdXRsaW5lIOKAlCwgZGllIFBmZWlsLUxpbmtzICgucmVhZG1vcmUpIHVuZCBkaWUgSGVyby1CdWVobmU6IGRpZVxuICogZmFlcmJ0IGlocmUgQnV0dG9ucyBncnVlbiAocGF0dGVybi9faW1hZ2Utb3ZlcmxheS1lbGVtZW50KSwgYXVjaCB3ZW5uIGltXG4gKiBFZGl0b3IgZGVyIE91dGxpbmUtU3RpbCBnZXdhZWhsdCBpc3QuIFVlYmVyIGRpZSBTcGV6aWZpdGFldCBhbGxlaW4gbGllc3NlXG4gKiBzaWNoIGRhcyBkb3J0IG5pY2h0IGRyZWhlbiwgd2VpbCBkZXIgUnVoZXp1c3RhbmQgaGllciBiYWNrZ3JvdW5kIG1pdFxuICogIWltcG9ydGFudCBzZXR6dC5cbiAqXG4gKiBEaWUgQXVzbmFobWUgZnVlciAucmVhZG1vcmUgaXN0IGRpZSB3aWNodGlnc3RlOiBkZXIgUGZlaWwtS2FzdGVuXG4gKiAoY29tcG9uZW50L19jaGV2cm9uLWJ1dHRvbikgc3RlaHQgYXVmIGRlcnNlbGJlbiBTcGV6aWZpdGFldCB1bmQgc2V0enRcbiAqIGJhY2tncm91bmQgZWJlbmZhbGxzIG1pdCAhaW1wb3J0YW50LiBPaG5lIHNpZSBlbnRzY2hpZWRlIGRpZSBSZWloZW5mb2xnZSBkZXJcbiAqIEltcG9ydGUsIHdlbGNoZXIgdm9uIGJlaWRlbiBnZXdpbm50IOKAlCB1bmQgZGllIEtvbXBvbmVudGVuIHN0ZWhlbiB2b3IgZGVuXG4gKiBCbG9lY2tlbi5cbiAqXG4gKiBBbGxlIEF1c25haG1lbiBzdGVoZW4gaW4gOndoZXJlKCkgdW5kIGhlYmVuIGRpZSBTcGV6aWZpdGFldCBkYW1pdCBuaWNodCBhbi5cbiAqL1xuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1vdXRsaW5lID4gLndwLWJsb2NrLWJ1dHRvbl9fbGluayxcbi53cC1ibG9jay1idXR0b24uaXMtc3R5bGUtc2Vjb25kYXJ5LXRyYW5zcGFyZW50ID4gLndwLWJsb2NrLWJ1dHRvbl9fbGluayxcbi53cC1ibG9jay1idXR0b25fX2xpbmsuaXMtc3R5bGUtb3V0bGluZSxcbi53cC1ibG9jay1idXR0b25fX2xpbmsuaXMtc3R5bGUtc2Vjb25kYXJ5LXRyYW5zcGFyZW50LFxuLndwLWVsZW1lbnQtYnV0dG9uLmlzLXN0eWxlLW91dGxpbmUsXG4ud3AtZWxlbWVudC1idXR0b24uaXMtc3R5bGUtc2Vjb25kYXJ5LXRyYW5zcGFyZW50IHtcbiAgJjp3aGVyZSg6bm90KC5yZWFkbW9yZSk6bm90KC5oYXMtc2VuYXJ5LWJhY2tncm91bmQtY29sb3IpOm5vdCguaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcik6bm90KC5pbWFnZS1vdmVybGF5LWVsZW1lbnQgKik6bm90KC5pbWFnZS1vdmVybGF5LWNlbnRlci1lbGVtZW50ICopKSB7XG4gICAgQGluY2x1ZGUgZmFldGgtYnV0dG9uLW91dGxpbmU7XG4gIH1cbn1cblxuLypcbiAqIERlciBWZXJsYXVmIGRlciBGbGFlY2hlbi1CdXR0b25zIGxpZWd0IGF1ZiBlaW5lbSA6OmJlZm9yZSB1bmQgYmxlbmRldCB1ZWJlclxuICogZGllIE9wYXppdGFldCBlaW4g4oCUIGRpZSBQc2V1ZG8tRWJlbmUgbXVzcyBkZXNoYWxiIG1pdCBzdGlsbGdlbGVndCB3ZXJkZW4sXG4gKiBzb25zdCBsYWV1ZnQgc2llIGFscyBlaW56aWdlIEJld2VndW5nIHdlaXRlci5cbiAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLndwLWJsb2NrLWJ1dHRvbl9fbGluayxcbiAgLndwLWJsb2NrLWJ1dHRvbl9fbGluazo6YmVmb3JlLFxuICAud3AtYmxvY2stc2VhcmNoX19idXR0b24sXG4gIC53cC1ibG9jay1zZWFyY2hfX2J1dHRvbjo6YmVmb3JlLFxuICAud3AtZWxlbWVudC1idXR0b24sXG4gIC53cC1lbGVtZW50LWJ1dHRvbjo6YmVmb3JlLFxuICAuY2FyZC1ncmlkLWVsZW1lbnRfX2J1dHRvbixcbiAgLmNhcmQtZ3JpZC1lbGVtZW50X19idXR0b246OmJlZm9yZSB7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjAxbXMgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKlxuICogXCJXZWl0ZXJsZXNlblwiIGluIGRlciBUcmVmZmVybGlzdGUgZGVyIFN1Y2hlIChjb3JlL3JlYWQtbW9yZSkuXG4gKiBEZXIgQmxvY2sgcmVuZGVydCBlaW5lbiBpbmxpbmUgZ2VzZXR6dGVuIExpbmsuIEFscyBCdXR0b24gYnJhdWNodCBlciBlaW5lXG4gKiBlaWdlbmUgWmVpbGUsIHNvbnN0IHZlcnB1ZmZ0IGRpZSB2ZXJ0aWthbGUgUG9sc3RlcnVuZyBhdXMgZGVyIHRoZW1lLmpzb24uXG4gKi9cbi53cC1ibG9jay1yZWFkLW1vcmUud3AtZWxlbWVudC1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi10b3A6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuIiwiLypcbldQIHRhYmxlIGJsb2NrXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3Igd3AgdGFibGUgYmxvY2suXG4qL1xuXG4ud3AtYmxvY2stdGFibGUge1xuICAmLmlzLXN0eWxlLXN0cmlwZXMge1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLndwLWVsZW1lbnQtY2FwdGlvbiB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW46IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKSAwO1xuICB9XG5cbiAgdGQge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG4iLCIvKlxuR3V0ZW5hIHRhYnMgYmxvY2tcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciBndXRlbmEgdGFicyBibG9jay5cbiovXG5cbi5ndXRlbmEtdGFicy1ibG9jayB7XG4gIC5ndXRlbmEtdGFicy10YWIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgICB6LWluZGV4OiAzO1xuXG4gICAgJi5zbGljay1zbGlkZXIge1xuICAgICAgcGFkZGluZzogdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi1jb250YWluZXItcGFkZGluZyk7XG5cbiAgICAgIC5zbGljay1wcmV2LFxuICAgICAgLnNsaWNrLW5leHQge1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHh4bCkge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5zbGljay1wcmV2IHtcbiAgICAgICAgbGVmdDogMDtcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdXJsKFwiLi4vLi4vaW1hZ2VzL2NoZXZyb24tbGVmdC5zdmdcIikgbm8tcmVwZWF0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5zbGljay1uZXh0IHtcbiAgICAgICAgcmlnaHQ6IDA7XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHVybChcIi4uLy4uL2ltYWdlcy9jaGV2cm9uLXJpZ2h0LnN2Z1wiKSBuby1yZXBlYXQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmd1dGVuYS10YWItdGl0bGUge1xuICAgICAgICBjb2xvcjogdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi1mb250LWZhbWlseSwgaW5oZXJpdCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi1mb250LXNpemUsIDE0cHgpO1xuICAgICAgICBmb250LXN0eWxlOiB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLWZvbnQtc3R5bGUpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi1mb250LXdlaWdodCk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLXRleHQtdHJhbnNmcm9tKTtcbiAgICAgICAgbWFyZ2luOiAwIDEwcHg7XG5cbiAgICAgICAgJiA+ICoge1xuICAgICAgICAgIHBhZGRpbmc6IHZhcigtLWd1dGVuYS0tdGFicy10YWItcGFkZGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyLCAmLmFjdGl2ZSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi1ob3Zlci1iYWNrZ3JvdW5kLWdyYWRpZW50LWNvbG9yLCB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLWhvdmVyLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLWhvdmVyLWJvcmRlci1ib3R0b20sIHZhcigtLWd1dGVuYS0tdGFicy10YWItYm9yZGVyLWJvdHRvbSkpO1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLWhvdmVyLWJvcmRlci1sZWZ0LCB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLWJvcmRlci1sZWZ0KSk7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi1ob3Zlci1ib3JkZXItcmFkaXVzLCB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLWJvcmRlci1yYWRpdXMpKTtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IHZhcigtLWd1dGVuYS0tdGFicy10YWItaG92ZXItYm9yZGVyLXJpZ2h0LCB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLWJvcmRlci1yaWdodCkpO1xuICAgICAgICAgIGJvcmRlci10b3A6IHZhcigtLWd1dGVuYS0tdGFicy10YWItaG92ZXItYm9yZGVyLXRvcCwgdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi1ib3JkZXItdG9wKSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi1ob3Zlci1ib3gtc2hhZG93LCB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLWJveC1zaGFkb3cpKTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tZ3V0ZW5hLS10YWJzLXRhYi1ob3Zlci10ZXh0LWNvbG9yLCB2YXIoLS1ndXRlbmEtLXRhYnMtdGFiLXRleHQtY29sb3IsICMwMDApKTtcbiAgICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IC5ndXRlbmEtdGFicy1jb250ZW50IHtcbiAgICAmID4gLmd1dGVuYS10YWItYmxvY2sge1xuICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jb250cmFzdCkgIWltcG9ydGFudDtcblxuICAgICAgLnNsaWNrLXByZXYsXG4gICAgICAuc2xpY2stbmV4dCB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXh4LWxhcmdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bih4eGwpIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnNsaWNrLXByZXYge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuc2xpY2stbmV4dCB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcbiAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuc2xpY2stcHJldixcbiAgICAgIC5zbGljay1uZXh0IHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZykge1xuICAgICAgICAgIHRvcDogMzAlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5zbGljay1kb3RzLWNvbnRhaW5lciB7XG4gICAgICAgIC5zbGljay1wcmV2LFxuICAgICAgICAuc2xpY2stbmV4dCB7XG4gICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLWxhcmdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5Hb3NpZ24gYmxvY2tcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciBnb3NpZ24gYmxvY2suXG5cbkF1ZmJhdSBlaW5lciBLYXJ0ZSAoYXVzIGdvc2lnbi1wb3N0cy1zbGlkZXItYmxvY2svc3JjL2luaXQucGhwKTpcblxuICAuc2xpY2stc2xpZGVcbiAgICAuZ3JpZC1pdGVtXG4gICAgICAuZ2FsbGVyeS1pbWFnZVxuICAgICAgICAuc2xpZGVyLWltYWdlLWNvbnRhaW5lciA+IGEgPiBpbWdcbiAgICAgICAgLmJveC1jb250ZW50XG4gICAgICAgICAgaDMudGl0bGUgPiBhXG4gICAgICAgICAgLmF1dGhvci1hbmQtZGF0ZVxuICAgICAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgKEFucmlzc3RleHQpXG4gICAgICAgICAgYS5yZWFkbW9yZSAgICAgICAgICAgICAoUGZlaWwtQnV0dG9uKVxuXG5EZXIgUGZlaWwtQnV0dG9uIHN0YW5kIGZydWVoZXIgYWJzb2x1dCBpbiBkZXIgb2JlcmVuIHJlY2h0ZW4gRWNrZS4gVGl0ZWwgdW5kXG5BbnJpc3N0ZXh0IG11c3N0ZW4gaWhtIG1pdCBtYXgtd2lkdGggYXVzd2VpY2hlbiwgc29uc3Qgd2FlcmVuIHNpZSBkYXJ1bnRlclxuZ2VsYXVmZW4uIEpldHp0IHN0ZWh0IGVyIGRhLCB3byBlciBpbSBNYXJrdXAgb2huZWhpbiBzY2hvbiBzdGVodDogYWxzIGxldHp0ZXNcbkVsZW1lbnQgdW50ZXIgZGVtIEFucmlzc3RleHQsIGxpbmtzYnVlbmRpZyDigJQgdW5kIGRpZSBiZWlkZW4gbWF4LXdpZHRoLUtydWVja2VuXG5zaW5kIHdlZy5cblxuRGFtaXQgZGllIEJ1dHRvbnMgZWluZXIgUmVpaGUgdHJvdHogdmVyc2NoaWVkZW4gbGFuZ2VyIEFucmlzc3RleHRlIGF1ZiBlaW5lclxuTGluaWUgc3RlaGVuLCB3aXJkIGRpZSBLYXJ0ZSBoaWVyIGJpcyB6dXIgU2xpZGUtSG9laGUgZHVyY2hnZXN0cmVja3Q7IGRhc1xubWFyZ2luLXRvcDogYXV0bywgZGFzIGRlbiBCdXR0b24gZGFubiBuYWNoIHVudGVuIGRydWVja3QsIHN0ZWh0IG1pdCBkZW1cbnVlYnJpZ2VuIENoZXZyb24tQ1NTIGluIGNvbXBvbmVudC9fY2hldnJvbi1idXR0b24uIERpZXNlbGJlIExvZXN1bmcgd2llIGltIENhcmRcbkdyaWQgKGJsb2NrL19jYXJkLWdyaWQsIF9fYWN0aW9ucykuXG4qL1xuXG4ud3AtYmxvY2stZ29zaWduIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIC5zbGljay1zbGlkZXIge1xuICAgIC5zbGljay1saXN0IHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7XG5cbiAgICAgIC5zbGljay10cmFjayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG5cbiAgICAgIC5zbGljay1zbGlkZSB7XG4gICAgICAgIGhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcblxuICAgICAgICAvKlxuICAgICAgICAgKiBTdHJlY2trZXR0ZSBiaXMgenVtIEJ1dHRvbi4gU2xpY2sgdmVyZ2lidCAuc2xpY2stc2xpZGUgYW4gZGllXG4gICAgICAgICAqIGRpcmVrdGVuIEtpbmRlciBkZXIgR2FsZXJpZSDigJQgaW0gUmVnZWxmYWxsIGlzdCBkZXIgU2xpZGUgYWxzbyBkaWVcbiAgICAgICAgICogLmdyaWQtaXRlbSBzZWxic3QuIEplIG5hY2ggS29uZmlndXJhdGlvbiBzY2hpZWJ0IFNsaWNrIGFiZXIgbm9jaFxuICAgICAgICAgKiBlaW5lbiBuYW1lbmxvc2VuIGRpdiBkYXp3aXNjaGVuOyBkZXNoYWxiIHN0ZWhlbiBiZWlkZSBGYWVsbGUgaW5cbiAgICAgICAgICogZGVyc2VsYmVuIExpc3RlLlxuICAgICAgICAgKi9cbiAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICA+IGRpdixcbiAgICAgICAgLmdyaWQtaXRlbSxcbiAgICAgICAgLmdhbGxlcnktaW1hZ2UsXG4gICAgICAgIC5ib3gtY29udGVudCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qXG4gICAgICAgICAqIFNsaWNrIGJhdXQgZGllIFNsaWRlcyBpbiBSZWloZW4gdW0gKGJ1aWxkUm93cykgdW5kIHNjaHJlaWJ0IGRhYmVpXG4gICAgICAgICAqIGBkaXNwbGF5OiBpbmxpbmUtYmxvY2tgIGFscyBJTkxJTkUtU3R5bGUgYXVmIGRpZSB1cnNwcnVlbmdsaWNoZVxuICAgICAgICAgKiAuZ3JpZC1pdGVtLiBFaW4gSW5saW5lLVN0eWxlIHNjaGxhZWd0IGplZGUgbm9ybWFsZSBSZWdlbCwgdW5kIGdlbmF1XG4gICAgICAgICAqIGhpZXIgcmlzcyBkaWUgU3RyZWNra2V0dGU6IC5ncmlkLWl0ZW0gYmxpZWIgZWluIEJsb2NrLCAuZ2FsbGVyeS1pbWFnZVxuICAgICAgICAgKiBzdGFuZCBhdWYgSW5oYWx0c2hvZWhlIHN0YXR0IGF1ZiBTbGlkZS1Ib2VoZSwgdW5kIGRlciBQZmVpbC1CdXR0b25cbiAgICAgICAgICogaGF0dGUga2VpbmVuIGZyZWllbiBSYXVtIG1laHIsIGluIGRlbiBtYXJnaW4tdG9wOiBhdXRvIGlobiBoYWV0dGVcbiAgICAgICAgICogc2NoaWViZW4ga29lbm5lbiDigJQgZXIga2xlYnRlIGFtIEFucmlzc3RleHQgc3RhdHQgYW0gdW50ZXJlbiBSYW5kLlxuICAgICAgICAgKlxuICAgICAgICAgKiAhaW1wb3J0YW50IGlzdCBoaWVyIGRpZSBlaW56aWdlIEhhbmRoYWJlLCBkaWUgb2huZSBKYXZhU2NyaXB0IGFuXG4gICAgICAgICAqIGVpbmVuIElubGluZS1TdHlsZSBoZXJhbmtvbW10LlxuICAgICAgICAgKi9cbiAgICAgICAgLmdyaWQtaXRlbSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLnNsaWRlci1pbWFnZS1jb250YWluZXIge1xuICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAyNDBweFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ib3gtY29udGVudCB7XG4gICAgICAgICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICAgICAgICBwYWRkaW5nOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7XG5cbiAgICAgICAgICAudGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjayk7XG4gICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIERlciBBYnN0YW5kIHVlYmVyIGRlbSBCdXR0b24gaGFlbmd0IGFtIEFucmlzc3RleHQsIG5pY2h0IGFtIEJ1dHRvbjpcbiAgICAgICAgICAgKiBkZXNzZW4gbWFyZ2luLXRvcCBpc3QgbWl0IGF1dG8gYmVsZWd0IHVuZCB0cmFlZ3Qga2VpbmVuIGZlc3RlbiBXZXJ0XG4gICAgICAgICAgICogbWVociwgdW5kIHBhZGRpbmcgc2NoZWlkZXQgYXVzLCB3ZWlsIGRlciBLYXN0ZW4gZWluZSBmZXN0ZSBHcm9lc3NlXG4gICAgICAgICAgICogaGF0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ubWFyZ2luLWZpcnN0LXNsaWRlIHtcbiAgLndwLWJsb2NrLWdvc2lnbiB7XG4gICAgLnNsaWNrLXNsaWRlciB7XG4gICAgICAuc2xpY2stbGlzdCB7XG4gICAgICAgIC5zbGljay1zbGlkZSB7XG4gICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS02MCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5sZW9wYXJkIHBvc3RzIGJsb2NrXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3IgbGVvcGFyZCBwb3N0cyBibG9jay5cbiovXG5cbi53cC1ibG9jay1sZW9wYXJkLXBvc3RzIHtcbiAgLnNlYXJjaC1yb3cge1xuICAgIC5zZWFyY2gtY29udGVudCB7XG4gICAgICAuZm9ybS1ncm91cCB7XG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6ICRpbnB1dC1wYWRkaW5nLXg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tdGV4dCB7XG4gICAgICAgICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJsYWNrKTtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogJGlucHV0LXBhZGRpbmcteDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgIC53cC1ibG9jay1idXR0b25zIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEuNzVyZW07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAud3AtYmxvY2stYnV0dG9ucyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjM1cmVtO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC53cC1ibG9jay1idXR0b25zIHtcbiAgICAgICAgICAud3AtYmxvY2stYnV0dG9uIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihsZykge1xuICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5wYWdpbmF0aW9uLXJvdyB7XG4gICAgLnBhZ2luYXRpb24tY29udGVudCB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjayk7XG4gICAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApO1xuXG4gICAgICAucGFnaW5hdGlvbiB7XG4gICAgICAgIC5wYWdlLWl0ZW0ge1xuICAgICAgICAgIC5wYWdlLWxpbmsge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAucGFnZS1saW5rIHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIC5wYWdpbmF0aW9uLWNvbnRlbnQge1xuICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAucG9zdC1yb3cge1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvcjtcblxuICAgIC5wb3N0LWNvbnRlbnQge1xuICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTQwKTtcblxuICAgICAgLnBvc3QtZGF0ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spO1xuICAgICAgfVxuXG4gICAgICAucG9zdC10aHVtYm5haWwge1xuICAgICAgICAud3AtcG9zdC1pbWFnZSB7XG4gICAgICAgICAgQGV4dGVuZCAuaW1nLWZsdWlkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qXG4gICAgICAgKiBEZXRhaWwtQnV0dG9uIChcIk1laHIgSW5mb1wiKS5cbiAgICAgICAqIEZydWVoZXIgZWluIGJsb3NzZXMgUGZlaWwtSWNvbiAoLnJlYWRtb3JlKSwgaGV1dGUgZGVyIE91dGxpbmUtQnV0dG9uXG4gICAgICAgKiBhdXMgYmxvY2svX3dwLWJsb2NrLWJ1dHRvbi4gRXIgc3RlaHQgdW50ZXIgZGVtIEFucmlzc3RleHQgdW5kXG4gICAgICAgKiBsaW5rc2J1ZW5kaWc7IG1vYmlsIG5pbW10IGVyIGRpZSB2b2xsZSBCcmVpdGUuXG4gICAgICAgKi9cbiAgICAgIC53cC1ibG9jay1idXR0b25zIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApO1xuXG4gICAgICAgIC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICAgICAgICAud3AtYmxvY2stYnV0dG9uIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG5Xb3JkUHJlc3MgY29yZSBEZXRhaWxzIGJsb2NrXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5OYXRpdmUgY29yZS9kZXRhaWxzIHNraW4sIHJlcGxhY2luZyB0aGUgZm9ybWVyIEd1dGVuQmVlIGFjY29yZGlvbi4gQSBoYWlybGluZVxuZGl2aWRlciBwZXIgaXRlbSwgYSBib2xkIHRpdGxlLCBhIGN1c3RvbSBjaGV2cm9uIHRoYXQgcm90YXRlcyBvbiBvcGVuLCBhbmQgYW5cbmluZGVudGVkIGFuc3dlci4gRXhjbHVzaXZlIFwib25lIG9wZW4gYXQgYSB0aW1lXCIgYmVoYXZpb3VyIGNvbWVzIGZyb20gdGhlIHNoYXJlZFxuSFRNTCBgbmFtZWAgYXR0cmlidXRlIG9uIHRoZSBwYXR0ZXJucyDigJQgbm8gSmF2YVNjcmlwdCBpbnZvbHZlZC5cbiovXG5cbi53cC1ibG9jay1kZXRhaWxzIHtcbiAgYm9yZGVyLWJvdHRvbTogJGJvcmRlci13aWR0aCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBwYWRkaW5nOiAkc3BhY2VyIDA7XG5cbiAgc3VtbWFyeSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6ICRzcGFjZXI7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjayk7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7ICAgICAgICAgICAgICAgICAvLyBoaWRlIHRoZSBkaXNjbG9zdXJlIG1hcmtlciAoc3RhbmRhcmRzIC8gRmlyZWZveClcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAkaG92ZXItdHJhbnNpdGlvbjtcblxuICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIgeyAgICAgICAgLy8gaGlkZSB0aGUgZGlzY2xvc3VyZSBtYXJrZXIgKFdlYktpdCAvIEJsaW5rKVxuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN1c3RvbSBjaGV2cm9uXG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgd2lkdGg6IDFlbTtcbiAgICAgIGhlaWdodDogMWVtO1xuICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvY2hldnJvbi1kb3duLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXIgLyBjb250YWluO1xuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICRob3Zlci10cmFuc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoZSBhbnN3ZXIgY29weSAoZXZlcnl0aGluZyB0aGF0IGlzIG5vdCB0aGUgc3VtbWFyeSkuXG4gID4gOm5vdChzdW1tYXJ5KSB7XG4gICAgcGFkZGluZy1yaWdodDogJHNwYWNlciAqIDI7XG4gICAgcGFkZGluZy1sZWZ0OiAkc3BhY2VyICogMjtcbiAgfVxuXG4gICZbb3Blbl0ge1xuICAgIHN1bW1hcnkge1xuICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1zZWNvbmRhcnkpO1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLypcbkNhcmQgZ3JpZCBibG9ja1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuRnJvbnQtZW5kIHN0eWxpbmcgZm9yIHRoZSBkaWUtbGVvcGFyZGVuL2NhcmQtZ3JpZCBibG9jazogYSBmdWxsLXdpZHRoIHNlY3Rpb25cbndpdGggYW4gZXllYnJvdywgaGVhZGluZyBhbmQgbGVhZCwgZm9sbG93ZWQgYnkgYSBjb25maWd1cmFibGUgZ3JpZCBvZiBjYXJkcy5cblRoZSBibG9jayBtYXJrdXAgbGl2ZXMgaW4gdGhlIGxlb3BhcmQtd3AtcG9zdHMgcGx1Z2luOyB0aGUgZGVzaWduIGxpdmVzIGhlcmUgc29cbml0IHN0YXlzIGluIHN5bmMgd2l0aCB0aGUgdGhlbWUuXG5cblRocmVlIHRoaW5ncyBhcmUgY29uZmlndXJhYmxlIGZyb20gdGhlIGVkaXRvciBhbmQgbGFuZCBoZXJlIGFzIGNsYXNzZXMgb3JcbmN1c3RvbSBwcm9wZXJ0aWVzOlxuXG4gIC5pcy1iYWNrZ3JvdW5kLXByaW1hcnkgLyAuaXMtYmFja2dyb3VuZC1iYXNlICAgc2VjdGlvbiBjb2xvdXJcbiAgLmhhcy1jYXJkLXNoYWRvdyAvIC5uby1jYXJkLXNoYWRvdyAgICAgICAgICAgIGNhcmQgc2hhZG93XG4gIC0tY2ctY29scy17eHPigKZ4eGx9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRzIHBlciByb3cgcGVyIGJyZWFrcG9pbnRcblxuVGhlIGhlYWRpbmcgdGFncyAoaDHigJNoNCwgcCwgc3BhbikgYXJlIE5PVCBwYXJ0IG9mIHRoZSBzdHlsaW5nOiBldmVyeSBoZWFkaW5nIGlzXG5zdHlsZWQgdGhyb3VnaCBpdHMgY2xhc3MsIHNvIGFuIGVkaXRvciBjYW4gZml4IHRoZSBkb2N1bWVudCBvdXRsaW5lIGZvciBTRU9cbndpdGhvdXQgdGhlIGRlc2lnbiBtb3ZpbmcgYSBwaXhlbC4gRWluemlnZSBBdXNuYWhtZSBpc3QgZGllIEthcnRlbnVlYmVyc2NocmlmdCDigJRcbmRhcyB2MS1NYXJrdXAgaW0gQmVzdGFuZCBzY2hyZWlidCBkb3J0IGVpbiBibGFua2VzIDxoMz4sIGRhcyBzb25zdCBkdXJjaCBqZWRlXG5SZWdlbCBmaWVsZTsgZGllIEJlZ3J1ZW5kdW5nIHN0ZWh0IGJlaSBkZXIgUmVnZWwgc2VsYnN0LlxuKi9cblxuLypcbiAqIENhcmRzIHBlciByb3cuXG4gKiBUaGUgZWRpdG9yIHdyaXRlcyBvbmUgY3VzdG9tIHByb3BlcnR5IHBlciBCb290c3RyYXAgYnJlYWtwb2ludDsgZWFjaCBtZWRpYVxuICogcXVlcnkgcmVhZHMgaXRzIG93biBhbmQgZmFsbHMgYmFjayB0byB0aGUgb25lIGJlbG93IGl0LCBzbyBhIHNlY3Rpb24gdGhhdCB3YXNcbiAqIHNhdmVkIGJlZm9yZSBhIGJyZWFrcG9pbnQgZXhpc3RlZCBzdGlsbCBsYXlzIG91dCBzZW5zaWJseS5cbiAqL1xuJGNhcmQtZ3JpZC1icmVha3BvaW50czogKFxuICBzbTogLS1jZy1jb2xzLXNtLFxuICBtZDogLS1jZy1jb2xzLW1kLFxuICBsZzogLS1jZy1jb2xzLWxnLFxuICB4bDogLS1jZy1jb2xzLXhsLFxuICB4eGw6IC0tY2ctY29scy14eGwsXG4pO1xuXG4vKlxuICogVGhlIHRocmVlIGJ1dHRvbiB2YXJpYW50cyB0aGF0IGV4aXN0IG9uIHRoZSBzaXRlLiBUaGlzIG1hcCBpcyB0aGUgT05FIHBsYWNlXG4gKiB0byBlZGl0IHdoZW4gdGhlIGJ1dHRvbiBkZXNpZ24gY2hhbmdlcyDigJQgdGhlIGJsb2NrIG9ubHkgZXZlciBzdG9yZXMgdGhlXG4gKiB2YXJpYW50IG5hbWUgKGBpcy1idXR0b24tc3RhbmRhcmR8d2hpdGV8c2VuYXJ5YCkuXG4gKlxuICogYHN0YW5kYXJkYCB1bmQgYHNlbmFyeWAgZmFocmVuIGRlbiBWZXJsYXVmcy1Ib3ZlciBkZXIgdWVicmlnZW4gQnV0dG9uc1xuICogKGFic3RyYWN0L19taXhpbnMsIGZhZXRoLWJ1dHRvbi1ncmFkaWVudCkgdW5kIHRyYWdlbiBkYWZ1ZXIgaWhyZW4gendlaXRlbixcbiAqIGhlbGxlcmVuIFRvbiBpbSBGZWxkIGB0b2AuIGB3aGl0ZWAgaGF0IGtlaW5lbiDigJQgV2Vpc3Mga2FubiBuaWNodCBhdWZoZWxsZW4g4oCUXG4gKiB1bmQgYmVoYWVsdCBkZW4gZmxhZWNoaWdlbiBGYXJid2VjaHNlbC5cbiAqL1xuLy8gS2V5cyBhcmUgcXVvdGVkOiBgd2hpdGVgIGlzIGEgY29sb3VyIGtleXdvcmQgdG8gU2FzcywgYW5kIGFuIHVucXVvdGVkIGtleVxuLy8gd291bGQgYmUgaW50ZXJwb2xhdGVkIGFzIGEgY29sb3VyIHZhbHVlIGluc3RlYWQgb2YgdGhlIGxpdGVyYWwgY2xhc3MgbmFtZS5cbiRjYXJkLWdyaWQtYnV0dG9uczogKFxuICAnc3RhbmRhcmQnOiAoYmc6ICRidXR0b24tYmx1ZS01MDAsICAgICAgICAgICAgICAgICAgZmc6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jb250cmFzdCksIHRvOiAkYnV0dG9uLWJsdWUtMzAwKSxcbiAgJ3doaXRlJzogICAgKGJnOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSksICAgIGZnOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tY29udHJhc3QpLCB0bzogbnVsbCksXG4gICdzZW5hcnknOiAgIChiZzogJGJ1dHRvbi1ncmVlbi01MDAsICAgICAgICAgICAgICAgICBmZzogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpLCB0bzogJGJ1dHRvbi1ncmVlbi0zMDApLFxuKTtcbiRjYXJkLWdyaWQtYnV0dG9uLWhvdmVyLWJnOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tY29udHJhc3QpO1xuJGNhcmQtZ3JpZC1idXR0b24taG92ZXItZmc6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcblxuLyogSW1hZ2UgaGVpZ2h0cyDigJQgdGhlIGltYWdlIHN1cHBvcnRzIHRoZSBjYXJkLCBpdCBpcyBub3QgdGhlIGNhcmQuICovXG4kY2FyZC1ncmlkLWltYWdlLWhlaWdodHM6IChcbiAgc21hbGw6IDEyMHB4LFxuICBtZWRpdW06IDE4MHB4LFxuICBsYXJnZTogMjYwcHgsXG4pO1xuXG4uY2FyZC1ncmlkLWVsZW1lbnQge1xuICAvLyBWZXJ0aWNhbCBzZWN0aW9uIHBhZGRpbmcgaXMgb3duZWQgYnkgbGF5b3V0L19zZWN0aW9uLXNwYWNpbmcgKGFkYXB0aXZlKS5cblxuICAvLyBGdWxsLWJsZWVkIGJhY2tncm91bmQgKHZpYSAuYWxpZ25mdWxsKSwgY29udGVudCBrZXB0IGNlbnRyZWQgdG8gdGhlIHRoZW1lJ3NcbiAgLy8gY29udGVudCB3aWR0aCDigJQgc2FtZSBsYXlvdXQvcmVzcG9uc2l2ZW5lc3MgYXMgdGhlIG9yaWdpbmFsIHN0YXRpYyBzZWN0aW9uLlxuICAmX19pbm5lciB7XG4gICAgbWF4LXdpZHRoOiB2YXIoLS13cC0tc3R5bGUtLWdsb2JhbC0tY29udGVudC1zaXplKTtcbiAgICBtYXJnaW4taW5saW5lOiBhdXRvO1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS13cC0tc3R5bGUtLXJvb3QtLXBhZGRpbmctbGVmdCk7XG4gIH1cblxuICAmX19leWVicm93IHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0xMCk7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLjEyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICAvKlxuICAgKiBUaGUgc2VjdGlvbiBoZWFkaW5nLiBTaXplZCBhbmQgc3BhY2VkIGhlcmUgcmF0aGVyIHRoYW4gYnkgdGhlIHRhZywgc29cbiAgICogaDEg4oCmIHNwYW4gYWxsIGxvb2sgdGhlIHNhbWUg4oCUIHRoYXQgaXMgd2hhdCBtYWtlcyB0aGUgdGFnIGZyZWUgZm9yIFNFTy5cbiAgICovXG4gICZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXgtbGFyZ2UpO1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgJl9fbGVhZCB7XG4gICAgbWF4LXdpZHRoOiA2NDBweDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7XG4gICAgbWFyZ2luLWlubGluZTogYXV0bztcbiAgICBsaW5lLWhlaWdodDogMS43NTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAmX19ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KHZhcigtLWNnLWNvbHMteHMsIDEpLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgZ2FwOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApO1xuXG4gICAgLy8gTmV1dHJhbGlzZSB0aGUgYmxvY2stZ2FwIG1hcmdpbiBXb3JkUHJlc3MgYWRkcyB0byBldmVyeSBncmlkIGNoaWxkXG4gICAgLy8gZXhjZXB0IHRoZSBmaXJzdCBvbmUsIHNvIGV2ZXJ5IGNhcmQgYWxpZ25zIGlkZW50aWNhbGx5IGluIHRoZSBncmlkLlxuICAgID4gKiB7XG4gICAgICBtYXJnaW4tYmxvY2s6IDA7XG4gICAgfVxuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQsICRwcm9wIGluICRjYXJkLWdyaWQtYnJlYWtwb2ludHMge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoI3skcHJvcH0sIHZhcigtLWNnLWNvbHMteHMsIDEpKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIFNlY3Rpb25zIHNhdmVkIGJlZm9yZSB0aGUgY29sdW1ucyBiZWNhbWUgY29uZmlndXJhYmxlIGNhcnJ5IG5vXG4gICAqIGAtLWNnLWNvbHMtKmAgYXQgYWxsLCBhbmQgdGhlIHJ1bGVzIGFib3ZlIHdvdWxkIGNvbGxhcHNlIHRoZW0gdG8gYSBzaW5nbGVcbiAgICogY29sdW1uLiBUaGV5IGFyZSByZWNvZ25pc2FibGUgYnkgdGhlIG1pc3NpbmcgYmFja2dyb3VuZCBjbGFzcyDigJQgdjIgYWx3YXlzXG4gICAqIHdyaXRlcyBvbmUg4oCUIGFuZCBrZWVwIHRoZSBvcmlnaW5hbCBhdXRvLWZpdCBncmlkIHVudGlsIHRoZXkgYXJlIHJlLXNhdmVkLlxuICAgKiBUaGlzIHJ1bGUgY2FuIGdvIG9uY2Ugbm8gdjEgbWFya3VwIGlzIGxlZnQgaW4gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgJjpub3QoLmlzLWJhY2tncm91bmQtcHJpbWFyeSk6bm90KC5pcy1iYWNrZ3JvdW5kLWJhc2UpIHtcbiAgICAuY2FyZC1ncmlkLWVsZW1lbnRfX2dyaWQge1xuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMjgwcHgsIDEwMCUpLCAxZnIpKTtcbiAgICB9XG4gIH1cblxuICAmX19jYXJkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcGFkZGluZzogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cblxuICAvKlxuICAgKiBJbWFnZS4gSXQgYmxlZWRzIHRvIHRoZSBjYXJkIGVkZ2VzICh0aGUgcGF0dGVybiB0aGlzIHJlcGxhY2VzIGhhZCB0aGUgaW1hZ2VcbiAgICogZmx1c2ggYXQgdGhlIHRvcCksIGlzIGNyb3BwZWQgdG8gYSBmaXhlZCBoZWlnaHQgYW5kIG5ldmVyIGRpY3RhdGVzIHRoZSBjYXJkXG4gICAqIGhlaWdodCDigJQgb3RoZXJ3aXNlIG9uZSB0YWxsIGltYWdlIHdvdWxkIHN0cmV0Y2ggaXRzIHdob2xlIHJvdy5cbiAgICovXG4gICZfX21lZGlhIHtcbiAgICAvLyBEZWZhdWx0OiB0aGUgaW1hZ2UgYmxlZWRzIG91dCBvZiB0aGUgY2FyZCBwYWRkaW5nIGFuZCBzaXRzIGZsdXNoIGFnYWluc3RcbiAgICAvLyB0aGUgY2FyZCBlZGdlcywgbGlrZSB0aGUgaW1hZ2UgY2FyZHMgdGhpcyBibG9jayByZXBsYWNlcy5cbiAgICBtYXJnaW46IGNhbGModmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApICogLTEpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIC8vIFdoaXRlIGJlaGluZCB0aGUgaW1hZ2UuIE9ubHkgdmlzaWJsZSB3aGVyZSB0aGUgaW1hZ2UgZG9lcyBub3QgZmlsbCB0aGVcbiAgICAvLyBib3gg4oCUIGEgY29udGFpbmVkIGxvZ28sIG9yIGEgUE5HIHdpdGggdHJhbnNwYXJlbmN5IOKAlCBhbmQgaXQga2VlcHMgdGhvc2VcbiAgICAvLyBvbiB3aGl0ZSBldmVuIHdoZW4gdGhlIHNlY3Rpb24gc2l0cyBvbiB0aGUgbmF2eSBiYWNrZ3JvdW5kLlxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlLCAjZmZmKTtcblxuICAgIGltZyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgfVxuXG4gICAgQGVhY2ggJHNpemUsICRoZWlnaHQgaW4gJGNhcmQtZ3JpZC1pbWFnZS1oZWlnaHRzIHtcbiAgICAgICYuaXMtc2l6ZS0jeyRzaXplfSB7XG4gICAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgICAqIENvbnRhaW46IHRoZSB3aG9sZSBpbWFnZSBpcyBzaG93biBpbnN0ZWFkIG9mIGJlaW5nIGNyb3BwZWQuIE1lYW50IGZvclxuICAgICAqIGxvZ29zIGFuZCBwcm9kdWN0IHNob3RzIHRoYXQgbXVzdCBub3QgbG9zZSB0aGVpciBlZGdlcyDigJQgdGhlIGJveCBrZWVwcyBpdHNcbiAgICAgKiBoZWlnaHQsIHNvIHRoZSBsZWZ0b3ZlciBzcGFjZSBzaW1wbHkgc3RheXMgZW1wdHkgYW5kIHRoZSByb3cgc3RheXMgZXZlbi5cbiAgICAgKi9cbiAgICAmLmlzLWZpdC1jb250YWluIGltZyB7XG4gICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgIH1cblxuICAgIC8vIEluc2V0OiB0aGUgaW1hZ2Uga2VlcHMgdGhlIGNhcmQncyBwYWRkaW5nIG9uIGFsbCBzaWRlcy5cbiAgICAmLmlzLWluc2V0IHtcbiAgICAgIG1hcmdpbjogMCAwIHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtcbiAgICB9XG4gIH1cblxuICAmX19udW0ge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTEwKTtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gIH1cblxuICAvKlxuICAgKiBDYXJkIGhlYWRpbmcg4oCUIHNhbWUgZGVhbCBhcyBfX3RpdGxlOiB0aGUgY2xhc3MgY2FycmllcyB0aGUgZGVzaWduLCB0aGUgdGFnXG4gICAqIGNhcnJpZXMgdGhlIG91dGxpbmUuIEFsc28gcmVzZXRzIHRoZSBtYXJnaW5zIGEgaGVhZGluZyB0YWcgYnJpbmdzIGFsb25nIHNvXG4gICAqIGg0IGFuZCBzcGFuIGVuZCB1cCBpZGVudGljYWwuXG4gICAqXG4gICAqIERlciB6d2VpdGUgU2VsZWt0b3IgZmFlbmd0IGRhcyB2MS1NYXJrdXAgYWIuIERpZSB6dWVyc3QgdmVyb2VmZmVudGxpY2h0ZW5cbiAgICogS2FydGVuIHNjaHJlaWJlbiBlaW4gYmxhbmtlcyA8aDM+IG9obmUgS2xhc3NlIChzaWVoZSBkZXByZWNhdGVkLmpzIGltXG4gICAqIFBsdWdpbik7IFdvcmRQcmVzcyBzY2hyZWlidCBpaHIgTWFya3VwIGVyc3QgdW0sIHdlbm4gZGllIFNlaXRlIGltIEVkaXRvclxuICAgKiBnZW9lZmZuZXQgdW5kIGdlc3BlaWNoZXJ0IHdpcmQuIEJpcyBkYWhpbiBmaWVsZW4gc2llIGR1cmNoIGplZGUgUmVnZWwgaGllclxuICAgKiDigJQgYXVmIGRlbSBOYXZ5LUJhbmQgYmxpZWIgZGllIFVlYmVyc2NocmlmdCBzY2h3YXJ6IHVuZCBkYW1pdCB1bmxlc2Jhci5cbiAgICogRGllIFplaWxlIGthbm4gd2VnLCBzb2JhbGQga2VpbiB2MS1NYXJrdXAgbWVociBpbSBCZXN0YW5kIGxpZWd0LlxuICAgKi9cbiAgJl9fY2FyZC1oZWFkaW5nLFxuICAmX19jYXJkIDppcyhoMSwgaDIsIGgzLCBoNCwgaDUsIGg2KSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0xMCk7XG4gICAgLy8gV2llIC50eXBlLWNhcmQtdGl0bGU6IGRpZXNlbGJlIEdyb2Vzc2Ugd2llIGRlciBLYXJ0ZW50ZXh0LCBkaWUgSGllcmFyY2hpZVxuICAgIC8vIHRyYWVndCBkYXMgR2V3aWNodC4gRnJ1ZWhlciBtZWRpdW0gKDEuMTI1cmVtKS5cbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgfVxuXG4gICZfX2NhcmQtdGV4dCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY1O1xuICB9XG5cbiAgLy8gQnV0dG9ucyBzaXQgYXQgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBjYXJkLCBzbyB0aGV5IGxpbmUgdXAgYWNyb3NzIGEgcm93XG4gIC8vIGV2ZW4gd2hlbiB0aGUgdGV4dHMgYWJvdmUgdGhlbSBkaWZmZXIgaW4gbGVuZ3RoLlxuICAmX19hY3Rpb25zIHtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7XG4gIH1cblxuICAmX19idXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAkYnV0dG9uLXBhZGRpbmcteSAxLjc1cmVtO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgJGhvdmVyLXRyYW5zaXRpb24sIGNvbG9yICRob3Zlci10cmFuc2l0aW9uO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvcnMgaW4gJGNhcmQtZ3JpZC1idXR0b25zIHtcbiAgICAgICYuaXMtYnV0dG9uLSN7JG5hbWV9IHtcbiAgICAgICAgY29sb3I6IG1hcC1nZXQoJGNvbG9ycywgZmcpO1xuXG4gICAgICAgIEBpZiBtYXAtZ2V0KCRjb2xvcnMsIHRvKSB7XG4gICAgICAgICAgLy8gVmFyaWFudGVuIG1pdCB6d2VpdGVtIFRvbjogZGVyc2VsYmUgVmVybGF1ZnMtSG92ZXIgd2llIHVlYmVyYWxsLlxuICAgICAgICAgIEBpbmNsdWRlIGZhZXRoLWJ1dHRvbi1ncmFkaWVudChtYXAtZ2V0KCRjb2xvcnMsIGJnKSwgbWFwLWdldCgkY29sb3JzLCB0bykpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAvLyBXZWlzcyBrYW5uIG5pY2h0IGF1ZmhlbGxlbiB1bmQgYmVoYWVsdCBkZW4gZmxhZWNoaWdlbiBXZWNoc2VsLlxuICAgICAgICAgIGJhY2tncm91bmQ6IG1hcC1nZXQoJGNvbG9ycywgYmcpO1xuXG4gICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGNhcmQtZ3JpZC1idXR0b24taG92ZXItYmc7XG4gICAgICAgICAgICBjb2xvcjogJGNhcmQtZ3JpZC1idXR0b24taG92ZXItZmc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIEJhY2tncm91bmQ6IHByaW1hcnkg4oCUIHRoZSBvcmlnaW5hbCBzZWN0aW9uLiBDYXJkcyBhcmUgYSBsaWdodGVuZWRcbiAgICAgcGF0Y2ggb2YgdGhlIGJhY2tncm91bmQgaXRzZWxmLCBub3QgYSB3aGl0ZSBib3guXG5cbiAgICAgRGVjbGFyZWQgV0lUSE9VVCBhIGNsYXNzIOKAlCBidXQgb25seSBmb3IgdGhlIHNha2Ugb2YgdjEgbWFya3VwOlxuICAgICBzZWN0aW9ucyBzYXZlZCBiZWZvcmUgdGhlIGJhY2tncm91bmQgYmVjYW1lIGNvbmZpZ3VyYWJsZSBjYXJyeSBub1xuICAgICBgaXMtYmFja2dyb3VuZC0qYCBjbGFzcywgYW5kIFdvcmRQcmVzcyBvbmx5IHJld3JpdGVzIHRoZWlyIG1hcmt1cFxuICAgICB3aGVuIHRoZSBwYWdlIGlzIG5leHQgb3BlbmVkIGFuZCBzYXZlZC4gTmF2eSBhcyB0aGUgY2xhc3MtbGVzcyBsb29rXG4gICAgIGtlZXBzIHRoZW0gaW50YWN0IGluIHRoZSBtZWFudGltZTsgYC5pcy1iYWNrZ3JvdW5kLWJhc2VgIGJlbG93XG4gICAgIG92ZXJyaWRlcyBpdC5cblxuICAgICBOT1QgdG8gYmUgY29uZnVzZWQgd2l0aCB0aGUgYmxvY2sncyBvd24gZGVmYXVsdCwgd2hpY2ggaXMgd2hpdGVcbiAgICAgKGBiYWNrZ3JvdW5kYCBpbiB0aGUgcGx1Z2luJ3MgY2FyZC1ncmlkL2Jsb2NrLmpzb24pOiBldmVyeSBzZWN0aW9uXG4gICAgIHNhdmVkIGJ5IHYyIGNhcnJpZXMgYW4gZXhwbGljaXQgY2xhc3MsIHNvIGEgbmV3bHkgaW5zZXJ0ZWQgZ3JpZCBpc1xuICAgICB3aGl0ZSBhbmQgbmV2ZXIgcmVhY2hlcyB0aGlzIHJ1bGUuXG4gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICBiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcHJpbWFyeSk7XG5cbiAgLy8gR3VhcmRlZCB3aXRoIDpub3QoKSByYXRoZXIgdGhhbiBsZWZ0IG9wZW4sIHNvIHRoZSBuYXZ5IGNhcmQgY29sb3VycyBjYW5cbiAgLy8gbmV2ZXIgbGVhayBpbnRvIHRoZSB3aGl0ZSB2YXJpYW50IHRocm91Z2ggdGhlIGNhc2NhZGUuXG4gICY6bm90KC5pcy1iYWNrZ3JvdW5kLWJhc2UpIHtcbiAgICAuY2FyZC1ncmlkLWVsZW1lbnRfX3RpdGxlIHtcbiAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG4gICAgfVxuXG4gICAgLmNhcmQtZ3JpZC1lbGVtZW50X19sZWFkIHtcbiAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC43NSk7XG4gICAgfVxuXG4gICAgLmNhcmQtZ3JpZC1lbGVtZW50X19jYXJkIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjA3KTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjEyKTtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgJGhvdmVyLXRyYW5zaXRpb247XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xMik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNhcmQtZ3JpZC1lbGVtZW50X19jYXJkLWhlYWRpbmcsXG4gICAgLmNhcmQtZ3JpZC1lbGVtZW50X19jYXJkIDppcyhoMSwgaDIsIGgzLCBoNCwgaDUsIGg2KSB7XG4gICAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuICAgIH1cblxuICAgIC5jYXJkLWdyaWQtZWxlbWVudF9fY2FyZC10ZXh0IHtcbiAgICAgIGNvbG9yOiBoc2xhKDAsIDAlLCAxMDAlLCAuNzUpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICBCYWNrZ3JvdW5kOiB3aGl0ZS4gVGhlIGxpZ2h0ZW5pbmcgaG92ZXIgb2YgdGhlIG5hdnkgdmFyaWFudCBpc1xuICAgICBpbnZpc2libGUgaGVyZSwgc28gdGhlIGNhcmQgcmVhY3RzIGRpZmZlcmVudGx5IOKAlCBzZWUgYmVsb3cuXG4gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAmLmlzLWJhY2tncm91bmQtYmFzZSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuXG4gICAgLmNhcmQtZ3JpZC1lbGVtZW50X190aXRsZSB7XG4gICAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJsYWNrKTtcbiAgICB9XG5cbiAgICAuY2FyZC1ncmlkLWVsZW1lbnRfX2xlYWQsXG4gICAgLmNhcmQtZ3JpZC1lbGVtZW50X19jYXJkLXRleHQge1xuICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jb250cmFzdCk7XG4gICAgfVxuXG4gICAgLmNhcmQtZ3JpZC1lbGVtZW50X19jYXJkIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG5cbiAgICAuY2FyZC1ncmlkLWVsZW1lbnRfX2NhcmQtaGVhZGluZyxcbiAgICAuY2FyZC1ncmlkLWVsZW1lbnRfX2NhcmQgOmlzKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpIHtcbiAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spO1xuICAgIH1cblxuICAgIC5jYXJkLWdyaWQtZWxlbWVudF9fbnVtIHtcbiAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcHJpbWFyeSk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIFNoYWRvdy4gRGVsaWJlcmF0ZWx5ICRib3gtc2hhZG93ICh0aGUgc29mdCBCb290c3RyYXAgZGVmYXVsdCB0aGVcbiAgICAgaW1hZ2UgY2FyZHMgYWxyZWFkeSB1c2UpLCBub3QgJGJveC1zaGFkb3ctbGcg4oCUIHRoZSBzaXRlIGhhcyB0d29cbiAgICAgc2hhZG93IGRlcHRocyBmb3IgdGhlIHNhbWUgam9iIGFuZCB0aGlzIGlzIHRoZSBxdWlldGVyIG9uZS5cbiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4gICYuaGFzLWNhcmQtc2hhZG93IC5jYXJkLWdyaWQtZWxlbWVudF9fY2FyZCB7XG4gICAgYm94LXNoYWRvdzogJGJveC1zaGFkb3c7XG4gIH1cblxuICAvKlxuICAgKiBIb3ZlciBvbiB3aGl0ZS5cbiAgICogV2l0aCBhIHNoYWRvdyB0aGUgY2FyZCBsaWZ0cyAycHggYW5kIHRoZSBzaGFkb3cgZGVlcGVucyDigJQgbW92ZW1lbnQgd2l0aG91dFxuICAgKiBhIGNvbG91ciBjaGFuZ2UuIFdpdGhvdXQgYSBzaGFkb3cgdGhlcmUgaXMgbm90aGluZyB0byBkZWVwZW4sIHNvIHRoZSBjYXJkXG4gICAqIHRpbnRzIHRvIHRlcnRpYXJ5IGluc3RlYWQuIE5laXRoZXIgcmVmbG93cyB0aGUgZ3JpZC5cbiAgICovXG4gICYuaXMtYmFja2dyb3VuZC1iYXNlIHtcbiAgICAuY2FyZC1ncmlkLWVsZW1lbnRfX2NhcmQge1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAkaG92ZXItdHJhbnNpdGlvbixcbiAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgJGhvdmVyLXRyYW5zaXRpb24sXG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gJGhvdmVyLXRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgJi5oYXMtY2FyZC1zaGFkb3cgLmNhcmQtZ3JpZC1lbGVtZW50X19jYXJkOmhvdmVyIHtcbiAgICAgIGJveC1zaGFkb3c6ICRib3gtc2hhZG93LWxnO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIH1cblxuICAgICYubm8tY2FyZC1zaGFkb3cgLmNhcmQtZ3JpZC1lbGVtZW50X19jYXJkOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS10ZXJ0aWFyeSk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogIWltcG9ydGFudCBvbiBwdXJwb3NlOiB0aGUgcGVyLWJhY2tncm91bmQgcnVsZXMgYWJvdmUgc2V0IHRoZSBgdHJhbnNpdGlvbmBcbiAgICogc2hvcnRoYW5kIGF0IGEgaGlnaGVyIHNwZWNpZmljaXR5LCBhbmQgYSBwbGFpbiBvdmVycmlkZSBoZXJlIHdvdWxkIGxvc2UgdG9cbiAgICogdGhlbSDigJQgcmVkdWNlZCBtb3Rpb24gd291bGQgdGhlbiBiZSBzaWxlbnRseSBpZ25vcmVkIG9uIHRoZSB3aGl0ZSB2YXJpYW50LlxuICAgKi9cbiAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAuY2FyZC1ncmlkLWVsZW1lbnRfX2NhcmQge1xuICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjAxbXMgIWltcG9ydGFudDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLypcblByb2Nlc3Mgc3RlcHMgYmxvY2tcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkZyb250LWVuZCBzdHlsaW5nIGZvciB0aGUgZGllLWxlb3BhcmRlbi9wcm9jZXNzLXN0ZXBzIGJsb2NrOiBhIGZ1bGwtd2lkdGhcbnNlY3Rpb24gd2l0aCBhIGNlbnRyZWQgZXllYnJvdywgaGVhZGluZyBhbmQgbGVhZCwgZm9sbG93ZWQgYnkgYSByZXNwb25zaXZlLFxuZXZlbmx5LXdyYXBwaW5nIHJvdyBvZiBudW1iZXJlZCBwcm9jZXNzIHN0ZXBzLiBBIHNpbmdsZSBjb250aW51b3VzIGdyYWRpZW50IGxpbmVcbnJ1bnMgYmVoaW5kIHRoZSBudW1iZXIgYmFkZ2VzICh0aGUgYmFkZ2VzIFwicGllcmNlXCIgaXQpIHNvIHdyYXBwZWQgcm93cyBzdGF5XG52aXNpYmx5IG9uIHRoZSB0aW1lbGluZS4gVGhlIGJsb2NrIG1hcmt1cCBsaXZlcyBpbiB0aGUgbGVvcGFyZC13cC1wb3N0cyBwbHVnaW47XG50aGUgZGVzaWduIGxpdmVzIGhlcmUgc28gaXQgc3RheXMgaW4gc3luYyB3aXRoIHRoZSB0aGVtZS5cbiovXG5cbi5wcm9jZXNzLXN0ZXBzLWVsZW1lbnQge1xuICAvLyBWZXJ0aWNhbCBzZWN0aW9uIHBhZGRpbmcgaXMgb3duZWQgYnkgbGF5b3V0L19zZWN0aW9uLXNwYWNpbmcgKGFkYXB0aXZlKS5cbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuXG4gIC8vIEZ1bGwtYmxlZWQgYmFja2dyb3VuZCAodmlhIC5hbGlnbmZ1bGwpLCBjb250ZW50IGtlcHQgY2VudHJlZCB0byB0aGUgdGhlbWUnc1xuICAvLyBjb250ZW50IHdpZHRoLiBUaGUgaGVhZGVyIGlzIGNlbnRyZWQgc28gaXQgZml0cyB0aGUgY2VudHJlZCBzdGVwcyBiZWxvdy5cbiAgJl9faW5uZXIge1xuICAgIG1heC13aWR0aDogdmFyKC0td3AtLXN0eWxlLS1nbG9iYWwtLWNvbnRlbnQtc2l6ZSk7XG4gICAgbWFyZ2luLWlubGluZTogYXV0bztcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0td3AtLXN0eWxlLS1yb290LS1wYWRkaW5nLWxlZnQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX2V5ZWJyb3cge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTEwKTtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMTJlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB9XG5cbiAgJl9fdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJsYWNrKTtcbiAgfVxuXG4gICZfX2xlYWQge1xuICAgIG1heC13aWR0aDogNjQwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApO1xuICAgIG1hcmdpbi1pbmxpbmU6IGF1dG87XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jb250cmFzdCk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNzU7XG4gIH1cblxuICAmX19ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAvLyBTdGVwcyBncm93IHRvIHNoYXJlIGVhY2ggcm93J3Mgd2lkdGggZXF1YWxseS4gQSBsb25lIGxlZnRvdmVyIHN0ZXAgKHNlZVxuICAgIC8vIHRoZSA6bGFzdC1jaGlsZCBydWxlcyBiZWxvdykga2VlcHMgaXRzIGNvbHVtbiB3aWR0aCBhbmQgYWxpZ25zIGxlZnRcbiAgICAvLyBpbnN0ZWFkIG9mIHN0cmV0Y2hpbmcgYWNyb3NzIHRoZSB3aG9sZSByb3cuXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApIHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7XG4gICAgLy8gQ2xpcCB0aGUgaGFsZi1nYXAgdGhlIGNvbm5lY3RvciBzZWdtZW50cyBleHRlbmQgYmV5b25kIHRoZSByb3cgZWRnZXMgc29cbiAgICAvLyB0aGUgbGluZSBuZXZlciBmbG9hdHMgaW4gdGhlIHNlY3Rpb24gcGFkZGluZy5cbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLy8gTmV1dHJhbGlzZSB0aGUgYmxvY2stZ2FwIG1hcmdpbiBXb3JkUHJlc3MgYWRkcyB0byBldmVyeSBmbGV4IGNoaWxkXG4gICAgLy8gZXhjZXB0IHRoZSBmaXJzdCBvbmUsIHNvIGV2ZXJ5IHN0ZXAgYWxpZ25zIGlkZW50aWNhbGx5LlxuICAgID4gKiB7XG4gICAgICBtYXJnaW4tYmxvY2s6IDA7XG4gICAgfVxuICB9XG5cbiAgJl9fc3RlcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgZmxleDogMSAxIDEwMCU7IC8vIG1vYmlsZTogb25lIHN0ZXAgcGVyIHJvd1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0xMCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgLy8gVGFibGV0OiB1cCB0byB0d28gcGVyIHJvdy4gVGhlIGJhc2lzIGlzIHRoZSBtaW5pbXVtIHdpZHRoIChjYXBzIHRoZSByb3dcbiAgICAgIC8vIGF0IDIpOyBmbGV4LWdyb3cgbGV0cyBmZXdlciBpdGVtcyBzaGFyZSB0aGUgcm93IHdpZHRoIGVxdWFsbHkgYW5kIGFcbiAgICAgIC8vIHNob3J0ZXIgbGFzdCByb3cgc3RyZXRjaGVzIHRvIGZpbGwsIGNlbnRyZWQuXG4gICAgICBmbGV4OiAxIDEgY2FsYyg1MCUgLSAodmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApIC8gMikpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICAgIC8vIERlc2t0b3A6IHVwIHRvIGZpdmUgcGVyIHJvdy4gVGhlIGJhc2lzIGlzIHRoZSBtaW5pbXVtIHdpZHRoIOKAlCA1IGl0ZW1zXG4gICAgICAvLyBzdW0gdG8gMTAwJSBzbyBhIDZ0aCB3cmFwcyDigJQgYW5kIGZsZXgtZ3JvdyBkaXZpZGVzIGVhY2ggcm93J3Mgd2lkdGhcbiAgICAgIC8vIGVxdWFsbHkgYW1vbmcgaXRzIGl0ZW1zLCBzbyBzaG9ydCBvciB3cmFwcGVkIHJvd3Mgc3RyZXRjaCB0byBmaWxsLlxuICAgICAgZmxleDogMSAxIGNhbGMoKDEwMCUgLSAoNCAqIHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKSkpIC8gNSk7XG4gICAgfVxuXG4gICAgLy8gQSBsb25lIGxlZnRvdmVyIHN0ZXAgKHRoZSBvbmx5IG9uZSBvbiBpdHMgbGFzdCByb3cpIGtlZXBzIGl0cyBjb2x1bW5cbiAgICAvLyB3aWR0aCBhbmQgc3RheXMgbGVmdC1hbGlnbmVkIGluc3RlYWQgb2Ygc3RyZXRjaGluZyBhY3Jvc3MgdGhlIGZ1bGwgcm93LlxuICAgIC8vIFRhYmxldDogdGhpcyBpcyBhbnkgb2RkIHRvdGFsICgyIHBlciByb3cpLiBUaGUgcnVsZSBpcyBzY29wZWQgdG8gdGhlIG1kXG4gICAgLy8gcmFuZ2Ugb25seSBzbyBpdCBkb2VzIG5vdCBibGVlZCBpbnRvIHRoZSA1LXBlci1yb3cgZGVza3RvcCBsYXlvdXQuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1vbmx5KG1kKSB7XG4gICAgICAmOmxhc3QtY2hpbGQ6bnRoLWNoaWxkKDJuICsgMSkge1xuICAgICAgICBmbGV4LWdyb3c6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVza3RvcDogYSBsb25lIHN0ZXAgc3RhcnRzIGEgbmV3IHJvdyBvbmx5IHdoZW4gdGhlIHRvdGFsIGlzIDVuICsgMVxuICAgIC8vICg2LCAxMSwg4oCmKSDigJQgdGhlIDZ0aC8xMXRoIGl0ZW0gaXMgYm90aCA6bGFzdC1jaGlsZCBhbmQgYW4gb2RkIHJlbWFpbmRlci5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gICAgICAmOmxhc3QtY2hpbGQ6bnRoLWNoaWxkKDVuICsgMSkge1xuICAgICAgICBmbGV4LWdyb3c6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgLy8gRXF1YWwtaGVpZ2h0IGhlYWRpbmcgYmFuZCBzbyB0aGUgdGV4dCBiZWxvdyBldmVyeSBzdGVwIHN0YXJ0cyBhdCB0aGVcbiAgICAgIC8vIHNhbWUgaGVpZ2h0LCBldmVuIHdoZW4gb25lIGhlYWRpbmcgd3JhcHMgdG8gdHdvIGxpbmVzLlxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIG1pbi1oZWlnaHQ6IDIuNmVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMTApO1xuICAgICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1ibGFjayk7XG4gICAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbWVkaXVtKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgfVxuXG4gICAgLy8gQ29ubmVjdG9yIGxpbmUg4oCUIHNob3duIG9uY2UgdGhlcmUgYXJlIGF0IGxlYXN0IHR3byBzdGVwcyBwZXIgcm93IChtZCspLlxuICAgIC8vIEVhY2ggc3RlcCBkcmF3cyBpdHMgb3duIHNlZ21lbnQsIGNlbnRyZWQgb24gaXRzIGJhZGdlLCBzbyBldmVyeSByb3dcbiAgICAvLyAoaW5jbHVkaW5nIHdyYXBwZWQgb25lcykgZ2V0cyBhIGxpbmUgYXV0b21hdGljYWxseS4gVGhlIHNlZ21lbnRzIGJyaWRnZVxuICAgIC8vIHRoZSBjb2x1bW4gZ2FwIHRvIHJlYWQgY29udGludW91cywgYW5kIGBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkYFxuICAgIC8vIGFuY2hvcnMgdGhlIGdyYWRpZW50IHRvIHRoZSB2aWV3cG9ydCBzbyB0aGUgc2VwYXJhdGUgc2VnbWVudHMgbGluZSB1cFxuICAgIC8vIGludG8gT05FIHVuaW50ZXJydXB0ZWQgc3dlZXAgaW5zdGVhZCBvZiBlYWNoIHJlcGVhdGluZyBwcmltYXJ54oaSc2Vjb25kYXJ5LlxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHotaW5kZXg6IDA7IC8vIGJlaGluZCB0aGUgYmFkZ2Ug4oaSIHRoZSBiYWRnZSBcInBpZXJjZXNcIiB0aGUgbGluZVxuICAgICAgICB0b3A6IDI4cHg7IC8vIHZlcnRpY2FsIGNlbnRyZSBvZiB0aGUgNTZweCBiYWRnZVxuICAgICAgICBsZWZ0OiBjYWxjKHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKSAvIC0yKTtcbiAgICAgICAgcmlnaHQ6IGNhbGModmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApIC8gLTIpO1xuICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgIDkwZGVnLFxuICAgICAgICAgIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KSxcbiAgICAgICAgICB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tc2Vjb25kYXJ5KVxuICAgICAgICApO1xuICAgICAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMHZ3IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICB9XG5cbiAgICAgIC8vIFRyaW0gdGhlIHZlcnkgc3RhcnQvZW5kIG9mIHRoZSB3aG9sZSB0aW1lbGluZSBzbyB0aGUgbGluZSBkb2VzIG5vdCBzdGlja1xuICAgICAgLy8gb3V0IHBhc3QgdGhlIGZpcnN0IGFuZCBsYXN0IGJhZGdlcyAob3ZlcmxheSB0aGUgc2VjdGlvbiBiYWNrZ3JvdW5kIG92ZXJcbiAgICAgIC8vIHRoZSBvdXRlciBoYWxmIG9mIHRoZSBmaXJzdC9sYXN0IHN0ZXApLlxuICAgICAgJjpmaXJzdC1jaGlsZDo6YWZ0ZXIsXG4gICAgICAmOmxhc3QtY2hpbGQ6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgdG9wOiAyN3B4O1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBoZWlnaHQ6IDRweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuICAgICAgfVxuXG4gICAgICAmOmZpcnN0LWNoaWxkOjphZnRlciB7XG4gICAgICAgIGxlZnQ6IGNhbGModmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApIC8gLTIpO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQ6OmFmdGVyIHtcbiAgICAgICAgcmlnaHQ6IGNhbGModmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApIC8gLTIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX251bSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBtYXJnaW46IDAgYXV0byB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0xMCk7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgfVxuXG4gICZfX3N0ZXAtdGV4dCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWNvbnRyYXN0KTtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY1O1xuICB9XG59XG4iLCIvKlxuWW9hc3Qgc2VvIHBsdWdpblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQ3VzdG9tIHN0eWxpbmcgZm9yIFlvYXN0IHNlbyBwbHVnaW4uXG4qL1xuXG4ueW9hc3QtYnJlYWRjcnVtYnMge1xuICBtYXJnaW4tbGVmdDogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApO1xuXG4gIGEsXG4gIC5icmVhZGNydW1iX2xhc3Qge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTQwKTtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6ICR5b2FzdC1icmVhZGNydW1iLWFycm93LXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkeW9hc3QtYnJlYWRjcnVtYi1hcnJvdy13aWR0aDtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbGVmdDogY2FsYyh2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCkgKiAtMSk7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uLy4uL2ltYWdlcy9icmVhZGNydW1iLWNoZXZyb24uc3ZnJykgbm8tcmVwZWF0IDAgNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gICAgICAgIGxlZnQ6IGNhbGModmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApICogLTEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5icmVhZGNydW1iX2xhc3Qge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXByaW1hcnkpO1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCIvKlxuUG93ZXJUaXAgcGx1Z2luXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5DdXN0b20gc3R5bGluZyBmb3IgcG93ZXItdGlwIHBsdWdpbi5cbiovXG5cbi53cmFwX3N2bF9jZW50ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLmN1c3RvbS1saW5rIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7XG4gICAgcmlnaHQ6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKGxnKSB7XG4gICAgICB0b3A6IHZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTEwKTtcbiAgICAgIHJpZ2h0OiB2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0xMCk7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG5cbiAgLmRyYWdfZWxlbWVudCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4jcG93ZXJUaXAge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSkgIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogJGJveC1zaGFkb3c7XG5cbiAgLmJveF92aWV3X2h0bWwge1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tY29udHJhc3QpICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApO1xuICB9XG59XG4iLCIvKlxuU2Nyb2xsLXRvcCBwbHVnaW5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkN1c3RvbSBzdHlsaW5nIGZvciBzY3JvbGwtdG9wIHBsdWdpbi5cbiovXG5cbiNzY3JvbGxVcCB7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1jb250cmFzdCk7XG59XG4iLCIvKlxuUGFnZSB0ZW1wbGF0ZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQ3VzdG9tIHN0eWxpbmcgZm9yIHBhZ2UuXG4qL1xuXG4uc2lkZWJhci1wYWdlIHtcblxuICAuZW50cnktY29udGVudCB7XG4gICAgJiA+IC5oYXMtZ2xvYmFsLXBhZGRpbmcge1xuICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0td3AtLXN0eWxlLS1yb290LS1wYWRkaW5nLXJpZ2h0KSAhaW1wb3J0YW50O1xuICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS13cC0tc3R5bGUtLXJvb3QtLXBhZGRpbmctbGVmdCkgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAud3AtYmxvY2stY292ZXIge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiLypcblNlYXJjaCB0ZW1wbGF0ZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQ3VzdG9tIHN0eWxpbmcgZm9yIHNlYXJjaC5cbiovXG5cbi5zZWFyY2gge1xuICAmLnNlYXJjaC1yZXN1bHRzIHtcbiAgICAud3AtYmxvY2stcG9zdC10aXRsZSB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcblxuICAgICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLypcblR5cG9ncmFmaWUtUm9sbGVuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5EaWUgZWluZSBTdGVsbGUsIGFuIGRlciBTY2hyaWZ0Z3JvZXNzZSwgLWdld2ljaHQgdW5kIFRleHRmYXJiZSBmZXN0Z2VsZWd0IHdlcmRlbi5cblJlZ2Vsd2VyayB1bmQgQmVncnVlbmR1bmdlbjogc2llaGUgZGFzIFR5cG9ncmFmaWUtUmVnZWx3ZXJrIHZvbSAzMC4wNy4yMDI2LlxuXG5HcnVuZGdlZGFua2U6IFJPTExFIFNUQVRUIFRBRy4gRGFzIEhUTUwtVGFnIHRyYWVndCBkaWUgR2xpZWRlcnVuZyBmdWVyXG5TdWNobWFzY2hpbmVuIHVuZCBTY3JlZW5yZWFkZXIsIGRpZSBLbGFzc2UgdHJhZWd0IGRhcyBBdXNzZWhlbi4gRWluIGgyIGRhcmYgenVcbmgzIHdlcmRlbiwgb2huZSBkYXNzIHNpY2ggb3B0aXNjaCBldHdhcyBhZW5kZXJ0IOKAlCB1bmQgZWluIGgzIGluIGVpbmVyIEthcnRlIGRhcmZcbmFuZGVycyBhdXNzZWhlbiBhbHMgZWluIGgzIGFscyBBYnNjaG5pdHRzdGl0ZWwsIHdlaWwgZGllIFJvbGxlIGVudHNjaGVpZGV0LlxuXG5BY2h0IFJvbGxlbiwgZHJlaSBHZXdpY2h0ZSAoMzAwIFRleHQsIDUwMCBudXIgQnV0dG9ucywgNzAwIFN0cnVrdHVyKSwgdmllclxuVGV4dGZhcmJlbi4gV2FzIGhpZXIgbmljaHQgc3RlaHQsIGdpYnQgZXMgbmljaHQuXG5cbkRpZSBGYXJiZSBmb2xndCBkZXIgRkxBRUNIRSwgbmljaHQgZGVtIEJhdXRlaWw6XG5cbiAgV2Vpc3MgLyBUZXJ0aWFlciAgIFVlYmVyc2NocmlmdCAjMDAwMDAwICAgVGV4dCAjN0E3QTdBICAgT3ZlcmxpbmUgIzQ2YjFkZFxuICBIZWxsZ3JhdSAgICAgICAgICAgVWViZXJzY2hyaWZ0ICMwMDAwMDAgICBUZXh0ICMwMDAwMDAgICBPdmVybGluZSAjNDZiMWRkXG4gIE5hdnkgLyBkdW5rZWwgICAgICBVZWJlcnNjaHJpZnQgI2ZmZmZmZiAgIFRleHQgcmdiYSgyNTUsMjU1LDI1NSwuNzUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJsaW5lICM0NmIxZGRcblxuVWViZXJzY2hyaWZ0ZW4gc3RlaGVuIGFsc28gbmllIGluIFByaW1hcnktQmxhdSwgc29uZGVybiBzY2h3YXJ6IOKAlCB1bmQgYXVmXG5kdW5rbGVtIEdydW5kIHdlaXNzLiBEaWUgT3ZlcmxpbmUgaXN0IGRpZSBlaW56aWdlIGZhcmJpZ2UgWmVpbGUuXG5cbkRpZSBTZWxla3RvcmVuIGZ1ZXIgXCJoZWxsZ3JhdVwiIHVuZCBcImR1bmtlbFwiIHdlcmRlbiBhdXMgZGVyIFNla3Rpb25zLVJlZ2lzdHJ5IGluXG5sYXlvdXQvX3NlY3Rpb24tc3BhY2luZy5zY3NzIGVyemV1Z3Qg4oCUIGRpZXNlbGJlIExpc3RlLCBkaWUgc2Nob24gZGVuIHZlcnRpa2FsZW5cblJoeXRobXVzIHN0ZXVlcnQuIEtvbW10IGVpbmUgUGFsZXR0ZW5mYXJiZSBvZGVyIGVpbiBTZWt0aW9uc2Jsb2NrIGRhenUsIHdpcmQgc2llXG5kb3J0IGVpbmdldHJhZ2VuIHVuZCBnaWx0IGhpZXIgYXV0b21hdGlzY2ggbWl0LlxuXG5EZXNoYWxiIHdpcmQgZGllc2UgRGF0ZWkgWlVMRVRaVCBpbXBvcnRpZXJ0OiBzaWUgYnJhdWNodCBgJHNlY3Rpb25zYCwgdW5kIGRpZVxuUm9sbGVuIHNvbGxlbiB3YWVocmVuZCBkZXIgVW1zdGVsbHVuZyBkaWUgYWx0ZW4gRWluemVscmVnZWxuIGRlciBQYXR0ZXJuc1xudWViZXJzdGltbWVuLCBvaG5lIGRhc3MgZGFmdWVyICFpbXBvcnRhbnQgbm9ldGlnIHdhZXJlLlxuKi9cblxuLypcbiAqIERpZSBTa2FsYVxuICogLS0tLS0tLS0tXG4gKiBTZWNocyBTdHVmZW4uIGBsYXJnZWAgKDEuNjVyZW0pIGlzdCBiZXd1c3N0IG5pY2h0IGRhYmVpIOKAlCBkZXIgQWJzdGFuZCB6dVxuICogMS43NXJlbSB3YXIgbmljaHQgd2Focm5laG1iYXI7IGRhcyBQcmVzZXQgemVpZ3Qgc2VpdCBkZW0gMzAuMDcuMjAyNiBhbHMgQWxpYXNcbiAqIGViZW5mYWxscyBhdWYgMS43NXJlbSwgZGFtaXQgdm9yaGFuZGVuZXIgSW5oYWx0IG5pY2h0IGJyaWNodC5cbiAqL1xuJHR5cGUtb3ZlcmxpbmU6ICB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXgtc21hbGwpOyAgIC8vIDAuNzVyZW1cbiR0eXBlLW1ldGE6ICAgICAgdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7ICAgICAvLyAwLjg3NXJlbVxuJHR5cGUtYm9keTogICAgICB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLW1lZGl1bSk7ICAgIC8vIDEuMTI1cmVtXG4kdHlwZS1zdWJ0aXRsZTogIHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0taGVhZGxpbmUtZG90KTsgLy8gMS4yNXJlbVxuJHR5cGUtdGl0bGU6ICAgICBjbGFtcCgxLjM3NXJlbSwgY2FsYygxLjM3NXJlbSArICgoMXZ3IC0gMC40OHJlbSkgKiA4LjQxMzUpKSwgMS43NXJlbSk7XG4kdHlwZS1kaXNwbGF5OiAgIGNsYW1wKDEuNzVyZW0sICBjYWxjKDEuNzVyZW0gICsgKCgxdncgLSAwLjQ4cmVtKSAqIDE0LjAyKSksICAyLjVyZW0pO1xuXG4vKiBEaWUgZHJlaSBlcmxhdWJ0ZW4gR2V3aWNodGUuICovXG4kdHlwZS13ZWlnaHQtdGV4dDogICAzMDA7XG4kdHlwZS13ZWlnaHQtYnV0dG9uOiA1MDA7XG4kdHlwZS13ZWlnaHQtYm9sZDogICA3MDA7XG5cbi8qIERpZSB2aWVyIFRleHRmYXJiZW4uICovXG4kdHlwZS1pbms6ICAgICAgICB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmxhY2spOyAgICAvLyAjMDAwMDAwXG4kdHlwZS1pbmstbXV0ZWQ6ICB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tY29udHJhc3QpOyAvLyAjN0E3QTdBXG4kdHlwZS1pbmstaW52ZXJ0OiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7ICAgICAvLyAjZmZmZmZmXG4kdHlwZS1pbmstaW52ZXJ0LW11dGVkOiBoc2xhKDAsIDAlLCAxMDAlLCAuNzUpO1xuJHR5cGUtb3ZlcmxpbmUtbGlnaHQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1zZWNvbmRhcnkpOyAvLyAjNDZiMWRkXG4kdHlwZS1vdmVybGluZS1kYXJrOiAgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXNlY29uZGFyeSk7IC8vICM0NmIxZGRcblxuLypcbiAqIFdlbGNoZSBTZWt0aW9uc2ZhcmJlbiBhbHMgXCJoZWxsZ3JhdVwiIGdlbHRlbjogZG9ydCBzdGVodCBhdWNoIGRlciBGbGllc3N0ZXh0XG4gKiBzY2h3YXJ6LCB3ZWlsIGRhcyBnZWRlY2t0ZSBHcmF1IGF1ZiBHcmF1IG51ciAyLDg6MSBlcnJlaWNodC4gRGllIE5hbWVuIHNpbmRcbiAqIGRpZSBgY29sb3JgLUtlbm51bmdlbiBhdXMgJHNlY3Rpb25zLlxuICpcbiAqIFN0YW5kIDMwLjA3LjIwMjYgZ3JlaWZ0IGRhcyBub2NoIG5pcmdlbmRzOiBxdWF0ZXJuYXJ5IHdpcmQgYXVmIGRlciBTZWl0ZVxuICogYXVzc2NobGllc3NsaWNoIGFscyBUcmVubmxpbmllbi1GYXJiZSB2ZXJ3ZW5kZXQsIHNlcHRlbmFyeSBnYXIgbmljaHQuIERpZVxuICogUmVnZWwgc3RlaHQgaGllciB0cm90emRlbSwgZGFtaXQgZGllIEVudHNjaGVpZHVuZyBzY2hvbiBnZXRyb2ZmZW4gaXN0LCBmYWxsc1xuICogZWluZSBGbGFlY2hlIGdyYXUgZ2VzdHJpY2hlbiB3aXJkLlxuICovXG4kdHlwZS1ncmV5LWdyb3VuZHM6ICgncXVhdGVybmFyeScsICdzZXB0ZW5hcnknKTtcblxuLypcbiAqIFJvbGxlblxuICogLS0tLS0tICovXG5cbi50eXBlLW92ZXJsaW5lIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMTApO1xuICBjb2xvcjogJHR5cGUtb3ZlcmxpbmUtbGlnaHQ7XG4gIGZvbnQtc2l6ZTogJHR5cGUtb3ZlcmxpbmU7XG4gIGZvbnQtd2VpZ2h0OiAkdHlwZS13ZWlnaHQtYm9sZDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgbGV0dGVyLXNwYWNpbmc6IC4xMmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4udHlwZS1kaXNwbGF5IHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgY29sb3I6ICR0eXBlLWluaztcbiAgZm9udC1zaXplOiAkdHlwZS1kaXNwbGF5O1xuICBmb250LXdlaWdodDogJHR5cGUtd2VpZ2h0LXRleHQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xufVxuXG4udHlwZS10aXRsZSB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIGNvbG9yOiAkdHlwZS1pbms7XG4gIGZvbnQtc2l6ZTogJHR5cGUtdGl0bGU7XG4gIGZvbnQtd2VpZ2h0OiAkdHlwZS13ZWlnaHQtdGV4dDtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLnR5cGUtc3VidGl0bGUge1xuICBtYXJnaW4tdG9wOiAwO1xuICBjb2xvcjogJHR5cGUtaW5rO1xuICBmb250LXNpemU6ICR0eXBlLXN1YnRpdGxlO1xuICBmb250LXdlaWdodDogJHR5cGUtd2VpZ2h0LWJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi8qXG4gKiBLYXJ0ZW50aXRlbC4gU3RlaHQgYXVmICR0eXBlLW1ldGEgdW5kIGRhbWl0IGF1ZiBkZXJzZWxiZW4gR3JvZXNzZSB3aWUgZGVyXG4gKiBLYXJ0ZW50ZXh0IOKAlCBkaWUgSGllcmFyY2hpZSBpbiBkZXIgS2FydGUgdHJhZWd0IGFsbGVpbiBkYXMgR2V3aWNodCAoNzAwKSxcbiAqIG5pY2h0IGRpZSBHcm9lc3NlLiBTbyBibGVpYmVuIGRpZSBLYXJ0ZW4ga29tcGFrdCB1bmQgbWVociBkYXZvbiBwYXNzZW4gaW5zXG4gKiBSYXN0ZXIuIFZvcmhlciBsaWVmZW4gc2llIGF1c2VpbmFuZGVyOiAwLjg3NXJlbSBpbSBQb3N0cy1TbGlkZXIsIDEuMTI1cmVtIGltXG4gKiBDYXJkIEdyaWQgdW5kIGluIGRlbiBTcGFsdGVuLVBhdHRlcm4gKHZlcmVpbmhlaXRsaWNodCBhbSAyMS4wOC4yMDI2KS5cbiAqL1xuLnR5cGUtY2FyZC10aXRsZSB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIGNvbG9yOiAkdHlwZS1pbms7XG4gIGZvbnQtc2l6ZTogJHR5cGUtbWV0YTtcbiAgZm9udC13ZWlnaHQ6ICR0eXBlLXdlaWdodC1ib2xkO1xuICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4vKlxuICogRmxpZXNzdGV4dCBoYXQgYmV3dXNzdCBLRUlORSBLbGFzc2Ug4oCUIGVyIGlzdCBkZXIgR3J1bmR6dXN0YW5kIGRlciBTZWl0ZSB1bmRcbiAqIGtvbW10IGF1cyBkZXIgdGhlbWUuanNvbi4gYC50eXBlLWJvZHlgIGV4aXN0aWVydCBudXIgZnVlciBkaWUgRmFlbGxlLCBpbiBkZW5lblxuICogZWluIEVsZW1lbnQgc2VpbmVuIGdlZXJidGVuIFp1c3RhbmQgenVydWVja3NldHplbiBtdXNzLlxuICovXG4udHlwZS1ib2R5IHtcbiAgY29sb3I6ICR0eXBlLWluay1tdXRlZDtcbiAgZm9udC1zaXplOiAkdHlwZS1ib2R5O1xuICBmb250LXdlaWdodDogJHR5cGUtd2VpZ2h0LXRleHQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjc7XG59XG5cbi50eXBlLW1ldGEge1xuICBjb2xvcjogJHR5cGUtaW5rLW11dGVkO1xuICBmb250LXNpemU6ICR0eXBlLW1ldGE7XG4gIGZvbnQtd2VpZ2h0OiAkdHlwZS13ZWlnaHQtdGV4dDtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLypcbiAqIFphaGxlbiBpbiBLYXJ0ZW4gdW5kIFByb3plc3NzY2hyaXR0ZW4uIFZlcmVpbmhlaXRsaWNodCBkaWUgZnJ1ZWhlcmVuIDJyZW0gaW1cbiAqIENhcmQgR3JpZCB1bmQgMS4yNXJlbSBpbiBkZW4gUHJvY2VzcyBTdGVwcy5cbiAqL1xuLnR5cGUtbnVtZXJhbCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIGNvbG9yOiAkdHlwZS1vdmVybGluZS1kYXJrO1xuICBmb250LXNpemU6ICR0eXBlLXN1YnRpdGxlO1xuICBmb250LXdlaWdodDogJHR5cGUtd2VpZ2h0LWJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4vKlxuICogRmxhZWNoZW5hYmhhZW5naWdlIEZhcmJlblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQXVzIGRlciBTZWt0aW9ucy1SZWdpc3RyeSBlcnpldWd0LiBFcnN0IGhlbGxncmF1LCBkYW5uIGR1bmtlbCDigJQgZWluZSBTZWt0aW9uXG4gKiBrYW5uIG5pZSBiZWlkZXMgc2VpbiwgZGllIFJlaWhlbmZvbGdlIGlzdCBhbHNvIG51ciBMZXNiYXJrZWl0LlxuICovXG5cbi8qXG4gKiBIZWxsZ3JhdWUgRmxhZWNoZW46IEZsaWVzc3RleHQgd2lyZCBzY2h3YXJ6LCBhbGxlcyBhbmRlcmUgYmxlaWJ0LlxuICpcbiAqIEJld3Vzc3QgbnVyIGRpZSBSb2xsZW5rbGFzc2VuIHVuZCBrZWluIHBhdXNjaGFsZXMgYHBgOiBlaW4gZHVua2xlcyBCYXV0ZWlsXG4gKiBpbm5lcmhhbGIgZWluZXIgZ3JhdWVuIFNla3Rpb24gaGFldHRlIHNvbnN0IHNjaHdhcnplbiBzdGF0dCB3ZWlzc2VtIFRleHQg4oCUXG4gKiBkZXIgTmFjaGZhaHJlbnNlbGVrdG9yIGRlciBTZWt0aW9uIGlzdCBzcGV6aWZpc2NoZXIgYWxzIGRlciBkZXMgQmF1dGVpbHMuXG4gKiBLbGFzc2VubG9zZSBBYnNhZXR6ZSBiZWtvbW1lbiBkaWUgUmVnZWwsIHdlbm4gaWhyIEJhdXRlaWwgYXVmIGRpZSBSb2xsZW5cbiAqIHVtZ2VzdGVsbHQgd2lyZC5cbiAqL1xuQGVhY2ggJHNlY3Rpb24gaW4gJHNlY3Rpb25zIHtcbiAgQGlmIGluZGV4KCR0eXBlLWdyZXktZ3JvdW5kcywgbWFwLWdldCgkc2VjdGlvbiwgY29sb3IpKSB7XG4gICAgI3ttYXAtZ2V0KCRzZWN0aW9uLCBzZWwpfSB7XG4gICAgICAudHlwZS1ib2R5LFxuICAgICAgLnR5cGUtbWV0YSB7XG4gICAgICAgIGNvbG9yOiAkdHlwZS1pbms7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIER1bmtsZSBGbGFlY2hlbjogYWxsZXMgaW52ZXJ0aWVydCwgZGllIE92ZXJsaW5lIHdlY2hzZWx0IGF1ZiBIZWxsYmxhdS5cbkBlYWNoICRzZWN0aW9uIGluICRzZWN0aW9ucyB7XG4gIEBpZiBtYXAtZ2V0KCRzZWN0aW9uLCB0b25lKSA9PSBkYXJrIHtcbiAgICAje21hcC1nZXQoJHNlY3Rpb24sIHNlbCl9IHtcbiAgICAgIC50eXBlLWRpc3BsYXksXG4gICAgICAudHlwZS10aXRsZSxcbiAgICAgIC50eXBlLXN1YnRpdGxlLFxuICAgICAgLnR5cGUtY2FyZC10aXRsZSB7XG4gICAgICAgIGNvbG9yOiAkdHlwZS1pbmstaW52ZXJ0O1xuICAgICAgfVxuXG4gICAgICAudHlwZS1ib2R5LFxuICAgICAgLnR5cGUtbWV0YSB7XG4gICAgICAgIGNvbG9yOiAkdHlwZS1pbmstaW52ZXJ0LW11dGVkO1xuICAgICAgfVxuXG4gICAgICAudHlwZS1vdmVybGluZSB7XG4gICAgICAgIGNvbG9yOiAkdHlwZS1vdmVybGluZS1kYXJrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKlxuICogVWViZXJzY2hyaWZ0ZW4tUmh5dGhtdXNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBNZWhyIEx1ZnQgbmFjaCBvYmVuIGFscyBuYWNoIHVudGVuLiBFaW5lIFVlYmVyc2NocmlmdCBnZWhvZXJ0IHp1IGRlbSwgd2FzXG4gKiBpaHIgZm9sZ3Qg4oCUIGJlaSBnbGVpY2hlbSBBYnN0YW5kIGF1ZiBiZWlkZW4gU2VpdGVuIGhhZW5ndCBzaWUgaW4gZGVyIE1pdHRlXG4gKiB1bmQgZGVyIExlc2VyIG11c3MgcmF0ZW4sIHdvcmF1ZiBzaWUgc2ljaCBiZXppZWh0LiBWb3JoZXIga2FtIGRlciBBYnN0YW5kXG4gKiBhdXNzY2hsaWVzc2xpY2ggYXVzIGRlbSBCbG9ja2Fic3RhbmQgZGVyIHRoZW1lLmpzb246IDIwcHgsIG9iZW4gd2llIHVudGVuLlxuICpcbiAqIERpZSBXZXJ0ZSBzdGVoZW4gaW4gbGF5b3V0L19zZWN0aW9uLXNwYWNpbmcsIHdlaWwgc2llIGF1Y2ggZG9ydCBnZWJyYXVjaHRcbiAqIHdlcmRlbiDigJQgZnVlciBVZWJlcnNjaHJpZnRlbiwgZGllIHNlbGJzdCBlaW5lIFNla3Rpb24gc2luZC5cbiAqXG4gKiBTcGV6aWZpdGFldDogZGVyIEJsb2NrYWJzdGFuZCBkZXMgS2VybnMgc3RlaHQgYXVmXG4gKiBgOnJvb3QgOndoZXJlKC5pcy1sYXlvdXQtY29uc3RyYWluZWQpID4gKmAgPSAoMCwxLDApIHVuZCB3aXJkIE5BQ0hcbiAqIGJ1aWxkL2FwcC5jc3MgYXVzZ2VsaWVmZXJ0LCBnZXdpbm50IGFsc28gamVkZW4gR2xlaWNoc3RhbmQuIGBtYWluYCBwbHVzXG4gKiBgLndwLWJsb2NrLWhlYWRpbmdgIGVyZ2lidCAoMCwxLDIpIHVuZCByZWljaHQgZGFtaXQgYXVzLlxuICpcbiAqIEJld3Vzc3QgbnVyIGAud3AtYmxvY2staGVhZGluZ2AsIGFsc28gZGVyIEtlcm4tQmxvY2s6IEthcnRlbnRpdGVsLFxuICogU2xpZGVyLVRpdGVsIHVuZCBkaWUgVWViZXJzY2hyaWZ0ZW4gZGVyIGVpZ2VuZW4gQmxvY2tzIGJyaW5nZW4gaWhyZVxuICogQWJzdGFlbmRlIHNlbGJzdCBtaXQuXG4gKi9cblxuLypcbiAqIE5hY2ggb2JlbjogZGllIHZvbGxlIFBvcnRpb24g4oCUIGFiZXIgbnVyLCB3ZW5uIGRhdm9yIGVjaHRlciBJbmhhbHQgc3RlaHQuXG4gKlxuICogQmV3dXNzdCBhbHMgQXVmemFlaGx1bmcgZGVzc2VuLCB3YXMgZGF2b3Igc3RlaGVuIERBUkYsIHN0YXR0IGFscyBBdXNuYWhtZS1cbiAqIGxpc3RlOiBlaW5lIFVlYmVyc2NocmlmdCBlcm9lZmZuZXQgZWluZW4gbmV1ZW4gQWJzY2huaXR0LCB3ZW5uIGVpbiBBYnNhdHosXG4gKiBlaW5lIExpc3RlLCBlaW4gQmlsZCBvZGVyIGVpbmUgVGFiZWxsZSB2b3JhdXNnZWh0LiBGb2xndCBzaWUgZGFnZWdlbiBlaW5lbVxuICogVHJlbm5lciwgZWluZW0gQWJzdGFuZHNoYWx0ZXIgb2RlciBlaW5lciBhbmRlcmVuIFVlYmVyc2NocmlmdCwgZ2Vob2VydCBzaWVcbiAqIHp1IGRlbSwgd2FzIGRhdm9yIHN0ZWh0IOKAlCBpbiBkZW4gS2VubnphaGxlbi1LYWNoZWxuIGV0d2Egc3RlaHQgc2llIGFsc1xuICogQmVzY2hyaWZ0dW5nIHVudGVyIGRlciBncm9zc2VuIFphaGwgdW5kIGRlcmVuIFRyZW5ubGluaWUsIGRvcnQgd2FlcmVuIDQ4cHhcbiAqIGVpbiBCcnVjaCBtaXR0ZW4gaW4gZGVyIEthY2hlbC5cbiAqL1xubWFpbiA6aXMocCwgdWwsIG9sLCBkbCwgZmlndXJlLCB0YWJsZSwgYmxvY2txdW90ZSwgLndwLWJsb2NrLWJ1dHRvbnMsIC53cC1ibG9jay1lbWJlZClcbiAgKyA6aXMoaDEsIGgyLCBoMywgaDQsIGg1LCBoNikud3AtYmxvY2staGVhZGluZyB7XG4gIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0taGVhZGluZy1zcGFjZS1iZWZvcmUpO1xufVxuXG4vKlxuICogTmFjaCB1bnRlbjogd2VuaWcuIERlciBXZXJ0IG11c3MgYW0gTkFDSEZPTEdFUiBzdGVoZW4sIG5pY2h0IG51ciBhbiBkZXJcbiAqIFVlYmVyc2NocmlmdCDigJQgYmVuYWNoYmFydGUgdmVydGlrYWxlIE1hcmdpbnMgZmFsbGVuIHp1c2FtbWVuLCB1bmQgZGVyXG4gKiBCbG9ja2Fic3RhbmQgZGVzIEtlcm5zICgyMHB4KSBhbSBuYWVjaHN0ZW4gRWxlbWVudCBpc3QgZ3JvZXNzZXIgYWxzIGRpZXNlXG4gKiAxNnB4LCBoYWV0dGUgYWxzbyBnZXdvbm5lbi5cbiAqL1xubWFpbiA6aXMoaDEsIGgyLCBoMywgaDQsIGg1LCBoNikud3AtYmxvY2staGVhZGluZyB7XG4gIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLWhlYWRpbmctc3BhY2UtYWZ0ZXIpO1xufVxuXG5tYWluIDppcyhoMSwgaDIsIGgzLCBoNCwgaDUsIGg2KS53cC1ibG9jay1oZWFkaW5nICsgKiB7XG4gIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0taGVhZGluZy1zcGFjZS1hZnRlcik7XG59XG5cbi8qXG4gKiBTdGVodCBkaWUgVWViZXJzY2hyaWZ0IGdhbnogb2JlbiBpbiBpaHJlbSBLYXN0ZW4sIGtvbW10IGRpZSBMdWZ0IHNjaG9uIGF1c1xuICogZGVtIFNla3Rpb25zLVBhZGRpbmcg4oCUIHNvbnN0IHN0dWVuZGUgc2llIGRvcHBlbHQgdGllZi5cbiAqL1xubWFpbiA6aXMoaDEsIGgyLCBoMywgaDQsIGg1LCBoNikud3AtYmxvY2staGVhZGluZzpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi1ibG9jay1zdGFydDogMDtcbn1cblxuLypcbiAqIEF1c25haG1lIGZ1ZXIgZGllIG9iZXJzdGUgRWJlbmUuXG4gKlxuICogWndpc2NoZW4gendlaSBUb3AtTGV2ZWwtU2VrdGlvbmVuIGtvbW10IGRlciBBYnN0YW5kIGF1c3NjaGxpZXNzbGljaCBhdXNcbiAqIFBhZGRpbmcgKGxheW91dC9fc2VjdGlvbi1zcGFjaW5nKSDigJQgbnVyIHNvIHN0b3NzZW4gendlaSBGYXJiZmxhZWNoZW4gb2huZVxuICogd2Vpc3NlbiBTdHJlaWZlbiBhbmVpbmFuZGVyLiBEaWUgUmVnZWwgb2JlbiB3dWVyZGUgZG9ydCBlaW4gbWFyZ2luXG4gKiB6dXJ1ZWNrYnJpbmdlbiB1bmQgZ2VuYXUgZGllc2VuIFN0cmVpZmVuIGVyemV1Z2VuOyBnZW1lc3NlbiB3YXJlbiBlcyAxNnB4XG4gKiBhdWYgZGVyIFN0YXJ0c2VpdGUuIEZ1ZXIgZGVuIEZhbGwgXCJVZWJlcnNjaHJpZnQgaXN0IHNlbGJzdCBlaW5lIFNla3Rpb25cIlxuICogZ2lidCBlcyBpbiBfc2VjdGlvbi1zcGFjaW5nIGVpbmUgZWlnZW5lIFBhZGRpbmctUmVnZWwuXG4gKi9cbm1haW4gPiAuaXMtbGF5b3V0LWNvbnN0cmFpbmVkID4gOmlzKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpLndwLWJsb2NrLWhlYWRpbmcsXG5tYWluID4gLmlzLWxheW91dC1jb25zdHJhaW5lZCA+IDppcyhoMSwgaDIsIGgzLCBoNCwgaDUsIGg2KS53cC1ibG9jay1oZWFkaW5nICsgKiB7XG4gIG1hcmdpbi1ibG9jazogMDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/