* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box; }

/*
    Variable: fontsize-root
    'px' font size on root (html) element (with units removed).  Browser default is 16px.  Used to determine sizes for rem function.

    -@ based on http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/
    */
/*
    Mixin: rem (https://github.com/tobymackenzie/html-boilerplate/blob/master/web/_/styles/src/mixins/_units.scss)
    Output a property with pixel values for non 'rem' supporting browsers followed by the 'rem' equivalent for rem support browsers.  Can't currently accept values with comma separation, like multiple backgrounds or the like.

    -@ based on http://hugogiraudel.com/2013/03/18/ultimate-rem-mixin/
    */
/*
    Mixin: stripUnit
    Strip the unit from a value that has a unit

    -@ based on http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/
    */
article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary {
  display: block; }

audio, canvas, video {
  display: inline-block; }

audio:not([controls]) {
  display: none;
  height: 0; }

[hidden], template {
  display: none; }

html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%; }

body {
  margin: 0; }

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

a {
  background: transparent; }

a:focus {
  outline: thin dotted; }

a:active, a:hover {
  outline: 0; }

h1 {
  font-size: 2em;
  margin: 0.67em 0; }

abbr[title] {
  border-bottom: 1px dotted; }

b, strong {
  font-weight: bold; }

dfn {
  font-style: italic; }

hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0; }

