/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Profil/Badge.vue?vue&type=style&index=0&id=701f139f&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@import url(https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;600&display=swap);
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/AdminPanel/Navbar.vue?vue&type=style&index=0&id=32c5cf2a&scoped=true&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.link-active[data-v-32c5cf2a] {
  background-color: #f3f4f6;
}

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

.bg-custom-pattern[data-v-770cc7b2] {
    background-color: #2A0E0E;
    background-image: radial-gradient(rgba(255, 255, 255, 0.1) 1.5px, transparent 0);
    background-size: 20px 20px;
    background-position: -5px -5px;
}

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

.link-active[data-v-3e050f12] {
  background: white;
  box-shadow: 0 1px 1px rgba(14, 15, 18, 0.08), 0 2px 4px rgba(14,15,18,0.08), 0 6px 12px rgba(14,15,18,0.08);
}

/*!**************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/floating-vue/dist/style.css ***!
  \**************************************************************************************************************************************************************************************/
.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}

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

.heatmap[data-v-4d01c3c9] {
  display: grid;
  grid-template-columns: auto 1fr; /* 1: labels Y, 2: contenu */
  grid-auto-rows: auto;
  row-gap: 3px;
  column-gap: 3px;
  --cell-size: 15.5px;
  --gap: 2px;
  --base-rgb: 76, 139, 253;
}

/* cellule vide en haut à gauche pour aligner l’en-tête */
.spacer[data-v-4d01c3c9] { height: 1.2em;
}

/* rangée des mois */
.months[data-v-4d01c3c9] {
  display: grid;
  align-items: center;
  gap: var(--gap);
  height: 1.2em;
  font-size: 10px;
  color: #9aa0a6;
}
.month[data-v-4d01c3c9] {
  text-align: center;
}

/* le reste inchangé */
.y-labels[data-v-4d01c3c9] {
  display: grid;
  grid-template-rows: repeat(7, var(--cell-size));
  gap: var(--gap);
  font-size: 10px;
  color: #9aa0a6;
  margin-right: 2px;
}
.grid[data-v-4d01c3c9] { display: grid; grid-auto-flow: column; gap: var(--gap);
}
.week[data-v-4d01c3c9] { display: grid; grid-template-rows: repeat(7, var(--cell-size)); gap: var(--gap);
}
.cell[data-v-4d01c3c9] { width: var(--cell-size); height: var(--cell-size); border-radius: 2px; background-color: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255,255,255,0);
}
.cell.level-0[data-v-4d01c3c9] { background-color: rgba(40, 39, 46, 0.4);
}
.cell.level-1[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.25);
}
.cell.level-2[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.45);
}
.cell.level-3[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.65);
}
.cell.level-4[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.9);
}
.cell[data-v-4d01c3c9]:hover {
  border: 1px solid rgba(255,255,255,0.4);
}
.legend[data-v-4d01c3c9] { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 12px; color: #9aa0a6;
}
.legend .cell[data-v-4d01c3c9] { width: 12px; height: 12px;
}


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

/* Additional styling if needed */

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

section[data-v-6aa8df3f] {
    height: 100vh;
}

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

select[data-v-54be1986] { outline: none;
}

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

header.header_blur[data-v-2f7beffe] {
    backdrop-filter: saturate(120%) blur(10px);
}

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

header.header_blur[data-v-5f70eaff] {
    backdrop-filter: saturate(120%) blur(10px);
}

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

.logo-wrap[data-v-1d428279] {
  width: 100%;
  max-width: 390px;
  margin: 0 auto;
}
svg[data-v-1d428279] {
  display: block;
}
@media (prefers-reduced-motion: reduce) {
  /* Accessibilité : on saute l’animation si l’utilisateur la désactive */
svg[data-v-1d428279] * {
    animation: none !important;
    transition: none !important;
}
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/Profil/Badge.vue?vue&type=style&index=0&id=701f139f&scoped=true&lang=css (1) ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.badge[data-v-701f139f]{
  /* variables */
  --accent: #ff2438;
  --bg: #0b0b0c;
  --ink: #e9eaec;
  --sub: #a6a7ab;
  --border: rgba(255,255,255,.12);

  border-radius: 24px;
  background:
      radial-gradient(120% 120% at 10% -10%, rgba(255,255,255,.10), transparent 40%),
      linear-gradient(180deg, #111316 0%, #0a0b0c 100%);
  color: var(--ink);
  position: relative;
  padding: 26px 22px;
  box-shadow:
      0 28px 60px -12px rgba(0,0,0,.65),
      0 8px 20px -8px rgba(255,36,56,.25),
      inset 0 1px 0 rgba(255,255,255,.06),
      inset 0 -1px 0 rgba(255,255,255,.03);
  overflow: hidden;
  font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.badge.has-hole[data-v-701f139f]::before{
  content:"";
  position:absolute;
  top:14px; left:50%;
  width: 57px; height: 18px;
  transform: translateX(-50%);
  background: rgba(0,0,0,.45);
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.15);
  box-shadow: inset 0 2px 2px rgba(0,0,0,.5), 0 4px 12px rgba(0,0,0,.35);
}

/* Top logo */
.mark[data-v-701f139f]{
  width: 56px; height: 56px;
  display:block;
  margin-bottom: 16px;
  opacity:.9;
  filter: drop-shadow(0 6px 8px rgba(255,36,56,.25));
}

/* Titres */
.title[data-v-701f139f]{
  font-weight: 600;
  letter-spacing: .18em;
  font-size: 18px;
  margin: 6px 0 18px 0;
}

/* Paires clé/valeur */
.kv[data-v-701f139f]{
  display:grid;
  grid-template-columns: 70px 1fr;
  gap: 6px 16px;
  font-size: 11px;
  color: var(--sub);
  line-height: 1.3;
  margin-bottom: 12px;
}
.kv .k[data-v-701f139f]{ color: var(--sub); opacity:.9
}
.kv .v[data-v-701f139f]{ color: var(--ink); opacity:.9
}
.rule[data-v-701f139f]{
  height:1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.18), transparent);
  margin: 14px 0 10px;
}
.handle[data-v-701f139f]{
  font-size: 11px;
  color: var(--sub);
  letter-spacing: .08em;
  margin-top: 2px;
}
.name[data-v-701f139f]{
  font-size: 22px;
  letter-spacing: .12em;
  margin: 8px 0 8px;
  font-weight: 600;
}
.grid[data-v-701f139f]{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  align-items: start;
}

