/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./assets/styles/app.scss ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************/
@font-face {
  font-family: "MARSO";
  src: url(/build/fonts/MARSO.30a842b0.woff2) format("woff2"), url(/build/fonts/MARSO.0c9c8dae.ttf) format("truetype"), url(/build/fonts/MARSO.ae04813b.woff) format("woff"), url(/build/images/MARSO.ce2cf775.svg#MARSO) format("svg");
  font-weight: normal;
  font-style: normal;
  font-display: block;
}
[class^=marso-icon-], [class*=" marso-icon-"] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: "MARSO" !important;
  speak: never;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.marso-icon-x-twitter:before {
  content: "\e96c";
}
.marso-icon-spare-wheel:before {
  content: "\e96b";
}
.marso-icon-file-signature-solid:before {
  content: "\e96d";
}
.marso-icon-screw-nut-3d:before {
  content: "\e963";
}
.marso-icon-wheel-3d:before {
  content: "\e969";
}
.marso-icon-DOT:before {
  content: "\e950";
}
.marso-icon-retread:before {
  content: "\e951";
}
.marso-icon-wheel_service:before {
  content: "\e94f";
}
.marso-icon-sq_right:before {
  content: "\e94d";
}
.marso-icon-sq_wrong:before {
  content: "\e94e";
}
.marso-icon-minus:before {
  content: "\e949";
}
.marso-icon-plus1:before {
  content: "\e94a";
}
.marso-icon-right:before {
  content: "\e94b";
}
.marso-icon-wrong:before {
  content: "\e94c";
}
.marso-icon-coll:before {
  content: "\e90c";
}
.marso-icon-tomlo_nelkul:before {
  content: "\e945";
}
.marso-icon-forklift:before {
  content: "\e946";
}
.marso-icon-kart02:before {
  content: "\e902";
}
.marso-icon-all_season:before {
  content: "\e903";
}
.marso-icon-filled_truck:before {
  content: "\e904";
}
.marso-icon-notification:before {
  content: "\e905";
}
.marso-icon-summer:before {
  content: "\e906";
}
.marso-icon-winter:before {
  content: "\e907";
}
.marso-icon-SHOP-kosr:before {
  content: "\e908";
}
.marso-icon-kle_white:before {
  content: "\e900";
  color: #fff;
}
.marso-icon-rim-fringe-protector:before {
  content: "\e901";
}
.marso-icon-account:before {
  content: "\e909";
}
.marso-icon-address:before {
  content: "\e90a";
}
.marso-icon-agri:before {
  content: "\e90b";
}
.marso-icon-caffee:before {
  content: "\e90d";
}
.marso-icon-car:before {
  content: "\e90e";
}
.marso-icon-car_service:before {
  content: "\e90f";
}
.marso-icon-cargo:before {
  content: "\e910";
}
.marso-icon-cargo21:before {
  content: "\e911";
}
.marso-icon-cargo2:before {
  content: "\e912";
}
.marso-icon-cetelem_01:before {
  content: "\e913";
}
.marso-icon-cetelem_02:before {
  content: "\e914";
}
.marso-icon-clock:before {
  content: "\e915";
}
.marso-icon-creditcard:before {
  content: "\e916";
}
.marso-icon-customer_Service:before {
  content: "\e917";
}
.marso-icon-delivery:before {
  content: "\e918";
}
.marso-icon-discount:before {
  content: "\e919";
}
.marso-icon-download:before {
  content: "\e91a";
}
.marso-icon-dump:before {
  content: "\e91b";
}
.marso-icon-energy_label:before {
  content: "\e91c";
}
.marso-icon-expert:before {
  content: "\e91d";
}
.marso-icon-facebook:before {
  content: "\e91e";
}
.marso-icon-fuel_label:before {
  content: "\e91f";
}
.marso-icon-gift:before {
  content: "\e920";
}
.marso-icon-hamburger_menu:before {
  content: "\e922";
}
.marso-icon-hubcaps .path1:before {
  content: "\e923";
  color: rgb(247, 247, 247);
}
.marso-icon-hubcaps .path2:before {
  content: "\e924";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path3:before {
  content: "\e925";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path4:before {
  content: "\e926";
  margin-left: -1em;
  color: rgb(51, 51, 51);
}
.marso-icon-hubcaps .path5:before {
  content: "\e927";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path6:before {
  content: "\e928";
  margin-left: -1em;
  color: rgb(51, 51, 51);
}
.marso-icon-hubcaps .path7:before {
  content: "\e929";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path8:before {
  content: "\e92a";
  margin-left: -1em;
  color: rgb(51, 51, 51);
}
.marso-icon-hubcaps .path9:before {
  content: "\e92b";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path10:before {
  content: "\e92c";
  margin-left: -1em;
  color: rgb(51, 51, 51);
}
.marso-icon-hubcaps .path11:before {
  content: "\e92d";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path12:before {
  content: "\e92e";
  margin-left: -1em;
  color: rgb(230, 230, 230);
}
.marso-icon-hubcaps .path13:before {
  content: "\e92f";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path14:before {
  content: "\e930";
  margin-left: -1em;
  color: rgb(230, 230, 230);
}
.marso-icon-hubcaps .path15:before {
  content: "\e931";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path16:before {
  content: "\e932";
  margin-left: -1em;
  color: rgb(230, 230, 230);
}
.marso-icon-hubcaps .path17:before {
  content: "\e933";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path18:before {
  content: "\e934";
  margin-left: -1em;
  color: rgb(230, 230, 230);
}
.marso-icon-hubcaps .path19:before {
  content: "\e935";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path20:before {
  content: "\e936";
  margin-left: -1em;
  color: rgb(230, 230, 230);
}
.marso-icon-hubcaps .path21:before {
  content: "\e937";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path22:before {
  content: "\e938";
  margin-left: -1em;
  color: rgb(230, 230, 230);
}
.marso-icon-hubcaps .path23:before {
  content: "\e939";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path24:before {
  content: "\e93a";
  margin-left: -1em;
  color: rgb(230, 230, 230);
}
.marso-icon-hubcaps .path25:before {
  content: "\e93b";
  margin-left: -1em;
  color: rgb(0, 0, 0);
}
.marso-icon-hubcaps .path26:before {
  content: "\e93c";
  margin-left: -1em;
  color: rgb(230, 230, 230);
}
.marso-icon-info:before {
  content: "\e93d";
}
.marso-icon-location:before {
  content: "\e93e";
}
.marso-icon-mail:before {
  content: "\e93f";
}
.marso-icon-money:before {
  content: "\e940";
}
.marso-icon-money_transfer:before {
  content: "\e941";
}
.marso-icon-moto:before {
  content: "\e942";
}
.marso-icon-news:before {
  content: "\e943";
}
.marso-icon-noise_label:before {
  content: "\e944";
}
.marso-icon-on_map:before {
  content: "\e953";
}
.marso-icon-open:before {
  content: "\e954";
}
.marso-icon-package:before {
  content: "\e955";
}
.marso-icon-phone:before {
  content: "\e956";
}
.marso-icon-promotion_gift:before {
  content: "\e957";
}
.marso-icon-promotions:before {
  content: "\e958";
}
.marso-icon-psg:before {
  content: "\e959";
}
.marso-icon-psg1:before {
  content: "\e95a";
}
.marso-icon-pumpkin:before {
  content: "\e95b";
}
.marso-icon-rain_label:before {
  content: "\e95c";
}
.marso-icon-refresh:before {
  content: "\e95d";
}
.marso-icon-reinforced:before {
  content: "\e95e";
}
.marso-icon-runflat:before {
  content: "\e95f";
}
.marso-icon-search:before {
  content: "\e960";
}
.marso-icon-service:before {
  content: "\e961";
}
.marso-icon-shopping_cart:before {
  content: "\e962";
}
.marso-icon-susp .path1:before {
  content: "\e964";
}
.marso-icon-susp .path2:before {
  content: "\e965";
  margin-left: -1em;
}
.marso-icon-susp .path3:before {
  content: "\e966";
  margin-left: -1em;
}
.marso-icon-susp .path4:before {
  content: "\e967";
  margin-left: -1em;
}
.marso-icon-susp .path5:before {
  content: "\e968";
  margin-left: -1em;
}
.marso-icon-SUV:before {
  content: "\e97e";
}
.marso-icon-SUV01:before {
  content: "\e97f";
}
.marso-icon-suv2:before {
  content: "\e980";
}
.marso-icon-test_winner:before {
  content: "\e981";
}
.marso-icon-timer:before {
  content: "\e982";
}
.marso-icon-toy:before {
  content: "\e983";
}
.marso-icon-trash:before {
  content: "\e984";
}
.marso-icon-truck:before {
  content: "\e985";
}
.marso-icon-tyre:before {
  content: "\e986";
}
.marso-icon-tyre_date:before {
  content: "\e987";
}
.marso-icon-tyre_insurance:before {
  content: "\e988";
}
.marso-icon-tyre_safe:before {
  content: "\e989";
}
.marso-icon-tyre_service:before {
  content: "\e98a";
}
.marso-icon-tyrestack:before {
  content: "\e98b";
}
.marso-icon-UHP:before {
  content: "\e98c";
}
.marso-icon-wheel:before {
  content: "\e98d";
}
.marso-icon-wifi:before {
  content: "\e98e";
}
.marso-icon-document-edit:before {
  content: "\e948";
}
.marso-icon-flickr:before {
  content: "\e921";
}
.marso-icon-folder-upload:before {
  content: "\e96a";
}
.marso-icon-files:before {
  content: "\e952";
}
.marso-icon-eye:before {
  content: "\e947";
}
.marso-icon-camera:before {
  content: "\e96e";
}
.marso-icon-plus:before {
  content: "\f067";
}
.marso-icon-search1:before {
  content: "\f002";
}
.marso-icon-user:before {
  content: "\f007";
}
.marso-icon-check:before {
  content: "\f00c";
}
.marso-icon-close:before {
  content: "\f00d";
}
.marso-icon-remove:before {
  content: "\f00d";
}
.marso-icon-times:before {
  content: "\f00d";
}
.marso-icon-lock:before {
  content: "\f023";
}
.marso-icon-pencil:before {
  content: "\f040";
}
.marso-icon-chevron-left:before {
  content: "\f053";
}
.marso-icon-chevron-right:before {
  content: "\f054";
}
.marso-icon-plus-circle:before {
  content: "\f055";
}
.marso-icon-minus-circle:before {
  content: "\f056";
}
.marso-icon-times-circle:before {
  content: "\f057";
}
.marso-icon-check-circle:before {
  content: "\f058";
}
.marso-icon-info-circle:before {
  content: "\f05a";
}
.marso-icon-exclamation-circle:before {
  content: "\f06a";
}
.marso-icon-exclamation-triangle:before {
  content: "\f071";
}
.marso-icon-warning:before {
  content: "\f071";
}
.marso-icon-chevron-up:before {
  content: "\f077";
}
.marso-icon-chevron-down:before {
  content: "\f078";
}
.marso-icon-upload:before {
  content: "\f093";
}
.marso-icon-square-o:before {
  content: "\f096";
}
.marso-icon-twitter:before {
  content: "\f099";
}
.marso-icon-square:before {
  content: "\f0c8";
}
.marso-icon-caret-down:before {
  content: "\f0d7";
}
.marso-icon-caret-up:before {
  content: "\f0d8";
}
.marso-icon-caret-left:before {
  content: "\f0d9";
}
.marso-icon-caret-right:before {
  content: "\f0da";
}
.marso-icon-sort:before {
  content: "\f0dc";
}
.marso-icon-unsorted:before {
  content: "\f0dc";
}
.marso-icon-sort-desc:before {
  content: "\f0dd";
}
.marso-icon-sort-down:before {
  content: "\f0dd";
}
.marso-icon-sort-asc:before {
  content: "\f0de";
}
.marso-icon-sort-up:before {
  content: "\f0de";
}
.marso-icon-envelope:before {
  content: "\f0e0";
}
.marso-icon-angle-down:before {
  content: "\f107";
}
.marso-icon-circle-o:before {
  content: "\f10c";
}
.marso-icon-circle:before {
  content: "\f111";
}
.marso-icon-file-text:before {
  content: "\f15c";
}
.marso-icon-youtube:before {
  content: "\f167";
}
.marso-icon-youtube-play:before {
  content: "\f16a";
}
.marso-icon-instagram:before {
  content: "\f16d";
}
.marso-icon-recycle:before {
  content: "\f1b8";
}
/* ! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com */
/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/
*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: currentColor; /* 2 */
}
::before,
::after {
  --tw-content: '';
}
/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
*/
html {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: -apple-system, BlinkMacSystemFont, Montserrat, Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
}
/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/
body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}
/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/
hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}
/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}
/*
Remove the default font size and weight for headings.
*/
h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}
/*
Reset links to optimize for opt-in styling instead of opt-out.
*/
a {
  color: inherit;
  text-decoration: inherit;
}
/*
Add the correct font weight in Edge and Safari.
*/
b,
strong {
  font-weight: bolder;
}
/*
1. Use the user's configured `mono` font family by default.
2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, "Fira Code", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
  font-size: 1em; /* 2 */
}
/*
Add the correct font size in all browsers.
*/
small {
  font-size: 80%;
}
/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}
/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/
table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}
/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/
button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}
/*
Remove the inheritance of text transform in Edge and Firefox.
*/
button,
select {
  text-transform: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/
button,
[type='button'],
[type='reset'],
[type='submit'] {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}
/*
Use the modern Firefox focus style for all focusable elements.
*/
:-moz-focusring {
  outline: auto;
}
/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/
:-moz-ui-invalid {
  box-shadow: none;
}
/*
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
  vertical-align: baseline;
}
/*
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}
/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}
/*
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
  -webkit-appearance: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}
/*
Add the correct display in Chrome and Safari.
*/
summary {
  display: list-item;
}
/*
Removes the default spacing and border for appropriate elements.
*/
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}
fieldset {
  margin: 0;
  padding: 0;
}
legend {
  padding: 0;
}
ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}
/*
Prevent resizing textareas horizontally by default.
*/
textarea {
  resize: vertical;
}
/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/
input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}
input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}
/*
Set the default cursor for buttons.
*/
button,
[role="button"] {
  cursor: pointer;
}
/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
  cursor: default;
}
/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/
img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}
/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/
img,
video {
  max-width: 100%;
  height: auto;
}
/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden] {
  display: none;
}
/* stylelint-disable-next-line no-invalid-position-at-import-rule */
body[data-env=test]::before {
    display: block;
    position: fixed;
    right: 0;
    top: 0;
    height: 100%;
    content: "TEST SITE";
    opacity: 0.7;
    background-color: orange;
    color: #fff;
    font-weight: bold;
    text-align: center;
    writing-mode: vertical-rl;
  }
*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
}
::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
}
/* stylelint-disable-next-line no-invalid-position-at-import-rule */
.visible {
  visibility: visible;
}
.invisible {
  visibility: hidden;
}
.static {
  position: static;
}
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.inset-0 {
  inset: 0px;
}
.-bottom-8 {
  bottom: -2rem;
}
.-right-8 {
  right: -2rem;
}
.bottom-3\/4 {
  bottom: 75%;
}
.bottom-4 {
  bottom: 1rem;
}
.bottom-full {
  bottom: 100%;
}
.left-0 {
  left: 0px;
}
.left-auto {
  left: auto;
}
.left-full {
  left: 100%;
}
.right-0 {
  right: 0px;
}
.right-4 {
  right: 1rem;
}
.right-\[17px\] {
  right: 17px;
}
.right-full {
  right: 100%;
}
.top-0 {
  top: 0px;
}
.top-1\/2 {
  top: 50%;
}
.top-\[17px\] {
  top: 17px;
}
.top-full {
  top: 100%;
}
.-z-10 {
  z-index: -10;
}
.z-10 {
  z-index: 10;
}
.z-20 {
  z-index: 20;
}
.z-50 {
  z-index: 50;
}
.z-\[99999\] {
  z-index: 99999;
}
.order-first {
  order: -9999;
}
.col-start-1 {
  grid-column-start: 1;
}
.row-start-1 {
  grid-row-start: 1;
}
.float-right {
  float: right;
}
.float-left {
  float: left;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.my-2 {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}
.my-4 {
  margin-top: 1rem;
  margin-bottom: 1rem;
}
.my-5 {
  margin-top: 1.25rem;
  margin-bottom: 1.25rem;
}
.-ml-2 {
  margin-left: -0.5rem;
}
.mb-2 {
  margin-bottom: 0.5rem;
}
.mb-3 {
  margin-bottom: 0.75rem;
}
.mb-4 {
  margin-bottom: 1rem;
}
.mb-5 {
  margin-bottom: 1.25rem;
}
.mb-7 {
  margin-bottom: 1.75rem;
}
.ml-auto {
  margin-left: auto;
}
.mr-2 {
  margin-right: 0.5rem;
}
.mr-4 {
  margin-right: 1rem;
}
.mt-1 {
  margin-top: 0.25rem;
}
.mt-2 {
  margin-top: 0.5rem;
}
.mt-4 {
  margin-top: 1rem;
}
.mt-5 {
  margin-top: 1.25rem;
}
.mt-8 {
  margin-top: 2rem;
}
.block {
  display: block;
}
.inline-block {
  display: inline-block;
}
.inline {
  display: inline;
}
.flex {
  display: flex;
}
.table {
  display: table;
}
.table-header-group {
  display: table-header-group;
}
.\!grid {
  display: grid !important;
}
.grid {
  display: grid;
}
.hidden {
  display: none;
}
.\!h-16 {
  height: 4rem !important;
}
.h-0 {
  height: 0px;
}
.h-10 {
  height: 2.5rem;
}
.h-12 {
  height: 3rem;
}
.h-14 {
  height: 3.5rem;
}
.h-6 {
  height: 1.5rem;
}
.h-8 {
  height: 2rem;
}
.h-\[48px\] {
  height: 48px;
}
.h-\[50px\] {
  height: 50px;
}
.h-full {
  height: 100%;
}
.max-h-48 {
  max-height: 12rem;
}
.max-h-80 {
  max-height: 20rem;
}
.min-h-screen {
  min-height: 100vh;
}
.w-0 {
  width: 0px;
}
.w-10 {
  width: 2.5rem;
}
.w-12 {
  width: 3rem;
}
.w-14 {
  width: 3.5rem;
}
.w-32 {
  width: 8rem;
}
.w-6 {
  width: 1.5rem;
}
.w-60 {
  width: 15rem;
}
.w-8 {
  width: 2rem;
}
.w-80 {
  width: 20rem;
}
.w-96 {
  width: 24rem;
}
.w-auto {
  width: auto;
}
.w-full {
  width: 100%;
}
.w-max {
  width: -moz-max-content;
  width: max-content;
}
.min-w-full {
  min-width: 100%;
}
.min-w-max {
  min-width: -moz-max-content;
  min-width: max-content;
}
.max-w-full {
  max-width: 100%;
}
.flex-auto {
  flex: 1 1 auto;
}
.flex-none {
  flex: none;
}
.grow {
  flex-grow: 1;
}
.table-auto {
  table-layout: auto;
}
.-translate-x-4 {
  --tw-translate-x: -1rem;
  transform: translate(-1rem, var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.-translate-y-1\/2 {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), -50%) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.-translate-y-8 {
  --tw-translate-y: -2rem;
  transform: translate(var(--tw-translate-x), -2rem) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-4 {
  --tw-translate-x: 1rem;
  transform: translate(1rem, var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-6 {
  --tw-translate-x: 1.5rem;
  transform: translate(1.5rem, var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-0 {
  --tw-translate-y: 0px;
  transform: translate(var(--tw-translate-x), 0px) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.rotate-180 {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(180deg) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-100 {
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(1) scaleY(1);
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform-gpu {
  transform: translate3d(var(--tw-translate-x), var(--tw-translate-y), 0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.cursor-default {
  cursor: default;
}
.cursor-grab {
  cursor: grab;
}
.cursor-pointer {
  cursor: pointer;
}
.resize {
  resize: both;
}
.grid-flow-row {
  grid-auto-flow: row;
}
.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-\[auto\2c 1fr\2c 1fr\] {
  grid-template-columns: auto 1fr 1fr;
}
.\!flex-row {
  flex-direction: row !important;
}
.flex-row {
  flex-direction: row;
}
.flex-col {
  flex-direction: column;
}
.flex-col-reverse {
  flex-direction: column-reverse;
}
.flex-wrap {
  flex-wrap: wrap;
}
.flex-nowrap {
  flex-wrap: nowrap;
}
.content-center {
  align-content: center;
}
.items-start {
  align-items: flex-start;
}
.\!items-center {
  align-items: center !important;
}
.items-center {
  align-items: center;
}
.items-stretch {
  align-items: stretch;
}
.justify-start {
  justify-content: flex-start;
}
.justify-end {
  justify-content: flex-end;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.gap-0 {
  gap: 0px;
}
.gap-1 {
  gap: 0.25rem;
}
.gap-2 {
  gap: 0.5rem;
}
.gap-4 {
  gap: 1rem;
}
.gap-5 {
  gap: 1.25rem;
}
.gap-6 {
  gap: 1.5rem;
}
.gap-8 {
  gap: 2rem;
}
.gap-x-4 {
  -moz-column-gap: 1rem;
       column-gap: 1rem;
}
.gap-x-7 {
  -moz-column-gap: 1.75rem;
       column-gap: 1.75rem;
}
.gap-y-px {
  row-gap: 1px;
}
.space-x-4 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-x-reverse: 0;
  margin-right: calc(1rem * 0);
  margin-right: calc(1rem * var(--tw-space-x-reverse));
  margin-left: calc(1rem * calc(1 - 0));
  margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
}
.space-y-4 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1rem * calc(1 - 0));
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1rem * 0);
  margin-bottom: calc(1rem * var(--tw-space-y-reverse));
}
.divide-y > :not([hidden]) ~ :not([hidden]) {
  --tw-divide-y-reverse: 0;
  border-top-width: calc(1px * calc(1 - 0));
  border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
  border-bottom-width: calc(1px * 0);
  border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
}
.divide-gray > :not([hidden]) ~ :not([hidden]) {
  --tw-divide-opacity: 1;
  border-color: rgb(225 225 225 / 1);
  border-color: rgb(225 225 225 / var(--tw-divide-opacity));
}
.place-self-center {
  place-self: center;
}
.self-end {
  align-self: flex-end;
}
.self-center {
  align-self: center;
}
.justify-self-center {
  justify-self: center;
}
.overflow-hidden {
  overflow: hidden;
}
.overflow-visible {
  overflow: visible;
}
.overflow-y-auto {
  overflow-y: auto;
}
.overflow-x-scroll {
  overflow-x: scroll;
}
.overflow-y-scroll {
  overflow-y: scroll;
}
.whitespace-nowrap {
  white-space: nowrap;
}
.rounded {
  border-radius: 0.25rem;
}
.rounded-full {
  border-radius: 9999px;
}
.rounded-lg {
  border-radius: 0.5rem;
}
.rounded-md {
  border-radius: 0.375rem;
}
.rounded-none {
  border-radius: 0px;
}
.rounded-xl {
  border-radius: 0.75rem;
}
.\!rounded-l-none {
  border-top-left-radius: 0px !important;
  border-bottom-left-radius: 0px !important;
}
.\!rounded-r-none {
  border-top-right-radius: 0px !important;
  border-bottom-right-radius: 0px !important;
}
.rounded-b-md {
  border-bottom-right-radius: 0.375rem;
  border-bottom-left-radius: 0.375rem;
}
.rounded-t-lg {
  border-top-left-radius: 0.5rem;
  border-top-right-radius: 0.5rem;
}
.rounded-t-none {
  border-top-left-radius: 0px;
  border-top-right-radius: 0px;
}
.border {
  border-width: 1px;
}
.border-0 {
  border-width: 0px;
}
.border-1 {
  border-width: 1px;
}
.border-2 {
  border-width: 2px;
}
.border-8 {
  border-width: 8px;
}
.border-b {
  border-bottom-width: 1px;
}
.border-b-1 {
  border-bottom-width: 1px;
}
.border-b-2 {
  border-bottom-width: 2px;
}
.border-b-3 {
  border-bottom-width: 3px;
}
.border-l-1 {
  border-left-width: 1px;
}
.border-l-8 {
  border-left-width: 8px;
}
.border-r-1 {
  border-right-width: 1px;
}
.border-t {
  border-top-width: 1px;
}
.border-t-1 {
  border-top-width: 1px;
}
.border-t-2 {
  border-top-width: 2px;
}
.border-double {
  border-style: double;
}
.border-\[\#00000061\] {
  border-color: #00000061;
}
.border-\[\#bbbbbb\] {
  --tw-border-opacity: 1;
  border-color: rgb(187 187 187 / 1);
  border-color: rgb(187 187 187 / var(--tw-border-opacity));
}
.border-blue {
  --tw-border-opacity: 1;
  border-color: rgb(69 82 162 / 1);
  border-color: rgb(69 82 162 / var(--tw-border-opacity));
}
.border-blue-light {
  --tw-border-opacity: 1;
  border-color: rgb(94 106 186 / 1);
  border-color: rgb(94 106 186 / var(--tw-border-opacity));
}
.border-gray {
  --tw-border-opacity: 1;
  border-color: rgb(225 225 225 / 1);
  border-color: rgb(225 225 225 / var(--tw-border-opacity));
}
.border-gray-dark {
  --tw-border-opacity: 1;
  border-color: rgb(146 146 146 / 1);
  border-color: rgb(146 146 146 / var(--tw-border-opacity));
}
.border-gray-darker {
  --tw-border-opacity: 1;
  border-color: rgb(74 74 74 / 1);
  border-color: rgb(74 74 74 / var(--tw-border-opacity));
}
.border-green {
  --tw-border-opacity: 1;
  border-color: rgb(85 172 78 / 1);
  border-color: rgb(85 172 78 / var(--tw-border-opacity));
}
.border-orange {
  --tw-border-opacity: 1;
  border-color: rgb(255 193 7 / 1);
  border-color: rgb(255 193 7 / var(--tw-border-opacity));
}
.border-red {
  --tw-border-opacity: 1;
  border-color: rgb(220 47 51 / 1);
  border-color: rgb(220 47 51 / var(--tw-border-opacity));
}
.border-transparent {
  border-color: transparent;
}
.border-t-red {
  --tw-border-opacity: 1;
  border-top-color: rgb(220 47 51 / 1);
  border-top-color: rgb(220 47 51 / var(--tw-border-opacity));
}
.border-opacity-50 {
  --tw-border-opacity: 0.5;
}
.bg-black {
  --tw-bg-opacity: 1;
  background-color: rgb(0 0 0 / 1);
  background-color: rgb(0 0 0 / var(--tw-bg-opacity));
}
.bg-blue {
  --tw-bg-opacity: 1;
  background-color: rgb(69 82 162 / 1);
  background-color: rgb(69 82 162 / var(--tw-bg-opacity));
}
.bg-blue-dark {
  --tw-bg-opacity: 1;
  background-color: rgb(54 63 125 / 1);
  background-color: rgb(54 63 125 / var(--tw-bg-opacity));
}
.bg-blue-light {
  --tw-bg-opacity: 1;
  background-color: rgb(94 106 186 / 1);
  background-color: rgb(94 106 186 / var(--tw-bg-opacity));
}
.bg-gray {
  --tw-bg-opacity: 1;
  background-color: rgb(225 225 225 / 1);
  background-color: rgb(225 225 225 / var(--tw-bg-opacity));
}
.bg-gray-dark {
  --tw-bg-opacity: 1;
  background-color: rgb(146 146 146 / 1);
  background-color: rgb(146 146 146 / var(--tw-bg-opacity));
}
.bg-gray-darker {
  --tw-bg-opacity: 1;
  background-color: rgb(74 74 74 / 1);
  background-color: rgb(74 74 74 / var(--tw-bg-opacity));
}
.bg-gray-darkest {
  --tw-bg-opacity: 1;
  background-color: rgb(42 42 42 / 1);
  background-color: rgb(42 42 42 / var(--tw-bg-opacity));
}
.bg-green {
  --tw-bg-opacity: 1;
  background-color: rgb(85 172 78 / 1);
  background-color: rgb(85 172 78 / var(--tw-bg-opacity));
}
.bg-green-lighter {
  --tw-bg-opacity: 1;
  background-color: rgb(168 229 162 / 1);
  background-color: rgb(168 229 162 / var(--tw-bg-opacity));
}
.bg-orange {
  --tw-bg-opacity: 1;
  background-color: rgb(255 193 7 / 1);
  background-color: rgb(255 193 7 / var(--tw-bg-opacity));
}
.bg-peach {
  --tw-bg-opacity: 1;
  background-color: rgb(236 78 28 / 1);
  background-color: rgb(236 78 28 / var(--tw-bg-opacity));
}
.bg-red {
  --tw-bg-opacity: 1;
  background-color: rgb(220 47 51 / 1);
  background-color: rgb(220 47 51 / var(--tw-bg-opacity));
}
.bg-transparent {
  background-color: transparent;
}
.bg-white {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.bg-white\/\[0\.6\] {
  background-color: rgb(255 255 255 / 0.6);
}
.bg-opacity-75 {
  --tw-bg-opacity: 0.75;
}
.p-1 {
  padding: 0.25rem;
}
.p-2 {
  padding: 0.5rem;
}
.p-3 {
  padding: 0.75rem;
}
.p-4 {
  padding: 1rem;
}
.\!px-0 {
  padding-left: 0px !important;
  padding-right: 0px !important;
}
.px-2 {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
.px-5 {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
.py-0 {
  padding-top: 0px;
  padding-bottom: 0px;
}
.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}
.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.py-3 {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.py-4 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.py-5 {
  padding-top: 1.25rem;
  padding-bottom: 1.25rem;
}
.\!pb-2 {
  padding-bottom: 0.5rem !important;
}
.\!pe-0 {
  padding-inline-end: 0px !important;
}
.\!ps-2 {
  padding-inline-start: 0.5rem !important;
}
.pb-2 {
  padding-bottom: 0.5rem;
}
.pb-20 {
  padding-bottom: 5rem;
}
.pb-3 {
  padding-bottom: 0.75rem;
}
.pb-4 {
  padding-bottom: 1rem;
}
.pl-10 {
  padding-left: 2.5rem;
}
.pl-2 {
  padding-left: 0.5rem;
}
.pr-1 {
  padding-right: 0.25rem;
}
.pr-2 {
  padding-right: 0.5rem;
}
.pt-4 {
  padding-top: 1rem;
}
.pt-5 {
  padding-top: 1.25rem;
}
.pt-8 {
  padding-top: 2rem;
}
.pt-\[56px\] {
  padding-top: 56px;
}
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-right {
  text-align: right;
}
.align-middle {
  vertical-align: middle;
}
.align-bottom {
  vertical-align: bottom;
}
.font-sans {
  font-family: -apple-system, BlinkMacSystemFont, Montserrat, Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
.\!text-lg {
  font-size: 1.125rem !important;
  line-height: 1.75rem !important;
}
.\!text-xl {
  font-size: 1.25rem !important;
  line-height: 1.75rem !important;
}
.text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}
.text-3xl {
  font-size: 1.875rem;
  line-height: 2.25rem;
}
.text-4xl {
  font-size: 2.25rem;
  line-height: 2.5rem;
}
.text-\[10px\] {
  font-size: 10px;
}
.text-\[12px\] {
  font-size: 12px;
}
.text-\[15px\] {
  font-size: 15px;
}
.text-base {
  font-size: 1rem;
  line-height: 1.5rem;
}
.text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}
.text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.text-xl {
  font-size: 1.25rem;
  line-height: 1.75rem;
}
.text-xs {
  font-size: 0.75rem;
  line-height: 1rem;
}
.font-bold {
  font-weight: 700;
}
.font-normal {
  font-weight: 400;
}
.font-semibold {
  font-weight: 600;
}
.uppercase {
  text-transform: uppercase;
}
.normal-case {
  text-transform: none;
}
.leading-6 {
  line-height: 1.5rem;
}
.leading-none {
  line-height: 1;
}
.tracking-tight {
  letter-spacing: -0.025em;
}
.tracking-wide {
  letter-spacing: 0.025em;
}
.tracking-widest {
  letter-spacing: 0.1em;
}
.text-\[\#929292\] {
  --tw-text-opacity: 1;
  color: rgb(146 146 146 / 1);
  color: rgb(146 146 146 / var(--tw-text-opacity));
}
.text-\[\#bbbbbb\] {
  --tw-text-opacity: 1;
  color: rgb(187 187 187 / 1);
  color: rgb(187 187 187 / var(--tw-text-opacity));
}
.text-black {
  --tw-text-opacity: 1;
  color: rgb(0 0 0 / 1);
  color: rgb(0 0 0 / var(--tw-text-opacity));
}
.text-blue {
  --tw-text-opacity: 1;
  color: rgb(69 82 162 / 1);
  color: rgb(69 82 162 / var(--tw-text-opacity));
}
.text-blue-light {
  --tw-text-opacity: 1;
  color: rgb(94 106 186 / 1);
  color: rgb(94 106 186 / var(--tw-text-opacity));
}
.text-gray {
  --tw-text-opacity: 1;
  color: rgb(225 225 225 / 1);
  color: rgb(225 225 225 / var(--tw-text-opacity));
}
.text-gray-dark {
  --tw-text-opacity: 1;
  color: rgb(146 146 146 / 1);
  color: rgb(146 146 146 / var(--tw-text-opacity));
}
.text-gray-darkest {
  --tw-text-opacity: 1;
  color: rgb(42 42 42 / 1);
  color: rgb(42 42 42 / var(--tw-text-opacity));
}
.text-green {
  --tw-text-opacity: 1;
  color: rgb(85 172 78 / 1);
  color: rgb(85 172 78 / var(--tw-text-opacity));
}
.text-green-dark {
  --tw-text-opacity: 1;
  color: rgb(67 137 62 / 1);
  color: rgb(67 137 62 / var(--tw-text-opacity));
}
.text-green-light {
  --tw-text-opacity: 1;
  color: rgb(116 190 111 / 1);
  color: rgb(116 190 111 / var(--tw-text-opacity));
}
.text-orange {
  --tw-text-opacity: 1;
  color: rgb(255 193 7 / 1);
  color: rgb(255 193 7 / var(--tw-text-opacity));
}
.text-orange-dark {
  --tw-text-opacity: 1;
  color: rgb(209 157 0 / 1);
  color: rgb(209 157 0 / var(--tw-text-opacity));
}
.text-orange-light {
  --tw-text-opacity: 1;
  color: rgb(255 205 56 / 1);
  color: rgb(255 205 56 / var(--tw-text-opacity));
}
.text-red {
  --tw-text-opacity: 1;
  color: rgb(220 47 51 / 1);
  color: rgb(220 47 51 / var(--tw-text-opacity));
}
.text-red-dark {
  --tw-text-opacity: 1;
  color: rgb(183 31 34 / 1);
  color: rgb(183 31 34 / var(--tw-text-opacity));
}
.text-red-light {
  --tw-text-opacity: 1;
  color: rgb(227 89 92 / 1);
  color: rgb(227 89 92 / var(--tw-text-opacity));
}
.text-white {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.antialiased {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.subpixel-antialiased {
  -webkit-font-smoothing: auto;
  -moz-osx-font-smoothing: auto;
}
.placeholder-gray-dark::-moz-placeholder {
  --tw-placeholder-opacity: 1;
  color: rgb(146 146 146 / 1);
  color: rgb(146 146 146 / var(--tw-placeholder-opacity));
}
.placeholder-gray-dark::placeholder {
  --tw-placeholder-opacity: 1;
  color: rgb(146 146 146 / 1);
  color: rgb(146 146 146 / var(--tw-placeholder-opacity));
}
.opacity-0 {
  opacity: 0;
}
.opacity-100 {
  opacity: 1;
}
.opacity-70 {
  opacity: 0.7;
}
.opacity-80 {
  opacity: 0.8;
}
.opacity-90 {
  opacity: 0.9;
}
.opacity-95 {
  opacity: 0.95;
}
.shadow {
  --tw-shadow: 0px 3px 10px rgba(0, 0, 0, 0.3);
  --tw-shadow-colored: 0px 3px 10px var(--tw-shadow-color);
  box-shadow: 0 0 #0000, 0 0 #0000, 0px 3px 10px rgba(0, 0, 0, 0.3);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-inner {
  --tw-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.3);
  --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);
  box-shadow: 0 0 #0000, 0 0 #0000, inset 0 2px 4px 0 rgba(0, 0, 0, 0.3);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-none {
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  box-shadow: 0 0 #0000, 0 0 #0000, 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-sm {
  --tw-shadow: 0px 2px 5px rgba(0, 0, 0, 0.3);
  --tw-shadow-colored: 0px 2px 5px var(--tw-shadow-color);
  box-shadow: 0 0 #0000, 0 0 #0000, 0px 2px 5px rgba(0, 0, 0, 0.3);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-small-box {
  --tw-shadow: 0px 0px 2px 1px rgba(0, 0, 0, 0.3);
  --tw-shadow-colored: 0px 0px 2px 1px var(--tw-shadow-color);
  box-shadow: 0 0 #0000, 0 0 #0000, 0px 0px 2px 1px rgba(0, 0, 0, 0.3);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.outline-none {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.outline-2 {
  outline-width: 2px;
}
.outline-green {
  outline-color: #55AC4E;
}
.outline-red {
  outline-color: #DC2F33;
}
.ring-4 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color), var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color), 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-blue {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(69 82 162 / var(--tw-ring-opacity));
}
.ring-opacity-50 {
  --tw-ring-opacity: 0.5;
}
.blur {
  --tw-blur: blur(8px);
  filter: blur(8px) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.grayscale {
  --tw-grayscale: grayscale(100%);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) grayscale(100%) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-all {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-opacity {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-transform {
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.duration-150 {
  transition-duration: 150ms;
}
.duration-300 {
  transition-duration: 300ms;
}
.ease-out {
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.content-\[\'\'\] {
  --tw-content: '';
  content: '';
  content: var(--tw-content);
}
.content-\[attr\(data-popup-message\)\] {
  --tw-content: attr(data-popup-message);
  content: attr(data-popup-message);
  content: var(--tw-content);
}
/* stylelint-disable-next-line no-invalid-position-at-import-rule */
.fade-enter-active,
  .fade-leave-active {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}
.fade-enter-from,
  .fade-leave-to {
  opacity: 0;
}
div.loading {
  position: relative;
  overflow: hidden;
}
div.loading > * {
  --tw-blur: blur(4px);
  filter: blur(4px) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
div.loading::after {
  position: absolute;
  left: 0px;
  top: 0px;
  display: block;
  height: 100%;
  width: 100%;
  --tw-bg-opacity: 1;
  background-color: rgb(42 42 42 / 1);
  background-color: rgb(42 42 42 / var(--tw-bg-opacity));
  opacity: 0.1;
    content: " ";
}
.btn {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  border-radius: 0.25rem;
  border-width: 1px;
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  font-size: 0.875rem;
  line-height: 1.25rem;
  font-weight: 700;
  text-transform: uppercase;
  outline: 2px solid transparent;
  outline-offset: 2px;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}
@media (min-width: 640px) {
  .btn {
    height: 50px;
    padding: 20px;
    font-size: 1rem;
    line-height: 1.5rem;
    font-size: 17px;
  }
}
.btn.btn-sm {
  padding-top: 0px;
  padding-bottom: 0px;
  padding-left: 0.25rem;
  padding-right: 0.25rem;
  font-size: 0.875rem;
  line-height: 1.25rem;
  text-transform: none;
}
.btn.btn-secondary:not(:disabled) {
  border-color: rgb(146 146 146 / 0.5);
  border-color: rgb(146 146 146 / var(--tw-border-opacity));
  --tw-border-opacity: 0.5;
  --tw-bg-opacity: 1;
  background-color: rgb(146 146 146 / 1);
  background-color: rgb(146 146 146 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-secondary:not(:disabled):hover {
  --tw-bg-opacity: 1;
  background-color: rgb(74 74 74 / 1);
  background-color: rgb(74 74 74 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-secondary:not(:disabled).btn-outline {
  --tw-text-opacity: 1;
  color: rgb(42 42 42 / 1);
  color: rgb(42 42 42 / var(--tw-text-opacity));
}
.btn.btn-secondary:not(:disabled).btn-outline:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(146 146 146 / 1);
  background-color: rgb(146 146 146 / var(--tw-bg-opacity));
}
.btn.btn-primary:not(:disabled) {
  --tw-border-opacity: 1;
  border-color: rgb(69 82 162 / 1);
  border-color: rgb(69 82 162 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(69 82 162 / 1);
  background-color: rgb(69 82 162 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-primary:not(:disabled):hover {
  --tw-bg-opacity: 1;
  background-color: rgb(54 63 125 / 1);
  background-color: rgb(54 63 125 / var(--tw-bg-opacity));
}
.btn.btn-primary:not(:disabled).btn-outline {
  --tw-text-opacity: 1;
  color: rgb(69 82 162 / 1);
  color: rgb(69 82 162 / var(--tw-text-opacity));
}
.btn.btn-primary:not(:disabled).btn-outline:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(69 82 162 / 1);
  background-color: rgb(69 82 162 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-primary:not(:disabled).btn-link {
  border-color: transparent;
  background-color: transparent;
  --tw-text-opacity: 1;
  color: rgb(69 82 162 / 1);
  color: rgb(69 82 162 / var(--tw-text-opacity));
}
.btn.btn-primary:not(:disabled).btn-link:hover {
  --tw-text-opacity: 1;
  color: rgb(94 106 186 / 1);
  color: rgb(94 106 186 / var(--tw-text-opacity));
}
.btn.btn-success:not(:disabled) {
  --tw-border-opacity: 1;
  border-color: rgb(85 172 78 / 1);
  border-color: rgb(85 172 78 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(85 172 78 / 1);
  background-color: rgb(85 172 78 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-success:not(:disabled):hover {
  --tw-bg-opacity: 1;
  background-color: rgb(67 137 62 / 1);
  background-color: rgb(67 137 62 / var(--tw-bg-opacity));
}
.btn.btn-success:not(:disabled).btn-outline {
  --tw-text-opacity: 1;
  color: rgb(85 172 78 / 1);
  color: rgb(85 172 78 / var(--tw-text-opacity));
}
.btn.btn-success:not(:disabled).btn-outline:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(85 172 78 / 1);
  background-color: rgb(85 172 78 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-success:not(:disabled).btn-link {
  border-color: transparent;
  background-color: transparent;
  --tw-text-opacity: 1;
  color: rgb(69 82 162 / 1);
  color: rgb(69 82 162 / var(--tw-text-opacity));
}
.btn.btn-success:not(:disabled).btn-link:hover {
  --tw-text-opacity: 1;
  color: rgb(94 106 186 / 1);
  color: rgb(94 106 186 / var(--tw-text-opacity));
}
.btn.btn-danger:not(:disabled) {
  --tw-border-opacity: 1;
  border-color: rgb(220 47 51 / 1);
  border-color: rgb(220 47 51 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(220 47 51 / 1);
  background-color: rgb(220 47 51 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-danger:not(:disabled):hover {
  --tw-bg-opacity: 1;
  background-color: rgb(183 31 34 / 1);
  background-color: rgb(183 31 34 / var(--tw-bg-opacity));
}
.btn.btn-danger:not(:disabled).btn-outline {
  --tw-text-opacity: 1;
  color: rgb(220 47 51 / 1);
  color: rgb(220 47 51 / var(--tw-text-opacity));
}
.btn.btn-danger:not(:disabled).btn-outline:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(220 47 51 / 1);
  background-color: rgb(220 47 51 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-danger:not(:disabled).btn-link {
  border-color: transparent;
  background-color: transparent;
  --tw-text-opacity: 1;
  color: rgb(220 47 51 / 1);
  color: rgb(220 47 51 / var(--tw-text-opacity));
}
.btn.btn-danger:not(:disabled).btn-link:hover {
  --tw-text-opacity: 1;
  color: rgb(227 89 92 / 1);
  color: rgb(227 89 92 / var(--tw-text-opacity));
}
.btn.btn-warning:not(:disabled) {
  --tw-border-opacity: 1;
  border-color: rgb(255 193 7 / 1);
  border-color: rgb(255 193 7 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(255 193 7 / 1);
  background-color: rgb(255 193 7 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(42 42 42 / 1);
  color: rgb(42 42 42 / var(--tw-text-opacity));
}
.btn.btn-warning:not(:disabled):hover {
  --tw-bg-opacity: 1;
  background-color: rgb(209 157 0 / 1);
  background-color: rgb(209 157 0 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-warning:not(:disabled).btn-outline {
  --tw-text-opacity: 1;
  color: rgb(255 193 7 / 1);
  color: rgb(255 193 7 / var(--tw-text-opacity));
}
.btn.btn-warning:not(:disabled).btn-outline:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(255 205 56 / 1);
  background-color: rgb(255 205 56 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(42 42 42 / 1);
  color: rgb(42 42 42 / var(--tw-text-opacity));
}
.btn.btn-warning:not(:disabled).btn-link {
  border-color: transparent;
  background-color: transparent;
  --tw-text-opacity: 1;
  color: rgb(255 193 7 / 1);
  color: rgb(255 193 7 / var(--tw-text-opacity));
}
.btn.btn-warning:not(:disabled).btn-link:hover {
  --tw-text-opacity: 1;
  color: rgb(255 205 56 / 1);
  color: rgb(255 205 56 / var(--tw-text-opacity));
}
.btn.btn-info:not(:disabled) {
  --tw-border-opacity: 1;
  border-color: rgb(94 106 186 / 1);
  border-color: rgb(94 106 186 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(94 106 186 / 1);
  background-color: rgb(94 106 186 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.btn.btn-info:not(:disabled):hover {
  --tw-bg-opacity: 1;
  background-color: rgb(69 82 162 / 1);
  background-color: rgb(69 82 162 / var(--tw-bg-opacity));
}
.btn.btn-info:not(:disabled).btn-outline {
  --tw-text-opacity: 1;
  color: rgb(94 106 186 / 1);
  color: rgb(94 106 186 / var(--tw-text-opacity));
}
.btn.btn-info:not(:disabled).btn-outline:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(94 106 186 / 1);
  background-color: rgb(94 106 186 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(42 42 42 / 1);
  color: rgb(42 42 42 / var(--tw-text-opacity));
}
.btn.btn-info:not(:disabled).btn-link {
  border-color: transparent;
  background-color: transparent;
  --tw-text-opacity: 1;
  color: rgb(94 106 186 / 1);
  color: rgb(94 106 186 / var(--tw-text-opacity));
}
.btn.btn-info:not(:disabled).btn-link:hover {
  --tw-text-opacity: 1;
  color: rgb(54 63 125 / 1);
  color: rgb(54 63 125 / var(--tw-text-opacity));
}
.btn.btn-link {
  border-color: transparent;
  background-color: transparent;
}
.btn.btn-link:not(:disabled) {
  --tw-text-opacity: 1;
  color: rgb(69 82 162 / 1);
  color: rgb(69 82 162 / var(--tw-text-opacity));
}
.btn.btn-link:not(:disabled):hover {
  --tw-text-opacity: 1;
  color: rgb(54 63 125 / 1);
  color: rgb(54 63 125 / var(--tw-text-opacity));
}
.btn.btn-outline, .btn.btn-outline:not(:disabled) {
  border-width: 2px;
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.btn.btn-neutral {
  --tw-border-opacity: 1;
  border-color: rgb(225 225 225 / 1);
  border-color: rgb(225 225 225 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(225 225 225 / 1);
  background-color: rgb(225 225 225 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(42 42 42 / 1);
  color: rgb(42 42 42 / var(--tw-text-opacity));
}
.btn.btn-neutral:hover {
  --tw-border-opacity: 1;
  border-color: rgb(146 146 146 / 1);
  border-color: rgb(146 146 146 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(146 146 146 / 1);
  background-color: rgb(146 146 146 / var(--tw-bg-opacity));
}
.btn.btn-cart {
  height: 100%;
  border-radius: 0px;
  padding: 0.25rem;
  padding-left: 1.25rem;
  padding-right: 1.25rem;
  font-size: 1.5rem;
  line-height: 2rem;
}
.btn:disabled {
  opacity: 0.5;
}
.btn-group {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 0px;
}
.btn-group .btn:first-child {
  border-top-right-radius: 0px;
  border-bottom-right-radius: 0px;
}
.btn-group .btn:last-child {
  border-top-left-radius: 0px;
  border-bottom-left-radius: 0px;
}
.text-shadow-white {
    text-shadow: 0 0 3px #fff;
  }
.text-shadow-black {
    text-shadow: 0 0 3px #000;
  }
.filters {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  border-bottom-width: 2px;
  --tw-border-opacity: 1;
  border-color: rgb(146 146 146 / 1);
  border-color: rgb(146 146 146 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
  padding: 1rem;
}
@media (min-width: 1024px) {
  .filters {
    flex-direction: row;
    font-size: 0.875rem;
    line-height: 1.25rem;
  }
}
.additional-filters {
  display: grid;
  grid-template-columns: repeat(1, minmax(0, 1fr));
  gap: 0.5rem;
  border-bottom-width: 2px;
  --tw-border-opacity: 1;
  border-color: rgb(146 146 146 / 1);
  border-color: rgb(146 146 146 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
  padding: 1rem;
}
@media (min-width: 640px) {
  .additional-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 768px) {
  .additional-filters {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  .additional-filters {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    font-size: 0.875rem;
    line-height: 1.25rem;
  }
}
.filters,
  .additional-filters,
  .additional-filters-close-btn {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.filters.closed,
  .additional-filters.closed,
  .additional-filters-close-btn.closed {
  height: 0px;
  overflow: hidden;
  padding-top: 0px;
  padding-bottom: 0px;
}
.input-group {
  display: flex;
  width: 100%;
  flex-direction: row;
  align-content: center;
  align-items: stretch;
  justify-content: center;
  gap: 0px;
}
.input-group > :not(:last-child) {
  border-top-right-radius: 0px;
  border-bottom-right-radius: 0px;
}
.input-group > :not(:last-child) input {
  border-top-right-radius: 0px;
  border-bottom-right-radius: 0px;
}
.input-group > :not(:first-child) {
  border-top-left-radius: 0px;
  border-bottom-left-radius: 0px;
}
.input-group > :not(:first-child) input {
  border-top-left-radius: 0px;
  border-bottom-left-radius: 0px;
}
.discount-theme {
    border-top: 0;
    background-color: #686868;
    color: #fff;
  }
.discount-theme > td {
    grid: none !important;
  }
.discount-theme.discount-theme-0 {
    background-color: #686868;
  }
.discount-theme.discount-theme-1 {
    background-color: #20c25b;
  }
.discount-theme.discount-theme-2 {
    background-color: #ffbb00;
  }
.discount-theme.discount-theme-3 {
    background-color: #ff5e66;
  }
.button-orderable.active::after,
  .button-limited.active::after {
  position: absolute;
  bottom: -2rem;
  right: -2rem;
  z-index: 1;
  display: block;
  width: 20rem;
  --tw-bg-opacity: 1;
  background-color: rgb(74 74 74 / 1);
  background-color: rgb(74 74 74 / var(--tw-bg-opacity));
  padding: 1rem;
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
  opacity: 0.95;
    content: var(--tooltip-limited);
}
.button-orderable.active::after {
    content: var(--tooltip-orderable);
  }
@media (pointer: fine) {
    .button-orderable > .tooltip:hover::after,
    .button-limited > .tooltip:hover::after {
    position: absolute;
    bottom: -2rem;
    right: -2rem;
    z-index: 1;
    display: block;
    width: 20rem;
    --tw-bg-opacity: 1;
    background-color: rgb(74 74 74 / 1);
    background-color: rgb(74 74 74 / var(--tw-bg-opacity));
    padding: 1rem;
    --tw-text-opacity: 1;
    color: rgb(255 255 255 / 1);
    color: rgb(255 255 255 / var(--tw-text-opacity));
    opacity: 0.95;
      content: var(--tooltip-limited);
  }
    .button-orderable > .tooltip:hover::after {
      content: var(--tooltip-orderable);
    }
  }
.textbox {
  position: relative;
  cursor: pointer;
}
.textbox:before {
    content: attr(data-text); /* here's the magic */ position: absolute; left: 100%; top: 50%; display: none; --tw-translate-y: -50%; transform: translate(var(--tw-translate-x), -50%) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); white-space: pre; --tw-bg-opacity: 1; background-color: rgb(74 74 74 / 1); background-color: rgb(74 74 74 / var(--tw-bg-opacity)); padding: 1rem; text-align: center; --tw-text-opacity: 1; color: rgb(255 255 255 / 1); color: rgb(255 255 255 / var(--tw-text-opacity)); opacity: 0.95;
  }
.textbox:hover:before {
  display: block;
}
.coupon-state .active_waiting {
  --tw-bg-opacity: 1;
  background-color: rgb(168 85 247 / 1);
  background-color: rgb(168 85 247 / var(--tw-bg-opacity));
}
.coupon-state .active_new {
  --tw-bg-opacity: 1;
  background-color: rgb(85 172 78 / 1);
  background-color: rgb(85 172 78 / var(--tw-bg-opacity));
}
.coupon-state .active_partially_used {
  --tw-bg-opacity: 1;
  background-color: rgb(69 82 162 / 1);
  background-color: rgb(69 82 162 / var(--tw-bg-opacity));
}
.coupon-state .archived_full_used {
  --tw-bg-opacity: 1;
  background-color: rgb(74 74 74 / 1);
  background-color: rgb(74 74 74 / var(--tw-bg-opacity));
}
.coupon-state .archived_partially_used {
  --tw-bg-opacity: 1;
  background-color: rgb(255 193 7 / 1);
  background-color: rgb(255 193 7 / var(--tw-bg-opacity));
}
.coupon-state .archived_not_used {
  --tw-bg-opacity: 1;
  background-color: rgb(220 47 51 / 1);
  background-color: rgb(220 47 51 / var(--tw-bg-opacity));
}
.show-popup-message {
    position: relative;
  }
.show-popup-message::before {
  position: absolute;
  bottom: 100%;
  display: block;
  white-space: nowrap;
  border-radius: 0.5rem;
  padding: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  font-size: 0.75rem;
  line-height: 1rem;
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
  opacity: 0.9;
  --tw-content: attr(data-popup-message);
  content: attr(data-popup-message);
  content: var(--tw-content);
}
.show-popup-message::after {
  position: absolute;
  top: 0px;
  display: block;
  height: 0px;
  width: 0px;
  border-width: 8px;
  border-color: transparent;
  opacity: 0.9;
  --tw-content: "";
  content: "";
  content: var(--tw-content);
}
.show-popup-message::before {
  --tw-bg-opacity: 1;
  background-color: rgb(220 47 51 / 1);
  background-color: rgb(220 47 51 / var(--tw-bg-opacity));
}
.show-popup-message::after {
  --tw-border-opacity: 1;
  border-top-color: rgb(220 47 51 / 1);
  border-top-color: rgb(220 47 51 / var(--tw-border-opacity));
}
.show-popup-message.warning::before {
  --tw-bg-opacity: 1;
  background-color: rgb(255 193 7 / 1);
  background-color: rgb(255 193 7 / var(--tw-bg-opacity));
}
.show-popup-message.warning::after {
  --tw-border-opacity: 1;
  border-top-color: rgb(255 193 7 / 1);
  border-top-color: rgb(255 193 7 / var(--tw-border-opacity));
}
.show-popup-message.info::before {
  --tw-bg-opacity: 1;
  background-color: rgb(69 82 162 / 1);
  background-color: rgb(69 82 162 / var(--tw-bg-opacity));
}
.show-popup-message.info::after {
  --tw-border-opacity: 1;
  border-top-color: rgb(69 82 162 / 1);
  border-top-color: rgb(69 82 162 / var(--tw-border-opacity));
}
@media (min-width: 1536px) {
  .\32xl\:container {
    width: 100%;
  }
  @media (min-width: 640px) {
    .\32xl\:container {
      max-width: 640px;
    }
  }
  @media (min-width: 768px) {
    .\32xl\:container {
      max-width: 768px;
    }
  }
  @media (min-width: 1024px) {
    .\32xl\:container {
      max-width: 1024px;
    }
  }
  @media (min-width: 1280px) {
    .\32xl\:container {
      max-width: 1280px;
    }
  }
  @media (min-width: 1536px) {
    .\32xl\:container {
      max-width: 1536px;
    }
  }
}
.file\:mr-4::file-selector-button {
  margin-right: 1rem;
}
.file\:rounded-full::file-selector-button {
  border-radius: 9999px;
}
.file\:border-0::file-selector-button {
  border-width: 0px;
}
.file\:bg-green::file-selector-button {
  --tw-bg-opacity: 1;
  background-color: rgb(85 172 78 / 1);
  background-color: rgb(85 172 78 / var(--tw-bg-opacity));
}
.file\:bg-red::file-selector-button {
  --tw-bg-opacity: 1;
  background-color: rgb(220 47 51 / 1);
  background-color: rgb(220 47 51 / var(--tw-bg-opacity));
}
.file\:px-4::file-selector-button {
  padding-left: 1rem;
  padding-right: 1rem;
}
.file\:py-2::file-selector-button {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.file\:text-sm::file-selector-button {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.file\:font-semibold::file-selector-button {
  font-weight: 600;
}
.file\:text-white::file-selector-button {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.before\:absolute::before {
  content: var(--tw-content);
  position: absolute;
}
.before\:-bottom-1::before {
  content: var(--tw-content);
  bottom: -0.25rem;
}
.before\:block::before {
  content: var(--tw-content);
  display: block;
}
.before\:h-2::before {
  content: var(--tw-content);
  height: 0.5rem;
}
.before\:w-2::before {
  content: var(--tw-content);
  width: 0.5rem;
}
.before\:rotate-45::before {
  content: var(--tw-content);
  --tw-rotate: 45deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(45deg) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.before\:place-self-center::before {
  content: var(--tw-content);
  place-self: center;
}
.before\:border-b-1::before {
  content: var(--tw-content);
  border-bottom-width: 1px;
}
.before\:border-r-1::before {
  content: var(--tw-content);
  border-right-width: 1px;
}
.before\:border-red::before {
  content: var(--tw-content);
  --tw-border-opacity: 1;
  border-color: rgb(220 47 51 / 1);
  border-color: rgb(220 47 51 / var(--tw-border-opacity));
}
.before\:bg-white::before {
  content: var(--tw-content);
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.first\:border-t-2:first-child {
  border-top-width: 2px;
}
.last\:border-b-0:last-child {
  border-bottom-width: 0px;
}
.focus-within\:ring-blue:focus-within {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(69 82 162 / var(--tw-ring-opacity));
}
.focus-within\:ring-opacity-50:focus-within {
  --tw-ring-opacity: 0.5;
}
.hover\:border-gray-dark:hover {
  --tw-border-opacity: 1;
  border-color: rgb(146 146 146 / 1);
  border-color: rgb(146 146 146 / var(--tw-border-opacity));
}
.hover\:bg-blue:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(69 82 162 / 1);
  background-color: rgb(69 82 162 / var(--tw-bg-opacity));
}
.hover\:bg-blue-dark:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(54 63 125 / 1);
  background-color: rgb(54 63 125 / var(--tw-bg-opacity));
}
.hover\:bg-blue-light:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(94 106 186 / 1);
  background-color: rgb(94 106 186 / var(--tw-bg-opacity));
}
.hover\:bg-gray:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(225 225 225 / 1);
  background-color: rgb(225 225 225 / var(--tw-bg-opacity));
}
.hover\:bg-gray-dark:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(146 146 146 / 1);
  background-color: rgb(146 146 146 / var(--tw-bg-opacity));
}
.hover\:bg-gray-darker:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(74 74 74 / 1);
  background-color: rgb(74 74 74 / var(--tw-bg-opacity));
}
.hover\:bg-green:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(85 172 78 / 1);
  background-color: rgb(85 172 78 / var(--tw-bg-opacity));
}
.hover\:bg-green-dark:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(67 137 62 / 1);
  background-color: rgb(67 137 62 / var(--tw-bg-opacity));
}
.hover\:bg-orange-dark:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(209 157 0 / 1);
  background-color: rgb(209 157 0 / var(--tw-bg-opacity));
}
.hover\:bg-orange-light:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(255 205 56 / 1);
  background-color: rgb(255 205 56 / var(--tw-bg-opacity));
}
.hover\:bg-red:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(220 47 51 / 1);
  background-color: rgb(220 47 51 / var(--tw-bg-opacity));
}
.hover\:bg-red-dark:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(183 31 34 / 1);
  background-color: rgb(183 31 34 / var(--tw-bg-opacity));
}
.hover\:btn-danger:hover.btn:not(:disabled) {
  --tw-border-opacity: 1;
  border-color: rgb(220 47 51 / 1);
  border-color: rgb(220 47 51 / var(--tw-border-opacity));
  --tw-bg-opacity: 1;
  background-color: rgb(220 47 51 / 1);
  background-color: rgb(220 47 51 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.hover\:btn-danger:hover.btn:not(:disabled):hover {
  --tw-bg-opacity: 1;
  background-color: rgb(183 31 34 / 1);
  background-color: rgb(183 31 34 / var(--tw-bg-opacity));
}
.hover\:btn-danger:hover.btn:not(:disabled).btn-outline {
  --tw-text-opacity: 1;
  color: rgb(220 47 51 / 1);
  color: rgb(220 47 51 / var(--tw-text-opacity));
}
.hover\:btn-danger:hover.btn:not(:disabled).btn-outline:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(220 47 51 / 1);
  background-color: rgb(220 47 51 / var(--tw-bg-opacity));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / 1);
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.hover\:btn-danger:hover.btn:not(:disabled).btn-link {
  border-color: transparent;
  background-color: transparent;
  --tw-text-opacity: 1;
  color: rgb(220 47 51 / 1);
  color: rgb(220 47 51 / var(--tw-text-opacity));
}
.hover\:btn-danger:hover.btn:not(:disabled).btn-link:hover {
  --tw-text-opacity: 1;
  color: rgb(227 89 92 / 1);
  color: rgb(227 89 92 / var(--tw-text-opacity));
}
.focus\:border-blue:focus {
  --tw-border-opacity: 1;
  border-color: rgb(69 82 162 / 1);
  border-color: rgb(69 82 162 / var(--tw-border-opacity));
}
.focus\:outline-none:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.focus\:ring-2:focus {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color), var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color), 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:ring-4:focus {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color), var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color), 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:ring-blue:focus {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(69 82 162 / var(--tw-ring-opacity));
}
.focus\:ring-opacity-50:focus {
  --tw-ring-opacity: 0.5;
}
.disabled\:bg-gray:disabled {
  --tw-bg-opacity: 1;
  background-color: rgb(225 225 225 / 1);
  background-color: rgb(225 225 225 / var(--tw-bg-opacity));
}
.peer:checked ~ .peer-checked\:opacity-100 {
  opacity: 1;
}
@media print {
  .print\:block {
    display: block;
  }
  .print\:hidden {
    display: none;
  }
  .print\:pt-0 {
    padding-top: 0px;
  }
  .print\:text-sm {
    font-size: 0.875rem;
    line-height: 1.25rem;
  }
}
@media (min-width: 640px) {
  .sm\:my-8 {
    margin-top: 2rem;
    margin-bottom: 2rem;
  }
  .sm\:flex {
    display: flex;
  }
  .sm\:h-\[50px\] {
    height: 50px;
  }
  .sm\:w-4\/5 {
    width: 80%;
  }
  .sm\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sm\:items-start {
    align-items: flex-start;
  }
  .sm\:p-6 {
    padding: 1.5rem;
  }
  .sm\:p-\[20px\] {
    padding: 20px;
  }
  .sm\:pb-4 {
    padding-bottom: 1rem;
  }
  .sm\:text-left {
    text-align: left;
  }
  .sm\:align-middle {
    vertical-align: middle;
  }
  .sm\:text-\[17px\] {
    font-size: 17px;
  }
  .sm\:text-base {
    font-size: 1rem;
    line-height: 1.5rem;
  }
}
@media (min-width: 768px) {
  .md\:bottom-8 {
    bottom: 2rem;
  }
  .md\:bottom-auto {
    bottom: auto;
  }
  .md\:left-8 {
    left: 2rem;
  }
  .md\:right-8 {
    right: 2rem;
  }
  .md\:top-8 {
    top: 2rem;
  }
  .md\:mb-8 {
    margin-bottom: 2rem;
  }
  .md\:inline-block {
    display: inline-block;
  }
  .md\:h-full {
    height: 100%;
  }
  .md\:w-1\/2 {
    width: 50%;
  }
  .md\:w-auto {
    width: auto;
  }
  .md\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .md\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .md\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .md\:flex-row {
    flex-direction: row;
  }
  .md\:justify-between {
    justify-content: space-between;
  }
  .md\:gap-2 {
    gap: 0.5rem;
  }
  .md\:gap-4 {
    gap: 1rem;
  }
  .md\:gap-8 {
    gap: 2rem;
  }
  .md\:space-y-0 > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(0px * calc(1 - 0));
    margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(0px * 0);
    margin-bottom: calc(0px * var(--tw-space-y-reverse));
  }
  .md\:px-0 {
    padding-left: 0px;
    padding-right: 0px;
  }
  .md\:text-xl {
    font-size: 1.25rem;
    line-height: 1.75rem;
  }
}
@media (min-width: 1024px) {
  .lg\:absolute {
    position: absolute;
  }
  .lg\:left-auto {
    left: auto;
  }
  .lg\:col-span-2 {
    grid-column: span 2 / span 2;
  }
  .lg\:col-span-3 {
    grid-column: span 3 / span 3;
  }
  .lg\:block {
    display: block;
  }
  .lg\:flex {
    display: flex;
  }
  .lg\:table-row {
    display: table-row;
  }
  .lg\:hidden {
    display: none;
  }
  .lg\:h-2 {
    height: 0.5rem;
  }
  .lg\:h-4 {
    height: 1rem;
  }
  .lg\:w-1\/3 {
    width: 33.333333%;
  }
  .lg\:w-2 {
    width: 0.5rem;
  }
  .lg\:w-64 {
    width: 16rem;
  }
  .lg\:w-8 {
    width: 2rem;
  }
  .lg\:w-max {
    width: -moz-max-content;
    width: max-content;
  }
  .lg\:min-w-full {
    min-width: 100%;
  }
  .lg\:translate-x-4 {
    --tw-translate-x: 1rem;
    transform: translate(1rem, var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
    transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  }
  .lg\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .lg\:grid-cols-6 {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
  .lg\:flex-row {
    flex-direction: row;
  }
  .lg\:flex-col {
    flex-direction: column;
  }
  .lg\:items-center {
    align-items: center;
  }
  .lg\:justify-between {
    justify-content: space-between;
  }
  .lg\:gap-4 {
    gap: 1rem;
  }
  .lg\:gap-8 {
    gap: 2rem;
  }
  .lg\:bg-gray-darker {
    --tw-bg-opacity: 1;
    background-color: rgb(74 74 74 / 1);
    background-color: rgb(74 74 74 / var(--tw-bg-opacity));
  }
  .lg\:text-sm {
    font-size: 0.875rem;
    line-height: 1.25rem;
  }
}
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/Form/Toggle.vue?vue&type=style&index=0&id=58993df4&lang=scss ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
label.toggle {
  position: relative
}
label.toggle.disabled::after {
  position: absolute;
  left: 0px;
  top: 0px;
  display: block;
  height: 100%;
  width: 100%;
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
  opacity: 0.7;
  content: " "
}
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/Form/TextEditor.vue?vue&type=style&index=0&id=40a0f89a&lang=scss ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.ql-container {
  box-sizing: border-box;
  font-family: Helvetica, Arial, sans-serif;
  font-size: 13px;
  height: 100%;
  margin: 0px;
  position: relative;
}
.ql-container.ql-disabled .ql-tooltip {
  visibility: hidden;
}
.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {
  pointer-events: none;
}
.ql-clipboard {
  left: -100000px;
  height: 1px;
  overflow-y: hidden;
  position: absolute;
  top: 50%;
}
.ql-clipboard p {
  margin: 0;
  padding: 0;
}
.ql-editor {
  box-sizing: border-box;
  line-height: 1.42;
  height: 100%;
  outline: none;
  overflow-y: auto;
  padding: 12px 15px;
  -o-tab-size: 4;
     tab-size: 4;
  -moz-tab-size: 4;
  text-align: left;
  white-space: pre-wrap;
  word-wrap: break-word;
}
.ql-editor > * {
  cursor: text;
}
.ql-editor p,
.ql-editor ol,
.ql-editor ul,
.ql-editor pre,
.ql-editor blockquote,
.ql-editor h1,
.ql-editor h2,
.ql-editor h3,
.ql-editor h4,
.ql-editor h5,
.ql-editor h6 {
  margin: 0;
  padding: 0;
  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol,
.ql-editor ul {
  padding-left: 1.5em;
}
.ql-editor ol > li,
.ql-editor ul > li {
  list-style-type: none;
}
.ql-editor ul > li::before {
  content: '\2022';
}
.ql-editor ul[data-checked=true],
.ql-editor ul[data-checked=false] {
  pointer-events: none;
}
.ql-editor ul[data-checked=true] > li *,
.ql-editor ul[data-checked=false] > li * {
  pointer-events: all;
}
.ql-editor ul[data-checked=true] > li::before,
.ql-editor ul[data-checked=false] > li::before {
  color: #777;
  cursor: pointer;
  pointer-events: all;
}
.ql-editor ul[data-checked=true] > li::before {
  content: '\2611';
}
.ql-editor ul[data-checked=false] > li::before {
  content: '\2610';
}
.ql-editor li::before {
  display: inline-block;
  white-space: nowrap;
  width: 1.2em;
}
.ql-editor li:not(.ql-direction-rtl)::before {
  margin-left: -1.5em;
  margin-right: 0.3em;
  text-align: right;
}
.ql-editor li.ql-direction-rtl::before {
  margin-left: 0.3em;
  margin-right: -1.5em;
}
.ql-editor ol li:not(.ql-direction-rtl),
.ql-editor ul li:not(.ql-direction-rtl) {
  padding-left: 1.5em;
}
.ql-editor ol li.ql-direction-rtl,
.ql-editor ul li.ql-direction-rtl {
  padding-right: 1.5em;
}
.ql-editor ol li {
  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
  counter-increment: list-0;
}
.ql-editor ol li:before {
  content: counter(list-0, decimal) '. ';
}
.ql-editor ol li.ql-indent-1 {
  counter-increment: list-1;
}
.ql-editor ol li.ql-indent-1:before {
  content: counter(list-1, lower-alpha) '. ';
}
.ql-editor ol li.ql-indent-1 {
  counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-2 {
  counter-increment: list-2;
}
.ql-editor ol li.ql-indent-2:before {
  content: counter(list-2, lower-roman) '. ';
}
.ql-editor ol li.ql-indent-2 {
  counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-3 {
  counter-increment: list-3;
}
.ql-editor ol li.ql-indent-3:before {
  content: counter(list-3, decimal) '. ';
}
.ql-editor ol li.ql-indent-3 {
  counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-4 {
  counter-increment: list-4;
}
.ql-editor ol li.ql-indent-4:before {
  content: counter(list-4, lower-alpha) '. ';
}
.ql-editor ol li.ql-indent-4 {
  counter-reset: list-5 list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-5 {
  counter-increment: list-5;
}
.ql-editor ol li.ql-indent-5:before {
  content: counter(list-5, lower-roman) '. ';
}
.ql-editor ol li.ql-indent-5 {
  counter-reset: list-6 list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-6 {
  counter-increment: list-6;
}
.ql-editor ol li.ql-indent-6:before {
  content: counter(list-6, decimal) '. ';
}
.ql-editor ol li.ql-indent-6 {
  counter-reset: list-7 list-8 list-9;
}
.ql-editor ol li.ql-indent-7 {
  counter-increment: list-7;
}
.ql-editor ol li.ql-indent-7:before {
  content: counter(list-7, lower-alpha) '. ';
}
.ql-editor ol li.ql-indent-7 {
  counter-reset: list-8 list-9;
}
.ql-editor ol li.ql-indent-8 {
  counter-increment: list-8;
}
.ql-editor ol li.ql-indent-8:before {
  content: counter(list-8, lower-roman) '. ';
}
.ql-editor ol li.ql-indent-8 {
  counter-reset: list-9;
}
.ql-editor ol li.ql-indent-9 {
  counter-increment: list-9;
}
.ql-editor ol li.ql-indent-9:before {
  content: counter(list-9, decimal) '. ';
}
.ql-editor .ql-indent-1:not(.ql-direction-rtl) {
  padding-left: 3em;
}
.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
  padding-left: 4.5em;
}
.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
  padding-right: 3em;
}
.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
  padding-right: 4.5em;
}
.ql-editor .ql-indent-2:not(.ql-direction-rtl) {
  padding-left: 6em;
}
.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
  padding-left: 7.5em;
}
.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
  padding-right: 6em;
}
.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
  padding-right: 7.5em;
}
.ql-editor .ql-indent-3:not(.ql-direction-rtl) {
  padding-left: 9em;
}
.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
  padding-left: 10.5em;
}
.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
  padding-right: 9em;
}
.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
  padding-right: 10.5em;
}
.ql-editor .ql-indent-4:not(.ql-direction-rtl) {
  padding-left: 12em;
}
.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
  padding-left: 13.5em;
}
.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
  padding-right: 12em;
}
.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
  padding-right: 13.5em;
}
.ql-editor .ql-indent-5:not(.ql-direction-rtl) {
  padding-left: 15em;
}
.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
  padding-left: 16.5em;
}
.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
  padding-right: 15em;
}
.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
  padding-right: 16.5em;
}
.ql-editor .ql-indent-6:not(.ql-direction-rtl) {
  padding-left: 18em;
}
.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
  padding-left: 19.5em;
}
.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
  padding-right: 18em;
}
.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
  padding-right: 19.5em;
}
.ql-editor .ql-indent-7:not(.ql-direction-rtl) {
  padding-left: 21em;
}
.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
  padding-left: 22.5em;
}
.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
  padding-right: 21em;
}
.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
  padding-right: 22.5em;
}
.ql-editor .ql-indent-8:not(.ql-direction-rtl) {
  padding-left: 24em;
}
.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
  padding-left: 25.5em;
}
.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
  padding-right: 24em;
}
.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
  padding-right: 25.5em;
}
.ql-editor .ql-indent-9:not(.ql-direction-rtl) {
  padding-left: 27em;
}
.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
  padding-left: 28.5em;
}
.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
  padding-right: 27em;
}
.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
  padding-right: 28.5em;
}
.ql-editor .ql-video {
  display: block;
  max-width: 100%;
}
.ql-editor .ql-video.ql-align-center {
  margin: 0 auto;
}
.ql-editor .ql-video.ql-align-right {
  margin: 0 0 0 auto;
}
.ql-editor .ql-bg-black {
  background-color: #000;
}
.ql-editor .ql-bg-red {
  background-color: #e60000;
}
.ql-editor .ql-bg-orange {
  background-color: #f90;
}
.ql-editor .ql-bg-yellow {
  background-color: #ff0;
}
.ql-editor .ql-bg-green {
  background-color: #008a00;
}
.ql-editor .ql-bg-blue {
  background-color: #06c;
}
.ql-editor .ql-bg-purple {
  background-color: #93f;
}
.ql-editor .ql-color-white {
  color: #fff;
}
.ql-editor .ql-color-red {
  color: #e60000;
}
.ql-editor .ql-color-orange {
  color: #f90;
}
.ql-editor .ql-color-yellow {
  color: #ff0;
}
.ql-editor .ql-color-green {
  color: #008a00;
}
.ql-editor .ql-color-blue {
  color: #06c;
}
.ql-editor .ql-color-purple {
  color: #93f;
}
.ql-editor .ql-font-serif {
  font-family: Georgia, Times New Roman, serif;
}
.ql-editor .ql-font-monospace {
  font-family: Monaco, Courier New, monospace;
}
.ql-editor .ql-size-small {
  font-size: 0.75em;
}
.ql-editor .ql-size-large {
  font-size: 1.5em;
}
.ql-editor .ql-size-huge {
  font-size: 2.5em;
}
.ql-editor .ql-direction-rtl {
  direction: rtl;
  text-align: inherit;
}
.ql-editor .ql-align-center {
  text-align: center;
}
.ql-editor .ql-align-justify {
  text-align: justify;
}
.ql-editor .ql-align-right {
  text-align: right;
}
.ql-editor.ql-blank::before {
  color: rgba(0,0,0,0.6);
  content: attr(data-placeholder);
  font-style: italic;
  left: 15px;
  pointer-events: none;
  position: absolute;
  right: 15px;
}
.ql-snow.ql-toolbar:after,
.ql-snow .ql-toolbar:after {
  clear: both;
  content: '';
  display: table;
}
.ql-snow.ql-toolbar button,
.ql-snow .ql-toolbar button {
  background: none;
  border: none;
  cursor: pointer;
  display: inline-block;
  float: left;
  height: 24px;
  padding: 3px 5px;
  width: 28px;
  margin-left: 1px;
  margin-right: 1px;
}
.ql-snow.ql-toolbar button svg,
.ql-snow .ql-toolbar button svg {
  float: left;
  height: 100%;
}
.ql-snow.ql-toolbar button:active:hover,
.ql-snow .ql-toolbar button:active:hover {
  outline: none;
}
.ql-snow.ql-toolbar input.ql-image[type=file],
.ql-snow .ql-toolbar input.ql-image[type=file] {
  display: none;
}
.ql-snow.ql-toolbar button:hover,
.ql-snow .ql-toolbar button:hover,
.ql-snow.ql-toolbar button:focus,
.ql-snow .ql-toolbar button:focus,
.ql-snow.ql-toolbar .ql-picker-label:hover,
.ql-snow .ql-toolbar .ql-picker-label:hover,
.ql-snow.ql-toolbar .ql-picker-item:hover,
.ql-snow .ql-toolbar .ql-picker-item:hover {
  background-color: #f3f4f6;
}
.ql-snow.ql-toolbar button.ql-active,
.ql-snow .ql-toolbar button.ql-active,
.ql-snow.ql-toolbar .ql-picker-label.ql-active,
.ql-snow .ql-toolbar .ql-picker-label.ql-active,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected {
  background-color: #dbeafe;
  color: #2563eb;
}
.ql-snow.ql-toolbar button.ql-active .ql-fill,
.ql-snow .ql-toolbar button.ql-active .ql-fill,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,
.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,
.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
  fill: #2563eb;
}
.ql-snow.ql-toolbar button.ql-active .ql-stroke,
.ql-snow .ql-toolbar button.ql-active .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,
.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
  stroke: #2563eb;
}
@media (pointer: coarse) {
.ql-snow.ql-toolbar button:hover:not(.ql-active),
  .ql-snow .ql-toolbar button:hover:not(.ql-active) {
    color: #4b5563;
}
.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,
  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,
  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,
  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
    fill: #4b5563;
}
.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,
  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,
  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,
  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
    stroke: #4b5563;
}
}
.ql-snow {
  box-sizing: border-box;
}
.ql-snow * {
  box-sizing: border-box;
}
.ql-snow .ql-hidden {
  display: none;
}
.ql-snow .ql-out-bottom,
.ql-snow .ql-out-top {
  visibility: hidden;
}
.ql-snow .ql-tooltip {
  position: absolute;
  transform: translateY(10px);
}
.ql-snow .ql-tooltip a {
  cursor: pointer;
  text-decoration: none;
}
.ql-snow .ql-tooltip.ql-flip {
  transform: translateY(-10px);
}
.ql-snow .ql-formats {
  display: inline-block;
  vertical-align: middle;
}
.ql-snow .ql-formats:after {
  clear: both;
  content: '';
  display: table;
}
.ql-snow .ql-stroke {
  fill: none;
  stroke: #4b5563;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2;
}
.ql-snow .ql-stroke-miter {
  fill: none;
  stroke: #4b5563;
  stroke-miterlimit: 10;
  stroke-width: 2;
}
.ql-snow .ql-fill,
.ql-snow .ql-stroke.ql-fill {
  fill: #4b5563;
}
.ql-snow .ql-empty {
  fill: none;
}
.ql-snow .ql-even {
  fill-rule: evenodd;
}
.ql-snow .ql-thin,
.ql-snow .ql-stroke.ql-thin {
  stroke-width: 1;
}
.ql-snow .ql-transparent {
  opacity: 0.4;
}
.ql-snow .ql-direction svg:last-child {
  display: none;
}
.ql-snow .ql-direction.ql-active svg:last-child {
  display: inline;
}
.ql-snow .ql-direction.ql-active svg:first-child {
  display: none;
}
.ql-snow .ql-editor h1 {
  font-size: 2em;
}
.ql-snow .ql-editor h2 {
  font-size: 1.5em;
}
.ql-snow .ql-editor h3 {
  font-size: 1.17em;
}
.ql-snow .ql-editor h4 {
  font-size: 1em;
}
.ql-snow .ql-editor h5 {
  font-size: 0.83em;
}
.ql-snow .ql-editor h6 {
  font-size: 0.67em;
}
.ql-snow .ql-editor a {
  text-decoration: underline;
}
.ql-snow .ql-editor blockquote {
  border-left: 4px solid #ccc;
  margin-bottom: 5px;
  margin-top: 5px;
  padding-left: 16px;
}
.ql-snow .ql-editor code,
.ql-snow .ql-editor pre {
  background-color: #f0f0f0;
  border-radius: 3px;
}
.ql-snow .ql-editor pre {
  white-space: pre-wrap;
  margin-bottom: 5px;
  margin-top: 5px;
  padding: 5px 10px;
}
.ql-snow .ql-editor code {
  font-size: 85%;
  padding: 2px 4px;
}
.ql-snow .ql-editor pre.ql-syntax {
  background-color: #23241f;
  color: #f8f8f2;
  overflow: visible;
}
.ql-snow .ql-editor img {
  max-width: 100%;
}
.ql-snow .ql-picker {
  color: #4b5563;
  display: inline-block;
  float: left;
  font-size: 14px;
  font-weight: 500;
  height: 24px;
  position: relative;
  vertical-align: middle;
  margin-right: 1px;
  margin-left: 1px;
}
.ql-snow .ql-picker-label {
  cursor: pointer;
  display: flex;
  height: 100%;
  padding-left: 8px;
  padding-right: 2px;
  position: relative;
  width: 100%;
}
.ql-snow .ql-picker-label::before {
  display: inline-block;
  line-height: 22px;
}
.ql-snow .ql-picker-options {
  background-color: #fff;
  display: none;
  min-width: 100%;
  position: absolute;
  white-space: nowrap;
}
.ql-snow .ql-picker-options .ql-picker-item {
  cursor: pointer;
  display: block;
  padding: 5px 8px;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-label {
  color: #d1d5db;
  z-index: 2;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
  fill: #d1d5db;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
  stroke: #d1d5db;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-options {
  display: block;
  margin-top: -1px;
  top: 100%;
  z-index: 1;
}
.ql-snow .ql-color-picker,
.ql-snow .ql-icon-picker {
  width: 28px;
}
.ql-snow .ql-color-picker .ql-picker-label,
.ql-snow .ql-icon-picker .ql-picker-label {
  padding: 2px 4px;
}
.ql-snow .ql-color-picker .ql-picker-label svg,
.ql-snow .ql-icon-picker .ql-picker-label svg {
  right: 4px;
}
.ql-snow .ql-icon-picker .ql-picker-options {
  padding: 3px;
}
.ql-snow .ql-icon-picker .ql-picker-item {
  height: 24px;
  width: 24px;
  padding: 2px 4px;
  margin: 2px;
}
.ql-snow .ql-color-picker .ql-picker-options {
  padding: 3px 5px;
  width: 152px;
}
.ql-snow .ql-color-picker .ql-picker-item {
  border: 1px solid transparent;
  float: left;
  height: 16px;
  margin: 2px;
  padding: 0px;
  width: 16px;
}
.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
  position: absolute;
  margin-top: -9px;
  right: 0;
  top: 50%;
  width: 18px;
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {
  content: attr(data-label);
}
.ql-snow .ql-picker.ql-header {
  width: 98px;
}
.ql-snow .ql-picker.ql-header .ql-picker-label::before,
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
  content: 'Normal';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
  content: 'Heading 1';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
  content: 'Heading 2';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
  content: 'Heading 3';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
  content: 'Heading 4';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
  content: 'Heading 5';
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
  content: 'Heading 6';
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
  font-size: 2em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
  font-size: 1.5em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
  font-size: 1.17em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
  font-size: 1em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
  font-size: 0.83em;
}
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
  font-size: 0.67em;
}
.ql-snow .ql-picker.ql-font {
  width: 108px;
}
.ql-snow .ql-picker.ql-font .ql-picker-label::before,
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
  content: 'Sans Serif';
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
  content: 'Serif';
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
  content: 'Monospace';
}
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
  font-family: Georgia, Times New Roman, serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
  font-family: Monaco, Courier New, monospace;
}
.ql-snow .ql-picker.ql-size {
  width: 98px;
}
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
  content: 'Normal';
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
  content: 'Small';
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
  content: 'Large';
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
  content: 'Huge';
}
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
  font-size: 10px;
}
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
  font-size: 18px;
}
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
  font-size: 32px;
}
.ql-snow .ql-color-picker.ql-background .ql-picker-item {
  background-color: #fff;
}
.ql-snow .ql-color-picker.ql-color .ql-picker-item {
  background-color: #000;
}
.ql-toolbar.ql-snow {
  border: 1px solid #d1d5db;
  box-sizing: border-box;
  font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
  padding: 8px;
}
.ql-toolbar.ql-snow .ql-formats {
  margin-right: 15px;
}
.ql-toolbar.ql-snow .ql-picker-label {
  border: 1px solid transparent;
}
.ql-toolbar.ql-snow .ql-picker-options {
  border: 1px solid transparent;
  box-shadow: rgba(0,0,0,0.2) 0 2px 8px;
}
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
  border-color: #d1d5db;
}
.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
  border-color: #d1d5db;
}
.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,
.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
  border-color: #000;
}
.ql-toolbar.ql-snow + .ql-container.ql-snow {
  border-top: 0px;
}
.ql-snow .ql-tooltip {
  background-color: #fff;
  border: 1px solid #d1d5db;
  box-shadow: 0px 0px 5px #d1d5db;
  color: #4b5563;
  padding: 5px 12px;
  white-space: nowrap;
}
.ql-snow .ql-tooltip::before {
  content: "Visit URL:";
  line-height: 26px;
  margin-right: 8px;
}
.ql-snow .ql-tooltip input[type=text] {
  display: none;
  border: 1px solid #d1d5db;
  font-size: 13px;
  height: 26px;
  margin: 0px;
  padding: 3px 5px;
  width: 170px;
}
.ql-snow .ql-tooltip a.ql-preview {
  display: inline-block;
  max-width: 200px;
  overflow-x: hidden;
  text-overflow: ellipsis;
  vertical-align: top;
}
.ql-snow .ql-tooltip a.ql-action::after {
  border-right: 1px solid #d1d5db;
  content: 'Edit';
  margin-left: 16px;
  padding-right: 8px;
}
.ql-snow .ql-tooltip a.ql-remove::before {
  content: 'Remove';
  margin-left: 8px;
}
.ql-snow .ql-tooltip a {
  line-height: 26px;
}
.ql-snow .ql-tooltip.ql-editing a.ql-preview,
.ql-snow .ql-tooltip.ql-editing a.ql-remove {
  display: none;
}
.ql-snow .ql-tooltip.ql-editing input[type=text] {
  display: inline-block;
}
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
  border-right: 0px;
  content: 'Save';
  padding-right: 0px;
}
.ql-snow .ql-tooltip[data-mode=link]::before {
  content: "Enter link:";
}
.ql-snow .ql-tooltip[data-mode=formula]::before {
  content: "Enter formula:";
}
.ql-snow .ql-tooltip[data-mode=video]::before {
  content: "Enter video:";
}
.ql-snow a {
  color: #2563eb;
}
.ql-container.ql-snow {
  border: 1px solid #d1d5db;
}
.ql-editor {
  min-height: 300px;
}
.ql-editor img {
  display: inline;
}
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/Pagination.vue?vue&type=style&index=0&id=1d45c5d5&lang=scss ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.pagination ul > li > a {
    padding-left: 1rem;
    padding-right: 1rem;
    padding-top: 0.5rem;
    padding-bottom: 0.5rem
}
.pagination .current-page {
    border-radius: 0.25rem;
    --tw-bg-opacity: 1;
    background-color: rgb(225 225 225 / 1);
    background-color: rgb(225 225 225 / var(--tw-bg-opacity))
}
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/ResponsiveTable/ResponsiveTable.vue?vue&type=style&index=0&id=4807d01a&lang=scss ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
table.responsive {
  position: relative;
  border-collapse: separate;
  border-spacing: 0 1rem
}
@media (min-width: 1024px) {
table.responsive.condensed {
    border-collapse: collapse;
    border-spacing: 0
}
table.responsive.panel {
    overflow: hidden;
    border-radius: 0.5rem;
    --tw-shadow: 0px 2px 5px rgba(0, 0, 0, 0.3);
    --tw-shadow-colored: 0px 2px 5px var(--tw-shadow-color);
    box-shadow: 0 0 #0000, 0 0 #0000, 0px 2px 5px rgba(0, 0, 0, 0.3);
    box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
}
table.responsive thead th {
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem
}
table.responsive tfoot td {
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem
}
table.responsive tbody tr {
  margin-bottom: 1rem;
  display: block;
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity))
}
@media (min-width: 1024px) {
table.responsive tbody tr {
    display: table-row;
    margin-bottom: 0px
}
}
table.responsive tbody tr td {
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem
}
table.responsive tbody tr td .mobile-label {
  display: block;
  font-weight: 700
}
@media (min-width: 1024px) {
table.responsive tbody tr td .mobile-label {
    display: none
}
}
table.responsive tbody tr td {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-bottom-width: 1px;
  --tw-border-opacity: 1;
  border-color: rgb(225 225 225 / 1);
  border-color: rgb(225 225 225 / var(--tw-border-opacity))
}
@media (min-width: 1024px) {
table.responsive tbody tr td {
    display: table-cell
}
}
table.responsive tbody tr:last-child {
  margin-bottom: 0px
}
@media (min-width: 1024px) {
table.responsive.condensed tbody td {
    padding-left: 1rem;
    padding-right: 1rem;
    padding-top: 0.25rem;
    padding-bottom: 0.25rem
}
}
table.responsive.panel tbody tr {
  overflow: hidden;
  border-radius: 0.5rem;
  --tw-shadow: 0px 2px 5px rgba(0, 0, 0, 0.3);
  --tw-shadow-colored: 0px 2px 5px var(--tw-shadow-color);
  box-shadow: 0 0 #0000, 0 0 #0000, 0px 2px 5px rgba(0, 0, 0, 0.3);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
@media (min-width: 1024px) {
table.responsive.panel tbody tr {
    border-radius: 0px;
    --tw-shadow: 0 0 #0000;
    --tw-shadow-colored: 0 0 #0000;
    box-shadow: 0 0 #0000, 0 0 #0000, 0 0 #0000;
    box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
}
table.responsive.striped tbody tr:nth-child(even) {
  --tw-bg-opacity: 1;
  background-color: rgb(236 236 236 / 1);
  background-color: rgb(236 236 236 / var(--tw-bg-opacity))
}
table.responsive.striped.panel tbody tr {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity))
}
@media (min-width: 1024px) {
table.responsive.striped.panel tbody tr:nth-child(even) {
    --tw-bg-opacity: 1;
    background-color: rgb(225 225 225 / 1);
    background-color: rgb(225 225 225 / var(--tw-bg-opacity))
}
}
table.responsive.busy::after {
  position: absolute;
  top: 0px;
  left: 0px;
  display: block;
  height: 100%;
  width: 100%;
  --tw-bg-opacity: 1;
  background-color: rgb(42 42 42 / 1);
  background-color: rgb(42 42 42 / var(--tw-bg-opacity));
  opacity: 0.5;
  content: " "
}
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/Modal.vue?vue&type=style&index=0&id=8533877c&lang=scss&scoped=true ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.modal-loading .icon[data-v-8533877c] {
  font-size: 10rem;
  animation: spin 3s linear infinite;
  display: block;
}
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/pages/shipmentPreparator/ShipmentPreparator.vue?vue&type=style&index=0&id=3e54c346&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.min-h-inherit {
    min-height: inherit;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/pages/shipment/ShipmentOrdering.vue?vue&type=style&index=0&id=67b3f97a&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.stop-point-enter-active[data-v-67b3f97a], .stop-point-leave-active[data-v-67b3f97a] {
    transition: all 0.3s ease;
}
.stop-point-enter-from[data-v-67b3f97a], .stop-point-leave-to[data-v-67b3f97a] {
    opacity: 0;
    transform: translateY(20px);
}
.stop-point-move[data-v-67b3f97a] {
    transition: transform 0.3s ease;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/ConfirmButton.vue?vue&type=style&index=0&id=6b7f2427&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.confirmation[data-v-6b7f2427]::before {
    position: absolute;
    display: block;
    content: attr(data-message);
    opacity: 0.9;
    color: white;
    border-radius: 5px;
    padding: 10px;
    font-size: 12px;
    white-space: nowrap;
    top: -100%;
    --tw-bg-opacity: 1;
    background-color: rgb(220 47 51 / 1);
    background-color: rgb(220 47 51 / var(--tw-bg-opacity))}
.confirmation[data-v-6b7f2427]::after {
    content: "";
    position: absolute;
    display: block;
    height: 0;
    width: 0;
    border: 10px solid transparent;
    top: -5px;
    opacity: 0.9;
    --tw-border-opacity: 1;
    border-top-color: rgb(220 47 51 / 1);
    border-top-color: rgb(220 47 51 / var(--tw-border-opacity))}


/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/SigningModal.vue?vue&type=style&index=0&id=0e559b23&scoped=true&lang=css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.modal[data-v-0e559b23] {
    --tw-bg-opacity: 1;
    background-color: rgb(225 225 225 / 1);
    background-color: rgb(225 225 225 / var(--tw-bg-opacity));
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    justify-content: center;
    z-index: 50;
    transform-origin: center center;
    width: 100%;
    height: 100%;
}
.modal-content[data-v-0e559b23] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    padding: 15px;
}
.buttons[data-v-0e559b23] {
    font-size: 2.25rem;
    line-height: 2.5rem;
    --tw-text-opacity: 1;
    color: rgb(255 255 255 / 1);
    color: rgb(255 255 255 / var(--tw-text-opacity));
    display: flex;
    flex-direction: column;
    gap: 10px;
}
canvas[data-v-0e559b23] {
    --tw-bg-opacity: 1;
    background-color: rgb(255 255 255 / 1);
    background-color: rgb(255 255 255 / var(--tw-bg-opacity));
    border: 2px solid black;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/pages/shipment/ShipmentDelivery.vue?vue&type=style&index=0&id=4a8edf9a&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.custom-checkbox input[type="checkbox"] ~ .checked[data-v-4a8edf9a], .custom-checkbox input[type="checkbox"]:checked ~ .not-checked[data-v-4a8edf9a] {
        display: none;
}
.custom-checkbox input[type="checkbox"]:checked ~ .checked[data-v-4a8edf9a], .custom-checkbox input[type="checkbox"] ~ .not-checked[data-v-4a8edf9a] {
        display: inline-block;
}
.fade-enter-active[data-v-4a8edf9a], .fade-leave-active[data-v-4a8edf9a] {
    transition: opacity 0.3s ease, transform 0.3s ease;
}
.fade-enter[data-v-4a8edf9a], .fade-leave-to[data-v-4a8edf9a] {
    opacity: 0;
    transform: translateY(-20px);
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/pages/shipment/ShipmentUnfinished.vue?vue&type=style&index=0&id=069b7ab1&scoped=true&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.custom-checkbox input[type="checkbox"] ~ .checked[data-v-069b7ab1], .custom-checkbox input[type="checkbox"]:checked ~ .not-checked[data-v-069b7ab1] {
        display: none;
}
.custom-checkbox input[type="checkbox"]:checked ~ .checked[data-v-069b7ab1], .custom-checkbox input[type="checkbox"] ~ .not-checked[data-v-069b7ab1] {
        display: inline-block;
}
.fade-enter-active[data-v-069b7ab1], .fade-leave-active[data-v-069b7ab1] {
    transition: opacity 0.3s ease, transform 0.3s ease;
}
.fade-enter[data-v-069b7ab1], .fade-leave-to[data-v-069b7ab1] {
    opacity: 0;
    transform: translateY(-20px);
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/pages/shipment/ShipmentLoading.vue?vue&type=style&index=0&id=45c9d106&scoped=true&lang=css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.fade-enter-active[data-v-45c9d106], .fade-leave-active[data-v-45c9d106] {
    transition: opacity 0.3s ease, transform 0.3s ease;
}
.fade-enter[data-v-45c9d106], .fade-leave-to[data-v-45c9d106] {
    opacity: 0;
    transform: translateY(-20px);
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/Layout/BackToTop.vue?vue&type=style&index=0&id=8037cd2e&lang=scss ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/Layout/BackToTop.vue?vue&type=style&index=1&id=8037cd2e&lang=scss&scoped=true ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
#back-to-top-button.visible[data-v-8037cd2e] {
    z-index: 10;
    opacity: 0.8;
    transition-property: opacity;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 300ms;
    transition-timing-function: cubic-bezier(0.4, 0, 1, 1)
}
#back-to-top-button.visible[data-v-8037cd2e]:hover {
    opacity: 1
}
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/Layout/Navigation/DropdownMenu.vue?vue&type=style&index=0&id=d8bc9bfe&lang=scss ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.dropdown > .dropdown-menu {
  position: absolute;
  left: auto;
  display: flex;
  display: none;
  width: -moz-max-content;
  width: max-content;
  min-width: 100%;
  flex-direction: column;
  white-space: nowrap;
  --tw-translate-y: -2rem;
  --tw-translate-x: -1rem;
  --tw-scale-x: .75;
  --tw-scale-y: .75;
  transform: translate(-1rem, -2rem) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(.75) scaleY(.75);
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate3d(-1rem, -2rem, 0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(.75) scaleY(.75);
  transform: translate3d(var(--tw-translate-x), var(--tw-translate-y), 0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  opacity: 0;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
  z-index: 50;
  justify-content: flex-start;
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  font-size: 1rem;
  line-height: 1.5rem;
  font-weight: 400;
  text-transform: none;
  --tw-text-opacity: 1;
  color: rgb(42 42 42 / 1);
  color: rgb(42 42 42 / var(--tw-text-opacity));
  --tw-shadow: 0px 3px 10px rgba(0, 0, 0, 0.3);
  --tw-shadow-colored: 0px 3px 10px var(--tw-shadow-color);
  box-shadow: 0 0 #0000, 0 0 #0000, 0px 3px 10px rgba(0, 0, 0, 0.3);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.dropdown > .dropdown-menu.right-0 {
  --tw-translate-x: 1rem;
  transform: translate(1rem, var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.dropdown.mobile-full-width > .dropdown-menu {
  position: fixed
}
.dropdown .dropdown > span {
  padding: 0.5rem
}
@media (min-width: 1024px) {
.dropdown .dropdown > span {
    padding: 0px
}
.dropdown .dropdown > .dropdown-menu {
    padding-left: 0px;
    padding-right: 0px
}
}
.dropdown.disabled::after {
  position: absolute;
  left: 0px;
  top: 0px;
  display: block;
  height: 100%;
  width: 100%;
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / 1);
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
  opacity: 0.7;
  content: " "
}
.dropdown.hoverable:not(.disabled) {
  /*
   * https://developer.mozilla.org/en-US/docs/Web/CSS/@media/pointer
   * coarse: The primary input mechanism includes a pointing device of limited accuracy.
   */
}
@media not all and (pointer: coarse) {
@media (min-width: 1024px) {
.dropdown.hoverable:not(.disabled):hover:hover > span .marso-icon-chevron-down {
      --tw-rotate: 180deg;
      transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(180deg) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
      transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.dropdown.hoverable:not(.disabled):hover:hover > .dropdown-menu {
      display: flex;
      --tw-translate-y: 0px;
      --tw-translate-x: 0px;
      --tw-scale-x: 1;
      --tw-scale-y: 1;
      transform: translate(0px, 0px) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(1) scaleY(1);
      transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
      opacity: 1
}
.dropdown.hoverable:not(.disabled):hover:hover .dropdown:hover > .dropdown-menu {
      position: relative;
      --tw-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.3);
      --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);
      box-shadow: 0 0 #0000, 0 0 #0000, inset 0 2px 4px 0 rgba(0, 0, 0, 0.3);
      box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
}
}
.dropdown.active:not(.hoverable) {
  --tw-border-opacity: 1;
  border-color: rgb(69 82 162 / 1);
  border-color: rgb(69 82 162 / var(--tw-border-opacity));
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color), var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) rgb(69 82 162 / 0.5), 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
  --tw-ring-color: rgb(69 82 162 / var(--tw-ring-opacity));
  --tw-ring-opacity: 0.5
}
.dropdown.active > span .marso-icon-chevron-down {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(180deg) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.dropdown.active > .dropdown-menu {
  display: flex;
  --tw-translate-y: 0px;
  --tw-translate-x: 0px;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  transform: translate(0px, 0px) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(1) scaleY(1);
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  opacity: 1
}
.dropdown.active .dropdown.active > .dropdown-menu {
  position: relative;
  --tw-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.3);
  --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);
  box-shadow: 0 0 #0000, 0 0 #0000, inset 0 2px 4px 0 rgba(0, 0, 0, 0.3);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./node_modules/resolve-url-loader/index.js??clonedRuleSet-13.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-13.use[4]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/pages/App.vue?vue&type=style&index=0&id=56438038&lang=scss ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.app-content {
  min-height: calc(100vh - 3.5rem - 2.125rem - 1.875rem);
}
.app-content-login {
  min-height: calc(100vh - 1.875rem);
  padding-bottom: 50px;
}
@media screen and (max-width: 1024px) {
.app-content {
    min-height: calc(100vh - 3.5rem - 1.875rem);
}
.app-content-login {
    min-height: calc(100vh - 13.25rem);
    padding-bottom: 50px;
}
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcC4yNjllMDEyMy5jc3MiLCJtYXBwaW5ncyI6Ijs7O0FBRUE7RUFDRTtFQUNBLHVPQUNFO0VBSUY7RUFDQTtFQUNBO0FDTEY7QURRQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7QUNQRjtBRFdFO0VBQ0UsZ0JFNUJtQjtBRG9CdkI7QURZRTtFQUNFLGdCRWhDcUI7QUR1QnpCO0FEYUU7RUFDRSxnQkVwQzhCO0FEMEJsQztBRGNFO0VBQ0UsZ0JFeENzQjtBRDZCMUI7QURlRTtFQUNFLGdCRTVDa0I7QURnQ3RCO0FEZ0JFO0VBQ0UsZ0JFaERhO0FEbUNqQjtBRGlCRTtFQUNFLGdCRXBEaUI7QURzQ3JCO0FEa0JFO0VBQ0UsZ0JFeER1QjtBRHlDM0I7QURtQkU7RUFDRSxnQkU1RGtCO0FENEN0QjtBRG9CRTtFQUNFLGdCRWhFa0I7QUQrQ3RCO0FEcUJFO0VBQ0UsZ0JFcEVlO0FEa0RuQjtBRHNCRTtFQUNFLGdCRXhFZTtBRHFEbkI7QUR1QkU7RUFDRSxnQkU1RWU7QUR3RG5CO0FEd0JFO0VBQ0UsZ0JFaEZlO0FEMkRuQjtBRHlCRTtFQUNFLGdCRXBGYztBRDhEbEI7QUQwQkU7RUFDRSxnQkV4RnNCO0FEaUUxQjtBRDJCRTtFQUNFLGdCRTVGa0I7QURvRXRCO0FENEJFO0VBQ0UsZ0JFaEdnQjtBRHVFcEI7QUQ2QkU7RUFDRSxnQkVwR29CO0FEMEV4QjtBRDhCRTtFQUNFLGdCRXhHc0I7QUQ2RTFCO0FEK0JFO0VBQ0UsZ0JFNUdzQjtBRGdGMUI7QURnQ0U7RUFDRSxnQkVoSGdCO0FEbUZwQjtBRGlDRTtFQUNFLGdCRXBIZ0I7QURzRnBCO0FEa0NFO0VBQ0UsZ0JFeEhtQjtBRHlGdkI7QURtQ0U7RUFDRSxnQkU1SG1CO0VGNkhuQjtBQ2hDSjtBRG9DRTtFQUNFLGdCRWpJOEI7QURnR2xDO0FEcUNFO0VBQ0UsZ0JFcklpQjtBRG1HckI7QURzQ0U7RUFDRSxnQkV6SWlCO0FEc0dyQjtBRHVDRTtFQUNFLGdCRTdJYztBRHlHbEI7QUR3Q0U7RUFDRSxnQkVqSmdCO0FENEdwQjtBRHlDRTtFQUNFLGdCRXJKYTtBRCtHakI7QUQwQ0U7RUFDRSxnQkV6SnFCO0FEa0h6QjtBRDJDRTtFQUNFLGdCRTdKZTtBRHFIbkI7QUQ0Q0U7RUFDRSxnQkVqS2lCO0FEd0hyQjtBRDZDRTtFQUNFLGdCRXJLZ0I7QUQySHBCO0FEOENFO0VBQ0UsZ0JFektvQjtBRDhIeEI7QUQrQ0U7RUFDRSxnQkU3S29CO0FEaUl4QjtBRGdERTtFQUNFLGdCRWpMZTtBRG9JbkI7QURpREU7RUFDRSxnQkVyTG9CO0FEdUl4QjtBRGtERTtFQUNFLGdCRXpMMEI7QUQwSTlCO0FEbURFO0VBQ0UsZ0JFN0xrQjtBRDZJdEI7QURvREU7RUFDRSxnQkVqTWtCO0FEZ0p0QjtBRHFERTtFQUNFLGdCRXJNa0I7QURtSnRCO0FEc0RFO0VBQ0UsZ0JFek1jO0FEc0psQjtBRHVERTtFQUNFLGdCRTdNc0I7QUR5SjFCO0FEd0RFO0VBQ0UsZ0JFak5nQjtBRDRKcEI7QUR5REU7RUFDRSxnQkVyTmtCO0FEK0p0QjtBRDBERTtFQUNFLGdCRXpOb0I7QURrS3hCO0FEMkRFO0VBQ0UsZ0JFN05jO0FEcUtsQjtBRDRERTtFQUNFLGdCRWpPd0I7QUR3SzVCO0FENkRFO0VBQ0UsZ0JFck91QjtFRnNPdkI7QUMxREo7QUQ4REU7RUFDRSxnQkUxT3VCO0VGMk92QjtFQUNBO0FDM0RKO0FEK0RFO0VBQ0UsZ0JFaFB1QjtFRmlQdkI7RUFDQTtBQzVESjtBRGdFRTtFQUNFLGdCRXRQdUI7RUZ1UHZCO0VBQ0E7QUM3REo7QURpRUU7RUFDRSxnQkU1UHVCO0VGNlB2QjtFQUNBO0FDOURKO0FEa0VFO0VBQ0UsZ0JFbFF1QjtFRm1RdkI7RUFDQTtBQy9ESjtBRG1FRTtFQUNFLGdCRXhRdUI7RUZ5UXZCO0VBQ0E7QUNoRUo7QURvRUU7RUFDRSxnQkU5UXVCO0VGK1F2QjtFQUNBO0FDakVKO0FEcUVFO0VBQ0UsZ0JFcFJ1QjtFRnFSdkI7RUFDQTtBQ2xFSjtBRHNFRTtFQUNFLGdCRTFSd0I7RUYyUnhCO0VBQ0E7QUNuRUo7QUR1RUU7RUFDRSxnQkVoU3dCO0VGaVN4QjtFQUNBO0FDcEVKO0FEd0VFO0VBQ0UsZ0JFdFN3QjtFRnVTeEI7RUFDQTtBQ3JFSjtBRHlFRTtFQUNFLGdCRTVTd0I7RUY2U3hCO0VBQ0E7QUN0RUo7QUQwRUU7RUFDRSxnQkVsVHdCO0VGbVR4QjtFQUNBO0FDdkVKO0FEMkVFO0VBQ0UsZ0JFeFR3QjtFRnlUeEI7RUFDQTtBQ3hFSjtBRDRFRTtFQUNFLGdCRTlUd0I7RUYrVHhCO0VBQ0E7QUN6RUo7QUQ2RUU7RUFDRSxnQkVwVXdCO0VGcVV4QjtFQUNBO0FDMUVKO0FEOEVFO0VBQ0UsZ0JFMVV3QjtFRjJVeEI7RUFDQTtBQzNFSjtBRCtFRTtFQUNFLGdCRWhWd0I7RUZpVnhCO0VBQ0E7QUM1RUo7QURnRkU7RUFDRSxnQkV0VndCO0VGdVZ4QjtFQUNBO0FDN0VKO0FEaUZFO0VBQ0UsZ0JFNVZ3QjtFRjZWeEI7RUFDQTtBQzlFSjtBRGtGRTtFQUNFLGdCRWxXd0I7RUZtV3hCO0VBQ0E7QUMvRUo7QURtRkU7RUFDRSxnQkV4V3dCO0VGeVd4QjtFQUNBO0FDaEZKO0FEb0ZFO0VBQ0UsZ0JFOVd3QjtFRitXeEI7RUFDQTtBQ2pGSjtBRHFGRTtFQUNFLGdCRXBYd0I7RUZxWHhCO0VBQ0E7QUNsRko7QURzRkU7RUFDRSxnQkUxWHdCO0VGMlh4QjtFQUNBO0FDbkZKO0FEdUZFO0VBQ0UsZ0JFaFljO0FENFNsQjtBRHdGRTtFQUNFLGdCRXBZa0I7QUQrU3RCO0FEeUZFO0VBQ0UsZ0JFeFljO0FEa1RsQjtBRDBGRTtFQUNFLGdCRTVZZTtBRHFUbkI7QUQyRkU7RUFDRSxnQkVoWndCO0FEd1Q1QjtBRDRGRTtFQUNFLGdCRXBaYztBRDJUbEI7QUQ2RkU7RUFDRSxnQkV4WmM7QUQ4VGxCO0FEOEZFO0VBQ0UsZ0JFNVpxQjtBRGlVekI7QUQrRkU7RUFDRSxnQkVoYWdCO0FEb1VwQjtBRGdHRTtFQUNFLGdCRXBhYztBRHVVbEI7QURpR0U7RUFDRSxnQkV4YWlCO0FEMFVyQjtBRGtHRTtFQUNFLGdCRTVhZTtBRDZVbkI7QURtR0U7RUFDRSxnQkVoYndCO0FEZ1Y1QjtBRG9HRTtFQUNFLGdCRXBib0I7QURtVnhCO0FEcUdFO0VBQ0UsZ0JFeGJhO0FEc1ZqQjtBRHNHRTtFQUNFLGdCRTViYztBRHlWbEI7QUR1R0U7RUFDRSxnQkVoY2lCO0FENFZyQjtBRHdHRTtFQUNFLGdCRXBjb0I7QUQrVnhCO0FEeUdFO0VBQ0UsZ0JFeGNpQjtBRGtXckI7QUQwR0U7RUFDRSxnQkU1Y29CO0FEcVd4QjtBRDJHRTtFQUNFLGdCRWhkaUI7QUR3V3JCO0FENEdFO0VBQ0UsZ0JFcGRnQjtBRDJXcEI7QUQ2R0U7RUFDRSxnQkV4ZGlCO0FEOFdyQjtBRDhHRTtFQUNFLGdCRTVkdUI7QURpWDNCO0FEK0dFO0VBQ0UsZ0JFaGVvQjtBRG9YeEI7QURnSEU7RUFDRSxnQkVwZW9CO0VGcWVwQjtBQzdHSjtBRGlIRTtFQUNFLGdCRXplb0I7RUYwZXBCO0FDOUdKO0FEa0hFO0VBQ0UsZ0JFOWVvQjtFRitlcEI7QUMvR0o7QURtSEU7RUFDRSxnQkVuZm9CO0VGb2ZwQjtBQ2hISjtBRG9IRTtFQUNFLGdCRXhmYTtBRHVZakI7QURxSEU7RUFDRSxnQkU1ZmU7QUQwWW5CO0FEc0hFO0VBQ0UsZ0JFaGdCYztBRDZZbEI7QUR1SEU7RUFDRSxnQkVwZ0JxQjtBRGdaekI7QUR3SEU7RUFDRSxnQkV4Z0JlO0FEbVpuQjtBRHlIRTtFQUNFLGdCRTVnQmE7QURzWmpCO0FEMEhFO0VBQ0UsZ0JFaGhCZTtBRHlabkI7QUQySEU7RUFDRSxnQkVwaEJlO0FENFpuQjtBRDRIRTtFQUNFLGdCRXhoQmM7QUQrWmxCO0FENkhFO0VBQ0UsZ0JFNWhCbUI7QURrYXZCO0FEOEhFO0VBQ0UsZ0JFaGlCd0I7QURxYTVCO0FEK0hFO0VBQ0UsZ0JFcGlCbUI7QUR3YXZCO0FEZ0lFO0VBQ0UsZ0JFeGlCc0I7QUQyYTFCO0FEaUlFO0VBQ0UsZ0JFNWlCbUI7QUQ4YXZCO0FEa0lFO0VBQ0UsZ0JFaGpCYTtBRGliakI7QURtSUU7RUFDRSxnQkVwakJlO0FEb2JuQjtBRG9JRTtFQUNFLGdCRXhqQmM7QUR1YmxCO0FEcUlFO0VBQ0UsZ0JFNWpCdUI7QUQwYjNCO0FEc0lFO0VBQ0UsZ0JFaGtCZ0I7QUQ2YnBCO0FEdUlFO0VBQ0UsZ0JFcGtCdUI7QURnYzNCO0FEd0lFO0VBQ0UsZ0JFeGtCZTtBRG1jbkI7QUR5SUU7RUFDRSxnQkU1a0JhO0FEc2NqQjtBRDBJRTtFQUNFLGdCRWhsQmdCO0FEeWNwQjtBRDJJRTtFQUNFLGdCRXBsQmM7QUQ0Y2xCO0FENElFO0VBQ0UsZ0JFeGxCaUI7QUQrY3JCO0FENklFO0VBQ0UsZ0JFNWxCYztBRGtkbEI7QUQ4SUU7RUFDRSxnQkVobUJlO0FEcWRuQjtBRCtJRTtFQUNFLGdCRXBtQmU7QUR3ZG5CO0FEZ0pFO0VBQ0UsZ0JFeG1CZ0I7QUQyZHBCO0FEaUpFO0VBQ0UsZ0JFNW1CZTtBRDhkbkI7QURrSkU7RUFDRSxnQkVobkJjO0FEaWVsQjtBRG1KRTtFQUNFLGdCRXBuQmdCO0FEb2VwQjtBRG9KRTtFQUNFLGdCRXhuQnNCO0FEdWUxQjtBRHFKRTtFQUNFLGdCRTVuQnVCO0FEMGUzQjtBRHNKRTtFQUNFLGdCRWhvQnFCO0FENmV6QjtBRHVKRTtFQUNFLGdCRXBvQnNCO0FEZ2YxQjtBRHdKRTtFQUNFLGdCRXhvQnNCO0FEbWYxQjtBRHlKRTtFQUNFLGdCRTVvQnNCO0FEc2YxQjtBRDBKRTtFQUNFLGdCRWhwQnFCO0FEeWZ6QjtBRDJKRTtFQUNFLGdCRXBwQjRCO0FENGZoQztBRDRKRTtFQUNFLGdCRXhwQjhCO0FEK2ZsQztBRDZKRTtFQUNFLGdCRTVwQmlCO0FEa2dCckI7QUQ4SkU7RUFDRSxnQkVocUJvQjtBRHFnQnhCO0FEK0pFO0VBQ0UsZ0JFcHFCc0I7QUR3Z0IxQjtBRGdLRTtFQUNFLGdCRXhxQmdCO0FEMmdCcEI7QURpS0U7RUFDRSxnQkU1cUJrQjtBRDhnQnRCO0FEa0tFO0VBQ0UsZ0JFaHJCaUI7QURpaEJyQjtBRG1LRTtFQUNFLGdCRXByQmdCO0FEb2hCcEI7QURvS0U7RUFDRSxnQkV4ckJvQjtBRHVoQnhCO0FEcUtFO0VBQ0UsZ0JFNXJCa0I7QUQwaEJ0QjtBRHNLRTtFQUNFLGdCRWhzQm9CO0FENmhCeEI7QUR1S0U7RUFDRSxnQkVwc0JxQjtBRGdpQnpCO0FEd0tFO0VBQ0UsZ0JFeHNCYztBRG1pQmxCO0FEeUtFO0VBQ0UsZ0JFNXNCa0I7QURzaUJ0QjtBRDBLRTtFQUNFLGdCRWh0Qm1CO0FEeWlCdkI7QUQyS0U7RUFDRSxnQkVwdEJtQjtBRDRpQnZCO0FENEtFO0VBQ0UsZ0JFeHRCa0I7QUQraUJ0QjtBRDZLRTtFQUNFLGdCRTV0QmlCO0FEa2pCckI7QUQ4S0U7RUFDRSxnQkVodUJrQjtBRHFqQnRCO0FEK0tFO0VBQ0UsZ0JFcHVCb0I7QUR3akJ4QjtBRGdMRTtFQUNFLGdCRXh1QmtCO0FEMmpCdEI7QURpTEU7RUFDRSxnQkU1dUJnQjtBRDhqQnBCO0FEa0xFO0VBQ0UsZ0JFaHZCbUI7QURpa0J2QjtBRG1MRTtFQUNFLGdCRXB2QmlCO0FEb2tCckI7QURvTEU7RUFDRSxnQkV4dkJzQjtBRHVrQjFCO0FEcUxFO0VBQ0UsZ0JFNXZCbUI7QUQwa0J2QjtBRHNMRTtFQUNFLGdCRWh3QmlCO0FENmtCckI7QUF4dkJBO0FBQUE7OztDQUFBO0FBQUE7OztFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Q0FBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7S0FBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7OztDQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTs7OztDQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBOztDQUFBO0FBQUE7RUFBQTtVQUFBO0FBQUE7QUFBQTs7Q0FBQTtBQUFBOzs7Ozs7RUFBQTtFQUFBO0FBQUE7QUFBQTs7Q0FBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7O0NBQUE7QUFBQTs7RUFBQTtBQUFBO0FBQUE7OztDQUFBO0FBQUE7Ozs7RUFBQTtFQUFBO0FBQUE7QUFBQTs7Q0FBQTtBQUFBO0VBQUE7QUFBQTtBQUFBOztDQUFBO0FBQUE7O0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBOzs7O0NBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7Ozs7Q0FBQTtBQUFBOzs7OztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTs7Q0FBQTtBQUFBOztFQUFBO0FBQUE7QUFBQTs7O0NBQUE7QUFBQTs7OztFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7O0NBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTs7Q0FBQTtBQUFBO0VBQUE7QUFBQTtBQUFBOztDQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7O0NBQUE7QUFBQTs7RUFBQTtBQUFBO0FBQUE7OztDQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTs7Q0FBQTtBQUFBO0VBQUE7QUFBQTtBQUFBOzs7Q0FBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7O0NBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTs7Q0FBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7OztFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7O0NBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTs7O0NBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0VBQUE7QUFBQTtBQUFBOztDQUFBO0FBQUE7O0VBQUE7QUFBQTtBQUFBOztDQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7Ozs7Q0FBQTtBQUFBOzs7Ozs7OztFQUFBO0VBQUE7QUFBQTtBQUFBOztDQUFBO0FBQUE7O0VBQUE7RUFBQTtBQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBVUk7QUFSSjtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtPQUFBO0FBQUE7QUFBQTtFQUFBO09BQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFhSTtBRWZBOztFQUFBO0VBQUE7RUFBQTtBQUFBO0FBS0E7O0VBQUE7QUFBQTtBQUtJO0VBQUE7RUFBQTtBQUFBO0FBR0k7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7SUFFQTtBQUZBO0FBUVI7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0FBQUE7QUFJSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdJO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBS0o7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHSTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUtKO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0k7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFLSjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdJO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBS0o7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHSTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUtKO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0k7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFLSjtFQUFBO0VBQUE7QUFBQTtBQUdJO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBTUo7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0FBQUE7QUFLSjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdJO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7QUFJUjtJQUNJO0VGa3ZCRjtBRS91QkY7SUFDSTtFRml2QkY7QUU3dUJFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0FBQUE7QUFNQTs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdJOzs7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBS0o7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0k7RUFBQTtFQUFBO0FBQUE7QUFHSTtFQUFBO0VBQUE7QUFBQTtBQUtKO0VBQUE7RUFBQTtBQUFBO0FBR0k7RUFBQTtFQUFBO0FBQUE7QUFLWjtJQUNJO0lBQ0E7SUFDQTtFRnl1QkY7QUV2dUJFO0lBQ0k7RUZ5dUJOO0FFdnVCRTtJQUNJO0VGeXVCTjtBRXZ1QkU7SUFDSTtFRnl1Qk47QUV0dUJFO0lBQ0k7RUZ3dUJOO0FFcnVCRTtJQUNJO0VGdXVCTjtBRWh1QkU7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtJQUNBO0FBREE7QUFHSjtJQUNJO0VGb3VCRjtBRWx1QkY7SUFHUTs7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQ0E7RUFEQTtJQUdKO01BQ0k7SUZvdUJKO0VBQ0Y7QUVodUJFO0VBQUE7RUFBQTtBQUFBO0FBR0o7SUFDSSxpREFDQTtFRm11QkY7QUU5dEJFO0VBQUE7QUFBQTtBQWlCSTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJUjtJQUNJO0VGc3RCRjtBRXB0Qk07RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFRQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQVFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQTtFQUFBO0VBQUE7QUFBQTtBSDVUUjtFQUFBO0lBQUE7R0lGQTtFSkVBO0lBQUE7TUFBQTtLSUZBO0dBQUE7RUpFQTtJQUFBO01BQUE7S0lGQTtHQUFBO0VKRUE7SUFBQTtNQUFBO0tJRkE7R0FBQTtFSkVBO0lBQUE7TUFBQTtLSUZBO0dBQUE7RUpFQTtJQUFBO01BQUE7S0lGQTtHQUFBO0NBQUE7QUpFQTtFQUFBO0NJRkE7QUpFQTtFQUFBO0NJRkE7QUpFQTtFQUFBO0NJRkE7QUpFQTtFQUFBLG1CSUZBO0VKRUEscUNJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSxtQklGQTtFSkVBLHFDSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUEsbUJJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSxvQklGQTtFSkVBO0NJRkE7QUpFQTtFQUFBLG9CSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUE7Q0lGQTtBSkVBO0VBQUEscUJJRkE7RUpFQSw0QklGQTtFSkVBO0NJRkE7QUpFQTtFQUFBLDJCSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUEsMkJJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSwyQklGQTtFSkVBO0NJRkE7QUpFQTtFQUFBLDJCSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUEsMkJJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSwyQklGQTtFSkVBLG1CSUZBO0VKRUEscUxJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSwyQklGQTtFSkVBO0NJRkE7QUpFQTtFQUFBLDJCSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUEsMkJJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSwyQklGQTtFSkVBLHVCSUZBO0VKRUEsaUNJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSwyQklGQTtFSkVBLG1CSUZBO0VKRUEsdUNJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQTtDSUZBO0FKRUE7RUFBQTtDSUZBO0FKRUE7RUFBQSxxQklGQTtFSkVBO0NJRkE7QUpFQTtFQUFBO0NJRkE7QUpFQTtFQUFBLHVCSUZBO0VKRUEsbUNJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSxtQklGQTtFSkVBLHFDSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUEsbUJJRkE7RUpFQSxxQ0lGQTtFSkVBO0NJRkE7QUpFQTtFQUFBLG1CSUZBO0VKRUEsc0NJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSxtQklGQTtFSkVBLHVDSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUEsbUJJRkE7RUpFQSx1Q0lGQTtFSkVBO0NJRkE7QUpFQTtFQUFBLG1CSUZBO0VKRUEsb0NJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSxtQklGQTtFSkVBLHFDSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUEsbUJJRkE7RUpFQSxxQ0lGQTtFSkVBO0NJRkE7QUpFQTtFQUFBLG1CSUZBO0VKRUEscUNJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSxtQklGQTtFSkVBLHNDSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUEsbUJJRkE7RUpFQSxxQ0lGQTtFSkVBO0NJRkE7QUpFQTtFQUFBLG1CSUZBO0VKRUEscUNJRkE7RUpFQTtDSUZBO0FEbUVRO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0k7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUh4RVo7RUFBQSx1QklGQTtFSkVBLGlDSUZBO0VKRUE7Q0lGQTtBSkVBO0VBQUEsK0JJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSw0R0lGQTtFSkVBLDBHSUZBO0VKRUEsbU1JRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSw0R0lGQTtFSkVBLDBHSUZBO0VKRUEsbU1JRkE7RUpFQTtDSUZBO0FKRUE7RUFBQSxxQklGQTtFSkVBO0NJRkE7QUpFQTtFQUFBO0NJRkE7QUpFQTtFQUFBLG1CSUZBO0VKRUEsdUNJRkE7RUpFQTtDSUZBO0FKRUE7RUFBQTtDSUZBO0FKRUE7RUFBQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBLG9CSUZBO0lKRUE7R0lGQTtDQUFBO0FKRUE7RUFBQTtJQUFBLGlCSUZBO0lKRUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUEsZ0JJRkE7SUpFQTtHSUZBO0NBQUE7QUpFQTtFQUFBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUEsd0JJRkE7SUpFQSxvQ0lGQTtJSkVBLDRESUZBO0lKRUEsNkJJRkE7SUpFQTtHSUZBO0VKRUE7SUFBQSxrQklGQTtJSkVBO0dJRkE7RUpFQTtJQUFBLG1CSUZBO0lKRUE7R0lGQTtDQUFBO0FKRUE7RUFBQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBLHdCSUZBO0lKRUE7R0lGQTtFSkVBO0lBQUE7R0lGQTtFSkVBO0lBQUEsdUJJRkE7SUpFQSwrS0lGQTtJSkVBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBO0dJRkE7RUpFQTtJQUFBLG1CSUZBO0lKRUEsb0NJRkE7SUpFQTtHSUZBO0VKRUE7SUFBQSxvQklGQTtJSkVBO0dJRkE7Ozs7O0FDR0k7RUFBQTtBQUFBO0FBR0k7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUVBO0FBRkEsQzs7OztBQ05SO0VBQ0Usc0JBQXNCO0VBQ3RCLHlDQUF5QztFQUN6QyxlQUFlO0VBQ2YsWUFBWTtFQUNaLFdBQVc7RUFDWCxrQkFBa0I7QUFDcEI7QUFDQTtFQUNFLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0Usb0JBQW9CO0FBQ3RCO0FBQ0E7RUFDRSxlQUFlO0VBQ2YsV0FBVztFQUNYLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIsUUFBUTtBQUNWO0FBQ0E7RUFDRSxTQUFTO0VBQ1QsVUFBVTtBQUNaO0FBQ0E7RUFDRSxzQkFBc0I7RUFDdEIsaUJBQWlCO0VBQ2pCLFlBQVk7RUFDWixhQUFhO0VBQ2IsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFQUNsQixjQUFXO0tBQVgsV0FBVztFQUNYLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIscUJBQXFCO0VBQ3JCLHFCQUFxQjtBQUN2QjtBQUNBO0VBQ0UsWUFBWTtBQUNkO0FBQ0E7Ozs7Ozs7Ozs7O0VBV0UsU0FBUztFQUNULFVBQVU7RUFDViw2RUFBNkU7QUFDL0U7QUFDQTs7RUFFRSxtQkFBbUI7QUFDckI7QUFDQTs7RUFFRSxxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLGdCQUFnQjtBQUNsQjtBQUNBOztFQUVFLG9CQUFvQjtBQUN0QjtBQUNBOztFQUVFLG1CQUFtQjtBQUNyQjtBQUNBOztFQUVFLFdBQVc7RUFDWCxlQUFlO0VBQ2YsbUJBQW1CO0FBQ3JCO0FBQ0E7RUFDRSxnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0UscUJBQXFCO0VBQ3JCLG1CQUFtQjtFQUNuQixZQUFZO0FBQ2Q7QUFDQTtFQUNFLG1CQUFtQjtFQUNuQixtQkFBbUI7RUFDbkIsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxrQkFBa0I7RUFDbEIsb0JBQW9CO0FBQ3RCO0FBQ0E7O0VBRUUsbUJBQW1CO0FBQ3JCO0FBQ0E7O0VBRUUsb0JBQW9CO0FBQ3RCO0FBQ0E7RUFDRSw2RUFBNkU7RUFDN0UseUJBQXlCO0FBQzNCO0FBQ0E7RUFDRSxzQ0FBc0M7QUFDeEM7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsMENBQTBDO0FBQzVDO0FBQ0E7RUFDRSxzRUFBc0U7QUFDeEU7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsMENBQTBDO0FBQzVDO0FBQ0E7RUFDRSwrREFBK0Q7QUFDakU7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0Usc0NBQXNDO0FBQ3hDO0FBQ0E7RUFDRSx3REFBd0Q7QUFDMUQ7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsMENBQTBDO0FBQzVDO0FBQ0E7RUFDRSxpREFBaUQ7QUFDbkQ7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsMENBQTBDO0FBQzVDO0FBQ0E7RUFDRSwwQ0FBMEM7QUFDNUM7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0Usc0NBQXNDO0FBQ3hDO0FBQ0E7RUFDRSxtQ0FBbUM7QUFDckM7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsMENBQTBDO0FBQzVDO0FBQ0E7RUFDRSw0QkFBNEI7QUFDOUI7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsMENBQTBDO0FBQzVDO0FBQ0E7RUFDRSxxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0Usc0NBQXNDO0FBQ3hDO0FBQ0E7RUFDRSxpQkFBaUI7QUFDbkI7QUFDQTtFQUNFLG1CQUFtQjtBQUNyQjtBQUNBO0VBQ0Usa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSxvQkFBb0I7QUFDdEI7QUFDQTtFQUNFLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0UsbUJBQW1CO0FBQ3JCO0FBQ0E7RUFDRSxrQkFBa0I7QUFDcEI7QUFDQTtFQUNFLG9CQUFvQjtBQUN0QjtBQUNBO0VBQ0UsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxvQkFBb0I7QUFDdEI7QUFDQTtFQUNFLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0UscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxrQkFBa0I7QUFDcEI7QUFDQTtFQUNFLG9CQUFvQjtBQUN0QjtBQUNBO0VBQ0UsbUJBQW1CO0FBQ3JCO0FBQ0E7RUFDRSxxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0Usb0JBQW9CO0FBQ3RCO0FBQ0E7RUFDRSxtQkFBbUI7QUFDckI7QUFDQTtFQUNFLHFCQUFxQjtBQUN2QjtBQUNBO0VBQ0Usa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSxvQkFBb0I7QUFDdEI7QUFDQTtFQUNFLG1CQUFtQjtBQUNyQjtBQUNBO0VBQ0UscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxrQkFBa0I7QUFDcEI7QUFDQTtFQUNFLG9CQUFvQjtBQUN0QjtBQUNBO0VBQ0UsbUJBQW1CO0FBQ3JCO0FBQ0E7RUFDRSxxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0Usb0JBQW9CO0FBQ3RCO0FBQ0E7RUFDRSxtQkFBbUI7QUFDckI7QUFDQTtFQUNFLHFCQUFxQjtBQUN2QjtBQUNBO0VBQ0Usa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSxvQkFBb0I7QUFDdEI7QUFDQTtFQUNFLG1CQUFtQjtBQUNyQjtBQUNBO0VBQ0UscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxjQUFjO0VBQ2QsZUFBZTtBQUNqQjtBQUNBO0VBQ0UsY0FBYztBQUNoQjtBQUNBO0VBQ0Usa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0Usc0JBQXNCO0FBQ3hCO0FBQ0E7RUFDRSxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0Usc0JBQXNCO0FBQ3hCO0FBQ0E7RUFDRSxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFdBQVc7QUFDYjtBQUNBO0VBQ0UsY0FBYztBQUNoQjtBQUNBO0VBQ0UsV0FBVztBQUNiO0FBQ0E7RUFDRSxXQUFXO0FBQ2I7QUFDQTtFQUNFLGNBQWM7QUFDaEI7QUFDQTtFQUNFLFdBQVc7QUFDYjtBQUNBO0VBQ0UsV0FBVztBQUNiO0FBQ0E7RUFDRSw0Q0FBNEM7QUFDOUM7QUFDQTtFQUNFLDJDQUEyQztBQUM3QztBQUNBO0VBQ0UsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0UsY0FBYztFQUNkLG1CQUFtQjtBQUNyQjtBQUNBO0VBQ0Usa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSxtQkFBbUI7QUFDckI7QUFDQTtFQUNFLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0Usc0JBQXNCO0VBQ3RCLCtCQUErQjtFQUMvQixrQkFBa0I7RUFDbEIsVUFBVTtFQUNWLG9CQUFvQjtFQUNwQixrQkFBa0I7RUFDbEIsV0FBVztBQUNiO0FBQ0E7O0VBRUUsV0FBVztFQUNYLFdBQVc7RUFDWCxjQUFjO0FBQ2hCO0FBQ0E7O0VBRUUsZ0JBQWdCO0VBQ2hCLFlBQVk7RUFDWixlQUFlO0VBQ2YscUJBQXFCO0VBQ3JCLFdBQVc7RUFDWCxZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLFdBQVc7RUFDWCxnQkFBZ0I7RUFDaEIsaUJBQWlCO0FBQ25CO0FBQ0E7O0VBRUUsV0FBVztFQUNYLFlBQVk7QUFDZDtBQUNBOztFQUVFLGFBQWE7QUFDZjtBQUNBOztFQUVFLGFBQWE7QUFDZjtBQUNBOzs7Ozs7OztFQVFFLHlCQUF5QjtBQUMzQjtBQUNBOzs7Ozs7RUFNRSx5QkFBeUI7RUFDekIsY0FBYztBQUNoQjtBQUNBOzs7Ozs7Ozs7Ozs7RUFZRSxhQUFhO0FBQ2Y7QUFDQTs7Ozs7Ozs7Ozs7O0VBWUUsZUFBZTtBQUNqQjtBQUNBO0FBQ0U7O0lBRUUsY0FBYztBQUNoQjtBQUNBOzs7O0lBSUUsYUFBYTtBQUNmO0FBQ0E7Ozs7SUFJRSxlQUFlO0FBQ2pCO0FBQ0Y7QUFDQTtFQUNFLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0Usc0JBQXNCO0FBQ3hCO0FBQ0E7RUFDRSxhQUFhO0FBQ2Y7QUFDQTs7RUFFRSxrQkFBa0I7QUFDcEI7QUFDQTtFQUNFLGtCQUFrQjtFQUNsQiwyQkFBMkI7QUFDN0I7QUFDQTtFQUNFLGVBQWU7RUFDZixxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLDRCQUE0QjtBQUM5QjtBQUNBO0VBQ0UscUJBQXFCO0VBQ3JCLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0UsV0FBVztFQUNYLFdBQVc7RUFDWCxjQUFjO0FBQ2hCO0FBQ0E7RUFDRSxVQUFVO0VBQ1YsZUFBZTtFQUNmLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsZUFBZTtBQUNqQjtBQUNBO0VBQ0UsVUFBVTtFQUNWLGVBQWU7RUFDZixxQkFBcUI7RUFDckIsZUFBZTtBQUNqQjtBQUNBOztFQUVFLGFBQWE7QUFDZjtBQUNBO0VBQ0UsVUFBVTtBQUNaO0FBQ0E7RUFDRSxrQkFBa0I7QUFDcEI7QUFDQTs7RUFFRSxlQUFlO0FBQ2pCO0FBQ0E7RUFDRSxZQUFZO0FBQ2Q7QUFDQTtFQUNFLGFBQWE7QUFDZjtBQUNBO0VBQ0UsZUFBZTtBQUNqQjtBQUNBO0VBQ0UsYUFBYTtBQUNmO0FBQ0E7RUFDRSxjQUFjO0FBQ2hCO0FBQ0E7RUFDRSxnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0UsY0FBYztBQUNoQjtBQUNBO0VBQ0UsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxpQkFBaUI7QUFDbkI7QUFDQTtFQUNFLDBCQUEwQjtBQUM1QjtBQUNBO0VBQ0UsMkJBQTJCO0VBQzNCLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2Ysa0JBQWtCO0FBQ3BCO0FBQ0E7O0VBRUUseUJBQXlCO0VBQ3pCLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0UscUJBQXFCO0VBQ3JCLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSx5QkFBeUI7RUFDekIsY0FBYztFQUNkLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0UsZUFBZTtBQUNqQjtBQUNBO0VBQ0UsY0FBYztFQUNkLHFCQUFxQjtFQUNyQixXQUFXO0VBQ1gsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLHNCQUFzQjtFQUN0QixpQkFBaUI7RUFDakIsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSxlQUFlO0VBQ2YsYUFBYTtFQUNiLFlBQVk7RUFDWixpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixXQUFXO0FBQ2I7QUFDQTtFQUNFLHFCQUFxQjtFQUNyQixpQkFBaUI7QUFDbkI7QUFDQTtFQUNFLHNCQUFzQjtFQUN0QixhQUFhO0VBQ2IsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixtQkFBbUI7QUFDckI7QUFDQTtFQUNFLGVBQWU7RUFDZixjQUFjO0VBQ2QsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSxjQUFjO0VBQ2QsVUFBVTtBQUNaO0FBQ0E7RUFDRSxhQUFhO0FBQ2Y7QUFDQTtFQUNFLGVBQWU7QUFDakI7QUFDQTtFQUNFLGNBQWM7RUFDZCxnQkFBZ0I7RUFDaEIsU0FBUztFQUNULFVBQVU7QUFDWjtBQUNBOztFQUVFLFdBQVc7QUFDYjtBQUNBOztFQUVFLGdCQUFnQjtBQUNsQjtBQUNBOztFQUVFLFVBQVU7QUFDWjtBQUNBO0VBQ0UsWUFBWTtBQUNkO0FBQ0E7RUFDRSxZQUFZO0VBQ1osV0FBVztFQUNYLGdCQUFnQjtFQUNoQixXQUFXO0FBQ2I7QUFDQTtFQUNFLGdCQUFnQjtFQUNoQixZQUFZO0FBQ2Q7QUFDQTtFQUNFLDZCQUE2QjtFQUM3QixXQUFXO0VBQ1gsWUFBWTtFQUNaLFdBQVc7RUFDWCxZQUFZO0VBQ1osV0FBVztBQUNiO0FBQ0E7RUFDRSxrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLFFBQVE7RUFDUixRQUFRO0VBQ1IsV0FBVztBQUNiO0FBQ0E7Ozs7OztFQU1FLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsV0FBVztBQUNiO0FBQ0E7O0VBRUUsaUJBQWlCO0FBQ25CO0FBQ0E7O0VBRUUsb0JBQW9CO0FBQ3RCO0FBQ0E7O0VBRUUsb0JBQW9CO0FBQ3RCO0FBQ0E7O0VBRUUsb0JBQW9CO0FBQ3RCO0FBQ0E7O0VBRUUsb0JBQW9CO0FBQ3RCO0FBQ0E7O0VBRUUsb0JBQW9CO0FBQ3RCO0FBQ0E7O0VBRUUsb0JBQW9CO0FBQ3RCO0FBQ0E7RUFDRSxjQUFjO0FBQ2hCO0FBQ0E7RUFDRSxnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0UsY0FBYztBQUNoQjtBQUNBO0VBQ0UsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxpQkFBaUI7QUFDbkI7QUFDQTtFQUNFLFlBQVk7QUFDZDtBQUNBOztFQUVFLHFCQUFxQjtBQUN2QjtBQUNBOztFQUVFLGdCQUFnQjtBQUNsQjtBQUNBOztFQUVFLG9CQUFvQjtBQUN0QjtBQUNBO0VBQ0UsNENBQTRDO0FBQzlDO0FBQ0E7RUFDRSwyQ0FBMkM7QUFDN0M7QUFDQTtFQUNFLFdBQVc7QUFDYjtBQUNBOztFQUVFLGlCQUFpQjtBQUNuQjtBQUNBOztFQUVFLGdCQUFnQjtBQUNsQjtBQUNBOztFQUVFLGdCQUFnQjtBQUNsQjtBQUNBOztFQUVFLGVBQWU7QUFDakI7QUFDQTtFQUNFLGVBQWU7QUFDakI7QUFDQTtFQUNFLGVBQWU7QUFDakI7QUFDQTtFQUNFLGVBQWU7QUFDakI7QUFDQTtFQUNFLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0Usc0JBQXNCO0FBQ3hCO0FBQ0E7RUFDRSx5QkFBeUI7RUFDekIsc0JBQXNCO0VBQ3RCLCtEQUErRDtFQUMvRCxZQUFZO0FBQ2Q7QUFDQTtFQUNFLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0UsNkJBQTZCO0FBQy9CO0FBQ0E7RUFDRSw2QkFBNkI7RUFDN0IscUNBQXFDO0FBQ3ZDO0FBQ0E7RUFDRSxxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLHFCQUFxQjtBQUN2QjtBQUNBOztFQUVFLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0UsZUFBZTtBQUNqQjtBQUNBO0VBQ0Usc0JBQXNCO0VBQ3RCLHlCQUF5QjtFQUN6QiwrQkFBK0I7RUFDL0IsY0FBYztFQUNkLGlCQUFpQjtFQUNqQixtQkFBbUI7QUFDckI7QUFDQTtFQUNFLHFCQUFxQjtFQUNyQixpQkFBaUI7RUFDakIsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxhQUFhO0VBQ2IseUJBQXlCO0VBQ3pCLGVBQWU7RUFDZixZQUFZO0VBQ1osV0FBVztFQUNYLGdCQUFnQjtFQUNoQixZQUFZO0FBQ2Q7QUFDQTtFQUNFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLHVCQUF1QjtFQUN2QixtQkFBbUI7QUFDckI7QUFDQTtFQUNFLCtCQUErQjtFQUMvQixlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0UsaUJBQWlCO0VBQ2pCLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0UsaUJBQWlCO0FBQ25CO0FBQ0E7O0VBRUUsYUFBYTtBQUNmO0FBQ0E7RUFDRSxxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2Ysa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsdUJBQXVCO0FBQ3pCO0FBQ0E7RUFDRSxjQUFjO0FBQ2hCO0FBQ0E7RUFDRSx5QkFBeUI7QUFDM0I7QUM1NEJBO0VBQ0k7QUFGSjtBQUlJO0VBQ0k7QUFGUixDOzs7O0FDRlE7SUFBQTtJQUFBO0lBQUE7SUFBQTtBQUFBO0FBSUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtBQUFBLEM7Ozs7QUNMSjtFQUFBO0VBQUE7RUFDQTtBQURBO0FBR0E7QUFFUTtJQUFBO0lBQ0E7QUFEQTtBQUtBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0FBQUE7QUFEWjtBQU9ZO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQU1BO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQU1BO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBO0lBR0k7QUFISjtBQUFBO0FBT0k7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0k7RUFBQTtFQUFBO0FBQUE7QUFFQTtBQUNJO0lBQUE7QUFBQTtBQVB4QjtBQWFnQjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBRUE7QUFDSTtJQUFBO0FBQUE7QUFScEI7QUFhWTtFQUFBO0FBQUE7QUFJUjtBQUlnQjtJQUFBO0lBQUE7SUFBQTtJQUFBO0FBQUE7QUFicEI7QUFzQmdCO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFQTtBQUNJO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtBQUFBO0FBakJwQjtBQTBCZ0I7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQVFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFQTtBQUNJO0lBQUE7SUFBQTtJQUFBO0FBQUE7QUExQnBCO0FBaUNRO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBLEM7Ozs7QUN0R0o7RUFFSTtFQUNBO0VBQ0E7QUFIUixDOzs7OztBQ3NEQTtJQUNJLG1CQUFtQjtBQUN2Qjs7Ozs7O0FDc05BO0lBQ0kseUJBQXlCO0FBQzdCO0FBQ0E7SUFDSSxVQUFVO0lBQ1YsMkJBQTJCO0FBQy9CO0FBQ0E7SUFDSSwrQkFBK0I7QUFDbkM7Ozs7OztBQzVPQTtJQUNJLGtCQUFrQjtJQUNsQixjQUFjO0lBQ2QsMkJBQTJCO0lBQzNCLFlBQVk7SUFDWixZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixrQkFBWTtJQUFaLG9DQUFZO0lBQVosdURBQ0o7QUFFQTtJQUNJLFdBQVc7SUFDWCxrQkFBa0I7SUFDbEIsY0FBYztJQUNkLFNBQVM7SUFDVCxRQUFRO0lBQ1IsOEJBQThCO0lBQzlCLFNBQVM7SUFDVCxZQUFZO0lBQ1osc0JBQWtCO0lBQWxCLG9DQUFrQjtJQUFsQiwyREFDSjs7Ozs7OztBQzJQSTtJQUFBLGtCQUFjO0lBQWQsc0NBQWM7SUFBZCx5REFBYztJQUNkLGVBQWU7SUFDZixRQUFRO0lBQ1IsU0FBUztJQUNULGdDQUFnQztJQUNoQyxhQUFhO0lBQ2IsdUJBQXVCO0lBQ3ZCLFdBQVc7SUFDWCwrQkFBK0I7SUFDL0IsV0FBVztJQUNYO0FBVmM7QUFhbEI7SUFDSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixTQUFTO0lBQ1QsYUFBYTtBQUNqQjtBQUdJO0lBQUEsa0JBQTBCO0lBQTFCLG1CQUEwQjtJQUExQixvQkFBMEI7SUFBMUIsMkJBQTBCO0lBQTFCLGdEQUEwQjtJQUMxQixhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCO0FBSDBCO0FBTzFCO0lBQUEsa0JBQWU7SUFBZixzQ0FBZTtJQUFmLHlEQUFlO0lBQ2Y7QUFEZTs7Ozs7O0FDeXVCZjtRQUNJLGFBQWE7QUFDakI7QUFFQTtRQUNJLHFCQUFxQjtBQUN6QjtBQUdKO0lBQ0ksa0RBQWtEO0FBQ3REO0FBQ0E7SUFDSSxVQUFVO0lBQ1YsNEJBQTRCO0FBQ2hDOzs7Ozs7QUNuSkk7UUFDSSxhQUFhO0FBQ2pCO0FBRUE7UUFDSSxxQkFBcUI7QUFDekI7QUFHSjtJQUNJLGtEQUFrRDtBQUN0RDtBQUNBO0lBQ0ksVUFBVTtJQUNWLDRCQUE0QjtBQUNoQzs7Ozs7O0FDL2ZBO0lBQ0ksa0RBQWtEO0FBQ3REO0FBQ0E7SUFDSSxVQUFVO0lBQ1YsNEJBQTRCO0FBQ2hDOzs7Ozs7Ozs7QUN0ZFE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7QUFBQTtBQUdJO0lBQUE7QUFBQSxDOzs7O0FDRko7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUZBO0FBS0k7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQU1BO0VBQUE7QUFBQTtBQU1BO0VBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQTtBQUFBO0FBSUE7SUFBQTtJQUFBO0FBQUE7QUFKQTtBQVNKO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFFQTtBQUZBO0FBS0o7RUNuQ0E7OztJQUFBO0FEeUJKO0FDckJJO0FEaUNRO0FBSWdCO01BQUE7TUFBQTtNQUFBO0FBQUE7QUFLSjtNQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtNQUFBO01BQUE7QUFBQTtBQU1RO01BQUE7TUFBQTtNQUFBO01BQUE7TUFBQTtBQUFBO0FBZjlCO0FBQ0Y7QUF5Qlk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUtJO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFLSjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQU1RO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBLEM7Ozs7QUV4RXBCO0VBQ0k7QUFQSjtBQVVBO0VBQ0k7RUFDQTtBQVBKO0FBVUE7QUFDSTtJQUNJO0FBUE47QUFTRTtJQUNJO0lBQ0E7QUFQTjtBQUNGLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL3N0eWxlcy9tYXJzby1mb250L3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbWFyc28tZGVsaXZlcnktbWFuYWdlci8uL2Fzc2V0cy9zdHlsZXMvYXBwLnNjc3MiLCJ3ZWJwYWNrOi8vbWFyc28tZGVsaXZlcnktbWFuYWdlci8uL2Fzc2V0cy9zdHlsZXMvbWFyc28tZm9udC92YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL3N0eWxlcy9fbGF5ZXJfdXRpbGl0aWVzLnNjc3MiLCJ3ZWJwYWNrOi8vbWFyc28tZGVsaXZlcnktbWFuYWdlci88bm8gc291cmNlPiIsIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL2NvbXBvbmVudHMvRm9ybS9Ub2dnbGUudnVlIiwid2VicGFjazovL21hcnNvLWRlbGl2ZXJ5LW1hbmFnZXIvLi9ub2RlX21vZHVsZXMvQHZ1ZXVwL3Z1ZS1xdWlsbC9kaXN0L3Z1ZS1xdWlsbC5zbm93LmNzcyIsIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL2NvbXBvbmVudHMvRm9ybS9UZXh0RWRpdG9yLnZ1ZSIsIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL2NvbXBvbmVudHMvUGFnaW5hdGlvbi52dWUiLCJ3ZWJwYWNrOi8vbWFyc28tZGVsaXZlcnktbWFuYWdlci8uL2Fzc2V0cy9jb21wb25lbnRzL1Jlc3BvbnNpdmVUYWJsZS9SZXNwb25zaXZlVGFibGUudnVlIiwid2VicGFjazovL21hcnNvLWRlbGl2ZXJ5LW1hbmFnZXIvLi9hc3NldHMvY29tcG9uZW50cy9Nb2RhbC52dWUiLCJ3ZWJwYWNrOi8vbWFyc28tZGVsaXZlcnktbWFuYWdlci8uL2Fzc2V0cy9wYWdlcy9zaGlwbWVudFByZXBhcmF0b3IvU2hpcG1lbnRQcmVwYXJhdG9yLnZ1ZSIsIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL3BhZ2VzL3NoaXBtZW50L1NoaXBtZW50T3JkZXJpbmcudnVlIiwid2VicGFjazovL21hcnNvLWRlbGl2ZXJ5LW1hbmFnZXIvLi9hc3NldHMvY29tcG9uZW50cy9Db25maXJtQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL2NvbXBvbmVudHMvU2lnbmluZ01vZGFsLnZ1ZSIsIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL3BhZ2VzL3NoaXBtZW50L1NoaXBtZW50RGVsaXZlcnkudnVlIiwid2VicGFjazovL21hcnNvLWRlbGl2ZXJ5LW1hbmFnZXIvLi9hc3NldHMvcGFnZXMvc2hpcG1lbnQvU2hpcG1lbnRVbmZpbmlzaGVkLnZ1ZSIsIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL3BhZ2VzL3NoaXBtZW50L1NoaXBtZW50TG9hZGluZy52dWUiLCJ3ZWJwYWNrOi8vbWFyc28tZGVsaXZlcnktbWFuYWdlci8uL2Fzc2V0cy9jb21wb25lbnRzL0xheW91dC9CYWNrVG9Ub3AudnVlIiwid2VicGFjazovL21hcnNvLWRlbGl2ZXJ5LW1hbmFnZXIvLi9hc3NldHMvY29tcG9uZW50cy9MYXlvdXQvTmF2aWdhdGlvbi9Ecm9wZG93bk1lbnUudnVlIiwid2VicGFjazovL21hcnNvLWRlbGl2ZXJ5LW1hbmFnZXIvLi9hc3NldHMvc3R5bGVzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9tYXJzby1kZWxpdmVyeS1tYW5hZ2VyLy4vYXNzZXRzL3BhZ2VzL0FwcC52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcInZhcmlhYmxlc1wiO1xuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICcjeyRpY29tb29uLWZvbnQtZmFtaWx5fSc7XG4gIHNyYzpcbiAgICB1cmwoJyN7JGljb21vb24tZm9udC1wYXRofS8jeyRpY29tb29uLWZvbnQtZmFtaWx5fS53b2ZmMj9rM2JpYWQnKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgdXJsKCcjeyRpY29tb29uLWZvbnQtcGF0aH0vI3skaWNvbW9vbi1mb250LWZhbWlseX0udHRmP2szYmlhZCcpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICB1cmwoJyN7JGljb21vb24tZm9udC1wYXRofS8jeyRpY29tb29uLWZvbnQtZmFtaWx5fS53b2ZmP2szYmlhZCcpIGZvcm1hdCgnd29mZicpLFxuICAgIHVybCgnI3skaWNvbW9vbi1mb250LXBhdGh9LyN7JGljb21vb24tZm9udC1mYW1pbHl9LnN2Zz9rM2JpYWQjI3skaWNvbW9vbi1mb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtZGlzcGxheTogYmxvY2s7XG59XG5cbltjbGFzc149XCJtYXJzby1pY29uLVwiXSwgW2NsYXNzKj1cIiBtYXJzby1pY29uLVwiXSB7XG4gIC8qIHVzZSAhaW1wb3J0YW50IHRvIHByZXZlbnQgaXNzdWVzIHdpdGggYnJvd3NlciBleHRlbnNpb25zIHRoYXQgY2hhbmdlIGZvbnRzICovXG4gIGZvbnQtZmFtaWx5OiAnI3skaWNvbW9vbi1mb250LWZhbWlseX0nICFpbXBvcnRhbnQ7XG4gIHNwZWFrOiBuZXZlcjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuXG4gIC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqL1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLm1hcnNvLWljb24teC10d2l0dGVyIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXgtdHdpdHRlcjsgXG4gIH1cbn1cbi5tYXJzby1pY29uLXNwYXJlLXdoZWVsIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXNwYXJlLXdoZWVsOyBcbiAgfVxufVxuLm1hcnNvLWljb24tZmlsZS1zaWduYXR1cmUtc29saWQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tZmlsZS1zaWduYXR1cmUtc29saWQ7IFxuICB9XG59XG4ubWFyc28taWNvbi1zY3Jldy1udXQtM2Qge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tc2NyZXctbnV0LTNkOyBcbiAgfVxufVxuLm1hcnNvLWljb24td2hlZWwtM2Qge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24td2hlZWwtM2Q7IFxuICB9XG59XG4ubWFyc28taWNvbi1ET1Qge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tRE9UO1xuICB9XG59XG4ubWFyc28taWNvbi1yZXRyZWFkIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXJldHJlYWQ7XG4gIH1cbn1cbi5tYXJzby1pY29uLXdoZWVsX3NlcnZpY2Uge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24td2hlZWxfc2VydmljZTtcbiAgfVxufVxuLm1hcnNvLWljb24tc3FfcmlnaHQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tc3FfcmlnaHQ7XG4gIH1cbn1cbi5tYXJzby1pY29uLXNxX3dyb25nIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXNxX3dyb25nO1xuICB9XG59XG4ubWFyc28taWNvbi1taW51cyB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1taW51cztcbiAgfVxufVxuLm1hcnNvLWljb24tcGx1czEge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tcGx1czE7XG4gIH1cbn1cbi5tYXJzby1pY29uLXJpZ2h0IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXJpZ2h0O1xuICB9XG59XG4ubWFyc28taWNvbi13cm9uZyB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi13cm9uZztcbiAgfVxufVxuLm1hcnNvLWljb24tY29sbCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1jb2xsO1xuICB9XG59XG4ubWFyc28taWNvbi10b21sb19uZWxrdWwge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tdG9tbG9fbmVsa3VsO1xuICB9XG59XG4ubWFyc28taWNvbi1mb3JrbGlmdCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1mb3JrbGlmdDtcbiAgfVxufVxuLm1hcnNvLWljb24ta2FydDAyIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWthcnQwMjtcbiAgfVxufVxuLm1hcnNvLWljb24tYWxsX3NlYXNvbiB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1hbGxfc2Vhc29uO1xuICB9XG59XG4ubWFyc28taWNvbi1maWxsZWRfdHJ1Y2sge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tZmlsbGVkX3RydWNrO1xuICB9XG59XG4ubWFyc28taWNvbi1ub3RpZmljYXRpb24ge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tbm90aWZpY2F0aW9uO1xuICB9XG59XG4ubWFyc28taWNvbi1zdW1tZXIge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tc3VtbWVyO1xuICB9XG59XG4ubWFyc28taWNvbi13aW50ZXIge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24td2ludGVyO1xuICB9XG59XG4ubWFyc28taWNvbi1TSE9QLWtvc3Ige1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tU0hPUC1rb3NyO1xuICB9XG59XG4ubWFyc28taWNvbi1rbGVfd2hpdGUge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24ta2xlX3doaXRlO1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG59XG4ubWFyc28taWNvbi1yaW0tZnJpbmdlLXByb3RlY3RvciB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1yaW0tZnJpbmdlLXByb3RlY3RvcjtcbiAgfVxufVxuLm1hcnNvLWljb24tYWNjb3VudCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1hY2NvdW50O1xuICB9XG59XG4ubWFyc28taWNvbi1hZGRyZXNzIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWFkZHJlc3M7XG4gIH1cbn1cbi5tYXJzby1pY29uLWFncmkge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tYWdyaTtcbiAgfVxufVxuLm1hcnNvLWljb24tY2FmZmVlIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWNhZmZlZTtcbiAgfVxufVxuLm1hcnNvLWljb24tY2FyIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWNhcjtcbiAgfVxufVxuLm1hcnNvLWljb24tY2FyX3NlcnZpY2Uge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2FyX3NlcnZpY2U7XG4gIH1cbn1cbi5tYXJzby1pY29uLWNhcmdvIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWNhcmdvO1xuICB9XG59XG4ubWFyc28taWNvbi1jYXJnbzIxIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWNhcmdvMjE7XG4gIH1cbn1cbi5tYXJzby1pY29uLWNhcmdvMiB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1jYXJnbzI7XG4gIH1cbn1cbi5tYXJzby1pY29uLWNldGVsZW1fMDEge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2V0ZWxlbV8wMTtcbiAgfVxufVxuLm1hcnNvLWljb24tY2V0ZWxlbV8wMiB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1jZXRlbGVtXzAyO1xuICB9XG59XG4ubWFyc28taWNvbi1jbG9jayB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1jbG9jaztcbiAgfVxufVxuLm1hcnNvLWljb24tY3JlZGl0Y2FyZCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1jcmVkaXRjYXJkO1xuICB9XG59XG4ubWFyc28taWNvbi1jdXN0b21lcl9TZXJ2aWNlIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWN1c3RvbWVyX1NlcnZpY2U7XG4gIH1cbn1cbi5tYXJzby1pY29uLWRlbGl2ZXJ5IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWRlbGl2ZXJ5O1xuICB9XG59XG4ubWFyc28taWNvbi1kaXNjb3VudCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1kaXNjb3VudDtcbiAgfVxufVxuLm1hcnNvLWljb24tZG93bmxvYWQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tZG93bmxvYWQ7XG4gIH1cbn1cbi5tYXJzby1pY29uLWR1bXAge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tZHVtcDtcbiAgfVxufVxuLm1hcnNvLWljb24tZW5lcmd5X2xhYmVsIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWVuZXJneV9sYWJlbDtcbiAgfVxufVxuLm1hcnNvLWljb24tZXhwZXJ0IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWV4cGVydDtcbiAgfVxufVxuLm1hcnNvLWljb24tZmFjZWJvb2sge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tZmFjZWJvb2s7XG4gIH1cbn1cbi5tYXJzby1pY29uLWZ1ZWxfbGFiZWwge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tZnVlbF9sYWJlbDtcbiAgfVxufVxuLm1hcnNvLWljb24tZ2lmdCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1naWZ0O1xuICB9XG59XG4ubWFyc28taWNvbi1oYW1idXJnZXJfbWVudSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1oYW1idXJnZXJfbWVudTtcbiAgfVxufVxuLm1hcnNvLWljb24taHViY2FwcyAucGF0aDEge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24taHViY2Fwcy1wYXRoMTtcbiAgICBjb2xvcjogcmdiKDI0NywgMjQ3LCAyNDcpO1xuICB9XG59XG4ubWFyc28taWNvbi1odWJjYXBzIC5wYXRoMiB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1odWJjYXBzLXBhdGgyO1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGNvbG9yOiByZ2IoMCwgMCwgMCk7XG4gIH1cbn1cbi5tYXJzby1pY29uLWh1YmNhcHMgLnBhdGgzIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDM7XG4gICAgbWFyZ2luLWxlZnQ6IC0xZW07XG4gICAgY29sb3I6IHJnYigwLCAwLCAwKTtcbiAgfVxufVxuLm1hcnNvLWljb24taHViY2FwcyAucGF0aDQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24taHViY2Fwcy1wYXRoNDtcbiAgICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgICBjb2xvcjogcmdiKDUxLCA1MSwgNTEpO1xuICB9XG59XG4ubWFyc28taWNvbi1odWJjYXBzIC5wYXRoNSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1odWJjYXBzLXBhdGg1O1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGNvbG9yOiByZ2IoMCwgMCwgMCk7XG4gIH1cbn1cbi5tYXJzby1pY29uLWh1YmNhcHMgLnBhdGg2IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDY7XG4gICAgbWFyZ2luLWxlZnQ6IC0xZW07XG4gICAgY29sb3I6IHJnYig1MSwgNTEsIDUxKTtcbiAgfVxufVxuLm1hcnNvLWljb24taHViY2FwcyAucGF0aDcge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24taHViY2Fwcy1wYXRoNztcbiAgICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgICBjb2xvcjogcmdiKDAsIDAsIDApO1xuICB9XG59XG4ubWFyc28taWNvbi1odWJjYXBzIC5wYXRoOCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1odWJjYXBzLXBhdGg4O1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7XG4gIH1cbn1cbi5tYXJzby1pY29uLWh1YmNhcHMgLnBhdGg5IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDk7XG4gICAgbWFyZ2luLWxlZnQ6IC0xZW07XG4gICAgY29sb3I6IHJnYigwLCAwLCAwKTtcbiAgfVxufVxuLm1hcnNvLWljb24taHViY2FwcyAucGF0aDEwIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDEwO1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7XG4gIH1cbn1cbi5tYXJzby1pY29uLWh1YmNhcHMgLnBhdGgxMSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1odWJjYXBzLXBhdGgxMTtcbiAgICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgICBjb2xvcjogcmdiKDAsIDAsIDApO1xuICB9XG59XG4ubWFyc28taWNvbi1odWJjYXBzIC5wYXRoMTIge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24taHViY2Fwcy1wYXRoMTI7XG4gICAgbWFyZ2luLWxlZnQ6IC0xZW07XG4gICAgY29sb3I6IHJnYigyMzAsIDIzMCwgMjMwKTtcbiAgfVxufVxuLm1hcnNvLWljb24taHViY2FwcyAucGF0aDEzIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDEzO1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGNvbG9yOiByZ2IoMCwgMCwgMCk7XG4gIH1cbn1cbi5tYXJzby1pY29uLWh1YmNhcHMgLnBhdGgxNCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1odWJjYXBzLXBhdGgxNDtcbiAgICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgICBjb2xvcjogcmdiKDIzMCwgMjMwLCAyMzApO1xuICB9XG59XG4ubWFyc28taWNvbi1odWJjYXBzIC5wYXRoMTUge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24taHViY2Fwcy1wYXRoMTU7XG4gICAgbWFyZ2luLWxlZnQ6IC0xZW07XG4gICAgY29sb3I6IHJnYigwLCAwLCAwKTtcbiAgfVxufVxuLm1hcnNvLWljb24taHViY2FwcyAucGF0aDE2IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDE2O1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGNvbG9yOiByZ2IoMjMwLCAyMzAsIDIzMCk7XG4gIH1cbn1cbi5tYXJzby1pY29uLWh1YmNhcHMgLnBhdGgxNyB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1odWJjYXBzLXBhdGgxNztcbiAgICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgICBjb2xvcjogcmdiKDAsIDAsIDApO1xuICB9XG59XG4ubWFyc28taWNvbi1odWJjYXBzIC5wYXRoMTgge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24taHViY2Fwcy1wYXRoMTg7XG4gICAgbWFyZ2luLWxlZnQ6IC0xZW07XG4gICAgY29sb3I6IHJnYigyMzAsIDIzMCwgMjMwKTtcbiAgfVxufVxuLm1hcnNvLWljb24taHViY2FwcyAucGF0aDE5IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDE5O1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGNvbG9yOiByZ2IoMCwgMCwgMCk7XG4gIH1cbn1cbi5tYXJzby1pY29uLWh1YmNhcHMgLnBhdGgyMCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1odWJjYXBzLXBhdGgyMDtcbiAgICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgICBjb2xvcjogcmdiKDIzMCwgMjMwLCAyMzApO1xuICB9XG59XG4ubWFyc28taWNvbi1odWJjYXBzIC5wYXRoMjEge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24taHViY2Fwcy1wYXRoMjE7XG4gICAgbWFyZ2luLWxlZnQ6IC0xZW07XG4gICAgY29sb3I6IHJnYigwLCAwLCAwKTtcbiAgfVxufVxuLm1hcnNvLWljb24taHViY2FwcyAucGF0aDIyIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDIyO1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGNvbG9yOiByZ2IoMjMwLCAyMzAsIDIzMCk7XG4gIH1cbn1cbi5tYXJzby1pY29uLWh1YmNhcHMgLnBhdGgyMyB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1odWJjYXBzLXBhdGgyMztcbiAgICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgICBjb2xvcjogcmdiKDAsIDAsIDApO1xuICB9XG59XG4ubWFyc28taWNvbi1odWJjYXBzIC5wYXRoMjQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24taHViY2Fwcy1wYXRoMjQ7XG4gICAgbWFyZ2luLWxlZnQ6IC0xZW07XG4gICAgY29sb3I6IHJnYigyMzAsIDIzMCwgMjMwKTtcbiAgfVxufVxuLm1hcnNvLWljb24taHViY2FwcyAucGF0aDI1IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDI1O1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGNvbG9yOiByZ2IoMCwgMCwgMCk7XG4gIH1cbn1cbi5tYXJzby1pY29uLWh1YmNhcHMgLnBhdGgyNiB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1odWJjYXBzLXBhdGgyNjtcbiAgICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgICBjb2xvcjogcmdiKDIzMCwgMjMwLCAyMzApO1xuICB9XG59XG4ubWFyc28taWNvbi1pbmZvIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWluZm87XG4gIH1cbn1cbi5tYXJzby1pY29uLWxvY2F0aW9uIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWxvY2F0aW9uO1xuICB9XG59XG4ubWFyc28taWNvbi1tYWlsIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLW1haWw7XG4gIH1cbn1cbi5tYXJzby1pY29uLW1vbmV5IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLW1vbmV5O1xuICB9XG59XG4ubWFyc28taWNvbi1tb25leV90cmFuc2ZlciB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1tb25leV90cmFuc2ZlcjtcbiAgfVxufVxuLm1hcnNvLWljb24tbW90byB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1tb3RvO1xuICB9XG59XG4ubWFyc28taWNvbi1uZXdzIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLW5ld3M7XG4gIH1cbn1cbi5tYXJzby1pY29uLW5vaXNlX2xhYmVsIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLW5vaXNlX2xhYmVsO1xuICB9XG59XG4ubWFyc28taWNvbi1vbl9tYXAge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tb25fbWFwO1xuICB9XG59XG4ubWFyc28taWNvbi1vcGVuIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLW9wZW47XG4gIH1cbn1cbi5tYXJzby1pY29uLXBhY2thZ2Uge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tcGFja2FnZTtcbiAgfVxufVxuLm1hcnNvLWljb24tcGhvbmUge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tcGhvbmU7XG4gIH1cbn1cbi5tYXJzby1pY29uLXByb21vdGlvbl9naWZ0IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXByb21vdGlvbl9naWZ0O1xuICB9XG59XG4ubWFyc28taWNvbi1wcm9tb3Rpb25zIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXByb21vdGlvbnM7XG4gIH1cbn1cbi5tYXJzby1pY29uLXBzZyB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1wc2c7XG4gIH1cbn1cbi5tYXJzby1pY29uLXBzZzEge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tcHNnMTtcbiAgfVxufVxuLm1hcnNvLWljb24tcHVtcGtpbiB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1wdW1wa2luO1xuICB9XG59XG4ubWFyc28taWNvbi1yYWluX2xhYmVsIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXJhaW5fbGFiZWw7XG4gIH1cbn1cbi5tYXJzby1pY29uLXJlZnJlc2gge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tcmVmcmVzaDtcbiAgfVxufVxuLm1hcnNvLWljb24tcmVpbmZvcmNlZCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1yZWluZm9yY2VkO1xuICB9XG59XG4ubWFyc28taWNvbi1ydW5mbGF0IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXJ1bmZsYXQ7XG4gIH1cbn1cbi5tYXJzby1pY29uLXNlYXJjaCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zZWFyY2g7XG4gIH1cbn1cbi5tYXJzby1pY29uLXNlcnZpY2Uge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tc2VydmljZTtcbiAgfVxufVxuLm1hcnNvLWljb24tc2hvcHBpbmdfY2FydCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zaG9wcGluZ19jYXJ0O1xuICB9XG59XG4ubWFyc28taWNvbi1zdXNwIC5wYXRoMSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zdXNwLXBhdGgxO1xuICB9XG59XG4ubWFyc28taWNvbi1zdXNwIC5wYXRoMiB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zdXNwLXBhdGgyO1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICB9XG59XG4ubWFyc28taWNvbi1zdXNwIC5wYXRoMyB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zdXNwLXBhdGgzO1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICB9XG59XG4ubWFyc28taWNvbi1zdXNwIC5wYXRoNCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zdXNwLXBhdGg0O1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICB9XG59XG4ubWFyc28taWNvbi1zdXNwIC5wYXRoNSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zdXNwLXBhdGg1O1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICB9XG59XG4ubWFyc28taWNvbi1TVVYge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tU1VWO1xuICB9XG59XG4ubWFyc28taWNvbi1TVVYwMSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1TVVYwMTtcbiAgfVxufVxuLm1hcnNvLWljb24tc3V2MiB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zdXYyO1xuICB9XG59XG4ubWFyc28taWNvbi10ZXN0X3dpbm5lciB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi10ZXN0X3dpbm5lcjtcbiAgfVxufVxuLm1hcnNvLWljb24tdGltZXIge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tdGltZXI7XG4gIH1cbn1cbi5tYXJzby1pY29uLXRveSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi10b3k7XG4gIH1cbn1cbi5tYXJzby1pY29uLXRyYXNoIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXRyYXNoO1xuICB9XG59XG4ubWFyc28taWNvbi10cnVjayB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi10cnVjaztcbiAgfVxufVxuLm1hcnNvLWljb24tdHlyZSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi10eXJlO1xuICB9XG59XG4ubWFyc28taWNvbi10eXJlX2RhdGUge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tdHlyZV9kYXRlO1xuICB9XG59XG4ubWFyc28taWNvbi10eXJlX2luc3VyYW5jZSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi10eXJlX2luc3VyYW5jZTtcbiAgfVxufVxuLm1hcnNvLWljb24tdHlyZV9zYWZlIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXR5cmVfc2FmZTtcbiAgfVxufVxuLm1hcnNvLWljb24tdHlyZV9zZXJ2aWNlIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXR5cmVfc2VydmljZTtcbiAgfVxufVxuLm1hcnNvLWljb24tdHlyZXN0YWNrIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXR5cmVzdGFjaztcbiAgfVxufVxuLm1hcnNvLWljb24tVUhQIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLVVIUDtcbiAgfVxufVxuLm1hcnNvLWljb24td2hlZWwge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24td2hlZWw7XG4gIH1cbn1cbi5tYXJzby1pY29uLXdpZmkge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24td2lmaTtcbiAgfVxufVxuLm1hcnNvLWljb24tZG9jdW1lbnQtZWRpdCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1kb2N1bWVudC1lZGl0OyBcbiAgfVxufVxuLm1hcnNvLWljb24tZmxpY2tyIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWZsaWNrcjsgXG4gIH1cbn1cbi5tYXJzby1pY29uLWZvbGRlci11cGxvYWQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tZm9sZGVyLXVwbG9hZDsgXG4gIH1cbn1cbi5tYXJzby1pY29uLWZpbGVzIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWZpbGVzOyBcbiAgfVxufVxuLm1hcnNvLWljb24tZXllIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWV5ZTsgXG4gIH1cbn1cbi5tYXJzby1pY29uLWNhbWVyYSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1jYW1lcmE7IFxuICB9XG59XG4ubWFyc28taWNvbi1wbHVzIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXBsdXM7XG4gIH1cbn1cbi5tYXJzby1pY29uLXNlYXJjaDEge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tc2VhcmNoMTtcbiAgfVxufVxuLm1hcnNvLWljb24tdXNlciB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi11c2VyO1xuICB9XG59XG4ubWFyc28taWNvbi1jaGVjayB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1jaGVjaztcbiAgfVxufVxuLm1hcnNvLWljb24tY2xvc2Uge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2xvc2U7XG4gIH1cbn1cbi5tYXJzby1pY29uLXJlbW92ZSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1yZW1vdmU7XG4gIH1cbn1cbi5tYXJzby1pY29uLXRpbWVzIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXRpbWVzO1xuICB9XG59XG4ubWFyc28taWNvbi1sb2NrIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWxvY2s7XG4gIH1cbn1cbi5tYXJzby1pY29uLXBlbmNpbCB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1wZW5jaWw7IFxuICB9XG59XG4ubWFyc28taWNvbi1jaGV2cm9uLWxlZnQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2hldnJvbi1sZWZ0O1xuICB9XG59XG4ubWFyc28taWNvbi1jaGV2cm9uLXJpZ2h0IHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWNoZXZyb24tcmlnaHQ7XG4gIH1cbn1cbi5tYXJzby1pY29uLXBsdXMtY2lyY2xlIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXBsdXMtY2lyY2xlO1xuICB9XG59XG4ubWFyc28taWNvbi1taW51cy1jaXJjbGUge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tbWludXMtY2lyY2xlO1xuICB9XG59XG4ubWFyc28taWNvbi10aW1lcy1jaXJjbGUge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tdGltZXMtY2lyY2xlO1xuICB9XG59XG4ubWFyc28taWNvbi1jaGVjay1jaXJjbGUge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2hlY2stY2lyY2xlO1xuICB9XG59XG4ubWFyc28taWNvbi1pbmZvLWNpcmNsZSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1pbmZvLWNpcmNsZTtcbiAgfVxufVxuLm1hcnNvLWljb24tZXhjbGFtYXRpb24tY2lyY2xlIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWV4Y2xhbWF0aW9uLWNpcmNsZTsgXG4gIH1cbn1cbi5tYXJzby1pY29uLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlO1xuICB9XG59XG4ubWFyc28taWNvbi13YXJuaW5nIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXdhcm5pbmc7XG4gIH1cbn1cbi5tYXJzby1pY29uLWNoZXZyb24tdXAge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2hldnJvbi11cDtcbiAgfVxufVxuLm1hcnNvLWljb24tY2hldnJvbi1kb3duIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWNoZXZyb24tZG93bjtcbiAgfVxufVxuLm1hcnNvLWljb24tdXBsb2FkIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXVwbG9hZDsgXG4gIH1cbn1cbi5tYXJzby1pY29uLXNxdWFyZS1vIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXNxdWFyZS1vO1xuICB9XG59XG4ubWFyc28taWNvbi10d2l0dGVyIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXR3aXR0ZXI7XG4gIH1cbn1cbi5tYXJzby1pY29uLXNxdWFyZSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zcXVhcmU7XG4gIH1cbn1cbi5tYXJzby1pY29uLWNhcmV0LWRvd24ge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2FyZXQtZG93bjtcbiAgfVxufVxuLm1hcnNvLWljb24tY2FyZXQtdXAge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2FyZXQtdXA7XG4gIH1cbn1cbi5tYXJzby1pY29uLWNhcmV0LWxlZnQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2FyZXQtbGVmdDtcbiAgfVxufVxuLm1hcnNvLWljb24tY2FyZXQtcmlnaHQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2FyZXQtcmlnaHQ7XG4gIH1cbn1cbi5tYXJzby1pY29uLXNvcnQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tc29ydDsgXG4gIH1cbn1cbi5tYXJzby1pY29uLXVuc29ydGVkIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXVuc29ydGVkOyBcbiAgfVxufVxuLm1hcnNvLWljb24tc29ydC1kZXNjIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLXNvcnQtZGVzYzsgXG4gIH1cbn1cbi5tYXJzby1pY29uLXNvcnQtZG93biB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zb3J0LWRvd247IFxuICB9XG59XG4ubWFyc28taWNvbi1zb3J0LWFzYyB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1zb3J0LWFzYzsgXG4gIH1cbn1cbi5tYXJzby1pY29uLXNvcnQtdXAge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tc29ydC11cDsgXG4gIH1cbn1cbi5tYXJzby1pY29uLWVudmVsb3BlIHtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRtYXJzby1pY29uLWVudmVsb3BlOyBcbiAgfVxufVxuLm1hcnNvLWljb24tYW5nbGUtZG93biB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1hbmdsZS1kb3duOyBcbiAgfVxufVxuLm1hcnNvLWljb24tY2lyY2xlLW8ge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2lyY2xlLW87IFxuICB9XG59XG4ubWFyc28taWNvbi1jaXJjbGUge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tY2lyY2xlO1xuICB9XG59XG4ubWFyc28taWNvbi1maWxlLXRleHQge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24tZmlsZS10ZXh0OyBcbiAgfVxufVxuLm1hcnNvLWljb24teW91dHViZSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi15b3V0dWJlO1xuICB9XG59XG4ubWFyc28taWNvbi15b3V0dWJlLXBsYXkge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24teW91dHViZS1wbGF5O1xuICB9XG59XG4ubWFyc28taWNvbi1pbnN0YWdyYW0ge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJG1hcnNvLWljb24taW5zdGFncmFtOyBcbiAgfVxufVxuLm1hcnNvLWljb24tcmVjeWNsZSB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkbWFyc28taWNvbi1yZWN5Y2xlOyBcbiAgfVxufVxuXG5cbjtAaW1wb3J0IFwic2Fzcy1lbWJlZGRlZC1sZWdhY3ktbG9hZC1kb25lOjJcIjsiLCJAaW1wb3J0IFwiL3Nydi93d3cvYXNzZXRzL3N0eWxlcy9fbWl4aW5zLnNjc3NcIjtcbkBpbXBvcnQgJ21hcnNvLWZvbnQvc3R5bGUuc2Nzcyc7XG5cbkB0YWlsd2luZCBiYXNlO1xuQHRhaWx3aW5kIGNvbXBvbmVudHM7XG5AdGFpbHdpbmQgdXRpbGl0aWVzO1xuXG5AbGF5ZXIgYmFzZSB7XG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWludmFsaWQtcG9zaXRpb24tYXQtaW1wb3J0LXJ1bGUgKi9cbiAgICBAaW1wb3J0ICdsYXllcl9iYXNlJztcbn1cblxuQGxheWVyIGNvbXBvbmVudHMge1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1pbnZhbGlkLXBvc2l0aW9uLWF0LWltcG9ydC1ydWxlICovXG4gICAgQGltcG9ydCAnbGF5ZXJfY29tcG9uZW50cyc7XG59XG5cbkBsYXllciB1dGlsaXRpZXMge1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1pbnZhbGlkLXBvc2l0aW9uLWF0LWltcG9ydC1ydWxlICovXG4gICAgQGltcG9ydCAnbGF5ZXJfdXRpbGl0aWVzJztcbn1cbiIsIiRpY29tb29uLWZvbnQtZmFtaWx5OiBcIk1BUlNPXCIgIWRlZmF1bHQ7XG4kaWNvbW9vbi1mb250LXBhdGg6IFwiZm9udHNcIiAhZGVmYXVsdDtcblxuJG1hcnNvLWljb24teC10d2l0dGVyOiB1bnF1b3RlKCdcIlxcXFxlOTZjXCInKTtcbiRtYXJzby1pY29uLXNwYXJlLXdoZWVsOiB1bnF1b3RlKCdcIlxcXFxlOTZiXCInKTtcbiRtYXJzby1pY29uLWZpbGUtc2lnbmF0dXJlLXNvbGlkOiB1bnF1b3RlKCdcIlxcXFxlOTZkXCInKTtcbiRtYXJzby1pY29uLXNjcmV3LW51dC0zZDogdW5xdW90ZSgnXCJcXFxcZTk2M1wiJyk7XG4kbWFyc28taWNvbi13aGVlbC0zZDogdW5xdW90ZSgnXCJcXFxcZTk2OVwiJyk7XG4kbWFyc28taWNvbi1ET1Q6IHVucXVvdGUoJ1wiXFxcXGU5NTBcIicpO1xuJG1hcnNvLWljb24tcmV0cmVhZDogdW5xdW90ZSgnXCJcXFxcZTk1MVwiJyk7XG4kbWFyc28taWNvbi13aGVlbF9zZXJ2aWNlOiB1bnF1b3RlKCdcIlxcXFxlOTRmXCInKTtcbiRtYXJzby1pY29uLXNxX3JpZ2h0OiB1bnF1b3RlKCdcIlxcXFxlOTRkXCInKTtcbiRtYXJzby1pY29uLXNxX3dyb25nOiB1bnF1b3RlKCdcIlxcXFxlOTRlXCInKTtcbiRtYXJzby1pY29uLW1pbnVzOiB1bnF1b3RlKCdcIlxcXFxlOTQ5XCInKTtcbiRtYXJzby1pY29uLXBsdXMxOiB1bnF1b3RlKCdcIlxcXFxlOTRhXCInKTtcbiRtYXJzby1pY29uLXJpZ2h0OiB1bnF1b3RlKCdcIlxcXFxlOTRiXCInKTtcbiRtYXJzby1pY29uLXdyb25nOiB1bnF1b3RlKCdcIlxcXFxlOTRjXCInKTtcbiRtYXJzby1pY29uLWNvbGw6IHVucXVvdGUoJ1wiXFxcXGU5MGNcIicpO1xuJG1hcnNvLWljb24tdG9tbG9fbmVsa3VsOiB1bnF1b3RlKCdcIlxcXFxlOTQ1XCInKTtcbiRtYXJzby1pY29uLWZvcmtsaWZ0OiB1bnF1b3RlKCdcIlxcXFxlOTQ2XCInKTtcbiRtYXJzby1pY29uLWthcnQwMjogdW5xdW90ZSgnXCJcXFxcZTkwMlwiJyk7XG4kbWFyc28taWNvbi1hbGxfc2Vhc29uOiB1bnF1b3RlKCdcIlxcXFxlOTAzXCInKTtcbiRtYXJzby1pY29uLWZpbGxlZF90cnVjazogdW5xdW90ZSgnXCJcXFxcZTkwNFwiJyk7XG4kbWFyc28taWNvbi1ub3RpZmljYXRpb246IHVucXVvdGUoJ1wiXFxcXGU5MDVcIicpO1xuJG1hcnNvLWljb24tc3VtbWVyOiB1bnF1b3RlKCdcIlxcXFxlOTA2XCInKTtcbiRtYXJzby1pY29uLXdpbnRlcjogdW5xdW90ZSgnXCJcXFxcZTkwN1wiJyk7XG4kbWFyc28taWNvbi1TSE9QLWtvc3I6IHVucXVvdGUoJ1wiXFxcXGU5MDhcIicpO1xuJG1hcnNvLWljb24ta2xlX3doaXRlOiB1bnF1b3RlKCdcIlxcXFxlOTAwXCInKTtcbiRtYXJzby1pY29uLXJpbS1mcmluZ2UtcHJvdGVjdG9yOiB1bnF1b3RlKCdcIlxcXFxlOTAxXCInKTtcbiRtYXJzby1pY29uLWFjY291bnQ6IHVucXVvdGUoJ1wiXFxcXGU5MDlcIicpO1xuJG1hcnNvLWljb24tYWRkcmVzczogdW5xdW90ZSgnXCJcXFxcZTkwYVwiJyk7XG4kbWFyc28taWNvbi1hZ3JpOiB1bnF1b3RlKCdcIlxcXFxlOTBiXCInKTtcbiRtYXJzby1pY29uLWNhZmZlZTogdW5xdW90ZSgnXCJcXFxcZTkwZFwiJyk7XG4kbWFyc28taWNvbi1jYXI6IHVucXVvdGUoJ1wiXFxcXGU5MGVcIicpO1xuJG1hcnNvLWljb24tY2FyX3NlcnZpY2U6IHVucXVvdGUoJ1wiXFxcXGU5MGZcIicpO1xuJG1hcnNvLWljb24tY2FyZ286IHVucXVvdGUoJ1wiXFxcXGU5MTBcIicpO1xuJG1hcnNvLWljb24tY2FyZ28yMTogdW5xdW90ZSgnXCJcXFxcZTkxMVwiJyk7XG4kbWFyc28taWNvbi1jYXJnbzI6IHVucXVvdGUoJ1wiXFxcXGU5MTJcIicpO1xuJG1hcnNvLWljb24tY2V0ZWxlbV8wMTogdW5xdW90ZSgnXCJcXFxcZTkxM1wiJyk7XG4kbWFyc28taWNvbi1jZXRlbGVtXzAyOiB1bnF1b3RlKCdcIlxcXFxlOTE0XCInKTtcbiRtYXJzby1pY29uLWNsb2NrOiB1bnF1b3RlKCdcIlxcXFxlOTE1XCInKTtcbiRtYXJzby1pY29uLWNyZWRpdGNhcmQ6IHVucXVvdGUoJ1wiXFxcXGU5MTZcIicpO1xuJG1hcnNvLWljb24tY3VzdG9tZXJfU2VydmljZTogdW5xdW90ZSgnXCJcXFxcZTkxN1wiJyk7XG4kbWFyc28taWNvbi1kZWxpdmVyeTogdW5xdW90ZSgnXCJcXFxcZTkxOFwiJyk7XG4kbWFyc28taWNvbi1kaXNjb3VudDogdW5xdW90ZSgnXCJcXFxcZTkxOVwiJyk7XG4kbWFyc28taWNvbi1kb3dubG9hZDogdW5xdW90ZSgnXCJcXFxcZTkxYVwiJyk7XG4kbWFyc28taWNvbi1kdW1wOiB1bnF1b3RlKCdcIlxcXFxlOTFiXCInKTtcbiRtYXJzby1pY29uLWVuZXJneV9sYWJlbDogdW5xdW90ZSgnXCJcXFxcZTkxY1wiJyk7XG4kbWFyc28taWNvbi1leHBlcnQ6IHVucXVvdGUoJ1wiXFxcXGU5MWRcIicpO1xuJG1hcnNvLWljb24tZmFjZWJvb2s6IHVucXVvdGUoJ1wiXFxcXGU5MWVcIicpO1xuJG1hcnNvLWljb24tZnVlbF9sYWJlbDogdW5xdW90ZSgnXCJcXFxcZTkxZlwiJyk7XG4kbWFyc28taWNvbi1naWZ0OiB1bnF1b3RlKCdcIlxcXFxlOTIwXCInKTtcbiRtYXJzby1pY29uLWhhbWJ1cmdlcl9tZW51OiB1bnF1b3RlKCdcIlxcXFxlOTIyXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDE6IHVucXVvdGUoJ1wiXFxcXGU5MjNcIicpO1xuJG1hcnNvLWljb24taHViY2Fwcy1wYXRoMjogdW5xdW90ZSgnXCJcXFxcZTkyNFwiJyk7XG4kbWFyc28taWNvbi1odWJjYXBzLXBhdGgzOiB1bnF1b3RlKCdcIlxcXFxlOTI1XCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDQ6IHVucXVvdGUoJ1wiXFxcXGU5MjZcIicpO1xuJG1hcnNvLWljb24taHViY2Fwcy1wYXRoNTogdW5xdW90ZSgnXCJcXFxcZTkyN1wiJyk7XG4kbWFyc28taWNvbi1odWJjYXBzLXBhdGg2OiB1bnF1b3RlKCdcIlxcXFxlOTI4XCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDc6IHVucXVvdGUoJ1wiXFxcXGU5MjlcIicpO1xuJG1hcnNvLWljb24taHViY2Fwcy1wYXRoODogdW5xdW90ZSgnXCJcXFxcZTkyYVwiJyk7XG4kbWFyc28taWNvbi1odWJjYXBzLXBhdGg5OiB1bnF1b3RlKCdcIlxcXFxlOTJiXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDEwOiB1bnF1b3RlKCdcIlxcXFxlOTJjXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDExOiB1bnF1b3RlKCdcIlxcXFxlOTJkXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDEyOiB1bnF1b3RlKCdcIlxcXFxlOTJlXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDEzOiB1bnF1b3RlKCdcIlxcXFxlOTJmXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDE0OiB1bnF1b3RlKCdcIlxcXFxlOTMwXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDE1OiB1bnF1b3RlKCdcIlxcXFxlOTMxXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDE2OiB1bnF1b3RlKCdcIlxcXFxlOTMyXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDE3OiB1bnF1b3RlKCdcIlxcXFxlOTMzXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDE4OiB1bnF1b3RlKCdcIlxcXFxlOTM0XCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDE5OiB1bnF1b3RlKCdcIlxcXFxlOTM1XCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDIwOiB1bnF1b3RlKCdcIlxcXFxlOTM2XCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDIxOiB1bnF1b3RlKCdcIlxcXFxlOTM3XCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDIyOiB1bnF1b3RlKCdcIlxcXFxlOTM4XCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDIzOiB1bnF1b3RlKCdcIlxcXFxlOTM5XCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDI0OiB1bnF1b3RlKCdcIlxcXFxlOTNhXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDI1OiB1bnF1b3RlKCdcIlxcXFxlOTNiXCInKTtcbiRtYXJzby1pY29uLWh1YmNhcHMtcGF0aDI2OiB1bnF1b3RlKCdcIlxcXFxlOTNjXCInKTtcbiRtYXJzby1pY29uLWluZm86IHVucXVvdGUoJ1wiXFxcXGU5M2RcIicpO1xuJG1hcnNvLWljb24tbG9jYXRpb246IHVucXVvdGUoJ1wiXFxcXGU5M2VcIicpO1xuJG1hcnNvLWljb24tbWFpbDogdW5xdW90ZSgnXCJcXFxcZTkzZlwiJyk7XG4kbWFyc28taWNvbi1tb25leTogdW5xdW90ZSgnXCJcXFxcZTk0MFwiJyk7XG4kbWFyc28taWNvbi1tb25leV90cmFuc2ZlcjogdW5xdW90ZSgnXCJcXFxcZTk0MVwiJyk7XG4kbWFyc28taWNvbi1tb3RvOiB1bnF1b3RlKCdcIlxcXFxlOTQyXCInKTtcbiRtYXJzby1pY29uLW5ld3M6IHVucXVvdGUoJ1wiXFxcXGU5NDNcIicpO1xuJG1hcnNvLWljb24tbm9pc2VfbGFiZWw6IHVucXVvdGUoJ1wiXFxcXGU5NDRcIicpO1xuJG1hcnNvLWljb24tb25fbWFwOiB1bnF1b3RlKCdcIlxcXFxlOTUzXCInKTtcbiRtYXJzby1pY29uLW9wZW46IHVucXVvdGUoJ1wiXFxcXGU5NTRcIicpO1xuJG1hcnNvLWljb24tcGFja2FnZTogdW5xdW90ZSgnXCJcXFxcZTk1NVwiJyk7XG4kbWFyc28taWNvbi1waG9uZTogdW5xdW90ZSgnXCJcXFxcZTk1NlwiJyk7XG4kbWFyc28taWNvbi1wcm9tb3Rpb25fZ2lmdDogdW5xdW90ZSgnXCJcXFxcZTk1N1wiJyk7XG4kbWFyc28taWNvbi1wcm9tb3Rpb25zOiB1bnF1b3RlKCdcIlxcXFxlOTU4XCInKTtcbiRtYXJzby1pY29uLXBzZzogdW5xdW90ZSgnXCJcXFxcZTk1OVwiJyk7XG4kbWFyc28taWNvbi1wc2cxOiB1bnF1b3RlKCdcIlxcXFxlOTVhXCInKTtcbiRtYXJzby1pY29uLXB1bXBraW46IHVucXVvdGUoJ1wiXFxcXGU5NWJcIicpO1xuJG1hcnNvLWljb24tcmFpbl9sYWJlbDogdW5xdW90ZSgnXCJcXFxcZTk1Y1wiJyk7XG4kbWFyc28taWNvbi1yZWZyZXNoOiB1bnF1b3RlKCdcIlxcXFxlOTVkXCInKTtcbiRtYXJzby1pY29uLXJlaW5mb3JjZWQ6IHVucXVvdGUoJ1wiXFxcXGU5NWVcIicpO1xuJG1hcnNvLWljb24tcnVuZmxhdDogdW5xdW90ZSgnXCJcXFxcZTk1ZlwiJyk7XG4kbWFyc28taWNvbi1zZWFyY2g6IHVucXVvdGUoJ1wiXFxcXGU5NjBcIicpO1xuJG1hcnNvLWljb24tc2VydmljZTogdW5xdW90ZSgnXCJcXFxcZTk2MVwiJyk7XG4kbWFyc28taWNvbi1zaG9wcGluZ19jYXJ0OiB1bnF1b3RlKCdcIlxcXFxlOTYyXCInKTtcbiRtYXJzby1pY29uLXN1c3AtcGF0aDE6IHVucXVvdGUoJ1wiXFxcXGU5NjRcIicpO1xuJG1hcnNvLWljb24tc3VzcC1wYXRoMjogdW5xdW90ZSgnXCJcXFxcZTk2NVwiJyk7XG4kbWFyc28taWNvbi1zdXNwLXBhdGgzOiB1bnF1b3RlKCdcIlxcXFxlOTY2XCInKTtcbiRtYXJzby1pY29uLXN1c3AtcGF0aDQ6IHVucXVvdGUoJ1wiXFxcXGU5NjdcIicpO1xuJG1hcnNvLWljb24tc3VzcC1wYXRoNTogdW5xdW90ZSgnXCJcXFxcZTk2OFwiJyk7XG4kbWFyc28taWNvbi1TVVY6IHVucXVvdGUoJ1wiXFxcXGU5N2VcIicpO1xuJG1hcnNvLWljb24tU1VWMDE6IHVucXVvdGUoJ1wiXFxcXGU5N2ZcIicpO1xuJG1hcnNvLWljb24tc3V2MjogdW5xdW90ZSgnXCJcXFxcZTk4MFwiJyk7XG4kbWFyc28taWNvbi10ZXN0X3dpbm5lcjogdW5xdW90ZSgnXCJcXFxcZTk4MVwiJyk7XG4kbWFyc28taWNvbi10aW1lcjogdW5xdW90ZSgnXCJcXFxcZTk4MlwiJyk7XG4kbWFyc28taWNvbi10b3k6IHVucXVvdGUoJ1wiXFxcXGU5ODNcIicpO1xuJG1hcnNvLWljb24tdHJhc2g6IHVucXVvdGUoJ1wiXFxcXGU5ODRcIicpO1xuJG1hcnNvLWljb24tdHJ1Y2s6IHVucXVvdGUoJ1wiXFxcXGU5ODVcIicpO1xuJG1hcnNvLWljb24tdHlyZTogdW5xdW90ZSgnXCJcXFxcZTk4NlwiJyk7XG4kbWFyc28taWNvbi10eXJlX2RhdGU6IHVucXVvdGUoJ1wiXFxcXGU5ODdcIicpO1xuJG1hcnNvLWljb24tdHlyZV9pbnN1cmFuY2U6IHVucXVvdGUoJ1wiXFxcXGU5ODhcIicpO1xuJG1hcnNvLWljb24tdHlyZV9zYWZlOiB1bnF1b3RlKCdcIlxcXFxlOTg5XCInKTtcbiRtYXJzby1pY29uLXR5cmVfc2VydmljZTogdW5xdW90ZSgnXCJcXFxcZTk4YVwiJyk7XG4kbWFyc28taWNvbi10eXJlc3RhY2s6IHVucXVvdGUoJ1wiXFxcXGU5OGJcIicpO1xuJG1hcnNvLWljb24tVUhQOiB1bnF1b3RlKCdcIlxcXFxlOThjXCInKTtcbiRtYXJzby1pY29uLXdoZWVsOiB1bnF1b3RlKCdcIlxcXFxlOThkXCInKTtcbiRtYXJzby1pY29uLXdpZmk6IHVucXVvdGUoJ1wiXFxcXGU5OGVcIicpO1xuJG1hcnNvLWljb24tZG9jdW1lbnQtZWRpdDogdW5xdW90ZSgnXCJcXFxcZTk0OFwiJyk7XG4kbWFyc28taWNvbi1mbGlja3I6IHVucXVvdGUoJ1wiXFxcXGU5MjFcIicpO1xuJG1hcnNvLWljb24tZm9sZGVyLXVwbG9hZDogdW5xdW90ZSgnXCJcXFxcZTk2YVwiJyk7XG4kbWFyc28taWNvbi1maWxlczogdW5xdW90ZSgnXCJcXFxcZTk1MlwiJyk7XG4kbWFyc28taWNvbi1leWU6IHVucXVvdGUoJ1wiXFxcXGU5NDdcIicpO1xuJG1hcnNvLWljb24tY2FtZXJhOiB1bnF1b3RlKCdcIlxcXFxlOTZlXCInKTtcbiRtYXJzby1pY29uLXBsdXM6IHVucXVvdGUoJ1wiXFxcXGYwNjdcIicpO1xuJG1hcnNvLWljb24tc2VhcmNoMTogdW5xdW90ZSgnXCJcXFxcZjAwMlwiJyk7XG4kbWFyc28taWNvbi11c2VyOiB1bnF1b3RlKCdcIlxcXFxmMDA3XCInKTtcbiRtYXJzby1pY29uLWNoZWNrOiB1bnF1b3RlKCdcIlxcXFxmMDBjXCInKTtcbiRtYXJzby1pY29uLWNsb3NlOiB1bnF1b3RlKCdcIlxcXFxmMDBkXCInKTtcbiRtYXJzby1pY29uLXJlbW92ZTogdW5xdW90ZSgnXCJcXFxcZjAwZFwiJyk7XG4kbWFyc28taWNvbi10aW1lczogdW5xdW90ZSgnXCJcXFxcZjAwZFwiJyk7XG4kbWFyc28taWNvbi1sb2NrOiB1bnF1b3RlKCdcIlxcXFxmMDIzXCInKTtcbiRtYXJzby1pY29uLXBlbmNpbDogdW5xdW90ZSgnXCJcXFxcZjA0MFwiJyk7XG4kbWFyc28taWNvbi1jaGV2cm9uLWxlZnQ6IHVucXVvdGUoJ1wiXFxcXGYwNTNcIicpO1xuJG1hcnNvLWljb24tY2hldnJvbi1yaWdodDogdW5xdW90ZSgnXCJcXFxcZjA1NFwiJyk7XG4kbWFyc28taWNvbi1wbHVzLWNpcmNsZTogdW5xdW90ZSgnXCJcXFxcZjA1NVwiJyk7XG4kbWFyc28taWNvbi1taW51cy1jaXJjbGU6IHVucXVvdGUoJ1wiXFxcXGYwNTZcIicpO1xuJG1hcnNvLWljb24tdGltZXMtY2lyY2xlOiB1bnF1b3RlKCdcIlxcXFxmMDU3XCInKTtcbiRtYXJzby1pY29uLWNoZWNrLWNpcmNsZTogdW5xdW90ZSgnXCJcXFxcZjA1OFwiJyk7XG4kbWFyc28taWNvbi1pbmZvLWNpcmNsZTogdW5xdW90ZSgnXCJcXFxcZjA1YVwiJyk7XG4kbWFyc28taWNvbi1leGNsYW1hdGlvbi1jaXJjbGU6IHVucXVvdGUoJ1wiXFxcXGYwNmFcIicpO1xuJG1hcnNvLWljb24tZXhjbGFtYXRpb24tdHJpYW5nbGU6IHVucXVvdGUoJ1wiXFxcXGYwNzFcIicpO1xuJG1hcnNvLWljb24td2FybmluZzogdW5xdW90ZSgnXCJcXFxcZjA3MVwiJyk7XG4kbWFyc28taWNvbi1jaGV2cm9uLXVwOiB1bnF1b3RlKCdcIlxcXFxmMDc3XCInKTtcbiRtYXJzby1pY29uLWNoZXZyb24tZG93bjogdW5xdW90ZSgnXCJcXFxcZjA3OFwiJyk7XG4kbWFyc28taWNvbi11cGxvYWQ6IHVucXVvdGUoJ1wiXFxcXGYwOTNcIicpO1xuJG1hcnNvLWljb24tc3F1YXJlLW86IHVucXVvdGUoJ1wiXFxcXGYwOTZcIicpO1xuJG1hcnNvLWljb24tdHdpdHRlcjogdW5xdW90ZSgnXCJcXFxcZjA5OVwiJyk7XG4kbWFyc28taWNvbi1zcXVhcmU6IHVucXVvdGUoJ1wiXFxcXGYwYzhcIicpO1xuJG1hcnNvLWljb24tY2FyZXQtZG93bjogdW5xdW90ZSgnXCJcXFxcZjBkN1wiJyk7XG4kbWFyc28taWNvbi1jYXJldC11cDogdW5xdW90ZSgnXCJcXFxcZjBkOFwiJyk7XG4kbWFyc28taWNvbi1jYXJldC1sZWZ0OiB1bnF1b3RlKCdcIlxcXFxmMGQ5XCInKTtcbiRtYXJzby1pY29uLWNhcmV0LXJpZ2h0OiB1bnF1b3RlKCdcIlxcXFxmMGRhXCInKTtcbiRtYXJzby1pY29uLXNvcnQ6IHVucXVvdGUoJ1wiXFxcXGYwZGNcIicpO1xuJG1hcnNvLWljb24tdW5zb3J0ZWQ6IHVucXVvdGUoJ1wiXFxcXGYwZGNcIicpO1xuJG1hcnNvLWljb24tc29ydC1kZXNjOiB1bnF1b3RlKCdcIlxcXFxmMGRkXCInKTtcbiRtYXJzby1pY29uLXNvcnQtZG93bjogdW5xdW90ZSgnXCJcXFxcZjBkZFwiJyk7XG4kbWFyc28taWNvbi1zb3J0LWFzYzogdW5xdW90ZSgnXCJcXFxcZjBkZVwiJyk7XG4kbWFyc28taWNvbi1zb3J0LXVwOiB1bnF1b3RlKCdcIlxcXFxmMGRlXCInKTtcbiRtYXJzby1pY29uLWVudmVsb3BlOiB1bnF1b3RlKCdcIlxcXFxmMGUwXCInKTtcbiRtYXJzby1pY29uLWFuZ2xlLWRvd246IHVucXVvdGUoJ1wiXFxcXGYxMDdcIicpO1xuJG1hcnNvLWljb24tY2lyY2xlLW86IHVucXVvdGUoJ1wiXFxcXGYxMGNcIicpO1xuJG1hcnNvLWljb24tY2lyY2xlOiB1bnF1b3RlKCdcIlxcXFxmMTExXCInKTtcbiRtYXJzby1pY29uLWZpbGUtdGV4dDogdW5xdW90ZSgnXCJcXFxcZjE1Y1wiJyk7XG4kbWFyc28taWNvbi15b3V0dWJlOiB1bnF1b3RlKCdcIlxcXFxmMTY3XCInKTtcbiRtYXJzby1pY29uLXlvdXR1YmUtcGxheTogdW5xdW90ZSgnXCJcXFxcZjE2YVwiJyk7XG4kbWFyc28taWNvbi1pbnN0YWdyYW06IHVucXVvdGUoJ1wiXFxcXGYxNmRcIicpO1xuJG1hcnNvLWljb24tcmVjeWNsZTogdW5xdW90ZSgnXCJcXFxcZjFiOFwiJyk7XG5cblxuO0BpbXBvcnQgXCJzYXNzLWVtYmVkZGVkLWxlZ2FjeS1sb2FkLWRvbmU6M1wiOyIsIlxuLmZhZGUtZW50ZXItYWN0aXZlLFxuLmZhZGUtbGVhdmUtYWN0aXZlIHtcbiAgICBAYXBwbHkgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTMwMDtcbn1cblxuLmZhZGUtZW50ZXItZnJvbSxcbi5mYWRlLWxlYXZlLXRvIHtcbiAgICBAYXBwbHkgb3BhY2l0eS0wO1xufVxuXG5kaXYge1xuICAgICYubG9hZGluZyB7XG4gICAgICAgIEBhcHBseSByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW47XG5cbiAgICAgICAgPiAqIHtcbiAgICAgICAgICAgIEBhcHBseSBmaWx0ZXIgYmx1ci1zbTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIEBhcHBseSBibG9jayBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgdy1mdWxsIGgtZnVsbCBiZy1ncmF5LWRhcmtlc3Qgb3BhY2l0eS0xMDtcblxuICAgICAgICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5idG4ge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgb3V0bGluZS1ub25lIHJvdW5kZWRcbiAgICBweS0xIHB4LTIgYm9yZGVyIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1zbSBzbTp0ZXh0LWJhc2Ugc206aC1bNTBweF0gc206cC1bMjBweF0gc206dGV4dC1bMTdweF07XG5cbiAgICAmLmJ0bi1zbSB7XG4gICAgICAgIEBhcHBseSBub3JtYWwtY2FzZSB0ZXh0LXNtIHB5LTAgcHgtMTtcbiAgICB9XG4gICAgJi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1ncmF5LWRhcmsgYm9yZGVyLW9wYWNpdHktNTAgYmctZ3JheS1kYXJrIGhvdmVyOmJnLWdyYXktZGFya2VyIHRleHQtd2hpdGUgaG92ZXI6dGV4dC13aGl0ZTtcblxuICAgICAgICAmLmJ0bi1vdXRsaW5lIHtcbiAgICAgICAgICAgIEBhcHBseSBob3ZlcjpiZy1ncmF5LWRhcmsgdGV4dC1ncmF5LWRhcmtlc3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1ibHVlIGJnLWJsdWUgaG92ZXI6YmctYmx1ZS1kYXJrIHRleHQtd2hpdGU7XG5cbiAgICAgICAgJi5idG4tb3V0bGluZSB7XG4gICAgICAgICAgICBAYXBwbHkgaG92ZXI6YmctYmx1ZSB0ZXh0LWJsdWUgaG92ZXI6dGV4dC13aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYnRuLWxpbmsge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXRyYW5zcGFyZW50IGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LWJsdWUgaG92ZXI6dGV4dC1ibHVlLWxpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKSB7XG4gICAgICAgIEBhcHBseSBib3JkZXItZ3JlZW4gYmctZ3JlZW4gaG92ZXI6YmctZ3JlZW4tZGFyayB0ZXh0LXdoaXRlO1xuXG4gICAgICAgICYuYnRuLW91dGxpbmUge1xuICAgICAgICAgICAgQGFwcGx5IGhvdmVyOmJnLWdyZWVuIHRleHQtZ3JlZW4gaG92ZXI6dGV4dC13aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYnRuLWxpbmsge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXRyYW5zcGFyZW50IGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LWJsdWUgaG92ZXI6dGV4dC1ibHVlLWxpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1yZWQgYmctcmVkIGhvdmVyOmJnLXJlZC1kYXJrIHRleHQtd2hpdGU7XG5cbiAgICAgICAgJi5idG4tb3V0bGluZSB7XG4gICAgICAgICAgICBAYXBwbHkgaG92ZXI6YmctcmVkIHRleHQtcmVkIGhvdmVyOnRleHQtd2hpdGU7XG4gICAgICAgIH1cblxuICAgICAgICAmLmJ0bi1saW5rIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudCBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1yZWQgaG92ZXI6dGV4dC1yZWQtbGlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmJ0bi13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1vcmFuZ2UgYmctb3JhbmdlIGhvdmVyOmJnLW9yYW5nZS1kYXJrIHRleHQtZ3JheS1kYXJrZXN0IGhvdmVyOnRleHQtd2hpdGU7XG5cbiAgICAgICAgJi5idG4tb3V0bGluZSB7XG4gICAgICAgICAgICBAYXBwbHkgaG92ZXI6Ymctb3JhbmdlLWxpZ2h0IHRleHQtb3JhbmdlIGhvdmVyOnRleHQtZ3JheS1kYXJrZXN0O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5idG4tbGluayB7XG4gICAgICAgICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQgYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtb3JhbmdlIGhvdmVyOnRleHQtb3JhbmdlLWxpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5idG4taW5mbzpub3QoOmRpc2FibGVkKSB7XG4gICAgICAgIEBhcHBseSBib3JkZXItYmx1ZS1saWdodCBiZy1ibHVlLWxpZ2h0IGhvdmVyOmJnLWJsdWUgdGV4dC13aGl0ZTtcblxuICAgICAgICAmLmJ0bi1vdXRsaW5lIHtcbiAgICAgICAgICAgIEBhcHBseSBob3ZlcjpiZy1ibHVlLWxpZ2h0IHRleHQtYmx1ZS1saWdodCBob3Zlcjp0ZXh0LWdyYXktZGFya2VzdDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYnRuLWxpbmsge1xuICAgICAgICAgICAgQGFwcGx5IGJnLXRyYW5zcGFyZW50IGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LWJsdWUtbGlnaHQgaG92ZXI6dGV4dC1ibHVlLWRhcms7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmJ0bi1saW5rIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci10cmFuc3BhcmVudCBiZy10cmFuc3BhcmVudDtcblxuICAgICAgICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIEBhcHBseSB0ZXh0LWJsdWUgaG92ZXI6dGV4dC1ibHVlLWRhcms7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmJ0bi1vdXRsaW5lLFxuICAgICYuYnRuLW91dGxpbmU6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLTIgYmctd2hpdGU7XG4gICAgfVxuXG4gICAgJi5idG4tbmV1dHJhbCB7XG4gICAgICAgIEBhcHBseSBib3JkZXItZ3JheSBiZy1ncmF5IGhvdmVyOmJnLWdyYXktZGFyayBob3Zlcjpib3JkZXItZ3JheS1kYXJrIHRleHQtZ3JheS1kYXJrZXN0O1xuICAgIH1cblxuICAgICYuYnRuLWNhcnQge1xuICAgICAgICBAYXBwbHkgcm91bmRlZC1ub25lIHRleHQtMnhsIHAtMSBweC01IGgtZnVsbDtcbiAgICB9XG5cbiAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgQGFwcGx5IG9wYWNpdHktNTA7XG4gICAgfVxufVxuXG4uYnRuLWdyb3VwIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTA7XG5cbiAgICAuYnRuOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgQGFwcGx5IHJvdW5kZWQtci1ub25lO1xuICAgIH1cblxuICAgIC5idG46bGFzdC1jaGlsZCB7XG4gICAgICAgIEBhcHBseSByb3VuZGVkLWwtbm9uZTtcbiAgICB9XG59XG5cbi50ZXh0LXNoYWRvdy13aGl0ZSB7XG4gICAgdGV4dC1zaGFkb3c6IDAgMCAzcHggI2ZmZjtcbn1cblxuLnRleHQtc2hhZG93LWJsYWNrIHtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDNweCAjMDAwO1xufVxuXG4uZmlsdGVycyB7XG4gICAgQGFwcGx5IGJnLXdoaXRlIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktZGFyayBwLTQgZmxleCBmbGV4LWNvbCBsZzpmbGV4LXJvdyBsZzp0ZXh0LXNtIGdhcC0yO1xufVxuXG4uYWRkaXRpb25hbC1maWx0ZXJzIHtcbiAgICBAYXBwbHkgYmctd2hpdGUgYm9yZGVyLWItMiBib3JkZXItZ3JheS1kYXJrIGdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbWQ6Z3JpZC1jb2xzLTMgbGc6Z3JpZC1jb2xzLTYgcC00IGdhcC0yIGxnOnRleHQtc207XG59XG5cbi5maWx0ZXJzLFxuLmFkZGl0aW9uYWwtZmlsdGVycyxcbi5hZGRpdGlvbmFsLWZpbHRlcnMtY2xvc2UtYnRuIHtcbiAgICBAYXBwbHkgZHVyYXRpb24tMzAwIGVhc2Utb3V0IHRyYW5zaXRpb24tYWxsO1xuXG4gICAgJi5jbG9zZWQge1xuICAgICAgICBAYXBwbHkgaC0wIHB5LTAgb3ZlcmZsb3ctaGlkZGVuO1xuICAgIH1cbn1cblxuLmlucHV0LWdyb3VwIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LXJvdyBnYXAtMCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1zdHJldGNoIGNvbnRlbnQtY2VudGVyIHctZnVsbDtcblxuICAgID4gOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBAYXBwbHkgcm91bmRlZC1yLW5vbmU7XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgQGFwcGx5IHJvdW5kZWQtci1ub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgPiA6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICBAYXBwbHkgcm91bmRlZC1sLW5vbmU7XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgQGFwcGx5IHJvdW5kZWQtbC1ub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZGlzY291bnQtdGhlbWUge1xuICAgIGJvcmRlci10b3A6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzY4Njg2ODtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICAvL2JveC1zaGFkb3c6IHJnYmEoMTA0LCAxMDQsIDEwNCwgMC40KSAwcHggLTVweCwgcmdiYSgxMDQsIDEwNCwgMTA0LCAwLjMpIDBweCAtMTBweCwgcmdiYSgxMDQsIDEwNCwgMTA0LCAwLjIpIDBweCAtMTVweCwgcmdiYSgxMDQsIDEwNCwgMTA0LCAwLjEpIDBweCAtMjBweCwgcmdiYSgxMDQsIDEwNCwgMTA0LCAwLjA1KSAwcHggLTI1cHg7XG4gICAgPiB0ZCB7XG4gICAgICAgIGdyaWQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgJi5kaXNjb3VudC10aGVtZS0wIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzY4Njg2ODtcbiAgICB9XG4gICAgJi5kaXNjb3VudC10aGVtZS0xIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIwYzI1YjtcbiAgICAgICAgLy9ib3gtc2hhZG93OiByZ2JhKDMyLCAxOTQsIDkxLCAwLjQpIDBweCAtNXB4LCByZ2JhKDMyLCAxOTQsIDkxLCAwLjMpIDBweCAtMTBweCwgcmdiYSgzMiwgMTk0LCA5MSwgMC4yKSAwcHggLTE1cHgsIHJnYmEoMzIsIDE5NCwgOTEsIDAuMSkgMHB4IC0yMHB4LCByZ2JhKDMyLCAxOTQsIDkxLCAwLjA1KSAwcHggLTI1cHg7XG4gICAgfVxuICAgICYuZGlzY291bnQtdGhlbWUtMiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiMDA7XG4gICAgICAgIC8vYm94LXNoYWRvdzogcmdiYSgyNTUsIDE4NywgMCwgMC40KSAwcHggLTVweCwgcmdiYSgyNTUsIDE4NywgMCwgMC4zKSAwcHggLTEwcHgsIHJnYmEoMjU1LCAxODcsIDAsIDAuMikgMHB4IC0xNXB4LCByZ2JhKDI1NSwgMTg3LCAwLCAwLjEpIDBweCAtMjBweCwgcmdiYSgyNTUsIDE4NywgMCwgMC4wNSkgMHB4IC0yNXB4O1xuICAgIH1cbiAgICAmLmRpc2NvdW50LXRoZW1lLTMge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1ZTY2O1xuICAgICAgICAvL2JveC1zaGFkb3c6IHJnYmEoMjU1LCA5NCwgMTAyLCAwLjQpIDBweCAtNXB4LCByZ2JhKDI1NSwgOTQsIDEwMiwgMC4zKSAwcHggLTEwcHgsIHJnYmEoMjU1LCA5NCwgMTAyLCAwLjIpIDBweCAtMTVweCwgcmdiYSgyNTUsIDk0LCAxMDIsIDAuMSkgMHB4IC0yMHB4LCByZ2JhKDI1NSwgOTQsIDEwMiwgMC4wNSkgMHB4IC0yNXB4O1xuICAgIH1cbn1cblxuLmJ1dHRvbi1vcmRlcmFibGUuYWN0aXZlOjphZnRlcixcbi5idXR0b24tbGltaXRlZC5hY3RpdmU6OmFmdGVyIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgYmxvY2sgYmctZ3JheS1kYXJrZXIgdGV4dC13aGl0ZSBvcGFjaXR5LTk1IHctODAgcC00IC1ib3R0b20tOCAtcmlnaHQtOCAtei0tMTtcbiAgICBjb250ZW50OiB2YXIoLS10b29sdGlwLWxpbWl0ZWQpO1xufVxuLmJ1dHRvbi1vcmRlcmFibGUuYWN0aXZlOjphZnRlciB7XG4gICAgY29udGVudDogdmFyKC0tdG9vbHRpcC1vcmRlcmFibGUpO1xufVxuQG1lZGlhIChwb2ludGVyOiBmaW5lKSB7XG4gICAgLmJ1dHRvbi1vcmRlcmFibGUgPiAudG9vbHRpcDpob3Zlcjo6YWZ0ZXIsXG4gICAgLmJ1dHRvbi1saW1pdGVkID4gLnRvb2x0aXA6aG92ZXI6OmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IGFic29sdXRlIGJsb2NrIGJnLWdyYXktZGFya2VyIHRleHQtd2hpdGUgb3BhY2l0eS05NSB3LTgwIHAtNCAtYm90dG9tLTggLXJpZ2h0LTggLXotLTE7XG4gICAgICAgIGNvbnRlbnQ6IHZhcigtLXRvb2x0aXAtbGltaXRlZCk7XG4gICAgfVxuICAgIC5idXR0b24tb3JkZXJhYmxlID4gLnRvb2x0aXA6aG92ZXI6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogdmFyKC0tdG9vbHRpcC1vcmRlcmFibGUpO1xuICAgIH1cbn1cblxuLnRleHRib3gge1xuICAgIEBhcHBseSByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlclxufVxuXG4udGV4dGJveDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS10ZXh0KTsgLyogaGVyZSdzIHRoZSBtYWdpYyAqL1xuICAgIEBhcHBseSBiZy1ncmF5LWRhcmtlciB0ZXh0LXdoaXRlIG9wYWNpdHktOTUgcC00IGFic29sdXRlIHRleHQtY2VudGVyIGhpZGRlbiBsZWZ0LWZ1bGwgdG9wLTEvMlxuICAgIC10cmFuc2xhdGUteS0xLzIgd2hpdGVzcGFjZS1wcmU7XG59XG5cbi50ZXh0Ym94OmhvdmVyOmJlZm9yZSB7XG4gICAgQGFwcGx5IGJsb2NrXG59XG5cbi50ZXh0Ym94LWxlZnQ6YmVmb3JlIHtcbiAgICBAYXBwbHkgcmlnaHQtZnVsbCBtci0yO1xuICAgIGxlZnQ6aW5pdGlhbDtcbiAgICBtYXJnaW46aW5pdGlhbDtcbn1cblxuLnRleHRib3gtcmlnaHQ6YmVmb3JlIHtcbiAgICBAYXBwbHkgbGVmdC1mdWxsIG1sLTI7XG4gICAgcmlnaHQ6aW5pdGlhbDtcbiAgICBtYXJnaW46aW5pdGlhbDtcbn1cblxuLmNvdXBvbi1zdGF0ZSB7XG4gICAgLmFjdGl2ZV93YWl0aW5nIHtcbiAgICAgICAgQGFwcGx5IGJnLXB1cnBsZS01MDA7XG4gICAgfVxuXG4gICAgLmFjdGl2ZV9uZXcge1xuICAgICAgICBAYXBwbHkgYmctZ3JlZW47XG4gICAgfVxuXG4gICAgLmFjdGl2ZV9wYXJ0aWFsbHlfdXNlZCB7XG4gICAgICAgIEBhcHBseSBiZy1ibHVlO1xuICAgIH1cblxuICAgIC5hcmNoaXZlZF9mdWxsX3VzZWQge1xuICAgICAgICBAYXBwbHkgYmctZ3JheS1kYXJrZXI7XG4gICAgfVxuXG4gICAgLmFyY2hpdmVkX3BhcnRpYWxseV91c2VkIHtcbiAgICAgICAgQGFwcGx5IGJnLW9yYW5nZTtcbiAgICB9XG5cbiAgICAuYXJjaGl2ZWRfbm90X3VzZWQge1xuICAgICAgICBAYXBwbHkgYmctcmVkO1xuICAgIH1cbn1cblxuLnNob3ctcG9wdXAtbWVzc2FnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSBibG9jayBib3R0b20tZnVsbFxuICAgICAgICAgICAgb3BhY2l0eS05MCByb3VuZGVkLWxnIHAtNCBweS0yXG4gICAgICAgICAgICBjb250ZW50LVthdHRyKGRhdGEtcG9wdXAtbWVzc2FnZSldXG4gICAgICAgICAgICB0ZXh0LXdoaXRlIHRleHQteHNcbiAgICAgICAgICAgIHdoaXRlc3BhY2Utbm93cmFwXG4gICAgICAgIDtcbiAgICB9XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgYWJzb2x1dGUgYmxvY2sgdG9wLTBcbiAgICAgICAgICAgIG9wYWNpdHktOTBcbiAgICAgICAgICAgIGgtMCB3LTAgYm9yZGVyLTggYm9yZGVyLXRyYW5zcGFyZW50XG4gICAgICAgICAgICBjb250ZW50LVsnJ11cbiAgICAgICAgO1xuICAgIH1cbiAgICAvLyBkZWZhdWx0IHN0YXRlIGlzIGRhbmdlclxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBiZy1yZWQ7XG4gICAgfVxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci10LXJlZDtcbiAgICB9XG4gICAgLy8gd2FybmluZyBzdGF0ZVxuICAgICYud2FybmluZzo6YmVmb3JlIHtcbiAgICAgICAgQGFwcGx5IGJnLW9yYW5nZTtcbiAgICB9XG4gICAgJi53YXJuaW5nOjphZnRlciB7XG4gICAgICAgIEBhcHBseSBib3JkZXItdC1vcmFuZ2U7XG4gICAgfVxuICAgIC8vIGluZm8gc3RhdGVcbiAgICAmLmluZm86OmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSBiZy1ibHVlO1xuICAgIH1cbiAgICAmLmluZm86OmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci10LWJsdWU7XG4gICAgfVxufVxuXG47QGltcG9ydCBcInNhc3MtZW1iZWRkZWQtbGVnYWN5LWxvYWQtZG9uZTo4XCI7IixudWxsLCJAaW1wb3J0IFwiL3Nydi93d3cvYXNzZXRzL3N0eWxlcy9fbWl4aW5zLnNjc3NcIjtcblxubGFiZWwudG9nZ2xlIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG5cbiAgICAmLmRpc2FibGVkOjphZnRlciB7XG4gICAgICAgIEBhcHBseSBibG9jayBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgdy1mdWxsIGgtZnVsbCBiZy13aGl0ZSBvcGFjaXR5LTcwO1xuXG4gICAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgIH1cbn1cbiIsIi5xbC1jb250YWluZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ucWwtY29udGFpbmVyLnFsLWRpc2FibGVkIC5xbC10b29sdGlwIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLnFsLWNvbnRhaW5lci5xbC1kaXNhYmxlZCAucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZF0gPiBsaTo6YmVmb3JlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4ucWwtY2xpcGJvYXJkIHtcbiAgbGVmdDogLTEwMDAwMHB4O1xuICBoZWlnaHQ6IDFweDtcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xufVxuLnFsLWNsaXBib2FyZCBwIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuLnFsLWVkaXRvciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGxpbmUtaGVpZ2h0OiAxLjQyO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6IDEycHggMTVweDtcbiAgdGFiLXNpemU6IDQ7XG4gIC1tb3otdGFiLXNpemU6IDQ7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuLnFsLWVkaXRvciA+ICoge1xuICBjdXJzb3I6IHRleHQ7XG59XG4ucWwtZWRpdG9yIHAsXG4ucWwtZWRpdG9yIG9sLFxuLnFsLWVkaXRvciB1bCxcbi5xbC1lZGl0b3IgcHJlLFxuLnFsLWVkaXRvciBibG9ja3F1b3RlLFxuLnFsLWVkaXRvciBoMSxcbi5xbC1lZGl0b3IgaDIsXG4ucWwtZWRpdG9yIGgzLFxuLnFsLWVkaXRvciBoNCxcbi5xbC1lZGl0b3IgaDUsXG4ucWwtZWRpdG9yIGg2IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBjb3VudGVyLXJlc2V0OiBsaXN0LTEgbGlzdC0yIGxpc3QtMyBsaXN0LTQgbGlzdC01IGxpc3QtNiBsaXN0LTcgbGlzdC04IGxpc3QtOTtcbn1cbi5xbC1lZGl0b3Igb2wsXG4ucWwtZWRpdG9yIHVsIHtcbiAgcGFkZGluZy1sZWZ0OiAxLjVlbTtcbn1cbi5xbC1lZGl0b3Igb2wgPiBsaSxcbi5xbC1lZGl0b3IgdWwgPiBsaSB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbn1cbi5xbC1lZGl0b3IgdWwgPiBsaTo6YmVmb3JlIHtcbiAgY29udGVudDogJ1xcMjAyMic7XG59XG4ucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXSxcbi5xbC1lZGl0b3IgdWxbZGF0YS1jaGVja2VkPWZhbHNlXSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9dHJ1ZV0gPiBsaSAqLFxuLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9ZmFsc2VdID4gbGkgKiB7XG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XG59XG4ucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD10cnVlXSA+IGxpOjpiZWZvcmUsXG4ucWwtZWRpdG9yIHVsW2RhdGEtY2hlY2tlZD1mYWxzZV0gPiBsaTo6YmVmb3JlIHtcbiAgY29sb3I6ICM3Nzc7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbn1cbi5xbC1lZGl0b3IgdWxbZGF0YS1jaGVja2VkPXRydWVdID4gbGk6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcXDI2MTEnO1xufVxuLnFsLWVkaXRvciB1bFtkYXRhLWNoZWNrZWQ9ZmFsc2VdID4gbGk6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcXDI2MTAnO1xufVxuLnFsLWVkaXRvciBsaTo6YmVmb3JlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB3aWR0aDogMS4yZW07XG59XG4ucWwtZWRpdG9yIGxpOm5vdCgucWwtZGlyZWN0aW9uLXJ0bCk6OmJlZm9yZSB7XG4gIG1hcmdpbi1sZWZ0OiAtMS41ZW07XG4gIG1hcmdpbi1yaWdodDogMC4zZW07XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLnFsLWVkaXRvciBsaS5xbC1kaXJlY3Rpb24tcnRsOjpiZWZvcmUge1xuICBtYXJnaW4tbGVmdDogMC4zZW07XG4gIG1hcmdpbi1yaWdodDogLTEuNWVtO1xufVxuLnFsLWVkaXRvciBvbCBsaTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpLFxuLnFsLWVkaXRvciB1bCBsaTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHtcbiAgcGFkZGluZy1sZWZ0OiAxLjVlbTtcbn1cbi5xbC1lZGl0b3Igb2wgbGkucWwtZGlyZWN0aW9uLXJ0bCxcbi5xbC1lZGl0b3IgdWwgbGkucWwtZGlyZWN0aW9uLXJ0bCB7XG4gIHBhZGRpbmctcmlnaHQ6IDEuNWVtO1xufVxuLnFsLWVkaXRvciBvbCBsaSB7XG4gIGNvdW50ZXItcmVzZXQ6IGxpc3QtMSBsaXN0LTIgbGlzdC0zIGxpc3QtNCBsaXN0LTUgbGlzdC02IGxpc3QtNyBsaXN0LTggbGlzdC05O1xuICBjb3VudGVyLWluY3JlbWVudDogbGlzdC0wO1xufVxuLnFsLWVkaXRvciBvbCBsaTpiZWZvcmUge1xuICBjb250ZW50OiBjb3VudGVyKGxpc3QtMCwgZGVjaW1hbCkgJy4gJztcbn1cbi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTEge1xuICBjb3VudGVyLWluY3JlbWVudDogbGlzdC0xO1xufVxuLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMTpiZWZvcmUge1xuICBjb250ZW50OiBjb3VudGVyKGxpc3QtMSwgbG93ZXItYWxwaGEpICcuICc7XG59XG4ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0xIHtcbiAgY291bnRlci1yZXNldDogbGlzdC0yIGxpc3QtMyBsaXN0LTQgbGlzdC01IGxpc3QtNiBsaXN0LTcgbGlzdC04IGxpc3QtOTtcbn1cbi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTIge1xuICBjb3VudGVyLWluY3JlbWVudDogbGlzdC0yO1xufVxuLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMjpiZWZvcmUge1xuICBjb250ZW50OiBjb3VudGVyKGxpc3QtMiwgbG93ZXItcm9tYW4pICcuICc7XG59XG4ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0yIHtcbiAgY291bnRlci1yZXNldDogbGlzdC0zIGxpc3QtNCBsaXN0LTUgbGlzdC02IGxpc3QtNyBsaXN0LTggbGlzdC05O1xufVxuLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMyB7XG4gIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LTM7XG59XG4ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC0zOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC0zLCBkZWNpbWFsKSAnLiAnO1xufVxuLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtMyB7XG4gIGNvdW50ZXItcmVzZXQ6IGxpc3QtNCBsaXN0LTUgbGlzdC02IGxpc3QtNyBsaXN0LTggbGlzdC05O1xufVxuLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNCB7XG4gIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LTQ7XG59XG4ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC00OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC00LCBsb3dlci1hbHBoYSkgJy4gJztcbn1cbi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTQge1xuICBjb3VudGVyLXJlc2V0OiBsaXN0LTUgbGlzdC02IGxpc3QtNyBsaXN0LTggbGlzdC05O1xufVxuLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNSB7XG4gIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LTU7XG59XG4ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC01OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IGNvdW50ZXIobGlzdC01LCBsb3dlci1yb21hbikgJy4gJztcbn1cbi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTUge1xuICBjb3VudGVyLXJlc2V0OiBsaXN0LTYgbGlzdC03IGxpc3QtOCBsaXN0LTk7XG59XG4ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC02IHtcbiAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3QtNjtcbn1cbi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTY6YmVmb3JlIHtcbiAgY29udGVudDogY291bnRlcihsaXN0LTYsIGRlY2ltYWwpICcuICc7XG59XG4ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC02IHtcbiAgY291bnRlci1yZXNldDogbGlzdC03IGxpc3QtOCBsaXN0LTk7XG59XG4ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC03IHtcbiAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3QtNztcbn1cbi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTc6YmVmb3JlIHtcbiAgY29udGVudDogY291bnRlcihsaXN0LTcsIGxvd2VyLWFscGhhKSAnLiAnO1xufVxuLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtNyB7XG4gIGNvdW50ZXItcmVzZXQ6IGxpc3QtOCBsaXN0LTk7XG59XG4ucWwtZWRpdG9yIG9sIGxpLnFsLWluZGVudC04IHtcbiAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3QtODtcbn1cbi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTg6YmVmb3JlIHtcbiAgY29udGVudDogY291bnRlcihsaXN0LTgsIGxvd2VyLXJvbWFuKSAnLiAnO1xufVxuLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtOCB7XG4gIGNvdW50ZXItcmVzZXQ6IGxpc3QtOTtcbn1cbi5xbC1lZGl0b3Igb2wgbGkucWwtaW5kZW50LTkge1xuICBjb3VudGVyLWluY3JlbWVudDogbGlzdC05O1xufVxuLnFsLWVkaXRvciBvbCBsaS5xbC1pbmRlbnQtOTpiZWZvcmUge1xuICBjb250ZW50OiBjb3VudGVyKGxpc3QtOSwgZGVjaW1hbCkgJy4gJztcbn1cbi5xbC1lZGl0b3IgLnFsLWluZGVudC0xOm5vdCgucWwtZGlyZWN0aW9uLXJ0bCkge1xuICBwYWRkaW5nLWxlZnQ6IDNlbTtcbn1cbi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTE6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7XG4gIHBhZGRpbmctbGVmdDogNC41ZW07XG59XG4ucWwtZWRpdG9yIC5xbC1pbmRlbnQtMS5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogM2VtO1xufVxuLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtMS5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogNC41ZW07XG59XG4ucWwtZWRpdG9yIC5xbC1pbmRlbnQtMjpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHtcbiAgcGFkZGluZy1sZWZ0OiA2ZW07XG59XG4ucWwtZWRpdG9yIGxpLnFsLWluZGVudC0yOm5vdCgucWwtZGlyZWN0aW9uLXJ0bCkge1xuICBwYWRkaW5nLWxlZnQ6IDcuNWVtO1xufVxuLnFsLWVkaXRvciAucWwtaW5kZW50LTIucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7XG4gIHBhZGRpbmctcmlnaHQ6IDZlbTtcbn1cbi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTIucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7XG4gIHBhZGRpbmctcmlnaHQ6IDcuNWVtO1xufVxuLnFsLWVkaXRvciAucWwtaW5kZW50LTM6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7XG4gIHBhZGRpbmctbGVmdDogOWVtO1xufVxuLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtMzpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHtcbiAgcGFkZGluZy1sZWZ0OiAxMC41ZW07XG59XG4ucWwtZWRpdG9yIC5xbC1pbmRlbnQtMy5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogOWVtO1xufVxuLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtMy5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMTAuNWVtO1xufVxuLnFsLWVkaXRvciAucWwtaW5kZW50LTQ6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7XG4gIHBhZGRpbmctbGVmdDogMTJlbTtcbn1cbi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTQ6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7XG4gIHBhZGRpbmctbGVmdDogMTMuNWVtO1xufVxuLnFsLWVkaXRvciAucWwtaW5kZW50LTQucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7XG4gIHBhZGRpbmctcmlnaHQ6IDEyZW07XG59XG4ucWwtZWRpdG9yIGxpLnFsLWluZGVudC00LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiAxMy41ZW07XG59XG4ucWwtZWRpdG9yIC5xbC1pbmRlbnQtNTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHtcbiAgcGFkZGluZy1sZWZ0OiAxNWVtO1xufVxuLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNTpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHtcbiAgcGFkZGluZy1sZWZ0OiAxNi41ZW07XG59XG4ucWwtZWRpdG9yIC5xbC1pbmRlbnQtNS5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMTVlbTtcbn1cbi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTUucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7XG4gIHBhZGRpbmctcmlnaHQ6IDE2LjVlbTtcbn1cbi5xbC1lZGl0b3IgLnFsLWluZGVudC02Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkge1xuICBwYWRkaW5nLWxlZnQ6IDE4ZW07XG59XG4ucWwtZWRpdG9yIGxpLnFsLWluZGVudC02Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkge1xuICBwYWRkaW5nLWxlZnQ6IDE5LjVlbTtcbn1cbi5xbC1lZGl0b3IgLnFsLWluZGVudC02LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiAxOGVtO1xufVxuLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtNi5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMTkuNWVtO1xufVxuLnFsLWVkaXRvciAucWwtaW5kZW50LTc6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7XG4gIHBhZGRpbmctbGVmdDogMjFlbTtcbn1cbi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTc6bm90KC5xbC1kaXJlY3Rpb24tcnRsKSB7XG4gIHBhZGRpbmctbGVmdDogMjIuNWVtO1xufVxuLnFsLWVkaXRvciAucWwtaW5kZW50LTcucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7XG4gIHBhZGRpbmctcmlnaHQ6IDIxZW07XG59XG4ucWwtZWRpdG9yIGxpLnFsLWluZGVudC03LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiAyMi41ZW07XG59XG4ucWwtZWRpdG9yIC5xbC1pbmRlbnQtODpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHtcbiAgcGFkZGluZy1sZWZ0OiAyNGVtO1xufVxuLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtODpub3QoLnFsLWRpcmVjdGlvbi1ydGwpIHtcbiAgcGFkZGluZy1sZWZ0OiAyNS41ZW07XG59XG4ucWwtZWRpdG9yIC5xbC1pbmRlbnQtOC5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMjRlbTtcbn1cbi5xbC1lZGl0b3IgbGkucWwtaW5kZW50LTgucWwtZGlyZWN0aW9uLXJ0bC5xbC1hbGlnbi1yaWdodCB7XG4gIHBhZGRpbmctcmlnaHQ6IDI1LjVlbTtcbn1cbi5xbC1lZGl0b3IgLnFsLWluZGVudC05Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkge1xuICBwYWRkaW5nLWxlZnQ6IDI3ZW07XG59XG4ucWwtZWRpdG9yIGxpLnFsLWluZGVudC05Om5vdCgucWwtZGlyZWN0aW9uLXJ0bCkge1xuICBwYWRkaW5nLWxlZnQ6IDI4LjVlbTtcbn1cbi5xbC1lZGl0b3IgLnFsLWluZGVudC05LnFsLWRpcmVjdGlvbi1ydGwucWwtYWxpZ24tcmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiAyN2VtO1xufVxuLnFsLWVkaXRvciBsaS5xbC1pbmRlbnQtOS5xbC1kaXJlY3Rpb24tcnRsLnFsLWFsaWduLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMjguNWVtO1xufVxuLnFsLWVkaXRvciAucWwtdmlkZW8ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuLnFsLWVkaXRvciAucWwtdmlkZW8ucWwtYWxpZ24tY2VudGVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG4ucWwtZWRpdG9yIC5xbC12aWRlby5xbC1hbGlnbi1yaWdodCB7XG4gIG1hcmdpbjogMCAwIDAgYXV0bztcbn1cbi5xbC1lZGl0b3IgLnFsLWJnLWJsYWNrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbn1cbi5xbC1lZGl0b3IgLnFsLWJnLXJlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNjAwMDA7XG59XG4ucWwtZWRpdG9yIC5xbC1iZy1vcmFuZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjkwO1xufVxuLnFsLWVkaXRvciAucWwtYmcteWVsbG93IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMDtcbn1cbi5xbC1lZGl0b3IgLnFsLWJnLWdyZWVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOGEwMDtcbn1cbi5xbC1lZGl0b3IgLnFsLWJnLWJsdWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZjO1xufVxuLnFsLWVkaXRvciAucWwtYmctcHVycGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkzZjtcbn1cbi5xbC1lZGl0b3IgLnFsLWNvbG9yLXdoaXRlIHtcbiAgY29sb3I6ICNmZmY7XG59XG4ucWwtZWRpdG9yIC5xbC1jb2xvci1yZWQge1xuICBjb2xvcjogI2U2MDAwMDtcbn1cbi5xbC1lZGl0b3IgLnFsLWNvbG9yLW9yYW5nZSB7XG4gIGNvbG9yOiAjZjkwO1xufVxuLnFsLWVkaXRvciAucWwtY29sb3IteWVsbG93IHtcbiAgY29sb3I6ICNmZjA7XG59XG4ucWwtZWRpdG9yIC5xbC1jb2xvci1ncmVlbiB7XG4gIGNvbG9yOiAjMDA4YTAwO1xufVxuLnFsLWVkaXRvciAucWwtY29sb3ItYmx1ZSB7XG4gIGNvbG9yOiAjMDZjO1xufVxuLnFsLWVkaXRvciAucWwtY29sb3ItcHVycGxlIHtcbiAgY29sb3I6ICM5M2Y7XG59XG4ucWwtZWRpdG9yIC5xbC1mb250LXNlcmlmIHtcbiAgZm9udC1mYW1pbHk6IEdlb3JnaWEsIFRpbWVzIE5ldyBSb21hbiwgc2VyaWY7XG59XG4ucWwtZWRpdG9yIC5xbC1mb250LW1vbm9zcGFjZSB7XG4gIGZvbnQtZmFtaWx5OiBNb25hY28sIENvdXJpZXIgTmV3LCBtb25vc3BhY2U7XG59XG4ucWwtZWRpdG9yIC5xbC1zaXplLXNtYWxsIHtcbiAgZm9udC1zaXplOiAwLjc1ZW07XG59XG4ucWwtZWRpdG9yIC5xbC1zaXplLWxhcmdlIHtcbiAgZm9udC1zaXplOiAxLjVlbTtcbn1cbi5xbC1lZGl0b3IgLnFsLXNpemUtaHVnZSB7XG4gIGZvbnQtc2l6ZTogMi41ZW07XG59XG4ucWwtZWRpdG9yIC5xbC1kaXJlY3Rpb24tcnRsIHtcbiAgZGlyZWN0aW9uOiBydGw7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG59XG4ucWwtZWRpdG9yIC5xbC1hbGlnbi1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ucWwtZWRpdG9yIC5xbC1hbGlnbi1qdXN0aWZ5IHtcbiAgdGV4dC1hbGlnbjoganVzdGlmeTtcbn1cbi5xbC1lZGl0b3IgLnFsLWFsaWduLXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4ucWwtZWRpdG9yLnFsLWJsYW5rOjpiZWZvcmUge1xuICBjb2xvcjogcmdiYSgwLDAsMCwwLjYpO1xuICBjb250ZW50OiBhdHRyKGRhdGEtcGxhY2Vob2xkZXIpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGxlZnQ6IDE1cHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxNXB4O1xufVxuLnFsLXNub3cucWwtdG9vbGJhcjphZnRlcixcbi5xbC1zbm93IC5xbC10b29sYmFyOmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cbi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uLFxuLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZmxvYXQ6IGxlZnQ7XG4gIGhlaWdodDogMjRweDtcbiAgcGFkZGluZzogM3B4IDVweDtcbiAgd2lkdGg6IDI4cHg7XG4gIG1hcmdpbi1sZWZ0OiAxcHg7XG4gIG1hcmdpbi1yaWdodDogMXB4O1xufVxuLnFsLXNub3cucWwtdG9vbGJhciBidXR0b24gc3ZnLFxuLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uIHN2ZyB7XG4gIGZsb2F0OiBsZWZ0O1xuICBoZWlnaHQ6IDEwMCU7XG59XG4ucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjphY3RpdmU6aG92ZXIsXG4ucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246YWN0aXZlOmhvdmVyIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cbi5xbC1zbm93LnFsLXRvb2xiYXIgaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXSxcbi5xbC1zbm93IC5xbC10b29sYmFyIGlucHV0LnFsLWltYWdlW3R5cGU9ZmlsZV0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246aG92ZXIsXG4ucWwtc25vdyAucWwtdG9vbGJhciBidXR0b246aG92ZXIsXG4ucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpmb2N1cyxcbi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpmb2N1cyxcbi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbDpob3Zlcixcbi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIsXG4ucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3Zlcixcbi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XG59XG4ucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUsXG4ucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlLFxuLnFsLXNub3cucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsLnFsLWFjdGl2ZSxcbi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwucWwtYWN0aXZlLFxuLnFsLXNub3cucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW0ucWwtc2VsZWN0ZWQsXG4ucWwtc25vdyAucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW0ucWwtc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGJlYWZlO1xuICBjb2xvcjogIzI1NjNlYjtcbn1cbi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uLnFsLWFjdGl2ZSAucWwtZmlsbCxcbi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUgLnFsLWZpbGwsXG4ucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwucWwtYWN0aXZlIC5xbC1maWxsLFxuLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLWZpbGwsXG4ucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtZmlsbCxcbi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtZmlsbCxcbi5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uLnFsLWFjdGl2ZSAucWwtc3Ryb2tlLnFsLWZpbGwsXG4ucWwtc25vdyAucWwtdG9vbGJhciBidXR0b24ucWwtYWN0aXZlIC5xbC1zdHJva2UucWwtZmlsbCxcbi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLXN0cm9rZS5xbC1maWxsLFxuLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLXN0cm9rZS5xbC1maWxsLFxuLnFsLXNub3cucWwtdG9vbGJhciAucWwtcGlja2VyLWl0ZW0ucWwtc2VsZWN0ZWQgLnFsLXN0cm9rZS5xbC1maWxsLFxuLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkIC5xbC1zdHJva2UucWwtZmlsbCB7XG4gIGZpbGw6ICMyNTYzZWI7XG59XG4ucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUgLnFsLXN0cm9rZSxcbi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUgLnFsLXN0cm9rZSxcbi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLXN0cm9rZSxcbi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwucWwtYWN0aXZlIC5xbC1zdHJva2UsXG4ucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLFxuLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkIC5xbC1zdHJva2UsXG4ucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUgLnFsLXN0cm9rZS1taXRlcixcbi5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUgLnFsLXN0cm9rZS1taXRlcixcbi5xbC1zbm93LnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUgLnFsLXN0cm9rZS1taXRlcixcbi5xbC1zbm93IC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwucWwtYWN0aXZlIC5xbC1zdHJva2UtbWl0ZXIsXG4ucWwtc25vdy5xbC10b29sYmFyIC5xbC1waWNrZXItaXRlbS5xbC1zZWxlY3RlZCAucWwtc3Ryb2tlLW1pdGVyLFxuLnFsLXNub3cgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkIC5xbC1zdHJva2UtbWl0ZXIge1xuICBzdHJva2U6ICMyNTYzZWI7XG59XG5AbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkge1xuICAucWwtc25vdy5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSksXG4gIC5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkge1xuICAgIGNvbG9yOiAjNGI1NTYzO1xuICB9XG4gIC5xbC1zbm93LnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyOm5vdCgucWwtYWN0aXZlKSAucWwtZmlsbCxcbiAgLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyOm5vdCgucWwtYWN0aXZlKSAucWwtZmlsbCxcbiAgLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246aG92ZXI6bm90KC5xbC1hY3RpdmUpIC5xbC1zdHJva2UucWwtZmlsbCxcbiAgLnFsLXNub3cgLnFsLXRvb2xiYXIgYnV0dG9uOmhvdmVyOm5vdCgucWwtYWN0aXZlKSAucWwtc3Ryb2tlLnFsLWZpbGwge1xuICAgIGZpbGw6ICM0YjU1NjM7XG4gIH1cbiAgLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246aG92ZXI6bm90KC5xbC1hY3RpdmUpIC5xbC1zdHJva2UsXG4gIC5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgLnFsLXN0cm9rZSxcbiAgLnFsLXNub3cucWwtdG9vbGJhciBidXR0b246aG92ZXI6bm90KC5xbC1hY3RpdmUpIC5xbC1zdHJva2UtbWl0ZXIsXG4gIC5xbC1zbm93IC5xbC10b29sYmFyIGJ1dHRvbjpob3Zlcjpub3QoLnFsLWFjdGl2ZSkgLnFsLXN0cm9rZS1taXRlciB7XG4gICAgc3Ryb2tlOiAjNGI1NTYzO1xuICB9XG59XG4ucWwtc25vdyB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ucWwtc25vdyAqIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5xbC1zbm93IC5xbC1oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnFsLXNub3cgLnFsLW91dC1ib3R0b20sXG4ucWwtc25vdyAucWwtb3V0LXRvcCB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5xbC1zbm93IC5xbC10b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7XG59XG4ucWwtc25vdyAucWwtdG9vbHRpcCBhIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ucWwtc25vdyAucWwtdG9vbHRpcC5xbC1mbGlwIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcbn1cbi5xbC1zbm93IC5xbC1mb3JtYXRzIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLnFsLXNub3cgLnFsLWZvcm1hdHM6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuLnFsLXNub3cgLnFsLXN0cm9rZSB7XG4gIGZpbGw6IG5vbmU7XG4gIHN0cm9rZTogIzRiNTU2MztcbiAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kO1xuICBzdHJva2UtbGluZWpvaW46IHJvdW5kO1xuICBzdHJva2Utd2lkdGg6IDI7XG59XG4ucWwtc25vdyAucWwtc3Ryb2tlLW1pdGVyIHtcbiAgZmlsbDogbm9uZTtcbiAgc3Ryb2tlOiAjNGI1NTYzO1xuICBzdHJva2UtbWl0ZXJsaW1pdDogMTA7XG4gIHN0cm9rZS13aWR0aDogMjtcbn1cbi5xbC1zbm93IC5xbC1maWxsLFxuLnFsLXNub3cgLnFsLXN0cm9rZS5xbC1maWxsIHtcbiAgZmlsbDogIzRiNTU2Mztcbn1cbi5xbC1zbm93IC5xbC1lbXB0eSB7XG4gIGZpbGw6IG5vbmU7XG59XG4ucWwtc25vdyAucWwtZXZlbiB7XG4gIGZpbGwtcnVsZTogZXZlbm9kZDtcbn1cbi5xbC1zbm93IC5xbC10aGluLFxuLnFsLXNub3cgLnFsLXN0cm9rZS5xbC10aGluIHtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xufVxuLnFsLXNub3cgLnFsLXRyYW5zcGFyZW50IHtcbiAgb3BhY2l0eTogMC40O1xufVxuLnFsLXNub3cgLnFsLWRpcmVjdGlvbiBzdmc6bGFzdC1jaGlsZCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ucWwtc25vdyAucWwtZGlyZWN0aW9uLnFsLWFjdGl2ZSBzdmc6bGFzdC1jaGlsZCB7XG4gIGRpc3BsYXk6IGlubGluZTtcbn1cbi5xbC1zbm93IC5xbC1kaXJlY3Rpb24ucWwtYWN0aXZlIHN2ZzpmaXJzdC1jaGlsZCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ucWwtc25vdyAucWwtZWRpdG9yIGgxIHtcbiAgZm9udC1zaXplOiAyZW07XG59XG4ucWwtc25vdyAucWwtZWRpdG9yIGgyIHtcbiAgZm9udC1zaXplOiAxLjVlbTtcbn1cbi5xbC1zbm93IC5xbC1lZGl0b3IgaDMge1xuICBmb250LXNpemU6IDEuMTdlbTtcbn1cbi5xbC1zbm93IC5xbC1lZGl0b3IgaDQge1xuICBmb250LXNpemU6IDFlbTtcbn1cbi5xbC1zbm93IC5xbC1lZGl0b3IgaDUge1xuICBmb250LXNpemU6IDAuODNlbTtcbn1cbi5xbC1zbm93IC5xbC1lZGl0b3IgaDYge1xuICBmb250LXNpemU6IDAuNjdlbTtcbn1cbi5xbC1zbm93IC5xbC1lZGl0b3IgYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnFsLXNub3cgLnFsLWVkaXRvciBibG9ja3F1b3RlIHtcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjY2NjO1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgcGFkZGluZy1sZWZ0OiAxNnB4O1xufVxuLnFsLXNub3cgLnFsLWVkaXRvciBjb2RlLFxuLnFsLXNub3cgLnFsLWVkaXRvciBwcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG4ucWwtc25vdyAucWwtZWRpdG9yIHByZSB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBtYXJnaW4tdG9wOiA1cHg7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xufVxuLnFsLXNub3cgLnFsLWVkaXRvciBjb2RlIHtcbiAgZm9udC1zaXplOiA4NSU7XG4gIHBhZGRpbmc6IDJweCA0cHg7XG59XG4ucWwtc25vdyAucWwtZWRpdG9yIHByZS5xbC1zeW50YXgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNDFmO1xuICBjb2xvcjogI2Y4ZjhmMjtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4ucWwtc25vdyAucWwtZWRpdG9yIGltZyB7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIge1xuICBjb2xvcjogIzRiNTU2MztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmbG9hdDogbGVmdDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBoZWlnaHQ6IDI0cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAxcHg7XG4gIG1hcmdpbi1sZWZ0OiAxcHg7XG59XG4ucWwtc25vdyAucWwtcGlja2VyLWxhYmVsIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAycHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG4ucWwtc25vdyAucWwtcGlja2VyLWxhYmVsOjpiZWZvcmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci1vcHRpb25zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogbm9uZTtcbiAgbWluLXdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ucWwtc25vdyAucWwtcGlja2VyLW9wdGlvbnMgLnFsLXBpY2tlci1pdGVtIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDhweDtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1sYWJlbCB7XG4gIGNvbG9yOiAjZDFkNWRiO1xuICB6LWluZGV4OiAyO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1leHBhbmRlZCAucWwtcGlja2VyLWxhYmVsIC5xbC1maWxsIHtcbiAgZmlsbDogI2QxZDVkYjtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1sYWJlbCAucWwtc3Ryb2tlIHtcbiAgc3Ryb2tlOiAjZDFkNWRiO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1leHBhbmRlZCAucWwtcGlja2VyLW9wdGlvbnMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTFweDtcbiAgdG9wOiAxMDAlO1xuICB6LWluZGV4OiAxO1xufVxuLnFsLXNub3cgLnFsLWNvbG9yLXBpY2tlcixcbi5xbC1zbm93IC5xbC1pY29uLXBpY2tlciB7XG4gIHdpZHRoOiAyOHB4O1xufVxuLnFsLXNub3cgLnFsLWNvbG9yLXBpY2tlciAucWwtcGlja2VyLWxhYmVsLFxuLnFsLXNub3cgLnFsLWljb24tcGlja2VyIC5xbC1waWNrZXItbGFiZWwge1xuICBwYWRkaW5nOiAycHggNHB4O1xufVxuLnFsLXNub3cgLnFsLWNvbG9yLXBpY2tlciAucWwtcGlja2VyLWxhYmVsIHN2Zyxcbi5xbC1zbm93IC5xbC1pY29uLXBpY2tlciAucWwtcGlja2VyLWxhYmVsIHN2ZyB7XG4gIHJpZ2h0OiA0cHg7XG59XG4ucWwtc25vdyAucWwtaWNvbi1waWNrZXIgLnFsLXBpY2tlci1vcHRpb25zIHtcbiAgcGFkZGluZzogM3B4O1xufVxuLnFsLXNub3cgLnFsLWljb24tcGlja2VyIC5xbC1waWNrZXItaXRlbSB7XG4gIGhlaWdodDogMjRweDtcbiAgd2lkdGg6IDI0cHg7XG4gIHBhZGRpbmc6IDJweCA0cHg7XG4gIG1hcmdpbjogMnB4O1xufVxuLnFsLXNub3cgLnFsLWNvbG9yLXBpY2tlciAucWwtcGlja2VyLW9wdGlvbnMge1xuICBwYWRkaW5nOiAzcHggNXB4O1xuICB3aWR0aDogMTUycHg7XG59XG4ucWwtc25vdyAucWwtY29sb3ItcGlja2VyIC5xbC1waWNrZXItaXRlbSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBmbG9hdDogbGVmdDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBtYXJnaW46IDJweDtcbiAgcGFkZGluZzogMHB4O1xuICB3aWR0aDogMTZweDtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXI6bm90KC5xbC1jb2xvci1waWNrZXIpOm5vdCgucWwtaWNvbi1waWNrZXIpIHN2ZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLXRvcDogLTlweDtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogNTAlO1xuICB3aWR0aDogMThweDtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItbGFiZWxbZGF0YS1sYWJlbF06bm90KFtkYXRhLWxhYmVsPScnXSk6OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUsXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1sYWJlbFtkYXRhLWxhYmVsXTpub3QoW2RhdGEtbGFiZWw9JyddKTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUsXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUsXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1pdGVtW2RhdGEtbGFiZWxdOm5vdChbZGF0YS1sYWJlbD0nJ10pOjpiZWZvcmUge1xuICBjb250ZW50OiBhdHRyKGRhdGEtbGFiZWwpO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIge1xuICB3aWR0aDogOThweDtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItbGFiZWw6OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbTo6YmVmb3JlIHtcbiAgY29udGVudDogJ05vcm1hbCc7XG59XG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9XCIxXCJdOjpiZWZvcmUsXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1cIjFcIl06OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdIZWFkaW5nIDEnO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPVwiMlwiXTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9XCIyXCJdOjpiZWZvcmUge1xuICBjb250ZW50OiAnSGVhZGluZyAyJztcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1cIjNcIl06OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPVwiM1wiXTo6YmVmb3JlIHtcbiAgY29udGVudDogJ0hlYWRpbmcgMyc7XG59XG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9XCI0XCJdOjpiZWZvcmUsXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1cIjRcIl06OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdIZWFkaW5nIDQnO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPVwiNVwiXTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9XCI1XCJdOjpiZWZvcmUge1xuICBjb250ZW50OiAnSGVhZGluZyA1Jztcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1cIjZcIl06OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPVwiNlwiXTo6YmVmb3JlIHtcbiAgY29udGVudDogJ0hlYWRpbmcgNic7XG59XG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1cIjFcIl06OmJlZm9yZSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9XCIyXCJdOjpiZWZvcmUge1xuICBmb250LXNpemU6IDEuNWVtO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9XCIzXCJdOjpiZWZvcmUge1xuICBmb250LXNpemU6IDEuMTdlbTtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtaGVhZGVyIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPVwiNFwiXTo6YmVmb3JlIHtcbiAgZm9udC1zaXplOiAxZW07XG59XG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWhlYWRlciAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1cIjVcIl06OmJlZm9yZSB7XG4gIGZvbnQtc2l6ZTogMC44M2VtO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1oZWFkZXIgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9XCI2XCJdOjpiZWZvcmUge1xuICBmb250LXNpemU6IDAuNjdlbTtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCB7XG4gIHdpZHRoOiAxMDhweDtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsOjpiZWZvcmUsXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtOjpiZWZvcmUge1xuICBjb250ZW50OiAnU2FucyBTZXJpZic7XG59XG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPXNlcmlmXTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPXNlcmlmXTo6YmVmb3JlIHtcbiAgY29udGVudDogJ1NlcmlmJztcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9bW9ub3NwYWNlXTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPW1vbm9zcGFjZV06OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdNb25vc3BhY2UnO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPXNlcmlmXTo6YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IEdlb3JnaWEsIFRpbWVzIE5ldyBSb21hbiwgc2VyaWY7XG59XG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9bW9ub3NwYWNlXTo6YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IE1vbmFjbywgQ291cmllciBOZXcsIG1vbm9zcGFjZTtcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSB7XG4gIHdpZHRoOiA5OHB4O1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItbGFiZWw6OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWl0ZW06OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdOb3JtYWwnO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1zbWFsbF06OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1zbWFsbF06OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdTbWFsbCc7XG59XG4ucWwtc25vdyAucWwtcGlja2VyLnFsLXNpemUgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPWxhcmdlXTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPWxhcmdlXTo6YmVmb3JlIHtcbiAgY29udGVudDogJ0xhcmdlJztcbn1cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9aHVnZV06OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtc2l6ZSAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1odWdlXTo6YmVmb3JlIHtcbiAgY29udGVudDogJ0h1Z2UnO1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPXNtYWxsXTo6YmVmb3JlIHtcbiAgZm9udC1zaXplOiAxMHB4O1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPWxhcmdlXTo6YmVmb3JlIHtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1zaXplIC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPWh1Z2VdOjpiZWZvcmUge1xuICBmb250LXNpemU6IDMycHg7XG59XG4ucWwtc25vdyAucWwtY29sb3ItcGlja2VyLnFsLWJhY2tncm91bmQgLnFsLXBpY2tlci1pdGVtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cbi5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIucWwtY29sb3IgLnFsLXBpY2tlci1pdGVtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbn1cbi5xbC10b29sYmFyLnFsLXNub3cge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsICdBcmlhbCcsIHNhbnMtc2VyaWY7XG4gIHBhZGRpbmc6IDhweDtcbn1cbi5xbC10b29sYmFyLnFsLXNub3cgLnFsLWZvcm1hdHMge1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG59XG4ucWwtdG9vbGJhci5xbC1zbm93IC5xbC1waWNrZXItbGFiZWwge1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cbi5xbC10b29sYmFyLnFsLXNub3cgLnFsLXBpY2tlci1vcHRpb25zIHtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJveC1zaGFkb3c6IHJnYmEoMCwwLDAsMC4yKSAwIDJweCA4cHg7XG59XG4ucWwtdG9vbGJhci5xbC1zbm93IC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1sYWJlbCB7XG4gIGJvcmRlci1jb2xvcjogI2QxZDVkYjtcbn1cbi5xbC10b29sYmFyLnFsLXNub3cgLnFsLXBpY2tlci5xbC1leHBhbmRlZCAucWwtcGlja2VyLW9wdGlvbnMge1xuICBib3JkZXItY29sb3I6ICNkMWQ1ZGI7XG59XG4ucWwtdG9vbGJhci5xbC1zbm93IC5xbC1jb2xvci1waWNrZXIgLnFsLXBpY2tlci1pdGVtLnFsLXNlbGVjdGVkLFxuLnFsLXRvb2xiYXIucWwtc25vdyAucWwtY29sb3ItcGlja2VyIC5xbC1waWNrZXItaXRlbTpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogIzAwMDtcbn1cbi5xbC10b29sYmFyLnFsLXNub3cgKyAucWwtY29udGFpbmVyLnFsLXNub3cge1xuICBib3JkZXItdG9wOiAwcHg7XG59XG4ucWwtc25vdyAucWwtdG9vbHRpcCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XG4gIGJveC1zaGFkb3c6IDBweCAwcHggNXB4ICNkMWQ1ZGI7XG4gIGNvbG9yOiAjNGI1NTYzO1xuICBwYWRkaW5nOiA1cHggMTJweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5xbC1zbm93IC5xbC10b29sdGlwOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlZpc2l0IFVSTDpcIjtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuLnFsLXNub3cgLnFsLXRvb2x0aXAgaW5wdXRbdHlwZT10ZXh0XSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgaGVpZ2h0OiAyNnB4O1xuICBtYXJnaW46IDBweDtcbiAgcGFkZGluZzogM3B4IDVweDtcbiAgd2lkdGg6IDE3MHB4O1xufVxuLnFsLXNub3cgLnFsLXRvb2x0aXAgYS5xbC1wcmV2aWV3IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDIwMHB4O1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLnFsLXNub3cgLnFsLXRvb2x0aXAgYS5xbC1hY3Rpb246OmFmdGVyIHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2QxZDVkYjtcbiAgY29udGVudDogJ0VkaXQnO1xuICBtYXJnaW4tbGVmdDogMTZweDtcbiAgcGFkZGluZy1yaWdodDogOHB4O1xufVxuLnFsLXNub3cgLnFsLXRvb2x0aXAgYS5xbC1yZW1vdmU6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdSZW1vdmUnO1xuICBtYXJnaW4tbGVmdDogOHB4O1xufVxuLnFsLXNub3cgLnFsLXRvb2x0aXAgYSB7XG4gIGxpbmUtaGVpZ2h0OiAyNnB4O1xufVxuLnFsLXNub3cgLnFsLXRvb2x0aXAucWwtZWRpdGluZyBhLnFsLXByZXZpZXcsXG4ucWwtc25vdyAucWwtdG9vbHRpcC5xbC1lZGl0aW5nIGEucWwtcmVtb3ZlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5xbC1zbm93IC5xbC10b29sdGlwLnFsLWVkaXRpbmcgaW5wdXRbdHlwZT10ZXh0XSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5xbC1zbm93IC5xbC10b29sdGlwLnFsLWVkaXRpbmcgYS5xbC1hY3Rpb246OmFmdGVyIHtcbiAgYm9yZGVyLXJpZ2h0OiAwcHg7XG4gIGNvbnRlbnQ6ICdTYXZlJztcbiAgcGFkZGluZy1yaWdodDogMHB4O1xufVxuLnFsLXNub3cgLnFsLXRvb2x0aXBbZGF0YS1tb2RlPWxpbmtdOjpiZWZvcmUge1xuICBjb250ZW50OiBcIkVudGVyIGxpbms6XCI7XG59XG4ucWwtc25vdyAucWwtdG9vbHRpcFtkYXRhLW1vZGU9Zm9ybXVsYV06OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiRW50ZXIgZm9ybXVsYTpcIjtcbn1cbi5xbC1zbm93IC5xbC10b29sdGlwW2RhdGEtbW9kZT12aWRlb106OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiRW50ZXIgdmlkZW86XCI7XG59XG4ucWwtc25vdyBhIHtcbiAgY29sb3I6ICMyNTYzZWI7XG59XG4ucWwtY29udGFpbmVyLnFsLXNub3cge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiO1xufVxuIiwiQGltcG9ydCBcIi9zcnYvd3d3L2Fzc2V0cy9zdHlsZXMvX21peGlucy5zY3NzXCI7XG5cbkBpbXBvcnQgXCJAdnVldXAvdnVlLXF1aWxsL2Rpc3QvdnVlLXF1aWxsLnNub3cuY3NzXCI7XG5cbi5xbC1lZGl0b3Ige1xuICAgIG1pbi1oZWlnaHQ6IDMwMHB4O1xuXG4gICAgaW1nIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgXCIvc3J2L3d3dy9hc3NldHMvc3R5bGVzL19taXhpbnMuc2Nzc1wiO1xuXG4ucGFnaW5hdGlvbiB7XG4gICAgdWwgPiBsaSA+IGEge1xuICAgICAgICBAYXBwbHkgcHgtNCBweS0yO1xuICAgIH1cblxuICAgIC5jdXJyZW50LXBhZ2Uge1xuICAgICAgICBAYXBwbHkgYmctZ3JheSByb3VuZGVkO1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgXCIvc3J2L3d3dy9hc3NldHMvc3R5bGVzL19taXhpbnMuc2Nzc1wiO1xuXG50YWJsZS5yZXNwb25zaXZlIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgYm9yZGVyLXNlcGFyYXRlO1xuICAgIGJvcmRlci1zcGFjaW5nOiAwIDFyZW07XG5cbiAgICBAc2NyZWVuIGxnIHtcbiAgICAgICAgJi5jb25kZW5zZWQge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1jb2xsYXBzZTtcbiAgICAgICAgICAgIGJvcmRlci1zcGFjaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5wYW5lbCB7XG4gICAgICAgICAgICBAYXBwbHkgc2hhZG93LXNtIHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhlYWQge1xuICAgICAgICB0aCB7XG4gICAgICAgICAgICBAYXBwbHkgcHgtNCBweS0yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGZvb3Qge1xuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBAYXBwbHkgcHgtNCBweS0yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGJvZHkge1xuICAgICAgICB0ciB7XG4gICAgICAgICAgICBAYXBwbHkgYmxvY2sgbGc6dGFibGUtcm93IG1iLTQgYmctd2hpdGU7XG5cbiAgICAgICAgICAgIEBzY3JlZW4gbGcge1xuICAgICAgICAgICAgICAgIEBhcHBseSBtYi0wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHB4LTQgcHktMjtcblxuICAgICAgICAgICAgICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYmxvY2sgZm9udC1ib2xkO1xuXG4gICAgICAgICAgICAgICAgICAgIEBzY3JlZW4gbGcge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgIEBhcHBseSBncmlkIGdyaWQtY29scy0yIGJvcmRlci1iIGJvcmRlci1ncmF5O1xuXG4gICAgICAgICAgICAgICAgQHNjcmVlbiBsZyB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSB0YWJsZS1jZWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIEBhcHBseSBtYi0wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQHNjcmVlbiBsZyB7XG4gICAgICAgICYuY29uZGVuc2VkIHtcbiAgICAgICAgICAgIHRib2R5IHtcbiAgICAgICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBweC00IHB5LTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5wYW5lbCB7XG4gICAgICAgIHRib2R5IHtcbiAgICAgICAgICAgIHRyIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgc2hhZG93LXNtIHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuO1xuXG4gICAgICAgICAgICAgICAgQHNjcmVlbiBsZyB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBzaGFkb3ctbm9uZSByb3VuZGVkLW5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5zdHJpcGVkIHtcbiAgICAgICAgdGJvZHkge1xuICAgICAgICAgICAgdHIge1xuICAgICAgICAgICAgICAgIEBhcHBseSBldmVuOmJnLWdyYXktbGlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0cmlwZWQucGFuZWwge1xuICAgICAgICB0Ym9keSB7XG4gICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJnLXdoaXRlO1xuXG4gICAgICAgICAgICAgICAgQHNjcmVlbiBsZyB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBldmVuOmJnLWdyYXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5idXN5OjphZnRlciB7XG4gICAgICAgIEBhcHBseSBibG9jayBhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgdy1mdWxsIGgtZnVsbCBiZy1ncmF5LWRhcmtlc3Qgb3BhY2l0eS01MDtcbiAgICAgICAgY29udGVudDogXCIgXCI7XG4gICAgfVxufVxuIiwiQGltcG9ydCBcIi9zcnYvd3d3L2Fzc2V0cy9zdHlsZXMvX21peGlucy5zY3NzXCI7XG5cbi5tb2RhbC1sb2FkaW5nIHtcbiAgICAuaWNvbiB7XG4gICAgICAgIC8vIHRhaWx3aW5kIHNpemVzIG5vdCBiaWcgZW5vdWdoXG4gICAgICAgIGZvbnQtc2l6ZTogMTByZW07XG4gICAgICAgIGFuaW1hdGlvbjogc3BpbiAzcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cbiIsIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiMnhsOmNvbnRhaW5lciBteC1hdXRvIHB0LTggcHgtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBmbGV4LXdyYXAgbWQ6anVzdGlmeS1iZXR3ZWVuIHNwYWNlLXktNCBtZDpzcGFjZS15LTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LTN4bCBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICB7eyB0cmFucygnc2hpcG1lbnRfcHJlcGFyYXRvcicsICdTaGlwbWVudCBwcmVwYXJhdG9yJywgJ3ByZXBhcmF0b3InKSB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgbWluLWgtaW5oZXJpdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGYtY2VudGVyIGp1c3RpZnktc2VsZi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFja2luZ1NsaXBzTG9hZGVyRm9ybSBAc3VibWl0PVwiaGFuZGxlRm9ybVN1Ym1pdFwiPjwvUGFja2luZ1NsaXBzTG9hZGVyRm9ybT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cblxuaW1wb3J0IHt1c2VTaGlwbWVudFN0b3JlfSBmcm9tIFwiLi4vLi4vc3RvcmVzL3NoaXBtZW50L3NoaXBtZW50U3RvcmVcIjtcbmltcG9ydCB7dXNlU2VjdXJpdHlTdG9yZX0gZnJvbSBcIi4uLy4uL3N0b3Jlcy9zZWN1cml0eS9zZWN1cml0eVN0b3JlXCI7XG5pbXBvcnQge3VzZVJvdXRlcn0gZnJvbSAndnVlLXJvdXRlcic7XG5pbXBvcnQge3VzZVRvYXN0U3RvcmV9IGZyb20gXCIuLi8uLi9zdG9yZXMvdG9hc3QvdG9hc3RTdG9yZVwiO1xuaW1wb3J0IFBhY2tpbmdTbGlwc0xvYWRlckZvcm0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9QYWNraW5nU2xpcHNMb2FkZXJGb3JtLnZ1ZSc7XG5pbXBvcnQge3RyYW5zfSBmcm9tIFwiLi4vLi4vY29tbW9uL2kxOG5cIjtcblxuLy9MT0NBTCBWQVJJQUJMRVNcbmNvbnN0IHNoaXBtZW50U3RvcmUgPSB1c2VTaGlwbWVudFN0b3JlKCk7XG5jb25zdCBzZWN1cml0eVN0b3JlID0gdXNlU2VjdXJpdHlTdG9yZSgpO1xuY29uc3QgdG9hc3RTdG9yZSA9IHVzZVRvYXN0U3RvcmUoKTtcbmNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuXG4vL0FDVElPTlNcbmNvbnN0IGhhbmRsZUZvcm1TdWJtaXQgPSAocGFyYW1zOiB7YXhhcHRhU2hpcG1lbnRJZDogc3RyaW5nLCBwYWNraW5nU2xpcElkOiBzdHJpbmd9KSA9PiB7XG4gICAgc2hpcG1lbnRTdG9yZS5hcGlTaGlwbWVudENyZWF0ZUZyb21BeGFwdGFQYWNraW5nU2xpcHMocm91dGVyLCBwYXJhbXMpXG4gICAgICAgIC50aGVuKChzaGlwbWVudCkgPT4ge1xuICAgICAgICAgICAgdG9hc3RTdG9yZS5hZGRUb2FzdCh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdHJhbnMoXG4gICAgICAgICAgICAgICAgICAgICdzaGlwbWVudF9jcmVhdGVkX3N1Y2Nlc3NmdWxseScsXG4gICAgICAgICAgICAgICAgICAgICdTaGlwbWVudCBjcmVhdGVkIHN1Y2Nlc3NmdWxseSEnLFxuICAgICAgICAgICAgICAgICAgICAnc2hpcG1lbnQnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJvdXRlci5wdXNoKHsgbmFtZTogJ3NoaXBtZW50X3ZpZXdfZWRpdCcsIHBhcmFtczogeyBpZDogc2hpcG1lbnQuaWQgfSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgICAgLy8gdG9hc3RTdG9yZS5hZGRUb2FzdCh7XG4gICAgICAgICAgICAvLyAgICAgbWVzc2FnZTogZXJyb3IsXG4gICAgICAgICAgICAvLyAgICAgdHlwZTogXCJkYW5nZXJcIixcbiAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICB9KTtcbn07XG5cbjwvc2NyaXB0PlxuPHN0eWxlPlxuLm1pbi1oLWluaGVyaXQge1xuICAgIG1pbi1oZWlnaHQ6IGluaGVyaXQ7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICAgIDxkaXYgdi1pZj1cIidQUkVQQVJFRCcgPT0gc2hpcG1lbnRTdG9yZS5zaGlwbWVudC5zdGF0dXNcIj5cbiAgICAgICAgPHRyYW5zaXRpb24tZ3JvdXBcbiAgICAgICAgICAgIG5hbWU9XCJzdG9wLXBvaW50XCJcbiAgICAgICAgICAgIHRhZz1cImRpdlwiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Atem9uZSBmbGV4IGZsZXgtY29sIGdhcC00IHBiLTQgcHQtNFwiXG4gICAgICAgICAgICBAZHJvcD1cIm9uU3RvcFBvaW50RHJvcCgkZXZlbnQpXCJcbiAgICAgICAgICAgIEBkcmFnZW50ZXIucHJldmVudFxuICAgICAgICAgICAgQGRyYWdvdmVyLnByZXZlbnRcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiB2LWZvcj1cInN0b3BQb2ludCBpbiBzaGlwbWVudFN0b3JlLm9yZGVyZWRTdG9wUG9pbnRzXCIgOmlkPVwic3RvcFBvaW50LmlkXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wLXpvbmUgZ3JpZCBncmlkLWNvbHMtW2F1dG8sMWZyLDFmcl0gYmctd2hpdGUgcC00IGdhcC00IGN1cnNvci1ncmFiXCJcbiAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgIEBkcmFnc3RhcnQ9XCJvblN0b3BQb2ludERyYWdTdGFydCgkZXZlbnQsIHN0b3BQb2ludClcIlxuICAgICAgICAgICAgICAgICBAZHJvcC5zdG9wLnByZXZlbnQ9XCJvblN0b3BQb2ludERyb3BUb0l0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIDpjbGFzcz1cImRyYWdnaW5nSWQgPT0gc3RvcFBvaW50LmlkID8gJ2RyYWdnaW5nIHNoYWRvdy1zbScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgIDpkYXRhLXNlcXVlbmNlLW51bWJlcj1cInN0b3BQb2ludC5zZXF1ZW5jZU51bWJlclwiXG4gICAgICAgICAgICAgICAgIDpkYXRhLWlkPVwic3RvcFBvaW50LmlkXCJcbiAgICAgICAgICAgICAgICAgOmtleT1cInN0b3BQb2ludC5pZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQteGwgZm9udC1ib2xkIHctOFwiPnt7IHN0b3BQb2ludC5zZXF1ZW5jZU51bWJlciB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGRcIj57eyBzdG9wUG9pbnQuZGVsaXZlcnlBZGRyZXNzIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj57eyBnZXRQYWNraW5nU2xpcElkcyhzdG9wUG9pbnQuZGVsaXZlcnlBZGRyZXNzKSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdHJhbnNpdGlvbi1ncm91cD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uIHYtaWY9XCInUFJFUEFSRUQnID09IHNoaXBtZW50U3RvcmUuc2hpcG1lbnQuc3RhdHVzXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IHctYXV0byBtZDpoLWZ1bGxcIlxuICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cIiFuZWVkVG9TYXZlXCJcbiAgICAgICAgICAgICAgICBAY2xpY2s9XCJzaGlwbWVudE9yZGVyaW5nRmluaXNoZWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHRyYW5zKCdzaGlwbWVudF9vcmRlcmluZ19zYXZlX2J1dHRvbicsICdTYXZlIHRoZSBvcmRlcicsICdzaGlwbWVudCcpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHYtaWY9XCInUFJFUEFSRUQnID09IHNoaXBtZW50U3RvcmUuc2hpcG1lbnQuc3RhdHVzXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyB3LWF1dG8gbWQ6aC1mdWxsXCJcbiAgICAgICAgICAgICAgICBAY2xpY2s9XCJzaGlwbWVudE9yZGVyaW5nRmluaXNoZWQodHJ1ZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0cmFucygnc2hpcG1lbnRfb3JkZXJpbmdfZmluaXNoZWRfYnV0dG9uJywgJ09yZGVyaW5nIGZpbmlzaGVkJywgJ3NoaXBtZW50JykgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHtSZWYsIHJlZiwgb25CZWZvcmVNb3VudCwgb25Vbm1vdW50ZWR9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCBGaWVsZERlZmluaXRpb25JbnRlcmZhY2UgZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvUmVzcG9uc2l2ZVRhYmxlXCI7XG5pbXBvcnQge3VzZVNoaXBtZW50U3RvcmV9IGZyb20gXCIuLi8uLi9zdG9yZXMvc2hpcG1lbnQvc2hpcG1lbnRTdG9yZVwiO1xuaW1wb3J0IHtQYWNraW5nU2xpcEludGVyZmFjZX0gZnJvbSBcIi4uLy4uL21vZGVscy9QYWNraW5nU2xpcFwiO1xuaW1wb3J0IHt1c2VSb3V0ZXJ9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuaW1wb3J0IHt1c2VUb2FzdFN0b3JlfSBmcm9tIFwiLi4vLi4vc3RvcmVzL3RvYXN0L3RvYXN0U3RvcmVcIjtcbmltcG9ydCB7U2hpcG1lbnRTdGF0dXN9IGZyb20gXCIuLi8uLi9tb2RlbHMvU2hpcG1lbnRTdGF0dXNcIjtcbmltcG9ydCB7UGFja2luZ1NsaXBTdGF0dXN9IGZyb20gXCIuLi8uLi9tb2RlbHMvUGFja2luZ1NsaXBTdGF0dXNcIjtcbmltcG9ydCB7dHJhbnN9IGZyb20gXCIuLi8uLi9jb21tb24vaTE4blwiO1xuaW1wb3J0IHsgU2hpcG1lbnRJbnRlcmZhY2UgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL1NoaXBtZW50XCI7XG5pbXBvcnQgeyBTdG9wUG9pbnRJbnRlcmZhY2UgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL1N0b3BQb2ludHNcIjtcblxuY29uc3Qgc2hpcG1lbnRTdG9yZSA9IHVzZVNoaXBtZW50U3RvcmUoKTtcbmxldCBkcmFnZ2luZ0lkOiBSZWY8bnVtYmVyPiA9IHJlZigwKTtcbmNvbnN0IG5lZWRUb1NhdmU6IFJlZjxib29sZWFuPiA9IHJlZihmYWxzZSk7XG5jb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcbmNvbnN0IHRvYXN0U3RvcmUgPSB1c2VUb2FzdFN0b3JlKCk7XG5cbmNvbnN0IHBhY2tpbmdTbGlwTGlzdEZpZWxkczogUmVmPEZpZWxkRGVmaW5pdGlvbkludGVyZmFjZVtdPiA9IHJlZjxGaWVsZERlZmluaXRpb25JbnRlcmZhY2VbXT4oW1xuICAgIHtcbiAgICAgICAga2V5OiBcInNlcXVlbmNlTnVtYmVyXCIsXG4gICAgICAgIGxhYmVsOiB0cmFucygnc2VxdWVuY2VfbnVtYmVyJywgXCJTZXF1ZW5jZVwiLCAnc2hpcG1lbnQnKSA/PyBcIlNlcXVlbmNlXCIsXG4gICAgICAgIHZhbHVlOiBcInNlcXVlbmNlTnVtYmVyXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGtleTogXCJpZFwiLFxuICAgICAgICBsYWJlbDogdHJhbnMoJ2lkJywgXCJJRFwiLCAnc2hpcG1lbnQnKSA/PyBcIklEXCIsXG4gICAgICAgIHZhbHVlOiBcImlkXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGtleTogXCJjdXN0b21lck5hbWVcIixcbiAgICAgICAgbGFiZWw6IHRyYW5zKCdjdXN0b21lcl9uYW1lJywgXCJDdXN0b21lciBOYW1lXCIsICdzaGlwbWVudCcpID8/IFwiQ3VzdG9tZXIgTmFtZVwiLFxuICAgICAgICB2YWx1ZTogXCJjdXN0b21lck5hbWVcIixcbiAgICB9LFxuICAgIHtcbiAgICAgICAga2V5OiBcImN1c3RvbWVyQWRkcmVzc1wiLFxuICAgICAgICBsYWJlbDogdHJhbnMoJ2N1c3RvbWVyX2FkZHJlc3MnLCBcIkN1c3RvbWVyIEFkZHJlc3NcIiwgJ3NoaXBtZW50JykgPz8gXCJDdXN0b21lciBBZGRyZXNzXCIsXG4gICAgICAgIHZhbHVlOiBcImN1c3RvbWVyQWRkcmVzc1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgICBrZXk6IFwiY2FzaE9uRGVsaXZlcnlQcmljZVwiLFxuICAgICAgICBsYWJlbDogdHJhbnMoJ2Nhc2hfb25fZGVsaXZlcnlfcHJpY2UnLCBcIkNhc2ggb24gZGVsaXZlcnkgcHJpY2VcIiwgJ3NoaXBtZW50JykgPz8gXCJDYXNoIG9uIGRlbGl2ZXJ5IHByaWNlXCIsXG4gICAgICAgIHZhbHVlOiBcImNhc2hPbkRlbGl2ZXJ5UHJpY2VcIixcbiAgICB9LFxuXSk7XG5cbm9uQmVmb3JlTW91bnQoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHNoaXBtZW50U3RvcmUuZ2V0U3RvcFBvaW50c0J5U2hpcG1lbnQocm91dGVyLCB7IHNoaXBtZW50SWQ6IHNoaXBtZW50U3RvcmUuc2hpcG1lbnQuaWQgfSk7XG5cbiAgICAvLyBsZSBrZWxsIGVsbGVub3Jpem5pIGEgc29ycmVuZGlzZWdldCwgaG9neSBtaW5kZW5ob2wgam8gZXJ0ZWtlayBsZWd5ZW5la1xuICAgIC8vIHRlaGF0IG5lIGxlZ3llbiBzZWhvbCAwLCBlcyBuZSBsZWd5ZW4gMiBlZ3lmb3JtYSBzemFtIHNlbVxuICAgIC8vIHNvcmJhcmVuZGV6enVrLCBpZ3kgYml6dG9zYW4gdHVkaGF0anVrLCBob2d5IGEgbnVsbGEgYXogZWxzb1xuICAgIGxldCBzdG9wUG9pbnRzTGlzdCA9IHNoaXBtZW50U3RvcmUub3JkZXJlZFN0b3BQb2ludHM7XG4gICAgbGV0IHN0b3BQb2ludHNMaXN0VW5vcmRlcmVkOiBTdG9wUG9pbnRJbnRlcmZhY2VbXSA9IFtdO1xuICAgIGxldCBzdG9wUG9pbnRzTGlzdFJlb3JkZXJlZDogU3RvcFBvaW50SW50ZXJmYWNlW10gPSBbXTtcbiAgICBsZXQgbGFzdFNlcXVlbmNlTnVtYmVyOiBudW1iZXIgPSAwO1xuICAgIHN0b3BQb2ludHNMaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICBpZiAoMCA9PT0gaXRlbS5zZXF1ZW5jZU51bWJlcikge1xuICAgICAgICAgICAvLyBlZ3kgcmVuZGV0bGVuIGVsZW1ldCB0YWxhbHR1bmtcbiAgICAgICAgICAgc3RvcFBvaW50c0xpc3RVbm9yZGVyZWQucHVzaChpdGVtKTtcbiAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAvLyB2YW4gbWFyIHNlcXVlbmNlIG51bWJlclxuICAgICAgICAgICAvLyBiZXJha2p1ayBheiB1anJhcmVuZGV6ZXR0IGxpc3RhYmFcbiAgICAgICAgICAgbGFzdFNlcXVlbmNlTnVtYmVyKys7XG4gICAgICAgICAgIGlmIChpdGVtLnNlcXVlbmNlTnVtYmVyICE9PSBsYXN0U2VxdWVuY2VOdW1iZXIpIHtcbiAgICAgICAgICAgICAgIC8vIG1lbnRlcyBzenVrc2VnZXNcbiAgICAgICAgICAgICAgIG5lZWRUb1NhdmUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICB9XG4gICAgICAgICAgIGl0ZW0uc2VxdWVuY2VOdW1iZXIgPSBsYXN0U2VxdWVuY2VOdW1iZXI7XG4gICAgICAgICAgIHN0b3BQb2ludHNMaXN0UmVvcmRlcmVkLnB1c2goaXRlbSk7XG4gICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHN0b3BQb2ludHNMaXN0VW5vcmRlcmVkLmxlbmd0aCkge1xuICAgICAgICAvLyBtZW50ZXMgc3p1a3NlZ2VzXG4gICAgICAgIG5lZWRUb1NhdmUudmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgICBsZXQgc3RvcFBvaW50OiBTdG9wUG9pbnRJbnRlcmZhY2U7XG4gICAgLy8gYSByZW5kZXpldGxlbiBlbGVtZWtldCBheiB1anJhcmVuZGV6ZXR0IGxpc3RhaG96IGFkanVrXG4gICAgd2hpbGUgKHN0b3BQb2ludHNMaXN0VW5vcmRlcmVkLmxlbmd0aCkge1xuICAgICAgICBzdG9wUG9pbnQgPSBzdG9wUG9pbnRzTGlzdFVub3JkZXJlZC5wb3AoKTtcbiAgICAgICAgbGFzdFNlcXVlbmNlTnVtYmVyKys7XG4gICAgICAgIHN0b3BQb2ludC5zZXF1ZW5jZU51bWJlciA9IGxhc3RTZXF1ZW5jZU51bWJlcjtcbiAgICAgICAgc3RvcFBvaW50c0xpc3RSZW9yZGVyZWQucHVzaChzdG9wUG9pbnQpO1xuICAgIH1cblxuICAgIHNoaXBtZW50U3RvcmUuc3RvcFBvaW50cyA9IHN0b3BQb2ludHNMaXN0UmVvcmRlcmVkO1xufSk7XG5cbmNvbnN0IG9uU3RvcFBvaW50RHJhZ1N0YXJ0ID0gKGV2ZW50LCBzdG9wUG9pbnQ6IFN0b3BQb2ludEludGVyZmFjZSkgPT4ge1xuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnO1xuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ21vdmUnO1xuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCdzdG9wUG9pbnRJZCcsIHN0b3BQb2ludC5pZCk7XG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3N0b3BQb2ludFNlcXVlbmNlTnVtYmVyJywgc3RvcFBvaW50LnNlcXVlbmNlTnVtYmVyKTtcbiAgICBkcmFnZ2luZ0lkLnZhbHVlID0gc3RvcFBvaW50LmlkO1xufTtcblxuY29uc3Qgb25TdG9wUG9pbnREcm9wID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFldmVudC50YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgaWQgPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgnc3RvcFBvaW50SWQnKTtcbiAgICBsZXQgc2VxdWVuY2VOdW1iZXIgPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgnc3RvcFBvaW50U2VxdWVuY2VOdW1iZXInKTtcbiAgICBsZXQgbW91c2VZID0gZXZlbnQuY2xpZW50WTtcbiAgICAvLyBsZXQgaWQgPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgncGFja2luZ1NsaXBJZCcpO1xuICAgIC8vIGxldCBzZXF1ZW5jZU51bWJlciA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCdwYWNraW5nU2xpcFNlcXVlbmNlTnVtYmVyJyk7XG4gICAgLy8gZHJhZ2dpbmdJZC52YWx1ZSA9IDA7XG4gICAgLy8gbWVnIGtlbGwgYWxsYXBpdGFuaSwgaG9neSBsZWRvYmFzIGhlbHllIGhvbCB2YW5cbiAgICAvLyBheiBlZ2VyIFkgcG96aWNpb2phIGV2ZW50LmNsaWVudFlcbiAgICAvLyBtZWcga2VsbCBhbGxhcGl0YW5pLCBob2d5IG1lbHlpayBlbGVtaGV6IHZhbiBhIGxlZ2tvemVsZWJiXG4gICAgZXZlbnQudGFyZ2V0LmNoaWxkTm9kZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5kYXRhc2V0KSB7XG4gICAgICAgICAgICBsZXQgYm94ID0gaXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIC8vIGhhIGEgYm90dG9tID4gbWludCBhIG1vdXNlLCBha2tvciBrZWxsIGZpZ3llbG5pXG4gICAgICAgICAgICAvLyBoYSBhIHRvcFxuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5jb25zdCBvblN0b3BQb2ludERyb3BUb0l0ZW0gPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoIWV2ZW50LnRhcmdldCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBpZCA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCdzdG9wUG9pbnRJZCcpO1xuICAgIGxldCBzZXF1ZW5jZU51bWJlciA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCdzdG9wUG9pbnRTZXF1ZW5jZU51bWJlcicpO1xuICAgIC8vIG1lZyBrZWxsIGtlcmVzbmkgYSB0YXJnZXQtZXRcbiAgICBsZXQgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIHdoaWxlICh0YXJnZXQpIHtcbiAgICAgICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2Ryb3Atem9uZScpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICB9XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgY2F0Y2hlcklkID0gdGFyZ2V0LmRhdGFzZXQuaWQ7XG4gICAgaWYgKGlkID09IGNhdGNoZXJJZCkge1xuICAgICAgICAvLyBzYWphdCBtYWdhcmEgZG9idHVrLCBuZW0ga2VsbCBzZW1taXQgc2UgY3NpbmFsbmlcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBuZWVkVG9TYXZlLnZhbHVlID0gdHJ1ZTtcbiAgICBsZXQgY2F0Y2hlclNlcXVlbmNlTnVtYmVyID0gcGFyc2VJbnQodGFyZ2V0LmRhdGFzZXQuc2VxdWVuY2VOdW1iZXIpO1xuICAgIGxldCBib3ggPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgZHJhZ2dpbmdJZC52YWx1ZSA9IDA7XG4gICAgLy8gbWVnIGtlbGwgYWxsYXBpdGFuaSwgaG9neSBsZWRvYmFzIGhlbHllIGhvbCB2YW5cbiAgICAvLyBheiBlZ2VyIFkgcG96aWNpb2phIGV2ZW50LmNsaWVudFlcbiAgICBsZXQgbW91c2VZID0gZXZlbnQuY2xpZW50WTtcbiAgICBsZXQgdHJlc2hvbGRZID0gYm94LnRvcCArIChib3guaGVpZ2h0IC8gMik7XG5cbiAgICBsZXQgbmV3U2VxdWVuY2VOdW1iZXIgPSBjYXRjaGVyU2VxdWVuY2VOdW1iZXI7XG4gICAgaWYgKG1vdXNlWSA+IHRyZXNob2xkWSkge1xuICAgICAgICAvLyBheiBhbHNvIHJlc3piZW4gdmFneXVuaywgdGVoYXQgbW9nZSBrZXJ1bFxuICAgICAgICBuZXdTZXF1ZW5jZU51bWJlciA9IGNhdGNoZXJTZXF1ZW5jZU51bWJlciArIDE7XG4gICAgfSBlbHNlIGlmIChtb3VzZVkgPCB0cmVzaG9sZFkpIHtcbiAgICAgICAgLy8gYSBmZWxzbyByZXN6YmVuIHZhZ3l1bmssIHRlaGF0IGVsZSBrZXJ1bFxuICAgICAgICAvLyBwYXNzXG4gICAgfVxuICAgIHNoaXBtZW50U3RvcmUucmVPcmRlcmluZ1N0b3BQb2ludChzZXF1ZW5jZU51bWJlciAtIDEsIG5ld1NlcXVlbmNlTnVtYmVyIC0gMSlcbn07XG5cbmNvbnN0IHNoaXBtZW50T3JkZXJpbmdGaW5pc2hlZCA9IChmaW5pc2hlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG5cbiAgICBsZXQgb3JkZXJpbmc6IHtba2V5OiBzdHJpbmddOiBudW1iZXJ9ID0ge307XG5cbiAgICBzaGlwbWVudFN0b3JlLnN0b3BQb2ludHMuZm9yRWFjaCgoc3RvcFBvaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHtpZCwgc2VxdWVuY2VOdW1iZXJ9ID0gc3RvcFBvaW50O1xuICAgICAgICBvcmRlcmluZ1tpZF0gPSBzZXF1ZW5jZU51bWJlcjtcbiAgICB9KVxuXG4gICAgc2hpcG1lbnRTdG9yZS5hcGlTaGlwbWVudE9yZGVyaW5nRmluaXNoZWQocm91dGVyLCBzaGlwbWVudFN0b3JlLnNoaXBtZW50LmlkLCBvcmRlcmluZywgZmluaXNoZWQpXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHNoaXBtZW50ID0gcmVzcG9uc2UgYXMgU2hpcG1lbnRJbnRlcmZhY2U7XG4gICAgICAgICAgICBzaGlwbWVudFN0b3JlLnJlcGxhY2VTaGlwbWVudChzaGlwbWVudCk7XG4gICAgICAgICAgICBpZiAoU2hpcG1lbnRTdGF0dXMuTE9BRElORyA9PSBzaGlwbWVudC5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdHJhbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcG1lbnRfb3JkZXJpbmdfZmluaXNoZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1NoaXBtZW50IG9yZGVyaW5nIGZpbmlzaGVkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcG1lbnQnXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChTaGlwbWVudFN0YXR1cy5QUkVQQVJFRCA9PSBzaGlwbWVudC5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdHJhbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcG1lbnRfb3JkZXJpbmdfc2F2ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1NoaXBtZW50IG9yZGVyaW5nIHNhdmVkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcG1lbnQnXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0cmFucyhcbiAgICAgICAgICAgICAgICAgICAgJ3NoaXBtZW50X29yZGVyaW5nX2ZhaWxlZCcsXG4gICAgICAgICAgICAgICAgICAgICdTaGlwbWVudCBvcmRlcmluZyBmYWlsZWQhJyxcbiAgICAgICAgICAgICAgICAgICAgJ3NoaXBtZW50J1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaWNvbjogJ21hcnNvLWljb24tbm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xufTtcblxuY29uc3QgZ2V0UGFja2luZ1NsaXBJZHMgPSAoZGVsaXZlcnlBZGRyZXNzOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIXNoaXBtZW50U3RvcmUuc2hpcG1lbnQucGFja2luZ1NsaXBzLmxlbmd0aCB8fCAhZGVsaXZlcnlBZGRyZXNzKSByZXR1cm47XG5cbiAgICBjb25zdCBpZHMgPSBzaGlwbWVudFN0b3JlLnNoaXBtZW50LnBhY2tpbmdTbGlwc1xuICAgICAgICAuZmlsdGVyKHBhY2tpbmdTbGlwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBgJHtwYWNraW5nU2xpcC5kZWxpdmVyeVppcENvZGV9ICR7cGFja2luZ1NsaXAuZGVsaXZlcnlDaXR5fSAke3BhY2tpbmdTbGlwLmRlbGl2ZXJ5U3RyZWV0fWA7XG4gICAgICAgICAgICByZXR1cm4gZGVsaXZlcnlBZGRyZXNzID09PSBhZGRyZXNzO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKHBhY2tpbmdTbGlwID0+IHBhY2tpbmdTbGlwLmlkKTtcblxuICAgIHJldHVybiBpZHMuam9pbignLCAnKTtcbn07XG5cbm9uVW5tb3VudGVkKCgpID0+IHtcbiAgICBzaGlwbWVudFN0b3JlLnN0b3BQb2ludHMgPSBbXTtcbn0pXG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5zdG9wLXBvaW50LWVudGVyLWFjdGl2ZSwgLnN0b3AtcG9pbnQtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuLnN0b3AtcG9pbnQtZW50ZXItZnJvbSwgLnN0b3AtcG9pbnQtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xufVxuLnN0b3AtcG9pbnQtbW92ZSB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4gcmVsYXRpdmVcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW3snY29uZmlybWF0aW9uJzogaXNDb25maXJtZWR9LCBidXR0b25DbGFzc2VzXVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgICAgICAgICA6ZGF0YS1tZXNzYWdlPVwibWVzc2FnZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzbG90PjxpIGNsYXNzPVwidGV4dC0yeGwgbWFyc28taWNvbi10cmFzaFwiPjwvaT48L3Nsb3Q+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7cmVmLCBSZWZ9IGZyb20gXCJ2dWVcIjtcblxuY29uc3QgaXNDb25maXJtZWQ6IFJlZjxib29sZWFuPiA9IHJlZihmYWxzZSk7XG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjb25maXJtZWQnXSk7XG5cbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICB9LFxuICAgIGJ1dHRvbkNsYXNzZXM6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdidG4tZGFuZ2VyIGJ0bi1saW5rJ1xuICAgIH1cbn0pO1xuXG5jb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAoaXNDb25maXJtZWQudmFsdWUpIHtcbiAgICAgICAgZW1pdCgnY29uZmlybWVkJyk7XG4gICAgICAgIGlzQ29uZmlybWVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpc0NvbmZpcm1lZC52YWx1ZSA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlzQ29uZmlybWVkLnZhbHVlID0gZmFsc2U7XG4gICAgfSwgNTAwMCk7XG59XG5cbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmNvbmZpcm1hdGlvbjo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29udGVudDogYXR0cihkYXRhLW1lc3NhZ2UpO1xuICAgIG9wYWNpdHk6IDAuOTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgdG9wOiAtMTAwJTtcbiAgICBAYXBwbHkgYmctcmVkXG59XG5cbi5jb25maXJtYXRpb246OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gICAgYm9yZGVyOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIHRvcDogLTVweDtcbiAgICBvcGFjaXR5OiAwLjk7XG4gICAgQGFwcGx5IGJvcmRlci10LXJlZFxufVxuXG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICAgIDx0cmFuc2l0aW9uIG5hbWU9XCJmYWRlXCI+XG4gICAgICAgIDxkaXYgXG4gICAgICAgICAgICB2LWlmPVwiaXNPcGVuXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW9kYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJzY3JlZW5PcmllbnRhdGlvblR5cGUgPT09ICdwb3J0cmFpdC1wcmltYXJ5JyA/ICdmbGV4LWNvbC1yZXZlcnNlJyA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgJyFmbGV4LXJvdyc6IHNjcmVlbk9yaWVudGF0aW9uVHlwZSA9PT0gJ3BvcnRyYWl0LXByaW1hcnknIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctcmVkIHAtNCByb3VuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInRvZ2dsZU1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXJzby1pY29uLXdyb25nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ibHVlIHAtNCByb3VuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInJlZnJlc2hDYW52YXNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hcnNvLWljb24tcmVmcmVzaFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JlZW4gcC00IHJvdW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2lnblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWFyc28taWNvbi1yaWdodFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxjYW52YXNcbiAgICAgICAgICAgICAgICAgICAgcmVmPVwiY2FudmFzXCJcbiAgICAgICAgICAgICAgICAgICAgOndpZHRoPVwiY2FudmFzV2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICA6aGVpZ2h0PVwiY2FudmFzSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgQG1vdXNlZG93bj1cInN0YXJ0RHJhd2luZ1wiXG4gICAgICAgICAgICAgICAgICAgIEBtb3VzZW1vdmU9XCJkcmF3XCJcbiAgICAgICAgICAgICAgICAgICAgQG1vdXNldXA9XCJlbmREcmF3aW5nXCJcbiAgICAgICAgICAgICAgICAgICAgQHRvdWNoc3RhcnQ9XCJzdGFydERyYXdpbmdcIlxuICAgICAgICAgICAgICAgICAgICBAdG91Y2htb3ZlPVwiZHJhd1wiXG4gICAgICAgICAgICAgICAgICAgIEB0b3VjaGVuZD1cImVuZERyYXdpbmdcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90cmFuc2l0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHJlZiwgZGVmaW5lUHJvcHMsIGRlZmluZUVtaXRzLCBSZWYsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB0cmFucyB9IGZyb20gXCIuLi9jb21tb24vaTE4blwiO1xuaW1wb3J0IHsgdXNlVG9hc3RTdG9yZSB9IGZyb20gXCIuLi9zdG9yZXMvdG9hc3QvdG9hc3RTdG9yZVwiO1xuXG5jb25zdCB0b2FzdFN0b3JlID0gdXNlVG9hc3RTdG9yZSgpO1xuXG5jb25zdCBzY3JlZW5PcmllbnRhdGlvblR5cGU6IFJlZjxzdHJpbmc+ID0gcmVmKFwiXCIpO1xuY29uc3QgY2FudmFzOiBSZWY8SFRNTENhbnZhc0VsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbmNvbnN0IHdpbmRvd0lubmVyV2lkdGg6IFJlZjxudW1iZXI+ID0gcmVmKDApO1xuY29uc3Qgd2luZG93SW5uZXJIZWlnaHQ6IFJlZjxudW1iZXI+ID0gcmVmKDApO1xuY29uc3QgY2FudmFzV2lkdGg6IFJlZjxudW1iZXI+ID0gcmVmKDApO1xuY29uc3QgY2FudmFzSGVpZ2h0OiBSZWY8bnVtYmVyPiA9IHJlZigwKTtcbmNvbnN0IGNhbnZhc1BlcmNlbnRhZ2U6IFJlZjxudW1iZXI+ID0gcmVmKDAuOCk7XG5jb25zdCBpc0RyYXdpbmc6IFJlZjxib29sZWFuPiA9IHJlZihmYWxzZSk7XG5jb25zdCBsYXN0WDogUmVmPG51bWJlcj4gPSByZWYoMCk7XG5jb25zdCBsYXN0WTogUmVmPG51bWJlcj4gPSByZWYoMCk7IFxuY29uc3Qgc2F2ZWRDYW52YXNDb250ZW50OiBSZWY8c3RyaW5nIHwgbnVsbD4gPSByZWYobnVsbCk7XG5jb25zdCBmaXJzdE9yaWVudGF0aW9uSXNQb3J0cmFpdDogUmVmPGJvb2xlYW4+ID0gcmVmKGZhbHNlKTtcbmNvbnN0IHNpZ25hdHVyZU9yaWVudGF0aW9uQXREcmF3aW5nOiBSZWY8c3RyaW5nIHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gICAgaXNPcGVuOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxufSk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbXCJ0b2dnbGVcIiwgXCJzaWduXCJdKTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgICBzZXRTY3JlZW5PcmllbnRhdGlvblR5cGUoKTtcblxuICAgIGlmIChzY3JlZW5PcmllbnRhdGlvblR5cGUudmFsdWUgPT09IFwicG9ydHJhaXQtcHJpbWFyeVwiKSB7XG4gICAgICAgIGZpcnN0T3JpZW50YXRpb25Jc1BvcnRyYWl0LnZhbHVlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB3aW5kb3cuc2NyZWVuLm9yaWVudGF0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgc2V0U2NyZWVuT3JpZW50YXRpb25UeXBlKCk7XG4gICAgICAgIHVwZGF0ZUNhbnZhc1NpemUoKTtcbiAgICB9KTtcblxuICAgIHdpbmRvd0lubmVyV2lkdGgudmFsdWUgPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICB3aW5kb3dJbm5lckhlaWdodC52YWx1ZSA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICBcbiAgICBjYW52YXNXaWR0aC52YWx1ZSA9IHdpbmRvd0lubmVyV2lkdGgudmFsdWUgKiBjYW52YXNQZXJjZW50YWdlLnZhbHVlO1xuICAgIGNhbnZhc0hlaWdodC52YWx1ZSA9IHdpbmRvd0lubmVySGVpZ2h0LnZhbHVlICogY2FudmFzUGVyY2VudGFnZS52YWx1ZTtcbn0pO1xuXG5vblVubW91bnRlZCgoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5zY3JlZW4ub3JpZW50YXRpb24uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICBzZXRTY3JlZW5PcmllbnRhdGlvblR5cGUoKTtcbiAgICAgICAgdXBkYXRlQ2FudmFzU2l6ZSgpO1xuICAgIH0pO1xufSlcblxuY29uc3QgdG9nZ2xlTW9kYWwgPSAoKSA9PiB7XG4gICAgZW1pdChcInRvZ2dsZVwiKTtcbn07XG5cbmNvbnN0IHN0YXJ0RHJhd2luZyA9IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHtcbiAgICBpc0RyYXdpbmcudmFsdWUgPSB0cnVlO1xuICAgIGlmICghY2FudmFzLnZhbHVlKSByZXR1cm47XG5cbiAgICBpZiAoIXNpZ25hdHVyZU9yaWVudGF0aW9uQXREcmF3aW5nLnZhbHVlKSB7XG4gICAgICAgIHNpZ25hdHVyZU9yaWVudGF0aW9uQXREcmF3aW5nLnZhbHVlID0gc2NyZWVuT3JpZW50YXRpb25UeXBlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcbiAgICAgICAgW2xhc3RYLnZhbHVlLCBsYXN0WS52YWx1ZV0gPSBbZXZlbnQub2Zmc2V0WCwgZXZlbnQub2Zmc2V0WV07XG4gICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQpIHtcbiAgICAgICAgY29uc3QgdG91Y2ggPSBldmVudC50b3VjaGVzWzBdO1xuICAgICAgICBbbGFzdFgudmFsdWUsIGxhc3RZLnZhbHVlXSA9IFtcbiAgICAgICAgICAgIHRvdWNoLmNsaWVudFggLSBjYW52YXMudmFsdWUub2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvdWNoLmNsaWVudFkgLSBjYW52YXMudmFsdWUub2Zmc2V0VG9wLFxuICAgICAgICBdO1xuICAgIH1cbn07XG5cbmNvbnN0IGRyYXcgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB7XG4gICAgaWYgKCFpc0RyYXdpbmcudmFsdWUgfHwgIWNhbnZhcy52YWx1ZSkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy52YWx1ZS5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgaWYgKCFjb250ZXh0KSByZXR1cm47XG5cbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQubW92ZVRvKGxhc3RYLnZhbHVlLCBsYXN0WS52YWx1ZSk7XG5cbiAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBUb3VjaEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTtcbiAgICAgICAgW2xhc3RYLnZhbHVlLCBsYXN0WS52YWx1ZV0gPSBbXG4gICAgICAgICAgICB0b3VjaC5jbGllbnRYIC0gY2FudmFzLnZhbHVlLm9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3VjaC5jbGllbnRZIC0gY2FudmFzLnZhbHVlLm9mZnNldFRvcCxcbiAgICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtb3VzZUV2ZW50ID0gZXZlbnQgYXMgTW91c2VFdmVudDtcbiAgICAgICAgW2xhc3RYLnZhbHVlLCBsYXN0WS52YWx1ZV0gPSBbbW91c2VFdmVudC5vZmZzZXRYLCBtb3VzZUV2ZW50Lm9mZnNldFldO1xuICAgIH1cblxuICAgIGNvbnRleHQubGluZVRvKGxhc3RYLnZhbHVlLCBsYXN0WS52YWx1ZSk7XG4gICAgY29udGV4dC5zdHJva2UoKTtcbn07XG5cbmNvbnN0IGVuZERyYXdpbmcgPSAoKSA9PiB7XG4gICAgaXNEcmF3aW5nLnZhbHVlID0gZmFsc2U7XG59O1xuXG5jb25zdCByZWZyZXNoQ2FudmFzID0gKCkgPT4ge1xuICAgIGlmICghY2FudmFzLnZhbHVlKSByZXR1cm47XG4gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy52YWx1ZS5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgaWYgKCFjb250ZXh0KSByZXR1cm47XG5cbiAgICBsZXQgaW1hZ2VEYXRhID0gbnVsbDtcblxuICAgIGlmIChjYW52YXNXaWR0aC52YWx1ZSAmJiBjYW52YXNIZWlnaHQudmFsdWUpIHtcbiAgICAgICAgaW1hZ2VEYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzV2lkdGgudmFsdWUsIGNhbnZhc0hlaWdodC52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhbnZhc0VtcHR5KGltYWdlRGF0YSkpIHtcbiAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgY2FudmFzV2lkdGgudmFsdWUsIGNhbnZhc0hlaWdodC52YWx1ZSk7XG5cbiAgICAgICAgdG9hc3RTdG9yZS5hZGRUb2FzdCh7XG4gICAgICAgICAgICB0aXRsZTogdHJhbnMoJ2RlbGV0ZWRfc3VjY2Vzc2Z1bGx5JywgJ0RlbGV0ZWQgc3VjY2Vzc2Z1bGx5IScsICdzaWduaW5nX21vZGFsJyksXG4gICAgICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgIHNob3dJY29uOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgIHRpdGxlOiB0cmFucygndGhlX3NpZ25hdHVyZV9maWVsZF9pc19lbXB0eScsICdUaGUgc2lnbmF0dXJlIGZpZWxkIGlzIGVtcHR5IScsICdzaWduaW5nX21vZGFsJyksXG4gICAgICAgICAgICB0eXBlOiBcImRhbmdlclwiLFxuICAgICAgICAgICAgc2hvd0ljb246IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG59O1xuXG5jb25zdCBpc0NhbnZhc0VtcHR5ID0gKGltYWdlRGF0YTogYW55KSA9PiB7XG4gICAgcmV0dXJuICFBcnJheS5mcm9tKHsgbGVuZ3RoOiBpbWFnZURhdGEuZGF0YS5sZW5ndGggLyA0IH0sIChfLCBpKSA9PiBpICogNCkuc29tZShpID0+IGltYWdlRGF0YS5kYXRhW2kgKyAzXSAhPT0gMCk7XG59XG5cbmNvbnN0IHVwZGF0ZUNhbnZhc1NpemUgPSAoKSA9PiB7XG4gICAgaWYgKGZpcnN0T3JpZW50YXRpb25Jc1BvcnRyYWl0LnZhbHVlKSB7XG4gICAgICAgIGlmIChzY3JlZW5PcmllbnRhdGlvblR5cGUudmFsdWUgPT09IFwicG9ydHJhaXQtcHJpbWFyeVwiKSB7XG4gICAgICAgICAgICBjYW52YXNXaWR0aC52YWx1ZSA9IHdpbmRvd0lubmVyV2lkdGgudmFsdWUgKiBjYW52YXNQZXJjZW50YWdlLnZhbHVlO1xuICAgICAgICAgICAgY2FudmFzSGVpZ2h0LnZhbHVlID0gd2luZG93SW5uZXJIZWlnaHQudmFsdWUgKiBjYW52YXNQZXJjZW50YWdlLnZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FudmFzV2lkdGgudmFsdWUgPSB3aW5kb3dJbm5lckhlaWdodC52YWx1ZSAqIGNhbnZhc1BlcmNlbnRhZ2UudmFsdWU7XG4gICAgICAgICAgICBjYW52YXNIZWlnaHQudmFsdWUgPSB3aW5kb3dJbm5lcldpZHRoLnZhbHVlICogY2FudmFzUGVyY2VudGFnZS52YWx1ZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzY3JlZW5PcmllbnRhdGlvblR5cGUudmFsdWUgPT09IFwibGFuZHNjYXBlLXByaW1hcnlcIikge1xuICAgICAgICAgICAgY2FudmFzV2lkdGgudmFsdWUgPSB3aW5kb3dJbm5lcldpZHRoLnZhbHVlICogY2FudmFzUGVyY2VudGFnZS52YWx1ZTtcbiAgICAgICAgICAgIGNhbnZhc0hlaWdodC52YWx1ZSA9IHdpbmRvd0lubmVySGVpZ2h0LnZhbHVlICogY2FudmFzUGVyY2VudGFnZS52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhbnZhc1dpZHRoLnZhbHVlID0gd2luZG93SW5uZXJIZWlnaHQudmFsdWUgKiBjYW52YXNQZXJjZW50YWdlLnZhbHVlO1xuICAgICAgICAgICAgY2FudmFzSGVpZ2h0LnZhbHVlID0gd2luZG93SW5uZXJXaWR0aC52YWx1ZSAqIGNhbnZhc1BlcmNlbnRhZ2UudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlQ2FudmFzQ29udGVudCgpO1xufTtcblxuY29uc3Qgc2F2ZUNhbnZhc0NvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKHNhdmVkQ2FudmFzQ29udGVudC52YWx1ZSAmJiBjYW52YXMudmFsdWUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy52YWx1ZS5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcblxuICAgICAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXNXaWR0aC52YWx1ZSwgY2FudmFzSGVpZ2h0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcblxuICAgICAgICAgICAgICAgIGlmIChzY3JlZW5PcmllbnRhdGlvblR5cGUudmFsdWUgPT09IFwicG9ydHJhaXQtcHJpbWFyeVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGNhbnZhc1dpZHRoLnZhbHVlLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yb3RhdGUoTWF0aC5QSSAvIDIpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWcsIDAsIDAsIGNhbnZhc0hlaWdodC52YWx1ZSwgY2FudmFzV2lkdGgudmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIGNhbnZhc0hlaWdodC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucm90YXRlKC1NYXRoLlBJIC8gMik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltZywgMCwgMCwgY2FudmFzSGVpZ2h0LnZhbHVlLCBjYW52YXNXaWR0aC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpbWcuc3JjID0gc2F2ZWRDYW52YXNDb250ZW50LnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuY29uc3Qgc2lnbiA9ICgpID0+IHtcbiAgICBpZiAoIWNhbnZhcy52YWx1ZSkgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMudmFsdWUuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGlmICghY29udGV4dCkgcmV0dXJuO1xuICAgIGNvbnN0IGltYWdlRGF0YSA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhc1dpZHRoLnZhbHVlLCBjYW52YXNIZWlnaHQudmFsdWUpO1xuXG4gICAgaWYgKGlzQ2FudmFzRW1wdHkoaW1hZ2VEYXRhKSkge1xuICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgIHRpdGxlOiB0cmFucygndGhlX3NpZ25hdHVyZV9maWVsZF9pc19lbXB0eScsICdUaGUgc2lnbmF0dXJlIGZpZWxkIGlzIGVtcHR5IScsICdzaWduaW5nX21vZGFsJyksXG4gICAgICAgICAgICB0eXBlOiBcImRhbmdlclwiLFxuICAgICAgICAgICAgc2hvd0ljb246IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNQb3J0cmFpdFRvTGFuZHNjYXBlID1cbiAgICAgICAgc2lnbmF0dXJlT3JpZW50YXRpb25BdERyYXdpbmcudmFsdWUgPT09IFwicG9ydHJhaXQtcHJpbWFyeVwiICYmXG4gICAgICAgIHNjcmVlbk9yaWVudGF0aW9uVHlwZS52YWx1ZSA9PT0gXCJsYW5kc2NhcGUtcHJpbWFyeVwiO1xuXG4gICAgY29uc3QgaXNMYW5kc2NhcGVUb1BvcnRyYWl0ID1cbiAgICAgICAgc2lnbmF0dXJlT3JpZW50YXRpb25BdERyYXdpbmcudmFsdWUgPT09IFwibGFuZHNjYXBlLXByaW1hcnlcIiAmJlxuICAgICAgICBzY3JlZW5PcmllbnRhdGlvblR5cGUudmFsdWUgPT09IFwicG9ydHJhaXQtcHJpbWFyeVwiO1xuXG4gICAgY29uc3QgaXNTYW1lUG9ydHJhaXQgPVxuICAgICAgICBzaWduYXR1cmVPcmllbnRhdGlvbkF0RHJhd2luZy52YWx1ZSA9PT0gXCJwb3J0cmFpdC1wcmltYXJ5XCIgJiZcbiAgICAgICAgc2NyZWVuT3JpZW50YXRpb25UeXBlLnZhbHVlID09PSBcInBvcnRyYWl0LXByaW1hcnlcIjtcblxuICAgIGlmIChpc1BvcnRyYWl0VG9MYW5kc2NhcGUgfHwgaXNMYW5kc2NhcGVUb1BvcnRyYWl0IHx8IGlzU2FtZVBvcnRyYWl0KSB7XG4gICAgICAgIGNvbnN0IHJvdGF0ZUFuZ2xlID0gaXNQb3J0cmFpdFRvTGFuZHNjYXBlID8gOTAgOiAtOTA7XG5cbiAgICAgICAgY29uc3QgdGVtcENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgICAgIGNvbnN0IHRlbXBDb250ZXh0ID0gdGVtcENhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgIGlmICghdGVtcENhbnZhcyB8fCAhdGVtcENvbnRleHQpIHJldHVybjtcblxuICAgICAgICB0ZW1wQ2FudmFzLndpZHRoID0gKHJvdGF0ZUFuZ2xlID09PSA5MCkgPyBjYW52YXNXaWR0aC52YWx1ZSA6IGNhbnZhc0hlaWdodC52YWx1ZTtcbiAgICAgICAgdGVtcENhbnZhcy5oZWlnaHQgPSAocm90YXRlQW5nbGUgPT09IDkwKSA/IGNhbnZhc0hlaWdodC52YWx1ZSA6IGNhbnZhc1dpZHRoLnZhbHVlO1xuXG4gICAgICAgIHRlbXBDb250ZXh0LnRyYW5zbGF0ZSh0ZW1wQ2FudmFzLndpZHRoIC8gMiwgdGVtcENhbnZhcy5oZWlnaHQgLyAyKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChpc1NhbWVQb3J0cmFpdCkge1xuICAgICAgICAgICAgdGVtcENvbnRleHQuZHJhd0ltYWdlKGNhbnZhcy52YWx1ZSwgLWNhbnZhc1dpZHRoLnZhbHVlIC8gMiwgLWNhbnZhc0hlaWdodC52YWx1ZSAvIDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGVtcENvbnRleHQucm90YXRlKHJvdGF0ZUFuZ2xlICogTWF0aC5QSSAvIDE4MCk7XG4gICAgICAgICAgICB0ZW1wQ29udGV4dC5kcmF3SW1hZ2UoY2FudmFzLnZhbHVlLCAtY2FudmFzV2lkdGgudmFsdWUgLyAyLCAtY2FudmFzSGVpZ2h0LnZhbHVlIC8gMik7XG4gICAgICAgIH1cblxuICAgICAgICBjYW52YXMudmFsdWUud2lkdGggPSB0ZW1wQ2FudmFzLndpZHRoO1xuICAgICAgICBjYW52YXMudmFsdWUuaGVpZ2h0ID0gdGVtcENhbnZhcy5oZWlnaHQ7XG4gICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy52YWx1ZS53aWR0aCwgY2FudmFzLnZhbHVlLmhlaWdodCk7XG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKHRlbXBDYW52YXMsIDAsIDApO1xuICAgIH1cblxuICAgIGVtaXQoXCJzaWduXCIsIGNhbnZhcy52YWx1ZS50b0RhdGFVUkwoKSk7XG4gICAgdG9nZ2xlTW9kYWwoKTtcblxuICAgIHRvYXN0U3RvcmUuYWRkVG9hc3Qoe1xuICAgICAgICB0aXRsZTogdHJhbnMoJ3NpZ25lZF9zdWNjZXNzZnVsbHknLCAnU2lnbmVkIHN1Y2Nlc3NmdWxseSEnLCAnc2lnbmluZ19tb2RhbCcpLFxuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgc2hvd0ljb246IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXNXaWR0aC52YWx1ZSwgY2FudmFzSGVpZ2h0LnZhbHVlKTtcbiAgICBzaWduYXR1cmVPcmllbnRhdGlvbkF0RHJhd2luZy52YWx1ZSA9IG51bGw7XG59O1xuXG5jb25zdCBzZXRTY3JlZW5PcmllbnRhdGlvblR5cGUgPSAoKSA9PiB7XG4gICAgc2NyZWVuT3JpZW50YXRpb25UeXBlLnZhbHVlID0gd2luZG93LnNjcmVlbi5vcmllbnRhdGlvbi50eXBlXG5cbiAgICBpZiAoY2FudmFzLnZhbHVlKSB7XG4gICAgICAgIHNhdmVkQ2FudmFzQ29udGVudC52YWx1ZSA9IGNhbnZhcy52YWx1ZS50b0RhdGFVUkwoKTtcbiAgICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4ubW9kYWwge1xuICAgIEBhcHBseSBiZy1ncmF5O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB6LWluZGV4OiA1MDtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLm1vZGFsLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDE1cHg7XG4gICAgcGFkZGluZzogMTVweDtcbn1cblxuLmJ1dHRvbnMge1xuICAgIEBhcHBseSB0ZXh0LTR4bCB0ZXh0LXdoaXRlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEwcHg7XG59XG5cbmNhbnZhcyB7XG4gICAgQGFwcGx5IGJnLXdoaXRlO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrO1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJhY3RpdmVTdG9wUG9pbnRcIlxuICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTUgbWF4LXctOTZcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtMnhsIGZvbnQtYm9sZCBweC00IHNtOnRleHQtbGVmdFwiPlxuICAgICAgICAgICAge3sgdHJhbnMoJ2RlbGl2ZXJpbmcnLCAnRGVsaXZlcmluZycsICdzaGlwbWVudCcpIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gTWVnw6FsbMOzIGluZm9ybcOhY2nDs2suIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGJnLWdyYXktZGFya2VyIHRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtY2VudGVyIHB4LTRcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWFyc28taWNvbi1hZGRyZXNzIGZsb2F0LWxlZnQgdGV4dC0zeGxcIiAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxnIG1kOnRleHQteGwgcC00XCI+e3sgYWN0aXZlU3RvcFBvaW50LmRlbGl2ZXJ5QWRkcmVzcyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMnhsIHByLTFcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2hpcG1lbnRTdG9yZS5vcmRlcmVkU3RvcFBvaW50cy5sZW5ndGggLSBhY3RpdmVTdG9wUG9pbnQuc2VxdWVuY2VOdW1iZXIgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXJzby1pY29uLWNoZXZyb24tcmlnaHQgdGV4dC14bFwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQSBtZWfDoWxsw7Nob3ogdGFydG96w7Mgc3rDoWxsw610w7NsZXZlbGVrLiAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgdi1mb3I9XCIocGFja2luZ1NsaXBzLCBkZWxpdmVyeU5hbWUpIGluIGdyb3VwZWRQYWNraW5nU2xpcHNcIlxuICAgICAgICAgICAgOmtleT1cImRlbGl2ZXJ5TmFtZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgYmctd2hpdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJvcGVuZWRHcm91cCA9PT0gZGVsaXZlcnlOYW1lID8gJ2JvcmRlci1iLTMnIDogJydcIlxuICAgICAgICAgICAgICAgIEBjbGljaz1cInRvZ2dsZUdyb3VwKGRlbGl2ZXJ5TmFtZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGVsaXZlcnlOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiBtZDpmbGV4LXJvdyBtZDpnYXAtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJwYWNraW5nU2xpcHNbMF0uY3VzdG9tZXJDZWxsdWxhclBob25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cIid0ZWw6JyArIHBhY2tpbmdTbGlwc1swXS5jdXN0b21lckNlbGx1bGFyUGhvbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInRleHQtZ3JlZW4gdGV4dC0zeGwgbWFyc28taWNvbi1waG9uZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IHBhY2tpbmdTbGlwc1swXS5jdXN0b21lckNlbGx1bGFyUGhvbmUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNraW5nU2xpcHNbMF0uY3VzdG9tZXJQaG9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNraW5nU2xpcHNbMF0uY3VzdG9tZXJDZWxsdWxhclBob25lICE9IHBhY2tpbmdTbGlwc1swXS5jdXN0b21lclBob25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cIid0ZWw6JyArIHBhY2tpbmdTbGlwc1swXS5jdXN0b21lclBob25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ0ZXh0LWdyZWVuIHRleHQtM3hsIG1hcnNvLWljb24tcGhvbmVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBwYWNraW5nU2xpcHNbMF0uY3VzdG9tZXJQaG9uZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtMnhsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZEdyb3VwID09PSBkZWxpdmVyeU5hbWUgPyAnbWFyc28taWNvbi1jaGV2cm9uLXVwJyA6ICdtYXJzby1pY29uLWNoZXZyb24tZG93bidcbiAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFN6w6FsbMOtdMOzbGV2ZWxlayhBeiBha3R1w6FsaXMgY3NvcG9ydCBhbGFwasOhbi4pLS0+XG4gICAgICAgICAgICA8dHJhbnNpdGlvbiBuYW1lPVwiZmFkZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgdi1pZj1cIm9wZW5lZEdyb3VwID09PSBkZWxpdmVyeU5hbWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCJwYWNraW5nU2xpcCBpbiBwYWNraW5nU2xpcHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cInBhY2tpbmdTbGlwLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWItM1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGQgYmctZ3JheS1kYXJrIHRleHQtd2hpdGUgcHgtNCBweS0yIHRleHQtbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwYWNraW5nU2xpcC5pZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFN6w6FsbMOtdMOzbGV2ZWxla2hleiB0YXJ0b3rDsyB0w6l0ZWxlay4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbXMgZGl2aWRlLXkgZ3JpZCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCJpdGVtIGluIHBhY2tpbmdTbGlwLml0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0gcHktMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2sgZm9udC1ib2xkIHB4LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucHJvZHVjdE5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0yIGdhcC0yIHRleHQtY2VudGVyIHRleHQteGwgcHgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5xdWFudGl0eSB9fSB7eyBpdGVtLnNhbGVzVW5pdCB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiJ0lOX1dBUkVIT1VTRScgPT0gaXRlbS5zdG9yYWdlU3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzRGF0YS5jb2xvcihpdGVtLnN0b3JhZ2VTdGF0dXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC0yeGwgbXItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzRGF0YS5pY29uKGl0ZW0uc3RvcmFnZVN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgUGFja2luZ1NsaXBJdGVtU3RvcmFnZVN0YXR1c0RhdGEubGFiZWwoaXRlbS5zdG9yYWdlU3RhdHVzKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIidBVF9DVVNUT01FUicgPT0gaXRlbS5zdG9yYWdlU3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzRGF0YS5jb2xvcihpdGVtLnN0b3JhZ2VTdGF0dXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC0yeGwgbXItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzRGF0YS5pY29uKGl0ZW0uc3RvcmFnZVN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgUGFja2luZ1NsaXBJdGVtU3RvcmFnZVN0YXR1c0RhdGEubGFiZWwoaXRlbS5zdG9yYWdlU3RhdHVzKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiJ1dBSVRJTkcnID09IGl0ZW0uc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCInT05fVFJVQ0snID09IGl0ZW0uc3RvcmFnZVN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94IHRleHQtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImZvcm1WYXJpYWJsZXNbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dmFsdWU9XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJyZXNldFNpZ25hdHVyZXNBbmRGaWxlcygpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVja2VkIHctMTAgdGV4dC0yeGwgdGV4dC1ncmF5IG1hcnNvLWljb24tc3F1YXJlLW8gcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwidy0xMCBhYnNvbHV0ZSBsZWZ0LTAgcHgtMiB0ZXh0LTJ4bCB0ZXh0LWdyZWVuIG1hcnNvLWljb24tcmlnaHQgcHgtMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJub3QtY2hlY2tlZCB3LTEwIHB4LTIgdGV4dC0yeGwgdGV4dC1ncmF5LWRhcmsgbWFyc28taWNvbi1zcXVhcmUtb1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIidOT1RfQVZBSUxBQkxFJyA9PSBpdGVtLnN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIDpjbGFzcz1cIlBhY2tpbmdTbGlwSXRlbVN0YXR1c0RhdGEuY29sb3IoaXRlbS5zdGF0dXMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIDpjbGFzcz1cIlsndGV4dC0yeGwgbXItMicsIFBhY2tpbmdTbGlwSXRlbVN0YXR1c0RhdGEuaWNvbihpdGVtLnN0YXR1cyldXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBQYWNraW5nU2xpcEl0ZW1TdGF0dXNEYXRhLmxhYmVsKGl0ZW0uc3RhdHVzKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiJ1JFSkVDVEVEJyA9PSBpdGVtLnN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIDpjbGFzcz1cIlBhY2tpbmdTbGlwSXRlbVN0YXR1c0RhdGEuY29sb3IoaXRlbS5zdGF0dXMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIDpjbGFzcz1cIlsndGV4dC0yeGwgbXItMicsIFBhY2tpbmdTbGlwSXRlbVN0YXR1c0RhdGEuaWNvbihpdGVtLnN0YXR1cyldXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBQYWNraW5nU2xpcEl0ZW1TdGF0dXNEYXRhLmxhYmVsKGl0ZW0uc3RhdHVzKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC00IHB5LTIgdGV4dC1jZW50ZXIgYm9yZGVyLXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQteGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0UHJpY2UocGFja2luZ1NsaXAuY2FzaE9uRGVsaXZlcnlQcmljZSwgcGFja2luZ1NsaXAuY3VycmVuY3kpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNCBweS0yIGJnLWdyZWVuIHRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LXhsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdHJhbnMoJ3RvdGFsX2Ftb3VudCcsICdUb3RhbCBhbW91bnQnLCAnc2hpcG1lbnQnKSB9fXt7IGdldFRvdGFsQW1vdW50KCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdMOhdHVzeiB2w6FsYXN6dMOhcywgbWVnamVneXrDqXMsIG7DqXYgbWVnYWTDoXMsIGFsw6HDrXLDoXMsIGZvdMOzesOhcy9mw6FqbGZlbHTDtmx0w6lzLiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImdldE5vdGljZXMocGFja2luZ1NsaXBzKSAhPT0gJycgJiYgIWNoZWNrUGFja2luZ1NsaXBJdGVtc1N0YXR1cyhwYWNraW5nU2xpcHMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC00XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGQgcHItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zKCdub3RpY2UnLCAnTm90aWNlJywgJ3BhY2tpbmdfc2xpcCcpIH19OiA8L3NwYW4+e3sgZ2V0Tm90aWNlcyhwYWNraW5nU2xpcHMpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiY2hlY2tQYWNraW5nU2xpcEl0ZW1zU3RhdHVzKHBhY2tpbmdTbGlwcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncmlkIGdhcC0yIHB4LTQgcHQtNCBwYi0yXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZEl0ZW1TdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpvcHRpb25zPVwicGFja2luZ1NsaXBTdGF0dXNTZWxlY3RPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwidXBkYXRlUGFja2luZ1NsaXBEYXRhKHBhY2tpbmdTbGlwcywgJ3NlbGVjdGVkSXRlbVN0YXR1cycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEtaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwic2VsZWN0ZWRJdGVtU3RhdHVzICE9PSBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuREVMSVZFUkVEXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwibm90aWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZS1mb2N1cy1yaW5nPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVwidHJhbnMoJ25vdGljZScsICdOb3RpY2UnLCAncGFja2luZ19zbGlwJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyLXNoYWRvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJ1cGRhdGVQYWNraW5nU2xpcERhdGEocGFja2luZ1NsaXBzLCAnbm90aWNlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwic2VsZWN0ZWRJdGVtU3RhdHVzID09PSBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuREVMSVZFUkVEXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2hvcC1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwicmVjaXBpZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVwidHJhbnMoJ3JlY2lwaWVudCcsICdSZWNpcGllbnQnLCAncGFja2luZ19zbGlwJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cInVwZGF0ZVBhY2tpbmdTbGlwRGF0YShwYWNraW5nU2xpcHMsICdyZWNpcGllbnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImNoZWNrUGFja2luZ1NsaXBJdGVtc1N0YXR1cyhwYWNraW5nU2xpcHMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtNCBweS0yIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBLw6l0IGxlaGV0xZFzw6lnZXQgYml6dG9zw610w7MgZ29tYi4gU3rDoWxsw610w7NsZXbDqWwgYWzDocOtcsOhc2EsIHZhZ3kgZmVsdMO2bHTDqXNlLiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEdWFsQWN0aW9uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cInNlbGVjdGVkSXRlbVN0YXR1cyA9PT0gUGFja2luZ1NsaXBJdGVtU3RhdHVzLkRFTElWRVJFRFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpvbi1wcmltYXJ5LWFjdGlvbj1cIigpID0+IHByaW1hcnlBY3Rpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm9uLXNlY29uZGFyeS1hY3Rpb249XCIoKSA9PiBzZWNvbmRhcnlBY3Rpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlzLXByaW1hcnktZGlzYWJsZWQ9XCJpc1NpZ25CdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlzLXNlY29uZGFyeS1kaXNhYmxlZD1cImlzUGhvdG9CdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGw6FqbGZlbHTDtmx0w6lzLiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNdWx0aXBsZUZpbGVJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDprZXk9XCJpbnB1dEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZC1iYXNlNjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2hvdy1idXR0b249XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZpbGVzPVwiZmlsZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIHB4LTQgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzICFoLTE2ICF0ZXh0LWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhY2hlY2tQYWNraW5nU2xpcEl0ZW1zU3RhdHVzKHBhY2tpbmdTbGlwcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZUJ1dHRvbk1lc3NhZ2UgPyAnc2hvdy1wb3B1cC1tZXNzYWdlJzogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVCdXR0b25NZXNzYWdlU3RhdHVzID8gZG9uZUJ1dHRvbk1lc3NhZ2VTdGF0dXMgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkYXRhLXBvcHVwLW1lc3NhZ2U9XCJkb25lQnV0dG9uTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAyNHJlbTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInBhY2tpbmdTbGlwRG9uZShwYWNraW5nU2xpcHMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdHJhbnMoJ2RvbmUnLCAnRG9uZScsICdzaGlwbWVudCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RyYW5zaXRpb24+XG5cbiAgICAgICAgICAgIDwhLS0gQWzDocOtcsOhcyBtZWdhZMOhc2EuIC0tPlxuICAgICAgICAgICAgPHNpZ25pbmctbW9kYWxcbiAgICAgICAgICAgICAgICA6aXMtb3Blbj1cImlzU2lnbmluZ01vZGFsT3BlblwiXG4gICAgICAgICAgICAgICAgQHRvZ2dsZT1cInRvZ2dsZVNpZ25pbmdNb2RhbCgpXCJcbiAgICAgICAgICAgICAgICBAc2lnbj1cInJlY2VpdmVTaWduSW1hZ2VEYXRhXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVsOhbHTDoXMgYSBtZWfDoWxsw7NrIGvDtnp0LiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBnYXAtNCBiZy13aGl0ZSBwLTJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctMTIgaC0xMiBidG4gZm9udC1ib2xkIHAtNFwiXG4gICAgICAgICAgICAgICAgOnRpdGxlPVwidHJhbnMoJ2JhY2snLCAnQmFjaycsICdzaGlwbWVudCcpXCJcbiAgICAgICAgICAgICAgICBAY2xpY2s9XCJtb3ZlVG8oLS1hY3RpdmVTdGVwKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXJzby1pY29uLWNoZXZyb24tbGVmdFwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBmb250LWJvbGQgcC00XCJcbiAgICAgICAgICAgICAgICBAY2xpY2s9XCJtb3ZlVG8oc2hpcG1lbnRTdG9yZS5vcmRlcmVkU3RvcFBvaW50cy5sZW5ndGggKyAxKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICA8ZGl2Pnt7IHRyYW5zKCdhZGRyZXNzX2xpc3QnLCAnQWRkcmVzcyBsaXN0JywgJ3NoaXBtZW50JykgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMiBoLTEyIGJ0biBmb250LWJvbGQgcC00XCJcbiAgICAgICAgICAgICAgICA6dGl0bGU9XCJ0cmFucygnbmV4dCcsICdOZXh0JywgJ3NoaXBtZW50JylcIlxuICAgICAgICAgICAgICAgIEBjbGljaz1cIm1vdmVUbygrK2FjdGl2ZVN0ZXApXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hcnNvLWljb24tY2hldnJvbi1yaWdodFwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE1lZ8OhbGzDsyDDtnNzemVzw610xZEgbsOpemV0LiAtLT5cbiAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJmaW5hbFBhZ2VcIlxuICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNCB0ZXh0LTJ4bCBmb250LWJvbGQgdXBwZXJjYXNlXCI+XG4gICAgICAgICAgICB7eyB0cmFucygnaXRlbXNfbGlzdCcsICdJdGVtcyBsaXN0JywgJ3BhY2tpbmdfc2xpcCcpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgICAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJzdG9wUG9pbnQgaW4gc3RvcFBvaW50c1N1bW1hcnkoKVwiXG4gICAgICAgICAgICAgICAgOmtleT1cInN0b3BQb2ludC5pZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggYm9yZGVyLWwtOCB0ZXh0LWxnIGZvbnQtYm9sZCBiZy13aGl0ZSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIltzdG9wUG9pbnQuaXNEb25lID8gJ2JvcmRlci1ncmVlbic6ICdib3JkZXItcmVkJ11cIlxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJtb3ZlVG8oc3RvcFBvaW50LnNlcXVlbmNlTnVtYmVyKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0yIGJ0bi1saW5rIHRleHQtYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICN7eyBzdG9wUG9pbnQuc2VxdWVuY2VOdW1iZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgdy1mdWxsIGNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9wUG9pbnQuaWQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJzdG9wUG9pbnQud2FpdGluZ0l0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0yIHRleHQtYmFzZSB3LWZ1bGwgdGV4dC1yaWdodCBjb250ZW50LWNlbnRlciBmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZGVuIG1kOmlubGluZS1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWF9pdGVtc193YWl0aW5nX3RvX2JlX2RvbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne2l0ZW1Db3VudH0gaXRlbXMgd2FpdGluZyB0byBiZSBkb25lLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWNraW5nX3NsaXAnLCB7aXRlbUNvdW50OiBzdG9wUG9pbnQud2FpdGluZ0l0ZW1zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWFyc28taWNvbi1wZW5jaWwgdGV4dC0yeGwgdGV4dC1ibHVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFZpc3N6YSBhIHJha3TDoXJiYSByw6lzeiwgZXogbcOhciDDumogbsOpemV0cmUgdmlzeiwgYWhvbCBhIHJha3TDoXJvcyB0dWRqYSBrZXplbG5pIGEgc3rDoWxsw610w7NsZXZlbGVrZXQuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBwLTIgYmctd2hpdGVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctMTIgYnRuIGZvbnQtYm9sZCBwLTRcIlxuICAgICAgICAgICAgICAgIDp0aXRsZT1cInRyYW5zKCdiYWNrJywgJ0JhY2snLCAnc2hpcG1lbnQnKVwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwibW92ZVRvKGFjdGl2ZVN0ZXAtMSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWFyc28taWNvbi1jaGV2cm9uLWxlZnRcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblRvV2FyZWhvdXNlQnV0dG9uTWVzc2FnZSA/ICdzaG93LXBvcHVwLW1lc3NhZ2UnOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVG9XYXJlaG91c2VCdXR0b25NZXNzYWdlU3RhdHVzID8gcmV0dXJuVG9XYXJlaG91c2VCdXR0b25NZXNzYWdlU3RhdHVzIDogJydcbiAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICA6ZGF0YS1wb3B1cC1tZXNzYWdlPVwicmV0dXJuVG9XYXJlaG91c2VCdXR0b25NZXNzYWdlXCJcbiAgICAgICAgICAgICAgICBAY2xpY2s9XCJyZXR1cm5Ub1dhcmVob3VzZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdHJhbnMoJ3JldHVybl90b193YXJlaG91c2UnLCAnUmV0dXJuIHRvIHdhcmVob3VzZScsICdzaGlwbWVudCcpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAndnVlLXJvdXRlcic7XG5pbXBvcnQgeyB1c2VTaGlwbWVudFN0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmVzL3NoaXBtZW50L3NoaXBtZW50U3RvcmUnO1xuaW1wb3J0IHsgdXNlVG9hc3RTdG9yZSB9IGZyb20gJy4uLy4uL3N0b3Jlcy90b2FzdC90b2FzdFN0b3JlJztcbmltcG9ydCB7IHRyYW5zIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9pMThuXCI7XG5pbXBvcnQgeyBmb3JtYXRQcmljZSB9IGZyb20gXCIuLi8uLi9jb21tb24vdXRpbHMvc2hvcFwiO1xuaW1wb3J0IFNlcnZlckVycm9yIGZyb20gJy4uLy4uL2NvbW1vbi9lcnJvci9TZXJ2ZXJFcnJvcic7XG5pbXBvcnQgeyBTdG9wUG9pbnRJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvU3RvcFBvaW50cyc7XG5pbXBvcnQgeyBQYWNraW5nU2xpcEludGVyZmFjZSB9IGZyb20gJy4uLy4uL21vZGVscy9QYWNraW5nU2xpcCc7XG5pbXBvcnQgeyBQYWNraW5nU2xpcFBhcmFtc0ludGVyZmFjZSB9IGZyb20gJy4uLy4uL21vZGVscy9QYWNraW5nU2xpcFBhcmFtcyc7XG5pbXBvcnQgeyBTaGlwbWVudEludGVyZmFjZSB9IGZyb20gJy4uLy4uL21vZGVscy9TaGlwbWVudCc7XG5pbXBvcnQgeyBQYWNraW5nU2xpcEl0ZW1TdGF0dXMsIFBhY2tpbmdTbGlwSXRlbVN0YXR1c0RhdGEgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL1BhY2tpbmdTbGlwSXRlbVN0YXR1c1wiO1xuaW1wb3J0IHsgUGFja2luZ1NsaXBJdGVtU3RvcmFnZVN0YXR1c0RhdGEgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL1BhY2tpbmdTbGlwSXRlbVN0b3JhZ2VTdGF0dXNcIjtcbmltcG9ydCB7IFBhY2tpbmdTbGlwU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1BhY2tpbmdTbGlwU3RhdHVzJztcbmltcG9ydCB7IFNoaXBtZW50U3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NoaXBtZW50U3RhdHVzJztcbmltcG9ydCBPcHRpb24gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvRm9ybS9TZWxlY3QvT3B0aW9uXCI7XG5pbXBvcnQgU2VsZWN0SW5wdXQgZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvRm9ybS9TZWxlY3QvU2VsZWN0SW5wdXQudnVlXCI7XG5pbXBvcnQgVGV4dGFyZWFJbnB1dCBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9Gb3JtL1RleHRhcmVhSW5wdXQudnVlXCI7XG5pbXBvcnQgU2hvcElucHV0IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL0Zvcm0vU2hvcElucHV0LnZ1ZVwiO1xuaW1wb3J0IER1YWxBY3Rpb25CdXR0b24gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Gb3JtL0R1YWxBY3Rpb25CdXR0b24udnVlJztcbmltcG9ydCBTaWduaW5nTW9kYWwgZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvU2lnbmluZ01vZGFsLnZ1ZVwiO1xuaW1wb3J0IE11bHRpcGxlRmlsZUlucHV0IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvRm9ybS9JbnB1dC9NdWx0aXBsZUZpbGVJbnB1dC52dWUnO1xuXG5jb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcbmNvbnN0IHRvYXN0U3RvcmUgPSB1c2VUb2FzdFN0b3JlKCk7XG5jb25zdCBzaGlwbWVudFN0b3JlID0gdXNlU2hpcG1lbnRTdG9yZSgpO1xuY29uc3QgYWN0aXZlU3RvcFBvaW50ID0gcmVmPFN0b3BQb2ludEludGVyZmFjZSB8IG51bGwgfCB1bmRlZmluZWQ+KG51bGwpO1xuY29uc3QgYWN0aXZlU3RvcFBvaW50SXNSZWFkT25seSA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBvcGVuZWRHcm91cCA9IHJlZjxzdHJpbmc+KCcnKTtcbmNvbnN0IGFjdGl2ZVN0ZXAgPSByZWY8bnVtYmVyPigxKTtcbmNvbnN0IGZpbmFsUGFnZSA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBzZWxlY3RlZEl0ZW1TdGF0dXMgPSByZWY8UGFja2luZ1NsaXBJdGVtU3RhdHVzPihQYWNraW5nU2xpcEl0ZW1TdGF0dXMuREVMSVZFUkVEKTtcbmNvbnN0IG5vdGljZSA9IHJlZjxzdHJpbmc+KCcnKTtcbmNvbnN0IHJlY2lwaWVudCA9IHJlZjxzdHJpbmc+KCcnKTtcbmNvbnN0IGZpbGVzID0gcmVmPEZpbGVbXT4oW10pO1xuY29uc3Qgc2lnbmF0dXJlcyA9IHJlZjxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5jb25zdCBpc1NpZ25pbmdNb2RhbE9wZW4gPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuY29uc3QgaXNTaWduQnV0dG9uRGlzYWJsZWQgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuY29uc3QgaXNQaG90b0J1dHRvbkRpc2FibGVkID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbmNvbnN0IGlucHV0S2V5ID0gcmVmPG51bWJlcj4oMSk7XG5jb25zdCBkb25lQnV0dG9uTWVzc2FnZSA9IHJlZjxzdHJpbmc+KCcnKTtcbmNvbnN0IGRvbmVCdXR0b25NZXNzYWdlU3RhdHVzID0gcmVmPHN0cmluZz4oJycpO1xuY29uc3QgcmV0dXJuVG9XYXJlaG91c2VCdXR0b25NZXNzYWdlID0gcmVmPHN0cmluZz4oJycpO1xuY29uc3QgcmV0dXJuVG9XYXJlaG91c2VCdXR0b25NZXNzYWdlU3RhdHVzID0gcmVmPHN0cmluZz4oJycpO1xuY29uc3QgZm9ybVZhcmlhYmxlcyA9IHJlZjxSZWNvcmQ8c3RyaW5nLCB7XG4gICAgY2hlY2tlZEl0ZW1zOiBudW1iZXJbXSxcbiAgICBzZWxlY3RlZEl0ZW1TdGF0dXM6IFBhY2tpbmdTbGlwSXRlbVN0YXR1cyxcbiAgICByZWNpcGllbnQ6IHN0cmluZyxcbiAgICBub3RpY2U6IHN0cmluZyxcbiAgICBmaWxlczogYW55W10sXG4gICAgc2lnbjogYW55XG59Pj4oe30pO1xuXG5jb25zdCBwYWNraW5nU2xpcFN0YXR1c1NlbGVjdE9wdGlvbnM6IE9wdGlvbltdID0gW1xuICAgIHtcbiAgICAgICAgdmFsdWU6IFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5SRUpFQ1RFRCxcbiAgICAgICAgdGV4dDogdHJhbnMoXG4gICAgICAgICAgICAncGFja2luZ19zbGlwX2l0ZW1fc3RhdHVzXycgKyBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuUkVKRUNURUQudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgIFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5SRUpFQ1RFRCxcbiAgICAgICAgICAgICdwYWNraW5nX3NsaXAnXG4gICAgICAgICksXG4gICAgICAgIHNlbGVjdGVkOiBmYWxzZVxuICAgIH0sXG4gICAge1xuICAgICAgICB2YWx1ZTogUGFja2luZ1NsaXBJdGVtU3RhdHVzLk5PVF9BVkFJTEFCTEUsXG4gICAgICAgIHRleHQ6IHRyYW5zKFxuICAgICAgICAgICAgJ3BhY2tpbmdfc2xpcF9pdGVtX3N0YXR1c18nICsgUGFja2luZ1NsaXBJdGVtU3RhdHVzLk5PVF9BVkFJTEFCTEUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgIFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5OT1RfQVZBSUxBQkxFLFxuICAgICAgICAgICAgJ3BhY2tpbmdfc2xpcCdcbiAgICAgICAgKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHZhbHVlOiBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuREVMSVZFUkVELFxuICAgICAgICB0ZXh0OiB0cmFucyhcbiAgICAgICAgICAgICdwYWNraW5nX3NsaXBfaXRlbV9zdGF0dXNfJyArIFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5ERUxJVkVSRUQudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgIFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5ERUxJVkVSRUQsXG4gICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICApLFxuICAgICAgICBzZWxlY3RlZDogdHJ1ZVxuICAgIH1cbl07XG5cbi8vIFN6w6FsbMOtdMOzbGV2ZWxlayBjc29wb3J0b3PDrXTDoXNhIGEgdmV2xZEgbmV2ZSBzemVyaW50LlxuY29uc3QgZ3JvdXBlZFBhY2tpbmdTbGlwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIWFjdGl2ZVN0b3BQb2ludC52YWx1ZSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIGFjdGl2ZVN0b3BQb2ludC52YWx1ZS5wYWNraW5nU2xpcHMucmVkdWNlKChncm91cHM6IFJlY29yZDxzdHJpbmcsIFBhY2tpbmdTbGlwSW50ZXJmYWNlW10+LCBwYWNraW5nU2xpcCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHBhY2tpbmdTbGlwLmRlbGl2ZXJ5TmFtZTtcblxuICAgICAgICBpZiAoIWdyb3Vwc1tncm91cF0pIGdyb3Vwc1tncm91cF0gPSBbXTtcblxuICAgICAgICBncm91cHNbZ3JvdXBdLnB1c2gocGFja2luZ1NsaXApO1xuXG4gICAgICAgIHJldHVybiBncm91cHM7XG4gICAgfSwge30pO1xufSk7XG5cbi8vIEFrdHXDoWxpcyBzesOhbGzDrXTDs2xldmVsZWsgYmV0w7ZsdMOpc2UuXG5jb25zdCBhY3RpdmVQYWNraW5nU2xpcHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFhY3RpdmVTdG9wUG9pbnQudmFsdWUpIHJldHVybjtcbiAgICByZXR1cm4gYWN0aXZlU3RvcFBvaW50LnZhbHVlLnBhY2tpbmdTbGlwcy5maWx0ZXIocGFja2luZ1NsaXAgPT4gcGFja2luZ1NsaXAuZGVsaXZlcnlOYW1lID09PSBvcGVuZWRHcm91cC52YWx1ZSk7XG59KTtcblxub25Nb3VudGVkKGFzeW5jICgpID0+IHtcbiAgICAvLyBNZWfDoWxsw7NrIGxla8OpcsOpc2UuXG4gICAgYXdhaXQgZ2V0U3RvcFBvaW50cygpO1xuXG4gICAgLy8gTWVnw6FsbMOzIGJlw6FsbMOtdMOhc2EuXG4gICAgc2hvd1N0b3BQb2ludCh0cnVlKTtcbn0pO1xuXG4vLyBTesOhbGzDrXTDs2xldsOpbCBhZGF0b2sgw6lzIHbDoWx0b3rDs2sgdmlzc3phw6FsbMOtdMOhc2Egw6lzIMO6anJhIGluaWNpYWxpesOhbMOhc2EuXG5jb25zdCByZWxvYWRGb3JtVmFyaWFibGVzID0gKGluaXQgPSBmYWxzZSkgPT4ge1xuICAgIHNlbGVjdGVkSXRlbVN0YXR1cy52YWx1ZSA9IFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5ERUxJVkVSRUQ7XG4gICAgcmVjaXBpZW50LnZhbHVlID0gJyc7XG4gICAgbm90aWNlLnZhbHVlID0gJyc7XG5cbiAgICBpZiAoYWN0aXZlU3RvcFBvaW50LnZhbHVlPy5wYWNraW5nU2xpcHMpIHtcbiAgICAgICAgYWN0aXZlU3RvcFBvaW50LnZhbHVlLnBhY2tpbmdTbGlwcy5mb3JFYWNoKChwYWNraW5nU2xpcCkgPT4ge1xuICAgICAgICAgICAgLy8gSW5pY2lhbGl6w6FsanVrIGEgZm9ybVZhcmlhYmxlcyBvYmpla3R1bW90LCBoYSBtw6lnIG5lbSBsw6l0ZXppay5cbiAgICAgICAgICAgIGlmICghZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0pIHtcbiAgICAgICAgICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZEl0ZW1zOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtU3RhdHVzOiBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuV0FJVElORyxcbiAgICAgICAgICAgICAgICAgICAgcmVjaXBpZW50OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgbm90aWNlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzaWduOiB7fVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYWNraW5nU2xpcCAmJiBQYWNraW5nU2xpcFN0YXR1cy5ERUxJVkVSSU5HID09PSBwYWNraW5nU2xpcC5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5pdCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5yZWNpcGllbnQgPSBwYWNraW5nU2xpcC5yZWNpcGllbnQ7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLm5vdGljZSA9IHBhY2tpbmdTbGlwLm5vdGljZTtcbiAgICAgICAgICAgICAgICAgICAgZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zID0gcGFja2luZ1NsaXAuaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuV0FJVElORyA9PT0gaXRlbS5zdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4gaXRlbS5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGlkKTogaWQgaXMgbnVtYmVyID0+IGlkICE9PSB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5zZWxlY3RlZEl0ZW1TdGF0dXMgPSBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuREVMSVZFUkVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuLy8gTWVnw6FsbMOzayBsZWvDqXLDqXNlIGEgc2hpcG1lbnQgaWQgYWxhcGrDoW4uXG5jb25zdCBnZXRTdG9wUG9pbnRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghc2hpcG1lbnRTdG9yZS5zaGlwbWVudC5pZCkgcmV0dXJuO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2hpcG1lbnRTdG9yZS5nZXRTdG9wUG9pbnRzQnlTaGlwbWVudChyb3V0ZXIsIHsgc2hpcG1lbnRJZDogc2hpcG1lbnRTdG9yZS5zaGlwbWVudC5pZCB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IChlcnJvciBhcyBTZXJ2ZXJFcnJvcikudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuLy8gQXogYWt0dcOhbGlzIHN6w6FsbMOtdMOzbGV2w6lsIGNzb3BvcnQgbGVueWl0w6Fzw6FyYSBzem9sZ8OhbC5cbmNvbnN0IHRvZ2dsZUdyb3VwID0gKGdyb3VwTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgb3BlbmVkR3JvdXAudmFsdWUgPSBvcGVuZWRHcm91cC52YWx1ZSA9PT0gZ3JvdXBOYW1lID8gJycgOiBncm91cE5hbWU7XG4gICAgcmVsb2FkRm9ybVZhcmlhYmxlcyh0cnVlKTtcbiAgICByZXNldFNpZ25hdHVyZXNBbmRGaWxlcygpO1xufTtcblxuLy8gU3rDoWxsw610w7NsZXZlbGVrZW4gbMOpdsWRIMO2c3N6ZWdlayBlZ3nDvHR0ZXMgbWVnamVsZW7DrXTDqXPDqXJlIHN6b2xnw6FsLlxuY29uc3QgZ2V0VG90YWxBbW91bnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhY3RpdmVTdG9wUG9pbnQudmFsdWUgfHwgIW9wZW5lZEdyb3VwLnZhbHVlKSByZXR1cm47XG5cbiAgICBsZXQgdG90YWxBbW91bnRJbmZvID0ge1xuICAgICAgICBjb3VudDogMCxcbiAgICAgICAgdG90YWxBbW91bnQ6IDBcbiAgICB9XG5cbiAgICBhY3RpdmVTdG9wUG9pbnQudmFsdWUucGFja2luZ1NsaXBzLmZvckVhY2gocGFja2luZ1NsaXAgPT4ge1xuICAgICAgICBpZiAocGFja2luZ1NsaXAuZGVsaXZlcnlOYW1lID09PSBvcGVuZWRHcm91cC52YWx1ZSkge1xuICAgICAgICAgICAgdG90YWxBbW91bnRJbmZvLnRvdGFsQW1vdW50ICs9IHBhY2tpbmdTbGlwLmNhc2hPbkRlbGl2ZXJ5UHJpY2U7XG4gICAgICAgICAgICB0b3RhbEFtb3VudEluZm8uY291bnQrKztcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGAoJHt0b3RhbEFtb3VudEluZm8uY291bnR9KTpcbiAgICAgICAgJHtmb3JtYXRQcmljZSh0b3RhbEFtb3VudEluZm8udG90YWxBbW91bnQsIGFjdGl2ZVN0b3BQb2ludC52YWx1ZS5wYWNraW5nU2xpcHNbMF0uY3VycmVuY3kpfWA7XG59O1xuXG4vLyBTesOhbGzDrXTDs2xldsOpbCBhZGF0b2sgZnJpc3PDrXTDqXNlIG1lesWRIGFsYXBqw6FuLlxuY29uc3QgdXBkYXRlUGFja2luZ1NsaXBEYXRhID0gKGZpZWxkS2V5OiAnc2VsZWN0ZWRJdGVtU3RhdHVzJyB8ICdub3RpY2UnIHwgJ3JlY2lwaWVudCcpID0+IHtcbiAgICBpZiAoIWFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZSB8fCAhZmllbGRLZXkpIHJldHVybjtcblxuICAgIGFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZS5mb3JFYWNoKChwYWNraW5nU2xpcDogUGFja2luZ1NsaXBJbnRlcmZhY2UpID0+IHtcbiAgICAgICAgaWYgKCFmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXSB8fCAhZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtcy5mb3JFYWNoKGNoZWNrZWRJdGVtSWQgPT4ge1xuICAgICAgICAgICAgcGFja2luZ1NsaXAuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gY2hlY2tlZEl0ZW1JZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRLZXkgPT09ICdzZWxlY3RlZEl0ZW1TdGF0dXMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5zZWxlY3RlZEl0ZW1TdGF0dXMgPSBzZWxlY3RlZEl0ZW1TdGF0dXMudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRLZXkgPT09ICdub3RpY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5ub3RpY2UgPSBub3RpY2UudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRLZXkgPT09ICdyZWNpcGllbnQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5yZWNpcGllbnQgPSByZWNpcGllbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG4vLyBWw6FsdMOhcyBheiBvbGRhbGFrIGvDtnp0LlxuY29uc3QgbW92ZVRvID0gKHBhZ2U6IG51bWJlcikgPT4ge1xuICAgIC8vICsxIG1lcnQgc3rDvGtzZWcgdmFuIGVneSBleHRyYSBvbGRhbHJhIGEgdsOpZ8Opbi5cbiAgICBsZXQgbWF4UGFnZSA9IHNoaXBtZW50U3RvcmUuc3RvcFBvaW50cy5sZW5ndGggKyAxO1xuICAgIGZpbmFsUGFnZS52YWx1ZSA9IGZhbHNlO1xuICAgIGlmICgxID4gcGFnZSkge1xuICAgICAgICBhY3RpdmVTdGVwLnZhbHVlID0gMTtcbiAgICAgICAgc2hvd1N0b3BQb2ludCgpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1heFBhZ2UgPD0gcGFnZSkge1xuICAgICAgICBhY3RpdmVTdGVwLnZhbHVlID0gbWF4UGFnZTtcbiAgICAgICAgZmluYWxQYWdlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgc2hvd1N0b3BQb2ludCgpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYWN0aXZlU3RlcC52YWx1ZSA9IHBhZ2U7XG4gICAgc2hvd1N0b3BQb2ludCgpO1xuICAgIHJlc2V0U2lnbmF0dXJlc0FuZEZpbGVzKCk7XG4gICAgZG9uZUJ1dHRvbk1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICBkb25lQnV0dG9uTWVzc2FnZVN0YXR1cy52YWx1ZSA9ICcnO1xufTtcblxuLy8gQXogYWt0dcOhbGlzIG1lZ8OhbGzDsyBtZWdqZWxlbsOtdMOpc8OpdCBiaXp0b3PDrXRqYS5cbmNvbnN0IHNob3dTdG9wUG9pbnQgPSBhc3luYyAoYXV0b1NlbGVjdDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG4gICAgLy8gTGFwb3rDoXMgdXTDoW4gYXogYWt0dcOhbGlzIHN0b3Bwb2ludCBiZXTDtmx0w6lzZS5cbiAgICBpZiAoYXV0b1NlbGVjdCkge1xuICAgICAgICAvLyBIYSBjc2FrIHNpbcOhbiDDumpyYXTDtmx0asO8ayBheiBvbGRhbHQgYXJyYSBhIHBhY2tpbmcgc2xpcHJlIHVncnVuayBhbWkgw6lwcCBrw7Z2ZXRrZXppay5cbiAgICAgICAgLy8gVGVow6F0IG3Ds2Rvc8OtdGFudW5rIGtlbGwgYXogYWN0aXZlU3RlcCB2w6FsdG96w7N0LlxuICAgICAgICBjb25zdCBuZXh0U3RvcFBvaW50ID0gc2hpcG1lbnRTdG9yZS5vcmRlcmVkU3RvcFBvaW50cy5maW5kKHN0b3BQb2ludCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcFBvaW50LnBhY2tpbmdTbGlwcy5zb21lKHBhY2tpbmdTbGlwID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFja2luZ1NsaXAuaXRlbXMuc29tZShpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5XQUlUSU5HID09PSBpdGVtLnN0YXR1cztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobmV4dFN0b3BQb2ludCkge1xuICAgICAgICAgICAgYWN0aXZlU3RlcC52YWx1ZSA9IG5leHRTdG9wUG9pbnQuc2VxdWVuY2VOdW1iZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaW5hbFBhZ2UudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYWN0aXZlU3RlcC52YWx1ZSA9IHNoaXBtZW50U3RvcmUuc3RvcFBvaW50cy5sZW5ndGggKyAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWVnw6FsbMOzIGJlw6FsbMOtdMOhc2EgYSBzb3JyZW5kIGFsYXBqw6FuLlxuICAgIGFjdGl2ZVN0b3BQb2ludC52YWx1ZSA9IHNoaXBtZW50U3RvcmUuZ2V0U3RvcFBvaW50QnlPcmRlck51bWJlcihhY3RpdmVTdGVwLnZhbHVlKTtcblxuICAgIC8vIEF6IGVsc8WRIHN6w6FsbMOtdMOzbGV2w6lsIGNzb3BvcnQgbGVueWl0w6FzYS5cbiAgICBjb25zdCBncm91cEtleXMgPSBPYmplY3Qua2V5cyhncm91cGVkUGFja2luZ1NsaXBzLnZhbHVlIHx8IHt9KTtcbiAgICBpZiAoZ3JvdXBLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3BlbmVkR3JvdXAudmFsdWUgPSBncm91cEtleXNbMF07XG4gICAgfVxuXG4gICAgaWYgKGFjdGl2ZVN0b3BQb2ludC52YWx1ZSkge1xuICAgICAgICBhY3RpdmVTdG9wUG9pbnRJc1JlYWRPbmx5LnZhbHVlID0gc3RvcFBvaW50UGFja2luZ1NsaXBIYXNXYWl0aW5nSXRlbXMoYWN0aXZlU3RvcFBvaW50LnZhbHVlKTtcbiAgICB9XG5cbiAgICByZWxvYWRGb3JtVmFyaWFibGVzKHRydWUpO1xufTtcblxuLy8gQWRvdHQgbWVnw6FsbMOzaG96IHRhcnRvesOzIHN6w6FsbMOtdMOzbGV2w6lsIHTDqXRlbGVrIGVsbGVuxZFyesOpc2U6IHZhbi1lIGvDtnp0w7xrIHbDoXJha296w7Mgw6FsbGFwb3RiYW4gbMOpdsWRIHTDqXRlbC5cbmNvbnN0IHN0b3BQb2ludFBhY2tpbmdTbGlwSGFzV2FpdGluZ0l0ZW1zID0gKHN0b3BQb2ludDogU3RvcFBvaW50SW50ZXJmYWNlKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIHN0b3BQb2ludC5wYWNraW5nU2xpcHMuc29tZShwYWNraW5nU2xpcCA9PiB7XG4gICAgICAgIHJldHVybiBwYWNraW5nU2xpcC5pdGVtcy5zb21lKGl0ZW0gPT4gaXRlbS5zdGF0dXMgPT09IFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5XQUlUSU5HKTtcbiAgICB9KTtcbn07XG5cbi8vIEFsw6HDrXLDoXMgbW9kYWxob3ogdGFydG96w7MgZsO8Z2d2w6lueWVrLlxuY29uc3QgcHJpbWFyeUFjdGlvbiA9ICgpID0+IHtcbiAgICB0b2dnbGVTaWduaW5nTW9kYWwoKTtcbn07XG5cbmNvbnN0IHNlY29uZGFyeUFjdGlvbiA9ICgpID0+IHtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxJbnB1dEVsZW1lbnQ+KCcjbXVsdGlwbGUtZmlsZS1pbnB1dCBpbnB1dFt0eXBlPVwiZmlsZVwiXScpPy5jbGljaygpO1xufTtcblxuY29uc3QgdG9nZ2xlU2lnbmluZ01vZGFsID0gKCkgPT4ge1xuICAgIGlzU2lnbmluZ01vZGFsT3Blbi52YWx1ZSA9ICFpc1NpZ25pbmdNb2RhbE9wZW4udmFsdWU7XG59XG5cbmNvbnN0IHJlY2VpdmVTaWduSW1hZ2VEYXRhID0gKGltYWdlRGF0YTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFpbWFnZURhdGEgfHwgIWFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZSkgcmV0dXJuO1xuXG4gICAgYWN0aXZlUGFja2luZ1NsaXBzLnZhbHVlLmZvckVhY2goKHBhY2tpbmdTbGlwOiBQYWNraW5nU2xpcEludGVyZmFjZSkgPT4ge1xuICAgICAgICBpZiAoZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaGVja2VkSXRlbUlkIG9mIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtcykge1xuICAgICAgICAgICAgICAgIGlmIChwYWNraW5nU2xpcC5pdGVtcy5zb21lKGl0ZW0gPT4gaXRlbS5pZCA9PT0gY2hlY2tlZEl0ZW1JZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzaWduYXR1cmVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZU5vdyA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZU5hbWUgPSBgJHtwYWNraW5nU2xpcC5pZH0tc2lnbi5wbmdgO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VUeXBlID0gaW1hZ2VEYXRhLnN1YnN0cmluZyhpbWFnZURhdGEuaW5kZXhPZignOicpICsgMSwgaW1hZ2VEYXRhLmluZGV4T2YoJzsnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZU9iamVjdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQ6IGltYWdlRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IGRhdGVOb3csXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaW1hZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IGltYWdlRGF0YS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaW1hZ2VUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0gPSBpbWFnZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbi8vIEEgbWVnw6FsbMOzbiBsw6l2xZEgc3rDoWxsw610w7NsZXZlbGVrZXQga2V6ZWxqw7xrLlxuY29uc3QgcGFja2luZ1NsaXBEb25lID0gYXN5bmMgKHBhY2tpbmdTbGlwczogUGFja2luZ1NsaXBJbnRlcmZhY2VbXSkgPT4ge1xuICAgIGlmICghcGFja2luZ1NsaXBzKSByZXR1cm47XG5cbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgbGV0IHBhY2tpbmdTbGlwUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBQYWNraW5nU2xpcFBhcmFtc0ludGVyZmFjZT4gPSB7fTtcbiAgICBkb25lQnV0dG9uTWVzc2FnZS52YWx1ZSA9ICcnO1xuICAgIGRvbmVCdXR0b25NZXNzYWdlU3RhdHVzLnZhbHVlID0gJyc7XG5cbiAgICAvLyBNZWduw6l6esO8aywgaG9neSB2YW4tZSBvbHlhbiBzesOhbGzDrXTDs2xldsOpbCBhbWlyZSB0ZWxqZXPDvGwgbWluZGVuIGVsdsOhcnQgZmVsdMOpdGVsLlxuICAgIC8vIEhhIGlnZW4sIGFra29yIHRvdsOhYmIgbMOpcMO8bmsgw6lzIGJldMO2bHRqw7xrIGEgc3rDoWxsw610w7NsZXZlbGVrIGFkYXRhaXQuXG4gICAgY29uc3QgaXNTdWNjZXNzID0gcGFja2luZ1NsaXBzLnNvbWUocGFja2luZ1NsaXAgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtU3RhdHVzLnZhbHVlID09PSBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuREVMSVZFUkVEKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIWZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtcy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAhcmVjaXBpZW50LnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgKCFPYmplY3Qua2V5cyhmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5zaWduKS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAhZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uZmlsZXMubGVuZ3RoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5jaGVja2VkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgLy8gSGEgbmVtLCBha2tvciBhIG1lZ2ZlbGVsxZEgc3rDoWxsw610w7NsZXbDqWxuw6lsIGhpYmHDvHplbmV0ZWtldCBkb2J1bmsgYW1pa29yIHZhbGFtZWx5aWsgYWRhdCBoacOhbnl6aWsuXG4gICAgaWYgKCFpc1N1Y2Nlc3MpIHtcbiAgICAgICAgbGV0IGZpbHRlcmVkUGFja2luZ1NsaXBzID0gcGFja2luZ1NsaXBzLmZpbHRlcihcbiAgICAgICAgICAgIHBhY2tpbmdTbGlwID0+IGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtcy5sZW5ndGggPiAwXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGZpbHRlcmVkUGFja2luZ1NsaXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZmlsdGVyZWRQYWNraW5nU2xpcHMgPSBwYWNraW5nU2xpcHM7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHBhY2tpbmdTbGlwIG9mIGZpbHRlcmVkUGFja2luZ1NsaXBzKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtU3RhdHVzLnZhbHVlID09PSBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuREVMSVZFUkVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5jaGVja2VkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRyYW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGVhc2Vfc2VsZWN0X2F0X2xlYXN0X29uZV9pdGVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgaXRlbSEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWNraW5nX3NsaXAnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ21hcnNvLWljb24tbm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghcmVjaXBpZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRyYW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGVhc2VfZW50ZXJfdGhlX3JlY2llbnRfbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnRlciB0aGUgcmVjaXBpZW50IG5hbWUhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnNpZ24pLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAhZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uZmlsZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRyYW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGVhc2Vfc2VsZWN0X2F0X2xlYXN0X29uZV9maWxlX2Zvcl91cGxvYWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBmaWxlIGZvciB1cGxvYWQhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgdG9hc3RTdG9yZS5hZGRUb2FzdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB0cmFucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxlYXNlX3NlbGVjdF9hdF9sZWFzdF9vbmVfaXRlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIGl0ZW0hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIGRvbmVCdXR0b25NZXNzYWdlU3RhdHVzLnZhbHVlID0gJ2Vycm9yJztcbiAgICAgICAgICAgICAgICBkb25lQnV0dG9uTWVzc2FnZS52YWx1ZSArPSB0cmFucyhcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yX29uX2Zvcm1fc2VlX3RoZV9hbGVydF9tZXNzYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgJ0Vycm9yIG9uIGZvcm0sIHNlZSB0aGUgYWxlcnQgbWVzc2FnZSEnLFxuICAgICAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZUJ1dHRvbk1lc3NhZ2VTdGF0dXMudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgZG9uZUJ1dHRvbk1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB9LCAzMDAwKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkYXRvayBiZXTDtmx0w6lzZS5cbiAgICBmb3IgKGNvbnN0IHBhY2tpbmdTbGlwIG9mIHBhY2tpbmdTbGlwcykge1xuICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5jaGVja2VkSXRlbXMuZm9yRWFjaChjaGVja2VkSXRlbUlkID0+IHtcbiAgICAgICAgICAgIHBhY2tpbmdTbGlwLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IGNoZWNrZWRJdGVtSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFja2luZ1NsaXBQYXJhbXNbcGFja2luZ1NsaXAuaWRdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXM6IGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbjogZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uc2lnbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwaWVudDogZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0ucmVjaXBpZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWNlOiBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5ub3RpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5zZWxlY3RlZEl0ZW1TdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc2hpcG1lbnRTdG9yZS5hcGlQYWNraW5nU2xpcERlbGl2ZXJ5RG9uZShyb3V0ZXIsIHBhY2tpbmdTbGlwUGFyYW1zKTtcbiAgICAgICAgYXdhaXQgZ2V0U3RvcFBvaW50cygpO1xuICAgICAgICByZXNldFNpZ25hdHVyZXNBbmRGaWxlcygpO1xuXG4gICAgICAgIC8vIEVsbGVuxZFyaXp6w7xrLCBob2d5IHZhbi1lIG3DqWcgb2x5YW4gdMOpdGVsLCBhbWkgV0FJVElORyDDoWxsYXBvdGJhbiB2YW4uXG4gICAgICAgIGNvbnN0IHNoaXBtZW50RG9uZSA9ICFzaGlwbWVudFN0b3JlLnN0b3BQb2ludHMuc29tZShzdG9wUG9pbnQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrUGFja2luZ1NsaXBJdGVtc1N0YXR1cyhzdG9wUG9pbnQucGFja2luZ1NsaXBzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSGEgbmluY3MgbcOhciBXQUlUSU5HIHN0w6F0dXN6w7ogdMOpdGVsIMOpcyBheiDDtnNzemVzIHTDqXRlbCBERUxJVkVSRUQgc3TDoXR1c3piYW4gdmFuLCBha2tvciBsZXrDoXJqdWsgYSBzesOhbGzDrXTDoXN0LlxuICAgICAgICAvLyBIYSBtw6lnIG5pbmNzIERFTElWRVJFRCBzdMOhdHVzemJhbiBheiDDtnNzemVzIHTDqXRlbCwgYWtrb3IgcGVkaWcgYSByYWt0w6Fyb3MgbsOpemV0YmUga2Vyw7xsw7xuay5cbiAgICAgICAgaWYgKHNoaXBtZW50RG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuVG9XYXJlaG91c2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNob3dTdG9wUG9pbnQodHJ1ZSk7XG5cbiAgICAgICAgLy8gS8O2dmV0a2V6xZEgc3rDoWxsw610w7NsZXbDqWwgY3NvcG9ydCBsZW55aXTDoXNhLlxuICAgICAgICBpZiAoZ3JvdXBlZFBhY2tpbmdTbGlwcy52YWx1ZSAmJiBPYmplY3Qua2V5cyhncm91cGVkUGFja2luZ1NsaXBzLnZhbHVlKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwTmFtZSBvZiBPYmplY3Qua2V5cyhncm91cGVkUGFja2luZ1NsaXBzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGVja1BhY2tpbmdTbGlwSXRlbXNTdGF0dXMoZ3JvdXBlZFBhY2tpbmdTbGlwcy52YWx1ZVtncm91cE5hbWVdKSAmJlxuICAgICAgICAgICAgICAgICAgICBncm91cE5hbWUgPT09IG9wZW5lZEdyb3VwLnZhbHVlXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2tQYWNraW5nU2xpcEl0ZW1zU3RhdHVzKGdyb3VwZWRQYWNraW5nU2xpcHMudmFsdWVbZ3JvdXBOYW1lXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlR3JvdXAoZ3JvdXBOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdG9hc3RTdG9yZS5hZGRUb2FzdCh7XG4gICAgICAgICAgICBtZXNzYWdlOiB0cmFucyhcbiAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwX2lzX21vZGlmaWVkJyxcbiAgICAgICAgICAgICAgICAnUGFja2luZyBzbGlwIGlzIG1vZGlmaWVkLicsXG4gICAgICAgICAgICAgICAgJ3BhY2tpbmdfc2xpcCdcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpY29uOiAnbWFyc28taWNvbi1ub3RpZmljYXRpb24nLFxuICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnXG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRvYXN0U3RvcmUuYWRkVG9hc3Qoe1xuICAgICAgICAgICAgbWVzc2FnZTogdHJhbnMoXG4gICAgICAgICAgICAgICAgJ3BhY2tpbmdfc2xpcF9tb2RpZnlfZmFpbGVkJyxcbiAgICAgICAgICAgICAgICAnUGFja2luZyBzbGlwIG1vZGlmeSBmYWlsZWQhJyxcbiAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJ1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG4vLyBBIHBhcmFtw6l0ZXJiZW4ga2Fwb3R0IHN6w6FsbMOtdMOzbGV2ZWxla2hleiB0YXJ0b3rDsyB0w6l0ZWxlayBlbGxlbsWRcnrDqXNlOiB2YW4tZSBrw7Z6dMO8ayB2w6FyYWtvesOzIMOhbGxhcG90YmFuIGzDqXbFkSB0w6l0ZWwuXG5jb25zdCBjaGVja1BhY2tpbmdTbGlwSXRlbXNTdGF0dXMgPSAocGFja2luZ1NsaXBzOiBQYWNraW5nU2xpcEludGVyZmFjZVtdKSA9PiB7XG4gICAgaWYgKCFwYWNraW5nU2xpcHMpIHJldHVybjtcblxuICAgIHJldHVybiBwYWNraW5nU2xpcHMuc29tZShwYWNraW5nU2xpcCA9PiB7XG4gICAgICAgIHJldHVybiBwYWNraW5nU2xpcC5pdGVtcy5zb21lKGl0ZW0gPT4gaXRlbS5zdGF0dXMgPT09IFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5XQUlUSU5HKTtcbiAgICB9KTtcbn07XG5cbi8vIEVsxZHDoWxsw610anVrIGEgbWVnw6FsbMOzIGxpc3TDoXQsIG1lbHlldCBheiB1dG9sc8OzIG9sZGFsb24gamVsbsOtdMO8bmsgbWVnLlxuY29uc3Qgc3RvcFBvaW50c1N1bW1hcnkgPSAoKTogYW55W10gPT4ge1xuICAgIGxldCByZXN1bHRzOiB7XG4gICAgICAgIHNlcXVlbmNlTnVtYmVyOiBudW1iZXIsXG4gICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgIGlzRG9uZTogYm9vbGVhbixcbiAgICAgICAgd2FpdGluZ0l0ZW1zOiBudW1iZXJcbiAgICB9W10gPSBbXTtcblxuICAgIHNoaXBtZW50U3RvcmUub3JkZXJlZFN0b3BQb2ludHMuZm9yRWFjaChzdG9wUG9pbnQgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgICAgICAgc2VxdWVuY2VOdW1iZXI6IHN0b3BQb2ludC5zZXF1ZW5jZU51bWJlcixcbiAgICAgICAgICAgIGlkOiBzdG9wUG9pbnQuZGVsaXZlcnlBZGRyZXNzLFxuICAgICAgICAgICAgaXNEb25lOiB0cnVlLFxuICAgICAgICAgICAgd2FpdGluZ0l0ZW1zOiAwXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGZvdW5kV2FpdGluZ0l0ZW1zID0gZmFsc2U7XG5cbiAgICAgICAgc3RvcFBvaW50LnBhY2tpbmdTbGlwcy5mb3JFYWNoKHBhY2tpbmdTbGlwID0+IHtcbiAgICAgICAgICAgIGxldCB3YWl0aW5nSXRlbXMgPSBwYWNraW5nU2xpcC5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGFja2luZ1NsaXBJdGVtU3RhdHVzLldBSVRJTkcgPT0gaXRlbS5zdGF0dXM7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gSGEgdGFsw6FsdW5rIFdBSVRJTkcgc3TDoXR1c3rDuiBpdGVtZXQsIG7DtnZlbGrDvGsgYSBzesOhbWzDoWzDs3QuXG4gICAgICAgICAgICBpZiAod2FpdGluZ0l0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQud2FpdGluZ0l0ZW1zICs9IHdhaXRpbmdJdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZm91bmRXYWl0aW5nSXRlbXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBIYSB2YW4gV0FJVElORyBzdMOhdHVzesO6IGl0ZW0sIGhvenrDoWFkanVrIGEgbGlzdMOhaG96LlxuICAgICAgICBpZiAoZm91bmRXYWl0aW5nSXRlbXMpIHtcbiAgICAgICAgICAgIC8vIENzYWsgYWtrb3IgYWRqYSBob3p6w6EsIGhhIG3DqWcgbmluY3MgYmVubmUuXG4gICAgICAgICAgICBpZiAoIXJlc3VsdHMuc29tZShyID0+IHIuaWQgPT09IHJlc3VsdC5pZCAmJiByLnNlcXVlbmNlTnVtYmVyID09PSByZXN1bHQuc2VxdWVuY2VOdW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmlzRG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gVMOpdGVsZWsgbcOzZG9zw610w6FzYSBlc2V0w6luIHZpc3N6YcOhbGzDrXRqdWsgYXogYWzDocOtcsOhcyDDqXMgZsOhamwgdMO2bWLDtmtldC5cbmNvbnN0IHJlc2V0U2lnbmF0dXJlc0FuZEZpbGVzID0gKCkgPT4ge1xuICAgIGlmICghYWN0aXZlUGFja2luZ1NsaXBzLnZhbHVlKSByZXR1cm47XG5cbiAgICBzaWduYXR1cmVzLnZhbHVlID0ge307XG4gICAgZmlsZXMudmFsdWUuc3BsaWNlKDAsIGZpbGVzLnZhbHVlLmxlbmd0aCk7XG5cbiAgICBhY3RpdmVQYWNraW5nU2xpcHMudmFsdWUuZm9yRWFjaCgocGFja2luZ1NsaXA6IFBhY2tpbmdTbGlwSW50ZXJmYWNlKSA9PiB7XG4gICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnNpZ24gPSB7fTtcbiAgICAgICAgZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uZmlsZXMgPSBbXTtcbiAgICB9KTtcblxuICAgIGlucHV0S2V5LnZhbHVlKys7XG59O1xuXG4vLyBIYSBtw6FyIG5pbmNzIFdBSVRJTkcgc3TDoXR1c3rDuiBzesOhbGzDrXTDs2xldsOpbCh2YWd5aXMgdMOpdGVsKSwgYWtrb3IgdG92w6FiYmzDqXDDvG5rIGEgcmFrdMOhcm9zIG7DqXpldHJlLlxuLy8gRWd5w6liIGVzZXRiZW4gaGliw6F0IGRvYnVuay5cbmNvbnN0IHJldHVyblRvV2FyZWhvdXNlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghc2hpcG1lbnRTdG9yZS5vcmRlcmVkU3RvcFBvaW50cykgcmV0dXJuO1xuXG4gICAgcmV0dXJuVG9XYXJlaG91c2VCdXR0b25NZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgcmV0dXJuVG9XYXJlaG91c2VCdXR0b25NZXNzYWdlU3RhdHVzLnZhbHVlID0gJyc7XG5cbiAgICBmb3IgKGNvbnN0IHN0b3BQb2ludCBvZiBzaGlwbWVudFN0b3JlLm9yZGVyZWRTdG9wUG9pbnRzKSB7XG4gICAgICAgIGlmIChjaGVja1BhY2tpbmdTbGlwSXRlbXNTdGF0dXMoc3RvcFBvaW50LnBhY2tpbmdTbGlwcykpIHtcbiAgICAgICAgICAgIHJldHVyblRvV2FyZWhvdXNlQnV0dG9uTWVzc2FnZVN0YXR1cy52YWx1ZSA9ICdlcnJvcic7XG4gICAgICAgICAgICByZXR1cm5Ub1dhcmVob3VzZUJ1dHRvbk1lc3NhZ2UudmFsdWUgPSB0cmFucyhcbiAgICAgICAgICAgICAgICAnZXJyb3Jfc29tZV9wYWNrYWdlX2lzX3N0aWxsX3dhaXRpbmcnLFxuICAgICAgICAgICAgICAgICdFcnJvciwgc29tZSBwYWNrYWdlIGlzIHN0aWxsIHdhaXRpbmchJyxcbiAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuVG9XYXJlaG91c2VCdXR0b25NZXNzYWdlU3RhdHVzLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuVG9XYXJlaG91c2VCdXR0b25NZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9LCAzMDAwKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKCFzaGlwbWVudFN0b3JlLnNoaXBtZW50LmlkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzaGlwbWVudFN0b3JlLmFwaVNoaXBtZW50UmV0dXJuVG9XYXJlaG91c2Uocm91dGVyLCBzaGlwbWVudFN0b3JlLnNoaXBtZW50LmlkKTtcblxuICAgICAgICBsZXQgc2hpcG1lbnQgPSByZXNwb25zZSBhcyBTaGlwbWVudEludGVyZmFjZTtcblxuICAgICAgICBzaGlwbWVudFN0b3JlLnJlcGxhY2VTaGlwbWVudChzaGlwbWVudCk7XG5cbiAgICAgICAgaWYgKFNoaXBtZW50U3RhdHVzLlVORklOSVNIRUQgPT0gc2hpcG1lbnQuc3RhdHVzKSB7XG4gICAgICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0cmFucyhcbiAgICAgICAgICAgICAgICAgICAgJ3JldHVybmVkX2ludG9fdGhlX3dhcmVob3VzZScsXG4gICAgICAgICAgICAgICAgICAgICdSZXR1cm5lZCBpbnRvIHRoZSB3ZWFyZWhvdXNlLicsXG4gICAgICAgICAgICAgICAgICAgICdzaGlwbWVudCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChTaGlwbWVudFN0YXR1cy5GSU5JU0hFRCA9PSBzaGlwbWVudC5zdGF0dXMpIHtcbiAgICAgICAgICAgIHRvYXN0U3RvcmUuYWRkVG9hc3Qoe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRyYW5zKFxuICAgICAgICAgICAgICAgICAgICAnc2hpcG1lbnRfZGVsaXZlcnlfZW5kZWQnLFxuICAgICAgICAgICAgICAgICAgICAnU2hpcG1lbnQgZGVsaXZlcnkgZW5kZWQuJyxcbiAgICAgICAgICAgICAgICAgICAgJ3NoaXBtZW50J1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaWNvbjogJ21hcnNvLWljb24tbm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcydcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBNaXZlbCBGSU5JU0hFRCBhIHN6w6FsbMOtdG3DoW55LCBlesOpcnQgbmUgYSBkZWZhdWx0IG7DqXpldHJlIGtlcsO8bGrDvG5rLCBtZXJ0IGF6dCBuZW0gbMOhdGhhdGphIGEgc29mxZFyLlxuICAgICAgICAgICAgcm91dGVyLnJlcGxhY2UoeyBuYW1lOiAnaG9tZScgfSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRyYW5zKFxuICAgICAgICAgICAgICAgICdzaGlwbWVudF9zYXZlX2ZhaWxlZCcsXG4gICAgICAgICAgICAgICAgJ1NoaXBtZW50IHNhdmUgZmFpbGVkIScsXG4gICAgICAgICAgICAgICAgJ3NoaXBtZW50J1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJ1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG4vLyBIYSB2YW4gYSBwYXJhbcOpdGVyYmVuIGthcG90dCBzesOhbGzDrXTDs2xldmVsZWtlbiBtZWdqZWd5esOpcywgYWtrb3IgYXpva2F0IMO2c3N6ZWbFsXp6w7xrIGVneWJlIMOpcyDDumd5IGplbGVuZW7DrXRqw7xrIG1lZy5cbmNvbnN0IGdldE5vdGljZXMgPSAocGFja2luZ1NsaXBzOiBQYWNraW5nU2xpcEludGVyZmFjZVtdKSA9PiB7XG4gICAgaWYgKCFwYWNraW5nU2xpcHMpIHJldHVybjtcblxuICAgIHJldHVybiBwYWNraW5nU2xpcHMucmVkdWNlKChhY2N1bXVsYXRlZE5vdGljZXMsIHBhY2tpbmdTbGlwKSA9PiB7XG4gICAgICAgIGlmIChwYWNraW5nU2xpcC5ub3RpY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRlZE5vdGljZXMgKyAoYWNjdW11bGF0ZWROb3RpY2VzID8gJ1xcbicgOiAnJykgKyBwYWNraW5nU2xpcC5ub3RpY2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjdW11bGF0ZWROb3RpY2VzO1xuICAgIH0sICcnKTtcbn07XG5cbi8vIEbDoWpsb2sgw6lzIGFsw6HDrXLDoXNvayBrZXplbMOpc2U6IGJlw6FsbMOtdMOhcywgZ29tYiBraSDDqXMgYmUga2FwY3NvbMOhcy5cbndhdGNoKFtmaWxlcywgc2lnbmF0dXJlc10sICgpID0+IHtcbiAgICBpZiAoIWFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgYWxsQ2hlY2tlZEl0ZW1zRW1wdHkgPSBhY3RpdmVQYWNraW5nU2xpcHMudmFsdWUuZXZlcnkocGFja2luZ1NsaXAgPT4ge1xuICAgICAgICByZXR1cm4gIWZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtcy5sZW5ndGg7XG4gICAgfSk7XG4gICAgXG4gICAgLy8gSGEgbmluY3MgZWd5ZXRsZW4gdMOpdGVsIHNlbSBraXbDoWxhc3p0dmEgYXogYWRvdHQgc3rDoWxsw610w7NsZXZlbGVraGV6IHRhcnRvesOzYW4sIGFra29yIG1pbmRrw6l0IGdvbWJvdCBsZXRpbHRqdWsuXG4gICAgaWYgKGFsbENoZWNrZWRJdGVtc0VtcHR5KSB7XG4gICAgICAgIGlzUGhvdG9CdXR0b25EaXNhYmxlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIGlzU2lnbkJ1dHRvbkRpc2FibGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEhhIG5pbmNzIGFsw6HDrXLDoXMgdmFneSBmw6FqbCBmZWx0w7ZsdHZlLCBha2tvciBhbGFwaGVseXpldGJlIMOhbGzDrXRqdWsgYSBnb21ib2thdC5cbiAgICAvLyBJbGxldHZlIGF6IGFkb3R0IHN6w6FsbMOtdMOzbGV2ZWxuZWsgaXMgYmXDoWxsw610anVrIGEgbWVnZmVsZWzFkSDDqXJ0w6lrZWtldC5cbiAgICBpc1Bob3RvQnV0dG9uRGlzYWJsZWQudmFsdWUgPSBmaWxlcy52YWx1ZS5sZW5ndGggPiAwO1xuICAgIGlzU2lnbkJ1dHRvbkRpc2FibGVkLnZhbHVlID0gT2JqZWN0LmtleXMoc2lnbmF0dXJlcy52YWx1ZSkubGVuZ3RoID4gMDtcblxuICAgIGFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZS5mb3JFYWNoKChwYWNraW5nU2xpcDogUGFja2luZ1NsaXBJbnRlcmZhY2UpID0+IHtcbiAgICAgICAgZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uZmlsZXMgPSBmaWxlcy52YWx1ZSB8fCBbXTtcbiAgICAgICAgZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uc2lnbiA9IHNpZ25hdHVyZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdIHx8IHt9O1xuICAgIH0pO1xufSwgeyBkZWVwOiB0cnVlIH0pO1xuXG4vLyBTdMOhdHVzeiB2w6FsdMOhcyBlc2V0w6luIHZpc3N6YcOhbGzDrXRqdWsgYSBtZWdqZWd5esOpcyDDqXMgdmV2xZEgbWV6xZFrZXQuXG53YXRjaChzZWxlY3RlZEl0ZW1TdGF0dXMsICgpID0+IHtcbiAgICBub3RpY2UudmFsdWUgPSAnJztcbiAgICByZWNpcGllbnQudmFsdWUgPSAnJztcbiAgICByZXNldFNpZ25hdHVyZXNBbmRGaWxlcygpO1xufSk7XG5cbi8vIEEgdMOpdGVsZWsga2l2w6FsYXN6dMOhc2Egc29yw6FuIGZyaXNzw610asO8ayBhIHN6w6FsbMOtdMOzbGV2w6lsIGFkYXRva2F0Llxud2F0Y2goZm9ybVZhcmlhYmxlcy52YWx1ZSwgKCkgPT4ge1xuICAgIGlmICghYWN0aXZlUGFja2luZ1NsaXBzLnZhbHVlKSByZXR1cm47XG4gICAgXG4gICAgYWN0aXZlUGFja2luZ1NsaXBzLnZhbHVlLmZvckVhY2gocGFja2luZ1NsaXAgPT4ge1xuICAgICAgICBpZiAoZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gSGEgdmFuIGtpdsOhbGFzenR2YSB0w6l0ZWwsIGFra29yIGJlw6FsbMOtdGp1ayBheiBhZGF0b2thdC5cbiAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnNlbGVjdGVkSXRlbVN0YXR1cyA9IHNlbGVjdGVkSXRlbVN0YXR1cy52YWx1ZTtcbiAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLm5vdGljZSA9IG5vdGljZS52YWx1ZTtcbiAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnJlY2lwaWVudCA9IHJlY2lwaWVudC52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEhhIG5pbmNzIG3DoXIga2l2w6FsYXN6dHZhIHTDqXRlbCwgYWtrb3Igdmlzc3phw6FsbMOtdGp1ayBheiBhZGF0b2thdCBheiBlcmVkZXRpIMOhbGxhcG90dWtyYS5cbiAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnNlbGVjdGVkSXRlbVN0YXR1cyA9IFBhY2tpbmdTbGlwSXRlbVN0YXR1cy5ERUxJVkVSRUQ7XG4gICAgICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5ub3RpY2UgPSAnJztcbiAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnJlY2lwaWVudCA9ICcnO1xuICAgICAgICB9XG4gICAgfSk7XG59KTtcblxuLy8gSGFzem7DoWx0IHTDtm1iw7ZrIMOpcyBvYmplY3RlayB2aXNzemHDoWxsw610w6FzYS5cbm9uVW5tb3VudGVkKCgpID0+IHtcbiAgICBzaGlwbWVudFN0b3JlLnN0b3BQb2ludHMgPSBbXTtcbiAgICBmb3JtVmFyaWFibGVzLnZhbHVlID0ge307XG4gICAgc2lnbmF0dXJlcy52YWx1ZSA9IHt9O1xuICAgIGZpbGVzLnZhbHVlID0gW107XG59KVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4uY3VzdG9tLWNoZWNrYm94IHtcbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0gfiAuY2hlY2tlZCwgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgfiAubm90LWNoZWNrZWQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkIH4gLmNoZWNrZWQsIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB+IC5ub3QtY2hlY2tlZCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG59XG5cbi5mYWRlLWVudGVyLWFjdGl2ZSwgLmZhZGUtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuM3MgZWFzZTtcbn1cbi5mYWRlLWVudGVyLCAuZmFkZS1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpO1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIHYtaWY9XCJhY3RpdmVTdG9wUG9pbnRcIlxuICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTUgbWF4LXctOTZcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtMnhsIGZvbnQtYm9sZCBweC00IHNtOnRleHQtbGVmdFwiPlxuICAgICAgICAgICAge3sgdHJhbnMoJ3dhcmVob3VzZScsICdXYXJlaG91c2UnLCAnc2hpcG1lbnQnKSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIE1lZ8OhbGzDsyBpbmZvcm3DoWNpw7NrLiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBiZy1ncmF5LWRhcmtlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCB0ZXh0LWNlbnRlciBweC00XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1hcnNvLWljb24tZm9ya2xpZnQgZmxvYXQtbGVmdCB0ZXh0LTN4bFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGcgbWQ6dGV4dC14bCBwLTRcIj57eyBhY3RpdmVTdG9wUG9pbnQuZGVsaXZlcnlBZGRyZXNzIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbG9hdC1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0yeGwgcHItMVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzaGlwbWVudFN0b3JlLm9yZGVyZWRTdG9wUG9pbnRzLmxlbmd0aCAtIGFjdGl2ZVN0b3BQb2ludC5zZXF1ZW5jZU51bWJlciB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hcnNvLWljb24tY2hldnJvbi1yaWdodCB0ZXh0LXhsXCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBIG1lZ8OhbGzDs2hveiB0YXJ0b3rDsyBzesOhbGzDrXTDs2xldmVsZWsuIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB2LWZvcj1cIihwYWNraW5nU2xpcHMsIGRlbGl2ZXJ5TmFtZSkgaW4gZ3JvdXBlZFBhY2tpbmdTbGlwc1wiXG4gICAgICAgICAgICA6a2V5PVwiZGVsaXZlcnlOYW1lXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBiZy13aGl0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTQgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIm9wZW5lZEdyb3VwID09PSBkZWxpdmVyeU5hbWUgPyAnYm9yZGVyLWItMycgOiAnJ1wiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlR3JvdXAoZGVsaXZlcnlOYW1lKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkZWxpdmVyeU5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yIG1kOmZsZXgtcm93IG1kOmdhcC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cInBhY2tpbmdTbGlwc1swXS5jdXN0b21lckNlbGx1bGFyUGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIDpocmVmPVwiJ3RlbDonICsgcGFja2luZ1NsaXBzWzBdLmN1c3RvbWVyQ2VsbHVsYXJQaG9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwidGV4dC1ncmVlbiB0ZXh0LTN4bCBtYXJzby1pY29uLXBob25lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgcGFja2luZ1NsaXBzWzBdLmN1c3RvbWVyQ2VsbHVsYXJQaG9uZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tpbmdTbGlwc1swXS5jdXN0b21lclBob25lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tpbmdTbGlwc1swXS5jdXN0b21lckNlbGx1bGFyUGhvbmUgIT0gcGFja2luZ1NsaXBzWzBdLmN1c3RvbWVyUGhvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIDpocmVmPVwiJ3RlbDonICsgcGFja2luZ1NsaXBzWzBdLmN1c3RvbWVyUGhvbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInRleHQtZ3JlZW4gdGV4dC0zeGwgbWFyc28taWNvbi1waG9uZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IHBhY2tpbmdTbGlwc1swXS5jdXN0b21lclBob25lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC0yeGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkR3JvdXAgPT09IGRlbGl2ZXJ5TmFtZSA/ICdtYXJzby1pY29uLWNoZXZyb24tdXAnIDogJ21hcnNvLWljb24tY2hldnJvbi1kb3duJ1xuICAgICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gU3rDoWxsw610w7NsZXZlbGVrKEF6IGFrdHXDoWxpcyBjc29wb3J0IGFsYXBqw6FuLiktLT5cbiAgICAgICAgICAgIDx0cmFuc2l0aW9uIG5hbWU9XCJmYWRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICB2LWlmPVwib3BlbmVkR3JvdXAgPT09IGRlbGl2ZXJ5TmFtZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICB2LWZvcj1cInBhY2tpbmdTbGlwIGluIHBhY2tpbmdTbGlwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwicGFja2luZ1NsaXAuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItYi0zXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYm9sZCBiZy1ncmF5LWRhcmsgdGV4dC13aGl0ZSBweC00IHB5LTIgdGV4dC1sZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHBhY2tpbmdTbGlwLmlkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU3rDoWxsw610w7NsZXZlbGVraGV6IHRhcnRvesOzIHTDqXRlbGVrLiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtcyBkaXZpZGUteSBncmlkIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWZvcj1cIml0ZW0gaW4gcGFja2luZ1NsaXAuaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbSBweS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9jayBmb250LWJvbGQgcHgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5wcm9kdWN0TmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTIgdGV4dC1jZW50ZXIgdGV4dC14bCBweC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLnF1YW50aXR5IH19IHt7IGl0ZW0uc2FsZXNVbml0IH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCInSU5fV0FSRUhPVVNFJyA9PSBpdGVtLnN0b3JhZ2VTdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIlBhY2tpbmdTbGlwSXRlbVN0b3JhZ2VTdGF0dXNEYXRhLmNvbG9yKGl0ZW0uc3RvcmFnZVN0YXR1cylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LTJ4bCBtci0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tpbmdTbGlwSXRlbVN0b3JhZ2VTdGF0dXNEYXRhLmljb24oaXRlbS5zdG9yYWdlU3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzRGF0YS5sYWJlbChpdGVtLnN0b3JhZ2VTdGF0dXMpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiJ0FUX0NVU1RPTUVSJyA9PSBpdGVtLnN0b3JhZ2VTdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIlBhY2tpbmdTbGlwSXRlbVN0b3JhZ2VTdGF0dXNEYXRhLmNvbG9yKGl0ZW0uc3RvcmFnZVN0YXR1cylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LTJ4bCBtci0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tpbmdTbGlwSXRlbVN0b3JhZ2VTdGF0dXNEYXRhLmljb24oaXRlbS5zdG9yYWdlU3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzRGF0YS5sYWJlbChpdGVtLnN0b3JhZ2VTdGF0dXMpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIidPTl9UUlVDSycgPT0gaXRlbS5zdG9yYWdlU3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveCB0ZXh0LWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJmb3JtVmFyaWFibGVzW3BhY2tpbmdTbGlwLmlkXS5jaGVja2VkSXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJyZXNldFNpZ25hdHVyZXNBbmRGaWxlcygpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlY2tlZCB3LTEwIHRleHQtMnhsIHRleHQtZ3JheSBtYXJzby1pY29uLXNxdWFyZS1vIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwidy0xMCBhYnNvbHV0ZSBsZWZ0LTAgcHgtMiB0ZXh0LTJ4bCB0ZXh0LWdyZWVuIG1hcnNvLWljb24tcmlnaHQgcHgtMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibm90LWNoZWNrZWQgdy0xMCBweC0yIHRleHQtMnhsIHRleHQtZ3JheS1kYXJrIG1hcnNvLWljb24tc3F1YXJlLW9cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC00IHB5LTIgdGV4dC1jZW50ZXIgYm9yZGVyLXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQteGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0UHJpY2UocGFja2luZ1NsaXAuY2FzaE9uRGVsaXZlcnlQcmljZSwgcGFja2luZ1NsaXAuY3VycmVuY3kpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNCBweS0yIGJnLWdyZWVuIHRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LXhsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdHJhbnMoJ3RvdGFsX2Ftb3VudCcsICdUb3RhbCBhbW91bnQnLCAnc2hpcG1lbnQnKSB9fXt7IGdldFRvdGFsQW1vdW50KCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBOw6l2IG1lZ2Fkw6FzLCBhbMOhw61yw6FzLCBmb3TDs3rDoXMvZsOhamxmZWx0w7ZsdMOpcy4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJnZXROb3RpY2VzKHBhY2tpbmdTbGlwcykgIT09ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC00XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGQgcHItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zKCdub3RpY2UnLCAnTm90aWNlJywgJ3BhY2tpbmdfc2xpcCcpIH19OiA8L3NwYW4+e3sgZ2V0Tm90aWNlcyhwYWNraW5nU2xpcHMpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiY2hlY2tQYWNraW5nU2xpcEl0ZW1zU3RvcmFnZVN0YXR1cyhwYWNraW5nU2xpcHMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtNCBwdC00IHBiLTJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2hvcC1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJyZWNpcGllbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwbGFjZWhvbGRlcj1cInRyYW5zKCdyZWNpcGllbnQnLCAnUmVjaXBpZW50JywgJ3BhY2tpbmdfc2xpcCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwic2V0UmVjaXBpZW50KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJjaGVja1BhY2tpbmdTbGlwSXRlbXNTdG9yYWdlU3RhdHVzKHBhY2tpbmdTbGlwcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC00IHB5LTIgdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEvDqXQgbGVoZXTFkXPDqWdldCBiaXp0b3PDrXTDsyBnb21iLiBTesOhbGzDrXTDs2xldsOpbCBhbMOhw61yw6FzYSwgdmFneSBmZWx0w7ZsdMOpc2UuIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPER1YWxBY3Rpb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm9uLXByaW1hcnktYWN0aW9uPVwiKCkgPT4gcHJpbWFyeUFjdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6b24tc2Vjb25kYXJ5LWFjdGlvbj1cIigpID0+IHNlY29uZGFyeUFjdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aXMtcHJpbWFyeS1kaXNhYmxlZD1cImlzU2lnbkJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aXMtc2Vjb25kYXJ5LWRpc2FibGVkPVwiaXNQaG90b0J1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEbDoWpsZmVsdMO2bHTDqXMuIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE11bHRpcGxlRmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cImlucHV0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkLWJhc2U2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzaG93LWJ1dHRvbj1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZmlsZXM9XCJmaWxlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgcHgtNCBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgYnRuIGJ0bi1zdWNjZXNzICFoLTE2ICF0ZXh0LWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCIhY2hlY2tQYWNraW5nU2xpcEl0ZW1zU3RvcmFnZVN0YXR1cyhwYWNraW5nU2xpcHMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVCdXR0b25NZXNzYWdlID8gJ3Nob3ctcG9wdXAtbWVzc2FnZSc6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lQnV0dG9uTWVzc2FnZVN0YXR1cyA/IGRvbmVCdXR0b25NZXNzYWdlU3RhdHVzIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGF0YS1wb3B1cC1tZXNzYWdlPVwiZG9uZUJ1dHRvbk1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7IG1heC13aWR0aDogMjRyZW07XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJwYWNraW5nU2xpcERvbmUocGFja2luZ1NsaXBzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zKCdkb25lJywgJ0RvbmUnLCAnc2hpcG1lbnQnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90cmFuc2l0aW9uPlxuXG4gICAgICAgICAgICA8IS0tIEFsw6HDrXLDoXMgbWVnYWTDoXNhLiAtLT5cbiAgICAgICAgICAgIDxzaWduaW5nLW1vZGFsXG4gICAgICAgICAgICAgICAgOmlzLW9wZW49XCJpc1NpZ25pbmdNb2RhbE9wZW5cIlxuICAgICAgICAgICAgICAgIEB0b2dnbGU9XCJ0b2dnbGVTaWduaW5nTW9kYWwoKVwiXG4gICAgICAgICAgICAgICAgQHNpZ249XCJyZWNlaXZlU2lnbkltYWdlRGF0YVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFbDoWx0w6FzIGEgbWVnw6FsbMOzayBrw7Z6dC4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTQgYmctd2hpdGUgcC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEyIGgtMTIgYnRuIGZvbnQtYm9sZCBwLTRcIlxuICAgICAgICAgICAgICAgIDp0aXRsZT1cInRyYW5zKCdiYWNrJywgJ0JhY2snLCAnc2hpcG1lbnQnKVwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwibW92ZVRvKC0tYWN0aXZlU3RlcClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWFyc28taWNvbi1jaGV2cm9uLWxlZnRcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZm9udC1ib2xkIHAtNFwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwibW92ZVRvKHNoaXBtZW50U3RvcmUub3JkZXJlZFN0b3BQb2ludHMubGVuZ3RoICsgMSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgPGRpdj57eyB0cmFucygnYWRkcmVzc19saXN0JywgJ0FkZHJlc3MgbGlzdCcsICdzaGlwbWVudCcpIH19PC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctMTIgaC0xMiBidG4gZm9udC1ib2xkIHAtNFwiXG4gICAgICAgICAgICAgICAgOnRpdGxlPVwidHJhbnMoJ25leHQnLCAnTmV4dCcsICdzaGlwbWVudCcpXCJcbiAgICAgICAgICAgICAgICBAY2xpY2s9XCJtb3ZlVG8oKythY3RpdmVTdGVwKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXJzby1pY29uLWNoZXZyb24tcmlnaHRcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBNZWfDoWxsw7Mgw7Zzc3plc8OtdMWRIG7DqXpldC4gLS0+XG4gICAgPGRpdlxuICAgICAgICB2LWlmPVwiZmluYWxQYWdlXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00XCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgdGV4dC0yeGwgZm9udC1ib2xkIHVwcGVyY2FzZVwiPlxuICAgICAgICAgICAge3sgdHJhbnMoJ2l0ZW1zX2xpc3QnLCAnSXRlbXMgbGlzdCcsICdwYWNraW5nX3NsaXAnKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIj5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIHYtZm9yPVwic3RvcFBvaW50IGluIHN0b3BQb2ludHNTdW1tYXJ5KClcIlxuICAgICAgICAgICAgICAgIDprZXk9XCJzdG9wUG9pbnQuaWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGJvcmRlci1sLTggdGV4dC1sZyBmb250LWJvbGQgYmctd2hpdGUgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbc3RvcFBvaW50LmlzRG9uZSA/ICdib3JkZXItZ3JlZW4nOiAnYm9yZGVyLXJlZCddXCJcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwibW92ZVRvKHN0b3BQb2ludC5zZXF1ZW5jZU51bWJlcilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtMiBidG4tbGluayB0ZXh0LWJsdWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAje3sgc3RvcFBvaW50LnNlcXVlbmNlTnVtYmVyIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yIHctZnVsbCBjb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvcFBvaW50LmlkIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwic3RvcFBvaW50Lm9uVHJ1Y2tJdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtMiB0ZXh0LWJhc2Ugdy1mdWxsIHRleHQtcmlnaHQgY29udGVudC1jZW50ZXIgZmxleCBnYXAtMiBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGRlbiBtZDppbmxpbmUtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0cmFucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1hfaXRlbXNfd2FpdGluZ190b19iZV9kb25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tpdGVtQ291bnR9IGl0ZW1zIHdhaXRpbmcgdG8gYmUgZG9uZS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJywge2l0ZW1Db3VudDogc3RvcFBvaW50Lm9uVHJ1Y2tJdGVtc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hcnNvLWljb24tcGVuY2lsIHRleHQtMnhsIHRleHQtYmx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBTesOhbGzDrXTDs2xldmVsZWsgdsOpZ2xlZ3PDrXTDqXNlLlxuICAgICAgICAgICAgSGEgdmFuIG3DqWcgT05fVFJVQ0sgc3TDoXR1c3rDuiBzesOhbGzDrXTDs2xldsOpbCwgYWtrb3IgaGliYcO8emVuZXRldCBkb2J1bmsuXG4gICAgICAgICAgICBIYSBuaW5jcywgYWtrb3IgdsOpZ2xlZ2Vzw610asO8ayDFkWtldCDDqXMgYSBmxZFvbGRhbHJhIGtlcsO8bMO8bmsuXG4gICAgICAgIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBwLTIgYmctd2hpdGVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctMTIgYnRuIGZvbnQtYm9sZCBwLTRcIlxuICAgICAgICAgICAgICAgIDp0aXRsZT1cInRyYW5zKCdiYWNrJywgJ0JhY2snLCAnc2hpcG1lbnQnKVwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwibW92ZVRvKGFjdGl2ZVN0ZXAtMSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWFyc28taWNvbi1jaGV2cm9uLWxlZnRcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaEJ1dHRvbk1lc3NhZ2UgPyAnc2hvdy1wb3B1cC1tZXNzYWdlJzogJycsXG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaEJ1dHRvbk1lc3NhZ2VTdGF0dXMgPyBmaW5pc2hCdXR0b25NZXNzYWdlU3RhdHVzIDogJydcbiAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICA6ZGF0YS1wb3B1cC1tZXNzYWdlPVwiZmluaXNoQnV0dG9uTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwiZGVsaXZlcnlGaW5pc2hlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdHJhbnMoJ2RlbGl2ZXJ5X2ZpbmlzaGVkJywgJ0RlbGl2ZXJ5IGZpbmlzaGVkJywgJ3NoaXBtZW50JykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBjb21wdXRlZCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICd2dWUtcm91dGVyJztcbmltcG9ydCB7IHVzZVNoaXBtZW50U3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZXMvc2hpcG1lbnQvc2hpcG1lbnRTdG9yZSc7XG5pbXBvcnQgeyB1c2VUb2FzdFN0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmVzL3RvYXN0L3RvYXN0U3RvcmUnO1xuaW1wb3J0IHsgdHJhbnMgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2kxOG5cIjtcbmltcG9ydCB7IGZvcm1hdFByaWNlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi91dGlscy9zaG9wXCI7XG5pbXBvcnQgU2VydmVyRXJyb3IgZnJvbSAnLi4vLi4vY29tbW9uL2Vycm9yL1NlcnZlckVycm9yJztcbmltcG9ydCB7IFN0b3BQb2ludEludGVyZmFjZSB9IGZyb20gJy4uLy4uL21vZGVscy9TdG9wUG9pbnRzJztcbmltcG9ydCB7IFBhY2tpbmdTbGlwSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1BhY2tpbmdTbGlwJztcbmltcG9ydCB7IFBhY2tpbmdTbGlwUGFyYW1zSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1BhY2tpbmdTbGlwUGFyYW1zJztcbmltcG9ydCB7IFBhY2tpbmdTbGlwSXRlbVN0YXR1cyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvUGFja2luZ1NsaXBJdGVtU3RhdHVzXCI7XG5pbXBvcnQge1xuICAgIFBhY2tpbmdTbGlwSXRlbVN0b3JhZ2VTdGF0dXMsXG4gICAgUGFja2luZ1NsaXBJdGVtU3RvcmFnZVN0YXR1c0RhdGFcbn0gZnJvbSBcIi4uLy4uL21vZGVscy9QYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzXCI7XG5pbXBvcnQgeyBQYWNraW5nU2xpcFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9QYWNraW5nU2xpcFN0YXR1cyc7XG5pbXBvcnQgU2hvcElucHV0IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL0Zvcm0vU2hvcElucHV0LnZ1ZVwiO1xuaW1wb3J0IER1YWxBY3Rpb25CdXR0b24gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Gb3JtL0R1YWxBY3Rpb25CdXR0b24udnVlJztcbmltcG9ydCBTaWduaW5nTW9kYWwgZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvU2lnbmluZ01vZGFsLnZ1ZVwiO1xuaW1wb3J0IE11bHRpcGxlRmlsZUlucHV0IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvRm9ybS9JbnB1dC9NdWx0aXBsZUZpbGVJbnB1dC52dWUnO1xuaW1wb3J0IHsgU2hpcG1lbnRJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvU2hpcG1lbnQnO1xuXG5jb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcbmNvbnN0IHRvYXN0U3RvcmUgPSB1c2VUb2FzdFN0b3JlKCk7XG5jb25zdCBzaGlwbWVudFN0b3JlID0gdXNlU2hpcG1lbnRTdG9yZSgpO1xuY29uc3QgYWN0aXZlU3RvcFBvaW50ID0gcmVmPFN0b3BQb2ludEludGVyZmFjZSB8IG51bGwgfCB1bmRlZmluZWQ+KG51bGwpO1xuY29uc3QgYWN0aXZlU3RvcFBvaW50SXNSZWFkT25seSA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBvcGVuZWRHcm91cCA9IHJlZjxzdHJpbmc+KCcnKTtcbmNvbnN0IGFjdGl2ZVN0ZXAgPSByZWY8bnVtYmVyPigxKTtcbmNvbnN0IGZpbmFsUGFnZSA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCByZWNpcGllbnQgPSByZWY8c3RyaW5nPignJyk7XG5jb25zdCBmaWxlcyA9IHJlZjxGaWxlW10+KFtdKTtcbmNvbnN0IHNpZ25hdHVyZXMgPSByZWY8UmVjb3JkPHN0cmluZywgYW55Pj4oe30pO1xuY29uc3QgaXNTaWduaW5nTW9kYWxPcGVuID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbmNvbnN0IGlzU2lnbkJ1dHRvbkRpc2FibGVkID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbmNvbnN0IGlzUGhvdG9CdXR0b25EaXNhYmxlZCA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5jb25zdCBpbnB1dEtleSA9IHJlZjxudW1iZXI+KDEpO1xuY29uc3QgZG9uZUJ1dHRvbk1lc3NhZ2UgPSByZWY8c3RyaW5nPignJyk7XG5jb25zdCBkb25lQnV0dG9uTWVzc2FnZVN0YXR1cyA9IHJlZjxzdHJpbmc+KCcnKTtcbmNvbnN0IGZpbmlzaEJ1dHRvbk1lc3NhZ2UgPSByZWY8c3RyaW5nPignJyk7XG5jb25zdCBmaW5pc2hCdXR0b25NZXNzYWdlU3RhdHVzID0gcmVmPHN0cmluZz4oJycpO1xuY29uc3QgZm9ybVZhcmlhYmxlcyA9IHJlZjxSZWNvcmQ8c3RyaW5nLCB7XG4gICAgY2hlY2tlZEl0ZW1zOiBudW1iZXJbXSxcbiAgICByZWNpcGllbnQ6IHN0cmluZyxcbiAgICBmaWxlczogYW55W10sXG4gICAgc2lnbjogYW55XG59Pj4oe30pO1xuXG4vLyBTesOhbGzDrXTDs2xldmVsZWsgY3NvcG9ydG9zw610w6FzYSBhIHZldsWRIG5ldmUgc3plcmludC5cbmNvbnN0IGdyb3VwZWRQYWNraW5nU2xpcHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFhY3RpdmVTdG9wUG9pbnQudmFsdWUpIHJldHVybjtcblxuICAgIHJldHVybiBhY3RpdmVTdG9wUG9pbnQudmFsdWUucGFja2luZ1NsaXBzLnJlZHVjZSgoZ3JvdXBzOiBSZWNvcmQ8c3RyaW5nLCBQYWNraW5nU2xpcEludGVyZmFjZVtdPiwgcGFja2luZ1NsaXApID0+IHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBwYWNraW5nU2xpcC5kZWxpdmVyeU5hbWU7XG5cbiAgICAgICAgaWYgKCFncm91cHNbZ3JvdXBdKSBncm91cHNbZ3JvdXBdID0gW107XG5cbiAgICAgICAgZ3JvdXBzW2dyb3VwXS5wdXNoKHBhY2tpbmdTbGlwKTtcblxuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH0sIHt9KTtcbn0pO1xuXG4vLyBBa3R1w6FsaXMgc3rDoWxsw610w7NsZXZlbGVrIGJldMO2bHTDqXNlLlxuY29uc3QgYWN0aXZlUGFja2luZ1NsaXBzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghYWN0aXZlU3RvcFBvaW50LnZhbHVlKSByZXR1cm47XG4gICAgcmV0dXJuIGFjdGl2ZVN0b3BQb2ludC52YWx1ZS5wYWNraW5nU2xpcHMuZmlsdGVyKHBhY2tpbmdTbGlwID0+IHBhY2tpbmdTbGlwLmRlbGl2ZXJ5TmFtZSA9PT0gb3BlbmVkR3JvdXAudmFsdWUpO1xufSk7XG5cbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XG4gICAgLy8gTWVnw6FsbMOzayBsZWvDqXLDqXNlLlxuICAgIGF3YWl0IGdldFN0b3BQb2ludHMoKTtcblxuICAgIC8vIE1lZ8OhbGzDsyBiZcOhbGzDrXTDoXNhLlxuICAgIHNob3dTdG9wUG9pbnQodHJ1ZSk7XG59KTtcblxuLy8gU3rDoWxsw610w7NsZXbDqWwgYWRhdG9rIMOpcyB2w6FsdG96w7NrIHZpc3N6YcOhbGzDrXTDoXNhIMOpcyDDumpyYSBpbmljaWFsaXrDoWzDoXNhLlxuY29uc3QgcmVsb2FkRm9ybVZhcmlhYmxlcyA9IChpbml0ID0gZmFsc2UpID0+IHtcbiAgICByZWNpcGllbnQudmFsdWUgPSAnJztcblxuICAgIGlmIChhY3RpdmVTdG9wUG9pbnQudmFsdWU/LnBhY2tpbmdTbGlwcykge1xuICAgICAgICBhY3RpdmVTdG9wUG9pbnQudmFsdWUucGFja2luZ1NsaXBzLmZvckVhY2goKHBhY2tpbmdTbGlwKSA9PiB7XG4gICAgICAgICAgICAvLyBJbmljaWFsaXrDoWxqdWsgYSBmb3JtVmFyaWFibGVzIG9iamVrdHVtb3QsIGhhIG3DqWcgbmVtIGzDqXRlemlrLlxuICAgICAgICAgICAgaWYgKCFmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXSkge1xuICAgICAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdID0ge1xuICAgICAgICAgICAgICAgICAgICBjaGVja2VkSXRlbXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICByZWNpcGllbnQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICBmaWxlczogW10sXG4gICAgICAgICAgICAgICAgICAgIHNpZ246IHt9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhY2tpbmdTbGlwICYmIFBhY2tpbmdTbGlwU3RhdHVzLlVORklOSVNIRUQgPT09IHBhY2tpbmdTbGlwLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGlmIChpbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnJlY2lwaWVudCA9IHBhY2tpbmdTbGlwLnJlY2lwaWVudDtcbiAgICAgICAgICAgICAgICAgICAgZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zID0gcGFja2luZ1NsaXAuaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzLk9OX1RSVUNLID09IGl0ZW0uc3RvcmFnZVN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoaXRlbSA9PiBpdGVtLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaWQpOiBpZCBpcyBudW1iZXIgPT4gaWQgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG4vLyBNZWfDoWxsw7NrIGxla8OpcsOpc2UgYSBzaGlwbWVudCBpZCBhbGFwasOhbi5cbmNvbnN0IGdldFN0b3BQb2ludHMgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFzaGlwbWVudFN0b3JlLnNoaXBtZW50LmlkKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBzaGlwbWVudFN0b3JlLmdldFN0b3BQb2ludHNCeVNoaXBtZW50KHJvdXRlciwgeyBzaGlwbWVudElkOiBzaGlwbWVudFN0b3JlLnNoaXBtZW50LmlkIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRvYXN0U3RvcmUuYWRkVG9hc3Qoe1xuICAgICAgICAgICAgbWVzc2FnZTogKGVycm9yIGFzIFNlcnZlckVycm9yKS50b1N0cmluZygpLFxuICAgICAgICAgICAgaWNvbjogJ21hcnNvLWljb24tbm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG4vLyBBeiBha3R1w6FsaXMgc3rDoWxsw610w7NsZXbDqWwgY3NvcG9ydCBsZW55aXTDoXPDoXJhIHN6b2xnw6FsLlxuY29uc3QgdG9nZ2xlR3JvdXAgPSAoZ3JvdXBOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBvcGVuZWRHcm91cC52YWx1ZSA9IG9wZW5lZEdyb3VwLnZhbHVlID09PSBncm91cE5hbWUgPyAnJyA6IGdyb3VwTmFtZTtcbiAgICByZWxvYWRGb3JtVmFyaWFibGVzKHRydWUpO1xuICAgIHJlc2V0U2lnbmF0dXJlc0FuZEZpbGVzKCk7XG59O1xuXG4vLyBTesOhbGzDrXTDs2xldmVsZWtlbiBsw6l2xZEgw7Zzc3plZ2VrIGVnecO8dHRlcyBtZWdqZWxlbsOtdMOpc8OpcmUgc3pvbGfDoWwuXG5jb25zdCBnZXRUb3RhbEFtb3VudCA9ICgpID0+IHtcbiAgICBpZiAoIWFjdGl2ZVN0b3BQb2ludC52YWx1ZSB8fCAhb3BlbmVkR3JvdXAudmFsdWUpIHJldHVybjtcblxuICAgIGxldCB0b3RhbEFtb3VudEluZm8gPSB7XG4gICAgICAgIGNvdW50OiAwLFxuICAgICAgICB0b3RhbEFtb3VudDogMFxuICAgIH1cblxuICAgIGFjdGl2ZVN0b3BQb2ludC52YWx1ZS5wYWNraW5nU2xpcHMuZm9yRWFjaChwYWNraW5nU2xpcCA9PiB7XG4gICAgICAgIGlmIChwYWNraW5nU2xpcC5kZWxpdmVyeU5hbWUgPT09IG9wZW5lZEdyb3VwLnZhbHVlKSB7XG4gICAgICAgICAgICB0b3RhbEFtb3VudEluZm8udG90YWxBbW91bnQgKz0gcGFja2luZ1NsaXAuY2FzaE9uRGVsaXZlcnlQcmljZTtcbiAgICAgICAgICAgIHRvdGFsQW1vdW50SW5mby5jb3VudCsrO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYCgke3RvdGFsQW1vdW50SW5mby5jb3VudH0pOlxuICAgICAgICAke2Zvcm1hdFByaWNlKHRvdGFsQW1vdW50SW5mby50b3RhbEFtb3VudCwgYWN0aXZlU3RvcFBvaW50LnZhbHVlLnBhY2tpbmdTbGlwc1swXS5jdXJyZW5jeSl9YDtcbn07XG5cbi8vIFbDoWx0w6FzIGF6IG9sZGFsYWsga8O2enQuXG5jb25zdCBtb3ZlVG8gPSAocGFnZTogbnVtYmVyKSA9PiB7XG4gICAgLy8gKzEgbWVydCBzesO8a3NlZyB2YW4gZWd5IGV4dHJhIG9sZGFscmEgYSB2w6lnw6luLlxuICAgIGxldCBtYXhQYWdlID0gc2hpcG1lbnRTdG9yZS5zdG9wUG9pbnRzLmxlbmd0aCArIDE7XG4gICAgZmluYWxQYWdlLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKDEgPiBwYWdlKSB7XG4gICAgICAgIGFjdGl2ZVN0ZXAudmFsdWUgPSAxO1xuICAgICAgICBzaG93U3RvcFBvaW50KCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWF4UGFnZSA8PSBwYWdlKSB7XG4gICAgICAgIGFjdGl2ZVN0ZXAudmFsdWUgPSBtYXhQYWdlO1xuICAgICAgICBmaW5hbFBhZ2UudmFsdWUgPSB0cnVlO1xuICAgICAgICBzaG93U3RvcFBvaW50KCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhY3RpdmVTdGVwLnZhbHVlID0gcGFnZTtcbiAgICBzaG93U3RvcFBvaW50KCk7XG4gICAgcmVzZXRTaWduYXR1cmVzQW5kRmlsZXMoKTtcbiAgICBkb25lQnV0dG9uTWVzc2FnZS52YWx1ZSA9ICcnO1xuICAgIGRvbmVCdXR0b25NZXNzYWdlU3RhdHVzLnZhbHVlID0gJyc7XG59O1xuXG4vLyBBeiBha3R1w6FsaXMgbWVnw6FsbMOzIG1lZ2plbGVuw610w6lzw6l0IGJpenRvc8OtdGphLlxuY29uc3Qgc2hvd1N0b3BQb2ludCA9IGFzeW5jIChhdXRvU2VsZWN0OiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAvLyBMYXBvesOhcyB1dMOhbiBheiBha3R1w6FsaXMgc3RvcHBvaW50IGJldMO2bHTDqXNlLlxuICAgIGlmIChhdXRvU2VsZWN0KSB7XG4gICAgICAgIC8vIEhhIGNzYWsgc2ltw6FuIMO6anJhdMO2bHRqw7xrIGF6IG9sZGFsdCBhcnJhIGEgcGFja2luZyBzbGlwcmUgdWdydW5rIGFtaSDDqXBwIGvDtnZldGtlemlrLlxuICAgICAgICAvLyBUZWjDoXQgbcOzZG9zw610YW51bmsga2VsbCBheiBhY3RpdmVTdGVwIHbDoWx0b3rDs3QuXG4gICAgICAgIGNvbnN0IG5leHRTdG9wUG9pbnQgPSBzaGlwbWVudFN0b3JlLm9yZGVyZWRTdG9wUG9pbnRzLmZpbmQoc3RvcFBvaW50ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdG9wUG9pbnQucGFja2luZ1NsaXBzLnNvbWUocGFja2luZ1NsaXAgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYWNraW5nU2xpcC5pdGVtcy5zb21lKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFja2luZ1NsaXBJdGVtU3RvcmFnZVN0YXR1cy5PTl9UUlVDSyA9PSBpdGVtLnN0b3JhZ2VTdGF0dXM7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG5leHRTdG9wUG9pbnQpIHtcbiAgICAgICAgICAgIGFjdGl2ZVN0ZXAudmFsdWUgPSBuZXh0U3RvcFBvaW50LnNlcXVlbmNlTnVtYmVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmluYWxQYWdlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGFjdGl2ZVN0ZXAudmFsdWUgPSBzaGlwbWVudFN0b3JlLnN0b3BQb2ludHMubGVuZ3RoICsgMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1lZ8OhbGzDsyBiZcOhbGzDrXTDoXNhIGEgc29ycmVuZCBhbGFwasOhbi5cbiAgICBhY3RpdmVTdG9wUG9pbnQudmFsdWUgPSBzaGlwbWVudFN0b3JlLmdldFN0b3BQb2ludEJ5T3JkZXJOdW1iZXIoYWN0aXZlU3RlcC52YWx1ZSk7XG5cbiAgICAvLyBBeiBlbHPFkSBzesOhbGzDrXTDs2xldsOpbCBjc29wb3J0IGxlbnlpdMOhc2EuXG4gICAgY29uc3QgZ3JvdXBLZXlzID0gT2JqZWN0LmtleXMoZ3JvdXBlZFBhY2tpbmdTbGlwcy52YWx1ZSB8fCB7fSk7XG4gICAgaWYgKGdyb3VwS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG9wZW5lZEdyb3VwLnZhbHVlID0gZ3JvdXBLZXlzWzBdO1xuICAgIH1cblxuICAgIGlmIChhY3RpdmVTdG9wUG9pbnQudmFsdWUpIHtcbiAgICAgICAgYWN0aXZlU3RvcFBvaW50SXNSZWFkT25seS52YWx1ZSA9IHN0b3BQb2ludFBhY2tpbmdTbGlwSGFzV2FpdGluZ0l0ZW1zKGFjdGl2ZVN0b3BQb2ludC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmVsb2FkRm9ybVZhcmlhYmxlcyh0cnVlKTtcbn07XG5cbi8vIEFkb3R0IG1lZ8OhbGzDs2hveiB0YXJ0b3rDsyBzesOhbGzDrXTDs2xldsOpbCB0w6l0ZWxlayBlbGxlbsWRcnrDqXNlOiB2YW4tZSBrw7Z6dMO8ayB2w6FyYWtvesOzIMOhbGxhcG90YmFuIGzDqXbFkSB0w6l0ZWwuXG5jb25zdCBzdG9wUG9pbnRQYWNraW5nU2xpcEhhc1dhaXRpbmdJdGVtcyA9IChzdG9wUG9pbnQ6IFN0b3BQb2ludEludGVyZmFjZSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBzdG9wUG9pbnQucGFja2luZ1NsaXBzLnNvbWUocGFja2luZ1NsaXAgPT4ge1xuICAgICAgICByZXR1cm4gcGFja2luZ1NsaXAuaXRlbXMuc29tZShpdGVtID0+IGl0ZW0uc3RhdHVzID09PSBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuV0FJVElORyk7XG4gICAgfSk7XG59O1xuXG4vLyBBbMOhw61yw6FzIG1vZGFsaG96IHRhcnRvesOzIGbDvGdndsOpbnllay5cbmNvbnN0IHByaW1hcnlBY3Rpb24gPSAoKSA9PiB7XG4gICAgdG9nZ2xlU2lnbmluZ01vZGFsKCk7XG59O1xuXG5jb25zdCBzZWNvbmRhcnlBY3Rpb24gPSAoKSA9PiB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignI211bHRpcGxlLWZpbGUtaW5wdXQgaW5wdXRbdHlwZT1cImZpbGVcIl0nKT8uY2xpY2soKTtcbn07XG5cbmNvbnN0IHRvZ2dsZVNpZ25pbmdNb2RhbCA9ICgpID0+IHtcbiAgICBpc1NpZ25pbmdNb2RhbE9wZW4udmFsdWUgPSAhaXNTaWduaW5nTW9kYWxPcGVuLnZhbHVlO1xufVxuXG5jb25zdCByZWNlaXZlU2lnbkltYWdlRGF0YSA9IChpbWFnZURhdGE6IHN0cmluZykgPT4ge1xuICAgIGlmICghaW1hZ2VEYXRhIHx8ICFhY3RpdmVQYWNraW5nU2xpcHMudmFsdWUpIHJldHVybjtcblxuICAgIGFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZS5mb3JFYWNoKChwYWNraW5nU2xpcDogUGFja2luZ1NsaXBJbnRlcmZhY2UpID0+IHtcbiAgICAgICAgaWYgKGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hlY2tlZEl0ZW1JZCBvZiBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5jaGVja2VkSXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFja2luZ1NsaXAuaXRlbXMuc29tZShpdGVtID0+IGl0ZW0uaWQgPT09IGNoZWNrZWRJdGVtSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2lnbmF0dXJlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVOb3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VOYW1lID0gYCR7cGFja2luZ1NsaXAuaWR9LXNpZ24ucG5nYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlVHlwZSA9IGltYWdlRGF0YS5zdWJzdHJpbmcoaW1hZ2VEYXRhLmluZGV4T2YoJzonKSArIDEsIGltYWdlRGF0YS5pbmRleE9mKCc7JykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VPYmplY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0OiBpbWFnZURhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBkYXRlTm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGltYWdlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBpbWFnZURhdGEubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGltYWdlVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdID0gaW1hZ2VPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vLyBBIG1lZ8OhbGzDs24gbMOpdsWRIHN6w6FsbMOtdMOzbGV2ZWxla2V0IGtlemVsasO8ay5cbmNvbnN0IHBhY2tpbmdTbGlwRG9uZSA9IGFzeW5jIChwYWNraW5nU2xpcHM6IFBhY2tpbmdTbGlwSW50ZXJmYWNlW10pID0+IHtcbiAgICBpZiAoIXBhY2tpbmdTbGlwcykgcmV0dXJuO1xuXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgIGxldCBwYWNraW5nU2xpcFBhcmFtczogUmVjb3JkPHN0cmluZywgUGFja2luZ1NsaXBQYXJhbXNJbnRlcmZhY2U+ID0ge307XG4gICAgZG9uZUJ1dHRvbk1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICBkb25lQnV0dG9uTWVzc2FnZVN0YXR1cy52YWx1ZSA9ICcnO1xuXG4gICAgLy8gTWVnbsOpenrDvGssIGhvZ3kgdmFuLWUgb2x5YW4gc3rDoWxsw610w7NsZXbDqWwgYW1pcmUgdGVsamVzw7xsIG1pbmRlbiBlbHbDoXJ0IGZlbHTDqXRlbC5cbiAgICAvLyBIYSBpZ2VuLCBha2tvciB0b3bDoWJiIGzDqXDDvG5rIMOpcyBiZXTDtmx0asO8ayBhIHN6w6FsbMOtdMOzbGV2ZWxlayBhZGF0YWl0LlxuICAgIGNvbnN0IGlzU3VjY2VzcyA9IHBhY2tpbmdTbGlwcy5zb21lKHBhY2tpbmdTbGlwID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtcy5sZW5ndGggfHxcbiAgICAgICAgICAgICFyZWNpcGllbnQudmFsdWUgfHxcbiAgICAgICAgICAgICghT2JqZWN0LmtleXMoZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uc2lnbikubGVuZ3RoICYmXG4gICAgICAgICAgICAhZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uZmlsZXMubGVuZ3RoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcblxuICAgIC8vIEhhIG5lbSwgYWtrb3IgYSBtZWdmZWxlbMWRIHN6w6FsbMOtdMOzbGV2w6lsbsOpbCBoaWJhw7x6ZW5ldGVrZXQgZG9idW5rIGFtaWtvciB2YWxhbWVseWlrIGFkYXQgaGnDoW55emlrLlxuICAgIGlmICghaXNTdWNjZXNzKSB7XG4gICAgICAgIGxldCBmaWx0ZXJlZFBhY2tpbmdTbGlwcyA9IHBhY2tpbmdTbGlwcy5maWx0ZXIoXG4gICAgICAgICAgICBwYWNraW5nU2xpcCA9PiBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5jaGVja2VkSXRlbXMubGVuZ3RoID4gMFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChmaWx0ZXJlZFBhY2tpbmdTbGlwcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGZpbHRlcmVkUGFja2luZ1NsaXBzID0gcGFja2luZ1NsaXBzO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBwYWNraW5nU2xpcCBvZiBmaWx0ZXJlZFBhY2tpbmdTbGlwcykge1xuICAgICAgICAgICAgaWYgKCFmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5jaGVja2VkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgdG9hc3RTdG9yZS5hZGRUb2FzdCh7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRyYW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BsZWFzZV9zZWxlY3RfYXRfbGVhc3Rfb25lX2l0ZW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIGl0ZW0hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwYWNraW5nX3NsaXAnXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcmVjaXBpZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgdG9hc3RTdG9yZS5hZGRUb2FzdCh7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRyYW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BsZWFzZV9lbnRlcl90aGVfcmVjaWVudF9uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgZW50ZXIgdGhlIHJlY2lwaWVudCBuYW1lIScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiAnbWFyc28taWNvbi1ub3RpZmljYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnNpZ24pLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICFmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5maWxlcy5sZW5ndGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHRvYXN0U3RvcmUuYWRkVG9hc3Qoe1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB0cmFucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdwbGVhc2Vfc2VsZWN0X2F0X2xlYXN0X29uZV9maWxlX2Zvcl91cGxvYWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIGZpbGUgZm9yIHVwbG9hZCEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BhY2tpbmdfc2xpcCdcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ21hcnNvLWljb24tbm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgZG9uZUJ1dHRvbk1lc3NhZ2VTdGF0dXMudmFsdWUgPSAnZXJyb3InO1xuICAgICAgICAgICAgICAgIGRvbmVCdXR0b25NZXNzYWdlLnZhbHVlICs9IHRyYW5zKFxuICAgICAgICAgICAgICAgICAgICAnZXJyb3Jfb25fZm9ybV9zZWVfdGhlX2FsZXJ0X21lc3NhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAnRXJyb3Igb24gZm9ybSwgc2VlIHRoZSBhbGVydCBtZXNzYWdlIScsXG4gICAgICAgICAgICAgICAgICAgICdwYWNraW5nX3NsaXAnXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkb25lQnV0dG9uTWVzc2FnZVN0YXR1cy52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBkb25lQnV0dG9uTWVzc2FnZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH0sIDMwMDApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRhdG9rIGJldMO2bHTDqXNlLlxuICAgIGZvciAoY29uc3QgcGFja2luZ1NsaXAgb2YgcGFja2luZ1NsaXBzKSB7XG4gICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtcy5mb3JFYWNoKGNoZWNrZWRJdGVtSWQgPT4ge1xuICAgICAgICAgICAgcGFja2luZ1NsaXAuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gY2hlY2tlZEl0ZW1JZCkge1xuICAgICAgICAgICAgICAgICAgICBwYWNraW5nU2xpcFBhcmFtc1twYWNraW5nU2xpcC5pZF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlczogZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uZmlsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaWduOiBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5zaWduLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBpZW50OiBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5yZWNpcGllbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNoaXBtZW50U3RvcmUuYXBpUGFja2luZ1NsaXBXYXJlaG91c2VEb25lKHJvdXRlciwgcGFja2luZ1NsaXBQYXJhbXMpO1xuICAgICAgICBhd2FpdCBnZXRTdG9wUG9pbnRzKCk7XG4gICAgICAgIHJlc2V0U2lnbmF0dXJlc0FuZEZpbGVzKCk7XG5cbiAgICAgICAgLy8gRWxsZW7FkXJpenrDvGssIGhvZ3kgdmFuLWUgbcOpZyBvbHlhbiB0w6l0ZWwsIGFtaSBPTl9UUlVDSyDDoWxsYXBvdGJhbiB2YW4uXG4gICAgICAgIGNvbnN0IHNoaXBtZW50RG9uZSA9ICFzaGlwbWVudFN0b3JlLnN0b3BQb2ludHMuc29tZShzdG9wUG9pbnQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrUGFja2luZ1NsaXBJdGVtc1N0b3JhZ2VTdGF0dXMoc3RvcFBvaW50LnBhY2tpbmdTbGlwcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEhhIG5pbmNzIG3DoXIgT05fVFJVQ0sgc3TDoXR1c3rDuiB0w6l0ZWwsIGFra29yIGxlesOhcmp1ayBhIHN6w6FsbMOtdMOhc3QuXG4gICAgICAgIGlmIChzaGlwbWVudERvbmUpIHtcbiAgICAgICAgICAgIGRlbGl2ZXJ5RmluaXNoZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNob3dTdG9wUG9pbnQodHJ1ZSk7XG5cbiAgICAgICAgLy8gS8O2dmV0a2V6xZEgc3rDoWxsw610w7NsZXbDqWwgY3NvcG9ydCBsZW55aXTDoXNhLlxuICAgICAgICBpZiAoZ3JvdXBlZFBhY2tpbmdTbGlwcy52YWx1ZSAmJiBPYmplY3Qua2V5cyhncm91cGVkUGFja2luZ1NsaXBzLnZhbHVlKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwTmFtZSBvZiBPYmplY3Qua2V5cyhncm91cGVkUGFja2luZ1NsaXBzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGVja1BhY2tpbmdTbGlwSXRlbXNTdG9yYWdlU3RhdHVzKGdyb3VwZWRQYWNraW5nU2xpcHMudmFsdWVbZ3JvdXBOYW1lXSkgJiZcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lID09PSBvcGVuZWRHcm91cC52YWx1ZVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoZWNrUGFja2luZ1NsaXBJdGVtc1N0b3JhZ2VTdGF0dXMoZ3JvdXBlZFBhY2tpbmdTbGlwcy52YWx1ZVtncm91cE5hbWVdKSkge1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGVHcm91cChncm91cE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRyYW5zKFxuICAgICAgICAgICAgICAgICdwYWNraW5nX3NsaXBfaXNfbW9kaWZpZWQnLFxuICAgICAgICAgICAgICAgICdQYWNraW5nIHNsaXAgaXMgbW9kaWZpZWQuJyxcbiAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICB0eXBlOiAnc3VjY2VzcydcbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdG9hc3RTdG9yZS5hZGRUb2FzdCh7XG4gICAgICAgICAgICBtZXNzYWdlOiB0cmFucyhcbiAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwX21vZGlmeV9mYWlsZWQnLFxuICAgICAgICAgICAgICAgICdQYWNraW5nIHNsaXAgbW9kaWZ5IGZhaWxlZCEnLFxuICAgICAgICAgICAgICAgICdwYWNraW5nX3NsaXAnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaWNvbjogJ21hcnNvLWljb24tbm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInXG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbi8vIEEgcGFyYW3DqXRlcmJlbiBrYXBvdHQgc3rDoWxsw610w7NsZXZlbGVraGV6IHRhcnRvesOzIHTDqXRlbGVrIGVsbGVuxZFyesOpc2U6IHZhbi1lIGvDtnp0w7xrIHbDoXJha296w7Mgw6FsbGFwb3RiYW4gbMOpdsWRIHTDqXRlbC5cbmNvbnN0IGNoZWNrUGFja2luZ1NsaXBJdGVtc1N0b3JhZ2VTdGF0dXMgPSAocGFja2luZ1NsaXBzOiBQYWNraW5nU2xpcEludGVyZmFjZVtdKSA9PiB7XG4gICAgaWYgKCFwYWNraW5nU2xpcHMpIHJldHVybjtcblxuICAgIHJldHVybiBwYWNraW5nU2xpcHMuc29tZShwYWNraW5nU2xpcCA9PiB7XG4gICAgICAgIHJldHVybiBwYWNraW5nU2xpcC5pdGVtcy5zb21lKGl0ZW0gPT4gaXRlbS5zdG9yYWdlU3RhdHVzID09PSBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzLk9OX1RSVUNLKTtcbiAgICB9KTtcbn07XG5cbi8vIFTDqXRlbGVrIG3Ds2Rvc8OtdMOhc2EgZXNldMOpbiB2aXNzemHDoWxsw610anVrIGF6IGFsw6HDrXLDoXMgw6lzIGbDoWpsIHTDtm1iw7ZrZXQuXG5jb25zdCByZXNldFNpZ25hdHVyZXNBbmRGaWxlcyA9ICgpID0+IHtcbiAgICBpZiAoIWFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZSkgcmV0dXJuO1xuXG4gICAgc2lnbmF0dXJlcy52YWx1ZSA9IHt9O1xuICAgIGZpbGVzLnZhbHVlLnNwbGljZSgwLCBmaWxlcy52YWx1ZS5sZW5ndGgpO1xuXG4gICAgYWN0aXZlUGFja2luZ1NsaXBzLnZhbHVlLmZvckVhY2goKHBhY2tpbmdTbGlwOiBQYWNraW5nU2xpcEludGVyZmFjZSkgPT4ge1xuICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5zaWduID0ge307XG4gICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmZpbGVzID0gW107XG4gICAgfSk7XG5cbiAgICBpbnB1dEtleS52YWx1ZSsrO1xufTtcblxuLy8gSGEgdmFuIGEgcGFyYW3DqXRlcmJlbiBrYXBvdHQgc3rDoWxsw610w7NsZXZlbGVrZW4gbWVnamVneXrDqXMsIGFra29yIGF6b2thdCDDtnNzemVmxbF6esO8ayBlZ3liZSDDqXMgw7pneSBqZWxlbmVuw610asO8ayBtZWcuXG5jb25zdCBnZXROb3RpY2VzID0gKHBhY2tpbmdTbGlwczogUGFja2luZ1NsaXBJbnRlcmZhY2VbXSkgPT4ge1xuICAgIGlmICghcGFja2luZ1NsaXBzKSByZXR1cm47XG5cbiAgICByZXR1cm4gcGFja2luZ1NsaXBzLnJlZHVjZSgoYWNjdW11bGF0ZWROb3RpY2VzLCBwYWNraW5nU2xpcCkgPT4ge1xuICAgICAgICBpZiAocGFja2luZ1NsaXAubm90aWNlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0ZWROb3RpY2VzICsgKGFjY3VtdWxhdGVkTm90aWNlcyA/ICdcXG4nIDogJycpICsgcGFja2luZ1NsaXAubm90aWNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkTm90aWNlcztcbiAgICB9LCAnJyk7XG59O1xuXG4vLyBWZXbFkSBiZcOhbGzDrXTDoXNhIGEga2l2w6FsYXN6dG90dCB0w6l0ZWwgYWxhcGrDoW4uXG5jb25zdCBzZXRSZWNpcGllbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhY3RpdmVQYWNraW5nU2xpcHMudmFsdWUpIHJldHVybjtcblxuICAgIGFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZS5mb3JFYWNoKChwYWNraW5nU2xpcDogUGFja2luZ1NsaXBJbnRlcmZhY2UpID0+IHtcbiAgICAgICAgaWYgKCFmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXSB8fCAhZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLmNoZWNrZWRJdGVtcy5mb3JFYWNoKGNoZWNrZWRJdGVtSWQgPT4ge1xuICAgICAgICAgICAgcGFja2luZ1NsaXAuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gY2hlY2tlZEl0ZW1JZCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5yZWNpcGllbnQgPSByZWNpcGllbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuLy8gRWzFkcOhbGzDrXRqdWsgYSBtZWfDoWxsw7MgbGlzdMOhdCwgbWVseWV0IGF6IHV0b2xzw7Mgb2xkYWxvbiBqZWxuw610w7xuayBtZWcuXG5jb25zdCBzdG9wUG9pbnRzU3VtbWFyeSA9ICgpOiBhbnlbXSA9PiB7XG4gICAgbGV0IHJlc3VsdHM6IHtcbiAgICAgICAgc2VxdWVuY2VOdW1iZXI6IG51bWJlcixcbiAgICAgICAgaWQ6IHN0cmluZyxcbiAgICAgICAgaXNEb25lOiBib29sZWFuLFxuICAgICAgICBvblRydWNrSXRlbXM6IG51bWJlclxuICAgIH1bXSA9IFtdO1xuXG4gICAgc2hpcG1lbnRTdG9yZS5vcmRlcmVkU3RvcFBvaW50cy5mb3JFYWNoKHN0b3BQb2ludCA9PiB7XG4gICAgICAgIGxldCByZXN1bHQgPSB7XG4gICAgICAgICAgICBzZXF1ZW5jZU51bWJlcjogc3RvcFBvaW50LnNlcXVlbmNlTnVtYmVyLFxuICAgICAgICAgICAgaWQ6IHN0b3BQb2ludC5kZWxpdmVyeUFkZHJlc3MsXG4gICAgICAgICAgICBpc0RvbmU6IHRydWUsXG4gICAgICAgICAgICBvblRydWNrSXRlbXM6IDBcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgZm91bmRPblRydWNrSXRlbXMgPSBmYWxzZTtcblxuICAgICAgICBzdG9wUG9pbnQucGFja2luZ1NsaXBzLmZvckVhY2gocGFja2luZ1NsaXAgPT4ge1xuICAgICAgICAgICAgbGV0IG9uVHJ1Y2tJdGVtcyA9IHBhY2tpbmdTbGlwLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzLk9OX1RSVUNLID09IGl0ZW0uc3RvcmFnZVN0YXR1cztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBIYSB0YWzDoWx1bmsgT05fVFJVQ0sgc3TDoXR1c3rDuiBpdGVtZXQsIG7DtnZlbGrDvGsgYSBzesOhbWzDoWzDs3QuXG4gICAgICAgICAgICBpZiAob25UcnVja0l0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQub25UcnVja0l0ZW1zICs9IG9uVHJ1Y2tJdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZm91bmRPblRydWNrSXRlbXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBIYSB2YW4gT05fVFJVQ0sgc3TDoXR1c3rDuiBpdGVtLCBob3p6w6FhZGp1ayBhIGxpc3TDoWhvei5cbiAgICAgICAgaWYgKGZvdW5kT25UcnVja0l0ZW1zKSB7XG4gICAgICAgICAgICAvLyBDc2FrIGFra29yIGFkamEgaG96esOhLCBoYSBtw6lnIG5pbmNzIGJlbm5lLlxuICAgICAgICAgICAgaWYgKCFyZXN1bHRzLnNvbWUociA9PiByLmlkID09PSByZXN1bHQuaWQgJiYgci5zZXF1ZW5jZU51bWJlciA9PT0gcmVzdWx0LnNlcXVlbmNlTnVtYmVyKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5pc0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbn07XG5cblxuLy8gSGEgbcOhciBuaW5jcyBPTl9UUlVDSyBzdMOhdHVzesO6IHN6w6FsbMOtdMOzbGV2w6lsKHZhZ3lpcyB0w6l0ZWwpLCBha2tvciB0b3bDoWJibMOpcMO8bmsgYSBmxZFvbGRhbHJhLlxuLy8gRWd5w6liIGVzZXRiZW4gaGliw6F0IGRvYnVuay5cbmNvbnN0IGRlbGl2ZXJ5RmluaXNoZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFzaGlwbWVudFN0b3JlLm9yZGVyZWRTdG9wUG9pbnRzKSByZXR1cm47XG5cbiAgICBmaW5pc2hCdXR0b25NZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgZmluaXNoQnV0dG9uTWVzc2FnZVN0YXR1cy52YWx1ZSA9ICcnO1xuXG4gICAgZm9yIChjb25zdCBzdG9wUG9pbnQgb2Ygc2hpcG1lbnRTdG9yZS5vcmRlcmVkU3RvcFBvaW50cykge1xuICAgICAgICBpZiAoY2hlY2tQYWNraW5nU2xpcEl0ZW1zU3RvcmFnZVN0YXR1cyhzdG9wUG9pbnQucGFja2luZ1NsaXBzKSkge1xuICAgICAgICAgICAgZmluaXNoQnV0dG9uTWVzc2FnZVN0YXR1cy52YWx1ZSA9ICdlcnJvcic7XG4gICAgICAgICAgICBmaW5pc2hCdXR0b25NZXNzYWdlLnZhbHVlID0gdHJhbnMoXG4gICAgICAgICAgICAgICAgJ2Vycm9yX3NvbWVfcGFja2FnZV9pc19zdGlsbF9vbl90cnVjaycsXG4gICAgICAgICAgICAgICAgJ0Vycm9yLCBzb21lIHBhY2thZ2UgaXMgc3RpbGwgb24gdHJ1Y2shJyxcbiAgICAgICAgICAgICAgICAncGFja2luZ19zbGlwJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgZmluaXNoQnV0dG9uTWVzc2FnZVN0YXR1cy52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbmlzaEJ1dHRvbk1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH0sIDMwMDApO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICBpZiAoIXNoaXBtZW50U3RvcmUuc2hpcG1lbnQuaWQpIHJldHVybjtcblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNoaXBtZW50U3RvcmUuYXBpU2hpcG1lbnREZWxpdmVyeUZpbmlzaGVkKHJvdXRlciwgc2hpcG1lbnRTdG9yZS5zaGlwbWVudC5pZCk7XG5cbiAgICAgICAgbGV0IHNoaXBtZW50ID0gcmVzcG9uc2UgYXMgU2hpcG1lbnRJbnRlcmZhY2U7XG5cbiAgICAgICAgc2hpcG1lbnRTdG9yZS5yZXBsYWNlU2hpcG1lbnQoc2hpcG1lbnQpO1xuXG4gICAgICAgIHRvYXN0U3RvcmUuYWRkVG9hc3Qoe1xuICAgICAgICAgICAgbWVzc2FnZTogdHJhbnMoXG4gICAgICAgICAgICAgICAgJ3NoaXBtZW50X2RlbGl2ZXJ5X2VuZGVkJyxcbiAgICAgICAgICAgICAgICAnU2hpcG1lbnQgZGVsaXZlcnkgZW5kZWQuJyxcbiAgICAgICAgICAgICAgICAnc2hpcG1lbnQnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaWNvbjogJ21hcnNvLWljb24tbm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIHRpbWVyOiAxNVxuICAgICAgICB9KTtcblxuICAgICAgICByb3V0ZXIucmVwbGFjZSh7IG5hbWU6ICdob21lJyB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRyYW5zKFxuICAgICAgICAgICAgICAgICdzaGlwbWVudF9zYXZlX2ZhaWxlZCcsXG4gICAgICAgICAgICAgICAgJ1NoaXBtZW50IHNhdmUgZmFpbGVkIScsXG4gICAgICAgICAgICAgICAgJ3NoaXBtZW50J1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJ1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG4vLyBGw6FqbG9rIMOpcyBhbMOhw61yw6Fzb2sga2V6ZWzDqXNlOiBiZcOhbGzDrXTDoXMsIGdvbWIga2kgw6lzIGJlIGthcGNzb2zDoXMuXG53YXRjaChbZmlsZXMsIHNpZ25hdHVyZXNdLCAoKSA9PiB7XG4gICAgaWYgKCFhY3RpdmVQYWNraW5nU2xpcHMudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IGFsbENoZWNrZWRJdGVtc0VtcHR5ID0gYWN0aXZlUGFja2luZ1NsaXBzLnZhbHVlLmV2ZXJ5KHBhY2tpbmdTbGlwID0+IHtcbiAgICAgICAgcmV0dXJuICFmb3JtVmFyaWFibGVzLnZhbHVlW3BhY2tpbmdTbGlwLmlkXS5jaGVja2VkSXRlbXMubGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgLy8gSGEgbmluY3MgZWd5ZXRsZW4gdMOpdGVsIHNlbSBraXbDoWxhc3p0dmEgYXogYWRvdHQgc3rDoWxsw610w7NsZXZlbGVraGV6IHRhcnRvesOzYW4sIGFra29yIG1pbmRrw6l0IGdvbWJvdCBsZXRpbHRqdWsuXG4gICAgaWYgKGFsbENoZWNrZWRJdGVtc0VtcHR5KSB7XG4gICAgICAgIGlzUGhvdG9CdXR0b25EaXNhYmxlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIGlzU2lnbkJ1dHRvbkRpc2FibGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEhhIG5pbmNzIGFsw6HDrXLDoXMgdmFneSBmw6FqbCBmZWx0w7ZsdHZlLCBha2tvciBhbGFwaGVseXpldGJlIMOhbGzDrXRqdWsgYSBnb21ib2thdC5cbiAgICAvLyBJbGxldHZlIGF6IGFkb3R0IHN6w6FsbMOtdMOzbGV2ZWxuZWsgaXMgYmXDoWxsw610anVrIGEgbWVnZmVsZWzFkSDDqXJ0w6lrZWtldC5cbiAgICBpc1Bob3RvQnV0dG9uRGlzYWJsZWQudmFsdWUgPSBmaWxlcy52YWx1ZS5sZW5ndGggPiAwO1xuICAgIGlzU2lnbkJ1dHRvbkRpc2FibGVkLnZhbHVlID0gT2JqZWN0LmtleXMoc2lnbmF0dXJlcy52YWx1ZSkubGVuZ3RoID4gMDtcblxuICAgIGFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZS5mb3JFYWNoKChwYWNraW5nU2xpcDogUGFja2luZ1NsaXBJbnRlcmZhY2UpID0+IHtcbiAgICAgICAgZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uZmlsZXMgPSBmaWxlcy52YWx1ZSB8fCBbXTtcbiAgICAgICAgZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uc2lnbiA9IHNpZ25hdHVyZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdIHx8IHt9O1xuICAgIH0pO1xufSwgeyBkZWVwOiB0cnVlIH0pO1xuXG4vLyBBIHTDqXRlbGVrIGtpdsOhbGFzenTDoXNhIHNvcsOhbiBmcmlzc8OtdGrDvGsgYSBzesOhbGzDrXTDs2xldsOpbCBhZGF0b2thdC5cbndhdGNoKGZvcm1WYXJpYWJsZXMudmFsdWUsICgpID0+IHtcbiAgICBpZiAoIWFjdGl2ZVBhY2tpbmdTbGlwcy52YWx1ZSkgcmV0dXJuO1xuXG4gICAgYWN0aXZlUGFja2luZ1NsaXBzLnZhbHVlLmZvckVhY2gocGFja2luZ1NsaXAgPT4ge1xuICAgICAgICBpZiAoZm9ybVZhcmlhYmxlcy52YWx1ZVtwYWNraW5nU2xpcC5pZF0uY2hlY2tlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gSGEgdmFuIGtpdsOhbGFzenR2YSB0w6l0ZWwsIGFra29yIGJlw6FsbMOtdGp1ayBheiBhZGF0b2thdC5cbiAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnJlY2lwaWVudCA9IHJlY2lwaWVudC52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEhhIG5pbmNzIG3DoXIga2l2w6FsYXN6dHZhIHTDqXRlbCwgYWtrb3Igdmlzc3phw6FsbMOtdGp1ayBheiBhZGF0b2thdCBheiBlcmVkZXRpIMOhbGxhcG90dWtyYS5cbiAgICAgICAgICAgIGZvcm1WYXJpYWJsZXMudmFsdWVbcGFja2luZ1NsaXAuaWRdLnJlY2lwaWVudCA9ICcnO1xuICAgICAgICB9XG4gICAgfSk7XG59KTtcblxuLy8gSGFzem7DoWx0IHTDtm1iw7ZrIMOpcyBvYmplY3RlayB2aXNzemHDoWxsw610w6FzYS5cbm9uVW5tb3VudGVkKCgpID0+IHtcbiAgICBzaGlwbWVudFN0b3JlLnN0b3BQb2ludHMgPSBbXTtcbiAgICBmb3JtVmFyaWFibGVzLnZhbHVlID0ge307XG4gICAgc2lnbmF0dXJlcy52YWx1ZSA9IHt9O1xuICAgIGZpbGVzLnZhbHVlID0gW107XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmN1c3RvbS1jaGVja2JveCB7XG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIH4gLmNoZWNrZWQsIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkIH4gLm5vdC1jaGVja2VkIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCB+IC5jaGVja2VkLCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0gfiAubm90LWNoZWNrZWQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxufVxuXG4uZmFkZS1lbnRlci1hY3RpdmUsIC5mYWRlLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG4uZmFkZS1lbnRlciwgLmZhZGUtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gICAgPCEtLSBSYWtvZMOhc2kgbsOpemV0LiAtLT5cbiAgICA8ZGl2IHYtaWY9XCJzZWN1cml0eVN0b3JlLmF1dGhlbnRpY2F0ZWRVc2VyICE9PSBudWxsXCIgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC04IHByaW50OmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB4LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIDxyb3V0ZXItbGlua1xuICAgICAgICAgICAgICAgICAgICB2LWlmPVwic2VjdXJpdHlTdG9yZS5hdXRoZW50aWNhdGVkVXNlci5oYXNQZXJtaXNzaW9uKFVzZXJQZXJtaXNzaW9uRW51bS5MT0dJU1RJQ19WSUVXKVwiXG4gICAgICAgICAgICAgICAgICAgIDp0bz1cInsgbmFtZTogJ2hvbWUnIH1cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcm91bmRlZCBidG4tc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zKCdiYWNrJywgJ0JhY2snLCAnc2hpcG1lbnQnKSB9fVxuICAgICAgICAgICAgICAgIDwvcm91dGVyLWxpbms+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0cmFucygnbG9hZGluZycsICdMb2FkaW5nJywgJ3NoaXBtZW50JykgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJzZWN1cml0eVN0b3JlLmF1dGhlbnRpY2F0ZWRVc2VyLmhhc1Blcm1pc3Npb24oVXNlclBlcm1pc3Npb25FbnVtLkxPR0lTVElDX1ZJRVcpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXJvdW5kZWQgYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJsb2FkQWxsSXRlbXNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgdHJhbnMoXCJsb2FkX2FsbF9pdGVtc1wiLCBcIkxvYWQgYWxsIGl0ZW1zXCIsIFwic2hpcG1lbnRcIikgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJzZWN1cml0eVN0b3JlLmF1dGhlbnRpY2F0ZWRVc2VyLmhhc1Blcm1pc3Npb24oVXNlclBlcm1pc3Npb25FbnVtLkxPR0lTVElDX1ZJRVcpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXJvdW5kZWQgYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJwcmludFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyB0cmFucyhcInByaW50XCIsIFwiUHJpbnRcIiwgXCJzaGlwbWVudFwiKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gU3rDoWxsw610w7NsZXZlbGVrIMOpcyBob3p6w6FqdWsgdGFydG96w7MgdMOpdGVsZWsgbWVnamVsZW7DrXTDqXNlLi0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB2LWlmPVwic2hpcG1lbnRTdG9yZS5zb3J0ZWRQYWNraW5nU2xpcHMubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICB2LWZvcj1cInBhY2tpbmdTbGlwIGluIHNoaXBtZW50U3RvcmUuc29ydGVkUGFja2luZ1NsaXBzXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwicGFja2luZ1NsaXAuaWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctd2hpdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTIgY3Vyc29yLXBvaW50ZXIgdGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cImFsbEl0ZW1zV2FpdGluZyhwYWNraW5nU2xpcCkudmFsdWUgPyAnYmctZ3JlZW4nIDogJ2JnLWdyYXktZGFya2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInRvZ2dsZVBhY2tpbmdTbGlwKHBhY2tpbmdTbGlwLmlkKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFkb3R0IHN6w6FsbMOtdMOzbGV2w6lsIGluZm9ybcOhY2nDs2koc3rDoWxsw610w7NsZXbDqWxzesOhbSwgdmV2xZFuw6l2LCBjw61tKS4tLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbGc6ZmxleC1yb3cgdGV4dC14bCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBmb250LWJvbGQgcHgtNCBweS0yIHRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cImFsbEl0ZW1zV2FpdGluZyhwYWNraW5nU2xpcCkudmFsdWUgPyAnYmctZ3JlZW4nIDogJ2JnLWdyYXktZGFya2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBwYWNraW5nU2xpcC5pZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgbGc6aGlkZGVuIHRleHQtMnhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiZXhwYW5kZWRQYWNraW5nU2xpcHMuaW5jbHVkZXMocGFja2luZ1NsaXAuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdtYXJzby1pY29uLWNoZXZyb24tdXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdtYXJzby1pY29uLWNoZXZyb24tZG93bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgbWQ6Z2FwLTQgbGc6Z2FwLTggcHgtNCBweS0yIGJnLWdyYXktZGFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiYWxsSXRlbXNXYWl0aW5nKHBhY2tpbmdTbGlwKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiZy1ncmVlbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnbGc6YmctZ3JheS1kYXJrZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IHBhY2tpbmdTbGlwLmRlbGl2ZXJ5TmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtwYWNraW5nU2xpcC5kZWxpdmVyeVppcENvZGV9ICR7cGFja2luZ1NsaXAuZGVsaXZlcnlDaXR5fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cGFja2luZ1NsaXAuZGVsaXZlcnlTdHJlZXR9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW4gbGc6YmxvY2sgcHgtNCB0ZXh0LTJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsSXRlbXNXYWl0aW5nKHBhY2tpbmdTbGlwKS52YWx1ZSA/ICdiZy1ncmVlbicgOiAnYmctZ3JheS1kYXJrZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkUGFja2luZ1NsaXBzLmluY2x1ZGVzKHBhY2tpbmdTbGlwLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdtYXJzby1pY29uLWNoZXZyb24tdXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ21hcnNvLWljb24tY2hldnJvbi1kb3duJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHRyYW5zaXRpb24gbmFtZT1cImZhZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiZXhwYW5kZWRQYWNraW5nU2xpcHMuaW5jbHVkZXMocGFja2luZ1NsaXAuaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJwYWNraW5nU2xpcC5pdGVtcy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtZm9yPVwiaXRlbSBpbiBwYWNraW5nU2xpcC5pdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDprZXk9XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItYi0yIGJvcmRlci1ncmF5LWRhcmsgbGFzdDpib3JkZXItYi0wIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiYWxsSXRlbXNXYWl0aW5nKHBhY2tpbmdTbGlwKS52YWx1ZSA/ICdmaXJzdDpib3JkZXItdC0yIGJvcmRlci1ncmF5LWRhcmtlcicgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFN6w6FsbMOtdMOzbGV2ZWxlbiBsw6l2xZEgdMOpdGVsZWsgbGlzdMOhesOhc2EodGVybcOpa27DqXYsIGRhcmFic3rDoW0sIHN0w6F0dXN6KS4tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGxnOmZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBsZzppdGVtcy1jZW50ZXIgZ2FwLTIgcHgtNCBweS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgJ2JnLWdyZWVuLWxpZ2h0ZXInOiBjaGVja2VkSXRlbXNbaXRlbS5pZF0gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJpdGVtQ2hlY2soaXRlbS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGl0ZW0ucHJvZHVjdE5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtOCBzZWxmLWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGQgd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYCR7aXRlbS5xdWFudGl0eX0gJHtpdGVtLnNhbGVzVW5pdH1gIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzLklOX1dBUkVIT1VTRSA9PSBpdGVtLnN0b3JhZ2VTdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiUGFja2luZ1NsaXBJdGVtU3RvcmFnZVN0YXR1c0RhdGEuY29sb3IoaXRlbS5zdG9yYWdlU3RhdHVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC0yeGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzRGF0YS5pY29uKGl0ZW0uc3RvcmFnZVN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiUGFja2luZ1NsaXBJdGVtU3RvcmFnZVN0YXR1cy5PTl9UUlVDSyA9PSBpdGVtLnN0b3JhZ2VTdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiUGFja2luZ1NsaXBJdGVtU3RvcmFnZVN0YXR1c0RhdGEuY29sb3IoaXRlbS5zdG9yYWdlU3RhdHVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC0yeGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzRGF0YS5pY29uKGl0ZW0uc3RvcmFnZVN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFN6w6FsbMOtdMOzbGV2ZWxlbiBsw6l2xZEgdMOpdGVsIHN0w6F0dXN6w6FuYWsgw6FsbMOtdMOhc2EuIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWJsb2NrIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImNoZWNrZWRJdGVtc1tpdGVtLmlkXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlbiBwZWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2suc3RvcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ3LTEwIGgtMTAgdGV4dC0yeGwgdGV4dC1ncmF5LWRhcmsgbWFyc28taWNvbi1zcXVhcmUtb1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCB0ZXh0LTJ4bCB0ZXh0LWdyZWVuIG1hcnNvLWljb24tcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHktMCBwZWVyLWNoZWNrZWQ6b3BhY2l0eS0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC14bCBmb250LWJvbGQgdGV4dC1yZWQgcHgtNCBweS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0cmFucygnbm9faXRlbV9mb3VuZCcsICdObyBpdGVtIGZvdW5kIScsICdzaGlwbWVudCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90cmFuc2l0aW9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtcmVkIHB4LTRcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0cmFucygnbm9fcGFja2luZ19zbGlwX2ZvdW5kJywgJ05vIHBhY2tpbmcgc2xpcCBmb3VuZCEnLCAnc2hpcG1lbnQnKSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFJha29kw6FzIGJlZmVqZXrDqXNlLi0tPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB2LWlmPVwic2hpcG1lbnRTdG9yZS5zb3J0ZWRQYWNraW5nU2xpcHMubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzICF0ZXh0LXhsIGgtMTIgc2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZmluaXNoTG9hZGluZ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHRyYW5zKCdmaW5pc2hfbG9hYWRpbmcnLCAnRmluaXNoIGxvYWRpbmcnLCAnc2hpcG1lbnQnKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTnlvbXRhdMOhc2kgbsOpemV0IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJoaWRkZW4gcHJpbnQ6YmxvY2tcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtM3hsIHRleHQtY2VudGVyIGZvbnQtYm9sZCBwYi0zXCI+XG4gICAgICAgICAgICB7eyBgJHtzaGlwbWVudFN0b3JlLnNoaXBtZW50Lm5hbWV9IC0gJHtzaGlwbWVudFN0b3JlLnNoaXBtZW50LmlkfWB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB2LWlmPVwic2hpcG1lbnRTdG9yZS5zb3J0ZWRQYWNraW5nU2xpcHMubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICB2LWZvcj1cInBhY2tpbmdTbGlwIGluIHNoaXBtZW50U3RvcmUuc29ydGVkUGFja2luZ1NsaXBzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlci1iLTEgYm9yZGVyLWdyYXktZGFyayBsYXN0OmJvcmRlci1iLTBcIlxuICAgICAgICAgICAgICAgIDprZXk9XCJwYWNraW5nU2xpcC5pZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBnYXAtNlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBsZzpmbGV4LXJvdyB0ZXh0LVsxMnB4XSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZm9udC1ib2xkIHB4LTQgcHktMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgcGFja2luZ1NsaXAuaWQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbWQ6ZmxleC1yb3cgbWQ6Z2FwLTIgbGc6Z2FwLTQgcHgtNCBweS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3BhY2tpbmdTbGlwLmRlbGl2ZXJ5TmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cGFja2luZ1NsaXAuZGVsaXZlcnlaaXBDb2RlfSAke3BhY2tpbmdTbGlwLmRlbGl2ZXJ5Q2l0eX0sICR7cGFja2luZ1NsaXAuZGVsaXZlcnlTdHJlZXR9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInBhY2tpbmdTbGlwLml0ZW1zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICB2LWZvcj1cIml0ZW0gaW4gcGFja2luZ1NsaXAuaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBsZzpmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbGc6aXRlbXMtY2VudGVyIHB4LTQgcHktMSB0ZXh0LVsxMHB4XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBpdGVtLnByb2R1Y3ROYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC14LTQgc2VsZi1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYm9sZCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYCR7aXRlbS5xdWFudGl0eX0gJHtpdGVtLnNhbGVzVW5pdH1gIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGlubGluZS1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAndnVlLXJvdXRlcic7XG5pbXBvcnQgeyB1c2VTaGlwbWVudFN0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmVzL3NoaXBtZW50L3NoaXBtZW50U3RvcmUnO1xuaW1wb3J0IHsgdXNlVG9hc3RTdG9yZSB9IGZyb20gJy4uLy4uL3N0b3Jlcy90b2FzdC90b2FzdFN0b3JlJztcbmltcG9ydCB7IHRyYW5zIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9pMThuXCI7XG5pbXBvcnQgU2VydmVyRXJyb3IgZnJvbSAnLi4vLi4vY29tbW9uL2Vycm9yL1NlcnZlckVycm9yJztcbmltcG9ydCB7IGNvbXB1dGVkLCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCByZWYgfSBmcm9tICd2dWUnO1xuaW1wb3J0IHtcbiAgICBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzLFxuICAgIFBhY2tpbmdTbGlwSXRlbVN0b3JhZ2VTdGF0dXNEYXRhXG59IGZyb20gXCIuLi8uLi9tb2RlbHMvUGFja2luZ1NsaXBJdGVtU3RvcmFnZVN0YXR1c1wiO1xuaW1wb3J0IHsgUGFja2luZ1NsaXBJdGVtSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1BhY2tpbmdTbGlwSXRlbSc7XG5pbXBvcnQgeyBQYWNraW5nU2xpcEl0ZW1TdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvUGFja2luZ1NsaXBJdGVtU3RhdHVzJztcbmltcG9ydCB7IFNoaXBtZW50SW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NoaXBtZW50JztcbmltcG9ydCB7IFBhY2tpbmdTbGlwSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1BhY2tpbmdTbGlwJztcbmltcG9ydCB7IFVzZXJQZXJtaXNzaW9uRW51bSB9IGZyb20gJy4uLy4uL3N0b3Jlcy9wZXJtaXNzaW9uL1Blcm1pc3Npb25FbnVtJztcbmltcG9ydCB7IHVzZVNlY3VyaXR5U3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZXMvc2VjdXJpdHkvc2VjdXJpdHlTdG9yZSc7XG5cbmNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuY29uc3QgdG9hc3RTdG9yZSA9IHVzZVRvYXN0U3RvcmUoKTtcbmNvbnN0IHNoaXBtZW50U3RvcmUgPSB1c2VTaGlwbWVudFN0b3JlKCk7XG5jb25zdCBzZWN1cml0eVN0b3JlID0gdXNlU2VjdXJpdHlTdG9yZSgpO1xuY29uc3QgZXhwYW5kZWRQYWNraW5nU2xpcHMgPSByZWY8c3RyaW5nW10+KFtdKTtcbmNvbnN0IGNoZWNrZWRJdGVtcyA9IHJlZjx7IFtpdGVtSWQ6IG51bWJlcl06IGJvb2xlYW4gfT4oe30pO1xuY29uc3QgYWxsSXRlbXNXYWl0aW5nID0gKHBhY2tpbmdTbGlwOiBQYWNraW5nU2xpcEludGVyZmFjZSkgPT4gY29tcHV0ZWQoKCkgPT5cbiAgICBwYWNraW5nU2xpcC5pdGVtcy5ldmVyeShpdGVtID0+IGl0ZW0uc3RhdHVzID09PSBQYWNraW5nU2xpcEl0ZW1TdGF0dXMuV0FJVElORylcbik7XG5cbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XG4gICAgLy8gU3rDoWxsw610w7NsZXZlbGVrIGxla8OpcsOpc2UuXG4gICAgYXdhaXQgZ2V0UGFja2luZ1NsaXBzKCk7XG5cbiAgICAvLyDDlnNzemVzIHN6w6FsbMOtdMOzbGV2w6lsIGxlbnlpdMOhc2EsIHTDqXRlbGVrIG1lZ2plbGVuw610w6lzZSDDqXMgdMOpdGVsZWsgc3TDoXR1c3rDoW5hayhjaGVja2JveG9rKSBiZcOhbGzDrXTDoXNhLlxuICAgIHNldFBhY2tpbmdTbGlwc0FuZEl0ZW1zKCk7XG59KTtcblxuLy8gU3rDoWxsw610w7NsZXZlbGVrIGxla8OpcsOpc2UoRm9yZMOtdG90dCBzb3JyZW5kYmVuLCBob2d5IGEgbGVndXRvbGrDoXJhIGtpc3rDoWxsw610b3R0IGxlZ3llbiBlbHPFkW5layBmZWxwYWtvbHZhLikuXG5jb25zdCBnZXRQYWNraW5nU2xpcHMgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFzaGlwbWVudFN0b3JlLnNoaXBtZW50LmlkKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBzaGlwbWVudFN0b3JlLmdldFNvcnRlZFBhY2tpbmdTbGlwc0J5U2hpcG1lbnQocm91dGVyLCB7IHNoaXBtZW50SWQ6IHNoaXBtZW50U3RvcmUuc2hpcG1lbnQuaWQgfSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IChlcnJvciBhcyBTZXJ2ZXJFcnJvcikudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGljb246ICdtYXJzby1pY29uLW5vdGlmaWNhdGlvbicsXG4gICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuLy8gU3rDoWxsw610w7NsZXZlbGVrIMOpcyBhIGhvenrDoWp1ayB0YXJ0b3rDsyB0w6l0ZWxlayBrZXplbMOpc2UuXG5jb25zdCBzZXRQYWNraW5nU2xpcHNBbmRJdGVtcyA9ICgpID0+IHtcbiAgICAvLyBBbGFwYsOzbCBsZWd5ZW4gbGVueWl0dmEgYXogw7Zzc3plcyBzesOhbGzDrXTDs2xldsOpbCDDqXMgamVsZW7DrXRzw7xrIG1lZyBhIGhvenrDoWp1ayB0YXJ0b3rDsyB0w6l0ZWxla2V0LlxuICAgIGV4cGFuZGVkUGFja2luZ1NsaXBzLnZhbHVlID0gc2hpcG1lbnRTdG9yZS5zb3J0ZWRQYWNraW5nU2xpcHMubWFwKHBhY2tpbmdTbGlwID0+IHBhY2tpbmdTbGlwLmlkKTtcblxuICAgIC8vIFbDqWdpZ21lZ3nDvG5rIGEgdMOpdGVsZWtlbiDDqXMgYW1lbHlpayBzdG9yYWdlU3RhdHVzLWEgT05fVFJVQ0sgYW5uYWsgYSBjaGVja2JveC3DoXQgYmVwaXDDoWxqdWsuXG4gICAgc2hpcG1lbnRTdG9yZS5zb3J0ZWRQYWNraW5nU2xpcHMuZm9yRWFjaChwYWNraW5nU2xpcCA9PiB7XG4gICAgICAgIHBhY2tpbmdTbGlwLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5zdG9yYWdlU3RhdHVzID09PSBQYWNraW5nU2xpcEl0ZW1TdG9yYWdlU3RhdHVzLk9OX1RSVUNLICYmIGl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgICBjaGVja2VkSXRlbXMudmFsdWVbaXRlbS5pZF0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNoZWNrUGFja2luZ1NsaXBzSXRlbXNTdGF0dXMoKTtcbn07XG5cbi8vIFN6w6FsbMOtdMOzbGV2ZWxlayBsZSDDqXMgZmVsesOhcsOhc2EuXG5jb25zdCB0b2dnbGVQYWNraW5nU2xpcCA9IChpZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFpZCkgcmV0dXJuO1xuXG4gICAgaWYgKGV4cGFuZGVkUGFja2luZ1NsaXBzLnZhbHVlLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICBleHBhbmRlZFBhY2tpbmdTbGlwcy52YWx1ZSA9IGV4cGFuZGVkUGFja2luZ1NsaXBzLnZhbHVlLmZpbHRlcihwYWNraW5nU2xpcElkID0+IHBhY2tpbmdTbGlwSWQgIT09IGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBleHBhbmRlZFBhY2tpbmdTbGlwcy52YWx1ZS5wdXNoKGlkKTtcbiAgICB9XG59O1xuXG4vLyBUw6l0ZWwga2l2w6FsYXN6dMOhc2EvcGlww6Fsw6FzYS5cbmNvbnN0IGl0ZW1DaGVjayA9IGFzeW5jIChpZDogbnVtYmVyIHwgbnVtYmVyW10gfCB1bmRlZmluZWQpID0+IHtcbiAgICBpZiAoIWlkKSByZXR1cm47XG5cbiAgICBjb25zdCBpZHMgPSBBcnJheS5pc0FycmF5KGlkKSA/IGlkIDogW2lkXTtcblxuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGlkcy5ldmVyeShpdGVtSWQgPT4gIWNoZWNrZWRJdGVtcy52YWx1ZVtpdGVtSWRdKTtcbiAgICBsZXQgcmVzcG9uc2VJdGVtczogUGFja2luZ1NsaXBJdGVtSW50ZXJmYWNlW107XG5cbiAgICAvLyBIYSBhIHTDqXRlbCBjaGVja2JveC3DoXQgYmVwaXDDoWxqdWssIGFra29yIGEgdMOpdGVsIGZlbHJha29kw6FzcmEga2Vyw7xsLlxuICAgIC8vIHN0YXR1cyAtPiBXQUlUSU5HXG4gICAgLy8gc3RvcmFnZVN0YXR1cyAtPiBPTl9UUlVDS1xuICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3BvbnNlSXRlbXMgPSAoYXdhaXQgc2hpcG1lbnRTdG9yZVxuICAgICAgICAgICAgICAgIC5sb2FkaW5nUGFja2luZ1NsaXBJdGVtKHJvdXRlciwgeyBpZDogaWRzIH0pKSBhcyBQYWNraW5nU2xpcEl0ZW1JbnRlcmZhY2VbXTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRvYXN0U3RvcmUuYWRkVG9hc3Qoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoZXJyb3IgYXMgU2VydmVyRXJyb3IpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgdHlwZTogXCJkYW5nZXJcIixcbiAgICAgICAgICAgICAgICBzaG93SWNvbjogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAvLyBFbGxlbmtlesWRIGVzZXRiZW4sIGFtaWtvciBraXZlc3N6w7xrIGEgcGlww6F0LlxuICAgIC8vIHN0YXR1cyAtPiBXQUlUX0ZPUl9MT0FEXG4gICAgLy8gc3RvcmFnZVN0YXR1cyAtPiBJTl9XQVJFSE9VU0VcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIWNvbmZpcm0odHJhbnMoJ3VubG9hZGluZ19pdGVtX2NvbmZpcm0nLCBcIkFyZSB5b3Ugc3VyZT9cIiwgJ3NoaXBtZW50JykpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzcG9uc2VJdGVtcyA9IChhd2FpdCBzaGlwbWVudFN0b3JlXG4gICAgICAgICAgICAgICAgLnVubG9hZGluZ1BhY2tpbmdTbGlwSXRlbShyb3V0ZXIsIHsgaWQ6IGlkcyB9KSkgYXMgUGFja2luZ1NsaXBJdGVtSW50ZXJmYWNlW107XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0b2FzdFN0b3JlLmFkZFRvYXN0KHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKGVycm9yIGFzIFNlcnZlckVycm9yKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZGFuZ2VyXCIsXG4gICAgICAgICAgICAgICAgc2hvd0ljb246IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVsOpZ2lnbWVnecO8bmsgYSBzesOhbGzDrXTDs2xldmVsZWsgdMOpdGVsZWluIMOpcyBhaG9sIGVneWV6aWsgYSB0w6l0ZWwgYSByZXNwb25zZS1iYW4gw6lya2V6xZF2ZWwsXG4gICAgLy8gYWtrb3IgZnJpc3PDrXRqw7xrIGF6dCBhIHTDqXRlbHQuXG4gICAgcmVzcG9uc2VJdGVtcy5mb3JFYWNoKHJlc3BvbnNlSXRlbSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZUl0ZW0uaWQpIHtcbiAgICAgICAgICAgIHNoaXBtZW50U3RvcmUuc29ydGVkUGFja2luZ1NsaXBzLmZvckVhY2gocGFja2luZ1NsaXAgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHBhY2tpbmdTbGlwLml0ZW1zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IHJlc3BvbnNlSXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFja2luZ1NsaXAuaXRlbXNbaXRlbUluZGV4XSA9IHJlc3BvbnNlSXRlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2hlY2tlZEl0ZW1zLnZhbHVlW3Jlc3BvbnNlSXRlbS5pZF0gPSBpc0NoZWNrZWQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHNldFBhY2tpbmdTbGlwc0FuZEl0ZW1zKCk7XG59O1xuXG4vLyBWw6lnaWdtZWd5w7xuayBhIHN6w6FsbMOtdMOzbGV2ZWxlayB0w6l0ZWxlaW4gw6lzIGhhIGF6IMO2c3N6ZXMgdMOpdGVsIFdBSVRJTkcgc3TDoXR1c3rDuixcbi8vIGFra29yIGZlbHrDoXJqdWsgYSBsZW55aXRvdHQgc3rDoWxsw610w7NsZXZlbGV0LlxuY29uc3QgY2hlY2tQYWNraW5nU2xpcHNJdGVtc1N0YXR1cyA9ICgpID0+IHtcbiAgICBzaGlwbWVudFN0b3JlLnNvcnRlZFBhY2tpbmdTbGlwcy5mb3JFYWNoKHBhY2tpbmdTbGlwID0+IHtcbiAgICAgICAgY29uc3QgYWxsSXRlbXNXYWl0aW5nID0gcGFja2luZ1NsaXAuaXRlbXMuZXZlcnkoaXRlbSA9PiBpdGVtLnN0YXR1cyA9PT0gUGFja2luZ1NsaXBJdGVtU3RhdHVzLldBSVRJTkcpO1xuXG4gICAgICAgIGlmIChhbGxJdGVtc1dhaXRpbmcpIHtcbiAgICAgICAgICAgIHRvZ2dsZVBhY2tpbmdTbGlwKHBhY2tpbmdTbGlwLmlkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuLy8gUmFrb2TDoXMgYmVmZWplesOpc2UuXG5jb25zdCBmaW5pc2hMb2FkaW5nID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIFbDqWdpZ21lZ3nDvG5rIGEgc3rDoWxsw610w7NsZXZlbGVrIHTDqXRlbGVpbiDDqXMgaGEgdmFuIG3DqWcgV0FJVF9GT1JfTE9BRCBzdMOhdHVzesO6LCBha2tvciBoaWJhw7x6ZW5ldGV0IGplbsOtdMO8bmsgbWVnLlxuICAgIGNvbnN0IGhhc0l0ZW1zV2FpdGluZ0ZvckxvYWQgPSBzaGlwbWVudFN0b3JlLnNvcnRlZFBhY2tpbmdTbGlwcy5zb21lKHBhY2tpbmdTbGlwID0+XG4gICAgICAgIHBhY2tpbmdTbGlwLml0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtLnN0YXR1cyA9PT0gUGFja2luZ1NsaXBJdGVtU3RhdHVzLldBSVRfRk9SX0xPQUQpXG4gICAgKTtcblxuICAgIGlmIChoYXNJdGVtc1dhaXRpbmdGb3JMb2FkKSB7XG4gICAgICAgIHRvYXN0U3RvcmUuYWRkVG9hc3Qoe1xuICAgICAgICAgICAgdGl0bGU6IHRyYW5zKCd0aGVyZV9hcmVfc3RpbGxfaXRlbXNfdG9fYmVfbG9hZGVkJywgJ1RoZXJlIGFyZSBzdGlsbCBpdGVtcyB0byBiZSBsb2FkZWQhJywgJ3NoaXBtZW50JyksXG4gICAgICAgICAgICB0eXBlOiBcImRhbmdlclwiLFxuICAgICAgICAgICAgc2hvd0ljb246IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFbGxlbmtlesWRIGVzZXRiZW4gYmVmZWplenrDvGsgYSByYWtvZMOhc3Qgw6lzIGVsa2V6ZGhldMWRIGEgc3rDoWxsw610w6FzIGEga8O2dmV0ZWtlesWRIG7DqXpldGVuKHNoaXBtZW50LXJlYWR5KS5cbiAgICAgICAgaWYgKCFzaGlwbWVudFN0b3JlLnNoaXBtZW50LmlkKSByZXR1cm47XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2hpcG1lbnRTdG9yZS5maW5pc2hMb2FkaW5nKHJvdXRlciwgc2hpcG1lbnRTdG9yZS5zaGlwbWVudC5pZCk7XG4gICAgICAgICAgICBzaGlwbWVudFN0b3JlLnJlcGxhY2VTaGlwbWVudChyZXNwb25zZSBhcyBTaGlwbWVudEludGVyZmFjZSk7XG5cbiAgICAgICAgICAgIHRvYXN0U3RvcmUuYWRkVG9hc3Qoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0cmFucygnbG9hZGluZyBzdWNjZXNzZnVsbHkgY29tcGxldGVkJywgJ0xvYWRpbmcgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCEnLCAnc2hpcG1lbnQnKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgICBzaG93SWNvbjogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdG9hc3RTdG9yZS5hZGRUb2FzdCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IChlcnJvciBhcyBTZXJ2ZXJFcnJvcikudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBcImRhbmdlclwiLFxuICAgICAgICAgICAgICAgIHNob3dJY29uOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNvbnN0IHByaW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIHdpbmRvdy5wcmludCgpO1xufTtcblxuLy8gw5Zzc3plcyB0w6l0ZWwgZmVscmFrb2TDoXNhIGVneXNzemVycmUuXG5jb25zdCBsb2FkQWxsSXRlbXMgPSAoKSA9PiB7XG4gICAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLy8gVsOpZ2lnbWVnecO8bmsgYSBzesOhbGzDrXTDs2xldmVsZWsgdMOpdGVsZWluIMOpcyBoYSBzdG9yYWdlU3RhdHVzLWEgSU5fV0FSRUhPVVNFIGFra29yIGZlbHJha2p1ay5cbiAgICBzaGlwbWVudFN0b3JlLnNvcnRlZFBhY2tpbmdTbGlwcy5mb3JFYWNoKHBhY2tpbmdTbGlwID0+IHtcbiAgICAgICAgcGFja2luZ1NsaXAuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLnN0b3JhZ2VTdGF0dXMgPT09IFBhY2tpbmdTbGlwSXRlbVN0b3JhZ2VTdGF0dXMuSU5fV0FSRUhPVVNFICYmIGl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgICBpZHMucHVzaChpdGVtLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoaWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaXRlbUNoZWNrKGlkcyk7XG4gICAgfVxufTtcblxub25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIC8vIEZlbGhhc3puw6FsdCB2w6FsdG96w7NrIHTDtnJsw6lzZS5cbiAgICBzaGlwbWVudFN0b3JlLnNvcnRlZFBhY2tpbmdTbGlwcyA9IFtdO1xuICAgIGV4cGFuZGVkUGFja2luZ1NsaXBzLnZhbHVlID0gW107XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmZhZGUtZW50ZXItYWN0aXZlLCAuZmFkZS1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlLCB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xufVxuLmZhZGUtZW50ZXIsIC5mYWRlLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7XG59XG48L3N0eWxlPlxuIiwiQGltcG9ydCBcIi9zcnYvd3d3L2Fzc2V0cy9zdHlsZXMvX21peGlucy5zY3NzXCI7XG5cbiNiYWNrLXRvLXRvcC1idXR0b24ge1xuICAgICYudmlzaWJsZSB7XG4gICAgICAgIEBhcHBseSBvcGFjaXR5LTgwIHotMTAgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTMwMCBlYXNlLWluO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgQGFwcGx5IG9wYWNpdHktMTAwO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCBcIi9zcnYvd3d3L2Fzc2V0cy9zdHlsZXMvX21peGlucy5zY3NzXCI7XG5cbi5kcm9wZG93biB7XG4gICAgPiAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIC8vIEBhcHBseSBmaXhlZCBsZWZ0LTAgdy1mdWxsIGxnOmFic29sdXRlIGxnOmxlZnQtYXV0byBsZzptaW4tdy1mdWxsIGxnOnctbWF4IGZsZXggZmxleC1jb2wgd2hpdGVzcGFjZS1ub3dyYXAgaW52aXNpYmxlO1xuICAgICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC1hdXRvIG1pbi13LWZ1bGwgdy1tYXggZmxleCBmbGV4LWNvbCB3aGl0ZXNwYWNlLW5vd3JhcCBoaWRkZW47XG4gICAgICAgIEBhcHBseSB0cmFuc2Zvcm0tZ3B1IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBlYXNlLW91dCBvcGFjaXR5LTAgLXRyYW5zbGF0ZS15LTggLXRyYW5zbGF0ZS14LTQgc2NhbGUtNzU7XG4gICAgICAgIEBhcHBseSBmb250LW5vcm1hbCB0ZXh0LWJhc2Ugbm9ybWFsLWNhc2UgYmctd2hpdGUgdGV4dC1ncmF5LWRhcmtlc3QganVzdGlmeS1zdGFydCBweS0yIHNoYWRvdyB6LTUwO1xuXG4gICAgICAgICYucmlnaHQtMCB7XG4gICAgICAgICAgICBAYXBwbHkgdHJhbnNsYXRlLXgtNDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYubW9iaWxlLWZ1bGwtd2lkdGgge1xuICAgICAgICA+IC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgICAgIEBhcHBseSBmaXhlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93biB7XG4gICAgICAgID4gc3BhbiB7XG4gICAgICAgICAgICBAYXBwbHkgcC0yIGxnOnAtMDtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgQGFwcGx5IGxnOnB4LTA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRpc2FibGVkOjphZnRlciB7XG4gICAgICAgIEBhcHBseSBibG9jayBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgdy1mdWxsIGgtZnVsbCBiZy13aGl0ZSBvcGFjaXR5LTcwO1xuXG4gICAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgIH1cblxuICAgICYuaG92ZXJhYmxlOm5vdCguZGlzYWJsZWQpIHtcbiAgICAgICAgQGluY2x1ZGUgaG92ZXItc3VwcG9ydGVkKCkge1xuICAgICAgICAgICAgQHNjcmVlbiBsZyB7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgID4gc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAubWFyc28taWNvbi1jaGV2cm9uLWRvd24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBhcHBseSByb3RhdGUtMTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPiAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAYXBwbHkgZmxleCBvcGFjaXR5LTEwMCBzY2FsZS0xMDAgdHJhbnNsYXRlLXktMCB0cmFuc2xhdGUteC0wO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLmRyb3Bkb3duIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYXBwbHkgcmVsYXRpdmUgc2hhZG93LWlubmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgJjpub3QoLmhvdmVyYWJsZSkge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1ibHVlIHJpbmctNCByaW5nLWJsdWUgcmluZy1vcGFjaXR5LTUwO1xuICAgICAgICB9XG5cbiAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgIC5tYXJzby1pY29uLWNoZXZyb24tZG93biB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IHJvdGF0ZS0xODA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA+IC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgICAgIEBhcHBseSBmbGV4IG9wYWNpdHktMTAwIHNjYWxlLTEwMCB0cmFuc2xhdGUteS0wIHRyYW5zbGF0ZS14LTA7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24ge1xuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgID4gLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgcmVsYXRpdmUgc2hhZG93LWlubmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBtaXhpbiBob3Zlci1zdXBwb3J0ZWQge1xuICAgIC8qXG4gICAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0BtZWRpYS9wb2ludGVyXG4gICAgICogY29hcnNlOiBUaGUgcHJpbWFyeSBpbnB1dCBtZWNoYW5pc20gaW5jbHVkZXMgYSBwb2ludGluZyBkZXZpY2Ugb2YgbGltaXRlZCBhY2N1cmFjeS5cbiAgICAgKi9cbiAgICBAbWVkaWEgbm90IGFsbCBhbmQgKHBvaW50ZXI6IGNvYXJzZSkge1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG47QGltcG9ydCBcInNhc3MtZW1iZWRkZWQtbGVnYWN5LWxvYWQtZG9uZTo5XCI7IiwiQGltcG9ydCBcIi9zcnYvd3d3L2Fzc2V0cy9zdHlsZXMvX21peGlucy5zY3NzXCI7XG5cblxuJG5hdkhlaWdodDogMy41cmVtO1xuJGZvb3RlckhlaWdodDogMnJlbSAtIDAuMTI1cmVtO1xuJG1lbnVNYXJnaW5Cb3R0b206IDJyZW0gKyAwLjEyNXJlbTtcbiRmb290ZXJIZWlnaHRNb2JpbGVMb2dpblBhZ2U6IDEzLjI1cmVtO1xuXG4uYXBwLWNvbnRlbnQge1xuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAkbmF2SGVpZ2h0IC0gJG1lbnVNYXJnaW5Cb3R0b20gLSAkZm9vdGVySGVpZ2h0KTtcbn1cblxuLmFwcC1jb250ZW50LWxvZ2luIHtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gJGZvb3RlckhlaWdodCk7XG4gICAgcGFkZGluZy1ib3R0b206IDUwcHg7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIC5hcHAtY29udGVudCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAkbmF2SGVpZ2h0IC0gJGZvb3RlckhlaWdodCk7XG4gICAgfVxuICAgIC5hcHAtY29udGVudC1sb2dpbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAkZm9vdGVySGVpZ2h0TW9iaWxlTG9naW5QYWdlKTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDUwcHg7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/