mark {
  background: #ff0;
  color: #000; }

code, kbd, pre, samp {
  font-family: monospace, serif;
  font-size: 1em; }

pre {
  white-space: pre-wrap; }

q {
  quotes: "\201C" "\201D" "\2018" "\2019"; }

small {
  font-size: 80%; }

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

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

img, iframe, video {
  max-width: 100%; }

img {
  height: auto;
  border: 0;
  vertical-align: middle; }

svg:not(:root) {
  overflow: hidden; }

figure {
  margin: 0; }

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

legend {
  border: 0;
  padding: 0; }

button, input, select, textarea {
  font-family: inherit;
  font-size: 100%;
  margin: 0; }

button, input {
  line-height: normal; }

button, select {
  text-transform: none; }

button, html input[type="button"], input[type="reset"], input[type="submit"] {
  border: 0;
  -webkit-appearance: button;
  cursor: pointer; }

button[disabled], html input[disabled] {
  cursor: default; }

input[type="checkbox"], input[type="radio"] {
  box-sizing: border-box;
  padding: 0; }

input[type="search"] {
  -webkit-appearance: textfield; }

input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

button::-moz-focus-inner, input::-moz-focus-inner {
  border: 0;
  padding: 0; }

textarea {
  overflow: auto;
  vertical-align: top; }

textarea, input {
  outline: none; }

table {
  border-collapse: collapse;
  border-spacing: 0; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans_gdi.eot');
  src: url('webfonts/OpenSans_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans_gdi.woff') format('woff'), url('webfonts/OpenSans_gdi.ttf') format('truetype'), url('webfonts/OpenSans_gdi.svg#OpenSans-Regular') format('svg');
  font-weight: 400;
  font-style: normal;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-Italic_gdi.eot');
  src: url('webfonts/OpenSans-Italic_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-Italic_gdi.woff') format('woff'), url('webfonts/OpenSans-Italic_gdi.ttf') format('truetype'), url('webfonts/OpenSans-Italic_gdi.svg#OpenSans-Italic') format('svg');
  font-weight: 400;
  font-style: italic;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-Light_gdi.eot');
  src: url('webfonts/OpenSans-Light_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-Light_gdi.woff') format('woff'), url('webfonts/OpenSans-Light_gdi.ttf') format('truetype'), url('webfonts/OpenSans-Light_gdi.svg#OpenSans-Light') format('svg');
  font-weight: 300;
  font-style: normal;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSansLight-Italic_gdi.eot');
  src: url('webfonts/OpenSansLight-Italic_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSansLight-Italic_gdi.woff') format('woff'), url('webfonts/OpenSansLight-Italic_gdi.ttf') format('truetype'), url('webfonts/OpenSansLight-Italic_gdi.svg#OpenSansLight-Italic') format('svg');
  font-weight: 300;
  font-style: italic;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-Semibold_gdi.eot');
  src: url('webfonts/OpenSans-Semibold_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-Semibold_gdi.woff') format('woff'), url('webfonts/OpenSans-Semibold_gdi.ttf') format('truetype'), url('webfonts/OpenSans-Semibold_gdi.svg#OpenSans-Semibold') format('svg');
  font-weight: 600;
  font-style: normal;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-SemiboldItalic_gdi.eot');
  src: url('webfonts/OpenSans-SemiboldItalic_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-SemiboldItalic_gdi.woff') format('woff'), url('webfonts/OpenSans-SemiboldItalic_gdi.ttf') format('truetype'), url('webfonts/OpenSans-SemiboldItalic_gdi.svg#OpenSans-SemiboldItalic') format('svg');
  font-weight: 600;
  font-style: italic;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

html, body {
  font-family: 'Open Sans', sans-serif;
  color: #333333;
  font-weight: 400;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden; }

h1, h2, h3, h4, h5, h6 {
  font-weight: 400; }

h1, .h1 {
  text-align: center;
  font-size: 36px; }

h2 {
  font-size: 22px; }

a {
  text-decoration: none;
  color: #cc0000; }
  a:hover {
    text-decoration: underline; }

dt {
  font-weight: 400; }

blockquote {
  border-left: 5px solid #666666;
  padding: 20px;
  background: #ffffff; }
  blockquote p:first-child {
    margin-top: 0; }

@font-face {
  font-family: 'icomoon';
  src: url('fonts/icomoon.eot?n0wbn8');
  src: url('fonts/icomoon.eot?#iefixn0wbn8') format('embedded-opentype'), url('fonts/icomoon.woff?n0wbn8') format('woff'), url('fonts/icomoon.ttf?n0wbn8') format('truetype'), url('fonts/icomoon.svg?n0wbn8#icomoon') format('svg');
  font-weight: normal;
  font-style: normal; }

[class^="icon-"], [class*=" icon-"] {
  font-family: 'icomoon';
  speak: none;
  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; }

.icon-content-copy:before {
  content: "\e61a"; }

.icon-chevron-right:before {
  content: "\e618"; }

.icon-chevron-left:before {
  content: "\e619"; }

.icon-linkedin:before {
  content: "\e600"; }

.icon-pencil:before {
  content: "\e617"; }

.icon-stack:before {
  content: "\e61b"; }

.icon-user:before {
  content: "\e605"; }

.icon-spinner:before {
  content: "\e606"; }

.icon-search:before {
  content: "\e616"; }

.icon-cog:before {
  content: "\e607"; }

.icon-leaf:before {
  content: "\e608"; }

.icon-switch:before {
  content: "\e609"; }

.icon-menu:before {
  content: "\e60a"; }

.icon-globe:before {
  content: "\e60b"; }

.icon-earth:before {
  content: "\e60c"; }

.icon-info:before {
  content: "\e60d"; }

.icon-cancel-circle:before {
  content: "\e60e"; }

.icon-checkmark-circle:before {
  content: "\e60f"; }

.icon-spam:before {
  content: "\e610"; }

.icon-close:before {
  content: "\e611"; }

.icon-checkmark:before {
  content: "\e612"; }

.icon-minus:before {
  content: "\e613"; }

.icon-plus:before {
  content: "\e614"; }

.icon-share:before {
  content: "\e615"; }

.icon-facebook:before {
  content: "\e601"; }

.icon-instagram:before {
  content: "\e602"; }

.icon-twitter:before {
  content: "\e603"; }

.icon-youtube:before {
  content: "\e604"; }

.icon-file-pdf:before {
  content: "\e61c"; }

.icon-file-word:before {
  content: "\e61d"; }

.icon-file-excel:before {
  content: "\e61e"; }

.icon-file-powerpoint:before {
  content: "\e61f"; }

.styleguide {
  /*

	Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/

	*/ }
  .styleguide h1 {
    text-align: left; }
  .styleguide .color-swatches {
    margin: 0;
    padding: 0;
    color: #fff;
    list-style: none;
    display: -webkit-box;
    display: -moz-box;
    display: box;
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flexbox;
    display: flex; }
    .styleguide .color-swatches li {
      padding: 2em 0;
      width: 6em;
      margin: 5px;
      text-align: center; }
    .styleguide .color-swatches .invert {
      color: #000; }
    .styleguide .color-swatches .border {
      border: 1px solid #c3c3c3; }
    .styleguide .color-swatches .c-cc0000 {
      background: #cc0000; }
    .styleguide .color-swatches .c-000000 {
      background: #000000; }
    .styleguide .color-swatches .c-ffffff {
      background: #ffffff; }
    .styleguide .color-swatches .c-f2f2f2 {
      background: #f2f2f2; }
    .styleguide .color-swatches .c-cccccc {
      background: #cccccc; }
    .styleguide .color-swatches .c-666666 {
      background: #666666; }
    .styleguide .color-swatches .c-333333 {
      background: #333333; }
    .styleguide .color-swatches .c-990000 {
      background: #990000; }
    .styleguide .color-swatches .c-d14905 {
      background: #d14905; }
    .styleguide .color-swatches .c-fdd726 {
      background: #fdd726; }
    .styleguide .color-swatches .c-7d8c1f {
      background: #7d8c1f; }
    .styleguide .color-swatches .c-427e93 {
      background: #427e93; }
    .styleguide .color-swatches .c-4156a1 {
      background: #4156a1; }
  .styleguide .toggle-code-block {
    display: inline-block;
    margin-bottom: 5px; }
  .styleguide code {
    height: 0;
    padding: 0 !important;
    background: #000;
    overflow: hidden;
    width: 100%; }
    .styleguide code.show {
      padding: 20px !important;
      height: auto;
      display: block;
      border-radius: 10px; }
  .styleguide .page-title {
    display: none; }
  .styleguide .component-title {
    color: #333333; }
  .styleguide .code-container {
    background: #cccccc;
    padding: 20px; }
  .styleguide .hljs {
    display: inline-block;
    padding: 0.5em;
    background: #23241f; }
  .styleguide .hljs, .styleguide .hljs-tag, .styleguide .css .hljs-rules, .styleguide .css .hljs-value, .styleguide .css .hljs-function .hljs-preprocessor, .styleguide .hljs-pragma {
    color: #f8f8f2; }
  .styleguide .hljs-strongemphasis, .styleguide .hljs-strong, .styleguide .hljs-emphasis {
    color: #a8a8a2; }
  .styleguide .hljs-bullet, .styleguide .hljs-blockquote, .styleguide .hljs-horizontal_rule, .styleguide .hljs-number, .styleguide .hljs-regexp, .styleguide .alias .hljs-keyword, .styleguide .hljs-literal, .styleguide .hljs-hexcolor {
    color: #ae81ff; }
  .styleguide .hljs-tag .hljs-value, .styleguide .hljs-code, .styleguide .hljs-title, .styleguide .css .hljs-class, .styleguide .hljs-class .hljs-title:last-child {
    color: #a6e22e; }
  .styleguide .hljs-link_url {
    font-size: 80%; }
  .styleguide .hljs-strong, .styleguide .hljs-strongemphasis {
    font-weight: bold; }
  .styleguide .hljs-emphasis, .styleguide .hljs-strongemphasis, .styleguide .hljs-class .hljs-title:last-child {
    font-style: italic; }
  .styleguide .hljs-keyword, .styleguide .hljs-function, .styleguide .hljs-change, .styleguide .hljs-winutils, .styleguide .hljs-flow, .styleguide .lisp .hljs-title, .styleguide .clojure .hljs-built_in, .styleguide .nginx .hljs-title, .styleguide .tex .hljs-special, .styleguide .hljs-header, .styleguide .hljs-attribute, .styleguide .hljs-symbol, .styleguide .hljs-symbol .hljs-string, .styleguide .hljs-tag .hljs-title, .styleguide .hljs-value, .styleguide .alias .hljs-keyword:first-child, .styleguide .css .hljs-tag, .styleguide .css .unit, .styleguide .css .hljs-important {
    color: #f92672; }
  .styleguide .hljs-function .hljs-keyword, .styleguide .hljs-class .hljs-keyword:first-child, .styleguide .hljs-constant, .styleguide .css .hljs-attribute {
    color: #66d9ef; }
  .styleguide .hljs-variable, .styleguide .hljs-params, .styleguide .hljs-class .hljs-title {
    color: #f8f8f2; }
  .styleguide .hljs-string, .styleguide .css .hljs-id, .styleguide .hljs-subst, .styleguide .haskell .hljs-type, .styleguide .ruby .hljs-class .hljs-parent, .styleguide .hljs-built_in, .styleguide .django .hljs-template_tag, .styleguide .django .hljs-variable, .styleguide .smalltalk .hljs-class, .styleguide .django .hljs-filter .hljs-argument, .styleguide .smalltalk .hljs-localvars, .styleguide .smalltalk .hljs-array, .styleguide .hljs-attr_selector, .styleguide .hljs-pseudo, .styleguide .hljs-addition, .styleguide .hljs-stream, .styleguide .hljs-envvar, .styleguide .apache .hljs-tag, .styleguide .apache .hljs-cbracket, .styleguide .tex .hljs-command, .styleguide .hljs-prompt, .styleguide .hljs-link_label, .styleguide .hljs-link_url {
    color: #e6db74; }
  .styleguide .hljs-comment, .styleguide .hljs-javadoc, .styleguide .java .hljs-annotation, .styleguide .python .hljs-decorator, .styleguide .hljs-template_comment, .styleguide .hljs-pi, .styleguide .hljs-doctype, .styleguide .hljs-deletion, .styleguide .hljs-shebang, .styleguide .apache .hljs-sqbracket, .styleguide .tex .hljs-formula {
    color: #75715e; }
  .styleguide .coffeescript .javascript, .styleguide .javascript .xml, .styleguide .tex .hljs-formula, .styleguide .xml .javascript, .styleguide .xml .vbscript, .styleguide .xml .css, .styleguide .xml .hljs-cdata, .styleguide .xml .php, .styleguide .php .xml {
    opacity: 0.5; }

body {
  -webkit-overflow-scrolling: touch;
  background: #f2f2f2; }

.header-container .wrapper, .content-container .wrapper, .footer-container .wrapper {
  max-width: 68em;
  margin-left: auto;
  margin-right: auto;
  padding: 0 10px; }
  .header-container .wrapper:after, .content-container .wrapper:after, .footer-container .wrapper:after {
    content: "";
    display: table;
    clear: both; }

.content-container {
  margin-bottom: 60px; }
  .content-container h1 {
    margin: 40px 0; }
    .content-container h1 sup {
      font-size: 18px;
      font-weight: 300;
      top: -0.9em; }
  .page-template-page-secondary-php .content-container {
    padding-top: 10px; }

.header-container {
  background: #fff;
  left: 0;
  right: 0;
  z-index: 300;
  -webkit-transition: all 0.2s linear;
  -moz-transition: all 0.2s linear;
  transition: all 0.2s linear; }
  .header-container .logo {
    float: left;
    font-size: 0;
    margin-top: 10px; }
    .header-container .logo a {
      display: inline-block; }
      .header-container .logo a img {
        -webkit-transition: all 0.2s linear;
        -moz-transition: all 0.2s linear;
        transition: all 0.2s linear;
        padding: 20px; }
      .header-container .logo a:first-child img {
        display: inline-block;
        padding-left: 0;
        border-right: 1px solid #000; }
  .header-container nav.primary {
    width: 55%;
    float: right;
    margin-right: 50px;
    margin-top: 30px;
    -webkit-transition: margin 0.2s linear;
    -moz-transition: margin 0.2s linear;
    transition: margin 0.2s linear; }
    .header-container nav.primary button {
      -webkit-transition: all 0.2s linear;
      -moz-transition: all 0.2s linear;
      transition: all 0.2s linear;
      display: none;
      background: #cc0000;
      height: 45px;
      width: 48px;
      top: 25px;
      right: 20px;
      overflow: hidden;
      position: absolute;
      cursor: pointer;
      outline: none;
      text-indent: -9999px; }
      .header-container nav.primary button:after {
        content: '';
        position: absolute;
        width: 68%;
        height: 5px;
        background: #ffffff;
        top: 10px;
        left: 16%;
        box-shadow: 0 10px 0 #ffffff, 0 20px 0 #ffffff; }
    @media screen and (max-width: 960px)  {
      .header-container nav.primary {
        position: fixed;
        width: 100%;
        top: 0;
        margin-top: 0;
        right: 0;
        z-index: 100; }
        .header-container nav.primary button {
          display: block; }
        .header-container nav.primary > ul {
          -webkit-transition: all 0.3s linear;
          -moz-transition: all 0.3s linear;
          transition: all 0.3s linear;
          background: #f2f2f2;
          overflow: hidden;
          max-height: 0;
          position: absolute;
          right: -50px;
          width: 100%;
          top: 100px;
          padding: 0;
          text-align: center; } }
  .header-container .share {
    position: absolute;
    right: 0;
    z-index: 500; }
  .header-container header {
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear;
    position: relative;
    overflow: hidden;
    height: 100px;
    padding: 0 10px; }
    .page-template-page-secondary-php .header-container header {
      height: 140px; }

body.headroom--unpinned .header-container {
  position: fixed; }
  body.headroom--unpinned .header-container header {
    height: 70px; }
    body.headroom--unpinned .header-container header .logo {
      margin-top: 10px; }
      body.headroom--unpinned .header-container header .logo img {
        padding-top: 5px;
        padding-bottom: 5px; }
  @media screen and (min-width: 960px) {
    body.headroom--unpinned .header-container nav.primary {
      margin-top: 15px; } }
  body.headroom--unpinned .header-container nav.primary > ul {
    top: 70px; }
    body.headroom--unpinned .header-container nav.primary > ul .sub-menu {
      top: 70px; }
  body.headroom--unpinned .header-container nav.primary button {
    top: 10px; }
body.headroom--unpinned.page-template-page-secondary-php .content-container {
  padding-top: 140px; }
body.headroom--unpinned.page-template-page-secondary-php .header-container header {
  height: 70px; }

.content-container {
  padding-top: 40px; }
  .headroom--unpinned .content-container {
    padding-top: 130px; }
  .content-container .sub-nav {
    position: fixed;
    left: 0;
    z-index: 301;
    color: #ffffff;
    padding: 10px;
    top: 100px;
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear; }
    @media screen and (max-width: 960px)  {
      .content-container .sub-nav {
        display: none; } }
    .headroom--unpinned .content-container .sub-nav {
      top: 70px; }
    .content-container .sub-nav span {
      margin-right: 10px; }
  .content-container .alignleft {
    float: left;
    margin-right: 20px; }
  .content-container .lcp_paginator {
    background: #333333;
    color: #ffffff;
    display: inline-block;
    float: right;
    margin: 0;
    padding: 0; }
    .content-container .lcp_paginator li {
      border: none; }
      .content-container .lcp_paginator li span {
        display: inline-block;
        padding: 10px 20px; }
      .content-container .lcp_paginator li a {
        display: inline-block;
        padding: 10px 20px;
        color: #cccccc; }
        .content-container .lcp_paginator li a:hover {
          color: #ffffff; }
  .content-container .lcp_catlist {
    margin: 0;
    padding: 0; }

.footer-container {
  margin-top: 20px;
  background: #000000;
  color: #ffffff;
  padding-bottom: 50px; }
  .footer-container .credits {
    background: #cc0000; }
    .footer-container .credits ul {
      margin: 0;
      padding: 0;
      list-style: none; }
      .footer-container .credits ul li {
        padding: 30px 0;
        text-align: center; }
        @media screen and (min-width: 768px) {
          .footer-container .credits ul li {
            width: 27%;
            float: left;
            text-align: left;
            display: inline-block; }
            .footer-container .credits ul li:first-child {
              width: 46%; }
            .footer-container .credits ul li:last-child {
              padding: 27px 0;
              text-align: right; } }
  .footer-container a {
    color: #fff; }
  .footer-container footer {
    margin-top: 20px; }
    .footer-container footer h2 {
      font-size: 24px;
      font-weight: 400; }
    @media screen and (min-width: 960px) {
      .footer-container footer > div {
        float: left;
        width: 27%; }
        .footer-container footer > div:first-child {
          width: 46%;
          padding-right: 30px; } }
    @media screen and (min-width: 960px) {
      .footer-container footer .social-bar h2 {
        min-height: 70px; } }
    .footer-container footer .social-bar ul {
      display: inline-block;
      list-style: none;
      margin: 0;
      padding: 0; }
      .footer-container footer .social-bar ul li {
        display: inline-block;
        border: 1px solid #ffffff;
        border-right: none;
        float: left;
        width: 48px;
        height: 48px;
        position: relative; }
        .footer-container footer .social-bar ul li:last-child {
          border-right: 1px solid #ffffff; }
        .footer-container footer .social-bar ul li a {
          position: absolute;
          width: 100%;
          top: 0;
          bottom: 0;
          font-size: 1.5em;
          text-decoration: none; }
          .footer-container footer .social-bar ul li a span {
            position: absolute;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            -moz-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
            -o-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%); }

input[type="submit"], button, a.button {
  padding: 10px 20px;
  padding: 0.625rem 1.25rem;
  margin: 0 0 10px;
  margin: 0 0 0.625rem;
  background-color: #cc0000;
  color: white;
  -webkit-transition: all 300ms ease-in-out;
  -moz-transition: all 300ms ease-in-out;
  transition: all 300ms ease-in-out; }
  input[type="submit"]:hover, button:hover, a.button:hover {
    background-color: #990000; }

label {
  display: block; }

input[type="text"], input[type="email"] {
  background-color: #fff;
  border: 1px solid #cc0000;
  padding: 8px 10px;
  padding: 0.5rem 0.625rem;
  -webkit-transition: all 300 ease-in-out;
  -moz-transition: all 300 ease-in-out;
  transition: all 300 ease-in-out; }
input[type="checkbox"] + label, input[type="radio"] + label {
  display: inline-block;
  cursor: pointer;
  position: relative;
  padding-left: 25px;
  margin-right: 15px;
  font-size: 13px; }
  input[type="checkbox"] + label:before, input[type="radio"] + label:before {
    content: "";
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-right: 10px;
    position: absolute;
    left: 0;
    bottom: 1px;
    background-color: #f2f2f2; }
input[type="checkbox"] + label:before {
  border: 1px solid #a5a5a5; }
input[type="radio"] + label:before {
  border-radius: 8px;
  border: 1px solid #a5a5a5; }
input[type="checkbox"], input[type="radio"] {
  display: none; }
input[type="radio"]:checked + label:before {
  background-color: #cc0000;
  color: #f3f3f3;
  font-size: 32px;
  text-align: center;
  line-height: 14px;
  border: 1px solid #660000; }
input[type="radio"]:checked + label:after {
  background-color: #fff;
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 4px;
  position: absolute;
  left: 4px;
  top: 5px; }
input[type="checkbox"]:checked + label:before {
  background-color: #cc0000;
  color: #f3f3f3;
  font-size: 32px;
  text-align: center;
  line-height: 14px;
  border: 1px solid #660000; }
input[type="checkbox"]:checked + label:after {
  content: "";
  display: inline-block;
  width: 7px;
  height: 12px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  transform: rotate(45deg);
  position: absolute;
  left: 5px;
  top: 1px;
  border-right: 3px solid #fff;
  border-bottom: 3px solid #fff; }
input[type="search"]::-ms-clear {
  display: none; }

textarea {
  background-color: #fff;
  border: 1px solid #cc0000;
  padding: 8px 10px;
  padding: 0.5rem 0.625rem;
  -webkit-transition: all 300 ease-in-out;
  -moz-transition: all 300 ease-in-out;
  transition: all 300 ease-in-out; }

nav.primary ul {
  margin: 0;
  padding: 0; }

.flex-container {
  margin: 0;
  padding: 0;
  list-style: none; }
  .flex-containerul {
    font-size: 0; }
  .flex-container li {
    display: inline-block;
    font-size: 0.9em; }
    @media screen and (min-width: 1088px) { }
    .flex-container li a {
      color: #333;
      text-decoration: none;
      float: left;
      padding: 0.5em; }
  .flex-container .sub-menu {
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear;
    display: none;
    position: fixed;
    top: 100px;
    left: 0;
    right: 0;
    list-style: none;
    background: #333333;
    font-size: 0; }
    .flex-container .sub-menu li {
      display: inline-block;
      text-align: left; }
      .flex-container .sub-menu li a {
        font-size: 14px;
        font-weight: 400;
        padding: 10px 20px;
        color: #ffffff;
        line-height: 24px; }
  .flex-container .current_page_item .sub-menu, .flex-container .current_page_ancestor .sub-menu {
    display: block;
    text-align: right; }
    @media screen and (max-width: 960px)  {
      .flex-container .current_page_item .sub-menu, .flex-container .current_page_ancestor .sub-menu {
        display: none; } }
    .flex-container .current_page_item .sub-menu .current-menu-item a, .flex-container .current_page_ancestor .sub-menu .current-menu-item a {
      font-weight: 700; }
  .flex-container .current-menu-item, .flex-container .current-menu-ancestor {
    font-weight: 600; }
    .flex-container .current-menu-item ul li, .flex-container .current-menu-ancestor ul li {
      font-weight: 300; }
      .flex-container .current-menu-item ul li.current-menu-item, .flex-container .current-menu-ancestor ul li.current-menu-item {
        font-weight: 400; }
  .styleguide .flex-container {
    background: #fff; }
  .flex-container.secondary li a {
    padding: 0.5em;
    line-height: 3em; }

.right {
  text-align: right; }

.no-scroll {
  overflow: hidden; }

.flyout-menu {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  overflow: hidden;
  background: rgba(0, 0, 0, 0);
  z-index: -1; }
  .flyout-menu.active {
    background: rgba(0, 0, 0, 0.5);
    z-index: 500; }
    .flyout-menu.active ul, .flyout-menu.active div {
      display: block; }
  .flyout-menu h3 {
    height: 70px;
    padding: 20px;
    margin: 0; }
  .flyout-menu h4 {
    margin: 0;
    padding: 10px 20px; }
  .flyout-menu ul, .flyout-menu div {
    display: none; }
  .flyout-menu [data-level] {
    display: block;
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    min-width: 300px;
    background: #f2f2f2;
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear;
    -webkit-transform: translateX(300px);
    -moz-transform: translateX(300px);
    -ms-transform: translateX(300px);
    -o-transform: translateX(300px);
    transform: translateX(300px);
    border-left: 3px solid #cc0000; }
    .flyout-menu [data-level].active {
      -webkit-transform: translateX(0px);
      -moz-transform: translateX(0px);
      -ms-transform: translateX(0px);
      -o-transform: translateX(0px);
      transform: translateX(0px);
      z-index: 501; }
  .flyout-menu[data-level-active="2"] [data-level="1"] {
    margin-right: 40px; }
    .flyout-menu[data-level-active="2"] [data-level="1"] > ul > .close-btn {
      background: rgba(0, 0, 0, 0.5);
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      cursor: pointer; }
  .flyout-menu[data-level-active="2"] [data-level="2"] {
    -webkit-transform: translateX(40px);
    -moz-transform: translateX(40px);
    -ms-transform: translateX(40px);
    -o-transform: translateX(40px);
    transform: translateX(40px); }
  .flyout-menu[data-level-active="3"] [data-level="1"] {
    margin-right: 80px; }
  .flyout-menu[data-level-active="3"] [data-level="2"] {
    -webkit-transform: translateX(40px);
    -moz-transform: translateX(40px);
    -ms-transform: translateX(40px);
    -o-transform: translateX(40px);
    transform: translateX(40px); }
    .flyout-menu[data-level-active="3"] [data-level="2"] > ul > .close-btn {
      background: rgba(0, 0, 0, 0.5);
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      cursor: pointer; }
  .flyout-menu[data-level-active="3"] [data-level="3"] {
    -webkit-transform: translateX(40px);
    -moz-transform: translateX(40px);
    -ms-transform: translateX(40px);
    -o-transform: translateX(40px);
    transform: translateX(40px); }
  .flyout-menu[data-level-active="3"] [data-level="1"] > ul > .close-btn {
    background: rgba(0, 0, 0, 0.5);
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
    cursor: pointer; }
  .flyout-menu nav ul {
    margin: 0;
    padding: 0;
    list-style: none; }
    .flyout-menu nav ul li {
      display: block;
      border-bottom: 1px solid #333; }
  .flyout-menu nav a {
    text-decoration: none;
    padding: 10px 20px;
    display: block;
    color: #000; }
    .flyout-menu nav a:hover {
      background: #a8a8a8; }
  .flyout-menu .close-btn {
    position: absolute;
    top: 20px;
    right: 10px;
    border: none; }
    .flyout-menu .close-btn button {
      position: relative;
      width: 25px;
      height: 25px;
      float: right;
      background: transparent; }
      .flyout-menu .close-btn button:before {
        content: '';
        position: absolute;
        width: 100%;
        top: 50%;
        height: 1px;
        left: 0;
        background: #000;
        -webkit-transform: rotate(45deg);
        -moz-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        -o-transform: rotate(45deg);
        transform: rotate(45deg); }
      .flyout-menu .close-btn button:after {
        content: '';
        position: absolute;
        width: 100%;
        top: 50%;
        height: 1px;
        background: #000;
        left: 0;
        -webkit-transform: rotate(-45deg);
        -moz-transform: rotate(-45deg);
        -ms-transform: rotate(-45deg);
        -o-transform: rotate(-45deg);
        transform: rotate(-45deg); }
  .flyout-menu h4 {
    color: #fff;
    background: #cc0000; }

.share {
  -webkit-transition: all 0.2s ease-in-out;
  -moz-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  height: 100px;
  width: 50px;
  background: #333333;
  overflow: hidden; }
  .share ul {
    margin: 0;
    padding: 0;
    list-style: none;
    -webkit-transition: all 0.2s ease-in-out;
    -moz-transition: all 0.2s ease-in-out;
    transition: all 0.2s ease-in-out;
    -webkit-transform: translateY(-50px);
    -moz-transform: translateY(-50px);
    -ms-transform: translateY(-50px);
    -o-transform: translateY(-50px);
    transform: translateY(-50px); }
    .share ul li a {
      display: inline-block;
      width: 50px;
      height: 50px;
      text-indent: -9999px;
      white-space: nowrap; }
    .share ul li .toggle {
      background: #333333 url(../img/social-share.png) no-repeat center; }
    .share ul li .fb {
      background: #3b5998 url(../img/social-fb.png) no-repeat center; }
    .share ul li .twitter {
      background: #00aced url(../img/social-twitter.png) no-repeat center; }
  .headroom--not-top .share {
    height: 70px; }
    .headroom--not-top .share ul {
      width: 190px;
      -webkit-transform: translateY(0px);
      -moz-transform: translateY(0px);
      -ms-transform: translateY(0px);
      -o-transform: translateY(0px);
      transform: translateY(0px); }
      .headroom--not-top .share ul li {
        float: left; }
        .headroom--not-top .share ul li a {
          width: 70px;
          height: 70px; }
        .headroom--not-top .share ul li:first-child a {
          width: 50px; }
    .headroom--not-top .share:hover, .headroom--not-top .share:focus {
      width: 190px; }

body.home .content-container {
  padding-top: 0; }
body.home.headroom--unpinned .content-container {
  padding-top: 100px; }

.search-container {
  background: #cc0000;
  color: #ffffff;
  display: inline-block;
  width: 100%; }
  .search-container .search-zip {
    text-align: center; }
  .search-container h2 {
    display: inline-block;
    text-align: center;
    font-weight: 400;
    padding: 20px 0;
    margin: 20px 0;
    border-bottom: 1px solid #ffffff; }
    @media screen and (min-width: 960px) {
      .search-container h2 {
        padding-right: 40px;
        border: none;
        border-right: 1px solid #ffffff;
        text-align: right;
        width: 50%;
        float: left; } }
  .search-container form {
    font-size: 0;
    text-align: center; }
    @media screen and (min-width: 960px) {
      .search-container form {
        float: left;
        width: 50%;
        padding: 20px 0;
        text-align: left; } }
    .search-container form .input {
      position: relative;
      margin-bottom: 40px;
      display: inline-block;
      font-size: 18px; }
      @media screen and (min-width: 960px) {
        .search-container form .input {
          margin: 0;
          padding: 13px 0;
          margin-left: 40px; } }
      .search-container form .input label {
        padding: 10px 0;
        padding-right: 10px;
        float: left; }
      .search-container form .input input[type=text] {
        float: left;
        border: none;
        text-shadow: none;
        box-shadow: none;
        padding: 10px;
        padding-left: 30px;
        display: inline-block;
        max-width: 190px;
        text-align: center;
        background: #ffffff url(../img/search-globe-icon.png) no-repeat 10px center; }
      .search-container form .input input[type=submit] {
        float: left;
        background: #660000;
        color: #ffffff;
        padding: 10px;
        display: inline-block;
        min-width: 110px; }
      .search-container form .input .error {
        position: absolute;
        display: none;
        top: 40px;
        width: 100%;
        text-align: center; }
        .search-container form .input .error.active {
          display: block; }

#chart_div {
  min-height: 880px;
  overflow: hidden; }

#chart_div path {
  stroke: #fff; }
  #chart_div path:hover {
    stroke: #fdd726;
    fill: #fdd726;
    cursor: pointer; }

.tooltip {
  width: 200px; }
  .tooltip h3 {
    color: #cc0000;
    padding-bottom: 0;
    margin-bottom: 5px; }

.google-visualization-tooltip-item:first-child {
  display: none; }

.map-container {
  position: relative;
  overflow: hidden; }
  .map-container #chart_div {
    display: none; }
    @media screen and (min-width: 960px) {
      .map-container #chart_div {
        display: block;
        margin-left: 30px;
        margin-right: -30px; } }
  .map-container h2 {
    font-size: 32px;
    text-align: center;
    font-weight: 400;
    margin: 40px 0;
    margin-bottom: 0; }
  .map-container .cta-buttons {
    display: none;
    position: absolute;
    right: 50px;
    bottom: 60px; }
    @media screen and (min-width: 960px) {
      .map-container .cta-buttons {
        display: block; } }
    .map-container .cta-buttons ul {
      margin: 0;
      padding: 0 0 5px;
      list-style: none; }
      .map-container .cta-buttons ul:after {
        content: "";
        display: table;
        clear: both; }
      .map-container .cta-buttons ul li {
        display: inline-block;
        float: left;
        margin-left: 5px; }
        .map-container .cta-buttons ul li a {
          display: inline-block;
          vertical-align: middle;
          border: 1px solid #cccccc;
          padding: 5px 10px;
          background: #ffffff;
          color: #666666; }
          .map-container .cta-buttons ul li a .cta-icon {
            display: inline-block;
            text-align: center;
            vertical-align: middle;
            color: #ffffff;
            border-radius: 50%;
            background: #666666;
            font-weight: 700;
            width: 48px;
            height: 48px;
            line-height: 48px;
            font-size: 24px;
            margin-right: 5px; }
          .map-container .cta-buttons ul li a img {
            margin-right: 5px; }
          .map-container .cta-buttons ul li a span {
            display: inline-block;
            vertical-align: middle; }
          .map-container .cta-buttons ul li a [class^="icon-"], .map-container .cta-buttons ul li a [class*=" icon-"] {
            color: #cccccc;
            padding-left: 20px;
            line-height: 48px;
            vertical-align: middle; }
          .map-container .cta-buttons ul li a:hover {
            text-decoration: none;
            background: #f2f2f2; }
  .map-container .mobile-list {
    margin-top: 30px; }
    @media screen and (min-width: 960px) {
      .map-container .mobile-list {
        display: none; } }
    .map-container .mobile-list ul {
      margin: 0;
      padding: 0;
      list-style: none;
      max-width: 68em;
      margin-left: auto;
      margin-right: auto; }
      .map-container .mobile-list ul:after {
        content: "";
        display: table;
        clear: both; }
      .map-container .mobile-list ul li {
        background: #333333;
        color: #ffffff; }
        .map-container .mobile-list ul li.tablet-header, .map-container .mobile-list ul li:first-child {
          padding: 10px 20px; }
        .map-container .mobile-list ul li span:last-child {
          float: right;
          width: 40px;
          text-align: center; }
        .map-container .mobile-list ul li a {
          padding: 10px 20px;
          display: inline-block;
          width: 100%; }
          .map-container .mobile-list ul li a span:last-child {
            color: #666666; }
        .map-container .mobile-list ul li:nth-child(2n+3) {
          background: #efefef; }
        .map-container .mobile-list ul li:nth-child(2n+4) {
          background: #ffffff; }
        @media screen and (max-width: 640px)  {
          .map-container .mobile-list ul li.tablet-header {
            display: none; } }
        @media screen and (min-width: 640px) {
          .map-container .mobile-list ul li {
            float: left;
            display: block;
            margin-right: 4.82916%;
            width: 47.58542%; }
            .map-container .mobile-list ul li:nth-child(4n+3), .map-container .mobile-list ul li:nth-child(4n+4) {
              background: #efefef; }
            .map-container .mobile-list ul li:nth-child(4n+5), .map-container .mobile-list ul li:nth-child(4n+6) {
              background: #ffffff; }
            .map-container .mobile-list ul li:last-child {
              margin-right: 0; }
            .map-container .mobile-list ul li:nth-child(2n) {
              margin-right: 0; }
            .map-container .mobile-list ul li:nth-child(2n+1) {
              clear: left; } }

.ir {
  display: block;
  overflow: hidden;
  border: 0;
  background-color: transparent;
  background-repeat: no-repeat;
  text-align: left;
  text-indent: -999em;
  direction: ltr;
  *line-height: 0; }
  .ir br {
    display: none; }

.hidden {
  display: none !important;
  visibility: hidden; }

.visuallyhidden {
  position: absolute;
  overflow: hidden;
  clip: rect(0 0 0 0);
  margin: -1px;
  padding: 0;
  width: 1px;
  height: 1px;
  border: 0; }
  .visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {
    position: static;
    overflow: visible;
    clip: auto;
    margin: 0;
    width: auto;
    height: auto; }

.invisible {
  visibility: hidden; }

.group {
  *zoom: 1; }
  .group:before, .group:after {
    display: table;
    content: ""; }
  .group:after {
    clear: both; }

img[src*="googleadservices.com"] {
  position: absolute;
  top: 0;
  left: -9000em; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyJjc3Mvc2Nzcy9zdHlsZS5zY3NzIiwiY3NzL3Njc3MvdXRpbGl0aWVzL19pbXBvcnRzLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9fYm91cmJvbi5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvX25lYXQuc2NzcyIsImNzcy9zY3NzL3V0aWxpdGllcy9fZnVuY3Rpb25zLnNjc3MiLCJjc3Mvc2Nzcy91dGlsaXRpZXMvX3NldHRpbmdzLnNjc3MiLCJjc3Mvc2Nzcy9iYXNlL19ub3JtYWxpemUuc2NzcyIsImNzcy9zY3NzL2Jhc2UvX3R5cG9ncmFwaHkuc2NzcyIsImNzcy9zY3NzL2Jhc2UvX3N0eWxlZ3VpZGUuc2NzcyIsImNzcy9zY3NzL2xheW91dHMvX2dsb2JhbC5zY3NzIiwiY3NzL3Njc3MvbGF5b3V0cy9faGVhZGVyLnNjc3MiLCJjc3Mvc2Nzcy9sYXlvdXRzL19jb250ZW50LnNjc3MiLCJjc3Mvc2Nzcy9sYXlvdXRzL19mb290ZXIuc2NzcyIsImNzcy9zY3NzL2NvbXBvbmVudHMvX2FsZXJ0cy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fYW5pbWF0aW9ucy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9ucy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fZm9ybXMuc2NzcyIsImNzcy9zY3NzL2NvbXBvbmVudHMvX21lZGlhLnNjc3MiLCJjc3Mvc2Nzcy9jb21wb25lbnRzL19uYXZpZ2F0aW9ucy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fcGFuZWxzLnNjc3MiLCJjc3Mvc2Nzcy9jb21wb25lbnRzL19zZWFyY2gtZm9ybS5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fc2VhcmNoLXJlc3VsdHMuc2NzcyIsImNzcy9zY3NzL2NvbXBvbmVudHMvX3RhYmxlcy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fc29jaWFsLWhlYWRlci5zY3NzIiwiY3NzL3Njc3MvcGFnZXMvX2Vycm9yLTQwNC5zY3NzIiwiY3NzL3Njc3MvcGFnZXMvX2hvbWUuc2NzcyIsImNzcy9zY3NzL3V0aWxpdGllcy9faGVscGVycy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3ByZWZpeGVyLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fcHgtdG8tZW0uc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtYXJnLXBhcnNlci5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JlbmRlci1ncmFkaWVudHMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3NoYXBlLXNpemUtc3RyaXBwZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fZmxleC1ncmlkLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2dyaWQtd2lkdGguc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fZ29sZGVuLXJhdGlvLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19tb2R1bGFyLXNjYWxlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3B4LXRvLWVtLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3JhZGlhbC1ncmFkaWVudC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19zdHJpcC11bml0cy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL190aW50LXNoYWRlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RyYW5zaXRpb24tcHJvcGVydHktbmFtZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYW5pbWF0aW9uLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZmFjZS12aXNpYmlsaXR5LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLWltYWdlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19ib3JkZXItaW1hZ2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JveC1zaXppbmcuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2NvbHVtbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZsZXgtYm94LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19mb250LWZhY2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2h5cGhlbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2hpZHBpLW1lZGlhLXF1ZXJ5LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19pbWFnZS1yZW5kZXJpbmcuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fa2V5ZnJhbWVzLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19saW5lYXItZ3JhZGllbnQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3BlcnNwZWN0aXZlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19yYWRpYWwtZ3JhZGllbnQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3RyYW5zZm9ybS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdXNlci1zZWxlY3Quc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3BsYWNlaG9sZGVyLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2J1dHRvbi5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19jbGVhcmZpeC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19mb250LWZhbWlseS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19oaWRlLXRleHQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9faHRtbDUtaW5wdXQtdHlwZXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcG9zaXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcmV0aW5hLWltYWdlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3NpemUuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fdGltaW5nLWZ1bmN0aW9ucy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL190cmlhbmdsZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvX25lYXQtaGVscGVycy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcHJpdmF0ZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcmVzZXQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX2dyaWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX29tZWdhLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1uZWF0L2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19vdXRlci1jb250YWluZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3NwYW4tY29sdW1ucy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcm93LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1uZWF0L2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19zaGlmdC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcGFkLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1uZWF0L2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19maWxsLXBhcmVudC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fbWVkaWEuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3RvLWRlcHJlY2F0ZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fdmlzdWFsLWdyaWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHJpdmF0ZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19uZXctYnJlYWtwb2ludC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL192aXN1YWwtZ3JpZC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBbUZBQTtFVFNRLG9CU1BnQjtFVFloQixpQlNaZ0I7RVQyQmhCLFlTM0JnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QTdFRnhCLFNBQVMsT0FBTyxTQUFTLFlBQVksUUFBUSxRQUFRLFFBQVEsUUFBUSxNQUFNLEtBQUssU0FBUztFQVNVLFNBQVM7O0FBQzVHLE9BQU8sUUFBUTtFQUFRLFNBQVM7O0FBQ2hDLEtBQUssS0FBSztFQUFjLFNBQVM7RUFBTSxRQUFROztBQUMvQyxV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Y0FBYztFQUFsQixJQUFJO0lBRUksU0FBUzs7QUFJakI7RUFDSSxTQUFTO0VBQ1QsWUFBWTs7QUFHaEI7RUFDSSxVQUFVO0VBQ1YsVUFBVTtFQUNWLE1BQU07RUFDTixRQUFRO0VBQ1IsU0FBUztFQUNULE9BQU87RUFDUCxRQUFRO0VBQ1IsUUFBUTtFQUNaLGVBQWUsVUFBVSxTQUFTLGVBQWUsVUFBVTtJQUcvQyxVQUFVO0lBQ1YsVUFBVTtJQUNWLE1BQU07SUFDTixRQUFRO0lBQ1IsT0FBTztJQUNQLFFBQVE7O0FBS3BCO0VBQ0ksWUFBWTs7QUFHaEI7RUFDSSxPQUFPO0VBQVgsTUFBTSxTQUFTLE1BQU07SUFHYixTQUFTO0lBQ1QsU0FBUztFQUNqQixNQUFNO0lBRUUsT0FBTzs7QUFJZixHQUFHO0VBRUMsVUFBVTtFQUNWLEtBQUs7RUFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdsb2JhbCBTdHlsZXNoZWV0IChJbmNsdWRlcyBtZWRpYSBxdWVyaWVzKVxuLy8gU3R5bGVzIHRoYXQgdXNlcyBtZWRpYSBxdWVyaWVzIGZvciBtb2Rlcm4gYnJvd3NlciBzdXBwb3J0XG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgQ29uZmlndXJhdGlvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0IFwidXRpbGl0aWVzL2ltcG9ydHNcIjsiLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2xvYmFsIEltcG9ydHNcbi8vIENvbmZpZ3VyZWQgY29tcG9uZW50IGltcG9ydHMgZm9yIHRoZSBzaXRlL2FwcGxpY2F0aW9uXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgSW1wb3J0c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXHQvLyAxLiBJbXBvcnQgQ29uZmlndXJhdGlvbnNcdFx0XHRcdFx0XHRcdCAgKFJlcXVpcmVkKVxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdEBpbXBvcnQgXCJib3VyYm9uXCI7XG5cdEBpbXBvcnQgXCJuZWF0XCI7XG5cdFxuXG5cdC8vIDIuIEltcG9ydCBHcmlkLCBGdW5jdGlvbnMgJiBTZXR0aW5nc1x0XHRcdFx0ICAoUmVxdWlyZWQpXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0QGltcG9ydCBcInV0aWxpdGllcy9mdW5jdGlvbnNcIjtcblx0QGltcG9ydCBcInV0aWxpdGllcy9zZXR0aW5nc1wiO1xuXG5cblx0Ly8gMy4gSW1wb3J0IEJhc2UgXHRcdFx0XHRcdFx0XHRcdFx0ICAoUmVxdWlyZWQpXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0QGltcG9ydCBcImJhc2Uvbm9ybWFsaXplXCI7XG5cdEBpbXBvcnQgXCJiYXNlL3R5cG9ncmFwaHlcIjtcblxuXHRAaW1wb3J0IFwiYmFzZS9zdHlsZWd1aWRlXCI7XG5cblxuXHQvLyA0LiBJbXBvcnQgTGF5b3V0c1xuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdEBpbXBvcnQgXCJsYXlvdXRzL2dsb2JhbFwiO1xuXHRAaW1wb3J0IFwibGF5b3V0cy9oZWFkZXJcIjtcblx0QGltcG9ydCBcImxheW91dHMvY29udGVudFwiO1xuXHRAaW1wb3J0IFwibGF5b3V0cy9mb290ZXJcIjtcblxuXG5cdC8vIDUuIEltcG9ydCBDb21wb25lbnRzXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0QGltcG9ydCBcImNvbXBvbmVudHMvYWxlcnRzXCI7XG5cdEBpbXBvcnQgXCJjb21wb25lbnRzL2FuaW1hdGlvbnNcIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvYnV0dG9uc1wiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9mb3Jtc1wiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9tZWRpYVwiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9uYXZpZ2F0aW9uc1wiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9wYW5lbHNcIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvc2VhcmNoLWZvcm1cIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvc2VhcmNoLXJlc3VsdHNcIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvdGFibGVzXCI7XG5cdEBpbXBvcnQgXCJjb21wb25lbnRzL3NvY2lhbC1oZWFkZXJcIjtcblx0XG5cdFxuXHQvLyA2LiBJbXBvcnQgUGFnZXNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRAaW1wb3J0IFwicGFnZXMvZXJyb3ItNDA0XCI7XG5cdEBpbXBvcnQgXCJwYWdlcy9ob21lXCI7XG5cdFxuXG5cdC8vIDcuIEltcG9ydCBWZW5kb3JzXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8gQGltcG9ydCBcInZlbmRvcnMvcGFydGlhbC1uYW1lXCI7XG5cblxuXHQvLyA4LiBJbXBvcnQgQWRkaXRpb25hbCBVdGlsaXRpZXNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRAaW1wb3J0IFwidXRpbGl0aWVzL2hlbHBlcnNcIjsiLCIvLyBTZXR0aW5nc1xuQGltcG9ydCBcInNldHRpbmdzL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvcHgtdG8tZW1cIjtcblxuLy8gQ3VzdG9tIEhlbHBlcnNcbkBpbXBvcnQgXCJoZWxwZXJzL2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtYXJnLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JlbmRlci1ncmFkaWVudHNcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3NoYXBlLXNpemUtc3RyaXBwZXJcIjtcblxuLy8gQ3VzdG9tIEZ1bmN0aW9uc1xuQGltcG9ydCBcImZ1bmN0aW9ucy9mbGV4LWdyaWRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JpZC13aWR0aFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9nb2xkZW4tcmF0aW9cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvbGluZWFyLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL21vZHVsYXItc2NhbGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHgtdG8tZW1cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcmFkaWFsLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3N0cmlwLXVuaXRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RpbnQtc2hhZGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lXCI7XG5cbi8vIENTUzMgTWl4aW5zXG5AaW1wb3J0IFwiY3NzMy9hbmltYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tmYWNlLXZpc2liaWxpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtaW1hZ2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JvcmRlci1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvYm9yZGVyLXJhZGl1c1wiO1xuQGltcG9ydCBcImNzczMvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xuQGltcG9ydCBcImNzczMvZmxleC1ib3hcIjtcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmFjZVwiO1xuQGltcG9ydCBcImNzczMvaHlwaGVuc1wiO1xuQGltcG9ydCBcImNzczMvaGlkcGktbWVkaWEtcXVlcnlcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlLXJlbmRlcmluZ1wiO1xuQGltcG9ydCBcImNzczMvaW5saW5lLWJsb2NrXCI7XG5AaW1wb3J0IFwiY3NzMy9rZXlmcmFtZXNcIjtcbkBpbXBvcnQgXCJjc3MzL2xpbmVhci1ncmFkaWVudFwiO1xuQGltcG9ydCBcImNzczMvcGVyc3BlY3RpdmVcIjtcbkBpbXBvcnQgXCJjc3MzL3JhZGlhbC1ncmFkaWVudFwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNmb3JtXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLXNlbGVjdFwiO1xuQGltcG9ydCBcImNzczMvcGxhY2Vob2xkZXJcIjtcblxuLy8gQWRkb25zICYgb3RoZXIgbWl4aW5zXG5AaW1wb3J0IFwiYWRkb25zL2J1dHRvblwiO1xuQGltcG9ydCBcImFkZG9ucy9jbGVhcmZpeFwiO1xuQGltcG9ydCBcImFkZG9ucy9mb250LWZhbWlseVwiO1xuQGltcG9ydCBcImFkZG9ucy9oaWRlLXRleHRcIjtcbkBpbXBvcnQgXCJhZGRvbnMvaHRtbDUtaW5wdXQtdHlwZXNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcG9zaXRpb25cIjtcbkBpbXBvcnQgXCJhZGRvbnMvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcmV0aW5hLWltYWdlXCI7XG5AaW1wb3J0IFwiYWRkb25zL3NpemVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGltaW5nLWZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy90cmlhbmdsZVwiO1xuXG4vLyBTb29uIHRvIGJlIGRlcHJlY2F0ZWQgTWl4aW5zXG5AaW1wb3J0IFwiYm91cmJvbi1kZXByZWNhdGVkLXVwY29taW5nXCI7XG4iLCIvLyBCb3VyYm9uIE5lYXQgMS42LjAucHJlXG4vLyBNSVQgTGljZW5zZWRcbi8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIHRob3VnaHRib3QsIGluYy5cblxuLy8gSGVscGVyc1xuQGltcG9ydCBcIm5lYXQtaGVscGVyc1wiO1xuXG4vLyBHcmlkXG5AaW1wb3J0IFwiZ3JpZC9wcml2YXRlXCI7XG5AaW1wb3J0IFwiZ3JpZC9yZXNldFwiO1xuQGltcG9ydCBcImdyaWQvZ3JpZFwiO1xuQGltcG9ydCBcImdyaWQvb21lZ2FcIjtcbkBpbXBvcnQgXCJncmlkL291dGVyLWNvbnRhaW5lclwiO1xuQGltcG9ydCBcImdyaWQvc3Bhbi1jb2x1bW5zXCI7XG5AaW1wb3J0IFwiZ3JpZC9yb3dcIjtcbkBpbXBvcnQgXCJncmlkL3NoaWZ0XCI7XG5AaW1wb3J0IFwiZ3JpZC9wYWRcIjtcbkBpbXBvcnQgXCJncmlkL2ZpbGwtcGFyZW50XCI7XG5AaW1wb3J0IFwiZ3JpZC9tZWRpYVwiO1xuQGltcG9ydCBcImdyaWQvdG8tZGVwcmVjYXRlXCI7XG5AaW1wb3J0IFwiZ3JpZC92aXN1YWwtZ3JpZFwiO1xuIiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZ1bmN0aW9ucyBhbmQgTWl4aW5zXG4vLyBPcmdhbml6ZXMgU1RBTVAgYW5kIGN1c3RvbSBTYXNzIG1peGlucyBmb3IgdGhlIHByb2plY3QuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS9cblxuXG4vLyBDb252ZXJ0IFB4IHRvIFJlbVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0vXG5cblx0LypcbiAgICBWYXJpYWJsZTogZm9udHNpemUtcm9vdFxuICAgICdweCcgZm9udCBzaXplIG9uIHJvb3QgKGh0bWwpIGVsZW1lbnQgKHdpdGggdW5pdHMgcmVtb3ZlZCkuICBCcm93c2VyIGRlZmF1bHQgaXMgMTZweC4gIFVzZWQgdG8gZGV0ZXJtaW5lIHNpemVzIGZvciByZW0gZnVuY3Rpb24uXG5cbiAgICAtQCBiYXNlZCBvbiBodHRwOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvY3NzL2xlc3MtbWl4aW4tZm9yLXJlbS1mb250LXNpemluZy9cbiAgICAqL1xuICAgICRmb250c2l6ZS1yb290OiAxNiAhZGVmYXVsdDtcblxuICAgIC8qXG4gICAgTWl4aW46IHJlbSAoaHR0cHM6Ly9naXRodWIuY29tL3RvYnltYWNrZW56aWUvaHRtbC1ib2lsZXJwbGF0ZS9ibG9iL21hc3Rlci93ZWIvXy9zdHlsZXMvc3JjL21peGlucy9fdW5pdHMuc2NzcylcbiAgICBPdXRwdXQgYSBwcm9wZXJ0eSB3aXRoIHBpeGVsIHZhbHVlcyBmb3Igbm9uICdyZW0nIHN1cHBvcnRpbmcgYnJvd3NlcnMgZm9sbG93ZWQgYnkgdGhlICdyZW0nIGVxdWl2YWxlbnQgZm9yIHJlbSBzdXBwb3J0IGJyb3dzZXJzLiAgQ2FuJ3QgY3VycmVudGx5IGFjY2VwdCB2YWx1ZXMgd2l0aCBjb21tYSBzZXBhcmF0aW9uLCBsaWtlIG11bHRpcGxlIGJhY2tncm91bmRzIG9yIHRoZSBsaWtlLlxuXG4gICAgLUAgYmFzZWQgb24gaHR0cDovL2h1Z29naXJhdWRlbC5jb20vMjAxMy8wMy8xOC91bHRpbWF0ZS1yZW0tbWl4aW4vXG4gICAgKi9cblxuICAgIEBtaXhpbiByZW0oJHByb3BlcnR5LCAkdmFsdWVzKSB7XG4gICAgICAgICRweDogKCk7XG4gICAgICAgICRyZW06ICgpO1xuXG4gICAgICAgIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWVze1xuICAgICAgICAgICAgLy8tLWdldCB1bml0IG9yICduYW4nIGlmIHRoZSB2YWx1ZSBpc24ndCBhIG51bWJlclxuICAgICAgICAgICAgLy8gJHVuaXQ6IGlmKHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJywgdW5pdCgkdmFsdWUpLCAnbmFuJyk7XG4gICAgICAgICAgICAkdW5pdDogJ25hbic7XG4gICAgICAgICAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXIne1xuICAgICAgICAgICAgICAgIEBpZiB1bml0bGVzcygkdmFsdWUpe1xuICAgICAgICAgICAgICAgICAgICAkdW5pdDogJ3VuaXRsZXNzJztcbiAgICAgICAgICAgICAgICB9QGVsc2V7XG4gICAgICAgICAgICAgICAgICAgICR1bml0OiB1bml0KCR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLy0tdW5pdGxlc3MgbnVtYmVycyBhcmUgYWRkZWQgYXMgaWYgdGhleSBhcmUgaW4gcGl4XG4gICAgICAgICAgICBAaWYgJHVuaXQgPT0gJ3VuaXRsZXNzJyBhbmQgJHZhbHVlICE9IDB7XG4gICAgICAgICAgICAgICAgJHB4IDogYXBwZW5kKCRweCwgJHZhbHVlICsgcHgpO1xuICAgICAgICAgICAgICAgICRyZW06IGFwcGVuZCgkcmVtLCAoJHZhbHVlIC8gJGZvbnRzaXplLXJvb3QgKyByZW0pKTtcbiAgICAgICAgICAgIC8vLS1weCBvciByZW0gZ2V0IGFkZGVkIHRvIHRoZWlyIGxpc3QgYW5kIHRoZW4gY29udmVydGVkIHRvIHRoZSBvdGhlciB1bml0XG4gICAgICAgICAgICB9QGVsc2UgaWYgJHVuaXQgPT0gJ3B4JyBvciAkdW5pdCA9PSAncmVtJ3tcbiAgICAgICAgICAgICAgICAkdW5pdGxlc3NWYWw6IHN0cmlwVW5pdCgkdmFsdWUpO1xuICAgICAgICAgICAgICAgIEBpZiAkdW5pdCA9PSAncHgne1xuICAgICAgICAgICAgICAgICAgICAkcHggOiBhcHBlbmQoJHB4LCAkdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAkcmVtOiBhcHBlbmQoJHJlbSwgKCR1bml0bGVzc1ZhbCAvICRmb250c2l6ZS1yb290ICsgcmVtKSk7XG4gICAgICAgICAgICAgICAgfUBlbHNlIGlmICR1bml0ID09ICdyZW0ne1xuICAgICAgICAgICAgICAgICAgICAkcHggOiBhcHBlbmQoJHB4LCgkdW5pdGxlc3NWYWwgKiAkZm9udHNpemUtcm9vdCArIHB4KSk7XG4gICAgICAgICAgICAgICAgICAgICRyZW06IGFwcGVuZCgkcmVtLCAkdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vLS1hbGwgb3RoZXIgdW5pdHMgZ2V0IGFwcGVuZGVkIGRpcmVjdGx5XG4gICAgICAgICAgICB9QGVsc2V7XG4gICAgICAgICAgICAgICAgJHB4IDogYXBwZW5kKCRweCAsICR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgJHJlbTogYXBwZW5kKCRyZW0sICR2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJHB4ID09ICRyZW0ge1xuICAgICAgICAgICAgI3skcHJvcGVydHl9OiAkcHg7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgI3skcHJvcGVydHl9OiAkcHg7XG4gICAgICAgICAgICAjeyRwcm9wZXJ0eX06ICRyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgIE1peGluOiBzdHJpcFVuaXRcbiAgICBTdHJpcCB0aGUgdW5pdCBmcm9tIGEgdmFsdWUgdGhhdCBoYXMgYSB1bml0XG5cbiAgICAtQCBiYXNlZCBvbiBodHRwOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvY3NzL2xlc3MtbWl4aW4tZm9yLXJlbS1mb250LXNpemluZy9cbiAgICAqL1xuICAgIEBmdW5jdGlvbiBzdHJpcFVuaXQoJG51bSkge1xuICAgICAgICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcbiAgICB9XG5cblx0Ly8gRm9udC1mYWNlIE1peGluXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRAbWl4aW4gZGVjbGFyZS1mb250LWZhY2UoJGZvbnQtZmFtaWx5LCAkZm9udC1maWxlbmFtZSwgJGZvbnQtd2VpZ2h0IDogbm9ybWFsLCAkZm9udC1zdHlsZSA6bm9ybWFsLCAkZm9udC1zdHJldGNoIDogbm9ybWFsKSB7XG5cdFx0QGZvbnQtZmFjZSB7XG5cdFx0XHRmb250LWZhbWlseTogJyN7JGZvbnQtZmFtaWx5fSc7XG5cdFx0XHRcdHNyYzogdXJsKCcuLi9mb250cy8jeyRmb250LWZpbGVuYW1lfS5lb3QnKTtcblx0XHRcdFx0c3JjOiB1cmwoJy4uL2ZvbnRzLyN7JGZvbnQtZmlsZW5hbWV9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG5cdFx0XHRcdHVybCgnLi4vZm9udHMvI3skZm9udC1maWxlbmFtZX0ud29mZicpIGZvcm1hdCgnd29mZicpLFxuXHRcdFx0XHR1cmwoJy4uL2ZvbnRzLyN7JGZvbnQtZmlsZW5hbWV9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHRcdFx0dXJsKCcuLi9mb250cy8jeyRmb250LWZpbGVuYW1lfS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQ7XG5cdFx0XHRmb250LXN0eWxlOiAkZm9udC1zdHlsZTtcblx0XHRcdGZvbnQtc3RyZXRjaDogJGZvbnQtc3RyZXRjaDtcblx0XHR9XG5cdH1cblxuXG5cbi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuXG4vLyBDdXN0b20gc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBmbGV4Ym94XG5AbWl4aW4gYm94KCRvcmllbnQ6IGlubGluZS1heGlzLCAkcGFjazogc3RhcnQsICRhbGlnbjogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBkaXNwbGF5LWJveDtcbiAgQGluY2x1ZGUgYm94LW9yaWVudCgkb3JpZW50KTtcbiAgQGluY2x1ZGUgYm94LXBhY2soJHBhY2spO1xuICBAaW5jbHVkZSBib3gtYWxpZ24oJGFsaWduKTtcbn1cblxuQG1peGluIGRpc3BsYXktYm94IHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tb3otYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDsgLy8gSUUgMTBcbiAgZGlzcGxheTogYm94O1xufVxuXG5AbWl4aW4gYm94LW9yaWVudCgkb3JpZW50OiBpbmxpbmUtYXhpcykge1xuLy8gaG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbmxpbmUtYXhpc3xibG9jay1heGlzfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJG9yaWVudCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1wYWNrKCRwYWNrOiBzdGFydCkge1xuLy8gc3RhcnR8ZW5kfGNlbnRlcnxqdXN0aWZ5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkcGFjaywgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcGFjazogJHBhY2s7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWduOiBzdHJldGNoKSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGJhc2VsaW5lfHN0cmV0Y2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LWFsaWduOiAkYWxpZ247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246IG5vcm1hbCkge1xuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiBzaW5nbGUpIHtcbi8vIHNpbmdsZXxtdWx0aXBsZVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRsaW5lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50OyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgoJHZhbHVlOiAwLjApIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXg6ICR2YWx1ZTsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1mbGV4LWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuLy8gVW5pZmllZCBhdHRyaWJ1dGVzIGZvciAyMDA5LCAyMDExLCBhbmQgMjAxMiBmbGF2b3Vycy5cblxuLy8gMjAwOSAtIGRpc3BsYXkgKGJveCB8IGlubGluZS1ib3gpXG4vLyAyMDExIC0gZGlzcGxheSAoZmxleGJveCB8IGlubGluZS1mbGV4Ym94KVxuLy8gMjAxMiAtIGRpc3BsYXkgKGZsZXggfCBpbmxpbmUtZmxleClcbkBtaXhpbiBkaXNwbGF5KCR2YWx1ZSkge1xuLy8gIGZsZXggfCBpbmxpbmUtZmxleFxuICAgIEBpZiAkdmFsdWUgPT0gXCJmbGV4XCIge1xuICAgICAgICAvLyAyMDA5XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICBkaXNwbGF5OiAtbW96LWJveDtcbiAgICAgICAgZGlzcGxheTogYm94O1xuXG4gICAgICAgIC8vIDIwMTJcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuICAgICAgICBkaXNwbGF5OiAtbW96LWZsZXg7XG4gICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyAyMDExIChJRSAxMClcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcImlubGluZS1mbGV4XCIge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XG4gICAgICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLWJveDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJveDtcblxuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4O1xuICAgICAgICBkaXNwbGF5OiAtbW96LWlubGluZS1mbGV4O1xuICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICAgZGlzcGxheTogJHZhbHVlO1xuICAgIH1cbn1cblxuLy8gMjAwOSAtIGJveC1mbGV4IChpbnRlZ2VyKVxuLy8gMjAxMSAtIGZsZXggKGRlY2ltYWwgfCB3aWR0aCBkZWNpbWFsKVxuLy8gMjAxMiAtIGZsZXggKGludGVnZXIgaW50ZWdlciB3aWR0aClcbkBtaXhpbiBmbGV4KCR2YWx1ZSkge1xuXG4gICAgLy8gR3JhYiBmbGV4LWdyb3cgZm9yIG9sZGVyIGJyb3dzZXJzLlxuICAgICRmbGV4LWdyb3c6IG50aCgkdmFsdWUsIDEpO1xuXG4gICAgLy8gMjAwOVxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkZmxleC1ncm93LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApLCAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gYm94LW9yaWVudCAoIGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcylcbi8vICAgICAgLSBib3gtZGlyZWN0aW9uIChub3JtYWwgfCByZXZlcnNlKSAgICAgIFxuLy8gMjAxMSAtIGZsZXgtZGlyZWN0aW9uIChyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlKVxuLy8gMjAxMiAtIGZsZXgtZGlyZWN0aW9uIChyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlKVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCR2YWx1ZTogcm93KSB7XG5cbiAgICAvLyBBbHQgdmFsdWVzLlxuICAgICR2YWx1ZS0yMDA5OiAkdmFsdWU7XG4gICAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgICAkZGlyZWN0aW9uOiBcIm5vcm1hbFwiO1xuXG4gICAgQGlmICR2YWx1ZSA9PSByb3cge1xuICAgICAgICAkdmFsdWUtMjAwOTogaG9yaXpvbnRhbDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInJvdy1yZXZlcnNlXCIge1xuICAgICAgICAkdmFsdWUtMjAwOTogaG9yaXpvbnRhbDtcbiAgICAgICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBjb2x1bW4ge1xuICAgICAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJjb2x1bW4tcmV2ZXJzZVwiIHtcbiAgICAgICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICAgICAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xuICAgIH1cblxuICAgIC8vIDIwMDlcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkdmFsdWUtMjAwOSwgd2Via2l0IG1veiBzcGVjKTtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBcInJldmVyc2VcIiB7XG4gICAgICAgIEBpbmNsdWRlIHByZWZpeGVyKGJveC1kaXJlY3Rpb24sICRkaXJlY3Rpb24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgfVxuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZGlyZWN0aW9uLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDExIChJRSAxMClcbiAgICAtbXMtZmxleC1kaXJlY3Rpb246ICR2YWx1ZTtcbn1cblxuLy8gMjAwOSAtIGJveC1saW5lcyAoc2luZ2xlIHwgbXVsdGlwbGUpXG4vLyAyMDExIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxuLy8gMjAxMiAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcbkBtaXhpbiBmbGV4LXdyYXAoJHZhbHVlOiBub3dyYXApIHtcblxuICAgIC8vIEFsdCB2YWx1ZXMuXG4gICAgJGFsdC12YWx1ZTogJHZhbHVlO1xuICAgIEBpZiAkdmFsdWUgPT0gbm93cmFwIHtcbiAgICAgICAgJGFsdC12YWx1ZTogc2luZ2xlO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IHdyYXAge1xuICAgICAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcIndyYXAtcmV2ZXJzZVwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDExIC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDEyIC0gZmxleC1mbG93IChmbGV4LWRpcmVjdGlvbiB8fCBmbGV4LXdyYXApXG5AbWl4aW4gZmxleC1mbG93KCR2YWx1ZSkge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZmxvdywgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gYm94LW9yZGluYWwtZ3JvdXAgKGludGVnZXIpXG4vLyAyMDExIC0gZmxleC1vcmRlciAoaW50ZWdlcilcbi8vIDIwMTIgLSBvcmRlciAoaW50ZWdlcilcbkBtaXhpbiBvcmRlcigkaW50OiAwKSB7XG4gICAgLy8gMjAwOVxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKG9yZGVyLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApXG4gICAgLW1zLWZsZXgtb3JkZXI6ICRpbnQ7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWdyb3cgKG51bWJlcilcbkBtaXhpbiBmbGV4LWdyb3coJG51bWJlcjogMCkge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgICAtbXMtZmxleC1wb3NpdGl2ZTogJG51bWJlcjtcbn1cblxuLy8gMjAxMiAtIGZsZXgtc2hyaW5rIChudW1iZXIpXG5AbWl4aW4gZmxleC1zaHJpbmsoJG51bWJlcjogMSkge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtc2hyaW5rLCAkbnVtYmVyLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1iYXNpcyAobnVtYmVyKVxuQG1peGluIGZsZXgtYmFzaXMoJHdpZHRoOiBhdXRvKSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1iYXNpcywgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAkd2lkdGg7XG59XG5cbi8vIDIwMDkgLSBib3gtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxuLy8gMjAxMSAtIGZsZXgtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxuLy8gMjAxMiAtIGp1c3RpZnktY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZClcbkBtaXhpbiBqdXN0aWZ5LWNvbnRlbnQgKCR2YWx1ZTogZmxleC1zdGFydCkge1xuXG4gICAgLy8gQWx0IHZhbHVlcy5cbiAgICAkYWx0LXZhbHVlOiAkdmFsdWU7XG4gICAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IGVuZDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IGp1c3RpZnk7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAvLyAyMDA5XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoanVzdGlmeS1jb250ZW50LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LXBhY2s6ICRhbHQtdmFsdWU7XG59XG5cbi8vIDIwMDkgLSBib3gtYWxpZ24gKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuLy8gMjAxMSAtIGZsZXgtYWxpZ24gKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWl0ZW1zIChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24taXRlbXMoJHZhbHVlOiBzdHJldGNoKSB7XG5cbiAgICAkYWx0LXZhbHVlOiAkdmFsdWU7XG5cbiAgICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gICAgfSAgICBcblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IGVuZDtcbiAgICB9XG5cbiAgICAvLyAyMDA5XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWl0ZW1zLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbiAgICBcbiAgICAvLyAyMDExIChJRSAxMClcbiAgICAtbXMtZmxleC1hbGlnbjogJGFsdC12YWx1ZTsgICAgXG59XG5cbi8vIDIwMTEgLSBmbGV4LWl0ZW0tYWxpZ24gKGF1dG8gfCBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1zZWxmIChhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLXNlbGYoJHZhbHVlOiBhdXRvKSB7XG5cbiAgICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAgIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gICAgfSAgICBcblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gICAgfVxuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLXNlbGYsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246ICR2YWx1ZS0yMDExO1xufVxuXG4vLyAyMDExIC0gZmxleC1saW5lLXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSB8IGRpc3RyaWJ1dGUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWNvbnRlbnQoJHZhbHVlOiBzdHJldGNoKSB7XG5cbiAgICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAgIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gICAgfSAgICBcblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICAgICAkdmFsdWUtMjAxMToganVzdGlmeTtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcbiAgICAgICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XG4gICAgfVxuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogJHZhbHVlLTIwMTE7XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gT21lZ2EgUmVzZXQgZm9yIEJvdXJib24gTmVhdFxuLy9cbi8vIGh0dHA6Ly9qb3NoZnJ5Lm1lL25vdGVzL29tZWdhLXJlc2V0LWZvci1ib3VyYm9uLW5lYXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIG9tZWdhLXJlc2V0KCRudGgpIHtcbiAgJjpudGgtY2hpbGQoI3skbnRofSkgeyBtYXJnaW4tcmlnaHQ6IGZsZXgtZ3V0dGVyKCRncmlkLWNvbHVtbnMsICRndXR0ZXIpOyB9XG4gICY6bnRoLWNoaWxkKCN7JG50aH0rMSkgeyBjbGVhcjogbm9uZSB9XG59XG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2xvYmFsIFNldHRpbmdzXG4vLyBDZW50cmFsIGxvY2F0aW9uIGZvciBwcm9qZWN0LWxldmVsIHZhcmlhYmxlcy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gTGF5b3V0IFNldHRpbmdzXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblx0Ly8gTWVkaWEgUXVlcmllc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0JHBob25lOiAzMjBweDtcdFx0XHRcdFx0XHQvLyBtaW4td2lkdGggMzIwcHhcblx0JHRhYmxldDogNjQwcHg7XHRcdFx0XHRcdFx0Ly8gbWluLXdpZHRoIDY0MHB4XG5cdCRkZXNrdG9wOiA5NjBweDtcdFx0XHRcdFx0XHQvLyBtaW4td2lkdGggOTYwcHhcblxuXHQvLyRjb250YWluZXJfbWluX3dpZHRoOiAkcGhvbmU7XG5cdC8vJGNvbnRhaW5lcl9tYXhfd2lkdGg6IDk2MHB4O1xuXG5cblx0Ly8gR3JpZHNcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJGNvbHVtbnM6IDEyO1xuXHQvLyRjb2x1bW5fd2lkdGg6IDYwcHg7XG5cdC8vJGd1dHRlcl93aWR0aDogMjBweDtcblxuXG5cdC8vIEJvcmRlciBSYWRpdXNcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJGJvcmRlcl9yYWRpdXM6IDNweDtcdFx0XHRcdFx0Ly8gc2V0IHRvIDAgZm9yIG5vbmVcblxuXG5cbi8vIENvbG9yIFNldHRpbmdzXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblx0Ly8gQnJhbmQgU3BlY2lmaWNcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdCRjb2xvcl9wcmltYXJ5OiAjY2MwMDAwO1xuXHQkY29sb3Jfc2Vjb25kYXJ5OiAjMDAwMDAwO1xuXHQkY29sb3JfdGVydGlhcnk6ICNmZmZmZmY7XG5cblx0JGNvbG9yXzQ6ICNmMmYyZjI7XG5cdCRjb2xvcl81OiAjY2NjY2NjO1xuXHQkY29sb3JfNjogIzY2NjY2Njtcblx0JGNvbG9yXzc6ICMzMzMzMzM7XG5cblx0JGNvbG9yXzg6ICM5OTAwMDA7XG5cdCRjb2xvcl85OiAjZDE0OTA1O1xuXHQkY29sb3JfMTA6ICNmZGQ3MjY7XG5cdCRjb2xvcl8xMTogIzdkOGMxZjtcblx0JGNvbG9yXzEyOiAjNDI3ZTkzO1xuXHQkY29sb3JfMTM6ICM0MTU2YTE7XG5cblxuXG5cdC8vIEluZm9ybWF0aW9uIGFuZCBWYWxpZGF0aW9uXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyRicmFuZF9pbmZvOiAjNDI4YmNhO1xuXHQvLyRicmFuZF9lcnJvcjogI2Q5NTM0Zjtcblx0Ly8kYnJhbmRfc3VjY2VzczogIzVjYjg1YztcblxuXG5cdC8vIFRleHQgYW5kIExpbmtzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyR0ZXh0X2NvbG9yOiAjMzMzO1xuXHQvLyRsaW5rX2NvbG9yOiAkYnJhbmRfaW5mbztcblx0Ly8kbGlua19jb2xvcl9ob3ZlcjogZGFya2VuKCRsaW5rX2NvbG9yLCAxNSUpO1xuXG5cblxuLy8gVHlwb2dyYXBoeSBTZXR0aW5nc1xuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cdC8vIEJhc2UgU2l6ZSAobXVzdCB1c2UgcHggdmFsdWUpXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyRiYXNlX2ZvbnRfc2l6ZTogMTZweDtcblx0Ly8kYmFzZV9saW5lX2hlaWdodDogMS41O1xuXG5cblx0Ly8gSGVhZGluZ3Ncblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJGhlYWRlcl9mb250X2ZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBcIkhlbHZldGljYVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuXHQvLyRoZWFkZXJfZm9udF93ZWlnaHQ6IGJvbGQ7XG5cdC8vJGhlYWRlcl9mb250X3N0eWxlOiBub3JtYWw7XG5cdC8vJGhlYWRlcl9saW5lX2hlaWdodDogMS4zO1xuXHQvLyRoZWFkZXJfdG9wX21hcmdpbjogNXB4O1xuXHQvLyRoZWFkZXJfYm90dG9tX21hcmdpbjogMjBweDtcblx0Ly8kaGVhZGVyX3RleHRfcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG5cblx0Ly8kaDFfZm9udF9zaXplOiA0NHB4O1xuXHQvLyRoMl9mb250X3NpemU6IDM3cHg7XG5cdC8vJGgzX2ZvbnRfc2l6ZTogMjdweDtcblx0Ly8kaDRfZm9udF9zaXplOiAyM3B4O1xuXHQvLyRoNV9mb250X3NpemU6IDE4cHg7XG5cdC8vJGg2X2ZvbnRfc2l6ZTogMTZweDtcblxuXG5cdC8vIFBhcmFncmFwaHNcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJHBhcmFncmFwaF9mb250X2ZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBcIkhlbHZldGljYVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuXHQvLyRwYXJhZ3JhcGhfZm9udF93ZWlnaHQ6IG5vcm1hbDtcblx0Ly8kcGFyYWdyYXBoX2ZvbnRfc2l6ZTogJGJhc2VfZm9udF9zaXplO1xuXHQvLyRwYXJhZ3JhcGhfbGluZV9oZWlnaHQ6IDEuNTtcblx0Ly8kcGFyYWdyYXBoX21hcmdpbl9ib3R0b206IDIwcHg7XG5cdC8vJHBhcmFncmFwaF90ZXh0X3JlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuXG5cblx0Ly8gTGlua3Ncblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJGxpbmtfdGV4dF9kZWNvcmF0aW9uOiBub25lO1xuXG5cblx0Ly8gQmxvY2txdW90ZXNcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJGJsb2NrcXVvdGVfcGFkZGluZzogMTBweCAyMHB4O1xuXHQvLyRibG9ja3F1b3RlX21hcmdpbjogMCAwIDIwcHg7XG5cblxuXG4vLyBBbGVydHMgU2V0dGluZ3Ncbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXHQvLyRhbGVydGJveF9mb250X2NvbG9yOiAjZmZmO1xuXHQvLyRhbGVydGJveF9tYXJnaW46IDE2cHg7XG5cblxuXG4vLyBNZWRpYSBTZXR0aW5nc1xuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cdC8vJGZpZ3VyZV9iYWNrZ3JvdW5kOiAjMDAwO1xuXHQvLyRmaWd1cmVfbWFyZ2luOiAwIDAgMTZweDtcblx0Ly8kZmlndXJlX29wYWNpdHk6IC45O1xuXHQvLyRmaWd1cmVfb3BhY2l0eV9ob3ZlcjogMTtcblxuXG5cbi8vIEZvcm1zIFNldHRpbmdzXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblx0Ly8kZm9ybV9tYXJnaW46IDAgMCAxNnB4O1xuXG5cdC8vJGlucHV0X2ZvY3VzX2JvcmRlcl9jb2xvcjogJGJyYW5kX3RlcnRpYXJ5O1xuXHQvLyRpbnB1dF9mb2N1c19ib3JkZXJfd2lkdGg6IDJweDtcblx0Ly8kaW5wdXRfZm9jdXNfYmFja2dyb3VuZDogbGlnaHRlbigkYnJhbmRfdGVydGlhcnksIDM1JSk7XG5cblxuXG4vLyBCdXR0b25zIFNldHRpbmdzXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblx0Ly8kYnV0dG9uX3BhZGRpbmc6IDEwcHggMjBweDtcblx0Ly8kYnV0dG9uX2JhY2tncm91bmQ6ICRicmFuZF9wcmltYXJ5O1xuXHQvLyRidXR0b25fdGV4dF9jb2xvcjogI2ZmZjtcblxuXG5cbi8vIFRhYmxlIFNldHRpbmdzXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblx0Ly8kdGFibGVfY2VsbF9wYWRkaW5nOiA4cHg7XG5cdC8vJHRhYmxlX2NlbGxfYm9yZGVyX3dpZHRoOiAxcHg7XG5cdC8vJHRhYmxlX2NlbGxfYm9yZGVyX3N0eWxlOiBzb2xpZDtcblx0Ly8kdGFibGVfY2VsbF9ib3JkZXJfY29sb3I6ICNmZmY7XG5cblxuXHQvLyBIZWFkZXJcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJHRhYmxlX2hlYWRlcl9iYWNrZ3JvdW5kOiAkYnJhbmRfcHJpbWFyeTtcblx0Ly8kdGFibGVfaGVhZGVyX2NvbG9yOiAjZmZmO1xuXG5cblx0Ly8gWmVicmEgU3RyaXBlc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kdGFibGVfYWx0X3Jvd19iYWNrZ3JvdW5kOiBsaWdodGVuKCRicmFuZF9wcmltYXJ5LCA3MCUpO1xuXG5cblx0Ly8gRm9vdGVyXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyR0YWJsZV9mb290ZXJfYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdC8vJHRhYmxlX2Zvb3Rlcl9ib3JkZXJfd2lkdGg6IDJweDtcblx0Ly8kdGFibGVfZm9vdGVyX2JvcmRlcl9zdHlsZTogc29saWQ7XG5cdC8vJHRhYmxlX2Zvb3Rlcl9ib3JkZXJfY29sb3I6ICRicmFuZF90ZXJ0aWFyeTsiLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTm9ybWFsaXplIFBhcnRpYWxcbi8vIE1ha2VzIGJyb3dzZXJzIHJlbmRlciBhbGwgZWxlbWVudHMgbW9yZSBjb25zaXN0ZW50bHkuXG4vLyBub3JtYWxpemUuY3NzIHYyLjEuMyB8IE1JVCBMaWNlbnNlIHwgZ2l0LmlvL25vcm1hbGl6ZVxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5IHsgZGlzcGxheTogYmxvY2s7IH1cbmF1ZGlvLCBjYW52YXMsIHZpZGVvIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG5hdWRpbzpub3QoW2NvbnRyb2xzXSkgeyBkaXNwbGF5OiBub25lOyBoZWlnaHQ6IDA7IH1cbltoaWRkZW5dLCB0ZW1wbGF0ZSB7IGRpc3BsYXk6IG5vbmU7IH1cblxuXG4vLyBCYXNlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuaHRtbCB7IGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB9XG5ib2R5IHsgbWFyZ2luOiAwOyB9XG4qLCAqOmJlZm9yZSwgKjphZnRlciB7IC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cblxuLy8gTGlua3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5hIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbmE6Zm9jdXMgeyBvdXRsaW5lOiB0aGluIGRvdHRlZDsgfVxuYTphY3RpdmUsIGE6aG92ZXIgeyBvdXRsaW5lOiAwOyB9XG5cblxuLy8gVHlwb2dyYXBoeVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmgxIHsgZm9udC1zaXplOiAyZW07IG1hcmdpbjogMC42N2VtIDA7IH1cbmFiYnJbdGl0bGVdIHsgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDsgfVxuYiwgc3Ryb25nIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cbmRmbiB7IGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuaHIgeyAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAwOyB9XG5tYXJrIHsgYmFja2dyb3VuZDogI2ZmMDsgY29sb3I6ICMwMDA7IH1cbmNvZGUsIGtiZCwgcHJlLCBzYW1wIHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgc2VyaWY7IGZvbnQtc2l6ZTogMWVtOyB9XG5wcmUgeyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH1cbnEgeyBxdW90ZXM6IFwiXFwyMDFDXCIgXCJcXDIwMURcIiBcIlxcMjAxOFwiIFwiXFwyMDE5XCI7IH1cbnNtYWxsIHsgZm9udC1zaXplOiA4MCU7IH1cbnN1Yiwgc3VwIHsgZm9udC1zaXplOiA3NSU7IGxpbmUtaGVpZ2h0OiAwOyBwb3NpdGlvbjogcmVsYXRpdmU7IHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuc3VwIHsgdG9wOiAtMC41ZW07IH1cbnN1YiB7IGJvdHRvbTogLTAuMjVlbTsgfVxuXG5cbi8vIEVtYmVkZGVkIGNvbnRlbnRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5pbWcsIGlmcmFtZSwgdmlkZW8geyBtYXgtd2lkdGg6IDEwMCU7IH1cbmltZyB7IGhlaWdodDogYXV0bzsgYm9yZGVyOiAwOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5zdmc6bm90KDpyb290KSB7IG92ZXJmbG93OiBoaWRkZW47IH1cblxuXG4vLyBGaWd1cmVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZmlndXJlIHsgbWFyZ2luOiAwOyB9XG5cblxuLy8gRm9ybXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5maWVsZHNldCB7IGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7IG1hcmdpbjogMCAycHg7IHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsgfVxubGVnZW5kIHsgYm9yZGVyOiAwOyBwYWRkaW5nOiAwOyB9XG5idXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhIHsgZm9udC1mYW1pbHk6IGluaGVyaXQ7IGZvbnQtc2l6ZTogMTAwJTsgbWFyZ2luOiAwOyB9XG5idXR0b24sIGlucHV0IHsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgfVxuYnV0dG9uLCBzZWxlY3QgeyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuYnV0dG9uLFxuaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLCBpbnB1dFt0eXBlPVwicmVzZXRcIl0sIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0geyBib3JkZXI6IDA7IC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyBjdXJzb3I6IHBvaW50ZXI7IH1cbmJ1dHRvbltkaXNhYmxlZF0sIGh0bWwgaW5wdXRbZGlzYWJsZWRdIHsgY3Vyc29yOiBkZWZhdWx0OyB9XG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDA7IH1cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0geyAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgfVxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7IC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLCBpbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7IGJvcmRlcjogMDsgcGFkZGluZzogMDsgfVxudGV4dGFyZWEgeyBvdmVyZmxvdzogYXV0bzsgdmVydGljYWwtYWxpZ246IHRvcDsgfVxudGV4dGFyZWEsIGlucHV0IHsgb3V0bGluZTogbm9uZTsgfVxuXG5cbi8vIFRhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbnRhYmxlIHsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgYm9yZGVyLXNwYWNpbmc6IDA7IH0iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHlwb2dyYXBoeSBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIG92ZXJhbGwgdHlwb2dyYXBoeSBhbmQgbWlzYy4gY29udGVudCBjb21wb25lbnRzLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDdXN0b20gRm9udHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBAaW5jbHVkZSBkZWNsYXJlLWZvbnQtZmFjZSgnRm9udCBOYW1lJywgJ2ZvbnQtbG9jYXRpb24tcmVsYXRpdmUtdG8tZm9udHMtZm9sZGVyJyk7XG4vLyBAaW1wb3J0IHVybCgvL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9T3BlbitTYW5zOjMwMGl0YWxpYyw2MDBpdGFsaWMsMzAwLDQwMCw2MDApO1xuXG5AZm9udC1mYWNlIHtcblx0Zm9udC1mYW1pbHk6J09wZW4gU2Fucyc7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fuc19nZGkuZW90Jyk7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fuc19nZGkuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zX2dkaS53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fuc19nZGkudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnNfZ2RpLnN2ZyNPcGVuU2Fucy1SZWd1bGFyJykgZm9ybWF0KCdzdmcnKTtcblx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRmb250LXN0cmV0Y2g6IG5vcm1hbDtcblx0dW5pY29kZS1yYW5nZTogVSswMDIwLTI1Q0E7XG59XG5cbkBmb250LWZhY2Uge1xuXHRmb250LWZhbWlseTonT3BlbiBTYW5zJztcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUl0YWxpY19nZGkuZW90Jyk7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fucy1JdGFsaWNfZ2RpLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1JdGFsaWNfZ2RpLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUl0YWxpY19nZGkudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtSXRhbGljX2dkaS5zdmcjT3BlblNhbnMtSXRhbGljJykgZm9ybWF0KCdzdmcnKTtcblx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRmb250LXN0cmV0Y2g6IG5vcm1hbDtcblx0dW5pY29kZS1yYW5nZTogVSswMDIwLTI1Q0E7XG59XG5cbkBmb250LWZhY2Uge1xuXHRmb250LWZhbWlseTonT3BlbiBTYW5zJztcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUxpZ2h0X2dkaS5lb3QnKTtcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUxpZ2h0X2dkaS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtTGlnaHRfZ2RpLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUxpZ2h0X2dkaS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1MaWdodF9nZGkuc3ZnI09wZW5TYW5zLUxpZ2h0JykgZm9ybWF0KCdzdmcnKTtcblx0Zm9udC13ZWlnaHQ6IDMwMDtcblx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRmb250LXN0cmV0Y2g6IG5vcm1hbDtcblx0dW5pY29kZS1yYW5nZTogVSswMDIwLTI1Q0E7XG59XG5cbkBmb250LWZhY2Uge1xuXHRmb250LWZhbWlseTonT3BlbiBTYW5zJztcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zTGlnaHQtSXRhbGljX2dkaS5lb3QnKTtcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zTGlnaHQtSXRhbGljX2dkaS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnNMaWdodC1JdGFsaWNfZ2RpLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zTGlnaHQtSXRhbGljX2dkaS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fuc0xpZ2h0LUl0YWxpY19nZGkuc3ZnI09wZW5TYW5zTGlnaHQtSXRhbGljJykgZm9ybWF0KCdzdmcnKTtcblx0Zm9udC13ZWlnaHQ6IDMwMDtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRmb250LXN0cmV0Y2g6IG5vcm1hbDtcblx0dW5pY29kZS1yYW5nZTogVSswMDIwLTI1Q0E7XG59XG5cbkBmb250LWZhY2Uge1xuXHRmb250LWZhbWlseTonT3BlbiBTYW5zJztcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkX2dkaS5lb3QnKTtcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkX2dkaS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRfZ2RpLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkX2dkaS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZF9nZGkuc3ZnI09wZW5TYW5zLVNlbWlib2xkJykgZm9ybWF0KCdzdmcnKTtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRmb250LXN0cmV0Y2g6IG5vcm1hbDtcblx0dW5pY29kZS1yYW5nZTogVSswMDIwLTI1Q0E7XG59XG5AZm9udC1mYWNlIHtcblx0Zm9udC1mYW1pbHk6J09wZW4gU2Fucyc7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZEl0YWxpY19nZGkuZW90Jyk7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZEl0YWxpY19nZGkuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkSXRhbGljX2dkaS53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZEl0YWxpY19nZGkudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRJdGFsaWNfZ2RpLnN2ZyNPcGVuU2Fucy1TZW1pYm9sZEl0YWxpYycpIGZvcm1hdCgnc3ZnJyk7XG5cdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0Zm9udC1zdHJldGNoOiBub3JtYWw7XG5cdHVuaWNvZGUtcmFuZ2U6IFUrMDAyMC0yNUNBO1xufVxuXG5cbi8vIEdsb2JhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmh0bWwsIGJvZHkge1xuXHRmb250LWZhbWlseTogJ09wZW4gU2FucycsIHNhbnMtc2VyaWY7XG5cdGNvbG9yOiAkY29sb3JfNztcblx0Zm9udC13ZWlnaHQ6NDAwO1xuXG5cdC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqL1xuXHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxuXHRAaW5jbHVkZSBiYWNrZmFjZS12aXNpYmlsaXR5KGhpZGRlbik7XG59XG5ociB7fVxuXG5cbi8vIEhlYWRpbmdzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG5cdGZvbnQtd2VpZ2h0OjQwMDtcblxufVxuaDEsIC5oMSB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Zm9udC1zaXplOiAzNnB4O1xufVxuaDIge1xuXHRmb250LXNpemU6IDIycHg7XG59XG5cbi8vIFBhcmFncmFwaHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5wIHt9XG5zdHJvbmcge31cblxuXG4vLyBMaW5rc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmEgeyBcblx0dGV4dC1kZWNvcmF0aW9uOm5vbmU7IFxuXHRjb2xvcjogJGNvbG9yX3ByaW1hcnk7XG5cdCY6aG92ZXIge1xuXHRcdHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7XG5cdH1cbn1cblxuXG4vLyBMaXN0c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbnVsLCBvbCwgZGwge31cblxuXG5cdC8vIFVub3JkZXJlZFxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdHVsIHt9XG5cdHVsIGxpIHt9XG5cblxuXHQvLyBPcmRlcmVkXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0b2wge31cblx0b2wgbGkge31cblxuXG5cdC8vIERlZmluaXRpb25cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRkbCB7fVxuXHRkdCB7IGZvbnQtd2VpZ2h0OjQwMDsgfVxuXHRkZCB7fVxuXG5cbi8vIEJsb2NrcXVvdGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuYmxvY2txdW90ZSB7XG5cdGJvcmRlci1sZWZ0OiA1cHggc29saWQgJGNvbG9yXzY7XG5cdHBhZGRpbmc6IDIwcHg7XG5cdGJhY2tncm91bmQ6ICRjb2xvcl90ZXJ0aWFyeTtcblx0cDpmaXJzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxufVxuXG4vLyBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG5AZm9udC1mYWNlIHtcblx0Zm9udC1mYW1pbHk6ICdpY29tb29uJztcblx0c3JjOnVybCgnZm9udHMvaWNvbW9vbi5lb3Q/bjB3Ym44Jyk7XG5cdHNyYzp1cmwoJ2ZvbnRzL2ljb21vb24uZW90PyNpZWZpeG4wd2JuOCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0XHR1cmwoJ2ZvbnRzL2ljb21vb24ud29mZj9uMHdibjgnKSBmb3JtYXQoJ3dvZmYnKSxcblx0XHR1cmwoJ2ZvbnRzL2ljb21vb24udHRmP24wd2JuOCcpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHR1cmwoJ2ZvbnRzL2ljb21vb24uc3ZnP24wd2JuOCNpY29tb29uJykgZm9ybWF0KCdzdmcnKTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0Zm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5bY2xhc3NePVwiaWNvbi1cIl0sIFtjbGFzcyo9XCIgaWNvbi1cIl0ge1xuXHRmb250LWZhbWlseTogJ2ljb21vb24nO1xuXHRzcGVhazogbm9uZTtcblx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRmb250LXZhcmlhbnQ6IG5vcm1hbDtcblx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdGxpbmUtaGVpZ2h0OiAxO1xuXG5cdC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqL1xuXHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLmljb24tY29udGVudC1jb3B5OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjFhXCI7XG59XG4uaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjE4XCI7XG59XG4uaWNvbi1jaGV2cm9uLWxlZnQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTlcIjtcbn1cbi5pY29uLWxpbmtlZGluOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjAwXCI7XG59XG4uaWNvbi1wZW5jaWw6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTdcIjtcbn1cbi5pY29uLXN0YWNrOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjFiXCI7XG59XG4uaWNvbi11c2VyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjA1XCI7XG59XG4uaWNvbi1zcGlubmVyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjA2XCI7XG59XG4uaWNvbi1zZWFyY2g6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTZcIjtcbn1cbi5pY29uLWNvZzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwN1wiO1xufVxuLmljb24tbGVhZjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwOFwiO1xufVxuLmljb24tc3dpdGNoOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjA5XCI7XG59XG4uaWNvbi1tZW51OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjBhXCI7XG59XG4uaWNvbi1nbG9iZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwYlwiO1xufVxuLmljb24tZWFydGg6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MGNcIjtcbn1cbi5pY29uLWluZm86YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MGRcIjtcbn1cbi5pY29uLWNhbmNlbC1jaXJjbGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MGVcIjtcbn1cbi5pY29uLWNoZWNrbWFyay1jaXJjbGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MGZcIjtcbn1cbi5pY29uLXNwYW06YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTBcIjtcbn1cbi5pY29uLWNsb3NlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjExXCI7XG59XG4uaWNvbi1jaGVja21hcms6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTJcIjtcbn1cbi5pY29uLW1pbnVzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjEzXCI7XG59XG4uaWNvbi1wbHVzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjE0XCI7XG59XG4uaWNvbi1zaGFyZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYxNVwiO1xufVxuLmljb24tZmFjZWJvb2s6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MDFcIjtcbn1cbi5pY29uLWluc3RhZ3JhbTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwMlwiO1xufVxuLmljb24tdHdpdHRlcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwM1wiO1xufVxuLmljb24teW91dHViZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwNFwiO1xufVxuLmljb24tZmlsZS1wZGY6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MWNcIjtcbn1cbi5pY29uLWZpbGUtd29yZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYxZFwiO1xufVxuLmljb24tZmlsZS1leGNlbDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYxZVwiO1xufVxuLmljb24tZmlsZS1wb3dlcnBvaW50OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjFmXCI7XG59XG5cbiIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTdHlsZSBndWlkZSBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHNwZWNpZmljIGNvbXBvbmVudHMgb24gdGhlIHN0eWxlZ3VpZC5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdHlsZWd1aWRlIHtcblx0aDEge1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdH1cblx0LmNvbG9yLXN3YXRjaGVzIHtcblx0XHRtYXJnaW46MDtcblx0XHRwYWRkaW5nOjA7XG5cdFx0Y29sb3I6ICNmZmY7XG5cdFx0bGlzdC1zdHlsZTpub25lO1xuXHRcdEBpbmNsdWRlIGRpc3BsYXkoZmxleCk7XG5cdFx0bGkge1xuXHRcdFx0Ly8gZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0cGFkZGluZzoyZW0gMDtcblx0XHRcdHdpZHRoOjZlbTtcblx0XHRcdG1hcmdpbjogNXB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdH1cblx0XHQuaW52ZXJ0IHtcblx0XHRcdGNvbG9yOiAjMDAwO1xuXHRcdH1cblx0XHQuYm9yZGVyIHtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNjM2MzYzM7XG5cdFx0fVxuXHRcdFxuXHRcdC5jLWNjMDAwMCB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfcHJpbWFyeTtcblx0XHR9XG5cdFx0LmMtMDAwMDAwIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl9zZWNvbmRhcnk7XG5cdFx0fVxuXHRcdC5jLWZmZmZmZiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfdGVydGlhcnk7XG5cdFx0fVxuXHRcdC5jLWYyZjJmMiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNDtcblx0XHR9XG5cdFx0LmMtY2NjY2NjIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl81O1xuXHRcdH1cblx0XHQuYy02NjY2NjYge1xuXHRcdFx0YmFja2dyb3VuZDogJGNvbG9yXzY7XG5cdFx0fVxuXHRcdC5jLTMzMzMzMyB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNztcblx0XHR9XG5cdFx0LmMtOTkwMDAwIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl84O1xuXHRcdH1cblx0XHQuYy1kMTQ5MDUge1xuXHRcdFx0YmFja2dyb3VuZDogJGNvbG9yXzk7XG5cdFx0fVxuXHRcdC5jLWZkZDcyNiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfMTA7XG5cdFx0fVxuXHRcdC5jLTdkOGMxZiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfMTE7XG5cdFx0fVxuXHRcdC5jLTQyN2U5MyB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfMTI7XG5cdFx0fVxuXHRcdC5jLTQxNTZhMSB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfMTM7XG5cdFx0fVxuXHR9XG5cblx0Ly8gY29kZSBzeXRheCBwbHVnaW4oYnkgRGF2ZSBEZWtrZXIpXG5cdC5jb2RlLWJsb2NrIHtcblx0ICAgIC8vIHdpZHRoOiA5NiU7XG5cdH1cblxuXHQudG9nZ2xlLWNvZGUtYmxvY2sge1xuXHQgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0ICBtYXJnaW4tYm90dG9tOiA1cHg7XG5cdH1cblxuXHRjb2RlIHtcblx0ICBoZWlnaHQ6IDA7XG5cdCAgcGFkZGluZzogMCAhaW1wb3J0YW50OyAvLyBvdmVycmlkZSBzeW50YXggcGx1Z2luIHN0eWxlc1xuXHQgIGJhY2tncm91bmQ6ICMwMDA7XG5cdCAgb3ZlcmZsb3c6IGhpZGRlbjtcblx0ICB3aWR0aDogMTAwJTtcblx0ICBcblx0ICAmLnNob3cge1xuXHQgICAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50OyAvLyBvdmVycmlkZSBzeW50YXggcGx1Z2luIHN0eWxlc1xuXHQgICAgaGVpZ2h0OiBhdXRvO1xuXHQgICAgZGlzcGxheTogYmxvY2s7XG5cdCAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuXHQgIH1cblx0fVxuXHQucGFnZS10aXRsZSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXHQuY29tcG9uZW50LXRpdGxlIHtcblx0XHRjb2xvcjokY29sb3JfNztcblx0fVxuXHQuY29kZS1jb250YWluZXIge1xuXHRcdGJhY2tncm91bmQ6JGNvbG9yXzU7XG5cdFx0cGFkZGluZzoyMHB4O1xuXHR9XG5cblx0Ly8gU3VibGltZSBUaGVtZVxuXHQvKlxuXG5cdE1vbm9rYWkgU3VibGltZSBzdHlsZS4gRGVyaXZlZCBmcm9tIE1vbm9rYWkgYnkgbm9mb3Jtbm9jb250ZW50IGh0dHA6Ly9ubi5taXQtbGljZW5zZS5vcmcvXG5cblx0Ki9cblxuXHQuaGxqcyB7XG5cdCAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHQgIHBhZGRpbmc6IDAuNWVtO1xuXHQgIGJhY2tncm91bmQ6ICMyMzI0MWY7XG5cdH1cblxuXHQuaGxqcyxcblx0LmhsanMtdGFnLFxuXHQuY3NzIC5obGpzLXJ1bGVzLFxuXHQuY3NzIC5obGpzLXZhbHVlLFxuXHQuY3NzIC5obGpzLWZ1bmN0aW9uXG5cdC5obGpzLXByZXByb2Nlc3Nvcixcblx0LmhsanMtcHJhZ21hIHtcblx0ICBjb2xvcjogI2Y4ZjhmMjtcblx0fVxuXG5cdC5obGpzLXN0cm9uZ2VtcGhhc2lzLFxuXHQuaGxqcy1zdHJvbmcsXG5cdC5obGpzLWVtcGhhc2lzIHtcblx0ICBjb2xvcjogI2E4YThhMjtcblx0fVxuXG5cdC5obGpzLWJ1bGxldCxcblx0LmhsanMtYmxvY2txdW90ZSxcblx0LmhsanMtaG9yaXpvbnRhbF9ydWxlLFxuXHQuaGxqcy1udW1iZXIsXG5cdC5obGpzLXJlZ2V4cCxcblx0LmFsaWFzIC5obGpzLWtleXdvcmQsXG5cdC5obGpzLWxpdGVyYWwsXG5cdC5obGpzLWhleGNvbG9yIHtcblx0ICBjb2xvcjogI2FlODFmZjtcblx0fVxuXG5cdC5obGpzLXRhZyAuaGxqcy12YWx1ZSxcblx0LmhsanMtY29kZSxcblx0LmhsanMtdGl0bGUsXG5cdC5jc3MgLmhsanMtY2xhc3MsXG5cdC5obGpzLWNsYXNzIC5obGpzLXRpdGxlOmxhc3QtY2hpbGQge1xuXHQgIGNvbG9yOiAjYTZlMjJlO1xuXHR9XG5cblx0LmhsanMtbGlua191cmwge1xuXHQgIGZvbnQtc2l6ZTogODAlO1xuXHR9XG5cblx0LmhsanMtc3Ryb25nLFxuXHQuaGxqcy1zdHJvbmdlbXBoYXNpcyB7XG5cdCAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cdH1cblxuXHQuaGxqcy1lbXBoYXNpcyxcblx0LmhsanMtc3Ryb25nZW1waGFzaXMsXG5cdC5obGpzLWNsYXNzIC5obGpzLXRpdGxlOmxhc3QtY2hpbGQge1xuXHQgIGZvbnQtc3R5bGU6IGl0YWxpYztcblx0fVxuXG5cdC5obGpzLWtleXdvcmQsXG5cdC5obGpzLWZ1bmN0aW9uLFxuXHQuaGxqcy1jaGFuZ2UsXG5cdC5obGpzLXdpbnV0aWxzLFxuXHQuaGxqcy1mbG93LFxuXHQubGlzcCAuaGxqcy10aXRsZSxcblx0LmNsb2p1cmUgLmhsanMtYnVpbHRfaW4sXG5cdC5uZ2lueCAuaGxqcy10aXRsZSxcblx0LnRleCAuaGxqcy1zcGVjaWFsLFxuXHQuaGxqcy1oZWFkZXIsXG5cdC5obGpzLWF0dHJpYnV0ZSxcblx0LmhsanMtc3ltYm9sLFxuXHQuaGxqcy1zeW1ib2wgLmhsanMtc3RyaW5nLFxuXHQuaGxqcy10YWcgLmhsanMtdGl0bGUsXG5cdC5obGpzLXZhbHVlLFxuXHQuYWxpYXMgLmhsanMta2V5d29yZDpmaXJzdC1jaGlsZCxcblx0LmNzcyAuaGxqcy10YWcsXG5cdC5jc3MgLnVuaXQsXG5cdC5jc3MgLmhsanMtaW1wb3J0YW50IHtcblx0ICBjb2xvcjogI2Y5MjY3Mjtcblx0fVxuXG5cdC5obGpzLWZ1bmN0aW9uIC5obGpzLWtleXdvcmQsXG5cdC5obGpzLWNsYXNzIC5obGpzLWtleXdvcmQ6Zmlyc3QtY2hpbGQsXG5cdC5obGpzLWNvbnN0YW50LFxuXHQuY3NzIC5obGpzLWF0dHJpYnV0ZSB7XG5cdCAgY29sb3I6ICM2NmQ5ZWY7XG5cdH1cblxuXHQuaGxqcy12YXJpYWJsZSxcblx0LmhsanMtcGFyYW1zLFxuXHQuaGxqcy1jbGFzcyAuaGxqcy10aXRsZSB7XG5cdCAgY29sb3I6ICNmOGY4ZjI7XG5cdH1cblxuXHQuaGxqcy1zdHJpbmcsXG5cdC5jc3MgLmhsanMtaWQsXG5cdC5obGpzLXN1YnN0LFxuXHQuaGFza2VsbCAuaGxqcy10eXBlLFxuXHQucnVieSAuaGxqcy1jbGFzcyAuaGxqcy1wYXJlbnQsXG5cdC5obGpzLWJ1aWx0X2luLFxuXHQuZGphbmdvIC5obGpzLXRlbXBsYXRlX3RhZyxcblx0LmRqYW5nbyAuaGxqcy12YXJpYWJsZSxcblx0LnNtYWxsdGFsayAuaGxqcy1jbGFzcyxcblx0LmRqYW5nbyAuaGxqcy1maWx0ZXIgLmhsanMtYXJndW1lbnQsXG5cdC5zbWFsbHRhbGsgLmhsanMtbG9jYWx2YXJzLFxuXHQuc21hbGx0YWxrIC5obGpzLWFycmF5LFxuXHQuaGxqcy1hdHRyX3NlbGVjdG9yLFxuXHQuaGxqcy1wc2V1ZG8sXG5cdC5obGpzLWFkZGl0aW9uLFxuXHQuaGxqcy1zdHJlYW0sXG5cdC5obGpzLWVudnZhcixcblx0LmFwYWNoZSAuaGxqcy10YWcsXG5cdC5hcGFjaGUgLmhsanMtY2JyYWNrZXQsXG5cdC50ZXggLmhsanMtY29tbWFuZCxcblx0LmhsanMtcHJvbXB0LFxuXHQuaGxqcy1saW5rX2xhYmVsLFxuXHQuaGxqcy1saW5rX3VybCB7XG5cdCAgY29sb3I6ICNlNmRiNzQ7XG5cdH1cblxuXHQuaGxqcy1jb21tZW50LFxuXHQuaGxqcy1qYXZhZG9jLFxuXHQuamF2YSAuaGxqcy1hbm5vdGF0aW9uLFxuXHQucHl0aG9uIC5obGpzLWRlY29yYXRvcixcblx0LmhsanMtdGVtcGxhdGVfY29tbWVudCxcblx0LmhsanMtcGksXG5cdC5obGpzLWRvY3R5cGUsXG5cdC5obGpzLWRlbGV0aW9uLFxuXHQuaGxqcy1zaGViYW5nLFxuXHQuYXBhY2hlIC5obGpzLXNxYnJhY2tldCxcblx0LnRleCAuaGxqcy1mb3JtdWxhIHtcblx0ICBjb2xvcjogIzc1NzE1ZTtcblx0fVxuXG5cdC5jb2ZmZWVzY3JpcHQgLmphdmFzY3JpcHQsXG5cdC5qYXZhc2NyaXB0IC54bWwsXG5cdC50ZXggLmhsanMtZm9ybXVsYSxcblx0LnhtbCAuamF2YXNjcmlwdCxcblx0LnhtbCAudmJzY3JpcHQsXG5cdC54bWwgLmNzcyxcblx0LnhtbCAuaGxqcy1jZGF0YSxcblx0LnhtbCAucGhwLFxuXHQucGhwIC54bWwge1xuXHQgIG9wYWNpdHk6IDAuNTtcblx0fVxuXG59XG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2xvYmFsIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgZ2xvYmFsIGxheW91dC5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBMYXlvdXRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5ib2R5IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXHRiYWNrZ3JvdW5kOiAjZjJmMmYyO1xuXG5cbn1cblxuLmhlYWRlci1jb250YWluZXIsXG4uY29udGVudC1jb250YWluZXIsXG4uZm9vdGVyLWNvbnRhaW5lciB7XG5cblx0LndyYXBwZXIge1xuXHRcdEBpbmNsdWRlIG91dGVyLWNvbnRhaW5lcjtcblx0XHRwYWRkaW5nOiAwIDEwcHg7XG5cdH1cblx0XG59XG5cbi5jb250ZW50LWNvbnRhaW5lciB7XG5cdC8vIHBhZGRpbmctdG9wOjEwMHB4O1xuXHRoMSB7XG5cdFx0bWFyZ2luOiA0MHB4IDA7XG5cdFx0c3VwIHtcblx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdFx0XHR0b3A6IC0wLjllbTtcblx0XHR9XG5cdH1cblx0LnBhZ2UtdGVtcGxhdGUtcGFnZS1zZWNvbmRhcnktcGhwICYge1xuXHRcdHBhZGRpbmctdG9wOjEwcHg7XG5cdH1cblx0bWFyZ2luLWJvdHRvbTo2MHB4O1xufVxuXG4ud3JhcHBlciB7fSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIZWFkZXIgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBoZWFkZXIgbGF5b3V0LlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSGVhZGVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJGhlYWRlckhlaWdodDogMTAwcHg7XG5cbiRidXR0b25QcmltYXJ5OiAkY29sb3JfcHJpbWFyeTtcbiRidXR0b25TZWNvbmRhcnk6ICRjb2xvcl90ZXJ0aWFyeTtcbi5oZWFkZXItY29udGFpbmVyIHtcblx0YmFja2dyb3VuZDogI2ZmZjtcblx0bGVmdDowO1xuXHRyaWdodDowO1xuXHR6LWluZGV4OiAzMDA7XG5cdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjJzIGxpbmVhcik7XG5cdC5sb2dvIHtcblx0XHRmbG9hdDpsZWZ0O1xuXHRcdGZvbnQtc2l6ZTogMDtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdGEge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0aW1nIHtcblx0XHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0XHRcdFx0cGFkZGluZzoyMHB4O1xuXHRcdFx0fVxuXHRcdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDowO1xuXHRcdFx0XHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkICMwMDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0XG5cdG5hdi5wcmltYXJ5IHsgXG5cdFx0d2lkdGg6NTUlOyBcblx0XHRmbG9hdDpyaWdodDsgXG5cdFx0bWFyZ2luLXJpZ2h0OjUwcHg7XG5cdFx0bWFyZ2luLXRvcDozMHB4O1xuXHRcdEBpbmNsdWRlIHRyYW5zaXRpb24gKG1hcmdpbiAwLjJzIGxpbmVhcik7XG5cblx0XHRidXR0b24ge1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0XHRcdGRpc3BsYXk6bm9uZTtcblx0XHRcdGJhY2tncm91bmQ6JGJ1dHRvblByaW1hcnk7XG5cdFx0XHRoZWlnaHQ6NDVweDtcblx0XHRcdHdpZHRoOiA0OHB4O1xuXHRcdFx0dG9wOiAyNXB4O1xuXHRcdFx0cmlnaHQ6IDIwcHg7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdHRleHQtaW5kZW50OiAtOTk5OXB4O1xuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHdpZHRoOiA2OCU7XG5cdFx0XHRcdGhlaWdodDogNXB4O1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAkYnV0dG9uU2Vjb25kYXJ5O1xuXHRcdFx0XHR0b3A6IDEwcHg7XG5cdFx0XHRcdGxlZnQ6IDE2JTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAxMHB4IDAgJGJ1dHRvblNlY29uZGFyeSwgMCAyMHB4IDAgJGJ1dHRvblNlY29uZGFyeTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggOTYwcHgpIHtcblx0XHRcdHBvc2l0aW9uOmZpeGVkO1xuXHRcdFx0d2lkdGg6MTAwJTtcblx0XHRcdHRvcDogMDtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0XHRyaWdodDogMDtcblx0XHRcdHotaW5kZXg6IDEwMDtcblxuXHRcdFx0YnV0dG9uIHtcblx0XHRcdFx0ZGlzcGxheTpibG9jaztcblx0XHRcdH1cblx0XHRcdD4gdWwge1xuXHRcdFx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4zcyBsaW5lYXIpO1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiRjb2xvcl80O1xuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRtYXgtaGVpZ2h0OjA7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0cmlnaHQ6IC01MHB4O1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0dG9wOjEwMHB4O1xuXHRcdFx0XHRwYWRkaW5nOjA7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0LnNoYXJlIHsgXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHJpZ2h0OjA7XG5cdFx0ei1pbmRleDogNTAwO1xuXHR9XG5cdFxuXHRoZWFkZXIge1xuXHRcdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjJzIGxpbmVhcik7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0aGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuXHRcdHBhZGRpbmc6IDAgMTBweDtcblx0XHQucGFnZS10ZW1wbGF0ZS1wYWdlLXNlY29uZGFyeS1waHAgJiB7XG5cdFx0XHRoZWlnaHQ6ICRoZWFkZXJIZWlnaHQrNDBweDtcblx0XHR9XG5cdH1cbn1cblxuXG5cbi5oZWFkcm9vbSB7XG4gICAgXG4gICBcbn1cbi5oZWFkcm9vbS0tcGlubmVkIHtcbiAgICAvLyBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwJSkpO1xuXG59XG5ib2R5LmhlYWRyb29tLS11bnBpbm5lZCB7XG4gICAgLy8gQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTEwMCUpKTtcblxuICAgXG4gICAgLmhlYWRlci1jb250YWluZXIge1xuXHRcdHBvc2l0aW9uOmZpeGVkO1xuXHRcdGhlYWRlciB7XG5cdFx0XHRoZWlnaHQ6NzBweDtcblx0XHRcdC5sb2dvIHtcblx0XHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblxuXHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdHBhZGRpbmctdG9wOjVweDtcblx0XHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogNXB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHRcdG5hdi5wcmltYXJ5IHsgXG5cdFx0XHRAaW5jbHVkZSBtZWRpYSg5NjBweCkge1xuXHRcdFx0XHRtYXJnaW4tdG9wOjE1cHg7XG5cdFx0XHR9XG5cdFx0XHQ+IHVsIHtcblx0XHRcdFx0dG9wOjcwcHg7XG5cdFx0XHRcdC5zdWItbWVudSB7XG5cdFx0XHRcdFx0dG9wOjcwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YnV0dG9uIHtcblx0XHRcdFx0dG9wOiAxMHB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQmLnBhZ2UtdGVtcGxhdGUtcGFnZS1zZWNvbmRhcnktcGhwICB7XG5cdFx0LmNvbnRlbnQtY29udGFpbmVyIHtcblx0XHRcdHBhZGRpbmctdG9wOiAkaGVhZGVySGVpZ2h0ICsgNDBweDs7XG4gICAgXHR9XG4gICAgXHQuaGVhZGVyLWNvbnRhaW5lciBoZWFkZXIge1xuICAgIFx0XHRoZWlnaHQ6NzBweDtcblx0XHR9XG5cdH1cblx0XG59XG4uaGVhZHJvb20tLW5vdC10b3Age1xuXG5cdFxuXHRcblx0XG59IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRlbnQgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBjb250ZW50IGxheW91dC5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRlbnRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4uY29udGVudC1jb250YWluZXIge1xuXHRwYWRkaW5nLXRvcDogNDBweDtcblx0LmhlYWRyb29tLS11bnBpbm5lZCAmIHtcblx0XHRwYWRkaW5nLXRvcDogMTMwcHg7XG4gICAgfVxuXG5cdC5zdWItbmF2IHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0QGluY2x1ZGUgbWVkaWEobWF4LXdpZHRoIDk2MHB4KSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0XHRsZWZ0OiAwO1xuXHRcdHotaW5kZXg6IDMwMTtcblx0XHRjb2xvcjokY29sb3JfdGVydGlhcnk7XG5cdFx0cGFkZGluZzogMTBweDtcblx0XHR0b3A6MTAwcHg7XG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0XHQuaGVhZHJvb20tLXVucGlubmVkICYge1xuXHRcdFx0dG9wOjcwcHg7XG5cdFx0fVxuXG5cdFx0c3BhbiB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdFx0fVxuXHR9XG5cdC5jb250ZW50LXdyYXBwZXIge31cblxuXHQuY29udGVudCB7fVxuXHQuYXNpZGUge31cblx0XG5cdC5hbGlnbmxlZnQge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0fVxuXG5cdC5sY3BfcGFnaW5hdG9yIHtcblx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNztcblx0XHRjb2xvcjokY29sb3JfdGVydGlhcnk7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzowO1xuXHRcdGxpIHtcblx0XHRcdGJvcmRlcjpub25lO1xuXHRcdFx0c3BhbiB7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0cGFkZGluZzoxMHB4IDIwcHg7XG5cdFx0XHR9XG5cdFx0XHRhIHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRwYWRkaW5nOjEwcHggMjBweDtcblx0XHRcdFx0Y29sb3I6JGNvbG9yXzU7XG5cblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0Y29sb3I6JGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5sY3BfY2F0bGlzdCB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6MDtcblx0fVxufSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGb290ZXIgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBmb290ZXIgbGF5b3V0LlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRm9vdGVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmZvb3Rlci1jb250YWluZXIge1xuXHRtYXJnaW4tdG9wOiAyMHB4O1xuXHRiYWNrZ3JvdW5kOiAkY29sb3Jfc2Vjb25kYXJ5O1xuXHRjb2xvcjogJGNvbG9yX3RlcnRpYXJ5O1xuXHRwYWRkaW5nLWJvdHRvbTo1MHB4O1xuXG5cdC5jcmVkaXRzIHtcblx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfcHJpbWFyeTtcblx0XHRcblx0XHR1bCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRcdGxpIHtcblx0XHRcdFx0cGFkZGluZzogMzBweCAwO1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKDc2OHB4KSB7XG5cdFx0XHRcdFx0d2lkdGg6MjclO1xuXHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0d2lkdGg6NDYlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0cGFkZGluZzoyN3B4IDA7XG5cdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0YSB7XG5cdFx0Y29sb3I6I2ZmZjtcblx0fVxuXHRmb290ZXIge1xuXHRcdG1hcmdpbi10b3A6IDIwcHg7XG5cdFx0aDIge1xuXHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHR9XG5cdFx0Jj5kaXYge1xuXHRcdFx0QGluY2x1ZGUgbWVkaWEoOTYwcHgpIHtcblx0XHQgICBcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdHdpZHRoOjI3JTtcblx0XHRcdFx0XG5cdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdHdpZHRoOiA0NiU7XG5cdFx0XHRcdFx0cGFkZGluZy1yaWdodDogMzBweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHQuc29jaWFsLWJhciB7XG5cdFx0XHRoMiB7XG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKDk2MHB4KSB7XG5cdFx0XHRcdFx0bWluLWhlaWdodDogNzBweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dWwge1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbjowO1xuXHRcdFx0XHRwYWRkaW5nOjA7XG5cdFx0XHRcdGxpIHtcblx0XHRcdFx0XHRkaXNwbGF5OmlubGluZS1ibG9jaztcblx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHRcdFx0Ym9yZGVyLXJpZ2h0Om5vbmU7XG5cdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdFx0d2lkdGg6IDQ4cHg7XG5cdFx0XHRcdFx0aGVpZ2h0OiA0OHB4O1xuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhIHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHRcdC8vIHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0XHRcdHdpZHRoOjEwMCU7XG5cdFx0XHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdFx0XHRib3R0b206IDA7XG5cdFx0XHRcdFx0XHQvLyBwYWRkaW5nOiAxMHB4O1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxLjVlbTtcblx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHRcdHNwYW4ge1xuXHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHR0b3A6IDUwJTtcblx0ICBcdFx0XHRcdFx0XHRsZWZ0OiA1MCU7XG5cdCAgXHRcdFx0XHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZSgtNTAlLC01MCUpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXG5cdFx0fVxuXHR9XG59IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFsZXJ0cyBQYXJ0aWFsXG4vLyBTdHlsZXMgdGhhdCBoZWxwIGNvbW11bmljYXRlIHN1Y2Nlc3MsIHdhcm5pbmdzLCBmYWlsdXJlcywgZXRjLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ2hyb21lIEZyYW1lIC0gZm9yIHVuc3VwcG9ydGVkIHZlcnNpb25zIG9mIElFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmNocm9tZWZyYW1lIHtcblxuXHRhIHt9XG5cbn1cblxuXG4vLyBBbGVydHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4uYWxlcnQtYm94IHtcblxuXHQmLmluZm8ge31cblx0Ji5lcnJvciB7fVxuXHQmLnN1Y2Nlc3Mge31cblxufSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBbmltYXRpb25zIFBhcnRpYWxcbi8vIEN1c3RvbSBrZXlmcmFtZWQgYW5pbWF0aW9ucyB0byBiZSB1c2VkIGluIHRoZSBzaXRlL2FwcGxpY2F0aW9uXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1dHRvbnMgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB2YXJpb3VzIHRyYWRpdGlvbmFsIGFjdGlvbnMuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIFZhcmlhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBCdXR0b25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5pbnB1dFt0eXBlPVwic3VibWl0XCJdLCBidXR0b24sIGEuYnV0dG9uIHtcblx0QGluY2x1ZGUgcmVtKHBhZGRpbmcsIDEwcHggMjBweCk7XG5cdEBpbmNsdWRlIHJlbShtYXJnaW4sIDAgMCAxMHB4KTtcblx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX3ByaW1hcnk7XG5cdGNvbG9yOiByZ2JhKCNmZmYsIDEpO1xuXHRAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCAzMDBtcyBlYXNlLWluLW91dCk7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRjb2xvcl9wcmltYXJ5LCAxMCUpO1xuXHR9XG59IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZvcm1zIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdmFyaW91cyBmb3JtcyBhbmQgZm9ybSBlbGVtZW50cy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFZhcmlhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBXcmFwcGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmZvcm0ge31cblxuXG5cdC8vIExlZ2VuZFxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdGxlZ2VuZCB7fVxuXG5cblx0Ly8gRmllbGRzZXRzIC8gV3JhcHBlcnNcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRmaWVsZHNldCB7fVxuXG5cdFx0LmZpZWxkLCAuZmllbGRwYWlyLCAuZmllbGRncm91cCB7fVxuXHRcdC5maWVsZHBhaXIsIC5maWVsZGdyb3VwIHt9XG5cblx0XHQvLyBGaWVsZCBQYWlyXG5cdFx0LmZpZWxkcGFpciA+IC5maWVsZCB7fVxuXHRcdC5maWVsZHBhaXIgPiAuZmllbGQ6Zmlyc3QtY2hpbGQge31cblxuXHRcdC8vIEZpZWxkIEdyb3VwXG5cdFx0LmZpZWxkZ3JvdXAgLmZpZWxkIHt9XG5cblxuXHQvLyBDaGVja2JveGVzICYgUmFkaW9zXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0LmNoZWNrYm94ZXMsIC5yYWRpb3Mge1xuXG5cdFx0dWwge31cblx0XHRpbnB1dCArIGxhYmVsIHt9XG5cblx0fVxuXG5cblx0Ly8gTGFiZWxzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0bGFiZWwge31cblxuXHRcdC8vIEZpZWxkZ3JvdXAgTGFiZWxcblx0XHQuZmllbGRncm91cC1sYWJlbCB7fVxuXG5cdFx0Ly8gQ2hlY2tib3gsIFJhZGlvIExhYmVsc1xuXHRcdC5maWVsZGdyb3VwLWxhYmVsICsgdWwsXG5cdFx0LmZpZWxkZ3JvdXAtbGFiZWwgKyBvbCB7fVxuXHRcdC5maWVsZGdyb3VwLWxhYmVsICsgdWwgbGksXG5cdFx0LmZpZWxkZ3JvdXAtbGFiZWwgKyBvbCBsaSxcblx0XHQuZmllbGRncm91cC1sYWJlbCArIHVsIGxhYmVsLFxuXHRcdC5maWVsZGdyb3VwLWxhYmxlICsgb2wgbGFiZWwge31cblx0bGFiZWwge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Ly8gRmllbGRzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0aW5wdXQge1xuXHRcdCZbdHlwZT1cInRleHRcIl0sXG5cdFx0Jlt0eXBlPVwiZW1haWxcIl0ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX3ByaW1hcnk7XG5cdFx0XHRAaW5jbHVkZSByZW0ocGFkZGluZywgOHB4IDEwcHgpO1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMzAwIGVhc2UtaW4tb3V0KTtcblx0XHR9XG5cdFx0Ly8gQ2hlY2tib3ggJiBSYWRpb1xuXHRcdCZbdHlwZT1cImNoZWNrYm94XCJdICsgbGFiZWwsXG5cdFx0Jlt0eXBlPVwicmFkaW9cIl0gKyBsYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDI1cHg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDE1cHg7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuXHRcdFx0XHR3aWR0aDogMTZweDtcblx0XHRcdFx0aGVpZ2h0OiAxNnB4O1xuXG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRib3R0b206IDFweDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcblx0XHRcdH1cblx0XHR9XG5cdFx0Jlt0eXBlPVwiY2hlY2tib3hcIl0gKyBsYWJlbCB7XG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdC8vIGJvcmRlci1yYWRpdXM6IDhweDtcblx0XHRcdFx0Ym9yZGVyOjFweCBzb2xpZCBkYXJrZW4oI2YyZjJmMiwzMCUpO1xuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0Jlt0eXBlPVwicmFkaW9cIl0gKyBsYWJlbCB7XG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDhweDtcblx0XHRcdFx0Ym9yZGVyOjFweCBzb2xpZCBkYXJrZW4oI2YyZjJmMiwzMCUpO1xuXHRcdFx0fVxuXG5cdFx0fVxuXHRcdCZbdHlwZT1cImNoZWNrYm94XCJdLFxuXHRcdCZbdHlwZT1cInJhZGlvXCJdIHtcblx0XHRcdFxuXHRcdFx0ZGlzcGxheTogbm9uZTsgIFxuXG5cdFx0fVxuXG5cdFx0Jlt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG5cdFx0ICAgIGJhY2tncm91bmQtY29sb3I6ICNjYzAwMDA7XG5cdFx0ICAgIGNvbG9yOiAjZjNmM2YzO1xuXHRcdCAgICBmb250LXNpemU6IDMycHg7XG5cdFx0ICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHQgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG5cdFx0ICAgIGJvcmRlcjoxcHggc29saWQgZGFya2VuKCNjYzAwMDAsMjAlKTtcblx0XHR9XG5cdFx0Jlt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG5cdFx0XHR3aWR0aDogOHB4O1xuXHRcdFx0aGVpZ2h0OiA4cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiA0cHg7XG5cdFx0XHR0b3A6IDVweDtcblx0XHR9XG5cblx0XHQmW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcblx0XHQgICAgYmFja2dyb3VuZC1jb2xvcjogI2NjMDAwMDtcblx0XHQgICAgY29sb3I6ICNmM2YzZjM7XG5cdFx0ICAgIGZvbnQtc2l6ZTogMzJweDtcblx0XHQgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdCAgICBsaW5lLWhlaWdodDogMTRweDtcblx0XHQgICAgYm9yZGVyOjFweCBzb2xpZCBkYXJrZW4oI2NjMDAwMCwyMCUpO1xuXHRcdH1cblx0XHQmW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWw6YWZ0ZXIge1xuXHRcdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cblx0XHRcdHdpZHRoOiA3cHg7XG5cdFx0XHRoZWlnaHQ6IDEycHg7XG5cdFx0XHQvLyBib3JkZXItcmFkaXVzOiA0cHg7XG5cdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKDQ1ZGVnKSk7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiA1cHg7XG5cdFx0XHR0b3A6IDFweDtcblx0XHRcdGJvcmRlci1yaWdodDozcHggc29saWQgI2ZmZjtcblx0XHRcdGJvcmRlci1ib3R0b206M3B4IHNvbGlkICNmZmY7XG5cdFx0fVxuXG5cdFx0Jlt0eXBlPVwiY2hlY2tib3hcIl06Zm9jdXMsICZbdHlwZT1cInJhZGlvXCJdOmZvY3VzIHt9XG5cdFx0XG5cblxuXG5cdFx0Ly8gU2VhcmNoXG5cdFx0Jlt0eXBlPVwic2VhcmNoXCJdIHt9XG5cdFx0Jlt0eXBlPVwic2VhcmNoXCJdOjotbXMtY2xlYXIge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQvLyBGaWxlXG5cdFx0Jlt0eXBlPVwiZmlsZVwiXSB7fVxuXG5cdFx0Ly8gRm9jdXNcblx0XHQmOmZvY3VzIHt9XG5cblx0fVxuXHR0ZXh0YXJlYSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX3ByaW1hcnk7XG5cdFx0QGluY2x1ZGUgcmVtKHBhZGRpbmcsIDhweCAxMHB4KTtcblx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCAzMDAgZWFzZS1pbi1vdXQpO1xuXHR9XG5cblx0Ly8gQ3VzdG9tIENoZWNrYm94ZXMgKyBSYWRpb3Ncblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQ6cm9vdCB7XG5cblx0XHQvLyBDb21tb25cblx0XHQucmFkaW8gbGFiZWwsXG5cdFx0LmNoZWNrYm94IGxhYmVsIHt9XG5cdFx0LmNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcblx0XHQucmFkaW8gaW5wdXRbdHlwZT1cInJhZGlvXCJdIHt9XG5cblx0XHQvLyBDdXN0b20gUmFkaW9zXG5cdFx0LnJhZGlvIGxhYmVsOmJlZm9yZSB7fVxuXHRcdC5yYWRpbyBpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7fVxuXHRcdC5yYWRpbyBpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHt9XG5cblx0XHQvLyBDdXN0b20gQ2hlY2tib3hcblx0XHQuY2hlY2tib3ggbGFiZWw6YmVmb3JlIHt9XG5cdFx0LmNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHt9XG5cblx0fSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZWRpYSBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHZhcmlvdXMgbXVsdGltZWRpYSBlbGVtZW50cy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEZpZ3VyZXMgJiBJbWFnZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5maWd1cmUge1xuXG5cdGEge31cblx0YSA+IGltZyB7fVxuXHRhOmhvdmVyID4gaW1nIHt9XG5cbn1cblxuXG4vLyBWaWRlb3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG52aWRlbyB7fVxuXG5cbi8vIGlGcmFtZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5pZnJhbWUge31cblxuXG4vLyBGcmVzY28gLSBDdXN0b21pemF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmZyLWNsb3NlIHt9XG5cblxuLy8gR29vZ2xlIE1hcHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4uZ29vZ2xlLW1hcCBpbWcge30iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTmF2aWdhdGlvbnMgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB2YXJpb3VzIHR5cGVzIG9mIG5hdmlnYXRpb24gY29tcG9uZW5ldHMuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBQcmltYXJ5IE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5uYXYucHJpbWFyeSB7XG5cdC8vIGZvbnQtd2VpZ2h0OjQwMDtcblx0dWwge1x0XG5cdFx0bWFyZ2luOjA7XG5cdFx0cGFkZGluZzowO1xuXHR9XG5cbn1cblxuXG4uZmxleC1jb250YWluZXIge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuICBcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFxuXHQmdWwge1xuXHRcdGZvbnQtc2l6ZTogMDtcblx0fVxuXG5cdGxpIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0Zm9udC1zaXplOiAwLjllbTtcblx0XHRAaW5jbHVkZSBtZWRpYSgxMDg4cHgpIHtcblx0XHQgICAgLy8gZm9udC1zaXplOiAxZW07XG5cdFx0fVxuXHQgIFx0YSB7XG5cdFx0XHRcblx0XHRcdGNvbG9yOiAjMzMzO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRwYWRkaW5nOjAuNWVtO1xuXHRcdFx0Ly8gbGluZS1oZWlnaHQ6NGVtO1xuXHRcdFx0XG5cdFx0fVxuXHR9XG5cdC5zdWItbWVudSB7XG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0ICAgIGRpc3BsYXk6bm9uZTtcblx0ICAgIHBvc2l0aW9uOmZpeGVkO1xuXHQgICAgdG9wOiAxMDBweDtcblx0ICAgIGxlZnQ6IDA7XG5cdCAgICByaWdodDogMDtcblx0ICAgIGxpc3Qtc3R5bGU6bm9uZTtcblx0ICAgIGJhY2tncm91bmQ6ICRjb2xvcl83O1xuXHQgICAgZm9udC1zaXplOiAwO1xuXHQgICAgbGkge1xuXHQgICAgXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdCAgICBcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0ICAgIFx0YSB7XG5cdCAgICBcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHQgICAgXHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdCAgICBcdFx0cGFkZGluZzogMTBweCAyMHB4O1xuXHQgICAgXHRcdGNvbG9yOiRjb2xvcl90ZXJ0aWFyeTtcblx0ICAgIFx0XHRsaW5lLWhlaWdodDogMjRweDtcblx0ICAgIFx0fVxuXHQgICAgXG5cdCAgICB9XG5cdCAgLy8gICBAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggOTYwcHgpIHtcblx0XHRcdC8vIC8vIHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdC8vIGRpc3BsYXk6IG5vbmU7XG5cdCAgLy8gICB9XG5cdH1cbiAgXHQuY3VycmVudF9wYWdlX2l0ZW0sXG4gIFx0LmN1cnJlbnRfcGFnZV9hbmNlc3RvciB7XG5cdCAgXHQuc3ViLW1lbnUge1xuXHQgICAgXHRkaXNwbGF5OmJsb2NrO1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHRAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggOTYwcHgpIHtcblx0XHRcdFx0Ly8gcG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdCAgICB9XG5cdCAgICBcdGxpOmZpcnN0LWNoaWxkIHtcblx0ICAgIFx0XHQvLyB0ZXh0LWFsaWduOiBsZWZ0O1xuXHQgICAgXHRcdC8vIGZsb2F0OiBsZWZ0O1xuXHQgICAgXHRcdC8vIHBhZGRpbmctbGVmdDo0MHB4O1xuXHQgICAgXHR9XG5cdCAgICBcdC5jdXJyZW50LW1lbnUtaXRlbSBhIHtcblx0ICAgIFx0XHRmb250LXdlaWdodDogNzAwO1xuXHQgICAgXHR9XG5cdCAgXHR9XG5cdH1cblx0LmN1cnJlbnQtbWVudS1pdGVtLFxuXHQuY3VycmVudC1tZW51LWFuY2VzdG9yIHtcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdHVsIGxpIHtcblx0XHRcdGZvbnQtd2VpZ2h0OjMwMDtcblx0XHRcdCYuY3VycmVudC1tZW51LWl0ZW0ge1xuXHRcdFx0XHRmb250LXdlaWdodDogNDAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcblx0LnN0eWxlZ3VpZGUgJiB7XG5cdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0fVxuXHQmLnNlY29uZGFyeSB7XG5cdFx0bGkgYSB7XG5cdFx0XHRwYWRkaW5nOjAuNWVtO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDNlbTtcblx0XHR9XG5cdH1cbiAgXG59XG5cbi5yaWdodCB7XG5cdC8vIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChmbGV4LWVuZCk7XG5cdHRleHQtYWxpZ246cmlnaHQ7XG59IFxuLm5vLXNjcm9sbCB7XG5cdG92ZXJmbG93OmhpZGRlbjtcbn1cblxuLmZseW91dC1tZW51IHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdGxlZnQ6MDtcblx0cmlnaHQ6MDtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO1xuXHR6LWluZGV4Oi0xO1xuXHQkcGFuZWxXaWR0aDozMDBweDtcblxuXHQmLmFjdGl2ZSB7XG5cdFx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7XG5cdFx0ei1pbmRleDogNTAwO1xuXHRcdHVsLCBkaXYge1xuXHRcdFx0ZGlzcGxheTpibG9jaztcblx0XHR9XG5cdH1cblx0aDMge1xuXHRcdGhlaWdodDo3MHB4O1xuXHRcdHBhZGRpbmc6MjBweDtcblx0XHRtYXJnaW46IDA7XG5cdH1cblx0aDQge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOjEwcHggMjBweDtcblx0fVxuXHR1bCwgZGl2IHtcblx0XHRkaXNwbGF5Om5vbmU7XG5cdH1cblx0W2RhdGEtbGV2ZWxdIHtcblx0XHRkaXNwbGF5OmJsb2NrO1xuXHRcdHBvc2l0aW9uOmFic29sdXRlO1xuXHRcdHJpZ2h0OjA7XG5cdFx0dG9wOiAwO1xuXHRcdGJvdHRvbTowO1xuXHRcdG1pbi13aWR0aDogJHBhbmVsV2lkdGg7XG5cdFx0YmFja2dyb3VuZDokY29sb3JfNDtcblx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4ycyBsaW5lYXIpO1xuXHRcdEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKCRwYW5lbFdpZHRoKSk7XG5cdFx0Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjY2MwMDAwO1xuXG5cdFx0Ji5hY3RpdmUge1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMHB4KSk7XG5cdFx0XHR6LWluZGV4OiA1MDE7XG5cdFx0fVxuXHR9XG5cblx0JltkYXRhLWxldmVsLWFjdGl2ZT1cIjJcIl0ge1xuXHRcdFtkYXRhLWxldmVsPVwiMVwiXSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDQwcHg7XG5cdFx0XHQ+IHVsID4gLmNsb3NlLWJ0biB7XG5cdFx0XHRcdGJhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO1xuXHRcdFx0XHR0b3A6MDtcblx0XHRcdFx0cmlnaHQ6MDtcblx0XHRcdFx0bGVmdDowO1xuXHRcdFx0XHRib3R0b206MDtcblx0XHRcdFx0Y3Vyc29yOnBvaW50ZXI7XG5cdFx0XHR9XHRcdFx0XG5cdFx0fVxuXHRcdFtkYXRhLWxldmVsPVwiMlwiXSB7XG5cdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCg0MHB4KSk7XG5cdFx0fVxuXHR9XG5cdCZbZGF0YS1sZXZlbC1hY3RpdmU9XCIzXCJdIHtcblx0XHRbZGF0YS1sZXZlbD1cIjFcIl0ge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA4MHB4O1xuXHRcdH1cblx0XHRbZGF0YS1sZXZlbD1cIjJcIl0ge1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoNDBweCkpO1xuXHRcdFx0PiB1bCA+IC5jbG9zZS1idG4ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTtcblx0XHRcdFx0dG9wOjA7XG5cdFx0XHRcdHJpZ2h0OjA7XG5cdFx0XHRcdGxlZnQ6MDtcblx0XHRcdFx0Ym90dG9tOjA7XG5cdFx0XHRcdGN1cnNvcjpwb2ludGVyO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRbZGF0YS1sZXZlbD1cIjNcIl0ge1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoNDBweCkpO1xuXHRcdH1cblx0fVxuXHQmW2RhdGEtbGV2ZWwtYWN0aXZlPVwiM1wiXSB7XG5cdFx0W2RhdGEtbGV2ZWw9XCIxXCJdIHtcblx0XHRcdD4gdWwgPiAuY2xvc2UtYnRuIHtcblx0XHRcdFx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7XG5cdFx0XHRcdHRvcDowO1xuXHRcdFx0XHRyaWdodDowO1xuXHRcdFx0XHRsZWZ0OjA7XG5cdFx0XHRcdGJvdHRvbTowO1xuXHRcdFx0XHRjdXJzb3I6cG9pbnRlcjtcblx0XHRcdH1cdFxuXHRcdH1cblx0fVxuXHRuYXYge1xuXHRcdHVsIHtcblx0XHRcdG1hcmdpbjowO1xuXHRcdFx0cGFkZGluZzowO1xuXHRcdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRcdGxpIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdGJvcmRlci1ib3R0b206MXB4IHNvbGlkICMzMzM7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGEge1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0cGFkZGluZzoxMHB4IDIwcHg7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGNvbG9yOiAjMDAwO1xuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IGRhcmtlbigjYzFjMWMxLCAxMCUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQuY2xvc2UtYnRuIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOjIwcHg7XG5cdFx0cmlnaHQ6MTBweDtcblx0XHRib3JkZXI6bm9uZTtcblx0XHRcblx0XHRidXR0b24ge1xuXHRcdFx0cG9zaXRpb246cmVsYXRpdmU7XG5cdFx0XHR3aWR0aDogMjVweDtcblx0XHRcdGhlaWdodDogMjVweDtcblx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG5cblx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdHRvcDogNTAlO1xuXHRcdFx0XHRoZWlnaHQ6IDFweDtcblx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0YmFja2dyb3VuZDogIzAwMDtcblx0XHRcdFx0Ly8gbGVmdDogLTNlbTtcblx0XHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSg0NWRlZykpO1xuXHRcdFx0fVxuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR0b3A6IDUwJTtcblx0XHRcdFx0aGVpZ2h0OiAxcHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMwMDA7XG5cdFx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRcdEBpbmNsdWRlIHRyYW5zZm9ybShyb3RhdGUoLTQ1ZGVnKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHR9XG5cdGg0IHtcblx0XHRjb2xvcjogI2ZmZjtcblx0XHRiYWNrZ3JvdW5kOiNjYzAwMDA7XG5cdH1cblx0XG59XG5cblxuLy8gRm9vdGVyIE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5uYXYuZm9vdGVyIHt9XG5cblxuLy8gVXRpbGl0eSBOYXZpZ2F0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxubmF2LnV0aWxpdHkge31cblxuXG4vLyBCcmVhZGNydW1iIE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4uYnJlYWRjcnVtYnMge31cblxuXG4vLyBQYWdpbmF0aW9uIE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4ucGFnaW5hdGlvbiB7fVxuXG4ucGFnaW5hdGlvbiBzcGFuLCAucGFnaW5hdGlvbiBhIHt9XG4ucGFnaW5hdGlvbiBzcGFuOmZpcnN0LWNoaWxkIHt9XG4ucGFnaW5hdGlvbiBhOmhvdmVyIHt9XG4ucGFnaW5hdGlvbiAuY3VycmVudCB7fSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYW5lbHMgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB2YXJpb3VzIHR5cGVzIG9mIHBhbmVsIGNvbXBvbmVuZXRzLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBQYW5lbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4ucGFuZWwge1xuXG5cblx0Ly8gSGVhZGluZ1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC5wYW5lbC1oZWFkaW5nIHtcblxuXHRcdC5wYW5lbC10aXRsZSB7fVxuXG5cdH1cblxuXHQvLyBDb250ZW50XG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0LnBhbmVsLWNvbnRlbnQge1xuXG5cdFx0JiA+ICo6bGFzdC1jaGlsZCB7fVxuXG5cdH1cblxufSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZWFyY2ggRm9ybSBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHRoZSBzZWFyY2ggZm9ybS5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlYXJjaCBSZXN1bHRzIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdGhlIHNlYXJjaCByZXN1bHRzLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVGFibGVzIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdGFibGVzIGFuZCB0YWJsZSBjb21wb25lbmV0cy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFZhcmlhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBUYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG50YWJsZSB7XG5cblx0Ly8gR2xvYmFsXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0dHIge31cblx0dGgsIHRkIHt9XG5cdHRoIHt9XG5cblxuXHQvLyBIZWFkZXIgQ2VsbHNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHR0aGVhZCB7fVxuXHR0aGVhZCB0aCB7fVxuXG5cblx0Ly8gQm9keSBDZWxsc1xuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7fVxuXG5cdFx0Ly8gSG92ZXJcblx0XHR0Ym9keSB0cjpob3ZlciB7fVxuXHRcdHRib2R5IHRyOm50aC1jaGlsZChldmVuKTpob3ZlciB7fVxuXG5cblx0Ly8gRm9vdGVyIENlbGxzXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0dGZvb3Qge31cblx0dGZvb3QgdGQge31cblxuXHRcdC8vIEhvdmVyXG5cdFx0dGZvb3QgdHI6aG92ZXIge31cblx0XHR0Zm9vdCB0cjpudGgtY2hpbGQoZXZlbik6aG92ZXIge31cblxuXG59IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNvY2lhbCBIZWFkZXIgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBzb2NpYWwgc2hhcmUgYnV0dG9ucyBpbiBoZWFkZXIuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBWYXJpYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4kZGVmYXVsdC1oZWlnaHQ6IDEwMHB4O1xuJGRlZmF1bHQtd2lkdGg6IDUwcHg7XG4kc21hbGwtaGVpZ2h0OiA3MHB4O1xuJHNtYWxsLXdpZHRoOiAkc21hbGwtaGVpZ2h0O1xuLy9jYWxjdWxhdGUgd2lkdGggYmFzZWQgb24gaG93IG1hbnkgaWNvbnMgYXJlIHVzZWQuXG4kZXhwYW5kZWQtd2lkdGg6ICRkZWZhdWx0LXdpZHRoICsgKCRzbWFsbC13aWR0aCAqIDIpO1xuXG4uc2hhcmUge1xuXHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4ycyBlYXNlLWluLW91dCk7XG5cdGhlaWdodDogJGRlZmF1bHQtaGVpZ2h0O1xuXHR3aWR0aDogJGRlZmF1bHQtd2lkdGg7XG5cblx0YmFja2dyb3VuZDogIzMzMzMzMztcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXG5cdHVsIHtcblx0XHRtYXJnaW46MDtcblx0XHRwYWRkaW5nOjA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4ycyBlYXNlLWluLW91dCk7XG5cdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoIC0oJGRlZmF1bHQtaGVpZ2h0IC8gMikgKSk7XG5cblx0XHRsaSB7XG5cdFx0XHRhIHtcblx0XHRcdFx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdFx0XHRcdHdpZHRoOiAkZGVmYXVsdC13aWR0aDtcblx0XHRcdFx0aGVpZ2h0OiAkZGVmYXVsdC1oZWlnaHQgLyAyO1xuXHRcdFx0XHR0ZXh0LWluZGVudDogLTk5OTlweDtcblx0XHQgICAgXHR3aGl0ZS1zcGFjZTogbm93cmFwO1x0XHRcdFxuXHRcdCAgICB9XG5cdFx0ICAgIC50b2dnbGUge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiMzMzMzMzMgdXJsKC4uL2ltZy9zb2NpYWwtc2hhcmUucG5nKSBuby1yZXBlYXQgY2VudGVyO1xuXHRcdCAgICB9XG5cdFx0XHQuZmIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiMzYjU5OTggdXJsKC4uL2ltZy9zb2NpYWwtZmIucG5nKSBuby1yZXBlYXQgY2VudGVyO1xuXHRcdFx0fVxuXHRcdFx0LnR3aXR0ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiMwMGFjZWQgdXJsKC4uL2ltZy9zb2NpYWwtdHdpdHRlci5wbmcpIG5vLXJlcGVhdCBjZW50ZXI7XG5cdFx0XHR9XG5cdFx0fVx0XG5cdH1cblxuXHQuaGVhZHJvb20tLW5vdC10b3AgJiB7XG5cdFx0aGVpZ2h0OiAkc21hbGwtaGVpZ2h0O1xuXG5cdFx0dWwge1xuXHRcdFx0d2lkdGg6JGV4cGFuZGVkLXdpZHRoO1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMHB4KSk7XG5cdFx0XHRsaSB7XG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHR3aWR0aDokc21hbGwtaGVpZ2h0O1xuXHRcdFx0XHRcdGhlaWdodDokc21hbGwtaGVpZ2h0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdGEge1xuXHRcdFx0XHRcdFx0d2lkdGg6JGRlZmF1bHQtaGVpZ2h0IC8gMjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdHdpZHRoOiRleHBhbmRlZC13aWR0aDtcdFxuXHRcdH1cblx0fVxufVxuIiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDQwNCBQYWdlIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdGhlIDQwNCBFcnJvciBQYWdlLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRXJyb3IgNDA0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmVycm9yNDA0IHt9IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhvbWUgUGFnZSBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHRoZSBob21lIHBhZ2UuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5ib2R5LmhvbWUge1xuXHQuY29udGVudC1jb250YWluZXIge1xuXHRcdHBhZGRpbmctdG9wOjA7XG5cdH1cblx0Ji5oZWFkcm9vbS0tdW5waW5uZWQge1xuXHRcdC5jb250ZW50LWNvbnRhaW5lciB7XG5cdFx0XHRwYWRkaW5nLXRvcDogMTAwcHg7XG5cdFx0fVxuXHR9XG59XG5cbi5zZWFyY2gtY29udGFpbmVyIHtcblx0YmFja2dyb3VuZDogJGNvbG9yX3ByaW1hcnk7XG5cdGNvbG9yOiAkY29sb3JfdGVydGlhcnk7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6MTAwJTtcblx0LnNlYXJjaC16aXAge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXHRoMiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdC8vIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRwYWRkaW5nOiAyMHB4IDA7XG5cdFx0XG5cdFx0bWFyZ2luOiAyMHB4IDA7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvcl90ZXJ0aWFyeTtcblx0XHRAaW5jbHVkZSBtZWRpYSgkZGVza3RvcCkge1xuXHRcdFx0cGFkZGluZy1yaWdodDogNDBweDtcblx0XHRcdGJvcmRlcjpub25lO1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHR3aWR0aDo1MCU7XG5cdFx0XHRmbG9hdDpsZWZ0O1xuXHRcdH1cblx0fVxuXHRmb3JtIHtcblx0XHRmb250LXNpemU6IDA7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdEBpbmNsdWRlIG1lZGlhKCRkZXNrdG9wKSB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0XHRwYWRkaW5nOiAyMHB4IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdH1cblx0XHRcblx0XHQvLyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0LmlucHV0IHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdG1hcmdpbi1ib3R0b206NDBweDtcblx0XHRcdEBpbmNsdWRlIG1lZGlhKCRkZXNrdG9wKSB7XG5cdFx0XHRcdG1hcmdpbjowO1xuXHRcdFx0XHRwYWRkaW5nOiAxM3B4IDA7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiA0MHB4O1xuXHRcdFx0fVxuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0bGFiZWwge1xuXHRcdFx0XHRwYWRkaW5nOiAxMHB4IDA7XG5cdFx0XHRcdHBhZGRpbmctcmlnaHQ6MTBweDtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdFxuXHRcdFx0fVxuXHRcdFx0aW5wdXRbdHlwZT10ZXh0XSB7XG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRib3JkZXI6bm9uZTsgXG5cdFx0XHRcdHRleHQtc2hhZG93OiBub25lO1xuXHRcdFx0XHRib3gtc2hhZG93Om5vbmU7XG5cdFx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRcdHBhZGRpbmctbGVmdDogMzBweDtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRtYXgtd2lkdGg6IDE5MHB4O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl90ZXJ0aWFyeSB1cmwoLi4vaW1nL3NlYXJjaC1nbG9iZS1pY29uLnBuZykgbm8tcmVwZWF0IDEwcHggY2VudGVyO1xuXHRcdFx0fVxuXHRcdFx0aW5wdXRbdHlwZT1zdWJtaXRdIHtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdGJhY2tncm91bmQ6IGRhcmtlbigkY29sb3JfOCwxMCUpO1xuXHRcdFx0XHRjb2xvcjogJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdG1pbi13aWR0aDogMTEwcHg7XG5cdFx0XHR9XG5cdFx0XHQuZXJyb3Ige1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdHRvcDogNDBweDtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0Ji5hY3RpdmUge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cdFx0XG5cdH1cbn1cbiNjaGFydF9kaXYge1xuXHRtaW4taGVpZ2h0Ojg4MHB4O1xuXHRvdmVyZmxvdzpoaWRkZW47XG59XG4jY2hhcnRfZGl2IHBhdGgge1xuXHQvLyBzdHJva2Utd2lkdGg6MTsgXG5cdHN0cm9rZTojZmZmO1xuXG5cdCY6aG92ZXIge1xuXHRcdHN0cm9rZTojZmRkNzI2O1xuXHRcdGZpbGw6I2ZkZDcyNjtcblx0XHRjdXJzb3I6cG9pbnRlcjtcblx0fVxufVxuLnRvb2x0aXAge1xuXHRoMyB7XG5cdFx0Y29sb3I6JGNvbG9yX3ByaW1hcnk7XG5cdFx0cGFkZGluZy1ib3R0b206MDtcblx0XHRtYXJnaW4tYm90dG9tOjVweDtcblx0fVxuXHRcblx0d2lkdGg6IDIwMHB4O1xufVxuLmdvb2dsZS12aXN1YWxpemF0aW9uLXRvb2x0aXAtaXRlbTpmaXJzdC1jaGlsZCB7XG5cdGRpc3BsYXk6bm9uZTtcbn1cblxuLm1hcC1jb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OmhpZGRlbjtcblxuXHQjY2hhcnRfZGl2IHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHRcdEBpbmNsdWRlIG1lZGlhKCRkZXNrdG9wKSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi1sZWZ0OjMwcHg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IC0zMHB4O1xuXHRcdH1cblx0fVxuXHRoMiB7XG5cdFx0Zm9udC1zaXplOiAzMnB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXdlaWdodDogNDAwO1xuXHRcdG1hcmdpbjogNDBweCAwO1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblx0LmN0YS1idXR0b25zIHtcblx0XHRkaXNwbGF5Om5vbmU7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJGRlc2t0b3ApIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0cmlnaHQ6IDUwcHg7XG5cdFx0Ym90dG9tOiA2MHB4O1xuXHRcdHVsIHtcblx0XHRcdEBpbmNsdWRlIGNsZWFyZml4O1xuXHRcdFx0bWFyZ2luOjA7XG5cdFx0XHRwYWRkaW5nOjAgMCA1cHg7XG5cdFx0XHRsaXN0LXN0eWxlOm5vbmU7XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDVweDtcblxuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfNTtcblx0XHRcdFx0XHRwYWRkaW5nOjVweCAxMHB4O1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6JGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHRcdGNvbG9yOiAkY29sb3JfNjtcblx0XHRcdFx0XHQuY3RhLWljb24ge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdFx0XHRcdGNvbG9yOiAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiRjb2xvcl82O1xuXHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdFx0XHRcdHdpZHRoOjQ4cHg7XG5cdFx0XHRcdFx0XHRoZWlnaHQ6NDhweDtcblx0XHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiA0OHB4O1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA1cHg7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA1cHg7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFtjbGFzc149XCJpY29uLVwiXSwgW2NsYXNzKj1cIiBpY29uLVwiXSB7XG5cdFx0XHRcdFx0XHRjb2xvcjokY29sb3JfNTtcblx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDoyMHB4O1xuXHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDQ4cHg7XG5cdFx0XHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHRcdGJhY2tncm91bmQ6JGNvbG9yXzQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5tb2JpbGUtbGlzdCB7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJGRlc2t0b3ApIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHRcdG1hcmdpbi10b3A6IDMwcHg7XG5cdFx0dWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzowO1xuXHRcdFx0bGlzdC1zdHlsZTpub25lO1xuXHRcdFx0QGluY2x1ZGUgb3V0ZXItY29udGFpbmVyO1xuXHRcdFx0bGkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNztcblx0XHRcdFx0Y29sb3I6ICRjb2xvcl90ZXJ0aWFyeTtcblxuXHRcdFx0XHQmLnRhYmxldC1oZWFkZXIsXG5cdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdHBhZGRpbmc6MTBweCAyMHB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0XHRcdFx0d2lkdGg6IDQwcHg7XG5cdFx0XHRcdFx0XHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0cGFkZGluZzoxMHB4IDIwcHg7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdHNwYW4ge1xuXHRcdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6JGNvbG9yXzY7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdCY6bnRoLWNoaWxkKDJuKzMpIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWZlZmVmO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHQmOm50aC1jaGlsZCgybis0KSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHR9XG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKG1heC13aWR0aCAkdGFibGV0KSB7XG5cdFx0XHRcdFx0Ly8gQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDIgb2YgMik7XG5cdFx0XHRcdFx0Ly8gQGluY2x1ZGUgb21lZ2EoMm4pO1xuXHRcdFx0XHRcdCYudGFibGV0LWhlYWRlciB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCR0YWJsZXQpIHtcblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0biszKSxcblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0bis0KSB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWZlZmVmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0bis1KSxcblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0bis2KSB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygzIG9mIDYpO1xuXHRcdFx0XHRcdC8vIEBpbmNsdWRlIG9tZWdhLXJlc2V0KDJuKTtcblx0XHRcdFx0XHRAaW5jbHVkZSBvbWVnYSgybik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH1cblx0fVxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVscGVycyBQYXJ0aWFsXG4vLyBWYXJpb3VzIGNsYXNzZXMgdGhhdCB3aWxsIGhlbHAgY2xlYW4gdXAgbGF5b3V0cyBhbmQgc3R5bGVzXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0ZXh0LWluZGVudDogLTk5OWVtO1xuICAgIGRpcmVjdGlvbjogbHRyO1xuICAgICpsaW5lLWhlaWdodDogMDtcbiAgICBiciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4udmlzdWFsbHloaWRkZW4ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gICAgbWFyZ2luOiAtMXB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBib3JkZXI6IDA7XG4gICAgJi5mb2N1c2FibGUge1xuICAgICAgICAmOmFjdGl2ZSxcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICBjbGlwOiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pbnZpc2libGUge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLmdyb3VwIHtcbiAgICAqem9vbTogMTtcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG59XG5cbi8vIFByZXZlbnQgbGF5b3V0IGJyZWFrIHdpdGggR29vZ2xlIEFkV29yZHNcbmltZ1tzcmMqPVwiZ29vZ2xlYWRzZXJ2aWNlcy5jb21cIl0ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTkwMDBlbTtcbn0iLCIvLyBWYXJpYWJsZSBzZXR0aW5ncyBmb3IgL2FkZG9ucy9wcmVmaXhlci5zY3NzXG4kcHJlZml4LWZvci13ZWJraXQ6ICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1tb3ppbGxhOiAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1vcGVyYTogICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1zcGVjOiAgICAgIHRydWUgIWRlZmF1bHQ7IC8vIHJlcXVpcmVkIGZvciBrZXlmcmFtZSBtaXhpblxuIiwiJGVtLWJhc2U6IDE2cHggIWRlZmF1bHQ7XG4iLCJAZnVuY3Rpb24gX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpIHtcbiAgQGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXG4gIGFuZCAoJGdyYWRpZW50LXR5cGUgPT0gcmFkaWFsKVxuICBhbmQgKHR5cGUtb2YoJGdyYWRpZW50LXBvc2l0aW9ucykgIT0gY29sb3IpIHtcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XG4gIH1cbiAgQHJldHVybiAkZ3JhZGllbnQtcG9zaXRpb25zO1xufVxuIiwiQGZ1bmN0aW9uIF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKSB7XG4gICR0eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRzcGVjOiBudWxsO1xuICAkZGVncmVlOiBudWxsO1xuICAkc2lkZTogbnVsbDtcbiAgJGNvcm5lcjogbnVsbDtcbiAgJGxlbmd0aDogbGVuZ3RoKCRwb3MpO1xuICAvLyBQYXJzZSBTaWRlIGFuZCBjb3JuZXIgcG9zaXRpb25zXG4gIEBpZiAoJGxlbmd0aCA+IDEpIHtcbiAgICBAaWYgbnRoKCRwb3MsIDEpID09IFwidG9cIiB7IC8vIE5ld2VyIHN5bnRheFxuICAgICAgJHNpZGU6IG50aCgkcG9zLCAyKTtcblxuICAgICAgQGlmICRsZW5ndGggPT0gMiB7IC8vIGVnLiB0byB0b3BcbiAgICAgICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHlcbiAgICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDIpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7IC8vIGVnLiB0byB0b3AgbGVmdFxuICAgICAgICAkY29ybmVyOiBudGgoJHBvcywgMyk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMiB7IC8vIE9sZGVyIHN5bnRheCAoXCJ0b3AgbGVmdFwiKVxuICAgICAgJHNpZGU6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAxKSk7XG4gICAgICAkY29ybmVyOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgIH1cblxuICAgIEBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIHJpZ2h0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIGxlZnRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICAkc3BlYzogdG8gJHNpZGUgJGNvcm5lcjtcbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDEge1xuICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5XG4gICAgQGlmICR0eXBlID09IHN0cmluZyB7XG4gICAgICAkZGVncmVlOiAkcG9zO1xuICAgICAgJHNwZWM6IHRvIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkZGVncmVlOiAtMjcwIC0gJHBvczsgLy9yb3RhdGUgdGhlIGdyYWRpZW50IG9wcG9zaXRlIGZyb20gc3BlY1xuICAgICAgJHNwZWM6ICRwb3M7XG4gICAgfVxuICB9XG4gICRkZWdyZWU6IHVucXVvdGUoJGRlZ3JlZSArIFwiLFwiKTtcbiAgJHNwZWM6ICAgdW5xdW90ZSgkc3BlYyArIFwiLFwiKTtcbiAgQHJldHVybiAkZGVncmVlICRzcGVjO1xufVxuXG5AZnVuY3Rpb24gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcykge1xuIEByZXR1cm4gaWYoJHBvcyA9PSBsZWZ0LCByaWdodCwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gcmlnaHQsIGxlZnQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHRvcCwgYm90dG9tLCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSBib3R0b20sIHRvcCwgbnVsbCk7XG59XG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1hcmctcGFyc2VyKCRHMSwgJEcyLCAkcG9zLCAkc2hhcGUtc2l6ZSkge1xuICBAZWFjaCAkdmFsdWUgaW4gJEcxLCAkRzIge1xuICAgICRmaXJzdC12YWw6IG50aCgkdmFsdWUsIDEpO1xuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XG4gICAgJHNwZWMtYXQtaW5kZXg6IG51bGw7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgICRzcGVjLWF0LWluZGV4OiBpZihpbmRleCgkdmFsdWUsIGF0KSwgaW5kZXgoJHZhbHVlLCBhdCksIGZhbHNlKTtcbiAgICB9XG4gICAgQGlmICRzcGVjLWF0LWluZGV4IHtcbiAgICAgIEBpZiAkc3BlYy1hdC1pbmRleCA+IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHNoYXBlLXNpemUgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHNwZWMtYXQtaW5kZXggPT0gMSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJEcxOiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAoJHBvcy10eXBlICE9IGNvbG9yKSBvciAoJGZpcnN0LXZhbCAhPSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNlbnRlclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInRvcFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiYm90dG9tXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwibGVmdFwiKSB7XG5cbiAgICAgICAgICAkcG9zOiAkdmFsdWU7XG5cbiAgICAgICAgICBAaWYgJHBvcyA9PSAkRzEge1xuICAgICAgICAgICAgJEcxOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNpcmNsZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb3ZlclwiKSB7XG5cbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICR2YWx1ZSA9PSAkRzEge1xuICAgICAgICAgICAgJEcxOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkRzIge1xuICAgICAgICAgICAgJEcyOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRHMSwgJEcyLCAkcG9zLCAkc2hhcGUtc2l6ZTtcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xuICAkc2hhcGUtc2l6ZTogbnRoKCRncmFkaWVudC1wb3MsIDEpO1xuICAkcG9zOiAgICAgICAgbnRoKCRncmFkaWVudC1wb3MsIDIpO1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgJHByZS1zcGVjOiB1bnF1b3RlKGlmKCRwb3MsIFwiI3skcG9zfSwgXCIsIG51bGwpKVxuICAgICAgICAgICAgIHVucXVvdGUoaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sXCIsIG51bGwpKTtcbiAgJHBvcy1zcGVjOiBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG5cbiAgJHNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyRwb3Mtc3BlY31cIjtcblxuICAvLyBBZGQgY29tbWFcbiAgQGlmICgkc3BlYyAhPSAnICAnKSB7XG4gICAgJHNwZWM6IFwiI3skc3BlY30sXCJcbiAgfVxuXG4gIEByZXR1cm4gJHByZS1zcGVjICRzcGVjO1xufVxuIiwiLy8gVXNlciBmb3IgbGluZWFyIGFuZCByYWRpYWwgZ3JhZGllbnRzIHdpdGhpbiBiYWNrZ3JvdW5kLWltYWdlIG9yIGJvcmRlci1pbWFnZSBwcm9wZXJ0aWVzXG5cbkBmdW5jdGlvbiBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnRzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcjogZmFsc2UpIHtcbiAgJHByZS1zcGVjOiBudWxsO1xuICAkc3BlYzogbnVsbDtcbiAgJHZlbmRvci1ncmFkaWVudHM6IG51bGw7XG4gIEBpZiAkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIge1xuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcbiAgICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IHJhZGlhbCB7XG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XG4gICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gIH1cblxuICBAaWYgJHZlbmRvciB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IC0jeyR2ZW5kb3J9LSN7JGdyYWRpZW50LXR5cGV9LWdyYWRpZW50KCN7JHByZS1zcGVjfSAkZ3JhZGllbnRzKTtcbiAgfVxuICBAZWxzZSBpZiAkdmVuZG9yID09IGZhbHNlIHtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogXCIjeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRzcGVjfSAjeyRncmFkaWVudHN9KVwiO1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcbiAgfVxuICBAcmV0dXJuICR2ZW5kb3ItZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKSB7XG4gICRzaGFwZS1zaXplLXNwZWM6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XG4gICAgQGlmICgkdmFsdWUgPT0gXCJjb3ZlclwiKSBvciAoJHZhbHVlID09IFwiY29udGFpblwiKSB7XG4gICAgICAkdmFsdWU6IG51bGw7XG4gICAgfVxuICAgICRzaGFwZS1zaXplLXNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyR2YWx1ZX1cIjtcbiAgfVxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XG59XG4iLCIvLyBGbGV4aWJsZSBncmlkXG5AZnVuY3Rpb24gZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucykge1xuICAkd2lkdGg6ICRjb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkd2lkdGggLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuLy8gRmxleGlibGUgZ3V0dGVyXG5AZnVuY3Rpb24gZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMsICRndXR0ZXI6ICRmZy1ndXR0ZXIpIHtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVyIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbi8vIFRoZSAkZmctY29sdW1uLCAkZmctZ3V0dGVyIGFuZCAkZmctbWF4LWNvbHVtbnMgdmFyaWFibGVzIG11c3QgYmUgZGVmaW5lZCBpbiB5b3VyIGJhc2Ugc3R5bGVzaGVldCB0byBwcm9wZXJseSB1c2UgdGhlIGZsZXgtZ3JpZCBmdW5jdGlvbi5cbi8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGZsdWlkIGdyaWQgZXF1YXRpb24gKHRhcmdldCAvIGNvbnRleHQgPSByZXN1bHQpIGFuZCB1c2VzIGNvbHVtbnMgdG8gaGVscCBkZWZpbmUgZWFjaC5cbi8vXG4vLyBUaGUgY2FsY3VsYXRpb24gcHJlc3VtZXMgdGhhdCB5b3VyIGNvbHVtbiBzdHJ1Y3R1cmUgd2lsbCBiZSBtaXNzaW5nIHRoZSBsYXN0IGd1dHRlcjpcbi8vXG4vLyAgIC0tIGNvbHVtbiAtLSBndXR0ZXIgLS0gY29sdW1uIC0tIGd1dHRlciAtLSBjb2x1bW5cbi8vXG4vLyAgJGZnLWNvbHVtbjogNjBweDsgICAgICAgICAgICAgLy8gQ29sdW1uIFdpZHRoXG4vLyAgJGZnLWd1dHRlcjogMjVweDsgICAgICAgICAgICAgLy8gR3V0dGVyIFdpZHRoXG4vLyAgJGZnLW1heC1jb2x1bW5zOiAxMjsgICAgICAgICAgLy8gVG90YWwgQ29sdW1ucyBGb3IgTWFpbiBDb250YWluZXJcbi8vXG4vLyAgZGl2IHtcbi8vICAgIHdpZHRoOiBmbGV4LWdyaWQoNCk7ICAgICAgICAvLyByZXR1cm5zICgzMTVweCAvIDk5NXB4KSA9IDMxLjY1ODI5JTtcbi8vICAgIG1hcmdpbi1sZWZ0OiBmbGV4LWd1dHRlcigpOyAvLyByZXR1cm5zICgyNXB4IC8gOTk1cHgpID0gMi41MTI1NiU7XG4vL1xuLy8gICAgcCB7XG4vLyAgICAgIHdpZHRoOiBmbGV4LWdyaWQoMiwgNCk7ICAvLyByZXR1cm5zICgxNDVweCAvIDMxNXB4KSA9IDQ2LjAzMTc0NiU7XG4vLyAgICAgIGZsb2F0OiBsZWZ0O1xuLy8gICAgICBtYXJnaW46IGZsZXgtZ3V0dGVyKDQpOyAgLy8gcmV0dXJucyAoMjVweCAvIDMxNXB4KSA9IDcuOTM2NTA4JTtcbi8vICAgIH1cbi8vXG4vLyAgICBibG9ja3F1b3RlIHtcbi8vICAgICAgZmxvYXQ6IGxlZnQ7XG4vLyAgICAgIHdpZHRoOiBmbGV4LWdyaWQoMiwgNCk7IC8vIHJldHVybnMgKDE0NXB4IC8gMzE1cHgpID0gNDYuMDMxNzQ2JTtcbi8vICAgIH1cbi8vICB9IiwiQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbi8vIFRoZSAkZ3ctY29sdW1uIGFuZCAkZ3ctZ3V0dGVyIHZhcmlhYmxlcyBtdXN0IGJlIGRlZmluZWQgaW4geW91ciBiYXNlIHN0eWxlc2hlZXQgdG8gcHJvcGVybHkgdXNlIHRoZSBncmlkLXdpZHRoIGZ1bmN0aW9uLlxuLy9cbi8vICAkZ3ctY29sdW1uOiAxMDBweDsgICAgICAgICAvLyBDb2x1bW4gV2lkdGhcbi8vICAkZ3ctZ3V0dGVyOiA0MHB4OyAgICAgICAgICAvLyBHdXR0ZXIgV2lkdGhcbi8vXG4vLyAgZGl2IHtcbi8vICAgIHdpZHRoOiBncmlkLXdpZHRoKDQpOyAgICAvLyByZXR1cm5zIDUyMHB4O1xuLy8gICAgbWFyZ2luLWxlZnQ6ICRndy1ndXR0ZXI7IC8vIHJldHVybnMgNDBweDtcbi8vICB9XG4iLCJAZnVuY3Rpb24gZ29sZGVuLXJhdGlvKCR2YWx1ZSwgJGluY3JlbWVudCkge1xuICBAcmV0dXJuIG1vZHVsYXItc2NhbGUoJHZhbHVlLCAkaW5jcmVtZW50LCAkZ29sZGVuKVxufVxuIiwiQGZ1bmN0aW9uIGxpbmVhci1ncmFkaWVudCgkcG9zLCAkZ3JhZGllbnRzLi4uKSB7XG4gICR0eXBlOiBsaW5lYXI7XG4gICRwb3MtdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xuXG4gIC8vIGlmICRwb3MgZG9lc24ndCBleGlzdCwgZml4ICRncmFkaWVudFxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XG4gICAgJGdyYWRpZW50czogemlwKCRwb3MgJGdyYWRpZW50cyk7XG4gICAgJHBvczogZmFsc2U7XG4gIH1cblxuICAkdHlwZS1ncmFkaWVudDogJHR5cGUsICRwb3MsICRncmFkaWVudHM7XG4gIEByZXR1cm4gJHR5cGUtZ3JhZGllbnQ7XG59XG4iLCIvLyBTY2FsaW5nIFZhcmFpYmxlc1xuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xuJG1pbm9yLXNlY29uZDogICAgIDEuMDY3O1xuJG1ham9yLXNlY29uZDogICAgIDEuMTI1O1xuJG1pbm9yLXRoaXJkOiAgICAgIDEuMjtcbiRtYWpvci10aGlyZDogICAgICAxLjI1O1xuJHBlcmZlY3QtZm91cnRoOiAgIDEuMzMzO1xuJGF1Z21lbnRlZC1mb3VydGg6IDEuNDE0O1xuJHBlcmZlY3QtZmlmdGg6ICAgIDEuNTtcbiRtaW5vci1zaXh0aDogICAgICAxLjY7XG4kbWFqb3Itc2l4dGg6ICAgICAgMS42Njc7XG4kbWlub3Itc2V2ZW50aDogICAgMS43Nzg7XG4kbWFqb3Itc2V2ZW50aDogICAgMS44NzU7XG4kb2N0YXZlOiAgICAgICAgICAgMjtcbiRtYWpvci10ZW50aDogICAgICAyLjU7XG4kbWFqb3ItZWxldmVudGg6ICAgMi42Njc7XG4kbWFqb3ItdHdlbGZ0aDogICAgMztcbiRkb3VibGUtb2N0YXZlOiAgICA0O1xuXG5AZnVuY3Rpb24gbW9kdWxhci1zY2FsZSgkdmFsdWUsICRpbmNyZW1lbnQsICRyYXRpbykge1xuICAkdjE6IG50aCgkdmFsdWUsIDEpO1xuICAkdjI6IG50aCgkdmFsdWUsIGxlbmd0aCgkdmFsdWUpKTtcbiAgJHZhbHVlOiAkdjE7XG5cbiAgLy8gc2NhbGUgJHYyIHRvIGp1c3QgYWJvdmUgJHYxXG4gIEB3aGlsZSAkdjIgPiAkdjEge1xuICAgICR2MjogKCR2MiAvICRyYXRpbyk7IC8vIHdpbGwgYmUgb2ZmLWJ5LTFcbiAgfVxuICBAd2hpbGUgJHYyIDwgJHYxIHtcbiAgICAkdjI6ICgkdjIgKiAkcmF0aW8pOyAvLyB3aWxsIGZpeCBvZmYtYnktMVxuICB9XG5cbiAgLy8gY2hlY2sgQUZURVIgc2NhbGluZyAkdjIgdG8gcHJldmVudCBkb3VibGUtY291bnRpbmcgY29ybmVyLWNhc2VcbiAgJGRvdWJsZS1zdHJhbmRlZDogJHYyID4gJHYxO1xuXG4gIEBpZiAkaW5jcmVtZW50ID4gMCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkaW5jcmVtZW50IHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxICogJHJhdGlvKSA+ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgKiAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAqICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkaW5jcmVtZW50IDwgMCB7XG4gICAgLy8gYWRqdXN0ICR2MiB0byBqdXN0IGJlbG93ICR2MVxuICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIHtcbiAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XG4gICAgfVxuXG4gICAgQGZvciAkaSBmcm9tICRpbmNyZW1lbnQgdGhyb3VnaCAtMSB7XG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAvICRyYXRpbykgPCAkdjIge1xuICAgICAgICAkdmFsdWU6ICR2MjtcbiAgICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdjE6ICgkdjEgLyAkcmF0aW8pO1xuICAgICAgICAkdmFsdWU6ICR2MTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSBlbSgxMikgd2hlbiB0aGUgcGFyZW50IGlzIDE2cHhcbi8vIGlmIHRoZSBwYXJlbnQgaXMgYW5vdGhlciB2YWx1ZSBzYXkgMjRweCB3cml0ZSBlbSgxMiwgMjQpXG5cbkBmdW5jdGlvbiBlbSgkcHh2YWwsICRiYXNlOiAkZW0tYmFzZSkge1xuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xuICB9XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XG4gIH1cbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMWVtO1xufVxuIiwiLy8gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBhbmQgdXNlZCBieSB0aGUgYmFja2dyb3VuZC1pbWFnZSBtaXhpbi5cbkBmdW5jdGlvbiByYWRpYWwtZ3JhZGllbnQoJEcxLCAgICAgICAgJEcyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkRzM6IG51bGwsICAkRzQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRHNTogbnVsbCwgICRHNjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJEc3OiBudWxsLCAgJEc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkRzk6IG51bGwsICAkRzEwOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkcG9zOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2hhcGUtc2l6ZTogbnVsbCkge1xuXG4gICRkYXRhOiBfcmFkaWFsLWFyZy1wYXJzZXIoJEcxLCAkRzIsICRwb3MsICRzaGFwZS1zaXplKTtcbiAgJEcxOiAgbnRoKCRkYXRhLCAxKTtcbiAgJEcyOiAgbnRoKCRkYXRhLCAyKTtcbiAgJHBvczogbnRoKCRkYXRhLCAzKTtcbiAgJHNoYXBlLXNpemU6IG50aCgkZGF0YSwgNCk7XG5cbiAgJHR5cGU6IHJhZGlhbDtcbiAgJGdyYWRpZW50OiAkRzEsICRHMiwgJEczLCAkRzQsICRHNSwgJEc2LCAkRzcsICRHOCwgJEc5LCAkRzEwO1xuXG4gICR0eXBlLWdyYWRpZW50OiAkdHlwZSwgJHNoYXBlLXNpemUgJHBvcywgJGdyYWRpZW50O1xuICBAcmV0dXJuICR0eXBlLWdyYWRpZW50O1xufVxuXG5cbiIsIi8vIFNydGlwcyB0aGUgdW5pdHMgZnJvbSBhIHZhbHVlLiBlLmcuIDEycHggLT4gMTJcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWwpIHtcbiAgQHJldHVybiAoJHZhbCAvICgkdmFsICogMCArIDEpKTtcbn1cbiIsIi8vIEFkZCBwZXJjZW50YWdlIG9mIHdoaXRlIHRvIGEgY29sb3JcbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnQpe1xuICBAcmV0dXJuIG1peCh3aGl0ZSwgJGNvbG9yLCAkcGVyY2VudCk7XG59XG5cbi8vIEFkZCBwZXJjZW50YWdlIG9mIGJsYWNrIHRvIGEgY29sb3JcbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50KXtcbiAgQHJldHVybiBtaXgoYmxhY2ssICRjb2xvciwgJHBlcmNlbnQpO1xufVxuIiwiLy8gUmV0dXJuIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyBpZiBhcHByb3ByaWF0ZVxuLy8gRXhhbXBsZTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygodHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZCksIG1veikgLT4gLW1vei10cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcHMsICR2ZW5kb3I6IGZhbHNlKSB7XG5cdCRuZXctcHJvcHM6ICgpO1xuXHRcblx0QGVhY2ggJHByb3AgaW4gJHByb3BzIHtcblx0XHQkbmV3LXByb3BzOiBhcHBlbmQoJG5ldy1wcm9wcywgdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yKSwgY29tbWEpO1xuXHR9XG5cblx0QHJldHVybiAkbmV3LXByb3BzO1xufVxuXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yOiBmYWxzZSkge1xuXHQvLyBwdXQgb3RoZXIgcHJvcGVydGllcyB0aGF0IG5lZWQgdG8gYmUgcHJlZml4ZWQgaGVyZSBhc3dlbGxcblx0QGlmICR2ZW5kb3IgYW5kICRwcm9wID09IHRyYW5zZm9ybSB7XG5cdFx0QHJldHVybiB1bnF1b3RlKCctJyskdmVuZG9yKyctJyskcHJvcCk7XG5cdH1cblx0QGVsc2Uge1xuXHRcdEByZXR1cm4gJHByb3A7XG5cdH1cbn0iLCIvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI3RoZS1hbmltYXRpb24tbmFtZS1wcm9wZXJ0eS1cbi8vIEVhY2ggb2YgdGhlc2UgbWl4aW5zIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIGxpc3RzIG9mIHZhbHVlcywgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCB0cmFuc2l0aW9ucyBmb3IgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHRvIGJlIGRlc2NyaWJlZCBpbiBhIHNpbmdsZSBzdHlsZSBydWxlLiBFYWNoIHZhbHVlIGluIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBhdCB0aGF0IHNhbWUgcG9zaXRpb24gaW4gdGhlIG90aGVyIHByb3BlcnRpZXMuXG5cbi8vIE9mZmljaWFsIGFuaW1hdGlvbiBzaG9ydGhhbmQgcHJvcGVydHkuXG5AbWl4aW4gYW5pbWF0aW9uICgkYW5pbWF0aW9ucy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24sICRhbmltYXRpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyBJbmRpdmlkdWFsIEFuaW1hdGlvbiBQcm9wZXJ0aWVzXG5AbWl4aW4gYW5pbWF0aW9uLW5hbWUgKCRuYW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tbmFtZSwgJG5hbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24gKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZHVyYXRpb24sICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiAoJG1vdGlvbnMuLi4pIHtcbi8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkbW90aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCAoJHZhbHVlcy4uLikge1xuLy8gaW5maW5pdGUgfCA8bnVtYmVyPlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCAkdmFsdWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tZGlyZWN0aW9uICgkZGlyZWN0aW9ucy4uLikge1xuLy8gbm9ybWFsIHwgYWx0ZXJuYXRlXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kaXJlY3Rpb24sICRkaXJlY3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSAoJHN0YXRlcy4uLikge1xuLy8gcnVubmluZyB8IHBhdXNlZFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tcGxheS1zdGF0ZSwgJHN0YXRlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLWRlbGF5ICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cblxuQG1peGluIGFuaW1hdGlvbi1maWxsLW1vZGUgKCRtb2Rlcy4uLikge1xuLy8gbm9uZSB8IGZvcndhcmRzIHwgYmFja3dhcmRzIHwgYm90aFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gYXBwZWFyYW5jZSAoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFwcGVhcmFuY2UsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gQmFja2ZhY2UtdmlzaWJpbGl0eSBtaXhpblxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kcyB1c2luZyBzaG9ydGhhbmRcbi8vIG5vdGF0aW9uLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZChcbiAgJGJhY2tncm91bmQtMSAgICAgICAsICRiYWNrZ3JvdW5kLTI6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTM6IG51bGwsICRiYWNrZ3JvdW5kLTQ6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTU6IG51bGwsICRiYWNrZ3JvdW5kLTY6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTc6IG51bGwsICRiYWNrZ3JvdW5kLTg6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTk6IG51bGwsICRiYWNrZ3JvdW5kLTEwOiBudWxsLFxuICAkZmFsbGJhY2s6IG51bGxcbikge1xuICAkYmFja2dyb3VuZHM6ICRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsXG4gICAgICAgICAgICAgICAgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCxcbiAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LFxuICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsXG4gICAgICAgICAgICAgICAgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTA7XG5cbiAgJGZhbGxiYWNrLWNvbG9yOiBmYWxzZTtcbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmYWxsYmFjay1jb2xvcjogX2V4dHJhY3QtYmFja2dyb3VuZC1jb2xvcigkYmFja2dyb3VuZHMpO1xuICB9XG5cbiAgQGlmICRmYWxsYmFjay1jb2xvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZhbGxiYWNrLWNvbG9yO1xuICB9XG4gIGJhY2tncm91bmQ6IF9iYWNrZ3JvdW5kLWFkZC1wcmVmaXgoJGJhY2tncm91bmRzLCB3ZWJraXQpO1xuICBiYWNrZ3JvdW5kOiBfYmFja2dyb3VuZC1hZGQtcHJlZml4KCRiYWNrZ3JvdW5kcyk7XG59XG5cbkBmdW5jdGlvbiBfZXh0cmFjdC1iYWNrZ3JvdW5kLWNvbG9yKCRiYWNrZ3JvdW5kcykge1xuICAkZmluYWwtYmctbGF5ZXI6IG50aCgkYmFja2dyb3VuZHMsIGxlbmd0aCgkYmFja2dyb3VuZHMpKTtcbiAgQGlmIHR5cGUtb2YoJGZpbmFsLWJnLWxheWVyKSA9PSBsaXN0IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkZmluYWwtYmctbGF5ZXIpIHtcbiAgICAgICR2YWx1ZTogbnRoKCRmaW5hbC1iZy1sYXllciwgJGkpO1xuICAgICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBjb2xvciB7XG4gICAgICAgIEByZXR1cm4gJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG5AZnVuY3Rpb24gX2JhY2tncm91bmQtYWRkLXByZWZpeCgkYmFja2dyb3VuZHMsICR2ZW5kb3I6IGZhbHNlKSB7XG4gICRiYWNrZ3JvdW5kcy1wcmVmaXhlZDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGJhY2tncm91bmRzKSB7XG4gICAgJHNob3J0aGFuZDogbnRoKCRiYWNrZ3JvdW5kcywgJGkpOyAvLyBHZXQgbWVtYmVyIGZvciBjdXJyZW50IGluZGV4XG4gICAgJHR5cGU6IHR5cGUtb2YoJHNob3J0aGFuZCk7IC8vIEdldCB0eXBlIG9mIHZhcmlhYmxlIC0gTGlzdCAoZ3JhZGllbnQpIG9yIFN0cmluZyAoaW1hZ2UpXG5cbiAgICAvLyBJZiBzaG9ydGhhbmQgaXMgYSBsaXN0IChncmFkaWVudClcbiAgICBAaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgICAkZmlyc3QtbWVtYmVyOiBudGgoJHNob3J0aGFuZCwgMSk7IC8vIEdldCBmaXJzdCBtZW1iZXIgb2Ygc2hvcnRoYW5kXG5cbiAgICAgIC8vIExpbmVhciBHcmFkaWVudFxuICAgICAgQGlmIGluZGV4KGxpbmVhciByYWRpYWwsIG50aCgkZmlyc3QtbWVtYmVyLCAxKSkge1xuICAgICAgICAkZ3JhZGllbnQtdHlwZTogbnRoKCRmaXJzdC1tZW1iZXIsIDEpOyAvLyBsaW5lYXIgfHwgcmFkaWFsXG4gICAgICAgICRncmFkaWVudC1hcmdzOiAgICAgIGZhbHNlO1xuICAgICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBmYWxzZTtcbiAgICAgICAgJHNob3J0aGFuZC1zdGFydDogICAgZmFsc2U7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmaXJzdC1tZW1iZXIpID09IGxpc3QgeyAvLyBMaW5lYXIgZ3JhZGllbnQgcGx1cyBhZGRpdGlvbmFsIHNob3J0aGFuZCB2YWx1ZXMgLSBsZyhyZWQsb3JhbmdlKXJlcGVhdCwuLi5cbiAgICAgICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBudGgoJGZpcnN0LW1lbWJlciwgMik7XG4gICAgICAgICAgJGdyYWRpZW50LWFyZ3M6ICAgICAgbnRoKCRmaXJzdC1tZW1iZXIsIDMpO1xuICAgICAgICAgICRzaG9ydGhhbmQtc3RhcnQ6IDI7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgeyAvLyBMaW5lYXIgZ3JhZGllbnQgb25seSAtIGxnKHJlZCxvcmFuZ2UpLC4uLlxuICAgICAgICAgICRncmFkaWVudC1wb3NpdGlvbnM6IG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgICAgICAgICAkZ3JhZGllbnQtYXJnczogICAgICBudGgoJHNob3J0aGFuZCwgMyk7IC8vIEdldCBncmFkaWVudCAocmVkLCBibHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgJGdyYWRpZW50LXBvc2l0aW9uczogX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpO1xuICAgICAgICAkZ3JhZGllbnQ6IF9yZW5kZXItZ3JhZGllbnRzKCRncmFkaWVudC1wb3NpdGlvbnMsICRncmFkaWVudC1hcmdzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcik7XG5cbiAgICAgICAgLy8gQXBwZW5kIGFueSBhZGRpdGlvbmFsIHNob3J0aGFuZCBhcmdzIHRvIGdyYWRpZW50XG4gICAgICAgIEBpZiAkc2hvcnRoYW5kLXN0YXJ0IHtcbiAgICAgICAgICBAZm9yICRqIGZyb20gJHNob3J0aGFuZC1zdGFydCB0aHJvdWdoIGxlbmd0aCgkc2hvcnRoYW5kKSB7XG4gICAgICAgICAgICAkZ3JhZGllbnQ6IGpvaW4oJGdyYWRpZW50LCBudGgoJHNob3J0aGFuZCwgJGopLCBzcGFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICRiYWNrZ3JvdW5kcy1wcmVmaXhlZDogYXBwZW5kKCRiYWNrZ3JvdW5kcy1wcmVmaXhlZCwgJGdyYWRpZW50LCBjb21tYSk7XG4gICAgICB9XG4gICAgICAvLyBJbWFnZSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllc1xuICAgICAgQGVsc2Uge1xuICAgICAgICAkYmFja2dyb3VuZHMtcHJlZml4ZWQ6IGFwcGVuZCgkYmFja2dyb3VuZHMtcHJlZml4ZWQsICRzaG9ydGhhbmQsIGNvbW1hKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgc2hvcnRoYW5kIGlzIGEgc2ltcGxlIHN0cmluZyAoY29sb3Igb3IgaW1hZ2UpXG4gICAgQGVsc2UgaWYgJHR5cGUgPT0gc3RyaW5nIHtcbiAgICAgICRiYWNrZ3JvdW5kcy1wcmVmaXhlZDogam9pbigkYmFja2dyb3VuZHMtcHJlZml4ZWQsICRzaG9ydGhhbmQsIGNvbW1hKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkYmFja2dyb3VuZHMtcHJlZml4ZWQ7XG59XG5cbi8vRXhhbXBsZXM6XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZChsaW5lYXItZ3JhZGllbnQodG9wLCBvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQocmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA0MCUgNDAlLCBvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQodXJsKFwiL2ltYWdlcy9hLnBuZ1wiKSBuby1yZXBlYXQsIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQodXJsKFwiaW1hZ2UucG5nXCIpIGNlbnRlciBjZW50ZXIsIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCksIHVybChcImltYWdlLnBuZ1wiKSk7XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBCYWNrZ3JvdW5kLWltYWdlIHByb3BlcnR5IGZvciBhZGRpbmcgbXVsdGlwbGUgYmFja2dyb3VuZCBpbWFnZXMgd2l0aFxuLy8gZ3JhZGllbnRzLCBvciBmb3Igc3RyaW5naW5nIG11bHRpcGxlIGdyYWRpZW50cyB0b2dldGhlci5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlcy4uLikge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBfYWRkLXByZWZpeCgkaW1hZ2VzLCB3ZWJraXQpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBfYWRkLXByZWZpeCgkaW1hZ2VzKTtcbn1cblxuQGZ1bmN0aW9uIF9hZGQtcHJlZml4KCRpbWFnZXMsICR2ZW5kb3I6IGZhbHNlKSB7XG4gICRpbWFnZXMtcHJlZml4ZWQ6ICgpO1xuICAkZ3JhZGllbnQtcG9zaXRpb25zOiBmYWxzZTtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGltYWdlcykge1xuICAgICR0eXBlOiB0eXBlLW9mKG50aCgkaW1hZ2VzLCAkaSkpOyAvLyBHZXQgdHlwZSBvZiB2YXJpYWJsZSAtIExpc3Qgb3IgU3RyaW5nXG5cbiAgICAvLyBJZiB2YXJpYWJsZSBpcyBhIGxpc3QgLSBHcmFkaWVudFxuICAgIEBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAgICRncmFkaWVudC10eXBlOiBudGgobnRoKCRpbWFnZXMsICRpKSwgMSk7IC8vIGxpbmVhciBvciByYWRpYWxcbiAgICAgICRncmFkaWVudC1wb3M6IG51bGw7XG4gICAgICAkZ3JhZGllbnQtYXJnczogbnVsbDtcblxuICAgICAgQGlmICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpIG9yICgkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwpIHtcbiAgICAgICAgJGdyYWRpZW50LXBvczogIG50aChudGgoJGltYWdlcywgJGkpLCAyKTsgLy8gR2V0IGdyYWRpZW50IHBvc2l0aW9uXG4gICAgICAgICRncmFkaWVudC1hcmdzOiBudGgobnRoKCRpbWFnZXMsICRpKSwgMyk7IC8vIEdldCBhY3R1YWwgZ3JhZGllbnQgKHJlZCwgYmx1ZSlcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGdyYWRpZW50LWFyZ3M6IG50aChudGgoJGltYWdlcywgJGkpLCAyKTsgLy8gR2V0IGFjdHVhbCBncmFkaWVudCAocmVkLCBibHVlKVxuICAgICAgfVxuXG4gICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvcyk7XG4gICAgICAkZ3JhZGllbnQ6IF9yZW5kZXItZ3JhZGllbnRzKCRncmFkaWVudC1wb3NpdGlvbnMsICRncmFkaWVudC1hcmdzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcik7XG4gICAgICAkaW1hZ2VzLXByZWZpeGVkOiBhcHBlbmQoJGltYWdlcy1wcmVmaXhlZCwgJGdyYWRpZW50LCBjb21tYSk7XG4gICAgfVxuICAgIC8vIElmIHZhcmlhYmxlIGlzIGEgc3RyaW5nIC0gSW1hZ2VcbiAgICBAZWxzZSBpZiAkdHlwZSA9PSBzdHJpbmcge1xuICAgICAgJGltYWdlcy1wcmVmaXhlZDogam9pbigkaW1hZ2VzLXByZWZpeGVkLCBudGgoJGltYWdlcywgJGkpLCBjb21tYSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGltYWdlcy1wcmVmaXhlZDtcbn1cblxuLy9FeGFtcGxlczpcbiAgLy9AaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGxpbmVhci1ncmFkaWVudCh0b3AsIG9yYW5nZSwgcmVkKSk7XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShyYWRpYWwtZ3JhZGllbnQoNTAlIDUwJSwgY292ZXIgY2lyY2xlLCBvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UodXJsKFwiL2ltYWdlcy9hLnBuZ1wiKSwgbGluZWFyLWdyYWRpZW50KG9yYW5nZSwgcmVkKSk7XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIiksIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCksIHVybChcImltYWdlLnBuZ1wiKSk7XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShsaW5lYXItZ3JhZGllbnQoaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjI1KSAwJSwgaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjA4KSA1MCUsIHRyYW5zcGFyZW50IDUwJSksIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCkpO1xuIiwiQG1peGluIGJvcmRlci1pbWFnZSgkaW1hZ2VzKSB7XG4gIC13ZWJraXQtYm9yZGVyLWltYWdlOiBfYm9yZGVyLWFkZC1wcmVmaXgoJGltYWdlcywgd2Via2l0KTtcbiAgICAgLW1vei1ib3JkZXItaW1hZ2U6IF9ib3JkZXItYWRkLXByZWZpeCgkaW1hZ2VzLCBtb3opO1xuICAgICAgIC1vLWJvcmRlci1pbWFnZTogX2JvcmRlci1hZGQtcHJlZml4KCRpbWFnZXMsIG8pO1xuICAgICAgICAgIGJvcmRlci1pbWFnZTogX2JvcmRlci1hZGQtcHJlZml4KCRpbWFnZXMpO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG5cbkBmdW5jdGlvbiBfYm9yZGVyLWFkZC1wcmVmaXgoJGltYWdlcywgJHZlbmRvcjogZmFsc2UpIHtcbiAgJGJvcmRlci1pbWFnZTogbnVsbDtcbiAgJGltYWdlcy10eXBlOiAgdHlwZS1vZihudGgoJGltYWdlcywgMSkpO1xuICAkZmlyc3QtdmFyOiAgICBudGgobnRoKCRpbWFnZXMsIDEpLCAxKTsgICAgICAgICAgLy8gR2V0IHR5cGUgb2YgR3JhZGllbnQgKExpbmVhciB8fCByYWRpYWwpXG5cbiAgLy8gSWYgaW5wdXQgaXMgYSBncmFkaWVudFxuICBAaWYgJGltYWdlcy10eXBlID09IHN0cmluZyB7XG4gICAgQGlmICgkZmlyc3QtdmFyID09IFwibGluZWFyXCIpIG9yICgkZmlyc3QtdmFyID09IFwicmFkaWFsXCIpIHtcbiAgICAgICRncmFkaWVudC10eXBlOiBudGgoJGltYWdlcywgMSk7ICAgICAgICAgICAvLyBHZXQgdHlwZSBvZiBncmFkaWVudCAobGluZWFyIHx8IHJhZGlhbClcbiAgICAgICRncmFkaWVudC1wb3M6ICBudGgoJGltYWdlcywgMik7ICAgICAgICAgICAvLyBHZXQgZ3JhZGllbnQgcG9zaXRpb25cbiAgICAgICRncmFkaWVudC1hcmdzOiBudGgoJGltYWdlcywgMyk7ICAgICAgICAgICAvLyBHZXQgYWN0dWFsIGdyYWRpZW50IChyZWQsIGJsdWUpXG4gICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvcyk7XG4gICAgICAkYm9yZGVyLWltYWdlOiAgX3JlbmRlci1ncmFkaWVudHMoJGdyYWRpZW50LXBvc2l0aW9ucywgJGdyYWRpZW50LWFyZ3MsICRncmFkaWVudC10eXBlLCAkdmVuZG9yKTtcbiAgICB9XG4gICAgLy8gSWYgaW5wdXQgaXMgYSBVUkxcbiAgICBAZWxzZSB7XG4gICAgICAkYm9yZGVyLWltYWdlOiAkaW1hZ2VzO1xuICAgIH1cbiAgfVxuICAvLyBJZiBpbnB1dCBpcyBncmFkaWVudCBvciB1cmwgKyBhZGRpdGlvbmFsIGFyZ3NcbiAgQGVsc2UgaWYgJGltYWdlcy10eXBlID09IGxpc3Qge1xuICAgICR0eXBlOiB0eXBlLW9mKG50aCgkaW1hZ2VzLCAxKSk7ICAgICAgICAgICAvLyBHZXQgdHlwZSBvZiB2YXJpYWJsZSAtIExpc3Qgb3IgU3RyaW5nXG5cbiAgICAvLyBJZiB2YXJpYWJsZSBpcyBhIGxpc3QgLSBHcmFkaWVudFxuICAgIEBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAgICRncmFkaWVudDogbnRoKCRpbWFnZXMsIDEpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IG50aCgkZ3JhZGllbnQsIDEpOyAgICAgICAgICAgLy8gR2V0IHR5cGUgb2YgZ3JhZGllbnQgKGxpbmVhciB8fCByYWRpYWwpXG4gICAgICAkZ3JhZGllbnQtcG9zOiAgbnRoKCRncmFkaWVudCwgMik7ICAgICAgICAgICAvLyBHZXQgZ3JhZGllbnQgcG9zaXRpb25cbiAgICAgICRncmFkaWVudC1hcmdzOiBudGgoJGdyYWRpZW50LCAzKTsgICAgICAgICAgIC8vIEdldCBhY3R1YWwgZ3JhZGllbnQgKHJlZCwgYmx1ZSlcbiAgICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC10eXBlLCAkZ3JhZGllbnQtcG9zKTtcbiAgICAgICRib3JkZXItaW1hZ2U6ICBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnQtYXJncywgJGdyYWRpZW50LXR5cGUsICR2ZW5kb3IpO1xuXG4gICAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaW1hZ2VzKSB7XG4gICAgICAgICRib3JkZXItaW1hZ2U6IGFwcGVuZCgkYm9yZGVyLWltYWdlLCBudGgoJGltYWdlcywgJGkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkYm9yZGVyLWltYWdlO1xufVxuXG4vL0V4YW1wbGVzOlxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHVybChcImltYWdlLnBuZ1wiKSk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpIDIwIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSBzdHJldGNoKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSAyMCAzMCA0MCA1MCBzdHJldGNoIHJvdW5kKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShyYWRpYWwtZ3JhZGllbnQodG9wLCBjb3Zlciwgb3JhbmdlLCB5ZWxsb3csIG9yYW5nZSkpO1xuXG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBTaG9ydGhhbmQgQm9yZGVyLXJhZGl1cyBtaXhpbnNcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaWkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaWkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGlpKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci10b3AtbGVmdC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpaSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3JkZXItdG9wLXJpZ2h0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG4iLCJAbWl4aW4gYm94LXNpemluZyAoJGJveCkge1xuLy8gIGNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCB8IGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXNpemluZywgJGJveCwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBjb2x1bW5zKCRhcmc6IGF1dG8pIHtcbi8vIDxjb2x1bW4tY291bnQ+IHx8IDxjb2x1bW4td2lkdGg+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbnMsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tY291bnQoJGludDogYXV0bykge1xuLy8gYXV0byB8fCBpbnRlZ2VyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1jb3VudCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1nYXAoJGxlbmd0aDogbm9ybWFsKSB7XG4vLyBub3JtYWwgfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1nYXAsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZmlsbCgkYXJnOiBhdXRvKSB7XG4vLyBhdXRvIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW5zLWZpbGwsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZSgkYXJnKSB7XG4vLyA8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGU6IG5vbmUpIHtcbi8vIG5vbmUgfCBoaWRkZW4gfCBkYXNoZWQgfCBkb3R0ZWQgfCBkb3VibGUgfCBncm9vdmUgfCBpbnNldCB8IGluc2V0IHwgb3V0c2V0IHwgcmlkZ2UgfCBzb2xpZFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtd2lkdGggKCR3aWR0aDogbm9uZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xuLy8gbm9uZSB8fCBhbGxcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXNwYW4sICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4td2lkdGgoJGxlbmd0aDogYXV0bykge1xuLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG5cbi8vIEN1c3RvbSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGZsZXhib3hcbkBtaXhpbiBib3goJG9yaWVudDogaW5saW5lLWF4aXMsICRwYWNrOiBzdGFydCwgJGFsaWduOiBzdHJldGNoKSB7XG4gIEBpbmNsdWRlIGRpc3BsYXktYm94O1xuICBAaW5jbHVkZSBib3gtb3JpZW50KCRvcmllbnQpO1xuICBAaW5jbHVkZSBib3gtcGFjaygkcGFjayk7XG4gIEBpbmNsdWRlIGJveC1hbGlnbigkYWxpZ24pO1xufVxuXG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1vei1ib3g7XG4gIGRpc3BsYXk6IGJveDtcbn1cblxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcbi8vIGhvcml6b250YWx8dmVydGljYWx8aW5saW5lLWF4aXN8YmxvY2stYXhpc3xpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICRvcmllbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtcGFjaygkcGFjazogc3RhcnQpIHtcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJHBhY2ssIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWduOiBzdHJldGNoKSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGJhc2VsaW5lfHN0cmV0Y2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246IG5vcm1hbCkge1xuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LWxpbmVzKCRsaW5lczogc2luZ2xlKSB7XG4vLyBzaW5nbGV8bXVsdGlwbGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkbGluZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LWZsZXgoJHZhbHVlOiAwLjApIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1mbGV4LWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCIvLyBPcmRlciBvZiB0aGUgaW5jbHVkZXMgbWF0dGVycywgYW5kIGl0IGlzOiBub3JtYWwsIGJvbGQsIGl0YWxpYywgYm9sZCtpdGFsaWMuXG5cbkBtaXhpbiBmb250LWZhY2UoJGZvbnQtZmFtaWx5LCAkZmlsZS1wYXRoLCAkd2VpZ2h0OiBub3JtYWwsICRzdHlsZTogbm9ybWFsLCAkYXNzZXQtcGlwZWxpbmU6IGZhbHNlICkge1xuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgICBzcmM6IGZvbnQtdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgICAgc3JjOiBmb250LXVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgICAgICAgICAgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICAgICBmb250LXVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgICAgICAgICAgICAgICAgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgICAgIGZvbnQtdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpICAgICAgICAgICAgICAgICBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgICAgIGZvbnQtdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgICAgICAgICAgICAgICBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgICAgIHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICAgICAgdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICAgICAgICAgdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSAgICAgIGZvcm1hdCgnc3ZnJyk7XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gaHlwaGVucygkaHlwaGVuYXRpb246IG5vbmUpIHtcbi8vIG5vbmUgfCBtYW51YWwgfCBhdXRvXG4gIEBpbmNsdWRlIHByZWZpeGVyKGh5cGhlbnMsICRoeXBoZW5hdGlvbiwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn0iLCIvLyBIaURQSSBtaXhpbi4gRGVmYXVsdCB2YWx1ZSBzZXQgdG8gMS4zIHRvIHRhcmdldCBHb29nbGUgTmV4dXMgNyAoaHR0cDovL2JqYW5nby5jb20vYXJ0aWNsZXMvbWluLWRldmljZS1waXhlbC1yYXRpby8pXG5AbWl4aW4gaGlkcGkoJHJhdGlvOiAxLjMpIHtcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRyYXRpb30vMSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICN7cm91bmQoJHJhdGlvKjk2KX1kcGkpLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAjeyRyYXRpb31kcHB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBtaXhpbiBpbWFnZS1yZW5kZXJpbmcgKCRtb2RlOm9wdGltaXplUXVhbGl0eSkge1xuXG4gIEBpZiAoJG1vZGUgPT0gb3B0aW1pemUtY29udHJhc3QpIHtcbiAgICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlcztcbiAgICAgIGltYWdlLXJlbmRlcmluZzogLW8tY3Jpc3AtZWRnZXM7XG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7XG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IG9wdGltaXplLWNvbnRyYXN0O1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICAgaW1hZ2UtcmVuZGVyaW5nOiAkbW9kZTtcbiAgfVxufVxuIiwiLy8gTGVnYWN5IHN1cHBvcnQgZm9yIGlubGluZS1ibG9jayBpbiBJRTcgKG1heWJlIElFNilcbkBtaXhpbiBpbmxpbmUtYmxvY2sge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgem9vbTogMTtcbiAgKmRpc3BsYXk6IGlubGluZTtcbiAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xufVxuIiwiLy8gQWRkcyBrZXlmcmFtZXMgYmxvY2tzIGZvciBzdXBwb3J0ZWQgcHJlZml4ZXMsIHJlbW92aW5nIHJlZHVuZGFudCBwcmVmaXhlcyBpbiB0aGUgYmxvY2sncyBjb250ZW50XG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdDogICAgJHByZWZpeC1mb3Itd2Via2l0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhOiAgICRwcmVmaXgtZm9yLW1vemlsbGE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdDogJHByZWZpeC1mb3ItbWljcm9zb2Z0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYTogICAgICRwcmVmaXgtZm9yLW9wZXJhO1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjOiAgICAgICRwcmVmaXgtZm9yLXNwZWM7XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLXdlYmtpdDogdHJ1ZTtcbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3ItbW96aWxsYTogdHJ1ZTtcbiAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3Itc3BlYzogdHJ1ZTtcbiAgICBAa2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0O1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGE7XG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogJG9yaWdpbmFsLXByZWZpeC1mb3ItbWljcm9zb2Z0O1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWM7XG59XG4iLCJAbWl4aW4gbGluZWFyLWdyYWRpZW50KCRwb3MsICRHMSwgJEcyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzM6IG51bGwsICRHNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJEc1OiBudWxsLCAkRzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRHNzogbnVsbCwgJEc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzk6IG51bGwsICRHMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRmYWxsYmFjazogbnVsbCkge1xuICAvLyBEZXRlY3Qgd2hhdCB0eXBlIG9mIHZhbHVlIGV4aXN0cyBpbiAkcG9zXG4gICRwb3MtdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xuICAkcG9zLXNwZWM6IG51bGw7XG4gICRwb3MtZGVncmVlOiBudWxsO1xuXG4gIC8vIElmICRwb3MgaXMgbWlzc2luZyBmcm9tIG1peGluLCByZWFzc2lnbiB2YXJzIGFuZCBhZGQgZGVmYXVsdCBwb3NpdGlvblxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XG4gICAgJEcxMDogJEc5OyAkRzk6ICRHODsgJEc4OiAkRzc7ICRHNzogJEc2OyAkRzY6ICRHNTtcbiAgICAgJEc1OiAkRzQ7ICRHNDogJEczOyAkRzM6ICRHMjsgJEcyOiAkRzE7ICRHMTogJHBvcztcbiAgICAgJHBvczogbnVsbDtcbiAgfVxuXG4gIEBpZiAkcG9zIHtcbiAgICAkcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcyk7XG4gICAgJHBvcy1kZWdyZWU6IG50aCgkcG9zaXRpb25zLCAxKTtcbiAgICAkcG9zLXNwZWM6ICAgbnRoKCRwb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgJGZ1bGw6ICRHMSwgJEcyLCAkRzMsICRHNCwgJEc1LCAkRzYsICRHNywgJEc4LCAkRzksICRHMTA7XG5cbiAgLy8gU2V0ICRHMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmFsbGJhY2stY29sb3I6IG50aCgkRzEsIDEpO1xuXG4gIC8vIElmICRmYWxsYmFjayBpcyBhIGNvbG9yIHVzZSB0aGF0IGNvbG9yIGFzIHRoZSBmYWxsYmFjayBjb2xvclxuICBAaWYgKHR5cGUtb2YoJGZhbGxiYWNrKSA9PSBjb2xvcikgb3IgKCRmYWxsYmFjayA9PSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAkZmFsbGJhY2stY29sb3I6ICRmYWxsYmFjaztcbiAgfVxuXG4gIGJhY2tncm91bmQtY29sb3I6ICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoJHBvcy1kZWdyZWUgJGZ1bGwpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJsaW5lYXItZ3JhZGllbnQoI3skcG9zLXNwZWN9I3skZnVsbH0pXCIpO1xufVxuIiwiQG1peGluIHBlcnNwZWN0aXZlKCRkZXB0aDogbm9uZSkge1xuICAvLyBub25lIHwgPGxlbmd0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUsICRkZXB0aCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkdmFsdWU6IDUwJSA1MCUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUtb3JpZ2luLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCIvLyBSZXF1aXJlcyBTYXNzIDMuMStcbkBtaXhpbiByYWRpYWwtZ3JhZGllbnQoJEcxLCAgICAgICAgJEcyLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzM6IG51bGwsICRHNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJEc1OiBudWxsLCAkRzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRHNzogbnVsbCwgJEc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzk6IG51bGwsICRHMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRwb3M6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRzaGFwZS1zaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcblxuICAkZGF0YTogX3JhZGlhbC1hcmctcGFyc2VyKCRHMSwgJEcyLCAkcG9zLCAkc2hhcGUtc2l6ZSk7XG4gICRHMTogIG50aCgkZGF0YSwgMSk7XG4gICRHMjogIG50aCgkZGF0YSwgMik7XG4gICRwb3M6IG50aCgkZGF0YSwgMyk7XG4gICRzaGFwZS1zaXplOiBudGgoJGRhdGEsIDQpO1xuXG4gICRmdWxsOiAkRzEsICRHMiwgJEczLCAkRzQsICRHNSwgJEc2LCAkRzcsICRHOCwgJEc5LCAkRzEwO1xuXG4gIC8vIFN0cmlwIGRlcHJlY2F0ZWQgY292ZXIvY29udGFpbiBmb3Igc3BlY1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgLy8gU2V0ICRHMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmlyc3QtY29sb3I6IG50aCgkZnVsbCwgMSk7XG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRmaXJzdC1jb2xvciwgMSk7XG5cbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cblxuICAvLyBBZGQgQ29tbWFzIGFuZCBzcGFjZXNcbiAgJHNoYXBlLXNpemU6IGlmKCRzaGFwZS1zaXplLCAnI3skc2hhcGUtc2l6ZX0sICcsIG51bGwpO1xuICAkcG9zOiAgICAgICAgaWYoJHBvcywgJyN7JHBvc30sICcsIG51bGwpO1xuICAkcG9zLXNwZWM6ICAgaWYoJHBvcywgJ2F0ICN7JHBvc30nLCBudWxsKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogaWYoKCRzaGFwZS1zaXplLXNwZWMgIT0gJyAnKSBhbmQgKCRwb3MgPT0gbnVsbCksICcjeyRzaGFwZS1zaXplLXNwZWN9LCAnLCAnI3skc2hhcGUtc2l6ZS1zcGVjfSAnKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudCh1bnF1b3RlKCN7JHBvc30jeyRzaGFwZS1zaXplfSN7JGZ1bGx9KSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJyYWRpYWwtZ3JhZGllbnQoI3skc2hhcGUtc2l6ZS1zcGVjfSN7JHBvcy1zcGVjfSN7JGZ1bGx9KVwiKTtcbn1cbiIsIkBtaXhpbiB0cmFuc2Zvcm0oJHByb3BlcnR5OiBub25lKSB7XG4vLyAgbm9uZSB8IDx0cmFuc2Zvcm0tZnVuY3Rpb24+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybSwgJHByb3BlcnR5LCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKCRheGVzOiA1MCUpIHtcbi8vIHgtYXhpcyAtIGxlZnQgfCBjZW50ZXIgfCByaWdodCAgfCBsZW5ndGggfCAlXG4vLyB5LWF4aXMgLSB0b3AgIHwgY2VudGVyIHwgYm90dG9tIHwgbGVuZ3RoIHwgJVxuLy8gei1heGlzIC0gICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tb3JpZ2luLCAkYXhlcywgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlICgkc3R5bGU6IGZsYXQpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cbiIsIi8vIFNob3J0aGFuZCBtaXhpbi4gU3VwcG9ydHMgbXVsdGlwbGUgcGFyZW50aGVzZXMtZGVsaW1pbmF0ZWQgdmFsdWVzIGZvciBlYWNoIHZhcmlhYmxlLlxuLy8gRXhhbXBsZTogQGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDJzIGVhc2UtaW4tb3V0KTtcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24gKG9wYWNpdHkgMXMgZWFzZS1pbiAycywgd2lkdGggMnMgZWFzZS1vdXQpO1xuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSAodHJhbnNmb3JtLCBvcGFjaXR5KTtcblxuQG1peGluIHRyYW5zaXRpb24gKCRwcm9wZXJ0aWVzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHByb3BlcnRpZXMpID49IDEge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRwcm9wZXJ0aWVzOiBhbGwgMC4xNXMgZWFzZS1vdXQgMHM7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24tcHJvcGVydHkgKCRwcm9wZXJ0aWVzLi4uKSB7XG4gICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsICd3ZWJraXQnKTtcbiAgICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgJ21veicpO1xuICAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBmYWxzZSk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24gKCRtb3Rpb25zLi4uKSB7XG4vLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoKVxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWRlbGF5ICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIHVzZXItc2VsZWN0KCRhcmc6IG5vbmUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodXNlci1zZWxlY3QsICRhcmcsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCIkcGxhY2Vob2xkZXJzOiAnLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgICAnLW1vei1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgICAnLW1zLWlucHV0LXBsYWNlaG9sZGVyJztcblxuQG1peGluIHBsYWNlaG9sZGVyIHtcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgIEBpZiAkcGxhY2Vob2xkZXIgPT0gXCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyXCIge1xuICAgICAgJjo6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwbGFjZWhvbGRlciA9PSBcIi1tb3otcGxhY2Vob2xkZXJcIiB7XG4gICAgICAvLyBGRiAxOC1cbiAgICAgICY6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIEZGIDE5K1xuICAgICAgJjo6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICY6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gYnV0dG9uICgkc3R5bGU6IHNpbXBsZSwgJGJhc2UtY29sb3I6ICM0Mjk0ZjApIHtcblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IGNvbG9yIHtcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xuICAgICRzdHlsZTogc2ltcGxlO1xuICB9XG5cbiAgLy8gR3JheXNjYWxlIGJ1dHRvblxuICBAaWYgJGJhc2UtY29sb3IgPT0gZ3JheXNjYWxlKCRiYXNlLWNvbG9yKSB7XG4gICAgQGlmICRzdHlsZSA9PSBzaW1wbGUge1xuICAgICAgQGluY2x1ZGUgc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiB0cnVlKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkc3R5bGUgPT0gc2hpbnkge1xuICAgICAgQGluY2x1ZGUgc2hpbnkoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IHRydWUpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRzdHlsZSA9PSBwaWxsIHtcbiAgICAgIEBpbmNsdWRlIHBpbGwoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbG9yZWQgYnV0dG9uXG4gIEBlbHNlIHtcbiAgICBAaWYgJHN0eWxlID09IHNpbXBsZSB7XG4gICAgICBAaW5jbHVkZSBzaW1wbGUoJGJhc2UtY29sb3IpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRzdHlsZSA9PSBzaGlueSB7XG4gICAgICBAaW5jbHVkZSBzaGlueSgkYmFzZS1jb2xvcik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHN0eWxlID09IHBpbGwge1xuICAgICAgQGluY2x1ZGUgcGlsbCgkYmFzZS1jb2xvcik7XG4gICAgfVxuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cbn1cblxuXG4vLyBTaW1wbGUgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTE0JSk7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtOCUsICAkbGlnaHRuZXNzOiAgMTUlKTtcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDE1JSwgJGxpZ2h0bmVzczogLTE4JSk7XG5cbiAgQGlmIGxpZ2h0bmVzcygkYmFzZS1jb2xvcikgPiA3MCUge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3IsICRzdG9wLWdyYWRpZW50KTtcbiAgcGFkZGluZzogN3B4IDE4cHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgJHRleHQtc2hhZG93O1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNCUsICRsaWdodG5lc3M6IC01JSk7XG4gICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC03JSwgJGxpZ2h0bmVzczogIDUlKTtcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDglLCAkbGlnaHRuZXNzOiAtMTQlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctaG92ZXIpO1xuICAgICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG4gICAgfVxuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogOSUsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmUsIGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCAwIDFweCAxcHggMCAjZWVlO1xuICB9XG59XG5cblxuLy8gU2hpbnkgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gc2hpbnkoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlKSB7XG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMTcsICRncmVlbjogLTExMSwgJGJsdWU6IC04MSk7XG4gICRib3JkZXItYm90dG9tOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMjYsICRncmVlbjogLTEyNywgJGJsdWU6IC0xMjIpO1xuICAkZm91cnRoLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNzksICAkZ3JlZW46IC03MCwgICRibHVlOiAtNDYpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAgMzcsICAkZ3JlZW46ICAyOSwgICRibHVlOiAgMTIpO1xuICAkc2Vjb25kLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNTYsICAkZ3JlZW46IC01MCwgICRibHVlOiAtMzMpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTQwLCAkZ3JlZW46IC0xNDEsICRibHVlOiAtMTE0KTtcbiAgJHRoaXJkLXN0b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAgJGdyZWVuOiAtNzUsICAkYmx1ZTogLTQ4KTtcblxuICBAaWYgbGlnaHRuZXNzKCRiYXNlLWNvbG9yKSA+IDcwJSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcbiAgICAkYm9yZGVyLWJvdHRvbTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAkZm91cnRoLXN0b3A6ICAgZ3JheXNjYWxlKCRmb3VydGgtc3RvcCk7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc2Vjb25kLXN0b3A6ICAgZ3JheXNjYWxlKCRzZWNvbmQtc3RvcCk7XG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xuICAgICR0aGlyZC1zdG9wOiAgICBncmF5c2NhbGUoJHRoaXJkLXN0b3ApO1xuICB9XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRiYXNlLWNvbG9yIDAlLCAkc2Vjb25kLXN0b3AgNTAlLCAkdGhpcmQtc3RvcCA1MCUsICRmb3VydGgtc3RvcCAxMDAlKTtcbiAgcGFkZGluZzogOHB4IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGZpcnN0LXN0b3AtaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMywgJGdyZWVuOiAtMTUsICRibHVlOiAtMTgpO1xuICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNjYsICRncmVlbjogLTYyLCAkYmx1ZTogLTUxKTtcbiAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTkzLCAkZ3JlZW46IC04NSwgJGJsdWU6IC02Nik7XG4gICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC04NiwgJGdyZWVuOiAtODAsICRibHVlOiAtNjMpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkZmlyc3Qtc3RvcC1ob3Zlcik7XG4gICAgICAkc2Vjb25kLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkc2Vjb25kLXN0b3AtaG92ZXIpO1xuICAgICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBncmF5c2NhbGUoJHRoaXJkLXN0b3AtaG92ZXIpO1xuICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJGZvdXJ0aC1zdG9wLWhvdmVyKTtcbiAgICB9XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50KHRvcCwgJGZpcnN0LXN0b3AtaG92ZXIgIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWNvbmQtc3RvcC1ob3ZlciA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXJkLXN0b3AtaG92ZXIgIDUwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91cnRoLXN0b3AtaG92ZXIgMTAwJSk7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExMSwgJGdyZWVuOiAtMTE2LCAkYmx1ZTogLTEyMik7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAyMHB4IDAgJGluc2V0LXNoYWRvdy1hY3RpdmUsIDAgMXB4IDAgI2ZmZjtcbiAgfVxufVxuXG5cbi8vIFBpbGwgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gcGlsbCgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAtMTElLCAkbGlnaHRuZXNzOiAtMjYlKTtcbiAgJGJvcmRlci1zaWRlczogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMjElLCAkbGlnaHRuZXNzOiAtMjElKTtcbiAgJGJvcmRlci10b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMzAlLCAkbGlnaHRuZXNzOiAtMTUlKTtcbiAgJGluc2V0LXNoYWRvdzogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMSUsICAkbGlnaHRuZXNzOiAgNyUpO1xuICAkc3RvcC1ncmFkaWVudDogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxNCUsICRsaWdodG5lc3M6IC0xMCUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC0xOSUsICRsaWdodG5lc3M6IC0xNSUpO1xuXG4gIEBpZiBsaWdodG5lc3MoJGJhc2UtY29sb3IpID4gNzAlIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XG4gIH1cblxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAkYm9yZGVyLWJvdHRvbTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgZ3JheXNjYWxlKCRib3JkZXItc2lkZXMpO1xuICAgICRib3JkZXItdG9wOiAgICBncmF5c2NhbGUoJGJvcmRlci10b3ApO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHN0b3AtZ3JhZGllbnQ6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudCk7XG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xuICB9XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci10b3A7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3csIDAgMXB4IDJweCAwICNiM2IzYjM7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiA1cHggMTZweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xuICAgICRib3JkZXItYm90dG9tOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDEzLjUlLCAkbGlnaHRuZXNzOiAtMzIlKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yJSwgICAgJGxpZ2h0bmVzczogLTI3JSk7XG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAkc2F0dXJhdGlvbjogLTElLCAgICAkbGlnaHRuZXNzOiAgMyUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTQlLCAgICAkbGlnaHRuZXNzOiAtMTUuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAgICRib3JkZXItc2lkZXM6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcbiAgICB9XG5cbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLXRvcDtcbiAgICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctaG92ZXI7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNCwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTEwJSk7XG4gICAgJGJvcmRlci1hY3RpdmU6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDYsICAkc2F0dXJhdGlvbjogLTIuNSUsICRsaWdodG5lc3M6IC0zMCUpO1xuICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAxMSwgJHNhdHVyYXRpb246ICA2JSwgICAkbGlnaHRuZXNzOiAtMzElKTtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogOSwgICRzYXR1cmF0aW9uOiAgMiUsICAgJGxpZ2h0bmVzczogLTIxLjUlKTtcbiAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNSwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTIxLjUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGFjdGl2ZS1jb2xvcjogICAgICAgICBncmF5c2NhbGUoJGFjdGl2ZS1jb2xvcik7XG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWFjdGl2ZSk7XG4gICAgICAkYm9yZGVyLWJvdHRvbS1hY3RpdmU6IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbS1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZDogJGFjdGl2ZS1jb2xvcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b20tYWN0aXZlO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggM3B4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCAwIDFweCAwIDAgI2ZmZjtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG4iLCIvLyBNb2Rlcm4gbWljcm8gY2xlYXJmaXggcHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gY29udGFpbiBmbG9hdHMgd2l0aG91dCBhZGRpbmcgYWRkaXRpb25hbCBtYXJrdXAuXG4vL1xuLy8gRXhhbXBsZSB1c2FnZTpcbi8vXG4vLyAgICAvLyBDb250YWluIGFsbCBmbG9hdHMgd2l0aGluIC53cmFwcGVyXG4vLyAgICAud3JhcHBlciB7XG4vLyAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuLy8gICAgICAuY29udGVudCxcbi8vICAgICAgLnNpZGViYXIge1xuLy8gICAgICAgIGZsb2F0IDogbGVmdDtcbi8vICAgICAgfVxuLy8gICAgfVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OlwiXCI7XG4gICAgZGlzcGxheTp0YWJsZTtcbiAgICBjbGVhcjpib3RoO1xuICB9XG59XG5cbi8vIEFja25vd2xlZGdlbWVudHNcbi8vIEJlYXQgKnRoYXQqIGNsZWFyZml4OiBbVGhpZXJyeSBLb2JsZW50el0oaHR0cDovL3d3dy5jc3MtMTAxLm9yZy9hcnRpY2xlcy9jbGVhcmZpeC9sYXRlc3QtbmV3LWNsZWFyZml4LXNvLWZhci5waHApXG4iLCIkZ2VvcmdpYTogR2VvcmdpYSwgQ2FtYnJpYSwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgVGltZXMsIHNlcmlmO1xuJGhlbHZldGljYTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGx1Y2lkYS1ncmFuZGU6IFwiTHVjaWRhIEdyYW5kZVwiLCBUYWhvbWEsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJG1vbm9zcGFjZTogXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgQ29uc29sYXMsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiR2ZXJkYW5hOiBWZXJkYW5hLCBHZW5ldmEsIHNhbnMtc2VyaWY7XG4iLCJAbWl4aW4gaGlkZS10ZXh0IHtcbiAgY29sb3I6ICAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIGZvbnQ6ICAgICAgICAgICAgIDAvMCBhO1xuICB0ZXh0LXNoYWRvdzogICAgICBub25lO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gR2VuZXJhdGUgYSB2YXJpYWJsZSAoJGFsbC10ZXh0LWlucHV0cykgd2l0aCBhIGxpc3Qgb2YgYWxsIGh0bWw1XG4vLyBpbnB1dCB0eXBlcyB0aGF0IGhhdmUgYSB0ZXh0LWJhc2VkIGlucHV0LCBleGNsdWRpbmcgdGV4dGFyZWEuXG4vLyBodHRwOi8vZGl2ZWludG9odG1sNS5vcmcvZm9ybXMuaHRtbFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuJGlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImVtYWlsXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJudW1iZXJcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRlbFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGV4dFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidXJsXCJdJyxcblxuICAgICAgICAgICAgICAvLyBXZWJraXQgJiBHZWNrbyBtYXkgY2hhbmdlIHRoZSBkaXNwbGF5IG9mIHRoZXNlIGluIHRoZSBmdXR1cmVcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJjb2xvclwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZVwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJtb250aFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGltZVwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwid2Vla1wiXSc7XG5cbiR1bnF1b3RlZC1pbnB1dHMtbGlzdDogKCk7XG5AZWFjaCAkaW5wdXQtdHlwZSBpbiAkaW5wdXRzLWxpc3Qge1xuICAkdW5xdW90ZWQtaW5wdXRzLWxpc3Q6IGFwcGVuZCgkdW5xdW90ZWQtaW5wdXRzLWxpc3QsIHVucXVvdGUoJGlucHV0LXR5cGUpLCBjb21tYSk7XG59XG5cbiRhbGwtdGV4dC1pbnB1dHM6ICR1bnF1b3RlZC1pbnB1dHMtbGlzdDtcblxuXG4vLyBIb3ZlciBQc2V1ZG8tY2xhc3Ncbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbiRhbGwtdGV4dC1pbnB1dHMtaG92ZXI6ICgpO1xuQGVhY2ggJGlucHV0LXR5cGUgaW4gJHVucXVvdGVkLWlucHV0cy1saXN0IHtcbiAgICAgICRpbnB1dC10eXBlLWhvdmVyOiAkaW5wdXQtdHlwZSArIFwiOmhvdmVyXCI7XG4gICAgICAkYWxsLXRleHQtaW5wdXRzLWhvdmVyOiBhcHBlbmQoJGFsbC10ZXh0LWlucHV0cy1ob3ZlciwgJGlucHV0LXR5cGUtaG92ZXIsIGNvbW1hKTtcbn1cblxuLy8gRm9jdXMgUHNldWRvLWNsYXNzXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4kYWxsLXRleHQtaW5wdXRzLWZvY3VzOiAoKTtcbkBlYWNoICRpbnB1dC10eXBlIGluICR1bnF1b3RlZC1pbnB1dHMtbGlzdCB7XG4gICAgICAkaW5wdXQtdHlwZS1mb2N1czogJGlucHV0LXR5cGUgKyBcIjpmb2N1c1wiO1xuICAgICAgJGFsbC10ZXh0LWlucHV0cy1mb2N1czogYXBwZW5kKCRhbGwtdGV4dC1pbnB1dHMtZm9jdXMsICRpbnB1dC10eXBlLWZvY3VzLCBjb21tYSk7XG59XG5cbi8vIFlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTpcbi8vICN7JGFsbC10ZXh0LWlucHV0c31cbi8vICN7JGFsbC10ZXh0LWlucHV0cy1ob3Zlcn1cbi8vICN7JGFsbC10ZXh0LWlucHV0cy1mb2N1c31cblxuLy8gRXhhbXBsZVxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9LCB0ZXh0YXJlYSB7XG4vLyAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xuLy8gICB9XG4iLCJAbWl4aW4gcG9zaXRpb24gKCRwb3NpdGlvbjogcmVsYXRpdmUsICRjb29yZGluYXRlczogMCAwIDAgMCkge1xuXG4gIEBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gbGlzdCB7XG4gICAgJGNvb3JkaW5hdGVzOiAkcG9zaXRpb247XG4gICAgJHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG5cbiAgQGlmICR0b3AgPT0gYXV0byB7XG4gICAgdG9wOiAkdG9wO1xuICB9XG4gIEBlbHNlIGlmIG5vdCh1bml0bGVzcygkdG9wKSkge1xuICAgIHRvcDogJHRvcDtcbiAgfVxuXG4gIEBpZiAkcmlnaHQgPT0gYXV0byB7XG4gICAgcmlnaHQ6ICRyaWdodDtcbiAgfVxuICBAZWxzZSBpZiBub3QodW5pdGxlc3MoJHJpZ2h0KSkge1xuICAgIHJpZ2h0OiAkcmlnaHQ7XG4gIH1cblxuICBAaWYgJGJvdHRvbSA9PSBhdXRvIHtcbiAgICBib3R0b206ICRib3R0b207XG4gIH1cbiAgQGVsc2UgaWYgbm90KHVuaXRsZXNzKCRib3R0b20pKSB7XG4gICAgYm90dG9tOiAkYm90dG9tO1xuICB9XG5cbiAgQGlmICRsZWZ0ID09IGF1dG8ge1xuICAgIGxlZnQ6ICRsZWZ0O1xuICB9XG4gIEBlbHNlIGlmIG5vdCh1bml0bGVzcygkbGVmdCkpIHtcbiAgICBsZWZ0OiAkbGVmdDtcbiAgfVxufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gRXhhbXBsZTogQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXJhZGl1cywgJHJhZGlpLCB3ZWJraXQgbXMgc3BlYyk7XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBWYXJpYWJsZXMgbG9jYXRlZCBpbiAvc2V0dGluZ3MvX3ByZWZpeGVyLnNjc3NcblxuQG1peGluIHByZWZpeGVyICgkcHJvcGVydHksICR2YWx1ZSwgJHByZWZpeGVzKSB7XG4gIEBlYWNoICRwcmVmaXggaW4gJHByZWZpeGVzIHtcbiAgICBAaWYgJHByZWZpeCA9PSB3ZWJraXQge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICAgICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcbiAgICAgICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkcHJlZml4ID09IG8ge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW9wZXJhIHtcbiAgICAgICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itc3BlYyB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSAge1xuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgIGZhbHNlO1xuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6IGZhbHNlO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgIGZhbHNlO1xufVxuIiwiQG1peGluIHJldGluYS1pbWFnZSgkZmlsZW5hbWUsICRiYWNrZ3JvdW5kLXNpemUsICRleHRlbnNpb246IHBuZywgJHJldGluYS1maWxlbmFtZTogbnVsbCwgJHJldGluYS1zdWZmaXg6IF8yeCwgJGFzc2V0LXBpcGVsaW5lOiBmYWxzZSkge1xuICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRmaWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH1cblxuICBAaW5jbHVkZSBoaWRwaSB7XG4gICAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRiYWNrZ3JvdW5kLXNpemU7XG5cbiAgfVxufVxuIiwiQG1peGluIHNpemUoJHNpemUpIHtcbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgQGlmICRzaXplID09IGF1dG8ge1xuICAgICAgd2lkdGg6ICAkc2l6ZTtcbiAgICAgIGhlaWdodDogJHNpemU7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgdW5pdGxlc3MoJHNpemUpIHtcbiAgICAgIHdpZHRoOiAgJHNpemUgKyBweDtcbiAgICAgIGhlaWdodDogJHNpemUgKyBweDtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiBub3QodW5pdGxlc3MoJHNpemUpKSB7XG4gICAgICB3aWR0aDogICRzaXplO1xuICAgICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB9XG4gIH1cblxuICAvLyBXaWR0aCB4IEhlaWdodFxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICAkd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG5cbiAgICBAaWYgJHdpZHRoID09IGF1dG8ge1xuICAgICAgd2lkdGg6ICR3aWR0aDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90KHVuaXRsZXNzKCR3aWR0aCkpIHtcbiAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgfVxuICAgIEBlbHNlIGlmIHVuaXRsZXNzKCR3aWR0aCkge1xuICAgICAgd2lkdGg6ICR3aWR0aCArIHB4O1xuICAgIH1cblxuICAgIEBpZiAkaGVpZ2h0ID09IGF1dG8ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QodW5pdGxlc3MoJGhlaWdodCkpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgQGVsc2UgaWYgdW5pdGxlc3MoJGhlaWdodCkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0ICsgcHg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDU1MgY3ViaWMtYmV6aWVyIHRpbWluZyBmdW5jdGlvbnMuIFRpbWluZyBmdW5jdGlvbnMgY291cnRlc3kgb2YganF1ZXJ5LmVhc2llIChnaXRodWIuY29tL2phdWtpYS9lYXNpZSlcbi8vIFRpbWluZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGRlbW8nZWQgaGVyZTogaHR0cDovL2pxdWVyeXVpLmNvbS9kZW1vcy9lZmZlY3QvZWFzaW5nLmh0bWxcblxuLy8gRUFTRSBJTlxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcbiRlYXNlLWluLWN1YmljOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4kZWFzZS1pbi1xdWFydDogICAgIGN1YmljLWJlemllcigwLjg5NSwgIDAuMDMwLCAwLjY4NSwgMC4yMjApO1xuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcbiRlYXNlLWluLXNpbmU6ICAgICAgY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSk7XG4kZWFzZS1pbi1leHBvOiAgICAgIGN1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpO1xuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcbiRlYXNlLWluLWJhY2s6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSk7XG5cbi8vIEVBU0UgT1VUXG4kZWFzZS1vdXQtcXVhZDogICAgIGN1YmljLWJlemllcigwLjI1MCwgIDAuNDYwLCAwLjQ1MCwgMC45NDApO1xuJGVhc2Utb3V0LWN1YmljOiAgICBjdWJpYy1iZXppZXIoMC4yMTUsICAwLjYxMCwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlLW91dC1xdWFydDogICAgY3ViaWMtYmV6aWVyKDAuMTY1LCAgMC44NDAsIDAuNDQwLCAxLjAwMCk7XG4kZWFzZS1vdXQtcXVpbnQ6ICAgIGN1YmljLWJlemllcigwLjIzMCwgIDEuMDAwLCAwLjMyMCwgMS4wMDApO1xuJGVhc2Utb3V0LXNpbmU6ICAgICBjdWJpYy1iZXppZXIoMC4zOTAsICAwLjU3NSwgMC41NjUsIDEuMDAwKTtcbiRlYXNlLW91dC1leHBvOiAgICAgY3ViaWMtYmV6aWVyKDAuMTkwLCAgMS4wMDAsIDAuMjIwLCAxLjAwMCk7XG4kZWFzZS1vdXQtY2lyYzogICAgIGN1YmljLWJlemllcigwLjA3NSwgIDAuODIwLCAwLjE2NSwgMS4wMDApO1xuJGVhc2Utb3V0LWJhY2s6ICAgICBjdWJpYy1iZXppZXIoMC4xNzUsICAwLjg4NSwgMC4zMjAsIDEuMjc1KTtcblxuLy8gRUFTRSBJTiBPVVRcbiRlYXNlLWluLW91dC1xdWFkOiAgY3ViaWMtYmV6aWVyKDAuNDU1LCAgMC4wMzAsIDAuNTE1LCAwLjk1NSk7XG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXF1YXJ0OiBjdWJpYy1iZXppZXIoMC43NzAsICAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWludDogY3ViaWMtYmV6aWVyKDAuODYwLCAgMC4wMDAsIDAuMDcwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xuJGVhc2UtaW4tb3V0LWV4cG86ICBjdWJpYy1iZXppZXIoMS4wMDAsICAwLjAwMCwgMC4wMDAsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1jaXJjOiAgY3ViaWMtYmV6aWVyKDAuNzg1LCAgMC4xMzUsIDAuMTUwLCAwLjg2MCk7XG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xuIiwiQG1peGluIHRyaWFuZ2xlICgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKSB7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcblxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogICAkY29sb3I7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAgICAkY29sb3I7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICAkY29sb3I7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHVwLWxlZnQpIHtcbiAgICBib3JkZXItdG9wOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdDogICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHVwLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcbiAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBUaGVzZSBtaXhpbnMvZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkXG4vLyBUaGV5IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBNQUpPUiB2ZXJzaW9uIHJlbGVhc2Vcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBib3gtc2hhZG93ICgkc2hhZG93cy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtc2hhZG93LCAkc2hhZG93cywgc3BlYyk7XG4gIEB3YXJuIFwiYm94LXNoYWRvdyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUgKCRsZW5ndGhzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJhY2tncm91bmQtc2l6ZSwgJGxlbmd0aHMsIHNwZWMpO1xuICBAd2FybiBcImJhY2tncm91bmQtc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG4iLCIvLyBGdW5jdGlvbnNcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHJpdmF0ZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9uZXctYnJlYWtwb2ludFwiO1xuXG4vLyBTZXR0aW5nc1xuQGltcG9ydCBcInNldHRpbmdzL2dyaWRcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy92aXN1YWwtZ3JpZFwiO1xuIiwiJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFkZWZhdWx0O1xuJGZnLWNvbHVtbjogJGNvbHVtbjtcbiRmZy1ndXR0ZXI6ICRndXR0ZXI7XG4kZmctbWF4LWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4kY29udGFpbmVyLWRpc3BsYXktdGFibGU6IGZhbHNlICFkZWZhdWx0O1xuJGxheW91dC1kaXJlY3Rpb246IG5pbCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMpIHtcbiAgJHdpZHRoOiAkY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHdpZHRoIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbkBmdW5jdGlvbiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucywgJGd1dHRlcjogJGZnLWd1dHRlcikge1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbkBmdW5jdGlvbiBnZXQtcGFyZW50LWNvbHVtbnMoJGNvbHVtbnMpIHtcbiAgQGlmICRjb2x1bW5zICE9ICRncmlkLWNvbHVtbnMge1xuICAgICRwYXJlbnQtY29sdW1uczogJGNvbHVtbnM7XG4gIH0gQGVsc2Uge1xuICAgICRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgfVxuXG4gIEByZXR1cm4gJHBhcmVudC1jb2x1bW5zO1xufVxuXG5AZnVuY3Rpb24gaXMtZGlzcGxheS10YWJsZSgkY29udGFpbmVyLWlzLWRpc3BsYXktdGFibGUsICRkaXNwbGF5KSB7XG4gICRkaXNwbGF5LXRhYmxlOiBmYWxzZTtcblxuICBAaWYgJGNvbnRhaW5lci1pcy1kaXNwbGF5LXRhYmxlID09IHRydWUge1xuICAgICRkaXNwbGF5LXRhYmxlOiB0cnVlO1xuICB9IEBlbHNlIGlmICRkaXNwbGF5ID09IHRhYmxlIHtcbiAgICAkZGlzcGxheS10YWJsZTogdHJ1ZTtcbiAgfVxuXG4gIEByZXR1cm4gJGRpc3BsYXktdGFibGU7XG59XG4iLCJAbWl4aW4gcmVzZXQtZGlzcGxheSB7XG4gICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2U7XG59XG5cbkBtaXhpbiByZXNldC1sYXlvdXQtZGlyZWN0aW9uIHtcbiAgJGxheW91dC1kaXJlY3Rpb246ICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb247XG59XG5cbkBtaXhpbiByZXNldC1hbGwge1xuICBAaW5jbHVkZSByZXNldC1kaXNwbGF5O1xuICBAaW5jbHVkZSByZXNldC1sYXlvdXQtZGlyZWN0aW9uO1xufVxuIiwiQGlmICRib3JkZXItYm94LXNpemluZyA9PSB0cnVlIHtcbiAgKiB7XG4gICAgQGluY2x1ZGUgYm94LXNpemluZyhib3JkZXItYm94KTtcbiAgfVxufVxuIiwiLy8gUmVtb3ZlIGxhc3QgZWxlbWVudCBndXR0ZXJcbkBtaXhpbiBvbWVnYSgkcXVlcnk6IGJsb2NrLCAkZGlyZWN0aW9uOiBkZWZhdWx0KSB7XG4gICR0YWJsZTogaWYoYmVsb25ncy10byh0YWJsZSwgJHF1ZXJ5KSwgdHJ1ZSwgZmFsc2UpO1xuICAkYXV0bzogaWYoYmVsb25ncy10byhhdXRvLCAkcXVlcnkpLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGlmICRkaXJlY3Rpb24gIT0gZGVmYXVsdCB7XG4gICAgQHdhcm4gXCJUaGUgb21lZ2EgbWl4aW4gd2lsbCBubyBsb25nZXIgdGFrZSBhICRkaXJlY3Rpb24gYXJndW1lbnQuIFRvIGNoYW5nZSB0aGUgbGF5b3V0IGRpcmVjdGlvbiwgdXNlIHJvdygkZGlyZWN0aW9uKSBvciBzZXQgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbiBpbnN0ZWFkLlwiXG4gIH0gQGVsc2Uge1xuICAgICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICB9XG5cbiAgQGlmICR0YWJsZSB7XG4gICAgQHdhcm4gXCJUaGUgb21lZ2EgbWl4aW4gbm8gbG9uZ2VyIHJlbW92ZXMgcGFkZGluZyBpbiB0YWJsZSBsYXlvdXRzLlwiXG4gIH1cblxuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgQGlmICRhdXRvIHtcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmIGNvbnRhaW5zLWRpc3BsYXktdmFsdWUoJHF1ZXJ5KSBhbmQgJHRhYmxlID09IGZhbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIG50aC1jaGlsZCgkcXVlcnksICRkaXJlY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiAkYXV0byB7XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBudGgtY2hpbGQobnRoKCRxdWVyeSwgMSksICRkaXJlY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlRvbyBtYW55IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIG9tZWdhKCkgbWl4aW4uXCJcbiAgfVxufVxuXG5AbWl4aW4gbnRoLWNoaWxkKCRxdWVyeSwgJGRpcmVjdGlvbikge1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSkge1xuICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSsxKSB7XG4gICAgICBjbGVhcjogJG9wcG9zaXRlLWRpcmVjdGlvbjtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBvdXRlci1jb250YWluZXIge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICBtYXJnaW46IHtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG59XG4iLCJAbWl4aW4gc3Bhbi1jb2x1bW5zKCRzcGFuOiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMsICRkaXNwbGF5OiBibG9jaykge1xuICAkY29sdW1uczogbnRoKCRzcGFuLCAxKTtcbiAgJGNvbnRhaW5lci1jb2x1bW5zOiBjb250YWluZXItc3Bhbigkc3Bhbik7XG5cbiAgLy8gU2V0IG5lc3RpbmcgY29udGV4dCAodXNlZCBieSBzaGlmdCgpKVxuICAkcGFyZW50LWNvbHVtbnM6IGdldC1wYXJlbnQtY29sdW1ucygkY29udGFpbmVyLWNvbHVtbnMpO1xuXG4gICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICRkaXNwbGF5LXRhYmxlOiBpcy1kaXNwbGF5LXRhYmxlKCRjb250YWluZXItZGlzcGxheS10YWJsZSwgJGRpc3BsYXkpO1xuXG4gIEBpZiAkZGlzcGxheS10YWJsZSAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoJGNvbHVtbnMgLyAkY29udGFpbmVyLWNvbHVtbnMpO1xuICB9IEBlbHNlIHtcbiAgICBmbG9hdDogI3skb3Bwb3NpdGUtZGlyZWN0aW9ufTtcblxuICAgIEBpZiAkZGlzcGxheSAhPSBuby1kaXNwbGF5IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSB7XG4gICAgICBAd2FybiBcIlRoZSAnY29sbGFwc2UnIGFyZ3VtZW50IHdpbGwgYmUgZGVwcmVjYXRlZC4gVXNlICdibG9jay1jb2xsYXBzZScgaW5zdGVhZC5cIlxuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSBvciAkZGlzcGxheSA9PSBibG9jay1jb2xsYXBzZSB7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpICsgZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zKTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zKTtcbiAgICAgIH1cblxuICAgIH0gQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1ucyk7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpO1xuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiByb3coJGRpc3BsYXk6IGJsb2NrLCAkZGlyZWN0aW9uOiAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICAkbGF5b3V0LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcblxuICBAaWYgJGRpc3BsYXkgPT0gdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIEBpbmNsdWRlIGZpbGwtcGFyZW50O1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiB0cnVlO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2U7XG4gIH1cbn1cblxuIiwiQG1peGluIHNoaWZ0KCRuLWNvbHVtbnM6IDEpIHtcbiAgQGluY2x1ZGUgc2hpZnQtaW4tY29udGV4dCgkbi1jb2x1bW5zKTtcbn1cblxuQG1peGluIHNoaWZ0LWluLWNvbnRleHQoJHNoaWZ0OiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMpIHtcbiAgJG4tY29sdW1uczogbnRoKCRzaGlmdCwgMSk7XG4gICRwYXJlbnQtY29sdW1uczogY29udGFpbmVyLXNoaWZ0KCRzaGlmdCk7XG5cbiAgJGRpcmVjdGlvbjogZ2V0LWRpcmVjdGlvbigkbGF5b3V0LWRpcmVjdGlvbiwgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbik7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbik7XG5cbiAgbWFyZ2luLSN7JG9wcG9zaXRlLWRpcmVjdGlvbn06ICRuLWNvbHVtbnMgKiBmbGV4LWdyaWQoMSwgJHBhcmVudC1jb2x1bW5zKSArICRuLWNvbHVtbnMgKiBmbGV4LWd1dHRlcigkcGFyZW50LWNvbHVtbnMpO1xuXG4gIC8vIFJlc2V0IG5lc3RpbmcgY29udGV4dFxuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG59XG4iLCJAbWl4aW4gcGFkKCRwYWRkaW5nOiBmbGV4LWd1dHRlcigpKSB7XG4gICRwYWRkaW5nLWxpc3Q6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkcGFkZGluZyB7XG4gICAgJHZhbHVlOiBpZigkdmFsdWUgPT0gJ2RlZmF1bHQnLCBmbGV4LWd1dHRlcigpLCAkdmFsdWUpO1xuICAgICRwYWRkaW5nLWxpc3Q6IGpvaW4oJHBhZGRpbmctbGlzdCwgJHZhbHVlKTtcbiAgfVxuICBwYWRkaW5nOiAkcGFkZGluZy1saXN0O1xufVxuIiwiQG1peGluIGZpbGwtcGFyZW50KCkge1xuICB3aWR0aDogMTAwJTtcblxuICBAaWYgJGJvcmRlci1ib3gtc2l6aW5nID09IGZhbHNlIHtcbiAgICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpO1xuICB9XG59XG4iLCJAbWl4aW4gbWVkaWEoJHF1ZXJ5OiRmZWF0dXJlICR2YWx1ZSAkY29sdW1ucywgJHRvdGFsLWNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kICgkZGVmYXVsdC1mZWF0dXJlOiBudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgJGxvb3BUbzogbGVuZ3RoKCRxdWVyeSk7XG4gICAgJG1lZGlhUXVlcnk6ICdzY3JlZW4gYW5kICc7XG4gICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuXG4gICAgQGlmIGxlbmd0aCgkcXVlcnkpICUgMiAhPSAwIHtcbiAgICAgICRncmlkLWNvbHVtbnM6IG50aCgkcXVlcnksICRsb29wVG8pO1xuICAgICAgJGxvb3BUbzogJGxvb3BUbyAtIDE7XG4gICAgfVxuXG4gICAgJGk6IDE7XG4gICAgQHdoaWxlICRpIDw9ICRsb29wVG8ge1xuICAgICAgJG1lZGlhUXVlcnk6ICRtZWRpYVF1ZXJ5ICsgJygnICsgbnRoKCRxdWVyeSwgJGkpICsgJzogJyArIG50aCgkcXVlcnksICRpICsgMSkgKyAnKSAnO1xuXG4gICAgICBAaWYgKCRpICsgMSkgIT0gJGxvb3BUbyB7XG4gICAgICAgICRtZWRpYVF1ZXJ5OiAkbWVkaWFRdWVyeSArICdhbmQgJztcbiAgICAgIH1cblxuICAgICAgJGk6ICRpICsgMjtcbiAgICB9XG5cbiAgICBAbWVkaWEgI3skbWVkaWFRdWVyeX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gYnJlYWtwb2ludCgkcXVlcnk6JGZlYXR1cmUgJHZhbHVlICRjb2x1bW5zLCAkdG90YWwtY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAd2FybiBcIlRoZSBicmVha3BvaW50KCkgbWl4aW4gd2FzIHJlbmFtZWQgdG8gbWVkaWEoKSBpbiBOZWF0IDEuMC4gUGxlYXNlIHVwZGF0ZSB5b3VyIHByb2plY3Qgd2l0aCB0aGUgbmV3IHN5bnRheCBiZWZvcmUgdGhlIG5leHQgdmVyc2lvbiBidW1wLlwiO1xuXG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoJGRlZmF1bHQtZmVhdHVyZTogbnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAzIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCAzKTtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDQge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucztcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDUge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCA1KTtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGJyZWFrcG9pbnQoKS4gUmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLlwiO1xuICB9XG59XG5cbkBtaXhpbiBudGgtb21lZ2EoJG50aCwgJGRpc3BsYXk6IGJsb2NrLCAkZGlyZWN0aW9uOiBkZWZhdWx0KSB7XG4gIEB3YXJuIFwiVGhlIG50aC1vbWVnYSgpIG1peGluIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ugb21lZ2EoKSBpbnN0ZWFkLlwiO1xuICBAaW5jbHVkZSBvbWVnYSgkbnRoICRkaXNwbGF5LCAkZGlyZWN0aW9uKTtcbn1cbiIsIkBtaXhpbiBncmlkLWNvbHVtbi1ncmFkaWVudCgkdmFsdWVzLi4uKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGRlcHJlY2F0ZWQtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogIC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgLW1vei1saW5lYXItZ3JhZGllbnQobGVmdCwgJHZhbHVlcyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgLW1zLWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwibGluZWFyLWdyYWRpZW50KGxlZnQsICN7JHZhbHVlc30pXCIpO1xufVxuXG5AaWYgJHZpc3VhbC1ncmlkID09IHRydWUgb3IgJHZpc3VhbC1ncmlkID09IHllcyB7XG4gIGJvZHk6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3JhZGllbnQoZ3JhZGllbnQtc3RvcHMoJGdyaWQtY29sdW1ucykpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgICBvcGFjaXR5OiAkdmlzdWFsLWdyaWQtb3BhY2l0eTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICBAaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGJhY2sge1xuICAgICAgei1pbmRleDogLTE7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGZyb250IHtcbiAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgfVxuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiAkYnJlYWtwb2ludCAhPSBuaWwge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkYnJlYWtwb2ludCkge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLWdyYWRpZW50KGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQ2hlY2tzIGlmIGEgbnVtYmVyIGlzIGV2ZW5cbkBmdW5jdGlvbiBpcy1ldmVuKCRpbnQpIHtcbiAgQGlmICRpbnQlMiA9PSAwICAge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vIENoZWNrcyBpZiBhbiBlbGVtZW50IGJlbG9uZ3MgdG8gYSBsaXN0XG5AZnVuY3Rpb24gYmVsb25ncy10bygkdGVzdGVkLWl0ZW0sICRsaXN0KSB7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgJGl0ZW0gPT0gJHRlc3RlZC1pdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBDb250YWlucyBkaXNwbGF5IHZhbHVlXG5AZnVuY3Rpb24gY29udGFpbnMtZGlzcGxheS12YWx1ZSgkcXVlcnkpIHtcbiAgQGlmIGJlbG9uZ3MtdG8odGFibGUsICRxdWVyeSkgb3IgYmVsb25ncy10byhibG9jaywgJHF1ZXJ5KSBvciBiZWxvbmdzLXRvKGlubGluZS1ibG9jaywgJHF1ZXJ5KSBvciBiZWxvbmdzLXRvKGlubGluZSwgJHF1ZXJ5KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8gUGFyc2VzIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBzcGFuLWNvbHVtbnMoKVxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zcGFuKCRzcGFuOiAkc3Bhbikge1xuICBAaWYgbGVuZ3RoKCRzcGFuKSA9PSAzIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc3BhbiwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNwYW4pID09IDIge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzcGFuLCAyKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRncmlkLWNvbHVtbnM7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zaGlmdCgkc2hpZnQ6ICRzaGlmdCkge1xuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnMgIWRlZmF1bHQ7XG5cbiAgQGlmIGxlbmd0aCgkc2hpZnQpID09IDMge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzaGlmdCwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNoaWZ0KSA9PSAyIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc2hpZnQsIDIpO1xuICAgIEByZXR1cm4gJGNvbnRhaW5lci1jb2x1bW5zO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHBhcmVudC1jb2x1bW5zO1xuICB9XG59XG5cbi8vIEdlbmVyYXRlcyBhIHN0cmlwZWQgYmFja2dyb3VuZFxuQGZ1bmN0aW9uIGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMsICRjb2xvcjogJHZpc3VhbC1ncmlkLWNvbG9yKSB7XG4gICR0cmFuc3BhcmVudDogcmdiYSgwLDAsMCwwKTtcblxuICAkY29sdW1uLXdpZHRoOiBmbGV4LWdyaWQoMSwgJGdyaWQtY29sdW1ucyk7XG4gICRndXR0ZXItd2lkdGg6IGZsZXgtZ3V0dGVyKCRncmlkLWNvbHVtbnMpO1xuICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi13aWR0aDtcblxuICAkdmFsdWVzOiAoJHRyYW5zcGFyZW50IDAsICRjb2xvciAwKTtcblxuICBAZm9yICRpIGZyb20gMSB0byAkZ3JpZC1jb2x1bW5zKjIge1xuICAgIEBpZiBpcy1ldmVuKCRpKSB7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHRyYW5zcGFyZW50ICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJGNvbG9yICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi1vZmZzZXQgKyAkY29sdW1uLXdpZHRoO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkY29sb3IgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkdHJhbnNwYXJlbnQgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLW9mZnNldCArICRndXR0ZXItd2lkdGg7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBMYXlvdXQgZGlyZWN0aW9uXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbigkbGF5b3V0LCAkZGVmYXVsdCkge1xuICAkZGlyZWN0aW9uOiBuaWw7XG4gIFxuICBAaWYgJGxheW91dCA9PSBMVFIgb3IgJGxheW91dCA9PSBSVEwge1xuICAgICRkaXJlY3Rpb246IGRpcmVjdGlvbi1mcm9tLWxheW91dCgkbGF5b3V0KTtcbiAgfSBAZWxzZSB7XG4gICAgJGRpcmVjdGlvbjogZGlyZWN0aW9uLWZyb20tbGF5b3V0KCRkZWZhdWx0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGRpcmVjdGlvbjtcbn1cblxuQGZ1bmN0aW9uIGRpcmVjdGlvbi1mcm9tLWxheW91dCgkbGF5b3V0KSB7XG4gICRkaXJlY3Rpb246IG5pbDtcblxuICBAaWYgJGxheW91dCA9PSBMVFIge1xuICAgICRkaXJlY3Rpb246IHJpZ2h0O1xuICB9IEBlbHNlIHtcbiAgICAkZGlyZWN0aW9uOiBsZWZ0O1xuICB9XG5cbiAgQHJldHVybiAkZGlyZWN0aW9uO1xufVxuXG5AZnVuY3Rpb24gZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKSB7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGxlZnQ7XG5cbiAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgJG9wcG9zaXRlLWRpcmVjdGlvbjogcmlnaHQ7XG4gIH1cblxuICBAcmV0dXJuICRvcHBvc2l0ZS1kaXJlY3Rpb247XG59XG4iLCJAZnVuY3Rpb24gbmV3LWJyZWFrcG9pbnQoJHF1ZXJ5OiRmZWF0dXJlICR2YWx1ZSAkY29sdW1ucywgJHRvdGFsLWNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcblxuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgJHF1ZXJ5OiAkZGVmYXVsdC1mZWF0dXJlIG50aCgkcXVlcnksIDEpICR0b3RhbC1jb2x1bW5zO1xuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgJSAyID09IDAge1xuICAgICRxdWVyeTogYXBwZW5kKCRxdWVyeSwgJHRvdGFsLWNvbHVtbnMpO1xuICB9XG5cbiAgQGlmIG5vdCBiZWxvbmdzLXRvKCRxdWVyeSwgJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzOiBhcHBlbmQoJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzLCAkcXVlcnksIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiJGNvbHVtbjogZ29sZGVuLXJhdGlvKDFlbSwgMykgIWRlZmF1bHQ7IC8vIENvbHVtbiB3aWR0aFxuJGd1dHRlcjogZ29sZGVuLXJhdGlvKDFlbSwgMSkgIWRlZmF1bHQ7IC8vIEd1dHRlciBiZXR3ZWVuIGVhY2ggdHdvIGNvbHVtbnNcbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0OyAvLyBUb3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZFxuJG1heC13aWR0aDogZW0oMTA4OCkgIWRlZmF1bHQ7IC8vIE1heC13aWR0aCBvZiB0aGUgb3V0ZXIgY29udGFpbmVyXG4kYm9yZGVyLWJveC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7IC8vIE1ha2VzIGFsbCBlbGVtZW50cyBoYXZlIGEgYm9yZGVyLWJveCBsYXlvdXRcbiRkZWZhdWx0LWZlYXR1cmU6IG1pbi13aWR0aDsgLy8gRGVmYXVsdCBAbWVkaWEgZmVhdHVyZSBmb3IgdGhlIGJyZWFrcG9pbnQoKSBtaXhpblxuJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbjogTFRSICFkZWZhdWx0O1xuIiwiJHZpc3VhbC1ncmlkOiBmYWxzZSAhZGVmYXVsdDsgLy8gRGlzcGxheSB0aGUgYmFzZSBncmlkXG4kdmlzdWFsLWdyaWQtY29sb3I6ICNFRUUgIWRlZmF1bHQ7XG4kdmlzdWFsLWdyaWQtaW5kZXg6IGJhY2sgIWRlZmF1bHQ7IC8vIFNob3cgZ3JpZCBiZWhpbmQgY29udGVudCAoYmFjaykgb3Igb3ZlcmxheSBpdCBvdmVyIHRoZSBjb250ZW50IChmcm9udClcbiR2aXN1YWwtZ3JpZC1vcGFjaXR5OiAwLjQgIWRlZmF1bHQ7XG4kdmlzdWFsLWdyaWQtYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuIl19*/
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHbG9iYWwgU3R5bGVzaGVldCAoSW5jbHVkZXMgbWVkaWEgcXVlcmllcylcbi8vIFN0eWxlcyB0aGF0IHVzZXMgbWVkaWEgcXVlcmllcyBmb3IgbW9kZXJuIGJyb3dzZXIgc3VwcG9ydFxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IENvbmZpZ3VyYXRpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQGltcG9ydCBcInV0aWxpdGllcy9pbXBvcnRzXCI7Il0sImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