/* QR (placeholder) */
.qr[data-v-701f139f]{
  width: 128px; height: 128px;
  border-radius: 12px;
  border: 1px solid var(--border);
  background:
      repeating-linear-gradient(0deg, #0f1113, #0f1113 8px, #0d0f11 8px, #0d0f11 16px);
  box-shadow: inset 0 0 0 4px #000, 0 8px 20px -10px rgba(0,0,0,.8);
  position: relative;
  overflow:hidden;
}
.qr[data-v-701f139f]::before, .qr[data-v-701f139f]::after{
  content:"";
  position:absolute; inset:10px;
  background:
      conic-gradient(from 0deg at 20% 20%, #fff 0 25%, transparent 0 100%),
      conic-gradient(from 0deg at 80% 20%, #fff 0 25%, transparent 0 100%),
      conic-gradient(from 0deg at 20% 80%, #fff 0 25%, transparent 0 100%),
      conic-gradient(from 0deg at 80% 80%, #fff 0 25%, transparent 0 100%),
      repeating-conic-gradient(#fff 0 2%, transparent 0 4%);
  mix-blend-mode: screen;
  opacity:.9;
}
.qr[data-v-701f139f]::after{ inset:36px; background:#000
}
.meta[data-v-701f139f]{
  font-size: 11px;
  color: var(--sub);
  line-height: 1.45;
}
.meta b[data-v-701f139f]{ color: var(--ink); font-weight:600; letter-spacing:.06em
}
.meta .id[data-v-701f139f]{
  margin: 8px 0 10px;
  padding: 6px 8px;
  border: 1px dashed rgba(255,255,255,.22);
  border-radius: 8px;
  display:inline-block;
}

/* Signature bas */
.footer[data-v-701f139f]{
  position:absolute; left:22px; right:22px; bottom:18px;
  display:flex; align-items:center; justify-content:space-between;
  color: var(--sub); font-size: 10px;
  letter-spacing:.08em;
}
.sig[data-v-701f139f]{ display:flex; align-items:center; gap:8px; opacity:.95;
}
.dot[data-v-701f139f]{
  width:10px; height:10px; border-radius:50%;
  background: radial-gradient(circle at 40% 35%, #fff, #fff0 45%);
  box-shadow: 0 0 14px var(--accent), 0 0 4px var(--accent) inset;
}

/* Glows rouges */
.glow[data-v-701f139f]{
  position:absolute; inset:-40%;
  background:
      radial-gradient(420px 220px at 20% -10%, rgba(255,36,56,.18), transparent 40%),
      radial-gradient(420px 220px at 120% 120%, rgba(255,36,56,.12), transparent 50%);
  pointer-events:none;
  filter: blur(2px);
}

/* Sélection */
.badge[data-v-701f139f] ::selection{ background: rgba(255,36,56,.35); color:#fff
}

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

.line[data-v-0d687dd2] {
  transform-origin: center;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQXlIQTtFQUNFLHlCQUF5QjtBQUMzQjs7Ozs7O0FDQUU7SUFDRSx5QkFBeUI7SUFDekIsZ0ZBQWdGO0lBQ2hGLDBCQUEwQjtJQUMxQiw4QkFBOEI7QUFDaEM7Ozs7OztBQ2VGO0VBQ0UsaUJBQWlCO0VBQ2pCLDJHQUEyRztBQUM3Rzs7Ozs7QUNsSkEsa0NBQWtDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLDRCQUE0QixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLHlDQUF5QyxhQUFhLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQywyQ0FBMkMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLHVDQUF1QyxDQUFDLG1CQUFtQixDQUFDLDBDQUEwQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsMkhBQTJILHlCQUF5QixDQUFDLG9CQUFvQixpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGlCQUFpQixpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMscUJBQXFCLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQywwSEFBMEgsWUFBWSxDQUFDLDhDQUE4QyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsdUJBQXVCLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixnQkFBZ0IsQ0FBQyw2SUFBNkksU0FBUyxDQUFDLDZJQUE2SSxTQUFTLENBQUMsMElBQTBJLHFCQUFxQixDQUFDLHVDQUF1QyxDQUFDLHdDQUF3QyxDQUFDLHlDQUF5QyxDQUFDLHFFQUFxRSxRQUFRLENBQUMsNEVBQTRFLEtBQUssQ0FBQyxnSkFBZ0osa0JBQWtCLENBQUMsdUNBQXVDLENBQUMsd0NBQXdDLENBQUMsc0NBQXNDLENBQUMsd0VBQXdFLFFBQVEsQ0FBQyx3RUFBd0UsUUFBUSxDQUFDLDZJQUE2SSxRQUFRLENBQUMsNklBQTZJLFFBQVEsQ0FBQyw4SUFBOEksbUJBQW1CLENBQUMsdUNBQXVDLENBQUMsc0NBQXNDLENBQUMseUNBQXlDLENBQUMsdUVBQXVFLFNBQVMsQ0FBQyx1RUFBdUUsU0FBUyxDQUFDLDBFQUEwRSxXQUFXLENBQUMsNElBQTRJLG9CQUFvQixDQUFDLHNDQUFzQyxDQUFDLHdDQUF3QyxDQUFDLHlDQUF5QyxDQUFDLHNFQUFzRSxTQUFTLENBQUMsMENBQTBDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxnREFBZ0Qsa0JBQWtCLENBQUMsMkNBQTJDLGVBQWUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsK0JBQStCLENBQUMsaURBQWlELGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLGlEQUFpRCxpQkFBaUI7Ozs7OztBQytNeHRJO0VBQ0UsYUFBYTtFQUNiLCtCQUErQixFQUFFLDRCQUE0QjtFQUM3RCxvQkFBb0I7RUFDcEIsWUFBWTtFQUNaLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsVUFBVTtFQUNWLHdCQUF3QjtBQUMxQjs7QUFFQSx5REFBeUQ7QUFDekQsMkJBQVUsYUFBYTtBQUFFOztBQUV6QixvQkFBb0I7QUFDcEI7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixhQUFhO0VBQ2IsZUFBZTtFQUNmLGNBQWM7QUFDaEI7QUFDQTtFQUNFLGtCQUFrQjtBQUNwQjs7QUFFQSxzQkFBc0I7QUFDdEI7RUFDRSxhQUFhO0VBQ2IsK0NBQStDO0VBQy9DLGVBQWU7RUFDZixlQUFlO0VBQ2YsY0FBYztFQUNkLGlCQUFpQjtBQUNuQjtBQUNBLHlCQUFRLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxlQUFlO0FBQUU7QUFDaEUseUJBQVEsYUFBYSxFQUFFLCtDQUErQyxFQUFFLGVBQWU7QUFBRTtBQUN6Rix5QkFBUSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsRUFBRSwyQ0FBMkMsRUFBRSxxQ0FBcUM7QUFBRTtBQUNuSyxpQ0FBZ0IsdUNBQXVDO0FBQUU7QUFDekQsaUNBQWdCLDZDQUE2QztBQUFFO0FBQy9ELGlDQUFnQiw2Q0FBNkM7QUFBRTtBQUMvRCxpQ0FBZ0IsNkNBQTZDO0FBQUU7QUFDL0QsaUNBQWdCLDRDQUE0QztBQUFFO0FBRTlEO0VBQ0UsdUNBQXVDO0FBQ3pDO0FBRUEsMkJBQVUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWM7QUFBRTtBQUMxRyxpQ0FBZ0IsV0FBVyxFQUFFLFlBQVk7QUFBRTs7Ozs7OztBQ2tGM0MsaUNBQWlDOzs7Ozs7QUN2Ry9CO0lBQ0UsYUFBYTtBQUNmOzs7Ozs7QUMxTkYsMEJBQVMsYUFBYTtBQUFFOzs7Ozs7QUNvRnRCO0lBQ0UsMENBQTBDO0FBQzVDOzs7Ozs7QUNkQTtJQUNFLDBDQUEwQztBQUM1Qzs7Ozs7O0FDMEpGO0VBQ0UsV0FBVztFQUNYLGdCQUFnQjtFQUNoQixjQUFjO0FBQ2hCO0FBQ0E7RUFDRSxjQUFjO0FBQ2hCO0FBRUE7RUFDRSx1RUFBdUU7QUFDdkU7SUFDRSwwQkFBMEI7SUFDMUIsMkJBQTJCO0FBQzdCO0FBQ0Y7Ozs7OztBQzlLQTtFQUNFLGNBQWM7RUFDZCxpQkFBaUI7RUFDakIsYUFBYTtFQUNiLGNBQWM7RUFDZCxjQUFjO0VBQ2QsK0JBQStCOztFQUUvQixtQkFBbUI7RUFDbkI7O3VEQUVxRDtFQUNyRCxpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQjs7OzswQ0FJd0M7RUFDeEMsZ0JBQWdCO0VBQ2hCLHNGQUFzRjtBQUN4RjtBQUVBO0VBQ0UsVUFBVTtFQUNWLGlCQUFpQjtFQUNqQixRQUFRLEVBQUUsUUFBUTtFQUNsQixXQUFXLEVBQUUsWUFBWTtFQUN6QiwyQkFBMkI7RUFDM0IsMkJBQTJCO0VBQzNCLG1CQUFtQjtFQUNuQix1Q0FBdUM7RUFDdkMsc0VBQXNFO0FBQ3hFOztBQUVBLGFBQWE7QUFDYjtFQUNFLFdBQVcsRUFBRSxZQUFZO0VBQ3pCLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsVUFBVTtFQUNWLGtEQUFrRDtBQUNwRDs7QUFFQSxXQUFXO0FBQ1g7RUFDRSxnQkFBZ0I7RUFDaEIscUJBQXFCO0VBQ3JCLGVBQWU7RUFDZixvQkFBb0I7QUFDdEI7O0FBRUEsc0JBQXNCO0FBQ3RCO0VBQ0UsWUFBWTtFQUNaLCtCQUErQjtFQUMvQixhQUFhO0VBQ2IsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsbUJBQW1CO0FBQ3JCO0FBQ0EseUJBQVEsaUJBQWlCLEVBQUU7QUFBVztBQUN0Qyx5QkFBUSxpQkFBaUIsRUFBRTtBQUFXO0FBRXRDO0VBQ0UsVUFBVTtFQUNWLG1GQUFtRjtFQUNuRixtQkFBbUI7QUFDckI7QUFFQTtFQUNFLGVBQWU7RUFDZixpQkFBaUI7RUFDakIscUJBQXFCO0VBQ3JCLGVBQWU7QUFDakI7QUFFQTtFQUNFLGVBQWU7RUFDZixxQkFBcUI7RUFDckIsaUJBQWlCO0VBQ2pCLGdCQUFnQjtBQUNsQjtBQUVBO0VBQ0UsWUFBWTtFQUNaLDhCQUE4QjtFQUM5QixTQUFTO0VBQ1Qsa0JBQWtCO0FBQ3BCOztBQUVBLHFCQUFxQjtBQUNyQjtFQUNFLFlBQVksRUFBRSxhQUFhO0VBQzNCLG1CQUFtQjtFQUNuQiwrQkFBK0I7RUFDL0I7c0ZBQ29GO0VBQ3BGLGlFQUFpRTtFQUNqRSxrQkFBa0I7RUFDbEIsZUFBZTtBQUNqQjtBQUNBO0VBQ0UsVUFBVTtFQUNWLGlCQUFpQixFQUFFLFVBQVU7RUFDN0I7Ozs7OzJEQUt5RDtFQUN6RCxzQkFBc0I7RUFDdEIsVUFBVTtBQUNaO0FBQ0EsNkJBQVksVUFBVSxFQUFFO0FBQWdCO0FBRXhDO0VBQ0UsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixpQkFBaUI7QUFDbkI7QUFDQSwwQkFBUyxpQkFBaUIsRUFBRSxlQUFlLEVBQUU7QUFBcUI7QUFDbEU7RUFDRSxrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLHdDQUF3QztFQUN4QyxrQkFBa0I7RUFDbEIsb0JBQW9CO0FBQ3RCOztBQUVBLGtCQUFrQjtBQUNsQjtFQUNFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVztFQUNyRCxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsNkJBQTZCO0VBQy9ELGlCQUFpQixFQUFFLGVBQWU7RUFDbEMsb0JBQW9CO0FBQ3RCO0FBQ0EsdUJBQU0sWUFBWSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxXQUFXO0FBQUU7QUFDOUQ7RUFDRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGlCQUFpQjtFQUMxQywrREFBK0Q7RUFDL0QsK0RBQStEO0FBQ2pFOztBQUVBLGlCQUFpQjtBQUNqQjtFQUNFLGlCQUFpQixFQUFFLFVBQVU7RUFDN0I7O3FGQUVtRjtFQUNuRixtQkFBbUI7RUFDbkIsaUJBQWlCO0FBQ25COztBQUVBLGNBQWM7QUFDZCxxQ0FBb0IsK0JBQStCLEVBQUU7QUFBVzs7Ozs7O0FDcE1oRTtFQUNFLHdCQUF3QjtBQUMxQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvQWRtaW5QYW5lbC9OYXZiYXIudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvQWRtaW5pc3RyYXRpb24vRGFzaGJvYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL0JhY2tvZmZpY2UvRGFzaGJvYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmxvYXRpbmctdnVlL2Rpc3Qvc3R5bGUuY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvUHJvZmlsL0FjdGl2aXR5TWFwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL0JhY2tvZmZpY2UvVXNlcnMudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvR1NBUC9TY3JvbGxWMy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9VdGlscy9MYW5ndWFnZVN3aXRjaGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL0hvbWUvTmF2YmFyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL05hdmJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9PcGVuaW5nLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL1Byb2ZpbC9CYWRnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9WU1RMaW5lcy52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwicC04IGZsZXggZmxleC1jb2wgaC1mdWxsIGp1c3RpZnktYmV0d2VlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiL3Jlcy9pbWFnZXMvbG9nb19tb3V0aC5zdmdcIiBhbHQ9XCJcIiBjbGFzcz1cInNpemUtMTBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRlclwiPkJhY2tvZmZpY2UgTGVWb2l4PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxDb21tYW5kIC8+XG5cblxuICAgICAgPGRpdj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZVwiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIHRleHQtc20gcHktMSB0cmFuc2l0aW9uLWFsbCcsXG4gICAgICAgICAgaXNBY3RpdmUoJy9iYWNrb2ZmaWNlJykgJiYgIWhhc1N1YlBhdGggPyAndGV4dC1wcmltYXJ5IGZvbnQtc2VtaWJvbGQnIDogJydcbiAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJpc0FjdGl2ZSgnL2JhY2tvZmZpY2UnKSAmJiAhaGFzU3ViUGF0aFwiIGNsYXNzPVwic2l6ZS0yIGJnLXByaW1hcnkgbXItMiByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICA8SG91c2Ugc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IFRhYmxlYXUgZGUgYm9yZFxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LThcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIG9wYWNpdHktNzAgdGV4dC14cyB0cmFja2luZy10aWdodGVyIG1iLTNcIj5HZXN0aW9uPC9zcGFuPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIi9iYWNrb2ZmaWNlL3V0aWxpc2F0ZXVyc1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIG1iLTIgcHktMSBob3ZlcjpwbC0xIHRyYW5zaXRpb24tYWxsIHRleHQtc20nLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZS91dGlsaXNhdGV1cnMnKSA/ICd0ZXh0LXByaW1hcnkgZm9udC1zZW1pYm9sZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWN0aXZlKCcvYmFja29mZmljZS91dGlsaXNhdGV1cnMnKVwiIGNsYXNzPVwic2l6ZS0yIGJnLXByaW1hcnkgbXItMiByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICA8VXNlcnMgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IFV0aWxpc2F0ZXVyc1xuICAgICAgICA8L2E+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiL2JhY2tvZmZpY2UvbGljZW5jZXNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBtYi0yIHB5LTEgaG92ZXI6cGwtMSB0cmFuc2l0aW9uLWFsbCB0ZXh0LXNtJyxcbiAgICAgICAgICBpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvbGljZW5jZXMnKSA/ICd0ZXh0LXByaW1hcnkgZm9udC1zZW1pYm9sZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWN0aXZlKCcvYmFja29mZmljZS9saWNlbmNlcycpXCIgY2xhc3M9XCJzaXplLTIgYmctcHJpbWFyeSBtci0yIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgIDxLZXlSb3VuZCBzaXplPVwiMTZcIiBzdHJva2Utd2lkdGg9XCIyXCIgY2xhc3M9XCJtci0yXCIgLz4gTGljZW5jZXNcbiAgICAgICAgPC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIi9iYWNrb2ZmaWNlL3ZlcnNpb25zXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgcHktMSBob3ZlcjpwbC0xIHRyYW5zaXRpb24tYWxsIHRleHQtc20nLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZS92ZXJzaW9ucycpID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL3ZlcnNpb25zJylcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPFRhZ3Mgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IFZlcnNpb25zXG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtOFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS05MDAgb3BhY2l0eS03MCB0ZXh0LXhzIHRyYWNraW5nLXRpZ2h0ZXIgbWItM1wiPlBhcmFtw6l0cmFnZXM8L3NwYW4+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiL2JhY2tvZmZpY2UvcGFyYW1ldHJlc1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIG1iLTIgcHktMSBob3ZlcjpwbC0xIHRyYW5zaXRpb24tYWxsIHRleHQtc20nLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZS9wYXJhbWV0cmVzJykgPyAndGV4dC1wcmltYXJ5IGZvbnQtc2VtaWJvbGQnIDogJydcbiAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvcGFyYW1ldHJlcycpXCIgY2xhc3M9XCJzaXplLTIgYmctcHJpbWFyeSBtci0yIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgIDxDb2cgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IFBhcmFtw6l0cmVzIGfDqW7DqXJhdXhcbiAgICAgICAgPC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIi9iYWNrb2ZmaWNlL2ZhcXNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBtYi0yIHB5LTEgaG92ZXI6cGwtMSB0cmFuc2l0aW9uLWFsbCB0ZXh0LXNtJyxcbiAgICAgICAgICBpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvZmFxcycpID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2ZhcXMnKVwiIGNsYXNzPVwic2l6ZS0yIGJnLXByaW1hcnkgbXItMiByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICA8QmFkZ2VRdWVzdGlvbk1hcmsgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IEZBUXNcbiAgICAgICAgPC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIi9iYWNrb2ZmaWNlL2xvZ3NcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBweS0xIGhvdmVyOnBsLTEgdHJhbnNpdGlvbi1hbGwgdGV4dC1zbScsXG4gICAgICAgICAgaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2xvZ3MnKSA/ICd0ZXh0LXByaW1hcnkgZm9udC1zZW1pYm9sZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWN0aXZlKCcvYmFja29mZmljZS9sb2dzJylcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPFRlcm1pbmFsIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBMb2dzXG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBib3JkZXItMSBib3JkZXItZ3JheS0xMDAgcC00IHJvdW5kZWQtbWQgc2hhZG93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBtYi0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1lZGl1bSAtbWItMVwiPkJpZW52ZW51ZSA8c3BhbiBjbGFzcz1cInRleHQtcHJpbWFyeVwiPnt7IHByZW5vbSB9fTwvc3Bhbj4sPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS01MDAgZm9udC1tZWRpdW0gdHJhY2tpbmctdGlnaHRcIj57eyBlbWFpbCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwiYmctZ3JheS0xMDAgYmxvY2sgcC0zIHJvdW5kZWQtbWQgZm9udC1zZW1pYm9sZCB0ZXh0LXNtIHRleHQtY2VudGVyXCI+XG4gICAgICAgIERlY29ubmV4aW9uXG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgc2V0dXA+XG4gIGltcG9ydCB7IEhvdXNlLCBTZWFyY2gsIFVzZXJzLCBUYWdzLCBLZXlSb3VuZCwgQ29nLCBCYWRnZVF1ZXN0aW9uTWFyaywgVGVybWluYWwgfSBmcm9tICdsdWNpZGUtdnVlLW5leHQnO1xuICBpbXBvcnQge3JlZiwgY29tcHV0ZWQsIG9uTW91bnRlZH0gZnJvbSAndnVlJztcbiAgaW1wb3J0IENvbW1hbmQgZnJvbSBcIi4uL0FkbWluaXN0cmF0aW9uL0NvbW1hbmQudnVlXCI7XG5cbiAgY29uc3QgeyBlbWFpbCwgcHJlbm9tIH0gPSBkZWZpbmVQcm9wcyhbXCJlbWFpbFwiLCBcInByZW5vbVwiXSk7XG4gIGNvbnN0IGN1cnJlbnRQYXRoID0gcmVmKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7XG5cbiAgY29uc3QgaGFzU3ViUGF0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gY3VycmVudFBhdGgudmFsdWUgIT09ICcvYmFja29mZmljZScgJiYgY3VycmVudFBhdGgudmFsdWUuc3RhcnRzV2l0aCgnL2JhY2tvZmZpY2UnKTtcbiAgfSk7XG5cbiAgY29uc3QgaXNBY3RpdmUgPSAocGF0aCkgPT4ge1xuICAgIHJldHVybiBjdXJyZW50UGF0aC52YWx1ZS5zdGFydHNXaXRoKHBhdGgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4ubGluay1hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmNGY2O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIG14LVs1dnddIG15LVszMHB4XVwiPlxuICAgIDwhLS0gSGVhZGVyIEJhbm5lciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLWluc2V0LTIgcm91bmRlZC1bY2FsYyh2YXIoLS1yYWRpdXMteGwpK2NhbGModmFyKC0tc3BhY2luZykqMikpXSBzaGFkb3cteHMgcmluZy0xIHJpbmctYmxhY2svNVwiIC8+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBiZy1jdXN0b20tcGF0dGVybiByb3VuZGVkLXhsIHNoYWRvdy0yeGwgcmluZy0xIHJpbmctd2hpdGUvMTAgcC1bNDBweF1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LVsxNjBweF1cIj5cbiAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy9sb2dvLnBuZ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZFwiPlRhYmxlYXUgZGUgYm9yZCBkJ2FkbWluaXN0cmF0aW9uPC9oMT5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWdyYXktMzAwIHRleHQtcmlnaHRcIj5CaWVudmVudWUgZGFucyBsJ2ludGVyZmFjZSBkJ2FkbWluaXN0cmF0aW9uPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibXgtWzV2d10gbXktWzMwcHhdXCI+XG4gICAgPCEtLSBRdWljayBBY3Rpb25zIFNlY3Rpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cIm10LThcIj5cbiAgICAgIDxEYXNoYm9hcmRRdWlja0FjdGlvbnMgLz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTWFpbiBDb250ZW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtdC04IGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTYgbGc6Z3JpZC1jb2xzLTNcIj5cbiAgICAgIDwhLS0gTGVmdCBDb2x1bW46IFN0YXRpc3RpY3MgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwibGc6Y29sLXNwYW4tMVwiPlxuICAgICAgICA8RGFzaGJvYXJkU3RhdHMgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFJpZ2h0IENvbHVtbjogQWN0aXZpdHkgTG9ncyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZzpjb2wtc3Bhbi0yXCI+XG4gICAgICAgIDxEYXNoYm9hcmRBY3Rpdml0eUxvZ3MgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBZGRpdGlvbmFsIENhcmRzIFNlY3Rpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cIm10LTggZ3JpZCBncmlkLWNvbHMtMSBnYXAtNiBzbTpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtM1wiPlxuICAgICAgPCEtLSBMaWNlbmNlcyBDYXJkIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIGJnLXdoaXRlIHNoYWRvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC01XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LWluZGlnby02MDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNMTUgNXYybTAgNHYybTAgNHYyTTUgNWEyIDIgMCAwMC0yIDJ2M2EyIDIgMCAxMTAgNHYzYTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0ydi0zYTIgMiAwIDExMC00VjdhMiAyIDAgMDAtMi0ySDV6XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC01IHctMCBmbGV4LTFcIj5cbiAgICAgICAgICAgICAgPGRsPlxuICAgICAgICAgICAgICAgIDxkdCBjbGFzcz1cInRydW5jYXRlIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMFwiPkxpY2VuY2VzPC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+R2VzdGlvbiBkZXMgbGljZW5jZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS01MCBweC01IHB5LTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi9hZG1pbmlzdHJhdGlvbi9saWNlbmNlc1wiIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1pbmRpZ28tNzAwIGhvdmVyOnRleHQtaW5kaWdvLTkwMFwiPkFjY8OpZGVyPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFBsdWdpbiBWZXJzaW9ucyBDYXJkIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIGJnLXdoaXRlIHNoYWRvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC01XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LWdyZWVuLTYwMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk05IDVIN2EyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJNOSA1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTUgdy0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+VmVyc2lvbnMgZHUgUGx1Z2luPC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+R2VzdGlvbiBkZXMgdmVyc2lvbnM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS01MCBweC01IHB5LTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi9hZG1pbmlzdHJhdGlvbi9wbHVnaW4tdmVyc2lvbnNcIiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtaW5kaWdvLTcwMCBob3Zlcjp0ZXh0LWluZGlnby05MDBcIj5BY2PDqWRlcjwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBBY3Rpdml0eSBMb2dzIENhcmQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYmctd2hpdGUgc2hhZG93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtcHVycGxlLTYwMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk0xOSAxMUg1bTE0IDBhMiAyIDAgMDEyIDJ2NmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ2LTZhMiAyIDAgMDEyLTJtMTQgMFY5YTIgMiAwIDAwLTItMk01IDExVjlhMiAyIDAgMDEyLTJtMCAwVjVhMiAyIDAgMDEyLTJoNmEyIDIgMCAwMTIgMnYyTTcgN2gxMFwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNSB3LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5Mb2dzIGQnYWN0aXZpdMOpPC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+SGlzdG9yaXF1ZSBkZXMgYWN0aW9uczwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LTUwIHB4LTUgcHktM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiL2FkbWluaXN0cmF0aW9uL2xvZ3NcIiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtaW5kaWdvLTcwMCBob3Zlcjp0ZXh0LWluZGlnby05MDBcIj5BY2PDqWRlcjwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwPlxuaW1wb3J0IERhc2hib2FyZFF1aWNrQWN0aW9ucyBmcm9tICcuL0Rhc2hib2FyZFF1aWNrQWN0aW9ucy52dWUnO1xuaW1wb3J0IERhc2hib2FyZFN0YXRzIGZyb20gJy4vRGFzaGJvYXJkU3RhdHMudnVlJztcbmltcG9ydCBEYXNoYm9hcmRBY3Rpdml0eUxvZ3MgZnJvbSAnLi9EYXNoYm9hcmRBY3Rpdml0eUxvZ3MudnVlJztcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuICAuYmctY3VzdG9tLXBhdHRlcm4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyQTBFMEU7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAxLjVweCwgdHJhbnNwYXJlbnQgMCk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAyMHB4IDIwcHg7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTVweCAtNXB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwibXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzbTpmbGV4IHNtOml0ZW1zLWNlbnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNtOmZsZXgtYXV0b1wiPlxuICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZCBsZWFkaW5nLTYgdGV4dC1ncmF5LTkwMFwiPlRhYmxlYXUgZGUgYm9yZDwvaDE+XG4gICAgICAgIDxwIGNsYXNzPVwibXQtMiB0ZXh0LXNtIHRleHQtZ3JheS03MDBcIj5WdWUgZCdlbnNlbWJsZSBkZSBsJ2FjdGl2aXTDqSBldCBhY2PDqHMgcmFwaWRlIGF1eCBwcmluY2lwYWxlcyBzZWN0aW9ucy48L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUXVpY2sgQ1RBcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNiBncmlkIGdyaWQtY29scy0xIGdhcC00IHNtOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00XCI+XG4gICAgICA8YSBocmVmPVwiL2JhY2tvZmZpY2UvdXRpbGlzYXRldXJzXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGJnLXdoaXRlIHAtNCBzaGFkb3ctc20gaG92ZXI6c2hhZG93IHRyYW5zaXRpb25cIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlV0aWxpc2F0ZXVyczwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTEgdGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDBcIj5Hw6lyZXI8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctaW5kaWdvLTUwIHAtMyB0ZXh0LWluZGlnby02MDBcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLXVzZXJzXCI+PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiL2JhY2tvZmZpY2UvbGljZW5jZXNcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgcC00IHNoYWRvdy1zbSBob3ZlcjpzaGFkb3cgdHJhbnNpdGlvblwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+TGljZW5jZXM8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC0xIHRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwXCI+R8OpcmVyPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJnLWdyZWVuLTUwIHAtMyB0ZXh0LWdyZWVuLTYwMFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEta2V5XCI+PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiL2JhY2tvZmZpY2UvdmVyc2lvbnNcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgcC00IHNoYWRvdy1zbSBob3ZlcjpzaGFkb3cgdHJhbnNpdGlvblwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+VmVyc2lvbnM8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC0xIHRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwXCI+R8OpcmVyPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJnLWFtYmVyLTUwIHAtMyB0ZXh0LWFtYmVyLTYwMFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtdGFnc1wiPjwvaT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cIi9iYWNrb2ZmaWNlL2xvZ3NcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgcC00IHNoYWRvdy1zbSBob3ZlcjpzaGFkb3cgdHJhbnNpdGlvblwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+TG9nczwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTEgdGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDBcIj5Wb2lyPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJnLXNsYXRlLTUwIHAtMyB0ZXh0LXNsYXRlLTYwMFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtdGVybWluYWxcIj48L2k+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gS1BJcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNiBncmlkIGdyaWQtY29scy0xIGdhcC00IHNtOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYmctd2hpdGUgcHgtNCBweS01IHNoYWRvdyBzbTpwLTZcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+VXRpbGlzYXRldXJzPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwibXQtMSB0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0IHRleHQtZ3JheS05MDBcIj57eyBsb2FkaW5nID8gJy4uLicgOiAoc3RhdHMub3ZlcnZpZXcudG90YWxVc2VycyA/PyAwKSB9fTwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBiZy13aGl0ZSBweC00IHB5LTUgc2hhZG93IHNtOnAtNlwiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5MaWNlbmNlczwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cIm10LTEgdGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwXCI+e3sgbG9hZGluZyA/ICcuLi4nIDogKHN0YXRzLm92ZXJ2aWV3LnRvdGFsTGljZW5jZXMgPz8gMCkgfX08L2RkPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYmctd2hpdGUgcHgtNCBweS01IHNoYWRvdyBzbTpwLTZcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+RMOpbW9zIGFjdGl2ZXM8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJtdC0xIHRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMFwiPnt7IGxvYWRpbmcgPyAnLi4uJyA6IChzdGF0cy5vdmVydmlldy5hY3RpdmVEZW1vcyA/PyAwKSB9fTwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBiZy13aGl0ZSBweC00IHB5LTUgc2hhZG93IHNtOnAtNlwiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5Ew6ltb3MgYXVqb3VyZCdodWk8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJtdC0xIHRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMFwiPnt7IGxvYWRpbmcgPyAnLi4uJyA6IChzdGF0cy5vdmVydmlldy5kZW1vc1RvZGF5ID8/IDApIH19PC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA3LWRheSBjaGFydCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNiByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNiBzaGFkb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbGVhZGluZy02IHRleHQtZ3JheS05MDBcIj5Ew6ltb3MgYWN0aXbDqWVzIHBhciBqb3VyICg3IGpvdXJzKTwvaDM+XG4gICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5Ub3RhbDoge3sgdG90YWxTZXJpZXNDb3VudCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXQtNlwiIHYtaWY9XCIhbG9hZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtNyBnYXAtMyBpdGVtcy1lbmRcIiBzdHlsZT1cImhlaWdodDogMTYwcHg7XCI+XG4gICAgICAgICAgPGRpdiB2LWZvcj1cIihwb2ludCwgaWR4KSBpbiBzdGF0cy5zZXJpZXNcIiA6a2V5PVwiaWR4XCIgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCByb3VuZGVkLXQgYmctaW5kaWdvLTUwMCB0cmFuc2l0aW9uLWFsbFwiIDpzdHlsZT1cInsgaGVpZ2h0OiBiYXJIZWlnaHQocG9pbnQuY291bnQpIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIHRleHQteHMgdGV4dC1ncmF5LTUwMFwiPnt7IGZvcm1hdERhdGUocG9pbnQuZGF0ZSkgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS05MDAgZm9udC1tZWRpdW1cIj57eyBwb2ludC5jb3VudCB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xMCB0ZXh0LWdyYXktNTAwXCI+Q2hhcmdlbWVudCBkZXMgc3RhdGlzdGlxdWVzLi4uPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbmltcG9ydCB7IG9uTW91bnRlZCwgcmVhY3RpdmUsIHJlZiwgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG5jb25zdCBsb2FkaW5nID0gcmVmKHRydWUpO1xuY29uc3Qgc3RhdHMgPSByZWFjdGl2ZSh7XG4gIG92ZXJ2aWV3OiB7IHRvdGFsVXNlcnM6IDAsIHRvdGFsTGljZW5jZXM6IDAsIGFjdGl2ZURlbW9zOiAwLCBkZW1vc1RvZGF5OiAwIH0sXG4gIHNlcmllczogW10sXG4gIG1heDogMCxcbn0pO1xuXG5jb25zdCBmZXRjaFN0YXRzID0gYXN5bmMgKCkgPT4ge1xuICBsb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2JhY2tvZmZpY2UvYXBpL3N0YXRzL2Rhc2hib2FyZCcsIHtcbiAgICAgIGhlYWRlcnM6IHsgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicsXG4gICAgfSk7XG4gICAgaWYgKCFyZXMub2spIHRocm93IG5ldyBFcnJvcignRXJyZXVyIEFQSScpO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuICAgIHN0YXRzLm92ZXJ2aWV3ID0gZGF0YS5vdmVydmlldyB8fCBzdGF0cy5vdmVydmlldztcbiAgICBzdGF0cy5zZXJpZXMgPSBkYXRhLnNlcmllcyB8fCBbXTtcbiAgICBzdGF0cy5tYXggPSBkYXRhLm1heCB8fCAwO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCBkZXMgc3RhdHMnLCBlKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBsb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gIH1cbn07XG5cbmNvbnN0IHRvdGFsU2VyaWVzQ291bnQgPSBjb21wdXRlZCgoKSA9PiBzdGF0cy5zZXJpZXMucmVkdWNlKChhY2MsIHApID0+IGFjYyArIChwLmNvdW50IHx8IDApLCAwKSk7XG5cbmNvbnN0IGJhckhlaWdodCA9IChjb3VudCkgPT4ge1xuICBjb25zdCBtYXggPSBNYXRoLm1heCgxLCBzdGF0cy5tYXggfHwgMSk7XG4gIGNvbnN0IHBjdCA9IE1hdGgucm91bmQoKGNvdW50IC8gbWF4KSAqIDEwMCk7XG4gIC8vIG1pbiBoZWlnaHQgc28gYmFycyBhcmUgdmlzaWJsZSB3aGVuIGNvdW50ID4gMFxuICBjb25zdCBweCA9IE1hdGgubWF4KDQsIE1hdGgucm91bmQoKGNvdW50IC8gbWF4KSAqIDEzMCkpO1xuICByZXR1cm4gcHggKyAncHgnO1xufTtcblxuY29uc3QgZm9ybWF0RGF0ZSA9IChpc29EYXRlKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGlzb0RhdGUgKyAnVDAwOjAwOjAwJyk7XG4gICAgcmV0dXJuIGQudG9Mb2NhbGVEYXRlU3RyaW5nKCdmci1GUicsIHsgZGF5OiAnMi1kaWdpdCcsIG1vbnRoOiAnMi1kaWdpdCcgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gaXNvRGF0ZTtcbiAgfVxufTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgZmV0Y2hTdGF0cygpO1xufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5saW5rLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgxNCwgMTUsIDE4LCAwLjA4KSwgMCAycHggNHB4IHJnYmEoMTQsMTUsMTgsMC4wOCksIDAgNnB4IDEycHggcmdiYSgxNCwxNSwxOCwwLjA4KTtcbn1cbjwvc3R5bGU+XG4iLCIucmVzaXplLW9ic2VydmVyW2RhdGEtdi1iMzI5ZWU0Y117cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3otaW5kZXg6LTE7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3BvaW50ZXItZXZlbnRzOm5vbmU7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47b3BhY2l0eTowfS5yZXNpemUtb2JzZXJ2ZXJbZGF0YS12LWIzMjllZTRjXSBvYmplY3R7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4Oi0xfS52LXBvcHBlcl9fcG9wcGVye3otaW5kZXg6MTAwMDA7dG9wOjA7bGVmdDowO291dGxpbmU6bm9uZX0udi1wb3BwZXJfX3BvcHBlci52LXBvcHBlcl9fcG9wcGVyLS1oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW47b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzLHZpc2liaWxpdHkgLjE1cztwb2ludGVyLWV2ZW50czpub25lfS52LXBvcHBlcl9fcG9wcGVyLnYtcG9wcGVyX19wb3BwZXItLXNob3due3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjE7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXN9LnYtcG9wcGVyX19wb3BwZXIudi1wb3BwZXJfX3BvcHBlci0tc2tpcC10cmFuc2l0aW9uLC52LXBvcHBlcl9fcG9wcGVyLnYtcG9wcGVyX19wb3BwZXItLXNraXAtdHJhbnNpdGlvbj4udi1wb3BwZXJfX3dyYXBwZXJ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0udi1wb3BwZXJfX2JhY2tkcm9we3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6bm9uZX0udi1wb3BwZXJfX2lubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdy15OmF1dG99LnYtcG9wcGVyX19pbm5lcj5kaXZ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxO21heC13aWR0aDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0udi1wb3BwZXJfX2Fycm93LWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMHB4O2hlaWdodDoxMHB4fS52LXBvcHBlcl9fcG9wcGVyLS1hcnJvdy1vdmVyZmxvdyAudi1wb3BwZXJfX2Fycm93LWNvbnRhaW5lciwudi1wb3BwZXJfX3BvcHBlci0tbm8tcG9zaXRpb25pbmcgLnYtcG9wcGVyX19hcnJvdy1jb250YWluZXJ7ZGlzcGxheTpub25lfS52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItc3R5bGU6c29saWQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjA7aGVpZ2h0OjB9LnYtcG9wcGVyX19hcnJvdy1pbm5lcnt2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXItd2lkdGg6N3B4fS52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXdpZHRoOjZweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWJvdHRvbV0gLnYtcG9wcGVyX19hcnJvdy1pbm5lcntsZWZ0Oi0ycHh9LnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj10b3BdIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7bGVmdDotMXB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXSAudi1wb3BwZXJfX2Fycm93LWlubmVyLC52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXSAudi1wb3BwZXJfX2Fycm93LW91dGVye2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItbGVmdC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lcnt0b3A6LTJweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWJvdHRvbV0gLnYtcG9wcGVyX19hcnJvdy1jb250YWluZXJ7dG9wOjB9LnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItcmlnaHQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAudi1wb3BwZXJfX2Fycm93LWlubmVye3RvcDotNHB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAudi1wb3BwZXJfX2Fycm93LW91dGVye3RvcDotNnB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LWlubmVye3RvcDotMnB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1vdXRlciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LW91dGVye3RvcDotMXB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49cmlnaHRdIC52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1yaWdodF0gLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LWlubmVye2xlZnQ6LTRweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LW91dGVye2xlZnQ6LTZweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctY29udGFpbmVye3JpZ2h0Oi0xMHB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLXRvcC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctaW5uZXJ7bGVmdDotMnB4fS52LXBvcHBlci0tdGhlbWUtdG9vbHRpcCAudi1wb3BwZXJfX2lubmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuOCk7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjdweCAxMnB4IDZweH0udi1wb3BwZXItLXRoZW1lLXRvb2x0aXAgLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItY29sb3I6IzAwMGN9LnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2lubmVye2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoxcHggc29saWQgI2RkZDtib3gtc2hhZG93OjAgNnB4IDMwcHggIzAwMDAwMDFhfS52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24gLnYtcG9wcGVyX19hcnJvdy1pbm5lcnt2aXNpYmlsaXR5OnZpc2libGU7Ym9yZGVyLWNvbG9yOiNmZmZ9LnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2Fycm93LW91dGVye2JvcmRlci1jb2xvcjojZGRkfVxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiaGVhdG1hcFwiIDpzdHlsZT1cInJvb3RTdHlsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzcGFjZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGhzXCIgOnN0eWxlPVwieyBncmlkVGVtcGxhdGVDb2x1bW5zOiBgcmVwZWF0KCR7d2Vla3MubGVuZ3RofSwgMWZyKWAgfVwiPlxuICAgICAgPHNwYW4gdi1mb3I9XCIobGFiZWwsIGkpIGluIG1vbnRoTGFiZWxzXCIgOmtleT1cImlcIiBjbGFzcz1cIm1vbnRoIGNhcGl0YWxpemVcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ5LWxhYmVsc1wiPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPHNwYW4+TDwvc3Bhbj5cbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuPk08L3NwYW4+XG4gICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8c3Bhbj5WPC9zcGFuPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdyaWRcIiA6c3R5bGU9XCJ7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHt3ZWVrcy5sZW5ndGh9LCAxZnIpYCB9XCI+XG4gICAgICA8ZGl2IHYtZm9yPVwiKHdlZWssIHdJZHgpIGluIHdlZWtzXCIgOmtleT1cIndJZHhcIiBjbGFzcz1cIndlZWtcIj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgdi1mb3I9XCIoZGF5LCBkSWR4KSBpbiB3ZWVrXCJcbiAgICAgICAgICAgICAgOmtleT1cImRJZHhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNlbGwgcmVsYXRpdmVcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJgbGV2ZWwtJHtsZXZlbEZvcihkYXkuY291bnQpfSAke3Rvb2x0aXBVc2UoZGF5KSA9PSAnJyA/ICdoaWRkZW4nIDogJycgfWBcIlxuICAgICAgICAgICAgICBAY2xpY2s9XCIkZW1pdCgnZGF5LWNsaWNrJywgZGF5KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRvb2x0aXAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cmFuc3BhcmVudCBjdXJzb3ItcG9pbnRlclwiPnRlc3Q8L3NwYW4+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjcG9wcGVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTEgdGV4dC1jZW50ZXJcIj57eyB0b29sdGlwVXNlKGRheSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LWNlbnRlclwiPnt7IHRvb2x0aXBEYXRlKGRheSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGVnZW5kXCIgOnN0eWxlPVwicm9vdFN0eWxlXCI+XG4gICAgPHNwYW4+TW9pbnM8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTBcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTFcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTJcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTNcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTRcIj48L3NwYW4+XG4gICAgPHNwYW4+UGx1czwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBEcm9wZG93biwgVG9vbHRpcCwgTWVudSwgdlRvb2x0aXAgfSBmcm9tICdmbG9hdGluZy12dWUnXG5pbXBvcnQgJ2Zsb2F0aW5nLXZ1ZS9kaXN0L3N0eWxlLmNzcydcblxudHlwZSBDb3VudHNNYXAgPSBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuXG5pbnRlcmZhY2UgRGF5Q2VsbCB7XG4gIGRhdGVJU086IHN0cmluZztcbiAgY291bnQ6IG51bWJlcjtcbn1cblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XG4gIHVzZXJJZD86IG51bWJlciB8IHN0cmluZztcbiAgZGF5cz86IG51bWJlcjtcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIGJhc2VDb2xvcj86IHN0cmluZztcbn0+KCk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAnbG9hZGVkJyk6IHZvaWQ7XG4gIChlOiAnZGF5LWNsaWNrJywgZGF5OiBEYXlDZWxsKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IGVuZHBvaW50ID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZW5kcG9pbnQgPz8gJy9hcGkvYWN0aXZpdHkvaGVhdG1hcCcpO1xuY29uc3QgZGF5cyA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmRheXMgPz8gMzcxKTtcbmNvbnN0IGJhc2VDb2xvciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmJhc2VDb2xvciA/PyAnIzRjOGJmZCcpO1xuXG5jb25zdCBsb2FkaW5nID0gcmVmKGZhbHNlKTtcbmNvbnN0IHN0YXJ0SVNPID0gcmVmKCcnKTtcbmNvbnN0IGVuZElTTyA9IHJlZignJyk7XG5jb25zdCBtYXhDb3VudCA9IHJlZigwKTtcbmNvbnN0IGNvdW50cyA9IHJlZjxDb3VudHNNYXA+KHt9KTtcblxub25Nb3VudGVkKGxvYWQpO1xud2F0Y2goW2VuZHBvaW50LCBkYXlzLCAoKSA9PiBwcm9wcy51c2VySWRdLCBsb2FkKTtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZCgpIHtcbiAgaWYgKHByb3BzLnVzZXJJZCkge1xuICAgIGxvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgIGNvbnN0IHFzID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IGRheXM6IFN0cmluZyhkYXlzLnZhbHVlKSB9KTtcbiAgICBpZiAocHJvcHMudXNlcklkICE9IG51bGwpIHFzLnNldCgndXNlcklkJywgU3RyaW5nKHByb3BzLnVzZXJJZCkpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7ZW5kcG9pbnQudmFsdWV9PyR7cXMudG9TdHJpbmcoKX1gLCB7IGNyZWRlbnRpYWxzOiAnaW5jbHVkZScgfSk7XG4gICAgY29uc3QganNvbiA9IGF3YWl0IHJlcy5qc29uKCk7XG5cbiAgICBzdGFydElTTy52YWx1ZSA9IGpzb24uc3RhcnQ7XG4gICAgZW5kSVNPLnZhbHVlID0ganNvbi5lbmQ7XG4gICAgY291bnRzLnZhbHVlID0ganNvbi5jb3VudHMgPz8ge307XG4gICAgbWF4Q291bnQudmFsdWUgPSBqc29uLm1heCA/PyAwO1xuICAgIGxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICBlbWl0KCdsb2FkZWQnKTtcbiAgfVxufVxuXG5jb25zdCB3ZWVrU3RhcnRzID0gY29tcHV0ZWQ8RGF0ZVtdPigoKSA9PiB7XG4gIGlmICghc3RhcnRJU08udmFsdWUgfHwgIWVuZElTTy52YWx1ZSkgcmV0dXJuIFtdO1xuICBjb25zdCBhcnI6IERhdGVbXSA9IFtdO1xuICBjb25zdCBlbmQgPSBkYXRlRnJvbUlTTyhlbmRJU08udmFsdWUpO1xuICBmb3IgKGxldCBkID0gZGF0ZUZyb21JU08oc3RhcnRJU08udmFsdWUpOyBkIDw9IGVuZDsgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgNykpIHtcbiAgICBhcnIucHVzaChuZXcgRGF0ZShkKSk7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn0pO1xuXG5jb25zdCBtb250aExhYmVscyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB7XG4gIHJldHVybiB3ZWVrU3RhcnRzLnZhbHVlLm1hcCgod3MpID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHdzKTtcbiAgICAgIGQuc2V0RGF0ZShkLmdldERhdGUoKSArIGkpO1xuICAgICAgaWYgKGQuZ2V0RGF0ZSgpID09PSAxKSB7XG4gICAgICAgIHJldHVybiBkLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtb250aDogJ3Nob3J0JyB9KS5zbGljZSgwLCAyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBkYXRlRnJvbUlTTyhpc286IHN0cmluZyk6IERhdGUge1xuICBjb25zdCBbeSwgbSwgZF0gPSBpc28uc3BsaXQoJy0nKS5tYXAoTnVtYmVyKTtcbiAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHksIG0gLSAxLCBkKSk7XG59XG5cbmNvbnN0IGFsbERheXMgPSBjb21wdXRlZDxEYXlDZWxsW10+KCgpID0+IHtcbiAgaWYgKCFzdGFydElTTy52YWx1ZSB8fCAhZW5kSVNPLnZhbHVlKSByZXR1cm4gW107XG4gIGNvbnN0IG91dDogRGF5Q2VsbFtdID0gW107XG4gIGNvbnN0IHN0YXJ0ID0gZGF0ZUZyb21JU08oc3RhcnRJU08udmFsdWUpO1xuICBjb25zdCBlbmQgPSBkYXRlRnJvbUlTTyhlbmRJU08udmFsdWUpO1xuXG4gIGZvciAobGV0IGQgPSBzdGFydDsgZCA8PSBlbmQ7IGQuc2V0VVRDRGF0ZShkLmdldFVUQ0RhdGUoKSArIDEpKSB7XG4gICAgY29uc3QgaXNvID0gZC50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTtcbiAgICBjb25zb2xlLmxvZyhkLCBpc28pO1xuICAgIG91dC5wdXNoKHsgZGF0ZUlTTzogaXNvLCBjb3VudDogY291bnRzLnZhbHVlW2lzb10gPz8gMCB9KTtcbiAgfVxuICByZXR1cm4gb3V0O1xufSk7XG5cbmNvbnN0IHdlZWtzID0gY29tcHV0ZWQ8RGF5Q2VsbFtdW10+KCgpID0+IHtcbiAgY29uc3QgcmVzOiBEYXlDZWxsW11bXSA9IFtdO1xuICBsZXQgdzogRGF5Q2VsbFtdID0gW107XG4gIGFsbERheXMudmFsdWUuZm9yRWFjaCgoZGF5LCBpZHgpID0+IHtcbiAgICBjb25zdCBqc0RhdGUgPSBkYXRlRnJvbUlTTyhkYXkuZGF0ZUlTTyk7XG4gICAgY29uc3QgaXNTdW5kYXkgPSBqc0RhdGUuZ2V0RGF5KCkgPT09IDA7XG4gICAgaWYgKGlkeCA9PT0gMCkge1xuICAgICAgdyA9IFtdO1xuICAgIH0gZWxzZSBpZiAoaXNTdW5kYXkpIHtcbiAgICAgIHJlcy5wdXNoKHcpO1xuICAgICAgdyA9IFtdO1xuICAgIH1cbiAgICB3W2pzRGF0ZS5nZXREYXkoKV0gPSBkYXk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIGlmICghd1tpXSkgd1tpXSA9IHsgZGF0ZUlTTzogJycsIGNvdW50OiAwIH07XG4gIH0pO1xuICBpZiAody5sZW5ndGgpIHJlcy5wdXNoKHcpO1xuICByZXR1cm4gcmVzO1xufSk7XG5cbmZ1bmN0aW9uIGxldmVsRm9yKGNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIDA7XG4gIGlmIChtYXhDb3VudC52YWx1ZSA8PSAwKSByZXR1cm4gMDtcbiAgY29uc3QgcmF0aW8gPSBjb3VudCAvIG1heENvdW50LnZhbHVlO1xuICBpZiAocmF0aW8gPiAwLjc1KSByZXR1cm4gNDtcbiAgaWYgKHJhdGlvID4gMC41KSByZXR1cm4gMztcbiAgaWYgKHJhdGlvID4gMC4yNSkgcmV0dXJuIDI7XG4gIHJldHVybiAxO1xufVxuXG5mdW5jdGlvbiB0b29sdGlwVXNlKGRheTogRGF5Q2VsbCk6IHN0cmluZyB7XG4gIGlmICghZGF5LmRhdGVJU08pIHJldHVybiAnJztcbiAgcmV0dXJuIGAke2RheS5jb3VudH0gdXRpbGlzYXRpb24ke2RheS5jb3VudCA+IDEgPyAncycgOiAnJ31gO1xufVxuXG5mdW5jdGlvbiB0b29sdGlwRGF0ZShkYXk6IERheUNlbGwpOiBzdHJpbmcge1xuICBpZiAoIWRheS5kYXRlSVNPKSByZXR1cm4gJyc7XG4gIHJldHVybiBgTGUgJHtuZXcgRGF0ZShkYXkuZGF0ZUlTTykudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YDtcbn1cblxuY29uc3QgdG9kYXlJU08gPSBjb21wdXRlZCgoKSA9PiB0b1lNRChuZXcgRGF0ZSgpKSk7XG5jb25zdCB6ID0gKG46IG51bWJlcikgPT4gKG4gPCAxMCA/IGAwJHtufWAgOiBTdHJpbmcobikpO1xuY29uc3QgdG9ZTUQgPSAoZDogRGF0ZSkgPT4gYCR7ZC5nZXRGdWxsWWVhcigpfS0ke3ooZC5nZXRNb250aCgpICsgMSl9LSR7eihkLmdldERhdGUoKSl9YDtcblxuZnVuY3Rpb24gaXNGdXR1cmUoZGF5OiB7IGRhdGVJU086IHN0cmluZzsgY291bnQ6IG51bWJlciB9KSB7XG4gIHJldHVybiAhIWRheS5kYXRlSVNPICYmIGRheS5kYXRlSVNPID4gdG9kYXlJU08udmFsdWU7XG59XG5cbi8vIHJvb3QgQ1NTIHZhcmlhYmxlc1xuZnVuY3Rpb24gaGV4VG9SZ2IoaGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBoID0gaGV4LnJlcGxhY2UoJyMnLCAnJyk7XG4gIGNvbnN0IGJpZ2ludCA9IHBhcnNlSW50KGgubGVuZ3RoID09PSAzID8gaC5zcGxpdCgnJykubWFwKGMgPT4gYyArIGMpLmpvaW4oJycpIDogaCwgMTYpO1xuICBjb25zdCByID0gKGJpZ2ludCA+PiAxNikgJiAyNTU7XG4gIGNvbnN0IGcgPSAoYmlnaW50ID4+IDgpICYgMjU1O1xuICBjb25zdCBiID0gYmlnaW50ICYgMjU1O1xuICByZXR1cm4gYCR7cn0sICR7Z30sICR7Yn1gO1xufVxuY29uc3Qgcm9vdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHsgJy0tYmFzZS1yZ2InOiBoZXhUb1JnYihiYXNlQ29sb3IudmFsdWUpIH0gYXMgYW55KSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5oZWF0bWFwIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjsgLyogMTogbGFiZWxzIFksIDI6IGNvbnRlbnUgKi9cbiAgZ3JpZC1hdXRvLXJvd3M6IGF1dG87XG4gIHJvdy1nYXA6IDNweDtcbiAgY29sdW1uLWdhcDogM3B4O1xuICAtLWNlbGwtc2l6ZTogMTUuNXB4O1xuICAtLWdhcDogMnB4O1xuICAtLWJhc2UtcmdiOiA3NiwgMTM5LCAyNTM7XG59XG5cbi8qIGNlbGx1bGUgdmlkZSBlbiBoYXV0IMOgIGdhdWNoZSBwb3VyIGFsaWduZXIgbOKAmWVuLXTDqnRlICovXG4uc3BhY2VyIHsgaGVpZ2h0OiAxLjJlbTsgfVxuXG4vKiByYW5nw6llIGRlcyBtb2lzICovXG4ubW9udGhzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1nYXApO1xuICBoZWlnaHQ6IDEuMmVtO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGNvbG9yOiAjOWFhMGE2O1xufVxuLm1vbnRoIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKiBsZSByZXN0ZSBpbmNoYW5nw6kgKi9cbi55LWxhYmVscyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KDcsIHZhcigtLWNlbGwtc2l6ZSkpO1xuICBnYXA6IHZhcigtLWdhcCk7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgY29sb3I6ICM5YWEwYTY7XG4gIG1hcmdpbi1yaWdodDogMnB4O1xufVxuLmdyaWQgeyBkaXNwbGF5OiBncmlkOyBncmlkLWF1dG8tZmxvdzogY29sdW1uOyBnYXA6IHZhcigtLWdhcCk7IH1cbi53ZWVrIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoNywgdmFyKC0tY2VsbC1zaXplKSk7IGdhcDogdmFyKC0tZ2FwKTsgfVxuLmNlbGwgeyB3aWR0aDogdmFyKC0tY2VsbC1zaXplKTsgaGVpZ2h0OiB2YXIoLS1jZWxsLXNpemUpOyBib3JkZXItcmFkaXVzOiAycHg7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMCk7IH1cbi5jZWxsLmxldmVsLTAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQwLCAzOSwgNDYsIDAuNCk7IH1cbi5jZWxsLmxldmVsLTEgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC4yNSk7IH1cbi5jZWxsLmxldmVsLTIgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC40NSk7IH1cbi5jZWxsLmxldmVsLTMgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC42NSk7IH1cbi5jZWxsLmxldmVsLTQgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC45KTsgfVxuXG4uY2VsbDpob3ZlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC40KTtcbn1cblxuLmxlZ2VuZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBtYXJnaW4tdG9wOiA4cHg7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM5YWEwYTY7IH1cbi5sZWdlbmQgLmNlbGwgeyB3aWR0aDogMTJweDsgaGVpZ2h0OiAxMnB4OyB9XG5cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwPlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHsgcmVmLCBjb21wdXRlZCwgb25Nb3VudGVkLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IERpYWxvZywgRGlhbG9nUGFuZWwsIERpYWxvZ1RpdGxlLCBUcmFuc2l0aW9uQ2hpbGQsIFRyYW5zaXRpb25Sb290IH0gZnJvbSBcIkBoZWFkbGVzc3VpL3Z1ZVwiO1xuaW1wb3J0IHsgWE1hcmtJY29uLCBNYWduaWZ5aW5nR2xhc3NJY29uLCBGdW5uZWxJY29uIH0gZnJvbSAnQGhlcm9pY29ucy92dWUvMjAvc29saWQnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC5kZWJvdW5jZSc7XG5cbmNvbnN0IHVzZXJzID0gcmVmKFtdKTtcbmNvbnN0IHRvdGFsID0gcmVmKDApO1xuY29uc3QgbG9hZGluZyA9IHJlZih0cnVlKTtcbmNvbnN0IG9wZW4gPSByZWYoZmFsc2UpO1xuY29uc3QgdXNlclNlbGVjdGVkID0gcmVmKG51bGwpO1xuY29uc3QgY3VycmVudFBhZ2UgPSByZWYoMSk7XG5jb25zdCBpdGVtc1BlclBhZ2UgPSByZWYoMTApO1xuXG4vLyBTZWFyY2ggYW5kIGZpbHRlclxuY29uc3Qgc2VhcmNoUXVlcnkgPSByZWYoJycpO1xuY29uc3Qgc2VsZWN0ZWRMaWNlbnNlVHlwZSA9IHJlZignJyk7XG5jb25zdCBzZWxlY3RlZFJvbGUgPSByZWYoJycpO1xuY29uc3QgYXZhaWxhYmxlTGljZW5zZVR5cGVzID0gcmVmKFtdKTtcbmNvbnN0IGF2YWlsYWJsZVJvbGVzID0gcmVmKFtdKTtcblxuLy8gRGVib3VuY2VkIHNlYXJjaCBmdW5jdGlvblxuY29uc3QgZGVib3VuY2VkU2VhcmNoID0gZGVib3VuY2UoKCkgPT4ge1xuICBmaWx0ZXJVc2VycygpO1xufSwgMzAwKTtcblxuLy8gUGFnaW5hdGlvblxuY29uc3QgdG90YWxQYWdlcyA9IGNvbXB1dGVkKCgpID0+IE1hdGguY2VpbCh0b3RhbC52YWx1ZSAvIGl0ZW1zUGVyUGFnZS52YWx1ZSkpO1xuY29uc3QgcGFnaW5hdGVkVXNlcnMgPSBjb21wdXRlZCgoKSA9PiB1c2Vycy52YWx1ZSk7XG5cbmNvbnN0IGZldGNoVXNlcnMgPSBhc3luYyAoKSA9PiB7XG4gIGxvYWRpbmcudmFsdWUgPSB0cnVlO1xuICB0cnkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3MuZ2V0KCcvYXBpL3VzZXJzJywge1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIHBhZ2U6IGN1cnJlbnRQYWdlLnZhbHVlLFxuICAgICAgICBsaW1pdDogaXRlbXNQZXJQYWdlLnZhbHVlLFxuICAgICAgICBxOiBzZWFyY2hRdWVyeS52YWx1ZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IHNlbGVjdGVkUm9sZS52YWx1ZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGxpY2VuY2VUeXBlOiBzZWxlY3RlZExpY2Vuc2VUeXBlLnZhbHVlIHx8IHVuZGVmaW5lZCxcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1c2Vycy52YWx1ZSA9IGRhdGEuaXRlbXM7XG4gICAgdG90YWwudmFsdWUgPSBkYXRhLnRvdGFsO1xuICAgIGV4dHJhY3RGaWx0ZXJPcHRpb25zKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdXNlcnM6JywgZXJyb3IpO1xuICB9IGZpbmFsbHkge1xuICAgIGxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgfVxufTtcblxuY29uc3QgbmV4dFBhZ2UgPSBhc3luYyAoKSA9PiB7XG4gIGlmIChjdXJyZW50UGFnZS52YWx1ZSA8IHRvdGFsUGFnZXMudmFsdWUpIHtcbiAgICBjdXJyZW50UGFnZS52YWx1ZSsrO1xuICAgIGF3YWl0IGZldGNoVXNlcnMoKTtcbiAgfVxufTtcblxuY29uc3QgcHJldlBhZ2UgPSBhc3luYyAoKSA9PiB7XG4gIGlmIChjdXJyZW50UGFnZS52YWx1ZSA+IDEpIHtcbiAgICBjdXJyZW50UGFnZS52YWx1ZS0tO1xuICAgIGF3YWl0IGZldGNoVXNlcnMoKTtcbiAgfVxufTtcblxuY29uc3QgZ29Ub1BhZ2UgPSBhc3luYyAocGFnZSkgPT4ge1xuICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdG90YWxQYWdlcy52YWx1ZSkge1xuICAgIGN1cnJlbnRQYWdlLnZhbHVlID0gcGFnZTtcbiAgICBhd2FpdCBmZXRjaFVzZXJzKCk7XG4gIH1cbn07XG5cbi8vIEhlbHBlciBmdW5jdGlvbnNcbmNvbnN0IGdldExpY2Vuc2VDb3VudCA9ICh1c2VyKSA9PiB7XG4gIHJldHVybiB1c2VyLmxpY2VuY2VzLmxlbmd0aDtcbn07XG5cbmNvbnN0IGdldExpY2Vuc2VUeXBlID0gKHVzZXIpID0+IHtcbiByZXR1cm4gdXNlci5saWNlbmNlID8gdXNlci5saWNlbmNlLnR5cGUgOiAnQXVjdW5lJ1xufTtcblxuY29uc3QgZ2V0TGFzdENvbm5lY3Rpb24gPSAodXNlcikgPT4ge1xuICBpZiAodXNlci5saWNlbmNlcy5sZW5ndGggPT09IDApIHJldHVybiBcIkphbWFpc1wiO1xuXG4gIC8vIEZpbmQgdGhlIG1vc3QgcmVjZW50IGxhc3RVc2UgZGF0ZVxuICBjb25zdCBsYXN0VXNlRGF0ZXMgPSB1c2VyLmxpY2VuY2VzLm1hcChsaWNlbnNlID0+IHtcbiAgICBjb25zdCBbZGF0ZVBhcnQsIHRpbWVQYXJ0XSA9IGxpY2Vuc2UubGFzdFVzZS5zcGxpdChcIiDDoCBcIik7XG4gICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVBhcnQuc3BsaXQoXCIvXCIpO1xuICAgIGNvbnN0IFtob3VyLCBtaW51dGVdID0gdGltZVBhcnQuc3BsaXQoXCI6XCIpO1xuICAgIHJldHVybiBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1UJHtob3VyfToke21pbnV0ZX06MDBgKTtcbiAgfSk7XG5cbiAgY29uc3QgbW9zdFJlY2VudERhdGUgPSBuZXcgRGF0ZShNYXRoLm1heCguLi5sYXN0VXNlRGF0ZXMubWFwKGRhdGUgPT4gZGF0ZS5nZXRUaW1lKCkpKSk7XG5cbiAgLy8gRm9ybWF0IHRoZSBkYXRlXG4gIGNvbnN0IGRheSA9IG1vc3RSZWNlbnREYXRlLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIGNvbnN0IG1vbnRoID0gKG1vc3RSZWNlbnREYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIGNvbnN0IHllYXIgPSBtb3N0UmVjZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBob3VycyA9IG1vc3RSZWNlbnREYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICBjb25zdCBtaW51dGVzID0gbW9zdFJlY2VudERhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcblxuICByZXR1cm4gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9IMOgICR7aG91cnN9OiR7bWludXRlc31gO1xufTtcblxuLy8gQ2xlYXIgYWxsIGZpbHRlcnNcbmNvbnN0IGNsZWFyRmlsdGVycyA9IGFzeW5jICgpID0+IHtcbiAgc2VhcmNoUXVlcnkudmFsdWUgPSAnJztcbiAgc2VsZWN0ZWRMaWNlbnNlVHlwZS52YWx1ZSA9ICcnO1xuICBzZWxlY3RlZFJvbGUudmFsdWUgPSAnJztcbiAgY3VycmVudFBhZ2UudmFsdWUgPSAxO1xuICBhd2FpdCBmZXRjaFVzZXJzKCk7XG59O1xuXG5jb25zdCBmaWx0ZXJVc2VycyA9IGFzeW5jICgpID0+IHtcbiAgY3VycmVudFBhZ2UudmFsdWUgPSAxO1xuICBhd2FpdCBmZXRjaFVzZXJzKCk7XG59O1xuXG53YXRjaChzZWFyY2hRdWVyeSwgKCkgPT4ge1xuICBkZWJvdW5jZWRTZWFyY2goKTtcbn0pO1xuXG53YXRjaChbc2VsZWN0ZWRMaWNlbnNlVHlwZSwgc2VsZWN0ZWRSb2xlXSwgKCkgPT4ge1xuICBmaWx0ZXJVc2VycygpO1xufSk7XG5cbi8vIEV4dHJhY3QgYXZhaWxhYmxlIGxpY2Vuc2UgdHlwZXMgYW5kIHJvbGVzIGZyb20gY3VycmVudGx5IGxvYWRlZCB1c2Vyc1xuY29uc3QgZXh0cmFjdEZpbHRlck9wdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IGxpY2Vuc2VUeXBlcyA9IG5ldyBTZXQoKTtcbiAgY29uc3Qgcm9sZXMgPSBuZXcgU2V0KCk7XG5cbiAgdXNlcnMudmFsdWUuZm9yRWFjaCh1c2VyID0+IHtcbiAgICAvLyBFeHRyYWN0IGxpY2Vuc2UgdHlwZXNcbiAgICBpZiAodXNlci5saWNlbmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxpY2Vuc2VUeXBlcy5hZGQoJ0F1Y3VuZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1c2VyLmxpY2VuY2VzLmZvckVhY2gobGljZW5zZSA9PiB7XG4gICAgICAgIGlmIChsaWNlbnNlLnByb2R1Y3QgJiYgbGljZW5zZS5wcm9kdWN0LnRpdGxlKSB7XG4gICAgICAgICAgbGljZW5zZVR5cGVzLmFkZChsaWNlbnNlLnByb2R1Y3QudGl0bGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IHJvbGVzXG4gICAgKHVzZXIucm9sZXMgfHwgW10pLmZvckVhY2gocm9sZSA9PiB7XG4gICAgICByb2xlcy5hZGQocm9sZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGF2YWlsYWJsZUxpY2Vuc2VUeXBlcy52YWx1ZSA9IEFycmF5LmZyb20obGljZW5zZVR5cGVzKTtcbiAgYXZhaWxhYmxlUm9sZXMudmFsdWUgPSBBcnJheS5mcm9tKHJvbGVzKTtcbn07XG5cbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XG4gIGF3YWl0IGZldGNoVXNlcnMoKTtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cbiAgICA8ZGl2IGNsYXNzPVwic206ZmxleCBzbTppdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzbTpmbGV4LWF1dG9cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbGVhZGluZy02IHRleHQtZ3JheS05MDBcIj5VdGlsaXNhdGV1cnM8L2gxPlxuICAgICAgICA8cCBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LWdyYXktNzAwXCI+TGlzdGUgZGUgdG91cyBsZXMgdXRpbGlzYXRldXJzIGF2ZWMgbGV1cnMgaW5mb3JtYXRpb25zIGV0IGxpY2VuY2VzLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWFyY2ggYW5kIEZpbHRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNCBtYi02XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBzbTpncmlkLWNvbHMtM1wiPlxuICAgICAgICA8IS0tIFNlYXJjaCBpbnB1dCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHJvdW5kZWQtbWQgc2hhZG93LXNtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwbC0zXCI+XG4gICAgICAgICAgICA8TWFnbmlmeWluZ0dsYXNzSWNvbiBjbGFzcz1cImgtNSB3LTUgdGV4dC1ncmF5LTQwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwic2VhcmNoUXVlcnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXItMCBweS0xLjUgcGwtMTAgdGV4dC1ncmF5LTkwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIHBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1pbmRpZ28tNjAwIHNtOnRleHQtc20gc206bGVhZGluZy02XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUmVjaGVyY2hlciBwYXIgZW1haWwsIG5vbSBvdSBub20gZCdhcnRpc3RlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIExpY2Vuc2UgdHlwZSBmaWx0ZXIgLS0+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgdi1tb2RlbD1cInNlbGVjdGVkTGljZW5zZVR5cGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXItMCBweS0xLjUgcGwtMyBwci0xMCB0ZXh0LWdyYXktOTAwIHJpbmctMSByaW5nLWluc2V0IHJpbmctZ3JheS0zMDAgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5kaWdvLTYwMCBzbTp0ZXh0LXNtIHNtOmxlYWRpbmctNlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlRvdXMgbGVzIHR5cGVzIGRlIGxpY2VuY2U8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJ0eXBlIGluIGF2YWlsYWJsZUxpY2Vuc2VUeXBlc1wiIDprZXk9XCJ0eXBlXCIgOnZhbHVlPVwidHlwZVwiPlxuICAgICAgICAgICAgICB7eyB0eXBlIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBSb2xlIGZpbHRlciAtLT5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRSb2xlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyLTAgcHktMS41IHBsLTMgcHItMTAgdGV4dC1ncmF5LTkwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluZGlnby02MDAgc206dGV4dC1zbSBzbTpsZWFkaW5nLTZcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5Ub3VzIGxlcyByw7RsZXM8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJyb2xlIGluIGF2YWlsYWJsZVJvbGVzXCIgOmtleT1cInJvbGVcIiA6dmFsdWU9XCJyb2xlXCI+XG4gICAgICAgICAgICAgIHt7IHJvbGUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENsZWFyIGZpbHRlcnMgYnV0dG9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm10LTMgZmxleCBqdXN0aWZ5LWVuZFwiIHYtaWY9XCJzZWFyY2hRdWVyeSB8fCBzZWxlY3RlZExpY2Vuc2VUeXBlIHx8IHNlbGVjdGVkUm9sZVwiPlxuICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgIEBjbGljaz1cImNsZWFyRmlsdGVyc1wiIFxuICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgYmctd2hpdGUgcHgtMyBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHNoYWRvdy1zbSByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNTBcIlxuICAgICAgICA+XG4gICAgICAgICAgPFhNYXJrSWNvbiBjbGFzcz1cIi1tbC0wLjUgbXItMS41IGgtNSB3LTUgdGV4dC1ncmF5LTQwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgRWZmYWNlciBsZXMgZmlsdHJlc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm10LTggZmxvdy1yb290XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiLW14LTQgLW15LTIgb3ZlcmZsb3cteC1hdXRvIHNtOi1teC02IGxnOi1teC04XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbWluLXctZnVsbCBweS0yIGFsaWduLW1pZGRsZSBzbTpweC02IGxnOnB4LThcIj5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBoLTY0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTEyIHctMTIgYm9yZGVyLXQtMiBib3JkZXItYi0yIGJvcmRlci1pbmRpZ28tNTAwXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IHYtZWxzZT5cbiAgICAgICAgICAgIDwhLS0gTm8gcmVzdWx0cyBtZXNzYWdlIC0tPlxuICAgICAgICAgICAgPGRpdiB2LWlmPVwidXNlcnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0xMiBiZy13aGl0ZSByb3VuZGVkLWxnIHNoYWRvd1wiPlxuICAgICAgICAgICAgICA8RnVubmVsSWNvbiBjbGFzcz1cIm14LWF1dG8gaC0xMiB3LTEyIHRleHQtZ3JheS00MDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtdC0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwXCI+QXVjdW4gcsOpc3VsdGF0PC9oMz5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0xIHRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgIEF1Y3VuIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgw6Agdm9zIGNyaXTDqHJlcyBkZSByZWNoZXJjaGUuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTZcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cImNsZWFyRmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLW1kIGJnLWluZGlnby02MDAgcHgtMyBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIHNoYWRvdy1zbSBob3ZlcjpiZy1pbmRpZ28tNTAwIGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZGlnby02MDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxYTWFya0ljb24gY2xhc3M9XCItbWwtMC41IG1yLTEuNSBoLTUgdy01XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgIEVmZmFjZXIgbGVzIGZpbHRyZXNcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBSZXN1bHRzIHRhYmxlIC0tPlxuICAgICAgICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwibWluLXctZnVsbCBkaXZpZGUteSBkaXZpZGUtZ3JheS0zMDBcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHktMy41IHBsLTQgcHItMyB0ZXh0LWxlZnQgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgc206cGwtNlwiPkVtYWlsPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJweC0zIHB5LTMuNSB0ZXh0LWxlZnQgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDBcIj5Ob208L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInB4LTMgcHktMy41IHRleHQtbGVmdCB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMFwiPlR5cGUgZGUgbGljZW5jZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHgtMyBweS0zLjUgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwXCI+RGVybmnDqHJlIGNvbm5leGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicmVsYXRpdmUgcHktMy41IHBsLTMgcHItNCBzbTpwci02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+QWN0aW9uczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJkaXZpZGUteSBkaXZpZGUtZ3JheS0yMDAgYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cInVzZXIgaW4gcGFnaW5hdGVkVXNlcnNcIiA6a2V5PVwidXNlci5lbWFpbFwiIGNsYXNzPVwiaG92ZXI6YmctZ3JheS01MFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBweS00IHBsLTQgcHItMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgc206cGwtNlwiPnt7IHVzZXIuZW1haWwgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBweC0zIHB5LTQgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+e3sgdXNlci5uYW1lIHx8ICctJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIHB4LTMgcHktNCB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57eyBnZXRMaWNlbnNlVHlwZSh1c2VyKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIHB4LTMgcHktNCB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57eyBnZXRMYXN0Q29ubmVjdGlvbih1c2VyKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInJlbGF0aXZlIHdoaXRlc3BhY2Utbm93cmFwIHB5LTQgcGwtMyBwci00IHRleHQtcmlnaHQgdGV4dC1zbSBmb250LW1lZGl1bSBzbTpwci02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJgL2JhY2tvZmZpY2UvdXRpbGlzYXRldXJzLyR7dXNlci5lbWFpbH1gXCIgY2xhc3M9XCJ0ZXh0LWluZGlnby02MDAgaG92ZXI6dGV4dC1pbmRpZ28tOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBWb2lyPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+LCB7eyB1c2VyLmVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nICYmIHVzZXJzLmxlbmd0aCA+IDAgJiYgdG90YWxQYWdlcyA+IDFcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBib3JkZXItdCBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgcHgtNCBweS0zIHNtOnB4LTYgbXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC0xIGp1c3RpZnktYmV0d2VlbiBzbTpoaWRkZW5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJwcmV2UGFnZVwiIDpkaXNhYmxlZD1cImN1cnJlbnRQYWdlID09PSAxXCIgY2xhc3M9XCJyZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgaG92ZXI6YmctZ3JheS01MFwiIDpjbGFzcz1cInsgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJzogY3VycmVudFBhZ2UgPT09IDEgfVwiPlxuICAgICAgICAgICAgICAgIFByw6ljw6lkZW50XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cIm5leHRQYWdlXCIgOmRpc2FibGVkPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXNcIiBjbGFzcz1cInJlbGF0aXZlIG1sLTMgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIGhvdmVyOmJnLWdyYXktNTBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCc6IGN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzIH1cIj5cbiAgICAgICAgICAgICAgICBTdWl2YW50XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuIHNtOmZsZXggc206ZmxleC0xIHNtOml0ZW1zLWNlbnRlciBzbTpqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICAgICAgQWZmaWNoYWdlIGRlIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj57eyB0b3RhbCA/IChjdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgMSA6IDAgfX08L3NwYW4+IMOgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj57eyBNYXRoLm1pbihjdXJyZW50UGFnZSAqIGl0ZW1zUGVyUGFnZSwgdG90YWwpIH19PC9zcGFuPiBzdXIgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bVwiPnt7IHRvdGFsIH19PC9zcGFuPiByw6lzdWx0YXRzXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPVwiaXNvbGF0ZSBpbmxpbmUtZmxleCAtc3BhY2UteC1weCByb3VuZGVkLW1kIHNoYWRvdy1zbVwiIGFyaWEtbGFiZWw9XCJQYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cInByZXZQYWdlXCIgOmRpc2FibGVkPVwiY3VycmVudFBhZ2UgPT09IDFcIiBjbGFzcz1cInJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWwtbWQgcHgtMiBweS0yIHRleHQtZ3JheS00MDAgcmluZy0xIHJpbmctaW5zZXQgcmluZy1ncmF5LTMwMCBob3ZlcjpiZy1ncmF5LTUwIGZvY3VzOnotMjAgZm9jdXM6b3V0bGluZS1vZmZzZXQtMFwiIDpjbGFzcz1cInsgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJzogY3VycmVudFBhZ2UgPT09IDEgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5QcsOpY8OpZGVudDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTVcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyLjc5IDUuMjNhLjc1Ljc1IDAgMDEtLjAyIDEuMDZMOC44MzIgMTBsMy45MzggMy43MWEuNzUuNzUgMCAxMS0xLjA0IDEuMDhsLTQuNS00LjI1YS43NS43NSAwIDAxMC0xLjA4bDQuNS00LjI1YS43NS43NSAwIDAxMS4wNi4wMnpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwicGFnZSBpbiB0b3RhbFBhZ2VzXCIgOmtleT1cInBhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB2LWlmPVwicGFnZSA9PT0gY3VycmVudFBhZ2UgfHwgKHBhZ2UgPD0gMyB8fCBwYWdlID49IHRvdGFsUGFnZXMgLSAyIHx8IE1hdGguYWJzKHBhZ2UgLSBjdXJyZW50UGFnZSkgPD0gMSlcIiBAY2xpY2s9XCJnb1RvUGFnZShwYWdlKVwiIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgICAgICAgICAncmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlID09PSBwYWdlID8gJ3otMTAgYmctaW5kaWdvLTYwMCB0ZXh0LXdoaXRlIGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZGlnby02MDAnIDogJ3RleHQtZ3JheS05MDAgcmluZy0xIHJpbmctaW5zZXQgcmluZy1ncmF5LTMwMCBob3ZlcjpiZy1ncmF5LTUwIGZvY3VzOm91dGxpbmUtb2Zmc2V0LTAnXG4gICAgICAgICAgICAgICAgICAgIF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2UtaWY9XCJwYWdlID09PSA0ICYmIGN1cnJlbnRQYWdlID4gNFwiIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlLWlmPVwicGFnZSA9PT0gdG90YWxQYWdlcyAtIDMgJiYgY3VycmVudFBhZ2UgPCB0b3RhbFBhZ2VzIC0gM1wiIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwibmV4dFBhZ2VcIiA6ZGlzYWJsZWQ9XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlc1wiIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtci1tZCBweC0yIHB5LTIgdGV4dC1ncmF5LTQwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNTAgZm9jdXM6ei0yMCBmb2N1czpvdXRsaW5lLW9mZnNldC0wXCIgOmNsYXNzPVwieyAnb3BhY2l0eS01MCBjdXJzb3Itbm90LWFsbG93ZWQnOiBjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlcyB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlN1aXZhbnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk03LjIxIDE0Ljc3YS43NS43NSAwIDAxLjAyLTEuMDZMMTEuMTY4IDEwIDcuMjMgNi4yOWEuNzUuNzUgMCAxMTEuMDQtMS4wOGw0LjUgNC4yNWEuNzUuNzUgMCAwMTAgMS4wOGwtNC41IDQuMjVhLjc1Ljc1IDAgMDEtMS4wNi0uMDJ6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbi8qIEFkZGl0aW9uYWwgc3R5bGluZyBpZiBuZWVkZWQgKi9cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgaWQ9XCJzbW9vdGgtd3JhcHBlclwiIHJlZj1cImNvbnRhaW5lclwiPlxuICAgIDxkaXYgaWQ9XCJzbW9vdGgtY29udGVudFwiIGNsYXNzPVwidGV4dC13aGl0ZSBiZy1jdXN0b20tcGF0dGVyblwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJyZWxhdGl2ZVwiIHJlZj1cInMxXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrLXNlY3Rpb24tMVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1zMSBmbGV4IGl0ZW1zLWNlbnRlciBoLWZ1bGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy01LzEyIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHB4LTI0XCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9yZXMvaW1hZ2VzL2xvZ28ucG5nXCIgYWx0PVwiXCIgY2xhc3M9XCJ3LTQvNVwiPlxuICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRyYWNraW5nLXRpZ2h0ZXJcIj4xIFNFVUwgUExVR0lOLCAxIFZPSVggTUlYw4lFPC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctZnVsbCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwic2Vjb25kIHRyYWNraW5nLXRpZ2h0IC1tYi0yIHRleHQteGwgZm9udC1zZW1pYm9sZFwiPlrDqXJvIGxhdGVuY2U8L2gyPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtZ3JheS0yMDAgdHJhY2tpbmctdGlnaHRlclwiPkVucmVnaXN0cmV6IGF2ZWMgbOKAmWVmZmV0LCBlbiB0ZW1wcyByw6llbDwvaDM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInNlY29uZCB0cmFja2luZy10aWdodCAtbWItMiB0ZXh0LXhsIGZvbnQtc2VtaWJvbGRcIj5Mw6lnZXIgZW4gQ1BVPC9oMj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktMjAwIHRyYWNraW5nLXRpZ2h0ZXJcIj5O4oCZYWxvdXJkaXQgcGFzIHZvdHJlIHNlc3Npb24sIG3Dqm1lIHN1ciBsYXB0b3A8L2gzPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJzZWNvbmQgdHJhY2tpbmctdGlnaHQgLW1iLTIgdGV4dC14bCBmb250LXNlbWlib2xkXCI+RGVzIGNvbnRyw7RsZXMgbXVzaWNhdXg8L2gyPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtZ3JheS0yMDAgdHJhY2tpbmctdGlnaHRlclwiPlNpbXBsaWNpdMOpLCBwYXMgZGUgcsOpZ2xhZ2VzIHRlY2huaXF1ZXM8L2gzPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTYgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEwIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIvYWNoYXRcIiBjbGFzcz1cImJnLXNlY29uZCBweC0xMiBweS0zIHJvdW5kZWQtZnVsbCBzaGFkb3cgdGV4dC0yeGwgdHJhY2tpbmctdGlnaHRlciBmb250LXNlbWlib2xkXCI+QWNoZXRlcjwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0ZXJcIj5WU1QzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0ZXJcIj5BdWRpb1VuaXQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRlclwiPkNMQVA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRlclwiPkFBWDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBmb250LWxpZ2h0IHRyYWNraW5nLXRpZ2h0IHRleHQtY2VudGVyXCI+V2luZG93cyAmIE1hY09TIGNvbXBhdGlibGU8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy03LzEyIHByLTVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBtdC0xNiBhc3BlY3QtWzI0MzIvMTQ0Ml0gdy1mdWxsXCIgcmVmPVwidnN0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtaW5zZXQtMiByb3VuZGVkLVtjYWxjKHRoZW1lKGJvcmRlclJhZGl1cy54bCkrdGhlbWUoc3BhY2luZy4yKSldIGJnLXdoaXRlL1syLjUlXSBzaGFkb3ctW2luc2V0XzBfMF8ycHhfMXB4X3JnYigyNTVfMjU1XzI1NS8yLjUlKV0gcmluZy0xIHJpbmctd2hpdGUvMTBcIiAvPlxuICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL3ByZXZpZXcucG5nXCIgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgcm91bmRlZC14bCBzaGFkb3ctMnhsIHJpbmctMSByaW5nLXdoaXRlLzEwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIGlkPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJweC1bNXZ3XVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC1mdWxsXCI+XG4gICAgICAgICAgPGRpdiByZWY9XCJ0ZXh0V3JhcHBlclwiIGNsYXNzPVwic3BsaXRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+TGVWb2l4PC9zcGFuPiBlc3QgdW4gcGx1Z2luIGNvbsOndSBwb3VyIG1peGVyIGxlcyB2b2l4IGVuIHF1ZWxxdWVzIGNsaWNzLCBncsOiY2Ugw6AgdW5lIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+Y2hhw65uZSBk4oCZZWZmZXRzIGhhdXQgZGUgZ2FtbWU8L3NwYW4+IHBlcmZlY3Rpb25uw6llIHBlbmRhbnQgcHLDqHMgZGUgNCBhbnMuXG4gICAgICAgICAgICA8aHI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZFwiPlNhbnMgbGF0ZW5jZTwvc3Bhbj4gKDAgbXMpLCBMZVZvaXggcGV1dCDDqnRyZSA8c3BhbiBjbGFzcz1cInNlY29uZFwiPnV0aWxpc8OpIGVuIGRpcmVjdDwvc3Bhbj4sIG3Dqm1lIHBlbmRhbnQgbOKAmWVucmVnaXN0cmVtZW50LCBhdmVjIHVuIG1vbml0b3JpbmcgZW4gdGVtcHMgcsOpZWwuXG4gICAgICAgICAgICA8aHI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZFwiPkF1Y3VuIHLDqWdsYWdlIHRlY2huaXF1ZSBjb21wbGlxdcOpPC9zcGFuPiA6IGNoYXF1ZSBib3V0b24gY29ycmVzcG9uZCDDoCB1bmUgYWN0aW9uIG11c2ljYWxlIGNvbmNyw6h0ZSwgcGVuc8OpZSBwb3VyIGFsbGVyIGRyb2l0IMOgIGzigJllc3NlbnRpZWwuXG4gICAgICAgICAgICA8aHI+XG4gICAgICAgICAgICBMZSB0b3V0IGVzdCBvcHRpbWlzw6kgcG91ciB1bmUgPHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5jb25zb21tYXRpb24gQ1BVIG1pbmltYWxlPC9zcGFuPiwgYWZpbiBxdWUgdm91cyBwdWlzc2lleiBs4oCZaW5zw6lyZXIgc3VyIHRvdXRlcyBsZXMgcGlzdGVzIHZvY2FsZXMgZGUgdm90cmUgcHJvamV0LCBzYW5zIGNvbXByb21pcy5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8c2VjdGlvbiBpZD1cImZvbmN0aW9ubmFsaXRlc1wiIGNsYXNzPVwicC1bNXZ3XVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbCByZWxhdGl2ZVwiPlxuICAgICAgICAgIDxpbWcgYWx0PVwiXCIgc3JjPVwiL3Jlcy9pbWFnZXMva25vYi5wbmdcIiBjbGFzcz1cImgtZnVsbCB3LWF1dG8gYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGJvdHRvbS0wXCIgLz5cbiAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL2J1aWxkL2tub2IucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIGxlZnQtMCBib3R0b20tMFwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTQwIGJvdHRvbS0wIHctNC8xMiBmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LTN4bCBtYi04IHRleHQtY2VudGVyXCI+PHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5MYSBDb21wcmVzc2lvbjwvc3Bhbj4g4oCcT25lIEtub2LigJ08L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LTJ4bCBtYi02IHRleHQtY2VudGVyXCI+VW5lIHNldWxlIGNvbW1hbmRlIHBvdXIgdW5lIGNvbXByZXNzaW9uIHZvY2FsZSBjb21wbMOodGUuIFNvdXMgbGUgY2Fwb3QgOiB1bmUgY29tcHJlc3Npb24gZG91Y2UsIHVuZSBjb21wcmVzc2lvbiBhZ3Jlc3NpdmUsIGV0IHVuIGxpbWl0ZXIgZmluYWwsIHBhcmZhaXRlbWVudCBlbmNoYcOubsOpcyBlbiBzw6lyaWUgZXQgZW4gcGFyYWxsw6hsZSBwb3VyIHVuIHJlbmR1IMOgIGxhIGZvaXMgcHVpc3NhbnQgZXQgbmF0dXJlbC48L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtMnhsIG1iLTYgdGV4dC1jZW50ZXJcIj5BdWN1biByw6lnbGFnZSB0ZWNobmlxdWUgw6AgZ8OpcmVyIDogdG91dCBlc3QgcGVuc8OpIHBvdXIgbGEgdm9peCwgcHLDqnQgw6AgbOKAmWVtcGxvaS48L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtMnhsIHRleHQtY2VudGVyXCI+QXZlYyBzb24gaW5kaWNhdGV1ciBkZSBuaXZlYXUgZOKAmWVudHLDqWUgaW50w6lncsOpIHBvdXIgdmlzZXIgw6AgY2hhcXVlIGZvaXMgbGUgc3dlZXQgc3BvdCBpZMOpYWwuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIHJlZj1cInNlY3Rpb25fbGluZXNcIiBjbGFzcz1cImJnLWJsYWNrIHJlbGF0aXZlIHB4LVs1dnddIHBiLVs1dmhdIHB0LVsxMHZoXVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbCByZWxhdGl2ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIFwiPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy92c3RfbGluZXMucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTBcIiAvPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy9idWlsZC9saW5lXzEucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwXCIgOmNsYXNzPVwieyAnb3BhY2l0eS0xMDAnOiBhY3RpdmVJbmRleCA9PT0gMCwgJ29wYWNpdHktMjAnOiBhY3RpdmVJbmRleCAhPT0gMCwgJ2hpZGRlbic6IGFjdGl2ZUluZGV4IDwgMCB9XCIgLz5cbiAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgc3JjPVwiL3Jlcy9pbWFnZXMvYnVpbGQvbGluZV8yLnBuZ1wiIGNsYXNzPVwiaC1mdWxsIHctYXV0byBhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJvdHRvbS0wIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiIDpjbGFzcz1cInsgJ29wYWNpdHktMTAwJzogYWN0aXZlSW5kZXggPT09IDEsICdvcGFjaXR5LTIwJzogYWN0aXZlSW5kZXggIT09IDEsICdoaWRkZW4nOiBhY3RpdmVJbmRleCA8IDEgfVwiIC8+XG4gICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL2J1aWxkL2xpbmVfMy5wbmdcIiBjbGFzcz1cImgtZnVsbCB3LWF1dG8gYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBib3R0b20tMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAyLCAnb3BhY2l0eS0yMCc6IGFjdGl2ZUluZGV4ICE9PSAyLCAnaGlkZGVuJzogYWN0aXZlSW5kZXggPCAyIH1cIiAvPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy9idWlsZC9saW5lXzQucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwXCIgOmNsYXNzPVwieyAnb3BhY2l0eS0xMDAnOiBhY3RpdmVJbmRleCA9PT0gMywgJ29wYWNpdHktMjAnOiBhY3RpdmVJbmRleCAhPT0gMywgJ2hpZGRlbic6IGFjdGl2ZUluZGV4IDwgMyB9XCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs5dmhdIGxlZnQtMTAgdy01LzEyIHRleHQtMnhsIHRleHQtY2VudGVyIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiIDpjbGFzcz1cInsgJ29wYWNpdHktMTAwJzogYWN0aXZlSW5kZXggPT09IDAsICdvcGFjaXR5LTAnOiBhY3RpdmVJbmRleCAhPT0gMCB9XCI+XG4gICAgICAgICAgICAgIFVuIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+RVEgNCBiYW5kZXM8L3NwYW4+IHBlbnPDqSBwb3VyIGxhIHZvaXgsIGF2ZWMgdW5lIGJhbmRlIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+4oCcQWly4oCdIGR5bmFtaXF1ZSBldCBpbnRlbGxpZ2VudGU8L3NwYW4+LCBmcnVpdCBk4oCZdW4gZGVzaWduIHVuaXF1ZVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVsyMHZoXSBsZWZ0LTEwIHctNS8xMiB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAxLCAnb3BhY2l0eS0wJzogYWN0aXZlSW5kZXggIT09IDEgfVwiPlxuICAgICAgICAgICAgICBVbiA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmZpbHRyZSB0w6lsw6lwaG9uZTwvc3Bhbj4gcHJvZ3Jlc3NpZiwgdW4gPHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5kb3VibGV1cjwvc3Bhbj4gbW9uby1jb21wYXRpYmxlLCB1biA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmTDqS1lc3NldXIgaW50ZWxsaWdlbnQ8L3NwYW4+LCB1biA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmNob3J1czwvc3Bhbj4gZXQgdW5lIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+c2F0dXJhdGlvbjwvc3Bhbj4gOiB0b3V0IHBvdXIgc2N1bHB0ZXIgdm9zIHZvaXggYXZlYyBkZXMgcsOpZ2xhZ2VzIHNpbXBsZXMsIGltbcOpZGlhdHMgZXQgY3LDqWF0aWZzICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs1MHZoXSBsZWZ0LTEwIHctNS8xMiB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAyLCAnb3BhY2l0eS0wJzogYWN0aXZlSW5kZXggIT09IDIgfVwiPlxuICAgICAgICAgICAgICBVbiA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmRlbGF5IGFkYXB0YXRpZjwvc3Bhbj4gKGF1dG8gZHVja2luZykgOiBpbCBzZSBmYWl0IGRpc2NyZXQgcGVuZGFudCBsZSBjaGFudCwgcHVpcyByZXByZW5kIGRlIGzigJlhbXBsZXVyIGVudHJlIGxlcyBwaHJhc2VzIHBvdXIgZW5yaWNoaXIgbGEgcGlzdGUuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs0OHZoXSBsZWZ0LTEwIHctNS8xMiB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAzLCAnb3BhY2l0eS0wJzogYWN0aXZlSW5kZXggIT09IDMgfVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZFwiPjQgUmV2ZXJicyBoYXV0IGRlIGdhbW1lPC9zcGFuPiwgcGVuc8OpZXMgcG91ciBsYSB2b2l4LiBMZXMgcmV2ZXJicyBz4oCZYWp1c3RlbnQgPHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5hdXRvbWF0aXF1ZW1lbnQ8L3NwYW4+IHBvdXIgbGFpc3NlciBsYSB2b2l4IGxlYWQgYmllbiBlbiBhdmFudCBsb3JzIGR1IGNoYW50IGV0IHNlIGxpYsOocmVudCBlbiBmaW4gZGUgcGhyYXNlXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cInRleHQtbGVmdCB0ZXh0LXhsIG10LTNcIj5cbiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5TaG9ydCA6PC9zcGFuPiBwbGFjZSBsYSB2b2l4IGRhbnMgdW5lIHBpw6hjZSBpbnRpbWU8L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz1cInNlY29uZFwiPlNtYWxsIDo8L3NwYW4+IHVuZSBwbGF0ZSBjaGFsZXVyZXVzZSBldCBwcsOpY2lzZTwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPVwic2Vjb25kXCI+QmlnIDo8L3NwYW4+IHVuZSByZXZlcmIgYW1wbGUgZGUgdHlwZSBIYWxsPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5MdXNoIDo8L3NwYW4+IHVuZSBsb25ndWUgSGFsbCB0cmFpdMOpZSwgcGFyZmFpdGUgcG91ciBsZXMgYWRsaWJzIG91IGxlcyBhbWJpYW5jZXMgcGxhbmFudGVzPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIGlkPVwicHJpY2VcIiBjbGFzcz1cInAtWzV2d10gcHQtWzEwdnddIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgvMTIgcHItMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgYXNwZWN0LVsyNDMyLzE0NDJdIHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIC1pbnNldC0yIHJvdW5kZWQtW2NhbGModGhlbWUoYm9yZGVyUmFkaXVzLnhsKSt0aGVtZShzcGFjaW5nLjIpKV0gYmctd2hpdGUvWzIuNSVdIHNoYWRvdy1baW5zZXRfMF8wXzJweF8xcHhfcmdiKDI1NV8yNTVfMjU1LzIuNSUpXSByaW5nLTEgcmluZy13aGl0ZS8xMFwiIC8+XG4gICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL3ByZXZpZXcucG5nXCIgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgcm91bmRlZC14bCBzaGFkb3ctMnhsIHJpbmctMSByaW5nLXdoaXRlLzEwXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTQvMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsIG1iLTEwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLWluc2V0LTIgcm91bmRlZC1bY2FsYyh0aGVtZShib3JkZXJSYWRpdXMueGwpK3RoZW1lKHNwYWNpbmcuMikpXSBiZy13aGl0ZS9bMi41JV0gc2hhZG93LVtpbnNldF8wXzBfMnB4XzFweF9yZ2IoMjU1XzI1NV8yNTUvMi41JSldIHJpbmctMSByaW5nLXdoaXRlLzEwXCIgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLXhsIHAtNyBwdC01IGJnLVsjNjEwRDBEXSBmbGV4IGl0ZW1zLWNlbnRlciBwci0xMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMC8xMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWVuZCAtbWItMVwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtci0yIHRleHQteGxcIj5MaWNlbmNlIGNvbXBsw6h0ZTwvcD48c3BhbiBjbGFzcz1cInNlY29uZCB0ZXh0LTJ4bFwiPjQ54oKsPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBvcGFjaXR5LTcwXCI+TGljZW5jZSDDoCB2aWUgYXZlYyBsZXMgbWlzZXMgYSBqb3VyICE8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yLzEyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2FydC1zaG9wcGluZ1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIC1pbnNldC0yIHJvdW5kZWQtW2NhbGModGhlbWUoYm9yZGVyUmFkaXVzLnhsKSt0aGVtZShzcGFjaW5nLjIpKV0gYmctd2hpdGUvWzIuNSVdIHNoYWRvdy1baW5zZXRfMF8wXzJweF8xcHhfcmdiKDI1NV8yNTVfMjU1LzIuNSUpXSByaW5nLTEgcmluZy13aGl0ZS8xMFwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC14bCBwLTcgcHQtNSBiZy1bIzc3MTAxMF0gZmxleCBpdGVtcy1jZW50ZXIgcHItMTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAvMTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1lbmQgLW1iLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXItMiB0ZXh0LXhsXCI+RMOpbW8gY29tcGzDqHRlPC9wPjxzcGFuIGNsYXNzPVwic2Vjb25kIHRleHQtMnhsIHRyYWNraW5nLXRpZ2h0ZXJcIj5HUkFUVUlURTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gb3BhY2l0eS03MFwiPlRlc3RlcyBsZXMgZm9uY3Rpb25uYWxpdMOpcyBwZW5kYW50IDcgam91cnMgITwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvMTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtd2hpdGUgdGV4dC14bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYXJ0LXNob3BwaW5nXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8c2VjdGlvbiBpZD1cImZhcVwiIHN0eWxlPVwiaGVpZ2h0OiBhdXRvXCI+XG4gICAgICAgIDxGQVEgLz5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwPlxuaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQgfSBmcm9tICd2dWUnXG5pbXBvcnQgeyBnc2FwIH0gZnJvbSAnZ3NhcCdcbmltcG9ydCB7IFNjcm9sbFRyaWdnZXIgfSBmcm9tICdnc2FwL1Njcm9sbFRyaWdnZXInXG5pbXBvcnQgeyBTY3JvbGxUb1BsdWdpbiB9IGZyb20gXCJnc2FwL1Njcm9sbFRvUGx1Z2luXCI7XG5pbXBvcnQgeyBTY3JvbGxTbW9vdGhlciB9IGZyb20gXCJnc2FwL1Njcm9sbFNtb290aGVyXCI7XG5pbXBvcnQge1NwbGl0VGV4dH0gZnJvbSBcImdzYXAvU3BsaXRUZXh0XCI7XG5pbXBvcnQgeyBHU0RldlRvb2xzIH0gZnJvbSBcImdzYXAvR1NEZXZUb29sc1wiO1xuaW1wb3J0IEZBUSBmcm9tIFwiLi4vRkFRLnZ1ZVwiO1xuXG5nc2FwLnJlZ2lzdGVyUGx1Z2luKFNjcm9sbFRyaWdnZXIsIFNjcm9sbFRvUGx1Z2luLCBTY3JvbGxTbW9vdGhlciwgR1NEZXZUb29scylcblxuY29uc3QgY29udGFpbmVyID0gcmVmKCk7XG5jb25zdCB0ZXh0V3JhcHBlciA9IHJlZihudWxsKTtcbmNvbnN0IHZzdCA9IHJlZihudWxsKTtcbmNvbnN0IHMxID0gcmVmKCk7XG5jb25zdCBzZWN0aW9uX2xpbmVzID0gcmVmKCk7XG5cbmNvbnN0IGxpbmVzID0gW1xuICBcIkNvbXByZXNzZXVyIDogY29udHLDtGxlIGxhIGR5bmFtaXF1ZS5cIixcbiAgXCLDiWdhbGlzZXVyIDogYWp1c3RlIGxlcyBmcsOpcXVlbmNlcy5cIixcbiAgXCJSw6l2ZXJiw6lyYXRpb24gOiBham91dGUgZGUgbOKAmWVzcGFjZS5cIixcbiAgXCJTdMOpcsOpbyB3aWRlbmVyIDogw6lsYXJnaXQgbOKAmWltYWdlIHNvbm9yZS5cIlxuXVxuXG5jb25zdCBhY3RpdmVJbmRleCA9IHJlZigwKVxuXG5vbk1vdW50ZWQoKCkgPT4ge1xuICBTY3JvbGxTbW9vdGhlci5jcmVhdGUoe1xuICAgIHNtb290aDogMSwgLy8gaG93IGxvbmcgKGluIHNlY29uZHMpIGl0IHRha2VzIHRvIFwiY2F0Y2ggdXBcIiB0byB0aGUgbmF0aXZlIHNjcm9sbCBwb3NpdGlvblxuICAgIGVmZmVjdHM6IHRydWUsIC8vIGxvb2tzIGZvciBkYXRhLXNwZWVkIGFuZCBkYXRhLWxhZyBhdHRyaWJ1dGVzIG9uIGVsZW1lbnRzXG4gICAgc21vb3RoVG91Y2g6IDAuMSwgLy8gbXVjaCBzaG9ydGVyIHNtb290aGluZyB0aW1lIG9uIHRvdWNoIGRldmljZXMgKGRlZmF1bHQgaXMgTk8gc21vb3RoaW5nIG9uIHRvdWNoIGRldmljZXMpXG4gIH0pO1xuXG4gIFNjcm9sbFRyaWdnZXIuZGVmYXVsdHMoe1xuICAgIHNjcm9sbGVyOiBjb250YWluZXIudmFsdWVcbiAgfSk7XG5cbiAgU2Nyb2xsVHJpZ2dlci5jcmVhdGUoe1xuICAgIHRyaWdnZXI6IHNlY3Rpb25fbGluZXMudmFsdWUsXG4gICAgc3RhcnQ6IFwidG9wIHRvcFwiLFxuICAgIGVuZDogKCkgPT4gYCs9JHt3aW5kb3cuaW5uZXJIZWlnaHQgKiBsaW5lcy5sZW5ndGh9YCxcbiAgICBwaW46IHRydWUsXG4gICAgc2NydWI6IHRydWUsXG4gICAgb25VcGRhdGU6IHNlbGYgPT4ge1xuICAgICAgYWN0aXZlSW5kZXgudmFsdWUgPSBNYXRoLnJvdW5kKHNlbGYucHJvZ3Jlc3MgKiAobGluZXMubGVuZ3RoIC0gMSkpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IHNwbGl0ID0gU3BsaXRUZXh0LmNyZWF0ZSh0ZXh0V3JhcHBlci52YWx1ZSwge1xuICAgIHR5cGU6IFwid29yZHMsbGluZXNcIixcbiAgICBsaW5lc0NsYXNzOiBcImxpbmVcIlxuICB9KTtcblxuICBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoe1xuICAgIHNjcm9sbFRyaWdnZXI6IHtcbiAgICAgIHRyaWdnZXI6ICcuc3BsaXQnLFxuICAgICAgc3RhcnQ6IFwidG9wIDkwJVwiLFxuICAgICAgdG9nZ2xlQWN0aW9uczogXCJwbGF5IG5vbmUgbm9uZSBub25lXCIsXG4gICAgfVxuICB9KVxuICAuZnJvbShzcGxpdC5saW5lcywge1xuICAgIGR1cmF0aW9uOiAwLjcyLFxuICAgIHlQZXJjZW50OiAxMjAsXG4gICAgb3BhY2l0eTogMCxcbiAgICBzdGFnZ2VyOiAwLjE1LFxuICAgIGVhc2U6IFwiZXhwby5vdXRcIixcbiAgfSk7XG5cbiAgY29uc3QgdGxWU1QgPSBnc2FwLnRpbWVsaW5lKHsgfSk7XG4gIHRsVlNULmZyb21Ubyh2c3QudmFsdWUsXG4gICAge1xuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHNjYWxlOiAxLjA1LFxuICAgIH0sXG4gICAge1xuICAgICAgb3BhY2l0eTogMSxcbiAgICAgIHNjYWxlOiAxLFxuICAgICAgZHVyYXRpb246IDAuNixcbiAgICAgIGRlbGF5OiAzLjcsXG4gICAgICBlYXNlOiAnc2luZS5vdXQnLFxuICAgIH1cbiAgKTtcblxuICB0bFZTVC5yZXN1bWUoKTtcbn0pXG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VjdGlvbiB7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQgeyB1c2VVeFRyYW5zbGF0b3IgfSBmcm9tICcuLi8uLi8uLi9pMThuL3VzZVV4VHJhbnNsYXRvcidcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gIGxvY2FsZXM6IHsgdHlwZTogQXJyYXksIGRlZmF1bHQ6ICgpID0+IFsnZnInLCAnZW4nXSB9LCAvLyBjb25maWd1cmUgaWNpIHRlcyBsb2NhbGVzXG4gIGxhYmVsOiAgIHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnTGFuZ3VlJyB9XG59KVxuXG5jb25zdCB7IGN1cnJlbnRMb2NhbGUsIHNldExvY2FsZSB9ID0gdXNlVXhUcmFuc2xhdG9yKClcbmZ1bmN0aW9uIG9uQ2hhbmdlKGUpIHsgc2V0TG9jYWxlKGUudGFyZ2V0LnZhbHVlKSB9XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIG1yLTNcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZpIGZpLWZyIHJvdW5kZWQteHMgb3BhY2l0eS01MCB0ZXh0LXhsIGN1cnNvci1wb2ludGVyIHNhdHVyYXRlLTUwXCIgQGNsaWNrPVwic2V0TG9jYWxlKCdmcicpXCIgOmNsYXNzPVwieydvcGFjaXR5LTEwMCBzYXR1cmF0ZS0xMDAnIDogY3VycmVudExvY2FsZSA9PT0gJ2ZyJ31cIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJmaSBmaS1nYiByb3VuZGVkLXhzIG9wYWNpdHktNTAgdGV4dC14bCBjdXJzb3ItcG9pbnRlciBzYXR1cmF0ZS01MFwiIEBjbGljaz1cInNldExvY2FsZSgnZW4nKVwiIDpjbGFzcz1cInsnb3BhY2l0eS0xMDAgc2F0dXJhdGUtMTAwJyA6IGN1cnJlbnRMb2NhbGUgPT09ICdlbid9XCI+PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG5zZWxlY3QgeyBvdXRsaW5lOiBub25lOyB9XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8aGVhZGVyXG4gICAgICByZWY9XCJoZWFkZXJcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgJ2ZpeGVkIHRvcC0wIGxlZnQtNiByaWdodC02IHB5LTQgdGV4dC13aGl0ZSB6LTUwIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTMwMCBoZWFkZXInLFxuICAgICAgc2Nyb2xsZWQgPyAnYmctdHJhbnNwYXJlbnQgc2hhZG93IG5hdi1vbi1zY3JvbGwnIDogJ2JnLXRyYW5zcGFyZW50J1xuICAgIF1cIlxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDVyZW07XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtZnVsbCBuYXYtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctMy81IGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiL3Jlcy9pbWFnZXMvbG9nb19tb3V0aC5zdmdcIiBhbHQ9XCJcIiBjbGFzcz1cImgtZnVsbCBtci01IG1sLTIgbG9nb1wiPlxuICAgICAgICA8bmF2IGNsYXNzPVwidGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctdGlnaHRlciBmb250LW1lZGl1bSBzcGFjZS14LTUgaGlkZGVuIGxnOmZsZXggbXItNVwiPlxuICAgICAgICAgIDxhIEBjbGljaz1cInNjcm9sbFRvKCcjcHJlc2VudGF0aW9uJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+UHLDqXNlbnRhdGlvbjwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2ZvbmN0aW9ubmFsaXRlcycpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPkZvbmN0aW9ubmFsaXTDqXM8L2E+XG4gICAgICAgICAgPGEgQGNsaWNrPVwic2Nyb2xsVG8oJyNkZW1vbnN0cmF0aW9uJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+RMOpbW9uc3RyYXRpb248L2E+XG4gICAgICAgICAgPGEgQGNsaWNrPVwic2Nyb2xsVG8oJyNwcmljZScpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlRhcmlmczwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2ZhcScpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPkZBUXM8L2E+XG4gICAgICAgIDwvbmF2PlxuICAgICAgICA8IS0tIDxMYW5ndWFnZVN3aXRjaGVyIDpsb2NhbGVzPVwiWydmcicsJ2VuJ11cIiAvPiAtLT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInctMi81IGZsZXgganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIHByLTIuNVwiPlxuICAgICAgICA8YSBocmVmPVwiL3RlbGVjaGFyZ2VtZW50c1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC14cyB1cHBlcmNhc2UgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodGVyIGJnLXByaW1hcnkgcHgtNCBweS0yLjUgcm91bmRlZC1mdWxsIG1yLTMgaGlkZGVuIGxnOmJsb2NrXCI+PGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1hcnJvdy1kb3duXCI+PC9pPiBUw6lsw6ljaGFyZ2VtZW50czwvYT5cbiAgICAgICAgPGEgaHJlZj1cIi9tb24tY29tcHRlXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXRpZ2h0ZXIgYm9yZGVyLWdyYXktMzAwIGJvcmRlci0yIHB4LTQgcHktMi41IHJvdW5kZWQtZnVsbFwiPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtdXNlclwiPjwvaT4gPHNwYW4gY2xhc3M9XCJoaWRkZW4gbGc6aW5saW5lXCI+TW9uIGNvbXB0ZTwvc3Bhbj48L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9oZWFkZXI+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwPlxuICBpbXBvcnQgeyByZWYsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIGNvbXB1dGVkIH0gZnJvbSAndnVlJ1xuICBpbXBvcnQgeyBnc2FwIH0gZnJvbSAnZ3NhcCdcbiAgaW1wb3J0IHsgU2Nyb2xsVG9QbHVnaW4gfSBmcm9tICdnc2FwL1Njcm9sbFRvUGx1Z2luJ1xuICBpbXBvcnQgTGFuZ3VhZ2VTd2l0Y2hlciBmcm9tIFwiLi4vVXRpbHMvTGFuZ3VhZ2VTd2l0Y2hlci52dWVcIjtcblxuICBjb25zdCBsb2dvU3JjID0gJy9yZXMvaW1hZ2VzL2xvZ29fbW91dGguc3ZnJ1xuXG4gIGNvbnN0IHNjcm9sbGVkID0gcmVmKGZhbHNlKVxuICBjb25zdCBoZWFkZXIgPSByZWYobnVsbClcbiAgY29uc3QgbG9nbyA9IHJlZihudWxsKVxuXG4gIGdzYXAucmVnaXN0ZXJQbHVnaW4oU2Nyb2xsVG9QbHVnaW4pXG5cbiAgY29uc3QgbG9nb1N0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogc2Nyb2xsZWQudmFsdWUgPyAnNDBweCcgOiAnNTZweCcsXG4gICAgICBoZWlnaHQ6IHNjcm9sbGVkLnZhbHVlID8gJzQwcHgnIDogJzU2cHgnXG4gICAgfVxuICB9KVxuXG4gIGZ1bmN0aW9uIGFuaW1hdGUoKSB7XG4gICAgZ3NhcC50byhoZWFkZXIudmFsdWUsIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogc2Nyb2xsZWQudmFsdWUgPyAncmdiYSgwLDAsMCwwKScgOiAncmdiYSgwLDAsMCwwKScsXG4gICAgICBkdXJhdGlvbjogMC4zLFxuICAgICAgb3ZlcndyaXRlOiAnYXV0bydcbiAgICB9KVxuICAgIGdzYXAudG8obG9nby52YWx1ZSwge1xuICAgICAgd2lkdGg6IHNjcm9sbGVkLnZhbHVlID8gJzQwcHgnIDogJzU2cHgnLFxuICAgICAgaGVpZ2h0OiBzY3JvbGxlZC52YWx1ZSA/ICc0MHB4JyA6ICc1NnB4JyxcbiAgICAgIGR1cmF0aW9uOiAwLjMsXG4gICAgICBvdmVyd3JpdGU6ICdhdXRvJ1xuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBvblNjcm9sbCgpIHtcbiAgICBjb25zdCBoYXNTY3JvbGxlZCA9IHdpbmRvdy5zY3JvbGxZID4gMFxuICAgIGlmIChoYXNTY3JvbGxlZCAhPT0gc2Nyb2xsZWQudmFsdWUpIHtcbiAgICAgIHNjcm9sbGVkLnZhbHVlID0gaGFzU2Nyb2xsZWRcbiAgICAgIGFuaW1hdGUoKVxuICAgIH1cbiAgfVxuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgc2Nyb2xsZWQudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWSA+IDBcbiAgICBhbmltYXRlKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICB9KVxuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpXG4gIH0pXG5cbiAgZnVuY3Rpb24gc2Nyb2xsVG8oZWxlbWVudCkge1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGlmIChlbGVtZW50ID09PSAnI3ByZXNlbnRhdGlvbicpIHtcbiAgICAgIG9mZnNldCA9IDUwO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudCA9PT0gJyNmb25jdGlvbm5hbGl0ZXMnKSB7XG4gICAgICBvZmZzZXQgPSAxMDA7XG4gICAgfVxuICAgIGlmIChlbGVtZW50ID09PSAnI3ByaWNlJykge1xuICAgICAgb2Zmc2V0ID0gLTQ3O1xuICAgIH1cbiAgICBnc2FwLnRvKHdpbmRvdywge1xuICAgICAgZHVyYXRpb246IDEuNSxcbiAgICAgIHNjcm9sbFRvOiB7XG4gICAgICAgIHk6IGVsZW1lbnQsXG4gICAgICAgIG9mZnNldFk6IG9mZnNldFxuICAgICAgfVxuICAgIH0pO1xuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgaGVhZGVyLmhlYWRlcl9ibHVyIHtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHNhdHVyYXRlKDEyMCUpIGJsdXIoMTBweCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxoZWFkZXJcbiAgICAgIHJlZj1cImhlYWRlclwiXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAnZml4ZWQgdG9wLTAgbGVmdC0wIHJpZ2h0LTAgcHktNCB0ZXh0LXdoaXRlIHotNTAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwIGhlYWRlcicsXG4gICAgICBzY3JvbGxlZCA/ICdiZy10cmFuc3BhcmVudCBoZWFkZXJfYmx1ciBzaGFkb3cnIDogJ2JnLXRyYW5zcGFyZW50J1xuICAgIF1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvNSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8bmF2IGNsYXNzPVwiZmxleCB0ZXh0LXNtIHVwcGVyY2FzZSB0cmFja2luZy10aWdodGVyIGZvbnQtbWVkaXVtIHNwYWNlLXgtNVwiPlxuICAgICAgICAgIDxhIEBjbGljaz1cInNjcm9sbFRvKCcjcHJlc2VudGF0aW9uJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+UHLDqXNlbnRhdGlvbjwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2ZvbmN0aW9ubmFsaXRlcycpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPkZvbmN0aW9ubmFsaXTDqXM8L2E+XG4gICAgICAgICAgPGEgQGNsaWNrPVwic2Nyb2xsVG8oJyNwcmljZScpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlRhcmlmczwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2ZhcScpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPkZBUXM8L2E+XG4gICAgICAgICAgPGEgaHJlZj1cIi9kb3dubG9hZFwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5Uw6lsw6ljaGFyZ2VyPC9hPlxuICAgICAgICA8L25hdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInctMS81IGZsZXgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgcmVmPVwibG9nb1wiXG4gICAgICAgICAgICA6c3JjPVwibG9nb1NyY1wiXG4gICAgICAgICAgICBhbHQ9XCJMb2dvXCJcbiAgICAgICAgICAgIGNsYXNzPVwidHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwXCJcbiAgICAgICAgICAgIDpzdHlsZT1cImxvZ29TdHlsZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvNSBmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBcIj5cbiAgICAgICAgPGEgaHJlZj1cIi9tb24tY29tcHRlXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXNtIHVwcGVyY2FzZSB0cmFja2luZy10aWdodGVyIGZvbnQtbWVkaXVtXCI+TW9uIGNvbXB0ZTwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2hlYWRlcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgY29tcHV0ZWQgfSBmcm9tICd2dWUnXG4gIGltcG9ydCB7IGdzYXAgfSBmcm9tICdnc2FwJ1xuICBpbXBvcnQgeyBTY3JvbGxUb1BsdWdpbiB9IGZyb20gJ2dzYXAvU2Nyb2xsVG9QbHVnaW4nXG5cbiAgY29uc3QgbG9nb1NyYyA9ICcvcmVzL2ltYWdlcy9sb2dvX21vdXRoLnN2ZydcblxuICBjb25zdCBzY3JvbGxlZCA9IHJlZihmYWxzZSlcbiAgY29uc3QgaGVhZGVyID0gcmVmKG51bGwpXG4gIGNvbnN0IGxvZ28gPSByZWYobnVsbClcblxuICBnc2FwLnJlZ2lzdGVyUGx1Z2luKFNjcm9sbFRvUGx1Z2luKVxuXG4gIGNvbnN0IGxvZ29TdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHNjcm9sbGVkLnZhbHVlID8gJzQwcHgnIDogJzU2cHgnLFxuICAgICAgaGVpZ2h0OiBzY3JvbGxlZC52YWx1ZSA/ICc0MHB4JyA6ICc1NnB4J1xuICAgIH1cbiAgfSlcblxuICBmdW5jdGlvbiBhbmltYXRlKCkge1xuICAgIGdzYXAudG8oaGVhZGVyLnZhbHVlLCB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHNjcm9sbGVkLnZhbHVlID8gJ3JnYmEoMCwwLDAsMCknIDogJ3JnYmEoMCwwLDAsMCknLFxuICAgICAgZHVyYXRpb246IDAuMyxcbiAgICAgIG92ZXJ3cml0ZTogJ2F1dG8nXG4gICAgfSlcbiAgICBnc2FwLnRvKGxvZ28udmFsdWUsIHtcbiAgICAgIHdpZHRoOiBzY3JvbGxlZC52YWx1ZSA/ICc0MHB4JyA6ICc1NnB4JyxcbiAgICAgIGhlaWdodDogc2Nyb2xsZWQudmFsdWUgPyAnNDBweCcgOiAnNTZweCcsXG4gICAgICBkdXJhdGlvbjogMC4zLFxuICAgICAgb3ZlcndyaXRlOiAnYXV0bydcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25TY3JvbGwoKSB7XG4gICAgY29uc3QgaGFzU2Nyb2xsZWQgPSB3aW5kb3cuc2Nyb2xsWSA+IDBcbiAgICBpZiAoaGFzU2Nyb2xsZWQgIT09IHNjcm9sbGVkLnZhbHVlKSB7XG4gICAgICBzY3JvbGxlZC52YWx1ZSA9IGhhc1Njcm9sbGVkXG4gICAgICBhbmltYXRlKClcbiAgICB9XG4gIH1cblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHNjcm9sbGVkLnZhbHVlID0gd2luZG93LnNjcm9sbFkgPiAwXG4gICAgYW5pbWF0ZSgpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgfSlcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKVxuICB9KVxuXG4gIGZ1bmN0aW9uIHNjcm9sbFRvKGVsZW1lbnQpIHtcbiAgICBnc2FwLnRvKHdpbmRvdywgeyBkdXJhdGlvbjogMiwgc2Nyb2xsVG86IGVsZW1lbnQgfSk7XG4gIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuICBoZWFkZXIuaGVhZGVyX2JsdXIge1xuICAgIGJhY2tkcm9wLWZpbHRlcjogc2F0dXJhdGUoMTIwJSkgYmx1cigxMHB4KTtcbiAgfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWlmPVwibG9hZGluZ1wiIHJlZj1cImNvbnRhaW5lclwiIGNsYXNzPVwiZml4ZWQgaW5zZXQtMCB6LVsxMDAwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLXNjcmVlbiB3LXNjcmVlbiBiZy1jdXN0b21cIj5cbiAgICA8ZGl2IGNsYXNzPVwibG9nby13cmFwXCI+XG4gICAgICA8c3ZnXG4gICAgICAgICAgcmVmPVwibG9nb1wiXG4gICAgICAgICAgd2lkdGg9XCIzOTBcIlxuICAgICAgICAgIGhlaWdodD1cIjEzNlwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAzOTAgMTM2XCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMClcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBpZD1cImxlZnRQYXRoXCJcbiAgICAgICAgICAgICAgZD1cIk0xNC43OTkxIDUyLjM5ODNDMTAuODc0MiA2Ni4yOTUyIDEyLjgyOTggODEuMjM4MyAyMC4yMzU3IDkzLjk0MDVDMjcuNjQxNyAxMDYuNjQzIDM5Ljg5MTQgMTE2LjA2MyA1NC4yODk5IDEyMC4xM0M2OC42ODg1IDEyNC4xOTcgODQuMDU2NSAxMjIuNTc2IDk3LjAxMzIgMTE1LjYyNUMxMDkuOTcgMTA4LjY3NCAxMTkuNDU0IDk2Ljk2MTggMTIzLjM3OSA4My4wNjQ5TDY5LjA4OSA2Ny43MzE2TDE0Ljc5OTEgNTIuMzk4M1pcIlxuICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZz5cbiAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIxKVwiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGlkPVwicmlnaHRQYXRoXCJcbiAgICAgICAgICAgICAgZD1cIk0zNzUuMjAxIDUyLjQ5NEMzNzkuMTI2IDY2LjM5MDggMzc3LjE3IDgxLjMzNCAzNjkuNzY0IDk0LjAzNjJDMzYyLjM1OCAxMDYuNzM4IDM1MC4xMDkgMTE2LjE1OSAzMzUuNzEgMTIwLjIyNkMzMjEuMzExIDEyNC4yOTIgMzA1Ljk0MyAxMjIuNjcyIDI5Mi45ODcgMTE1LjcyMUMyODAuMDMgMTA4Ljc3IDI3MC41NDYgOTcuMDU3NSAyNjYuNjIxIDgzLjE2MDZMMzIwLjkxMSA2Ny44MjczTDM3NS4yMDEgNTIuNDk0WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9nPlxuXG4gICAgICAgIDxjaXJjbGUgaWQ9XCJleWVMXCIgY3g9XCI3OVwiIGN5PVwiMTAzXCIgcj1cIjE1XCIgZmlsbD1cImJsYWNrXCIvPlxuICAgICAgICA8Y2lyY2xlIGlkPVwiZXllUlwiIGN4PVwiMzA5XCIgY3k9XCIxMDNcIiByPVwiMTVcIiBmaWxsPVwiYmxhY2tcIi8+XG4gICAgICAgIDwhLS0gbGVzIGRldXggXCJ5ZXV4XCIgLS0+XG5cbiAgICAgICAgPCEtLSA9PT0gRmlsdHJlcyBk4oCZb3JpZ2luZSDigJMgaW5jaGFuZ8OpcywganVzdGUgcmVub21tw6lzIHBvdXIgw6p0cmUgcGx1cyBjb3VydHMgPT09IC0tPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMFwiIHg9XCI1LjE1NzMyXCIgeT1cIjQ0LjczNzVcIiB3aWR0aD1cIjEyNS44ODJcIiBoZWlnaHQ9XCI4NS4yNTA3XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC4wOTEyXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjAuMTgyNFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3QyX2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjAuNjM4NFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0Ml9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3QzX2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjEuMjc2OFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0M19kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3Q0X2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjIuMTg4OFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0NF9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3Q1X2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjMuODMwNFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiZWZmZWN0NV9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJlZmZlY3Q2X2Ryb3BTaGFkb3dfNjVfNjM4M1wiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3Q2X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cInNoYXBlXCIvPlxuICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIxXCIgeD1cIjI1OC45NlwiIHk9XCI0NC44MzMyXCIgd2lkdGg9XCIxMjUuODgyXCIgaGVpZ2h0PVwiODUuMjUwN1wiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjAuMDkxMlwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjE4MjRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Ml9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjYzODRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0M19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxLjI3NjhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NF9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyLjE4ODhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIzLjgzMDRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMlwiIHg9XCI1OS4zMzkyXCIgeT1cIjgzLjMzOTJcIiB3aWR0aD1cIjM5LjMyMTZcIiBoZWlnaHQ9XCIzOS42NjA4XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjRcIi8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiLz5cbiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjI1IDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjA5MTJcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Ml9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjE4MjRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0M19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjYzODRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NF9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxLjI3NjhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyLjE4ODhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIzLjgzMDRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDZfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0N19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0N19kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyM1wiIHg9XCIyODkuMzM5XCIgeT1cIjgzLjMzOTJcIiB3aWR0aD1cIjM5LjMyMTZcIiBoZWlnaHQ9XCIzOS42NjA4XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjRcIi8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiLz5cbiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjI1IDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjA5MTJcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Ml9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjE4MjRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0M19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjYzODRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NF9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxLjI3NjhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyLjE4ODhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIzLjgzMDRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDZfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0N19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0N19kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgPC9kZWZzPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQgfSBmcm9tICd2dWUnXG4gIGltcG9ydCB7IGdzYXAgfSBmcm9tICdnc2FwJ1xuICBpbXBvcnQgeyBEcmF3U1ZHUGx1Z2luIH0gZnJvbSAnZ3NhcC9EcmF3U1ZHUGx1Z2luJ1xuXG4gIGdzYXAucmVnaXN0ZXJQbHVnaW4oRHJhd1NWR1BsdWdpbilcblxuICBjb25zdCBsb2FkaW5nID0gcmVmKHRydWUpO1xuICBjb25zdCBsb2dvID0gcmVmKG51bGwpXG4gIGNvbnN0IGNvbnRhaW5lciA9IHJlZihudWxsKVxuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKCFsb2FkaW5nLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGxlZnRQYXRoID0gbG9nby52YWx1ZS5xdWVyeVNlbGVjdG9yKCcjbGVmdFBhdGgnKVxuICAgIGNvbnN0IHJpZ2h0UGF0aCA9IGxvZ28udmFsdWUucXVlcnlTZWxlY3RvcignI3JpZ2h0UGF0aCcpXG4gICAgY29uc3QgZXllTCA9IGxvZ28udmFsdWUucXVlcnlTZWxlY3RvcignI2V5ZUwnKVxuICAgIGNvbnN0IGV5ZVIgPSBsb2dvLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoJyNleWVSJylcblxuICAgIC8vIE9uIHBhcnQgZOKAmXVuIHRyYWPDqSBcImludmlzaWJsZVwiIChsb25ndWV1ciAwKSBwdWlzIG9uIGxlIGRlc3NpbmVcbiAgICBnc2FwLnNldChbbGVmdFBhdGgsIHJpZ2h0UGF0aF0sIHsgZHJhd1NWRzogJzAlIDAlJywgZmlsbE9wYWNpdHk6IDAgfSlcbiAgICBnc2FwLnNldChbZXllTCwgZXllUl0sIHsgc2NhbGU6IDEsIG9wYWNpdHk6IDAsIHRyYW5zZm9ybU9yaWdpbjogJ2NlbnRlciBjZW50ZXInIH0pXG5cbiAgICBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoeyBkZWZhdWx0czogeyBlYXNlOiAncG93ZXIyLmluT3V0JyB9LCBvbkNvbXBsZXRlOiAoKSA9PiB7IGxvYWRpbmcudmFsdWUgPSBmYWxzZSB9IH0pXG5cbiAgICB0bFxuICAgICAgICAudG8obGVmdFBhdGgsIHsgZHJhd1NWRzogJzAlIDEwMCUnLCBkdXJhdGlvbjogMS4yIH0pXG4gICAgICAgIC50byhyaWdodFBhdGgsIHsgZHJhd1NWRzogJzAlIDEwMCUnLCBkdXJhdGlvbjogMS4yIH0sICctPTAuNicpXG4gICAgICAgIC50byhsZWZ0UGF0aCwgeyBmaWxsT3BhY2l0eTogJzEnLCBkdXJhdGlvbjogMC4yIH0pXG4gICAgICAgIC50byhyaWdodFBhdGgsIHsgZmlsbE9wYWNpdHk6ICcxJywgZHVyYXRpb246IDAuMiB9LCAnLT0wLjInKVxuICAgICAgICAudG8oZXllTCwgeyBvcGFjaXR5OiAxLCBkdXJhdGlvbjogMC4yLCBkZWxheTogMC4xIH0sICctPTAuMicpXG4gICAgICAgIC50byhleWVSLCB7IG9wYWNpdHk6IDEsIGR1cmF0aW9uOiAwLjIgfSwgJy09MC4yJylcbiAgICAgICAgLnRvKGV5ZUwsIHsgc2NhbGU6IDEsIGR1cmF0aW9uOiAwLjYgfSwgJy09MC4yJylcbiAgICAgICAgLmFkZChtYWtlRmxpY2tlcihsb2dvLnZhbHVlKSlcbiAgICAgICAgLnRvKGxvZ28udmFsdWUsIHsgc2NhbGU6IDEuMywgb3BhY2l0eTogMCwgZHVyYXRpb246IDAuMywgZGVsYXk6IDAuMiB9IClcbiAgICAgICAgLnRvKGNvbnRhaW5lci52YWx1ZSwgeyBvcGFjaXR5OiAwLCBkdXJhdGlvbjogMC4zIH0sICctPTAuMicgKVxuICB9KVxuXG4gIGZ1bmN0aW9uIG1ha2VGbGlja2VyKHRhcmdldCwgYnVyc3RzID0gZ3NhcC51dGlscy5yYW5kb20oMywgNiwgMSkpIHtcbiAgICBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVyc3RzOyBpKyspIHtcbiAgICAgIHRsLnRvKHRhcmdldCwge1xuICAgICAgICBvcGFjaXR5OiAwLjE4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXh0aW5jdGlvbiBmdWxndXJhbnRlXG4gICAgICAgIGR1cmF0aW9uOiBnc2FwLnV0aWxzLnJhbmRvbSgwLjAxNSwgMC4wNiksXG4gICAgICAgIGVhc2U6ICdwb3dlcjQuaW4nLFxuICAgICAgfSlcbiAgICAgIHRsLnRvKHRhcmdldCwge1xuICAgICAgICBvcGFjaXR5OiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0b3VyIGJydXRhbCBkZSBsYSBsdW1pw6hyZVxuICAgICAgICBkdXJhdGlvbjogZ3NhcC51dGlscy5yYW5kb20oMC4wMywgMC4wOCksXG4gICAgICAgIGVhc2U6ICdleHBvLm91dCcsXG4gICAgICB9LCAnPicpXG4gICAgfVxuICAgIHJldHVybiB0bFxuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5sb2dvLXdyYXAge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzOTBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5zdmcge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLyogQWNjZXNzaWJpbGl0w6kgOiBvbiBzYXV0ZSBs4oCZYW5pbWF0aW9uIHNpIGzigJl1dGlsaXNhdGV1ciBsYSBkw6lzYWN0aXZlICovXG4gIHN2ZyAqIHtcbiAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuICA8YXJ0aWNsZVxuICAgICAgY2xhc3M9XCJiYWRnZVwiXG4gICAgICA6Y2xhc3M9XCJ7ICdoYXMtaG9sZSc6IGhhc0hvbGUgfVwiXG4gICAgICA6c3R5bGU9XCJ7ICctLWFjY2VudCc6IGFjY2VudCwgd2lkdGg6IHB4KHdpZHRoKSwgaGVpZ2h0OiBweChoZWlnaHQpIH1cIlxuICAgICAgYXJpYS1sYWJlbD1cIkJhZGdlIGFsbC1hY2Nlc3NcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImdsb3dcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cblxuICAgIDwhLS0gcGV0aXQgbG9nbyAtLT5cbiAgICA8aW1nIHNyYz1cIi9yZXMvaW1hZ2VzL2xvZ29fbW91dGguc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJ3LTEvNiBtdC0zXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5MSUNFTkNFPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwia3ZcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJrXCI+VFlQRTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZcIj5cbiAgICAgICAge3sgdHlwZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwia1wiPkNSw4nDiSBMRTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZcIj5cbiAgICAgICAgICB7eyBpYXQgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImtcIj5FWFBJUkUgPHNwYW4gdi1pZj1cImVhdCAhPT0gbnVsbFwiPkxFPC9zcGFuPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZcIj5cbiAgICAgICAge3sgZWF0ICE9PSBudWxsID8gZWF0IDogJ0pBTUFJUycgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInJ1bGVcIj48L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJoYW5kbGVcIj57eyBoYW5kbGUgfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7IG5hbWUgfX08L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOjZweFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInFyXCI+PC9kaXY+XG5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlkXCI+PGI+TElDRU5DRSZuYnNwO1BPVVI8L2I+XG4gICAgICAgICAgPGJyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIHByLTEwXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9yZXMvaW1hZ2VzL2xvZ28ucG5nXCIgYWx0PVwiXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMSBtdC0yXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiL3RlbGVjaGFyZ2VtZW50c1wiIGNsYXNzPVwidGV4dC14c1wiPlxuICAgICAgICAgICAgICA8Yj48aSBjbGFzcz1cImZhLXNvbGlkIGZhLWFycm93LWRvd24gbXItMVwiPjwvaT48L2I+PHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktMzAwXCI+VMOpbMOpY2hhcmdlcjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIvbWFudWVsXCIgY2xhc3M9XCJ0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgIDxiPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtYm9vayBtci0xXCI+PC9pPjwvYj48c3BhbiBjbGFzcz1cInRleHQtZ3JheS0zMDBcIj5Eb2N1bWVudGF0aW9uPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNpZ1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4+UFBST0QuU1RPUkU8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9hcnRpY2xlPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICBoYXNIb2xlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgbmFtZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgdHlwZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgaGFuZGxlOiB7IHR5cGU6IFN0cmluZyB9LFxuICBpYXQ6IHsgdHlwZTogU3RyaW5nIH0sXG4gIGVhdDogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6IG51bGwgfSxcbiAgcmVmZXJlbmNlSWQ6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnTGVWb2l4JyB9LFxuICBjb21wYW55TGluZXM6IHtcbiAgICB0eXBlOiBBcnJheSxcbiAgICBkZWZhdWx0OiAoKSA9PiBbJ0lOVEVSTkVUIERFVkVMT1BNRU5UJywgJ1NUVURJTyBDT01QQU5ZJ11cbiAgfSxcbiAgd2lkdGg6IHsgdHlwZTogW051bWJlciwgU3RyaW5nXSwgZGVmYXVsdDogMzMwIH0sXG4gIGhlaWdodDogeyB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLCBkZWZhdWx0OiA0NTAgfSxcbiAgYWNjZW50OiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJyNmZjI0MzgnIH1cbn0pXG5cbmZ1bmN0aW9uIHB4KHYpIHsgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJyA/IGAke3Z9cHhgIDogdiB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUlCTStQbGV4K01vbm86d2dodEAzMDA7NDAwOzYwMCZkaXNwbGF5PXN3YXAnKTtcblxuLmJhZGdle1xuICAvKiB2YXJpYWJsZXMgKi9cbiAgLS1hY2NlbnQ6ICNmZjI0Mzg7XG4gIC0tYmc6ICMwYjBiMGM7XG4gIC0taW5rOiAjZTllYWVjO1xuICAtLXN1YjogI2E2YTdhYjtcbiAgLS1ib3JkZXI6IHJnYmEoMjU1LDI1NSwyNTUsLjEyKTtcblxuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBiYWNrZ3JvdW5kOlxuICAgICAgcmFkaWFsLWdyYWRpZW50KDEyMCUgMTIwJSBhdCAxMCUgLTEwJSwgcmdiYSgyNTUsMjU1LDI1NSwuMTApLCB0cmFuc3BhcmVudCA0MCUpLFxuICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzExMTMxNiAwJSwgIzBhMGIwYyAxMDAlKTtcbiAgY29sb3I6IHZhcigtLWluayk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMjZweCAyMnB4O1xuICBib3gtc2hhZG93OlxuICAgICAgMCAyOHB4IDYwcHggLTEycHggcmdiYSgwLDAsMCwuNjUpLFxuICAgICAgMCA4cHggMjBweCAtOHB4IHJnYmEoMjU1LDM2LDU2LC4yNSksXG4gICAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjA2KSxcbiAgICAgIGluc2V0IDAgLTFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjAzKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZm9udC1mYW1pbHk6IFwiSUJNIFBsZXggTW9ub1wiLCB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZTtcbn1cblxuLmJhZGdlLmhhcy1ob2xlOjpiZWZvcmV7XG4gIGNvbnRlbnQ6XCJcIjtcbiAgcG9zaXRpb246YWJzb2x1dGU7XG4gIHRvcDoxNHB4OyBsZWZ0OjUwJTtcbiAgd2lkdGg6IDU3cHg7IGhlaWdodDogMThweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC40NSk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjE1KTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAycHggMnB4IHJnYmEoMCwwLDAsLjUpLCAwIDRweCAxMnB4IHJnYmEoMCwwLDAsLjM1KTtcbn1cblxuLyogVG9wIGxvZ28gKi9cbi5tYXJre1xuICB3aWR0aDogNTZweDsgaGVpZ2h0OiA1NnB4O1xuICBkaXNwbGF5OmJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBvcGFjaXR5Oi45O1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNnB4IDhweCByZ2JhKDI1NSwzNiw1NiwuMjUpKTtcbn1cblxuLyogVGl0cmVzICovXG4udGl0bGV7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAuMThlbTtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBtYXJnaW46IDZweCAwIDE4cHggMDtcbn1cblxuLyogUGFpcmVzIGNsw6kvdmFsZXVyICovXG4ua3Z7XG4gIGRpc3BsYXk6Z3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA3MHB4IDFmcjtcbiAgZ2FwOiA2cHggMTZweDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogdmFyKC0tc3ViKTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cbi5rdiAua3sgY29sb3I6IHZhcigtLXN1Yik7IG9wYWNpdHk6LjkgfVxuLmt2IC52eyBjb2xvcjogdmFyKC0taW5rKTsgb3BhY2l0eTouOSB9XG5cbi5ydWxle1xuICBoZWlnaHQ6MXB4O1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwyNTUsMjU1LC4xOCksIHRyYW5zcGFyZW50KTtcbiAgbWFyZ2luOiAxNHB4IDAgMTBweDtcbn1cblxuLmhhbmRsZXtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogdmFyKC0tc3ViKTtcbiAgbGV0dGVyLXNwYWNpbmc6IC4wOGVtO1xuICBtYXJnaW4tdG9wOiAycHg7XG59XG5cbi5uYW1le1xuICBmb250LXNpemU6IDIycHg7XG4gIGxldHRlci1zcGFjaW5nOiAuMTJlbTtcbiAgbWFyZ2luOiA4cHggMCA4cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5ncmlke1xuICBkaXNwbGF5OmdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgZ2FwOiAxNHB4O1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG59XG5cbi8qIFFSIChwbGFjZWhvbGRlcikgKi9cbi5xcntcbiAgd2lkdGg6IDEyOHB4OyBoZWlnaHQ6IDEyOHB4O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBiYWNrZ3JvdW5kOlxuICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwZGVnLCAjMGYxMTEzLCAjMGYxMTEzIDhweCwgIzBkMGYxMSA4cHgsICMwZDBmMTEgMTZweCk7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDRweCAjMDAwLCAwIDhweCAyMHB4IC0xMHB4IHJnYmEoMCwwLDAsLjgpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OmhpZGRlbjtcbn1cbi5xcjo6YmVmb3JlLCAucXI6OmFmdGVye1xuICBjb250ZW50OlwiXCI7XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoxMHB4O1xuICBiYWNrZ3JvdW5kOlxuICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnIGF0IDIwJSAyMCUsICNmZmYgMCAyNSUsIHRyYW5zcGFyZW50IDAgMTAwJSksXG4gICAgICBjb25pYy1ncmFkaWVudChmcm9tIDBkZWcgYXQgODAlIDIwJSwgI2ZmZiAwIDI1JSwgdHJhbnNwYXJlbnQgMCAxMDAlKSxcbiAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMGRlZyBhdCAyMCUgODAlLCAjZmZmIDAgMjUlLCB0cmFuc3BhcmVudCAwIDEwMCUpLFxuICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnIGF0IDgwJSA4MCUsICNmZmYgMCAyNSUsIHRyYW5zcGFyZW50IDAgMTAwJSksXG4gICAgICByZXBlYXRpbmctY29uaWMtZ3JhZGllbnQoI2ZmZiAwIDIlLCB0cmFuc3BhcmVudCAwIDQlKTtcbiAgbWl4LWJsZW5kLW1vZGU6IHNjcmVlbjtcbiAgb3BhY2l0eTouOTtcbn1cbi5xcjo6YWZ0ZXJ7IGluc2V0OjM2cHg7IGJhY2tncm91bmQ6IzAwMCB9XG5cbi5tZXRhe1xuICBmb250LXNpemU6IDExcHg7XG4gIGNvbG9yOiB2YXIoLS1zdWIpO1xuICBsaW5lLWhlaWdodDogMS40NTtcbn1cbi5tZXRhIGJ7IGNvbG9yOiB2YXIoLS1pbmspOyBmb250LXdlaWdodDo2MDA7IGxldHRlci1zcGFjaW5nOi4wNmVtIH1cbi5tZXRhIC5pZHtcbiAgbWFyZ2luOiA4cHggMCAxMHB4O1xuICBwYWRkaW5nOiA2cHggOHB4O1xuICBib3JkZXI6IDFweCBkYXNoZWQgcmdiYSgyNTUsMjU1LDI1NSwuMjIpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xufVxuXG4vKiBTaWduYXR1cmUgYmFzICovXG4uZm9vdGVye1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoyMnB4OyByaWdodDoyMnB4OyBib3R0b206MThweDtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO1xuICBjb2xvcjogdmFyKC0tc3ViKTsgZm9udC1zaXplOiAxMHB4O1xuICBsZXR0ZXItc3BhY2luZzouMDhlbTtcbn1cbi5zaWd7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4OyBvcGFjaXR5Oi45NTsgfVxuLmRvdHtcbiAgd2lkdGg6MTBweDsgaGVpZ2h0OjEwcHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQwJSAzNSUsICNmZmYsICNmZmYwIDQ1JSk7XG4gIGJveC1zaGFkb3c6IDAgMCAxNHB4IHZhcigtLWFjY2VudCksIDAgMCA0cHggdmFyKC0tYWNjZW50KSBpbnNldDtcbn1cblxuLyogR2xvd3Mgcm91Z2VzICovXG4uZ2xvd3tcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0Oi00MCU7XG4gIGJhY2tncm91bmQ6XG4gICAgICByYWRpYWwtZ3JhZGllbnQoNDIwcHggMjIwcHggYXQgMjAlIC0xMCUsIHJnYmEoMjU1LDM2LDU2LC4xOCksIHRyYW5zcGFyZW50IDQwJSksXG4gICAgICByYWRpYWwtZ3JhZGllbnQoNDIwcHggMjIwcHggYXQgMTIwJSAxMjAlLCByZ2JhKDI1NSwzNiw1NiwuMTIpLCB0cmFuc3BhcmVudCA1MCUpO1xuICBwb2ludGVyLWV2ZW50czpub25lO1xuICBmaWx0ZXI6IGJsdXIoMnB4KTtcbn1cblxuLyogU8OpbGVjdGlvbiAqL1xuLmJhZGdlIDo6c2VsZWN0aW9ueyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwzNiw1NiwuMzUpOyBjb2xvcjojZmZmIH1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxzZWN0aW9uIHJlZj1cImNvbnRhaW5lclwiIGNsYXNzPVwidy1mdWxsIGgtc2NyZWVuIGZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHRleHQtd2hpdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC00eGwgZm9udC1ib2xkIG1iLTEwXCI+RMOpY291dnJleiBsZXMgZWZmZXRzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInctMy80XCI+XG4gICAgICA8ZGl2IHYtZm9yPVwiKGxpbmUsIGluZGV4KSBpbiBsaW5lc1wiIDprZXk9XCJpbmRleFwiIGNsYXNzPVwibGluZSBteS02IHRleHQtMnhsIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwXCJcbiAgICAgICAgICAgOmNsYXNzPVwieyAndGV4dC1yZWQtNTAwIHNjYWxlLTExMCc6IGFjdGl2ZUluZGV4ID09PSBpbmRleCwgJ29wYWNpdHktMzAnOiBhY3RpdmVJbmRleCAhPT0gaW5kZXggfVwiPlxuICAgICAgICB7eyBsaW5lLnRpdGxlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC14bCBtdC0xMCBoLTI0IHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi01MDBcIj57eyBsaW5lc1thY3RpdmVJbmRleF0/LmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQge29uTW91bnRlZCwgcmVmfSBmcm9tICd2dWUnXG5pbXBvcnQge2dzYXB9IGZyb20gJ2dzYXAnXG5pbXBvcnQge1Njcm9sbFRyaWdnZXJ9IGZyb20gJ2dzYXAvU2Nyb2xsVHJpZ2dlcidcblxuZ3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUcmlnZ2VyKVxuXG5jb25zdCBsaW5lcyA9IFtcbiAgeyB0aXRsZTogXCJDb21wcmVzc2V1clwiLCBkZXNjcmlwdGlvbjogXCJDb250csO0bGUgbGEgZHluYW1pcXVlIGRlIHZvdHJlIHNpZ25hbCBhdWRpby5cIiB9LFxuICB7IHRpdGxlOiBcIsOJZ2FsaXNldXJcIiwgZGVzY3JpcHRpb246IFwiQWp1c3RlIGxlcyBmcsOpcXVlbmNlcyBwb3VyIHVuIG1peCBjbGFpci5cIiB9LFxuICB7IHRpdGxlOiBcIlLDqXZlcmLDqXJhdGlvblwiLCBkZXNjcmlwdGlvbjogXCJBam91dGUgZGUgbCdlc3BhY2UgZXQgZGUgbGEgcHJvZm9uZGV1ci5cIiB9LFxuICB7IHRpdGxlOiBcIlN0w6lyw6lvIHdpZGVuZXJcIiwgZGVzY3JpcHRpb246IFwiw4lsYXJnaXQgbOKAmWltYWdlIHN0w6lyw6lvIGRlIHZvdHJlIG1peC5cIiB9LFxuXVxuXG5jb25zdCBhY3RpdmVJbmRleCA9IHJlZigwKVxuY29uc3QgY29udGFpbmVyID0gcmVmKClcblxub25Nb3VudGVkKCgpID0+IHtcbiAgU2Nyb2xsVHJpZ2dlci5kZWZhdWx0cyh7XG4gICAgc2Nyb2xsZXI6IFwiLnNjcm9sbFwiXG4gIH0pO1xuXG4gIFNjcm9sbFRyaWdnZXIuY3JlYXRlKHtcbiAgICB0cmlnZ2VyOiBjb250YWluZXIudmFsdWUsXG4gICAgc3RhcnQ6IFwidG9wIHRvcFwiLFxuICAgIGVuZDogKCkgPT4gYCs9JHt3aW5kb3cuaW5uZXJIZWlnaHQgKiAobGluZXMubGVuZ3RoKX1gLFxuICAgIHBpbjogdHJ1ZSxcbiAgICBzY3J1YjogdHJ1ZSxcbiAgICBzbmFwOiAxIC8gKGxpbmVzLmxlbmd0aCAtIDEpLFxuICAgIG9uVXBkYXRlOiAoc2VsZikgPT4ge1xuICAgICAgYWN0aXZlSW5kZXgudmFsdWUgPSBNYXRoLnJvdW5kKHNlbGYucHJvZ3Jlc3MgKiAobGluZXMubGVuZ3RoIC0gMSkpXG4gICAgfVxuICB9KVxufSlcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmxpbmUge1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG59XG48L3N0eWxlPlxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/